summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore118
-rw-r--r--.travis.yml41
-rw-r--r--AUTHORS63
-rw-r--r--CMake/Documentation.cmake315
-rw-r--r--CMake/FindBerkeleyDB.cmake59
-rw-r--r--CMake/FindIconv.cmake20
-rw-r--r--CMake/FindLFS.cmake148
-rw-r--r--CMake/FindLZ4.cmake25
-rw-r--r--CMake/FindLZMA.cmake25
-rw-r--r--CMake/Misc.cmake101
-rw-r--r--CMake/Translations.cmake182
-rw-r--r--CMake/apti18n.h.in30
-rw-r--r--CMake/config.h.in76
-rw-r--r--CMake/endian.h.in9
-rwxr-xr-xCMake/run_if_exists.sh16
-rw-r--r--CMake/statvfs.h.in13
-rw-r--r--CMake/vendor_substitute.cmake8
-rw-r--r--CMakeLists.txt238
-rw-r--r--COPYING22
-rw-r--r--COPYING.GPL339
-rw-r--r--README.SrvRecords22
-rw-r--r--README.md258
-rw-r--r--README.progress-reporting69
-rw-r--r--abicheck/apt_build.xml.in12
-rw-r--r--abicheck/apt_installed.xml.in11
-rwxr-xr-xabicheck/run_abi_test22
-rw-r--r--apt-inst/CMakeLists.txt28
-rw-r--r--apt-inst/contrib/arfile.cc161
-rw-r--r--apt-inst/contrib/arfile.h71
-rw-r--r--apt-inst/contrib/extracttar.cc311
-rw-r--r--apt-inst/contrib/extracttar.h62
-rw-r--r--apt-inst/deb/debfile.cc247
-rw-r--r--apt-inst/deb/debfile.h97
-rw-r--r--apt-inst/dirstream.cc119
-rw-r--r--apt-inst/dirstream.h58
-rw-r--r--apt-inst/dpkg-diffs.txt5
-rw-r--r--apt-inst/extract.cc516
-rw-r--r--apt-inst/extract.h51
-rw-r--r--apt-inst/filelist.cc587
-rw-r--r--apt-inst/filelist.h313
-rw-r--r--apt-pkg/CMakeLists.txt70
-rw-r--r--apt-pkg/acquire-item.cc3802
-rw-r--r--apt-pkg/acquire-item.h1229
-rw-r--r--apt-pkg/acquire-method.cc500
-rw-r--r--apt-pkg/acquire-method.h128
-rw-r--r--apt-pkg/acquire-worker.cc818
-rw-r--r--apt-pkg/acquire-worker.h335
-rw-r--r--apt-pkg/acquire.cc1433
-rw-r--r--apt-pkg/acquire.h841
-rw-r--r--apt-pkg/algorithms.cc1420
-rw-r--r--apt-pkg/algorithms.h164
-rw-r--r--apt-pkg/aptconfiguration.cc475
-rw-r--r--apt-pkg/aptconfiguration.h128
-rw-r--r--apt-pkg/cachefile.cc349
-rw-r--r--apt-pkg/cachefile.h95
-rw-r--r--apt-pkg/cachefilter.cc265
-rw-r--r--apt-pkg/cachefilter.h151
-rw-r--r--apt-pkg/cacheiterators.h527
-rw-r--r--apt-pkg/cacheset.cc935
-rw-r--r--apt-pkg/cacheset.h1230
-rw-r--r--apt-pkg/cdrom.cc1028
-rw-r--r--apt-pkg/cdrom.h134
-rw-r--r--apt-pkg/clean.cc142
-rw-r--r--apt-pkg/clean.h38
-rw-r--r--apt-pkg/contrib/cdromutl.cc299
-rw-r--r--apt-pkg/contrib/cdromutl.h26
-rw-r--r--apt-pkg/contrib/cmndline.cc446
-rw-r--r--apt-pkg/contrib/cmndline.h119
-rw-r--r--apt-pkg/contrib/configuration.cc1224
-rw-r--r--apt-pkg/contrib/configuration.h156
-rw-r--r--apt-pkg/contrib/crc-16.cc78
-rw-r--r--apt-pkg/contrib/crc-16.h20
-rw-r--r--apt-pkg/contrib/error.cc265
-rw-r--r--apt-pkg/contrib/error.h366
-rw-r--r--apt-pkg/contrib/fileutl.cc3087
-rw-r--r--apt-pkg/contrib/fileutl.h259
-rw-r--r--apt-pkg/contrib/gpgv.cc464
-rw-r--r--apt-pkg/contrib/gpgv.h92
-rw-r--r--apt-pkg/contrib/hashes.cc411
-rw-r--r--apt-pkg/contrib/hashes.h252
-rw-r--r--apt-pkg/contrib/hashsum.cc52
-rw-r--r--apt-pkg/contrib/hashsum_template.h143
-rw-r--r--apt-pkg/contrib/macros.h171
-rw-r--r--apt-pkg/contrib/md5.cc280
-rw-r--r--apt-pkg/contrib/md5.h59
-rw-r--r--apt-pkg/contrib/mmap.cc504
-rw-r--r--apt-pkg/contrib/mmap.h119
-rw-r--r--apt-pkg/contrib/netrc.cc218
-rw-r--r--apt-pkg/contrib/netrc.h31
-rw-r--r--apt-pkg/contrib/progress.cc214
-rw-r--r--apt-pkg/contrib/progress.h91
-rw-r--r--apt-pkg/contrib/proxy.cc78
-rw-r--r--apt-pkg/contrib/proxy.h16
-rw-r--r--apt-pkg/contrib/sha1.cc274
-rw-r--r--apt-pkg/contrib/sha1.h48
-rw-r--r--apt-pkg/contrib/sha2.h109
-rw-r--r--apt-pkg/contrib/sha256.h8
-rw-r--r--apt-pkg/contrib/sha2_internal.cc1090
-rw-r--r--apt-pkg/contrib/sha2_internal.h189
-rw-r--r--apt-pkg/contrib/sptr.h75
-rw-r--r--apt-pkg/contrib/srvrec.cc196
-rw-r--r--apt-pkg/contrib/srvrec.h54
-rw-r--r--apt-pkg/contrib/string_view.h132
-rw-r--r--apt-pkg/contrib/strutl.cc1795
-rw-r--r--apt-pkg/contrib/strutl.h247
-rw-r--r--apt-pkg/contrib/weakptr.h64
-rw-r--r--apt-pkg/deb/debindexfile.cc459
-rw-r--r--apt-pkg/deb/debindexfile.h198
-rw-r--r--apt-pkg/deb/deblistparser.cc1063
-rw-r--r--apt-pkg/deb/deblistparser.h162
-rw-r--r--apt-pkg/deb/debmetaindex.cc1209
-rw-r--r--apt-pkg/deb/debmetaindex.h73
-rw-r--r--apt-pkg/deb/debrecords.cc229
-rw-r--r--apt-pkg/deb/debrecords.h93
-rw-r--r--apt-pkg/deb/debsrcrecords.cc316
-rw-r--r--apt-pkg/deb/debsrcrecords.h69
-rw-r--r--apt-pkg/deb/debsystem.cc439
-rw-r--r--apt-pkg/deb/debsystem.h59
-rw-r--r--apt-pkg/deb/debversion.cc280
-rw-r--r--apt-pkg/deb/debversion.h41
-rw-r--r--apt-pkg/deb/dpkgpm.cc2438
-rw-r--r--apt-pkg/deb/dpkgpm.h145
-rw-r--r--apt-pkg/depcache.cc2032
-rw-r--r--apt-pkg/depcache.h525
-rw-r--r--apt-pkg/edsp.cc1506
-rw-r--r--apt-pkg/edsp.h276
-rw-r--r--apt-pkg/edsp/edspindexfile.cc128
-rw-r--r--apt-pkg/edsp/edspindexfile.h62
-rw-r--r--apt-pkg/edsp/edsplistparser.cc186
-rw-r--r--apt-pkg/edsp/edsplistparser.h67
-rw-r--r--apt-pkg/edsp/edspsystem.cc167
-rw-r--r--apt-pkg/edsp/edspsystem.h69
-rw-r--r--apt-pkg/indexcopy.cc784
-rw-r--r--apt-pkg/indexcopy.h129
-rw-r--r--apt-pkg/indexfile.cc415
-rw-r--r--apt-pkg/indexfile.h227
-rw-r--r--apt-pkg/init.cc291
-rw-r--r--apt-pkg/init.h32
-rw-r--r--apt-pkg/install-progress.cc425
-rw-r--r--apt-pkg/install-progress.h176
-rw-r--r--apt-pkg/metaindex.cc130
-rw-r--r--apt-pkg/metaindex.h116
-rw-r--r--apt-pkg/orderlist.cc1140
-rw-r--r--apt-pkg/orderlist.h128
-rw-r--r--apt-pkg/packagemanager.cc1188
-rw-r--r--apt-pkg/packagemanager.h153
-rw-r--r--apt-pkg/pkgcache.cc1075
-rw-r--r--apt-pkg/pkgcache.h825
-rw-r--r--apt-pkg/pkgcachegen.cc1859
-rw-r--r--apt-pkg/pkgcachegen.h253
-rw-r--r--apt-pkg/pkgrecords.cc81
-rw-r--r--apt-pkg/pkgrecords.h116
-rw-r--r--apt-pkg/pkgsystem.cc89
-rw-r--r--apt-pkg/pkgsystem.h130
-rw-r--r--apt-pkg/policy.cc418
-rw-r--r--apt-pkg/policy.h97
-rw-r--r--apt-pkg/prettyprinters.cc123
-rw-r--r--apt-pkg/prettyprinters.h37
-rw-r--r--apt-pkg/sourcelist.cc650
-rw-r--r--apt-pkg/sourcelist.h145
-rw-r--r--apt-pkg/srcrecords.cc183
-rw-r--r--apt-pkg/srcrecords.h120
-rw-r--r--apt-pkg/statechanges.cc227
-rw-r--r--apt-pkg/statechanges.h58
-rw-r--r--apt-pkg/tagfile-compat.cc76
-rw-r--r--apt-pkg/tagfile-keys.list82
-rw-r--r--apt-pkg/tagfile-order.c111
-rw-r--r--apt-pkg/tagfile.cc1207
-rw-r--r--apt-pkg/tagfile.h241
-rw-r--r--apt-pkg/update.cc133
-rw-r--r--apt-pkg/update.h22
-rw-r--r--apt-pkg/upgrade.cc302
-rw-r--r--apt-pkg/upgrade.h35
-rw-r--r--apt-pkg/version.cc45
-rw-r--r--apt-pkg/version.h61
-rw-r--r--apt-pkg/versionmatch.cc292
-rw-r--r--apt-pkg/versionmatch.h82
-rw-r--r--apt-private/CMakeLists.txt25
-rw-r--r--apt-private/acqprogress.cc346
-rw-r--r--apt-private/acqprogress.h44
-rw-r--r--apt-private/private-cachefile.cc118
-rw-r--r--apt-private/private-cachefile.h72
-rw-r--r--apt-private/private-cacheset.cc367
-rw-r--r--apt-private/private-cacheset.h121
-rw-r--r--apt-private/private-cmndline.cc568
-rw-r--r--apt-private/private-cmndline.h41
-rw-r--r--apt-private/private-depends.cc152
-rw-r--r--apt-private/private-depends.h11
-rw-r--r--apt-private/private-download.cc378
-rw-r--r--apt-private/private-download.h38
-rw-r--r--apt-private/private-install.cc990
-rw-r--r--apt-private/private-install.h62
-rw-r--r--apt-private/private-list.cc156
-rw-r--r--apt-private/private-list.h11
-rw-r--r--apt-private/private-main.cc91
-rw-r--r--apt-private/private-main.h16
-rw-r--r--apt-private/private-moo.cc200
-rw-r--r--apt-private/private-moo.h10
-rw-r--r--apt-private/private-output.cc782
-rw-r--r--apt-private/private-output.h115
-rw-r--r--apt-private/private-search.cc333
-rw-r--r--apt-private/private-search.h12
-rw-r--r--apt-private/private-show.cc470
-rw-r--r--apt-private/private-show.h17
-rw-r--r--apt-private/private-source.cc808
-rw-r--r--apt-private/private-source.h11
-rw-r--r--apt-private/private-sources.cc105
-rw-r--r--apt-private/private-sources.h10
-rw-r--r--apt-private/private-unmet.cc120
-rw-r--r--apt-private/private-unmet.h10
-rw-r--r--apt-private/private-update.cc106
-rw-r--r--apt-private/private-update.h10
-rw-r--r--apt-private/private-upgrade.cc67
-rw-r--r--apt-private/private-upgrade.h13
-rw-r--r--apt-private/private-utils.cc98
-rw-r--r--apt-private/private-utils.h10
-rw-r--r--cmdline/CMakeLists.txt59
-rw-r--r--cmdline/apt-cache.cc1156
-rw-r--r--cmdline/apt-cdrom.cc236
-rw-r--r--cmdline/apt-config.cc145
-rw-r--r--cmdline/apt-dump-solver.cc185
-rw-r--r--cmdline/apt-extracttemplates.cc349
-rw-r--r--cmdline/apt-extracttemplates.h50
-rw-r--r--cmdline/apt-get.cc446
-rw-r--r--cmdline/apt-helper.cc211
-rw-r--r--cmdline/apt-internal-planner.cc196
-rw-r--r--cmdline/apt-internal-solver.cc214
-rw-r--r--cmdline/apt-key.in784
-rw-r--r--cmdline/apt-mark.cc326
-rwxr-xr-xcmdline/apt-report-mirror-failure29
-rw-r--r--cmdline/apt-sortpkgs.cc166
-rw-r--r--cmdline/apt.cc118
-rw-r--r--completions/CMakeLists.txt4
-rw-r--r--completions/bash/apt225
-rw-r--r--debian/NEWS124
-rw-r--r--debian/apt-daily-upgrade.service9
-rw-r--r--debian/apt-daily-upgrade.timer11
-rw-r--r--debian/apt-daily.service9
-rw-r--r--debian/apt-daily.timer12
-rw-r--r--debian/apt-doc.doc-base.guide13
-rw-r--r--debian/apt-doc.doc-base.offline13
-rw-r--r--debian/apt-doc.docs4
-rw-r--r--debian/apt-doc.install1
-rw-r--r--debian/apt-transport-https.README2
-rw-r--r--debian/apt-transport-https.docs1
-rw-r--r--debian/apt-transport-https.install1
-rw-r--r--debian/apt-utils.install13
-rw-r--r--debian/apt.apt-compat.cron.daily55
-rw-r--r--debian/apt.auto-removal.sh83
-rwxr-xr-xdebian/apt.bug-script33
-rw-r--r--debian/apt.conf.autoremove48
-rw-r--r--debian/apt.dirs2
-rw-r--r--debian/apt.install41
-rw-r--r--debian/apt.lintian-overrides5
-rw-r--r--debian/apt.logrotate16
-rw-r--r--debian/apt.maintscript3
-rwxr-xr-xdebian/apt.postinst86
-rwxr-xr-xdebian/apt.postrm22
-rwxr-xr-xdebian/apt.systemd.daily514
-rw-r--r--debian/changelog10339
-rw-r--r--debian/compat1
-rw-r--r--debian/control159
-rw-r--r--debian/gbp.conf10
-rw-r--r--debian/libapt-inst2.0.install2
-rw-r--r--debian/libapt-inst2.0.symbols67
-rw-r--r--debian/libapt-pkg-dev.install3
-rw-r--r--debian/libapt-pkg-doc.doc-base.design14
-rw-r--r--debian/libapt-pkg-doc.doc-base.dpkg-tech13
-rw-r--r--debian/libapt-pkg-doc.doc-base.files14
-rw-r--r--debian/libapt-pkg-doc.doc-base.method14
-rw-r--r--debian/libapt-pkg-doc.docs2
-rw-r--r--debian/libapt-pkg-doc.install1
-rw-r--r--debian/libapt-pkg-doc.lintian-overrides3
-rw-r--r--debian/libapt-pkg5.0.install2
-rw-r--r--debian/libapt-pkg5.0.symbols1500
-rwxr-xr-xdebian/rules49
-rw-r--r--debian/source/format1
-rw-r--r--debian/source/options2
-rw-r--r--debian/tests/control8
-rw-r--r--debian/tests/run-tests25
-rw-r--r--doc/CMakeLists.txt88
-rw-r--r--doc/Doxyfile.in2313
-rw-r--r--doc/acquire-additional-files.txt319
-rw-r--r--doc/apt-cache.8.xml392
-rw-r--r--doc/apt-cdrom.8.xml161
-rw-r--r--doc/apt-config.8.xml118
-rw-r--r--doc/apt-extracttemplates.1.xml76
-rw-r--r--doc/apt-ftparchive.1.xml627
-rw-r--r--doc/apt-get.8.xml618
-rw-r--r--doc/apt-key.8.xml216
-rw-r--r--doc/apt-mark.8.xml155
-rw-r--r--doc/apt-secure.8.xml264
-rw-r--r--doc/apt-sortpkgs.1.xml69
-rw-r--r--doc/apt-verbatim.ent461
-rw-r--r--doc/apt.8.xml177
-rw-r--r--doc/apt.conf.5.xml1322
-rw-r--r--doc/apt.ent243
-rw-r--r--doc/apt_preferences.5.xml723
-rw-r--r--doc/design.dbk439
-rw-r--r--doc/docbook-html-style.xsl.cmake.in40
-rw-r--r--doc/docbook-text-style.xsl.cmake.in70
-rw-r--r--doc/dpkg-tech.dbk870
-rw-r--r--doc/examples/CMakeLists.txt4
-rw-r--r--doc/examples/apt-ftparchive.conf46
-rw-r--r--doc/examples/apt-https-method-example.conf186
-rw-r--r--doc/examples/apt.conf32
-rw-r--r--doc/examples/configure-index758
-rw-r--r--doc/examples/ftp-archive.conf81
-rw-r--r--doc/examples/preferences11
-rw-r--r--doc/external-dependency-solver-protocol.txt377
-rw-r--r--doc/external-installation-planner-protocol.txt301
-rw-r--r--doc/files.dbk393
-rw-r--r--doc/guide.dbk561
-rw-r--r--doc/libapt-pkg2_to_3.txt90
-rw-r--r--doc/manpage-style.xsl.cmake.in18
-rw-r--r--doc/method.dbk713
-rw-r--r--doc/offline.dbk248
-rw-r--r--doc/po/apt-doc.pot7894
-rw-r--r--doc/po/de.po11336
-rw-r--r--doc/po/es.po11689
-rw-r--r--doc/po/fr.po12259
-rw-r--r--doc/po/header.pot.txt3
-rw-r--r--doc/po/it.po13376
-rw-r--r--doc/po/ja.po10826
-rw-r--r--doc/po/nl.po12036
-rw-r--r--doc/po/pl.po10774
-rw-r--r--doc/po/pt.po11568
-rw-r--r--doc/po/pt_BR.po8392
-rw-r--r--doc/po4a.conf44
-rw-r--r--doc/sources.list.5.xml519
-rw-r--r--doc/style.txt75
-rw-r--r--doc/xml.add5
-rw-r--r--dselect/CMakeLists.txt4
-rw-r--r--dselect/desc.apt9
-rwxr-xr-xdselect/install111
-rw-r--r--dselect/names1
-rwxr-xr-xdselect/setup286
-rwxr-xr-xdselect/update48
-rw-r--r--ftparchive/CMakeLists.txt13
-rw-r--r--ftparchive/apt-ftparchive.cc1057
-rw-r--r--ftparchive/apt-ftparchive.h28
-rw-r--r--ftparchive/byhash.cc61
-rw-r--r--ftparchive/byhash.h25
-rw-r--r--ftparchive/cachedb.cc583
-rw-r--r--ftparchive/cachedb.h196
-rw-r--r--ftparchive/contents.cc410
-rw-r--r--ftparchive/contents.h93
-rw-r--r--ftparchive/multicompress.cc377
-rw-r--r--ftparchive/multicompress.h63
-rw-r--r--ftparchive/override.cc289
-rw-r--r--ftparchive/override.h51
-rw-r--r--ftparchive/sources.cc60
-rw-r--r--ftparchive/sources.h24
-rw-r--r--ftparchive/writer.cc1188
-rw-r--r--ftparchive/writer.h206
-rw-r--r--methods/CMakeLists.txt35
-rw-r--r--methods/aptmethod.h151
-rw-r--r--methods/basehttp.cc829
-rw-r--r--methods/basehttp.h173
-rw-r--r--methods/cdrom.cc285
-rw-r--r--methods/connect.cc342
-rw-r--r--methods/connect.h21
-rw-r--r--methods/copy.cc93
-rw-r--r--methods/file.cc132
-rw-r--r--methods/ftp.cc1154
-rw-r--r--methods/ftp.h91
-rw-r--r--methods/gpgv.cc452
-rw-r--r--methods/http.cc1014
-rw-r--r--methods/http.h142
-rw-r--r--methods/http_main.cc17
-rw-r--r--methods/https.cc548
-rw-r--r--methods/https.h88
-rw-r--r--methods/mirror.cc470
-rw-r--r--methods/mirror.h57
-rw-r--r--methods/rfc2553emu.cc245
-rw-r--r--methods/rfc2553emu.h113
-rw-r--r--methods/rred.cc785
-rw-r--r--methods/rsh.cc548
-rw-r--r--methods/rsh.h76
-rw-r--r--methods/store.cc146
-rw-r--r--mirror-failure.py23
-rw-r--r--po/CMakeLists.txt52
-rw-r--r--po/apt-all.pot3552
-rw-r--r--po/ar.po3761
-rw-r--r--po/ast.po4238
-rw-r--r--po/bg.po4347
-rw-r--r--po/bs.po3643
-rw-r--r--po/ca.po3914
-rw-r--r--po/cs.po4359
-rw-r--r--po/cy.po4273
-rw-r--r--po/da.po3838
-rw-r--r--po/de.po4415
-rw-r--r--po/dz.po4207
-rw-r--r--po/el.po4238
-rw-r--r--po/es.po4932
-rw-r--r--po/eu.po4168
-rw-r--r--po/fi.po4194
-rw-r--r--po/fr.po4456
-rw-r--r--po/gl.po4255
-rw-r--r--po/he.po2836
-rw-r--r--po/hu.po4347
-rw-r--r--po/it.po4223
-rw-r--r--po/ja.po3850
-rw-r--r--po/km.po4205
-rw-r--r--po/ko.po4153
-rw-r--r--po/ku.po3708
-rw-r--r--po/lt.po3907
-rw-r--r--po/mr.po4162
-rw-r--r--po/nb.po4293
-rw-r--r--po/ne.po4171
-rw-r--r--po/nl.po4412
-rw-r--r--po/nn.po4195
-rw-r--r--po/pl.po4375
-rw-r--r--po/pt.po4481
-rw-r--r--po/pt_BR.po4307
-rw-r--r--po/ro.po4250
-rw-r--r--po/ru.po4428
-rw-r--r--po/sk.po4260
-rw-r--r--po/sl.po4266
-rw-r--r--po/sv.po4394
-rw-r--r--po/th.po4202
-rw-r--r--po/tl.po4245
-rw-r--r--po/tr.po4237
-rw-r--r--po/uk.po4379
-rw-r--r--po/vi.po4371
-rw-r--r--po/zh_CN.po4251
-rw-r--r--po/zh_TW.po4101
-rwxr-xr-xprepare-release315
-rw-r--r--shippable.yml15
-rw-r--r--test/CMakeLists.txt2
-rw-r--r--test/integration/Packages-bug-590438-broken-provides-thanks-to-remove-order67
-rw-r--r--test/integration/Packages-bug-591882-conkeror1787
-rw-r--r--test/integration/Packages-bug-593360-modifiers-in-names42
-rw-r--r--test/integration/Packages-bug-598669-install-postfix-gets-exim-heavy30
-rw-r--r--test/integration/Packages-bug-605394-versioned-or-groups71
-rw-r--r--test/integration/Packages-bug-723705-tagfile-truncates-fields167
-rw-r--r--test/integration/Packages-bug-lp1347721-dpkg-ordering445
-rw-r--r--test/integration/Packages-github-23-too-long-dependency-line17
-rw-r--r--test/integration/Packages-hashsum-verification18
-rw-r--r--test/integration/Packages-pdiff-usage36
-rw-r--r--test/integration/Packages-pdiff-usage-new39
-rw-r--r--test/integration/Packages-policy-pinning12
-rw-r--r--test/integration/Packages-releasefile-verification20
-rw-r--r--test/integration/Packages-releasefile-verification-new23
-rw-r--r--test/integration/Packages-ubuntu-bug-6149931819
-rw-r--r--test/integration/Packages-xorg-break-providers52
-rw-r--r--test/integration/apt.pem49
-rw-r--r--test/integration/cachedb-lp1274466-old-format.dbbin0 -> 8192 bytes
-rwxr-xr-xtest/integration/create-test-data47
-rw-r--r--test/integration/deb-bug-330162-encoded-tar-header.debbin0 -> 544 bytes
-rw-r--r--test/integration/deb-lp1274466-cachedb.debbin0 -> 1270 bytes
-rw-r--r--test/integration/framework2104
-rwxr-xr-xtest/integration/header-compilation26
-rw-r--r--test/integration/joesixpack.pubbin0 -> 639 bytes
-rw-r--r--test/integration/joesixpack.secbin0 -> 1290 bytes
-rw-r--r--test/integration/keyrings/test-archive-keyring.pubbin0 -> 979 bytes
-rw-r--r--test/integration/keyrings/test-archive-keyring.secbin0 -> 1642 bytes
-rw-r--r--test/integration/keyrings/test-master-keyring.pubbin0 -> 1199 bytes
-rw-r--r--test/integration/keyrings/test-master-keyring.secbin0 -> 2501 bytes
-rw-r--r--test/integration/marvinparanoid.pubbin0 -> 624 bytes
-rw-r--r--test/integration/marvinparanoid.secbin0 -> 1275 bytes
-rw-r--r--test/integration/rexexpired.pubbin0 -> 1191 bytes
-rw-r--r--test/integration/rexexpired.secbin0 -> 2493 bytes
-rwxr-xr-xtest/integration/run-tests164
-rwxr-xr-xtest/integration/skip-acquire-same-repository-multiple-times85
-rwxr-xr-xtest/integration/skip-apt-dropprivs32
-rwxr-xr-xtest/integration/skip-avoid-avoiding-breaks-predepends21
-rwxr-xr-xtest/integration/skip-bug-601016-description-translation133
-rwxr-xr-xtest/integration/skip-bug-711456-apt-cdrom-multiple-cds-multiarch47
-rwxr-xr-xtest/integration/skip-method-http-socks-client161
-rw-r--r--test/integration/status-bug-590438-broken-provides-thanks-to-remove-order97
-rw-r--r--test/integration/status-bug-591882-conkeror1357
-rw-r--r--test/integration/status-bug-598669-install-postfix-gets-exim-heavy30
-rw-r--r--test/integration/status-bug-601961-install-info42
-rw-r--r--test/integration/status-bug-605394-versioned-or-groups34
-rw-r--r--test/integration/status-bug-612557-garbage-upgrade34
-rw-r--r--test/integration/status-bug-613420-new-garbage-dependency22
-rw-r--r--test/integration/status-bug-723705-tagfile-truncates-fields62
-rw-r--r--test/integration/status-bug-lp1347721-dpkg-ordering1942
-rw-r--r--test/integration/status-github-23-too-long-dependency-line12
-rw-r--r--test/integration/status-ubuntu-bug-6149935894
-rw-r--r--test/integration/status-xorg-break-providers22
-rwxr-xr-xtest/integration/test-00-commands-have-help88
-rwxr-xr-xtest/integration/test-acquire-binary-all142
-rwxr-xr-xtest/integration/test-acquire-same-file-multiple-times90
-rwxr-xr-xtest/integration/test-allow98
-rwxr-xr-xtest/integration/test-allow-scores-for-all-dependency-types179
-rwxr-xr-xtest/integration/test-apt-acquire-additional-files229
-rwxr-xr-xtest/integration/test-apt-acquire-additional-files-duplicates105
-rwxr-xr-xtest/integration/test-apt-by-hash-update79
-rwxr-xr-xtest/integration/test-apt-cache183
-rwxr-xr-xtest/integration/test-apt-cache-showsrc31
-rwxr-xr-xtest/integration/test-apt-cdrom158
-rwxr-xr-xtest/integration/test-apt-cli-list74
-rwxr-xr-xtest/integration/test-apt-cli-search79
-rwxr-xr-xtest/integration/test-apt-cli-show66
-rwxr-xr-xtest/integration/test-apt-cli-update23
-rwxr-xr-xtest/integration/test-apt-cli-upgrade32
-rwxr-xr-xtest/integration/test-apt-config36
-rwxr-xr-xtest/integration/test-apt-download-progress48
-rwxr-xr-xtest/integration/test-apt-edit-sources39
-rwxr-xr-xtest/integration/test-apt-extracttemplates70
-rwxr-xr-xtest/integration/test-apt-ftparchive-by-hash70
-rwxr-xr-xtest/integration/test-apt-ftparchive-cachedb103
-rwxr-xr-xtest/integration/test-apt-ftparchive-cachedb-lp127446659
-rwxr-xr-xtest/integration/test-apt-ftparchive-notautomatic54
-rwxr-xr-xtest/integration/test-apt-ftparchive-src-cachedb191
-rwxr-xr-xtest/integration/test-apt-get-autoremove198
-rwxr-xr-xtest/integration/test-apt-get-build-dep149
-rwxr-xr-xtest/integration/test-apt-get-build-dep-file208
-rwxr-xr-xtest/integration/test-apt-get-changelog134
-rwxr-xr-xtest/integration/test-apt-get-clean88
-rwxr-xr-xtest/integration/test-apt-get-download113
-rwxr-xr-xtest/integration/test-apt-get-install-deb200
-rwxr-xr-xtest/integration/test-apt-get-install-virtual-pkgs64
-rwxr-xr-xtest/integration/test-apt-get-source-arch68
-rwxr-xr-xtest/integration/test-apt-get-source-authenticated33
-rwxr-xr-xtest/integration/test-apt-get-source-multisources29
-rwxr-xr-xtest/integration/test-apt-get-update-unauth-warning92
-rwxr-xr-xtest/integration/test-apt-get-upgrade144
-rwxr-xr-xtest/integration/test-apt-helper118
-rwxr-xr-xtest/integration/test-apt-helper-cat-file46
-rwxr-xr-xtest/integration/test-apt-https-no-redirect45
-rwxr-xr-xtest/integration/test-apt-keep-downloaded-pkgs54
-rwxr-xr-xtest/integration/test-apt-key378
-rwxr-xr-xtest/integration/test-apt-key-net-update41
-rwxr-xr-xtest/integration/test-apt-key-used-in-maintainerscript43
-rwxr-xr-xtest/integration/test-apt-mark154
-rwxr-xr-xtest/integration/test-apt-move-and-forget-manual-sections31
-rwxr-xr-xtest/integration/test-apt-never-markauto-sections86
-rwxr-xr-xtest/integration/test-apt-progress-fd85
-rwxr-xr-xtest/integration/test-apt-progress-fd-conffile42
-rwxr-xr-xtest/integration/test-apt-progress-fd-deb82263
-rwxr-xr-xtest/integration/test-apt-progress-fd-error25
-rwxr-xr-xtest/integration/test-apt-redirect-loop20
-rwxr-xr-xtest/integration/test-apt-showlist-orgroup-in-recommends200
-rwxr-xr-xtest/integration/test-apt-source-and-build-dep191
-rwxr-xr-xtest/integration/test-apt-sources-deb822201
-rwxr-xr-xtest/integration/test-apt-tagfile-fields-order82
-rwxr-xr-xtest/integration/test-apt-translation-has-no-packages35
-rwxr-xr-xtest/integration/test-apt-update-empty-files47
-rwxr-xr-xtest/integration/test-apt-update-expected-size83
-rwxr-xr-xtest/integration/test-apt-update-failure-propagation106
-rwxr-xr-xtest/integration/test-apt-update-file79
-rwxr-xr-xtest/integration/test-apt-update-filesize-mismatch50
-rwxr-xr-xtest/integration/test-apt-update-hashsum-mismatch44
-rwxr-xr-xtest/integration/test-apt-update-hooks49
-rwxr-xr-xtest/integration/test-apt-update-ims192
-rwxr-xr-xtest/integration/test-apt-update-nofallback272
-rwxr-xr-xtest/integration/test-apt-update-not-modified195
-rwxr-xr-xtest/integration/test-apt-update-reporting35
-rwxr-xr-xtest/integration/test-apt-update-rollback219
-rwxr-xr-xtest/integration/test-apt-update-simple33
-rwxr-xr-xtest/integration/test-apt-update-stale44
-rwxr-xr-xtest/integration/test-apt-update-transactions91
-rwxr-xr-xtest/integration/test-apt-update-unauth80
-rwxr-xr-xtest/integration/test-apt-update-weak-hashes202
-rwxr-xr-xtest/integration/test-architecture-specification-parsing120
-rwxr-xr-xtest/integration/test-authentication-basic109
-rwxr-xr-xtest/integration/test-bug-254770-segfault-if-cache-not-buildable64
-rwxr-xr-xtest/integration/test-bug-330162-encoded-tar-header11
-rwxr-xr-xtest/integration/test-bug-407511-fail-invalid-default-release66
-rwxr-xr-xtest/integration/test-bug-470115-new-and-tighten-recommends174
-rwxr-xr-xtest/integration/test-bug-507998-dist-upgrade-recommends26
-rwxr-xr-xtest/integration/test-bug-543966-downgrade-below-1000-pin90
-rwxr-xr-xtest/integration/test-bug-549968-install-depends-of-not-installed28
-rwxr-xr-xtest/integration/test-bug-590041-prefer-non-virtual-packages54
-rwxr-xr-xtest/integration/test-bug-590438-broken-provides-thanks-to-remove-order96
-rwxr-xr-xtest/integration/test-bug-591882-conkeror77
-rwxr-xr-xtest/integration/test-bug-593360-modifiers-in-names69
-rwxr-xr-xtest/integration/test-bug-595691-empty-and-broken-archive-files64
-rwxr-xr-xtest/integration/test-bug-596498-trusted-unsigned-repo75
-rwxr-xr-xtest/integration/test-bug-598669-install-postfix-gets-exim-heavy19
-rwxr-xr-xtest/integration/test-bug-601961-install-info38
-rwxr-xr-xtest/integration/test-bug-602412-dequote-redirect64
-rwxr-xr-xtest/integration/test-bug-604222-new-and-autoremove121
-rwxr-xr-xtest/integration/test-bug-604401-files-are-directories67
-rwxr-xr-xtest/integration/test-bug-605394-versioned-or-groups30
-rwxr-xr-xtest/integration/test-bug-611729-mark-as-manual96
-rwxr-xr-xtest/integration/test-bug-612099-multiarch-conflicts225
-rwxr-xr-xtest/integration/test-bug-612557-garbage-upgrade60
-rwxr-xr-xtest/integration/test-bug-612958-use-dpkg-multiarch-config83
-rwxr-xr-xtest/integration/test-bug-613420-new-garbage-dependency56
-rwxr-xr-xtest/integration/test-bug-617690-allow-unauthenticated-makes-all-untrusted68
-rwxr-xr-xtest/integration/test-bug-618288-multiarch-same-lockstep41
-rwxr-xr-xtest/integration/test-bug-618848-always-respect-user-requests32
-rwxr-xr-xtest/integration/test-bug-623443-fail-on-bad-proxies34
-rwxr-xr-xtest/integration/test-bug-624218-Translation-file-handling105
-rwxr-xr-xtest/integration/test-bug-632221-cross-dependency-satisfaction348
-rwxr-xr-xtest/integration/test-bug-633350-do-not-kill-last-char-in-Release16
-rwxr-xr-xtest/integration/test-bug-64141-install-dependencies-for-on-hold46
-rwxr-xr-xtest/integration/test-bug-657695-resolver-breaks-on-virtuals52
-rwxr-xr-xtest/integration/test-bug-661537-build-profiles-support161
-rwxr-xr-xtest/integration/test-bug-673536-pre-depends-breaks-loop36
-rwxr-xr-xtest/integration/test-bug-675449-essential-are-protected103
-rwxr-xr-xtest/integration/test-bug-679371-apt-get-autoclean-multiarch27
-rwxr-xr-xtest/integration/test-bug-680041-apt-mark-holds-correctly76
-rwxr-xr-xtest/integration/test-bug-683786-build-dep-on-virtual-packages107
-rwxr-xr-xtest/integration/test-bug-686346-package-missing-architecture113
-rwxr-xr-xtest/integration/test-bug-689582-100-char-long-path-names35
-rwxr-xr-xtest/integration/test-bug-691453-apt-cache-search-multi-pattern33
-rwxr-xr-xtest/integration/test-bug-709560-set-candidate-release36
-rwxr-xr-xtest/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch152
-rwxr-xr-xtest/integration/test-bug-712435-missing-descriptions162
-rwxr-xr-xtest/integration/test-bug-717891-abolute-uris-for-proxies28
-rwxr-xr-xtest/integration/test-bug-718329-support-data.tar-uncompressed31
-rwxr-xr-xtest/integration/test-bug-719263-print-uris-removes-authentication42
-rwxr-xr-xtest/integration/test-bug-720597-build-dep-purge65
-rwxr-xr-xtest/integration/test-bug-722207-print-uris-even-if-very-quiet31
-rwxr-xr-xtest/integration/test-bug-723586-any-stripped-in-single-arch54
-rwxr-xr-xtest/integration/test-bug-723705-tagfile-truncates-fields33
-rwxr-xr-xtest/integration/test-bug-728500-tempdir23
-rwxr-xr-xtest/integration/test-bug-732746-preferences32
-rwxr-xr-xtest/integration/test-bug-733028-gpg-resource-limit25
-rwxr-xr-xtest/integration/test-bug-734922-apt-showsrc-duplicate25
-rwxr-xr-xtest/integration/test-bug-735967-lib32-to-i386-unavailable91
-rwxr-xr-xtest/integration/test-bug-737130-multicompress-file-modes30
-rwxr-xr-xtest/integration/test-bug-738785-switch-protocol50
-rwxr-xr-xtest/integration/test-bug-740843-versioned-up-down-breaks57
-rwxr-xr-xtest/integration/test-bug-745036-new-foreign-invalidates-cache27
-rwxr-xr-xtest/integration/test-bug-745046-candidate-propagation-fails39
-rwxr-xr-xtest/integration/test-bug-747261-arch-specific-conflicts46
-rwxr-xr-xtest/integration/test-bug-753297-upgradable35
-rwxr-xr-xtest/integration/test-bug-758153-versioned-provides-support387
-rwxr-xr-xtest/integration/test-bug-762160-relpath17
-rwxr-xr-xtest/integration/test-bug-767891-force-essential-important100
-rwxr-xr-xtest/integration/test-bug-769609-triggers-still-pending-after-run75
-rwxr-xr-xtest/integration/test-bug-770291-reinstall98
-rwxr-xr-xtest/integration/test-bug-778375-server-has-no-reason-phrase41
-rwxr-xr-xtest/integration/test-bug-782777-single-arch-weirdness72
-rwxr-xr-xtest/integration/test-bug-796070-downgrade-realpkg23
-rwxr-xr-xtest/integration/test-bug-796070-downgrade-simulate67
-rwxr-xr-xtest/integration/test-bug-807012-mixed-case-package-names21
-rwxr-xr-xtest/integration/test-bug-814139-pickup-of-different-cache-states60
-rwxr-xr-xtest/integration/test-bug-818628-unreadable-source86
-rwxr-xr-xtest/integration/test-bug-82965127
-rwxr-xr-xtest/integration/test-bug-835094-configure-before-purge44
-rwxr-xr-xtest/integration/test-bug-838779-untrusted-to-trusted-Release-hit46
-rwxr-xr-xtest/integration/test-bug-841874-warning-for-mismatching-distribution61
-rwxr-xr-xtest/integration/test-bug-lp1347721-dpkg-ordering11
-rwxr-xr-xtest/integration/test-bug-lp1445239-download-loop28
-rwxr-xr-xtest/integration/test-bug-lp1550741-heisestate48
-rwxr-xr-xtest/integration/test-bug-lp1562402-nomark-removals-as-keep39
-rwxr-xr-xtest/integration/test-bug-lp1694697-build-dep-architecture-limited-alternative58
-rwxr-xr-xtest/integration/test-bug-multiarch-upgrade29
-rwxr-xr-xtest/integration/test-cachecontainer-architecture-specification123
-rwxr-xr-xtest/integration/test-compressed-indexes180
-rwxr-xr-xtest/integration/test-conflicts-loop33
-rwxr-xr-xtest/integration/test-conflicts-real-multiarch-same50
-rwxr-xr-xtest/integration/test-crossgrades82
-rwxr-xr-xtest/integration/test-cve-2013-1051-InRelease-parsing68
-rwxr-xr-xtest/integration/test-different-methods-for-same-source35
-rwxr-xr-xtest/integration/test-disappearing-packages92
-rwxr-xr-xtest/integration/test-dpkg-assert-multi-arch104
-rwxr-xr-xtest/integration/test-essential-force-loopbreak54
-rwxr-xr-xtest/integration/test-external-dependency-solver-protocol294
-rwxr-xr-xtest/integration/test-external-installation-planner-protocol93
-rwxr-xr-xtest/integration/test-failing-maintainer-scripts91
-rwxr-xr-xtest/integration/test-github-23-too-long-dependency-line17
-rwxr-xr-xtest/integration/test-handle-redirect-as-used-mirror-change93
-rwxr-xr-xtest/integration/test-handling-broken-orgroups108
-rwxr-xr-xtest/integration/test-hashsum-verification82
-rwxr-xr-xtest/integration/test-http-pipeline-messup56
-rwxr-xr-xtest/integration/test-ignore-provides-if-versioned-breaks150
-rwxr-xr-xtest/integration/test-ignore-provides-if-versioned-conflicts150
-rwxr-xr-xtest/integration/test-implicit-conflicts-real-not-virtual56
-rwxr-xr-xtest/integration/test-kernel-helper-autoremove172
-rwxr-xr-xtest/integration/test-method-connect13
-rwxr-xr-xtest/integration/test-method-gpgv77
-rwxr-xr-xtest/integration/test-method-rred197
-rwxr-xr-xtest/integration/test-multiarch-allowed302
-rwxr-xr-xtest/integration/test-multiarch-foreign287
-rwxr-xr-xtest/integration/test-no-fds-leaked-to-maintainer-scripts148
-rwxr-xr-xtest/integration/test-package-reinstallation23
-rwxr-xr-xtest/integration/test-parse-all-archs-into-cache93
-rwxr-xr-xtest/integration/test-partial-file-support157
-rwxr-xr-xtest/integration/test-pdiff-usage380
-rwxr-xr-xtest/integration/test-pin-non-existent-package75
-rwxr-xr-xtest/integration/test-policy-pinning361
-rwxr-xr-xtest/integration/test-prefer-higher-priority-providers106
-rwxr-xr-xtest/integration/test-prefer-native-architecture-over-higher-priority25
-rwxr-xr-xtest/integration/test-prevent-markinstall-multiarch-same-versionscrew130
-rwxr-xr-xtest/integration/test-provides-gone-with-upgrade27
-rwxr-xr-xtest/integration/test-release-candidate-switching419
-rwxr-xr-xtest/integration/test-releasefile-date-older104
-rwxr-xr-xtest/integration/test-releasefile-valid-until57
-rwxr-xr-xtest/integration/test-releasefile-verification450
-rwxr-xr-xtest/integration/test-releasefile-verification-noflat25
-rwxr-xr-xtest/integration/test-resolve-by-keep-new-recommends21
-rwxr-xr-xtest/integration/test-security-no-remote-status30
-rwxr-xr-xtest/integration/test-signed-by-option13
-rwxr-xr-xtest/integration/test-sourceslist-arch-plusminus-options94
-rwxr-xr-xtest/integration/test-sourceslist-lang-plusminus-options88
-rwxr-xr-xtest/integration/test-sourceslist-target-plusminus-options124
-rwxr-xr-xtest/integration/test-sourceslist-trusted-options218
-rwxr-xr-xtest/integration/test-specific-architecture-dependencies324
-rwxr-xr-xtest/integration/test-srcrecord35
-rwxr-xr-xtest/integration/test-suggest-installed-multiarch-silbing79
-rwxr-xr-xtest/integration/test-ubuntu-bug-1078697-missing-source-hashes38
-rwxr-xr-xtest/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum452
-rwxr-xr-xtest/integration/test-ubuntu-bug-1130419-prefer-installed-ma-same-siblings104
-rwxr-xr-xtest/integration/test-ubuntu-bug-1304403-obsolete-priority-standard50
-rwxr-xr-xtest/integration/test-ubuntu-bug-1549819-empty-arch-list13
-rwxr-xr-xtest/integration/test-ubuntu-bug-1651923-requote-https-uri19
-rwxr-xr-xtest/integration/test-ubuntu-bug-346386-apt-get-update-paywall72
-rwxr-xr-xtest/integration/test-ubuntu-bug-365611-long-package-names15
-rwxr-xr-xtest/integration/test-ubuntu-bug-61499359
-rwxr-xr-xtest/integration/test-ubuntu-bug-761175-remove-purge88
-rwxr-xr-xtest/integration/test-ubuntu-bug-784473-InRelease-one-message-only36
-rwxr-xr-xtest/integration/test-ubuntu-bug-802901-multiarch-early-remove24
-rwxr-xr-xtest/integration/test-ubuntu-bug-806274-install-suggests81
-rwxr-xr-xtest/integration/test-ubuntu-bug-835625-multiarch-lockstep-installed-first45
-rwxr-xr-xtest/integration/test-ubuntu-bug-859188-multiarch-reinstall27
-rwxr-xr-xtest/integration/test-ubuntu-bug-985852-pre-depends-or-group-ordering22
-rwxr-xr-xtest/integration/test-unpack-different-version-unpacked121
-rwxr-xr-xtest/integration/test-very-tight-loop-configure-with-unpacking-new-packages63
-rwxr-xr-xtest/integration/test-xorg-break-providers45
-rw-r--r--test/interactive-helper/CMakeLists.txt15
-rw-r--r--test/interactive-helper/aptdropprivs.cc27
-rw-r--r--test/interactive-helper/aptwebserver.cc964
-rw-r--r--test/interactive-helper/extract-control.cc45
-rw-r--r--test/interactive-helper/libnoprofile.c50
-rw-r--r--test/interactive-helper/mthdcat.cc22
-rw-r--r--test/interactive-helper/networkless-install-fixes/README5
-rw-r--r--test/interactive-helper/networkless-install-fixes/sources.test.list25
-rwxr-xr-xtest/interactive-helper/networkless-install-fixes/test.sh25
-rw-r--r--test/interactive-helper/rpmver.cc118
-rw-r--r--test/interactive-helper/teestream.h62
-rw-r--r--test/interactive-helper/test_fileutl.cc44
-rw-r--r--test/interactive-helper/test_udevcdrom.cc23
-rw-r--r--test/interactive-helper/testdeb.cc51
-rw-r--r--test/libapt/CMakeLists.txt38
-rw-r--r--test/libapt/acqprogress_test.cc178
-rwxr-xr-xtest/libapt/apt-proxy-script9
-rw-r--r--test/libapt/cachefilter_test.cc119
-rw-r--r--test/libapt/cdrom_test.cc114
-rw-r--r--test/libapt/cdromfindpackages_test.cc125
-rw-r--r--test/libapt/commandline_test.cc238
-rw-r--r--test/libapt/compareversion_test.cc180
-rw-r--r--test/libapt/configuration_test.cc197
-rw-r--r--test/libapt/extracttar_test.cc41
-rw-r--r--test/libapt/file-helpers.cc83
-rw-r--r--test/libapt/file-helpers.h29
-rw-r--r--test/libapt/fileutl_test.cc391
-rw-r--r--test/libapt/getarchitectures_test.cc77
-rw-r--r--test/libapt/getlanguages_test.cc241
-rw-r--r--test/libapt/getlistoffilesindir_test.cc114
-rw-r--r--test/libapt/globalerror_test.cc169
-rw-r--r--test/libapt/gtest_runner.cc26
-rw-r--r--test/libapt/hashsums_test.cc392
-rw-r--r--test/libapt/indexcopytosourcelist_test.cc109
-rw-r--r--test/libapt/install_progress_test.cc25
-rw-r--r--test/libapt/openmaybeclearsignedfile_test.cc342
-rw-r--r--test/libapt/parsedepends_test.cc280
-rw-r--r--test/libapt/priority_test.cc16
-rw-r--r--test/libapt/sourcelist_test.cc39
-rw-r--r--test/libapt/srvrecs_test.cc83
-rw-r--r--test/libapt/stringview_test.cc90
-rw-r--r--test/libapt/strutil_test.cc321
-rw-r--r--test/libapt/tagfile_test.cc285
-rw-r--r--test/libapt/tagsection_test.cc270
-rw-r--r--test/libapt/teestream_test.cc39
-rw-r--r--test/libapt/uri_test.cc216
-rwxr-xr-xtest/thread-safety/not-thread-safe.sh7
-rw-r--r--test/thread-safety/thread-check-internal.txt3
-rw-r--r--test/thread-safety/thread-check.txt91
-rw-r--r--triehash/.travis.yml14
-rw-r--r--triehash/LICENSE.md (renamed from LICENSE.md)0
-rw-r--r--triehash/README.md58
-rw-r--r--triehash/tests/framework.sh (renamed from tests/framework.sh)0
-rwxr-xr-xtriehash/tests/run-tests.sh (renamed from tests/run-tests.sh)0
-rwxr-xr-xtriehash/tests/test-basic (renamed from tests/test-basic)0
-rwxr-xr-xtriehash/tests/test-case-insensitive (renamed from tests/test-case-insensitive)0
-rwxr-xr-xtriehash/tests/test-enum-include-name-flags (renamed from tests/test-enum-include-name-flags)0
-rwxr-xr-xtriehash/tests/test-multi-byte-level (renamed from tests/test-multi-byte-level)0
-rwxr-xr-xtriehash/triehash.pl (renamed from triehash.pl)0
-rw-r--r--vendor/CMakeLists.txt37
-rw-r--r--vendor/README72
-rw-r--r--vendor/blankon/apt-vendor.ent17
-rw-r--r--vendor/blankon/sources.list.in10
-rw-r--r--vendor/debian/apt-vendor.ent19
-rw-r--r--vendor/debian/sources.list.in7
-rwxr-xr-xvendor/getinfo83
-rw-r--r--vendor/raspbian/apt-vendor.ent13
-rw-r--r--vendor/raspbian/sources.list.in6
-rw-r--r--vendor/steamos/apt-vendor.ent15
-rw-r--r--vendor/steamos/sources.list.in3
-rw-r--r--vendor/tanglu/apt-vendor.ent14
-rw-r--r--vendor/tanglu/sources.list.in7
-rw-r--r--vendor/ubuntu/apt-vendor.ent20
-rw-r--r--vendor/ubuntu/apt.conf-01-vendor-ubuntu1
-rw-r--r--vendor/ubuntu/sources.list.in10
792 files changed, 458126 insertions, 69 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..630e50839
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,118 @@
+# Include directory
+include/
+
+# Cmake files
+CMakeCache.txt
+CMakeFiles
+CMakeScripts
+Makefile
+cmake_install.cmake
+install_manifest.txt
+CTestTestfile.cmake
+Testing/
+
+gtest-*
+
+# Compiled output
+*.o
+*.so*
+*.versionscript
+**/apt-pkg/tagfile-keys.cc
+
+# Templates
+*.pot
+*.pot-*
+!/po/apt-all.pot
+
+# Vendor files
+**/vendor/sources.list
+**/LC_MESSAGES/
+
+# docbook stylesheets (generated from .cmake.in)
+docbook-html-style.xsl
+manpage-style.xsl
+docbook-text-style.xsl
+
+# Programs
+**/ftparchive/apt-ftparchive
+**/cmdline/apt
+**/cmdline/apt-cache
+**/cmdline/apt-cdrom
+**/cmdline/apt-config
+**/cmdline/apt-extracttemplates
+**/cmdline/apt-get
+**/cmdline/apt-helper
+**/cmdline/apt-key
+**/cmdline/apt-mark
+**/cmdline/apt-sortpkgs
+**/cmdline/planners
+**/cmdline/solvers
+**/cmdline/apt
+
+**/methods/file
+**/methods/copy
+**/methods/store
+**/methods/gpgv
+**/methods/cdrom
+**/methods/http
+**/methods/https
+**/methods/mirror
+**/methods/ftp
+**/methods/rred
+**/methods/rsh
+**/methods/ssh
+**/methods/gzip
+**/methods/bzip2
+**/methods/xz
+**/methods/lzma
+
+**/test/interactive-helper/aptwebserver
+**/test/interactive-helper/extract-control
+**/test/interactive-helper/rpmver
+**/test/interactive-helper/testdeb
+**/test/interactive-helper/mthdcat
+**/test/interactive-helper/test_fileutl
+**/test/interactive-helper/test_udevcdrom
+**/test/interactive-helper/aptdropprivs
+**/test/libapt/libapt_test
+
+# Documentation
+Doxyfile
+doxygen/
+*.html/
+*.text.html
+*.text
+*.*stamp*
+*.[1-9]
+**/doc/*/*.xml
+**/doc/*/*.dbk
+!/doc/examples/
+
+# Backend files
+Makefile
+*.ninja
+.ninja*
+
+!CMakeLists.txt
+
+# package building artifacts
+/debian/*.log
+/debian/*.substvars
+/debian/*.debhelper
+/debian/files
+/debian/apt/
+/debian/apt-doc/
+/debian/apt-utils/
+/debian/libapt-pkg*/
+/debian/libapt-inst*/
+/debian/libapt-pkg-dev/
+/debian/libapt-pkg-doc/
+/debian/apt-transport-https/
+# Copyright file copied from COPYING
+/debian/copyright
+
+# generated for and by abicheck
+/abicheck/apt_build.xml
+/abicheck/apt_installed.xml
+/abicheck/compat_reports/
+/abicheck/logs/
diff --git a/.travis.yml b/.travis.yml
index c66ea9697..023107a68 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,14 +1,33 @@
-language: perl
-perl:
- - "5.24"
- - "5.22"
- - "5.20"
- - "5.18"
- - "5.16"
- - "5.14"
+language: cpp
+cache: ccache
+sudo: required
+dist: trusty
+env:
+ - TEST_SUITE=user CMAKE_FLAGS=
+ - TEST_SUITE=root CMAKE_FLAGS=-DWITH_DOC=OFF
+before_install:
+ - sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ wily main universe' -y
+ - sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ xenial main' -y
+ - |
+ sudo sh -c '/bin/echo -e "Package: *\nPin: release n=wily\nPin-Priority: 1" > /etc/apt/preferences.d/wily'
+ sudo sh -c '/bin/echo -e "Package: *\nPin: release n=xenial\nPin-Priority: 1" > /etc/apt/preferences.d/xenial'
+ - sudo apt-get update -qq
install:
- - cpanm --quiet --notest --skip-satisfied Devel::Cover Devel::Cover::Report::Codecov
+ - sudo apt-get -qq -y -t wily install gettext liblz4-dev python3-apt
+ - sudo apt-get -qq -y -t xenial install cmake ninja-build
+ - sudo ./prepare-release travis-ci
+before_script:
+ - ( mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Coverage -G Ninja $CMAKE_FLAGS .. )
+ - ninja -C build
script:
- - ./tests/run-tests.sh
+ - CTEST_OUTPUT_ON_FAILURE=1 ninja -C build test
+ - DESTDIR=$PWD/rootdir chronic ninja -C build install
+ - test "$TEST_SUITE" != "user" || ./test/integration/run-tests -qq
+ - sudo adduser --force-badname --system --home /nonexistent --no-create-home --quiet _apt || true
+ - sudo chmod go+x /home/travis
+ - sudo chmod -R go+rwX /home/travis/build
+ - test "$TEST_SUITE" != "root" || sudo ./test/integration/run-tests -qq
after_script:
- - cover -report codecov
+ - cd build
+ - gcov -r $(find -name '*.gcno')
+ - bash <(curl -s https://codecov.io/bash)
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 000000000..cce31e651
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,63 @@
+The project contributors:
+
+Michael Vogt <mvo@debian.org>
+- Development, bug fixes
+
+David Kalnischkies <kalnischkies+debian@gmail.com>
+- Development, bug fixes
+
+Julian Andres Klode
+- Development, bug fixes
+
+Past Contributors:
+
+Robert Collins <robert.collins@canonical.com>
+- Change the package index Info methods to allow apt-cache policy to be useful
+ when using several different archives on the same host.
+
+Christian Perrier <bubulle@debian.org>
+- Translations hero/coordinator
+
+Eugene V. Lyubimkin
+- Development, bug fixes
+
+Otavio Salvador
+- Development, bug fixes
+
+Luca Bruno
+- Development, bug fixes
+
+CVS:jgg Jason Gunthorpe <jgg@debian.org>
+- The Mad Cow incarnate
+
+CVS:mdz Matt Zimmerman <mdz@debian.org>
+- Ongoing maintenance and coordination of development
+
+CVS:piefel Michael Piefel <piefel@debian.org>
+- i18n and l10n
+
+CVS:che Ben Gertzfield <che@debian.org>
+- Packaging and Releases
+
+CVS:bod Brendan O'Dea <bod@debian.org>
+- Perl Bindings
+
+CVS:tausq Randolph Chung <tausq@debian.org>
+- Patches, Fixes, Debugging, GUIs and Releases
+
+Isaac Jones <ijones@syntaxpolice.org> and Colin Walters <walters@debian.org>
+ Initial implementation of authentication support (Release.gpg)
+
+Brian White <bcwhite@verisim.com> - Project originator
+Tom Lees <tom@lpsg.demon.co.uk> - DPKG documentation and ideas
+Behan Webster <behanw@verisim.com> - Original GUI design
+Scott Ellis <storm@gate.net> - Original packaging and beta releases
+Branden Robinson <branden@purdue.edu> - Man Page Documentation
+Manoj Srivastava <srivasta@datasync.com> - 1st Generation FTP method and
+ dselect setup script
+Adam Heath <doogie@debian.org> - 2nd Generation FTP method author
+Ben Collins <bcollins@debian.org> - Initial RSH method
+Many other bug reports through the Debian Bug system
+
+NOTE: The ChangeLog generator will parse for names and email addresses. The
+'CVS:<name>' tag should indicate who this pair refers to.
diff --git a/CMake/Documentation.cmake b/CMake/Documentation.cmake
new file mode 100644
index 000000000..f3bbfdc6b
--- /dev/null
+++ b/CMake/Documentation.cmake
@@ -0,0 +1,315 @@
+# po4a/docbook documentation support for CMake
+# - see documentation of add_docbook()
+#
+# Copyright (C) 2016 Julian Andres Klode <jak@debian.org>.
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation files
+# (the "Software"), to deal in the Software without restriction,
+# including without limitation the rights to use, copy, modify, merge,
+# publish, distribute, sublicense, and/or sell copies of the Software,
+# and to permit persons to whom the Software is furnished to do so,
+# subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+
+find_path(DOCBOOK_XSL manpages/docbook.xsl
+ # Debian
+ /usr/share/xml/docbook/stylesheet/docbook-xsl
+ /usr/share/xml/docbook/stylesheet/nwalsh
+ # OpenSUSE
+ /usr/share/xml/docbook/stylesheet/nwalsh/current
+ # Arch
+ /usr/share/xml/docbook/xsl-stylesheets
+ # Fedora
+ /usr/share/sgml/docbook/xsl-stylesheets
+ # Fink
+ ${CMAKE_INSTALL_PREFIX}/share/xml/xsl/docbook-xsl
+ # FreeBSD
+ ${CMAKE_INSTALL_PREFIX}/share/xsl/docbook/
+ NO_DEFAULT_PATH)
+
+if(NOT DOCBOOK_XSL)
+ message(FATAL_ERROR "Could not find docbook xsl")
+endif()
+
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docbook-text-style.xsl.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/docbook-text-style.xsl)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docbook-html-style.xsl.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/docbook-html-style.xsl)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/manpage-style.xsl.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/manpage-style.xsl)
+
+
+# Split up a string of the form DOCUMENT[.DOCUMENT][.LANGUAGE][.SECTION].EXTENSION
+#
+# There might be up to two parts in the document name. The language must be
+# a two char language code like de, or a 5 char code of the form de_DE.
+function(po4a_components doc lang sec ext translated_full_document)
+ get_filename_component(name ${translated_full_document} NAME)
+ string(REPLACE "." ";" name "${name}") # Make it a list
+
+ list(GET name 0 _doc) # First element is always the document
+ list(GET name 1 _lang) # Second *might* be a language
+ list(GET name -2 _sec) # Second-last *might* be a section
+ list(GET name -1 _ext) # Last element is always the file type
+
+ # If the language code is neither a file type, nor a section, nor a language
+ # assume it is part of the file name and use the next component as the lang.
+ if(_lang AND NOT _lang MATCHES "^(xml|dbk|[0-9]|[a-z][a-z]|[a-z][a-z]_[A-Z][A-Z])$")
+ set(_doc "${_doc}.${_lang}")
+ list(GET name 2 _lang)
+ endif()
+ # If no language is present, we get a section; both not present => type
+ if(_lang MATCHES "xml|dbk|[0-9]")
+ set(_lang "")
+ endif()
+ if(NOT _sec MATCHES "^[0-9]$") # A (manpage) section must be a number
+ set(_sec "")
+ endif()
+
+ set(${doc} ${_doc} PARENT_SCOPE)
+ set(${lang} ${_lang} PARENT_SCOPE)
+ set(${sec} ${_sec} PARENT_SCOPE)
+ set(${ext} ${_ext} PARENT_SCOPE)
+endfunction()
+
+
+# Process one document
+function(po4a_one stamp_out out full_document language deps)
+ path_join(full_path "${CMAKE_CURRENT_SOURCE_DIR}" "${full_document}")
+ po4a_components(document _ section ext "${full_document}")
+
+ # Calculate target file name
+ set(dest "${language}/${document}.${language}")
+ if(section)
+ set(dest "${dest}.${section}")
+ endif()
+
+ # po4a might drop files not translated enough, so build a stamp file
+ set(stamp ${CMAKE_CURRENT_BINARY_DIR}/${dest}.po4a-stamp)
+ add_custom_command(
+ OUTPUT ${stamp}
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${language}
+ COMMAND po4a --previous --no-backups
+ --package-name='${PROJECT_NAME}-doc'
+ --package-version='${PACKAGE_VERSION}'
+ --msgid-bugs-address='${PACKAGE_MAIL}'
+ --translate-only ${dest}.${ext}
+ --srcdir ${CMAKE_CURRENT_SOURCE_DIR}
+ --destdir ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/po4a.conf
+ COMMAND ${CMAKE_COMMAND} -E touch ${stamp}
+ COMMENT "Generating ${dest}.${ext} (or dropping it)"
+ DEPENDS ${full_document} ${deps} po/${language}.po
+ )
+ # Return result
+ set(${stamp_out} ${stamp} PARENT_SCOPE)
+ set(${out} ${CMAKE_CURRENT_BINARY_DIR}/${dest}.${ext} PARENT_SCOPE)
+endfunction()
+
+function(xsltproc_one)
+ set(generated "")
+ set(options HTML TEXT MANPAGE)
+ set(oneValueArgs STAMP STAMP_OUT FULL_DOCUMENT)
+ set(multiValueArgs INSTALL DEPENDS)
+ cmake_parse_arguments(DOC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+ po4a_components(document language section ext "${DOC_FULL_DOCUMENT}")
+
+ # Default parameters
+ set(params
+ --nonet
+ --xinclude
+ --stringparam chunk.quietly yes
+ --stringparam man.output.quietly yes
+ --path ${PROJECT_SOURCE_DIR}/vendor/${CURRENT_VENDOR}/
+ --path ${CMAKE_CURRENT_SOURCE_DIR}/
+ )
+
+ # Parameters if localized
+ if(language)
+ list(APPEND params -stringparam l10n.gentext.default.language ${language})
+ endif()
+
+ path_join(full_input_path ${CMAKE_CURRENT_SOURCE_DIR} ${DOC_FULL_DOCUMENT})
+
+ if (DOC_MANPAGE)
+ if (language)
+ set(manpage_output "${CMAKE_CURRENT_BINARY_DIR}/${language}/${document}.${section}")
+ else()
+ set(manpage_output "${CMAKE_CURRENT_BINARY_DIR}/${document}.${section}")
+ endif()
+ set(manpage_stylesheet "${CMAKE_CURRENT_BINARY_DIR}/manpage-style.xsl")
+ set(manpage_params)
+
+ install(FILES ${manpage_output}
+ DESTINATION ${CMAKE_INSTALL_MANDIR}/${language}/man${section}
+ OPTIONAL)
+ endif()
+ if (DOC_HTML)
+ if (language)
+ set(html_output "${CMAKE_CURRENT_BINARY_DIR}/${language}/${document}.${language}.html")
+ else()
+ set(html_output "${CMAKE_CURRENT_BINARY_DIR}/${document}.html")
+ endif()
+ set(html_params --stringparam base.dir ${html_output})
+ set(html_stylesheet "${CMAKE_CURRENT_BINARY_DIR}/docbook-html-style.xsl")
+ install(DIRECTORY ${html_output}
+ DESTINATION ${DOC_INSTALL}
+ OPTIONAL)
+
+ endif()
+ if (DOC_TEXT)
+ if (language)
+ set(text_output "${CMAKE_CURRENT_BINARY_DIR}/${language}/${document}.${language}.text")
+ else()
+ set(text_output "${CMAKE_CURRENT_BINARY_DIR}/${document}.text")
+ endif()
+ set(text_params --stringparam base.dir ${text_output})
+ set(text_stylesheet "${CMAKE_CURRENT_BINARY_DIR}/docbook-text-style.xsl")
+
+ file(RELATIVE_PATH text_output_relative ${CMAKE_CURRENT_BINARY_DIR} ${text_output})
+
+ add_custom_command(OUTPUT ${text_output}.w3m-stamp
+ COMMAND ${PROJECT_SOURCE_DIR}/CMake/run_if_exists.sh
+ --stdout ${text_output}
+ ${text_output}.html
+ env LC_ALL=C.UTF-8 w3m -cols 78 -dump
+ -o display_charset=UTF-8
+ -no-graph -T text/html ${text_output}.html
+ COMMAND ${CMAKE_COMMAND} -E touch ${text_output}.w3m-stamp
+ COMMENT "Generating ${text_output_relative} (if not dropped by po4a)"
+ DEPENDS "${text_output}.html.xsltproc-stamp"
+ )
+ list(APPEND generated ${text_output}.w3m-stamp)
+
+ install(FILES ${text_output}
+ DESTINATION ${DOC_INSTALL}
+ OPTIONAL)
+ set(text_output "${text_output}.html")
+ endif()
+
+ foreach(type in manpage html text)
+ if (NOT ${type}_output)
+ continue()
+ endif()
+
+ set(output ${${type}_output})
+ set(stylesheet ${${type}_stylesheet})
+ set(type_params ${${type}_params})
+ file(RELATIVE_PATH output_relative ${CMAKE_CURRENT_BINARY_DIR} ${output})
+
+ add_custom_command(OUTPUT ${output}.xsltproc-stamp
+ COMMAND ${PROJECT_SOURCE_DIR}/CMake/run_if_exists.sh
+ ${full_input_path}
+ xsltproc ${params} ${type_params} -o ${output}
+ ${stylesheet}
+ ${full_input_path}
+ COMMAND ${CMAKE_COMMAND} -E touch ${output}.xsltproc-stamp
+ COMMENT "Generating ${output_relative} (if not dropped by po4a)"
+ DEPENDS ${DOC_STAMP} ${DOC_DEPENDS})
+
+ list(APPEND generated ${output}.xsltproc-stamp)
+ endforeach()
+
+ set(${DOC_STAMP_OUT} ${generated} PARENT_SCOPE)
+endfunction()
+
+
+# add_docbook(Name [ALL] [HTML] [TEXT] [MANPAGE]
+# [INSTALL install dir]
+# [DEPENDS depend ...]
+# [DOCUMENTS documents ...]
+# [LINGUAS lingua ...])
+#
+# Generate a target called name with all the documents being converted to
+# the chosen output formats and translated to the chosen languages using po4a.
+#
+# For the translation support, the po4a.conf must be written so that
+# translations for a document guide.xml are written to LANG/guide.LANG.xml,
+# and for a manual page man.5.xml to a file called LANG/man.LANG.5.xml.
+#
+# The guide and manual page names may also contain a second component separated
+# by a dot, it must however not be a valid language code.
+#
+# Note that po4a might chose not to generate a translated manual page for a
+# given language if the translation rate is not high enough. We deal with this
+# by creating stamp files.
+function(add_docbook target)
+ set(generated "")
+ set(options HTML TEXT MANPAGE ALL)
+ set(oneValueArgs)
+ set(multiValueArgs INSTALL DOCUMENTS LINGUAS DEPENDS)
+ cmake_parse_arguments(DOC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+ if (DOC_HTML)
+ list(APPEND formats HTML)
+ endif()
+ if (DOC_TEXT)
+ list(APPEND formats TEXT)
+ endif()
+ if (DOC_MANPAGE)
+ list(APPEND formats MANPAGE)
+ endif()
+
+ foreach(document ${DOC_DOCUMENTS})
+ foreach(lang ${DOC_LINGUAS})
+ po4a_one(po4a_stamp po4a_out ${document} "${lang}" "${DOC_DEPENDS}")
+ xsltproc_one(STAMP_OUT xslt_stamp
+ STAMP ${po4a_stamp}
+ FULL_DOCUMENT ${po4a_out}
+ INSTALL ${DOC_INSTALL}
+ ${formats})
+
+ list(APPEND stamps ${xslt_stamp})
+ endforeach()
+ xsltproc_one(STAMP_OUT xslt_stamp
+ STAMP ${document}
+ FULL_DOCUMENT ${document}
+ INSTALL ${DOC_INSTALL}
+ ${formats})
+
+ list(APPEND stamps ${xslt_stamp})
+ endforeach()
+
+ if (DOC_ALL)
+ add_custom_target(${target} ALL DEPENDS ${stamps})
+ else()
+ add_custom_target(${target} DEPENDS ${stamps})
+ endif()
+endfunction()
+
+# Add an update-po4a target
+function(add_update_po4a target pot header)
+ set(WRITE_HEADER "")
+
+ if (header)
+ set(WRITE_HEADER
+ COMMAND sed -n "/^\#$/,$p" ${pot} > ${pot}.headerfree
+ COMMAND cat ${header} ${pot}.headerfree > ${pot}
+ COMMAND rm ${pot}.headerfree
+ )
+ endif()
+ add_custom_target(${target}
+ COMMAND po4a --previous --no-backups --force --no-translations
+ --msgmerge-opt --add-location=file
+ --porefs noline,wrap
+ --package-name=${PROJECT_NAME}-doc --package-version=${PACKAGE_VERSION}
+ --msgid-bugs-address=${PACKAGE_MAIL} po4a.conf
+ ${WRITE_HEADER}
+ VERBATIM
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ )
+endfunction()
diff --git a/CMake/FindBerkeleyDB.cmake b/CMake/FindBerkeleyDB.cmake
new file mode 100644
index 000000000..34bc3b0d1
--- /dev/null
+++ b/CMake/FindBerkeleyDB.cmake
@@ -0,0 +1,59 @@
+# - Try to find Berkeley DB
+# Once done this will define
+#
+# BERKELEY_DB_FOUND - system has Berkeley DB
+# BERKELEY_DB_INCLUDE_DIRS - the Berkeley DB include directory
+# BERKELEY_DB_LIBRARIES - Link these to use Berkeley DB
+# BERKELEY_DB_DEFINITIONS - Compiler switches required for using Berkeley DB
+
+# Copyright (c) 2006, Alexander Dymo, <adymo@kdevelop.org>
+# Copyright (c) 2016, Julian Andres Klode <jak@debian.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+# We need NO_DEFAULT_PATH here, otherwise CMake helpfully picks up the wrong
+# db.h on BSD systems instead of the Berkeley DB one.
+find_path(BERKELEY_DB_INCLUDE_DIRS db.h
+ ${CMAKE_INSTALL_FULL_INCLUDEDIR}/db5
+ /usr/local/include/db5
+ /usr/include/db5
+
+ ${CMAKE_INSTALL_FULL_INCLUDEDIR}/db4
+ /usr/local/include/db4
+ /usr/include/db4
+
+ ${CMAKE_INSTALL_FULL_INCLUDEDIR}
+ /usr/local/include
+ /usr/include
+
+ NO_DEFAULT_PATH
+)
+
+find_library(BERKELEY_DB_LIBRARIES NAMES db db-5)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Berkeley "Could not find Berkeley DB >= 4.1" BERKELEY_DB_INCLUDE_DIRS BERKELEY_DB_LIBRARIES)
+# show the BERKELEY_DB_INCLUDE_DIRS and BERKELEY_DB_LIBRARIES variables only in the advanced view
+mark_as_advanced(BERKELEY_DB_INCLUDE_DIRS BERKELEY_DB_LIBRARIES)
diff --git a/CMake/FindIconv.cmake b/CMake/FindIconv.cmake
new file mode 100644
index 000000000..67046d95d
--- /dev/null
+++ b/CMake/FindIconv.cmake
@@ -0,0 +1,20 @@
+find_path(ICONV_INCLUDE_DIR NAMES iconv.h)
+
+find_library(ICONV_LIBRARY NAMES iconv)
+if (ICONV_LIBRARY)
+ set(ICONV_SYMBOL_FOUND "${ICONV_LIBRARY}")
+else()
+ check_function_exists(iconv_open ICONV_SYMBOL_FOUND)
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Iconv DEFAULT_MESSAGE ICONV_INCLUDE_DIR ICONV_SYMBOL_FOUND)
+
+if(ICONV_LIBRARY)
+ set(ICONV_LIBRARIES "${ICONV_LIBRARY}")
+else()
+ set(ICONV_LIBRARIES)
+endif()
+set(ICONV_INCLUDE_DIRS "${ICONV_INCLUDE_DIR}")
+
+mark_as_advanced(ICONV_LIBRARY ICONV_INCLUDE_DIR)
diff --git a/CMake/FindLFS.cmake b/CMake/FindLFS.cmake
new file mode 100644
index 000000000..e1fcf964c
--- /dev/null
+++ b/CMake/FindLFS.cmake
@@ -0,0 +1,148 @@
+# CMake support for large files
+#
+# Copyright (C) 2016 Julian Andres Klode <jak@debian.org>.
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation files
+# (the "Software"), to deal in the Software without restriction,
+# including without limitation the rights to use, copy, modify, merge,
+# publish, distribute, sublicense, and/or sell copies of the Software,
+# and to permit persons to whom the Software is furnished to do so,
+# subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+#
+# This defines the following variables
+#
+# LFS_DEFINITIONS - List of definitions to pass to add_definitions()
+# LFS_COMPILE_OPTIONS - List of definitions to pass to add_compile_options()
+# LFS_LIBRARIES - List of libraries and linker flags
+# LFS_FOUND - If there is Large files support
+#
+
+include(CheckCXXSourceCompiles)
+include(FindPackageHandleStandardArgs)
+
+# Test program to check for LFS. Requires that off_t has at least 8 byte large
+set(_lfs_test_source
+ "
+ #include <sys/types.h>
+ typedef char my_static_assert[sizeof(off_t) >= 8 ? 1 : -1];
+ int main(void) { return 0; }
+ "
+)
+
+# Check if the given options are needed
+#
+# This appends to the variables _lfs_cppflags, _lfs_cflags, and _lfs_ldflags,
+# it also sets LFS_FOUND to 1 if it works.
+function(_lfs_check_compiler_option var options definitions libraries)
+ set(CMAKE_REQUIRED_QUIET 1)
+ set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} ${options})
+ set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} ${definitions})
+ set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_DEFINITIONS} ${libraries})
+
+ message(STATUS "Looking for LFS support using ${options} ${definitions} ${libraries}")
+ check_cxx_source_compiles("${_lfs_test_source}" ${var})
+
+ if(${var})
+ message(STATUS "Looking for LFS support using ${options} ${definitions} ${libraries} - found")
+ set(_lfs_cppflags ${_lfs_cppflags} ${definitions} PARENT_SCOPE)
+ set(_lfs_cflags ${_lfs_cflags} ${options} PARENT_SCOPE)
+ set(_lfs_ldflags ${_lfs_ldflags} ${libraries} PARENT_SCOPE)
+ set(LFS_FOUND TRUE PARENT_SCOPE)
+ else()
+ message(STATUS "Looking for LFS support using ${options} ${definitions} ${libraries} - not found")
+ endif()
+endfunction()
+
+# Check for the availability of LFS.
+# The cases handled are:
+#
+# * Native LFS
+# * Output of getconf LFS_CFLAGS; getconf LFS_LIBS; getconf LFS_LDFLAGS
+# * Preprocessor flag -D_FILE_OFFSET_BITS=64
+# * Preprocessor flag -D_LARGE_FILES
+#
+function(_lfs_check)
+ set(_lfs_cflags)
+ set(_lfs_cppflags)
+ set(_lfs_ldflags)
+ set(_lfs_libs)
+ set(CMAKE_REQUIRED_QUIET 1)
+ message(STATUS "Looking for native LFS support")
+ check_cxx_source_compiles("${_lfs_test_source}" lfs_native)
+ if (lfs_native)
+ message(STATUS "Looking for native LFS support - found")
+ set(LFS_FOUND TRUE)
+ else()
+ message(STATUS "Looking for native LFS support - not found")
+ endif()
+
+ if (NOT LFS_FOUND)
+ # Check using getconf. If getconf fails, don't worry, the check in
+ # _lfs_check_compiler_option will fail as well.
+ execute_process(COMMAND getconf LFS_CFLAGS
+ OUTPUT_VARIABLE _lfs_cflags_raw
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_QUIET)
+ execute_process(COMMAND getconf LFS_LIBS
+ OUTPUT_VARIABLE _lfs_libs_tmp
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_QUIET)
+ execute_process(COMMAND getconf LFS_LDFLAGS
+ OUTPUT_VARIABLE _lfs_ldflags_tmp
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_QUIET)
+
+ separate_arguments(_lfs_cflags_raw)
+ separate_arguments(_lfs_ldflags_tmp)
+ separate_arguments(_lfs_libs_tmp)
+
+ # Move -D flags to the place they are supposed to be
+ foreach(flag ${_lfs_cflags_raw})
+ if (flag MATCHES "-D.*")
+ list(APPEND _lfs_cppflags_tmp ${flag})
+ else()
+ list(APPEND _lfs_cflags_tmp ${flag})
+ endif()
+ endforeach()
+
+ # Check if the flags we received (if any) produce working LFS support
+ _lfs_check_compiler_option(lfs_getconf_works
+ "${_lfs_cflags_tmp}"
+ "${_lfs_cppflags_tmp}"
+ "${_lfs_libs_tmp};${_lfs_ldflags_tmp}")
+ endif()
+
+ if(NOT LFS_FOUND) # IRIX stuff
+ _lfs_check_compiler_option(lfs_need_n32 "-n32" "" "")
+ endif()
+ if(NOT LFS_FOUND) # Linux and friends
+ _lfs_check_compiler_option(lfs_need_file_offset_bits "" "-D_FILE_OFFSET_BITS=64" "")
+ endif()
+ if(NOT LFS_FOUND) # AIX
+ _lfs_check_compiler_option(lfs_need_large_files "" "-D_LARGE_FILES=1" "")
+ endif()
+
+ set(LFS_DEFINITIONS ${_lfs_cppflags} CACHE STRING "Extra definitions for large file support")
+ set(LFS_COMPILE_OPTIONS ${_lfs_cflags} CACHE STRING "Extra definitions for large file support")
+ set(LFS_LIBRARIES ${_lfs_libs} ${_lfs_ldflags} CACHE STRING "Extra definitions for large file support")
+ set(LFS_FOUND ${LFS_FOUND} CACHE INTERNAL "Found LFS")
+endfunction()
+
+if (NOT LFS_FOUND)
+ _lfs_check()
+endif()
+
+find_package_handle_standard_args(LFS "Could not find LFS. Set LFS_DEFINITIONS, LFS_COMPILE_OPTIONS, LFS_LIBRARIES." LFS_FOUND)
diff --git a/CMake/FindLZ4.cmake b/CMake/FindLZ4.cmake
new file mode 100644
index 000000000..597f520a8
--- /dev/null
+++ b/CMake/FindLZ4.cmake
@@ -0,0 +1,25 @@
+# - Try to find LZ4
+# Once done, this will define
+#
+# LZ4_FOUND - system has LZ4
+# LZ4_INCLUDE_DIRS - the LZ4 include directories
+# LZ4_LIBRARIES - the LZ4 library
+find_package(PkgConfig)
+
+pkg_check_modules(LZ4_PKGCONF liblz4)
+
+find_path(LZ4_INCLUDE_DIRS
+ NAMES lz4frame.h
+ PATHS ${LZ4_PKGCONF_INCLUDE_DIRS}
+)
+
+
+find_library(LZ4_LIBRARIES
+ NAMES lz4
+ PATHS ${LZ4_PKGCONF_LIBRARY_DIRS}
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(LZ4 DEFAULT_MSG LZ4_INCLUDE_DIRS LZ4_LIBRARIES)
+
+mark_as_advanced(LZ4_INCLUDE_DIRS LZ4_LIBRARIES)
diff --git a/CMake/FindLZMA.cmake b/CMake/FindLZMA.cmake
new file mode 100644
index 000000000..6abc4fa77
--- /dev/null
+++ b/CMake/FindLZMA.cmake
@@ -0,0 +1,25 @@
+# - Try to find LZMA
+# Once done, this will define
+#
+# LZMA_FOUND - system has LZMA
+# LZMA_INCLUDE_DIRS - the LZMA include directories
+# LZMA_LIBRARIES - the LZMA library
+find_package(PkgConfig)
+
+pkg_check_modules(LZMA_PKGCONF liblzma)
+
+find_path(LZMA_INCLUDE_DIRS
+ NAMES lzma.h
+ PATHS ${LZMA_PKGCONF_INCLUDE_DIRS}
+)
+
+
+find_library(LZMA_LIBRARIES
+ NAMES lzma
+ PATHS ${LZMA_PKGCONF_LIBRARY_DIRS}
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(LZMA DEFAULT_MSG LZMA_INCLUDE_DIRS LZMA_LIBRARIES)
+
+mark_as_advanced(LZMA_INCLUDE_DIRS LZMA_LIBRARIES)
diff --git a/CMake/Misc.cmake b/CMake/Misc.cmake
new file mode 100644
index 000000000..6ad0b9479
--- /dev/null
+++ b/CMake/Misc.cmake
@@ -0,0 +1,101 @@
+include(CheckCXXCompilerFlag)
+
+# Flatten our header structure
+function(flatify target headers)
+ foreach(header ${headers})
+ get_filename_component(tgt ${header} NAME)
+ configure_file(${header} ${target}/${tgt} COPYONLY)
+ endforeach(header ${headers})
+endfunction()
+
+
+function(add_optional_compile_options flags)
+ foreach(flag ${flags})
+ check_cxx_compiler_flag(-${flag} have-compiler-flag:-${flag})
+ if (have-compiler-flag:-${flag})
+ add_compile_options("-${flag}")
+ endif()
+ endforeach()
+endfunction()
+
+# Substitute vendor references in a file
+function(add_vendor_file)
+ set(options)
+ set(oneValueArgs OUTPUT INPUT MODE)
+ set(multiValueArgs VARIABLES)
+ cmake_parse_arguments(AVF "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+ set(in ${CMAKE_CURRENT_SOURCE_DIR}/${AVF_INPUT})
+ set(out ${CMAKE_CURRENT_BINARY_DIR}/${AVF_OUTPUT})
+
+ add_custom_command(
+ OUTPUT ${out}
+ COMMAND ${CMAKE_COMMAND} -DPROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR}
+ "-DVARS=${AVF_VARIABLES}"
+ -DCURRENT_VENDOR=${CURRENT_VENDOR}
+ -DIN=${in}
+ -DOUT=${out}
+ -P ${PROJECT_SOURCE_DIR}/CMake/vendor_substitute.cmake
+ COMMAND chmod ${AVF_MODE} ${out}
+ DEPENDS ${in}
+ ${PROJECT_SOURCE_DIR}/doc/apt-verbatim.ent
+ ${PROJECT_SOURCE_DIR}/vendor/${CURRENT_VENDOR}/apt-vendor.ent
+ ${PROJECT_SOURCE_DIR}/vendor/getinfo
+ ${PROJECT_SOURCE_DIR}/CMake/vendor_substitute.cmake
+ VERBATIM
+ )
+
+ # Would like to use ${AVF_OUTPUT} as target name, but then ninja gets
+ # cycles.
+ add_custom_target(vendor-${AVF_OUTPUT} ALL DEPENDS ${out})
+endfunction()
+
+# Add symbolic links to a file
+function(add_slaves destination master)
+ set(slaves "")
+ foreach(slave ${ARGN})
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${slave}
+ COMMAND ${CMAKE_COMMAND} -E create_symlink ${master} ${CMAKE_CURRENT_BINARY_DIR}/${slave})
+ list(APPEND slaves ${CMAKE_CURRENT_BINARY_DIR}/${slave})
+ endforeach()
+
+ STRING(REPLACE "/" "-" master "${master}")
+ add_custom_target(${master}-slaves ALL DEPENDS ${slaves})
+ install(FILES ${slaves} DESTINATION ${destination})
+endfunction()
+
+# Generates a simple version script versioning everything with current SOVERSION
+function(add_version_script target)
+ get_target_property(soversion ${target} SOVERSION)
+ set(script "${CMAKE_CURRENT_BINARY_DIR}/${target}.versionscript")
+ string(REPLACE "-" "" name "${target}_${soversion}")
+ string(TOUPPER "${name}" name)
+ add_custom_command(OUTPUT "${script}"
+ COMMAND echo "${name} {global: *; };" > "${script}"
+ VERBATIM )
+ add_custom_target(${target}-versionscript DEPENDS "${script}")
+ target_link_libraries(${target} PRIVATE -Wl,-version-script="${script}")
+ add_dependencies(${target} ${target}-versionscript)
+endfunction()
+
+function(path_join out path1 path2)
+ string(SUBSTRING ${path2} 0 1 init_char)
+ if ("${init_char}" STREQUAL "/")
+ set(${out} "${path2}" PARENT_SCOPE)
+ else()
+ set(${out} "${path1}/${path2}" PARENT_SCOPE)
+ endif()
+endfunction()
+
+# install_empty_directories(path ...)
+#
+# Creates empty directories in the install destination dir. Paths may be
+# absolute or relative; in the latter case, the value of CMAKE_INSTALL_PREFIX
+# is prepended.
+function(install_empty_directories)
+ foreach(path ${ARGN})
+ path_join(full_path "${CMAKE_INSTALL_PREFIX}" "${path}")
+ INSTALL(CODE "MESSAGE(STATUS \"Creating directory: \$ENV{DESTDIR}${full_path}\")"
+ CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${full_path})")
+ endforeach()
+endfunction()
diff --git a/CMake/Translations.cmake b/CMake/Translations.cmake
new file mode 100644
index 000000000..79f2633a7
--- /dev/null
+++ b/CMake/Translations.cmake
@@ -0,0 +1,182 @@
+# translations.cmake - Translations using APT's translation system.
+# Copyright (C) 2009, 2016 Julian Andres Klode <jak@debian.org>
+
+function(apt_add_translation_domain)
+ set(options)
+ set(oneValueArgs DOMAIN)
+ set(multiValueArgs TARGETS SCRIPTS EXCLUDE_LANGUAGES)
+ cmake_parse_arguments(NLS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+ # Build the list of source files of the target
+ set(files "")
+ set(abs_files "")
+ set(scripts "")
+ set(abs_scripts "")
+ set(mofiles)
+ set(targets ${NLS_TARGETS})
+ set(domain ${NLS_DOMAIN})
+ set(xgettext_params
+ --add-comments
+ --foreign
+ --package-name=${PROJECT_NAME}
+ --package-version=${PACKAGE_VERSION}
+ --msgid-bugs-address=${PACKAGE_MAIL}
+ )
+ foreach(source ${NLS_SCRIPTS})
+ path_join(file "${CMAKE_CURRENT_SOURCE_DIR}" "${source}")
+ file(RELATIVE_PATH relfile ${PROJECT_SOURCE_DIR} ${file})
+ list(APPEND scripts ${relfile})
+ list(APPEND abs_scripts ${file})
+ endforeach()
+ foreach(target ${targets})
+ get_target_property(source_dir ${target} SOURCE_DIR)
+ get_target_property(sources ${target} SOURCES)
+ foreach(source ${sources})
+ path_join(file "${source_dir}" "${source}")
+ file(RELATIVE_PATH relfile ${PROJECT_SOURCE_DIR} ${file})
+ set(files ${files} ${relfile})
+ set(abs_files ${abs_files} ${file})
+ endforeach()
+
+ target_compile_definitions(${target} PRIVATE -DAPT_DOMAIN="${domain}")
+ endforeach()
+
+ if("${scripts}" STREQUAL "")
+ set(sh_pot "/dev/null")
+ else()
+ set(sh_pot ${CMAKE_CURRENT_BINARY_DIR}/${domain}.sh.pot)
+ # Create the template for this specific sub-domain
+ add_custom_command (OUTPUT ${sh_pot}
+ COMMAND xgettext ${xgettext_params} -L Shell
+ -o ${sh_pot} ${scripts}
+ DEPENDS ${abs_scripts}
+ VERBATIM
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+ )
+ endif()
+
+
+ add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${domain}.c.pot
+ COMMAND xgettext ${xgettext_params} -k_ -kN_
+ --keyword=P_:1,2
+ -o ${CMAKE_CURRENT_BINARY_DIR}/${domain}.c.pot ${files}
+ DEPENDS ${abs_files}
+ VERBATIM
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+ )
+
+ # We are building a ${domain}.pot with a header for launchpad, but we also
+ # build a ${domain.pot}-tmp as a byproduct. The msgfmt command than depend
+ # on the byproduct while their target depends on the output, so that msgfmt
+ # does not have to be rerun if nothing in the template changed.
+ #
+ # Make sure the .pot-tmp has no line numbers, to avoid useless rebuilding
+ # of .mo files.
+ add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot
+ BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot-tmp
+ COMMAND msgcomm --more-than=0 --omit-header --sort-by-file --add-location=file
+ ${sh_pot}
+ ${CMAKE_CURRENT_BINARY_DIR}/${domain}.c.pot
+ --output=${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot-tmp0
+ COMMAND msgcomm --more-than=0 --sort-by-file
+ ${sh_pot}
+ ${CMAKE_CURRENT_BINARY_DIR}/${domain}.c.pot
+ --output=${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot
+ COMMAND cmake -E copy_if_different
+ ${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot-tmp0
+ ${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot-tmp
+ DEPENDS ${sh_pot}
+ ${CMAKE_CURRENT_BINARY_DIR}/${domain}.c.pot
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+ )
+
+ # We need a target to depend on otherwise, the msgmerge might not get called
+ # with the make generator
+ add_custom_target(nls-${domain}-template DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot)
+
+ # Build .mo files
+ file(GLOB translations "${PROJECT_SOURCE_DIR}/po/*.po")
+ list(SORT translations)
+ foreach(file ${translations})
+ get_filename_component(langcode ${file} NAME_WE)
+ if ("${langcode}" IN_LIST NLS_EXCLUDE_LANGUAGES)
+ continue()
+ endif()
+ set(outdir ${CMAKE_CURRENT_BINARY_DIR}/locale/${langcode}/LC_MESSAGES)
+ file(MAKE_DIRECTORY ${outdir})
+ # Command to merge and compile the messages. As explained in the custom
+ # command for msgcomm, this depends on byproduct to avoid reruns
+ add_custom_command(OUTPUT ${outdir}/${domain}.po
+ COMMAND msgmerge -qo ${outdir}/${domain}.po ${file} ${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot-tmp
+ DEPENDS ${file} ${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot-tmp
+ )
+ add_custom_command(OUTPUT ${outdir}/${domain}.mo
+ COMMAND msgfmt --statistics -o ${outdir}/${domain}.mo ${outdir}/${domain}.po
+ DEPENDS ${outdir}/${domain}.po
+ )
+
+ set(mofiles ${mofiles} ${outdir}/${domain}.mo)
+ install(FILES ${outdir}/${domain}.mo
+ DESTINATION "${CMAKE_INSTALL_LOCALEDIR}/${langcode}/LC_MESSAGES")
+ endforeach(file ${translations})
+
+ add_custom_target(nls-${domain} ALL DEPENDS ${mofiles} nls-${domain}-template)
+endfunction()
+
+# Usage: apt_add_update_po(output domain [domain ...])
+function(apt_add_update_po)
+ set(options)
+ set(oneValueArgs TEMPLATE)
+ set(multiValueArgs DOMAINS EXCLUDE_LANGUAGES)
+ cmake_parse_arguments(NLS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+ set(output ${CMAKE_CURRENT_SOURCE_DIR}/${NLS_TEMPLATE}.pot)
+ foreach(domain ${NLS_DOMAINS})
+ list(APPEND potfiles ${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot)
+ endforeach()
+
+ get_filename_component(master_name ${output} NAME_WE)
+ add_custom_target(nls-${master_name}
+ COMMAND msgcomm --sort-by-file --add-location=file
+ --more-than=0 --output=${output}
+ ${potfiles}
+ DEPENDS ${potfiles})
+
+ file(GLOB translations "${PROJECT_SOURCE_DIR}/po/*.po")
+ if (NOT TARGET update-po)
+ add_custom_target(update-po)
+ endif()
+ foreach(translation ${translations})
+ get_filename_component(langcode ${translation} NAME_WE)
+ if ("${langcode}" IN_LIST NLS_EXCLUDE_LANGUAGES)
+ continue()
+ endif()
+ add_custom_target(update-po-${langcode}
+ COMMAND msgmerge -q --previous --update --backup=none ${translation} ${output}
+ DEPENDS nls-${master_name}
+ )
+ add_dependencies(update-po update-po-${langcode})
+ endforeach()
+ add_dependencies(update-po nls-${master_name})
+endfunction()
+
+function(apt_add_po_statistics excluded)
+ add_custom_target(statistics)
+ file(GLOB translations "${PROJECT_SOURCE_DIR}/po/*.po")
+ foreach(translation ${translations})
+ get_filename_component(langcode ${translation} NAME_WE)
+ if ("${langcode}" IN_LIST excluded)
+ add_custom_command(
+ TARGET statistics PRE_BUILD
+ COMMAND printf "%-6s " "${langcode}:"
+ COMMAND echo "ignored"
+ VERBATIM
+ )
+ continue()
+ endif()
+ add_custom_command(
+ TARGET statistics PRE_BUILD
+ COMMAND printf "%-6s " "${langcode}:"
+ COMMAND msgfmt --statistics -o /dev/null ${translation}
+ VERBATIM
+ )
+ endforeach()
+endfunction()
diff --git a/CMake/apti18n.h.in b/CMake/apti18n.h.in
new file mode 100644
index 000000000..9c843b037
--- /dev/null
+++ b/CMake/apti18n.h.in
@@ -0,0 +1,30 @@
+// -*- mode: cpp; mode: fold -*-
+// $Id: apti18n.h.in,v 1.6 2003/01/11 07:18:18 jgg Exp $
+/* Internationalization macros for apt. This header should be included last
+ in each C file. */
+
+// Set by autoconf
+#cmakedefine USE_NLS
+
+#ifdef USE_NLS
+// apt will use the gettext implementation of the C library
+#include <libintl.h>
+#include <locale.h>
+# ifdef APT_DOMAIN
+# define _(x) dgettext(APT_DOMAIN,x)
+# define P_(msg,plural,n) dngettext(APT_DOMAIN,msg,plural,n)
+# else
+# define _(x) gettext(x)
+# define P_(msg,plural,n) ngettext(msg,plural,n)
+# endif
+# define N_(x) x
+#else
+// apt will not use any gettext
+# define setlocale(a, b)
+# define textdomain(a)
+# define bindtextdomain(a, b)
+# define _(x) x
+# define P_(msg,plural,n) (n == 1 ? msg : plural)
+# define N_(x) x
+# define dgettext(d, m) m
+#endif
diff --git a/CMake/config.h.in b/CMake/config.h.in
new file mode 100644
index 000000000..7b068864c
--- /dev/null
+++ b/CMake/config.h.in
@@ -0,0 +1,76 @@
+/* Define if your processor stores words with the most significant
+ byte first (like Motorola and SPARC, unlike Intel and VAX). */
+#cmakedefine WORDS_BIGENDIAN
+
+/* Define if we have the timegm() function */
+#cmakedefine HAVE_TIMEGM
+
+/* Define if we have the zlib library for gzip */
+#cmakedefine HAVE_ZLIB
+
+/* Define if we have the bz2 library for bzip2 */
+#cmakedefine HAVE_BZ2
+
+/* Define if we have the lzma library for lzma/xz */
+#cmakedefine HAVE_LZMA
+
+/* Define if we have the lz4 library for lz4 */
+#cmakedefine HAVE_LZ4
+
+/* These two are used by the statvfs shim for glibc2.0 and bsd */
+/* Define if we have sys/vfs.h */
+#cmakedefine HAVE_VFS_H
+#cmakedefine HAVE_STRUCT_STATFS_F_TYPE
+
+/* Define if we have sys/mount.h */
+#cmakedefine HAVE_MOUNT_H
+
+/* Define if we have sys/endian.h */
+#cmakedefine HAVE_SYS_ENDIAN_H
+
+/* Define if we have machine/endian.h */
+#cmakedefine HAVE_MACHINE_ENDIAN_H
+
+/* Define if we have enabled pthread support */
+#cmakedefine HAVE_PTHREAD
+
+/* Check for getresuid() function and similar ones */
+#cmakedefine HAVE_GETRESUID
+#cmakedefine HAVE_GETRESGID
+#cmakedefine HAVE_SETRESUID
+#cmakedefine HAVE_SETRESGID
+
+/* Check for ptsname_r() */
+#cmakedefine HAVE_PTSNAME_R
+
+/* Define the arch name string */
+#define COMMON_ARCH "${COMMON_ARCH}"
+
+/* The package name string */
+#define PACKAGE "${PACKAGE}"
+
+/* The version number string */
+#define PACKAGE_VERSION "${PACKAGE_VERSION}"
+
+/* The mail address to reach upstream */
+#define PACKAGE_MAIL "${PACKAGE_MAIL}"
+
+/* Various directories */
+#cmakedefine CMAKE_INSTALL_FULL_BINDIR "${CMAKE_INSTALL_FULL_BINDIR}"
+#cmakedefine STATE_DIR "${STATE_DIR}"
+#cmakedefine CACHE_DIR "${CACHE_DIR}"
+#cmakedefine LOG_DIR "${LOG_DIR}"
+#cmakedefine CONF_DIR "${CONF_DIR}"
+#cmakedefine LIBEXEC_DIR "${LIBEXEC_DIR}"
+#cmakedefine BIN_DIR "${BIN_DIR}"
+#cmakedefine DPKG_DATADIR "${DPKG_DATADIR}"
+
+/* Group of the root user */
+#cmakedefine ROOT_GROUP "${ROOT_GROUP}"
+
+#define APT_8_CLEANER_HEADERS
+#define APT_9_CLEANER_HEADERS
+#define APT_10_CLEANER_HEADERS
+
+/* unrolling is faster combined with an optimizing compiler */
+#define SHA2_UNROLL_TRANSFORM
diff --git a/CMake/endian.h.in b/CMake/endian.h.in
new file mode 100644
index 000000000..1d9198c24
--- /dev/null
+++ b/CMake/endian.h.in
@@ -0,0 +1,9 @@
+#include <config.h>
+
+#ifdef HAVE_MACHINE_ENDIAN_H
+#include <machine/endian.h>
+#endif
+#ifdef HAVE_SYS_ENDIAN_H
+#include <sys/types.h>
+#include <sys/endian.h>
+#endif
diff --git a/CMake/run_if_exists.sh b/CMake/run_if_exists.sh
new file mode 100755
index 000000000..97edd4c1a
--- /dev/null
+++ b/CMake/run_if_exists.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+# Small helper for running a command
+out=""
+if [ "$1" = "--stdout" ]; then
+ out="$2"
+ shift 2
+fi
+
+if [ -e "$1" ]; then
+ shift
+ if [ "$out" ]; then
+ exec "$@" > $out
+ else
+ exec "$@"
+ fi
+fi
diff --git a/CMake/statvfs.h.in b/CMake/statvfs.h.in
new file mode 100644
index 000000000..d0ec238ad
--- /dev/null
+++ b/CMake/statvfs.h.in
@@ -0,0 +1,13 @@
+/* Compatibility for systems with out Single Unix Spec statvfs */
+#include <config.h>
+
+#ifdef HAVE_VFS_H
+#include <sys/vfs.h>
+#endif
+
+#ifdef HAVE_MOUNT_H
+#include <sys/param.h>
+#include <sys/mount.h>
+#endif
+
+#define statvfs statfs
diff --git a/CMake/vendor_substitute.cmake b/CMake/vendor_substitute.cmake
new file mode 100644
index 000000000..71449c9e8
--- /dev/null
+++ b/CMake/vendor_substitute.cmake
@@ -0,0 +1,8 @@
+file(READ ${IN} input)
+foreach(variable ${VARS})
+ execute_process(COMMAND ${PROJECT_SOURCE_DIR}/vendor/getinfo
+ --vendor ${CURRENT_VENDOR} ${variable}
+ OUTPUT_VARIABLE value OUTPUT_STRIP_TRAILING_WHITESPACE)
+ string(REPLACE "&${variable};" "${value}" input "${input}")
+endforeach()
+file(WRITE ${OUT} "${input}")
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 000000000..83af9bd5a
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,238 @@
+# Copyright (C) 2009, 2016 Julian Andres Klode <jak@debian.org>.
+# Licensed under the same terms as APT; i.e. GPL 2 or later.
+
+# set minimum version
+project(apt)
+cmake_minimum_required(VERSION 3.4.0)
+# Generic header locations
+include_directories(${PROJECT_BINARY_DIR}/include)
+
+
+enable_testing()
+
+option(WITH_DOC "Build documentation." ON)
+option(USE_NLS "Localisation support." ON)
+
+set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/CMake")
+
+# Add coverage target
+set(CMAKE_CXX_FLAGS_COVERAGE "-g -fprofile-arcs -ftest-coverage")
+set(CMAKE_EXE_LINKER_FLAGS_COVERAGE "-lgcov")
+set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE "-lgcov")
+
+# Work around bug in GNUInstallDirs
+if (EXISTS "/etc/debian_version")
+ set(CMAKE_INSTALL_LIBEXECDIR "lib")
+endif()
+
+# Include stuff
+include(Misc)
+include(CheckIncludeFiles)
+include(CheckFunctionExists)
+include(CheckStructHasMember)
+include(GNUInstallDirs)
+include(TestBigEndian)
+find_package(Threads)
+find_package(LFS REQUIRED)
+find_package(Iconv REQUIRED)
+
+find_package(Perl REQUIRED)
+
+if(USE_NLS)
+ find_package(Intl REQUIRED)
+ link_libraries(${Intl_LIBRARIES})
+ include_directories(${Intl_INCLUDE_DIRS})
+endif()
+
+# Add large file support
+add_compile_options(${LFS_COMPILE_OPTIONS})
+add_definitions(${LFS_DEFINITIONS})
+link_libraries(${LFS_LIBRARIES})
+
+# Set compiler flags
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
+
+add_optional_compile_options(Wall)
+add_optional_compile_options(Wextra)
+add_optional_compile_options(Wcast-align)
+add_optional_compile_options(Wlogical-op)
+add_optional_compile_options(Wredundant-decls)
+add_optional_compile_options(Wmissing-declarations)
+add_optional_compile_options(Wunsafe-loop-optimizations)
+add_optional_compile_options(Wctor-dtor-privacy)
+add_optional_compile_options(Wdisabled-optimization)
+add_optional_compile_options(Winit-self)
+add_optional_compile_options(Wmissing-include-dirs)
+add_optional_compile_options(Wnoexcept)
+add_optional_compile_options(Wsign-promo)
+add_optional_compile_options(Wundef)
+
+# apt-ftparchive dependencies
+find_package(BerkeleyDB REQUIRED)
+if (BERKELEY_DB_FOUND)
+ set(HAVE_BDB 1)
+endif()
+
+
+# apt-transport-https dependencies
+find_package(CURL REQUIRED)
+if (CURL_FOUND)
+ set(HAVE_CURL 1)
+endif()
+
+# (De)Compressor libraries
+find_package(ZLIB REQUIRED)
+if (ZLIB_FOUND)
+ set(HAVE_ZLIB 1)
+endif()
+
+
+find_package(BZip2)
+if (BZIP2_FOUND)
+ set(HAVE_BZ2 1)
+endif()
+
+find_package(LZMA)
+if (LZMA_FOUND)
+ set(HAVE_LZMA 1)
+endif()
+
+
+find_package(LZ4)
+if (LZ4_FOUND)
+ set(HAVE_LZ4 1)
+endif()
+
+# Mount()ing and stat()ing and friends
+check_symbol_exists(statfs sys/vfs.h HAVE_VFS_H)
+check_include_files(sys/params.h HAVE_PARAMS_H)
+check_symbol_exists(statfs sys/mount.h HAVE_MOUNT_H)
+if (NOT HAVE_VFS_H AND NOT HAVE_MOUNT_H)
+ message(FATAL_ERROR "Can find neither statvfs() nor statfs()")
+endif()
+
+check_function_exists(statvfs HAVE_STATVFS)
+if (NOT HAVE_STATVFS)
+ configure_file(CMake/statvfs.h.in ${PROJECT_BINARY_DIR}/include/sys/statvfs.h COPYONLY)
+endif()
+
+CHECK_STRUCT_HAS_MEMBER("struct statfs" f_type sys/vfs.h HAVE_STRUCT_STATFS_F_TYPE)
+
+# Other checks
+check_function_exists(getresuid HAVE_GETRESUID)
+check_function_exists(getresgid HAVE_GETRESGID)
+check_function_exists(setresuid HAVE_SETRESUID)
+check_function_exists(setresgid HAVE_SETRESGID)
+check_function_exists(ptsname_r HAVE_PTSNAME_R)
+check_function_exists(timegm HAVE_TIMEGM)
+test_big_endian(WORDS_BIGENDIAN)
+
+# FreeBSD
+add_definitions(-D_WITH_GETLINE=1)
+
+if (CMAKE_USE_PTHREADS_INIT)
+ set(HAVE_PTHREAD 1)
+endif()
+
+CHECK_INCLUDE_FILES(machine/endian.h HAVE_MACHINE_ENDIAN_H)
+CHECK_INCLUDE_FILES(sys/endian.h HAVE_SYS_ENDIAN_H)
+CHECK_INCLUDE_FILES(endian.h HAVE_ENDIAN_H)
+if (NOT HAVE_ENDIAN_H)
+ if (HAVE_MACHINE_ENDIAN_H OR HAVE_SYS_ENDIAN_H)
+ configure_file(CMake/endian.h.in ${PROJECT_BINARY_DIR}/include/endian.h)
+ else()
+ message(FATAL_ERROR "Cannot find endian.h")
+ endif()
+endif()
+
+
+include(CheckTypeSize)
+set(CMAKE_EXTRA_INCLUDE_FILES "signal.h")
+check_type_size("sig_t" SIG_T LANGUAGE "CXX")
+check_type_size("sighandler_t" SIGHANDLER_T LANGUAGE "CXX")
+set(CMAKE_EXTRA_INCLUDE_FILES)
+if (NOT HAVE_SIGHANDLER_T)
+ if (HAVE_SIG_T)
+ add_definitions(-Dsighandler_t=sig_t)
+ else()
+ message(FATAL_ERROR "Platform defines neither sig_t nor sighandler_t")
+ endif()
+endif()
+
+# Handle resolving
+check_function_exists(res_init HAVE_LIBC_RESOLV)
+if(HAVE_LIBC_RESOLV)
+ set(RESOLV_LIBRARIES)
+else()
+ set(RESOLV_LIBRARIES -lresolv)
+endif()
+
+# Configure some variables like package, version and architecture.
+set(PACKAGE ${PROJECT_NAME})
+set(PACKAGE_MAIL "APT Development Team <deity@lists.debian.org>")
+set(PACKAGE_VERSION "1.4.6")
+
+if (NOT DEFINED DPKG_DATADIR)
+ execute_process(COMMAND ${PERL_EXECUTABLE} -MDpkg -e "print $Dpkg::DATADIR;"
+ OUTPUT_VARIABLE DPKG_DATADIR_CMD OUTPUT_STRIP_TRAILING_WHITESPACE)
+ message(STATUS "Found dpkg data dir: ${DPKG_DATADIR_CMD}")
+ set(DPKG_DATADIR "${DPKG_DATADIR_CMD}" CACHE PATH "dpkg data directory")
+endif()
+if (NOT DEFINED COMMON_ARCH)
+ execute_process(COMMAND dpkg-architecture -qDEB_HOST_ARCH
+ OUTPUT_VARIABLE COMMON_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
+endif()
+if (NOT DEFINED ROOT_GROUP)
+ execute_process(COMMAND id -gn root
+ OUTPUT_VARIABLE ROOT_GROUP OUTPUT_STRIP_TRAILING_WHITESPACE)
+ message(STATUS "Found root group: ${ROOT_GROUP}")
+endif()
+set(ROOT_GROUP "${ROOT_GROUP}" CACHE STRING "Group of root (e.g.: wheel or root)")
+
+# Set various directories
+set(STATE_DIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/lib/apt" CACHE PATH "Your /var/lib/apt")
+set(CACHE_DIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/cache/apt" CACHE PATH "Your /var/cache/apt")
+set(LOG_DIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/log/apt" CACHE PATH "Your /var/log/apt")
+set(CONF_DIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}/apt" CACHE PATH "Your /etc/apt")
+set(LIBEXEC_DIR "${CMAKE_INSTALL_FULL_LIBEXECDIR}/apt" CACHE PATH "Your /usr/libexec/apt")
+set(BIN_DIR "${CMAKE_INSTALL_FULL_BINDIR}")
+
+
+# Configure our configuration headers (config.h and apti18n.h)
+configure_file(CMake/config.h.in ${PROJECT_BINARY_DIR}/include/config.h)
+configure_file(CMake/apti18n.h.in ${PROJECT_BINARY_DIR}/include/apti18n.h)
+
+# Add our subdirectories
+add_subdirectory(vendor)
+add_subdirectory(apt-pkg)
+add_subdirectory(apt-private)
+add_subdirectory(apt-inst)
+add_subdirectory(cmdline)
+add_subdirectory(completions)
+add_subdirectory(doc)
+add_subdirectory(dselect)
+add_subdirectory(ftparchive)
+add_subdirectory(methods)
+add_subdirectory(test)
+
+if (USE_NLS)
+add_subdirectory(po)
+
+# Link update-po4a into the update-po target
+add_dependencies(update-po update-po4a)
+endif()
+
+# Create our directories.
+install_empty_directories(
+ ${CONF_DIR}/apt.conf.d
+ ${CONF_DIR}/preferences.d
+ ${CONF_DIR}/sources.list.d
+ ${CONF_DIR}/trusted.gpg.d
+ ${CACHE_DIR}/archives/partial
+ ${STATE_DIR}/lists/partial
+ ${STATE_DIR}/mirrors/partial
+ ${STATE_DIR}/periodic
+ ${LOG_DIR}
+)
diff --git a/COPYING b/COPYING
new file mode 100644
index 000000000..2f9ab10e8
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,22 @@
+Apt is copyright 1997, 1998, 1999 Jason Gunthorpe and others.
+Apt is currently developed by APT Development Team <deity@lists.debian.org>.
+
+License: GPLv2+
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+See /usr/share/common-licenses/GPL-2, or
+<http://www.gnu.org/copyleft/gpl.txt> for the terms of the latest version
+of the GNU General Public License.
diff --git a/COPYING.GPL b/COPYING.GPL
new file mode 100644
index 000000000..d159169d1
--- /dev/null
+++ b/COPYING.GPL
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public 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.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/README.SrvRecords b/README.SrvRecords
new file mode 100644
index 000000000..a3da64519
--- /dev/null
+++ b/README.SrvRecords
@@ -0,0 +1,22 @@
+DNS SRV record support in apt
+=============================
+
+Apt supports a subset of the DNS SRV server records protocol as
+described in RFC 2782 for service discovery.
+
+Before connecting to the requested server APT will send a SRV
+record request of the form "_$protocol._tcp._$host", e.g.
+"_http._tcp.ftp.debian.org" or "_http._tcp.security.debian.org".
+
+If the server sends SRV records
+as a reply APT will use those to connect to the server(s) in
+this reply. It will honor the "priority" field in the reply.
+
+However it does not implement the "weight" algorithm as described
+in RFC 2782. It will use an equal weight for each server of the
+same priority.
+
+If connecting to a server fails APT will retry with the next one
+and remove the server from the list of valid servers for this
+session.
+
diff --git a/README.md b/README.md
index d6f6e7fc3..5c8fb1ad0 100644
--- a/README.md
+++ b/README.md
@@ -1,58 +1,200 @@
-# Order-preserving minimal perfect hash function generator
-
-Build order-preserving minimal perfect hash functions.
-
-[![codecov](https://codecov.io/gh/julian-klode/triehash/branch/master/graph/badge.svg)](https://codecov.io/gh/julian-klode/triehash)
-[![Build Status](https://travis-ci.org/julian-klode/triehash.svg?branch=master)](https://travis-ci.org/julian-klode/triehash)
-
-## Performance
-
-Performance was evaluated against other hash functions. As an input set, the
-fields of Debian Packages and Sources files was used, and each hash function
-was run 1,000,000 times for each word. The byte count of the words were then
-summed up and divided by the total number of nanoseconds each function ran, so
-all speeds below are given in bytes per nanosecond, AKA gigabyte per second.
-
-arch/function|jak-x230 (amd64)|backup (amd64)|asachi.d.o (arm64)|asachi.d.o (armel)|asachi.d.o (armhf)|plummer.d.o (ppc64el)|eller.d.o (mipsel)
--------------|----------------|--------------|------------------|------------------|------------------|---------------------|------------------
-Trie | 2.4 | 1.9 | 1.2 | 0.9 | 0.8 | 2.0 | 0.2
-Trie (*) | 2.2 | 1.7 | 0.8 | 0.7 | 0.7 | 1.8 | 0.2
-re2c | 1.7 | 1.3 | 0.9 | 0.9 | 0.7 | 1.6 | 0.2
-re2c (*) | 1.2 | 0.9 | 0.6 | 0.6 | 0.5 | 1.1 | 0.1
-gperf (*) | 0.7 | 0.5 | 0.2 | 0.2 | 0.2 | 0.5 | 0.1
-gperf | 1.3 | 0.9 | 0.3 | 0.3 | 0.2 | 0.4 | 0.1
-djb (*) | 0.7 | 0.5 | 0.3 | 0.3 | 0.3 | 0.5 | 0.1
-djb (**) | 1.0 | 0.7 | 0.4 | 0.5 | 0.5 | 0.6 | 0.2
-djb | 0.9 | 0.7 | 0.5 | 0.5 | 0.5 | 0.7 | 0.2
-apt (*) | 1.2 | 0.9 | 0.7 | 0.7 | 0.7 | 1.1 | 0.2
-apt (**) | 2.3 | 1.7 | 0.7 | 0.9 | 0.8 | 1.9 | 0.2
-
-And transposed:
-
-function/arch |Trie |Trie (*) |re2c |re2c (*) |gperf (*)|gperf |djb (*) |djb (**) |djb |apt (*) |apt (**)
----------------------|---------|---------|---------|---------|---------|---------|---------|---------|---------|---------|---------
-jak-x230 (amd64) | 2.4| 2.2| 1.7| 1.2| 0.7| 1.3| 0.7| 1.0| 0.9| 1.2| 2.3
-backup (amd64) | 1.9| 1.7| 1.3| 0.9| 0.5| 0.9| 0.5| 0.7| 0.7| 0.9| 1.7
-asachi.d.o (arm64) | 1.2| 0.8| 0.9| 0.6| 0.2| 0.3| 0.3| 0.4| 0.5| 0.7| 0.7
-asachi.d.o (armel) | 0.9| 0.7| 0.9| 0.6| 0.2| 0.3| 0.3| 0.5| 0.5| 0.7| 0.9
-asachi.d.o (armhf) | 0.8| 0.7| 0.7| 0.5| 0.2| 0.2| 0.3| 0.5| 0.5| 0.7| 0.8
-plummer.d.o (ppc64el)| 2.0| 1.8| 1.6| 1.1| 0.5| 0.4| 0.5| 0.6| 0.7| 1.1| 1.9
-eller.d.o (mipsel) | 0.2| 0.2| 0.2| 0.1| 0.1| 0.1| 0.1| 0.2| 0.2| 0.2| 0.2
-
-
-Legend:
-
-* The (*) variants are case-insensitive, (**) are more optimised versions
- of the (*) versions.
-* DJB (*) is a DJB Hash with naive lowercase conversion, DJB (**) just ORs one
- bit into each value to get alphabetical characters to be lowercase
-* APT (*) is the AlphaHash function from APT which hashes the last 8 bytes in a
- word in a case-insensitive manner. APT (**) is the same function unrolled.
-* All hosts except the x230 are Debian porterboxes. The x230 has a Core i5-3320M,
- barriere has an Opteron 23xx.
-
-Notes:
-
-* The overhead is larger than needed on some platforms due to gcc inserting
- unneeded zero extend instructions, see:
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77729
+APT
+===
+
+apt is the main commandline package manager for Debian and its derivatives.
+It provides commandline tools for searching and managing as well as querying
+information about packages as well as low-level access to all features
+provided by the libapt-pkg and libapt-inst libraries which higher-level
+package managers can depend upon.
+
+Included tools are:
+
+* apt-get for retrieval of packages and information about them
+ from authenticated sources and for installation, upgrade and
+ removal of packages together with their dependencies
+* apt-cache for querying available information about installed
+ as well as installable packages
+* apt-cdrom to use removable media as a source for packages
+* apt-config as an interface to the configuration settings
+* apt-key as an interface to manage authentication keys
+* apt-extracttemplates to be used by debconf to prompt for configuration
+ questions before installation.
+* apt-ftparchive creates Packages and other index files
+ needed to publish an archive of debian packages
+* apt-sortpkgs is a Packages/Sources file normalizer.
+
+The libraries libapt-pkg and libapt-inst are also maintained as part of this project,
+alongside various additional binaries like the acquire-methods used by them.
+Bindings for Python ([python-apt](https://tracker.debian.org/pkg/python-apt)) and
+Perl ([libapt-pkg-perl](https://tracker.debian.org/pkg/libapt-pkg-perl)) are available as separated projects.
+
+Discussion happens mostly on [the mailinglist](mailto:deity@lists.debian.org) ([archive](https://lists.debian.org/deity/)) and on [IRC](irc://irc.oftc.net/debian-apt).
+Our bugtracker as well as a general overview can be found at the [Debian Tracker page](https://tracker.debian.org/pkg/apt).
+
+
+Contributing
+------------
+APT is maintained in git, the official repository being located at
+`git://anonscm.debian.org/apt/apt.git` ([webgit](https://anonscm.debian.org/git/apt/apt.git)),
+but also available at other locations like [GitHub](https://github.com/Debian/apt).
+
+The default branch is `master`, other branches targeted at different
+derivatives and releases being used as needed. Various topic branches in
+different stages of completion might be branched of from those, which you
+are encouraged to do as well.
+
+### Coding
+
+APT uses cmake. To start building, you need to run
+
+ cmake <path to source directory>
+
+from a build directory. For example, if you want to build in the source tree,
+run:
+
+ cmake .
+
+Then you can use make as you normally would (pass -j <count> to perform <count>
+jobs in parallel).
+
+You can also use the Ninja generator of cmake, to do that pass
+ -G Ninja
+to the cmake invocation, and then use ninja instead of make.
+
+The source code uses in most parts a relatively uncommon indent convention,
+namely 3 spaces with 8 space tab (see [doc/style.txt](https://anonscm.debian.org/git/apt/apt.git/tree/doc/style.txt) for more on this).
+Adhering to it avoids unnecessary code-churn destroying history (aka: `git blame`)
+and you are therefore encouraged to write patches in this style.
+Your editor can surely help you with this, for vim the settings would be
+`setlocal shiftwidth=3 noexpandtab tabstop=8`
+(the later two are the default configuration and could therefore be omitted).
+
+### Translations
+
+While we welcome contributions here, we highly encourage you to contact the [Debian Internationalization (i18n) team](https://wiki.debian.org/Teams/I18n).
+Various language teams have formed which can help you creating, maintaining
+and improving a translation, while we could only do a basic syntax check of the
+file format…
+
+Further more, Translating APT is split into two independent parts:
+The program translation, meaning the messages printed by the tools,
+as well as the manpages and other documentation shipped with APT.
+
+### Bug triage
+
+Software tools like APT which are used by thousands of users every
+day have a steady flow of incoming bugreports. Not all of them are really
+bugs in APT: It can be packaging bugs like failing maintainer scripts a
+user reports against apt, because apt was the command he executed leading
+to this failure or various wishlist items for new features. Given enough time
+also the occasional duplicate enters the system.
+Our bugtracker is therefore full with open bugreports which are waiting for you! ;)
+
+Testing
+-------
+
+### Manual execution
+
+When you make changes and want to run them manually, you can just do so. CMake
+automatically inserts an rpath so the binaries find the correct libraries.
+
+Note that you have to invoke CMake with the right install prefix set (e.g.
+`-DCMAKE_INSTALL_PREFIX=/usr`) to have your build find and use the right files
+by default or alternatively set the locations at runtime via an `APT_CONFIG`
+configuration file.
+
+### Integration tests
+
+There is an extensive integration testsuite available which can be run via:
+
+ $ ./test/integration/run-tests
+
+Each test can also be run individually as well. The tests are very noisy by
+default, especially so while running all of them it might be beneficial to
+enabling quiet (`-q`) or very quiet (`-qq`) mode. The tests can also be run in
+parallel via `-j X` where `X` is the number of jobs to run.
+
+While these tests are not executed at package build-time as they require
+additional dependencies, the repository contains the configuration needed to
+run them on [Travis CI](https://travis-ci.org/) and
+[Shippable](https://shippable.com/) as well as via autopkgtests e.g. on
+[Debian Continuous Integration](https://ci.debian.net/packages/a/apt/).
+
+A testcase here is a shellscript embedded in a framework creating an environment in which
+apt tools can be used naturally without root-rights to test every aspect of its behavior
+itself as well as in conjunction with dpkg and other tools while working with packages.
+
+
+### Unit tests
+
+These tests are gtest-dev based, executed by ctest, reside in `./test/libapt`
+and can be run with `make test`. They are executed at package build-time, but
+not by `make`. CTest by default does not show the output of tests, even if they
+failed, so to see more details you can also run them with `ctest --verbose`.
+
+Debugging
+---------
+
+APT does many things, so there is no central debug mode which could be
+activated. It uses instead various config-options to activate debug output
+in certain areas. The following describes some common scenarios and generally
+useful options, but is in no way exhaustive.
+
+Note that you should *NEVER* use these settings as root to avoid accidents.
+Simulation mode (`-s`) is usually sufficient to help you run apt as a non-root user.
+
+### Using different state files
+
+If a dependency solver bug is reported, but can't be reproduced by the
+triager easily, it is beneficial to ask the reporter for the
+`/var/lib/dpkg/status` file, which includes the packages installed on the
+system and in which version. Such a file can then be used via the option
+`dir::state::status`. Beware of different architecture settings!
+Bugreports usually include this information in the template. Assuming you
+already have the `Packages` files for the architecture (see `sources.list`
+manpage for the `arch=` option) you can change to a different architecture
+with a config file like:
+
+ APT::Architecture "arch1";
+ #clear APT::Architectures;
+ APT:: Architectures { "arch1"; "arch2"; }
+
+If a certain mirror state is needed, see if you can reproduce it with [snapshot.debian.org](http://snapshot.debian.org/).
+Your sources.list file (`dir::etc::sourcelist`) has to be correctly mention the repository,
+but if it does, you can use different downloaded archive state files via `dir::state::lists`.
+
+In case manually vs. automatically installed matters, you can ask the reporter for
+the `/var/lib/apt/extended_states` file and use it with `dir::state::extended_states`.
+
+### Dependency resolution
+
+APT works in its internal resolver in two stages: First all packages are visited
+and marked for installation, keep back or removal. Option `Debug::pkgDepCache::Marker`
+shows this. This also decides which packages are to be installed to satisfy dependencies,
+which can be seen by `Debug::pkgDepCache::AutoInstall`. After this is done, we might
+be in a situation in which two packages want to be installed, but only on of them can be.
+It is the job of the pkgProblemResolver to decide which of two packages 'wins' and can
+therefore decide what has to happen. You can see the contenders as well as their fight and
+the resulting resolution with `Debug::pkgProblemResolver`.
+
+### Downloading files
+
+Various binaries (called 'methods') are tasked with downloading files. The Acquire system
+talks to them via simple text protocol. Depending on which side you want to see, either
+`Debug::pkgAcquire::Worker` or `Debug::Acquire::http` (or similar) will show the messages.
+
+The integration tests use a simple self-built webserver which also logs. If you find that
+the http(s) methods do not behave like they should be try to implement this behavior in the
+webserver for simpler and more controlled testing.
+
+### Installation order
+
+Dependencies are solved, packages downloaded: Everything read for the installation!
+The last step in the chain is often forgotten, but still very important:
+Packages have to be installed in a particular order so that their dependencies are
+satisfied, but at the same time you don't want to install very important and optional
+packages at the same time if possible, so that a broken optional package does not
+block the correct installation of very important packages. Which option to use depends on
+if you are interested in the topology sorting (`Debug::pkgOrderList`), the dependency-aware
+cycle and unconfigured prevention (`Debug::pkgPackageManager`) or the actual calls
+to dpkg (`Debug::pkgDpkgPm`).
diff --git a/README.progress-reporting b/README.progress-reporting
new file mode 100644
index 000000000..134ed5334
--- /dev/null
+++ b/README.progress-reporting
@@ -0,0 +1,69 @@
+Install-progress reporting
+--------------------------
+
+If the apt options: "APT::Status-Fd" is set, apt will send status
+reports to that fd. The status information is separated with a ':',
+there are the following status conditions:
+
+status = {"pmstatus", "dlstatus", "conffile-prompt", "error", "media-change" }
+
+The reason for using a fd instead of a OpProgress class is that many
+apt front-end fork a (vte) terminal for the actual installation.
+
+The reason to do the mapping and l10n of the dpkg states to human
+readable (and translatable) strings is that this way the translation
+needs to be done only once for all front-ends.
+
+
+pmstatus
+--------
+Status of the package manager (dpkg). This is send when packages
+are installed/removed.
+pmstatus:pkgname:TotalPercentage:action-description
+
+PkgName = the name of the package
+TotalPercentage = the total progress between [0..100]
+description = a i18ned human readable description of the current action
+
+
+Example:
+# ./apt-get install -o APT::Status-Fd=2 3dchess >/dev/null
+pmstatus:3dchess:20:Preparing 3dchess
+pmstatus:3dchess:40:Unpacking 3dchess
+pmstatus:3dchess:60:Preparing to configure 3dchess
+pmstatus:3dchess:80:Configuring 3dchess
+pmstatus:3dchess:100:Installed 3dchess
+
+pmerror
+-------
+pmerror:deb:TotalPercentage:error string
+
+Example:
+pmerror: /var/cache/apt/archives/krecipes_0.8.1-0ubuntu1_i386.deb : 75% : trying to overwrite `/usr/share/doc/kde/HTML/en/krecipes/krectip.png', which is also in package krecipes-data
+
+
+pmconffile
+----------
+pmconffile:conffile:percent:'current-conffile' 'new-conffile' useredited distedited
+
+
+media-change
+------------
+media-change:medium:drive:human-readable string
+
+example:
+media-change: Ubuntu 5.10 _Breezy Badger_ - Alpha i386 (20050830):/cdrom/:Please insert the disc labeled: 'Ubuntu 5.10 _Breezy Badger_ - Alpha i386 (20050830)' in the drive '/cdrom/' and press enter.
+
+
+dlstatus
+--------
+dlstatus:AlreadDownloaded:TotalPercentage:action-description
+
+AlreadyDownloaded = the number of already downloaded packages
+TotalPercentage = the total progress between [0..100]
+description = a i18ned human readable description of the current action
+
+Example:
+dlstatus:1:9.05654:Downloading file 1 of 3 (4m40s remaining)
+dlstatus:1:9.46357:Downloading file 1 of 3 (4m39s remaining)
+dlstatus:1:9.61022:Downloading file 1 of 3 (4m38s remaining)
diff --git a/abicheck/apt_build.xml.in b/abicheck/apt_build.xml.in
new file mode 100644
index 000000000..32886d931
--- /dev/null
+++ b/abicheck/apt_build.xml.in
@@ -0,0 +1,12 @@
+<version>
+ build-branch
+</version>
+
+ <headers>
+ @build_path@/include/apt-pkg
+ </headers>
+
+ <libs>
+ @build_path@/apt-pkg/
+ @build_path@/apt-inst/
+ </libs>
diff --git a/abicheck/apt_installed.xml.in b/abicheck/apt_installed.xml.in
new file mode 100644
index 000000000..c3ddd0838
--- /dev/null
+++ b/abicheck/apt_installed.xml.in
@@ -0,0 +1,11 @@
+<version>
+ installed
+</version>
+
+<headers>
+ /usr/include/apt-pkg/
+</headers>
+
+<libs>
+ @installed_libapt@
+</libs>
diff --git a/abicheck/run_abi_test b/abicheck/run_abi_test
new file mode 100755
index 000000000..491616b30
--- /dev/null
+++ b/abicheck/run_abi_test
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# ensure we are in the abibreak subdirectory
+cd "$(readlink -f $(dirname $0))"
+
+if [ ! -d ../build ]; then
+ echo "../build missing, did you run make?"
+ exit 1
+fi
+
+if ! command -v abi-compliance-checker 2>/dev/null >&2; then
+ echo "Please install the 'abi-compliance-checker' package"
+ exit 1
+fi
+
+LIBPATH=$(find /usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH) -type f -regex '.*/libapt-\(pkg\|inst\)\.so\..*' -printf %p\\\\n)
+sed s#@installed_libapt@#$LIBPATH# apt_installed.xml.in > apt_installed.xml
+
+BUILDPATH=$(readlink -f ../build)
+sed s#@build_path@#$BUILDPATH# apt_build.xml.in > apt_build.xml
+
+abi-compliance-checker -l apt -d1 apt_installed.xml -d2 apt_build.xml $@
diff --git a/apt-inst/CMakeLists.txt b/apt-inst/CMakeLists.txt
new file mode 100644
index 000000000..31da115e4
--- /dev/null
+++ b/apt-inst/CMakeLists.txt
@@ -0,0 +1,28 @@
+# Include apt-pkg directly, as some files have #include <system.h>
+include_directories(${PROJECT_BINARY_DIR}/include/apt-pkg)
+
+# Set the version of the library
+set(MAJOR 2.0)
+set(MINOR 0)
+set(APT_INST_MAJOR ${MAJOR} PARENT_SCOPE)
+
+# Definition of the C++ files used to build the library - note that this
+# is expanded at CMake time, so you have to rerun cmake if you add or remove
+# a file (you can just run cmake . in the build directory)
+file(GLOB_RECURSE library "*.cc")
+file(GLOB_RECURSE headers "*.h")
+
+# Create a library using the C++ files
+add_library(apt-inst SHARED ${library})
+
+# Link the library and set the SONAME
+target_link_libraries(apt-inst PUBLIC apt-pkg ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(apt-inst PRIVATE ${CMAKE_THREAD_LIBS_INIT})
+set_target_properties(apt-inst PROPERTIES VERSION ${MAJOR}.${MINOR})
+set_target_properties(apt-inst PROPERTIES SOVERSION ${MAJOR})
+add_version_script(apt-inst)
+
+# Install the library and the headers
+install(TARGETS apt-inst LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+install(FILES ${headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/apt-pkg)
+flatify(${PROJECT_BINARY_DIR}/include/apt-pkg/ "${headers}")
diff --git a/apt-inst/contrib/arfile.cc b/apt-inst/contrib/arfile.cc
new file mode 100644
index 000000000..905110781
--- /dev/null
+++ b/apt-inst/contrib/arfile.cc
@@ -0,0 +1,161 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: arfile.cc,v 1.6.2.1 2004/01/16 18:58:50 mdz Exp $
+/* ######################################################################
+
+ AR File - Handle an 'AR' archive
+
+ AR Archives have plain text headers at the start of each file
+ section. The headers are aligned on a 2 byte boundary.
+
+ Information about the structure of AR files can be found in ar(5)
+ on a BSD system, or in the binutils source.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/arfile.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/error.h>
+
+#include <string.h>
+#include <sys/types.h>
+#include <string>
+
+#include <apti18n.h>
+ /*}}}*/
+
+struct ARArchive::MemberHeader
+{
+ char Name[16];
+ char MTime[12];
+ char UID[6];
+ char GID[6];
+ char Mode[8];
+ char Size[10];
+ char Magic[2];
+};
+
+// ARArchive::ARArchive - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+ARArchive::ARArchive(FileFd &File) : List(0), File(File)
+{
+ LoadHeaders();
+}
+ /*}}}*/
+// ARArchive::~ARArchive - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+ARArchive::~ARArchive()
+{
+ while (List != 0)
+ {
+ Member *Tmp = List;
+ List = List->Next;
+ delete Tmp;
+ }
+}
+ /*}}}*/
+// ARArchive::LoadHeaders - Load the headers from each file /*{{{*/
+// ---------------------------------------------------------------------
+/* AR files are structured with a 8 byte magic string followed by a 60
+ byte plain text header then the file data, another header, data, etc */
+bool ARArchive::LoadHeaders()
+{
+ off_t Left = File.Size();
+
+ // Check the magic byte
+ char Magic[8];
+ if (File.Read(Magic,sizeof(Magic)) == false)
+ return false;
+ if (memcmp(Magic,"!<arch>\012",sizeof(Magic)) != 0)
+ return _error->Error(_("Invalid archive signature"));
+ Left -= sizeof(Magic);
+
+ // Read the member list
+ while (Left > 0)
+ {
+ MemberHeader Head;
+ if (File.Read(&Head,sizeof(Head)) == false)
+ return _error->Error(_("Error reading archive member header"));
+ Left -= sizeof(Head);
+
+ // Convert all of the integer members
+ Member *Memb = new Member();
+ if (StrToNum(Head.MTime,Memb->MTime,sizeof(Head.MTime)) == false ||
+ StrToNum(Head.UID,Memb->UID,sizeof(Head.UID)) == false ||
+ StrToNum(Head.GID,Memb->GID,sizeof(Head.GID)) == false ||
+ StrToNum(Head.Mode,Memb->Mode,sizeof(Head.Mode),8) == false ||
+ StrToNum(Head.Size,Memb->Size,sizeof(Head.Size)) == false)
+ {
+ delete Memb;
+ return _error->Error(_("Invalid archive member header %s"), Head.Name);
+ }
+
+ // Check for an extra long name string
+ if (memcmp(Head.Name,"#1/",3) == 0)
+ {
+ char S[300];
+ unsigned long Len;
+ if (StrToNum(Head.Name+3,Len,sizeof(Head.Size)-3) == false ||
+ Len >= sizeof(S))
+ {
+ delete Memb;
+ return _error->Error(_("Invalid archive member header"));
+ }
+ if (File.Read(S,Len) == false)
+ {
+ delete Memb;
+ return false;
+ }
+ S[Len] = 0;
+ Memb->Name = S;
+ Memb->Size -= Len;
+ Left -= Len;
+ }
+ else
+ {
+ unsigned int I = sizeof(Head.Name) - 1;
+ for (; Head.Name[I] == ' ' || Head.Name[I] == '/'; I--);
+ Memb->Name = std::string(Head.Name,I+1);
+ }
+
+ // Account for the AR header alignment
+ off_t Skip = Memb->Size % 2;
+
+ // Add it to the list
+ Memb->Next = List;
+ List = Memb;
+ Memb->Start = File.Tell();
+ if (File.Skip(Memb->Size + Skip) == false)
+ return false;
+ if (Left < (off_t)(Memb->Size + Skip))
+ return _error->Error(_("Archive is too short"));
+ Left -= Memb->Size + Skip;
+ }
+ if (Left != 0)
+ return _error->Error(_("Failed to read the archive headers"));
+
+ return true;
+}
+ /*}}}*/
+// ARArchive::FindMember - Find a name in the member list /*{{{*/
+// ---------------------------------------------------------------------
+/* Find a member with the given name */
+const ARArchive::Member *ARArchive::FindMember(const char *Name) const
+{
+ const Member *Res = List;
+ while (Res != 0)
+ {
+ if (Res->Name == Name)
+ return Res;
+ Res = Res->Next;
+ }
+
+ return 0;
+}
+ /*}}}*/
diff --git a/apt-inst/contrib/arfile.h b/apt-inst/contrib/arfile.h
new file mode 100644
index 000000000..297303a9d
--- /dev/null
+++ b/apt-inst/contrib/arfile.h
@@ -0,0 +1,71 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: arfile.h,v 1.2 2001/02/20 07:03:16 jgg Exp $
+/* ######################################################################
+
+ AR File - Handle an 'AR' archive
+
+ This is a reader for the usual 4.4 BSD AR format. It allows raw
+ stream access to a single member at a time. Basically all this class
+ provides is header parsing and verification. It is up to the client
+ to correctly make use of the stream start/stop points.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_ARFILE_H
+#define PKGLIB_ARFILE_H
+
+
+#include <string>
+#include <apt-pkg/macros.h>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/fileutl.h>
+#endif
+
+class FileFd;
+
+class ARArchive
+{
+ struct MemberHeader;
+ public:
+ struct Member;
+
+ protected:
+
+ // Linked list of members
+ Member *List;
+
+ bool LoadHeaders();
+
+ public:
+
+ // The stream file
+ FileFd &File;
+
+ // Locate a member by name
+ const Member *FindMember(const char *Name) const;
+ inline Member *Members() { return List; }
+
+ ARArchive(FileFd &File);
+ ~ARArchive();
+};
+
+// A member of the archive
+struct ARArchive::Member
+{
+ // Fields from the header
+ std::string Name;
+ unsigned long MTime;
+ unsigned long UID;
+ unsigned long GID;
+ unsigned long Mode;
+ unsigned long long Size;
+
+ // Location of the data.
+ unsigned long long Start;
+ Member *Next;
+
+ Member() : Start(0), Next(0) {};
+};
+
+#endif
diff --git a/apt-inst/contrib/extracttar.cc b/apt-inst/contrib/extracttar.cc
new file mode 100644
index 000000000..60360053e
--- /dev/null
+++ b/apt-inst/contrib/extracttar.cc
@@ -0,0 +1,311 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: extracttar.cc,v 1.8.2.1 2004/01/16 18:58:50 mdz Exp $
+/* ######################################################################
+
+ Extract a Tar - Tar Extractor
+
+ Some performance measurements showed that zlib performed quite poorly
+ in comparison to a forked gzip process. This tar extractor makes use
+ of the fact that dup'd file descriptors have the same seek pointer
+ and that gzip will not read past the end of a compressed stream,
+ even if there is more data. We use the dup property to track extraction
+ progress and the gzip feature to just feed gzip a fd in the middle
+ of an AR file.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/dirstream.h>
+#include <apt-pkg/extracttar.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/fileutl.h>
+
+#include <string.h>
+#include <algorithm>
+#include <string>
+#include <unistd.h>
+#include <signal.h>
+#include <fcntl.h>
+#include <iostream>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+// The on disk header for a tar file.
+struct ExtractTar::TarHeader
+{
+ char Name[100];
+ char Mode[8];
+ char UserID[8];
+ char GroupID[8];
+ char Size[12];
+ char MTime[12];
+ char Checksum[8];
+ char LinkFlag;
+ char LinkName[100];
+ char MagicNumber[8];
+ char UserName[32];
+ char GroupName[32];
+ char Major[8];
+ char Minor[8];
+};
+
+// ExtractTar::ExtractTar - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+ExtractTar::ExtractTar(FileFd &Fd,unsigned long long Max,string DecompressionProgram)
+ : File(Fd), MaxInSize(Max), DecompressProg(DecompressionProgram)
+{
+ GZPid = -1;
+ Eof = false;
+}
+ /*}}}*/
+// ExtractTar::ExtractTar - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+ExtractTar::~ExtractTar()
+{
+ // Error close
+ Done();
+}
+ /*}}}*/
+// ExtractTar::Done - Reap the gzip sub process /*{{{*/
+bool ExtractTar::Done(bool)
+{
+ return Done();
+}
+bool ExtractTar::Done()
+{
+ return InFd.Close();
+}
+ /*}}}*/
+// ExtractTar::StartGzip - Startup gzip /*{{{*/
+// ---------------------------------------------------------------------
+/* This creates a gzip sub process that has its input as the file itself.
+ If this tar file is embedded into something like an ar file then
+ gzip will efficiently ignore the extra bits. */
+bool ExtractTar::StartGzip()
+{
+ if (DecompressProg.empty())
+ {
+ InFd.OpenDescriptor(File.Fd(), FileFd::ReadOnly, FileFd::None, false);
+ return true;
+ }
+
+ std::vector<APT::Configuration::Compressor> const compressors = APT::Configuration::getCompressors();
+ std::vector<APT::Configuration::Compressor>::const_iterator compressor = compressors.begin();
+ for (; compressor != compressors.end(); ++compressor) {
+ if (compressor->Name == DecompressProg) {
+ return InFd.OpenDescriptor(File.Fd(), FileFd::ReadOnly, *compressor, false);
+ }
+ }
+
+ return _error->Error(_("Cannot find a configured compressor for '%s'"),
+ DecompressProg.c_str());
+
+}
+ /*}}}*/
+// ExtractTar::Go - Perform extraction /*{{{*/
+// ---------------------------------------------------------------------
+/* This reads each 512 byte block from the archive and extracts the header
+ information into the Item structure. Then it resolves the UID/GID and
+ invokes the correct processing function. */
+bool ExtractTar::Go(pkgDirStream &Stream)
+{
+ if (StartGzip() == false)
+ return false;
+
+ // Loop over all blocks
+ string LastLongLink, ItemLink;
+ string LastLongName, ItemName;
+ while (1)
+ {
+ bool BadRecord = false;
+ unsigned char Block[512];
+ if (InFd.Read(Block,sizeof(Block),true) == false)
+ return false;
+
+ if (InFd.Eof() == true)
+ break;
+
+ // Get the checksum
+ TarHeader *Tar = (TarHeader *)Block;
+ unsigned long CheckSum;
+ if (StrToNum(Tar->Checksum,CheckSum,sizeof(Tar->Checksum),8) == false)
+ return _error->Error(_("Corrupted archive"));
+
+ /* Compute the checksum field. The actual checksum is blanked out
+ with spaces so it is not included in the computation */
+ unsigned long NewSum = 0;
+ memset(Tar->Checksum,' ',sizeof(Tar->Checksum));
+ for (int I = 0; I != sizeof(Block); I++)
+ NewSum += Block[I];
+
+ /* Check for a block of nulls - in this case we kill gzip, GNU tar
+ does this.. */
+ if (NewSum == ' '*sizeof(Tar->Checksum))
+ return Done();
+
+ if (NewSum != CheckSum)
+ return _error->Error(_("Tar checksum failed, archive corrupted"));
+
+ // Decode all of the fields
+ pkgDirStream::Item Itm;
+ if (StrToNum(Tar->Mode,Itm.Mode,sizeof(Tar->Mode),8) == false ||
+ (Base256ToNum(Tar->UserID,Itm.UID,8) == false &&
+ StrToNum(Tar->UserID,Itm.UID,sizeof(Tar->UserID),8) == false) ||
+ (Base256ToNum(Tar->GroupID,Itm.GID,8) == false &&
+ StrToNum(Tar->GroupID,Itm.GID,sizeof(Tar->GroupID),8) == false) ||
+ (Base256ToNum(Tar->Size,Itm.Size,12) == false &&
+ StrToNum(Tar->Size,Itm.Size,sizeof(Tar->Size),8) == false) ||
+ (Base256ToNum(Tar->MTime,Itm.MTime,12) == false &&
+ StrToNum(Tar->MTime,Itm.MTime,sizeof(Tar->MTime),8) == false) ||
+ StrToNum(Tar->Major,Itm.Major,sizeof(Tar->Major),8) == false ||
+ StrToNum(Tar->Minor,Itm.Minor,sizeof(Tar->Minor),8) == false)
+ return _error->Error(_("Corrupted archive"));
+
+ // Grab the filename and link target: use last long name if one was
+ // set, otherwise use the header value as-is, but remember that it may
+ // fill the entire 100-byte block and needs to be zero-terminated.
+ // See Debian Bug #689582.
+ if (LastLongName.empty() == false)
+ Itm.Name = (char *)LastLongName.c_str();
+ else
+ Itm.Name = (char *)ItemName.assign(Tar->Name, sizeof(Tar->Name)).c_str();
+ if (Itm.Name[0] == '.' && Itm.Name[1] == '/' && Itm.Name[2] != 0)
+ Itm.Name += 2;
+
+ if (LastLongLink.empty() == false)
+ Itm.LinkTarget = (char *)LastLongLink.c_str();
+ else
+ Itm.LinkTarget = (char *)ItemLink.assign(Tar->LinkName, sizeof(Tar->LinkName)).c_str();
+
+ // Convert the type over
+ switch (Tar->LinkFlag)
+ {
+ case NormalFile0:
+ case NormalFile:
+ Itm.Type = pkgDirStream::Item::File;
+ break;
+
+ case HardLink:
+ Itm.Type = pkgDirStream::Item::HardLink;
+ break;
+
+ case SymbolicLink:
+ Itm.Type = pkgDirStream::Item::SymbolicLink;
+ break;
+
+ case CharacterDevice:
+ Itm.Type = pkgDirStream::Item::CharDevice;
+ break;
+
+ case BlockDevice:
+ Itm.Type = pkgDirStream::Item::BlockDevice;
+ break;
+
+ case Directory:
+ Itm.Type = pkgDirStream::Item::Directory;
+ break;
+
+ case FIFO:
+ Itm.Type = pkgDirStream::Item::FIFO;
+ break;
+
+ case GNU_LongLink:
+ {
+ unsigned long long Length = Itm.Size;
+ unsigned char Block[512];
+ while (Length > 0)
+ {
+ if (InFd.Read(Block,sizeof(Block),true) == false)
+ return false;
+ if (Length <= sizeof(Block))
+ {
+ LastLongLink.append(Block,Block+sizeof(Block));
+ break;
+ }
+ LastLongLink.append(Block,Block+sizeof(Block));
+ Length -= sizeof(Block);
+ }
+ continue;
+ }
+
+ case GNU_LongName:
+ {
+ unsigned long long Length = Itm.Size;
+ unsigned char Block[512];
+ while (Length > 0)
+ {
+ if (InFd.Read(Block,sizeof(Block),true) == false)
+ return false;
+ if (Length < sizeof(Block))
+ {
+ LastLongName.append(Block,Block+sizeof(Block));
+ break;
+ }
+ LastLongName.append(Block,Block+sizeof(Block));
+ Length -= sizeof(Block);
+ }
+ continue;
+ }
+
+ default:
+ BadRecord = true;
+ _error->Warning(_("Unknown TAR header type %u, member %s"),(unsigned)Tar->LinkFlag,Tar->Name);
+ break;
+ }
+
+ int Fd = -1;
+ if (BadRecord == false)
+ if (Stream.DoItem(Itm,Fd) == false)
+ return false;
+
+ // Copy the file over the FD
+ unsigned long long Size = Itm.Size;
+ while (Size != 0)
+ {
+ unsigned char Junk[32*1024];
+ unsigned long Read = min(Size, (unsigned long long)sizeof(Junk));
+ if (InFd.Read(Junk,((Read+511)/512)*512) == false)
+ return false;
+
+ if (BadRecord == false)
+ {
+ if (Fd > 0)
+ {
+ if (write(Fd,Junk,Read) != (signed)Read)
+ return Stream.Fail(Itm,Fd);
+ }
+ else
+ {
+ /* An Fd of -2 means to send to a special processing
+ function */
+ if (Fd == -2)
+ if (Stream.Process(Itm,Junk,Read,Itm.Size - Size) == false)
+ return Stream.Fail(Itm,Fd);
+ }
+ }
+
+ Size -= Read;
+ }
+
+ // And finish up
+ if (BadRecord == false)
+ if (Stream.FinishedFile(Itm,Fd) == false)
+ return false;
+
+ LastLongName.erase();
+ LastLongLink.erase();
+ }
+
+ return Done();
+}
+ /*}}}*/
diff --git a/apt-inst/contrib/extracttar.h b/apt-inst/contrib/extracttar.h
new file mode 100644
index 000000000..edd3cec8e
--- /dev/null
+++ b/apt-inst/contrib/extracttar.h
@@ -0,0 +1,62 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: extracttar.h,v 1.2 2001/02/20 07:03:17 jgg Exp $
+/* ######################################################################
+
+ Extract a Tar - Tar Extractor
+
+ The tar extractor takes an ordinary gzip compressed tar stream from
+ the given file and explodes it, passing the individual items to the
+ given Directory Stream for processing.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_EXTRACTTAR_H
+#define PKGLIB_EXTRACTTAR_H
+
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/macros.h>
+
+#include <string>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/dirstream.h>
+#include <algorithm>
+using std::min;
+#endif
+
+class pkgDirStream;
+
+class ExtractTar
+{
+ protected:
+
+ struct TarHeader;
+
+ // The varios types items can be
+ enum ItemType {NormalFile0 = '\0',NormalFile = '0',HardLink = '1',
+ SymbolicLink = '2',CharacterDevice = '3',
+ BlockDevice = '4',Directory = '5',FIFO = '6',
+ GNU_LongLink = 'K',GNU_LongName = 'L'};
+
+ FileFd &File;
+ unsigned long long MaxInSize;
+ int GZPid;
+ FileFd InFd;
+ bool Eof;
+ std::string DecompressProg;
+
+ // Fork and reap gzip
+ bool StartGzip();
+ bool Done();
+ APT_DEPRECATED_MSG("Parameter Force is ignored, use Done() instead.") bool Done(bool Force);
+
+ public:
+
+ bool Go(pkgDirStream &Stream);
+
+ ExtractTar(FileFd &Fd,unsigned long long Max,std::string DecompressionProgram);
+ virtual ~ExtractTar();
+};
+
+#endif
diff --git a/apt-inst/deb/debfile.cc b/apt-inst/deb/debfile.cc
new file mode 100644
index 000000000..474fb1cbe
--- /dev/null
+++ b/apt-inst/deb/debfile.cc
@@ -0,0 +1,247 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: debfile.cc,v 1.3.2.1 2004/01/16 18:58:50 mdz Exp $
+/* ######################################################################
+
+ Debian Archive File (.deb)
+
+ .DEB archives are AR files containing two tars and an empty marker
+ member called 'debian-binary'. The two tars contain the meta data and
+ the actual archive contents. Thus this class is a very simple wrapper
+ around ar/tar to simply extract the right tar files.
+
+ It also uses the deb package list parser to parse the control file
+ into the cache.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/debfile.h>
+#include <apt-pkg/extracttar.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/arfile.h>
+#include <apt-pkg/dirstream.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/tagfile.h>
+
+#include <string.h>
+#include <string>
+#include <vector>
+#include <sys/stat.h>
+
+#include <apti18n.h>
+ /*}}}*/
+
+// DebFile::debDebFile - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* Open the AR file and check for consistency */
+debDebFile::debDebFile(FileFd &File) : File(File), AR(File)
+{
+ if (_error->PendingError() == true)
+ return;
+
+ if (!CheckMember("debian-binary")) {
+ _error->Error(_("This is not a valid DEB archive, missing '%s' member"), "debian-binary");
+ return;
+ }
+
+ if (!CheckMember("control.tar") &&
+ !CheckMember("control.tar.gz") &&
+ !CheckMember("control.tar.xz")) {
+ _error->Error(_("This is not a valid DEB archive, missing '%s' member"), "control.tar");
+ return;
+ }
+
+ if (!CheckMember("data.tar") &&
+ !CheckMember("data.tar.gz") &&
+ !CheckMember("data.tar.bz2") &&
+ !CheckMember("data.tar.lzma") &&
+ !CheckMember("data.tar.xz")) {
+ _error->Error(_("This is not a valid DEB archive, missing '%s' member"), "data.tar");
+ return;
+ }
+}
+ /*}}}*/
+// DebFile::CheckMember - Check if a named member is in the archive /*{{{*/
+// ---------------------------------------------------------------------
+/* This is used to check for a correct deb and to give nicer error messages
+ for people playing around. */
+bool debDebFile::CheckMember(const char *Name)
+{
+ if (AR.FindMember(Name) == 0)
+ return false;
+ return true;
+}
+ /*}}}*/
+// DebFile::GotoMember - Jump to a Member /*{{{*/
+// ---------------------------------------------------------------------
+/* Jump in the file to the start of a named member and return the information
+ about that member. The caller can then read from the file up to the
+ returned size. Note, since this relies on the file position this is
+ a destructive operation, it also changes the last returned Member
+ structure - so don't nest them! */
+const ARArchive::Member *debDebFile::GotoMember(const char *Name)
+{
+ // Get the archive member and positition the file
+ const ARArchive::Member *Member = AR.FindMember(Name);
+ if (Member == 0)
+ {
+ return 0;
+ }
+ if (File.Seek(Member->Start) == false)
+ return 0;
+
+ return Member;
+}
+ /*}}}*/
+// DebFile::ExtractTarMember - Extract the contents of a tar member /*{{{*/
+// ---------------------------------------------------------------------
+/* Simple wrapper around tar.. */
+bool debDebFile::ExtractTarMember(pkgDirStream &Stream,const char *Name)
+{
+ // Get the archive member
+ const ARArchive::Member *Member = NULL;
+ std::string Compressor;
+
+ std::vector<APT::Configuration::Compressor> compressor = APT::Configuration::getCompressors();
+ for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressor.begin();
+ c != compressor.end(); ++c)
+ {
+ Member = AR.FindMember(std::string(Name).append(c->Extension).c_str());
+ if (Member == NULL)
+ continue;
+ Compressor = c->Name;
+ break;
+ }
+
+ if (Member == NULL)
+ Member = AR.FindMember(std::string(Name).c_str());
+
+ if (Member == NULL)
+ {
+ std::string ext = std::string(Name) + ".{";
+ for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressor.begin();
+ c != compressor.end(); ++c) {
+ if (!c->Extension.empty())
+ ext.append(c->Extension.substr(1));
+ }
+ ext.append("}");
+ return _error->Error(_("Internal error, could not locate member %s"), ext.c_str());
+ }
+
+ if (File.Seek(Member->Start) == false)
+ return false;
+
+ // Prepare Tar
+ ExtractTar Tar(File,Member->Size,Compressor);
+ if (_error->PendingError() == true)
+ return false;
+ return Tar.Go(Stream);
+}
+ /*}}}*/
+// DebFile::ExtractArchive - Extract the archive data itself /*{{{*/
+// ---------------------------------------------------------------------
+/* Simple wrapper around DebFile::ExtractTarMember. */
+bool debDebFile::ExtractArchive(pkgDirStream &Stream)
+{
+ return ExtractTarMember(Stream, "data.tar");
+}
+ /*}}}*/
+
+// DebFile::ControlExtract::DoItem - Control Tar Extraction /*{{{*/
+// ---------------------------------------------------------------------
+/* This directory stream handler for the control tar handles extracting
+ it into the temporary meta directory. It only extracts files, it does
+ not create directories, links or anything else. */
+bool debDebFile::ControlExtract::DoItem(Item &Itm,int &Fd)
+{
+ if (Itm.Type != Item::File)
+ return true;
+
+ /* Cleanse the file name, prevent people from trying to unpack into
+ absolute paths, .., etc */
+ for (char *I = Itm.Name; *I != 0; I++)
+ if (*I == '/')
+ *I = '_';
+
+ /* Force the ownership to be root and ensure correct permissions,
+ go-w, the rest are left untouched */
+ Itm.UID = 0;
+ Itm.GID = 0;
+ Itm.Mode &= ~(S_IWGRP | S_IWOTH);
+
+ return pkgDirStream::DoItem(Itm,Fd);
+}
+ /*}}}*/
+
+// MemControlExtract::DoItem - Check if it is the control file /*{{{*/
+// ---------------------------------------------------------------------
+/* This sets up to extract the control block member file into a memory
+ block of just the right size. All other files go into the bit bucket. */
+bool debDebFile::MemControlExtract::DoItem(Item &Itm,int &Fd)
+{
+ // At the control file, allocate buffer memory.
+ if (Member == Itm.Name)
+ {
+ delete [] Control;
+ Control = new char[Itm.Size+2];
+ IsControl = true;
+ Fd = -2; // Signal to pass to Process
+ Length = Itm.Size;
+ }
+ else
+ IsControl = false;
+
+ return true;
+}
+ /*}}}*/
+// MemControlExtract::Process - Process extracting the control file /*{{{*/
+// ---------------------------------------------------------------------
+/* Just memcopy the block from the tar extractor and put it in the right
+ place in the pre-allocated memory block. */
+bool debDebFile::MemControlExtract::Process(Item &/*Itm*/,const unsigned char *Data,
+ unsigned long long Size,unsigned long long Pos)
+{
+ memcpy(Control + Pos, Data,Size);
+ return true;
+}
+ /*}}}*/
+// MemControlExtract::Read - Read the control information from the deb /*{{{*/
+// ---------------------------------------------------------------------
+/* This uses the internal tar extractor to fetch the control file, and then
+ it parses it into a tag section parser. */
+bool debDebFile::MemControlExtract::Read(debDebFile &Deb)
+{
+ if (Deb.ExtractTarMember(*this, "control.tar") == false)
+ return false;
+
+ if (Control == 0)
+ return true;
+
+ Control[Length] = '\n';
+ Control[Length+1] = '\n';
+ if (Section.Scan(Control,Length+2) == false)
+ return _error->Error(_("Unparsable control file"));
+ return true;
+}
+ /*}}}*/
+// MemControlExtract::TakeControl - Parse a memory block /*{{{*/
+// ---------------------------------------------------------------------
+/* The given memory block is loaded into the parser and parsed as a control
+ record. */
+bool debDebFile::MemControlExtract::TakeControl(const void *Data,unsigned long long Size)
+{
+ delete [] Control;
+ Control = new char[Size+2];
+ Length = Size;
+ memcpy(Control,Data,Size);
+
+ Control[Length] = '\n';
+ Control[Length+1] = '\n';
+ return Section.Scan(Control,Length+2);
+}
+ /*}}}*/
+
diff --git a/apt-inst/deb/debfile.h b/apt-inst/deb/debfile.h
new file mode 100644
index 000000000..02ebaae2e
--- /dev/null
+++ b/apt-inst/deb/debfile.h
@@ -0,0 +1,97 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: debfile.h,v 1.2 2001/02/20 07:03:17 jgg Exp $
+/* ######################################################################
+
+ Debian Archive File (.deb)
+
+ This Class handles all the operations performed directly on .deb
+ files. It makes use of the AR and TAR classes to give the necessary
+ external interface.
+
+ There are only two things that can be done with a raw package,
+ extract it's control information and extract the contents itself.
+
+ This should probably subclass an as-yet unwritten super class to
+ produce a generic archive mechanism.
+
+ The memory control file extractor is useful to extract a single file
+ into memory from the control.tar.gz
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_DEBFILE_H
+#define PKGLIB_DEBFILE_H
+
+
+#include <apt-pkg/arfile.h>
+#include <apt-pkg/dirstream.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/macros.h>
+
+#include <string>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/md5.h>
+#endif
+#ifndef APT_10_CLEANER_HEADERS
+#include <apt-pkg/pkgcache.h>
+#endif
+
+class FileFd;
+
+class debDebFile
+{
+ protected:
+
+ FileFd &File;
+ ARArchive AR;
+
+ bool CheckMember(const char *Name);
+
+ public:
+ class ControlExtract;
+ class MemControlExtract;
+
+ bool ExtractTarMember(pkgDirStream &Stream, const char *Name);
+ bool ExtractArchive(pkgDirStream &Stream);
+ const ARArchive::Member *GotoMember(const char *Name);
+ inline FileFd &GetFile() {return File;};
+
+ debDebFile(FileFd &File);
+};
+
+class debDebFile::ControlExtract : public pkgDirStream
+{
+ public:
+
+ virtual bool DoItem(Item &Itm,int &Fd) APT_OVERRIDE;
+};
+
+class debDebFile::MemControlExtract : public pkgDirStream
+{
+ bool IsControl;
+
+ public:
+
+ char *Control;
+ pkgTagSection Section;
+ unsigned long Length;
+ std::string Member;
+
+ // Members from DirStream
+ virtual bool DoItem(Item &Itm,int &Fd) APT_OVERRIDE;
+ virtual bool Process(Item &Itm,const unsigned char *Data,
+ unsigned long long Size,unsigned long long Pos) APT_OVERRIDE;
+
+ // Helpers
+ bool Read(debDebFile &Deb);
+ bool TakeControl(const void *Data,unsigned long long Size);
+
+ MemControlExtract() : IsControl(false), Control(0), Length(0), Member("control") {};
+ MemControlExtract(std::string Member) : IsControl(false), Control(0), Length(0), Member(Member) {};
+ ~MemControlExtract() {delete [] Control;};
+};
+ /*}}}*/
+
+#endif
diff --git a/apt-inst/dirstream.cc b/apt-inst/dirstream.cc
new file mode 100644
index 000000000..888020bfb
--- /dev/null
+++ b/apt-inst/dirstream.cc
@@ -0,0 +1,119 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: dirstream.cc,v 1.3.2.1 2004/01/16 18:58:50 mdz Exp $
+/* ######################################################################
+
+ Directory Stream
+
+ This class provides a simple basic extractor that can be used for
+ a number of purposes.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/dirstream.h>
+#include <apt-pkg/error.h>
+
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <errno.h>
+#include <unistd.h>
+#include <apti18n.h>
+ /*}}}*/
+
+// DirStream::DoItem - Process an item /*{{{*/
+// ---------------------------------------------------------------------
+/* This is a very simple extractor, it does not deal with things like
+ overwriting directories with files and so on. */
+bool pkgDirStream::DoItem(Item &Itm,int &Fd)
+{
+ switch (Itm.Type)
+ {
+ case Item::File:
+ {
+ /* Open the output file, NDELAY is used to prevent this from
+ blowing up on device special files.. */
+ int iFd = open(Itm.Name,O_NDELAY|O_WRONLY|O_CREAT|O_TRUNC|O_APPEND,
+ Itm.Mode);
+ if (iFd < 0)
+ return _error->Errno("open",_("Failed to write file %s"),
+ Itm.Name);
+
+ // fchmod deals with umask and fchown sets the ownership
+ if (fchmod(iFd,Itm.Mode) != 0)
+ {
+ close(iFd);
+ return _error->Errno("fchmod",_("Failed to write file %s"), Itm.Name);
+ }
+ if (fchown(iFd,Itm.UID,Itm.GID) != 0 && errno != EPERM)
+ {
+ close(iFd);
+ return _error->Errno("fchown",_("Failed to write file %s"), Itm.Name);
+ }
+ Fd = iFd;
+ return true;
+ }
+
+ case Item::HardLink:
+ case Item::SymbolicLink:
+ case Item::CharDevice:
+ case Item::BlockDevice:
+ case Item::Directory:
+ {
+ struct stat Buf;
+ // check if the dir is already there, if so return true
+ if (stat(Itm.Name,&Buf) == 0)
+ {
+ if(S_ISDIR(Buf.st_mode))
+ return true;
+ // something else is there already, return false
+ return false;
+ }
+ // nothing here, create the dir
+ if(mkdir(Itm.Name,Itm.Mode) < 0)
+ return false;
+ return true;
+ }
+ case Item::FIFO:
+ break;
+ }
+
+ return true;
+}
+ /*}}}*/
+// DirStream::FinishedFile - Finished processing a file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgDirStream::FinishedFile(Item &Itm,int Fd)
+{
+ if (Fd < 0)
+ return true;
+
+ /* Set the modification times. The only way it can fail is if someone
+ has futzed with our file, which is intolerable :> */
+ struct timeval times[2];
+ times[0].tv_sec = times[1].tv_sec = Itm.MTime;
+ times[0].tv_usec = times[1].tv_usec = 0;
+ if (utimes(Itm.Name, times) != 0)
+ _error->Errno("utimes", "Failed to set modification time for %s",Itm.Name);
+
+ if (close(Fd) != 0)
+ return _error->Errno("close",_("Failed to close file %s"),Itm.Name);
+ return true;
+}
+ /*}}}*/
+// DirStream::Fail - Failed processing a file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgDirStream::Fail(Item &/*Itm*/, int Fd)
+{
+ if (Fd < 0)
+ return true;
+
+ close(Fd);
+ return false;
+}
+ /*}}}*/
diff --git a/apt-inst/dirstream.h b/apt-inst/dirstream.h
new file mode 100644
index 000000000..dac965db7
--- /dev/null
+++ b/apt-inst/dirstream.h
@@ -0,0 +1,58 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: dirstream.h,v 1.2 2001/02/20 07:03:16 jgg Exp $
+/* ######################################################################
+
+ Directory Stream
+
+ When unpacking the contents of the archive are passed into a directory
+ stream class for analysis and processing. The class controls all aspects
+ of actually writing the directory stream from disk. The low level
+ archive handlers are only responsible for decoding the archive format
+ and sending events (via method calls) to the specified directory
+ stream.
+
+ When unpacking a real file the archive handler is passed back a file
+ handle to write the data to, this is to support strange
+ archives+unpacking methods. If that fd is -1 then the file data is
+ simply ignored.
+
+ The provided defaults do the 'Right Thing' for a normal unpacking
+ process (ie 'tar')
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_DIRSTREAM_H
+#define PKGLIB_DIRSTREAM_H
+
+#include <apt-pkg/macros.h>
+
+class pkgDirStream
+{
+ public:
+
+ // All possible information about a component
+ struct Item
+ {
+ enum Type_t {File, HardLink, SymbolicLink, CharDevice, BlockDevice,
+ Directory, FIFO} Type;
+ char *Name;
+ char *LinkTarget;
+ unsigned long Mode;
+ unsigned long UID;
+ unsigned long GID;
+ unsigned long long Size;
+ unsigned long MTime;
+ unsigned long Major;
+ unsigned long Minor;
+ };
+
+ virtual bool DoItem(Item &Itm,int &Fd);
+ virtual bool Fail(Item &Itm,int Fd);
+ virtual bool FinishedFile(Item &Itm,int Fd);
+ virtual bool Process(Item &/*Itm*/,const unsigned char * /*Data*/,
+ unsigned long long /*Size*/,unsigned long long /*Pos*/) {return true;};
+ virtual ~pkgDirStream() {};
+};
+
+#endif
diff --git a/apt-inst/dpkg-diffs.txt b/apt-inst/dpkg-diffs.txt
new file mode 100644
index 000000000..d161055f7
--- /dev/null
+++ b/apt-inst/dpkg-diffs.txt
@@ -0,0 +1,5 @@
+- Replacing directories with files
+ dpkg permits this with the weak condition that the directory is owned only
+ by the package. APT requires that the directory have no files that are not
+ owned by the package. Replaces are specifically not checked to prevent
+ file list corruption.
diff --git a/apt-inst/extract.cc b/apt-inst/extract.cc
new file mode 100644
index 000000000..f50c23e46
--- /dev/null
+++ b/apt-inst/extract.cc
@@ -0,0 +1,516 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: extract.cc,v 1.6.2.1 2004/01/16 18:58:50 mdz Exp $
+/* ######################################################################
+
+ Archive Extraction Directory Stream
+
+ Extraction for each file is a bit of an involved process. Each object
+ undergoes an atomic backup, overwrite, erase sequence. First the
+ object is unpacked to '.dpkg.new' then the original is hardlinked to
+ '.dpkg.tmp' and finally the new object is renamed to overwrite the old
+ one. From an external perspective the file never ceased to exist.
+ After the archive has been successfully unpacked the .dpkg.tmp files
+ are erased. A failure causes all the .dpkg.tmp files to be restored.
+
+ Decisions about unpacking go like this:
+ - Store the original filename in the file listing
+ - Resolve any diversions that would effect this file, all checks
+ below apply to the diverted name, not the real one.
+ - Resolve any symlinked configuration files.
+ - If the existing file does not exist then .dpkg-tmp is checked for.
+ [Note, this is reduced to only check if a file was expected to be
+ there]
+ - If the existing link/file is not a directory then it is replaced
+ regardless
+ - If the existing link/directory is being replaced by a directory then
+ absolutely nothing happens.
+ - If the existing link/directory is being replaced by a link then
+ absolutely nothing happens.
+ - If the existing link/directory is being replaced by a non-directory
+ then this will abort if the package is not the sole owner of the
+ directory. [Note, this is changed to not happen if the directory
+ non-empty - that is, it only includes files that are part of this
+ package - prevents removing user files accidentally.]
+ - If the non-directory exists in the listing database and it
+ does not belong to the current package then an overwrite condition
+ is invoked.
+
+ As we unpack we record the file list differences in the FL cache. If
+ we need to unroll the FL cache knows which files have been unpacked
+ and can undo. When we need to erase then it knows which files have not
+ been unpacked.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/extract.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/debversion.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/dirstream.h>
+#include <apt-pkg/filelist.h>
+#include <apt-pkg/mmap.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#include <string.h>
+#include <string>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <errno.h>
+#include <dirent.h>
+#include <iostream>
+
+#include <apti18n.h>
+ /*}}}*/
+using namespace std;
+
+static const char *TempExt = "dpkg-tmp";
+//static const char *NewExt = "dpkg-new";
+
+// Extract::pkgExtract - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgExtract::pkgExtract(pkgFLCache &FLCache,pkgCache::VerIterator Ver) :
+ FLCache(FLCache), Ver(Ver)
+{
+ FLPkg = FLCache.GetPkg(Ver.ParentPkg().Name(),true);
+ if (FLPkg.end() == true)
+ return;
+ Debug = true;
+}
+ /*}}}*/
+// Extract::DoItem - Handle a single item from the stream /*{{{*/
+// ---------------------------------------------------------------------
+/* This performs the setup for the extraction.. */
+bool pkgExtract::DoItem(Item &Itm, int &/*Fd*/)
+{
+ /* Strip any leading/trailing /s from the filename, then copy it to the
+ temp buffer and re-apply the leading / We use a class variable
+ to store the new filename for use by the three extraction funcs */
+ char *End = FileName+1;
+ const char *I = Itm.Name;
+ for (; *I != 0 && *I == '/'; I++);
+ *FileName = '/';
+ for (; *I != 0 && End < FileName + sizeof(FileName); I++, End++)
+ *End = *I;
+ if (End + 20 >= FileName + sizeof(FileName))
+ return _error->Error(_("The path %s is too long"),Itm.Name);
+ for (; End > FileName && End[-1] == '/'; End--);
+ *End = 0;
+ Itm.Name = FileName;
+
+ /* Lookup the file. Nde is the file [group] we are going to write to and
+ RealNde is the actual node we are manipulating. Due to diversions
+ they may be entirely different. */
+ pkgFLCache::NodeIterator Nde = FLCache.GetNode(Itm.Name,End,0,false,false);
+ pkgFLCache::NodeIterator RealNde = Nde;
+
+ // See if the file is already in the file listing
+ unsigned long FileGroup = RealNde->File;
+ for (; RealNde.end() == false && FileGroup == RealNde->File; RealNde++)
+ if (RealNde.RealPackage() == FLPkg)
+ break;
+
+ // Nope, create an entry
+ if (RealNde.end() == true)
+ {
+ RealNde = FLCache.GetNode(Itm.Name,End,FLPkg.Offset(),true,false);
+ if (RealNde.end() == true)
+ return false;
+ RealNde->Flags |= pkgFLCache::Node::NewFile;
+ }
+
+ /* Check if this entry already was unpacked. The only time this should
+ ever happen is if someone has hacked tar to support capabilities, in
+ which case this needs to be modified anyhow.. */
+ if ((RealNde->Flags & pkgFLCache::Node::Unpacked) ==
+ pkgFLCache::Node::Unpacked)
+ return _error->Error(_("Unpacking %s more than once"),Itm.Name);
+
+ if (Nde.end() == true)
+ Nde = RealNde;
+
+ /* Consider a diverted file - We are not permitted to divert directories,
+ but everything else is fair game (including conf files!) */
+ if ((Nde->Flags & pkgFLCache::Node::Diversion) != 0)
+ {
+ if (Itm.Type == Item::Directory)
+ return _error->Error(_("The directory %s is diverted"),Itm.Name);
+
+ /* A package overwriting a diversion target is just the same as
+ overwriting a normally owned file and is checked for below in
+ the overwrites mechanism */
+
+ /* If this package is trying to overwrite the target of a diversion,
+ that is never, ever permitted */
+ pkgFLCache::DiverIterator Div = Nde.Diversion();
+ if (Div.DivertTo() == Nde)
+ return _error->Error(_("The package is trying to write to the "
+ "diversion target %s/%s"),Nde.DirN(),Nde.File());
+
+ // See if it is us and we are following it in the right direction
+ if (Div->OwnerPkg != FLPkg.Offset() && Div.DivertFrom() == Nde)
+ {
+ Nde = Div.DivertTo();
+ End = FileName + snprintf(FileName,sizeof(FileName)-20,"%s/%s",
+ Nde.DirN(),Nde.File());
+ if (End <= FileName)
+ return _error->Error(_("The diversion path is too long"));
+ }
+ }
+
+ // Deal with symlinks and conf files
+ if ((RealNde->Flags & pkgFLCache::Node::NewConfFile) ==
+ pkgFLCache::Node::NewConfFile)
+ {
+ string Res = flNoLink(Itm.Name);
+ if (Res.length() > sizeof(FileName))
+ return _error->Error(_("The path %s is too long"),Res.c_str());
+ if (Debug == true)
+ clog << "Followed conf file from " << FileName << " to " << Res << endl;
+ Itm.Name = strcpy(FileName,Res.c_str());
+ }
+
+ /* Get information about the existing file, and attempt to restore
+ a backup if it does not exist */
+ struct stat LExisting;
+ bool EValid = false;
+ if (lstat(Itm.Name,&LExisting) != 0)
+ {
+ // This is bad news.
+ if (errno != ENOENT)
+ return _error->Errno("stat",_("Failed to stat %s"),Itm.Name);
+
+ // See if we can recover the backup file
+ if (Nde.end() == false)
+ {
+ char Temp[sizeof(FileName)];
+ snprintf(Temp,sizeof(Temp),"%s.%s",Itm.Name,TempExt);
+ if (rename(Temp,Itm.Name) != 0 && errno != ENOENT)
+ return _error->Errno("rename",_("Failed to rename %s to %s"),
+ Temp,Itm.Name);
+ if (stat(Itm.Name,&LExisting) != 0)
+ {
+ if (errno != ENOENT)
+ return _error->Errno("stat",_("Failed to stat %s"),Itm.Name);
+ }
+ else
+ EValid = true;
+ }
+ }
+ else
+ EValid = true;
+
+ /* If the file is a link we need to stat its destination, get the
+ existing file modes */
+ struct stat Existing = LExisting;
+ if (EValid == true && S_ISLNK(Existing.st_mode))
+ {
+ if (stat(Itm.Name,&Existing) != 0)
+ {
+ if (errno != ENOENT)
+ return _error->Errno("stat",_("Failed to stat %s"),Itm.Name);
+ Existing = LExisting;
+ }
+ }
+
+ // We pretend a non-existing file looks like it is a normal file
+ if (EValid == false)
+ Existing.st_mode = S_IFREG;
+
+ /* Okay, at this point 'Existing' is the stat information for the
+ real non-link file */
+
+ /* The only way this can be a no-op is if a directory is being
+ replaced by a directory or by a link */
+ if (S_ISDIR(Existing.st_mode) != 0 &&
+ (Itm.Type == Item::Directory || Itm.Type == Item::SymbolicLink))
+ return true;
+
+ /* Non-Directory being replaced by non-directory. We check for over
+ writes here. */
+ if (Nde.end() == false)
+ {
+ if (HandleOverwrites(Nde) == false)
+ return false;
+ }
+
+ /* Directory being replaced by a non-directory - this needs to see if
+ the package is the owner and then see if the directory would be
+ empty after the package is removed [ie no user files will be
+ erased] */
+ if (S_ISDIR(Existing.st_mode) != 0)
+ {
+ if (CheckDirReplace(Itm.Name) == false)
+ return _error->Error(_("The directory %s is being replaced by a non-directory"),Itm.Name);
+ }
+
+ if (Debug == true)
+ clog << "Extract " << string(Itm.Name,End) << endl;
+/* if (Count != 0)
+ return _error->Error(_("Done"));*/
+
+ return true;
+}
+ /*}}}*/
+// Extract::Finished - Sequence finished, erase the temp files /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+APT_CONST bool pkgExtract::Finished()
+{
+ return true;
+}
+ /*}}}*/
+// Extract::Aborted - Sequence aborted, undo all our unpacking /*{{{*/
+// ---------------------------------------------------------------------
+/* This undoes everything that was done by all calls to the DoItem method
+ and restores the File Listing cache to its original form. It bases its
+ actions on the flags value for each node in the cache. */
+bool pkgExtract::Aborted()
+{
+ if (Debug == true)
+ clog << "Aborted, backing out" << endl;
+
+ pkgFLCache::NodeIterator Files = FLPkg.Files();
+ map_ptrloc *Last = &FLPkg->Files;
+
+ /* Loop over all files, restore those that have been unpacked from their
+ dpkg-tmp entries */
+ while (Files.end() == false)
+ {
+ // Locate the hash bucket for the node and locate its group head
+ pkgFLCache::NodeIterator Nde(FLCache,FLCache.HashNode(Files));
+ for (; Nde.end() == false && Files->File != Nde->File; Nde++);
+ if (Nde.end() == true)
+ return _error->Error(_("Failed to locate node in its hash bucket"));
+
+ if (snprintf(FileName,sizeof(FileName)-20,"%s/%s",
+ Nde.DirN(),Nde.File()) <= 0)
+ return _error->Error(_("The path is too long"));
+
+ // Deal with diversions
+ if ((Nde->Flags & pkgFLCache::Node::Diversion) != 0)
+ {
+ pkgFLCache::DiverIterator Div = Nde.Diversion();
+
+ // See if it is us and we are following it in the right direction
+ if (Div->OwnerPkg != FLPkg.Offset() && Div.DivertFrom() == Nde)
+ {
+ Nde = Div.DivertTo();
+ if (snprintf(FileName,sizeof(FileName)-20,"%s/%s",
+ Nde.DirN(),Nde.File()) <= 0)
+ return _error->Error(_("The diversion path is too long"));
+ }
+ }
+
+ // Deal with overwrites+replaces
+ for (; Nde.end() == false && Files->File == Nde->File; Nde++)
+ {
+ if ((Nde->Flags & pkgFLCache::Node::Replaced) ==
+ pkgFLCache::Node::Replaced)
+ {
+ if (Debug == true)
+ clog << "De-replaced " << FileName << " from " << Nde.RealPackage()->Name << endl;
+ Nde->Flags &= ~pkgFLCache::Node::Replaced;
+ }
+ }
+
+ // Undo the change in the filesystem
+ if (Debug == true)
+ clog << "Backing out " << FileName;
+
+ // Remove a new node
+ if ((Files->Flags & pkgFLCache::Node::NewFile) ==
+ pkgFLCache::Node::NewFile)
+ {
+ if (Debug == true)
+ clog << " [new node]" << endl;
+ pkgFLCache::Node *Tmp = Files;
+ Files++;
+ *Last = Tmp->NextPkg;
+ Tmp->NextPkg = 0;
+
+ FLCache.DropNode(Tmp - FLCache.NodeP);
+ }
+ else
+ {
+ if (Debug == true)
+ clog << endl;
+
+ Last = &Files->NextPkg;
+ Files++;
+ }
+ }
+
+ return true;
+}
+ /*}}}*/
+// Extract::Fail - Extraction of a file Failed /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgExtract::Fail(Item &Itm,int Fd)
+{
+ return pkgDirStream::Fail(Itm,Fd);
+}
+ /*}}}*/
+// Extract::FinishedFile - Finished a file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgExtract::FinishedFile(Item &Itm,int Fd)
+{
+ return pkgDirStream::FinishedFile(Itm,Fd);
+}
+ /*}}}*/
+// Extract::HandleOverwrites - See if a replaces covers this overwrite /*{{{*/
+// ---------------------------------------------------------------------
+/* Check if the file is in a package that is being replaced by this
+ package or if the file is being overwritten. Note that if the file
+ is really a directory but it has been erased from the filesystem
+ this will fail with an overwrite message. This is a limitation of the
+ dpkg file information format.
+
+ XX If a new package installs and another package replaces files in this
+ package what should we do? */
+bool pkgExtract::HandleOverwrites(pkgFLCache::NodeIterator Nde,
+ bool DiverCheck)
+{
+ pkgFLCache::NodeIterator TmpNde = Nde;
+ unsigned long DiverOwner = 0;
+ unsigned long FileGroup = Nde->File;
+ for (; Nde.end() == false && FileGroup == Nde->File; Nde++)
+ {
+ if ((Nde->Flags & pkgFLCache::Node::Diversion) != 0)
+ {
+ /* Store the diversion owner if this is the forward direction
+ of the diversion */
+ if (DiverCheck == true)
+ DiverOwner = Nde.Diversion()->OwnerPkg;
+ continue;
+ }
+
+ pkgFLCache::PkgIterator FPkg(FLCache,Nde.RealPackage());
+ if (FPkg.end() == true || FPkg == FLPkg)
+ continue;
+
+ /* This tests trips when we are checking a diversion to see
+ if something has already been diverted by this diversion */
+ if (FPkg.Offset() == DiverOwner)
+ continue;
+
+ // Now see if this package matches one in a replace depends
+ pkgCache::DepIterator Dep = Ver.DependsList();
+ bool Ok = false;
+ for (; Dep.end() == false; ++Dep)
+ {
+ if (Dep->Type != pkgCache::Dep::Replaces)
+ continue;
+
+ // Does the replaces apply to this package?
+ if (strcmp(Dep.TargetPkg().Name(),FPkg.Name()) != 0)
+ continue;
+
+ /* Check the version for match. I do not think CurrentVer can be
+ 0 if we are here.. */
+ pkgCache::PkgIterator Pkg = Dep.TargetPkg();
+ if (Pkg->CurrentVer == 0)
+ {
+ _error->Warning(_("Overwrite package match with no version for %s"),Pkg.Name());
+ continue;
+ }
+
+ // Replaces is met
+ if (debVS.CheckDep(Pkg.CurrentVer().VerStr(),Dep->CompareOp,Dep.TargetVer()) == true)
+ {
+ if (Debug == true)
+ clog << "Replaced file " << Nde.DirN() << '/' << Nde.File() << " from " << Pkg.Name() << endl;
+ Nde->Flags |= pkgFLCache::Node::Replaced;
+ Ok = true;
+ break;
+ }
+ }
+
+ // Negative Hit
+ if (Ok == false)
+ return _error->Error(_("File %s/%s overwrites the one in the package %s"),
+ Nde.DirN(),Nde.File(),FPkg.Name());
+ }
+
+ /* If this is a diversion we might have to recurse to process
+ the other side of it */
+ if ((TmpNde->Flags & pkgFLCache::Node::Diversion) != 0)
+ {
+ pkgFLCache::DiverIterator Div = TmpNde.Diversion();
+ if (Div.DivertTo() == TmpNde)
+ return HandleOverwrites(Div.DivertFrom(),true);
+ }
+
+ return true;
+}
+ /*}}}*/
+// Extract::CheckDirReplace - See if this directory can be erased /*{{{*/
+// ---------------------------------------------------------------------
+/* If this directory is owned by a single package and that package is
+ replacing it with something non-directoryish then dpkg allows this.
+ We increase the requirement to be that the directory is non-empty after
+ the package is removed */
+bool pkgExtract::CheckDirReplace(string Dir,unsigned int Depth)
+{
+ // Looping?
+ if (Depth > 40)
+ return false;
+
+ if (Dir[Dir.size() - 1] != '/')
+ Dir += '/';
+
+ DIR *D = opendir(Dir.c_str());
+ if (D == 0)
+ return _error->Errno("opendir",_("Unable to read %s"),Dir.c_str());
+
+ string File;
+ for (struct dirent *Dent = readdir(D); Dent != 0; Dent = readdir(D))
+ {
+ // Skip some files
+ if (strcmp(Dent->d_name,".") == 0 ||
+ strcmp(Dent->d_name,"..") == 0)
+ continue;
+
+ // Look up the node
+ File = Dir + Dent->d_name;
+ pkgFLCache::NodeIterator Nde = FLCache.GetNode(File.c_str(),
+ File.c_str() + File.length(),0,false,false);
+
+ // The file is not owned by this package
+ if (Nde.end() != false || Nde.RealPackage() != FLPkg)
+ {
+ closedir(D);
+ return false;
+ }
+
+ // See if it is a directory
+ struct stat St;
+ if (lstat(File.c_str(),&St) != 0)
+ {
+ closedir(D);
+ return _error->Errno("lstat",_("Unable to stat %s"),File.c_str());
+ }
+
+ // Recurse down directories
+ if (S_ISDIR(St.st_mode) != 0)
+ {
+ if (CheckDirReplace(File,Depth + 1) == false)
+ {
+ closedir(D);
+ return false;
+ }
+ }
+ }
+
+ // No conflicts
+ closedir(D);
+ return true;
+}
+ /*}}}*/
diff --git a/apt-inst/extract.h b/apt-inst/extract.h
new file mode 100644
index 000000000..a62ff51bd
--- /dev/null
+++ b/apt-inst/extract.h
@@ -0,0 +1,51 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: extract.h,v 1.2 2001/02/20 07:03:16 jgg Exp $
+/* ######################################################################
+
+ Archive Extraction Directory Stream
+
+ This Directory Stream implements extraction of an archive into the
+ filesystem. It makes the choices on what files should be unpacked and
+ replaces as well as guiding the actual unpacking.
+
+ When the unpacking sequence is completed one of the two functions,
+ Finished or Aborted must be called.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_EXTRACT_H
+#define PKGLIB_EXTRACT_H
+
+#include <apt-pkg/dirstream.h>
+#include <apt-pkg/filelist.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#include <string>
+
+class pkgExtract : public pkgDirStream
+{
+ pkgFLCache &FLCache;
+ pkgCache::VerIterator Ver;
+ pkgFLCache::PkgIterator FLPkg;
+ char FileName[1024];
+ bool Debug;
+
+ bool HandleOverwrites(pkgFLCache::NodeIterator Nde,
+ bool DiverCheck = false);
+ bool CheckDirReplace(std::string Dir,unsigned int Depth = 0);
+
+ public:
+
+ virtual bool DoItem(Item &Itm,int &Fd) APT_OVERRIDE;
+ virtual bool Fail(Item &Itm,int Fd) APT_OVERRIDE;
+ virtual bool FinishedFile(Item &Itm,int Fd) APT_OVERRIDE;
+
+ bool Finished();
+ bool Aborted();
+
+ pkgExtract(pkgFLCache &FLCache,pkgCache::VerIterator Ver);
+};
+
+#endif
diff --git a/apt-inst/filelist.cc b/apt-inst/filelist.cc
new file mode 100644
index 000000000..6251b79b5
--- /dev/null
+++ b/apt-inst/filelist.cc
@@ -0,0 +1,587 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: filelist.cc,v 1.4.2.1 2004/01/16 18:58:50 mdz Exp $
+/* ######################################################################
+
+ File Listing - Manages a Cache of File -> Package names.
+
+ Diversions add some significant complexity to the system. To keep
+ storage space down in the very special case of a diverted file no
+ extra bytes are allocated in the Node structure. Instead a diversion
+ is inserted directly into the hash table and its flag bit set. Every
+ lookup for that filename will always return the diversion.
+
+ The hash buckets are stored in sorted form, with diversions having
+ the highest sort order. Identical files are assigned the same file
+ pointer, thus after a search all of the nodes owning that file can be
+ found by iterating down the bucket.
+
+ Re-updates of diversions (another extremely special case) are done by
+ marking all diversions as untouched, then loading the entire diversion
+ list again, touching each diversion and then finally going back and
+ releasing all untouched diversions. It is assumed that the diversion
+ table will always be quite small and be a very irregular case.
+
+ Diversions that are user-installed are represented by a package with
+ an empty name string.
+
+ Conf files are handled like diversions by changing the meaning of the
+ Pointer field to point to a conf file entry - again to reduce over
+ head for a special case.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/filelist.h>
+#include <apt-pkg/mmap.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/strutl.h>
+
+#include <string.h>
+#include <iostream>
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+// FlCache::Header::Header - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* Initialize the header variables. These are the defaults used when
+ creating new caches */
+pkgFLCache::Header::Header()
+{
+ Signature = 0xEA3F1295;
+
+ /* Whenever the structures change the major version should be bumped,
+ whenever the generator changes the minor version should be bumped. */
+ MajorVersion = 1;
+ MinorVersion = 0;
+ Dirty = true;
+
+ HeaderSz = sizeof(pkgFLCache::Header);
+ NodeSz = sizeof(pkgFLCache::Node);
+ DirSz = sizeof(pkgFLCache::Directory);
+ PackageSz = sizeof(pkgFLCache::Package);
+ DiversionSz = sizeof(pkgFLCache::Diversion);
+ ConfFileSz = sizeof(pkgFLCache::ConfFile);
+
+ NodeCount = 0;
+ DirCount = 0;
+ PackageCount = 0;
+ DiversionCount = 0;
+ ConfFileCount = 0;
+ HashSize = 1 << 14;
+
+ FileHash = 0;
+ DirTree = 0;
+ Packages = 0;
+ Diversions = 0;
+ UniqNodes = 0;
+ memset(Pools,0,sizeof(Pools));
+}
+ /*}}}*/
+// FLCache::Header::CheckSizes - Check if the two headers have same *sz /*{{{*/
+// ---------------------------------------------------------------------
+/* Compare to make sure we are matching versions */
+APT_PURE bool pkgFLCache::Header::CheckSizes(Header &Against) const
+{
+ if (HeaderSz == Against.HeaderSz &&
+ NodeSz == Against.NodeSz &&
+ DirSz == Against.DirSz &&
+ DiversionSz == Against.DiversionSz &&
+ PackageSz == Against.PackageSz &&
+ ConfFileSz == Against.ConfFileSz)
+ return true;
+ return false;
+}
+ /*}}}*/
+
+// FLCache::pkgFLCache - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* If this is a new cache then a new header and hash table are instantaited
+ otherwise the existing ones are mearly attached */
+pkgFLCache::pkgFLCache(DynamicMMap &Map) : Map(Map)
+{
+ if (_error->PendingError() == true)
+ return;
+
+ LastTreeLookup = 0;
+ LastLookupSize = 0;
+
+ // Apply the typecasts
+ HeaderP = (Header *)Map.Data();
+ NodeP = (Node *)Map.Data();
+ DirP = (Directory *)Map.Data();
+ DiverP = (Diversion *)Map.Data();
+ PkgP = (Package *)Map.Data();
+ ConfP = (ConfFile *)Map.Data();
+ StrP = (char *)Map.Data();
+ AnyP = (unsigned char *)Map.Data();
+
+ // New mapping, create the basic cache structures
+ if (Map.Size() == 0)
+ {
+ Map.RawAllocate(sizeof(pkgFLCache::Header));
+ *HeaderP = pkgFLCache::Header();
+ HeaderP->FileHash = Map.RawAllocate(sizeof(pkgFLCache::Node)*HeaderP->HashSize,
+ sizeof(pkgFLCache::Node))/sizeof(pkgFLCache::Node);
+ }
+
+ FileHash = NodeP + HeaderP->FileHash;
+
+ // Setup the dynamic map manager
+ HeaderP->Dirty = true;
+ Map.Sync(0,sizeof(pkgFLCache::Header));
+ Map.UsePools(*HeaderP->Pools,sizeof(HeaderP->Pools)/sizeof(HeaderP->Pools[0]));
+}
+ /*}}}*/
+// FLCache::TreeLookup - Perform a lookup in a generic tree /*{{{*/
+// ---------------------------------------------------------------------
+/* This is a simple generic tree lookup. The first three entries of
+ the Directory structure are used as a template, but any other similar
+ structure could be used in it's place. */
+map_ptrloc pkgFLCache::TreeLookup(map_ptrloc *Base,const char *Text,
+ const char *TextEnd,unsigned long Size,
+ unsigned int *Count,bool Insert)
+{
+ pkgFLCache::Directory *Dir;
+
+ // Check our last entry cache
+ if (LastTreeLookup != 0 && LastLookupSize == Size)
+ {
+ Dir = (pkgFLCache::Directory *)(AnyP + LastTreeLookup*Size);
+ if (stringcmp(Text,TextEnd,StrP + Dir->Name) == 0)
+ return LastTreeLookup;
+ }
+
+ while (1)
+ {
+ // Allocate a new one
+ if (*Base == 0)
+ {
+ if (Insert == false)
+ return 0;
+
+ *Base = Map.Allocate(Size);
+ if (*Base == 0)
+ return 0;
+
+ (*Count)++;
+ Dir = (pkgFLCache::Directory *)(AnyP + *Base*Size);
+ Dir->Name = Map.WriteString(Text,TextEnd - Text);
+ LastTreeLookup = *Base;
+ LastLookupSize = Size;
+ return *Base;
+ }
+
+ // Compare this node
+ Dir = (pkgFLCache::Directory *)(AnyP + *Base*Size);
+ int Res = stringcmp(Text,TextEnd,StrP + Dir->Name);
+ if (Res == 0)
+ {
+ LastTreeLookup = *Base;
+ LastLookupSize = Size;
+ return *Base;
+ }
+
+ if (Res > 0)
+ Base = &Dir->Left;
+ if (Res < 0)
+ Base = &Dir->Right;
+ }
+}
+ /*}}}*/
+// FLCache::PrintTree - Print out a tree /*{{{*/
+// ---------------------------------------------------------------------
+/* This is a simple generic tree dumper, meant for debugging. */
+void pkgFLCache::PrintTree(map_ptrloc Base,unsigned long Size)
+{
+ if (Base == 0)
+ return;
+
+ pkgFLCache::Directory *Dir = (pkgFLCache::Directory *)(AnyP + Base*Size);
+ PrintTree(Dir->Left,Size);
+ cout << (StrP + Dir->Name) << endl;
+ PrintTree(Dir->Right,Size);
+}
+ /*}}}*/
+// FLCache::GetPkg - Get a package pointer /*{{{*/
+// ---------------------------------------------------------------------
+/* Locate a package by name in it's tree, this is just a wrapper for
+ TreeLookup */
+pkgFLCache::PkgIterator pkgFLCache::GetPkg(const char *Name,const char *NameEnd,
+ bool Insert)
+{
+ if (NameEnd == 0)
+ NameEnd = Name + strlen(Name);
+
+ map_ptrloc Pos = TreeLookup(&HeaderP->Packages,Name,NameEnd,
+ sizeof(pkgFLCache::Package),
+ &HeaderP->PackageCount,Insert);
+ if (Pos == 0)
+ return pkgFLCache::PkgIterator();
+ return pkgFLCache::PkgIterator(*this,PkgP + Pos);
+}
+ /*}}}*/
+// FLCache::GetNode - Get the node associated with the filename /*{{{*/
+// ---------------------------------------------------------------------
+/* Lookup a node in the hash table. If Insert is true then a new node is
+ always inserted. The hash table can have multiple instances of a
+ single name available. A search returns the first. It is important
+ that additions for the same name insert after the first entry of
+ the name group. */
+pkgFLCache::NodeIterator pkgFLCache::GetNode(const char *Name,
+ const char *NameEnd,
+ map_ptrloc Loc,
+ bool Insert,bool Divert)
+{
+ // Split the name into file and directory, hashing as it is copied
+ const char *File = Name;
+ unsigned long HashPos = 0;
+ for (const char *I = Name; I < NameEnd; I++)
+ {
+ HashPos = 1637*HashPos + *I;
+ if (*I == '/')
+ File = I;
+ }
+
+ // Search for it
+ Node *Hash = NodeP + HeaderP->FileHash + (HashPos % HeaderP->HashSize);
+ int Res = 0;
+ map_ptrloc FilePtr = 0;
+ while (Hash->Pointer != 0)
+ {
+ // Compare
+ Res = stringcmp(File+1,NameEnd,StrP + Hash->File);
+ if (Res == 0)
+ Res = stringcmp(Name,File,StrP + DirP[Hash->Dir].Name);
+
+ // Diversion?
+ if (Res == 0 && Insert == true)
+ {
+ /* Dir and File match exactly, we need to reuse the file name
+ when we link it in */
+ FilePtr = Hash->File;
+ Res = Divert - ((Hash->Flags & Node::Diversion) == Node::Diversion);
+ }
+
+ // Is a match
+ if (Res == 0)
+ {
+ if (Insert == false)
+ return NodeIterator(*this,Hash);
+
+ // Only one diversion per name!
+ if (Divert == true)
+ return NodeIterator(*this,Hash);
+ break;
+ }
+
+ // Out of sort order
+ if (Res > 0)
+ break;
+
+ if (Hash->Next != 0)
+ Hash = NodeP + Hash->Next;
+ else
+ break;
+ }
+
+ // Fail, not found
+ if (Insert == false)
+ return NodeIterator(*this);
+
+ // Find a directory node
+ map_ptrloc Dir = TreeLookup(&HeaderP->DirTree,Name,File,
+ sizeof(pkgFLCache::Directory),
+ &HeaderP->DirCount,true);
+ if (Dir == 0)
+ return NodeIterator(*this);
+
+ // Allocate a new node
+ if (Hash->Pointer != 0)
+ {
+ // Overwrite or append
+ if (Res > 0)
+ {
+ Node *Next = NodeP + Map.Allocate(sizeof(*Hash));
+ if (Next == NodeP)
+ return NodeIterator(*this);
+ *Next = *Hash;
+ Hash->Next = Next - NodeP;
+ }
+ else
+ {
+ unsigned long NewNext = Map.Allocate(sizeof(*Hash));
+ if (NewNext == 0)
+ return NodeIterator(*this);
+ NodeP[NewNext].Next = Hash->Next;
+ Hash->Next = NewNext;
+ Hash = NodeP + Hash->Next;
+ }
+ }
+
+ // Insert into the new item
+ Hash->Dir = Dir;
+ Hash->Pointer = Loc;
+ Hash->Flags = 0;
+ if (Divert == true)
+ Hash->Flags |= Node::Diversion;
+
+ if (FilePtr != 0)
+ Hash->File = FilePtr;
+ else
+ {
+ HeaderP->UniqNodes++;
+ Hash->File = Map.WriteString(File+1,NameEnd - File-1);
+ }
+
+ // Link the node to the package list
+ if (Divert == false && Loc == 0)
+ {
+ Hash->Next = PkgP[Loc].Files;
+ PkgP[Loc].Files = Hash - NodeP;
+ }
+
+ HeaderP->NodeCount++;
+ return NodeIterator(*this,Hash);
+}
+ /*}}}*/
+// FLCache::HashNode - Return the hash bucket for the node /*{{{*/
+// ---------------------------------------------------------------------
+/* This is one of two hashing functions. The other is inlined into the
+ GetNode routine. */
+APT_PURE pkgFLCache::Node *pkgFLCache::HashNode(NodeIterator const &Nde)
+{
+ // Hash the node
+ unsigned long HashPos = 0;
+ for (const char *I = Nde.DirN(); *I != 0; I++)
+ HashPos = 1637*HashPos + *I;
+ HashPos = 1637*HashPos + '/';
+ for (const char *I = Nde.File(); *I != 0; I++)
+ HashPos = 1637*HashPos + *I;
+ return NodeP + HeaderP->FileHash + (HashPos % HeaderP->HashSize);
+}
+ /*}}}*/
+// FLCache::DropNode - Drop a node from the hash table /*{{{*/
+// ---------------------------------------------------------------------
+/* This erases a node from the hash table. Note that this does not unlink
+ the node from the package linked list. */
+void pkgFLCache::DropNode(map_ptrloc N)
+{
+ if (N == 0)
+ return;
+
+ NodeIterator Nde(*this,NodeP + N);
+
+ if (Nde->NextPkg != 0)
+ _error->Warning(_("DropNode called on still linked node"));
+
+ // Locate it in the hash table
+ Node *Last = 0;
+ Node *Hash = HashNode(Nde);
+ while (Hash->Pointer != 0)
+ {
+ // Got it
+ if (Hash == Nde)
+ {
+ // Top of the bucket..
+ if (Last == 0)
+ {
+ Hash->Pointer = 0;
+ if (Hash->Next == 0)
+ return;
+ *Hash = NodeP[Hash->Next];
+ // Release Hash->Next
+ return;
+ }
+ Last->Next = Hash->Next;
+ // Release Hash
+ return;
+ }
+
+ Last = Hash;
+ if (Hash->Next != 0)
+ Hash = NodeP + Hash->Next;
+ else
+ break;
+ }
+
+ _error->Error(_("Failed to locate the hash element!"));
+}
+ /*}}}*/
+// FLCache::BeginDiverLoad - Start reading new diversions /*{{{*/
+// ---------------------------------------------------------------------
+/* Tag all the diversions as untouched */
+void pkgFLCache::BeginDiverLoad()
+{
+ for (DiverIterator I = DiverBegin(); I.end() == false; I++)
+ I->Flags = 0;
+}
+ /*}}}*/
+// FLCache::FinishDiverLoad - Finish up a new diversion load /*{{{*/
+// ---------------------------------------------------------------------
+/* This drops any untouched diversions. In effect removing any diversions
+ that where not loaded (ie missing from the diversion file) */
+void pkgFLCache::FinishDiverLoad()
+{
+ map_ptrloc *Cur = &HeaderP->Diversions;
+ while (*Cur != 0)
+ {
+ Diversion *Div = DiverP + *Cur;
+ if ((Div->Flags & Diversion::Touched) == Diversion::Touched)
+ {
+ Cur = &Div->Next;
+ continue;
+ }
+
+ // Purge!
+ DropNode(Div->DivertTo);
+ DropNode(Div->DivertFrom);
+ *Cur = Div->Next;
+ }
+}
+ /*}}}*/
+// FLCache::AddDiversion - Add a new diversion /*{{{*/
+// ---------------------------------------------------------------------
+/* Add a new diversion to the diverion tables and make sure that it is
+ unique and non-chaining. */
+bool pkgFLCache::AddDiversion(PkgIterator const &Owner,
+ const char *From,const char *To)
+{
+ /* Locate the two hash nodes we are going to manipulate. If there
+ are pre-existing diversions then they will be returned */
+ NodeIterator FromN = GetNode(From,From+strlen(From),0,true,true);
+ NodeIterator ToN = GetNode(To,To+strlen(To),0,true,true);
+ if (FromN.end() == true || ToN.end() == true)
+ return _error->Error(_("Failed to allocate diversion"));
+
+ // Should never happen
+ if ((FromN->Flags & Node::Diversion) != Node::Diversion ||
+ (ToN->Flags & Node::Diversion) != Node::Diversion)
+ return _error->Error(_("Internal error in AddDiversion"));
+
+ // Now, try to reclaim an existing diversion..
+ map_ptrloc Diver = 0;
+ if (FromN->Pointer != 0)
+ Diver = FromN->Pointer;
+
+ /* Make sure from and to point to the same diversion, if they don't
+ then we are trying to intermix diversions - very bad */
+ if (ToN->Pointer != 0 && ToN->Pointer != Diver)
+ {
+ // It could be that the other diversion is no longer in use
+ if ((DiverP[ToN->Pointer].Flags & Diversion::Touched) == Diversion::Touched)
+ return _error->Error(_("Trying to overwrite a diversion, %s -> %s and %s/%s"),
+ From,To,ToN.File(),ToN.Dir().Name());
+
+ // We can erase it.
+ Diversion *Div = DiverP + ToN->Pointer;
+ ToN->Pointer = 0;
+
+ if (Div->DivertTo == ToN.Offset())
+ Div->DivertTo = 0;
+ if (Div->DivertFrom == ToN.Offset())
+ Div->DivertFrom = 0;
+
+ // This diversion will be cleaned up by FinishDiverLoad
+ }
+
+ // Allocate a new diversion
+ if (Diver == 0)
+ {
+ Diver = Map.Allocate(sizeof(Diversion));
+ if (Diver == 0)
+ return false;
+ DiverP[Diver].Next = HeaderP->Diversions;
+ HeaderP->Diversions = Diver;
+ HeaderP->DiversionCount++;
+ }
+
+ // Can only have one diversion of the same files
+ Diversion *Div = DiverP + Diver;
+ if ((Div->Flags & Diversion::Touched) == Diversion::Touched)
+ return _error->Error(_("Double add of diversion %s -> %s"),From,To);
+
+ // Setup the From/To links
+ if (Div->DivertFrom != FromN.Offset() && Div->DivertFrom != ToN.Offset())
+ DropNode(Div->DivertFrom);
+ Div->DivertFrom = FromN.Offset();
+ if (Div->DivertTo != FromN.Offset() && Div->DivertTo != ToN.Offset())
+ DropNode(Div->DivertTo);
+ Div->DivertTo = ToN.Offset();
+
+ // Link it to the two nodes
+ FromN->Pointer = Diver;
+ ToN->Pointer = Diver;
+
+ // And the package
+ Div->OwnerPkg = Owner.Offset();
+ Div->Flags |= Diversion::Touched;
+
+ return true;
+}
+ /*}}}*/
+// FLCache::AddConfFile - Add a new configuration file /*{{{*/
+// ---------------------------------------------------------------------
+/* This simply adds a new conf file node to the hash table. This is only
+ used by the status file reader. It associates a hash with each conf
+ file entry that exists in the status file and the list file for
+ the proper package. Duplicate conf files (across packages) are left
+ up to other routines to deal with. */
+bool pkgFLCache::AddConfFile(const char *Name,const char *NameEnd,
+ PkgIterator const &Owner,
+ const unsigned char *Sum)
+{
+ NodeIterator Nde = GetNode(Name,NameEnd,0,false,false);
+ if (Nde.end() == true)
+ return true;
+
+ unsigned long File = Nde->File;
+ for (; Nde->File == File && Nde.end() == false; Nde++)
+ {
+ if (Nde.RealPackage() != Owner)
+ continue;
+
+ if ((Nde->Flags & Node::ConfFile) == Node::ConfFile)
+ return _error->Error(_("Duplicate conf file %s/%s"),Nde.DirN(),Nde.File());
+
+ // Allocate a new conf file structure
+ map_ptrloc Conf = Map.Allocate(sizeof(ConfFile));
+ if (Conf == 0)
+ return false;
+ ConfP[Conf].OwnerPkg = Owner.Offset();
+ memcpy(ConfP[Conf].MD5,Sum,sizeof(ConfP[Conf].MD5));
+
+ Nde->Pointer = Conf;
+ Nde->Flags |= Node::ConfFile;
+ return true;
+ }
+
+ /* This means the conf file has been replaced, but the entry in the
+ status file was not updated */
+ return true;
+}
+ /*}}}*/
+
+// NodeIterator::RealPackage - Return the package for this node /*{{{*/
+// ---------------------------------------------------------------------
+/* Since the package pointer is indirected in all sorts of interesting ways
+ this is used to get a pointer to the owning package */
+APT_PURE pkgFLCache::Package *pkgFLCache::NodeIterator::RealPackage() const
+{
+ if (Nde->Pointer == 0)
+ return 0;
+
+ if ((Nde->Flags & Node::ConfFile) == Node::ConfFile)
+ return Owner->PkgP + Owner->ConfP[Nde->Pointer].OwnerPkg;
+
+ // Diversions are ignored
+ if ((Nde->Flags & Node::Diversion) == Node::Diversion)
+ return 0;
+
+ return Owner->PkgP + Nde->Pointer;
+}
+ /*}}}*/
diff --git a/apt-inst/filelist.h b/apt-inst/filelist.h
new file mode 100644
index 000000000..5d5327f6c
--- /dev/null
+++ b/apt-inst/filelist.h
@@ -0,0 +1,313 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: filelist.h,v 1.2 2001/02/20 07:03:16 jgg Exp $
+/* ######################################################################
+
+ File Listing - Manages a Cache of File -> Package names.
+
+ This is identical to the Package cache, except that the generator
+ (which is much simpler) is integrated directly into the main class,
+ and it has been designed to handle live updates.
+
+ The storage content of the class is maintained in a memory map and is
+ written directly to the file system. Performance is traded against
+ space to give something that performs well and remains small.
+ The average per file usage is 32 bytes which yields about a meg every
+ 36k files. Directory paths are collected into a binary tree and stored
+ only once, this offsets the cost of the hash nodes enough to keep
+ memory usage slightly less than the sum of the filenames.
+
+ The file names are stored into a fixed size chained hash table that is
+ linked to the package name and to the directory component.
+
+ Each file node has a set of associated flags that indicate the current
+ state of the file.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_FILELIST_H
+#define PKGLIB_FILELIST_H
+
+#include <apt-pkg/mmap.h>
+
+#include <cstring>
+#include <string>
+
+class pkgFLCache
+{
+ public:
+ struct Header;
+ struct Node;
+ struct Directory;
+ struct Package;
+ struct Diversion;
+ struct ConfFile;
+
+ class NodeIterator;
+ class DirIterator;
+ class PkgIterator;
+ class DiverIterator;
+
+ protected:
+ std::string CacheFile;
+ DynamicMMap &Map;
+ map_ptrloc LastTreeLookup;
+ unsigned long LastLookupSize;
+
+ // Helpers for the addition algorithms
+ map_ptrloc TreeLookup(map_ptrloc *Base,const char *Text,const char *TextEnd,
+ unsigned long Size,unsigned int *Count = 0,
+ bool Insert = false);
+
+ public:
+
+ // Pointers to the arrays of items
+ Header *HeaderP;
+ Node *NodeP;
+ Directory *DirP;
+ Package *PkgP;
+ Diversion *DiverP;
+ ConfFile *ConfP;
+ char *StrP;
+ unsigned char *AnyP;
+
+ // Quick accessors
+ Node *FileHash;
+
+ // Accessors
+ Header &Head() {return *HeaderP;};
+ void PrintTree(map_ptrloc Base,unsigned long Size);
+
+ // Add/Find things
+ PkgIterator GetPkg(const char *Name,const char *End,bool Insert);
+ inline PkgIterator GetPkg(const char *Name,bool Insert);
+ NodeIterator GetNode(const char *Name,
+ const char *NameEnd,
+ map_ptrloc Loc,
+ bool Insert,bool Divert);
+ Node *HashNode(NodeIterator const &N);
+ void DropNode(map_ptrloc Node);
+
+ inline DiverIterator DiverBegin();
+
+ // Diversion control
+ void BeginDiverLoad();
+ void FinishDiverLoad();
+ bool AddDiversion(PkgIterator const &Owner,const char *From,
+ const char *To);
+ bool AddConfFile(const char *Name,const char *NameEnd,
+ PkgIterator const &Owner,const unsigned char *Sum);
+
+ pkgFLCache(DynamicMMap &Map);
+// ~pkgFLCache();
+};
+
+struct pkgFLCache::Header
+{
+ // Signature information
+ unsigned long Signature;
+ short MajorVersion;
+ short MinorVersion;
+ bool Dirty;
+
+ // Size of structure values
+ unsigned HeaderSz;
+ unsigned NodeSz;
+ unsigned DirSz;
+ unsigned PackageSz;
+ unsigned DiversionSz;
+ unsigned ConfFileSz;
+
+ // Structure Counts;
+ unsigned int NodeCount;
+ unsigned int DirCount;
+ unsigned int PackageCount;
+ unsigned int DiversionCount;
+ unsigned int ConfFileCount;
+ unsigned int HashSize;
+ unsigned long UniqNodes;
+
+ // Offsets
+ map_ptrloc FileHash;
+ map_ptrloc DirTree;
+ map_ptrloc Packages;
+ map_ptrloc Diversions;
+
+ /* Allocation pools, there should be one of these for each structure
+ excluding the header */
+ DynamicMMap::Pool Pools[5];
+
+ bool CheckSizes(Header &Against) const;
+ Header();
+};
+
+/* The bit field is used to advoid incurring an extra 4 bytes x 40000,
+ Pointer is the most infrequently used member of the structure */
+struct pkgFLCache::Node
+{
+ map_ptrloc Dir; // Dir
+ map_ptrloc File; // String
+ unsigned Pointer:24; // Package/Diversion/ConfFile
+ unsigned Flags:8; // Package
+ map_ptrloc Next; // Node
+ map_ptrloc NextPkg; // Node
+
+ enum Flags {Diversion = (1<<0),ConfFile = (1<<1),
+ NewConfFile = (1<<2),NewFile = (1<<3),
+ Unpacked = (1<<4),Replaced = (1<<5)};
+};
+
+struct pkgFLCache::Directory
+{
+ map_ptrloc Left; // Directory
+ map_ptrloc Right; // Directory
+ map_ptrloc Name; // String
+};
+
+struct pkgFLCache::Package
+{
+ map_ptrloc Left; // Package
+ map_ptrloc Right; // Package
+ map_ptrloc Name; // String
+ map_ptrloc Files; // Node
+};
+
+struct pkgFLCache::Diversion
+{
+ map_ptrloc OwnerPkg; // Package
+ map_ptrloc DivertFrom; // Node
+ map_ptrloc DivertTo; // String
+
+ map_ptrloc Next; // Diversion
+ unsigned long Flags;
+
+ enum Flags {Touched = (1<<0)};
+};
+
+struct pkgFLCache::ConfFile
+{
+ map_ptrloc OwnerPkg; // Package
+ unsigned char MD5[16];
+};
+
+class pkgFLCache::PkgIterator
+{
+ Package *Pkg;
+ pkgFLCache *Owner;
+
+ public:
+
+ inline bool end() const {return Owner == 0 || Pkg == Owner->PkgP?true:false;}
+
+ // Accessors
+ inline Package *operator ->() {return Pkg;}
+ inline Package const *operator ->() const {return Pkg;}
+ inline Package const &operator *() const {return *Pkg;}
+ inline operator Package *() {return Pkg == Owner->PkgP?0:Pkg;}
+ inline operator Package const *() const {return Pkg == Owner->PkgP?0:Pkg;}
+
+ inline unsigned long Offset() const {return Pkg - Owner->PkgP;}
+ inline const char *Name() const {return Pkg->Name == 0?0:Owner->StrP + Pkg->Name;}
+ inline pkgFLCache::NodeIterator Files() const;
+
+ PkgIterator() : Pkg(0), Owner(0) {}
+ PkgIterator(pkgFLCache &Owner,Package *Trg) : Pkg(Trg), Owner(&Owner) {}
+};
+
+class pkgFLCache::DirIterator
+{
+ Directory *Dir;
+ pkgFLCache *Owner;
+
+ public:
+
+ // Accessors
+ inline Directory *operator ->() {return Dir;}
+ inline Directory const *operator ->() const {return Dir;}
+ inline Directory const &operator *() const {return *Dir;}
+ inline operator Directory *() {return Dir == Owner->DirP?0:Dir;}
+ inline operator Directory const *() const {return Dir == Owner->DirP?0:Dir;}
+
+ inline const char *Name() const {return Dir->Name == 0?0:Owner->StrP + Dir->Name;}
+
+ DirIterator() : Dir(0), Owner(0) {}
+ DirIterator(pkgFLCache &Owner,Directory *Trg) : Dir(Trg), Owner(&Owner) {}
+};
+
+class pkgFLCache::DiverIterator
+{
+ Diversion *Diver;
+ pkgFLCache *Owner;
+
+ public:
+
+ // Iteration
+ void operator ++(int) {if (Diver != Owner->DiverP) Diver = Owner->DiverP + Diver->Next;}
+ inline void operator ++() {operator ++(0);}
+ inline bool end() const {return Owner == 0 || Diver == Owner->DiverP;}
+
+ // Accessors
+ inline Diversion *operator ->() {return Diver;}
+ inline Diversion const *operator ->() const {return Diver;}
+ inline Diversion const &operator *() const {return *Diver;}
+ inline operator Diversion *() {return Diver == Owner->DiverP?0:Diver;}
+ inline operator Diversion const *() const {return Diver == Owner->DiverP?0:Diver;}
+
+ inline PkgIterator OwnerPkg() const {return PkgIterator(*Owner,Owner->PkgP + Diver->OwnerPkg);}
+ inline NodeIterator DivertFrom() const;
+ inline NodeIterator DivertTo() const;
+
+ DiverIterator() : Diver(0), Owner(0) {};
+ DiverIterator(pkgFLCache &Owner,Diversion *Trg) : Diver(Trg), Owner(&Owner) {}
+};
+
+class pkgFLCache::NodeIterator
+{
+ Node *Nde;
+ enum {NdePkg, NdeHash} Type;
+ pkgFLCache *Owner;
+
+ public:
+
+ // Iteration
+ void operator ++(int) {if (Nde != Owner->NodeP) Nde = Owner->NodeP +
+ (Type == NdePkg?Nde->NextPkg:Nde->Next);}
+ inline void operator ++() {operator ++(0);}
+ inline bool end() const {return Owner == 0 || Nde == Owner->NodeP;}
+
+ // Accessors
+ inline Node *operator ->() {return Nde;}
+ inline Node const *operator ->() const {return Nde;}
+ inline Node const &operator *() const {return *Nde;}
+ inline operator Node *() {return Nde == Owner->NodeP?0:Nde;}
+ inline operator Node const *() const {return Nde == Owner->NodeP?0:Nde;}
+ inline unsigned long Offset() const {return Nde - Owner->NodeP;}
+ inline DirIterator Dir() const {return DirIterator(*Owner,Owner->DirP + Nde->Dir);}
+ inline DiverIterator Diversion() const {return DiverIterator(*Owner,Owner->DiverP + Nde->Pointer);}
+ inline const char *File() const {return Nde->File == 0?0:Owner->StrP + Nde->File;}
+ inline const char *DirN() const {return Owner->StrP + Owner->DirP[Nde->Dir].Name;}
+ Package *RealPackage() const;
+
+ NodeIterator() : Nde(0), Type(NdeHash), Owner(0) {};
+ NodeIterator(pkgFLCache &Owner) : Nde(Owner.NodeP), Type(NdeHash), Owner(&Owner) {}
+ NodeIterator(pkgFLCache &Owner,Node *Trg) : Nde(Trg), Type(NdeHash), Owner(&Owner) {}
+ NodeIterator(pkgFLCache &Owner,Node *Trg,Package *) : Nde(Trg), Type(NdePkg), Owner(&Owner) {}
+};
+
+/* Inlines with forward references that cannot be included directly in their
+ respsective classes */
+inline pkgFLCache::NodeIterator pkgFLCache::DiverIterator::DivertFrom() const
+ {return NodeIterator(*Owner,Owner->NodeP + Diver->DivertFrom);}
+inline pkgFLCache::NodeIterator pkgFLCache::DiverIterator::DivertTo() const
+ {return NodeIterator(*Owner,Owner->NodeP + Diver->DivertTo);}
+
+inline pkgFLCache::NodeIterator pkgFLCache::PkgIterator::Files() const
+ {return NodeIterator(*Owner,Owner->NodeP + Pkg->Files,Pkg);}
+
+inline pkgFLCache::DiverIterator pkgFLCache::DiverBegin()
+ {return DiverIterator(*this,DiverP + HeaderP->Diversions);}
+
+inline pkgFLCache::PkgIterator pkgFLCache::GetPkg(const char *Name,bool Insert)
+ {return GetPkg(Name,Name+strlen(Name),Insert);}
+
+#endif
diff --git a/apt-pkg/CMakeLists.txt b/apt-pkg/CMakeLists.txt
new file mode 100644
index 000000000..e3e078b81
--- /dev/null
+++ b/apt-pkg/CMakeLists.txt
@@ -0,0 +1,70 @@
+# Include apt-pkg directly, as some files have #include <system.h>
+include_directories(${PROJECT_BINARY_DIR}/include/apt-pkg)
+
+add_definitions("-DAPT_PKG_EXPOSE_STRING_VIEW")
+
+file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/include/apt-pkg/)
+execute_process(COMMAND ${PERL_EXECUTABLE} ${PROJECT_SOURCE_DIR}/triehash/triehash.pl
+ --ignore-case
+ --header ${PROJECT_BINARY_DIR}/include/apt-pkg/tagfile-keys.h
+ --code ${CMAKE_CURRENT_BINARY_DIR}/tagfile-keys.cc
+ --enum-class
+ --enum-name pkgTagSection::Key
+ --function-name pkgTagHash
+ --include "<apt-pkg/tagfile.h>"
+ ${CMAKE_CURRENT_SOURCE_DIR}/tagfile-keys.list)
+set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "tagfile-keys.list")
+
+
+# Set the version of the library
+execute_process(COMMAND awk -v ORS=. "/^\#define APT_PKG_M/ {print \$3}"
+ COMMAND sed "s/\\.\$//"
+ INPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/contrib/macros.h
+ OUTPUT_VARIABLE MAJOR OUTPUT_STRIP_TRAILING_WHITESPACE)
+execute_process(COMMAND grep "^#define APT_PKG_RELEASE"
+ COMMAND cut -d " " -f 3
+ INPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/contrib/macros.h
+ OUTPUT_VARIABLE MINOR OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+message(STATUS "Building libapt-pkg ${MAJOR} (release ${MINOR})")
+set(APT_PKG_MAJOR ${MAJOR} PARENT_SCOPE) # exporting for methods/CMakeLists.txt
+
+# Definition of the C++ files used to build the library - note that this
+# is expanded at CMake time, so you have to rerun cmake if you add or remove
+# a file (you can just run cmake . in the build directory)
+file(GLOB_RECURSE library "*.cc" "${CMAKE_CURRENT_BINARY_DIR}/tagfile-keys.cc")
+file(GLOB_RECURSE headers "*.h")
+
+# Create a library using the C++ files
+add_library(apt-pkg SHARED ${library})
+add_dependencies(apt-pkg apt-pkg-versionscript)
+# Link the library and set the SONAME
+target_include_directories(apt-pkg
+ PRIVATE ${ZLIB_INCLUDE_DIRS}
+ ${BZIP2_INCLUDE_DIR}
+ ${LZMA_INCLUDE_DIRS}
+ ${LZ4_INCLUDE_DIRS}
+ ${ICONV_INCLUDE_DIRS}
+)
+
+target_link_libraries(apt-pkg
+ PRIVATE -lutil ${CMAKE_DL_LIBS} ${RESOLV_LIBRARIES}
+ ${CMAKE_THREAD_LIBS_INIT}
+ ${ZLIB_LIBRARIES}
+ ${BZIP2_LIBRARIES}
+ ${LZMA_LIBRARIES}
+ ${LZ4_LIBRARIES}
+ ${ICONV_LIBRARIES}
+)
+set_target_properties(apt-pkg PROPERTIES VERSION ${MAJOR}.${MINOR})
+set_target_properties(apt-pkg PROPERTIES SOVERSION ${MAJOR})
+add_version_script(apt-pkg)
+
+# Install the library and the header files
+install(TARGETS apt-pkg LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+install(FILES ${headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/apt-pkg)
+flatify(${PROJECT_BINARY_DIR}/include/apt-pkg/ "${headers}")
+
+if(CMAKE_BUILD_TYPE STREQUAL "Coverage")
+ target_link_libraries(apt-pkg PUBLIC noprofile)
+endif()
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc
new file mode 100644
index 000000000..3c85f8adf
--- /dev/null
+++ b/apt-pkg/acquire-item.cc
@@ -0,0 +1,3802 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: acquire-item.cc,v 1.46.2.9 2004/01/16 18:51:11 mdz Exp $
+/* ######################################################################
+
+ Acquire Item - Item to acquire
+
+ Each item can download to exactly one file at a time. This means you
+ cannot create an item that fetches two uri's to two files at the same
+ time. The pkgAcqIndex class creates a second class upon instantiation
+ to fetch the other index files because of this.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/acquire-item.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/metaindex.h>
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/pkgrecords.h>
+#include <apt-pkg/gpgv.h>
+
+#include <algorithm>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <iostream>
+#include <vector>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <errno.h>
+#include <string>
+#include <stdio.h>
+#include <ctime>
+#include <sstream>
+#include <numeric>
+#include <random>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+static void printHashSumComparison(std::string const &URI, HashStringList const &Expected, HashStringList const &Actual) /*{{{*/
+{
+ if (_config->FindB("Debug::Acquire::HashSumMismatch", false) == false)
+ return;
+ std::cerr << std::endl << URI << ":" << std::endl << " Expected Hash: " << std::endl;
+ for (HashStringList::const_iterator hs = Expected.begin(); hs != Expected.end(); ++hs)
+ std::cerr << "\t- " << hs->toStr() << std::endl;
+ std::cerr << " Actual Hash: " << std::endl;
+ for (HashStringList::const_iterator hs = Actual.begin(); hs != Actual.end(); ++hs)
+ std::cerr << "\t- " << hs->toStr() << std::endl;
+}
+ /*}}}*/
+static std::string GetPartialFileName(std::string const &file) /*{{{*/
+{
+ std::string DestFile = _config->FindDir("Dir::State::lists") + "partial/";
+ DestFile += file;
+ return DestFile;
+}
+ /*}}}*/
+static std::string GetPartialFileNameFromURI(std::string const &uri) /*{{{*/
+{
+ return GetPartialFileName(URItoFileName(uri));
+}
+ /*}}}*/
+static std::string GetFinalFileNameFromURI(std::string const &uri) /*{{{*/
+{
+ return _config->FindDir("Dir::State::lists") + URItoFileName(uri);
+}
+ /*}}}*/
+static std::string GetKeepCompressedFileName(std::string file, IndexTarget const &Target)/*{{{*/
+{
+ if (Target.KeepCompressed == false)
+ return file;
+
+ std::string const KeepCompressedAs = Target.Option(IndexTarget::KEEPCOMPRESSEDAS);
+ if (KeepCompressedAs.empty() == false)
+ {
+ std::string const ext = KeepCompressedAs.substr(0, KeepCompressedAs.find(' '));
+ if (ext != "uncompressed")
+ file.append(".").append(ext);
+ }
+ return file;
+}
+ /*}}}*/
+static std::string GetMergeDiffsPatchFileName(std::string const &Final, std::string const &Patch)/*{{{*/
+{
+ // rred expects the patch as $FinalFile.ed.$patchname.gz
+ return Final + ".ed." + Patch + ".gz";
+}
+ /*}}}*/
+static std::string GetDiffsPatchFileName(std::string const &Final) /*{{{*/
+{
+ // rred expects the patch as $FinalFile.ed
+ return Final + ".ed";
+}
+ /*}}}*/
+static std::string GetExistingFilename(std::string const &File) /*{{{*/
+{
+ if (RealFileExists(File))
+ return File;
+ for (auto const &type : APT::Configuration::getCompressorExtensions())
+ {
+ std::string const Final = File + type;
+ if (RealFileExists(Final))
+ return Final;
+ }
+ return "";
+}
+ /*}}}*/
+static std::string GetDiffIndexFileName(std::string const &Name) /*{{{*/
+{
+ return Name + ".diff/Index";
+}
+ /*}}}*/
+static std::string GetDiffIndexURI(IndexTarget const &Target) /*{{{*/
+{
+ return Target.URI + ".diff/Index";
+}
+ /*}}}*/
+
+static void ReportMirrorFailureToCentral(pkgAcquire::Item const &I, std::string const &FailCode, std::string const &Details)/*{{{*/
+{
+ // we only act if a mirror was used at all
+ if(I.UsedMirror.empty())
+ return;
+#if 0
+ std::cerr << "\nReportMirrorFailure: "
+ << UsedMirror
+ << " Uri: " << DescURI()
+ << " FailCode: "
+ << FailCode << std::endl;
+#endif
+ string const report = _config->Find("Methods::Mirror::ProblemReporting",
+ LIBEXEC_DIR "/apt-report-mirror-failure");
+ if(!FileExists(report))
+ return;
+
+ std::vector<char const*> const Args = {
+ report.c_str(),
+ I.UsedMirror.c_str(),
+ I.DescURI().c_str(),
+ FailCode.c_str(),
+ Details.c_str(),
+ NULL
+ };
+
+ pid_t pid = ExecFork();
+ if(pid < 0)
+ {
+ _error->Error("ReportMirrorFailure Fork failed");
+ return;
+ }
+ else if(pid == 0)
+ {
+ execvp(Args[0], (char**)Args.data());
+ std::cerr << "Could not exec " << Args[0] << std::endl;
+ _exit(100);
+ }
+ if(!ExecWait(pid, "report-mirror-failure"))
+ _error->Warning("Couldn't report problem to '%s'", report.c_str());
+}
+ /*}}}*/
+
+static APT_NONNULL(2) bool MessageInsecureRepository(bool const isError, char const * const msg, std::string const &repo)/*{{{*/
+{
+ std::string m;
+ strprintf(m, msg, repo.c_str());
+ if (isError)
+ {
+ _error->Error("%s", m.c_str());
+ _error->Notice("%s", _("Updating from such a repository can't be done securely, and is therefore disabled by default."));
+ }
+ else
+ {
+ _error->Warning("%s", m.c_str());
+ _error->Notice("%s", _("Data from such a repository can't be authenticated and is therefore potentially dangerous to use."));
+ }
+ _error->Notice("%s", _("See apt-secure(8) manpage for repository creation and user configuration details."));
+ return false;
+}
+ /*}}}*/
+// AllowInsecureRepositories /*{{{*/
+enum class InsecureType { UNSIGNED, WEAK, NORELEASE };
+static bool TargetIsAllowedToBe(IndexTarget const &Target, InsecureType const type)
+{
+ if (_config->FindB("Acquire::AllowInsecureRepositories"))
+ return true;
+
+ if (Target.OptionBool(IndexTarget::ALLOW_INSECURE))
+ return true;
+
+ switch (type)
+ {
+ case InsecureType::UNSIGNED: break;
+ case InsecureType::NORELEASE: break;
+ case InsecureType::WEAK:
+ if (_config->FindB("Acquire::AllowWeakRepositories"))
+ return true;
+ if (Target.OptionBool(IndexTarget::ALLOW_WEAK))
+ return true;
+ break;
+ }
+ return false;
+}
+static bool APT_NONNULL(3, 4, 5) AllowInsecureRepositories(InsecureType const msg, std::string const &repo,
+ metaIndex const * const MetaIndexParser, pkgAcqMetaClearSig * const TransactionManager, pkgAcquire::Item * const I)
+{
+ // we skip weak downgrades as its unlikely that a repository gets really weaker –
+ // its more realistic that apt got pickier in a newer version
+ if (msg != InsecureType::WEAK)
+ {
+ std::string const FinalInRelease = TransactionManager->GetFinalFilename();
+ std::string const FinalReleasegpg = FinalInRelease.substr(0, FinalInRelease.length() - strlen("InRelease")) + "Release.gpg";
+ if (RealFileExists(FinalReleasegpg) || RealFileExists(FinalInRelease))
+ {
+ char const * msgstr = nullptr;
+ switch (msg)
+ {
+ case InsecureType::UNSIGNED: msgstr = _("The repository '%s' is no longer signed."); break;
+ case InsecureType::NORELEASE: msgstr = _("The repository '%s' does no longer have a Release file."); break;
+ case InsecureType::WEAK: /* unreachable */ break;
+ }
+ if (_config->FindB("Acquire::AllowDowngradeToInsecureRepositories") ||
+ TransactionManager->Target.OptionBool(IndexTarget::ALLOW_DOWNGRADE_TO_INSECURE))
+ {
+ // meh, the users wants to take risks (we still mark the packages
+ // from this repository as unauthenticated)
+ _error->Warning(msgstr, repo.c_str());
+ _error->Warning(_("This is normally not allowed, but the option "
+ "Acquire::AllowDowngradeToInsecureRepositories was "
+ "given to override it."));
+ } else {
+ MessageInsecureRepository(true, msgstr, repo);
+ TransactionManager->AbortTransaction();
+ I->Status = pkgAcquire::Item::StatError;
+ return false;
+ }
+ }
+ }
+
+ if(MetaIndexParser->GetTrusted() == metaIndex::TRI_YES)
+ return true;
+
+ char const * msgstr = nullptr;
+ switch (msg)
+ {
+ case InsecureType::UNSIGNED: msgstr = _("The repository '%s' is not signed."); break;
+ case InsecureType::NORELEASE: msgstr = _("The repository '%s' does not have a Release file."); break;
+ case InsecureType::WEAK: msgstr = _("The repository '%s' provides only weak security information."); break;
+ }
+
+ if (TargetIsAllowedToBe(TransactionManager->Target, msg) == true)
+ {
+ MessageInsecureRepository(false, msgstr, repo);
+ return true;
+ }
+
+ MessageInsecureRepository(true, msgstr, repo);
+ TransactionManager->AbortTransaction();
+ I->Status = pkgAcquire::Item::StatError;
+ return false;
+}
+ /*}}}*/
+static HashStringList GetExpectedHashesFromFor(metaIndex * const Parser, std::string const &MetaKey)/*{{{*/
+{
+ if (Parser == NULL)
+ return HashStringList();
+ metaIndex::checkSum * const R = Parser->Lookup(MetaKey);
+ if (R == NULL)
+ return HashStringList();
+ return R->Hashes;
+}
+ /*}}}*/
+
+// all ::HashesRequired and ::GetExpectedHashes implementations /*{{{*/
+/* ::GetExpectedHashes is abstract and has to be implemented by all subclasses.
+ It is best to implement it as broadly as possible, while ::HashesRequired defaults
+ to true and should be as restrictive as possible for false cases. Note that if
+ a hash is returned by ::GetExpectedHashes it must match. Only if it doesn't
+ ::HashesRequired is called to evaluate if its okay to have no hashes. */
+APT_CONST bool pkgAcqTransactionItem::HashesRequired() const
+{
+ /* signed repositories obviously have a parser and good hashes.
+ unsigned repositories, too, as even if we can't trust them for security,
+ we can at least trust them for integrity of the download itself.
+ Only repositories without a Release file can (obviously) not have
+ hashes – and they are very uncommon and strongly discouraged */
+ if (TransactionManager->MetaIndexParser->GetLoadedSuccessfully() != metaIndex::TRI_YES)
+ return false;
+ if (TargetIsAllowedToBe(Target, InsecureType::WEAK))
+ {
+ /* If we allow weak hashes, we check that we have some (weak) and then
+ declare hashes not needed. That will tip us in the right direction
+ as if hashes exist, they will be used, even if not required */
+ auto const hsl = GetExpectedHashes();
+ if (hsl.usable())
+ return true;
+ if (hsl.empty() == false)
+ return false;
+ }
+ return true;
+}
+HashStringList pkgAcqTransactionItem::GetExpectedHashes() const
+{
+ return GetExpectedHashesFor(GetMetaKey());
+}
+
+APT_CONST bool pkgAcqMetaBase::HashesRequired() const
+{
+ // Release and co have no hashes 'by design'.
+ return false;
+}
+HashStringList pkgAcqMetaBase::GetExpectedHashes() const
+{
+ return HashStringList();
+}
+
+APT_CONST bool pkgAcqIndexDiffs::HashesRequired() const
+{
+ /* We can't check hashes of rred result as we don't know what the
+ hash of the file will be. We just know the hash of the patch(es),
+ the hash of the file they will apply on and the hash of the resulting
+ file. */
+ if (State == StateFetchDiff)
+ return true;
+ return false;
+}
+HashStringList pkgAcqIndexDiffs::GetExpectedHashes() const
+{
+ if (State == StateFetchDiff)
+ return available_patches[0].download_hashes;
+ return HashStringList();
+}
+
+APT_CONST bool pkgAcqIndexMergeDiffs::HashesRequired() const
+{
+ /* @see #pkgAcqIndexDiffs::HashesRequired, with the difference that
+ we can check the rred result after all patches are applied as
+ we know the expected result rather than potentially apply more patches */
+ if (State == StateFetchDiff)
+ return true;
+ return State == StateApplyDiff;
+}
+HashStringList pkgAcqIndexMergeDiffs::GetExpectedHashes() const
+{
+ if (State == StateFetchDiff)
+ return patch.download_hashes;
+ else if (State == StateApplyDiff)
+ return GetExpectedHashesFor(Target.MetaKey);
+ return HashStringList();
+}
+
+APT_CONST bool pkgAcqArchive::HashesRequired() const
+{
+ return LocalSource == false;
+}
+HashStringList pkgAcqArchive::GetExpectedHashes() const
+{
+ // figured out while parsing the records
+ return ExpectedHashes;
+}
+
+APT_CONST bool pkgAcqFile::HashesRequired() const
+{
+ // supplied as parameter at creation time, so the caller decides
+ return ExpectedHashes.usable();
+}
+HashStringList pkgAcqFile::GetExpectedHashes() const
+{
+ return ExpectedHashes;
+}
+ /*}}}*/
+// Acquire::Item::QueueURI and specialisations from child classes /*{{{*/
+bool pkgAcquire::Item::QueueURI(pkgAcquire::ItemDesc &Item)
+{
+ Owner->Enqueue(Item);
+ return true;
+}
+/* The idea here is that an item isn't queued if it exists on disk and the
+ transition manager was a hit as this means that the files it contains
+ the checksums for can't be updated either (or they are and we are asking
+ for a hashsum mismatch to happen which helps nobody) */
+bool pkgAcqTransactionItem::QueueURI(pkgAcquire::ItemDesc &Item)
+{
+ if (TransactionManager->State != TransactionStarted)
+ {
+ if (_config->FindB("Debug::Acquire::Transaction", false))
+ std::clog << "Skip " << Target.URI << " as transaction was already dealt with!" << std::endl;
+ return false;
+ }
+ std::string const FinalFile = GetFinalFilename();
+ if (TransactionManager->IMSHit == true && FileExists(FinalFile) == true)
+ {
+ PartialFile = DestFile = FinalFile;
+ Status = StatDone;
+ return false;
+ }
+ // If we got the InRelease file via a mirror, pick all indexes directly from this mirror, too
+ if (TransactionManager->BaseURI.empty() == false && UsedMirror.empty() &&
+ URI::SiteOnly(Item.URI) != URI::SiteOnly(TransactionManager->BaseURI))
+ {
+ // this ensures we rewrite only once and only the first step
+ auto const OldBaseURI = Target.Option(IndexTarget::BASE_URI);
+ if (OldBaseURI.empty() == false && APT::String::Startswith(Item.URI, OldBaseURI))
+ {
+ auto const ExtraPath = Item.URI.substr(OldBaseURI.length());
+ Item.URI = flCombine(TransactionManager->BaseURI, ExtraPath);
+ UsedMirror = TransactionManager->UsedMirror;
+ if (Item.Description.find(" ") != string::npos)
+ Item.Description.replace(0, Item.Description.find(" "), UsedMirror);
+ }
+ }
+ return pkgAcquire::Item::QueueURI(Item);
+}
+/* The transition manager InRelease itself (or its older sisters-in-law
+ Release & Release.gpg) is always queued as this allows us to rerun gpgv
+ on it to verify that we aren't stalled with old files */
+bool pkgAcqMetaBase::QueueURI(pkgAcquire::ItemDesc &Item)
+{
+ return pkgAcquire::Item::QueueURI(Item);
+}
+/* the Diff/Index needs to queue also the up-to-date complete index file
+ to ensure that the list cleaner isn't eating it */
+bool pkgAcqDiffIndex::QueueURI(pkgAcquire::ItemDesc &Item)
+{
+ if (pkgAcqTransactionItem::QueueURI(Item) == true)
+ return true;
+ QueueOnIMSHit();
+ return false;
+}
+ /*}}}*/
+// Acquire::Item::GetFinalFilename and specialisations for child classes /*{{{*/
+std::string pkgAcquire::Item::GetFinalFilename() const
+{
+ // Beware: Desc.URI is modified by redirections
+ return GetFinalFileNameFromURI(Desc.URI);
+}
+std::string pkgAcqDiffIndex::GetFinalFilename() const
+{
+ std::string const FinalFile = GetFinalFileNameFromURI(GetDiffIndexURI(Target));
+ // we don't want recompress, so lets keep whatever we got
+ if (CurrentCompressionExtension == "uncompressed")
+ return FinalFile;
+ return FinalFile + "." + CurrentCompressionExtension;
+}
+std::string pkgAcqIndex::GetFinalFilename() const
+{
+ std::string const FinalFile = GetFinalFileNameFromURI(Target.URI);
+ return GetKeepCompressedFileName(FinalFile, Target);
+}
+std::string pkgAcqMetaSig::GetFinalFilename() const
+{
+ return GetFinalFileNameFromURI(Target.URI);
+}
+std::string pkgAcqBaseIndex::GetFinalFilename() const
+{
+ return GetFinalFileNameFromURI(Target.URI);
+}
+std::string pkgAcqMetaBase::GetFinalFilename() const
+{
+ return GetFinalFileNameFromURI(Target.URI);
+}
+std::string pkgAcqArchive::GetFinalFilename() const
+{
+ return _config->FindDir("Dir::Cache::Archives") + flNotDir(StoreFilename);
+}
+ /*}}}*/
+// pkgAcqTransactionItem::GetMetaKey and specialisations for child classes /*{{{*/
+std::string pkgAcqTransactionItem::GetMetaKey() const
+{
+ return Target.MetaKey;
+}
+std::string pkgAcqIndex::GetMetaKey() const
+{
+ if (Stage == STAGE_DECOMPRESS_AND_VERIFY || CurrentCompressionExtension == "uncompressed")
+ return Target.MetaKey;
+ return Target.MetaKey + "." + CurrentCompressionExtension;
+}
+std::string pkgAcqDiffIndex::GetMetaKey() const
+{
+ auto const metakey = GetDiffIndexFileName(Target.MetaKey);
+ if (CurrentCompressionExtension == "uncompressed")
+ return metakey;
+ return metakey + "." + CurrentCompressionExtension;
+}
+ /*}}}*/
+//pkgAcqTransactionItem::TransactionState and specialisations for child classes /*{{{*/
+bool pkgAcqTransactionItem::TransactionState(TransactionStates const state)
+{
+ bool const Debug = _config->FindB("Debug::Acquire::Transaction", false);
+ switch(state)
+ {
+ case TransactionStarted: _error->Fatal("Item %s changed to invalid transaction start state!", Target.URI.c_str()); break;
+ case TransactionAbort:
+ if(Debug == true)
+ std::clog << " Cancel: " << DestFile << std::endl;
+ if (Status == pkgAcquire::Item::StatIdle)
+ {
+ Status = pkgAcquire::Item::StatDone;
+ Dequeue();
+ }
+ break;
+ case TransactionCommit:
+ if(PartialFile.empty() == false)
+ {
+ bool sameFile = (PartialFile == DestFile);
+ // we use symlinks on IMS-Hit to avoid copies
+ if (RealFileExists(DestFile))
+ {
+ struct stat Buf;
+ if (lstat(PartialFile.c_str(), &Buf) != -1)
+ {
+ if (S_ISLNK(Buf.st_mode) && Buf.st_size > 0)
+ {
+ char partial[Buf.st_size + 1];
+ ssize_t const sp = readlink(PartialFile.c_str(), partial, Buf.st_size);
+ if (sp == -1)
+ _error->Errno("pkgAcqTransactionItem::TransactionState-sp", _("Failed to readlink %s"), PartialFile.c_str());
+ else
+ {
+ partial[sp] = '\0';
+ sameFile = (DestFile == partial);
+ }
+ }
+ }
+ else
+ _error->Errno("pkgAcqTransactionItem::TransactionState-stat", _("Failed to stat %s"), PartialFile.c_str());
+ }
+ if (sameFile == false)
+ {
+ // ensure that even without lists-cleanup all compressions are nuked
+ std::string FinalFile = GetFinalFileNameFromURI(Target.URI);
+ if (FileExists(FinalFile))
+ {
+ if(Debug == true)
+ std::clog << "rm " << FinalFile << " # " << DescURI() << std::endl;
+ if (RemoveFile("TransactionStates-Cleanup", FinalFile) == false)
+ return false;
+ }
+ for (auto const &ext: APT::Configuration::getCompressorExtensions())
+ {
+ auto const Final = FinalFile + ext;
+ if (FileExists(Final))
+ {
+ if(Debug == true)
+ std::clog << "rm " << Final << " # " << DescURI() << std::endl;
+ if (RemoveFile("TransactionStates-Cleanup", Final) == false)
+ return false;
+ }
+ }
+ if(Debug == true)
+ std::clog << "mv " << PartialFile << " -> "<< DestFile << " # " << DescURI() << std::endl;
+ if (Rename(PartialFile, DestFile) == false)
+ return false;
+ }
+ else if(Debug == true)
+ std::clog << "keep " << PartialFile << " # " << DescURI() << std::endl;
+
+ } else {
+ if(Debug == true)
+ std::clog << "rm " << DestFile << " # " << DescURI() << std::endl;
+ if (RemoveFile("TransItem::TransactionCommit", DestFile) == false)
+ return false;
+ }
+ break;
+ }
+ return true;
+}
+bool pkgAcqMetaBase::TransactionState(TransactionStates const state)
+{
+ // Do not remove InRelease on IMSHit of Release.gpg [yes, this is very edgecasey]
+ if (TransactionManager->IMSHit == false)
+ return pkgAcqTransactionItem::TransactionState(state);
+ return true;
+}
+bool pkgAcqIndex::TransactionState(TransactionStates const state)
+{
+ if (pkgAcqTransactionItem::TransactionState(state) == false)
+ return false;
+
+ switch (state)
+ {
+ case TransactionStarted: _error->Fatal("AcqIndex %s changed to invalid transaction start state!", Target.URI.c_str()); break;
+ case TransactionAbort:
+ if (Stage == STAGE_DECOMPRESS_AND_VERIFY)
+ {
+ // keep the compressed file, but drop the decompressed
+ EraseFileName.clear();
+ if (PartialFile.empty() == false && flExtension(PartialFile) != CurrentCompressionExtension)
+ RemoveFile("TransactionAbort", PartialFile);
+ }
+ break;
+ case TransactionCommit:
+ if (EraseFileName.empty() == false)
+ RemoveFile("AcqIndex::TransactionCommit", EraseFileName);
+ break;
+ }
+ return true;
+}
+bool pkgAcqDiffIndex::TransactionState(TransactionStates const state)
+{
+ if (pkgAcqTransactionItem::TransactionState(state) == false)
+ return false;
+
+ switch (state)
+ {
+ case TransactionStarted: _error->Fatal("Item %s changed to invalid transaction start state!", Target.URI.c_str()); break;
+ case TransactionCommit:
+ break;
+ case TransactionAbort:
+ std::string const Partial = GetPartialFileNameFromURI(Target.URI);
+ RemoveFile("TransactionAbort", Partial);
+ break;
+ }
+
+ return true;
+}
+ /*}}}*/
+
+class APT_HIDDEN NoActionItem : public pkgAcquire::Item /*{{{*/
+/* The sole purpose of this class is having an item which does nothing to
+ reach its done state to prevent cleanup deleting the mentioned file.
+ Handy in cases in which we know we have the file already, like IMS-Hits. */
+{
+ IndexTarget const Target;
+ public:
+ virtual std::string DescURI() const APT_OVERRIDE {return Target.URI;};
+ virtual HashStringList GetExpectedHashes() const APT_OVERRIDE {return HashStringList();};
+
+ NoActionItem(pkgAcquire * const Owner, IndexTarget const &Target) :
+ pkgAcquire::Item(Owner), Target(Target)
+ {
+ Status = StatDone;
+ DestFile = GetFinalFileNameFromURI(Target.URI);
+ }
+ NoActionItem(pkgAcquire * const Owner, IndexTarget const &Target, std::string const &FinalFile) :
+ pkgAcquire::Item(Owner), Target(Target)
+ {
+ Status = StatDone;
+ DestFile = FinalFile;
+ }
+};
+ /*}}}*/
+class APT_HIDDEN CleanupItem : public pkgAcqTransactionItem /*{{{*/
+/* This class ensures that a file which was configured but isn't downloaded
+ for various reasons isn't kept in an old version in the lists directory.
+ In a way its the reverse of NoActionItem as it helps with removing files
+ even if the lists-cleanup is deactivated. */
+{
+ public:
+ virtual std::string DescURI() const APT_OVERRIDE {return Target.URI;};
+ virtual HashStringList GetExpectedHashes() const APT_OVERRIDE {return HashStringList();};
+
+ CleanupItem(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager, IndexTarget const &Target) :
+ pkgAcqTransactionItem(Owner, TransactionManager, Target)
+ {
+ Status = StatDone;
+ DestFile = GetFinalFileNameFromURI(Target.URI);
+ }
+ bool TransactionState(TransactionStates const state) APT_OVERRIDE
+ {
+ switch (state)
+ {
+ case TransactionStarted:
+ break;
+ case TransactionAbort:
+ break;
+ case TransactionCommit:
+ if (_config->FindB("Debug::Acquire::Transaction", false) == true)
+ std::clog << "rm " << DestFile << " # " << DescURI() << std::endl;
+ if (RemoveFile("TransItem::TransactionCommit", DestFile) == false)
+ return false;
+ break;
+ }
+ return true;
+ }
+};
+ /*}}}*/
+
+// Acquire::Item::Item - Constructor /*{{{*/
+class pkgAcquire::Item::Private
+{
+public:
+ std::vector<std::string> PastRedirections;
+};
+APT_IGNORE_DEPRECATED_PUSH
+pkgAcquire::Item::Item(pkgAcquire * const owner) :
+ FileSize(0), PartialSize(0), Mode(0), ID(0), Complete(false), Local(false),
+ QueueCounter(0), ExpectedAdditionalItems(0), Owner(owner), d(new Private())
+{
+ Owner->Add(this);
+ Status = StatIdle;
+}
+APT_IGNORE_DEPRECATED_POP
+ /*}}}*/
+// Acquire::Item::~Item - Destructor /*{{{*/
+pkgAcquire::Item::~Item()
+{
+ Owner->Remove(this);
+ delete d;
+}
+ /*}}}*/
+std::string pkgAcquire::Item::Custom600Headers() const /*{{{*/
+{
+ return std::string();
+}
+ /*}}}*/
+std::string pkgAcquire::Item::ShortDesc() const /*{{{*/
+{
+ return DescURI();
+}
+ /*}}}*/
+APT_CONST void pkgAcquire::Item::Finished() /*{{{*/
+{
+}
+ /*}}}*/
+APT_PURE pkgAcquire * pkgAcquire::Item::GetOwner() const /*{{{*/
+{
+ return Owner;
+}
+ /*}}}*/
+APT_CONST pkgAcquire::ItemDesc &pkgAcquire::Item::GetItemDesc() /*{{{*/
+{
+ return Desc;
+}
+ /*}}}*/
+APT_CONST bool pkgAcquire::Item::IsTrusted() const /*{{{*/
+{
+ return false;
+}
+ /*}}}*/
+// Acquire::Item::Failed - Item failed to download /*{{{*/
+// ---------------------------------------------------------------------
+/* We return to an idle state if there are still other queues that could
+ fetch this object */
+static void formatHashsum(std::ostream &out, HashString const &hs)
+{
+ auto const type = hs.HashType();
+ if (type == "Checksum-FileSize")
+ out << " - Filesize";
+ else
+ out << " - " << type;
+ out << ':' << hs.HashValue();
+ if (hs.usable() == false)
+ out << " [weak]";
+ out << std::endl;
+}
+void pkgAcquire::Item::Failed(string const &Message,pkgAcquire::MethodConfig const * const Cnf)
+{
+ if (QueueCounter <= 1)
+ {
+ /* This indicates that the file is not available right now but might
+ be sometime later. If we do a retry cycle then this should be
+ retried [CDROMs] */
+ if (Cnf != NULL && Cnf->LocalOnly == true &&
+ StringToBool(LookupTag(Message,"Transient-Failure"),false) == true)
+ {
+ Status = StatIdle;
+ Dequeue();
+ return;
+ }
+
+ switch (Status)
+ {
+ case StatIdle:
+ case StatFetching:
+ case StatDone:
+ Status = StatError;
+ break;
+ case StatAuthError:
+ case StatError:
+ case StatTransientNetworkError:
+ break;
+ }
+ Complete = false;
+ Dequeue();
+ }
+
+ string const FailReason = LookupTag(Message, "FailReason");
+ enum { MAXIMUM_SIZE_EXCEEDED, HASHSUM_MISMATCH, WEAK_HASHSUMS, REDIRECTION_LOOP, OTHER } failreason = OTHER;
+ if ( FailReason == "MaximumSizeExceeded")
+ failreason = MAXIMUM_SIZE_EXCEEDED;
+ else if ( FailReason == "WeakHashSums")
+ failreason = WEAK_HASHSUMS;
+ else if (FailReason == "RedirectionLoop")
+ failreason = REDIRECTION_LOOP;
+ else if (Status == StatAuthError)
+ failreason = HASHSUM_MISMATCH;
+
+ if(ErrorText.empty())
+ {
+ std::ostringstream out;
+ switch (failreason)
+ {
+ case HASHSUM_MISMATCH:
+ out << _("Hash Sum mismatch") << std::endl;
+ break;
+ case WEAK_HASHSUMS:
+ out << _("Insufficient information available to perform this download securely") << std::endl;
+ break;
+ case REDIRECTION_LOOP:
+ out << "Redirection loop encountered" << std::endl;
+ break;
+ case MAXIMUM_SIZE_EXCEEDED:
+ out << LookupTag(Message, "Message") << std::endl;
+ break;
+ case OTHER:
+ out << LookupTag(Message, "Message");
+ break;
+ }
+
+ if (Status == StatAuthError)
+ {
+ auto const ExpectedHashes = GetExpectedHashes();
+ if (ExpectedHashes.empty() == false)
+ {
+ out << "Hashes of expected file:" << std::endl;
+ for (auto const &hs: ExpectedHashes)
+ formatHashsum(out, hs);
+ }
+ if (failreason == HASHSUM_MISMATCH)
+ {
+ out << "Hashes of received file:" << std::endl;
+ for (char const * const * type = HashString::SupportedHashes(); *type != NULL; ++type)
+ {
+ std::string const tagname = std::string(*type) + "-Hash";
+ std::string const hashsum = LookupTag(Message, tagname.c_str());
+ if (hashsum.empty() == false)
+ formatHashsum(out, HashString(*type, hashsum));
+ }
+ }
+ auto const lastmod = LookupTag(Message, "Last-Modified", "");
+ if (lastmod.empty() == false)
+ out << "Last modification reported: " << lastmod << std::endl;
+ }
+ ErrorText = out.str();
+ }
+
+ switch (failreason)
+ {
+ case MAXIMUM_SIZE_EXCEEDED: RenameOnError(MaximumSizeExceeded); break;
+ case HASHSUM_MISMATCH: RenameOnError(HashSumMismatch); break;
+ case WEAK_HASHSUMS: break;
+ case REDIRECTION_LOOP: break;
+ case OTHER: break;
+ }
+
+ if (FailReason.empty() == false)
+ ReportMirrorFailureToCentral(*this, FailReason, ErrorText);
+ else
+ ReportMirrorFailureToCentral(*this, ErrorText, ErrorText);
+
+ if (QueueCounter > 1)
+ Status = StatIdle;
+}
+ /*}}}*/
+// Acquire::Item::Start - Item has begun to download /*{{{*/
+// ---------------------------------------------------------------------
+/* Stash status and the file size. Note that setting Complete means
+ sub-phases of the acquire process such as decompresion are operating */
+void pkgAcquire::Item::Start(string const &/*Message*/, unsigned long long const Size)
+{
+ Status = StatFetching;
+ ErrorText.clear();
+ if (FileSize == 0 && Complete == false)
+ FileSize = Size;
+}
+ /*}}}*/
+// Acquire::Item::VerifyDone - check if Item was downloaded OK /*{{{*/
+/* Note that hash-verification is 'hardcoded' in acquire-worker and has
+ * already passed if this method is called. */
+bool pkgAcquire::Item::VerifyDone(std::string const &Message,
+ pkgAcquire::MethodConfig const * const /*Cnf*/)
+{
+ std::string const FileName = LookupTag(Message,"Filename");
+ if (FileName.empty() == true)
+ {
+ Status = StatError;
+ ErrorText = "Method gave a blank filename";
+ return false;
+ }
+
+ return true;
+}
+ /*}}}*/
+// Acquire::Item::Done - Item downloaded OK /*{{{*/
+void pkgAcquire::Item::Done(string const &/*Message*/, HashStringList const &Hashes,
+ pkgAcquire::MethodConfig const * const /*Cnf*/)
+{
+ // We just downloaded something..
+ if (FileSize == 0)
+ {
+ unsigned long long const downloadedSize = Hashes.FileSize();
+ if (downloadedSize != 0)
+ {
+ FileSize = downloadedSize;
+ }
+ }
+ Status = StatDone;
+ ErrorText = string();
+ Owner->Dequeue(this);
+}
+ /*}}}*/
+// Acquire::Item::Rename - Rename a file /*{{{*/
+// ---------------------------------------------------------------------
+/* This helper function is used by a lot of item methods as their final
+ step */
+bool pkgAcquire::Item::Rename(string const &From,string const &To)
+{
+ if (From == To || rename(From.c_str(),To.c_str()) == 0)
+ return true;
+
+ std::string S;
+ strprintf(S, _("rename failed, %s (%s -> %s)."), strerror(errno),
+ From.c_str(),To.c_str());
+ Status = StatError;
+ if (ErrorText.empty())
+ ErrorText = S;
+ else
+ ErrorText = ErrorText + ": " + S;
+ return false;
+}
+ /*}}}*/
+void pkgAcquire::Item::Dequeue() /*{{{*/
+{
+ Owner->Dequeue(this);
+}
+ /*}}}*/
+bool pkgAcquire::Item::RenameOnError(pkgAcquire::Item::RenameOnErrorState const error)/*{{{*/
+{
+ if (RealFileExists(DestFile))
+ Rename(DestFile, DestFile + ".FAILED");
+
+ std::string errtext;
+ switch (error)
+ {
+ case HashSumMismatch:
+ errtext = _("Hash Sum mismatch");
+ break;
+ case SizeMismatch:
+ errtext = _("Size mismatch");
+ Status = StatAuthError;
+ break;
+ case InvalidFormat:
+ errtext = _("Invalid file format");
+ Status = StatError;
+ // do not report as usually its not the mirrors fault, but Portal/Proxy
+ break;
+ case SignatureError:
+ errtext = _("Signature error");
+ Status = StatError;
+ break;
+ case NotClearsigned:
+ strprintf(errtext, _("Clearsigned file isn't valid, got '%s' (does the network require authentication?)"), "NOSPLIT");
+ Status = StatAuthError;
+ break;
+ case MaximumSizeExceeded:
+ // the method is expected to report a good error for this
+ break;
+ case PDiffError:
+ // no handling here, done by callers
+ break;
+ }
+ if (ErrorText.empty())
+ ErrorText = errtext;
+ return false;
+}
+ /*}}}*/
+void pkgAcquire::Item::SetActiveSubprocess(const std::string &subprocess)/*{{{*/
+{
+ ActiveSubprocess = subprocess;
+ APT_IGNORE_DEPRECATED(Mode = ActiveSubprocess.c_str();)
+}
+ /*}}}*/
+// Acquire::Item::ReportMirrorFailure /*{{{*/
+void pkgAcquire::Item::ReportMirrorFailure(std::string const &FailCode)
+{
+ ReportMirrorFailureToCentral(*this, FailCode, FailCode);
+}
+ /*}}}*/
+std::string pkgAcquire::Item::HashSum() const /*{{{*/
+{
+ HashStringList const hashes = GetExpectedHashes();
+ HashString const * const hs = hashes.find(NULL);
+ return hs != NULL ? hs->toStr() : "";
+}
+ /*}}}*/
+bool pkgAcquire::Item::IsRedirectionLoop(std::string const &NewURI) /*{{{*/
+{
+ // store can fail due to permission errors and the item will "loop" then
+ if (APT::String::Startswith(NewURI, "store:"))
+ return false;
+ if (d->PastRedirections.empty())
+ {
+ d->PastRedirections.push_back(NewURI);
+ return false;
+ }
+ auto const LastURI = std::prev(d->PastRedirections.end());
+ // redirections to the same file are a way of restarting/resheduling,
+ // individual methods will have to make sure that they aren't looping this way
+ if (*LastURI == NewURI)
+ return false;
+ if (std::find(d->PastRedirections.begin(), LastURI, NewURI) != LastURI)
+ return true;
+ d->PastRedirections.push_back(NewURI);
+ return false;
+}
+ /*}}}*/
+int pkgAcquire::Item::Priority() /*{{{*/
+{
+ // Stage 1: Meta indices and diff indices
+ // - those need to be fetched first to have progress reporting working
+ // for the rest
+ if (dynamic_cast<pkgAcqMetaSig*>(this) != nullptr
+ || dynamic_cast<pkgAcqMetaBase*>(this) != nullptr
+ || dynamic_cast<pkgAcqDiffIndex*>(this) != nullptr)
+ return 1000;
+ // Stage 2: Diff files
+ // - fetch before complete indexes so we can apply the diffs while fetching
+ // larger files.
+ if (dynamic_cast<pkgAcqIndexDiffs*>(this) != nullptr ||
+ dynamic_cast<pkgAcqIndexMergeDiffs*>(this) != nullptr)
+ return 800;
+
+ // Stage 3: The rest - complete index files and other stuff
+ return 500;
+}
+ /*}}}*/
+
+pkgAcqTransactionItem::pkgAcqTransactionItem(pkgAcquire * const Owner, /*{{{*/
+ pkgAcqMetaClearSig * const transactionManager, IndexTarget const &target) :
+ pkgAcquire::Item(Owner), d(NULL), Target(target), TransactionManager(transactionManager)
+{
+ if (TransactionManager != this)
+ TransactionManager->Add(this);
+}
+ /*}}}*/
+pkgAcqTransactionItem::~pkgAcqTransactionItem() /*{{{*/
+{
+}
+ /*}}}*/
+HashStringList pkgAcqTransactionItem::GetExpectedHashesFor(std::string const &MetaKey) const /*{{{*/
+{
+ return GetExpectedHashesFromFor(TransactionManager->MetaIndexParser, MetaKey);
+}
+ /*}}}*/
+
+static void LoadLastMetaIndexParser(pkgAcqMetaClearSig * const TransactionManager, std::string const &FinalRelease, std::string const &FinalInRelease)/*{{{*/
+{
+ if (TransactionManager->IMSHit == true)
+ return;
+ if (RealFileExists(FinalInRelease) || RealFileExists(FinalRelease))
+ {
+ TransactionManager->LastMetaIndexParser = TransactionManager->MetaIndexParser->UnloadedClone();
+ if (TransactionManager->LastMetaIndexParser != NULL)
+ {
+ _error->PushToStack();
+ if (RealFileExists(FinalInRelease))
+ TransactionManager->LastMetaIndexParser->Load(FinalInRelease, NULL);
+ else
+ TransactionManager->LastMetaIndexParser->Load(FinalRelease, NULL);
+ // its unlikely to happen, but if what we have is bad ignore it
+ if (_error->PendingError())
+ {
+ delete TransactionManager->LastMetaIndexParser;
+ TransactionManager->LastMetaIndexParser = NULL;
+ }
+ _error->RevertToStack();
+ }
+ }
+}
+ /*}}}*/
+
+// AcqMetaBase - Constructor /*{{{*/
+pkgAcqMetaBase::pkgAcqMetaBase(pkgAcquire * const Owner,
+ pkgAcqMetaClearSig * const TransactionManager,
+ IndexTarget const &DataTarget)
+: pkgAcqTransactionItem(Owner, TransactionManager, DataTarget), d(NULL),
+ AuthPass(false), IMSHit(false), State(TransactionStarted)
+{
+}
+ /*}}}*/
+// AcqMetaBase::Add - Add a item to the current Transaction /*{{{*/
+void pkgAcqMetaBase::Add(pkgAcqTransactionItem * const I)
+{
+ Transaction.push_back(I);
+}
+ /*}}}*/
+// AcqMetaBase::AbortTransaction - Abort the current Transaction /*{{{*/
+void pkgAcqMetaBase::AbortTransaction()
+{
+ if(_config->FindB("Debug::Acquire::Transaction", false) == true)
+ std::clog << "AbortTransaction: " << TransactionManager << std::endl;
+
+ switch (TransactionManager->State)
+ {
+ case TransactionStarted: break;
+ case TransactionAbort: _error->Fatal("Transaction %s was already aborted and is aborted again", TransactionManager->Target.URI.c_str()); return;
+ case TransactionCommit: _error->Fatal("Transaction %s was already aborted and is now committed", TransactionManager->Target.URI.c_str()); return;
+ }
+ TransactionManager->State = TransactionAbort;
+
+ // ensure the toplevel is in error state too
+ for (std::vector<pkgAcqTransactionItem*>::iterator I = Transaction.begin();
+ I != Transaction.end(); ++I)
+ {
+ if ((*I)->Status != pkgAcquire::Item::StatFetching)
+ Owner->Dequeue(*I);
+ (*I)->TransactionState(TransactionAbort);
+ }
+ Transaction.clear();
+}
+ /*}}}*/
+// AcqMetaBase::TransactionHasError - Check for errors in Transaction /*{{{*/
+APT_PURE bool pkgAcqMetaBase::TransactionHasError() const
+{
+ for (std::vector<pkgAcqTransactionItem*>::const_iterator I = Transaction.begin();
+ I != Transaction.end(); ++I)
+ {
+ switch((*I)->Status) {
+ case StatDone: break;
+ case StatIdle: break;
+ case StatAuthError: return true;
+ case StatError: return true;
+ case StatTransientNetworkError: return true;
+ case StatFetching: break;
+ }
+ }
+ return false;
+}
+ /*}}}*/
+// AcqMetaBase::CommitTransaction - Commit a transaction /*{{{*/
+void pkgAcqMetaBase::CommitTransaction()
+{
+ if(_config->FindB("Debug::Acquire::Transaction", false) == true)
+ std::clog << "CommitTransaction: " << this << std::endl;
+
+ switch (TransactionManager->State)
+ {
+ case TransactionStarted: break;
+ case TransactionAbort: _error->Fatal("Transaction %s was already committed and is now aborted", TransactionManager->Target.URI.c_str()); return;
+ case TransactionCommit: _error->Fatal("Transaction %s was already committed and is again committed", TransactionManager->Target.URI.c_str()); return;
+ }
+ TransactionManager->State = TransactionCommit;
+
+ // move new files into place *and* remove files that are not
+ // part of the transaction but are still on disk
+ for (std::vector<pkgAcqTransactionItem*>::iterator I = Transaction.begin();
+ I != Transaction.end(); ++I)
+ {
+ (*I)->TransactionState(TransactionCommit);
+ }
+ Transaction.clear();
+}
+ /*}}}*/
+// AcqMetaBase::TransactionStageCopy - Stage a file for copying /*{{{*/
+void pkgAcqMetaBase::TransactionStageCopy(pkgAcqTransactionItem * const I,
+ const std::string &From,
+ const std::string &To)
+{
+ I->PartialFile = From;
+ I->DestFile = To;
+}
+ /*}}}*/
+// AcqMetaBase::TransactionStageRemoval - Stage a file for removal /*{{{*/
+void pkgAcqMetaBase::TransactionStageRemoval(pkgAcqTransactionItem * const I,
+ const std::string &FinalFile)
+{
+ I->PartialFile = "";
+ I->DestFile = FinalFile;
+}
+ /*}}}*/
+// AcqMetaBase::GenerateAuthWarning - Check gpg authentication error /*{{{*/
+/* This method is called from ::Failed handlers. If it returns true,
+ no fallback to other files or modi is performed */
+bool pkgAcqMetaBase::CheckStopAuthentication(pkgAcquire::Item * const I, const std::string &Message)
+{
+ string const Final = I->GetFinalFilename();
+ std::string const GPGError = LookupTag(Message, "Message");
+ if (FileExists(Final))
+ {
+ I->Status = StatTransientNetworkError;
+ _error->Warning(_("An error occurred during the signature verification. "
+ "The repository is not updated and the previous index files will be used. "
+ "GPG error: %s: %s"),
+ Desc.Description.c_str(),
+ GPGError.c_str());
+ RunScripts("APT::Update::Auth-Failure");
+ return true;
+ } else if (LookupTag(Message,"Message").find("NODATA") != string::npos) {
+ /* Invalid signature file, reject (LP: #346386) (Closes: #627642) */
+ _error->Error(_("GPG error: %s: %s"),
+ Desc.Description.c_str(),
+ GPGError.c_str());
+ I->Status = StatAuthError;
+ return true;
+ } else {
+ _error->Warning(_("GPG error: %s: %s"),
+ Desc.Description.c_str(),
+ GPGError.c_str());
+ }
+ // gpgv method failed
+ ReportMirrorFailureToCentral(*this, "GPGFailure", GPGError);
+ return false;
+}
+ /*}}}*/
+// AcqMetaBase::Custom600Headers - Get header for AcqMetaBase /*{{{*/
+// ---------------------------------------------------------------------
+string pkgAcqMetaBase::Custom600Headers() const
+{
+ std::string Header = "\nIndex-File: true";
+ std::string MaximumSize;
+ strprintf(MaximumSize, "\nMaximum-Size: %i",
+ _config->FindI("Acquire::MaxReleaseFileSize", 10*1000*1000));
+ Header += MaximumSize;
+
+ string const FinalFile = GetFinalFilename();
+ struct stat Buf;
+ if (stat(FinalFile.c_str(),&Buf) == 0)
+ Header += "\nLast-Modified: " + TimeRFC1123(Buf.st_mtime, false);
+
+ return Header;
+}
+ /*}}}*/
+// AcqMetaBase::QueueForSignatureVerify /*{{{*/
+void pkgAcqMetaBase::QueueForSignatureVerify(pkgAcqTransactionItem * const I, std::string const &File, std::string const &Signature)
+{
+ AuthPass = true;
+ I->Desc.URI = "gpgv:" + Signature;
+ I->DestFile = File;
+ QueueURI(I->Desc);
+ I->SetActiveSubprocess("gpgv");
+}
+ /*}}}*/
+// AcqMetaBase::CheckDownloadDone /*{{{*/
+bool pkgAcqMetaBase::CheckDownloadDone(pkgAcqTransactionItem * const I, const std::string &Message, HashStringList const &Hashes) const
+{
+ // We have just finished downloading a Release file (it is not
+ // verified yet)
+
+ // Save the final base URI we got this Release file from
+ if (I->UsedMirror.empty() == false && _config->FindB("Acquire::SameMirrorForAllIndexes", true))
+ {
+ if (APT::String::Endswith(I->Desc.URI, "InRelease"))
+ {
+ TransactionManager->BaseURI = I->Desc.URI.substr(0, I->Desc.URI.length() - strlen("InRelease"));
+ TransactionManager->UsedMirror = I->UsedMirror;
+ }
+ else if (APT::String::Endswith(I->Desc.URI, "Release"))
+ {
+ TransactionManager->BaseURI = I->Desc.URI.substr(0, I->Desc.URI.length() - strlen("Release"));
+ TransactionManager->UsedMirror = I->UsedMirror;
+ }
+ }
+
+ std::string const FileName = LookupTag(Message,"Filename");
+ if (FileName != I->DestFile && RealFileExists(I->DestFile) == false)
+ {
+ I->Local = true;
+ I->Desc.URI = "copy:" + FileName;
+ I->QueueURI(I->Desc);
+ return false;
+ }
+
+ // make sure to verify against the right file on I-M-S hit
+ bool IMSHit = StringToBool(LookupTag(Message,"IMS-Hit"), false);
+ if (IMSHit == false && Hashes.usable())
+ {
+ // detect IMS-Hits servers haven't detected by Hash comparison
+ std::string const FinalFile = I->GetFinalFilename();
+ if (RealFileExists(FinalFile) && Hashes.VerifyFile(FinalFile) == true)
+ {
+ IMSHit = true;
+ RemoveFile("CheckDownloadDone", I->DestFile);
+ }
+ }
+
+ if(IMSHit == true)
+ {
+ // for simplicity, the transaction manager is always InRelease
+ // even if it doesn't exist.
+ TransactionManager->IMSHit = true;
+ I->PartialFile = I->DestFile = I->GetFinalFilename();
+ }
+
+ // set Item to complete as the remaining work is all local (verify etc)
+ I->Complete = true;
+
+ return true;
+}
+ /*}}}*/
+bool pkgAcqMetaBase::CheckAuthDone(string const &Message) /*{{{*/
+{
+ // At this point, the gpgv method has succeeded, so there is a
+ // valid signature from a key in the trusted keyring. We
+ // perform additional verification of its contents, and use them
+ // to verify the indexes we are about to download
+ if (_config->FindB("Debug::pkgAcquire::Auth", false))
+ std::cerr << "Signature verification succeeded: " << DestFile << std::endl;
+
+ if (TransactionManager->IMSHit == false)
+ {
+ // open the last (In)Release if we have it
+ std::string const FinalFile = GetFinalFilename();
+ std::string FinalRelease;
+ std::string FinalInRelease;
+ if (APT::String::Endswith(FinalFile, "InRelease"))
+ {
+ FinalInRelease = FinalFile;
+ FinalRelease = FinalFile.substr(0, FinalFile.length() - strlen("InRelease")) + "Release";
+ }
+ else
+ {
+ FinalInRelease = FinalFile.substr(0, FinalFile.length() - strlen("Release")) + "InRelease";
+ FinalRelease = FinalFile;
+ }
+ LoadLastMetaIndexParser(TransactionManager, FinalRelease, FinalInRelease);
+ }
+
+ bool const GoodAuth = TransactionManager->MetaIndexParser->Load(DestFile, &ErrorText);
+ if (GoodAuth == false && AllowInsecureRepositories(InsecureType::WEAK, Target.Description, TransactionManager->MetaIndexParser, TransactionManager, this) == false)
+ {
+ Status = StatAuthError;
+ return false;
+ }
+
+ if (!VerifyVendor(Message))
+ {
+ Status = StatAuthError;
+ return false;
+ }
+
+ // Download further indexes with verification
+ TransactionManager->QueueIndexes(GoodAuth);
+
+ return GoodAuth;
+}
+ /*}}}*/
+void pkgAcqMetaClearSig::QueueIndexes(bool const verify) /*{{{*/
+{
+ // at this point the real Items are loaded in the fetcher
+ ExpectedAdditionalItems = 0;
+
+ std::set<std::string> targetsSeen;
+ bool const hasReleaseFile = TransactionManager->MetaIndexParser != NULL;
+ bool const metaBaseSupportsByHash = hasReleaseFile && TransactionManager->MetaIndexParser->GetSupportsAcquireByHash();
+ bool hasHashes = true;
+ auto IndexTargets = TransactionManager->MetaIndexParser->GetIndexTargets();
+ if (hasReleaseFile && verify == false)
+ hasHashes = std::any_of(IndexTargets.begin(), IndexTargets.end(),
+ [&](IndexTarget const &Target) { return TransactionManager->MetaIndexParser->Exists(Target.MetaKey); });
+ if (_config->FindB("Acquire::IndexTargets::Randomized", true) && likely(IndexTargets.empty() == false))
+ {
+ /* For fallback handling and to have some reasonable progress information
+ we can't randomize everything, but at least the order in the same type
+ can be as we shouldn't be telling the mirrors (and everyone else watching)
+ which is native/foreign arch, specific order of preference of translations, … */
+ auto range_start = IndexTargets.begin();
+ std::random_device rd;
+ std::default_random_engine g(rd());
+ do {
+ auto const type = range_start->Option(IndexTarget::CREATED_BY);
+ auto const range_end = std::find_if_not(range_start, IndexTargets.end(),
+ [&type](IndexTarget const &T) { return type == T.Option(IndexTarget::CREATED_BY); });
+ std::shuffle(range_start, range_end, g);
+ range_start = range_end;
+ } while (range_start != IndexTargets.end());
+ }
+ for (auto&& Target: IndexTargets)
+ {
+ // if we have seen a target which is created-by a target this one here is declared a
+ // fallback to, we skip acquiring the fallback (but we make sure we clean up)
+ if (targetsSeen.find(Target.Option(IndexTarget::FALLBACK_OF)) != targetsSeen.end())
+ {
+ targetsSeen.emplace(Target.Option(IndexTarget::CREATED_BY));
+ new CleanupItem(Owner, TransactionManager, Target);
+ continue;
+ }
+ // all is an implementation detail. Users shouldn't use this as arch
+ // We need this support trickery here as e.g. Debian has binary-all files already,
+ // but arch:all packages are still in the arch:any files, so we would waste precious
+ // download time, bandwidth and diskspace for nothing, BUT Debian doesn't feature all
+ // in the set of supported architectures, so we can filter based on this property rather
+ // than invent an entirely new flag we would need to carry for all of eternity.
+ if (hasReleaseFile && Target.Option(IndexTarget::ARCHITECTURE) == "all")
+ {
+ if (TransactionManager->MetaIndexParser->IsArchitectureAllSupportedFor(Target) == false)
+ {
+ new CleanupItem(Owner, TransactionManager, Target);
+ continue;
+ }
+ }
+
+ bool trypdiff = Target.OptionBool(IndexTarget::PDIFFS);
+ if (hasReleaseFile == true)
+ {
+ if (TransactionManager->MetaIndexParser->Exists(Target.MetaKey) == false)
+ {
+ // optional targets that we do not have in the Release file are skipped
+ if (hasHashes == true && Target.IsOptional)
+ {
+ new CleanupItem(Owner, TransactionManager, Target);
+ continue;
+ }
+
+ std::string const &arch = Target.Option(IndexTarget::ARCHITECTURE);
+ if (arch.empty() == false)
+ {
+ if (TransactionManager->MetaIndexParser->IsArchitectureSupported(arch) == false)
+ {
+ new CleanupItem(Owner, TransactionManager, Target);
+ _error->Notice(_("Skipping acquire of configured file '%s' as repository '%s' doesn't support architecture '%s'"),
+ Target.MetaKey.c_str(), TransactionManager->Target.Description.c_str(), arch.c_str());
+ continue;
+ }
+ // if the architecture is officially supported but currently no packages for it available,
+ // ignore silently as this is pretty much the same as just shipping an empty file.
+ // if we don't know which architectures are supported, we do NOT ignore it to notify user about this
+ if (hasHashes == true && TransactionManager->MetaIndexParser->IsArchitectureSupported("*undefined*") == false)
+ {
+ new CleanupItem(Owner, TransactionManager, Target);
+ continue;
+ }
+ }
+
+ if (hasHashes == true)
+ {
+ Status = StatAuthError;
+ strprintf(ErrorText, _("Unable to find expected entry '%s' in Release file (Wrong sources.list entry or malformed file)"), Target.MetaKey.c_str());
+ return;
+ }
+ else
+ {
+ new pkgAcqIndex(Owner, TransactionManager, Target);
+ continue;
+ }
+ }
+ else if (verify)
+ {
+ auto const hashes = GetExpectedHashesFor(Target.MetaKey);
+ if (hashes.empty() == false)
+ {
+ if (hashes.usable() == false && TargetIsAllowedToBe(TransactionManager->Target, InsecureType::WEAK) == false)
+ {
+ new CleanupItem(Owner, TransactionManager, Target);
+ _error->Warning(_("Skipping acquire of configured file '%s' as repository '%s' provides only weak security information for it"),
+ Target.MetaKey.c_str(), TransactionManager->Target.Description.c_str());
+ continue;
+ }
+ // empty files are skipped as acquiring the very small compressed files is a waste of time
+ else if (hashes.FileSize() == 0)
+ {
+ new CleanupItem(Owner, TransactionManager, Target);
+ targetsSeen.emplace(Target.Option(IndexTarget::CREATED_BY));
+ continue;
+ }
+ }
+ }
+
+ // autoselect the compression method
+ std::vector<std::string> types = VectorizeString(Target.Option(IndexTarget::COMPRESSIONTYPES), ' ');
+ types.erase(std::remove_if(types.begin(), types.end(), [&](std::string const &t) {
+ if (t == "uncompressed")
+ return TransactionManager->MetaIndexParser->Exists(Target.MetaKey) == false;
+ std::string const MetaKey = Target.MetaKey + "." + t;
+ return TransactionManager->MetaIndexParser->Exists(MetaKey) == false;
+ }), types.end());
+ if (types.empty() == false)
+ {
+ std::ostringstream os;
+ // add the special compressiontype byhash first if supported
+ std::string const useByHashConf = Target.Option(IndexTarget::BY_HASH);
+ bool useByHash = false;
+ if(useByHashConf == "force")
+ useByHash = true;
+ else
+ useByHash = StringToBool(useByHashConf) == true && metaBaseSupportsByHash;
+ if (useByHash == true)
+ os << "by-hash ";
+ std::copy(types.begin(), types.end()-1, std::ostream_iterator<std::string>(os, " "));
+ os << *types.rbegin();
+ Target.Options["COMPRESSIONTYPES"] = os.str();
+ }
+ else
+ Target.Options["COMPRESSIONTYPES"].clear();
+
+ std::string filename = GetExistingFilename(GetFinalFileNameFromURI(Target.URI));
+ if (filename.empty() == false)
+ {
+ // if the Release file is a hit and we have an index it must be the current one
+ if (TransactionManager->IMSHit == true)
+ ;
+ else if (TransactionManager->LastMetaIndexParser != NULL)
+ {
+ // see if the file changed since the last Release file
+ // we use the uncompressed files as we might compress differently compared to the server,
+ // so the hashes might not match, even if they contain the same data.
+ HashStringList const newFile = GetExpectedHashesFromFor(TransactionManager->MetaIndexParser, Target.MetaKey);
+ HashStringList const oldFile = GetExpectedHashesFromFor(TransactionManager->LastMetaIndexParser, Target.MetaKey);
+ if (newFile != oldFile)
+ filename.clear();
+ }
+ else
+ filename.clear();
+ }
+ else
+ trypdiff = false; // no file to patch
+
+ if (filename.empty() == false)
+ {
+ new NoActionItem(Owner, Target, filename);
+ std::string const idxfilename = GetFinalFileNameFromURI(GetDiffIndexURI(Target));
+ if (FileExists(idxfilename))
+ new NoActionItem(Owner, Target, idxfilename);
+ targetsSeen.emplace(Target.Option(IndexTarget::CREATED_BY));
+ continue;
+ }
+
+ // check if we have patches available
+ trypdiff &= TransactionManager->MetaIndexParser->Exists(GetDiffIndexFileName(Target.MetaKey));
+ }
+ else
+ {
+ // if we have no file to patch, no point in trying
+ trypdiff &= (GetExistingFilename(GetFinalFileNameFromURI(Target.URI)).empty() == false);
+ }
+
+ // no point in patching from local sources
+ if (trypdiff)
+ {
+ std::string const proto = Target.URI.substr(0, strlen("file:/"));
+ if (proto == "file:/" || proto == "copy:/" || proto == "cdrom:")
+ trypdiff = false;
+ }
+
+ // Queue the Index file (Packages, Sources, Translation-$foo, …)
+ targetsSeen.emplace(Target.Option(IndexTarget::CREATED_BY));
+ if (trypdiff)
+ new pkgAcqDiffIndex(Owner, TransactionManager, Target);
+ else
+ new pkgAcqIndex(Owner, TransactionManager, Target);
+ }
+}
+ /*}}}*/
+bool pkgAcqMetaBase::VerifyVendor(string const &) /*{{{*/
+{
+ if (TransactionManager->MetaIndexParser->GetValidUntil() > 0)
+ {
+ time_t const invalid_since = time(NULL) - TransactionManager->MetaIndexParser->GetValidUntil();
+ if (invalid_since > 0)
+ {
+ std::string errmsg;
+ strprintf(errmsg,
+ // TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+ // the time since then the file is invalid - formatted in the same way as in
+ // the download progress display (e.g. 7d 3h 42min 1s)
+ _("Release file for %s is expired (invalid since %s). "
+ "Updates for this repository will not be applied."),
+ Target.URI.c_str(), TimeToStr(invalid_since).c_str());
+ if (ErrorText.empty())
+ ErrorText = errmsg;
+ return _error->Error("%s", errmsg.c_str());
+ }
+ }
+
+ /* Did we get a file older than what we have? This is a last minute IMS hit and doubles
+ as a prevention of downgrading us to older (still valid) files */
+ if (TransactionManager->IMSHit == false && TransactionManager->LastMetaIndexParser != NULL &&
+ TransactionManager->LastMetaIndexParser->GetDate() > TransactionManager->MetaIndexParser->GetDate())
+ {
+ TransactionManager->IMSHit = true;
+ RemoveFile("VerifyVendor", DestFile);
+ PartialFile = DestFile = GetFinalFilename();
+ // load the 'old' file in the 'new' one instead of flipping pointers as
+ // the new one isn't owned by us, while the old one is so cleanup would be confused.
+ TransactionManager->MetaIndexParser->swapLoad(TransactionManager->LastMetaIndexParser);
+ delete TransactionManager->LastMetaIndexParser;
+ TransactionManager->LastMetaIndexParser = NULL;
+ }
+
+ if (_config->FindB("Debug::pkgAcquire::Auth", false))
+ {
+ std::cerr << "Got Codename: " << TransactionManager->MetaIndexParser->GetCodename() << std::endl;
+ std::cerr << "Got Suite: " << TransactionManager->MetaIndexParser->GetSuite() << std::endl;
+ std::cerr << "Expecting Dist: " << TransactionManager->MetaIndexParser->GetExpectedDist() << std::endl;
+ }
+
+ // One day that might become fatal…
+ auto const ExpectedDist = TransactionManager->MetaIndexParser->GetExpectedDist();
+ auto const NowCodename = TransactionManager->MetaIndexParser->GetCodename();
+ if (TransactionManager->MetaIndexParser->CheckDist(ExpectedDist) == false)
+ _error->Warning(_("Conflicting distribution: %s (expected %s but got %s)"),
+ Desc.Description.c_str(), ExpectedDist.c_str(), NowCodename.c_str());
+ // might be okay, might be not
+ if (TransactionManager->LastMetaIndexParser != nullptr)
+ {
+ auto const LastCodename = TransactionManager->LastMetaIndexParser->GetCodename();
+ if (LastCodename.empty() == false && NowCodename.empty() == false && LastCodename != NowCodename)
+ _error->Warning(_("Conflicting distribution: %s (expected %s but got %s)"),
+ Desc.Description.c_str(), LastCodename.c_str(), NowCodename.c_str());
+ }
+ return true;
+}
+ /*}}}*/
+pkgAcqMetaBase::~pkgAcqMetaBase()
+{
+}
+
+pkgAcqMetaClearSig::pkgAcqMetaClearSig(pkgAcquire * const Owner, /*{{{*/
+ IndexTarget const &ClearsignedTarget,
+ IndexTarget const &DetachedDataTarget, IndexTarget const &DetachedSigTarget,
+ metaIndex * const MetaIndexParser) :
+ pkgAcqMetaIndex(Owner, this, ClearsignedTarget, DetachedSigTarget),
+ d(NULL), DetachedDataTarget(DetachedDataTarget),
+ MetaIndexParser(MetaIndexParser), LastMetaIndexParser(NULL)
+{
+ // index targets + (worst case:) Release/Release.gpg
+ ExpectedAdditionalItems = std::numeric_limits<decltype(ExpectedAdditionalItems)>::max();
+ TransactionManager->Add(this);
+}
+ /*}}}*/
+pkgAcqMetaClearSig::~pkgAcqMetaClearSig() /*{{{*/
+{
+ if (LastMetaIndexParser != NULL)
+ delete LastMetaIndexParser;
+}
+ /*}}}*/
+// pkgAcqMetaClearSig::Custom600Headers - Insert custom request headers /*{{{*/
+string pkgAcqMetaClearSig::Custom600Headers() const
+{
+ string Header = pkgAcqMetaBase::Custom600Headers();
+ Header += "\nFail-Ignore: true";
+ std::string const key = TransactionManager->MetaIndexParser->GetSignedBy();
+ if (key.empty() == false)
+ Header += "\nSigned-By: " + key;
+
+ return Header;
+}
+ /*}}}*/
+void pkgAcqMetaClearSig::Finished() /*{{{*/
+{
+ if(_config->FindB("Debug::Acquire::Transaction", false) == true)
+ std::clog << "Finished: " << DestFile <<std::endl;
+ if(TransactionManager->State == TransactionStarted &&
+ TransactionManager->TransactionHasError() == false)
+ TransactionManager->CommitTransaction();
+}
+ /*}}}*/
+bool pkgAcqMetaClearSig::VerifyDone(std::string const &Message, /*{{{*/
+ pkgAcquire::MethodConfig const * const Cnf)
+{
+ Item::VerifyDone(Message, Cnf);
+
+ if (FileExists(DestFile) && !StartsWithGPGClearTextSignature(DestFile))
+ return RenameOnError(NotClearsigned);
+
+ return true;
+}
+ /*}}}*/
+// pkgAcqMetaClearSig::Done - We got a file /*{{{*/
+void pkgAcqMetaClearSig::Done(std::string const &Message,
+ HashStringList const &Hashes,
+ pkgAcquire::MethodConfig const * const Cnf)
+{
+ Item::Done(Message, Hashes, Cnf);
+
+ if(AuthPass == false)
+ {
+ if(CheckDownloadDone(this, Message, Hashes) == true)
+ QueueForSignatureVerify(this, DestFile, DestFile);
+ return;
+ }
+ else if(CheckAuthDone(Message) == true)
+ {
+ if (TransactionManager->IMSHit == false)
+ TransactionManager->TransactionStageCopy(this, DestFile, GetFinalFilename());
+ else if (RealFileExists(GetFinalFilename()) == false)
+ {
+ // We got an InRelease file IMSHit, but we haven't one, which means
+ // we had a valid Release/Release.gpg combo stepping in, which we have
+ // to 'acquire' now to ensure list cleanup isn't removing them
+ new NoActionItem(Owner, DetachedDataTarget);
+ new NoActionItem(Owner, DetachedSigTarget);
+ }
+ }
+ else if (Status != StatAuthError)
+ {
+ string const FinalFile = GetFinalFileNameFromURI(DetachedDataTarget.URI);
+ string const OldFile = GetFinalFilename();
+ if (TransactionManager->IMSHit == false)
+ TransactionManager->TransactionStageCopy(this, DestFile, FinalFile);
+ else if (RealFileExists(OldFile) == false)
+ new NoActionItem(Owner, DetachedDataTarget);
+ else
+ TransactionManager->TransactionStageCopy(this, OldFile, FinalFile);
+ }
+}
+ /*}}}*/
+void pkgAcqMetaClearSig::Failed(string const &Message,pkgAcquire::MethodConfig const * const Cnf) /*{{{*/
+{
+ Item::Failed(Message, Cnf);
+
+ if (AuthPass == false)
+ {
+ if (Status == StatAuthError || Status == StatTransientNetworkError)
+ {
+ // if we expected a ClearTextSignature (InRelease) but got a network
+ // error or got a file, but it wasn't valid, we end up here (see VerifyDone).
+ // As these is usually called by web-portals we do not try Release/Release.gpg
+ // as this is gonna fail anyway and instead abort our try (LP#346386)
+ TransactionManager->AbortTransaction();
+ return;
+ }
+
+ // Queue the 'old' InRelease file for removal if we try Release.gpg
+ // as otherwise the file will stay around and gives a false-auth
+ // impression (CVE-2012-0214)
+ TransactionManager->TransactionStageRemoval(this, GetFinalFilename());
+ Status = StatDone;
+
+ new pkgAcqMetaIndex(Owner, TransactionManager, DetachedDataTarget, DetachedSigTarget);
+ }
+ else
+ {
+ if(CheckStopAuthentication(this, Message))
+ return;
+
+ if(AllowInsecureRepositories(InsecureType::UNSIGNED, Target.Description, TransactionManager->MetaIndexParser, TransactionManager, this) == true)
+ {
+ Status = StatDone;
+
+ /* InRelease files become Release files, otherwise
+ * they would be considered as trusted later on */
+ string const FinalRelease = GetFinalFileNameFromURI(DetachedDataTarget.URI);
+ string const PartialRelease = GetPartialFileNameFromURI(DetachedDataTarget.URI);
+ string const FinalReleasegpg = GetFinalFileNameFromURI(DetachedSigTarget.URI);
+ string const FinalInRelease = GetFinalFilename();
+ Rename(DestFile, PartialRelease);
+ TransactionManager->TransactionStageCopy(this, PartialRelease, FinalRelease);
+ LoadLastMetaIndexParser(TransactionManager, FinalRelease, FinalInRelease);
+
+ // we parse the indexes here because at this point the user wanted
+ // a repository that may potentially harm him
+ if (TransactionManager->MetaIndexParser->Load(PartialRelease, &ErrorText) == false || VerifyVendor(Message) == false)
+ /* expired Release files are still a problem you need extra force for */;
+ else
+ TransactionManager->QueueIndexes(true);
+ }
+ }
+}
+ /*}}}*/
+
+pkgAcqMetaIndex::pkgAcqMetaIndex(pkgAcquire * const Owner, /*{{{*/
+ pkgAcqMetaClearSig * const TransactionManager,
+ IndexTarget const &DataTarget,
+ IndexTarget const &DetachedSigTarget) :
+ pkgAcqMetaBase(Owner, TransactionManager, DataTarget), d(NULL),
+ DetachedSigTarget(DetachedSigTarget)
+{
+ if(_config->FindB("Debug::Acquire::Transaction", false) == true)
+ std::clog << "New pkgAcqMetaIndex with TransactionManager "
+ << this->TransactionManager << std::endl;
+
+ DestFile = GetPartialFileNameFromURI(DataTarget.URI);
+
+ // Create the item
+ Desc.Description = DataTarget.Description;
+ Desc.Owner = this;
+ Desc.ShortDesc = DataTarget.ShortDesc;
+ Desc.URI = DataTarget.URI;
+ QueueURI(Desc);
+}
+ /*}}}*/
+void pkgAcqMetaIndex::Done(string const &Message, /*{{{*/
+ HashStringList const &Hashes,
+ pkgAcquire::MethodConfig const * const Cfg)
+{
+ Item::Done(Message,Hashes,Cfg);
+
+ if(CheckDownloadDone(this, Message, Hashes))
+ {
+ // we have a Release file, now download the Signature, all further
+ // verify/queue for additional downloads will be done in the
+ // pkgAcqMetaSig::Done() code
+ new pkgAcqMetaSig(Owner, TransactionManager, DetachedSigTarget, this);
+ }
+}
+ /*}}}*/
+// pkgAcqMetaIndex::Failed - no Release file present /*{{{*/
+void pkgAcqMetaIndex::Failed(string const &Message,
+ pkgAcquire::MethodConfig const * const Cnf)
+{
+ pkgAcquire::Item::Failed(Message, Cnf);
+ Status = StatDone;
+
+ // No Release file was present so fall
+ // back to queueing Packages files without verification
+ // only allow going further if the user explicitly wants it
+ if(AllowInsecureRepositories(InsecureType::NORELEASE, Target.Description, TransactionManager->MetaIndexParser, TransactionManager, this) == true)
+ {
+ // ensure old Release files are removed
+ TransactionManager->TransactionStageRemoval(this, GetFinalFilename());
+
+ // queue without any kind of hashsum support
+ TransactionManager->QueueIndexes(false);
+ }
+}
+ /*}}}*/
+std::string pkgAcqMetaIndex::DescURI() const /*{{{*/
+{
+ return Target.URI;
+}
+ /*}}}*/
+pkgAcqMetaIndex::~pkgAcqMetaIndex() {}
+
+// AcqMetaSig::AcqMetaSig - Constructor /*{{{*/
+pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire * const Owner,
+ pkgAcqMetaClearSig * const TransactionManager,
+ IndexTarget const &Target,
+ pkgAcqMetaIndex * const MetaIndex) :
+ pkgAcqTransactionItem(Owner, TransactionManager, Target), d(NULL), MetaIndex(MetaIndex)
+{
+ DestFile = GetPartialFileNameFromURI(Target.URI);
+
+ // remove any partial downloaded sig-file in partial/.
+ // it may confuse proxies and is too small to warrant a
+ // partial download anyway
+ RemoveFile("pkgAcqMetaSig", DestFile);
+
+ // set the TransactionManager
+ if(_config->FindB("Debug::Acquire::Transaction", false) == true)
+ std::clog << "New pkgAcqMetaSig with TransactionManager "
+ << TransactionManager << std::endl;
+
+ // Create the item
+ Desc.Description = Target.Description;
+ Desc.Owner = this;
+ Desc.ShortDesc = Target.ShortDesc;
+ Desc.URI = Target.URI;
+
+ // If we got a hit for Release, we will get one for Release.gpg too (or obscure errors),
+ // so we skip the download step and go instantly to verification
+ if (TransactionManager->IMSHit == true && RealFileExists(GetFinalFilename()))
+ {
+ Complete = true;
+ Status = StatDone;
+ PartialFile = DestFile = GetFinalFilename();
+ MetaIndexFileSignature = DestFile;
+ MetaIndex->QueueForSignatureVerify(this, MetaIndex->DestFile, DestFile);
+ }
+ else
+ QueueURI(Desc);
+}
+ /*}}}*/
+pkgAcqMetaSig::~pkgAcqMetaSig() /*{{{*/
+{
+}
+ /*}}}*/
+// pkgAcqMetaSig::Custom600Headers - Insert custom request headers /*{{{*/
+std::string pkgAcqMetaSig::Custom600Headers() const
+{
+ std::string Header = pkgAcqTransactionItem::Custom600Headers();
+ std::string const key = TransactionManager->MetaIndexParser->GetSignedBy();
+ if (key.empty() == false)
+ Header += "\nSigned-By: " + key;
+ return Header;
+}
+ /*}}}*/
+// AcqMetaSig::Done - The signature was downloaded/verified /*{{{*/
+void pkgAcqMetaSig::Done(string const &Message, HashStringList const &Hashes,
+ pkgAcquire::MethodConfig const * const Cfg)
+{
+ if (MetaIndexFileSignature.empty() == false)
+ {
+ DestFile = MetaIndexFileSignature;
+ MetaIndexFileSignature.clear();
+ }
+ Item::Done(Message, Hashes, Cfg);
+
+ if(MetaIndex->AuthPass == false)
+ {
+ if(MetaIndex->CheckDownloadDone(this, Message, Hashes) == true)
+ {
+ // destfile will be modified to point to MetaIndexFile for the
+ // gpgv method, so we need to save it here
+ MetaIndexFileSignature = DestFile;
+ MetaIndex->QueueForSignatureVerify(this, MetaIndex->DestFile, DestFile);
+ }
+ return;
+ }
+ else if(MetaIndex->CheckAuthDone(Message) == true)
+ {
+ auto const Releasegpg = GetFinalFilename();
+ auto const Release = MetaIndex->GetFinalFilename();
+ // if this is an IMS-Hit on Release ensure we also have the Release.gpg file stored
+ // (previously an unknown pubkey) – but only if the Release file exists locally (unlikely
+ // event of InRelease removed from the mirror causing fallback but still an IMS-Hit)
+ if (TransactionManager->IMSHit == false ||
+ (FileExists(Releasegpg) == false && FileExists(Release) == true))
+ {
+ TransactionManager->TransactionStageCopy(this, DestFile, Releasegpg);
+ TransactionManager->TransactionStageCopy(MetaIndex, MetaIndex->DestFile, Release);
+ }
+ }
+ else if (MetaIndex->Status != StatAuthError)
+ {
+ std::string const FinalFile = MetaIndex->GetFinalFilename();
+ if (TransactionManager->IMSHit == false)
+ TransactionManager->TransactionStageCopy(MetaIndex, MetaIndex->DestFile, FinalFile);
+ else
+ TransactionManager->TransactionStageCopy(MetaIndex, FinalFile, FinalFile);
+ }
+}
+ /*}}}*/
+void pkgAcqMetaSig::Failed(string const &Message,pkgAcquire::MethodConfig const * const Cnf)/*{{{*/
+{
+ Item::Failed(Message,Cnf);
+
+ // check if we need to fail at this point
+ if (MetaIndex->AuthPass == true && MetaIndex->CheckStopAuthentication(this, Message))
+ return;
+
+ // ensures that a Release.gpg file in the lists/ is removed by the transaction
+ TransactionManager->TransactionStageRemoval(this, DestFile);
+
+ // only allow going further if the user explicitly wants it
+ if (AllowInsecureRepositories(InsecureType::UNSIGNED, MetaIndex->Target.Description, TransactionManager->MetaIndexParser, TransactionManager, this) == true)
+ {
+ string const FinalRelease = MetaIndex->GetFinalFilename();
+ string const FinalInRelease = TransactionManager->GetFinalFilename();
+ LoadLastMetaIndexParser(TransactionManager, FinalRelease, FinalInRelease);
+
+ // we parse the indexes here because at this point the user wanted
+ // a repository that may potentially harm him
+ bool const GoodLoad = TransactionManager->MetaIndexParser->Load(MetaIndex->DestFile, &ErrorText);
+ if (MetaIndex->VerifyVendor(Message) == false)
+ /* expired Release files are still a problem you need extra force for */;
+ else
+ TransactionManager->QueueIndexes(GoodLoad);
+
+ TransactionManager->TransactionStageCopy(MetaIndex, MetaIndex->DestFile, FinalRelease);
+ }
+ else if (TransactionManager->IMSHit == false)
+ Rename(MetaIndex->DestFile, MetaIndex->DestFile + ".FAILED");
+
+ // FIXME: this is used often (e.g. in pkgAcqIndexTrans) so refactor
+ if (Cnf->LocalOnly == true ||
+ StringToBool(LookupTag(Message,"Transient-Failure"),false) == false)
+ {
+ // Ignore this
+ Status = StatDone;
+ }
+}
+ /*}}}*/
+
+
+// AcqBaseIndex - Constructor /*{{{*/
+pkgAcqBaseIndex::pkgAcqBaseIndex(pkgAcquire * const Owner,
+ pkgAcqMetaClearSig * const TransactionManager,
+ IndexTarget const &Target)
+: pkgAcqTransactionItem(Owner, TransactionManager, Target), d(NULL)
+{
+}
+ /*}}}*/
+void pkgAcqBaseIndex::Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf)/*{{{*/
+{
+ pkgAcquire::Item::Failed(Message, Cnf);
+ if (Status != StatAuthError)
+ return;
+
+ ErrorText.append("Release file created at: ");
+ auto const timespec = TransactionManager->MetaIndexParser->GetDate();
+ if (timespec == 0)
+ ErrorText.append("<unknown>");
+ else
+ ErrorText.append(TimeRFC1123(timespec, true));
+ ErrorText.append("\n");
+}
+ /*}}}*/
+pkgAcqBaseIndex::~pkgAcqBaseIndex() {}
+
+// AcqDiffIndex::AcqDiffIndex - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* Get the DiffIndex file first and see if there are patches available
+ * If so, create a pkgAcqIndexDiffs fetcher that will get and apply the
+ * patches. If anything goes wrong in that process, it will fall back to
+ * the original packages file
+ */
+pkgAcqDiffIndex::pkgAcqDiffIndex(pkgAcquire * const Owner,
+ pkgAcqMetaClearSig * const TransactionManager,
+ IndexTarget const &Target)
+ : pkgAcqIndex(Owner, TransactionManager, Target, true), d(NULL), diffs(NULL)
+{
+ // FIXME: Magic number as an upper bound on pdiffs we will reasonably acquire
+ ExpectedAdditionalItems = 40;
+ Debug = _config->FindB("Debug::pkgAcquire::Diffs",false);
+
+ CompressionExtensions.clear();
+ {
+ std::vector<std::string> types = APT::Configuration::getCompressionTypes();
+ if (types.empty() == false)
+ {
+ std::ostringstream os;
+ std::copy_if(types.begin(), types.end()-1, std::ostream_iterator<std::string>(os, " "), [&](std::string const type) {
+ if (type == "uncompressed")
+ return true;
+ return TransactionManager->MetaIndexParser->Exists(GetDiffIndexFileName(Target.MetaKey) + '.' + type);
+ });
+ os << *types.rbegin();
+ CompressionExtensions = os.str();
+ }
+ }
+ if (Target.Option(IndexTarget::COMPRESSIONTYPES).find("by-hash") != std::string::npos)
+ CompressionExtensions = "by-hash " + CompressionExtensions;
+ Init(GetDiffIndexURI(Target), GetDiffIndexFileName(Target.Description), Target.ShortDesc);
+
+ if(Debug)
+ std::clog << "pkgAcqDiffIndex: " << Desc.URI << std::endl;
+}
+ /*}}}*/
+void pkgAcqDiffIndex::QueueOnIMSHit() const /*{{{*/
+{
+ // list cleanup needs to know that this file as well as the already
+ // present index is ours, so we create an empty diff to save it for us
+ new pkgAcqIndexDiffs(Owner, TransactionManager, Target, UsedMirror, Target.URI);
+}
+ /*}}}*/
+static bool RemoveFileForBootstrapLinking(bool const Debug, std::string const &For, std::string const &Boot)/*{{{*/
+{
+ if (FileExists(Boot) && RemoveFile("Bootstrap-linking", Boot) == false)
+ {
+ if (Debug)
+ std::clog << "Bootstrap-linking for patching " << For
+ << " by removing stale " << Boot << " failed!" << std::endl;
+ return false;
+ }
+ return true;
+}
+ /*}}}*/
+bool pkgAcqDiffIndex::ParseDiffIndex(string const &IndexDiffFile) /*{{{*/
+{
+ ExpectedAdditionalItems = 0;
+ // failing here is fine: our caller will take care of trying to
+ // get the complete file if patching fails
+ if(Debug)
+ std::clog << "pkgAcqDiffIndex::ParseIndexDiff() " << IndexDiffFile
+ << std::endl;
+
+ FileFd Fd(IndexDiffFile, FileFd::ReadOnly, FileFd::Extension);
+ pkgTagFile TF(&Fd);
+ if (Fd.IsOpen() == false || Fd.Failed())
+ return false;
+
+ pkgTagSection Tags;
+ if(unlikely(TF.Step(Tags) == false))
+ return false;
+
+ HashStringList ServerHashes;
+ unsigned long long ServerSize = 0;
+
+ auto const &posix = std::locale::classic();
+ for (char const * const * type = HashString::SupportedHashes(); *type != NULL; ++type)
+ {
+ std::string tagname = *type;
+ tagname.append("-Current");
+ std::string const tmp = Tags.FindS(tagname.c_str());
+ if (tmp.empty() == true)
+ continue;
+
+ string hash;
+ unsigned long long size;
+ std::stringstream ss(tmp);
+ ss.imbue(posix);
+ ss >> hash >> size;
+ if (unlikely(hash.empty() == true))
+ continue;
+ if (unlikely(ServerSize != 0 && ServerSize != size))
+ continue;
+ ServerHashes.push_back(HashString(*type, hash));
+ ServerSize = size;
+ }
+
+ if (ServerHashes.usable() == false)
+ {
+ if (Debug == true)
+ std::clog << "pkgAcqDiffIndex: " << IndexDiffFile << ": Did not find a good hashsum in the index" << std::endl;
+ return false;
+ }
+
+ std::string const CurrentPackagesFile = GetFinalFileNameFromURI(Target.URI);
+ HashStringList const TargetFileHashes = GetExpectedHashesFor(Target.MetaKey);
+ if (TargetFileHashes.usable() == false || ServerHashes != TargetFileHashes)
+ {
+ if (Debug == true)
+ {
+ std::clog << "pkgAcqDiffIndex: " << IndexDiffFile << ": Index has different hashes than parser, probably older, so fail pdiffing" << std::endl;
+ printHashSumComparison(CurrentPackagesFile, ServerHashes, TargetFileHashes);
+ }
+ return false;
+ }
+
+ HashStringList LocalHashes;
+ // try avoiding calculating the hash here as this is costly
+ if (TransactionManager->LastMetaIndexParser != NULL)
+ LocalHashes = GetExpectedHashesFromFor(TransactionManager->LastMetaIndexParser, Target.MetaKey);
+ if (LocalHashes.usable() == false)
+ {
+ FileFd fd(CurrentPackagesFile, FileFd::ReadOnly, FileFd::Auto);
+ Hashes LocalHashesCalc(ServerHashes);
+ LocalHashesCalc.AddFD(fd);
+ LocalHashes = LocalHashesCalc.GetHashStringList();
+ }
+
+ if (ServerHashes == LocalHashes)
+ {
+ // we have the same sha1 as the server so we are done here
+ if(Debug)
+ std::clog << "pkgAcqDiffIndex: Package file " << CurrentPackagesFile << " is up-to-date" << std::endl;
+ QueueOnIMSHit();
+ return true;
+ }
+
+ if(Debug)
+ std::clog << "Server-Current: " << ServerHashes.find(NULL)->toStr() << " and we start at "
+ << CurrentPackagesFile << " " << LocalHashes.FileSize() << " " << LocalHashes.find(NULL)->toStr() << std::endl;
+
+ // historically, older hashes have more info than newer ones, so start
+ // collecting with older ones first to avoid implementing complicated
+ // information merging techniques… a failure is after all always
+ // recoverable with a complete file and hashes aren't changed that often.
+ std::vector<char const *> types;
+ for (char const * const * type = HashString::SupportedHashes(); *type != NULL; ++type)
+ types.push_back(*type);
+
+ // parse all of (provided) history
+ vector<DiffInfo> available_patches;
+ bool firstAcceptedHashes = true;
+ for (auto type = types.crbegin(); type != types.crend(); ++type)
+ {
+ if (LocalHashes.find(*type) == NULL)
+ continue;
+
+ std::string tagname = *type;
+ tagname.append("-History");
+ std::string const tmp = Tags.FindS(tagname.c_str());
+ if (tmp.empty() == true)
+ continue;
+
+ string hash, filename;
+ unsigned long long size;
+ std::stringstream ss(tmp);
+ ss.imbue(posix);
+
+ while (ss >> hash >> size >> filename)
+ {
+ if (unlikely(hash.empty() == true || filename.empty() == true))
+ continue;
+
+ // see if we have a record for this file already
+ std::vector<DiffInfo>::iterator cur = available_patches.begin();
+ for (; cur != available_patches.end(); ++cur)
+ {
+ if (cur->file != filename)
+ continue;
+ cur->result_hashes.push_back(HashString(*type, hash));
+ break;
+ }
+ if (cur != available_patches.end())
+ continue;
+ if (firstAcceptedHashes == true)
+ {
+ DiffInfo next;
+ next.file = filename;
+ next.result_hashes.push_back(HashString(*type, hash));
+ next.result_hashes.FileSize(size);
+ available_patches.push_back(next);
+ }
+ else
+ {
+ if (Debug == true)
+ std::clog << "pkgAcqDiffIndex: " << IndexDiffFile << ": File " << filename
+ << " wasn't in the list for the first parsed hash! (history)" << std::endl;
+ break;
+ }
+ }
+ firstAcceptedHashes = false;
+ }
+
+ if (unlikely(available_patches.empty() == true))
+ {
+ if (Debug)
+ std::clog << "pkgAcqDiffIndex: " << IndexDiffFile << ": "
+ << "Couldn't find any patches for the patch series." << std::endl;
+ return false;
+ }
+
+ for (auto type = types.crbegin(); type != types.crend(); ++type)
+ {
+ if (LocalHashes.find(*type) == NULL)
+ continue;
+
+ std::string tagname = *type;
+ tagname.append("-Patches");
+ std::string const tmp = Tags.FindS(tagname.c_str());
+ if (tmp.empty() == true)
+ continue;
+
+ string hash, filename;
+ unsigned long long size;
+ std::stringstream ss(tmp);
+ ss.imbue(posix);
+
+ while (ss >> hash >> size >> filename)
+ {
+ if (unlikely(hash.empty() == true || filename.empty() == true))
+ continue;
+
+ // see if we have a record for this file already
+ std::vector<DiffInfo>::iterator cur = available_patches.begin();
+ for (; cur != available_patches.end(); ++cur)
+ {
+ if (cur->file != filename)
+ continue;
+ if (cur->patch_hashes.empty())
+ cur->patch_hashes.FileSize(size);
+ cur->patch_hashes.push_back(HashString(*type, hash));
+ break;
+ }
+ if (cur != available_patches.end())
+ continue;
+ if (Debug == true)
+ std::clog << "pkgAcqDiffIndex: " << IndexDiffFile << ": File " << filename
+ << " wasn't in the list for the first parsed hash! (patches)" << std::endl;
+ break;
+ }
+ }
+
+ for (auto type = types.crbegin(); type != types.crend(); ++type)
+ {
+ std::string tagname = *type;
+ tagname.append("-Download");
+ std::string const tmp = Tags.FindS(tagname.c_str());
+ if (tmp.empty() == true)
+ continue;
+
+ string hash, filename;
+ unsigned long long size;
+ std::stringstream ss(tmp);
+ ss.imbue(posix);
+
+ // FIXME: all of pdiff supports only .gz compressed patches
+ while (ss >> hash >> size >> filename)
+ {
+ if (unlikely(hash.empty() == true || filename.empty() == true))
+ continue;
+ if (unlikely(APT::String::Endswith(filename, ".gz") == false))
+ continue;
+ filename.erase(filename.length() - 3);
+
+ // see if we have a record for this file already
+ std::vector<DiffInfo>::iterator cur = available_patches.begin();
+ for (; cur != available_patches.end(); ++cur)
+ {
+ if (cur->file != filename)
+ continue;
+ if (cur->download_hashes.empty())
+ cur->download_hashes.FileSize(size);
+ cur->download_hashes.push_back(HashString(*type, hash));
+ break;
+ }
+ if (cur != available_patches.end())
+ continue;
+ if (Debug == true)
+ std::clog << "pkgAcqDiffIndex: " << IndexDiffFile << ": File " << filename
+ << " wasn't in the list for the first parsed hash! (download)" << std::endl;
+ break;
+ }
+ }
+
+
+ bool foundStart = false;
+ for (std::vector<DiffInfo>::iterator cur = available_patches.begin();
+ cur != available_patches.end(); ++cur)
+ {
+ if (LocalHashes != cur->result_hashes)
+ continue;
+
+ available_patches.erase(available_patches.begin(), cur);
+ foundStart = true;
+ break;
+ }
+
+ if (foundStart == false || unlikely(available_patches.empty() == true))
+ {
+ if (Debug)
+ std::clog << "pkgAcqDiffIndex: " << IndexDiffFile << ": "
+ << "Couldn't find the start of the patch series." << std::endl;
+ return false;
+ }
+
+ for (auto const &patch: available_patches)
+ if (patch.result_hashes.usable() == false ||
+ patch.patch_hashes.usable() == false ||
+ patch.download_hashes.usable() == false)
+ {
+ if (Debug)
+ std::clog << "pkgAcqDiffIndex: " << IndexDiffFile << ": provides no usable hashes for " << patch.file
+ << " so fallback to complete download" << std::endl;
+ return false;
+ }
+
+ // patching with too many files is rather slow compared to a fast download
+ unsigned long const fileLimit = _config->FindI("Acquire::PDiffs::FileLimit", 0);
+ if (fileLimit != 0 && fileLimit < available_patches.size())
+ {
+ if (Debug)
+ std::clog << "Need " << available_patches.size() << " diffs (Limit is " << fileLimit
+ << ") so fallback to complete download" << std::endl;
+ return false;
+ }
+
+ // calculate the size of all patches we have to get
+ unsigned short const sizeLimitPercent = _config->FindI("Acquire::PDiffs::SizeLimit", 100);
+ if (sizeLimitPercent > 0)
+ {
+ unsigned long long downloadSize = std::accumulate(available_patches.begin(),
+ available_patches.end(), 0llu, [](unsigned long long const T, DiffInfo const &I) {
+ return T + I.download_hashes.FileSize();
+ });
+ if (downloadSize != 0)
+ {
+ unsigned long long downloadSizeIdx = 0;
+ auto const types = VectorizeString(Target.Option(IndexTarget::COMPRESSIONTYPES), ' ');
+ for (auto const &t : types)
+ {
+ std::string MetaKey = Target.MetaKey;
+ if (t != "uncompressed")
+ MetaKey += '.' + t;
+ HashStringList const hsl = GetExpectedHashesFor(MetaKey);
+ if (unlikely(hsl.usable() == false))
+ continue;
+ downloadSizeIdx = hsl.FileSize();
+ break;
+ }
+ unsigned long long const sizeLimit = downloadSizeIdx * sizeLimitPercent;
+ if ((sizeLimit/100) < downloadSize)
+ {
+ if (Debug)
+ std::clog << "Need " << downloadSize << " compressed bytes (Limit is " << (sizeLimit/100) << ", "
+ << "original is " << downloadSizeIdx << ") so fallback to complete download" << std::endl;
+ return false;
+ }
+ }
+ }
+
+ // we have something, queue the diffs
+ string::size_type const last_space = Description.rfind(" ");
+ if(last_space != string::npos)
+ Description.erase(last_space, Description.size()-last_space);
+
+ /* decide if we should download patches one by one or in one go:
+ The first is good if the server merges patches, but many don't so client
+ based merging can be attempt in which case the second is better.
+ "bad things" will happen if patches are merged on the server,
+ but client side merging is attempt as well */
+ bool pdiff_merge = _config->FindB("Acquire::PDiffs::Merge", true);
+ if (pdiff_merge == true)
+ {
+ // reprepro adds this flag if it has merged patches on the server
+ std::string const precedence = Tags.FindS("X-Patch-Precedence");
+ pdiff_merge = (precedence != "merged");
+ }
+
+ // clean the plate
+ {
+ std::string const Final = GetExistingFilename(CurrentPackagesFile);
+ if (unlikely(Final.empty())) // because we wouldn't be called in such a case
+ return false;
+ std::string const PartialFile = GetPartialFileNameFromURI(Target.URI);
+ std::string const PatchedFile = GetKeepCompressedFileName(PartialFile + "-patched", Target);
+ if (RemoveFileForBootstrapLinking(Debug, CurrentPackagesFile, PartialFile) == false ||
+ RemoveFileForBootstrapLinking(Debug, CurrentPackagesFile, PatchedFile) == false)
+ return false;
+ for (auto const &ext : APT::Configuration::getCompressorExtensions())
+ {
+ if (RemoveFileForBootstrapLinking(Debug, CurrentPackagesFile, PartialFile + ext) == false ||
+ RemoveFileForBootstrapLinking(Debug, CurrentPackagesFile, PatchedFile + ext) == false)
+ return false;
+ }
+ std::string const Ext = Final.substr(CurrentPackagesFile.length());
+ std::string const Partial = PartialFile + Ext;
+ if (symlink(Final.c_str(), Partial.c_str()) != 0)
+ {
+ if (Debug)
+ std::clog << "Bootstrap-linking for patching " << CurrentPackagesFile
+ << " by linking " << Final << " to " << Partial << " failed!" << std::endl;
+ return false;
+ }
+ }
+
+ std::string indexURI = Desc.URI;
+ auto const byhashidx = indexURI.find("/by-hash/");
+ if (byhashidx != std::string::npos)
+ indexURI = indexURI.substr(0, byhashidx - strlen(".diff"));
+ else
+ {
+ auto end = indexURI.length() - strlen(".diff/Index");
+ if (CurrentCompressionExtension != "uncompressed")
+ end -= (1 + CurrentCompressionExtension.length());
+ indexURI = indexURI.substr(0, end);
+ }
+
+ if (pdiff_merge == false)
+ new pkgAcqIndexDiffs(Owner, TransactionManager, Target, UsedMirror, indexURI, available_patches);
+ else
+ {
+ diffs = new std::vector<pkgAcqIndexMergeDiffs*>(available_patches.size());
+ for(size_t i = 0; i < available_patches.size(); ++i)
+ (*diffs)[i] = new pkgAcqIndexMergeDiffs(Owner, TransactionManager,
+ Target, UsedMirror, indexURI,
+ available_patches[i],
+ diffs);
+ }
+
+ Complete = false;
+ Status = StatDone;
+ Dequeue();
+ return true;
+}
+ /*}}}*/
+void pkgAcqDiffIndex::Failed(string const &Message,pkgAcquire::MethodConfig const * const Cnf)/*{{{*/
+{
+ if (CommonFailed(GetDiffIndexURI(Target), GetDiffIndexFileName(Target.Description), Message, Cnf))
+ return;
+
+ Status = StatDone;
+ ExpectedAdditionalItems = 0;
+
+ if(Debug)
+ std::clog << "pkgAcqDiffIndex failed: " << Desc.URI << " with " << Message << std::endl
+ << "Falling back to normal index file acquire" << std::endl;
+
+ new pkgAcqIndex(Owner, TransactionManager, Target);
+}
+ /*}}}*/
+void pkgAcqDiffIndex::Done(string const &Message,HashStringList const &Hashes, /*{{{*/
+ pkgAcquire::MethodConfig const * const Cnf)
+{
+ if(Debug)
+ std::clog << "pkgAcqDiffIndex::Done(): " << Desc.URI << std::endl;
+
+ Item::Done(Message, Hashes, Cnf);
+
+ string const FinalFile = GetFinalFilename();
+ if(StringToBool(LookupTag(Message,"IMS-Hit"),false))
+ DestFile = FinalFile;
+
+ if(ParseDiffIndex(DestFile) == false)
+ {
+ Failed("Message: Couldn't parse pdiff index", Cnf);
+ // queue for final move - this should happen even if we fail
+ // while parsing (e.g. on sizelimit) and download the complete file.
+ TransactionManager->TransactionStageCopy(this, DestFile, FinalFile);
+ return;
+ }
+
+ TransactionManager->TransactionStageCopy(this, DestFile, FinalFile);
+
+ Complete = true;
+ Status = StatDone;
+ Dequeue();
+
+ return;
+}
+ /*}}}*/
+pkgAcqDiffIndex::~pkgAcqDiffIndex()
+{
+ if (diffs != NULL)
+ delete diffs;
+}
+
+// AcqIndexDiffs::AcqIndexDiffs - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* The package diff is added to the queue. one object is constructed
+ * for each diff and the index
+ */
+pkgAcqIndexDiffs::pkgAcqIndexDiffs(pkgAcquire * const Owner,
+ pkgAcqMetaClearSig * const TransactionManager,
+ IndexTarget const &Target,
+ std::string const &indexUsedMirror, std::string const &indexURI,
+ vector<DiffInfo> const &diffs)
+ : pkgAcqBaseIndex(Owner, TransactionManager, Target), indexURI(indexURI),
+ available_patches(diffs)
+{
+ DestFile = GetKeepCompressedFileName(GetPartialFileNameFromURI(Target.URI), Target);
+
+ Debug = _config->FindB("Debug::pkgAcquire::Diffs",false);
+
+ Desc.Owner = this;
+ Description = Target.Description;
+ Desc.ShortDesc = Target.ShortDesc;
+
+ UsedMirror = indexUsedMirror;
+ if (UsedMirror == "DIRECT")
+ UsedMirror.clear();
+ else if (UsedMirror.empty() == false && Description.find(" ") != string::npos)
+ Description.replace(0, Description.find(" "), UsedMirror);
+
+ if(available_patches.empty() == true)
+ {
+ // we are done (yeah!), check hashes against the final file
+ DestFile = GetKeepCompressedFileName(GetFinalFileNameFromURI(Target.URI), Target);
+ Finish(true);
+ }
+ else
+ {
+ State = StateFetchDiff;
+ QueueNextDiff();
+ }
+}
+ /*}}}*/
+void pkgAcqIndexDiffs::Failed(string const &Message,pkgAcquire::MethodConfig const * const Cnf)/*{{{*/
+{
+ pkgAcqBaseIndex::Failed(Message,Cnf);
+ Status = StatDone;
+
+ DestFile = GetKeepCompressedFileName(GetPartialFileNameFromURI(Target.URI), Target);
+ if(Debug)
+ std::clog << "pkgAcqIndexDiffs failed: " << Desc.URI << " with " << Message << std::endl
+ << "Falling back to normal index file acquire " << std::endl;
+ RenameOnError(PDiffError);
+ std::string const patchname = GetDiffsPatchFileName(DestFile);
+ if (RealFileExists(patchname))
+ Rename(patchname, patchname + ".FAILED");
+ std::string const UnpatchedFile = GetExistingFilename(GetPartialFileNameFromURI(Target.URI));
+ if (UnpatchedFile.empty() == false && FileExists(UnpatchedFile))
+ Rename(UnpatchedFile, UnpatchedFile + ".FAILED");
+ new pkgAcqIndex(Owner, TransactionManager, Target);
+ Finish();
+}
+ /*}}}*/
+// Finish - helper that cleans the item out of the fetcher queue /*{{{*/
+void pkgAcqIndexDiffs::Finish(bool allDone)
+{
+ if(Debug)
+ std::clog << "pkgAcqIndexDiffs::Finish(): "
+ << allDone << " "
+ << Desc.URI << std::endl;
+
+ // we restore the original name, this is required, otherwise
+ // the file will be cleaned
+ if(allDone)
+ {
+ std::string const Final = GetKeepCompressedFileName(GetFinalFilename(), Target);
+ TransactionManager->TransactionStageCopy(this, DestFile, Final);
+
+ // this is for the "real" finish
+ Complete = true;
+ Status = StatDone;
+ Dequeue();
+ if(Debug)
+ std::clog << "\n\nallDone: " << DestFile << "\n" << std::endl;
+ return;
+ }
+ else
+ DestFile.clear();
+
+ if(Debug)
+ std::clog << "Finishing: " << Desc.URI << std::endl;
+ Complete = false;
+ Status = StatDone;
+ Dequeue();
+ return;
+}
+ /*}}}*/
+bool pkgAcqIndexDiffs::QueueNextDiff() /*{{{*/
+{
+ // calc sha1 of the just patched file
+ std::string const PartialFile = GetExistingFilename(GetPartialFileNameFromURI(Target.URI));
+ if(unlikely(PartialFile.empty()))
+ {
+ Failed("Message: The file " + GetPartialFileNameFromURI(Target.URI) + " isn't available", NULL);
+ return false;
+ }
+
+ FileFd fd(PartialFile, FileFd::ReadOnly, FileFd::Extension);
+ Hashes LocalHashesCalc;
+ LocalHashesCalc.AddFD(fd);
+ HashStringList const LocalHashes = LocalHashesCalc.GetHashStringList();
+
+ if(Debug)
+ std::clog << "QueueNextDiff: " << PartialFile << " (" << LocalHashes.find(NULL)->toStr() << ")" << std::endl;
+
+ HashStringList const TargetFileHashes = GetExpectedHashesFor(Target.MetaKey);
+ if (unlikely(LocalHashes.usable() == false || TargetFileHashes.usable() == false))
+ {
+ Failed("Local/Expected hashes are not usable for " + PartialFile, NULL);
+ return false;
+ }
+
+ // final file reached before all patches are applied
+ if(LocalHashes == TargetFileHashes)
+ {
+ Finish(true);
+ return true;
+ }
+
+ // remove all patches until the next matching patch is found
+ // this requires the Index file to be ordered
+ available_patches.erase(available_patches.begin(),
+ std::find_if(available_patches.begin(), available_patches.end(), [&](DiffInfo const &I) {
+ return I.result_hashes == LocalHashes;
+ }));
+
+ // error checking and falling back if no patch was found
+ if(available_patches.empty() == true)
+ {
+ Failed("No patches left to reach target for " + PartialFile, NULL);
+ return false;
+ }
+
+ // queue the right diff
+ Desc.URI = indexURI + ".diff/" + available_patches[0].file + ".gz";
+ Desc.Description = Description + " " + available_patches[0].file + string(".pdiff");
+ DestFile = GetKeepCompressedFileName(GetPartialFileNameFromURI(Target.URI + ".diff/" + available_patches[0].file), Target);
+
+ if(Debug)
+ std::clog << "pkgAcqIndexDiffs::QueueNextDiff(): " << Desc.URI << std::endl;
+
+ QueueURI(Desc);
+
+ return true;
+}
+ /*}}}*/
+void pkgAcqIndexDiffs::Done(string const &Message, HashStringList const &Hashes, /*{{{*/
+ pkgAcquire::MethodConfig const * const Cnf)
+{
+ if (Debug)
+ std::clog << "pkgAcqIndexDiffs::Done(): " << Desc.URI << std::endl;
+
+ Item::Done(Message, Hashes, Cnf);
+
+ std::string const UncompressedUnpatchedFile = GetPartialFileNameFromURI(Target.URI);
+ std::string const UnpatchedFile = GetExistingFilename(UncompressedUnpatchedFile);
+ std::string const PatchFile = GetDiffsPatchFileName(UnpatchedFile);
+ std::string const PatchedFile = GetKeepCompressedFileName(UncompressedUnpatchedFile, Target);
+
+ switch (State)
+ {
+ // success in downloading a diff, enter ApplyDiff state
+ case StateFetchDiff:
+ Rename(DestFile, PatchFile);
+ DestFile = GetKeepCompressedFileName(UncompressedUnpatchedFile + "-patched", Target);
+ if(Debug)
+ std::clog << "Sending to rred method: " << UnpatchedFile << std::endl;
+ State = StateApplyDiff;
+ Local = true;
+ Desc.URI = "rred:" + UnpatchedFile;
+ QueueURI(Desc);
+ SetActiveSubprocess("rred");
+ return;
+ // success in download/apply a diff, queue next (if needed)
+ case StateApplyDiff:
+ // remove the just applied patch and base file
+ available_patches.erase(available_patches.begin());
+ RemoveFile("pkgAcqIndexDiffs::Done", PatchFile);
+ RemoveFile("pkgAcqIndexDiffs::Done", UnpatchedFile);
+ if(Debug)
+ std::clog << "Moving patched file in place: " << std::endl
+ << DestFile << " -> " << PatchedFile << std::endl;
+ Rename(DestFile, PatchedFile);
+
+ // see if there is more to download
+ if(available_patches.empty() == false)
+ {
+ new pkgAcqIndexDiffs(Owner, TransactionManager, Target, UsedMirror, indexURI, available_patches);
+ Finish();
+ } else {
+ DestFile = PatchedFile;
+ Finish(true);
+ }
+ return;
+ }
+}
+ /*}}}*/
+std::string pkgAcqIndexDiffs::Custom600Headers() const /*{{{*/
+{
+ if(State != StateApplyDiff)
+ return pkgAcqBaseIndex::Custom600Headers();
+ std::ostringstream patchhashes;
+ for (auto && hs : available_patches[0].result_hashes)
+ patchhashes << "\nStart-" << hs.HashType() << "-Hash: " << hs.HashValue();
+ for (auto && hs : available_patches[0].patch_hashes)
+ patchhashes << "\nPatch-0-" << hs.HashType() << "-Hash: " << hs.HashValue();
+ patchhashes << pkgAcqBaseIndex::Custom600Headers();
+ return patchhashes.str();
+}
+ /*}}}*/
+pkgAcqIndexDiffs::~pkgAcqIndexDiffs() {}
+
+// AcqIndexMergeDiffs::AcqIndexMergeDiffs - Constructor /*{{{*/
+pkgAcqIndexMergeDiffs::pkgAcqIndexMergeDiffs(pkgAcquire * const Owner,
+ pkgAcqMetaClearSig * const TransactionManager,
+ IndexTarget const &Target,
+ std::string const &indexUsedMirror, std::string const &indexURI,
+ DiffInfo const &patch,
+ std::vector<pkgAcqIndexMergeDiffs*> const * const allPatches)
+ : pkgAcqBaseIndex(Owner, TransactionManager, Target), indexURI(indexURI),
+ patch(patch), allPatches(allPatches), State(StateFetchDiff)
+{
+ Debug = _config->FindB("Debug::pkgAcquire::Diffs",false);
+
+ Description = Target.Description;
+ UsedMirror = indexUsedMirror;
+ if (UsedMirror == "DIRECT")
+ UsedMirror.clear();
+ else if (UsedMirror.empty() == false && Description.find(" ") != string::npos)
+ Description.replace(0, Description.find(" "), UsedMirror);
+
+ Desc.Owner = this;
+ Desc.ShortDesc = Target.ShortDesc;
+ Desc.URI = indexURI + ".diff/" + patch.file + ".gz";
+ Desc.Description = Description + " " + patch.file + ".pdiff";
+ DestFile = GetPartialFileNameFromURI(Target.URI + ".diff/" + patch.file + ".gz");
+
+ if(Debug)
+ std::clog << "pkgAcqIndexMergeDiffs: " << Desc.URI << std::endl;
+
+ QueueURI(Desc);
+}
+ /*}}}*/
+void pkgAcqIndexMergeDiffs::Failed(string const &Message,pkgAcquire::MethodConfig const * const Cnf)/*{{{*/
+{
+ if(Debug)
+ std::clog << "pkgAcqIndexMergeDiffs failed: " << Desc.URI << " with " << Message << std::endl;
+
+ pkgAcqBaseIndex::Failed(Message,Cnf);
+ Status = StatDone;
+
+ // check if we are the first to fail, otherwise we are done here
+ State = StateDoneDiff;
+ for (std::vector<pkgAcqIndexMergeDiffs *>::const_iterator I = allPatches->begin();
+ I != allPatches->end(); ++I)
+ if ((*I)->State == StateErrorDiff)
+ {
+ State = StateErrorDiff;
+ return;
+ }
+
+ // first failure means we should fallback
+ State = StateErrorDiff;
+ if (Debug)
+ std::clog << "Falling back to normal index file acquire" << std::endl;
+ RenameOnError(PDiffError);
+ if (RealFileExists(DestFile))
+ Rename(DestFile, DestFile + ".FAILED");
+ std::string const UnpatchedFile = GetExistingFilename(GetPartialFileNameFromURI(Target.URI));
+ if (UnpatchedFile.empty() == false && FileExists(UnpatchedFile))
+ Rename(UnpatchedFile, UnpatchedFile + ".FAILED");
+ DestFile.clear();
+ new pkgAcqIndex(Owner, TransactionManager, Target);
+}
+ /*}}}*/
+void pkgAcqIndexMergeDiffs::Done(string const &Message, HashStringList const &Hashes, /*{{{*/
+ pkgAcquire::MethodConfig const * const Cnf)
+{
+ if(Debug)
+ std::clog << "pkgAcqIndexMergeDiffs::Done(): " << Desc.URI << std::endl;
+
+ Item::Done(Message, Hashes, Cnf);
+
+ if (std::any_of(allPatches->begin(), allPatches->end(),
+ [](pkgAcqIndexMergeDiffs const * const P) { return P->State == StateErrorDiff; }))
+ {
+ if(Debug)
+ std::clog << "Another patch failed already, no point in processing this one." << std::endl;
+ State = StateErrorDiff;
+ return;
+ }
+
+ std::string const UncompressedUnpatchedFile = GetPartialFileNameFromURI(Target.URI);
+ std::string const UnpatchedFile = GetExistingFilename(UncompressedUnpatchedFile);
+ if (UnpatchedFile.empty())
+ {
+ _error->Fatal("Unpatched file %s doesn't exist (anymore)!", UncompressedUnpatchedFile.c_str());
+ State = StateErrorDiff;
+ return;
+ }
+ std::string const PatchFile = GetMergeDiffsPatchFileName(UnpatchedFile, patch.file);
+ std::string const PatchedFile = GetKeepCompressedFileName(UncompressedUnpatchedFile, Target);
+
+ switch (State)
+ {
+ case StateFetchDiff:
+ Rename(DestFile, PatchFile);
+
+ // check if this is the last completed diff
+ State = StateDoneDiff;
+ for (std::vector<pkgAcqIndexMergeDiffs *>::const_iterator I = allPatches->begin();
+ I != allPatches->end(); ++I)
+ if ((*I)->State != StateDoneDiff)
+ {
+ if(Debug)
+ std::clog << "Not the last done diff in the batch: " << Desc.URI << std::endl;
+ return;
+ }
+ // this is the last completed diff, so we are ready to apply now
+ DestFile = GetKeepCompressedFileName(UncompressedUnpatchedFile + "-patched", Target);
+ if(Debug)
+ std::clog << "Sending to rred method: " << UnpatchedFile << std::endl;
+ State = StateApplyDiff;
+ Local = true;
+ Desc.URI = "rred:" + UnpatchedFile;
+ QueueURI(Desc);
+ SetActiveSubprocess("rred");
+ return;
+ case StateApplyDiff:
+ // success in download & apply all diffs, finialize and clean up
+ if(Debug)
+ std::clog << "Queue patched file in place: " << std::endl
+ << DestFile << " -> " << PatchedFile << std::endl;
+
+ // queue for copy by the transaction manager
+ TransactionManager->TransactionStageCopy(this, DestFile, GetKeepCompressedFileName(GetFinalFilename(), Target));
+
+ // ensure the ed's are gone regardless of list-cleanup
+ for (std::vector<pkgAcqIndexMergeDiffs *>::const_iterator I = allPatches->begin();
+ I != allPatches->end(); ++I)
+ RemoveFile("pkgAcqIndexMergeDiffs::Done", GetMergeDiffsPatchFileName(UnpatchedFile, (*I)->patch.file));
+ RemoveFile("pkgAcqIndexMergeDiffs::Done", UnpatchedFile);
+
+ // all set and done
+ Complete = true;
+ if(Debug)
+ std::clog << "allDone: " << DestFile << "\n" << std::endl;
+ return;
+ case StateDoneDiff: _error->Fatal("Done called for %s which is in an invalid Done state", PatchFile.c_str()); break;
+ case StateErrorDiff: _error->Fatal("Done called for %s which is in an invalid Error state", PatchFile.c_str()); break;
+ }
+}
+ /*}}}*/
+std::string pkgAcqIndexMergeDiffs::Custom600Headers() const /*{{{*/
+{
+ if(State != StateApplyDiff)
+ return pkgAcqBaseIndex::Custom600Headers();
+ std::ostringstream patchhashes;
+ unsigned int seen_patches = 0;
+ for (auto && hs : (*allPatches)[0]->patch.result_hashes)
+ patchhashes << "\nStart-" << hs.HashType() << "-Hash: " << hs.HashValue();
+ for (std::vector<pkgAcqIndexMergeDiffs *>::const_iterator I = allPatches->begin();
+ I != allPatches->end(); ++I)
+ {
+ HashStringList const ExpectedHashes = (*I)->patch.patch_hashes;
+ for (HashStringList::const_iterator hs = ExpectedHashes.begin(); hs != ExpectedHashes.end(); ++hs)
+ patchhashes << "\nPatch-" << std::to_string(seen_patches) << "-" << hs->HashType() << "-Hash: " << hs->HashValue();
+ ++seen_patches;
+ }
+ patchhashes << pkgAcqBaseIndex::Custom600Headers();
+ return patchhashes.str();
+}
+ /*}}}*/
+pkgAcqIndexMergeDiffs::~pkgAcqIndexMergeDiffs() {}
+
+// AcqIndex::AcqIndex - Constructor /*{{{*/
+pkgAcqIndex::pkgAcqIndex(pkgAcquire * const Owner,
+ pkgAcqMetaClearSig * const TransactionManager,
+ IndexTarget const &Target, bool const Derived)
+ : pkgAcqBaseIndex(Owner, TransactionManager, Target), d(NULL), Stage(STAGE_DOWNLOAD),
+ CompressionExtensions(Target.Option(IndexTarget::COMPRESSIONTYPES))
+{
+ if (Derived)
+ return;
+ Init(Target.URI, Target.Description, Target.ShortDesc);
+
+ if(_config->FindB("Debug::Acquire::Transaction", false) == true)
+ std::clog << "New pkgIndex with TransactionManager "
+ << TransactionManager << std::endl;
+}
+ /*}}}*/
+// AcqIndex::Init - deferred Constructor /*{{{*/
+static void NextCompressionExtension(std::string &CurrentCompressionExtension, std::string &CompressionExtensions, bool const preview)
+{
+ size_t const nextExt = CompressionExtensions.find(' ');
+ if (nextExt == std::string::npos)
+ {
+ CurrentCompressionExtension = CompressionExtensions;
+ if (preview == false)
+ CompressionExtensions.clear();
+ }
+ else
+ {
+ CurrentCompressionExtension = CompressionExtensions.substr(0, nextExt);
+ if (preview == false)
+ CompressionExtensions = CompressionExtensions.substr(nextExt+1);
+ }
+}
+void pkgAcqIndex::Init(string const &URI, string const &URIDesc,
+ string const &ShortDesc)
+{
+ Stage = STAGE_DOWNLOAD;
+
+ DestFile = GetPartialFileNameFromURI(URI);
+ NextCompressionExtension(CurrentCompressionExtension, CompressionExtensions, false);
+
+ if (CurrentCompressionExtension == "uncompressed")
+ {
+ Desc.URI = URI;
+ }
+ else if (CurrentCompressionExtension == "by-hash")
+ {
+ NextCompressionExtension(CurrentCompressionExtension, CompressionExtensions, true);
+ if(unlikely(CurrentCompressionExtension.empty()))
+ return;
+ if (CurrentCompressionExtension != "uncompressed")
+ {
+ Desc.URI = URI + '.' + CurrentCompressionExtension;
+ DestFile = DestFile + '.' + CurrentCompressionExtension;
+ }
+ else
+ Desc.URI = URI;
+
+ HashStringList const Hashes = GetExpectedHashes();
+ HashString const * const TargetHash = Hashes.find(NULL);
+ if (unlikely(TargetHash == nullptr))
+ return;
+ std::string const ByHash = "/by-hash/" + TargetHash->HashType() + "/" + TargetHash->HashValue();
+ size_t const trailing_slash = Desc.URI.find_last_of("/");
+ if (unlikely(trailing_slash == std::string::npos))
+ return;
+ Desc.URI = Desc.URI.replace(
+ trailing_slash,
+ Desc.URI.substr(trailing_slash+1).size()+1,
+ ByHash);
+ }
+ else if (unlikely(CurrentCompressionExtension.empty()))
+ return;
+ else
+ {
+ Desc.URI = URI + '.' + CurrentCompressionExtension;
+ DestFile = DestFile + '.' + CurrentCompressionExtension;
+ }
+
+ // store file size of the download to ensure the fetcher gives
+ // accurate progress reporting
+ FileSize = GetExpectedHashes().FileSize();
+
+ Desc.Description = URIDesc;
+ Desc.Owner = this;
+ Desc.ShortDesc = ShortDesc;
+
+ QueueURI(Desc);
+}
+ /*}}}*/
+// AcqIndex::Custom600Headers - Insert custom request headers /*{{{*/
+// ---------------------------------------------------------------------
+/* The only header we use is the last-modified header. */
+string pkgAcqIndex::Custom600Headers() const
+{
+
+ string msg = "\nIndex-File: true";
+
+ if (TransactionManager->LastMetaIndexParser == NULL)
+ {
+ std::string const Final = GetFinalFilename();
+
+ struct stat Buf;
+ if (stat(Final.c_str(),&Buf) == 0)
+ msg += "\nLast-Modified: " + TimeRFC1123(Buf.st_mtime, false);
+ }
+
+ if(Target.IsOptional)
+ msg += "\nFail-Ignore: true";
+
+ return msg;
+}
+ /*}}}*/
+// AcqIndex::Failed - getting the indexfile failed /*{{{*/
+bool pkgAcqIndex::CommonFailed(std::string const &TargetURI, std::string const TargetDesc,
+ std::string const &Message, pkgAcquire::MethodConfig const * const Cnf)
+{
+ pkgAcqBaseIndex::Failed(Message,Cnf);
+
+ if (UsedMirror.empty() == false && UsedMirror != "DIRECT" &&
+ LookupTag(Message, "FailReason") == "HttpError404")
+ {
+ UsedMirror = "DIRECT";
+ if (Desc.URI.find("/by-hash/") != std::string::npos)
+ CompressionExtensions = "by-hash " + CompressionExtensions;
+ else
+ CompressionExtensions = CurrentCompressionExtension + ' ' + CompressionExtensions;
+ Init(TargetURI, TargetDesc, Desc.ShortDesc);
+ Status = StatIdle;
+ return true;
+ }
+
+ // authorisation matches will not be fixed by other compression types
+ if (Status != StatAuthError)
+ {
+ if (CompressionExtensions.empty() == false)
+ {
+ Init(TargetURI, Desc.Description, Desc.ShortDesc);
+ Status = StatIdle;
+ return true;
+ }
+ }
+ return false;
+}
+void pkgAcqIndex::Failed(string const &Message,pkgAcquire::MethodConfig const * const Cnf)
+{
+ if (CommonFailed(Target.URI, Target.Description, Message, Cnf))
+ return;
+
+ if(Target.IsOptional && GetExpectedHashes().empty() && Stage == STAGE_DOWNLOAD)
+ Status = StatDone;
+ else
+ TransactionManager->AbortTransaction();
+}
+ /*}}}*/
+// AcqIndex::Done - Finished a fetch /*{{{*/
+// ---------------------------------------------------------------------
+/* This goes through a number of states.. On the initial fetch the
+ method could possibly return an alternate filename which points
+ to the uncompressed version of the file. If this is so the file
+ is copied into the partial directory. In all other cases the file
+ is decompressed with a compressed uri. */
+void pkgAcqIndex::Done(string const &Message,
+ HashStringList const &Hashes,
+ pkgAcquire::MethodConfig const * const Cfg)
+{
+ Item::Done(Message,Hashes,Cfg);
+
+ switch(Stage)
+ {
+ case STAGE_DOWNLOAD:
+ StageDownloadDone(Message);
+ break;
+ case STAGE_DECOMPRESS_AND_VERIFY:
+ StageDecompressDone();
+ break;
+ }
+}
+ /*}}}*/
+// AcqIndex::StageDownloadDone - Queue for decompress and verify /*{{{*/
+void pkgAcqIndex::StageDownloadDone(string const &Message)
+{
+ Local = true;
+ Complete = true;
+
+ std::string const AltFilename = LookupTag(Message,"Alt-Filename");
+ std::string Filename = LookupTag(Message,"Filename");
+
+ // we need to verify the file against the current Release file again
+ // on if-modfied-since hit to avoid a stale attack against us
+ if(StringToBool(LookupTag(Message,"IMS-Hit"),false) == true)
+ {
+ // copy FinalFile into partial/ so that we check the hash again
+ string const FinalFile = GetExistingFilename(GetFinalFileNameFromURI(Target.URI));
+ if (symlink(FinalFile.c_str(), DestFile.c_str()) != 0)
+ _error->WarningE("pkgAcqIndex::StageDownloadDone", "Symlinking final file %s back to %s failed", FinalFile.c_str(), DestFile.c_str());
+ else
+ {
+ EraseFileName = DestFile;
+ Filename = DestFile;
+ }
+ Stage = STAGE_DECOMPRESS_AND_VERIFY;
+ Desc.URI = "store:" + Filename;
+ QueueURI(Desc);
+ SetActiveSubprocess(::URI(Desc.URI).Access);
+ return;
+ }
+ // methods like file:// give us an alternative (uncompressed) file
+ else if (Target.KeepCompressed == false && AltFilename.empty() == false)
+ {
+ Filename = AltFilename;
+ EraseFileName.clear();
+ }
+ // Methods like e.g. "file:" will give us a (compressed) FileName that is
+ // not the "DestFile" we set, in this case we uncompress from the local file
+ else if (Filename != DestFile && RealFileExists(DestFile) == false)
+ {
+ // symlinking ensures that the filename can be used for compression detection
+ // that is e.g. needed for by-hash which has no extension over file
+ if (symlink(Filename.c_str(),DestFile.c_str()) != 0)
+ _error->WarningE("pkgAcqIndex::StageDownloadDone", "Symlinking file %s to %s failed", Filename.c_str(), DestFile.c_str());
+ else
+ {
+ EraseFileName = DestFile;
+ Filename = DestFile;
+ }
+ }
+
+ Stage = STAGE_DECOMPRESS_AND_VERIFY;
+ DestFile = GetKeepCompressedFileName(GetPartialFileNameFromURI(Target.URI), Target);
+ if (Filename != DestFile && flExtension(Filename) == flExtension(DestFile))
+ Desc.URI = "copy:" + Filename;
+ else
+ Desc.URI = "store:" + Filename;
+ if (DestFile == Filename)
+ {
+ if (CurrentCompressionExtension == "uncompressed")
+ return StageDecompressDone();
+ DestFile = "/dev/null";
+ }
+
+ if (EraseFileName.empty() && Filename != AltFilename)
+ EraseFileName = Filename;
+
+ // queue uri for the next stage
+ QueueURI(Desc);
+ SetActiveSubprocess(::URI(Desc.URI).Access);
+}
+ /*}}}*/
+// AcqIndex::StageDecompressDone - Final verification /*{{{*/
+void pkgAcqIndex::StageDecompressDone()
+{
+ if (DestFile == "/dev/null")
+ DestFile = GetKeepCompressedFileName(GetPartialFileNameFromURI(Target.URI), Target);
+
+ // Done, queue for rename on transaction finished
+ TransactionManager->TransactionStageCopy(this, DestFile, GetFinalFilename());
+}
+ /*}}}*/
+pkgAcqIndex::~pkgAcqIndex() {}
+
+
+// AcqArchive::AcqArchive - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* This just sets up the initial fetch environment and queues the first
+ possibilitiy */
+pkgAcqArchive::pkgAcqArchive(pkgAcquire * const Owner,pkgSourceList * const Sources,
+ pkgRecords * const Recs,pkgCache::VerIterator const &Version,
+ string &StoreFilename) :
+ Item(Owner), d(NULL), LocalSource(false), Version(Version), Sources(Sources), Recs(Recs),
+ StoreFilename(StoreFilename), Vf(Version.FileList()),
+ Trusted(false)
+{
+ Retries = _config->FindI("Acquire::Retries",0);
+
+ if (Version.Arch() == 0)
+ {
+ _error->Error(_("I wasn't able to locate a file for the %s package. "
+ "This might mean you need to manually fix this package. "
+ "(due to missing arch)"),
+ Version.ParentPkg().FullName().c_str());
+ return;
+ }
+
+ /* We need to find a filename to determine the extension. We make the
+ assumption here that all the available sources for this version share
+ the same extension.. */
+ // Skip not source sources, they do not have file fields.
+ for (; Vf.end() == false; ++Vf)
+ {
+ if (Vf.File().Flagged(pkgCache::Flag::NotSource))
+ continue;
+ break;
+ }
+
+ // Does not really matter here.. we are going to fail out below
+ if (Vf.end() != true)
+ {
+ // If this fails to get a file name we will bomb out below.
+ pkgRecords::Parser &Parse = Recs->Lookup(Vf);
+ if (_error->PendingError() == true)
+ return;
+
+ // Generate the final file name as: package_version_arch.foo
+ StoreFilename = QuoteString(Version.ParentPkg().Name(),"_:") + '_' +
+ QuoteString(Version.VerStr(),"_:") + '_' +
+ QuoteString(Version.Arch(),"_:.") +
+ "." + flExtension(Parse.FileName());
+ }
+
+ // check if we have one trusted source for the package. if so, switch
+ // to "TrustedOnly" mode - but only if not in AllowUnauthenticated mode
+ bool const allowUnauth = _config->FindB("APT::Get::AllowUnauthenticated", false);
+ bool const debugAuth = _config->FindB("Debug::pkgAcquire::Auth", false);
+ bool seenUntrusted = false;
+ for (pkgCache::VerFileIterator i = Version.FileList(); i.end() == false; ++i)
+ {
+ pkgIndexFile *Index;
+ if (Sources->FindIndex(i.File(),Index) == false)
+ continue;
+
+ if (debugAuth == true)
+ std::cerr << "Checking index: " << Index->Describe()
+ << "(Trusted=" << Index->IsTrusted() << ")" << std::endl;
+
+ if (Index->IsTrusted() == true)
+ {
+ Trusted = true;
+ if (allowUnauth == false)
+ break;
+ }
+ else
+ seenUntrusted = true;
+ }
+
+ // "allow-unauthenticated" restores apts old fetching behaviour
+ // that means that e.g. unauthenticated file:// uris are higher
+ // priority than authenticated http:// uris
+ if (allowUnauth == true && seenUntrusted == true)
+ Trusted = false;
+
+ // Select a source
+ if (QueueNext() == false && _error->PendingError() == false)
+ _error->Error(_("Can't find a source to download version '%s' of '%s'"),
+ Version.VerStr(), Version.ParentPkg().FullName(false).c_str());
+}
+ /*}}}*/
+// AcqArchive::QueueNext - Queue the next file source /*{{{*/
+// ---------------------------------------------------------------------
+/* This queues the next available file version for download. It checks if
+ the archive is already available in the cache and stashs the MD5 for
+ checking later. */
+bool pkgAcqArchive::QueueNext()
+{
+ for (; Vf.end() == false; ++Vf)
+ {
+ pkgCache::PkgFileIterator const PkgF = Vf.File();
+ // Ignore not source sources
+ if (PkgF.Flagged(pkgCache::Flag::NotSource))
+ continue;
+
+ // Try to cross match against the source list
+ pkgIndexFile *Index;
+ if (Sources->FindIndex(PkgF, Index) == false)
+ continue;
+ LocalSource = PkgF.Flagged(pkgCache::Flag::LocalSource);
+
+ // only try to get a trusted package from another source if that source
+ // is also trusted
+ if(Trusted && !Index->IsTrusted())
+ continue;
+
+ // Grab the text package record
+ pkgRecords::Parser &Parse = Recs->Lookup(Vf);
+ if (_error->PendingError() == true)
+ return false;
+
+ string PkgFile = Parse.FileName();
+ ExpectedHashes = Parse.Hashes();
+
+ if (PkgFile.empty() == true)
+ return _error->Error(_("The package index files are corrupted. No Filename: "
+ "field for package %s."),
+ Version.ParentPkg().Name());
+
+ Desc.URI = Index->ArchiveURI(PkgFile);
+ Desc.Description = Index->ArchiveInfo(Version);
+ Desc.Owner = this;
+ Desc.ShortDesc = Version.ParentPkg().FullName(true);
+
+ // See if we already have the file. (Legacy filenames)
+ FileSize = Version->Size;
+ string FinalFile = _config->FindDir("Dir::Cache::Archives") + flNotDir(PkgFile);
+ struct stat Buf;
+ if (stat(FinalFile.c_str(),&Buf) == 0)
+ {
+ // Make sure the size matches
+ if ((unsigned long long)Buf.st_size == Version->Size)
+ {
+ Complete = true;
+ Local = true;
+ Status = StatDone;
+ StoreFilename = DestFile = FinalFile;
+ return true;
+ }
+
+ /* Hmm, we have a file and its size does not match, this means it is
+ an old style mismatched arch */
+ RemoveFile("pkgAcqArchive::QueueNext", FinalFile);
+ }
+
+ // Check it again using the new style output filenames
+ FinalFile = _config->FindDir("Dir::Cache::Archives") + flNotDir(StoreFilename);
+ if (stat(FinalFile.c_str(),&Buf) == 0)
+ {
+ // Make sure the size matches
+ if ((unsigned long long)Buf.st_size == Version->Size)
+ {
+ Complete = true;
+ Local = true;
+ Status = StatDone;
+ StoreFilename = DestFile = FinalFile;
+ return true;
+ }
+
+ /* Hmm, we have a file and its size does not match, this shouldn't
+ happen.. */
+ RemoveFile("pkgAcqArchive::QueueNext", FinalFile);
+ }
+
+ DestFile = _config->FindDir("Dir::Cache::Archives") + "partial/" + flNotDir(StoreFilename);
+
+ // Check the destination file
+ if (stat(DestFile.c_str(),&Buf) == 0)
+ {
+ // Hmm, the partial file is too big, erase it
+ if ((unsigned long long)Buf.st_size > Version->Size)
+ RemoveFile("pkgAcqArchive::QueueNext", DestFile);
+ else
+ PartialSize = Buf.st_size;
+ }
+
+ // Disables download of archives - useful if no real installation follows,
+ // e.g. if we are just interested in proposed installation order
+ if (_config->FindB("Debug::pkgAcqArchive::NoQueue", false) == true)
+ {
+ Complete = true;
+ Local = true;
+ Status = StatDone;
+ StoreFilename = DestFile = FinalFile;
+ return true;
+ }
+
+ // Create the item
+ Local = false;
+ ++Vf;
+ QueueURI(Desc);
+ return true;
+ }
+ return false;
+}
+ /*}}}*/
+// AcqArchive::Done - Finished fetching /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgAcqArchive::Done(string const &Message, HashStringList const &Hashes,
+ pkgAcquire::MethodConfig const * const Cfg)
+{
+ Item::Done(Message, Hashes, Cfg);
+
+ // Grab the output filename
+ std::string const FileName = LookupTag(Message,"Filename");
+ if (DestFile != FileName && RealFileExists(DestFile) == false)
+ {
+ StoreFilename = DestFile = FileName;
+ Local = true;
+ Complete = true;
+ return;
+ }
+
+ // Done, move it into position
+ string const FinalFile = GetFinalFilename();
+ Rename(DestFile,FinalFile);
+ StoreFilename = DestFile = FinalFile;
+ Complete = true;
+}
+ /*}}}*/
+// AcqArchive::Failed - Failure handler /*{{{*/
+// ---------------------------------------------------------------------
+/* Here we try other sources */
+void pkgAcqArchive::Failed(string const &Message,pkgAcquire::MethodConfig const * const Cnf)
+{
+ Item::Failed(Message,Cnf);
+
+ /* We don't really want to retry on failed media swaps, this prevents
+ that. An interesting observation is that permanent failures are not
+ recorded. */
+ if (Cnf->Removable == true &&
+ StringToBool(LookupTag(Message,"Transient-Failure"),false) == true)
+ {
+ // Vf = Version.FileList();
+ while (Vf.end() == false) ++Vf;
+ StoreFilename = string();
+ return;
+ }
+
+ Status = StatIdle;
+ if (QueueNext() == false)
+ {
+ // This is the retry counter
+ if (Retries != 0 &&
+ Cnf->LocalOnly == false &&
+ StringToBool(LookupTag(Message,"Transient-Failure"),false) == true)
+ {
+ Retries--;
+ Vf = Version.FileList();
+ if (QueueNext() == true)
+ return;
+ }
+
+ StoreFilename = string();
+ Status = StatError;
+ }
+}
+ /*}}}*/
+APT_PURE bool pkgAcqArchive::IsTrusted() const /*{{{*/
+{
+ return Trusted;
+}
+ /*}}}*/
+void pkgAcqArchive::Finished() /*{{{*/
+{
+ if (Status == pkgAcquire::Item::StatDone &&
+ Complete == true)
+ return;
+ StoreFilename = string();
+}
+ /*}}}*/
+std::string pkgAcqArchive::DescURI() const /*{{{*/
+{
+ return Desc.URI;
+}
+ /*}}}*/
+std::string pkgAcqArchive::ShortDesc() const /*{{{*/
+{
+ return Desc.ShortDesc;
+}
+ /*}}}*/
+pkgAcqArchive::~pkgAcqArchive() {}
+
+// AcqChangelog::pkgAcqChangelog - Constructors /*{{{*/
+class pkgAcqChangelog::Private
+{
+ public:
+ std::string FinalFile;
+};
+pkgAcqChangelog::pkgAcqChangelog(pkgAcquire * const Owner, pkgCache::VerIterator const &Ver,
+ std::string const &DestDir, std::string const &DestFilename) :
+ pkgAcquire::Item(Owner), d(new pkgAcqChangelog::Private()), SrcName(Ver.SourcePkgName()), SrcVersion(Ver.SourceVerStr())
+{
+ Desc.URI = URI(Ver);
+ Init(DestDir, DestFilename);
+}
+// some parameters are char* here as they come likely from char* interfaces – which can also return NULL
+pkgAcqChangelog::pkgAcqChangelog(pkgAcquire * const Owner, pkgCache::RlsFileIterator const &RlsFile,
+ char const * const Component, char const * const SrcName, char const * const SrcVersion,
+ const string &DestDir, const string &DestFilename) :
+ pkgAcquire::Item(Owner), d(new pkgAcqChangelog::Private()), SrcName(SrcName), SrcVersion(SrcVersion)
+{
+ Desc.URI = URI(RlsFile, Component, SrcName, SrcVersion);
+ Init(DestDir, DestFilename);
+}
+pkgAcqChangelog::pkgAcqChangelog(pkgAcquire * const Owner,
+ std::string const &URI, char const * const SrcName, char const * const SrcVersion,
+ const string &DestDir, const string &DestFilename) :
+ pkgAcquire::Item(Owner), d(new pkgAcqChangelog::Private()), SrcName(SrcName), SrcVersion(SrcVersion)
+{
+ Desc.URI = URI;
+ Init(DestDir, DestFilename);
+}
+void pkgAcqChangelog::Init(std::string const &DestDir, std::string const &DestFilename)
+{
+ if (Desc.URI.empty())
+ {
+ Status = StatError;
+ // TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+ strprintf(ErrorText, _("Changelog unavailable for %s=%s"), SrcName.c_str(), SrcVersion.c_str());
+ // Let the error message print something sensible rather than "Failed to fetch /"
+ if (DestFilename.empty())
+ DestFile = SrcName + ".changelog";
+ else
+ DestFile = DestFilename;
+ Desc.URI = "changelog:/" + DestFile;
+ return;
+ }
+
+ std::string DestFileName;
+ if (DestFilename.empty())
+ DestFileName = flCombine(DestFile, SrcName + ".changelog");
+ else
+ DestFileName = flCombine(DestFile, DestFilename);
+
+ std::string const SandboxUser = _config->Find("APT::Sandbox::User");
+ std::string const systemTemp = GetTempDir(SandboxUser);
+ char tmpname[1000];
+ snprintf(tmpname, sizeof(tmpname), "%s/apt-changelog-XXXXXX", systemTemp.c_str());
+ if (NULL == mkdtemp(tmpname))
+ {
+ _error->Errno("mkdtemp", "mkdtemp failed in changelog acquire of %s %s", SrcName.c_str(), SrcVersion.c_str());
+ Status = StatError;
+ return;
+ }
+ TemporaryDirectory = tmpname;
+
+ ChangeOwnerAndPermissionOfFile("Item::QueueURI", TemporaryDirectory.c_str(),
+ SandboxUser.c_str(), ROOT_GROUP, 0700);
+
+ DestFile = flCombine(TemporaryDirectory, DestFileName);
+ if (DestDir.empty() == false)
+ {
+ d->FinalFile = flCombine(DestDir, DestFileName);
+ if (RealFileExists(d->FinalFile))
+ {
+ FileFd file1, file2;
+ if (file1.Open(DestFile, FileFd::WriteOnly | FileFd::Create | FileFd::Exclusive) &&
+ file2.Open(d->FinalFile, FileFd::ReadOnly) && CopyFile(file2, file1))
+ {
+ struct timeval times[2];
+ times[0].tv_sec = times[1].tv_sec = file2.ModificationTime();
+ times[0].tv_usec = times[1].tv_usec = 0;
+ utimes(DestFile.c_str(), times);
+ }
+ }
+ }
+
+ Desc.ShortDesc = "Changelog";
+ strprintf(Desc.Description, "%s %s %s Changelog", URI::SiteOnly(Desc.URI).c_str(), SrcName.c_str(), SrcVersion.c_str());
+ Desc.Owner = this;
+ QueueURI(Desc);
+}
+ /*}}}*/
+std::string pkgAcqChangelog::URI(pkgCache::VerIterator const &Ver) /*{{{*/
+{
+ std::string const confOnline = "Acquire::Changelogs::AlwaysOnline";
+ bool AlwaysOnline = _config->FindB(confOnline, false);
+ if (AlwaysOnline == false)
+ for (pkgCache::VerFileIterator VF = Ver.FileList(); VF.end() == false; ++VF)
+ {
+ pkgCache::PkgFileIterator const PF = VF.File();
+ if (PF.Flagged(pkgCache::Flag::NotSource) || PF->Release == 0)
+ continue;
+ pkgCache::RlsFileIterator const RF = PF.ReleaseFile();
+ if (RF->Origin != 0 && _config->FindB(confOnline + "::Origin::" + RF.Origin(), false))
+ {
+ AlwaysOnline = true;
+ break;
+ }
+ }
+ if (AlwaysOnline == false)
+ {
+ pkgCache::PkgIterator const Pkg = Ver.ParentPkg();
+ if (Pkg->CurrentVer != 0 && Pkg.CurrentVer() == Ver)
+ {
+ std::string const root = _config->FindDir("Dir");
+ std::string const basename = root + std::string("usr/share/doc/") + Pkg.Name() + "/changelog";
+ std::string const debianname = basename + ".Debian";
+ if (FileExists(debianname))
+ return "copy://" + debianname;
+ else if (FileExists(debianname + ".gz"))
+ return "gzip://" + debianname + ".gz";
+ else if (FileExists(basename))
+ return "copy://" + basename;
+ else if (FileExists(basename + ".gz"))
+ return "gzip://" + basename + ".gz";
+ }
+ }
+
+ char const * const SrcName = Ver.SourcePkgName();
+ char const * const SrcVersion = Ver.SourceVerStr();
+ // find the first source for this version which promises a changelog
+ for (pkgCache::VerFileIterator VF = Ver.FileList(); VF.end() == false; ++VF)
+ {
+ pkgCache::PkgFileIterator const PF = VF.File();
+ if (PF.Flagged(pkgCache::Flag::NotSource) || PF->Release == 0)
+ continue;
+ pkgCache::RlsFileIterator const RF = PF.ReleaseFile();
+ std::string const uri = URI(RF, PF.Component(), SrcName, SrcVersion);
+ if (uri.empty())
+ continue;
+ return uri;
+ }
+ return "";
+}
+std::string pkgAcqChangelog::URITemplate(pkgCache::RlsFileIterator const &Rls)
+{
+ if (Rls.end() == true || (Rls->Label == 0 && Rls->Origin == 0))
+ return "";
+ std::string const serverConfig = "Acquire::Changelogs::URI";
+ std::string server;
+#define APT_EMPTY_SERVER \
+ if (server.empty() == false) \
+ { \
+ if (server != "no") \
+ return server; \
+ return ""; \
+ }
+#define APT_CHECK_SERVER(X, Y) \
+ if (Rls->X != 0) \
+ { \
+ std::string const specialServerConfig = serverConfig + "::" + Y + #X + "::" + Rls.X(); \
+ server = _config->Find(specialServerConfig); \
+ APT_EMPTY_SERVER \
+ }
+ // this way e.g. Debian-Security can fallback to Debian
+ APT_CHECK_SERVER(Label, "Override::")
+ APT_CHECK_SERVER(Origin, "Override::")
+
+ if (RealFileExists(Rls.FileName()))
+ {
+ _error->PushToStack();
+ FileFd rf;
+ /* This can be costly. A caller wanting to get millions of URIs might
+ want to do this on its own once and use Override settings.
+ We don't do this here as Origin/Label are not as unique as they
+ should be so this could produce request order-dependent anomalies */
+ if (OpenMaybeClearSignedFile(Rls.FileName(), rf) == true)
+ {
+ pkgTagFile TagFile(&rf, rf.Size());
+ pkgTagSection Section;
+ if (TagFile.Step(Section) == true)
+ server = Section.FindS("Changelogs");
+ }
+ _error->RevertToStack();
+ APT_EMPTY_SERVER
+ }
+
+ APT_CHECK_SERVER(Label, "")
+ APT_CHECK_SERVER(Origin, "")
+#undef APT_CHECK_SERVER
+#undef APT_EMPTY_SERVER
+ return "";
+}
+std::string pkgAcqChangelog::URI(pkgCache::RlsFileIterator const &Rls,
+ char const * const Component, char const * const SrcName,
+ char const * const SrcVersion)
+{
+ return URI(URITemplate(Rls), Component, SrcName, SrcVersion);
+}
+std::string pkgAcqChangelog::URI(std::string const &Template,
+ char const * const Component, char const * const SrcName,
+ char const * const SrcVersion)
+{
+ if (Template.find("@CHANGEPATH@") == std::string::npos)
+ return "";
+
+ // the path is: COMPONENT/SRC/SRCNAME/SRCNAME_SRCVER, e.g. main/a/apt/apt_1.1 or contrib/liba/libapt/libapt_2.0
+ std::string Src = SrcName;
+ std::string path = APT::String::Startswith(SrcName, "lib") ? Src.substr(0, 4) : Src.substr(0,1);
+ path.append("/").append(Src).append("/");
+ path.append(Src).append("_").append(StripEpoch(SrcVersion));
+ // we omit component for releases without one (= flat-style repositories)
+ if (Component != NULL && strlen(Component) != 0)
+ path = std::string(Component) + "/" + path;
+
+ return SubstVar(Template, "@CHANGEPATH@", path);
+}
+ /*}}}*/
+// AcqChangelog::Failed - Failure handler /*{{{*/
+void pkgAcqChangelog::Failed(string const &Message, pkgAcquire::MethodConfig const * const Cnf)
+{
+ Item::Failed(Message,Cnf);
+
+ std::string errText;
+ // TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+ strprintf(errText, _("Changelog unavailable for %s=%s"), SrcName.c_str(), SrcVersion.c_str());
+
+ // Error is probably something techy like 404 Not Found
+ if (ErrorText.empty())
+ ErrorText = errText;
+ else
+ ErrorText = errText + " (" + ErrorText + ")";
+}
+ /*}}}*/
+// AcqChangelog::Done - Item downloaded OK /*{{{*/
+void pkgAcqChangelog::Done(string const &Message,HashStringList const &CalcHashes,
+ pkgAcquire::MethodConfig const * const Cnf)
+{
+ Item::Done(Message,CalcHashes,Cnf);
+ if (d->FinalFile.empty() == false)
+ {
+ if (RemoveFile("pkgAcqChangelog::Done", d->FinalFile) == false ||
+ Rename(DestFile, d->FinalFile) == false)
+ Status = StatError;
+ }
+
+ Complete = true;
+}
+ /*}}}*/
+pkgAcqChangelog::~pkgAcqChangelog() /*{{{*/
+{
+ if (TemporaryDirectory.empty() == false)
+ {
+ RemoveFile("~pkgAcqChangelog", DestFile);
+ rmdir(TemporaryDirectory.c_str());
+ }
+ delete d;
+}
+ /*}}}*/
+
+// AcqFile::pkgAcqFile - Constructor /*{{{*/
+pkgAcqFile::pkgAcqFile(pkgAcquire * const Owner,string const &URI, HashStringList const &Hashes,
+ unsigned long long const Size,string const &Dsc,string const &ShortDesc,
+ const string &DestDir, const string &DestFilename,
+ bool const IsIndexFile) :
+ Item(Owner), d(NULL), IsIndexFile(IsIndexFile), ExpectedHashes(Hashes)
+{
+ Retries = _config->FindI("Acquire::Retries",0);
+
+ if(!DestFilename.empty())
+ DestFile = DestFilename;
+ else if(!DestDir.empty())
+ DestFile = DestDir + "/" + flNotDir(URI);
+ else
+ DestFile = flNotDir(URI);
+
+ // Create the item
+ Desc.URI = URI;
+ Desc.Description = Dsc;
+ Desc.Owner = this;
+
+ // Set the short description to the archive component
+ Desc.ShortDesc = ShortDesc;
+
+ // Get the transfer sizes
+ FileSize = Size;
+ struct stat Buf;
+ if (stat(DestFile.c_str(),&Buf) == 0)
+ {
+ // Hmm, the partial file is too big, erase it
+ if ((Size > 0) && (unsigned long long)Buf.st_size > Size)
+ RemoveFile("pkgAcqFile", DestFile);
+ else
+ PartialSize = Buf.st_size;
+ }
+
+ QueueURI(Desc);
+}
+ /*}}}*/
+// AcqFile::Done - Item downloaded OK /*{{{*/
+void pkgAcqFile::Done(string const &Message,HashStringList const &CalcHashes,
+ pkgAcquire::MethodConfig const * const Cnf)
+{
+ Item::Done(Message,CalcHashes,Cnf);
+
+ std::string const FileName = LookupTag(Message,"Filename");
+ Complete = true;
+
+ // The files timestamp matches
+ if (StringToBool(LookupTag(Message,"IMS-Hit"),false) == true)
+ return;
+
+ // We have to copy it into place
+ if (RealFileExists(DestFile.c_str()) == false)
+ {
+ Local = true;
+ if (_config->FindB("Acquire::Source-Symlinks",true) == false ||
+ Cnf->Removable == true)
+ {
+ Desc.URI = "copy:" + FileName;
+ QueueURI(Desc);
+ return;
+ }
+
+ // Erase the file if it is a symlink so we can overwrite it
+ struct stat St;
+ if (lstat(DestFile.c_str(),&St) == 0)
+ {
+ if (S_ISLNK(St.st_mode) != 0)
+ RemoveFile("pkgAcqFile::Done", DestFile);
+ }
+
+ // Symlink the file
+ if (symlink(FileName.c_str(),DestFile.c_str()) != 0)
+ {
+ _error->PushToStack();
+ _error->Errno("pkgAcqFile::Done", "Symlinking file %s failed", DestFile.c_str());
+ std::stringstream msg;
+ _error->DumpErrors(msg, GlobalError::DEBUG, false);
+ _error->RevertToStack();
+ ErrorText = msg.str();
+ Status = StatError;
+ Complete = false;
+ }
+ }
+}
+ /*}}}*/
+// AcqFile::Failed - Failure handler /*{{{*/
+// ---------------------------------------------------------------------
+/* Here we try other sources */
+void pkgAcqFile::Failed(string const &Message, pkgAcquire::MethodConfig const * const Cnf)
+{
+ Item::Failed(Message,Cnf);
+
+ // This is the retry counter
+ if (Retries != 0 &&
+ Cnf->LocalOnly == false &&
+ StringToBool(LookupTag(Message,"Transient-Failure"),false) == true)
+ {
+ --Retries;
+ QueueURI(Desc);
+ Status = StatIdle;
+ return;
+ }
+
+}
+ /*}}}*/
+string pkgAcqFile::Custom600Headers() const /*{{{*/
+{
+ if (IsIndexFile)
+ return "\nIndex-File: true";
+ return "";
+}
+ /*}}}*/
+pkgAcqFile::~pkgAcqFile() {}
diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h
new file mode 100644
index 000000000..7741dbf22
--- /dev/null
+++ b/apt-pkg/acquire-item.h
@@ -0,0 +1,1229 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Acquire Item - Item to acquire
+
+ When an item is instantiated it will add it self to the local list in
+ the Owner Acquire class. Derived classes will then call QueueURI to
+ register all the URI's they wish to fetch at the initial moment.
+
+ Three item classes are provided to provide functionality for
+ downloading of Index, Translation and Packages files.
+
+ A Archive class is provided for downloading .deb files. It does Hash
+ checking and source location as well as a retry algorithm.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_ACQUIRE_ITEM_H
+#define PKGLIB_ACQUIRE_ITEM_H
+
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/weakptr.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#include <string>
+#include <vector>
+#include <map>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/pkgrecords.h>
+#endif
+
+/** \addtogroup acquire
+ * @{
+ *
+ * \file acquire-item.h
+ */
+
+class pkgRecords;
+class pkgSourceList;
+class pkgAcqMetaClearSig;
+class pkgAcqIndexMergeDiffs;
+class metaIndex;
+
+class pkgAcquire::Item : public WeakPointable /*{{{*/
+/** \brief Represents the process by which a pkgAcquire object should
+ * retrieve a file or a collection of files.
+ *
+ * By convention, Item subclasses should insert themselves into the
+ * acquire queue when they are created by calling QueueURI(), and
+ * remove themselves by calling Dequeue() when either Done() or
+ * Failed() is invoked. Item objects are also responsible for
+ * notifying the download progress indicator (accessible via
+ * #Owner->Log) of their status.
+ *
+ * \see pkgAcquire
+ */
+{
+ public:
+
+ /** \brief The current status of this item. */
+ enum ItemState
+ {
+ /** \brief The item is waiting to be downloaded. */
+ StatIdle,
+
+ /** \brief The item is currently being downloaded. */
+ StatFetching,
+
+ /** \brief The item has been successfully downloaded. */
+ StatDone,
+
+ /** \brief An error was encountered while downloading this
+ * item.
+ */
+ StatError,
+
+ /** \brief The item was downloaded but its authenticity could
+ * not be verified.
+ */
+ StatAuthError,
+
+ /** \brief The item was could not be downloaded because of
+ * a transient network error (e.g. network down)
+ */
+ StatTransientNetworkError,
+ } Status;
+
+ /** \brief Contains a textual description of the error encountered
+ * if #ItemState is #StatError or #StatAuthError.
+ */
+ std::string ErrorText;
+
+ /** \brief The size of the object to fetch. */
+ unsigned long long FileSize;
+
+ /** \brief How much of the object was already fetched. */
+ unsigned long long PartialSize;
+
+ /** \brief If not \b NULL, contains the name of a subprocess that
+ * is operating on this object (for instance, "gzip" or "gpgv").
+ */
+ APT_DEPRECATED_MSG("Use the std::string member ActiveSubprocess instead") const char *Mode;
+
+ /** \brief contains the name of the subprocess that is operating on this object
+ * (for instance, "gzip", "rred" or "gpgv"). This is obsoleting #Mode from above
+ * as it can manage the lifetime of included string properly. */
+ std::string ActiveSubprocess;
+
+ /** \brief A client-supplied unique identifier.
+ *
+ * This field is initialized to 0; it is meant to be filled in by
+ * clients that wish to use it to uniquely identify items.
+ *
+ * APT progress reporting will store an ID there as shown in "Get:42 …"
+ */
+ unsigned long ID;
+
+ /** \brief If \b true, the entire object has been successfully fetched.
+ *
+ * Subclasses should set this to \b true when appropriate.
+ */
+ bool Complete;
+
+ /** \brief If \b true, the URI of this object is "local".
+ *
+ * The only effect of this field is to exclude the object from the
+ * download progress indicator's overall statistics.
+ */
+ bool Local;
+
+ std::string UsedMirror;
+
+ /** \brief The number of fetch queues into which this item has been
+ * inserted.
+ *
+ * There is one queue for each source from which an item could be
+ * downloaded.
+ *
+ * \sa pkgAcquire
+ */
+ unsigned int QueueCounter;
+
+ /** \brief The number of additional fetch items that are expected
+ * once this item is done.
+ *
+ * Some items like pkgAcqMeta{Index,Sig} will queue additional
+ * items. This variable can be set by the methods if it knows
+ * in advance how many items to expect to get a more accurate
+ * progress.
+ */
+ unsigned int ExpectedAdditionalItems;
+
+ /** \brief The name of the file into which the retrieved object
+ * will be written.
+ */
+ std::string DestFile;
+
+ /** \brief Invoked by the acquire worker when the object couldn't
+ * be fetched.
+ *
+ * This is a branch of the continuation of the fetch process.
+ *
+ * \param Message An RFC822-formatted message from the acquire
+ * method describing what went wrong. Use LookupTag() to parse
+ * it.
+ *
+ * \param Cnf The method via which the worker tried to fetch this object.
+ *
+ * \sa pkgAcqMethod
+ */
+ virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf);
+
+ /** \brief Invoked by the acquire worker to check if the successfully
+ * fetched object is also the objected we wanted to have.
+ *
+ * Note that the object might \e not have been written to
+ * DestFile; check for the presence of an Alt-Filename entry in
+ * Message to find the file to which it was really written.
+ *
+ * This is called before Done is called and can prevent it by returning
+ * \b false which will result in Failed being called instead.
+ *
+ * You should prefer to use this method over calling Failed() from Done()
+ * as this has e.g. the wrong progress reporting.
+ *
+ * \param Message Data from the acquire method. Use LookupTag()
+ * to parse it.
+ * \param Cnf The method via which the object was fetched.
+ *
+ * \sa pkgAcqMethod
+ */
+ virtual bool VerifyDone(std::string const &Message,
+ pkgAcquire::MethodConfig const * const Cnf);
+
+ /** \brief Invoked by the acquire worker when the object was
+ * fetched successfully.
+ *
+ * Note that the object might \e not have been written to
+ * DestFile; check for the presence of an Alt-Filename entry in
+ * Message to find the file to which it was really written.
+ *
+ * Done is often used to switch from one stage of the processing
+ * to the next (e.g. fetching, unpacking, copying). It is one
+ * branch of the continuation of the fetch process.
+ *
+ * \param Message Data from the acquire method. Use LookupTag()
+ * to parse it.
+ * \param Hashes The HashSums of the object that was fetched.
+ * \param Cnf The method via which the object was fetched.
+ *
+ * \sa pkgAcqMethod
+ */
+ virtual void Done(std::string const &Message, HashStringList const &Hashes,
+ pkgAcquire::MethodConfig const * const Cnf);
+
+ /** \brief Invoked when the worker starts to fetch this object.
+ *
+ * \param Message RFC822-formatted data from the worker process.
+ * Use LookupTag() to parse it.
+ *
+ * \param Hashes The expected hashes of the object being fetched.
+ *
+ * \sa pkgAcqMethod
+ */
+ virtual void Start(std::string const &Message, unsigned long long const Size);
+
+ /** \brief Custom headers to be sent to the fetch process.
+ *
+ * \return a string containing RFC822-style headers that are to be
+ * inserted into the 600 URI Acquire message sent to the fetch
+ * subprocess. The headers are inserted after a newline-less
+ * line, so they should (if nonempty) have a leading newline and
+ * no trailing newline.
+ */
+ virtual std::string Custom600Headers() const;
+
+ /** \brief A "descriptive" URI-like string.
+ *
+ * \return a URI that should be used to describe what is being fetched.
+ */
+ virtual std::string DescURI() const = 0;
+ /** \brief Short item description.
+ *
+ * \return a brief description of the object being fetched.
+ */
+ virtual std::string ShortDesc() const;
+
+ /** \brief Invoked by the worker when the download is completely done. */
+ virtual void Finished();
+
+ /** \return HashSums the DestFile is supposed to have in this stage */
+ virtual HashStringList GetExpectedHashes() const = 0;
+ /** \return the 'best' hash for display proposes like --print-uris */
+ std::string HashSum() const;
+
+ /** \return if having no hashes is a hard failure or not
+ *
+ * Idealy this is always \b true for every subclass, but thanks to
+ * historical grow we don't have hashes for all files in all cases
+ * in all steps, so it is slightly more complicated than it should be.
+ */
+ virtual bool HashesRequired() const { return true; }
+
+ /** \return the acquire process with which this item is associated. */
+ pkgAcquire *GetOwner() const;
+ pkgAcquire::ItemDesc &GetItemDesc();
+
+ /** \return \b true if this object is being fetched from a trusted source. */
+ virtual bool IsTrusted() const;
+
+ /** \brief Report mirror problem
+ *
+ * This allows reporting mirror failures back to a centralized
+ * server. The apt-report-mirror-failure script is called for this
+ *
+ * \param FailCode A short failure string that is send
+ */
+ APT_DEPRECATED_MSG("Item::Failed does this for you") void ReportMirrorFailure(std::string const &FailCode);
+
+ /** \brief Set the name of the current active subprocess
+ *
+ * See also #ActiveSubprocess
+ */
+ void SetActiveSubprocess(std::string const &subprocess);
+
+ /** \brief Initialize an item.
+ *
+ * Adds the item to the list of items known to the acquire
+ * process, but does not place it into any fetch queues (you must
+ * manually invoke QueueURI() to do so).
+ *
+ * \param Owner The new owner of this item.
+ */
+ explicit Item(pkgAcquire * const Owner);
+
+ /** \brief Remove this item from its owner's queue by invoking
+ * pkgAcquire::Remove.
+ */
+ virtual ~Item();
+
+ bool APT_HIDDEN IsRedirectionLoop(std::string const &NewURI);
+ /** \brief The priority of the item, used for queuing */
+ int APT_HIDDEN Priority();
+
+ protected:
+ /** \brief The acquire object with which this item is associated. */
+ pkgAcquire * const Owner;
+
+ /** \brief The item that is currently being downloaded. */
+ pkgAcquire::ItemDesc Desc;
+
+ enum RenameOnErrorState {
+ HashSumMismatch,
+ SizeMismatch,
+ InvalidFormat,
+ SignatureError,
+ NotClearsigned,
+ MaximumSizeExceeded,
+ PDiffError,
+ };
+
+ /** \brief Rename failed file and set error
+ *
+ * \param state respresenting the error we encountered
+ */
+ bool RenameOnError(RenameOnErrorState const state);
+
+ /** \brief Insert this item into its owner's queue.
+ *
+ * The method is designed to check if the request would end
+ * in an IMSHit and if it determines that it would, it isn't
+ * queueing the Item and instead sets it to completion instantly.
+ *
+ * \param Item Metadata about this item (its URI and
+ * description).
+ * \return true if the item was inserted, false if IMSHit was detected
+ */
+ virtual bool QueueURI(ItemDesc &Item);
+
+ /** \brief Remove this item from its owner's queue. */
+ void Dequeue();
+
+ /** \brief Rename a file without modifying its timestamp.
+ *
+ * Many item methods call this as their final action.
+ *
+ * \param From The file to be renamed.
+ *
+ * \param To The new name of \a From. If \a To exists it will be
+ * overwritten. If \a From and \a To are equal nothing happens.
+ */
+ bool Rename(std::string const &From, std::string const &To);
+
+ /** \brief Get the full pathname of the final file for the current URI */
+ virtual std::string GetFinalFilename() const;
+
+ private:
+ class Private;
+ Private * const d;
+
+ friend class pkgAcqMetaBase;
+ friend class pkgAcqMetaClearSig;
+};
+ /*}}}*/
+class APT_HIDDEN pkgAcqTransactionItem: public pkgAcquire::Item /*{{{*/
+/** \brief baseclass for the indexes files to manage them all together */
+{
+ void * const d;
+ protected:
+ HashStringList GetExpectedHashesFor(std::string const &MetaKey) const;
+
+ bool QueueURI(pkgAcquire::ItemDesc &Item) APT_OVERRIDE;
+
+ public:
+ IndexTarget const Target;
+
+ /** \brief storge name until a transaction is finished */
+ std::string PartialFile;
+
+ /** \brief TransactionManager */
+ pkgAcqMetaClearSig * const TransactionManager;
+
+ enum TransactionStates {
+ TransactionStarted,
+ TransactionCommit,
+ TransactionAbort,
+ };
+ virtual bool TransactionState(TransactionStates const state);
+
+ virtual std::string DescURI() const APT_OVERRIDE { return Target.URI; }
+ virtual HashStringList GetExpectedHashes() const APT_OVERRIDE;
+ virtual std::string GetMetaKey() const;
+ virtual bool HashesRequired() const APT_OVERRIDE;
+
+
+ pkgAcqTransactionItem(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager, IndexTarget const &Target) APT_NONNULL(2, 3);
+ virtual ~pkgAcqTransactionItem();
+
+ friend class pkgAcqMetaBase;
+ friend class pkgAcqMetaClearSig;
+};
+ /*}}}*/
+class APT_HIDDEN pkgAcqMetaBase : public pkgAcqTransactionItem /*{{{*/
+/** \brief the manager of a transaction */
+{
+ void * const d;
+ protected:
+ std::vector<pkgAcqTransactionItem*> Transaction;
+
+ /** \brief If \b true, the index's signature is currently being verified.
+ */
+ bool AuthPass;
+
+ /** \brief Called when a file is finished being retrieved.
+ *
+ * If the file was not downloaded to DestFile, a copy process is
+ * set up to copy it to DestFile; otherwise, Complete is set to \b
+ * true and the file is moved to its final location.
+ *
+ * \param Message The message block received from the fetch
+ * subprocess.
+ */
+ bool CheckDownloadDone(pkgAcqTransactionItem * const I, const std::string &Message, HashStringList const &Hashes) const;
+
+ /** \brief Queue the downloaded Signature for verification */
+ void QueueForSignatureVerify(pkgAcqTransactionItem * const I, std::string const &File, std::string const &Signature);
+
+ virtual std::string Custom600Headers() const APT_OVERRIDE;
+
+ /** \brief Called when authentication succeeded.
+ *
+ * Sanity-checks the authenticated file, queues up the individual
+ * index files for download, and saves the signature in the lists
+ * directory next to the authenticated list file.
+ *
+ * \param Message The message block received from the fetch
+ * subprocess.
+ */
+ bool CheckAuthDone(std::string const &Message);
+
+ /** Check if the current item should fail at this point */
+ bool CheckStopAuthentication(pkgAcquire::Item * const I, const std::string &Message);
+
+ /** \brief Check that the release file is a release file for the
+ * correct distribution.
+ *
+ * \return \b true if no fatal errors were encountered.
+ */
+ bool VerifyVendor(std::string const &Message);
+
+ virtual bool TransactionState(TransactionStates const state) APT_OVERRIDE;
+
+ public:
+ // This refers more to the Transaction-Manager than the actual file
+ bool IMSHit;
+ TransactionStates State;
+ std::string BaseURI;
+
+ virtual bool QueueURI(pkgAcquire::ItemDesc &Item) APT_OVERRIDE;
+ virtual HashStringList GetExpectedHashes() const APT_OVERRIDE;
+ virtual bool HashesRequired() const APT_OVERRIDE;
+
+ // transaction code
+ void Add(pkgAcqTransactionItem * const I);
+ void AbortTransaction();
+ bool TransactionHasError() const;
+ void CommitTransaction();
+
+ /** \brief Stage (queue) a copy action when the transaction is committed
+ */
+ void TransactionStageCopy(pkgAcqTransactionItem * const I,
+ const std::string &From,
+ const std::string &To);
+ /** \brief Stage (queue) a removal action when the transaction is committed
+ */
+ void TransactionStageRemoval(pkgAcqTransactionItem * const I, const std::string &FinalFile);
+
+ /** \brief Get the full pathname of the final file for the current URI */
+ virtual std::string GetFinalFilename() const APT_OVERRIDE;
+
+ pkgAcqMetaBase(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
+ IndexTarget const &DataTarget) APT_NONNULL(2, 3);
+ virtual ~pkgAcqMetaBase();
+};
+ /*}}}*/
+/** \brief An item that is responsible for downloading the meta-index {{{
+ * file (i.e., Release) itself and verifying its signature.
+ *
+ * Once the download and verification are complete, the downloads of
+ * the individual index files are queued up using pkgAcqDiffIndex.
+ * If the meta-index file had a valid signature, the expected hashsums
+ * of the index files will be the md5sums listed in the meta-index;
+ * otherwise, the expected hashsums will be "" (causing the
+ * authentication of the index files to be bypassed).
+ */
+class APT_HIDDEN pkgAcqMetaIndex : public pkgAcqMetaBase
+{
+ void * const d;
+ protected:
+ IndexTarget const DetachedSigTarget;
+
+ /** \brief delayed constructor */
+ void Init(std::string const &URIDesc, std::string const &ShortDesc);
+
+ public:
+ virtual std::string DescURI() const APT_OVERRIDE;
+
+ // Specialized action members
+ virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual void Done(std::string const &Message, HashStringList const &Hashes,
+ pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+
+ /** \brief Create a new pkgAcqMetaIndex. */
+ pkgAcqMetaIndex(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
+ IndexTarget const &DataTarget, IndexTarget const &DetachedSigTarget) APT_NONNULL(2, 3);
+ virtual ~pkgAcqMetaIndex();
+
+ friend class pkgAcqMetaSig;
+};
+ /*}}}*/
+/** \brief An acquire item that downloads the detached signature {{{
+ * of a meta-index (Release) file, then queues up the release
+ * file itself.
+ *
+ * \todo Why protected members?
+ *
+ * \sa pkgAcqMetaIndex
+ */
+class APT_HIDDEN pkgAcqMetaSig : public pkgAcqTransactionItem
+{
+ void * const d;
+
+ pkgAcqMetaIndex * const MetaIndex;
+
+ /** \brief The file we use to verify the MetaIndexFile with (not always set!) */
+ std::string MetaIndexFileSignature;
+
+ protected:
+
+ /** \brief Get the full pathname of the final file for the current URI */
+ virtual std::string GetFinalFilename() const APT_OVERRIDE;
+
+ public:
+ virtual bool HashesRequired() const APT_OVERRIDE { return false; }
+
+ // Specialized action members
+ virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual void Done(std::string const &Message, HashStringList const &Hashes,
+ pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual std::string Custom600Headers() const APT_OVERRIDE;
+
+ /** \brief Create a new pkgAcqMetaSig. */
+ pkgAcqMetaSig(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
+ IndexTarget const &Target, pkgAcqMetaIndex * const MetaIndex) APT_NONNULL(2, 3, 5);
+ virtual ~pkgAcqMetaSig();
+};
+ /*}}}*/
+/** \brief An item repsonsible for downloading clearsigned metaindexes {{{*/
+class APT_HIDDEN pkgAcqMetaClearSig : public pkgAcqMetaIndex
+{
+ void * const d;
+ IndexTarget const DetachedDataTarget;
+
+ public:
+ /** \brief A package-system-specific parser for the meta-index file. */
+ metaIndex *MetaIndexParser;
+ metaIndex *LastMetaIndexParser;
+
+ virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual std::string Custom600Headers() const APT_OVERRIDE;
+ virtual bool VerifyDone(std::string const &Message, pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual void Done(std::string const &Message, HashStringList const &Hashes,
+ pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual void Finished() APT_OVERRIDE;
+
+ /** \brief Starts downloading the individual index files.
+ *
+ * \param verify If \b true, only indices whose expected hashsum
+ * can be determined from the meta-index will be downloaded, and
+ * the hashsums of indices will be checked (reporting
+ * #StatAuthError if there is a mismatch). If verify is \b false,
+ * no hashsum checking will be performed.
+ */
+ void QueueIndexes(bool const verify);
+
+ /** \brief Create a new pkgAcqMetaClearSig. */
+ pkgAcqMetaClearSig(pkgAcquire * const Owner,
+ IndexTarget const &ClearsignedTarget,
+ IndexTarget const &DetachedDataTarget,
+ IndexTarget const &DetachedSigTarget,
+ metaIndex * const MetaIndexParser);
+ virtual ~pkgAcqMetaClearSig();
+};
+ /*}}}*/
+/** \brief Common base class for all classes that deal with fetching indexes {{{*/
+class APT_HIDDEN pkgAcqBaseIndex : public pkgAcqTransactionItem
+{
+ void * const d;
+
+ public:
+ /** \brief Get the full pathname of the final file for the current URI */
+ virtual std::string GetFinalFilename() const APT_OVERRIDE;
+ virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+
+ pkgAcqBaseIndex(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
+ IndexTarget const &Target) APT_NONNULL(2, 3);
+ virtual ~pkgAcqBaseIndex();
+};
+ /*}}}*/
+/** \brief An acquire item that is responsible for fetching an index {{{
+ * file (e.g., Packages or Sources).
+ *
+ * \sa pkgAcqDiffIndex, pkgAcqIndexDiffs, pkgAcqIndexTrans
+ *
+ * \todo Why does pkgAcqIndex have protected members?
+ */
+class APT_HIDDEN pkgAcqIndex : public pkgAcqBaseIndex
+{
+ void * const d;
+
+ protected:
+
+ /** \brief The stages the method goes through
+ *
+ * The method first downloads the indexfile, then its decompressed (or
+ * copied) and verified
+ */
+ enum AllStages {
+ STAGE_DOWNLOAD,
+ STAGE_DECOMPRESS_AND_VERIFY,
+ };
+ AllStages Stage;
+
+ /** \brief Handle what needs to be done when the download is done */
+ void StageDownloadDone(std::string const &Message);
+
+ /** \brief Handle what needs to be done when the decompression/copy is
+ * done
+ */
+ void StageDecompressDone();
+
+ /** \brief If \b set, this partially downloaded file will be
+ * removed when the download completes.
+ */
+ std::string EraseFileName;
+
+ /** \brief The compression-related file extensions that are being
+ * added to the downloaded file one by one if first fails (e.g., "gz bz2").
+ */
+ std::string CompressionExtensions;
+
+ /** \brief The actual compression extension currently used */
+ std::string CurrentCompressionExtension;
+
+ /** \brief Do the changes needed to fetch via AptByHash (if needed) */
+ void InitByHashIfNeeded();
+
+ /** \brief Get the full pathname of the final file for the current URI */
+ virtual std::string GetFinalFilename() const APT_OVERRIDE;
+
+ virtual bool TransactionState(TransactionStates const state) APT_OVERRIDE;
+
+ public:
+ // Specialized action members
+ virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual void Done(std::string const &Message, HashStringList const &Hashes,
+ pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual std::string Custom600Headers() const APT_OVERRIDE;
+ virtual std::string DescURI() const APT_OVERRIDE {return Desc.URI;};
+ virtual std::string GetMetaKey() const APT_OVERRIDE;
+
+ pkgAcqIndex(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
+ IndexTarget const &Target, bool const Derived = false) APT_NONNULL(2, 3);
+ virtual ~pkgAcqIndex();
+
+ protected:
+ APT_HIDDEN void Init(std::string const &URI, std::string const &URIDesc,
+ std::string const &ShortDesc);
+ APT_HIDDEN bool CommonFailed(std::string const &TargetURI, std::string const TargetDesc,
+ std::string const &Message, pkgAcquire::MethodConfig const * const Cnf);
+};
+ /*}}}*/
+/** \brief An item that is responsible for fetching an index file of {{{
+ * package list diffs and starting the package list's download.
+ *
+ * This item downloads the Index file and parses it, then enqueues
+ * additional downloads of either the individual patches (using
+ * pkgAcqIndexDiffs) or the entire Packages file (using pkgAcqIndex).
+ *
+ * \sa pkgAcqIndexDiffs, pkgAcqIndex
+ */
+class APT_HIDDEN pkgAcqDiffIndex : public pkgAcqIndex
+{
+ void * const d;
+ std::vector<pkgAcqIndexMergeDiffs*> * diffs;
+
+ protected:
+ /** \brief If \b true, debugging information will be written to std::clog. */
+ bool Debug;
+
+ /** \brief A description of the Packages file (stored in
+ * pkgAcquire::ItemDesc::Description).
+ */
+ std::string Description;
+
+ /** \brief Get the full pathname of the final file for the current URI */
+ virtual std::string GetFinalFilename() const APT_OVERRIDE;
+
+ virtual bool QueueURI(pkgAcquire::ItemDesc &Item) APT_OVERRIDE;
+
+ virtual bool TransactionState(TransactionStates const state) APT_OVERRIDE;
+ public:
+ // Specialized action members
+ virtual void Failed(std::string const &Message, pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual void Done(std::string const &Message, HashStringList const &Hashes,
+ pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual std::string DescURI() const APT_OVERRIDE {return Target.URI + "Index";};
+ virtual std::string GetMetaKey() const APT_OVERRIDE;
+
+ /** \brief Parse the Index file for a set of Packages diffs.
+ *
+ * Parses the Index file and creates additional download items as
+ * necessary.
+ *
+ * \param IndexDiffFile The name of the Index file.
+ *
+ * \return \b true if the Index file was successfully parsed, \b
+ * false otherwise.
+ */
+ bool ParseDiffIndex(std::string const &IndexDiffFile);
+
+ /** \brief Create a new pkgAcqDiffIndex.
+ *
+ * \param Owner The Acquire object that owns this item.
+ *
+ * \param URI The URI of the list file to download.
+ *
+ * \param URIDesc A long description of the list file to download.
+ *
+ * \param ShortDesc A short description of the list file to download.
+ */
+ pkgAcqDiffIndex(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
+ IndexTarget const &Target) APT_NONNULL(2, 3);
+ virtual ~pkgAcqDiffIndex();
+ private:
+ APT_HIDDEN void QueueOnIMSHit() const;
+};
+ /*}}}*/
+struct APT_HIDDEN DiffInfo { /*{{{*/
+ /** The filename of the diff. */
+ std::string file;
+
+ /** The hashes of the file after the diff is applied */
+ HashStringList result_hashes;
+
+ /** The hashes of the diff */
+ HashStringList patch_hashes;
+
+ /** The hashes of the compressed diff */
+ HashStringList download_hashes;
+};
+ /*}}}*/
+/** \brief An item that is responsible for fetching client-merge patches {{{
+ * that need to be applied to a given package index file.
+ *
+ * Instead of downloading and applying each patch one by one like its
+ * sister #pkgAcqIndexDiffs this class will download all patches at once
+ * and call rred with all the patches downloaded once. Rred will then
+ * merge and apply them in one go, which should be a lot faster – but is
+ * incompatible with server-based merges of patches like reprepro can do.
+ *
+ * \sa pkgAcqDiffIndex, pkgAcqIndex
+ */
+class APT_HIDDEN pkgAcqIndexMergeDiffs : public pkgAcqBaseIndex
+{
+ std::string const indexURI;
+
+ protected:
+
+ /** \brief If \b true, debugging output will be written to
+ * std::clog.
+ */
+ bool Debug;
+
+ /** \brief description of the file being downloaded. */
+ std::string Description;
+
+ /** \brief information about the current patch */
+ struct DiffInfo const patch;
+
+ /** \brief list of all download items for the patches */
+ std::vector<pkgAcqIndexMergeDiffs*> const * const allPatches;
+
+ /** The current status of this patch. */
+ enum DiffState
+ {
+ /** \brief The diff is currently being fetched. */
+ StateFetchDiff,
+
+ /** \brief The diff is currently being applied. */
+ StateApplyDiff,
+
+ /** \brief the work with this diff is done */
+ StateDoneDiff,
+
+ /** \brief something bad happened and fallback was triggered */
+ StateErrorDiff
+ } State;
+
+ public:
+ /** \brief Called when the patch file failed to be downloaded.
+ *
+ * This method will fall back to downloading the whole index file
+ * outright; its arguments are ignored.
+ */
+ virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual void Done(std::string const &Message, HashStringList const &Hashes,
+ pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual std::string Custom600Headers() const APT_OVERRIDE;
+ virtual std::string DescURI() const APT_OVERRIDE {return Target.URI + "Index";};
+ virtual HashStringList GetExpectedHashes() const APT_OVERRIDE;
+ virtual bool HashesRequired() const APT_OVERRIDE;
+
+ /** \brief Create an index merge-diff item.
+ *
+ * \param Owner The pkgAcquire object that owns this item.
+ * \param TransactionManager responsible for this item
+ * \param Target we intend to built via pdiff patching
+ * \param baseURI is the URI used for the Index, but stripped down to Target
+ * \param DiffInfo of the patch in question
+ * \param patch contains infos about the patch this item is supposed
+ * to download which were read from the index
+ * \param allPatches contains all related items so that each item can
+ * check if it was the last one to complete the download step
+ */
+ pkgAcqIndexMergeDiffs(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
+ IndexTarget const &Target, std::string const &indexUsedMirror,
+ std::string const &indexURI, DiffInfo const &patch,
+ std::vector<pkgAcqIndexMergeDiffs*> const * const allPatches) APT_NONNULL(2, 3, 8);
+ virtual ~pkgAcqIndexMergeDiffs();
+};
+ /*}}}*/
+/** \brief An item that is responsible for fetching server-merge patches {{{
+ * that need to be applied to a given package index file.
+ *
+ * After downloading and applying a single patch, this item will
+ * enqueue a new pkgAcqIndexDiffs to download and apply the remaining
+ * patches. If no patch can be found that applies to an intermediate
+ * file or if one of the patches cannot be downloaded, falls back to
+ * downloading the entire package index file using pkgAcqIndex.
+ *
+ * \sa pkgAcqDiffIndex, pkgAcqIndex
+ */
+class APT_HIDDEN pkgAcqIndexDiffs : public pkgAcqBaseIndex
+{
+ std::string const indexURI;
+
+ private:
+
+ /** \brief Queue up the next diff download.
+ *
+ * Search for the next available diff that applies to the file
+ * that currently exists on disk, and enqueue it by calling
+ * QueueURI().
+ *
+ * \return \b true if an applicable diff was found, \b false
+ * otherwise.
+ */
+ APT_HIDDEN bool QueueNextDiff();
+
+ /** \brief Handle tasks that must be performed after the item
+ * finishes downloading.
+ *
+ * Dequeues the item and checks the resulting file's hashsums
+ * against ExpectedHashes after the last patch was applied.
+ * There is no need to check the md5/sha1 after a "normal"
+ * patch because QueueNextDiff() will check the sha1 later.
+ *
+ * \param allDone If \b true, the file was entirely reconstructed,
+ * and its md5sum is verified.
+ */
+ APT_HIDDEN void Finish(bool const allDone=false);
+
+ protected:
+
+ /** \brief If \b true, debugging output will be written to
+ * std::clog.
+ */
+ bool Debug;
+
+ /** A description of the file being downloaded. */
+ std::string Description;
+
+ /** The patches that remain to be downloaded, including the patch
+ * being downloaded right now. This list should be ordered so
+ * that each diff appears before any diff that depends on it.
+ *
+ * \todo These are indexed by sha1sum; why not use some sort of
+ * dictionary instead of relying on ordering and stripping them
+ * off the front?
+ */
+ std::vector<DiffInfo> available_patches;
+
+ /** The current status of this patch. */
+ enum DiffState
+ {
+ /** \brief The diff is currently being fetched. */
+ StateFetchDiff,
+
+ /** \brief The diff is currently being applied. */
+ StateApplyDiff
+ } State;
+
+ public:
+
+ /** \brief Called when the patch file failed to be downloaded.
+ *
+ * This method will fall back to downloading the whole index file
+ * outright; its arguments are ignored.
+ */
+ virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+
+ virtual void Done(std::string const &Message, HashStringList const &Hashes,
+ pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual std::string Custom600Headers() const APT_OVERRIDE;
+ virtual std::string DescURI() const APT_OVERRIDE {return Target.URI + "IndexDiffs";};
+ virtual HashStringList GetExpectedHashes() const APT_OVERRIDE;
+ virtual bool HashesRequired() const APT_OVERRIDE;
+
+ /** \brief Create an index diff item.
+ *
+ * After filling in its basic fields, this invokes Finish(true) if
+ * \a diffs is empty, or QueueNextDiff() otherwise.
+ *
+ * \param Owner The pkgAcquire object that owns this item.
+ * \param TransactionManager responsible for this item
+ * \param Target we want to built via pdiff patching
+ * \param baseURI is the URI used for the Index, but stripped down to Target
+ * \param diffs The remaining diffs from the index of diffs. They
+ * should be ordered so that each diff appears before any diff
+ * that depends on it.
+ */
+ pkgAcqIndexDiffs(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
+ IndexTarget const &Target,
+ std::string const &indexUsedMirror, std::string const &indexURI,
+ std::vector<DiffInfo> const &diffs=std::vector<DiffInfo>()) APT_NONNULL(2, 3);
+ virtual ~pkgAcqIndexDiffs();
+};
+ /*}}}*/
+/** \brief An item that is responsible for fetching a package file. {{{
+ *
+ * If the package file already exists in the cache, nothing will be
+ * done.
+ */
+class pkgAcqArchive : public pkgAcquire::Item
+{
+ void * const d;
+
+ bool LocalSource;
+ HashStringList ExpectedHashes;
+
+ protected:
+ /** \brief The package version being fetched. */
+ pkgCache::VerIterator Version;
+
+ /** \brief The list of sources from which to pick archives to
+ * download this package from.
+ */
+ pkgSourceList *Sources;
+
+ /** \brief A package records object, used to look up the file
+ * corresponding to each version of the package.
+ */
+ pkgRecords *Recs;
+
+ /** \brief A location in which the actual filename of the package
+ * should be stored.
+ */
+ std::string &StoreFilename;
+
+ /** \brief The next file for this version to try to download. */
+ pkgCache::VerFileIterator Vf;
+
+ /** \brief How many (more) times to try to find a new source from
+ * which to download this package version if it fails.
+ *
+ * Set from Acquire::Retries.
+ */
+ unsigned int Retries;
+
+ /** \brief \b true if this version file is being downloaded from a
+ * trusted source.
+ */
+ bool Trusted;
+
+ /** \brief Queue up the next available file for this version. */
+ bool QueueNext();
+
+ /** \brief Get the full pathname of the final file for the current URI */
+ virtual std::string GetFinalFilename() const APT_OVERRIDE;
+
+ public:
+
+ virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual void Done(std::string const &Message, HashStringList const &Hashes,
+ pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual std::string DescURI() const APT_OVERRIDE;
+ virtual std::string ShortDesc() const APT_OVERRIDE;
+ virtual void Finished() APT_OVERRIDE;
+ virtual bool IsTrusted() const APT_OVERRIDE;
+ virtual HashStringList GetExpectedHashes() const APT_OVERRIDE;
+ virtual bool HashesRequired() const APT_OVERRIDE;
+
+ /** \brief Create a new pkgAcqArchive.
+ *
+ * \param Owner The pkgAcquire object with which this item is
+ * associated.
+ *
+ * \param Sources The sources from which to download version
+ * files.
+ *
+ * \param Recs A package records object, used to look up the file
+ * corresponding to each version of the package.
+ *
+ * \param Version The package version to download.
+ *
+ * \param[out] StoreFilename A location in which the actual filename of
+ * the package should be stored. It will be set to a guessed
+ * basename in the constructor, and filled in with a fully
+ * qualified filename once the download finishes.
+ */
+ pkgAcqArchive(pkgAcquire * const Owner,pkgSourceList * const Sources,
+ pkgRecords * const Recs,pkgCache::VerIterator const &Version,
+ std::string &StoreFilename);
+ virtual ~pkgAcqArchive();
+};
+ /*}}}*/
+/** \brief Retrieve the changelog for the given version {{{
+ *
+ * Downloads the changelog to a temporary file it will also remove again
+ * while it is deconstructed or downloads it to a named location.
+ */
+class pkgAcqChangelog : public pkgAcquire::Item
+{
+ class Private;
+ Private * const d;
+ std::string TemporaryDirectory;
+ std::string const SrcName;
+ std::string const SrcVersion;
+
+ public:
+ // we will never have hashes for changelogs.
+ // If you need verified ones, download the deb and extract the changelog.
+ virtual HashStringList GetExpectedHashes() const APT_OVERRIDE { return HashStringList(); }
+ virtual bool HashesRequired() const APT_OVERRIDE { return false; }
+
+ // Specialized action members
+ virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual void Done(std::string const &Message, HashStringList const &CalcHashes,
+ pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual std::string DescURI() const APT_OVERRIDE {return Desc.URI;};
+
+ /** returns the URI to the changelog of this version
+ *
+ * @param Ver is the version to get the changelog for
+ * @return the URI which will be used to acquire the changelog
+ */
+ static std::string URI(pkgCache::VerIterator const &Ver);
+
+ /** returns the URI to the changelog of this version
+ *
+ * \param Rls is the Release file the package comes from
+ * \param Component in which the package resides, can be empty
+ * \param SrcName is the source package name
+ * \param SrcVersion is the source package version
+ * @return the URI which will be used to acquire the changelog
+ */
+ static std::string URI(pkgCache::RlsFileIterator const &Rls,
+ char const * const Component, char const * const SrcName,
+ char const * const SrcVersion);
+
+ /** returns the URI to the changelog of this version
+ *
+ * \param Template URI where @CHANGEPATH@ has to be filled in
+ * \param Component in which the package resides, can be empty
+ * \param SrcName is the source package name
+ * \param SrcVersion is the source package version
+ * @return the URI which will be used to acquire the changelog
+ */
+ static std::string URI(std::string const &Template,
+ char const * const Component, char const * const SrcName,
+ char const * const SrcVersion);
+
+ /** returns the URI template for this release file
+ *
+ * \param Rls is a Release file
+ * @return the URI template to use for this release file
+ */
+ static std::string URITemplate(pkgCache::RlsFileIterator const &Rls);
+
+ /** \brief Create a new pkgAcqChangelog object.
+ *
+ * \param Owner The pkgAcquire object with which this object is
+ * associated.
+ * \param Ver is the version to get the changelog for
+ * \param DestDir The directory the file should be downloaded into.
+ * Will be an autocreated (and cleaned up) temporary directory if not set.
+ * \param DestFilename The filename the file should have in #DestDir
+ * Defaults to sourcepackagename.changelog if not set.
+ */
+ pkgAcqChangelog(pkgAcquire * const Owner, pkgCache::VerIterator const &Ver,
+ std::string const &DestDir="", std::string const &DestFilename="");
+
+ /** \brief Create a new pkgAcqChangelog object.
+ *
+ * \param Owner The pkgAcquire object with which this object is
+ * associated.
+ * \param Rls is the Release file the package comes from
+ * \param Component in which the package resides, can be empty
+ * \param SrcName is the source package name
+ * \param SrcVersion is the source package version
+ * \param DestDir The directory the file should be downloaded into.
+ * Will be an autocreated (and cleaned up) temporary directory if not set.
+ * \param DestFilename The filename the file should have in #DestDir
+ * Defaults to sourcepackagename.changelog if not set.
+ */
+ pkgAcqChangelog(pkgAcquire * const Owner, pkgCache::RlsFileIterator const &Rls,
+ char const * const Component, char const * const SrcName, char const * const SrcVersion,
+ std::string const &DestDir="", std::string const &DestFilename="");
+
+ /** \brief Create a new pkgAcqChangelog object.
+ *
+ * \param Owner The pkgAcquire object with which this object is
+ * associated.
+ * \param URI is to be used to get the changelog
+ * \param SrcName is the source package name
+ * \param SrcVersion is the source package version
+ * \param DestDir The directory the file should be downloaded into.
+ * Will be an autocreated (and cleaned up) temporary directory if not set.
+ * \param DestFilename The filename the file should have in #DestDir
+ * Defaults to sourcepackagename.changelog if not set.
+ */
+ pkgAcqChangelog(pkgAcquire * const Owner, std::string const &URI,
+ char const * const SrcName, char const * const SrcVersion,
+ std::string const &DestDir="", std::string const &DestFilename="");
+
+ virtual ~pkgAcqChangelog();
+
+private:
+ APT_HIDDEN void Init(std::string const &DestDir, std::string const &DestFilename);
+};
+ /*}}}*/
+/** \brief Retrieve an arbitrary file to the current directory. {{{
+ *
+ * The file is retrieved even if it is accessed via a URL type that
+ * normally is a NOP, such as "file". If the download fails, the
+ * partial file is renamed to get a ".FAILED" extension.
+ */
+class pkgAcqFile : public pkgAcquire::Item
+{
+ void * const d;
+
+ /** \brief How many times to retry the download, set from
+ * Acquire::Retries.
+ */
+ unsigned int Retries;
+
+ /** \brief Should this file be considered a index file */
+ bool IsIndexFile;
+
+ HashStringList const ExpectedHashes;
+ public:
+ virtual HashStringList GetExpectedHashes() const APT_OVERRIDE;
+ virtual bool HashesRequired() const APT_OVERRIDE;
+
+ // Specialized action members
+ virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual void Done(std::string const &Message, HashStringList const &CalcHashes,
+ pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+ virtual std::string DescURI() const APT_OVERRIDE {return Desc.URI;};
+ virtual std::string Custom600Headers() const APT_OVERRIDE;
+
+ /** \brief Create a new pkgAcqFile object.
+ *
+ * \param Owner The pkgAcquire object with which this object is
+ * associated.
+ *
+ * \param URI The URI to download.
+ *
+ * \param Hashes The hashsums of the file to download, if they are known;
+ * otherwise empty list.
+ *
+ * \param Size The size of the file to download, if it is known;
+ * otherwise 0.
+ *
+ * \param Desc A description of the file being downloaded.
+ *
+ * \param ShortDesc A brief description of the file being
+ * downloaded.
+ *
+ * \param DestDir The directory the file should be downloaded into.
+ *
+ * \param DestFilename The filename+path the file is downloaded to.
+ *
+ * \param IsIndexFile The file is considered a IndexFile and cache-control
+ * headers like "cache-control: max-age=0" are send
+ *
+ * If DestFilename is empty, download to DestDir/\<basename\> if
+ * DestDir is non-empty, $CWD/\<basename\> otherwise. If
+ * DestFilename is NOT empty, DestDir is ignored and DestFilename
+ * is the absolute name to which the file should be downloaded.
+ */
+
+ pkgAcqFile(pkgAcquire * const Owner, std::string const &URI, HashStringList const &Hashes, unsigned long long const Size,
+ std::string const &Desc, std::string const &ShortDesc,
+ std::string const &DestDir="", std::string const &DestFilename="",
+ bool const IsIndexFile=false);
+ virtual ~pkgAcqFile();
+};
+ /*}}}*/
+/** @} */
+
+#endif
diff --git a/apt-pkg/acquire-method.cc b/apt-pkg/acquire-method.cc
new file mode 100644
index 000000000..ab0908014
--- /dev/null
+++ b/apt-pkg/acquire-method.cc
@@ -0,0 +1,500 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: acquire-method.cc,v 1.27.2.1 2003/12/24 23:09:17 mdz Exp $
+/* ######################################################################
+
+ Acquire Method
+
+ This is a skeleton class that implements most of the functionality
+ of a method and some useful functions to make method implementation
+ simpler. The methods all derive this and specialize it. The most
+ complex implementation is the http method which needs to provide
+ pipelining, it runs the message engine at the same time it is
+ downloading files..
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/acquire-method.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/md5.h>
+#include <apt-pkg/sha1.h>
+#include <apt-pkg/sha2.h>
+
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <string>
+#include <vector>
+#include <iostream>
+#include <stdio.h>
+ /*}}}*/
+
+using namespace std;
+
+// AcqMethod::pkgAcqMethod - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* This constructs the initialization text */
+pkgAcqMethod::pkgAcqMethod(const char *Ver,unsigned long Flags)
+{
+ std::cout << "100 Capabilities\n"
+ << "Version: " << Ver << "\n";
+
+ if ((Flags & SingleInstance) == SingleInstance)
+ std::cout << "Single-Instance: true\n";
+
+ if ((Flags & Pipeline) == Pipeline)
+ std::cout << "Pipeline: true\n";
+
+ if ((Flags & SendConfig) == SendConfig)
+ std::cout << "Send-Config: true\n";
+
+ if ((Flags & LocalOnly) == LocalOnly)
+ std::cout <<"Local-Only: true\n";
+
+ if ((Flags & NeedsCleanup) == NeedsCleanup)
+ std::cout << "Needs-Cleanup: true\n";
+
+ if ((Flags & Removable) == Removable)
+ std::cout << "Removable: true\n";
+
+ std::cout << "\n" << std::flush;
+
+ SetNonBlock(STDIN_FILENO,true);
+
+ Queue = 0;
+ QueueBack = 0;
+}
+ /*}}}*/
+// AcqMethod::Fail - A fetch has failed /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgAcqMethod::Fail(bool Transient)
+{
+ string Err = "Undetermined Error";
+ if (_error->empty() == false)
+ {
+ Err.clear();
+ while (_error->empty() == false)
+ {
+ std::string msg;
+ if (_error->PopMessage(msg))
+ {
+ if (Err.empty() == false)
+ Err.append("\n");
+ Err.append(msg);
+ }
+ }
+ }
+ Fail(Err, Transient);
+}
+ /*}}}*/
+// AcqMethod::Fail - A fetch has failed /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgAcqMethod::Fail(string Err,bool Transient)
+{
+ // Strip out junk from the error messages
+ for (string::iterator I = Err.begin(); I != Err.end(); ++I)
+ {
+ if (*I == '\r')
+ *I = ' ';
+ if (*I == '\n')
+ *I = ' ';
+ }
+
+ if (Queue != 0)
+ {
+ std::cout << "400 URI Failure\nURI: " << Queue->Uri << "\n"
+ << "Message: " << Err;
+ if (IP.empty() == false && _config->FindB("Acquire::Failure::ShowIP", true) == true)
+ std::cout << " " << IP;
+ std::cout << "\n";
+ Dequeue();
+ }
+ else
+ std::cout << "400 URI Failure\nURI: <UNKNOWN>\nMessage: " << Err << "\n";
+
+ if(FailReason.empty() == false)
+ std::cout << "FailReason: " << FailReason << "\n";
+ if (UsedMirror.empty() == false)
+ std::cout << "UsedMirror: " << UsedMirror << "\n";
+ // Set the transient flag
+ if (Transient == true)
+ std::cout << "Transient-Failure: true\n";
+
+ std::cout << "\n" << std::flush;
+}
+ /*}}}*/
+// AcqMethod::DropPrivsOrDie - Drop privileges or die /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgAcqMethod::DropPrivsOrDie()
+{
+ if (!DropPrivileges()) {
+ Fail(false);
+ exit(112); /* call the european emergency number */
+ }
+}
+
+ /*}}}*/
+// AcqMethod::URIStart - Indicate a download is starting /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgAcqMethod::URIStart(FetchResult &Res)
+{
+ if (Queue == 0)
+ abort();
+
+ std::cout << "200 URI Start\n"
+ << "URI: " << Queue->Uri << "\n";
+ if (Res.Size != 0)
+ std::cout << "Size: " << std::to_string(Res.Size) << "\n";
+
+ if (Res.LastModified != 0)
+ std::cout << "Last-Modified: " << TimeRFC1123(Res.LastModified, true) << "\n";
+
+ if (Res.ResumePoint != 0)
+ std::cout << "Resume-Point: " << std::to_string(Res.ResumePoint) << "\n";
+
+ if (UsedMirror.empty() == false)
+ std::cout << "UsedMirror: " << UsedMirror << "\n";
+
+ std::cout << "\n" << std::flush;
+}
+ /*}}}*/
+// AcqMethod::URIDone - A URI is finished /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static void printHashStringList(HashStringList const * const list)
+{
+ for (HashStringList::const_iterator hash = list->begin(); hash != list->end(); ++hash)
+ {
+ // very old compatibility name for MD5Sum
+ if (hash->HashType() == "MD5Sum")
+ std::cout << "MD5-Hash: " << hash->HashValue() << "\n";
+ std::cout << hash->HashType() << "-Hash: " << hash->HashValue() << "\n";
+ }
+}
+void pkgAcqMethod::URIDone(FetchResult &Res, FetchResult *Alt)
+{
+ if (Queue == 0)
+ abort();
+
+ std::cout << "201 URI Done\n"
+ << "URI: " << Queue->Uri << "\n";
+
+ if (Res.Filename.empty() == false)
+ std::cout << "Filename: " << Res.Filename << "\n";
+
+ if (Res.Size != 0)
+ std::cout << "Size: " << std::to_string(Res.Size) << "\n";
+
+ if (Res.LastModified != 0)
+ std::cout << "Last-Modified: " << TimeRFC1123(Res.LastModified, true) << "\n";
+
+ printHashStringList(&Res.Hashes);
+
+ if (UsedMirror.empty() == false)
+ std::cout << "UsedMirror: " << UsedMirror << "\n";
+ if (Res.GPGVOutput.empty() == false)
+ {
+ std::cout << "GPGVOutput:\n";
+ for (vector<string>::const_iterator I = Res.GPGVOutput.begin();
+ I != Res.GPGVOutput.end(); ++I)
+ std::cout << " " << *I << "\n";
+ }
+
+ if (Res.ResumePoint != 0)
+ std::cout << "Resume-Point: " << std::to_string(Res.ResumePoint) << "\n";
+
+ if (Res.IMSHit == true)
+ std::cout << "IMS-Hit: true\n";
+
+ if (Alt != 0)
+ {
+ if (Alt->Filename.empty() == false)
+ std::cout << "Alt-Filename: " << Alt->Filename << "\n";
+
+ if (Alt->Size != 0)
+ std::cout << "Alt-Size: " << std::to_string(Alt->Size) << "\n";
+
+ if (Alt->LastModified != 0)
+ std::cout << "Alt-Last-Modified: " << TimeRFC1123(Alt->LastModified, true) << "\n";
+
+ printHashStringList(&Alt->Hashes);
+
+ if (Alt->IMSHit == true)
+ std::cout << "Alt-IMS-Hit: true\n";
+ }
+
+ std::cout << "\n" << std::flush;
+ Dequeue();
+}
+ /*}}}*/
+// AcqMethod::MediaFail - Synchronous request for new media /*{{{*/
+// ---------------------------------------------------------------------
+/* This sends a 403 Media Failure message to the APT and waits for it
+ to be ackd */
+bool pkgAcqMethod::MediaFail(string Required,string Drive)
+{
+ fprintf(stdout, "403 Media Failure\nMedia: %s\nDrive: %s\n",
+ Required.c_str(),Drive.c_str());
+ std::cout << "\n" << std::flush;
+
+ vector<string> MyMessages;
+
+ /* Here we read messages until we find a 603, each non 603 message is
+ appended to the main message list for later processing */
+ while (1)
+ {
+ if (WaitFd(STDIN_FILENO) == false)
+ return false;
+
+ if (ReadMessages(STDIN_FILENO,MyMessages) == false)
+ return false;
+
+ string Message = MyMessages.front();
+ MyMessages.erase(MyMessages.begin());
+
+ // Fetch the message number
+ char *End;
+ int Number = strtol(Message.c_str(),&End,10);
+ if (End == Message.c_str())
+ {
+ cerr << "Malformed message!" << endl;
+ exit(100);
+ }
+
+ // Change ack
+ if (Number == 603)
+ {
+ while (MyMessages.empty() == false)
+ {
+ Messages.push_back(MyMessages.front());
+ MyMessages.erase(MyMessages.begin());
+ }
+
+ return !StringToBool(LookupTag(Message,"Failed"),false);
+ }
+
+ Messages.push_back(Message);
+ }
+}
+ /*}}}*/
+// AcqMethod::Configuration - Handle the configuration message /*{{{*/
+// ---------------------------------------------------------------------
+/* This parses each configuration entry and puts it into the _config
+ Configuration class. */
+bool pkgAcqMethod::Configuration(string Message)
+{
+ ::Configuration &Cnf = *_config;
+
+ const char *I = Message.c_str();
+ const char *MsgEnd = I + Message.length();
+
+ unsigned int Length = strlen("Config-Item");
+ for (; I + Length < MsgEnd; I++)
+ {
+ // Not a config item
+ if (I[Length] != ':' || stringcasecmp(I,I+Length,"Config-Item") != 0)
+ continue;
+
+ I += Length + 1;
+
+ for (; I < MsgEnd && *I == ' '; I++);
+ const char *Equals = (const char*) memchr(I, '=', MsgEnd - I);
+ if (Equals == NULL)
+ return false;
+ const char *End = (const char*) memchr(Equals, '\n', MsgEnd - Equals);
+ if (End == NULL)
+ End = MsgEnd;
+
+ Cnf.Set(DeQuoteString(string(I,Equals-I)),
+ DeQuoteString(string(Equals+1,End-Equals-1)));
+ I = End;
+ }
+
+ return true;
+}
+ /*}}}*/
+// AcqMethod::Run - Run the message engine /*{{{*/
+// ---------------------------------------------------------------------
+/* Fetch any messages and execute them. In single mode it returns 1 if
+ there are no more available messages - any other result is a
+ fatal failure code! */
+int pkgAcqMethod::Run(bool Single)
+{
+ while (1)
+ {
+ // Block if the message queue is empty
+ if (Messages.empty() == true)
+ {
+ if (Single == false)
+ if (WaitFd(STDIN_FILENO) == false)
+ break;
+ if (ReadMessages(STDIN_FILENO,Messages) == false)
+ break;
+ }
+
+ // Single mode exits if the message queue is empty
+ if (Single == true && Messages.empty() == true)
+ return -1;
+
+ string Message = Messages.front();
+ Messages.erase(Messages.begin());
+
+ // Fetch the message number
+ char *End;
+ int Number = strtol(Message.c_str(),&End,10);
+ if (End == Message.c_str())
+ {
+ cerr << "Malformed message!" << endl;
+ return 100;
+ }
+
+ switch (Number)
+ {
+ case 601:
+ if (Configuration(Message) == false)
+ return 100;
+ break;
+
+ case 600:
+ {
+ FetchItem *Tmp = new FetchItem;
+
+ Tmp->Uri = LookupTag(Message,"URI");
+ Tmp->DestFile = LookupTag(Message,"FileName");
+ if (RFC1123StrToTime(LookupTag(Message,"Last-Modified").c_str(),Tmp->LastModified) == false)
+ Tmp->LastModified = 0;
+ Tmp->IndexFile = StringToBool(LookupTag(Message,"Index-File"),false);
+ Tmp->FailIgnore = StringToBool(LookupTag(Message,"Fail-Ignore"),false);
+ Tmp->ExpectedHashes = HashStringList();
+ for (char const * const * t = HashString::SupportedHashes(); *t != NULL; ++t)
+ {
+ std::string tag = "Expected-";
+ tag.append(*t);
+ std::string const hash = LookupTag(Message, tag.c_str());
+ if (hash.empty() == false)
+ Tmp->ExpectedHashes.push_back(HashString(*t, hash));
+ }
+ char *End;
+ if (Tmp->ExpectedHashes.FileSize() > 0)
+ Tmp->MaximumSize = Tmp->ExpectedHashes.FileSize();
+ else
+ Tmp->MaximumSize = strtoll(LookupTag(Message, "Maximum-Size", "0").c_str(), &End, 10);
+ Tmp->Next = 0;
+
+ // Append it to the list
+ FetchItem **I = &Queue;
+ for (; *I != 0; I = &(*I)->Next);
+ *I = Tmp;
+ if (QueueBack == 0)
+ QueueBack = Tmp;
+
+ // Notify that this item is to be fetched.
+ if (URIAcquire(Message, Tmp) == false)
+ Fail();
+
+ break;
+ }
+ }
+ }
+
+ Exit();
+ return 0;
+}
+ /*}}}*/
+// AcqMethod::PrintStatus - privately really send a log/status message /*{{{*/
+void pkgAcqMethod::PrintStatus(char const * const header, const char* Format,
+ va_list &args) const
+{
+ string CurrentURI = "<UNKNOWN>";
+ if (Queue != 0)
+ CurrentURI = Queue->Uri;
+ if (UsedMirror.empty() == true)
+ fprintf(stdout, "%s\nURI: %s\nMessage: ",
+ header, CurrentURI.c_str());
+ else
+ fprintf(stdout, "%s\nURI: %s\nUsedMirror: %s\nMessage: ",
+ header, CurrentURI.c_str(), UsedMirror.c_str());
+ vfprintf(stdout,Format,args);
+ std::cout << "\n\n" << std::flush;
+}
+ /*}}}*/
+// AcqMethod::Log - Send a log message /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgAcqMethod::Log(const char *Format,...)
+{
+ va_list args;
+ va_start(args,Format);
+ PrintStatus("101 Log", Format, args);
+ va_end(args);
+}
+ /*}}}*/
+// AcqMethod::Status - Send a status message /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgAcqMethod::Status(const char *Format,...)
+{
+ va_list args;
+ va_start(args,Format);
+ PrintStatus("102 Status", Format, args);
+ va_end(args);
+}
+ /*}}}*/
+// AcqMethod::Redirect - Send a redirect message /*{{{*/
+// ---------------------------------------------------------------------
+/* This method sends the redirect message and dequeues the item as
+ * the worker will enqueue again later on to the right queue */
+void pkgAcqMethod::Redirect(const string &NewURI)
+{
+ std::cout << "103 Redirect\nURI: " << Queue->Uri << "\n"
+ << "New-URI: " << NewURI << "\n"
+ << "\n" << std::flush;
+ Dequeue();
+}
+ /*}}}*/
+// AcqMethod::FetchResult::FetchResult - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgAcqMethod::FetchResult::FetchResult() : LastModified(0),
+ IMSHit(false), Size(0), ResumePoint(0), d(NULL)
+{
+}
+ /*}}}*/
+// AcqMethod::FetchResult::TakeHashes - Load hashes /*{{{*/
+// ---------------------------------------------------------------------
+/* This hides the number of hashes we are supporting from the caller.
+ It just deals with the hash class. */
+void pkgAcqMethod::FetchResult::TakeHashes(class Hashes &Hash)
+{
+ Hashes = Hash.GetHashStringList();
+}
+ /*}}}*/
+void pkgAcqMethod::Dequeue() { /*{{{*/
+ FetchItem const * const Tmp = Queue;
+ Queue = Queue->Next;
+ if (Tmp == QueueBack)
+ QueueBack = Queue;
+ delete Tmp;
+}
+ /*}}}*/
+pkgAcqMethod::~pkgAcqMethod() {}
+
+pkgAcqMethod::FetchItem::FetchItem() :
+ Next(nullptr), DestFileFd(-1), LastModified(0), IndexFile(false),
+ FailIgnore(false), MaximumSize(0), d(nullptr)
+{}
+pkgAcqMethod::FetchItem::~FetchItem() {}
+
+pkgAcqMethod::FetchResult::~FetchResult() {}
diff --git a/apt-pkg/acquire-method.h b/apt-pkg/acquire-method.h
new file mode 100644
index 000000000..cab2bda40
--- /dev/null
+++ b/apt-pkg/acquire-method.h
@@ -0,0 +1,128 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Acquire Method - Method helper class + functions
+
+ These functions are designed to be used within the method task to
+ ease communication with APT.
+
+ ##################################################################### */
+ /*}}}*/
+
+/** \addtogroup acquire
+ * @{
+ *
+ * \file acquire-method.h
+ */
+
+#ifndef PKGLIB_ACQUIRE_METHOD_H
+#define PKGLIB_ACQUIRE_METHOD_H
+
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/macros.h>
+
+#include <stdarg.h>
+#include <time.h>
+
+#include <string>
+#include <vector>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/strutl.h>
+#endif
+
+class pkgAcqMethod
+{
+ protected:
+
+ struct FetchItem
+ {
+ FetchItem *Next;
+
+ std::string Uri;
+ std::string DestFile;
+ int DestFileFd;
+ time_t LastModified;
+ bool IndexFile;
+ bool FailIgnore;
+ HashStringList ExpectedHashes;
+ // a maximum size we will download, this can be the exact filesize
+ // for when we know it or a arbitrary limit when we don't know the
+ // filesize (like a InRelease file)
+ unsigned long long MaximumSize;
+
+ FetchItem();
+ virtual ~FetchItem();
+ private:
+ void * const d;
+ };
+
+ struct FetchResult
+ {
+ HashStringList Hashes;
+ std::vector<std::string> GPGVOutput;
+ time_t LastModified;
+ bool IMSHit;
+ std::string Filename;
+ unsigned long long Size;
+ unsigned long long ResumePoint;
+
+ void TakeHashes(class Hashes &Hash);
+ FetchResult();
+ virtual ~FetchResult();
+ private:
+ void * const d;
+ };
+
+ // State
+ std::vector<std::string> Messages;
+ FetchItem *Queue;
+ FetchItem *QueueBack;
+ std::string FailReason;
+ std::string UsedMirror;
+ std::string IP;
+
+ // Handlers for messages
+ virtual bool Configuration(std::string Message);
+ virtual bool Fetch(FetchItem * /*Item*/) {return true;};
+ virtual bool URIAcquire(std::string const &/*Message*/, FetchItem *Itm) { return Fetch(Itm); };
+
+ // Outgoing messages
+ void Fail(bool Transient = false);
+ inline void Fail(const char *Why, bool Transient = false) {Fail(std::string(Why),Transient);};
+ virtual void Fail(std::string Why, bool Transient = false);
+ virtual void URIStart(FetchResult &Res);
+ virtual void URIDone(FetchResult &Res,FetchResult *Alt = 0);
+
+ bool MediaFail(std::string Required,std::string Drive);
+ virtual void Exit() {};
+
+ void PrintStatus(char const * const header, const char* Format, va_list &args) const;
+
+ public:
+ enum CnfFlags {SingleInstance = (1<<0),
+ Pipeline = (1<<1), SendConfig = (1<<2),
+ LocalOnly = (1<<3), NeedsCleanup = (1<<4),
+ Removable = (1<<5)};
+
+ void Log(const char *Format,...);
+ void Status(const char *Format,...);
+
+ void Redirect(const std::string &NewURI);
+
+ int Run(bool Single = false);
+ inline void SetFailReason(std::string Msg) {FailReason = Msg;};
+ inline void SetIP(std::string aIP) {IP = aIP;};
+
+ pkgAcqMethod(const char *Ver,unsigned long Flags = 0);
+ virtual ~pkgAcqMethod();
+ void DropPrivsOrDie();
+ private:
+ APT_HIDDEN void Dequeue();
+};
+
+/** @} */
+
+#endif
diff --git a/apt-pkg/acquire-worker.cc b/apt-pkg/acquire-worker.cc
new file mode 100644
index 000000000..c15e7ab4c
--- /dev/null
+++ b/apt-pkg/acquire-worker.cc
@@ -0,0 +1,818 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: acquire-worker.cc,v 1.34 2001/05/22 04:42:54 jgg Exp $
+/* ######################################################################
+
+ Acquire Worker
+
+ The worker process can startup either as a Configuration prober
+ or as a queue runner. As a configuration prober it only reads the
+ configuration message and
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/acquire-worker.h>
+#include <apt-pkg/acquire-item.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/hashes.h>
+
+#include <algorithm>
+#include <string>
+#include <vector>
+#include <iostream>
+
+#include <sys/stat.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <signal.h>
+#include <stdio.h>
+#include <errno.h>
+#include <sstream>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+// Worker::Worker - Constructor for Queue startup /*{{{*/
+pkgAcquire::Worker::Worker(Queue *Q, MethodConfig *Cnf, pkgAcquireStatus *log) :
+ d(NULL), OwnerQ(Q), Log(log), Config(Cnf), Access(Cnf->Access),
+ CurrentItem(nullptr), CurrentSize(0), TotalSize(0)
+{
+ Construct();
+}
+ /*}}}*/
+// Worker::Worker - Constructor for method config startup /*{{{*/
+pkgAcquire::Worker::Worker(MethodConfig *Cnf) : Worker(nullptr, Cnf, nullptr)
+{
+}
+ /*}}}*/
+// Worker::Construct - Constructor helper /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgAcquire::Worker::Construct()
+{
+ NextQueue = 0;
+ NextAcquire = 0;
+ Process = -1;
+ InFd = -1;
+ OutFd = -1;
+ OutReady = false;
+ InReady = false;
+ Debug = _config->FindB("Debug::pkgAcquire::Worker",false);
+}
+ /*}}}*/
+// Worker::~Worker - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgAcquire::Worker::~Worker()
+{
+ close(InFd);
+ close(OutFd);
+
+ if (Process > 0)
+ {
+ /* Closing of stdin is the signal to exit and die when the process
+ indicates it needs cleanup */
+ if (Config->NeedsCleanup == false)
+ kill(Process,SIGINT);
+ ExecWait(Process,Access.c_str(),true);
+ }
+}
+ /*}}}*/
+// Worker::Start - Start the worker process /*{{{*/
+// ---------------------------------------------------------------------
+/* This forks the method and inits the communication channel */
+bool pkgAcquire::Worker::Start()
+{
+ // Get the method path
+ constexpr char const * const methodsDir = "Dir::Bin::Methods";
+ std::string const confItem = std::string(methodsDir) + "::" + Access;
+ std::string Method;
+ if (_config->Exists(confItem))
+ Method = _config->FindFile(confItem.c_str());
+ else
+ Method = _config->FindDir(methodsDir) + Access;
+ if (FileExists(Method) == false)
+ {
+ if (flNotDir(Method) == "false")
+ {
+ _error->Error(_("The method '%s' is explicitly disabled via configuration."), Access.c_str());
+ if (Access == "http" || Access == "https")
+ _error->Notice(_("If you meant to use Tor remember to use %s instead of %s."), ("tor+" + Access).c_str(), Access.c_str());
+ return false;
+ }
+ _error->Error(_("The method driver %s could not be found."),Method.c_str());
+ std::string const A(Access.cbegin(), std::find(Access.cbegin(), Access.cend(), '+'));
+ std::string pkg;
+ strprintf(pkg, "apt-transport-%s", A.c_str());
+ _error->Notice(_("Is the package %s installed?"), pkg.c_str());
+ return false;
+ }
+ std::string const Calling = _config->FindDir(methodsDir) + Access;
+
+ if (Debug == true)
+ {
+ std::clog << "Starting method '" << Calling << "'";
+ if (Calling != Method)
+ std::clog << " ( via " << Method << " )";
+ std::clog << endl;
+ }
+
+ // Create the pipes
+ int Pipes[4] = {-1,-1,-1,-1};
+ if (pipe(Pipes) != 0 || pipe(Pipes+2) != 0)
+ {
+ _error->Errno("pipe","Failed to create IPC pipe to subprocess");
+ for (int I = 0; I != 4; I++)
+ close(Pipes[I]);
+ return false;
+ }
+ for (int I = 0; I != 4; I++)
+ SetCloseExec(Pipes[I],true);
+
+ // Fork off the process
+ Process = ExecFork();
+ if (Process == 0)
+ {
+ // Setup the FDs
+ dup2(Pipes[1],STDOUT_FILENO);
+ dup2(Pipes[2],STDIN_FILENO);
+ SetCloseExec(STDOUT_FILENO,false);
+ SetCloseExec(STDIN_FILENO,false);
+ SetCloseExec(STDERR_FILENO,false);
+
+ const char * const Args[] = { Calling.c_str(), nullptr };
+ execv(Method.c_str() ,const_cast<char **>(Args));
+ std::cerr << "Failed to exec method " << Calling << " ( via " << Method << ")" << endl;
+ _exit(100);
+ }
+
+ // Fix up our FDs
+ InFd = Pipes[0];
+ OutFd = Pipes[3];
+ SetNonBlock(Pipes[0],true);
+ SetNonBlock(Pipes[3],true);
+ close(Pipes[1]);
+ close(Pipes[2]);
+ OutReady = false;
+ InReady = true;
+
+ // Read the configuration data
+ if (WaitFd(InFd) == false ||
+ ReadMessages() == false)
+ return _error->Error(_("Method %s did not start correctly"),Method.c_str());
+
+ RunMessages();
+ if (OwnerQ != 0)
+ SendConfiguration();
+
+ return true;
+}
+ /*}}}*/
+// Worker::ReadMessages - Read all pending messages into the list /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgAcquire::Worker::ReadMessages()
+{
+ if (::ReadMessages(InFd,MessageQueue) == false)
+ return MethodFailure();
+ return true;
+}
+ /*}}}*/
+// Worker::RunMessage - Empty the message queue /*{{{*/
+// ---------------------------------------------------------------------
+/* This takes the messages from the message queue and runs them through
+ the parsers in order. */
+enum class APT_HIDDEN MessageType {
+ CAPABILITIES = 100,
+ LOG = 101,
+ STATUS = 102,
+ REDIRECT = 103,
+ WARNING = 104,
+ URI_START = 200,
+ URI_DONE = 201,
+ URI_FAILURE = 400,
+ GENERAL_FAILURE = 401,
+ MEDIA_CHANGE = 403
+};
+static bool isDoomedItem(pkgAcquire::Item const * const Itm)
+{
+ auto const TransItm = dynamic_cast<pkgAcqTransactionItem const * const>(Itm);
+ if (TransItm == nullptr)
+ return false;
+ return TransItm->TransactionManager->State != pkgAcqTransactionItem::TransactionStarted;
+}
+bool pkgAcquire::Worker::RunMessages()
+{
+ while (MessageQueue.empty() == false)
+ {
+ string Message = MessageQueue.front();
+ MessageQueue.erase(MessageQueue.begin());
+
+ if (Debug == true)
+ clog << " <- " << Access << ':' << QuoteString(Message,"\n") << endl;
+
+ // Fetch the message number
+ char *End;
+ MessageType const Number = static_cast<MessageType>(strtoul(Message.c_str(),&End,10));
+ if (End == Message.c_str())
+ return _error->Error("Invalid message from method %s: %s",Access.c_str(),Message.c_str());
+
+ string URI = LookupTag(Message,"URI");
+ pkgAcquire::Queue::QItem *Itm = NULL;
+ if (URI.empty() == false)
+ Itm = OwnerQ->FindItem(URI,this);
+
+ if (Itm != NULL)
+ {
+ // update used mirror
+ string UsedMirror = LookupTag(Message,"UsedMirror", "");
+ if (UsedMirror.empty() == false)
+ {
+ for (pkgAcquire::Queue::QItem::owner_iterator O = Itm->Owners.begin(); O != Itm->Owners.end(); ++O)
+ (*O)->UsedMirror = UsedMirror;
+
+ if (Itm->Description.find(" ") != string::npos)
+ Itm->Description.replace(0, Itm->Description.find(" "), UsedMirror);
+ }
+ }
+
+ // Determine the message number and dispatch
+ switch (Number)
+ {
+ case MessageType::CAPABILITIES:
+ if (Capabilities(Message) == false)
+ return _error->Error("Unable to process Capabilities message from %s",Access.c_str());
+ break;
+
+ case MessageType::LOG:
+ if (Debug == true)
+ clog << " <- (log) " << LookupTag(Message,"Message") << endl;
+ break;
+
+ case MessageType::STATUS:
+ Status = LookupTag(Message,"Message");
+ break;
+
+ case MessageType::REDIRECT:
+ {
+ if (Itm == nullptr)
+ {
+ _error->Error("Method gave invalid 103 Redirect message");
+ break;
+ }
+
+ std::string const NewURI = LookupTag(Message,"New-URI",URI.c_str());
+ Itm->URI = NewURI;
+
+ ItemDone();
+
+ // Change the status so that it can be dequeued
+ for (auto const &O: Itm->Owners)
+ O->Status = pkgAcquire::Item::StatIdle;
+ // Mark the item as done (taking care of all queues)
+ // and then put it in the main queue again
+ std::vector<Item*> const ItmOwners = Itm->Owners;
+ OwnerQ->ItemDone(Itm);
+ Itm = nullptr;
+ for (auto const &Owner: ItmOwners)
+ {
+ pkgAcquire::ItemDesc &desc = Owner->GetItemDesc();
+ if (Owner->IsRedirectionLoop(NewURI))
+ {
+ std::string msg = Message;
+ msg.append("\nFailReason: RedirectionLoop");
+ Owner->Failed(msg, Config);
+ if (Log != nullptr)
+ Log->Fail(Owner->GetItemDesc());
+ continue;
+ }
+
+ if (Log != nullptr)
+ Log->Done(desc);
+
+ // if we change site, treat it as a mirror change
+ if (URI::SiteOnly(NewURI) != URI::SiteOnly(desc.URI))
+ {
+ auto const firstSpace = desc.Description.find(" ");
+ if (firstSpace != std::string::npos)
+ {
+ std::string const OldSite = desc.Description.substr(0, firstSpace);
+ if (likely(APT::String::Startswith(desc.URI, OldSite)))
+ {
+ std::string const OldExtra = desc.URI.substr(OldSite.length() + 1);
+ if (likely(APT::String::Endswith(NewURI, OldExtra)))
+ {
+ std::string const NewSite = NewURI.substr(0, NewURI.length() - OldExtra.length());
+ Owner->UsedMirror = URI::ArchiveOnly(NewSite);
+ desc.Description.replace(0, firstSpace, Owner->UsedMirror);
+ }
+ }
+ }
+ }
+ desc.URI = NewURI;
+ if (isDoomedItem(Owner) == false)
+ OwnerQ->Owner->Enqueue(desc);
+ }
+ break;
+ }
+
+ case MessageType::WARNING:
+ _error->Warning("%s: %s", Itm->Owner->DescURI().c_str(), LookupTag(Message,"Message").c_str());
+ break;
+
+ case MessageType::URI_START:
+ {
+ if (Itm == nullptr)
+ {
+ _error->Error("Method gave invalid 200 URI Start message");
+ break;
+ }
+
+ CurrentItem = Itm;
+ CurrentSize = 0;
+ TotalSize = strtoull(LookupTag(Message,"Size","0").c_str(), NULL, 10);
+ ResumePoint = strtoull(LookupTag(Message,"Resume-Point","0").c_str(), NULL, 10);
+ for (auto const Owner: Itm->Owners)
+ {
+ Owner->Start(Message, TotalSize);
+ // Display update before completion
+ if (Log != nullptr)
+ {
+ if (Log->MorePulses == true)
+ Log->Pulse(Owner->GetOwner());
+ Log->Fetch(Owner->GetItemDesc());
+ }
+ }
+
+ break;
+ }
+
+ case MessageType::URI_DONE:
+ {
+ if (Itm == nullptr)
+ {
+ _error->Error("Method gave invalid 201 URI Done message");
+ break;
+ }
+
+ PrepareFiles("201::URIDone", Itm);
+
+ // Display update before completion
+ if (Log != 0 && Log->MorePulses == true)
+ for (pkgAcquire::Queue::QItem::owner_iterator O = Itm->Owners.begin(); O != Itm->Owners.end(); ++O)
+ Log->Pulse((*O)->GetOwner());
+
+ HashStringList ReceivedHashes;
+ {
+ std::string const givenfilename = LookupTag(Message, "Filename");
+ std::string const filename = givenfilename.empty() ? Itm->Owner->DestFile : givenfilename;
+ // see if we got hashes to verify
+ for (char const * const * type = HashString::SupportedHashes(); *type != NULL; ++type)
+ {
+ std::string const tagname = std::string(*type) + "-Hash";
+ std::string const hashsum = LookupTag(Message, tagname.c_str());
+ if (hashsum.empty() == false)
+ ReceivedHashes.push_back(HashString(*type, hashsum));
+ }
+ // not all methods always sent Hashes our way
+ if (ReceivedHashes.usable() == false)
+ {
+ HashStringList const ExpectedHashes = Itm->GetExpectedHashes();
+ if (ExpectedHashes.usable() == true && RealFileExists(filename))
+ {
+ Hashes calc(ExpectedHashes);
+ FileFd file(filename, FileFd::ReadOnly, FileFd::None);
+ calc.AddFD(file);
+ ReceivedHashes = calc.GetHashStringList();
+ }
+ }
+
+ // only local files can refer other filenames and counting them as fetched would be unfair
+ if (Log != NULL && Itm->Owner->Complete == false && Itm->Owner->Local == false && givenfilename == filename)
+ Log->Fetched(ReceivedHashes.FileSize(),atoi(LookupTag(Message,"Resume-Point","0").c_str()));
+ }
+
+ std::vector<Item*> const ItmOwners = Itm->Owners;
+ OwnerQ->ItemDone(Itm);
+ Itm = NULL;
+
+ bool const isIMSHit = StringToBool(LookupTag(Message,"IMS-Hit"),false) ||
+ StringToBool(LookupTag(Message,"Alt-IMS-Hit"),false);
+ auto const forcedHash = _config->Find("Acquire::ForceHash");
+ for (auto const Owner: ItmOwners)
+ {
+ HashStringList const ExpectedHashes = Owner->GetExpectedHashes();
+ if(_config->FindB("Debug::pkgAcquire::Auth", false) == true)
+ {
+ std::clog << "201 URI Done: " << Owner->DescURI() << endl
+ << "ReceivedHash:" << endl;
+ for (HashStringList::const_iterator hs = ReceivedHashes.begin(); hs != ReceivedHashes.end(); ++hs)
+ std::clog << "\t- " << hs->toStr() << std::endl;
+ std::clog << "ExpectedHash:" << endl;
+ for (HashStringList::const_iterator hs = ExpectedHashes.begin(); hs != ExpectedHashes.end(); ++hs)
+ std::clog << "\t- " << hs->toStr() << std::endl;
+ std::clog << endl;
+ }
+
+ // decide if what we got is what we expected
+ bool consideredOkay = false;
+ if ((forcedHash.empty() && ExpectedHashes.empty() == false) ||
+ (forcedHash.empty() == false && ExpectedHashes.usable()))
+ {
+ if (ReceivedHashes.empty())
+ {
+ /* IMS-Hits can't be checked here as we will have uncompressed file,
+ but the hashes for the compressed file. What we have was good through
+ so all we have to ensure later is that we are not stalled. */
+ consideredOkay = isIMSHit;
+ }
+ else if (ReceivedHashes == ExpectedHashes)
+ consideredOkay = true;
+ else
+ consideredOkay = false;
+
+ }
+ else
+ consideredOkay = !Owner->HashesRequired();
+
+ if (consideredOkay == true)
+ consideredOkay = Owner->VerifyDone(Message, Config);
+ else // hashsum mismatch
+ Owner->Status = pkgAcquire::Item::StatAuthError;
+
+
+ if (consideredOkay == true)
+ {
+ if (isDoomedItem(Owner) == false)
+ Owner->Done(Message, ReceivedHashes, Config);
+ if (Log != nullptr)
+ {
+ if (isIMSHit)
+ Log->IMSHit(Owner->GetItemDesc());
+ else
+ Log->Done(Owner->GetItemDesc());
+ }
+ }
+ else
+ {
+ auto SavedDesc = Owner->GetItemDesc();
+ if (isDoomedItem(Owner) == false)
+ {
+ if (Message.find("\nFailReason:") == std::string::npos)
+ {
+ if (ReceivedHashes != ExpectedHashes)
+ Message.append("\nFailReason: HashSumMismatch");
+ else
+ Message.append("\nFailReason: WeakHashSums");
+ }
+ Owner->Failed(Message,Config);
+ }
+ if (Log != nullptr)
+ Log->Fail(SavedDesc);
+ }
+ }
+ ItemDone();
+ break;
+ }
+
+ case MessageType::URI_FAILURE:
+ {
+ if (Itm == nullptr)
+ {
+ std::string const msg = LookupTag(Message,"Message");
+ _error->Error("Method gave invalid 400 URI Failure message: %s", msg.c_str());
+ break;
+ }
+
+ PrepareFiles("400::URIFailure", Itm);
+
+ // Display update before completion
+ if (Log != nullptr && Log->MorePulses == true)
+ for (pkgAcquire::Queue::QItem::owner_iterator O = Itm->Owners.begin(); O != Itm->Owners.end(); ++O)
+ Log->Pulse((*O)->GetOwner());
+
+ std::vector<Item*> const ItmOwners = Itm->Owners;
+ OwnerQ->ItemDone(Itm);
+ Itm = nullptr;
+
+ bool errTransient = false, errAuthErr = false;
+ {
+ std::string const failReason = LookupTag(Message, "FailReason");
+ {
+ auto const reasons = { "Timeout", "ConnectionRefused",
+ "ConnectionTimedOut", "ResolveFailure", "TmpResolveFailure" };
+ errTransient = std::find(std::begin(reasons), std::end(reasons), failReason) != std::end(reasons);
+ }
+ if (errTransient == false)
+ {
+ auto const reasons = { "HashSumMismatch", "WeakHashSums", "MaximumSizeExceeded" };
+ errAuthErr = std::find(std::begin(reasons), std::end(reasons), failReason) != std::end(reasons);
+ }
+ }
+
+ for (auto const Owner: ItmOwners)
+ {
+ if (errAuthErr && Owner->GetExpectedHashes().empty() == false)
+ Owner->Status = pkgAcquire::Item::StatAuthError;
+ else if (errTransient)
+ Owner->Status = pkgAcquire::Item::StatTransientNetworkError;
+ auto SavedDesc = Owner->GetItemDesc();
+ if (isDoomedItem(Owner) == false)
+ Owner->Failed(Message,Config);
+ if (Log != nullptr)
+ Log->Fail(SavedDesc);
+ }
+ ItemDone();
+
+ break;
+ }
+
+ case MessageType::GENERAL_FAILURE:
+ _error->Error("Method %s General failure: %s",Access.c_str(),LookupTag(Message,"Message").c_str());
+ break;
+
+ case MessageType::MEDIA_CHANGE:
+ MediaChange(Message);
+ break;
+ }
+ }
+ return true;
+}
+ /*}}}*/
+// Worker::Capabilities - 100 Capabilities handler /*{{{*/
+// ---------------------------------------------------------------------
+/* This parses the capabilities message and dumps it into the configuration
+ structure. */
+bool pkgAcquire::Worker::Capabilities(string Message)
+{
+ if (Config == 0)
+ return true;
+
+ Config->Version = LookupTag(Message,"Version");
+ Config->SingleInstance = StringToBool(LookupTag(Message,"Single-Instance"),false);
+ Config->Pipeline = StringToBool(LookupTag(Message,"Pipeline"),false);
+ Config->SendConfig = StringToBool(LookupTag(Message,"Send-Config"),false);
+ Config->LocalOnly = StringToBool(LookupTag(Message,"Local-Only"),false);
+ Config->NeedsCleanup = StringToBool(LookupTag(Message,"Needs-Cleanup"),false);
+ Config->Removable = StringToBool(LookupTag(Message,"Removable"),false);
+
+ // Some debug text
+ if (Debug == true)
+ {
+ clog << "Configured access method " << Config->Access << endl;
+ clog << "Version:" << Config->Version <<
+ " SingleInstance:" << Config->SingleInstance <<
+ " Pipeline:" << Config->Pipeline <<
+ " SendConfig:" << Config->SendConfig <<
+ " LocalOnly: " << Config->LocalOnly <<
+ " NeedsCleanup: " << Config->NeedsCleanup <<
+ " Removable: " << Config->Removable << endl;
+ }
+
+ return true;
+}
+ /*}}}*/
+// Worker::MediaChange - Request a media change /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgAcquire::Worker::MediaChange(string Message)
+{
+ int status_fd = _config->FindI("APT::Status-Fd",-1);
+ if(status_fd > 0)
+ {
+ string Media = LookupTag(Message,"Media");
+ string Drive = LookupTag(Message,"Drive");
+ ostringstream msg,status;
+ ioprintf(msg,_("Please insert the disc labeled: "
+ "'%s' "
+ "in the drive '%s' and press [Enter]."),
+ Media.c_str(),Drive.c_str());
+ status << "media-change: " // message
+ << Media << ":" // media
+ << Drive << ":" // drive
+ << msg.str() // l10n message
+ << endl;
+
+ std::string const dlstatus = status.str();
+ FileFd::Write(status_fd, dlstatus.c_str(), dlstatus.size());
+ }
+
+ if (Log == 0 || Log->MediaChange(LookupTag(Message,"Media"),
+ LookupTag(Message,"Drive")) == false)
+ {
+ char S[300];
+ snprintf(S,sizeof(S),"603 Media Changed\nFailed: true\n\n");
+ if (Debug == true)
+ clog << " -> " << Access << ':' << QuoteString(S,"\n") << endl;
+ OutQueue += S;
+ OutReady = true;
+ return true;
+ }
+
+ char S[300];
+ snprintf(S,sizeof(S),"603 Media Changed\n\n");
+ if (Debug == true)
+ clog << " -> " << Access << ':' << QuoteString(S,"\n") << endl;
+ OutQueue += S;
+ OutReady = true;
+ return true;
+}
+ /*}}}*/
+// Worker::SendConfiguration - Send the config to the method /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgAcquire::Worker::SendConfiguration()
+{
+ if (Config->SendConfig == false)
+ return true;
+
+ if (OutFd == -1)
+ return false;
+
+ /* Write out all of the configuration directives by walking the
+ configuration tree */
+ std::ostringstream Message;
+ Message << "601 Configuration\n";
+ _config->Dump(Message, NULL, "Config-Item: %F=%V\n", false);
+ Message << '\n';
+
+ if (Debug == true)
+ clog << " -> " << Access << ':' << QuoteString(Message.str(),"\n") << endl;
+ OutQueue += Message.str();
+ OutReady = true;
+
+ return true;
+}
+ /*}}}*/
+// Worker::QueueItem - Add an item to the outbound queue /*{{{*/
+// ---------------------------------------------------------------------
+/* Send a URI Acquire message to the method */
+bool pkgAcquire::Worker::QueueItem(pkgAcquire::Queue::QItem *Item)
+{
+ if (OutFd == -1)
+ return false;
+
+ if (isDoomedItem(Item->Owner))
+ return true;
+
+ Item->SyncDestinationFiles();
+
+ string Message = "600 URI Acquire\n";
+ Message.reserve(300);
+ Message += "URI: " + Item->URI;
+ Message += "\nFilename: " + Item->Owner->DestFile;
+
+ HashStringList const hsl = Item->GetExpectedHashes();
+ for (HashStringList::const_iterator hs = hsl.begin(); hs != hsl.end(); ++hs)
+ Message += "\nExpected-" + hs->HashType() + ": " + hs->HashValue();
+
+ Message += Item->Custom600Headers();
+
+ if (hsl.FileSize() == 0 && Message.find("\nMaximum-Size: ") == std::string::npos)
+ {
+ unsigned long long FileSize = Item->GetMaximumSize();
+ if(FileSize > 0)
+ {
+ string MaximumSize;
+ strprintf(MaximumSize, "%llu", FileSize);
+ Message += "\nMaximum-Size: " + MaximumSize;
+ }
+ }
+
+ Message += "\n\n";
+
+ if (RealFileExists(Item->Owner->DestFile))
+ {
+ std::string const SandboxUser = _config->Find("APT::Sandbox::User");
+ ChangeOwnerAndPermissionOfFile("Item::QueueURI", Item->Owner->DestFile.c_str(),
+ SandboxUser.c_str(), ROOT_GROUP, 0600);
+ }
+
+ if (Debug == true)
+ clog << " -> " << Access << ':' << QuoteString(Message,"\n") << endl;
+ OutQueue += Message;
+ OutReady = true;
+
+ return true;
+}
+ /*}}}*/
+// Worker::OutFdRead - Out bound FD is ready /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgAcquire::Worker::OutFdReady()
+{
+ int Res;
+ do
+ {
+ Res = write(OutFd,OutQueue.c_str(),OutQueue.length());
+ }
+ while (Res < 0 && errno == EINTR);
+
+ if (Res <= 0)
+ return MethodFailure();
+
+ OutQueue.erase(0,Res);
+ if (OutQueue.empty() == true)
+ OutReady = false;
+
+ return true;
+}
+ /*}}}*/
+// Worker::InFdRead - In bound FD is ready /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgAcquire::Worker::InFdReady()
+{
+ if (ReadMessages() == false)
+ return false;
+ RunMessages();
+ return true;
+}
+ /*}}}*/
+// Worker::MethodFailure - Called when the method fails /*{{{*/
+// ---------------------------------------------------------------------
+/* This is called when the method is believed to have failed, probably because
+ read returned -1. */
+bool pkgAcquire::Worker::MethodFailure()
+{
+ _error->Error("Method %s has died unexpectedly!",Access.c_str());
+
+ // do not reap the child here to show meaningfull error to the user
+ ExecWait(Process,Access.c_str(),false);
+ Process = -1;
+ close(InFd);
+ close(OutFd);
+ InFd = -1;
+ OutFd = -1;
+ OutReady = false;
+ InReady = false;
+ OutQueue = string();
+ MessageQueue.erase(MessageQueue.begin(),MessageQueue.end());
+
+ return false;
+}
+ /*}}}*/
+// Worker::Pulse - Called periodically /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgAcquire::Worker::Pulse()
+{
+ if (CurrentItem == 0)
+ return;
+
+ struct stat Buf;
+ if (stat(CurrentItem->Owner->DestFile.c_str(),&Buf) != 0)
+ return;
+ CurrentSize = Buf.st_size;
+}
+ /*}}}*/
+// Worker::ItemDone - Called when the current item is finished /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgAcquire::Worker::ItemDone()
+{
+ CurrentItem = 0;
+ CurrentSize = 0;
+ TotalSize = 0;
+ Status = string();
+}
+ /*}}}*/
+void pkgAcquire::Worker::PrepareFiles(char const * const caller, pkgAcquire::Queue::QItem const * const Itm)/*{{{*/
+{
+ if (RealFileExists(Itm->Owner->DestFile))
+ {
+ ChangeOwnerAndPermissionOfFile(caller, Itm->Owner->DestFile.c_str(), "root", ROOT_GROUP, 0644);
+ std::string const filename = Itm->Owner->DestFile;
+ for (pkgAcquire::Queue::QItem::owner_iterator O = Itm->Owners.begin(); O != Itm->Owners.end(); ++O)
+ {
+ pkgAcquire::Item const * const Owner = *O;
+ if (Owner->DestFile == filename || filename == "/dev/null")
+ continue;
+ RemoveFile("PrepareFiles", Owner->DestFile);
+ if (link(filename.c_str(), Owner->DestFile.c_str()) != 0)
+ {
+ // different mounts can't happen for us as we download to lists/ by default,
+ // but if the system is reused by others the locations can potentially be on
+ // different disks, so use symlink as poor-men replacement.
+ // FIXME: Real copying as last fallback, but that is costly, so offload to a method preferable
+ if (symlink(filename.c_str(), Owner->DestFile.c_str()) != 0)
+ _error->Error("Can't create (sym)link of file %s to %s", filename.c_str(), Owner->DestFile.c_str());
+ }
+ }
+ }
+ else
+ {
+ for (pkgAcquire::Queue::QItem::owner_iterator O = Itm->Owners.begin(); O != Itm->Owners.end(); ++O)
+ RemoveFile("PrepareFiles", (*O)->DestFile);
+ }
+}
+ /*}}}*/
diff --git a/apt-pkg/acquire-worker.h b/apt-pkg/acquire-worker.h
new file mode 100644
index 000000000..42762abe0
--- /dev/null
+++ b/apt-pkg/acquire-worker.h
@@ -0,0 +1,335 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Acquire Worker - Worker process manager
+
+ Each worker class is associated with exaclty one subprocess.
+
+ ##################################################################### */
+ /*}}}*/
+
+/** \addtogroup acquire
+ * @{
+ *
+ * \file acquire-worker.h
+ */
+
+#ifndef PKGLIB_ACQUIRE_WORKER_H
+#define PKGLIB_ACQUIRE_WORKER_H
+
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/weakptr.h>
+
+#include <sys/types.h>
+#include <string>
+#include <vector>
+
+/** \brief A fetch subprocess.
+ *
+ * A worker process is responsible for one stage of the fetch. This
+ * class encapsulates the communications protocol between the master
+ * process and the worker, from the master end.
+ *
+ * Each worker is intrinsically placed on two linked lists. The
+ * Queue list (maintained in the #NextQueue variable) is maintained
+ * by the pkgAcquire::Queue class; it represents the set of workers
+ * assigned to a particular queue. The Acquire list (maintained in
+ * the #NextAcquire variable) is maintained by the pkgAcquire class;
+ * it represents the set of active workers for a particular
+ * pkgAcquire object.
+ *
+ * \todo Like everything else in the Acquire system, this has way too
+ * many protected items.
+ *
+ * \sa pkgAcqMethod, pkgAcquire::Item, pkgAcquire
+ */
+class pkgAcquire::Worker : public WeakPointable
+{
+ /** \brief dpointer placeholder (for later in case we need it) */
+ void * const d;
+
+ friend class pkgAcquire;
+
+ protected:
+ friend class Queue;
+
+ /** \brief The next link on the Queue list.
+ *
+ * \todo This is always NULL; is it just for future use?
+ */
+ Worker *NextQueue;
+
+ /** \brief The next link on the Acquire list. */
+ Worker *NextAcquire;
+
+ /** \brief The Queue with which this worker is associated. */
+ Queue *OwnerQ;
+
+ /** \brief The download progress indicator to which progress
+ * messages should be sent.
+ */
+ pkgAcquireStatus *Log;
+
+ /** \brief The configuration of this method. On startup, the
+ * target of this pointer is filled in with basic data about the
+ * method, as reported by the worker.
+ */
+ MethodConfig *Config;
+
+ /** \brief The access method to be used by this worker.
+ *
+ * \todo Doesn't this duplicate Config->Access?
+ */
+ std::string Access;
+
+ /** \brief The PID of the subprocess. */
+ pid_t Process;
+
+ /** \brief A file descriptor connected to the standard output of
+ * the subprocess.
+ *
+ * Used to read messages and data from the subprocess.
+ */
+ int InFd;
+
+ /** \brief A file descriptor connected to the standard input of the
+ * subprocess.
+ *
+ * Used to send commands and configuration data to the subprocess.
+ */
+ int OutFd;
+
+ /** \brief The socket to send SCM_RIGHTS message through
+ */
+ int PrivSepSocketFd;
+ int PrivSepSocketFdChild;
+
+ /** \brief Set to \b true if the worker is in a state in which it
+ * might generate data or command responses.
+ *
+ * \todo Is this right? It's a guess.
+ */
+ bool InReady;
+
+ /** \brief Set to \b true if the worker is in a state in which it
+ * is legal to send commands to it.
+ *
+ * \todo Is this right?
+ */
+ bool OutReady;
+
+ /** If \b true, debugging output will be sent to std::clog. */
+ bool Debug;
+
+ /** \brief The raw text values of messages received from the
+ * worker, in sequence.
+ */
+ std::vector<std::string> MessageQueue;
+
+ /** \brief Buffers pending writes to the subprocess.
+ *
+ * \todo Wouldn't a std::dequeue be more appropriate?
+ */
+ std::string OutQueue;
+
+ /** \brief Common code for the constructor.
+ *
+ * Initializes NextQueue and NextAcquire to NULL; Process, InFd,
+ * and OutFd to -1, OutReady and InReady to \b false, and Debug
+ * from _config.
+ */
+ void Construct();
+
+ /** \brief Retrieve any available messages from the subprocess.
+ *
+ * The messages are retrieved as in \link strutl.h ReadMessages()\endlink, and
+ * #MethodFailure() is invoked if an error occurs; in particular,
+ * if the pipe to the subprocess dies unexpectedly while a message
+ * is being read.
+ *
+ * \return \b true if the messages were successfully read, \b
+ * false otherwise.
+ */
+ bool ReadMessages();
+
+ /** \brief Parse and dispatch pending messages.
+ *
+ * This dispatches the message in a manner appropriate for its
+ * type.
+ *
+ * \todo Several message types lack separate handlers.
+ *
+ * \sa Capabilities(), SendConfiguration(), MediaChange()
+ */
+ bool RunMessages();
+
+ /** \brief Read and dispatch any pending messages from the
+ * subprocess.
+ *
+ * \return \b false if the subprocess died unexpectedly while a
+ * message was being transmitted.
+ */
+ bool InFdReady();
+
+ /** \brief Send any pending commands to the subprocess.
+ *
+ * This method will fail if there is no pending output.
+ *
+ * \return \b true if all commands were succeeded, \b false if an
+ * error occurred (in which case MethodFailure() will be invoked).
+ */
+ bool OutFdReady();
+
+ /** \brief Handle a 100 Capabilities response from the subprocess.
+ *
+ * \param Message the raw text of the message from the subprocess.
+ *
+ * The message will be parsed and its contents used to fill
+ * #Config. If #Config is NULL, this routine is a NOP.
+ *
+ * \return \b true.
+ */
+ bool Capabilities(std::string Message);
+
+ /** \brief Send a 601 Configuration message (containing the APT
+ * configuration) to the subprocess.
+ *
+ * The APT configuration will be send to the subprocess in a
+ * message of the following form:
+ *
+ * <pre>
+ * 601 Configuration
+ * Config-Item: Fully-Qualified-Item=Val
+ * Config-Item: Fully-Qualified-Item=Val
+ * ...
+ * </pre>
+ *
+ * \return \b true if the command was successfully sent, \b false
+ * otherwise.
+ */
+ bool SendConfiguration();
+
+ /** \brief Handle a 403 Media Change message.
+ *
+ * \param Message the raw text of the message; the Media field
+ * indicates what type of media should be changed, and the Drive
+ * field indicates where the media is located.
+ *
+ * Invokes pkgAcquireStatus::MediaChange(Media, Drive) to ask the
+ * user to swap disks; informs the subprocess of the result (via
+ * 603 Media Changed, with the Failed field set to \b true if the
+ * user cancelled the media change).
+ */
+ bool MediaChange(std::string Message);
+
+ /** \brief Invoked when the worked process dies unexpectedly.
+ *
+ * Waits for the subprocess to terminate and generates an error if
+ * it terminated abnormally, then closes and blanks out all file
+ * descriptors. Discards all pending messages from the
+ * subprocess.
+ *
+ * \return \b false.
+ */
+ bool MethodFailure();
+
+ /** \brief Invoked when a fetch job is completed, either
+ * successfully or unsuccessfully.
+ *
+ * Resets the status information for the worker process.
+ */
+ void ItemDone();
+
+ public:
+
+ /** \brief The queue entry that is currently being downloaded. */
+ pkgAcquire::Queue::QItem *CurrentItem;
+
+ /** \brief The most recent status string received from the
+ * subprocess.
+ */
+ std::string Status;
+
+ /** \brief How many bytes of the file have been downloaded. Zero
+ * if the current progress of the file cannot be determined.
+ */
+ unsigned long long CurrentSize;
+
+ /** \brief The total number of bytes to be downloaded. Zero if the
+ * total size of the final is unknown.
+ */
+ unsigned long long TotalSize;
+
+ /** \brief How much of the file was already downloaded prior to
+ * starting this worker.
+ */
+ unsigned long long ResumePoint;
+
+ /** \brief Tell the subprocess to download the given item.
+ *
+ * \param Item the item to queue up.
+ * \return \b true if the item was successfully enqueued.
+ *
+ * Queues up a 600 URI Acquire message for the given item to be
+ * sent at the next possible moment. Does \e not flush the output
+ * queue.
+ */
+ bool QueueItem(pkgAcquire::Queue::QItem *Item);
+
+ /** \brief Start up the worker and fill in #Config.
+ *
+ * Reads the first message from the worker, which is assumed to be
+ * a 100 Capabilities message.
+ *
+ * \return \b true if all operations completed successfully.
+ */
+ bool Start();
+
+ /** \brief Update the worker statistics (CurrentSize, TotalSize,
+ * etc).
+ */
+ void Pulse();
+
+ /** \return The fetch method configuration. */
+ inline const MethodConfig *GetConf() const {return Config;};
+
+ /** \brief Create a new Worker to download files.
+ *
+ * \param OwnerQ The queue into which this worker should be
+ * placed.
+ *
+ * \param Config A location in which to store information about
+ * the fetch method.
+ *
+ * \param Log The download progress indicator that should be used
+ * to report the progress of this worker.
+ */
+ Worker(Queue *OwnerQ,MethodConfig *Config,pkgAcquireStatus *Log);
+
+ /** \brief Create a new Worker that should just retrieve
+ * information about the fetch method.
+ *
+ * Nothing in particular forces you to refrain from actually
+ * downloading stuff, but the various status callbacks won't be
+ * invoked.
+ *
+ * \param Config A location in which to store information about
+ * the fetch method.
+ */
+ explicit Worker(MethodConfig *Config);
+
+ /** \brief Clean up this worker.
+ *
+ * Closes the file descriptors; if MethodConfig::NeedsCleanup is
+ * \b false, also rudely interrupts the worker with a SIGINT.
+ */
+ virtual ~Worker();
+
+private:
+ APT_HIDDEN void PrepareFiles(char const * const caller, pkgAcquire::Queue::QItem const * const Itm);
+};
+
+/** @} */
+
+#endif
diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc
new file mode 100644
index 000000000..b62c50c00
--- /dev/null
+++ b/apt-pkg/acquire.cc
@@ -0,0 +1,1433 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: acquire.cc,v 1.50 2004/03/17 05:17:11 mdz Exp $
+/* ######################################################################
+
+ Acquire - File Acquiration
+
+ The core element for the schedule system is the concept of a named
+ queue. Each queue is unique and each queue has a name derived from the
+ URI. The degree of paralization can be controlled by how the queue
+ name is derived from the URI.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/acquire-item.h>
+#include <apt-pkg/acquire-worker.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/fileutl.h>
+
+#include <algorithm>
+#include <numeric>
+#include <string>
+#include <vector>
+#include <iostream>
+#include <sstream>
+#include <iomanip>
+#include <memory>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <pwd.h>
+#include <grp.h>
+#include <dirent.h>
+#include <sys/time.h>
+#include <sys/select.h>
+#include <errno.h>
+#include <sys/stat.h>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+// Acquire::pkgAcquire - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* We grab some runtime state from the configuration space */
+pkgAcquire::pkgAcquire() : LockFD(-1), d(NULL), Queues(0), Workers(0), Configs(0), Log(NULL), ToFetch(0),
+ Debug(_config->FindB("Debug::pkgAcquire",false)),
+ Running(false)
+{
+ Initialize();
+}
+pkgAcquire::pkgAcquire(pkgAcquireStatus *Progress) : LockFD(-1), d(NULL), Queues(0), Workers(0),
+ Configs(0), Log(NULL), ToFetch(0),
+ Debug(_config->FindB("Debug::pkgAcquire",false)),
+ Running(false)
+{
+ Initialize();
+ SetLog(Progress);
+}
+void pkgAcquire::Initialize()
+{
+ string const Mode = _config->Find("Acquire::Queue-Mode","host");
+ if (strcasecmp(Mode.c_str(),"host") == 0)
+ QueueMode = QueueHost;
+ if (strcasecmp(Mode.c_str(),"access") == 0)
+ QueueMode = QueueAccess;
+
+ // chown the auth.conf file as it will be accessed by our methods
+ std::string const SandboxUser = _config->Find("APT::Sandbox::User");
+ if (getuid() == 0 && SandboxUser.empty() == false && SandboxUser != "root") // if we aren't root, we can't chown, so don't try it
+ {
+ struct passwd const * const pw = getpwnam(SandboxUser.c_str());
+ struct group const * const gr = getgrnam(ROOT_GROUP);
+ if (pw != NULL && gr != NULL)
+ {
+ std::string const AuthConf = _config->FindFile("Dir::Etc::netrc");
+ if(AuthConf.empty() == false && RealFileExists(AuthConf) &&
+ chown(AuthConf.c_str(), pw->pw_uid, gr->gr_gid) != 0)
+ _error->WarningE("SetupAPTPartialDirectory", "chown to %s:root of file %s failed", SandboxUser.c_str(), AuthConf.c_str());
+ }
+ }
+}
+ /*}}}*/
+// Acquire::GetLock - lock directory and prepare for action /*{{{*/
+static bool SetupAPTPartialDirectory(std::string const &grand, std::string const &parent)
+{
+ std::string const partial = parent + "partial";
+ mode_t const mode = umask(S_IWGRP | S_IWOTH);
+ bool const creation_fail = (CreateAPTDirectoryIfNeeded(grand, partial) == false &&
+ CreateAPTDirectoryIfNeeded(parent, partial) == false);
+ umask(mode);
+ if (creation_fail == true)
+ return false;
+
+ std::string const SandboxUser = _config->Find("APT::Sandbox::User");
+ if (getuid() == 0 && SandboxUser.empty() == false && SandboxUser != "root") // if we aren't root, we can't chown, so don't try it
+ {
+ struct passwd const * const pw = getpwnam(SandboxUser.c_str());
+ struct group const * const gr = getgrnam(ROOT_GROUP);
+ if (pw != NULL && gr != NULL)
+ {
+ // chown the partial dir
+ if(chown(partial.c_str(), pw->pw_uid, gr->gr_gid) != 0)
+ _error->WarningE("SetupAPTPartialDirectory", "chown to %s:root of directory %s failed", SandboxUser.c_str(), partial.c_str());
+ }
+ }
+ if (chmod(partial.c_str(), 0700) != 0)
+ _error->WarningE("SetupAPTPartialDirectory", "chmod 0700 of directory %s failed", partial.c_str());
+
+ _error->PushToStack();
+ // remove 'old' FAILED files to stop us from collecting them for no reason
+ for (auto const &Failed: GetListOfFilesInDir(partial, "FAILED", false, false))
+ RemoveFile("SetupAPTPartialDirectory", Failed);
+ _error->RevertToStack();
+
+ return true;
+}
+bool pkgAcquire::Setup(pkgAcquireStatus *Progress, string const &Lock)
+{
+ Log = Progress;
+ if (Lock.empty())
+ {
+ string const listDir = _config->FindDir("Dir::State::lists");
+ if (SetupAPTPartialDirectory(_config->FindDir("Dir::State"), listDir) == false)
+ return _error->Errno("Acquire", _("List directory %spartial is missing."), listDir.c_str());
+ string const archivesDir = _config->FindDir("Dir::Cache::Archives");
+ if (SetupAPTPartialDirectory(_config->FindDir("Dir::Cache"), archivesDir) == false)
+ return _error->Errno("Acquire", _("Archives directory %spartial is missing."), archivesDir.c_str());
+ return true;
+ }
+ return GetLock(Lock);
+}
+bool pkgAcquire::GetLock(std::string const &Lock)
+{
+ if (Lock.empty() == true)
+ return false;
+
+ // check for existence and possibly create auxiliary directories
+ string const listDir = _config->FindDir("Dir::State::lists");
+ string const archivesDir = _config->FindDir("Dir::Cache::Archives");
+
+ if (Lock == listDir)
+ {
+ if (SetupAPTPartialDirectory(_config->FindDir("Dir::State"), listDir) == false)
+ return _error->Errno("Acquire", _("List directory %spartial is missing."), listDir.c_str());
+ }
+ if (Lock == archivesDir)
+ {
+ if (SetupAPTPartialDirectory(_config->FindDir("Dir::Cache"), archivesDir) == false)
+ return _error->Errno("Acquire", _("Archives directory %spartial is missing."), archivesDir.c_str());
+ }
+
+ if (_config->FindB("Debug::NoLocking", false) == true)
+ return true;
+
+ // Lock the directory this acquire object will work in
+ if (LockFD != -1)
+ close(LockFD);
+ LockFD = ::GetLock(flCombine(Lock, "lock"));
+ if (LockFD == -1)
+ return _error->Error(_("Unable to lock directory %s"), Lock.c_str());
+
+ return true;
+}
+ /*}}}*/
+// Acquire::~pkgAcquire - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* Free our memory, clean up the queues (destroy the workers) */
+pkgAcquire::~pkgAcquire()
+{
+ Shutdown();
+
+ if (LockFD != -1)
+ close(LockFD);
+
+ while (Configs != 0)
+ {
+ MethodConfig *Jnk = Configs;
+ Configs = Configs->Next;
+ delete Jnk;
+ }
+}
+ /*}}}*/
+// Acquire::Shutdown - Clean out the acquire object /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgAcquire::Shutdown()
+{
+ while (Items.empty() == false)
+ {
+ if (Items[0]->Status == Item::StatFetching)
+ Items[0]->Status = Item::StatError;
+ delete Items[0];
+ }
+
+ while (Queues != 0)
+ {
+ Queue *Jnk = Queues;
+ Queues = Queues->Next;
+ delete Jnk;
+ }
+}
+ /*}}}*/
+// Acquire::Add - Add a new item /*{{{*/
+// ---------------------------------------------------------------------
+/* This puts an item on the acquire list. This list is mainly for tracking
+ item status */
+void pkgAcquire::Add(Item *Itm)
+{
+ Items.push_back(Itm);
+}
+ /*}}}*/
+// Acquire::Remove - Remove a item /*{{{*/
+// ---------------------------------------------------------------------
+/* Remove an item from the acquire list. This is usually not used.. */
+void pkgAcquire::Remove(Item *Itm)
+{
+ Dequeue(Itm);
+
+ for (ItemIterator I = Items.begin(); I != Items.end();)
+ {
+ if (*I == Itm)
+ {
+ Items.erase(I);
+ I = Items.begin();
+ }
+ else
+ ++I;
+ }
+}
+ /*}}}*/
+// Acquire::Add - Add a worker /*{{{*/
+// ---------------------------------------------------------------------
+/* A list of workers is kept so that the select loop can direct their FD
+ usage. */
+void pkgAcquire::Add(Worker *Work)
+{
+ Work->NextAcquire = Workers;
+ Workers = Work;
+}
+ /*}}}*/
+// Acquire::Remove - Remove a worker /*{{{*/
+// ---------------------------------------------------------------------
+/* A worker has died. This can not be done while the select loop is running
+ as it would require that RunFds could handling a changing list state and
+ it can't.. */
+void pkgAcquire::Remove(Worker *Work)
+{
+ if (Running == true)
+ abort();
+
+ Worker **I = &Workers;
+ for (; *I != 0;)
+ {
+ if (*I == Work)
+ *I = (*I)->NextAcquire;
+ else
+ I = &(*I)->NextAcquire;
+ }
+}
+ /*}}}*/
+// Acquire::Enqueue - Queue an URI for fetching /*{{{*/
+// ---------------------------------------------------------------------
+/* This is the entry point for an item. An item calls this function when
+ it is constructed which creates a queue (based on the current queue
+ mode) and puts the item in that queue. If the system is running then
+ the queue might be started. */
+static bool CheckForBadItemAndFailIt(pkgAcquire::Item * const Item,
+ pkgAcquire::MethodConfig const * const Config, pkgAcquireStatus * const Log)
+{
+ auto SavedDesc = Item->GetItemDesc();
+ if (Item->IsRedirectionLoop(SavedDesc.URI))
+ {
+ std::string const Message = "400 URI Failure"
+ "\nURI: " + SavedDesc.URI +
+ "\nFilename: " + Item->DestFile +
+ "\nFailReason: RedirectionLoop";
+
+ Item->Status = pkgAcquire::Item::StatError;
+ Item->Failed(Message, Config);
+ if (Log != nullptr)
+ Log->Fail(SavedDesc);
+ return true;
+ }
+
+ HashStringList const hsl = Item->GetExpectedHashes();
+ if (hsl.usable() == false && Item->HashesRequired() &&
+ _config->Exists("Acquire::ForceHash") == false)
+ {
+ std::string const Message = "400 URI Failure"
+ "\nURI: " + SavedDesc.URI +
+ "\nFilename: " + Item->DestFile +
+ "\nFailReason: WeakHashSums";
+
+ auto SavedDesc = Item->GetItemDesc();
+ Item->Status = pkgAcquire::Item::StatAuthError;
+ Item->Failed(Message, Config);
+ if (Log != nullptr)
+ Log->Fail(SavedDesc);
+ return true;
+ }
+ return false;
+}
+void pkgAcquire::Enqueue(ItemDesc &Item)
+{
+ // Determine which queue to put the item in
+ const MethodConfig *Config;
+ string Name = QueueName(Item.URI,Config);
+ if (Name.empty() == true)
+ return;
+
+ /* the check for running avoids that we produce errors
+ in logging before we actually have started, which would
+ be easier to implement but would confuse users/implementations
+ so we check the items skipped here in #Startup */
+ if (Running && CheckForBadItemAndFailIt(Item.Owner, Config, Log))
+ return;
+
+ // Find the queue structure
+ Queue *I = Queues;
+ for (; I != 0 && I->Name != Name; I = I->Next);
+ if (I == 0)
+ {
+ I = new Queue(Name,this);
+ I->Next = Queues;
+ Queues = I;
+
+ if (Running == true)
+ I->Startup();
+ }
+
+ // See if this is a local only URI
+ if (Config->LocalOnly == true && Item.Owner->Complete == false)
+ Item.Owner->Local = true;
+ Item.Owner->Status = Item::StatIdle;
+
+ // Queue it into the named queue
+ if(I->Enqueue(Item))
+ ToFetch++;
+
+ // Some trace stuff
+ if (Debug == true)
+ {
+ clog << "Fetching " << Item.URI << endl;
+ clog << " to " << Item.Owner->DestFile << endl;
+ clog << " Queue is: " << Name << endl;
+ }
+}
+ /*}}}*/
+// Acquire::Dequeue - Remove an item from all queues /*{{{*/
+// ---------------------------------------------------------------------
+/* This is called when an item is finished being fetched. It removes it
+ from all the queues */
+void pkgAcquire::Dequeue(Item *Itm)
+{
+ Queue *I = Queues;
+ bool Res = false;
+ if (Debug == true)
+ clog << "Dequeuing " << Itm->DestFile << endl;
+
+ for (; I != 0; I = I->Next)
+ {
+ if (I->Dequeue(Itm))
+ {
+ Res = true;
+ if (Debug == true)
+ clog << "Dequeued from " << I->Name << endl;
+ }
+ }
+
+ if (Res == true)
+ ToFetch--;
+}
+ /*}}}*/
+// Acquire::QueueName - Return the name of the queue for this URI /*{{{*/
+// ---------------------------------------------------------------------
+/* The string returned depends on the configuration settings and the
+ method parameters. Given something like http://foo.org/bar it can
+ return http://foo.org or http */
+string pkgAcquire::QueueName(string Uri,MethodConfig const *&Config)
+{
+ URI U(Uri);
+
+ Config = GetConfig(U.Access);
+ if (Config == 0)
+ return string();
+
+ /* Single-Instance methods get exactly one queue per URI. This is
+ also used for the Access queue method */
+ if (Config->SingleInstance == true || QueueMode == QueueAccess)
+ return U.Access;
+
+ string AccessSchema = U.Access + ':';
+ string FullQueueName;
+
+ if (U.Host.empty())
+ {
+ long existing = 0;
+ // check how many queues exist already and reuse empty ones
+ for (Queue const *I = Queues; I != 0; I = I->Next)
+ if (I->Name.compare(0, AccessSchema.length(), AccessSchema) == 0)
+ {
+ if (I->Items == nullptr)
+ return I->Name;
+ ++existing;
+ }
+
+#ifdef _SC_NPROCESSORS_ONLN
+ long cpuCount = sysconf(_SC_NPROCESSORS_ONLN) * 2;
+#else
+ long cpuCount = 10;
+#endif
+ cpuCount = _config->FindI("Acquire::QueueHost::Limit", cpuCount);
+
+ if (cpuCount <= 0 || existing < cpuCount)
+ strprintf(FullQueueName, "%s%ld", AccessSchema.c_str(), existing);
+ else
+ {
+ long const randomQueue = random() % cpuCount;
+ strprintf(FullQueueName, "%s%ld", AccessSchema.c_str(), randomQueue);
+ }
+
+ if (Debug)
+ clog << "Chose random queue " << FullQueueName << " for " << Uri << endl;
+ } else
+ {
+ FullQueueName = AccessSchema + U.Host;
+ }
+ unsigned int Instances = 0, SchemaLength = AccessSchema.length();
+
+ Queue *I = Queues;
+ for (; I != 0; I = I->Next) {
+ // if the queue already exists, re-use it
+ if (I->Name == FullQueueName)
+ return FullQueueName;
+
+ if (I->Name.compare(0, SchemaLength, AccessSchema) == 0)
+ Instances++;
+ }
+
+ if (Debug) {
+ clog << "Found " << Instances << " instances of " << U.Access << endl;
+ }
+
+ if (Instances >= (unsigned int)_config->FindI("Acquire::QueueHost::Limit",10))
+ return U.Access;
+
+ return FullQueueName;
+}
+ /*}}}*/
+// Acquire::GetConfig - Fetch the configuration information /*{{{*/
+// ---------------------------------------------------------------------
+/* This locates the configuration structure for an access method. If
+ a config structure cannot be found a Worker will be created to
+ retrieve it */
+pkgAcquire::MethodConfig *pkgAcquire::GetConfig(string Access)
+{
+ // Search for an existing config
+ MethodConfig *Conf;
+ for (Conf = Configs; Conf != 0; Conf = Conf->Next)
+ if (Conf->Access == Access)
+ return Conf;
+
+ // Create the new config class
+ Conf = new MethodConfig;
+ Conf->Access = Access;
+ Conf->Next = Configs;
+ Configs = Conf;
+
+ // Create the worker to fetch the configuration
+ Worker Work(Conf);
+ if (Work.Start() == false)
+ return 0;
+
+ /* if a method uses DownloadLimit, we switch to SingleInstance mode */
+ if(_config->FindI("Acquire::"+Access+"::Dl-Limit",0) > 0)
+ Conf->SingleInstance = true;
+
+ return Conf;
+}
+ /*}}}*/
+// Acquire::SetFds - Deal with readable FDs /*{{{*/
+// ---------------------------------------------------------------------
+/* Collect FDs that have activity monitors into the fd sets */
+void pkgAcquire::SetFds(int &Fd,fd_set *RSet,fd_set *WSet)
+{
+ for (Worker *I = Workers; I != 0; I = I->NextAcquire)
+ {
+ if (I->InReady == true && I->InFd >= 0)
+ {
+ if (Fd < I->InFd)
+ Fd = I->InFd;
+ FD_SET(I->InFd,RSet);
+ }
+ if (I->OutReady == true && I->OutFd >= 0)
+ {
+ if (Fd < I->OutFd)
+ Fd = I->OutFd;
+ FD_SET(I->OutFd,WSet);
+ }
+ }
+}
+ /*}}}*/
+// Acquire::RunFds - compatibility remove on next abi/api break /*{{{*/
+void pkgAcquire::RunFds(fd_set *RSet,fd_set *WSet)
+{
+ RunFdsSane(RSet, WSet);
+}
+ /*}}}*/
+// Acquire::RunFdsSane - Deal with active FDs /*{{{*/
+// ---------------------------------------------------------------------
+/* Dispatch active FDs over to the proper workers. It is very important
+ that a worker never be erased while this is running! The queue class
+ should never erase a worker except during shutdown processing. */
+bool pkgAcquire::RunFdsSane(fd_set *RSet,fd_set *WSet)
+{
+ bool Res = true;
+
+ for (Worker *I = Workers; I != 0; I = I->NextAcquire)
+ {
+ if (I->InFd >= 0 && FD_ISSET(I->InFd,RSet) != 0)
+ Res &= I->InFdReady();
+ if (I->OutFd >= 0 && FD_ISSET(I->OutFd,WSet) != 0)
+ Res &= I->OutFdReady();
+ }
+
+ return Res;
+}
+ /*}}}*/
+// Acquire::Run - Run the fetch sequence /*{{{*/
+// ---------------------------------------------------------------------
+/* This runs the queues. It manages a select loop for all of the
+ Worker tasks. The workers interact with the queues and items to
+ manage the actual fetch. */
+static bool IsAccessibleBySandboxUser(std::string const &filename, bool const ReadWrite)
+{
+ // you would think this is easily to answer with faccessat, right? Wrong!
+ // It e.g. gets groups wrong, so the only thing which works reliable is trying
+ // to open the file we want to open later on…
+ if (unlikely(filename.empty()))
+ return true;
+
+ if (ReadWrite == false)
+ {
+ errno = 0;
+ // can we read a file? Note that non-existing files are "fine"
+ int const fd = open(filename.c_str(), O_RDONLY | O_CLOEXEC);
+ if (fd == -1 && errno == EACCES)
+ return false;
+ close(fd);
+ return true;
+ }
+ else
+ {
+ // the file might not exist yet and even if it does we will fix permissions,
+ // so important is here just that the directory it is in allows that
+ std::string const dirname = flNotFile(filename);
+ if (unlikely(dirname.empty()))
+ return true;
+
+ char const * const filetag = ".apt-acquire-privs-test.XXXXXX";
+ std::string const tmpfile_tpl = flCombine(dirname, filetag);
+ std::unique_ptr<char, decltype(std::free) *> tmpfile { strdup(tmpfile_tpl.c_str()), std::free };
+ int const fd = mkstemp(tmpfile.get());
+ if (fd == -1 && errno == EACCES)
+ return false;
+ RemoveFile("IsAccessibleBySandboxUser", tmpfile.get());
+ close(fd);
+ return true;
+ }
+}
+static void CheckDropPrivsMustBeDisabled(pkgAcquire const &Fetcher)
+{
+ if(getuid() != 0)
+ return;
+
+ std::string const SandboxUser = _config->Find("APT::Sandbox::User");
+ if (SandboxUser.empty() || SandboxUser == "root")
+ return;
+
+ struct passwd const * const pw = getpwnam(SandboxUser.c_str());
+ if (pw == NULL)
+ {
+ _error->Warning(_("No sandbox user '%s' on the system, can not drop privileges"), SandboxUser.c_str());
+ _config->Set("APT::Sandbox::User", "");
+ return;
+ }
+
+ gid_t const old_euid = geteuid();
+ gid_t const old_egid = getegid();
+
+ long const ngroups_max = sysconf(_SC_NGROUPS_MAX);
+ std::unique_ptr<gid_t[]> old_gidlist(new gid_t[ngroups_max]);
+ if (unlikely(old_gidlist == NULL))
+ return;
+ ssize_t old_gidlist_nr;
+ if ((old_gidlist_nr = getgroups(ngroups_max, old_gidlist.get())) < 0)
+ {
+ _error->FatalE("getgroups", "getgroups %lu failed", ngroups_max);
+ old_gidlist[0] = 0;
+ old_gidlist_nr = 1;
+ }
+ if (setgroups(1, &pw->pw_gid))
+ _error->FatalE("setgroups", "setgroups %u failed", pw->pw_gid);
+
+ if (setegid(pw->pw_gid) != 0)
+ _error->FatalE("setegid", "setegid %u failed", pw->pw_gid);
+ if (seteuid(pw->pw_uid) != 0)
+ _error->FatalE("seteuid", "seteuid %u failed", pw->pw_uid);
+
+ for (pkgAcquire::ItemCIterator I = Fetcher.ItemsBegin();
+ I != Fetcher.ItemsEnd(); ++I)
+ {
+ // no need to drop privileges for a complete file
+ if ((*I)->Complete == true || (*I)->Status != pkgAcquire::Item::StatIdle)
+ continue;
+
+ // if destination file is inaccessible all hope is lost for privilege dropping
+ if (IsAccessibleBySandboxUser((*I)->DestFile, true) == false)
+ {
+ _error->WarningE("pkgAcquire::Run", _("Download is performed unsandboxed as root as file '%s' couldn't be accessed by user '%s'."),
+ (*I)->DestFile.c_str(), SandboxUser.c_str());
+ _config->Set("APT::Sandbox::User", "");
+ break;
+ }
+
+ // if its the source file (e.g. local sources) we might be lucky
+ // by dropping the dropping only for some methods.
+ URI const source = (*I)->DescURI();
+ if (source.Access == "file" || source.Access == "copy")
+ {
+ std::string const conf = "Binary::" + source.Access + "::APT::Sandbox::User";
+ if (_config->Exists(conf) == true)
+ continue;
+
+ if (IsAccessibleBySandboxUser(source.Path, false) == false)
+ {
+ _error->NoticeE("pkgAcquire::Run", _("Download is performed unsandboxed as root as file '%s' couldn't be accessed by user '%s'."),
+ source.Path.c_str(), SandboxUser.c_str());
+ _config->CndSet("Binary::file::APT::Sandbox::User", "root");
+ _config->CndSet("Binary::copy::APT::Sandbox::User", "root");
+ }
+ }
+ }
+
+ if (seteuid(old_euid) != 0)
+ _error->FatalE("seteuid", "seteuid %u failed", old_euid);
+ if (setegid(old_egid) != 0)
+ _error->FatalE("setegid", "setegid %u failed", old_egid);
+ if (setgroups(old_gidlist_nr, old_gidlist.get()))
+ _error->FatalE("setgroups", "setgroups %u failed", 0);
+}
+pkgAcquire::RunResult pkgAcquire::Run(int PulseIntervall)
+{
+ _error->PushToStack();
+ CheckDropPrivsMustBeDisabled(*this);
+
+ Running = true;
+
+ for (Queue *I = Queues; I != 0; I = I->Next)
+ I->Startup();
+
+ if (Log != 0)
+ Log->Start();
+
+ bool WasCancelled = false;
+
+ // Run till all things have been acquired
+ struct timeval tv;
+ tv.tv_sec = 0;
+ tv.tv_usec = PulseIntervall;
+ while (ToFetch > 0)
+ {
+ fd_set RFds;
+ fd_set WFds;
+ int Highest = 0;
+ FD_ZERO(&RFds);
+ FD_ZERO(&WFds);
+ SetFds(Highest,&RFds,&WFds);
+
+ int Res;
+ do
+ {
+ Res = select(Highest+1,&RFds,&WFds,0,&tv);
+ }
+ while (Res < 0 && errno == EINTR);
+
+ if (Res < 0)
+ {
+ _error->Errno("select","Select has failed");
+ break;
+ }
+
+ if(RunFdsSane(&RFds,&WFds) == false)
+ break;
+
+ // Timeout, notify the log class
+ if (Res == 0 || (Log != 0 && Log->Update == true))
+ {
+ tv.tv_usec = PulseIntervall;
+ for (Worker *I = Workers; I != 0; I = I->NextAcquire)
+ I->Pulse();
+ if (Log != 0 && Log->Pulse(this) == false)
+ {
+ WasCancelled = true;
+ break;
+ }
+ }
+ }
+
+ if (Log != 0)
+ Log->Stop();
+
+ // Shut down the acquire bits
+ Running = false;
+ for (Queue *I = Queues; I != 0; I = I->Next)
+ I->Shutdown(false);
+
+ // Shut down the items
+ for (ItemIterator I = Items.begin(); I != Items.end(); ++I)
+ (*I)->Finished();
+
+ bool const newError = _error->PendingError();
+ _error->MergeWithStack();
+ if (newError)
+ return Failed;
+ if (WasCancelled)
+ return Cancelled;
+ return Continue;
+}
+ /*}}}*/
+// Acquire::Bump - Called when an item is dequeued /*{{{*/
+// ---------------------------------------------------------------------
+/* This routine bumps idle queues in hopes that they will be able to fetch
+ the dequeued item */
+void pkgAcquire::Bump()
+{
+ for (Queue *I = Queues; I != 0; I = I->Next)
+ I->Bump();
+}
+ /*}}}*/
+// Acquire::WorkerStep - Step to the next worker /*{{{*/
+// ---------------------------------------------------------------------
+/* Not inlined to advoid including acquire-worker.h */
+pkgAcquire::Worker *pkgAcquire::WorkerStep(Worker *I)
+{
+ return I->NextAcquire;
+}
+ /*}}}*/
+// Acquire::Clean - Cleans a directory /*{{{*/
+// ---------------------------------------------------------------------
+/* This is a bit simplistic, it looks at every file in the dir and sees
+ if it is part of the download set. */
+bool pkgAcquire::Clean(string Dir)
+{
+ // non-existing directories are by definition clean…
+ if (DirectoryExists(Dir) == false)
+ return true;
+
+ if(Dir == "/")
+ return _error->Error(_("Clean of %s is not supported"), Dir.c_str());
+
+ DIR *D = opendir(Dir.c_str());
+ if (D == 0)
+ return _error->Errno("opendir",_("Unable to read %s"),Dir.c_str());
+
+ string StartDir = SafeGetCWD();
+ if (chdir(Dir.c_str()) != 0)
+ {
+ closedir(D);
+ return _error->Errno("chdir",_("Unable to change to %s"),Dir.c_str());
+ }
+
+ for (struct dirent *Dir = readdir(D); Dir != 0; Dir = readdir(D))
+ {
+ // Skip some files..
+ if (strcmp(Dir->d_name,"lock") == 0 ||
+ strcmp(Dir->d_name,"partial") == 0 ||
+ strcmp(Dir->d_name,"lost+found") == 0 ||
+ strcmp(Dir->d_name,".") == 0 ||
+ strcmp(Dir->d_name,"..") == 0)
+ continue;
+
+ // Look in the get list
+ ItemCIterator I = Items.begin();
+ for (; I != Items.end(); ++I)
+ if (flNotDir((*I)->DestFile) == Dir->d_name)
+ break;
+
+ // Nothing found, nuke it
+ if (I == Items.end())
+ RemoveFile("Clean", Dir->d_name);
+ };
+
+ closedir(D);
+ if (chdir(StartDir.c_str()) != 0)
+ return _error->Errno("chdir",_("Unable to change to %s"),StartDir.c_str());
+ return true;
+}
+ /*}}}*/
+// Acquire::TotalNeeded - Number of bytes to fetch /*{{{*/
+// ---------------------------------------------------------------------
+/* This is the total number of bytes needed */
+APT_PURE unsigned long long pkgAcquire::TotalNeeded()
+{
+ return std::accumulate(ItemsBegin(), ItemsEnd(), 0llu,
+ [](unsigned long long const T, Item const * const I) {
+ return T + I->FileSize;
+ });
+}
+ /*}}}*/
+// Acquire::FetchNeeded - Number of bytes needed to get /*{{{*/
+// ---------------------------------------------------------------------
+/* This is the number of bytes that is not local */
+APT_PURE unsigned long long pkgAcquire::FetchNeeded()
+{
+ return std::accumulate(ItemsBegin(), ItemsEnd(), 0llu,
+ [](unsigned long long const T, Item const * const I) {
+ if (I->Local == false)
+ return T + I->FileSize;
+ else
+ return T;
+ });
+}
+ /*}}}*/
+// Acquire::PartialPresent - Number of partial bytes we already have /*{{{*/
+// ---------------------------------------------------------------------
+/* This is the number of bytes that is not local */
+APT_PURE unsigned long long pkgAcquire::PartialPresent()
+{
+ return std::accumulate(ItemsBegin(), ItemsEnd(), 0llu,
+ [](unsigned long long const T, Item const * const I) {
+ if (I->Local == false)
+ return T + I->PartialSize;
+ else
+ return T;
+ });
+}
+ /*}}}*/
+// Acquire::UriBegin - Start iterator for the uri list /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgAcquire::UriIterator pkgAcquire::UriBegin()
+{
+ return UriIterator(Queues);
+}
+ /*}}}*/
+// Acquire::UriEnd - End iterator for the uri list /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgAcquire::UriIterator pkgAcquire::UriEnd()
+{
+ return UriIterator(0);
+}
+ /*}}}*/
+// Acquire::MethodConfig::MethodConfig - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgAcquire::MethodConfig::MethodConfig() : d(NULL), Next(0), SingleInstance(false),
+ Pipeline(false), SendConfig(false), LocalOnly(false), NeedsCleanup(false),
+ Removable(false)
+{
+}
+ /*}}}*/
+// Queue::Queue - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgAcquire::Queue::Queue(string const &name,pkgAcquire * const owner) : d(NULL), Next(0),
+ Name(name), Items(0), Workers(0), Owner(owner), PipeDepth(0), MaxPipeDepth(1)
+{
+}
+ /*}}}*/
+// Queue::~Queue - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgAcquire::Queue::~Queue()
+{
+ Shutdown(true);
+
+ while (Items != 0)
+ {
+ QItem *Jnk = Items;
+ Items = Items->Next;
+ delete Jnk;
+ }
+}
+ /*}}}*/
+// Queue::Enqueue - Queue an item to the queue /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgAcquire::Queue::Enqueue(ItemDesc &Item)
+{
+ // MetaKeysMatch checks whether the two items have no non-matching
+ // meta-keys. If the items are not transaction items, it returns
+ // true, so other items can still be merged.
+ auto MetaKeysMatch = [](pkgAcquire::ItemDesc const &A, pkgAcquire::Queue::QItem const *B) {
+ auto OwnerA = dynamic_cast<pkgAcqTransactionItem*>(A.Owner);
+ if (OwnerA == nullptr)
+ return true;
+
+ for (auto const & OwnerBUncast : B->Owners) {
+ auto OwnerB = dynamic_cast<pkgAcqTransactionItem*>(OwnerBUncast);
+
+ if (OwnerB != nullptr && OwnerA->GetMetaKey() != OwnerB->GetMetaKey())
+ return false;
+ }
+ return true;
+ };
+ QItem **OptimalI = &Items;
+ QItem **I = &Items;
+ // move to the end of the queue and check for duplicates here
+ for (; *I != 0; ) {
+ if (Item.URI == (*I)->URI && MetaKeysMatch(Item, *I))
+ {
+ if (_config->FindB("Debug::pkgAcquire::Worker",false) == true)
+ std::cerr << " @ Queue: Action combined for " << Item.URI << " and " << (*I)->URI << std::endl;
+ (*I)->Owners.push_back(Item.Owner);
+ Item.Owner->Status = (*I)->Owner->Status;
+ return false;
+ }
+ // Determine the optimal position to insert: before anything with a
+ // higher priority.
+ int priority = (*I)->GetPriority();
+
+ I = &(*I)->Next;
+ if (priority >= Item.Owner->Priority()) {
+ OptimalI = I;
+ }
+ }
+
+
+ // Create a new item
+ QItem *Itm = new QItem;
+ *Itm = Item;
+ Itm->Next = *OptimalI;
+ *OptimalI = Itm;
+
+ Item.Owner->QueueCounter++;
+ if (Items->Next == 0)
+ Cycle();
+ return true;
+}
+ /*}}}*/
+// Queue::Dequeue - Remove an item from the queue /*{{{*/
+// ---------------------------------------------------------------------
+/* We return true if we hit something */
+bool pkgAcquire::Queue::Dequeue(Item *Owner)
+{
+ if (Owner->Status == pkgAcquire::Item::StatFetching)
+ return _error->Error("Tried to dequeue a fetching object");
+
+ bool Res = false;
+
+ QItem **I = &Items;
+ for (; *I != 0;)
+ {
+ if (Owner == (*I)->Owner)
+ {
+ QItem *Jnk= *I;
+ *I = (*I)->Next;
+ Owner->QueueCounter--;
+ delete Jnk;
+ Res = true;
+ }
+ else
+ I = &(*I)->Next;
+ }
+
+ return Res;
+}
+ /*}}}*/
+// Queue::Startup - Start the worker processes /*{{{*/
+// ---------------------------------------------------------------------
+/* It is possible for this to be called with a pre-existing set of
+ workers. */
+bool pkgAcquire::Queue::Startup()
+{
+ if (Workers == 0)
+ {
+ URI U(Name);
+ pkgAcquire::MethodConfig * const Cnf = Owner->GetConfig(U.Access);
+ if (unlikely(Cnf == nullptr))
+ return false;
+
+ // now-running twin of the pkgAcquire::Enqueue call
+ for (QItem *I = Items; I != 0; )
+ {
+ auto const INext = I->Next;
+ for (auto &&O: I->Owners)
+ CheckForBadItemAndFailIt(O, Cnf, Owner->Log);
+ // if an item failed, it will be auto-dequeued invalidation our I here
+ I = INext;
+ }
+
+ Workers = new Worker(this,Cnf,Owner->Log);
+ Owner->Add(Workers);
+ if (Workers->Start() == false)
+ return false;
+
+ /* When pipelining we commit 10 items. This needs to change when we
+ added other source retry to have cycle maintain a pipeline depth
+ on its own. */
+ if (Cnf->Pipeline == true)
+ MaxPipeDepth = _config->FindI("Acquire::Max-Pipeline-Depth",10);
+ else
+ MaxPipeDepth = 1;
+ }
+
+ return Cycle();
+}
+ /*}}}*/
+// Queue::Shutdown - Shutdown the worker processes /*{{{*/
+// ---------------------------------------------------------------------
+/* If final is true then all workers are eliminated, otherwise only workers
+ that do not need cleanup are removed */
+bool pkgAcquire::Queue::Shutdown(bool Final)
+{
+ // Delete all of the workers
+ pkgAcquire::Worker **Cur = &Workers;
+ while (*Cur != 0)
+ {
+ pkgAcquire::Worker *Jnk = *Cur;
+ if (Final == true || Jnk->GetConf()->NeedsCleanup == false)
+ {
+ *Cur = Jnk->NextQueue;
+ Owner->Remove(Jnk);
+ delete Jnk;
+ }
+ else
+ Cur = &(*Cur)->NextQueue;
+ }
+
+ return true;
+}
+ /*}}}*/
+// Queue::FindItem - Find a URI in the item list /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgAcquire::Queue::QItem *pkgAcquire::Queue::FindItem(string URI,pkgAcquire::Worker *Owner)
+{
+ for (QItem *I = Items; I != 0; I = I->Next)
+ if (I->URI == URI && I->Worker == Owner)
+ return I;
+ return 0;
+}
+ /*}}}*/
+// Queue::ItemDone - Item has been completed /*{{{*/
+// ---------------------------------------------------------------------
+/* The worker signals this which causes the item to be removed from the
+ queue. If this is the last queue instance then it is removed from the
+ main queue too.*/
+bool pkgAcquire::Queue::ItemDone(QItem *Itm)
+{
+ PipeDepth--;
+ for (QItem::owner_iterator O = Itm->Owners.begin(); O != Itm->Owners.end(); ++O)
+ {
+ if ((*O)->Status == pkgAcquire::Item::StatFetching)
+ (*O)->Status = pkgAcquire::Item::StatDone;
+ }
+
+ if (Itm->Owner->QueueCounter <= 1)
+ Owner->Dequeue(Itm->Owner);
+ else
+ {
+ Dequeue(Itm->Owner);
+ Owner->Bump();
+ }
+
+ return Cycle();
+}
+ /*}}}*/
+// Queue::Cycle - Queue new items into the method /*{{{*/
+// ---------------------------------------------------------------------
+/* This locates a new idle item and sends it to the worker. If pipelining
+ is enabled then it keeps the pipe full. */
+bool pkgAcquire::Queue::Cycle()
+{
+ if (Items == 0 || Workers == 0)
+ return true;
+
+ if (PipeDepth < 0)
+ return _error->Error("Pipedepth failure");
+
+ // Look for a queable item
+ QItem *I = Items;
+ int ActivePriority = 0;
+ while (PipeDepth < (signed)MaxPipeDepth)
+ {
+ for (; I != 0; I = I->Next) {
+ if (I->Owner->Status == pkgAcquire::Item::StatFetching)
+ ActivePriority = std::max(ActivePriority, I->GetPriority());
+ if (I->Owner->Status == pkgAcquire::Item::StatIdle)
+ break;
+ }
+
+ // Nothing to do, queue is idle.
+ if (I == 0)
+ return true;
+
+ // This item has a lower priority than stuff in the pipeline, pretend
+ // the queue is idle
+ if (I->GetPriority() < ActivePriority)
+ return true;
+ I->Worker = Workers;
+ for (auto const &O: I->Owners)
+ O->Status = pkgAcquire::Item::StatFetching;
+ PipeDepth++;
+ if (Workers->QueueItem(I) == false)
+ return false;
+ }
+
+ return true;
+}
+ /*}}}*/
+// Queue::Bump - Fetch any pending objects if we are idle /*{{{*/
+// ---------------------------------------------------------------------
+/* This is called when an item in multiple queues is dequeued */
+void pkgAcquire::Queue::Bump()
+{
+ Cycle();
+}
+ /*}}}*/
+HashStringList pkgAcquire::Queue::QItem::GetExpectedHashes() const /*{{{*/
+{
+ /* each Item can have multiple owners and each owner might have different
+ hashes, even if that is unlikely in practice and if so at least some
+ owners will later fail. There is one situation through which is not a
+ failure and still needs this handling: Two owners who expect the same
+ file, but one owner only knows the SHA1 while the other only knows SHA256. */
+ HashStringList superhsl;
+ for (pkgAcquire::Queue::QItem::owner_iterator O = Owners.begin(); O != Owners.end(); ++O)
+ {
+ HashStringList const hsl = (*O)->GetExpectedHashes();
+ if (hsl.usable() == false)
+ continue;
+ if (superhsl.usable() == false)
+ superhsl = hsl;
+ else
+ {
+ // we merge both lists - if we find disagreement send no hashes
+ HashStringList::const_iterator hs = hsl.begin();
+ for (; hs != hsl.end(); ++hs)
+ if (superhsl.push_back(*hs) == false)
+ break;
+ if (hs != hsl.end())
+ {
+ superhsl.clear();
+ break;
+ }
+ }
+ }
+ return superhsl;
+}
+ /*}}}*/
+APT_PURE unsigned long long pkgAcquire::Queue::QItem::GetMaximumSize() const /*{{{*/
+{
+ unsigned long long Maximum = std::numeric_limits<unsigned long long>::max();
+ for (auto const &O: Owners)
+ {
+ if (O->FileSize == 0)
+ continue;
+ Maximum = std::min(Maximum, O->FileSize);
+ }
+ if (Maximum == std::numeric_limits<unsigned long long>::max())
+ return 0;
+ return Maximum;
+}
+ /*}}}*/
+APT_PURE int pkgAcquire::Queue::QItem::GetPriority() const /*{{{*/
+{
+ int Priority = 0;
+ for (auto const &O: Owners)
+ Priority = std::max(Priority, O->Priority());
+
+ return Priority;
+}
+ /*}}}*/
+void pkgAcquire::Queue::QItem::SyncDestinationFiles() const /*{{{*/
+{
+ /* ensure that the first owner has the best partial file of all and
+ the rest have (potentially dangling) symlinks to it so that
+ everything (like progress reporting) finds it easily */
+ std::string superfile = Owner->DestFile;
+ off_t supersize = 0;
+ for (pkgAcquire::Queue::QItem::owner_iterator O = Owners.begin(); O != Owners.end(); ++O)
+ {
+ if ((*O)->DestFile == superfile)
+ continue;
+ struct stat file;
+ if (lstat((*O)->DestFile.c_str(),&file) == 0)
+ {
+ if ((file.st_mode & S_IFREG) == 0)
+ RemoveFile("SyncDestinationFiles", (*O)->DestFile);
+ else if (supersize < file.st_size)
+ {
+ supersize = file.st_size;
+ RemoveFile("SyncDestinationFiles", superfile);
+ rename((*O)->DestFile.c_str(), superfile.c_str());
+ }
+ else
+ RemoveFile("SyncDestinationFiles", (*O)->DestFile);
+ if (symlink(superfile.c_str(), (*O)->DestFile.c_str()) != 0)
+ {
+ ; // not a problem per-se and no real alternative
+ }
+ }
+ }
+}
+ /*}}}*/
+std::string pkgAcquire::Queue::QItem::Custom600Headers() const /*{{{*/
+{
+ /* The others are relatively easy to merge, but this one?
+ Lets not merge and see how far we can run with it…
+ Likely, nobody will ever notice as all the items will
+ be of the same class and hence generate the same headers. */
+ return Owner->Custom600Headers();
+}
+ /*}}}*/
+
+// AcquireStatus::pkgAcquireStatus - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgAcquireStatus::pkgAcquireStatus() : d(NULL), Percent(-1), Update(true), MorePulses(false)
+{
+ Start();
+}
+ /*}}}*/
+// AcquireStatus::Pulse - Called periodically /*{{{*/
+// ---------------------------------------------------------------------
+/* This computes some internal state variables for the derived classes to
+ use. It generates the current downloaded bytes and total bytes to download
+ as well as the current CPS estimate. */
+bool pkgAcquireStatus::Pulse(pkgAcquire *Owner)
+{
+ TotalBytes = 0;
+ CurrentBytes = 0;
+ TotalItems = 0;
+ CurrentItems = 0;
+
+ // Compute the total number of bytes to fetch
+ unsigned int Unknown = 0;
+ unsigned int Count = 0;
+ bool ExpectAdditionalItems = false;
+ for (pkgAcquire::ItemCIterator I = Owner->ItemsBegin();
+ I != Owner->ItemsEnd();
+ ++I, ++Count)
+ {
+ TotalItems++;
+ if ((*I)->Status == pkgAcquire::Item::StatDone)
+ ++CurrentItems;
+
+ // do we expect to acquire more files than we know of yet?
+ if ((*I)->ExpectedAdditionalItems > 0)
+ ExpectAdditionalItems = true;
+
+ TotalBytes += (*I)->FileSize;
+ if ((*I)->Complete == true)
+ CurrentBytes += (*I)->FileSize;
+ if ((*I)->FileSize == 0 && (*I)->Complete == false)
+ ++Unknown;
+ }
+
+ // Compute the current completion
+ unsigned long long ResumeSize = 0;
+ for (pkgAcquire::Worker *I = Owner->WorkersBegin(); I != 0;
+ I = Owner->WorkerStep(I))
+ {
+ if (I->CurrentItem != 0 && I->CurrentItem->Owner->Complete == false)
+ {
+ CurrentBytes += I->CurrentSize;
+ ResumeSize += I->ResumePoint;
+
+ // Files with unknown size always have 100% completion
+ if (I->CurrentItem->Owner->FileSize == 0 &&
+ I->CurrentItem->Owner->Complete == false)
+ TotalBytes += I->CurrentSize;
+ }
+ }
+
+ // Normalize the figures and account for unknown size downloads
+ if (TotalBytes <= 0)
+ TotalBytes = 1;
+ if (Unknown == Count)
+ TotalBytes = Unknown;
+
+ // Wha?! Is not supposed to happen.
+ if (CurrentBytes > TotalBytes)
+ CurrentBytes = TotalBytes;
+
+ // Compute the CPS
+ struct timeval NewTime;
+ gettimeofday(&NewTime,0);
+ if ((NewTime.tv_sec - Time.tv_sec == 6 && NewTime.tv_usec > Time.tv_usec) ||
+ NewTime.tv_sec - Time.tv_sec > 6)
+ {
+ double Delta = NewTime.tv_sec - Time.tv_sec +
+ (NewTime.tv_usec - Time.tv_usec)/1000000.0;
+
+ // Compute the CPS value
+ if (Delta < 0.01)
+ CurrentCPS = 0;
+ else
+ CurrentCPS = ((CurrentBytes - ResumeSize) - LastBytes)/Delta;
+ LastBytes = CurrentBytes - ResumeSize;
+ ElapsedTime = (unsigned long long)Delta;
+ Time = NewTime;
+ }
+
+ double const OldPercent = Percent;
+ // calculate the percentage, if we have too little data assume 1%
+ if (ExpectAdditionalItems)
+ Percent = 0;
+ else
+ // use both files and bytes because bytes can be unreliable
+ Percent = (0.8 * (CurrentBytes/float(TotalBytes)*100.0) +
+ 0.2 * (CurrentItems/float(TotalItems)*100.0));
+
+ // debug
+ if (_config->FindB("Debug::acquire::progress", false) == true)
+ {
+ std::clog
+ << "["
+ << std::setw(5) << std::setprecision(4) << std::showpoint << Percent
+ << "]"
+ << " Bytes: "
+ << SizeToStr(CurrentBytes) << " / " << SizeToStr(TotalBytes)
+ << " # Files: "
+ << CurrentItems << " / " << TotalItems
+ << std::endl;
+ }
+
+ double const DiffPercent = Percent - OldPercent;
+ if (DiffPercent < 0.001 && _config->FindB("Acquire::Progress::Diffpercent", false) == true)
+ return true;
+
+ int fd = _config->FindI("APT::Status-Fd",-1);
+ if(fd > 0)
+ {
+ ostringstream status;
+
+ char msg[200];
+ long i = CurrentItems < TotalItems ? CurrentItems + 1 : CurrentItems;
+ unsigned long long ETA = 0;
+ if(CurrentCPS > 0)
+ ETA = (TotalBytes - CurrentBytes) / CurrentCPS;
+
+ // only show the ETA if it makes sense
+ if (ETA > 0 && ETA < 172800 /* two days */ )
+ snprintf(msg,sizeof(msg), _("Retrieving file %li of %li (%s remaining)"), i, TotalItems, TimeToStr(ETA).c_str());
+ else
+ snprintf(msg,sizeof(msg), _("Retrieving file %li of %li"), i, TotalItems);
+
+ // build the status str
+ std::ostringstream str;
+ str.imbue(std::locale::classic());
+ str.precision(4);
+ str << "dlstatus" << ':' << std::fixed << i << ':' << Percent << ':' << msg << '\n';
+ auto const dlstatus = str.str();
+ FileFd::Write(fd, dlstatus.data(), dlstatus.size());
+ }
+
+ return true;
+}
+ /*}}}*/
+// AcquireStatus::Start - Called when the download is started /*{{{*/
+// ---------------------------------------------------------------------
+/* We just reset the counters */
+void pkgAcquireStatus::Start()
+{
+ gettimeofday(&Time,0);
+ gettimeofday(&StartTime,0);
+ LastBytes = 0;
+ CurrentCPS = 0;
+ CurrentBytes = 0;
+ TotalBytes = 0;
+ FetchedBytes = 0;
+ ElapsedTime = 0;
+ TotalItems = 0;
+ CurrentItems = 0;
+}
+ /*}}}*/
+// AcquireStatus::Stop - Finished downloading /*{{{*/
+// ---------------------------------------------------------------------
+/* This accurately computes the elapsed time and the total overall CPS. */
+void pkgAcquireStatus::Stop()
+{
+ // Compute the CPS and elapsed time
+ struct timeval NewTime;
+ gettimeofday(&NewTime,0);
+
+ double Delta = NewTime.tv_sec - StartTime.tv_sec +
+ (NewTime.tv_usec - StartTime.tv_usec)/1000000.0;
+
+ // Compute the CPS value
+ if (Delta < 0.01)
+ CurrentCPS = 0;
+ else
+ CurrentCPS = FetchedBytes/Delta;
+ LastBytes = CurrentBytes;
+ ElapsedTime = (unsigned long long)Delta;
+}
+ /*}}}*/
+// AcquireStatus::Fetched - Called when a byte set has been fetched /*{{{*/
+// ---------------------------------------------------------------------
+/* This is used to get accurate final transfer rate reporting. */
+void pkgAcquireStatus::Fetched(unsigned long long Size,unsigned long long Resume)
+{
+ FetchedBytes += Size - Resume;
+}
+ /*}}}*/
+
+pkgAcquire::UriIterator::UriIterator(pkgAcquire::Queue *Q) : d(NULL), CurQ(Q), CurItem(0)
+{
+ while (CurItem == 0 && CurQ != 0)
+ {
+ CurItem = CurQ->Items;
+ CurQ = CurQ->Next;
+ }
+}
+
+APT_CONST pkgAcquire::UriIterator::~UriIterator() {}
+APT_CONST pkgAcquire::MethodConfig::~MethodConfig() {}
+APT_CONST pkgAcquireStatus::~pkgAcquireStatus() {}
diff --git a/apt-pkg/acquire.h b/apt-pkg/acquire.h
new file mode 100644
index 000000000..5f1212338
--- /dev/null
+++ b/apt-pkg/acquire.h
@@ -0,0 +1,841 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Acquire - File Acquiration
+
+ This module contains the Acquire system. It is responsible for bringing
+ files into the local pathname space. It deals with URIs for files and
+ URI handlers responsible for downloading or finding the URIs.
+
+ Each file to download is represented by an Acquire::Item class subclassed
+ into a specialization. The Item class can add itself to several URI
+ acquire queues each prioritized by the download scheduler. When the
+ system is run the proper URI handlers are spawned and the acquire
+ queues are fed into the handlers by the schedular until the queues are
+ empty. This allows for an Item to be downloaded from an alternate source
+ if the first try turns out to fail. It also allows concurrent downloading
+ of multiple items from multiple sources as well as dynamic balancing
+ of load between the sources.
+
+ Schedualing of downloads is done on a first ask first get basis. This
+ preserves the order of the download as much as possible. And means the
+ fastest source will tend to process the largest number of files.
+
+ Internal methods and queues for performing gzip decompression,
+ md5sum hashing and file copying are provided to allow items to apply
+ a number of transformations to the data files they are working with.
+
+ ##################################################################### */
+ /*}}}*/
+
+/** \defgroup acquire Acquire system {{{
+ *
+ * \brief The Acquire system is responsible for retrieving files from
+ * local or remote URIs and postprocessing them (for instance,
+ * verifying their authenticity). The core class in this system is
+ * pkgAcquire, which is responsible for managing the download queues
+ * during the download. There is at least one download queue for
+ * each supported protocol; protocols such as http may provide one
+ * queue per host.
+ *
+ * Each file to download is represented by a subclass of
+ * pkgAcquire::Item. The files add themselves to the download
+ * queue(s) by providing their URI information to
+ * pkgAcquire::Item::QueueURI, which calls pkgAcquire::Enqueue.
+ *
+ * Once the system is set up, the Run method will spawn subprocesses
+ * to handle the enqueued URIs; the scheduler will then take items
+ * from the queues and feed them into the handlers until the queues
+ * are empty.
+ *
+ * \todo Acquire supports inserting an object into several queues at
+ * once, but it is not clear what its behavior in this case is, and
+ * no subclass of pkgAcquire::Item seems to actually use this
+ * capability.
+ */ /*}}}*/
+
+/** \addtogroup acquire
+ *
+ * @{
+ *
+ * \file acquire.h
+ */
+
+#ifndef PKGLIB_ACQUIRE_H
+#define PKGLIB_ACQUIRE_H
+
+#include <apt-pkg/macros.h>
+#include <apt-pkg/weakptr.h>
+#include <apt-pkg/hashes.h>
+
+#include <string>
+#include <vector>
+
+#include <stddef.h>
+#include <sys/time.h>
+#include <sys/select.h>
+
+#ifndef APT_10_CLEANER_HEADERS
+#include <unistd.h>
+#endif
+
+#ifndef APT_8_CLEANER_HEADERS
+using std::vector;
+using std::string;
+#endif
+
+class pkgAcquireStatus;
+
+/** \brief The core download scheduler. {{{
+ *
+ * This class represents an ongoing download. It manages the lists
+ * of active and pending downloads and handles setting up and tearing
+ * down download-related structures.
+ *
+ * \todo Why all the protected data items and methods?
+ */
+class pkgAcquire
+{
+ private:
+ /** \brief FD of the Lock file we acquire in Setup (if any) */
+ int LockFD;
+ /** \brief dpointer placeholder (for later in case we need it) */
+ void * const d;
+
+ public:
+
+ class Item;
+ class Queue;
+ class Worker;
+ struct MethodConfig;
+ struct ItemDesc;
+ friend class Item;
+ friend class pkgAcqMetaBase;
+ friend class Queue;
+
+ typedef std::vector<Item *>::iterator ItemIterator;
+ typedef std::vector<Item *>::const_iterator ItemCIterator;
+
+ protected:
+
+ /** \brief A list of items to download.
+ *
+ * This is built monotonically as items are created and only
+ * emptied when the download shuts down.
+ */
+ std::vector<Item *> Items;
+
+ /** \brief The head of the list of active queues.
+ *
+ * \todo why a hand-managed list of queues instead of std::list or
+ * std::set?
+ */
+ Queue *Queues;
+
+ /** \brief The head of the list of active workers.
+ *
+ * \todo why a hand-managed list of workers instead of std::list
+ * or std::set?
+ */
+ Worker *Workers;
+
+ /** \brief The head of the list of acquire method configurations.
+ *
+ * Each protocol (http, ftp, gzip, etc) via which files can be
+ * fetched can have a representation in this list. The
+ * configuration data is filled in by parsing the 100 Capabilities
+ * string output by a method on startup (see
+ * pkgAcqMethod::pkgAcqMethod and pkgAcquire::GetConfig).
+ *
+ * \todo why a hand-managed config dictionary instead of std::map?
+ */
+ MethodConfig *Configs;
+
+ /** \brief The progress indicator for this download. */
+ pkgAcquireStatus *Log;
+
+ /** \brief The number of files which are to be fetched. */
+ unsigned long ToFetch;
+
+ // Configurable parameters for the scheduler
+
+ /** \brief Represents the queuing strategy for remote URIs. */
+ enum QueueStrategy {
+ /** \brief Generate one queue for each protocol/host combination; downloads from
+ * multiple hosts can proceed in parallel.
+ */
+ QueueHost,
+ /** \brief Generate a single queue for each protocol; serialize
+ * downloads from multiple hosts.
+ */
+ QueueAccess} QueueMode;
+
+ /** \brief If \b true, debugging information will be dumped to std::clog. */
+ bool const Debug;
+ /** \brief If \b true, a download is currently in progress. */
+ bool Running;
+
+ /** \brief Add the given item to the list of items. */
+ void Add(Item *Item);
+
+ /** \brief Remove the given item from the list of items. */
+ void Remove(Item *Item);
+
+ /** \brief Add the given worker to the list of workers. */
+ void Add(Worker *Work);
+
+ /** \brief Remove the given worker from the list of workers. */
+ void Remove(Worker *Work);
+
+ /** \brief Insert the given fetch request into the appropriate queue.
+ *
+ * \param Item The URI to download and the item to download it
+ * for. Copied by value into the queue; no reference to Item is
+ * retained.
+ */
+ void Enqueue(ItemDesc &Item);
+
+ /** \brief Remove all fetch requests for this item from all queues. */
+ void Dequeue(Item *Item);
+
+ /** \brief Determine the fetch method and queue of a URI.
+ *
+ * \param URI The URI to fetch.
+ *
+ * \param[out] Config A location in which to place the method via
+ * which the URI is to be fetched.
+ *
+ * \return the string-name of the queue in which a fetch request
+ * for the given URI should be placed.
+ */
+ std::string QueueName(std::string URI,MethodConfig const *&Config);
+
+ /** \brief Build up the set of file descriptors upon which select() should
+ * block.
+ *
+ * The default implementation inserts the file descriptors
+ * corresponding to active downloads.
+ *
+ * \param[out] Fd The largest file descriptor in the generated sets.
+ *
+ * \param[out] RSet The set of file descriptors that should be
+ * watched for input.
+ *
+ * \param[out] WSet The set of file descriptors that should be
+ * watched for output.
+ */
+ virtual void SetFds(int &Fd,fd_set *RSet,fd_set *WSet);
+
+ /** Handle input from and output to file descriptors which select()
+ * has determined are ready. The default implementation
+ * dispatches to all active downloads.
+ *
+ * \param RSet The set of file descriptors that are ready for
+ * input.
+ *
+ * \param WSet The set of file descriptors that are ready for
+ * output.
+ *
+ * \return false if there is an error condition on one of the fds
+ */
+ bool RunFdsSane(fd_set *RSet,fd_set *WSet);
+
+ // just here for compatibility, needs to be removed on the next
+ // ABI/API break. RunFdsSane() is what should be used as it
+ // returns if there is an error condition on one of the fds
+ virtual void RunFds(fd_set *RSet,fd_set *WSet);
+
+ /** \brief Check for idle queues with ready-to-fetch items.
+ *
+ * Called by pkgAcquire::Queue::Done each time an item is dequeued
+ * but remains on some queues; i.e., another queue should start
+ * fetching it.
+ */
+ void Bump();
+
+ public:
+
+ /** \brief Retrieve information about a fetch method by name.
+ *
+ * \param Access The name of the method to look up.
+ *
+ * \return the method whose name is Access, or \b NULL if no such method exists.
+ */
+ MethodConfig *GetConfig(std::string Access);
+
+ /** \brief Provides information on how a download terminated. */
+ enum RunResult {
+ /** \brief All files were fetched successfully. */
+ Continue,
+
+ /** \brief Some files failed to download. */
+ Failed,
+
+ /** \brief The download was cancelled by the user (i.e., #Log's
+ * pkgAcquireStatus::Pulse() method returned \b false).
+ */
+ Cancelled};
+
+ /** \brief Download all the items that have been Add()ed to this
+ * download process.
+ *
+ * This method will block until the download completes, invoking
+ * methods on #Log to report on the progress of the download.
+ *
+ * \param PulseInterval The method pkgAcquireStatus::Pulse will be
+ * invoked on #Log at intervals of PulseInterval milliseconds.
+ *
+ * \return the result of the download.
+ */
+ RunResult Run(int PulseInterval=500000);
+
+ /** \brief Remove all items from this download process, terminate
+ * all download workers, and empty all queues.
+ */
+ void Shutdown();
+
+ /** \brief Get the first Worker object.
+ *
+ * \return the first active worker in this download process.
+ */
+ inline Worker *WorkersBegin() {return Workers;};
+
+ /** \brief Advance to the next Worker object.
+ *
+ * \return the worker immediately following I, or \b NULL if none
+ * exists.
+ */
+ Worker *WorkerStep(Worker *I) APT_PURE;
+
+ /** \brief Get the head of the list of items. */
+ inline ItemIterator ItemsBegin() {return Items.begin();};
+ inline ItemCIterator ItemsBegin() const {return Items.begin();};
+
+ /** \brief Get the end iterator of the list of items. */
+ inline ItemIterator ItemsEnd() {return Items.end();};
+ inline ItemCIterator ItemsEnd() const {return Items.end();};
+
+ // Iterate over queued Item URIs
+ class UriIterator;
+ /** \brief Get the head of the list of enqueued item URIs.
+ *
+ * This iterator will step over every element of every active
+ * queue.
+ */
+ UriIterator UriBegin();
+ /** \brief Get the end iterator of the list of enqueued item URIs. */
+ UriIterator UriEnd();
+
+ /** Deletes each entry in the given directory that is not being
+ * downloaded by this object. For instance, when downloading new
+ * list files, calling Clean() will delete the old ones.
+ *
+ * \param Dir The directory to be cleaned out.
+ *
+ * \return \b true if the directory exists and is readable.
+ */
+ bool Clean(std::string Dir);
+
+ /** \return the total size in bytes of all the items included in
+ * this download.
+ */
+ unsigned long long TotalNeeded();
+
+ /** \return the size in bytes of all non-local items included in
+ * this download.
+ */
+ unsigned long long FetchNeeded();
+
+ /** \return the amount of data to be fetched that is already
+ * present on the filesystem.
+ */
+ unsigned long long PartialPresent();
+
+ /** \brief Delayed constructor
+ *
+ * \param Progress indicator associated with this download or
+ * \b NULL for none. This object is not owned by the
+ * download process and will not be deleted when the pkgAcquire
+ * object is destroyed. Naturally, it should live for at least as
+ * long as the pkgAcquire object does.
+ * \param Lock defines a lock file that should be acquired to ensure
+ * only one Acquire class is in action at the time or an empty string
+ * if no lock file should be used. If set also all needed directories
+ * will be created.
+ */
+ APT_DEPRECATED_MSG("Use constructors, .SetLog and .GetLock as needed") bool Setup(pkgAcquireStatus *Progress = NULL, std::string const &Lock = "");
+
+ void SetLog(pkgAcquireStatus *Progress) { Log = Progress; }
+
+ /** \brief acquire lock and perform directory setup
+ *
+ * \param Lock defines a lock file that should be acquired to ensure
+ * only one Acquire class is in action at the time or an empty string
+ * if no lock file should be used. If set also all needed directories
+ * will be created and setup.
+ */
+ bool GetLock(std::string const &Lock);
+
+ /** \brief Construct a new pkgAcquire. */
+ explicit pkgAcquire(pkgAcquireStatus *Log);
+ pkgAcquire();
+
+ /** \brief Destroy this pkgAcquire object.
+ *
+ * Destroys all queue, method, and item objects associated with
+ * this download.
+ */
+ virtual ~pkgAcquire();
+
+ private:
+ APT_HIDDEN void Initialize();
+};
+
+/** \brief Represents a single download source from which an item
+ * should be downloaded.
+ *
+ * An item may have several associated ItemDescs over its lifetime.
+ */
+struct pkgAcquire::ItemDesc : public WeakPointable
+{
+ /** \brief URI from which to download this item. */
+ std::string URI;
+ /** \brief description of this item. */
+ std::string Description;
+ /** \brief shorter description of this item. */
+ std::string ShortDesc;
+ /** \brief underlying item which is to be downloaded. */
+ Item *Owner;
+};
+ /*}}}*/
+/** \brief A single download queue in a pkgAcquire object. {{{
+ *
+ * \todo Why so many protected values?
+ */
+class pkgAcquire::Queue
+{
+ friend class pkgAcquire;
+ friend class pkgAcquire::UriIterator;
+ friend class pkgAcquire::Worker;
+
+ /** \brief dpointer placeholder (for later in case we need it) */
+ void * const d;
+
+ /** \brief The next queue in the pkgAcquire object's list of queues. */
+ Queue *Next;
+
+ protected:
+
+ /** \brief A single item placed in this queue. */
+ struct QItem : public ItemDesc
+ {
+ /** \brief The next item in the queue. */
+ QItem *Next;
+ /** \brief The worker associated with this item, if any. */
+ pkgAcquire::Worker *Worker;
+
+ /** \brief The underlying items interested in the download */
+ std::vector<Item*> Owners;
+
+ typedef std::vector<Item*>::const_iterator owner_iterator;
+
+ /** \brief Assign the ItemDesc portion of this QItem from
+ * another ItemDesc
+ */
+ void operator =(pkgAcquire::ItemDesc const &I)
+ {
+ URI = I.URI;
+ Description = I.Description;
+ ShortDesc = I.ShortDesc;
+ Owners.clear();
+ Owners.push_back(I.Owner);
+ Owner = I.Owner;
+ };
+
+ /** @return the sum of all expected hashes by all owners */
+ HashStringList GetExpectedHashes() const;
+
+ /** @return smallest maximum size of all owners */
+ unsigned long long GetMaximumSize() const;
+
+ /** \brief get partial files in order */
+ void SyncDestinationFiles() const;
+
+ /** @return the custom headers to use for this item */
+ std::string Custom600Headers() const;
+ /** @return the maximum priority of this item */
+ int APT_HIDDEN GetPriority() const;
+ };
+
+ /** \brief The name of this queue. */
+ std::string Name;
+
+ /** \brief The head of the list of items contained in this queue.
+ *
+ * \todo why a by-hand list instead of an STL structure?
+ */
+ QItem *Items;
+
+ /** \brief The head of the list of workers associated with this queue.
+ *
+ * \todo This is plural because support exists in Queue for
+ * multiple workers. However, it does not appear that there is
+ * any way to actually associate more than one worker with a
+ * queue.
+ *
+ * \todo Why not just use a std::set?
+ */
+ pkgAcquire::Worker *Workers;
+
+ /** \brief the download scheduler with which this queue is associated. */
+ pkgAcquire *Owner;
+
+ /** \brief The number of entries in this queue that are currently
+ * being downloaded.
+ */
+ signed long PipeDepth;
+
+ /** \brief The maximum number of entries that this queue will
+ * attempt to download at once.
+ */
+ unsigned long MaxPipeDepth;
+
+ public:
+
+ /** \brief Insert the given fetch request into this queue.
+ *
+ * \return \b true if the queuing was successful. May return
+ * \b false if the Item is already in the queue
+ */
+ bool Enqueue(ItemDesc &Item);
+
+ /** \brief Remove all fetch requests for the given item from this queue.
+ *
+ * \return \b true if at least one request was removed from the queue.
+ */
+ bool Dequeue(Item *Owner);
+
+ /** \brief Locate an item in this queue.
+ *
+ * \param URI A URI to match against.
+ * \param Owner A pkgAcquire::Worker to match against.
+ *
+ * \return the first item in the queue whose URI is #URI and that
+ * is being downloaded by #Owner.
+ */
+ QItem *FindItem(std::string URI,pkgAcquire::Worker *Owner) APT_PURE;
+
+ /** Presumably this should start downloading an item?
+ *
+ * \todo Unimplemented. Implement it or remove?
+ */
+ bool ItemStart(QItem *Itm,unsigned long long Size);
+
+ /** \brief Remove the given item from this queue and set its state
+ * to pkgAcquire::Item::StatDone.
+ *
+ * If this is the only queue containing the item, the item is also
+ * removed from the main queue by calling pkgAcquire::Dequeue.
+ *
+ * \param Itm The item to remove.
+ *
+ * \return \b true if no errors are encountered.
+ */
+ bool ItemDone(QItem *Itm);
+
+ /** \brief Start the worker process associated with this queue.
+ *
+ * If a worker process is already associated with this queue,
+ * this is equivalent to calling Cycle().
+ *
+ * \return \b true if the startup was successful.
+ */
+ bool Startup();
+
+ /** \brief Shut down the worker process associated with this queue.
+ *
+ * \param Final If \b true, then the process is stopped unconditionally.
+ * Otherwise, it is only stopped if it does not need cleanup
+ * as indicated by the pkgAcqMethod::NeedsCleanup member of
+ * its configuration.
+ *
+ * \return \b true.
+ */
+ bool Shutdown(bool Final);
+
+ /** \brief Send idle items to the worker process.
+ *
+ * Fills up the pipeline by inserting idle items into the worker's queue.
+ */
+ bool Cycle();
+
+ /** \brief Check for items that could be enqueued.
+ *
+ * Call this after an item placed in multiple queues has gone from
+ * the pkgAcquire::Item::StatFetching state to the
+ * pkgAcquire::Item::StatIdle state, to possibly refill an empty queue.
+ * This is an alias for Cycle().
+ *
+ * \todo Why both this and Cycle()? Are they expected to be
+ * different someday?
+ */
+ void Bump();
+
+ /** \brief Create a new Queue.
+ *
+ * \param Name The name of the new queue.
+ * \param Owner The download process that owns the new queue.
+ */
+ Queue(std::string const &Name,pkgAcquire * const Owner);
+
+ /** Shut down all the worker processes associated with this queue
+ * and empty the queue.
+ */
+ virtual ~Queue();
+};
+ /*}}}*/
+/** \brief Iterates over all the URIs being fetched by a pkgAcquire object. {{{*/
+class pkgAcquire::UriIterator
+{
+ /** \brief dpointer placeholder (for later in case we need it) */
+ void * const d;
+
+ /** The next queue to iterate over. */
+ pkgAcquire::Queue *CurQ;
+ /** The item that we currently point at. */
+ pkgAcquire::Queue::QItem *CurItem;
+
+ public:
+
+ inline void operator ++() {operator ++(0);};
+
+ void operator ++(int)
+ {
+ CurItem = CurItem->Next;
+ while (CurItem == 0 && CurQ != 0)
+ {
+ CurItem = CurQ->Items;
+ CurQ = CurQ->Next;
+ }
+ };
+
+ inline pkgAcquire::Queue::QItem const *operator ->() const {return CurItem;};
+ inline bool operator !=(UriIterator const &rhs) const {return rhs.CurQ != CurQ || rhs.CurItem != CurItem;};
+ inline bool operator ==(UriIterator const &rhs) const {return rhs.CurQ == CurQ && rhs.CurItem == CurItem;};
+
+ /** \brief Create a new UriIterator.
+ *
+ * \param Q The queue over which this UriIterator should iterate.
+ */
+ explicit UriIterator(pkgAcquire::Queue *Q);
+ virtual ~UriIterator();
+};
+ /*}}}*/
+/** \brief Information about the properties of a single acquire method. {{{*/
+struct pkgAcquire::MethodConfig
+{
+ /** \brief dpointer placeholder (for later in case we need it) */
+ void * const d;
+
+ /** \brief The next link on the acquire method list.
+ *
+ * \todo Why not an STL container?
+ */
+ MethodConfig *Next;
+
+ /** \brief The name of this acquire method (e.g., http). */
+ std::string Access;
+
+ /** \brief The implementation version of this acquire method. */
+ std::string Version;
+
+ /** \brief If \b true, only one download queue should be created for this
+ * method.
+ */
+ bool SingleInstance;
+
+ /** \brief If \b true, this method supports pipelined downloading. */
+ bool Pipeline;
+
+ /** \brief If \b true, the worker process should send the entire
+ * APT configuration tree to the fetch subprocess when it starts
+ * up.
+ */
+ bool SendConfig;
+
+ /** \brief If \b true, this fetch method does not require network access;
+ * all files are to be acquired from the local disk.
+ */
+ bool LocalOnly;
+
+ /** \brief If \b true, the subprocess has to carry out some cleanup
+ * actions before shutting down.
+ *
+ * For instance, the cdrom method needs to unmount the CD after it
+ * finishes.
+ */
+ bool NeedsCleanup;
+
+ /** \brief If \b true, this fetch method acquires files from removable media. */
+ bool Removable;
+
+ /** \brief Set up the default method parameters.
+ *
+ * All fields are initialized to NULL, "", or \b false as
+ * appropriate.
+ */
+ MethodConfig();
+
+ virtual ~MethodConfig();
+};
+ /*}}}*/
+/** \brief A monitor object for downloads controlled by the pkgAcquire class. {{{
+ *
+ * \todo Why protected members?
+ */
+class pkgAcquireStatus
+{
+ /** \brief dpointer placeholder (for later in case we need it) */
+ void * const d;
+
+ protected:
+
+ /** \brief The last time at which this monitor object was updated. */
+ struct timeval Time;
+
+ /** \brief The time at which the download started. */
+ struct timeval StartTime;
+
+ /** \brief The number of bytes fetched as of the previous call to
+ * pkgAcquireStatus::Pulse, including local items.
+ */
+ unsigned long long LastBytes;
+
+ /** \brief The current rate of download as of the most recent call
+ * to pkgAcquireStatus::Pulse, in bytes per second.
+ */
+ unsigned long long CurrentCPS;
+
+ /** \brief The number of bytes fetched as of the most recent call
+ * to pkgAcquireStatus::Pulse, including local items.
+ */
+ unsigned long long CurrentBytes;
+
+ /** \brief The total number of bytes that need to be fetched.
+ *
+ * \warning This member is inaccurate, as new items might be
+ * enqueued while the download is in progress!
+ */
+ unsigned long long TotalBytes;
+
+ /** \brief The total number of bytes accounted for by items that
+ * were successfully fetched.
+ */
+ unsigned long long FetchedBytes;
+
+ /** \brief The amount of time that has elapsed since the download
+ * started.
+ */
+ unsigned long long ElapsedTime;
+
+ /** \brief The total number of items that need to be fetched.
+ *
+ * \warning This member is inaccurate, as new items might be
+ * enqueued while the download is in progress!
+ */
+ unsigned long TotalItems;
+
+ /** \brief The number of items that have been successfully downloaded. */
+ unsigned long CurrentItems;
+
+ /** \brief The estimated percentage of the download (0-100)
+ */
+ double Percent;
+
+ public:
+
+ /** \brief If \b true, the download scheduler should call Pulse()
+ * at the next available opportunity.
+ */
+ bool Update;
+
+ /** \brief If \b true, extra Pulse() invocations will be performed.
+ *
+ * With this option set, Pulse() will be called every time that a
+ * download item starts downloading, finishes downloading, or
+ * terminates with an error.
+ */
+ bool MorePulses;
+
+ /** \brief Invoked when a local or remote file has been completely fetched.
+ *
+ * \param Size The size of the file fetched.
+ *
+ * \param ResumePoint How much of the file was already fetched.
+ */
+ virtual void Fetched(unsigned long long Size,unsigned long long ResumePoint);
+
+ /** \brief Invoked when the user should be prompted to change the
+ * inserted removable media.
+ *
+ * This method should not return until the user has confirmed to
+ * the user interface that the media change is complete.
+ *
+ * \param Media The name of the media type that should be changed.
+ *
+ * \param Drive The identifying name of the drive whose media
+ * should be changed.
+ *
+ * \return \b true if the user confirms the media change, \b
+ * false if it is cancelled.
+ *
+ * \todo This is a horrible blocking monster; it should be CPSed
+ * with prejudice.
+ */
+ virtual bool MediaChange(std::string Media,std::string Drive) = 0;
+
+ /** \brief Invoked when an item is confirmed to be up-to-date.
+
+ * For instance, when an HTTP download is informed that the file on
+ * the server was not modified.
+ */
+ virtual void IMSHit(pkgAcquire::ItemDesc &/*Itm*/) {};
+
+ /** \brief Invoked when some of an item's data is fetched. */
+ virtual void Fetch(pkgAcquire::ItemDesc &/*Itm*/) {};
+
+ /** \brief Invoked when an item is successfully and completely fetched. */
+ virtual void Done(pkgAcquire::ItemDesc &/*Itm*/) {};
+
+ /** \brief Invoked when the process of fetching an item encounters
+ * a fatal error.
+ */
+ virtual void Fail(pkgAcquire::ItemDesc &/*Itm*/) {};
+
+ /** \brief Periodically invoked while the Acquire process is underway.
+ *
+ * Subclasses should first call pkgAcquireStatus::Pulse(), then
+ * update their status output. The download process is blocked
+ * while Pulse() is being called.
+ *
+ * \return \b false if the user asked to cancel the whole Acquire process.
+ *
+ * \see pkgAcquire::Run
+ */
+ virtual bool Pulse(pkgAcquire *Owner);
+
+ /** \brief Invoked when the Acquire process starts running. */
+ virtual void Start();
+
+ /** \brief Invoked when the Acquire process stops running. */
+ virtual void Stop();
+
+ /** \brief Initialize all counters to 0 and the time to the current time. */
+ pkgAcquireStatus();
+ virtual ~pkgAcquireStatus();
+};
+ /*}}}*/
+/** @} */
+
+#endif
diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc
new file mode 100644
index 000000000..95e756c15
--- /dev/null
+++ b/apt-pkg/algorithms.cc
@@ -0,0 +1,1420 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: algorithms.cc,v 1.44 2002/11/28 18:49:16 jgg Exp $
+/* ######################################################################
+
+ Algorithms - A set of misc algorithms
+
+ The pkgProblemResolver class has become insanely complex and
+ very sophisticated, it handles every test case I have thrown at it
+ to my satisfaction. Understanding exactly why all the steps the class
+ does are required is difficult and changing though not very risky
+ may result in other cases not working.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/algorithms.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/edsp.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/packagemanager.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/prettyprinters.h>
+#include <apt-pkg/dpkgpm.h>
+
+#include <string.h>
+#include <string>
+#include <cstdlib>
+#include <iostream>
+#include <utility>
+
+#include <apti18n.h>
+ /*}}}*/
+using namespace std;
+
+class APT_HIDDEN pkgSimulatePrivate
+{
+public:
+ std::vector<pkgDPkgPM::Item> List;
+};
+// Simulate::Simulate - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* The legacy translations here of input Pkg iterators is obsolete,
+ this is not necessary since the pkgCaches are fully shared now. */
+pkgSimulate::pkgSimulate(pkgDepCache *Cache) : pkgPackageManager(Cache),
+ d(new pkgSimulatePrivate()), iPolicy(Cache),
+ Sim(&Cache->GetCache(),&iPolicy),
+ group(Sim)
+{
+ Sim.Init(0);
+ Flags = new unsigned char[Cache->Head().PackageCount];
+ memset(Flags,0,sizeof(*Flags)*Cache->Head().PackageCount);
+
+ // Fake a filename so as not to activate the media swapping
+ string Jnk = "SIMULATE";
+ for (unsigned int I = 0; I != Cache->Head().PackageCount; I++)
+ FileNames[I] = Jnk;
+}
+ /*}}}*/
+// Simulate::~Simulate - Destructor /*{{{*/
+pkgSimulate::~pkgSimulate()
+{
+ delete[] Flags;
+ delete d;
+}
+ /*}}}*/
+// Simulate::Describe - Describe a package /*{{{*/
+// ---------------------------------------------------------------------
+/* Parameter Current == true displays the current package version,
+ Parameter Candidate == true displays the candidate package version */
+void pkgSimulate::Describe(PkgIterator Pkg,ostream &out,bool Current,bool Candidate)
+{
+ VerIterator Ver(Sim);
+
+ out << Pkg.FullName(true);
+
+ if (Current == true)
+ {
+ Ver = Pkg.CurrentVer();
+ if (Ver.end() == false)
+ out << " [" << Ver.VerStr() << ']';
+ }
+
+ if (Candidate == true)
+ {
+ Ver = Sim[Pkg].CandidateVerIter(Sim);
+ if (Ver.end() == true)
+ return;
+
+ out << " (" << Ver.VerStr() << ' ' << Ver.RelStr() << ')';
+ }
+}
+ /*}}}*/
+// Simulate::Install - Simulate unpacking of a package /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgSimulate::Install(PkgIterator iPkg,string File)
+{
+ if (iPkg.end() || File.empty())
+ return false;
+ d->List.emplace_back(pkgDPkgPM::Item::Install, iPkg, File);
+ return true;
+}
+bool pkgSimulate::RealInstall(PkgIterator iPkg,string /*File*/)
+{
+ // Adapt the iterator
+ PkgIterator Pkg = Sim.FindPkg(iPkg.Name(), iPkg.Arch());
+ Flags[Pkg->ID] = 1;
+
+ cout << "Inst ";
+ Describe(Pkg,cout,true,true);
+ Sim.MarkInstall(Pkg,false);
+
+ // Look for broken conflicts+predepends.
+ for (PkgIterator I = Sim.PkgBegin(); I.end() == false; ++I)
+ {
+ if (Sim[I].InstallVer == 0)
+ continue;
+
+ for (DepIterator D = Sim[I].InstVerIter(Sim).DependsList(); D.end() == false;)
+ {
+ DepIterator Start;
+ DepIterator End;
+ D.GlobOr(Start,End);
+ if (Start.IsNegative() == true ||
+ End->Type == pkgCache::Dep::PreDepends)
+ {
+ if ((Sim[End] & pkgDepCache::DepGInstall) == 0)
+ {
+ cout << " [" << I.FullName(false) << " on " << Start.TargetPkg().FullName(false) << ']';
+ if (Start->Type == pkgCache::Dep::Conflicts)
+ _error->Error("Fatal, conflicts violated %s",I.FullName(false).c_str());
+ }
+ }
+ }
+ }
+
+ if (Sim.BrokenCount() != 0)
+ ShortBreaks();
+ else
+ cout << endl;
+ return true;
+}
+ /*}}}*/
+// Simulate::Configure - Simulate configuration of a Package /*{{{*/
+// ---------------------------------------------------------------------
+/* This is not an acurate simulation of relatity, we should really not
+ install the package.. For some investigations it may be necessary
+ however. */
+bool pkgSimulate::Configure(PkgIterator iPkg)
+{
+ if (iPkg.end())
+ return false;
+ d->List.emplace_back(pkgDPkgPM::Item::Configure, iPkg);
+ return true;
+}
+bool pkgSimulate::RealConfigure(PkgIterator iPkg)
+{
+ // Adapt the iterator
+ PkgIterator Pkg = Sim.FindPkg(iPkg.Name(), iPkg.Arch());
+
+ Flags[Pkg->ID] = 2;
+
+ if (Sim[Pkg].InstBroken() == true)
+ {
+ cout << "Conf " << Pkg.FullName(false) << " broken" << endl;
+
+ Sim.Update();
+
+ // Print out each package and the failed dependencies
+ for (pkgCache::DepIterator D = Sim[Pkg].InstVerIter(Sim).DependsList(); D.end() == false; ++D)
+ {
+ if (Sim.IsImportantDep(D) == false ||
+ (Sim[D] & pkgDepCache::DepInstall) != 0)
+ continue;
+
+ if (D->Type == pkgCache::Dep::Obsoletes)
+ cout << " Obsoletes:" << D.TargetPkg().FullName(false);
+ else if (D->Type == pkgCache::Dep::Conflicts)
+ cout << " Conflicts:" << D.TargetPkg().FullName(false);
+ else if (D->Type == pkgCache::Dep::DpkgBreaks)
+ cout << " Breaks:" << D.TargetPkg().FullName(false);
+ else
+ cout << " Depends:" << D.TargetPkg().FullName(false);
+ }
+ cout << endl;
+
+ _error->Error("Conf Broken %s",Pkg.FullName(false).c_str());
+ }
+ else
+ {
+ cout << "Conf ";
+ Describe(Pkg,cout,false,true);
+ }
+
+ if (Sim.BrokenCount() != 0)
+ ShortBreaks();
+ else
+ cout << endl;
+
+ return true;
+}
+ /*}}}*/
+// Simulate::Remove - Simulate the removal of a package /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgSimulate::Remove(PkgIterator iPkg,bool Purge)
+{
+ if (iPkg.end())
+ return false;
+ d->List.emplace_back(Purge ? pkgDPkgPM::Item::Purge : pkgDPkgPM::Item::Remove, iPkg);
+ return true;
+}
+bool pkgSimulate::RealRemove(PkgIterator iPkg,bool Purge)
+{
+ // Adapt the iterator
+ PkgIterator Pkg = Sim.FindPkg(iPkg.Name(), iPkg.Arch());
+ if (Pkg.end() == true)
+ {
+ std::cerr << (Purge ? "Purg" : "Remv") << " invalid package " << iPkg.FullName() << std::endl;
+ return false;
+ }
+
+ Flags[Pkg->ID] = 3;
+ Sim.MarkDelete(Pkg);
+
+ if (Purge == true)
+ cout << "Purg ";
+ else
+ cout << "Remv ";
+ Describe(Pkg,cout,true,false);
+
+ if (Sim.BrokenCount() != 0)
+ ShortBreaks();
+ else
+ cout << endl;
+
+ return true;
+}
+ /*}}}*/
+// Simulate::ShortBreaks - Print out a short line describing all breaks /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgSimulate::ShortBreaks()
+{
+ cout << " [";
+ for (PkgIterator I = Sim.PkgBegin(); I.end() == false; ++I)
+ {
+ if (Sim[I].InstBroken() == true)
+ {
+ if (Flags[I->ID] == 0)
+ cout << I.FullName(false) << ' ';
+/* else
+ cout << I.Name() << "! ";*/
+ }
+ }
+ cout << ']' << endl;
+}
+ /*}}}*/
+bool pkgSimulate::Go2(APT::Progress::PackageManager *) /*{{{*/
+{
+ if (pkgDPkgPM::ExpandPendingCalls(d->List, Cache) == false)
+ return false;
+ for (auto && I : d->List)
+ switch (I.Op)
+ {
+ case pkgDPkgPM::Item::Install:
+ if (RealInstall(I.Pkg, I.File) == false)
+ return false;
+ break;
+ case pkgDPkgPM::Item::Configure:
+ if (RealConfigure(I.Pkg) == false)
+ return false;
+ break;
+ case pkgDPkgPM::Item::Remove:
+ if (RealRemove(I.Pkg, false) == false)
+ return false;
+ break;
+ case pkgDPkgPM::Item::Purge:
+ if (RealRemove(I.Pkg, true) == false)
+ return false;
+ break;
+ case pkgDPkgPM::Item::ConfigurePending:
+ case pkgDPkgPM::Item::TriggersPending:
+ case pkgDPkgPM::Item::RemovePending:
+ case pkgDPkgPM::Item::PurgePending:
+ return _error->Error("Internal error, simulation encountered unexpected pending item");
+ }
+ return true;
+}
+ /*}}}*/
+// ApplyStatus - Adjust for non-ok packages /*{{{*/
+// ---------------------------------------------------------------------
+/* We attempt to change the state of the all packages that have failed
+ installation toward their real state. The ordering code will perform
+ the necessary calculations to deal with the problems. */
+bool pkgApplyStatus(pkgDepCache &Cache)
+{
+ pkgDepCache::ActionGroup group(Cache);
+
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ {
+ if (I->VersionList == 0)
+ continue;
+
+ // Only choice for a ReInstReq package is to reinstall
+ if (I->InstState == pkgCache::State::ReInstReq ||
+ I->InstState == pkgCache::State::HoldReInstReq)
+ {
+ if (I->CurrentVer != 0 && I.CurrentVer().Downloadable() == true)
+ Cache.MarkKeep(I, false, false);
+ else
+ {
+ // Is this right? Will dpkg choke on an upgrade?
+ if (Cache[I].CandidateVer != 0 &&
+ Cache[I].CandidateVerIter(Cache).Downloadable() == true)
+ Cache.MarkInstall(I, false, 0, false);
+ else
+ return _error->Error(_("The package %s needs to be reinstalled, "
+ "but I can't find an archive for it."),I.FullName(true).c_str());
+ }
+
+ continue;
+ }
+
+ switch (I->CurrentState)
+ {
+ /* This means installation failed somehow - it does not need to be
+ re-unpacked (probably) */
+ case pkgCache::State::UnPacked:
+ case pkgCache::State::HalfConfigured:
+ case pkgCache::State::TriggersAwaited:
+ case pkgCache::State::TriggersPending:
+ if ((I->CurrentVer != 0 && I.CurrentVer().Downloadable() == true) ||
+ I.State() != pkgCache::PkgIterator::NeedsUnpack)
+ Cache.MarkKeep(I, false, false);
+ else
+ {
+ if (Cache[I].CandidateVer != 0 &&
+ Cache[I].CandidateVerIter(Cache).Downloadable() == true)
+ Cache.MarkInstall(I, true, 0, false);
+ else
+ Cache.MarkDelete(I, false, 0, false);
+ }
+ break;
+
+ // This means removal failed
+ case pkgCache::State::HalfInstalled:
+ Cache.MarkDelete(I, false, 0, false);
+ break;
+
+ default:
+ if (I->InstState != pkgCache::State::Ok)
+ return _error->Error("The package %s is not ok and I "
+ "don't know how to fix it!",I.FullName(false).c_str());
+ }
+ }
+ return true;
+}
+ /*}}}*/
+// FixBroken - Fix broken packages /*{{{*/
+// ---------------------------------------------------------------------
+/* This autoinstalls every broken package and then runs the problem resolver
+ on the result. */
+bool pkgFixBroken(pkgDepCache &Cache)
+{
+ pkgDepCache::ActionGroup group(Cache);
+
+ // Auto upgrade all broken packages
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ if (Cache[I].NowBroken() == true)
+ Cache.MarkInstall(I, true, 0, false);
+
+ /* Fix packages that are in a NeedArchive state but don't have a
+ downloadable install version */
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ {
+ if (I.State() != pkgCache::PkgIterator::NeedsUnpack ||
+ Cache[I].Delete() == true)
+ continue;
+
+ if (Cache[I].InstVerIter(Cache).Downloadable() == false)
+ continue;
+
+ Cache.MarkInstall(I, true, 0, false);
+ }
+
+ pkgProblemResolver Fix(&Cache);
+ return Fix.Resolve(true);
+}
+ /*}}}*/
+// ProblemResolver::pkgProblemResolver - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgProblemResolver::pkgProblemResolver(pkgDepCache *pCache) : d(NULL), Cache(*pCache)
+{
+ // Allocate memory
+ unsigned long Size = Cache.Head().PackageCount;
+ Scores = new int[Size];
+ Flags = new unsigned char[Size];
+ memset(Flags,0,sizeof(*Flags)*Size);
+
+ // Set debug to true to see its decision logic
+ Debug = _config->FindB("Debug::pkgProblemResolver",false);
+}
+ /*}}}*/
+// ProblemResolver::~pkgProblemResolver - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgProblemResolver::~pkgProblemResolver()
+{
+ delete [] Scores;
+ delete [] Flags;
+}
+ /*}}}*/
+// ProblemResolver::ScoreSort - Sort the list by score /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+int pkgProblemResolver::ScoreSort(Package const *A,Package const *B)
+{
+ if (Scores[A->ID] > Scores[B->ID])
+ return -1;
+ if (Scores[A->ID] < Scores[B->ID])
+ return 1;
+ return 0;
+}
+ /*}}}*/
+// ProblemResolver::MakeScores - Make the score table /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgProblemResolver::MakeScores()
+{
+ unsigned long Size = Cache.Head().PackageCount;
+ memset(Scores,0,sizeof(*Scores)*Size);
+
+ // maps to pkgCache::State::VerPriority:
+ // Required Important Standard Optional Extra
+ int PrioMap[] = {
+ 0,
+ _config->FindI("pkgProblemResolver::Scores::Required",3),
+ _config->FindI("pkgProblemResolver::Scores::Important",2),
+ _config->FindI("pkgProblemResolver::Scores::Standard",1),
+ _config->FindI("pkgProblemResolver::Scores::Optional",-1),
+ _config->FindI("pkgProblemResolver::Scores::Extra",-2)
+ };
+ int PrioEssentials = _config->FindI("pkgProblemResolver::Scores::Essentials",100);
+ int PrioInstalledAndNotObsolete = _config->FindI("pkgProblemResolver::Scores::NotObsolete",1);
+ int DepMap[] = {
+ 0,
+ _config->FindI("pkgProblemResolver::Scores::Depends",1),
+ _config->FindI("pkgProblemResolver::Scores::PreDepends",1),
+ _config->FindI("pkgProblemResolver::Scores::Suggests",0),
+ _config->FindI("pkgProblemResolver::Scores::Recommends",1),
+ _config->FindI("pkgProblemResolver::Scores::Conflicts",-1),
+ _config->FindI("pkgProblemResolver::Scores::Replaces",0),
+ _config->FindI("pkgProblemResolver::Scores::Obsoletes",0),
+ _config->FindI("pkgProblemResolver::Scores::Breaks",-1),
+ _config->FindI("pkgProblemResolver::Scores::Enhances",0)
+ };
+ int AddProtected = _config->FindI("pkgProblemResolver::Scores::AddProtected",10000);
+ int AddEssential = _config->FindI("pkgProblemResolver::Scores::AddEssential",5000);
+
+ if (_config->FindB("Debug::pkgProblemResolver::ShowScores",false) == true)
+ clog << "Settings used to calculate pkgProblemResolver::Scores::" << endl
+ << " Required => " << PrioMap[pkgCache::State::Required] << endl
+ << " Important => " << PrioMap[pkgCache::State::Important] << endl
+ << " Standard => " << PrioMap[pkgCache::State::Standard] << endl
+ << " Optional => " << PrioMap[pkgCache::State::Optional] << endl
+ << " Extra => " << PrioMap[pkgCache::State::Extra] << endl
+ << " Essentials => " << PrioEssentials << endl
+ << " InstalledAndNotObsolete => " << PrioInstalledAndNotObsolete << endl
+ << " Pre-Depends => " << DepMap[pkgCache::Dep::PreDepends] << endl
+ << " Depends => " << DepMap[pkgCache::Dep::Depends] << endl
+ << " Recommends => " << DepMap[pkgCache::Dep::Recommends] << endl
+ << " Suggests => " << DepMap[pkgCache::Dep::Suggests] << endl
+ << " Conflicts => " << DepMap[pkgCache::Dep::Conflicts] << endl
+ << " Breaks => " << DepMap[pkgCache::Dep::DpkgBreaks] << endl
+ << " Replaces => " << DepMap[pkgCache::Dep::Replaces] << endl
+ << " Obsoletes => " << DepMap[pkgCache::Dep::Obsoletes] << endl
+ << " Enhances => " << DepMap[pkgCache::Dep::Enhances] << endl
+ << " AddProtected => " << AddProtected << endl
+ << " AddEssential => " << AddEssential << endl;
+
+ // Generate the base scores for a package based on its properties
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ {
+ if (Cache[I].InstallVer == 0)
+ continue;
+
+ int &Score = Scores[I->ID];
+
+ /* This is arbitrary, it should be high enough to elevate an
+ essantial package above most other packages but low enough
+ to allow an obsolete essential packages to be removed by
+ a conflicts on a powerful normal package (ie libc6) */
+ if ((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential
+ || (I->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important)
+ Score += PrioEssentials;
+
+ pkgCache::VerIterator const InstVer = Cache[I].InstVerIter(Cache);
+ // We apply priorities only to downloadable packages, all others are prio:extra
+ // as an obsolete prio:standard package can't be that standard anymore…
+ if (InstVer->Priority <= pkgCache::State::Extra && InstVer.Downloadable() == true)
+ Score += PrioMap[InstVer->Priority];
+ else
+ Score += PrioMap[pkgCache::State::Extra];
+
+ /* This helps to fix oddball problems with conflicting packages
+ on the same level. We enhance the score of installed packages
+ if those are not obsolete */
+ if (I->CurrentVer != 0 && Cache[I].CandidateVer != 0 && Cache[I].CandidateVerIter(Cache).Downloadable())
+ Score += PrioInstalledAndNotObsolete;
+
+ // propagate score points along dependencies
+ for (pkgCache::DepIterator D = InstVer.DependsList(); D.end() == false; ++D)
+ {
+ if (DepMap[D->Type] == 0)
+ continue;
+ pkgCache::PkgIterator const T = D.TargetPkg();
+ if (D->Version != 0)
+ {
+ pkgCache::VerIterator const IV = Cache[T].InstVerIter(Cache);
+ if (IV.end() == true || D.IsSatisfied(IV) == false)
+ continue;
+ }
+ Scores[T->ID] += DepMap[D->Type];
+ }
+ }
+
+ // Copy the scores to advoid additive looping
+ std::unique_ptr<int[]> OldScores(new int[Size]);
+ memcpy(OldScores.get(),Scores,sizeof(*Scores)*Size);
+
+ /* Now we cause 1 level of dependency inheritance, that is we add the
+ score of the packages that depend on the target Package. This
+ fortifies high scoring packages */
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ {
+ if (Cache[I].InstallVer == 0)
+ continue;
+
+ for (pkgCache::DepIterator D = I.RevDependsList(); D.end() == false; ++D)
+ {
+ // Only do it for the install version
+ if ((pkgCache::Version *)D.ParentVer() != Cache[D.ParentPkg()].InstallVer ||
+ (D->Type != pkgCache::Dep::Depends &&
+ D->Type != pkgCache::Dep::PreDepends &&
+ D->Type != pkgCache::Dep::Recommends))
+ continue;
+
+ // Do not propagate negative scores otherwise
+ // an extra (-2) package might score better than an optional (-1)
+ if (OldScores[D.ParentPkg()->ID] > 0)
+ Scores[I->ID] += OldScores[D.ParentPkg()->ID];
+ }
+ }
+
+ /* Now we propagate along provides. This makes the packages that
+ provide important packages extremely important */
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ {
+ for (pkgCache::PrvIterator P = I.ProvidesList(); P.end() == false; ++P)
+ {
+ // Only do it once per package
+ if ((pkgCache::Version *)P.OwnerVer() != Cache[P.OwnerPkg()].InstallVer)
+ continue;
+ Scores[P.OwnerPkg()->ID] += abs(Scores[I->ID] - OldScores[I->ID]);
+ }
+ }
+
+ /* Protected things are pushed really high up. This number should put them
+ ahead of everything */
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ {
+ if ((Flags[I->ID] & Protected) != 0)
+ Scores[I->ID] += AddProtected;
+ if ((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential ||
+ (I->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important)
+ Scores[I->ID] += AddEssential;
+ }
+}
+ /*}}}*/
+// ProblemResolver::DoUpgrade - Attempt to upgrade this package /*{{{*/
+// ---------------------------------------------------------------------
+/* This goes through and tries to reinstall packages to make this package
+ installable */
+bool pkgProblemResolver::DoUpgrade(pkgCache::PkgIterator Pkg)
+{
+ pkgDepCache::ActionGroup group(Cache);
+
+ if ((Flags[Pkg->ID] & Upgradable) == 0 || Cache[Pkg].Upgradable() == false)
+ return false;
+ if ((Flags[Pkg->ID] & Protected) == Protected)
+ return false;
+
+ Flags[Pkg->ID] &= ~Upgradable;
+
+ bool WasKept = Cache[Pkg].Keep();
+ Cache.MarkInstall(Pkg, false, 0, false);
+
+ // This must be a virtual package or something like that.
+ if (Cache[Pkg].InstVerIter(Cache).end() == true)
+ return false;
+
+ // Isolate the problem dependency
+ bool Fail = false;
+ for (pkgCache::DepIterator D = Cache[Pkg].InstVerIter(Cache).DependsList(); D.end() == false;)
+ {
+ // Compute a single dependency element (glob or)
+ pkgCache::DepIterator Start = D;
+ pkgCache::DepIterator End = D;
+ for (bool LastOR = true; D.end() == false && LastOR == true;)
+ {
+ LastOR = (D->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or;
+ ++D;
+ if (LastOR == true)
+ End = D;
+ }
+
+ // We only worry about critical deps.
+ if (End.IsCritical() != true)
+ continue;
+
+ // Iterate over all the members in the or group
+ while (1)
+ {
+ // Dep is ok now
+ if ((Cache[End] & pkgDepCache::DepGInstall) == pkgDepCache::DepGInstall)
+ break;
+
+ // Do not change protected packages
+ PkgIterator P = Start.SmartTargetPkg();
+ if ((Flags[P->ID] & Protected) == Protected)
+ {
+ if (Debug == true)
+ clog << " Reinst Failed because of protected " << P.FullName(false) << endl;
+ Fail = true;
+ }
+ else
+ {
+ // Upgrade the package if the candidate version will fix the problem.
+ if ((Cache[Start] & pkgDepCache::DepCVer) == pkgDepCache::DepCVer)
+ {
+ if (DoUpgrade(P) == false)
+ {
+ if (Debug == true)
+ clog << " Reinst Failed because of " << P.FullName(false) << endl;
+ Fail = true;
+ }
+ else
+ {
+ Fail = false;
+ break;
+ }
+ }
+ else
+ {
+ /* We let the algorithm deal with conflicts on its next iteration,
+ it is much smarter than us */
+ if (Start.IsNegative() == true)
+ break;
+
+ if (Debug == true)
+ clog << " Reinst Failed early because of " << Start.TargetPkg().FullName(false) << endl;
+ Fail = true;
+ }
+ }
+
+ if (Start == End)
+ break;
+ ++Start;
+ }
+ if (Fail == true)
+ break;
+ }
+
+ // Undo our operations - it might be smart to undo everything this did..
+ if (Fail == true)
+ {
+ if (WasKept == true)
+ Cache.MarkKeep(Pkg, false, false);
+ else
+ Cache.MarkDelete(Pkg, false, 0, false);
+ return false;
+ }
+
+ if (Debug == true)
+ clog << " Re-Instated " << Pkg.FullName(false) << endl;
+ return true;
+}
+ /*}}}*/
+// ProblemResolver::Resolve - calls a resolver to fix the situation /*{{{*/
+bool pkgProblemResolver::Resolve(bool BrokenFix, OpProgress * const Progress)
+{
+ std::string const solver = _config->Find("APT::Solver", "internal");
+ auto const ret = EDSP::ResolveExternal(solver.c_str(), Cache, 0, Progress);
+ if (solver != "internal")
+ return ret;
+ return ResolveInternal(BrokenFix);
+}
+ /*}}}*/
+// ProblemResolver::ResolveInternal - Run the resolution pass /*{{{*/
+// ---------------------------------------------------------------------
+/* This routines works by calculating a score for each package. The score
+ is derived by considering the package's priority and all reverse
+ dependents giving an integer that reflects the amount of breakage that
+ adjusting the package will inflict.
+
+ It goes from highest score to lowest and corrects all of the breaks by
+ keeping or removing the dependent packages. If that fails then it removes
+ the package itself and goes on. The routine should be able to intelligently
+ go from any broken state to a fixed state.
+
+ The BrokenFix flag enables a mode where the algorithm tries to
+ upgrade packages to advoid problems. */
+bool pkgProblemResolver::ResolveInternal(bool const BrokenFix)
+{
+ pkgDepCache::ActionGroup group(Cache);
+
+ // Record which packages are marked for install
+ bool Again = false;
+ do
+ {
+ Again = false;
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ {
+ if (Cache[I].Install() == true)
+ Flags[I->ID] |= PreInstalled;
+ else
+ {
+ if (Cache[I].InstBroken() == true && BrokenFix == true)
+ {
+ Cache.MarkInstall(I, false, 0, false);
+ if (Cache[I].Install() == true)
+ Again = true;
+ }
+
+ Flags[I->ID] &= ~PreInstalled;
+ }
+ Flags[I->ID] |= Upgradable;
+ }
+ }
+ while (Again == true);
+
+ if (Debug == true) {
+ clog << "Starting pkgProblemResolver with broken count: "
+ << Cache.BrokenCount() << endl;
+ }
+
+ MakeScores();
+
+ unsigned long const Size = Cache.Head().PackageCount;
+
+ /* We have to order the packages so that the broken fixing pass
+ operates from highest score to lowest. This prevents problems when
+ high score packages cause the removal of lower score packages that
+ would cause the removal of even lower score packages. */
+ std::unique_ptr<pkgCache::Package *[]> PList(new pkgCache::Package *[Size]);
+ pkgCache::Package **PEnd = PList.get();
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ *PEnd++ = I;
+
+ std::sort(PList.get(), PEnd, [this](Package *a, Package *b) { return ScoreSort(a, b) < 0; });
+
+ if (_config->FindB("Debug::pkgProblemResolver::ShowScores",false) == true)
+ {
+ clog << "Show Scores" << endl;
+ for (pkgCache::Package **K = PList.get(); K != PEnd; K++)
+ if (Scores[(*K)->ID] != 0)
+ {
+ pkgCache::PkgIterator Pkg(Cache,*K);
+ clog << Scores[(*K)->ID] << ' ' << APT::PrettyPkg(&Cache, Pkg) << std::endl;
+ }
+ }
+
+ if (Debug == true) {
+ clog << "Starting 2 pkgProblemResolver with broken count: "
+ << Cache.BrokenCount() << endl;
+ }
+
+ /* Now consider all broken packages. For each broken package we either
+ remove the package or fix it's problem. We do this once, it should
+ not be possible for a loop to form (that is a < b < c and fixing b by
+ changing a breaks c) */
+ bool Change = true;
+ bool const TryFixByInstall = _config->FindB("pkgProblemResolver::FixByInstall", true);
+ std::vector<PackageKill> KillList;
+ for (int Counter = 0; Counter != 10 && Change == true; Counter++)
+ {
+ Change = false;
+ for (pkgCache::Package **K = PList.get(); K != PEnd; K++)
+ {
+ pkgCache::PkgIterator I(Cache,*K);
+
+ /* We attempt to install this and see if any breaks result,
+ this takes care of some strange cases */
+ if (Cache[I].CandidateVer != Cache[I].InstallVer &&
+ I->CurrentVer != 0 && Cache[I].InstallVer != 0 &&
+ (Flags[I->ID] & PreInstalled) != 0 &&
+ (Flags[I->ID] & Protected) == 0 &&
+ (Flags[I->ID] & ReInstateTried) == 0)
+ {
+ if (Debug == true)
+ clog << " Try to Re-Instate (" << Counter << ") " << I.FullName(false) << endl;
+ unsigned long OldBreaks = Cache.BrokenCount();
+ pkgCache::Version *OldVer = Cache[I].InstallVer;
+ Flags[I->ID] &= ReInstateTried;
+
+ Cache.MarkInstall(I, false, 0, false);
+ if (Cache[I].InstBroken() == true ||
+ OldBreaks < Cache.BrokenCount())
+ {
+ if (OldVer == 0)
+ Cache.MarkDelete(I, false, 0, false);
+ else
+ Cache.MarkKeep(I, false, false);
+ }
+ else
+ if (Debug == true)
+ clog << "Re-Instated " << I.FullName(false) << " (" << OldBreaks << " vs " << Cache.BrokenCount() << ')' << endl;
+ }
+
+ if (Cache[I].InstallVer == 0 || Cache[I].InstBroken() == false)
+ continue;
+
+ if (Debug == true)
+ clog << "Investigating (" << Counter << ") " << APT::PrettyPkg(&Cache, I) << endl;
+
+ // Isolate the problem dependency
+ bool InOr = false;
+ pkgCache::DepIterator Start;
+ pkgCache::DepIterator End;
+ size_t OldSize = 0;
+
+ KillList.resize(0);
+
+ enum {OrRemove,OrKeep} OrOp = OrRemove;
+ for (pkgCache::DepIterator D = Cache[I].InstVerIter(Cache).DependsList();
+ D.end() == false || InOr == true;)
+ {
+ // Compute a single dependency element (glob or)
+ if (Start == End)
+ {
+ // Decide what to do
+ if (InOr == true && OldSize == KillList.size())
+ {
+ if (OrOp == OrRemove)
+ {
+ if ((Flags[I->ID] & Protected) != Protected)
+ {
+ if (Debug == true)
+ clog << " Or group remove for " << I.FullName(false) << endl;
+ Cache.MarkDelete(I, false, 0, false);
+ Change = true;
+ }
+ }
+ else if (OrOp == OrKeep)
+ {
+ if (Debug == true)
+ clog << " Or group keep for " << I.FullName(false) << endl;
+ Cache.MarkKeep(I, false, false);
+ Change = true;
+ }
+ }
+
+ /* We do an extra loop (as above) to finalize the or group
+ processing */
+ InOr = false;
+ OrOp = OrRemove;
+ D.GlobOr(Start,End);
+ if (Start.end() == true)
+ break;
+
+ // We only worry about critical deps.
+ if (End.IsCritical() != true)
+ continue;
+
+ InOr = Start != End;
+ OldSize = KillList.size();
+ }
+ else
+ {
+ ++Start;
+ // We only worry about critical deps.
+ if (Start.IsCritical() != true)
+ continue;
+ }
+
+ // Dep is ok
+ if ((Cache[End] & pkgDepCache::DepGInstall) == pkgDepCache::DepGInstall)
+ {
+ InOr = false;
+ continue;
+ }
+
+ if (Debug == true)
+ clog << "Broken " << APT::PrettyDep(&Cache, Start) << endl;
+
+ /* Look across the version list. If there are no possible
+ targets then we keep the package and bail. This is necessary
+ if a package has a dep on another package that can't be found */
+ std::unique_ptr<pkgCache::Version *[]> VList(Start.AllTargets());
+ if (VList[0] == 0 && (Flags[I->ID] & Protected) != Protected &&
+ Start.IsNegative() == false &&
+ Cache[I].NowBroken() == false)
+ {
+ if (InOr == true)
+ {
+ /* No keep choice because the keep being OK could be the
+ result of another element in the OR group! */
+ continue;
+ }
+
+ Change = true;
+ Cache.MarkKeep(I, false, false);
+ break;
+ }
+
+ bool Done = false;
+ for (pkgCache::Version **V = VList.get(); *V != 0; V++)
+ {
+ pkgCache::VerIterator Ver(Cache,*V);
+ pkgCache::PkgIterator Pkg = Ver.ParentPkg();
+
+ /* This is a conflicts, and the version we are looking
+ at is not the currently selected version of the
+ package, which means it is not necessary to
+ remove/keep */
+ if (Cache[Pkg].InstallVer != Ver && Start.IsNegative() == true)
+ {
+ if (Debug)
+ clog << " Conflicts//Breaks against version "
+ << Ver.VerStr() << " for " << Pkg.Name()
+ << " but that is not InstVer, ignoring"
+ << endl;
+ continue;
+ }
+
+ if (Debug == true)
+ clog << " Considering " << Pkg.FullName(false) << ' ' << Scores[Pkg->ID] <<
+ " as a solution to " << I.FullName(false) << ' ' << Scores[I->ID] << endl;
+
+ /* Try to fix the package under consideration rather than
+ fiddle with the VList package */
+ if (Scores[I->ID] <= Scores[Pkg->ID] ||
+ ((Cache[Start] & pkgDepCache::DepNow) == 0 &&
+ End.IsNegative() == false))
+ {
+ // Try a little harder to fix protected packages..
+ if ((Flags[I->ID] & Protected) == Protected)
+ {
+ if (DoUpgrade(Pkg) == true)
+ {
+ if (Scores[Pkg->ID] > Scores[I->ID])
+ Scores[Pkg->ID] = Scores[I->ID];
+ break;
+ }
+
+ continue;
+ }
+
+ /* See if a keep will do, unless the package is protected,
+ then installing it will be necessary */
+ bool Installed = Cache[I].Install();
+ Cache.MarkKeep(I, false, false);
+ if (Cache[I].InstBroken() == false)
+ {
+ // Unwind operation will be keep now
+ if (OrOp == OrRemove)
+ OrOp = OrKeep;
+
+ // Restore
+ if (InOr == true && Installed == true)
+ Cache.MarkInstall(I, false, 0, false);
+
+ if (Debug == true)
+ clog << " Holding Back " << I.FullName(false) << " rather than change " << Start.TargetPkg().FullName(false) << endl;
+ }
+ else
+ {
+ if (BrokenFix == false || DoUpgrade(I) == false)
+ {
+ // Consider other options
+ if (InOr == false || Cache[I].Garbage == true)
+ {
+ if (Debug == true)
+ clog << " Removing " << I.FullName(false) << " rather than change " << Start.TargetPkg().FullName(false) << endl;
+ Cache.MarkDelete(I, false, 0, false);
+ if (Counter > 1 && Scores[Pkg->ID] > Scores[I->ID])
+ Scores[I->ID] = Scores[Pkg->ID];
+ }
+ else if (TryFixByInstall == true &&
+ Start.TargetPkg()->CurrentVer == 0 &&
+ Cache[Start.TargetPkg()].Delete() == false &&
+ (Flags[Start.TargetPkg()->ID] & ToRemove) != ToRemove &&
+ Cache.GetCandidateVersion(Start.TargetPkg()).end() == false)
+ {
+ /* Before removing or keeping the package with the broken dependency
+ try instead to install the first not previously installed package
+ solving this dependency. This helps every time a previous solver
+ is removed by the resolver because of a conflict or alike but it is
+ dangerous as it could trigger new breaks/conflicts… */
+ if (Debug == true)
+ clog << " Try Installing " << APT::PrettyPkg(&Cache, Start.TargetPkg()) << " before changing " << I.FullName(false) << std::endl;
+ unsigned long const OldBroken = Cache.BrokenCount();
+ Cache.MarkInstall(Start.TargetPkg(), true, 1, false);
+ // FIXME: we should undo the complete MarkInstall process here
+ if (Cache[Start.TargetPkg()].InstBroken() == true || Cache.BrokenCount() > OldBroken)
+ Cache.MarkDelete(Start.TargetPkg(), false, 1, false);
+ }
+ }
+ }
+
+ Change = true;
+ Done = true;
+ break;
+ }
+ else
+ {
+ if (Start->Type == pkgCache::Dep::DpkgBreaks)
+ {
+ // first, try upgradring the package, if that
+ // does not help, the breaks goes onto the
+ // kill list
+ //
+ // FIXME: use DoUpgrade(Pkg) instead?
+ if (Cache[End] & pkgDepCache::DepGCVer)
+ {
+ if (Debug)
+ clog << " Upgrading " << Pkg.FullName(false) << " due to Breaks field in " << I.FullName(false) << endl;
+ Cache.MarkInstall(Pkg, false, 0, false);
+ continue;
+ }
+ }
+
+ // Skip adding to the kill list if it is protected
+ if ((Flags[Pkg->ID] & Protected) != 0)
+ continue;
+
+ if (Debug == true)
+ clog << " Added " << Pkg.FullName(false) << " to the remove list" << endl;
+
+ KillList.push_back({Pkg, End});
+
+ if (Start.IsNegative() == false)
+ break;
+ }
+ }
+
+ // Hm, nothing can possibly satisfy this dep. Nuke it.
+ if (VList[0] == 0 &&
+ Start.IsNegative() == false &&
+ (Flags[I->ID] & Protected) != Protected)
+ {
+ bool Installed = Cache[I].Install();
+ Cache.MarkKeep(I);
+ if (Cache[I].InstBroken() == false)
+ {
+ // Unwind operation will be keep now
+ if (OrOp == OrRemove)
+ OrOp = OrKeep;
+
+ // Restore
+ if (InOr == true && Installed == true)
+ Cache.MarkInstall(I, false, 0, false);
+
+ if (Debug == true)
+ clog << " Holding Back " << I.FullName(false) << " because I can't find " << Start.TargetPkg().FullName(false) << endl;
+ }
+ else
+ {
+ if (Debug == true)
+ clog << " Removing " << I.FullName(false) << " because I can't find " << Start.TargetPkg().FullName(false) << endl;
+ if (InOr == false)
+ Cache.MarkDelete(I, false, 0, false);
+ }
+
+ Change = true;
+ Done = true;
+ }
+
+ // Try some more
+ if (InOr == true)
+ continue;
+
+ if (Done == true)
+ break;
+ }
+
+ // Apply the kill list now
+ if (Cache[I].InstallVer != 0)
+ {
+ for (auto J = KillList.begin(); J != KillList.end(); J++)
+ {
+ Change = true;
+ if ((Cache[J->Dep] & pkgDepCache::DepGNow) == 0)
+ {
+ if (J->Dep.IsNegative() == true)
+ {
+ if (Debug == true)
+ clog << " Fixing " << I.FullName(false) << " via remove of " << J->Pkg.FullName(false) << endl;
+ Cache.MarkDelete(J->Pkg, false, 0, false);
+ }
+ }
+ else
+ {
+ if (Debug == true)
+ clog << " Fixing " << I.FullName(false) << " via keep of " << J->Pkg.FullName(false) << endl;
+ Cache.MarkKeep(J->Pkg, false, false);
+ }
+
+ if (Counter > 1)
+ {
+ if (Scores[I->ID] > Scores[J->Pkg->ID])
+ Scores[J->Pkg->ID] = Scores[I->ID];
+ }
+ }
+ }
+ }
+ }
+
+ if (Debug == true)
+ clog << "Done" << endl;
+
+ if (Cache.BrokenCount() != 0)
+ {
+ // See if this is the result of a hold
+ pkgCache::PkgIterator I = Cache.PkgBegin();
+ for (;I.end() != true; ++I)
+ {
+ if (Cache[I].InstBroken() == false)
+ continue;
+ if ((Flags[I->ID] & Protected) != Protected)
+ return _error->Error(_("Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages."));
+ }
+ return _error->Error(_("Unable to correct problems, you have held broken packages."));
+ }
+
+ // set the auto-flags (mvo: I'm not sure if we _really_ need this)
+ pkgCache::PkgIterator I = Cache.PkgBegin();
+ for (;I.end() != true; ++I) {
+ if (Cache[I].NewInstall() && !(Flags[I->ID] & PreInstalled)) {
+ if(_config->FindB("Debug::pkgAutoRemove",false)) {
+ std::clog << "Resolve installed new pkg: " << I.FullName(false)
+ << " (now marking it as auto)" << std::endl;
+ }
+ Cache[I].Flags |= pkgCache::Flag::Auto;
+ }
+ }
+
+
+ return true;
+}
+ /*}}}*/
+// ProblemResolver::BreaksInstOrPolicy - Check if the given pkg is broken/*{{{*/
+// ---------------------------------------------------------------------
+/* This checks if the given package is broken either by a hard dependency
+ (InstBroken()) or by introducing a new policy breakage e.g. new
+ unsatisfied recommends for a package that was in "policy-good" state
+
+ Note that this is not perfect as it will ignore further breakage
+ for already broken policy (recommends)
+*/
+bool pkgProblemResolver::InstOrNewPolicyBroken(pkgCache::PkgIterator I)
+{
+ // a broken install is always a problem
+ if (Cache[I].InstBroken() == true)
+ {
+ if (Debug == true)
+ std::clog << " Dependencies are not satisfied for " << APT::PrettyPkg(&Cache, I) << std::endl;
+ return true;
+ }
+
+ // a newly broken policy (recommends/suggests) is a problem
+ if (Cache[I].NowPolicyBroken() == false &&
+ Cache[I].InstPolicyBroken() == true)
+ {
+ if (Debug == true)
+ std::clog << " Policy breaks with upgrade of " << APT::PrettyPkg(&Cache, I) << std::endl;
+ return true;
+ }
+
+ return false;
+}
+ /*}}}*/
+// ProblemResolver::ResolveByKeep - Resolve problems using keep /*{{{*/
+// ---------------------------------------------------------------------
+/* This is the work horse of the soft upgrade routine. It is very gentle
+ in that it does not install or remove any packages. It is assumed that the
+ system was non-broken previously. */
+bool pkgProblemResolver::ResolveByKeep(OpProgress * const Progress)
+{
+ std::string const solver = _config->Find("APT::Solver", "internal");
+ constexpr auto flags = EDSP::Request::UPGRADE_ALL | EDSP::Request::FORBID_NEW_INSTALL | EDSP::Request::FORBID_REMOVE;
+ auto const ret = EDSP::ResolveExternal(solver.c_str(), Cache, flags, Progress);
+ if (solver != "internal")
+ return ret;
+ return ResolveByKeepInternal();
+}
+ /*}}}*/
+// ProblemResolver::ResolveByKeepInternal - Resolve problems using keep /*{{{*/
+// ---------------------------------------------------------------------
+/* This is the work horse of the soft upgrade routine. It is very gentle
+ in that it does not install or remove any packages. It is assumed that the
+ system was non-broken previously. */
+bool pkgProblemResolver::ResolveByKeepInternal()
+{
+ pkgDepCache::ActionGroup group(Cache);
+
+ unsigned long Size = Cache.Head().PackageCount;
+
+ MakeScores();
+
+ /* We have to order the packages so that the broken fixing pass
+ operates from highest score to lowest. This prevents problems when
+ high score packages cause the removal of lower score packages that
+ would cause the removal of even lower score packages. */
+ pkgCache::Package **PList = new pkgCache::Package *[Size];
+ pkgCache::Package **PEnd = PList;
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ *PEnd++ = I;
+
+ std::sort(PList,PEnd,[this](Package *a, Package *b) { return ScoreSort(a, b) < 0; });
+
+
+ if (_config->FindB("Debug::pkgProblemResolver::ShowScores",false) == true)
+ {
+ clog << "Show Scores" << endl;
+ for (pkgCache::Package **K = PList; K != PEnd; K++)
+ if (Scores[(*K)->ID] != 0)
+ {
+ pkgCache::PkgIterator Pkg(Cache,*K);
+ clog << Scores[(*K)->ID] << ' ' << APT::PrettyPkg(&Cache, Pkg) << std::endl;
+ }
+ }
+
+ if (Debug == true)
+ clog << "Entering ResolveByKeep" << endl;
+
+ // Consider each broken package
+ pkgCache::Package **LastStop = 0;
+ for (pkgCache::Package **K = PList; K != PEnd; K++)
+ {
+ pkgCache::PkgIterator I(Cache,*K);
+
+ if (Cache[I].InstallVer == 0)
+ continue;
+
+ if (InstOrNewPolicyBroken(I) == false)
+ continue;
+
+ /* Keep the package. If this works then great, otherwise we have
+ to be significantly more aggressive and manipulate its dependencies */
+ if ((Flags[I->ID] & Protected) == 0)
+ {
+ if (Debug == true)
+ clog << "Keeping package " << I.FullName(false) << endl;
+ Cache.MarkKeep(I, false, false);
+ if (InstOrNewPolicyBroken(I) == false)
+ {
+ K = PList - 1;
+ continue;
+ }
+ }
+
+ // Isolate the problem dependencies
+ for (pkgCache::DepIterator D = Cache[I].InstVerIter(Cache).DependsList(); D.end() == false;)
+ {
+ DepIterator Start;
+ DepIterator End;
+ D.GlobOr(Start,End);
+
+ // We only worry about critical deps.
+ if (End.IsCritical() != true)
+ continue;
+
+ // Dep is ok
+ if ((Cache[End] & pkgDepCache::DepGInstall) == pkgDepCache::DepGInstall)
+ continue;
+
+ /* Hm, the group is broken.. I suppose the best thing to do is to
+ is to try every combination of keep/not-keep for the set, but that's
+ slow, and this never happens, just be conservative and assume the
+ list of ors is in preference and keep till it starts to work. */
+ while (true)
+ {
+ if (Debug == true)
+ clog << "Package " << I.FullName(false) << " " << APT::PrettyDep(&Cache, Start) << endl;
+
+ // Look at all the possible provides on this package
+ std::unique_ptr<pkgCache::Version *[]> VList(Start.AllTargets());
+ for (pkgCache::Version **V = VList.get(); *V != 0; V++)
+ {
+ pkgCache::VerIterator Ver(Cache,*V);
+ pkgCache::PkgIterator Pkg = Ver.ParentPkg();
+
+ // It is not keepable
+ if (Cache[Pkg].InstallVer == 0 ||
+ Pkg->CurrentVer == 0)
+ continue;
+
+ if ((Flags[I->ID] & Protected) == 0)
+ {
+ if (Debug == true)
+ clog << " Keeping Package " << Pkg.FullName(false) << " due to " << Start.DepType() << endl;
+ Cache.MarkKeep(Pkg, false, false);
+ }
+
+ if (InstOrNewPolicyBroken(I) == false)
+ break;
+ }
+
+ if (InstOrNewPolicyBroken(I) == false)
+ break;
+
+ if (Start == End)
+ break;
+ ++Start;
+ }
+
+ if (InstOrNewPolicyBroken(I) == false)
+ break;
+ }
+
+ if (InstOrNewPolicyBroken(I) == true)
+ continue;
+
+ // Restart again.
+ if (K == LastStop) {
+ // I is an iterator based off our temporary package list,
+ // so copy the name we need before deleting the temporary list
+ std::string const LoopingPackage = I.FullName(false);
+ delete[] PList;
+ return _error->Error("Internal Error, pkgProblemResolver::ResolveByKeep is looping on package %s.", LoopingPackage.c_str());
+ }
+ LastStop = K;
+ K = PList - 1;
+ }
+
+ delete[] PList;
+ return true;
+}
+ /*}}}*/
+// ProblemResolver::InstallProtect - deprecated cpu-eating no-op /*{{{*/
+// ---------------------------------------------------------------------
+/* Actions issued with FromUser bit set are protected from further
+ modification (expect by other calls with FromUser set) nowadays , so we
+ don't need to reissue actions here, they are already set in stone. */
+void pkgProblemResolver::InstallProtect()
+{
+ pkgDepCache::ActionGroup group(Cache);
+
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ {
+ if ((Flags[I->ID] & Protected) == Protected)
+ {
+ if ((Flags[I->ID] & ToRemove) == ToRemove)
+ Cache.MarkDelete(I);
+ else
+ {
+ // preserve the information whether the package was auto
+ // or manually installed
+ bool autoInst = (Cache[I].Flags & pkgCache::Flag::Auto);
+ Cache.MarkInstall(I, false, 0, !autoInst);
+ }
+ }
+ }
+}
+ /*}}}*/
+// PrioSortList - Sort a list of versions by priority /*{{{*/
+// ---------------------------------------------------------------------
+/* This is meant to be used in conjunction with AllTargets to get a list
+ of versions ordered by preference. */
+
+struct PrioComp {
+ pkgCache &PrioCache;
+
+ explicit PrioComp(pkgCache &PrioCache) : PrioCache(PrioCache) {
+ }
+
+ bool operator() (pkgCache::Version * const &A, pkgCache::Version * const &B) {
+ return compare(A, B) < 0;
+ }
+
+ int compare(pkgCache::Version * const &A, pkgCache::Version * const &B) {
+ pkgCache::VerIterator L(PrioCache,A);
+ pkgCache::VerIterator R(PrioCache,B);
+
+ if ((L.ParentPkg()->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential &&
+ (R.ParentPkg()->Flags & pkgCache::Flag::Essential) != pkgCache::Flag::Essential)
+ return 1;
+ if ((L.ParentPkg()->Flags & pkgCache::Flag::Essential) != pkgCache::Flag::Essential &&
+ (R.ParentPkg()->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential)
+ return -1;
+
+ if ((L.ParentPkg()->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important &&
+ (R.ParentPkg()->Flags & pkgCache::Flag::Important) != pkgCache::Flag::Important)
+ return 1;
+ if ((L.ParentPkg()->Flags & pkgCache::Flag::Important) != pkgCache::Flag::Important &&
+ (R.ParentPkg()->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important)
+ return -1;
+
+ if (L->Priority != R->Priority)
+ return R->Priority - L->Priority;
+ return strcmp(L.ParentPkg().Name(),R.ParentPkg().Name());
+ }
+};
+
+void pkgPrioSortList(pkgCache &Cache,pkgCache::Version **List)
+{
+ unsigned long Count = 0;
+ for (pkgCache::Version **I = List; *I != 0; I++)
+ Count++;
+ std::sort(List,List+Count,PrioComp(Cache));
+}
+ /*}}}*/
diff --git a/apt-pkg/algorithms.h b/apt-pkg/algorithms.h
new file mode 100644
index 000000000..5148ff19d
--- /dev/null
+++ b/apt-pkg/algorithms.h
@@ -0,0 +1,164 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Algorithms - A set of misc algorithms
+
+ This simulate class displays what the ordering code has done and
+ analyses it with a fresh new dependency cache. In this way we can
+ see all of the effects of an upgrade run.
+
+ pkgDistUpgrade computes an upgrade that causes as many packages as
+ possible to move to the newest version.
+
+ pkgApplyStatus sets the target state based on the content of the status
+ field in the status file. It is important to get proper crash recovery.
+
+ pkgFixBroken corrects a broken system so that it is in a sane state.
+
+ pkgAllUpgrade attempts to upgade as many packages as possible but
+ without installing new packages.
+
+ The problem resolver class contains a number of complex algorithms
+ to try to best-guess an upgrade state. It solves the problem of
+ maximizing the number of install state packages while having no broken
+ packages.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_ALGORITHMS_H
+#define PKGLIB_ALGORITHMS_H
+
+
+#include <apt-pkg/packagemanager.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#include <iostream>
+#include <string>
+
+#include <apt-pkg/macros.h>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/acquire.h>
+using std::ostream;
+#endif
+
+#ifndef APT_9_CLEANER_HEADERS
+// include pkg{DistUpgrade,AllUpgrade,MiniizeUpgrade} here for compatibility
+#include <apt-pkg/upgrade.h>
+#include <apt-pkg/update.h>
+#endif
+
+
+class pkgSimulatePrivate;
+class pkgSimulate : public pkgPackageManager /*{{{*/
+{
+ pkgSimulatePrivate * const d;
+ protected:
+
+ class Policy : public pkgDepCache::Policy
+ {
+ pkgDepCache *Cache;
+ public:
+
+ virtual VerIterator GetCandidateVer(PkgIterator const &Pkg) APT_OVERRIDE
+ {
+ return (*Cache)[Pkg].CandidateVerIter(*Cache);
+ }
+
+ explicit Policy(pkgDepCache *Cache) : Cache(Cache) {};
+ };
+
+ unsigned char *Flags;
+
+ Policy iPolicy;
+ pkgDepCache Sim;
+ pkgDepCache::ActionGroup group;
+
+ // The Actual installation implementation
+ virtual bool Install(PkgIterator Pkg,std::string File) APT_OVERRIDE;
+ virtual bool Configure(PkgIterator Pkg) APT_OVERRIDE;
+ virtual bool Remove(PkgIterator Pkg,bool Purge) APT_OVERRIDE;
+
+ // FIXME: trick to avoid ABI break for virtual reimplementation; fix on next ABI break
+public:
+ APT_HIDDEN bool Go2(APT::Progress::PackageManager * progress);
+
+private:
+ APT_HIDDEN void ShortBreaks();
+ APT_HIDDEN void Describe(PkgIterator iPkg,std::ostream &out,bool Current,bool Candidate);
+ APT_HIDDEN bool RealInstall(PkgIterator Pkg,std::string File);
+ APT_HIDDEN bool RealConfigure(PkgIterator Pkg);
+ APT_HIDDEN bool RealRemove(PkgIterator Pkg,bool Purge);
+
+ public:
+
+ explicit pkgSimulate(pkgDepCache *Cache);
+ virtual ~pkgSimulate();
+};
+ /*}}}*/
+class pkgProblemResolver /*{{{*/
+{
+ private:
+ /** \brief dpointer placeholder (for later in case we need it) */
+ void * const d;
+
+ pkgDepCache &Cache;
+ typedef pkgCache::PkgIterator PkgIterator;
+ typedef pkgCache::VerIterator VerIterator;
+ typedef pkgCache::DepIterator DepIterator;
+ typedef pkgCache::PrvIterator PrvIterator;
+ typedef pkgCache::Version Version;
+ typedef pkgCache::Package Package;
+
+ enum Flags {Protected = (1 << 0), PreInstalled = (1 << 1),
+ Upgradable = (1 << 2), ReInstateTried = (1 << 3),
+ ToRemove = (1 << 4)};
+ int *Scores;
+ unsigned char *Flags;
+ bool Debug;
+
+ // Sort stuff
+ APT_HIDDEN int ScoreSort(Package const *A, Package const *B) APT_PURE;
+
+ struct PackageKill
+ {
+ PkgIterator Pkg;
+ DepIterator Dep;
+ };
+
+ APT_HIDDEN void MakeScores();
+ APT_HIDDEN bool DoUpgrade(pkgCache::PkgIterator Pkg);
+
+ protected:
+ bool InstOrNewPolicyBroken(pkgCache::PkgIterator Pkg);
+
+ public:
+
+ inline void Protect(pkgCache::PkgIterator Pkg) {Flags[Pkg->ID] |= Protected; Cache.MarkProtected(Pkg);};
+ inline void Remove(pkgCache::PkgIterator Pkg) {Flags[Pkg->ID] |= ToRemove;};
+ inline void Clear(pkgCache::PkgIterator Pkg) {Flags[Pkg->ID] &= ~(Protected | ToRemove);};
+
+ // Try to intelligently resolve problems by installing and removing packages
+ bool Resolve(bool BrokenFix = false, OpProgress * const Progress = NULL);
+ APT_HIDDEN bool ResolveInternal(bool const BrokenFix = false);
+
+ // Try to resolve problems only by using keep
+ bool ResolveByKeep(OpProgress * const Progress = NULL);
+ APT_HIDDEN bool ResolveByKeepInternal();
+
+ APT_DEPRECATED_MSG("NOOP as MarkInstall enforces not overriding FromUser markings") void InstallProtect();
+
+ explicit pkgProblemResolver(pkgDepCache *Cache);
+ virtual ~pkgProblemResolver();
+};
+ /*}}}*/
+bool pkgApplyStatus(pkgDepCache &Cache);
+bool pkgFixBroken(pkgDepCache &Cache);
+
+void pkgPrioSortList(pkgCache &Cache,pkgCache::Version **List);
+
+
+#endif
diff --git a/apt-pkg/aptconfiguration.cc b/apt-pkg/aptconfiguration.cc
new file mode 100644
index 000000000..0035f70df
--- /dev/null
+++ b/apt-pkg/aptconfiguration.cc
@@ -0,0 +1,475 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Provide access methods to various configuration settings,
+ setup defaults and returns validate settings.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/macros.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/pkgsystem.h>
+
+#include <dirent.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <ctype.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <algorithm>
+#include <string>
+#include <vector>
+
+ /*}}}*/
+namespace APT {
+// setDefaultConfigurationForCompressors /*{{{*/
+static void setDefaultConfigurationForCompressors() {
+ // Set default application paths to check for optional compression types
+ _config->CndSet("Dir::Bin::gzip", "/bin/gzip");
+ _config->CndSet("Dir::Bin::bzip2", "/bin/bzip2");
+ _config->CndSet("Dir::Bin::xz", "/usr/bin/xz");
+ _config->CndSet("Dir::Bin::lz4", "/usr/bin/lz4");
+ if (FileExists(_config->Find("Dir::Bin::xz")) == true) {
+ _config->Set("Dir::Bin::lzma", _config->Find("Dir::Bin::xz"));
+ _config->Set("APT::Compressor::lzma::Binary", "xz");
+ if (_config->Exists("APT::Compressor::lzma::CompressArg") == false) {
+ _config->Set("APT::Compressor::lzma::CompressArg::", "--format=lzma");
+ _config->Set("APT::Compressor::lzma::CompressArg::", "-6");
+ }
+ if (_config->Exists("APT::Compressor::lzma::UncompressArg") == false) {
+ _config->Set("APT::Compressor::lzma::UncompressArg::", "--format=lzma");
+ _config->Set("APT::Compressor::lzma::UncompressArg::", "-d");
+ }
+ } else {
+ _config->CndSet("Dir::Bin::lzma", "/usr/bin/lzma");
+ if (_config->Exists("APT::Compressor::lzma::CompressArg") == false) {
+ _config->Set("APT::Compressor::lzma::CompressArg::", "--suffix=");
+ _config->Set("APT::Compressor::lzma::CompressArg::", "-6");
+ }
+ if (_config->Exists("APT::Compressor::lzma::UncompressArg") == false) {
+ _config->Set("APT::Compressor::lzma::UncompressArg::", "--suffix=");
+ _config->Set("APT::Compressor::lzma::UncompressArg::", "-d");
+ }
+ }
+ // setup the defaults for the compressiontypes => method mapping
+ _config->CndSet("Acquire::CompressionTypes::xz","xz");
+ _config->CndSet("Acquire::CompressionTypes::bz2","bzip2");
+ _config->CndSet("Acquire::CompressionTypes::lzma","lzma");
+ _config->CndSet("Acquire::CompressionTypes::gz","gzip");
+ _config->CndSet("Acquire::CompressionTypes::lz4","lz4");
+}
+ /*}}}*/
+// getCompressionTypes - Return Vector of usable compressiontypes /*{{{*/
+// ---------------------------------------------------------------------
+/* return a vector of compression types in the preferred order. */
+std::vector<std::string>
+const Configuration::getCompressionTypes(bool const &Cached) {
+ static std::vector<std::string> types;
+ if (types.empty() == false) {
+ if (Cached == true)
+ return types;
+ else
+ types.clear();
+ }
+
+ std::vector<APT::Configuration::Compressor> const compressors = getCompressors();
+
+ // load the order setting into our vector
+ std::vector<std::string> const order = _config->FindVector("Acquire::CompressionTypes::Order");
+ for (std::vector<std::string>::const_iterator o = order.begin();
+ o != order.end(); ++o) {
+ if ((*o).empty() == true)
+ continue;
+ // ignore types we have no method ready to use
+ std::string const method = std::string("Acquire::CompressionTypes::").append(*o);
+ if (_config->Exists(method) == false)
+ continue;
+ // ignore types we have no app ready to use
+ std::string const app = _config->Find(method);
+ if (std::find_if(compressors.begin(), compressors.end(), [&app](APT::Configuration::Compressor const &c) {
+ return c.Name == app;
+ }) == compressors.end())
+ continue;
+ types.push_back(*o);
+ }
+
+ // move again over the option tree to add all missing compression types
+ ::Configuration::Item const *Types = _config->Tree("Acquire::CompressionTypes");
+ if (Types != 0)
+ Types = Types->Child;
+
+ for (; Types != 0; Types = Types->Next) {
+ if (Types->Tag == "Order" || Types->Tag.empty() == true)
+ continue;
+ // ignore types we already have in the vector
+ if (std::find(types.begin(),types.end(),Types->Tag) != types.end())
+ continue;
+ // ignore types we have no app ready to use
+ if (std::find_if(compressors.begin(), compressors.end(), [&Types](APT::Configuration::Compressor const &c) {
+ return c.Name == Types->Value;
+ }) == compressors.end())
+ continue;
+ types.push_back(Types->Tag);
+ }
+
+ // add the special "uncompressed" type
+ if (std::find(types.begin(), types.end(), "uncompressed") == types.end())
+ {
+ std::string const uncompr = _config->Find("Dir::Bin::uncompressed", "");
+ if (uncompr.empty() == true || FileExists(uncompr) == true)
+ types.push_back("uncompressed");
+ }
+
+ return types;
+}
+ /*}}}*/
+// GetLanguages - Return Vector of Language Codes /*{{{*/
+// ---------------------------------------------------------------------
+/* return a vector of language codes in the preferred order.
+ the special word "environment" will be replaced with the long and the short
+ code of the local settings and it will be insured that this will not add
+ duplicates. So in an german local the setting "environment, de_DE, en, de"
+ will result in "de_DE, de, en".
+ The special word "none" is the stopcode for the not-All code vector */
+std::vector<std::string> const Configuration::getLanguages(bool const &All,
+ bool const &Cached, char const ** const Locale) {
+ using std::string;
+
+ // The detection is boring and has a lot of cornercases,
+ // so we cache the results to calculated it only once.
+ std::vector<string> static allCodes;
+ std::vector<string> static codes;
+
+ // we have something in the cache
+ if (codes.empty() == false || allCodes.empty() == false) {
+ if (Cached == true) {
+ if(All == true && allCodes.empty() == false)
+ return allCodes;
+ else
+ return codes;
+ } else {
+ allCodes.clear();
+ codes.clear();
+ }
+ }
+
+ // Include all Language codes we have a Translation file for in /var/lib/apt/lists
+ // so they will be all included in the Cache.
+ std::vector<string> builtin;
+ DIR *D = opendir(_config->FindDir("Dir::State::lists").c_str());
+ if (D != NULL) {
+ builtin.push_back("none");
+ for (struct dirent *Ent = readdir(D); Ent != 0; Ent = readdir(D)) {
+ string const name = SubstVar(Ent->d_name, "%5f", "_");
+ size_t const foundDash = name.rfind("-");
+ size_t const foundUnderscore = name.rfind("_", foundDash);
+ if (foundDash == string::npos || foundUnderscore == string::npos ||
+ foundDash <= foundUnderscore ||
+ name.substr(foundUnderscore+1, foundDash-(foundUnderscore+1)) != "Translation")
+ continue;
+ string const c = name.substr(foundDash+1);
+ if (unlikely(c.empty() == true) || c == "en")
+ continue;
+ // Skip unusual files, like backups or that alike
+ string::const_iterator s = c.begin();
+ for (;s != c.end(); ++s) {
+ if (isalpha(*s) == 0 && *s != '_')
+ break;
+ }
+ if (s != c.end())
+ continue;
+ if (std::find(builtin.begin(), builtin.end(), c) != builtin.end())
+ continue;
+ builtin.push_back(c);
+ }
+ closedir(D);
+ }
+
+ // FIXME: Remove support for the old APT::Acquire::Translation
+ // it was undocumented and so it should be not very widthly used
+ string const oldAcquire = _config->Find("APT::Acquire::Translation","");
+ if (oldAcquire.empty() == false && oldAcquire != "environment") {
+ // TRANSLATORS: the two %s are APT configuration options
+ _error->Notice("Option '%s' is deprecated. Please use '%s' instead, see 'man 5 apt.conf' for details.",
+ "APT::Acquire::Translation", "Acquire::Languages");
+ if (oldAcquire != "none")
+ codes.push_back(oldAcquire);
+ codes.push_back("en");
+ allCodes = codes;
+ for (std::vector<string>::const_iterator b = builtin.begin();
+ b != builtin.end(); ++b)
+ if (std::find(allCodes.begin(), allCodes.end(), *b) == allCodes.end())
+ allCodes.push_back(*b);
+ if (All == true)
+ return allCodes;
+ else
+ return codes;
+ }
+
+ // get the environment language codes: LC_MESSAGES (and later LANGUAGE)
+ // we extract both, a long and a short code and then we will
+ // check if we actually need both (rare) or if the short is enough
+ string const envMsg = string(Locale == 0 ? ::setlocale(LC_MESSAGES, NULL) : *Locale);
+ size_t const lenShort = (envMsg.find('_') != string::npos) ? envMsg.find('_') : 2;
+ size_t const lenLong = (envMsg.find_first_of(".@") != string::npos) ? envMsg.find_first_of(".@") : (lenShort + 3);
+
+ string const envLong = envMsg.substr(0,lenLong);
+ string const envShort = envLong.substr(0,lenShort);
+
+ // It is very likely we will need the environment codes later,
+ // so let us generate them now from LC_MESSAGES and LANGUAGE
+ std::vector<string> environment;
+ if (envShort != "C") {
+ // take care of LC_MESSAGES
+ if (envLong != envShort)
+ environment.push_back(envLong);
+ environment.push_back(envShort);
+ // take care of LANGUAGE
+ const char *language_env = getenv("LANGUAGE") == 0 ? "" : getenv("LANGUAGE");
+ string envLang = Locale == 0 ? language_env : *(Locale+1);
+ if (envLang.empty() == false) {
+ std::vector<string> env = VectorizeString(envLang,':');
+ short addedLangs = 0; // add a maximum of 3 fallbacks from the environment
+ for (std::vector<string>::const_iterator e = env.begin();
+ e != env.end() && addedLangs < 3; ++e) {
+ if (unlikely(e->empty() == true) || *e == "en")
+ continue;
+ if (*e == envLong || *e == envShort)
+ continue;
+ if (std::find(environment.begin(), environment.end(), *e) != environment.end())
+ continue;
+ ++addedLangs;
+ environment.push_back(*e);
+ }
+ }
+ } else {
+ // cornercase: LANG=C, so we use only "en" Translation
+ environment.push_back("en");
+ }
+
+ std::vector<string> const lang = _config->FindVector("Acquire::Languages", "environment,en");
+ // the configs define the order, so add the environment
+ // then needed and ensure the codes are not listed twice.
+ bool noneSeen = false;
+ for (std::vector<string>::const_iterator l = lang.begin();
+ l != lang.end(); ++l) {
+ if (*l == "environment") {
+ for (std::vector<string>::const_iterator e = environment.begin();
+ e != environment.end(); ++e) {
+ if (std::find(allCodes.begin(), allCodes.end(), *e) != allCodes.end())
+ continue;
+ if (noneSeen == false)
+ codes.push_back(*e);
+ allCodes.push_back(*e);
+ }
+ continue;
+ } else if (*l == "none") {
+ noneSeen = true;
+ continue;
+ } else if (std::find(allCodes.begin(), allCodes.end(), *l) != allCodes.end())
+ continue;
+
+ if (noneSeen == false)
+ codes.push_back(*l);
+ allCodes.push_back(*l);
+ }
+
+ if (allCodes.empty() == false) {
+ for (std::vector<string>::const_iterator b = builtin.begin();
+ b != builtin.end(); ++b)
+ if (std::find(allCodes.begin(), allCodes.end(), *b) == allCodes.end())
+ allCodes.push_back(*b);
+ } else {
+ // "none" was forced
+ allCodes.push_back("none");
+ }
+
+ if (All == true)
+ return allCodes;
+ else
+ return codes;
+}
+ /*}}}*/
+// checkLanguage - are we interested in the given Language? /*{{{*/
+bool Configuration::checkLanguage(std::string Lang, bool const All) {
+ // the empty Language is always interesting as it is the original
+ if (Lang.empty() == true)
+ return true;
+ // filenames are encoded, so undo this
+ Lang = SubstVar(Lang, "%5f", "_");
+ std::vector<std::string> const langs = getLanguages(All, true);
+ return (std::find(langs.begin(), langs.end(), Lang) != langs.end());
+}
+ /*}}}*/
+// getArchitectures - Return Vector of preferred Architectures /*{{{*/
+std::vector<std::string> const Configuration::getArchitectures(bool const &Cached) {
+ using std::string;
+
+ std::vector<string> static archs;
+ if (likely(Cached == true) && archs.empty() == false)
+ return archs;
+
+ string const arch = _config->Find("APT::Architecture");
+ archs = _config->FindVector("APT::Architectures");
+
+ if (archs.empty() == true)
+ archs = _system->ArchitecturesSupported();
+
+ if (archs.empty() == true ||
+ std::find(archs.begin(), archs.end(), arch) == archs.end())
+ archs.insert(archs.begin(), arch);
+
+ // erase duplicates and empty strings
+ for (std::vector<string>::reverse_iterator a = archs.rbegin();
+ a != archs.rend(); ++a) {
+ if (a->empty() == true || std::find(a + 1, archs.rend(), *a) != archs.rend())
+ archs.erase(a.base()-1);
+ if (a == archs.rend())
+ break;
+ }
+
+ return archs;
+}
+ /*}}}*/
+// checkArchitecture - are we interested in the given Architecture? /*{{{*/
+bool Configuration::checkArchitecture(std::string const &Arch) {
+ if (Arch == "all")
+ return true;
+ std::vector<std::string> const archs = getArchitectures(true);
+ return (std::find(archs.begin(), archs.end(), Arch) != archs.end());
+}
+ /*}}}*/
+// getCompressors - Return Vector of usealbe compressors /*{{{*/
+// ---------------------------------------------------------------------
+/* return a vector of compressors used by apt-ftparchive in the
+ multicompress functionality or to detect data.tar files */
+std::vector<APT::Configuration::Compressor>
+const Configuration::getCompressors(bool const Cached) {
+ static std::vector<APT::Configuration::Compressor> compressors;
+ if (compressors.empty() == false) {
+ if (Cached == true)
+ return compressors;
+ else
+ compressors.clear();
+ }
+
+ setDefaultConfigurationForCompressors();
+
+ std::vector<std::string> CompressorsDone;
+# define APT_ADD_COMPRESSOR(NAME, EXT, BINARY, ARG, DEARG, COST) \
+ { CompressorsDone.push_back(NAME); compressors.emplace_back(NAME, EXT, BINARY, ARG, DEARG, COST); }
+ APT_ADD_COMPRESSOR(".", "", "", nullptr, nullptr, 0)
+ if (_config->Exists("Dir::Bin::lz4") == false || FileExists(_config->Find("Dir::Bin::lz4")) == true)
+ APT_ADD_COMPRESSOR("lz4",".lz4","lz4","-1","-d",50)
+#ifdef HAVE_LZ4
+ else
+ APT_ADD_COMPRESSOR("lz4",".lz4","false", nullptr, nullptr, 50)
+#endif
+ if (_config->Exists("Dir::Bin::gzip") == false || FileExists(_config->Find("Dir::Bin::gzip")) == true)
+ APT_ADD_COMPRESSOR("gzip",".gz","gzip","-6n","-d",100)
+#ifdef HAVE_ZLIB
+ else
+ APT_ADD_COMPRESSOR("gzip",".gz","false", nullptr, nullptr, 100)
+#endif
+ if (_config->Exists("Dir::Bin::xz") == false || FileExists(_config->Find("Dir::Bin::xz")) == true)
+ APT_ADD_COMPRESSOR("xz",".xz","xz","-6","-d",200)
+#ifdef HAVE_LZMA
+ else
+ APT_ADD_COMPRESSOR("xz",".xz","false", nullptr, nullptr, 200)
+#endif
+ if (_config->Exists("Dir::Bin::bzip2") == false || FileExists(_config->Find("Dir::Bin::bzip2")) == true)
+ APT_ADD_COMPRESSOR("bzip2",".bz2","bzip2","-6","-d",300)
+#ifdef HAVE_BZ2
+ else
+ APT_ADD_COMPRESSOR("bzip2",".bz2","false", nullptr, nullptr, 300)
+#endif
+ if (_config->Exists("Dir::Bin::lzma") == false || FileExists(_config->Find("Dir::Bin::lzma")) == true)
+ APT_ADD_COMPRESSOR("lzma",".lzma","lzma","-6","-d",400)
+#ifdef HAVE_LZMA
+ else
+ APT_ADD_COMPRESSOR("lzma",".lzma","false", nullptr, nullptr, 400)
+#endif
+
+ std::vector<std::string> const comp = _config->FindVector("APT::Compressor", "", true);
+ for (auto const &c: comp)
+ {
+ if (c.empty() || std::find(CompressorsDone.begin(), CompressorsDone.end(), c) != CompressorsDone.end())
+ continue;
+ compressors.push_back(Compressor(c.c_str(), std::string(".").append(c).c_str(), c.c_str(), nullptr, nullptr, 1000));
+ }
+
+ return compressors;
+}
+ /*}}}*/
+// getCompressorExtensions - supported data.tar extensions /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+std::vector<std::string> const Configuration::getCompressorExtensions() {
+ std::vector<APT::Configuration::Compressor> const compressors = getCompressors();
+ std::vector<std::string> ext;
+ for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressors.begin();
+ c != compressors.end(); ++c)
+ if (c->Extension.empty() == false && c->Extension != ".")
+ ext.push_back(c->Extension);
+ return ext;
+}
+ /*}}}*/
+// Compressor constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+Configuration::Compressor::Compressor(char const *name, char const *extension,
+ char const *binary,
+ char const *compressArg, char const *uncompressArg,
+ unsigned short const cost) {
+ std::string const config = std::string("APT::Compressor::").append(name).append("::");
+ Name = _config->Find(std::string(config).append("Name"), name);
+ Extension = _config->Find(std::string(config).append("Extension"), extension);
+ Binary = _config->Find(std::string(config).append("Binary"), binary);
+ Cost = _config->FindI(std::string(config).append("Cost"), cost);
+ std::string const compConf = std::string(config).append("CompressArg");
+ if (_config->Exists(compConf) == true)
+ CompressArgs = _config->FindVector(compConf);
+ else if (compressArg != NULL)
+ CompressArgs.push_back(compressArg);
+ std::string const uncompConf = std::string(config).append("UncompressArg");
+ if (_config->Exists(uncompConf) == true)
+ UncompressArgs = _config->FindVector(uncompConf);
+ else if (uncompressArg != NULL)
+ UncompressArgs.push_back(uncompressArg);
+}
+ /*}}}*/
+// getBuildProfiles - return a vector of enabled build profiles /*{{{*/
+std::vector<std::string> const Configuration::getBuildProfiles() {
+ // order is: override value (~= commandline), environment variable, list (~= config file)
+ std::string profiles_env = getenv("DEB_BUILD_PROFILES") == 0 ? "" : getenv("DEB_BUILD_PROFILES");
+ if (profiles_env.empty() == false) {
+ profiles_env = SubstVar(profiles_env, " ", ",");
+ std::string const bp = _config->Find("APT::Build-Profiles");
+ _config->Clear("APT::Build-Profiles");
+ if (bp.empty() == false)
+ _config->Set("APT::Build-Profiles", bp);
+ }
+ return _config->FindVector("APT::Build-Profiles", profiles_env);
+}
+std::string const Configuration::getBuildProfilesString() {
+ std::vector<std::string> profiles = getBuildProfiles();
+ if (profiles.empty() == true)
+ return "";
+ std::vector<std::string>::const_iterator p = profiles.begin();
+ std::string list = *p;
+ for (++p; p != profiles.end(); ++p)
+ list.append(",").append(*p);
+ return list;
+}
+ /*}}}*/
+}
diff --git a/apt-pkg/aptconfiguration.h b/apt-pkg/aptconfiguration.h
new file mode 100644
index 000000000..fbd9b02e6
--- /dev/null
+++ b/apt-pkg/aptconfiguration.h
@@ -0,0 +1,128 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/** \class APT::Configuration
+ * \brief Provide access methods to various configuration settings
+ *
+ * This class and their methods providing a layer around the usual access
+ * methods with _config to ensure that settings are correct and to be able
+ * to set defaults without the need to recheck it in every method again.
+ */
+ /*}}}*/
+#ifndef APT_CONFIGURATION_H
+#define APT_CONFIGURATION_H
+// Include Files /*{{{*/
+#include <string>
+#include <vector>
+#include <limits>
+ /*}}}*/
+namespace APT {
+namespace Configuration { /*{{{*/
+ /** \brief Returns a vector of usable Compression Types
+ *
+ * Files can be compressed in various ways to decrease the size of the
+ * download. Therefore the Acquiremethods support a few compression types
+ * and some archives provide also a few different types. This option
+ * group exists to give the user the choice to prefer one type over the
+ * other (some compression types are very resource intensive - great if you
+ * have a limited download, bad if you have a really lowpowered hardware.)
+ *
+ * This method ensures that the defaults are set and checks at runtime
+ * if the type can be used. E.g. the current default is to prefer bzip2
+ * over lzma and gz - if the bzip2 binary is not available it has not much
+ * sense in downloading the bz2 file, therefore we will not return bz2 as
+ * a usable compression type. The availability is checked with the settings
+ * in the Dir::Bin group.
+ *
+ * \param Cached saves the result so we need to calculated it only once
+ * this parameter should ony be used for testing purposes.
+ *
+ * \return a vector of the compression types in the preferred usage order
+ */
+ std::vector<std::string> const getCompressionTypes(bool const &Cached = true);
+
+ /** \brief Returns a vector of Language Codes
+ *
+ * Languages can be defined with their two or five chars long code.
+ * This methods handles the various ways to set the preferred codes,
+ * honors the environment and ensures that the codes are not listed twice.
+ *
+ * The special word "environment" will be replaced with the long and the short
+ * code of the local settings and it will be insured that this will not add
+ * duplicates. So in an german local the setting "environment, de_DE, en, de"
+ * will result in "de_DE, de, en".
+ *
+ * Another special word is "none" which separates the preferred from all codes
+ * in this setting. So setting and method can be used to get codes the user want
+ * to see or to get all language codes APT (should) have Translations available.
+ *
+ * \param All return all codes or only codes for languages we want to use
+ * \param Cached saves the result so we need to calculated it only once
+ * this parameter should ony be used for testing purposes.
+ * \param Locale don't get the locale from the system but use this one instead
+ * this parameter should ony be used for testing purposes.
+ *
+ * \return a vector of (all) Language Codes in the preferred usage order
+ */
+ std::vector<std::string> const getLanguages(bool const &All = false,
+ bool const &Cached = true, char const ** const Locale = 0);
+
+ /** \brief Are we interested in the given Language?
+ *
+ * \param Lang is the language we want to check
+ * \param All defines if we check against all codes or only against used codes
+ * \return true if we are interested, false otherwise
+ */
+ bool checkLanguage(std::string Lang, bool const All = false);
+
+ /** \brief Returns a vector of Architectures we support
+ *
+ * \param Cached saves the result so we need to calculated it only once
+ * this parameter should ony be used for testing purposes.
+ *
+ * \return a vector of Architectures in preferred order
+ */
+ std::vector<std::string> const getArchitectures(bool const &Cached = true);
+
+ /** \brief Are we interested in the given Architecture?
+ *
+ * \param Arch we want to check
+ * \return true if we are interested, false otherwise
+ */
+ bool checkArchitecture(std::string const &Arch);
+
+ /** \brief Representation of supported compressors */
+ struct Compressor {
+ std::string Name;
+ std::string Extension;
+ std::string Binary;
+ std::vector<std::string> CompressArgs;
+ std::vector<std::string> UncompressArgs;
+ unsigned short Cost;
+
+ Compressor(char const *name, char const *extension, char const *binary,
+ char const *compressArg, char const *uncompressArg,
+ unsigned short const cost);
+ Compressor() : Cost(std::numeric_limits<unsigned short>::max()) {};
+ };
+
+ /** \brief Return a vector of Compressors supported for data.tar's
+ *
+ * \param Cached saves the result so we need to calculated it only once
+ * this parameter should ony be used for testing purposes.
+ *
+ * \return a vector of Compressors
+ */
+ std::vector<Compressor> const getCompressors(bool const Cached = true);
+
+ /** \brief Return a vector of extensions supported for data.tar's */
+ std::vector<std::string> const getCompressorExtensions();
+
+ /** \return Return a vector of enabled build profile specifications */
+ std::vector<std::string> const getBuildProfiles();
+ /** \return Return a comma-separated list of enabled build profile specifications */
+ std::string const getBuildProfilesString();
+ /*}}}*/
+}
+ /*}}}*/
+}
+#endif
diff --git a/apt-pkg/cachefile.cc b/apt-pkg/cachefile.cc
new file mode 100644
index 000000000..b5f32fc29
--- /dev/null
+++ b/apt-pkg/cachefile.cc
@@ -0,0 +1,349 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: cachefile.cc,v 1.8 2002/04/27 04:28:04 jgg Exp $
+/* ######################################################################
+
+ CacheFile - Simple wrapper class for opening, generating and whatnot
+
+ This class implements a simple 2 line mechanism to open various sorts
+ of caches. It can operate as root, as not root, show progress and so on,
+ it transparently handles everything necessary.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/pkgcachegen.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/policy.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/progress.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/mmap.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/indexfile.h>
+
+#include <string.h>
+#include <unistd.h>
+#include <string>
+#include <vector>
+#include <memory>
+
+#include <apti18n.h>
+ /*}}}*/
+// CacheFile::CacheFile - Constructor /*{{{*/
+pkgCacheFile::pkgCacheFile() : d(NULL), ExternOwner(false), Map(NULL), Cache(NULL),
+ DCache(NULL), SrcList(NULL), Policy(NULL)
+{
+}
+pkgCacheFile::pkgCacheFile(pkgDepCache * const Owner) : d(NULL), ExternOwner(true),
+ Map(&Owner->GetCache().GetMap()), Cache(&Owner->GetCache()),
+ DCache(Owner), SrcList(NULL), Policy(NULL)
+{
+}
+ /*}}}*/
+// CacheFile::~CacheFile - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgCacheFile::~pkgCacheFile()
+{
+ if (ExternOwner == false)
+ {
+ delete DCache;
+ delete Cache;
+ delete Map;
+ }
+ delete Policy;
+ delete SrcList;
+ if (ExternOwner == false)
+ _system->UnLock(true);
+}
+ /*}}}*/
+// CacheFile::BuildCaches - Open and build the cache files /*{{{*/
+class APT_HIDDEN ScopedErrorMerge {
+public:
+ ScopedErrorMerge() { _error->PushToStack(); }
+ ~ScopedErrorMerge() { _error->MergeWithStack(); }
+};
+
+bool pkgCacheFile::BuildCaches(OpProgress *Progress, bool WithLock)
+{
+ std::unique_ptr<pkgCache> Cache;
+ std::unique_ptr<MMap> Map;
+
+ if (this->Cache != NULL)
+ return true;
+
+ ScopedErrorMerge sem;
+ if (_config->FindB("pkgCacheFile::Generate", true) == false)
+ {
+ FileFd file(_config->FindFile("Dir::Cache::pkgcache"), FileFd::ReadOnly);
+ if (file.IsOpen() == false || file.Failed())
+ return false;
+ Map.reset(new MMap(file, MMap::Public|MMap::ReadOnly));
+ if (unlikely(Map->validData() == false))
+ return false;
+ Cache.reset(new pkgCache(Map.get()));
+ if (_error->PendingError() == true)
+ return false;
+
+ this->Cache = Cache.release();
+ this->Map = Map.release();
+ return true;
+ }
+
+ if (WithLock == true)
+ if (_system->Lock() == false)
+ return false;
+
+ if (_error->PendingError() == true)
+ return false;
+
+ if (BuildSourceList(Progress) == false)
+ return false;
+
+ // Read the caches
+ MMap *TmpMap = nullptr;
+ pkgCache *TmpCache = nullptr;
+ bool Res = pkgCacheGenerator::MakeStatusCache(*SrcList,Progress,&TmpMap, &TmpCache, true);
+ Map.reset(TmpMap);
+ Cache.reset(TmpCache);
+ if (Progress != NULL)
+ Progress->Done();
+ if (Res == false)
+ return _error->Error(_("The package lists or status file could not be parsed or opened."));
+
+ /* This sux, remove it someday */
+ if (_error->PendingError() == true)
+ _error->Warning(_("You may want to run apt-get update to correct these problems"));
+
+ if (Cache == nullptr)
+ Cache.reset(new pkgCache(Map.get()));
+ if (_error->PendingError() == true)
+ return false;
+ this->Map = Map.release();
+ this->Cache = Cache.release();
+
+ return true;
+}
+ /*}}}*/
+// CacheFile::BuildSourceList - Open and build all relevant sources.list/*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgCacheFile::BuildSourceList(OpProgress * /*Progress*/)
+{
+ std::unique_ptr<pkgSourceList> SrcList;
+ if (this->SrcList != NULL)
+ return true;
+
+ SrcList.reset(new pkgSourceList());
+ if (SrcList->ReadMainList() == false)
+ return _error->Error(_("The list of sources could not be read."));
+ this->SrcList = SrcList.release();
+ return true;
+}
+ /*}}}*/
+// CacheFile::BuildPolicy - Open and build all relevant preferences /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgCacheFile::BuildPolicy(OpProgress * /*Progress*/)
+{
+ std::unique_ptr<pkgPolicy> Policy;
+ if (this->Policy != NULL)
+ return true;
+
+ Policy.reset(new pkgPolicy(Cache));
+ if (_error->PendingError() == true)
+ return false;
+
+ if (ReadPinFile(*Policy) == false || ReadPinDir(*Policy) == false)
+ return false;
+
+ this->Policy = Policy.release();
+ return true;
+}
+ /*}}}*/
+// CacheFile::BuildDepCache - Open and build the dependency cache /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgCacheFile::BuildDepCache(OpProgress *Progress)
+{
+ if (BuildCaches(Progress, false) == false)
+ return false;
+
+ std::unique_ptr<pkgDepCache> DCache;
+ if (this->DCache != NULL)
+ return true;
+
+ if (BuildPolicy(Progress) == false)
+ return false;
+
+ DCache.reset(new pkgDepCache(Cache,Policy));
+ if (_error->PendingError() == true)
+ return false;
+ if (DCache->Init(Progress) == false)
+ return false;
+
+ this->DCache = DCache.release();
+ return true;
+}
+ /*}}}*/
+// CacheFile::Open - Open the cache files, creating if necessary /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgCacheFile::Open(OpProgress *Progress, bool WithLock)
+{
+ if (BuildCaches(Progress,WithLock) == false)
+ return false;
+
+ if (BuildPolicy(Progress) == false)
+ return false;
+
+ if (BuildDepCache(Progress) == false)
+ return false;
+
+ if (Progress != NULL)
+ Progress->Done();
+ if (_error->PendingError() == true)
+ return false;
+
+ return true;
+}
+ /*}}}*/
+bool pkgCacheFile::AddIndexFile(pkgIndexFile * const File) /*{{{*/
+{
+ if (SrcList == NULL)
+ if (BuildSourceList() == false)
+ return false;
+ SrcList->AddVolatileFile(File);
+
+ if (Cache == nullptr || File->HasPackages() == false || File->Exists() == false)
+ return true;
+
+ if (File->FindInCache(*Cache).end() == false)
+ return _error->Warning("Duplicate sources.list entry %s",
+ File->Describe().c_str());
+
+ if (ExternOwner == false)
+ {
+ delete DCache;
+ delete Cache;
+ }
+ delete Policy;
+ DCache = NULL;
+ Policy = NULL;
+ Cache = NULL;
+
+ if (ExternOwner == false)
+ {
+ // a dynamic mmap means that we have build at least parts of the cache
+ // in memory – which we might or might not have written to disk.
+ // Throwing away would therefore be a very costly operation we want to avoid
+ DynamicMMap * dynmmap = dynamic_cast<DynamicMMap*>(Map);
+ if (dynmmap != nullptr)
+ {
+ {
+ pkgCacheGenerator Gen(dynmmap, nullptr);
+ if (Gen.Start() == false || File->Merge(Gen, nullptr) == false)
+ return false;
+ }
+ Cache = new pkgCache(Map);
+ if (_error->PendingError() == true) {
+ delete Cache;
+ Cache = nullptr;
+ return false;
+ }
+ return true;
+ }
+ else
+ {
+ delete Map;
+ Map = NULL;
+ }
+ }
+ else
+ {
+ ExternOwner = false;
+ Map = NULL;
+ }
+ _system->UnLock(true);
+ return true;
+}
+ /*}}}*/
+// CacheFile::RemoveCaches - remove all cache files from disk /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgCacheFile::RemoveCaches()
+{
+ std::string const pkgcache = _config->FindFile("Dir::cache::pkgcache");
+ std::string const srcpkgcache = _config->FindFile("Dir::cache::srcpkgcache");
+
+ if (pkgcache.empty() == false && RealFileExists(pkgcache) == true)
+ RemoveFile("RemoveCaches", pkgcache);
+ if (srcpkgcache.empty() == false && RealFileExists(srcpkgcache) == true)
+ RemoveFile("RemoveCaches", srcpkgcache);
+ if (pkgcache.empty() == false)
+ {
+ std::string cachedir = flNotFile(pkgcache);
+ std::string cachefile = flNotDir(pkgcache);
+ if (cachedir.empty() != true && cachefile.empty() != true && DirectoryExists(cachedir) == true)
+ {
+ cachefile.append(".");
+ std::vector<std::string> caches = GetListOfFilesInDir(cachedir, false);
+ for (std::vector<std::string>::const_iterator file = caches.begin(); file != caches.end(); ++file)
+ {
+ std::string nuke = flNotDir(*file);
+ if (strncmp(cachefile.c_str(), nuke.c_str(), cachefile.length()) != 0)
+ continue;
+ RemoveFile("RemoveCaches", *file);
+ }
+ }
+ }
+
+ if (srcpkgcache.empty() == true)
+ return;
+
+ std::string cachedir = flNotFile(srcpkgcache);
+ std::string cachefile = flNotDir(srcpkgcache);
+ if (cachedir.empty() == true || cachefile.empty() == true || DirectoryExists(cachedir) == false)
+ return;
+ cachefile.append(".");
+ std::vector<std::string> caches = GetListOfFilesInDir(cachedir, false);
+ for (std::vector<std::string>::const_iterator file = caches.begin(); file != caches.end(); ++file)
+ {
+ std::string nuke = flNotDir(*file);
+ if (strncmp(cachefile.c_str(), nuke.c_str(), cachefile.length()) != 0)
+ continue;
+ RemoveFile("RemoveCaches", *file);
+ }
+}
+ /*}}}*/
+// CacheFile::Close - close the cache files /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgCacheFile::Close()
+{
+ if (ExternOwner == false)
+ {
+ delete DCache;
+ delete Cache;
+ delete Map;
+ }
+ else
+ ExternOwner = false;
+ delete Policy;
+ delete SrcList;
+ _system->UnLock(true);
+
+ Map = NULL;
+ DCache = NULL;
+ Policy = NULL;
+ Cache = NULL;
+ SrcList = NULL;
+}
+ /*}}}*/
diff --git a/apt-pkg/cachefile.h b/apt-pkg/cachefile.h
new file mode 100644
index 000000000..e23f37675
--- /dev/null
+++ b/apt-pkg/cachefile.h
@@ -0,0 +1,95 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ CacheFile - Simple wrapper class for opening, generating and whatnot
+
+ This class implements a simple 2 line mechanism to open various sorts
+ of caches. It can operate as root, as not root, show progress and so on,
+ it transparently handles everything necessary.
+
+ This means it can rebuild caches from the source list and instantiates
+ and prepares the standard policy mechanism.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_CACHEFILE_H
+#define PKGLIB_CACHEFILE_H
+
+#include <stddef.h>
+
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/macros.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/policy.h>
+#include <apt-pkg/sourcelist.h>
+#endif
+
+class MMap;
+class pkgPolicy;
+class pkgSourceList;
+class pkgIndexFile;
+class OpProgress;
+
+class pkgCacheFile
+{
+ /** \brief dpointer placeholder (for later in case we need it) */
+ void * const d;
+ bool ExternOwner;
+
+ protected:
+ MMap *Map;
+ pkgCache *Cache;
+ pkgDepCache *DCache;
+ pkgSourceList *SrcList;
+
+ public:
+ pkgPolicy *Policy;
+
+ // We look pretty much exactly like a pointer to a dep cache
+ inline operator pkgCache &() const {return *Cache;};
+ inline operator pkgCache *() const {return Cache;};
+ inline operator pkgDepCache &() const {return *DCache;};
+ inline operator pkgDepCache *() const {return DCache;};
+ inline operator pkgPolicy &() const {return *Policy;};
+ inline operator pkgPolicy *() const {return Policy;};
+ inline operator pkgSourceList &() const {return *SrcList;};
+ inline operator pkgSourceList *() const {return SrcList;};
+ inline pkgDepCache *operator ->() const {return DCache;};
+ inline pkgDepCache &operator *() const {return *DCache;};
+ inline pkgDepCache::StateCache &operator [](pkgCache::PkgIterator const &I) const {return (*DCache)[I];};
+ inline unsigned char &operator [](pkgCache::DepIterator const &I) const {return (*DCache)[I];};
+
+ bool BuildCaches(OpProgress *Progress = NULL,bool WithLock = true);
+ APT_DEPRECATED_MSG("Pass Progress in as a pointer") bool BuildCaches(OpProgress &Progress,bool const &WithLock = true) { return BuildCaches(&Progress, WithLock); };
+ bool BuildSourceList(OpProgress *Progress = NULL);
+ bool BuildPolicy(OpProgress *Progress = NULL);
+ bool BuildDepCache(OpProgress *Progress = NULL);
+ bool Open(OpProgress *Progress = NULL, bool WithLock = true);
+ inline bool ReadOnlyOpen(OpProgress *Progress = NULL) { return Open(Progress, false); };
+ APT_DEPRECATED_MSG("Pass Progress in as a pointer") bool Open(OpProgress &Progress,bool const &WithLock = true) { return Open(&Progress, WithLock); };
+ static void RemoveCaches();
+ void Close();
+
+ bool AddIndexFile(pkgIndexFile * const File);
+
+ inline pkgCache* GetPkgCache() { BuildCaches(NULL, false); return Cache; };
+ inline pkgDepCache* GetDepCache() { BuildDepCache(); return DCache; };
+ inline pkgPolicy* GetPolicy() { BuildPolicy(); return Policy; };
+ inline pkgSourceList* GetSourceList() { BuildSourceList(); return SrcList; };
+
+ inline bool IsPkgCacheBuilt() const { return (Cache != NULL); };
+ inline bool IsDepCacheBuilt() const { return (DCache != NULL); };
+ inline bool IsPolicyBuilt() const { return (Policy != NULL); };
+ inline bool IsSrcListBuilt() const { return (SrcList != NULL); };
+
+ pkgCacheFile();
+ explicit pkgCacheFile(pkgDepCache * const Owner);
+ virtual ~pkgCacheFile();
+};
+
+#endif
diff --git a/apt-pkg/cachefilter.cc b/apt-pkg/cachefilter.cc
new file mode 100644
index 000000000..cc4cdf73c
--- /dev/null
+++ b/apt-pkg/cachefilter.cc
@@ -0,0 +1,265 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/** \file cachefilter.h
+ Collection of functor classes */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/cachefilter.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/macros.h>
+
+#include <algorithm>
+#include <string>
+#include <unordered_map>
+#include <string.h>
+#include <regex.h>
+#include <fnmatch.h>
+
+#include <apti18n.h>
+ /*}}}*/
+namespace APT {
+
+APT_HIDDEN std::unordered_map<std::string, std::vector<std::string>> ArchToTupleMap;
+
+namespace CacheFilter {
+APT_CONST Matcher::~Matcher() {}
+APT_CONST PackageMatcher::~PackageMatcher() {}
+
+// Name matches RegEx /*{{{*/
+PackageNameMatchesRegEx::PackageNameMatchesRegEx(std::string const &Pattern) {
+ pattern = new regex_t;
+ int const Res = regcomp(pattern, Pattern.c_str(), REG_EXTENDED | REG_ICASE | REG_NOSUB);
+ if (Res == 0)
+ return;
+
+ delete pattern;
+ pattern = NULL;
+ char Error[300];
+ regerror(Res, pattern, Error, sizeof(Error));
+ _error->Error(_("Regex compilation error - %s"), Error);
+}
+bool PackageNameMatchesRegEx::operator() (pkgCache::PkgIterator const &Pkg) {
+ if (unlikely(pattern == NULL))
+ return false;
+ else
+ return regexec(pattern, Pkg.Name(), 0, 0, 0) == 0;
+}
+bool PackageNameMatchesRegEx::operator() (pkgCache::GrpIterator const &Grp) {
+ if (unlikely(pattern == NULL))
+ return false;
+ else
+ return regexec(pattern, Grp.Name(), 0, 0, 0) == 0;
+}
+PackageNameMatchesRegEx::~PackageNameMatchesRegEx() {
+ if (pattern == NULL)
+ return;
+ regfree(pattern);
+ delete pattern;
+}
+ /*}}}*/
+// Name matches Fnmatch /*{{{*/
+PackageNameMatchesFnmatch::PackageNameMatchesFnmatch(std::string const &Pattern) :
+ Pattern(Pattern) {}
+bool PackageNameMatchesFnmatch::operator() (pkgCache::PkgIterator const &Pkg) {
+ return fnmatch(Pattern.c_str(), Pkg.Name(), FNM_CASEFOLD) == 0;
+}
+bool PackageNameMatchesFnmatch::operator() (pkgCache::GrpIterator const &Grp) {
+ return fnmatch(Pattern.c_str(), Grp.Name(), FNM_CASEFOLD) == 0;
+}
+ /*}}}*/
+// Architecture matches <abi>-<libc>-<kernel>-<cpu> specification /*{{{*/
+//----------------------------------------------------------------------
+
+static std::vector<std::string> ArchToTuple(std::string arch) {
+ // Strip leading linux- from arch if present
+ // dpkg says this may disappear in the future
+ if (APT::String::Startswith(arch, std::string("linux-")))
+ arch = arch.substr(6);
+
+ auto it = ArchToTupleMap.find(arch);
+ if (it != ArchToTupleMap.end())
+ {
+ std::vector<std::string> result = it->second;
+ // Hack in support for triplets
+ if (result.size() == 3)
+ result.emplace(result.begin(), "base");
+ return result;
+ } else
+ {
+ return {};
+ }
+}
+
+static std::vector<std::string> PatternToTuple(std::string const &arch) {
+ std::vector<std::string> tuple = VectorizeString(arch, '-');
+ if (std::find(tuple.begin(), tuple.end(), std::string("any")) != tuple.end() ||
+ std::find(arch.begin(), arch.end(), '*') != arch.end()) {
+ while (tuple.size() < 4) {
+ tuple.emplace(tuple.begin(), "any");
+ }
+ return tuple;
+ } else
+ return ArchToTuple(arch);
+}
+
+/* The complete architecture, consisting of <abi>-<libc>-<kernel>-<cpu>. */
+static std::string CompleteArch(std::string const &arch, bool const isPattern) {
+ auto tuple = isPattern ? PatternToTuple(arch) : ArchToTuple(arch);
+
+ // Bah, the commandline will try and pass us stuff like amd64- -- we need
+ // that not to match an architecture, but the code below would turn it into
+ // a valid tuple. Let's just use an invalid tuple here.
+ if (APT::String::Endswith(arch, "-") || APT::String::Startswith(arch, "-"))
+ return "invalid-invalid-invalid-invalid";
+
+ if (tuple.empty()) {
+ // Fallback for unknown architectures
+ // Patterns never fail if they contain wildcards, so by this point, arch
+ // has no wildcards.
+ tuple = VectorizeString(arch, '-');
+ switch (tuple.size()) {
+ case 1:
+ tuple.emplace(tuple.begin(), "linux");
+ /* fall through */
+ case 2:
+ tuple.emplace(tuple.begin(), "gnu");
+ /* fall through */
+ case 3:
+ tuple.emplace(tuple.begin(), "base");
+ /* fall through */
+ break;
+ }
+ }
+
+ std::replace(tuple.begin(), tuple.end(), std::string("any"), std::string("*"));
+ return APT::String::Join(tuple, "-");
+}
+PackageArchitectureMatchesSpecification::PackageArchitectureMatchesSpecification(std::string const &pattern, bool const pisPattern) :
+ literal(pattern), complete(CompleteArch(pattern, pisPattern)), isPattern(pisPattern) {
+}
+bool PackageArchitectureMatchesSpecification::operator() (char const * const &arch) {
+ if (strcmp(literal.c_str(), arch) == 0 ||
+ strcmp(complete.c_str(), arch) == 0)
+ return true;
+ std::string const pkgarch = CompleteArch(arch, !isPattern);
+ if (isPattern == true)
+ return fnmatch(complete.c_str(), pkgarch.c_str(), 0) == 0;
+ return fnmatch(pkgarch.c_str(), complete.c_str(), 0) == 0;
+}
+bool PackageArchitectureMatchesSpecification::operator() (pkgCache::PkgIterator const &Pkg) {
+ return (*this)(Pkg.Arch());
+}
+PackageArchitectureMatchesSpecification::~PackageArchitectureMatchesSpecification() {
+}
+ /*}}}*/
+// Package is new install /*{{{*/
+PackageIsNewInstall::PackageIsNewInstall(pkgCacheFile * const Cache) : Cache(Cache) {}
+APT_PURE bool PackageIsNewInstall::operator() (pkgCache::PkgIterator const &Pkg) {
+ return (*Cache)[Pkg].NewInstall();
+}
+PackageIsNewInstall::~PackageIsNewInstall() {}
+ /*}}}*/
+// Generica like True, False, NOT, AND, OR /*{{{*/
+APT_CONST bool TrueMatcher::operator() (pkgCache::PkgIterator const &) { return true; }
+APT_CONST bool TrueMatcher::operator() (pkgCache::GrpIterator const &) { return true; }
+APT_CONST bool TrueMatcher::operator() (pkgCache::VerIterator const &) { return true; }
+
+APT_CONST bool FalseMatcher::operator() (pkgCache::PkgIterator const &) { return false; }
+APT_CONST bool FalseMatcher::operator() (pkgCache::GrpIterator const &) { return false; }
+APT_CONST bool FalseMatcher::operator() (pkgCache::VerIterator const &) { return false; }
+
+NOTMatcher::NOTMatcher(Matcher * const matcher) : matcher(matcher) {}
+bool NOTMatcher::operator() (pkgCache::PkgIterator const &Pkg) { return ! (*matcher)(Pkg); }
+bool NOTMatcher::operator() (pkgCache::GrpIterator const &Grp) { return ! (*matcher)(Grp); }
+bool NOTMatcher::operator() (pkgCache::VerIterator const &Ver) { return ! (*matcher)(Ver); }
+NOTMatcher::~NOTMatcher() { delete matcher; }
+
+ANDMatcher::ANDMatcher() {}
+ANDMatcher::ANDMatcher(Matcher * const matcher1) {
+ AND(matcher1);
+}
+ANDMatcher::ANDMatcher(Matcher * const matcher1, Matcher * const matcher2) {
+ AND(matcher1).AND(matcher2);
+}
+ANDMatcher::ANDMatcher(Matcher * const matcher1, Matcher * const matcher2, Matcher * const matcher3) {
+ AND(matcher1).AND(matcher2).AND(matcher3);
+}
+ANDMatcher::ANDMatcher(Matcher * const matcher1, Matcher * const matcher2, Matcher * const matcher3, Matcher * const matcher4) {
+ AND(matcher1).AND(matcher2).AND(matcher3).AND(matcher4);
+}
+ANDMatcher::ANDMatcher(Matcher * const matcher1, Matcher * const matcher2, Matcher * const matcher3, Matcher * const matcher4, Matcher * const matcher5) {
+ AND(matcher1).AND(matcher2).AND(matcher3).AND(matcher4).AND(matcher5);
+}
+ANDMatcher& ANDMatcher::AND(Matcher * const matcher) { matchers.push_back(matcher); return *this; }
+bool ANDMatcher::operator() (pkgCache::PkgIterator const &Pkg) {
+ for (std::vector<Matcher *>::const_iterator M = matchers.begin(); M != matchers.end(); ++M)
+ if ((**M)(Pkg) == false)
+ return false;
+ return true;
+}
+bool ANDMatcher::operator() (pkgCache::GrpIterator const &Grp) {
+ for (std::vector<Matcher *>::const_iterator M = matchers.begin(); M != matchers.end(); ++M)
+ if ((**M)(Grp) == false)
+ return false;
+ return true;
+}
+bool ANDMatcher::operator() (pkgCache::VerIterator const &Ver) {
+ for (std::vector<Matcher *>::const_iterator M = matchers.begin(); M != matchers.end(); ++M)
+ if ((**M)(Ver) == false)
+ return false;
+ return true;
+}
+ANDMatcher::~ANDMatcher() {
+ for (std::vector<Matcher *>::iterator M = matchers.begin(); M != matchers.end(); ++M)
+ delete *M;
+}
+
+ORMatcher::ORMatcher() {}
+ORMatcher::ORMatcher(Matcher * const matcher1) {
+ OR(matcher1);
+}
+ORMatcher::ORMatcher(Matcher * const matcher1, Matcher * const matcher2) {
+ OR(matcher1).OR(matcher2);
+}
+ORMatcher::ORMatcher(Matcher * const matcher1, Matcher * const matcher2, Matcher * const matcher3) {
+ OR(matcher1).OR(matcher2).OR(matcher3);
+}
+ORMatcher::ORMatcher(Matcher * const matcher1, Matcher * const matcher2, Matcher * const matcher3, Matcher * const matcher4) {
+ OR(matcher1).OR(matcher2).OR(matcher3).OR(matcher4);
+}
+ORMatcher::ORMatcher(Matcher * const matcher1, Matcher * const matcher2, Matcher * const matcher3, Matcher * const matcher4, Matcher * const matcher5) {
+ OR(matcher1).OR(matcher2).OR(matcher3).OR(matcher4).OR(matcher5);
+}
+ORMatcher& ORMatcher::OR(Matcher * const matcher) { matchers.push_back(matcher); return *this; }
+bool ORMatcher::operator() (pkgCache::PkgIterator const &Pkg) {
+ for (std::vector<Matcher *>::const_iterator M = matchers.begin(); M != matchers.end(); ++M)
+ if ((**M)(Pkg) == true)
+ return true;
+ return false;
+}
+bool ORMatcher::operator() (pkgCache::GrpIterator const &Grp) {
+ for (std::vector<Matcher *>::const_iterator M = matchers.begin(); M != matchers.end(); ++M)
+ if ((**M)(Grp) == true)
+ return true;
+ return false;
+}
+bool ORMatcher::operator() (pkgCache::VerIterator const &Ver) {
+ for (std::vector<Matcher *>::const_iterator M = matchers.begin(); M != matchers.end(); ++M)
+ if ((**M)(Ver) == true)
+ return true;
+ return false;
+}
+ORMatcher::~ORMatcher() {
+ for (std::vector<Matcher *>::iterator M = matchers.begin(); M != matchers.end(); ++M)
+ delete *M;
+}
+ /*}}}*/
+
+}
+}
diff --git a/apt-pkg/cachefilter.h b/apt-pkg/cachefilter.h
new file mode 100644
index 000000000..30a3368e5
--- /dev/null
+++ b/apt-pkg/cachefilter.h
@@ -0,0 +1,151 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/** \file cachefilter.h
+ Collection of functor classes */
+ /*}}}*/
+#ifndef APT_CACHEFILTER_H
+#define APT_CACHEFILTER_H
+// Include Files /*{{{*/
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#include <string>
+#include <vector>
+
+#include <regex.h>
+
+class pkgCacheFile;
+ /*}}}*/
+namespace APT {
+namespace CacheFilter {
+
+class Matcher {
+public:
+ virtual bool operator() (pkgCache::PkgIterator const &/*Pkg*/) = 0;
+ virtual bool operator() (pkgCache::GrpIterator const &/*Grp*/) = 0;
+ virtual bool operator() (pkgCache::VerIterator const &/*Ver*/) = 0;
+ virtual ~Matcher();
+};
+
+class PackageMatcher : public Matcher {
+public:
+ virtual bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE = 0;
+ virtual bool operator() (pkgCache::VerIterator const &Ver) APT_OVERRIDE { return (*this)(Ver.ParentPkg()); }
+ virtual bool operator() (pkgCache::GrpIterator const &/*Grp*/) APT_OVERRIDE { return false; }
+ virtual ~PackageMatcher();
+};
+
+// Generica like True, False, NOT, AND, OR /*{{{*/
+class TrueMatcher : public Matcher {
+public:
+ virtual bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
+ virtual bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE;
+ virtual bool operator() (pkgCache::VerIterator const &Ver) APT_OVERRIDE;
+};
+
+class FalseMatcher : public Matcher {
+public:
+ virtual bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
+ virtual bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE;
+ virtual bool operator() (pkgCache::VerIterator const &Ver) APT_OVERRIDE;
+};
+
+class NOTMatcher : public Matcher {
+ Matcher * const matcher;
+public:
+ explicit NOTMatcher(Matcher * const matcher);
+ virtual bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
+ virtual bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE;
+ virtual bool operator() (pkgCache::VerIterator const &Ver) APT_OVERRIDE;
+ virtual ~NOTMatcher();
+};
+
+class ANDMatcher : public Matcher {
+ std::vector<Matcher *> matchers;
+public:
+ // 5 ought to be enough for everybody… c++11 variadic templates would be nice
+ ANDMatcher();
+ explicit ANDMatcher(Matcher * const matcher1);
+ ANDMatcher(Matcher * const matcher1, Matcher * const matcher2);
+ ANDMatcher(Matcher * const matcher1, Matcher * const matcher2, Matcher * const matcher3);
+ ANDMatcher(Matcher * const matcher1, Matcher * const matcher2, Matcher * const matcher3, Matcher * const matcher4);
+ ANDMatcher(Matcher * const matcher1, Matcher * const matcher2, Matcher * const matcher3, Matcher * const matcher4, Matcher * const matcher5);
+ ANDMatcher& AND(Matcher * const matcher);
+ virtual bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
+ virtual bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE;
+ virtual bool operator() (pkgCache::VerIterator const &Ver) APT_OVERRIDE;
+ virtual ~ANDMatcher();
+};
+class ORMatcher : public Matcher {
+ std::vector<Matcher *> matchers;
+public:
+ // 5 ought to be enough for everybody… c++11 variadic templates would be nice
+ ORMatcher();
+ explicit ORMatcher(Matcher * const matcher1);
+ ORMatcher(Matcher * const matcher1, Matcher * const matcher2);
+ ORMatcher(Matcher * const matcher1, Matcher * const matcher2, Matcher * const matcher3);
+ ORMatcher(Matcher * const matcher1, Matcher * const matcher2, Matcher * const matcher3, Matcher * const matcher4);
+ ORMatcher(Matcher * const matcher1, Matcher * const matcher2, Matcher * const matcher3, Matcher * const matcher4, Matcher * const matcher5);
+ ORMatcher& OR(Matcher * const matcher);
+ virtual bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
+ virtual bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE;
+ virtual bool operator() (pkgCache::VerIterator const &Ver) APT_OVERRIDE;
+ virtual ~ORMatcher();
+};
+ /*}}}*/
+class PackageNameMatchesRegEx : public PackageMatcher { /*{{{*/
+ regex_t* pattern;
+public:
+ explicit PackageNameMatchesRegEx(std::string const &Pattern);
+ virtual bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
+ virtual bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE;
+ virtual ~PackageNameMatchesRegEx();
+};
+ /*}}}*/
+class PackageNameMatchesFnmatch : public PackageMatcher { /*{{{*/
+ const std::string Pattern;
+public:
+ explicit PackageNameMatchesFnmatch(std::string const &Pattern);
+ virtual bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
+ virtual bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE;
+ virtual ~PackageNameMatchesFnmatch() {};
+};
+ /*}}}*/
+class PackageArchitectureMatchesSpecification : public PackageMatcher { /*{{{*/
+/** \class PackageArchitectureMatchesSpecification
+ \brief matching against architecture specification strings
+
+ The strings are of the format <libc>-<kernel>-<cpu> where either component,
+ or the whole string, can be the wildcard "any" as defined in
+ debian-policy §11.1 "Architecture specification strings".
+
+ Examples: i386, mipsel, musl-linux-amd64, linux-any, any-amd64, any */
+ std::string literal;
+ std::string complete;
+ bool isPattern;
+public:
+ /** \brief matching against architecture specification strings
+ *
+ * @param pattern is the architecture specification string
+ * @param isPattern defines if the given \b pattern is a
+ * architecture specification pattern to match others against
+ * or if it is the fixed string and matched against patterns
+ */
+ PackageArchitectureMatchesSpecification(std::string const &pattern, bool const isPattern = true);
+ bool operator() (char const * const &arch);
+ virtual bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
+ virtual ~PackageArchitectureMatchesSpecification();
+};
+ /*}}}*/
+class PackageIsNewInstall : public PackageMatcher { /*{{{*/
+ pkgCacheFile * const Cache;
+public:
+ explicit PackageIsNewInstall(pkgCacheFile * const Cache);
+ virtual bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
+ virtual ~PackageIsNewInstall();
+};
+ /*}}}*/
+
+}
+}
+#endif
diff --git a/apt-pkg/cacheiterators.h b/apt-pkg/cacheiterators.h
new file mode 100644
index 000000000..62d0ab59c
--- /dev/null
+++ b/apt-pkg/cacheiterators.h
@@ -0,0 +1,527 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Cache Iterators - Iterators for navigating the cache structure
+
+ The iterators all provides ++,==,!=,->,* and end for their type.
+ The end function can be used to tell if the list has been fully
+ traversed.
+
+ Unlike STL iterators these contain helper functions to access the data
+ that is being iterated over. This is because the data structures can't
+ be formed in a manner that is intuitive to use and also mmapable.
+
+ For each variable in the target structure that would need a translation
+ to be accessed correctly a translating function of the same name is
+ present in the iterator. If applicable the translating function will
+ return an iterator.
+
+ The DepIterator can iterate over two lists, a list of 'version depends'
+ or a list of 'package reverse depends'. The type is determined by the
+ structure passed to the constructor, which should be the structure
+ that has the depends pointer as a member. The provide iterator has the
+ same system.
+
+ This header is not user includable, please use apt-pkg/pkgcache.h
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_CACHEITERATORS_H
+#define PKGLIB_CACHEITERATORS_H
+#include<apt-pkg/pkgcache.h>
+#include<apt-pkg/macros.h>
+
+#include<iterator>
+#include <iosfwd>
+#include <string>
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+#include <apt-pkg/string_view.h>
+#endif
+
+#include<string.h>
+
+// abstract Iterator template /*{{{*/
+/* This template provides the very basic iterator methods we
+ need to have for doing some walk-over-the-cache magic */
+template<typename Str, typename Itr> class pkgCache::Iterator :
+ public std::iterator<std::forward_iterator_tag, Str> {
+ /** \brief Returns the Pointer for this struct in the owner
+ * The implementation of this method should be pretty short
+ * as it will only return the Pointer into the mmap stored
+ * in the owner but the name of this pointer is different for
+ * each structure and we want to abstract here at least for the
+ * basic methods from the actual structure.
+ * \return Pointer to the first structure of this type
+ */
+ Str* OwnerPointer() const { return static_cast<Itr const*>(this)->OwnerPointer(); }
+
+ protected:
+ Str *S;
+ pkgCache *Owner;
+
+ public:
+ // Iteration
+ inline bool end() const {return Owner == 0 || S == OwnerPointer();}
+
+ // Comparison
+ inline bool operator ==(const Itr &B) const {return S == B.S;}
+ inline bool operator !=(const Itr &B) const {return S != B.S;}
+
+ // Accessors
+ inline Str *operator ->() {return S;}
+ inline Str const *operator ->() const {return S;}
+ inline operator Str *() {return S == OwnerPointer() ? 0 : S;}
+ inline operator Str const *() const {return S == OwnerPointer() ? 0 : S;}
+ inline Str &operator *() {return *S;}
+ inline Str const &operator *() const {return *S;}
+ inline pkgCache *Cache() const {return Owner;}
+
+ // Mixed stuff
+ inline bool IsGood() const { return S && Owner && ! end();}
+ inline unsigned long Index() const {return S - OwnerPointer();}
+
+ void ReMap(void const * const oldMap, void const * const newMap) {
+ if (Owner == 0 || S == 0)
+ return;
+ S += (Str const * const)(newMap) - (Str const * const)(oldMap);
+ }
+
+ // Constructors - look out for the variable assigning
+ inline Iterator() : S(0), Owner(0) {}
+ inline Iterator(pkgCache &Owner,Str *T = 0) : S(T), Owner(&Owner) {}
+};
+ /*}}}*/
+// Group Iterator /*{{{*/
+/* Packages with the same name are collected in a Group so someone only
+ interest in package names can iterate easily over the names, so the
+ different architectures can be treated as of the "same" package
+ (apt internally treat them as totally different packages) */
+class pkgCache::GrpIterator: public Iterator<Group, GrpIterator> {
+ long HashIndex;
+
+ public:
+ inline Group* OwnerPointer() const {
+ return (Owner != 0) ? Owner->GrpP : 0;
+ }
+
+ // This constructor is the 'begin' constructor, never use it.
+ explicit inline GrpIterator(pkgCache &Owner) : Iterator<Group, GrpIterator>(Owner), HashIndex(-1) {
+ S = OwnerPointer();
+ operator++();
+ }
+
+ GrpIterator& operator++();
+ inline GrpIterator operator++(int) { GrpIterator const tmp(*this); operator++(); return tmp; }
+
+ inline const char *Name() const {return S->Name == 0?0:Owner->StrP + S->Name;}
+ inline PkgIterator PackageList() const;
+ PkgIterator FindPkg(std::string Arch = "any") const;
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ APT_HIDDEN PkgIterator FindPkg(APT::StringView Arch = APT::StringView("any", 3)) const;
+ APT_HIDDEN PkgIterator FindPkg(const char *Arch) const;
+#endif
+ /** \brief find the package with the "best" architecture
+
+ The best architecture is either the "native" or the first
+ in the list of Architectures which is not an end-Pointer
+
+ \param PreferNonVirtual tries to respond with a non-virtual package
+ and only if this fails returns the best virtual package */
+ PkgIterator FindPreferredPkg(bool const &PreferNonVirtual = true) const;
+ PkgIterator NextPkg(PkgIterator const &Pkg) const;
+
+ // Constructors
+ inline GrpIterator(pkgCache &Owner, Group *Trg) : Iterator<Group, GrpIterator>(Owner, Trg), HashIndex(0) {
+ if (S == 0)
+ S = OwnerPointer();
+ }
+ inline GrpIterator() : Iterator<Group, GrpIterator>(), HashIndex(0) {}
+
+};
+ /*}}}*/
+// Package Iterator /*{{{*/
+class pkgCache::PkgIterator: public Iterator<Package, PkgIterator> {
+ long HashIndex;
+
+ public:
+ inline Package* OwnerPointer() const {
+ return (Owner != 0) ? Owner->PkgP : 0;
+ }
+
+ // This constructor is the 'begin' constructor, never use it.
+ explicit inline PkgIterator(pkgCache &Owner) : Iterator<Package, PkgIterator>(Owner), HashIndex(-1) {
+ S = OwnerPointer();
+ operator++();
+ }
+
+ PkgIterator& operator++();
+ inline PkgIterator operator++(int) { PkgIterator const tmp(*this); operator++(); return tmp; }
+
+ enum OkState {NeedsNothing,NeedsUnpack,NeedsConfigure};
+
+ // Accessors
+ inline const char *Name() const { return Group().Name(); }
+ // Versions have sections - and packages can have different versions with different sections
+ // so this interface is broken by design. Run as fast as you can to Version.Section().
+ APT_DEPRECATED_MSG("Use the .Section method of VerIterator instead") inline const char *Section() const;
+ inline bool Purge() const {return S->CurrentState == pkgCache::State::Purge ||
+ (S->CurrentVer == 0 && S->CurrentState == pkgCache::State::NotInstalled);}
+ inline const char *Arch() const {return S->Arch == 0?0:Owner->StrP + S->Arch;}
+ inline APT_PURE GrpIterator Group() const { return GrpIterator(*Owner, Owner->GrpP + S->Group);}
+
+ inline VerIterator VersionList() const APT_PURE;
+ inline VerIterator CurrentVer() const APT_PURE;
+ inline DepIterator RevDependsList() const APT_PURE;
+ inline PrvIterator ProvidesList() const APT_PURE;
+ OkState State() const APT_PURE;
+ APT_DEPRECATED_MSG("This method does not respect apt_preferences! Use pkgDepCache::GetCandidateVersion(Pkg)") const char *CandVersion() const APT_PURE;
+ const char *CurVersion() const APT_PURE;
+
+ //Nice printable representation
+ APT_DEPRECATED_MSG("Use APT::PrettyPkg instead") friend std::ostream& operator <<(std::ostream& out, PkgIterator i);
+ std::string FullName(bool const &Pretty = false) const;
+
+ // Constructors
+ inline PkgIterator(pkgCache &Owner,Package *Trg) : Iterator<Package, PkgIterator>(Owner, Trg), HashIndex(0) {
+ if (S == 0)
+ S = OwnerPointer();
+ }
+ inline PkgIterator() : Iterator<Package, PkgIterator>(), HashIndex(0) {}
+};
+ /*}}}*/
+// Version Iterator /*{{{*/
+class pkgCache::VerIterator : public Iterator<Version, VerIterator> {
+ public:
+ inline Version* OwnerPointer() const {
+ return (Owner != 0) ? Owner->VerP : 0;
+ }
+
+ // Iteration
+ inline VerIterator& operator++() {if (S != Owner->VerP) S = Owner->VerP + S->NextVer; return *this;}
+ inline VerIterator operator++(int) { VerIterator const tmp(*this); operator++(); return tmp; }
+
+ // Comparison
+ int CompareVer(const VerIterator &B) const;
+ /** \brief compares two version and returns if they are similar
+
+ This method should be used to identify if two pseudo versions are
+ referring to the same "real" version */
+ inline bool SimilarVer(const VerIterator &B) const {
+ return (B.end() == false && S->Hash == B->Hash && strcmp(VerStr(), B.VerStr()) == 0);
+ }
+
+ // Accessors
+ inline const char *VerStr() const {return S->VerStr == 0?0:Owner->StrP + S->VerStr;}
+ inline const char *Section() const {return S->Section == 0?0:Owner->StrP + S->Section;}
+ /** \brief source package name this version comes from
+ Always contains the name, even if it is the same as the binary name */
+ inline const char *SourcePkgName() const {return Owner->StrP + S->SourcePkgName;}
+ /** \brief source version this version comes from
+ Always contains the version string, even if it is the same as the binary version */
+ inline const char *SourceVerStr() const {return Owner->StrP + S->SourceVerStr;}
+ inline const char *Arch() const {
+ if ((S->MultiArch & pkgCache::Version::All) == pkgCache::Version::All)
+ return "all";
+ return S->ParentPkg == 0?0:Owner->StrP + ParentPkg()->Arch;
+ }
+ inline PkgIterator ParentPkg() const {return PkgIterator(*Owner,Owner->PkgP + S->ParentPkg);}
+
+ inline DescIterator DescriptionList() const;
+ DescIterator TranslatedDescription() const;
+ inline DepIterator DependsList() const;
+ inline PrvIterator ProvidesList() const;
+ inline VerFileIterator FileList() const;
+ bool Downloadable() const;
+ inline const char *PriorityType() const {return Owner->Priority(S->Priority);}
+ const char *MultiArchType() const APT_PURE;
+ std::string RelStr() const;
+
+ bool Automatic() const;
+ VerFileIterator NewestFile() const;
+
+ inline VerIterator(pkgCache &Owner,Version *Trg = 0) : Iterator<Version, VerIterator>(Owner, Trg) {
+ if (S == 0)
+ S = OwnerPointer();
+ }
+ inline VerIterator() : Iterator<Version, VerIterator>() {}
+};
+ /*}}}*/
+// Description Iterator /*{{{*/
+class pkgCache::DescIterator : public Iterator<Description, DescIterator> {
+ public:
+ inline Description* OwnerPointer() const {
+ return (Owner != 0) ? Owner->DescP : 0;
+ }
+
+ // Iteration
+ inline DescIterator& operator++() {if (S != Owner->DescP) S = Owner->DescP + S->NextDesc; return *this;}
+ inline DescIterator operator++(int) { DescIterator const tmp(*this); operator++(); return tmp; }
+
+ // Comparison
+ int CompareDesc(const DescIterator &B) const;
+
+ // Accessors
+ inline const char *LanguageCode() const {return Owner->StrP + S->language_code;}
+ inline const char *md5() const {return Owner->StrP + S->md5sum;}
+ inline DescFileIterator FileList() const;
+
+ inline DescIterator() : Iterator<Description, DescIterator>() {}
+ inline DescIterator(pkgCache &Owner,Description *Trg = 0) : Iterator<Description, DescIterator>(Owner, Trg) {
+ if (S == 0)
+ S = Owner.DescP;
+ }
+};
+ /*}}}*/
+// Dependency iterator /*{{{*/
+class pkgCache::DepIterator : public Iterator<Dependency, DepIterator> {
+ enum {DepVer, DepRev} Type;
+ DependencyData * S2;
+
+ public:
+ inline Dependency* OwnerPointer() const {
+ return (Owner != 0) ? Owner->DepP : 0;
+ }
+
+ // Iteration
+ DepIterator& operator++();
+ inline DepIterator operator++(int) { DepIterator const tmp(*this); operator++(); return tmp; }
+
+ // Accessors
+ inline const char *TargetVer() const {return S2->Version == 0?0:Owner->StrP + S2->Version;}
+ inline PkgIterator TargetPkg() const {return PkgIterator(*Owner,Owner->PkgP + S2->Package);}
+ inline PkgIterator SmartTargetPkg() const {PkgIterator R(*Owner,0);SmartTargetPkg(R);return R;}
+ inline VerIterator ParentVer() const {return VerIterator(*Owner,Owner->VerP + S->ParentVer);}
+ inline PkgIterator ParentPkg() const {return PkgIterator(*Owner,Owner->PkgP + Owner->VerP[S->ParentVer].ParentPkg);}
+ inline bool Reverse() const {return Type == DepRev;}
+ bool IsCritical() const APT_PURE;
+ bool IsNegative() const APT_PURE;
+ bool IsIgnorable(PrvIterator const &Prv) const APT_PURE;
+ bool IsIgnorable(PkgIterator const &Pkg) const APT_PURE;
+ /* MultiArch can be translated to SingleArch for an resolver and we did so,
+ by adding dependencies to help the resolver understand the problem, but
+ sometimes it is needed to identify these to ignore them… */
+ inline bool IsMultiArchImplicit() const APT_PURE {
+ return (S2->CompareOp & pkgCache::Dep::MultiArchImplicit) == pkgCache::Dep::MultiArchImplicit;
+ }
+ /* This covers additionally negative dependencies, which aren't arch-specific,
+ but change architecture nonetheless as a Conflicts: foo does applies for all archs */
+ bool IsImplicit() const APT_PURE;
+
+ bool IsSatisfied(VerIterator const &Ver) const APT_PURE;
+ bool IsSatisfied(PrvIterator const &Prv) const APT_PURE;
+ void GlobOr(DepIterator &Start,DepIterator &End);
+ Version **AllTargets() const;
+ bool SmartTargetPkg(PkgIterator &Result) const;
+ inline const char *CompType() const {return Owner->CompType(S2->CompareOp);}
+ inline const char *DepType() const {return Owner->DepType(S2->Type);}
+
+ // overrides because we are special
+ struct DependencyProxy
+ {
+ map_stringitem_t &Version;
+ map_pointer_t &Package;
+ map_id_t &ID;
+ unsigned char &Type;
+ unsigned char &CompareOp;
+ map_pointer_t &ParentVer;
+ map_pointer_t &DependencyData;
+ map_pointer_t &NextRevDepends;
+ map_pointer_t &NextDepends;
+ map_pointer_t &NextData;
+ DependencyProxy const * operator->() const { return this; }
+ DependencyProxy * operator->() { return this; }
+ };
+ inline DependencyProxy operator->() const {return (DependencyProxy) { S2->Version, S2->Package, S->ID, S2->Type, S2->CompareOp, S->ParentVer, S->DependencyData, S->NextRevDepends, S->NextDepends, S2->NextData };}
+ inline DependencyProxy operator->() {return (DependencyProxy) { S2->Version, S2->Package, S->ID, S2->Type, S2->CompareOp, S->ParentVer, S->DependencyData, S->NextRevDepends, S->NextDepends, S2->NextData };}
+ void ReMap(void const * const oldMap, void const * const newMap)
+ {
+ Iterator<Dependency, DepIterator>::ReMap(oldMap, newMap);
+ if (Owner == 0 || S == 0 || S2 == 0)
+ return;
+ S2 += (DependencyData const * const)(newMap) - (DependencyData const * const)(oldMap);
+ }
+
+ //Nice printable representation
+ APT_DEPRECATED_MSG("Use APT::PrettyDep instead") friend std::ostream& operator <<(std::ostream& out, DepIterator D);
+
+ inline DepIterator(pkgCache &Owner, Dependency *Trg, Version* = 0) :
+ Iterator<Dependency, DepIterator>(Owner, Trg), Type(DepVer), S2(Trg == 0 ? Owner.DepDataP : (Owner.DepDataP + Trg->DependencyData)) {
+ if (S == 0)
+ S = Owner.DepP;
+ }
+ inline DepIterator(pkgCache &Owner, Dependency *Trg, Package*) :
+ Iterator<Dependency, DepIterator>(Owner, Trg), Type(DepRev), S2(Trg == 0 ? Owner.DepDataP : (Owner.DepDataP + Trg->DependencyData)) {
+ if (S == 0)
+ S = Owner.DepP;
+ }
+ inline DepIterator() : Iterator<Dependency, DepIterator>(), Type(DepVer), S2(0) {}
+};
+ /*}}}*/
+// Provides iterator /*{{{*/
+class pkgCache::PrvIterator : public Iterator<Provides, PrvIterator> {
+ enum {PrvVer, PrvPkg} Type;
+
+ public:
+ inline Provides* OwnerPointer() const {
+ return (Owner != 0) ? Owner->ProvideP : 0;
+ }
+
+ // Iteration
+ inline PrvIterator& operator ++() {if (S != Owner->ProvideP) S = Owner->ProvideP +
+ (Type == PrvVer?S->NextPkgProv:S->NextProvides); return *this;}
+ inline PrvIterator operator++(int) { PrvIterator const tmp(*this); operator++(); return tmp; }
+
+ // Accessors
+ inline const char *Name() const {return ParentPkg().Name();}
+ inline const char *ProvideVersion() const {return S->ProvideVersion == 0?0:Owner->StrP + S->ProvideVersion;}
+ inline PkgIterator ParentPkg() const {return PkgIterator(*Owner,Owner->PkgP + S->ParentPkg);}
+ inline VerIterator OwnerVer() const {return VerIterator(*Owner,Owner->VerP + S->Version);}
+ inline PkgIterator OwnerPkg() const {return PkgIterator(*Owner,Owner->PkgP + Owner->VerP[S->Version].ParentPkg);}
+
+ /* MultiArch can be translated to SingleArch for an resolver and we did so,
+ by adding provides to help the resolver understand the problem, but
+ sometimes it is needed to identify these to ignore them… */
+ bool IsMultiArchImplicit() const APT_PURE
+ { return (S->Flags & pkgCache::Flag::MultiArchImplicit) == pkgCache::Flag::MultiArchImplicit; }
+
+
+ inline PrvIterator() : Iterator<Provides, PrvIterator>(), Type(PrvVer) {}
+ inline PrvIterator(pkgCache &Owner, Provides *Trg, Version*) :
+ Iterator<Provides, PrvIterator>(Owner, Trg), Type(PrvVer) {
+ if (S == 0)
+ S = Owner.ProvideP;
+ }
+ inline PrvIterator(pkgCache &Owner, Provides *Trg, Package*) :
+ Iterator<Provides, PrvIterator>(Owner, Trg), Type(PrvPkg) {
+ if (S == 0)
+ S = Owner.ProvideP;
+ }
+};
+ /*}}}*/
+// Release file /*{{{*/
+class pkgCache::RlsFileIterator : public Iterator<ReleaseFile, RlsFileIterator> {
+ public:
+ inline ReleaseFile* OwnerPointer() const {
+ return (Owner != 0) ? Owner->RlsFileP : 0;
+ }
+
+ // Iteration
+ inline RlsFileIterator& operator++() {if (S != Owner->RlsFileP) S = Owner->RlsFileP + S->NextFile;return *this;}
+ inline RlsFileIterator operator++(int) { RlsFileIterator const tmp(*this); operator++(); return tmp; }
+
+ // Accessors
+ inline const char *FileName() const {return S->FileName == 0?0:Owner->StrP + S->FileName;}
+ inline const char *Archive() const {return S->Archive == 0?0:Owner->StrP + S->Archive;}
+ inline const char *Version() const {return S->Version == 0?0:Owner->StrP + S->Version;}
+ inline const char *Origin() const {return S->Origin == 0?0:Owner->StrP + S->Origin;}
+ inline const char *Codename() const {return S->Codename ==0?0:Owner->StrP + S->Codename;}
+ inline const char *Label() const {return S->Label == 0?0:Owner->StrP + S->Label;}
+ inline const char *Site() const {return S->Site == 0?0:Owner->StrP + S->Site;}
+ inline bool Flagged(pkgCache::Flag::ReleaseFileFlags const flag) const {return (S->Flags & flag) == flag; }
+
+ bool IsOk();
+ std::string RelStr();
+
+ // Constructors
+ inline RlsFileIterator() : Iterator<ReleaseFile, RlsFileIterator>() {}
+ explicit inline RlsFileIterator(pkgCache &Owner) : Iterator<ReleaseFile, RlsFileIterator>(Owner, Owner.RlsFileP) {}
+ inline RlsFileIterator(pkgCache &Owner,ReleaseFile *Trg) : Iterator<ReleaseFile, RlsFileIterator>(Owner, Trg) {}
+};
+ /*}}}*/
+// Package file /*{{{*/
+class pkgCache::PkgFileIterator : public Iterator<PackageFile, PkgFileIterator> {
+ public:
+ inline PackageFile* OwnerPointer() const {
+ return (Owner != 0) ? Owner->PkgFileP : 0;
+ }
+
+ // Iteration
+ inline PkgFileIterator& operator++() {if (S != Owner->PkgFileP) S = Owner->PkgFileP + S->NextFile; return *this;}
+ inline PkgFileIterator operator++(int) { PkgFileIterator const tmp(*this); operator++(); return tmp; }
+
+ // Accessors
+ inline const char *FileName() const {return S->FileName == 0?0:Owner->StrP + S->FileName;}
+ inline pkgCache::RlsFileIterator ReleaseFile() const {return RlsFileIterator(*Owner, Owner->RlsFileP + S->Release);}
+ inline const char *Archive() const {return S->Release == 0 ? Component() : ReleaseFile().Archive();}
+ inline const char *Version() const {return S->Release == 0 ? NULL : ReleaseFile().Version();}
+ inline const char *Origin() const {return S->Release == 0 ? NULL : ReleaseFile().Origin();}
+ inline const char *Codename() const {return S->Release == 0 ? NULL : ReleaseFile().Codename();}
+ inline const char *Label() const {return S->Release == 0 ? NULL : ReleaseFile().Label();}
+ inline const char *Site() const {return S->Release == 0 ? NULL : ReleaseFile().Site();}
+ inline bool Flagged(pkgCache::Flag::ReleaseFileFlags const flag) const {return S->Release== 0 ? false : ReleaseFile().Flagged(flag);}
+ inline bool Flagged(pkgCache::Flag::PkgFFlags const flag) const {return (S->Flags & flag) == flag;}
+ inline const char *Component() const {return S->Component == 0?0:Owner->StrP + S->Component;}
+ inline const char *Architecture() const {return S->Architecture == 0?0:Owner->StrP + S->Architecture;}
+ inline const char *IndexType() const {return S->IndexType == 0?0:Owner->StrP + S->IndexType;}
+
+ bool IsOk();
+ std::string RelStr();
+
+ // Constructors
+ inline PkgFileIterator() : Iterator<PackageFile, PkgFileIterator>() {}
+ explicit inline PkgFileIterator(pkgCache &Owner) : Iterator<PackageFile, PkgFileIterator>(Owner, Owner.PkgFileP) {}
+ inline PkgFileIterator(pkgCache &Owner,PackageFile *Trg) : Iterator<PackageFile, PkgFileIterator>(Owner, Trg) {}
+};
+ /*}}}*/
+// Version File /*{{{*/
+class pkgCache::VerFileIterator : public pkgCache::Iterator<VerFile, VerFileIterator> {
+ public:
+ inline VerFile* OwnerPointer() const {
+ return (Owner != 0) ? Owner->VerFileP : 0;
+ }
+
+ // Iteration
+ inline VerFileIterator& operator++() {if (S != Owner->VerFileP) S = Owner->VerFileP + S->NextFile; return *this;}
+ inline VerFileIterator operator++(int) { VerFileIterator const tmp(*this); operator++(); return tmp; }
+
+ // Accessors
+ inline PkgFileIterator File() const {return PkgFileIterator(*Owner,S->File + Owner->PkgFileP);}
+
+ inline VerFileIterator() : Iterator<VerFile, VerFileIterator>() {}
+ inline VerFileIterator(pkgCache &Owner,VerFile *Trg) : Iterator<VerFile, VerFileIterator>(Owner, Trg) {}
+};
+ /*}}}*/
+// Description File /*{{{*/
+class pkgCache::DescFileIterator : public Iterator<DescFile, DescFileIterator> {
+ public:
+ inline DescFile* OwnerPointer() const {
+ return (Owner != 0) ? Owner->DescFileP : 0;
+ }
+
+ // Iteration
+ inline DescFileIterator& operator++() {if (S != Owner->DescFileP) S = Owner->DescFileP + S->NextFile; return *this;}
+ inline DescFileIterator operator++(int) { DescFileIterator const tmp(*this); operator++(); return tmp; }
+
+ // Accessors
+ inline PkgFileIterator File() const {return PkgFileIterator(*Owner,S->File + Owner->PkgFileP);}
+
+ inline DescFileIterator() : Iterator<DescFile, DescFileIterator>() {}
+ inline DescFileIterator(pkgCache &Owner,DescFile *Trg) : Iterator<DescFile, DescFileIterator>(Owner, Trg) {}
+};
+ /*}}}*/
+// Inlined Begin functions can't be in the class because of order problems /*{{{*/
+inline pkgCache::PkgIterator pkgCache::GrpIterator::PackageList() const
+ {return PkgIterator(*Owner,Owner->PkgP + S->FirstPackage);}
+inline pkgCache::VerIterator pkgCache::PkgIterator::VersionList() const
+ {return VerIterator(*Owner,Owner->VerP + S->VersionList);}
+inline pkgCache::VerIterator pkgCache::PkgIterator::CurrentVer() const
+ {return VerIterator(*Owner,Owner->VerP + S->CurrentVer);}
+inline pkgCache::DepIterator pkgCache::PkgIterator::RevDependsList() const
+ {return DepIterator(*Owner,Owner->DepP + S->RevDepends,S);}
+inline pkgCache::PrvIterator pkgCache::PkgIterator::ProvidesList() const
+ {return PrvIterator(*Owner,Owner->ProvideP + S->ProvidesList,S);}
+inline pkgCache::DescIterator pkgCache::VerIterator::DescriptionList() const
+ {return DescIterator(*Owner,Owner->DescP + S->DescriptionList);}
+inline pkgCache::PrvIterator pkgCache::VerIterator::ProvidesList() const
+ {return PrvIterator(*Owner,Owner->ProvideP + S->ProvidesList,S);}
+inline pkgCache::DepIterator pkgCache::VerIterator::DependsList() const
+ {return DepIterator(*Owner,Owner->DepP + S->DependsList,S);}
+inline pkgCache::VerFileIterator pkgCache::VerIterator::FileList() const
+ {return VerFileIterator(*Owner,Owner->VerFileP + S->FileList);}
+inline pkgCache::DescFileIterator pkgCache::DescIterator::FileList() const
+ {return DescFileIterator(*Owner,Owner->DescFileP + S->FileList);}
+APT_DEPRECATED_MSG("Use the .Section method of VerIterator instead") inline const char * pkgCache::PkgIterator::Section() const
+ {return S->VersionList == 0 ? 0 : VersionList().Section();}
+ /*}}}*/
+#endif
diff --git a/apt-pkg/cacheset.cc b/apt-pkg/cacheset.cc
new file mode 100644
index 000000000..f8ab7acb9
--- /dev/null
+++ b/apt-pkg/cacheset.cc
@@ -0,0 +1,935 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Simple wrapper around a std::set to provide a similar interface to
+ a set of cache structures as to the complete set of all structures
+ in the pkgCache. Currently only Package is supported.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/cachefilter.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/versionmatch.h>
+#include <apt-pkg/pkgrecords.h>
+#include <apt-pkg/policy.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/macros.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/fileutl.h>
+
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#include <regex.h>
+#include <list>
+#include <string>
+#include <vector>
+
+#include <apti18n.h>
+ /*}}}*/
+namespace APT {
+// PackageFrom - selecting the appropriate method for package selection /*{{{*/
+bool CacheSetHelper::PackageFrom(enum PkgSelector const select, PackageContainerInterface * const pci,
+ pkgCacheFile &Cache, std::string const &pattern) {
+ switch (select) {
+ case UNKNOWN: return false;
+ case REGEX: return PackageFromRegEx(pci, Cache, pattern);
+ case TASK: return PackageFromTask(pci, Cache, pattern);
+ case FNMATCH: return PackageFromFnmatch(pci, Cache, pattern);
+ case PACKAGENAME: return PackageFromPackageName(pci, Cache, pattern);
+ case STRING: return PackageFromString(pci, Cache, pattern);
+ }
+ return false;
+}
+ /*}}}*/
+// PackageFromTask - Return all packages in the cache from a specific task /*{{{*/
+bool CacheSetHelper::PackageFromTask(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern) {
+ size_t const archfound = pattern.find_last_of(':');
+ std::string arch = "native";
+ if (archfound != std::string::npos) {
+ arch = pattern.substr(archfound+1);
+ pattern.erase(archfound);
+ }
+
+ if (pattern[pattern.length() -1] != '^')
+ return false;
+ pattern.erase(pattern.length()-1);
+
+ if (unlikely(Cache.GetPkgCache() == 0 || Cache.GetDepCache() == 0))
+ return false;
+
+ bool const wasEmpty = pci->empty();
+ if (wasEmpty == true)
+ pci->setConstructor(CacheSetHelper::TASK);
+
+ // get the records
+ pkgRecords Recs(Cache);
+
+ // build regexp for the task
+ regex_t Pattern;
+ char S[300];
+ snprintf(S, sizeof(S), "^Task:.*[, ]%s([, ]|$)", pattern.c_str());
+ if(regcomp(&Pattern,S, REG_EXTENDED | REG_NOSUB | REG_NEWLINE) != 0) {
+ _error->Error("Failed to compile task regexp");
+ return false;
+ }
+
+ bool found = false;
+ for (pkgCache::GrpIterator Grp = Cache->GrpBegin(); Grp.end() == false; ++Grp) {
+ pkgCache::PkgIterator Pkg = Grp.FindPkg(arch);
+ if (Pkg.end() == true)
+ continue;
+ pkgCache::VerIterator ver = Cache[Pkg].CandidateVerIter(Cache);
+ if(ver.end() == true)
+ continue;
+
+ pkgRecords::Parser &parser = Recs.Lookup(ver.FileList());
+ const char *start, *end;
+ parser.GetRec(start,end);
+ unsigned int const length = end - start;
+ if (unlikely(length == 0))
+ continue;
+ char buf[length];
+ strncpy(buf, start, length);
+ buf[length-1] = '\0';
+ if (regexec(&Pattern, buf, 0, 0, 0) != 0)
+ continue;
+
+ pci->insert(Pkg);
+ showPackageSelection(Pkg, CacheSetHelper::TASK, pattern);
+ found = true;
+ }
+ regfree(&Pattern);
+
+ if (found == false) {
+ canNotFindPackage(CacheSetHelper::TASK, pci, Cache, pattern);
+ pci->setConstructor(CacheSetHelper::UNKNOWN);
+ return false;
+ }
+
+ if (wasEmpty == false && pci->getConstructor() != CacheSetHelper::UNKNOWN)
+ pci->setConstructor(CacheSetHelper::UNKNOWN);
+
+ return true;
+}
+ /*}}}*/
+// PackageFromRegEx - Return all packages in the cache matching a pattern /*{{{*/
+bool CacheSetHelper::PackageFromRegEx(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern) {
+ static const char * const isregex = ".?+*|[^$";
+ if (pattern.find_first_of(isregex) == std::string::npos)
+ return false;
+
+ bool const wasEmpty = pci->empty();
+ if (wasEmpty == true)
+ pci->setConstructor(CacheSetHelper::REGEX);
+
+ size_t archfound = pattern.find_last_of(':');
+ std::string arch = "native";
+ if (archfound != std::string::npos) {
+ arch = pattern.substr(archfound+1);
+ if (arch.find_first_of(isregex) == std::string::npos)
+ pattern.erase(archfound);
+ else
+ arch = "native";
+ }
+
+ if (unlikely(Cache.GetPkgCache() == 0))
+ return false;
+
+ APT::CacheFilter::PackageNameMatchesRegEx regexfilter(pattern);
+
+ bool found = false;
+ for (pkgCache::GrpIterator Grp = Cache.GetPkgCache()->GrpBegin(); Grp.end() == false; ++Grp) {
+ if (regexfilter(Grp) == false)
+ continue;
+ pkgCache::PkgIterator Pkg = Grp.FindPkg(arch);
+ if (Pkg.end() == true) {
+ if (archfound == std::string::npos)
+ Pkg = Grp.FindPreferredPkg(true);
+ if (Pkg.end() == true)
+ continue;
+ }
+
+ pci->insert(Pkg);
+ showPackageSelection(Pkg, CacheSetHelper::REGEX, pattern);
+ found = true;
+ }
+
+ if (found == false) {
+ canNotFindPackage(CacheSetHelper::REGEX, pci, Cache, pattern);
+ pci->setConstructor(CacheSetHelper::UNKNOWN);
+ return false;
+ }
+
+ if (wasEmpty == false && pci->getConstructor() != CacheSetHelper::UNKNOWN)
+ pci->setConstructor(CacheSetHelper::UNKNOWN);
+
+ return true;
+}
+ /*}}}*/
+// PackageFromFnmatch - Returns the package defined by this fnmatch /*{{{*/
+bool CacheSetHelper::PackageFromFnmatch(PackageContainerInterface * const pci,
+ pkgCacheFile &Cache, std::string pattern)
+{
+ static const char * const isfnmatch = ".?*[]!";
+ if (pattern.find_first_of(isfnmatch) == std::string::npos)
+ return false;
+
+ bool const wasEmpty = pci->empty();
+ if (wasEmpty == true)
+ pci->setConstructor(CacheSetHelper::FNMATCH);
+
+ size_t archfound = pattern.find_last_of(':');
+ std::string arch = "native";
+ if (archfound != std::string::npos) {
+ arch = pattern.substr(archfound+1);
+ if (arch.find_first_of(isfnmatch) == std::string::npos)
+ pattern.erase(archfound);
+ else
+ arch = "native";
+ }
+
+ if (unlikely(Cache.GetPkgCache() == 0))
+ return false;
+
+ APT::CacheFilter::PackageNameMatchesFnmatch filter(pattern);
+
+ bool found = false;
+ for (pkgCache::GrpIterator Grp = Cache.GetPkgCache()->GrpBegin(); Grp.end() == false; ++Grp) {
+ if (filter(Grp) == false)
+ continue;
+ pkgCache::PkgIterator Pkg = Grp.FindPkg(arch);
+ if (Pkg.end() == true) {
+ if (archfound == std::string::npos)
+ Pkg = Grp.FindPreferredPkg(true);
+ if (Pkg.end() == true)
+ continue;
+ }
+
+ pci->insert(Pkg);
+ showPackageSelection(Pkg, CacheSetHelper::FNMATCH, pattern);
+ found = true;
+ }
+
+ if (found == false) {
+ canNotFindPackage(CacheSetHelper::FNMATCH, pci, Cache, pattern);
+ pci->setConstructor(CacheSetHelper::UNKNOWN);
+ return false;
+ }
+
+ if (wasEmpty == false && pci->getConstructor() != CacheSetHelper::UNKNOWN)
+ pci->setConstructor(CacheSetHelper::UNKNOWN);
+
+ return true;
+}
+ /*}}}*/
+// PackageFromName - Returns the package defined by this string /*{{{*/
+pkgCache::PkgIterator CacheSetHelper::PackageFromName(pkgCacheFile &Cache,
+ std::string const &str) {
+ std::string pkg = str;
+ size_t archfound = pkg.find_last_of(':');
+ std::string arch;
+ if (archfound != std::string::npos) {
+ arch = pkg.substr(archfound+1);
+ pkg.erase(archfound);
+ }
+
+ if (Cache.GetPkgCache() == 0)
+ return pkgCache::PkgIterator(Cache, 0);
+
+ pkgCache::PkgIterator Pkg(Cache, 0);
+ if (arch.empty() == true) {
+ pkgCache::GrpIterator Grp = Cache.GetPkgCache()->FindGrp(pkg);
+ if (Grp.end() == false)
+ Pkg = Grp.FindPreferredPkg();
+ } else
+ Pkg = Cache.GetPkgCache()->FindPkg(pkg, arch);
+
+ if (Pkg.end() == true)
+ return canNotFindPkgName(Cache, str);
+ return Pkg;
+}
+ /*}}}*/
+// PackageFromPackageName - Returns the package defined by this string /*{{{*/
+bool CacheSetHelper::PackageFromPackageName(PackageContainerInterface * const pci, pkgCacheFile &Cache,
+ std::string pkg) {
+ if (unlikely(Cache.GetPkgCache() == 0))
+ return false;
+
+ std::string const pkgstring = pkg;
+ size_t const archfound = pkg.find_last_of(':');
+ std::string arch;
+ if (archfound != std::string::npos) {
+ arch = pkg.substr(archfound+1);
+ pkg.erase(archfound);
+ if (arch == "all" || arch == "native")
+ arch = _config->Find("APT::Architecture");
+ }
+
+ pkgCache::GrpIterator Grp = Cache.GetPkgCache()->FindGrp(pkg);
+ if (Grp.end() == false) {
+ if (arch.empty() == true) {
+ pkgCache::PkgIterator Pkg = Grp.FindPreferredPkg();
+ if (Pkg.end() == false)
+ {
+ pci->insert(Pkg);
+ return true;
+ }
+ } else {
+ bool found = false;
+ // for 'linux-any' return the first package matching, for 'linux-*' return all matches
+ bool const isGlobal = arch.find('*') != std::string::npos;
+ APT::CacheFilter::PackageArchitectureMatchesSpecification pams(arch);
+ for (pkgCache::PkgIterator Pkg = Grp.PackageList(); Pkg.end() == false; Pkg = Grp.NextPkg(Pkg)) {
+ if (pams(Pkg) == false)
+ continue;
+ pci->insert(Pkg);
+ found = true;
+ if (isGlobal == false)
+ break;
+ }
+ if (found == true)
+ return true;
+ }
+ }
+
+ pkgCache::PkgIterator Pkg = canNotFindPkgName(Cache, pkgstring);
+ if (Pkg.end() == true)
+ return false;
+
+ pci->insert(Pkg);
+ return true;
+}
+ /*}}}*/
+// PackageFromString - Return all packages matching a specific string /*{{{*/
+bool CacheSetHelper::PackageFromString(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string const &str) {
+ bool found = true;
+ _error->PushToStack();
+
+ if (PackageFrom(CacheSetHelper::PACKAGENAME, pci, Cache, str) == false &&
+ PackageFrom(CacheSetHelper::TASK, pci, Cache, str) == false &&
+ // FIXME: hm, hm, regexp/fnmatch incompatible?
+ PackageFrom(CacheSetHelper::FNMATCH, pci, Cache, str) == false &&
+ PackageFrom(CacheSetHelper::REGEX, pci, Cache, str) == false)
+ {
+ canNotFindPackage(CacheSetHelper::PACKAGENAME, pci, Cache, str);
+ found = false;
+ }
+
+ if (found == true)
+ _error->RevertToStack();
+ else
+ _error->MergeWithStack();
+ return found;
+}
+ /*}}}*/
+// PackageFromCommandLine - Return all packages specified on commandline /*{{{*/
+bool CacheSetHelper::PackageFromCommandLine(PackageContainerInterface * const pci, pkgCacheFile &Cache, const char **cmdline) {
+ bool found = false;
+ for (const char **I = cmdline; *I != 0; ++I)
+ found |= PackageFrom(CacheSetHelper::STRING, pci, Cache, *I);
+ return found;
+}
+ /*}}}*/
+// FromModifierCommandLine - helper doing the work for PKG:GroupedFromCommandLine /*{{{*/
+bool CacheSetHelper::PackageFromModifierCommandLine(unsigned short &modID, PackageContainerInterface * const pci,
+ pkgCacheFile &Cache, const char * cmdline,
+ std::list<PkgModifier> const &mods) {
+ std::string str = cmdline;
+ unsigned short fallback = modID;
+ bool modifierPresent = false;
+ for (std::list<PkgModifier>::const_iterator mod = mods.begin();
+ mod != mods.end(); ++mod) {
+ size_t const alength = strlen(mod->Alias);
+ switch(mod->Pos) {
+ case PkgModifier::POSTFIX:
+ if (str.compare(str.length() - alength, alength,
+ mod->Alias, 0, alength) != 0)
+ continue;
+ str.erase(str.length() - alength);
+ modID = mod->ID;
+ break;
+ case PkgModifier::PREFIX:
+ continue;
+ case PkgModifier::NONE:
+ continue;
+ }
+ modifierPresent = true;
+ break;
+ }
+ if (modifierPresent == true) {
+ bool const errors = showErrors(false);
+ bool const found = PackageFrom(PACKAGENAME, pci, Cache, cmdline);
+ showErrors(errors);
+ if (found == true) {
+ modID = fallback;
+ return true;
+ }
+ }
+ return PackageFrom(CacheSetHelper::PACKAGENAME, pci, Cache, str);
+}
+ /*}}}*/
+// FromModifierCommandLine - helper doing the work for VER:GroupedFromCommandLine /*{{{*/
+bool VersionContainerInterface::FromModifierCommandLine(unsigned short &modID,
+ VersionContainerInterface * const vci,
+ pkgCacheFile &Cache, const char * cmdline,
+ std::list<Modifier> const &mods,
+ CacheSetHelper &helper) {
+ CacheSetHelper::VerSelector select = CacheSetHelper::NEWEST;
+ std::string str = cmdline;
+ if (unlikely(str.empty() == true))
+ return false;
+ bool modifierPresent = false;
+ unsigned short fallback = modID;
+ for (std::list<Modifier>::const_iterator mod = mods.begin();
+ mod != mods.end(); ++mod) {
+ if (modID == fallback && mod->ID == fallback)
+ select = mod->SelectVersion;
+ size_t const alength = strlen(mod->Alias);
+ switch(mod->Pos) {
+ case Modifier::POSTFIX:
+ if (str.length() <= alength ||
+ str.compare(str.length() - alength, alength, mod->Alias, 0, alength) != 0)
+ continue;
+ str.erase(str.length() - alength);
+ modID = mod->ID;
+ select = mod->SelectVersion;
+ break;
+ case Modifier::PREFIX:
+ continue;
+ case Modifier::NONE:
+ continue;
+ }
+ modifierPresent = true;
+ break;
+ }
+ if (modifierPresent == true) {
+ bool const errors = helper.showErrors(false);
+ bool const found = VersionContainerInterface::FromString(vci, Cache, cmdline, select, helper, true);
+ helper.showErrors(errors);
+ if (found == true) {
+ modID = fallback;
+ return true;
+ }
+ }
+ return FromString(vci, Cache, str, select, helper);
+}
+ /*}}}*/
+// FromCommandLine - Return all versions specified on commandline /*{{{*/
+bool VersionContainerInterface::FromCommandLine(VersionContainerInterface * const vci,
+ pkgCacheFile &Cache, const char **cmdline,
+ CacheSetHelper::VerSelector const fallback,
+ CacheSetHelper &helper) {
+ bool found = false;
+ for (const char **I = cmdline; *I != 0; ++I)
+ found |= VersionContainerInterface::FromString(vci, Cache, *I, fallback, helper);
+ return found;
+}
+ /*}}}*/
+// FromString - Returns all versions spedcified by a string /*{{{*/
+bool VersionContainerInterface::FromString(VersionContainerInterface * const vci,
+ pkgCacheFile &Cache, std::string pkg,
+ CacheSetHelper::VerSelector const fallback,
+ CacheSetHelper &helper,
+ bool const onlyFromName) {
+ std::string ver;
+ bool verIsRel = false;
+ size_t const vertag = pkg.find_last_of("/=");
+ if (vertag != std::string::npos) {
+ ver = pkg.substr(vertag+1);
+ verIsRel = (pkg[vertag] == '/');
+ pkg.erase(vertag);
+ }
+
+ PackageSet pkgset;
+ if (onlyFromName == false)
+ helper.PackageFrom(CacheSetHelper::STRING, &pkgset, Cache, pkg);
+ else {
+ helper.PackageFrom(CacheSetHelper::PACKAGENAME, &pkgset, Cache, pkg);
+ }
+
+ bool errors = true;
+ if (pkgset.getConstructor() != CacheSetHelper::UNKNOWN)
+ errors = helper.showErrors(false);
+
+ bool found = false;
+ for (PackageSet::const_iterator P = pkgset.begin();
+ P != pkgset.end(); ++P) {
+ if (vertag == std::string::npos) {
+ found |= VersionContainerInterface::FromPackage(vci, Cache, P, fallback, helper);
+ continue;
+ }
+ pkgCache::VerIterator V;
+ if (ver == "installed")
+ V = getInstalledVer(Cache, P, helper);
+ else if (ver == "candidate")
+ V = getCandidateVer(Cache, P, helper);
+ else if (ver == "newest") {
+ if (P->VersionList != 0)
+ V = P.VersionList();
+ else
+ V = helper.canNotGetVersion(CacheSetHelper::NEWEST, Cache, P);
+ } else {
+ pkgVersionMatch Match(ver, (verIsRel == true ? pkgVersionMatch::Release :
+ pkgVersionMatch::Version));
+ V = Match.Find(P);
+ if (V.end() == true) {
+ if (verIsRel == true)
+ _error->Error(_("Release '%s' for '%s' was not found"),
+ ver.c_str(), P.FullName(true).c_str());
+ else
+ _error->Error(_("Version '%s' for '%s' was not found"),
+ ver.c_str(), P.FullName(true).c_str());
+ continue;
+ }
+ }
+ if (V.end() == true)
+ continue;
+ if (verIsRel == true)
+ helper.showVersionSelection(P, V, CacheSetHelper::RELEASE, ver);
+ else
+ helper.showVersionSelection(P, V, CacheSetHelper::VERSIONNUMBER, ver);
+ vci->insert(V);
+ found = true;
+ }
+ if (pkgset.getConstructor() != CacheSetHelper::UNKNOWN)
+ helper.showErrors(errors);
+ return found;
+}
+ /*}}}*/
+// FromPackage - versions from package based on fallback /*{{{*/
+bool VersionContainerInterface::FromPackage(VersionContainerInterface * const vci,
+ pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &P,
+ CacheSetHelper::VerSelector const fallback,
+ CacheSetHelper &helper) {
+ pkgCache::VerIterator V;
+ bool showErrors;
+ bool found = false;
+ switch(fallback) {
+ case CacheSetHelper::ALL:
+ if (P->VersionList != 0)
+ for (V = P.VersionList(); V.end() != true; ++V)
+ found |= vci->insert(V);
+ else
+ helper.canNotFindVersion(CacheSetHelper::ALL, vci, Cache, P);
+ break;
+ case CacheSetHelper::CANDANDINST:
+ found |= vci->insert(getInstalledVer(Cache, P, helper));
+ found |= vci->insert(getCandidateVer(Cache, P, helper));
+ break;
+ case CacheSetHelper::CANDIDATE:
+ found |= vci->insert(getCandidateVer(Cache, P, helper));
+ break;
+ case CacheSetHelper::INSTALLED:
+ found |= vci->insert(getInstalledVer(Cache, P, helper));
+ break;
+ case CacheSetHelper::CANDINST:
+ showErrors = helper.showErrors(false);
+ V = getCandidateVer(Cache, P, helper);
+ if (V.end() == true)
+ V = getInstalledVer(Cache, P, helper);
+ helper.showErrors(showErrors);
+ if (V.end() == false)
+ found |= vci->insert(V);
+ else
+ helper.canNotFindVersion(CacheSetHelper::CANDINST, vci, Cache, P);
+ break;
+ case CacheSetHelper::INSTCAND:
+ showErrors = helper.showErrors(false);
+ V = getInstalledVer(Cache, P, helper);
+ if (V.end() == true)
+ V = getCandidateVer(Cache, P, helper);
+ helper.showErrors(showErrors);
+ if (V.end() == false)
+ found |= vci->insert(V);
+ else
+ helper.canNotFindVersion(CacheSetHelper::INSTCAND, vci, Cache, P);
+ break;
+ case CacheSetHelper::NEWEST:
+ if (P->VersionList != 0)
+ found |= vci->insert(P.VersionList());
+ else
+ helper.canNotFindVersion(CacheSetHelper::NEWEST, vci, Cache, P);
+ break;
+ case CacheSetHelper::RELEASE:
+ case CacheSetHelper::VERSIONNUMBER:
+ // both make no sense here, so always false
+ return false;
+ }
+ return found;
+}
+ /*}}}*/
+// FromDependency - versions satisfying a given dependency /*{{{*/
+bool VersionContainerInterface::FromDependency(VersionContainerInterface * const vci,
+ pkgCacheFile &Cache,
+ pkgCache::DepIterator const &D,
+ CacheSetHelper::VerSelector const selector,
+ CacheSetHelper &helper)
+{
+ bool found = false;
+ switch(selector) {
+ case CacheSetHelper::ALL:
+ {
+ pkgCache::PkgIterator const T = D.TargetPkg();
+ for (pkgCache::VerIterator Ver = T.VersionList(); Ver.end() == false; ++Ver)
+ {
+ if (D.IsSatisfied(Ver) == true)
+ {
+ vci->insert(Ver);
+ found = true;
+ }
+ for (pkgCache::PrvIterator Prv = T.ProvidesList(); Prv.end() != true; ++Prv)
+ {
+ pkgCache::VerIterator const V = Prv.OwnerVer();
+ if (unlikely(V.end() == true) || D.IsSatisfied(Prv) == false)
+ continue;
+ vci->insert(V);
+ found = true;
+ }
+ }
+ return found;
+ }
+ case CacheSetHelper::CANDANDINST:
+ {
+ found = FromDependency(vci, Cache, D, CacheSetHelper::CANDIDATE, helper);
+ found &= FromDependency(vci, Cache, D, CacheSetHelper::INSTALLED, helper);
+ return found;
+ }
+ case CacheSetHelper::CANDIDATE:
+ {
+ pkgCache::PkgIterator const T = D.TargetPkg();
+ pkgCache::VerIterator const Cand = Cache[T].CandidateVerIter(Cache);
+ if (Cand.end() == false && D.IsSatisfied(Cand) == true)
+ {
+ vci->insert(Cand);
+ found = true;
+ }
+ for (pkgCache::PrvIterator Prv = T.ProvidesList(); Prv.end() != true; ++Prv)
+ {
+ pkgCache::VerIterator const V = Prv.OwnerVer();
+ pkgCache::VerIterator const Cand = Cache[Prv.OwnerPkg()].CandidateVerIter(Cache);
+ if (Cand.end() == true || V != Cand || D.IsSatisfied(Prv) == false)
+ continue;
+ vci->insert(Cand);
+ found = true;
+ }
+ return found;
+ }
+ case CacheSetHelper::INSTALLED:
+ {
+ pkgCache::PkgIterator const T = D.TargetPkg();
+ pkgCache::VerIterator const Cand = T.CurrentVer();
+ if (Cand.end() == false && D.IsSatisfied(Cand) == true)
+ {
+ vci->insert(Cand);
+ found = true;
+ }
+ for (pkgCache::PrvIterator Prv = T.ProvidesList(); Prv.end() != true; ++Prv)
+ {
+ pkgCache::VerIterator const V = Prv.OwnerVer();
+ pkgCache::VerIterator const Cand = Prv.OwnerPkg().CurrentVer();
+ if (Cand.end() == true || V != Cand || D.IsSatisfied(Prv) == false)
+ continue;
+ vci->insert(Cand);
+ found = true;
+ }
+ return found;
+ }
+ case CacheSetHelper::CANDINST:
+ return FromDependency(vci, Cache, D, CacheSetHelper::CANDIDATE, helper) ||
+ FromDependency(vci, Cache, D, CacheSetHelper::INSTALLED, helper);
+ case CacheSetHelper::INSTCAND:
+ return FromDependency(vci, Cache, D, CacheSetHelper::INSTALLED, helper) ||
+ FromDependency(vci, Cache, D, CacheSetHelper::CANDIDATE, helper);
+ case CacheSetHelper::NEWEST:
+ {
+ pkgCache::PkgIterator const T = D.TargetPkg();
+ pkgCache::VerIterator const Cand = T.VersionList();
+ if (Cand.end() == false && D.IsSatisfied(Cand) == true)
+ {
+ vci->insert(Cand);
+ found = true;
+ }
+ for (pkgCache::PrvIterator Prv = T.ProvidesList(); Prv.end() != true; ++Prv)
+ {
+ pkgCache::VerIterator const V = Prv.OwnerVer();
+ pkgCache::VerIterator const Cand = Prv.OwnerPkg().VersionList();
+ if (Cand.end() == true || V != Cand || D.IsSatisfied(Prv) == false)
+ continue;
+ vci->insert(Cand);
+ found = true;
+ }
+ return found;
+ }
+ case CacheSetHelper::RELEASE:
+ case CacheSetHelper::VERSIONNUMBER:
+ // both make no sense here, so always false
+ return false;
+ }
+ return found;
+}
+ /*}}}*/
+// getCandidateVer - Returns the candidate version of the given package /*{{{*/
+pkgCache::VerIterator VersionContainerInterface::getCandidateVer(pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg, CacheSetHelper &helper) {
+ pkgCache::VerIterator Cand;
+ if (Cache.IsDepCacheBuilt() == true) {
+ Cand = Cache[Pkg].CandidateVerIter(Cache);
+ } else if (unlikely(Cache.GetPolicy() == nullptr)) {
+ return pkgCache::VerIterator(Cache);
+ } else {
+ Cand = Cache.GetPolicy()->GetCandidateVer(Pkg);
+ }
+ if (Cand.end() == true)
+ return helper.canNotGetVersion(CacheSetHelper::CANDIDATE, Cache, Pkg);
+ return Cand;
+}
+ /*}}}*/
+// getInstalledVer - Returns the installed version of the given package /*{{{*/
+pkgCache::VerIterator VersionContainerInterface::getInstalledVer(pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg, CacheSetHelper &helper) {
+ if (Pkg->CurrentVer == 0)
+ return helper.canNotGetVersion(CacheSetHelper::INSTALLED, Cache, Pkg);
+ return Pkg.CurrentVer();
+}
+ /*}}}*/
+
+// canNotFindPackage - with the given selector and pattern /*{{{*/
+void CacheSetHelper::canNotFindPackage(enum PkgSelector const select,
+ PackageContainerInterface * const pci, pkgCacheFile &Cache,
+ std::string const &pattern) {
+ switch (select) {
+APT_IGNORE_DEPRECATED_PUSH
+ case REGEX: canNotFindRegEx(pci, Cache, pattern); break;
+ case TASK: canNotFindTask(pci, Cache, pattern); break;
+ case FNMATCH: canNotFindFnmatch(pci, Cache, pattern); break;
+ case PACKAGENAME: canNotFindPackage(pci, Cache, pattern); break;
+ case STRING: canNotFindPackage(pci, Cache, pattern); break;
+ case UNKNOWN: break;
+APT_IGNORE_DEPRECATED_POP
+ }
+}
+// canNotFindTask - handle the case no package is found for a task /*{{{*/
+void CacheSetHelper::canNotFindTask(PackageContainerInterface * const /*pci*/, pkgCacheFile &/*Cache*/, std::string pattern) {
+ if (ShowError == true)
+ _error->Insert(ErrorType, _("Couldn't find task '%s'"), pattern.c_str());
+}
+ /*}}}*/
+// canNotFindRegEx - handle the case no package is found by a regex /*{{{*/
+void CacheSetHelper::canNotFindRegEx(PackageContainerInterface * const /*pci*/, pkgCacheFile &/*Cache*/, std::string pattern) {
+ if (ShowError == true)
+ _error->Insert(ErrorType, _("Couldn't find any package by regex '%s'"), pattern.c_str());
+}
+ /*}}}*/
+// canNotFindFnmatch - handle the case no package is found by a fnmatch /*{{{*/
+ void CacheSetHelper::canNotFindFnmatch(PackageContainerInterface * const /*pci*/, pkgCacheFile &/*Cache*/, std::string pattern) {
+ if (ShowError == true)
+ _error->Insert(ErrorType, _("Couldn't find any package by glob '%s'"), pattern.c_str());
+}
+ /*}}}*/
+// canNotFindPackage - handle the case no package is found from a string/*{{{*/
+APT_CONST void CacheSetHelper::canNotFindPackage(PackageContainerInterface * const /*pci*/, pkgCacheFile &/*Cache*/, std::string const &/*str*/) {
+}
+ /*}}}*/
+ /*}}}*/
+// canNotFindPkgName - handle the case no package has this name /*{{{*/
+pkgCache::PkgIterator CacheSetHelper::canNotFindPkgName(pkgCacheFile &Cache,
+ std::string const &str) {
+ if (ShowError == true)
+ _error->Insert(ErrorType, _("Unable to locate package %s"), str.c_str());
+ return pkgCache::PkgIterator(Cache, 0);
+}
+ /*}}}*/
+// canNotFindVersion - for package by selector /*{{{*/
+void CacheSetHelper::canNotFindVersion(enum VerSelector const select, VersionContainerInterface * const vci, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg)
+{
+ switch (select) {
+APT_IGNORE_DEPRECATED_PUSH
+ case ALL: canNotFindAllVer(vci, Cache, Pkg); break;
+ case INSTCAND: canNotFindInstCandVer(vci, Cache, Pkg); break;
+ case CANDINST: canNotFindCandInstVer(vci, Cache, Pkg); break;
+ case NEWEST: canNotFindNewestVer(Cache, Pkg); break;
+ case CANDIDATE: canNotFindCandidateVer(Cache, Pkg); break;
+ case INSTALLED: canNotFindInstalledVer(Cache, Pkg); break;
+APT_IGNORE_DEPRECATED_POP
+ case CANDANDINST: canNotGetCandInstVer(Cache, Pkg); break;
+ case RELEASE:
+ case VERSIONNUMBER:
+ // invalid in this branch
+ break;
+ }
+}
+// canNotFindAllVer /*{{{*/
+void CacheSetHelper::canNotFindAllVer(VersionContainerInterface * const /*vci*/, pkgCacheFile &/*Cache*/,
+ pkgCache::PkgIterator const &Pkg) {
+ if (ShowError == true)
+ _error->Insert(ErrorType, _("Can't select versions from package '%s' as it is purely virtual"), Pkg.FullName(true).c_str());
+}
+ /*}}}*/
+// canNotFindInstCandVer /*{{{*/
+void CacheSetHelper::canNotFindInstCandVer(VersionContainerInterface * const /*vci*/, pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg) {
+ canNotGetInstCandVer(Cache, Pkg);
+}
+ /*}}}*/
+// canNotFindInstCandVer /*{{{*/
+void CacheSetHelper::canNotFindCandInstVer(VersionContainerInterface * const /*vci*/, pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg) {
+ canNotGetCandInstVer(Cache, Pkg);
+}
+ /*}}}*/
+ /*}}}*/
+// canNotGetVersion - for package by selector /*{{{*/
+pkgCache::VerIterator CacheSetHelper::canNotGetVersion(enum VerSelector const select, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) {
+ switch (select) {
+APT_IGNORE_DEPRECATED_PUSH
+ case NEWEST: return canNotFindNewestVer(Cache, Pkg);
+ case CANDIDATE: return canNotFindCandidateVer(Cache, Pkg);
+ case INSTALLED: return canNotFindInstalledVer(Cache, Pkg);
+APT_IGNORE_DEPRECATED_POP
+ case CANDINST: return canNotGetCandInstVer(Cache, Pkg);
+ case INSTCAND: return canNotGetInstCandVer(Cache, Pkg);
+ case ALL:
+ case CANDANDINST:
+ case RELEASE:
+ case VERSIONNUMBER:
+ // invalid in this branch
+ return pkgCache::VerIterator(Cache, 0);
+ }
+ return pkgCache::VerIterator(Cache, 0);
+}
+// canNotFindNewestVer /*{{{*/
+pkgCache::VerIterator CacheSetHelper::canNotFindNewestVer(pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg) {
+ if (ShowError == true)
+ _error->Insert(ErrorType, _("Can't select newest version from package '%s' as it is purely virtual"), Pkg.FullName(true).c_str());
+ return pkgCache::VerIterator(Cache, 0);
+}
+ /*}}}*/
+// canNotFindCandidateVer /*{{{*/
+pkgCache::VerIterator CacheSetHelper::canNotFindCandidateVer(pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg) {
+ if (ShowError == true)
+ _error->Insert(ErrorType, _("Can't select candidate version from package %s as it has no candidate"), Pkg.FullName(true).c_str());
+ return pkgCache::VerIterator(Cache, 0);
+}
+ /*}}}*/
+// canNotFindInstalledVer /*{{{*/
+pkgCache::VerIterator CacheSetHelper::canNotFindInstalledVer(pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg) {
+ if (ShowError == true)
+ _error->Insert(ErrorType, _("Can't select installed version from package %s as it is not installed"), Pkg.FullName(true).c_str());
+ return pkgCache::VerIterator(Cache, 0);
+}
+ /*}}}*/
+// canNotFindInstCandVer /*{{{*/
+pkgCache::VerIterator CacheSetHelper::canNotGetInstCandVer(pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg) {
+ if (ShowError == true)
+ _error->Insert(ErrorType, _("Can't select installed nor candidate version from package '%s' as it has neither of them"), Pkg.FullName(true).c_str());
+ return pkgCache::VerIterator(Cache, 0);
+}
+ /*}}}*/
+// canNotFindInstCandVer /*{{{*/
+pkgCache::VerIterator CacheSetHelper::canNotGetCandInstVer(pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg) {
+ if (ShowError == true)
+ _error->Insert(ErrorType, _("Can't select installed nor candidate version from package '%s' as it has neither of them"), Pkg.FullName(true).c_str());
+ return pkgCache::VerIterator(Cache, 0);
+}
+ /*}}}*/
+ /*}}}*/
+// showPackageSelection - by selector and given pattern /*{{{*/
+void CacheSetHelper::showPackageSelection(pkgCache::PkgIterator const &pkg, enum PkgSelector const select,
+ std::string const &pattern) {
+ switch (select) {
+APT_IGNORE_DEPRECATED_PUSH
+ case REGEX: showRegExSelection(pkg, pattern); break;
+ case TASK: showTaskSelection(pkg, pattern); break;
+ case FNMATCH: showFnmatchSelection(pkg, pattern); break;
+APT_IGNORE_DEPRECATED_POP
+ case PACKAGENAME: /* no surprises here */ break;
+ case STRING: /* handled by the special cases */ break;
+ case UNKNOWN: break;
+ }
+}
+// showTaskSelection /*{{{*/
+APT_CONST void CacheSetHelper::showTaskSelection(pkgCache::PkgIterator const &/*pkg*/,
+ std::string const &/*pattern*/) {
+}
+ /*}}}*/
+// showRegExSelection /*{{{*/
+APT_CONST void CacheSetHelper::showRegExSelection(pkgCache::PkgIterator const &/*pkg*/,
+ std::string const &/*pattern*/) {
+}
+ /*}}}*/
+// showFnmatchSelection /*{{{*/
+APT_CONST void CacheSetHelper::showFnmatchSelection(pkgCache::PkgIterator const &/*pkg*/,
+ std::string const &/*pattern*/) {
+}
+ /*}}}*/
+ /*}}}*/
+// showVersionSelection /*{{{*/
+void CacheSetHelper::showVersionSelection(pkgCache::PkgIterator const &Pkg,
+ pkgCache::VerIterator const &Ver, enum VerSelector const select, std::string const &pattern) {
+ switch (select) {
+APT_IGNORE_DEPRECATED_PUSH
+ case RELEASE:
+ showSelectedVersion(Pkg, Ver, pattern, true);
+ break;
+ case VERSIONNUMBER:
+ showSelectedVersion(Pkg, Ver, pattern, false);
+ break;
+APT_IGNORE_DEPRECATED_POP
+ case NEWEST:
+ case CANDIDATE:
+ case INSTALLED:
+ case CANDINST:
+ case INSTCAND:
+ case ALL:
+ case CANDANDINST:
+ // not really surprises, but in fact: just not implemented
+ break;
+ }
+}
+APT_CONST void CacheSetHelper::showSelectedVersion(pkgCache::PkgIterator const &/*Pkg*/,
+ pkgCache::VerIterator const /*Ver*/,
+ std::string const &/*ver*/,
+ bool const /*verIsRel*/) {
+}
+ /*}}}*/
+
+CacheSetHelper::CacheSetHelper(bool const ShowError, GlobalError::MsgType ErrorType) :
+ ShowError(ShowError), ErrorType(ErrorType), d(NULL) {}
+CacheSetHelper::~CacheSetHelper() {}
+
+PackageContainerInterface::PackageContainerInterface() : ConstructedBy(CacheSetHelper::UNKNOWN), d(NULL) {}
+PackageContainerInterface::PackageContainerInterface(CacheSetHelper::PkgSelector const by) : ConstructedBy(by), d(NULL) {}
+PackageContainerInterface& PackageContainerInterface::operator=(PackageContainerInterface const &other) {
+ if (this != &other)
+ this->ConstructedBy = other.ConstructedBy;
+ return *this;
+}
+PackageContainerInterface::~PackageContainerInterface() {}
+
+PackageUniverse::PackageUniverse(pkgCache * const Owner) : _cont(Owner), d(NULL) {}
+PackageUniverse::PackageUniverse(pkgCacheFile * const Owner) : _cont(Owner->GetPkgCache()), d(NULL) {}
+PackageUniverse::~PackageUniverse() {}
+
+VersionContainerInterface::VersionContainerInterface() : d(NULL) {}
+VersionContainerInterface& VersionContainerInterface::operator=(VersionContainerInterface const &) {
+ return *this;
+}
+
+VersionContainerInterface::~VersionContainerInterface() {}
+}
diff --git a/apt-pkg/cacheset.h b/apt-pkg/cacheset.h
new file mode 100644
index 000000000..1ac61af59
--- /dev/null
+++ b/apt-pkg/cacheset.h
@@ -0,0 +1,1230 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/** \file cacheset.h
+ Wrappers around std::set to have set::iterators which behave
+ similar to the Iterators of the cache structures.
+
+ Provides also a few helper methods which work with these sets */
+ /*}}}*/
+#ifndef APT_CACHESET_H
+#define APT_CACHESET_H
+// Include Files /*{{{*/
+#include <fstream>
+#include <map>
+#include <set>
+#if __cplusplus >= 201103L
+#include <unordered_set>
+#include <forward_list>
+#include <initializer_list>
+#endif
+#include <list>
+#include <deque>
+#include <vector>
+#include <string>
+#include <iterator>
+#include <algorithm>
+
+#include <stddef.h>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/macros.h>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/cachefile.h>
+#endif
+#ifndef APT_10_CLEANER_HEADERS
+#include <iostream>
+#endif
+ /*}}}*/
+
+class pkgCacheFile;
+
+namespace APT {
+class PackageContainerInterface;
+class VersionContainerInterface;
+
+class CacheSetHelper { /*{{{*/
+/** \class APT::CacheSetHelper
+ Simple base class with a lot of virtual methods which can be overridden
+ to alter the behavior or the output of the CacheSets.
+
+ This helper is passed around by the static methods in the CacheSets and
+ used every time they hit an error condition or something could be
+ printed out.
+*/
+public: /*{{{*/
+ CacheSetHelper(bool const ShowError = true,
+ GlobalError::MsgType ErrorType = GlobalError::ERROR);
+ virtual ~CacheSetHelper();
+
+ enum PkgSelector { UNKNOWN, REGEX, TASK, FNMATCH, PACKAGENAME, STRING };
+
+ virtual bool PackageFrom(enum PkgSelector const select, PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string const &pattern);
+
+ virtual bool PackageFromCommandLine(PackageContainerInterface * const pci, pkgCacheFile &Cache, const char **cmdline);
+
+ struct PkgModifier {
+ enum Position { NONE, PREFIX, POSTFIX };
+ unsigned short ID;
+ const char * const Alias;
+ Position Pos;
+ PkgModifier (unsigned short const &id, const char * const alias, Position const &pos) : ID(id), Alias(alias), Pos(pos) {}
+ };
+ virtual bool PackageFromModifierCommandLine(unsigned short &modID, PackageContainerInterface * const pci,
+ pkgCacheFile &Cache, const char * cmdline,
+ std::list<PkgModifier> const &mods);
+
+ APT_DEPRECATED_MSG("use .PackageFrom(PACKAGENAME, …) instead") pkgCache::PkgIterator PackageFromName(pkgCacheFile &Cache, std::string const &pattern);
+
+ /** \brief be notified about the package being selected via pattern
+ *
+ * Main use is probably to show a message to the user what happened
+ *
+ * \param pkg is the package which was selected
+ * \param select is the selection method which choose the package
+ * \param pattern is the string used by the selection method to pick the package
+ */
+ virtual void showPackageSelection(pkgCache::PkgIterator const &pkg, PkgSelector const select, std::string const &pattern);
+ // use the method above instead, react only on the type you need and let the base handle the rest if need be
+ // this allows us to add new selection methods without breaking the ABI constantly with new virtual methods
+ APT_DEPRECATED_MSG("override .showPackageSelection and select with switch") virtual void showTaskSelection(pkgCache::PkgIterator const &pkg, std::string const &pattern);
+ APT_DEPRECATED_MSG("override .showPackageSelection and select with switch") virtual void showRegExSelection(pkgCache::PkgIterator const &pkg, std::string const &pattern);
+ APT_DEPRECATED_MSG("override .showPackageSelection and select with switch") virtual void showFnmatchSelection(pkgCache::PkgIterator const &pkg, std::string const &pattern);
+
+ /** \brief be notified if a package can't be found via pattern
+ *
+ * Can be used to show a message as well as to try something else to make it match
+ *
+ * \param select is the method tried for selection
+ * \param pci is the container the package should be inserted in
+ * \param Cache is the package universe available
+ * \param pattern is the string not matching anything
+ */
+ virtual void canNotFindPackage(enum PkgSelector const select, PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string const &pattern);
+ // same as above for showPackageSelection
+ APT_DEPRECATED_MSG("override .canNotFindPackage and select with switch") virtual void canNotFindTask(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern);
+ APT_DEPRECATED_MSG("override .canNotFindPackage and select with switch") virtual void canNotFindRegEx(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern);
+ APT_DEPRECATED_MSG("override .canNotFindPackage and select with switch") virtual void canNotFindFnmatch(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern);
+ APT_DEPRECATED_MSG("override .canNotFindPackage and select with switch") virtual void canNotFindPackage(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string const &str);
+
+ /** \brief specifies which version(s) we want to refer to */
+ enum VerSelector {
+ /** by release string */
+ RELEASE,
+ /** by version number string */
+ VERSIONNUMBER,
+ /** All versions */
+ ALL,
+ /** Candidate and installed version */
+ CANDANDINST,
+ /** Candidate version */
+ CANDIDATE,
+ /** Installed version */
+ INSTALLED,
+ /** Candidate or if non installed version */
+ CANDINST,
+ /** Installed or if non candidate version */
+ INSTCAND,
+ /** Newest version */
+ NEWEST
+ };
+
+ /** \brief be notified about the version being selected via pattern
+ *
+ * Main use is probably to show a message to the user what happened
+ * Note that at the moment this method is only called for RELEASE
+ * and VERSION selections, not for the others.
+ *
+ * \param Pkg is the package which was selected for
+ * \param Ver is the version selected
+ * \param select is the selection method which choose the version
+ * \param pattern is the string used by the selection method to pick the version
+ */
+ virtual void showVersionSelection(pkgCache::PkgIterator const &Pkg, pkgCache::VerIterator const &Ver,
+ enum VerSelector const select, std::string const &pattern);
+ APT_DEPRECATED_MSG("use .showVersionSelection instead, similar to .showPackageSelection") virtual void showSelectedVersion(pkgCache::PkgIterator const &Pkg, pkgCache::VerIterator const Ver,
+ std::string const &ver, bool const verIsRel);
+
+ /** \brief be notified if a version can't be found for a package
+ *
+ * Main use is probably to show a message to the user what happened
+ *
+ * \param select is the method tried for selection
+ * \param vci is the container the version should be inserted in
+ * \param Cache is the package universe available
+ * \param Pkg is the package we wanted a version from
+ */
+ virtual void canNotFindVersion(enum VerSelector const select, VersionContainerInterface * const vci, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg);
+ APT_DEPRECATED_MSG("override .canNotFindVersion and select via switch") virtual void canNotFindAllVer(VersionContainerInterface * const vci, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg);
+ APT_DEPRECATED_MSG("override .canNotFindVersion and select via switch") virtual void canNotFindInstCandVer(VersionContainerInterface * const vci, pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg);
+ APT_DEPRECATED_MSG("override .canNotFindVersion and select via switch") virtual void canNotFindCandInstVer(VersionContainerInterface * const vci,
+ pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg);
+
+ // the difference between canNotFind and canNotGet is that the later is more low-level
+ // and called from other places: In this case looking into the code is the only real answer…
+ virtual pkgCache::VerIterator canNotGetVersion(enum VerSelector const select, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg);
+ APT_DEPRECATED_MSG("override .canNotGetVersion and select via switch") virtual pkgCache::VerIterator canNotFindNewestVer(pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg);
+ APT_DEPRECATED_MSG("override .canNotGetVersion and select via switch") virtual pkgCache::VerIterator canNotFindCandidateVer(pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg);
+ APT_DEPRECATED_MSG("override .canNotGetVersion and select via switch") virtual pkgCache::VerIterator canNotFindInstalledVer(pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg);
+
+ virtual pkgCache::PkgIterator canNotFindPkgName(pkgCacheFile &Cache, std::string const &str);
+
+ bool showErrors() const { return ShowError; }
+ bool showErrors(bool const newValue) { if (ShowError == newValue) return ShowError; else return ((ShowError = newValue) == false); }
+ GlobalError::MsgType errorType() const { return ErrorType; }
+ GlobalError::MsgType errorType(GlobalError::MsgType const &newValue)
+ {
+ if (ErrorType == newValue) return ErrorType;
+ else {
+ GlobalError::MsgType const &oldValue = ErrorType;
+ ErrorType = newValue;
+ return oldValue;
+ }
+ }
+
+ /*}}}*/
+protected:
+ bool ShowError;
+ GlobalError::MsgType ErrorType;
+
+ pkgCache::VerIterator canNotGetInstCandVer(pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg);
+ pkgCache::VerIterator canNotGetCandInstVer(pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg);
+
+ bool PackageFromTask(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern);
+ bool PackageFromRegEx(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern);
+ bool PackageFromFnmatch(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern);
+ bool PackageFromPackageName(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern);
+ bool PackageFromString(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string const &pattern);
+private:
+ void * const d;
+}; /*}}}*/
+// Iterator templates for our Containers /*{{{*/
+template<typename Interface, typename Master, typename iterator_type, typename container_iterator, typename container_value> class Container_iterator_base :
+ public std::iterator<typename std::iterator_traits<container_iterator>::iterator_category, container_value>,
+ public Interface::template iterator_base<iterator_type>
+{
+protected:
+ container_iterator _iter;
+public:
+ explicit Container_iterator_base(container_iterator i) : _iter(i) {}
+ inline container_value operator*(void) const { return static_cast<iterator_type const*>(this)->getType(); };
+ operator container_iterator(void) const { return _iter; }
+ inline iterator_type& operator++() { ++_iter; return static_cast<iterator_type&>(*this); }
+ inline iterator_type operator++(int) { iterator_type tmp(*this); operator++(); return tmp; }
+ inline iterator_type operator+(typename container_iterator::difference_type const &n) { return iterator_type(_iter + n); }
+ inline iterator_type operator+=(typename container_iterator::difference_type const &n) { _iter += n; return static_cast<iterator_type&>(*this); }
+ inline iterator_type& operator--() { --_iter;; return static_cast<iterator_type&>(*this); }
+ inline iterator_type operator--(int) { iterator_type tmp(*this); operator--(); return tmp; }
+ inline iterator_type operator-(typename container_iterator::difference_type const &n) { return iterator_type(_iter - n); }
+ inline typename container_iterator::difference_type operator-(iterator_type const &b) { return (_iter - b._iter); }
+ inline iterator_type operator-=(typename container_iterator::difference_type const &n) { _iter -= n; return static_cast<iterator_type&>(*this); }
+ inline bool operator!=(iterator_type const &i) const { return _iter != i._iter; }
+ inline bool operator==(iterator_type const &i) const { return _iter == i._iter; }
+ inline bool operator<(iterator_type const &i) const { return _iter < i._iter; }
+ inline bool operator>(iterator_type const &i) const { return _iter > i._iter; }
+ inline bool operator<=(iterator_type const &i) const { return _iter <= i._iter; }
+ inline bool operator>=(iterator_type const &i) const { return _iter >= i._iter; }
+ inline typename container_iterator::reference operator[](typename container_iterator::difference_type const &n) const { return _iter[n]; }
+
+ friend std::ostream& operator<<(std::ostream& out, iterator_type i) { return operator<<(out, *i); }
+ friend Master;
+};
+template<class Interface, class Container, class Master> class Container_const_iterator :
+ public Container_iterator_base<Interface, Master, Container_const_iterator<Interface, Container, Master>, typename Container::const_iterator, typename Container::value_type>
+{
+ typedef Container_const_iterator<Interface, Container, Master> iterator_type;
+ typedef typename Container::const_iterator container_iterator;
+public:
+ explicit Container_const_iterator(container_iterator i) :
+ Container_iterator_base<Interface, Master, iterator_type, container_iterator, typename Container::value_type>(i) {}
+
+ inline typename Container::value_type getType(void) const { return *this->_iter; }
+};
+template<class Interface, class Container, class Master> class Container_iterator :
+ public Container_iterator_base<Interface, Master, Container_iterator<Interface, Container, Master>, typename Container::iterator, typename Container::value_type>
+{
+ typedef Container_iterator<Interface, Container, Master> iterator_type;
+ typedef typename Container::iterator container_iterator;
+public:
+ explicit Container_iterator(container_iterator i) :
+ Container_iterator_base<Interface, Master, iterator_type, container_iterator, typename Container::value_type>(i) {}
+
+ operator typename Master::const_iterator() { return typename Master::const_iterator(this->_iter); }
+ inline iterator_type& operator=(iterator_type const &i) { this->_iter = i._iter; return static_cast<iterator_type&>(*this); }
+ inline iterator_type& operator=(container_iterator const &i) { this->_iter = i; return static_cast<iterator_type&>(*this); }
+ inline typename Container::iterator::reference operator*(void) const { return *this->_iter; }
+
+ inline typename Container::value_type getType(void) const { return *this->_iter; }
+};
+template<class Interface, class Container, class Master> class Container_const_reverse_iterator :
+ public Container_iterator_base<Interface, Master, Container_const_reverse_iterator<Interface, Container, Master>, typename Container::const_reverse_iterator, typename Container::value_type>
+{
+ typedef Container_const_reverse_iterator<Interface, Container, Master> iterator_type;
+ typedef typename Container::const_reverse_iterator container_iterator;
+public:
+ explicit Container_const_reverse_iterator(container_iterator i) :
+ Container_iterator_base<Interface, Master, iterator_type, container_iterator, typename Container::value_type>(i) {}
+
+ inline typename Container::value_type getType(void) const { return *this->_iter; }
+};
+template<class Interface, class Container, class Master> class Container_reverse_iterator :
+ public Container_iterator_base<Interface, Master, Container_reverse_iterator<Interface, Container, Master>, typename Container::reverse_iterator, typename Container::value_type>
+{
+ typedef Container_reverse_iterator<Interface, Container, Master> iterator_type;
+ typedef typename Container::reverse_iterator container_iterator;
+public:
+ explicit Container_reverse_iterator(container_iterator i) :
+ Container_iterator_base<Interface, Master, iterator_type, container_iterator, typename Container::value_type>(i) {}
+
+ operator typename Master::const_iterator() { return typename Master::const_iterator(this->_iter); }
+ inline iterator_type& operator=(iterator_type const &i) { this->_iter = i._iter; return static_cast<iterator_type&>(*this); }
+ inline iterator_type& operator=(container_iterator const &i) { this->_iter = i; return static_cast<iterator_type&>(*this); }
+ inline typename Container::reverse_iterator::reference operator*(void) const { return *this->_iter; }
+
+ inline typename Container::value_type getType(void) const { return *this->_iter; }
+};
+ /*}}}*/
+class PackageContainerInterface { /*{{{*/
+/** \class PackageContainerInterface
+
+ * Interface ensuring that all operations can be executed on the yet to
+ * define concrete PackageContainer - access to all methods is possible,
+ * but in general the wrappers provided by the PackageContainer template
+ * are nicer to use.
+
+ * This class mostly protects use from the need to write all implementation
+ * of the methods working on containers in the template */
+public:
+ template<class Itr> class iterator_base { /*{{{*/
+ pkgCache::PkgIterator getType() const { return static_cast<Itr const*>(this)->getType(); };
+ public:
+ operator pkgCache::PkgIterator(void) const { return getType(); }
+
+ inline const char *Name() const {return getType().Name(); }
+ inline std::string FullName(bool const Pretty) const { return getType().FullName(Pretty); }
+ inline std::string FullName() const { return getType().FullName(); }
+ APT_DEPRECATED_MSG("Use the .Section method of VerIterator instead") inline const char *Section() const {
+ APT_IGNORE_DEPRECATED_PUSH
+ return getType().Section();
+ APT_IGNORE_DEPRECATED_POP
+ }
+ inline bool Purge() const {return getType().Purge(); }
+ inline const char *Arch() const {return getType().Arch(); }
+ inline pkgCache::GrpIterator Group() const { return getType().Group(); }
+ inline pkgCache::VerIterator VersionList() const { return getType().VersionList(); }
+ inline pkgCache::VerIterator CurrentVer() const { return getType().CurrentVer(); }
+ inline pkgCache::DepIterator RevDependsList() const { return getType().RevDependsList(); }
+ inline pkgCache::PrvIterator ProvidesList() const { return getType().ProvidesList(); }
+ inline pkgCache::PkgIterator::OkState State() const { return getType().State(); }
+ APT_DEPRECATED_MSG("This method does not respect apt_preferences! Use pkgDepCache::GetCandidateVersion(Pkg)") inline const char *CandVersion() const { return getType().CandVersion(); }
+ inline const char *CurVersion() const { return getType().CurVersion(); }
+ inline pkgCache *Cache() const { return getType().Cache(); }
+ inline unsigned long Index() const {return getType().Index();}
+ // we have only valid iterators here
+ inline bool end() const { return false; }
+
+ inline pkgCache::Package const * operator->() const {return &*getType();}
+ };
+ /*}}}*/
+
+ virtual bool insert(pkgCache::PkgIterator const &P) = 0;
+ virtual bool empty() const = 0;
+ virtual void clear() = 0;
+ virtual size_t size() const = 0;
+
+ enum APT_DEPRECATED_MSG("Use CacheSetHelper::PkgSelector instead") Constructor { UNKNOWN = CacheSetHelper::UNKNOWN,
+ REGEX = CacheSetHelper::REGEX,
+ TASK = CacheSetHelper::TASK,
+ FNMATCH = CacheSetHelper::FNMATCH };
+APT_IGNORE_DEPRECATED_PUSH
+ void setConstructor(Constructor const by) { ConstructedBy = (CacheSetHelper::PkgSelector)by; }
+APT_IGNORE_DEPRECATED_POP
+
+ void setConstructor(CacheSetHelper::PkgSelector const by) { ConstructedBy = by; }
+ CacheSetHelper::PkgSelector getConstructor() const { return ConstructedBy; }
+ PackageContainerInterface();
+ explicit PackageContainerInterface(CacheSetHelper::PkgSelector const by);
+ PackageContainerInterface& operator=(PackageContainerInterface const &other);
+ virtual ~PackageContainerInterface();
+
+ APT_DEPRECATED_MSG("Use helper.PackageFrom(CacheSetHelper::TASK, …) instead") static bool FromTask(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern, CacheSetHelper &helper) {
+ return helper.PackageFrom(CacheSetHelper::TASK, pci, Cache, pattern); }
+ APT_DEPRECATED_MSG("Use helper.PackageFrom(CacheSetHelper::REGEX, …) instead") static bool FromRegEx(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern, CacheSetHelper &helper) {
+ return helper.PackageFrom(CacheSetHelper::REGEX, pci, Cache, pattern); }
+ APT_DEPRECATED_MSG("Use helper.PackageFrom(CacheSetHelper::FNMATCH, …) instead") static bool FromFnmatch(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern, CacheSetHelper &helper) {
+ return helper.PackageFrom(CacheSetHelper::FNMATCH, pci, Cache, pattern); }
+ APT_DEPRECATED_MSG("Use helper.PackageFrom(CacheSetHelper::PACKAGENAME, …) instead") static bool FromGroup(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern, CacheSetHelper &helper) {
+ return helper.PackageFrom(CacheSetHelper::PACKAGENAME, pci, Cache, pattern); }
+ APT_DEPRECATED_MSG("Use helper.PackageFrom(CacheSetHelper::STRING, …) instead") static bool FromString(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string const &pattern, CacheSetHelper &helper) {
+ return helper.PackageFrom(CacheSetHelper::STRING, pci, Cache, pattern); }
+ APT_DEPRECATED_MSG("Use helper.PackageFromCommandLine instead") static bool FromCommandLine(PackageContainerInterface * const pci, pkgCacheFile &Cache, const char **cmdline, CacheSetHelper &helper) {
+ return helper.PackageFromCommandLine(pci, Cache, cmdline); }
+
+ APT_DEPRECATED_MSG("enum moved to CacheSetHelper::PkgModifier") typedef CacheSetHelper::PkgModifier Modifier;
+
+APT_IGNORE_DEPRECATED_PUSH
+ APT_DEPRECATED_MSG("Use helper.PackageFromName instead") static pkgCache::PkgIterator FromName(pkgCacheFile &Cache, std::string const &pattern, CacheSetHelper &helper) {
+ return helper.PackageFromName(Cache, pattern); }
+ APT_DEPRECATED_MSG("Use helper.PackageFromModifierCommandLine instead") static bool FromModifierCommandLine(unsigned short &modID, PackageContainerInterface * const pci,
+ pkgCacheFile &Cache, const char * cmdline,
+ std::list<Modifier> const &mods, CacheSetHelper &helper) {
+ return helper.PackageFromModifierCommandLine(modID, pci, Cache, cmdline, mods); }
+APT_IGNORE_DEPRECATED_POP
+
+private:
+ CacheSetHelper::PkgSelector ConstructedBy;
+ void * const d;
+};
+ /*}}}*/
+template<class Container> class PackageContainer : public PackageContainerInterface {/*{{{*/
+/** \class APT::PackageContainer
+
+ Simple wrapper around a container class like std::set to provide a similar
+ interface to a set of packages as to the complete set of all packages in the
+ pkgCache. */
+ Container _cont;
+public: /*{{{*/
+ /** \brief smell like a pkgCache::PkgIterator */
+ typedef Container_const_iterator<PackageContainerInterface, Container, PackageContainer> const_iterator;
+ typedef Container_iterator<PackageContainerInterface, Container, PackageContainer> iterator;
+ typedef Container_const_reverse_iterator<PackageContainerInterface, Container, PackageContainer> const_reverse_iterator;
+ typedef Container_reverse_iterator<PackageContainerInterface, Container, PackageContainer> reverse_iterator;
+ typedef typename Container::value_type value_type;
+ typedef typename Container::pointer pointer;
+ typedef typename Container::const_pointer const_pointer;
+ typedef typename Container::reference reference;
+ typedef typename Container::const_reference const_reference;
+ typedef typename Container::difference_type difference_type;
+ typedef typename Container::size_type size_type;
+ typedef typename Container::allocator_type allocator_type;
+
+ bool insert(pkgCache::PkgIterator const &P) APT_OVERRIDE { if (P.end() == true) return false; _cont.insert(P); return true; }
+ template<class Cont> void insert(PackageContainer<Cont> const &pkgcont) { _cont.insert((typename Cont::const_iterator)pkgcont.begin(), (typename Cont::const_iterator)pkgcont.end()); }
+ void insert(const_iterator begin, const_iterator end) { _cont.insert(begin, end); }
+
+ bool empty() const APT_OVERRIDE { return _cont.empty(); }
+ void clear() APT_OVERRIDE { return _cont.clear(); }
+ size_t size() const APT_OVERRIDE { return _cont.size(); }
+#if __GNUC__ >= 5 || (__GNUC_MINOR__ >= 9 && __GNUC__ >= 4)
+ iterator erase( const_iterator pos ) { return iterator(_cont.erase(pos._iter)); }
+ iterator erase( const_iterator first, const_iterator last ) { return iterator(_cont.erase(first._iter, last._iter)); }
+#else
+ iterator erase( iterator pos ) { return iterator(_cont.erase(pos._iter)); }
+ iterator erase( iterator first, iterator last ) { return iterator(_cont.erase(first._iter, last._iter)); }
+#endif
+ const_iterator begin() const { return const_iterator(_cont.begin()); }
+ const_iterator end() const { return const_iterator(_cont.end()); }
+ const_reverse_iterator rbegin() const { return const_reverse_iterator(_cont.rbegin()); }
+ const_reverse_iterator rend() const { return const_reverse_iterator(_cont.rend()); }
+#if __cplusplus >= 201103L
+ const_iterator cbegin() const { return const_iterator(_cont.cbegin()); }
+ const_iterator cend() const { return const_iterator(_cont.cend()); }
+ const_reverse_iterator crbegin() const { return const_reverse_iterator(_cont.crbegin()); }
+ const_reverse_iterator crend() const { return const_reverse_iterator(_cont.crend()); }
+#endif
+ iterator begin() { return iterator(_cont.begin()); }
+ iterator end() { return iterator(_cont.end()); }
+ reverse_iterator rbegin() { return reverse_iterator(_cont.rbegin()); }
+ reverse_iterator rend() { return reverse_iterator(_cont.rend()); }
+ const_iterator find(pkgCache::PkgIterator const &P) const { return const_iterator(_cont.find(P)); }
+
+ PackageContainer() : PackageContainerInterface(CacheSetHelper::UNKNOWN) {}
+ explicit PackageContainer(CacheSetHelper::PkgSelector const &by) : PackageContainerInterface(by) {}
+APT_IGNORE_DEPRECATED_PUSH
+ APT_DEPRECATED_MSG("Construct with a CacheSetHelper::PkgSelector instead") explicit PackageContainer(Constructor const &by) : PackageContainerInterface((CacheSetHelper::PkgSelector)by) {}
+APT_IGNORE_DEPRECATED_POP
+ template<typename Itr> PackageContainer(Itr first, Itr last) : PackageContainerInterface(CacheSetHelper::UNKNOWN), _cont(first, last) {}
+#if __cplusplus >= 201103L
+ PackageContainer(std::initializer_list<value_type> list) : PackageContainerInterface(CacheSetHelper::UNKNOWN), _cont(list) {}
+ void push_back(value_type&& P) { _cont.emplace_back(std::move(P)); }
+ template<typename... Args> void emplace_back(Args&&... args) { _cont.emplace_back(std::forward<Args>(args)...); }
+#endif
+ void push_back(const value_type& P) { _cont.push_back(P); }
+
+ /** \brief sort all included versions with given comparer
+
+ Some containers are sorted by default, some are not and can't be,
+ but a few like std::vector can be sorted if need be, so this can be
+ specialized in later on. The default is that this will fail though.
+ Specifically, already sorted containers like std::set will return
+ false as well as there is no easy way to check that the given comparer
+ would sort in the same way the set is currently sorted
+
+ \return \b true if the set was sorted, \b false if not. */
+ template<class Compare> bool sort(Compare /*Comp*/) { return false; }
+
+ /** \brief returns all packages in the cache who belong to the given task
+
+ A simple helper responsible for search for all members of a task
+ in the cache. Optional it prints a notice about the
+ packages chosen cause of the given task.
+ \param Cache the packages are in
+ \param pattern name of the task
+ \param helper responsible for error and message handling */
+ static PackageContainer FromTask(pkgCacheFile &Cache, std::string const &pattern, CacheSetHelper &helper) {
+ PackageContainer cont(CacheSetHelper::TASK);
+ helper.PackageFrom(CacheSetHelper::TASK, &cont, Cache, pattern);
+ return cont;
+ }
+ static PackageContainer FromTask(pkgCacheFile &Cache, std::string const &pattern) {
+ CacheSetHelper helper;
+ return FromTask(Cache, pattern, helper);
+ }
+
+ /** \brief returns all packages in the cache whose name matchs a given pattern
+
+ A simple helper responsible for executing a regular expression on all
+ package names in the cache. Optional it prints a notice about the
+ packages chosen cause of the given package.
+ \param Cache the packages are in
+ \param pattern regular expression for package names
+ \param helper responsible for error and message handling */
+ static PackageContainer FromRegEx(pkgCacheFile &Cache, std::string const &pattern, CacheSetHelper &helper) {
+ PackageContainer cont(CacheSetHelper::REGEX);
+ helper.PackageFrom(CacheSetHelper::REGEX, &cont, Cache, pattern);
+ return cont;
+ }
+
+ static PackageContainer FromRegEx(pkgCacheFile &Cache, std::string const &pattern) {
+ CacheSetHelper helper;
+ return FromRegEx(Cache, pattern, helper);
+ }
+
+ static PackageContainer FromFnmatch(pkgCacheFile &Cache, std::string const &pattern, CacheSetHelper &helper) {
+ PackageContainer cont(CacheSetHelper::FNMATCH);
+ helper.PackageFrom(CacheSetHelper::FNMATCH, &cont, Cache, pattern);
+ return cont;
+ }
+ static PackageContainer FromFnMatch(pkgCacheFile &Cache, std::string const &pattern) {
+ CacheSetHelper helper;
+ return FromFnmatch(Cache, pattern, helper);
+ }
+
+APT_IGNORE_DEPRECATED_PUSH
+ /** \brief returns a package specified by a string
+
+ \param Cache the package is in
+ \param pattern String the package name should be extracted from
+ \param helper responsible for error and message handling */
+ APT_DEPRECATED_MSG("Use helper.PackageFromName instead") static pkgCache::PkgIterator FromName(pkgCacheFile &Cache, std::string const &pattern, CacheSetHelper &helper) {
+ return helper.PackageFromName(Cache, pattern);
+ }
+ APT_DEPRECATED_MSG("Use helper.PackageFromName instead") static pkgCache::PkgIterator FromName(pkgCacheFile &Cache, std::string const &pattern) {
+ CacheSetHelper helper;
+ return FromName(Cache, pattern, helper);
+ }
+APT_IGNORE_DEPRECATED_POP
+
+ /** \brief returns all packages specified by a string
+
+ \param Cache the packages are in
+ \param pattern String the package name(s) should be extracted from
+ \param helper responsible for error and message handling */
+ static PackageContainer FromString(pkgCacheFile &Cache, std::string const &pattern, CacheSetHelper &helper) {
+ PackageContainer cont;
+ helper.PackageFrom(CacheSetHelper::PACKAGENAME, &cont, Cache, pattern);
+ return cont;
+ }
+ static PackageContainer FromString(pkgCacheFile &Cache, std::string const &pattern) {
+ CacheSetHelper helper;
+ return FromString(Cache, pattern, helper);
+ }
+
+ /** \brief returns all packages specified on the commandline
+
+ Get all package names from the commandline and executes regex's if needed.
+ No special package command is supported, just plain names.
+ \param Cache the packages are in
+ \param cmdline Command line the package names should be extracted from
+ \param helper responsible for error and message handling */
+ static PackageContainer FromCommandLine(pkgCacheFile &Cache, const char **cmdline, CacheSetHelper &helper) {
+ PackageContainer cont;
+ helper.PackageFromCommandLine(&cont, Cache, cmdline);
+ return cont;
+ }
+ static PackageContainer FromCommandLine(pkgCacheFile &Cache, const char **cmdline) {
+ CacheSetHelper helper;
+ return FromCommandLine(Cache, cmdline, helper);
+ }
+
+ /** \brief group packages by a action modifiers
+
+ At some point it is needed to get from the same commandline
+ different package sets grouped by a modifier. Take
+ apt-get install apt awesome-
+ as an example.
+ \param Cache the packages are in
+ \param cmdline Command line the package names should be extracted from
+ \param mods list of modifiers the method should accept
+ \param fallback the default modifier group for a package
+ \param helper responsible for error and message handling */
+ static std::map<unsigned short, PackageContainer> GroupedFromCommandLine(
+ pkgCacheFile &Cache,
+ const char **cmdline,
+ std::list<CacheSetHelper::PkgModifier> const &mods,
+ unsigned short const &fallback,
+ CacheSetHelper &helper) {
+ std::map<unsigned short, PackageContainer> pkgsets;
+ for (const char **I = cmdline; *I != 0; ++I) {
+ unsigned short modID = fallback;
+ PackageContainer pkgset;
+ helper.PackageFromModifierCommandLine(modID, &pkgset, Cache, *I, mods);
+ pkgsets[modID].insert(pkgset);
+ }
+ return pkgsets;
+ }
+ static std::map<unsigned short, PackageContainer> GroupedFromCommandLine(
+ pkgCacheFile &Cache,
+ const char **cmdline,
+ std::list<CacheSetHelper::PkgModifier> const &mods,
+ unsigned short const &fallback) {
+ CacheSetHelper helper;
+ return GroupedFromCommandLine(Cache, cmdline,
+ mods, fallback, helper);
+ }
+ /*}}}*/
+}; /*}}}*/
+// various specialisations for PackageContainer /*{{{*/
+template<> template<class Cont> void PackageContainer<std::list<pkgCache::PkgIterator> >::insert(PackageContainer<Cont> const &pkgcont) {
+ for (typename PackageContainer<Cont>::const_iterator p = pkgcont.begin(); p != pkgcont.end(); ++p)
+ _cont.push_back(*p);
+}
+#if __cplusplus >= 201103L
+template<> template<class Cont> void PackageContainer<std::forward_list<pkgCache::PkgIterator> >::insert(PackageContainer<Cont> const &pkgcont) {
+ for (typename PackageContainer<Cont>::const_iterator p = pkgcont.begin(); p != pkgcont.end(); ++p)
+ _cont.push_front(*p);
+}
+#endif
+template<> template<class Cont> void PackageContainer<std::deque<pkgCache::PkgIterator> >::insert(PackageContainer<Cont> const &pkgcont) {
+ for (typename PackageContainer<Cont>::const_iterator p = pkgcont.begin(); p != pkgcont.end(); ++p)
+ _cont.push_back(*p);
+}
+template<> template<class Cont> void PackageContainer<std::vector<pkgCache::PkgIterator> >::insert(PackageContainer<Cont> const &pkgcont) {
+ for (typename PackageContainer<Cont>::const_iterator p = pkgcont.begin(); p != pkgcont.end(); ++p)
+ _cont.push_back(*p);
+}
+// these are 'inline' as otherwise the linker has problems with seeing these untemplated
+// specializations again and again - but we need to see them, so that library users can use them
+template<> inline bool PackageContainer<std::list<pkgCache::PkgIterator> >::insert(pkgCache::PkgIterator const &P) {
+ if (P.end() == true)
+ return false;
+ _cont.push_back(P);
+ return true;
+}
+#if __cplusplus >= 201103L
+template<> inline bool PackageContainer<std::forward_list<pkgCache::PkgIterator> >::insert(pkgCache::PkgIterator const &P) {
+ if (P.end() == true)
+ return false;
+ _cont.push_front(P);
+ return true;
+}
+#endif
+template<> inline bool PackageContainer<std::deque<pkgCache::PkgIterator> >::insert(pkgCache::PkgIterator const &P) {
+ if (P.end() == true)
+ return false;
+ _cont.push_back(P);
+ return true;
+}
+template<> inline bool PackageContainer<std::vector<pkgCache::PkgIterator> >::insert(pkgCache::PkgIterator const &P) {
+ if (P.end() == true)
+ return false;
+ _cont.push_back(P);
+ return true;
+}
+template<> inline void PackageContainer<std::list<pkgCache::PkgIterator> >::insert(const_iterator begin, const_iterator end) {
+ for (const_iterator p = begin; p != end; ++p)
+ _cont.push_back(*p);
+}
+#if __cplusplus >= 201103L
+template<> inline void PackageContainer<std::forward_list<pkgCache::PkgIterator> >::insert(const_iterator begin, const_iterator end) {
+ for (const_iterator p = begin; p != end; ++p)
+ _cont.push_front(*p);
+}
+#endif
+template<> inline void PackageContainer<std::deque<pkgCache::PkgIterator> >::insert(const_iterator begin, const_iterator end) {
+ for (const_iterator p = begin; p != end; ++p)
+ _cont.push_back(*p);
+}
+template<> inline void PackageContainer<std::vector<pkgCache::PkgIterator> >::insert(const_iterator begin, const_iterator end) {
+ for (const_iterator p = begin; p != end; ++p)
+ _cont.push_back(*p);
+}
+#if APT_GCC_VERSION < 0x409
+template<> inline PackageContainer<std::set<pkgCache::PkgIterator> >::iterator PackageContainer<std::set<pkgCache::PkgIterator> >::erase(iterator i) {
+ _cont.erase(i._iter);
+ return end();
+}
+template<> inline PackageContainer<std::set<pkgCache::PkgIterator> >::iterator PackageContainer<std::set<pkgCache::PkgIterator> >::erase(iterator first, iterator last) {
+ _cont.erase(first, last);
+ return end();
+}
+#endif
+template<> template<class Compare> inline bool PackageContainer<std::vector<pkgCache::PkgIterator> >::sort(Compare Comp) {
+ std::sort(_cont.begin(), _cont.end(), Comp);
+ return true;
+}
+template<> template<class Compare> inline bool PackageContainer<std::list<pkgCache::PkgIterator> >::sort(Compare Comp) {
+ _cont.sort(Comp);
+ return true;
+}
+#if __cplusplus >= 201103L
+template<> template<class Compare> inline bool PackageContainer<std::forward_list<pkgCache::PkgIterator> >::sort(Compare Comp) {
+ _cont.sort(Comp);
+ return true;
+}
+#endif
+template<> template<class Compare> inline bool PackageContainer<std::deque<pkgCache::PkgIterator> >::sort(Compare Comp) {
+ std::sort(_cont.begin(), _cont.end(), Comp);
+ return true;
+}
+ /*}}}*/
+
+// class PackageUniverse - pkgCache as PackageContainerInterface /*{{{*/
+/** \class PackageUniverse
+
+ Wraps around our usual pkgCache, so that it can be stuffed into methods
+ expecting a PackageContainer.
+
+ The wrapping is read-only in practice modeled by making erase and co
+ private methods. */
+class APT_PUBLIC PackageUniverse : public PackageContainerInterface {
+ pkgCache * const _cont;
+ void * const d;
+public:
+ class const_iterator : public APT::Container_iterator_base<APT::PackageContainerInterface, PackageUniverse, PackageUniverse::const_iterator, pkgCache::PkgIterator, pkgCache::PkgIterator>
+ {
+ public:
+ explicit const_iterator(pkgCache::PkgIterator i):
+ Container_iterator_base<APT::PackageContainerInterface, PackageUniverse, PackageUniverse::const_iterator, pkgCache::PkgIterator, pkgCache::PkgIterator>(i) {}
+
+ inline pkgCache::PkgIterator getType(void) const { return _iter; }
+ };
+ typedef const_iterator iterator;
+ typedef pkgCache::PkgIterator value_type;
+ typedef typename pkgCache::PkgIterator* pointer;
+ typedef typename pkgCache::PkgIterator const* const_pointer;
+ typedef const pkgCache::PkgIterator& const_reference;
+ typedef const_reference reference;
+ typedef const_iterator::difference_type difference_type;
+ typedef std::make_unsigned<const_iterator::difference_type>::type size_type;
+
+
+ bool empty() const APT_OVERRIDE { return false; }
+ size_t size() const APT_OVERRIDE { return _cont->Head().PackageCount; }
+
+ const_iterator begin() const { return const_iterator(_cont->PkgBegin()); }
+ const_iterator end() const { return const_iterator(_cont->PkgEnd()); }
+ const_iterator cbegin() const { return const_iterator(_cont->PkgBegin()); }
+ const_iterator cend() const { return const_iterator(_cont->PkgEnd()); }
+ iterator begin() { return iterator(_cont->PkgBegin()); }
+ iterator end() { return iterator(_cont->PkgEnd()); }
+
+ pkgCache * data() const { return _cont; }
+
+ explicit PackageUniverse(pkgCache * const Owner);
+ explicit PackageUniverse(pkgCacheFile * const Owner);
+ virtual ~PackageUniverse();
+
+private:
+ APT_HIDDEN bool insert(pkgCache::PkgIterator const &) APT_OVERRIDE { return true; }
+ template<class Cont> APT_HIDDEN void insert(PackageContainer<Cont> const &) { }
+ APT_HIDDEN void insert(const_iterator, const_iterator) { }
+
+ APT_HIDDEN void clear() APT_OVERRIDE { }
+ APT_HIDDEN iterator erase( const_iterator pos );
+ APT_HIDDEN iterator erase( const_iterator first, const_iterator last );
+};
+ /*}}}*/
+typedef PackageContainer<std::set<pkgCache::PkgIterator> > PackageSet;
+#if __cplusplus >= 201103L
+typedef PackageContainer<std::unordered_set<pkgCache::PkgIterator> > PackageUnorderedSet;
+typedef PackageContainer<std::forward_list<pkgCache::PkgIterator> > PackageForwardList;
+#endif
+typedef PackageContainer<std::list<pkgCache::PkgIterator> > PackageList;
+typedef PackageContainer<std::deque<pkgCache::PkgIterator> > PackageDeque;
+typedef PackageContainer<std::vector<pkgCache::PkgIterator> > PackageVector;
+
+class VersionContainerInterface { /*{{{*/
+/** \class APT::VersionContainerInterface
+
+ Same as APT::PackageContainerInterface, just for Versions */
+public:
+ /** \brief smell like a pkgCache::VerIterator */
+ template<class Itr> class iterator_base { /*{{{*/
+ pkgCache::VerIterator getType() const { return static_cast<Itr const*>(this)->getType(); };
+ public:
+ operator pkgCache::VerIterator(void) { return getType(); }
+
+ inline pkgCache *Cache() const { return getType().Cache(); }
+ inline unsigned long Index() const {return getType().Index();}
+ inline int CompareVer(const pkgCache::VerIterator &B) const { return getType().CompareVer(B); }
+ inline const char *VerStr() const { return getType().VerStr(); }
+ inline const char *Section() const { return getType().Section(); }
+ inline const char *Arch() const { return getType().Arch(); }
+ inline pkgCache::PkgIterator ParentPkg() const { return getType().ParentPkg(); }
+ inline pkgCache::DescIterator DescriptionList() const { return getType().DescriptionList(); }
+ inline pkgCache::DescIterator TranslatedDescription() const { return getType().TranslatedDescription(); }
+ inline pkgCache::DepIterator DependsList() const { return getType().DependsList(); }
+ inline pkgCache::PrvIterator ProvidesList() const { return getType().ProvidesList(); }
+ inline pkgCache::VerFileIterator FileList() const { return getType().FileList(); }
+ inline bool Downloadable() const { return getType().Downloadable(); }
+ inline const char *PriorityType() const { return getType().PriorityType(); }
+ inline std::string RelStr() const { return getType().RelStr(); }
+ inline bool Automatic() const { return getType().Automatic(); }
+ inline pkgCache::VerFileIterator NewestFile() const { return getType().NewestFile(); }
+ // we have only valid iterators here
+ inline bool end() const { return false; }
+
+ inline pkgCache::Version const * operator->() const { return &*getType(); }
+ };
+ /*}}}*/
+
+ virtual bool insert(pkgCache::VerIterator const &V) = 0;
+ virtual bool empty() const = 0;
+ virtual void clear() = 0;
+ virtual size_t size() const = 0;
+
+ /** \brief specifies which version(s) will be returned if non is given */
+ enum APT_DEPRECATED_MSG("enum moved to CacheSetHelper::VerSelector instead") Version {
+ ALL = CacheSetHelper::ALL,
+ CANDANDINST = CacheSetHelper::CANDANDINST,
+ CANDIDATE = CacheSetHelper::CANDIDATE,
+ INSTALLED = CacheSetHelper::INSTALLED,
+ CANDINST = CacheSetHelper::CANDINST,
+ INSTCAND = CacheSetHelper::INSTCAND,
+ NEWEST = CacheSetHelper::NEWEST
+ };
+
+ struct Modifier {
+ unsigned short const ID;
+ const char * const Alias;
+ enum Position { NONE, PREFIX, POSTFIX } const Pos;
+ enum CacheSetHelper::VerSelector const SelectVersion;
+ Modifier (unsigned short const &id, const char * const alias, Position const &pos,
+ enum CacheSetHelper::VerSelector const select) : ID(id), Alias(alias), Pos(pos),
+ SelectVersion(select) {}
+APT_IGNORE_DEPRECATED_PUSH
+ APT_DEPRECATED_MSG("Construct with a CacheSetHelper::VerSelector instead") Modifier(unsigned short const &id, const char * const alias, Position const &pos,
+ Version const &select) : ID(id), Alias(alias), Pos(pos),
+ SelectVersion((CacheSetHelper::VerSelector)select) {}
+APT_IGNORE_DEPRECATED_POP
+ };
+
+ static bool FromCommandLine(VersionContainerInterface * const vci, pkgCacheFile &Cache,
+ const char **cmdline, CacheSetHelper::VerSelector const fallback,
+ CacheSetHelper &helper);
+APT_IGNORE_DEPRECATED_PUSH
+ APT_DEPRECATED_MSG("Use CacheSetHelper::VerSelector as fallback selector") static bool FromCommandLine(VersionContainerInterface * const vci, pkgCacheFile &Cache,
+ const char **cmdline, Version const &fallback,
+ CacheSetHelper &helper) {
+ return FromCommandLine(vci, Cache, cmdline, (CacheSetHelper::VerSelector)fallback, helper);
+ }
+APT_IGNORE_DEPRECATED_POP
+
+ static bool FromString(VersionContainerInterface * const vci, pkgCacheFile &Cache,
+ std::string pkg, CacheSetHelper::VerSelector const fallback, CacheSetHelper &helper,
+ bool const onlyFromName = false);
+APT_IGNORE_DEPRECATED_PUSH
+ APT_DEPRECATED_MSG("Use CacheSetHelper::VerSelector as fallback selector") static bool FromString(VersionContainerInterface * const vci, pkgCacheFile &Cache,
+ std::string pkg, Version const &fallback, CacheSetHelper &helper,
+ bool const onlyFromName = false) {
+ return FromString(vci, Cache, pkg, (CacheSetHelper::VerSelector)fallback, helper, onlyFromName);
+ }
+APT_IGNORE_DEPRECATED_POP
+
+ static bool FromPackage(VersionContainerInterface * const vci, pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &P, CacheSetHelper::VerSelector const fallback,
+ CacheSetHelper &helper);
+APT_IGNORE_DEPRECATED_PUSH
+ APT_DEPRECATED_MSG("Use CacheSetHelper::VerSelector as fallback selector") static bool FromPackage(VersionContainerInterface * const vci, pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &P, Version const &fallback,
+ CacheSetHelper &helper) {
+ return FromPackage(vci, Cache, P, (CacheSetHelper::VerSelector)fallback, helper);
+ }
+APT_IGNORE_DEPRECATED_POP
+
+ static bool FromModifierCommandLine(unsigned short &modID,
+ VersionContainerInterface * const vci,
+ pkgCacheFile &Cache, const char * cmdline,
+ std::list<Modifier> const &mods,
+ CacheSetHelper &helper);
+
+
+ static bool FromDependency(VersionContainerInterface * const vci,
+ pkgCacheFile &Cache,
+ pkgCache::DepIterator const &D,
+ CacheSetHelper::VerSelector const selector,
+ CacheSetHelper &helper);
+APT_IGNORE_DEPRECATED_PUSH
+ APT_DEPRECATED_MSG("Use CacheSetHelper::VerSelector as fallback selector") static bool FromDependency(VersionContainerInterface * const vci,
+ pkgCacheFile &Cache,
+ pkgCache::DepIterator const &D,
+ Version const &selector,
+ CacheSetHelper &helper) {
+ return FromDependency(vci, Cache, D, (CacheSetHelper::VerSelector)selector, helper);
+ }
+APT_IGNORE_DEPRECATED_POP
+
+ VersionContainerInterface();
+ VersionContainerInterface& operator=(VersionContainerInterface const &other);
+ virtual ~VersionContainerInterface();
+private:
+ void * const d;
+
+protected: /*{{{*/
+
+ /** \brief returns the candidate version of the package
+
+ \param Cache to be used to query for information
+ \param Pkg we want the candidate version from this package
+ \param helper used in this container instance */
+ static pkgCache::VerIterator getCandidateVer(pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg, CacheSetHelper &helper);
+
+ /** \brief returns the installed version of the package
+
+ \param Cache to be used to query for information
+ \param Pkg we want the installed version from this package
+ \param helper used in this container instance */
+ static pkgCache::VerIterator getInstalledVer(pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg, CacheSetHelper &helper);
+ /*}}}*/
+};
+ /*}}}*/
+template<class Container> class VersionContainer : public VersionContainerInterface {/*{{{*/
+/** \class APT::VersionContainer
+
+ Simple wrapper around a container class like std::set to provide a similar
+ interface to a set of versions as to the complete set of all versions in the
+ pkgCache. */
+ Container _cont;
+public: /*{{{*/
+
+ typedef Container_const_iterator<VersionContainerInterface, Container, VersionContainer> const_iterator;
+ typedef Container_iterator<VersionContainerInterface, Container, VersionContainer> iterator;
+ typedef Container_const_reverse_iterator<VersionContainerInterface, Container, VersionContainer> const_reverse_iterator;
+ typedef Container_reverse_iterator<VersionContainerInterface, Container, VersionContainer> reverse_iterator;
+ typedef typename Container::value_type value_type;
+ typedef typename Container::pointer pointer;
+ typedef typename Container::const_pointer const_pointer;
+ typedef typename Container::reference reference;
+ typedef typename Container::const_reference const_reference;
+ typedef typename Container::difference_type difference_type;
+ typedef typename Container::size_type size_type;
+ typedef typename Container::allocator_type allocator_type;
+
+ bool insert(pkgCache::VerIterator const &V) APT_OVERRIDE { if (V.end() == true) return false; _cont.insert(V); return true; }
+ template<class Cont> void insert(VersionContainer<Cont> const &vercont) { _cont.insert((typename Cont::const_iterator)vercont.begin(), (typename Cont::const_iterator)vercont.end()); }
+ void insert(const_iterator begin, const_iterator end) { _cont.insert(begin, end); }
+ bool empty() const APT_OVERRIDE { return _cont.empty(); }
+ void clear() APT_OVERRIDE { return _cont.clear(); }
+ size_t size() const APT_OVERRIDE { return _cont.size(); }
+#if APT_GCC_VERSION >= 0x409
+ iterator erase( const_iterator pos ) { return iterator(_cont.erase(pos._iter)); }
+ iterator erase( const_iterator first, const_iterator last ) { return iterator(_cont.erase(first._iter, last._iter)); }
+#else
+ iterator erase( iterator pos ) { return iterator(_cont.erase(pos._iter)); }
+ iterator erase( iterator first, iterator last ) { return iterator(_cont.erase(first._iter, last._iter)); }
+#endif
+ const_iterator begin() const { return const_iterator(_cont.begin()); }
+ const_iterator end() const { return const_iterator(_cont.end()); }
+ const_reverse_iterator rbegin() const { return const_reverse_iterator(_cont.rbegin()); }
+ const_reverse_iterator rend() const { return const_reverse_iterator(_cont.rend()); }
+#if __cplusplus >= 201103L
+ const_iterator cbegin() const { return const_iterator(_cont.cbegin()); }
+ const_iterator cend() const { return const_iterator(_cont.cend()); }
+ const_reverse_iterator crbegin() const { return const_reverse_iterator(_cont.crbegin()); }
+ const_reverse_iterator crend() const { return const_reverse_iterator(_cont.crend()); }
+#endif
+ iterator begin() { return iterator(_cont.begin()); }
+ iterator end() { return iterator(_cont.end()); }
+ reverse_iterator rbegin() { return reverse_iterator(_cont.rbegin()); }
+ reverse_iterator rend() { return reverse_iterator(_cont.rend()); }
+ const_iterator find(pkgCache::VerIterator const &V) const { return const_iterator(_cont.find(V)); }
+
+ VersionContainer() : VersionContainerInterface() {}
+ template<typename Itr> VersionContainer(Itr first, Itr last) : VersionContainerInterface(), _cont(first, last) {}
+#if __cplusplus >= 201103L
+ VersionContainer(std::initializer_list<value_type> list) : VersionContainerInterface(), _cont(list) {}
+ void push_back(value_type&& P) { _cont.emplace_back(std::move(P)); }
+ template<typename... Args> void emplace_back(Args&&... args) { _cont.emplace_back(std::forward<Args>(args)...); }
+#endif
+ void push_back(const value_type& P) { _cont.push_back(P); }
+
+ /** \brief sort all included versions with given comparer
+
+ Some containers are sorted by default, some are not and can't be,
+ but a few like std::vector can be sorted if need be, so this can be
+ specialized in later on. The default is that this will fail though.
+ Specifically, already sorted containers like std::set will return
+ false as well as there is no easy way to check that the given comparer
+ would sort in the same way the set is currently sorted
+
+ \return \b true if the set was sorted, \b false if not. */
+ template<class Compare> bool sort(Compare /*Comp*/) { return false; }
+
+ /** \brief returns all versions specified on the commandline
+
+ Get all versions from the commandline, uses given default version if
+ non specifically requested and executes regex's if needed on names.
+ \param Cache the packages and versions are in
+ \param cmdline Command line the versions should be extracted from
+ \param fallback version specification
+ \param helper responsible for error and message handling */
+ static VersionContainer FromCommandLine(pkgCacheFile &Cache, const char **cmdline,
+ CacheSetHelper::VerSelector const fallback, CacheSetHelper &helper) {
+ VersionContainer vercon;
+ VersionContainerInterface::FromCommandLine(&vercon, Cache, cmdline, fallback, helper);
+ return vercon;
+ }
+ static VersionContainer FromCommandLine(pkgCacheFile &Cache, const char **cmdline,
+ CacheSetHelper::VerSelector const fallback) {
+ CacheSetHelper helper;
+ return FromCommandLine(Cache, cmdline, fallback, helper);
+ }
+ static VersionContainer FromCommandLine(pkgCacheFile &Cache, const char **cmdline) {
+ return FromCommandLine(Cache, cmdline, CacheSetHelper::CANDINST);
+ }
+ static VersionContainer FromString(pkgCacheFile &Cache, std::string const &pkg,
+ CacheSetHelper::VerSelector const fallback, CacheSetHelper &helper,
+ bool const /*onlyFromName = false*/) {
+ VersionContainer vercon;
+ VersionContainerInterface::FromString(&vercon, Cache, pkg, fallback, helper);
+ return vercon;
+ }
+ static VersionContainer FromString(pkgCacheFile &Cache, std::string pkg,
+ CacheSetHelper::VerSelector const fallback) {
+ CacheSetHelper helper;
+ return FromString(Cache, pkg, fallback, helper);
+ }
+ static VersionContainer FromString(pkgCacheFile &Cache, std::string pkg) {
+ return FromString(Cache, pkg, CacheSetHelper::CANDINST);
+ }
+APT_IGNORE_DEPRECATED_PUSH
+ static VersionContainer FromCommandLine(pkgCacheFile &Cache, const char **cmdline,
+ Version const &fallback, CacheSetHelper &helper) {
+ VersionContainer vercon;
+ VersionContainerInterface::FromCommandLine(&vercon, Cache, cmdline, (CacheSetHelper::VerSelector)fallback, helper);
+ return vercon;
+ }
+ static VersionContainer FromCommandLine(pkgCacheFile &Cache, const char **cmdline,
+ Version const &fallback) {
+ CacheSetHelper helper;
+ return FromCommandLine(Cache, cmdline, (CacheSetHelper::VerSelector)fallback, helper);
+ }
+ static VersionContainer FromString(pkgCacheFile &Cache, std::string const &pkg,
+ Version const &fallback, CacheSetHelper &helper,
+ bool const /*onlyFromName = false*/) {
+ VersionContainer vercon;
+ VersionContainerInterface::FromString(&vercon, Cache, pkg, (CacheSetHelper::VerSelector)fallback, helper);
+ return vercon;
+ }
+ static VersionContainer FromString(pkgCacheFile &Cache, std::string pkg,
+ Version const &fallback) {
+ CacheSetHelper helper;
+ return FromString(Cache, pkg, (CacheSetHelper::VerSelector)fallback, helper);
+ }
+APT_IGNORE_DEPRECATED_POP
+
+ /** \brief returns all versions specified for the package
+
+ \param Cache the package and versions are in
+ \param P the package in question
+ \param fallback the version(s) you want to get
+ \param helper the helper used for display and error handling */
+ static VersionContainer FromPackage(pkgCacheFile &Cache, pkgCache::PkgIterator const &P,
+ CacheSetHelper::VerSelector const fallback, CacheSetHelper &helper) {
+ VersionContainer vercon;
+ VersionContainerInterface::FromPackage(&vercon, Cache, P, fallback, helper);
+ return vercon;
+ }
+ static VersionContainer FromPackage(pkgCacheFile &Cache, pkgCache::PkgIterator const &P,
+ CacheSetHelper::VerSelector const fallback) {
+ CacheSetHelper helper;
+ return FromPackage(Cache, P, fallback, helper);
+ }
+APT_IGNORE_DEPRECATED_PUSH
+ static VersionContainer FromPackage(pkgCacheFile &Cache, pkgCache::PkgIterator const &P,
+ Version const &fallback, CacheSetHelper &helper) {
+ VersionContainer vercon;
+ VersionContainerInterface::FromPackage(&vercon, Cache, P, (CacheSetHelper::VerSelector)fallback, helper);
+ return vercon;
+ }
+ static VersionContainer FromPackage(pkgCacheFile &Cache, pkgCache::PkgIterator const &P,
+ Version const &fallback) {
+ CacheSetHelper helper;
+ return FromPackage(Cache, P, (CacheSetHelper::VerSelector)fallback, helper);
+ }
+APT_IGNORE_DEPRECATED_POP
+ static VersionContainer FromPackage(pkgCacheFile &Cache, pkgCache::PkgIterator const &P) {
+ return FromPackage(Cache, P, CacheSetHelper::CANDIDATE);
+ }
+
+ static std::map<unsigned short, VersionContainer> GroupedFromCommandLine(
+ pkgCacheFile &Cache,
+ const char **cmdline,
+ std::list<Modifier> const &mods,
+ unsigned short const fallback,
+ CacheSetHelper &helper) {
+ std::map<unsigned short, VersionContainer> versets;
+ for (const char **I = cmdline; *I != 0; ++I) {
+ unsigned short modID = fallback;
+ VersionContainer verset;
+ VersionContainerInterface::FromModifierCommandLine(modID, &verset, Cache, *I, mods, helper);
+ versets[modID].insert(verset);
+ }
+ return versets;
+
+ }
+ static std::map<unsigned short, VersionContainer> GroupedFromCommandLine(
+ pkgCacheFile &Cache, const char **cmdline,
+ std::list<Modifier> const &mods,
+ unsigned short const fallback) {
+ CacheSetHelper helper;
+ return GroupedFromCommandLine(Cache, cmdline,
+ mods, fallback, helper);
+ }
+
+ static VersionContainer FromDependency(pkgCacheFile &Cache, pkgCache::DepIterator const &D,
+ CacheSetHelper::VerSelector const selector, CacheSetHelper &helper) {
+ VersionContainer vercon;
+ VersionContainerInterface::FromDependency(&vercon, Cache, D, selector, helper);
+ return vercon;
+ }
+ static VersionContainer FromDependency(pkgCacheFile &Cache, pkgCache::DepIterator const &D,
+ CacheSetHelper::VerSelector const selector) {
+ CacheSetHelper helper;
+ return FromDependency(Cache, D, selector, helper);
+ }
+APT_IGNORE_DEPRECATED_PUSH
+ static VersionContainer FromDependency(pkgCacheFile &Cache, pkgCache::DepIterator const &D,
+ Version const &selector, CacheSetHelper &helper) {
+ VersionContainer vercon;
+ VersionContainerInterface::FromDependency(&vercon, Cache, D, (CacheSetHelper::VerSelector)selector, helper);
+ return vercon;
+ }
+ static VersionContainer FromDependency(pkgCacheFile &Cache, pkgCache::DepIterator const &D,
+ Version const &selector) {
+ CacheSetHelper helper;
+ return FromDependency(Cache, D, (CacheSetHelper::VerSelector)selector, helper);
+ }
+APT_IGNORE_DEPRECATED_POP
+ static VersionContainer FromDependency(pkgCacheFile &Cache, pkgCache::DepIterator const &D) {
+ return FromDependency(Cache, D, CacheSetHelper::CANDIDATE);
+ }
+ /*}}}*/
+}; /*}}}*/
+// various specialisations for VersionContainer /*{{{*/
+template<> template<class Cont> void VersionContainer<std::list<pkgCache::VerIterator> >::insert(VersionContainer<Cont> const &vercont) {
+ for (typename VersionContainer<Cont>::const_iterator v = vercont.begin(); v != vercont.end(); ++v)
+ _cont.push_back(*v);
+}
+#if __cplusplus >= 201103L
+template<> template<class Cont> void VersionContainer<std::forward_list<pkgCache::VerIterator> >::insert(VersionContainer<Cont> const &vercont) {
+ for (typename VersionContainer<Cont>::const_iterator v = vercont.begin(); v != vercont.end(); ++v)
+ _cont.push_front(*v);
+}
+#endif
+template<> template<class Cont> void VersionContainer<std::deque<pkgCache::VerIterator> >::insert(VersionContainer<Cont> const &vercont) {
+ for (typename VersionContainer<Cont>::const_iterator v = vercont.begin(); v != vercont.end(); ++v)
+ _cont.push_back(*v);
+}
+template<> template<class Cont> void VersionContainer<std::vector<pkgCache::VerIterator> >::insert(VersionContainer<Cont> const &vercont) {
+ for (typename VersionContainer<Cont>::const_iterator v = vercont.begin(); v != vercont.end(); ++v)
+ _cont.push_back(*v);
+}
+// these are 'inline' as otherwise the linker has problems with seeing these untemplated
+// specializations again and again - but we need to see them, so that library users can use them
+template<> inline bool VersionContainer<std::list<pkgCache::VerIterator> >::insert(pkgCache::VerIterator const &V) {
+ if (V.end() == true)
+ return false;
+ _cont.push_back(V);
+ return true;
+}
+#if __cplusplus >= 201103L
+template<> inline bool VersionContainer<std::forward_list<pkgCache::VerIterator> >::insert(pkgCache::VerIterator const &V) {
+ if (V.end() == true)
+ return false;
+ _cont.push_front(V);
+ return true;
+}
+#endif
+template<> inline bool VersionContainer<std::deque<pkgCache::VerIterator> >::insert(pkgCache::VerIterator const &V) {
+ if (V.end() == true)
+ return false;
+ _cont.push_back(V);
+ return true;
+}
+template<> inline bool VersionContainer<std::vector<pkgCache::VerIterator> >::insert(pkgCache::VerIterator const &V) {
+ if (V.end() == true)
+ return false;
+ _cont.push_back(V);
+ return true;
+}
+template<> inline void VersionContainer<std::list<pkgCache::VerIterator> >::insert(const_iterator begin, const_iterator end) {
+ for (const_iterator v = begin; v != end; ++v)
+ _cont.push_back(*v);
+}
+#if __cplusplus >= 201103L
+template<> inline void VersionContainer<std::forward_list<pkgCache::VerIterator> >::insert(const_iterator begin, const_iterator end) {
+ for (const_iterator v = begin; v != end; ++v)
+ _cont.push_front(*v);
+}
+#endif
+template<> inline void VersionContainer<std::deque<pkgCache::VerIterator> >::insert(const_iterator begin, const_iterator end) {
+ for (const_iterator v = begin; v != end; ++v)
+ _cont.push_back(*v);
+}
+template<> inline void VersionContainer<std::vector<pkgCache::VerIterator> >::insert(const_iterator begin, const_iterator end) {
+ for (const_iterator v = begin; v != end; ++v)
+ _cont.push_back(*v);
+}
+#if APT_GCC_VERSION < 0x409
+template<> inline VersionContainer<std::set<pkgCache::VerIterator> >::iterator VersionContainer<std::set<pkgCache::VerIterator> >::erase(iterator i) {
+ _cont.erase(i._iter);
+ return end();
+}
+template<> inline VersionContainer<std::set<pkgCache::VerIterator> >::iterator VersionContainer<std::set<pkgCache::VerIterator> >::erase(iterator first, iterator last) {
+ _cont.erase(first, last);
+ return end();
+}
+#endif
+template<> template<class Compare> inline bool VersionContainer<std::vector<pkgCache::VerIterator> >::sort(Compare Comp) {
+ std::sort(_cont.begin(), _cont.end(), Comp);
+ return true;
+}
+template<> template<class Compare> inline bool VersionContainer<std::list<pkgCache::VerIterator> >::sort(Compare Comp) {
+ _cont.sort(Comp);
+ return true;
+}
+#if __cplusplus >= 201103L
+template<> template<class Compare> inline bool VersionContainer<std::forward_list<pkgCache::VerIterator> >::sort(Compare Comp) {
+ _cont.sort(Comp);
+ return true;
+}
+#endif
+template<> template<class Compare> inline bool VersionContainer<std::deque<pkgCache::VerIterator> >::sort(Compare Comp) {
+ std::sort(_cont.begin(), _cont.end(), Comp);
+ return true;
+}
+ /*}}}*/
+
+typedef VersionContainer<std::set<pkgCache::VerIterator> > VersionSet;
+#if __cplusplus >= 201103L
+typedef VersionContainer<std::unordered_set<pkgCache::VerIterator> > VersionUnorderedSet;
+typedef VersionContainer<std::forward_list<pkgCache::VerIterator> > VersionForwardList;
+#endif
+typedef VersionContainer<std::list<pkgCache::VerIterator> > VersionList;
+typedef VersionContainer<std::deque<pkgCache::VerIterator> > VersionDeque;
+typedef VersionContainer<std::vector<pkgCache::VerIterator> > VersionVector;
+}
+#endif
diff --git a/apt-pkg/cdrom.cc b/apt-pkg/cdrom.cc
new file mode 100644
index 000000000..a3248fc17
--- /dev/null
+++ b/apt-pkg/cdrom.cc
@@ -0,0 +1,1028 @@
+/*
+ */
+#include <config.h>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/cdromutl.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/cdrom.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/indexcopy.h>
+
+
+#include <string.h>
+#include <iostream>
+#include <string>
+#include <vector>
+#include <sys/stat.h>
+#include <dirent.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <algorithm>
+#include <dlfcn.h>
+#include <iostream>
+#include <sstream>
+#include <fstream>
+
+#include<apti18n.h>
+
+using namespace std;
+
+// FindPackages - Find the package files on the CDROM /*{{{*/
+// ---------------------------------------------------------------------
+/* We look over the cdrom for package files. This is a recursive
+ search that short circuits when it his a package file in the dir.
+ This speeds it up greatly as the majority of the size is in the
+ binary-* sub dirs. */
+bool pkgCdrom::FindPackages(string CD,
+ vector<string> &List,
+ vector<string> &SList,
+ vector<string> &SigList,
+ vector<string> &TransList,
+ string &InfoDir, pkgCdromStatus *log,
+ unsigned int Depth)
+{
+ static ino_t Inodes[9];
+ DIR *D;
+
+ // if we have a look we "pulse" now
+ if(log)
+ log->Update();
+
+ if (Depth >= 7)
+ return true;
+
+ if (CD[CD.length()-1] != '/')
+ CD += '/';
+
+ if (chdir(CD.c_str()) != 0)
+ return _error->Errno("chdir","Unable to change to %s",CD.c_str());
+
+ // Look for a .disk subdirectory
+ if (InfoDir.empty() == true)
+ {
+ if (DirectoryExists(".disk") == true)
+ InfoDir = InfoDir + CD + ".disk/";
+ }
+
+ // Don't look into directories that have been marked to ignore.
+ if (RealFileExists(".aptignr") == true)
+ return true;
+
+ /* Check _first_ for a signature file as apt-cdrom assumes that all files
+ under a Packages/Source file are in control of that file and stops
+ the scanning
+ */
+ if (RealFileExists("Release.gpg") == true || RealFileExists("InRelease") == true)
+ {
+ SigList.push_back(CD);
+ }
+
+ /* Aha! We found some package files. We assume that everything under
+ this dir is controlled by those package files so we don't look down
+ anymore */
+ std::vector<APT::Configuration::Compressor> const compressor = APT::Configuration::getCompressors();
+ for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressor.begin();
+ c != compressor.end(); ++c)
+ {
+ if (RealFileExists(std::string("Packages").append(c->Extension).c_str()) == false)
+ continue;
+
+ if (_config->FindB("Debug::aptcdrom",false) == true)
+ std::clog << "Found Packages in " << CD << std::endl;
+ List.push_back(CD);
+
+ // Continue down if thorough is given
+ if (_config->FindB("APT::CDROM::Thorough",false) == false)
+ return true;
+ break;
+ }
+ for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressor.begin();
+ c != compressor.end(); ++c)
+ {
+ if (RealFileExists(std::string("Sources").append(c->Extension).c_str()) == false)
+ continue;
+
+ if (_config->FindB("Debug::aptcdrom",false) == true)
+ std::clog << "Found Sources in " << CD << std::endl;
+ SList.push_back(CD);
+
+ // Continue down if thorough is given
+ if (_config->FindB("APT::CDROM::Thorough",false) == false)
+ return true;
+ break;
+ }
+
+ // see if we find translation indices
+ if (DirectoryExists("i18n") == true)
+ {
+ D = opendir("i18n");
+ for (struct dirent *Dir = readdir(D); Dir != 0; Dir = readdir(D))
+ {
+ if(strncmp(Dir->d_name, "Translation-", strlen("Translation-")) != 0)
+ continue;
+ string file = Dir->d_name;
+ for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressor.begin();
+ c != compressor.end(); ++c)
+ {
+ string fileext = flExtension(file);
+ if (file == fileext)
+ fileext.clear();
+ else if (fileext.empty() == false)
+ fileext = "." + fileext;
+
+ if (c->Extension == fileext)
+ {
+ if (_config->FindB("Debug::aptcdrom",false) == true)
+ std::clog << "Found translation " << Dir->d_name << " in " << CD << "i18n/" << std::endl;
+ file.erase(file.size() - fileext.size());
+ TransList.push_back(CD + "i18n/" + file);
+ break;
+ }
+ }
+ }
+ closedir(D);
+ }
+
+ D = opendir(".");
+ if (D == 0)
+ return _error->Errno("opendir","Unable to read %s",CD.c_str());
+
+ // Run over the directory
+ for (struct dirent *Dir = readdir(D); Dir != 0; Dir = readdir(D))
+ {
+ // Skip some files..
+ if (strcmp(Dir->d_name,".") == 0 ||
+ strcmp(Dir->d_name,"..") == 0 ||
+ strcmp(Dir->d_name,".disk") == 0 ||
+ strcmp(Dir->d_name,"debian-installer") == 0)
+ continue;
+
+ // See if the name is a sub directory
+ struct stat Buf;
+ if (stat(Dir->d_name,&Buf) != 0)
+ continue;
+
+ if (S_ISDIR(Buf.st_mode) == 0)
+ continue;
+
+ unsigned int I;
+ for (I = 0; I != Depth; I++)
+ if (Inodes[I] == Buf.st_ino)
+ break;
+ if (I != Depth)
+ continue;
+
+ // Store the inodes weve seen
+ Inodes[Depth] = Buf.st_ino;
+
+ // Descend
+ if (FindPackages(CD + Dir->d_name,List,SList,SigList,TransList,InfoDir,log,Depth+1) == false)
+ break;
+
+ if (chdir(CD.c_str()) != 0)
+ {
+ _error->Errno("chdir","Unable to change to %s", CD.c_str());
+ closedir(D);
+ return false;
+ }
+ };
+
+ closedir(D);
+
+ return !_error->PendingError();
+}
+ /*}}}*/
+// Score - We compute a 'score' for a path /*{{{*/
+// ---------------------------------------------------------------------
+/* Paths are scored based on how close they come to what I consider
+ normal. That is ones that have 'dist' 'stable' 'testing' will score
+ higher than ones without. */
+int pkgCdrom::Score(string Path)
+{
+ int Res = 0;
+ if (Path.find("stable/") != string::npos)
+ Res += 29;
+ if (Path.find("/binary-") != string::npos)
+ Res += 20;
+ if (Path.find("testing/") != string::npos)
+ Res += 28;
+ if (Path.find("unstable/") != string::npos)
+ Res += 27;
+ if (Path.find("/dists/") != string::npos)
+ Res += 40;
+ if (Path.find("/main/") != string::npos)
+ Res += 20;
+ if (Path.find("/contrib/") != string::npos)
+ Res += 20;
+ if (Path.find("/non-free/") != string::npos)
+ Res += 20;
+ if (Path.find("/non-US/") != string::npos)
+ Res += 20;
+ if (Path.find("/source/") != string::npos)
+ Res += 10;
+ if (Path.find("/debian/") != string::npos)
+ Res -= 10;
+
+ // check for symlinks in the patch leading to the actual file
+ // a symlink gets a big penalty
+ struct stat Buf;
+ string statPath = flNotFile(Path);
+ string cdromPath = _config->FindDir("Acquire::cdrom::mount");
+ while(statPath != cdromPath && statPath != "./") {
+ statPath.resize(statPath.size()-1); // remove the trailing '/'
+ if (lstat(statPath.c_str(),&Buf) == 0) {
+ if(S_ISLNK(Buf.st_mode)) {
+ Res -= 60;
+ break;
+ }
+ }
+ statPath = flNotFile(statPath); // descent
+ }
+
+ return Res;
+}
+ /*}}}*/
+// DropBinaryArch - Dump dirs with a string like /binary-<foo>/ /*{{{*/
+// ---------------------------------------------------------------------
+/* Here we drop everything that is not this machines arch */
+bool pkgCdrom::DropBinaryArch(vector<string> &List)
+{
+
+ for (unsigned int I = 0; I < List.size(); I++)
+ {
+ const char *Str = List[I].c_str();
+ const char *Start, *End;
+ if ((Start = strstr(Str,"/binary-")) == 0)
+ continue;
+
+ // Between Start and End is the architecture
+ Start += 8;
+ if ((End = strstr(Start,"/")) != 0 && Start != End &&
+ APT::Configuration::checkArchitecture(string(Start, End)) == true)
+ continue; // okay, architecture is accepted
+
+ // not accepted -> Erase it
+ List.erase(List.begin() + I);
+ --I; // the next entry is at the same index after the erase
+ }
+
+ return true;
+}
+ /*}}}*/
+// DropTranslation - Dump unwanted Translation-<lang> files /*{{{*/
+// ---------------------------------------------------------------------
+/* Here we drop everything that is not configured in Acquire::Languages */
+bool pkgCdrom::DropTranslation(vector<string> &List)
+{
+ for (unsigned int I = 0; I < List.size(); I++)
+ {
+ const char *Start;
+ if ((Start = strstr(List[I].c_str(), "/Translation-")) == NULL)
+ continue;
+ Start += strlen("/Translation-");
+
+ if (APT::Configuration::checkLanguage(Start, true) == true)
+ continue;
+
+ // not accepted -> Erase it
+ List.erase(List.begin() + I);
+ --I; // the next entry is at the same index after the erase
+ }
+
+ return true;
+}
+ /*}}}*/
+// DropRepeats - Drop repeated files resulting from symlinks /*{{{*/
+// ---------------------------------------------------------------------
+/* Here we go and stat every file that we found and strip dup inodes. */
+bool pkgCdrom::DropRepeats(vector<string> &List,const char *Name)
+{
+ bool couldFindAllFiles = true;
+ // Get a list of all the inodes
+ ino_t *Inodes = new ino_t[List.size()];
+ for (unsigned int I = 0; I != List.size(); ++I)
+ {
+ struct stat Buf;
+ bool found = false;
+
+ std::vector<APT::Configuration::Compressor> const compressor = APT::Configuration::getCompressors();
+ for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressor.begin();
+ c != compressor.end(); ++c)
+ {
+ std::string filename = std::string(List[I]).append(Name).append(c->Extension);
+ if (stat(filename.c_str(), &Buf) != 0)
+ continue;
+ Inodes[I] = Buf.st_ino;
+ found = true;
+ break;
+ }
+
+ if (found == false)
+ {
+ _error->Errno("stat","Failed to stat %s%s",List[I].c_str(), Name);
+ couldFindAllFiles = false;
+ Inodes[I] = 0;
+ }
+ }
+
+ // Look for dups
+ for (unsigned int I = 0; I != List.size(); I++)
+ {
+ if (Inodes[I] == 0)
+ continue;
+ for (unsigned int J = I+1; J < List.size(); J++)
+ {
+ // No match
+ if (Inodes[J] == 0 || Inodes[J] != Inodes[I])
+ continue;
+
+ // We score the two paths.. and erase one
+ int ScoreA = Score(List[I]);
+ int ScoreB = Score(List[J]);
+ if (ScoreA < ScoreB)
+ {
+ List[I] = string();
+ break;
+ }
+
+ List[J] = string();
+ }
+ }
+ delete[] Inodes;
+
+ // Wipe erased entries
+ for (unsigned int I = 0; I < List.size();)
+ {
+ if (List[I].empty() == false)
+ I++;
+ else
+ List.erase(List.begin()+I);
+ }
+
+ return couldFindAllFiles;
+}
+ /*}}}*/
+// ReduceSourceList - Takes the path list and reduces it /*{{{*/
+// ---------------------------------------------------------------------
+/* This takes the list of source list expressed entries and collects
+ similar ones to form a single entry for each dist */
+void pkgCdrom::ReduceSourcelist(string /*CD*/,vector<string> &List)
+{
+ sort(List.begin(),List.end());
+
+ // Collect similar entries
+ for (vector<string>::iterator I = List.begin(); I != List.end(); ++I)
+ {
+ // Find a space..
+ string::size_type Space = (*I).find(' ');
+ if (Space == string::npos)
+ continue;
+ string::size_type SSpace = (*I).find(' ',Space + 1);
+ if (SSpace == string::npos)
+ continue;
+
+ string Word1 = string(*I,Space,SSpace-Space);
+ string Prefix = string(*I,0,Space);
+ string Component = string(*I,SSpace);
+ for (vector<string>::iterator J = List.begin(); J != I; ++J)
+ {
+ // Find a space..
+ string::size_type Space2 = (*J).find(' ');
+ if (Space2 == string::npos)
+ continue;
+ string::size_type SSpace2 = (*J).find(' ',Space2 + 1);
+ if (SSpace2 == string::npos)
+ continue;
+
+ if (string(*J,0,Space2) != Prefix)
+ continue;
+ if (string(*J,Space2,SSpace2-Space2) != Word1)
+ continue;
+
+ string Component2 = string(*J, SSpace2) + " ";
+ if (Component2.find(Component + " ") == std::string::npos)
+ *J += Component;
+ I->clear();
+ }
+ }
+
+ // Wipe erased entries
+ for (unsigned int I = 0; I < List.size();)
+ {
+ if (List[I].empty() == false)
+ I++;
+ else
+ List.erase(List.begin()+I);
+ }
+}
+ /*}}}*/
+// WriteDatabase - Write the CDROM Database file /*{{{*/
+// ---------------------------------------------------------------------
+/* We rewrite the configuration class associated with the cdrom database. */
+bool pkgCdrom::WriteDatabase(Configuration &Cnf)
+{
+ string DFile = _config->FindFile("Dir::State::cdroms");
+ string NewFile = DFile + ".new";
+
+ RemoveFile("WriteDatabase", NewFile);
+ ofstream Out(NewFile.c_str());
+ if (!Out)
+ return _error->Errno("ofstream::ofstream",
+ "Failed to open %s.new",DFile.c_str());
+
+ /* Write out all of the configuration directives by walking the
+ configuration tree */
+ Cnf.Dump(Out, NULL, "%f \"%v\";\n", false);
+
+ Out.close();
+
+ if (FileExists(DFile) == true)
+ rename(DFile.c_str(), (DFile + '~').c_str());
+ if (rename(NewFile.c_str(),DFile.c_str()) != 0)
+ return _error->Errno("rename","Failed to rename %s.new to %s",
+ DFile.c_str(),DFile.c_str());
+
+ return true;
+}
+ /*}}}*/
+// WriteSourceList - Write an updated sourcelist /*{{{*/
+// ---------------------------------------------------------------------
+/* This reads the old source list and copies it into the new one. It
+ appends the new CDROM entries just after the first block of comments.
+ This places them first in the file. It also removes any old entries
+ that were the same. */
+bool pkgCdrom::WriteSourceList(string Name,vector<string> &List,bool Source)
+{
+ if (List.empty() == true)
+ return true;
+
+ string File = _config->FindFile("Dir::Etc::sourcelist");
+
+ // Open the stream for reading
+ ifstream F((FileExists(File)?File.c_str():"/dev/null"),
+ ios::in );
+ if (F.fail() == true)
+ return _error->Errno("ifstream::ifstream","Opening %s",File.c_str());
+
+ string NewFile = File + ".new";
+ RemoveFile("WriteDatabase", NewFile);
+ ofstream Out(NewFile.c_str());
+ if (!Out)
+ return _error->Errno("ofstream::ofstream",
+ "Failed to open %s.new",File.c_str());
+
+ // Create a short uri without the path
+ string ShortURI = "cdrom:[" + Name + "]/";
+ string ShortURI2 = "cdrom:" + Name + "/"; // For Compatibility
+
+ string Type;
+ if (Source == true)
+ Type = "deb-src";
+ else
+ Type = "deb";
+
+ char Buffer[300];
+ int CurLine = 0;
+ bool First = true;
+ while (F.eof() == false)
+ {
+ F.getline(Buffer,sizeof(Buffer));
+ CurLine++;
+ if (F.fail() && !F.eof())
+ return _error->Error(_("Line %u too long in source list %s."),
+ CurLine,File.c_str());
+ _strtabexpand(Buffer,sizeof(Buffer));
+ _strstrip(Buffer);
+
+ // Comment or blank
+ if (Buffer[0] == '#' || Buffer[0] == 0)
+ {
+ Out << Buffer << endl;
+ continue;
+ }
+
+ if (First == true)
+ {
+ for (vector<string>::iterator I = List.begin(); I != List.end(); ++I)
+ {
+ string::size_type Space = (*I).find(' ');
+ if (Space == string::npos)
+ return _error->Error("Internal error");
+ Out << Type << " cdrom:[" << Name << "]/" << string(*I,0,Space) <<
+ " " << string(*I,Space+1) << endl;
+ }
+ }
+ First = false;
+
+ // Grok it
+ string cType;
+ string URI;
+ const char *C = Buffer;
+ if (ParseQuoteWord(C,cType) == false ||
+ ParseQuoteWord(C,URI) == false)
+ {
+ Out << Buffer << endl;
+ continue;
+ }
+
+ // Emit lines like this one
+ if (cType != Type || (string(URI,0,ShortURI.length()) != ShortURI &&
+ string(URI,0,ShortURI.length()) != ShortURI2))
+ {
+ Out << Buffer << endl;
+ continue;
+ }
+ }
+
+ // Just in case the file was empty
+ if (First == true)
+ {
+ for (vector<string>::iterator I = List.begin(); I != List.end(); ++I)
+ {
+ string::size_type Space = (*I).find(' ');
+ if (Space == string::npos)
+ return _error->Error("Internal error");
+
+ Out << "deb cdrom:[" << Name << "]/" << string(*I,0,Space) <<
+ " " << string(*I,Space+1) << endl;
+ }
+ }
+
+ Out.close();
+
+ rename(File.c_str(), (File + '~').c_str());
+ if (rename(NewFile.c_str(),File.c_str()) != 0)
+ return _error->Errno("rename","Failed to rename %s.new to %s",
+ File.c_str(),File.c_str());
+
+ return true;
+}
+ /*}}}*/
+bool pkgCdrom::UnmountCDROM(std::string const &CDROM, pkgCdromStatus * const log)/*{{{*/
+{
+ if (_config->FindB("APT::CDROM::NoMount",false) == true)
+ return true;
+ if (log != NULL)
+ log->Update(_("Unmounting CD-ROM...\n"), STEP_LAST);
+ return UnmountCdrom(CDROM);
+}
+ /*}}}*/
+bool pkgCdrom::MountAndIdentCDROM(Configuration &Database, std::string &CDROM, std::string &ident, pkgCdromStatus * const log, bool const interactive)/*{{{*/
+{
+ // Startup
+ CDROM = _config->FindDir("Acquire::cdrom::mount");
+ if (CDROM[0] == '.')
+ CDROM= SafeGetCWD() + '/' + CDROM;
+
+ if (log != NULL)
+ {
+ string msg;
+ log->SetTotal(STEP_LAST);
+ strprintf(msg, _("Using CD-ROM mount point %s\n"), CDROM.c_str());
+ log->Update(msg, STEP_PREPARE);
+ }
+
+ // Unmount the CD and get the user to put in the one they want
+ if (_config->FindB("APT::CDROM::NoMount", false) == false)
+ {
+ if (interactive == true)
+ {
+ UnmountCDROM(CDROM, log);
+
+ if(log != NULL)
+ {
+ log->Update(_("Waiting for disc...\n"), STEP_WAIT);
+ if(!log->ChangeCdrom()) {
+ // user aborted
+ return false;
+ }
+ }
+ }
+
+ // Mount the new CDROM
+ if(log != NULL)
+ log->Update(_("Mounting CD-ROM...\n"), STEP_MOUNT);
+
+ if (MountCdrom(CDROM) == false)
+ return _error->Error("Failed to mount the cdrom.");
+ }
+
+ if (IsMounted(CDROM) == false)
+ return _error->Error("Failed to mount the cdrom.");
+
+ // Hash the CD to get an ID
+ if (log != NULL)
+ log->Update(_("Identifying... "), STEP_IDENT);
+
+ if (IdentCdrom(CDROM,ident) == false)
+ {
+ ident = "";
+ if (log != NULL)
+ log->Update("\n");
+ UnmountCDROM(CDROM, NULL);
+ return false;
+ }
+
+ if (log != NULL)
+ {
+ string msg;
+ strprintf(msg, "[%s]\n", ident.c_str());
+ log->Update(msg);
+ }
+
+ // Read the database
+ string DFile = _config->FindFile("Dir::State::cdroms");
+ if (FileExists(DFile) == true)
+ {
+ if (ReadConfigFile(Database,DFile) == false)
+ {
+ UnmountCDROM(CDROM, NULL);
+ return _error->Error("Unable to read the cdrom database %s",
+ DFile.c_str());
+ }
+ }
+ return true;
+}
+ /*}}}*/
+bool pkgCdrom::Ident(string &ident, pkgCdromStatus *log) /*{{{*/
+{
+ Configuration Database;
+ std::string CDROM;
+ if (MountAndIdentCDROM(Database, CDROM, ident, log, false) == false)
+ return false;
+
+ if (log != NULL)
+ {
+ string msg;
+ strprintf(msg, _("Stored label: %s\n"),
+ Database.Find("CD::"+ident).c_str());
+ log->Update(msg);
+ }
+
+ // Unmount and finish
+ UnmountCDROM(CDROM, log);
+ return true;
+}
+ /*}}}*/
+bool pkgCdrom::Add(pkgCdromStatus *log) /*{{{*/
+{
+ Configuration Database;
+ std::string ID, CDROM;
+ if (MountAndIdentCDROM(Database, CDROM, ID, log, true) == false)
+ return false;
+
+ if(log != NULL)
+ log->Update(_("Scanning disc for index files...\n"),STEP_SCAN);
+
+ // Get the CD structure
+ vector<string> List;
+ vector<string> SourceList;
+ vector<string> SigList;
+ vector<string> TransList;
+ string StartDir = SafeGetCWD();
+ string InfoDir;
+ if (FindPackages(CDROM,List,SourceList, SigList,TransList,InfoDir,log) == false)
+ {
+ if (log != NULL)
+ log->Update("\n");
+ UnmountCDROM(CDROM, NULL);
+ return false;
+ }
+
+ if (chdir(StartDir.c_str()) != 0)
+ {
+ UnmountCDROM(CDROM, NULL);
+ return _error->Errno("chdir","Unable to change to %s", StartDir.c_str());
+ }
+
+ if (_config->FindB("Debug::aptcdrom",false) == true)
+ {
+ cout << "I found (binary):" << endl;
+ for (vector<string>::iterator I = List.begin(); I != List.end(); ++I)
+ cout << *I << endl;
+ cout << "I found (source):" << endl;
+ for (vector<string>::iterator I = SourceList.begin(); I != SourceList.end(); ++I)
+ cout << *I << endl;
+ cout << "I found (Signatures):" << endl;
+ for (vector<string>::iterator I = SigList.begin(); I != SigList.end(); ++I)
+ cout << *I << endl;
+ }
+
+ //log->Update(_("Cleaning package lists..."), STEP_CLEAN);
+
+ // Fix up the list
+ DropBinaryArch(List);
+ DropRepeats(List,"Packages");
+ DropRepeats(SourceList,"Sources");
+ // FIXME: We ignore stat() errors here as we usually have only one of those in use
+ // This has little potencial to drop 'valid' stat() errors as we know that one of these
+ // files need to exist, but it would be better if we would check it here
+ _error->PushToStack();
+ DropRepeats(SigList,"Release.gpg");
+ DropRepeats(SigList,"InRelease");
+ _error->RevertToStack();
+ DropRepeats(TransList,"");
+ if (_config->FindB("APT::CDROM::DropTranslation", true) == true)
+ DropTranslation(TransList);
+ if(log != NULL) {
+ string msg;
+ strprintf(msg, _("Found %zu package indexes, %zu source indexes, "
+ "%zu translation indexes and %zu signatures\n"),
+ List.size(), SourceList.size(), TransList.size(),
+ SigList.size());
+ log->Update(msg, STEP_SCAN);
+ }
+
+ if (List.empty() == true && SourceList.empty() == true)
+ {
+ UnmountCDROM(CDROM, NULL);
+ return _error->Error(_("Unable to locate any package files, perhaps this is not a Debian Disc or the wrong architecture?"));
+ }
+
+ // Check if the CD is in the database
+ string Name;
+ if (Database.Exists("CD::" + ID) == false ||
+ _config->FindB("APT::CDROM::Rename",false) == true)
+ {
+ // Try to use the CDs label if at all possible
+ if (InfoDir.empty() == false &&
+ FileExists(InfoDir + "/info") == true)
+ {
+ ifstream F((InfoDir + "/info").c_str());
+ if (F.good() == true)
+ getline(F,Name);
+
+ if (Name.empty() == false)
+ {
+ // Escape special characters
+ string::iterator J = Name.begin();
+ for (; J != Name.end(); ++J)
+ if (*J == '"' || *J == ']' || *J == '[')
+ *J = '_';
+
+ if(log != NULL)
+ {
+ string msg;
+ strprintf(msg, _("Found label '%s'\n"), Name.c_str());
+ log->Update(msg);
+ }
+ Database.Set("CD::" + ID + "::Label",Name);
+ }
+ }
+
+ if (_config->FindB("APT::CDROM::Rename",false) == true ||
+ Name.empty() == true)
+ {
+ if(log == NULL)
+ {
+ UnmountCDROM(CDROM, NULL);
+ return _error->Error("No disc name found and no way to ask for it");
+ }
+
+ while(true) {
+ if(!log->AskCdromName(Name)) {
+ // user canceld
+ UnmountCDROM(CDROM, NULL);
+ return false;
+ }
+ cout << "Name: '" << Name << "'" << endl;
+
+ if (Name.empty() == false &&
+ Name.find('"') == string::npos &&
+ Name.find('[') == string::npos &&
+ Name.find(']') == string::npos)
+ break;
+ log->Update(_("That is not a valid name, try again.\n"));
+ }
+ }
+ }
+ else
+ Name = Database.Find("CD::" + ID);
+
+ // Escape special characters
+ string::iterator J = Name.begin();
+ for (; J != Name.end(); ++J)
+ if (*J == '"' || *J == ']' || *J == '[')
+ *J = '_';
+
+ Database.Set("CD::" + ID,Name);
+ if(log != NULL)
+ {
+ string msg;
+ strprintf(msg, _("This disc is called: \n'%s'\n"), Name.c_str());
+ log->Update(msg);
+ log->Update(_("Copying package lists..."), STEP_COPY);
+ }
+
+ // check for existence and possibly create state directory for copying
+ string const listDir = _config->FindDir("Dir::State::lists");
+ string const partialListDir = listDir + "partial/";
+ mode_t const mode = umask(S_IWGRP | S_IWOTH);
+ bool const creation_fail = (CreateAPTDirectoryIfNeeded(_config->FindDir("Dir::State"), partialListDir) == false &&
+ CreateAPTDirectoryIfNeeded(listDir, partialListDir) == false);
+ umask(mode);
+ if (creation_fail == true)
+ {
+ UnmountCDROM(CDROM, NULL);
+ return _error->Errno("cdrom", _("List directory %spartial is missing."), listDir.c_str());
+ }
+
+ // take care of the signatures and copy them if they are ok
+ // (we do this before PackageCopy as it modifies "List" and "SourceList")
+ SigVerify SignVerify;
+ SignVerify.CopyAndVerify(CDROM, Name, SigList, List, SourceList);
+
+ // Copy the package files to the state directory
+ PackageCopy Copy;
+ SourceCopy SrcCopy;
+ TranslationsCopy TransCopy;
+ if (Copy.CopyPackages(CDROM,Name,List, log) == false ||
+ SrcCopy.CopyPackages(CDROM,Name,SourceList, log) == false ||
+ TransCopy.CopyTranslations(CDROM,Name,TransList, log) == false)
+ {
+ UnmountCDROM(CDROM, NULL);
+ return false;
+ }
+
+ // reduce the List so that it takes less space in sources.list
+ ReduceSourcelist(CDROM,List);
+ ReduceSourcelist(CDROM,SourceList);
+
+ // Write the database and sourcelist
+ if (_config->FindB("APT::cdrom::NoAct",false) == false)
+ {
+ if (WriteDatabase(Database) == false)
+ {
+ UnmountCDROM(CDROM, NULL);
+ return false;
+ }
+
+ if(log != NULL)
+ log->Update(_("Writing new source list\n"), STEP_WRITE);
+ if (WriteSourceList(Name,List,false) == false ||
+ WriteSourceList(Name,SourceList,true) == false)
+ {
+ UnmountCDROM(CDROM, NULL);
+ return false;
+ }
+ }
+
+ // Print the sourcelist entries
+ if(log != NULL)
+ log->Update(_("Source list entries for this disc are:\n"));
+
+ for (vector<string>::iterator I = List.begin(); I != List.end(); ++I)
+ {
+ string::size_type Space = (*I).find(' ');
+ if (Space == string::npos)
+ {
+ UnmountCDROM(CDROM, NULL);
+ return _error->Error("Internal error");
+ }
+
+ if(log != NULL)
+ {
+ stringstream msg;
+ msg << "deb cdrom:[" << Name << "]/" << string(*I,0,Space) <<
+ " " << string(*I,Space+1) << endl;
+ log->Update(msg.str());
+ }
+ }
+
+ for (vector<string>::iterator I = SourceList.begin(); I != SourceList.end(); ++I)
+ {
+ string::size_type Space = (*I).find(' ');
+ if (Space == string::npos)
+ {
+ UnmountCDROM(CDROM, NULL);
+ return _error->Error("Internal error");
+ }
+
+ if(log != NULL) {
+ stringstream msg;
+ msg << "deb-src cdrom:[" << Name << "]/" << string(*I,0,Space) <<
+ " " << string(*I,Space+1) << endl;
+ log->Update(msg.str());
+ }
+ }
+
+ // Unmount and finish
+ UnmountCDROM(CDROM, log);
+ return true;
+}
+ /*}}}*/
+pkgUdevCdromDevices::pkgUdevCdromDevices() /*{{{*/
+: d(NULL), libudev_handle(NULL), udev_new(NULL), udev_enumerate_add_match_property(NULL),
+ udev_enumerate_scan_devices(NULL), udev_enumerate_get_list_entry(NULL),
+ udev_device_new_from_syspath(NULL), udev_enumerate_get_udev(NULL),
+ udev_list_entry_get_name(NULL), udev_device_get_devnode(NULL),
+ udev_enumerate_new(NULL), udev_list_entry_get_next(NULL),
+ udev_device_get_property_value(NULL), udev_enumerate_add_match_sysattr(NULL)
+{
+}
+ /*}}}*/
+
+bool pkgUdevCdromDevices::Dlopen() /*{{{*/
+{
+ // alread open
+ if(libudev_handle != NULL)
+ return true;
+
+ // see if we can get libudev
+ void *h = ::dlopen("libudev.so.0", RTLD_LAZY);
+ if(h == NULL)
+ return false;
+
+ // get the pointers to the udev structs
+ libudev_handle = h;
+ udev_new = (udev* (*)(void)) dlsym(h, "udev_new");
+ udev_enumerate_add_match_property = (int (*)(udev_enumerate*, const char*, const char*))dlsym(h, "udev_enumerate_add_match_property");
+ udev_enumerate_add_match_sysattr = (int (*)(udev_enumerate*, const char*, const char*))dlsym(h, "udev_enumerate_add_match_sysattr");
+ udev_enumerate_scan_devices = (int (*)(udev_enumerate*))dlsym(h, "udev_enumerate_scan_devices");
+ udev_enumerate_get_list_entry = (udev_list_entry* (*)(udev_enumerate*))dlsym(h, "udev_enumerate_get_list_entry");
+ udev_device_new_from_syspath = (udev_device* (*)(udev*, const char*))dlsym(h, "udev_device_new_from_syspath");
+ udev_enumerate_get_udev = (udev* (*)(udev_enumerate*))dlsym(h, "udev_enumerate_get_udev");
+ udev_list_entry_get_name = (const char* (*)(udev_list_entry*))dlsym(h, "udev_list_entry_get_name");
+ udev_device_get_devnode = (const char* (*)(udev_device*))dlsym(h, "udev_device_get_devnode");
+ udev_enumerate_new = (udev_enumerate* (*)(udev*))dlsym(h, "udev_enumerate_new");
+ udev_list_entry_get_next = (udev_list_entry* (*)(udev_list_entry*))dlsym(h, "udev_list_entry_get_next");
+ udev_device_get_property_value = (const char* (*)(udev_device *, const char *))dlsym(h, "udev_device_get_property_value");
+
+ return true;
+}
+ /*}}}*/
+// convenience interface, this will just call ScanForRemovable /*{{{*/
+vector<CdromDevice> pkgUdevCdromDevices::Scan()
+{
+ bool CdromOnly = _config->FindB("APT::cdrom::CdromOnly", true);
+ return ScanForRemovable(CdromOnly);
+}
+ /*}}}*/
+vector<CdromDevice> pkgUdevCdromDevices::ScanForRemovable(bool CdromOnly)/*{{{*/
+{
+ vector<CdromDevice> cdrom_devices;
+ struct udev_enumerate *enumerate;
+ struct udev_list_entry *l, *devices;
+ struct udev *udev_ctx;
+
+ if(libudev_handle == NULL)
+ return cdrom_devices;
+
+ udev_ctx = udev_new();
+ enumerate = udev_enumerate_new (udev_ctx);
+ if (CdromOnly)
+ udev_enumerate_add_match_property(enumerate, "ID_CDROM", "1");
+ else {
+ udev_enumerate_add_match_sysattr(enumerate, "removable", "1");
+ }
+
+ udev_enumerate_scan_devices (enumerate);
+ devices = udev_enumerate_get_list_entry (enumerate);
+ for (l = devices; l != NULL; l = udev_list_entry_get_next (l))
+ {
+ CdromDevice cdrom;
+ struct udev_device *udevice;
+ udevice = udev_device_new_from_syspath (udev_enumerate_get_udev (enumerate), udev_list_entry_get_name (l));
+ if (udevice == NULL)
+ continue;
+ const char* devnode = udev_device_get_devnode(udevice);
+
+ // try fstab_dir first
+ string mountpath;
+ const char* mp = udev_device_get_property_value(udevice, "FSTAB_DIR");
+ if (mp)
+ mountpath = string(mp);
+ else
+ mountpath = FindMountPointForDevice(devnode);
+
+ // fill in the struct
+ cdrom.DeviceName = string(devnode);
+ if (mountpath != "") {
+ cdrom.MountPath = mountpath;
+ string s = mountpath;
+ cdrom.Mounted = IsMounted(s);
+ } else {
+ cdrom.Mounted = false;
+ cdrom.MountPath = "";
+ }
+ cdrom_devices.push_back(cdrom);
+ }
+ return cdrom_devices;
+}
+ /*}}}*/
+
+pkgUdevCdromDevices::~pkgUdevCdromDevices() /*{{{*/
+{
+ if (libudev_handle != NULL)
+ dlclose(libudev_handle);
+}
+ /*}}}*/
+
+pkgCdromStatus::pkgCdromStatus() : d(NULL), totalSteps(0) {}
+pkgCdromStatus::~pkgCdromStatus() {}
+
+pkgCdrom::pkgCdrom() : d(NULL) {}
+pkgCdrom::~pkgCdrom() {}
diff --git a/apt-pkg/cdrom.h b/apt-pkg/cdrom.h
new file mode 100644
index 000000000..ab1e046bf
--- /dev/null
+++ b/apt-pkg/cdrom.h
@@ -0,0 +1,134 @@
+#ifndef PKGLIB_CDROM_H
+#define PKGLIB_CDROM_H
+
+#include <apt-pkg/macros.h>
+
+#include<string>
+#include<vector>
+
+#include <stddef.h>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/init.h>
+using namespace std;
+#endif
+
+class Configuration;
+class OpProgress;
+
+class pkgCdromStatus /*{{{*/
+{
+ void * const d;
+ protected:
+ int totalSteps;
+
+ public:
+ pkgCdromStatus();
+ virtual ~pkgCdromStatus();
+
+ // total steps
+ virtual void SetTotal(int total) { totalSteps = total; };
+ // update steps, will be called regularly as a "pulse"
+ virtual void Update(std::string text="", int current=0) = 0;
+
+ // ask for cdrom insert
+ virtual bool ChangeCdrom() = 0;
+ // ask for cdrom name
+ virtual bool AskCdromName(std::string &Name) = 0;
+ // Progress indicator for the Index rewriter
+ virtual OpProgress* GetOpProgress() {return NULL; };
+};
+ /*}}}*/
+class pkgCdrom /*{{{*/
+{
+ protected:
+ enum {
+ STEP_PREPARE = 1,
+ STEP_UNMOUNT,
+ STEP_WAIT,
+ STEP_MOUNT,
+ STEP_IDENT,
+ STEP_SCAN,
+ STEP_COPY,
+ STEP_WRITE,
+ STEP_UNMOUNT3,
+ STEP_LAST
+ };
+
+
+ bool FindPackages(std::string CD,
+ std::vector<std::string> &List,
+ std::vector<std::string> &SList,
+ std::vector<std::string> &SigList,
+ std::vector<std::string> &TransList,
+ std::string &InfoDir, pkgCdromStatus *log,
+ unsigned int Depth = 0);
+ bool DropBinaryArch(std::vector<std::string> &List);
+ bool DropRepeats(std::vector<std::string> &List,const char *Name);
+ bool DropTranslation(std::vector<std::string> &List);
+ void ReduceSourcelist(std::string CD,std::vector<std::string> &List);
+ bool WriteDatabase(Configuration &Cnf);
+ bool WriteSourceList(std::string Name,std::vector<std::string> &List,bool Source);
+ int Score(std::string Path);
+
+ public:
+ bool Ident(std::string &ident, pkgCdromStatus *log);
+ bool Add(pkgCdromStatus *log);
+
+ pkgCdrom();
+ virtual ~pkgCdrom();
+
+ private:
+ void * const d;
+
+ APT_HIDDEN bool MountAndIdentCDROM(Configuration &Database, std::string &CDROM,
+ std::string &ident, pkgCdromStatus * const log, bool const interactive);
+ APT_HIDDEN bool UnmountCDROM(std::string const &CDROM, pkgCdromStatus * const log);
+};
+ /*}}}*/
+
+
+// class that uses libudev to find cdrom/removable devices dynamically
+struct CdromDevice /*{{{*/
+{
+ std::string DeviceName;
+ bool Mounted;
+ std::string MountPath;
+};
+ /*}}}*/
+class pkgUdevCdromDevices /*{{{*/
+{
+ void * const d;
+ protected:
+ // libudev dlopen structure
+ void *libudev_handle;
+ struct udev* (*udev_new)(void);
+ int (*udev_enumerate_add_match_property)(struct udev_enumerate *udev_enumerate, const char *property, const char *value);
+ int (*udev_enumerate_scan_devices)(struct udev_enumerate *udev_enumerate);
+ struct udev_list_entry* (*udev_enumerate_get_list_entry)(struct udev_enumerate *udev_enumerate);
+ struct udev_device* (*udev_device_new_from_syspath)(struct udev *udev, const char *syspath);
+ struct udev* (*udev_enumerate_get_udev)(struct udev_enumerate *udev_enumerate);
+ const char* (*udev_list_entry_get_name)(struct udev_list_entry *list_entry);
+ const char* (*udev_device_get_devnode)(struct udev_device *udev_device);
+ struct udev_enumerate *(*udev_enumerate_new) (struct udev *udev);
+ struct udev_list_entry *(*udev_list_entry_get_next)(struct udev_list_entry *list_entry);
+ const char* (*udev_device_get_property_value)(struct udev_device *udev_device, const char *key);
+ int (*udev_enumerate_add_match_sysattr)(struct udev_enumerate *udev_enumerate, const char *property, const char *value);
+ // end libudev dlopen
+
+ public:
+ pkgUdevCdromDevices();
+ virtual ~pkgUdevCdromDevices();
+
+ // try to open
+ bool Dlopen();
+
+ // convenience interface, this will just call ScanForRemovable
+ // with "APT::cdrom::CdromOnly"
+ std::vector<CdromDevice> Scan();
+
+ std::vector<CdromDevice> ScanForRemovable(bool CdromOnly);
+};
+ /*}}}*/
+
+#endif
diff --git a/apt-pkg/clean.cc b/apt-pkg/clean.cc
new file mode 100644
index 000000000..fe57c26a2
--- /dev/null
+++ b/apt-pkg/clean.cc
@@ -0,0 +1,142 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: clean.cc,v 1.4 2001/02/20 07:03:17 jgg Exp $
+/* ######################################################################
+
+ Clean - Clean out downloaded directories
+
+ ##################################################################### */
+ /*}}}*/
+// Includes /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/clean.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#include <string>
+#include <string.h>
+#include <dirent.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <apti18n.h>
+ /*}}}*/
+// ArchiveCleaner::Go - Perform smart cleanup of the archive /*{{{*/
+// ---------------------------------------------------------------------
+/* Scan the directory for files to erase, we check the version information
+ against our database to see if it is interesting */
+bool pkgArchiveCleaner::Go(std::string Dir,pkgCache &Cache)
+{
+ bool CleanInstalled = _config->FindB("APT::Clean-Installed",true);
+
+ if(Dir == "/")
+ return _error->Error(_("Clean of %s is not supported"), Dir.c_str());
+
+ // non-existing directories are always clean
+ // we do not check for a directory explicitly to support symlinks
+ if (FileExists(Dir) == false)
+ return true;
+
+ DIR *D = opendir(Dir.c_str());
+ if (D == 0)
+ return _error->Errno("opendir",_("Unable to read %s"),Dir.c_str());
+
+ std::string StartDir = SafeGetCWD();
+ if (chdir(Dir.c_str()) != 0)
+ {
+ closedir(D);
+ return _error->Errno("chdir",_("Unable to change to %s"),Dir.c_str());
+ }
+
+ for (struct dirent *Dir = readdir(D); Dir != 0; Dir = readdir(D))
+ {
+ // Skip some files..
+ if (strcmp(Dir->d_name,"lock") == 0 ||
+ strcmp(Dir->d_name,"partial") == 0 ||
+ strcmp(Dir->d_name,"lost+found") == 0 ||
+ strcmp(Dir->d_name,".") == 0 ||
+ strcmp(Dir->d_name,"..") == 0)
+ continue;
+
+ struct stat St;
+ if (stat(Dir->d_name,&St) != 0)
+ {
+ _error->Errno("stat",_("Unable to stat %s."),Dir->d_name);
+ closedir(D);
+ if (chdir(StartDir.c_str()) != 0)
+ return _error->Errno("chdir", _("Unable to change to %s"), StartDir.c_str());
+ return false;
+ }
+
+ // Grab the package name
+ const char *I = Dir->d_name;
+ for (; *I != 0 && *I != '_';I++);
+ if (*I != '_')
+ continue;
+ std::string Pkg = DeQuoteString(std::string(Dir->d_name,I-Dir->d_name));
+
+ // Grab the version
+ const char *Start = I + 1;
+ for (I = Start; *I != 0 && *I != '_';I++);
+ if (*I != '_')
+ continue;
+ std::string Ver = DeQuoteString(std::string(Start,I-Start));
+
+ // Grab the arch
+ Start = I + 1;
+ for (I = Start; *I != 0 && *I != '.' ;I++);
+ if (*I != '.')
+ continue;
+ std::string const Arch = DeQuoteString(std::string(Start,I-Start));
+
+ // ignore packages of unconfigured architectures
+ if (APT::Configuration::checkArchitecture(Arch) == false)
+ continue;
+
+ // Lookup the package
+ pkgCache::PkgIterator P = Cache.FindPkg(Pkg, Arch);
+ if (P.end() != true)
+ {
+ pkgCache::VerIterator V = P.VersionList();
+ for (; V.end() == false; ++V)
+ {
+ // See if we can fetch this version at all
+ bool IsFetchable = false;
+ for (pkgCache::VerFileIterator J = V.FileList();
+ J.end() == false; ++J)
+ {
+ if (CleanInstalled == true &&
+ J.File().Flagged(pkgCache::Flag::NotSource))
+ continue;
+ IsFetchable = true;
+ break;
+ }
+
+ // See if this version matches the file
+ if (IsFetchable == true && Ver == V.VerStr())
+ break;
+ }
+
+ // We found a match, keep the file
+ if (V.end() == false)
+ continue;
+ }
+
+ Erase(Dir->d_name,Pkg,Ver,St);
+ };
+
+ closedir(D);
+ if (chdir(StartDir.c_str()) != 0)
+ return _error->Errno("chdir", _("Unable to change to %s"), StartDir.c_str());
+ return true;
+}
+ /*}}}*/
+
+pkgArchiveCleaner::pkgArchiveCleaner() : d(NULL) {}
+APT_CONST pkgArchiveCleaner::~pkgArchiveCleaner() {}
diff --git a/apt-pkg/clean.h b/apt-pkg/clean.h
new file mode 100644
index 000000000..6cedae086
--- /dev/null
+++ b/apt-pkg/clean.h
@@ -0,0 +1,38 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: clean.h,v 1.2 1999/07/20 05:53:33 jgg Exp $
+/* ######################################################################
+
+ Clean - Clean out downloaded directories
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef APTPKG_CLEAN_H
+#define APTPKG_CLEAN_H
+
+#ifndef APT_10_CLEANER_HEADERS
+#include <apt-pkg/pkgcache.h>
+#endif
+
+#include <string>
+
+class pkgCache;
+
+class pkgArchiveCleaner
+{
+ /** \brief dpointer placeholder (for later in case we need it) */
+ void * const d;
+
+ protected:
+
+ virtual void Erase(const char * /*File*/,std::string /*Pkg*/,std::string /*Ver*/,struct stat & /*St*/) {};
+
+ public:
+
+ bool Go(std::string Dir,pkgCache &Cache);
+
+ pkgArchiveCleaner();
+ virtual ~pkgArchiveCleaner();
+};
+
+#endif
diff --git a/apt-pkg/contrib/cdromutl.cc b/apt-pkg/contrib/cdromutl.cc
new file mode 100644
index 000000000..428ef0161
--- /dev/null
+++ b/apt-pkg/contrib/cdromutl.cc
@@ -0,0 +1,299 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: cdromutl.cc,v 1.12 2001/02/20 07:03:17 jgg Exp $
+/* ######################################################################
+
+ CDROM Utilities - Some functions to manipulate CDROM mounts.
+
+ These are here for the cdrom method and apt-cdrom.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/cdromutl.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/md5.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/strutl.h>
+
+#include <stdlib.h>
+#include <string.h>
+#include <iostream>
+#include <string>
+#include <vector>
+#include <sys/statvfs.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <stdio.h>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using std::string;
+
+// IsMounted - Returns true if the mount point is mounted /*{{{*/
+// ---------------------------------------------------------------------
+/* This is a simple algorithm that should always work, we stat the mount point
+ and the '..' file in the mount point and see if they are on the same device.
+ By definition if they are the same then it is not mounted. This should
+ account for symlinked mount points as well. */
+bool IsMounted(string &Path)
+{
+ if (Path.empty() == true)
+ return false;
+
+ // Need that trailing slash for directories
+ if (Path[Path.length() - 1] != '/')
+ Path += '/';
+
+ // if the path has a ".disk" directory we treat it as mounted
+ // this way even extracted copies of disks are recognized
+ if (DirectoryExists(Path + ".disk/") == true)
+ return true;
+
+ /* First we check if the path is actually mounted, we do this by
+ stating the path and the previous directory (careful of links!)
+ and comparing their device fields. */
+ struct stat Buf,Buf2;
+ if (stat(Path.c_str(),&Buf) != 0 ||
+ stat((Path + "../").c_str(),&Buf2) != 0)
+ return _error->Errno("stat",_("Unable to stat the mount point %s"),Path.c_str());
+
+ if (Buf.st_dev == Buf2.st_dev)
+ return false;
+ return true;
+}
+ /*}}}*/
+// UnmountCdrom - Unmount a cdrom /*{{{*/
+// ---------------------------------------------------------------------
+/* Forking umount works much better than the umount syscall which can
+ leave /etc/mtab inconsitant. We drop all messages this produces. */
+bool UnmountCdrom(string Path)
+{
+ // do not generate errors, even if the mountpoint does not exist
+ // the mountpoint might be auto-created by the mount command
+ // and a non-existing mountpoint is surely not mounted
+ _error->PushToStack();
+ bool const mounted = IsMounted(Path);
+ _error->RevertToStack();
+ if (mounted == false)
+ return true;
+
+ for (int i=0;i<3;i++)
+ {
+
+ int Child = ExecFork();
+
+ // The child
+ if (Child == 0)
+ {
+ // Make all the fds /dev/null
+ int const null_fd = open("/dev/null",O_RDWR);
+ for (int I = 0; I != 3; ++I)
+ dup2(null_fd, I);
+
+ if (_config->Exists("Acquire::cdrom::"+Path+"::UMount") == true)
+ {
+ if (system(_config->Find("Acquire::cdrom::"+Path+"::UMount").c_str()) != 0)
+ _exit(100);
+ _exit(0);
+ }
+ else
+ {
+ const char *Args[10];
+ Args[0] = "umount";
+ Args[1] = Path.c_str();
+ Args[2] = 0;
+ execvp(Args[0],(char **)Args);
+ _exit(100);
+ }
+ }
+
+ // if it can not be umounted, give it a bit more time
+ // this can happen when auto-mount magic or fs/cdrom prober attack
+ if (ExecWait(Child,"umount",true) == true)
+ return true;
+ sleep(1);
+ }
+
+ return false;
+}
+ /*}}}*/
+// MountCdrom - Mount a cdrom /*{{{*/
+// ---------------------------------------------------------------------
+/* We fork mount and drop all messages */
+bool MountCdrom(string Path, string DeviceName)
+{
+ // do not generate errors, even if the mountpoint does not exist
+ // the mountpoint might be auto-created by the mount command
+ _error->PushToStack();
+ bool const mounted = IsMounted(Path);
+ _error->RevertToStack();
+ if (mounted == true)
+ return true;
+
+ int Child = ExecFork();
+
+ // The child
+ if (Child == 0)
+ {
+ // Make all the fds /dev/null
+ int const null_fd = open("/dev/null",O_RDWR);
+ for (int I = 0; I != 3; ++I)
+ dup2(null_fd, I);
+
+ if (_config->Exists("Acquire::cdrom::"+Path+"::Mount") == true)
+ {
+ if (system(_config->Find("Acquire::cdrom::"+Path+"::Mount").c_str()) != 0)
+ _exit(100);
+ _exit(0);
+ }
+ else
+ {
+ const char *Args[10];
+ Args[0] = "mount";
+ if (DeviceName == "")
+ {
+ Args[1] = Path.c_str();
+ Args[2] = 0;
+ } else {
+ Args[1] = DeviceName.c_str();
+ Args[2] = Path.c_str();
+ Args[3] = 0;
+ }
+ execvp(Args[0],(char **)Args);
+ _exit(100);
+ }
+ }
+
+ // Wait for mount
+ return ExecWait(Child,"mount",true);
+}
+ /*}}}*/
+// IdentCdrom - Generate a unique string for this CD /*{{{*/
+// ---------------------------------------------------------------------
+/* We convert everything we hash into a string, this prevents byte size/order
+ from effecting the outcome. */
+bool IdentCdrom(string CD,string &Res,unsigned int Version)
+{
+ MD5Summation Hash;
+ bool writable_media = false;
+
+ // if we are on a writable medium (like a usb-stick) that is just
+ // used like a cdrom don't use "." as it will constantly change,
+ // use .disk instead
+ if (access(CD.c_str(), W_OK) == 0 && DirectoryExists(CD+string("/.disk")))
+ {
+ writable_media = true;
+ CD = CD.append("/.disk");
+ if (_config->FindB("Debug::aptcdrom",false) == true)
+ std::clog << "Found writable cdrom, using alternative path: " << CD
+ << std::endl;
+ }
+
+ string StartDir = SafeGetCWD();
+ if (chdir(CD.c_str()) != 0)
+ return _error->Errno("chdir",_("Unable to change to %s"),CD.c_str());
+
+ DIR *D = opendir(".");
+ if (D == 0)
+ return _error->Errno("opendir",_("Unable to read %s"),CD.c_str());
+
+ /* Run over the directory, we assume that the reader order will never
+ change as the media is read-only. In theory if the kernel did
+ some sort of wacked caching this might not be true.. */
+ for (struct dirent *Dir = readdir(D); Dir != 0; Dir = readdir(D))
+ {
+ // Skip some files..
+ if (strcmp(Dir->d_name,".") == 0 ||
+ strcmp(Dir->d_name,"..") == 0)
+ continue;
+
+ std::string S;
+ if (Version <= 1)
+ {
+ strprintf(S, "%lu", (unsigned long)Dir->d_ino);
+ }
+ else
+ {
+ struct stat Buf;
+ if (stat(Dir->d_name,&Buf) != 0)
+ continue;
+ strprintf(S, "%lu", (unsigned long)Buf.st_mtime);
+ }
+
+ Hash.Add(S.c_str());
+ Hash.Add(Dir->d_name);
+ };
+
+ if (chdir(StartDir.c_str()) != 0) {
+ _error->Errno("chdir",_("Unable to change to %s"),StartDir.c_str());
+ closedir(D);
+ return false;
+ }
+ closedir(D);
+
+ // Some stats from the fsys
+ std::string S;
+ if (_config->FindB("Debug::identcdrom",false) == false)
+ {
+ struct statvfs Buf;
+ if (statvfs(CD.c_str(),&Buf) != 0)
+ return _error->Errno("statfs",_("Failed to stat the cdrom"));
+
+ // We use a kilobyte block size to advoid overflow
+ if (writable_media)
+ {
+ strprintf(S, "%lu", (unsigned long)(Buf.f_blocks*(Buf.f_bsize/1024)));
+ } else {
+ strprintf(S, "%lu %lu", (unsigned long)(Buf.f_blocks*(Buf.f_bsize/1024)),
+ (unsigned long)(Buf.f_bfree*(Buf.f_bsize/1024)));
+ }
+ Hash.Add(S.c_str());
+ strprintf(S, "-%u", Version);
+ }
+ else
+ strprintf(S, "-%u.debug", Version);
+
+ Res = Hash.Result().Value() + S;
+ return true;
+}
+ /*}}}*/
+// FindMountPointForDevice - Find mountpoint for the given device /*{{{*/
+string FindMountPointForDevice(const char *devnode)
+{
+ // this is the order that mount uses as well
+ std::vector<std::string> const mounts = _config->FindVector("Dir::state::MountPoints", "/etc/mtab,/proc/mount");
+
+ for (std::vector<std::string>::const_iterator m = mounts.begin(); m != mounts.end(); ++m)
+ if (FileExists(*m) == true)
+ {
+ char * line = NULL;
+ size_t line_len = 0;
+ FILE * f = fopen(m->c_str(), "r");
+ while(getline(&line, &line_len, f) != -1)
+ {
+ char * out[] = { NULL, NULL, NULL };
+ TokSplitString(' ', line, out, 3);
+ if (out[2] != NULL || out[1] == NULL || out[0] == NULL)
+ continue;
+ if (strcmp(out[0], devnode) != 0)
+ continue;
+ fclose(f);
+ // unescape the \0XXX chars in the path
+ string mount_point = out[1];
+ free(line);
+ return DeEscapeString(mount_point);
+ }
+ fclose(f);
+ free(line);
+ }
+
+ return string();
+}
+ /*}}}*/
diff --git a/apt-pkg/contrib/cdromutl.h b/apt-pkg/contrib/cdromutl.h
new file mode 100644
index 000000000..e94045b5c
--- /dev/null
+++ b/apt-pkg/contrib/cdromutl.h
@@ -0,0 +1,26 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: cdromutl.h,v 1.3 2001/05/07 05:06:52 jgg Exp $
+/* ######################################################################
+
+ CDROM Utilities - Some functions to manipulate CDROM mounts.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_CDROMUTL_H
+#define PKGLIB_CDROMUTL_H
+
+#include <string>
+
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+#endif
+
+// mount cdrom, DeviceName (e.g. /dev/sr0) is optional
+bool MountCdrom(std::string Path, std::string DeviceName="");
+bool UnmountCdrom(std::string Path);
+bool IdentCdrom(std::string CD,std::string &Res,unsigned int Version = 2);
+bool IsMounted(std::string &Path);
+std::string FindMountPointForDevice(const char *device);
+
+#endif
diff --git a/apt-pkg/contrib/cmndline.cc b/apt-pkg/contrib/cmndline.cc
new file mode 100644
index 000000000..029ec3060
--- /dev/null
+++ b/apt-pkg/contrib/cmndline.cc
@@ -0,0 +1,446 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: cmndline.cc,v 1.15 2003/02/10 01:40:58 doogie Exp $
+/* ######################################################################
+
+ Command Line Class - Sophisticated command line parser
+
+ This source is placed in the Public Domain, do with it what you will
+ It was originally written by Jason Gunthorpe <jgg@debian.org>.
+
+ ##################################################################### */
+ /*}}}*/
+// Include files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/strutl.h>
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <string>
+
+#include <apti18n.h>
+ /*}}}*/
+using namespace std;
+
+// CommandLine::CommandLine - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+CommandLine::CommandLine(Args *AList,Configuration *Conf) : ArgList(AList),
+ Conf(Conf), FileList(0)
+{
+}
+CommandLine::CommandLine() : ArgList(NULL), Conf(NULL), FileList(0)
+{
+}
+ /*}}}*/
+// CommandLine::~CommandLine - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+CommandLine::~CommandLine()
+{
+ delete [] FileList;
+}
+ /*}}}*/
+// CommandLine::GetCommand - return the first non-option word /*{{{*/
+char const * CommandLine::GetCommand(Dispatch const * const Map,
+ unsigned int const argc, char const * const * const argv)
+{
+ // if there is a -- on the line there must be the word we search for either
+ // before it (as -- marks the end of the options) or right after it (as we can't
+ // decide if the command is actually an option, given that in theory, you could
+ // have parameters named like commands)
+ for (size_t i = 1; i < argc; ++i)
+ {
+ if (strcmp(argv[i], "--") != 0)
+ continue;
+ // check if command is before --
+ for (size_t k = 1; k < i; ++k)
+ for (size_t j = 0; Map[j].Match != NULL; ++j)
+ if (strcmp(argv[k], Map[j].Match) == 0)
+ return Map[j].Match;
+ // see if the next token after -- is the command
+ ++i;
+ if (i < argc)
+ for (size_t j = 0; Map[j].Match != NULL; ++j)
+ if (strcmp(argv[i], Map[j].Match) == 0)
+ return Map[j].Match;
+ // we found a --, but not a command
+ return NULL;
+ }
+ // no --, so search for the first word matching a command
+ // FIXME: How like is it that an option parameter will be also a valid Match ?
+ for (size_t i = 1; i < argc; ++i)
+ {
+ if (*(argv[i]) == '-')
+ continue;
+ for (size_t j = 0; Map[j].Match != NULL; ++j)
+ if (strcmp(argv[i], Map[j].Match) == 0)
+ return Map[j].Match;
+ }
+ return NULL;
+}
+ /*}}}*/
+// CommandLine::Parse - Main action member /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool CommandLine::Parse(int argc,const char **argv)
+{
+ delete [] FileList;
+ FileList = new const char *[argc];
+ const char **Files = FileList;
+ int I;
+ for (I = 1; I != argc; I++)
+ {
+ const char *Opt = argv[I];
+
+ // It is not an option
+ if (*Opt != '-')
+ {
+ *Files++ = Opt;
+ continue;
+ }
+
+ Opt++;
+
+ // Double dash signifies the end of option processing
+ if (*Opt == '-' && Opt[1] == 0)
+ {
+ I++;
+ break;
+ }
+
+ // Single dash is a short option
+ if (*Opt != '-')
+ {
+ // Iterate over each letter
+ while (*Opt != 0)
+ {
+ // Search for the option
+ Args *A;
+ for (A = ArgList; A->end() == false && A->ShortOpt != *Opt; A++);
+ if (A->end() == true)
+ return _error->Error(_("Command line option '%c' [from %s] is not understood in combination with the other options."),*Opt,argv[I]);
+
+ if (HandleOpt(I,argc,argv,Opt,A) == false)
+ return false;
+ if (*Opt != 0)
+ Opt++;
+ }
+ continue;
+ }
+
+ Opt++;
+
+ // Match up to a = against the list
+ Args *A;
+ const char *OptEnd = strchrnul(Opt, '=');
+ for (A = ArgList; A->end() == false &&
+ (A->LongOpt == 0 || stringcasecmp(Opt,OptEnd,A->LongOpt) != 0);
+ ++A);
+
+ // Failed, look for a word after the first - (no-foo)
+ bool PreceedMatch = false;
+ if (A->end() == true)
+ {
+ Opt = (const char*) memchr(Opt, '-', OptEnd - Opt);
+ if (Opt == NULL)
+ return _error->Error(_("Command line option %s is not understood in combination with the other options"),argv[I]);
+ Opt++;
+
+ for (A = ArgList; A->end() == false &&
+ (A->LongOpt == 0 || stringcasecmp(Opt,OptEnd,A->LongOpt) != 0);
+ ++A);
+
+ // Failed again..
+ if (A->end() == true && OptEnd - Opt != 1)
+ return _error->Error(_("Command line option %s is not understood in combination with the other options"),argv[I]);
+
+ // The option could be a single letter option prefixed by a no-..
+ if (A->end() == true)
+ {
+ for (A = ArgList; A->end() == false && A->ShortOpt != *Opt; A++);
+
+ if (A->end() == true)
+ return _error->Error(_("Command line option %s is not understood in combination with the other options"),argv[I]);
+ }
+
+ // The option is not boolean
+ if (A->IsBoolean() == false)
+ return _error->Error(_("Command line option %s is not boolean"),argv[I]);
+ PreceedMatch = true;
+ }
+
+ // Deal with it.
+ OptEnd--;
+ if (HandleOpt(I,argc,argv,OptEnd,A,PreceedMatch) == false)
+ return false;
+ }
+
+ // Copy any remaining file names over
+ for (; I != argc; I++)
+ *Files++ = argv[I];
+ *Files = 0;
+
+ SaveInConfig(argc, argv);
+
+ return true;
+}
+ /*}}}*/
+// CommandLine::HandleOpt - Handle a single option including all flags /*{{{*/
+// ---------------------------------------------------------------------
+/* This is a helper function for parser, it looks at a given argument
+ and looks for specific patterns in the string, it gets tokanized
+ -ruffly- like -*[yes|true|enable]-(o|longopt)[=][ ][argument] */
+bool CommandLine::HandleOpt(int &I,int argc,const char *argv[],
+ const char *&Opt,Args *A,bool PreceedMatch)
+{
+ const char *Argument = 0;
+ bool CertainArg = false;
+ int IncI = 0;
+
+ /* Determine the possible location of an option or 0 if their is
+ no option */
+ if (Opt[1] == 0)
+ {
+ if (I + 1 < argc && argv[I+1][0] != '-')
+ Argument = argv[I+1];
+
+ IncI = 1;
+ }
+ else
+ {
+ if (Opt[1] == '=')
+ {
+ CertainArg = true;
+ Argument = Opt + 2;
+ }
+ else
+ Argument = Opt + 1;
+ }
+
+ // Option is an argument set
+ if ((A->Flags & HasArg) == HasArg)
+ {
+ if (Argument == 0)
+ return _error->Error(_("Option %s requires an argument."),argv[I]);
+ Opt += strlen(Opt);
+ I += IncI;
+
+ // Parse a configuration file
+ if ((A->Flags & ConfigFile) == ConfigFile)
+ return ReadConfigFile(*Conf,Argument);
+
+ // Arbitrary item specification
+ if ((A->Flags & ArbItem) == ArbItem)
+ {
+ const char * const J = strchr(Argument, '=');
+ if (J == nullptr)
+ return _error->Error(_("Option %s: Configuration item specification must have an =<val>."),argv[I]);
+
+ Conf->Set(string(Argument,J-Argument), J+1);
+ return true;
+ }
+
+ const char *I = strchrnul(A->ConfName, ' ');
+ if (*I == ' ')
+ Conf->Set(string(A->ConfName,0,I-A->ConfName),string(I+1) + Argument);
+ else
+ Conf->Set(A->ConfName,string(I) + Argument);
+
+ return true;
+ }
+
+ // Option is an integer level
+ if ((A->Flags & IntLevel) == IntLevel)
+ {
+ // There might be an argument
+ if (Argument != 0)
+ {
+ char *EndPtr;
+ unsigned long Value = strtol(Argument,&EndPtr,10);
+
+ // Conversion failed and the argument was specified with an =s
+ if (EndPtr == Argument && CertainArg == true)
+ return _error->Error(_("Option %s requires an integer argument, not '%s'"),argv[I],Argument);
+
+ // Conversion was ok, set the value and return
+ if (EndPtr != 0 && EndPtr != Argument && *EndPtr == 0)
+ {
+ Conf->Set(A->ConfName,Value);
+ Opt += strlen(Opt);
+ I += IncI;
+ return true;
+ }
+ }
+
+ // Increase the level
+ Conf->Set(A->ConfName,Conf->FindI(A->ConfName)+1);
+ return true;
+ }
+
+ // Option is a boolean
+ int Sense = -1; // -1 is unspecified, 0 is yes 1 is no
+
+ // Look for an argument.
+ while (1)
+ {
+ // Look at preceding text
+ char Buffer[300];
+ if (Argument == 0)
+ {
+ if (PreceedMatch == false)
+ break;
+
+ if (strlen(argv[I]) >= sizeof(Buffer))
+ return _error->Error(_("Option '%s' is too long"),argv[I]);
+
+ // Skip the leading dash
+ const char *J = argv[I];
+ for (; *J != 0 && *J == '-'; J++);
+
+ const char *JEnd = strchr(J, '-');
+ if (JEnd != NULL)
+ {
+ strncpy(Buffer,J,JEnd - J);
+ Buffer[JEnd - J] = 0;
+ Argument = Buffer;
+ CertainArg = true;
+ }
+ else
+ break;
+ }
+
+ // Check for boolean
+ Sense = StringToBool(Argument);
+ if (Sense >= 0)
+ {
+ // Eat the argument
+ if (Argument != Buffer)
+ {
+ Opt += strlen(Opt);
+ I += IncI;
+ }
+ break;
+ }
+
+ if (CertainArg == true)
+ return _error->Error(_("Sense %s is not understood, try true or false."),Argument);
+
+ Argument = 0;
+ }
+
+ // Indeterminate sense depends on the flag
+ if (Sense == -1)
+ {
+ if ((A->Flags & InvBoolean) == InvBoolean)
+ Sense = 0;
+ else
+ Sense = 1;
+ }
+
+ Conf->Set(A->ConfName,Sense);
+ return true;
+}
+ /*}}}*/
+// CommandLine::FileSize - Count the number of filenames /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+unsigned int CommandLine::FileSize() const
+{
+ unsigned int Count = 0;
+ for (const char **I = FileList; I != 0 && *I != 0; I++)
+ Count++;
+ return Count;
+}
+ /*}}}*/
+// CommandLine::DispatchArg - Do something with the first arg /*{{{*/
+bool CommandLine::DispatchArg(Dispatch const * const Map,bool NoMatch)
+{
+ int I;
+ for (I = 0; Map[I].Match != 0; I++)
+ {
+ if (strcmp(FileList[0],Map[I].Match) == 0)
+ {
+ bool Res = Map[I].Handler(*this);
+ if (Res == false && _error->PendingError() == false)
+ _error->Error("Handler silently failed");
+ return Res;
+ }
+ }
+
+ // No matching name
+ if (Map[I].Match == 0)
+ {
+ if (NoMatch == true)
+ _error->Error(_("Invalid operation %s"),FileList[0]);
+ }
+
+ return false;
+}
+bool CommandLine::DispatchArg(Dispatch *Map,bool NoMatch)
+{
+ Dispatch const * const Map2 = Map;
+ return DispatchArg(Map2, NoMatch);
+}
+ /*}}}*/
+// CommandLine::SaveInConfig - for output later in a logfile or so /*{{{*/
+// ---------------------------------------------------------------------
+/* We save the commandline here to have it around later for e.g. logging.
+ It feels a bit like a hack here and isn't bulletproof, but it is better
+ than nothing after all. */
+void CommandLine::SaveInConfig(unsigned int const &argc, char const * const * const argv)
+{
+ char cmdline[100 + argc * 50];
+ memset(cmdline, 0, sizeof(cmdline));
+ unsigned int length = 0;
+ bool lastWasOption = false;
+ bool closeQuote = false;
+ for (unsigned int i = 0; i < argc && length < sizeof(cmdline); ++i, ++length)
+ {
+ for (unsigned int j = 0; argv[i][j] != '\0' && length < sizeof(cmdline)-2; ++j)
+ {
+ // we can't really sensibly deal with quoting so skip it
+ if (strchr("\"\'\r\n", argv[i][j]) != nullptr)
+ continue;
+ cmdline[length++] = argv[i][j];
+ if (lastWasOption == true && argv[i][j] == '=')
+ {
+ // That is possibly an option: Quote it if it includes spaces,
+ // the benefit is that this will eliminate also most false positives
+ const char* c = strchr(&argv[i][j+1], ' ');
+ if (c == NULL) continue;
+ cmdline[length++] = '\'';
+ closeQuote = true;
+ }
+ }
+ if (closeQuote == true)
+ {
+ cmdline[length++] = '\'';
+ closeQuote = false;
+ }
+ // Problem: detects also --hello
+ if (cmdline[length-1] == 'o')
+ lastWasOption = true;
+ cmdline[length] = ' ';
+ }
+ cmdline[--length] = '\0';
+ _config->Set("CommandLine::AsString", cmdline);
+}
+ /*}}}*/
+CommandLine::Args CommandLine::MakeArgs(char ShortOpt, char const *LongOpt, char const *ConfName, unsigned long Flags)/*{{{*/
+{
+ /* In theory, this should be a constructor for CommandLine::Args instead,
+ but this breaks compatibility as gcc thinks this is a c++11 initializer_list */
+ CommandLine::Args arg;
+ arg.ShortOpt = ShortOpt;
+ arg.LongOpt = LongOpt;
+ arg.ConfName = ConfName;
+ arg.Flags = Flags;
+ return arg;
+}
+ /*}}}*/
diff --git a/apt-pkg/contrib/cmndline.h b/apt-pkg/contrib/cmndline.h
new file mode 100644
index 000000000..805cb9eae
--- /dev/null
+++ b/apt-pkg/contrib/cmndline.h
@@ -0,0 +1,119 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: cmndline.h,v 1.7 1999/10/31 06:32:28 jgg Exp $
+/* ######################################################################
+
+ Command Line Class - Sophisticated command line parser
+
+ This class provides a unified command line parser/option handliner/
+ configuration mechanism. It allows the caller to specify the option
+ set and map the option set into the configuration class or other
+ special functioning.
+
+ Filenames are stripped from the option stream and put into their
+ own array.
+
+ The argument descriptor array can be initialized as:
+
+ CommandLine::Args Args[] =
+ {{'q',"quiet","apt::get::quiet",CommandLine::IntLevel},
+ {0,0,0,0}};
+
+ The flags mean,
+ HasArg - Means the argument has a value
+ IntLevel - Means the argument is an integer level indication, the
+ following -qqqq (+3) -q5 (=5) -q=5 (=5) are valid
+ Boolean - Means it is true/false or yes/no.
+ -d (true) --no-d (false) --yes-d (true)
+ --long (true) --no-long (false) --yes-long (true)
+ -d=yes (true) -d=no (false) Words like enable, disable,
+ true false, yes no and on off are recognized in logical
+ places.
+ InvBoolean - Same as boolean but the case with no specified sense
+ (first case) is set to false.
+ ConfigFile - Means this flag should be interprited as the name of
+ a config file to read in at this point in option processing.
+ Implies HasArg.
+ ArbItem - Means the item is an arbitrary configuration string of
+ the form item=value, where item is passed directly
+ to the configuration class.
+ The default, if the flags are 0 is to use Boolean
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_CMNDLINE_H
+#define PKGLIB_CMNDLINE_H
+
+#include <apt-pkg/macros.h>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/configuration.h>
+#endif
+
+class Configuration;
+
+class CommandLine
+{
+ public:
+ struct Args;
+ struct Dispatch;
+ struct DispatchWithHelp;
+
+ protected:
+
+ Args *ArgList;
+ Configuration *Conf;
+ bool HandleOpt(int &I,int argc,const char *argv[],
+ const char *&Opt,Args *A,bool PreceedeMatch = false);
+ void static SaveInConfig(unsigned int const &argc, char const * const * const argv);
+
+ public:
+
+ enum AFlags
+ {
+ HasArg = (1 << 0),
+ IntLevel = (1 << 1),
+ Boolean = (1 << 2),
+ InvBoolean = (1 << 3),
+ ConfigFile = (1 << 4) | HasArg,
+ ArbItem = (1 << 5) | HasArg
+ };
+
+ const char **FileList;
+
+ bool Parse(int argc,const char **argv);
+ void ShowHelp();
+ unsigned int FileSize() const APT_PURE;
+ // FIXME: merge on next ABI break
+ bool DispatchArg(Dispatch *List,bool NoMatch = true);
+ bool DispatchArg(Dispatch const * const List,bool NoMatch = true);
+
+ static char const * GetCommand(Dispatch const * const Map,
+ unsigned int const argc, char const * const * const argv) APT_PURE;
+
+ static CommandLine::Args MakeArgs(char ShortOpt, char const *LongOpt,
+ char const *ConfName, unsigned long Flags) APT_CONST;
+
+ CommandLine();
+ CommandLine(Args *AList,Configuration *Conf);
+ ~CommandLine();
+};
+
+struct CommandLine::Args
+{
+ char ShortOpt;
+ const char *LongOpt;
+ const char *ConfName;
+ unsigned long Flags;
+
+ inline bool end() {return ShortOpt == 0 && LongOpt == 0;};
+ inline bool IsBoolean() {return Flags == 0 || (Flags & (Boolean|InvBoolean)) != 0;};
+};
+
+struct CommandLine::Dispatch
+{
+ const char *Match;
+ bool (*Handler)(CommandLine &);
+};
+
+#endif
diff --git a/apt-pkg/contrib/configuration.cc b/apt-pkg/contrib/configuration.cc
new file mode 100644
index 000000000..78a98d614
--- /dev/null
+++ b/apt-pkg/contrib/configuration.cc
@@ -0,0 +1,1224 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: configuration.cc,v 1.28 2004/04/30 04:00:15 mdz Exp $
+/* ######################################################################
+
+ Configuration Class
+
+ This class provides a configuration file and command line parser
+ for a tree-oriented configuration environment. All runtime configuration
+ is stored in here.
+
+ This source is placed in the Public Domain, do with it what you will
+ It was originally written by Jason Gunthorpe <jgg@debian.org>.
+
+ ##################################################################### */
+ /*}}}*/
+// Include files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/macros.h>
+
+#include <ctype.h>
+#include <regex.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <algorithm>
+#include <iterator>
+#include <string>
+#include <stack>
+#include <vector>
+#include <fstream>
+#include <sstream>
+#include <unordered_map>
+
+#include <apti18n.h>
+
+using namespace std;
+ /*}}}*/
+
+Configuration *_config = new Configuration;
+
+/* TODO: This config verification shouldn't be using a static variable
+ but a Cnf-member – but that would need ABI breaks and stuff and for now
+ that really is an apt-dev-only tool, so it isn't that bad that it is
+ unusable and allaround a bit strange */
+enum class APT_HIDDEN ConfigType { UNDEFINED, INT, BOOL, STRING, STRING_OR_BOOL, STRING_OR_LIST, FILE, DIR, LIST, PROGRAM_PATH = FILE };
+APT_HIDDEN std::unordered_map<std::string, ConfigType> apt_known_config {};
+static std::string getConfigTypeString(ConfigType const type) /*{{{*/
+{
+ switch (type)
+ {
+ case ConfigType::UNDEFINED: return "UNDEFINED";
+ case ConfigType::INT: return "INT";
+ case ConfigType::BOOL: return "BOOL";
+ case ConfigType::STRING: return "STRING";
+ case ConfigType::STRING_OR_BOOL: return "STRING_OR_BOOL";
+ case ConfigType::FILE: return "FILE";
+ case ConfigType::DIR: return "DIR";
+ case ConfigType::LIST: return "LIST";
+ case ConfigType::STRING_OR_LIST: return "STRING_OR_LIST";
+ }
+ return "UNKNOWN";
+}
+ /*}}}*/
+static ConfigType getConfigType(std::string const &type) /*{{{*/
+{
+ if (type == "<INT>")
+ return ConfigType::INT;
+ else if (type == "<BOOL>")
+ return ConfigType::BOOL;
+ else if (type == "<STRING>")
+ return ConfigType::STRING;
+ else if (type == "<STRING_OR_BOOL>")
+ return ConfigType::STRING_OR_BOOL;
+ else if (type == "<FILE>")
+ return ConfigType::FILE;
+ else if (type == "<DIR>")
+ return ConfigType::DIR;
+ else if (type == "<LIST>")
+ return ConfigType::LIST;
+ else if (type == "<STRING_OR_LIST>")
+ return ConfigType::STRING_OR_LIST;
+ else if (type == "<PROGRAM_PATH>")
+ return ConfigType::PROGRAM_PATH;
+ return ConfigType::UNDEFINED;
+}
+ /*}}}*/
+// checkFindConfigOptionType - workhorse of option checking /*{{{*/
+static void checkFindConfigOptionTypeInternal(std::string name, ConfigType const type)
+{
+ std::transform(name.begin(), name.end(), name.begin(), ::tolower);
+ auto known = apt_known_config.find(name);
+ if (known == apt_known_config.cend())
+ {
+ auto const rcolon = name.rfind(':');
+ if (rcolon != std::string::npos)
+ {
+ known = apt_known_config.find(name.substr(0, rcolon) + ":*");
+ if (known == apt_known_config.cend())
+ {
+ auto const parts = StringSplit(name, "::");
+ size_t psize = parts.size();
+ if (psize > 1)
+ {
+ for (size_t max = psize; max != 1; --max)
+ {
+ std::ostringstream os;
+ std::copy(parts.begin(), parts.begin() + max, std::ostream_iterator<std::string>(os, "::"));
+ os << "**";
+ known = apt_known_config.find(os.str());
+ if (known != apt_known_config.cend() && known->second == ConfigType::UNDEFINED)
+ return;
+ }
+ for (size_t max = psize - 1; max != 1; --max)
+ {
+ std::ostringstream os;
+ std::copy(parts.begin(), parts.begin() + max - 1, std::ostream_iterator<std::string>(os, "::"));
+ os << "*::";
+ std::copy(parts.begin() + max + 1, parts.end() - 1, std::ostream_iterator<std::string>(os, "::"));
+ os << *(parts.end() - 1);
+ known = apt_known_config.find(os.str());
+ if (known != apt_known_config.cend())
+ break;
+ }
+ }
+ }
+ }
+ }
+ if (known == apt_known_config.cend())
+ _error->Warning("Using unknown config option »%s« of type %s",
+ name.c_str(), getConfigTypeString(type).c_str());
+ else if (known->second != type)
+ {
+ if (known->second == ConfigType::DIR && type == ConfigType::FILE)
+ ; // implementation detail
+ else if (type == ConfigType::STRING && (known->second == ConfigType::FILE || known->second == ConfigType::DIR))
+ ; // TODO: that might be an error or not, we will figure this out later
+ else if (known->second == ConfigType::STRING_OR_BOOL && (type == ConfigType::BOOL || type == ConfigType::STRING))
+ ;
+ else if (known->second == ConfigType::STRING_OR_LIST && (type == ConfigType::LIST || type == ConfigType::STRING))
+ ;
+ else
+ _error->Warning("Using config option »%s« of type %s as a type %s",
+ name.c_str(), getConfigTypeString(known->second).c_str(), getConfigTypeString(type).c_str());
+ }
+}
+static void checkFindConfigOptionType(char const * const name, ConfigType const type)
+{
+ if (apt_known_config.empty())
+ return;
+ checkFindConfigOptionTypeInternal(name, type);
+}
+ /*}}}*/
+static bool LoadConfigurationIndex(std::string const &filename) /*{{{*/
+{
+ apt_known_config.clear();
+ if (filename.empty())
+ return true;
+ Configuration Idx;
+ if (ReadConfigFile(Idx, filename) == false)
+ return false;
+
+ Configuration::Item const * Top = Idx.Tree(nullptr);
+ if (unlikely(Top == nullptr))
+ return false;
+
+ do {
+ if (Top->Value.empty() == false)
+ {
+ std::string fulltag = Top->FullTag();
+ std::transform(fulltag.begin(), fulltag.end(), fulltag.begin(), ::tolower);
+ apt_known_config.emplace(std::move(fulltag), getConfigType(Top->Value));
+ }
+
+ if (Top->Child != nullptr)
+ {
+ Top = Top->Child;
+ continue;
+ }
+
+ while (Top != nullptr && Top->Next == nullptr)
+ Top = Top->Parent;
+ if (Top != nullptr)
+ Top = Top->Next;
+ } while (Top != nullptr);
+
+ return true;
+}
+ /*}}}*/
+
+// Configuration::Configuration - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+Configuration::Configuration() : ToFree(true)
+{
+ Root = new Item;
+}
+Configuration::Configuration(const Item *Root) : Root((Item *)Root), ToFree(false)
+{
+}
+ /*}}}*/
+// Configuration::~Configuration - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+Configuration::~Configuration()
+{
+ if (ToFree == false)
+ return;
+
+ Item *Top = Root;
+ for (; Top != 0;)
+ {
+ if (Top->Child != 0)
+ {
+ Top = Top->Child;
+ continue;
+ }
+
+ while (Top != 0 && Top->Next == 0)
+ {
+ Item *Parent = Top->Parent;
+ delete Top;
+ Top = Parent;
+ }
+ if (Top != 0)
+ {
+ Item *Next = Top->Next;
+ delete Top;
+ Top = Next;
+ }
+ }
+}
+ /*}}}*/
+// Configuration::Lookup - Lookup a single item /*{{{*/
+// ---------------------------------------------------------------------
+/* This will lookup a single item by name below another item. It is a
+ helper function for the main lookup function */
+Configuration::Item *Configuration::Lookup(Item *Head,const char *S,
+ unsigned long const &Len,bool const &Create)
+{
+ int Res = 1;
+ Item *I = Head->Child;
+ Item **Last = &Head->Child;
+
+ // Empty strings match nothing. They are used for lists.
+ if (Len != 0)
+ {
+ for (; I != 0; Last = &I->Next, I = I->Next)
+ if ((Res = stringcasecmp(I->Tag,S,S + Len)) == 0)
+ break;
+ }
+ else
+ for (; I != 0; Last = &I->Next, I = I->Next);
+
+ if (Res == 0)
+ return I;
+ if (Create == false)
+ return 0;
+
+ I = new Item;
+ I->Tag.assign(S,Len);
+ I->Next = *Last;
+ I->Parent = Head;
+ *Last = I;
+ return I;
+}
+ /*}}}*/
+// Configuration::Lookup - Lookup a fully scoped item /*{{{*/
+// ---------------------------------------------------------------------
+/* This performs a fully scoped lookup of a given name, possibly creating
+ new items */
+Configuration::Item *Configuration::Lookup(const char *Name,bool const &Create)
+{
+ if (Name == 0)
+ return Root->Child;
+
+ const char *Start = Name;
+ const char *End = Start + strlen(Name);
+ const char *TagEnd = Name;
+ Item *Itm = Root;
+ for (; End - TagEnd >= 2; TagEnd++)
+ {
+ if (TagEnd[0] == ':' && TagEnd[1] == ':')
+ {
+ Itm = Lookup(Itm,Start,TagEnd - Start,Create);
+ if (Itm == 0)
+ return 0;
+ TagEnd = Start = TagEnd + 2;
+ }
+ }
+
+ // This must be a trailing ::, we create unique items in a list
+ if (End - Start == 0)
+ {
+ if (Create == false)
+ return 0;
+ }
+
+ Itm = Lookup(Itm,Start,End - Start,Create);
+ return Itm;
+}
+ /*}}}*/
+// Configuration::Find - Find a value /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+string Configuration::Find(const char *Name,const char *Default) const
+{
+ checkFindConfigOptionType(Name, ConfigType::STRING);
+ const Item *Itm = Lookup(Name);
+ if (Itm == 0 || Itm->Value.empty() == true)
+ {
+ if (Default == 0)
+ return "";
+ else
+ return Default;
+ }
+
+ return Itm->Value;
+}
+ /*}}}*/
+// Configuration::FindFile - Find a Filename /*{{{*/
+// ---------------------------------------------------------------------
+/* Directories are stored as the base dir in the Parent node and the
+ sub directory in sub nodes with the final node being the end filename
+ */
+string Configuration::FindFile(const char *Name,const char *Default) const
+{
+ checkFindConfigOptionType(Name, ConfigType::FILE);
+ const Item *RootItem = Lookup("RootDir");
+ std::string result = (RootItem == 0) ? "" : RootItem->Value;
+ if(result.empty() == false && result[result.size() - 1] != '/')
+ result.push_back('/');
+
+ const Item *Itm = Lookup(Name);
+ if (Itm == 0 || Itm->Value.empty() == true)
+ {
+ if (Default != 0)
+ result.append(Default);
+ }
+ else
+ {
+ string val = Itm->Value;
+ while (Itm->Parent != 0)
+ {
+ if (Itm->Parent->Value.empty() == true)
+ {
+ Itm = Itm->Parent;
+ continue;
+ }
+
+ // Absolute
+ if (val.length() >= 1 && val[0] == '/')
+ {
+ if (val.compare(0, 9, "/dev/null") == 0)
+ val.erase(9);
+ break;
+ }
+
+ // ~/foo or ./foo
+ if (val.length() >= 2 && (val[0] == '~' || val[0] == '.') && val[1] == '/')
+ break;
+
+ // ../foo
+ if (val.length() >= 3 && val[0] == '.' && val[1] == '.' && val[2] == '/')
+ break;
+
+ if (Itm->Parent->Value.end()[-1] != '/')
+ val.insert(0, "/");
+
+ val.insert(0, Itm->Parent->Value);
+ Itm = Itm->Parent;
+ }
+ result.append(val);
+ }
+ return flNormalize(result);
+}
+ /*}}}*/
+// Configuration::FindDir - Find a directory name /*{{{*/
+// ---------------------------------------------------------------------
+/* This is like findfile execept the result is terminated in a / */
+string Configuration::FindDir(const char *Name,const char *Default) const
+{
+ checkFindConfigOptionType(Name, ConfigType::DIR);
+ string Res = FindFile(Name,Default);
+ if (Res.end()[-1] != '/')
+ {
+ size_t const found = Res.rfind("/dev/null");
+ if (found != string::npos && found == Res.size() - 9)
+ return Res; // /dev/null returning
+ return Res + '/';
+ }
+ return Res;
+}
+ /*}}}*/
+// Configuration::FindVector - Find a vector of values /*{{{*/
+// ---------------------------------------------------------------------
+/* Returns a vector of config values under the given item */
+vector<string> Configuration::FindVector(const char *Name, std::string const &Default, bool const Keys) const
+{
+ checkFindConfigOptionType(Name, ConfigType::LIST);
+ vector<string> Vec;
+ const Item *Top = Lookup(Name);
+ if (Top == NULL)
+ return VectorizeString(Default, ',');
+
+ if (Top->Value.empty() == false)
+ return VectorizeString(Top->Value, ',');
+
+ Item *I = Top->Child;
+ while(I != NULL)
+ {
+ Vec.push_back(Keys ? I->Tag : I->Value);
+ I = I->Next;
+ }
+ if (Vec.empty() == true)
+ return VectorizeString(Default, ',');
+
+ return Vec;
+}
+ /*}}}*/
+// Configuration::FindI - Find an integer value /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+int Configuration::FindI(const char *Name,int const &Default) const
+{
+ checkFindConfigOptionType(Name, ConfigType::INT);
+ const Item *Itm = Lookup(Name);
+ if (Itm == 0 || Itm->Value.empty() == true)
+ return Default;
+
+ char *End;
+ int Res = strtol(Itm->Value.c_str(),&End,0);
+ if (End == Itm->Value.c_str())
+ return Default;
+
+ return Res;
+}
+ /*}}}*/
+// Configuration::FindB - Find a boolean type /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool Configuration::FindB(const char *Name,bool const &Default) const
+{
+ checkFindConfigOptionType(Name, ConfigType::BOOL);
+ const Item *Itm = Lookup(Name);
+ if (Itm == 0 || Itm->Value.empty() == true)
+ return Default;
+
+ return StringToBool(Itm->Value,Default);
+}
+ /*}}}*/
+// Configuration::FindAny - Find an arbitrary type /*{{{*/
+// ---------------------------------------------------------------------
+/* a key suffix of /f, /d, /b or /i calls Find{File,Dir,B,I} */
+string Configuration::FindAny(const char *Name,const char *Default) const
+{
+ string key = Name;
+ char type = 0;
+
+ if (key.size() > 2 && key.end()[-2] == '/')
+ {
+ type = key.end()[-1];
+ key.resize(key.size() - 2);
+ }
+
+ switch (type)
+ {
+ // file
+ case 'f':
+ return FindFile(key.c_str(), Default);
+
+ // directory
+ case 'd':
+ return FindDir(key.c_str(), Default);
+
+ // bool
+ case 'b':
+ return FindB(key, Default) ? "true" : "false";
+
+ // int
+ case 'i':
+ {
+ char buf[16];
+ snprintf(buf, sizeof(buf)-1, "%d", FindI(key, Default ? atoi(Default) : 0 ));
+ return buf;
+ }
+ }
+
+ // fallback
+ return Find(Name, Default);
+}
+ /*}}}*/
+// Configuration::CndSet - Conditinal Set a value /*{{{*/
+// ---------------------------------------------------------------------
+/* This will not overwrite */
+void Configuration::CndSet(const char *Name,const string &Value)
+{
+ Item *Itm = Lookup(Name,true);
+ if (Itm == 0)
+ return;
+ if (Itm->Value.empty() == true)
+ Itm->Value = Value;
+}
+ /*}}}*/
+// Configuration::Set - Set an integer value /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void Configuration::CndSet(const char *Name,int const Value)
+{
+ Item *Itm = Lookup(Name,true);
+ if (Itm == 0 || Itm->Value.empty() == false)
+ return;
+ char S[300];
+ snprintf(S,sizeof(S),"%i",Value);
+ Itm->Value = S;
+}
+ /*}}}*/
+// Configuration::Set - Set a value /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void Configuration::Set(const char *Name,const string &Value)
+{
+ Item *Itm = Lookup(Name,true);
+ if (Itm == 0)
+ return;
+ Itm->Value = Value;
+}
+ /*}}}*/
+// Configuration::Set - Set an integer value /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void Configuration::Set(const char *Name,int const &Value)
+{
+ Item *Itm = Lookup(Name,true);
+ if (Itm == 0)
+ return;
+ char S[300];
+ snprintf(S,sizeof(S),"%i",Value);
+ Itm->Value = S;
+}
+ /*}}}*/
+// Configuration::Clear - Clear an single value from a list /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void Configuration::Clear(string const &Name, int const &Value)
+{
+ char S[300];
+ snprintf(S,sizeof(S),"%i",Value);
+ Clear(Name, S);
+}
+ /*}}}*/
+// Configuration::Clear - Clear an single value from a list /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void Configuration::Clear(string const &Name, string const &Value)
+{
+ Item *Top = Lookup(Name.c_str(),false);
+ if (Top == 0 || Top->Child == 0)
+ return;
+
+ Item *Tmp, *Prev, *I;
+ Prev = I = Top->Child;
+
+ while(I != NULL)
+ {
+ if(I->Value == Value)
+ {
+ Tmp = I;
+ // was first element, point parent to new first element
+ if(Top->Child == Tmp)
+ Top->Child = I->Next;
+ I = I->Next;
+ Prev->Next = I;
+ delete Tmp;
+ } else {
+ Prev = I;
+ I = I->Next;
+ }
+ }
+
+}
+ /*}}}*/
+// Configuration::Clear - Clear everything /*{{{*/
+// ---------------------------------------------------------------------
+void Configuration::Clear()
+{
+ const Configuration::Item *Top = Tree(0);
+ while( Top != 0 )
+ {
+ Clear(Top->FullTag());
+ Top = Top->Next;
+ }
+}
+ /*}}}*/
+// Configuration::Clear - Clear an entire tree /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void Configuration::Clear(string const &Name)
+{
+ Item *Top = Lookup(Name.c_str(),false);
+ if (Top == 0)
+ return;
+
+ Top->Value.clear();
+ Item *Stop = Top;
+ Top = Top->Child;
+ Stop->Child = 0;
+ for (; Top != 0;)
+ {
+ if (Top->Child != 0)
+ {
+ Top = Top->Child;
+ continue;
+ }
+
+ while (Top != 0 && Top->Next == 0)
+ {
+ Item *Tmp = Top;
+ Top = Top->Parent;
+ delete Tmp;
+
+ if (Top == Stop)
+ return;
+ }
+
+ Item *Tmp = Top;
+ if (Top != 0)
+ Top = Top->Next;
+ delete Tmp;
+ }
+}
+ /*}}}*/
+void Configuration::MoveSubTree(char const * const OldRootName, char const * const NewRootName)/*{{{*/
+{
+ // prevent NewRoot being a subtree of OldRoot
+ if (OldRootName == nullptr)
+ return;
+ if (NewRootName != nullptr)
+ {
+ if (strcmp(OldRootName, NewRootName) == 0)
+ return;
+ std::string const oldroot = std::string(OldRootName) + "::";
+ if (strcasestr(NewRootName, oldroot.c_str()) != NULL)
+ return;
+ }
+
+ Item * Top;
+ Item const * const OldRoot = Top = Lookup(OldRootName, false);
+ if (Top == nullptr)
+ return;
+ std::string NewRoot;
+ if (NewRootName != nullptr)
+ NewRoot.append(NewRootName).append("::");
+
+ Top->Value.clear();
+ Item * const Stop = Top;
+ Top = Top->Child;
+ Stop->Child = 0;
+ for (; Top != 0;)
+ {
+ if (Top->Child != 0)
+ {
+ Top = Top->Child;
+ continue;
+ }
+
+ while (Top != 0 && Top->Next == 0)
+ {
+ Set(NewRoot + Top->FullTag(OldRoot), Top->Value);
+ Item const * const Tmp = Top;
+ Top = Top->Parent;
+ delete Tmp;
+
+ if (Top == Stop)
+ return;
+ }
+
+ Set(NewRoot + Top->FullTag(OldRoot), Top->Value);
+ Item const * const Tmp = Top;
+ if (Top != 0)
+ Top = Top->Next;
+ delete Tmp;
+ }
+}
+ /*}}}*/
+// Configuration::Exists - Returns true if the Name exists /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool Configuration::Exists(const char *Name) const
+{
+ const Item *Itm = Lookup(Name);
+ if (Itm == 0)
+ return false;
+ return true;
+}
+ /*}}}*/
+// Configuration::ExistsAny - Returns true if the Name, possibly /*{{{*/
+// ---------------------------------------------------------------------
+/* qualified by /[fdbi] exists */
+bool Configuration::ExistsAny(const char *Name) const
+{
+ string key = Name;
+
+ if (key.size() > 2 && key.end()[-2] == '/')
+ {
+ if (key.find_first_of("fdbi",key.size()-1) < key.size())
+ {
+ key.resize(key.size() - 2);
+ if (Exists(key.c_str()))
+ return true;
+ }
+ else
+ {
+ _error->Warning(_("Unrecognized type abbreviation: '%c'"), key.end()[-3]);
+ }
+ }
+ return Exists(Name);
+}
+ /*}}}*/
+// Configuration::Dump - Dump the config /*{{{*/
+// ---------------------------------------------------------------------
+/* Dump the entire configuration space */
+void Configuration::Dump(ostream& str)
+{
+ Dump(str, NULL, "%f \"%v\";\n", true);
+}
+void Configuration::Dump(ostream& str, char const * const root,
+ char const * const formatstr, bool const emptyValue)
+{
+ const Configuration::Item* Top = Tree(root);
+ if (Top == 0)
+ return;
+ const Configuration::Item* const Root = (root == NULL) ? NULL : Top;
+ std::vector<std::string> const format = VectorizeString(formatstr, '%');
+
+ /* Write out all of the configuration directives by walking the
+ configuration tree */
+ do {
+ if (emptyValue == true || Top->Value.empty() == emptyValue)
+ {
+ std::vector<std::string>::const_iterator f = format.begin();
+ str << *f;
+ for (++f; f != format.end(); ++f)
+ {
+ if (f->empty() == true)
+ {
+ ++f;
+ str << '%' << *f;
+ continue;
+ }
+ char const type = (*f)[0];
+ if (type == 'f')
+ str << Top->FullTag();
+ else if (type == 't')
+ str << Top->Tag;
+ else if (type == 'v')
+ str << Top->Value;
+ else if (type == 'F')
+ str << QuoteString(Top->FullTag(), "=\"\n");
+ else if (type == 'T')
+ str << QuoteString(Top->Tag, "=\"\n");
+ else if (type == 'V')
+ str << QuoteString(Top->Value, "=\"\n");
+ else if (type == 'n')
+ str << "\n";
+ else if (type == 'N')
+ str << "\t";
+ else
+ str << '%' << type;
+ str << f->c_str() + 1;
+ }
+ }
+
+ if (Top->Child != 0)
+ {
+ Top = Top->Child;
+ continue;
+ }
+
+ while (Top != 0 && Top->Next == 0)
+ Top = Top->Parent;
+ if (Top != 0)
+ Top = Top->Next;
+
+ if (Root != NULL)
+ {
+ const Configuration::Item* I = Top;
+ while(I != 0)
+ {
+ if (I == Root)
+ break;
+ else
+ I = I->Parent;
+ }
+ if (I == 0)
+ break;
+ }
+ } while (Top != 0);
+}
+ /*}}}*/
+
+// Configuration::Item::FullTag - Return the fully scoped tag /*{{{*/
+// ---------------------------------------------------------------------
+/* Stop sets an optional max recursion depth if this item is being viewed as
+ part of a sub tree. */
+string Configuration::Item::FullTag(const Item *Stop) const
+{
+ if (Parent == 0 || Parent->Parent == 0 || Parent == Stop)
+ return Tag;
+ return Parent->FullTag(Stop) + "::" + Tag;
+}
+ /*}}}*/
+
+// ReadConfigFile - Read a configuration file /*{{{*/
+// ---------------------------------------------------------------------
+/* The configuration format is very much like the named.conf format
+ used in bind8, in fact this routine can parse most named.conf files.
+ Sectional config files are like bind's named.conf where there are
+ sections like 'zone "foo.org" { .. };' This causes each section to be
+ added in with a tag like "zone::foo.org" instead of being split
+ tag/value. AsSectional enables Sectional parsing.*/
+static void leaveCurrentScope(std::stack<std::string> &Stack, std::string &ParentTag)
+{
+ if (Stack.empty())
+ ParentTag.clear();
+ else
+ {
+ ParentTag = Stack.top();
+ Stack.pop();
+ }
+}
+bool ReadConfigFile(Configuration &Conf,const string &FName,bool const &AsSectional,
+ unsigned const &Depth)
+{
+ // Open the stream for reading
+ ifstream F(FName.c_str(),ios::in);
+ if (F.fail() == true)
+ return _error->Errno("ifstream::ifstream",_("Opening configuration file %s"),FName.c_str());
+
+ string LineBuffer;
+ std::stack<std::string> Stack;
+
+ // Parser state
+ string ParentTag;
+
+ int CurLine = 0;
+ bool InComment = false;
+ while (F.eof() == false)
+ {
+ // The raw input line.
+ std::string Input;
+ // The input line with comments stripped.
+ std::string Fragment;
+
+ // Grab the next line of F and place it in Input.
+ do
+ {
+ char *Buffer = new char[1024];
+
+ F.clear();
+ F.getline(Buffer,sizeof(Buffer) / 2);
+
+ Input += Buffer;
+ delete[] Buffer;
+ }
+ while (F.fail() && !F.eof());
+
+ // Expand tabs in the input line and remove leading and trailing
+ // whitespace.
+ {
+ const int BufferSize = Input.size() * 8 + 1;
+ char *Buffer = new char[BufferSize];
+ try
+ {
+ memcpy(Buffer, Input.c_str(), Input.size() + 1);
+
+ _strtabexpand(Buffer, BufferSize);
+ _strstrip(Buffer);
+ Input = Buffer;
+ }
+ catch(...)
+ {
+ delete[] Buffer;
+ throw;
+ }
+ delete[] Buffer;
+ }
+ CurLine++;
+
+ // Now strip comments; if the whole line is contained in a
+ // comment, skip this line.
+
+ // The first meaningful character in the current fragment; will
+ // be adjusted below as we remove bytes from the front.
+ std::string::const_iterator Start = Input.begin();
+ // The last meaningful character in the current fragment.
+ std::string::const_iterator End = Input.end();
+
+ // Multi line comment
+ if (InComment == true)
+ {
+ for (std::string::const_iterator I = Start;
+ I != End; ++I)
+ {
+ if (*I == '*' && I + 1 != End && I[1] == '/')
+ {
+ Start = I + 2;
+ InComment = false;
+ break;
+ }
+ }
+ if (InComment == true)
+ continue;
+ }
+
+ // Discard single line comments
+ bool InQuote = false;
+ for (std::string::const_iterator I = Start;
+ I != End; ++I)
+ {
+ if (*I == '"')
+ InQuote = !InQuote;
+ if (InQuote == true)
+ continue;
+
+ if ((*I == '/' && I + 1 != End && I[1] == '/') ||
+ (*I == '#' && strcmp(string(I,I+6).c_str(),"#clear") != 0 &&
+ strcmp(string(I,I+8).c_str(),"#include") != 0 &&
+ strcmp(string(I,I+strlen("#x-apt-configure-index")).c_str(), "#x-apt-configure-index") != 0))
+ {
+ End = I;
+ break;
+ }
+ }
+
+ // Look for multi line comments and build up the
+ // fragment.
+ Fragment.reserve(End - Start);
+ InQuote = false;
+ for (std::string::const_iterator I = Start;
+ I != End; ++I)
+ {
+ if (*I == '"')
+ InQuote = !InQuote;
+ if (InQuote == true)
+ Fragment.push_back(*I);
+ else if (*I == '/' && I + 1 != End && I[1] == '*')
+ {
+ InComment = true;
+ for (std::string::const_iterator J = I;
+ J != End; ++J)
+ {
+ if (*J == '*' && J + 1 != End && J[1] == '/')
+ {
+ // Pretend we just finished walking over the
+ // comment, and don't add anything to the output
+ // fragment.
+ I = J + 1;
+ InComment = false;
+ break;
+ }
+ }
+
+ if (InComment == true)
+ break;
+ }
+ else
+ Fragment.push_back(*I);
+ }
+
+ // Skip blank lines.
+ if (Fragment.empty())
+ continue;
+
+ // The line has actual content; interpret what it means.
+ InQuote = false;
+ Start = Fragment.begin();
+ End = Fragment.end();
+ for (std::string::const_iterator I = Start;
+ I != End; ++I)
+ {
+ if (*I == '"')
+ InQuote = !InQuote;
+
+ if (InQuote == false && (*I == '{' || *I == ';' || *I == '}'))
+ {
+ // Put the last fragment into the buffer
+ std::string::const_iterator NonWhitespaceStart = Start;
+ std::string::const_iterator NonWhitespaceStop = I;
+ for (; NonWhitespaceStart != I && isspace(*NonWhitespaceStart) != 0; ++NonWhitespaceStart)
+ ;
+ for (; NonWhitespaceStop != NonWhitespaceStart && isspace(NonWhitespaceStop[-1]) != 0; --NonWhitespaceStop)
+ ;
+ if (LineBuffer.empty() == false && NonWhitespaceStop - NonWhitespaceStart != 0)
+ LineBuffer += ' ';
+ LineBuffer += string(NonWhitespaceStart, NonWhitespaceStop);
+
+ // Drop this from the input string, saving the character
+ // that terminated the construct we just closed. (i.e., a
+ // brace or a semicolon)
+ char TermChar = *I;
+ Start = I + 1;
+
+ // Syntax Error
+ if (TermChar == '{' && LineBuffer.empty() == true)
+ return _error->Error(_("Syntax error %s:%u: Block starts with no name."),FName.c_str(),CurLine);
+
+ // No string on this line
+ if (LineBuffer.empty() == true)
+ {
+ if (TermChar == '}')
+ leaveCurrentScope(Stack, ParentTag);
+ continue;
+ }
+
+ // Parse off the tag
+ string Tag;
+ const char *Pos = LineBuffer.c_str();
+ if (ParseQuoteWord(Pos,Tag) == false)
+ return _error->Error(_("Syntax error %s:%u: Malformed tag"),FName.c_str(),CurLine);
+
+ // Parse off the word
+ string Word;
+ bool NoWord = false;
+ if (ParseCWord(Pos,Word) == false &&
+ ParseQuoteWord(Pos,Word) == false)
+ {
+ if (TermChar != '{')
+ {
+ Word = Tag;
+ Tag = "";
+ }
+ else
+ NoWord = true;
+ }
+ if (strlen(Pos) != 0)
+ return _error->Error(_("Syntax error %s:%u: Extra junk after value"),FName.c_str(),CurLine);
+
+ // Go down a level
+ if (TermChar == '{')
+ {
+ Stack.push(ParentTag);
+
+ /* Make sectional tags incorporate the section into the
+ tag string */
+ if (AsSectional == true && Word.empty() == false)
+ {
+ Tag.append("::").append(Word);
+ Word.clear();
+ }
+
+ if (ParentTag.empty() == true)
+ ParentTag = Tag;
+ else
+ ParentTag.append("::").append(Tag);
+ Tag.clear();
+ }
+
+ // Generate the item name
+ string Item;
+ if (ParentTag.empty() == true)
+ Item = Tag;
+ else
+ {
+ if (TermChar != '{' || Tag.empty() == false)
+ Item = ParentTag + "::" + Tag;
+ else
+ Item = ParentTag;
+ }
+
+ // Specials
+ if (Tag.length() >= 1 && Tag[0] == '#')
+ {
+ if (ParentTag.empty() == false)
+ return _error->Error(_("Syntax error %s:%u: Directives can only be done at the top level"),FName.c_str(),CurLine);
+ Tag.erase(Tag.begin());
+ if (Tag == "clear")
+ Conf.Clear(Word);
+ else if (Tag == "include")
+ {
+ if (Depth > 10)
+ return _error->Error(_("Syntax error %s:%u: Too many nested includes"),FName.c_str(),CurLine);
+ if (Word.length() > 2 && Word.end()[-1] == '/')
+ {
+ if (ReadConfigDir(Conf,Word,AsSectional,Depth+1) == false)
+ return _error->Error(_("Syntax error %s:%u: Included from here"),FName.c_str(),CurLine);
+ }
+ else
+ {
+ if (ReadConfigFile(Conf,Word,AsSectional,Depth+1) == false)
+ return _error->Error(_("Syntax error %s:%u: Included from here"),FName.c_str(),CurLine);
+ }
+ }
+ else if (Tag == "x-apt-configure-index")
+ {
+ if (LoadConfigurationIndex(Word) == false)
+ return _error->Warning("Loading the configure index %s in file %s:%u failed!", Word.c_str(), FName.c_str(), CurLine);
+ }
+ else
+ return _error->Error(_("Syntax error %s:%u: Unsupported directive '%s'"),FName.c_str(),CurLine,Tag.c_str());
+ }
+ else if (Tag.empty() == true && NoWord == false && Word == "#clear")
+ return _error->Error(_("Syntax error %s:%u: clear directive requires an option tree as argument"),FName.c_str(),CurLine);
+ else
+ {
+ // Set the item in the configuration class
+ if (NoWord == false)
+ Conf.Set(Item,Word);
+ }
+
+ // Empty the buffer
+ LineBuffer.clear();
+
+ // Move up a tag, but only if there is no bit to parse
+ if (TermChar == '}')
+ leaveCurrentScope(Stack, ParentTag);
+ }
+ }
+
+ // Store the remaining text, if any, in the current line buffer.
+
+ // NB: could change this to use string-based operations; I'm
+ // using strstrip now to ensure backwards compatibility.
+ // -- dburrows 2008-04-01
+ {
+ char *Buffer = new char[End - Start + 1];
+ try
+ {
+ std::copy(Start, End, Buffer);
+ Buffer[End - Start] = '\0';
+
+ const char *Stripd = _strstrip(Buffer);
+ if (*Stripd != 0 && LineBuffer.empty() == false)
+ LineBuffer += " ";
+ LineBuffer += Stripd;
+ }
+ catch(...)
+ {
+ delete[] Buffer;
+ throw;
+ }
+ delete[] Buffer;
+ }
+ }
+
+ if (LineBuffer.empty() == false)
+ return _error->Error(_("Syntax error %s:%u: Extra junk at end of file"),FName.c_str(),CurLine);
+ return true;
+}
+ /*}}}*/
+// ReadConfigDir - Read a directory of config files /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool ReadConfigDir(Configuration &Conf,const string &Dir,
+ bool const &AsSectional, unsigned const &Depth)
+{
+ vector<string> const List = GetListOfFilesInDir(Dir, "conf", true, true);
+
+ // Read the files
+ for (vector<string>::const_iterator I = List.begin(); I != List.end(); ++I)
+ if (ReadConfigFile(Conf,*I,AsSectional,Depth) == false)
+ return false;
+ return true;
+}
+ /*}}}*/
+// MatchAgainstConfig Constructor /*{{{*/
+Configuration::MatchAgainstConfig::MatchAgainstConfig(char const * Config)
+{
+ std::vector<std::string> const strings = _config->FindVector(Config);
+ for (std::vector<std::string>::const_iterator s = strings.begin();
+ s != strings.end(); ++s)
+ {
+ regex_t *p = new regex_t;
+ if (regcomp(p, s->c_str(), REG_EXTENDED | REG_ICASE | REG_NOSUB) == 0)
+ patterns.push_back(p);
+ else
+ {
+ regfree(p);
+ delete p;
+ _error->Warning("Invalid regular expression '%s' in configuration "
+ "option '%s' will be ignored.",
+ s->c_str(), Config);
+ continue;
+ }
+ }
+ if (strings.empty() == true)
+ patterns.push_back(NULL);
+}
+ /*}}}*/
+// MatchAgainstConfig Destructor /*{{{*/
+Configuration::MatchAgainstConfig::~MatchAgainstConfig()
+{
+ clearPatterns();
+}
+void Configuration::MatchAgainstConfig::clearPatterns()
+{
+ for(std::vector<regex_t *>::const_iterator p = patterns.begin();
+ p != patterns.end(); ++p)
+ {
+ if (*p == NULL) continue;
+ regfree(*p);
+ delete *p;
+ }
+ patterns.clear();
+}
+ /*}}}*/
+// MatchAgainstConfig::Match - returns true if a pattern matches /*{{{*/
+bool Configuration::MatchAgainstConfig::Match(char const * str) const
+{
+ for(std::vector<regex_t *>::const_iterator p = patterns.begin();
+ p != patterns.end(); ++p)
+ if (*p != NULL && regexec(*p, str, 0, 0, 0) == 0)
+ return true;
+
+ return false;
+}
+ /*}}}*/
diff --git a/apt-pkg/contrib/configuration.h b/apt-pkg/contrib/configuration.h
new file mode 100644
index 000000000..97a01e4cf
--- /dev/null
+++ b/apt-pkg/contrib/configuration.h
@@ -0,0 +1,156 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: configuration.h,v 1.16 2002/11/11 06:55:50 doogie Exp $
+/* ######################################################################
+
+ Configuration Class
+
+ This class provides a configuration file and command line parser
+ for a tree-oriented configuration environment. All runtime configuration
+ is stored in here.
+
+ Each configuration name is given as a fully scoped string such as
+ Foo::Bar
+ And has associated with it a text string. The Configuration class only
+ provides storage and lookup for this tree, other classes provide
+ configuration file formats (and parsers/emitters if needed).
+
+ Most things can get by quite happily with,
+ cout << _config->Find("Foo::Bar") << endl;
+
+ A special extension, support for ordered lists is provided by using the
+ special syntax, "block::list::" the trailing :: designates the
+ item as a list. To access the list you must use the tree function on
+ "block::list".
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_CONFIGURATION_H
+#define PKGLIB_CONFIGURATION_H
+
+#include <regex.h>
+
+#include <string>
+#include <vector>
+#include <iostream>
+
+#include <apt-pkg/macros.h>
+
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+#endif
+
+class Configuration
+{
+ public:
+
+ struct Item
+ {
+ std::string Value;
+ std::string Tag;
+ Item *Parent;
+ Item *Child;
+ Item *Next;
+
+ std::string FullTag(const Item *Stop = 0) const;
+
+ Item() : Parent(0), Child(0), Next(0) {};
+ };
+
+ private:
+
+ Item *Root;
+ bool ToFree;
+
+ Item *Lookup(Item *Head,const char *S,unsigned long const &Len,bool const &Create);
+ Item *Lookup(const char *Name,const bool &Create);
+ inline const Item *Lookup(const char *Name) const
+ {
+ return ((Configuration *)this)->Lookup(Name,false);
+ }
+
+ public:
+
+ std::string Find(const char *Name,const char *Default = 0) const;
+ std::string Find(std::string const &Name,const char *Default = 0) const {return Find(Name.c_str(),Default);};
+ std::string Find(std::string const &Name, std::string const &Default) const {return Find(Name.c_str(),Default.c_str());};
+ std::string FindFile(const char *Name,const char *Default = 0) const;
+ std::string FindDir(const char *Name,const char *Default = 0) const;
+ /** return a list of child options
+ *
+ * Options like Acquire::Languages are handled as lists which
+ * can be overridden and have a default. For the later two a comma
+ * separated list of values is supported.
+ *
+ * \param Name of the parent node
+ * \param Default list of values separated by commas */
+ std::vector<std::string> FindVector(const char *Name, std::string const &Default = "", bool const Keys = false) const;
+ std::vector<std::string> FindVector(std::string const &Name, std::string const &Default = "", bool const Keys = false) const { return FindVector(Name.c_str(), Default, Keys); };
+
+ int FindI(const char *Name,int const &Default = 0) const;
+ int FindI(std::string const &Name,int const &Default = 0) const {return FindI(Name.c_str(),Default);};
+ bool FindB(const char *Name,bool const &Default = false) const;
+ bool FindB(std::string const &Name,bool const &Default = false) const {return FindB(Name.c_str(),Default);};
+ std::string FindAny(const char *Name,const char *Default = 0) const;
+
+ inline void Set(const std::string &Name,const std::string &Value) {Set(Name.c_str(),Value);};
+ void CndSet(const char *Name,const std::string &Value);
+ void CndSet(const char *Name,const int Value);
+ void Set(const char *Name,const std::string &Value);
+ void Set(const char *Name,const int &Value);
+
+ inline bool Exists(const std::string &Name) const {return Exists(Name.c_str());};
+ bool Exists(const char *Name) const;
+ bool ExistsAny(const char *Name) const;
+
+ void MoveSubTree(char const * const OldRoot, char const * const NewRoot);
+
+ // clear a whole tree
+ void Clear(const std::string &Name);
+ void Clear();
+
+ // remove a certain value from a list (e.g. the list of "APT::Keep-Fds")
+ void Clear(std::string const &List, std::string const &Value);
+ void Clear(std::string const &List, int const &Value);
+
+ inline const Item *Tree(const char *Name) const {return Lookup(Name);};
+
+ inline void Dump() { Dump(std::clog); };
+ void Dump(std::ostream& str);
+ void Dump(std::ostream& str, char const * const root,
+ char const * const format, bool const emptyValue);
+
+ Configuration(const Item *Root);
+ Configuration();
+ ~Configuration();
+
+ /** \brief match a string against a configurable list of patterns */
+ class MatchAgainstConfig
+ {
+ std::vector<regex_t *> patterns;
+ APT_HIDDEN void clearPatterns();
+
+ public:
+ MatchAgainstConfig(char const * Config);
+ virtual ~MatchAgainstConfig();
+
+ /** \brief Returns \b true for a string matching one of the patterns */
+ bool Match(char const * str) const;
+ bool Match(std::string const &str) const { return Match(str.c_str()); };
+
+ /** \brief returns if the matcher setup was successful */
+ bool wasConstructedSuccessfully() const { return patterns.empty() == false; }
+ };
+};
+
+extern Configuration *_config;
+
+bool ReadConfigFile(Configuration &Conf,const std::string &FName,
+ bool const &AsSectional = false,
+ unsigned const &Depth = 0);
+
+bool ReadConfigDir(Configuration &Conf,const std::string &Dir,
+ bool const &AsSectional = false,
+ unsigned const &Depth = 0);
+
+#endif
diff --git a/apt-pkg/contrib/crc-16.cc b/apt-pkg/contrib/crc-16.cc
new file mode 100644
index 000000000..250d7664a
--- /dev/null
+++ b/apt-pkg/contrib/crc-16.cc
@@ -0,0 +1,78 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: crc-16.cc,v 1.1 1999/05/23 22:55:54 jgg Exp $
+/* ######################################################################
+
+ CRC16 - Compute a 16bit crc very quickly
+
+ This was ripped out of the linux 2.2 kernel source (irda/crc.c) and
+ is credited to ppp.c by Michael Callahan <callahan@maths.ox.ac.uk> and
+ Al Longyear <longyear@netcom.com>
+
+ Modified by Jason Gunthorpe <jgg@debian.org> to fit the local coding
+ style, this code is believed to be in the Public Domain.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/crc-16.h>
+ /*}}}*/
+
+/*
+ * This mysterious table is just the CRC of each possible byte. It can be
+ * computed using the standard bit-at-a-time methods. The polynomial can
+ * be seen in entry 128, 0x8408. This corresponds to x^0 + x^5 + x^12.
+ * Add the implicit x^16, and you have the standard CRC-CCITT.
+ */
+static unsigned short const crc16_table[256] =
+{
+ 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
+ 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
+ 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
+ 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
+ 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
+ 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
+ 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
+ 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
+ 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
+ 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
+ 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
+ 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
+ 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
+ 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
+ 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
+ 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
+ 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
+ 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
+ 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
+ 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
+ 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
+ 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
+ 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
+ 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
+ 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
+ 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
+ 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
+ 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
+ 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
+ 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
+ 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
+ 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
+};
+
+/* Recompute the FCS with one more character appended. */
+#define CalcFCS(fcs, c) (((fcs) >> 8) ^ crc16_table[((fcs) ^ (c)) & 0xff])
+unsigned short AddCRC16Byte(unsigned short fcs, unsigned char byte)
+{
+ return CalcFCS(fcs, byte);
+}
+unsigned short AddCRC16(unsigned short fcs, void const *Buf,
+ unsigned long long len)
+{
+ unsigned char const *buf = (unsigned char const *)Buf;
+ while (len--)
+ fcs = CalcFCS(fcs, *buf++);
+ return fcs;
+}
diff --git a/apt-pkg/contrib/crc-16.h b/apt-pkg/contrib/crc-16.h
new file mode 100644
index 000000000..6cc3556c6
--- /dev/null
+++ b/apt-pkg/contrib/crc-16.h
@@ -0,0 +1,20 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: crc-16.h,v 1.1 1999/05/23 22:55:54 jgg Exp $
+/* ######################################################################
+
+ CRC16 - Compute a 16bit crc very quickly
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef APTPKG_CRC16_H
+#define APTPKG_CRC16_H
+
+#include <apt-pkg/macros.h>
+
+#define INIT_FCS 0xffff
+unsigned short AddCRC16Byte(unsigned short fcs, unsigned char byte) APT_CONST;
+unsigned short AddCRC16(unsigned short fcs, void const *buf,
+ unsigned long long len) APT_PURE;
+
+#endif
diff --git a/apt-pkg/contrib/error.cc b/apt-pkg/contrib/error.cc
new file mode 100644
index 000000000..c06ea8364
--- /dev/null
+++ b/apt-pkg/contrib/error.cc
@@ -0,0 +1,265 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Global Error Class - Global error mechanism
+
+ We use a simple STL vector to store each error record. A PendingFlag
+ is kept which indicates when the vector contains a Sever error.
+
+ This source is placed in the Public Domain, do with it what you will
+ It was originally written by Jason Gunthorpe.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/error.h>
+
+#include <stdarg.h>
+#include <stddef.h>
+#include <list>
+#include <iostream>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string>
+#include <cstring>
+#include <algorithm>
+
+ /*}}}*/
+
+// Global Error Object /*{{{*/
+/* If the implementation supports posix threads then the accessor function
+ is compiled to be thread safe otherwise a non-safe version is used. A
+ Per-Thread error object is maintained in much the same manner as libc
+ manages errno */
+#if defined(_POSIX_THREADS) && defined(HAVE_PTHREAD)
+ #include <pthread.h>
+
+ static pthread_key_t ErrorKey;
+ static void ErrorDestroy(void *Obj) {delete (GlobalError *)Obj;};
+ static void KeyAlloc() {pthread_key_create(&ErrorKey,ErrorDestroy);};
+
+ GlobalError *_GetErrorObj() {
+ static pthread_once_t Once = PTHREAD_ONCE_INIT;
+ pthread_once(&Once,KeyAlloc);
+
+ void *Res = pthread_getspecific(ErrorKey);
+ if (Res == 0)
+ pthread_setspecific(ErrorKey,Res = new GlobalError);
+ return (GlobalError *)Res;
+ }
+#else
+ GlobalError *_GetErrorObj() {
+ static GlobalError *Obj = new GlobalError;
+ return Obj;
+ }
+#endif
+ /*}}}*/
+// GlobalError::GlobalError - Constructor /*{{{*/
+GlobalError::GlobalError() : PendingFlag(false) {}
+ /*}}}*/
+// GlobalError::FatalE, Errno, WarningE, NoticeE and DebugE - Add to the list/*{{{*/
+#define GEMessage(NAME, TYPE) \
+bool GlobalError::NAME (const char *Function, const char *Description,...) { \
+ va_list args; \
+ size_t msgSize = 400; \
+ int const errsv = errno; \
+ bool retry; \
+ do { \
+ va_start(args,Description); \
+ retry = InsertErrno(TYPE, Function, Description, args, errsv, msgSize); \
+ va_end(args); \
+ } while (retry); \
+ return false; \
+}
+GEMessage(FatalE, FATAL)
+GEMessage(Errno, ERROR)
+GEMessage(WarningE, WARNING)
+GEMessage(NoticeE, NOTICE)
+GEMessage(DebugE, DEBUG)
+#undef GEMessage
+ /*}}}*/
+// GlobalError::InsertErrno - Get part of the errortype string from errno/*{{{*/
+bool GlobalError::InsertErrno(MsgType const &type, const char *Function,
+ const char *Description,...) {
+ va_list args;
+ size_t msgSize = 400;
+ int const errsv = errno;
+ bool retry;
+ do {
+ va_start(args,Description);
+ retry = InsertErrno(type, Function, Description, args, errsv, msgSize);
+ va_end(args);
+ } while (retry);
+ return false;
+}
+ /*}}}*/
+// GlobalError::InsertErrno - formats an error message with the errno /*{{{*/
+bool GlobalError::InsertErrno(MsgType type, const char* Function,
+ const char* Description, va_list &args,
+ int const errsv, size_t &msgSize) {
+ char* S = (char*) malloc(msgSize);
+ int const n = snprintf(S, msgSize, "%s - %s (%i: %s)", Description,
+ Function, errsv, strerror(errsv));
+ if (n > -1 && ((unsigned int) n) < msgSize);
+ else {
+ if (n > -1)
+ msgSize = n + 1;
+ else
+ msgSize *= 2;
+ free(S);
+ return true;
+ }
+
+ bool const geins = Insert(type, S, args, msgSize);
+ free(S);
+ return geins;
+}
+ /*}}}*/
+// GlobalError::Fatal, Error, Warning, Notice and Debug - Add to the list/*{{{*/
+#define GEMessage(NAME, TYPE) \
+bool GlobalError::NAME (const char *Description,...) { \
+ va_list args; \
+ size_t msgSize = 400; \
+ bool retry; \
+ do { \
+ va_start(args,Description); \
+ retry = Insert(TYPE, Description, args, msgSize); \
+ va_end(args); \
+ } while (retry); \
+ return false; \
+}
+GEMessage(Fatal, FATAL)
+GEMessage(Error, ERROR)
+GEMessage(Warning, WARNING)
+GEMessage(Notice, NOTICE)
+GEMessage(Debug, DEBUG)
+#undef GEMessage
+ /*}}}*/
+// GlobalError::Insert - Add a errotype message to the list /*{{{*/
+bool GlobalError::Insert(MsgType const &type, const char *Description,...)
+{
+ va_list args;
+ size_t msgSize = 400;
+ bool retry;
+ do {
+ va_start(args,Description);
+ retry = Insert(type, Description, args, msgSize);
+ va_end(args);
+ } while (retry);
+ return false;
+}
+ /*}}}*/
+// GlobalError::Insert - Insert a new item at the end /*{{{*/
+bool GlobalError::Insert(MsgType type, const char* Description,
+ va_list &args, size_t &msgSize) {
+ char* S = (char*) malloc(msgSize);
+ int const n = vsnprintf(S, msgSize, Description, args);
+ if (n > -1 && ((unsigned int) n) < msgSize);
+ else {
+ if (n > -1)
+ msgSize = n + 1;
+ else
+ msgSize *= 2;
+ free(S);
+ return true;
+ }
+
+ Item const m(S, type);
+ Messages.push_back(m);
+
+ if (type == ERROR || type == FATAL)
+ PendingFlag = true;
+
+ if (type == FATAL || type == DEBUG)
+ std::clog << m << std::endl;
+
+ free(S);
+ return false;
+}
+ /*}}}*/
+// GlobalError::PopMessage - Pulls a single message out /*{{{*/
+bool GlobalError::PopMessage(std::string &Text) {
+ if (Messages.empty() == true)
+ return false;
+
+ Item const msg = Messages.front();
+ Messages.pop_front();
+
+ bool const Ret = (msg.Type == ERROR || msg.Type == FATAL);
+ Text = msg.Text;
+ if (PendingFlag == false || Ret == false)
+ return Ret;
+
+ // check if another error message is pending
+ for (std::list<Item>::const_iterator m = Messages.begin();
+ m != Messages.end(); ++m)
+ if (m->Type == ERROR || m->Type == FATAL)
+ return Ret;
+
+ PendingFlag = false;
+ return Ret;
+}
+ /*}}}*/
+// GlobalError::DumpErrors - Dump all of the errors/warns to cerr /*{{{*/
+void GlobalError::DumpErrors(std::ostream &out, MsgType const &threshold,
+ bool const &mergeStack) {
+ if (mergeStack == true)
+ for (std::list<MsgStack>::const_reverse_iterator s = Stacks.rbegin();
+ s != Stacks.rend(); ++s)
+ std::copy(s->Messages.begin(), s->Messages.end(), std::front_inserter(Messages));
+
+ std::for_each(Messages.begin(), Messages.end(), [&threshold, &out](Item const &m) {
+ if (m.Type >= threshold)
+ out << m << std::endl;
+ });
+
+ Discard();
+}
+ /*}}}*/
+// GlobalError::Discard - Discard /*{{{*/
+void GlobalError::Discard() {
+ Messages.clear();
+ PendingFlag = false;
+}
+ /*}}}*/
+// GlobalError::empty - does our error list include anything? /*{{{*/
+bool GlobalError::empty(MsgType const &threshold) const {
+ if (PendingFlag == true)
+ return false;
+
+ if (Messages.empty() == true)
+ return true;
+
+ return std::find_if(Messages.begin(), Messages.end(), [&threshold](Item const &m) {
+ return m.Type >= threshold;
+ }) == Messages.end();
+}
+ /*}}}*/
+// GlobalError::PushToStack /*{{{*/
+void GlobalError::PushToStack() {
+ Stacks.emplace_back(Messages, PendingFlag);
+ Discard();
+}
+ /*}}}*/
+// GlobalError::RevertToStack /*{{{*/
+void GlobalError::RevertToStack() {
+ Discard();
+ MsgStack pack = Stacks.back();
+ Messages = pack.Messages;
+ PendingFlag = pack.PendingFlag;
+ Stacks.pop_back();
+}
+ /*}}}*/
+// GlobalError::MergeWithStack /*{{{*/
+void GlobalError::MergeWithStack() {
+ MsgStack pack = Stacks.back();
+ Messages.splice(Messages.begin(), pack.Messages);
+ PendingFlag = PendingFlag || pack.PendingFlag;
+ Stacks.pop_back();
+}
+ /*}}}*/
diff --git a/apt-pkg/contrib/error.h b/apt-pkg/contrib/error.h
new file mode 100644
index 000000000..b01a5fc1b
--- /dev/null
+++ b/apt-pkg/contrib/error.h
@@ -0,0 +1,366 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: error.h,v 1.8 2001/05/07 05:06:52 jgg Exp $
+/* ######################################################################
+
+ Global Error Class - Global error mechanism
+
+ This class has a single global instance. When a function needs to
+ generate an error condition, such as a read error, it calls a member
+ in this class to add the error to a stack of errors.
+
+ By using a stack the problem with a scheme like errno is removed and
+ it allows a very detailed account of what went wrong to be transmitted
+ to the UI for display. (Errno has problems because each function sets
+ errno to 0 if it didn't have an error thus eraseing erno in the process
+ of cleanup)
+
+ Several predefined error generators are provided to handle common
+ things like errno. The general idea is that all methods return a bool.
+ If the bool is true then things are OK, if it is false then things
+ should start being undone and the stack should unwind under program
+ control.
+
+ A Warning should not force the return of false. Things did not fail, but
+ they might have had unexpected problems. Errors are stored in a FIFO
+ so Pop will return the first item..
+
+ I have some thoughts about extending this into a more general UI<->
+ Engine interface, ie allowing the Engine to say 'The disk is full' in
+ a dialog that says 'Panic' and 'Retry'.. The error generator functions
+ like errno, Warning and Error return false always so this is normal:
+ if (open(..))
+ return _error->Errno(..);
+
+ This source is placed in the Public Domain, do with it what you will
+ It was originally written by Jason Gunthorpe.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_ERROR_H
+#define PKGLIB_ERROR_H
+
+#include <apt-pkg/macros.h>
+
+#include <iostream>
+#include <list>
+#include <string>
+
+#include <stddef.h>
+#include <stdarg.h>
+
+class GlobalError /*{{{*/
+{
+public: /*{{{*/
+ /** \brief a message can have one of following severity */
+ enum MsgType {
+ /** \brief Message will be printed instantly as it is likely that
+ this error will lead to a complete crash */
+ FATAL = 40,
+ /** \brief An error does hinder the correct execution and should be corrected */
+ ERROR = 30,
+ /** \brief indicates problem that can lead to errors later on */
+ WARNING = 20,
+ /** \brief deprecation warnings, old fallback behavior, … */
+ NOTICE = 10,
+ /** \brief for developers only in areas it is hard to print something directly */
+ DEBUG = 0
+ };
+
+ /** \brief add a fatal error message with errno to the list
+ *
+ * \param Function name of the function generating the error
+ * \param Description format string for the error message
+ *
+ * \return \b false
+ */
+ bool FatalE(const char *Function,const char *Description,...) APT_PRINTF(3) APT_COLD;
+
+ /** \brief add an Error message with errno to the list
+ *
+ * \param Function name of the function generating the error
+ * \param Description format string for the error message
+ *
+ * \return \b false
+ */
+ bool Errno(const char *Function,const char *Description,...) APT_PRINTF(3) APT_COLD;
+
+ /** \brief add a warning message with errno to the list
+ *
+ * A warning should be considered less severe than an error and
+ * may be ignored by the client.
+ *
+ * \param Function Name of the function generates the warning.
+ * \param Description Format string for the warning message.
+ *
+ * \return \b false
+ */
+ bool WarningE(const char *Function,const char *Description,...) APT_PRINTF(3) APT_COLD;
+
+ /** \brief add a notice message with errno to the list
+ *
+ * \param Function name of the function generating the error
+ * \param Description format string for the error message
+ *
+ * \return \b false
+ */
+ bool NoticeE(const char *Function,const char *Description,...) APT_PRINTF(3) APT_COLD;
+
+ /** \brief add a debug message with errno to the list
+ *
+ * \param Function name of the function generating the error
+ * \param Description format string for the error message
+ *
+ * \return \b false
+ */
+ bool DebugE(const char *Function,const char *Description,...) APT_PRINTF(3) APT_COLD;
+
+ /** \brief adds an errno message with the given type
+ *
+ * \param type of the error message
+ * \param Function which failed
+ * \param Description of the error
+ */
+ bool InsertErrno(MsgType const &type, const char* Function,
+ const char* Description,...) APT_PRINTF(4) APT_COLD;
+
+ /** \brief adds an errno message with the given type
+ *
+ * args needs to be initialized with va_start and terminated
+ * with va_end by the caller. msgSize is also an out-parameter
+ * in case the msgSize was not enough to store the complete message.
+ *
+ * \param type of the error message
+ * \param Function which failed
+ * \param Description is the format string for args
+ * \param args list from a printf-like function
+ * \param errsv is the errno the error is for
+ * \param msgSize is the size of the char[] used to store message
+ * \return true if the message was added, false if not - the caller
+ * should call this method again in that case
+ */
+ bool InsertErrno(MsgType type, const char* Function,
+ const char* Description, va_list &args,
+ int const errsv, size_t &msgSize) APT_COLD;
+
+ /** \brief add an fatal error message to the list
+ *
+ * Most of the stuff we consider as "error" is also "fatal" for
+ * the user as the application will not have the expected result,
+ * but a fatal message here means that it gets printed directly
+ * to stderr in addition to adding it to the list as the error
+ * leads sometimes to crashes and a maybe duplicated message
+ * is better than "Segfault" as the only displayed text
+ *
+ * \param Description Format string for the fatal error message.
+ *
+ * \return \b false
+ */
+ bool Fatal(const char *Description,...) APT_PRINTF(2) APT_COLD;
+
+ /** \brief add an Error message to the list
+ *
+ * \param Description Format string for the error message.
+ *
+ * \return \b false
+ */
+ bool Error(const char *Description,...) APT_PRINTF(2) APT_COLD;
+
+ /** \brief add a warning message to the list
+ *
+ * A warning should be considered less severe than an error and
+ * may be ignored by the client.
+ *
+ * \param Description Format string for the message
+ *
+ * \return \b false
+ */
+ bool Warning(const char *Description,...) APT_PRINTF(2) APT_COLD;
+
+ /** \brief add a notice message to the list
+ *
+ * A notice should be considered less severe than an error or a
+ * warning and can be ignored by the client without further problems
+ * for some times, but he should consider fixing the problem.
+ * This error type can be used for e.g. deprecation warnings of options.
+ *
+ * \param Description Format string for the message
+ *
+ * \return \b false
+ */
+ bool Notice(const char *Description,...) APT_PRINTF(2) APT_COLD;
+
+ /** \brief add a debug message to the list
+ *
+ * \param Description Format string for the message
+ *
+ * \return \b false
+ */
+ bool Debug(const char *Description,...) APT_PRINTF(2) APT_COLD;
+
+ /** \brief adds an error message with the given type
+ *
+ * \param type of the error message
+ * \param Description of the error
+ */
+ bool Insert(MsgType const &type, const char* Description,...) APT_PRINTF(3) APT_COLD;
+
+ /** \brief adds an error message with the given type
+ *
+ * args needs to be initialized with va_start and terminated
+ * with va_end by the caller. msgSize is also an out-parameter
+ * in case the msgSize was not enough to store the complete message.
+ *
+ * \param type of the error message
+ * \param Description is the format string for args
+ * \param args list from a printf-like function
+ * \param msgSize is the size of the char[] used to store message
+ * \return true if the message was added, false if not - the caller
+ * should call this method again in that case
+ */
+ bool Insert(MsgType type, const char* Description,
+ va_list &args, size_t &msgSize) APT_COLD;
+
+ /** \brief is an error in the list?
+ *
+ * \return \b true if an error is included in the list, \b false otherwise
+ */
+ inline bool PendingError() const APT_PURE {return PendingFlag;};
+
+ /** \brief is the list empty?
+ *
+ * Can be used to check if the current stack level doesn't include
+ * anything equal or more severe than a given threshold, defaulting
+ * to warning level for historic reasons.
+ *
+ * \param threshold minimum level considered
+ *
+ * \return \b true if the list is empty, \b false otherwise
+ */
+ bool empty(MsgType const &threshold = WARNING) const APT_PURE;
+
+ /** \brief returns and removes the first (or last) message in the list
+ *
+ * \param[out] Text message of the first/last item
+ *
+ * \return \b true if the message was an error, \b false otherwise
+ */
+ bool PopMessage(std::string &Text);
+
+ /** \brief clears the list of messages */
+ void Discard();
+
+ /** \brief outputs the list of messages to the given stream
+ *
+ * Note that all messages are discarded, even undisplayed ones.
+ *
+ * \param[out] out output stream to write the messages in
+ * \param threshold minimum level considered
+ * \param mergeStack if true recursively dumps the entire stack
+ */
+ void DumpErrors(std::ostream &out, MsgType const &threshold = WARNING,
+ bool const &mergeStack = true);
+
+ /** \brief dumps the list of messages to std::cerr
+ *
+ * Note that all messages are discarded, also the notices
+ * displayed or not.
+ *
+ * \param threshold minimum level printed
+ */
+ void inline DumpErrors(MsgType const &threshold) {
+ DumpErrors(std::cerr, threshold);
+ }
+
+ // mvo: we do this instead of using a default parameter in the
+ // previous declaration to avoid a (subtle) API break for
+ // e.g. sigc++ and mem_fun0
+ /** \brief dumps the messages of type WARNING or higher to std::cerr
+ *
+ * Note that all messages are discarded, displayed or not.
+ *
+ */
+ void inline DumpErrors() {
+ DumpErrors(WARNING);
+ }
+
+ /** \brief put the current Messages into the stack
+ *
+ * All "old" messages will be pushed into a stack to
+ * them later back, but for now the Message query will be
+ * empty and performs as no messages were present before.
+ *
+ * The stack can be as deep as you want - all stack operations
+ * will only operate on the last element in the stack.
+ */
+ void PushToStack();
+
+ /** \brief throw away all current messages */
+ void RevertToStack();
+
+ /** \brief merge current and stack together */
+ void MergeWithStack();
+
+ /** \brief return the deep of the stack */
+ size_t StackCount() const APT_PURE {
+ return Stacks.size();
+ }
+
+ GlobalError();
+ /*}}}*/
+private: /*{{{*/
+ struct Item {
+ std::string Text;
+ MsgType Type;
+
+ Item(char const *Text, MsgType const &Type) :
+ Text(Text), Type(Type) {};
+
+ APT_HIDDEN friend std::ostream& operator<< (std::ostream &out, Item i) {
+ switch(i.Type) {
+ case FATAL:
+ case ERROR: out << 'E'; break;
+ case WARNING: out << 'W'; break;
+ case NOTICE: out << 'N'; break;
+ case DEBUG: out << 'D'; break;
+ }
+ out << ": ";
+ std::string::size_type line_start = 0;
+ std::string::size_type line_end;
+ while ((line_end = i.Text.find_first_of("\n\r", line_start)) != std::string::npos) {
+ if (line_start != 0)
+ out << std::endl << " ";
+ out << i.Text.substr(line_start, line_end - line_start);
+ line_start = i.Text.find_first_not_of("\n\r", line_end + 1);
+ if (line_start == std::string::npos)
+ break;
+ }
+ if (line_start == 0)
+ out << i.Text;
+ else if (line_start != std::string::npos)
+ out << std::endl << " " << i.Text.substr(line_start);
+ return out;
+ }
+ };
+
+ std::list<Item> Messages;
+ bool PendingFlag;
+
+ struct MsgStack {
+ std::list<Item> Messages;
+ bool const PendingFlag;
+
+ MsgStack(std::list<Item> const &Messages, bool const &Pending) :
+ Messages(Messages), PendingFlag(Pending) {};
+ };
+
+ std::list<MsgStack> Stacks;
+ /*}}}*/
+};
+ /*}}}*/
+
+// The 'extra-ansi' syntax is used to help with collisions.
+GlobalError *_GetErrorObj();
+#define _error _GetErrorObj()
+
+#endif
diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc
new file mode 100644
index 000000000..e4c40fb4f
--- /dev/null
+++ b/apt-pkg/contrib/fileutl.cc
@@ -0,0 +1,3087 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ File Utilities
+
+ CopyFile - Buffered copy of a single file
+ GetLock - dpkg compatible lock file manipulation (fcntl)
+
+ Most of this source is placed in the Public Domain, do with it what
+ you will
+ It was originally written by Jason Gunthorpe <jgg@debian.org>.
+ FileFd gzip support added by Martin Pitt <martin.pitt@canonical.com>
+
+ The exception is RunScripts() it is under the GPLv2
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/sptr.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/macros.h>
+
+#include <ctype.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <sys/select.h>
+#include <time.h>
+#include <string>
+#include <vector>
+#include <cstdlib>
+#include <cstring>
+#include <cstdio>
+#include <iostream>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/wait.h>
+#include <dirent.h>
+#include <signal.h>
+#include <errno.h>
+#include <glob.h>
+#include <pwd.h>
+#include <grp.h>
+
+#include <set>
+#include <algorithm>
+#include <memory>
+
+#ifdef HAVE_ZLIB
+ #include <zlib.h>
+#endif
+#ifdef HAVE_BZ2
+ #include <bzlib.h>
+#endif
+#ifdef HAVE_LZMA
+ #include <lzma.h>
+#endif
+#ifdef HAVE_LZ4
+ #include <lz4frame.h>
+#endif
+#include <endian.h>
+#include <stdint.h>
+
+#if __gnu_linux__
+#include <sys/prctl.h>
+#endif
+
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+/* Should be a multiple of the common page size (4096) */
+static constexpr unsigned long long APT_BUFFER_SIZE = 64 * 1024;
+
+// RunScripts - Run a set of scripts from a configuration subtree /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool RunScripts(const char *Cnf)
+{
+ Configuration::Item const *Opts = _config->Tree(Cnf);
+ if (Opts == 0 || Opts->Child == 0)
+ return true;
+ Opts = Opts->Child;
+
+ // Fork for running the system calls
+ pid_t Child = ExecFork();
+
+ // This is the child
+ if (Child == 0)
+ {
+ if (_config->FindDir("DPkg::Chroot-Directory","/") != "/")
+ {
+ std::cerr << "Chrooting into "
+ << _config->FindDir("DPkg::Chroot-Directory")
+ << std::endl;
+ if (chroot(_config->FindDir("DPkg::Chroot-Directory","/").c_str()) != 0)
+ _exit(100);
+ }
+
+ if (chdir("/tmp/") != 0)
+ _exit(100);
+
+ unsigned int Count = 1;
+ for (; Opts != 0; Opts = Opts->Next, Count++)
+ {
+ if (Opts->Value.empty() == true)
+ continue;
+
+ if(_config->FindB("Debug::RunScripts", false) == true)
+ std::clog << "Running external script: '"
+ << Opts->Value << "'" << std::endl;
+
+ if (system(Opts->Value.c_str()) != 0)
+ _exit(100+Count);
+ }
+ _exit(0);
+ }
+
+ // Wait for the child
+ int Status = 0;
+ while (waitpid(Child,&Status,0) != Child)
+ {
+ if (errno == EINTR)
+ continue;
+ return _error->Errno("waitpid","Couldn't wait for subprocess");
+ }
+
+ // Restore sig int/quit
+ signal(SIGQUIT,SIG_DFL);
+ signal(SIGINT,SIG_DFL);
+
+ // Check for an error code.
+ if (WIFEXITED(Status) == 0 || WEXITSTATUS(Status) != 0)
+ {
+ unsigned int Count = WEXITSTATUS(Status);
+ if (Count > 100)
+ {
+ Count -= 100;
+ for (; Opts != 0 && Count != 1; Opts = Opts->Next, Count--);
+ _error->Error("Problem executing scripts %s '%s'",Cnf,Opts->Value.c_str());
+ }
+
+ return _error->Error("Sub-process returned an error code");
+ }
+
+ return true;
+}
+ /*}}}*/
+
+// CopyFile - Buffered copy of a file /*{{{*/
+// ---------------------------------------------------------------------
+/* The caller is expected to set things so that failure causes erasure */
+bool CopyFile(FileFd &From,FileFd &To)
+{
+ if (From.IsOpen() == false || To.IsOpen() == false ||
+ From.Failed() == true || To.Failed() == true)
+ return false;
+
+ // Buffered copy between fds
+ constexpr size_t BufSize = APT_BUFFER_SIZE;
+ std::unique_ptr<unsigned char[]> Buf(new unsigned char[BufSize]);
+ unsigned long long ToRead = 0;
+ do {
+ if (From.Read(Buf.get(),BufSize, &ToRead) == false ||
+ To.Write(Buf.get(),ToRead) == false)
+ return false;
+ } while (ToRead != 0);
+
+ return true;
+}
+ /*}}}*/
+bool RemoveFile(char const * const Function, std::string const &FileName)/*{{{*/
+{
+ if (FileName == "/dev/null")
+ return true;
+ errno = 0;
+ if (unlink(FileName.c_str()) != 0)
+ {
+ if (errno == ENOENT)
+ return true;
+
+ return _error->WarningE(Function,_("Problem unlinking the file %s"), FileName.c_str());
+ }
+ return true;
+}
+ /*}}}*/
+// GetLock - Gets a lock file /*{{{*/
+// ---------------------------------------------------------------------
+/* This will create an empty file of the given name and lock it. Once this
+ is done all other calls to GetLock in any other process will fail with
+ -1. The return result is the fd of the file, the call should call
+ close at some time. */
+int GetLock(string File,bool Errors)
+{
+ // GetLock() is used in aptitude on directories with public-write access
+ // Use O_NOFOLLOW here to prevent symlink traversal attacks
+ int FD = open(File.c_str(),O_RDWR | O_CREAT | O_NOFOLLOW,0640);
+ if (FD < 0)
+ {
+ // Read only .. can't have locking problems there.
+ if (errno == EROFS)
+ {
+ _error->Warning(_("Not using locking for read only lock file %s"),File.c_str());
+ return dup(0); // Need something for the caller to close
+ }
+
+ if (Errors == true)
+ _error->Errno("open",_("Could not open lock file %s"),File.c_str());
+
+ // Feh.. We do this to distinguish the lock vs open case..
+ errno = EPERM;
+ return -1;
+ }
+ SetCloseExec(FD,true);
+
+ // Acquire a write lock
+ struct flock fl;
+ fl.l_type = F_WRLCK;
+ fl.l_whence = SEEK_SET;
+ fl.l_start = 0;
+ fl.l_len = 0;
+ if (fcntl(FD,F_SETLK,&fl) == -1)
+ {
+ // always close to not leak resources
+ int Tmp = errno;
+ close(FD);
+ errno = Tmp;
+
+ if (errno == ENOLCK)
+ {
+ _error->Warning(_("Not using locking for nfs mounted lock file %s"),File.c_str());
+ return dup(0); // Need something for the caller to close
+ }
+
+ if (Errors == true)
+ _error->Errno("open",_("Could not get lock %s"),File.c_str());
+
+ return -1;
+ }
+
+ return FD;
+}
+ /*}}}*/
+// FileExists - Check if a file exists /*{{{*/
+// ---------------------------------------------------------------------
+/* Beware: Directories are also files! */
+bool FileExists(string File)
+{
+ struct stat Buf;
+ if (stat(File.c_str(),&Buf) != 0)
+ return false;
+ return true;
+}
+ /*}}}*/
+// RealFileExists - Check if a file exists and if it is really a file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool RealFileExists(string File)
+{
+ struct stat Buf;
+ if (stat(File.c_str(),&Buf) != 0)
+ return false;
+ return ((Buf.st_mode & S_IFREG) != 0);
+}
+ /*}}}*/
+// DirectoryExists - Check if a directory exists and is really one /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool DirectoryExists(string const &Path)
+{
+ struct stat Buf;
+ if (stat(Path.c_str(),&Buf) != 0)
+ return false;
+ return ((Buf.st_mode & S_IFDIR) != 0);
+}
+ /*}}}*/
+// CreateDirectory - poor man's mkdir -p guarded by a parent directory /*{{{*/
+// ---------------------------------------------------------------------
+/* This method will create all directories needed for path in good old
+ mkdir -p style but refuses to do this if Parent is not a prefix of
+ this Path. Example: /var/cache/ and /var/cache/apt/archives are given,
+ so it will create apt/archives if /var/cache exists - on the other
+ hand if the parent is /var/lib the creation will fail as this path
+ is not a parent of the path to be generated. */
+bool CreateDirectory(string const &Parent, string const &Path)
+{
+ if (Parent.empty() == true || Path.empty() == true)
+ return false;
+
+ if (DirectoryExists(Path) == true)
+ return true;
+
+ if (DirectoryExists(Parent) == false)
+ return false;
+
+ // we are not going to create directories "into the blue"
+ if (Path.compare(0, Parent.length(), Parent) != 0)
+ return false;
+
+ vector<string> const dirs = VectorizeString(Path.substr(Parent.size()), '/');
+ string progress = Parent;
+ for (vector<string>::const_iterator d = dirs.begin(); d != dirs.end(); ++d)
+ {
+ if (d->empty() == true)
+ continue;
+
+ progress.append("/").append(*d);
+ if (DirectoryExists(progress) == true)
+ continue;
+
+ if (mkdir(progress.c_str(), 0755) != 0)
+ return false;
+ }
+ return true;
+}
+ /*}}}*/
+// CreateAPTDirectoryIfNeeded - ensure that the given directory exists /*{{{*/
+// ---------------------------------------------------------------------
+/* a small wrapper around CreateDirectory to check if it exists and to
+ remove the trailing "/apt/" from the parent directory if needed */
+bool CreateAPTDirectoryIfNeeded(string const &Parent, string const &Path)
+{
+ if (DirectoryExists(Path) == true)
+ return true;
+
+ size_t const len = Parent.size();
+ if (len > 5 && Parent.find("/apt/", len - 6, 5) == len - 5)
+ {
+ if (CreateDirectory(Parent.substr(0,len-5), Path) == true)
+ return true;
+ }
+ else if (CreateDirectory(Parent, Path) == true)
+ return true;
+
+ return false;
+}
+ /*}}}*/
+// GetListOfFilesInDir - returns a vector of files in the given dir /*{{{*/
+// ---------------------------------------------------------------------
+/* If an extension is given only files with this extension are included
+ in the returned vector, otherwise every "normal" file is included. */
+std::vector<string> GetListOfFilesInDir(string const &Dir, string const &Ext,
+ bool const &SortList, bool const &AllowNoExt)
+{
+ std::vector<string> ext;
+ ext.reserve(2);
+ if (Ext.empty() == false)
+ ext.push_back(Ext);
+ if (AllowNoExt == true && ext.empty() == false)
+ ext.push_back("");
+ return GetListOfFilesInDir(Dir, ext, SortList);
+}
+std::vector<string> GetListOfFilesInDir(string const &Dir, std::vector<string> const &Ext,
+ bool const &SortList)
+{
+ // Attention debuggers: need to be set with the environment config file!
+ bool const Debug = _config->FindB("Debug::GetListOfFilesInDir", false);
+ if (Debug == true)
+ {
+ std::clog << "Accept in " << Dir << " only files with the following " << Ext.size() << " extensions:" << std::endl;
+ if (Ext.empty() == true)
+ std::clog << "\tNO extension" << std::endl;
+ else
+ for (std::vector<string>::const_iterator e = Ext.begin();
+ e != Ext.end(); ++e)
+ std::clog << '\t' << (e->empty() == true ? "NO" : *e) << " extension" << std::endl;
+ }
+
+ std::vector<string> List;
+
+ if (DirectoryExists(Dir) == false)
+ {
+ _error->Error(_("List of files can't be created as '%s' is not a directory"), Dir.c_str());
+ return List;
+ }
+
+ Configuration::MatchAgainstConfig SilentIgnore("Dir::Ignore-Files-Silently");
+ DIR *D = opendir(Dir.c_str());
+ if (D == 0)
+ {
+ _error->Errno("opendir",_("Unable to read %s"),Dir.c_str());
+ return List;
+ }
+
+ for (struct dirent *Ent = readdir(D); Ent != 0; Ent = readdir(D))
+ {
+ // skip "hidden" files
+ if (Ent->d_name[0] == '.')
+ continue;
+
+ // Make sure it is a file and not something else
+ string const File = flCombine(Dir,Ent->d_name);
+#ifdef _DIRENT_HAVE_D_TYPE
+ if (Ent->d_type != DT_REG)
+#endif
+ {
+ if (RealFileExists(File) == false)
+ {
+ // do not show ignoration warnings for directories
+ if (
+#ifdef _DIRENT_HAVE_D_TYPE
+ Ent->d_type == DT_DIR ||
+#endif
+ DirectoryExists(File) == true)
+ continue;
+ if (SilentIgnore.Match(Ent->d_name) == false)
+ _error->Notice(_("Ignoring '%s' in directory '%s' as it is not a regular file"), Ent->d_name, Dir.c_str());
+ continue;
+ }
+ }
+
+ // check for accepted extension:
+ // no extension given -> periods are bad as hell!
+ // extensions given -> "" extension allows no extension
+ if (Ext.empty() == false)
+ {
+ string d_ext = flExtension(Ent->d_name);
+ if (d_ext == Ent->d_name) // no extension
+ {
+ if (std::find(Ext.begin(), Ext.end(), "") == Ext.end())
+ {
+ if (Debug == true)
+ std::clog << "Bad file: " << Ent->d_name << " → no extension" << std::endl;
+ if (SilentIgnore.Match(Ent->d_name) == false)
+ _error->Notice(_("Ignoring file '%s' in directory '%s' as it has no filename extension"), Ent->d_name, Dir.c_str());
+ continue;
+ }
+ }
+ else if (std::find(Ext.begin(), Ext.end(), d_ext) == Ext.end())
+ {
+ if (Debug == true)
+ std::clog << "Bad file: " << Ent->d_name << " → bad extension »" << flExtension(Ent->d_name) << "«" << std::endl;
+ if (SilentIgnore.Match(Ent->d_name) == false)
+ _error->Notice(_("Ignoring file '%s' in directory '%s' as it has an invalid filename extension"), Ent->d_name, Dir.c_str());
+ continue;
+ }
+ }
+
+ // Skip bad filenames ala run-parts
+ const char *C = Ent->d_name;
+ for (; *C != 0; ++C)
+ if (isalpha(*C) == 0 && isdigit(*C) == 0
+ && *C != '_' && *C != '-' && *C != ':') {
+ // no required extension -> dot is a bad character
+ if (*C == '.' && Ext.empty() == false)
+ continue;
+ break;
+ }
+
+ // we don't reach the end of the name -> bad character included
+ if (*C != 0)
+ {
+ if (Debug == true)
+ std::clog << "Bad file: " << Ent->d_name << " → bad character »"
+ << *C << "« in filename (period allowed: " << (Ext.empty() ? "no" : "yes") << ")" << std::endl;
+ continue;
+ }
+
+ // skip filenames which end with a period. These are never valid
+ if (*(C - 1) == '.')
+ {
+ if (Debug == true)
+ std::clog << "Bad file: " << Ent->d_name << " → Period as last character" << std::endl;
+ continue;
+ }
+
+ if (Debug == true)
+ std::clog << "Accept file: " << Ent->d_name << " in " << Dir << std::endl;
+ List.push_back(File);
+ }
+ closedir(D);
+
+ if (SortList == true)
+ std::sort(List.begin(),List.end());
+ return List;
+}
+std::vector<string> GetListOfFilesInDir(string const &Dir, bool SortList)
+{
+ bool const Debug = _config->FindB("Debug::GetListOfFilesInDir", false);
+ if (Debug == true)
+ std::clog << "Accept in " << Dir << " all regular files" << std::endl;
+
+ std::vector<string> List;
+
+ if (DirectoryExists(Dir) == false)
+ {
+ _error->Error(_("List of files can't be created as '%s' is not a directory"), Dir.c_str());
+ return List;
+ }
+
+ DIR *D = opendir(Dir.c_str());
+ if (D == 0)
+ {
+ _error->Errno("opendir",_("Unable to read %s"),Dir.c_str());
+ return List;
+ }
+
+ for (struct dirent *Ent = readdir(D); Ent != 0; Ent = readdir(D))
+ {
+ // skip "hidden" files
+ if (Ent->d_name[0] == '.')
+ continue;
+
+ // Make sure it is a file and not something else
+ string const File = flCombine(Dir,Ent->d_name);
+#ifdef _DIRENT_HAVE_D_TYPE
+ if (Ent->d_type != DT_REG)
+#endif
+ {
+ if (RealFileExists(File) == false)
+ {
+ if (Debug == true)
+ std::clog << "Bad file: " << Ent->d_name << " → it is not a real file" << std::endl;
+ continue;
+ }
+ }
+
+ // Skip bad filenames ala run-parts
+ const char *C = Ent->d_name;
+ for (; *C != 0; ++C)
+ if (isalpha(*C) == 0 && isdigit(*C) == 0
+ && *C != '_' && *C != '-' && *C != '.')
+ break;
+
+ // we don't reach the end of the name -> bad character included
+ if (*C != 0)
+ {
+ if (Debug == true)
+ std::clog << "Bad file: " << Ent->d_name << " → bad character »" << *C << "« in filename" << std::endl;
+ continue;
+ }
+
+ // skip filenames which end with a period. These are never valid
+ if (*(C - 1) == '.')
+ {
+ if (Debug == true)
+ std::clog << "Bad file: " << Ent->d_name << " → Period as last character" << std::endl;
+ continue;
+ }
+
+ if (Debug == true)
+ std::clog << "Accept file: " << Ent->d_name << " in " << Dir << std::endl;
+ List.push_back(File);
+ }
+ closedir(D);
+
+ if (SortList == true)
+ std::sort(List.begin(),List.end());
+ return List;
+}
+ /*}}}*/
+// SafeGetCWD - This is a safer getcwd that returns a dynamic string /*{{{*/
+// ---------------------------------------------------------------------
+/* We return / on failure. */
+string SafeGetCWD()
+{
+ // Stash the current dir.
+ char S[300];
+ S[0] = 0;
+ if (getcwd(S,sizeof(S)-2) == 0)
+ return "/";
+ unsigned int Len = strlen(S);
+ S[Len] = '/';
+ S[Len+1] = 0;
+ return S;
+}
+ /*}}}*/
+// GetModificationTime - Get the mtime of the given file or -1 on error /*{{{*/
+// ---------------------------------------------------------------------
+/* We return / on failure. */
+time_t GetModificationTime(string const &Path)
+{
+ struct stat St;
+ if (stat(Path.c_str(), &St) < 0)
+ return -1;
+ return St.st_mtime;
+}
+ /*}}}*/
+// flNotDir - Strip the directory from the filename /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+string flNotDir(string File)
+{
+ string::size_type Res = File.rfind('/');
+ if (Res == string::npos)
+ return File;
+ Res++;
+ return string(File,Res,Res - File.length());
+}
+ /*}}}*/
+// flNotFile - Strip the file from the directory name /*{{{*/
+// ---------------------------------------------------------------------
+/* Result ends in a / */
+string flNotFile(string File)
+{
+ string::size_type Res = File.rfind('/');
+ if (Res == string::npos)
+ return "./";
+ Res++;
+ return string(File,0,Res);
+}
+ /*}}}*/
+// flExtension - Return the extension for the file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+string flExtension(string File)
+{
+ string::size_type Res = File.rfind('.');
+ if (Res == string::npos)
+ return File;
+ Res++;
+ return string(File,Res,Res - File.length());
+}
+ /*}}}*/
+// flNoLink - If file is a symlink then deref it /*{{{*/
+// ---------------------------------------------------------------------
+/* If the name is not a link then the returned path is the input. */
+string flNoLink(string File)
+{
+ struct stat St;
+ if (lstat(File.c_str(),&St) != 0 || S_ISLNK(St.st_mode) == 0)
+ return File;
+ if (stat(File.c_str(),&St) != 0)
+ return File;
+
+ /* Loop resolving the link. There is no need to limit the number of
+ loops because the stat call above ensures that the symlink is not
+ circular */
+ char Buffer[1024];
+ string NFile = File;
+ while (1)
+ {
+ // Read the link
+ ssize_t Res;
+ if ((Res = readlink(NFile.c_str(),Buffer,sizeof(Buffer))) <= 0 ||
+ (size_t)Res >= sizeof(Buffer))
+ return File;
+
+ // Append or replace the previous path
+ Buffer[Res] = 0;
+ if (Buffer[0] == '/')
+ NFile = Buffer;
+ else
+ NFile = flNotFile(NFile) + Buffer;
+
+ // See if we are done
+ if (lstat(NFile.c_str(),&St) != 0)
+ return File;
+ if (S_ISLNK(St.st_mode) == 0)
+ return NFile;
+ }
+}
+ /*}}}*/
+// flCombine - Combine a file and a directory /*{{{*/
+// ---------------------------------------------------------------------
+/* If the file is an absolute path then it is just returned, otherwise
+ the directory is pre-pended to it. */
+string flCombine(string Dir,string File)
+{
+ if (File.empty() == true)
+ return string();
+
+ if (File[0] == '/' || Dir.empty() == true)
+ return File;
+ if (File.length() >= 2 && File[0] == '.' && File[1] == '/')
+ return File;
+ if (Dir[Dir.length()-1] == '/')
+ return Dir + File;
+ return Dir + '/' + File;
+}
+ /*}}}*/
+// flAbsPath - Return the absolute path of the filename /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+string flAbsPath(string File)
+{
+ char *p = realpath(File.c_str(), NULL);
+ if (p == NULL)
+ {
+ _error->Errno("realpath", "flAbsPath on %s failed", File.c_str());
+ return "";
+ }
+ std::string AbsPath(p);
+ free(p);
+ return AbsPath;
+}
+ /*}}}*/
+std::string flNormalize(std::string file) /*{{{*/
+{
+ if (file.empty())
+ return file;
+ // do some normalisation by removing // and /./ from the path
+ size_t found = string::npos;
+ while ((found = file.find("/./")) != string::npos)
+ file.replace(found, 3, "/");
+ while ((found = file.find("//")) != string::npos)
+ file.replace(found, 2, "/");
+
+ if (APT::String::Startswith(file, "/dev/null"))
+ {
+ file.erase(strlen("/dev/null"));
+ return file;
+ }
+ return file;
+}
+ /*}}}*/
+// SetCloseExec - Set the close on exec flag /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void SetCloseExec(int Fd,bool Close)
+{
+ if (fcntl(Fd,F_SETFD,(Close == false)?0:FD_CLOEXEC) != 0)
+ {
+ cerr << "FATAL -> Could not set close on exec " << strerror(errno) << endl;
+ exit(100);
+ }
+}
+ /*}}}*/
+// SetNonBlock - Set the nonblocking flag /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void SetNonBlock(int Fd,bool Block)
+{
+ int Flags = fcntl(Fd,F_GETFL) & (~O_NONBLOCK);
+ if (fcntl(Fd,F_SETFL,Flags | ((Block == false)?0:O_NONBLOCK)) != 0)
+ {
+ cerr << "FATAL -> Could not set non-blocking flag " << strerror(errno) << endl;
+ exit(100);
+ }
+}
+ /*}}}*/
+// WaitFd - Wait for a FD to become readable /*{{{*/
+// ---------------------------------------------------------------------
+/* This waits for a FD to become readable using select. It is useful for
+ applications making use of non-blocking sockets. The timeout is
+ in seconds. */
+bool WaitFd(int Fd,bool write,unsigned long timeout)
+{
+ fd_set Set;
+ struct timeval tv;
+ FD_ZERO(&Set);
+ FD_SET(Fd,&Set);
+ tv.tv_sec = timeout;
+ tv.tv_usec = 0;
+ if (write == true)
+ {
+ int Res;
+ do
+ {
+ Res = select(Fd+1,0,&Set,0,(timeout != 0?&tv:0));
+ }
+ while (Res < 0 && errno == EINTR);
+
+ if (Res <= 0)
+ return false;
+ }
+ else
+ {
+ int Res;
+ do
+ {
+ Res = select(Fd+1,&Set,0,0,(timeout != 0?&tv:0));
+ }
+ while (Res < 0 && errno == EINTR);
+
+ if (Res <= 0)
+ return false;
+ }
+
+ return true;
+}
+ /*}}}*/
+// MergeKeepFdsFromConfiguration - Merge APT::Keep-Fds configuration /*{{{*/
+// ---------------------------------------------------------------------
+/* This is used to merge the APT::Keep-Fds with the provided KeepFDs
+ * set.
+ */
+void MergeKeepFdsFromConfiguration(std::set<int> &KeepFDs)
+{
+ Configuration::Item const *Opts = _config->Tree("APT::Keep-Fds");
+ if (Opts != 0 && Opts->Child != 0)
+ {
+ Opts = Opts->Child;
+ for (; Opts != 0; Opts = Opts->Next)
+ {
+ if (Opts->Value.empty() == true)
+ continue;
+ int fd = atoi(Opts->Value.c_str());
+ KeepFDs.insert(fd);
+ }
+ }
+}
+ /*}}}*/
+// ExecFork - Magical fork that sanitizes the context before execing /*{{{*/
+// ---------------------------------------------------------------------
+/* This is used if you want to cleanse the environment for the forked
+ child, it fixes up the important signals and nukes all of the fds,
+ otherwise acts like normal fork. */
+pid_t ExecFork()
+{
+ set<int> KeepFDs;
+ // we need to merge the Keep-Fds as external tools like
+ // debconf-apt-progress use it
+ MergeKeepFdsFromConfiguration(KeepFDs);
+ return ExecFork(KeepFDs);
+}
+
+pid_t ExecFork(std::set<int> KeepFDs)
+{
+ // Fork off the process
+ pid_t Process = fork();
+ if (Process < 0)
+ {
+ cerr << "FATAL -> Failed to fork." << endl;
+ exit(100);
+ }
+
+ // Spawn the subprocess
+ if (Process == 0)
+ {
+ // Setup the signals
+ signal(SIGPIPE,SIG_DFL);
+ signal(SIGQUIT,SIG_DFL);
+ signal(SIGINT,SIG_DFL);
+ signal(SIGWINCH,SIG_DFL);
+ signal(SIGCONT,SIG_DFL);
+ signal(SIGTSTP,SIG_DFL);
+
+ DIR *dir = opendir("/proc/self/fd");
+ if (dir != NULL)
+ {
+ struct dirent *ent;
+ while ((ent = readdir(dir)))
+ {
+ int fd = atoi(ent->d_name);
+ // If fd > 0, it was a fd number and not . or ..
+ if (fd >= 3 && KeepFDs.find(fd) == KeepFDs.end())
+ fcntl(fd,F_SETFD,FD_CLOEXEC);
+ }
+ closedir(dir);
+ } else {
+ long ScOpenMax = sysconf(_SC_OPEN_MAX);
+ // Close all of our FDs - just in case
+ for (int K = 3; K != ScOpenMax; K++)
+ {
+ if(KeepFDs.find(K) == KeepFDs.end())
+ fcntl(K,F_SETFD,FD_CLOEXEC);
+ }
+ }
+ }
+
+ return Process;
+}
+ /*}}}*/
+// ExecWait - Fancy waitpid /*{{{*/
+// ---------------------------------------------------------------------
+/* Waits for the given sub process. If Reap is set then no errors are
+ generated. Otherwise a failed subprocess will generate a proper descriptive
+ message */
+bool ExecWait(pid_t Pid,const char *Name,bool Reap)
+{
+ if (Pid <= 1)
+ return true;
+
+ // Wait and collect the error code
+ int Status;
+ while (waitpid(Pid,&Status,0) != Pid)
+ {
+ if (errno == EINTR)
+ continue;
+
+ if (Reap == true)
+ return false;
+
+ return _error->Error(_("Waited for %s but it wasn't there"),Name);
+ }
+
+
+ // Check for an error code.
+ if (WIFEXITED(Status) == 0 || WEXITSTATUS(Status) != 0)
+ {
+ if (Reap == true)
+ return false;
+ if (WIFSIGNALED(Status) != 0)
+ {
+ if( WTERMSIG(Status) == SIGSEGV)
+ return _error->Error(_("Sub-process %s received a segmentation fault."),Name);
+ else
+ return _error->Error(_("Sub-process %s received signal %u."),Name, WTERMSIG(Status));
+ }
+
+ if (WIFEXITED(Status) != 0)
+ return _error->Error(_("Sub-process %s returned an error code (%u)"),Name,WEXITSTATUS(Status));
+
+ return _error->Error(_("Sub-process %s exited unexpectedly"),Name);
+ }
+
+ return true;
+}
+ /*}}}*/
+// StartsWithGPGClearTextSignature - Check if a file is Pgp/GPG clearsigned /*{{{*/
+bool StartsWithGPGClearTextSignature(string const &FileName)
+{
+ static const char* SIGMSG = "-----BEGIN PGP SIGNED MESSAGE-----\n";
+ char buffer[strlen(SIGMSG)+1];
+ FILE* gpg = fopen(FileName.c_str(), "r");
+ if (gpg == NULL)
+ return false;
+
+ char const * const test = fgets(buffer, sizeof(buffer), gpg);
+ fclose(gpg);
+ if (test == NULL || strcmp(buffer, SIGMSG) != 0)
+ return false;
+
+ return true;
+}
+ /*}}}*/
+// ChangeOwnerAndPermissionOfFile - set file attributes to requested values /*{{{*/
+bool ChangeOwnerAndPermissionOfFile(char const * const requester, char const * const file, char const * const user, char const * const group, mode_t const mode)
+{
+ if (strcmp(file, "/dev/null") == 0)
+ return true;
+ bool Res = true;
+ if (getuid() == 0 && strlen(user) != 0 && strlen(group) != 0) // if we aren't root, we can't chown, so don't try it
+ {
+ // ensure the file is owned by root and has good permissions
+ struct passwd const * const pw = getpwnam(user);
+ struct group const * const gr = getgrnam(group);
+ if (pw != NULL && gr != NULL && lchown(file, pw->pw_uid, gr->gr_gid) != 0)
+ Res &= _error->WarningE(requester, "chown to %s:%s of file %s failed", user, group, file);
+ }
+ struct stat Buf;
+ if (lstat(file, &Buf) != 0 || S_ISLNK(Buf.st_mode))
+ return Res;
+ if (chmod(file, mode) != 0)
+ Res &= _error->WarningE(requester, "chmod 0%o of file %s failed", mode, file);
+ return Res;
+}
+ /*}}}*/
+
+struct APT_HIDDEN simple_buffer { /*{{{*/
+ size_t buffersize_max = 0;
+ unsigned long long bufferstart = 0;
+ unsigned long long bufferend = 0;
+ char *buffer = nullptr;
+
+ simple_buffer() {
+ reset(4096);
+ }
+ ~simple_buffer() {
+ delete[] buffer;
+ }
+
+ const char *get() const { return buffer + bufferstart; }
+ char *get() { return buffer + bufferstart; }
+ const char *getend() const { return buffer + bufferend; }
+ char *getend() { return buffer + bufferend; }
+ bool empty() const { return bufferend <= bufferstart; }
+ bool full() const { return bufferend == buffersize_max; }
+ unsigned long long free() const { return buffersize_max - bufferend; }
+ unsigned long long size() const { return bufferend-bufferstart; }
+ void reset(size_t size)
+ {
+ if (size > buffersize_max) {
+ delete[] buffer;
+ buffersize_max = size;
+ buffer = new char[size];
+ }
+ reset();
+ }
+ void reset() { bufferend = bufferstart = 0; }
+ ssize_t read(void *to, unsigned long long requested_size) APT_MUSTCHECK
+ {
+ if (size() < requested_size)
+ requested_size = size();
+ memcpy(to, buffer + bufferstart, requested_size);
+ bufferstart += requested_size;
+ if (bufferstart == bufferend)
+ bufferstart = bufferend = 0;
+ return requested_size;
+ }
+ ssize_t write(const void *from, unsigned long long requested_size) APT_MUSTCHECK
+ {
+ if (free() < requested_size)
+ requested_size = free();
+ memcpy(getend(), from, requested_size);
+ bufferend += requested_size;
+ if (bufferstart == bufferend)
+ bufferstart = bufferend = 0;
+ return requested_size;
+ }
+};
+ /*}}}*/
+
+class APT_HIDDEN FileFdPrivate { /*{{{*/
+ friend class BufferedWriteFileFdPrivate;
+protected:
+ FileFd * const filefd;
+ simple_buffer buffer;
+ int compressed_fd;
+ pid_t compressor_pid;
+ bool is_pipe;
+ APT::Configuration::Compressor compressor;
+ unsigned int openmode;
+ unsigned long long seekpos;
+public:
+
+ explicit FileFdPrivate(FileFd * const pfilefd) : filefd(pfilefd),
+ compressed_fd(-1), compressor_pid(-1), is_pipe(false),
+ openmode(0), seekpos(0) {};
+ virtual APT::Configuration::Compressor get_compressor() const
+ {
+ return compressor;
+ }
+ virtual void set_compressor(APT::Configuration::Compressor const &compressor)
+ {
+ this->compressor = compressor;
+ }
+ virtual unsigned int get_openmode() const
+ {
+ return openmode;
+ }
+ virtual void set_openmode(unsigned int openmode)
+ {
+ this->openmode = openmode;
+ }
+ virtual bool get_is_pipe() const
+ {
+ return is_pipe;
+ }
+ virtual void set_is_pipe(bool is_pipe)
+ {
+ this->is_pipe = is_pipe;
+ }
+ virtual unsigned long long get_seekpos() const
+ {
+ return seekpos;
+ }
+ virtual void set_seekpos(unsigned long long seekpos)
+ {
+ this->seekpos = seekpos;
+ }
+
+ virtual bool InternalOpen(int const iFd, unsigned int const Mode) = 0;
+ ssize_t InternalRead(void * To, unsigned long long Size)
+ {
+ // Drain the buffer if needed.
+ if (buffer.empty() == false)
+ {
+ return buffer.read(To, Size);
+ }
+ return InternalUnbufferedRead(To, Size);
+ }
+ virtual ssize_t InternalUnbufferedRead(void * const To, unsigned long long const Size) = 0;
+ virtual bool InternalReadError() { return filefd->FileFdErrno("read",_("Read error")); }
+ virtual char * InternalReadLine(char * To, unsigned long long Size)
+ {
+ if (unlikely(Size == 0))
+ return nullptr;
+ // Read one byte less than buffer size to have space for trailing 0.
+ --Size;
+
+ char * const InitialTo = To;
+
+ while (Size > 0) {
+ if (buffer.empty() == true)
+ {
+ buffer.reset();
+ unsigned long long actualread = 0;
+ if (filefd->Read(buffer.getend(), buffer.free(), &actualread) == false)
+ return nullptr;
+ buffer.bufferend = actualread;
+ if (buffer.size() == 0)
+ {
+ if (To == InitialTo)
+ return nullptr;
+ break;
+ }
+ filefd->Flags &= ~FileFd::HitEof;
+ }
+
+ unsigned long long const OutputSize = std::min(Size, buffer.size());
+ char const * const newline = static_cast<char const * const>(memchr(buffer.get(), '\n', OutputSize));
+ // Read until end of line or up to Size bytes from the buffer.
+ unsigned long long actualread = buffer.read(To,
+ (newline != nullptr)
+ ? (newline - buffer.get()) + 1
+ : OutputSize);
+ To += actualread;
+ Size -= actualread;
+ if (newline != nullptr)
+ break;
+ }
+ *To = '\0';
+ return InitialTo;
+ }
+ virtual bool InternalFlush()
+ {
+ return true;
+ }
+ virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) = 0;
+ virtual bool InternalWriteError() { return filefd->FileFdErrno("write",_("Write error")); }
+ virtual bool InternalSeek(unsigned long long const To)
+ {
+ // Our poor man seeking is costly, so try to avoid it
+ unsigned long long const iseekpos = filefd->Tell();
+ if (iseekpos == To)
+ return true;
+ else if (iseekpos < To)
+ return filefd->Skip(To - iseekpos);
+
+ if ((openmode & FileFd::ReadOnly) != FileFd::ReadOnly)
+ return filefd->FileFdError("Reopen is only implemented for read-only files!");
+ InternalClose(filefd->FileName);
+ if (filefd->iFd != -1)
+ close(filefd->iFd);
+ filefd->iFd = -1;
+ if (filefd->TemporaryFileName.empty() == false)
+ filefd->iFd = open(filefd->TemporaryFileName.c_str(), O_RDONLY);
+ else if (filefd->FileName.empty() == false)
+ filefd->iFd = open(filefd->FileName.c_str(), O_RDONLY);
+ else
+ {
+ if (compressed_fd > 0)
+ if (lseek(compressed_fd, 0, SEEK_SET) != 0)
+ filefd->iFd = compressed_fd;
+ if (filefd->iFd < 0)
+ return filefd->FileFdError("Reopen is not implemented for pipes opened with FileFd::OpenDescriptor()!");
+ }
+
+ if (filefd->OpenInternDescriptor(openmode, compressor) == false)
+ return filefd->FileFdError("Seek on file %s because it couldn't be reopened", filefd->FileName.c_str());
+
+ buffer.reset();
+ set_seekpos(0);
+ if (To != 0)
+ return filefd->Skip(To);
+
+ seekpos = To;
+ return true;
+ }
+ virtual bool InternalSkip(unsigned long long Over)
+ {
+ unsigned long long constexpr buffersize = 1024;
+ char buffer[buffersize];
+ while (Over != 0)
+ {
+ unsigned long long toread = std::min(buffersize, Over);
+ if (filefd->Read(buffer, toread) == false)
+ return filefd->FileFdError("Unable to seek ahead %llu",Over);
+ Over -= toread;
+ }
+ return true;
+ }
+ virtual bool InternalTruncate(unsigned long long const)
+ {
+ return filefd->FileFdError("Truncating compressed files is not implemented (%s)", filefd->FileName.c_str());
+ }
+ virtual unsigned long long InternalTell()
+ {
+ // In theory, we could just return seekpos here always instead of
+ // seeking around, but not all users of FileFd use always Seek() and co
+ // so d->seekpos isn't always true and we can just use it as a hint if
+ // we have nothing else, but not always as an authority…
+ return seekpos - buffer.size();
+ }
+ virtual unsigned long long InternalSize()
+ {
+ unsigned long long size = 0;
+ unsigned long long const oldSeek = filefd->Tell();
+ unsigned long long constexpr ignoresize = 1024;
+ char ignore[ignoresize];
+ unsigned long long read = 0;
+ do {
+ if (filefd->Read(ignore, ignoresize, &read) == false)
+ {
+ filefd->Seek(oldSeek);
+ return 0;
+ }
+ } while(read != 0);
+ size = filefd->Tell();
+ filefd->Seek(oldSeek);
+ return size;
+ }
+ virtual bool InternalClose(std::string const &FileName) = 0;
+ virtual bool InternalStream() const { return false; }
+ virtual bool InternalAlwaysAutoClose() const { return true; }
+
+ virtual ~FileFdPrivate() {}
+};
+ /*}}}*/
+class APT_HIDDEN BufferedWriteFileFdPrivate : public FileFdPrivate { /*{{{*/
+protected:
+ FileFdPrivate *wrapped;
+ simple_buffer writebuffer;
+
+public:
+
+ explicit BufferedWriteFileFdPrivate(FileFdPrivate *Priv) :
+ FileFdPrivate(Priv->filefd), wrapped(Priv) {};
+
+ virtual APT::Configuration::Compressor get_compressor() const APT_OVERRIDE
+ {
+ return wrapped->get_compressor();
+ }
+ virtual void set_compressor(APT::Configuration::Compressor const &compressor) APT_OVERRIDE
+ {
+ return wrapped->set_compressor(compressor);
+ }
+ virtual unsigned int get_openmode() const APT_OVERRIDE
+ {
+ return wrapped->get_openmode();
+ }
+ virtual void set_openmode(unsigned int openmode) APT_OVERRIDE
+ {
+ return wrapped->set_openmode(openmode);
+ }
+ virtual bool get_is_pipe() const APT_OVERRIDE
+ {
+ return wrapped->get_is_pipe();
+ }
+ virtual void set_is_pipe(bool is_pipe) APT_OVERRIDE
+ {
+ FileFdPrivate::set_is_pipe(is_pipe);
+ wrapped->set_is_pipe(is_pipe);
+ }
+ virtual unsigned long long get_seekpos() const APT_OVERRIDE
+ {
+ return wrapped->get_seekpos();
+ }
+ virtual void set_seekpos(unsigned long long seekpos) APT_OVERRIDE
+ {
+ return wrapped->set_seekpos(seekpos);
+ }
+ virtual bool InternalOpen(int const iFd, unsigned int const Mode) APT_OVERRIDE
+ {
+ if (InternalFlush() == false)
+ return false;
+ return wrapped->InternalOpen(iFd, Mode);
+ }
+ virtual ssize_t InternalUnbufferedRead(void * const To, unsigned long long const Size) APT_OVERRIDE
+ {
+ if (InternalFlush() == false)
+ return -1;
+ return wrapped->InternalUnbufferedRead(To, Size);
+
+ }
+ virtual bool InternalReadError() APT_OVERRIDE
+ {
+ return wrapped->InternalReadError();
+ }
+ virtual char * InternalReadLine(char * To, unsigned long long Size) APT_OVERRIDE
+ {
+ if (InternalFlush() == false)
+ return nullptr;
+ return wrapped->InternalReadLine(To, Size);
+ }
+ virtual bool InternalFlush() APT_OVERRIDE
+ {
+ while (writebuffer.empty() == false) {
+ auto written = wrapped->InternalWrite(writebuffer.get(),
+ writebuffer.size());
+ // Ignore interrupted syscalls
+ if (written < 0 && errno == EINTR)
+ continue;
+ if (written < 0)
+ return wrapped->InternalWriteError();
+
+ writebuffer.bufferstart += written;
+ }
+ writebuffer.reset();
+ return wrapped->InternalFlush();
+ }
+ virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) APT_OVERRIDE
+ {
+ // Optimisation: If the buffer is empty and we have more to write than
+ // would fit in the buffer (or equal number of bytes), write directly.
+ if (writebuffer.empty() == true && Size >= writebuffer.free())
+ return wrapped->InternalWrite(From, Size);
+
+ // Write as much into the buffer as possible and then flush if needed
+ auto written = writebuffer.write(From, Size);
+
+ if (writebuffer.full() && InternalFlush() == false)
+ return -1;
+
+ return written;
+ }
+ virtual bool InternalWriteError() APT_OVERRIDE
+ {
+ return wrapped->InternalWriteError();
+ }
+ virtual bool InternalSeek(unsigned long long const To) APT_OVERRIDE
+ {
+ if (InternalFlush() == false)
+ return false;
+ return wrapped->InternalSeek(To);
+ }
+ virtual bool InternalSkip(unsigned long long Over) APT_OVERRIDE
+ {
+ if (InternalFlush() == false)
+ return false;
+ return wrapped->InternalSkip(Over);
+ }
+ virtual bool InternalTruncate(unsigned long long const Size) APT_OVERRIDE
+ {
+ if (InternalFlush() == false)
+ return false;
+ return wrapped->InternalTruncate(Size);
+ }
+ virtual unsigned long long InternalTell() APT_OVERRIDE
+ {
+ if (InternalFlush() == false)
+ return -1;
+ return wrapped->InternalTell();
+ }
+ virtual unsigned long long InternalSize() APT_OVERRIDE
+ {
+ if (InternalFlush() == false)
+ return -1;
+ return wrapped->InternalSize();
+ }
+ virtual bool InternalClose(std::string const &FileName) APT_OVERRIDE
+ {
+ return wrapped->InternalClose(FileName);
+ }
+ virtual bool InternalAlwaysAutoClose() const APT_OVERRIDE
+ {
+ return wrapped->InternalAlwaysAutoClose();
+ }
+ virtual ~BufferedWriteFileFdPrivate()
+ {
+ delete wrapped;
+ }
+};
+ /*}}}*/
+class APT_HIDDEN GzipFileFdPrivate: public FileFdPrivate { /*{{{*/
+#ifdef HAVE_ZLIB
+public:
+ gzFile gz;
+ virtual bool InternalOpen(int const iFd, unsigned int const Mode) APT_OVERRIDE
+ {
+ if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite)
+ gz = gzdopen(iFd, "r+");
+ else if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly)
+ gz = gzdopen(iFd, "w");
+ else
+ gz = gzdopen(iFd, "r");
+ filefd->Flags |= FileFd::Compressed;
+ return gz != nullptr;
+ }
+ virtual ssize_t InternalUnbufferedRead(void * const To, unsigned long long const Size) APT_OVERRIDE
+ {
+ return gzread(gz, To, Size);
+ }
+ virtual bool InternalReadError() APT_OVERRIDE
+ {
+ int err;
+ char const * const errmsg = gzerror(gz, &err);
+ if (err != Z_ERRNO)
+ return filefd->FileFdError("gzread: %s (%d: %s)", _("Read error"), err, errmsg);
+ return FileFdPrivate::InternalReadError();
+ }
+ virtual char * InternalReadLine(char * To, unsigned long long Size) APT_OVERRIDE
+ {
+ return gzgets(gz, To, Size);
+ }
+ virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) APT_OVERRIDE
+ {
+ return gzwrite(gz,From,Size);
+ }
+ virtual bool InternalWriteError() APT_OVERRIDE
+ {
+ int err;
+ char const * const errmsg = gzerror(gz, &err);
+ if (err != Z_ERRNO)
+ return filefd->FileFdError("gzwrite: %s (%d: %s)", _("Write error"), err, errmsg);
+ return FileFdPrivate::InternalWriteError();
+ }
+ virtual bool InternalSeek(unsigned long long const To) APT_OVERRIDE
+ {
+ off_t const res = gzseek(gz, To, SEEK_SET);
+ if (res != (off_t)To)
+ return filefd->FileFdError("Unable to seek to %llu", To);
+ seekpos = To;
+ buffer.reset();
+ return true;
+ }
+ virtual bool InternalSkip(unsigned long long Over) APT_OVERRIDE
+ {
+ if (Over >= buffer.size())
+ {
+ Over -= buffer.size();
+ buffer.reset();
+ }
+ else
+ {
+ buffer.bufferstart += Over;
+ return true;
+ }
+ if (Over == 0)
+ return true;
+ off_t const res = gzseek(gz, Over, SEEK_CUR);
+ if (res < 0)
+ return filefd->FileFdError("Unable to seek ahead %llu",Over);
+ seekpos = res;
+ return true;
+ }
+ virtual unsigned long long InternalTell() APT_OVERRIDE
+ {
+ return gztell(gz) - buffer.size();
+ }
+ virtual unsigned long long InternalSize() APT_OVERRIDE
+ {
+ unsigned long long filesize = FileFdPrivate::InternalSize();
+ // only check gzsize if we are actually a gzip file, just checking for
+ // "gz" is not sufficient as uncompressed files could be opened with
+ // gzopen in "direct" mode as well
+ if (filesize == 0 || gzdirect(gz))
+ return filesize;
+
+ off_t const oldPos = lseek(filefd->iFd, 0, SEEK_CUR);
+ /* unfortunately zlib.h doesn't provide a gzsize(), so we have to do
+ * this ourselves; the original (uncompressed) file size is the last 32
+ * bits of the file */
+ // FIXME: Size for gz-files is limited by 32bit… no largefile support
+ if (lseek(filefd->iFd, -4, SEEK_END) < 0)
+ {
+ filefd->FileFdErrno("lseek","Unable to seek to end of gzipped file");
+ return 0;
+ }
+ uint32_t size = 0;
+ if (read(filefd->iFd, &size, 4) != 4)
+ {
+ filefd->FileFdErrno("read","Unable to read original size of gzipped file");
+ return 0;
+ }
+ size = le32toh(size);
+
+ if (lseek(filefd->iFd, oldPos, SEEK_SET) < 0)
+ {
+ filefd->FileFdErrno("lseek","Unable to seek in gzipped file");
+ return 0;
+ }
+ return size;
+ }
+ virtual bool InternalClose(std::string const &FileName) APT_OVERRIDE
+ {
+ if (gz == nullptr)
+ return true;
+ int const e = gzclose(gz);
+ gz = nullptr;
+ // gzdclose() on empty files always fails with "buffer error" here, ignore that
+ if (e != 0 && e != Z_BUF_ERROR)
+ return _error->Errno("close",_("Problem closing the gzip file %s"), FileName.c_str());
+ return true;
+ }
+
+ explicit GzipFileFdPrivate(FileFd * const filefd) : FileFdPrivate(filefd), gz(nullptr) {}
+ virtual ~GzipFileFdPrivate() { InternalClose(""); }
+#endif
+};
+ /*}}}*/
+class APT_HIDDEN Bz2FileFdPrivate: public FileFdPrivate { /*{{{*/
+#ifdef HAVE_BZ2
+ BZFILE* bz2;
+public:
+ virtual bool InternalOpen(int const iFd, unsigned int const Mode) APT_OVERRIDE
+ {
+ if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite)
+ bz2 = BZ2_bzdopen(iFd, "r+");
+ else if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly)
+ bz2 = BZ2_bzdopen(iFd, "w");
+ else
+ bz2 = BZ2_bzdopen(iFd, "r");
+ filefd->Flags |= FileFd::Compressed;
+ return bz2 != nullptr;
+ }
+ virtual ssize_t InternalUnbufferedRead(void * const To, unsigned long long const Size) APT_OVERRIDE
+ {
+ return BZ2_bzread(bz2, To, Size);
+ }
+ virtual bool InternalReadError() APT_OVERRIDE
+ {
+ int err;
+ char const * const errmsg = BZ2_bzerror(bz2, &err);
+ if (err != BZ_IO_ERROR)
+ return filefd->FileFdError("BZ2_bzread: %s %s (%d: %s)", filefd->FileName.c_str(), _("Read error"), err, errmsg);
+ return FileFdPrivate::InternalReadError();
+ }
+ virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) APT_OVERRIDE
+ {
+ return BZ2_bzwrite(bz2, (void*)From, Size);
+ }
+ virtual bool InternalWriteError() APT_OVERRIDE
+ {
+ int err;
+ char const * const errmsg = BZ2_bzerror(bz2, &err);
+ if (err != BZ_IO_ERROR)
+ return filefd->FileFdError("BZ2_bzwrite: %s %s (%d: %s)", filefd->FileName.c_str(), _("Write error"), err, errmsg);
+ return FileFdPrivate::InternalWriteError();
+ }
+ virtual bool InternalStream() const APT_OVERRIDE { return true; }
+ virtual bool InternalClose(std::string const &) APT_OVERRIDE
+ {
+ if (bz2 == nullptr)
+ return true;
+ BZ2_bzclose(bz2);
+ bz2 = nullptr;
+ return true;
+ }
+
+ explicit Bz2FileFdPrivate(FileFd * const filefd) : FileFdPrivate(filefd), bz2(nullptr) {}
+ virtual ~Bz2FileFdPrivate() { InternalClose(""); }
+#endif
+};
+ /*}}}*/
+class APT_HIDDEN Lz4FileFdPrivate: public FileFdPrivate { /*{{{*/
+ static constexpr unsigned long long LZ4_HEADER_SIZE = 19;
+ static constexpr unsigned long long LZ4_FOOTER_SIZE = 4;
+#ifdef HAVE_LZ4
+ LZ4F_decompressionContext_t dctx;
+ LZ4F_compressionContext_t cctx;
+ LZ4F_errorCode_t res;
+ FileFd backend;
+ simple_buffer lz4_buffer;
+ // Count of bytes that the decompressor expects to read next, or buffer size.
+ size_t next_to_load = APT_BUFFER_SIZE;
+public:
+ virtual bool InternalOpen(int const iFd, unsigned int const Mode) APT_OVERRIDE
+ {
+ if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite)
+ return _error->Error("lz4 only supports write or read mode");
+
+ if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly) {
+ res = LZ4F_createCompressionContext(&cctx, LZ4F_VERSION);
+ lz4_buffer.reset(LZ4F_compressBound(APT_BUFFER_SIZE, nullptr)
+ + LZ4_HEADER_SIZE + LZ4_FOOTER_SIZE);
+ } else {
+ res = LZ4F_createDecompressionContext(&dctx, LZ4F_VERSION);
+ lz4_buffer.reset(APT_BUFFER_SIZE);
+ }
+
+ filefd->Flags |= FileFd::Compressed;
+
+ if (LZ4F_isError(res))
+ return false;
+
+ unsigned int flags = (Mode & (FileFd::WriteOnly|FileFd::ReadOnly));
+ if (backend.OpenDescriptor(iFd, flags, FileFd::None, true) == false)
+ return false;
+
+ // Write the file header
+ if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly)
+ {
+ res = LZ4F_compressBegin(cctx, lz4_buffer.buffer, lz4_buffer.buffersize_max, nullptr);
+ if (LZ4F_isError(res) || backend.Write(lz4_buffer.buffer, res) == false)
+ return false;
+ }
+
+ return true;
+ }
+ virtual ssize_t InternalUnbufferedRead(void * const To, unsigned long long const Size) APT_OVERRIDE
+ {
+ /* Keep reading as long as the compressor still wants to read */
+ while (next_to_load) {
+ // Fill compressed buffer;
+ if (lz4_buffer.empty()) {
+ unsigned long long read;
+ /* Reset - if LZ4 decompressor wants to read more, allocate more */
+ lz4_buffer.reset(next_to_load);
+ if (backend.Read(lz4_buffer.getend(), lz4_buffer.free(), &read) == false)
+ return -1;
+ lz4_buffer.bufferend += read;
+
+ /* Expected EOF */
+ if (read == 0) {
+ res = -1;
+ return filefd->FileFdError("LZ4F: %s %s",
+ filefd->FileName.c_str(),
+ _("Unexpected end of file")), -1;
+ }
+ }
+ // Drain compressed buffer as far as possible.
+ size_t in = lz4_buffer.size();
+ size_t out = Size;
+
+ res = LZ4F_decompress(dctx, To, &out, lz4_buffer.get(), &in, nullptr);
+ if (LZ4F_isError(res))
+ return -1;
+
+ next_to_load = res;
+ lz4_buffer.bufferstart += in;
+
+ if (out != 0)
+ return out;
+ }
+
+ return 0;
+ }
+ virtual bool InternalReadError() APT_OVERRIDE
+ {
+ char const * const errmsg = LZ4F_getErrorName(res);
+
+ return filefd->FileFdError("LZ4F: %s %s (%zu: %s)", filefd->FileName.c_str(), _("Read error"), res, errmsg);
+ }
+ virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) APT_OVERRIDE
+ {
+ unsigned long long const towrite = std::min(APT_BUFFER_SIZE, Size);
+
+ res = LZ4F_compressUpdate(cctx,
+ lz4_buffer.buffer, lz4_buffer.buffersize_max,
+ From, towrite, nullptr);
+
+ if (LZ4F_isError(res) || backend.Write(lz4_buffer.buffer, res) == false)
+ return -1;
+
+ return towrite;
+ }
+ virtual bool InternalWriteError() APT_OVERRIDE
+ {
+ char const * const errmsg = LZ4F_getErrorName(res);
+
+ return filefd->FileFdError("LZ4F: %s %s (%zu: %s)", filefd->FileName.c_str(), _("Write error"), res, errmsg);
+ }
+ virtual bool InternalStream() const APT_OVERRIDE { return true; }
+
+ virtual bool InternalFlush() APT_OVERRIDE
+ {
+ return backend.Flush();
+ }
+
+ virtual bool InternalClose(std::string const &) APT_OVERRIDE
+ {
+ /* Reset variables */
+ res = 0;
+ next_to_load = APT_BUFFER_SIZE;
+
+ if (cctx != nullptr)
+ {
+ if (filefd->Failed() == false)
+ {
+ res = LZ4F_compressEnd(cctx, lz4_buffer.buffer, lz4_buffer.buffersize_max, nullptr);
+ if (LZ4F_isError(res) || backend.Write(lz4_buffer.buffer, res) == false)
+ return false;
+ if (!backend.Flush())
+ return false;
+ }
+ if (!backend.Close())
+ return false;
+
+ res = LZ4F_freeCompressionContext(cctx);
+ cctx = nullptr;
+ }
+
+ if (dctx != nullptr)
+ {
+ res = LZ4F_freeDecompressionContext(dctx);
+ dctx = nullptr;
+ }
+ if (backend.IsOpen())
+ {
+ backend.Close();
+ filefd->iFd = -1;
+ }
+
+ return LZ4F_isError(res) == false;
+ }
+
+ explicit Lz4FileFdPrivate(FileFd * const filefd) : FileFdPrivate(filefd), dctx(nullptr), cctx(nullptr) {}
+ virtual ~Lz4FileFdPrivate() {
+ InternalClose("");
+ }
+#endif
+};
+ /*}}}*/
+class APT_HIDDEN LzmaFileFdPrivate: public FileFdPrivate { /*{{{*/
+#ifdef HAVE_LZMA
+ struct LZMAFILE {
+ FILE* file;
+ FileFd * const filefd;
+ uint8_t buffer[4096];
+ lzma_stream stream;
+ lzma_ret err;
+ bool eof;
+ bool compressing;
+
+ LZMAFILE(FileFd * const fd) : file(nullptr), filefd(fd), eof(false), compressing(false) { buffer[0] = '\0'; }
+ ~LZMAFILE()
+ {
+ if (compressing == true && filefd->Failed() == false)
+ {
+ size_t constexpr buffersize = sizeof(buffer)/sizeof(buffer[0]);
+ while(true)
+ {
+ stream.avail_out = buffersize;
+ stream.next_out = buffer;
+ err = lzma_code(&stream, LZMA_FINISH);
+ if (err != LZMA_OK && err != LZMA_STREAM_END)
+ {
+ _error->Error("~LZMAFILE: Compress finalisation failed");
+ break;
+ }
+ size_t const n = buffersize - stream.avail_out;
+ if (n && fwrite(buffer, 1, n, file) != n)
+ {
+ _error->Errno("~LZMAFILE",_("Write error"));
+ break;
+ }
+ if (err == LZMA_STREAM_END)
+ break;
+ }
+ }
+ lzma_end(&stream);
+ fclose(file);
+ }
+ };
+ LZMAFILE* lzma;
+ static uint32_t findXZlevel(std::vector<std::string> const &Args)
+ {
+ for (auto a = Args.rbegin(); a != Args.rend(); ++a)
+ if (a->empty() == false && (*a)[0] == '-' && (*a)[1] != '-')
+ {
+ auto const number = a->find_last_of("0123456789");
+ if (number == std::string::npos)
+ continue;
+ auto const extreme = a->find("e", number);
+ uint32_t level = (extreme != std::string::npos) ? LZMA_PRESET_EXTREME : 0;
+ switch ((*a)[number])
+ {
+ case '0': return level | 0;
+ case '1': return level | 1;
+ case '2': return level | 2;
+ case '3': return level | 3;
+ case '4': return level | 4;
+ case '5': return level | 5;
+ case '6': return level | 6;
+ case '7': return level | 7;
+ case '8': return level | 8;
+ case '9': return level | 9;
+ }
+ }
+ return 6;
+ }
+public:
+ virtual bool InternalOpen(int const iFd, unsigned int const Mode) APT_OVERRIDE
+ {
+ if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite)
+ return filefd->FileFdError("ReadWrite mode is not supported for lzma/xz files %s", filefd->FileName.c_str());
+
+ if (lzma == nullptr)
+ lzma = new LzmaFileFdPrivate::LZMAFILE(filefd);
+ if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly)
+ lzma->file = fdopen(iFd, "w");
+ else
+ lzma->file = fdopen(iFd, "r");
+ filefd->Flags |= FileFd::Compressed;
+ if (lzma->file == nullptr)
+ return false;
+
+ lzma_stream tmp_stream = LZMA_STREAM_INIT;
+ lzma->stream = tmp_stream;
+
+ if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly)
+ {
+ uint32_t const xzlevel = findXZlevel(compressor.CompressArgs);
+ if (compressor.Name == "xz")
+ {
+ if (lzma_easy_encoder(&lzma->stream, xzlevel, LZMA_CHECK_CRC64) != LZMA_OK)
+ return false;
+ }
+ else
+ {
+ lzma_options_lzma options;
+ lzma_lzma_preset(&options, xzlevel);
+ if (lzma_alone_encoder(&lzma->stream, &options) != LZMA_OK)
+ return false;
+ }
+ lzma->compressing = true;
+ }
+ else
+ {
+ uint64_t const memlimit = UINT64_MAX;
+ if (compressor.Name == "xz")
+ {
+ if (lzma_auto_decoder(&lzma->stream, memlimit, 0) != LZMA_OK)
+ return false;
+ }
+ else
+ {
+ if (lzma_alone_decoder(&lzma->stream, memlimit) != LZMA_OK)
+ return false;
+ }
+ lzma->compressing = false;
+ }
+ return true;
+ }
+ virtual ssize_t InternalUnbufferedRead(void * const To, unsigned long long const Size) APT_OVERRIDE
+ {
+ ssize_t Res;
+ if (lzma->eof == true)
+ return 0;
+
+ lzma->stream.next_out = (uint8_t *) To;
+ lzma->stream.avail_out = Size;
+ if (lzma->stream.avail_in == 0)
+ {
+ lzma->stream.next_in = lzma->buffer;
+ lzma->stream.avail_in = fread(lzma->buffer, 1, sizeof(lzma->buffer)/sizeof(lzma->buffer[0]), lzma->file);
+ }
+ lzma->err = lzma_code(&lzma->stream, LZMA_RUN);
+ if (lzma->err == LZMA_STREAM_END)
+ {
+ lzma->eof = true;
+ Res = Size - lzma->stream.avail_out;
+ }
+ else if (lzma->err != LZMA_OK)
+ {
+ Res = -1;
+ errno = 0;
+ }
+ else
+ {
+ Res = Size - lzma->stream.avail_out;
+ if (Res == 0)
+ {
+ // lzma run was okay, but produced no output…
+ Res = -1;
+ errno = EINTR;
+ }
+ }
+ return Res;
+ }
+ virtual bool InternalReadError() APT_OVERRIDE
+ {
+ return filefd->FileFdError("lzma_read: %s (%d)", _("Read error"), lzma->err);
+ }
+ virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) APT_OVERRIDE
+ {
+ ssize_t Res;
+ lzma->stream.next_in = (uint8_t *)From;
+ lzma->stream.avail_in = Size;
+ lzma->stream.next_out = lzma->buffer;
+ lzma->stream.avail_out = sizeof(lzma->buffer)/sizeof(lzma->buffer[0]);
+ lzma->err = lzma_code(&lzma->stream, LZMA_RUN);
+ if (lzma->err != LZMA_OK)
+ return -1;
+ size_t const n = sizeof(lzma->buffer)/sizeof(lzma->buffer[0]) - lzma->stream.avail_out;
+ size_t const m = (n == 0) ? 0 : fwrite(lzma->buffer, 1, n, lzma->file);
+ if (m != n)
+ {
+ Res = -1;
+ errno = 0;
+ }
+ else
+ {
+ Res = Size - lzma->stream.avail_in;
+ if (Res == 0)
+ {
+ // lzma run was okay, but produced no output…
+ Res = -1;
+ errno = EINTR;
+ }
+ }
+ return Res;
+ }
+ virtual bool InternalWriteError() APT_OVERRIDE
+ {
+ return filefd->FileFdError("lzma_write: %s (%d)", _("Write error"), lzma->err);
+ }
+ virtual bool InternalStream() const APT_OVERRIDE { return true; }
+ virtual bool InternalClose(std::string const &) APT_OVERRIDE
+ {
+ delete lzma;
+ lzma = nullptr;
+ return true;
+ }
+
+ explicit LzmaFileFdPrivate(FileFd * const filefd) : FileFdPrivate(filefd), lzma(nullptr) {}
+ virtual ~LzmaFileFdPrivate() { InternalClose(""); }
+#endif
+};
+ /*}}}*/
+class APT_HIDDEN PipedFileFdPrivate: public FileFdPrivate /*{{{*/
+/* if we don't have a specific class dealing with library calls, we (un)compress
+ by executing a specified binary and pipe in/out what we need */
+{
+public:
+ virtual bool InternalOpen(int const, unsigned int const Mode) APT_OVERRIDE
+ {
+ // collect zombies here in case we reopen
+ if (compressor_pid > 0)
+ ExecWait(compressor_pid, "FileFdCompressor", true);
+
+ if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite)
+ return filefd->FileFdError("ReadWrite mode is not supported for file %s", filefd->FileName.c_str());
+ if (compressor.Binary == "false")
+ return filefd->FileFdError("libapt has inbuilt support for the %s compression,"
+ " but was forced to ignore it in favor of an external binary – which isn't installed.", compressor.Name.c_str());
+
+ bool const Comp = (Mode & FileFd::WriteOnly) == FileFd::WriteOnly;
+ if (Comp == false && filefd->iFd != -1)
+ {
+ // Handle 'decompression' of empty files
+ struct stat Buf;
+ if (fstat(filefd->iFd, &Buf) != 0)
+ return filefd->FileFdErrno("fstat", "Could not stat fd %d for file %s", filefd->iFd, filefd->FileName.c_str());
+ if (Buf.st_size == 0 && S_ISFIFO(Buf.st_mode) == false)
+ return true;
+
+ // We don't need the file open - instead let the compressor open it
+ // as he properly knows better how to efficiently read from 'his' file
+ if (filefd->FileName.empty() == false)
+ {
+ close(filefd->iFd);
+ filefd->iFd = -1;
+ }
+ }
+
+ // Create a data pipe
+ int Pipe[2] = {-1,-1};
+ if (pipe(Pipe) != 0)
+ return filefd->FileFdErrno("pipe",_("Failed to create subprocess IPC"));
+ for (int J = 0; J != 2; J++)
+ SetCloseExec(Pipe[J],true);
+
+ compressed_fd = filefd->iFd;
+ set_is_pipe(true);
+
+ if (Comp == true)
+ filefd->iFd = Pipe[1];
+ else
+ filefd->iFd = Pipe[0];
+
+ // The child..
+ compressor_pid = ExecFork();
+ if (compressor_pid == 0)
+ {
+ if (Comp == true)
+ {
+ dup2(compressed_fd,STDOUT_FILENO);
+ dup2(Pipe[0],STDIN_FILENO);
+ }
+ else
+ {
+ if (compressed_fd != -1)
+ dup2(compressed_fd,STDIN_FILENO);
+ dup2(Pipe[1],STDOUT_FILENO);
+ }
+ int const nullfd = open("/dev/null", O_WRONLY);
+ if (nullfd != -1)
+ {
+ dup2(nullfd,STDERR_FILENO);
+ close(nullfd);
+ }
+
+ SetCloseExec(STDOUT_FILENO,false);
+ SetCloseExec(STDIN_FILENO,false);
+
+ std::vector<char const*> Args;
+ Args.push_back(compressor.Binary.c_str());
+ std::vector<std::string> const * const addArgs =
+ (Comp == true) ? &(compressor.CompressArgs) : &(compressor.UncompressArgs);
+ for (std::vector<std::string>::const_iterator a = addArgs->begin();
+ a != addArgs->end(); ++a)
+ Args.push_back(a->c_str());
+ if (Comp == false && filefd->FileName.empty() == false)
+ {
+ // commands not needing arguments, do not need to be told about using standard output
+ // in reality, only testcases with tools like cat, rev, rot13, … are able to trigger this
+ if (compressor.CompressArgs.empty() == false && compressor.UncompressArgs.empty() == false)
+ Args.push_back("--stdout");
+ if (filefd->TemporaryFileName.empty() == false)
+ Args.push_back(filefd->TemporaryFileName.c_str());
+ else
+ Args.push_back(filefd->FileName.c_str());
+ }
+ Args.push_back(NULL);
+
+ execvp(Args[0],(char **)&Args[0]);
+ cerr << _("Failed to exec compressor ") << Args[0] << endl;
+ _exit(100);
+ }
+ if (Comp == true)
+ close(Pipe[0]);
+ else
+ close(Pipe[1]);
+
+ return true;
+ }
+ virtual ssize_t InternalUnbufferedRead(void * const To, unsigned long long const Size) APT_OVERRIDE
+ {
+ return read(filefd->iFd, To, Size);
+ }
+ virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) APT_OVERRIDE
+ {
+ return write(filefd->iFd, From, Size);
+ }
+ virtual bool InternalClose(std::string const &) APT_OVERRIDE
+ {
+ bool Ret = true;
+ if (filefd->iFd != -1)
+ {
+ close(filefd->iFd);
+ filefd->iFd = -1;
+ }
+ if (compressor_pid > 0)
+ Ret &= ExecWait(compressor_pid, "FileFdCompressor", true);
+ compressor_pid = -1;
+ return Ret;
+ }
+ explicit PipedFileFdPrivate(FileFd * const filefd) : FileFdPrivate(filefd) {}
+ virtual ~PipedFileFdPrivate() { InternalClose(""); }
+};
+ /*}}}*/
+class APT_HIDDEN DirectFileFdPrivate: public FileFdPrivate /*{{{*/
+{
+public:
+ virtual bool InternalOpen(int const, unsigned int const) APT_OVERRIDE { return true; }
+ virtual ssize_t InternalUnbufferedRead(void * const To, unsigned long long const Size) APT_OVERRIDE
+ {
+ return read(filefd->iFd, To, Size);
+ }
+ virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) APT_OVERRIDE
+ {
+ // files opened read+write are strange and only really "supported" for direct files
+ if (buffer.size() != 0)
+ {
+ lseek(filefd->iFd, -buffer.size(), SEEK_CUR);
+ buffer.reset();
+ }
+ return write(filefd->iFd, From, Size);
+ }
+ virtual bool InternalSeek(unsigned long long const To) APT_OVERRIDE
+ {
+ off_t const res = lseek(filefd->iFd, To, SEEK_SET);
+ if (res != (off_t)To)
+ return filefd->FileFdError("Unable to seek to %llu", To);
+ seekpos = To;
+ buffer.reset();
+ return true;
+ }
+ virtual bool InternalSkip(unsigned long long Over) APT_OVERRIDE
+ {
+ if (Over >= buffer.size())
+ {
+ Over -= buffer.size();
+ buffer.reset();
+ }
+ else
+ {
+ buffer.bufferstart += Over;
+ return true;
+ }
+ if (Over == 0)
+ return true;
+ off_t const res = lseek(filefd->iFd, Over, SEEK_CUR);
+ if (res < 0)
+ return filefd->FileFdError("Unable to seek ahead %llu",Over);
+ seekpos = res;
+ return true;
+ }
+ virtual bool InternalTruncate(unsigned long long const To) APT_OVERRIDE
+ {
+ if (buffer.size() != 0)
+ {
+ unsigned long long const seekpos = lseek(filefd->iFd, 0, SEEK_CUR);
+ if ((seekpos - buffer.size()) >= To)
+ buffer.reset();
+ else if (seekpos >= To)
+ buffer.bufferend = (To - seekpos) + buffer.bufferstart;
+ else
+ buffer.reset();
+ }
+ if (ftruncate(filefd->iFd, To) != 0)
+ return filefd->FileFdError("Unable to truncate to %llu",To);
+ return true;
+ }
+ virtual unsigned long long InternalTell() APT_OVERRIDE
+ {
+ return lseek(filefd->iFd,0,SEEK_CUR) - buffer.size();
+ }
+ virtual unsigned long long InternalSize() APT_OVERRIDE
+ {
+ return filefd->FileSize();
+ }
+ virtual bool InternalClose(std::string const &) APT_OVERRIDE { return true; }
+ virtual bool InternalAlwaysAutoClose() const APT_OVERRIDE { return false; }
+
+ explicit DirectFileFdPrivate(FileFd * const filefd) : FileFdPrivate(filefd) {}
+ virtual ~DirectFileFdPrivate() { InternalClose(""); }
+};
+ /*}}}*/
+// FileFd Constructors /*{{{*/
+FileFd::FileFd(std::string FileName,unsigned int const Mode,unsigned long AccessMode) : iFd(-1), Flags(0), d(NULL)
+{
+ Open(FileName,Mode, None, AccessMode);
+}
+FileFd::FileFd(std::string FileName,unsigned int const Mode, CompressMode Compress, unsigned long AccessMode) : iFd(-1), Flags(0), d(NULL)
+{
+ Open(FileName,Mode, Compress, AccessMode);
+}
+FileFd::FileFd() : iFd(-1), Flags(AutoClose), d(NULL) {}
+FileFd::FileFd(int const Fd, unsigned int const Mode, CompressMode Compress) : iFd(-1), Flags(0), d(NULL)
+{
+ OpenDescriptor(Fd, Mode, Compress);
+}
+FileFd::FileFd(int const Fd, bool const AutoClose) : iFd(-1), Flags(0), d(NULL)
+{
+ OpenDescriptor(Fd, ReadWrite, None, AutoClose);
+}
+ /*}}}*/
+// FileFd::Open - Open a file /*{{{*/
+// ---------------------------------------------------------------------
+/* The most commonly used open mode combinations are given with Mode */
+bool FileFd::Open(string FileName,unsigned int const Mode,CompressMode Compress, unsigned long const AccessMode)
+{
+ if (Mode == ReadOnlyGzip)
+ return Open(FileName, ReadOnly, Gzip, AccessMode);
+
+ if (Compress == Auto && (Mode & WriteOnly) == WriteOnly)
+ return FileFdError("Autodetection on %s only works in ReadOnly openmode!", FileName.c_str());
+
+ std::vector<APT::Configuration::Compressor> const compressors = APT::Configuration::getCompressors();
+ std::vector<APT::Configuration::Compressor>::const_iterator compressor = compressors.begin();
+ if (Compress == Auto)
+ {
+ for (; compressor != compressors.end(); ++compressor)
+ {
+ std::string file = FileName + compressor->Extension;
+ if (FileExists(file) == false)
+ continue;
+ FileName = file;
+ break;
+ }
+ }
+ else if (Compress == Extension)
+ {
+ std::string::size_type const found = FileName.find_last_of('.');
+ std::string ext;
+ if (found != std::string::npos)
+ {
+ ext = FileName.substr(found);
+ if (ext == ".new" || ext == ".bak")
+ {
+ std::string::size_type const found2 = FileName.find_last_of('.', found - 1);
+ if (found2 != std::string::npos)
+ ext = FileName.substr(found2, found - found2);
+ else
+ ext.clear();
+ }
+ }
+ for (; compressor != compressors.end(); ++compressor)
+ if (ext == compressor->Extension)
+ break;
+ // no matching extension - assume uncompressed (imagine files like 'example.org_Packages')
+ if (compressor == compressors.end())
+ for (compressor = compressors.begin(); compressor != compressors.end(); ++compressor)
+ if (compressor->Name == ".")
+ break;
+ }
+ else
+ {
+ std::string name;
+ switch (Compress)
+ {
+ case None: name = "."; break;
+ case Gzip: name = "gzip"; break;
+ case Bzip2: name = "bzip2"; break;
+ case Lzma: name = "lzma"; break;
+ case Xz: name = "xz"; break;
+ case Lz4: name = "lz4"; break;
+ case Auto:
+ case Extension:
+ // Unreachable
+ return FileFdError("Opening File %s in None, Auto or Extension should be already handled?!?", FileName.c_str());
+ }
+ for (; compressor != compressors.end(); ++compressor)
+ if (compressor->Name == name)
+ break;
+ if (compressor == compressors.end())
+ return FileFdError("Can't find a configured compressor %s for file %s", name.c_str(), FileName.c_str());
+ }
+
+ if (compressor == compressors.end())
+ return FileFdError("Can't find a match for specified compressor mode for file %s", FileName.c_str());
+ return Open(FileName, Mode, *compressor, AccessMode);
+}
+bool FileFd::Open(string FileName,unsigned int const Mode,APT::Configuration::Compressor const &compressor, unsigned long const AccessMode)
+{
+ Close();
+ Flags = AutoClose;
+
+ if ((Mode & WriteOnly) != WriteOnly && (Mode & (Atomic | Create | Empty | Exclusive)) != 0)
+ return FileFdError("ReadOnly mode for %s doesn't accept additional flags!", FileName.c_str());
+ if ((Mode & ReadWrite) == 0)
+ return FileFdError("No openmode provided in FileFd::Open for %s", FileName.c_str());
+
+ unsigned int OpenMode = Mode;
+ if (FileName == "/dev/null")
+ OpenMode = OpenMode & ~(Atomic | Exclusive | Create | Empty);
+
+ if ((OpenMode & Atomic) == Atomic)
+ {
+ Flags |= Replace;
+ }
+ else if ((OpenMode & (Exclusive | Create)) == (Exclusive | Create))
+ {
+ // for atomic, this will be done by rename in Close()
+ RemoveFile("FileFd::Open", FileName);
+ }
+ if ((OpenMode & Empty) == Empty)
+ {
+ struct stat Buf;
+ if (lstat(FileName.c_str(),&Buf) == 0 && S_ISLNK(Buf.st_mode))
+ RemoveFile("FileFd::Open", FileName);
+ }
+
+ int fileflags = 0;
+ #define if_FLAGGED_SET(FLAG, MODE) if ((OpenMode & FLAG) == FLAG) fileflags |= MODE
+ if_FLAGGED_SET(ReadWrite, O_RDWR);
+ else if_FLAGGED_SET(ReadOnly, O_RDONLY);
+ else if_FLAGGED_SET(WriteOnly, O_WRONLY);
+
+ if_FLAGGED_SET(Create, O_CREAT);
+ if_FLAGGED_SET(Empty, O_TRUNC);
+ if_FLAGGED_SET(Exclusive, O_EXCL);
+ #undef if_FLAGGED_SET
+
+ if ((OpenMode & Atomic) == Atomic)
+ {
+ char *name = strdup((FileName + ".XXXXXX").c_str());
+
+ if((iFd = mkstemp(name)) == -1)
+ {
+ free(name);
+ return FileFdErrno("mkstemp", "Could not create temporary file for %s", FileName.c_str());
+ }
+
+ TemporaryFileName = string(name);
+ free(name);
+
+ // umask() will always set the umask and return the previous value, so
+ // we first set the umask and then reset it to the old value
+ mode_t const CurrentUmask = umask(0);
+ umask(CurrentUmask);
+ // calculate the actual file permissions (just like open/creat)
+ mode_t const FilePermissions = (AccessMode & ~CurrentUmask);
+
+ if(fchmod(iFd, FilePermissions) == -1)
+ return FileFdErrno("fchmod", "Could not change permissions for temporary file %s", TemporaryFileName.c_str());
+ }
+ else
+ iFd = open(FileName.c_str(), fileflags, AccessMode);
+
+ this->FileName = FileName;
+ if (iFd == -1 || OpenInternDescriptor(OpenMode, compressor) == false)
+ {
+ if (iFd != -1)
+ {
+ close (iFd);
+ iFd = -1;
+ }
+ return FileFdErrno("open",_("Could not open file %s"), FileName.c_str());
+ }
+
+ SetCloseExec(iFd,true);
+ return true;
+}
+ /*}}}*/
+// FileFd::OpenDescriptor - Open a filedescriptor /*{{{*/
+bool FileFd::OpenDescriptor(int Fd, unsigned int const Mode, CompressMode Compress, bool AutoClose)
+{
+ std::vector<APT::Configuration::Compressor> const compressors = APT::Configuration::getCompressors();
+ std::vector<APT::Configuration::Compressor>::const_iterator compressor = compressors.begin();
+ std::string name;
+
+ // compat with the old API
+ if (Mode == ReadOnlyGzip && Compress == None)
+ Compress = Gzip;
+
+ switch (Compress)
+ {
+ case None: name = "."; break;
+ case Gzip: name = "gzip"; break;
+ case Bzip2: name = "bzip2"; break;
+ case Lzma: name = "lzma"; break;
+ case Xz: name = "xz"; break;
+ case Lz4: name = "lz4"; break;
+ case Auto:
+ case Extension:
+ if (AutoClose == true && Fd != -1)
+ close(Fd);
+ return FileFdError("Opening Fd %d in Auto or Extension compression mode is not supported", Fd);
+ }
+ for (; compressor != compressors.end(); ++compressor)
+ if (compressor->Name == name)
+ break;
+ if (compressor == compressors.end())
+ {
+ if (AutoClose == true && Fd != -1)
+ close(Fd);
+ return FileFdError("Can't find a configured compressor %s for file %s", name.c_str(), FileName.c_str());
+ }
+ return OpenDescriptor(Fd, Mode, *compressor, AutoClose);
+}
+bool FileFd::OpenDescriptor(int Fd, unsigned int const Mode, APT::Configuration::Compressor const &compressor, bool AutoClose)
+{
+ Close();
+ Flags = (AutoClose) ? FileFd::AutoClose : 0;
+ iFd = Fd;
+ this->FileName = "";
+ if (OpenInternDescriptor(Mode, compressor) == false)
+ {
+ if (iFd != -1 && (
+ (Flags & Compressed) == Compressed ||
+ AutoClose == true))
+ {
+ close (iFd);
+ iFd = -1;
+ }
+ return FileFdError(_("Could not open file descriptor %d"), Fd);
+ }
+ return true;
+}
+bool FileFd::OpenInternDescriptor(unsigned int const Mode, APT::Configuration::Compressor const &compressor)
+{
+ if (iFd == -1)
+ return false;
+
+ if (d != nullptr)
+ d->InternalClose(FileName);
+
+ if (d == nullptr)
+ {
+ if (false)
+ /* dummy so that the rest can be 'else if's */;
+#define APT_COMPRESS_INIT(NAME, CONSTRUCTOR) \
+ else if (compressor.Name == NAME) \
+ d = new CONSTRUCTOR(this)
+#ifdef HAVE_ZLIB
+ APT_COMPRESS_INIT("gzip", GzipFileFdPrivate);
+#endif
+#ifdef HAVE_BZ2
+ APT_COMPRESS_INIT("bzip2", Bz2FileFdPrivate);
+#endif
+#ifdef HAVE_LZMA
+ APT_COMPRESS_INIT("xz", LzmaFileFdPrivate);
+ APT_COMPRESS_INIT("lzma", LzmaFileFdPrivate);
+#endif
+#ifdef HAVE_LZ4
+ APT_COMPRESS_INIT("lz4", Lz4FileFdPrivate);
+#endif
+#undef APT_COMPRESS_INIT
+ else if (compressor.Name == "." || compressor.Binary.empty() == true)
+ d = new DirectFileFdPrivate(this);
+ else
+ d = new PipedFileFdPrivate(this);
+
+ if (Mode & BufferedWrite)
+ d = new BufferedWriteFileFdPrivate(d);
+
+ d->set_openmode(Mode);
+ d->set_compressor(compressor);
+ if ((Flags & AutoClose) != AutoClose && d->InternalAlwaysAutoClose())
+ {
+ // Need to duplicate fd here or gz/bz2 close for cleanup will close the fd as well
+ int const internFd = dup(iFd);
+ if (internFd == -1)
+ return FileFdErrno("OpenInternDescriptor", _("Could not open file descriptor %d"), iFd);
+ iFd = internFd;
+ }
+ }
+ return d->InternalOpen(iFd, Mode);
+}
+ /*}}}*/
+// FileFd::~File - Closes the file /*{{{*/
+// ---------------------------------------------------------------------
+/* If the proper modes are selected then we close the Fd and possibly
+ unlink the file on error. */
+FileFd::~FileFd()
+{
+ Close();
+ if (d != NULL)
+ d->InternalClose(FileName);
+ delete d;
+ d = NULL;
+}
+ /*}}}*/
+// FileFd::Read - Read a bit of the file /*{{{*/
+// ---------------------------------------------------------------------
+/* We are careful to handle interruption by a signal while reading
+ gracefully. */
+bool FileFd::Read(void *To,unsigned long long Size,unsigned long long *Actual)
+{
+ if (d == nullptr || Failed())
+ return false;
+ ssize_t Res = 1;
+ errno = 0;
+ if (Actual != 0)
+ *Actual = 0;
+ *((char *)To) = '\0';
+ while (Res > 0 && Size > 0)
+ {
+ Res = d->InternalRead(To, Size);
+
+ if (Res < 0)
+ {
+ if (errno == EINTR)
+ {
+ // trick the while-loop into running again
+ Res = 1;
+ errno = 0;
+ continue;
+ }
+ return d->InternalReadError();
+ }
+
+ To = (char *)To + Res;
+ Size -= Res;
+ if (d != NULL)
+ d->set_seekpos(d->get_seekpos() + Res);
+ if (Actual != 0)
+ *Actual += Res;
+ }
+
+ if (Size == 0)
+ return true;
+
+ // Eof handling
+ if (Actual != 0)
+ {
+ Flags |= HitEof;
+ return true;
+ }
+
+ return FileFdError(_("read, still have %llu to read but none left"), Size);
+}
+bool FileFd::Read(int const Fd, void *To, unsigned long long Size, unsigned long long * const Actual)
+{
+ ssize_t Res = 1;
+ errno = 0;
+ if (Actual != nullptr)
+ *Actual = 0;
+ *static_cast<char *>(To) = '\0';
+ while (Res > 0 && Size > 0)
+ {
+ Res = read(Fd, To, Size);
+ if (Res < 0)
+ {
+ if (errno == EINTR)
+ {
+ Res = 1;
+ errno = 0;
+ continue;
+ }
+ return _error->Errno("read", _("Read error"));
+ }
+ To = static_cast<char *>(To) + Res;
+ Size -= Res;
+ if (Actual != 0)
+ *Actual += Res;
+ }
+ if (Size == 0)
+ return true;
+ if (Actual != nullptr)
+ return true;
+ return _error->Error(_("read, still have %llu to read but none left"), Size);
+}
+ /*}}}*/
+// FileFd::ReadLine - Read a complete line from the file /*{{{*/
+// ---------------------------------------------------------------------
+/* Beware: This method can be quite slow for big buffers on UNcompressed
+ files because of the naive implementation! */
+char* FileFd::ReadLine(char *To, unsigned long long const Size)
+{
+ *To = '\0';
+ if (d == nullptr || Failed())
+ return nullptr;
+ return d->InternalReadLine(To, Size);
+}
+ /*}}}*/
+// FileFd::Flush - Flush the file /*{{{*/
+bool FileFd::Flush()
+{
+ if (Failed())
+ return false;
+ if (d == nullptr)
+ return true;
+
+ return d->InternalFlush();
+}
+ /*}}}*/
+// FileFd::Write - Write to the file /*{{{*/
+bool FileFd::Write(const void *From,unsigned long long Size)
+{
+ if (d == nullptr || Failed())
+ return false;
+ ssize_t Res = 1;
+ errno = 0;
+ while (Res > 0 && Size > 0)
+ {
+ Res = d->InternalWrite(From, Size);
+
+ if (Res < 0)
+ {
+ if (errno == EINTR)
+ {
+ // trick the while-loop into running again
+ Res = 1;
+ errno = 0;
+ continue;
+ }
+ return d->InternalWriteError();
+ }
+
+ From = (char const *)From + Res;
+ Size -= Res;
+ if (d != NULL)
+ d->set_seekpos(d->get_seekpos() + Res);
+ }
+
+ if (Size == 0)
+ return true;
+
+ return FileFdError(_("write, still have %llu to write but couldn't"), Size);
+}
+bool FileFd::Write(int Fd, const void *From, unsigned long long Size)
+{
+ ssize_t Res = 1;
+ errno = 0;
+ while (Res > 0 && Size > 0)
+ {
+ Res = write(Fd,From,Size);
+ if (Res < 0 && errno == EINTR)
+ continue;
+ if (Res < 0)
+ return _error->Errno("write",_("Write error"));
+
+ From = (char const *)From + Res;
+ Size -= Res;
+ }
+
+ if (Size == 0)
+ return true;
+
+ return _error->Error(_("write, still have %llu to write but couldn't"), Size);
+}
+ /*}}}*/
+// FileFd::Seek - Seek in the file /*{{{*/
+bool FileFd::Seek(unsigned long long To)
+{
+ if (d == nullptr || Failed())
+ return false;
+ Flags &= ~HitEof;
+ return d->InternalSeek(To);
+}
+ /*}}}*/
+// FileFd::Skip - Skip over data in the file /*{{{*/
+bool FileFd::Skip(unsigned long long Over)
+{
+ if (d == nullptr || Failed())
+ return false;
+ return d->InternalSkip(Over);
+}
+ /*}}}*/
+// FileFd::Truncate - Truncate the file /*{{{*/
+bool FileFd::Truncate(unsigned long long To)
+{
+ if (d == nullptr || Failed())
+ return false;
+ // truncating /dev/null is always successful - as we get an error otherwise
+ if (To == 0 && FileName == "/dev/null")
+ return true;
+ return d->InternalTruncate(To);
+}
+ /*}}}*/
+// FileFd::Tell - Current seek position /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+unsigned long long FileFd::Tell()
+{
+ if (d == nullptr || Failed())
+ return false;
+ off_t const Res = d->InternalTell();
+ if (Res == (off_t)-1)
+ FileFdErrno("lseek","Failed to determine the current file position");
+ d->set_seekpos(Res);
+ return Res;
+}
+ /*}}}*/
+static bool StatFileFd(char const * const msg, int const iFd, std::string const &FileName, struct stat &Buf, FileFdPrivate * const d) /*{{{*/
+{
+ bool ispipe = (d != NULL && d->get_is_pipe() == true);
+ if (ispipe == false)
+ {
+ if (fstat(iFd,&Buf) != 0)
+ // higher-level code will generate more meaningful messages,
+ // even translated this would be meaningless for users
+ return _error->Errno("fstat", "Unable to determine %s for fd %i", msg, iFd);
+ if (FileName.empty() == false)
+ ispipe = S_ISFIFO(Buf.st_mode);
+ }
+
+ // for compressor pipes st_size is undefined and at 'best' zero
+ if (ispipe == true)
+ {
+ // we set it here, too, as we get the info here for free
+ // in theory the Open-methods should take care of it already
+ if (d != NULL)
+ d->set_is_pipe(true);
+ if (stat(FileName.c_str(), &Buf) != 0)
+ return _error->Errno("fstat", "Unable to determine %s for file %s", msg, FileName.c_str());
+ }
+ return true;
+}
+ /*}}}*/
+// FileFd::FileSize - Return the size of the file /*{{{*/
+unsigned long long FileFd::FileSize()
+{
+ struct stat Buf;
+ if (StatFileFd("file size", iFd, FileName, Buf, d) == false)
+ {
+ Flags |= Fail;
+ return 0;
+ }
+ return Buf.st_size;
+}
+ /*}}}*/
+// FileFd::ModificationTime - Return the time of last touch /*{{{*/
+time_t FileFd::ModificationTime()
+{
+ struct stat Buf;
+ if (StatFileFd("modification time", iFd, FileName, Buf, d) == false)
+ {
+ Flags |= Fail;
+ return 0;
+ }
+ return Buf.st_mtime;
+}
+ /*}}}*/
+// FileFd::Size - Return the size of the content in the file /*{{{*/
+unsigned long long FileFd::Size()
+{
+ if (d == nullptr)
+ return 0;
+ return d->InternalSize();
+}
+ /*}}}*/
+// FileFd::Close - Close the file if the close flag is set /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool FileFd::Close()
+{
+ if (Failed() == false && Flush() == false)
+ return false;
+ if (iFd == -1)
+ return true;
+
+ bool Res = true;
+ if ((Flags & AutoClose) == AutoClose)
+ {
+ if ((Flags & Compressed) != Compressed && iFd > 0 && close(iFd) != 0)
+ Res &= _error->Errno("close",_("Problem closing the file %s"), FileName.c_str());
+ }
+
+ if (d != NULL)
+ {
+ Res &= d->InternalClose(FileName);
+ delete d;
+ d = NULL;
+ }
+
+ if ((Flags & Replace) == Replace) {
+ if (Failed() == false && rename(TemporaryFileName.c_str(), FileName.c_str()) != 0)
+ Res &= _error->Errno("rename",_("Problem renaming the file %s to %s"), TemporaryFileName.c_str(), FileName.c_str());
+
+ FileName = TemporaryFileName; // for the unlink() below.
+ TemporaryFileName.clear();
+ }
+
+ iFd = -1;
+
+ if ((Flags & Fail) == Fail && (Flags & DelOnFail) == DelOnFail &&
+ FileName.empty() == false)
+ Res &= RemoveFile("FileFd::Close", FileName);
+
+ if (Res == false)
+ Flags |= Fail;
+ return Res;
+}
+ /*}}}*/
+// FileFd::Sync - Sync the file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool FileFd::Sync()
+{
+ if (fsync(iFd) != 0)
+ return FileFdErrno("sync",_("Problem syncing the file"));
+ return true;
+}
+ /*}}}*/
+// FileFd::FileFdErrno - set Fail and call _error->Errno *{{{*/
+bool FileFd::FileFdErrno(const char *Function, const char *Description,...)
+{
+ Flags |= Fail;
+ va_list args;
+ size_t msgSize = 400;
+ int const errsv = errno;
+ bool retry;
+ do {
+ va_start(args,Description);
+ retry = _error->InsertErrno(GlobalError::ERROR, Function, Description, args, errsv, msgSize);
+ va_end(args);
+ } while (retry);
+ return false;
+}
+ /*}}}*/
+// FileFd::FileFdError - set Fail and call _error->Error *{{{*/
+bool FileFd::FileFdError(const char *Description,...) {
+ Flags |= Fail;
+ va_list args;
+ size_t msgSize = 400;
+ bool retry;
+ do {
+ va_start(args,Description);
+ retry = _error->Insert(GlobalError::ERROR, Description, args, msgSize);
+ va_end(args);
+ } while (retry);
+ return false;
+}
+ /*}}}*/
+gzFile FileFd::gzFd() { /*{{{*/
+#ifdef HAVE_ZLIB
+ GzipFileFdPrivate * const gzipd = dynamic_cast<GzipFileFdPrivate*>(d);
+ if (gzipd == nullptr)
+ return nullptr;
+ else
+ return gzipd->gz;
+#else
+ return nullptr;
+#endif
+}
+ /*}}}*/
+
+// Glob - wrapper around "glob()" /*{{{*/
+std::vector<std::string> Glob(std::string const &pattern, int flags)
+{
+ std::vector<std::string> result;
+ glob_t globbuf;
+ int glob_res;
+ unsigned int i;
+
+ glob_res = glob(pattern.c_str(), flags, NULL, &globbuf);
+
+ if (glob_res != 0)
+ {
+ if(glob_res != GLOB_NOMATCH) {
+ _error->Errno("glob", "Problem with glob");
+ return result;
+ }
+ }
+
+ // append results
+ for(i=0;i<globbuf.gl_pathc;i++)
+ result.push_back(string(globbuf.gl_pathv[i]));
+
+ globfree(&globbuf);
+ return result;
+}
+ /*}}}*/
+static std::string APT_NONNULL(1) GetTempDirEnv(char const * const env) /*{{{*/
+{
+ const char *tmpdir = getenv(env);
+
+#ifdef P_tmpdir
+ if (!tmpdir)
+ tmpdir = P_tmpdir;
+#endif
+
+ struct stat st;
+ if (!tmpdir || strlen(tmpdir) == 0 || // tmpdir is set
+ stat(tmpdir, &st) != 0 || (st.st_mode & S_IFDIR) == 0) // exists and is directory
+ tmpdir = "/tmp";
+ else if (geteuid() != 0 && // root can do everything anyway
+ faccessat(AT_FDCWD, tmpdir, R_OK | W_OK | X_OK, AT_EACCESS) != 0) // current user has rwx access to directory
+ tmpdir = "/tmp";
+
+ return string(tmpdir);
+}
+ /*}}}*/
+std::string GetTempDir() /*{{{*/
+{
+ return GetTempDirEnv("TMPDIR");
+}
+std::string GetTempDir(std::string const &User)
+{
+ // no need/possibility to drop privs
+ if(getuid() != 0 || User.empty() || User == "root")
+ return GetTempDir();
+
+ struct passwd const * const pw = getpwnam(User.c_str());
+ if (pw == NULL)
+ return GetTempDir();
+
+ gid_t const old_euid = geteuid();
+ gid_t const old_egid = getegid();
+ if (setegid(pw->pw_gid) != 0)
+ _error->Errno("setegid", "setegid %u failed", pw->pw_gid);
+ if (seteuid(pw->pw_uid) != 0)
+ _error->Errno("seteuid", "seteuid %u failed", pw->pw_uid);
+
+ std::string const tmp = GetTempDir();
+
+ if (seteuid(old_euid) != 0)
+ _error->Errno("seteuid", "seteuid %u failed", old_euid);
+ if (setegid(old_egid) != 0)
+ _error->Errno("setegid", "setegid %u failed", old_egid);
+
+ return tmp;
+}
+ /*}}}*/
+FileFd* GetTempFile(std::string const &Prefix, bool ImmediateUnlink, FileFd * const TmpFd) /*{{{*/
+{
+ char fn[512];
+ FileFd * const Fd = TmpFd == NULL ? new FileFd() : TmpFd;
+
+ std::string const tempdir = GetTempDir();
+ snprintf(fn, sizeof(fn), "%s/%s.XXXXXX",
+ tempdir.c_str(), Prefix.c_str());
+ int const fd = mkstemp(fn);
+ if(ImmediateUnlink)
+ unlink(fn);
+ if (fd < 0)
+ {
+ _error->Errno("GetTempFile",_("Unable to mkstemp %s"), fn);
+ return NULL;
+ }
+ if (!Fd->OpenDescriptor(fd, FileFd::ReadWrite, FileFd::None, true))
+ {
+ _error->Errno("GetTempFile",_("Unable to write to %s"),fn);
+ return NULL;
+ }
+ return Fd;
+}
+ /*}}}*/
+bool Rename(std::string From, std::string To) /*{{{*/
+{
+ if (rename(From.c_str(),To.c_str()) != 0)
+ {
+ _error->Error(_("rename failed, %s (%s -> %s)."),strerror(errno),
+ From.c_str(),To.c_str());
+ return false;
+ }
+ return true;
+}
+ /*}}}*/
+bool Popen(const char* Args[], FileFd &Fd, pid_t &Child, FileFd::OpenMode Mode)/*{{{*/
+{
+ return Popen(Args, Fd, Child, Mode, true);
+}
+ /*}}}*/
+bool Popen(const char* Args[], FileFd &Fd, pid_t &Child, FileFd::OpenMode Mode, bool CaptureStderr)/*{{{*/
+{
+ int fd;
+ if (Mode != FileFd::ReadOnly && Mode != FileFd::WriteOnly)
+ return _error->Error("Popen supports ReadOnly (x)or WriteOnly mode only");
+
+ int Pipe[2] = {-1, -1};
+ if(pipe(Pipe) != 0)
+ return _error->Errno("pipe", _("Failed to create subprocess IPC"));
+
+ std::set<int> keep_fds;
+ keep_fds.insert(Pipe[0]);
+ keep_fds.insert(Pipe[1]);
+ Child = ExecFork(keep_fds);
+ if(Child < 0)
+ return _error->Errno("fork", "Failed to fork");
+ if(Child == 0)
+ {
+ if(Mode == FileFd::ReadOnly)
+ {
+ close(Pipe[0]);
+ fd = Pipe[1];
+ }
+ else if(Mode == FileFd::WriteOnly)
+ {
+ close(Pipe[1]);
+ fd = Pipe[0];
+ }
+
+ if(Mode == FileFd::ReadOnly)
+ {
+ dup2(fd, 1);
+ if (CaptureStderr == true)
+ dup2(fd, 2);
+ } else if(Mode == FileFd::WriteOnly)
+ dup2(fd, 0);
+
+ execv(Args[0], (char**)Args);
+ _exit(100);
+ }
+ if(Mode == FileFd::ReadOnly)
+ {
+ close(Pipe[1]);
+ fd = Pipe[0];
+ }
+ else if(Mode == FileFd::WriteOnly)
+ {
+ close(Pipe[0]);
+ fd = Pipe[1];
+ }
+ else
+ return _error->Error("Popen supports ReadOnly (x)or WriteOnly mode only");
+ Fd.OpenDescriptor(fd, Mode, FileFd::None, true);
+
+ return true;
+}
+ /*}}}*/
+bool DropPrivileges() /*{{{*/
+{
+ if(_config->FindB("Debug::NoDropPrivs", false) == true)
+ return true;
+
+#if __gnu_linux__
+#if defined(PR_SET_NO_NEW_PRIVS) && ( PR_SET_NO_NEW_PRIVS != 38 )
+#error "PR_SET_NO_NEW_PRIVS is defined, but with a different value than expected!"
+#endif
+ // see prctl(2), needs linux3.5 at runtime - magic constant to avoid it at buildtime
+ int ret = prctl(38, 1, 0, 0, 0);
+ // ignore EINVAL - kernel is too old to understand the option
+ if(ret < 0 && errno != EINVAL)
+ _error->Warning("PR_SET_NO_NEW_PRIVS failed with %i", ret);
+#endif
+
+ // empty setting disables privilege dropping - this also ensures
+ // backward compatibility, see bug #764506
+ const std::string toUser = _config->Find("APT::Sandbox::User");
+ if (toUser.empty() || toUser == "root")
+ return true;
+
+ // a lot can go wrong trying to drop privileges completely,
+ // so ideally we would like to verify that we have done it –
+ // but the verify asks for too much in case of fakeroot (and alike)
+ // [Specific checks can be overridden with dedicated options]
+ bool const VerifySandboxing = _config->FindB("APT::Sandbox::Verify", false);
+
+ // uid will be 0 in the end, but gid might be different anyway
+ uid_t const old_uid = getuid();
+ gid_t const old_gid = getgid();
+
+ if (old_uid != 0)
+ return true;
+
+ struct passwd *pw = getpwnam(toUser.c_str());
+ if (pw == NULL)
+ return _error->Error("No user %s, can not drop rights", toUser.c_str());
+
+ // Do not change the order here, it might break things
+ // Get rid of all our supplementary groups first
+ if (setgroups(1, &pw->pw_gid))
+ return _error->Errno("setgroups", "Failed to setgroups");
+
+ // Now change the group ids to the new user
+#ifdef HAVE_SETRESGID
+ if (setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) != 0)
+ return _error->Errno("setresgid", "Failed to set new group ids");
+#else
+ if (setegid(pw->pw_gid) != 0)
+ return _error->Errno("setegid", "Failed to setegid");
+
+ if (setgid(pw->pw_gid) != 0)
+ return _error->Errno("setgid", "Failed to setgid");
+#endif
+
+ // Change the user ids to the new user
+#ifdef HAVE_SETRESUID
+ if (setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid) != 0)
+ return _error->Errno("setresuid", "Failed to set new user ids");
+#else
+ if (setuid(pw->pw_uid) != 0)
+ return _error->Errno("setuid", "Failed to setuid");
+ if (seteuid(pw->pw_uid) != 0)
+ return _error->Errno("seteuid", "Failed to seteuid");
+#endif
+
+ // disabled by default as fakeroot doesn't implement getgroups currently (#806521)
+ if (VerifySandboxing == true || _config->FindB("APT::Sandbox::Verify::Groups", false) == true)
+ {
+ // Verify that the user isn't still in any supplementary groups
+ long const ngroups_max = sysconf(_SC_NGROUPS_MAX);
+ std::unique_ptr<gid_t[]> gidlist(new gid_t[ngroups_max]);
+ if (unlikely(gidlist == NULL))
+ return _error->Error("Allocation of a list of size %lu for getgroups failed", ngroups_max);
+ ssize_t gidlist_nr;
+ if ((gidlist_nr = getgroups(ngroups_max, gidlist.get())) < 0)
+ return _error->Errno("getgroups", "Could not get new groups (%lu)", ngroups_max);
+ for (ssize_t i = 0; i < gidlist_nr; ++i)
+ if (gidlist[i] != pw->pw_gid)
+ return _error->Error("Could not switch group, user %s is still in group %d", toUser.c_str(), gidlist[i]);
+ }
+
+ // enabled by default as all fakeroot-lookalikes should fake that accordingly
+ if (VerifySandboxing == true || _config->FindB("APT::Sandbox::Verify::IDs", true) == true)
+ {
+ // Verify that gid, egid, uid, and euid changed
+ if (getgid() != pw->pw_gid)
+ return _error->Error("Could not switch group");
+ if (getegid() != pw->pw_gid)
+ return _error->Error("Could not switch effective group");
+ if (getuid() != pw->pw_uid)
+ return _error->Error("Could not switch user");
+ if (geteuid() != pw->pw_uid)
+ return _error->Error("Could not switch effective user");
+
+#ifdef HAVE_GETRESUID
+ // verify that the saved set-user-id was changed as well
+ uid_t ruid = 0;
+ uid_t euid = 0;
+ uid_t suid = 0;
+ if (getresuid(&ruid, &euid, &suid))
+ return _error->Errno("getresuid", "Could not get saved set-user-ID");
+ if (suid != pw->pw_uid)
+ return _error->Error("Could not switch saved set-user-ID");
+#endif
+
+#ifdef HAVE_GETRESGID
+ // verify that the saved set-group-id was changed as well
+ gid_t rgid = 0;
+ gid_t egid = 0;
+ gid_t sgid = 0;
+ if (getresgid(&rgid, &egid, &sgid))
+ return _error->Errno("getresuid", "Could not get saved set-group-ID");
+ if (sgid != pw->pw_gid)
+ return _error->Error("Could not switch saved set-group-ID");
+#endif
+ }
+
+ // disabled as fakeroot doesn't forbid (by design) (re)gaining root from unprivileged
+ if (VerifySandboxing == true || _config->FindB("APT::Sandbox::Verify::Regain", false) == true)
+ {
+ // Check that uid and gid changes do not work anymore
+ if (pw->pw_gid != old_gid && (setgid(old_gid) != -1 || setegid(old_gid) != -1))
+ return _error->Error("Could restore a gid to root, privilege dropping did not work");
+
+ if (pw->pw_uid != old_uid && (setuid(old_uid) != -1 || seteuid(old_uid) != -1))
+ return _error->Error("Could restore a uid to root, privilege dropping did not work");
+ }
+
+ if (_config->FindB("APT::Sandbox::ResetEnvironment", true))
+ {
+ setenv("HOME", pw->pw_dir, 1);
+ setenv("USER", pw->pw_name, 1);
+ setenv("USERNAME", pw->pw_name, 1);
+ setenv("LOGNAME", pw->pw_name, 1);
+ auto const shell = flNotDir(pw->pw_shell);
+ if (shell == "false" || shell == "nologin")
+ setenv("SHELL", "/bin/sh", 1);
+ else
+ setenv("SHELL", pw->pw_shell, 1);
+ auto const apt_setenv_tmp = [](char const * const env) {
+ auto const tmpdir = getenv(env);
+ if (tmpdir != nullptr)
+ {
+ auto const ourtmpdir = GetTempDirEnv(env);
+ if (ourtmpdir != tmpdir)
+ setenv(env, ourtmpdir.c_str(), 1);
+ }
+ };
+ apt_setenv_tmp("TMPDIR");
+ apt_setenv_tmp("TEMPDIR");
+ apt_setenv_tmp("TMP");
+ apt_setenv_tmp("TEMP");
+ }
+
+ return true;
+}
+ /*}}}*/
diff --git a/apt-pkg/contrib/fileutl.h b/apt-pkg/contrib/fileutl.h
new file mode 100644
index 000000000..dddeb70f5
--- /dev/null
+++ b/apt-pkg/contrib/fileutl.h
@@ -0,0 +1,259 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: fileutl.h,v 1.26 2001/05/07 05:06:52 jgg Exp $
+/* ######################################################################
+
+ File Utilities
+
+ CopyFile - Buffered copy of a single file
+ GetLock - dpkg compatible lock file manipulation (fcntl)
+ FileExists - Returns true if the file exists
+ SafeGetCWD - Returns the CWD in a string with overrun protection
+
+ The file class is a handy abstraction for various functions+classes
+ that need to accept filenames.
+
+ This source is placed in the Public Domain, do with it what you will
+ It was originally written by Jason Gunthorpe.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_FILEUTL_H
+#define PKGLIB_FILEUTL_H
+
+#include <apt-pkg/macros.h>
+#include <apt-pkg/aptconfiguration.h>
+
+#include <string>
+#include <vector>
+#include <set>
+#include <time.h>
+
+#include <zlib.h>
+
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+#endif
+
+/* Define this for python-apt */
+#define APT_HAS_GZIP 1
+
+class FileFdPrivate;
+class FileFd
+{
+ friend class FileFdPrivate;
+ friend class GzipFileFdPrivate;
+ friend class Bz2FileFdPrivate;
+ friend class LzmaFileFdPrivate;
+ friend class Lz4FileFdPrivate;
+ friend class DirectFileFdPrivate;
+ friend class PipedFileFdPrivate;
+ protected:
+ int iFd;
+
+ enum LocalFlags {AutoClose = (1<<0),Fail = (1<<1),DelOnFail = (1<<2),
+ HitEof = (1<<3), Replace = (1<<4), Compressed = (1<<5) };
+ unsigned long Flags;
+ std::string FileName;
+ std::string TemporaryFileName;
+
+ public:
+ enum OpenMode {
+ ReadOnly = (1 << 0),
+ WriteOnly = (1 << 1),
+ ReadWrite = ReadOnly | WriteOnly,
+
+ Create = (1 << 2),
+ Exclusive = (1 << 3),
+ Atomic = Exclusive | (1 << 4),
+ Empty = (1 << 5),
+ BufferedWrite = (1 << 6),
+
+ WriteEmpty = ReadWrite | Create | Empty,
+ WriteExists = ReadWrite,
+ WriteAny = ReadWrite | Create,
+ WriteTemp = ReadWrite | Create | Exclusive,
+ ReadOnlyGzip,
+ WriteAtomic = ReadWrite | Create | Atomic
+ };
+ enum CompressMode { Auto = 'A', None = 'N', Extension = 'E', Gzip = 'G', Bzip2 = 'B', Lzma = 'L', Xz = 'X', Lz4='4' };
+
+ inline bool Read(void *To,unsigned long long Size,bool AllowEof)
+ {
+ unsigned long long Jnk;
+ if (AllowEof)
+ return Read(To,Size,&Jnk);
+ return Read(To,Size);
+ }
+ bool Read(void *To,unsigned long long Size,unsigned long long *Actual = 0);
+ bool static Read(int const Fd, void *To, unsigned long long Size, unsigned long long * const Actual = 0);
+ char* ReadLine(char *To, unsigned long long const Size);
+ bool Flush();
+ bool Write(const void *From,unsigned long long Size);
+ bool static Write(int Fd, const void *From, unsigned long long Size);
+ bool Seek(unsigned long long To);
+ bool Skip(unsigned long long To);
+ bool Truncate(unsigned long long To);
+ unsigned long long Tell();
+ // the size of the file content (compressed files will be uncompressed first)
+ unsigned long long Size();
+ // the size of the file itself
+ unsigned long long FileSize();
+ time_t ModificationTime();
+
+ /* You want to use 'unsigned long long' if you are talking about a file
+ to be able to support large files (>2 or >4 GB) properly.
+ This shouldn't happen all to often for the indexes, but deb's might be…
+ And as the auto-conversation converts a 'unsigned long *' to a 'bool'
+ instead of 'unsigned long long *' we need to provide this explicitly -
+ otherwise applications magically start to fail… */
+ bool Read(void *To,unsigned long long Size,unsigned long *Actual) APT_DEPRECATED_MSG("The Actual variable you pass in should be an unsigned long long")
+ {
+ unsigned long long R;
+ bool const T = Read(To, Size, &R);
+ *Actual = R;
+ return T;
+ }
+
+ bool Open(std::string FileName,unsigned int const Mode,CompressMode Compress,unsigned long const AccessMode = 0666);
+ bool Open(std::string FileName,unsigned int const Mode,APT::Configuration::Compressor const &compressor,unsigned long const AccessMode = 0666);
+ inline bool Open(std::string const &FileName,unsigned int const Mode, unsigned long const AccessMode = 0666) {
+ return Open(FileName, Mode, None, AccessMode);
+ };
+ bool OpenDescriptor(int Fd, unsigned int const Mode, CompressMode Compress, bool AutoClose=false);
+ bool OpenDescriptor(int Fd, unsigned int const Mode, APT::Configuration::Compressor const &compressor, bool AutoClose=false);
+ inline bool OpenDescriptor(int Fd, unsigned int const Mode, bool AutoClose=false) {
+ return OpenDescriptor(Fd, Mode, None, AutoClose);
+ };
+ bool Close();
+ bool Sync();
+
+ // Simple manipulators
+ inline int Fd() {return iFd;};
+ inline void Fd(int fd) { OpenDescriptor(fd, ReadWrite);};
+ gzFile gzFd() APT_DEPRECATED_MSG("Implementation detail, do not use to be able to support bzip2, xz and co") APT_PURE;
+
+ inline bool IsOpen() {return iFd >= 0;};
+ inline bool Failed() {return (Flags & Fail) == Fail;};
+ inline void EraseOnFailure() {Flags |= DelOnFail;};
+ inline void OpFail() {Flags |= Fail;};
+ inline bool Eof() {return (Flags & HitEof) == HitEof;};
+ inline bool IsCompressed() {return (Flags & Compressed) == Compressed;};
+ inline std::string &Name() {return FileName;};
+
+ FileFd(std::string FileName,unsigned int const Mode,unsigned long AccessMode = 0666);
+ FileFd(std::string FileName,unsigned int const Mode, CompressMode Compress, unsigned long AccessMode = 0666);
+ FileFd();
+ FileFd(int const Fd, unsigned int const Mode = ReadWrite, CompressMode Compress = None);
+ FileFd(int const Fd, bool const AutoClose);
+ virtual ~FileFd();
+
+ private:
+ FileFdPrivate * d;
+ APT_HIDDEN FileFd & operator=(const FileFd &);
+ APT_HIDDEN bool OpenInternDescriptor(unsigned int const Mode, APT::Configuration::Compressor const &compressor);
+
+ // private helpers to set Fail flag and call _error->Error
+ APT_HIDDEN bool FileFdErrno(const char* Function, const char* Description,...) APT_PRINTF(3) APT_COLD;
+ APT_HIDDEN bool FileFdError(const char* Description,...) APT_PRINTF(2) APT_COLD;
+};
+
+bool RunScripts(const char *Cnf);
+bool CopyFile(FileFd &From,FileFd &To);
+bool RemoveFile(char const * const Function, std::string const &FileName);
+int GetLock(std::string File,bool Errors = true);
+bool FileExists(std::string File);
+bool RealFileExists(std::string File);
+bool DirectoryExists(std::string const &Path);
+bool CreateDirectory(std::string const &Parent, std::string const &Path);
+time_t GetModificationTime(std::string const &Path);
+bool Rename(std::string From, std::string To);
+
+std::string GetTempDir();
+std::string GetTempDir(std::string const &User);
+FileFd* GetTempFile(std::string const &Prefix = "",
+ bool ImmediateUnlink = true,
+ FileFd * const TmpFd = NULL);
+
+/** \brief Ensure the existence of the given Path
+ *
+ * \param Parent directory of the Path directory - a trailing
+ * /apt/ will be removed before CreateDirectory call.
+ * \param Path which should exist after (successful) call
+ */
+bool CreateAPTDirectoryIfNeeded(std::string const &Parent, std::string const &Path);
+
+std::vector<std::string> GetListOfFilesInDir(std::string const &Dir, std::string const &Ext,
+ bool const &SortList, bool const &AllowNoExt=false);
+std::vector<std::string> GetListOfFilesInDir(std::string const &Dir, std::vector<std::string> const &Ext,
+ bool const &SortList);
+std::vector<std::string> GetListOfFilesInDir(std::string const &Dir, bool SortList);
+std::string SafeGetCWD();
+void SetCloseExec(int Fd,bool Close);
+void SetNonBlock(int Fd,bool Block);
+bool WaitFd(int Fd,bool write = false,unsigned long timeout = 0);
+pid_t ExecFork();
+pid_t ExecFork(std::set<int> keep_fds);
+void MergeKeepFdsFromConfiguration(std::set<int> &keep_fds);
+bool ExecWait(pid_t Pid,const char *Name,bool Reap = false);
+
+// check if the given file starts with a PGP cleartext signature
+bool StartsWithGPGClearTextSignature(std::string const &FileName);
+
+/** change file attributes to requested known good values
+ *
+ * The method skips the user:group setting if not root.
+ *
+ * @param requester is printed as functionname in error cases
+ * @param file is the file to be modified
+ * @param user is the (new) owner of the file, e.g. _apt
+ * @param group is the (new) group owning the file, e.g. root
+ * @param mode is the access mode of the file, e.g. 0644
+ */
+bool ChangeOwnerAndPermissionOfFile(char const * const requester, char const * const file, char const * const user, char const * const group, mode_t const mode);
+
+/**
+ * \brief Drop privileges
+ *
+ * Drop the privileges to the user _apt (or the one specified in
+ * APT::Sandbox::User). This does not set the supplementary group
+ * ids up correctly, it only uses the default group. Also prevent
+ * the process from gaining any new privileges afterwards, at least
+ * on Linux.
+ *
+ * \return true on success, false on failure with _error set
+ */
+bool DropPrivileges();
+
+// File string manipulators
+std::string flNotDir(std::string File);
+std::string flNotFile(std::string File);
+std::string flNoLink(std::string File);
+std::string flExtension(std::string File);
+std::string flCombine(std::string Dir,std::string File);
+
+/** \brief Takes a file path and returns the absolute path
+ */
+std::string flAbsPath(std::string File);
+/** \brief removes superfluous /./ and // from path */
+APT_HIDDEN std::string flNormalize(std::string file);
+
+// simple c++ glob
+std::vector<std::string> Glob(std::string const &pattern, int flags=0);
+
+/** \brief Popen() implementation that execv() instead of using a shell
+ *
+ * \param Args the execv style command to run
+ * \param FileFd is a referenz to the FileFd to use for input or output
+ * \param Child a reference to the integer that stores the child pid
+ * Note that you must call ExecWait() or similar to cleanup
+ * \param Mode is either FileFd::ReadOnly or FileFd::WriteOnly
+ * \param CaptureStderr True if we should capture stderr in addition to stdout.
+ * (default: True).
+ * \return true on success, false on failure with _error set
+ */
+bool Popen(const char* Args[], FileFd &Fd, pid_t &Child, FileFd::OpenMode Mode, bool CaptureStderr);
+bool Popen(const char* Args[], FileFd &Fd, pid_t &Child, FileFd::OpenMode Mode);
+
+
+#endif
diff --git a/apt-pkg/contrib/gpgv.cc b/apt-pkg/contrib/gpgv.cc
new file mode 100644
index 000000000..cdf9481cb
--- /dev/null
+++ b/apt-pkg/contrib/gpgv.cc
@@ -0,0 +1,464 @@
+// -*- mode: cpp; mode: fold -*-
+// Include Files /*{{{*/
+#include<config.h>
+
+#include<apt-pkg/configuration.h>
+#include<apt-pkg/error.h>
+#include<apt-pkg/strutl.h>
+#include<apt-pkg/fileutl.h>
+#include<apt-pkg/gpgv.h>
+
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <stddef.h>
+
+#include <algorithm>
+#include <fstream>
+#include <iostream>
+#include <sstream>
+#include <string>
+#include <vector>
+
+#include <apti18n.h>
+ /*}}}*/
+static char * GenerateTemporaryFileTemplate(const char *basename) /*{{{*/
+{
+ std::string out;
+ std::string tmpdir = GetTempDir();
+ strprintf(out, "%s/%s.XXXXXX", tmpdir.c_str(), basename);
+ return strdup(out.c_str());
+}
+ /*}}}*/
+// ExecGPGV - returns the command needed for verify /*{{{*/
+// ---------------------------------------------------------------------
+/* Generating the commandline for calling gpg is somehow complicated as
+ we need to add multiple keyrings and user supplied options.
+ Also, as gpg has no options to enforce a certain reduced style of
+ clear-signed files (=the complete content of the file is signed and
+ the content isn't encoded) we do a divide and conquer approach here
+ and split up the clear-signed file in message and signature for gpg.
+ And as a cherry on the cake, we use our apt-key wrapper to do part
+ of the lifting in regards to merging keyrings. Fun for the whole family.
+*/
+static bool iovprintf(std::ostream &out, const char *format,
+ va_list &args, ssize_t &size) {
+ char *S = (char*)malloc(size);
+ ssize_t const n = vsnprintf(S, size, format, args);
+ if (n > -1 && n < size) {
+ out << S;
+ free(S);
+ return true;
+ } else {
+ if (n > -1)
+ size = n + 1;
+ else
+ size *= 2;
+ }
+ free(S);
+ return false;
+}
+static void APT_PRINTF(4) apt_error(std::ostream &outterm, int const statusfd, int fd[2], const char *format, ...)
+{
+ std::ostringstream outstr;
+ std::ostream &out = (statusfd == -1) ? outterm : outstr;
+ va_list args;
+ ssize_t size = 400;
+ while (true) {
+ bool ret;
+ va_start(args,format);
+ ret = iovprintf(out, format, args, size);
+ va_end(args);
+ if (ret == true)
+ break;
+ }
+ if (statusfd != -1)
+ {
+ auto const errtag = "[APTKEY:] ERROR ";
+ outstr << '\n';
+ auto const errtext = outstr.str();
+ if (FileFd::Write(fd[1], errtag, strlen(errtag)) == false ||
+ FileFd::Write(fd[1], errtext.data(), errtext.size()) == false)
+ outterm << errtext << std::flush;
+ }
+}
+void ExecGPGV(std::string const &File, std::string const &FileGPG,
+ int const &statusfd, int fd[2], std::string const &key)
+{
+ #define EINTERNAL 111
+ std::string const aptkey = _config->Find("Dir::Bin::apt-key", CMAKE_INSTALL_FULL_BINDIR "/apt-key");
+
+ bool const Debug = _config->FindB("Debug::Acquire::gpgv", false);
+ struct exiter {
+ std::vector<const char *> files;
+ void operator ()(int code) APT_NORETURN {
+ std::for_each(files.begin(), files.end(), unlink);
+ exit(code);
+ }
+ } local_exit;
+
+
+ std::vector<const char *> Args;
+ Args.reserve(10);
+
+ Args.push_back(aptkey.c_str());
+ Args.push_back("--quiet");
+ Args.push_back("--readonly");
+ if (key.empty() == false)
+ {
+ if (key[0] == '/')
+ {
+ Args.push_back("--keyring");
+ Args.push_back(key.c_str());
+ }
+ else
+ {
+ Args.push_back("--keyid");
+ Args.push_back(key.c_str());
+ }
+ }
+ Args.push_back("verify");
+
+ char statusfdstr[10];
+ if (statusfd != -1)
+ {
+ Args.push_back("--status-fd");
+ snprintf(statusfdstr, sizeof(statusfdstr), "%i", statusfd);
+ Args.push_back(statusfdstr);
+ }
+
+ Configuration::Item const *Opts;
+ Opts = _config->Tree("Acquire::gpgv::Options");
+ if (Opts != 0)
+ {
+ Opts = Opts->Child;
+ for (; Opts != 0; Opts = Opts->Next)
+ {
+ if (Opts->Value.empty() == true)
+ continue;
+ Args.push_back(Opts->Value.c_str());
+ }
+ }
+
+ enum { DETACHED, CLEARSIGNED } releaseSignature = (FileGPG != File) ? DETACHED : CLEARSIGNED;
+ char * sig = NULL;
+ char * data = NULL;
+ char * conf = nullptr;
+
+ // Dump the configuration so apt-key picks up the correct Dir values
+ {
+ conf = GenerateTemporaryFileTemplate("apt.conf");
+ if (conf == nullptr) {
+ apt_error(std::cerr, statusfd, fd, "Couldn't create tempfile names for passing config to apt-key");
+ local_exit(EINTERNAL);
+ }
+ int confFd = mkstemp(conf);
+ if (confFd == -1) {
+ apt_error(std::cerr, statusfd, fd, "Couldn't create temporary file %s for passing config to apt-key", conf);
+ local_exit(EINTERNAL);
+ }
+ local_exit.files.push_back(conf);
+
+ std::ofstream confStream(conf);
+ close(confFd);
+ _config->Dump(confStream);
+ confStream.close();
+ setenv("APT_CONFIG", conf, 1);
+ }
+
+ if (releaseSignature == DETACHED)
+ {
+ Args.push_back(FileGPG.c_str());
+ Args.push_back(File.c_str());
+ }
+ else // clear-signed file
+ {
+ sig = GenerateTemporaryFileTemplate("apt.sig");
+ data = GenerateTemporaryFileTemplate("apt.data");
+ if (sig == NULL || data == NULL)
+ {
+ apt_error(std::cerr, statusfd, fd, "Couldn't create tempfile names for splitting up %s", File.c_str());
+ local_exit(EINTERNAL);
+ }
+
+ int const sigFd = mkstemp(sig);
+ int const dataFd = mkstemp(data);
+ if (dataFd != -1)
+ local_exit.files.push_back(data);
+ if (sigFd != -1)
+ local_exit.files.push_back(sig);
+ if (sigFd == -1 || dataFd == -1)
+ {
+ apt_error(std::cerr, statusfd, fd, "Couldn't create tempfiles for splitting up %s", File.c_str());
+ local_exit(EINTERNAL);
+ }
+
+ FileFd signature;
+ signature.OpenDescriptor(sigFd, FileFd::WriteOnly, true);
+ FileFd message;
+ message.OpenDescriptor(dataFd, FileFd::WriteOnly, true);
+
+ if (signature.Failed() == true || message.Failed() == true ||
+ SplitClearSignedFile(File, &message, nullptr, &signature) == false)
+ {
+ apt_error(std::cerr, statusfd, fd, "Splitting up %s into data and signature failed", File.c_str());
+ local_exit(112);
+ }
+ Args.push_back(sig);
+ Args.push_back(data);
+ }
+
+ Args.push_back(NULL);
+
+ if (Debug == true)
+ {
+ std::clog << "Preparing to exec: ";
+ for (std::vector<const char *>::const_iterator a = Args.begin(); *a != NULL; ++a)
+ std::clog << " " << *a;
+ std::clog << std::endl;
+ }
+
+ if (statusfd != -1)
+ {
+ int const nullfd = open("/dev/null", O_WRONLY);
+ close(fd[0]);
+ // Redirect output to /dev/null; we read from the status fd
+ if (statusfd != STDOUT_FILENO)
+ dup2(nullfd, STDOUT_FILENO);
+ if (statusfd != STDERR_FILENO)
+ dup2(nullfd, STDERR_FILENO);
+ // Redirect the pipe to the status fd (3)
+ dup2(fd[1], statusfd);
+
+ putenv((char *)"LANG=");
+ putenv((char *)"LC_ALL=");
+ putenv((char *)"LC_MESSAGES=");
+ }
+
+
+ // We have created tempfiles we have to clean up
+ // and we do an additional check, so fork yet another time …
+ pid_t pid = ExecFork();
+ if(pid < 0) {
+ apt_error(std::cerr, statusfd, fd, "Fork failed for %s to check %s", Args[0], File.c_str());
+ local_exit(EINTERNAL);
+ }
+ if(pid == 0)
+ {
+ if (statusfd != -1)
+ dup2(fd[1], statusfd);
+ execvp(Args[0], (char **) &Args[0]);
+ apt_error(std::cerr, statusfd, fd, "Couldn't execute %s to check %s", Args[0], File.c_str());
+ local_exit(EINTERNAL);
+ }
+
+ // Wait and collect the error code - taken from WaitPid as we need the exact Status
+ int Status;
+ while (waitpid(pid,&Status,0) != pid)
+ {
+ if (errno == EINTR)
+ continue;
+ apt_error(std::cerr, statusfd, fd, _("Waited for %s but it wasn't there"), "apt-key");
+ local_exit(EINTERNAL);
+ }
+
+ // check if it exit'ed normally …
+ if (WIFEXITED(Status) == false)
+ {
+ apt_error(std::cerr, statusfd, fd, _("Sub-process %s exited unexpectedly"), "apt-key");
+ local_exit(EINTERNAL);
+ }
+
+ // … and with a good exit code
+ if (WEXITSTATUS(Status) != 0)
+ {
+ // we forward the statuscode, so don't generate a message on the fd in this case
+ apt_error(std::cerr, -1, fd, _("Sub-process %s returned an error code (%u)"), "apt-key", WEXITSTATUS(Status));
+ local_exit(WEXITSTATUS(Status));
+ }
+
+ // everything fine
+ local_exit(0);
+}
+ /*}}}*/
+// SplitClearSignedFile - split message into data/signature /*{{{*/
+static int GetLineErrno(char **lineptr, size_t *n, FILE *stream, std::string const &InFile)
+{
+ int result;
+
+ errno = 0;
+ result = getline(lineptr, n, stream);
+ if (errno != 0)
+ {
+ _error->Errno("getline", "Could not read from %s", InFile.c_str());
+ return -1;
+ }
+
+ return result;
+}
+bool SplitClearSignedFile(std::string const &InFile, FileFd * const ContentFile,
+ std::vector<std::string> * const ContentHeader, FileFd * const SignatureFile)
+{
+ FILE *in = fopen(InFile.c_str(), "r");
+ if (in == NULL)
+ return _error->Errno("fopen", "can not open %s", InFile.c_str());
+
+ bool found_message_start = false;
+ bool found_message_end = false;
+ bool skip_until_empty_line = false;
+ bool found_signature = false;
+ bool first_line = true;
+ bool signed_message_not_on_first_line = false;
+ bool found_garbage = false;
+
+ char *buf = NULL;
+ size_t buf_size = 0;
+ _error->PushToStack();
+ while (GetLineErrno(&buf, &buf_size, in, InFile) != -1)
+ {
+ _strrstrip(buf);
+ if (found_message_start == false)
+ {
+ if (strcmp(buf, "-----BEGIN PGP SIGNED MESSAGE-----") == 0)
+ {
+ found_message_start = true;
+ skip_until_empty_line = true;
+ }
+ else
+ signed_message_not_on_first_line = found_garbage = true;
+ }
+ else if (skip_until_empty_line == true)
+ {
+ if (strlen(buf) == 0)
+ skip_until_empty_line = false;
+ // save "Hash" Armor Headers, others aren't allowed
+ else if (ContentHeader != NULL && strncmp(buf, "Hash: ", strlen("Hash: ")) == 0)
+ ContentHeader->push_back(buf);
+ }
+ else if (found_signature == false)
+ {
+ if (strcmp(buf, "-----BEGIN PGP SIGNATURE-----") == 0)
+ {
+ found_signature = true;
+ found_message_end = true;
+ if (SignatureFile != NULL)
+ {
+ SignatureFile->Write(buf, strlen(buf));
+ SignatureFile->Write("\n", 1);
+ }
+ }
+ else if (found_message_end == false) // we are in the message block
+ {
+ // we don't have any fields which need dash-escaped,
+ // but implementations are free to encode all lines …
+ char const * dashfree = buf;
+ if (strncmp(dashfree, "- ", 2) == 0)
+ dashfree += 2;
+ if(first_line == true) // first line does not need a newline
+ first_line = false;
+ else if (ContentFile != NULL)
+ ContentFile->Write("\n", 1);
+ else
+ continue;
+ if (ContentFile != NULL)
+ ContentFile->Write(dashfree, strlen(dashfree));
+ }
+ else
+ found_garbage = true;
+ }
+ else if (found_signature == true)
+ {
+ if (SignatureFile != NULL)
+ {
+ SignatureFile->Write(buf, strlen(buf));
+ SignatureFile->Write("\n", 1);
+ }
+ if (strcmp(buf, "-----END PGP SIGNATURE-----") == 0)
+ found_signature = false; // look for other signatures
+ }
+ // all the rest is whitespace, unsigned garbage or additional message blocks we ignore
+ else
+ found_garbage = true;
+ }
+ fclose(in);
+ if (buf != NULL)
+ free(buf);
+
+ // Flush the files. Errors will be checked below.
+ if (SignatureFile != nullptr)
+ SignatureFile->Flush();
+ if (ContentFile != nullptr)
+ ContentFile->Flush();
+
+ if (found_message_start)
+ {
+ if (signed_message_not_on_first_line)
+ _error->Warning("Clearsigned file '%s' does not start with a signed message block.", InFile.c_str());
+ else if (found_garbage)
+ _error->Warning("Clearsigned file '%s' contains unsigned lines.", InFile.c_str());
+ }
+
+ // An error occurred during reading - propagate it up
+ bool const hasErrored = _error->PendingError();
+ _error->MergeWithStack();
+ if (hasErrored)
+ return false;
+
+ if (found_signature == true)
+ return _error->Error("Signature in file %s wasn't closed", InFile.c_str());
+
+ // if we haven't found any of them, this an unsigned file,
+ // so don't generate an error, but splitting was unsuccessful none-the-less
+ if (first_line == true && found_message_start == false && found_message_end == false)
+ return false;
+ // otherwise one missing indicates a syntax error
+ else if (first_line == true || found_message_start == false || found_message_end == false)
+ return _error->Error("Splitting of file %s failed as it doesn't contain all expected parts %i %i %i", InFile.c_str(), first_line, found_message_start, found_message_end);
+
+ return true;
+}
+ /*}}}*/
+bool OpenMaybeClearSignedFile(std::string const &ClearSignedFileName, FileFd &MessageFile) /*{{{*/
+{
+ char * const message = GenerateTemporaryFileTemplate("fileutl.message");
+ int const messageFd = mkstemp(message);
+ if (messageFd == -1)
+ {
+ free(message);
+ return _error->Errno("mkstemp", "Couldn't create temporary file to work with %s", ClearSignedFileName.c_str());
+ }
+ // we have the fd, that's enough for us
+ unlink(message);
+ free(message);
+
+ MessageFile.OpenDescriptor(messageFd, FileFd::ReadWrite | FileFd::BufferedWrite, true);
+ if (MessageFile.Failed() == true)
+ return _error->Error("Couldn't open temporary file to work with %s", ClearSignedFileName.c_str());
+
+ _error->PushToStack();
+ bool const splitDone = SplitClearSignedFile(ClearSignedFileName, &MessageFile, NULL, NULL);
+ bool const errorDone = _error->PendingError();
+ _error->MergeWithStack();
+ if (splitDone == false)
+ {
+ MessageFile.Close();
+
+ if (errorDone == true)
+ return false;
+
+ // we deal with an unsigned file
+ MessageFile.Open(ClearSignedFileName, FileFd::ReadOnly);
+ }
+ else // clear-signed
+ {
+ if (MessageFile.Seek(0) == false)
+ return _error->Errno("lseek", "Unable to seek back in message for file %s", ClearSignedFileName.c_str());
+ }
+
+ return MessageFile.Failed() == false;
+}
+ /*}}}*/
diff --git a/apt-pkg/contrib/gpgv.h b/apt-pkg/contrib/gpgv.h
new file mode 100644
index 000000000..2a4cdad72
--- /dev/null
+++ b/apt-pkg/contrib/gpgv.h
@@ -0,0 +1,92 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Helpers to deal with gpgv better and more easily
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef CONTRIB_GPGV_H
+#define CONTRIB_GPGV_H
+
+#include <apt-pkg/macros.h>
+
+#include <string>
+#include <vector>
+
+#ifndef APT_10_CLEANER_HEADERS
+#include <apt-pkg/fileutl.h>
+#endif
+
+class FileFd;
+
+/** \brief generates and run the command to verify a file with gpgv
+ *
+ * If File and FileSig specify the same file it is assumed that we
+ * deal with a clear-signed message. Note that the method will accept
+ * and validate files which include additional (unsigned) messages
+ * without complaining. Do NOT open files accepted by this method
+ * for reading. Use #OpenMaybeClearSignedFile to access the message
+ * instead to ensure you are only reading signed data.
+ *
+ * The method does not return, but has some notable exit-codes:
+ * 111 signals an internal error like the inability to execute gpgv,
+ * 112 indicates a clear-signed file which doesn't include a message,
+ * which can happen if APT is run while on a network requiring
+ * authentication before usage (e.g. in hotels)
+ * All other exit-codes are passed-through from gpgv.
+ *
+ * @param File is the message (unsigned or clear-signed)
+ * @param FileSig is the signature (detached or clear-signed)
+ * @param statusfd is the fd given to gpgv as --status-fd
+ * @param fd is used as a pipe for the standard output of gpgv
+ * @param key is the specific one to be used instead of using all
+ */
+void ExecGPGV(std::string const &File, std::string const &FileSig,
+ int const &statusfd, int fd[2], std::string const &Key = "") APT_NORETURN;
+inline APT_NORETURN void ExecGPGV(std::string const &File, std::string const &FileSig,
+ int const &statusfd = -1) {
+ int fd[2];
+ ExecGPGV(File, FileSig, statusfd, fd);
+}
+
+/** \brief Split an inline signature into message and signature
+ *
+ * Takes a clear-signed message and puts the first signed message
+ * in the content file and all signatures following it into the
+ * second. Unsigned messages, additional messages as well as
+ * whitespaces are discarded. The resulting files are suitable to
+ * be checked with gpgv.
+ *
+ * If a FileFd pointers is NULL it will not be used and the content
+ * which would have been written to it is silently discarded.
+ *
+ * The content of the split files is undefined if the splitting was
+ * unsuccessful.
+ *
+ * Note that trying to split an unsigned file will fail, but
+ * not generate an error message.
+ *
+ * @param InFile is the clear-signed file
+ * @param ContentFile is the FileFd the message will be written to
+ * @param ContentHeader is a list of all required Amored Headers for the message
+ * @param SignatureFile is the FileFd all signatures will be written to
+ * @return true if the splitting was successful, false otherwise
+ */
+bool SplitClearSignedFile(std::string const &InFile, FileFd * const ContentFile,
+ std::vector<std::string> * const ContentHeader, FileFd * const SignatureFile);
+
+/** \brief open a file which might be clear-signed
+ *
+ * This method tries to extract the (signed) message of a file.
+ * If the file isn't signed it will just open the given filename.
+ * Otherwise the message is extracted to a temporary file which
+ * will be opened instead.
+ *
+ * @param ClearSignedFileName is the name of the file to open
+ * @param[out] MessageFile is the FileFd in which the file will be opened
+ * @return true if opening was successful, otherwise false
+ */
+bool OpenMaybeClearSignedFile(std::string const &ClearSignedFileName, FileFd &MessageFile);
+
+#endif
diff --git a/apt-pkg/contrib/hashes.cc b/apt-pkg/contrib/hashes.cc
new file mode 100644
index 000000000..662c2bf8b
--- /dev/null
+++ b/apt-pkg/contrib/hashes.cc
@@ -0,0 +1,411 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: hashes.cc,v 1.1 2001/03/06 07:15:29 jgg Exp $
+/* ######################################################################
+
+ Hashes - Simple wrapper around the hash functions
+
+ This is just used to make building the methods simpler, this is the
+ only interface required..
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/md5.h>
+#include <apt-pkg/sha1.h>
+#include <apt-pkg/sha2.h>
+
+#include <stddef.h>
+#include <algorithm>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string>
+#include <iostream>
+ /*}}}*/
+
+const char * HashString::_SupportedHashes[] =
+{
+ "SHA512", "SHA256", "SHA1", "MD5Sum", "Checksum-FileSize", NULL
+};
+
+HashString::HashString()
+{
+}
+
+HashString::HashString(std::string Type, std::string Hash) : Type(Type), Hash(Hash)
+{
+}
+
+HashString::HashString(std::string StringedHash) /*{{{*/
+{
+ if (StringedHash.find(":") == std::string::npos)
+ {
+ // legacy: md5sum without "MD5Sum:" prefix
+ if (StringedHash.size() == 32)
+ {
+ Type = "MD5Sum";
+ Hash = StringedHash;
+ }
+ if(_config->FindB("Debug::Hashes",false) == true)
+ std::clog << "HashString(string): invalid StringedHash " << StringedHash << std::endl;
+ return;
+ }
+ std::string::size_type pos = StringedHash.find(":");
+ Type = StringedHash.substr(0,pos);
+ Hash = StringedHash.substr(pos+1, StringedHash.size() - pos);
+
+ if(_config->FindB("Debug::Hashes",false) == true)
+ std::clog << "HashString(string): " << Type << " : " << Hash << std::endl;
+}
+ /*}}}*/
+bool HashString::VerifyFile(std::string filename) const /*{{{*/
+{
+ std::string fileHash = GetHashForFile(filename);
+
+ if(_config->FindB("Debug::Hashes",false) == true)
+ std::clog << "HashString::VerifyFile: got: " << fileHash << " expected: " << toStr() << std::endl;
+
+ return (fileHash == Hash);
+}
+ /*}}}*/
+bool HashString::FromFile(std::string filename) /*{{{*/
+{
+ // pick the strongest hash
+ if (Type == "")
+ Type = _SupportedHashes[0];
+
+ Hash = GetHashForFile(filename);
+ return true;
+}
+ /*}}}*/
+std::string HashString::GetHashForFile(std::string filename) const /*{{{*/
+{
+ std::string fileHash;
+
+ FileFd Fd(filename, FileFd::ReadOnly);
+ if(strcasecmp(Type.c_str(), "MD5Sum") == 0)
+ {
+ MD5Summation MD5;
+ MD5.AddFD(Fd);
+ fileHash = (std::string)MD5.Result();
+ }
+ else if (strcasecmp(Type.c_str(), "SHA1") == 0)
+ {
+ SHA1Summation SHA1;
+ SHA1.AddFD(Fd);
+ fileHash = (std::string)SHA1.Result();
+ }
+ else if (strcasecmp(Type.c_str(), "SHA256") == 0)
+ {
+ SHA256Summation SHA256;
+ SHA256.AddFD(Fd);
+ fileHash = (std::string)SHA256.Result();
+ }
+ else if (strcasecmp(Type.c_str(), "SHA512") == 0)
+ {
+ SHA512Summation SHA512;
+ SHA512.AddFD(Fd);
+ fileHash = (std::string)SHA512.Result();
+ }
+ else if (strcasecmp(Type.c_str(), "Checksum-FileSize") == 0)
+ strprintf(fileHash, "%llu", Fd.FileSize());
+ Fd.Close();
+
+ return fileHash;
+}
+ /*}}}*/
+const char** HashString::SupportedHashes() /*{{{*/
+{
+ return _SupportedHashes;
+}
+ /*}}}*/
+APT_PURE bool HashString::empty() const /*{{{*/
+{
+ return (Type.empty() || Hash.empty());
+}
+ /*}}}*/
+
+APT_PURE static bool IsConfigured(const char *name, const char *what)
+{
+ std::string option;
+ strprintf(option, "APT::Hashes::%s::%s", name, what);
+ return _config->FindB(option, false);
+}
+
+APT_PURE bool HashString::usable() const /*{{{*/
+{
+ return (
+ (Type != "Checksum-FileSize") &&
+ (Type != "MD5Sum") &&
+ (Type != "SHA1") &&
+ !IsConfigured(Type.c_str(), "Untrusted")
+ );
+}
+ /*}}}*/
+std::string HashString::toStr() const /*{{{*/
+{
+ return Type + ":" + Hash;
+}
+ /*}}}*/
+APT_PURE bool HashString::operator==(HashString const &other) const /*{{{*/
+{
+ return (strcasecmp(Type.c_str(), other.Type.c_str()) == 0 && Hash == other.Hash);
+}
+APT_PURE bool HashString::operator!=(HashString const &other) const
+{
+ return !(*this == other);
+}
+ /*}}}*/
+
+bool HashStringList::usable() const /*{{{*/
+{
+ if (empty() == true)
+ return false;
+ std::string const forcedType = _config->Find("Acquire::ForceHash", "");
+ if (forcedType.empty() == true)
+ {
+ // See if there is at least one usable hash
+ for (auto const &hs: list)
+ if (hs.usable())
+ return true;
+ return false;
+ }
+ return find(forcedType) != NULL;
+}
+ /*}}}*/
+HashString const * HashStringList::find(char const * const type) const /*{{{*/
+{
+ if (type == NULL || type[0] == '\0')
+ {
+ std::string const forcedType = _config->Find("Acquire::ForceHash", "");
+ if (forcedType.empty() == false)
+ return find(forcedType.c_str());
+ for (char const * const * t = HashString::SupportedHashes(); *t != NULL; ++t)
+ for (std::vector<HashString>::const_iterator hs = list.begin(); hs != list.end(); ++hs)
+ if (strcasecmp(hs->HashType().c_str(), *t) == 0)
+ return &*hs;
+ return NULL;
+ }
+ for (std::vector<HashString>::const_iterator hs = list.begin(); hs != list.end(); ++hs)
+ if (strcasecmp(hs->HashType().c_str(), type) == 0)
+ return &*hs;
+ return NULL;
+}
+ /*}}}*/
+unsigned long long HashStringList::FileSize() const /*{{{*/
+{
+ HashString const * const hsf = find("Checksum-FileSize");
+ if (hsf == NULL)
+ return 0;
+ std::string const hv = hsf->HashValue();
+ return strtoull(hv.c_str(), NULL, 10);
+}
+ /*}}}*/
+bool HashStringList::FileSize(unsigned long long const Size) /*{{{*/
+{
+ std::string size;
+ strprintf(size, "%llu", Size);
+ return push_back(HashString("Checksum-FileSize", size));
+}
+ /*}}}*/
+bool HashStringList::supported(char const * const type) /*{{{*/
+{
+ for (char const * const * t = HashString::SupportedHashes(); *t != NULL; ++t)
+ if (strcasecmp(*t, type) == 0)
+ return true;
+ return false;
+}
+ /*}}}*/
+bool HashStringList::push_back(const HashString &hashString) /*{{{*/
+{
+ if (hashString.HashType().empty() == true ||
+ hashString.HashValue().empty() == true ||
+ supported(hashString.HashType().c_str()) == false)
+ return false;
+
+ // ensure that each type is added only once
+ HashString const * const hs = find(hashString.HashType().c_str());
+ if (hs != NULL)
+ return *hs == hashString;
+
+ list.push_back(hashString);
+ return true;
+}
+ /*}}}*/
+bool HashStringList::VerifyFile(std::string filename) const /*{{{*/
+{
+ if (usable() == false)
+ return false;
+
+ Hashes hashes(*this);
+ FileFd file(filename, FileFd::ReadOnly);
+ HashString const * const hsf = find("Checksum-FileSize");
+ if (hsf != NULL)
+ {
+ std::string fileSize;
+ strprintf(fileSize, "%llu", file.FileSize());
+ if (hsf->HashValue() != fileSize)
+ return false;
+ }
+ hashes.AddFD(file);
+ HashStringList const hsl = hashes.GetHashStringList();
+ return hsl == *this;
+}
+ /*}}}*/
+bool HashStringList::operator==(HashStringList const &other) const /*{{{*/
+{
+ std::string const forcedType = _config->Find("Acquire::ForceHash", "");
+ if (forcedType.empty() == false)
+ {
+ HashString const * const hs = find(forcedType);
+ HashString const * const ohs = other.find(forcedType);
+ if (hs == NULL || ohs == NULL)
+ return false;
+ return *hs == *ohs;
+ }
+ short matches = 0;
+ for (const_iterator hs = begin(); hs != end(); ++hs)
+ {
+ HashString const * const ohs = other.find(hs->HashType());
+ if (ohs == NULL)
+ continue;
+ if (*hs != *ohs)
+ return false;
+ ++matches;
+ }
+ if (matches == 0)
+ return false;
+ return true;
+}
+bool HashStringList::operator!=(HashStringList const &other) const
+{
+ return !(*this == other);
+}
+ /*}}}*/
+
+// PrivateHashes /*{{{*/
+class PrivateHashes {
+public:
+ unsigned long long FileSize;
+ unsigned int CalcHashes;
+
+ explicit PrivateHashes(unsigned int const CalcHashes) : FileSize(0), CalcHashes(CalcHashes) {}
+ explicit PrivateHashes(HashStringList const &Hashes) : FileSize(0) {
+ unsigned int calcHashes = Hashes.usable() ? 0 : ~0;
+ if (Hashes.find("MD5Sum") != NULL)
+ calcHashes |= Hashes::MD5SUM;
+ if (Hashes.find("SHA1") != NULL)
+ calcHashes |= Hashes::SHA1SUM;
+ if (Hashes.find("SHA256") != NULL)
+ calcHashes |= Hashes::SHA256SUM;
+ if (Hashes.find("SHA512") != NULL)
+ calcHashes |= Hashes::SHA512SUM;
+ CalcHashes = calcHashes;
+ }
+};
+ /*}}}*/
+// Hashes::Add* - Add the contents of data or FD /*{{{*/
+bool Hashes::Add(const unsigned char * const Data, unsigned long long const Size)
+{
+ if (Size == 0)
+ return true;
+ bool Res = true;
+APT_IGNORE_DEPRECATED_PUSH
+ if ((d->CalcHashes & MD5SUM) == MD5SUM)
+ Res &= MD5.Add(Data, Size);
+ if ((d->CalcHashes & SHA1SUM) == SHA1SUM)
+ Res &= SHA1.Add(Data, Size);
+ if ((d->CalcHashes & SHA256SUM) == SHA256SUM)
+ Res &= SHA256.Add(Data, Size);
+ if ((d->CalcHashes & SHA512SUM) == SHA512SUM)
+ Res &= SHA512.Add(Data, Size);
+APT_IGNORE_DEPRECATED_POP
+ d->FileSize += Size;
+ return Res;
+}
+bool Hashes::Add(const unsigned char * const Data, unsigned long long const Size, unsigned int const Hashes)
+{
+ d->CalcHashes = Hashes;
+ return Add(Data, Size);
+}
+bool Hashes::AddFD(int const Fd,unsigned long long Size)
+{
+ unsigned char Buf[64*64];
+ bool const ToEOF = (Size == UntilEOF);
+ while (Size != 0 || ToEOF)
+ {
+ unsigned long long n = sizeof(Buf);
+ if (!ToEOF) n = std::min(Size, n);
+ ssize_t const Res = read(Fd,Buf,n);
+ if (Res < 0 || (!ToEOF && Res != (ssize_t) n)) // error, or short read
+ return false;
+ if (ToEOF && Res == 0) // EOF
+ break;
+ Size -= Res;
+ if (Add(Buf, Res) == false)
+ return false;
+ }
+ return true;
+}
+bool Hashes::AddFD(int const Fd,unsigned long long Size, unsigned int const Hashes)
+{
+ d->CalcHashes = Hashes;
+ return AddFD(Fd, Size);
+}
+bool Hashes::AddFD(FileFd &Fd,unsigned long long Size)
+{
+ unsigned char Buf[64*64];
+ bool const ToEOF = (Size == 0);
+ while (Size != 0 || ToEOF)
+ {
+ unsigned long long n = sizeof(Buf);
+ if (!ToEOF) n = std::min(Size, n);
+ unsigned long long a = 0;
+ if (Fd.Read(Buf, n, &a) == false) // error
+ return false;
+ if (ToEOF == false)
+ {
+ if (a != n) // short read
+ return false;
+ }
+ else if (a == 0) // EOF
+ break;
+ Size -= a;
+ if (Add(Buf, a) == false)
+ return false;
+ }
+ return true;
+}
+bool Hashes::AddFD(FileFd &Fd,unsigned long long Size, unsigned int const Hashes)
+{
+ d->CalcHashes = Hashes;
+ return AddFD(Fd, Size);
+}
+ /*}}}*/
+HashStringList Hashes::GetHashStringList()
+{
+ HashStringList hashes;
+APT_IGNORE_DEPRECATED_PUSH
+ if ((d->CalcHashes & MD5SUM) == MD5SUM)
+ hashes.push_back(HashString("MD5Sum", MD5.Result().Value()));
+ if ((d->CalcHashes & SHA1SUM) == SHA1SUM)
+ hashes.push_back(HashString("SHA1", SHA1.Result().Value()));
+ if ((d->CalcHashes & SHA256SUM) == SHA256SUM)
+ hashes.push_back(HashString("SHA256", SHA256.Result().Value()));
+ if ((d->CalcHashes & SHA512SUM) == SHA512SUM)
+ hashes.push_back(HashString("SHA512", SHA512.Result().Value()));
+APT_IGNORE_DEPRECATED_POP
+ hashes.FileSize(d->FileSize);
+ return hashes;
+}
+APT_IGNORE_DEPRECATED_PUSH
+Hashes::Hashes() : d(new PrivateHashes(~0)) { }
+Hashes::Hashes(unsigned int const Hashes) : d(new PrivateHashes(Hashes)) {}
+Hashes::Hashes(HashStringList const &Hashes) : d(new PrivateHashes(Hashes)) {}
+Hashes::~Hashes() { delete d; }
+APT_IGNORE_DEPRECATED_POP
diff --git a/apt-pkg/contrib/hashes.h b/apt-pkg/contrib/hashes.h
new file mode 100644
index 000000000..1fe0afc00
--- /dev/null
+++ b/apt-pkg/contrib/hashes.h
@@ -0,0 +1,252 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: hashes.h,v 1.2 2001/03/11 05:30:20 jgg Exp $
+/* ######################################################################
+
+ Hashes - Simple wrapper around the hash functions
+
+ This is just used to make building the methods simpler, this is the
+ only interface required..
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef APTPKG_HASHES_H
+#define APTPKG_HASHES_H
+
+
+#include <apt-pkg/md5.h>
+#include <apt-pkg/sha1.h>
+#include <apt-pkg/sha2.h>
+#include <apt-pkg/macros.h>
+
+#include <cstring>
+#include <string>
+
+#ifndef APT_8_CLEANER_HEADERS
+using std::min;
+using std::vector;
+#endif
+#ifndef APT_10_CLEANER_HEADERS
+#include <apt-pkg/fileutl.h>
+#include <algorithm>
+#include <vector>
+#endif
+
+
+class FileFd;
+
+// helper class that contains hash function name
+// and hash
+class HashString
+{
+ protected:
+ std::string Type;
+ std::string Hash;
+ static const char * _SupportedHashes[10];
+
+ // internal helper
+ std::string GetHashForFile(std::string filename) const;
+
+ public:
+ HashString(std::string Type, std::string Hash);
+ HashString(std::string StringedHashString); // init from str as "type:hash"
+ HashString();
+
+ // get hash type used
+ std::string HashType() const { return Type; };
+ std::string HashValue() const { return Hash; };
+ APT_DEPRECATED_MSG("method was const-ified") std::string HashType() { return Type; };
+ APT_DEPRECATED_MSG("method was const-ified") std::string HashValue() { return Hash; };
+
+ // verify the given filename against the currently loaded hash
+ bool VerifyFile(std::string filename) const;
+
+ // generate a hash string from the given filename
+ bool FromFile(std::string filename);
+
+
+ // helper
+ std::string toStr() const; // convert to str as "type:hash"
+ bool empty() const;
+ bool usable() const;
+ bool operator==(HashString const &other) const;
+ bool operator!=(HashString const &other) const;
+
+ // return the list of hashes we support
+ static APT_CONST const char** SupportedHashes();
+};
+
+class HashStringList
+{
+ public:
+ /** find best hash if no specific one is requested
+ *
+ * @param type of the checksum to return, can be \b NULL
+ * @return If type is \b NULL (or the empty string) it will
+ * return the 'best' hash; otherwise the hash which was
+ * specifically requested. If no hash is found \b NULL will be returned.
+ */
+ HashString const * find(char const * const type) const;
+ HashString const * find(std::string const &type) const { return find(type.c_str()); }
+
+ /** finds the filesize hash and returns it as number
+ *
+ * @return beware: if the size isn't known we return \b 0 here,
+ * just like we would do for an empty file. If that is a problem
+ * for you have to get the size manually out of the list.
+ */
+ unsigned long long FileSize() const;
+
+ /** sets the filesize hash
+ *
+ * @param Size of the file
+ * @return @see #push_back
+ */
+ bool FileSize(unsigned long long const Size);
+
+ /** check if the given hash type is supported
+ *
+ * @param type to check
+ * @return true if supported, otherwise false
+ */
+ static APT_PURE bool supported(char const * const type);
+ /** add the given #HashString to the list
+ *
+ * @param hashString to add
+ * @return true if the hash is added because it is supported and
+ * not already a different hash of the same type included, otherwise false
+ */
+ bool push_back(const HashString &hashString);
+ /** @return size of the list of HashStrings */
+ size_t size() const { return list.size(); }
+
+ /** verify file against all hashes in the list
+ *
+ * @param filename to verify
+ * @return true if the file matches the hashsum, otherwise false
+ */
+ bool VerifyFile(std::string filename) const;
+
+ /** is the list empty ?
+ *
+ * @return \b true if the list is empty, otherwise \b false
+ */
+ bool empty() const { return list.empty(); }
+
+ /** has the list at least one good entry
+ *
+ * similar to #empty, but handles forced hashes.
+ *
+ * @return if no hash is forced, same result as #empty,
+ * if one is forced \b true if this has is available, \b false otherwise
+ */
+ bool usable() const;
+
+ typedef std::vector<HashString>::const_iterator const_iterator;
+
+ /** iterator to the first element */
+ const_iterator begin() const { return list.begin(); }
+
+ /** iterator to the end element */
+ const_iterator end() const { return list.end(); }
+
+ /** start fresh with a clear list */
+ void clear() { list.clear(); }
+
+ /** compare two HashStringList for similarity.
+ *
+ * Two lists are similar if at least one hashtype is in both lists
+ * and the hashsum matches. All hashes are checked by default,
+ * if one doesn't match false is returned regardless of how many
+ * matched before. If a hash is forced, only this hash is compared,
+ * all others are ignored.
+ */
+ bool operator==(HashStringList const &other) const;
+ bool operator!=(HashStringList const &other) const;
+
+ HashStringList() {}
+
+ // simplifying API-compatibility constructors
+ HashStringList(std::string const &hash) {
+ if (hash.empty() == false)
+ list.push_back(HashString(hash));
+ }
+ HashStringList(char const * const hash) {
+ if (hash != NULL && hash[0] != '\0')
+ list.push_back(HashString(hash));
+ }
+
+ private:
+ std::vector<HashString> list;
+};
+
+class PrivateHashes;
+class Hashes
+{
+ PrivateHashes * const d;
+
+ public:
+ /* those will disappear in the future as it is hard to add new ones this way.
+ * Use Add* to build the results and get them via GetHashStringList() instead */
+ APT_DEPRECATED_MSG("Use general .Add* and .GetHashStringList methods instead of hardcoding specific hashes") MD5Summation MD5;
+ APT_DEPRECATED_MSG("Use general .Add* and .GetHashStringList methods instead of hardcoding specific hashes") SHA1Summation SHA1;
+ APT_DEPRECATED_MSG("Use general .Add* and .GetHashStringList methods instead of hardcoding specific hashes") SHA256Summation SHA256;
+ APT_DEPRECATED_MSG("Use general .Add* and .GetHashStringList methods instead of hardcoding specific hashes") SHA512Summation SHA512;
+
+ static const int UntilEOF = 0;
+
+ bool Add(const unsigned char * const Data, unsigned long long const Size) APT_NONNULL(2);
+ APT_DEPRECATED_MSG("Construct accordingly instead of choosing hashes while adding") bool Add(const unsigned char * const Data, unsigned long long const Size, unsigned int const Hashes) APT_NONNULL(2);
+ inline bool Add(const char * const Data) APT_NONNULL(2)
+ {return Add((unsigned char const * const)Data,strlen(Data));};
+ inline bool Add(const unsigned char * const Beg,const unsigned char * const End) APT_NONNULL(2,3)
+ {return Add(Beg,End-Beg);};
+
+ enum SupportedHashes { MD5SUM = (1 << 0), SHA1SUM = (1 << 1), SHA256SUM = (1 << 2),
+ SHA512SUM = (1 << 3) };
+ bool AddFD(int const Fd,unsigned long long Size = 0);
+ APT_DEPRECATED_MSG("Construct accordingly instead of choosing hashes while adding") bool AddFD(int const Fd,unsigned long long Size, unsigned int const Hashes);
+ bool AddFD(FileFd &Fd,unsigned long long Size = 0);
+ APT_DEPRECATED_MSG("Construct accordingly instead of choosing hashes while adding") bool AddFD(FileFd &Fd,unsigned long long Size, unsigned int const Hashes);
+
+ HashStringList GetHashStringList();
+
+APT_IGNORE_DEPRECATED_PUSH
+ /** create a Hashes object to calculate all supported hashes
+ *
+ * If ALL is too much, you can limit which Hashes are calculated
+ * with the following other constructors which mention explicitly
+ * which hashes to generate. */
+ Hashes();
+ /** @param Hashes bitflag composed of #SupportedHashes */
+ Hashes(unsigned int const Hashes);
+ /** @param Hashes is a list of hashes */
+ Hashes(HashStringList const &Hashes);
+ virtual ~Hashes();
+APT_IGNORE_DEPRECATED_POP
+
+ private:
+ APT_HIDDEN APT_CONST inline unsigned int boolsToFlag(bool const addMD5, bool const addSHA1, bool const addSHA256, bool const addSHA512)
+ {
+ unsigned int Hashes = ~0;
+ if (addMD5 == false) Hashes &= ~MD5SUM;
+ if (addSHA1 == false) Hashes &= ~SHA1SUM;
+ if (addSHA256 == false) Hashes &= ~SHA256SUM;
+ if (addSHA512 == false) Hashes &= ~SHA512SUM;
+ return Hashes;
+ }
+
+ public:
+APT_IGNORE_DEPRECATED_PUSH
+ APT_DEPRECATED_MSG("Construct accordingly instead of choosing hashes while adding") bool AddFD(int const Fd, unsigned long long Size, bool const addMD5,
+ bool const addSHA1, bool const addSHA256, bool const addSHA512) {
+ return AddFD(Fd, Size, boolsToFlag(addMD5, addSHA1, addSHA256, addSHA512));
+ };
+ APT_DEPRECATED_MSG("Construct accordingly instead of choosing hashes while adding") bool AddFD(FileFd &Fd, unsigned long long Size, bool const addMD5,
+ bool const addSHA1, bool const addSHA256, bool const addSHA512) {
+ return AddFD(Fd, Size, boolsToFlag(addMD5, addSHA1, addSHA256, addSHA512));
+ };
+APT_IGNORE_DEPRECATED_POP
+};
+
+#endif
diff --git a/apt-pkg/contrib/hashsum.cc b/apt-pkg/contrib/hashsum.cc
new file mode 100644
index 000000000..25ccc187d
--- /dev/null
+++ b/apt-pkg/contrib/hashsum.cc
@@ -0,0 +1,52 @@
+// Cryptographic API Base
+#include <config.h>
+
+#include <apt-pkg/fileutl.h>
+
+#include <algorithm>
+#include <unistd.h>
+#include "hashsum_template.h"
+
+// Summation::AddFD - Add content of file into the checksum /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool SummationImplementation::AddFD(int const Fd, unsigned long long Size) {
+ unsigned char Buf[64 * 64];
+ bool const ToEOF = (Size == 0);
+ while (Size != 0 || ToEOF)
+ {
+ unsigned long long n = sizeof(Buf);
+ if (!ToEOF) n = std::min(Size, n);
+ ssize_t const Res = read(Fd, Buf, n);
+ if (Res < 0 || (!ToEOF && Res != (ssize_t) n)) // error, or short read
+ return false;
+ if (ToEOF && Res == 0) // EOF
+ break;
+ Size -= Res;
+ Add(Buf,Res);
+ }
+ return true;
+}
+bool SummationImplementation::AddFD(FileFd &Fd, unsigned long long Size) {
+ unsigned char Buf[64 * 64];
+ bool const ToEOF = (Size == 0);
+ while (Size != 0 || ToEOF)
+ {
+ unsigned long long n = sizeof(Buf);
+ if (!ToEOF) n = std::min(Size, n);
+ unsigned long long a = 0;
+ if (Fd.Read(Buf, n, &a) == false) // error
+ return false;
+ if (ToEOF == false)
+ {
+ if (a != n) // short read
+ return false;
+ }
+ else if (a == 0) // EOF
+ break;
+ Size -= a;
+ Add(Buf, a);
+ }
+ return true;
+}
+ /*}}}*/
diff --git a/apt-pkg/contrib/hashsum_template.h b/apt-pkg/contrib/hashsum_template.h
new file mode 100644
index 000000000..e5032d02f
--- /dev/null
+++ b/apt-pkg/contrib/hashsum_template.h
@@ -0,0 +1,143 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: hashsum_template.h,v 1.3 2001/05/07 05:05:47 jgg Exp $
+/* ######################################################################
+
+ HashSumValueTemplate - Generic Storage for a hash value
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef APTPKG_HASHSUM_TEMPLATE_H
+#define APTPKG_HASHSUM_TEMPLATE_H
+
+
+#include <string>
+#include <cstring>
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+#include <apt-pkg/string_view.h>
+#endif
+
+#include <apt-pkg/strutl.h>
+
+#ifndef APT_10_CLEANER_HEADERS
+#include <apt-pkg/fileutl.h>
+#include <algorithm>
+#include <stdint.h>
+#endif
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+using std::min;
+#endif
+
+class FileFd;
+
+template<int N>
+class HashSumValue
+{
+ unsigned char Sum[N/8];
+
+ public:
+
+ // Accessors
+ bool operator ==(const HashSumValue &rhs) const
+ {
+ return memcmp(Sum,rhs.Sum,sizeof(Sum)) == 0;
+ }
+ bool operator !=(const HashSumValue &rhs) const
+ {
+ return memcmp(Sum,rhs.Sum,sizeof(Sum)) != 0;
+ }
+
+ std::string Value() const
+ {
+ char Conv[16] =
+ { '0','1','2','3','4','5','6','7','8','9','a','b',
+ 'c','d','e','f'
+ };
+ char Result[((N/8)*2)+1];
+ Result[(N/8)*2] = 0;
+
+ // Convert each char into two letters
+ int J = 0;
+ int I = 0;
+ for (; I != (N/8)*2; J++,I += 2)
+ {
+ Result[I] = Conv[Sum[J] >> 4];
+ Result[I + 1] = Conv[Sum[J] & 0xF];
+ }
+ return std::string(Result);
+ }
+
+ inline void Value(unsigned char S[N/8])
+ {
+ for (int I = 0; I != sizeof(Sum); ++I)
+ S[I] = Sum[I];
+ }
+
+ inline operator std::string() const
+ {
+ return Value();
+ }
+
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ APT_HIDDEN bool Set(APT::StringView Str)
+ {
+ return Hex2Num(Str,Sum,sizeof(Sum));
+ }
+#else
+ bool Set(std::string Str)
+ {
+ return Hex2Num(Str,Sum,sizeof(Sum));
+ }
+#endif
+ inline void Set(unsigned char S[N/8])
+ {
+ for (int I = 0; I != sizeof(Sum); ++I)
+ Sum[I] = S[I];
+ }
+
+ explicit HashSumValue(std::string const &Str)
+ {
+ memset(Sum,0,sizeof(Sum));
+ Set(Str);
+ }
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ APT_HIDDEN explicit HashSumValue(APT::StringView const &Str)
+ {
+ memset(Sum,0,sizeof(Sum));
+ Set(Str);
+ }
+ APT_HIDDEN explicit HashSumValue(const char *Str)
+ {
+ memset(Sum,0,sizeof(Sum));
+ Set(Str);
+ }
+#endif
+ HashSumValue()
+ {
+ memset(Sum,0,sizeof(Sum));
+ }
+};
+
+class SummationImplementation
+{
+ public:
+ virtual bool Add(const unsigned char *inbuf, unsigned long long inlen) APT_NONNULL(2) = 0;
+ inline bool Add(const char *inbuf, unsigned long long const inlen) APT_NONNULL(2)
+ { return Add((const unsigned char *)inbuf, inlen); }
+
+ inline bool Add(const unsigned char *Data) APT_NONNULL(2)
+ { return Add(Data, strlen((const char *)Data)); }
+ inline bool Add(const char *Data) APT_NONNULL(2)
+ { return Add((const unsigned char *)Data, strlen(Data)); }
+
+ inline bool Add(const unsigned char *Beg, const unsigned char *End) APT_NONNULL(2,3)
+ { return Add(Beg, End - Beg); }
+ inline bool Add(const char *Beg, const char *End) APT_NONNULL(2,3)
+ { return Add((const unsigned char *)Beg, End - Beg); }
+
+ bool AddFD(int Fd, unsigned long long Size = 0);
+ bool AddFD(FileFd &Fd, unsigned long long Size = 0);
+};
+
+#endif
diff --git a/apt-pkg/contrib/macros.h b/apt-pkg/contrib/macros.h
new file mode 100644
index 000000000..bc1f523ea
--- /dev/null
+++ b/apt-pkg/contrib/macros.h
@@ -0,0 +1,171 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Macros Header - Various useful macro definitions
+
+ This source is placed in the Public Domain, do with it what you will
+ It was originally written by Brian C. White.
+
+ ##################################################################### */
+ /*}}}*/
+// Private header
+#ifndef MACROS_H
+#define MACROS_H
+
+// MIN_VAL(SINT16) will return -0x8000 and MAX_VAL(SINT16) = 0x7FFF
+#define MIN_VAL(t) (((t)(-1) > 0) ? (t)( 0) : (t)(((1L<<(sizeof(t)*8-1)) )))
+#define MAX_VAL(t) (((t)(-1) > 0) ? (t)(-1) : (t)(((1L<<(sizeof(t)*8-1))-1)))
+
+// Min/Max functions
+#if !defined(MIN)
+#if defined(__HIGHC__)
+#define MIN(x,y) _min(x,y)
+#define MAX(x,y) _max(x,y)
+#endif
+
+// GNU C++ has a min/max operator <coolio>
+#if defined(__GNUG__)
+#define MIN(A,B) ((A) <? (B))
+#define MAX(A,B) ((A) >? (B))
+#endif
+
+/* Templates tend to mess up existing code that uses min/max because of the
+ strict matching requirements */
+#if !defined(MIN)
+#define MIN(A,B) ((A) < (B)?(A):(B))
+#define MAX(A,B) ((A) > (B)?(A):(B))
+#endif
+#endif
+
+/* Bound functions, bound will return the value b within the limits a-c
+ bounv will change b so that it is within the limits of a-c. */
+#define _bound(a,b,c) MIN(c,MAX(b,a))
+#define _boundv(a,b,c) b = _bound(a,b,c)
+#define ABS(a) (((a) < (0)) ?-(a) : (a))
+
+/* Useful count macro, use on an array of things and it will return the
+ number of items in the array */
+#define _count(a) (sizeof(a)/sizeof(a[0]))
+
+// Flag Macros
+#define FLAG(f) (1L << (f))
+#define SETFLAG(v,f) ((v) |= FLAG(f))
+#define CLRFLAG(v,f) ((v) &=~FLAG(f))
+#define CHKFLAG(v,f) ((v) & FLAG(f) ? true : false)
+
+#ifdef __GNUC__
+#define APT_GCC_VERSION (__GNUC__ << 8 | __GNUC_MINOR__)
+#else
+#define APT_GCC_VERSION 0
+#endif
+
+/* likely() and unlikely() can be used to mark boolean expressions
+ as (not) likely true which will help the compiler to optimise */
+#if APT_GCC_VERSION >= 0x0300
+ #define likely(x) __builtin_expect (!!(x), 1)
+ #define unlikely(x) __builtin_expect (!!(x), 0)
+#else
+ #define likely(x) (x)
+ #define unlikely(x) (x)
+#endif
+
+#if APT_GCC_VERSION >= 0x0300
+ #define APT_DEPRECATED __attribute__ ((deprecated))
+ #define APT_DEPRECATED_MSG(X) __attribute__ ((deprecated(X)))
+ #define APT_CONST __attribute__((const))
+ #define APT_PURE __attribute__((pure))
+ #define APT_NORETURN __attribute__((noreturn))
+ #define APT_PRINTF(n) __attribute__((format(printf, n, n + 1)))
+ #define APT_WEAK __attribute__((weak));
+#else
+ #define APT_DEPRECATED
+ #define APT_DEPRECATED_MSG
+ #define APT_CONST
+ #define APT_PURE
+ #define APT_NORETURN
+ #define APT_PRINTF(n)
+ #define APT_WEAK
+#endif
+
+#if APT_GCC_VERSION > 0x0302
+ #define APT_NONNULL(...) __attribute__((nonnull(__VA_ARGS__)))
+ #define APT_MUSTCHECK __attribute__((warn_unused_result))
+#else
+ #define APT_NONNULL(...)
+ #define APT_MUSTCHECK
+#endif
+
+#if APT_GCC_VERSION >= 0x0400
+ #define APT_SENTINEL __attribute__((sentinel))
+ #define APT_PUBLIC __attribute__ ((visibility ("default")))
+ #define APT_HIDDEN __attribute__ ((visibility ("hidden")))
+#else
+ #define APT_SENTINEL
+ #define APT_PUBLIC
+ #define APT_HIDDEN
+#endif
+
+// cold functions are unlikely() to be called
+#if APT_GCC_VERSION >= 0x0403
+ #define APT_COLD __attribute__ ((__cold__))
+ #define APT_HOT __attribute__ ((__hot__))
+#else
+ #define APT_COLD
+ #define APT_HOT
+#endif
+
+#ifndef APT_10_CLEANER_HEADERS
+#if APT_GCC_VERSION >= 0x0300
+ #define __must_check __attribute__ ((warn_unused_result))
+ #define __deprecated __attribute__ ((deprecated))
+ #define __attrib_const __attribute__ ((__const__))
+ #define __like_printf(n) __attribute__((format(printf, n, n + 1)))
+#else
+ #define __must_check /* no warn_unused_result */
+ #define __deprecated /* no deprecated */
+ #define __attrib_const /* no const attribute */
+ #define __like_printf(n) /* no like-printf */
+#endif
+#if APT_GCC_VERSION >= 0x0403
+ #define __cold __attribute__ ((__cold__))
+ #define __hot __attribute__ ((__hot__))
+#else
+ #define __cold /* no cold marker */
+ #define __hot /* no hot marker */
+#endif
+#endif
+
+#if __GNUC__ >= 4
+ #define APT_IGNORE_DEPRECATED_PUSH \
+ _Pragma("GCC diagnostic push") \
+ _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
+ #define APT_IGNORE_DEPRECATED_POP \
+ _Pragma("GCC diagnostic pop")
+ #define APT_IGNORE_DEPRECATED(XXX) \
+ APT_IGNORE_DEPRECATED_PUSH \
+ XXX \
+ APT_IGNORE_DEPRECATED_POP
+#else
+ #define APT_IGNORE_DEPRECATED_PUSH
+ #define APT_IGNORE_DEPRECATED_POP
+ #define APT_IGNORE_DEPRECATED(XXX) XXX
+#endif
+
+#if __cplusplus >= 201103L
+ #define APT_OVERRIDE override
+#else
+ #define APT_OVERRIDE /* no c++11 standard */
+#endif
+
+// These lines are extracted by the makefiles and the buildsystem
+// Increasing MAJOR or MINOR results in the need of recompiling all
+// reverse-dependencies of libapt-pkg against the new SONAME.
+// Non-ABI-Breaks should only increase RELEASE number.
+// See also buildlib/libversion.mak
+#define APT_PKG_MAJOR 5
+#define APT_PKG_MINOR 0
+#define APT_PKG_RELEASE 1
+#define APT_PKG_ABI ((APT_PKG_MAJOR * 100) + APT_PKG_MINOR)
+
+#endif
diff --git a/apt-pkg/contrib/md5.cc b/apt-pkg/contrib/md5.cc
new file mode 100644
index 000000000..ff7868fe2
--- /dev/null
+++ b/apt-pkg/contrib/md5.cc
@@ -0,0 +1,280 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: md5.cc,v 1.12 2001/05/13 05:15:03 jgg Exp $
+/* ######################################################################
+
+ MD5Sum - MD5 Message Digest Algorithm.
+
+ This code implements the MD5 message-digest algorithm. The algorithm is
+ due to Ron Rivest. This code was written by Colin Plumb in 1993, no
+ copyright is claimed. This code is in the public domain; do with it what
+ you wish.
+
+ Equivalent code is available from RSA Data Security, Inc. This code has
+ been tested against that, and is equivalent, except that you don't need to
+ include two pages of legalese with every copy.
+
+ To compute the message digest of a chunk of bytes, instantiate the class,
+ and repeatedly call one of the Add() members. When finished the Result
+ method will return the Hash and finalize the value.
+
+ Changed so as no longer to depend on Colin Plumb's `usual.h' header
+ definitions; now uses stuff from dpkg's config.h.
+ - Ian Jackson <ijackson@nyx.cs.du.edu>.
+
+ Changed into a C++ interface and made work with APT's config.h.
+ - Jason Gunthorpe <jgg@gpu.srv.ualberta.ca>
+
+ Still in the public domain.
+
+ The classes use arrays of char that are a specific size. We cast those
+ arrays to uint8_t's and go from there. This allows us to advoid using
+ the uncommon inttypes.h in a public header or internally newing memory.
+ In theory if C9x becomes nicely accepted
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/md5.h>
+
+#include <stdint.h>
+#include <string.h>
+ /*}}}*/
+
+// byteSwap - Swap bytes in a buffer /*{{{*/
+// ---------------------------------------------------------------------
+/* Swap n 32 bit longs in given buffer */
+#ifdef WORDS_BIGENDIAN
+static void byteSwap(uint32_t *buf, unsigned words)
+{
+ uint8_t *p = (uint8_t *)buf;
+
+ do
+ {
+ *buf++ = (uint32_t)((unsigned)p[3] << 8 | p[2]) << 16 |
+ ((unsigned)p[1] << 8 | p[0]);
+ p += 4;
+ } while (--words);
+}
+#else
+#define byteSwap(buf,words)
+#endif
+ /*}}}*/
+// MD5Transform - Alters an existing MD5 hash /*{{{*/
+// ---------------------------------------------------------------------
+/* The core of the MD5 algorithm, this alters an existing MD5 hash to
+ reflect the addition of 16 longwords of new data. Add blocks
+ the data and converts bytes into longwords for this routine. */
+
+// The four core functions - F1 is optimized somewhat
+// #define F1(x, y, z) (x & y | ~x & z)
+#define F1(x, y, z) (z ^ (x & (y ^ z)))
+#define F2(x, y, z) F1(z, x, y)
+#define F3(x, y, z) (x ^ y ^ z)
+#define F4(x, y, z) (y ^ (x | ~z))
+
+// This is the central step in the MD5 algorithm.
+#define MD5STEP(f,w,x,y,z,in,s) \
+ (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
+
+static void MD5Transform(uint32_t buf[4], uint32_t const in[16])
+{
+ register uint32_t a, b, c, d;
+
+ a = buf[0];
+ b = buf[1];
+ c = buf[2];
+ d = buf[3];
+
+ MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
+ MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
+ MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
+ MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
+ MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
+ MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
+ MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
+ MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
+ MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
+ MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
+ MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
+ MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
+ MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
+ MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
+ MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
+ MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
+
+ MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
+ MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
+ MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
+ MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
+ MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
+ MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
+ MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
+ MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
+ MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
+ MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
+ MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
+ MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
+ MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
+ MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
+ MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
+ MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
+
+ MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
+ MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
+ MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
+ MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
+ MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
+ MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
+ MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
+ MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
+ MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
+ MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
+ MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
+ MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
+ MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
+ MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
+ MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
+ MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
+
+ MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
+ MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
+ MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
+ MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
+ MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
+ MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
+ MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
+ MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
+ MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
+ MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
+ MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
+ MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
+ MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
+ MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
+ MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
+ MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
+
+ buf[0] += a;
+ buf[1] += b;
+ buf[2] += c;
+ buf[3] += d;
+}
+ /*}}}*/
+// MD5Summation::MD5Summation - Initialize the summer /*{{{*/
+// ---------------------------------------------------------------------
+/* This assigns the deep magic initial values */
+MD5Summation::MD5Summation()
+{
+ uint32_t *buf = (uint32_t *)Buf;
+ uint32_t *bytes = (uint32_t *)Bytes;
+
+ buf[0] = 0x67452301;
+ buf[1] = 0xefcdab89;
+ buf[2] = 0x98badcfe;
+ buf[3] = 0x10325476;
+
+ bytes[0] = 0;
+ bytes[1] = 0;
+ Done = false;
+}
+ /*}}}*/
+// MD5Summation::Add - 'Add' a data set to the hash /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool MD5Summation::Add(const unsigned char *data,unsigned long long len)
+{
+ if (Done == true)
+ return false;
+ if (len == 0)
+ return true;
+
+ uint32_t *buf = (uint32_t *)Buf;
+ uint32_t *bytes = (uint32_t *)Bytes;
+ uint32_t *in = (uint32_t *)In;
+
+ // Update byte count and carry (this could be done with a long long?)
+ uint32_t t = bytes[0];
+ if ((bytes[0] = t + len) < t)
+ bytes[1]++;
+
+ // Space available (at least 1)
+ t = 64 - (t & 0x3f);
+ if (t > len)
+ {
+ memcpy((unsigned char *)in + 64 - t,data,len);
+ return true;
+ }
+
+ // First chunk is an odd size
+ memcpy((unsigned char *)in + 64 - t,data,t);
+ byteSwap(in, 16);
+ MD5Transform(buf,in);
+ data += t;
+ len -= t;
+
+ // Process data in 64-byte chunks
+ while (len >= 64)
+ {
+ memcpy(in,data,64);
+ byteSwap(in,16);
+ MD5Transform(buf,in);
+ data += 64;
+ len -= 64;
+ }
+
+ // Handle any remaining bytes of data.
+ memcpy(in,data,len);
+
+ return true;
+}
+ /*}}}*/
+// MD5Summation::Result - Returns the value of the sum /*{{{*/
+// ---------------------------------------------------------------------
+/* Because this must add in the last bytes of the series it prevents anyone
+ from calling add after. */
+MD5SumValue MD5Summation::Result()
+{
+ uint32_t *buf = (uint32_t *)Buf;
+ uint32_t *bytes = (uint32_t *)Bytes;
+ uint32_t *in = (uint32_t *)In;
+
+ if (Done == false)
+ {
+ // Number of bytes in In
+ int count = bytes[0] & 0x3f;
+ unsigned char *p = (unsigned char *)in + count;
+
+ // Set the first char of padding to 0x80. There is always room.
+ *p++ = 0x80;
+
+ // Bytes of padding needed to make 56 bytes (-8..55)
+ count = 56 - 1 - count;
+
+ // Padding forces an extra block
+ if (count < 0)
+ {
+ memset(p,0,count + 8);
+ byteSwap(in, 16);
+ MD5Transform(buf,in);
+ p = (unsigned char *)in;
+ count = 56;
+ }
+
+ memset(p, 0, count);
+ byteSwap(in, 14);
+
+ // Append length in bits and transform
+ in[14] = bytes[0] << 3;
+ in[15] = bytes[1] << 3 | bytes[0] >> 29;
+ MD5Transform(buf,in);
+ byteSwap(buf,4);
+ Done = true;
+ }
+
+ MD5SumValue V;
+ V.Set((unsigned char *)buf);
+ return V;
+}
+ /*}}}*/
diff --git a/apt-pkg/contrib/md5.h b/apt-pkg/contrib/md5.h
new file mode 100644
index 000000000..a286f092a
--- /dev/null
+++ b/apt-pkg/contrib/md5.h
@@ -0,0 +1,59 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: md5.h,v 1.6 2001/05/07 05:06:52 jgg Exp $
+/* ######################################################################
+
+ MD5SumValue - Storage for a MD5Sum
+ MD5Summation - MD5 Message Digest Algorithm.
+
+ This is a C++ interface to a set of MD5Sum functions. The class can
+ store a MD5Sum in 16 bytes of memory.
+
+ A MD5Sum is used to generate a (hopefully) unique 16 byte number for a
+ block of data. This can be used to guard against corruption of a file.
+ MD5 should not be used for tamper protection, use SHA or something more
+ secure.
+
+ There are two classes because computing a MD5 is not a continual
+ operation unless 64 byte blocks are used. Also the summation requires an
+ extra 18*4 bytes to operate.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef APTPKG_MD5_H
+#define APTPKG_MD5_H
+
+#include <stdint.h>
+
+#include "hashsum_template.h"
+
+#ifndef APT_10_CLEANER_HEADERS
+#include <string>
+#include <cstring>
+#include <algorithm>
+#endif
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+using std::min;
+#endif
+
+typedef HashSumValue<128> MD5SumValue;
+
+class MD5Summation : public SummationImplementation
+{
+ uint32_t Buf[4];
+ unsigned char Bytes[2*4];
+ unsigned char In[16*4];
+ bool Done;
+
+ public:
+
+ bool Add(const unsigned char *inbuf, unsigned long long inlen) APT_OVERRIDE APT_NONNULL(2);
+ using SummationImplementation::Add;
+
+ MD5SumValue Result();
+
+ MD5Summation();
+};
+
+#endif
diff --git a/apt-pkg/contrib/mmap.cc b/apt-pkg/contrib/mmap.cc
new file mode 100644
index 000000000..cd24a2808
--- /dev/null
+++ b/apt-pkg/contrib/mmap.cc
@@ -0,0 +1,504 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: mmap.cc,v 1.22 2001/05/27 05:19:30 jgg Exp $
+/* ######################################################################
+
+ MMap Class - Provides 'real' mmap or a faked mmap using read().
+
+ MMap cover class.
+
+ Some broken versions of glibc2 (libc6) have a broken definition
+ of mmap that accepts a char * -- all other systems (and libc5) use
+ void *. We can't safely do anything here that would be portable, so
+ libc6 generates warnings -- which should be errors, g++ isn't properly
+ strict.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#define _DEFAULT_SOURCE
+#include <config.h>
+
+#include <apt-pkg/mmap.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/macros.h>
+
+#include <string>
+#include <sys/mman.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <cstring>
+
+#include <apti18n.h>
+ /*}}}*/
+
+// MMap::MMap - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+MMap::MMap(FileFd &F,unsigned long Flags) : Flags(Flags), iSize(0),
+ Base(nullptr), SyncToFd(nullptr)
+{
+ if ((Flags & NoImmMap) != NoImmMap)
+ Map(F);
+}
+ /*}}}*/
+// MMap::MMap - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+MMap::MMap(unsigned long Flags) : Flags(Flags), iSize(0),
+ Base(nullptr), SyncToFd(nullptr)
+{
+}
+ /*}}}*/
+// MMap::~MMap - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+MMap::~MMap()
+{
+ Close();
+}
+ /*}}}*/
+// MMap::Map - Perform the mapping /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool MMap::Map(FileFd &Fd)
+{
+ iSize = Fd.Size();
+
+ // Set the permissions.
+ int Prot = PROT_READ;
+ int Map = MAP_SHARED;
+ if ((Flags & ReadOnly) != ReadOnly)
+ Prot |= PROT_WRITE;
+ if ((Flags & Public) != Public)
+ Map = MAP_PRIVATE;
+
+ if (iSize == 0)
+ return _error->Error(_("Can't mmap an empty file"));
+
+ // We can't mmap compressed fd's directly, so we need to read it completely
+ if (Fd.IsCompressed() == true)
+ {
+ if ((Flags & ReadOnly) != ReadOnly)
+ return _error->Error("Compressed file %s can only be mapped readonly", Fd.Name().c_str());
+ Base = malloc(iSize);
+ if (unlikely(Base == nullptr))
+ return _error->Errno("MMap-compressed-malloc", _("Couldn't make mmap of %llu bytes"), iSize);
+ SyncToFd = new FileFd();
+ if (Fd.Seek(0L) == false || Fd.Read(Base, iSize) == false)
+ return _error->Error("Compressed file %s can't be read into mmap", Fd.Name().c_str());
+ return true;
+ }
+
+ // Map it.
+ Base = (Flags & Fallback) ? MAP_FAILED : mmap(0,iSize,Prot,Map,Fd.Fd(),0);
+ if (Base == MAP_FAILED)
+ {
+ if (errno == ENODEV || errno == EINVAL || (Flags & Fallback))
+ {
+ // The filesystem doesn't support this particular kind of mmap.
+ // So we allocate a buffer and read the whole file into it.
+ if ((Flags & ReadOnly) == ReadOnly)
+ {
+ // for readonly, we don't need sync, so make it simple
+ Base = malloc(iSize);
+ if (unlikely(Base == nullptr))
+ return _error->Errno("MMap-malloc", _("Couldn't make mmap of %llu bytes"), iSize);
+ SyncToFd = new FileFd();
+ return Fd.Read(Base, iSize);
+ }
+ // FIXME: Writing to compressed fd's ?
+ int const dupped_fd = dup(Fd.Fd());
+ if (dupped_fd == -1)
+ return _error->Errno("mmap", _("Couldn't duplicate file descriptor %i"), Fd.Fd());
+
+ Base = calloc(iSize, 1);
+ if (unlikely(Base == nullptr))
+ return _error->Errno("MMap-calloc", _("Couldn't make mmap of %llu bytes"), iSize);
+ SyncToFd = new FileFd (dupped_fd);
+ if (!SyncToFd->Seek(0L) || !SyncToFd->Read(Base, iSize))
+ return false;
+ }
+ else
+ return _error->Errno("MMap-mmap", _("Couldn't make mmap of %llu bytes"), iSize);
+ }
+
+ return true;
+}
+ /*}}}*/
+// MMap::Close - Close the map /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool MMap::Close(bool DoSync)
+{
+ if ((Flags & UnMapped) == UnMapped || validData() == false || iSize == 0)
+ return true;
+
+ if (DoSync == true)
+ Sync();
+
+ if (SyncToFd != NULL)
+ {
+ free(Base);
+ delete SyncToFd;
+ SyncToFd = NULL;
+ }
+ else
+ {
+ if (munmap((char *)Base, iSize) != 0)
+ _error->WarningE("mmap", _("Unable to close mmap"));
+ }
+
+ iSize = 0;
+ Base = 0;
+ return true;
+}
+ /*}}}*/
+// MMap::Sync - Synchronize the map with the disk /*{{{*/
+// ---------------------------------------------------------------------
+/* This is done in synchronous mode - the docs indicate that this will
+ not return till all IO is complete */
+bool MMap::Sync()
+{
+ if ((Flags & UnMapped) == UnMapped)
+ return true;
+
+ if ((Flags & ReadOnly) != ReadOnly)
+ {
+ if (SyncToFd != NULL)
+ {
+ if (!SyncToFd->Seek(0) || !SyncToFd->Write(Base, iSize))
+ return false;
+ }
+ else
+ {
+#ifdef _POSIX_SYNCHRONIZED_IO
+ if (msync((char *)Base, iSize, MS_SYNC) < 0)
+ return _error->Errno("msync", _("Unable to synchronize mmap"));
+#endif
+ }
+ }
+ return true;
+}
+ /*}}}*/
+// MMap::Sync - Synchronize a section of the file to disk /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool MMap::Sync(unsigned long Start,unsigned long Stop)
+{
+ if ((Flags & UnMapped) == UnMapped)
+ return true;
+
+ if ((Flags & ReadOnly) != ReadOnly)
+ {
+ if (SyncToFd != 0)
+ {
+ if (!SyncToFd->Seek(0) ||
+ !SyncToFd->Write (((char *)Base)+Start, Stop-Start))
+ return false;
+ }
+ else
+ {
+#ifdef _POSIX_SYNCHRONIZED_IO
+ unsigned long long const PSize = sysconf(_SC_PAGESIZE);
+ if (msync((char *)Base+(Start/PSize)*PSize, Stop - Start, MS_SYNC) < 0)
+ return _error->Errno("msync", _("Unable to synchronize mmap"));
+#endif
+ }
+ }
+ return true;
+}
+ /*}}}*/
+
+// DynamicMMap::DynamicMMap - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+DynamicMMap::DynamicMMap(FileFd &F,unsigned long Flags,unsigned long const &Workspace,
+ unsigned long const &Grow, unsigned long const &Limit) :
+ MMap(F,Flags | NoImmMap), Fd(&F), WorkSpace(Workspace),
+ GrowFactor(Grow), Limit(Limit)
+{
+ // disable Moveable if we don't grow
+ if (Grow == 0)
+ this->Flags &= ~Moveable;
+
+#ifndef __linux__
+ // kfreebsd doesn't have mremap, so we use the fallback
+ if ((this->Flags & Moveable) == Moveable)
+ this->Flags |= Fallback;
+#endif
+
+ unsigned long long EndOfFile = Fd->Size();
+ if (EndOfFile > WorkSpace)
+ WorkSpace = EndOfFile;
+ else if(WorkSpace > 0)
+ {
+ Fd->Seek(WorkSpace - 1);
+ char C = 0;
+ Fd->Write(&C,sizeof(C));
+ }
+
+ Map(F);
+ iSize = EndOfFile;
+}
+ /*}}}*/
+// DynamicMMap::DynamicMMap - Constructor for a non-file backed map /*{{{*/
+// ---------------------------------------------------------------------
+/* We try here to use mmap to reserve some space - this is much more
+ cooler than the fallback solution to simply allocate a char array
+ and could come in handy later than we are able to grow such an mmap */
+DynamicMMap::DynamicMMap(unsigned long Flags,unsigned long const &WorkSpace,
+ unsigned long const &Grow, unsigned long const &Limit) :
+ MMap(Flags | NoImmMap | UnMapped), Fd(0), WorkSpace(WorkSpace),
+ GrowFactor(Grow), Limit(Limit)
+{
+ // disable Moveable if we don't grow
+ if (Grow == 0)
+ this->Flags &= ~Moveable;
+
+#ifndef __linux__
+ // kfreebsd doesn't have mremap, so we use the fallback
+ if ((this->Flags & Moveable) == Moveable)
+ this->Flags |= Fallback;
+#endif
+
+#ifdef _POSIX_MAPPED_FILES
+ if ((this->Flags & Fallback) != Fallback) {
+ // Set the permissions.
+ int Prot = PROT_READ;
+#ifdef MAP_ANONYMOUS
+ int Map = MAP_PRIVATE | MAP_ANONYMOUS;
+#else
+ int Map = MAP_PRIVATE | MAP_ANON;
+#endif
+ if ((this->Flags & ReadOnly) != ReadOnly)
+ Prot |= PROT_WRITE;
+ if ((this->Flags & Public) == Public)
+#ifdef MAP_ANONYMOUS
+ Map = MAP_SHARED | MAP_ANONYMOUS;
+#else
+ Map = MAP_SHARED | MAP_ANON;
+#endif
+
+ // use anonymous mmap() to get the memory
+ Base = (unsigned char*) mmap(0, WorkSpace, Prot, Map, -1, 0);
+
+ if(Base == MAP_FAILED)
+ _error->Errno("DynamicMMap",_("Couldn't make mmap of %lu bytes"),WorkSpace);
+
+ iSize = 0;
+ return;
+ }
+#endif
+ // fallback to a static allocated space
+ Base = calloc(WorkSpace, 1);
+ iSize = 0;
+}
+ /*}}}*/
+// DynamicMMap::~DynamicMMap - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* We truncate the file to the size of the memory data set */
+DynamicMMap::~DynamicMMap()
+{
+ if (Fd == 0)
+ {
+ if (validData() == false)
+ return;
+#ifdef _POSIX_MAPPED_FILES
+ munmap(Base, WorkSpace);
+#else
+ free(Base);
+#endif
+ return;
+ }
+
+ unsigned long long EndOfFile = iSize;
+ iSize = WorkSpace;
+ Close(false);
+ if(ftruncate(Fd->Fd(),EndOfFile) < 0)
+ _error->Errno("ftruncate", _("Failed to truncate file"));
+}
+ /*}}}*/
+// DynamicMMap::RawAllocate - Allocate a raw chunk of unaligned space /*{{{*/
+// ---------------------------------------------------------------------
+/* This allocates a block of memory aligned to the given size */
+unsigned long DynamicMMap::RawAllocate(unsigned long long Size,unsigned long Aln)
+{
+ unsigned long long Result = iSize;
+ if (Aln != 0)
+ Result += Aln - (iSize%Aln);
+
+ iSize = Result + Size;
+
+ // try to grow the buffer
+ while(Result + Size > WorkSpace)
+ {
+ if(!Grow())
+ {
+ _error->Fatal(_("Dynamic MMap ran out of room. Please increase the size "
+ "of APT::Cache-Start. Current value: %lu. (man 5 apt.conf)"), WorkSpace);
+ return 0;
+ }
+ }
+ return Result;
+}
+ /*}}}*/
+// DynamicMMap::Allocate - Pooled aligned allocation /*{{{*/
+// ---------------------------------------------------------------------
+/* This allocates an Item of size ItemSize so that it is aligned to its
+ size in the file. */
+unsigned long DynamicMMap::Allocate(unsigned long ItemSize)
+{
+ if (unlikely(ItemSize == 0))
+ {
+ _error->Fatal("Can't allocate an item of size zero");
+ return 0;
+ }
+
+ // Look for a matching pool entry
+ Pool *I;
+ Pool *Empty = 0;
+ for (I = Pools; I != Pools + PoolCount; ++I)
+ {
+ if (I->ItemSize == 0)
+ Empty = I;
+ if (I->ItemSize == ItemSize)
+ break;
+ }
+ // No pool is allocated, use an unallocated one
+ if (I == Pools + PoolCount)
+ {
+ // Woops, we ran out, the calling code should allocate more.
+ if (Empty == 0)
+ {
+ _error->Error("Ran out of allocation pools");
+ return 0;
+ }
+
+ I = Empty;
+ I->ItemSize = ItemSize;
+ I->Count = 0;
+ }
+
+ unsigned long Result = 0;
+ // Out of space, allocate some more
+ if (I->Count == 0)
+ {
+ const unsigned long size = 20*1024;
+ I->Count = size/ItemSize;
+ Pool* oldPools = Pools;
+ _error->PushToStack();
+ Result = RawAllocate(size,ItemSize);
+ bool const newError = _error->PendingError();
+ _error->MergeWithStack();
+ if (Pools != oldPools)
+ I += Pools - oldPools;
+
+ // Does the allocation failed ?
+ if (Result == 0 && newError)
+ return 0;
+ I->Start = Result;
+ }
+ else
+ Result = I->Start;
+
+ I->Count--;
+ I->Start += ItemSize;
+ return Result/ItemSize;
+}
+ /*}}}*/
+// DynamicMMap::WriteString - Write a string to the file /*{{{*/
+// ---------------------------------------------------------------------
+/* Strings are aligned to 16 bytes */
+unsigned long DynamicMMap::WriteString(const char *String,
+ unsigned long Len)
+{
+ if (Len == (unsigned long)-1)
+ Len = strlen(String);
+
+ _error->PushToStack();
+ unsigned long Result = RawAllocate(Len+1+sizeof(uint16_t),sizeof(uint16_t));
+ bool const newError = _error->PendingError();
+ _error->MergeWithStack();
+
+ if (Base == NULL || (Result == 0 && newError))
+ return 0;
+
+ if (Len >= std::numeric_limits<uint16_t>::max())
+ abort();
+
+ uint16_t LenToWrite = Len;
+ memcpy((char *)Base + Result, &LenToWrite, sizeof(LenToWrite));
+ Result += + sizeof(LenToWrite);
+
+ memcpy((char *)Base + Result,String,Len);
+ ((char *)Base)[Result + Len] = 0;
+ return Result;
+}
+ /*}}}*/
+// DynamicMMap::Grow - Grow the mmap /*{{{*/
+// ---------------------------------------------------------------------
+/* This method is a wrapper around different methods to (try to) grow
+ a mmap (or our char[]-fallback). Encounterable environments:
+ 1. Moveable + !Fallback + linux -> mremap with MREMAP_MAYMOVE
+ 2. Moveable + !Fallback + !linux -> not possible (forbidden by constructor)
+ 3. Moveable + Fallback -> realloc
+ 4. !Moveable + !Fallback + linux -> mremap alone - which will fail in 99,9%
+ 5. !Moveable + !Fallback + !linux -> not possible (forbidden by constructor)
+ 6. !Moveable + Fallback -> not possible
+ [ While Moveable and Fallback stands for the equally named flags and
+ "linux" indicates a linux kernel instead of a freebsd kernel. ]
+ So what you can see here is, that a MMAP which want to be growable need
+ to be moveable to have a real chance but that this method will at least try
+ the nearly impossible 4 to grow it before it finally give up: Never say never. */
+bool DynamicMMap::Grow() {
+ if (Limit != 0 && WorkSpace >= Limit)
+ return _error->Error(_("Unable to increase the size of the MMap as the "
+ "limit of %lu bytes is already reached."), Limit);
+ if (GrowFactor <= 0)
+ return _error->Error(_("Unable to increase size of the MMap as automatic growing is disabled by user."));
+
+ unsigned long long const newSize = WorkSpace + GrowFactor;
+
+ if(Fd != 0) {
+ Fd->Seek(newSize - 1);
+ char C = 0;
+ Fd->Write(&C,sizeof(C));
+ }
+
+ unsigned long const poolOffset = Pools - ((Pool*) Base);
+
+ if ((Flags & Fallback) != Fallback) {
+#if defined(_POSIX_MAPPED_FILES) && defined(__linux__)
+ #ifdef MREMAP_MAYMOVE
+
+ if ((Flags & Moveable) == Moveable)
+ Base = mremap(Base, WorkSpace, newSize, MREMAP_MAYMOVE);
+ else
+ #endif
+ Base = mremap(Base, WorkSpace, newSize, 0);
+
+ if(Base == MAP_FAILED)
+ return false;
+#else
+ return false;
+#endif
+ } else {
+ if ((Flags & Moveable) != Moveable)
+ return false;
+
+ Base = realloc(Base, newSize);
+ if (Base == NULL)
+ return false;
+ else
+ /* Set new memory to 0 */
+ memset((char*)Base + WorkSpace, 0, newSize - WorkSpace);
+ }
+
+ Pools =(Pool*) Base + poolOffset;
+ WorkSpace = newSize;
+ return true;
+}
+ /*}}}*/
diff --git a/apt-pkg/contrib/mmap.h b/apt-pkg/contrib/mmap.h
new file mode 100644
index 000000000..62e64b95e
--- /dev/null
+++ b/apt-pkg/contrib/mmap.h
@@ -0,0 +1,119 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: mmap.h,v 1.12 2001/05/14 05:16:43 jgg Exp $
+/* ######################################################################
+
+ MMap Class - Provides 'real' mmap or a faked mmap using read().
+
+ The purpose of this code is to provide a generic way for clients to
+ access the mmap function. In environments that do not support mmap
+ from file fd's this function will use read and normal allocated
+ memory.
+
+ Writing to a public mmap will always fully commit all changes when the
+ class is deleted. Ie it will rewrite the file, unless it is readonly
+
+ The DynamicMMap class is used to help the on-disk data structure
+ generators. It provides a large allocated workspace and members
+ to allocate space from the workspace in an efficient fashion.
+
+ This source is placed in the Public Domain, do with it what you will
+ It was originally written by Jason Gunthorpe.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_MMAP_H
+#define PKGLIB_MMAP_H
+
+
+#include <string>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/fileutl.h>
+using std::string;
+#endif
+
+class FileFd;
+
+/* This should be a 32 bit type, larger tyes use too much ram and smaller
+ types are too small. Where ever possible 'unsigned long' should be used
+ instead of this internal type */
+typedef unsigned int map_ptrloc;
+
+class MMap
+{
+ protected:
+
+ unsigned long Flags;
+ unsigned long long iSize;
+ void *Base;
+
+ // In case mmap can not be used, we keep a dup of the file
+ // descriptor that should have been mmaped so that we can write to
+ // the file in Sync().
+ FileFd *SyncToFd;
+
+ bool Map(FileFd &Fd);
+ bool Close(bool DoSync = true);
+
+ public:
+
+ enum OpenFlags {NoImmMap = (1<<0),Public = (1<<1),ReadOnly = (1<<2),
+ UnMapped = (1<<3), Moveable = (1<<4), Fallback = (1 << 5)};
+
+ // Simple accessors
+ inline operator void *() {return Base;};
+ inline void *Data() {return Base;};
+ inline unsigned long long Size() {return iSize;};
+ inline void AddSize(unsigned long long const size) {iSize += size;};
+ inline bool validData() const { return Base != (void *)-1 && Base != 0; };
+
+ // File manipulators
+ bool Sync();
+ bool Sync(unsigned long Start,unsigned long Stop);
+
+ MMap(FileFd &F,unsigned long Flags);
+ MMap(unsigned long Flags);
+ virtual ~MMap();
+};
+
+class DynamicMMap : public MMap
+{
+ public:
+
+ // This is the allocation pool structure
+ struct Pool
+ {
+ unsigned long ItemSize;
+ unsigned long Start;
+ unsigned long Count;
+ };
+
+ protected:
+
+ FileFd *Fd;
+ unsigned long WorkSpace;
+ unsigned long const GrowFactor;
+ unsigned long const Limit;
+ Pool *Pools;
+ unsigned int PoolCount;
+
+ bool Grow();
+
+ public:
+
+ // Allocation
+ unsigned long RawAllocate(unsigned long long Size,unsigned long Aln = 0);
+ unsigned long Allocate(unsigned long ItemSize);
+ unsigned long WriteString(const char *String,unsigned long Len = (unsigned long)-1);
+ inline unsigned long WriteString(const std::string &S) {return WriteString(S.c_str(),S.length());};
+ void UsePools(Pool &P,unsigned int Count) {Pools = &P; PoolCount = Count;};
+
+ DynamicMMap(FileFd &F,unsigned long Flags,unsigned long const &WorkSpace = 2*1024*1024,
+ unsigned long const &Grow = 1024*1024, unsigned long const &Limit = 0);
+ DynamicMMap(unsigned long Flags,unsigned long const &WorkSpace = 2*1024*1024,
+ unsigned long const &Grow = 1024*1024, unsigned long const &Limit = 0);
+ virtual ~DynamicMMap();
+};
+
+#endif
diff --git a/apt-pkg/contrib/netrc.cc b/apt-pkg/contrib/netrc.cc
new file mode 100644
index 000000000..8840de72c
--- /dev/null
+++ b/apt-pkg/contrib/netrc.cc
@@ -0,0 +1,218 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: netrc.c,v 1.38 2007-11-07 09:21:35 bagder Exp $
+/* ######################################################################
+
+ netrc file parser - returns the login and password of a give host in
+ a specified netrc-type file
+
+ Originally written by Daniel Stenberg, <daniel@haxx.se>, et al. and
+ placed into the Public Domain, do with it what you will.
+
+ ##################################################################### */
+ /*}}}*/
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/strutl.h>
+
+#include <iostream>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <stddef.h>
+#include <pwd.h>
+
+#include "netrc.h"
+
+using std::string;
+
+/* Get user and password from .netrc when given a machine name */
+
+enum {
+ NOTHING,
+ HOSTFOUND, /* the 'machine' keyword was found */
+ HOSTCOMPLETE, /* the machine name following the keyword was found too */
+ HOSTVALID, /* this is "our" machine! */
+ HOSTEND /* LAST enum */
+};
+
+/* make sure we have room for at least this size: */
+#define LOGINSIZE 256
+#define PASSWORDSIZE 256
+#define NETRC DOT_CHAR "netrc"
+
+/* returns -1 on failure, 0 if the host is found, 1 is the host isn't found */
+static int parsenetrc_string (char *host, std::string &login, std::string &password, char *netrcfile = NULL)
+{
+ FILE *file;
+ int retcode = 1;
+ int specific_login = (login.empty() == false);
+ bool netrc_alloc = false;
+
+ if (!netrcfile) {
+ char const * home = getenv ("HOME"); /* portable environment reader */
+
+ if (!home) {
+ struct passwd *pw;
+ pw = getpwuid (geteuid ());
+ if(pw)
+ home = pw->pw_dir;
+ }
+
+ if (!home)
+ return -1;
+
+ if (asprintf (&netrcfile, "%s%s%s", home, DIR_CHAR, NETRC) == -1 || netrcfile == NULL)
+ return -1;
+ else
+ netrc_alloc = true;
+ }
+
+ file = fopen (netrcfile, "r");
+ if(file) {
+ char *tok;
+ char *tok_buf;
+ bool done = false;
+ char *netrcbuffer = NULL;
+ size_t netrcbuffer_size = 0;
+
+ int state = NOTHING;
+ char state_login = 0; /* Found a login keyword */
+ char state_password = 0; /* Found a password keyword */
+ int state_our_login = false; /* With specific_login,
+ found *our* login name */
+
+ while (!done && getline(&netrcbuffer, &netrcbuffer_size, file) != -1) {
+ tok = strtok_r (netrcbuffer, " \t\n", &tok_buf);
+ while (!done && tok) {
+ if(login.empty() == false && password.empty() == false) {
+ done = true;
+ break;
+ }
+
+ switch(state) {
+ case NOTHING:
+ if (!strcasecmp ("machine", tok)) {
+ /* the next tok is the machine name, this is in itself the
+ delimiter that starts the stuff entered for this machine,
+ after this we need to search for 'login' and
+ 'password'. */
+ state = HOSTFOUND;
+ }
+ break;
+ case HOSTFOUND:
+ /* extended definition of a "machine" if we have a "/"
+ we match the start of the string (host.startswith(token) */
+ if ((strchr(host, '/') && strstr(host, tok) == host) ||
+ (!strcasecmp (host, tok))) {
+ /* and yes, this is our host! */
+ state = HOSTVALID;
+ retcode = 0; /* we did find our host */
+ }
+ else
+ /* not our host */
+ state = NOTHING;
+ break;
+ case HOSTVALID:
+ /* we are now parsing sub-keywords regarding "our" host */
+ if (state_login) {
+ if (specific_login)
+ state_our_login = !strcasecmp (login.c_str(), tok);
+ else
+ login = tok;
+ state_login = 0;
+ } else if (state_password) {
+ if (state_our_login || !specific_login)
+ password = tok;
+ state_password = 0;
+ } else if (!strcasecmp ("login", tok))
+ state_login = 1;
+ else if (!strcasecmp ("password", tok))
+ state_password = 1;
+ else if(!strcasecmp ("machine", tok)) {
+ /* ok, there's machine here go => */
+ state = HOSTFOUND;
+ state_our_login = false;
+ }
+ break;
+ } /* switch (state) */
+
+ tok = strtok_r (NULL, " \t\n", &tok_buf);
+ } /* while(tok) */
+ } /* while getline() */
+
+ free(netrcbuffer);
+ fclose(file);
+ }
+
+ if (netrc_alloc)
+ free(netrcfile);
+
+ return retcode;
+}
+
+void maybe_add_auth (URI &Uri, string NetRCFile)
+{
+ if (_config->FindB("Debug::Acquire::netrc", false) == true)
+ std::clog << "maybe_add_auth: " << (string)Uri
+ << " " << NetRCFile << std::endl;
+ if (Uri.Password.empty () == true || Uri.User.empty () == true)
+ {
+ if (NetRCFile.empty () == false)
+ {
+ std::string login, password;
+ char *netrcfile = strdup(NetRCFile.c_str());
+
+ // first check for a generic host based netrc entry
+ char *host = strdup(Uri.Host.c_str());
+ if (host && parsenetrc_string(host, login, password, netrcfile) == 0)
+ {
+ if (_config->FindB("Debug::Acquire::netrc", false) == true)
+ std::clog << "host: " << host
+ << " user: " << login
+ << " pass-size: " << password.size()
+ << std::endl;
+ Uri.User = login;
+ Uri.Password = password;
+ free(netrcfile);
+ free(host);
+ return;
+ }
+ free(host);
+
+ // if host did not work, try Host+Path next, this will trigger
+ // a lookup uri.startswith(host) in the netrc file parser (because
+ // of the "/"
+ char *hostpath = strdup((Uri.Host + Uri.Path).c_str());
+ if (hostpath && parsenetrc_string(hostpath, login, password, netrcfile) == 0)
+ {
+ if (_config->FindB("Debug::Acquire::netrc", false) == true)
+ std::clog << "hostpath: " << hostpath
+ << " user: " << login
+ << " pass-size: " << password.size()
+ << std::endl;
+ Uri.User = login;
+ Uri.Password = password;
+ }
+ free(netrcfile);
+ free(hostpath);
+ }
+ }
+}
+
+#ifdef DEBUG
+int main(int argc, char* argv[])
+{
+ char login[64] = "";
+ char password[64] = "";
+
+ if(argc < 2)
+ return -1;
+
+ if(0 == parsenetrc (argv[1], login, password, argv[2])) {
+ printf("HOST: %s LOGIN: %s PASSWORD: %s\n", argv[1], login, password);
+ }
+}
+#endif
diff --git a/apt-pkg/contrib/netrc.h b/apt-pkg/contrib/netrc.h
new file mode 100644
index 000000000..b5b56f5d4
--- /dev/null
+++ b/apt-pkg/contrib/netrc.h
@@ -0,0 +1,31 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: netrc.h,v 1.11 2004/01/07 09:19:35 bagder Exp $
+/* ######################################################################
+
+ netrc file parser - returns the login and password of a give host in
+ a specified netrc-type file
+
+ Originally written by Daniel Stenberg, <daniel@haxx.se>, et al. and
+ placed into the Public Domain, do with it what you will.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef NETRC_H
+#define NETRC_H
+
+#include <string>
+
+#include <apt-pkg/macros.h>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/strutl.h>
+#endif
+
+#define DOT_CHAR "."
+#define DIR_CHAR "/"
+
+class URI;
+
+void maybe_add_auth (URI &Uri, std::string NetRCFile);
+#endif
diff --git a/apt-pkg/contrib/progress.cc b/apt-pkg/contrib/progress.cc
new file mode 100644
index 000000000..b93018154
--- /dev/null
+++ b/apt-pkg/contrib/progress.cc
@@ -0,0 +1,214 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: progress.cc,v 1.12 2003/01/11 07:17:04 jgg Exp $
+/* ######################################################################
+
+ OpProgress - Operation Progress
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/progress.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/configuration.h>
+
+#include <sys/time.h>
+#include <string>
+#include <iostream>
+#include <stdio.h>
+#include <cstring>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+// OpProgress::OpProgress - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+OpProgress::OpProgress() : Current(0), Total(0), Size(0), SubTotal(1),
+ LastPercent(0), Percent(0)
+{
+ memset(&LastTime,0,sizeof(LastTime));
+}
+ /*}}}*/
+// OpProgress::Progress - Sub progress with no state change /*{{{*/
+// ---------------------------------------------------------------------
+/* Current is the Base Overall progress in units of Total. Cur is the sub
+ progress in units of SubTotal. Size is a scaling factor that says what
+ percent of Total SubTotal is. */
+void OpProgress::Progress(unsigned long long Cur)
+{
+ if (Total == 0 || Size == 0 || SubTotal == 0)
+ Percent = 0;
+ else
+ Percent = (Current + Cur/((float)SubTotal)*Size)*100.0/Total;
+ Update();
+}
+ /*}}}*/
+// OpProgress::OverallProgress - Set the overall progress /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void OpProgress::OverallProgress(unsigned long long Current, unsigned long long Total,
+ unsigned long long Size,const string &Op)
+{
+ this->Current = Current;
+ this->Total = Total;
+ this->Size = Size;
+ this->Op = Op;
+ SubOp = string();
+ if (Total == 0)
+ Percent = 0;
+ else
+ Percent = Current*100.0/Total;
+ Update();
+}
+ /*}}}*/
+// OpProgress::SubProgress - Set the sub progress state /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void OpProgress::SubProgress(unsigned long long SubTotal,const string &Op,
+ float const Percent)
+{
+ this->SubTotal = SubTotal;
+ if (Op.empty() == false)
+ SubOp = Op;
+ if (Total == 0 || Percent == 0)
+ this->Percent = 0;
+ else if (Percent != -1)
+ this->Percent = this->Current += (Size*Percent)/SubTotal;
+ else
+ this->Percent = Current*100.0/Total;
+ Update();
+}
+ /*}}}*/
+// OpProgress::CheckChange - See if the display should be updated /*{{{*/
+// ---------------------------------------------------------------------
+/* Progress calls are made so frequently that if every one resulted in
+ an update the display would be swamped and the system much slower.
+ This provides an upper bound on the update rate. */
+bool OpProgress::CheckChange(float Interval)
+{
+ // New major progress indication
+ if (Op != LastOp)
+ {
+ MajorChange = true;
+ LastOp = Op;
+ return true;
+ }
+ MajorChange = false;
+
+ if (SubOp != LastSubOp)
+ {
+ LastSubOp = SubOp;
+ return true;
+ }
+
+ if ((int)LastPercent == (int)Percent)
+ return false;
+
+ LastPercent = Percent;
+
+ if (Interval == 0)
+ return false;
+
+ // Check time delta
+ struct timeval Now;
+ gettimeofday(&Now,0);
+ double Diff = Now.tv_sec - LastTime.tv_sec + (Now.tv_usec - LastTime.tv_usec)/1000000.0;
+ if (Diff < Interval)
+ return false;
+ LastTime = Now;
+ return true;
+}
+ /*}}}*/
+// OpTextProgress::OpTextProgress - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+OpTextProgress::OpTextProgress(Configuration &Config) :
+ NoUpdate(false), NoDisplay(false), LastLen(0)
+{
+ if (Config.FindI("quiet",0) >= 1 || Config.FindB("quiet::NoUpdate", false) == true)
+ NoUpdate = true;
+ if (Config.FindI("quiet",0) >= 2 || Config.FindB("quiet::NoProgress", false) == true)
+ NoDisplay = true;
+}
+ /*}}}*/
+// OpTextProgress::Done - Clean up the display /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void OpTextProgress::Done()
+{
+ if (NoUpdate == false && OldOp.empty() == false)
+ {
+ char S[300];
+ if (_error->PendingError() == true)
+ snprintf(S,sizeof(S),_("%c%s... Error!"),'\r',OldOp.c_str());
+ else
+ snprintf(S,sizeof(S),_("%c%s... Done"),'\r',OldOp.c_str());
+ Write(S);
+ cout << endl;
+ OldOp = string();
+ }
+
+ if (NoUpdate == true && NoDisplay == false && OldOp.empty() == false)
+ {
+ OldOp = string();
+ cout << endl;
+ }
+}
+ /*}}}*/
+// OpTextProgress::Update - Simple text spinner /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void OpTextProgress::Update()
+{
+ if (CheckChange((NoUpdate == true?0:0.7)) == false)
+ return;
+
+ // No percent spinner
+ if (NoUpdate == true)
+ {
+ if (MajorChange == false)
+ return;
+ if (NoDisplay == false)
+ {
+ if (OldOp.empty() == false)
+ cout << endl;
+ OldOp = "a";
+ cout << Op << _("...") << flush;
+ }
+
+ return;
+ }
+
+ // Erase the old text and 'log' the event
+ char S[300];
+ if (MajorChange == true && OldOp.empty() == false)
+ {
+ snprintf(S,sizeof(S),"\r%s",OldOp.c_str());
+ Write(S);
+ cout << endl;
+ }
+
+ // Print the spinner
+ snprintf(S,sizeof(S),_("%c%s... %u%%"),'\r',Op.c_str(),(unsigned int)Percent);
+ Write(S);
+
+ OldOp = Op;
+}
+ /*}}}*/
+// OpTextProgress::Write - Write the progress string /*{{{*/
+// ---------------------------------------------------------------------
+/* This space fills the end to overwrite the previous text */
+void OpTextProgress::Write(const char *S)
+{
+ cout << S;
+ for (unsigned int I = strlen(S); I < LastLen; I++)
+ cout << ' ';
+ cout << '\r' << flush;
+ LastLen = strlen(S);
+}
+ /*}}}*/
diff --git a/apt-pkg/contrib/progress.h b/apt-pkg/contrib/progress.h
new file mode 100644
index 000000000..427b1bd35
--- /dev/null
+++ b/apt-pkg/contrib/progress.h
@@ -0,0 +1,91 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: progress.h,v 1.6 2001/05/07 05:06:52 jgg Exp $
+/* ######################################################################
+
+ OpProgress - Operation Progress
+
+ This class allows lengthy operations to communicate their progress
+ to the GUI. The progress model is simple and is not designed to handle
+ the complex case of the multi-activity acquire class.
+
+ The model is based on the concept of an overall operation consisting
+ of a series of small sub operations. Each sub operation has it's own
+ completion status and the overall operation has it's completion status.
+ The units of the two are not mixed and are completely independent.
+
+ The UI is expected to subclass this to provide the visuals to the user.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_PROGRESS_H
+#define PKGLIB_PROGRESS_H
+
+
+#include <string>
+#include <sys/time.h>
+#include <apt-pkg/macros.h>
+
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+#endif
+
+class Configuration;
+class OpProgress
+{
+ unsigned long long Current;
+ unsigned long long Total;
+ unsigned long long Size;
+ unsigned long long SubTotal;
+ float LastPercent;
+
+ // Change reduction code
+ struct timeval LastTime;
+ std::string LastOp;
+ std::string LastSubOp;
+
+ protected:
+
+ std::string Op;
+ std::string SubOp;
+ float Percent;
+
+ bool MajorChange;
+
+ bool CheckChange(float Interval = 0.7);
+ virtual void Update() {};
+
+ public:
+
+ void Progress(unsigned long long Current);
+ void SubProgress(unsigned long long SubTotal, const std::string &Op = "", float const Percent = -1);
+ void OverallProgress(unsigned long long Current,unsigned long long Total,
+ unsigned long long Size,const std::string &Op);
+ virtual void Done() {};
+
+ OpProgress();
+ virtual ~OpProgress() {};
+};
+
+class OpTextProgress : public OpProgress
+{
+ protected:
+
+ std::string OldOp;
+ bool NoUpdate;
+ bool NoDisplay;
+ unsigned long LastLen;
+ virtual void Update() APT_OVERRIDE;
+ void Write(const char *S);
+
+ public:
+
+ virtual void Done() APT_OVERRIDE;
+
+ OpTextProgress(bool NoUpdate = false) : NoUpdate(NoUpdate),
+ NoDisplay(false), LastLen(0) {};
+ OpTextProgress(Configuration &Config);
+ virtual ~OpTextProgress() {Done();};
+};
+
+#endif
diff --git a/apt-pkg/contrib/proxy.cc b/apt-pkg/contrib/proxy.cc
new file mode 100644
index 000000000..1b7a92c68
--- /dev/null
+++ b/apt-pkg/contrib/proxy.cc
@@ -0,0 +1,78 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Proxy - Proxy related functions
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<apt-pkg/configuration.h>
+#include<apt-pkg/error.h>
+#include<apt-pkg/fileutl.h>
+#include<apt-pkg/strutl.h>
+
+#include<iostream>
+#include <unistd.h>
+
+#include "proxy.h"
+ /*}}}*/
+
+// AutoDetectProxy - auto detect proxy /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool AutoDetectProxy(URI &URL)
+{
+ // we support both http/https debug options
+ bool Debug = _config->FindB("Debug::Acquire::"+URL.Access,false);
+
+ // the user already explicitly set a proxy for this host
+ if(_config->Find("Acquire::"+URL.Access+"::proxy::"+URL.Host, "") != "")
+ return true;
+
+ // option is "Acquire::http::Proxy-Auto-Detect" but we allow the old
+ // name without the dash ("-")
+ std::string AutoDetectProxyCmd = _config->Find("Acquire::"+URL.Access+"::Proxy-Auto-Detect",
+ _config->Find("Acquire::"+URL.Access+"::ProxyAutoDetect"));
+
+ if (AutoDetectProxyCmd.empty())
+ return true;
+
+ if (Debug)
+ std::clog << "Using auto proxy detect command: " << AutoDetectProxyCmd << std::endl;
+
+ std::string const urlstring = URL;
+ std::vector<const char *> Args;
+ Args.push_back(AutoDetectProxyCmd.c_str());
+ Args.push_back(urlstring.c_str());
+ Args.push_back(nullptr);
+ FileFd PipeFd;
+ pid_t Child;
+ if(Popen(&Args[0], PipeFd, Child, FileFd::ReadOnly, false) == false)
+ return _error->Error("ProxyAutoDetect command '%s' failed!", AutoDetectProxyCmd.c_str());
+ char buf[512];
+ bool const goodread = PipeFd.ReadLine(buf, sizeof(buf)) != nullptr;
+ PipeFd.Close();
+ if (ExecWait(Child, "ProxyAutoDetect") == false)
+ return false;
+ // no output means the detector has no idea which proxy to use
+ // and apt will use the generic proxy settings
+ if (goodread == false)
+ return true;
+ auto const cleanedbuf = _strstrip(buf);
+ // We warn about this as the implementor probably meant to use DIRECT instead
+ if (cleanedbuf[0] == '\0')
+ {
+ _error->Warning("ProxyAutoDetect command returned an empty line");
+ return true;
+ }
+
+ if (Debug)
+ std::clog << "auto detect command returned: '" << cleanedbuf << "'" << std::endl;
+
+ if (strstr(cleanedbuf, URL.Access.c_str()) == cleanedbuf || strcmp(cleanedbuf, "DIRECT") == 0)
+ _config->Set("Acquire::"+URL.Access+"::proxy::"+URL.Host, cleanedbuf);
+
+ return true;
+}
+ /*}}}*/
diff --git a/apt-pkg/contrib/proxy.h b/apt-pkg/contrib/proxy.h
new file mode 100644
index 000000000..2cbcd07b4
--- /dev/null
+++ b/apt-pkg/contrib/proxy.h
@@ -0,0 +1,16 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Proxy - Proxy operations
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_PROXY_H
+#define PKGLIB_PROXY_H
+
+class URI;
+bool AutoDetectProxy(URI &URL);
+
+
+#endif
diff --git a/apt-pkg/contrib/sha1.cc b/apt-pkg/contrib/sha1.cc
new file mode 100644
index 000000000..298a7799b
--- /dev/null
+++ b/apt-pkg/contrib/sha1.cc
@@ -0,0 +1,274 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: sha1.cc,v 1.3 2001/05/13 05:15:03 jgg Exp $
+/* ######################################################################
+
+ SHA1 - SHA-1 Secure Hash Algorithm.
+
+ This file is a Public Domain wrapper for the Public Domain SHA1
+ calculation code that is at it's end.
+
+ The algorithm was originally implemented by
+ Steve Reid <sreid@sea-to-sky.net> and later modified by
+ James H. Brown <jbrown@burgoyne.com>.
+
+ Modifications for APT were done by Alfredo K. Kojima and Jason
+ Gunthorpe.
+
+ Still in the public domain.
+
+ Test Vectors (from FIPS PUB 180-1)
+ "abc"
+ A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D
+ "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
+ 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1
+ A million repetitions of "a"
+ 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F
+
+ #####################################################################
+ */
+ /*}}} */
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/sha1.h>
+
+#include <stdint.h>
+#include <string.h>
+ /*}}}*/
+
+// SHA1Transform - Alters an existing SHA-1 hash /*{{{*/
+// ---------------------------------------------------------------------
+/* The core of the SHA-1 algorithm. This alters an existing SHA-1 hash to
+ reflect the addition of 16 longwords of new data. Other routines convert
+ incoming stream data into 16 long word chunks for this routine */
+
+#define rol(value,bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
+
+/* blk0() and blk() perform the initial expand. */
+/* I got the idea of expanding during the round function from SSLeay */
+#ifndef WORDS_BIGENDIAN
+#define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \
+ |(rol(block->l[i],8)&0x00FF00FF))
+#else
+#define blk0(i) block->l[i]
+#endif
+#define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \
+ ^block->l[(i+2)&15]^block->l[i&15],1))
+
+/* (R0+R1),R2,R3,R4 are the different operations used in SHA1 */
+#define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol(v,5);w=rol(w,30);
+#define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5);w=rol(w,30);
+#define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30);
+#define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30);
+#define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol(v,5);w=rol(w,30);
+
+static void SHA1Transform(uint32_t state[5],uint8_t const buffer[64])
+{
+ uint32_t a,b,c,d,e;
+ typedef union
+ {
+ uint8_t c[64];
+ uint32_t l[16];
+ }
+ CHAR64LONG16;
+ CHAR64LONG16 workspace, *block;
+
+ block = &workspace;
+ memcpy(block,buffer,sizeof(workspace));
+
+ /* Copy context->state[] to working vars */
+ a = state[0];
+ b = state[1];
+ c = state[2];
+ d = state[3];
+ e = state[4];
+
+ /* 4 rounds of 20 operations each. Loop unrolled. */
+ R0(a,b,c,d,e,0);
+ R0(e,a,b,c,d,1);
+ R0(d,e,a,b,c,2);
+ R0(c,d,e,a,b,3);
+ R0(b,c,d,e,a,4);
+ R0(a,b,c,d,e,5);
+ R0(e,a,b,c,d,6);
+ R0(d,e,a,b,c,7);
+ R0(c,d,e,a,b,8);
+ R0(b,c,d,e,a,9);
+ R0(a,b,c,d,e,10);
+ R0(e,a,b,c,d,11);
+ R0(d,e,a,b,c,12);
+ R0(c,d,e,a,b,13);
+ R0(b,c,d,e,a,14);
+ R0(a,b,c,d,e,15);
+ R1(e,a,b,c,d,16);
+ R1(d,e,a,b,c,17);
+ R1(c,d,e,a,b,18);
+ R1(b,c,d,e,a,19);
+ R2(a,b,c,d,e,20);
+ R2(e,a,b,c,d,21);
+ R2(d,e,a,b,c,22);
+ R2(c,d,e,a,b,23);
+ R2(b,c,d,e,a,24);
+ R2(a,b,c,d,e,25);
+ R2(e,a,b,c,d,26);
+ R2(d,e,a,b,c,27);
+ R2(c,d,e,a,b,28);
+ R2(b,c,d,e,a,29);
+ R2(a,b,c,d,e,30);
+ R2(e,a,b,c,d,31);
+ R2(d,e,a,b,c,32);
+ R2(c,d,e,a,b,33);
+ R2(b,c,d,e,a,34);
+ R2(a,b,c,d,e,35);
+ R2(e,a,b,c,d,36);
+ R2(d,e,a,b,c,37);
+ R2(c,d,e,a,b,38);
+ R2(b,c,d,e,a,39);
+ R3(a,b,c,d,e,40);
+ R3(e,a,b,c,d,41);
+ R3(d,e,a,b,c,42);
+ R3(c,d,e,a,b,43);
+ R3(b,c,d,e,a,44);
+ R3(a,b,c,d,e,45);
+ R3(e,a,b,c,d,46);
+ R3(d,e,a,b,c,47);
+ R3(c,d,e,a,b,48);
+ R3(b,c,d,e,a,49);
+ R3(a,b,c,d,e,50);
+ R3(e,a,b,c,d,51);
+ R3(d,e,a,b,c,52);
+ R3(c,d,e,a,b,53);
+ R3(b,c,d,e,a,54);
+ R3(a,b,c,d,e,55);
+ R3(e,a,b,c,d,56);
+ R3(d,e,a,b,c,57);
+ R3(c,d,e,a,b,58);
+ R3(b,c,d,e,a,59);
+ R4(a,b,c,d,e,60);
+ R4(e,a,b,c,d,61);
+ R4(d,e,a,b,c,62);
+ R4(c,d,e,a,b,63);
+ R4(b,c,d,e,a,64);
+ R4(a,b,c,d,e,65);
+ R4(e,a,b,c,d,66);
+ R4(d,e,a,b,c,67);
+ R4(c,d,e,a,b,68);
+ R4(b,c,d,e,a,69);
+ R4(a,b,c,d,e,70);
+ R4(e,a,b,c,d,71);
+ R4(d,e,a,b,c,72);
+ R4(c,d,e,a,b,73);
+ R4(b,c,d,e,a,74);
+ R4(a,b,c,d,e,75);
+ R4(e,a,b,c,d,76);
+ R4(d,e,a,b,c,77);
+ R4(c,d,e,a,b,78);
+ R4(b,c,d,e,a,79);
+
+ /* Add the working vars back into context.state[] */
+ state[0] += a;
+ state[1] += b;
+ state[2] += c;
+ state[3] += d;
+ state[4] += e;
+}
+ /*}}}*/
+
+// SHA1Summation::SHA1Summation - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+SHA1Summation::SHA1Summation()
+{
+ uint32_t *state = (uint32_t *)State;
+ uint32_t *count = (uint32_t *)Count;
+
+ /* SHA1 initialization constants */
+ state[0] = 0x67452301;
+ state[1] = 0xEFCDAB89;
+ state[2] = 0x98BADCFE;
+ state[3] = 0x10325476;
+ state[4] = 0xC3D2E1F0;
+ count[0] = 0;
+ count[1] = 0;
+ Done = false;
+}
+ /*}}}*/
+// SHA1Summation::Result - Return checksum value /*{{{*/
+// ---------------------------------------------------------------------
+/* Add() may not be called after this */
+SHA1SumValue SHA1Summation::Result()
+{
+ uint32_t *state = (uint32_t *)State;
+ uint32_t *count = (uint32_t *)Count;
+
+ // Apply the padding
+ if (Done == false)
+ {
+ unsigned char finalcount[8];
+
+ for (unsigned i = 0; i < 8; i++)
+ {
+ // Endian independent
+ finalcount[i] = (unsigned char) ((count[(i >= 4 ? 0 : 1)]
+ >> ((3 - (i & 3)) * 8)) & 255);
+ }
+
+ Add((unsigned char *) "\200",1);
+ while ((count[0] & 504) != 448)
+ Add((unsigned char *) "\0",1);
+
+ Add(finalcount,8); /* Should cause a SHA1Transform() */
+
+ }
+
+ Done = true;
+
+ // Transfer over the result
+ SHA1SumValue Value;
+ unsigned char res[20];
+ for (unsigned i = 0; i < 20; i++)
+ {
+ res[i] = (unsigned char)
+ ((state[i >> 2] >> ((3 - (i & 3)) * 8)) & 255);
+ }
+ Value.Set(res);
+ return Value;
+}
+ /*}}}*/
+// SHA1Summation::Add - Adds content of buffer into the checksum /*{{{*/
+// ---------------------------------------------------------------------
+/* May not be called after Result() is called */
+bool SHA1Summation::Add(const unsigned char *data,unsigned long long len)
+{
+ if (Done)
+ return false;
+ if (len == 0)
+ return true;
+
+ uint32_t *state = (uint32_t *)State;
+ uint32_t *count = (uint32_t *)Count;
+ uint8_t *buffer = (uint8_t *)Buffer;
+ uint32_t i,j;
+
+ j = (count[0] >> 3) & 63;
+ if ((count[0] += len << 3) < (len << 3))
+ count[1]++;
+ count[1] += (len >> 29);
+ if ((j + len) > 63)
+ {
+ memcpy(&buffer[j],data,(i = 64 - j));
+ SHA1Transform(state,buffer);
+ for (; i + 63 < len; i += 64)
+ {
+ SHA1Transform(state,&data[i]);
+ }
+ j = 0;
+ }
+ else
+ i = 0;
+ memcpy(&buffer[j],&data[i],len - i);
+
+ return true;
+}
+ /*}}}*/
diff --git a/apt-pkg/contrib/sha1.h b/apt-pkg/contrib/sha1.h
new file mode 100644
index 000000000..3387c1cfd
--- /dev/null
+++ b/apt-pkg/contrib/sha1.h
@@ -0,0 +1,48 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: sha1.h,v 1.3 2001/05/07 05:05:47 jgg Exp $
+/* ######################################################################
+
+ SHA1SumValue - Storage for a SHA-1 hash.
+ SHA1Summation - SHA-1 Secure Hash Algorithm.
+
+ This is a C++ interface to a set of SHA1Sum functions, that mirrors
+ the equivalent MD5 classes.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef APTPKG_SHA1_H
+#define APTPKG_SHA1_H
+
+#include "hashsum_template.h"
+
+#ifndef APT_10_CLEANER_HEADERS
+#include <string>
+#include <cstring>
+#include <algorithm>
+#endif
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+using std::min;
+#endif
+
+typedef HashSumValue<160> SHA1SumValue;
+
+class SHA1Summation : public SummationImplementation
+{
+ /* assumes 64-bit alignment just in case */
+ unsigned char Buffer[64] __attribute__((aligned(8)));
+ unsigned char State[5*4] __attribute__((aligned(8)));
+ unsigned char Count[2*4] __attribute__((aligned(8)));
+ bool Done;
+
+ public:
+ bool Add(const unsigned char *inbuf, unsigned long long inlen) APT_OVERRIDE APT_NONNULL(2);
+ using SummationImplementation::Add;
+
+ SHA1SumValue Result();
+
+ SHA1Summation();
+};
+
+#endif
diff --git a/apt-pkg/contrib/sha2.h b/apt-pkg/contrib/sha2.h
new file mode 100644
index 000000000..164840d3b
--- /dev/null
+++ b/apt-pkg/contrib/sha2.h
@@ -0,0 +1,109 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: sha512.h,v 1.3 2001/05/07 05:05:47 jgg Exp $
+/* ######################################################################
+
+ SHA{512,256}SumValue - Storage for a SHA-{512,256} hash.
+ SHA{512,256}Summation - SHA-{512,256} Secure Hash Algorithm.
+
+ This is a C++ interface to a set of SHA{512,256}Sum functions, that mirrors
+ the equivalent MD5 & SHA1 classes.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef APTPKG_SHA2_H
+#define APTPKG_SHA2_H
+
+#include <cstring>
+
+#include "sha2_internal.h"
+#include "hashsum_template.h"
+
+#ifndef APT_10_CLEANER_HEADERS
+#include <string>
+#include <algorithm>
+#include <stdint.h>
+#endif
+
+
+typedef HashSumValue<512> SHA512SumValue;
+typedef HashSumValue<256> SHA256SumValue;
+
+class SHA2SummationBase : public SummationImplementation
+{
+ protected:
+ bool Done;
+ public:
+ bool Add(const unsigned char *inbuf, unsigned long long len) APT_OVERRIDE APT_NONNULL(2) = 0;
+
+ void Result();
+};
+
+class SHA256Summation : public SHA2SummationBase
+{
+ SHA256_CTX ctx;
+ unsigned char Sum[32];
+
+ public:
+ bool Add(const unsigned char *inbuf, unsigned long long len) APT_OVERRIDE APT_NONNULL(2)
+ {
+ if (Done)
+ return false;
+ SHA256_Update(&ctx, inbuf, len);
+ return true;
+ };
+ using SummationImplementation::Add;
+
+ SHA256SumValue Result()
+ {
+ if (!Done) {
+ SHA256_Final(Sum, &ctx);
+ Done = true;
+ }
+ SHA256SumValue res;
+ res.Set(Sum);
+ return res;
+ };
+ SHA256Summation()
+ {
+ SHA256_Init(&ctx);
+ Done = false;
+ memset(&Sum, 0, sizeof(Sum));
+ };
+};
+
+class SHA512Summation : public SHA2SummationBase
+{
+ SHA512_CTX ctx;
+ unsigned char Sum[64];
+
+ public:
+ bool Add(const unsigned char *inbuf, unsigned long long len) APT_OVERRIDE APT_NONNULL(2)
+ {
+ if (Done)
+ return false;
+ SHA512_Update(&ctx, inbuf, len);
+ return true;
+ };
+ using SummationImplementation::Add;
+
+ SHA512SumValue Result()
+ {
+ if (!Done) {
+ SHA512_Final(Sum, &ctx);
+ Done = true;
+ }
+ SHA512SumValue res;
+ res.Set(Sum);
+ return res;
+ };
+ SHA512Summation()
+ {
+ SHA512_Init(&ctx);
+ Done = false;
+ memset(&Sum, 0, sizeof(Sum));
+ };
+};
+
+
+#endif
diff --git a/apt-pkg/contrib/sha256.h b/apt-pkg/contrib/sha256.h
new file mode 100644
index 000000000..15146c948
--- /dev/null
+++ b/apt-pkg/contrib/sha256.h
@@ -0,0 +1,8 @@
+#ifndef APTPKG_SHA256_H
+#define APTPKG_SHA256_H
+
+#include "sha2.h"
+
+#warning "This header is deprecated, please include sha2.h instead"
+
+#endif
diff --git a/apt-pkg/contrib/sha2_internal.cc b/apt-pkg/contrib/sha2_internal.cc
new file mode 100644
index 000000000..f70b7b17d
--- /dev/null
+++ b/apt-pkg/contrib/sha2_internal.cc
@@ -0,0 +1,1090 @@
+/*
+ * FILE: sha2.c
+ * AUTHOR: Aaron D. Gifford - http://www.aarongifford.com/
+ *
+ * Copyright (c) 2000-2001, Aaron D. Gifford
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holder nor the names of contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id: sha2.c,v 1.1 2001/11/08 00:01:51 adg Exp adg $
+ */
+#include <config.h>
+
+#include <endian.h>
+#include <string.h> /* memcpy()/memset() or bcopy()/bzero() */
+#include <assert.h> /* assert() */
+#include "sha2_internal.h"
+
+/*
+ * ASSERT NOTE:
+ * Some sanity checking code is included using assert(). On my FreeBSD
+ * system, this additional code can be removed by compiling with NDEBUG
+ * defined. Check your own systems manpage on assert() to see how to
+ * compile WITHOUT the sanity checking code on your system.
+ *
+ * UNROLLED TRANSFORM LOOP NOTE:
+ * You can define SHA2_UNROLL_TRANSFORM to use the unrolled transform
+ * loop version for the hash transform rounds (defined using macros
+ * later in this file). Either define on the command line, for example:
+ *
+ * cc -DSHA2_UNROLL_TRANSFORM -o sha2 sha2.c sha2prog.c
+ *
+ * or define below:
+ *
+ * #define SHA2_UNROLL_TRANSFORM
+ *
+ */
+
+
+/*** SHA-256/384/512 Machine Architecture Definitions *****************/
+/*
+ * BYTE_ORDER NOTE:
+ *
+ * Please make sure that your system defines BYTE_ORDER. If your
+ * architecture is little-endian, make sure it also defines
+ * LITTLE_ENDIAN and that the two (BYTE_ORDER and LITTLE_ENDIAN) are
+ * equivalent.
+ *
+ * If your system does not define the above, then you can do so by
+ * hand like this:
+ *
+ * #define LITTLE_ENDIAN 1234
+ * #define BIG_ENDIAN 4321
+ *
+ * And for little-endian machines, add:
+ *
+ * #define BYTE_ORDER LITTLE_ENDIAN
+ *
+ * Or for big-endian machines:
+ *
+ * #define BYTE_ORDER BIG_ENDIAN
+ *
+ * The FreeBSD machine this was written on defines BYTE_ORDER
+ * appropriately by including <sys/types.h> (which in turn includes
+ * <machine/endian.h> where the appropriate definitions are actually
+ * made).
+ */
+#if !defined(BYTE_ORDER) || (BYTE_ORDER != LITTLE_ENDIAN && BYTE_ORDER != BIG_ENDIAN)
+#error Define BYTE_ORDER to be equal to either LITTLE_ENDIAN or BIG_ENDIAN
+#endif
+
+/*
+ * Define the followingsha2_* types to types of the correct length on
+ * the native archtecture. Most BSD systems and Linux define u_intXX_t
+ * types. Machines with very recent ANSI C headers, can use the
+ * uintXX_t definintions from inttypes.h by defining SHA2_USE_INTTYPES_H
+ * during compile or in the sha.h header file.
+ *
+ * Machines that support neither u_intXX_t nor inttypes.h's uintXX_t
+ * will need to define these three typedefs below (and the appropriate
+ * ones in sha.h too) by hand according to their system architecture.
+ *
+ * Thank you, Jun-ichiro itojun Hagino, for suggesting using u_intXX_t
+ * types and pointing out recent ANSI C support for uintXX_t in inttypes.h.
+ */
+#ifdef SHA2_USE_INTTYPES_H
+
+typedef uint8_t sha2_byte; /* Exactly 1 byte */
+typedef uint32_t sha2_word32; /* Exactly 4 bytes */
+typedef uint64_t sha2_word64; /* Exactly 8 bytes */
+
+#else /* SHA2_USE_INTTYPES_H */
+
+typedef u_int8_t sha2_byte; /* Exactly 1 byte */
+typedef u_int32_t sha2_word32; /* Exactly 4 bytes */
+typedef u_int64_t sha2_word64; /* Exactly 8 bytes */
+
+#endif /* SHA2_USE_INTTYPES_H */
+
+
+/*** SHA-256/384/512 Various Length Definitions ***********************/
+/* NOTE: Most of these are in sha2.h */
+#define SHA256_SHORT_BLOCK_LENGTH (SHA256_BLOCK_LENGTH - 8)
+#define SHA384_SHORT_BLOCK_LENGTH (SHA384_BLOCK_LENGTH - 16)
+#define SHA512_SHORT_BLOCK_LENGTH (SHA512_BLOCK_LENGTH - 16)
+
+
+/*** ENDIAN REVERSAL MACROS *******************************************/
+#if BYTE_ORDER == LITTLE_ENDIAN
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+#define REVERSE32(w,x) { \
+ (x) = __builtin_bswap32(w); \
+}
+#define REVERSE64(w,x) { \
+ (x) = __builtin_bswap64(w); \
+}
+#else
+#define REVERSE32(w,x) { \
+ sha2_word32 tmp = (w); \
+ tmp = (tmp >> 16) | (tmp << 16); \
+ (x) = ((tmp & 0xff00ff00UL) >> 8) | ((tmp & 0x00ff00ffUL) << 8); \
+}
+#define REVERSE64(w,x) { \
+ sha2_word64 tmp = (w); \
+ tmp = (tmp >> 32) | (tmp << 32); \
+ tmp = ((tmp & 0xff00ff00ff00ff00ULL) >> 8) | \
+ ((tmp & 0x00ff00ff00ff00ffULL) << 8); \
+ (x) = ((tmp & 0xffff0000ffff0000ULL) >> 16) | \
+ ((tmp & 0x0000ffff0000ffffULL) << 16); \
+}
+#endif
+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
+
+/*
+ * Macro for incrementally adding the unsigned 64-bit integer n to the
+ * unsigned 128-bit integer (represented using a two-element array of
+ * 64-bit words):
+ */
+#define ADDINC128(w,n) { \
+ (w)[0] += (sha2_word64)(n); \
+ if ((w)[0] < (n)) { \
+ (w)[1]++; \
+ } \
+}
+
+/*
+ * Macros for copying blocks of memory and for zeroing out ranges
+ * of memory. Using these macros makes it easy to switch from
+ * using memset()/memcpy() and using bzero()/bcopy().
+ *
+ * Please define either SHA2_USE_MEMSET_MEMCPY or define
+ * SHA2_USE_BZERO_BCOPY depending on which function set you
+ * choose to use:
+ */
+#if !defined(SHA2_USE_MEMSET_MEMCPY) && !defined(SHA2_USE_BZERO_BCOPY)
+/* Default to memset()/memcpy() if no option is specified */
+#define SHA2_USE_MEMSET_MEMCPY 1
+#endif
+#if defined(SHA2_USE_MEMSET_MEMCPY) && defined(SHA2_USE_BZERO_BCOPY)
+/* Abort with an error if BOTH options are defined */
+#error Define either SHA2_USE_MEMSET_MEMCPY or SHA2_USE_BZERO_BCOPY, not both!
+#endif
+
+#ifdef SHA2_USE_MEMSET_MEMCPY
+#define MEMSET_BZERO(p,l) memset((p), 0, (l))
+#define MEMCPY_BCOPY(d,s,l) memcpy((d), (s), (l))
+#endif
+#ifdef SHA2_USE_BZERO_BCOPY
+#define MEMSET_BZERO(p,l) bzero((p), (l))
+#define MEMCPY_BCOPY(d,s,l) bcopy((s), (d), (l))
+#endif
+
+
+/*** THE SIX LOGICAL FUNCTIONS ****************************************/
+/*
+ * Bit shifting and rotation (used by the six SHA-XYZ logical functions:
+ *
+ * NOTE: The naming of R and S appears backwards here (R is a SHIFT and
+ * S is a ROTATION) because the SHA-256/384/512 description document
+ * (see http://csrc.nist.gov/cryptval/shs/sha256-384-512.pdf) uses this
+ * same "backwards" definition.
+ */
+/* Shift-right (used in SHA-256, SHA-384, and SHA-512): */
+#define R(b,x) ((x) >> (b))
+/* 32-bit Rotate-right (used in SHA-256): */
+#define S32(b,x) (((x) >> (b)) | ((x) << (32 - (b))))
+/* 64-bit Rotate-right (used in SHA-384 and SHA-512): */
+#define S64(b,x) (((x) >> (b)) | ((x) << (64 - (b))))
+
+/* Two of six logical functions used in SHA-256, SHA-384, and SHA-512: */
+#define Ch(x,y,z) (((x) & (y)) ^ ((~(x)) & (z)))
+#define Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
+
+/* Four of six logical functions used in SHA-256: */
+#define Sigma0_256(x) (S32(2, (x)) ^ S32(13, (x)) ^ S32(22, (x)))
+#define Sigma1_256(x) (S32(6, (x)) ^ S32(11, (x)) ^ S32(25, (x)))
+#define sigma0_256(x) (S32(7, (x)) ^ S32(18, (x)) ^ R(3 , (x)))
+#define sigma1_256(x) (S32(17, (x)) ^ S32(19, (x)) ^ R(10, (x)))
+
+/* Four of six logical functions used in SHA-384 and SHA-512: */
+#define Sigma0_512(x) (S64(28, (x)) ^ S64(34, (x)) ^ S64(39, (x)))
+#define Sigma1_512(x) (S64(14, (x)) ^ S64(18, (x)) ^ S64(41, (x)))
+#define sigma0_512(x) (S64( 1, (x)) ^ S64( 8, (x)) ^ R( 7, (x)))
+#define sigma1_512(x) (S64(19, (x)) ^ S64(61, (x)) ^ R( 6, (x)))
+
+/*** INTERNAL FUNCTION PROTOTYPES *************************************/
+/* NOTE: These should not be accessed directly from outside this
+ * library -- they are intended for private internal visibility/use
+ * only.
+ */
+static void SHA512_Last(SHA512_CTX*);
+static void SHA256_Transform(SHA256_CTX*, const sha2_word32*);
+static void SHA512_Transform(SHA512_CTX*, const sha2_word64*);
+
+
+/*** SHA-XYZ INITIAL HASH VALUES AND CONSTANTS ************************/
+/* Hash constant words K for SHA-256: */
+const static sha2_word32 K256[64] = {
+ 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL,
+ 0x3956c25bUL, 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL,
+ 0xd807aa98UL, 0x12835b01UL, 0x243185beUL, 0x550c7dc3UL,
+ 0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL, 0xc19bf174UL,
+ 0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL,
+ 0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL,
+ 0x983e5152UL, 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL,
+ 0xc6e00bf3UL, 0xd5a79147UL, 0x06ca6351UL, 0x14292967UL,
+ 0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL, 0x53380d13UL,
+ 0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL,
+ 0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL,
+ 0xd192e819UL, 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL,
+ 0x19a4c116UL, 0x1e376c08UL, 0x2748774cUL, 0x34b0bcb5UL,
+ 0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL, 0x682e6ff3UL,
+ 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL,
+ 0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL
+};
+
+/* Initial hash value H for SHA-256: */
+const static sha2_word32 sha256_initial_hash_value[8] = {
+ 0x6a09e667UL,
+ 0xbb67ae85UL,
+ 0x3c6ef372UL,
+ 0xa54ff53aUL,
+ 0x510e527fUL,
+ 0x9b05688cUL,
+ 0x1f83d9abUL,
+ 0x5be0cd19UL
+};
+
+/* Hash constant words K for SHA-384 and SHA-512: */
+const static sha2_word64 K512[80] = {
+ 0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL,
+ 0xb5c0fbcfec4d3b2fULL, 0xe9b5dba58189dbbcULL,
+ 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL,
+ 0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL,
+ 0xd807aa98a3030242ULL, 0x12835b0145706fbeULL,
+ 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL,
+ 0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL,
+ 0x9bdc06a725c71235ULL, 0xc19bf174cf692694ULL,
+ 0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL,
+ 0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL,
+ 0x2de92c6f592b0275ULL, 0x4a7484aa6ea6e483ULL,
+ 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL,
+ 0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL,
+ 0xb00327c898fb213fULL, 0xbf597fc7beef0ee4ULL,
+ 0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL,
+ 0x06ca6351e003826fULL, 0x142929670a0e6e70ULL,
+ 0x27b70a8546d22ffcULL, 0x2e1b21385c26c926ULL,
+ 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL,
+ 0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL,
+ 0x81c2c92e47edaee6ULL, 0x92722c851482353bULL,
+ 0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL,
+ 0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL,
+ 0xd192e819d6ef5218ULL, 0xd69906245565a910ULL,
+ 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL,
+ 0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL,
+ 0x2748774cdf8eeb99ULL, 0x34b0bcb5e19b48a8ULL,
+ 0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL,
+ 0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL,
+ 0x748f82ee5defb2fcULL, 0x78a5636f43172f60ULL,
+ 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL,
+ 0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL,
+ 0xbef9a3f7b2c67915ULL, 0xc67178f2e372532bULL,
+ 0xca273eceea26619cULL, 0xd186b8c721c0c207ULL,
+ 0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL,
+ 0x06f067aa72176fbaULL, 0x0a637dc5a2c898a6ULL,
+ 0x113f9804bef90daeULL, 0x1b710b35131c471bULL,
+ 0x28db77f523047d84ULL, 0x32caab7b40c72493ULL,
+ 0x3c9ebe0a15c9bebcULL, 0x431d67c49c100d4cULL,
+ 0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL,
+ 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL
+};
+
+/* Initial hash value H for SHA-384 */
+const static sha2_word64 sha384_initial_hash_value[8] = {
+ 0xcbbb9d5dc1059ed8ULL,
+ 0x629a292a367cd507ULL,
+ 0x9159015a3070dd17ULL,
+ 0x152fecd8f70e5939ULL,
+ 0x67332667ffc00b31ULL,
+ 0x8eb44a8768581511ULL,
+ 0xdb0c2e0d64f98fa7ULL,
+ 0x47b5481dbefa4fa4ULL
+};
+
+/* Initial hash value H for SHA-512 */
+const static sha2_word64 sha512_initial_hash_value[8] = {
+ 0x6a09e667f3bcc908ULL,
+ 0xbb67ae8584caa73bULL,
+ 0x3c6ef372fe94f82bULL,
+ 0xa54ff53a5f1d36f1ULL,
+ 0x510e527fade682d1ULL,
+ 0x9b05688c2b3e6c1fULL,
+ 0x1f83d9abfb41bd6bULL,
+ 0x5be0cd19137e2179ULL
+};
+
+/*
+ * Constant used by SHA256/384/512_End() functions for converting the
+ * digest to a readable hexadecimal character string:
+ */
+static const char *sha2_hex_digits = "0123456789abcdef";
+
+
+/*** SHA-256: *********************************************************/
+void SHA256_Init(SHA256_CTX* context) {
+ if (context == (SHA256_CTX*)0) {
+ return;
+ }
+ MEMCPY_BCOPY(context->state, sha256_initial_hash_value, SHA256_DIGEST_LENGTH);
+ MEMSET_BZERO(context->buffer, SHA256_BLOCK_LENGTH);
+ context->bitcount = 0;
+}
+
+#ifdef SHA2_UNROLL_TRANSFORM
+
+/* Unrolled SHA-256 round macros: */
+
+#if BYTE_ORDER == LITTLE_ENDIAN
+
+#define ROUND256_0_TO_15(a,b,c,d,e,f,g,h) \
+ REVERSE32(*data++, W256[j]); \
+ T1 = (h) + Sigma1_256(e) + Ch((e), (f), (g)) + \
+ K256[j] + W256[j]; \
+ (d) += T1; \
+ (h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \
+ j++
+
+
+#else /* BYTE_ORDER == LITTLE_ENDIAN */
+
+#define ROUND256_0_TO_15(a,b,c,d,e,f,g,h) \
+ T1 = (h) + Sigma1_256(e) + Ch((e), (f), (g)) + \
+ K256[j] + (W256[j] = *data++); \
+ (d) += T1; \
+ (h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \
+ j++
+
+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
+
+#define ROUND256(a,b,c,d,e,f,g,h) \
+ s0 = W256[(j+1)&0x0f]; \
+ s0 = sigma0_256(s0); \
+ s1 = W256[(j+14)&0x0f]; \
+ s1 = sigma1_256(s1); \
+ T1 = (h) + Sigma1_256(e) + Ch((e), (f), (g)) + K256[j] + \
+ (W256[j&0x0f] += s1 + W256[(j+9)&0x0f] + s0); \
+ (d) += T1; \
+ (h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \
+ j++
+
+static void SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) {
+ sha2_word32 a, b, c, d, e, f, g, h, s0, s1;
+ sha2_word32 T1, *W256;
+ int j;
+
+ W256 = (sha2_word32*)context->buffer;
+
+ /* Initialize registers with the prev. intermediate value */
+ a = context->state[0];
+ b = context->state[1];
+ c = context->state[2];
+ d = context->state[3];
+ e = context->state[4];
+ f = context->state[5];
+ g = context->state[6];
+ h = context->state[7];
+
+ j = 0;
+ do {
+ /* Rounds 0 to 15 (unrolled): */
+ ROUND256_0_TO_15(a,b,c,d,e,f,g,h);
+ ROUND256_0_TO_15(h,a,b,c,d,e,f,g);
+ ROUND256_0_TO_15(g,h,a,b,c,d,e,f);
+ ROUND256_0_TO_15(f,g,h,a,b,c,d,e);
+ ROUND256_0_TO_15(e,f,g,h,a,b,c,d);
+ ROUND256_0_TO_15(d,e,f,g,h,a,b,c);
+ ROUND256_0_TO_15(c,d,e,f,g,h,a,b);
+ ROUND256_0_TO_15(b,c,d,e,f,g,h,a);
+ } while (j < 16);
+
+ /* Now for the remaining rounds to 64: */
+ do {
+ ROUND256(a,b,c,d,e,f,g,h);
+ ROUND256(h,a,b,c,d,e,f,g);
+ ROUND256(g,h,a,b,c,d,e,f);
+ ROUND256(f,g,h,a,b,c,d,e);
+ ROUND256(e,f,g,h,a,b,c,d);
+ ROUND256(d,e,f,g,h,a,b,c);
+ ROUND256(c,d,e,f,g,h,a,b);
+ ROUND256(b,c,d,e,f,g,h,a);
+ } while (j < 64);
+
+ /* Compute the current intermediate hash value */
+ context->state[0] += a;
+ context->state[1] += b;
+ context->state[2] += c;
+ context->state[3] += d;
+ context->state[4] += e;
+ context->state[5] += f;
+ context->state[6] += g;
+ context->state[7] += h;
+
+ /* Clean up */
+ a = b = c = d = e = f = g = h = T1 = 0;
+}
+
+#else /* SHA2_UNROLL_TRANSFORM */
+
+static void SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) {
+ sha2_word32 a, b, c, d, e, f, g, h, s0, s1;
+ sha2_word32 T1, T2, *W256;
+ int j;
+
+ W256 = (sha2_word32*)context->buffer;
+
+ /* Initialize registers with the prev. intermediate value */
+ a = context->state[0];
+ b = context->state[1];
+ c = context->state[2];
+ d = context->state[3];
+ e = context->state[4];
+ f = context->state[5];
+ g = context->state[6];
+ h = context->state[7];
+
+ j = 0;
+ do {
+#if BYTE_ORDER == LITTLE_ENDIAN
+ /* Copy data while converting to host byte order */
+ REVERSE32(*data++,W256[j]);
+ /* Apply the SHA-256 compression function to update a..h */
+ T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + W256[j];
+#else /* BYTE_ORDER == LITTLE_ENDIAN */
+ /* Apply the SHA-256 compression function to update a..h with copy */
+ T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + (W256[j] = *data++);
+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
+ T2 = Sigma0_256(a) + Maj(a, b, c);
+ h = g;
+ g = f;
+ f = e;
+ e = d + T1;
+ d = c;
+ c = b;
+ b = a;
+ a = T1 + T2;
+
+ j++;
+ } while (j < 16);
+
+ do {
+ /* Part of the message block expansion: */
+ s0 = W256[(j+1)&0x0f];
+ s0 = sigma0_256(s0);
+ s1 = W256[(j+14)&0x0f];
+ s1 = sigma1_256(s1);
+
+ /* Apply the SHA-256 compression function to update a..h */
+ T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] +
+ (W256[j&0x0f] += s1 + W256[(j+9)&0x0f] + s0);
+ T2 = Sigma0_256(a) + Maj(a, b, c);
+ h = g;
+ g = f;
+ f = e;
+ e = d + T1;
+ d = c;
+ c = b;
+ b = a;
+ a = T1 + T2;
+
+ j++;
+ } while (j < 64);
+
+ /* Compute the current intermediate hash value */
+ context->state[0] += a;
+ context->state[1] += b;
+ context->state[2] += c;
+ context->state[3] += d;
+ context->state[4] += e;
+ context->state[5] += f;
+ context->state[6] += g;
+ context->state[7] += h;
+
+ /* Clean up */
+ a = b = c = d = e = f = g = h = T1 = T2 = 0;
+}
+
+#endif /* SHA2_UNROLL_TRANSFORM */
+
+void SHA256_Update(SHA256_CTX* context, const sha2_byte *data, size_t len) {
+ unsigned int freespace, usedspace;
+
+ if (len == 0) {
+ /* Calling with no data is valid - we do nothing */
+ return;
+ }
+
+ /* Sanity check: */
+ assert(context != (SHA256_CTX*)0 && data != (sha2_byte*)0);
+
+ usedspace = (context->bitcount >> 3) % SHA256_BLOCK_LENGTH;
+ if (usedspace > 0) {
+ /* Calculate how much free space is available in the buffer */
+ freespace = SHA256_BLOCK_LENGTH - usedspace;
+
+ if (len >= freespace) {
+ /* Fill the buffer completely and process it */
+ MEMCPY_BCOPY(&context->buffer[usedspace], data, freespace);
+ context->bitcount += freespace << 3;
+ len -= freespace;
+ data += freespace;
+ SHA256_Transform(context, (sha2_word32*)context->buffer);
+ } else {
+ /* The buffer is not yet full */
+ MEMCPY_BCOPY(&context->buffer[usedspace], data, len);
+ context->bitcount += len << 3;
+ /* Clean up: */
+ usedspace = freespace = 0;
+ return;
+ }
+ }
+ while (len >= SHA256_BLOCK_LENGTH) {
+ /* Process as many complete blocks as we can */
+ sha2_byte buffer[SHA256_BLOCK_LENGTH];
+ MEMCPY_BCOPY(buffer, data, SHA256_BLOCK_LENGTH);
+ SHA256_Transform(context, (sha2_word32*)buffer);
+ context->bitcount += SHA256_BLOCK_LENGTH << 3;
+ len -= SHA256_BLOCK_LENGTH;
+ data += SHA256_BLOCK_LENGTH;
+ }
+ if (len > 0) {
+ /* There's left-overs, so save 'em */
+ MEMCPY_BCOPY(context->buffer, data, len);
+ context->bitcount += len << 3;
+ }
+ /* Clean up: */
+ usedspace = freespace = 0;
+}
+
+void SHA256_Final(sha2_byte digest[], SHA256_CTX* context) {
+ sha2_word32 *d = (sha2_word32*)digest;
+ unsigned int usedspace;
+
+ /* Sanity check: */
+ assert(context != (SHA256_CTX*)0);
+
+ /* If no digest buffer is passed, we don't bother doing this: */
+ if (digest != (sha2_byte*)0) {
+ usedspace = (context->bitcount >> 3) % SHA256_BLOCK_LENGTH;
+#if BYTE_ORDER == LITTLE_ENDIAN
+ /* Convert FROM host byte order */
+ REVERSE64(context->bitcount,context->bitcount);
+#endif
+ if (usedspace > 0) {
+ /* Begin padding with a 1 bit: */
+ context->buffer[usedspace++] = 0x80;
+
+ if (usedspace <= SHA256_SHORT_BLOCK_LENGTH) {
+ /* Set-up for the last transform: */
+ MEMSET_BZERO(&context->buffer[usedspace], SHA256_SHORT_BLOCK_LENGTH - usedspace);
+ } else {
+ if (usedspace < SHA256_BLOCK_LENGTH) {
+ MEMSET_BZERO(&context->buffer[usedspace], SHA256_BLOCK_LENGTH - usedspace);
+ }
+ /* Do second-to-last transform: */
+ SHA256_Transform(context, (sha2_word32*)context->buffer);
+
+ /* And set-up for the last transform: */
+ MEMSET_BZERO(context->buffer, SHA256_SHORT_BLOCK_LENGTH);
+ }
+ } else {
+ /* Set-up for the last transform: */
+ MEMSET_BZERO(context->buffer, SHA256_SHORT_BLOCK_LENGTH);
+
+ /* Begin padding with a 1 bit: */
+ *context->buffer = 0x80;
+ }
+ /* Set the bit count: */
+ union {
+ sha2_byte* c;
+ sha2_word64* l;
+ } bitcount;
+ bitcount.c = &context->buffer[SHA256_SHORT_BLOCK_LENGTH];
+ *(bitcount.l) = context->bitcount;
+
+ /* Final transform: */
+ SHA256_Transform(context, (sha2_word32*)context->buffer);
+
+#if BYTE_ORDER == LITTLE_ENDIAN
+ {
+ /* Convert TO host byte order */
+ int j;
+ for (j = 0; j < 8; j++) {
+ REVERSE32(context->state[j],context->state[j]);
+ *d++ = context->state[j];
+ }
+ }
+#else
+ MEMCPY_BCOPY(d, context->state, SHA256_DIGEST_LENGTH);
+#endif
+ }
+
+ /* Clean up state data: */
+ MEMSET_BZERO(context, sizeof(*context));
+ usedspace = 0;
+}
+
+char *SHA256_End(SHA256_CTX* context, char buffer[]) {
+ sha2_byte digest[SHA256_DIGEST_LENGTH], *d = digest;
+ int i;
+
+ /* Sanity check: */
+ assert(context != (SHA256_CTX*)0);
+
+ if (buffer != (char*)0) {
+ SHA256_Final(digest, context);
+
+ for (i = 0; i < SHA256_DIGEST_LENGTH; i++) {
+ *buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4];
+ *buffer++ = sha2_hex_digits[*d & 0x0f];
+ d++;
+ }
+ *buffer = (char)0;
+ } else {
+ MEMSET_BZERO(context, sizeof(*context));
+ }
+ MEMSET_BZERO(digest, SHA256_DIGEST_LENGTH);
+ return buffer;
+}
+
+char* SHA256_Data(const sha2_byte* data, size_t len, char digest[SHA256_DIGEST_STRING_LENGTH]) {
+ SHA256_CTX context;
+
+ SHA256_Init(&context);
+ SHA256_Update(&context, data, len);
+ return SHA256_End(&context, digest);
+}
+
+
+/*** SHA-512: *********************************************************/
+void SHA512_Init(SHA512_CTX* context) {
+ if (context == (SHA512_CTX*)0) {
+ return;
+ }
+ MEMCPY_BCOPY(context->state, sha512_initial_hash_value, SHA512_DIGEST_LENGTH);
+ MEMSET_BZERO(context->buffer, SHA512_BLOCK_LENGTH);
+ context->bitcount[0] = context->bitcount[1] = 0;
+}
+
+#ifdef SHA2_UNROLL_TRANSFORM
+
+/* Unrolled SHA-512 round macros: */
+#if BYTE_ORDER == LITTLE_ENDIAN
+
+#define ROUND512_0_TO_15(a,b,c,d,e,f,g,h) \
+ REVERSE64(*data++, W512[j]); \
+ T1 = (h) + Sigma1_512(e) + Ch((e), (f), (g)) + \
+ K512[j] + W512[j]; \
+ (d) += T1, \
+ (h) = T1 + Sigma0_512(a) + Maj((a), (b), (c)), \
+ j++
+
+
+#else /* BYTE_ORDER == LITTLE_ENDIAN */
+
+#define ROUND512_0_TO_15(a,b,c,d,e,f,g,h) \
+ T1 = (h) + Sigma1_512(e) + Ch((e), (f), (g)) + \
+ K512[j] + (W512[j] = *data++); \
+ (d) += T1; \
+ (h) = T1 + Sigma0_512(a) + Maj((a), (b), (c)); \
+ j++
+
+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
+
+#define ROUND512(a,b,c,d,e,f,g,h) \
+ s0 = W512[(j+1)&0x0f]; \
+ s0 = sigma0_512(s0); \
+ s1 = W512[(j+14)&0x0f]; \
+ s1 = sigma1_512(s1); \
+ T1 = (h) + Sigma1_512(e) + Ch((e), (f), (g)) + K512[j] + \
+ (W512[j&0x0f] += s1 + W512[(j+9)&0x0f] + s0); \
+ (d) += T1; \
+ (h) = T1 + Sigma0_512(a) + Maj((a), (b), (c)); \
+ j++
+
+static void SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) {
+ sha2_word64 a, b, c, d, e, f, g, h, s0, s1;
+ sha2_word64 T1, *W512 = (sha2_word64*)context->buffer;
+ int j;
+
+ /* Initialize registers with the prev. intermediate value */
+ a = context->state[0];
+ b = context->state[1];
+ c = context->state[2];
+ d = context->state[3];
+ e = context->state[4];
+ f = context->state[5];
+ g = context->state[6];
+ h = context->state[7];
+
+ j = 0;
+ do {
+ ROUND512_0_TO_15(a,b,c,d,e,f,g,h);
+ ROUND512_0_TO_15(h,a,b,c,d,e,f,g);
+ ROUND512_0_TO_15(g,h,a,b,c,d,e,f);
+ ROUND512_0_TO_15(f,g,h,a,b,c,d,e);
+ ROUND512_0_TO_15(e,f,g,h,a,b,c,d);
+ ROUND512_0_TO_15(d,e,f,g,h,a,b,c);
+ ROUND512_0_TO_15(c,d,e,f,g,h,a,b);
+ ROUND512_0_TO_15(b,c,d,e,f,g,h,a);
+ } while (j < 16);
+
+ /* Now for the remaining rounds up to 79: */
+ do {
+ ROUND512(a,b,c,d,e,f,g,h);
+ ROUND512(h,a,b,c,d,e,f,g);
+ ROUND512(g,h,a,b,c,d,e,f);
+ ROUND512(f,g,h,a,b,c,d,e);
+ ROUND512(e,f,g,h,a,b,c,d);
+ ROUND512(d,e,f,g,h,a,b,c);
+ ROUND512(c,d,e,f,g,h,a,b);
+ ROUND512(b,c,d,e,f,g,h,a);
+ } while (j < 80);
+
+ /* Compute the current intermediate hash value */
+ context->state[0] += a;
+ context->state[1] += b;
+ context->state[2] += c;
+ context->state[3] += d;
+ context->state[4] += e;
+ context->state[5] += f;
+ context->state[6] += g;
+ context->state[7] += h;
+
+ /* Clean up */
+ a = b = c = d = e = f = g = h = T1 = 0;
+}
+
+#else /* SHA2_UNROLL_TRANSFORM */
+
+static void SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) {
+ sha2_word64 a, b, c, d, e, f, g, h, s0, s1;
+ sha2_word64 T1, T2, *W512 = (sha2_word64*)context->buffer;
+ int j;
+
+ /* Initialize registers with the prev. intermediate value */
+ a = context->state[0];
+ b = context->state[1];
+ c = context->state[2];
+ d = context->state[3];
+ e = context->state[4];
+ f = context->state[5];
+ g = context->state[6];
+ h = context->state[7];
+
+ j = 0;
+ do {
+#if BYTE_ORDER == LITTLE_ENDIAN
+ /* Convert TO host byte order */
+ REVERSE64(*data++, W512[j]);
+ /* Apply the SHA-512 compression function to update a..h */
+ T1 = h + Sigma1_512(e) + Ch(e, f, g) + K512[j] + W512[j];
+#else /* BYTE_ORDER == LITTLE_ENDIAN */
+ /* Apply the SHA-512 compression function to update a..h with copy */
+ T1 = h + Sigma1_512(e) + Ch(e, f, g) + K512[j] + (W512[j] = *data++);
+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
+ T2 = Sigma0_512(a) + Maj(a, b, c);
+ h = g;
+ g = f;
+ f = e;
+ e = d + T1;
+ d = c;
+ c = b;
+ b = a;
+ a = T1 + T2;
+
+ j++;
+ } while (j < 16);
+
+ do {
+ /* Part of the message block expansion: */
+ s0 = W512[(j+1)&0x0f];
+ s0 = sigma0_512(s0);
+ s1 = W512[(j+14)&0x0f];
+ s1 = sigma1_512(s1);
+
+ /* Apply the SHA-512 compression function to update a..h */
+ T1 = h + Sigma1_512(e) + Ch(e, f, g) + K512[j] +
+ (W512[j&0x0f] += s1 + W512[(j+9)&0x0f] + s0);
+ T2 = Sigma0_512(a) + Maj(a, b, c);
+ h = g;
+ g = f;
+ f = e;
+ e = d + T1;
+ d = c;
+ c = b;
+ b = a;
+ a = T1 + T2;
+
+ j++;
+ } while (j < 80);
+
+ /* Compute the current intermediate hash value */
+ context->state[0] += a;
+ context->state[1] += b;
+ context->state[2] += c;
+ context->state[3] += d;
+ context->state[4] += e;
+ context->state[5] += f;
+ context->state[6] += g;
+ context->state[7] += h;
+
+ /* Clean up */
+ a = b = c = d = e = f = g = h = T1 = T2 = 0;
+}
+
+#endif /* SHA2_UNROLL_TRANSFORM */
+
+void SHA512_Update(SHA512_CTX* context, const sha2_byte *data, size_t len) {
+ unsigned int freespace, usedspace;
+
+ if (len == 0) {
+ /* Calling with no data is valid - we do nothing */
+ return;
+ }
+
+ /* Sanity check: */
+ assert(context != (SHA512_CTX*)0 && data != (sha2_byte*)0);
+
+ usedspace = (context->bitcount[0] >> 3) % SHA512_BLOCK_LENGTH;
+ if (usedspace > 0) {
+ /* Calculate how much free space is available in the buffer */
+ freespace = SHA512_BLOCK_LENGTH - usedspace;
+
+ if (len >= freespace) {
+ /* Fill the buffer completely and process it */
+ MEMCPY_BCOPY(&context->buffer[usedspace], data, freespace);
+ ADDINC128(context->bitcount, freespace << 3);
+ len -= freespace;
+ data += freespace;
+ SHA512_Transform(context, (sha2_word64*)context->buffer);
+ } else {
+ /* The buffer is not yet full */
+ MEMCPY_BCOPY(&context->buffer[usedspace], data, len);
+ ADDINC128(context->bitcount, len << 3);
+ /* Clean up: */
+ usedspace = freespace = 0;
+ return;
+ }
+ }
+ while (len >= SHA512_BLOCK_LENGTH) {
+ /* Process as many complete blocks as we can */
+ sha2_byte buffer[SHA512_BLOCK_LENGTH];
+ MEMCPY_BCOPY(buffer, data, SHA512_BLOCK_LENGTH);
+ SHA512_Transform(context, (sha2_word64*)buffer);
+ ADDINC128(context->bitcount, SHA512_BLOCK_LENGTH << 3);
+ len -= SHA512_BLOCK_LENGTH;
+ data += SHA512_BLOCK_LENGTH;
+ }
+ if (len > 0) {
+ /* There's left-overs, so save 'em */
+ MEMCPY_BCOPY(context->buffer, data, len);
+ ADDINC128(context->bitcount, len << 3);
+ }
+ /* Clean up: */
+ usedspace = freespace = 0;
+}
+
+static void SHA512_Last(SHA512_CTX* context) {
+ unsigned int usedspace;
+
+ usedspace = (context->bitcount[0] >> 3) % SHA512_BLOCK_LENGTH;
+#if BYTE_ORDER == LITTLE_ENDIAN
+ /* Convert FROM host byte order */
+ REVERSE64(context->bitcount[0],context->bitcount[0]);
+ REVERSE64(context->bitcount[1],context->bitcount[1]);
+#endif
+ if (usedspace > 0) {
+ /* Begin padding with a 1 bit: */
+ context->buffer[usedspace++] = 0x80;
+
+ if (usedspace <= SHA512_SHORT_BLOCK_LENGTH) {
+ /* Set-up for the last transform: */
+ MEMSET_BZERO(&context->buffer[usedspace], SHA512_SHORT_BLOCK_LENGTH - usedspace);
+ } else {
+ if (usedspace < SHA512_BLOCK_LENGTH) {
+ MEMSET_BZERO(&context->buffer[usedspace], SHA512_BLOCK_LENGTH - usedspace);
+ }
+ /* Do second-to-last transform: */
+ SHA512_Transform(context, (sha2_word64*)context->buffer);
+
+ /* And set-up for the last transform: */
+ MEMSET_BZERO(context->buffer, SHA512_BLOCK_LENGTH - 2);
+ }
+ } else {
+ /* Prepare for final transform: */
+ MEMSET_BZERO(context->buffer, SHA512_SHORT_BLOCK_LENGTH);
+
+ /* Begin padding with a 1 bit: */
+ *context->buffer = 0x80;
+ }
+ /* Store the length of input data (in bits): */
+ union {
+ sha2_byte* c;
+ sha2_word64* l;
+ } bitcount;
+ bitcount.c = &context->buffer[SHA512_SHORT_BLOCK_LENGTH];
+ bitcount.l[0] = context->bitcount[1];
+ bitcount.l[1] = context->bitcount[0];
+
+ /* Final transform: */
+ SHA512_Transform(context, (sha2_word64*)context->buffer);
+}
+
+void SHA512_Final(sha2_byte digest[], SHA512_CTX* context) {
+ sha2_word64 *d = (sha2_word64*)digest;
+
+ /* Sanity check: */
+ assert(context != (SHA512_CTX*)0);
+
+ /* If no digest buffer is passed, we don't bother doing this: */
+ if (digest != (sha2_byte*)0) {
+ SHA512_Last(context);
+
+ /* Save the hash data for output: */
+#if BYTE_ORDER == LITTLE_ENDIAN
+ {
+ /* Convert TO host byte order */
+ int j;
+ for (j = 0; j < 8; j++) {
+ REVERSE64(context->state[j],context->state[j]);
+ *d++ = context->state[j];
+ }
+ }
+#else
+ MEMCPY_BCOPY(d, context->state, SHA512_DIGEST_LENGTH);
+#endif
+ }
+
+ /* Zero out state data */
+ MEMSET_BZERO(context, sizeof(*context));
+}
+
+char *SHA512_End(SHA512_CTX* context, char buffer[]) {
+ sha2_byte digest[SHA512_DIGEST_LENGTH], *d = digest;
+ int i;
+
+ /* Sanity check: */
+ assert(context != (SHA512_CTX*)0);
+
+ if (buffer != (char*)0) {
+ SHA512_Final(digest, context);
+
+ for (i = 0; i < SHA512_DIGEST_LENGTH; i++) {
+ *buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4];
+ *buffer++ = sha2_hex_digits[*d & 0x0f];
+ d++;
+ }
+ *buffer = (char)0;
+ } else {
+ MEMSET_BZERO(context, sizeof(*context));
+ }
+ MEMSET_BZERO(digest, SHA512_DIGEST_LENGTH);
+ return buffer;
+}
+
+char* SHA512_Data(const sha2_byte* data, size_t len, char digest[SHA512_DIGEST_STRING_LENGTH]) {
+ SHA512_CTX context;
+
+ SHA512_Init(&context);
+ SHA512_Update(&context, data, len);
+ return SHA512_End(&context, digest);
+}
+
+
+/*** SHA-384: *********************************************************/
+void SHA384_Init(SHA384_CTX* context) {
+ if (context == (SHA384_CTX*)0) {
+ return;
+ }
+ MEMCPY_BCOPY(context->state, sha384_initial_hash_value, SHA512_DIGEST_LENGTH);
+ MEMSET_BZERO(context->buffer, SHA384_BLOCK_LENGTH);
+ context->bitcount[0] = context->bitcount[1] = 0;
+}
+
+void SHA384_Update(SHA384_CTX* context, const sha2_byte* data, size_t len) {
+ SHA512_Update((SHA512_CTX*)context, data, len);
+}
+
+void SHA384_Final(sha2_byte digest[], SHA384_CTX* context) {
+ sha2_word64 *d = (sha2_word64*)digest;
+
+ /* Sanity check: */
+ assert(context != (SHA384_CTX*)0);
+
+ /* If no digest buffer is passed, we don't bother doing this: */
+ if (digest != (sha2_byte*)0) {
+ SHA512_Last((SHA512_CTX*)context);
+
+ /* Save the hash data for output: */
+#if BYTE_ORDER == LITTLE_ENDIAN
+ {
+ /* Convert TO host byte order */
+ int j;
+ for (j = 0; j < 6; j++) {
+ REVERSE64(context->state[j],context->state[j]);
+ *d++ = context->state[j];
+ }
+ }
+#else
+ MEMCPY_BCOPY(d, context->state, SHA384_DIGEST_LENGTH);
+#endif
+ }
+
+ /* Zero out state data */
+ MEMSET_BZERO(context, sizeof(*context));
+}
+
+char *SHA384_End(SHA384_CTX* context, char buffer[]) {
+ sha2_byte digest[SHA384_DIGEST_LENGTH], *d = digest;
+ int i;
+
+ /* Sanity check: */
+ assert(context != (SHA384_CTX*)0);
+
+ if (buffer != (char*)0) {
+ SHA384_Final(digest, context);
+
+ for (i = 0; i < SHA384_DIGEST_LENGTH; i++) {
+ *buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4];
+ *buffer++ = sha2_hex_digits[*d & 0x0f];
+ d++;
+ }
+ *buffer = (char)0;
+ } else {
+ MEMSET_BZERO(context, sizeof(*context));
+ }
+ MEMSET_BZERO(digest, SHA384_DIGEST_LENGTH);
+ return buffer;
+}
+
+char* SHA384_Data(const sha2_byte* data, size_t len, char digest[SHA384_DIGEST_STRING_LENGTH]) {
+ SHA384_CTX context;
+
+ SHA384_Init(&context);
+ SHA384_Update(&context, data, len);
+ return SHA384_End(&context, digest);
+}
+
diff --git a/apt-pkg/contrib/sha2_internal.h b/apt-pkg/contrib/sha2_internal.h
new file mode 100644
index 000000000..1b82d965d
--- /dev/null
+++ b/apt-pkg/contrib/sha2_internal.h
@@ -0,0 +1,189 @@
+/*
+ * FILE: sha2.h
+ * AUTHOR: Aaron D. Gifford - http://www.aarongifford.com/
+ *
+ * Copyright (c) 2000-2001, Aaron D. Gifford
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holder nor the names of contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id: sha2.h,v 1.1 2001/11/08 00:02:01 adg Exp adg $
+ */
+
+#ifndef __SHA2_H__
+#define __SHA2_H__
+
+/*
+ * Import u_intXX_t size_t type definitions from system headers. You
+ * may need to change this, or define these things yourself in this
+ * file.
+ */
+#include <sys/types.h>
+
+#ifdef SHA2_USE_INTTYPES_H
+
+#include <stddef.h>
+#include <inttypes.h>
+
+#endif /* SHA2_USE_INTTYPES_H */
+
+
+/*** SHA-256/384/512 Various Length Definitions ***********************/
+#define SHA256_BLOCK_LENGTH 64
+#define SHA256_DIGEST_LENGTH 32
+#define SHA256_DIGEST_STRING_LENGTH (SHA256_DIGEST_LENGTH * 2 + 1)
+#define SHA384_BLOCK_LENGTH 128
+#define SHA384_DIGEST_LENGTH 48
+#define SHA384_DIGEST_STRING_LENGTH (SHA384_DIGEST_LENGTH * 2 + 1)
+#define SHA512_BLOCK_LENGTH 128
+#define SHA512_DIGEST_LENGTH 64
+#define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1)
+
+
+/*** SHA-256/384/512 Context Structures *******************************/
+/* NOTE: If your architecture does not define either u_intXX_t types or
+ * uintXX_t (from inttypes.h), you may need to define things by hand
+ * for your system:
+ */
+#if 0
+typedef unsigned char u_int8_t; /* 1-byte (8-bits) */
+typedef unsigned int u_int32_t; /* 4-bytes (32-bits) */
+typedef unsigned long long u_int64_t; /* 8-bytes (64-bits) */
+#endif
+/*
+ * Most BSD systems already define u_intXX_t types, as does Linux.
+ * Some systems, however, like Compaq's Tru64 Unix instead can use
+ * uintXX_t types defined by very recent ANSI C standards and included
+ * in the file:
+ *
+ * #include <inttypes.h>
+ *
+ * If you choose to use <inttypes.h> then please define:
+ *
+ * #define SHA2_USE_INTTYPES_H
+ *
+ * Or on the command line during compile:
+ *
+ * cc -DSHA2_USE_INTTYPES_H ...
+ */
+#ifdef SHA2_USE_INTTYPES_H
+
+typedef struct _SHA256_CTX {
+ uint32_t state[8];
+ uint64_t bitcount;
+ uint8_t buffer[SHA256_BLOCK_LENGTH];
+} SHA256_CTX;
+typedef struct _SHA512_CTX {
+ uint64_t state[8];
+ uint64_t bitcount[2];
+ uint8_t buffer[SHA512_BLOCK_LENGTH];
+} SHA512_CTX;
+
+#else /* SHA2_USE_INTTYPES_H */
+
+typedef struct _SHA256_CTX {
+ u_int32_t state[8];
+ u_int64_t bitcount;
+ u_int8_t buffer[SHA256_BLOCK_LENGTH];
+} SHA256_CTX;
+typedef struct _SHA512_CTX {
+ u_int64_t state[8];
+ u_int64_t bitcount[2];
+ u_int8_t buffer[SHA512_BLOCK_LENGTH];
+} SHA512_CTX;
+
+#endif /* SHA2_USE_INTTYPES_H */
+
+typedef SHA512_CTX SHA384_CTX;
+
+
+/*** SHA-256/384/512 Function Prototypes ******************************/
+#ifndef NOPROTO
+#ifdef SHA2_USE_INTTYPES_H
+
+void SHA256_Init(SHA256_CTX *);
+void SHA256_Update(SHA256_CTX*, const uint8_t*, size_t);
+void SHA256_Final(uint8_t[SHA256_DIGEST_LENGTH], SHA256_CTX*);
+char* SHA256_End(SHA256_CTX*, char[SHA256_DIGEST_STRING_LENGTH]);
+char* SHA256_Data(const uint8_t*, size_t, char[SHA256_DIGEST_STRING_LENGTH]);
+
+void SHA384_Init(SHA384_CTX*);
+void SHA384_Update(SHA384_CTX*, const uint8_t*, size_t);
+void SHA384_Final(uint8_t[SHA384_DIGEST_LENGTH], SHA384_CTX*);
+char* SHA384_End(SHA384_CTX*, char[SHA384_DIGEST_STRING_LENGTH]);
+char* SHA384_Data(const uint8_t*, size_t, char[SHA384_DIGEST_STRING_LENGTH]);
+
+void SHA512_Init(SHA512_CTX*);
+void SHA512_Update(SHA512_CTX*, const uint8_t*, size_t);
+void SHA512_Final(uint8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*);
+char* SHA512_End(SHA512_CTX*, char[SHA512_DIGEST_STRING_LENGTH]);
+char* SHA512_Data(const uint8_t*, size_t, char[SHA512_DIGEST_STRING_LENGTH]);
+
+#else /* SHA2_USE_INTTYPES_H */
+
+void SHA256_Init(SHA256_CTX *);
+void SHA256_Update(SHA256_CTX*, const u_int8_t*, size_t);
+void SHA256_Final(u_int8_t[SHA256_DIGEST_LENGTH], SHA256_CTX*);
+char* SHA256_End(SHA256_CTX*, char[SHA256_DIGEST_STRING_LENGTH]);
+char* SHA256_Data(const u_int8_t*, size_t, char[SHA256_DIGEST_STRING_LENGTH]);
+
+void SHA384_Init(SHA384_CTX*);
+void SHA384_Update(SHA384_CTX*, const u_int8_t*, size_t);
+void SHA384_Final(u_int8_t[SHA384_DIGEST_LENGTH], SHA384_CTX*);
+char* SHA384_End(SHA384_CTX*, char[SHA384_DIGEST_STRING_LENGTH]);
+char* SHA384_Data(const u_int8_t*, size_t, char[SHA384_DIGEST_STRING_LENGTH]);
+
+void SHA512_Init(SHA512_CTX*);
+void SHA512_Update(SHA512_CTX*, const u_int8_t*, size_t);
+void SHA512_Final(u_int8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*);
+char* SHA512_End(SHA512_CTX*, char[SHA512_DIGEST_STRING_LENGTH]);
+char* SHA512_Data(const u_int8_t*, size_t, char[SHA512_DIGEST_STRING_LENGTH]);
+
+#endif /* SHA2_USE_INTTYPES_H */
+
+#else /* NOPROTO */
+
+void SHA256_Init();
+void SHA256_Update();
+void SHA256_Final();
+char* SHA256_End();
+char* SHA256_Data();
+
+void SHA384_Init();
+void SHA384_Update();
+void SHA384_Final();
+char* SHA384_End();
+char* SHA384_Data();
+
+void SHA512_Init();
+void SHA512_Update();
+void SHA512_Final();
+char* SHA512_End();
+char* SHA512_Data();
+
+#endif /* NOPROTO */
+
+#endif /* __SHA2_H__ */
+
diff --git a/apt-pkg/contrib/sptr.h b/apt-pkg/contrib/sptr.h
new file mode 100644
index 000000000..ee4a65d60
--- /dev/null
+++ b/apt-pkg/contrib/sptr.h
@@ -0,0 +1,75 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: sptr.h,v 1.3 2001/03/11 07:22:19 jgg Exp $
+/* ######################################################################
+
+ Trivial non-ref counted 'smart pointer'
+
+ This is really only good to eliminate
+ {
+ delete Foo;
+ return;
+ }
+
+ Blocks from functions.
+
+ I think G++ has become good enough that doing this won't have much
+ code size implications.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef SMART_POINTER_H
+#define SMART_POINTER_H
+#include <apt-pkg/macros.h>
+
+template <class T>
+class APT_DEPRECATED_MSG("use std::unique_ptr instead") SPtr
+{
+ public:
+ T *Ptr;
+
+ inline T *operator ->() {return Ptr;};
+ inline T &operator *() {return *Ptr;};
+ inline operator T *() {return Ptr;};
+ inline operator void *() {return Ptr;};
+ inline T *UnGuard() {T *Tmp = Ptr; Ptr = 0; return Tmp;};
+ inline void operator =(T *N) {Ptr = N;};
+ inline bool operator ==(T *lhs) const {return Ptr == lhs;};
+ inline bool operator !=(T *lhs) const {return Ptr != lhs;};
+ inline T*Get() {return Ptr;};
+
+ inline SPtr(T *Ptr) : Ptr(Ptr) {};
+ inline SPtr() : Ptr(0) {};
+ inline ~SPtr() {delete Ptr;};
+};
+
+template <class T>
+class APT_DEPRECATED_MSG("use std::unique_ptr instead") SPtrArray
+{
+ public:
+ T *Ptr;
+
+ //inline T &operator *() {return *Ptr;};
+ inline operator T *() {return Ptr;};
+ inline operator void *() {return Ptr;};
+ inline T *UnGuard() {T *Tmp = Ptr; Ptr = 0; return Tmp;};
+ //inline T &operator [](signed long I) {return Ptr[I];};
+ inline void operator =(T *N) {Ptr = N;};
+ inline bool operator ==(T *lhs) const {return Ptr == lhs;};
+ inline bool operator !=(T *lhs) const {return Ptr != lhs;};
+ inline T *Get() {return Ptr;};
+
+ inline SPtrArray(T *Ptr) : Ptr(Ptr) {};
+ inline SPtrArray() : Ptr(0) {};
+#if __GNUC__ >= 4
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wunsafe-loop-optimizations"
+ // gcc warns about this, but we can do nothing here…
+#endif
+ inline ~SPtrArray() {delete [] Ptr;};
+#if __GNUC__ >= 4
+ #pragma GCC diagnostic pop
+#endif
+};
+
+#endif
diff --git a/apt-pkg/contrib/srvrec.cc b/apt-pkg/contrib/srvrec.cc
new file mode 100644
index 000000000..327e59937
--- /dev/null
+++ b/apt-pkg/contrib/srvrec.cc
@@ -0,0 +1,196 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ SRV record support
+
+ ##################################################################### */
+ /*}}}*/
+#include <config.h>
+
+#include <netdb.h>
+
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+#include <time.h>
+
+#include <algorithm>
+#include <tuple>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/strutl.h>
+
+
+#include "srvrec.h"
+
+
+bool SrvRec::operator==(SrvRec const &other) const
+{
+ return (std::tie(target, priority, weight, port) ==
+ std::tie(other.target, other.priority, other.weight, other.port));
+}
+
+bool GetSrvRecords(std::string host, int port, std::vector<SrvRec> &Result)
+{
+ std::string target;
+ int res;
+ struct servent s_ent_buf;
+ struct servent *s_ent = nullptr;
+ std::vector<char> buf(1024);
+
+ res = getservbyport_r(htons(port), "tcp", &s_ent_buf, buf.data(), buf.size(), &s_ent);
+ if (res != 0 || s_ent == nullptr)
+ return false;
+
+ strprintf(target, "_%s._tcp.%s", s_ent->s_name, host.c_str());
+ return GetSrvRecords(target, Result);
+}
+
+bool GetSrvRecords(std::string name, std::vector<SrvRec> &Result)
+{
+ unsigned char answer[PACKETSZ];
+ int answer_len, compressed_name_len;
+ int answer_count;
+
+ if (res_init() != 0)
+ return _error->Errno("res_init", "Failed to init resolver");
+
+ answer_len = res_query(name.c_str(), C_IN, T_SRV, answer, sizeof(answer));
+ if (answer_len == -1)
+ return false;
+ if (answer_len < (int)sizeof(HEADER))
+ return _error->Warning("Not enough data from res_query (%i)", answer_len);
+
+ // check the header
+ HEADER *header = (HEADER*)answer;
+ if (header->rcode != NOERROR)
+ return _error->Warning("res_query returned rcode %i", header->rcode);
+ answer_count = ntohs(header->ancount);
+ if (answer_count <= 0)
+ return _error->Warning("res_query returned no answers (%i) ", answer_count);
+
+ // skip the header
+ compressed_name_len = dn_skipname(answer+sizeof(HEADER), answer+answer_len);
+ if(compressed_name_len < 0)
+ return _error->Warning("dn_skipname failed %i", compressed_name_len);
+
+ // pt points to the first answer record, go over all of them now
+ unsigned char *pt = answer+sizeof(HEADER)+compressed_name_len+QFIXEDSZ;
+ while ((int)Result.size() < answer_count && pt < answer+answer_len)
+ {
+ u_int16_t type, klass, priority, weight, port, dlen;
+ char buf[MAXDNAME];
+
+ compressed_name_len = dn_skipname(pt, answer+answer_len);
+ if (compressed_name_len < 0)
+ return _error->Warning("dn_skipname failed (2): %i",
+ compressed_name_len);
+ pt += compressed_name_len;
+ if (((answer+answer_len) - pt) < 16)
+ return _error->Warning("packet too short");
+
+ // extract the data out of the result buffer
+ #define extract_u16(target, p) target = *p++ << 8; target |= *p++;
+
+ extract_u16(type, pt);
+ if(type != T_SRV)
+ return _error->Warning("Unexpected type excepted %x != %x",
+ T_SRV, type);
+ extract_u16(klass, pt);
+ if(klass != C_IN)
+ return _error->Warning("Unexpected class excepted %x != %x",
+ C_IN, klass);
+ pt += 4; // ttl
+ extract_u16(dlen, pt);
+ extract_u16(priority, pt);
+ extract_u16(weight, pt);
+ extract_u16(port, pt);
+
+ #undef extract_u16
+
+ compressed_name_len = dn_expand(answer, answer+answer_len, pt, buf, sizeof(buf));
+ if(compressed_name_len < 0)
+ return _error->Warning("dn_expand failed %i", compressed_name_len);
+ pt += compressed_name_len;
+
+ // add it to our class
+ Result.emplace_back(buf, priority, weight, port);
+ }
+
+ // implement load balancing as specified in RFC-2782
+
+ // sort them by priority
+ std::stable_sort(Result.begin(), Result.end());
+
+ for(std::vector<SrvRec>::iterator I = Result.begin();
+ I != Result.end(); ++I)
+ {
+ if (_config->FindB("Debug::Acquire::SrvRecs", false) == true)
+ {
+ std::cerr << "SrvRecs: got " << I->target
+ << " prio: " << I->priority
+ << " weight: " << I->weight
+ << std::endl;
+ }
+ }
+
+ return true;
+}
+
+SrvRec PopFromSrvRecs(std::vector<SrvRec> &Recs)
+{
+ // FIXME: instead of the simplistic shuffle below use the algorithm
+ // described in rfc2782 (with weights)
+ // and figure out how the weights need to be adjusted if
+ // a host refuses connections
+
+#if 0 // all code below is only needed for the weight adjusted selection
+ // assign random number ranges
+ int prev_weight = 0;
+ int prev_priority = 0;
+ for(std::vector<SrvRec>::iterator I = Result.begin();
+ I != Result.end(); ++I)
+ {
+ if(prev_priority != I->priority)
+ prev_weight = 0;
+ I->random_number_range_start = prev_weight;
+ I->random_number_range_end = prev_weight + I->weight;
+ prev_weight = I->random_number_range_end;
+ prev_priority = I->priority;
+
+ if (_config->FindB("Debug::Acquire::SrvRecs", false) == true)
+ std::cerr << "SrvRecs: got " << I->target
+ << " prio: " << I->priority
+ << " weight: " << I->weight
+ << std::endl;
+ }
+
+ // go over the code in reverse order and note the max random range
+ int max = 0;
+ prev_priority = 0;
+ for(std::vector<SrvRec>::iterator I = Result.end();
+ I != Result.begin(); --I)
+ {
+ if(prev_priority != I->priority)
+ max = I->random_number_range_end;
+ I->random_number_range_max = max;
+ }
+#endif
+
+ // shuffle in a very simplistic way for now (equal weights)
+ std::vector<SrvRec>::iterator I = Recs.begin();
+ std::vector<SrvRec>::iterator const J = std::find_if(Recs.begin(), Recs.end(),
+ [&I](SrvRec const &J) { return I->priority != J.priority; });
+
+ // clock seems random enough.
+ I += std::max(static_cast<clock_t>(0), clock()) % std::distance(I, J);
+ SrvRec const selected = std::move(*I);
+ Recs.erase(I);
+
+ if (_config->FindB("Debug::Acquire::SrvRecs", false) == true)
+ std::cerr << "PopFromSrvRecs: selecting " << selected.target << std::endl;
+
+ return selected;
+}
diff --git a/apt-pkg/contrib/srvrec.h b/apt-pkg/contrib/srvrec.h
new file mode 100644
index 000000000..01b810281
--- /dev/null
+++ b/apt-pkg/contrib/srvrec.h
@@ -0,0 +1,54 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ SRV record support
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef SRVREC_H
+#define SRVREC_H
+
+#include <arpa/nameser.h>
+#include <vector>
+#include <string>
+
+class SrvRec
+{
+ public:
+ std::string target;
+ u_int16_t priority;
+ u_int16_t weight;
+ u_int16_t port;
+
+ // each server is assigned a interval [start, end] in the space of [0, max]
+ int random_number_range_start;
+ int random_number_range_end;
+ int random_number_range_max;
+
+ bool operator<(SrvRec const &other) const {
+ return this->priority < other.priority;
+ }
+ bool operator==(SrvRec const &other) const;
+
+ SrvRec(std::string const Target, u_int16_t const Priority,
+ u_int16_t const Weight, u_int16_t const Port) :
+ target(Target), priority(Priority), weight(Weight), port(Port),
+ random_number_range_start(0), random_number_range_end(0),
+ random_number_range_max(0) {}
+};
+
+/** \brief Get SRV records from host/port (builds the query string internally)
+ */
+bool GetSrvRecords(std::string name, std::vector<SrvRec> &Result);
+
+/** \brief Get SRV records for query string like: _http._tcp.example.com
+ */
+bool GetSrvRecords(std::string host, int port, std::vector<SrvRec> &Result);
+
+/** \brief Pop a single SRV record from the vector of SrvRec taking
+ * priority and weight into account
+ */
+SrvRec PopFromSrvRecs(std::vector<SrvRec> &Recs);
+
+#endif
diff --git a/apt-pkg/contrib/string_view.h b/apt-pkg/contrib/string_view.h
new file mode 100644
index 000000000..c504edd27
--- /dev/null
+++ b/apt-pkg/contrib/string_view.h
@@ -0,0 +1,132 @@
+/*
+ * Basic implementation of string_view
+ *
+ * (C) 2015 Julian Andres Klode <jak@debian.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#if !defined(APT_STRINGVIEW_H) && defined(APT_PKG_EXPOSE_STRING_VIEW)
+#define APT_STRINGVIEW_H
+#include <string.h>
+#include <string>
+#include <apt-pkg/macros.h>
+
+namespace APT {
+
+/**
+ * \brief Simple subset of std::string_view from C++17
+ *
+ * This is an internal implementation of the subset of std::string_view
+ * used by APT. It is not meant to be used in programs, only inside the
+ * library for performance critical paths.
+ */
+class APT_HIDDEN StringView {
+ const char *data_;
+ size_t size_;
+
+public:
+ static constexpr size_t npos = static_cast<size_t>(-1);
+ static_assert(APT::StringView::npos == std::string::npos, "npos values are different");
+
+ /* Constructors */
+ constexpr StringView() : data_(""), size_(0) {}
+ constexpr StringView(const char *data, size_t size) : data_(data), size_(size) {}
+
+ StringView(const char *data) : data_(data), size_(strlen(data)) {}
+ StringView(std::string const & str): data_(str.data()), size_(str.size()) {}
+
+
+ /* Viewers */
+ constexpr StringView substr(size_t pos, size_t n = npos) const {
+ return StringView(data_ + pos, n > (size_ - pos) ? (size_ - pos) : n);
+ }
+
+ size_t find(int c, size_t pos) const {
+ if (pos == 0)
+ return find(c);
+ size_t const found = substr(pos).find(c);
+ if (found == npos)
+ return npos;
+ return pos + found;
+ }
+ size_t find(int c) const {
+ const char *found = static_cast<const char*>(memchr(data_, c, size_));
+
+ if (found == NULL)
+ return npos;
+
+ return found - data_;
+ }
+
+ size_t rfind(int c, size_t pos) const {
+ if (pos == npos)
+ return rfind(c);
+ return APT::StringView(data_, pos).rfind(c);
+ }
+ size_t rfind(int c) const {
+ const char *found = static_cast<const char*>(memrchr(data_, c, size_));
+
+ if (found == NULL)
+ return npos;
+
+ return found - data_;
+ }
+
+ /* Conversions */
+ std::string to_string() const {
+ return std::string(data_, size_);
+ }
+
+ /* Comparisons */
+ int compare(size_t pos, size_t n, StringView other) const {
+ return substr(pos, n).compare(other);
+ }
+
+ int compare(StringView other) const {
+ int res;
+
+ res = memcmp(data_, other.data_, std::min(size_, other.size_));
+ if (res != 0)
+ return res;
+ if (size_ == other.size_)
+ return res;
+
+ return (size_ > other.size_) ? 1 : -1;
+ }
+
+ /* Optimization: If size not equal, string cannot be equal */
+ bool operator ==(StringView other) const { return size_ == other.size_ && compare(other) == 0; }
+ bool operator !=(StringView other) const { return !(*this == other); }
+
+ /* Accessors */
+ constexpr bool empty() const { return size_ == 0; }
+ constexpr const char* data() const { return data_; }
+ constexpr const char* begin() const { return data_; }
+ constexpr const char* end() const { return data_ + size_; }
+ constexpr char operator [](size_t i) const { return data_[i]; }
+ constexpr size_t size() const { return size_; }
+ constexpr size_t length() const { return size_; }
+};
+
+/**
+ * \brief Faster comparison for string views (compare size before data)
+ *
+ * Still stable, but faster than the normal ordering. */
+static inline int StringViewCompareFast(StringView a, StringView b) {
+ if (a.size() != b.size())
+ return a.size() - b.size();
+
+ return memcmp(a.data(), b.data(), a.size());
+}
+
+
+}
+
+inline bool operator ==(const char *other, APT::StringView that);
+inline bool operator ==(const char *other, APT::StringView that) { return that.operator==(other); }
+
+#endif
diff --git a/apt-pkg/contrib/strutl.cc b/apt-pkg/contrib/strutl.cc
new file mode 100644
index 000000000..88113f7a4
--- /dev/null
+++ b/apt-pkg/contrib/strutl.cc
@@ -0,0 +1,1795 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: strutl.cc,v 1.48 2003/07/18 14:15:11 mdz Exp $
+/* ######################################################################
+
+ String Util - Some useful string functions.
+
+ These have been collected from here and there to do all sorts of useful
+ things to strings. They are useful in file parsers, URI handlers and
+ especially in APT methods.
+
+ This source is placed in the Public Domain, do with it what you will
+ It was originally written by Jason Gunthorpe <jgg@gpu.srv.ualberta.ca>
+
+ ##################################################################### */
+ /*}}}*/
+// Includes /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/error.h>
+
+#include <array>
+#include <algorithm>
+#include <iomanip>
+#include <locale>
+#include <sstream>
+#include <string>
+#include <sstream>
+#include <vector>
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <time.h>
+#include <ctype.h>
+#include <string.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <regex.h>
+#include <errno.h>
+#include <stdarg.h>
+#include <iconv.h>
+
+#include <apti18n.h>
+ /*}}}*/
+using namespace std;
+
+// Strip - Remove white space from the front and back of a string /*{{{*/
+// ---------------------------------------------------------------------
+namespace APT {
+ namespace String {
+std::string Strip(const std::string &str)
+{
+ // ensure we have at least one character
+ if (str.empty() == true)
+ return str;
+
+ char const * const s = str.c_str();
+ size_t start = 0;
+ for (; isspace(s[start]) != 0; ++start)
+ ; // find the first not-space
+
+ // string contains only whitespaces
+ if (s[start] == '\0')
+ return "";
+
+ size_t end = str.length() - 1;
+ for (; isspace(s[end]) != 0; --end)
+ ; // find the last not-space
+
+ return str.substr(start, end - start + 1);
+}
+
+bool Endswith(const std::string &s, const std::string &end)
+{
+ if (end.size() > s.size())
+ return false;
+ return (s.compare(s.size() - end.size(), end.size(), end) == 0);
+}
+
+bool Startswith(const std::string &s, const std::string &start)
+{
+ if (start.size() > s.size())
+ return false;
+ return (s.compare(0, start.size(), start) == 0);
+}
+
+std::string Join(std::vector<std::string> list, const std::string &sep)
+{
+ std::ostringstream oss;
+ for (auto it = list.begin(); it != list.end(); it++)
+ {
+ if (it != list.begin()) oss << sep;
+ oss << *it;
+ }
+ return oss.str();
+}
+
+}
+}
+ /*}}}*/
+// UTF8ToCodeset - Convert some UTF-8 string for some codeset /*{{{*/
+// ---------------------------------------------------------------------
+/* This is handy to use before display some information for enduser */
+bool UTF8ToCodeset(const char *codeset, const string &orig, string *dest)
+{
+ iconv_t cd;
+ const char *inbuf;
+ char *inptr, *outbuf;
+ size_t insize, bufsize;
+ dest->clear();
+
+ cd = iconv_open(codeset, "UTF-8");
+ if (cd == (iconv_t)(-1)) {
+ // Something went wrong
+ if (errno == EINVAL)
+ _error->Error("conversion from 'UTF-8' to '%s' not available",
+ codeset);
+ else
+ perror("iconv_open");
+
+ return false;
+ }
+
+ insize = bufsize = orig.size();
+ inbuf = orig.data();
+ inptr = (char *)inbuf;
+ outbuf = new char[bufsize];
+ size_t lastError = -1;
+
+ while (insize != 0)
+ {
+ char *outptr = outbuf;
+ size_t outsize = bufsize;
+ size_t const err = iconv(cd, &inptr, &insize, &outptr, &outsize);
+ dest->append(outbuf, outptr - outbuf);
+ if (err == (size_t)(-1))
+ {
+ switch (errno)
+ {
+ case EILSEQ:
+ insize--;
+ inptr++;
+ // replace a series of unknown multibytes with a single "?"
+ if (lastError != insize) {
+ lastError = insize - 1;
+ dest->append("?");
+ }
+ break;
+ case EINVAL:
+ insize = 0;
+ break;
+ case E2BIG:
+ if (outptr == outbuf)
+ {
+ bufsize *= 2;
+ delete[] outbuf;
+ outbuf = new char[bufsize];
+ }
+ break;
+ }
+ }
+ }
+
+ delete[] outbuf;
+
+ iconv_close(cd);
+
+ return true;
+}
+ /*}}}*/
+// strstrip - Remove white space from the front and back of a string /*{{{*/
+// ---------------------------------------------------------------------
+/* This is handy to use when parsing a file. It also removes \n's left
+ over from fgets and company */
+char *_strstrip(char *String)
+{
+ for (;*String != 0 && (*String == ' ' || *String == '\t'); String++);
+
+ if (*String == 0)
+ return String;
+ return _strrstrip(String);
+}
+ /*}}}*/
+// strrstrip - Remove white space from the back of a string /*{{{*/
+// ---------------------------------------------------------------------
+char *_strrstrip(char *String)
+{
+ char *End = String + strlen(String) - 1;
+ for (;End != String - 1 && (*End == ' ' || *End == '\t' || *End == '\n' ||
+ *End == '\r'); End--);
+ End++;
+ *End = 0;
+ return String;
+}
+ /*}}}*/
+// strtabexpand - Converts tabs into 8 spaces /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+char *_strtabexpand(char *String,size_t Len)
+{
+ for (char *I = String; I != I + Len && *I != 0; I++)
+ {
+ if (*I != '\t')
+ continue;
+ if (I + 8 > String + Len)
+ {
+ *I = 0;
+ return String;
+ }
+
+ /* Assume the start of the string is 0 and find the next 8 char
+ division */
+ int Len;
+ if (String == I)
+ Len = 1;
+ else
+ Len = 8 - ((String - I) % 8);
+ Len -= 2;
+ if (Len <= 0)
+ {
+ *I = ' ';
+ continue;
+ }
+
+ memmove(I + Len,I + 1,strlen(I) + 1);
+ for (char *J = I; J + Len != I; *I = ' ', I++);
+ }
+ return String;
+}
+ /*}}}*/
+// ParseQuoteWord - Parse a single word out of a string /*{{{*/
+// ---------------------------------------------------------------------
+/* This grabs a single word, converts any % escaped characters to their
+ proper values and advances the pointer. Double quotes are understood
+ and striped out as well. This is for URI/URL parsing. It also can
+ understand [] brackets.*/
+bool ParseQuoteWord(const char *&String,string &Res)
+{
+ // Skip leading whitespace
+ const char *C = String;
+ for (;*C != 0 && *C == ' '; C++);
+ if (*C == 0)
+ return false;
+
+ // Jump to the next word
+ for (;*C != 0 && isspace(*C) == 0; C++)
+ {
+ if (*C == '"')
+ {
+ C = strchr(C + 1, '"');
+ if (C == NULL)
+ return false;
+ }
+ if (*C == '[')
+ {
+ C = strchr(C + 1, ']');
+ if (C == NULL)
+ return false;
+ }
+ }
+
+ // Now de-quote characters
+ char Buffer[1024];
+ char Tmp[3];
+ const char *Start = String;
+ char *I;
+ for (I = Buffer; I < Buffer + sizeof(Buffer) && Start != C; I++)
+ {
+ if (*Start == '%' && Start + 2 < C &&
+ isxdigit(Start[1]) && isxdigit(Start[2]))
+ {
+ Tmp[0] = Start[1];
+ Tmp[1] = Start[2];
+ Tmp[2] = 0;
+ *I = (char)strtol(Tmp,0,16);
+ Start += 3;
+ continue;
+ }
+ if (*Start != '"')
+ *I = *Start;
+ else
+ I--;
+ Start++;
+ }
+ *I = 0;
+ Res = Buffer;
+
+ // Skip ending white space
+ for (;*C != 0 && isspace(*C) != 0; C++);
+ String = C;
+ return true;
+}
+ /*}}}*/
+// ParseCWord - Parses a string like a C "" expression /*{{{*/
+// ---------------------------------------------------------------------
+/* This expects a series of space separated strings enclosed in ""'s.
+ It concatenates the ""'s into a single string. */
+bool ParseCWord(const char *&String,string &Res)
+{
+ // Skip leading whitespace
+ const char *C = String;
+ for (;*C != 0 && *C == ' '; C++);
+ if (*C == 0)
+ return false;
+
+ char Buffer[1024];
+ char *Buf = Buffer;
+ if (strlen(String) >= sizeof(Buffer))
+ return false;
+
+ for (; *C != 0; C++)
+ {
+ if (*C == '"')
+ {
+ for (C++; *C != 0 && *C != '"'; C++)
+ *Buf++ = *C;
+
+ if (*C == 0)
+ return false;
+
+ continue;
+ }
+
+ if (C != String && isspace(*C) != 0 && isspace(C[-1]) != 0)
+ continue;
+ if (isspace(*C) == 0)
+ return false;
+ *Buf++ = ' ';
+ }
+ *Buf = 0;
+ Res = Buffer;
+ String = C;
+ return true;
+}
+ /*}}}*/
+// QuoteString - Convert a string into quoted from /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+string QuoteString(const string &Str, const char *Bad)
+{
+ std::stringstream Res;
+ for (string::const_iterator I = Str.begin(); I != Str.end(); ++I)
+ {
+ if (strchr(Bad,*I) != 0 || isprint(*I) == 0 ||
+ *I == 0x25 || // percent '%' char
+ *I <= 0x20 || *I >= 0x7F) // control chars
+ {
+ ioprintf(Res, "%%%02hhx", *I);
+ }
+ else
+ Res << *I;
+ }
+ return Res.str();
+}
+ /*}}}*/
+// DeQuoteString - Convert a string from quoted from /*{{{*/
+// ---------------------------------------------------------------------
+/* This undoes QuoteString */
+string DeQuoteString(const string &Str)
+{
+ return DeQuoteString(Str.begin(),Str.end());
+}
+string DeQuoteString(string::const_iterator const &begin,
+ string::const_iterator const &end)
+{
+ string Res;
+ for (string::const_iterator I = begin; I != end; ++I)
+ {
+ if (*I == '%' && I + 2 < end &&
+ isxdigit(I[1]) && isxdigit(I[2]))
+ {
+ char Tmp[3];
+ Tmp[0] = I[1];
+ Tmp[1] = I[2];
+ Tmp[2] = 0;
+ Res += (char)strtol(Tmp,0,16);
+ I += 2;
+ continue;
+ }
+ else
+ Res += *I;
+ }
+ return Res;
+}
+
+ /*}}}*/
+// SizeToStr - Convert a long into a human readable size /*{{{*/
+// ---------------------------------------------------------------------
+/* A max of 4 digits are shown before conversion to the next highest unit.
+ The max length of the string will be 5 chars unless the size is > 10
+ YottaBytes (E24) */
+string SizeToStr(double Size)
+{
+ double ASize;
+ if (Size >= 0)
+ ASize = Size;
+ else
+ ASize = -1*Size;
+
+ /* bytes, KiloBytes, MegaBytes, GigaBytes, TeraBytes, PetaBytes,
+ ExaBytes, ZettaBytes, YottaBytes */
+ char Ext[] = {'\0','k','M','G','T','P','E','Z','Y'};
+ int I = 0;
+ while (I <= 8)
+ {
+ if (ASize < 100 && I != 0)
+ {
+ std::string S;
+ strprintf(S, "%'.1f %c", ASize, Ext[I]);
+ return S;
+ }
+
+ if (ASize < 10000)
+ {
+ std::string S;
+ strprintf(S, "%'.0f %c", ASize, Ext[I]);
+ return S;
+ }
+ ASize /= 1000.0;
+ I++;
+ }
+ return "";
+}
+ /*}}}*/
+// TimeToStr - Convert the time into a string /*{{{*/
+// ---------------------------------------------------------------------
+/* Converts a number of seconds to a hms format */
+string TimeToStr(unsigned long Sec)
+{
+ std::string S;
+ if (Sec > 60*60*24)
+ {
+ //TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+ strprintf(S,_("%lid %lih %limin %lis"),Sec/60/60/24,(Sec/60/60) % 24,(Sec/60) % 60,Sec % 60);
+ }
+ else if (Sec > 60*60)
+ {
+ //TRANSLATOR: h means hours, min means minutes, s means seconds
+ strprintf(S,_("%lih %limin %lis"),Sec/60/60,(Sec/60) % 60,Sec % 60);
+ }
+ else if (Sec > 60)
+ {
+ //TRANSLATOR: min means minutes, s means seconds
+ strprintf(S,_("%limin %lis"),Sec/60,Sec % 60);
+ }
+ else
+ {
+ //TRANSLATOR: s means seconds
+ strprintf(S,_("%lis"),Sec);
+ }
+ return S;
+}
+ /*}}}*/
+// SubstVar - Substitute a string for another string /*{{{*/
+// ---------------------------------------------------------------------
+/* This replaces all occurrences of Subst with Contents in Str. */
+string SubstVar(const string &Str,const string &Subst,const string &Contents)
+{
+ if (Subst.empty() == true)
+ return Str;
+
+ string::size_type Pos = 0;
+ string::size_type OldPos = 0;
+ string Temp;
+
+ while (OldPos < Str.length() &&
+ (Pos = Str.find(Subst,OldPos)) != string::npos)
+ {
+ if (OldPos != Pos)
+ Temp.append(Str, OldPos, Pos - OldPos);
+ if (Contents.empty() == false)
+ Temp.append(Contents);
+ OldPos = Pos + Subst.length();
+ }
+
+ if (OldPos == 0)
+ return Str;
+
+ if (OldPos >= Str.length())
+ return Temp;
+
+ Temp.append(Str, OldPos, string::npos);
+ return Temp;
+}
+string SubstVar(string Str,const struct SubstVar *Vars)
+{
+ for (; Vars->Subst != 0; Vars++)
+ Str = SubstVar(Str,Vars->Subst,*Vars->Contents);
+ return Str;
+}
+ /*}}}*/
+// OutputInDepth - return a string with separator multiplied with depth /*{{{*/
+// ---------------------------------------------------------------------
+/* Returns a string with the supplied separator depth + 1 times in it */
+std::string OutputInDepth(const unsigned long Depth, const char* Separator)
+{
+ std::string output = "";
+ for(unsigned long d=Depth+1; d > 0; d--)
+ output.append(Separator);
+ return output;
+}
+ /*}}}*/
+// URItoFileName - Convert the uri into a unique file name /*{{{*/
+// ---------------------------------------------------------------------
+/* This converts a URI into a safe filename. It quotes all unsafe characters
+ and converts / to _ and removes the scheme identifier. The resulting
+ file name should be unique and never occur again for a different file */
+string URItoFileName(const string &URI)
+{
+ // Nuke 'sensitive' items
+ ::URI U(URI);
+ U.User.clear();
+ U.Password.clear();
+ U.Access.clear();
+
+ // "\x00-\x20{}|\\\\^\\[\\]<>\"\x7F-\xFF";
+ string NewURI = QuoteString(U,"\\|{}[]<>\"^~_=!@#$%^&*");
+ replace(NewURI.begin(),NewURI.end(),'/','_');
+ return NewURI;
+}
+ /*}}}*/
+// Base64Encode - Base64 Encoding routine for short strings /*{{{*/
+// ---------------------------------------------------------------------
+/* This routine performs a base64 transformation on a string. It was ripped
+ from wget and then patched and bug fixed.
+
+ This spec can be found in rfc2045 */
+string Base64Encode(const string &S)
+{
+ // Conversion table.
+ static char tbl[64] = {'A','B','C','D','E','F','G','H',
+ 'I','J','K','L','M','N','O','P',
+ 'Q','R','S','T','U','V','W','X',
+ 'Y','Z','a','b','c','d','e','f',
+ 'g','h','i','j','k','l','m','n',
+ 'o','p','q','r','s','t','u','v',
+ 'w','x','y','z','0','1','2','3',
+ '4','5','6','7','8','9','+','/'};
+
+ // Pre-allocate some space
+ string Final;
+ Final.reserve((4*S.length() + 2)/3 + 2);
+
+ /* Transform the 3x8 bits to 4x6 bits, as required by
+ base64. */
+ for (string::const_iterator I = S.begin(); I < S.end(); I += 3)
+ {
+ char Bits[3] = {0,0,0};
+ Bits[0] = I[0];
+ if (I + 1 < S.end())
+ Bits[1] = I[1];
+ if (I + 2 < S.end())
+ Bits[2] = I[2];
+
+ Final += tbl[Bits[0] >> 2];
+ Final += tbl[((Bits[0] & 3) << 4) + (Bits[1] >> 4)];
+
+ if (I + 1 >= S.end())
+ break;
+
+ Final += tbl[((Bits[1] & 0xf) << 2) + (Bits[2] >> 6)];
+
+ if (I + 2 >= S.end())
+ break;
+
+ Final += tbl[Bits[2] & 0x3f];
+ }
+
+ /* Apply the padding elements, this tells how many bytes the remote
+ end should discard */
+ if (S.length() % 3 == 2)
+ Final += '=';
+ if (S.length() % 3 == 1)
+ Final += "==";
+
+ return Final;
+}
+ /*}}}*/
+// stringcmp - Arbitrary string compare /*{{{*/
+// ---------------------------------------------------------------------
+/* This safely compares two non-null terminated strings of arbitrary
+ length */
+int stringcmp(const char *A,const char *AEnd,const char *B,const char *BEnd)
+{
+ for (; A != AEnd && B != BEnd; A++, B++)
+ if (*A != *B)
+ break;
+
+ if (A == AEnd && B == BEnd)
+ return 0;
+ if (A == AEnd)
+ return 1;
+ if (B == BEnd)
+ return -1;
+ if (*A < *B)
+ return -1;
+ return 1;
+}
+
+#if __GNUC__ >= 3
+int stringcmp(string::const_iterator A,string::const_iterator AEnd,
+ const char *B,const char *BEnd)
+{
+ for (; A != AEnd && B != BEnd; A++, B++)
+ if (*A != *B)
+ break;
+
+ if (A == AEnd && B == BEnd)
+ return 0;
+ if (A == AEnd)
+ return 1;
+ if (B == BEnd)
+ return -1;
+ if (*A < *B)
+ return -1;
+ return 1;
+}
+int stringcmp(string::const_iterator A,string::const_iterator AEnd,
+ string::const_iterator B,string::const_iterator BEnd)
+{
+ for (; A != AEnd && B != BEnd; A++, B++)
+ if (*A != *B)
+ break;
+
+ if (A == AEnd && B == BEnd)
+ return 0;
+ if (A == AEnd)
+ return 1;
+ if (B == BEnd)
+ return -1;
+ if (*A < *B)
+ return -1;
+ return 1;
+}
+#endif
+ /*}}}*/
+// stringcasecmp - Arbitrary case insensitive string compare /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+int stringcasecmp(const char *A,const char *AEnd,const char *B,const char *BEnd)
+{
+ for (; A != AEnd && B != BEnd; A++, B++)
+ if (tolower_ascii(*A) != tolower_ascii(*B))
+ break;
+
+ if (A == AEnd && B == BEnd)
+ return 0;
+ if (A == AEnd)
+ return 1;
+ if (B == BEnd)
+ return -1;
+ if (tolower_ascii(*A) < tolower_ascii(*B))
+ return -1;
+ return 1;
+}
+#if __GNUC__ >= 3
+int stringcasecmp(string::const_iterator A,string::const_iterator AEnd,
+ const char *B,const char *BEnd)
+{
+ for (; A != AEnd && B != BEnd; A++, B++)
+ if (tolower_ascii(*A) != tolower_ascii(*B))
+ break;
+
+ if (A == AEnd && B == BEnd)
+ return 0;
+ if (A == AEnd)
+ return 1;
+ if (B == BEnd)
+ return -1;
+ if (tolower_ascii(*A) < tolower_ascii(*B))
+ return -1;
+ return 1;
+}
+int stringcasecmp(string::const_iterator A,string::const_iterator AEnd,
+ string::const_iterator B,string::const_iterator BEnd)
+{
+ for (; A != AEnd && B != BEnd; A++, B++)
+ if (tolower_ascii(*A) != tolower_ascii(*B))
+ break;
+
+ if (A == AEnd && B == BEnd)
+ return 0;
+ if (A == AEnd)
+ return 1;
+ if (B == BEnd)
+ return -1;
+ if (tolower_ascii(*A) < tolower_ascii(*B))
+ return -1;
+ return 1;
+}
+#endif
+ /*}}}*/
+// LookupTag - Lookup the value of a tag in a taged string /*{{{*/
+// ---------------------------------------------------------------------
+/* The format is like those used in package files and the method
+ communication system */
+string LookupTag(const string &Message,const char *Tag,const char *Default)
+{
+ // Look for a matching tag.
+ int Length = strlen(Tag);
+ for (string::const_iterator I = Message.begin(); I + Length < Message.end(); ++I)
+ {
+ // Found the tag
+ if (I[Length] == ':' && stringcasecmp(I,I+Length,Tag) == 0)
+ {
+ // Find the end of line and strip the leading/trailing spaces
+ string::const_iterator J;
+ I += Length + 1;
+ for (; isspace_ascii(*I) != 0 && I < Message.end(); ++I);
+ for (J = I; *J != '\n' && J < Message.end(); ++J);
+ for (; J > I && isspace_ascii(J[-1]) != 0; --J);
+
+ return string(I,J);
+ }
+
+ for (; *I != '\n' && I < Message.end(); ++I);
+ }
+
+ // Failed to find a match
+ if (Default == 0)
+ return string();
+ return Default;
+}
+ /*}}}*/
+// StringToBool - Converts a string into a boolean /*{{{*/
+// ---------------------------------------------------------------------
+/* This inspects the string to see if it is true or if it is false and
+ then returns the result. Several varients on true/false are checked. */
+int StringToBool(const string &Text,int Default)
+{
+ char *ParseEnd;
+ int Res = strtol(Text.c_str(),&ParseEnd,0);
+ // ensure that the entire string was converted by strtol to avoid
+ // failures on "apt-cache show -a 0ad" where the "0" is converted
+ const char *TextEnd = Text.c_str()+Text.size();
+ if (ParseEnd == TextEnd && Res >= 0 && Res <= 1)
+ return Res;
+
+ // Check for positives
+ if (strcasecmp(Text.c_str(),"no") == 0 ||
+ strcasecmp(Text.c_str(),"false") == 0 ||
+ strcasecmp(Text.c_str(),"without") == 0 ||
+ strcasecmp(Text.c_str(),"off") == 0 ||
+ strcasecmp(Text.c_str(),"disable") == 0)
+ return 0;
+
+ // Check for negatives
+ if (strcasecmp(Text.c_str(),"yes") == 0 ||
+ strcasecmp(Text.c_str(),"true") == 0 ||
+ strcasecmp(Text.c_str(),"with") == 0 ||
+ strcasecmp(Text.c_str(),"on") == 0 ||
+ strcasecmp(Text.c_str(),"enable") == 0)
+ return 1;
+
+ return Default;
+}
+ /*}}}*/
+// TimeRFC1123 - Convert a time_t into RFC1123 format /*{{{*/
+// ---------------------------------------------------------------------
+/* This converts a time_t into a string time representation that is
+ year 2000 compliant and timezone neutral */
+string TimeRFC1123(time_t Date)
+{
+ return TimeRFC1123(Date, false);
+}
+string TimeRFC1123(time_t Date, bool const NumericTimezone)
+{
+ struct tm Conv;
+ if (gmtime_r(&Date, &Conv) == NULL)
+ return "";
+
+ auto const posix = std::locale::classic();
+ std::ostringstream datestr;
+ datestr.imbue(posix);
+ APT::StringView const fmt("%a, %d %b %Y %H:%M:%S");
+ std::use_facet<std::time_put<char>>(posix).put(
+ std::ostreambuf_iterator<char>(datestr),
+ datestr, ' ', &Conv, fmt.data(), fmt.data() + fmt.size());
+ if (NumericTimezone)
+ datestr << " +0000";
+ else
+ datestr << " GMT";
+ return datestr.str();
+}
+ /*}}}*/
+// ReadMessages - Read messages from the FD /*{{{*/
+// ---------------------------------------------------------------------
+/* This pulls full messages from the input FD into the message buffer.
+ It assumes that messages will not pause during transit so no
+ fancy buffering is used.
+
+ In particular: this reads blocks from the input until it believes
+ that it's run out of input text. Each block is terminated by a
+ double newline ('\n' followed by '\n').
+ */
+bool ReadMessages(int Fd, vector<string> &List)
+{
+ char Buffer[64000];
+ // Represents any left-over from the previous iteration of the
+ // parse loop. (i.e., if a message is split across the end
+ // of the buffer, it goes here)
+ string PartialMessage;
+
+ do {
+ int const Res = read(Fd, Buffer, sizeof(Buffer));
+ if (Res < 0 && errno == EINTR)
+ continue;
+
+ // process we read from has died
+ if (Res == 0)
+ return false;
+
+ // No data
+#if EAGAIN != EWOULDBLOCK
+ if (Res < 0 && (errno == EAGAIN || errno == EWOULDBLOCK))
+#else
+ if (Res < 0 && errno == EAGAIN)
+#endif
+ return true;
+ if (Res < 0)
+ return false;
+
+ // extract the message(s) from the buffer
+ char const *Start = Buffer;
+ char const * const End = Buffer + Res;
+
+ char const * NL = (char const *) memchr(Start, '\n', End - Start);
+ if (NL == NULL)
+ {
+ // end of buffer: store what we have so far and read new data in
+ PartialMessage.append(Start, End - Start);
+ Start = End;
+ }
+ else
+ ++NL;
+
+ if (PartialMessage.empty() == false && Start < End)
+ {
+ // if we start with a new line, see if the partial message we have ended with one
+ // so that we properly detect records ending between two read() runs
+ // cases are: \n|\n , \r\n|\r\n and \r\n\r|\n
+ // the case \r|\n\r\n is handled by the usual double-newline handling
+ if ((NL - Start) == 1 || ((NL - Start) == 2 && *Start == '\r'))
+ {
+ if (APT::String::Endswith(PartialMessage, "\n") || APT::String::Endswith(PartialMessage, "\r\n\r"))
+ {
+ PartialMessage.erase(PartialMessage.find_last_not_of("\r\n") + 1);
+ List.push_back(PartialMessage);
+ PartialMessage.clear();
+ while (NL < End && (*NL == '\n' || *NL == '\r')) ++NL;
+ Start = NL;
+ }
+ }
+ }
+
+ while (Start < End) {
+ char const * NL2 = (char const *) memchr(NL, '\n', End - NL);
+ if (NL2 == NULL)
+ {
+ // end of buffer: store what we have so far and read new data in
+ PartialMessage.append(Start, End - Start);
+ break;
+ }
+ ++NL2;
+
+ // did we find a double newline?
+ if ((NL2 - NL) == 1 || ((NL2 - NL) == 2 && *NL == '\r'))
+ {
+ PartialMessage.append(Start, NL2 - Start);
+ PartialMessage.erase(PartialMessage.find_last_not_of("\r\n") + 1);
+ List.push_back(PartialMessage);
+ PartialMessage.clear();
+ while (NL2 < End && (*NL2 == '\n' || *NL2 == '\r')) ++NL2;
+ Start = NL2;
+ }
+ NL = NL2;
+ }
+
+ // we have read at least one complete message and nothing left
+ if (PartialMessage.empty() == true)
+ return true;
+
+ if (WaitFd(Fd) == false)
+ return false;
+ } while (true);
+}
+ /*}}}*/
+// MonthConv - Converts a month string into a number /*{{{*/
+// ---------------------------------------------------------------------
+/* This was lifted from the boa webserver which lifted it from 'wn-v1.07'
+ Made it a bit more robust with a few tolower_ascii though. */
+static int MonthConv(char const * const Month)
+{
+ switch (tolower_ascii(*Month))
+ {
+ case 'a':
+ return tolower_ascii(Month[1]) == 'p'?3:7;
+ case 'd':
+ return 11;
+ case 'f':
+ return 1;
+ case 'j':
+ if (tolower_ascii(Month[1]) == 'a')
+ return 0;
+ return tolower_ascii(Month[2]) == 'n'?5:6;
+ case 'm':
+ return tolower_ascii(Month[2]) == 'r'?2:4;
+ case 'n':
+ return 10;
+ case 'o':
+ return 9;
+ case 's':
+ return 8;
+
+ // Pretend it is January..
+ default:
+ return 0;
+ }
+}
+ /*}}}*/
+// timegm - Internal timegm if the gnu version is not available /*{{{*/
+// ---------------------------------------------------------------------
+/* Converts struct tm to time_t, assuming the data in tm is UTC rather
+ than local timezone (mktime assumes the latter).
+
+ This function is a nonstandard GNU extension that is also present on
+ the BSDs and maybe other systems. For others we follow the advice of
+ the manpage of timegm and use his portable replacement. */
+#ifndef HAVE_TIMEGM
+static time_t timegm(struct tm *t)
+{
+ char *tz = getenv("TZ");
+ setenv("TZ", "", 1);
+ tzset();
+ time_t ret = mktime(t);
+ if (tz)
+ setenv("TZ", tz, 1);
+ else
+ unsetenv("TZ");
+ tzset();
+ return ret;
+}
+#endif
+ /*}}}*/
+// RFC1123StrToTime - Converts a HTTP1.1 full date strings into a time_t /*{{{*/
+// ---------------------------------------------------------------------
+/* tries to parses a full date as specified in RFC7231 §7.1.1.1
+ with one exception: HTTP/1.1 valid dates need to have GMT as timezone.
+ As we encounter dates from UTC or with a numeric timezone in other places,
+ we allow them here to to be able to reuse the method. Either way, a date
+ must be in UTC or parsing will fail. Previous implementations of this
+ method used to ignore the timezone and assume always UTC. */
+bool RFC1123StrToTime(const char* const str,time_t &time)
+{
+ unsigned short day = 0;
+ signed int year = 0; // yes, Y23K problem – we gonna worry then…
+ std::string weekday, month, datespec, timespec, zone;
+ std::istringstream ss(str);
+ auto const &posix = std::locale::classic();
+ ss.imbue(posix);
+ ss >> weekday;
+ // we only superficially check weekday, mostly to avoid accepting localized
+ // weekdays here and take only its length to decide which datetime format we
+ // encounter here. The date isn't stored.
+ std::transform(weekday.begin(), weekday.end(), weekday.begin(), ::tolower);
+ std::array<char const * const, 7> c_weekdays = {{ "sun", "mon", "tue", "wed", "thu", "fri", "sat" }};
+ if (std::find(c_weekdays.begin(), c_weekdays.end(), weekday.substr(0,3)) == c_weekdays.end())
+ return false;
+
+ switch (weekday.length())
+ {
+ case 4:
+ // Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123
+ if (weekday[3] != ',')
+ return false;
+ ss >> day >> month >> year >> timespec >> zone;
+ break;
+ case 3:
+ // Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
+ ss >> month >> day >> timespec >> year;
+ zone = "UTC";
+ break;
+ case 0:
+ case 1:
+ case 2:
+ return false;
+ default:
+ // Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
+ if (weekday[weekday.length() - 1] != ',')
+ return false;
+ ss >> datespec >> timespec >> zone;
+ auto const expldate = VectorizeString(datespec, '-');
+ if (expldate.size() != 3)
+ return false;
+ try {
+ size_t pos;
+ day = std::stoi(expldate[0], &pos);
+ if (pos != expldate[0].length())
+ return false;
+ year = 1900 + std::stoi(expldate[2], &pos);
+ if (pos != expldate[2].length())
+ return false;
+ strprintf(datespec, "%.4d-%.2d-%.2d", year, MonthConv(expldate[1].c_str()) + 1, day);
+ } catch (...) {
+ return false;
+ }
+ break;
+ }
+
+ if (ss.fail() || ss.bad() || !ss.eof())
+ return false;
+
+ if (zone != "GMT" && zone != "UTC" && zone != "Z") // RFC 822
+ {
+ // numeric timezones as a should of RFC 1123 and generally preferred
+ try {
+ size_t pos;
+ auto const z = std::stoi(zone, &pos);
+ if (z != 0 || pos != zone.length())
+ return false;
+ } catch (...) {
+ return false;
+ }
+ }
+
+ if (datespec.empty())
+ {
+ if (month.empty())
+ return false;
+ strprintf(datespec, "%.4d-%.2d-%.2d", year, MonthConv(month.c_str()) + 1, day);
+ }
+
+ std::string const datetime = datespec + ' ' + timespec;
+ struct tm Tm;
+ if (strptime(datetime.c_str(), "%Y-%m-%d %H:%M:%S", &Tm) == nullptr)
+ return false;
+ time = timegm(&Tm);
+ return true;
+}
+ /*}}}*/
+// FTPMDTMStrToTime - Converts a ftp modification date into a time_t /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool FTPMDTMStrToTime(const char* const str,time_t &time)
+{
+ struct tm Tm;
+ // MDTM includes no whitespaces but recommend and ignored by strptime
+ if (strptime(str, "%Y %m %d %H %M %S", &Tm) == NULL)
+ return false;
+
+ time = timegm(&Tm);
+ return true;
+}
+ /*}}}*/
+// StrToTime - Converts a string into a time_t /*{{{*/
+// ---------------------------------------------------------------------
+/* This handles all 3 popular time formats including RFC 1123, RFC 1036
+ and the C library asctime format. It requires the GNU library function
+ 'timegm' to convert a struct tm in UTC to a time_t. For some bizzar
+ reason the C library does not provide any such function :< This also
+ handles the weird, but unambiguous FTP time format*/
+bool StrToTime(const string &Val,time_t &Result)
+{
+ struct tm Tm;
+ char Month[10];
+
+ // Skip the day of the week
+ const char *I = strchr(Val.c_str(), ' ');
+
+ // Handle RFC 1123 time
+ Month[0] = 0;
+ if (sscanf(I," %2d %3s %4d %2d:%2d:%2d GMT",&Tm.tm_mday,Month,&Tm.tm_year,
+ &Tm.tm_hour,&Tm.tm_min,&Tm.tm_sec) != 6)
+ {
+ // Handle RFC 1036 time
+ if (sscanf(I," %2d-%3s-%3d %2d:%2d:%2d GMT",&Tm.tm_mday,Month,
+ &Tm.tm_year,&Tm.tm_hour,&Tm.tm_min,&Tm.tm_sec) == 6)
+ Tm.tm_year += 1900;
+ else
+ {
+ // asctime format
+ if (sscanf(I," %3s %2d %2d:%2d:%2d %4d",Month,&Tm.tm_mday,
+ &Tm.tm_hour,&Tm.tm_min,&Tm.tm_sec,&Tm.tm_year) != 6)
+ {
+ // 'ftp' time
+ if (sscanf(Val.c_str(),"%4d%2d%2d%2d%2d%2d",&Tm.tm_year,&Tm.tm_mon,
+ &Tm.tm_mday,&Tm.tm_hour,&Tm.tm_min,&Tm.tm_sec) != 6)
+ return false;
+ Tm.tm_mon--;
+ }
+ }
+ }
+
+ Tm.tm_isdst = 0;
+ if (Month[0] != 0)
+ Tm.tm_mon = MonthConv(Month);
+ else
+ Tm.tm_mon = 0; // we don't have a month, so pick something
+ Tm.tm_year -= 1900;
+
+ // Convert to local time and then to GMT
+ Result = timegm(&Tm);
+ return true;
+}
+ /*}}}*/
+// StrToNum - Convert a fixed length string to a number /*{{{*/
+// ---------------------------------------------------------------------
+/* This is used in decoding the crazy fixed length string headers in
+ tar and ar files. */
+bool StrToNum(const char *Str,unsigned long &Res,unsigned Len,unsigned Base)
+{
+ char S[30];
+ if (Len >= sizeof(S))
+ return false;
+ memcpy(S,Str,Len);
+ S[Len] = 0;
+
+ // All spaces is a zero
+ Res = 0;
+ unsigned I;
+ for (I = 0; S[I] == ' '; I++);
+ if (S[I] == 0)
+ return true;
+
+ char *End;
+ Res = strtoul(S,&End,Base);
+ if (End == S)
+ return false;
+
+ return true;
+}
+ /*}}}*/
+// StrToNum - Convert a fixed length string to a number /*{{{*/
+// ---------------------------------------------------------------------
+/* This is used in decoding the crazy fixed length string headers in
+ tar and ar files. */
+bool StrToNum(const char *Str,unsigned long long &Res,unsigned Len,unsigned Base)
+{
+ char S[30];
+ if (Len >= sizeof(S))
+ return false;
+ memcpy(S,Str,Len);
+ S[Len] = 0;
+
+ // All spaces is a zero
+ Res = 0;
+ unsigned I;
+ for (I = 0; S[I] == ' '; I++);
+ if (S[I] == 0)
+ return true;
+
+ char *End;
+ Res = strtoull(S,&End,Base);
+ if (End == S)
+ return false;
+
+ return true;
+}
+ /*}}}*/
+
+// Base256ToNum - Convert a fixed length binary to a number /*{{{*/
+// ---------------------------------------------------------------------
+/* This is used in decoding the 256bit encoded fixed length fields in
+ tar files */
+bool Base256ToNum(const char *Str,unsigned long long &Res,unsigned int Len)
+{
+ if ((Str[0] & 0x80) == 0)
+ return false;
+ else
+ {
+ Res = Str[0] & 0x7F;
+ for(unsigned int i = 1; i < Len; ++i)
+ Res = (Res<<8) + Str[i];
+ return true;
+ }
+}
+ /*}}}*/
+// Base256ToNum - Convert a fixed length binary to a number /*{{{*/
+// ---------------------------------------------------------------------
+/* This is used in decoding the 256bit encoded fixed length fields in
+ tar files */
+bool Base256ToNum(const char *Str,unsigned long &Res,unsigned int Len)
+{
+ unsigned long long Num = 0;
+ bool rc;
+
+ rc = Base256ToNum(Str, Num, Len);
+ // rudimentary check for overflow (Res = ulong, Num = ulonglong)
+ Res = Num;
+ if (Res != Num)
+ return false;
+
+ return rc;
+}
+ /*}}}*/
+// HexDigit - Convert a hex character into an integer /*{{{*/
+// ---------------------------------------------------------------------
+/* Helper for Hex2Num */
+static int HexDigit(int c)
+{
+ if (c >= '0' && c <= '9')
+ return c - '0';
+ if (c >= 'a' && c <= 'f')
+ return c - 'a' + 10;
+ if (c >= 'A' && c <= 'F')
+ return c - 'A' + 10;
+ return -1;
+}
+ /*}}}*/
+// Hex2Num - Convert a long hex number into a buffer /*{{{*/
+// ---------------------------------------------------------------------
+/* The length of the buffer must be exactly 1/2 the length of the string. */
+bool Hex2Num(const string &Str,unsigned char *Num,unsigned int Length)
+{
+ return Hex2Num(APT::StringView(Str), Num, Length);
+}
+
+bool Hex2Num(const APT::StringView Str,unsigned char *Num,unsigned int Length)
+{
+ if (Str.length() != Length*2)
+ return false;
+
+ // Convert each digit. We store it in the same order as the string
+ int J = 0;
+ for (auto I = Str.begin(); I != Str.end();J++, I += 2)
+ {
+ int first_half = HexDigit(I[0]);
+ int second_half;
+ if (first_half < 0)
+ return false;
+
+ second_half = HexDigit(I[1]);
+ if (second_half < 0)
+ return false;
+ Num[J] = first_half << 4;
+ Num[J] += second_half;
+ }
+
+ return true;
+}
+ /*}}}*/
+// TokSplitString - Split a string up by a given token /*{{{*/
+// ---------------------------------------------------------------------
+/* This is intended to be a faster splitter, it does not use dynamic
+ memories. Input is changed to insert nulls at each token location. */
+bool TokSplitString(char Tok,char *Input,char **List,
+ unsigned long ListMax)
+{
+ // Strip any leading spaces
+ char *Start = Input;
+ char *Stop = Start + strlen(Start);
+ for (; *Start != 0 && isspace(*Start) != 0; Start++);
+
+ unsigned long Count = 0;
+ char *Pos = Start;
+ while (Pos != Stop)
+ {
+ // Skip to the next Token
+ for (; Pos != Stop && *Pos != Tok; Pos++);
+
+ // Back remove spaces
+ char *End = Pos;
+ for (; End > Start && (End[-1] == Tok || isspace(End[-1]) != 0); End--);
+ *End = 0;
+
+ List[Count++] = Start;
+ if (Count >= ListMax)
+ {
+ List[Count-1] = 0;
+ return false;
+ }
+
+ // Advance pos
+ for (; Pos != Stop && (*Pos == Tok || isspace(*Pos) != 0 || *Pos == 0); Pos++);
+ Start = Pos;
+ }
+
+ List[Count] = 0;
+ return true;
+}
+ /*}}}*/
+// VectorizeString - Split a string up into a vector of strings /*{{{*/
+// ---------------------------------------------------------------------
+/* This can be used to split a given string up into a vector, so the
+ propose is the same as in the method above and this one is a bit slower
+ also, but the advantage is that we have an iteratable vector */
+vector<string> VectorizeString(string const &haystack, char const &split)
+{
+ vector<string> exploded;
+ if (haystack.empty() == true)
+ return exploded;
+ string::const_iterator start = haystack.begin();
+ string::const_iterator end = start;
+ do {
+ for (; end != haystack.end() && *end != split; ++end);
+ exploded.push_back(string(start, end));
+ start = end + 1;
+ } while (end != haystack.end() && (++end) != haystack.end());
+ return exploded;
+}
+ /*}}}*/
+// StringSplit - split a string into a string vector by token /*{{{*/
+// ---------------------------------------------------------------------
+/* See header for details.
+ */
+vector<string> StringSplit(std::string const &s, std::string const &sep,
+ unsigned int maxsplit)
+{
+ vector<string> split;
+ size_t start, pos;
+
+ // no separator given, this is bogus
+ if(sep.size() == 0)
+ return split;
+
+ start = pos = 0;
+ while (pos != string::npos)
+ {
+ pos = s.find(sep, start);
+ split.push_back(s.substr(start, pos-start));
+
+ // if maxsplit is reached, the remaining string is the last item
+ if(split.size() >= maxsplit)
+ {
+ split[split.size()-1] = s.substr(start);
+ break;
+ }
+ start = pos+sep.size();
+ }
+ return split;
+}
+ /*}}}*/
+// RegexChoice - Simple regex list/list matcher /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+unsigned long RegexChoice(RxChoiceList *Rxs,const char **ListBegin,
+ const char **ListEnd)
+{
+ for (RxChoiceList *R = Rxs; R->Str != 0; R++)
+ R->Hit = false;
+
+ unsigned long Hits = 0;
+ for (; ListBegin < ListEnd; ++ListBegin)
+ {
+ // Check if the name is a regex
+ const char *I;
+ bool Regex = true;
+ for (I = *ListBegin; *I != 0; I++)
+ if (*I == '.' || *I == '?' || *I == '*' || *I == '|')
+ break;
+ if (*I == 0)
+ Regex = false;
+
+ // Compile the regex pattern
+ regex_t Pattern;
+ if (Regex == true)
+ if (regcomp(&Pattern,*ListBegin,REG_EXTENDED | REG_ICASE |
+ REG_NOSUB) != 0)
+ Regex = false;
+
+ // Search the list
+ bool Done = false;
+ for (RxChoiceList *R = Rxs; R->Str != 0; R++)
+ {
+ if (R->Str[0] == 0)
+ continue;
+
+ if (strcasecmp(R->Str,*ListBegin) != 0)
+ {
+ if (Regex == false)
+ continue;
+ if (regexec(&Pattern,R->Str,0,0,0) != 0)
+ continue;
+ }
+ Done = true;
+
+ if (R->Hit == false)
+ Hits++;
+
+ R->Hit = true;
+ }
+
+ if (Regex == true)
+ regfree(&Pattern);
+
+ if (Done == false)
+ _error->Warning(_("Selection %s not found"),*ListBegin);
+ }
+
+ return Hits;
+}
+ /*}}}*/
+// {str,io}printf - C format string outputter to C++ strings/iostreams /*{{{*/
+// ---------------------------------------------------------------------
+/* This is used to make the internationalization strings easier to translate
+ and to allow reordering of parameters */
+static bool iovprintf(ostream &out, const char *format,
+ va_list &args, ssize_t &size) {
+ char *S = (char*)malloc(size);
+ ssize_t const n = vsnprintf(S, size, format, args);
+ if (n > -1 && n < size) {
+ out << S;
+ free(S);
+ return true;
+ } else {
+ if (n > -1)
+ size = n + 1;
+ else
+ size *= 2;
+ }
+ free(S);
+ return false;
+}
+void ioprintf(ostream &out,const char *format,...)
+{
+ va_list args;
+ ssize_t size = 400;
+ while (true) {
+ bool ret;
+ va_start(args,format);
+ ret = iovprintf(out, format, args, size);
+ va_end(args);
+ if (ret == true)
+ return;
+ }
+}
+void strprintf(string &out,const char *format,...)
+{
+ va_list args;
+ ssize_t size = 400;
+ std::ostringstream outstr;
+ while (true) {
+ bool ret;
+ va_start(args,format);
+ ret = iovprintf(outstr, format, args, size);
+ va_end(args);
+ if (ret == true)
+ break;
+ }
+ out = outstr.str();
+}
+ /*}}}*/
+// safe_snprintf - Safer snprintf /*{{{*/
+// ---------------------------------------------------------------------
+/* This is a snprintf that will never (ever) go past 'End' and returns a
+ pointer to the end of the new string. The returned string is always null
+ terminated unless Buffer == end. This is a better alterantive to using
+ consecutive snprintfs. */
+char *safe_snprintf(char *Buffer,char *End,const char *Format,...)
+{
+ va_list args;
+ int Did;
+
+ if (End <= Buffer)
+ return End;
+ va_start(args,Format);
+ Did = vsnprintf(Buffer,End - Buffer,Format,args);
+ va_end(args);
+
+ if (Did < 0 || Buffer + Did > End)
+ return End;
+ return Buffer + Did;
+}
+ /*}}}*/
+// StripEpoch - Remove the version "epoch" from a version string /*{{{*/
+// ---------------------------------------------------------------------
+string StripEpoch(const string &VerStr)
+{
+ size_t i = VerStr.find(":");
+ if (i == string::npos)
+ return VerStr;
+ return VerStr.substr(i+1);
+}
+ /*}}}*/
+
+// tolower_ascii - tolower() function that ignores the locale /*{{{*/
+// ---------------------------------------------------------------------
+/* This little function is the most called method we have and tries
+ therefore to do the absolute minimum - and is notable faster than
+ standard tolower/toupper and as a bonus avoids problems with different
+ locales - we only operate on ascii chars anyway. */
+#undef tolower_ascii
+int tolower_ascii(int const c) APT_CONST APT_COLD;
+int tolower_ascii(int const c)
+{
+ return tolower_ascii_inline(c);
+}
+ /*}}}*/
+
+// isspace_ascii - isspace() function that ignores the locale /*{{{*/
+// ---------------------------------------------------------------------
+/* This little function is one of the most called methods we have and tries
+ therefore to do the absolute minimum - and is notable faster than
+ standard isspace() and as a bonus avoids problems with different
+ locales - we only operate on ascii chars anyway. */
+#undef isspace_ascii
+int isspace_ascii(int const c) APT_CONST APT_COLD;
+int isspace_ascii(int const c)
+{
+ return isspace_ascii_inline(c);
+}
+ /*}}}*/
+
+// CheckDomainList - See if Host is in a , separate list /*{{{*/
+// ---------------------------------------------------------------------
+/* The domain list is a comma separate list of domains that are suffix
+ matched against the argument */
+bool CheckDomainList(const string &Host,const string &List)
+{
+ string::const_iterator Start = List.begin();
+ for (string::const_iterator Cur = List.begin(); Cur <= List.end(); ++Cur)
+ {
+ if (Cur < List.end() && *Cur != ',')
+ continue;
+
+ // Match the end of the string..
+ if ((Host.size() >= (unsigned)(Cur - Start)) &&
+ Cur - Start != 0 &&
+ stringcasecmp(Host.end() - (Cur - Start),Host.end(),Start,Cur) == 0)
+ return true;
+
+ Start = Cur + 1;
+ }
+ return false;
+}
+ /*}}}*/
+// strv_length - Return the length of a NULL-terminated string array /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+size_t strv_length(const char **str_array)
+{
+ size_t i;
+ for (i=0; str_array[i] != NULL; i++)
+ /* nothing */
+ ;
+ return i;
+}
+ /*}}}*/
+// DeEscapeString - unescape (\0XX and \xXX) from a string /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+string DeEscapeString(const string &input)
+{
+ char tmp[3];
+ string::const_iterator it;
+ string output;
+ for (it = input.begin(); it != input.end(); ++it)
+ {
+ // just copy non-escape chars
+ if (*it != '\\')
+ {
+ output += *it;
+ continue;
+ }
+
+ // deal with double escape
+ if (*it == '\\' &&
+ (it + 1 < input.end()) && it[1] == '\\')
+ {
+ // copy
+ output += *it;
+ // advance iterator one step further
+ ++it;
+ continue;
+ }
+
+ // ensure we have a char to read
+ if (it + 1 == input.end())
+ continue;
+
+ // read it
+ ++it;
+ switch (*it)
+ {
+ case '0':
+ if (it + 2 <= input.end()) {
+ tmp[0] = it[1];
+ tmp[1] = it[2];
+ tmp[2] = 0;
+ output += (char)strtol(tmp, 0, 8);
+ it += 2;
+ }
+ break;
+ case 'x':
+ if (it + 2 <= input.end()) {
+ tmp[0] = it[1];
+ tmp[1] = it[2];
+ tmp[2] = 0;
+ output += (char)strtol(tmp, 0, 16);
+ it += 2;
+ }
+ break;
+ default:
+ // FIXME: raise exception here?
+ break;
+ }
+ }
+ return output;
+}
+ /*}}}*/
+// URI::CopyFrom - Copy from an object /*{{{*/
+// ---------------------------------------------------------------------
+/* This parses the URI into all of its components */
+void URI::CopyFrom(const string &U)
+{
+ string::const_iterator I = U.begin();
+
+ // Locate the first colon, this separates the scheme
+ for (; I < U.end() && *I != ':' ; ++I);
+ string::const_iterator FirstColon = I;
+
+ /* Determine if this is a host type URI with a leading double //
+ and then search for the first single / */
+ string::const_iterator SingleSlash = I;
+ if (I + 3 < U.end() && I[1] == '/' && I[2] == '/')
+ SingleSlash += 3;
+
+ /* Find the / indicating the end of the hostname, ignoring /'s in the
+ square brackets */
+ bool InBracket = false;
+ for (; SingleSlash < U.end() && (*SingleSlash != '/' || InBracket == true); ++SingleSlash)
+ {
+ if (*SingleSlash == '[')
+ InBracket = true;
+ if (InBracket == true && *SingleSlash == ']')
+ InBracket = false;
+ }
+
+ if (SingleSlash > U.end())
+ SingleSlash = U.end();
+
+ // We can now write the access and path specifiers
+ Access.assign(U.begin(),FirstColon);
+ if (SingleSlash != U.end())
+ Path.assign(SingleSlash,U.end());
+ if (Path.empty() == true)
+ Path = "/";
+
+ // Now we attempt to locate a user:pass@host fragment
+ if (FirstColon + 2 <= U.end() && FirstColon[1] == '/' && FirstColon[2] == '/')
+ FirstColon += 3;
+ else
+ FirstColon += 1;
+ if (FirstColon >= U.end())
+ return;
+
+ if (FirstColon > SingleSlash)
+ FirstColon = SingleSlash;
+
+ // Find the colon...
+ I = FirstColon + 1;
+ if (I > SingleSlash)
+ I = SingleSlash;
+
+ // Search for the @ separating user:pass from host
+ auto const RevAt = std::find(
+ std::string::const_reverse_iterator(SingleSlash),
+ std::string::const_reverse_iterator(I), '@');
+ string::const_iterator const At = RevAt.base() == I ? SingleSlash : std::prev(RevAt.base());
+ // and then look for the colon between user and pass
+ string::const_iterator const SecondColon = std::find(I, At, ':');
+
+ // Now write the host and user/pass
+ if (At == SingleSlash)
+ {
+ if (FirstColon < SingleSlash)
+ Host.assign(FirstColon,SingleSlash);
+ }
+ else
+ {
+ Host.assign(At+1,SingleSlash);
+ // username and password must be encoded (RFC 3986)
+ User.assign(DeQuoteString(FirstColon,SecondColon));
+ if (SecondColon < At)
+ Password.assign(DeQuoteString(SecondColon+1,At));
+ }
+
+ // Now we parse the RFC 2732 [] hostnames.
+ unsigned long PortEnd = 0;
+ InBracket = false;
+ for (unsigned I = 0; I != Host.length();)
+ {
+ if (Host[I] == '[')
+ {
+ InBracket = true;
+ Host.erase(I,1);
+ continue;
+ }
+
+ if (InBracket == true && Host[I] == ']')
+ {
+ InBracket = false;
+ Host.erase(I,1);
+ PortEnd = I;
+ continue;
+ }
+ I++;
+ }
+
+ // Tsk, weird.
+ if (InBracket == true)
+ {
+ Host.clear();
+ return;
+ }
+
+ // Now we parse off a port number from the hostname
+ Port = 0;
+ string::size_type Pos = Host.rfind(':');
+ if (Pos == string::npos || Pos < PortEnd)
+ return;
+
+ Port = atoi(string(Host,Pos+1).c_str());
+ Host.assign(Host,0,Pos);
+}
+ /*}}}*/
+// URI::operator string - Convert the URI to a string /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+URI::operator string()
+{
+ std::stringstream Res;
+
+ if (Access.empty() == false)
+ Res << Access << ':';
+
+ if (Host.empty() == false)
+ {
+ if (Access.empty() == false)
+ Res << "//";
+
+ if (User.empty() == false)
+ {
+ // FIXME: Technically userinfo is permitted even less
+ // characters than these, but this is not conveniently
+ // expressed with a blacklist.
+ Res << QuoteString(User, ":/?#[]@");
+ if (Password.empty() == false)
+ Res << ":" << QuoteString(Password, ":/?#[]@");
+ Res << "@";
+ }
+
+ // Add RFC 2732 escaping characters
+ if (Access.empty() == false && Host.find_first_of("/:") != string::npos)
+ Res << '[' << Host << ']';
+ else
+ Res << Host;
+
+ if (Port != 0)
+ Res << ':' << std::to_string(Port);
+ }
+
+ if (Path.empty() == false)
+ {
+ if (Path[0] != '/')
+ Res << "/" << Path;
+ else
+ Res << Path;
+ }
+
+ return Res.str();
+}
+ /*}}}*/
+// URI::SiteOnly - Return the schema and site for the URI /*{{{*/
+string URI::SiteOnly(const string &URI)
+{
+ ::URI U(URI);
+ U.User.clear();
+ U.Password.clear();
+ U.Path.clear();
+ return U;
+}
+ /*}}}*/
+// URI::ArchiveOnly - Return the schema, site and cleaned path for the URI /*{{{*/
+string URI::ArchiveOnly(const string &URI)
+{
+ ::URI U(URI);
+ U.User.clear();
+ U.Password.clear();
+ if (U.Path.empty() == false && U.Path[U.Path.length() - 1] == '/')
+ U.Path.erase(U.Path.length() - 1);
+ return U;
+}
+ /*}}}*/
+// URI::NoUserPassword - Return the schema, site and path for the URI /*{{{*/
+string URI::NoUserPassword(const string &URI)
+{
+ ::URI U(URI);
+ U.User.clear();
+ U.Password.clear();
+ return U;
+}
+ /*}}}*/
diff --git a/apt-pkg/contrib/strutl.h b/apt-pkg/contrib/strutl.h
new file mode 100644
index 000000000..73f27aa6c
--- /dev/null
+++ b/apt-pkg/contrib/strutl.h
@@ -0,0 +1,247 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: strutl.h,v 1.22 2003/02/02 22:20:27 jgg Exp $
+/* ######################################################################
+
+ String Util - These are some useful string functions
+
+ _strstrip is a function to remove whitespace from the front and end
+ of a string.
+
+ This source is placed in the Public Domain, do with it what you will
+ It was originally written by Jason Gunthorpe <jgg@gpu.srv.ualberta.ca>
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef STRUTL_H
+#define STRUTL_H
+
+
+#include <limits>
+#include <string>
+#include <cstring>
+#include <vector>
+#include <iostream>
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+#include <apt-pkg/string_view.h>
+#endif
+#include <time.h>
+#include <stddef.h>
+
+#include "macros.h"
+
+#ifndef APT_10_CLEANER_HEADERS
+#include <stdlib.h>
+#endif
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+using std::vector;
+using std::ostream;
+#endif
+
+namespace APT {
+ namespace String {
+ std::string Strip(const std::string &s);
+ bool Endswith(const std::string &s, const std::string &ending);
+ bool Startswith(const std::string &s, const std::string &starting);
+ std::string Join(std::vector<std::string> list, const std::string &sep);
+
+ }
+}
+
+
+bool UTF8ToCodeset(const char *codeset, const std::string &orig, std::string *dest);
+char *_strstrip(char *String);
+char *_strrstrip(char *String); // right strip only
+char *_strtabexpand(char *String,size_t Len);
+bool ParseQuoteWord(const char *&String,std::string &Res);
+bool ParseCWord(const char *&String,std::string &Res);
+std::string QuoteString(const std::string &Str,const char *Bad);
+std::string DeQuoteString(const std::string &Str);
+std::string DeQuoteString(std::string::const_iterator const &begin, std::string::const_iterator const &end);
+
+// unescape (\0XX and \xXX) from a string
+std::string DeEscapeString(const std::string &input);
+
+std::string SizeToStr(double Bytes);
+std::string TimeToStr(unsigned long Sec);
+std::string Base64Encode(const std::string &Str);
+std::string OutputInDepth(const unsigned long Depth, const char* Separator=" ");
+std::string URItoFileName(const std::string &URI);
+APT_DEPRECATED_MSG("Specify if GMT is required or a numeric timezone can be used") std::string TimeRFC1123(time_t Date);
+/** returns a datetime string as needed by HTTP/1.1 and Debian files.
+ *
+ * Note: The date will always be represented in a UTC timezone
+ *
+ * @param Date to be represented as a string
+ * @param NumericTimezone is preferred in general, but HTTP/1.1 requires the use
+ * of GMT as timezone instead. \b true means that the timezone should be denoted
+ * as "+0000" while \b false uses "GMT".
+ */
+std::string TimeRFC1123(time_t Date, bool const NumericTimezone);
+/** parses time as needed by HTTP/1.1 and Debian files.
+ *
+ * HTTP/1.1 prefers dates in RFC1123 format (but the other two obsolete date formats
+ * are supported to) and e.g. Release files use the same format in Date & Valid-Until
+ * fields.
+ *
+ * Note: datetime strings need to be in UTC timezones (GMT, UTC, Z, +/-0000) to be
+ * parsed. Other timezones will be rejected as invalid. Previous implementations
+ * accepted other timezones, but treated them as UTC.
+ *
+ * @param str is the datetime string to parse
+ * @param[out] time will be the seconds since epoch of the given datetime if
+ * parsing is successful, undefined otherwise.
+ * @return \b true if parsing was successful, otherwise \b false.
+ */
+bool RFC1123StrToTime(const char* const str,time_t &time) APT_MUSTCHECK;
+bool FTPMDTMStrToTime(const char* const str,time_t &time) APT_MUSTCHECK;
+APT_DEPRECATED_MSG("Use RFC1123StrToTime or FTPMDTMStrToTime as needed instead") bool StrToTime(const std::string &Val,time_t &Result);
+std::string LookupTag(const std::string &Message,const char *Tag,const char *Default = 0);
+int StringToBool(const std::string &Text,int Default = -1);
+bool ReadMessages(int Fd, std::vector<std::string> &List);
+bool StrToNum(const char *Str,unsigned long &Res,unsigned Len,unsigned Base = 0);
+bool StrToNum(const char *Str,unsigned long long &Res,unsigned Len,unsigned Base = 0);
+bool Base256ToNum(const char *Str,unsigned long &Res,unsigned int Len);
+bool Base256ToNum(const char *Str,unsigned long long &Res,unsigned int Len);
+bool Hex2Num(const std::string &Str,unsigned char *Num,unsigned int Length);
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+APT_HIDDEN bool Hex2Num(const APT::StringView Str,unsigned char *Num,unsigned int Length);
+#endif
+// input changing string split
+bool TokSplitString(char Tok,char *Input,char **List,
+ unsigned long ListMax);
+
+// split a given string by a char
+std::vector<std::string> VectorizeString(std::string const &haystack, char const &split) APT_PURE;
+
+/* \brief Return a vector of strings from string "input" where "sep"
+ * is used as the delimiter string.
+ *
+ * \param input The input string.
+ *
+ * \param sep The separator to use.
+ *
+ * \param maxsplit (optional) The maximum amount of splitting that
+ * should be done .
+ *
+ * The optional "maxsplit" argument can be used to limit the splitting,
+ * if used the string is only split on maxsplit places and the last
+ * item in the vector contains the remainder string.
+ */
+std::vector<std::string> StringSplit(std::string const &input,
+ std::string const &sep,
+ unsigned int maxsplit=std::numeric_limits<unsigned int>::max()) APT_CONST;
+
+void ioprintf(std::ostream &out,const char *format,...) APT_PRINTF(2);
+void strprintf(std::string &out,const char *format,...) APT_PRINTF(2);
+char *safe_snprintf(char *Buffer,char *End,const char *Format,...) APT_PRINTF(3);
+bool CheckDomainList(const std::string &Host, const std::string &List);
+
+/* Do some compat mumbo jumbo */
+#define tolower_ascii tolower_ascii_inline
+#define isspace_ascii isspace_ascii_inline
+
+APT_CONST APT_HOT
+static inline int tolower_ascii_unsafe(int const c)
+{
+ return c | 0x20;
+}
+APT_CONST APT_HOT
+static inline int tolower_ascii_inline(int const c)
+{
+ return (c >= 'A' && c <= 'Z') ? c + 32 : c;
+}
+APT_CONST APT_HOT
+static inline int isspace_ascii_inline(int const c)
+{
+ // 9='\t',10='\n',11='\v',12='\f',13='\r',32=' '
+ return (c >= 9 && c <= 13) || c == ' ';
+}
+
+std::string StripEpoch(const std::string &VerStr);
+
+#define APT_MKSTRCMP(name,func) \
+inline APT_PURE int name(const char *A,const char *B) {return func(A,A+strlen(A),B,B+strlen(B));} \
+inline APT_PURE int name(const char *A,const char *AEnd,const char *B) {return func(A,AEnd,B,B+strlen(B));} \
+inline APT_PURE int name(const std::string& A,const char *B) {return func(A.c_str(),A.c_str()+A.length(),B,B+strlen(B));} \
+inline APT_PURE int name(const std::string& A,const std::string& B) {return func(A.c_str(),A.c_str()+A.length(),B.c_str(),B.c_str()+B.length());} \
+inline APT_PURE int name(const std::string& A,const char *B,const char *BEnd) {return func(A.c_str(),A.c_str()+A.length(),B,BEnd);}
+
+#define APT_MKSTRCMP2(name,func) \
+inline APT_PURE int name(const char *A,const char *AEnd,const char *B) {return func(A,AEnd,B,B+strlen(B));} \
+inline APT_PURE int name(const std::string& A,const char *B) {return func(A.begin(),A.end(),B,B+strlen(B));} \
+inline APT_PURE int name(const std::string& A,const std::string& B) {return func(A.begin(),A.end(),B.begin(),B.end());} \
+inline APT_PURE int name(const std::string& A,const char *B,const char *BEnd) {return func(A.begin(),A.end(),B,BEnd);}
+
+int APT_PURE stringcmp(const char *A,const char *AEnd,const char *B,const char *BEnd);
+int APT_PURE stringcasecmp(const char *A,const char *AEnd,const char *B,const char *BEnd);
+
+/* We assume that GCC 3 indicates that libstdc++3 is in use too. In that
+ case the definition of string::const_iterator is not the same as
+ const char * and we need these extra functions */
+#if __GNUC__ >= 3
+int APT_PURE stringcmp(std::string::const_iterator A,std::string::const_iterator AEnd,
+ const char *B,const char *BEnd);
+int APT_PURE stringcmp(std::string::const_iterator A,std::string::const_iterator AEnd,
+ std::string::const_iterator B,std::string::const_iterator BEnd);
+int APT_PURE stringcasecmp(std::string::const_iterator A,std::string::const_iterator AEnd,
+ const char *B,const char *BEnd);
+int APT_PURE stringcasecmp(std::string::const_iterator A,std::string::const_iterator AEnd,
+ std::string::const_iterator B,std::string::const_iterator BEnd);
+
+inline APT_PURE int stringcmp(std::string::const_iterator A,std::string::const_iterator Aend,const char *B) {return stringcmp(A,Aend,B,B+strlen(B));}
+inline APT_PURE int stringcasecmp(std::string::const_iterator A,std::string::const_iterator Aend,const char *B) {return stringcasecmp(A,Aend,B,B+strlen(B));}
+#endif
+
+APT_MKSTRCMP2(stringcmp,stringcmp)
+APT_MKSTRCMP2(stringcasecmp,stringcasecmp)
+
+// Return the length of a NULL-terminated string array
+size_t APT_PURE strv_length(const char **str_array);
+
+
+inline const char *DeNull(const char *s) {return (s == 0?"(null)":s);}
+
+class URI
+{
+ void CopyFrom(const std::string &From);
+
+ public:
+
+ std::string Access;
+ std::string User;
+ std::string Password;
+ std::string Host;
+ std::string Path;
+ unsigned int Port;
+
+ operator std::string();
+ inline void operator =(const std::string &From) {CopyFrom(From);}
+ inline bool empty() {return Access.empty();};
+ static std::string SiteOnly(const std::string &URI);
+ static std::string ArchiveOnly(const std::string &URI);
+ static std::string NoUserPassword(const std::string &URI);
+
+ URI(std::string Path) {CopyFrom(Path);}
+ URI() : Port(0) {}
+};
+
+struct SubstVar
+{
+ const char *Subst;
+ const std::string *Contents;
+};
+std::string SubstVar(std::string Str,const struct SubstVar *Vars);
+std::string SubstVar(const std::string &Str,const std::string &Subst,const std::string &Contents);
+
+struct RxChoiceList
+{
+ void *UserData;
+ const char *Str;
+ bool Hit;
+};
+unsigned long RegexChoice(RxChoiceList *Rxs,const char **ListBegin,
+ const char **ListEnd);
+
+#endif
diff --git a/apt-pkg/contrib/weakptr.h b/apt-pkg/contrib/weakptr.h
new file mode 100644
index 000000000..8de727d89
--- /dev/null
+++ b/apt-pkg/contrib/weakptr.h
@@ -0,0 +1,64 @@
+/* weakptr.h - An object which supports weak pointers.
+ *
+ * Copyright (C) 2010 Julian Andres Klode <jak@debian.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+
+#ifndef WEAK_POINTER_H
+#define WEAK_POINTER_H
+
+#include <set>
+#include <stddef.h>
+
+/**
+ * Class for objects providing support for weak pointers.
+ *
+ * This class allows for the registration of certain pointers as weak,
+ * which will cause them to be set to NULL when the destructor of the
+ * object is called.
+ */
+class WeakPointable {
+private:
+ std::set<WeakPointable**> pointers;
+
+public:
+
+ /**
+ * Add a new weak pointer.
+ */
+ inline void AddWeakPointer(WeakPointable** weakptr) {
+ pointers.insert(weakptr);
+ }
+
+ /**
+ * Remove the weak pointer from the list of weak pointers.
+ */
+ inline void RemoveWeakPointer(WeakPointable **weakptr) {
+ pointers.erase(weakptr);
+ }
+
+ /**
+ * Deconstruct the object, set all weak pointers to NULL.
+ */
+ ~WeakPointable() {
+ std::set<WeakPointable**>::iterator iter = pointers.begin();
+ while (iter != pointers.end())
+ **(iter++) = NULL;
+ }
+};
+
+#endif // WEAK_POINTER_H
diff --git a/apt-pkg/deb/debindexfile.cc b/apt-pkg/deb/debindexfile.cc
new file mode 100644
index 000000000..c55847305
--- /dev/null
+++ b/apt-pkg/deb/debindexfile.cc
@@ -0,0 +1,459 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: debindexfile.cc,v 1.5.2.3 2004/01/04 19:11:00 mdz Exp $
+/* ######################################################################
+
+ Debian Specific sources.list types and the three sorts of Debian
+ index files.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/debindexfile.h>
+#include <apt-pkg/debsrcrecords.h>
+#include <apt-pkg/deblistparser.h>
+#include <apt-pkg/debrecords.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/pkgrecords.h>
+#include <apt-pkg/srcrecords.h>
+
+#include <stdio.h>
+#include <iostream>
+#include <string>
+#include <sstream>
+
+#include <sys/stat.h>
+#include <unistd.h>
+ /*}}}*/
+
+// Sources Index /*{{{*/
+debSourcesIndex::debSourcesIndex(IndexTarget const &Target,bool const Trusted) :
+ pkgDebianIndexTargetFile(Target, Trusted), d(NULL)
+{
+}
+std::string debSourcesIndex::SourceInfo(pkgSrcRecords::Parser const &Record,
+ pkgSrcRecords::File const &File) const
+{
+ // The result looks like: http://foo/debian/ stable/main src 1.1.1 (dsc)
+ std::string Res = Target.Description;
+ Res.erase(Target.Description.rfind(' '));
+
+ Res += " ";
+ Res += Record.Package();
+ Res += " ";
+ Res += Record.Version();
+ if (File.Type.empty() == false)
+ Res += " (" + File.Type + ")";
+ return Res;
+}
+pkgSrcRecords::Parser *debSourcesIndex::CreateSrcParser() const
+{
+ std::string const SourcesURI = IndexFileName();
+ if (FileExists(SourcesURI))
+ return new debSrcRecordParser(SourcesURI, this);
+ return NULL;
+}
+bool debSourcesIndex::OpenListFile(FileFd &, std::string const &)
+{
+ return true;
+}
+pkgCacheListParser * debSourcesIndex::CreateListParser(FileFd &)
+{
+ return NULL;
+}
+uint8_t debSourcesIndex::GetIndexFlags() const
+{
+ return 0;
+}
+ /*}}}*/
+// Packages Index /*{{{*/
+debPackagesIndex::debPackagesIndex(IndexTarget const &Target, bool const Trusted) :
+ pkgDebianIndexTargetFile(Target, Trusted), d(NULL)
+{
+}
+std::string debPackagesIndex::ArchiveInfo(pkgCache::VerIterator const &Ver) const
+{
+ std::string Res = Target.Description;
+ {
+ auto const space = Target.Description.rfind(' ');
+ if (space != std::string::npos)
+ Res.erase(space);
+ }
+
+ Res += " ";
+ Res += Ver.ParentPkg().Name();
+ Res += " ";
+ std::string const Dist = Target.Option(IndexTarget::RELEASE);
+ if (Dist.empty() == false && Dist[Dist.size() - 1] != '/')
+ Res.append(Ver.Arch()).append(" ");
+ Res += Ver.VerStr();
+ return Res;
+}
+uint8_t debPackagesIndex::GetIndexFlags() const
+{
+ return 0;
+}
+ /*}}}*/
+// Translation-* Index /*{{{*/
+debTranslationsIndex::debTranslationsIndex(IndexTarget const &Target) :
+ pkgDebianIndexTargetFile(Target, true), d(NULL)
+{}
+bool debTranslationsIndex::HasPackages() const
+{
+ return Exists();
+}
+bool debTranslationsIndex::OpenListFile(FileFd &Pkg, std::string const &FileName)
+{
+ if (FileExists(FileName))
+ return pkgDebianIndexTargetFile::OpenListFile(Pkg, FileName);
+ return true;
+}
+uint8_t debTranslationsIndex::GetIndexFlags() const
+{
+ return pkgCache::Flag::NotSource | pkgCache::Flag::NoPackages;
+}
+std::string debTranslationsIndex::GetArchitecture() const
+{
+ return std::string();
+}
+pkgCacheListParser * debTranslationsIndex::CreateListParser(FileFd &Pkg)
+{
+ if (Pkg.IsOpen() == false)
+ return nullptr;
+ _error->PushToStack();
+ pkgCacheListParser * const Parser = new debTranslationsParser(&Pkg);
+ bool const newError = _error->PendingError();
+ _error->MergeWithStack();
+ if (newError)
+ {
+ delete Parser;
+ return nullptr;
+ }
+ else
+ return Parser;
+}
+ /*}}}*/
+// dpkg/status Index /*{{{*/
+debStatusIndex::debStatusIndex(std::string const &File) : pkgDebianIndexRealFile(File, true), d(NULL)
+{
+}
+std::string debStatusIndex::GetArchitecture() const
+{
+ return std::string();
+}
+std::string debStatusIndex::GetComponent() const
+{
+ return "now";
+}
+uint8_t debStatusIndex::GetIndexFlags() const
+{
+ return pkgCache::Flag::NotSource;
+}
+
+pkgCacheListParser * debStatusIndex::CreateListParser(FileFd &Pkg)
+{
+ if (Pkg.IsOpen() == false)
+ return nullptr;
+ _error->PushToStack();
+ pkgCacheListParser * const Parser = new debStatusListParser(&Pkg);
+ bool const newError = _error->PendingError();
+ _error->MergeWithStack();
+ if (newError)
+ {
+ delete Parser;
+ return nullptr;
+ }
+ else
+ return Parser;
+}
+ /*}}}*/
+// DebPkgFile Index - a single .deb file as an index /*{{{*/
+debDebPkgFileIndex::debDebPkgFileIndex(std::string const &DebFile)
+ : pkgDebianIndexRealFile(DebFile, true), d(NULL), DebFile(DebFile)
+{
+}
+bool debDebPkgFileIndex::GetContent(std::ostream &content, std::string const &debfile)
+{
+ struct stat Buf;
+ if (stat(debfile.c_str(), &Buf) != 0)
+ return false;
+
+ // get the control data out of the deb file via dpkg-deb -I
+ std::string dpkg = _config->Find("Dir::Bin::dpkg","dpkg-deb");
+ std::vector<const char *> Args;
+ Args.push_back(dpkg.c_str());
+ Args.push_back("-I");
+ Args.push_back(debfile.c_str());
+ Args.push_back("control");
+ Args.push_back(NULL);
+ FileFd PipeFd;
+ pid_t Child;
+ if(Popen((const char**)&Args[0], PipeFd, Child, FileFd::ReadOnly) == false)
+ return _error->Error("Popen failed");
+
+ content << "Filename: " << debfile << "\n";
+ content << "Size: " << std::to_string(Buf.st_size) << "\n";
+ bool first_line_seen = false;
+ char buffer[1024];
+ do {
+ unsigned long long actual = 0;
+ if (PipeFd.Read(buffer, sizeof(buffer)-1, &actual) == false)
+ return _error->Errno("read", "Failed to read dpkg pipe");
+ if (actual == 0)
+ break;
+ buffer[actual] = '\0';
+ char const * b = buffer;
+ if (first_line_seen == false)
+ {
+ for (; *b != '\0' && (*b == '\n' || *b == '\r'); ++b)
+ /* skip over leading newlines */;
+ if (*b == '\0')
+ continue;
+ first_line_seen = true;
+ }
+ content << b;
+ } while(true);
+ ExecWait(Child, "Popen");
+
+ return true;
+}
+bool debDebPkgFileIndex::OpenListFile(FileFd &Pkg, std::string const &FileName)
+{
+ // write the control data to a tempfile
+ if (GetTempFile("deb-file-" + flNotDir(FileName), true, &Pkg) == NULL)
+ return false;
+ std::ostringstream content;
+ if (GetContent(content, FileName) == false)
+ return false;
+ std::string const contentstr = content.str();
+ if (contentstr.empty())
+ return true;
+ if (Pkg.Write(contentstr.c_str(), contentstr.length()) == false || Pkg.Seek(0) == false)
+ return false;
+ return true;
+}
+pkgCacheListParser * debDebPkgFileIndex::CreateListParser(FileFd &Pkg)
+{
+ if (Pkg.IsOpen() == false)
+ return nullptr;
+ _error->PushToStack();
+ pkgCacheListParser * const Parser = new debDebFileParser(&Pkg, DebFile);
+ bool const newError = _error->PendingError();
+ _error->MergeWithStack();
+ if (newError)
+ {
+ delete Parser;
+ return nullptr;
+ }
+ else
+ return Parser;
+}
+uint8_t debDebPkgFileIndex::GetIndexFlags() const
+{
+ return pkgCache::Flag::LocalSource;
+}
+std::string debDebPkgFileIndex::GetArchitecture() const
+{
+ return std::string();
+}
+std::string debDebPkgFileIndex::GetComponent() const
+{
+ return "local-deb";
+}
+pkgCache::PkgFileIterator debDebPkgFileIndex::FindInCache(pkgCache &Cache) const
+{
+ std::string const FileName = IndexFileName();
+ pkgCache::PkgFileIterator File = Cache.FileBegin();
+ for (; File.end() == false; ++File)
+ {
+ if (File.FileName() == NULL || FileName != File.FileName())
+ continue;
+ // we can't do size checks here as file size != content size
+ return File;
+ }
+
+ return File;
+}
+std::string debDebPkgFileIndex::ArchiveInfo_impl(pkgCache::VerIterator const &Ver) const
+{
+ std::string Res = IndexFileName() + " ";
+ Res.append(Ver.ParentPkg().Name()).append(" ");
+ Res.append(Ver.Arch()).append(" ");
+ Res.append(Ver.VerStr());
+ return Res;
+}
+ /*}}}*/
+// DscFile Index - a single .dsc file as an index /*{{{*/
+debDscFileIndex::debDscFileIndex(std::string const &DscFile)
+ : pkgDebianIndexRealFile(DscFile, true), d(NULL)
+{
+}
+pkgSrcRecords::Parser *debDscFileIndex::CreateSrcParser() const
+{
+ if (Exists() == false)
+ return NULL;
+ return new debDscRecordParser(File, this);
+}
+std::string debDscFileIndex::GetComponent() const
+{
+ return "local-dsc";
+}
+std::string debDscFileIndex::GetArchitecture() const
+{
+ return "source";
+}
+uint8_t debDscFileIndex::GetIndexFlags() const
+{
+ return pkgCache::Flag::LocalSource;
+}
+ /*}}}*/
+// ControlFile Index - a directory with a debian/control file /*{{{*/
+std::string debDebianSourceDirIndex::GetComponent() const
+{
+ return "local-control";
+}
+ /*}}}*/
+// String Package Index - a string of Packages file content /*{{{*/
+std::string debStringPackageIndex::GetArchitecture() const
+{
+ return std::string();
+}
+std::string debStringPackageIndex::GetComponent() const
+{
+ return "apt-tmp-index";
+}
+uint8_t debStringPackageIndex::GetIndexFlags() const
+{
+ return pkgCache::Flag::NotSource;
+}
+const pkgIndexFile::Type *debStringPackageIndex::GetType() const
+{
+ return pkgIndexFile::Type::GetType("Debian Package Index");
+}
+debStringPackageIndex::debStringPackageIndex(std::string const &content) :
+ pkgDebianIndexRealFile("", false), d(NULL)
+{
+ char fn[1024];
+ std::string const tempdir = GetTempDir();
+ snprintf(fn, sizeof(fn), "%s/%s.XXXXXX", tempdir.c_str(), "apt-tmp-index");
+ int const fd = mkstemp(fn);
+ File = fn;
+ FileFd::Write(fd, content.data(), content.length());
+ close(fd);
+}
+debStringPackageIndex::~debStringPackageIndex()
+{
+ RemoveFile("~debStringPackageIndex", File);
+}
+ /*}}}*/
+
+// Index File types for Debian /*{{{*/
+class APT_HIDDEN debIFTypeSrc : public pkgIndexFile::Type
+{
+ public:
+ debIFTypeSrc() {Label = "Debian Source Index";};
+};
+class APT_HIDDEN debIFTypePkg : public pkgIndexFile::Type
+{
+ public:
+ virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &File) const APT_OVERRIDE
+ {
+ return new debRecordParser(File.FileName(),*File.Cache());
+ };
+ debIFTypePkg() {Label = "Debian Package Index";};
+};
+class APT_HIDDEN debIFTypeTrans : public debIFTypePkg
+{
+ public:
+ debIFTypeTrans() {Label = "Debian Translation Index";};
+};
+class APT_HIDDEN debIFTypeStatus : public pkgIndexFile::Type
+{
+ public:
+ virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &File) const APT_OVERRIDE
+ {
+ return new debRecordParser(File.FileName(),*File.Cache());
+ };
+ debIFTypeStatus() {Label = "Debian dpkg status file";};
+};
+class APT_HIDDEN debIFTypeDebPkgFile : public pkgIndexFile::Type
+{
+ public:
+ virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &File) const APT_OVERRIDE
+ {
+ return new debDebFileRecordParser(File.FileName());
+ };
+ debIFTypeDebPkgFile() {Label = "Debian deb file";};
+};
+class APT_HIDDEN debIFTypeDscFile : public pkgIndexFile::Type
+{
+ public:
+ virtual pkgSrcRecords::Parser *CreateSrcPkgParser(std::string const &DscFile) const APT_OVERRIDE
+ {
+ return new debDscRecordParser(DscFile, NULL);
+ };
+ debIFTypeDscFile() {Label = "Debian dsc file";};
+};
+class APT_HIDDEN debIFTypeDebianSourceDir : public pkgIndexFile::Type
+{
+ public:
+ virtual pkgSrcRecords::Parser *CreateSrcPkgParser(std::string const &SourceDir) const APT_OVERRIDE
+ {
+ return new debDscRecordParser(SourceDir + std::string("/debian/control"), NULL);
+ };
+ debIFTypeDebianSourceDir() {Label = "Debian control file";};
+};
+
+APT_HIDDEN debIFTypeSrc _apt_Src;
+APT_HIDDEN debIFTypePkg _apt_Pkg;
+APT_HIDDEN debIFTypeTrans _apt_Trans;
+APT_HIDDEN debIFTypeStatus _apt_Status;
+APT_HIDDEN debIFTypeDebPkgFile _apt_DebPkgFile;
+// file based pseudo indexes
+APT_HIDDEN debIFTypeDscFile _apt_DscFile;
+APT_HIDDEN debIFTypeDebianSourceDir _apt_DebianSourceDir;
+
+const pkgIndexFile::Type *debSourcesIndex::GetType() const
+{
+ return &_apt_Src;
+}
+const pkgIndexFile::Type *debPackagesIndex::GetType() const
+{
+ return &_apt_Pkg;
+}
+const pkgIndexFile::Type *debTranslationsIndex::GetType() const
+{
+ return &_apt_Trans;
+}
+const pkgIndexFile::Type *debStatusIndex::GetType() const
+{
+ return &_apt_Status;
+}
+const pkgIndexFile::Type *debDebPkgFileIndex::GetType() const
+{
+ return &_apt_DebPkgFile;
+}
+const pkgIndexFile::Type *debDscFileIndex::GetType() const
+{
+ return &_apt_DscFile;
+}
+const pkgIndexFile::Type *debDebianSourceDirIndex::GetType() const
+{
+ return &_apt_DebianSourceDir;
+}
+ /*}}}*/
+
+debStatusIndex::~debStatusIndex() {}
+debPackagesIndex::~debPackagesIndex() {}
+debTranslationsIndex::~debTranslationsIndex() {}
+debSourcesIndex::~debSourcesIndex() {}
+
+debDebPkgFileIndex::~debDebPkgFileIndex() {}
+debDscFileIndex::~debDscFileIndex() {}
diff --git a/apt-pkg/deb/debindexfile.h b/apt-pkg/deb/debindexfile.h
new file mode 100644
index 000000000..3652f631c
--- /dev/null
+++ b/apt-pkg/deb/debindexfile.h
@@ -0,0 +1,198 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Debian Index Files
+
+ There are three sorts currently
+
+ Package files that have File: tags
+ Package files that don't (/var/lib/dpkg/status)
+ Source files
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_DEBINDEXFILE_H
+#define PKGLIB_DEBINDEXFILE_H
+
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/srcrecords.h>
+
+#include <string>
+
+class OpProgress;
+class pkgAcquire;
+class pkgCacheGenerator;
+
+class debStatusIndex : public pkgDebianIndexRealFile
+{
+ void * const d;
+protected:
+ virtual std::string GetArchitecture() const APT_OVERRIDE;
+ virtual std::string GetComponent() const APT_OVERRIDE;
+ virtual uint8_t GetIndexFlags() const APT_OVERRIDE;
+
+public:
+
+ virtual const Type *GetType() const APT_OVERRIDE APT_CONST;
+
+ // Interface for the Cache Generator
+ virtual bool HasPackages() const APT_OVERRIDE {return true;};
+ // Abort if the file does not exist.
+ virtual bool Exists() const APT_OVERRIDE {return true;};
+
+ virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE;
+
+ debStatusIndex(std::string const &File);
+ virtual ~debStatusIndex();
+};
+
+class debPackagesIndex : public pkgDebianIndexTargetFile
+{
+ void * const d;
+protected:
+ virtual uint8_t GetIndexFlags() const APT_OVERRIDE;
+
+public:
+ virtual const Type *GetType() const APT_OVERRIDE APT_CONST;
+
+ // Stuff for accessing files on remote items
+ virtual std::string ArchiveInfo(pkgCache::VerIterator const &Ver) const APT_OVERRIDE;
+
+ // Interface for the Cache Generator
+ virtual bool HasPackages() const APT_OVERRIDE {return true;};
+
+ debPackagesIndex(IndexTarget const &Target, bool const Trusted);
+ virtual ~debPackagesIndex();
+};
+
+class debTranslationsIndex : public pkgDebianIndexTargetFile
+{
+ void * const d;
+protected:
+ virtual std::string GetArchitecture() const APT_OVERRIDE;
+ virtual uint8_t GetIndexFlags() const APT_OVERRIDE;
+ virtual bool OpenListFile(FileFd &Pkg, std::string const &FileName) APT_OVERRIDE;
+ APT_HIDDEN virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE;
+
+public:
+
+ virtual const Type *GetType() const APT_OVERRIDE APT_CONST;
+
+ // Interface for the Cache Generator
+ virtual bool HasPackages() const APT_OVERRIDE;
+
+ debTranslationsIndex(IndexTarget const &Target);
+ virtual ~debTranslationsIndex();
+};
+
+class debSourcesIndex : public pkgDebianIndexTargetFile
+{
+ void * const d;
+ virtual uint8_t GetIndexFlags() const APT_OVERRIDE;
+ virtual bool OpenListFile(FileFd &Pkg, std::string const &FileName) APT_OVERRIDE;
+ APT_HIDDEN virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE;
+
+ public:
+
+ virtual const Type *GetType() const APT_OVERRIDE APT_CONST;
+
+ // Stuff for accessing files on remote items
+ virtual std::string SourceInfo(pkgSrcRecords::Parser const &Record,
+ pkgSrcRecords::File const &File) const APT_OVERRIDE;
+
+ // Interface for the record parsers
+ virtual pkgSrcRecords::Parser *CreateSrcParser() const APT_OVERRIDE;
+
+ // Interface for the Cache Generator
+ virtual bool HasPackages() const APT_OVERRIDE {return false;};
+
+ debSourcesIndex(IndexTarget const &Target, bool const Trusted);
+ virtual ~debSourcesIndex();
+};
+
+class debDebPkgFileIndex : public pkgDebianIndexRealFile
+{
+ void * const d;
+ std::string DebFile;
+
+protected:
+ virtual std::string GetComponent() const APT_OVERRIDE;
+ virtual std::string GetArchitecture() const APT_OVERRIDE;
+ virtual uint8_t GetIndexFlags() const APT_OVERRIDE;
+ virtual bool OpenListFile(FileFd &Pkg, std::string const &FileName) APT_OVERRIDE;
+ APT_HIDDEN virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE;
+
+public:
+ virtual const Type *GetType() const APT_OVERRIDE APT_CONST;
+
+ /** get the control (file) content of the deb file
+ *
+ * @param[out] content of the control file
+ * @param debfile is the filename of the .deb-file
+ * @return \b true if successful, otherwise \b false.
+ */
+ static bool GetContent(std::ostream &content, std::string const &debfile);
+
+ // Interface for the Cache Generator
+ virtual bool HasPackages() const APT_OVERRIDE {return true;}
+ virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const APT_OVERRIDE;
+
+ // Interface for acquire
+
+ debDebPkgFileIndex(std::string const &DebFile);
+ virtual ~debDebPkgFileIndex();
+
+ //FIXME: use proper virtual-handling on next ABI break
+ APT_HIDDEN std::string ArchiveInfo_impl(pkgCache::VerIterator const &Ver) const;
+};
+
+class debDscFileIndex : public pkgDebianIndexRealFile
+{
+ void * const d;
+
+protected:
+ virtual std::string GetComponent() const APT_OVERRIDE;
+ virtual std::string GetArchitecture() const APT_OVERRIDE;
+ virtual uint8_t GetIndexFlags() const APT_OVERRIDE;
+
+public:
+ virtual const Type *GetType() const APT_OVERRIDE APT_CONST;
+ virtual pkgSrcRecords::Parser *CreateSrcParser() const APT_OVERRIDE;
+ virtual bool HasPackages() const APT_OVERRIDE {return false;};
+
+ debDscFileIndex(std::string const &DscFile);
+ virtual ~debDscFileIndex();
+};
+
+class debDebianSourceDirIndex : public debDscFileIndex
+{
+protected:
+ virtual std::string GetComponent() const APT_OVERRIDE;
+
+public:
+ virtual const Type *GetType() const APT_OVERRIDE APT_CONST;
+};
+
+class debStringPackageIndex : public pkgDebianIndexRealFile
+{
+ void * const d;
+protected:
+ virtual std::string GetArchitecture() const APT_OVERRIDE;
+ virtual std::string GetComponent() const APT_OVERRIDE;
+ virtual uint8_t GetIndexFlags() const APT_OVERRIDE;
+
+public:
+ virtual const Type *GetType() const APT_OVERRIDE APT_CONST;
+
+ // Interface for the Cache Generator
+ virtual bool HasPackages() const APT_OVERRIDE {return true;};
+ // Abort if the file does not exist.
+ virtual bool Exists() const APT_OVERRIDE {return true;};
+
+ debStringPackageIndex(std::string const &content);
+ virtual ~debStringPackageIndex();
+};
+#endif
diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc
new file mode 100644
index 000000000..4e61f0fc2
--- /dev/null
+++ b/apt-pkg/deb/deblistparser.cc
@@ -0,0 +1,1063 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: deblistparser.cc,v 1.29.2.5 2004/01/06 01:43:44 mdz Exp $
+/* ######################################################################
+
+ Package Cache Generator - Generator for the cache structure.
+
+ This builds the cache structure from the abstract package list parser.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/deblistparser.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/cachefilter.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/crc-16.h>
+#include <apt-pkg/md5.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/tagfile-keys.h>
+#include <apt-pkg/macros.h>
+
+#include <stddef.h>
+#include <string.h>
+#include <algorithm>
+#include <string>
+#include <vector>
+#include <ctype.h>
+ /*}}}*/
+
+using std::string;
+using APT::StringView;
+
+static const debListParser::WordList PrioList[] = {
+ {"required",pkgCache::State::Required},
+ {"important",pkgCache::State::Important},
+ {"standard",pkgCache::State::Standard},
+ {"optional",pkgCache::State::Optional},
+ {"extra",pkgCache::State::Extra},
+ {"", 0}};
+
+// ListParser::debListParser - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* Provide an architecture and only this one and "all" will be accepted
+ in Step(), if no Architecture is given we will accept every arch
+ we would accept in general with checkArchitecture() */
+debListParser::debListParser(FileFd *File) :
+ pkgCacheListParser(), Tags(File)
+{
+ // this dance allows an empty value to override the default
+ if (_config->Exists("pkgCacheGen::ForceEssential"))
+ {
+ forceEssential = _config->FindVector("pkgCacheGen::ForceEssential");
+ if (forceEssential.empty() == false && _config->Find("pkgCacheGen::ForceEssential").empty())
+ forceEssential.emplace_back("apt");
+ }
+ else
+ forceEssential.emplace_back("apt");
+ forceImportant = _config->FindVector("pkgCacheGen::ForceImportant");
+}
+ /*}}}*/
+// ListParser::Package - Return the package name /*{{{*/
+// ---------------------------------------------------------------------
+/* This is to return the name of the package this section describes */
+string debListParser::Package() {
+ string Result = Section.Find(pkgTagSection::Key::Package).to_string();
+
+ // Normalize mixed case package names to lower case, like dpkg does
+ // See Bug#807012 for details.
+ // Only do this when the package name does not contain a / - as that
+ // indicates that the package name was derived from a filename given
+ // to install or build-dep or similar (Bug#854794)
+ if (likely(Result.find('/') == string::npos))
+ {
+ for (char &c: Result)
+ {
+ char l = tolower_ascii_inline(c);
+ if (unlikely(l != c))
+ c = l;
+ }
+ }
+
+ if(unlikely(Result.empty() == true))
+ _error->Error("Encountered a section with no Package: header");
+ return Result;
+}
+ /*}}}*/
+// ListParser::Architecture - Return the package arch /*{{{*/
+// ---------------------------------------------------------------------
+/* This will return the Architecture of the package this section describes */
+APT::StringView debListParser::Architecture() {
+ auto const Arch = Section.Find(pkgTagSection::Key::Architecture);
+ return Arch.empty() ? "none" : Arch;
+}
+ /*}}}*/
+// ListParser::ArchitectureAll /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool debListParser::ArchitectureAll() {
+ return Section.Find(pkgTagSection::Key::Architecture) == "all";
+}
+ /*}}}*/
+// ListParser::Version - Return the version string /*{{{*/
+// ---------------------------------------------------------------------
+/* This is to return the string describing the version in debian form,
+ epoch:upstream-release. If this returns the blank string then the
+ entry is assumed to only describe package properties */
+APT::StringView debListParser::Version()
+{
+ return Section.Find(pkgTagSection::Key::Version);
+}
+ /*}}}*/
+unsigned char debListParser::ParseMultiArch(bool const showErrors) /*{{{*/
+{
+ unsigned char MA;
+ auto const MultiArch = Section.Find(pkgTagSection::Key::Multi_Arch);
+ if (MultiArch.empty() == true || MultiArch == "no")
+ MA = pkgCache::Version::No;
+ else if (MultiArch == "same") {
+ if (ArchitectureAll() == true)
+ {
+ if (showErrors == true)
+ _error->Warning("Architecture: all package '%s' can't be Multi-Arch: same",
+ Section.FindS("Package").c_str());
+ MA = pkgCache::Version::No;
+ }
+ else
+ MA = pkgCache::Version::Same;
+ }
+ else if (MultiArch == "foreign")
+ MA = pkgCache::Version::Foreign;
+ else if (MultiArch == "allowed")
+ MA = pkgCache::Version::Allowed;
+ else
+ {
+ if (showErrors == true)
+ _error->Warning("Unknown Multi-Arch type '%s' for package '%s'",
+ MultiArch.to_string().c_str(), Section.FindS("Package").c_str());
+ MA = pkgCache::Version::No;
+ }
+
+ if (ArchitectureAll() == true)
+ MA |= pkgCache::Version::All;
+
+ return MA;
+}
+ /*}}}*/
+// ListParser::NewVersion - Fill in the version structure /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool debListParser::NewVersion(pkgCache::VerIterator &Ver)
+{
+ const char *Start;
+ const char *Stop;
+
+ // Parse the section
+ if (Section.Find(pkgTagSection::Key::Section,Start,Stop) == true)
+ {
+ map_stringitem_t const idx = StoreString(pkgCacheGenerator::SECTION, Start, Stop - Start);
+ Ver->Section = idx;
+ }
+ // Parse the source package name
+ pkgCache::GrpIterator G = Ver.ParentPkg().Group();
+ Ver->SourcePkgName = G->Name;
+ Ver->SourceVerStr = Ver->VerStr;
+ if (Section.Find(pkgTagSection::Key::Source,Start,Stop) == true)
+ {
+ const char * const Space = (const char * const) memchr(Start, ' ', Stop - Start);
+ pkgCache::VerIterator V;
+
+ if (Space != NULL)
+ {
+ const char * const Open = (const char * const) memchr(Space, '(', Stop - Space);
+ if (likely(Open != NULL))
+ {
+ const char * const Close = (const char * const) memchr(Open, ')', Stop - Open);
+ if (likely(Close != NULL))
+ {
+ APT::StringView const version(Open + 1, (Close - Open) - 1);
+ if (version != Ver.VerStr())
+ {
+ map_stringitem_t const idx = StoreString(pkgCacheGenerator::VERSIONNUMBER, version);
+ G = Ver.ParentPkg().Group();
+ Ver->SourceVerStr = idx;
+ }
+ }
+ }
+ Stop = Space;
+ }
+
+ APT::StringView const pkgname(Start, Stop - Start);
+ if (pkgname != G.Name())
+ {
+ for (pkgCache::PkgIterator P = G.PackageList(); P.end() == false; P = G.NextPkg(P))
+ {
+ for (V = P.VersionList(); V.end() == false; ++V)
+ {
+ if (pkgname == V.SourcePkgName())
+ {
+ Ver->SourcePkgName = V->SourcePkgName;
+ break;
+ }
+ }
+ if (V.end() == false)
+ break;
+ }
+ if (V.end() == true)
+ {
+ map_stringitem_t const idx = StoreString(pkgCacheGenerator::PKGNAME, pkgname);
+ G = Ver.ParentPkg().Group();
+ Ver->SourcePkgName = idx;
+ }
+ }
+ }
+
+ Ver->MultiArch = ParseMultiArch(true);
+ // Archive Size
+ Ver->Size = Section.FindULL(pkgTagSection::Key::Size);
+ // Unpacked Size (in K)
+ Ver->InstalledSize = Section.FindULL(pkgTagSection::Key::Installed_Size);
+ Ver->InstalledSize *= 1024;
+
+ // Priority
+ if (Section.Find(pkgTagSection::Key::Priority,Start,Stop) == true)
+ {
+ if (GrabWord(StringView(Start,Stop-Start),PrioList,Ver->Priority) == false)
+ Ver->Priority = pkgCache::State::Extra;
+ }
+
+ if (ParseDepends(Ver,pkgTagSection::Key::Pre_Depends,pkgCache::Dep::PreDepends) == false)
+ return false;
+ if (ParseDepends(Ver,pkgTagSection::Key::Depends,pkgCache::Dep::Depends) == false)
+ return false;
+ if (ParseDepends(Ver,pkgTagSection::Key::Conflicts,pkgCache::Dep::Conflicts) == false)
+ return false;
+ if (ParseDepends(Ver,pkgTagSection::Key::Breaks,pkgCache::Dep::DpkgBreaks) == false)
+ return false;
+ if (ParseDepends(Ver,pkgTagSection::Key::Recommends,pkgCache::Dep::Recommends) == false)
+ return false;
+ if (ParseDepends(Ver,pkgTagSection::Key::Suggests,pkgCache::Dep::Suggests) == false)
+ return false;
+ if (ParseDepends(Ver,pkgTagSection::Key::Replaces,pkgCache::Dep::Replaces) == false)
+ return false;
+ if (ParseDepends(Ver,pkgTagSection::Key::Enhances,pkgCache::Dep::Enhances) == false)
+ return false;
+ // Obsolete.
+ if (ParseDepends(Ver,pkgTagSection::Key::Optional,pkgCache::Dep::Suggests) == false)
+ return false;
+
+ if (ParseProvides(Ver) == false)
+ return false;
+
+ return true;
+}
+ /*}}}*/
+// ListParser::AvailableDescriptionLanguages /*{{{*/
+std::vector<std::string> debListParser::AvailableDescriptionLanguages()
+{
+ std::vector<std::string> const understood = APT::Configuration::getLanguages();
+ std::vector<std::string> avail;
+ static constexpr int prefixLen = 12;
+ char buf[32] = "Description-";
+ if (Section.Exists("Description") == true)
+ avail.push_back("");
+ for (std::vector<std::string>::const_iterator lang = understood.begin(); lang != understood.end(); ++lang)
+ {
+ if (unlikely(lang->size() > sizeof(buf) - prefixLen)) {
+ _error->Warning("Ignoring translated description %s", lang->c_str());
+ continue;
+ }
+ memcpy(buf + prefixLen, lang->c_str(), lang->size());
+ if (Section.Exists(StringView(buf, prefixLen + lang->size())) == true)
+ avail.push_back(*lang);
+ }
+ return avail;
+}
+ /*}}}*/
+// ListParser::Description_md5 - Return the description_md5 MD5SumValue /*{{{*/
+// ---------------------------------------------------------------------
+/* This is to return the md5 string to allow the check if it is the right
+ description. If no Description-md5 is found in the section it will be
+ calculated.
+ */
+APT::StringView debListParser::Description_md5()
+{
+ StringView const value = Section.Find(pkgTagSection::Key::Description_md5);
+ if (unlikely(value.empty() == true))
+ {
+ StringView const desc = Section.Find(pkgTagSection::Key::Description);
+ if (desc == "\n")
+ return StringView();
+
+ MD5Summation md5;
+ md5.Add(desc.data(), desc.size());
+ md5.Add("\n");
+ MD5Buffer = md5.Result();
+ return StringView(MD5Buffer);
+ }
+ else if (likely(value.size() == 32))
+ {
+ return value;
+ }
+ _error->Error("Malformed Description-md5 line; doesn't have the required length (32 != %d) '%.*s'", (int)value.size(), (int)value.length(), value.data());
+ return StringView();
+}
+ /*}}}*/
+// ListParser::UsePackage - Update a package structure /*{{{*/
+// ---------------------------------------------------------------------
+/* This is called to update the package with any new information
+ that might be found in the section */
+bool debListParser::UsePackage(pkgCache::PkgIterator &Pkg,
+ pkgCache::VerIterator &Ver)
+{
+ string const static myArch = _config->Find("APT::Architecture");
+ // Possible values are: "all", "native", "installed" and "none"
+ // The "installed" mode is handled by ParseStatus(), See #544481 and friends.
+ string const static essential = _config->Find("pkgCacheGen::Essential", "all");
+ if (essential == "all" ||
+ (essential == "native" && Pkg->Arch != 0 && myArch == Pkg.Arch()))
+ if (Section.FindFlag(pkgTagSection::Key::Essential,Pkg->Flags,pkgCache::Flag::Essential) == false)
+ return false;
+ if (Section.FindFlag(pkgTagSection::Key::Important,Pkg->Flags,pkgCache::Flag::Important) == false)
+ return false;
+
+ if (std::find(forceEssential.begin(), forceEssential.end(), Pkg.Name()) != forceEssential.end())
+ {
+ if ((essential == "native" && Pkg->Arch != 0 && myArch == Pkg.Arch()) ||
+ essential == "all")
+ Pkg->Flags |= pkgCache::Flag::Essential | pkgCache::Flag::Important;
+ else
+ Pkg->Flags |= pkgCache::Flag::Important;
+ }
+ else if (std::find(forceImportant.begin(), forceImportant.end(), Pkg.Name()) != forceImportant.end())
+ Pkg->Flags |= pkgCache::Flag::Important;
+
+ if (ParseStatus(Pkg,Ver) == false)
+ return false;
+ return true;
+}
+ /*}}}*/
+// ListParser::VersionHash - Compute a unique hash for this version /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+unsigned short debListParser::VersionHash()
+{
+ static constexpr pkgTagSection::Key Sections[] ={
+ pkgTagSection::Key::Installed_Size,
+ pkgTagSection::Key::Depends,
+ pkgTagSection::Key::Pre_Depends,
+// pkgTagSection::Key::Suggests,
+// pkgTagSection::Key::Recommends",
+ pkgTagSection::Key::Conflicts,
+ pkgTagSection::Key::Breaks,
+ pkgTagSection::Key::Replaces};
+ unsigned long Result = INIT_FCS;
+ for (auto I : Sections)
+ {
+ const char *Start;
+ const char *End;
+ if (Section.Find(I,Start,End) == false)
+ continue;
+
+ /* Strip out any spaces from the text, this undoes dpkgs reformatting
+ of certain fields. dpkg also has the rather interesting notion of
+ reformatting depends operators < -> <=, so we drop all = from the
+ string to make that not matter. */
+ for (; Start != End; ++Start)
+ {
+ if (isspace_ascii(*Start) != 0 || *Start == '=')
+ continue;
+ Result = AddCRC16Byte(Result, tolower_ascii_unsafe(*Start));
+ }
+
+
+ }
+
+ return Result;
+}
+ /*}}}*/
+// StatusListParser::ParseStatus - Parse the status field /*{{{*/
+// ---------------------------------------------------------------------
+/* Status lines are of the form,
+ Status: want flag status
+ want = unknown, install, hold, deinstall, purge
+ flag = ok, reinstreq
+ status = not-installed, config-files, half-installed, unpacked,
+ half-configured, triggers-awaited, triggers-pending, installed
+ */
+bool debListParser::ParseStatus(pkgCache::PkgIterator &,
+ pkgCache::VerIterator &)
+{
+ return true;
+}
+bool debStatusListParser::ParseStatus(pkgCache::PkgIterator &Pkg,
+ pkgCache::VerIterator &Ver)
+{
+ const char *Start;
+ const char *Stop;
+ if (Section.Find(pkgTagSection::Key::Status,Start,Stop) == false)
+ return true;
+
+ // UsePackage() is responsible for setting the flag in the default case
+ bool const static essential = _config->Find("pkgCacheGen::Essential", "") == "installed";
+ if (essential == true &&
+ Section.FindFlag(pkgTagSection::Key::Essential,Pkg->Flags,pkgCache::Flag::Essential) == false)
+ return false;
+
+ // Isolate the first word
+ const char *I = Start;
+ for(; I < Stop && *I != ' '; I++);
+ if (I >= Stop || *I != ' ')
+ return _error->Error("Malformed Status line");
+
+ // Process the want field
+ WordList WantList[] = {{"unknown",pkgCache::State::Unknown},
+ {"install",pkgCache::State::Install},
+ {"hold",pkgCache::State::Hold},
+ {"deinstall",pkgCache::State::DeInstall},
+ {"purge",pkgCache::State::Purge},
+ {"", 0}};
+ if (GrabWord(StringView(Start,I-Start),WantList,Pkg->SelectedState) == false)
+ return _error->Error("Malformed 1st word in the Status line");
+
+ // Isloate the next word
+ I++;
+ Start = I;
+ for(; I < Stop && *I != ' '; I++);
+ if (I >= Stop || *I != ' ')
+ return _error->Error("Malformed status line, no 2nd word");
+
+ // Process the flag field
+ WordList FlagList[] = {{"ok",pkgCache::State::Ok},
+ {"reinstreq",pkgCache::State::ReInstReq},
+ {"hold",pkgCache::State::HoldInst},
+ {"hold-reinstreq",pkgCache::State::HoldReInstReq},
+ {"", 0}};
+ if (GrabWord(StringView(Start,I-Start),FlagList,Pkg->InstState) == false)
+ return _error->Error("Malformed 2nd word in the Status line");
+
+ // Isloate the last word
+ I++;
+ Start = I;
+ for(; I < Stop && *I != ' '; I++);
+ if (I != Stop)
+ return _error->Error("Malformed Status line, no 3rd word");
+
+ // Process the flag field
+ WordList StatusList[] = {{"not-installed",pkgCache::State::NotInstalled},
+ {"config-files",pkgCache::State::ConfigFiles},
+ {"half-installed",pkgCache::State::HalfInstalled},
+ {"unpacked",pkgCache::State::UnPacked},
+ {"half-configured",pkgCache::State::HalfConfigured},
+ {"triggers-awaited",pkgCache::State::TriggersAwaited},
+ {"triggers-pending",pkgCache::State::TriggersPending},
+ {"installed",pkgCache::State::Installed},
+ {"", 0}};
+ if (GrabWord(StringView(Start,I-Start),StatusList,Pkg->CurrentState) == false)
+ return _error->Error("Malformed 3rd word in the Status line");
+
+ /* A Status line marks the package as indicating the current
+ version as well. Only if it is actually installed.. Otherwise
+ the interesting dpkg handling of the status file creates bogus
+ entries. */
+ if (!(Pkg->CurrentState == pkgCache::State::NotInstalled ||
+ Pkg->CurrentState == pkgCache::State::ConfigFiles))
+ {
+ if (Ver.end() == true)
+ _error->Warning("Encountered status field in a non-version description");
+ else
+ Pkg->CurrentVer = Ver.Index();
+ }
+
+ return true;
+}
+
+const char *debListParser::ConvertRelation(const char *I,unsigned int &Op)
+{
+ // Determine the operator
+ switch (*I)
+ {
+ case '<':
+ I++;
+ if (*I == '=')
+ {
+ I++;
+ Op = pkgCache::Dep::LessEq;
+ break;
+ }
+
+ if (*I == '<')
+ {
+ I++;
+ Op = pkgCache::Dep::Less;
+ break;
+ }
+
+ // < is the same as <= and << is really Cs < for some reason
+ Op = pkgCache::Dep::LessEq;
+ break;
+
+ case '>':
+ I++;
+ if (*I == '=')
+ {
+ I++;
+ Op = pkgCache::Dep::GreaterEq;
+ break;
+ }
+
+ if (*I == '>')
+ {
+ I++;
+ Op = pkgCache::Dep::Greater;
+ break;
+ }
+
+ // > is the same as >= and >> is really Cs > for some reason
+ Op = pkgCache::Dep::GreaterEq;
+ break;
+
+ case '=':
+ Op = pkgCache::Dep::Equals;
+ I++;
+ break;
+
+ // HACK around bad package definitions
+ default:
+ Op = pkgCache::Dep::Equals;
+ break;
+ }
+ return I;
+}
+ /*}}}*/
+// ListParser::ParseDepends - Parse a dependency element /*{{{*/
+// ---------------------------------------------------------------------
+/* This parses the dependency elements out of a standard string in place,
+ bit by bit. */
+const char *debListParser::ParseDepends(const char *Start,const char *Stop,
+ std::string &Package,std::string &Ver,unsigned int &Op)
+ { return ParseDepends(Start, Stop, Package, Ver, Op, false, true, false); }
+const char *debListParser::ParseDepends(const char *Start,const char *Stop,
+ std::string &Package,std::string &Ver,unsigned int &Op,
+ bool const &ParseArchFlags)
+ { return ParseDepends(Start, Stop, Package, Ver, Op, ParseArchFlags, true, false); }
+const char *debListParser::ParseDepends(const char *Start,const char *Stop,
+ std::string &Package,std::string &Ver,unsigned int &Op,
+ bool const &ParseArchFlags, bool const &StripMultiArch)
+ { return ParseDepends(Start, Stop, Package, Ver, Op, ParseArchFlags, StripMultiArch, false); }
+const char *debListParser::ParseDepends(const char *Start,const char *Stop,
+ string &Package,string &Ver,
+ unsigned int &Op, bool const &ParseArchFlags,
+ bool const &StripMultiArch,
+ bool const &ParseRestrictionsList)
+{
+ return debListParser::ParseDepends(Start, Stop, Package, Ver, Op, ParseArchFlags,
+ StripMultiArch, ParseRestrictionsList,
+ _config->Find("APT::Architecture"));
+}
+
+const char *debListParser::ParseDepends(const char *Start,const char *Stop,
+ string &Package,string &Ver,
+ unsigned int &Op, bool const &ParseArchFlags,
+ bool const &StripMultiArch,
+ bool const &ParseRestrictionsList,
+ string const &Arch)
+{
+ StringView PackageView;
+ StringView VerView;
+
+ auto res = ParseDepends(Start, Stop, PackageView, VerView, Op, (bool)ParseArchFlags,
+ (bool) StripMultiArch, (bool) ParseRestrictionsList, Arch);
+ Package = PackageView.to_string();
+ Ver = VerView.to_string();
+
+ return res;
+}
+const char *debListParser::ParseDepends(const char *Start,const char *Stop,
+ StringView &Package,StringView &Ver,
+ unsigned int &Op, bool ParseArchFlags,
+ bool StripMultiArch,
+ bool ParseRestrictionsList)
+{
+ return debListParser::ParseDepends(Start, Stop, Package, Ver, Op, ParseArchFlags,
+ StripMultiArch, ParseRestrictionsList,
+ _config->Find("APT::Architecture"));
+}
+
+const char *debListParser::ParseDepends(const char *Start,const char *Stop,
+ StringView &Package,StringView &Ver,
+ unsigned int &Op, bool ParseArchFlags,
+ bool StripMultiArch,
+ bool ParseRestrictionsList, string const &Arch)
+{
+ // Strip off leading space
+ for (;Start != Stop && isspace_ascii(*Start) != 0; ++Start);
+
+ // Parse off the package name
+ const char *I = Start;
+ for (;I != Stop && isspace_ascii(*I) == 0 && *I != '(' && *I != ')' &&
+ *I != ',' && *I != '|' && *I != '[' && *I != ']' &&
+ *I != '<' && *I != '>'; ++I);
+
+ // Malformed, no '('
+ if (I != Stop && *I == ')')
+ return 0;
+
+ if (I == Start)
+ return 0;
+
+ // Stash the package name
+ Package = StringView(Start, I - Start);
+
+ // We don't want to confuse library users which can't handle MultiArch
+ if (StripMultiArch == true) {
+ string const arch = _config->Find("APT::Architecture");
+ size_t const found = Package.rfind(':');
+ if (found != StringView::npos &&
+ (Package.substr(found) == ":any" ||
+ Package.substr(found) == ":native" ||
+ Package.substr(found +1) == arch))
+ Package = Package.substr(0,found);
+ }
+
+ // Skip white space to the '('
+ for (;I != Stop && isspace_ascii(*I) != 0 ; I++);
+
+ // Parse a version
+ if (I != Stop && *I == '(')
+ {
+ // Skip the '('
+ for (I++; I != Stop && isspace_ascii(*I) != 0 ; I++);
+ if (I + 3 >= Stop)
+ return 0;
+ I = ConvertRelation(I,Op);
+
+ // Skip whitespace
+ for (;I != Stop && isspace_ascii(*I) != 0; I++);
+ Start = I;
+ I = (const char*) memchr(I, ')', Stop - I);
+ if (I == NULL || Start == I)
+ return 0;
+
+ // Skip trailing whitespace
+ const char *End = I;
+ for (; End > Start && isspace_ascii(End[-1]); End--);
+
+ Ver = StringView(Start,End-Start);
+ I++;
+ }
+ else
+ {
+ Ver = StringView();
+ Op = pkgCache::Dep::NoOp;
+ }
+
+ // Skip whitespace
+ for (;I != Stop && isspace_ascii(*I) != 0; I++);
+
+ if (unlikely(ParseArchFlags == true))
+ {
+ APT::CacheFilter::PackageArchitectureMatchesSpecification matchesArch(Arch, false);
+
+ // Parse an architecture
+ if (I != Stop && *I == '[')
+ {
+ ++I;
+ // malformed
+ if (unlikely(I == Stop))
+ return 0;
+
+ const char *End = I;
+ bool Found = false;
+ bool NegArch = false;
+ while (I != Stop)
+ {
+ // look for whitespace or ending ']'
+ for (;End != Stop && !isspace_ascii(*End) && *End != ']'; ++End);
+
+ if (unlikely(End == Stop))
+ return 0;
+
+ if (*I == '!')
+ {
+ NegArch = true;
+ ++I;
+ }
+
+ std::string const arch(I, End);
+ if (arch.empty() == false && matchesArch(arch.c_str()) == true)
+ {
+ Found = true;
+ if (I[-1] != '!')
+ NegArch = false;
+ // we found a match, so fast-forward to the end of the wildcards
+ for (; End != Stop && *End != ']'; ++End);
+ }
+
+ if (*End++ == ']') {
+ I = End;
+ break;
+ }
+
+ I = End;
+ for (;I != Stop && isspace_ascii(*I) != 0; I++);
+ }
+
+ if (NegArch == true)
+ Found = !Found;
+
+ if (Found == false)
+ Package = ""; /* not for this arch */
+ }
+
+ // Skip whitespace
+ for (;I != Stop && isspace_ascii(*I) != 0; I++);
+ }
+
+ if (unlikely(ParseRestrictionsList == true))
+ {
+ // Parse a restrictions formula which is in disjunctive normal form:
+ // (foo AND bar) OR (blub AND bla)
+
+ std::vector<string> const profiles = APT::Configuration::getBuildProfiles();
+
+ // if the next character is a restriction list, then by default the
+ // dependency does not apply and the conditions have to be checked
+ // if the next character is not a restriction list, then by default the
+ // dependency applies
+ bool applies1 = (*I != '<');
+ while (I != Stop)
+ {
+ if (*I != '<')
+ break;
+
+ ++I;
+ // malformed
+ if (unlikely(I == Stop))
+ return 0;
+
+ const char *End = I;
+
+ // if of the prior restriction list is already fulfilled, then
+ // we can just skip to the end of the current list
+ if (applies1) {
+ for (;End != Stop && *End != '>'; ++End);
+ I = ++End;
+ // skip whitespace
+ for (;I != Stop && isspace_ascii(*I) != 0; I++);
+ } else {
+ bool applies2 = true;
+ // all the conditions inside a restriction list have to be
+ // met so once we find one that is not met, we can skip to
+ // the end of this list
+ while (I != Stop)
+ {
+ // look for whitespace or ending '>'
+ // End now points to the character after the current term
+ for (;End != Stop && !isspace_ascii(*End) && *End != '>'; ++End);
+
+ if (unlikely(End == Stop))
+ return 0;
+
+ bool NegRestriction = false;
+ if (*I == '!')
+ {
+ NegRestriction = true;
+ ++I;
+ }
+
+ std::string const restriction(I, End);
+ if (restriction.empty() == false && profiles.empty() == false &&
+ std::find(profiles.begin(), profiles.end(), restriction) != profiles.end())
+ {
+ if (NegRestriction) {
+ applies2 = false;
+ // since one of the terms does not apply we don't have to check the others
+ for (; End != Stop && *End != '>'; ++End);
+ }
+ } else {
+ if (!NegRestriction) {
+ applies2 = false;
+ // since one of the terms does not apply we don't have to check the others
+ for (; End != Stop && *End != '>'; ++End);
+ }
+ }
+
+ if (*End++ == '>') {
+ I = End;
+ // skip whitespace
+ for (;I != Stop && isspace_ascii(*I) != 0; I++);
+ break;
+ }
+
+ I = End;
+ // skip whitespace
+ for (;I != Stop && isspace_ascii(*I) != 0; I++);
+ }
+ if (applies2) {
+ applies1 = true;
+ }
+ }
+ }
+
+ if (applies1 == false) {
+ Package = ""; //not for this restriction
+ }
+ }
+
+ if (I != Stop && *I == '|')
+ Op |= pkgCache::Dep::Or;
+
+ if (I == Stop || *I == ',' || *I == '|')
+ {
+ if (I != Stop)
+ for (I++; I != Stop && isspace_ascii(*I) != 0; I++);
+ return I;
+ }
+
+ return 0;
+}
+ /*}}}*/
+// ListParser::ParseDepends - Parse a dependency list /*{{{*/
+// ---------------------------------------------------------------------
+/* This is the higher level depends parser. It takes a tag and generates
+ a complete depends tree for the given version. */
+bool debListParser::ParseDepends(pkgCache::VerIterator &Ver,
+ pkgTagSection::Key Key,unsigned int Type)
+{
+ const char *Start;
+ const char *Stop;
+ if (Section.Find(Key,Start,Stop) == false || Start == Stop)
+ return true;
+
+ string const pkgArch = Ver.Arch();
+
+ while (1)
+ {
+ StringView Package;
+ StringView Version;
+ unsigned int Op;
+
+ Start = ParseDepends(Start, Stop, Package, Version, Op, false, false, false);
+ if (Start == 0)
+ return _error->Error("Problem parsing dependency %zu",static_cast<size_t>(Key)); // TODO
+ size_t const found = Package.rfind(':');
+
+ if (found == string::npos)
+ {
+ if (NewDepends(Ver,Package,pkgArch,Version,Op,Type) == false)
+ return false;
+ }
+ else if (Package.substr(found) == ":any")
+ {
+ if (NewDepends(Ver,Package,"any",Version,Op,Type) == false)
+ return false;
+ }
+ else
+ {
+ // Such dependencies are not supposed to be accepted …
+ // … but this is probably the best thing to do anyway
+ if (Package.substr(found + 1) == "native")
+ {
+ std::string const Pkg = Package.substr(0, found).to_string() + ':' + Ver.Cache()->NativeArch();
+ if (NewDepends(Ver, Pkg, "any", Version, Op | pkgCache::Dep::ArchSpecific, Type) == false)
+ return false;
+ }
+ else if (NewDepends(Ver, Package, "any", Version, Op | pkgCache::Dep::ArchSpecific, Type) == false)
+ return false;
+ }
+
+ if (Start == Stop)
+ break;
+ }
+ return true;
+}
+ /*}}}*/
+// ListParser::ParseProvides - Parse the provides list /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool debListParser::ParseProvides(pkgCache::VerIterator &Ver)
+{
+ /* it is unlikely, but while parsing dependencies, we might have already
+ picked up multi-arch implicit provides which we do not want to duplicate here */
+ bool hasProvidesAlready = false;
+ std::string const spzName = Ver.ParentPkg().FullName(false);
+ {
+ for (pkgCache::PrvIterator Prv = Ver.ProvidesList(); Prv.end() == false; ++Prv)
+ {
+ if (Prv.IsMultiArchImplicit() == false || (Prv->Flags & pkgCache::Flag::ArchSpecific) == 0)
+ continue;
+ if (spzName != Prv.OwnerPkg().FullName(false))
+ continue;
+ hasProvidesAlready = true;
+ break;
+ }
+ }
+
+ string const Arch = Ver.Arch();
+ const char *Start;
+ const char *Stop;
+ if (Section.Find(pkgTagSection::Key::Provides,Start,Stop) == true)
+ {
+ StringView Package;
+ StringView Version;
+ unsigned int Op;
+
+ do
+ {
+ Start = ParseDepends(Start,Stop,Package,Version,Op, false, false, false);
+ const size_t archfound = Package.rfind(':');
+ if (Start == 0)
+ return _error->Error("Problem parsing Provides line");
+ if (unlikely(Op != pkgCache::Dep::NoOp && Op != pkgCache::Dep::Equals)) {
+ _error->Warning("Ignoring Provides line with non-equal DepCompareOp for package %s", Package.to_string().c_str());
+ } else if (archfound != string::npos) {
+ StringView spzArch = Package.substr(archfound + 1);
+ if (spzArch != "any")
+ {
+ if (NewProvides(Ver, Package.substr(0, archfound), spzArch, Version, pkgCache::Flag::MultiArchImplicit | pkgCache::Flag::ArchSpecific) == false)
+ return false;
+ }
+ if (NewProvides(Ver, Package, "any", Version, pkgCache::Flag::ArchSpecific) == false)
+ return false;
+ } else if ((Ver->MultiArch & pkgCache::Version::Foreign) == pkgCache::Version::Foreign) {
+ if (APT::Configuration::checkArchitecture(Arch))
+ {
+ if (NewProvidesAllArch(Ver, Package, Version, 0) == false)
+ return false;
+ }
+ else if (NewProvides(Ver, Package, Arch, Version, 0) == false)
+ return false;
+ } else {
+ if ((Ver->MultiArch & pkgCache::Version::Allowed) == pkgCache::Version::Allowed)
+ {
+ if (NewProvides(Ver, Package.to_string().append(":any"), "any", Version, pkgCache::Flag::MultiArchImplicit) == false)
+ return false;
+ }
+ if (NewProvides(Ver, Package, Arch, Version, 0) == false)
+ return false;
+ }
+ if (archfound == std::string::npos)
+ {
+ string spzName = Package.to_string();
+ spzName.push_back(':');
+ spzName.append(Ver.ParentPkg().Arch());
+ pkgCache::PkgIterator const spzPkg = Ver.Cache()->FindPkg(spzName, "any");
+ if (spzPkg.end() == false)
+ {
+ if (NewProvides(Ver, spzName, "any", Version, pkgCache::Flag::MultiArchImplicit | pkgCache::Flag::ArchSpecific) == false)
+ return false;
+ }
+ }
+ } while (Start != Stop);
+ }
+
+ if (APT::Configuration::checkArchitecture(Arch))
+ {
+ if ((Ver->MultiArch & pkgCache::Version::Allowed) == pkgCache::Version::Allowed)
+ {
+ string const Package = string(Ver.ParentPkg().Name()).append(":").append("any");
+ if (NewProvides(Ver, Package, "any", Ver.VerStr(), pkgCache::Flag::MultiArchImplicit) == false)
+ return false;
+ }
+ else if ((Ver->MultiArch & pkgCache::Version::Foreign) == pkgCache::Version::Foreign)
+ {
+ if (NewProvidesAllArch(Ver, Ver.ParentPkg().Name(), Ver.VerStr(), pkgCache::Flag::MultiArchImplicit) == false)
+ return false;
+ }
+ }
+
+ if (hasProvidesAlready == false)
+ {
+ pkgCache::PkgIterator const spzPkg = Ver.Cache()->FindPkg(spzName, "any");
+ if (spzPkg.end() == false)
+ {
+ if (NewProvides(Ver, spzName, "any", Ver.VerStr(), pkgCache::Flag::MultiArchImplicit | pkgCache::Flag::ArchSpecific) == false)
+ return false;
+ }
+ }
+ return true;
+}
+ /*}}}*/
+// ListParser::GrabWord - Matches a word and returns /*{{{*/
+// ---------------------------------------------------------------------
+/* Looks for a word in a list of words - for ParseStatus */
+bool debListParser::GrabWord(StringView Word, WordList const *List, unsigned char &Out)
+{
+ for (unsigned int C = 0; List[C].Str.empty() == false; C++)
+ {
+ if (Word.length() == List[C].Str.length() &&
+ strncasecmp(Word.data(), List[C].Str.data(), Word.length()) == 0)
+ {
+ Out = List[C].Val;
+ return true;
+ }
+ }
+ return false;
+}
+ /*}}}*/
+// ListParser::Step - Move to the next section in the file /*{{{*/
+// ---------------------------------------------------------------------
+/* This has to be careful to only process the correct architecture */
+bool debListParser::Step()
+{
+ iOffset = Tags.Offset();
+ return Tags.Step(Section);
+}
+ /*}}}*/
+// ListParser::GetPrio - Convert the priority from a string /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+unsigned char debListParser::GetPrio(string Str)
+{
+ unsigned char Out;
+ if (GrabWord(Str,PrioList,Out) == false)
+ Out = pkgCache::State::Extra;
+
+ return Out;
+}
+ /*}}}*/
+bool debListParser::SameVersion(unsigned short const Hash, /*{{{*/
+ pkgCache::VerIterator const &Ver)
+{
+ if (pkgCacheListParser::SameVersion(Hash, Ver) == false)
+ return false;
+ // status file has no (Download)Size, but all others are fair game
+ // status file is parsed last, so the first version we encounter is
+ // probably also the version we have downloaded
+ unsigned long long const Size = Section.FindULL(pkgTagSection::Key::Size);
+ if (Size != 0 && Ver->Size != 0 && Size != Ver->Size)
+ return false;
+ // available everywhere, but easier to check here than to include in VersionHash
+ unsigned char MultiArch = ParseMultiArch(false);
+ if (MultiArch != Ver->MultiArch)
+ return false;
+ // for all practical proposes (we can check): same version
+ return true;
+}
+ /*}}}*/
+
+debDebFileParser::debDebFileParser(FileFd *File, std::string const &DebFile)
+ : debListParser(File), DebFile(DebFile)
+{
+}
+
+bool debDebFileParser::UsePackage(pkgCache::PkgIterator &Pkg,
+ pkgCache::VerIterator &Ver)
+{
+ bool res = debListParser::UsePackage(Pkg, Ver);
+ // we use the full file path as a provides so that the file is found
+ // by its name
+ if(NewProvides(Ver, DebFile, Pkg.Cache()->NativeArch(), Ver.VerStr(), 0) == false)
+ return false;
+ return res;
+}
+
+debListParser::~debListParser() {}
diff --git a/apt-pkg/deb/deblistparser.h b/apt-pkg/deb/deblistparser.h
new file mode 100644
index 000000000..39f42915c
--- /dev/null
+++ b/apt-pkg/deb/deblistparser.h
@@ -0,0 +1,162 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: deblistparser.h,v 1.9 2001/02/20 07:03:17 jgg Exp $
+/* ######################################################################
+
+ Debian Package List Parser - This implements the abstract parser
+ interface for Debian package files
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_DEBLISTPARSER_H
+#define PKGLIB_DEBLISTPARSER_H
+
+#include <apt-pkg/pkgcachegen.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/md5.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/macros.h>
+
+#include <string>
+#include <vector>
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+#include <apt-pkg/string_view.h>
+#endif
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/indexfile.h>
+#endif
+
+class FileFd;
+
+class APT_HIDDEN debListParser : public pkgCacheListParser
+{
+ public:
+
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ // Parser Helper
+ struct WordList
+ {
+ APT::StringView Str;
+ unsigned char Val;
+ };
+#endif
+
+ private:
+ std::vector<std::string> forceEssential;
+ std::vector<std::string> forceImportant;
+ std::string MD5Buffer;
+
+ protected:
+ pkgTagFile Tags;
+ pkgTagSection Section;
+ map_filesize_t iOffset;
+
+ virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver);
+ bool ParseDepends(pkgCache::VerIterator &Ver, pkgTagSection::Key Key,
+ unsigned int Type);
+ bool ParseProvides(pkgCache::VerIterator &Ver);
+
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ APT_HIDDEN static bool GrabWord(APT::StringView Word,const WordList *List,unsigned char &Out);
+#endif
+ APT_HIDDEN unsigned char ParseMultiArch(bool const showErrors);
+
+ public:
+
+ APT_PUBLIC static unsigned char GetPrio(std::string Str);
+
+ // These all operate against the current section
+ virtual std::string Package() APT_OVERRIDE;
+ virtual bool ArchitectureAll() APT_OVERRIDE;
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ virtual APT::StringView Architecture() APT_OVERRIDE;
+ virtual APT::StringView Version() APT_OVERRIDE;
+#endif
+ virtual bool NewVersion(pkgCache::VerIterator &Ver) APT_OVERRIDE;
+ virtual std::vector<std::string> AvailableDescriptionLanguages() APT_OVERRIDE;
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ virtual APT::StringView Description_md5() APT_OVERRIDE;
+#endif
+ virtual unsigned short VersionHash() APT_OVERRIDE;
+ virtual bool SameVersion(unsigned short const Hash, pkgCache::VerIterator const &Ver) APT_OVERRIDE;
+ virtual bool UsePackage(pkgCache::PkgIterator &Pkg,
+ pkgCache::VerIterator &Ver) APT_OVERRIDE;
+ virtual map_filesize_t Offset() APT_OVERRIDE {return iOffset;};
+ virtual map_filesize_t Size() APT_OVERRIDE {return Section.size();};
+
+ virtual bool Step() APT_OVERRIDE;
+
+ bool LoadReleaseInfo(pkgCache::RlsFileIterator &FileI,FileFd &File,
+ std::string const &section);
+
+ APT_PUBLIC static const char *ParseDepends(const char *Start,const char *Stop,
+ std::string &Package,std::string &Ver,unsigned int &Op);
+ APT_PUBLIC static const char *ParseDepends(const char *Start,const char *Stop,
+ std::string &Package,std::string &Ver,unsigned int &Op,
+ bool const &ParseArchFlags);
+ APT_PUBLIC static const char *ParseDepends(const char *Start,const char *Stop,
+ std::string &Package,std::string &Ver,unsigned int &Op,
+ bool const &ParseArchFlags, bool const &StripMultiArch);
+ APT_PUBLIC static const char *ParseDepends(const char *Start,const char *Stop,
+ std::string &Package,std::string &Ver,unsigned int &Op,
+ bool const &ParseArchFlags, bool const &StripMultiArch,
+ bool const &ParseRestrictionsList);
+ APT_PUBLIC static const char *ParseDepends(const char *Start,const char *Stop,
+ std::string &Package,std::string &Ver,unsigned int &Op,
+ bool const &ParseArchFlags, bool const &StripMultiArch,
+ bool const &ParseRestrictionsList,
+ std::string const &Arch);
+
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ APT_HIDDEN static const char *ParseDepends(const char *Start,const char *Stop,
+ APT::StringView &Package,
+ APT::StringView &Ver,unsigned int &Op,
+ bool const ParseArchFlags = false, bool StripMultiArch = true,
+ bool const ParseRestrictionsList = false);
+ APT_HIDDEN static const char *ParseDepends(const char *Start,const char *Stop,
+ APT::StringView &Package,
+ APT::StringView &Ver,unsigned int &Op,
+ bool const ParseArchFlags, bool StripMultiArch,
+ bool const ParseRestrictionsList,
+ std::string const &Arch);
+#endif
+
+ APT_PUBLIC static const char *ConvertRelation(const char *I,unsigned int &Op);
+
+ debListParser(FileFd *File);
+ virtual ~debListParser();
+};
+
+class APT_HIDDEN debDebFileParser : public debListParser
+{
+ private:
+ std::string DebFile;
+
+ public:
+ debDebFileParser(FileFd *File, std::string const &DebFile);
+ virtual bool UsePackage(pkgCache::PkgIterator &Pkg,
+ pkgCache::VerIterator &Ver) APT_OVERRIDE;
+};
+
+class APT_HIDDEN debTranslationsParser : public debListParser
+{
+ public:
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ // a translation can never be a real package
+ virtual APT::StringView Architecture() APT_OVERRIDE { return ""; }
+ virtual APT::StringView Version() APT_OVERRIDE { return ""; }
+#endif
+
+ debTranslationsParser(FileFd *File)
+ : debListParser(File) {};
+};
+
+class APT_HIDDEN debStatusListParser : public debListParser
+{
+ public:
+ virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver);
+ debStatusListParser(FileFd *File)
+ : debListParser(File) {};
+};
+#endif
diff --git a/apt-pkg/deb/debmetaindex.cc b/apt-pkg/deb/debmetaindex.cc
new file mode 100644
index 000000000..cba00aa8e
--- /dev/null
+++ b/apt-pkg/deb/debmetaindex.cc
@@ -0,0 +1,1209 @@
+#include <config.h>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/debmetaindex.h>
+#include <apt-pkg/debindexfile.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/acquire-item.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/metaindex.h>
+#include <apt-pkg/pkgcachegen.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/gpgv.h>
+#include <apt-pkg/macros.h>
+
+#include <map>
+#include <string>
+#include <utility>
+#include <vector>
+#include <algorithm>
+#include <sstream>
+
+#include <sys/stat.h>
+#include <string.h>
+
+#include <apti18n.h>
+
+class APT_HIDDEN debReleaseIndexPrivate /*{{{*/
+{
+ public:
+ struct APT_HIDDEN debSectionEntry
+ {
+ std::string const sourcesEntry;
+ std::string const Name;
+ std::vector<std::string> const Targets;
+ std::vector<std::string> const Architectures;
+ std::vector<std::string> const Languages;
+ bool const UsePDiffs;
+ std::string const UseByHash;
+ };
+
+ std::vector<debSectionEntry> DebEntries;
+ std::vector<debSectionEntry> DebSrcEntries;
+
+ metaIndex::TriState CheckValidUntil;
+ time_t ValidUntilMin;
+ time_t ValidUntilMax;
+
+ std::vector<std::string> Architectures;
+ std::vector<std::string> NoSupportForAll;
+ std::map<std::string, std::string> const ReleaseOptions;
+
+ debReleaseIndexPrivate(std::map<std::string, std::string> const &Options) : CheckValidUntil(metaIndex::TRI_UNSET), ValidUntilMin(0), ValidUntilMax(0), ReleaseOptions(Options) {}
+};
+ /*}}}*/
+// ReleaseIndex::MetaIndex* - display helpers /*{{{*/
+std::string debReleaseIndex::MetaIndexInfo(const char *Type) const
+{
+ std::string Info = ::URI::ArchiveOnly(URI) + ' ';
+ if (Dist[Dist.size() - 1] == '/')
+ {
+ if (Dist != "/")
+ Info += Dist;
+ }
+ else
+ Info += Dist;
+ Info += " ";
+ Info += Type;
+ return Info;
+}
+std::string debReleaseIndex::Describe() const
+{
+ return MetaIndexInfo("Release");
+}
+
+std::string debReleaseIndex::MetaIndexFile(const char *Type) const
+{
+ return _config->FindDir("Dir::State::lists") +
+ URItoFileName(MetaIndexURI(Type));
+}
+static std::string constructMetaIndexURI(std::string URI, std::string const &Dist, char const * const Type)
+{
+ if (Dist == "/")
+ ;
+ else if (Dist[Dist.size()-1] == '/')
+ URI += Dist;
+ else
+ URI += "dists/" + Dist + "/";
+ return URI + Type;
+}
+std::string debReleaseIndex::MetaIndexURI(const char *Type) const
+{
+ return constructMetaIndexURI(URI, Dist, Type);
+}
+ /*}}}*/
+// ReleaseIndex Con- and Destructors /*{{{*/
+debReleaseIndex::debReleaseIndex(std::string const &URI, std::string const &Dist, std::map<std::string, std::string> const &Options) :
+ metaIndex(URI, Dist, "deb"), d(new debReleaseIndexPrivate(Options))
+{}
+debReleaseIndex::debReleaseIndex(std::string const &URI, std::string const &Dist, bool const pTrusted, std::map<std::string, std::string> const &Options) :
+ metaIndex(URI, Dist, "deb"), d(new debReleaseIndexPrivate(Options))
+{
+ Trusted = pTrusted ? TRI_YES : TRI_NO;
+}
+debReleaseIndex::~debReleaseIndex() {
+ if (d != NULL)
+ delete d;
+}
+ /*}}}*/
+// ReleaseIndex::GetIndexTargets /*{{{*/
+static void GetIndexTargetsFor(char const * const Type, std::string const &URI, std::string const &Dist,
+ std::vector<debReleaseIndexPrivate::debSectionEntry> const &entries,
+ std::vector<IndexTarget> &IndexTargets, std::map<std::string, std::string> const &ReleaseOptions)
+{
+ bool const flatArchive = (Dist[Dist.length() - 1] == '/');
+ std::string const baseURI = constructMetaIndexURI(URI, Dist, "");
+ std::string const Release = (Dist == "/") ? "" : Dist;
+ std::string const Site = ::URI::ArchiveOnly(URI);
+
+ std::string DefCompressionTypes;
+ {
+ std::vector<std::string> types = APT::Configuration::getCompressionTypes();
+ if (types.empty() == false)
+ {
+ std::ostringstream os;
+ std::copy(types.begin(), types.end()-1, std::ostream_iterator<std::string>(os, " "));
+ os << *types.rbegin();
+ DefCompressionTypes = os.str();
+ }
+ }
+ std::string DefKeepCompressedAs;
+ {
+ std::vector<APT::Configuration::Compressor> comps = APT::Configuration::getCompressors();
+ if (comps.empty() == false)
+ {
+ std::sort(comps.begin(), comps.end(),
+ [](APT::Configuration::Compressor const &a, APT::Configuration::Compressor const &b) { return a.Cost < b.Cost; });
+ std::ostringstream os;
+ for (auto const &c : comps)
+ if (c.Cost != 0)
+ os << c.Extension.substr(1) << ' ';
+ DefKeepCompressedAs = os.str();
+ }
+ DefKeepCompressedAs += "uncompressed";
+ }
+
+ std::vector<std::string> const NativeArchs = { _config->Find("APT::Architecture"), "implicit:all" };
+ bool const GzipIndex = _config->FindB("Acquire::GzipIndexes", false);
+ for (std::vector<debReleaseIndexPrivate::debSectionEntry>::const_iterator E = entries.begin(); E != entries.end(); ++E)
+ {
+ for (std::vector<std::string>::const_iterator T = E->Targets.begin(); T != E->Targets.end(); ++T)
+ {
+#define APT_T_CONFIG_STR(X, Y) _config->Find(std::string("Acquire::IndexTargets::") + Type + "::" + *T + "::" + (X), (Y))
+#define APT_T_CONFIG_BOOL(X, Y) _config->FindB(std::string("Acquire::IndexTargets::") + Type + "::" + *T + "::" + (X), (Y))
+ std::string const tplMetaKey = APT_T_CONFIG_STR(flatArchive ? "flatMetaKey" : "MetaKey", "");
+ std::string const tplShortDesc = APT_T_CONFIG_STR("ShortDescription", "");
+ std::string const tplLongDesc = "$(SITE) " + APT_T_CONFIG_STR(flatArchive ? "flatDescription" : "Description", "");
+ std::string const tplIdentifier = APT_T_CONFIG_STR("Identifier", *T);
+ bool const IsOptional = APT_T_CONFIG_BOOL("Optional", true);
+ bool const KeepCompressed = APT_T_CONFIG_BOOL("KeepCompressed", GzipIndex);
+ bool const DefaultEnabled = APT_T_CONFIG_BOOL("DefaultEnabled", true);
+ bool const UsePDiffs = APT_T_CONFIG_BOOL("PDiffs", E->UsePDiffs);
+ std::string const UseByHash = APT_T_CONFIG_STR("By-Hash", E->UseByHash);
+ std::string const CompressionTypes = APT_T_CONFIG_STR("CompressionTypes", DefCompressionTypes);
+ std::string KeepCompressedAs = APT_T_CONFIG_STR("KeepCompressedAs", "");
+ std::string const FallbackOf = APT_T_CONFIG_STR("Fallback-Of", "");
+#undef APT_T_CONFIG_BOOL
+#undef APT_T_CONFIG_STR
+ if (tplMetaKey.empty())
+ continue;
+
+ if (KeepCompressedAs.empty())
+ KeepCompressedAs = DefKeepCompressedAs;
+ else
+ {
+ std::vector<std::string> const defKeep = VectorizeString(DefKeepCompressedAs, ' ');
+ std::vector<std::string> const valKeep = VectorizeString(KeepCompressedAs, ' ');
+ std::vector<std::string> keep;
+ for (auto const &val : valKeep)
+ {
+ if (val.empty())
+ continue;
+ if (std::find(defKeep.begin(), defKeep.end(), val) == defKeep.end())
+ continue;
+ keep.push_back(val);
+ }
+ if (std::find(keep.begin(), keep.end(), "uncompressed") == keep.end())
+ keep.push_back("uncompressed");
+ std::ostringstream os;
+ std::copy(keep.begin(), keep.end()-1, std::ostream_iterator<std::string>(os, " "));
+ os << *keep.rbegin();
+ KeepCompressedAs = os.str();
+ }
+
+ for (std::vector<std::string>::const_iterator L = E->Languages.begin(); L != E->Languages.end(); ++L)
+ {
+ if (*L == "none" && tplMetaKey.find("$(LANGUAGE)") != std::string::npos)
+ continue;
+
+ for (std::vector<std::string>::const_iterator A = E->Architectures.begin(); A != E->Architectures.end(); ++A)
+ {
+ for (auto const &NativeArch: NativeArchs)
+ {
+ constexpr static auto BreakPoint = "$(NATIVE_ARCHITECTURE)";
+ // available in templates
+ std::map<std::string, std::string> Options;
+ Options.insert(std::make_pair("SITE", Site));
+ Options.insert(std::make_pair("RELEASE", Release));
+ if (tplMetaKey.find("$(COMPONENT)") != std::string::npos)
+ Options.emplace("COMPONENT", E->Name);
+ if (tplMetaKey.find("$(LANGUAGE)") != std::string::npos)
+ Options.emplace("LANGUAGE", *L);
+ if (tplMetaKey.find("$(ARCHITECTURE)") != std::string::npos)
+ Options.emplace("ARCHITECTURE", (*A == "implicit:all") ? "all" : *A);
+ else if (tplMetaKey.find("$(NATIVE_ARCHITECTURE)") != std::string::npos)
+ Options.emplace("ARCHITECTURE", (NativeArch == "implicit:all") ? "all" : NativeArch);
+ if (tplMetaKey.find("$(NATIVE_ARCHITECTURE)") != std::string::npos)
+ Options.emplace("NATIVE_ARCHITECTURE", (NativeArch == "implicit:all") ? "all" : NativeArch);
+
+ std::string MetaKey = tplMetaKey;
+ std::string ShortDesc = tplShortDesc;
+ std::string LongDesc = tplLongDesc;
+ std::string Identifier = tplIdentifier;
+ for (std::map<std::string, std::string>::const_iterator O = Options.begin(); O != Options.end(); ++O)
+ {
+ std::string const varname = "$(" + O->first + ")";
+ MetaKey = SubstVar(MetaKey, varname, O->second);
+ ShortDesc = SubstVar(ShortDesc, varname, O->second);
+ LongDesc = SubstVar(LongDesc, varname, O->second);
+ Identifier = SubstVar(Identifier, varname, O->second);
+ }
+
+ {
+ auto const dup = std::find_if(IndexTargets.begin(), IndexTargets.end(), [&](IndexTarget const &IT) {
+ return MetaKey == IT.MetaKey && baseURI == IT.Option(IndexTarget::BASE_URI) &&
+ E->sourcesEntry == IT.Option(IndexTarget::SOURCESENTRY) && *T == IT.Option(IndexTarget::CREATED_BY);
+ });
+ if (dup != IndexTargets.end())
+ {
+ if (tplMetaKey.find(BreakPoint) == std::string::npos)
+ break;
+ continue;
+ }
+ }
+
+ {
+ auto const dup = std::find_if(IndexTargets.begin(), IndexTargets.end(), [&](IndexTarget const &IT) {
+ return MetaKey == IT.MetaKey && baseURI == IT.Option(IndexTarget::BASE_URI) &&
+ E->sourcesEntry == IT.Option(IndexTarget::SOURCESENTRY) && *T != IT.Option(IndexTarget::CREATED_BY);
+ });
+ if (dup != IndexTargets.end())
+ {
+ std::string const dupT = dup->Option(IndexTarget::CREATED_BY);
+ std::string const dupEntry = dup->Option(IndexTarget::SOURCESENTRY);
+ //TRANSLATOR: an identifier like Packages; Releasefile key indicating
+ // a file like main/binary-amd64/Packages; another identifier like Contents;
+ // filename and linenumber of the sources.list entry currently parsed
+ _error->Warning(_("Target %s wants to acquire the same file (%s) as %s from source %s"),
+ T->c_str(), MetaKey.c_str(), dupT.c_str(), dupEntry.c_str());
+ if (tplMetaKey.find(BreakPoint) == std::string::npos)
+ break;
+ continue;
+ }
+ }
+
+ {
+ auto const dup = std::find_if(IndexTargets.begin(), IndexTargets.end(), [&](IndexTarget const &T) {
+ return MetaKey == T.MetaKey && baseURI == T.Option(IndexTarget::BASE_URI) &&
+ E->sourcesEntry != T.Option(IndexTarget::SOURCESENTRY);
+ });
+ if (dup != IndexTargets.end())
+ {
+ std::string const dupEntry = dup->Option(IndexTarget::SOURCESENTRY);
+ //TRANSLATOR: an identifier like Packages; Releasefile key indicating
+ // a file like main/binary-amd64/Packages; filename and linenumber of
+ // two sources.list entries
+ _error->Warning(_("Target %s (%s) is configured multiple times in %s and %s"),
+ T->c_str(), MetaKey.c_str(), dupEntry.c_str(), E->sourcesEntry.c_str());
+ if (tplMetaKey.find(BreakPoint) == std::string::npos)
+ break;
+ continue;
+ }
+ }
+
+ // not available in templates, but in the indextarget
+ Options.insert(ReleaseOptions.begin(), ReleaseOptions.end());
+ Options.insert(std::make_pair("IDENTIFIER", Identifier));
+ Options.insert(std::make_pair("TARGET_OF", Type));
+ Options.insert(std::make_pair("CREATED_BY", *T));
+ Options.insert(std::make_pair("FALLBACK_OF", FallbackOf));
+ Options.insert(std::make_pair("PDIFFS", UsePDiffs ? "yes" : "no"));
+ Options.insert(std::make_pair("BY_HASH", UseByHash));
+ Options.insert(std::make_pair("DEFAULTENABLED", DefaultEnabled ? "yes" : "no"));
+ Options.insert(std::make_pair("COMPRESSIONTYPES", CompressionTypes));
+ Options.insert(std::make_pair("KEEPCOMPRESSEDAS", KeepCompressedAs));
+ Options.insert(std::make_pair("SOURCESENTRY", E->sourcesEntry));
+
+ bool IsOpt = IsOptional;
+ {
+ auto const arch = Options.find("ARCHITECTURE");
+ if (arch != Options.end() && arch->second == "all")
+ {
+ // one of them must be implicit:all then
+ if (*A != "all" && NativeArch != "all")
+ IsOpt = true;
+ else // user used arch=all explicitly
+ Options.emplace("Force-Support-For-All", "yes");
+ }
+ }
+
+ IndexTarget Target(
+ MetaKey,
+ ShortDesc,
+ LongDesc,
+ baseURI + MetaKey,
+ IsOpt,
+ KeepCompressed,
+ Options
+ );
+ IndexTargets.push_back(Target);
+
+ if (tplMetaKey.find(BreakPoint) == std::string::npos)
+ break;
+ }
+
+ if (tplMetaKey.find("$(ARCHITECTURE)") == std::string::npos)
+ break;
+
+ }
+
+ if (tplMetaKey.find("$(LANGUAGE)") == std::string::npos)
+ break;
+
+ }
+
+ }
+ }
+}
+std::vector<IndexTarget> debReleaseIndex::GetIndexTargets() const
+{
+ std::vector<IndexTarget> IndexTargets;
+ GetIndexTargetsFor("deb-src", URI, Dist, d->DebSrcEntries, IndexTargets, d->ReleaseOptions);
+ GetIndexTargetsFor("deb", URI, Dist, d->DebEntries, IndexTargets, d->ReleaseOptions);
+ return IndexTargets;
+}
+ /*}}}*/
+void debReleaseIndex::AddComponent(std::string const &sourcesEntry, /*{{{*/
+ bool const isSrc, std::string const &Name,
+ std::vector<std::string> const &Targets,
+ std::vector<std::string> const &Architectures,
+ std::vector<std::string> Languages,
+ bool const usePDiffs, std::string const &useByHash)
+{
+ if (Languages.empty() == true)
+ Languages.push_back("none");
+ debReleaseIndexPrivate::debSectionEntry const entry = {
+ sourcesEntry, Name, Targets, Architectures, Languages, usePDiffs, useByHash
+ };
+ if (isSrc)
+ d->DebSrcEntries.push_back(entry);
+ else
+ d->DebEntries.push_back(entry);
+}
+ /*}}}*/
+
+bool debReleaseIndex::Load(std::string const &Filename, std::string * const ErrorText)/*{{{*/
+{
+ LoadedSuccessfully = TRI_NO;
+ FileFd Fd;
+ if (OpenMaybeClearSignedFile(Filename, Fd) == false)
+ return false;
+
+ pkgTagFile TagFile(&Fd, Fd.Size());
+ if (Fd.IsOpen() == false || Fd.Failed())
+ {
+ if (ErrorText != NULL)
+ strprintf(*ErrorText, _("Unable to parse Release file %s"),Filename.c_str());
+ return false;
+ }
+
+ pkgTagSection Section;
+ const char *Start, *End;
+ if (TagFile.Step(Section) == false)
+ {
+ if (ErrorText != NULL)
+ strprintf(*ErrorText, _("No sections in Release file %s"), Filename.c_str());
+ return false;
+ }
+ // FIXME: find better tag name
+ SupportsAcquireByHash = Section.FindB("Acquire-By-Hash", false);
+
+ Suite = Section.FindS("Suite");
+ Codename = Section.FindS("Codename");
+ {
+ std::string const archs = Section.FindS("Architectures");
+ if (archs.empty() == false)
+ d->Architectures = VectorizeString(archs, ' ');
+ }
+ {
+ std::string const targets = Section.FindS("No-Support-for-Architecture-all");
+ if (targets.empty() == false)
+ d->NoSupportForAll = VectorizeString(targets, ' ');
+ }
+
+ bool FoundHashSum = false;
+ bool FoundStrongHashSum = false;
+ auto const SupportedHashes = HashString::SupportedHashes();
+ for (int i=0; SupportedHashes[i] != NULL; i++)
+ {
+ if (!Section.Find(SupportedHashes[i], Start, End))
+ continue;
+
+ std::string Name;
+ std::string Hash;
+ unsigned long long Size;
+ while (Start < End)
+ {
+ if (!parseSumData(Start, End, Name, Hash, Size))
+ return false;
+
+ HashString const hs(SupportedHashes[i], Hash);
+ if (Entries.find(Name) == Entries.end())
+ {
+ metaIndex::checkSum *Sum = new metaIndex::checkSum;
+ Sum->MetaKeyFilename = Name;
+ Sum->Size = Size;
+ Sum->Hashes.FileSize(Size);
+ APT_IGNORE_DEPRECATED(Sum->Hash = hs;)
+ Entries[Name] = Sum;
+ }
+ Entries[Name]->Hashes.push_back(hs);
+ FoundHashSum = true;
+ if (FoundStrongHashSum == false && hs.usable() == true)
+ FoundStrongHashSum = true;
+ }
+ }
+
+ bool AuthPossible = false;
+ if(FoundHashSum == false)
+ _error->Warning(_("No Hash entry in Release file %s"), Filename.c_str());
+ else if(FoundStrongHashSum == false)
+ _error->Warning(_("No Hash entry in Release file %s which is considered strong enough for security purposes"), Filename.c_str());
+ else
+ AuthPossible = true;
+
+ std::string const StrDate = Section.FindS("Date");
+ if (RFC1123StrToTime(StrDate.c_str(), Date) == false)
+ {
+ _error->Warning( _("Invalid '%s' entry in Release file %s"), "Date", Filename.c_str());
+ Date = 0;
+ }
+
+ bool CheckValidUntil = _config->FindB("Acquire::Check-Valid-Until", true);
+ if (d->CheckValidUntil == metaIndex::TRI_NO)
+ CheckValidUntil = false;
+ else if (d->CheckValidUntil == metaIndex::TRI_YES)
+ CheckValidUntil = true;
+
+ if (CheckValidUntil == true)
+ {
+ std::string const Label = Section.FindS("Label");
+ std::string const StrValidUntil = Section.FindS("Valid-Until");
+
+ // if we have a Valid-Until header in the Release file, use it as default
+ if (StrValidUntil.empty() == false)
+ {
+ if(RFC1123StrToTime(StrValidUntil.c_str(), ValidUntil) == false)
+ {
+ if (ErrorText != NULL)
+ strprintf(*ErrorText, _("Invalid '%s' entry in Release file %s"), "Valid-Until", Filename.c_str());
+ return false;
+ }
+ }
+ // get the user settings for this archive and use what expires earlier
+ time_t MaxAge = d->ValidUntilMax;
+ if (MaxAge == 0)
+ {
+ MaxAge = _config->FindI("Acquire::Max-ValidTime", 0);
+ if (Label.empty() == false)
+ MaxAge = _config->FindI(("Acquire::Max-ValidTime::" + Label).c_str(), MaxAge);
+ }
+ time_t MinAge = d->ValidUntilMin;
+ if (MinAge == 0)
+ {
+ MinAge = _config->FindI("Acquire::Min-ValidTime", 0);
+ if (Label.empty() == false)
+ MinAge = _config->FindI(("Acquire::Min-ValidTime::" + Label).c_str(), MinAge);
+ }
+
+ if (MinAge != 0 || ValidUntil != 0 || MaxAge != 0)
+ {
+ if (MinAge != 0 && ValidUntil != 0) {
+ time_t const min_date = Date + MinAge;
+ if (ValidUntil < min_date)
+ ValidUntil = min_date;
+ }
+ if (MaxAge != 0 && Date != 0) {
+ time_t const max_date = Date + MaxAge;
+ if (ValidUntil == 0 || ValidUntil > max_date)
+ ValidUntil = max_date;
+ }
+ }
+ }
+
+ /* as the Release file is parsed only after it was verified, the Signed-By field
+ does not effect the current, but the "next" Release file */
+ auto Sign = Section.FindS("Signed-By");
+ if (Sign.empty() == false)
+ {
+ std::transform(Sign.begin(), Sign.end(), Sign.begin(), [&](char const c) {
+ return (isspace(c) == 0) ? c : ',';
+ });
+ auto fingers = VectorizeString(Sign, ',');
+ std::transform(fingers.begin(), fingers.end(), fingers.begin(), [&](std::string finger) {
+ std::transform(finger.begin(), finger.end(), finger.begin(), ::toupper);
+ if (finger.length() != 40 || finger.find_first_not_of("0123456789ABCDEF") != std::string::npos)
+ {
+ if (ErrorText != NULL)
+ strprintf(*ErrorText, _("Invalid '%s' entry in Release file %s"), "Signed-By", Filename.c_str());
+ return std::string();
+ }
+ return finger;
+ });
+ if (fingers.empty() == false && std::find(fingers.begin(), fingers.end(), "") == fingers.end())
+ {
+ std::stringstream os;
+ std::copy(fingers.begin(), fingers.end(), std::ostream_iterator<std::string>(os, ","));
+ SignedBy = os.str();
+ }
+ }
+
+ if (AuthPossible)
+ LoadedSuccessfully = TRI_YES;
+ return AuthPossible;
+}
+ /*}}}*/
+metaIndex * debReleaseIndex::UnloadedClone() const /*{{{*/
+{
+ if (Trusted == TRI_NO)
+ return new debReleaseIndex(URI, Dist, false, d->ReleaseOptions);
+ else if (Trusted == TRI_YES)
+ return new debReleaseIndex(URI, Dist, true, d->ReleaseOptions);
+ else
+ return new debReleaseIndex(URI, Dist, d->ReleaseOptions);
+}
+ /*}}}*/
+bool debReleaseIndex::parseSumData(const char *&Start, const char *End, /*{{{*/
+ std::string &Name, std::string &Hash, unsigned long long &Size)
+{
+ Name = "";
+ Hash = "";
+ Size = 0;
+ /* Skip over the first blank */
+ while ((*Start == '\t' || *Start == ' ' || *Start == '\n' || *Start == '\r')
+ && Start < End)
+ Start++;
+ if (Start >= End)
+ return false;
+
+ /* Move EntryEnd to the end of the first entry (the hash) */
+ const char *EntryEnd = Start;
+ while ((*EntryEnd != '\t' && *EntryEnd != ' ')
+ && EntryEnd < End)
+ EntryEnd++;
+ if (EntryEnd == End)
+ return false;
+
+ Hash.append(Start, EntryEnd-Start);
+
+ /* Skip over intermediate blanks */
+ Start = EntryEnd;
+ while (*Start == '\t' || *Start == ' ')
+ Start++;
+ if (Start >= End)
+ return false;
+
+ EntryEnd = Start;
+ /* Find the end of the second entry (the size) */
+ while ((*EntryEnd != '\t' && *EntryEnd != ' ' )
+ && EntryEnd < End)
+ EntryEnd++;
+ if (EntryEnd == End)
+ return false;
+
+ Size = strtoull (Start, NULL, 10);
+
+ /* Skip over intermediate blanks */
+ Start = EntryEnd;
+ while (*Start == '\t' || *Start == ' ')
+ Start++;
+ if (Start >= End)
+ return false;
+
+ EntryEnd = Start;
+ /* Find the end of the third entry (the filename) */
+ while ((*EntryEnd != '\t' && *EntryEnd != ' ' &&
+ *EntryEnd != '\n' && *EntryEnd != '\r')
+ && EntryEnd < End)
+ EntryEnd++;
+
+ Name.append(Start, EntryEnd-Start);
+ Start = EntryEnd; //prepare for the next round
+ return true;
+}
+ /*}}}*/
+
+bool debReleaseIndex::GetIndexes(pkgAcquire *Owner, bool const &GetAll)/*{{{*/
+{
+#define APT_TARGET(X) IndexTarget("", X, MetaIndexInfo(X), MetaIndexURI(X), false, false, d->ReleaseOptions)
+ pkgAcqMetaClearSig * const TransactionManager = new pkgAcqMetaClearSig(Owner,
+ APT_TARGET("InRelease"), APT_TARGET("Release"), APT_TARGET("Release.gpg"), this);
+#undef APT_TARGET
+ // special case for --print-uris
+ if (GetAll)
+ for (auto const &Target: GetIndexTargets())
+ if (Target.Option(IndexTarget::FALLBACK_OF).empty())
+ new pkgAcqIndex(Owner, TransactionManager, Target);
+
+ return true;
+}
+ /*}}}*/
+// ReleaseIndex::Set* TriState options /*{{{*/
+bool debReleaseIndex::SetTrusted(TriState const pTrusted)
+{
+ if (Trusted == TRI_UNSET)
+ Trusted = pTrusted;
+ else if (Trusted != pTrusted)
+ // TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+ return _error->Error(_("Conflicting values set for option %s regarding source %s %s"), "Trusted", URI.c_str(), Dist.c_str());
+ return true;
+}
+bool debReleaseIndex::SetCheckValidUntil(TriState const pCheckValidUntil)
+{
+ if (d->CheckValidUntil == TRI_UNSET)
+ d->CheckValidUntil = pCheckValidUntil;
+ else if (d->CheckValidUntil != pCheckValidUntil)
+ return _error->Error(_("Conflicting values set for option %s regarding source %s %s"), "Check-Valid-Until", URI.c_str(), Dist.c_str());
+ return true;
+}
+bool debReleaseIndex::SetValidUntilMin(time_t const Valid)
+{
+ if (d->ValidUntilMin == 0)
+ d->ValidUntilMin = Valid;
+ else if (d->ValidUntilMin != Valid)
+ return _error->Error(_("Conflicting values set for option %s regarding source %s %s"), "Min-ValidTime", URI.c_str(), Dist.c_str());
+ return true;
+}
+bool debReleaseIndex::SetValidUntilMax(time_t const Valid)
+{
+ if (d->ValidUntilMax == 0)
+ d->ValidUntilMax = Valid;
+ else if (d->ValidUntilMax != Valid)
+ return _error->Error(_("Conflicting values set for option %s regarding source %s %s"), "Max-ValidTime", URI.c_str(), Dist.c_str());
+ return true;
+}
+bool debReleaseIndex::SetSignedBy(std::string const &pSignedBy)
+{
+ if (SignedBy.empty() == true && pSignedBy.empty() == false)
+ {
+ if (pSignedBy[0] == '/') // no check for existence as we could be chrooting later or such things
+ SignedBy = pSignedBy; // absolute path to a keyring file
+ else
+ {
+ // we could go all fancy and allow short/long/string matches as gpgv/apt-key does,
+ // but fingerprints are harder to fake than the others and this option is set once,
+ // not interactively all the time so easy to type is not really a concern.
+ auto fingers = VectorizeString(pSignedBy, ',');
+ std::transform(fingers.begin(), fingers.end(), fingers.begin(), [&](std::string finger) {
+ std::transform(finger.begin(), finger.end(), finger.begin(), ::toupper);
+ if (finger.length() != 40 || finger.find_first_not_of("0123456789ABCDEF") != std::string::npos)
+ {
+ _error->Error(_("Invalid value set for option %s regarding source %s %s (%s)"), "Signed-By", URI.c_str(), Dist.c_str(), "not a fingerprint");
+ return std::string();
+ }
+ return finger;
+ });
+ std::stringstream os;
+ std::copy(fingers.begin(), fingers.end(), std::ostream_iterator<std::string>(os, ","));
+ SignedBy = os.str();
+ }
+ // Normalize the string: Remove trailing commas
+ while (SignedBy[SignedBy.size() - 1] == ',')
+ SignedBy.resize(SignedBy.size() - 1);
+ }
+ else {
+ // Only compare normalized strings
+ auto pSignedByView = APT::StringView(pSignedBy);
+ while (pSignedByView[pSignedByView.size() - 1] == ',')
+ pSignedByView = pSignedByView.substr(0, pSignedByView.size() - 1);
+ if (pSignedByView != SignedBy)
+ return _error->Error(_("Conflicting values set for option %s regarding source %s %s: %s != %s"), "Signed-By", URI.c_str(), Dist.c_str(), SignedBy.c_str(), pSignedByView.to_string().c_str());
+ }
+ return true;
+}
+ /*}}}*/
+// ReleaseIndex::IsTrusted /*{{{*/
+bool debReleaseIndex::IsTrusted() const
+{
+ if (Trusted == TRI_YES)
+ return true;
+ else if (Trusted == TRI_NO)
+ return false;
+
+
+ if(_config->FindB("APT::Authentication::TrustCDROM", false))
+ if(URI.substr(0,strlen("cdrom:")) == "cdrom:")
+ return true;
+
+ if (FileExists(MetaIndexFile("Release.gpg")))
+ return true;
+
+ return FileExists(MetaIndexFile("InRelease"));
+}
+ /*}}}*/
+bool debReleaseIndex::IsArchitectureSupported(std::string const &arch) const/*{{{*/
+{
+ if (d->Architectures.empty())
+ return true;
+ return std::find(d->Architectures.begin(), d->Architectures.end(), arch) != d->Architectures.end();
+}
+ /*}}}*/
+bool debReleaseIndex::IsArchitectureAllSupportedFor(IndexTarget const &target) const/*{{{*/
+{
+ if (target.Options.find("Force-Support-For-All") != target.Options.end())
+ return true;
+ if (IsArchitectureSupported("all") == false)
+ return false;
+ if (d->NoSupportForAll.empty())
+ return true;
+ return std::find(d->NoSupportForAll.begin(), d->NoSupportForAll.end(), target.Option(IndexTarget::CREATED_BY)) == d->NoSupportForAll.end();
+}
+ /*}}}*/
+std::vector <pkgIndexFile *> *debReleaseIndex::GetIndexFiles() /*{{{*/
+{
+ if (Indexes != NULL)
+ return Indexes;
+
+ Indexes = new std::vector<pkgIndexFile*>();
+ bool const istrusted = IsTrusted();
+ for (auto const &T: GetIndexTargets())
+ {
+ std::string const TargetName = T.Option(IndexTarget::CREATED_BY);
+ if (TargetName == "Packages")
+ Indexes->push_back(new debPackagesIndex(T, istrusted));
+ else if (TargetName == "Sources")
+ Indexes->push_back(new debSourcesIndex(T, istrusted));
+ else if (TargetName == "Translations")
+ Indexes->push_back(new debTranslationsIndex(T));
+ }
+ return Indexes;
+}
+ /*}}}*/
+std::map<std::string, std::string> debReleaseIndex::GetReleaseOptions()
+{
+ return d->ReleaseOptions;
+}
+
+static bool ReleaseFileName(debReleaseIndex const * const That, std::string &ReleaseFile)/*{{{*/
+{
+ ReleaseFile = That->MetaIndexFile("InRelease");
+ bool releaseExists = false;
+ if (FileExists(ReleaseFile) == true)
+ releaseExists = true;
+ else
+ {
+ ReleaseFile = That->MetaIndexFile("Release");
+ if (FileExists(ReleaseFile))
+ releaseExists = true;
+ }
+ return releaseExists;
+}
+ /*}}}*/
+bool debReleaseIndex::Merge(pkgCacheGenerator &Gen,OpProgress * /*Prog*/) const/*{{{*/
+{
+ std::string ReleaseFile;
+ bool const releaseExists = ReleaseFileName(this, ReleaseFile);
+
+ ::URI Tmp(URI);
+ if (Gen.SelectReleaseFile(ReleaseFile, Tmp.Host) == false)
+ return _error->Error("Problem with SelectReleaseFile %s", ReleaseFile.c_str());
+
+ if (releaseExists == false)
+ return true;
+
+ FileFd Rel;
+ // Beware: The 'Release' file might be clearsigned in case the
+ // signature for an 'InRelease' file couldn't be checked
+ if (OpenMaybeClearSignedFile(ReleaseFile, Rel) == false)
+ return false;
+
+ // Store the IMS information
+ pkgCache::RlsFileIterator File = Gen.GetCurRlsFile();
+ pkgCacheGenerator::Dynamic<pkgCache::RlsFileIterator> DynFile(File);
+ // Rel can't be used as this is potentially a temporary file
+ struct stat Buf;
+ if (stat(ReleaseFile.c_str(), &Buf) != 0)
+ return _error->Errno("fstat", "Unable to stat file %s", ReleaseFile.c_str());
+ File->Size = Buf.st_size;
+ File->mtime = Buf.st_mtime;
+
+ pkgTagFile TagFile(&Rel, Rel.Size());
+ pkgTagSection Section;
+ if (Rel.IsOpen() == false || Rel.Failed() || TagFile.Step(Section) == false)
+ return false;
+
+ std::string data;
+ #define APT_INRELEASE(TYPE, TAG, STORE) \
+ data = Section.FindS(TAG); \
+ if (data.empty() == false) \
+ { \
+ map_stringitem_t const storage = Gen.StoreString(pkgCacheGenerator::TYPE, data); \
+ if (storage == 0) return false; \
+ STORE = storage; \
+ }
+ APT_INRELEASE(MIXED, "Suite", File->Archive)
+ APT_INRELEASE(VERSIONNUMBER, "Version", File->Version)
+ APT_INRELEASE(MIXED, "Origin", File->Origin)
+ APT_INRELEASE(MIXED, "Codename", File->Codename)
+ APT_INRELEASE(MIXED, "Label", File->Label)
+ #undef APT_INRELEASE
+ Section.FindFlag("NotAutomatic", File->Flags, pkgCache::Flag::NotAutomatic);
+ Section.FindFlag("ButAutomaticUpgrades", File->Flags, pkgCache::Flag::ButAutomaticUpgrades);
+
+ return true;
+}
+ /*}}}*/
+// ReleaseIndex::FindInCache - Find this index /*{{{*/
+pkgCache::RlsFileIterator debReleaseIndex::FindInCache(pkgCache &Cache, bool const ModifyCheck) const
+{
+ std::string ReleaseFile;
+ bool const releaseExists = ReleaseFileName(this, ReleaseFile);
+
+ pkgCache::RlsFileIterator File = Cache.RlsFileBegin();
+ for (; File.end() == false; ++File)
+ {
+ if (File->FileName == 0 || ReleaseFile != File.FileName())
+ continue;
+
+ // empty means the file does not exist by "design"
+ if (ModifyCheck == false || (releaseExists == false && File->Size == 0))
+ return File;
+
+ struct stat St;
+ if (stat(File.FileName(),&St) != 0)
+ {
+ if (_config->FindB("Debug::pkgCacheGen", false))
+ std::clog << "ReleaseIndex::FindInCache - stat failed on " << File.FileName() << std::endl;
+ return pkgCache::RlsFileIterator(Cache);
+ }
+ if ((unsigned)St.st_size != File->Size || St.st_mtime != File->mtime)
+ {
+ if (_config->FindB("Debug::pkgCacheGen", false))
+ std::clog << "ReleaseIndex::FindInCache - size (" << St.st_size << " <> " << File->Size
+ << ") or mtime (" << St.st_mtime << " <> " << File->mtime
+ << ") doesn't match for " << File.FileName() << std::endl;
+ return pkgCache::RlsFileIterator(Cache);
+ }
+ return File;
+ }
+
+ return File;
+}
+ /*}}}*/
+
+class APT_HIDDEN debSLTypeDebian : public pkgSourceList::Type /*{{{*/
+{
+ static std::vector<std::string> getDefaultSetOf(std::string const &Name,
+ std::map<std::string, std::string> const &Options, std::vector<std::string> const &defaultValues)
+ {
+ auto const val = Options.find(Name);
+ if (val != Options.end())
+ return VectorizeString(val->second, ',');
+ return defaultValues;
+ }
+ static std::vector<std::string> applyPlusMinusOptions(std::string const &Name,
+ std::map<std::string, std::string> const &Options, std::vector<std::string> &&Values)
+ {
+ auto val = Options.find(Name + "+");
+ if (val != Options.end())
+ {
+ std::vector<std::string> const plus = VectorizeString(val->second, ',');
+ std::copy_if(plus.begin(), plus.end(), std::back_inserter(Values), [&Values](std::string const &v) {
+ return std::find(Values.begin(), Values.end(), v) == Values.end();
+ });
+ }
+ if ((val = Options.find(Name + "-")) != Options.end())
+ {
+ std::vector<std::string> const minus = VectorizeString(val->second, ',');
+ Values.erase(std::remove_if(Values.begin(), Values.end(), [&minus](std::string const &v) {
+ return std::find(minus.begin(), minus.end(), v) != minus.end();
+ }), Values.end());
+ }
+ return Values;
+ }
+ static std::vector<std::string> parsePlusMinusOptions(std::string const &Name,
+ std::map<std::string, std::string> const &Options, std::vector<std::string> const &defaultValues)
+ {
+ return applyPlusMinusOptions(Name, Options, getDefaultSetOf(Name, Options, defaultValues));
+ }
+ static std::vector<std::string> parsePlusMinusArchOptions(std::string const &Name,
+ std::map<std::string, std::string> const &Options)
+ {
+ auto Values = getDefaultSetOf(Name, Options, APT::Configuration::getArchitectures());
+ // all is a very special architecture users shouldn't be concerned with explicitly
+ // but if the user does, do not override the choice
+ auto const val = Options.find(Name + "-");
+ if (val != Options.end())
+ {
+ std::vector<std::string> const minus = VectorizeString(val->second, ',');
+ if (std::find(minus.begin(), minus.end(), "all") != minus.end())
+ return applyPlusMinusOptions(Name, Options, std::move(Values));
+ }
+ Values = applyPlusMinusOptions(Name, Options, std::move(Values));
+ if (std::find(Values.begin(), Values.end(), "all") == Values.end())
+ Values.push_back("implicit:all");
+ return Values;
+ }
+ static std::vector<std::string> parsePlusMinusTargetOptions(char const * const Name,
+ std::map<std::string, std::string> const &Options)
+ {
+ std::vector<std::string> const alltargets = _config->FindVector(std::string("Acquire::IndexTargets::") + Name, "", true);
+ std::vector<std::string> deftargets;
+ deftargets.reserve(alltargets.size());
+ std::copy_if(alltargets.begin(), alltargets.end(), std::back_inserter(deftargets), [&](std::string const &t) {
+ std::string c = "Acquire::IndexTargets::";
+ c.append(Name).append("::").append(t).append("::DefaultEnabled");
+ return _config->FindB(c, true);
+ });
+ std::vector<std::string> mytargets = parsePlusMinusOptions("target", Options, deftargets);
+ for (auto const &target : alltargets)
+ {
+ std::map<std::string, std::string>::const_iterator const opt = Options.find(target);
+ if (opt == Options.end())
+ continue;
+ auto const idMatch = [&](std::string const &t) {
+ return target == _config->Find(std::string("Acquire::IndexTargets::") + Name + "::" + t + "::Identifier", t);
+ };
+ if (StringToBool(opt->second))
+ std::copy_if(alltargets.begin(), alltargets.end(), std::back_inserter(mytargets), idMatch);
+ else
+ mytargets.erase(std::remove_if(mytargets.begin(), mytargets.end(), idMatch), mytargets.end());
+ }
+ // if we can't order it in a 1000 steps we give up… probably a cycle
+ for (auto i = 0; i < 1000; ++i)
+ {
+ bool Changed = false;
+ for (auto t = mytargets.begin(); t != mytargets.end(); ++t)
+ {
+ std::string const fallback = _config->Find(std::string("Acquire::IndexTargets::") + Name + "::" + *t + "::Fallback-Of");
+ if (fallback.empty())
+ continue;
+ auto const faller = std::find(mytargets.begin(), mytargets.end(), fallback);
+ if (faller == mytargets.end() || faller < t)
+ continue;
+ Changed = true;
+ auto const tv = *t;
+ mytargets.erase(t);
+ mytargets.emplace_back(tv);
+ }
+ if (Changed == false)
+ break;
+ }
+ // remove duplicates without changing the order (in first appearance)
+ {
+ std::set<std::string> seenOnce;
+ mytargets.erase(std::remove_if(mytargets.begin(), mytargets.end(), [&](std::string const &t) {
+ return seenOnce.insert(t).second == false;
+ }), mytargets.end());
+ }
+ return mytargets;
+ }
+
+ metaIndex::TriState GetTriStateOption(std::map<std::string, std::string>const &Options, char const * const name) const
+ {
+ std::map<std::string, std::string>::const_iterator const opt = Options.find(name);
+ if (opt != Options.end())
+ return StringToBool(opt->second, false) ? metaIndex::TRI_YES : metaIndex::TRI_NO;
+ return metaIndex::TRI_DONTCARE;
+ }
+
+ static time_t GetTimeOption(std::map<std::string, std::string>const &Options, char const * const name)
+ {
+ std::map<std::string, std::string>::const_iterator const opt = Options.find(name);
+ if (opt == Options.end())
+ return 0;
+ return strtoull(opt->second.c_str(), NULL, 10);
+ }
+
+ static bool GetBoolOption(std::map<std::string, std::string> const &Options, char const * const name, bool const defVal)
+ {
+ std::map<std::string, std::string>::const_iterator const opt = Options.find(name);
+ if (opt == Options.end())
+ return defVal;
+ return StringToBool(opt->second, defVal);
+ }
+
+ static std::vector<std::string> GetMapKeys(std::map<std::string, std::string> const &Options)
+ {
+ std::vector<std::string> ret;
+ ret.reserve(Options.size());
+ for (auto &&O: Options)
+ ret.emplace_back(O.first);
+ std::sort(ret.begin(), ret.end());
+ return ret;
+ }
+
+ static bool MapsAreEqual(std::map<std::string, std::string> const &OptionsA,
+ std::map<std::string, std::string> const &OptionsB,
+ std::string const &URI, std::string const &Dist)
+ {
+ auto const KeysA = GetMapKeys(OptionsA);
+ auto const KeysB = GetMapKeys(OptionsB);
+ auto const m = std::mismatch(KeysA.begin(), KeysA.end(), KeysB.begin());
+ if (m.first != KeysA.end())
+ {
+ if (std::find(KeysB.begin(), KeysB.end(), *m.first) == KeysB.end())
+ return _error->Error(_("Conflicting values set for option %s regarding source %s %s"), m.first->c_str(), "<set>", "<unset>");
+ else
+ return _error->Error(_("Conflicting values set for option %s regarding source %s %s"), m.second->c_str(), "<set>", "<unset>");
+ }
+ if (m.second != KeysB.end())
+ {
+ if (std::find(KeysA.begin(), KeysA.end(), *m.second) == KeysA.end())
+ return _error->Error(_("Conflicting values set for option %s regarding source %s %s"), m.first->c_str(), "<set>", "<unset>");
+ else
+ return _error->Error(_("Conflicting values set for option %s regarding source %s %s"), m.second->c_str(), "<set>", "<unset>");
+ }
+ for (auto&& key: KeysA)
+ {
+ if (key == "BASE_URI" || key == "REPO_URI")
+ continue;
+ auto const a = OptionsA.find(key);
+ auto const b = OptionsB.find(key);
+ if (unlikely(a == OptionsA.end() || b == OptionsB.end()) || a->second != b->second)
+ return _error->Error(_("Conflicting values set for option %s regarding source %s %s"), key.c_str(), URI.c_str(), Dist.c_str());
+ }
+ return true;
+ }
+
+ static debReleaseIndex * GetDebReleaseIndexBy(std::vector<metaIndex *> &List, std::string const &URI,
+ std::string const &Dist, std::map<std::string, std::string> const &Options)
+ {
+ std::map<std::string,std::string> ReleaseOptions = {{
+ { "BASE_URI", constructMetaIndexURI(URI, Dist, "") },
+ { "REPO_URI", URI },
+ }};
+ if (GetBoolOption(Options, "allow-insecure", _config->FindB("Acquire::AllowInsecureRepositories")))
+ ReleaseOptions.emplace("ALLOW_INSECURE", "true");
+ if (GetBoolOption(Options, "allow-weak", _config->FindB("Acquire::AllowWeakRepositories")))
+ ReleaseOptions.emplace("ALLOW_WEAK", "true");
+ if (GetBoolOption(Options, "allow-downgrade-to-insecure", _config->FindB("Acquire::AllowDowngradeToInsecureRepositories")))
+ ReleaseOptions.emplace("ALLOW_DOWNGRADE_TO_INSECURE", "true");
+
+ debReleaseIndex * Deb = nullptr;
+ std::string const FileName = URItoFileName(constructMetaIndexURI(URI, Dist, "Release"));
+ for (auto const &I: List)
+ {
+ // We only worry about debian entries here
+ if (strcmp(I->GetType(), "deb") != 0)
+ continue;
+
+ auto const D = dynamic_cast<debReleaseIndex*>(I);
+ if (unlikely(D == nullptr))
+ continue;
+
+ /* This check ensures that there will be only one Release file
+ queued for all the Packages files and Sources files it
+ corresponds to. */
+ if (URItoFileName(D->MetaIndexURI("Release")) == FileName)
+ {
+ if (MapsAreEqual(ReleaseOptions, D->GetReleaseOptions(), URI, Dist) == false)
+ return nullptr;
+ Deb = D;
+ break;
+ }
+ }
+
+ // No currently created Release file indexes this entry, so we create a new one.
+ if (Deb == nullptr)
+ {
+ Deb = new debReleaseIndex(URI, Dist, ReleaseOptions);
+ List.push_back(Deb);
+ }
+ return Deb;
+ }
+
+ protected:
+
+ bool CreateItemInternal(std::vector<metaIndex *> &List, std::string const &URI,
+ std::string const &Dist, std::string const &Section,
+ bool const &IsSrc, std::map<std::string, std::string> const &Options) const
+ {
+ auto const Deb = GetDebReleaseIndexBy(List, URI, Dist, Options);
+
+ bool const UsePDiffs = GetBoolOption(Options, "pdiffs", _config->FindB("Acquire::PDiffs", true));
+
+ std::string UseByHash = _config->Find("APT::Acquire::By-Hash", "yes");
+ UseByHash = _config->Find("Acquire::By-Hash", UseByHash);
+ {
+ std::string const host = ::URI(URI).Host;
+ if (host.empty() == false)
+ {
+ UseByHash = _config->Find("APT::Acquire::" + host + "::By-Hash", UseByHash);
+ UseByHash = _config->Find("Acquire::" + host + "::By-Hash", UseByHash);
+ }
+ std::map<std::string, std::string>::const_iterator const opt = Options.find("by-hash");
+ if (opt != Options.end())
+ UseByHash = opt->second;
+ }
+
+ auto const entry = Options.find("sourceslist-entry");
+ Deb->AddComponent(
+ entry->second,
+ IsSrc,
+ Section,
+ parsePlusMinusTargetOptions(Name, Options),
+ parsePlusMinusArchOptions("arch", Options),
+ parsePlusMinusOptions("lang", Options, APT::Configuration::getLanguages(true)),
+ UsePDiffs,
+ UseByHash
+ );
+
+ if (Deb->SetTrusted(GetTriStateOption(Options, "trusted")) == false ||
+ Deb->SetCheckValidUntil(GetTriStateOption(Options, "check-valid-until")) == false ||
+ Deb->SetValidUntilMax(GetTimeOption(Options, "valid-until-max")) == false ||
+ Deb->SetValidUntilMin(GetTimeOption(Options, "valid-until-min")) == false)
+ return false;
+
+ std::map<std::string, std::string>::const_iterator const signedby = Options.find("signed-by");
+ if (signedby == Options.end())
+ {
+ bool alreadySet = false;
+ std::string filename;
+ if (ReleaseFileName(Deb, filename))
+ {
+ auto OldDeb = Deb->UnloadedClone();
+ _error->PushToStack();
+ OldDeb->Load(filename, nullptr);
+ bool const goodLoad = _error->PendingError() == false;
+ _error->RevertToStack();
+ if (goodLoad)
+ {
+ if (OldDeb->GetValidUntil() > 0)
+ {
+ time_t const invalid_since = time(NULL) - OldDeb->GetValidUntil();
+ if (invalid_since <= 0)
+ {
+ Deb->SetSignedBy(OldDeb->GetSignedBy());
+ alreadySet = true;
+ }
+ }
+ }
+ delete OldDeb;
+ }
+ if (alreadySet == false && Deb->SetSignedBy("") == false)
+ return false;
+ }
+ else
+ {
+ if (Deb->SetSignedBy(signedby->second) == false)
+ return false;
+ }
+
+ return true;
+ }
+
+ debSLTypeDebian(char const * const Name, char const * const Label) : Type(Name, Label)
+ {
+ }
+};
+ /*}}}*/
+class APT_HIDDEN debSLTypeDeb : public debSLTypeDebian /*{{{*/
+{
+ public:
+
+ bool CreateItem(std::vector<metaIndex *> &List, std::string const &URI,
+ std::string const &Dist, std::string const &Section,
+ std::map<std::string, std::string> const &Options) const APT_OVERRIDE
+ {
+ return CreateItemInternal(List, URI, Dist, Section, false, Options);
+ }
+
+ debSLTypeDeb() : debSLTypeDebian("deb", "Debian binary tree")
+ {
+ }
+};
+ /*}}}*/
+class APT_HIDDEN debSLTypeDebSrc : public debSLTypeDebian /*{{{*/
+{
+ public:
+
+ bool CreateItem(std::vector<metaIndex *> &List, std::string const &URI,
+ std::string const &Dist, std::string const &Section,
+ std::map<std::string, std::string> const &Options) const APT_OVERRIDE
+ {
+ return CreateItemInternal(List, URI, Dist, Section, true, Options);
+ }
+
+ debSLTypeDebSrc() : debSLTypeDebian("deb-src", "Debian source tree")
+ {
+ }
+};
+ /*}}}*/
+
+APT_HIDDEN debSLTypeDeb _apt_DebType;
+APT_HIDDEN debSLTypeDebSrc _apt_DebSrcType;
diff --git a/apt-pkg/deb/debmetaindex.h b/apt-pkg/deb/debmetaindex.h
new file mode 100644
index 000000000..f903617f7
--- /dev/null
+++ b/apt-pkg/deb/debmetaindex.h
@@ -0,0 +1,73 @@
+#ifndef PKGLIB_DEBMETAINDEX_H
+#define PKGLIB_DEBMETAINDEX_H
+
+#include <apt-pkg/metaindex.h>
+#include <apt-pkg/macros.h>
+
+#include <map>
+#include <string>
+#include <vector>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/sourcelist.h>
+#endif
+#ifndef APT_10_CLEANER_HEADERS
+#include <apt-pkg/init.h>
+#endif
+
+class pkgAcquire;
+class pkgIndexFile;
+class IndexTarget;
+class pkgCacheGenerator;
+class OpProgress;
+class debReleaseIndexPrivate;
+
+class APT_HIDDEN debReleaseIndex : public metaIndex
+{
+ debReleaseIndexPrivate * const d;
+
+ APT_HIDDEN bool parseSumData(const char *&Start, const char *End, std::string &Name,
+ std::string &Hash, unsigned long long &Size);
+ public:
+
+ APT_HIDDEN std::string MetaIndexInfo(const char *Type) const;
+ APT_HIDDEN std::string MetaIndexFile(const char *Types) const;
+ APT_HIDDEN std::string MetaIndexURI(const char *Type) const;
+
+ debReleaseIndex(std::string const &URI, std::string const &Dist, std::map<std::string,std::string> const &Options);
+ debReleaseIndex(std::string const &URI, std::string const &Dist, bool const Trusted, std::map<std::string,std::string> const &Options);
+ virtual ~debReleaseIndex();
+
+ virtual std::string ArchiveURI(std::string const &File) const APT_OVERRIDE {return URI + File;};
+ virtual bool GetIndexes(pkgAcquire *Owner, bool const &GetAll=false) APT_OVERRIDE;
+ virtual std::vector<IndexTarget> GetIndexTargets() const APT_OVERRIDE;
+
+ virtual std::string Describe() const APT_OVERRIDE;
+ virtual pkgCache::RlsFileIterator FindInCache(pkgCache &Cache, bool const ModifyCheck) const APT_OVERRIDE;
+ virtual bool Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const APT_OVERRIDE;
+
+ virtual bool Load(std::string const &Filename, std::string * const ErrorText) APT_OVERRIDE;
+ virtual metaIndex * UnloadedClone() const APT_OVERRIDE;
+
+ virtual std::vector <pkgIndexFile *> *GetIndexFiles() APT_OVERRIDE;
+
+ bool SetTrusted(TriState const Trusted);
+ bool SetCheckValidUntil(TriState const Trusted);
+ bool SetValidUntilMin(time_t const Valid);
+ bool SetValidUntilMax(time_t const Valid);
+ bool SetSignedBy(std::string const &SignedBy);
+ std::map<std::string, std::string> GetReleaseOptions();
+
+ virtual bool IsTrusted() const APT_OVERRIDE;
+ bool IsArchitectureSupported(std::string const &arch) const;
+ bool IsArchitectureAllSupportedFor(IndexTarget const &target) const;
+
+ void AddComponent(std::string const &sourcesEntry,
+ bool const isSrc, std::string const &Name,
+ std::vector<std::string> const &Targets,
+ std::vector<std::string> const &Architectures,
+ std::vector<std::string> Languages,
+ bool const usePDiffs, std::string const &useByHash);
+};
+
+#endif
diff --git a/apt-pkg/deb/debrecords.cc b/apt-pkg/deb/debrecords.cc
new file mode 100644
index 000000000..a132f34a6
--- /dev/null
+++ b/apt-pkg/deb/debrecords.cc
@@ -0,0 +1,229 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: debrecords.cc,v 1.10 2001/03/13 06:51:46 jgg Exp $
+/* ######################################################################
+
+ Debian Package Records - Parser for debian package records
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/debrecords.h>
+#include <apt-pkg/debindexfile.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/error.h>
+
+#include <string.h>
+#include <algorithm>
+#include <sstream>
+#include <string>
+#include <vector>
+#include <langinfo.h>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using std::string;
+
+// RecordParser::debRecordParser - Constructor /*{{{*/
+debRecordParser::debRecordParser(string FileName,pkgCache &Cache) :
+ debRecordParserBase(), d(NULL), File(FileName, FileFd::ReadOnly, FileFd::Extension),
+ Tags(&File, std::max(Cache.Head().MaxVerFileSize, Cache.Head().MaxDescFileSize) + 200)
+{
+}
+ /*}}}*/
+// RecordParser::Jump - Jump to a specific record /*{{{*/
+bool debRecordParser::Jump(pkgCache::VerFileIterator const &Ver)
+{
+ if (Ver.end() == true)
+ return false;
+ return Tags.Jump(Section,Ver->Offset);
+}
+bool debRecordParser::Jump(pkgCache::DescFileIterator const &Desc)
+{
+ if (Desc.end() == true)
+ return false;
+ return Tags.Jump(Section,Desc->Offset);
+}
+ /*}}}*/
+debRecordParser::~debRecordParser() {}
+
+debRecordParserBase::debRecordParserBase() : Parser(), d(NULL) {}
+// RecordParserBase::FileName - Return the archive filename on the site /*{{{*/
+string debRecordParserBase::FileName()
+{
+ return Section.FindS("Filename");
+}
+ /*}}}*/
+// RecordParserBase::Name - Return the package name /*{{{*/
+string debRecordParserBase::Name()
+{
+ string Result = Section.FindS("Package");
+
+ // Normalize mixed case package names to lower case, like dpkg does
+ // See Bug#807012 for details
+ std::transform(Result.begin(), Result.end(), Result.begin(), tolower_ascii);
+
+ return Result;
+}
+ /*}}}*/
+// RecordParserBase::Homepage - Return the package homepage /*{{{*/
+string debRecordParserBase::Homepage()
+{
+ return Section.FindS("Homepage");
+}
+ /*}}}*/
+// RecordParserBase::Hashes - return the available archive hashes /*{{{*/
+HashStringList debRecordParserBase::Hashes() const
+{
+ HashStringList hashes;
+ for (char const * const * type = HashString::SupportedHashes(); *type != NULL; ++type)
+ {
+ std::string const hash = Section.FindS(*type);
+ if (hash.empty() == false)
+ hashes.push_back(HashString(*type, hash));
+ }
+ auto const size = Section.FindULL("Size", 0);
+ if (size != 0)
+ hashes.FileSize(size);
+ return hashes;
+}
+ /*}}}*/
+// RecordParserBase::Maintainer - Return the maintainer email /*{{{*/
+string debRecordParserBase::Maintainer()
+{
+ return Section.FindS("Maintainer");
+}
+ /*}}}*/
+// RecordParserBase::RecordField - Return the value of an arbitrary field /*{{*/
+string debRecordParserBase::RecordField(const char *fieldName)
+{
+ return Section.FindS(fieldName);
+}
+ /*}}}*/
+// RecordParserBase::ShortDesc - Return a 1 line description /*{{{*/
+string debRecordParserBase::ShortDesc(std::string const &lang)
+{
+ string const Res = LongDesc(lang);
+ if (Res.empty() == true)
+ return "";
+ string::size_type const Pos = Res.find('\n');
+ if (Pos == string::npos)
+ return Res;
+ return string(Res,0,Pos);
+}
+ /*}}}*/
+// RecordParserBase::LongDesc - Return a longer description /*{{{*/
+string debRecordParserBase::LongDesc(std::string const &lang)
+{
+ string orig;
+ if (lang.empty() == true)
+ {
+ std::vector<string> const lang = APT::Configuration::getLanguages();
+ for (std::vector<string>::const_iterator l = lang.begin();
+ l != lang.end(); ++l)
+ {
+ std::string const tagname = "Description-" + *l;
+ orig = Section.FindS(tagname.c_str());
+ if (orig.empty() == false)
+ break;
+ else if (*l == "en")
+ {
+ orig = Section.FindS("Description");
+ if (orig.empty() == false)
+ break;
+ }
+ }
+ if (orig.empty() == true)
+ orig = Section.FindS("Description");
+ }
+ else
+ {
+ std::string const tagname = "Description-" + lang;
+ orig = Section.FindS(tagname.c_str());
+ if (orig.empty() == true && lang == "en")
+ orig = Section.FindS("Description");
+ }
+
+ char const * const codeset = nl_langinfo(CODESET);
+ if (strcmp(codeset,"UTF-8") != 0) {
+ string dest;
+ UTF8ToCodeset(codeset, orig, &dest);
+ return dest;
+ }
+
+ return orig;
+}
+ /*}}}*/
+
+static const char * const SourceVerSeparators = " ()";
+// RecordParserBase::SourcePkg - Return the source package name if any /*{{{*/
+string debRecordParserBase::SourcePkg()
+{
+ string Res = Section.FindS("Source");
+ string::size_type Pos = Res.find_first_of(SourceVerSeparators);
+ if (Pos == string::npos)
+ return Res;
+ return string(Res,0,Pos);
+}
+ /*}}}*/
+// RecordParserBase::SourceVer - Return the source version number if present /*{{{*/
+string debRecordParserBase::SourceVer()
+{
+ string Pkg = Section.FindS("Source");
+ string::size_type Pos = Pkg.find_first_of(SourceVerSeparators);
+ if (Pos == string::npos)
+ return "";
+
+ string::size_type VerStart = Pkg.find_first_not_of(SourceVerSeparators, Pos);
+ if(VerStart == string::npos)
+ return "";
+
+ string::size_type VerEnd = Pkg.find_first_of(SourceVerSeparators, VerStart);
+ if(VerEnd == string::npos)
+ // Corresponds to the case of, e.g., "foo (1.2" without a closing
+ // paren. Be liberal and guess what it means.
+ return string(Pkg, VerStart);
+ else
+ return string(Pkg, VerStart, VerEnd - VerStart);
+}
+ /*}}}*/
+// RecordParserBase::GetRec - Return the whole record /*{{{*/
+void debRecordParserBase::GetRec(const char *&Start,const char *&Stop)
+{
+ Section.GetSection(Start,Stop);
+}
+ /*}}}*/
+debRecordParserBase::~debRecordParserBase() {}
+
+bool debDebFileRecordParser::LoadContent()
+{
+ // load content only once
+ if (controlContent.empty() == false)
+ return true;
+
+ std::ostringstream content;
+ if (debDebPkgFileIndex::GetContent(content, debFileName) == false)
+ return false;
+ // add two newlines to make sure the scanner finds the section,
+ // which is usually done by pkgTagFile automatically if needed.
+ content << "\n\n";
+
+ controlContent = content.str();
+ if (Section.Scan(controlContent.c_str(), controlContent.length()) == false)
+ return _error->Error(_("Unable to parse package file %s (%d)"), debFileName.c_str(), 3);
+ return true;
+}
+bool debDebFileRecordParser::Jump(pkgCache::VerFileIterator const &) { return LoadContent(); }
+bool debDebFileRecordParser::Jump(pkgCache::DescFileIterator const &) { return LoadContent(); }
+std::string debDebFileRecordParser::FileName() { return debFileName; }
+
+debDebFileRecordParser::debDebFileRecordParser(std::string FileName) : debRecordParserBase(), d(NULL), debFileName(FileName) {}
+debDebFileRecordParser::~debDebFileRecordParser() {}
diff --git a/apt-pkg/deb/debrecords.h b/apt-pkg/deb/debrecords.h
new file mode 100644
index 000000000..ae75a2b78
--- /dev/null
+++ b/apt-pkg/deb/debrecords.h
@@ -0,0 +1,93 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: debrecords.h,v 1.8 2001/03/13 06:51:46 jgg Exp $
+/* ######################################################################
+
+ Debian Package Records - Parser for debian package records
+
+ This provides display-type parsing for the Packages file. This is
+ different than the list parser which provides cache generation
+ services. There should be no overlap between these two.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_DEBRECORDS_H
+#define PKGLIB_DEBRECORDS_H
+
+#include <apt-pkg/pkgrecords.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/pkgcache.h>
+
+#include <string>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/indexfile.h>
+#endif
+
+class APT_HIDDEN debRecordParserBase : public pkgRecords::Parser
+{
+ void * const d;
+ protected:
+ pkgTagSection Section;
+
+ public:
+ // These refer to the archive file for the Version
+ virtual std::string FileName() APT_OVERRIDE;
+ virtual std::string SourcePkg() APT_OVERRIDE;
+ virtual std::string SourceVer() APT_OVERRIDE;
+
+ virtual HashStringList Hashes() const APT_OVERRIDE;
+
+ // These are some general stats about the package
+ virtual std::string Maintainer() APT_OVERRIDE;
+ virtual std::string ShortDesc(std::string const &lang) APT_OVERRIDE;
+ virtual std::string LongDesc(std::string const &lang) APT_OVERRIDE;
+ virtual std::string Name() APT_OVERRIDE;
+ virtual std::string Homepage() APT_OVERRIDE;
+
+ // An arbitrary custom field
+ virtual std::string RecordField(const char *fieldName) APT_OVERRIDE;
+
+ virtual void GetRec(const char *&Start,const char *&Stop) APT_OVERRIDE;
+
+ debRecordParserBase();
+ virtual ~debRecordParserBase();
+};
+
+class APT_HIDDEN debRecordParser : public debRecordParserBase
+{
+ void * const d;
+ protected:
+ FileFd File;
+ pkgTagFile Tags;
+
+ virtual bool Jump(pkgCache::VerFileIterator const &Ver) APT_OVERRIDE;
+ virtual bool Jump(pkgCache::DescFileIterator const &Desc) APT_OVERRIDE;
+
+ public:
+ debRecordParser(std::string FileName,pkgCache &Cache);
+ virtual ~debRecordParser();
+};
+
+// custom record parser that reads deb files directly
+class APT_HIDDEN debDebFileRecordParser : public debRecordParserBase
+{
+ void * const d;
+ std::string debFileName;
+ std::string controlContent;
+
+ APT_HIDDEN bool LoadContent();
+ protected:
+ // single file files, so no jumping whatsoever
+ bool Jump(pkgCache::VerFileIterator const &) APT_OVERRIDE;
+ bool Jump(pkgCache::DescFileIterator const &) APT_OVERRIDE;
+
+ public:
+ virtual std::string FileName() APT_OVERRIDE;
+
+ debDebFileRecordParser(std::string FileName);
+ virtual ~debDebFileRecordParser();
+};
+
+#endif
diff --git a/apt-pkg/deb/debsrcrecords.cc b/apt-pkg/deb/debsrcrecords.cc
new file mode 100644
index 000000000..d664b609e
--- /dev/null
+++ b/apt-pkg/deb/debsrcrecords.cc
@@ -0,0 +1,316 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: debsrcrecords.cc,v 1.6 2004/03/17 05:58:54 mdz Exp $
+/* ######################################################################
+
+ Debian Source Package Records - Parser implementation for Debian style
+ source indexes
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/deblistparser.h>
+#include <apt-pkg/debsrcrecords.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/srcrecords.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/gpgv.h>
+
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#include <algorithm>
+#include <string>
+#include <vector>
+ /*}}}*/
+
+using std::max;
+using std::string;
+
+debSrcRecordParser::debSrcRecordParser(std::string const &File,pkgIndexFile const *Index)
+ : Parser(Index), d(NULL), Tags(&Fd), iOffset(0), Buffer(NULL)
+{
+ if (File.empty() == false)
+ {
+ if (Fd.Open(File, FileFd::ReadOnly, FileFd::Extension))
+ Tags.Init(&Fd, 102400);
+ }
+}
+std::string debSrcRecordParser::Package() const /*{{{*/
+{
+ auto const name = Sect.FindS("Package");
+ if (iIndex == nullptr)
+ return name.empty() ? Sect.FindS("Source") : name;
+ else
+ return name;
+}
+ /*}}}*/
+// SrcRecordParser::Binaries - Return the binaries field /*{{{*/
+// ---------------------------------------------------------------------
+/* This member parses the binaries field into a pair of class arrays and
+ returns a list of strings representing all of the components of the
+ binaries field. The returned array need not be freed and will be
+ reused by the next Binaries function call. This function is commonly
+ used during scanning to find the right package */
+const char **debSrcRecordParser::Binaries()
+{
+ const char *Start, *End;
+ if (Sect.Find("Binary", Start, End) == false)
+ return NULL;
+ for (; isspace_ascii(*Start) != 0; ++Start);
+ if (Start >= End)
+ return NULL;
+
+ StaticBinList.clear();
+ free(Buffer);
+ Buffer = strndup(Start, End - Start);
+
+ char* bin = Buffer;
+ do {
+ char* binStartNext = strchrnul(bin, ',');
+ // Found a comma, clean up any space before it
+ if (binStartNext > Buffer) {
+ char* binEnd = binStartNext - 1;
+ for (; binEnd > Buffer && isspace_ascii(*binEnd) != 0; --binEnd)
+ *binEnd = 0;
+ }
+ StaticBinList.push_back(bin);
+ if (*binStartNext != ',')
+ break;
+ *binStartNext = '\0';
+ for (bin = binStartNext + 1; isspace_ascii(*bin) != 0; ++bin)
+ ;
+ } while (*bin != '\0');
+ StaticBinList.push_back(NULL);
+
+ return &StaticBinList[0];
+}
+ /*}}}*/
+// SrcRecordParser::BuildDepends - Return the Build-Depends information /*{{{*/
+// ---------------------------------------------------------------------
+/* This member parses the build-depends information and returns a list of
+ package/version records representing the build dependency. The returned
+ array need not be freed and will be reused by the next call to this
+ function */
+bool debSrcRecordParser::BuildDepends(std::vector<pkgSrcRecords::Parser::BuildDepRec> &BuildDeps,
+ bool const &ArchOnly, bool const &StripMultiArch)
+{
+ unsigned int I;
+ const char *Start, *Stop;
+ BuildDepRec rec;
+ const char *fields[] = {"Build-Depends",
+ "Build-Depends-Indep",
+ "Build-Conflicts",
+ "Build-Conflicts-Indep",
+ "Build-Depends-Arch",
+ "Build-Conflicts-Arch"};
+
+ BuildDeps.clear();
+
+ for (I = 0; I < 6; I++)
+ {
+ if (ArchOnly && (I == 1 || I == 3))
+ continue;
+
+ if (Sect.Find(fields[I], Start, Stop) == false)
+ continue;
+
+ while (1)
+ {
+ Start = debListParser::ParseDepends(Start, Stop,
+ rec.Package,rec.Version,rec.Op,true,StripMultiArch,true);
+
+ if (Start == 0)
+ return _error->Error("Problem parsing dependency: %s", fields[I]);
+ rec.Type = I;
+
+ // We parsed a package that was ignored (wrong architecture restriction
+ // or something).
+ if (rec.Package == "") {
+ // If we are in an OR group, we need to set the "Or" flag of the
+ // previous entry to our value.
+ if (BuildDeps.size() > 0 && (BuildDeps[BuildDeps.size() - 1].Op & pkgCache::Dep::Or) == pkgCache::Dep::Or) {
+ BuildDeps[BuildDeps.size() - 1].Op &= ~pkgCache::Dep::Or;
+ BuildDeps[BuildDeps.size() - 1].Op |= (rec.Op & pkgCache::Dep::Or);
+ }
+ } else {
+ BuildDeps.push_back(rec);
+ }
+
+ if (Start == Stop)
+ break;
+ }
+ }
+
+ return true;
+}
+ /*}}}*/
+// SrcRecordParser::Files - Return a list of files for this source /*{{{*/
+// ---------------------------------------------------------------------
+/* This parses the list of files and returns it, each file is required to have
+ a complete source package */
+bool debSrcRecordParser::Files(std::vector<pkgSrcRecords::File> &F)
+{
+ std::vector<pkgSrcRecords::File2> F2;
+ if (Files2(F2) == false)
+ return false;
+ for (std::vector<pkgSrcRecords::File2>::const_iterator f2 = F2.begin(); f2 != F2.end(); ++f2)
+ {
+ pkgSrcRecords::File2 f;
+#if __GNUC__ >= 4
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#endif
+ f.MD5Hash = f2->MD5Hash;
+ f.Size = f2->Size;
+#if __GNUC__ >= 4
+ #pragma GCC diagnostic pop
+#endif
+ f.Path = f2->Path;
+ f.Type = f2->Type;
+ F.push_back(f);
+ }
+ return true;
+}
+bool debSrcRecordParser::Files2(std::vector<pkgSrcRecords::File2> &List)
+{
+ List.clear();
+
+ // Stash the / terminated directory prefix
+ string Base = Sect.FindS("Directory");
+ if (Base.empty() == false && Base[Base.length()-1] != '/')
+ Base += '/';
+
+ std::vector<std::string> const compExts = APT::Configuration::getCompressorExtensions();
+
+ for (char const * const * type = HashString::SupportedHashes(); *type != NULL; ++type)
+ {
+ // derive field from checksum type
+ std::string checksumField("Checksums-");
+ if (strcmp(*type, "MD5Sum") == 0)
+ checksumField = "Files"; // historic name for MD5 checksums
+ else
+ checksumField.append(*type);
+
+ string const Files = Sect.FindS(checksumField.c_str());
+ if (Files.empty() == true)
+ continue;
+
+ // Iterate over the entire list grabbing each triplet
+ const char *C = Files.c_str();
+ while (*C != 0)
+ {
+ string hash, size, path;
+
+ // Parse each of the elements
+ if (ParseQuoteWord(C, hash) == false ||
+ ParseQuoteWord(C, size) == false ||
+ ParseQuoteWord(C, path) == false)
+ return _error->Error("Error parsing file record in %s of source package %s", checksumField.c_str(), Package().c_str());
+
+ if (iIndex == nullptr && checksumField == "Files")
+ {
+ // the Files field has a different format than the rest in deb-changes files
+ std::string ignore;
+ if (ParseQuoteWord(C, ignore) == false ||
+ ParseQuoteWord(C, path) == false)
+ return _error->Error("Error parsing file record in %s of source package %s", checksumField.c_str(), Package().c_str());
+ }
+
+ HashString const hashString(*type, hash);
+ if (Base.empty() == false)
+ path = Base + path;
+
+ // look if we have a record for this file already
+ std::vector<pkgSrcRecords::File2>::iterator file = List.begin();
+ for (; file != List.end(); ++file)
+ if (file->Path == path)
+ break;
+
+ // we have it already, store the new hash and be done
+ if (file != List.end())
+ {
+ if (checksumField == "Files")
+ APT_IGNORE_DEPRECATED(file->MD5Hash = hash;)
+ // an error here indicates that we have two different hashes for the same file
+ if (file->Hashes.push_back(hashString) == false)
+ return _error->Error("Error parsing checksum in %s of source package %s", checksumField.c_str(), Package().c_str());
+ continue;
+ }
+
+ // we haven't seen this file yet
+ pkgSrcRecords::File2 F;
+ F.Path = path;
+ F.FileSize = strtoull(size.c_str(), NULL, 10);
+ F.Hashes.push_back(hashString);
+ F.Hashes.FileSize(F.FileSize);
+
+ APT_IGNORE_DEPRECATED_PUSH
+ F.Size = F.FileSize;
+ if (checksumField == "Files")
+ F.MD5Hash = hash;
+ APT_IGNORE_DEPRECATED_POP
+
+ // Try to guess what sort of file it is we are getting.
+ string::size_type Pos = F.Path.length()-1;
+ while (1)
+ {
+ string::size_type Tmp = F.Path.rfind('.',Pos);
+ if (Tmp == string::npos)
+ break;
+ if (F.Type == "tar") {
+ // source v3 has extension 'debian.tar.*' instead of 'diff.*'
+ if (string(F.Path, Tmp+1, Pos-Tmp) == "debian")
+ F.Type = "diff";
+ break;
+ }
+ F.Type = string(F.Path,Tmp+1,Pos-Tmp);
+
+ if (std::find(compExts.begin(), compExts.end(), std::string(".").append(F.Type)) != compExts.end() ||
+ F.Type == "tar")
+ {
+ Pos = Tmp-1;
+ continue;
+ }
+
+ break;
+ }
+ List.push_back(F);
+ }
+ }
+
+ return true;
+}
+ /*}}}*/
+// SrcRecordParser::~SrcRecordParser - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+debSrcRecordParser::~debSrcRecordParser()
+{
+ // was allocated via strndup()
+ free(Buffer);
+}
+ /*}}}*/
+
+
+debDscRecordParser::debDscRecordParser(std::string const &DscFile, pkgIndexFile const *Index)
+ : debSrcRecordParser("", Index)
+{
+ // support clear signed files
+ if (OpenMaybeClearSignedFile(DscFile, Fd) == false)
+ {
+ _error->Error("Failed to open %s", DscFile.c_str());
+ return;
+ }
+
+ // re-init to ensure the updated Fd is used
+ Tags.Init(&Fd, pkgTagFile::SUPPORT_COMMENTS);
+ // read the first (and only) record
+ Step();
+
+}
diff --git a/apt-pkg/deb/debsrcrecords.h b/apt-pkg/deb/debsrcrecords.h
new file mode 100644
index 000000000..850040cf5
--- /dev/null
+++ b/apt-pkg/deb/debsrcrecords.h
@@ -0,0 +1,69 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: debsrcrecords.h,v 1.8 2004/03/17 05:58:54 mdz Exp $
+/* ######################################################################
+
+ Debian Source Package Records - Parser implementation for Debian style
+ source indexes
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_DEBSRCRECORDS_H
+#define PKGLIB_DEBSRCRECORDS_H
+
+#include <apt-pkg/srcrecords.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/fileutl.h>
+
+#include <stddef.h>
+#include <string>
+#include <vector>
+
+class pkgIndexFile;
+
+class APT_HIDDEN debSrcRecordParser : public pkgSrcRecords::Parser
+{
+ /** \brief dpointer placeholder (for later in case we need it) */
+ void * const d;
+
+ protected:
+ FileFd Fd;
+ pkgTagFile Tags;
+ pkgTagSection Sect;
+ std::vector<const char*> StaticBinList;
+ unsigned long iOffset;
+ char *Buffer;
+
+ public:
+
+ virtual bool Restart() APT_OVERRIDE {return Jump(0);};
+ virtual bool Step() APT_OVERRIDE {iOffset = Tags.Offset(); return Tags.Step(Sect);};
+ virtual bool Jump(unsigned long const &Off) APT_OVERRIDE {iOffset = Off; return Tags.Jump(Sect,Off);};
+
+ virtual std::string Package() const APT_OVERRIDE;
+ virtual std::string Version() const APT_OVERRIDE {return Sect.FindS("Version");};
+ virtual std::string Maintainer() const APT_OVERRIDE {return Sect.FindS("Maintainer");};
+ virtual std::string Section() const APT_OVERRIDE {return Sect.FindS("Section");};
+ virtual const char **Binaries() APT_OVERRIDE;
+ virtual bool BuildDepends(std::vector<BuildDepRec> &BuildDeps, bool const &ArchOnly, bool const &StripMultiArch = true) APT_OVERRIDE;
+ virtual unsigned long Offset() APT_OVERRIDE {return iOffset;};
+ virtual std::string AsStr() APT_OVERRIDE
+ {
+ const char *Start=0,*Stop=0;
+ Sect.GetSection(Start,Stop);
+ return std::string(Start,Stop);
+ };
+ virtual bool Files(std::vector<pkgSrcRecords::File> &F) APT_OVERRIDE;
+ bool Files2(std::vector<pkgSrcRecords::File2> &F);
+
+ debSrcRecordParser(std::string const &File,pkgIndexFile const *Index);
+ virtual ~debSrcRecordParser();
+};
+
+class APT_HIDDEN debDscRecordParser : public debSrcRecordParser
+{
+ public:
+ debDscRecordParser(std::string const &DscFile, pkgIndexFile const *Index);
+};
+
+#endif
diff --git a/apt-pkg/deb/debsystem.cc b/apt-pkg/deb/debsystem.cc
new file mode 100644
index 000000000..899f7328b
--- /dev/null
+++ b/apt-pkg/deb/debsystem.cc
@@ -0,0 +1,439 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: debsystem.cc,v 1.4 2004/01/26 17:01:53 mdz Exp $
+/* ######################################################################
+
+ System - Abstraction for running on different systems.
+
+ Basic general structure..
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/debsystem.h>
+#include <apt-pkg/debversion.h>
+#include <apt-pkg/debindexfile.h>
+#include <apt-pkg/dpkgpm.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#include <algorithm>
+
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#include <string>
+#include <vector>
+#include <unistd.h>
+#include <dirent.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <fcntl.h>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using std::string;
+
+debSystem debSys;
+
+class APT_HIDDEN debSystemPrivate {
+public:
+ debSystemPrivate() : LockFD(-1), LockCount(0), StatusFile(0)
+ {
+ }
+ // For locking support
+ int LockFD;
+ unsigned LockCount;
+
+ debStatusIndex *StatusFile;
+};
+
+// System::debSystem - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+debSystem::debSystem() : pkgSystem("Debian dpkg interface", &debVS), d(new debSystemPrivate())
+{
+}
+ /*}}}*/
+// System::~debSystem - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+debSystem::~debSystem()
+{
+ delete d->StatusFile;
+ delete d;
+}
+ /*}}}*/
+// System::Lock - Get the lock /*{{{*/
+// ---------------------------------------------------------------------
+/* This mirrors the operations dpkg does when it starts up. Note the
+ checking of the updates directory. */
+bool debSystem::Lock()
+{
+ // Disable file locking
+ if (_config->FindB("Debug::NoLocking",false) == true || d->LockCount > 1)
+ {
+ d->LockCount++;
+ return true;
+ }
+
+ // Create the lockfile
+ string AdminDir = flNotFile(_config->FindFile("Dir::State::status"));
+ d->LockFD = GetLock(AdminDir + "lock");
+ if (d->LockFD == -1)
+ {
+ if (errno == EACCES || errno == EAGAIN)
+ return _error->Error(_("Unable to lock the administration directory (%s), "
+ "is another process using it?"),AdminDir.c_str());
+ else
+ return _error->Error(_("Unable to lock the administration directory (%s), "
+ "are you root?"),AdminDir.c_str());
+ }
+
+ // See if we need to abort with a dirty journal
+ if (CheckUpdates() == true)
+ {
+ close(d->LockFD);
+ d->LockFD = -1;
+ const char *cmd;
+ if (getenv("SUDO_USER") != NULL)
+ cmd = "sudo dpkg --configure -a";
+ else
+ cmd = "dpkg --configure -a";
+ // TRANSLATORS: the %s contains the recovery command, usually
+ // dpkg --configure -a
+ return _error->Error(_("dpkg was interrupted, you must manually "
+ "run '%s' to correct the problem. "), cmd);
+ }
+
+ d->LockCount++;
+
+ return true;
+}
+ /*}}}*/
+// System::UnLock - Drop a lock /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool debSystem::UnLock(bool NoErrors)
+{
+ if (d->LockCount == 0 && NoErrors == true)
+ return false;
+
+ if (d->LockCount < 1)
+ return _error->Error(_("Not locked"));
+ if (--d->LockCount == 0)
+ {
+ close(d->LockFD);
+ d->LockCount = 0;
+ }
+
+ return true;
+}
+ /*}}}*/
+// System::CheckUpdates - Check if the updates dir is dirty /*{{{*/
+// ---------------------------------------------------------------------
+/* This does a check of the updates directory (dpkg journal) to see if it has
+ any entries in it. */
+bool debSystem::CheckUpdates()
+{
+ // Check for updates.. (dirty)
+ string File = flNotFile(_config->FindFile("Dir::State::status")) + "updates/";
+ DIR *DirP = opendir(File.c_str());
+ if (DirP == 0)
+ return false;
+
+ /* We ignore any files that are not all digits, this skips .,.. and
+ some tmp files dpkg will leave behind.. */
+ bool Damaged = false;
+ for (struct dirent *Ent = readdir(DirP); Ent != 0; Ent = readdir(DirP))
+ {
+ Damaged = true;
+ for (unsigned int I = 0; Ent->d_name[I] != 0; I++)
+ {
+ // Check if its not a digit..
+ if (isdigit(Ent->d_name[I]) == 0)
+ {
+ Damaged = false;
+ break;
+ }
+ }
+ if (Damaged == true)
+ break;
+ }
+ closedir(DirP);
+
+ return Damaged;
+}
+ /*}}}*/
+// System::CreatePM - Create the underlying package manager /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgPackageManager *debSystem::CreatePM(pkgDepCache *Cache) const
+{
+ return new pkgDPkgPM(Cache);
+}
+ /*}}}*/
+// System::Initialize - Setup the configuration space.. /*{{{*/
+// ---------------------------------------------------------------------
+/* These are the Debian specific configuration variables.. */
+static std::string getDpkgStatusLocation(Configuration const &Cnf) {
+ Configuration PathCnf;
+ PathCnf.Set("Dir", Cnf.Find("Dir", "/"));
+ PathCnf.Set("Dir::State::status", "status");
+ auto const cnfstatedir = Cnf.Find("Dir::State", STATE_DIR + 1);
+ // if the state dir ends in apt, replace it with dpkg -
+ // for the default this gives us the same as the fallback below.
+ // This can't be a ../dpkg as that would play bad with symlinks
+ std::string statedir;
+ if (APT::String::Endswith(cnfstatedir, "/apt/"))
+ statedir.assign(cnfstatedir, 0, cnfstatedir.length() - 5);
+ else if (APT::String::Endswith(cnfstatedir, "/apt"))
+ statedir.assign(cnfstatedir, 0, cnfstatedir.length() - 4);
+ if (statedir.empty())
+ PathCnf.Set("Dir::State", "var/lib/dpkg");
+ else
+ PathCnf.Set("Dir::State", flCombine(statedir, "dpkg"));
+ return PathCnf.FindFile("Dir::State::status");
+}
+bool debSystem::Initialize(Configuration &Cnf)
+{
+ /* These really should be jammed into a generic 'Local Database' engine
+ which is yet to be determined. The functions in pkgcachegen should
+ be the only users of these */
+ Cnf.CndSet("Dir::State::extended_states", "extended_states");
+ if (Cnf.Exists("Dir::State::status") == false)
+ Cnf.Set("Dir::State::status", getDpkgStatusLocation(Cnf));
+ Cnf.CndSet("Dir::Bin::dpkg",BIN_DIR"/dpkg");
+
+ if (d->StatusFile) {
+ delete d->StatusFile;
+ d->StatusFile = 0;
+ }
+
+ return true;
+}
+ /*}}}*/
+// System::ArchiveSupported - Is a file format supported /*{{{*/
+// ---------------------------------------------------------------------
+/* The standard name for a deb is 'deb'.. There are no separate versions
+ of .deb to worry about.. */
+APT_PURE bool debSystem::ArchiveSupported(const char *Type)
+{
+ if (strcmp(Type,"deb") == 0)
+ return true;
+ return false;
+}
+ /*}}}*/
+// System::Score - Determine how 'Debiany' this sys is.. /*{{{*/
+// ---------------------------------------------------------------------
+/* We check some files that are sure tell signs of this being a Debian
+ System.. */
+signed debSystem::Score(Configuration const &Cnf)
+{
+ signed Score = 0;
+ if (FileExists(Cnf.FindFile("Dir::State::status",getDpkgStatusLocation(Cnf).c_str())) == true)
+ Score += 10;
+ if (FileExists(Cnf.Find("Dir::Bin::dpkg",BIN_DIR"/dpkg")) == true)
+ Score += 10;
+ if (FileExists("/etc/debian_version") == true)
+ Score += 10;
+ return Score;
+}
+ /*}}}*/
+// System::AddStatusFiles - Register the status files /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool debSystem::AddStatusFiles(std::vector<pkgIndexFile *> &List)
+{
+ if (d->StatusFile == 0)
+ d->StatusFile = new debStatusIndex(_config->FindFile("Dir::State::status"));
+ List.push_back(d->StatusFile);
+ return true;
+}
+ /*}}}*/
+// System::FindIndex - Get an index file for status files /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool debSystem::FindIndex(pkgCache::PkgFileIterator File,
+ pkgIndexFile *&Found) const
+{
+ if (d->StatusFile == 0)
+ return false;
+ if (d->StatusFile->FindInCache(*File.Cache()) == File)
+ {
+ Found = d->StatusFile;
+ return true;
+ }
+
+ return false;
+}
+ /*}}}*/
+
+std::string debSystem::GetDpkgExecutable() /*{{{*/
+{
+ string Tmp = _config->Find("Dir::Bin::dpkg","dpkg");
+ string const dpkgChrootDir = _config->FindDir("DPkg::Chroot-Directory", "/");
+ size_t dpkgChrootLen = dpkgChrootDir.length();
+ if (dpkgChrootDir != "/" && Tmp.find(dpkgChrootDir) == 0)
+ {
+ if (dpkgChrootDir[dpkgChrootLen - 1] == '/')
+ --dpkgChrootLen;
+ Tmp = Tmp.substr(dpkgChrootLen);
+ }
+ return Tmp;
+}
+ /*}}}*/
+std::vector<std::string> debSystem::GetDpkgBaseCommand() /*{{{*/
+{
+ // Generate the base argument list for dpkg
+ std::vector<std::string> Args = { GetDpkgExecutable() };
+ // Stick in any custom dpkg options
+ Configuration::Item const *Opts = _config->Tree("DPkg::Options");
+ if (Opts != 0)
+ {
+ Opts = Opts->Child;
+ for (; Opts != 0; Opts = Opts->Next)
+ {
+ if (Opts->Value.empty() == true)
+ continue;
+ Args.push_back(Opts->Value);
+ }
+ }
+ return Args;
+}
+ /*}}}*/
+void debSystem::DpkgChrootDirectory() /*{{{*/
+{
+ std::string const chrootDir = _config->FindDir("DPkg::Chroot-Directory");
+ if (chrootDir == "/")
+ return;
+ std::cerr << "Chrooting into " << chrootDir << std::endl;
+ if (chroot(chrootDir.c_str()) != 0)
+ _exit(100);
+ if (chdir("/") != 0)
+ _exit(100);
+}
+ /*}}}*/
+pid_t debSystem::ExecDpkg(std::vector<std::string> const &sArgs, int * const inputFd, int * const outputFd, bool const DiscardOutput)/*{{{*/
+{
+ std::vector<const char *> Args(sArgs.size(), NULL);
+ std::transform(sArgs.begin(), sArgs.end(), Args.begin(), [](std::string const &s) { return s.c_str(); });
+ Args.push_back(NULL);
+
+ int external[2] = {-1, -1};
+ if (inputFd != nullptr || outputFd != nullptr)
+ if (pipe(external) != 0)
+ {
+ _error->WarningE("dpkg", "Can't create IPC pipe for dpkg call");
+ return -1;
+ }
+
+ pid_t const dpkg = ExecFork();
+ if (dpkg == 0) {
+ int const nullfd = open("/dev/null", O_RDONLY);
+ if (inputFd == nullptr)
+ dup2(nullfd, STDIN_FILENO);
+ else
+ {
+ close(external[1]);
+ dup2(external[0], STDIN_FILENO);
+ }
+ if (outputFd == nullptr)
+ dup2(nullfd, STDOUT_FILENO);
+ else
+ {
+ close(external[0]);
+ dup2(external[1], STDOUT_FILENO);
+ }
+ if (DiscardOutput == true)
+ dup2(nullfd, STDERR_FILENO);
+ debSystem::DpkgChrootDirectory();
+ execvp(Args[0], (char**) &Args[0]);
+ _error->WarningE("dpkg", "Can't execute dpkg!");
+ _exit(100);
+ }
+ if (outputFd != nullptr)
+ {
+ close(external[1]);
+ *outputFd = external[0];
+ }
+ else if (inputFd != nullptr)
+ {
+ close(external[0]);
+ *inputFd = external[1];
+ }
+ return dpkg;
+}
+ /*}}}*/
+bool debSystem::SupportsMultiArch() /*{{{*/
+{
+ std::vector<std::string> Args = GetDpkgBaseCommand();
+ Args.push_back("--assert-multi-arch");
+ pid_t const dpkgAssertMultiArch = ExecDpkg(Args, nullptr, nullptr, true);
+ if (dpkgAssertMultiArch > 0)
+ {
+ int Status = 0;
+ while (waitpid(dpkgAssertMultiArch, &Status, 0) != dpkgAssertMultiArch)
+ {
+ if (errno == EINTR)
+ continue;
+ _error->WarningE("dpkgGo", _("Waited for %s but it wasn't there"), "dpkg --assert-multi-arch");
+ break;
+ }
+ if (WIFEXITED(Status) == true && WEXITSTATUS(Status) == 0)
+ return true;
+ }
+ return false;
+}
+ /*}}}*/
+std::vector<std::string> debSystem::SupportedArchitectures() /*{{{*/
+{
+ std::vector<std::string> archs;
+ {
+ string const arch = _config->Find("APT::Architecture");
+ if (arch.empty() == false)
+ archs.push_back(std::move(arch));
+ }
+
+ std::vector<std::string> sArgs = GetDpkgBaseCommand();
+ sArgs.push_back("--print-foreign-architectures");
+ int outputFd = -1;
+ pid_t const dpkgMultiArch = ExecDpkg(sArgs, nullptr, &outputFd, true);
+ if (dpkgMultiArch == -1)
+ return archs;
+
+ FILE *dpkg = fdopen(outputFd, "r");
+ if(dpkg != NULL) {
+ char* buf = NULL;
+ size_t bufsize = 0;
+ while (getline(&buf, &bufsize, dpkg) != -1)
+ {
+ char* tok_saveptr;
+ char* arch = strtok_r(buf, " ", &tok_saveptr);
+ while (arch != NULL) {
+ for (; isspace_ascii(*arch) != 0; ++arch);
+ if (arch[0] != '\0') {
+ char const* archend = arch;
+ for (; isspace_ascii(*archend) == 0 && *archend != '\0'; ++archend);
+ string a(arch, (archend - arch));
+ if (std::find(archs.begin(), archs.end(), a) == archs.end())
+ archs.push_back(a);
+ }
+ arch = strtok_r(NULL, " ", &tok_saveptr);
+ }
+ }
+ free(buf);
+ fclose(dpkg);
+ }
+ ExecWait(dpkgMultiArch, "dpkg --print-foreign-architectures", true);
+ return archs;
+}
+ /*}}}*/
diff --git a/apt-pkg/deb/debsystem.h b/apt-pkg/deb/debsystem.h
new file mode 100644
index 000000000..5185c92d8
--- /dev/null
+++ b/apt-pkg/deb/debsystem.h
@@ -0,0 +1,59 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: debsystem.h,v 1.4 2003/01/11 07:16:33 jgg Exp $
+/* ######################################################################
+
+ System - Debian version of the System Class
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_DEBSYSTEM_H
+#define PKGLIB_DEBSYSTEM_H
+
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#include <vector>
+class Configuration;
+class pkgIndexFile;
+class pkgPackageManager;
+class debSystemPrivate;
+class pkgDepCache;
+
+#ifndef APT_10_CLEANER_HEADERS
+class debStatusIndex;
+#endif
+
+class debSystem : public pkgSystem
+{
+ // private d-pointer
+ debSystemPrivate * const d;
+ APT_HIDDEN bool CheckUpdates();
+
+ public:
+
+ virtual bool Lock() APT_OVERRIDE;
+ virtual bool UnLock(bool NoErrors = false) APT_OVERRIDE;
+ virtual pkgPackageManager *CreatePM(pkgDepCache *Cache) const APT_OVERRIDE;
+ virtual bool Initialize(Configuration &Cnf) APT_OVERRIDE;
+ virtual bool ArchiveSupported(const char *Type) APT_OVERRIDE;
+ virtual signed Score(Configuration const &Cnf) APT_OVERRIDE;
+ virtual bool AddStatusFiles(std::vector<pkgIndexFile *> &List) APT_OVERRIDE;
+ virtual bool FindIndex(pkgCache::PkgFileIterator File,
+ pkgIndexFile *&Found) const APT_OVERRIDE;
+
+ debSystem();
+ virtual ~debSystem();
+
+ APT_HIDDEN static std::string GetDpkgExecutable();
+ APT_HIDDEN static std::vector<std::string> GetDpkgBaseCommand();
+ APT_HIDDEN static void DpkgChrootDirectory();
+ APT_HIDDEN static pid_t ExecDpkg(std::vector<std::string> const &sArgs, int * const inputFd, int * const outputFd, bool const DiscardOutput);
+ APT_HIDDEN static bool SupportsMultiArch();
+ APT_HIDDEN static std::vector<std::string> SupportedArchitectures();
+};
+
+extern debSystem debSys;
+
+#endif
diff --git a/apt-pkg/deb/debversion.cc b/apt-pkg/deb/debversion.cc
new file mode 100644
index 000000000..48462c6a2
--- /dev/null
+++ b/apt-pkg/deb/debversion.cc
@@ -0,0 +1,280 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: debversion.cc,v 1.8 2003/09/10 23:39:49 mdz Exp $
+/* ######################################################################
+
+ Debian Version - Versioning system for Debian
+
+ This implements the standard Debian versioning system.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/debversion.h>
+#include <apt-pkg/pkgcache.h>
+
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+ /*}}}*/
+
+debVersioningSystem debVS;
+
+// debVS::debVersioningSystem - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+debVersioningSystem::debVersioningSystem()
+{
+ Label = "Standard .deb";
+}
+ /*}}}*/
+
+// debVS::CmpFragment - Compare versions /*{{{*/
+// ---------------------------------------------------------------------
+/* This compares a fragment of the version. This is a slightly adapted
+ version of what dpkg uses in dpkg/lib/dpkg/version.c.
+ In particular, the a | b = NULL check is removed as we check this in the
+ caller, we use an explicit end for a | b strings and we check ~ explicit. */
+static int order(char c)
+{
+ if (isdigit(c))
+ return 0;
+ else if (isalpha(c))
+ return c;
+ else if (c == '~')
+ return -1;
+ else if (c)
+ return c + 256;
+ else
+ return 0;
+}
+int debVersioningSystem::CmpFragment(const char *A,const char *AEnd,
+ const char *B,const char *BEnd)
+{
+ /* Iterate over the whole string
+ What this does is to split the whole string into groups of
+ numeric and non numeric portions. For instance:
+ a67bhgs89
+ Has 4 portions 'a', '67', 'bhgs', '89'. A more normal:
+ 2.7.2-linux-1
+ Has '2', '.', '7', '.' ,'-linux-','1' */
+ const char *lhs = A;
+ const char *rhs = B;
+ while (lhs != AEnd && rhs != BEnd)
+ {
+ int first_diff = 0;
+
+ while (lhs != AEnd && rhs != BEnd &&
+ (!isdigit(*lhs) || !isdigit(*rhs)))
+ {
+ int vc = order(*lhs);
+ int rc = order(*rhs);
+ if (vc != rc)
+ return vc - rc;
+ ++lhs; ++rhs;
+ }
+
+ while (*lhs == '0')
+ ++lhs;
+ while (*rhs == '0')
+ ++rhs;
+ while (isdigit(*lhs) && isdigit(*rhs))
+ {
+ if (!first_diff)
+ first_diff = *lhs - *rhs;
+ ++lhs;
+ ++rhs;
+ }
+
+ if (isdigit(*lhs))
+ return 1;
+ if (isdigit(*rhs))
+ return -1;
+ if (first_diff)
+ return first_diff;
+ }
+
+ // The strings must be equal
+ if (lhs == AEnd && rhs == BEnd)
+ return 0;
+
+ // lhs is shorter
+ if (lhs == AEnd)
+ {
+ if (*rhs == '~') return 1;
+ return -1;
+ }
+
+ // rhs is shorter
+ if (rhs == BEnd)
+ {
+ if (*lhs == '~') return -1;
+ return 1;
+ }
+
+ // Shouldn't happen
+ return 1;
+}
+ /*}}}*/
+// debVS::CmpVersion - Comparison for versions /*{{{*/
+// ---------------------------------------------------------------------
+/* This fragments the version into E:V-R triples and compares each
+ portion separately. */
+int debVersioningSystem::DoCmpVersion(const char *A,const char *AEnd,
+ const char *B,const char *BEnd)
+{
+ // Strip off the epoch and compare it
+ const char *lhs = (const char*) memchr(A, ':', AEnd - A);
+ const char *rhs = (const char*) memchr(B, ':', BEnd - B);
+ if (lhs == NULL)
+ lhs = A;
+ if (rhs == NULL)
+ rhs = B;
+
+ // Special case: a zero epoch is the same as no epoch,
+ // so remove it.
+ if (lhs != A)
+ {
+ for (; *A == '0'; ++A);
+ if (A == lhs)
+ {
+ ++A;
+ ++lhs;
+ }
+ }
+ if (rhs != B)
+ {
+ for (; *B == '0'; ++B);
+ if (B == rhs)
+ {
+ ++B;
+ ++rhs;
+ }
+ }
+
+ // Compare the epoch
+ int Res = CmpFragment(A,lhs,B,rhs);
+ if (Res != 0)
+ return Res;
+
+ // Skip the :
+ if (lhs != A)
+ lhs++;
+ if (rhs != B)
+ rhs++;
+
+ // Find the last -
+ const char *dlhs = (const char*) memrchr(lhs, '-', AEnd - lhs);
+ const char *drhs = (const char*) memrchr(rhs, '-', BEnd - rhs);
+ if (dlhs == NULL)
+ dlhs = AEnd;
+ if (drhs == NULL)
+ drhs = BEnd;
+
+ // Compare the main version
+ Res = CmpFragment(lhs,dlhs,rhs,drhs);
+ if (Res != 0)
+ return Res;
+
+ // Skip the -
+ if (dlhs != lhs)
+ dlhs++;
+ if (drhs != rhs)
+ drhs++;
+
+ // no debian revision need to be treated like -0
+ if (*(dlhs-1) == '-' && *(drhs-1) == '-')
+ return CmpFragment(dlhs,AEnd,drhs,BEnd);
+ else if (*(dlhs-1) == '-')
+ {
+ const char* null = "0";
+ return CmpFragment(dlhs,AEnd,null, null+1);
+ }
+ else if (*(drhs-1) == '-')
+ {
+ const char* null = "0";
+ return CmpFragment(null, null+1, drhs, BEnd);
+ }
+ else
+ return 0;
+}
+ /*}}}*/
+// debVS::CheckDep - Check a single dependency /*{{{*/
+// ---------------------------------------------------------------------
+/* This simply preforms the version comparison and switch based on
+ operator. If DepVer is 0 then we are comparing against a provides
+ with no version. */
+bool debVersioningSystem::CheckDep(const char *PkgVer,
+ int Op,const char *DepVer)
+{
+ if (DepVer == 0 || DepVer[0] == 0)
+ return true;
+ if (PkgVer == 0 || PkgVer[0] == 0)
+ return false;
+ Op &= 0x0F;
+
+ // fast track for (equal) strings [by location] which are by definition equal versions
+ if (PkgVer == DepVer)
+ return Op == pkgCache::Dep::Equals || Op == pkgCache::Dep::LessEq || Op == pkgCache::Dep::GreaterEq;
+
+ // Perform the actual comparison.
+ int const Res = CmpVersion(PkgVer, DepVer);
+ switch (Op)
+ {
+ case pkgCache::Dep::LessEq:
+ if (Res <= 0)
+ return true;
+ break;
+
+ case pkgCache::Dep::GreaterEq:
+ if (Res >= 0)
+ return true;
+ break;
+
+ case pkgCache::Dep::Less:
+ if (Res < 0)
+ return true;
+ break;
+
+ case pkgCache::Dep::Greater:
+ if (Res > 0)
+ return true;
+ break;
+
+ case pkgCache::Dep::Equals:
+ if (Res == 0)
+ return true;
+ break;
+
+ case pkgCache::Dep::NotEquals:
+ if (Res != 0)
+ return true;
+ break;
+ }
+
+ return false;
+}
+ /*}}}*/
+// debVS::UpstreamVersion - Return the upstream version string /*{{{*/
+// ---------------------------------------------------------------------
+/* This strips all the debian specific information from the version number */
+std::string debVersioningSystem::UpstreamVersion(const char *Ver)
+{
+ // Strip off the bit before the first colon
+ const char *I = Ver;
+ for (; *I != 0 && *I != ':'; I++);
+ if (*I == ':')
+ Ver = I + 1;
+
+ // Chop off the trailing -
+ I = Ver;
+ unsigned Last = strlen(Ver);
+ for (; *I != 0; I++)
+ if (*I == '-')
+ Last = I - Ver;
+
+ return std::string(Ver,Last);
+}
+ /*}}}*/
diff --git a/apt-pkg/deb/debversion.h b/apt-pkg/deb/debversion.h
new file mode 100644
index 000000000..db70c8797
--- /dev/null
+++ b/apt-pkg/deb/debversion.h
@@ -0,0 +1,41 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Debian Version - Versioning system for Debian
+
+ This implements the standard Debian versioning system.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_DEBVERSION_H
+#define PKGLIB_DEBVERSION_H
+
+#include <apt-pkg/version.h>
+
+#include <string>
+
+class debVersioningSystem : public pkgVersioningSystem
+{
+ public:
+
+ static int CmpFragment(const char *A, const char *AEnd, const char *B,
+ const char *BEnd) APT_PURE;
+
+ // Compare versions..
+ virtual int DoCmpVersion(const char *A,const char *Aend,
+ const char *B,const char *Bend) APT_OVERRIDE APT_PURE;
+ virtual bool CheckDep(const char *PkgVer,int Op,const char *DepVer) APT_OVERRIDE APT_PURE;
+ virtual APT_PURE int DoCmpReleaseVer(const char *A,const char *Aend,
+ const char *B,const char *Bend) APT_OVERRIDE
+ {
+ return DoCmpVersion(A,Aend,B,Bend);
+ }
+ virtual std::string UpstreamVersion(const char *A) APT_OVERRIDE;
+
+ debVersioningSystem();
+};
+
+extern debVersioningSystem debVS;
+
+#endif
diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc
new file mode 100644
index 000000000..80bee03dd
--- /dev/null
+++ b/apt-pkg/deb/dpkgpm.cc
@@ -0,0 +1,2438 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ DPKG Package Manager - Provide an interface to dpkg
+
+ ##################################################################### */
+ /*}}}*/
+// Includes /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/dpkgpm.h>
+#include <apt-pkg/debsystem.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/install-progress.h>
+#include <apt-pkg/packagemanager.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/statechanges.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/macros.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/version.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <pwd.h>
+#include <signal.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/ioctl.h>
+#include <sys/select.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/wait.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <termios.h>
+#include <time.h>
+#include <unistd.h>
+
+#include <algorithm>
+#include <array>
+#include <cstring>
+#include <iostream>
+#include <map>
+#include <set>
+#include <string>
+#include <type_traits>
+#include <utility>
+#include <unordered_set>
+#include <vector>
+#include <sstream>
+#include <numeric>
+
+#include <apti18n.h>
+ /*}}}*/
+
+extern char **environ;
+
+using namespace std;
+
+APT_PURE static string AptHistoryRequestingUser() /*{{{*/
+{
+ const char* EnvKeys[]{"SUDO_UID", "PKEXEC_UID", "PACKAGEKIT_CALLER_UID"};
+
+ for (const auto &Key: EnvKeys)
+ {
+ if (getenv(Key) != nullptr)
+ {
+ int uid = atoi(getenv(Key));
+ if (uid > 0) {
+ struct passwd pwd;
+ struct passwd *result;
+ char buf[255];
+ if (getpwuid_r(uid, &pwd, buf, sizeof(buf), &result) == 0 && result != NULL) {
+ std::string res;
+ strprintf(res, "%s (%d)", pwd.pw_name, uid);
+ return res;
+ }
+ }
+ }
+ }
+ return "";
+}
+ /*}}}*/
+APT_PURE static unsigned int EnvironmentSize() /*{{{*/
+{
+ unsigned int size = 0;
+ char **envp = environ;
+
+ while (*envp != NULL)
+ size += strlen (*envp++) + 1;
+
+ return size;
+}
+ /*}}}*/
+class pkgDPkgPMPrivate /*{{{*/
+{
+public:
+ pkgDPkgPMPrivate() : stdin_is_dev_null(false), dpkgbuf_pos(0),
+ term_out(NULL), history_out(NULL),
+ progress(NULL), tt_is_valid(false), master(-1),
+ slave(NULL), protect_slave_from_dying(-1),
+ direct_stdin(false)
+ {
+ dpkgbuf[0] = '\0';
+ }
+ ~pkgDPkgPMPrivate()
+ {
+ }
+ bool stdin_is_dev_null;
+ // the buffer we use for the dpkg status-fd reading
+ char dpkgbuf[1024];
+ size_t dpkgbuf_pos;
+ FILE *term_out;
+ FILE *history_out;
+ string dpkg_error;
+ APT::Progress::PackageManager *progress;
+
+ // pty stuff
+ struct termios tt;
+ bool tt_is_valid;
+ int master;
+ char * slave;
+ int protect_slave_from_dying;
+
+ // signals
+ sigset_t sigmask;
+ sigset_t original_sigmask;
+
+ bool direct_stdin;
+};
+ /*}}}*/
+namespace
+{
+ // Maps the dpkg "processing" info to human readable names. Entry 0
+ // of each array is the key, entry 1 is the value.
+ const std::pair<const char *, const char *> PackageProcessingOps[] = {
+ std::make_pair("install", N_("Installing %s")),
+ // we don't care for the difference
+ std::make_pair("upgrade", N_("Installing %s")),
+ std::make_pair("configure", N_("Configuring %s")),
+ std::make_pair("remove", N_("Removing %s")),
+ std::make_pair("purge", N_("Completely removing %s")),
+ std::make_pair("disappear", N_("Noting disappearance of %s")),
+ std::make_pair("trigproc", N_("Running post-installation trigger %s"))
+ };
+
+ const std::pair<const char *, const char *> * const PackageProcessingOpsBegin = PackageProcessingOps;
+ const std::pair<const char *, const char *> * const PackageProcessingOpsEnd = PackageProcessingOps + sizeof(PackageProcessingOps) / sizeof(PackageProcessingOps[0]);
+
+ // Predicate to test whether an entry in the PackageProcessingOps
+ // array matches a string.
+ class MatchProcessingOp
+ {
+ const char *target;
+
+ public:
+ explicit MatchProcessingOp(const char *the_target)
+ : target(the_target)
+ {
+ }
+
+ bool operator()(const std::pair<const char *, const char *> &pair) const
+ {
+ return strcmp(pair.first, target) == 0;
+ }
+ };
+}
+
+// ionice - helper function to ionice the given PID /*{{{*/
+/* there is no C header for ionice yet - just the syscall interface
+ so we use the binary from util-linux */
+static bool ionice(int PID)
+{
+ if (!FileExists("/usr/bin/ionice"))
+ return false;
+ pid_t Process = ExecFork();
+ if (Process == 0)
+ {
+ char buf[32];
+ snprintf(buf, sizeof(buf), "-p%d", PID);
+ const char *Args[4];
+ Args[0] = "/usr/bin/ionice";
+ Args[1] = "-c3";
+ Args[2] = buf;
+ Args[3] = 0;
+ execv(Args[0], (char **)Args);
+ }
+ return ExecWait(Process, "ionice");
+}
+ /*}}}*/
+// FindNowVersion - Helper to find a Version in "now" state /*{{{*/
+// ---------------------------------------------------------------------
+/* This is helpful when a package is no longer installed but has residual
+ * config files
+ */
+static
+pkgCache::VerIterator FindNowVersion(const pkgCache::PkgIterator &Pkg)
+{
+ pkgCache::VerIterator Ver;
+ for (Ver = Pkg.VersionList(); Ver.end() == false; ++Ver)
+ for (pkgCache::VerFileIterator Vf = Ver.FileList(); Vf.end() == false; ++Vf)
+ for (pkgCache::PkgFileIterator F = Vf.File(); F.end() == false; ++F)
+ {
+ if (F.Archive() != 0 && strcmp(F.Archive(), "now") == 0)
+ return Ver;
+ }
+ return Ver;
+}
+ /*}}}*/
+static pkgCache::VerIterator FindToBeRemovedVersion(pkgCache::PkgIterator const &Pkg)/*{{{*/
+{
+ auto const PV = Pkg.CurrentVer();
+ if (PV.end() == false)
+ return PV;
+ return FindNowVersion(Pkg);
+}
+ /*}}}*/
+
+// DPkgPM::pkgDPkgPM - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgDPkgPM::pkgDPkgPM(pkgDepCache *Cache)
+ : pkgPackageManager(Cache),d(new pkgDPkgPMPrivate()), pkgFailures(0), PackagesDone(0), PackagesTotal(0)
+{
+}
+ /*}}}*/
+// DPkgPM::pkgDPkgPM - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgDPkgPM::~pkgDPkgPM()
+{
+ delete d;
+}
+ /*}}}*/
+// DPkgPM::Install - Install a package /*{{{*/
+// ---------------------------------------------------------------------
+/* Add an install operation to the sequence list */
+bool pkgDPkgPM::Install(PkgIterator Pkg,string File)
+{
+ if (File.empty() == true || Pkg.end() == true)
+ return _error->Error("Internal Error, No file name for %s",Pkg.FullName().c_str());
+
+ // If the filename string begins with DPkg::Chroot-Directory, return the
+ // substr that is within the chroot so dpkg can access it.
+ string const chrootdir = _config->FindDir("DPkg::Chroot-Directory","/");
+ if (chrootdir != "/" && File.find(chrootdir) == 0)
+ {
+ size_t len = chrootdir.length();
+ if (chrootdir.at(len - 1) == '/')
+ len--;
+ List.push_back(Item(Item::Install,Pkg,File.substr(len)));
+ }
+ else
+ List.push_back(Item(Item::Install,Pkg,File));
+
+ return true;
+}
+ /*}}}*/
+// DPkgPM::Configure - Configure a package /*{{{*/
+// ---------------------------------------------------------------------
+/* Add a configure operation to the sequence list */
+bool pkgDPkgPM::Configure(PkgIterator Pkg)
+{
+ if (Pkg.end() == true)
+ return false;
+
+ List.push_back(Item(Item::Configure, Pkg));
+
+ // Use triggers for config calls if we configure "smart"
+ // as otherwise Pre-Depends will not be satisfied, see #526774
+ if (_config->FindB("DPkg::TriggersPending", false) == true)
+ List.push_back(Item(Item::TriggersPending, PkgIterator()));
+
+ return true;
+}
+ /*}}}*/
+// DPkgPM::Remove - Remove a package /*{{{*/
+// ---------------------------------------------------------------------
+/* Add a remove operation to the sequence list */
+bool pkgDPkgPM::Remove(PkgIterator Pkg,bool Purge)
+{
+ if (Pkg.end() == true)
+ return false;
+
+ if (Purge == true)
+ List.push_back(Item(Item::Purge,Pkg));
+ else
+ List.push_back(Item(Item::Remove,Pkg));
+ return true;
+}
+ /*}}}*/
+// DPkgPM::SendPkgInfo - Send info for install-pkgs hook /*{{{*/
+// ---------------------------------------------------------------------
+/* This is part of the helper script communication interface, it sends
+ very complete information down to the other end of the pipe.*/
+bool pkgDPkgPM::SendV2Pkgs(FILE *F)
+{
+ return SendPkgsInfo(F, 2);
+}
+bool pkgDPkgPM::SendPkgsInfo(FILE * const F, unsigned int const &Version)
+{
+ // This version of APT supports only v3, so don't sent higher versions
+ if (Version <= 3)
+ fprintf(F,"VERSION %u\n", Version);
+ else
+ fprintf(F,"VERSION 3\n");
+
+ /* Write out all of the configuration directives by walking the
+ configuration tree */
+ const Configuration::Item *Top = _config->Tree(0);
+ for (; Top != 0;)
+ {
+ if (Top->Value.empty() == false)
+ {
+ fprintf(F,"%s=%s\n",
+ QuoteString(Top->FullTag(),"=\"\n").c_str(),
+ QuoteString(Top->Value,"\n").c_str());
+ }
+
+ if (Top->Child != 0)
+ {
+ Top = Top->Child;
+ continue;
+ }
+
+ while (Top != 0 && Top->Next == 0)
+ Top = Top->Parent;
+ if (Top != 0)
+ Top = Top->Next;
+ }
+ fprintf(F,"\n");
+
+ // Write out the package actions in order.
+ for (vector<Item>::iterator I = List.begin(); I != List.end(); ++I)
+ {
+ if(I->Pkg.end() == true)
+ continue;
+
+ pkgDepCache::StateCache &S = Cache[I->Pkg];
+
+ fprintf(F,"%s ",I->Pkg.Name());
+
+ // Current version which we are going to replace
+ pkgCache::VerIterator CurVer = I->Pkg.CurrentVer();
+ if (CurVer.end() == true && (I->Op == Item::Remove || I->Op == Item::Purge))
+ CurVer = FindNowVersion(I->Pkg);
+
+ if (CurVer.end() == true)
+ {
+ if (Version <= 2)
+ fprintf(F, "- ");
+ else
+ fprintf(F, "- - none ");
+ }
+ else
+ {
+ fprintf(F, "%s ", CurVer.VerStr());
+ if (Version >= 3)
+ fprintf(F, "%s %s ", CurVer.Arch(), CurVer.MultiArchType());
+ }
+
+ // Show the compare operator between current and install version
+ if (S.InstallVer != 0)
+ {
+ pkgCache::VerIterator const InstVer = S.InstVerIter(Cache);
+ int Comp = 2;
+ if (CurVer.end() == false)
+ Comp = InstVer.CompareVer(CurVer);
+ if (Comp < 0)
+ fprintf(F,"> ");
+ else if (Comp == 0)
+ fprintf(F,"= ");
+ else if (Comp > 0)
+ fprintf(F,"< ");
+ fprintf(F, "%s ", InstVer.VerStr());
+ if (Version >= 3)
+ fprintf(F, "%s %s ", InstVer.Arch(), InstVer.MultiArchType());
+ }
+ else
+ {
+ if (Version <= 2)
+ fprintf(F, "> - ");
+ else
+ fprintf(F, "> - - none ");
+ }
+
+ // Show the filename/operation
+ if (I->Op == Item::Install)
+ {
+ // No errors here..
+ if (I->File[0] != '/')
+ fprintf(F,"**ERROR**\n");
+ else
+ fprintf(F,"%s\n",I->File.c_str());
+ }
+ else if (I->Op == Item::Configure)
+ fprintf(F,"**CONFIGURE**\n");
+ else if (I->Op == Item::Remove ||
+ I->Op == Item::Purge)
+ fprintf(F,"**REMOVE**\n");
+
+ if (ferror(F) != 0)
+ return false;
+ }
+ return true;
+}
+ /*}}}*/
+// DPkgPM::RunScriptsWithPkgs - Run scripts with package names on stdin /*{{{*/
+// ---------------------------------------------------------------------
+/* This looks for a list of scripts to run from the configuration file
+ each one is run and is fed on standard input a list of all .deb files
+ that are due to be installed. */
+bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf)
+{
+ bool result = true;
+
+ Configuration::Item const *Opts = _config->Tree(Cnf);
+ if (Opts == 0 || Opts->Child == 0)
+ return true;
+ Opts = Opts->Child;
+
+ sighandler_t old_sigpipe = signal(SIGPIPE, SIG_IGN);
+ sighandler_t old_sigint = signal(SIGINT, SIG_IGN);
+ sighandler_t old_sigquit = signal(SIGQUIT, SIG_IGN);
+
+ unsigned int Count = 1;
+ for (; Opts != 0; Opts = Opts->Next, Count++)
+ {
+ if (Opts->Value.empty() == true)
+ continue;
+
+ if(_config->FindB("Debug::RunScripts", false) == true)
+ std::clog << "Running external script with list of all .deb file: '"
+ << Opts->Value << "'" << std::endl;
+
+ // Determine the protocol version
+ string OptSec = Opts->Value;
+ string::size_type Pos;
+ if ((Pos = OptSec.find(' ')) == string::npos || Pos == 0)
+ Pos = OptSec.length();
+ OptSec = "DPkg::Tools::Options::" + string(Opts->Value.c_str(),Pos);
+
+ unsigned int Version = _config->FindI(OptSec+"::Version",1);
+ unsigned int InfoFD = _config->FindI(OptSec + "::InfoFD", STDIN_FILENO);
+
+ // Create the pipes
+ std::set<int> KeepFDs;
+ MergeKeepFdsFromConfiguration(KeepFDs);
+ int Pipes[2];
+ if (pipe(Pipes) != 0) {
+ result = _error->Errno("pipe","Failed to create IPC pipe to subprocess");
+ break;
+ }
+ if (InfoFD != (unsigned)Pipes[0])
+ SetCloseExec(Pipes[0],true);
+ else
+ KeepFDs.insert(Pipes[0]);
+
+
+ SetCloseExec(Pipes[1],true);
+
+ // Purified Fork for running the script
+ pid_t Process = ExecFork(KeepFDs);
+ if (Process == 0)
+ {
+ // Setup the FDs
+ dup2(Pipes[0], InfoFD);
+ SetCloseExec(STDOUT_FILENO,false);
+ SetCloseExec(STDIN_FILENO,false);
+ SetCloseExec(STDERR_FILENO,false);
+
+ string hookfd;
+ strprintf(hookfd, "%d", InfoFD);
+ setenv("APT_HOOK_INFO_FD", hookfd.c_str(), 1);
+
+ debSystem::DpkgChrootDirectory();
+ const char *Args[4];
+ Args[0] = "/bin/sh";
+ Args[1] = "-c";
+ Args[2] = Opts->Value.c_str();
+ Args[3] = 0;
+ execv(Args[0],(char **)Args);
+ _exit(100);
+ }
+ close(Pipes[0]);
+ FILE *F = fdopen(Pipes[1],"w");
+ if (F == 0) {
+ result = _error->Errno("fdopen","Failed to open new FD");
+ break;
+ }
+
+ // Feed it the filenames.
+ if (Version <= 1)
+ {
+ for (vector<Item>::iterator I = List.begin(); I != List.end(); ++I)
+ {
+ // Only deal with packages to be installed from .deb
+ if (I->Op != Item::Install)
+ continue;
+
+ // No errors here..
+ if (I->File[0] != '/')
+ continue;
+
+ /* Feed the filename of each package that is pending install
+ into the pipe. */
+ fprintf(F,"%s\n",I->File.c_str());
+ if (ferror(F) != 0)
+ break;
+ }
+ }
+ else
+ SendPkgsInfo(F, Version);
+
+ fclose(F);
+
+ // Clean up the sub process
+ if (ExecWait(Process,Opts->Value.c_str()) == false) {
+ result = _error->Error("Failure running script %s",Opts->Value.c_str());
+ break;
+ }
+ }
+ signal(SIGINT, old_sigint);
+ signal(SIGPIPE, old_sigpipe);
+ signal(SIGQUIT, old_sigquit);
+
+ return result;
+}
+ /*}}}*/
+// DPkgPM::DoStdin - Read stdin and pass to master pty /*{{{*/
+// ---------------------------------------------------------------------
+/*
+*/
+void pkgDPkgPM::DoStdin(int master)
+{
+ unsigned char input_buf[256] = {0,};
+ ssize_t len = read(STDIN_FILENO, input_buf, sizeof(input_buf));
+ if (len)
+ FileFd::Write(master, input_buf, len);
+ else
+ d->stdin_is_dev_null = true;
+}
+ /*}}}*/
+// DPkgPM::DoTerminalPty - Read the terminal pty and write log /*{{{*/
+// ---------------------------------------------------------------------
+/*
+ * read the terminal pty and write log
+ */
+void pkgDPkgPM::DoTerminalPty(int master)
+{
+ unsigned char term_buf[1024] = {0,0, };
+
+ ssize_t len=read(master, term_buf, sizeof(term_buf));
+ if(len == -1 && errno == EIO)
+ {
+ // this happens when the child is about to exit, we
+ // give it time to actually exit, otherwise we run
+ // into a race so we sleep for half a second.
+ struct timespec sleepfor = { 0, 500000000 };
+ nanosleep(&sleepfor, NULL);
+ return;
+ }
+ if(len <= 0)
+ return;
+ FileFd::Write(1, term_buf, len);
+ if(d->term_out)
+ fwrite(term_buf, len, sizeof(char), d->term_out);
+}
+ /*}}}*/
+// DPkgPM::ProcessDpkgStatusBuf /*{{{*/
+void pkgDPkgPM::ProcessDpkgStatusLine(char *line)
+{
+ bool const Debug = _config->FindB("Debug::pkgDPkgProgressReporting",false);
+ if (Debug == true)
+ std::clog << "got from dpkg '" << line << "'" << std::endl;
+
+ /* dpkg sends strings like this:
+ 'status: <pkg>: <pkg qstate>'
+ 'status: <pkg>:<arch>: <pkg qstate>'
+
+ 'processing: {install,upgrade,configure,remove,purge,disappear,trigproc}: pkg'
+ 'processing: {install,upgrade,configure,remove,purge,disappear,trigproc}: trigger'
+ */
+
+ // we need to split on ": " (note the appended space) as the ':' is
+ // part of the pkgname:arch information that dpkg sends
+ //
+ // A dpkg error message may contain additional ":" (like
+ // "failed in buffer_write(fd) (10, ret=-1): backend dpkg-deb ..."
+ // so we need to ensure to not split too much
+ std::vector<std::string> list = StringSplit(line, ": ", 4);
+ if(list.size() < 3)
+ {
+ if (Debug == true)
+ std::clog << "ignoring line: not enough ':'" << std::endl;
+ return;
+ }
+
+ // build the (prefix, pkgname, action) tuple, position of this
+ // is different for "processing" or "status" messages
+ std::string prefix = APT::String::Strip(list[0]);
+ std::string pkgname;
+ std::string action;
+
+ // "processing" has the form "processing: action: pkg or trigger"
+ // with action = ["install", "upgrade", "configure", "remove", "purge",
+ // "disappear", "trigproc"]
+ if (prefix == "processing")
+ {
+ pkgname = APT::String::Strip(list[2]);
+ action = APT::String::Strip(list[1]);
+ }
+ // "status" has the form: "status: pkg: state"
+ // with state in ["half-installed", "unpacked", "half-configured",
+ // "installed", "config-files", "not-installed"]
+ else if (prefix == "status")
+ {
+ pkgname = APT::String::Strip(list[1]);
+ action = APT::String::Strip(list[2]);
+
+ /* handle the special cases first:
+
+ errors look like this:
+ 'status: /var/cache/apt/archives/krecipes_0.8.1-0ubuntu1_i386.deb : error : trying to overwrite `/usr/share/doc/kde/HTML/en/krecipes/krectip.png', which is also in package krecipes-data
+ and conffile-prompt like this
+ 'status:/etc/compiz.conf/compiz.conf : conffile-prompt: 'current-conffile' 'new-conffile' useredited distedited
+ */
+ if(action == "error")
+ {
+ d->progress->Error(pkgname, PackagesDone, PackagesTotal, list[3]);
+ ++pkgFailures;
+ WriteApportReport(pkgname.c_str(), list[3].c_str());
+ return;
+ }
+ else if(action == "conffile-prompt")
+ {
+ d->progress->ConffilePrompt(pkgname, PackagesDone, PackagesTotal, list[3]);
+ return;
+ }
+ } else {
+ if (Debug == true)
+ std::clog << "unknown prefix '" << prefix << "'" << std::endl;
+ return;
+ }
+
+ // At this point we have a pkgname, but it might not be arch-qualified !
+ if (pkgname.find(":") == std::string::npos)
+ {
+ pkgCache::GrpIterator Grp = Cache.FindGrp(pkgname);
+ /* No arch means that dpkg believes there can only be one package
+ this can refer to so lets see what could be candidates here: */
+ std::vector<pkgCache::PkgIterator> candset;
+ for (auto P = Grp.PackageList(); P.end() != true; P = Grp.NextPkg(P))
+ {
+ if (PackageOps.find(P.FullName()) != PackageOps.end())
+ candset.push_back(P);
+ // packages can disappear without them having any interaction itself
+ // so we have to consider these as candidates, too
+ else if (P->CurrentVer != 0 && action == "disappear")
+ candset.push_back(P);
+ }
+ if (unlikely(candset.empty()))
+ {
+ if (Debug == true)
+ std::clog << "unable to figure out which package is dpkg referring to with '" << pkgname << "'! (1)" << std::endl;
+ return;
+ }
+ else if (candset.size() == 1) // we are lucky
+ pkgname = candset.cbegin()->FullName();
+ else
+ {
+ /* here be dragons^Wassumptions about dpkg:
+ - an M-A:same version is always arch-qualified
+ - a package from a foreign arch is (in newer versions) */
+ size_t installedInstances = 0, wannabeInstances = 0;
+ for (auto const &P: candset)
+ {
+ if (P->CurrentVer != 0)
+ {
+ ++installedInstances;
+ if (Cache[P].Delete() == false)
+ ++wannabeInstances;
+ }
+ else if (Cache[P].Install())
+ ++wannabeInstances;
+ }
+ // the package becomes M-A:same, so we are still talking about current
+ if (installedInstances == 1 && wannabeInstances >= 2)
+ {
+ for (auto const &P: candset)
+ {
+ if (P->CurrentVer == 0)
+ continue;
+ pkgname = P.FullName();
+ break;
+ }
+ }
+ // the package was M-A:same, it isn't now, so we can only talk about that
+ else if (installedInstances >= 2 && wannabeInstances == 1)
+ {
+ for (auto const &P: candset)
+ {
+ auto const IV = Cache[P].InstVerIter(Cache);
+ if (IV.end())
+ continue;
+ pkgname = P.FullName();
+ break;
+ }
+ }
+ // that is a crossgrade
+ else if (installedInstances == 1 && wannabeInstances == 1 && candset.size() == 2)
+ {
+ auto const PkgHasCurrentVersion = [](pkgCache::PkgIterator const &P) { return P->CurrentVer != 0; };
+ auto const P = std::find_if(candset.begin(), candset.end(), PkgHasCurrentVersion);
+ if (unlikely(P == candset.end()))
+ {
+ if (Debug == true)
+ std::clog << "situation for '" << pkgname << "' looked like a crossgrade, but no current version?!" << std::endl;
+ return;
+ }
+ auto fullname = P->FullName();
+ if (PackageOps[fullname].size() != PackageOpsDone[fullname])
+ pkgname = std::move(fullname);
+ else
+ pkgname = std::find_if_not(candset.begin(), candset.end(), PkgHasCurrentVersion)->FullName();
+ }
+ // we are desperate: so "just" take the native one, but that might change mid-air,
+ // so we have to ask dpkg what it believes native is at the moment… all the time
+ else
+ {
+ std::vector<std::string> sArgs = debSystem::GetDpkgBaseCommand();
+ sArgs.push_back("--print-architecture");
+ int outputFd = -1;
+ pid_t const dpkgNativeArch = debSystem::ExecDpkg(sArgs, nullptr, &outputFd, true);
+ if (unlikely(dpkgNativeArch == -1))
+ {
+ if (Debug == true)
+ std::clog << "calling dpkg failed to ask it for its current native architecture to expand '" << pkgname << "'!" << std::endl;
+ return;
+ }
+ FILE *dpkg = fdopen(outputFd, "r");
+ if(dpkg != NULL)
+ {
+ char* buf = NULL;
+ size_t bufsize = 0;
+ if (getline(&buf, &bufsize, dpkg) != -1)
+ pkgname += ':' + bufsize;
+ free(buf);
+ fclose(dpkg);
+ }
+ ExecWait(dpkgNativeArch, "dpkg --print-architecture", true);
+ if (pkgname.find(':') != std::string::npos)
+ {
+ if (Debug == true)
+ std::clog << "unable to figure out which package is dpkg referring to with '" << pkgname << "'! (2)" << std::endl;
+ return;
+ }
+ }
+ }
+ }
+
+ std::string arch = "";
+ if (pkgname.find(":") != string::npos)
+ arch = StringSplit(pkgname, ":")[1];
+ std::string i18n_pkgname = pkgname;
+ if (arch.size() != 0)
+ strprintf(i18n_pkgname, "%s (%s)", StringSplit(pkgname, ":")[0].c_str(), arch.c_str());
+
+ // 'processing' from dpkg looks like
+ // 'processing: action: pkg'
+ if(prefix == "processing")
+ {
+ auto const iter = std::find_if(PackageProcessingOpsBegin, PackageProcessingOpsEnd, MatchProcessingOp(action.c_str()));
+ if(iter == PackageProcessingOpsEnd)
+ {
+ if (Debug == true)
+ std::clog << "ignoring unknown action: " << action << std::endl;
+ return;
+ }
+ std::string msg;
+ strprintf(msg, _(iter->second), i18n_pkgname.c_str());
+ d->progress->StatusChanged(pkgname, PackagesDone, PackagesTotal, msg);
+
+ // FIXME: this needs a muliarch testcase
+ // FIXME2: is "pkgname" here reliable with dpkg only sending us
+ // short pkgnames?
+ if (action == "disappear")
+ handleDisappearAction(pkgname);
+ else if (action == "upgrade")
+ handleCrossUpgradeAction(pkgname);
+ return;
+ }
+
+ if (prefix == "status")
+ {
+ std::vector<struct DpkgState> &states = PackageOps[pkgname];
+ if(PackageOpsDone[pkgname] < states.size())
+ {
+ char const * next_action = states[PackageOpsDone[pkgname]].state;
+ if (next_action)
+ {
+ /*
+ if (action == "half-installed" && strcmp("half-configured", next_action) == 0 &&
+ PackageOpsDone[pkg] + 2 < states.size() && action == states[PackageOpsDone[pkg] + 2].state)
+ {
+ if (Debug == true)
+ std::clog << "(parsed from dpkg) pkg: " << short_pkgname << " action: " << action
+ << " pending trigger defused by unpack" << std::endl;
+ // unpacking a package defuses the pending trigger
+ PackageOpsDone[pkg] += 2;
+ PackagesDone += 2;
+ next_action = states[PackageOpsDone[pkg]].state;
+ }
+ */
+ if (Debug == true)
+ std::clog << "(parsed from dpkg) pkg: " << pkgname
+ << " action: " << action << " (expected: '" << next_action << "' "
+ << PackageOpsDone[pkgname] << " of " << states.size() << ")" << endl;
+
+ // check if the package moved to the next dpkg state
+ if(action == next_action)
+ {
+ // only read the translation if there is actually a next action
+ char const * const translation = _(states[PackageOpsDone[pkgname]].str);
+
+ // we moved from one dpkg state to a new one, report that
+ ++PackageOpsDone[pkgname];
+ ++PackagesDone;
+
+ std::string msg;
+ strprintf(msg, translation, i18n_pkgname.c_str());
+ d->progress->StatusChanged(pkgname, PackagesDone, PackagesTotal, msg);
+ }
+ }
+ }
+ else if (action == "triggers-pending")
+ {
+ if (Debug == true)
+ std::clog << "(parsed from dpkg) pkg: " << pkgname
+ << " action: " << action << " (prefix 2 to "
+ << PackageOpsDone[pkgname] << " of " << states.size() << ")" << endl;
+
+ states.insert(states.begin(), {"installed", N_("Installed %s")});
+ states.insert(states.begin(), {"half-configured", N_("Configuring %s")});
+ PackagesTotal += 2;
+ }
+ }
+}
+ /*}}}*/
+// DPkgPM::handleDisappearAction /*{{{*/
+void pkgDPkgPM::handleDisappearAction(string const &pkgname)
+{
+ pkgCache::PkgIterator Pkg = Cache.FindPkg(pkgname);
+ if (unlikely(Pkg.end() == true))
+ return;
+
+ // a disappeared package has no further actions
+ auto const ROps = PackageOps[Pkg.FullName()].size();
+ auto && ROpsDone = PackageOpsDone[Pkg.FullName()];
+ PackagesDone += ROps - ROpsDone;
+ ROpsDone = ROps;
+
+ // record the package name for display and stuff later
+ disappearedPkgs.insert(Pkg.FullName(true));
+
+ // the disappeared package was auto-installed - nothing to do
+ if ((Cache[Pkg].Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto)
+ return;
+ pkgCache::VerIterator PkgVer = Cache[Pkg].InstVerIter(Cache);
+ if (unlikely(PkgVer.end() == true))
+ return;
+ /* search in the list of dependencies for (Pre)Depends,
+ check if this dependency has a Replaces on our package
+ and if so transfer the manual installed flag to it */
+ for (pkgCache::DepIterator Dep = PkgVer.DependsList(); Dep.end() != true; ++Dep)
+ {
+ if (Dep->Type != pkgCache::Dep::Depends &&
+ Dep->Type != pkgCache::Dep::PreDepends)
+ continue;
+ pkgCache::PkgIterator Tar = Dep.TargetPkg();
+ if (unlikely(Tar.end() == true))
+ continue;
+ // the package is already marked as manual
+ if ((Cache[Tar].Flags & pkgCache::Flag::Auto) != pkgCache::Flag::Auto)
+ continue;
+ pkgCache::VerIterator TarVer = Cache[Tar].InstVerIter(Cache);
+ if (TarVer.end() == true)
+ continue;
+ for (pkgCache::DepIterator Rep = TarVer.DependsList(); Rep.end() != true; ++Rep)
+ {
+ if (Rep->Type != pkgCache::Dep::Replaces)
+ continue;
+ if (Pkg != Rep.TargetPkg())
+ continue;
+ // okay, they are strongly connected - transfer manual-bit
+ if (Debug == true)
+ std::clog << "transfer manual-bit from disappeared »" << pkgname << "« to »" << Tar.FullName() << "«" << std::endl;
+ Cache[Tar].Flags &= ~Flag::Auto;
+ break;
+ }
+ }
+}
+ /*}}}*/
+void pkgDPkgPM::handleCrossUpgradeAction(string const &pkgname) /*{{{*/
+{
+ // in a crossgrade what looked like a remove first is really an unpack over it
+ auto const Pkg = Cache.FindPkg(pkgname);
+ if (likely(Pkg.end() == false) && Cache[Pkg].Delete())
+ {
+ auto const Grp = Pkg.Group();
+ if (likely(Grp.end() == false))
+ {
+ for (auto P = Grp.PackageList(); P.end() != true; P = Grp.NextPkg(P))
+ if(Cache[P].Install())
+ {
+ auto && Ops = PackageOps[P.FullName()];
+ auto const unpackOp = std::find_if(Ops.cbegin(), Ops.cend(), [](DpkgState const &s) { return strcmp(s.state, "unpacked") == 0; });
+ if (unpackOp != Ops.cend())
+ {
+ // skip ahead in the crossgraded packages
+ auto const skipped = std::distance(Ops.cbegin(), unpackOp);
+ PackagesDone += skipped;
+ PackageOpsDone[P.FullName()] += skipped;
+ // finish the crossremoved package
+ auto const ROps = PackageOps[Pkg.FullName()].size();
+ auto && ROpsDone = PackageOpsDone[Pkg.FullName()];
+ PackagesDone += ROps - ROpsDone;
+ ROpsDone = ROps;
+ break;
+ }
+ }
+ }
+ }
+}
+ /*}}}*/
+// DPkgPM::DoDpkgStatusFd /*{{{*/
+void pkgDPkgPM::DoDpkgStatusFd(int statusfd)
+{
+ ssize_t const len = read(statusfd, &d->dpkgbuf[d->dpkgbuf_pos],
+ (sizeof(d->dpkgbuf)/sizeof(d->dpkgbuf[0])) - d->dpkgbuf_pos);
+ if(len <= 0)
+ return;
+ d->dpkgbuf_pos += (len / sizeof(d->dpkgbuf[0]));
+
+ // process line by line from the buffer
+ char *p = d->dpkgbuf, *q = nullptr;
+ while((q=(char*)memchr(p, '\n', (d->dpkgbuf + d->dpkgbuf_pos) - p)) != nullptr)
+ {
+ *q = '\0';
+ ProcessDpkgStatusLine(p);
+ p = q + 1; // continue with next line
+ }
+
+ // check if we stripped the buffer clean
+ if (p > (d->dpkgbuf + d->dpkgbuf_pos))
+ {
+ d->dpkgbuf_pos = 0;
+ return;
+ }
+
+ // otherwise move the unprocessed tail to the start and update pos
+ memmove(d->dpkgbuf, p, (p - d->dpkgbuf));
+ d->dpkgbuf_pos = (d->dpkgbuf + d->dpkgbuf_pos) - p;
+}
+ /*}}}*/
+// DPkgPM::WriteHistoryTag /*{{{*/
+void pkgDPkgPM::WriteHistoryTag(string const &tag, string value)
+{
+ size_t const length = value.length();
+ if (length == 0)
+ return;
+ // poor mans rstrip(", ")
+ if (value[length-2] == ',' && value[length-1] == ' ')
+ value.erase(length - 2, 2);
+ fprintf(d->history_out, "%s: %s\n", tag.c_str(), value.c_str());
+} /*}}}*/
+// DPkgPM::OpenLog /*{{{*/
+bool pkgDPkgPM::OpenLog()
+{
+ string const logfile_name = _config->FindFile("Dir::Log::Terminal");
+ string logdir = flNotFile(logfile_name);
+ if(CreateAPTDirectoryIfNeeded(logdir, logdir) == false)
+ // FIXME: use a better string after freeze
+ return _error->Error(_("Directory '%s' missing"), logdir.c_str());
+
+ // get current time
+ char timestr[200];
+ time_t const t = time(NULL);
+ struct tm tm_buf;
+ struct tm const * const tmp = localtime_r(&t, &tm_buf);
+ strftime(timestr, sizeof(timestr), "%F %T", tmp);
+
+ // open terminal log
+ if (!logfile_name.empty())
+ {
+ d->term_out = fopen(logfile_name.c_str(),"a");
+ if (d->term_out == NULL)
+ return _error->WarningE("OpenLog", _("Could not open file '%s'"), logfile_name.c_str());
+ setvbuf(d->term_out, NULL, _IONBF, 0);
+ SetCloseExec(fileno(d->term_out), true);
+ if (getuid() == 0) // if we aren't root, we can't chown a file, so don't try it
+ {
+ struct passwd *pw = getpwnam("root");
+ struct group *gr = getgrnam("adm");
+ if (pw != NULL && gr != NULL && chown(logfile_name.c_str(), pw->pw_uid, gr->gr_gid) != 0)
+ _error->WarningE("OpenLog", "chown to root:adm of file %s failed", logfile_name.c_str());
+ }
+ if (chmod(logfile_name.c_str(), 0640) != 0)
+ _error->WarningE("OpenLog", "chmod 0640 of file %s failed", logfile_name.c_str());
+ fprintf(d->term_out, "\nLog started: %s\n", timestr);
+ }
+
+ // write your history
+ string const history_name = _config->FindFile("Dir::Log::History");
+ string logdir2 = flNotFile(logfile_name);
+ if(logdir != logdir2 && CreateAPTDirectoryIfNeeded(logdir2, logdir2) == false)
+ return _error->Error(_("Directory '%s' missing"), logdir.c_str());
+ if (!history_name.empty())
+ {
+ d->history_out = fopen(history_name.c_str(),"a");
+ if (d->history_out == NULL)
+ return _error->WarningE("OpenLog", _("Could not open file '%s'"), history_name.c_str());
+ SetCloseExec(fileno(d->history_out), true);
+ chmod(history_name.c_str(), 0644);
+ fprintf(d->history_out, "\nStart-Date: %s\n", timestr);
+ string remove, purge, install, reinstall, upgrade, downgrade;
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ {
+ enum { CANDIDATE, CANDIDATE_AUTO, CURRENT_CANDIDATE, CURRENT } infostring;
+ string *line = NULL;
+ #define HISTORYINFO(X, Y) { line = &X; infostring = Y; }
+ if (Cache[I].NewInstall() == true)
+ HISTORYINFO(install, CANDIDATE_AUTO)
+ else if (Cache[I].ReInstall() == true)
+ HISTORYINFO(reinstall, CANDIDATE)
+ else if (Cache[I].Upgrade() == true)
+ HISTORYINFO(upgrade, CURRENT_CANDIDATE)
+ else if (Cache[I].Downgrade() == true)
+ HISTORYINFO(downgrade, CURRENT_CANDIDATE)
+ else if (Cache[I].Delete() == true)
+ HISTORYINFO((Cache[I].Purge() ? purge : remove), CURRENT)
+ else
+ continue;
+ #undef HISTORYINFO
+ line->append(I.FullName(false)).append(" (");
+ switch (infostring) {
+ case CANDIDATE: line->append(Cache[I].CandVersion); break;
+ case CANDIDATE_AUTO:
+ line->append(Cache[I].CandVersion);
+ if ((Cache[I].Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto)
+ line->append(", automatic");
+ break;
+ case CURRENT_CANDIDATE: line->append(Cache[I].CurVersion).append(", ").append(Cache[I].CandVersion); break;
+ case CURRENT: line->append(Cache[I].CurVersion); break;
+ }
+ line->append("), ");
+ }
+ if (_config->Exists("Commandline::AsString") == true)
+ WriteHistoryTag("Commandline", _config->Find("Commandline::AsString"));
+ std::string RequestingUser = AptHistoryRequestingUser();
+ if (RequestingUser != "")
+ WriteHistoryTag("Requested-By", RequestingUser);
+ WriteHistoryTag("Install", install);
+ WriteHistoryTag("Reinstall", reinstall);
+ WriteHistoryTag("Upgrade", upgrade);
+ WriteHistoryTag("Downgrade",downgrade);
+ WriteHistoryTag("Remove",remove);
+ WriteHistoryTag("Purge",purge);
+ fflush(d->history_out);
+ }
+
+ return true;
+}
+ /*}}}*/
+// DPkg::CloseLog /*{{{*/
+bool pkgDPkgPM::CloseLog()
+{
+ char timestr[200];
+ time_t t = time(NULL);
+ struct tm tm_buf;
+ struct tm *tmp = localtime_r(&t, &tm_buf);
+ strftime(timestr, sizeof(timestr), "%F %T", tmp);
+
+ if(d->term_out)
+ {
+ fprintf(d->term_out, "Log ended: ");
+ fprintf(d->term_out, "%s", timestr);
+ fprintf(d->term_out, "\n");
+ fclose(d->term_out);
+ }
+ d->term_out = NULL;
+
+ if(d->history_out)
+ {
+ if (disappearedPkgs.empty() == false)
+ {
+ string disappear;
+ for (std::set<std::string>::const_iterator d = disappearedPkgs.begin();
+ d != disappearedPkgs.end(); ++d)
+ {
+ pkgCache::PkgIterator P = Cache.FindPkg(*d);
+ disappear.append(*d);
+ if (P.end() == true)
+ disappear.append(", ");
+ else
+ disappear.append(" (").append(Cache[P].CurVersion).append("), ");
+ }
+ WriteHistoryTag("Disappeared", disappear);
+ }
+ if (d->dpkg_error.empty() == false)
+ fprintf(d->history_out, "Error: %s\n", d->dpkg_error.c_str());
+ fprintf(d->history_out, "End-Date: %s\n", timestr);
+ fclose(d->history_out);
+ }
+ d->history_out = NULL;
+
+ return true;
+}
+ /*}}}*/
+
+// DPkgPM::BuildPackagesProgressMap /*{{{*/
+void pkgDPkgPM::BuildPackagesProgressMap()
+{
+ // map the dpkg states to the operations that are performed
+ // (this is sorted in the same way as Item::Ops)
+ static const std::array<std::array<DpkgState, 3>, 4> DpkgStatesOpMap = {{
+ // Install operation
+ {{
+ {"half-installed", N_("Preparing %s")},
+ {"unpacked", N_("Unpacking %s") },
+ {nullptr, nullptr}
+ }},
+ // Configure operation
+ {{
+ {"unpacked",N_("Preparing to configure %s") },
+ {"half-configured", N_("Configuring %s") },
+ { "installed", N_("Installed %s")},
+ }},
+ // Remove operation
+ {{
+ {"half-configured", N_("Preparing for removal of %s")},
+ {"half-installed", N_("Removing %s")},
+ {"config-files", N_("Removed %s")},
+ }},
+ // Purge operation
+ {{
+ {"config-files", N_("Preparing to completely remove %s")},
+ {"not-installed", N_("Completely removed %s")},
+ {nullptr, nullptr}
+ }},
+ }};
+ static_assert(Item::Purge == 3, "Enum item has unexpected index for mapping array");
+
+ // init the PackageOps map, go over the list of packages that
+ // that will be [installed|configured|removed|purged] and add
+ // them to the PackageOps map (the dpkg states it goes through)
+ // and the PackageOpsTranslations (human readable strings)
+ for (auto &&I : List)
+ {
+ if(I.Pkg.end() == true)
+ continue;
+
+ string const name = I.Pkg.FullName();
+ PackageOpsDone[name] = 0;
+ auto AddToPackageOps = std::back_inserter(PackageOps[name]);
+ if (I.Op == Item::Purge && I.Pkg->CurrentVer != 0)
+ {
+ // purging a package which is installed first passes through remove states
+ auto const DpkgOps = DpkgStatesOpMap[Item::Remove];
+ std::copy(DpkgOps.begin(), DpkgOps.end(), AddToPackageOps);
+ PackagesTotal += DpkgOps.size();
+ }
+ auto const DpkgOps = DpkgStatesOpMap[I.Op];
+ std::copy_if(DpkgOps.begin(), DpkgOps.end(), AddToPackageOps, [&](DpkgState const &state) {
+ if (state.state == nullptr)
+ return false;
+ ++PackagesTotal;
+ return true;
+ });
+ if ((I.Op == Item::Remove || I.Op == Item::Purge) && I.Pkg->CurrentVer != 0)
+ {
+ if (I.Pkg->CurrentState == pkgCache::State::UnPacked ||
+ I.Pkg->CurrentState == pkgCache::State::HalfInstalled)
+ {
+ if (likely(strcmp(PackageOps[name][0].state, "half-configured") == 0))
+ {
+ ++PackageOpsDone[name];
+ --PackagesTotal;
+ }
+ }
+ }
+ }
+ /* one extra: We don't want the progress bar to reach 100%, especially not
+ if we call dpkg --configure --pending and process a bunch of triggers
+ while showing 100%. Also, spindown takes a while, so never reaching 100%
+ is way more correct than reaching 100% while still doing stuff even if
+ doing it this way is slightly bending the rules */
+ ++PackagesTotal;
+}
+ /*}}}*/
+bool pkgDPkgPM::Go(int StatusFd) /*{{{*/
+{
+ APT::Progress::PackageManager *progress = NULL;
+ if (StatusFd == -1)
+ progress = APT::Progress::PackageManagerProgressFactory();
+ else
+ progress = new APT::Progress::PackageManagerProgressFd(StatusFd);
+
+ return Go(progress);
+}
+ /*}}}*/
+void pkgDPkgPM::StartPtyMagic() /*{{{*/
+{
+ if (_config->FindB("Dpkg::Use-Pty", true) == false)
+ {
+ d->master = -1;
+ if (d->slave != NULL)
+ free(d->slave);
+ d->slave = NULL;
+ return;
+ }
+
+ if (isatty(STDIN_FILENO) == 0)
+ d->direct_stdin = true;
+
+ _error->PushToStack();
+
+ d->master = posix_openpt(O_RDWR | O_NOCTTY);
+ if (d->master == -1)
+ _error->Errno("posix_openpt", _("Can not write log (%s)"), _("Is /dev/pts mounted?"));
+ else if (unlockpt(d->master) == -1)
+ _error->Errno("unlockpt", "Unlocking the slave of master fd %d failed!", d->master);
+ else
+ {
+#ifdef HAVE_PTSNAME_R
+ char slave_name[64]; // 64 is used by bionic
+ if (ptsname_r(d->master, slave_name, sizeof(slave_name)) != 0)
+#else
+ char const * const slave_name = ptsname(d->master);
+ if (slave_name == NULL)
+#endif
+ _error->Errno("ptsname", "Getting name for slave of master fd %d failed!", d->master);
+ else
+ {
+ d->slave = strdup(slave_name);
+ if (d->slave == NULL)
+ _error->Errno("strdup", "Copying name %s for slave of master fd %d failed!", slave_name, d->master);
+ else if (grantpt(d->master) == -1)
+ _error->Errno("grantpt", "Granting access to slave %s based on master fd %d failed!", slave_name, d->master);
+ else if (tcgetattr(STDIN_FILENO, &d->tt) == 0)
+ {
+ d->tt_is_valid = true;
+ struct termios raw_tt;
+ // copy window size of stdout if its a 'good' terminal
+ if (tcgetattr(STDOUT_FILENO, &raw_tt) == 0)
+ {
+ struct winsize win;
+ if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &win) < 0)
+ _error->Errno("ioctl", "Getting TIOCGWINSZ from stdout failed!");
+ if (ioctl(d->master, TIOCSWINSZ, &win) < 0)
+ _error->Errno("ioctl", "Setting TIOCSWINSZ for master fd %d failed!", d->master);
+ }
+ if (tcsetattr(d->master, TCSANOW, &d->tt) == -1)
+ _error->Errno("tcsetattr", "Setting in Start via TCSANOW for master fd %d failed!", d->master);
+
+ raw_tt = d->tt;
+ cfmakeraw(&raw_tt);
+ raw_tt.c_lflag &= ~ECHO;
+ raw_tt.c_lflag |= ISIG;
+ // block SIGTTOU during tcsetattr to prevent a hang if
+ // the process is a member of the background process group
+ // http://www.opengroup.org/onlinepubs/000095399/functions/tcsetattr.html
+ sigemptyset(&d->sigmask);
+ sigaddset(&d->sigmask, SIGTTOU);
+ sigprocmask(SIG_BLOCK,&d->sigmask, &d->original_sigmask);
+ if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &raw_tt) == -1)
+ _error->Errno("tcsetattr", "Setting in Start via TCSAFLUSH for stdin failed!");
+ sigprocmask(SIG_SETMASK, &d->original_sigmask, NULL);
+
+ }
+ if (d->slave != NULL)
+ {
+ /* on linux, closing (and later reopening) all references to the slave
+ makes the slave a death end, so we open it here to have one open all
+ the time. We could use this fd in SetupSlavePtyMagic() for linux, but
+ on kfreebsd we get an incorrect ("step like") output then while it has
+ no problem with closing all references… so to avoid platform specific
+ code here we combine both and be happy once more */
+ d->protect_slave_from_dying = open(d->slave, O_RDWR | O_CLOEXEC | O_NOCTTY);
+ }
+ }
+ }
+
+ if (_error->PendingError() == true)
+ {
+ if (d->master != -1)
+ {
+ close(d->master);
+ d->master = -1;
+ }
+ if (d->slave != NULL)
+ {
+ free(d->slave);
+ d->slave = NULL;
+ }
+ _error->DumpErrors(std::cerr, GlobalError::DEBUG, false);
+ }
+ _error->RevertToStack();
+}
+ /*}}}*/
+void pkgDPkgPM::SetupSlavePtyMagic() /*{{{*/
+{
+ if(d->master == -1 || d->slave == NULL)
+ return;
+
+ if (close(d->master) == -1)
+ _error->FatalE("close", "Closing master %d in child failed!", d->master);
+ d->master = -1;
+ if (setsid() == -1)
+ _error->FatalE("setsid", "Starting a new session for child failed!");
+
+ int const slaveFd = open(d->slave, O_RDWR | O_NOCTTY);
+ if (slaveFd == -1)
+ _error->FatalE("open", _("Can not write log (%s)"), _("Is /dev/pts mounted?"));
+ else if (ioctl(slaveFd, TIOCSCTTY, 0) < 0)
+ _error->FatalE("ioctl", "Setting TIOCSCTTY for slave fd %d failed!", slaveFd);
+ else
+ {
+ unsigned short i = 0;
+ if (d->direct_stdin == true)
+ ++i;
+ for (; i < 3; ++i)
+ if (dup2(slaveFd, i) == -1)
+ _error->FatalE("dup2", "Dupping %d to %d in child failed!", slaveFd, i);
+
+ if (d->tt_is_valid == true && tcsetattr(STDIN_FILENO, TCSANOW, &d->tt) < 0)
+ _error->FatalE("tcsetattr", "Setting in Setup via TCSANOW for slave fd %d failed!", slaveFd);
+ }
+
+ if (slaveFd != -1)
+ close(slaveFd);
+}
+ /*}}}*/
+void pkgDPkgPM::StopPtyMagic() /*{{{*/
+{
+ if (d->slave != NULL)
+ free(d->slave);
+ d->slave = NULL;
+ if (d->protect_slave_from_dying != -1)
+ {
+ close(d->protect_slave_from_dying);
+ d->protect_slave_from_dying = -1;
+ }
+ if(d->master >= 0)
+ {
+ if (d->tt_is_valid == true && tcsetattr(STDIN_FILENO, TCSAFLUSH, &d->tt) == -1)
+ _error->FatalE("tcsetattr", "Setting in Stop via TCSAFLUSH for stdin failed!");
+ close(d->master);
+ d->master = -1;
+ }
+}
+ /*}}}*/
+static void cleanUpTmpDir(char * const tmpdir) /*{{{*/
+{
+ if (tmpdir == nullptr)
+ return;
+ DIR * const D = opendir(tmpdir);
+ if (D == nullptr)
+ _error->Errno("opendir", _("Unable to read %s"), tmpdir);
+ else
+ {
+ auto const dfd = dirfd(D);
+ for (struct dirent *Ent = readdir(D); Ent != nullptr; Ent = readdir(D))
+ {
+ if (Ent->d_name[0] == '.')
+ continue;
+#ifdef _DIRENT_HAVE_D_TYPE
+ if (unlikely(Ent->d_type != DT_LNK && Ent->d_type != DT_UNKNOWN))
+ continue;
+#endif
+ if (unlikely(unlinkat(dfd, Ent->d_name, 0) != 0))
+ break;
+ }
+ closedir(D);
+ rmdir(tmpdir);
+ }
+ free(tmpdir);
+}
+ /*}}}*/
+
+// DPkgPM::Go - Run the sequence /*{{{*/
+// ---------------------------------------------------------------------
+/* This globs the operations and calls dpkg
+ *
+ * If it is called with a progress object apt will report the install
+ * progress to this object. It maps the dpkg states a package goes
+ * through to human readable (and i10n-able)
+ * names and calculates a percentage for each step.
+ */
+static bool ItemIsEssential(pkgDPkgPM::Item const &I)
+{
+ static auto const cachegen = _config->Find("pkgCacheGen::Essential");
+ if (cachegen == "none" || cachegen == "native")
+ return true;
+ if (unlikely(I.Pkg.end()))
+ return true;
+ return (I.Pkg->Flags & pkgCache::Flag::Essential) != 0;
+}
+bool pkgDPkgPM::ExpandPendingCalls(std::vector<Item> &List, pkgDepCache &Cache)
+{
+ {
+ std::unordered_set<decltype(pkgCache::Package::ID)> alreadyRemoved;
+ for (auto && I : List)
+ if (I.Op == Item::Remove || I.Op == Item::Purge)
+ alreadyRemoved.insert(I.Pkg->ID);
+ std::remove_reference<decltype(List)>::type AppendList;
+ for (auto Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg)
+ if (Cache[Pkg].Delete() && alreadyRemoved.insert(Pkg->ID).second == true)
+ AppendList.emplace_back(Cache[Pkg].Purge() ? Item::Purge : Item::Remove, Pkg);
+ std::move(AppendList.begin(), AppendList.end(), std::back_inserter(List));
+ }
+ {
+ std::unordered_set<decltype(pkgCache::Package::ID)> alreadyConfigured;
+ for (auto && I : List)
+ if (I.Op == Item::Configure)
+ alreadyConfigured.insert(I.Pkg->ID);
+ std::remove_reference<decltype(List)>::type AppendList;
+ for (auto && I : List)
+ if (I.Op == Item::Install && alreadyConfigured.insert(I.Pkg->ID).second == true)
+ AppendList.emplace_back(Item::Configure, I.Pkg);
+ for (auto Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg)
+ if (Pkg.State() == pkgCache::PkgIterator::NeedsConfigure &&
+ Cache[Pkg].Delete() == false && alreadyConfigured.insert(Pkg->ID).second == true)
+ AppendList.emplace_back(Item::Configure, Pkg);
+ std::move(AppendList.begin(), AppendList.end(), std::back_inserter(List));
+ }
+ return true;
+}
+bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
+{
+ // explicitly remove&configure everything for hookscripts and progress building
+ // we need them only temporarily through, so keep the length and erase afterwards
+ decltype(List)::const_iterator::difference_type explicitIdx =
+ std::distance(List.cbegin(), List.cend());
+ ExpandPendingCalls(List, Cache);
+
+ /* if dpkg told us that it has already done everything to the package we wanted it to do,
+ we shouldn't ask it for "more" later. That can e.g. happen if packages without conffiles
+ are purged as they will have pass through the purge states on remove already */
+ auto const StripAlreadyDoneFrom = [&](APT::VersionVector & Pending) {
+ Pending.erase(std::remove_if(Pending.begin(), Pending.end(), [&](pkgCache::VerIterator const &Ver) {
+ auto const PN = Ver.ParentPkg().FullName();
+ auto const POD = PackageOpsDone.find(PN);
+ if (POD == PackageOpsDone.end())
+ return false;
+ return PackageOps[PN].size() <= POD->second;
+ }), Pending.end());
+ };
+
+ pkgPackageManager::SigINTStop = false;
+ d->progress = progress;
+
+ // Generate the base argument list for dpkg
+ std::vector<std::string> const sArgs = debSystem::GetDpkgBaseCommand();
+ std::vector<const char *> Args(sArgs.size(), NULL);
+ std::transform(sArgs.begin(), sArgs.end(), Args.begin(),
+ [](std::string const &s) { return s.c_str(); });
+ unsigned long long const StartSize = std::accumulate(sArgs.begin(), sArgs.end(), 0llu,
+ [](unsigned long long const i, std::string const &s) { return i + s.length(); });
+ size_t const BaseArgs = Args.size();
+
+ fd_set rfds;
+ struct timespec tv;
+
+ // try to figure out the max environment size
+ int OSArgMax = sysconf(_SC_ARG_MAX);
+ if(OSArgMax < 0)
+ OSArgMax = 32*1024;
+ OSArgMax -= EnvironmentSize() - 2*1024;
+ unsigned int const MaxArgBytes = _config->FindI("Dpkg::MaxArgBytes", OSArgMax);
+ bool const NoTriggers = _config->FindB("DPkg::NoTriggers", true);
+
+ if (RunScripts("DPkg::Pre-Invoke") == false)
+ return false;
+
+ if (RunScriptsWithPkgs("DPkg::Pre-Install-Pkgs") == false)
+ return false;
+
+ auto const noopDPkgInvocation = _config->FindB("Debug::pkgDPkgPM",false);
+ // store auto-bits as they are supposed to be after dpkg is run
+ if (noopDPkgInvocation == false)
+ Cache.writeStateFile(NULL);
+
+ bool dpkg_recursive_install = _config->FindB("dpkg::install::recursive", false);
+ if (_config->FindB("dpkg::install::recursive::force", false) == false)
+ {
+ // dpkg uses a sorted treewalk since that version which enables the workaround to work
+ auto const dpkgpkg = Cache.FindPkg("dpkg");
+ if (likely(dpkgpkg.end() == false && dpkgpkg->CurrentVer != 0))
+ dpkg_recursive_install = Cache.VS().CmpVersion("1.18.5", dpkgpkg.CurrentVer().VerStr()) <= 0;
+ }
+ // no point in doing this dance for a handful of packages only
+ unsigned int const dpkg_recursive_install_min = _config->FindI("dpkg::install::recursive::minimum", 5);
+ // FIXME: workaround for dpkg bug, see our ./test-bug-740843-versioned-up-down-breaks test
+ bool const dpkg_recursive_install_numbered = _config->FindB("dpkg::install::recursive::numbered", true);
+
+ // for the progress
+ BuildPackagesProgressMap();
+
+ APT::StateChanges approvedStates;
+ if (_config->FindB("dpkg::selection::remove::approved", true))
+ {
+ for (auto && I : List)
+ if (I.Op == Item::Purge)
+ approvedStates.Purge(FindToBeRemovedVersion(I.Pkg));
+ else if (I.Op == Item::Remove)
+ approvedStates.Remove(FindToBeRemovedVersion(I.Pkg));
+ }
+
+ // Skip removes if we install another architecture of this package soon (crossgrade)
+ // We can't just skip them all the time as it could be an ordering requirement [of another package]
+ if ((approvedStates.Remove().empty() == false || approvedStates.Purge().empty() == false) &&
+ _config->FindB("dpkg::remove::crossgrade::implicit", true) == true)
+ {
+ std::unordered_set<decltype(pkgCache::Package::ID)> crossgraded;
+ std::vector<std::pair<Item*, std::string>> toCrossgrade;
+ auto const PlanedEnd = std::next(List.begin(), explicitIdx);
+ for (auto I = List.begin(); I != PlanedEnd; ++I)
+ {
+ if (I->Op != Item::Remove && I->Op != Item::Purge)
+ continue;
+
+ auto const Grp = I->Pkg.Group();
+ size_t installedInstances = 0, wannabeInstances = 0;
+ bool multiArchInstances = false;
+ for (auto Pkg = Grp.PackageList(); Pkg.end() == false; Pkg = Grp.NextPkg(Pkg))
+ {
+ if (Pkg->CurrentVer != 0)
+ {
+ ++installedInstances;
+ if (Cache[Pkg].Delete() == false)
+ ++wannabeInstances;
+ }
+ else if (PackageOps.find(Pkg.FullName()) != PackageOps.end())
+ ++wannabeInstances;
+ if (multiArchInstances == false)
+ {
+ auto const V = Cache[Pkg].InstVerIter(Cache);
+ if (V.end() == false && (Pkg->CurrentVer == 0 || V != Pkg.CurrentVer()))
+ multiArchInstances = ((V->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same);
+ }
+ }
+ /* theoretically the installed check would be enough as some wannabe will
+ be first and hence be the crossgrade we were looking for, but #844300
+ prevents this so we keep these situations explicit removes.
+ It is also the reason why neither of them can be a M-A:same package */
+ if (installedInstances == 1 && wannabeInstances == 1 && multiArchInstances == false)
+ {
+ auto const FirstInstall = std::find_if_not(I, List.end(),
+ [](Item const &i) { return i.Op == Item::Remove || i.Op == Item::Purge; });
+ auto const LastInstall = std::find_if_not(FirstInstall, List.end(),
+ [](Item const &i) { return i.Op == Item::Install; });
+ auto const crosser = std::find_if(FirstInstall, LastInstall,
+ [&I](Item const &i) { return i.Pkg->Group == I->Pkg->Group; });
+ if (crosser != LastInstall)
+ {
+ crossgraded.insert(I->Pkg->ID);
+ toCrossgrade.emplace_back(&(*I), crosser->Pkg.FullName());
+ }
+ }
+ }
+ for (auto I = PlanedEnd; I != List.end(); ++I)
+ {
+ if (I->Op != Item::Remove && I->Op != Item::Purge)
+ continue;
+
+ auto const Grp = I->Pkg.Group();
+ for (auto Pkg = Grp.PackageList(); Pkg.end() == false; Pkg = Grp.NextPkg(Pkg))
+ {
+ if (Pkg == I->Pkg || Cache[Pkg].Install() == false)
+ continue;
+ toCrossgrade.emplace_back(&(*I), Pkg.FullName());
+ break;
+ }
+ }
+ for (auto C : toCrossgrade)
+ {
+ // we never do purges on packages which are crossgraded, even if "requested"
+ if (C.first->Op == Item::Purge)
+ {
+ C.first->Op = Item::Remove; // crossgrades should never be purged
+ auto && Purges = approvedStates.Purge();
+ auto const Ver = std::find_if(
+#if __GNUC__ >= 5 || (__GNUC_MINOR__ >= 9 && __GNUC__ >= 4)
+ Purges.cbegin(), Purges.cend(),
+#else
+ Purges.begin(), Purges.end(),
+#endif
+ [&C](pkgCache::VerIterator const &V) { return V.ParentPkg() == C.first->Pkg; });
+ approvedStates.Remove(*Ver);
+ Purges.erase(Ver);
+ auto && RemOp = PackageOps[C.first->Pkg.FullName()];
+ if (RemOp.size() == 5)
+ {
+ RemOp.erase(std::next(RemOp.begin(), 3), RemOp.end());
+ PackagesTotal -= 2;
+ }
+ else
+ _error->Warning("Unexpected amount of planned ops for package %s: %lu", C.first->Pkg.FullName().c_str(), RemOp.size());
+ }
+ }
+ if (crossgraded.empty() == false)
+ {
+ auto const oldsize = List.size();
+ List.erase(std::remove_if(List.begin(), PlanedEnd,
+ [&crossgraded](Item const &i){
+ return (i.Op == Item::Remove || i.Op == Item::Purge) &&
+ crossgraded.find(i.Pkg->ID) != crossgraded.end();
+ }), PlanedEnd);
+ explicitIdx -= (oldsize - List.size());
+ }
+ }
+
+ APT::StateChanges currentStates;
+ if (_config->FindB("dpkg::selection::current::saveandrestore", true))
+ {
+ for (auto Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg)
+ if (Pkg->CurrentVer == 0)
+ continue;
+ else if (Pkg->SelectedState == pkgCache::State::Purge)
+ currentStates.Purge(FindToBeRemovedVersion(Pkg));
+ else if (Pkg->SelectedState == pkgCache::State::DeInstall)
+ currentStates.Remove(FindToBeRemovedVersion(Pkg));
+ if (currentStates.empty() == false)
+ {
+ APT::StateChanges cleanStates;
+ for (auto && P: currentStates.Remove())
+ cleanStates.Install(P);
+ for (auto && P: currentStates.Purge())
+ cleanStates.Install(P);
+ if (cleanStates.Save(false) == false)
+ return _error->Error("Couldn't clean the currently selected dpkg states");
+ }
+ }
+
+ if (_config->FindB("dpkg::selection::remove::approved", true))
+ {
+ if (approvedStates.Save(false) == false)
+ {
+ _error->Error("Couldn't record the approved state changes as dpkg selection states");
+ if (currentStates.Save(false) == false)
+ _error->Error("Couldn't restore dpkg selection states which were present before this interaction!");
+ return false;
+ }
+
+ List.erase(std::next(List.begin(), explicitIdx), List.end());
+
+ std::vector<bool> toBeRemoved(Cache.Head().PackageCount, false);
+ for (auto && I: approvedStates.Remove())
+ toBeRemoved[I.ParentPkg()->ID] = true;
+ for (auto && I: approvedStates.Purge())
+ toBeRemoved[I.ParentPkg()->ID] = true;
+
+ for (auto && I: List)
+ if (I.Op == Item::Remove || I.Op == Item::Purge)
+ toBeRemoved[I.Pkg->ID] = false;
+
+ bool const RemovePending = std::find(toBeRemoved.begin(), toBeRemoved.end(), true) != toBeRemoved.end();
+ bool const PurgePending = approvedStates.Purge().empty() == false;
+ if (RemovePending != false || PurgePending != false)
+ List.emplace_back(Item::ConfigurePending, pkgCache::PkgIterator());
+ if (RemovePending)
+ List.emplace_back(Item::RemovePending, pkgCache::PkgIterator());
+ if (PurgePending)
+ List.emplace_back(Item::PurgePending, pkgCache::PkgIterator());
+
+ // support subpressing of triggers processing for special
+ // cases like d-i that runs the triggers handling manually
+ if (_config->FindB("DPkg::ConfigurePending", true))
+ List.emplace_back(Item::ConfigurePending, pkgCache::PkgIterator());
+ }
+ bool const TriggersPending = _config->FindB("DPkg::TriggersPending", false);
+
+ d->stdin_is_dev_null = false;
+
+ // create log
+ OpenLog();
+
+ bool dpkgMultiArch = debSystem::SupportsMultiArch();
+
+ // start pty magic before the loop
+ StartPtyMagic();
+
+ // Tell the progress that its starting and fork dpkg
+ d->progress->Start(d->master);
+
+ // this loop is runs once per dpkg operation
+ vector<Item>::const_iterator I = List.cbegin();
+ while (I != List.end())
+ {
+ // Do all actions with the same Op in one run
+ vector<Item>::const_iterator J = I;
+ if (TriggersPending == true)
+ for (; J != List.end(); ++J)
+ {
+ if (J->Op == I->Op)
+ continue;
+ if (J->Op != Item::TriggersPending)
+ break;
+ vector<Item>::const_iterator T = J + 1;
+ if (T != List.end() && T->Op == I->Op)
+ continue;
+ break;
+ }
+ else if (J->Op == Item::Remove || J->Op == Item::Purge)
+ J = std::find_if(J, List.cend(), [](Item const &I) { return I.Op != Item::Remove && I.Op != Item::Purge; });
+ else
+ J = std::find_if(J, List.cend(), [&J](Item const &I) { return I.Op != J->Op; });
+
+ auto const size = (J - I) + 10;
+
+ // start with the baseset of arguments
+ auto Size = StartSize;
+ Args.erase(Args.begin() + BaseArgs, Args.end());
+ Args.reserve(size);
+ // keep track of allocated strings for multiarch package names
+ std::vector<char *> Packages(size, nullptr);
+
+ int fd[2];
+ if (pipe(fd) != 0)
+ return _error->Errno("pipe","Failed to create IPC pipe to dpkg");
+
+#define ADDARG(X) Args.push_back(X); Size += strlen(X)
+#define ADDARGC(X) Args.push_back(X); Size += sizeof(X) - 1
+
+ ADDARGC("--status-fd");
+ char status_fd_buf[20];
+ snprintf(status_fd_buf,sizeof(status_fd_buf),"%i", fd[1]);
+ ADDARG(status_fd_buf);
+ unsigned long const Op = I->Op;
+
+ if (NoTriggers == true && I->Op != Item::TriggersPending &&
+ (I->Op != Item::ConfigurePending || std::next(I) != List.end()))
+ {
+ ADDARGC("--no-triggers");
+ }
+
+ switch (I->Op)
+ {
+ case Item::Remove:
+ case Item::Purge:
+ ADDARGC("--force-depends");
+ if (std::any_of(I, J, ItemIsEssential))
+ ADDARGC("--force-remove-essential");
+ ADDARGC("--remove");
+ break;
+
+ case Item::Configure:
+ ADDARGC("--configure");
+ break;
+
+ case Item::ConfigurePending:
+ ADDARGC("--configure");
+ ADDARGC("--pending");
+ break;
+
+ case Item::TriggersPending:
+ ADDARGC("--triggers-only");
+ ADDARGC("--pending");
+ break;
+
+ case Item::RemovePending:
+ ADDARGC("--remove");
+ ADDARGC("--pending");
+ break;
+
+ case Item::PurgePending:
+ ADDARGC("--purge");
+ ADDARGC("--pending");
+ break;
+
+ case Item::Install:
+ ADDARGC("--unpack");
+ ADDARGC("--auto-deconfigure");
+ break;
+ }
+
+ char * tmpdir_to_free = nullptr;
+
+ // Write in the file or package names
+ if (I->Op == Item::Install)
+ {
+ auto const installsToDo = J - I;
+ if (dpkg_recursive_install == true && dpkg_recursive_install_min < installsToDo)
+ {
+ std::string tmpdir;
+ strprintf(tmpdir, "%s/apt-dpkg-install-XXXXXX", GetTempDir().c_str());
+ tmpdir_to_free = strndup(tmpdir.data(), tmpdir.length());
+ if (mkdtemp(tmpdir_to_free) == nullptr)
+ return _error->Errno("DPkg::Go", "mkdtemp of %s failed in preparation of calling dpkg unpack", tmpdir_to_free);
+
+ char p = 1;
+ for (auto c = installsToDo - 1; (c = c/10) != 0; ++p);
+ for (unsigned long n = 0; I != J; ++n, ++I)
+ {
+ if (I->File[0] != '/')
+ return _error->Error("Internal Error, Pathname to install is not absolute '%s'",I->File.c_str());
+ auto file = flNotDir(I->File);
+ if (flExtension(file) != "deb")
+ file.append(".deb");
+ std::string linkpath;
+ if (dpkg_recursive_install_numbered)
+ strprintf(linkpath, "%s/%.*lu-%s", tmpdir_to_free, p, n, file.c_str());
+ else
+ strprintf(linkpath, "%s/%s", tmpdir_to_free, file.c_str());
+ if (symlink(I->File.c_str(), linkpath.c_str()) != 0)
+ return _error->Errno("DPkg::Go", "Symlinking %s to %s failed!", I->File.c_str(), linkpath.c_str());
+ }
+ ADDARGC("--recursive");
+ ADDARG(tmpdir_to_free);
+ }
+ else
+ {
+ for (;I != J && Size < MaxArgBytes; ++I)
+ {
+ if (I->File[0] != '/')
+ return _error->Error("Internal Error, Pathname to install is not absolute '%s'",I->File.c_str());
+ Args.push_back(I->File.c_str());
+ Size += I->File.length();
+ }
+ }
+ }
+ else if (I->Op == Item::RemovePending)
+ {
+ ++I;
+ StripAlreadyDoneFrom(approvedStates.Remove());
+ if (approvedStates.Remove().empty())
+ continue;
+ }
+ else if (I->Op == Item::PurgePending)
+ {
+ ++I;
+ // explicit removes of packages without conffiles passthrough the purge states instantly, too.
+ // Setting these non-installed packages up for purging generates 'unknown pkg' warnings from dpkg
+ StripAlreadyDoneFrom(approvedStates.Purge());
+ if (approvedStates.Purge().empty())
+ continue;
+ std::remove_reference<decltype(approvedStates.Remove())>::type approvedRemoves;
+ std::swap(approvedRemoves, approvedStates.Remove());
+ // we apply it again here as an explicit remove in the ordering will have cleared the purge state
+ if (approvedStates.Save(false) == false)
+ {
+ _error->Error("Couldn't record the approved purges as dpkg selection states");
+ if (currentStates.Save(false) == false)
+ _error->Error("Couldn't restore dpkg selection states which were present before this interaction!");
+ return false;
+ }
+ std::swap(approvedRemoves, approvedStates.Remove());
+ }
+ else
+ {
+ string const nativeArch = _config->Find("APT::Architecture");
+ unsigned long const oldSize = I->Pkg.end() == false ? Size : 0;
+ for (;I != J && Size < MaxArgBytes; ++I)
+ {
+ if((*I).Pkg.end() == true)
+ continue;
+ if (I->Op == Item::Configure && disappearedPkgs.find(I->Pkg.FullName(true)) != disappearedPkgs.end())
+ continue;
+ // We keep this here to allow "smooth" transitions from e.g. multiarch dpkg/ubuntu to dpkg/debian
+ if (dpkgMultiArch == false && (I->Pkg.Arch() == nativeArch ||
+ strcmp(I->Pkg.Arch(), "all") == 0 ||
+ strcmp(I->Pkg.Arch(), "none") == 0))
+ {
+ char const * const name = I->Pkg.Name();
+ ADDARG(name);
+ }
+ else
+ {
+ pkgCache::VerIterator PkgVer;
+ std::string name = I->Pkg.Name();
+ if (Op == Item::Remove)
+ PkgVer = I->Pkg.CurrentVer();
+ else if (Op == Item::Purge)
+ {
+ // we purge later with --purge --pending, so if it isn't installed (aka rc-only), skip it here
+ PkgVer = I->Pkg.CurrentVer();
+ if (PkgVer.end() == true)
+ continue;
+ }
+ else
+ PkgVer = Cache[I->Pkg].InstVerIter(Cache);
+ if (strcmp(I->Pkg.Arch(), "none") == 0)
+ ; // never arch-qualify a package without an arch
+ else if (PkgVer.end() == false)
+ name.append(":").append(PkgVer.Arch());
+ else
+ _error->Warning("Can not find PkgVer for '%s'", name.c_str());
+ char * const fullname = strdup(name.c_str());
+ Packages.push_back(fullname);
+ ADDARG(fullname);
+ }
+ }
+ // skip configure action if all scheduled packages disappeared
+ if (oldSize == Size)
+ continue;
+ }
+#undef ADDARGC
+#undef ADDARG
+
+ J = I;
+
+ if (noopDPkgInvocation == true)
+ {
+ for (std::vector<const char *>::const_iterator a = Args.begin();
+ a != Args.end(); ++a)
+ clog << *a << ' ';
+ clog << endl;
+ for (std::vector<char *>::const_iterator p = Packages.begin();
+ p != Packages.end(); ++p)
+ free(*p);
+ Packages.clear();
+ close(fd[0]);
+ close(fd[1]);
+ cleanUpTmpDir(tmpdir_to_free);
+ continue;
+ }
+ Args.push_back(NULL);
+
+ cout << flush;
+ clog << flush;
+ cerr << flush;
+
+ /* Mask off sig int/quit. We do this because dpkg also does when
+ it forks scripts. What happens is that when you hit ctrl-c it sends
+ it to all processes in the group. Since dpkg ignores the signal
+ it doesn't die but we do! So we must also ignore it */
+ sighandler_t old_SIGQUIT = signal(SIGQUIT,SIG_IGN);
+ sighandler_t old_SIGINT = signal(SIGINT,SigINT);
+
+ // Check here for any SIGINT
+ if (pkgPackageManager::SigINTStop && (Op == Item::Remove || Op == Item::Purge || Op == Item::Install))
+ break;
+
+ // ignore SIGHUP as well (debian #463030)
+ sighandler_t old_SIGHUP = signal(SIGHUP,SIG_IGN);
+
+ // now run dpkg
+ d->progress->StartDpkg();
+ std::set<int> KeepFDs;
+ KeepFDs.insert(fd[1]);
+ MergeKeepFdsFromConfiguration(KeepFDs);
+ pid_t Child = ExecFork(KeepFDs);
+ if (Child == 0)
+ {
+ // This is the child
+ SetupSlavePtyMagic();
+ close(fd[0]); // close the read end of the pipe
+
+ debSystem::DpkgChrootDirectory();
+
+ if (chdir(_config->FindDir("DPkg::Run-Directory","/").c_str()) != 0)
+ _exit(100);
+
+ if (_config->FindB("DPkg::FlushSTDIN",true) == true && isatty(STDIN_FILENO))
+ {
+ int Flags;
+ int dummy = 0;
+ if ((Flags = fcntl(STDIN_FILENO,F_GETFL,dummy)) < 0)
+ _exit(100);
+
+ // Discard everything in stdin before forking dpkg
+ if (fcntl(STDIN_FILENO,F_SETFL,Flags | O_NONBLOCK) < 0)
+ _exit(100);
+
+ while (read(STDIN_FILENO,&dummy,1) == 1);
+
+ if (fcntl(STDIN_FILENO,F_SETFL,Flags & (~(long)O_NONBLOCK)) < 0)
+ _exit(100);
+ }
+
+ // if color support isn't enabled/disabled explicitly tell
+ // dpkg to use the same state apt is using for its color support
+ if (_config->FindB("APT::Color", false) == true)
+ setenv("DPKG_COLORS", "always", 0);
+ else
+ setenv("DPKG_COLORS", "never", 0);
+
+ execvp(Args[0], (char**) &Args[0]);
+ cerr << "Could not exec dpkg!" << endl;
+ _exit(100);
+ }
+
+ // we read from dpkg here
+ int const _dpkgin = fd[0];
+ close(fd[1]); // close the write end of the pipe
+
+ // apply ionice
+ if (_config->FindB("DPkg::UseIoNice", false) == true)
+ ionice(Child);
+
+ // setups fds
+ sigemptyset(&d->sigmask);
+ sigprocmask(SIG_BLOCK,&d->sigmask,&d->original_sigmask);
+
+ /* free vectors (and therefore memory) as we don't need the included data anymore */
+ for (std::vector<char *>::const_iterator p = Packages.begin();
+ p != Packages.end(); ++p)
+ free(*p);
+ Packages.clear();
+
+ // the result of the waitpid call
+ int Status = 0;
+ int res;
+ bool waitpid_failure = false;
+ while ((res=waitpid(Child,&Status, WNOHANG)) != Child) {
+ if(res < 0) {
+ // error handling, waitpid returned -1
+ if (errno == EINTR)
+ continue;
+ waitpid_failure = true;
+ break;
+ }
+
+ // wait for input or output here
+ FD_ZERO(&rfds);
+ if (d->master >= 0 && d->direct_stdin == false && d->stdin_is_dev_null == false)
+ FD_SET(STDIN_FILENO, &rfds);
+ FD_SET(_dpkgin, &rfds);
+ if(d->master >= 0)
+ FD_SET(d->master, &rfds);
+ tv.tv_sec = 0;
+ tv.tv_nsec = d->progress->GetPulseInterval();
+ auto const select_ret = pselect(max(d->master, _dpkgin)+1, &rfds, NULL, NULL,
+ &tv, &d->original_sigmask);
+ d->progress->Pulse();
+ if (select_ret == 0)
+ continue;
+ else if (select_ret < 0 && errno == EINTR)
+ continue;
+ else if (select_ret < 0)
+ {
+ perror("select() returned error");
+ continue;
+ }
+
+ if(d->master >= 0 && FD_ISSET(d->master, &rfds))
+ DoTerminalPty(d->master);
+ if(d->master >= 0 && FD_ISSET(0, &rfds))
+ DoStdin(d->master);
+ if(FD_ISSET(_dpkgin, &rfds))
+ DoDpkgStatusFd(_dpkgin);
+ }
+ close(_dpkgin);
+
+ // Restore sig int/quit
+ signal(SIGQUIT,old_SIGQUIT);
+ signal(SIGINT,old_SIGINT);
+ signal(SIGHUP,old_SIGHUP);
+
+ cleanUpTmpDir(tmpdir_to_free);
+
+ if (waitpid_failure == true)
+ {
+ strprintf(d->dpkg_error, "Sub-process %s couldn't be waited for.",Args[0]);
+ _error->Error("%s", d->dpkg_error.c_str());
+ break;
+ }
+
+ // Check for an error code.
+ if (WIFEXITED(Status) == 0 || WEXITSTATUS(Status) != 0)
+ {
+ // if it was set to "keep-dpkg-running" then we won't return
+ // here but keep the loop going and just report it as a error
+ // for later
+ bool const stopOnError = _config->FindB("Dpkg::StopOnError",true);
+
+ if (WIFSIGNALED(Status) != 0 && WTERMSIG(Status) == SIGSEGV)
+ strprintf(d->dpkg_error, "Sub-process %s received a segmentation fault.",Args[0]);
+ else if (WIFEXITED(Status) != 0)
+ strprintf(d->dpkg_error, "Sub-process %s returned an error code (%u)",Args[0],WEXITSTATUS(Status));
+ else
+ strprintf(d->dpkg_error, "Sub-process %s exited unexpectedly",Args[0]);
+ _error->Error("%s", d->dpkg_error.c_str());
+
+ if(stopOnError)
+ break;
+ }
+ }
+ // dpkg is done at this point
+ StopPtyMagic();
+ CloseLog();
+
+ if (d->dpkg_error.empty() == false)
+ {
+ // no point in resetting packages we already completed removal for
+ StripAlreadyDoneFrom(approvedStates.Remove());
+ StripAlreadyDoneFrom(approvedStates.Purge());
+ APT::StateChanges undo;
+ auto && undoRem = approvedStates.Remove();
+ std::move(undoRem.begin(), undoRem.end(), std::back_inserter(undo.Install()));
+ auto && undoPur = approvedStates.Purge();
+ std::move(undoPur.begin(), undoPur.end(), std::back_inserter(undo.Install()));
+ approvedStates.clear();
+ if (undo.Save(false) == false)
+ _error->Error("Couldn't revert dpkg selection for approved remove/purge after an error was encountered!");
+ }
+
+ StripAlreadyDoneFrom(currentStates.Remove());
+ StripAlreadyDoneFrom(currentStates.Purge());
+ if (currentStates.Save(false) == false)
+ _error->Error("Couldn't restore dpkg selection states which were present before this interaction!");
+
+ if (pkgPackageManager::SigINTStop)
+ _error->Warning(_("Operation was interrupted before it could finish"));
+
+ if (noopDPkgInvocation == false)
+ {
+ if (d->dpkg_error.empty() && (PackagesDone + 1) != PackagesTotal)
+ {
+ std::string pkglist;
+ for (auto const &PO: PackageOps)
+ if (PO.second.size() != PackageOpsDone[PO.first])
+ {
+ if (pkglist.empty() == false)
+ pkglist.append(" ");
+ pkglist.append(PO.first);
+ }
+ /* who cares about correct progress? As we depend on it for skipping actions
+ our parsing should be correct. People will no doubt be confused if they see
+ this message, but the dpkg warning about unknown packages isn't much better
+ from a user POV and combined we might have a chance to figure out what is wrong */
+ _error->Warning("APT had planned for dpkg to do more than it reported back (%u vs %u).\n"
+ "Affected packages: %s", PackagesDone, PackagesTotal, pkglist.c_str());
+ }
+
+ std::string const oldpkgcache = _config->FindFile("Dir::cache::pkgcache");
+ if (oldpkgcache.empty() == false && RealFileExists(oldpkgcache) == true &&
+ RemoveFile("pkgDPkgPM::Go", oldpkgcache))
+ {
+ std::string const srcpkgcache = _config->FindFile("Dir::cache::srcpkgcache");
+ if (srcpkgcache.empty() == false && RealFileExists(srcpkgcache) == true)
+ {
+ _error->PushToStack();
+ pkgCacheFile CacheFile;
+ CacheFile.BuildCaches(NULL, true);
+ _error->RevertToStack();
+ }
+ }
+ }
+
+ // disappearing packages can forward their auto-bit
+ if (disappearedPkgs.empty() == false)
+ Cache.writeStateFile(NULL);
+
+ d->progress->Stop();
+
+ if (RunScripts("DPkg::Post-Invoke") == false)
+ return false;
+
+ return d->dpkg_error.empty();
+}
+
+void SigINT(int /*sig*/) {
+ pkgPackageManager::SigINTStop = true;
+}
+ /*}}}*/
+// pkgDpkgPM::Reset - Dump the contents of the command list /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgDPkgPM::Reset()
+{
+ List.erase(List.begin(),List.end());
+}
+ /*}}}*/
+// pkgDpkgPM::WriteApportReport - write out error report pkg failure /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg)
+{
+ // If apport doesn't exist or isn't installed do nothing
+ // This e.g. prevents messages in 'universes' without apport
+ pkgCache::PkgIterator apportPkg = Cache.FindPkg("apport");
+ if (apportPkg.end() == true || apportPkg->CurrentVer == 0)
+ return;
+
+ string pkgname, reportfile, pkgver, arch;
+ string::size_type pos;
+ FILE *report;
+
+ if (_config->FindB("Dpkg::ApportFailureReport", true) == false)
+ {
+ std::clog << "configured to not write apport reports" << std::endl;
+ return;
+ }
+
+ // only report the first errors
+ if(pkgFailures > _config->FindI("APT::Apport::MaxReports", 3))
+ {
+ std::clog << _("No apport report written because MaxReports is reached already") << std::endl;
+ return;
+ }
+
+ // check if its not a follow up error
+ const char *needle = dgettext("dpkg", "dependency problems - leaving unconfigured");
+ if(strstr(errormsg, needle) != NULL) {
+ std::clog << _("No apport report written because the error message indicates its a followup error from a previous failure.") << std::endl;
+ return;
+ }
+
+ // do not report disk-full failures
+ if(strstr(errormsg, strerror(ENOSPC)) != NULL) {
+ std::clog << _("No apport report written because the error message indicates a disk full error") << std::endl;
+ return;
+ }
+
+ // do not report out-of-memory failures
+ if(strstr(errormsg, strerror(ENOMEM)) != NULL ||
+ strstr(errormsg, "failed to allocate memory") != NULL) {
+ std::clog << _("No apport report written because the error message indicates a out of memory error") << std::endl;
+ return;
+ }
+
+ // do not report bugs regarding inaccessible local files
+ if(strstr(errormsg, strerror(ENOENT)) != NULL ||
+ strstr(errormsg, "cannot access archive") != NULL) {
+ std::clog << _("No apport report written because the error message indicates an issue on the local system") << std::endl;
+ return;
+ }
+
+ // do not report errors encountered when decompressing packages
+ if(strstr(errormsg, "--fsys-tarfile returned error exit status 2") != NULL) {
+ std::clog << _("No apport report written because the error message indicates an issue on the local system") << std::endl;
+ return;
+ }
+
+ // do not report dpkg I/O errors, this is a format string, so we compare
+ // the prefix and the suffix of the error with the dpkg error message
+ vector<string> io_errors;
+ io_errors.push_back(string("failed to read"));
+ io_errors.push_back(string("failed to write"));
+ io_errors.push_back(string("failed to seek"));
+ io_errors.push_back(string("unexpected end of file or stream"));
+
+ for (vector<string>::iterator I = io_errors.begin(); I != io_errors.end(); ++I)
+ {
+ vector<string> list = VectorizeString(dgettext("dpkg", (*I).c_str()), '%');
+ if (list.size() > 1) {
+ // we need to split %s, VectorizeString only allows char so we need
+ // to kill the "s" manually
+ if (list[1].size() > 1) {
+ list[1].erase(0, 1);
+ if(strstr(errormsg, list[0].c_str()) &&
+ strstr(errormsg, list[1].c_str())) {
+ std::clog << _("No apport report written because the error message indicates a dpkg I/O error") << std::endl;
+ return;
+ }
+ }
+ }
+ }
+
+ // get the pkgname and reportfile
+ pkgname = flNotDir(pkgpath);
+ pos = pkgname.find('_');
+ if(pos != string::npos)
+ pkgname = pkgname.substr(0, pos);
+
+ // find the package version and source package name
+ pkgCache::PkgIterator Pkg = Cache.FindPkg(pkgname);
+ if (Pkg.end() == true)
+ {
+ if (pos == std::string::npos || _config->FindB("dpkg::install::recursive::numbered", true) == false)
+ return;
+ auto const dash = pkgname.find_first_not_of("0123456789");
+ if (dash == std::string::npos || pkgname[dash] != '-')
+ return;
+ pkgname.erase(0, dash + 1);
+ Pkg = Cache.FindPkg(pkgname);
+ if (Pkg.end() == true)
+ return;
+ }
+ pkgCache::VerIterator Ver = Cache.GetCandidateVersion(Pkg);
+ if (Ver.end() == true)
+ return;
+ pkgver = Ver.VerStr() == NULL ? "unknown" : Ver.VerStr();
+
+ // if the file exists already, we check:
+ // - if it was reported already (touched by apport).
+ // If not, we do nothing, otherwise
+ // we overwrite it. This is the same behaviour as apport
+ // - if we have a report with the same pkgversion already
+ // then we skip it
+ _config->CndSet("Dir::Apport", "var/crash");
+ reportfile = flCombine(_config->FindDir("Dir::Apport", "var/crash"), pkgname+".0.crash");
+ if(FileExists(reportfile))
+ {
+ struct stat buf;
+ char strbuf[255];
+
+ // check atime/mtime
+ stat(reportfile.c_str(), &buf);
+ if(buf.st_mtime > buf.st_atime)
+ return;
+
+ // check if the existing report is the same version
+ report = fopen(reportfile.c_str(),"r");
+ while(fgets(strbuf, sizeof(strbuf), report) != NULL)
+ {
+ if(strstr(strbuf,"Package:") == strbuf)
+ {
+ char pkgname[255], version[255];
+ if(sscanf(strbuf, "Package: %254s %254s", pkgname, version) == 2)
+ if(strcmp(pkgver.c_str(), version) == 0)
+ {
+ fclose(report);
+ return;
+ }
+ }
+ }
+ fclose(report);
+ }
+
+ // now write the report
+ arch = _config->Find("APT::Architecture");
+ report = fopen(reportfile.c_str(),"w");
+ if(report == NULL)
+ return;
+ if(_config->FindB("DPkgPM::InitialReportOnly",false) == true)
+ chmod(reportfile.c_str(), 0);
+ else
+ chmod(reportfile.c_str(), 0600);
+ fprintf(report, "ProblemType: Package\n");
+ fprintf(report, "Architecture: %s\n", arch.c_str());
+ time_t now = time(NULL);
+ char ctime_buf[26]; // need at least 26 bytes according to ctime(3)
+ fprintf(report, "Date: %s" , ctime_r(&now, ctime_buf));
+ fprintf(report, "Package: %s %s\n", pkgname.c_str(), pkgver.c_str());
+ fprintf(report, "SourcePackage: %s\n", Ver.SourcePkgName());
+ fprintf(report, "ErrorMessage:\n %s\n", errormsg);
+
+ // ensure that the log is flushed
+ if(d->term_out)
+ fflush(d->term_out);
+
+ // attach terminal log it if we have it
+ string logfile_name = _config->FindFile("Dir::Log::Terminal");
+ if (!logfile_name.empty())
+ {
+ FILE *log = NULL;
+
+ fprintf(report, "DpkgTerminalLog:\n");
+ log = fopen(logfile_name.c_str(),"r");
+ if(log != NULL)
+ {
+ char buf[1024];
+ while( fgets(buf, sizeof(buf), log) != NULL)
+ fprintf(report, " %s", buf);
+ fprintf(report, " \n");
+ fclose(log);
+ }
+ }
+
+ // attach history log it if we have it
+ string histfile_name = _config->FindFile("Dir::Log::History");
+ if (!histfile_name.empty())
+ {
+ fprintf(report, "DpkgHistoryLog:\n");
+ FILE* log = fopen(histfile_name.c_str(),"r");
+ if(log != NULL)
+ {
+ char buf[1024];
+ while( fgets(buf, sizeof(buf), log) != NULL)
+ fprintf(report, " %s", buf);
+ fclose(log);
+ }
+ }
+
+ // log the ordering, see dpkgpm.h and the "Ops" enum there
+ fprintf(report, "AptOrdering:\n");
+ for (auto && I : List)
+ {
+ char const * opstr = nullptr;
+ switch (I.Op)
+ {
+ case Item::Install: opstr = "Install"; break;
+ case Item::Configure: opstr = "Configure"; break;
+ case Item::Remove: opstr = "Remove"; break;
+ case Item::Purge: opstr = "Purge"; break;
+ case Item::ConfigurePending: opstr = "ConfigurePending"; break;
+ case Item::TriggersPending: opstr = "TriggersPending"; break;
+ case Item::RemovePending: opstr = "RemovePending"; break;
+ case Item::PurgePending: opstr = "PurgePending"; break;
+ }
+ auto const pkgname = I.Pkg.end() ? "NULL" : I.Pkg.FullName();
+ fprintf(report, " %s: %s\n", pkgname.c_str(), opstr);
+ }
+
+ // attach dmesg log (to learn about segfaults)
+ if (FileExists("/bin/dmesg"))
+ {
+ fprintf(report, "Dmesg:\n");
+ FILE *log = popen("/bin/dmesg","r");
+ if(log != NULL)
+ {
+ char buf[1024];
+ while( fgets(buf, sizeof(buf), log) != NULL)
+ fprintf(report, " %s", buf);
+ pclose(log);
+ }
+ }
+
+ // attach df -l log (to learn about filesystem status)
+ if (FileExists("/bin/df"))
+ {
+
+ fprintf(report, "Df:\n");
+ FILE *log = popen("/bin/df -l","r");
+ if(log != NULL)
+ {
+ char buf[1024];
+ while( fgets(buf, sizeof(buf), log) != NULL)
+ fprintf(report, " %s", buf);
+ pclose(log);
+ }
+ }
+
+ fclose(report);
+
+}
+ /*}}}*/
diff --git a/apt-pkg/deb/dpkgpm.h b/apt-pkg/deb/dpkgpm.h
new file mode 100644
index 000000000..d1c2bcf41
--- /dev/null
+++ b/apt-pkg/deb/dpkgpm.h
@@ -0,0 +1,145 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: dpkgpm.h,v 1.8 2001/05/07 05:05:13 jgg Exp $
+/* ######################################################################
+
+ DPKG Package Manager - Provide an interface to dpkg
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_DPKGPM_H
+#define PKGLIB_DPKGPM_H
+
+#include <apt-pkg/packagemanager.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/macros.h>
+
+#include <vector>
+#include <map>
+#include <stdio.h>
+#include <string>
+
+#ifndef APT_10_CLEANER_HEADERS
+#include <apt-pkg/init.h>
+#endif
+
+class pkgDepCache;
+namespace APT { namespace Progress { class PackageManager; } }
+
+#ifndef APT_8_CLEANER_HEADERS
+using std::vector;
+using std::map;
+#endif
+
+class pkgDPkgPMPrivate;
+
+
+class pkgDPkgPM : public pkgPackageManager
+{
+ private:
+ pkgDPkgPMPrivate * const d;
+
+ /** \brief record the disappear action and handle accordingly
+
+ dpkg let packages disappear then they have no files any longer and
+ nothing depends on them. We need to collect this as dpkg as well as
+ APT doesn't know beforehand that the package will disappear, so the
+ only possible option is to tell the user afterwards about it.
+ To enhance the experience we also try to forward the auto-install
+ flag so the disappear-causer(s) are not autoremoved next time -
+ for the transfer to happen the disappeared version needs to depend
+ on the package the flag should be forwarded to and this package
+ needs to declare a Replaces on the disappeared package.
+ \param pkgname Name of the package that disappeared
+ */
+ APT_HIDDEN void handleDisappearAction(std::string const &pkgname);
+ APT_HIDDEN void handleCrossUpgradeAction(std::string const &pkgname);
+
+ protected:
+ int pkgFailures;
+
+ // progress reporting
+ struct DpkgState
+ {
+ const char *state; // the dpkg state (e.g. "unpack")
+ const char *str; // the human readable translation of the state
+ };
+
+ // the dpkg states that the pkg will run through, the string is
+ // the package, the vector contains the dpkg states that the package
+ // will go through
+ std::map<std::string,std::vector<struct DpkgState> > PackageOps;
+ // the dpkg states that are already done; the string is the package
+ // the int is the state that is already done (e.g. a package that is
+ // going to be install is already in state "half-installed")
+ std::map<std::string,unsigned int> PackageOpsDone;
+
+ // progress reporting
+ unsigned int PackagesDone;
+ unsigned int PackagesTotal;
+
+ public:
+ struct Item
+ {
+ enum Ops {Install, Configure, Remove, Purge, ConfigurePending, TriggersPending,
+ RemovePending, PurgePending } Op;
+ std::string File;
+ PkgIterator Pkg;
+ Item(Ops Op,PkgIterator Pkg,std::string File = "") : Op(Op),
+ File(File), Pkg(Pkg) {};
+ Item() {};
+ };
+ protected:
+ std::vector<Item> List;
+
+ // Helpers
+ bool RunScriptsWithPkgs(const char *Cnf);
+ APT_DEPRECATED_MSG("Use SendPkgInfo with the version as parameter instead") bool SendV2Pkgs(FILE *F);
+ bool SendPkgsInfo(FILE * const F, unsigned int const &Version);
+ void WriteHistoryTag(std::string const &tag, std::string value);
+ std::string ExpandShortPackageName(pkgDepCache &Cache,
+ const std::string &short_pkgname);
+
+ // Terminal progress
+ void SendTerminalProgress(float percentage);
+
+ // apport integration
+ void WriteApportReport(const char *pkgpath, const char *errormsg);
+
+ // dpkg log
+ bool OpenLog();
+ bool CloseLog();
+
+ // helper
+ void BuildPackagesProgressMap();
+ void StartPtyMagic();
+ void SetupSlavePtyMagic();
+ void StopPtyMagic();
+
+ // input processing
+ void DoStdin(int master);
+ void DoTerminalPty(int master);
+ void DoDpkgStatusFd(int statusfd);
+ void ProcessDpkgStatusLine(char *line);
+
+ // The Actual installation implementation
+ virtual bool Install(PkgIterator Pkg,std::string File) APT_OVERRIDE;
+ virtual bool Configure(PkgIterator Pkg) APT_OVERRIDE;
+ virtual bool Remove(PkgIterator Pkg,bool Purge = false) APT_OVERRIDE;
+
+ virtual bool Go(APT::Progress::PackageManager *progress) APT_OVERRIDE;
+ APT_DEPRECATED_MSG("Use overload with explicit progress manager") virtual bool Go(int StatusFd=-1) APT_OVERRIDE;
+
+ virtual void Reset() APT_OVERRIDE;
+
+ public:
+
+ pkgDPkgPM(pkgDepCache *Cache);
+ virtual ~pkgDPkgPM();
+
+ APT_HIDDEN static bool ExpandPendingCalls(std::vector<Item> &List, pkgDepCache &Cache);
+};
+
+void SigINT(int sig);
+
+#endif
diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc
new file mode 100644
index 000000000..f3615302e
--- /dev/null
+++ b/apt-pkg/depcache.cc
@@ -0,0 +1,2032 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: depcache.cc,v 1.25 2001/05/27 05:36:04 jgg Exp $
+/* ######################################################################
+
+ Dependency Cache - Caches Dependency information.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/versionmatch.h>
+#include <apt-pkg/version.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/progress.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/prettyprinters.h>
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/macros.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <list>
+#include <string>
+#include <utility>
+#include <vector>
+#include <algorithm>
+#include <iostream>
+#include <set>
+
+#include <sys/stat.h>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using std::string;
+
+// helper for Install-Recommends-Sections and Never-MarkAuto-Sections /*{{{*/
+static bool
+ConfigValueInSubTree(const char* SubTree, const char *needle)
+{
+ Configuration::Item const *Opts;
+ Opts = _config->Tree(SubTree);
+ if (Opts != 0 && Opts->Child != 0)
+ {
+ Opts = Opts->Child;
+ for (; Opts != 0; Opts = Opts->Next)
+ {
+ if (Opts->Value.empty() == true)
+ continue;
+ if (strcmp(needle, Opts->Value.c_str()) == 0)
+ return true;
+ }
+ }
+ return false;
+}
+ /*}}}*/
+pkgDepCache::ActionGroup::ActionGroup(pkgDepCache &cache) : /*{{{*/
+ d(NULL), cache(cache), released(false)
+{
+ ++cache.group_level;
+}
+
+void pkgDepCache::ActionGroup::release()
+{
+ if(!released)
+ {
+ if(cache.group_level == 0)
+ std::cerr << "W: Unbalanced action groups, expect badness" << std::endl;
+ else
+ {
+ --cache.group_level;
+
+ if(cache.group_level == 0)
+ cache.MarkAndSweep();
+ }
+
+ released = true;
+ }
+}
+
+pkgDepCache::ActionGroup::~ActionGroup()
+{
+ release();
+}
+ /*}}}*/
+// DepCache::pkgDepCache - Constructors /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgDepCache::pkgDepCache(pkgCache * const pCache,Policy * const Plcy) :
+ group_level(0), Cache(pCache), PkgState(0), DepState(0),
+ iUsrSize(0), iDownloadSize(0), iInstCount(0), iDelCount(0), iKeepCount(0),
+ iBrokenCount(0), iPolicyBrokenCount(0), iBadCount(0), d(NULL)
+{
+ DebugMarker = _config->FindB("Debug::pkgDepCache::Marker", false);
+ DebugAutoInstall = _config->FindB("Debug::pkgDepCache::AutoInstall", false);
+ delLocalPolicy = 0;
+ LocalPolicy = Plcy;
+ if (LocalPolicy == 0)
+ delLocalPolicy = LocalPolicy = new Policy;
+}
+ /*}}}*/
+// DepCache::~pkgDepCache - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgDepCache::~pkgDepCache()
+{
+ delete [] PkgState;
+ delete [] DepState;
+ delete delLocalPolicy;
+}
+ /*}}}*/
+// DepCache::Init - Generate the initial extra structures. /*{{{*/
+// ---------------------------------------------------------------------
+/* This allocats the extension buffers and initializes them. */
+bool pkgDepCache::Init(OpProgress * const Prog)
+{
+ // Suppress mark updates during this operation (just in case) and
+ // run a mark operation when Init terminates.
+ ActionGroup actions(*this);
+
+ delete [] PkgState;
+ delete [] DepState;
+ PkgState = new StateCache[Head().PackageCount];
+ DepState = new unsigned char[Head().DependsCount];
+ memset(PkgState,0,sizeof(*PkgState)*Head().PackageCount);
+ memset(DepState,0,sizeof(*DepState)*Head().DependsCount);
+
+ if (Prog != 0)
+ {
+ Prog->OverallProgress(0,2*Head().PackageCount,Head().PackageCount,
+ _("Building dependency tree"));
+ Prog->SubProgress(Head().PackageCount,_("Candidate versions"));
+ }
+
+ /* Set the current state of everything. In this state all of the
+ packages are kept exactly as is. See AllUpgrade */
+ int Done = 0;
+ for (PkgIterator I = PkgBegin(); I.end() != true; ++I, ++Done)
+ {
+ if (Prog != 0 && Done%20 == 0)
+ Prog->Progress(Done);
+
+ // Find the proper cache slot
+ StateCache &State = PkgState[I->ID];
+ State.iFlags = 0;
+
+ // Figure out the install version
+ State.CandidateVer = LocalPolicy->GetCandidateVer(I);
+ State.InstallVer = I.CurrentVer();
+ State.Mode = ModeKeep;
+
+ State.Update(I,*this);
+ }
+
+ if (Prog != 0)
+ {
+ Prog->OverallProgress(Head().PackageCount,2*Head().PackageCount,
+ Head().PackageCount,
+ _("Building dependency tree"));
+ Prog->SubProgress(Head().PackageCount,_("Dependency generation"));
+ }
+
+ Update(Prog);
+
+ if(Prog != 0)
+ Prog->Done();
+
+ return true;
+}
+ /*}}}*/
+bool pkgDepCache::readStateFile(OpProgress * const Prog) /*{{{*/
+{
+ FileFd state_file;
+ string const state = _config->FindFile("Dir::State::extended_states");
+ if(RealFileExists(state)) {
+ state_file.Open(state, FileFd::ReadOnly);
+ off_t const file_size = state_file.Size();
+ if(Prog != NULL)
+ Prog->OverallProgress(0, file_size, 1,
+ _("Reading state information"));
+
+ pkgTagFile tagfile(&state_file);
+ pkgTagSection section;
+ off_t amt = 0;
+ bool const debug_autoremove = _config->FindB("Debug::pkgAutoRemove",false);
+ while(tagfile.Step(section)) {
+ string const pkgname = section.FindS("Package");
+ string pkgarch = section.FindS("Architecture");
+ if (pkgarch.empty() == true)
+ pkgarch = "any";
+ pkgCache::PkgIterator pkg = Cache->FindPkg(pkgname, pkgarch);
+ // Silently ignore unknown packages and packages with no actual version.
+ if(pkg.end() == true || pkg->VersionList == 0)
+ continue;
+
+ short const reason = section.FindI("Auto-Installed", 0);
+ if(reason > 0)
+ {
+ PkgState[pkg->ID].Flags |= Flag::Auto;
+ if (unlikely(debug_autoremove))
+ std::clog << "Auto-Installed : " << pkg.FullName() << std::endl;
+ if (pkgarch == "any")
+ {
+ pkgCache::GrpIterator G = pkg.Group();
+ for (pkg = G.NextPkg(pkg); pkg.end() != true; pkg = G.NextPkg(pkg))
+ if (pkg->VersionList != 0)
+ PkgState[pkg->ID].Flags |= Flag::Auto;
+ }
+ }
+ amt += section.size();
+ if(Prog != NULL)
+ Prog->OverallProgress(amt, file_size, 1,
+ _("Reading state information"));
+ }
+ if(Prog != NULL)
+ Prog->OverallProgress(file_size, file_size, 1,
+ _("Reading state information"));
+ }
+
+ return true;
+}
+ /*}}}*/
+bool pkgDepCache::writeStateFile(OpProgress * const /*prog*/, bool const InstalledOnly) /*{{{*/
+{
+ bool const debug_autoremove = _config->FindB("Debug::pkgAutoRemove",false);
+
+ if(debug_autoremove)
+ std::clog << "pkgDepCache::writeStateFile()" << std::endl;
+
+ FileFd StateFile;
+ string const state = _config->FindFile("Dir::State::extended_states");
+ if (CreateAPTDirectoryIfNeeded(_config->FindDir("Dir::State"), flNotFile(state)) == false)
+ return false;
+
+ // if it does not exist, create a empty one
+ if(!RealFileExists(state))
+ {
+ StateFile.Open(state, FileFd::WriteAtomic);
+ StateFile.Close();
+ }
+
+ // open it
+ if(!StateFile.Open(state, FileFd::ReadOnly))
+ return _error->Error(_("Failed to open StateFile %s"),
+ state.c_str());
+
+ FileFd OutFile(state, FileFd::ReadWrite | FileFd::Atomic);
+ if (OutFile.IsOpen() == false || OutFile.Failed() == true)
+ return _error->Error(_("Failed to write temporary StateFile %s"), state.c_str());
+
+ // first merge with the existing sections
+ pkgTagFile tagfile(&StateFile);
+ pkgTagSection section;
+ std::set<string> pkgs_seen;
+ while(tagfile.Step(section)) {
+ string const pkgname = section.FindS("Package");
+ string pkgarch = section.FindS("Architecture");
+ if (pkgarch.empty() == true)
+ pkgarch = "native";
+ // Silently ignore unknown packages and packages with no actual
+ // version.
+ pkgCache::PkgIterator pkg = Cache->FindPkg(pkgname, pkgarch);
+ if(pkg.end() || pkg.VersionList().end())
+ continue;
+ StateCache const &P = PkgState[pkg->ID];
+ bool newAuto = (P.Flags & Flag::Auto);
+ // reset to default (=manual) not installed or now-removed ones if requested
+ if (InstalledOnly && (
+ (pkg->CurrentVer == 0 && P.Mode != ModeInstall) ||
+ (pkg->CurrentVer != 0 && P.Mode == ModeDelete)))
+ newAuto = false;
+ if (newAuto == false)
+ {
+ // The section is obsolete if it contains no other tag
+ auto const count = section.Count();
+ if (count < 2 ||
+ (count == 2 && section.Exists("Auto-Installed")) ||
+ (count == 3 && section.Exists("Auto-Installed") && section.Exists("Architecture")))
+ {
+ if(debug_autoremove)
+ std::clog << "Drop obsolete section with " << count << " fields for " << APT::PrettyPkg(this, pkg) << std::endl;
+ continue;
+ }
+ }
+
+ if(debug_autoremove)
+ std::clog << "Update existing AutoInstall to " << newAuto << " for " << APT::PrettyPkg(this, pkg) << std::endl;
+
+ std::vector<pkgTagSection::Tag> rewrite;
+ rewrite.push_back(pkgTagSection::Tag::Rewrite("Architecture", pkg.Arch()));
+ rewrite.push_back(pkgTagSection::Tag::Rewrite("Auto-Installed", newAuto ? "1" : "0"));
+ section.Write(OutFile, NULL, rewrite);
+ if (OutFile.Write("\n", 1) == false)
+ return false;
+ pkgs_seen.insert(pkg.FullName());
+ }
+
+ // then write the ones we have not seen yet
+ for(pkgCache::PkgIterator pkg=Cache->PkgBegin(); !pkg.end(); ++pkg) {
+ StateCache const &P = PkgState[pkg->ID];
+ if(P.Flags & Flag::Auto) {
+ if (pkgs_seen.find(pkg.FullName()) != pkgs_seen.end()) {
+ if(debug_autoremove)
+ std::clog << "Skipping already written " << APT::PrettyPkg(this, pkg) << std::endl;
+ continue;
+ }
+ // skip not installed ones if requested
+ if (InstalledOnly && (
+ (pkg->CurrentVer == 0 && P.Mode != ModeInstall) ||
+ (pkg->CurrentVer != 0 && P.Mode == ModeDelete)))
+ continue;
+ if(debug_autoremove)
+ std::clog << "Writing new AutoInstall: " << APT::PrettyPkg(this, pkg) << std::endl;
+ std::string stanza = "Package: ";
+ stanza.append(pkg.Name())
+ .append("\nArchitecture: ").append(pkg.Arch())
+ .append("\nAuto-Installed: 1\n\n");
+ if (OutFile.Write(stanza.c_str(), stanza.length()) == false)
+ return false;
+ }
+ }
+ if (StateFile.Failed())
+ {
+ OutFile.OpFail();
+ return false;
+ }
+ if (OutFile.Close() == false)
+ return false;
+ chmod(state.c_str(), 0644);
+ return true;
+}
+ /*}}}*/
+// DepCache::CheckDep - Checks a single dependency /*{{{*/
+// ---------------------------------------------------------------------
+/* This first checks the dependency against the main target package and
+ then walks along the package provides list and checks if each provides
+ will be installed then checks the provides against the dep. Res will be
+ set to the package which was used to satisfy the dep. */
+bool pkgDepCache::CheckDep(DepIterator const &Dep,int const Type,PkgIterator &Res)
+{
+ Res = Dep.TargetPkg();
+
+ /* Check simple depends. A depends -should- never self match but
+ we allow it anyhow because dpkg does. Technically it is a packaging
+ bug. Conflicts may never self match */
+ if (Dep.IsIgnorable(Res) == false)
+ {
+ // Check the base package
+ if (Type == NowVersion)
+ {
+ if (Res->CurrentVer != 0 && Dep.IsSatisfied(Res.CurrentVer()) == true)
+ return true;
+ }
+ else if (Type == InstallVersion)
+ {
+ if (PkgState[Res->ID].InstallVer != 0 &&
+ Dep.IsSatisfied(PkgState[Res->ID].InstVerIter(*this)) == true)
+ return true;
+ }
+ else if (Type == CandidateVersion)
+ if (PkgState[Res->ID].CandidateVer != 0 &&
+ Dep.IsSatisfied(PkgState[Res->ID].CandidateVerIter(*this)) == true)
+ return true;
+ }
+
+ if (Dep->Type == Dep::Obsoletes)
+ return false;
+
+ // Check the providing packages
+ PrvIterator P = Dep.TargetPkg().ProvidesList();
+ for (; P.end() != true; ++P)
+ {
+ if (Dep.IsIgnorable(P) == true)
+ continue;
+
+ // Check if the provides is a hit
+ if (Type == NowVersion)
+ {
+ if (P.OwnerPkg().CurrentVer() != P.OwnerVer())
+ continue;
+ }
+ else if (Type == InstallVersion)
+ {
+ StateCache &State = PkgState[P.OwnerPkg()->ID];
+ if (State.InstallVer != (Version *)P.OwnerVer())
+ continue;
+ }
+ else if (Type == CandidateVersion)
+ {
+ StateCache &State = PkgState[P.OwnerPkg()->ID];
+ if (State.CandidateVer != (Version *)P.OwnerVer())
+ continue;
+ }
+
+ // Compare the versions.
+ if (Dep.IsSatisfied(P) == true)
+ {
+ Res = P.OwnerPkg();
+ return true;
+ }
+ }
+
+ return false;
+}
+ /*}}}*/
+// DepCache::AddSizes - Add the packages sizes to the counters /*{{{*/
+// ---------------------------------------------------------------------
+/* Call with Inverse = true to preform the inverse opration */
+void pkgDepCache::AddSizes(const PkgIterator &Pkg, bool const Inverse)
+{
+ StateCache &P = PkgState[Pkg->ID];
+
+ if (Pkg->VersionList == 0)
+ return;
+
+ if (Pkg.State() == pkgCache::PkgIterator::NeedsConfigure &&
+ P.Keep() == true)
+ return;
+
+ // Compute the size data
+ if (P.NewInstall() == true)
+ {
+ if (Inverse == false) {
+ iUsrSize += P.InstVerIter(*this)->InstalledSize;
+ iDownloadSize += P.InstVerIter(*this)->Size;
+ } else {
+ iUsrSize -= P.InstVerIter(*this)->InstalledSize;
+ iDownloadSize -= P.InstVerIter(*this)->Size;
+ }
+ return;
+ }
+
+ // Upgrading
+ if (Pkg->CurrentVer != 0 &&
+ (P.InstallVer != (Version *)Pkg.CurrentVer() ||
+ (P.iFlags & ReInstall) == ReInstall) && P.InstallVer != 0)
+ {
+ if (Inverse == false) {
+ iUsrSize -= Pkg.CurrentVer()->InstalledSize;
+ iUsrSize += P.InstVerIter(*this)->InstalledSize;
+ iDownloadSize += P.InstVerIter(*this)->Size;
+ } else {
+ iUsrSize -= P.InstVerIter(*this)->InstalledSize;
+ iUsrSize += Pkg.CurrentVer()->InstalledSize;
+ iDownloadSize -= P.InstVerIter(*this)->Size;
+ }
+ return;
+ }
+
+ // Reinstall
+ if (Pkg.State() == pkgCache::PkgIterator::NeedsUnpack &&
+ P.Delete() == false)
+ {
+ if (Inverse == false)
+ iDownloadSize += P.InstVerIter(*this)->Size;
+ else
+ iDownloadSize -= P.InstVerIter(*this)->Size;
+ return;
+ }
+
+ // Removing
+ if (Pkg->CurrentVer != 0 && P.InstallVer == 0)
+ {
+ if (Inverse == false)
+ iUsrSize -= Pkg.CurrentVer()->InstalledSize;
+ else
+ iUsrSize += Pkg.CurrentVer()->InstalledSize;
+ return;
+ }
+}
+ /*}}}*/
+// DepCache::AddStates - Add the package to the state counter /*{{{*/
+// ---------------------------------------------------------------------
+/* This routine is tricky to use, you must make sure that it is never
+ called twice for the same package. This means the Remove/Add section
+ should be as short as possible and not encompass any code that will
+ calld Remove/Add itself. Remember, dependencies can be circular so
+ while processing a dep for Pkg it is possible that Add/Remove
+ will be called on Pkg */
+void pkgDepCache::AddStates(const PkgIterator &Pkg, bool const Invert)
+{
+ signed char const Add = (Invert == false) ? 1 : -1;
+ StateCache &State = PkgState[Pkg->ID];
+
+ // The Package is broken (either minimal dep or policy dep)
+ if ((State.DepState & DepInstMin) != DepInstMin)
+ iBrokenCount += Add;
+ if ((State.DepState & DepInstPolicy) != DepInstPolicy)
+ iPolicyBrokenCount += Add;
+
+ // Bad state
+ if (Pkg.State() != PkgIterator::NeedsNothing)
+ iBadCount += Add;
+
+ // Not installed
+ if (Pkg->CurrentVer == 0)
+ {
+ if (State.Mode == ModeDelete &&
+ (State.iFlags & Purge) == Purge && Pkg.Purge() == false)
+ iDelCount += Add;
+
+ if (State.Mode == ModeInstall)
+ iInstCount += Add;
+ return;
+ }
+
+ // Installed, no upgrade
+ if (State.Status == 0)
+ {
+ if (State.Mode == ModeDelete)
+ iDelCount += Add;
+ else
+ if ((State.iFlags & ReInstall) == ReInstall)
+ iInstCount += Add;
+ return;
+ }
+
+ // Alll 3 are possible
+ if (State.Mode == ModeDelete)
+ iDelCount += Add;
+ else if (State.Mode == ModeKeep)
+ iKeepCount += Add;
+ else if (State.Mode == ModeInstall)
+ iInstCount += Add;
+}
+ /*}}}*/
+// DepCache::BuildGroupOrs - Generate the Or group dep data /*{{{*/
+// ---------------------------------------------------------------------
+/* The or group results are stored in the last item of the or group. This
+ allows easy detection of the state of a whole or'd group. */
+void pkgDepCache::BuildGroupOrs(VerIterator const &V)
+{
+ unsigned char Group = 0;
+ for (DepIterator D = V.DependsList(); D.end() != true; ++D)
+ {
+ // Build the dependency state.
+ unsigned char &State = DepState[D->ID];
+
+ /* Invert for Conflicts. We have to do this twice to get the
+ right sense for a conflicts group */
+ if (D.IsNegative() == true)
+ State = ~State;
+
+ // Add to the group if we are within an or..
+ State &= 0x7;
+ Group |= State;
+ State |= Group << 3;
+ if ((D->CompareOp & Dep::Or) != Dep::Or)
+ Group = 0;
+
+ // Invert for Conflicts
+ if (D.IsNegative() == true)
+ State = ~State;
+ }
+}
+ /*}}}*/
+// DepCache::VersionState - Perform a pass over a dependency list /*{{{*/
+// ---------------------------------------------------------------------
+/* This is used to run over a dependency list and determine the dep
+ state of the list, filtering it through both a Min check and a Policy
+ check. The return result will have SetMin/SetPolicy low if a check
+ fails. It uses the DepState cache for it's computations. */
+unsigned char pkgDepCache::VersionState(DepIterator D, unsigned char const Check,
+ unsigned char const SetMin,
+ unsigned char const SetPolicy) const
+{
+ unsigned char Dep = 0xFF;
+ while (D.end() != true)
+ {
+ // the last or-dependency has the state of all previous or'ed
+ DepIterator Start, End;
+ D.GlobOr(Start, End);
+ // ignore if we are called with Dep{Install,…} or DepG{Install,…}
+ // the later would be more correct, but the first is what we get
+ unsigned char const State = DepState[End->ID] | (DepState[End->ID] >> 3);
+
+ // Minimum deps that must be satisfied to have a working package
+ if (Start.IsCritical() == true)
+ {
+ if ((State & Check) != Check)
+ return Dep &= ~(SetMin | SetPolicy);
+ }
+ // Policy deps that must be satisfied to install the package
+ else if (IsImportantDep(Start) == true &&
+ (State & Check) != Check)
+ Dep &= ~SetPolicy;
+ }
+ return Dep;
+}
+ /*}}}*/
+// DepCache::DependencyState - Compute the 3 results for a dep /*{{{*/
+// ---------------------------------------------------------------------
+/* This is the main dependency computation bit. It computes the 3 main
+ results for a dependencys, Now, Install and Candidate. Callers must
+ invert the result if dealing with conflicts. */
+unsigned char pkgDepCache::DependencyState(DepIterator const &D)
+{
+ unsigned char State = 0;
+
+ if (CheckDep(D,NowVersion) == true)
+ State |= DepNow;
+ if (CheckDep(D,InstallVersion) == true)
+ State |= DepInstall;
+ if (CheckDep(D,CandidateVersion) == true)
+ State |= DepCVer;
+
+ return State;
+}
+ /*}}}*/
+// DepCache::UpdateVerState - Compute the Dep member of the state /*{{{*/
+// ---------------------------------------------------------------------
+/* This determines the combined dependency representation of a package
+ for its two states now and install. This is done by using the pre-generated
+ dependency information. */
+void pkgDepCache::UpdateVerState(PkgIterator const &Pkg)
+{
+ // Empty deps are always true
+ StateCache &State = PkgState[Pkg->ID];
+ State.DepState = 0xFF;
+
+ // Check the Current state
+ if (Pkg->CurrentVer != 0)
+ {
+ DepIterator D = Pkg.CurrentVer().DependsList();
+ State.DepState &= VersionState(D,DepNow,DepNowMin,DepNowPolicy);
+ }
+
+ /* Check the candidate state. We do not compare against the whole as
+ a candidate state but check the candidate version against the
+ install states */
+ if (State.CandidateVer != 0)
+ {
+ DepIterator D = State.CandidateVerIter(*this).DependsList();
+ State.DepState &= VersionState(D,DepInstall,DepCandMin,DepCandPolicy);
+ }
+
+ // Check target state which can only be current or installed
+ if (State.InstallVer != 0)
+ {
+ DepIterator D = State.InstVerIter(*this).DependsList();
+ State.DepState &= VersionState(D,DepInstall,DepInstMin,DepInstPolicy);
+ }
+}
+ /*}}}*/
+// DepCache::Update - Figure out all the state information /*{{{*/
+// ---------------------------------------------------------------------
+/* This will figure out the state of all the packages and all the
+ dependencies based on the current policy. */
+void pkgDepCache::Update(OpProgress * const Prog)
+{
+ iUsrSize = 0;
+ iDownloadSize = 0;
+ iInstCount = 0;
+ iDelCount = 0;
+ iKeepCount = 0;
+ iBrokenCount = 0;
+ iPolicyBrokenCount = 0;
+ iBadCount = 0;
+
+ // Perform the depends pass
+ int Done = 0;
+ for (PkgIterator I = PkgBegin(); I.end() != true; ++I, ++Done)
+ {
+ if (Prog != 0 && Done%20 == 0)
+ Prog->Progress(Done);
+ for (VerIterator V = I.VersionList(); V.end() != true; ++V)
+ {
+ unsigned char Group = 0;
+
+ for (DepIterator D = V.DependsList(); D.end() != true; ++D)
+ {
+ // Build the dependency state.
+ unsigned char &State = DepState[D->ID];
+ State = DependencyState(D);
+
+ // Add to the group if we are within an or..
+ Group |= State;
+ State |= Group << 3;
+ if ((D->CompareOp & Dep::Or) != Dep::Or)
+ Group = 0;
+
+ // Invert for Conflicts
+ if (D.IsNegative() == true)
+ State = ~State;
+ }
+ }
+
+ // Compute the package dependency state and size additions
+ AddSizes(I);
+ UpdateVerState(I);
+ AddStates(I);
+ }
+
+ if (Prog != 0)
+ Prog->Progress(Done);
+
+ readStateFile(Prog);
+}
+ /*}}}*/
+// DepCache::Update - Update the deps list of a package /*{{{*/
+// ---------------------------------------------------------------------
+/* This is a helper for update that only does the dep portion of the scan.
+ It is mainly meant to scan reverse dependencies. */
+void pkgDepCache::Update(DepIterator D)
+{
+ // Update the reverse deps
+ for (;D.end() != true; ++D)
+ {
+ unsigned char &State = DepState[D->ID];
+ State = DependencyState(D);
+
+ // Invert for Conflicts
+ if (D.IsNegative() == true)
+ State = ~State;
+
+ RemoveStates(D.ParentPkg());
+ BuildGroupOrs(D.ParentVer());
+ UpdateVerState(D.ParentPkg());
+ AddStates(D.ParentPkg());
+ }
+}
+ /*}}}*/
+// DepCache::Update - Update the related deps of a package /*{{{*/
+// ---------------------------------------------------------------------
+/* This is called whenever the state of a package changes. It updates
+ all cached dependencies related to this package. */
+void pkgDepCache::Update(PkgIterator const &Pkg)
+{
+ // Recompute the dep of the package
+ RemoveStates(Pkg);
+ UpdateVerState(Pkg);
+ AddStates(Pkg);
+
+ // Update the reverse deps
+ Update(Pkg.RevDependsList());
+
+ // Update the provides map for the current ver
+ if (Pkg->CurrentVer != 0)
+ for (PrvIterator P = Pkg.CurrentVer().ProvidesList();
+ P.end() != true; ++P)
+ Update(P.ParentPkg().RevDependsList());
+
+ // Update the provides map for the candidate ver
+ if (PkgState[Pkg->ID].CandidateVer != 0)
+ for (PrvIterator P = PkgState[Pkg->ID].CandidateVerIter(*this).ProvidesList();
+ P.end() != true; ++P)
+ Update(P.ParentPkg().RevDependsList());
+}
+ /*}}}*/
+// DepCache::MarkKeep - Put the package in the keep state /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgDepCache::MarkKeep(PkgIterator const &Pkg, bool Soft, bool FromUser,
+ unsigned long Depth)
+{
+ if (IsModeChangeOk(ModeKeep, Pkg, Depth, FromUser) == false)
+ return false;
+
+ /* Reject an attempt to keep a non-source broken installed package, those
+ must be upgraded */
+ if (Pkg.State() == PkgIterator::NeedsUnpack &&
+ Pkg.CurrentVer().Downloadable() == false)
+ return false;
+
+ /* We changed the soft state all the time so the UI is a bit nicer
+ to use */
+ StateCache &P = PkgState[Pkg->ID];
+
+ // Check that it is not already kept
+ if (P.Mode == ModeKeep)
+ return true;
+
+ if (Soft == true)
+ P.iFlags |= AutoKept;
+ else
+ P.iFlags &= ~AutoKept;
+
+ ActionGroup group(*this);
+
+#if 0 // resetting the autoflag here means we lose the
+ // auto-mark information if a user selects a package for removal
+ // but changes his mind then and sets it for keep again
+ // - this makes sense as default when all Garbage dependencies
+ // are automatically marked for removal (as aptitude does).
+ // setting a package for keep then makes it no longer autoinstalled
+ // for all other use-case this action is rather surprising
+ if(FromUser && !P.Marked)
+ P.Flags &= ~Flag::Auto;
+#endif
+
+ if (DebugMarker == true)
+ std::clog << OutputInDepth(Depth) << "MarkKeep " << APT::PrettyPkg(this, Pkg) << " FU=" << FromUser << std::endl;
+
+ RemoveSizes(Pkg);
+ RemoveStates(Pkg);
+
+ P.Mode = ModeKeep;
+ if (Pkg->CurrentVer == 0)
+ P.InstallVer = 0;
+ else
+ P.InstallVer = Pkg.CurrentVer();
+
+ AddStates(Pkg);
+ Update(Pkg);
+ AddSizes(Pkg);
+
+ return true;
+}
+ /*}}}*/
+// DepCache::MarkDelete - Put the package in the delete state /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgDepCache::MarkDelete(PkgIterator const &Pkg, bool rPurge,
+ unsigned long Depth, bool FromUser)
+{
+ if (IsModeChangeOk(ModeDelete, Pkg, Depth, FromUser) == false)
+ return false;
+
+ StateCache &P = PkgState[Pkg->ID];
+
+ // Check that it is not already marked for delete
+ if ((P.Mode == ModeDelete || P.InstallVer == 0) &&
+ (Pkg.Purge() == true || rPurge == false))
+ return true;
+
+ // check if we are allowed to remove the package
+ if (IsDeleteOk(Pkg,rPurge,Depth,FromUser) == false)
+ return false;
+
+ P.iFlags &= ~(AutoKept | Purge);
+ if (rPurge == true)
+ P.iFlags |= Purge;
+
+ ActionGroup group(*this);
+
+ if (FromUser == false)
+ {
+ VerIterator const PV = P.InstVerIter(*this);
+ if (PV.end() == false)
+ {
+ // removed metapackages mark their dependencies as manual to prevent in "desktop depends browser, texteditor"
+ // the removal of browser to suggest the removal of desktop and texteditor.
+ // We ignore the auto-bit here as we can't deal with metapackage cascardes otherwise.
+ // We do not check for or-groups here as we don't know which package takes care of
+ // providing the feature the user likes e.g.: browser1 | browser2 | browser3
+ // Temporary removals are effected by this as well, which is bad, but unlikely in practice
+ bool const PinNeverMarkAutoSection = (PV->Section != 0 && ConfigValueInSubTree("APT::Never-MarkAuto-Sections", PV.Section()));
+ if (PinNeverMarkAutoSection)
+ {
+ for (DepIterator D = PV.DependsList(); D.end() != true; ++D)
+ {
+ if (D.IsMultiArchImplicit() == true || D.IsNegative() == true || IsImportantDep(D) == false)
+ continue;
+
+ pkgCacheFile CacheFile(this);
+ APT::VersionList verlist = APT::VersionList::FromDependency(CacheFile, D, APT::CacheSetHelper::INSTALLED);
+ for (auto const &V : verlist)
+ {
+ PkgIterator const DP = V.ParentPkg();
+ if(DebugAutoInstall == true)
+ std::clog << OutputInDepth(Depth) << "Setting " << DP.FullName(false) << " NOT as auto-installed (direct "
+ << D.DepType() << " of " << Pkg.FullName(false) << " which is in APT::Never-MarkAuto-Sections)" << std::endl;
+
+ MarkAuto(DP, false);
+ }
+ }
+ }
+ }
+ }
+
+ if (DebugMarker == true)
+ std::clog << OutputInDepth(Depth) << (rPurge ? "MarkPurge " : "MarkDelete ") << APT::PrettyPkg(this, Pkg) << " FU=" << FromUser << std::endl;
+
+ RemoveSizes(Pkg);
+ RemoveStates(Pkg);
+
+ if (Pkg->CurrentVer == 0 && (Pkg.Purge() == true || rPurge == false))
+ P.Mode = ModeKeep;
+ else
+ P.Mode = ModeDelete;
+ P.InstallVer = 0;
+
+ AddStates(Pkg);
+ Update(Pkg);
+ AddSizes(Pkg);
+
+ return true;
+}
+ /*}}}*/
+// DepCache::IsDeleteOk - check if it is ok to remove this package /*{{{*/
+// ---------------------------------------------------------------------
+/* The default implementation tries to prevent deletion of install requests.
+ dpkg holds are enforced by the private IsModeChangeOk */
+bool pkgDepCache::IsDeleteOk(PkgIterator const &Pkg,bool rPurge,
+ unsigned long Depth, bool FromUser)
+{
+ return IsDeleteOkProtectInstallRequests(Pkg, rPurge, Depth, FromUser);
+}
+bool pkgDepCache::IsDeleteOkProtectInstallRequests(PkgIterator const &Pkg,
+ bool const /*rPurge*/, unsigned long const Depth, bool const FromUser)
+{
+ if (FromUser == false && Pkg->CurrentVer == 0)
+ {
+ StateCache &P = PkgState[Pkg->ID];
+ if (P.InstallVer != 0 && P.Status == 2 && (P.Flags & Flag::Auto) != Flag::Auto)
+ {
+ if (DebugMarker == true)
+ std::clog << OutputInDepth(Depth) << "Manual install request prevents MarkDelete of " << APT::PrettyPkg(this, Pkg) << std::endl;
+ return false;
+ }
+ }
+ return true;
+}
+ /*}}}*/
+// DepCache::IsModeChangeOk - check if it is ok to change the mode /*{{{*/
+// ---------------------------------------------------------------------
+/* this is used by all Mark methods on the very first line to check sanity
+ and prevents mode changes for packages on hold for example.
+ If you want to check Mode specific stuff you can use the virtual public
+ Is<Mode>Ok methods instead */
+static char const* PrintMode(char const mode)
+{
+ switch (mode)
+ {
+ case pkgDepCache::ModeInstall: return "Install";
+ case pkgDepCache::ModeKeep: return "Keep";
+ case pkgDepCache::ModeDelete: return "Delete";
+ case pkgDepCache::ModeGarbage: return "Garbage";
+ default: return "UNKNOWN";
+ }
+}
+bool pkgDepCache::IsModeChangeOk(ModeList const mode, PkgIterator const &Pkg,
+ unsigned long const Depth, bool const FromUser)
+{
+ // we are not trying to hard…
+ if (unlikely(Depth > 100))
+ return false;
+
+ // general sanity
+ if (unlikely(Pkg.end() == true || Pkg->VersionList == 0))
+ return false;
+
+ // the user is always right
+ if (FromUser == true)
+ return true;
+
+ StateCache &P = PkgState[Pkg->ID];
+ // not changing the mode is obviously also fine as we might want to call
+ // e.g. MarkInstall multiple times with different arguments for the same package
+ if (P.Mode == mode)
+ return true;
+
+ // if previous state was set by user only user can reset it
+ if ((P.iFlags & Protected) == Protected)
+ {
+ if (unlikely(DebugMarker == true))
+ std::clog << OutputInDepth(Depth) << "Ignore Mark" << PrintMode(mode)
+ << " of " << APT::PrettyPkg(this, Pkg) << " as its mode (" << PrintMode(P.Mode)
+ << ") is protected" << std::endl;
+ return false;
+ }
+ // enforce dpkg holds
+ else if (mode != ModeKeep && Pkg->SelectedState == pkgCache::State::Hold &&
+ _config->FindB("APT::Ignore-Hold",false) == false)
+ {
+ if (unlikely(DebugMarker == true))
+ std::clog << OutputInDepth(Depth) << "Hold prevents Mark" << PrintMode(mode)
+ << " of " << APT::PrettyPkg(this, Pkg) << std::endl;
+ return false;
+ }
+
+ return true;
+}
+ /*}}}*/
+// DepCache::MarkInstall - Put the package in the install state /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+struct CompareProviders {
+ pkgCache::PkgIterator const Pkg;
+ explicit CompareProviders(pkgCache::DepIterator const &Dep) : Pkg(Dep.TargetPkg()) {};
+ //bool operator() (APT::VersionList::iterator const &AV, APT::VersionList::iterator const &BV)
+ bool operator() (pkgCache::VerIterator const &AV, pkgCache::VerIterator const &BV)
+ {
+ pkgCache::PkgIterator const A = AV.ParentPkg();
+ pkgCache::PkgIterator const B = BV.ParentPkg();
+ // Prefer MA:same packages if other architectures for it are installed
+ if ((AV->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same ||
+ (BV->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same)
+ {
+ bool instA = false;
+ if ((AV->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same)
+ {
+ pkgCache::GrpIterator Grp = A.Group();
+ for (pkgCache::PkgIterator P = Grp.PackageList(); P.end() == false; P = Grp.NextPkg(P))
+ if (P->CurrentVer != 0)
+ {
+ instA = true;
+ break;
+ }
+ }
+ bool instB = false;
+ if ((BV->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same)
+ {
+ pkgCache::GrpIterator Grp = B.Group();
+ for (pkgCache::PkgIterator P = Grp.PackageList(); P.end() == false; P = Grp.NextPkg(P))
+ {
+ if (P->CurrentVer != 0)
+ {
+ instB = true;
+ break;
+ }
+ }
+ }
+ if (instA != instB)
+ return instA == false;
+ }
+ if ((A->CurrentVer == 0 || B->CurrentVer == 0) && A->CurrentVer != B->CurrentVer)
+ return A->CurrentVer == 0;
+ // Prefer packages in the same group as the target; e.g. foo:i386, foo:amd64
+ if (A->Group != B->Group)
+ {
+ if (A->Group == Pkg->Group && B->Group != Pkg->Group)
+ return false;
+ else if (B->Group == Pkg->Group && A->Group != Pkg->Group)
+ return true;
+ }
+ // we like essentials
+ if ((A->Flags & pkgCache::Flag::Essential) != (B->Flags & pkgCache::Flag::Essential))
+ {
+ if ((A->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential)
+ return false;
+ else if ((B->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential)
+ return true;
+ }
+ if ((A->Flags & pkgCache::Flag::Important) != (B->Flags & pkgCache::Flag::Important))
+ {
+ if ((A->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important)
+ return false;
+ else if ((B->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important)
+ return true;
+ }
+ // prefer native architecture
+ if (strcmp(A.Arch(), B.Arch()) != 0)
+ {
+ if (strcmp(A.Arch(), A.Cache()->NativeArch()) == 0)
+ return false;
+ else if (strcmp(B.Arch(), B.Cache()->NativeArch()) == 0)
+ return true;
+ std::vector<std::string> archs = APT::Configuration::getArchitectures();
+ for (std::vector<std::string>::const_iterator a = archs.begin(); a != archs.end(); ++a)
+ if (*a == A.Arch())
+ return false;
+ else if (*a == B.Arch())
+ return true;
+ }
+ // higher priority seems like a good idea
+ if (AV->Priority != BV->Priority)
+ return AV->Priority > BV->Priority;
+ // unable to decide…
+ return A->ID < B->ID;
+ }
+};
+bool pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst,
+ unsigned long Depth, bool FromUser,
+ bool ForceImportantDeps)
+{
+ if (IsModeChangeOk(ModeInstall, Pkg, Depth, FromUser) == false)
+ return false;
+
+ StateCache &P = PkgState[Pkg->ID];
+
+ // See if there is even any possible installation candidate
+ if (P.CandidateVer == 0)
+ return false;
+
+ /* Check that it is not already marked for install and that it can be
+ installed */
+ if ((P.InstPolicyBroken() == false && P.InstBroken() == false) &&
+ (P.Mode == ModeInstall ||
+ P.CandidateVer == (Version *)Pkg.CurrentVer()))
+ {
+ if (P.CandidateVer == (Version *)Pkg.CurrentVer() && P.InstallVer == 0)
+ return MarkKeep(Pkg, false, FromUser, Depth+1);
+ return true;
+ }
+
+ // check if we are allowed to install the package
+ if (IsInstallOk(Pkg,AutoInst,Depth,FromUser) == false)
+ return false;
+
+ ActionGroup group(*this);
+ P.iFlags &= ~AutoKept;
+
+ /* Target the candidate version and remove the autoflag. We reset the
+ autoflag below if this was called recursively. Otherwise the user
+ should have the ability to de-auto a package by changing its state */
+ RemoveSizes(Pkg);
+ RemoveStates(Pkg);
+
+ P.Mode = ModeInstall;
+ P.InstallVer = P.CandidateVer;
+
+ if(FromUser)
+ {
+ // Set it to manual if it's a new install or already installed,
+ // but only if its not marked by the autoremover (aptitude depend on this behavior)
+ // or if we do automatic installation (aptitude never does it)
+ if(P.Status == 2 || (Pkg->CurrentVer != 0 && (AutoInst == true || P.Marked == false)))
+ P.Flags &= ~Flag::Auto;
+ }
+ else
+ {
+ // Set it to auto if this is a new install.
+ if(P.Status == 2)
+ P.Flags |= Flag::Auto;
+ }
+ if (P.CandidateVer == (Version *)Pkg.CurrentVer())
+ P.Mode = ModeKeep;
+
+ AddStates(Pkg);
+ Update(Pkg);
+ AddSizes(Pkg);
+
+ if (AutoInst == false || _config->Find("APT::Solver", "internal") != "internal")
+ return true;
+
+ if (DebugMarker == true)
+ std::clog << OutputInDepth(Depth) << "MarkInstall " << APT::PrettyPkg(this, Pkg) << " FU=" << FromUser << std::endl;
+
+ bool MoveAutoBitToDependencies = false;
+ VerIterator const PV = P.InstVerIter(*this);
+ if (unlikely(PV.end() == true))
+ return false;
+ else if (PV->Section != 0 && (P.Flags & Flag::Auto) != Flag::Auto)
+ {
+ VerIterator const CurVer = Pkg.CurrentVer();
+ if (CurVer.end() == false && CurVer->Section != 0 && strcmp(CurVer.Section(), PV.Section()) != 0)
+ {
+ bool const CurVerInMoveSection = ConfigValueInSubTree("APT::Move-Autobit-Sections", CurVer.Section());
+ bool const InstVerInMoveSection = ConfigValueInSubTree("APT::Move-Autobit-Sections", PV.Section());
+ MoveAutoBitToDependencies = (CurVerInMoveSection == false && InstVerInMoveSection == true);
+ if (MoveAutoBitToDependencies == true)
+ {
+ if(DebugAutoInstall == true)
+ std::clog << OutputInDepth(Depth) << "Setting " << Pkg.FullName(false) << " as auto-installed, moving manual to its dependencies" << std::endl;
+ MarkAuto(Pkg, true);
+ }
+ }
+ }
+
+ DepIterator Dep = PV.DependsList();
+ for (; Dep.end() != true;)
+ {
+ // Grok or groups
+ DepIterator Start = Dep;
+ bool Result = true;
+ unsigned Ors = 0;
+ for (bool LastOR = true; Dep.end() == false && LastOR == true; ++Dep, ++Ors)
+ {
+ LastOR = (Dep->CompareOp & Dep::Or) == Dep::Or;
+
+ if ((DepState[Dep->ID] & DepInstall) == DepInstall)
+ Result = false;
+ }
+
+ // Dep is satisfied okay.
+ if (Result == false)
+ continue;
+
+ /* Check if this dep should be consider for install. If it is a user
+ defined important dep and we are installed a new package then
+ it will be installed. Otherwise we only check for important
+ deps that have changed from the installed version */
+ if (IsImportantDep(Start) == false)
+ continue;
+
+ /* If we are in an or group locate the first or that can
+ succeed. We have already cached this… */
+ for (; Ors > 1 && (DepState[Start->ID] & DepCVer) != DepCVer; --Ors)
+ ++Start;
+
+ /* unsatisfiable dependency: IsInstallOkDependenciesSatisfiableByCandidates
+ would have prevented us to get here if not overridden, so just skip
+ over the problem here as the front-end will know what it is doing */
+ if (Ors == 1 && (DepState[Start->ID] &DepCVer) != DepCVer && Start.IsNegative() == false)
+ continue;
+
+ /* Check if any ImportantDep() (but not Critical) were added
+ * since we installed the package. Also check for deps that
+ * were satisfied in the past: for instance, if a version
+ * restriction in a Recommends was tightened, upgrading the
+ * package should follow that Recommends rather than causing the
+ * dependency to be removed. (bug #470115)
+ */
+ if (Pkg->CurrentVer != 0 && ForceImportantDeps == false && Start.IsCritical() == false)
+ {
+ bool isNewImportantDep = true;
+ bool isPreviouslySatisfiedImportantDep = false;
+ for (DepIterator D = Pkg.CurrentVer().DependsList(); D.end() != true; ++D)
+ {
+ //FIXME: Should we handle or-group better here?
+ // We do not check if the package we look for is part of the same or-group
+ // we might find while searching, but could that really be a problem?
+ if (D.IsCritical() == true || IsImportantDep(D) == false ||
+ Start.TargetPkg() != D.TargetPkg())
+ continue;
+
+ isNewImportantDep = false;
+
+ while ((D->CompareOp & Dep::Or) != 0)
+ ++D;
+
+ isPreviouslySatisfiedImportantDep = (((*this)[D] & DepGNow) != 0);
+ if (isPreviouslySatisfiedImportantDep == true)
+ break;
+ }
+
+ if(isNewImportantDep == true)
+ {
+ if (DebugAutoInstall == true)
+ std::clog << OutputInDepth(Depth) << "new important dependency: "
+ << Start.TargetPkg().FullName() << std::endl;
+ }
+ else if(isPreviouslySatisfiedImportantDep == true)
+ {
+ if (DebugAutoInstall == true)
+ std::clog << OutputInDepth(Depth) << "previously satisfied important dependency on "
+ << Start.TargetPkg().FullName() << std::endl;
+ }
+ else
+ {
+ if (DebugAutoInstall == true)
+ std::clog << OutputInDepth(Depth) << "ignore old unsatisfied important dependency on "
+ << Start.TargetPkg().FullName() << std::endl;
+ continue;
+ }
+ }
+
+ /* This bit is for processing the possibility of an install/upgrade
+ fixing the problem for "positive" dependencies */
+ if (Start.IsNegative() == false && (DepState[Start->ID] & DepCVer) == DepCVer)
+ {
+ pkgCacheFile CacheFile(this);
+ APT::VersionList verlist = APT::VersionList::FromDependency(CacheFile, Start, APT::CacheSetHelper::CANDIDATE);
+ CompareProviders comp(Start);
+
+ do {
+ APT::VersionList::iterator InstVer = std::max_element(verlist.begin(), verlist.end(), comp);
+
+ if (InstVer == verlist.end())
+ break;
+
+ pkgCache::PkgIterator InstPkg = InstVer.ParentPkg();
+ if(DebugAutoInstall == true)
+ std::clog << OutputInDepth(Depth) << "Installing " << InstPkg.Name()
+ << " as " << Start.DepType() << " of " << Pkg.Name()
+ << std::endl;
+ if (MarkInstall(InstPkg, true, Depth + 1, false, ForceImportantDeps) == false)
+ {
+ verlist.erase(InstVer);
+ continue;
+ }
+
+ // now check if we should consider it a automatic dependency or not
+ if(InstPkg->CurrentVer == 0 && MoveAutoBitToDependencies)
+ {
+ if(DebugAutoInstall == true)
+ std::clog << OutputInDepth(Depth) << "Setting " << InstPkg.FullName(false) << " NOT as auto-installed (direct "
+ << Start.DepType() << " of " << Pkg.FullName(false) << " which is manual and in APT::Move-Autobit-Sections)" << std::endl;
+ MarkAuto(InstPkg, false);
+ }
+
+
+ break;
+ } while(true);
+ continue;
+ }
+ /* Negative dependencies have no or-group
+ If the dependency isn't versioned, we try if an upgrade might solve the problem.
+ Otherwise we remove the offender if needed */
+ else if (Start.IsNegative() == true && Start->Type != pkgCache::Dep::Obsoletes)
+ {
+ std::unique_ptr<Version *[]> List(Start.AllTargets());
+ pkgCache::PkgIterator TrgPkg = Start.TargetPkg();
+ for (Version **I = List.get(); *I != 0; I++)
+ {
+ VerIterator Ver(*this,*I);
+ PkgIterator Pkg = Ver.ParentPkg();
+
+ /* The List includes all packages providing this dependency,
+ even providers which are not installed, so skip them. */
+ if (PkgState[Pkg->ID].InstallVer == 0)
+ continue;
+
+ /* Ignore negative dependencies that we are not going to
+ get installed */
+ if (PkgState[Pkg->ID].InstallVer != *I)
+ continue;
+
+ if ((Start->Version != 0 || TrgPkg != Pkg) &&
+ PkgState[Pkg->ID].CandidateVer != PkgState[Pkg->ID].InstallVer &&
+ PkgState[Pkg->ID].CandidateVer != *I &&
+ MarkInstall(Pkg,true,Depth + 1, false, ForceImportantDeps) == true)
+ continue;
+ else if (Start->Type == pkgCache::Dep::Conflicts ||
+ Start->Type == pkgCache::Dep::DpkgBreaks)
+ {
+ if(DebugAutoInstall == true)
+ std::clog << OutputInDepth(Depth)
+ << " Removing: " << Pkg.Name()
+ << std::endl;
+ if (MarkDelete(Pkg,false,Depth + 1, false) == false)
+ break;
+ }
+ }
+ continue;
+ }
+ }
+
+ return Dep.end() == true;
+}
+ /*}}}*/
+// DepCache::IsInstallOk - check if it is ok to install this package /*{{{*/
+// ---------------------------------------------------------------------
+/* The default implementation checks if the installation of an M-A:same
+ package would lead us into a version-screw and if so forbids it.
+ dpkg holds are enforced by the private IsModeChangeOk */
+bool pkgDepCache::IsInstallOk(PkgIterator const &Pkg,bool AutoInst,
+ unsigned long Depth, bool FromUser)
+{
+ return IsInstallOkMultiArchSameVersionSynced(Pkg,AutoInst, Depth, FromUser) &&
+ IsInstallOkDependenciesSatisfiableByCandidates(Pkg,AutoInst, Depth, FromUser);
+}
+bool pkgDepCache::IsInstallOkMultiArchSameVersionSynced(PkgIterator const &Pkg,
+ bool const /*AutoInst*/, unsigned long const Depth, bool const FromUser)
+{
+ if (FromUser == true) // as always: user is always right
+ return true;
+
+ // if we have checked before and it was okay, it will still be okay
+ if (PkgState[Pkg->ID].Mode == ModeInstall &&
+ PkgState[Pkg->ID].InstallVer == PkgState[Pkg->ID].CandidateVer)
+ return true;
+
+ // ignore packages with none-M-A:same candidates
+ VerIterator const CandVer = PkgState[Pkg->ID].CandidateVerIter(*this);
+ if (unlikely(CandVer.end() == true) || CandVer == Pkg.CurrentVer() ||
+ (CandVer->MultiArch & pkgCache::Version::Same) != pkgCache::Version::Same)
+ return true;
+
+ GrpIterator const Grp = Pkg.Group();
+ for (PkgIterator P = Grp.PackageList(); P.end() == false; P = Grp.NextPkg(P))
+ {
+ // not installed or self-check: fine by definition
+ if (P->CurrentVer == 0 || P == Pkg)
+ continue;
+
+ // not having a candidate or being in sync
+ // (simple string-compare as stuff like '1' == '0:1-0' can't happen here)
+ VerIterator CV = PkgState[P->ID].CandidateVerIter(*this);
+ if (CV.end() == true || strcmp(CandVer.VerStr(), CV.VerStr()) == 0)
+ continue;
+
+ // packages losing M-A:same can be out-of-sync
+ if ((CV->MultiArch & pkgCache::Version::Same) != pkgCache::Version::Same)
+ continue;
+
+ // not downloadable means the package is obsolete, so allow out-of-sync
+ if (CV.Downloadable() == false)
+ continue;
+
+ PkgState[Pkg->ID].iFlags |= AutoKept;
+ if (unlikely(DebugMarker == true))
+ std::clog << OutputInDepth(Depth) << "Ignore MarkInstall of " << APT::PrettyPkg(this, Pkg)
+ << " as it is not in sync with its M-A:same sibling " << APT::PrettyPkg(this, P)
+ << " (" << CandVer.VerStr() << " != " << CV.VerStr() << ")" << std::endl;
+ return false;
+ }
+
+ return true;
+}
+bool pkgDepCache::IsInstallOkDependenciesSatisfiableByCandidates(PkgIterator const &Pkg,
+ bool const AutoInst, unsigned long const Depth, bool const /*FromUser*/)
+{
+ if (AutoInst == false)
+ return true;
+
+ VerIterator const CandVer = PkgState[Pkg->ID].CandidateVerIter(*this);
+ if (unlikely(CandVer.end() == true) || CandVer == Pkg.CurrentVer())
+ return true;
+
+ for (DepIterator Dep = CandVer.DependsList(); Dep.end() != true;)
+ {
+ // Grok or groups
+ DepIterator Start = Dep;
+ bool Result = true;
+ unsigned Ors = 0;
+ for (bool LastOR = true; Dep.end() == false && LastOR == true; ++Dep, ++Ors)
+ {
+ LastOR = (Dep->CompareOp & Dep::Or) == Dep::Or;
+
+ if ((DepState[Dep->ID] & DepInstall) == DepInstall)
+ Result = false;
+ }
+
+ if (Start.IsCritical() == false || Start.IsNegative() == true || Result == false)
+ continue;
+
+ /* If we are in an or group locate the first or that can succeed.
+ We have already cached this… */
+ for (; Ors > 1 && (DepState[Start->ID] & DepCVer) != DepCVer; --Ors)
+ ++Start;
+
+ if (Ors == 1 && (DepState[Start->ID] &DepCVer) != DepCVer)
+ {
+ if (DebugAutoInstall == true)
+ std::clog << OutputInDepth(Depth) << APT::PrettyDep(this, Start) << " can't be satisfied!" << std::endl;
+
+ // the dependency is critical, but can't be installed, so discard the candidate
+ // as the problemresolver will trip over it otherwise trying to install it (#735967)
+ if (Pkg->CurrentVer != 0 && (PkgState[Pkg->ID].iFlags & Protected) != Protected)
+ {
+ SetCandidateVersion(Pkg.CurrentVer());
+ StateCache &State = PkgState[Pkg->ID];
+ if (State.Mode != ModeDelete)
+ {
+ State.Mode = ModeKeep;
+ State.Update(Pkg, *this);
+ }
+ }
+ return false;
+ }
+ }
+
+ return true;
+}
+ /*}}}*/
+// DepCache::SetReInstall - Set the reinstallation flag /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgDepCache::SetReInstall(PkgIterator const &Pkg,bool To)
+{
+ if (unlikely(Pkg.end() == true))
+ return;
+
+ APT::PackageList pkglist;
+ if (Pkg->CurrentVer != 0 &&
+ (Pkg.CurrentVer()-> MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same)
+ {
+ pkgCache::GrpIterator Grp = Pkg.Group();
+ for (pkgCache::PkgIterator P = Grp.PackageList(); P.end() == false; P = Grp.NextPkg(P))
+ {
+ if (P->CurrentVer != 0)
+ pkglist.insert(P);
+ }
+ }
+ else
+ pkglist.insert(Pkg);
+
+ ActionGroup group(*this);
+
+ for (APT::PackageList::const_iterator Pkg = pkglist.begin(); Pkg != pkglist.end(); ++Pkg)
+ {
+ RemoveSizes(Pkg);
+ RemoveStates(Pkg);
+
+ StateCache &P = PkgState[Pkg->ID];
+ if (To == true)
+ P.iFlags |= ReInstall;
+ else
+ P.iFlags &= ~ReInstall;
+
+ AddStates(Pkg);
+ AddSizes(Pkg);
+ }
+}
+ /*}}}*/
+pkgCache::VerIterator pkgDepCache::GetCandidateVersion(PkgIterator const &Pkg)/*{{{*/
+{
+ return PkgState[Pkg->ID].CandidateVerIter(*this);
+}
+ /*}}}*/
+// DepCache::SetCandidateVersion - Change the candidate version /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgDepCache::SetCandidateVersion(VerIterator TargetVer)
+{
+ pkgCache::PkgIterator Pkg = TargetVer.ParentPkg();
+ StateCache &P = PkgState[Pkg->ID];
+
+ if (P.CandidateVer == TargetVer)
+ return;
+
+ ActionGroup group(*this);
+
+ RemoveSizes(Pkg);
+ RemoveStates(Pkg);
+
+ if (P.CandidateVer == P.InstallVer && P.Install() == true)
+ P.InstallVer = (Version *)TargetVer;
+ P.CandidateVer = (Version *)TargetVer;
+ P.Update(Pkg,*this);
+
+ AddStates(Pkg);
+ Update(Pkg);
+ AddSizes(Pkg);
+
+}
+ /*}}}*/
+// DepCache::SetCandidateRelease - Change the candidate version /*{{{*/
+// ---------------------------------------------------------------------
+/* changes the candidate of a package and walks over all its dependencies
+ to check if it needs to change the candidate of the dependency, too,
+ to reach a installable versionstate */
+bool pkgDepCache::SetCandidateRelease(pkgCache::VerIterator TargetVer,
+ std::string const &TargetRel)
+{
+ std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> > Changed;
+ return SetCandidateRelease(TargetVer, TargetRel, Changed);
+}
+bool pkgDepCache::SetCandidateRelease(pkgCache::VerIterator TargetVer,
+ std::string const &TargetRel,
+ std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> > &Changed)
+{
+ ActionGroup group(*this);
+ SetCandidateVersion(TargetVer);
+
+ if (TargetRel == "installed" || TargetRel == "candidate") // both doesn't make sense in this context
+ return true;
+
+ pkgVersionMatch Match(TargetRel, pkgVersionMatch::Release);
+ // save the position of the last element we will not undo - if we have to
+ std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> >::iterator newChanged = --(Changed.end());
+
+ for (pkgCache::DepIterator D = TargetVer.DependsList(); D.end() == false; ++D)
+ {
+ if (D->Type != pkgCache::Dep::PreDepends && D->Type != pkgCache::Dep::Depends &&
+ ((D->Type != pkgCache::Dep::Recommends && D->Type != pkgCache::Dep::Suggests) ||
+ IsImportantDep(D) == false))
+ continue;
+
+ // walk over an or-group and check if we need to do anything
+ // for simpilicity no or-group is handled as a or-group including one dependency
+ pkgCache::DepIterator Start = D;
+ bool itsFine = false;
+ for (bool stillOr = true; stillOr == true; ++Start)
+ {
+ stillOr = (Start->CompareOp & Dep::Or) == Dep::Or;
+ pkgCache::PkgIterator const P = Start.TargetPkg();
+ // virtual packages can't be a solution
+ if (P.end() == true || (P->ProvidesList == 0 && P->VersionList == 0))
+ continue;
+ pkgCache::VerIterator const Cand = PkgState[P->ID].CandidateVerIter(*this);
+ // no versioned dependency - but is it installable?
+ if (Start.TargetVer() == 0 || Start.TargetVer()[0] == '\0')
+ {
+ // Check if one of the providers is installable
+ if (P->ProvidesList != 0)
+ {
+ pkgCache::PrvIterator Prv = P.ProvidesList();
+ for (; Prv.end() == false; ++Prv)
+ {
+ pkgCache::VerIterator const C = PkgState[Prv.OwnerPkg()->ID].CandidateVerIter(*this);
+ if (C.end() == true || C != Prv.OwnerVer() ||
+ (VersionState(C.DependsList(), DepInstall, DepCandMin, DepCandPolicy) & DepCandMin) != DepCandMin)
+ continue;
+ break;
+ }
+ if (Prv.end() == true)
+ continue;
+ }
+ // no providers, so check if we have an installable candidate version
+ else if (Cand.end() == true ||
+ (VersionState(Cand.DependsList(), DepInstall, DepCandMin, DepCandPolicy) & DepCandMin) != DepCandMin)
+ continue;
+ itsFine = true;
+ break;
+ }
+ if (Cand.end() == true)
+ continue;
+ // check if the current candidate is enough for the versioned dependency - and installable?
+ if (Start.IsSatisfied(Cand) == true &&
+ (VersionState(Cand.DependsList(), DepInstall, DepCandMin, DepCandPolicy) & DepCandMin) == DepCandMin)
+ {
+ itsFine = true;
+ break;
+ }
+ }
+
+ if (itsFine == true) {
+ // something in the or-group was fine, skip all other members
+ for (; (D->CompareOp & Dep::Or) == Dep::Or; ++D);
+ continue;
+ }
+
+ // walk again over the or-group and check each if a candidate switch would help
+ itsFine = false;
+ for (bool stillOr = true; stillOr == true; ++D)
+ {
+ stillOr = (D->CompareOp & Dep::Or) == Dep::Or;
+ // changing candidate will not help if the dependency is not versioned
+ if (D.TargetVer() == 0 || D.TargetVer()[0] == '\0')
+ {
+ if (stillOr == true)
+ continue;
+ break;
+ }
+
+ pkgCache::VerIterator V;
+ if (TargetRel == "newest")
+ V = D.TargetPkg().VersionList();
+ else
+ V = Match.Find(D.TargetPkg());
+
+ // check if the version from this release could satisfy the dependency
+ if (V.end() == true || D.IsSatisfied(V) == false)
+ {
+ if (stillOr == true)
+ continue;
+ break;
+ }
+
+ pkgCache::VerIterator oldCand = PkgState[D.TargetPkg()->ID].CandidateVerIter(*this);
+ if (V == oldCand)
+ {
+ // Do we already touched this Version? If so, their versioned dependencies are okay, no need to check again
+ for (std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> >::const_iterator c = Changed.begin();
+ c != Changed.end(); ++c)
+ {
+ if (c->first->ParentPkg != V->ParentPkg)
+ continue;
+ itsFine = true;
+ break;
+ }
+ }
+
+ if (itsFine == false)
+ {
+ // change the candidate
+ Changed.push_back(make_pair(V, TargetVer));
+ if (SetCandidateRelease(V, TargetRel, Changed) == false)
+ {
+ if (stillOr == false)
+ break;
+ // undo the candidate changing
+ SetCandidateVersion(oldCand);
+ Changed.pop_back();
+ continue;
+ }
+ itsFine = true;
+ }
+
+ // something in the or-group was fine, skip all other members
+ for (; (D->CompareOp & Dep::Or) == Dep::Or; ++D);
+ break;
+ }
+
+ if (itsFine == false && (D->Type == pkgCache::Dep::PreDepends || D->Type == pkgCache::Dep::Depends))
+ {
+ // undo all changes which aren't lead to a solution
+ for (std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> >::const_iterator c = ++newChanged;
+ c != Changed.end(); ++c)
+ SetCandidateVersion(c->first);
+ Changed.erase(newChanged, Changed.end());
+ return false;
+ }
+ }
+ return true;
+}
+ /*}}}*/
+// DepCache::MarkAuto - set the Auto flag for a package /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgDepCache::MarkAuto(const PkgIterator &Pkg, bool Auto)
+{
+ StateCache &state = PkgState[Pkg->ID];
+
+ ActionGroup group(*this);
+
+ if(Auto)
+ state.Flags |= Flag::Auto;
+ else
+ state.Flags &= ~Flag::Auto;
+}
+ /*}}}*/
+// StateCache::Update - Compute the various static display things /*{{{*/
+// ---------------------------------------------------------------------
+/* This is called whenever the Candidate version changes. */
+void pkgDepCache::StateCache::Update(PkgIterator Pkg,pkgCache &Cache)
+{
+ // Some info
+ VerIterator Ver = CandidateVerIter(Cache);
+
+ // Use a null string or the version string
+ if (Ver.end() == true)
+ CandVersion = "";
+ else
+ CandVersion = Ver.VerStr();
+
+ // Find the current version
+ CurVersion = "";
+ if (Pkg->CurrentVer != 0)
+ CurVersion = Pkg.CurrentVer().VerStr();
+
+ // Figure out if its up or down or equal
+ Status = Ver.CompareVer(Pkg.CurrentVer());
+ if (Pkg->CurrentVer == 0 || Pkg->VersionList == 0 || CandidateVer == 0)
+ Status = 2;
+}
+ /*}}}*/
+// StateCache::StripEpoch - Remove the epoch specifier from the version /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+const char *pkgDepCache::StateCache::StripEpoch(const char *Ver)
+{
+ if (Ver == 0)
+ return 0;
+
+ // Strip any epoch
+ char const * const I = strchr(Ver, ':');
+ if (I == nullptr)
+ return Ver;
+ return I + 1;
+}
+ /*}}}*/
+// Policy::GetCandidateVer - Returns the Candidate install version /*{{{*/
+// ---------------------------------------------------------------------
+/* The default just returns the highest available version that is not
+ a source and automatic. */
+pkgCache::VerIterator pkgDepCache::Policy::GetCandidateVer(PkgIterator const &Pkg)
+{
+ /* Not source/not automatic versions cannot be a candidate version
+ unless they are already installed */
+ VerIterator Last;
+
+ for (VerIterator I = Pkg.VersionList(); I.end() == false; ++I)
+ {
+ if (Pkg.CurrentVer() == I)
+ return I;
+
+ for (VerFileIterator J = I.FileList(); J.end() == false; ++J)
+ {
+ if (J.File().Flagged(Flag::NotSource))
+ continue;
+
+ /* Stash the highest version of a not-automatic source, we use it
+ if there is nothing better */
+ if (J.File().Flagged(Flag::NotAutomatic) ||
+ J.File().Flagged(Flag::ButAutomaticUpgrades))
+ {
+ if (Last.end() == true)
+ Last = I;
+ continue;
+ }
+
+ return I;
+ }
+ }
+
+ return Last;
+}
+ /*}}}*/
+// Policy::IsImportantDep - True if the dependency is important /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgDepCache::Policy::IsImportantDep(DepIterator const &Dep) const
+{
+ if(Dep.IsCritical())
+ return true;
+ else if(Dep->Type == pkgCache::Dep::Recommends)
+ {
+ if (InstallRecommends)
+ return true;
+ // we support a special mode to only install-recommends for certain
+ // sections
+ // FIXME: this is a meant as a temporarly solution until the
+ // recommends are cleaned up
+ const char *sec = Dep.ParentVer().Section();
+ if (sec && ConfigValueInSubTree("APT::Install-Recommends-Sections", sec))
+ return true;
+ }
+ else if(Dep->Type == pkgCache::Dep::Suggests)
+ return InstallSuggests;
+
+ return false;
+}
+ /*}}}*/
+// Policy::GetPriority - Get the priority of the package pin /*{{{*/
+APT_CONST signed short pkgDepCache::Policy::GetPriority(pkgCache::PkgIterator const &/*Pkg*/)
+{ return 0; }
+APT_CONST signed short pkgDepCache::Policy::GetPriority(pkgCache::VerIterator const &/*Ver*/, bool /*ConsiderFiles*/)
+{ return 0; }
+APT_CONST signed short pkgDepCache::Policy::GetPriority(pkgCache::PkgFileIterator const &/*File*/)
+{ return 0; }
+ /*}}}*/
+pkgDepCache::InRootSetFunc *pkgDepCache::GetRootSetFunc() /*{{{*/
+{
+ DefaultRootSetFunc *f = new DefaultRootSetFunc;
+ if(f->wasConstructedSuccessfully())
+ return f;
+ else
+ {
+ delete f;
+ return NULL;
+ }
+}
+ /*}}}*/
+bool pkgDepCache::MarkFollowsRecommends()
+{
+ return _config->FindB("APT::AutoRemove::RecommendsImportant", true);
+}
+
+bool pkgDepCache::MarkFollowsSuggests()
+{
+ return _config->FindB("APT::AutoRemove::SuggestsImportant", true);
+}
+
+// pkgDepCache::MarkRequired - the main mark algorithm /*{{{*/
+static bool IsPkgInBoringState(pkgCache::PkgIterator const &Pkg, pkgDepCache::StateCache const * const PkgState)
+{
+ if (Pkg->CurrentVer == 0)
+ {
+ if (PkgState[Pkg->ID].Keep())
+ return true;
+ }
+ else
+ {
+ if (PkgState[Pkg->ID].Delete())
+ return true;
+ }
+ return false;
+}
+bool pkgDepCache::MarkRequired(InRootSetFunc &userFunc)
+{
+ if (_config->Find("APT::Solver", "internal") != "internal")
+ return true;
+
+ bool const debug_autoremove = _config->FindB("Debug::pkgAutoRemove",false);
+
+ // init the states
+ auto const PackagesCount = Head().PackageCount;
+ for(auto i = decltype(PackagesCount){0}; i < PackagesCount; ++i)
+ {
+ PkgState[i].Marked = false;
+ PkgState[i].Garbage = false;
+ }
+ if (debug_autoremove)
+ for(PkgIterator p = PkgBegin(); !p.end(); ++p)
+ if(PkgState[p->ID].Flags & Flag::Auto)
+ std::clog << "AutoDep: " << p.FullName() << std::endl;
+
+ bool const follow_recommends = MarkFollowsRecommends();
+ bool const follow_suggests = MarkFollowsSuggests();
+
+ // do the mark part, this is the core bit of the algorithm
+ for (PkgIterator P = PkgBegin(); !P.end(); ++P)
+ {
+ if (PkgState[P->ID].Marked || IsPkgInBoringState(P, PkgState))
+ continue;
+
+ if ((PkgState[P->ID].Flags & Flag::Auto) == 0)
+ ;
+ else if ((P->Flags & Flag::Essential) || (P->Flags & Flag::Important))
+ ;
+ // be nice even then a required package violates the policy (#583517)
+ // and do the full mark process also for required packages
+ else if (P->CurrentVer != 0 && P.CurrentVer()->Priority == pkgCache::State::Required)
+ ;
+ else if (userFunc.InRootSet(P))
+ ;
+ // packages which can't be changed (like holds) can't be garbage
+ else if (IsModeChangeOk(ModeGarbage, P, 0, false) == false)
+ ;
+ else
+ continue;
+
+ if (PkgState[P->ID].Install())
+ MarkPackage(P, PkgState[P->ID].InstVerIter(*this),
+ follow_recommends, follow_suggests);
+ else
+ MarkPackage(P, P.CurrentVer(),
+ follow_recommends, follow_suggests);
+ }
+
+ return true;
+}
+ /*}}}*/
+// MarkPackage - mark a single package in Mark-and-Sweep /*{{{*/
+void pkgDepCache::MarkPackage(const pkgCache::PkgIterator &Pkg,
+ const pkgCache::VerIterator &Ver,
+ bool const &follow_recommends,
+ bool const &follow_suggests)
+{
+ {
+ pkgDepCache::StateCache &state = PkgState[Pkg->ID];
+ // if we are marked already we are done
+ if(state.Marked || unlikely(Ver.end()))
+ return;
+ state.Marked=true;
+ }
+
+ if (IsPkgInBoringState(Pkg, PkgState))
+ return;
+
+ bool const debug_autoremove = _config->FindB("Debug::pkgAutoRemove", false);
+ if(debug_autoremove)
+ std::clog << "Marking: " << Pkg.FullName() << " " << Ver.VerStr() << std::endl;
+
+ for (auto D = Ver.DependsList(); D.end() == false; ++D)
+ {
+ auto const T = D.TargetPkg();
+ if (PkgState[T->ID].Marked)
+ continue;
+
+ if (D->Type != Dep::Depends &&
+ D->Type != Dep::PreDepends &&
+ (follow_recommends == false || D->Type != Dep::Recommends) &&
+ (follow_suggests == false || D->Type != Dep::Suggests))
+ continue;
+
+ // handle the virtual part first
+ APT::VersionVector providers;
+ for(auto Prv = T.ProvidesList(); Prv.end() == false; ++Prv)
+ {
+ auto PP = Prv.OwnerPkg();
+ if (IsPkgInBoringState(PP, PkgState))
+ continue;
+
+ // we want to ignore provides from uninteresting versions
+ auto const PV = (PkgState[PP->ID].Install()) ?
+ PkgState[PP->ID].InstVerIter(*this) : PP.CurrentVer();
+ if (unlikely(PV.end()) || PV != Prv.OwnerVer() || D.IsSatisfied(Prv) == false)
+ continue;
+
+ providers.emplace_back(PV);
+ }
+ if (providers.empty() == false)
+ {
+ // sort providers by source version so that only the latest versioned
+ // binary package of a source package is marked instead of all
+ std::sort(providers.begin(), providers.end(),
+ [](pkgCache::VerIterator const &A, pkgCache::VerIterator const &B) {
+ auto const nameret = strcmp(A.SourcePkgName(), B.SourcePkgName());
+ if (nameret != 0)
+ return nameret < 0;
+ auto const verret = A.Cache()->VS->CmpVersion(A.SourceVerStr(), B.SourceVerStr());
+ if (verret != 0)
+ return verret > 0;
+ return strcmp(A.ParentPkg().Name(), B.ParentPkg().Name()) < 0;
+ });
+ auto const prvsize = providers.size();
+ providers.erase(std::unique(providers.begin(), providers.end(),
+ [](pkgCache::VerIterator const &A, pkgCache::VerIterator const &B) {
+ return strcmp(A.SourcePkgName(), B.SourcePkgName()) == 0 &&
+ strcmp(A.SourceVerStr(), B.SourceVerStr()) != 0;
+ }), providers.end());
+ for (auto && PV: providers)
+ {
+ auto const PP = PV.ParentPkg();
+ if (debug_autoremove)
+ std::clog << "Following dep: " << APT::PrettyDep(this, D)
+ << ", provided by " << PP.FullName() << " " << PV.VerStr()
+ << " (" << providers.size() << "/" << prvsize << ")"<< std::endl;
+ MarkPackage(PP, PV, follow_recommends, follow_suggests);
+ }
+ }
+
+ // now deal with the real part of the package
+ if (IsPkgInBoringState(T, PkgState))
+ continue;
+
+ auto const TV = (PkgState[T->ID].Install()) ?
+ PkgState[T->ID].InstVerIter(*this) : T.CurrentVer();
+ if (unlikely(TV.end()) || D.IsSatisfied(TV) == false)
+ continue;
+
+ if (debug_autoremove)
+ std::clog << "Following dep: " << APT::PrettyDep(this, D) << std::endl;
+ MarkPackage(T, TV, follow_recommends, follow_suggests);
+ }
+}
+ /*}}}*/
+bool pkgDepCache::Sweep() /*{{{*/
+{
+ bool debug_autoremove = _config->FindB("Debug::pkgAutoRemove",false);
+
+ // do the sweep
+ for(PkgIterator p=PkgBegin(); !p.end(); ++p)
+ {
+ StateCache &state=PkgState[p->ID];
+
+ // skip required packages
+ if (!p.CurrentVer().end() &&
+ (p.CurrentVer()->Priority == pkgCache::State::Required))
+ continue;
+
+ // if it is not marked and it is installed, it's garbage
+ if(!state.Marked && (!p.CurrentVer().end() || state.Install()))
+ {
+ state.Garbage=true;
+ if(debug_autoremove)
+ std::clog << "Garbage: " << p.FullName() << std::endl;
+ }
+ }
+
+ return true;
+}
+ /*}}}*/
+// DepCache::MarkAndSweep /*{{{*/
+bool pkgDepCache::MarkAndSweep(InRootSetFunc &rootFunc)
+{
+ return MarkRequired(rootFunc) && Sweep();
+}
+bool pkgDepCache::MarkAndSweep()
+{
+ std::unique_ptr<InRootSetFunc> f(GetRootSetFunc());
+ if(f.get() != NULL)
+ return MarkAndSweep(*f.get());
+ else
+ return false;
+}
+ /*}}}*/
diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h
new file mode 100644
index 000000000..1ab86644d
--- /dev/null
+++ b/apt-pkg/depcache.h
@@ -0,0 +1,525 @@
+// -*- mode: c++; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ DepCache - Dependency Extension data for the cache
+
+ This class stores the cache data and a set of extension structures for
+ monitoring the current state of all the packages. It also generates and
+ caches the 'install' state of many things. This refers to the state of the
+ package after an install has been run.
+
+ The StateCache::State field can be -1,0,1,2 which is <,=,>,no current.
+ StateCache::Mode is which of the 3 fields is active.
+
+ This structure is important to support the readonly status of the cache
+ file. When the data is saved the cache will be refereshed from our
+ internal rep and written to disk. Then the actual persistent data
+ files will be put on the disk.
+
+ Each dependency is compared against 3 target versions to produce to
+ 3 dependency results.
+ Now - Compared using the Currently install version
+ Install - Compared using the install version (final state)
+ CVer - (Candidate Version) Compared using the Candidate Version
+ The candidate and now results are used to decide wheather a package
+ should be automatically installed or if it should be left alone.
+
+ Remember, the Candidate Version is selected based on the distribution
+ settings for the Package. The Install Version is selected based on the
+ state (Delete, Keep, Install) field and can be either the Current Version
+ or the Candidate version.
+
+ The Candidate version is what is shown the 'Install Version' field.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_DEPCACHE_H
+#define PKGLIB_DEPCACHE_H
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/macros.h>
+
+#include <stddef.h>
+
+#include <memory>
+#include <list>
+#include <string>
+#include <utility>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/progress.h>
+#include <apt-pkg/error.h>
+#endif
+#ifndef APT_10_CLEANER_HEADERS
+#include <set>
+#include <vector>
+#endif
+
+class OpProgress;
+class pkgVersioningSystem;
+
+class pkgDepCache : protected pkgCache::Namespace
+{
+ public:
+
+ /** \brief An arbitrary predicate on packages. */
+ class InRootSetFunc
+ {
+ public:
+ virtual bool InRootSet(const pkgCache::PkgIterator &/*pkg*/) {return false;};
+ virtual ~InRootSetFunc() {};
+ };
+
+ private:
+ /** \brief Mark a single package and all its unmarked important
+ * dependencies during mark-and-sweep.
+ *
+ * Recursively invokes itself to mark all dependencies of the
+ * package.
+ *
+ * \param pkg The package to mark.
+ *
+ * \param ver The version of the package that is to be marked.
+ *
+ * \param follow_recommends If \b true, recommendations of the
+ * package will be recursively marked.
+ *
+ * \param follow_suggests If \b true, suggestions of the package
+ * will be recursively marked.
+ */
+ APT_HIDDEN void MarkPackage(const pkgCache::PkgIterator &pkg,
+ const pkgCache::VerIterator &ver,
+ bool const &follow_recommends,
+ bool const &follow_suggests);
+
+ /** \brief Update the Marked field of all packages.
+ *
+ * Each package's StateCache::Marked field will be set to \b true
+ * if and only if it can be reached from the root set. By
+ * default, the root set consists of the set of manually installed
+ * or essential packages, but it can be extended using the
+ * parameter #rootFunc.
+ *
+ * \param rootFunc A callback that can be used to add extra
+ * packages to the root set.
+ *
+ * \return \b false if an error occurred.
+ */
+ bool MarkRequired(InRootSetFunc &rootFunc);
+
+ /** \brief Set the StateCache::Garbage flag on all packages that
+ * should be removed.
+ *
+ * Packages that were not marked by the last call to #MarkRequired
+ * are tested to see whether they are actually garbage. If so,
+ * they are marked as such.
+ *
+ * \return \b false if an error occurred.
+ */
+ bool Sweep();
+
+ public:
+
+ // These flags are used in DepState
+ enum DepFlags {DepNow = (1 << 0),DepInstall = (1 << 1),DepCVer = (1 << 2),
+ DepGNow = (1 << 3),DepGInstall = (1 << 4),DepGCVer = (1 << 5)};
+
+ // These flags are used in StateCache::DepState
+ enum DepStateFlags {DepNowPolicy = (1 << 0), DepNowMin = (1 << 1),
+ DepInstPolicy = (1 << 2), DepInstMin = (1 << 3),
+ DepCandPolicy = (1 << 4), DepCandMin = (1 << 5)};
+
+ // These flags are used in StateCache::iFlags
+ enum InternalFlags {AutoKept = (1 << 0), Purge = (1 << 1), ReInstall = (1 << 2), Protected = (1 << 3)};
+
+ enum VersionTypes {NowVersion, InstallVersion, CandidateVersion};
+ enum ModeList {ModeDelete = 0, ModeKeep = 1, ModeInstall = 2, ModeGarbage = 3};
+
+ /** \brief Represents an active action group.
+ *
+ * An action group is a group of actions that are currently being
+ * performed. While an active group is active, certain routine
+ * clean-up actions that would normally be performed after every
+ * cache operation are delayed until the action group is
+ * completed. This is necessary primarily to avoid inefficiencies
+ * when modifying a large number of packages at once.
+ *
+ * This class represents an active action group. Creating an
+ * instance will create an action group; destroying one will
+ * destroy the corresponding action group.
+ *
+ * The following operations are suppressed by this class:
+ *
+ * - Keeping the Marked and Garbage flags up to date.
+ *
+ * \note This can be used in the future to easily accumulate
+ * atomic actions for undo or to display "what apt did anyway";
+ * e.g., change the counter of how many action groups are active
+ * to a std::set of pointers to them and use those to store
+ * information about what happened in a group in the group.
+ */
+ class ActionGroup
+ {
+ void * const d;
+ pkgDepCache &cache;
+
+ bool released;
+
+ /** Action groups are noncopyable. */
+ APT_HIDDEN ActionGroup(const ActionGroup &other);
+ public:
+ /** \brief Create a new ActionGroup.
+ *
+ * \param cache The cache that this ActionGroup should
+ * manipulate.
+ *
+ * As long as this object exists, no automatic cleanup
+ * operations will be undertaken.
+ */
+ explicit ActionGroup(pkgDepCache &cache);
+
+ /** \brief Clean up the action group before it is destroyed.
+ *
+ * If it is destroyed later, no second cleanup wil be run.
+ */
+ void release();
+
+ /** \brief Destroy the action group.
+ *
+ * If this is the last action group, the automatic cache
+ * cleanup operations will be undertaken.
+ */
+ virtual ~ActionGroup();
+ };
+
+ /** \brief Returns \b true for packages matching a regular
+ * expression in APT::NeverAutoRemove.
+ */
+ class DefaultRootSetFunc : public InRootSetFunc, public Configuration::MatchAgainstConfig
+ {
+ public:
+ DefaultRootSetFunc() : Configuration::MatchAgainstConfig("APT::NeverAutoRemove") {};
+ virtual ~DefaultRootSetFunc() {};
+
+ bool InRootSet(const pkgCache::PkgIterator &pkg) APT_OVERRIDE { return pkg.end() == false && Match(pkg.Name()); };
+ };
+
+ struct StateCache
+ {
+ // text versions of the two version fields
+ const char *CandVersion;
+ const char *CurVersion;
+
+ // Pointer to the candidate install version.
+ Version *CandidateVer;
+
+ // Pointer to the install version.
+ Version *InstallVer;
+
+ // Copy of Package::Flags
+ unsigned short Flags;
+ unsigned short iFlags; // Internal flags
+
+ /** \brief \b true if this package can be reached from the root set. */
+ bool Marked;
+
+ /** \brief \b true if this package is unused and should be removed.
+ *
+ * This differs from !#Marked, because it is possible that some
+ * unreachable packages will be protected from becoming
+ * garbage.
+ */
+ bool Garbage;
+
+ // Various tree indicators
+ signed char Status; // -1,0,1,2
+ unsigned char Mode; // ModeList
+ unsigned char DepState; // DepState Flags
+
+ // Update of candidate version
+ APT_DEPRECATED_MSG("Use the method of the same name in contrib/strutl.h instead if you must") const char *StripEpoch(const char *Ver) APT_PURE;
+ void Update(PkgIterator Pkg,pkgCache &Cache);
+
+ // Various test members for the current status of the package
+ inline bool NewInstall() const {return Status == 2 && Mode == ModeInstall;};
+ inline bool Delete() const {return Mode == ModeDelete;};
+ inline bool Purge() const {return Delete() == true && (iFlags & pkgDepCache::Purge) == pkgDepCache::Purge; };
+ inline bool Keep() const {return Mode == ModeKeep;};
+ inline bool Protect() const {return (iFlags & Protected) == Protected;};
+ inline bool Upgrade() const {return Status > 0 && Mode == ModeInstall;};
+ inline bool Upgradable() const {return Status >= 1 && CandidateVer != NULL;};
+ inline bool Downgrade() const {return Status < 0 && Mode == ModeInstall;};
+ inline bool Held() const {return Status != 0 && Keep();};
+ inline bool NowBroken() const {return (DepState & DepNowMin) != DepNowMin;};
+ inline bool NowPolicyBroken() const {return (DepState & DepNowPolicy) != DepNowPolicy;};
+ inline bool InstBroken() const {return (DepState & DepInstMin) != DepInstMin;};
+ inline bool InstPolicyBroken() const {return (DepState & DepInstPolicy) != DepInstPolicy;};
+ inline bool Install() const {return Mode == ModeInstall;};
+ inline bool ReInstall() const {return Delete() == false && (iFlags & pkgDepCache::ReInstall) == pkgDepCache::ReInstall;};
+ inline VerIterator InstVerIter(pkgCache &Cache)
+ {return VerIterator(Cache,InstallVer);};
+ inline VerIterator CandidateVerIter(pkgCache &Cache)
+ {return VerIterator(Cache,CandidateVer);};
+ };
+
+ // Helper functions
+ void BuildGroupOrs(VerIterator const &V);
+ void UpdateVerState(PkgIterator const &Pkg);
+
+ // User Policy control
+ class Policy
+ {
+ public:
+ Policy() {
+ InstallRecommends = _config->FindB("APT::Install-Recommends", false);
+ InstallSuggests = _config->FindB("APT::Install-Suggests", false);
+ }
+
+ virtual VerIterator GetCandidateVer(PkgIterator const &Pkg);
+ virtual bool IsImportantDep(DepIterator const &Dep) const;
+ virtual signed short GetPriority(PkgIterator const &Pkg);
+ virtual signed short GetPriority(VerIterator const &Ver, bool ConsiderFiles=true);
+ virtual signed short GetPriority(PkgFileIterator const &File);
+
+ virtual ~Policy() {};
+
+ private:
+ bool InstallRecommends;
+ bool InstallSuggests;
+ };
+
+ private:
+ /** The number of open "action groups"; certain post-action
+ * operations are suppressed if this number is > 0.
+ */
+ int group_level;
+
+ friend class ActionGroup;
+
+ protected:
+
+ // State information
+ pkgCache *Cache;
+ StateCache *PkgState;
+ unsigned char *DepState;
+
+ /** Stores the space changes after installation */
+ signed long long iUsrSize;
+ /** Stores how much we need to download to get the packages */
+ unsigned long long iDownloadSize;
+ unsigned long iInstCount;
+ unsigned long iDelCount;
+ unsigned long iKeepCount;
+ unsigned long iBrokenCount;
+ unsigned long iPolicyBrokenCount;
+ unsigned long iBadCount;
+
+ bool DebugMarker;
+ bool DebugAutoInstall;
+
+ Policy *delLocalPolicy; // For memory clean up..
+ Policy *LocalPolicy;
+
+ // Check for a matching provides
+ bool CheckDep(DepIterator const &Dep,int const Type,PkgIterator &Res);
+ inline bool CheckDep(DepIterator const &Dep,int const Type)
+ {
+ PkgIterator Res(*this,0);
+ return CheckDep(Dep,Type,Res);
+ }
+
+ // Computes state information for deps and versions (w/o storing)
+ unsigned char DependencyState(DepIterator const &D);
+ unsigned char VersionState(DepIterator D,unsigned char const Check,
+ unsigned char const SetMin,
+ unsigned char const SetPolicy) const;
+
+ // Recalculates various portions of the cache, call after changing something
+ void Update(DepIterator Dep); // Mostly internal
+ void Update(PkgIterator const &P);
+
+ // Count manipulators
+ void AddSizes(const PkgIterator &Pkg, bool const Invert = false);
+ inline void RemoveSizes(const PkgIterator &Pkg) {AddSizes(Pkg, true);};
+ void AddStates(const PkgIterator &Pkg, bool const Invert = false);
+ inline void RemoveStates(const PkgIterator &Pkg) {AddStates(Pkg,true);};
+
+ public:
+
+ // Legacy.. We look like a pkgCache
+ inline operator pkgCache &() {return *Cache;};
+ inline Header &Head() {return *Cache->HeaderP;};
+ inline GrpIterator GrpBegin() {return Cache->GrpBegin();};
+ inline PkgIterator PkgBegin() {return Cache->PkgBegin();};
+ inline GrpIterator FindGrp(std::string const &Name) {return Cache->FindGrp(Name);};
+ inline PkgIterator FindPkg(std::string const &Name) {return Cache->FindPkg(Name);};
+ inline PkgIterator FindPkg(std::string const &Name, std::string const &Arch) {return Cache->FindPkg(Name, Arch);};
+
+ inline pkgCache &GetCache() {return *Cache;};
+ inline pkgVersioningSystem &VS() {return *Cache->VS;};
+
+ // Policy implementation
+ APT_DEPRECATED_MSG("Confusingly named method which returns the candidate as chosen by policy (NOT as chosen via .SetCandidateVersion!). You probably want to use .GetCandidateVersion instead.") inline VerIterator GetCandidateVer(PkgIterator const &Pkg) {return /* GetCandidateVersion(Pkg); but for API compat: */ LocalPolicy->GetCandidateVer(Pkg);};
+
+ inline bool IsImportantDep(DepIterator Dep) const {return LocalPolicy->IsImportantDep(Dep);};
+ inline Policy &GetPolicy() {return *LocalPolicy;};
+
+ // Accessors
+ inline StateCache &operator [](PkgIterator const &I) {return PkgState[I->ID];};
+ inline StateCache &operator [](PkgIterator const &I) const {return PkgState[I->ID];};
+ inline unsigned char &operator [](DepIterator const &I) {return DepState[I->ID];};
+
+ /** \return A function identifying packages in the root set other
+ * than manually installed packages and essential packages, or \b
+ * NULL if an error occurs.
+ *
+ * \todo Is this the best place for this function? Perhaps the
+ * settings for mark-and-sweep should be stored in a single
+ * external class?
+ */
+ virtual InRootSetFunc *GetRootSetFunc();
+
+ /** \return \b true if the garbage collector should follow recommendations.
+ */
+ virtual bool MarkFollowsRecommends();
+
+ /** \return \b true if the garbage collector should follow suggestions.
+ */
+ virtual bool MarkFollowsSuggests();
+
+ /** \brief Update the Marked and Garbage fields of all packages.
+ *
+ * This routine is implicitly invoked after all state manipulators
+ * and when an ActionGroup is destroyed. It invokes the private
+ * MarkRequired() and Sweep() to do its dirty work.
+ *
+ * \param rootFunc A predicate that returns \b true for packages
+ * that should be added to the root set.
+ */
+ bool MarkAndSweep(InRootSetFunc &rootFunc);
+ bool MarkAndSweep();
+
+ /** \name State Manipulators
+ */
+ // @{
+ bool MarkKeep(PkgIterator const &Pkg, bool Soft = false,
+ bool FromUser = true, unsigned long Depth = 0);
+ bool MarkDelete(PkgIterator const &Pkg, bool MarkPurge = false,
+ unsigned long Depth = 0, bool FromUser = true);
+ bool MarkInstall(PkgIterator const &Pkg,bool AutoInst = true,
+ unsigned long Depth = 0, bool FromUser = true,
+ bool ForceImportantDeps = false);
+ void MarkProtected(PkgIterator const &Pkg) { PkgState[Pkg->ID].iFlags |= Protected; };
+
+ void SetReInstall(PkgIterator const &Pkg,bool To);
+
+ /** @return 'the' candidate version of a package
+ *
+ * The version returned is the version previously set explicitly via
+ * SetCandidate* methods like #SetCandidateVersion or if there wasn't one
+ * set the version as chosen via #Policy.
+ *
+ * @param Pkg is the package to return the candidate for
+ */
+ pkgCache::VerIterator GetCandidateVersion(pkgCache::PkgIterator const &Pkg);
+ void SetCandidateVersion(VerIterator TargetVer);
+ bool SetCandidateRelease(pkgCache::VerIterator TargetVer,
+ std::string const &TargetRel);
+ /** Set the candidate version for dependencies too if needed.
+ *
+ * Sets not only the candidate version as SetCandidateVersion does,
+ * but walks also down the dependency tree and checks if it is required
+ * to set the candidate of the dependency to a version from the given
+ * release, too.
+ *
+ * \param TargetVer new candidate version of the package
+ * \param TargetRel try to switch to this release if needed
+ * \param[out] Changed a list of pairs consisting of the \b old
+ * version of the changed package and the version which
+ * required the switch of this dependency
+ * \return \b true if the switch was successful, \b false otherwise
+ */
+ bool SetCandidateRelease(pkgCache::VerIterator TargetVer,
+ std::string const &TargetRel,
+ std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> > &Changed);
+
+ /** Set the "is automatically installed" flag of Pkg. */
+ void MarkAuto(const PkgIterator &Pkg, bool Auto);
+ // @}
+
+ /** \return \b true if it's OK for MarkInstall to install
+ * the given package.
+ *
+ * The default implementation simply calls all IsInstallOk*
+ * method mentioned below.
+ *
+ * Overriding implementations should use the hold-state-flag to
+ * cache results from previous checks of this package - if possible.
+ *
+ * The parameters are the same as in the calling MarkInstall:
+ * \param Pkg the package that MarkInstall wants to install.
+ * \param AutoInst install this and all its dependencies
+ * \param Depth recursive deep of this Marker call
+ * \param FromUser was the install requested by the user?
+ */
+ virtual bool IsInstallOk(const PkgIterator &Pkg,bool AutoInst = true,
+ unsigned long Depth = 0, bool FromUser = true);
+
+ /** \return \b true if it's OK for MarkDelete to remove
+ * the given package.
+ *
+ * The default implementation simply calls all IsDeleteOk*
+ * method mentioned below, see also #IsInstallOk.
+ *
+ * The parameters are the same as in the calling MarkDelete:
+ * \param Pkg the package that MarkDelete wants to remove.
+ * \param MarkPurge should we purge instead of "only" remove?
+ * \param Depth recursive deep of this Marker call
+ * \param FromUser was the remove requested by the user?
+ */
+ virtual bool IsDeleteOk(const PkgIterator &Pkg,bool MarkPurge = false,
+ unsigned long Depth = 0, bool FromUser = true);
+
+ // read persistent states
+ bool readStateFile(OpProgress * const prog);
+ bool writeStateFile(OpProgress * const prog, bool const InstalledOnly=true);
+
+ // Size queries
+ inline signed long long UsrSize() {return iUsrSize;};
+ inline unsigned long long DebSize() {return iDownloadSize;};
+ inline unsigned long DelCount() {return iDelCount;};
+ inline unsigned long KeepCount() {return iKeepCount;};
+ inline unsigned long InstCount() {return iInstCount;};
+ inline unsigned long BrokenCount() {return iBrokenCount;};
+ inline unsigned long PolicyBrokenCount() {return iPolicyBrokenCount;};
+ inline unsigned long BadCount() {return iBadCount;};
+
+ bool Init(OpProgress * const Prog);
+ // Generate all state information
+ void Update(OpProgress * const Prog = 0);
+
+ pkgDepCache(pkgCache * const Cache,Policy * const Plcy = 0);
+ virtual ~pkgDepCache();
+
+ protected:
+ // methods call by IsInstallOk
+ bool IsInstallOkMultiArchSameVersionSynced(PkgIterator const &Pkg,
+ bool const AutoInst, unsigned long const Depth, bool const FromUser);
+ bool IsInstallOkDependenciesSatisfiableByCandidates(PkgIterator const &Pkg,
+ bool const AutoInst, unsigned long const Depth, bool const FromUser);
+
+ // methods call by IsDeleteOk
+ bool IsDeleteOkProtectInstallRequests(PkgIterator const &Pkg,
+ bool const rPurge, unsigned long const Depth, bool const FromUser);
+
+ private:
+ void * const d;
+
+ APT_HIDDEN bool IsModeChangeOk(ModeList const mode, PkgIterator const &Pkg,
+ unsigned long const Depth, bool const FromUser);
+};
+
+#endif
diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc
new file mode 100644
index 000000000..a2520441b
--- /dev/null
+++ b/apt-pkg/edsp.cc
@@ -0,0 +1,1506 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+ Set of methods to help writing and reading everything needed for EDSP
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/algorithms.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/prettyprinters.h>
+#include <apt-pkg/packagemanager.h>
+#include <apt-pkg/progress.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/edsp.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/string_view.h>
+#include <apt-pkg/pkgsystem.h>
+
+#include <sys/stat.h>
+#include <ctype.h>
+#include <stddef.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdio.h>
+
+#include <array>
+#include <limits>
+#include <string>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using std::string;
+
+// we could use pkgCache::DepType and ::Priority, but these would be localized strings…
+constexpr char const * const PrioMap[] = {
+ nullptr, "important", "required", "standard",
+ "optional", "extra"
+};
+constexpr char const * const DepMap[] = {
+ nullptr, "Depends", "Pre-Depends", "Suggests",
+ "Recommends" , "Conflicts", "Replaces",
+ "Obsoletes", "Breaks", "Enhances"
+};
+
+// WriteOkay - varaidic helper to easily Write to a FileFd /*{{{*/
+static bool WriteOkay_fn(FileFd &) { return true; }
+template<typename... Tail> static bool WriteOkay_fn(FileFd &output, APT::StringView data, Tail... more_data)
+{
+ return likely(output.Write(data.data(), data.length()) && WriteOkay_fn(output, more_data...));
+}
+template<typename... Tail> static bool WriteOkay_fn(FileFd &output, unsigned int data, Tail... more_data)
+{
+ std::string number;
+ strprintf(number, "%d", data);
+ return likely(output.Write(number.data(), number.length()) && WriteOkay_fn(output, more_data...));
+}
+template<typename... Data> static bool WriteOkay(bool &Okay, FileFd &output, Data&&... data)
+{
+ Okay = likely(Okay && WriteOkay_fn(output, std::forward<Data>(data)...));
+ return Okay;
+}
+template<typename... Data> static bool WriteOkay(FileFd &output, Data&&... data)
+{
+ bool Okay = likely(output.Failed() == false);
+ return WriteOkay(Okay, output, std::forward<Data>(data)...);
+}
+ /*}}}*/
+// WriteScenarioVersion /*{{{*/
+static void WriteScenarioVersion(pkgDepCache &Cache, FILE* output, pkgCache::PkgIterator const &Pkg,
+ pkgCache::VerIterator const &Ver)
+{
+ fprintf(output, "Package: %s\n", Pkg.Name());
+ fprintf(output, "Source: %s\n", Ver.SourcePkgName());
+ fprintf(output, "Architecture: %s\n", Ver.Arch());
+ fprintf(output, "Version: %s\n", Ver.VerStr());
+ fprintf(output, "Source-Version: %s\n", Ver.SourceVerStr());
+ if (Pkg.CurrentVer() == Ver)
+ fprintf(output, "Installed: yes\n");
+ if (Pkg->SelectedState == pkgCache::State::Hold ||
+ (Cache[Pkg].Keep() == true && Cache[Pkg].Protect() == true))
+ fprintf(output, "Hold: yes\n");
+ fprintf(output, "APT-ID: %d\n", Ver->ID);
+ if (PrioMap[Ver->Priority] != nullptr)
+ fprintf(output, "Priority: %s\n", PrioMap[Ver->Priority]);
+ if ((Pkg->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential)
+ fprintf(output, "Essential: yes\n");
+ if (Ver->Section != 0)
+ fprintf(output, "Section: %s\n", Ver.Section());
+ if ((Ver->MultiArch & pkgCache::Version::Allowed) == pkgCache::Version::Allowed)
+ fprintf(output, "Multi-Arch: allowed\n");
+ else if ((Ver->MultiArch & pkgCache::Version::Foreign) == pkgCache::Version::Foreign)
+ fprintf(output, "Multi-Arch: foreign\n");
+ else if ((Ver->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same)
+ fprintf(output, "Multi-Arch: same\n");
+ std::set<string> Releases;
+ for (pkgCache::VerFileIterator I = Ver.FileList(); I.end() == false; ++I) {
+ pkgCache::PkgFileIterator File = I.File();
+ if (File.Flagged(pkgCache::Flag::NotSource) == false) {
+ string Release = File.RelStr();
+ if (!Release.empty())
+ Releases.insert(Release);
+ }
+ }
+ if (!Releases.empty()) {
+ fprintf(output, "APT-Release:\n");
+ for (std::set<string>::iterator R = Releases.begin(); R != Releases.end(); ++R)
+ fprintf(output, " %s\n", R->c_str());
+ }
+ fprintf(output, "APT-Pin: %d\n", Cache.GetPolicy().GetPriority(Ver));
+ if (Cache.GetCandidateVersion(Pkg) == Ver)
+ fprintf(output, "APT-Candidate: yes\n");
+ if ((Cache[Pkg].Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto)
+ fprintf(output, "APT-Automatic: yes\n");
+}
+static bool WriteScenarioVersion(FileFd &output, pkgCache::PkgIterator const &Pkg,
+ pkgCache::VerIterator const &Ver)
+{
+ bool Okay = WriteOkay(output, "Package: ", Pkg.Name(),
+ "\nArchitecture: ", Ver.Arch(),
+ "\nVersion: ", Ver.VerStr());
+ WriteOkay(Okay, output, "\nAPT-ID: ", Ver->ID);
+ if ((Pkg->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential)
+ WriteOkay(Okay, output, "\nEssential: yes");
+ if ((Ver->MultiArch & pkgCache::Version::Allowed) == pkgCache::Version::Allowed)
+ WriteOkay(Okay, output, "\nMulti-Arch: allowed");
+ else if ((Ver->MultiArch & pkgCache::Version::Foreign) == pkgCache::Version::Foreign)
+ WriteOkay(Okay, output, "\nMulti-Arch: foreign");
+ else if ((Ver->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same)
+ WriteOkay(Okay, output, "\nMulti-Arch: same");
+ return Okay;
+}
+ /*}}}*/
+// WriteScenarioDependency /*{{{*/
+static void WriteScenarioDependency( FILE* output, pkgCache::VerIterator const &Ver)
+{
+ std::array<std::string, _count(DepMap)> dependencies;
+ bool orGroup = false;
+ for (pkgCache::DepIterator Dep = Ver.DependsList(); Dep.end() == false; ++Dep)
+ {
+ if (Dep.IsImplicit() == true)
+ continue;
+ if (orGroup == false)
+ dependencies[Dep->Type].append(", ");
+ dependencies[Dep->Type].append(Dep.TargetPkg().Name());
+ if (Dep->Version != 0)
+ dependencies[Dep->Type].append(" (").append(pkgCache::CompTypeDeb(Dep->CompareOp)).append(" ").append(Dep.TargetVer()).append(")");
+ if ((Dep->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or)
+ {
+ dependencies[Dep->Type].append(" | ");
+ orGroup = true;
+ }
+ else
+ orGroup = false;
+ }
+ for (size_t i = 1; i < dependencies.size(); ++i)
+ if (dependencies[i].empty() == false)
+ fprintf(output, "%s: %s\n", DepMap[i], dependencies[i].c_str()+2);
+ string provides;
+ for (pkgCache::PrvIterator Prv = Ver.ProvidesList(); Prv.end() == false; ++Prv)
+ {
+ if (Prv.IsMultiArchImplicit() == true)
+ continue;
+ if (provides.empty() == false)
+ provides.append(", ");
+ provides.append(Prv.Name());
+ if (Prv->ProvideVersion != 0)
+ provides.append(" (= ").append(Prv.ProvideVersion()).append(")");
+ }
+ if (provides.empty() == false)
+ fprintf(output, "Provides: %s\n", provides.c_str());
+}
+static bool WriteScenarioDependency(FileFd &output, pkgCache::VerIterator const &Ver, bool const OnlyCritical)
+{
+ std::array<std::string, _count(DepMap)> dependencies;
+ bool orGroup = false;
+ for (pkgCache::DepIterator Dep = Ver.DependsList(); Dep.end() == false; ++Dep)
+ {
+ if (Dep.IsImplicit() == true)
+ continue;
+ if (OnlyCritical && Dep.IsCritical() == false)
+ continue;
+ if (orGroup == false && dependencies[Dep->Type].empty() == false)
+ dependencies[Dep->Type].append(", ");
+ dependencies[Dep->Type].append(Dep.TargetPkg().Name());
+ if (Dep->Version != 0)
+ dependencies[Dep->Type].append(" (").append(pkgCache::CompTypeDeb(Dep->CompareOp)).append(" ").append(Dep.TargetVer()).append(")");
+ if ((Dep->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or)
+ {
+ dependencies[Dep->Type].append(" | ");
+ orGroup = true;
+ }
+ else
+ orGroup = false;
+ }
+ bool Okay = output.Failed() == false;
+ for (size_t i = 1; i < dependencies.size(); ++i)
+ if (dependencies[i].empty() == false)
+ WriteOkay(Okay, output, "\n", DepMap[i], ": ", dependencies[i]);
+ string provides;
+ for (pkgCache::PrvIterator Prv = Ver.ProvidesList(); Prv.end() == false; ++Prv)
+ {
+ if (Prv.IsMultiArchImplicit() == true)
+ continue;
+ if (provides.empty() == false)
+ provides.append(", ");
+ provides.append(Prv.Name());
+ if (Prv->ProvideVersion != 0)
+ provides.append(" (= ").append(Prv.ProvideVersion()).append(")");
+ }
+ if (provides.empty() == false)
+ WriteOkay(Okay, output, "\nProvides: ", provides);
+ return WriteOkay(Okay, output, "\n");
+}
+ /*}}}*/
+// WriteScenarioLimitedDependency /*{{{*/
+static void WriteScenarioLimitedDependency(FILE* output,
+ pkgCache::VerIterator const &Ver,
+ APT::PackageSet const &pkgset)
+{
+ std::array<std::string, _count(DepMap)> dependencies;
+ bool orGroup = false;
+ for (pkgCache::DepIterator Dep = Ver.DependsList(); Dep.end() == false; ++Dep)
+ {
+ if (Dep.IsImplicit() == true)
+ continue;
+ if (orGroup == false)
+ {
+ if (pkgset.find(Dep.TargetPkg()) == pkgset.end())
+ continue;
+ if (dependencies[Dep->Type].empty() == false)
+ dependencies[Dep->Type].append(", ");
+ }
+ else if (pkgset.find(Dep.TargetPkg()) == pkgset.end())
+ {
+ if ((Dep->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or)
+ continue;
+ dependencies[Dep->Type].erase(dependencies[Dep->Type].end()-3, dependencies[Dep->Type].end());
+ orGroup = false;
+ continue;
+ }
+ dependencies[Dep->Type].append(Dep.TargetPkg().Name());
+ if (Dep->Version != 0)
+ dependencies[Dep->Type].append(" (").append(pkgCache::CompTypeDeb(Dep->CompareOp)).append(" ").append(Dep.TargetVer()).append(")");
+ if ((Dep->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or)
+ {
+ dependencies[Dep->Type].append(" | ");
+ orGroup = true;
+ }
+ else
+ orGroup = false;
+ }
+ for (size_t i = 1; i < dependencies.size(); ++i)
+ if (dependencies[i].empty() == false)
+ fprintf(output, "%s: %s\n", DepMap[i], dependencies[i].c_str());
+ string provides;
+ for (pkgCache::PrvIterator Prv = Ver.ProvidesList(); Prv.end() == false; ++Prv)
+ {
+ if (Prv.IsMultiArchImplicit() == true)
+ continue;
+ if (pkgset.find(Prv.ParentPkg()) == pkgset.end())
+ continue;
+ if (provides.empty() == false)
+ provides.append(", ");
+ provides.append(Prv.Name());
+ if (Prv->ProvideVersion != 0)
+ provides.append(" (= ").append(Prv.ProvideVersion()).append(")");
+ }
+ if (provides.empty() == false)
+ fprintf(output, "Provides: %s\n", provides.c_str());
+}
+static bool WriteScenarioLimitedDependency(FileFd &output,
+ pkgCache::VerIterator const &Ver,
+ std::vector<bool> const &pkgset,
+ bool const OnlyCritical)
+{
+ std::array<std::string, _count(DepMap)> dependencies;
+ bool orGroup = false;
+ for (pkgCache::DepIterator Dep = Ver.DependsList(); Dep.end() == false; ++Dep)
+ {
+ if (Dep.IsImplicit() == true)
+ continue;
+ if (OnlyCritical && Dep.IsCritical() == false)
+ continue;
+ if (orGroup == false)
+ {
+ if (pkgset[Dep.TargetPkg()->ID] == false)
+ continue;
+ if (dependencies[Dep->Type].empty() == false)
+ dependencies[Dep->Type].append(", ");
+ }
+ else if (pkgset[Dep.TargetPkg()->ID] == false)
+ {
+ if ((Dep->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or)
+ continue;
+ dependencies[Dep->Type].erase(dependencies[Dep->Type].end()-3, dependencies[Dep->Type].end());
+ orGroup = false;
+ continue;
+ }
+ dependencies[Dep->Type].append(Dep.TargetPkg().Name());
+ if (Dep->Version != 0)
+ dependencies[Dep->Type].append(" (").append(pkgCache::CompTypeDeb(Dep->CompareOp)).append(" ").append(Dep.TargetVer()).append(")");
+ if ((Dep->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or)
+ {
+ dependencies[Dep->Type].append(" | ");
+ orGroup = true;
+ }
+ else
+ orGroup = false;
+ }
+ bool Okay = output.Failed() == false;
+ for (size_t i = 1; i < dependencies.size(); ++i)
+ if (dependencies[i].empty() == false)
+ WriteOkay(Okay, output, "\n", DepMap[i], ": ", dependencies[i]);
+ string provides;
+ for (pkgCache::PrvIterator Prv = Ver.ProvidesList(); Prv.end() == false; ++Prv)
+ {
+ if (Prv.IsMultiArchImplicit() == true)
+ continue;
+ if (pkgset[Prv.ParentPkg()->ID] == false)
+ continue;
+ if (provides.empty() == false)
+ provides.append(", ");
+ provides.append(Prv.Name());
+ if (Prv->ProvideVersion != 0)
+ provides.append(" (= ").append(Prv.ProvideVersion()).append(")");
+ }
+ if (provides.empty() == false)
+ WriteOkay(Okay, output, "\nProvides: ", provides);
+ return WriteOkay(Okay, output, "\n");
+}
+ /*}}}*/
+static bool SkipUnavailableVersions(pkgDepCache &Cache, pkgCache::PkgIterator const &Pkg, pkgCache::VerIterator const &Ver)/*{{{*/
+{
+ /* versions which aren't current and aren't available in
+ any "online" source file are bad, expect if they are the chosen
+ candidate: The exception is for build-dep implementation as it creates
+ such pseudo (package) versions and removes them later on again.
+ We filter out versions at all so packages in 'rc' state only available
+ in dpkg/status aren't passed to solvers as they can't be installed. */
+ if (Pkg->CurrentVer != 0)
+ return false;
+ if (Cache.GetCandidateVersion(Pkg) == Ver)
+ return false;
+ for (pkgCache::VerFileIterator I = Ver.FileList(); I.end() == false; ++I)
+ if (I.File().Flagged(pkgCache::Flag::NotSource) == false)
+ return false;
+ return true;
+}
+ /*}}}*/
+static bool WriteScenarioEDSPVersion(pkgDepCache &Cache, FileFd &output, pkgCache::PkgIterator const &Pkg,/*{{{*/
+ pkgCache::VerIterator const &Ver)
+{
+ bool Okay = WriteOkay(output, "\nSource: ", Ver.SourcePkgName(),
+ "\nSource-Version: ", Ver.SourceVerStr());
+ if (PrioMap[Ver->Priority] != nullptr)
+ WriteOkay(Okay, output, "\nPriority: ", PrioMap[Ver->Priority]);
+ if (Ver->Section != 0)
+ WriteOkay(Okay, output, "\nSection: ", Ver.Section());
+ if (Pkg.CurrentVer() == Ver)
+ WriteOkay(Okay, output, "\nInstalled: yes");
+ if (Pkg->SelectedState == pkgCache::State::Hold ||
+ (Cache[Pkg].Keep() == true && Cache[Pkg].Protect() == true))
+ WriteOkay(Okay, output, "\nHold: yes");
+ std::set<string> Releases;
+ for (pkgCache::VerFileIterator I = Ver.FileList(); I.end() == false; ++I) {
+ pkgCache::PkgFileIterator File = I.File();
+ if (File.Flagged(pkgCache::Flag::NotSource) == false) {
+ string Release = File.RelStr();
+ if (!Release.empty())
+ Releases.insert(Release);
+ }
+ }
+ if (!Releases.empty()) {
+ WriteOkay(Okay, output, "\nAPT-Release:");
+ for (std::set<string>::iterator R = Releases.begin(); R != Releases.end(); ++R)
+ WriteOkay(Okay, output, "\n ", *R);
+ }
+ WriteOkay(Okay, output, "\nAPT-Pin: ", Cache.GetPolicy().GetPriority(Ver));
+ if (Cache.GetCandidateVersion(Pkg) == Ver)
+ WriteOkay(Okay, output, "\nAPT-Candidate: yes");
+ if ((Cache[Pkg].Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto)
+ WriteOkay(Okay, output, "\nAPT-Automatic: yes");
+ return Okay;
+}
+ /*}}}*/
+// EDSP::WriteScenario - to the given file descriptor /*{{{*/
+bool EDSP::WriteScenario(pkgDepCache &Cache, FILE* output, OpProgress *Progress)
+{
+ if (Progress != NULL)
+ Progress->SubProgress(Cache.Head().VersionCount, _("Send scenario to solver"));
+ unsigned long p = 0;
+ std::vector<std::string> archs = APT::Configuration::getArchitectures();
+ for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg)
+ {
+ std::string const arch = Pkg.Arch();
+ if (std::find(archs.begin(), archs.end(), arch) == archs.end())
+ continue;
+ for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() == false; ++Ver, ++p)
+ {
+ if (SkipUnavailableVersions(Cache, Pkg, Ver))
+ continue;
+ WriteScenarioVersion(Cache, output, Pkg, Ver);
+ WriteScenarioDependency(output, Ver);
+ fprintf(output, "\n");
+ if (Progress != NULL && p % 100 == 0)
+ Progress->Progress(p);
+ }
+ }
+ return true;
+}
+bool EDSP::WriteScenario(pkgDepCache &Cache, FileFd &output, OpProgress *Progress)
+{
+ if (Progress != NULL)
+ Progress->SubProgress(Cache.Head().VersionCount, _("Send scenario to solver"));
+ unsigned long p = 0;
+ bool Okay = output.Failed() == false;
+ std::vector<std::string> archs = APT::Configuration::getArchitectures();
+ for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false && likely(Okay); ++Pkg)
+ {
+ std::string const arch = Pkg.Arch();
+ if (std::find(archs.begin(), archs.end(), arch) == archs.end())
+ continue;
+ for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() == false && likely(Okay); ++Ver, ++p)
+ {
+ if (SkipUnavailableVersions(Cache, Pkg, Ver))
+ continue;
+ Okay &= WriteScenarioVersion(output, Pkg, Ver);
+ Okay &= WriteScenarioEDSPVersion(Cache, output, Pkg, Ver);
+ Okay &= WriteScenarioDependency(output, Ver, false);
+ WriteOkay(Okay, output, "\n");
+ if (Progress != NULL && p % 100 == 0)
+ Progress->Progress(p);
+ }
+ }
+ return Okay;
+}
+ /*}}}*/
+// EDSP::WriteLimitedScenario - to the given file descriptor /*{{{*/
+bool EDSP::WriteLimitedScenario(pkgDepCache &Cache, FILE* output,
+ APT::PackageSet const &pkgset,
+ OpProgress *Progress)
+{
+ if (Progress != NULL)
+ Progress->SubProgress(Cache.Head().VersionCount, _("Send scenario to solver"));
+ unsigned long p = 0;
+ for (APT::PackageSet::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg, ++p)
+ for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() == false; ++Ver)
+ {
+ if (SkipUnavailableVersions(Cache, Pkg, Ver))
+ continue;
+ WriteScenarioVersion(Cache, output, Pkg, Ver);
+ WriteScenarioLimitedDependency(output, Ver, pkgset);
+ fprintf(output, "\n");
+ if (Progress != NULL && p % 100 == 0)
+ Progress->Progress(p);
+ }
+ if (Progress != NULL)
+ Progress->Done();
+ return true;
+}
+bool EDSP::WriteLimitedScenario(pkgDepCache &Cache, FileFd &output,
+ std::vector<bool> const &pkgset,
+ OpProgress *Progress)
+{
+ if (Progress != NULL)
+ Progress->SubProgress(Cache.Head().VersionCount, _("Send scenario to solver"));
+ unsigned long p = 0;
+ bool Okay = output.Failed() == false;
+ for (auto Pkg = Cache.PkgBegin(); Pkg.end() == false && likely(Okay); ++Pkg, ++p)
+ {
+ if (pkgset[Pkg->ID] == false)
+ continue;
+ for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() == false && likely(Okay); ++Ver)
+ {
+ if (SkipUnavailableVersions(Cache, Pkg, Ver))
+ continue;
+ Okay &= WriteScenarioVersion(output, Pkg, Ver);
+ Okay &= WriteScenarioEDSPVersion(Cache, output, Pkg, Ver);
+ Okay &= WriteScenarioLimitedDependency(output, Ver, pkgset, false);
+ WriteOkay(Okay, output, "\n");
+ if (Progress != NULL && p % 100 == 0)
+ Progress->Progress(p);
+ }
+ }
+ if (Progress != NULL)
+ Progress->Done();
+ return Okay;
+}
+ /*}}}*/
+// EDSP::WriteRequest - to the given file descriptor /*{{{*/
+bool EDSP::WriteRequest(pkgDepCache &Cache, FILE* output, bool const Upgrade,
+ bool const DistUpgrade, bool const AutoRemove,
+ OpProgress *Progress)
+{
+ if (Progress != NULL)
+ Progress->SubProgress(Cache.Head().PackageCount, _("Send request to solver"));
+ unsigned long p = 0;
+ string del, inst;
+ for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg, ++p)
+ {
+ if (Progress != NULL && p % 100 == 0)
+ Progress->Progress(p);
+ string* req;
+ pkgDepCache::StateCache &P = Cache[Pkg];
+ if (P.Delete() == true)
+ req = &del;
+ else if (P.NewInstall() == true || P.Upgrade() == true || P.ReInstall() == true ||
+ (P.Mode == pkgDepCache::ModeKeep && (P.iFlags & pkgDepCache::Protected) == pkgDepCache::Protected))
+ req = &inst;
+ else
+ continue;
+ req->append(" ").append(Pkg.FullName());
+ }
+ fprintf(output, "Request: EDSP 0.5\n");
+
+ const char *arch = _config->Find("APT::Architecture").c_str();
+ std::vector<string> archs = APT::Configuration::getArchitectures();
+ fprintf(output, "Architecture: %s\n", arch);
+ fprintf(output, "Architectures:");
+ for (std::vector<string>::const_iterator a = archs.begin(); a != archs.end(); ++a)
+ fprintf(output, " %s", a->c_str());
+ fprintf(output, "\n");
+
+ if (del.empty() == false)
+ fprintf(output, "Remove: %s\n", del.c_str()+1);
+ if (inst.empty() == false)
+ fprintf(output, "Install: %s\n", inst.c_str()+1);
+ if (Upgrade == true)
+ fprintf(output, "Upgrade: yes\n");
+ if (DistUpgrade == true)
+ fprintf(output, "Dist-Upgrade: yes\n");
+ if (AutoRemove == true)
+ fprintf(output, "Autoremove: yes\n");
+ auto const solver = _config->Find("APT::Solver", "internal");
+ fprintf(output, "Solver: %s\n", solver.c_str());
+ auto const solverconf = std::string("APT::Solver::") + solver + "::";
+ if (_config->FindB(solverconf + "Strict-Pinning", _config->FindB("APT::Solver::Strict-Pinning", true)) == false)
+ fprintf(output, "Strict-Pinning: no\n");
+ auto const solverpref = _config->Find(solverconf + "Preferences", _config->Find("APT::Solver::Preferences", ""));
+ if (solverpref.empty() == false)
+ fprintf(output, "Preferences: %s\n", solverpref.c_str());
+ fprintf(output, "\n");
+ return true;
+}
+bool EDSP::WriteRequest(pkgDepCache &Cache, FileFd &output,
+ unsigned int const flags,
+ OpProgress *Progress)
+{
+ if (Progress != NULL)
+ Progress->SubProgress(Cache.Head().PackageCount, _("Send request to solver"));
+ unsigned long p = 0;
+ string del, inst;
+ for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg, ++p)
+ {
+ if (Progress != NULL && p % 100 == 0)
+ Progress->Progress(p);
+ string* req;
+ pkgDepCache::StateCache &P = Cache[Pkg];
+ if (P.Delete() == true)
+ req = &del;
+ else if (P.NewInstall() == true || P.Upgrade() == true || P.ReInstall() == true ||
+ (P.Mode == pkgDepCache::ModeKeep && (P.iFlags & pkgDepCache::Protected) == pkgDepCache::Protected))
+ req = &inst;
+ else
+ continue;
+ req->append(" ").append(Pkg.FullName());
+ }
+ bool Okay = WriteOkay(output, "Request: EDSP 0.5\n");
+
+ const char *arch = _config->Find("APT::Architecture").c_str();
+ std::vector<string> archs = APT::Configuration::getArchitectures();
+ WriteOkay(Okay, output, "Architecture: ", arch, "\n",
+ "Architectures:");
+ for (std::vector<string>::const_iterator a = archs.begin(); a != archs.end(); ++a)
+ WriteOkay(Okay, output, " ", *a);
+ WriteOkay(Okay, output, "\n");
+
+ if (del.empty() == false)
+ WriteOkay(Okay, output, "Remove:", del, "\n");
+ if (inst.empty() == false)
+ WriteOkay(Okay, output, "Install:", inst, "\n");
+ if (flags & Request::AUTOREMOVE)
+ WriteOkay(Okay, output, "Autoremove: yes\n");
+ if (flags & Request::UPGRADE_ALL)
+ {
+ WriteOkay(Okay, output, "Upgrade-All: yes\n");
+ if (flags & (Request::FORBID_NEW_INSTALL | Request::FORBID_REMOVE))
+ WriteOkay(Okay, output, "Upgrade: yes\n");
+ else
+ WriteOkay(Okay, output, "Dist-Upgrade: yes\n");
+ }
+ if (flags & Request::FORBID_NEW_INSTALL)
+ WriteOkay(Okay, output, "Forbid-New-Install: yes\n");
+ if (flags & Request::FORBID_REMOVE)
+ WriteOkay(Okay, output, "Forbid-Remove: yes\n");
+ auto const solver = _config->Find("APT::Solver", "internal");
+ WriteOkay(Okay, output, "Solver: ", solver, "\n");
+ if (_config->FindB("APT::Solver::Strict-Pinning", true) == false)
+ WriteOkay(Okay, output, "Strict-Pinning: no\n");
+ string solverpref("APT::Solver::");
+ solverpref.append(solver).append("::Preferences");
+ if (_config->Exists(solverpref) == true)
+ WriteOkay(Okay, output, "Preferences: ", _config->Find(solverpref,""), "\n");
+ return WriteOkay(Okay, output, "\n");
+}
+ /*}}}*/
+// EDSP::ReadResponse - from the given file descriptor /*{{{*/
+bool EDSP::ReadResponse(int const input, pkgDepCache &Cache, OpProgress *Progress) {
+ /* We build an map id to mmap offset here
+ In theory we could use the offset as ID, but then VersionCount
+ couldn't be used to create other versionmappings anymore and it
+ would be too easy for a (buggy) solver to segfault APT… */
+ unsigned long long const VersionCount = Cache.Head().VersionCount;
+ unsigned long VerIdx[VersionCount];
+ for (pkgCache::PkgIterator P = Cache.PkgBegin(); P.end() == false; ++P) {
+ for (pkgCache::VerIterator V = P.VersionList(); V.end() == false; ++V)
+ VerIdx[V->ID] = V.Index();
+ Cache[P].Marked = true;
+ Cache[P].Garbage = false;
+ }
+
+ FileFd in;
+ in.OpenDescriptor(input, FileFd::ReadOnly, true);
+ pkgTagFile response(&in, 100);
+ pkgTagSection section;
+
+ std::set<decltype(Cache.PkgBegin()->ID)> seenOnce;
+ while (response.Step(section) == true) {
+ std::string type;
+ if (section.Exists("Install") == true)
+ type = "Install";
+ else if (section.Exists("Remove") == true)
+ type = "Remove";
+ else if (section.Exists("Progress") == true) {
+ if (Progress != NULL) {
+ string msg = section.FindS("Message");
+ if (msg.empty() == true)
+ msg = _("Prepare for receiving solution");
+ Progress->SubProgress(100, msg, section.FindI("Percentage", 0));
+ }
+ continue;
+ } else if (section.Exists("Error") == true) {
+ if (_error->PendingError()) {
+ if (Progress != nullptr)
+ Progress->Done();
+ Progress = nullptr;
+ _error->DumpErrors(std::cerr, GlobalError::DEBUG, false);
+ }
+ std::string msg = SubstVar(SubstVar(section.FindS("Message"), "\n .\n", "\n\n"), "\n ", "\n");
+ if (msg.empty() == true) {
+ msg = _("External solver failed without a proper error message");
+ _error->Error("%s", msg.c_str());
+ } else
+ _error->Error("External solver failed with: %s", msg.substr(0,msg.find('\n')).c_str());
+ if (Progress != nullptr)
+ Progress->Done();
+ std::cerr << "The solver encountered an error of type: " << section.FindS("Error") << std::endl;
+ std::cerr << "The following information might help you to understand what is wrong:" << std::endl;
+ std::cerr << msg << std::endl << std::endl;
+ return false;
+ } else if (section.Exists("Autoremove") == true)
+ type = "Autoremove";
+ else {
+ char const *Start, *End;
+ section.GetSection(Start, End);
+ _error->Warning("Encountered an unexpected section with %d fields: %s", section.Count(), std::string(Start, End).c_str());
+ continue;
+ }
+
+ size_t const id = section.FindULL(type.c_str(), VersionCount);
+ if (id == VersionCount) {
+ _error->Warning("Unable to parse %s request with id value '%s'!", type.c_str(), section.FindS(type.c_str()).c_str());
+ continue;
+ } else if (id > Cache.Head().VersionCount) {
+ _error->Warning("ID value '%s' in %s request stanza is to high to refer to a known version!", section.FindS(type.c_str()).c_str(), type.c_str());
+ continue;
+ }
+
+ pkgCache::VerIterator Ver(Cache.GetCache(), Cache.GetCache().VerP + VerIdx[id]);
+ auto const Pkg = Ver.ParentPkg();
+ if (type == "Autoremove") {
+ Cache[Pkg].Marked = false;
+ Cache[Pkg].Garbage = true;
+ } else if (seenOnce.emplace(Pkg->ID).second == false) {
+ _error->Warning("Ignoring %s stanza received for package %s which already had a previous stanza effecting it!", type.c_str(), Pkg.FullName(false).c_str());
+ } else if (type == "Install") {
+ if (Pkg.CurrentVer() == Ver) {
+ _error->Warning("Ignoring Install stanza received for version %s of package %s which is already installed!",
+ Ver.VerStr(), Pkg.FullName(false).c_str());
+ } else {
+ Cache.SetCandidateVersion(Ver);
+ Cache.MarkInstall(Pkg, false, 0, false);
+ }
+ } else if (type == "Remove") {
+ if (Pkg->CurrentVer == 0)
+ _error->Warning("Ignoring Remove stanza received for version %s of package %s which isn't installed!",
+ Ver.VerStr(), Pkg.FullName(false).c_str());
+ else if (Pkg.CurrentVer() != Ver)
+ _error->Warning("Ignoring Remove stanza received for version %s of package %s which isn't the installed version %s!",
+ Ver.VerStr(), Pkg.FullName(false).c_str(), Pkg.CurrentVer().VerStr());
+ else
+ Cache.MarkDelete(Ver.ParentPkg(), false);
+ }
+ }
+ return true;
+}
+ /*}}}*/
+// ReadLine - first line from the given file descriptor /*{{{*/
+// ---------------------------------------------------------------------
+/* Little helper method to read a complete line into a string. Similar to
+ fgets but we need to use the low-level read() here as otherwise the
+ listparser will be confused later on as mixing of fgets and read isn't
+ a supported action according to the manpages and results are undefined */
+static bool ReadLine(int const input, std::string &line) {
+ char one;
+ ssize_t data = 0;
+ line.erase();
+ line.reserve(100);
+ while ((data = read(input, &one, sizeof(one))) != -1) {
+ if (data != 1)
+ continue;
+ if (one == '\n')
+ return true;
+ if (one == '\r')
+ continue;
+ if (line.empty() == true && isblank(one) != 0)
+ continue;
+ line += one;
+ }
+ return false;
+}
+ /*}}}*/
+// StringToBool - convert yes/no to bool /*{{{*/
+// ---------------------------------------------------------------------
+/* we are not as lazy as we are in the global StringToBool as we really
+ only accept yes/no here */
+static bool localStringToBool(std::string answer, bool const defValue) {
+ std::transform(answer.begin(), answer.end(), answer.begin(), ::tolower);
+ if (answer == "yes")
+ return true;
+ else if (answer == "no")
+ return false;
+ else
+ _error->Warning("Value '%s' is not a boolean 'yes' or 'no'!", answer.c_str());
+ return defValue;
+}
+ /*}}}*/
+static bool LineStartsWithAndStrip(std::string &line, APT::StringView const with)/*{{{*/
+{
+ if (line.compare(0, with.size(), with.data()) != 0)
+ return false;
+ line = APT::String::Strip(line.substr(with.length()));
+ return true;
+}
+ /*}}}*/
+static bool ReadFlag(unsigned int &flags, std::string &line, APT::StringView const name, unsigned int const setflag)/*{{{*/
+{
+ if (LineStartsWithAndStrip(line, name) == false)
+ return false;
+ if (localStringToBool(line, false))
+ flags |= setflag;
+ else
+ flags &= ~setflag;
+ return true;
+}
+ /*}}}*/
+// EDSP::ReadRequest - first stanza from the given file descriptor /*{{{*/
+bool EDSP::ReadRequest(int const input, std::list<std::string> &install,
+ std::list<std::string> &remove, unsigned int &flags)
+{
+ install.clear();
+ remove.clear();
+ flags = 0;
+ std::string line;
+ while (ReadLine(input, line) == true)
+ {
+ // Skip empty lines before request
+ if (line.empty() == true)
+ continue;
+ // The first Tag must be a request, so search for it
+ if (LineStartsWithAndStrip(line, "Request:"))
+ continue;
+
+ while (ReadLine(input, line) == true)
+ {
+ // empty lines are the end of the request
+ if (line.empty() == true)
+ return true;
+
+ std::list<std::string> *request = NULL;
+ if (LineStartsWithAndStrip(line, "Install:"))
+ request = &install;
+ else if (LineStartsWithAndStrip(line, "Remove:"))
+ request = &remove;
+ else if (ReadFlag(flags, line, "Upgrade:", (Request::UPGRADE_ALL | Request::FORBID_REMOVE | Request::FORBID_NEW_INSTALL)) ||
+ ReadFlag(flags, line, "Dist-Upgrade:", Request::UPGRADE_ALL) ||
+ ReadFlag(flags, line, "Upgrade-All:", Request::UPGRADE_ALL) ||
+ ReadFlag(flags, line, "Forbid-New-Install:", Request::FORBID_NEW_INSTALL) ||
+ ReadFlag(flags, line, "Forbid-Remove:", Request::FORBID_REMOVE) ||
+ ReadFlag(flags, line, "Autoremove:", Request::AUTOREMOVE))
+ ;
+ else if (LineStartsWithAndStrip(line, "Architecture:"))
+ _config->Set("APT::Architecture", line);
+ else if (LineStartsWithAndStrip(line, "Architectures:"))
+ _config->Set("APT::Architectures", SubstVar(line, " ", ","));
+ else if (LineStartsWithAndStrip(line, "Solver:"))
+ ; // purely informational line
+ else
+ _error->Warning("Unknown line in EDSP Request stanza: %s", line.c_str());
+
+ if (request == NULL)
+ continue;
+ auto const pkgs = VectorizeString(line, ' ');
+ std::move(pkgs.begin(), pkgs.end(), std::back_inserter(*request));
+ }
+ }
+ return false;
+}
+bool EDSP::ReadRequest(int const input, std::list<std::string> &install,
+ std::list<std::string> &remove, bool &upgrade,
+ bool &distUpgrade, bool &autoRemove)
+{
+ unsigned int flags;
+ auto const ret = ReadRequest(input, install, remove, flags);
+ autoRemove = (flags & Request::AUTOREMOVE);
+ if (flags & Request::UPGRADE_ALL)
+ {
+ if (flags & (Request::FORBID_NEW_INSTALL | Request::FORBID_REMOVE))
+ {
+ upgrade = true;
+ distUpgrade = false;
+ } else {
+ upgrade = false;
+ distUpgrade = false;
+ }
+ }
+ else
+ {
+ upgrade = false;
+ distUpgrade = false;
+ }
+ return ret;
+}
+ /*}}}*/
+// EDSP::ApplyRequest - first stanza from the given file descriptor /*{{{*/
+bool EDSP::ApplyRequest(std::list<std::string> const &install,
+ std::list<std::string> const &remove,
+ pkgDepCache &Cache)
+{
+ for (std::list<std::string>::const_iterator i = install.begin();
+ i != install.end(); ++i) {
+ pkgCache::PkgIterator P = Cache.FindPkg(*i);
+ if (P.end() == true)
+ _error->Warning("Package %s is not known, so can't be installed", i->c_str());
+ else
+ Cache.MarkInstall(P, false);
+ }
+
+ for (std::list<std::string>::const_iterator i = remove.begin();
+ i != remove.end(); ++i) {
+ pkgCache::PkgIterator P = Cache.FindPkg(*i);
+ if (P.end() == true)
+ _error->Warning("Package %s is not known, so can't be installed", i->c_str());
+ else
+ Cache.MarkDelete(P);
+ }
+ return true;
+}
+ /*}}}*/
+// EDSP::WriteSolutionStanza - to the given file descriptor /*{{{*/
+bool EDSP::WriteSolution(pkgDepCache &Cache, FILE* output)
+{
+ bool const Debug = _config->FindB("Debug::EDSP::WriteSolution", false);
+ for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg)
+ {
+ if (Cache[Pkg].Delete() == true)
+ {
+ fprintf(output, "Remove: %d\n", _system->GetVersionMapping(Pkg.CurrentVer()->ID));
+ if (Debug == true)
+ fprintf(output, "Package: %s\nVersion: %s\n", Pkg.FullName().c_str(), Pkg.CurrentVer().VerStr());
+ }
+ else if (Cache[Pkg].NewInstall() == true || Cache[Pkg].Upgrade() == true)
+ {
+ pkgCache::VerIterator const CandVer = Cache.GetCandidateVersion(Pkg);
+ fprintf(output, "Install: %d\n", _system->GetVersionMapping(CandVer->ID));
+ if (Debug == true)
+ fprintf(output, "Package: %s\nVersion: %s\n", Pkg.FullName().c_str(), CandVer.VerStr());
+ }
+ else if (Cache[Pkg].Garbage == true)
+ {
+ fprintf(output, "Autoremove: %d\n", _system->GetVersionMapping(Pkg.CurrentVer()->ID));
+ if (Debug == true)
+ fprintf(output, "Package: %s\nVersion: %s\n", Pkg.FullName().c_str(), Pkg.CurrentVer().VerStr());
+ }
+ else
+ continue;
+ fprintf(output, "\n");
+ }
+
+ return true;
+}
+bool EDSP::WriteSolutionStanza(FileFd &output, char const * const Type, pkgCache::VerIterator const &Ver)
+{
+ bool Okay = output.Failed() == false;
+ WriteOkay(Okay, output, Type, ": ", _system->GetVersionMapping(Ver->ID));
+ if (_config->FindB("Debug::EDSP::WriteSolution", false) == true)
+ WriteOkay(Okay, output, "\nPackage: ", Ver.ParentPkg().FullName(), "\nVersion: ", Ver.VerStr());
+ return WriteOkay(Okay, output, "\n\n");
+}
+ /*}}}*/
+// EDSP::WriteProgess - pulse to the given file descriptor /*{{{*/
+bool EDSP::WriteProgress(unsigned short const percent, const char* const message, FILE* output) {
+ fprintf(output, "Progress: %s\n", TimeRFC1123(time(NULL), true).c_str());
+ fprintf(output, "Percentage: %d\n", percent);
+ fprintf(output, "Message: %s\n\n", message);
+ fflush(output);
+ return true;
+}
+bool EDSP::WriteProgress(unsigned short const percent, const char* const message, FileFd &output) {
+ return WriteOkay(output, "Progress: ", TimeRFC1123(time(NULL), true), "\n",
+ "Percentage: ", percent, "\n",
+ "Message: ", message, "\n\n") && output.Flush();
+}
+ /*}}}*/
+// EDSP::WriteError - format an error message to be send to file descriptor /*{{{*/
+static std::string formatMessage(std::string const &msg)
+{
+ return SubstVar(SubstVar(APT::String::Strip(msg), "\n\n", "\n.\n"), "\n", "\n ");
+}
+bool EDSP::WriteError(char const * const uuid, std::string const &message, FILE* output) {
+ fprintf(output, "Error: %s\n", uuid);
+ fprintf(output, "Message: %s\n\n", formatMessage(message).c_str());
+ return true;
+}
+bool EDSP::WriteError(char const * const uuid, std::string const &message, FileFd &output) {
+ return WriteOkay(output, "Error: ", uuid, "\n",
+ "Message: ", formatMessage(message),
+ "\n\n");
+}
+ /*}}}*/
+static std::string findExecutable(std::vector<std::string> const &dirs, char const * const binary) {/*{{{*/
+ for (auto && dir : dirs) {
+ std::string const file = flCombine(dir, binary);
+ if (RealFileExists(file) == true)
+ return file;
+ }
+ return "";
+}
+ /*}}}*/
+static pid_t ExecuteExternal(char const* const type, char const * const binary, char const * const configdir, int * const solver_in, int * const solver_out) {/*{{{*/
+ auto const solverDirs = _config->FindVector(configdir);
+ auto const file = findExecutable(solverDirs, binary);
+ std::string dumper;
+ {
+ dumper = findExecutable(solverDirs, "apt-dump-solver");
+ if (dumper.empty())
+ dumper = findExecutable(solverDirs, "dump");
+ }
+
+ if (file.empty() == true)
+ {
+ _error->Error("Can't call external %s '%s' as it is not in a configured directory!", type, binary);
+ return 0;
+ }
+ int external[4] = {-1, -1, -1, -1};
+ if (pipe(external) != 0 || pipe(external + 2) != 0)
+ {
+ _error->Errno("Resolve", "Can't create needed IPC pipes for EDSP");
+ return 0;
+ }
+ for (int i = 0; i < 4; ++i)
+ SetCloseExec(external[i], true);
+
+ pid_t Solver = ExecFork();
+ if (Solver == 0) {
+ dup2(external[0], STDIN_FILENO);
+ dup2(external[3], STDOUT_FILENO);
+ auto const dumpfile = _config->FindFile((std::string("Dir::Log::") + type).c_str());
+ auto const dumpdir = flNotFile(dumpfile);
+ auto const runasuser = _config->Find(std::string("APT::") + type + "::" + binary + "::RunAsUser",
+ _config->Find(std::string("APT::") + type + "::RunAsUser",
+ _config->Find("APT::Sandbox::User")));
+ if (dumper.empty() || dumpfile.empty() || dumper == file || CreateAPTDirectoryIfNeeded(dumpdir, dumpdir) == false)
+ {
+ _config->Set("APT::Sandbox::User", runasuser);
+ DropPrivileges();
+ char const * const calling[] = { file.c_str(), nullptr };
+ execv(calling[0], const_cast<char**>(calling));
+ }
+ else
+ {
+ char const * const calling[] = { dumper.c_str(), "--user", runasuser.c_str(), dumpfile.c_str(), file.c_str(), nullptr };
+ execv(calling[0], const_cast<char**>(calling));
+ }
+ std::cerr << "Failed to execute " << type << " '" << binary << "'!" << std::endl;
+ _exit(100);
+ }
+ close(external[0]);
+ close(external[3]);
+
+ if (WaitFd(external[1], true, 5) == false)
+ {
+ _error->Errno("Resolve", "Timed out while Waiting on availability of %s stdin", type);
+ return 0;
+ }
+
+ *solver_in = external[1];
+ *solver_out = external[2];
+ return Solver;
+}
+ /*}}}*/
+// EDSP::ExecuteSolver - fork requested solver and setup ipc pipes {{{*/
+pid_t EDSP::ExecuteSolver(const char* const solver, int * const solver_in, int * const solver_out, bool) {
+ return ExecuteExternal("solver", solver, "Dir::Bin::Solvers", solver_in, solver_out);
+}
+bool EDSP::ExecuteSolver(const char* const solver, int *solver_in, int *solver_out) {
+ if (ExecuteSolver(solver, solver_in, solver_out, true) == 0)
+ return false;
+ return true;
+}
+ /*}}}*/
+static bool CreateDumpFile(char const * const id, char const * const type, FileFd &output)/*{{{*/
+{
+ auto const dumpfile = _config->FindFile((std::string("Dir::Log::") + type).c_str());
+ if (dumpfile.empty())
+ return false;
+ auto const dumpdir = flNotFile(dumpfile);
+ _error->PushToStack();
+ bool errored_out = CreateAPTDirectoryIfNeeded(dumpdir, dumpdir) == false ||
+ output.Open(dumpfile, FileFd::WriteOnly | FileFd::Exclusive | FileFd::Create, FileFd::Extension, 0644) == false;
+ std::vector<std::string> downgrademsgs;
+ while (_error->empty() == false)
+ {
+ std::string msg;
+ _error->PopMessage(msg);
+ downgrademsgs.emplace_back(std::move(msg));
+ }
+ _error->RevertToStack();
+ for (auto && msg : downgrademsgs)
+ _error->Warning("%s", msg.c_str());
+ if (errored_out)
+ return _error->WarningE(id, _("Could not open file '%s'"), dumpfile.c_str());
+ return true;
+}
+ /*}}}*/
+// EDSP::ResolveExternal - resolve problems by asking external for help {{{*/
+bool EDSP::ResolveExternal(const char* const solver, pkgDepCache &Cache,
+ unsigned int const flags, OpProgress *Progress) {
+ if (strcmp(solver, "internal") == 0)
+ {
+ FileFd output;
+ bool Okay = CreateDumpFile("EDSP::Resolve", "solver", output);
+ Okay &= EDSP::WriteRequest(Cache, output, flags, nullptr);
+ return Okay && EDSP::WriteScenario(Cache, output, nullptr);
+ }
+ _error->PushToStack();
+ int solver_in, solver_out;
+ pid_t const solver_pid = ExecuteSolver(solver, &solver_in, &solver_out, true);
+ if (solver_pid == 0)
+ return false;
+
+ FileFd output;
+ if (output.OpenDescriptor(solver_in, FileFd::WriteOnly | FileFd::BufferedWrite, true) == false)
+ return _error->Errno("ResolveExternal", "Opening solver %s stdin on fd %d for writing failed", solver, solver_in);
+
+ bool Okay = output.Failed() == false;
+ if (Okay && Progress != NULL)
+ Progress->OverallProgress(0, 100, 5, _("Execute external solver"));
+ Okay &= EDSP::WriteRequest(Cache, output, flags, Progress);
+ if (Okay && Progress != NULL)
+ Progress->OverallProgress(5, 100, 20, _("Execute external solver"));
+ Okay &= EDSP::WriteScenario(Cache, output, Progress);
+ output.Close();
+
+ if (Okay && Progress != NULL)
+ Progress->OverallProgress(25, 100, 75, _("Execute external solver"));
+ bool const ret = EDSP::ReadResponse(solver_out, Cache, Progress);
+ _error->MergeWithStack();
+ if (ExecWait(solver_pid, solver))
+ return ret;
+ return false;
+}
+bool EDSP::ResolveExternal(const char* const solver, pkgDepCache &Cache,
+ bool const upgrade, bool const distUpgrade,
+ bool const autoRemove, OpProgress *Progress) {
+ unsigned int flags = 0;
+ if (autoRemove)
+ flags |= Request::AUTOREMOVE;
+ if (upgrade)
+ flags |= Request::UPGRADE_ALL | Request::FORBID_REMOVE | Request::FORBID_NEW_INSTALL;
+ if (distUpgrade)
+ flags |= Request::UPGRADE_ALL;
+ return ResolveExternal(solver, Cache, flags, Progress);
+}
+ /*}}}*/
+
+bool EIPP::OrderInstall(char const * const solver, pkgPackageManager * const PM, /*{{{*/
+ unsigned int const flags, OpProgress * const Progress)
+{
+ if (strcmp(solver, "internal") == 0)
+ {
+ FileFd output;
+ _error->PushToStack();
+ bool Okay = CreateDumpFile("EIPP::OrderInstall", "planner", output);
+ if (Okay == false && dynamic_cast<pkgSimulate*>(PM) != nullptr)
+ {
+ _error->RevertToStack();
+ return false;
+ }
+ _error->MergeWithStack();
+ Okay &= EIPP::WriteRequest(PM->Cache, output, flags, nullptr);
+ return Okay && EIPP::WriteScenario(PM->Cache, output, nullptr);
+ }
+ _error->PushToStack();
+ int solver_in, solver_out;
+ pid_t const solver_pid = ExecuteExternal("planner", solver, "Dir::Bin::Planners", &solver_in, &solver_out);
+ if (solver_pid == 0)
+ return false;
+
+ FileFd output;
+ if (output.OpenDescriptor(solver_in, FileFd::WriteOnly | FileFd::BufferedWrite, true) == false)
+ return _error->Errno("EIPP::OrderInstall", "Opening planner %s stdin on fd %d for writing failed", solver, solver_in);
+
+ bool Okay = output.Failed() == false;
+ if (Okay && Progress != NULL)
+ Progress->OverallProgress(0, 100, 5, _("Execute external planner"));
+ Okay &= EIPP::WriteRequest(PM->Cache, output, flags, Progress);
+ if (Okay && Progress != NULL)
+ Progress->OverallProgress(5, 100, 20, _("Execute external planner"));
+ Okay &= EIPP::WriteScenario(PM->Cache, output, Progress);
+ output.Close();
+
+ if (Okay)
+ {
+ if (Progress != nullptr)
+ Progress->OverallProgress(25, 100, 75, _("Execute external planner"));
+
+ // we don't tell the external planners about boring things
+ for (auto Pkg = PM->Cache.PkgBegin(); Pkg.end() == false; ++Pkg)
+ {
+ if (Pkg->CurrentState == pkgCache::State::ConfigFiles && PM->Cache[Pkg].Purge() == true)
+ PM->Remove(Pkg, true);
+ }
+ }
+ bool const ret = EIPP::ReadResponse(solver_out, PM, Progress);
+ _error->MergeWithStack();
+ if (ExecWait(solver_pid, solver))
+ return ret;
+ return false;
+}
+ /*}}}*/
+bool EIPP::WriteRequest(pkgDepCache &Cache, FileFd &output, /*{{{*/
+ unsigned int const flags,
+ OpProgress * const Progress)
+{
+ if (Progress != NULL)
+ Progress->SubProgress(Cache.Head().PackageCount, _("Send request to planner"));
+ unsigned long p = 0;
+ string del, inst, reinst;
+ for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg, ++p)
+ {
+ if (Progress != NULL && p % 100 == 0)
+ Progress->Progress(p);
+ string* req;
+ pkgDepCache::StateCache &P = Cache[Pkg];
+ if (P.Purge() == true && Pkg->CurrentState == pkgCache::State::ConfigFiles)
+ continue;
+ if (P.Delete() == true)
+ req = &del;
+ else if (P.NewInstall() == true || P.Upgrade() == true || P.Downgrade() == true)
+ req = &inst;
+ else if (P.ReInstall() == true)
+ req = &reinst;
+ else
+ continue;
+ req->append(" ").append(Pkg.FullName());
+ }
+ bool Okay = WriteOkay(output, "Request: EIPP 0.1\n");
+
+ const char *arch = _config->Find("APT::Architecture").c_str();
+ std::vector<string> archs = APT::Configuration::getArchitectures();
+ WriteOkay(Okay, output, "Architecture: ", arch, "\n",
+ "Architectures:");
+ for (std::vector<string>::const_iterator a = archs.begin(); a != archs.end(); ++a)
+ WriteOkay(Okay, output, " ", *a);
+ WriteOkay(Okay, output, "\n");
+
+ if (del.empty() == false)
+ WriteOkay(Okay, output, "Remove:", del, "\n");
+ if (inst.empty() == false)
+ WriteOkay(Okay, output, "Install:", inst, "\n");
+ if (reinst.empty() == false)
+ WriteOkay(Okay, output, "ReInstall:", reinst, "\n");
+ WriteOkay(Okay, output, "Planner: ", _config->Find("APT::Planner", "internal"), "\n");
+ if ((flags & Request::IMMEDIATE_CONFIGURATION_ALL) != 0)
+ WriteOkay(Okay, output, "Immediate-Configuration: yes\n");
+ else if ((flags & Request::NO_IMMEDIATE_CONFIGURATION) != 0)
+ WriteOkay(Okay, output, "Immediate-Configuration: no\n");
+ else if ((flags & Request::ALLOW_TEMPORARY_REMOVE_OF_ESSENTIALS) != 0)
+ WriteOkay(Okay, output, "Allow-Temporary-Remove-of-Essentials: yes\n");
+ return WriteOkay(Okay, output, "\n");
+}
+ /*}}}*/
+static bool WriteScenarioEIPPVersion(pkgDepCache &, FileFd &output, pkgCache::PkgIterator const &Pkg,/*{{{*/
+ pkgCache::VerIterator const &Ver)
+{
+ bool Okay = true;
+ if (Pkg.CurrentVer() == Ver)
+ switch (Pkg->CurrentState)
+ {
+ case pkgCache::State::NotInstalled: WriteOkay(Okay, output, "\nStatus: not-installed"); break;
+ case pkgCache::State::ConfigFiles: WriteOkay(Okay, output, "\nStatus: config-files"); break;
+ case pkgCache::State::HalfInstalled: WriteOkay(Okay, output, "\nStatus: half-installed"); break;
+ case pkgCache::State::UnPacked: WriteOkay(Okay, output, "\nStatus: unpacked"); break;
+ case pkgCache::State::HalfConfigured: WriteOkay(Okay, output, "\nStatus: half-configured"); break;
+ case pkgCache::State::TriggersAwaited: WriteOkay(Okay, output, "\nStatus: triggers-awaited"); break;
+ case pkgCache::State::TriggersPending: WriteOkay(Okay, output, "\nStatus: triggers-pending"); break;
+ case pkgCache::State::Installed: WriteOkay(Okay, output, "\nStatus: installed"); break;
+ }
+ return Okay;
+}
+ /*}}}*/
+// EIPP::WriteScenario - to the given file descriptor /*{{{*/
+template<typename forVersion> void forAllInterestingVersions(pkgDepCache &Cache, pkgCache::PkgIterator const &Pkg, forVersion const &func)
+{
+ if (Pkg->CurrentState == pkgCache::State::NotInstalled)
+ {
+ auto P = Cache[Pkg];
+ if (P.Install() == false)
+ return;
+ func(Pkg, P.InstVerIter(Cache));
+ }
+ else
+ {
+ if (Pkg->CurrentVer != 0)
+ func(Pkg, Pkg.CurrentVer());
+ auto P = Cache[Pkg];
+ auto const V = P.InstVerIter(Cache);
+ if (P.Delete() == false && Pkg.CurrentVer() != V)
+ func(Pkg, V);
+ }
+}
+
+bool EIPP::WriteScenario(pkgDepCache &Cache, FileFd &output, OpProgress * const Progress)
+{
+ if (Progress != NULL)
+ Progress->SubProgress(Cache.Head().PackageCount, _("Send scenario to planner"));
+ unsigned long p = 0;
+ bool Okay = output.Failed() == false;
+ std::vector<std::string> archs = APT::Configuration::getArchitectures();
+ std::vector<bool> pkgset(Cache.Head().PackageCount, false);
+ auto const MarkVersion = [&](pkgCache::PkgIterator const &Pkg, pkgCache::VerIterator const &Ver) {
+ pkgset[Pkg->ID] = true;
+ for (auto D = Ver.DependsList(); D.end() == false; ++D)
+ {
+ if (D.IsCritical() == false)
+ continue;
+ auto const P = D.TargetPkg();
+ for (auto Prv = P.ProvidesList(); Prv.end() == false; ++Prv)
+ {
+ auto const V = Prv.OwnerVer();
+ auto const PV = V.ParentPkg();
+ if (V == PV.CurrentVer() || V == Cache[PV].InstVerIter(Cache))
+ pkgset[PV->ID] = true;
+ }
+ pkgset[P->ID] = true;
+ if (strcmp(P.Arch(), "any") == 0)
+ {
+ APT::StringView const pkgname(P.Name());
+ auto const idxColon = pkgname.find(':');
+ if (idxColon != APT::StringView::npos)
+ {
+ pkgCache::PkgIterator PA;
+ if (pkgname.substr(idxColon + 1) == "any")
+ {
+ auto const GA = Cache.FindGrp(pkgname.substr(0, idxColon).to_string());
+ for (auto PA = GA.PackageList(); PA.end() == false; PA = GA.NextPkg(PA))
+ {
+ pkgset[PA->ID] = true;
+ }
+ }
+ else
+ {
+ auto const PA = Cache.FindPkg(pkgname.to_string());
+ if (PA.end() == false)
+ pkgset[PA->ID] = true;
+ }
+ }
+ }
+ else
+ {
+ auto const PA = Cache.FindPkg(P.FullName(false), "any");
+ if (PA.end() == false)
+ pkgset[PA->ID] = true;
+ }
+ }
+ };
+ for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg)
+ forAllInterestingVersions(Cache, Pkg, MarkVersion);
+ auto const WriteVersion = [&](pkgCache::PkgIterator const &Pkg, pkgCache::VerIterator const &Ver) {
+ Okay &= WriteScenarioVersion(output, Pkg, Ver);
+ Okay &= WriteScenarioEIPPVersion(Cache, output, Pkg, Ver);
+ Okay &= WriteScenarioLimitedDependency(output, Ver, pkgset, true);
+ WriteOkay(Okay, output, "\n");
+ if (Progress != NULL && p % 100 == 0)
+ Progress->Progress(p);
+ };
+ for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false && likely(Okay); ++Pkg, ++p)
+ {
+ if (pkgset[Pkg->ID] == false || Pkg->VersionList == 0)
+ continue;
+ forAllInterestingVersions(Cache, Pkg, WriteVersion);
+ }
+ return Okay;
+}
+ /*}}}*/
+// EIPP::ReadResponse - from the given file descriptor /*{{{*/
+bool EIPP::ReadResponse(int const input, pkgPackageManager * const PM, OpProgress *Progress) {
+ /* We build an map id to mmap offset here
+ In theory we could use the offset as ID, but then VersionCount
+ couldn't be used to create other versionmappings anymore and it
+ would be too easy for a (buggy) solver to segfault APT… */
+ unsigned long long const VersionCount = PM->Cache.Head().VersionCount;
+ unsigned long VerIdx[VersionCount];
+ for (pkgCache::PkgIterator P = PM->Cache.PkgBegin(); P.end() == false; ++P) {
+ for (pkgCache::VerIterator V = P.VersionList(); V.end() == false; ++V)
+ VerIdx[V->ID] = V.Index();
+ }
+
+ FileFd in;
+ in.OpenDescriptor(input, FileFd::ReadOnly);
+ pkgTagFile response(&in, 100);
+ pkgTagSection section;
+
+ while (response.Step(section) == true) {
+ char const * type = nullptr;
+ if (section.Exists("Progress") == true) {
+ if (Progress != NULL) {
+ string msg = section.FindS("Message");
+ if (msg.empty() == true)
+ msg = _("Prepare for receiving solution");
+ Progress->SubProgress(100, msg, section.FindI("Percentage", 0));
+ }
+ continue;
+ } else if (section.Exists("Error") == true) {
+ if (_error->PendingError()) {
+ if (Progress != nullptr)
+ Progress->Done();
+ Progress = nullptr;
+ _error->DumpErrors(std::cerr, GlobalError::DEBUG, false);
+ }
+ std::string msg = SubstVar(SubstVar(section.FindS("Message"), "\n .\n", "\n\n"), "\n ", "\n");
+ if (msg.empty() == true) {
+ msg = _("External planner failed without a proper error message");
+ _error->Error("%s", msg.c_str());
+ } else
+ _error->Error("External planner failed with: %s", msg.substr(0,msg.find('\n')).c_str());
+ if (Progress != nullptr)
+ Progress->Done();
+ std::cerr << "The planner encountered an error of type: " << section.FindS("Error") << std::endl;
+ std::cerr << "The following information might help you to understand what is wrong:" << std::endl;
+ std::cerr << msg << std::endl << std::endl;
+ return false;
+ } else if (section.Exists("Unpack") == true)
+ type = "Unpack";
+ else if (section.Exists("Configure") == true)
+ type = "Configure";
+ else if (section.Exists("Remove") == true)
+ type = "Remove";
+ else {
+ char const *Start, *End;
+ section.GetSection(Start, End);
+ _error->Warning("Encountered an unexpected section with %d fields: %s", section.Count(), std::string(Start, End).c_str());
+ continue;
+ }
+
+ if (type == nullptr)
+ continue;
+ size_t const id = section.FindULL(type, VersionCount);
+ if (id == VersionCount) {
+ _error->Warning("Unable to parse %s request with id value '%s'!", type, section.FindS(type).c_str());
+ continue;
+ } else if (id > PM->Cache.Head().VersionCount) {
+ _error->Warning("ID value '%s' in %s request stanza is to high to refer to a known version!", section.FindS(type).c_str(), type);
+ continue;
+ }
+
+ pkgCache::VerIterator Ver(PM->Cache.GetCache(), PM->Cache.GetCache().VerP + VerIdx[id]);
+ auto const Pkg = Ver.ParentPkg();
+ if (strcmp(type, "Unpack") == 0)
+ PM->Install(Pkg, PM->FileNames[Pkg->ID]);
+ else if (strcmp(type, "Configure") == 0)
+ PM->Configure(Pkg);
+ else if (strcmp(type, "Remove") == 0)
+ PM->Remove(Pkg, PM->Cache[Pkg].Purge());
+ }
+ return in.Failed() == false;
+}
+ /*}}}*/
+bool EIPP::ReadRequest(int const input, std::list<std::pair<std::string,PKG_ACTION>> &actions,/*{{{*/
+ unsigned int &flags)
+{
+ actions.clear();
+ flags = 0;
+ std::string line;
+ while (ReadLine(input, line) == true)
+ {
+ // Skip empty lines before request
+ if (line.empty() == true)
+ continue;
+ // The first Tag must be a request, so search for it
+ if (line.compare(0, 8, "Request:") != 0)
+ continue;
+
+ while (ReadLine(input, line) == true)
+ {
+ // empty lines are the end of the request
+ if (line.empty() == true)
+ return true;
+
+ PKG_ACTION pkgact = PKG_ACTION::NOOP;
+ if (LineStartsWithAndStrip(line, "Install:"))
+ pkgact = PKG_ACTION::INSTALL;
+ else if (LineStartsWithAndStrip(line, "ReInstall:"))
+ pkgact = PKG_ACTION::REINSTALL;
+ else if (LineStartsWithAndStrip(line, "Remove:"))
+ pkgact = PKG_ACTION::REMOVE;
+ else if (LineStartsWithAndStrip(line, "Architecture:"))
+ _config->Set("APT::Architecture", line);
+ else if (LineStartsWithAndStrip(line, "Architectures:"))
+ _config->Set("APT::Architectures", SubstVar(line, " ", ","));
+ else if (LineStartsWithAndStrip(line, "Planner:"))
+ ; // purely informational line
+ else if (LineStartsWithAndStrip(line, "Immediate-Configuration:"))
+ {
+ if (localStringToBool(line, true))
+ flags |= Request::IMMEDIATE_CONFIGURATION_ALL;
+ else
+ flags |= Request::NO_IMMEDIATE_CONFIGURATION;
+ }
+ else if (ReadFlag(flags, line, "Allow-Temporary-Remove-of-Essentials:", Request::ALLOW_TEMPORARY_REMOVE_OF_ESSENTIALS))
+ ;
+ else
+ _error->Warning("Unknown line in EIPP Request stanza: %s", line.c_str());
+
+ if (pkgact == PKG_ACTION::NOOP)
+ continue;
+ for (auto && p: VectorizeString(line, ' '))
+ actions.emplace_back(std::move(p), pkgact);
+ }
+ }
+ return false;
+}
+ /*}}}*/
+bool EIPP::ApplyRequest(std::list<std::pair<std::string,PKG_ACTION>> &actions,/*{{{*/
+ pkgDepCache &Cache)
+{
+ for (auto Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg)
+ {
+ short versions = 0;
+ for (auto Ver = Pkg.VersionList(); Ver.end() == false; ++Ver)
+ {
+ ++versions;
+ if (Pkg.CurrentVer() == Ver)
+ continue;
+ Cache.SetCandidateVersion(Ver);
+ }
+ if (unlikely(versions > 2))
+ _error->Warning("Package %s has %d versions, but should have at most 2!", Pkg.FullName().c_str(), versions);
+ }
+ for (auto && a: actions)
+ {
+ pkgCache::PkgIterator P = Cache.FindPkg(a.first);
+ if (P.end() == true)
+ {
+ _error->Warning("Package %s is not known, so can't be acted on", a.first.c_str());
+ continue;
+ }
+ switch (a.second)
+ {
+ case PKG_ACTION::NOOP:
+ _error->Warning("Package %s has NOOP as action?!?", a.first.c_str());
+ break;
+ case PKG_ACTION::INSTALL:
+ Cache.MarkInstall(P, false);
+ break;
+ case PKG_ACTION::REINSTALL:
+ Cache.MarkInstall(P, false);
+ Cache.SetReInstall(P, true);
+ break;
+ case PKG_ACTION::REMOVE:
+ Cache.MarkDelete(P);
+ break;
+ }
+ }
+ return true;
+}
+ /*}}}*/
diff --git a/apt-pkg/edsp.h b/apt-pkg/edsp.h
new file mode 100644
index 000000000..2c9082ed3
--- /dev/null
+++ b/apt-pkg/edsp.h
@@ -0,0 +1,276 @@
+// -*- mode: cpp; mode: fold -*-
+/** Description \file edsp.h {{{
+ ######################################################################
+ Set of methods to help writing and reading everything needed for EDSP
+ with the notable exception of reading a scenario for conversion into
+ a Cache as this is handled by edsp interface for listparser and friends
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_EDSP_H
+#define PKGLIB_EDSP_H
+
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/macros.h>
+
+#include <stdio.h>
+
+#include <list>
+#include <string>
+#include <vector>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/progress.h>
+#endif
+
+class pkgDepCache;
+class OpProgress;
+
+namespace EDSP /*{{{*/
+{
+ namespace Request
+ {
+ enum Flags
+ {
+ AUTOREMOVE = (1 << 0), /*!< removal of unneeded packages should be performed */
+ UPGRADE_ALL = (1 << 1), /*!< upgrade all installed packages, like 'apt-get full-upgrade' without forbid flags */
+ FORBID_NEW_INSTALL = (1 << 2), /*!< forbid the resolver to install new packages */
+ FORBID_REMOVE = (1 << 3), /*!< forbid the resolver to remove packages */
+ };
+ }
+ /** \brief creates the EDSP request stanza
+ *
+ * In the EDSP protocol the first thing send to the resolver is a stanza
+ * encoding the request. This method will write this stanza by looking at
+ * the given Cache and requests the installation of all packages which were
+ * marked for installation in it (equally for remove).
+ *
+ * \param Cache in which the request is encoded
+ * \param output is written to this "file"
+ * \param flags effecting the request documented in #EDSP::Request::Flags
+ * \param Progress is an instance to report progress to
+ *
+ * \return true if request was composed successfully, otherwise false
+ */
+ bool WriteRequest(pkgDepCache &Cache, FileFd &output,
+ unsigned int const flags = 0,
+ OpProgress *Progress = NULL);
+ bool WriteRequest(pkgDepCache &Cache, FILE* output,
+ bool const upgrade = false,
+ bool const distUpgrade = false,
+ bool const autoRemove = false,
+ OpProgress *Progress = NULL) APT_DEPRECATED_MSG("Use FileFd-based interface instead");
+
+ /** \brief creates the scenario representing the package universe
+ *
+ * After the request all known information about a package are send
+ * to the solver. The output looks similar to a Packages or status file
+ *
+ * All packages and version included in this Cache are send, even if
+ * it doesn't make sense from an APT resolver point of view like versions
+ * with a negative pin to enable the solver to propose even that as a
+ * solution or at least to be able to give a hint what can be done to
+ * satisfy a request.
+ *
+ * \param Cache is the known package universe
+ * \param output is written to this "file"
+ * \param Progress is an instance to report progress to
+ *
+ * \return true if universe was composed successfully, otherwise false
+ */
+ bool WriteScenario(pkgDepCache &Cache, FileFd &output, OpProgress *Progress = NULL);
+ bool WriteScenario(pkgDepCache &Cache, FILE* output, OpProgress *Progress = NULL) APT_DEPRECATED_MSG("Use FileFd-based interface instead");
+
+ /** \brief creates a limited scenario representing the package universe
+ *
+ * This method works similar to #WriteScenario as it works in the same
+ * way but doesn't send the complete universe to the solver but only
+ * packages included in the pkgset which will have only dependencies
+ * on packages which are in the given set. All other dependencies will
+ * be removed, so that this method can be used to create testcases
+ *
+ * \param Cache is the known package universe
+ * \param output is written to this "file"
+ * \param pkgset is a set of packages the universe should be limited to
+ * \param Progress is an instance to report progress to
+ *
+ * \return true if universe was composed successfully, otherwise false
+ */
+ bool WriteLimitedScenario(pkgDepCache &Cache, FileFd &output,
+ std::vector<bool> const &pkgset,
+ OpProgress *Progress = NULL);
+ bool WriteLimitedScenario(pkgDepCache &Cache, FILE* output,
+ APT::PackageSet const &pkgset,
+ OpProgress *Progress = NULL) APT_DEPRECATED_MSG("Use FileFd-based interface instead");
+
+ /** \brief waits and acts on the information returned from the solver
+ *
+ * This method takes care of interpreting whatever the solver sends
+ * through the standard output like a solution, progress or an error.
+ * The main thread should hand his control over to this method to
+ * wait for the solver to finish the given task. The file descriptor
+ * used as input is completely consumed and closed by the method.
+ *
+ * \param input file descriptor with the response from the solver
+ * \param Cache the solution should be applied on if any
+ * \param Progress is an instance to report progress to
+ *
+ * \return true if a solution is found and applied correctly, otherwise false
+ */
+ bool ReadResponse(int const input, pkgDepCache &Cache, OpProgress *Progress = NULL);
+
+ /** \brief search and read the request stanza for action later
+ *
+ * This method while ignore the input up to the point it finds the
+ * Request: line as an indicator for the Request stanza.
+ * The request is stored in the parameters install and remove then,
+ * as the cache isn't build yet as the scenario follows the request.
+ *
+ * \param input file descriptor with the edsp input for the solver
+ * \param[out] install is a list which gets populated with requested installs
+ * \param[out] remove is a list which gets populated with requested removals
+ * \param[out] upgrade is true if it is a request like apt-get upgrade
+ * \param[out] distUpgrade is true if it is a request like apt-get dist-upgrade
+ * \param[out] autoRemove is true if removal of unneeded packages should be performed
+ *
+ * \return true if the request could be found and worked on, otherwise false
+ */
+ bool ReadRequest(int const input, std::list<std::string> &install,
+ std::list<std::string> &remove, unsigned int &flags);
+ APT_DEPRECATED_MSG("use the flag-based version instead") bool ReadRequest(int const input, std::list<std::string> &install,
+ std::list<std::string> &remove, bool &upgrade,
+ bool &distUpgrade, bool &autoRemove);
+
+ /** \brief takes the request lists and applies it on the cache
+ *
+ * The lists as created by #ReadRequest will be used to find the
+ * packages in question and mark them for install/remove.
+ * No solving is done and no auto-install/-remove.
+ *
+ * \param install is a list of packages to mark for installation
+ * \param remove is a list of packages to mark for removal
+ * \param Cache is there the markers should be set
+ *
+ * \return false if the request couldn't be applied, true otherwise
+ */
+ bool ApplyRequest(std::list<std::string> const &install,
+ std::list<std::string> const &remove,
+ pkgDepCache &Cache);
+
+ /** \brief formats a solution stanza for the given version
+ *
+ * EDSP uses a simple format for reporting solutions:
+ * A single required field name with an ID as value.
+ * Additional fields might appear as debug aids.
+ *
+ * \param output to write the stanza forming the solution to
+ * \param Type of the stanza, used as field name
+ * \param Ver this stanza applies to
+ *
+ * \return true if stanza could be written, otherwise false
+ */
+ bool WriteSolutionStanza(FileFd &output, char const * const Type, pkgCache::VerIterator const &Ver);
+ bool WriteSolution(pkgDepCache &Cache, FILE* output) APT_DEPRECATED_MSG("Use FileFd-based single-stanza interface instead");
+
+ /** \brief sends a progress report
+ *
+ * \param percent of the solving completed
+ * \param message the solver wants the user to see
+ * \param output the front-end listens for progress report
+ */
+ bool WriteProgress(unsigned short const percent, const char* const message, FileFd &output);
+ bool WriteProgress(unsigned short const percent, const char* const message, FILE* output) APT_DEPRECATED_MSG("Use FileFd-based interface instead");
+
+ /** \brief sends an error report
+ *
+ * Solvers are expected to execute successfully even if
+ * they were unable to calculate a solution for a given task.
+ * Obviously they can't send a solution through, so this
+ * methods deals with formatting an error message correctly
+ * so that the front-ends can receive and display it.
+ *
+ * The first line of the message should be a short description
+ * of the error so it can be used for dialog titles or alike
+ *
+ * \param uuid of this error message
+ * \param message is free form text to describe the error
+ * \param output the front-end listens for error messages
+ */
+ bool WriteError(char const * const uuid, std::string const &message, FileFd &output);
+ bool WriteError(char const * const uuid, std::string const &message, FILE* output) APT_DEPRECATED_MSG("Use FileFd-based interface instead");
+
+
+ /** \brief executes the given solver and returns the pipe ends
+ *
+ * The given solver is executed if it can be found in one of the
+ * configured directories and setup for it is performed.
+ *
+ * \param solver to execute
+ * \param[out] solver_in will be the stdin of the solver
+ * \param[out] solver_out will be the stdout of the solver
+ *
+ * \return PID of the started solver or 0 if failure occurred
+ */
+ pid_t ExecuteSolver(const char* const solver, int * const solver_in, int * const solver_out, bool /*overload*/);
+ APT_DEPRECATED_MSG("add a dummy bool parameter to use the overload returning a pid_t") bool ExecuteSolver(const char* const solver, int *solver_in, int *solver_out);
+
+ /** \brief call an external resolver to handle the request
+ *
+ * This method wraps all the methods above to call an external solver
+ *
+ * \param solver to execute
+ * \param Cache with the problem and as universe to work in
+ * \param flags effecting the request documented in #EDSP::Request::Flags
+ * \param Progress is an instance to report progress to
+ *
+ * \return true if the solver has successfully solved the problem,
+ * otherwise false
+ */
+ bool ResolveExternal(const char* const solver, pkgDepCache &Cache,
+ unsigned int const flags = 0,
+ OpProgress *Progress = NULL);
+ APT_DEPRECATED_MSG("use the flag-based version instead") bool ResolveExternal(const char* const solver, pkgDepCache &Cache,
+ bool const upgrade, bool const distUpgrade,
+ bool const autoRemove, OpProgress *Progress = NULL);
+}
+ /*}}}*/
+class pkgPackageManager;
+namespace EIPP /*{{{*/
+{
+ namespace Request
+ {
+ enum Flags
+ {
+ IMMEDIATE_CONFIGURATION_ALL = (1 << 0), /*!< try to keep the least amount of packages unconfigured as possible at all times */
+ NO_IMMEDIATE_CONFIGURATION = (1 << 1), /*!< do not perform immediate configuration at all */
+ ALLOW_TEMPORARY_REMOVE_OF_ESSENTIALS = (1 << 2), /*!< just as the name suggests, very special case and dangerous! */
+ };
+ }
+
+ APT_HIDDEN bool WriteRequest(pkgDepCache &Cache, FileFd &output,
+ unsigned int const flags, OpProgress * const Progress);
+ APT_HIDDEN bool WriteScenario(pkgDepCache &Cache, FileFd &output,
+ OpProgress * const Progress);
+
+ APT_HIDDEN bool OrderInstall(char const * const planner, pkgPackageManager * const PM,
+ unsigned int const version, OpProgress * const Progress);
+ APT_HIDDEN bool ReadResponse(int const input, pkgPackageManager * const PM,
+ OpProgress * const Progress);
+
+ enum class PKG_ACTION
+ {
+ NOOP,
+ INSTALL,
+ REINSTALL,
+ REMOVE
+ };
+ bool ReadRequest(int const input,
+ std::list<std::pair<std::string,PKG_ACTION>> &actions,
+ unsigned int &flags);
+ bool ApplyRequest(std::list<std::pair<std::string,PKG_ACTION>> &actions,
+ pkgDepCache &Cache);
+}
+ /*}}}*/
+#endif
diff --git a/apt-pkg/edsp/edspindexfile.cc b/apt-pkg/edsp/edspindexfile.cc
new file mode 100644
index 000000000..042a88cf9
--- /dev/null
+++ b/apt-pkg/edsp/edspindexfile.cc
@@ -0,0 +1,128 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+ The scenario file is designed to work as an intermediate file between
+ APT and the resolver. Its on propose very similar to a dpkg status file
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/edspindexfile.h>
+#include <apt-pkg/edsplistparser.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/pkgrecords.h>
+
+#include <stddef.h>
+#include <unistd.h>
+#include <string>
+ /*}}}*/
+
+// EDSP-like Index /*{{{*/
+edspLikeIndex::edspLikeIndex(std::string const &File) : pkgDebianIndexRealFile(File, true)
+{
+}
+std::string edspLikeIndex::GetArchitecture() const
+{
+ return std::string();
+}
+bool edspLikeIndex::HasPackages() const
+{
+ return true;
+}
+bool edspLikeIndex::Exists() const
+{
+ return true;
+}
+uint8_t edspLikeIndex::GetIndexFlags() const
+{
+ return 0;
+}
+bool edspLikeIndex::OpenListFile(FileFd &Pkg, std::string const &FileName)
+{
+ if (FileName.empty() == false && FileName != "/nonexistent/stdin")
+ return pkgDebianIndexRealFile::OpenListFile(Pkg, FileName);
+ if (Pkg.OpenDescriptor(STDIN_FILENO, FileFd::ReadOnly) == false)
+ return _error->Error("Problem opening %s",FileName.c_str());
+ return true;
+}
+ /*}}}*/
+// EDSP Index /*{{{*/
+edspIndex::edspIndex(std::string const &File) : edspLikeIndex(File)
+{
+}
+std::string edspIndex::GetComponent() const
+{
+ return "edsp";
+}
+pkgCacheListParser * edspIndex::CreateListParser(FileFd &Pkg)
+{
+ if (Pkg.IsOpen() == false)
+ return NULL;
+ _error->PushToStack();
+ pkgCacheListParser * const Parser = new edspListParser(&Pkg);
+ bool const newError = _error->PendingError();
+ _error->MergeWithStack();
+ return newError ? NULL : Parser;
+}
+ /*}}}*/
+// EIPP Index /*{{{*/
+eippIndex::eippIndex(std::string const &File) : edspLikeIndex(File)
+{
+}
+std::string eippIndex::GetComponent() const
+{
+ return "eipp";
+}
+pkgCacheListParser * eippIndex::CreateListParser(FileFd &Pkg)
+{
+ if (Pkg.IsOpen() == false)
+ return NULL;
+ _error->PushToStack();
+ pkgCacheListParser * const Parser = new eippListParser(&Pkg);
+ bool const newError = _error->PendingError();
+ _error->MergeWithStack();
+ return newError ? NULL : Parser;
+}
+ /*}}}*/
+
+// Index File types for APT /*{{{*/
+class APT_HIDDEN edspIFType: public pkgIndexFile::Type
+{
+ public:
+ virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &) const APT_OVERRIDE
+ {
+ // we don't have a record parser for this type as the file is not presistent
+ return NULL;
+ };
+ edspIFType() {Label = "EDSP scenario file";};
+};
+APT_HIDDEN edspIFType _apt_Edsp;
+const pkgIndexFile::Type *edspIndex::GetType() const
+{
+ return &_apt_Edsp;
+}
+
+class APT_HIDDEN eippIFType: public pkgIndexFile::Type
+{
+ public:
+ virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &) const APT_OVERRIDE
+ {
+ // we don't have a record parser for this type as the file is not presistent
+ return NULL;
+ };
+ eippIFType() {Label = "EIPP scenario file";};
+};
+APT_HIDDEN eippIFType _apt_Eipp;
+const pkgIndexFile::Type *eippIndex::GetType() const
+{
+ return &_apt_Eipp;
+}
+ /*}}}*/
+
+edspLikeIndex::~edspLikeIndex() {}
+edspIndex::~edspIndex() {}
+eippIndex::~eippIndex() {}
diff --git a/apt-pkg/edsp/edspindexfile.h b/apt-pkg/edsp/edspindexfile.h
new file mode 100644
index 000000000..e146ca80c
--- /dev/null
+++ b/apt-pkg/edsp/edspindexfile.h
@@ -0,0 +1,62 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+ The scenario file is designed to work as an intermediate file between
+ APT and the resolver. Its on propose very similar to a dpkg status file
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_EDSPINDEXFILE_H
+#define PKGLIB_EDSPINDEXFILE_H
+
+#include <apt-pkg/debindexfile.h>
+#include <string>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/indexfile.h>
+#endif
+
+class OpProgress;
+class pkgCacheGenerator;
+
+class APT_HIDDEN edspLikeIndex : public pkgDebianIndexRealFile
+{
+protected:
+ virtual bool OpenListFile(FileFd &Pkg, std::string const &File) APT_OVERRIDE;
+ virtual uint8_t GetIndexFlags() const APT_OVERRIDE;
+ virtual std::string GetArchitecture() const APT_OVERRIDE;
+
+public:
+ virtual bool Exists() const APT_OVERRIDE;
+ virtual bool HasPackages() const APT_OVERRIDE;
+
+ edspLikeIndex(std::string const &File);
+ virtual ~edspLikeIndex();
+};
+
+class APT_HIDDEN edspIndex : public edspLikeIndex
+{
+protected:
+ APT_HIDDEN virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE;
+ virtual std::string GetComponent() const APT_OVERRIDE;
+
+public:
+ virtual const Type *GetType() const APT_OVERRIDE APT_CONST;
+
+ edspIndex(std::string const &File);
+ virtual ~edspIndex();
+};
+
+class APT_HIDDEN eippIndex : public edspLikeIndex
+{
+protected:
+ APT_HIDDEN virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE;
+ virtual std::string GetComponent() const APT_OVERRIDE;
+
+public:
+ virtual const Type *GetType() const APT_OVERRIDE APT_CONST;
+
+ eippIndex(std::string const &File);
+ virtual ~eippIndex();
+};
+
+#endif
diff --git a/apt-pkg/edsp/edsplistparser.cc b/apt-pkg/edsp/edsplistparser.cc
new file mode 100644
index 000000000..4119639a6
--- /dev/null
+++ b/apt-pkg/edsp/edsplistparser.cc
@@ -0,0 +1,186 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Package Cache Generator - Generator for the cache structure.
+
+ This builds the cache structure from the abstract package list parser.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/edsplistparser.h>
+#include <apt-pkg/md5.h>
+#include <apt-pkg/deblistparser.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/string_view.h>
+
+#include <array>
+
+ /*}}}*/
+
+// ListParser::edspListParser - Constructor /*{{{*/
+edspLikeListParser::edspLikeListParser(FileFd * const File) : debListParser(File)
+{
+}
+edspListParser::edspListParser(FileFd * const File) : edspLikeListParser(File)
+{
+ std::string const states = _config->FindFile("Dir::State::extended_states");
+ RemoveFile("edspListParserPrivate", states);
+ extendedstates.Open(states, FileFd::WriteOnly | FileFd::Create | FileFd::Exclusive, 0600);
+ std::string const prefs = _config->FindFile("Dir::Etc::preferences");
+ RemoveFile("edspListParserPrivate", prefs);
+ preferences.Open(prefs, FileFd::WriteOnly | FileFd::Create | FileFd::Exclusive, 0600);
+}
+ /*}}}*/
+// ListParser::NewVersion - Fill in the version structure /*{{{*/
+bool edspLikeListParser::NewVersion(pkgCache::VerIterator &Ver)
+{
+ _system->SetVersionMapping(Ver->ID, Section.FindI("APT-ID", Ver->ID));
+ return debListParser::NewVersion(Ver);
+}
+ /*}}}*/
+// ListParser::Description - Return the description string /*{{{*/
+// ---------------------------------------------------------------------
+/* Sorry, no description for the resolvers… */
+std::vector<std::string> edspLikeListParser::AvailableDescriptionLanguages()
+{
+ return {};
+}
+APT::StringView edspLikeListParser::Description_md5()
+{
+ return APT::StringView();
+}
+ /*}}}*/
+// ListParser::VersionHash - Compute a unique hash for this version /*{{{*/
+unsigned short edspLikeListParser::VersionHash()
+{
+ if (Section.Exists("APT-Hash") == true)
+ return Section.FindI("APT-Hash");
+ else if (Section.Exists("APT-ID") == true)
+ return Section.FindI("APT-ID");
+ return 0;
+}
+ /*}}}*/
+// ListParser::LoadReleaseInfo - Load the release information /*{{{*/
+APT_CONST bool edspLikeListParser::LoadReleaseInfo(pkgCache::RlsFileIterator & /*FileI*/,
+ FileFd & /*File*/, std::string const &/*component*/)
+{
+ return true;
+}
+ /*}}}*/
+// ListParser::ParseStatus - Parse the status field /*{{{*/
+// ---------------------------------------------------------------------
+/* The Status: line here is not a normal dpkg one but just one which tells
+ use if the package is installed or not, where missing means not. */
+bool edspListParser::ParseStatus(pkgCache::PkgIterator &Pkg,
+ pkgCache::VerIterator &Ver)
+{
+ unsigned long state = 0;
+ if (Section.FindFlag("Hold",state,pkgCache::State::Hold) == false)
+ return false;
+ if (state != 0)
+ Pkg->SelectedState = pkgCache::State::Hold;
+
+ state = 0;
+ if (Section.FindFlag("Installed",state,pkgCache::State::Installed) == false)
+ return false;
+ if (state != 0)
+ {
+ Pkg->CurrentState = pkgCache::State::Installed;
+ Pkg->CurrentVer = Ver.Index();
+ }
+
+ if (Section.FindB("APT-Automatic", false))
+ {
+ std::string out;
+ strprintf(out, "Package: %s\nArchitecture: %s\nAuto-Installed: 1\n\n", Pkg.Name(), Pkg.Arch());
+ if (extendedstates.Write(out.c_str(), out.length()) == false)
+ return false;
+ }
+
+ // FIXME: Using an overriding pin is wrong.
+ if (Section.FindB("APT-Candidate", false))
+ {
+ std::string out;
+ strprintf(out, "Package: %s\nPin: version %s\nPin-Priority: 9999\n\n", Pkg.FullName().c_str(), Ver.VerStr());
+ if (preferences.Write(out.c_str(), out.length()) == false)
+ return false;
+ }
+
+ signed short const pinvalue = Section.FindI("APT-Pin", 500);
+ if (pinvalue != 500)
+ {
+ std::string out;
+ strprintf(out, "Package: %s\nPin: version %s\nPin-Priority: %d\n\n", Pkg.FullName().c_str(), Ver.VerStr(), pinvalue);
+ if (preferences.Write(out.c_str(), out.length()) == false)
+ return false;
+ }
+
+ return true;
+}
+ /*}}}*/
+
+// ListParser::eippListParser - Constructor /*{{{*/
+eippListParser::eippListParser(FileFd *File) : edspLikeListParser(File)
+{
+}
+ /*}}}*/
+// ListParser::ParseStatus - Parse the status field /*{{{*/
+// ---------------------------------------------------------------------
+/* The Status: line here is not a normal dpkg one but just one which tells
+ use if the package is installed or not, where missing means not. */
+bool eippListParser::ParseStatus(pkgCache::PkgIterator &Pkg,
+ pkgCache::VerIterator &Ver)
+{
+ // Process the flag field
+ static std::array<WordList, 8> const statusvalues = {{
+ {"not-installed",pkgCache::State::NotInstalled},
+ {"config-files",pkgCache::State::ConfigFiles},
+ {"half-installed",pkgCache::State::HalfInstalled},
+ {"unpacked",pkgCache::State::UnPacked},
+ {"half-configured",pkgCache::State::HalfConfigured},
+ {"triggers-awaited",pkgCache::State::TriggersAwaited},
+ {"triggers-pending",pkgCache::State::TriggersPending},
+ {"installed",pkgCache::State::Installed},
+ }};
+ auto const status = Section.Find("Status");
+ if (status.empty() == false)
+ {
+ for (auto && sv: statusvalues)
+ {
+ if (status != sv.Str)
+ continue;
+ Pkg->CurrentState = sv.Val;
+ switch (Pkg->CurrentState)
+ {
+ case pkgCache::State::NotInstalled:
+ case pkgCache::State::ConfigFiles:
+ break;
+ case pkgCache::State::HalfInstalled:
+ case pkgCache::State::UnPacked:
+ case pkgCache::State::HalfConfigured:
+ case pkgCache::State::TriggersAwaited:
+ case pkgCache::State::TriggersPending:
+ case pkgCache::State::Installed:
+ Pkg->CurrentVer = Ver.Index();
+ break;
+ }
+ break;
+ }
+ }
+
+ return true;
+}
+ /*}}}*/
+
+edspLikeListParser::~edspLikeListParser() {}
+edspListParser::~edspListParser() {}
+eippListParser::~eippListParser() {}
diff --git a/apt-pkg/edsp/edsplistparser.h b/apt-pkg/edsp/edsplistparser.h
new file mode 100644
index 000000000..4904b6567
--- /dev/null
+++ b/apt-pkg/edsp/edsplistparser.h
@@ -0,0 +1,67 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ EDSP Package List Parser - This implements the abstract parser
+ interface for the APT specific intermediate format which is passed
+ to external resolvers
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_EDSPLISTPARSER_H
+#define PKGLIB_EDSPLISTPARSER_H
+
+#include <apt-pkg/deblistparser.h>
+#include <apt-pkg/md5.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/fileutl.h>
+
+#include <string>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/pkgcachegen.h>
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/tagfile.h>
+#endif
+
+namespace APT {
+ class StringView;
+}
+class APT_HIDDEN edspLikeListParser : public debListParser
+{
+ public:
+ virtual bool NewVersion(pkgCache::VerIterator &Ver) APT_OVERRIDE;
+ virtual std::vector<std::string> AvailableDescriptionLanguages() APT_OVERRIDE;
+ virtual APT::StringView Description_md5() APT_OVERRIDE;
+ virtual unsigned short VersionHash() APT_OVERRIDE;
+
+ bool LoadReleaseInfo(pkgCache::RlsFileIterator &FileI,FileFd &File,
+ std::string const &section);
+
+ edspLikeListParser(FileFd *File);
+ virtual ~edspLikeListParser();
+};
+
+class APT_HIDDEN edspListParser : public edspLikeListParser
+{
+ FileFd extendedstates;
+ FileFd preferences;
+
+protected:
+ virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver) APT_OVERRIDE;
+
+public:
+ edspListParser(FileFd *File);
+ virtual ~edspListParser();
+};
+
+class APT_HIDDEN eippListParser : public edspLikeListParser
+{
+protected:
+ virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver) APT_OVERRIDE;
+
+public:
+ eippListParser(FileFd *File);
+ virtual ~eippListParser();
+};
+#endif
diff --git a/apt-pkg/edsp/edspsystem.cc b/apt-pkg/edsp/edspsystem.cc
new file mode 100644
index 000000000..1ceb21a17
--- /dev/null
+++ b/apt-pkg/edsp/edspsystem.cc
@@ -0,0 +1,167 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ This system provides the abstraction to use the scenario file as the
+ only source of package information to be able to feed the created file
+ back to APT for its own consumption (eat your own dogfood).
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/debversion.h>
+#include <apt-pkg/edspindexfile.h>
+#include <apt-pkg/edspsystem.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/fileutl.h>
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <string>
+#include <vector>
+
+ /*}}}*/
+
+// System::System - Constructor /*{{{*/
+edspLikeSystem::edspLikeSystem(char const * const Label) : pkgSystem(Label, &debVS)
+{
+}
+edspSystem::edspSystem() : edspLikeSystem("Debian APT solver interface")
+{
+}
+eippSystem::eippSystem() : edspLikeSystem("Debian APT planner interface")
+{
+}
+ /*}}}*/
+// System::Lock - Get the lock /*{{{*/
+bool edspLikeSystem::Lock()
+{
+ return true;
+}
+ /*}}}*/
+// System::UnLock - Drop a lock /*{{{*/
+bool edspLikeSystem::UnLock(bool /*NoErrors*/)
+{
+ return true;
+}
+ /*}}}*/
+// System::CreatePM - Create the underlying package manager /*{{{*/
+// ---------------------------------------------------------------------
+/* we can't use edsp input as input for real installations - just a
+ simulation can work, but everything else will fail bigtime */
+pkgPackageManager *edspLikeSystem::CreatePM(pkgDepCache * /*Cache*/) const
+{
+ return nullptr;
+}
+ /*}}}*/
+// System::Initialize - Setup the configuration space.. /*{{{*/
+bool edspLikeSystem::Initialize(Configuration &Cnf)
+{
+ Cnf.Set("Dir::Log", "/dev/null");
+ // state is included completely in the input files
+ Cnf.Set("Dir::Etc::preferences", "/dev/null");
+ Cnf.Set("Dir::Etc::preferencesparts", "/dev/null");
+ Cnf.Set("Dir::State::status","/dev/null");
+ Cnf.Set("Dir::State::extended_states","/dev/null");
+ Cnf.Set("Dir::State::lists","/dev/null");
+ // do not store an mmap cache
+ Cnf.Set("Dir::Cache::pkgcache", "");
+ Cnf.Set("Dir::Cache::srcpkgcache", "");
+ // the protocols only propose actions, not do them
+ Cnf.Set("Debug::NoLocking", "true");
+ Cnf.Set("APT::Get::Simulate", "true");
+
+ StatusFile.reset(nullptr);
+ return true;
+}
+bool edspSystem::Initialize(Configuration &Cnf)
+{
+ if (edspLikeSystem::Initialize(Cnf) == false)
+ return false;
+ std::string const tmp = GetTempDir();
+ char tmpname[300];
+ snprintf(tmpname, sizeof(tmpname), "%s/apt-edsp-solver-XXXXXX", tmp.c_str());
+ if (nullptr == mkdtemp(tmpname))
+ return false;
+ tempDir = tmpname;
+ tempStatesFile = flCombine(tempDir, "extended_states");
+ Cnf.Set("Dir::State::extended_states", tempStatesFile);
+ tempPrefsFile = flCombine(tempDir, "apt_preferences");
+ Cnf.Set("Dir::Etc::preferences", tempPrefsFile);
+ return true;
+}
+ /*}}}*/
+// System::ArchiveSupported - Is a file format supported /*{{{*/
+bool edspLikeSystem::ArchiveSupported(const char * /*Type*/)
+{
+ return false;
+}
+ /*}}}*/
+// System::Score - Never use the EDSP system automatically /*{{{*/
+signed edspLikeSystem::Score(Configuration const &)
+{
+ return -1000;
+}
+ /*}}}*/
+// System::FindIndex - Get an index file for status files /*{{{*/
+bool edspLikeSystem::FindIndex(pkgCache::PkgFileIterator File,
+ pkgIndexFile *&Found) const
+{
+ if (StatusFile == 0)
+ return false;
+ if (StatusFile->FindInCache(*File.Cache()) == File)
+ {
+ Found = StatusFile.get();
+ return true;
+ }
+
+ return false;
+}
+ /*}}}*/
+bool edspSystem::AddStatusFiles(std::vector<pkgIndexFile *> &List) /*{{{*/
+{
+ if (StatusFile == nullptr)
+ {
+ if (_config->Find("edsp::scenario", "") == "/nonexistent/stdin")
+ StatusFile.reset(new edspIndex("/nonexistent/stdin"));
+ else
+ StatusFile.reset(new edspIndex(_config->FindFile("edsp::scenario")));
+ }
+ List.push_back(StatusFile.get());
+ return true;
+}
+ /*}}}*/
+bool eippSystem::AddStatusFiles(std::vector<pkgIndexFile *> &List) /*{{{*/
+{
+ if (StatusFile == nullptr)
+ {
+ if (_config->Find("eipp::scenario", "") == "/nonexistent/stdin")
+ StatusFile.reset(new eippIndex("/nonexistent/stdin"));
+ else
+ StatusFile.reset(new eippIndex(_config->FindFile("eipp::scenario")));
+ }
+ List.push_back(StatusFile.get());
+ return true;
+}
+ /*}}}*/
+
+edspLikeSystem::~edspLikeSystem() {}
+edspSystem::~edspSystem()
+{
+ if (tempDir.empty())
+ return;
+
+ RemoveFile("~edspSystem", tempStatesFile);
+ RemoveFile("~edspSystem", tempPrefsFile);
+ rmdir(tempDir.c_str());
+}
+eippSystem::~eippSystem() {}
+
+APT_HIDDEN edspSystem edspSys;
+APT_HIDDEN eippSystem eippSys;
diff --git a/apt-pkg/edsp/edspsystem.h b/apt-pkg/edsp/edspsystem.h
new file mode 100644
index 000000000..c0c9526b5
--- /dev/null
+++ b/apt-pkg/edsp/edspsystem.h
@@ -0,0 +1,69 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: debsystem.h,v 1.4 2003/01/11 07:16:33 jgg Exp $
+/* ######################################################################
+
+ System - Debian version of the System Class
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_EDSPSYSTEM_H
+#define PKGLIB_EDSPSYSTEM_H
+
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/pkgcache.h>
+
+#include <memory>
+#include <vector>
+
+#include <apt-pkg/macros.h>
+
+class Configuration;
+class pkgDepCache;
+class pkgIndexFile;
+class pkgPackageManager;
+
+class APT_HIDDEN edspLikeSystem : public pkgSystem
+{
+protected:
+ std::unique_ptr<pkgIndexFile> StatusFile;
+
+public:
+ virtual bool Lock() APT_OVERRIDE APT_CONST;
+ virtual bool UnLock(bool NoErrors = false) APT_OVERRIDE APT_CONST;
+ virtual pkgPackageManager *CreatePM(pkgDepCache *Cache) const APT_OVERRIDE APT_CONST;
+ virtual bool Initialize(Configuration &Cnf) APT_OVERRIDE;
+ virtual bool ArchiveSupported(const char *Type) APT_OVERRIDE APT_CONST;
+ virtual signed Score(Configuration const &Cnf) APT_OVERRIDE;
+ virtual bool FindIndex(pkgCache::PkgFileIterator File,
+ pkgIndexFile *&Found) const APT_OVERRIDE;
+
+ edspLikeSystem(char const * const Label);
+ virtual ~edspLikeSystem();
+};
+
+class APT_HIDDEN edspSystem : public edspLikeSystem
+{
+ std::string tempDir;
+ std::string tempStatesFile;
+ std::string tempPrefsFile;
+
+public:
+ virtual bool Initialize(Configuration &Cnf) APT_OVERRIDE;
+ virtual bool AddStatusFiles(std::vector<pkgIndexFile *> &List) APT_OVERRIDE;
+
+ edspSystem();
+ virtual ~edspSystem();
+};
+
+class APT_HIDDEN eippSystem : public edspLikeSystem
+{
+ public:
+ virtual bool AddStatusFiles(std::vector<pkgIndexFile *> &List) APT_OVERRIDE;
+
+ eippSystem();
+ virtual ~eippSystem();
+};
+
+#endif
diff --git a/apt-pkg/indexcopy.cc b/apt-pkg/indexcopy.cc
new file mode 100644
index 000000000..ca5c42cb7
--- /dev/null
+++ b/apt-pkg/indexcopy.cc
@@ -0,0 +1,784 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: indexcopy.cc,v 1.10 2002/03/26 07:38:58 jgg Exp $
+/* ######################################################################
+
+ Index Copying - Aid for copying and verifying the index files
+
+ This class helps apt-cache reconstruct a damaged index files.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/progress.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/metaindex.h>
+#include <apt-pkg/cdrom.h>
+#include <apt-pkg/gpgv.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/debmetaindex.h>
+
+#include <iostream>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sstream>
+
+#include "indexcopy.h"
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+// IndexCopy::CopyPackages - Copy the package files from the CD /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool IndexCopy::CopyPackages(string CDROM,string Name,vector<string> &List,
+ pkgCdromStatus *log)
+{
+ OpProgress *Progress = NULL;
+ if (List.empty() == true)
+ return true;
+
+ if(log)
+ Progress = log->GetOpProgress();
+
+ bool NoStat = _config->FindB("APT::CDROM::Fast",false);
+ bool Debug = _config->FindB("Debug::aptcdrom",false);
+
+ // Prepare the progress indicator
+ off_t TotalSize = 0;
+ std::vector<APT::Configuration::Compressor> const compressor = APT::Configuration::getCompressors();
+ for (vector<string>::iterator I = List.begin(); I != List.end(); ++I)
+ {
+ struct stat Buf;
+ bool found = false;
+ std::string file = std::string(*I).append(GetFileName());
+ for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressor.begin();
+ c != compressor.end(); ++c)
+ {
+ if (stat((file + c->Extension).c_str(), &Buf) != 0)
+ continue;
+ found = true;
+ break;
+ }
+
+ if (found == false)
+ return _error->Errno("stat", "Stat failed for %s", file.c_str());
+ TotalSize += Buf.st_size;
+ }
+
+ off_t CurrentSize = 0;
+ unsigned int NotFound = 0;
+ unsigned int WrongSize = 0;
+ unsigned int Packages = 0;
+ for (vector<string>::iterator I = List.begin(); I != List.end(); ++I)
+ {
+ string OrigPath = string(*I,CDROM.length());
+
+ // Open the package file
+ FileFd Pkg(*I + GetFileName(), FileFd::ReadOnly, FileFd::Auto);
+ off_t const FileSize = Pkg.Size();
+
+ pkgTagFile Parser(&Pkg);
+ if (Pkg.IsOpen() == false || Pkg.Failed())
+ return false;
+
+ // Open the output file
+ char S[400];
+ snprintf(S,sizeof(S),"cdrom:[%s]/%s%s",Name.c_str(),
+ (*I).c_str() + CDROM.length(),GetFileName());
+ string TargetF = _config->FindDir("Dir::State::lists") + "partial/";
+ TargetF += URItoFileName(S);
+ FileFd Target;
+ if (_config->FindB("APT::CDROM::NoAct",false) == true)
+ {
+ TargetF = "/dev/null";
+ Target.Open(TargetF,FileFd::WriteExists);
+ } else {
+ Target.Open(TargetF,FileFd::WriteAtomic);
+ }
+ if (Target.IsOpen() == false || Target.Failed())
+ return false;
+
+ // Setup the progress meter
+ if(Progress)
+ Progress->OverallProgress(CurrentSize,TotalSize,FileSize,
+ string("Reading ") + Type() + " Indexes");
+
+ // Parse
+ if(Progress)
+ Progress->SubProgress(Pkg.Size());
+ pkgTagSection Section;
+ this->Section = &Section;
+ string Prefix;
+ unsigned long Hits = 0;
+ unsigned long Chop = 0;
+ while (Parser.Step(Section) == true)
+ {
+ if(Progress)
+ Progress->Progress(Parser.Offset());
+ string File;
+ unsigned long long Size;
+ if (GetFile(File,Size) == false)
+ return false;
+
+ if (Chop != 0)
+ File = OrigPath + ChopDirs(File,Chop);
+
+ // See if the file exists
+ if (NoStat == false || Hits < 10)
+ {
+ // Attempt to fix broken structure
+ if (Hits == 0)
+ {
+ if (ReconstructPrefix(Prefix,OrigPath,CDROM,File) == false &&
+ ReconstructChop(Chop,*I,File) == false)
+ {
+ if (Debug == true)
+ clog << "Missed: " << File << endl;
+ NotFound++;
+ continue;
+ }
+ if (Chop != 0)
+ File = OrigPath + ChopDirs(File,Chop);
+ }
+
+ // Get the size
+ struct stat Buf;
+ if (stat((CDROM + Prefix + File).c_str(),&Buf) != 0 ||
+ Buf.st_size == 0)
+ {
+ bool Mangled = false;
+ // Attempt to fix busted symlink support for one instance
+ string OrigFile = File;
+ string::size_type Start = File.find("binary-");
+ string::size_type End = File.find("/",Start+3);
+ if (Start != string::npos && End != string::npos)
+ {
+ File.replace(Start,End-Start,"binary-all");
+ Mangled = true;
+ }
+
+ if (Mangled == false ||
+ stat((CDROM + Prefix + File).c_str(),&Buf) != 0)
+ {
+ if (Debug == true)
+ clog << "Missed(2): " << OrigFile << endl;
+ NotFound++;
+ continue;
+ }
+ }
+
+ // Size match
+ if ((unsigned long long)Buf.st_size != Size)
+ {
+ if (Debug == true)
+ clog << "Wrong Size: " << File << endl;
+ WrongSize++;
+ continue;
+ }
+ }
+
+ Packages++;
+ Hits++;
+
+ if (RewriteEntry(Target, File) == false)
+ return false;
+ }
+
+ if (Debug == true)
+ cout << " Processed by using Prefix '" << Prefix << "' and chop " << Chop << endl;
+
+ if (_config->FindB("APT::CDROM::NoAct",false) == false)
+ {
+ // Move out of the partial directory
+ Target.Close();
+ string FinalF = _config->FindDir("Dir::State::lists");
+ FinalF += URItoFileName(S);
+ if (rename(TargetF.c_str(),FinalF.c_str()) != 0)
+ return _error->Errno("rename","Failed to rename");
+ ChangeOwnerAndPermissionOfFile("CopyPackages", FinalF.c_str(), "root", ROOT_GROUP, 0644);
+ }
+
+ /* Mangle the source to be in the proper notation with
+ prefix dist [component] */
+ *I = string(*I,Prefix.length());
+ ConvertToSourceList(CDROM,*I);
+ *I = Prefix + ' ' + *I;
+
+ CurrentSize += FileSize;
+ }
+ if(Progress)
+ Progress->Done();
+
+ // Some stats
+ if(log) {
+ stringstream msg;
+ if(NotFound == 0 && WrongSize == 0)
+ ioprintf(msg, _("Wrote %i records.\n"), Packages);
+ else if (NotFound != 0 && WrongSize == 0)
+ ioprintf(msg, _("Wrote %i records with %i missing files.\n"),
+ Packages, NotFound);
+ else if (NotFound == 0 && WrongSize != 0)
+ ioprintf(msg, _("Wrote %i records with %i mismatched files\n"),
+ Packages, WrongSize);
+ if (NotFound != 0 && WrongSize != 0)
+ ioprintf(msg, _("Wrote %i records with %i missing files and %i mismatched files\n"), Packages, NotFound, WrongSize);
+ }
+
+ if (Packages == 0)
+ _error->Warning("No valid records were found.");
+
+ if (NotFound + WrongSize > 10)
+ _error->Warning("A lot of entries were discarded, something may be wrong.\n");
+
+ return true;
+}
+ /*}}}*/
+// IndexCopy::ChopDirs - Chop off the leading directory components /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+string IndexCopy::ChopDirs(string Path,unsigned int Depth)
+{
+ string::size_type I = 0;
+ do
+ {
+ I = Path.find('/',I+1);
+ Depth--;
+ }
+ while (I != string::npos && Depth != 0);
+
+ if (I == string::npos)
+ return string();
+
+ return string(Path,I+1);
+}
+ /*}}}*/
+// IndexCopy::ReconstructPrefix - Fix strange prefixing /*{{{*/
+// ---------------------------------------------------------------------
+/* This prepends dir components from the path to the package files to
+ the path to the deb until it is found */
+bool IndexCopy::ReconstructPrefix(string &Prefix,string OrigPath,string CD,
+ string File)
+{
+ bool Debug = _config->FindB("Debug::aptcdrom",false);
+ unsigned int Depth = 1;
+ string MyPrefix = Prefix;
+ while (1)
+ {
+ struct stat Buf;
+ if (stat((CD + MyPrefix + File).c_str(),&Buf) != 0)
+ {
+ if (Debug == true)
+ cout << "Failed, " << CD + MyPrefix + File << endl;
+ if (GrabFirst(OrigPath,MyPrefix,Depth++) == true)
+ continue;
+
+ return false;
+ }
+ else
+ {
+ Prefix = MyPrefix;
+ return true;
+ }
+ }
+ return false;
+}
+ /*}}}*/
+// IndexCopy::ReconstructChop - Fixes bad source paths /*{{{*/
+// ---------------------------------------------------------------------
+/* This removes path components from the filename and prepends the location
+ of the package files until a file is found */
+bool IndexCopy::ReconstructChop(unsigned long &Chop,string Dir,string File)
+{
+ // Attempt to reconstruct the filename
+ unsigned long Depth = 0;
+ while (1)
+ {
+ struct stat Buf;
+ if (stat((Dir + File).c_str(),&Buf) != 0)
+ {
+ File = ChopDirs(File,1);
+ Depth++;
+ if (File.empty() == false)
+ continue;
+ return false;
+ }
+ else
+ {
+ Chop = Depth;
+ return true;
+ }
+ }
+ return false;
+}
+ /*}}}*/
+// IndexCopy::ConvertToSourceList - Convert a Path to a sourcelist /*{{{*/
+// ---------------------------------------------------------------------
+/* We look for things in dists/ notation and convert them to
+ <dist> <component> form otherwise it is left alone. This also strips
+ the CD path.
+
+ This implements a regex sort of like:
+ (.*)/dists/([^/]*)/(.*)/binary-*
+ ^ ^ ^- Component
+ | |-------- Distribution
+ |------------------- Path
+
+ It was deciced to use only a single word for dist (rather than say
+ unstable/non-us) to increase the chance that each CD gets a single
+ line in sources.list.
+ */
+void IndexCopy::ConvertToSourceList(string CD,string &Path)
+{
+ // Strip the cdrom base path
+ Path = string(Path,CD.length());
+ if (Path.empty() == true)
+ Path = "/";
+
+ // Too short to be a dists/ type
+ if (Path.length() < strlen("dists/"))
+ return;
+
+ // Not a dists type.
+ if (stringcmp(Path.c_str(),Path.c_str()+strlen("dists/"),"dists/") != 0)
+ return;
+
+ // Isolate the dist
+ string::size_type Slash = strlen("dists/");
+ string::size_type Slash2 = Path.find('/',Slash + 1);
+ if (Slash2 == string::npos || Slash2 + 2 >= Path.length())
+ return;
+ string Dist = string(Path,Slash,Slash2 - Slash);
+
+ // Isolate the component
+ Slash = Slash2;
+ for (unsigned I = 0; I != 10; I++)
+ {
+ Slash = Path.find('/',Slash+1);
+ if (Slash == string::npos || Slash + 2 >= Path.length())
+ return;
+ string Comp = string(Path,Slash2+1,Slash - Slash2-1);
+
+ // Verify the trailing binary- bit
+ string::size_type BinSlash = Path.find('/',Slash + 1);
+ if (Slash == string::npos)
+ return;
+ string Binary = string(Path,Slash+1,BinSlash - Slash-1);
+
+ if (strncmp(Binary.c_str(), "binary-", strlen("binary-")) == 0)
+ {
+ Binary.erase(0, strlen("binary-"));
+ if (APT::Configuration::checkArchitecture(Binary) == false)
+ continue;
+ }
+ else if (Binary != "source")
+ continue;
+
+ Path = Dist + ' ' + Comp;
+ return;
+ }
+}
+ /*}}}*/
+// IndexCopy::GrabFirst - Return the first Depth path components /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool IndexCopy::GrabFirst(string Path,string &To,unsigned int Depth)
+{
+ string::size_type I = 0;
+ do
+ {
+ I = Path.find('/',I+1);
+ Depth--;
+ }
+ while (I != string::npos && Depth != 0);
+
+ if (I == string::npos)
+ return false;
+
+ To = string(Path,0,I+1);
+ return true;
+}
+ /*}}}*/
+// PackageCopy::GetFile - Get the file information from the section /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool PackageCopy::GetFile(string &File,unsigned long long &Size)
+{
+ File = Section->FindS("Filename");
+ Size = Section->FindI("Size");
+ if (File.empty() || Size == 0)
+ return _error->Error("Cannot find filename or size tag");
+ return true;
+}
+ /*}}}*/
+// PackageCopy::RewriteEntry - Rewrite the entry with a new filename /*{{{*/
+bool PackageCopy::RewriteEntry(FileFd &Target,string const &File)
+{
+ std::vector<pkgTagSection::Tag> Changes;
+ Changes.push_back(pkgTagSection::Tag::Rewrite("Filename", File));
+
+ if (Section->Write(Target, TFRewritePackageOrder, Changes) == false)
+ return false;
+ return Target.Write("\n", 1);
+}
+ /*}}}*/
+// SourceCopy::GetFile - Get the file information from the section /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool SourceCopy::GetFile(string &File,unsigned long long &Size)
+{
+ string Files = Section->FindS("Files");
+ if (Files.empty() == true)
+ return false;
+
+ // Stash the / terminated directory prefix
+ string Base = Section->FindS("Directory");
+ if (Base.empty() == false && Base[Base.length()-1] != '/')
+ Base += '/';
+
+ // Read the first file triplet
+ const char *C = Files.c_str();
+ string sSize;
+ string MD5Hash;
+
+ // Parse each of the elements
+ if (ParseQuoteWord(C,MD5Hash) == false ||
+ ParseQuoteWord(C,sSize) == false ||
+ ParseQuoteWord(C,File) == false)
+ return _error->Error("Error parsing file record");
+
+ // Parse the size and append the directory
+ Size = strtoull(sSize.c_str(), NULL, 10);
+ File = Base + File;
+ return true;
+}
+ /*}}}*/
+// SourceCopy::RewriteEntry - Rewrite the entry with a new filename /*{{{*/
+bool SourceCopy::RewriteEntry(FileFd &Target, std::string const &File)
+{
+ string const Dir(File,0,File.rfind('/'));
+ std::vector<pkgTagSection::Tag> Changes;
+ Changes.push_back(pkgTagSection::Tag::Rewrite("Directory", Dir));
+
+ if (Section->Write(Target, TFRewriteSourceOrder, Changes) == false)
+ return false;
+ return Target.Write("\n", 1);
+}
+ /*}}}*/
+// SigVerify::Verify - Verify a files md5sum against its metaindex /*{{{*/
+bool SigVerify::Verify(string prefix, string file, metaIndex *MetaIndex)
+{
+ const metaIndex::checkSum *Record = MetaIndex->Lookup(file);
+ bool const Debug = _config->FindB("Debug::aptcdrom",false);
+
+ // we skip non-existing files in the verifcation of the Release file
+ // as non-existing files do not harm, but a warning scares people and
+ // makes it hard to strip unneeded files from an ISO like uncompressed
+ // indexes as it is done on the mirrors (see also LP: #255545 )
+ if(!RealFileExists(prefix+file))
+ {
+ if (Debug == true)
+ cout << "Skipping nonexistent in " << prefix << " file " << file << std::endl;
+ return true;
+ }
+
+ if (!Record)
+ {
+ _error->Warning(_("Can't find authentication record for: %s"), file.c_str());
+ return false;
+ }
+
+ if (!Record->Hashes.VerifyFile(prefix+file))
+ {
+ _error->Warning(_("Hash mismatch for: %s"),file.c_str());
+ return false;
+ }
+
+ if(Debug == true)
+ {
+ cout << "File: " << prefix+file << endl
+ << "Expected Hash " << endl;
+ for (HashStringList::const_iterator hs = Record->Hashes.begin(); hs != Record->Hashes.end(); ++hs)
+ std::cout << "\t- " << hs->toStr() << std::endl;
+ }
+
+ return true;
+}
+ /*}}}*/
+bool SigVerify::CopyMetaIndex(string CDROM, string CDName, /*{{{*/
+ string prefix, string file)
+{
+ char S[400];
+ snprintf(S,sizeof(S),"cdrom:[%s]/%s%s",CDName.c_str(),
+ (prefix).c_str() + CDROM.length(),file.c_str());
+ string TargetF = _config->FindDir("Dir::State::lists");
+ TargetF += URItoFileName(S);
+
+ FileFd Target;
+ FileFd Rel;
+ Target.Open(TargetF,FileFd::WriteAtomic);
+ Rel.Open(prefix + file,FileFd::ReadOnly);
+ if (CopyFile(Rel,Target) == false || Target.Close() == false)
+ return _error->Error("Copying of '%s' for '%s' from '%s' failed", file.c_str(), CDName.c_str(), prefix.c_str());
+ ChangeOwnerAndPermissionOfFile("CopyPackages", TargetF.c_str(), "root", ROOT_GROUP, 0644);
+
+ return true;
+}
+ /*}}}*/
+bool SigVerify::CopyAndVerify(string CDROM,string Name,vector<string> &SigList, /*{{{*/
+ vector<string> /*PkgList*/,vector<string> /*SrcList*/)
+{
+ if (SigList.empty() == true)
+ return true;
+
+ bool Debug = _config->FindB("Debug::aptcdrom",false);
+
+ // Read all Release files
+ for (vector<string>::iterator I = SigList.begin(); I != SigList.end(); ++I)
+ {
+ if(Debug)
+ cout << "Signature verify for: " << *I << endl;
+
+ metaIndex *MetaIndex = new debReleaseIndex("","", {});
+ string prefix = *I;
+
+ string const releasegpg = *I+"Release.gpg";
+ string const release = *I+"Release";
+ string const inrelease = *I+"InRelease";
+ bool useInRelease = true;
+
+ // a Release.gpg without a Release should never happen
+ if (RealFileExists(inrelease) == true)
+ ;
+ else if(RealFileExists(release) == false || RealFileExists(releasegpg) == false)
+ {
+ delete MetaIndex;
+ continue;
+ }
+ else
+ useInRelease = false;
+
+ pid_t pid = ExecFork();
+ if(pid < 0) {
+ _error->Error("Fork failed");
+ return false;
+ }
+ if(pid == 0)
+ {
+ if (useInRelease == true)
+ ExecGPGV(inrelease, inrelease);
+ else
+ ExecGPGV(release, releasegpg);
+ }
+
+ if(!ExecWait(pid, "gpgv")) {
+ _error->Warning("Signature verification failed for: %s",
+ (useInRelease ? inrelease.c_str() : releasegpg.c_str()));
+ // something went wrong, don't copy the Release.gpg
+ // FIXME: delete any existing gpg file?
+ delete MetaIndex;
+ continue;
+ }
+
+ // Open the Release file and add it to the MetaIndex
+ std::string ErrorText;
+ if(MetaIndex->Load(release, &ErrorText) == false)
+ {
+ _error->Error("%s", ErrorText.c_str());
+ return false;
+ }
+
+ // go over the Indexfiles and see if they verify
+ // if so, remove them from our copy of the lists
+ vector<string> keys = MetaIndex->MetaKeys();
+ for (vector<string>::iterator I = keys.begin(); I != keys.end(); ++I)
+ {
+ if(!Verify(prefix,*I, MetaIndex)) {
+ // something went wrong, don't copy the Release.gpg
+ // FIXME: delete any existing gpg file?
+ _error->Discard();
+ continue;
+ }
+ }
+
+ // we need a fresh one for the Release.gpg
+ delete MetaIndex;
+
+ // everything was fine, copy the Release and Release.gpg file
+ if (useInRelease == true)
+ CopyMetaIndex(CDROM, Name, prefix, "InRelease");
+ else
+ {
+ CopyMetaIndex(CDROM, Name, prefix, "Release");
+ CopyMetaIndex(CDROM, Name, prefix, "Release.gpg");
+ }
+ }
+
+ return true;
+}
+ /*}}}*/
+// SigVerify::RunGPGV - deprecated wrapper calling ExecGPGV /*{{{*/
+APT_NORETURN bool SigVerify::RunGPGV(std::string const &File, std::string const &FileOut,
+ int const &statusfd, int fd[2]) {
+ ExecGPGV(File, FileOut, statusfd, fd);
+}
+APT_NORETURN bool SigVerify::RunGPGV(std::string const &File, std::string const &FileOut,
+ int const &statusfd) {
+ ExecGPGV(File, FileOut, statusfd);
+}
+ /*}}}*/
+bool TranslationsCopy::CopyTranslations(string CDROM,string Name, /*{{{*/
+ vector<string> &List, pkgCdromStatus *log)
+{
+ OpProgress *Progress = NULL;
+ if (List.empty() == true)
+ return true;
+
+ if(log)
+ Progress = log->GetOpProgress();
+
+ bool Debug = _config->FindB("Debug::aptcdrom",false);
+
+ // Prepare the progress indicator
+ off_t TotalSize = 0;
+ std::vector<APT::Configuration::Compressor> const compressor = APT::Configuration::getCompressors();
+ for (vector<string>::iterator I = List.begin(); I != List.end(); ++I)
+ {
+ struct stat Buf;
+ bool found = false;
+ std::string file = *I;
+ for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressor.begin();
+ c != compressor.end(); ++c)
+ {
+ if (stat((file + c->Extension).c_str(), &Buf) != 0)
+ continue;
+ found = true;
+ break;
+ }
+
+ if (found == false)
+ return _error->Errno("stat", "Stat failed for %s", file.c_str());
+ TotalSize += Buf.st_size;
+ }
+
+ off_t CurrentSize = 0;
+ unsigned int NotFound = 0;
+ unsigned int WrongSize = 0;
+ unsigned int Packages = 0;
+ for (vector<string>::iterator I = List.begin(); I != List.end(); ++I)
+ {
+ // Open the package file
+ FileFd Pkg(*I, FileFd::ReadOnly, FileFd::Auto);
+ off_t const FileSize = Pkg.Size();
+
+ pkgTagFile Parser(&Pkg);
+ if (Pkg.IsOpen() == false || Pkg.Failed())
+ return false;
+
+ // Open the output file
+ char S[400];
+ snprintf(S,sizeof(S),"cdrom:[%s]/%s",Name.c_str(),
+ (*I).c_str() + CDROM.length());
+ string TargetF = _config->FindDir("Dir::State::lists") + "partial/";
+ TargetF += URItoFileName(S);
+ FileFd Target;
+ if (_config->FindB("APT::CDROM::NoAct",false) == true)
+ {
+ TargetF = "/dev/null";
+ Target.Open(TargetF,FileFd::WriteExists);
+ } else {
+ Target.Open(TargetF,FileFd::WriteAtomic);
+ }
+ if (Pkg.IsOpen() == false || Pkg.Failed())
+ return false;
+
+ // Setup the progress meter
+ if(Progress)
+ Progress->OverallProgress(CurrentSize,TotalSize,FileSize,
+ string("Reading Translation Indexes"));
+
+ // Parse
+ if(Progress)
+ Progress->SubProgress(Pkg.Size());
+ pkgTagSection Section;
+ this->Section = &Section;
+ string Prefix;
+ unsigned long Hits = 0;
+ while (Parser.Step(Section) == true)
+ {
+ if(Progress)
+ Progress->Progress(Parser.Offset());
+
+ if (Section.Write(Target) == false || Target.Write("\n", 1) == false)
+ return false;
+
+ Packages++;
+ Hits++;
+ }
+
+ if (Debug == true)
+ cout << " Processed by using Prefix '" << Prefix << "' and chop " << endl;
+
+ if (_config->FindB("APT::CDROM::NoAct",false) == false)
+ {
+ // Move out of the partial directory
+ Target.Close();
+ string FinalF = _config->FindDir("Dir::State::lists");
+ FinalF += URItoFileName(S);
+ if (rename(TargetF.c_str(),FinalF.c_str()) != 0)
+ return _error->Errno("rename","Failed to rename");
+ ChangeOwnerAndPermissionOfFile("CopyTranslations", FinalF.c_str(), "root", ROOT_GROUP, 0644);
+ }
+
+ CurrentSize += FileSize;
+ }
+ if(Progress)
+ Progress->Done();
+
+ // Some stats
+ if(log) {
+ stringstream msg;
+ if(NotFound == 0 && WrongSize == 0)
+ ioprintf(msg, _("Wrote %i records.\n"), Packages);
+ else if (NotFound != 0 && WrongSize == 0)
+ ioprintf(msg, _("Wrote %i records with %i missing files.\n"),
+ Packages, NotFound);
+ else if (NotFound == 0 && WrongSize != 0)
+ ioprintf(msg, _("Wrote %i records with %i mismatched files\n"),
+ Packages, WrongSize);
+ if (NotFound != 0 && WrongSize != 0)
+ ioprintf(msg, _("Wrote %i records with %i missing files and %i mismatched files\n"), Packages, NotFound, WrongSize);
+ }
+
+ if (Packages == 0)
+ _error->Warning("No valid records were found.");
+
+ if (NotFound + WrongSize > 10)
+ _error->Warning("A lot of entries were discarded, something may be wrong.\n");
+
+ return true;
+}
+ /*}}}*/
+
+IndexCopy::IndexCopy() : d(nullptr), Section(nullptr) {}
+APT_CONST IndexCopy::~IndexCopy() {}
+
+PackageCopy::PackageCopy() : IndexCopy(), d(NULL) {}
+APT_CONST PackageCopy::~PackageCopy() {}
+SourceCopy::SourceCopy() : IndexCopy(), d(NULL) {}
+APT_CONST SourceCopy::~SourceCopy() {}
+TranslationsCopy::TranslationsCopy() : d(nullptr), Section(nullptr) {}
+APT_CONST TranslationsCopy::~TranslationsCopy() {}
+SigVerify::SigVerify() : d(NULL) {}
+APT_CONST SigVerify::~SigVerify() {}
diff --git a/apt-pkg/indexcopy.h b/apt-pkg/indexcopy.h
new file mode 100644
index 000000000..dc3b985a2
--- /dev/null
+++ b/apt-pkg/indexcopy.h
@@ -0,0 +1,129 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Index Copying - Aid for copying and verifying the index files
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef INDEXCOPY_H
+#define INDEXCOPY_H
+
+#include <vector>
+#ifndef APT_11_CLEAN_HEADERS
+#include <string>
+#include <stdio.h>
+#endif
+
+#include <apt-pkg/macros.h>
+
+#ifndef APT_10_CLEANER_HEADERS
+#include <apt-pkg/gpgv.h>
+class FileFd;
+#endif
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+using std::vector;
+#endif
+
+class pkgTagSection;
+class pkgCdromStatus;
+class FileFd;
+class metaIndex;
+
+class IndexCopy /*{{{*/
+{
+ /** \brief dpointer placeholder (for later in case we need it) */
+ void * const d;
+
+ protected:
+
+ pkgTagSection *Section;
+
+ std::string ChopDirs(std::string Path,unsigned int Depth);
+ bool ReconstructPrefix(std::string &Prefix,std::string OrigPath,std::string CD,
+ std::string File);
+ bool ReconstructChop(unsigned long &Chop,std::string Dir,std::string File);
+ void ConvertToSourceList(std::string CD,std::string &Path);
+ bool GrabFirst(std::string Path,std::string &To,unsigned int Depth);
+ virtual bool GetFile(std::string &Filename,unsigned long long &Size) = 0;
+ virtual bool RewriteEntry(FileFd &Target, std::string const &File) = 0;
+ virtual const char *GetFileName() = 0;
+ virtual const char *Type() = 0;
+
+ public:
+
+ bool CopyPackages(std::string CDROM,std::string Name,std::vector<std::string> &List,
+ pkgCdromStatus *log);
+ IndexCopy();
+ virtual ~IndexCopy();
+};
+ /*}}}*/
+class PackageCopy : public IndexCopy /*{{{*/
+{
+ void * const d;
+ protected:
+
+ virtual bool GetFile(std::string &Filename,unsigned long long &Size) APT_OVERRIDE;
+ virtual bool RewriteEntry(FileFd &Target, std::string const &File) APT_OVERRIDE;
+ virtual const char *GetFileName() APT_OVERRIDE {return "Packages";};
+ virtual const char *Type() APT_OVERRIDE {return "Package";};
+
+ public:
+ PackageCopy();
+ virtual ~PackageCopy();
+};
+ /*}}}*/
+class SourceCopy : public IndexCopy /*{{{*/
+{
+ void * const d;
+ protected:
+
+ virtual bool GetFile(std::string &Filename,unsigned long long &Size) APT_OVERRIDE;
+ virtual bool RewriteEntry(FileFd &Target, std::string const &File) APT_OVERRIDE;
+ virtual const char *GetFileName() APT_OVERRIDE {return "Sources";};
+ virtual const char *Type() APT_OVERRIDE {return "Source";};
+
+ public:
+ SourceCopy();
+ virtual ~SourceCopy();
+};
+ /*}}}*/
+class TranslationsCopy /*{{{*/
+{
+ void * const d;
+ protected:
+ pkgTagSection *Section;
+
+ public:
+ bool CopyTranslations(std::string CDROM,std::string Name,std::vector<std::string> &List,
+ pkgCdromStatus *log);
+
+ TranslationsCopy();
+ virtual ~TranslationsCopy();
+};
+ /*}}}*/
+class SigVerify /*{{{*/
+{
+ /** \brief dpointer placeholder (for later in case we need it) */
+ void * const d;
+
+ APT_HIDDEN bool Verify(std::string prefix,std::string file, metaIndex *records);
+ APT_HIDDEN bool CopyMetaIndex(std::string CDROM, std::string CDName,
+ std::string prefix, std::string file);
+
+ public:
+ bool CopyAndVerify(std::string CDROM,std::string Name,std::vector<std::string> &SigList,
+ std::vector<std::string> PkgList,std::vector<std::string> SrcList);
+
+ APT_DEPRECATED_MSG("Use ExecGPGV instead") static bool RunGPGV(std::string const &File, std::string const &FileOut,
+ int const &statusfd, int fd[2]);
+ APT_DEPRECATED_MSG("Use ExecGPGV instead") static bool RunGPGV(std::string const &File, std::string const &FileOut,
+ int const &statusfd = -1);
+
+ SigVerify();
+ virtual ~SigVerify();
+};
+ /*}}}*/
+
+#endif
diff --git a/apt-pkg/indexfile.cc b/apt-pkg/indexfile.cc
new file mode 100644
index 000000000..934943205
--- /dev/null
+++ b/apt-pkg/indexfile.cc
@@ -0,0 +1,415 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: indexfile.cc,v 1.2.2.1 2003/12/24 23:09:17 mdz Exp $
+/* ######################################################################
+
+ Index File - Abstraction for an index of archive/souce file.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/pkgcachegen.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/srcrecords.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/progress.h>
+#include <apt-pkg/deblistparser.h>
+#include <apt-pkg/macros.h>
+
+#include <apt-pkg/debindexfile.h>
+
+#include <sys/stat.h>
+
+#include <string>
+#include <vector>
+#include <clocale>
+#include <cstring>
+#include <memory>
+ /*}}}*/
+
+// Global list of Item supported
+static pkgIndexFile::Type *ItmList[10];
+pkgIndexFile::Type **pkgIndexFile::Type::GlobalList = ItmList;
+unsigned long pkgIndexFile::Type::GlobalListLen = 0;
+
+// Type::Type - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgIndexFile::Type::Type()
+{
+ ItmList[GlobalListLen] = this;
+ GlobalListLen++;
+ Label = NULL;
+}
+ /*}}}*/
+// Type::GetType - Locate the type by name /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgIndexFile::Type *pkgIndexFile::Type::GetType(const char *Type)
+{
+ for (unsigned I = 0; I != GlobalListLen; I++)
+ if (strcmp(GlobalList[I]->Label,Type) == 0)
+ return GlobalList[I];
+ return 0;
+}
+ /*}}}*/
+pkgIndexFile::pkgIndexFile(bool const Trusted) : /*{{{*/
+ d(NULL), Trusted(Trusted)
+{
+}
+ /*}}}*/
+// IndexFile::ArchiveInfo - Stub /*{{{*/
+std::string pkgIndexFile::ArchiveInfo(pkgCache::VerIterator const &Ver) const
+{
+ debDebPkgFileIndex const * const debfile = dynamic_cast<debDebPkgFileIndex const*>(this);
+ if (debfile != nullptr)
+ return debfile->ArchiveInfo_impl(Ver);
+ return std::string();
+}
+ /*}}}*/
+// IndexFile::FindInCache - Stub /*{{{*/
+pkgCache::PkgFileIterator pkgIndexFile::FindInCache(pkgCache &Cache) const
+{
+ return pkgCache::PkgFileIterator(Cache);
+}
+ /*}}}*/
+// IndexFile::SourceIndex - Stub /*{{{*/
+std::string pkgIndexFile::SourceInfo(pkgSrcRecords::Parser const &/*Record*/,
+ pkgSrcRecords::File const &/*File*/) const
+{
+ return std::string();
+}
+ /*}}}*/
+// IndexFile::TranslationsAvailable - Check if will use Translation /*{{{*/
+bool pkgIndexFile::TranslationsAvailable() {
+ return (APT::Configuration::getLanguages().empty() != true);
+}
+ /*}}}*/
+// IndexFile::CheckLanguageCode - Check the Language Code /*{{{*/
+bool pkgIndexFile::CheckLanguageCode(const char * const Lang)
+{
+ if (strlen(Lang) == 2 || (strlen(Lang) == 5 && Lang[2] == '_'))
+ return true;
+
+ if (strcmp(Lang,"C") != 0)
+ _error->Warning("Wrong language code %s", Lang);
+
+ return false;
+}
+ /*}}}*/
+// IndexFile::LanguageCode - Return the Language Code /*{{{*/
+std::string pkgIndexFile::LanguageCode() {
+APT_IGNORE_DEPRECATED_PUSH
+ if (TranslationsAvailable() == false)
+ return "";
+ return APT::Configuration::getLanguages()[0];
+APT_IGNORE_DEPRECATED_POP
+}
+ /*}}}*/
+
+// IndexTarget - Constructor /*{{{*/
+IndexTarget::IndexTarget(std::string const &MetaKey, std::string const &ShortDesc,
+ std::string const &LongDesc, std::string const &URI, bool const IsOptional,
+ bool const KeepCompressed, std::map<std::string, std::string> const &Options) :
+ URI(URI), Description(LongDesc), ShortDesc(ShortDesc), MetaKey(MetaKey),
+ IsOptional(IsOptional), KeepCompressed(KeepCompressed), Options(Options)
+{
+}
+ /*}}}*/
+std::string IndexTarget::Option(OptionKeys const EnumKey) const /*{{{*/
+{
+ std::string Key;
+ switch (EnumKey)
+ {
+#define APT_CASE(X) case X: Key = #X; break
+ APT_CASE(SITE);
+ APT_CASE(RELEASE);
+ APT_CASE(COMPONENT);
+ APT_CASE(LANGUAGE);
+ APT_CASE(ARCHITECTURE);
+ APT_CASE(BASE_URI);
+ APT_CASE(REPO_URI);
+ APT_CASE(IDENTIFIER);
+ APT_CASE(TARGET_OF);
+ APT_CASE(CREATED_BY);
+ APT_CASE(FALLBACK_OF);
+ APT_CASE(PDIFFS);
+ APT_CASE(DEFAULTENABLED);
+ APT_CASE(COMPRESSIONTYPES);
+ APT_CASE(SOURCESENTRY);
+ APT_CASE(BY_HASH);
+ APT_CASE(KEEPCOMPRESSEDAS);
+ APT_CASE(ALLOW_INSECURE);
+ APT_CASE(ALLOW_WEAK);
+ APT_CASE(ALLOW_DOWNGRADE_TO_INSECURE);
+#undef APT_CASE
+ case FILENAME:
+ {
+ auto const M = Options.find("FILENAME");
+ if (M == Options.end())
+ return _config->FindDir("Dir::State::lists") + URItoFileName(URI);
+ return M->second;
+ }
+ case EXISTING_FILENAME:
+ std::string const filename = Option(FILENAME);
+ std::vector<std::string> const types = VectorizeString(Option(COMPRESSIONTYPES), ' ');
+ for (std::vector<std::string>::const_iterator t = types.begin(); t != types.end(); ++t)
+ {
+ if (t->empty())
+ continue;
+ std::string const file = (*t == "uncompressed") ? filename : (filename + "." + *t);
+ if (FileExists(file))
+ return file;
+ }
+ return "";
+ }
+ std::map<std::string,std::string>::const_iterator const M = Options.find(Key);
+ if (M == Options.end())
+ return "";
+ return M->second;
+}
+ /*}}}*/
+bool IndexTarget::OptionBool(OptionKeys const EnumKey) const /*{{{*/
+{
+ return StringToBool(Option(EnumKey), false);
+}
+ /*}}}*/
+std::string IndexTarget::Format(std::string format) const /*{{{*/
+{
+ for (std::map<std::string, std::string>::const_iterator O = Options.begin(); O != Options.end(); ++O)
+ {
+ format = SubstVar(format, std::string("$(") + O->first + ")", O->second);
+ }
+ format = SubstVar(format, "$(METAKEY)", MetaKey);
+ format = SubstVar(format, "$(SHORTDESC)", ShortDesc);
+ format = SubstVar(format, "$(DESCRIPTION)", Description);
+ format = SubstVar(format, "$(URI)", URI);
+ format = SubstVar(format, "$(FILENAME)", Option(IndexTarget::FILENAME));
+ return format;
+}
+ /*}}}*/
+
+pkgDebianIndexTargetFile::pkgDebianIndexTargetFile(IndexTarget const &Target, bool const Trusted) :/*{{{*/
+ pkgDebianIndexFile(Trusted), d(NULL), Target(Target)
+{
+}
+ /*}}}*/
+std::string pkgDebianIndexTargetFile::ArchiveURI(std::string const &File) const/*{{{*/
+{
+ return Target.Option(IndexTarget::REPO_URI) + File;
+}
+ /*}}}*/
+std::string pkgDebianIndexTargetFile::Describe(bool const Short) const /*{{{*/
+{
+ if (Short)
+ return Target.Description;
+ return Target.Description + " (" + IndexFileName() + ")";
+}
+ /*}}}*/
+std::string pkgDebianIndexTargetFile::IndexFileName() const /*{{{*/
+{
+ std::string const s = Target.Option(IndexTarget::FILENAME);
+ if (FileExists(s))
+ return s;
+
+ std::vector<std::string> const types = VectorizeString(Target.Option(IndexTarget::COMPRESSIONTYPES), ' ');
+ for (std::vector<std::string>::const_iterator t = types.begin(); t != types.end(); ++t)
+ {
+ std::string p = s + '.' + *t;
+ if (FileExists(p))
+ return p;
+ }
+ return s;
+}
+ /*}}}*/
+unsigned long pkgDebianIndexTargetFile::Size() const /*{{{*/
+{
+ unsigned long size = 0;
+
+ /* we need to ignore errors here; if the lists are absent, just return 0 */
+ _error->PushToStack();
+
+ FileFd f(IndexFileName(), FileFd::ReadOnly, FileFd::Extension);
+ if (!f.Failed())
+ size = f.Size();
+
+ if (_error->PendingError() == true)
+ size = 0;
+ _error->RevertToStack();
+
+ return size;
+}
+ /*}}}*/
+bool pkgDebianIndexTargetFile::Exists() const /*{{{*/
+{
+ return FileExists(IndexFileName());
+}
+ /*}}}*/
+std::string pkgDebianIndexTargetFile::GetArchitecture() const /*{{{*/
+{
+ return Target.Option(IndexTarget::ARCHITECTURE);
+}
+ /*}}}*/
+std::string pkgDebianIndexTargetFile::GetComponent() const /*{{{*/
+{
+ return Target.Option(IndexTarget::COMPONENT);
+}
+ /*}}}*/
+bool pkgDebianIndexTargetFile::OpenListFile(FileFd &Pkg, std::string const &FileName)/*{{{*/
+{
+ if (Pkg.Open(FileName, FileFd::ReadOnly, FileFd::Extension) == false)
+ return _error->Error("Problem opening %s",FileName.c_str());
+ return true;
+}
+ /*}}}*/
+std::string pkgDebianIndexTargetFile::GetProgressDescription() const
+{
+ return Target.Description;
+}
+
+pkgDebianIndexRealFile::pkgDebianIndexRealFile(std::string const &pFile, bool const Trusted) :/*{{{*/
+ pkgDebianIndexFile(Trusted), d(NULL)
+{
+ if (pFile.empty())
+ ;
+ else if (pFile == "/nonexistent/stdin")
+ File = pFile;
+ else
+ File = flAbsPath(pFile);
+}
+ /*}}}*/
+// IndexRealFile::Size - Return the size of the index /*{{{*/
+unsigned long pkgDebianIndexRealFile::Size() const
+{
+ struct stat S;
+ if (stat(File.c_str(),&S) != 0)
+ return 0;
+ return S.st_size;
+}
+ /*}}}*/
+bool pkgDebianIndexRealFile::Exists() const /*{{{*/
+{
+ return FileExists(File);
+}
+ /*}}}*/
+std::string pkgDebianIndexRealFile::Describe(bool const /*Short*/) const/*{{{*/
+{
+ return File;
+}
+ /*}}}*/
+std::string pkgDebianIndexRealFile::ArchiveURI(std::string const &/*File*/) const/*{{{*/
+{
+ return "file:" + File;
+}
+ /*}}}*/
+std::string pkgDebianIndexRealFile::IndexFileName() const /*{{{*/
+{
+ return File;
+}
+ /*}}}*/
+std::string pkgDebianIndexRealFile::GetProgressDescription() const
+{
+ return File;
+}
+bool pkgDebianIndexRealFile::OpenListFile(FileFd &Pkg, std::string const &FileName)/*{{{*/
+{
+ if (Pkg.Open(FileName, FileFd::ReadOnly, FileFd::Extension) == false)
+ return _error->Error("Problem opening %s",FileName.c_str());
+ return true;
+}
+ /*}}}*/
+
+pkgDebianIndexFile::pkgDebianIndexFile(bool const Trusted) : pkgIndexFile(Trusted)
+{
+}
+pkgDebianIndexFile::~pkgDebianIndexFile()
+{
+}
+pkgCacheListParser * pkgDebianIndexFile::CreateListParser(FileFd &Pkg)
+{
+ if (Pkg.IsOpen() == false)
+ return nullptr;
+ _error->PushToStack();
+ pkgCacheListParser * const Parser = new debListParser(&Pkg);
+ bool const newError = _error->PendingError();
+ _error->MergeWithStack();
+ if (newError)
+ {
+ delete Parser;
+ return nullptr;
+ }
+ else
+ return Parser;
+}
+bool pkgDebianIndexFile::Merge(pkgCacheGenerator &Gen,OpProgress * const Prog)
+{
+ std::string const PackageFile = IndexFileName();
+ FileFd Pkg;
+ if (OpenListFile(Pkg, PackageFile) == false)
+ return false;
+ _error->PushToStack();
+ std::unique_ptr<pkgCacheListParser> Parser(CreateListParser(Pkg));
+ bool const newError = _error->PendingError();
+ _error->MergeWithStack();
+ if (newError == false && Parser == nullptr)
+ return true;
+ if (Parser == NULL)
+ return false;
+
+ if (Prog != NULL)
+ Prog->SubProgress(0, GetProgressDescription());
+
+ if (Gen.SelectFile(PackageFile, *this, GetArchitecture(), GetComponent(), GetIndexFlags()) == false)
+ return _error->Error("Problem with SelectFile %s",PackageFile.c_str());
+
+ // Store the IMS information
+ pkgCache::PkgFileIterator File = Gen.GetCurFile();
+ pkgCacheGenerator::Dynamic<pkgCache::PkgFileIterator> DynFile(File);
+ File->Size = Pkg.FileSize();
+ File->mtime = Pkg.ModificationTime();
+
+ if (Gen.MergeList(*Parser) == false)
+ return _error->Error("Problem with MergeList %s",PackageFile.c_str());
+ return true;
+}
+pkgCache::PkgFileIterator pkgDebianIndexFile::FindInCache(pkgCache &Cache) const
+{
+ std::string const FileName = IndexFileName();
+ pkgCache::PkgFileIterator File = Cache.FileBegin();
+ for (; File.end() == false; ++File)
+ {
+ if (File.FileName() == NULL || FileName != File.FileName())
+ continue;
+
+ struct stat St;
+ if (stat(File.FileName(),&St) != 0)
+ {
+ if (_config->FindB("Debug::pkgCacheGen", false))
+ std::clog << "DebianIndexFile::FindInCache - stat failed on " << File.FileName() << std::endl;
+ return pkgCache::PkgFileIterator(Cache);
+ }
+ if ((map_filesize_t)St.st_size != File->Size || St.st_mtime != File->mtime)
+ {
+ if (_config->FindB("Debug::pkgCacheGen", false))
+ std::clog << "DebianIndexFile::FindInCache - size (" << St.st_size << " <> " << File->Size
+ << ") or mtime (" << St.st_mtime << " <> " << File->mtime
+ << ") doesn't match for " << File.FileName() << std::endl;
+ return pkgCache::PkgFileIterator(Cache);
+ }
+ return File;
+ }
+
+ return File;
+}
+
+APT_CONST pkgIndexFile::~pkgIndexFile() {}
+APT_CONST pkgDebianIndexTargetFile::~pkgDebianIndexTargetFile() {}
+APT_CONST pkgDebianIndexRealFile::~pkgDebianIndexRealFile() {}
diff --git a/apt-pkg/indexfile.h b/apt-pkg/indexfile.h
new file mode 100644
index 000000000..046216ab2
--- /dev/null
+++ b/apt-pkg/indexfile.h
@@ -0,0 +1,227 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Index File - Abstraction for an index of archive/source file.
+
+ There are 4 primary sorts of index files, all represented by this
+ class:
+
+ Binary index files
+ Binary translation files
+ Binary index files describing the local system
+ Source index files
+
+ They are all bundled together here, and the interfaces for
+ sources.list, acquire, cache gen and record parsing all use this class
+ to access the underlying representation.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_INDEXFILE_H
+#define PKGLIB_INDEXFILE_H
+
+#include <apt-pkg/srcrecords.h>
+#include <apt-pkg/pkgrecords.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/macros.h>
+
+#include <map>
+#include <string>
+
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+#endif
+#ifndef APT_10_CLEANER_HEADERS
+class pkgAcquire;
+#endif
+
+class pkgCacheGenerator;
+class pkgCacheListParser;
+class OpProgress;
+
+class IndexTarget /*{{{*/
+/** \brief Information about an index file. */
+{
+ public:
+ /** \brief A URI from which the index file can be downloaded. */
+ std::string URI;
+
+ /** \brief A description of the index file. */
+ std::string Description;
+
+ /** \brief A shorter description of the index file. */
+ std::string ShortDesc;
+
+ /** \brief The key by which this index file should be
+ looked up within the meta index file. */
+ std::string MetaKey;
+
+ /** \brief Is it okay if the file isn't found in the meta index */
+ bool IsOptional;
+
+ /** \brief If the file is downloaded compressed, do not unpack it */
+ bool KeepCompressed;
+
+ /** \brief options with which this target was created
+ Prefer the usage of #Option if at all possible.
+ Beware: Not all of these options are intended for public use */
+ std::map<std::string, std::string> Options;
+
+ IndexTarget(std::string const &MetaKey, std::string const &ShortDesc,
+ std::string const &LongDesc, std::string const &URI, bool const IsOptional,
+ bool const KeepCompressed, std::map<std::string, std::string> const &Options);
+
+ enum OptionKeys {
+ SITE,
+ RELEASE,
+ COMPONENT,
+ LANGUAGE,
+ ARCHITECTURE,
+ BASE_URI,
+ REPO_URI,
+ CREATED_BY,
+ TARGET_OF,
+ FILENAME,
+ EXISTING_FILENAME,
+ PDIFFS,
+ COMPRESSIONTYPES,
+ DEFAULTENABLED,
+ SOURCESENTRY,
+ BY_HASH,
+ KEEPCOMPRESSEDAS,
+ FALLBACK_OF,
+ IDENTIFIER,
+ ALLOW_INSECURE,
+ ALLOW_WEAK,
+ ALLOW_DOWNGRADE_TO_INSECURE,
+ };
+ std::string Option(OptionKeys const Key) const;
+ bool OptionBool(OptionKeys const Key) const;
+ std::string Format(std::string format) const;
+};
+ /*}}}*/
+
+class pkgIndexFile
+{
+ void * const d;
+ protected:
+ bool Trusted;
+
+ public:
+
+ class Type
+ {
+ public:
+
+ // Global list of Items supported
+ static Type **GlobalList;
+ static unsigned long GlobalListLen;
+ static Type *GetType(const char * const Type) APT_PURE;
+
+ const char *Label;
+
+ virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &/*File*/) const {return 0;};
+ virtual pkgSrcRecords::Parser *CreateSrcPkgParser(std::string const &/*File*/) const {return 0;};
+ Type();
+ virtual ~Type() {};
+ };
+
+ virtual const Type *GetType() const = 0;
+
+ // Return descriptive strings of various sorts
+ virtual std::string ArchiveInfo(pkgCache::VerIterator const &Ver) const;
+ virtual std::string SourceInfo(pkgSrcRecords::Parser const &Record,
+ pkgSrcRecords::File const &File) const;
+ virtual std::string Describe(bool const Short = false) const = 0;
+
+ // Interface for acquire
+ virtual std::string ArchiveURI(std::string const &/*File*/) const {return std::string();};
+
+ // Interface for the record parsers
+ virtual pkgSrcRecords::Parser *CreateSrcParser() const {return 0;};
+
+ // Interface for the Cache Generator
+ virtual bool Exists() const = 0;
+ virtual bool HasPackages() const = 0;
+ virtual unsigned long Size() const = 0;
+ virtual bool Merge(pkgCacheGenerator &/*Gen*/, OpProgress* const /*Prog*/) { return true; };
+ virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const;
+
+ APT_DEPRECATED_MSG("These methods make no sense anymore with multi-language support") static bool TranslationsAvailable();
+ /* No intern need for this method anymore as the check for correctness
+ is already done in getLanguages(). Note also that this check is
+ rather bad (doesn't take three character like ast into account).*/
+ APT_DEPRECATED_MSG("These methods make no sense anymore with multi-language support") static bool CheckLanguageCode(const char * const Lang);
+ /* As we have now possibly more than one LanguageCode this method is
+ superseded by a) private classmembers or b) getLanguages() */
+ APT_DEPRECATED_MSG("These methods make no sense anymore with multi-language support") static std::string LanguageCode();
+
+ bool IsTrusted() const { return Trusted; };
+
+ explicit pkgIndexFile(bool const Trusted);
+ virtual ~pkgIndexFile();
+};
+
+class pkgDebianIndexFile : public pkgIndexFile
+{
+protected:
+ virtual std::string IndexFileName() const = 0;
+ virtual std::string GetComponent() const = 0;
+ virtual std::string GetArchitecture() const = 0;
+ virtual std::string GetProgressDescription() const = 0;
+ virtual uint8_t GetIndexFlags() const = 0;
+ virtual bool OpenListFile(FileFd &Pkg, std::string const &FileName) = 0;
+ APT_HIDDEN virtual pkgCacheListParser * CreateListParser(FileFd &Pkg);
+
+public:
+ virtual bool Merge(pkgCacheGenerator &Gen, OpProgress* const Prog) APT_OVERRIDE;
+ virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const APT_OVERRIDE;
+
+ explicit pkgDebianIndexFile(bool const Trusted);
+ virtual ~pkgDebianIndexFile();
+};
+
+class pkgDebianIndexTargetFile : public pkgDebianIndexFile
+{
+ void * const d;
+protected:
+ IndexTarget const Target;
+
+ virtual std::string IndexFileName() const APT_OVERRIDE;
+ virtual std::string GetComponent() const APT_OVERRIDE;
+ virtual std::string GetArchitecture() const APT_OVERRIDE;
+ virtual std::string GetProgressDescription() const APT_OVERRIDE;
+ virtual bool OpenListFile(FileFd &Pkg, std::string const &FileName) APT_OVERRIDE;
+
+public:
+ virtual std::string ArchiveURI(std::string const &File) const APT_OVERRIDE;
+ virtual std::string Describe(bool const Short = false) const APT_OVERRIDE;
+ virtual bool Exists() const APT_OVERRIDE;
+ virtual unsigned long Size() const APT_OVERRIDE;
+
+ pkgDebianIndexTargetFile(IndexTarget const &Target, bool const Trusted);
+ virtual ~pkgDebianIndexTargetFile();
+};
+
+class pkgDebianIndexRealFile : public pkgDebianIndexFile
+{
+ void * const d;
+protected:
+ std::string File;
+
+ virtual std::string IndexFileName() const APT_OVERRIDE;
+ virtual std::string GetProgressDescription() const APT_OVERRIDE;
+ virtual bool OpenListFile(FileFd &Pkg, std::string const &FileName) APT_OVERRIDE;
+public:
+ virtual std::string Describe(bool const /*Short*/ = false) const APT_OVERRIDE;
+ virtual bool Exists() const APT_OVERRIDE;
+ virtual unsigned long Size() const APT_OVERRIDE;
+ virtual std::string ArchiveURI(std::string const &/*File*/) const APT_OVERRIDE;
+
+ pkgDebianIndexRealFile(std::string const &File, bool const Trusted);
+ virtual ~pkgDebianIndexRealFile();
+};
+
+#endif
diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc
new file mode 100644
index 000000000..00d991027
--- /dev/null
+++ b/apt-pkg/init.cc
@@ -0,0 +1,291 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: init.cc,v 1.20 2003/02/09 20:31:05 doogie Exp $
+/* ######################################################################
+
+ Init - Initialize the package library
+
+ ##################################################################### */
+ /*}}}*/
+// Include files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/init.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/macros.h>
+
+#include <string.h>
+#include <cstdlib>
+#include <fstream>
+#include <sstream>
+#include <string>
+#include <unordered_map>
+#include <vector>
+
+#include <apti18n.h>
+ /*}}}*/
+
+#define Stringfy_(x) # x
+#define Stringfy(x) Stringfy_(x)
+const char *pkgVersion = PACKAGE_VERSION;
+const char *pkgLibVersion = Stringfy(APT_PKG_MAJOR) "."
+ Stringfy(APT_PKG_MINOR) "."
+ Stringfy(APT_PKG_RELEASE);
+namespace APT {
+ APT_HIDDEN extern std::unordered_map<std::string, std::vector<std::string>> ArchToTupleMap;
+}
+
+// Splits by whitespace. There may be continuous spans of whitespace - they
+// will be considered as one.
+static std::vector<std::string> split(std::string const & s)
+{
+ std::vector<std::string> vec;
+ std::istringstream iss(s);
+ iss.imbue(std::locale::classic());
+ for(std::string current_s; iss >> current_s; )
+ vec.push_back(current_s);
+ return vec;
+}
+
+
+// pkgInitArchTupleMap - Initialize the architecture tuple map /*{{{*/
+// ---------------------------------------------------------------------
+/* This initializes */
+static bool pkgInitArchTupleMap()
+{
+ auto tuplepath = _config->FindFile("Dir::dpkg::tupletable", DPKG_DATADIR "/tupletable");
+ auto tripletpath = _config->FindFile("Dir::dpkg::triplettable", DPKG_DATADIR "/triplettable");
+ auto cpupath = _config->FindFile("Dir::dpkg::cputable", DPKG_DATADIR "/cputable");
+
+ // Load a list of CPUs
+ std::vector<std::string> cpus;
+ std::ifstream cputable(cpupath);
+ for (std::string cpuline; std::getline(cputable, cpuline); )
+ {
+ if (cpuline[0] == '#' || cpuline[0] == '\0')
+ continue;
+ auto cpurow = split(cpuline);
+ auto cpu = APT::String::Strip(cpurow.at(0));
+
+ cpus.push_back(cpu);
+ }
+ if (!cputable.eof())
+ return _error->Error("Error reading the CPU table");
+
+ // Load the architecture tuple
+ std::ifstream tupletable;
+ if (FileExists(tuplepath))
+ tupletable.open(tuplepath);
+ else if (FileExists(tripletpath))
+ tupletable.open(tripletpath);
+ else
+ return _error->Error("Cannot find dpkg tuplet or triplet table");
+
+ APT::ArchToTupleMap.clear();
+ for (std::string tupleline; std::getline(tupletable, tupleline); )
+ {
+ if (tupleline[0] == '#' || tupleline[0] == '\0')
+ continue;
+
+ std::vector<std::string> tuplerow = split(tupleline);
+
+ auto tuple = APT::String::Strip(tuplerow.at(0));
+ auto arch = APT::String::Strip(tuplerow.at(1));
+
+ if (tuple.find("<cpu>") == tuple.npos && arch.find("<cpu>") == arch.npos)
+ {
+ APT::ArchToTupleMap.insert({arch, VectorizeString(tuple, '-')});
+ }
+ else
+ {
+ for (auto && cpu : cpus)
+ {
+ auto mytuple = SubstVar(tuple, std::string("<cpu>"), cpu);
+ auto myarch = SubstVar(arch, std::string("<cpu>"), cpu);
+
+ APT::ArchToTupleMap.insert({myarch, VectorizeString(mytuple, '-')});
+ }
+ }
+ }
+ if (!tupletable.eof())
+ return _error->Error("Error reading the Tuple table");
+
+ return true;
+}
+ /*}}}*/
+
+
+// pkgInitConfig - Initialize the configuration class /*{{{*/
+// ---------------------------------------------------------------------
+/* Directories are specified in such a way that the FindDir function will
+ understand them. That is, if they don't start with a / then their parent
+ is prepended, this allows a fair degree of flexability. */
+bool pkgInitConfig(Configuration &Cnf)
+{
+ // General APT things
+ Cnf.CndSet("APT::Architecture", COMMON_ARCH);
+ if (Cnf.Exists("APT::Build-Essential") == false)
+ Cnf.Set("APT::Build-Essential::", "build-essential");
+ Cnf.CndSet("APT::Install-Recommends", true);
+ Cnf.CndSet("APT::Install-Suggests", false);
+ Cnf.CndSet("Dir","/");
+
+ // State
+ Cnf.CndSet("Dir::State", STATE_DIR + 1);
+ Cnf.CndSet("Dir::State::lists","lists/");
+ Cnf.CndSet("Dir::State::cdroms","cdroms.list");
+ Cnf.CndSet("Dir::State::mirrors","mirrors/");
+
+ // Cache
+ Cnf.CndSet("Dir::Cache", CACHE_DIR + 1);
+ Cnf.CndSet("Dir::Cache::archives","archives/");
+ Cnf.CndSet("Dir::Cache::srcpkgcache","srcpkgcache.bin");
+ Cnf.CndSet("Dir::Cache::pkgcache","pkgcache.bin");
+
+ // Configuration
+ Cnf.CndSet("Dir::Etc", CONF_DIR + 1);
+ Cnf.CndSet("Dir::Etc::sourcelist","sources.list");
+ Cnf.CndSet("Dir::Etc::sourceparts","sources.list.d");
+ Cnf.CndSet("Dir::Etc::main","apt.conf");
+ Cnf.CndSet("Dir::Etc::netrc", "auth.conf");
+ Cnf.CndSet("Dir::Etc::parts","apt.conf.d");
+ Cnf.CndSet("Dir::Etc::preferences","preferences");
+ Cnf.CndSet("Dir::Etc::preferencesparts","preferences.d");
+ Cnf.CndSet("Dir::Etc::trusted", "trusted.gpg");
+ Cnf.CndSet("Dir::Etc::trustedparts","trusted.gpg.d");
+ Cnf.CndSet("Dir::Bin::methods", LIBEXEC_DIR "/methods");
+ Cnf.CndSet("Dir::Bin::solvers::",LIBEXEC_DIR "/solvers");
+ Cnf.CndSet("Dir::Bin::planners::",LIBEXEC_DIR "/planners");
+ Cnf.CndSet("Dir::Media::MountPath","/media/apt");
+
+ // State
+ Cnf.CndSet("Dir::Log", LOG_DIR + 1);
+ Cnf.CndSet("Dir::Log::Terminal","term.log");
+ Cnf.CndSet("Dir::Log::History","history.log");
+ Cnf.CndSet("Dir::Log::Planner","eipp.log.xz");
+
+ Cnf.Set("Dir::Ignore-Files-Silently::", "~$");
+ Cnf.Set("Dir::Ignore-Files-Silently::", "\\.disabled$");
+ Cnf.Set("Dir::Ignore-Files-Silently::", "\\.bak$");
+ Cnf.Set("Dir::Ignore-Files-Silently::", "\\.dpkg-[a-z]+$");
+ Cnf.Set("Dir::Ignore-Files-Silently::", "\\.ucf-[a-z]+$");
+ Cnf.Set("Dir::Ignore-Files-Silently::", "\\.save$");
+ Cnf.Set("Dir::Ignore-Files-Silently::", "\\.orig$");
+ Cnf.Set("Dir::Ignore-Files-Silently::", "\\.distUpgrade$");
+
+ // Repository security
+ Cnf.CndSet("Acquire::AllowInsecureRepositories", false);
+ Cnf.CndSet("Acquire::AllowWeakRepositories", false);
+ Cnf.CndSet("Acquire::AllowDowngradeToInsecureRepositories", false);
+
+ // Default cdrom mount point
+ Cnf.CndSet("Acquire::cdrom::mount", "/media/cdrom/");
+
+ // The default user we drop to in the methods
+ Cnf.CndSet("APT::Sandbox::User", "_apt");
+
+ Cnf.CndSet("Acquire::IndexTargets::deb::Packages::MetaKey", "$(COMPONENT)/binary-$(ARCHITECTURE)/Packages");
+ Cnf.CndSet("Acquire::IndexTargets::deb::Packages::flatMetaKey", "Packages");
+ Cnf.CndSet("Acquire::IndexTargets::deb::Packages::ShortDescription", "Packages");
+ Cnf.CndSet("Acquire::IndexTargets::deb::Packages::Description", "$(RELEASE)/$(COMPONENT) $(ARCHITECTURE) Packages");
+ Cnf.CndSet("Acquire::IndexTargets::deb::Packages::flatDescription", "$(RELEASE) Packages");
+ Cnf.CndSet("Acquire::IndexTargets::deb::Packages::Optional", false);
+ Cnf.CndSet("Acquire::IndexTargets::deb::Translations::MetaKey", "$(COMPONENT)/i18n/Translation-$(LANGUAGE)");
+ Cnf.CndSet("Acquire::IndexTargets::deb::Translations::flatMetaKey", "$(LANGUAGE)");
+ Cnf.CndSet("Acquire::IndexTargets::deb::Translations::ShortDescription", "Translation-$(LANGUAGE)");
+ Cnf.CndSet("Acquire::IndexTargets::deb::Translations::Description", "$(RELEASE)/$(COMPONENT) Translation-$(LANGUAGE)");
+ Cnf.CndSet("Acquire::IndexTargets::deb::Translations::flatDescription", "$(RELEASE) Translation-$(LANGUAGE)");
+ Cnf.CndSet("Acquire::IndexTargets::deb-src::Sources::MetaKey", "$(COMPONENT)/source/Sources");
+ Cnf.CndSet("Acquire::IndexTargets::deb-src::Sources::flatMetaKey", "Sources");
+ Cnf.CndSet("Acquire::IndexTargets::deb-src::Sources::ShortDescription", "Sources");
+ Cnf.CndSet("Acquire::IndexTargets::deb-src::Sources::Description", "$(RELEASE)/$(COMPONENT) Sources");
+ Cnf.CndSet("Acquire::IndexTargets::deb-src::Sources::flatDescription", "$(RELEASE) Sources");
+ Cnf.CndSet("Acquire::IndexTargets::deb-src::Sources::Optional", false);
+
+ Cnf.CndSet("Acquire::Changelogs::URI::Origin::Debian", "http://metadata.ftp-master.debian.org/changelogs/@CHANGEPATH@_changelog");
+ Cnf.CndSet("Acquire::Changelogs::URI::Origin::Tanglu", "http://metadata.tanglu.org/changelogs/@CHANGEPATH@_changelog");
+ Cnf.CndSet("Acquire::Changelogs::URI::Origin::Ubuntu", "http://changelogs.ubuntu.com/changelogs/pool/@CHANGEPATH@/changelog");
+ Cnf.CndSet("Acquire::Changelogs::URI::Origin::Ultimedia", "http://packages.ultimediaos.com/changelogs/pool/@CHANGEPATH@/changelog.txt");
+ Cnf.CndSet("Acquire::Changelogs::AlwaysOnline::Origin::Ubuntu", true);
+
+ bool Res = true;
+
+ // Read an alternate config file
+ const char *Cfg = getenv("APT_CONFIG");
+ if (Cfg != 0 && strlen(Cfg) != 0)
+ {
+ if (RealFileExists(Cfg) == true)
+ Res &= ReadConfigFile(Cnf,Cfg);
+ else
+ _error->WarningE("RealFileExists",_("Unable to read %s"),Cfg);
+ }
+
+ // Read the configuration parts dir
+ std::string const Parts = Cnf.FindDir("Dir::Etc::parts", "/dev/null");
+ if (DirectoryExists(Parts) == true)
+ Res &= ReadConfigDir(Cnf,Parts);
+ else if (APT::String::Endswith(Parts, "/dev/null") == false)
+ _error->WarningE("DirectoryExists",_("Unable to read %s"),Parts.c_str());
+
+ // Read the main config file
+ std::string const FName = Cnf.FindFile("Dir::Etc::main", "/dev/null");
+ if (RealFileExists(FName) == true)
+ Res &= ReadConfigFile(Cnf,FName);
+
+ if (Res == false)
+ return false;
+
+ if (Cnf.FindB("Debug::pkgInitConfig",false) == true)
+ Cnf.Dump();
+
+#ifdef APT_DOMAIN
+ if (Cnf.Exists("Dir::Locale"))
+ {
+ bindtextdomain(APT_DOMAIN,Cnf.FindDir("Dir::Locale").c_str());
+ bindtextdomain(textdomain(0),Cnf.FindDir("Dir::Locale").c_str());
+ }
+#endif
+
+ return true;
+}
+ /*}}}*/
+// pkgInitSystem - Initialize the _system calss /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgInitSystem(Configuration &Cnf,pkgSystem *&Sys)
+{
+ Sys = 0;
+ std::string Label = Cnf.Find("Apt::System","");
+ if (Label.empty() == false)
+ {
+ Sys = pkgSystem::GetSystem(Label.c_str());
+ if (Sys == 0)
+ return _error->Error(_("Packaging system '%s' is not supported"),Label.c_str());
+ }
+ else
+ {
+ signed MaxScore = 0;
+ for (unsigned I = 0; I != pkgSystem::GlobalListLen; I++)
+ {
+ signed Score = pkgSystem::GlobalList[I]->Score(Cnf);
+ if (Score > MaxScore)
+ {
+ MaxScore = Score;
+ Sys = pkgSystem::GlobalList[I];
+ }
+ }
+
+ if (Sys == 0)
+ return _error->Error(_("Unable to determine a suitable packaging system type"));
+ }
+
+ if (pkgInitArchTupleMap() == false)
+ return false;
+
+ return Sys->Initialize(Cnf);
+}
+ /*}}}*/
diff --git a/apt-pkg/init.h b/apt-pkg/init.h
new file mode 100644
index 000000000..d062392e3
--- /dev/null
+++ b/apt-pkg/init.h
@@ -0,0 +1,32 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Init - Initialize the package library
+
+ This function must be called to configure the config class before
+ calling many APT library functions.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_INIT_H
+#define PKGLIB_INIT_H
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/pkgsystem.h>
+#endif
+#ifndef APT_10_CLEANER_HEADERS
+#include <apt-pkg/macros.h>
+#endif
+
+class pkgSystem;
+class Configuration;
+
+extern const char *pkgVersion;
+extern const char *pkgLibVersion;
+
+bool pkgInitConfig(Configuration &Cnf);
+bool pkgInitSystem(Configuration &Cnf,pkgSystem *&Sys);
+
+#endif
diff --git a/apt-pkg/install-progress.cc b/apt-pkg/install-progress.cc
new file mode 100644
index 000000000..6c3e51b2c
--- /dev/null
+++ b/apt-pkg/install-progress.cc
@@ -0,0 +1,425 @@
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/install-progress.h>
+
+#include <signal.h>
+#include <unistd.h>
+#include <iostream>
+#include <vector>
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <algorithm>
+#include <stdio.h>
+#include <sstream>
+#include <cmath>
+
+#include <apti18n.h>
+
+namespace APT {
+namespace Progress {
+
+PackageManager::PackageManager() : d(NULL), percentage(0.0), last_reported_progress(-1) {}
+PackageManager::~PackageManager() {}
+
+/* Return a APT::Progress::PackageManager based on the global
+ * apt configuration (i.e. APT::Status-Fd and APT::Status-deb822-Fd)
+ */
+PackageManager* PackageManagerProgressFactory()
+{
+ // select the right progress
+ int status_fd = _config->FindI("APT::Status-Fd", -1);
+ int status_deb822_fd = _config->FindI("APT::Status-deb822-Fd", -1);
+
+ APT::Progress::PackageManager *progress = NULL;
+ if (status_deb822_fd > 0)
+ progress = new APT::Progress::PackageManagerProgressDeb822Fd(
+ status_deb822_fd);
+ else if (status_fd > 0)
+ progress = new APT::Progress::PackageManagerProgressFd(status_fd);
+ else if(_config->FindB("Dpkg::Progress-Fancy", false) == true)
+ progress = new APT::Progress::PackageManagerFancy();
+ else if (_config->FindB("Dpkg::Progress",
+ _config->FindB("DpkgPM::Progress", false)) == true)
+ progress = new APT::Progress::PackageManagerText();
+ else
+ progress = new APT::Progress::PackageManager();
+ return progress;
+}
+
+bool PackageManager::StatusChanged(std::string /*PackageName*/,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string /*HumanReadableAction*/)
+{
+ int reporting_steps = _config->FindI("DpkgPM::Reporting-Steps", 1);
+ percentage = StepsDone/(float)TotalSteps * 100.0;
+ strprintf(progress_str, _("Progress: [%3i%%]"), (int)percentage);
+
+ if(percentage < (last_reported_progress + reporting_steps))
+ return false;
+
+ return true;
+}
+
+PackageManagerProgressFd::PackageManagerProgressFd(int progress_fd)
+ : d(NULL), StepsDone(0), StepsTotal(1)
+{
+ OutStatusFd = progress_fd;
+}
+PackageManagerProgressFd::~PackageManagerProgressFd() {}
+
+void PackageManagerProgressFd::WriteToStatusFd(std::string s)
+{
+ if(OutStatusFd <= 0)
+ return;
+ FileFd::Write(OutStatusFd, s.c_str(), s.size());
+}
+
+static std::string GetProgressFdString(char const * const status,
+ char const * const pkg, unsigned long long Done,
+ unsigned long long Total, char const * const msg)
+{
+ float const progress{Done / static_cast<float>(Total) * 100};
+ std::ostringstream str;
+ str.imbue(std::locale::classic());
+ str.precision(4);
+ str << status << ':' << pkg << ':' << std::fixed << progress << ':' << msg << '\n';
+ return str.str();
+}
+
+void PackageManagerProgressFd::StartDpkg()
+{
+ if(OutStatusFd <= 0)
+ return;
+
+ // FIXME: use SetCloseExec here once it taught about throwing
+ // exceptions instead of doing _exit(100) on failure
+ fcntl(OutStatusFd,F_SETFD,FD_CLOEXEC);
+
+ // send status information that we are about to fork dpkg
+ WriteToStatusFd(GetProgressFdString("pmstatus", "dpkg-exec", StepsDone, StepsTotal, _("Running dpkg")));
+}
+
+APT_CONST void PackageManagerProgressFd::Stop()
+{
+}
+
+void PackageManagerProgressFd::Error(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string ErrorMessage)
+{
+ WriteToStatusFd(GetProgressFdString("pmerror", PackageName.c_str(),
+ StepsDone, TotalSteps, ErrorMessage.c_str()));
+}
+
+void PackageManagerProgressFd::ConffilePrompt(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string ConfMessage)
+{
+ WriteToStatusFd(GetProgressFdString("pmconffile", PackageName.c_str(),
+ StepsDone, TotalSteps, ConfMessage.c_str()));
+}
+
+
+bool PackageManagerProgressFd::StatusChanged(std::string PackageName,
+ unsigned int xStepsDone,
+ unsigned int xTotalSteps,
+ std::string pkg_action)
+{
+ StepsDone = xStepsDone;
+ StepsTotal = xTotalSteps;
+
+ WriteToStatusFd(GetProgressFdString("pmstatus", StringSplit(PackageName, ":")[0].c_str(),
+ StepsDone, StepsTotal, pkg_action.c_str()));
+
+ if(_config->FindB("Debug::APT::Progress::PackageManagerFd", false) == true)
+ std::cerr << "progress: " << PackageName << " " << xStepsDone
+ << " " << xTotalSteps << " " << pkg_action
+ << std::endl;
+
+
+ return true;
+}
+
+
+PackageManagerProgressDeb822Fd::PackageManagerProgressDeb822Fd(int progress_fd)
+ : d(NULL), StepsDone(0), StepsTotal(1)
+{
+ OutStatusFd = progress_fd;
+}
+PackageManagerProgressDeb822Fd::~PackageManagerProgressDeb822Fd() {}
+
+void PackageManagerProgressDeb822Fd::WriteToStatusFd(std::string s)
+{
+ FileFd::Write(OutStatusFd, s.c_str(), s.size());
+}
+
+static std::string GetProgressDeb822String(char const * const status,
+ char const * const pkg, unsigned long long Done,
+ unsigned long long Total, char const * const msg)
+{
+ float const progress{Done / static_cast<float>(Total) * 100};
+ std::ostringstream str;
+ str.imbue(std::locale::classic());
+ str.precision(4);
+ str << "Status: " << status << '\n';
+ if (pkg != nullptr)
+ str << "Package: " << pkg << '\n';
+ str << "Percent: " << std::fixed << progress << '\n'
+ << "Message: " << msg << "\n\n";
+ return str.str();
+}
+
+void PackageManagerProgressDeb822Fd::StartDpkg()
+{
+ // FIXME: use SetCloseExec here once it taught about throwing
+ // exceptions instead of doing _exit(100) on failure
+ fcntl(OutStatusFd,F_SETFD,FD_CLOEXEC);
+
+ WriteToStatusFd(GetProgressDeb822String("progress", nullptr, StepsDone, StepsTotal, _("Running dpkg")));
+}
+
+APT_CONST void PackageManagerProgressDeb822Fd::Stop()
+{
+}
+
+void PackageManagerProgressDeb822Fd::Error(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string ErrorMessage)
+{
+ WriteToStatusFd(GetProgressDeb822String("Error", PackageName.c_str(), StepsDone, TotalSteps, ErrorMessage.c_str()));
+}
+
+void PackageManagerProgressDeb822Fd::ConffilePrompt(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string ConfMessage)
+{
+ WriteToStatusFd(GetProgressDeb822String("ConfFile", PackageName.c_str(), StepsDone, TotalSteps, ConfMessage.c_str()));
+}
+
+
+bool PackageManagerProgressDeb822Fd::StatusChanged(std::string PackageName,
+ unsigned int xStepsDone,
+ unsigned int xTotalSteps,
+ std::string message)
+{
+ StepsDone = xStepsDone;
+ StepsTotal = xTotalSteps;
+
+ WriteToStatusFd(GetProgressDeb822String("progress", PackageName.c_str(), StepsDone, StepsTotal, message.c_str()));
+ return true;
+}
+
+
+PackageManagerFancy::PackageManagerFancy()
+ : d(NULL), child_pty(-1)
+{
+ // setup terminal size
+ old_SIGWINCH = signal(SIGWINCH, PackageManagerFancy::staticSIGWINCH);
+ instances.push_back(this);
+}
+std::vector<PackageManagerFancy*> PackageManagerFancy::instances;
+
+PackageManagerFancy::~PackageManagerFancy()
+{
+ instances.erase(find(instances.begin(), instances.end(), this));
+ signal(SIGWINCH, old_SIGWINCH);
+}
+
+void PackageManagerFancy::staticSIGWINCH(int signum)
+{
+ std::vector<PackageManagerFancy *>::const_iterator I;
+ for(I = instances.begin(); I != instances.end(); ++I)
+ (*I)->HandleSIGWINCH(signum);
+}
+
+PackageManagerFancy::TermSize
+PackageManagerFancy::GetTerminalSize()
+{
+ struct winsize win;
+ PackageManagerFancy::TermSize s = { 0, 0 };
+
+ // FIXME: get from "child_pty" instead?
+ if(ioctl(STDOUT_FILENO, TIOCGWINSZ, (char *)&win) != 0)
+ return s;
+
+ if(_config->FindB("Debug::InstallProgress::Fancy", false) == true)
+ std::cerr << "GetTerminalSize: " << win.ws_row << " x " << win.ws_col << std::endl;
+
+ s.rows = win.ws_row;
+ s.columns = win.ws_col;
+ return s;
+}
+
+void PackageManagerFancy::SetupTerminalScrollArea(int nr_rows)
+{
+ if(_config->FindB("Debug::InstallProgress::Fancy", false) == true)
+ std::cerr << "SetupTerminalScrollArea: " << nr_rows << std::endl;
+
+ if (unlikely(nr_rows <= 1))
+ return;
+
+ // scroll down a bit to avoid visual glitch when the screen
+ // area shrinks by one row
+ std::cout << "\n";
+
+ // save cursor
+ std::cout << "\0337";
+
+ // set scroll region (this will place the cursor in the top left)
+ std::cout << "\033[0;" << std::to_string(nr_rows - 1) << "r";
+
+ // restore cursor but ensure its inside the scrolling area
+ std::cout << "\0338";
+ static const char *move_cursor_up = "\033[1A";
+ std::cout << move_cursor_up;
+
+ // ensure its flushed
+ std::flush(std::cout);
+
+ // setup tty size to ensure xterm/linux console are working properly too
+ // see bug #731738
+ struct winsize win;
+ if (ioctl(child_pty, TIOCGWINSZ, (char *)&win) != -1)
+ {
+ win.ws_row = nr_rows - 1;
+ ioctl(child_pty, TIOCSWINSZ, (char *)&win);
+ }
+}
+
+void PackageManagerFancy::HandleSIGWINCH(int)
+{
+ int const nr_terminal_rows = GetTerminalSize().rows;
+ SetupTerminalScrollArea(nr_terminal_rows);
+ DrawStatusLine();
+}
+
+void PackageManagerFancy::Start(int a_child_pty)
+{
+ child_pty = a_child_pty;
+ int const nr_terminal_rows = GetTerminalSize().rows;
+ SetupTerminalScrollArea(nr_terminal_rows);
+}
+
+void PackageManagerFancy::Stop()
+{
+ int const nr_terminal_rows = GetTerminalSize().rows;
+ if (nr_terminal_rows > 0)
+ {
+ SetupTerminalScrollArea(nr_terminal_rows + 1);
+
+ // override the progress line (sledgehammer)
+ static const char* clear_screen_below_cursor = "\033[J";
+ std::cout << clear_screen_below_cursor;
+ std::flush(std::cout);
+ }
+ child_pty = -1;
+}
+
+std::string
+PackageManagerFancy::GetTextProgressStr(float Percent, int OutputSize)
+{
+ std::string output;
+ if (unlikely(OutputSize < 3))
+ return output;
+
+ int const BarSize = OutputSize - 2; // bar without the leading "[" and trailing "]"
+ int const BarDone = std::max(0, std::min(BarSize, static_cast<int>(std::floor(Percent * BarSize))));
+ output.append("[");
+ std::fill_n(std::fill_n(std::back_inserter(output), BarDone, '#'), BarSize - BarDone, '.');
+ output.append("]");
+ return output;
+}
+
+bool PackageManagerFancy::StatusChanged(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string HumanReadableAction)
+{
+ if (!PackageManager::StatusChanged(PackageName, StepsDone, TotalSteps,
+ HumanReadableAction))
+ return false;
+
+ return DrawStatusLine();
+}
+bool PackageManagerFancy::DrawStatusLine()
+{
+ PackageManagerFancy::TermSize const size = GetTerminalSize();
+ if (unlikely(size.rows < 1 || size.columns < 1))
+ return false;
+
+ static std::string save_cursor = "\0337";
+ static std::string restore_cursor = "\0338";
+
+ // green
+ static std::string set_bg_color = DeQuoteString(
+ _config->Find("Dpkg::Progress-Fancy::Progress-fg", "%1b[42m"));
+ // black
+ static std::string set_fg_color = DeQuoteString(
+ _config->Find("Dpkg::Progress-Fancy::Progress-bg", "%1b[30m"));
+
+ static std::string restore_bg = "\033[49m";
+ static std::string restore_fg = "\033[39m";
+
+ std::cout << save_cursor
+ // move cursor position to last row
+ << "\033[" << std::to_string(size.rows) << ";0f"
+ << set_bg_color
+ << set_fg_color
+ << progress_str
+ << restore_bg
+ << restore_fg;
+ std::flush(std::cout);
+
+ // draw text progress bar
+ if (_config->FindB("Dpkg::Progress-Fancy::Progress-Bar", true))
+ {
+ int padding = 4;
+ float progressbar_size = size.columns - padding - progress_str.size();
+ float current_percent = percentage / 100.0;
+ std::cout << " "
+ << GetTextProgressStr(current_percent, progressbar_size)
+ << " ";
+ std::flush(std::cout);
+ }
+
+ // restore
+ std::cout << restore_cursor;
+ std::flush(std::cout);
+
+ last_reported_progress = percentage;
+
+ return true;
+}
+
+bool PackageManagerText::StatusChanged(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string HumanReadableAction)
+{
+ if (!PackageManager::StatusChanged(PackageName, StepsDone, TotalSteps, HumanReadableAction))
+ return false;
+
+ std::cout << progress_str << "\r\n";
+ std::flush(std::cout);
+
+ last_reported_progress = percentage;
+
+ return true;
+}
+
+PackageManagerText::PackageManagerText() : PackageManager(), d(NULL) {}
+PackageManagerText::~PackageManagerText() {}
+
+
+
+
+} // namespace progress
+} // namespace apt
diff --git a/apt-pkg/install-progress.h b/apt-pkg/install-progress.h
new file mode 100644
index 000000000..b5c133676
--- /dev/null
+++ b/apt-pkg/install-progress.h
@@ -0,0 +1,176 @@
+#ifndef PKGLIB_IPROGRESS_H
+#define PKGLIB_IPROGRESS_H
+
+#include <apt-pkg/macros.h>
+
+#include <string>
+#include <unistd.h>
+#include <signal.h>
+#include <vector>
+
+namespace APT {
+namespace Progress {
+
+ class PackageManager;
+ PackageManager* PackageManagerProgressFactory();
+
+ class PackageManager
+ {
+ private:
+ /** \brief dpointer placeholder */
+ void * const d;
+
+ protected:
+ std::string progress_str;
+ float percentage;
+ int last_reported_progress;
+
+ public:
+ PackageManager();
+ virtual ~PackageManager();
+
+ /* Global Start/Stop */
+ virtual void Start(int /*child_pty*/=-1) {};
+ virtual void Stop() {};
+
+ /* When dpkg is invoked (may happen multiple times for each
+ * install/remove block
+ */
+ virtual void StartDpkg() {};
+
+ virtual pid_t fork() {return ::fork(); };
+
+ virtual void Pulse() {};
+ virtual long GetPulseInterval() {
+ return 50000000;
+ };
+
+ virtual bool StatusChanged(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string HumanReadableAction);
+ virtual void Error(std::string /*PackageName*/,
+ unsigned int /*StepsDone*/,
+ unsigned int /*TotalSteps*/,
+ std::string /*ErrorMessage*/) {}
+ virtual void ConffilePrompt(std::string /*PackageName*/,
+ unsigned int /*StepsDone*/,
+ unsigned int /*TotalSteps*/,
+ std::string /*ConfMessage*/) {}
+ };
+
+ class PackageManagerProgressFd : public PackageManager
+ {
+ void * const d;
+ protected:
+ int OutStatusFd;
+ int StepsDone;
+ int StepsTotal;
+ void WriteToStatusFd(std::string msg);
+
+ public:
+ explicit PackageManagerProgressFd(int progress_fd);
+ virtual ~PackageManagerProgressFd();
+
+ virtual void StartDpkg() APT_OVERRIDE;
+ virtual void Stop() APT_OVERRIDE;
+
+ virtual bool StatusChanged(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string HumanReadableAction) APT_OVERRIDE;
+ virtual void Error(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string ErrorMessage) APT_OVERRIDE;
+ virtual void ConffilePrompt(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string ConfMessage) APT_OVERRIDE;
+
+ };
+
+ class PackageManagerProgressDeb822Fd : public PackageManager
+ {
+ void * const d;
+ protected:
+ int OutStatusFd;
+ int StepsDone;
+ int StepsTotal;
+ void WriteToStatusFd(std::string msg);
+
+ public:
+ explicit PackageManagerProgressDeb822Fd(int progress_fd);
+ virtual ~PackageManagerProgressDeb822Fd();
+
+ virtual void StartDpkg() APT_OVERRIDE;
+ virtual void Stop() APT_OVERRIDE;
+
+ virtual bool StatusChanged(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string HumanReadableAction) APT_OVERRIDE;
+ virtual void Error(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string ErrorMessage) APT_OVERRIDE;
+ virtual void ConffilePrompt(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string ConfMessage) APT_OVERRIDE;
+ };
+
+ class PackageManagerFancy : public PackageManager
+ {
+ void * const d;
+ private:
+ APT_HIDDEN static void staticSIGWINCH(int);
+ static std::vector<PackageManagerFancy*> instances;
+ APT_HIDDEN bool DrawStatusLine();
+
+ protected:
+ void SetupTerminalScrollArea(int nr_rows);
+ void HandleSIGWINCH(int);
+
+ typedef struct {
+ int rows;
+ int columns;
+ } TermSize;
+ TermSize GetTerminalSize();
+
+ sighandler_t old_SIGWINCH;
+ int child_pty;
+
+ public:
+ PackageManagerFancy();
+ virtual ~PackageManagerFancy();
+ virtual void Start(int child_pty=-1) APT_OVERRIDE;
+ virtual void Stop() APT_OVERRIDE;
+ virtual bool StatusChanged(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string HumanReadableAction) APT_OVERRIDE;
+
+ // return a progress bar of the given size for the given progress
+ // percent between 0.0 and 1.0 in the form "[####...]"
+ static std::string GetTextProgressStr(float percent, int OutputSize);
+ };
+
+ class PackageManagerText : public PackageManager
+ {
+ void * const d;
+ public:
+ virtual bool StatusChanged(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string HumanReadableAction) APT_OVERRIDE;
+
+ PackageManagerText();
+ virtual ~PackageManagerText();
+ };
+
+
+} // namespace Progress
+} // namespace APT
+
+#endif
diff --git a/apt-pkg/metaindex.cc b/apt-pkg/metaindex.cc
new file mode 100644
index 000000000..8b31051fb
--- /dev/null
+++ b/apt-pkg/metaindex.cc
@@ -0,0 +1,130 @@
+// Include Files /*{{{*/
+#include <apt-pkg/pkgcachegen.h>
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/metaindex.h>
+
+#include <apt-pkg/debmetaindex.h>
+
+#include <string>
+#include <vector>
+ /*}}}*/
+
+std::string metaIndex::Describe() const
+{
+ return "Release";
+}
+
+pkgCache::RlsFileIterator metaIndex::FindInCache(pkgCache &Cache, bool const) const
+{
+ return pkgCache::RlsFileIterator(Cache);
+}
+
+bool metaIndex::Merge(pkgCacheGenerator &Gen,OpProgress *) const
+{
+ return Gen.SelectReleaseFile("", "");
+}
+
+metaIndex::metaIndex(std::string const &URI, std::string const &Dist,
+ char const * const Type)
+: d(NULL), Indexes(NULL), Type(Type), URI(URI), Dist(Dist), Trusted(TRI_UNSET),
+ Date(0), ValidUntil(0), SupportsAcquireByHash(false), LoadedSuccessfully(TRI_UNSET)
+{
+ /* nothing */
+}
+
+metaIndex::~metaIndex()
+{
+ if (Indexes != 0)
+ {
+ for (std::vector<pkgIndexFile *>::iterator I = (*Indexes).begin();
+ I != (*Indexes).end(); ++I)
+ delete *I;
+ delete Indexes;
+ }
+ for (auto const &E: Entries)
+ delete E.second;
+}
+
+// one line Getters for public fields /*{{{*/
+APT_PURE std::string metaIndex::GetURI() const { return URI; }
+APT_PURE std::string metaIndex::GetDist() const { return Dist; }
+APT_PURE const char* metaIndex::GetType() const { return Type; }
+APT_PURE metaIndex::TriState metaIndex::GetTrusted() const { return Trusted; }
+APT_PURE std::string metaIndex::GetSignedBy() const { return SignedBy; }
+APT_PURE std::string metaIndex::GetCodename() const { return Codename; }
+APT_PURE std::string metaIndex::GetSuite() const { return Suite; }
+APT_PURE bool metaIndex::GetSupportsAcquireByHash() const { return SupportsAcquireByHash; }
+APT_PURE time_t metaIndex::GetValidUntil() const { return ValidUntil; }
+APT_PURE time_t metaIndex::GetDate() const { return this->Date; }
+APT_PURE metaIndex::TriState metaIndex::GetLoadedSuccessfully() const { return LoadedSuccessfully; }
+APT_PURE std::string metaIndex::GetExpectedDist() const { return Dist; }
+ /*}}}*/
+bool metaIndex::CheckDist(string const &MaybeDist) const /*{{{*/
+{
+ if (MaybeDist.empty() || this->Codename == MaybeDist || this->Suite == MaybeDist)
+ return true;
+
+ std::string Transformed = MaybeDist;
+ if (Transformed == "../project/experimental")
+ Transformed = "experimental";
+
+ auto const pos = Transformed.rfind('/');
+ if (pos != string::npos)
+ Transformed = Transformed.substr(0, pos);
+
+ if (Transformed == ".")
+ Transformed.clear();
+
+ return Transformed.empty() || this->Codename == Transformed || this->Suite == Transformed;
+}
+ /*}}}*/
+APT_PURE metaIndex::checkSum *metaIndex::Lookup(string const &MetaKey) const /*{{{*/
+{
+ std::map<std::string, metaIndex::checkSum* >::const_iterator sum = Entries.find(MetaKey);
+ if (sum == Entries.end())
+ return NULL;
+ return sum->second;
+}
+ /*}}}*/
+APT_PURE bool metaIndex::Exists(string const &MetaKey) const /*{{{*/
+{
+ return Entries.find(MetaKey) != Entries.end();
+}
+ /*}}}*/
+std::vector<std::string> metaIndex::MetaKeys() const /*{{{*/
+{
+ std::vector<std::string> keys;
+ std::map<string,checkSum *>::const_iterator I = Entries.begin();
+ while(I != Entries.end()) {
+ keys.push_back((*I).first);
+ ++I;
+ }
+ return keys;
+}
+ /*}}}*/
+void metaIndex::swapLoad(metaIndex * const OldMetaIndex) /*{{{*/
+{
+ std::swap(Entries, OldMetaIndex->Entries);
+ std::swap(Date, OldMetaIndex->Date);
+ std::swap(ValidUntil, OldMetaIndex->ValidUntil);
+ std::swap(SupportsAcquireByHash, OldMetaIndex->SupportsAcquireByHash);
+ std::swap(LoadedSuccessfully, OldMetaIndex->LoadedSuccessfully);
+}
+ /*}}}*/
+
+bool metaIndex::IsArchitectureSupported(std::string const &arch) const /*{{{*/
+{
+ debReleaseIndex const * const deb = dynamic_cast<debReleaseIndex const *>(this);
+ if (deb != NULL)
+ return deb->IsArchitectureSupported(arch);
+ return true;
+}
+ /*}}}*/
+bool metaIndex::IsArchitectureAllSupportedFor(IndexTarget const &target) const/*{{{*/
+{
+ debReleaseIndex const * const deb = dynamic_cast<debReleaseIndex const *>(this);
+ if (deb != NULL)
+ return deb->IsArchitectureAllSupportedFor(target);
+ return true;
+}
+ /*}}}*/
diff --git a/apt-pkg/metaindex.h b/apt-pkg/metaindex.h
new file mode 100644
index 000000000..3a624e86d
--- /dev/null
+++ b/apt-pkg/metaindex.h
@@ -0,0 +1,116 @@
+#ifndef PKGLIB_METAINDEX_H
+#define PKGLIB_METAINDEX_H
+
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/init.h>
+
+#include <stddef.h>
+
+#include <string>
+#include <vector>
+
+#ifndef APT_10_CLEANER_HEADERS
+#include <apt-pkg/pkgcache.h>
+class pkgCacheGenerator;
+class OpProgress;
+#endif
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/srcrecords.h>
+#include <apt-pkg/pkgrecords.h>
+using std::string;
+#endif
+
+class pkgAcquire;
+class IndexTarget;
+class pkgCacheGenerator;
+class OpProgress;
+
+class metaIndex
+{
+public:
+ APT_IGNORE_DEPRECATED_PUSH
+ struct checkSum
+ {
+ std::string MetaKeyFilename;
+ HashStringList Hashes;
+ unsigned long long Size;
+
+ APT_DEPRECATED_MSG("Use the HashStringList member Hashes instead of a hardcoded HashString") HashString Hash;
+ };
+ APT_IGNORE_DEPRECATED_POP
+
+ enum APT_HIDDEN TriState {
+ TRI_YES, TRI_DONTCARE, TRI_NO, TRI_UNSET
+ };
+private:
+ void * const d;
+protected:
+ std::vector <pkgIndexFile *> *Indexes;
+ // parsed from the sources.list
+ const char *Type;
+ std::string URI;
+ std::string Dist;
+ TriState Trusted;
+ std::string SignedBy;
+
+ // parsed from a file
+ std::string Suite;
+ std::string Codename;
+ time_t Date;
+ time_t ValidUntil;
+ bool SupportsAcquireByHash;
+ std::map<std::string, checkSum *> Entries;
+ TriState LoadedSuccessfully;
+
+public:
+ // Various accessors
+ std::string GetURI() const;
+ std::string GetDist() const;
+ const char* GetType() const;
+ TriState GetTrusted() const;
+ std::string GetSignedBy() const;
+
+ std::string GetCodename() const;
+ std::string GetSuite() const;
+ bool GetSupportsAcquireByHash() const;
+ time_t GetValidUntil() const;
+ time_t GetDate() const;
+
+ std::string GetExpectedDist() const;
+ bool CheckDist(std::string const &MaybeDist) const;
+
+ // Interface for acquire
+ virtual std::string Describe() const;
+ virtual std::string ArchiveURI(std::string const& File) const = 0;
+ virtual bool GetIndexes(pkgAcquire *Owner, bool const &GetAll=false) = 0;
+ virtual std::vector<IndexTarget> GetIndexTargets() const = 0;
+ virtual std::vector<pkgIndexFile *> *GetIndexFiles() = 0;
+ virtual bool IsTrusted() const = 0;
+ virtual bool Load(std::string const &Filename, std::string * const ErrorText) = 0;
+ /** @return a new metaIndex object based on this one, but without information from #Load */
+ virtual metaIndex * UnloadedClone() const = 0;
+ // the given metaIndex is potentially invalid after this call and should be deleted
+ void swapLoad(metaIndex * const OldMetaIndex);
+
+ // Lookup functions for parsed Hashes
+ checkSum *Lookup(std::string const &MetaKey) const;
+ /** \brief tests if a checksum for this file is available */
+ bool Exists(std::string const &MetaKey) const;
+ std::vector<std::string> MetaKeys() const;
+ TriState GetLoadedSuccessfully() const;
+
+ // Interfaces for pkgCacheGen
+ virtual pkgCache::RlsFileIterator FindInCache(pkgCache &Cache, bool const ModifyCheck) const;
+ virtual bool Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const;
+
+
+ metaIndex(std::string const &URI, std::string const &Dist,
+ char const * const Type);
+ virtual ~metaIndex();
+
+ // FIXME: make virtual on next abi break
+ bool IsArchitectureSupported(std::string const &arch) const;
+ bool IsArchitectureAllSupportedFor(IndexTarget const &target) const;
+};
+
+#endif
diff --git a/apt-pkg/orderlist.cc b/apt-pkg/orderlist.cc
new file mode 100644
index 000000000..0be0cc8df
--- /dev/null
+++ b/apt-pkg/orderlist.cc
@@ -0,0 +1,1140 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: orderlist.cc,v 1.14 2001/05/07 05:49:43 jgg Exp $
+/* ######################################################################
+
+ Order List - Represents and Manipulates an ordered list of packages.
+
+ A list of packages can be ordered by a number of conflicting criteria
+ each given a specific priority. Each package also has a set of flags
+ indicating some useful things about it that are derived in the
+ course of sorting. The pkgPackageManager class uses this class for
+ all of it's installation ordering needs.
+
+ This is a modified version of Manoj's Routine B. It consists of four
+ independent ordering algorithms that can be applied at for different
+ points in the ordering. By appling progressivly fewer ordering
+ operations it is possible to give each consideration it's own
+ priority and create an order that satisfies the lowest applicable
+ consideration.
+
+ The rules for unpacking ordering are:
+ 1) Unpacking ignores Depends: on all packages
+ 2) Unpacking requires Conflicts: on -ALL- packages to be satisfied
+ 3) Unpacking requires PreDepends: on this package only to be satisfied
+ 4) Removing requires that no packages depend on the package to be
+ removed.
+
+ And the rule for configuration ordering is:
+ 1) Configuring requires that the Depends: of the package be satisfied
+ Conflicts+PreDepends are ignored because unpacking says they are
+ already correct [exageration, it does check but we need not be
+ concerned]
+
+ And some features that are valuable for unpacking ordering.
+ f1) Unpacking a new package should advoid breaking dependencies of
+ configured packages
+ f2) Removal should not require a force, corrolory of f1
+ f3) Unpacking should order by depends rather than fall back to random
+ ordering.
+
+ Each of the features can be enabled in the sorting routine at an
+ arbitrary priority to give quite abit of control over the final unpacking
+ order.
+
+ The rules listed above may never be violated and are called Critical.
+ When a critical rule is violated then a loop condition is recorded
+ and will have to be delt with in the caller.
+
+ The ordering keeps two lists, the main list and the 'After List'. The
+ purpose of the after list is to allow packages to be delayed. This is done
+ by setting the after flag on the package. Any package which requires this
+ package to be ordered before will inherit the after flag and so on. This
+ is used for CD swap ordering where all packages on a second CD have the
+ after flag set. This forces them and all their dependents to be ordered
+ toward the end.
+
+ There are complications in this algorithm when presented with cycles.
+ For all known practical cases it works, all cases where it doesn't work
+ is fixable by tweaking the package descriptions. However, it should be
+ possible to improve this further to make some better choices when
+ presented with cycles.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/orderlist.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/pkgcache.h>
+
+#include <stdlib.h>
+#include <string.h>
+#include <algorithm>
+#include <iostream>
+ /*}}}*/
+
+using namespace std;
+
+// OrderList::pkgOrderList - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgOrderList::pkgOrderList(pkgDepCache *pCache) : d(NULL), Cache(*pCache),
+ Primary(NULL), Secondary(NULL),
+ RevDepends(NULL), Remove(NULL),
+ AfterEnd(NULL), FileList(NULL),
+ LoopCount(-1), Depth(0)
+{
+ Debug = _config->FindB("Debug::pkgOrderList",false);
+
+ /* Construct the arrays, egcs 1.0.1 bug requires the package count
+ hack */
+ unsigned long Size = Cache.Head().PackageCount;
+ Flags = new unsigned short[Size];
+ End = List = new Package *[Size];
+ memset(Flags,0,sizeof(*Flags)*Size);
+}
+ /*}}}*/
+// OrderList::~pkgOrderList - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgOrderList::~pkgOrderList()
+{
+ delete [] List;
+ delete [] Flags;
+}
+ /*}}}*/
+// OrderList::IsMissing - Check if a file is missing /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgOrderList::IsMissing(PkgIterator Pkg)
+{
+ // Skip packages to erase
+ if (Cache[Pkg].Delete() == true)
+ return false;
+
+ // Skip Packages that need configure only.
+ if ((Pkg.State() == pkgCache::PkgIterator::NeedsConfigure ||
+ Pkg.State() == pkgCache::PkgIterator::NeedsNothing) &&
+ Cache[Pkg].Keep() == true)
+ return false;
+
+ if (FileList == 0)
+ return false;
+
+ if (FileList[Pkg->ID].empty() == false)
+ return false;
+
+ return true;
+}
+ /*}}}*/
+// OrderList::DoRun - Does an order run /*{{{*/
+// ---------------------------------------------------------------------
+/* The caller is expected to have setup the desired probe state */
+bool pkgOrderList::DoRun()
+{
+ // Temp list
+ unsigned long Size = Cache.Head().PackageCount;
+ std::unique_ptr<Package *[]> NList(new Package *[Size]);
+ std::unique_ptr<Package *[]> AfterList(new Package *[Size]);
+ AfterEnd = AfterList.get();
+
+ Depth = 0;
+ WipeFlags(Added | AddPending | Loop | InList);
+
+ for (iterator I = List; I != End; ++I)
+ Flag(*I,InList);
+
+ // Rebuild the main list into the temp list.
+ iterator OldEnd = End;
+ End = NList.get();
+ for (iterator I = List; I != OldEnd; ++I)
+ if (VisitNode(PkgIterator(Cache,*I), "DoRun") == false)
+ {
+ End = OldEnd;
+ return false;
+ }
+
+ // Copy the after list to the end of the main list
+ for (Package **I = AfterList.get(); I != AfterEnd; I++)
+ *End++ = *I;
+
+ // Swap the main list to the new list
+ delete [] List;
+ List = NList.release();
+ return true;
+}
+ /*}}}*/
+// OrderList::OrderCritical - Perform critical unpacking ordering /*{{{*/
+// ---------------------------------------------------------------------
+/* This performs predepends and immediate configuration ordering only.
+ This is termed critical unpacking ordering. Any loops that form are
+ fatal and indicate that the packages cannot be installed. */
+bool pkgOrderList::OrderCritical()
+{
+ FileList = 0;
+
+ Primary = &pkgOrderList::DepUnPackPreD;
+ Secondary = 0;
+ RevDepends = 0;
+ Remove = 0;
+ LoopCount = 0;
+
+ // Sort
+ std::sort(List,End, [this](Package *a, Package *b) { return OrderCompareB(a, b) < 0; } );
+
+ if (DoRun() == false)
+ return false;
+
+ if (LoopCount != 0)
+ return _error->Error("Fatal, predepends looping detected");
+
+ if (Debug == true)
+ {
+ clog << "** Critical Unpack ordering done" << endl;
+
+ for (iterator I = List; I != End; ++I)
+ {
+ PkgIterator P(Cache,*I);
+ if (IsNow(P) == true)
+ clog << " " << P.FullName() << ' ' << IsMissing(P) << ',' << IsFlag(P,After) << endl;
+ }
+ }
+
+ return true;
+}
+ /*}}}*/
+// OrderList::OrderUnpack - Perform complete unpacking ordering /*{{{*/
+// ---------------------------------------------------------------------
+/* This performs complete unpacking ordering and creates an order that is
+ suitable for unpacking */
+bool pkgOrderList::OrderUnpack(string *FileList)
+{
+ this->FileList = FileList;
+
+ // Setup the after flags
+ if (FileList != 0)
+ {
+ WipeFlags(After);
+
+ // Set the inlist flag
+ for (iterator I = List; I != End; ++I)
+ {
+ PkgIterator P(Cache,*I);
+ if (IsMissing(P) == true && IsNow(P) == true)
+ Flag(*I,After);
+ }
+ }
+
+ Primary = &pkgOrderList::DepUnPackCrit;
+ Secondary = &pkgOrderList::DepConfigure;
+ RevDepends = &pkgOrderList::DepUnPackDep;
+ Remove = &pkgOrderList::DepRemove;
+ LoopCount = -1;
+
+ // Sort
+ std::sort(List,End, [this](Package *a, Package *b) { return OrderCompareA(a, b) < 0; });
+
+ if (Debug == true)
+ clog << "** Pass A" << endl;
+ if (DoRun() == false)
+ return false;
+
+ if (Debug == true)
+ clog << "** Pass B" << endl;
+ Secondary = 0;
+ if (DoRun() == false)
+ return false;
+
+ if (Debug == true)
+ clog << "** Pass C" << endl;
+ LoopCount = 0;
+ RevDepends = 0;
+ Remove = 0; // Otherwise the libreadline remove problem occurs
+ if (DoRun() == false)
+ return false;
+
+ if (Debug == true)
+ clog << "** Pass D" << endl;
+ LoopCount = 0;
+ Primary = &pkgOrderList::DepUnPackPre;
+ if (DoRun() == false)
+ return false;
+
+ if (Debug == true)
+ {
+ clog << "** Unpack ordering done" << endl;
+
+ for (iterator I = List; I != End; ++I)
+ {
+ PkgIterator P(Cache,*I);
+ if (IsNow(P) == true)
+ clog << " " << P.FullName() << ' ' << IsMissing(P) << ',' << IsFlag(P,After) << endl;
+ }
+ }
+
+ return true;
+}
+ /*}}}*/
+// OrderList::OrderConfigure - Perform configuration ordering /*{{{*/
+// ---------------------------------------------------------------------
+/* This orders by depends only and produces an order which is suitable
+ for configuration */
+bool pkgOrderList::OrderConfigure()
+{
+ FileList = 0;
+ Primary = &pkgOrderList::DepConfigure;
+ Secondary = 0;
+ RevDepends = 0;
+ Remove = 0;
+ LoopCount = -1;
+ return DoRun();
+}
+ /*}}}*/
+// OrderList::Score - Score the package for sorting /*{{{*/
+// ---------------------------------------------------------------------
+/* Higher scores order earlier */
+int pkgOrderList::Score(PkgIterator Pkg)
+{
+ // Removals should be done after we dealt with essentials
+ static int const ScoreDelete = _config->FindI("OrderList::Score::Delete", 100);
+ if (Cache[Pkg].Delete() == true)
+ return ScoreDelete;
+
+ // This should never happen..
+ if (Cache[Pkg].InstVerIter(Cache).end() == true)
+ return -1;
+
+ static int const ScoreEssential = _config->FindI("OrderList::Score::Essential", 200);
+ static int const ScoreImmediate = _config->FindI("OrderList::Score::Immediate", 10);
+ static int const ScorePreDepends = _config->FindI("OrderList::Score::PreDepends", 50);
+
+ int Score = 0;
+ if ((Pkg->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential)
+ Score += ScoreEssential;
+
+ if (IsFlag(Pkg,Immediate) == true)
+ Score += ScoreImmediate;
+
+ for (DepIterator D = Cache[Pkg].InstVerIter(Cache).DependsList();
+ D.end() == false; ++D)
+ if (D->Type == pkgCache::Dep::PreDepends)
+ {
+ Score += ScorePreDepends;
+ break;
+ }
+
+ // Required Important Standard Optional Extra
+ if (Cache[Pkg].InstVerIter(Cache)->Priority <= 5)
+ {
+ signed short PrioMap[] = {0,5,4,3,1,0};
+ Score += PrioMap[Cache[Pkg].InstVerIter(Cache)->Priority];
+ }
+ return Score;
+}
+ /*}}}*/
+// OrderList::FileCmp - Compare by package file /*{{{*/
+// ---------------------------------------------------------------------
+/* This compares by the package file that the install version is in. */
+int pkgOrderList::FileCmp(PkgIterator A,PkgIterator B)
+{
+ if (Cache[A].Delete() == true && Cache[B].Delete() == true)
+ return 0;
+ if (Cache[A].Delete() == true)
+ return -1;
+ if (Cache[B].Delete() == true)
+ return 1;
+
+ if (Cache[A].InstVerIter(Cache).FileList().end() == true)
+ return -1;
+ if (Cache[B].InstVerIter(Cache).FileList().end() == true)
+ return 1;
+
+ pkgCache::PackageFile *FA = Cache[A].InstVerIter(Cache).FileList().File();
+ pkgCache::PackageFile *FB = Cache[B].InstVerIter(Cache).FileList().File();
+ if (FA < FB)
+ return -1;
+ if (FA > FB)
+ return 1;
+ return 0;
+}
+ /*}}}*/
+// BoolCompare - Comparison function for two booleans /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static int BoolCompare(bool A,bool B)
+{
+ if (A == B)
+ return 0;
+ if (A == false)
+ return -1;
+ return 1;
+}
+ /*}}}*/
+// OrderList::OrderCompareA - Order the installation by op /*{{{*/
+// ---------------------------------------------------------------------
+/* This provides a first-pass sort of the list and gives a decent starting
+ point for further complete ordering. It is used by OrderUnpack only */
+int pkgOrderList::OrderCompareA(Package *a, Package *b)
+{
+ PkgIterator A(Cache,a);
+ PkgIterator B(Cache,b);
+
+ // We order packages with a set state toward the front
+ int Res;
+ if ((Res = BoolCompare(IsNow(A),IsNow(B))) != 0)
+ return -1*Res;
+
+ // We order missing files to toward the end
+/* if (FileList != 0)
+ {
+ if ((Res = BoolCompare(IsMissing(A),
+ IsMissing(B))) != 0)
+ return Res;
+ }*/
+
+ if (A.State() != pkgCache::PkgIterator::NeedsNothing &&
+ B.State() == pkgCache::PkgIterator::NeedsNothing)
+ return -1;
+
+ if (A.State() == pkgCache::PkgIterator::NeedsNothing &&
+ B.State() != pkgCache::PkgIterator::NeedsNothing)
+ return 1;
+
+ int ScoreA = Score(A);
+ int ScoreB = Score(B);
+
+ if (ScoreA > ScoreB)
+ return -1;
+
+ if (ScoreA < ScoreB)
+ return 1;
+
+ return strcmp(A.Name(),B.Name());
+}
+ /*}}}*/
+// OrderList::OrderCompareB - Order the installation by source /*{{{*/
+// ---------------------------------------------------------------------
+/* This orders by installation source. This is useful to handle
+ inter-source breaks */
+int pkgOrderList::OrderCompareB(Package *a, Package *b)
+{
+ PkgIterator A(Cache,a);
+ PkgIterator B(Cache,b);
+
+ if (A.State() != pkgCache::PkgIterator::NeedsNothing &&
+ B.State() == pkgCache::PkgIterator::NeedsNothing)
+ return -1;
+
+ if (A.State() == pkgCache::PkgIterator::NeedsNothing &&
+ B.State() != pkgCache::PkgIterator::NeedsNothing)
+ return 1;
+
+ int F = FileCmp(A,B);
+ if (F != 0)
+ {
+ if (F > 0)
+ return -1;
+ return 1;
+ }
+
+ int ScoreA = Score(A);
+ int ScoreB = Score(B);
+
+ if (ScoreA > ScoreB)
+ return -1;
+
+ if (ScoreA < ScoreB)
+ return 1;
+
+ return strcmp(A.Name(),B.Name());
+}
+ /*}}}*/
+// OrderList::VisitDeps - Visit forward install dependencies /*{{{*/
+// ---------------------------------------------------------------------
+/* This calls the dependency function for the normal forwards dependencies
+ of the package */
+bool pkgOrderList::VisitDeps(DepFunc F,PkgIterator Pkg)
+{
+ if (F == 0 || Pkg.end() == true || Cache[Pkg].InstallVer == 0)
+ return true;
+
+ return (this->*F)(Cache[Pkg].InstVerIter(Cache).DependsList());
+}
+ /*}}}*/
+// OrderList::VisitRDeps - Visit reverse dependencies /*{{{*/
+// ---------------------------------------------------------------------
+/* This calls the dependency function for all of the normal reverse depends
+ of the package */
+bool pkgOrderList::VisitRDeps(DepFunc F,PkgIterator Pkg)
+{
+ if (F == 0 || Pkg.end() == true)
+ return true;
+
+ return (this->*F)(Pkg.RevDependsList());
+}
+ /*}}}*/
+// OrderList::VisitRProvides - Visit provides reverse dependencies /*{{{*/
+// ---------------------------------------------------------------------
+/* This calls the dependency function for all reverse dependencies
+ generated by the provides line on the package. */
+bool pkgOrderList::VisitRProvides(DepFunc F,VerIterator Ver)
+{
+ if (F == 0 || Ver.end() == true)
+ return true;
+
+ bool Res = true;
+ for (PrvIterator P = Ver.ProvidesList(); P.end() == false; ++P)
+ Res &= (this->*F)(P.ParentPkg().RevDependsList());
+ return Res;
+}
+ /*}}}*/
+// OrderList::VisitProvides - Visit all of the providing packages /*{{{*/
+// ---------------------------------------------------------------------
+/* This routine calls visit on all providing packages.
+
+ If the dependency is negative it first visits packages which are
+ intended to be removed and after that all other packages.
+ It does so to avoid situations in which this package is used to
+ satisfy a (or-group/provides) dependency of another package which
+ could have been satisfied also by upgrading another package -
+ otherwise we have more broken packages dpkg needs to auto-
+ deconfigure and in very complicated situations it even decides
+ against it! */
+bool pkgOrderList::VisitProvides(DepIterator D,bool Critical)
+{
+ std::unique_ptr<Version *[]> List(D.AllTargets());
+ for (Version **I = List.get(); *I != 0; ++I)
+ {
+ VerIterator Ver(Cache,*I);
+ PkgIterator Pkg = Ver.ParentPkg();
+
+ if (D.IsNegative() == true && Cache[Pkg].Delete() == false)
+ continue;
+
+ if (Cache[Pkg].Keep() == true && Pkg.State() == PkgIterator::NeedsNothing)
+ continue;
+
+ if (D.IsNegative() == false &&
+ Cache[Pkg].InstallVer != *I)
+ continue;
+
+ if (D.IsNegative() == true &&
+ (Version *)Pkg.CurrentVer() != *I)
+ continue;
+
+ // Skip over missing files
+ if (Critical == false && IsMissing(D.ParentPkg()) == true)
+ continue;
+
+ if (VisitNode(Pkg, "Provides-1") == false)
+ return false;
+ }
+ if (D.IsNegative() == false)
+ return true;
+ for (Version **I = List.get(); *I != 0; ++I)
+ {
+ VerIterator Ver(Cache,*I);
+ PkgIterator Pkg = Ver.ParentPkg();
+
+ if (Cache[Pkg].Delete() == true)
+ continue;
+
+ if (Cache[Pkg].Keep() == true && Pkg.State() == PkgIterator::NeedsNothing)
+ continue;
+
+ if ((Version *)Pkg.CurrentVer() != *I)
+ continue;
+
+ // Skip over missing files
+ if (Critical == false && IsMissing(D.ParentPkg()) == true)
+ continue;
+
+ if (VisitNode(Pkg, "Provides-2") == false)
+ return false;
+ }
+
+ return true;
+}
+ /*}}}*/
+// OrderList::VisitNode - Recursive ordering director /*{{{*/
+// ---------------------------------------------------------------------
+/* This is the core ordering routine. It calls the set dependency
+ consideration functions which then potentialy call this again. Finite
+ depth is achieved through the colouring mechinism. */
+bool pkgOrderList::VisitNode(PkgIterator Pkg, char const* from)
+{
+ // Looping or irrelevant.
+ // This should probably trancend not installed packages
+ if (Pkg.end() == true || IsFlag(Pkg,Added) == true ||
+ IsFlag(Pkg,AddPending) == true || IsFlag(Pkg,InList) == false)
+ return true;
+
+ if (Debug == true)
+ {
+ for (int j = 0; j != Depth; j++) clog << ' ';
+ clog << "Visit " << Pkg.FullName() << " from " << from << endl;
+ }
+
+ Depth++;
+
+ // Color grey
+ Flag(Pkg,AddPending);
+
+ DepFunc Old = Primary;
+
+ // Perform immediate configuration of the package if so flagged.
+ if (IsFlag(Pkg,Immediate) == true && Primary != &pkgOrderList::DepUnPackPre)
+ Primary = &pkgOrderList::DepUnPackPreD;
+
+ if (IsNow(Pkg) == true)
+ {
+ bool Res = true;
+ if (Cache[Pkg].Delete() == false)
+ {
+ // Primary
+ Res &= Res && VisitDeps(Primary,Pkg);
+ Res &= Res && VisitRDeps(Primary,Pkg);
+ Res &= Res && VisitRProvides(Primary,Pkg.CurrentVer());
+ Res &= Res && VisitRProvides(Primary,Cache[Pkg].InstVerIter(Cache));
+
+ // RevDep
+ Res &= Res && VisitRDeps(RevDepends,Pkg);
+ Res &= Res && VisitRProvides(RevDepends,Pkg.CurrentVer());
+ Res &= Res && VisitRProvides(RevDepends,Cache[Pkg].InstVerIter(Cache));
+
+ // Secondary
+ Res &= Res && VisitDeps(Secondary,Pkg);
+ Res &= Res && VisitRDeps(Secondary,Pkg);
+ Res &= Res && VisitRProvides(Secondary,Pkg.CurrentVer());
+ Res &= Res && VisitRProvides(Secondary,Cache[Pkg].InstVerIter(Cache));
+ }
+ else
+ {
+ // RevDep
+ Res &= Res && VisitRDeps(Remove,Pkg);
+ Res &= Res && VisitRProvides(Remove,Pkg.CurrentVer());
+ }
+ }
+
+ if (IsFlag(Pkg,Added) == false)
+ {
+ Flag(Pkg,Added,Added | AddPending);
+ if (IsFlag(Pkg,After) == true)
+ *AfterEnd++ = Pkg;
+ else
+ *End++ = Pkg;
+ }
+
+ Primary = Old;
+ Depth--;
+
+ if (Debug == true)
+ {
+ for (int j = 0; j != Depth; j++) clog << ' ';
+ clog << "Leave " << Pkg.FullName() << ' ' << IsFlag(Pkg,Added) << ',' << IsFlag(Pkg,AddPending) << endl;
+ }
+
+ return true;
+}
+ /*}}}*/
+// OrderList::DepUnPackCrit - Critical UnPacking ordering /*{{{*/
+// ---------------------------------------------------------------------
+/* Critical unpacking ordering strives to satisfy Conflicts: and
+ PreDepends: only. When a prdepends is encountered the Primary
+ DepFunc is changed to be DepUnPackPreD.
+
+ Loops are preprocessed and logged. */
+bool pkgOrderList::DepUnPackCrit(DepIterator D)
+{
+ for (; D.end() == false; ++D)
+ {
+ if (D.Reverse() == true)
+ {
+ /* Reverse depenanices are only interested in conflicts,
+ predepend breakage is ignored here */
+ if (D->Type != pkgCache::Dep::Conflicts &&
+ D->Type != pkgCache::Dep::Obsoletes)
+ continue;
+
+ // Duplication elimination, consider only the current version
+ if (D.ParentPkg().CurrentVer() != D.ParentVer())
+ continue;
+
+ /* For reverse dependencies we wish to check if the
+ dependency is satisifed in the install state. The
+ target package (caller) is going to be in the installed
+ state. */
+ if (CheckDep(D) == true)
+ continue;
+
+ if (VisitNode(D.ParentPkg(), "UnPackCrit") == false)
+ return false;
+ }
+ else
+ {
+ /* Forward critical dependencies MUST be correct before the
+ package can be unpacked. */
+ if (D.IsNegative() == false &&
+ D->Type != pkgCache::Dep::PreDepends)
+ continue;
+
+ /* We wish to check if the dep is okay in the now state of the
+ target package against the install state of this package. */
+ if (CheckDep(D) == true)
+ {
+ /* We want to catch predepends loops with the code below.
+ Conflicts loops that are Dep OK are ignored */
+ if (IsFlag(D.TargetPkg(),AddPending) == false ||
+ D->Type != pkgCache::Dep::PreDepends)
+ continue;
+ }
+
+ // This is the loop detection
+ if (IsFlag(D.TargetPkg(),Added) == true ||
+ IsFlag(D.TargetPkg(),AddPending) == true)
+ {
+ if (IsFlag(D.TargetPkg(),AddPending) == true)
+ AddLoop(D);
+ continue;
+ }
+
+ /* Predepends require a special ordering stage, they must have
+ all dependents installed as well */
+ DepFunc Old = Primary;
+ bool Res = false;
+ if (D->Type == pkgCache::Dep::PreDepends)
+ Primary = &pkgOrderList::DepUnPackPreD;
+ Res = VisitProvides(D,true);
+ Primary = Old;
+ if (Res == false)
+ return false;
+ }
+ }
+ return true;
+}
+ /*}}}*/
+// OrderList::DepUnPackPreD - Critical UnPacking ordering with depends /*{{{*/
+// ---------------------------------------------------------------------
+/* Critical PreDepends (also configure immediate and essential) strives to
+ ensure not only that all conflicts+predepends are met but that this
+ package will be immediately configurable when it is unpacked.
+ Loops are preprocessed and logged. */
+bool pkgOrderList::DepUnPackPreD(DepIterator D)
+{
+ if (D.Reverse() == true)
+ return DepUnPackCrit(D);
+
+ for (; D.end() == false; ++D)
+ {
+ if (D.IsCritical() == false)
+ continue;
+
+ /* We wish to check if the dep is okay in the now state of the
+ target package against the install state of this package. */
+ if (CheckDep(D) == true)
+ {
+ /* We want to catch predepends loops with the code below.
+ Conflicts loops that are Dep OK are ignored */
+ if (IsFlag(D.TargetPkg(),AddPending) == false ||
+ D->Type != pkgCache::Dep::PreDepends)
+ continue;
+ }
+
+ // This is the loop detection
+ if (IsFlag(D.TargetPkg(),Added) == true ||
+ IsFlag(D.TargetPkg(),AddPending) == true)
+ {
+ if (IsFlag(D.TargetPkg(),AddPending) == true)
+ AddLoop(D);
+ continue;
+ }
+
+ if (VisitProvides(D,true) == false)
+ return false;
+ }
+ return true;
+}
+ /*}}}*/
+// OrderList::DepUnPackPre - Critical Predepends ordering /*{{{*/
+// ---------------------------------------------------------------------
+/* Critical PreDepends (also configure immediate and essential) strives to
+ ensure not only that all conflicts+predepends are met but that this
+ package will be immediately configurable when it is unpacked.
+
+ Loops are preprocessed and logged. All loops will be fatal. */
+bool pkgOrderList::DepUnPackPre(DepIterator D)
+{
+ if (D.Reverse() == true)
+ return true;
+
+ for (; D.end() == false; ++D)
+ {
+ /* Only consider the PreDepends or Depends. Depends are only
+ considered at the lowest depth or in the case of immediate
+ configure */
+ if (D->Type != pkgCache::Dep::PreDepends)
+ {
+ if (D->Type == pkgCache::Dep::Depends)
+ {
+ if (Depth == 1 && IsFlag(D.ParentPkg(),Immediate) == false)
+ continue;
+ }
+ else
+ continue;
+ }
+
+ /* We wish to check if the dep is okay in the now state of the
+ target package against the install state of this package. */
+ if (CheckDep(D) == true)
+ {
+ /* We want to catch predepends loops with the code below.
+ Conflicts loops that are Dep OK are ignored */
+ if (IsFlag(D.TargetPkg(),AddPending) == false)
+ continue;
+ }
+
+ // This is the loop detection
+ if (IsFlag(D.TargetPkg(),Added) == true ||
+ IsFlag(D.TargetPkg(),AddPending) == true)
+ {
+ if (IsFlag(D.TargetPkg(),AddPending) == true)
+ AddLoop(D);
+ continue;
+ }
+
+ if (VisitProvides(D,true) == false)
+ return false;
+ }
+ return true;
+}
+ /*}}}*/
+// OrderList::DepUnPackDep - Reverse dependency considerations /*{{{*/
+// ---------------------------------------------------------------------
+/* Reverse dependencies are considered to determine if unpacking this
+ package will break any existing dependencies. If so then those
+ packages are ordered before this one so that they are in the
+ UnPacked state.
+
+ The forwards depends loop is designed to bring the packages dependents
+ close to the package. This helps reduce deconfigure time.
+
+ Loops are irrelevant to this. */
+bool pkgOrderList::DepUnPackDep(DepIterator D)
+{
+
+ for (; D.end() == false; ++D)
+ if (D.IsCritical() == true)
+ {
+ if (D.Reverse() == true)
+ {
+ /* Duplication prevention. We consider rev deps only on
+ the current version, a not installed package
+ cannot break */
+ if (D.ParentPkg()->CurrentVer == 0 ||
+ D.ParentPkg().CurrentVer() != D.ParentVer())
+ continue;
+
+ // The dep will not break so it is irrelevant.
+ if (CheckDep(D) == true)
+ continue;
+
+ // Skip over missing files
+ if (IsMissing(D.ParentPkg()) == true)
+ continue;
+
+ if (VisitNode(D.ParentPkg(), "UnPackDep-Parent") == false)
+ return false;
+ }
+ else
+ {
+ if (D->Type == pkgCache::Dep::Depends)
+ if (VisitProvides(D,false) == false)
+ return false;
+
+ if (D->Type == pkgCache::Dep::DpkgBreaks)
+ {
+ if (CheckDep(D) == true)
+ continue;
+
+ if (VisitNode(D.TargetPkg(), "UnPackDep-Target") == false)
+ return false;
+ }
+ }
+ }
+ return true;
+}
+ /*}}}*/
+// OrderList::DepConfigure - Configuration ordering /*{{{*/
+// ---------------------------------------------------------------------
+/* Configuration only ordering orders by the Depends: line only. It
+ orders configuration so that when a package comes to be configured it's
+ dependents are configured.
+
+ Loops are ignored. Depends loop entry points are chaotic. */
+bool pkgOrderList::DepConfigure(DepIterator D)
+{
+ // Never consider reverse configuration dependencies.
+ if (D.Reverse() == true)
+ return true;
+
+ for (; D.end() == false; ++D)
+ if (D->Type == pkgCache::Dep::Depends)
+ if (VisitProvides(D,false) == false)
+ return false;
+ return true;
+}
+ /*}}}*/
+// OrderList::DepRemove - Removal ordering /*{{{*/
+// ---------------------------------------------------------------------
+/* Checks all given dependencies if they are broken by the remove of a
+ package and if so fix it by visiting another provider or or-group
+ member to ensure that the dependee keeps working which is especially
+ important for Immediate packages like e.g. those depending on an
+ awk implementation. If the dependency can't be fixed with another
+ package this means an upgrade of the package will solve the problem. */
+bool pkgOrderList::DepRemove(DepIterator Broken)
+{
+ if (Broken.Reverse() == false)
+ return true;
+
+ for (; Broken.end() == false; ++Broken)
+ {
+ if (Broken->Type != pkgCache::Dep::Depends &&
+ Broken->Type != pkgCache::Dep::PreDepends)
+ continue;
+
+ PkgIterator BrokenPkg = Broken.ParentPkg();
+ // uninstalled packages can't break via a remove
+ if (BrokenPkg->CurrentVer == 0)
+ continue;
+
+ // if its already added, we can't do anything useful
+ if (IsFlag(BrokenPkg, AddPending) == true || IsFlag(BrokenPkg, Added) == true)
+ continue;
+
+ // if the dependee is going to be removed, visit it now
+ if (Cache[BrokenPkg].Delete() == true)
+ return VisitNode(BrokenPkg, "Remove-Dependee");
+
+ // The package stays around, so find out how this is possible
+ for (DepIterator D = BrokenPkg.CurrentVer().DependsList(); D.end() == false;)
+ {
+ // only important or-groups need fixing
+ if (D->Type != pkgCache::Dep::Depends &&
+ D->Type != pkgCache::Dep::PreDepends)
+ {
+ ++D;
+ continue;
+ }
+
+ // Start is the beginning of the or-group, D is the first one after or
+ DepIterator Start = D;
+ bool foundBroken = false;
+ for (bool LastOR = true; D.end() == false && LastOR == true; ++D)
+ {
+ LastOR = (D->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or;
+ if (D == Broken)
+ foundBroken = true;
+ }
+
+ // this or-group isn't the broken one: keep searching
+ if (foundBroken == false)
+ continue;
+
+ // iterate over all members of the or-group searching for a ready replacement
+ bool readyReplacement = false;
+ for (DepIterator OrMember = Start; OrMember != D && readyReplacement == false; ++OrMember)
+ {
+ Version ** Replacements = OrMember.AllTargets();
+ for (Version **R = Replacements; *R != 0; ++R)
+ {
+ VerIterator Ver(Cache,*R);
+ // only currently installed packages can be a replacement
+ PkgIterator RPkg = Ver.ParentPkg();
+ if (RPkg.CurrentVer() != Ver)
+ continue;
+
+ // packages going to be removed can't be a replacement
+ if (Cache[RPkg].Delete() == true)
+ continue;
+
+ readyReplacement = true;
+ break;
+ }
+ delete[] Replacements;
+ }
+
+ // something else is ready to take over, do nothing
+ if (readyReplacement == true)
+ continue;
+
+ // see if we can visit a replacement
+ bool visitReplacement = false;
+ for (DepIterator OrMember = Start; OrMember != D && visitReplacement == false; ++OrMember)
+ {
+ Version ** Replacements = OrMember.AllTargets();
+ for (Version **R = Replacements; *R != 0; ++R)
+ {
+ VerIterator Ver(Cache,*R);
+ // consider only versions we plan to install
+ PkgIterator RPkg = Ver.ParentPkg();
+ if (Cache[RPkg].Install() == false || Cache[RPkg].InstallVer != Ver)
+ continue;
+
+ // loops are not going to help us, so don't create them
+ if (IsFlag(RPkg, AddPending) == true)
+ continue;
+
+ if (IsMissing(RPkg) == true)
+ continue;
+
+ visitReplacement = true;
+ if (IsFlag(BrokenPkg, Immediate) == false)
+ {
+ if (VisitNode(RPkg, "Remove-Rep") == true)
+ break;
+ }
+ else
+ {
+ Flag(RPkg, Immediate);
+ if (VisitNode(RPkg, "Remove-ImmRep") == true)
+ break;
+ }
+ visitReplacement = false;
+ }
+ delete[] Replacements;
+ }
+ if (visitReplacement == true)
+ continue;
+
+ // the broken package in current version can't be fixed, so install new version
+ if (IsMissing(BrokenPkg) == true)
+ break;
+
+ if (VisitNode(BrokenPkg, "Remove-Upgrade") == false)
+ return false;
+ }
+ }
+
+ return true;
+}
+ /*}}}*/
+// OrderList::AddLoop - Add a loop to the loop list /*{{{*/
+// ---------------------------------------------------------------------
+/* We record the loops. This is a relic since loop breaking is done
+ genericaly as part of the safety routines. */
+bool pkgOrderList::AddLoop(DepIterator D)
+{
+ if (LoopCount < 0 || LoopCount >= 20)
+ return false;
+
+ // Skip dups
+ if (LoopCount != 0)
+ {
+ if (Loops[LoopCount - 1].ParentPkg() == D.ParentPkg() ||
+ Loops[LoopCount - 1].TargetPkg() == D.ParentPkg())
+ return true;
+ }
+
+ Loops[LoopCount++] = D;
+
+ // Mark the packages as being part of a loop.
+ //Flag(D.TargetPkg(),Loop);
+ //Flag(D.ParentPkg(),Loop);
+ /* This is currently disabled because the Loop flag is being used for
+ loop management in the package manager. Check the orderlist.h file for more info */
+ return true;
+}
+ /*}}}*/
+// OrderList::WipeFlags - Unset the given flags from all packages /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgOrderList::WipeFlags(unsigned long F)
+{
+ unsigned long Size = Cache.Head().PackageCount;
+ for (unsigned long I = 0; I != Size; I++)
+ Flags[I] &= ~F;
+}
+ /*}}}*/
+// OrderList::CheckDep - Check a dependency for truth /*{{{*/
+// ---------------------------------------------------------------------
+/* This performs a complete analysis of the dependency wrt to the
+ current add list. It returns true if after all events are
+ performed it is still true. This sort of routine can be approximated
+ by examining the DepCache, however in convoluted cases of provides
+ this fails to produce a suitable result. */
+bool pkgOrderList::CheckDep(DepIterator D)
+{
+ std::unique_ptr<Version *[]> List(D.AllTargets());
+ bool Hit = false;
+ for (Version **I = List.get(); *I != 0; I++)
+ {
+ VerIterator Ver(Cache,*I);
+ PkgIterator Pkg = Ver.ParentPkg();
+
+ /* The meaning of Added and AddPending is subtle. AddPending is
+ an indication that the package is looping. Because of the
+ way ordering works Added means the package will be unpacked
+ before this one and AddPending means after. It is therefore
+ correct to ignore AddPending in all cases, but that exposes
+ reverse-ordering loops which should be ignored. */
+ if (IsFlag(Pkg,Added) == true ||
+ (IsFlag(Pkg,AddPending) == true && D.Reverse() == true))
+ {
+ if (Cache[Pkg].InstallVer != *I)
+ continue;
+ }
+ else
+ if ((Version *)Pkg.CurrentVer() != *I ||
+ Pkg.State() != PkgIterator::NeedsNothing)
+ continue;
+
+ /* Conflicts requires that all versions are not present, depends
+ just needs one */
+ if (D.IsNegative() == false)
+ {
+ // ignore provides by older versions of this package
+ if (((D.Reverse() == false && Pkg == D.ParentPkg()) ||
+ (D.Reverse() == true && Pkg == D.TargetPkg())) &&
+ Cache[Pkg].InstallVer != *I)
+ continue;
+
+ /* Try to find something that does not have the after flag set
+ if at all possible */
+ if (IsFlag(Pkg,After) == true)
+ {
+ Hit = true;
+ continue;
+ }
+
+ return true;
+ }
+ else
+ {
+ if (IsFlag(Pkg,After) == true)
+ Flag(D.ParentPkg(),After);
+
+ return false;
+ }
+ }
+
+ // We found a hit, but it had the after flag set
+ if (Hit == true && D->Type == pkgCache::Dep::PreDepends)
+ {
+ Flag(D.ParentPkg(),After);
+ return true;
+ }
+
+ /* Conflicts requires that all versions are not present, depends
+ just needs one */
+ if (D->Type == pkgCache::Dep::Conflicts ||
+ D->Type == pkgCache::Dep::Obsoletes)
+ return true;
+ return false;
+}
+ /*}}}*/
diff --git a/apt-pkg/orderlist.h b/apt-pkg/orderlist.h
new file mode 100644
index 000000000..9171c45d6
--- /dev/null
+++ b/apt-pkg/orderlist.h
@@ -0,0 +1,128 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Order List - Represents and Manipulates an ordered list of packages.
+
+ A list of packages can be ordered by a number of conflicting criteria
+ each given a specific priority. Each package also has a set of flags
+ indicating some useful things about it that are derived in the
+ course of sorting. The pkgPackageManager class uses this class for
+ all of it's installation ordering needs.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_ORDERLIST_H
+#define PKGLIB_ORDERLIST_H
+
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/macros.h>
+
+#include <string>
+
+class pkgDepCache;
+class pkgOrderList : protected pkgCache::Namespace
+{
+ void * const d;
+ protected:
+
+ pkgDepCache &Cache;
+ typedef bool (pkgOrderList::*DepFunc)(DepIterator D);
+
+ // These are the currently selected ordering functions
+ DepFunc Primary;
+ DepFunc Secondary;
+ DepFunc RevDepends;
+ DepFunc Remove;
+
+ // State
+ Package **End;
+ Package **List;
+ Package **AfterEnd;
+ std::string *FileList;
+ DepIterator Loops[20];
+ int LoopCount;
+ int Depth;
+ unsigned short *Flags;
+ bool Debug;
+
+ // Main visit function
+ APT_DEPRECATED_MSG("Add a unique calling identifier as parameter for debugging output") bool VisitNode(PkgIterator Pkg) { return VisitNode(Pkg, "UNKNOWN"); };
+ bool VisitNode(PkgIterator Pkg, char const* from);
+ bool VisitDeps(DepFunc F,PkgIterator Pkg);
+ bool VisitRDeps(DepFunc F,PkgIterator Pkg);
+ bool VisitRProvides(DepFunc F,VerIterator Ver);
+ bool VisitProvides(DepIterator Pkg,bool Critical);
+
+ // Dependency checking functions.
+ bool DepUnPackCrit(DepIterator D);
+ bool DepUnPackPreD(DepIterator D);
+ bool DepUnPackPre(DepIterator D);
+ bool DepUnPackDep(DepIterator D);
+ bool DepConfigure(DepIterator D);
+ bool DepRemove(DepIterator D);
+
+ // Analysis helpers
+ bool AddLoop(DepIterator D);
+ bool CheckDep(DepIterator D);
+ bool DoRun();
+
+ // For pre sorting
+ int OrderCompareA(Package *a, Package *b) APT_PURE;
+ int OrderCompareB(Package *a, Package *b) APT_PURE;
+ int FileCmp(PkgIterator A,PkgIterator B) APT_PURE;
+
+ public:
+
+ typedef Package **iterator;
+
+ /* State flags
+ The Loop flag can be set on a package that is currently being processed by either SmartConfigure or
+ SmartUnPack. This allows the package manager to tell when a loop has been formed as it will try to
+ SmartUnPack or SmartConfigure a package with the Loop flag set. It will then either stop (as it knows
+ that the operation is unnecessary as its already in process), or in the case of the conflicts resolution
+ in SmartUnPack, use EarlyRemove to resolve the situation. */
+ enum Flags {Added = (1 << 0), AddPending = (1 << 1),
+ Immediate = (1 << 2), Loop = (1 << 3),
+ UnPacked = (1 << 4), Configured = (1 << 5),
+ Removed = (1 << 6), // Early Remove
+ InList = (1 << 7),
+ After = (1 << 8),
+ States = (UnPacked | Configured | Removed)};
+
+ // Flag manipulators
+ inline bool IsFlag(PkgIterator Pkg,unsigned long F) {return (Flags[Pkg->ID] & F) == F;};
+ inline bool IsFlag(Package *Pkg,unsigned long F) {return (Flags[Pkg->ID] & F) == F;};
+ void Flag(PkgIterator Pkg,unsigned long State, unsigned long F) {Flags[Pkg->ID] = (Flags[Pkg->ID] & (~F)) | State;};
+ inline void Flag(PkgIterator Pkg,unsigned long F) {Flags[Pkg->ID] |= F;};
+ inline void Flag(Package *Pkg,unsigned long F) {Flags[Pkg->ID] |= F;};
+ // RmFlag removes a flag from a package
+ inline void RmFlag(Package *Pkg,unsigned long F) {Flags[Pkg->ID] &= ~F;};
+ // IsNow will return true if the Pkg has been not been either configured or unpacked
+ inline bool IsNow(PkgIterator Pkg) {return (Flags[Pkg->ID] & (States & (~Removed))) == 0;};
+ bool IsMissing(PkgIterator Pkg) APT_PURE;
+ void WipeFlags(unsigned long F);
+ void SetFileList(std::string *FileList) {this->FileList = FileList;};
+
+ // Accessors
+ inline iterator begin() {return List;};
+ inline iterator end() {return End;};
+ inline void push_back(Package *Pkg) {*(End++) = Pkg;};
+ inline void push_back(PkgIterator Pkg) {*(End++) = Pkg;};
+ inline void pop_back() {End--;};
+ inline bool empty() {return End == List;};
+ inline unsigned int size() {return End - List;};
+
+ // Ordering modes
+ bool OrderCritical();
+ bool OrderUnpack(std::string *FileList = 0);
+ bool OrderConfigure();
+
+ int Score(PkgIterator Pkg);
+
+ explicit pkgOrderList(pkgDepCache *Cache);
+ virtual ~pkgOrderList();
+};
+
+#endif
diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc
new file mode 100644
index 000000000..a8537431b
--- /dev/null
+++ b/apt-pkg/packagemanager.cc
@@ -0,0 +1,1188 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: packagemanager.cc,v 1.30 2003/04/27 03:04:15 doogie Exp $
+/* ######################################################################
+
+ Package Manager - Abstacts the package manager
+
+ More work is needed in the area of transitioning provides, ie exim
+ replacing smail. This can cause interesting side effects.
+
+ Other cases involving conflicts+replaces should be tested.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/packagemanager.h>
+#include <apt-pkg/orderlist.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/edsp.h>
+#include <apt-pkg/version.h>
+#include <apt-pkg/acquire-item.h>
+#include <apt-pkg/algorithms.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/macros.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/install-progress.h>
+#include <apt-pkg/prettyprinters.h>
+
+#include <stddef.h>
+#include <list>
+#include <string>
+#include <iostream>
+
+#include <apti18n.h>
+ /*}}}*/
+using namespace std;
+
+bool pkgPackageManager::SigINTStop = false;
+
+// PM::PackageManager - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgPackageManager::pkgPackageManager(pkgDepCache *pCache) : Cache(*pCache),
+ List(NULL), Res(Incomplete), d(NULL)
+{
+ FileNames = new string[Cache.Head().PackageCount];
+ Debug = _config->FindB("Debug::pkgPackageManager",false);
+ NoImmConfigure = !_config->FindB("APT::Immediate-Configure",true);
+ ImmConfigureAll = _config->FindB("APT::Immediate-Configure-All",false);
+}
+ /*}}}*/
+// PM::PackageManager - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgPackageManager::~pkgPackageManager()
+{
+ delete List;
+ delete [] FileNames;
+}
+ /*}}}*/
+// PM::GetArchives - Queue the archives for download /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgPackageManager::GetArchives(pkgAcquire *Owner,pkgSourceList *Sources,
+ pkgRecords *Recs)
+{
+ if (CreateOrderList() == false)
+ return false;
+
+ bool const ordering =
+ _config->FindB("PackageManager::UnpackAll",true) ?
+ List->OrderUnpack() : List->OrderCritical();
+ if (ordering == false)
+ return _error->Error("Internal ordering error");
+
+ for (pkgOrderList::iterator I = List->begin(); I != List->end(); ++I)
+ {
+ PkgIterator Pkg(Cache,*I);
+ FileNames[Pkg->ID] = string();
+
+ // Skip packages to erase
+ if (Cache[Pkg].Delete() == true)
+ continue;
+
+ // Skip Packages that need configure only.
+ if (Pkg.State() == pkgCache::PkgIterator::NeedsConfigure &&
+ Cache[Pkg].Keep() == true)
+ continue;
+
+ // Skip already processed packages
+ if (List->IsNow(Pkg) == false)
+ continue;
+
+ new pkgAcqArchive(Owner,Sources,Recs,Cache[Pkg].InstVerIter(Cache),
+ FileNames[Pkg->ID]);
+ }
+
+ return true;
+}
+ /*}}}*/
+// PM::FixMissing - Keep all missing packages /*{{{*/
+// ---------------------------------------------------------------------
+/* This is called to correct the installation when packages could not
+ be downloaded. */
+bool pkgPackageManager::FixMissing()
+{
+ pkgDepCache::ActionGroup group(Cache);
+ pkgProblemResolver Resolve(&Cache);
+ List->SetFileList(FileNames);
+
+ bool Bad = false;
+ for (PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ {
+ if (List->IsMissing(I) == false)
+ continue;
+
+ // Okay, this file is missing and we need it. Mark it for keep
+ Bad = true;
+ Cache.MarkKeep(I, false, false);
+ }
+
+ // We have to empty the list otherwise it will not have the new changes
+ delete List;
+ List = 0;
+
+ if (Bad == false)
+ return true;
+
+ // Now downgrade everything that is broken
+ return Resolve.ResolveByKeep() == true && Cache.BrokenCount() == 0;
+}
+ /*}}}*/
+// PM::ImmediateAdd - Add the immediate flag recursively /*{{{*/
+// ---------------------------------------------------------------------
+/* This adds the immediate flag to the pkg and recursively to the
+ dependencies
+ */
+void pkgPackageManager::ImmediateAdd(PkgIterator I, bool UseInstallVer, unsigned const int &Depth)
+{
+ DepIterator D;
+
+ if(UseInstallVer)
+ {
+ if(Cache[I].InstallVer == 0)
+ return;
+ D = Cache[I].InstVerIter(Cache).DependsList();
+ } else {
+ if (I->CurrentVer == 0)
+ return;
+ D = I.CurrentVer().DependsList();
+ }
+
+ for ( /* nothing */ ; D.end() == false; ++D)
+ if (D->Type == pkgCache::Dep::Depends || D->Type == pkgCache::Dep::PreDepends)
+ {
+ if(!List->IsFlag(D.TargetPkg(), pkgOrderList::Immediate))
+ {
+ if(Debug)
+ clog << OutputInDepth(Depth) << "ImmediateAdd(): Adding Immediate flag to " << APT::PrettyPkg(&Cache, D.TargetPkg()) << " cause of " << D.DepType() << " " << I.FullName() << endl;
+ List->Flag(D.TargetPkg(),pkgOrderList::Immediate);
+ ImmediateAdd(D.TargetPkg(), UseInstallVer, Depth + 1);
+ }
+ }
+ return;
+}
+ /*}}}*/
+// PM::CreateOrderList - Create the ordering class /*{{{*/
+// ---------------------------------------------------------------------
+/* This populates the ordering list with all the packages that are
+ going to change. */
+bool pkgPackageManager::CreateOrderList()
+{
+ if (List != 0)
+ return true;
+
+ delete List;
+ List = new pkgOrderList(&Cache);
+
+ if (Debug && ImmConfigureAll)
+ clog << "CreateOrderList(): Adding Immediate flag for all packages because of APT::Immediate-Configure-All" << endl;
+
+ // Generate the list of affected packages and sort it
+ for (PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ {
+ // Ignore no-version packages
+ if (I->VersionList == 0)
+ continue;
+
+ // Mark the package and its dependents for immediate configuration
+ if ((((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) &&
+ NoImmConfigure == false) || ImmConfigureAll)
+ {
+ if(Debug && !ImmConfigureAll)
+ clog << "CreateOrderList(): Adding Immediate flag for " << I.FullName() << endl;
+ List->Flag(I,pkgOrderList::Immediate);
+
+ if (!ImmConfigureAll) {
+ // Look for other install packages to make immediate configurea
+ ImmediateAdd(I, true);
+
+ // And again with the current version.
+ ImmediateAdd(I, false);
+ }
+ }
+
+ // Not interesting
+ if ((Cache[I].Keep() == true ||
+ Cache[I].InstVerIter(Cache) == I.CurrentVer()) &&
+ I.State() == pkgCache::PkgIterator::NeedsNothing &&
+ (Cache[I].iFlags & pkgDepCache::ReInstall) != pkgDepCache::ReInstall &&
+ (I.Purge() != false || Cache[I].Mode != pkgDepCache::ModeDelete ||
+ (Cache[I].iFlags & pkgDepCache::Purge) != pkgDepCache::Purge))
+ continue;
+
+ // Append it to the list
+ List->push_back(I);
+ }
+
+ return true;
+}
+ /*}}}*/
+// PM::DepAlwaysTrue - Returns true if this dep is irrelevant /*{{{*/
+// ---------------------------------------------------------------------
+/* The restriction on provides is to eliminate the case when provides
+ are transitioning between valid states [ie exim to smail] */
+bool pkgPackageManager::DepAlwaysTrue(DepIterator D)
+{
+ if (D.TargetPkg()->ProvidesList != 0)
+ return false;
+
+ if ((Cache[D] & pkgDepCache::DepInstall) != 0 &&
+ (Cache[D] & pkgDepCache::DepNow) != 0)
+ return true;
+ return false;
+}
+ /*}}}*/
+// PM::CheckRConflicts - Look for reverse conflicts /*{{{*/
+// ---------------------------------------------------------------------
+/* This looks over the reverses for a conflicts line that needs early
+ removal. */
+bool pkgPackageManager::CheckRConflicts(PkgIterator Pkg,DepIterator D,
+ const char *Ver)
+{
+ for (;D.end() == false; ++D)
+ {
+ if (D->Type != pkgCache::Dep::Conflicts &&
+ D->Type != pkgCache::Dep::Obsoletes)
+ continue;
+
+ // The package hasn't been changed
+ if (List->IsNow(Pkg) == false)
+ continue;
+
+ // Ignore self conflicts, ignore conflicts from irrelevant versions
+ if (D.IsIgnorable(Pkg) || D.ParentVer() != D.ParentPkg().CurrentVer())
+ continue;
+
+ if (Cache.VS().CheckDep(Ver,D->CompareOp,D.TargetVer()) == false)
+ continue;
+
+ if (EarlyRemove(D.ParentPkg(), &D) == false)
+ return _error->Error("Reverse conflicts early remove for package '%s' failed",
+ Pkg.FullName().c_str());
+ }
+ return true;
+}
+ /*}}}*/
+// PM::CheckRBreaks - Look for reverse breaks /*{{{*/
+bool pkgPackageManager::CheckRBreaks(PkgIterator const &Pkg, DepIterator D,
+ const char * const Ver)
+{
+ for (;D.end() == false; ++D)
+ {
+ if (D->Type != pkgCache::Dep::DpkgBreaks)
+ continue;
+
+ PkgIterator const DP = D.ParentPkg();
+ if (Cache[DP].Delete() == false)
+ continue;
+
+ // Ignore self conflicts, ignore conflicts from irrelevant versions
+ if (D.IsIgnorable(Pkg) || D.ParentVer() != DP.CurrentVer())
+ continue;
+
+ if (Cache.VS().CheckDep(Ver, D->CompareOp, D.TargetVer()) == false)
+ continue;
+
+ // no earlyremove() here as user has already agreed to the permanent removal
+ if (SmartRemove(DP) == false)
+ return _error->Error("Internal Error, Could not early remove %s (%d)",DP.FullName().c_str(), 4);
+ }
+ return true;
+}
+ /*}}}*/
+// PM::ConfigureAll - Run the all out configuration /*{{{*/
+// ---------------------------------------------------------------------
+/* This configures every package. It is assumed they are all unpacked and
+ that the final configuration is valid. This is also used to catch packages
+ that have not been configured when using ImmConfigureAll */
+bool pkgPackageManager::ConfigureAll()
+{
+ pkgOrderList OList(&Cache);
+
+ // Populate the order list
+ for (pkgOrderList::iterator I = List->begin(); I != List->end(); ++I)
+ if (List->IsFlag(pkgCache::PkgIterator(Cache,*I),
+ pkgOrderList::UnPacked) == true)
+ OList.push_back(*I);
+
+ if (OList.OrderConfigure() == false)
+ return false;
+
+ std::string const conf = _config->Find("PackageManager::Configure", "smart");
+ bool const ConfigurePkgs = (ImmConfigureAll || conf == "all");
+
+ // Perform the configuring
+ for (pkgOrderList::iterator I = OList.begin(); I != OList.end(); ++I)
+ {
+ PkgIterator Pkg(Cache,*I);
+
+ /* Check if the package has been configured, this can happen if SmartConfigure
+ calls its self */
+ if (List->IsFlag(Pkg,pkgOrderList::Configured)) continue;
+
+ if (ConfigurePkgs == true && SmartConfigure(Pkg, 0) == false) {
+ if (ImmConfigureAll)
+ _error->Error(_("Could not perform immediate configuration on '%s'. "
+ "Please see man 5 apt.conf under APT::Immediate-Configure for details. (%d)"),Pkg.FullName().c_str(),1);
+ else
+ _error->Error("Internal error, packages left unconfigured. %s",Pkg.FullName().c_str());
+ return false;
+ }
+
+ List->Flag(Pkg,pkgOrderList::Configured,pkgOrderList::States);
+ }
+
+ return true;
+}
+ /*}}}*/
+// PM::NonLoopingSmart - helper to avoid loops while calling Smart methods /*{{{*/
+// -----------------------------------------------------------------------
+/* ensures that a loop of the form A depends B, B depends A (and similar)
+ is not leading us down into infinite recursion segfault land */
+bool pkgPackageManager::NonLoopingSmart(SmartAction const action, pkgCache::PkgIterator &Pkg,
+ pkgCache::PkgIterator DepPkg, int const Depth, bool const PkgLoop,
+ bool * const Bad, bool * const Changed)
+{
+ if (PkgLoop == false)
+ List->Flag(Pkg,pkgOrderList::Loop);
+ bool success = false;
+ switch(action)
+ {
+ case UNPACK_IMMEDIATE: success = SmartUnPack(DepPkg, true, Depth + 1); break;
+ case UNPACK: success = SmartUnPack(DepPkg, false, Depth + 1); break;
+ case CONFIGURE: success = SmartConfigure(DepPkg, Depth + 1); break;
+ }
+ if (PkgLoop == false)
+ List->RmFlag(Pkg,pkgOrderList::Loop);
+
+ if (success == false)
+ return false;
+
+ if (Bad != NULL)
+ *Bad = false;
+ if (Changed != NULL && List->IsFlag(DepPkg,pkgOrderList::Loop) == false)
+ *Changed = true;
+ return true;
+}
+ /*}}}*/
+// PM::SmartConfigure - Perform immediate configuration of the pkg /*{{{*/
+// ---------------------------------------------------------------------
+/* This function tries to put the system in a state where Pkg can be configured.
+ This involves checking each of Pkg's dependencies and unpacking and
+ configuring packages where needed. */
+bool pkgPackageManager::SmartConfigure(PkgIterator Pkg, int const Depth)
+{
+ // If this is true, only check and correct and dependencies without the Loop flag
+ bool const PkgLoop = List->IsFlag(Pkg,pkgOrderList::Loop);
+
+ if (Debug) {
+ VerIterator InstallVer = VerIterator(Cache,Cache[Pkg].InstallVer);
+ clog << OutputInDepth(Depth) << "SmartConfigure " << Pkg.FullName() << " (" << InstallVer.VerStr() << ")";
+ if (PkgLoop)
+ clog << " (Only Correct Dependencies)";
+ clog << endl;
+ }
+
+ VerIterator const instVer = Cache[Pkg].InstVerIter(Cache);
+
+ /* Because of the ordered list, most dependencies should be unpacked,
+ however if there is a loop (A depends on B, B depends on A) this will not
+ be the case, so check for dependencies before configuring. */
+ bool Bad = false, Changed = false;
+ const unsigned int max_loops = _config->FindI("APT::pkgPackageManager::MaxLoopCount", 5000);
+ unsigned int i=0;
+ std::list<DepIterator> needConfigure;
+ do
+ {
+ // Check each dependency and see if anything needs to be done
+ // so that it can be configured
+ Changed = false;
+ for (DepIterator D = instVer.DependsList(); D.end() == false; )
+ {
+ // Compute a single dependency element (glob or)
+ pkgCache::DepIterator Start, End;
+ D.GlobOr(Start,End);
+
+ if (End->Type != pkgCache::Dep::Depends && End->Type != pkgCache::Dep::PreDepends)
+ continue;
+ Bad = true;
+
+ // the first pass checks if we its all good, i.e. if we have
+ // to do anything at all
+ for (DepIterator Cur = Start; true; ++Cur)
+ {
+ std::unique_ptr<Version *[]> VList(Cur.AllTargets());
+
+ for (Version **I = VList.get(); *I != 0; ++I)
+ {
+ VerIterator Ver(Cache,*I);
+ PkgIterator DepPkg = Ver.ParentPkg();
+
+ // Check if the current version of the package is available and will satisfy this dependency
+ if (DepPkg.CurrentVer() == Ver && List->IsNow(DepPkg) == true &&
+ List->IsFlag(DepPkg,pkgOrderList::Removed) == false &&
+ DepPkg.State() == PkgIterator::NeedsNothing &&
+ (Cache[DepPkg].iFlags & pkgDepCache::ReInstall) != pkgDepCache::ReInstall)
+ {
+ Bad = false;
+ break;
+ }
+
+ // Check if the version that is going to be installed will satisfy the dependency
+ if (Cache[DepPkg].InstallVer != *I || List->IsNow(DepPkg) == false)
+ continue;
+
+ if (PkgLoop == true)
+ {
+ if (Debug)
+ std::clog << OutputInDepth(Depth) << "Package " << APT::PrettyPkg(&Cache, Pkg) << " loops in SmartConfigure";
+ if (List->IsFlag(DepPkg,pkgOrderList::UnPacked))
+ Bad = false;
+ else if (Debug)
+ std::clog << ", but it isn't unpacked yet";
+ if (Debug)
+ std::clog << std::endl;
+ }
+ }
+
+ if (Cur == End || Bad == false)
+ break;
+ }
+
+ // this dependency is in a good state, so we can stop
+ if (Bad == false)
+ {
+ if (Debug)
+ std::clog << OutputInDepth(Depth) << "Found ok dep " << APT::PrettyPkg(&Cache, Start.TargetPkg()) << std::endl;
+ continue;
+ }
+
+ // Check for dependencies that have not been unpacked,
+ // probably due to loops.
+ for (DepIterator Cur = Start; true; ++Cur)
+ {
+ std::unique_ptr<Version *[]> VList(Cur.AllTargets());
+
+ for (Version **I = VList.get(); *I != 0; ++I)
+ {
+ VerIterator Ver(Cache,*I);
+ PkgIterator DepPkg = Ver.ParentPkg();
+
+ // Check if the current version of the package is available and will satisfy this dependency
+ if (DepPkg.CurrentVer() == Ver && List->IsNow(DepPkg) == true &&
+ List->IsFlag(DepPkg,pkgOrderList::Removed) == false &&
+ DepPkg.State() == PkgIterator::NeedsNothing &&
+ (Cache[DepPkg].iFlags & pkgDepCache::ReInstall) != pkgDepCache::ReInstall)
+ continue;
+
+ // Check if the version that is going to be installed will satisfy the dependency
+ if (Cache[DepPkg].InstallVer != *I || List->IsNow(DepPkg) == false)
+ continue;
+
+ if (PkgLoop == true)
+ {
+ if (Debug)
+ std::clog << OutputInDepth(Depth) << "Package " << APT::PrettyPkg(&Cache, Pkg) << " loops in SmartConfigure";
+ if (List->IsFlag(DepPkg,pkgOrderList::UnPacked))
+ Bad = false;
+ else if (Debug)
+ std::clog << ", but it isn't unpacked yet";
+ if (Debug)
+ std::clog << std::endl;
+ }
+ else
+ {
+ if (Debug)
+ clog << OutputInDepth(Depth) << "Unpacking " << DepPkg.FullName() << " to avoid loop " << APT::PrettyDep(&Cache, Cur) << endl;
+ if (NonLoopingSmart(UNPACK_IMMEDIATE, Pkg, DepPkg, Depth, PkgLoop, &Bad, &Changed) == false)
+ return false;
+ }
+ // at this point we either unpacked a Dep or we are in a loop,
+ // no need to unpack a second one
+ break;
+ }
+
+ if (Cur == End || Bad == false)
+ break;
+ }
+
+ if (Bad == false)
+ continue;
+
+ needConfigure.push_back(Start);
+ }
+ if (i++ > max_loops)
+ return _error->Error("Internal error: MaxLoopCount reached in SmartUnPack (1) for %s, aborting", Pkg.FullName().c_str());
+ } while (Changed == true);
+
+ // now go over anything that needs configuring
+ Bad = false, Changed = false, i = 0;
+ do
+ {
+ Changed = false;
+ for (std::list<DepIterator>::const_iterator D = needConfigure.begin(); D != needConfigure.end(); ++D)
+ {
+ // Compute a single dependency element (glob or) without modifying D
+ pkgCache::DepIterator Start, End;
+ {
+ pkgCache::DepIterator Discard = *D;
+ Discard.GlobOr(Start,End);
+ }
+
+ if (End->Type != pkgCache::Dep::Depends && End->Type != pkgCache::Dep::PreDepends)
+ continue;
+ Bad = true;
+
+ // Search for dependencies which are unpacked but aren't configured yet (maybe loops)
+ for (DepIterator Cur = Start; true; ++Cur)
+ {
+ std::unique_ptr<Version *[]> VList(Cur.AllTargets());
+
+ for (Version **I = VList.get(); *I != 0; ++I)
+ {
+ VerIterator Ver(Cache,*I);
+ PkgIterator DepPkg = Ver.ParentPkg();
+
+ // Check if the version that is going to be installed will satisfy the dependency
+ if (Cache[DepPkg].InstallVer != *I)
+ continue;
+
+ if (List->IsFlag(DepPkg,pkgOrderList::UnPacked))
+ {
+ if (List->IsFlag(DepPkg,pkgOrderList::Loop) && PkgLoop)
+ {
+ // This dependency has already been dealt with by another SmartConfigure on Pkg
+ Bad = false;
+ break;
+ }
+ if (Debug)
+ std::clog << OutputInDepth(Depth) << "Configure already unpacked " << APT::PrettyPkg(&Cache, DepPkg) << std::endl;
+ if (NonLoopingSmart(CONFIGURE, Pkg, DepPkg, Depth, PkgLoop, &Bad, &Changed) == false)
+ return false;
+ break;
+
+ }
+ else if (List->IsFlag(DepPkg,pkgOrderList::Configured))
+ {
+ Bad = false;
+ break;
+ }
+ }
+ if (Cur == End || Bad == false)
+ break;
+ }
+
+
+ if (Bad == true && Changed == false && Debug == true)
+ std::clog << OutputInDepth(Depth) << "Could not satisfy " << APT::PrettyDep(&Cache, *D) << std::endl;
+ }
+ if (i++ > max_loops)
+ return _error->Error("Internal error: MaxLoopCount reached in SmartUnPack (2) for %s, aborting", Pkg.FullName().c_str());
+ } while (Changed == true);
+
+ if (Bad == true)
+ return _error->Error(_("Could not configure '%s'. "),Pkg.FullName().c_str());
+
+ // Check for reverse conflicts.
+ if (CheckRBreaks(Pkg,Pkg.RevDependsList(), instVer.VerStr()) == false)
+ return false;
+
+ for (PrvIterator P = instVer.ProvidesList(); P.end() == false; ++P)
+ if (Pkg->Group != P.OwnerPkg()->Group)
+ CheckRBreaks(Pkg,P.ParentPkg().RevDependsList(),P.ProvideVersion());
+
+ if (PkgLoop) return true;
+
+ static std::string const conf = _config->Find("PackageManager::Configure", "smart");
+ static bool const ConfigurePkgs = (conf == "all" || conf == "smart");
+
+ if (List->IsFlag(Pkg,pkgOrderList::Configured))
+ return _error->Error("Internal configure error on '%s'.", Pkg.FullName().c_str());
+
+ if (ConfigurePkgs == true && Configure(Pkg) == false)
+ return false;
+
+ List->Flag(Pkg,pkgOrderList::Configured,pkgOrderList::States);
+
+ if ((Cache[Pkg].InstVerIter(Cache)->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same)
+ for (PkgIterator P = Pkg.Group().PackageList();
+ P.end() == false; P = Pkg.Group().NextPkg(P))
+ {
+ if (Pkg == P || List->IsFlag(P,pkgOrderList::Configured) == true ||
+ List->IsFlag(P,pkgOrderList::UnPacked) == false ||
+ Cache[P].InstallVer == 0 || (P.CurrentVer() == Cache[P].InstallVer &&
+ (Cache[Pkg].iFlags & pkgDepCache::ReInstall) != pkgDepCache::ReInstall))
+ continue;
+ if (SmartConfigure(P, (Depth +1)) == false)
+ return false;
+ }
+
+ // Sanity Check
+ if (List->IsFlag(Pkg,pkgOrderList::Configured) == false)
+ return _error->Error(_("Could not configure '%s'. "),Pkg.FullName().c_str());
+
+ return true;
+}
+ /*}}}*/
+// PM::EarlyRemove - Perform removal of packages before their time /*{{{*/
+// ---------------------------------------------------------------------
+/* This is called to deal with conflicts arising from unpacking */
+bool pkgPackageManager::EarlyRemove(PkgIterator Pkg)
+{
+ return EarlyRemove(Pkg, NULL);
+}
+bool pkgPackageManager::EarlyRemove(PkgIterator Pkg, DepIterator const * const Dep)
+{
+ if (List->IsNow(Pkg) == false)
+ return true;
+
+ // Already removed it
+ if (List->IsFlag(Pkg,pkgOrderList::Removed) == true)
+ return true;
+
+ // Woops, it will not be re-installed!
+ if (List->IsFlag(Pkg,pkgOrderList::InList) == false)
+ return false;
+
+ // these breaks on M-A:same packages can be dealt with. They 'loop' by design
+ if (Dep != NULL && (*Dep)->Type == pkgCache::Dep::DpkgBreaks && Dep->IsMultiArchImplicit() == true)
+ return true;
+
+ // Essential packages get special treatment
+ bool IsEssential = false;
+ if ((Pkg->Flags & pkgCache::Flag::Essential) != 0 ||
+ (Pkg->Flags & pkgCache::Flag::Important) != 0)
+ IsEssential = true;
+
+ /* Check for packages that are the dependents of essential packages and
+ promote them too */
+ if (Pkg->CurrentVer != 0)
+ {
+ for (pkgCache::DepIterator D = Pkg.RevDependsList(); D.end() == false &&
+ IsEssential == false; ++D)
+ if (D->Type == pkgCache::Dep::Depends || D->Type == pkgCache::Dep::PreDepends)
+ if ((D.ParentPkg()->Flags & pkgCache::Flag::Essential) != 0 ||
+ (D.ParentPkg()->Flags & pkgCache::Flag::Important) != 0)
+ IsEssential = true;
+ }
+
+ if (IsEssential == true)
+ {
+ if (_config->FindB("APT::Force-LoopBreak",false) == false)
+ return _error->Error(_("This installation run will require temporarily "
+ "removing the essential package %s due to a "
+ "Conflicts/Pre-Depends loop. This is often bad, "
+ "but if you really want to do it, activate the "
+ "APT::Force-LoopBreak option."),Pkg.FullName().c_str());
+ }
+ // dpkg will auto-deconfigure it, no need for the big remove hammer
+ else if (Dep != NULL && (*Dep)->Type == pkgCache::Dep::DpkgBreaks)
+ return true;
+
+ bool Res = SmartRemove(Pkg);
+ if (Cache[Pkg].Delete() == false)
+ List->Flag(Pkg,pkgOrderList::Removed,pkgOrderList::States);
+
+ return Res;
+}
+ /*}}}*/
+// PM::SmartRemove - Removal Helper /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgPackageManager::SmartRemove(PkgIterator Pkg)
+{
+ if (List->IsNow(Pkg) == false)
+ return true;
+
+ List->Flag(Pkg,pkgOrderList::Configured,pkgOrderList::States);
+
+ return Remove(Pkg,(Cache[Pkg].iFlags & pkgDepCache::Purge) == pkgDepCache::Purge);
+}
+ /*}}}*/
+// PM::SmartUnPack - Install helper /*{{{*/
+// ---------------------------------------------------------------------
+/* This puts the system in a state where it can Unpack Pkg, if Pkg is already
+ unpacked, or when it has been unpacked, if Immediate==true it configures it. */
+bool pkgPackageManager::SmartUnPack(PkgIterator Pkg)
+{
+ return SmartUnPack(Pkg, true, 0);
+}
+bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate, int const Depth)
+{
+ bool PkgLoop = List->IsFlag(Pkg,pkgOrderList::Loop);
+
+ if (Debug) {
+ clog << OutputInDepth(Depth) << "SmartUnPack " << Pkg.FullName();
+ VerIterator InstallVer = VerIterator(Cache,Cache[Pkg].InstallVer);
+ if (Pkg.CurrentVer() == 0)
+ clog << " (install version " << InstallVer.VerStr() << ")";
+ else
+ clog << " (replace version " << Pkg.CurrentVer().VerStr() << " with " << InstallVer.VerStr() << ")";
+ if (PkgLoop)
+ clog << " (Only Perform PreUnpack Checks)";
+ if (Immediate)
+ clog << " immediately";
+ clog << endl;
+ }
+
+ VerIterator const instVer = Cache[Pkg].InstVerIter(Cache);
+
+ /* PreUnpack Checks: This loop checks and attempts to rectify any problems that would prevent the package being unpacked.
+ It addresses: PreDepends, Conflicts, Obsoletes and Breaks (DpkgBreaks). Any resolutions that do not require it should
+ avoid configuration (calling SmartUnpack with Immediate=true), this is because when unpacking some packages with
+ complex dependency structures, trying to configure some packages while breaking the loops can complicate things.
+ This will be either dealt with if the package is configured as a dependency of Pkg (if and when Pkg is configured),
+ or by the ConfigureAll call at the end of the for loop in OrderInstall. */
+ bool SomethingBad = false, Changed = false;
+ bool couldBeTemporaryRemoved = Depth != 0 && List->IsFlag(Pkg,pkgOrderList::Removed) == false;
+ const unsigned int max_loops = _config->FindI("APT::pkgPackageManager::MaxLoopCount", 5000);
+ unsigned int i = 0;
+ do
+ {
+ Changed = false;
+ for (DepIterator D = instVer.DependsList(); D.end() == false; )
+ {
+ // Compute a single dependency element (glob or)
+ pkgCache::DepIterator Start, End;
+ D.GlobOr(Start,End);
+
+ if (End->Type == pkgCache::Dep::PreDepends)
+ {
+ bool Bad = true;
+ if (Debug)
+ clog << OutputInDepth(Depth) << "PreDepends order for " << Pkg.FullName() << std::endl;
+
+ // Look for easy targets: packages that are already okay
+ for (DepIterator Cur = Start; Bad == true; ++Cur)
+ {
+ std::unique_ptr<Version *[]> VList(Cur.AllTargets());
+ for (Version **I = VList.get(); *I != 0; ++I)
+ {
+ VerIterator Ver(Cache,*I);
+ PkgIterator Pkg = Ver.ParentPkg();
+
+ // See if the current version is ok
+ if (Pkg.CurrentVer() == Ver && List->IsNow(Pkg) == true &&
+ Pkg.State() == PkgIterator::NeedsNothing &&
+ (Cache[Pkg].iFlags & pkgDepCache::ReInstall) != pkgDepCache::ReInstall)
+ {
+ Bad = false;
+ if (Debug)
+ clog << OutputInDepth(Depth) << "Found ok package " << Pkg.FullName() << endl;
+ break;
+ }
+ }
+ if (Cur == End)
+ break;
+ }
+
+ // Look for something that could be configured.
+ for (DepIterator Cur = Start; Bad == true && Cur.end() == false; ++Cur)
+ {
+ std::unique_ptr<Version *[]> VList(Cur.AllTargets());
+ for (Version **I = VList.get(); *I != 0; ++I)
+ {
+ VerIterator Ver(Cache,*I);
+ PkgIterator DepPkg = Ver.ParentPkg();
+
+ // Not the install version
+ if (Cache[DepPkg].InstallVer != *I)
+ continue;
+
+ if (Cache[DepPkg].Keep() == true && DepPkg.State() == PkgIterator::NeedsNothing &&
+ (Cache[DepPkg].iFlags & pkgDepCache::ReInstall) != pkgDepCache::ReInstall)
+ continue;
+
+ if (List->IsFlag(DepPkg,pkgOrderList::Configured))
+ {
+ Bad = false;
+ break;
+ }
+
+ // check if it needs unpack or if configure is enough
+ if (List->IsFlag(DepPkg,pkgOrderList::UnPacked) == false)
+ {
+ // two packages pre-depending on each other can't be handled sanely
+ if (List->IsFlag(DepPkg,pkgOrderList::Loop) && PkgLoop)
+ {
+ // this isn't an error as there is potential for something else to satisfy it
+ // (like a provides or an or-group member)
+ if (Debug)
+ clog << OutputInDepth(Depth) << "Unpack loop detected between " << DepPkg.FullName() << " and " << Pkg.FullName() << endl;
+ continue;
+ }
+
+ if (Debug)
+ clog << OutputInDepth(Depth) << "Trying to SmartUnpack " << DepPkg.FullName() << endl;
+ if (NonLoopingSmart(UNPACK_IMMEDIATE, Pkg, DepPkg, Depth, PkgLoop, &Bad, &Changed) == false)
+ return false;
+ }
+ else
+ {
+ if (Debug)
+ clog << OutputInDepth(Depth) << "Trying to SmartConfigure " << DepPkg.FullName() << endl;
+ if (NonLoopingSmart(CONFIGURE, Pkg, DepPkg, Depth, PkgLoop, &Bad, &Changed) == false)
+ return false;
+ }
+ break;
+ }
+ }
+
+ if (Bad == true)
+ SomethingBad = true;
+ }
+ else if (End->Type == pkgCache::Dep::Conflicts ||
+ End->Type == pkgCache::Dep::Obsoletes ||
+ End->Type == pkgCache::Dep::DpkgBreaks)
+ {
+ std::unique_ptr<Version *[]> VList(End.AllTargets());
+ for (Version **I = VList.get(); *I != 0; ++I)
+ {
+ VerIterator Ver(Cache,*I);
+ PkgIterator ConflictPkg = Ver.ParentPkg();
+ if (ConflictPkg.CurrentVer() != Ver)
+ {
+ if (Debug)
+ std::clog << OutputInDepth(Depth) << "Ignore not-installed version " << Ver.VerStr() << " of " << ConflictPkg.FullName() << " for " << APT::PrettyDep(&Cache, End) << std::endl;
+ continue;
+ }
+
+ if (List->IsNow(ConflictPkg) == false)
+ {
+ if (Debug)
+ std::clog << OutputInDepth(Depth) << "Ignore already dealt-with version " << Ver.VerStr() << " of " << ConflictPkg.FullName() << " for " << APT::PrettyDep(&Cache, End) << std::endl;
+ continue;
+ }
+
+ if (List->IsFlag(ConflictPkg,pkgOrderList::Removed) == true)
+ {
+ if (Debug)
+ clog << OutputInDepth(Depth) << "Ignoring " << APT::PrettyDep(&Cache, End) << " as " << ConflictPkg.FullName() << "was temporarily removed" << endl;
+ continue;
+ }
+
+ if (List->IsFlag(ConflictPkg,pkgOrderList::Loop) && PkgLoop)
+ {
+ if (End->Type == pkgCache::Dep::DpkgBreaks && End.IsMultiArchImplicit() == true)
+ {
+ if (Debug)
+ clog << OutputInDepth(Depth) << "Because dependency is MultiArchImplicit we ignored looping on: " << APT::PrettyPkg(&Cache, ConflictPkg) << endl;
+ continue;
+ }
+ if (Debug)
+ {
+ if (End->Type == pkgCache::Dep::DpkgBreaks)
+ clog << OutputInDepth(Depth) << "Because of breaks knot, deconfigure " << ConflictPkg.FullName() << " temporarily" << endl;
+ else
+ clog << OutputInDepth(Depth) << "Because of conflict knot, removing " << ConflictPkg.FullName() << " temporarily" << endl;
+ }
+ if (EarlyRemove(ConflictPkg, &End) == false)
+ return _error->Error("Internal Error, Could not early remove %s (%d)",ConflictPkg.FullName().c_str(), 3);
+ SomethingBad = true;
+ continue;
+ }
+
+ if (Cache[ConflictPkg].Delete() == false)
+ {
+ if (Debug)
+ {
+ clog << OutputInDepth(Depth) << "Unpacking " << ConflictPkg.FullName() << " to avoid " << APT::PrettyDep(&Cache, End);
+ if (PkgLoop == true)
+ clog << " (Looping)";
+ clog << std::endl;
+ }
+ // we would like to avoid temporary removals and all that at best via a simple unpack
+ _error->PushToStack();
+ if (NonLoopingSmart(UNPACK, Pkg, ConflictPkg, Depth, PkgLoop, NULL, &Changed) == false)
+ {
+ // but if it fails ignore this failure and look for alternative ways of solving
+ if (Debug)
+ {
+ clog << OutputInDepth(Depth) << "Avoidance unpack of " << ConflictPkg.FullName() << " failed for " << APT::PrettyDep(&Cache, End) << " ignoring:" << std::endl;
+ _error->DumpErrors(std::clog, GlobalError::DEBUG, false);
+ }
+ _error->RevertToStack();
+ // ignorance can only happen if a) one of the offenders is already gone
+ if (List->IsFlag(ConflictPkg,pkgOrderList::Removed) == true)
+ {
+ if (Debug)
+ clog << OutputInDepth(Depth) << "But " << ConflictPkg.FullName() << " was temporarily removed in the meantime to satisfy " << APT::PrettyDep(&Cache, End) << endl;
+ }
+ else if (List->IsFlag(Pkg,pkgOrderList::Removed) == true)
+ {
+ if (Debug)
+ clog << OutputInDepth(Depth) << "But " << Pkg.FullName() << " was temporarily removed in the meantime to satisfy " << APT::PrettyDep(&Cache, End) << endl;
+ }
+ // or b) we can make one go (removal or dpkg auto-deconfigure)
+ else
+ {
+ if (Debug)
+ clog << OutputInDepth(Depth) << "So temprorary remove/deconfigure " << ConflictPkg.FullName() << " to satisfy " << APT::PrettyDep(&Cache, End) << endl;
+ if (EarlyRemove(ConflictPkg, &End) == false)
+ return _error->Error("Internal Error, Could not early remove %s (%d)",ConflictPkg.FullName().c_str(), 2);
+ }
+ }
+ else
+ _error->MergeWithStack();
+ }
+ else
+ {
+ if (Debug)
+ clog << OutputInDepth(Depth) << "Removing " << ConflictPkg.FullName() << " now to avoid " << APT::PrettyDep(&Cache, End) << endl;
+ // no earlyremove() here as user has already agreed to the permanent removal
+ if (SmartRemove(Pkg) == false)
+ return _error->Error("Internal Error, Could not early remove %s (%d)",ConflictPkg.FullName().c_str(), 1);
+ }
+ }
+ }
+ }
+ if (i++ > max_loops)
+ return _error->Error("Internal error: APT::pkgPackageManager::MaxLoopCount reached in SmartConfigure for %s, aborting", Pkg.FullName().c_str());
+ } while (Changed == true);
+
+ if (SomethingBad == true)
+ return _error->Error("Couldn't configure %s, probably a dependency cycle.", Pkg.FullName().c_str());
+
+ if (couldBeTemporaryRemoved == true && List->IsFlag(Pkg,pkgOrderList::Removed) == true)
+ {
+ if (Debug)
+ std::clog << OutputInDepth(Depth) << "Prevent unpack as " << APT::PrettyPkg(&Cache, Pkg) << " is currently temporarily removed" << std::endl;
+ return true;
+ }
+
+ // Check for reverse conflicts.
+ if (CheckRConflicts(Pkg,Pkg.RevDependsList(),
+ instVer.VerStr()) == false)
+ return false;
+
+ for (PrvIterator P = instVer.ProvidesList();
+ P.end() == false; ++P)
+ if (Pkg->Group != P.OwnerPkg()->Group)
+ CheckRConflicts(Pkg,P.ParentPkg().RevDependsList(),P.ProvideVersion());
+
+ if (PkgLoop)
+ return true;
+
+ List->Flag(Pkg,pkgOrderList::UnPacked,pkgOrderList::States);
+
+ if (Immediate == true && (instVer->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same)
+ {
+ /* Do lockstep M-A:same unpacking in two phases:
+ First unpack all installed architectures, then the not installed.
+ This way we avoid that M-A: enabled packages are installed before
+ their older non-M-A enabled packages are replaced by newer versions */
+ bool const installed = Pkg->CurrentVer != 0;
+ if (installed == true &&
+ (instVer != Pkg.CurrentVer() ||
+ ((Cache[Pkg].iFlags & pkgDepCache::ReInstall) == pkgDepCache::ReInstall)) &&
+ Install(Pkg,FileNames[Pkg->ID]) == false)
+ return false;
+ for (PkgIterator P = Pkg.Group().PackageList();
+ P.end() == false; P = Pkg.Group().NextPkg(P))
+ {
+ if (P->CurrentVer == 0 || P == Pkg || List->IsFlag(P,pkgOrderList::UnPacked) == true ||
+ Cache[P].InstallVer == 0 || (P.CurrentVer() == Cache[P].InstallVer &&
+ (Cache[Pkg].iFlags & pkgDepCache::ReInstall) != pkgDepCache::ReInstall))
+ continue;
+ if (SmartUnPack(P, false, Depth + 1) == false)
+ return false;
+ }
+ if (installed == false && Install(Pkg,FileNames[Pkg->ID]) == false)
+ return false;
+ for (PkgIterator P = Pkg.Group().PackageList();
+ P.end() == false; P = Pkg.Group().NextPkg(P))
+ {
+ if (P->CurrentVer != 0 || P == Pkg || List->IsFlag(P,pkgOrderList::UnPacked) == true ||
+ List->IsFlag(P,pkgOrderList::Configured) == true ||
+ Cache[P].InstallVer == 0 || (P.CurrentVer() == Cache[P].InstallVer &&
+ (Cache[Pkg].iFlags & pkgDepCache::ReInstall) != pkgDepCache::ReInstall))
+ continue;
+ if (SmartUnPack(P, false, Depth + 1) == false)
+ return false;
+ }
+ }
+ // packages which are already unpacked don't need to be unpacked again
+ else if ((instVer != Pkg.CurrentVer() ||
+ ((Cache[Pkg].iFlags & pkgDepCache::ReInstall) == pkgDepCache::ReInstall)) &&
+ Install(Pkg,FileNames[Pkg->ID]) == false)
+ return false;
+
+ if (Immediate == true) {
+ // Perform immediate configuration of the package.
+ if (SmartConfigure(Pkg, Depth + 1) == false)
+ _error->Error(_("Could not perform immediate configuration on '%s'. "
+ "Please see man 5 apt.conf under APT::Immediate-Configure for details. (%d)"),Pkg.FullName().c_str(),2);
+ }
+
+ return true;
+}
+ /*}}}*/
+// PM::OrderInstall - Installation ordering routine /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgPackageManager::OrderResult pkgPackageManager::OrderInstall()
+{
+ if (CreateOrderList() == false)
+ return Failed;
+
+ Reset();
+
+ if (Debug == true)
+ clog << "Beginning to order" << endl;
+
+ std::string const planner = _config->Find("APT::Planner", "internal");
+ unsigned int flags = 0;
+ if (_config->FindB("APT::Immediate-Configure", true) == false)
+ flags |= EIPP::Request::NO_IMMEDIATE_CONFIGURATION;
+ else if (_config->FindB("APT::Immediate-Configure-All", false))
+ flags |= EIPP::Request::IMMEDIATE_CONFIGURATION_ALL;
+ else if (_config->FindB("APT::Force-LoopBreak", false))
+ flags |= EIPP::Request::ALLOW_TEMPORARY_REMOVE_OF_ESSENTIALS;
+ auto const ret = EIPP::OrderInstall(planner.c_str(), this, flags, nullptr);
+ if (planner != "internal")
+ return ret ? Completed : Failed;
+
+ bool const ordering =
+ _config->FindB("PackageManager::UnpackAll",true) ?
+ List->OrderUnpack(FileNames) : List->OrderCritical();
+ if (ordering == false)
+ {
+ _error->Error("Internal ordering error");
+ return Failed;
+ }
+
+ if (Debug == true)
+ clog << "Done ordering" << endl;
+
+ bool DoneSomething = false;
+ for (pkgOrderList::iterator I = List->begin(); I != List->end(); ++I)
+ {
+ PkgIterator Pkg(Cache,*I);
+
+ if (List->IsNow(Pkg) == false)
+ {
+ if (Debug == true)
+ clog << "Skipping already done " << Pkg.FullName() << endl;
+ continue;
+ }
+
+ if (List->IsMissing(Pkg) == true)
+ {
+ if (Debug == true)
+ clog << "Sequence completed at " << Pkg.FullName() << endl;
+ if (DoneSomething == false)
+ {
+ _error->Error("Internal Error, ordering was unable to handle the media swap");
+ return Failed;
+ }
+ return Incomplete;
+ }
+
+ // Sanity check
+ if (Cache[Pkg].Keep() == true &&
+ Pkg.State() == pkgCache::PkgIterator::NeedsNothing &&
+ (Cache[Pkg].iFlags & pkgDepCache::ReInstall) != pkgDepCache::ReInstall)
+ {
+ _error->Error("Internal Error, trying to manipulate a kept package (%s)",Pkg.FullName().c_str());
+ return Failed;
+ }
+
+ // Perform a delete or an install
+ if (Cache[Pkg].Delete() == true)
+ {
+ if (SmartRemove(Pkg) == false)
+ return Failed;
+ }
+ else
+ if (SmartUnPack(Pkg,List->IsFlag(Pkg,pkgOrderList::Immediate),0) == false)
+ return Failed;
+ DoneSomething = true;
+
+ if (ImmConfigureAll) {
+ /* ConfigureAll here to pick up and packages left unconfigured because they were unpacked in the
+ "PreUnpack Checks" section */
+ if (!ConfigureAll())
+ return Failed;
+ }
+ }
+
+ // Final run through the configure phase
+ if (ConfigureAll() == false)
+ return Failed;
+
+ // Sanity check
+ for (pkgOrderList::iterator I = List->begin(); I != List->end(); ++I)
+ {
+ if (List->IsFlag(*I,pkgOrderList::Configured) == false)
+ {
+ _error->Error("Internal error, packages left unconfigured. %s",
+ PkgIterator(Cache,*I).FullName().c_str());
+ return Failed;
+ }
+ }
+
+ return Completed;
+}
+// PM::DoInstallPostFork - compat /*{{{*/
+// ---------------------------------------------------------------------
+ /*}}}*/
+pkgPackageManager::OrderResult
+pkgPackageManager::DoInstallPostFork(int statusFd)
+{
+ APT::Progress::PackageManager *progress = new
+ APT::Progress::PackageManagerProgressFd(statusFd);
+ pkgPackageManager::OrderResult res = DoInstallPostFork(progress);
+ delete progress;
+ return res;
+}
+ /*}}}*/
+// PM::DoInstallPostFork - Does install part that happens after the fork /*{{{*/
+// ---------------------------------------------------------------------
+pkgPackageManager::OrderResult
+pkgPackageManager::DoInstallPostFork(APT::Progress::PackageManager *progress)
+{
+ bool goResult;
+ auto simulation = dynamic_cast<pkgSimulate*>(this);
+ if (simulation == nullptr)
+ goResult = Go(progress);
+ else
+ goResult = simulation->Go2(progress);
+ if(goResult == false)
+ return Failed;
+
+ return Res;
+}
+ /*}}}*/
+// PM::DoInstall - Does the installation /*{{{*/
+// ---------------------------------------------------------------------
+/* compat */
+pkgPackageManager::OrderResult
+pkgPackageManager::DoInstall(int statusFd)
+{
+ APT::Progress::PackageManager *progress = new
+ APT::Progress::PackageManagerProgressFd(statusFd);
+ OrderResult res = DoInstall(progress);
+ delete progress;
+ return res;
+ }
+ /*}}}*/
+// PM::DoInstall - Does the installation /*{{{*/
+// ---------------------------------------------------------------------
+/* This uses the filenames in FileNames and the information in the
+ DepCache to perform the installation of packages.*/
+pkgPackageManager::OrderResult
+pkgPackageManager::DoInstall(APT::Progress::PackageManager *progress)
+{
+ if(DoInstallPreFork() == Failed)
+ return Failed;
+
+ return DoInstallPostFork(progress);
+}
+ /*}}}*/
diff --git a/apt-pkg/packagemanager.h b/apt-pkg/packagemanager.h
new file mode 100644
index 000000000..e4c7a0a0a
--- /dev/null
+++ b/apt-pkg/packagemanager.h
@@ -0,0 +1,153 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Package Manager - Abstacts the package manager
+
+ Three steps are
+ - Aquiration of archives (stores the list of final file names)
+ - Sorting of operations
+ - Invocation of package manager
+
+ This is the final stage when the package cache entities get converted
+ into file names and the state stored in a DepCache is transformed
+ into a series of operations.
+
+ In the final scheme of things this may serve as a director class to
+ access the actual install methods based on the file type being
+ installed.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_PACKAGEMANAGER_H
+#define PKGLIB_PACKAGEMANAGER_H
+
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/init.h>
+#include <apt-pkg/edsp.h>
+#include <apt-pkg/macros.h>
+
+#include <string>
+#include <set>
+
+#ifndef APT_10_CLEANER_HEADERS
+#include <apt-pkg/install-progress.h>
+#include <iostream>
+#endif
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/depcache.h>
+using std::string;
+#endif
+
+class pkgAcquire;
+class pkgDepCache;
+class pkgSourceList;
+class pkgOrderList;
+class pkgRecords;
+class OpProgress;
+class pkgPackageManager;
+namespace APT {
+ namespace Progress {
+ class PackageManager;
+ }
+}
+
+class pkgPackageManager : protected pkgCache::Namespace
+{
+ public:
+
+ enum OrderResult {Completed,Failed,Incomplete};
+ static bool SigINTStop;
+
+ protected:
+ std::string *FileNames;
+ pkgDepCache &Cache;
+ pkgOrderList *List;
+ bool Debug;
+ bool NoImmConfigure;
+ bool ImmConfigureAll;
+
+ /** \brief saves packages dpkg let disappear
+
+ This way APT can retreat from trying to configure these
+ packages later on and a front-end can choose to display a
+ notice to inform the user about these disappears.
+ */
+ std::set<std::string> disappearedPkgs;
+
+ void ImmediateAdd(PkgIterator P, bool UseInstallVer, unsigned const int &Depth = 0);
+ virtual OrderResult OrderInstall();
+ bool CheckRConflicts(PkgIterator Pkg,DepIterator Dep,const char *Ver);
+ bool CheckRBreaks(PkgIterator const &Pkg,DepIterator Dep,const char * const Ver);
+ bool CreateOrderList();
+
+ // Analysis helpers
+ bool DepAlwaysTrue(DepIterator D) APT_PURE;
+
+ // Install helpers
+ bool ConfigureAll();
+ bool SmartConfigure(PkgIterator Pkg, int const Depth) APT_MUSTCHECK;
+ //FIXME: merge on abi break
+ bool SmartUnPack(PkgIterator Pkg) APT_MUSTCHECK;
+ bool SmartUnPack(PkgIterator Pkg, bool const Immediate, int const Depth) APT_MUSTCHECK;
+ bool SmartRemove(PkgIterator Pkg) APT_MUSTCHECK;
+ bool EarlyRemove(PkgIterator Pkg, DepIterator const * const Dep) APT_MUSTCHECK;
+ APT_DEPRECATED bool EarlyRemove(PkgIterator Pkg) APT_MUSTCHECK;
+
+ // The Actual installation implementation
+ virtual bool Install(PkgIterator /*Pkg*/,std::string /*File*/) {return false;};
+ virtual bool Configure(PkgIterator /*Pkg*/) {return false;};
+ virtual bool Remove(PkgIterator /*Pkg*/,bool /*Purge*/=false) {return false;};
+ virtual bool Go(APT::Progress::PackageManager * /*progress*/) {return true;};
+ APT_DEPRECATED_MSG("Use overload with explicit progress manager") virtual bool Go(int /*statusFd*/=-1) {return true;};
+
+ virtual void Reset() {};
+
+ // the result of the operation
+ OrderResult Res;
+
+ public:
+
+ // Main action members
+ bool GetArchives(pkgAcquire *Owner,pkgSourceList *Sources,
+ pkgRecords *Recs);
+
+ // Do the installation
+ OrderResult DoInstall(APT::Progress::PackageManager *progress);
+ // compat
+ APT_DEPRECATED_MSG("Use APT::Progress::PackageManager subclass instead of fd") OrderResult DoInstall(int statusFd=-1);
+
+ friend bool EIPP::OrderInstall(char const * const planner, pkgPackageManager * const PM,
+ unsigned int const version, OpProgress * const Progress);
+ friend bool EIPP::ReadResponse(int const input, pkgPackageManager * const PM,
+ OpProgress * const Progress);
+
+ // stuff that needs to be done before the fork() of a library that
+ // uses apt
+ OrderResult DoInstallPreFork() {
+ Res = OrderInstall();
+ return Res;
+ };
+ // stuff that needs to be done after the fork
+ OrderResult DoInstallPostFork(APT::Progress::PackageManager *progress);
+ // compat
+ APT_DEPRECATED_MSG("Use APT::Progress::PackageManager subclass instead of fd") OrderResult DoInstallPostFork(int statusFd=-1);
+
+ // ?
+ bool FixMissing();
+
+ /** \brief returns all packages dpkg let disappear */
+ inline std::set<std::string> GetDisappearedPackages() { return disappearedPkgs; };
+
+ explicit pkgPackageManager(pkgDepCache *Cache);
+ virtual ~pkgPackageManager();
+
+ private:
+ void * const d;
+ enum APT_HIDDEN SmartAction { UNPACK_IMMEDIATE, UNPACK, CONFIGURE };
+ APT_HIDDEN bool NonLoopingSmart(SmartAction const action, pkgCache::PkgIterator &Pkg,
+ pkgCache::PkgIterator DepPkg, int const Depth, bool const PkgLoop,
+ bool * const Bad, bool * const Changed) APT_MUSTCHECK;
+};
+
+#endif
diff --git a/apt-pkg/pkgcache.cc b/apt-pkg/pkgcache.cc
new file mode 100644
index 000000000..929c7cb33
--- /dev/null
+++ b/apt-pkg/pkgcache.cc
@@ -0,0 +1,1075 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: pkgcache.cc,v 1.37 2003/02/10 01:40:58 doogie Exp $
+/* ######################################################################
+
+ Package Cache - Accessor code for the cache
+
+ Please see doc/apt-pkg/cache.sgml for a more detailed description of
+ this format. Also be sure to keep that file up-to-date!!
+
+ This is the general utility functions for cache management. They provide
+ a complete set of accessor functions for the cache. The cacheiterators
+ header contains the STL-like iterators that can be used to easially
+ navigate the cache as well as seemlessly dereference the mmap'd
+ indexes. Use these always.
+
+ The main class provides for ways to get package indexes and some
+ general lookup functions to start the iterators.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/policy.h>
+#include <apt-pkg/version.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/mmap.h>
+#include <apt-pkg/macros.h>
+
+#include <stddef.h>
+#include <string.h>
+#include <sstream>
+#include <algorithm>
+#include <vector>
+#include <string>
+#include <sys/stat.h>
+#include <zlib.h>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using std::string;
+using APT::StringView;
+
+
+// Cache::Header::Header - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* Simply initialize the header */
+pkgCache::Header::Header()
+{
+#define APT_HEADER_SET(X,Y) X = Y; static_assert(std::numeric_limits<decltype(X)>::max() > Y, "Size violation detected in pkgCache::Header")
+ APT_HEADER_SET(Signature, 0x98FE76DC);
+
+ /* Whenever the structures change the major version should be bumped,
+ whenever the generator changes the minor version should be bumped. */
+ APT_HEADER_SET(MajorVersion, 12);
+ APT_HEADER_SET(MinorVersion, 0);
+ APT_HEADER_SET(Dirty, false);
+
+ APT_HEADER_SET(HeaderSz, sizeof(pkgCache::Header));
+ APT_HEADER_SET(GroupSz, sizeof(pkgCache::Group));
+ APT_HEADER_SET(PackageSz, sizeof(pkgCache::Package));
+ APT_HEADER_SET(ReleaseFileSz, sizeof(pkgCache::ReleaseFile));
+ APT_HEADER_SET(PackageFileSz, sizeof(pkgCache::PackageFile));
+ APT_HEADER_SET(VersionSz, sizeof(pkgCache::Version));
+ APT_HEADER_SET(DescriptionSz, sizeof(pkgCache::Description));
+ APT_HEADER_SET(DependencySz, sizeof(pkgCache::Dependency));
+ APT_HEADER_SET(DependencyDataSz, sizeof(pkgCache::DependencyData));
+ APT_HEADER_SET(ProvidesSz, sizeof(pkgCache::Provides));
+ APT_HEADER_SET(VerFileSz, sizeof(pkgCache::VerFile));
+ APT_HEADER_SET(DescFileSz, sizeof(pkgCache::DescFile));
+#undef APT_HEADER_SET
+
+ GroupCount = 0;
+ PackageCount = 0;
+ VersionCount = 0;
+ DescriptionCount = 0;
+ DependsCount = 0;
+ DependsDataCount = 0;
+ ReleaseFileCount = 0;
+ PackageFileCount = 0;
+ VerFileCount = 0;
+ DescFileCount = 0;
+ ProvidesCount = 0;
+ MaxVerFileSize = 0;
+ MaxDescFileSize = 0;
+
+ FileList = 0;
+ RlsFileList = 0;
+ VerSysName = 0;
+ Architecture = 0;
+ SetArchitectures(0);
+ SetHashTableSize(_config->FindI("APT::Cache-HashTableSize", 50503));
+ memset(Pools,0,sizeof(Pools));
+
+ CacheFileSize = 0;
+}
+ /*}}}*/
+// Cache::Header::CheckSizes - Check if the two headers have same *sz /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgCache::Header::CheckSizes(Header &Against) const
+{
+ if (HeaderSz == Against.HeaderSz &&
+ GroupSz == Against.GroupSz &&
+ PackageSz == Against.PackageSz &&
+ ReleaseFileSz == Against.ReleaseFileSz &&
+ PackageFileSz == Against.PackageFileSz &&
+ VersionSz == Against.VersionSz &&
+ DescriptionSz == Against.DescriptionSz &&
+ DependencySz == Against.DependencySz &&
+ DependencyDataSz == Against.DependencyDataSz &&
+ VerFileSz == Against.VerFileSz &&
+ DescFileSz == Against.DescFileSz &&
+ ProvidesSz == Against.ProvidesSz)
+ return true;
+ return false;
+}
+ /*}}}*/
+
+// Cache::pkgCache - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+APT_IGNORE_DEPRECATED_PUSH
+pkgCache::pkgCache(MMap *Map, bool DoMap) : Map(*Map), VS(nullptr), d(NULL)
+{
+ // call getArchitectures() with cached=false to ensure that the
+ // architectures cache is re-evaulated. this is needed in cases
+ // when the APT::Architecture field changes between two cache creations
+ MultiArchEnabled = APT::Configuration::getArchitectures(false).size() > 1;
+ if (DoMap == true)
+ ReMap();
+}
+APT_IGNORE_DEPRECATED_POP
+ /*}}}*/
+// Cache::ReMap - Reopen the cache file /*{{{*/
+// ---------------------------------------------------------------------
+/* If the file is already closed then this will open it open it. */
+bool pkgCache::ReMap(bool const &Errorchecks)
+{
+ // Apply the typecasts.
+ HeaderP = (Header *)Map.Data();
+ GrpP = (Group *)Map.Data();
+ PkgP = (Package *)Map.Data();
+ VerFileP = (VerFile *)Map.Data();
+ DescFileP = (DescFile *)Map.Data();
+ RlsFileP = (ReleaseFile *)Map.Data();
+ PkgFileP = (PackageFile *)Map.Data();
+ VerP = (Version *)Map.Data();
+ DescP = (Description *)Map.Data();
+ ProvideP = (Provides *)Map.Data();
+ DepP = (Dependency *)Map.Data();
+ DepDataP = (DependencyData *)Map.Data();
+ StrP = (char *)Map.Data();
+
+ if (Errorchecks == false)
+ return true;
+
+ if (Map.Size() == 0 || HeaderP == 0)
+ return _error->Error(_("Empty package cache"));
+
+ // Check the header
+ Header DefHeader;
+ if (HeaderP->Signature != DefHeader.Signature ||
+ HeaderP->Dirty == true)
+ return _error->Error(_("The package cache file is corrupted"));
+
+ if (HeaderP->MajorVersion != DefHeader.MajorVersion ||
+ HeaderP->MinorVersion != DefHeader.MinorVersion ||
+ HeaderP->CheckSizes(DefHeader) == false)
+ return _error->Error(_("The package cache file is an incompatible version"));
+
+ if (HeaderP->VerSysName == 0 || HeaderP->Architecture == 0 || HeaderP->GetArchitectures() == 0)
+ return _error->Error(_("The package cache file is corrupted"));
+
+ // Locate our VS..
+ if ((VS = pkgVersioningSystem::GetVS(StrP + HeaderP->VerSysName)) == 0)
+ return _error->Error(_("This APT does not support the versioning system '%s'"),StrP + HeaderP->VerSysName);
+
+ // Check the architecture
+ std::vector<std::string> archs = APT::Configuration::getArchitectures();
+ std::string list = "";
+ for (auto const & arch : archs) {
+ if (!list.empty())
+ list.append(",");
+ list.append(arch);
+ }
+ if (_config->Find("APT::Architecture") != StrP + HeaderP->Architecture ||
+ list != StrP + HeaderP->GetArchitectures())
+ return _error->Error(_("The package cache was built for different architectures: %s vs %s"), StrP + HeaderP->GetArchitectures(), list.c_str());
+
+
+ auto hash = CacheHash();
+ if (_config->FindB("Debug::pkgCacheGen", false))
+ std::clog << "Opened cache with hash " << hash << ", expecting " << HeaderP->CacheFileSize << "\n";
+ if (hash != HeaderP->CacheFileSize)
+ return _error->Error(_("The package cache file is corrupted, it has the wrong hash"));
+
+ return true;
+}
+ /*}}}*/
+// Cache::Hash - Hash a string /*{{{*/
+// ---------------------------------------------------------------------
+/* This is used to generate the hash entries for the HashTable. With my
+ package list from bo this function gets 94% table usage on a 512 item
+ table (480 used items) */
+map_id_t pkgCache::sHash(StringView Str) const
+{
+ uint32_t Hash = 5381;
+ for (auto I = Str.begin(); I != Str.end(); ++I)
+ Hash = 33 * Hash + tolower_ascii_unsafe(*I);
+ return Hash % HeaderP->GetHashTableSize();
+}
+map_id_t pkgCache::sHash(const string &Str) const
+{
+ uint32_t Hash = 5381;
+ for (string::const_iterator I = Str.begin(); I != Str.end(); ++I)
+ Hash = 33 * Hash + tolower_ascii_unsafe((signed char)*I);
+ return Hash % HeaderP->GetHashTableSize();
+}
+
+map_id_t pkgCache::sHash(const char *Str) const
+{
+ uint32_t Hash = 5381;
+ for (const char *I = Str; *I != 0; ++I)
+ Hash = 33 * Hash + tolower_ascii_unsafe((signed char)*I);
+ return Hash % HeaderP->GetHashTableSize();
+}
+
+uint32_t pkgCache::CacheHash()
+{
+ pkgCache::Header header = {};
+ uLong adler = adler32(0L, Z_NULL, 0);
+
+ if (Map.Size() < sizeof(header))
+ return adler;
+ memcpy(&header, GetMap().Data(), sizeof(header));
+
+ header.Dirty = false;
+ header.CacheFileSize = 0;
+
+ adler = adler32(adler,
+ reinterpret_cast<const unsigned char *>(&header),
+ sizeof(header));
+
+ if (Map.Size() > sizeof(header)) {
+ adler = adler32(adler,
+ static_cast<const unsigned char *>(GetMap().Data()) + sizeof(header),
+ GetMap().Size() - sizeof(header));
+ }
+
+ return adler;
+}
+ /*}}}*/
+// Cache::FindPkg - Locate a package by name /*{{{*/
+// ---------------------------------------------------------------------
+/* Returns 0 on error, pointer to the package otherwise */
+pkgCache::PkgIterator pkgCache::FindPkg(const string &Name) {
+ return FindPkg(StringView(Name));
+}
+
+pkgCache::PkgIterator pkgCache::FindPkg(StringView Name) {
+ auto const found = Name.rfind(':');
+ if (found == string::npos)
+ return FindPkg(Name, "native");
+ auto const Arch = Name.substr(found+1);
+ /* Beware: This is specialcased to handle pkg:any in dependencies
+ as these are linked to virtual pkg:any named packages.
+ If you want any arch from a pkg, use FindPkg(pkg,"any") */
+ if (Arch == "any")
+ return FindPkg(Name, "any");
+ return FindPkg(Name.substr(0, found), Arch);
+}
+ /*}}}*/
+// Cache::FindPkg - Locate a package by name /*{{{*/
+// ---------------------------------------------------------------------
+/* Returns 0 on error, pointer to the package otherwise */
+pkgCache::PkgIterator pkgCache::FindPkg(const string &Name, string const &Arch) {
+ return FindPkg(StringView(Name), StringView(Arch));
+}
+
+pkgCache::PkgIterator pkgCache::FindPkg(StringView Name, StringView Arch) {
+ /* We make a detour via the GrpIterator here as
+ on a multi-arch environment a group is easier to
+ find than a package (less entries in the buckets) */
+ pkgCache::GrpIterator Grp = FindGrp(Name);
+ if (Grp.end() == true)
+ return PkgIterator(*this,0);
+
+ return Grp.FindPkg(Arch);
+}
+ /*}}}*/
+// Cache::FindGrp - Locate a group by name /*{{{*/
+// ---------------------------------------------------------------------
+/* Returns End-Pointer on error, pointer to the group otherwise */
+pkgCache::GrpIterator pkgCache::FindGrp(const string &Name) {
+ return FindGrp(StringView(Name));
+}
+
+pkgCache::GrpIterator pkgCache::FindGrp(StringView Name) {
+ if (unlikely(Name.empty() == true))
+ return GrpIterator(*this,0);
+
+ // Look at the hash bucket for the group
+ Group *Grp = GrpP + HeaderP->GrpHashTableP()[sHash(Name)];
+ for (; Grp != GrpP; Grp = GrpP + Grp->Next) {
+ int const cmp = StringViewCompareFast(Name, ViewString(Grp->Name));
+ if (cmp == 0)
+ return GrpIterator(*this, Grp);
+ else if (cmp < 0)
+ break;
+ }
+
+ return GrpIterator(*this,0);
+}
+ /*}}}*/
+// Cache::CompTypeDeb - Return a string describing the compare type /*{{{*/
+// ---------------------------------------------------------------------
+/* This returns a string representation of the dependency compare
+ type in the weird debian style.. */
+const char *pkgCache::CompTypeDeb(unsigned char Comp)
+{
+ const char * const Ops[] = {"","<=",">=","<<",">>","=","!="};
+ if (unlikely((unsigned)(Comp & 0xF) >= sizeof(Ops)/sizeof(Ops[0])))
+ return "";
+ return Ops[Comp & 0xF];
+}
+ /*}}}*/
+// Cache::CompType - Return a string describing the compare type /*{{{*/
+// ---------------------------------------------------------------------
+/* This returns a string representation of the dependency compare
+ type */
+const char *pkgCache::CompType(unsigned char Comp)
+{
+ const char * const Ops[] = {"","<=",">=","<",">","=","!="};
+ if (unlikely((unsigned)(Comp & 0xF) >= sizeof(Ops)/sizeof(Ops[0])))
+ return "";
+ return Ops[Comp & 0xF];
+}
+ /*}}}*/
+// Cache::DepType - Return a string describing the dep type /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+const char *pkgCache::DepType(unsigned char Type)
+{
+ const char *Types[] = {"",_("Depends"),_("PreDepends"),_("Suggests"),
+ _("Recommends"),_("Conflicts"),_("Replaces"),
+ _("Obsoletes"),_("Breaks"), _("Enhances")};
+ if (Type < sizeof(Types)/sizeof(*Types))
+ return Types[Type];
+ return "";
+}
+ /*}}}*/
+// Cache::Priority - Convert a priority value to a string /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+const char *pkgCache::Priority(unsigned char Prio)
+{
+ const char *Mapping[] = {0,_("required"),_("important"),_("standard"),
+ _("optional"),_("extra")};
+ if (Prio < _count(Mapping))
+ return Mapping[Prio];
+ return 0;
+}
+ /*}}}*/
+// GrpIterator::FindPkg - Locate a package by arch /*{{{*/
+// ---------------------------------------------------------------------
+/* Returns an End-Pointer on error, pointer to the package otherwise */
+pkgCache::PkgIterator pkgCache::GrpIterator::FindPkg(string Arch) const {
+ return FindPkg(StringView(Arch));
+}
+pkgCache::PkgIterator pkgCache::GrpIterator::FindPkg(const char *Arch) const {
+ return FindPkg(StringView(Arch));
+}
+pkgCache::PkgIterator pkgCache::GrpIterator::FindPkg(StringView Arch) const {
+ if (unlikely(IsGood() == false || S->FirstPackage == 0))
+ return PkgIterator(*Owner, 0);
+
+ /* If we accept any package we simply return the "first"
+ package in this group */
+ if (Arch == "any")
+ return PkgIterator(*Owner, Owner->PkgP + S->FirstPackage);
+ if (Arch == "native" || Arch == "all")
+ Arch = Owner->NativeArch();
+
+ // Iterate over the list to find the matching arch
+ for (pkgCache::Package *Pkg = PackageList(); Pkg != Owner->PkgP;
+ Pkg = Owner->PkgP + Pkg->NextPackage) {
+ if (Arch == Owner->ViewString(Pkg->Arch))
+ return PkgIterator(*Owner, Pkg);
+ if ((Owner->PkgP + S->LastPackage) == Pkg)
+ break;
+ }
+
+ return PkgIterator(*Owner, 0);
+}
+ /*}}}*/
+// GrpIterator::FindPreferredPkg - Locate the "best" package /*{{{*/
+// ---------------------------------------------------------------------
+/* Returns an End-Pointer on error, pointer to the package otherwise */
+pkgCache::PkgIterator pkgCache::GrpIterator::FindPreferredPkg(bool const &PreferNonVirtual) const {
+ pkgCache::PkgIterator Pkg = FindPkg(StringView("native", 6));
+ if (Pkg.end() == false && (PreferNonVirtual == false || Pkg->VersionList != 0))
+ return Pkg;
+
+ std::vector<std::string> const archs = APT::Configuration::getArchitectures();
+ for (std::vector<std::string>::const_iterator a = archs.begin();
+ a != archs.end(); ++a) {
+ Pkg = FindPkg(*a);
+ if (Pkg.end() == false && (PreferNonVirtual == false || Pkg->VersionList != 0))
+ return Pkg;
+ }
+ // packages without an architecture
+ Pkg = FindPkg(StringView("none", 4));
+ if (Pkg.end() == false && (PreferNonVirtual == false || Pkg->VersionList != 0))
+ return Pkg;
+
+ if (PreferNonVirtual == true)
+ return FindPreferredPkg(false);
+ return PkgIterator(*Owner, 0);
+}
+ /*}}}*/
+// GrpIterator::NextPkg - Locate the next package in the group /*{{{*/
+// ---------------------------------------------------------------------
+/* Returns an End-Pointer on error, pointer to the package otherwise.
+ We can't simply ++ to the next as the next package of the last will
+ be from a different group (with the same hash value) */
+pkgCache::PkgIterator pkgCache::GrpIterator::NextPkg(pkgCache::PkgIterator const &LastPkg) const {
+ if (unlikely(IsGood() == false || S->FirstPackage == 0 ||
+ LastPkg.end() == true))
+ return PkgIterator(*Owner, 0);
+
+ if (S->LastPackage == LastPkg.Index())
+ return PkgIterator(*Owner, 0);
+
+ return PkgIterator(*Owner, Owner->PkgP + LastPkg->NextPackage);
+}
+ /*}}}*/
+// GrpIterator::operator++ - Prefix incr /*{{{*/
+// ---------------------------------------------------------------------
+/* This will advance to the next logical group in the hash table. */
+pkgCache::GrpIterator& pkgCache::GrpIterator::operator++()
+{
+ // Follow the current links
+ if (S != Owner->GrpP)
+ S = Owner->GrpP + S->Next;
+
+ // Follow the hash table
+ while (S == Owner->GrpP && (HashIndex+1) < (signed)Owner->HeaderP->GetHashTableSize())
+ {
+ ++HashIndex;
+ S = Owner->GrpP + Owner->HeaderP->GrpHashTableP()[HashIndex];
+ }
+ return *this;
+}
+ /*}}}*/
+// PkgIterator::operator++ - Prefix incr /*{{{*/
+// ---------------------------------------------------------------------
+/* This will advance to the next logical package in the hash table. */
+pkgCache::PkgIterator& pkgCache::PkgIterator::operator++()
+{
+ // Follow the current links
+ if (S != Owner->PkgP)
+ S = Owner->PkgP + S->NextPackage;
+
+ // Follow the hash table
+ while (S == Owner->PkgP && (HashIndex+1) < (signed)Owner->HeaderP->GetHashTableSize())
+ {
+ ++HashIndex;
+ S = Owner->PkgP + Owner->HeaderP->PkgHashTableP()[HashIndex];
+ }
+ return *this;
+}
+ /*}}}*/
+pkgCache::DepIterator& pkgCache::DepIterator::operator++() /*{{{*/
+{
+ if (S == Owner->DepP)
+ return *this;
+ S = Owner->DepP + (Type == DepVer ? S->NextDepends : S->NextRevDepends);
+ if (S == Owner->DepP)
+ S2 = Owner->DepDataP;
+ else
+ S2 = Owner->DepDataP + S->DependencyData;
+ return *this;
+}
+ /*}}}*/
+// PkgIterator::State - Check the State of the package /*{{{*/
+// ---------------------------------------------------------------------
+/* By this we mean if it is either cleanly installed or cleanly removed. */
+pkgCache::PkgIterator::OkState pkgCache::PkgIterator::State() const
+{
+ if (S->InstState == pkgCache::State::ReInstReq ||
+ S->InstState == pkgCache::State::HoldReInstReq)
+ return NeedsUnpack;
+
+ if (S->CurrentState == pkgCache::State::UnPacked ||
+ S->CurrentState == pkgCache::State::HalfConfigured)
+ // we leave triggers alone completely. dpkg deals with
+ // them in a hard-to-predict manner and if they get
+ // resolved by dpkg before apt run dpkg --configure on
+ // the TriggersPending package dpkg returns a error
+ //Pkg->CurrentState == pkgCache::State::TriggersAwaited
+ //Pkg->CurrentState == pkgCache::State::TriggersPending)
+ return NeedsConfigure;
+
+ if (S->CurrentState == pkgCache::State::HalfInstalled ||
+ S->InstState != pkgCache::State::Ok)
+ return NeedsUnpack;
+
+ return NeedsNothing;
+}
+ /*}}}*/
+// PkgIterator::CandVersion - Returns the candidate version string /*{{{*/
+// ---------------------------------------------------------------------
+/* Return string representing of the candidate version. */
+const char *
+pkgCache::PkgIterator::CandVersion() const
+{
+ //TargetVer is empty, so don't use it.
+ VerIterator version = pkgPolicy(Owner).GetCandidateVer(*this);
+ if (version.IsGood())
+ return version.VerStr();
+ return 0;
+}
+ /*}}}*/
+// PkgIterator::CurVersion - Returns the current version string /*{{{*/
+// ---------------------------------------------------------------------
+/* Return string representing of the current version. */
+const char *
+pkgCache::PkgIterator::CurVersion() const
+{
+ VerIterator version = CurrentVer();
+ if (version.IsGood())
+ return CurrentVer().VerStr();
+ return 0;
+}
+ /*}}}*/
+// ostream operator to handle string representation of a package /*{{{*/
+// ---------------------------------------------------------------------
+/* Output name < cur.rent.version -> candid.ate.version | new.est.version > (section)
+ Note that the characters <|>() are all literal above. Versions will be omitted
+ if they provide no new information (e.g. there is no newer version than candidate)
+ If no version and/or section can be found "none" is used. */
+std::ostream&
+operator<<(std::ostream& out, pkgCache::PkgIterator Pkg)
+{
+ if (Pkg.end() == true)
+ return out << "invalid package";
+
+ string current = string(Pkg.CurVersion() == 0 ? "none" : Pkg.CurVersion());
+APT_IGNORE_DEPRECATED_PUSH
+ string candidate = string(Pkg.CandVersion() == 0 ? "none" : Pkg.CandVersion());
+APT_IGNORE_DEPRECATED_POP
+ string newest = string(Pkg.VersionList().end() ? "none" : Pkg.VersionList().VerStr());
+
+ out << Pkg.Name() << " [ " << Pkg.Arch() << " ] < " << current;
+ if (current != candidate)
+ out << " -> " << candidate;
+ if ( newest != "none" && candidate != newest)
+ out << " | " << newest;
+ if (Pkg->VersionList == 0)
+ out << " > ( none )";
+ else
+ out << " > ( " << string(Pkg.VersionList().Section()==0?"unknown":Pkg.VersionList().Section()) << " )";
+ return out;
+}
+ /*}}}*/
+// PkgIterator::FullName - Returns Name and (maybe) Architecture /*{{{*/
+// ---------------------------------------------------------------------
+/* Returns a name:arch string */
+std::string pkgCache::PkgIterator::FullName(bool const &Pretty) const
+{
+ string fullname = Name();
+ if (Pretty == false ||
+ (strcmp(Arch(), "all") != 0 && strcmp(Arch(), "any") != 0 &&
+ strcmp(Owner->NativeArch(), Arch()) != 0))
+ return fullname.append(":").append(Arch());
+ return fullname;
+}
+ /*}}}*/
+// DepIterator::IsCritical - Returns true if the dep is important /*{{{*/
+// ---------------------------------------------------------------------
+/* Currently critical deps are defined as depends, predepends and
+ conflicts (including dpkg's Breaks fields). */
+bool pkgCache::DepIterator::IsCritical() const
+{
+ if (IsNegative() == true ||
+ S2->Type == pkgCache::Dep::Depends ||
+ S2->Type == pkgCache::Dep::PreDepends)
+ return true;
+ return false;
+}
+ /*}}}*/
+// DepIterator::IsNegative - Returns true if the dep is a negative one /*{{{*/
+// ---------------------------------------------------------------------
+/* Some dependencies are positive like Depends and Recommends, others
+ are negative like Conflicts which can and should be handled differently */
+bool pkgCache::DepIterator::IsNegative() const
+{
+ return S2->Type == Dep::DpkgBreaks ||
+ S2->Type == Dep::Conflicts ||
+ S2->Type == Dep::Obsoletes;
+}
+ /*}}}*/
+// DepIterator::SmartTargetPkg - Resolve dep target pointers w/provides /*{{{*/
+// ---------------------------------------------------------------------
+/* This intellegently looks at dep target packages and tries to figure
+ out which package should be used. This is needed to nicely handle
+ provide mapping. If the target package has no other providing packages
+ then it returned. Otherwise the providing list is looked at to
+ see if there is one unique providing package if so it is returned.
+ Otherwise true is returned and the target package is set. The return
+ result indicates whether the node should be expandable
+
+ In Conjunction with the DepCache the value of Result may not be
+ super-good since the policy may have made it uninstallable. Using
+ AllTargets is better in this case. */
+bool pkgCache::DepIterator::SmartTargetPkg(PkgIterator &Result) const
+{
+ Result = TargetPkg();
+
+ // No provides at all
+ if (Result->ProvidesList == 0)
+ return false;
+
+ // There is the Base package and the providing ones which is at least 2
+ if (Result->VersionList != 0)
+ return true;
+
+ /* We have to skip over indirect provisions of the package that
+ owns the dependency. For instance, if libc5-dev depends on the
+ virtual package libc-dev which is provided by libc5-dev and libc6-dev
+ we must ignore libc5-dev when considering the provides list. */
+ PrvIterator PStart = Result.ProvidesList();
+ for (; PStart.end() != true && PStart.OwnerPkg() == ParentPkg(); ++PStart);
+
+ // Nothing but indirect self provides
+ if (PStart.end() == true)
+ return false;
+
+ // Check for single packages in the provides list
+ PrvIterator P = PStart;
+ for (; P.end() != true; ++P)
+ {
+ // Skip over self provides
+ if (P.OwnerPkg() == ParentPkg())
+ continue;
+ if (PStart.OwnerPkg() != P.OwnerPkg())
+ break;
+ }
+
+ Result = PStart.OwnerPkg();
+
+ // Check for non dups
+ if (P.end() != true)
+ return true;
+
+ return false;
+}
+ /*}}}*/
+// DepIterator::AllTargets - Returns the set of all possible targets /*{{{*/
+// ---------------------------------------------------------------------
+/* This is a more useful version of TargetPkg() that follows versioned
+ provides. It includes every possible package-version that could satisfy
+ the dependency. The last item in the list has a 0. The resulting pointer
+ must be delete [] 'd */
+pkgCache::Version **pkgCache::DepIterator::AllTargets() const
+{
+ Version **Res = 0;
+ unsigned long Size =0;
+ while (1)
+ {
+ Version **End = Res;
+ PkgIterator DPkg = TargetPkg();
+
+ // Walk along the actual package providing versions
+ for (VerIterator I = DPkg.VersionList(); I.end() == false; ++I)
+ {
+ if (IsIgnorable(I.ParentPkg()) == true)
+ continue;
+ if (IsSatisfied(I) == false)
+ continue;
+
+ Size++;
+ if (Res != 0)
+ *End++ = I;
+ }
+
+ // Follow all provides
+ for (PrvIterator I = DPkg.ProvidesList(); I.end() == false; ++I)
+ {
+ if (IsIgnorable(I) == true)
+ continue;
+ if (IsSatisfied(I) == false)
+ continue;
+
+ Size++;
+ if (Res != 0)
+ *End++ = I.OwnerVer();
+ }
+
+ // Do it again and write it into the array
+ if (Res == 0)
+ {
+ Res = new Version *[Size+1];
+ Size = 0;
+ }
+ else
+ {
+ *End = 0;
+ break;
+ }
+ }
+
+ return Res;
+}
+ /*}}}*/
+// DepIterator::GlobOr - Compute an OR group /*{{{*/
+// ---------------------------------------------------------------------
+/* This Takes an iterator, iterates past the current dependency grouping
+ and returns Start and End so that so End is the final element
+ in the group, if End == Start then D is End++ and End is the
+ dependency D was pointing to. Use in loops to iterate sensibly. */
+void pkgCache::DepIterator::GlobOr(DepIterator &Start,DepIterator &End)
+{
+ // Compute a single dependency element (glob or)
+ Start = *this;
+ End = *this;
+ for (bool LastOR = true; end() == false && LastOR == true;)
+ {
+ LastOR = (S2->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or;
+ ++(*this);
+ if (LastOR == true)
+ End = (*this);
+ }
+}
+ /*}}}*/
+// DepIterator::IsIgnorable - should this packag/providr be ignored? /*{{{*/
+// ---------------------------------------------------------------------
+/* Deps like self-conflicts should be ignored as well as implicit conflicts
+ on virtual packages. */
+bool pkgCache::DepIterator::IsIgnorable(PkgIterator const &PT) const
+{
+ if (IsNegative() == false)
+ return false;
+
+ pkgCache::PkgIterator const PP = ParentPkg();
+ if (PP->Group != PT->Group)
+ return false;
+ // self-conflict
+ if (PP == PT)
+ return true;
+ pkgCache::VerIterator const PV = ParentVer();
+ // ignore group-conflict on a M-A:same package - but not our implicit dependencies
+ // so that we can have M-A:same packages conflicting with their own real name
+ if ((PV->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same)
+ return IsMultiArchImplicit() == false;
+
+ return false;
+}
+bool pkgCache::DepIterator::IsIgnorable(PrvIterator const &Prv) const
+{
+ if (IsNegative() == false)
+ return false;
+
+ PkgIterator const Pkg = ParentPkg();
+ /* Provides may never be applied against the same package (or group)
+ if it is a conflicts. See the comment above. */
+ if (Prv.OwnerPkg()->Group == Pkg->Group)
+ return true;
+ // Implicit group-conflicts should not be applied on providers of other groups
+ if (IsMultiArchImplicit() && Prv.OwnerPkg()->Group != Pkg->Group)
+ return true;
+
+ return false;
+}
+ /*}}}*/
+// DepIterator::IsSatisfied - check if a version satisfied the dependency /*{{{*/
+bool pkgCache::DepIterator::IsSatisfied(VerIterator const &Ver) const
+{
+ return Owner->VS->CheckDep(Ver.VerStr(),S2->CompareOp,TargetVer());
+}
+bool pkgCache::DepIterator::IsSatisfied(PrvIterator const &Prv) const
+{
+ return Owner->VS->CheckDep(Prv.ProvideVersion(),S2->CompareOp,TargetVer());
+}
+ /*}}}*/
+// DepIterator::IsImplicit - added by the cache generation /*{{{*/
+bool pkgCache::DepIterator::IsImplicit() const
+{
+ if (IsMultiArchImplicit() == true)
+ return true;
+ if (IsNegative() || S2->Type == pkgCache::Dep::Replaces)
+ {
+ if ((S2->CompareOp & pkgCache::Dep::ArchSpecific) != pkgCache::Dep::ArchSpecific &&
+ strcmp(ParentPkg().Arch(), TargetPkg().Arch()) != 0)
+ return true;
+ }
+ return false;
+}
+ /*}}}*/
+// ostream operator to handle string representation of a dependency /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+std::ostream& operator<<(std::ostream& out, pkgCache::DepIterator D)
+{
+ if (D.end() == true)
+ return out << "invalid dependency";
+
+ pkgCache::PkgIterator P = D.ParentPkg();
+ pkgCache::PkgIterator T = D.TargetPkg();
+
+ out << (P.end() ? "invalid pkg" : P.FullName(false)) << " " << D.DepType()
+ << " on ";
+APT_IGNORE_DEPRECATED_PUSH
+ if (T.end() == true)
+ out << "invalid pkg";
+ else
+ out << T;
+APT_IGNORE_DEPRECATED_POP
+
+ if (D->Version != 0)
+ out << " (" << D.CompType() << " " << D.TargetVer() << ")";
+
+ return out;
+}
+ /*}}}*/
+// VerIterator::CompareVer - Fast version compare for same pkgs /*{{{*/
+// ---------------------------------------------------------------------
+/* This just looks over the version list to see if B is listed before A. In
+ most cases this will return in under 4 checks, ver lists are short. */
+int pkgCache::VerIterator::CompareVer(const VerIterator &B) const
+{
+ // Check if they are equal
+ if (*this == B)
+ return 0;
+ if (end() == true)
+ return -1;
+ if (B.end() == true)
+ return 1;
+
+ /* Start at A and look for B. If B is found then A > B otherwise
+ B was before A so A < B */
+ VerIterator I = *this;
+ for (;I.end() == false; ++I)
+ if (I == B)
+ return 1;
+ return -1;
+}
+ /*}}}*/
+// VerIterator::Downloadable - Checks if the version is downloadable /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+APT_PURE bool pkgCache::VerIterator::Downloadable() const
+{
+ VerFileIterator Files = FileList();
+ for (; Files.end() == false; ++Files)
+ if (Files.File().Flagged(pkgCache::Flag::NotSource) == false)
+ return true;
+ return false;
+}
+ /*}}}*/
+// VerIterator::Automatic - Check if this version is 'automatic' /*{{{*/
+// ---------------------------------------------------------------------
+/* This checks to see if any of the versions files are not NotAutomatic.
+ True if this version is selectable for automatic installation. */
+APT_PURE bool pkgCache::VerIterator::Automatic() const
+{
+ VerFileIterator Files = FileList();
+ for (; Files.end() == false; ++Files)
+ // Do not check ButAutomaticUpgrades here as it is kind of automatic…
+ if (Files.File().Flagged(pkgCache::Flag::NotAutomatic) == false)
+ return true;
+ return false;
+}
+ /*}}}*/
+// VerIterator::NewestFile - Return the newest file version relation /*{{{*/
+// ---------------------------------------------------------------------
+/* This looks at the version numbers associated with all of the sources
+ this version is in and returns the highest.*/
+pkgCache::VerFileIterator pkgCache::VerIterator::NewestFile() const
+{
+ VerFileIterator Files = FileList();
+ VerFileIterator Highest = Files;
+ for (; Files.end() == false; ++Files)
+ {
+ if (Owner->VS->CmpReleaseVer(Files.File().Version(),Highest.File().Version()) > 0)
+ Highest = Files;
+ }
+
+ return Highest;
+}
+ /*}}}*/
+// VerIterator::RelStr - Release description string /*{{{*/
+// ---------------------------------------------------------------------
+/* This describes the version from a release-centric manner. The output is a
+ list of Label:Version/Archive */
+static std::string PkgFileIteratorToRelString(pkgCache::PkgFileIterator const &File)
+{
+ std::string Res;
+ if (File.Label() != 0)
+ Res = Res + File.Label() + ':';
+
+ if (File.Archive() != 0)
+ {
+ if (File.Version() == 0)
+ Res += File.Archive();
+ else
+ Res = Res + File.Version() + '/' + File.Archive();
+ }
+ else
+ {
+ // No release file, print the host name that this came from
+ if (File.Site() == 0 || File.Site()[0] == 0)
+ Res += "localhost";
+ else
+ Res += File.Site();
+ }
+ return Res;
+}
+string pkgCache::VerIterator::RelStr() const
+{
+ std::vector<std::string> RelStrs;
+ for (pkgCache::VerFileIterator I = this->FileList(); I.end() == false; ++I)
+ {
+ // Do not print 'not source' entries'
+ pkgCache::PkgFileIterator const File = I.File();
+ if (File.Flagged(pkgCache::Flag::NotSource))
+ continue;
+
+ std::string const RS = PkgFileIteratorToRelString(File);
+ if (std::find(RelStrs.begin(), RelStrs.end(), RS) != RelStrs.end())
+ continue;
+
+ RelStrs.push_back(RS);
+ }
+ std::ostringstream os;
+ if (likely(RelStrs.empty() == false))
+ {
+ std::copy(RelStrs.begin(), RelStrs.end()-1, std::ostream_iterator<std::string>(os, ", "));
+ os << *RelStrs.rbegin();
+ }
+ if (S->ParentPkg != 0)
+ os << " [" << Arch() << "]";
+ return os.str();
+}
+ /*}}}*/
+// VerIterator::MultiArchType - string representing MultiArch flag /*{{{*/
+const char * pkgCache::VerIterator::MultiArchType() const
+{
+ if ((S->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same)
+ return "same";
+ else if ((S->MultiArch & pkgCache::Version::Foreign) == pkgCache::Version::Foreign)
+ return "foreign";
+ else if ((S->MultiArch & pkgCache::Version::Allowed) == pkgCache::Version::Allowed)
+ return "allowed";
+ return "none";
+}
+ /*}}}*/
+// RlsFileIterator::IsOk - Checks if the cache is in sync with the file /*{{{*/
+// ---------------------------------------------------------------------
+/* This stats the file and compares its stats with the ones that were
+ stored during generation. Date checks should probably also be
+ included here. */
+bool pkgCache::RlsFileIterator::IsOk()
+{
+ struct stat Buf;
+ if (stat(FileName(),&Buf) != 0)
+ return false;
+
+ if (Buf.st_size != (signed)S->Size || Buf.st_mtime != S->mtime)
+ return false;
+
+ return true;
+}
+ /*}}}*/
+// RlsFileIterator::RelStr - Return the release string /*{{{*/
+string pkgCache::RlsFileIterator::RelStr()
+{
+ string Res;
+ if (Version() != 0)
+ Res = Res + (Res.empty() == true?"v=":",v=") + Version();
+ if (Origin() != 0)
+ Res = Res + (Res.empty() == true?"o=":",o=") + Origin();
+ if (Archive() != 0)
+ Res = Res + (Res.empty() == true?"a=":",a=") + Archive();
+ if (Codename() != 0)
+ Res = Res + (Res.empty() == true?"n=":",n=") + Codename();
+ if (Label() != 0)
+ Res = Res + (Res.empty() == true?"l=":",l=") + Label();
+ return Res;
+}
+ /*}}}*/
+// PkgFileIterator::IsOk - Checks if the cache is in sync with the file /*{{{*/
+// ---------------------------------------------------------------------
+/* This stats the file and compares its stats with the ones that were
+ stored during generation. Date checks should probably also be
+ included here. */
+bool pkgCache::PkgFileIterator::IsOk()
+{
+ struct stat Buf;
+ if (stat(FileName(),&Buf) != 0)
+ return false;
+
+ if (Buf.st_size != (signed)S->Size || Buf.st_mtime != S->mtime)
+ return false;
+
+ return true;
+}
+ /*}}}*/
+string pkgCache::PkgFileIterator::RelStr() /*{{{*/
+{
+ std::string Res;
+ if (ReleaseFile() == 0)
+ {
+ if (Component() != 0)
+ Res = Res + (Res.empty() == true?"a=":",a=") + Component();
+ }
+ else
+ {
+ Res = ReleaseFile().RelStr();
+ if (Component() != 0)
+ Res = Res + (Res.empty() == true?"c=":",c=") + Component();
+ }
+ if (Architecture() != 0)
+ Res = Res + (Res.empty() == true?"b=":",b=") + Architecture();
+ return Res;
+}
+ /*}}}*/
+// VerIterator::TranslatedDescription - Return the a DescIter for locale/*{{{*/
+// ---------------------------------------------------------------------
+/* return a DescIter for the current locale or the default if none is
+ * found
+ */
+pkgCache::DescIterator pkgCache::VerIterator::TranslatedDescription() const
+{
+ std::vector<string> const lang = APT::Configuration::getLanguages();
+ for (std::vector<string>::const_iterator l = lang.begin();
+ l != lang.end(); ++l)
+ {
+ pkgCache::DescIterator Desc = DescriptionList();
+ for (; Desc.end() == false; ++Desc)
+ if (*l == Desc.LanguageCode())
+ break;
+ if (Desc.end() == true)
+ {
+ if (*l == "en")
+ {
+ Desc = DescriptionList();
+ for (; Desc.end() == false; ++Desc)
+ if (strcmp(Desc.LanguageCode(), "") == 0)
+ break;
+ if (Desc.end() == true)
+ continue;
+ }
+ else
+ continue;
+ }
+ return Desc;
+ }
+ for (pkgCache::DescIterator Desc = DescriptionList();
+ Desc.end() == false; ++Desc)
+ if (strcmp(Desc.LanguageCode(), "") == 0)
+ return Desc;
+ return DescriptionList();
+}
+
+ /*}}}*/
+
+pkgCache::~pkgCache() {}
diff --git a/apt-pkg/pkgcache.h b/apt-pkg/pkgcache.h
new file mode 100644
index 000000000..91228f713
--- /dev/null
+++ b/apt-pkg/pkgcache.h
@@ -0,0 +1,825 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/**\file pkgcache.h
+ \brief pkgCache - Structure definitions for the cache file
+
+ The goal of the cache file is two fold:
+ Firstly to speed loading and processing of the package file array and
+ secondly to reduce memory consumption of the package file array.
+
+ The implementation is aimed at an environment with many primary package
+ files, for instance someone that has a Package file for their CD-ROM, a
+ Package file for the latest version of the distribution on the CD-ROM and a
+ package file for the development version. Always present is the information
+ contained in the status file which might be considered a separate package
+ file.
+
+ Please understand, this is designed as a <b>Cache file</b> it is not meant to be
+ used on any system other than the one it was created for. It is not meant to
+ be authoritative either, i.e. if a system crash or software failure occurs it
+ must be perfectly acceptable for the cache file to be in an inconsistent
+ state. Furthermore at any time the cache file may be erased without losing
+ any information.
+
+ Also the structures and storage layout is optimized for use by the APT
+ and may not be suitable for all purposes. However it should be possible
+ to extend it with associate cache files that contain other information.
+
+ To keep memory use down the cache file only contains often used fields and
+ fields that are inexpensive to store, the Package file has a full list of
+ fields. Also the client may assume that all items are perfectly valid and
+ need not perform checks against their correctness. Removal of information
+ from the cache is possible, but blanks will be left in the file, and
+ unused strings will also be present. The recommended implementation is to
+ simply rebuild the cache each time any of the data files change. It is
+ possible to add a new package file to the cache without any negative side
+ effects.
+
+ <b>Note on Pointer access</b>
+ Clients should always use the CacheIterators classes for access to the
+ cache and the data in it. They also provide a simple STL-like method for
+ traversing the links of the datastructure.
+
+ Every item in every structure is stored as the index to that structure.
+ What this means is that once the files is mmaped every data access has to
+ go through a fix up stage to get a real memory pointer. This is done
+ by taking the index, multiplying it by the type size and then adding
+ it to the start address of the memory block. This sounds complex, but
+ in C it is a single array dereference. Because all items are aligned to
+ their size and indexes are stored as multiples of the size of the structure
+ the format is immediately portable to all possible architectures - BUT the
+ generated files are -NOT-.
+
+ This scheme allows code like this to be written:
+ <example>
+ void *Map = mmap(...);
+ Package *PkgList = (Package *)Map;
+ Header *Head = (Header *)Map;
+ char *Strings = (char *)Map;
+ cout << (Strings + PkgList[Head->HashTable[0]]->Name) << endl;
+ </example>
+ Notice the lack of casting or multiplication. The net result is to return
+ the name of the first package in the first hash bucket, without error
+ checks.
+
+ The generator uses allocation pools to group similarly sized structures in
+ large blocks to eliminate any alignment overhead. The generator also
+ assures that no structures overlap and all indexes are unique. Although
+ at first glance it may seem like there is the potential for two structures
+ to exist at the same point the generator never allows this to happen.
+ (See the discussion of free space pools)
+
+ See \ref pkgcachegen.h for more information about generating cache structures. */
+ /*}}}*/
+#ifndef PKGLIB_PKGCACHE_H
+#define PKGLIB_PKGCACHE_H
+
+#include <apt-pkg/mmap.h>
+#include <apt-pkg/macros.h>
+
+#include <string>
+#include <time.h>
+#include <stdint.h>
+
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+#include <apt-pkg/string_view.h>
+#endif
+
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+#endif
+
+// size of (potentially big) files like debs or the install size of them
+typedef uint64_t map_filesize_t;
+// storing file sizes of indexes, which are way below 4 GB for now
+typedef uint32_t map_filesize_small_t;
+// each package/group/dependency gets an id
+typedef uint32_t map_id_t;
+// some files get an id, too, but in far less absolute numbers
+typedef uint16_t map_fileid_t;
+// relative pointer from cache start
+typedef uint32_t map_pointer_t;
+// same as the previous, but documented to be to a string item
+typedef map_pointer_t map_stringitem_t;
+// we have only a small amount of flags for each item
+typedef uint8_t map_flags_t;
+typedef uint8_t map_number_t;
+
+class pkgVersioningSystem;
+class pkgCache /*{{{*/
+{
+ public:
+ // Cache element predeclarations
+ struct Header;
+ struct Group;
+ struct Package;
+ struct ReleaseFile;
+ struct PackageFile;
+ struct Version;
+ struct Description;
+ struct Provides;
+ struct Dependency;
+ struct DependencyData;
+ struct StringItem;
+ struct VerFile;
+ struct DescFile;
+
+ // Iterators
+ template<typename Str, typename Itr> class Iterator;
+ class GrpIterator;
+ class PkgIterator;
+ class VerIterator;
+ class DescIterator;
+ class DepIterator;
+ class PrvIterator;
+ class RlsFileIterator;
+ class PkgFileIterator;
+ class VerFileIterator;
+ class DescFileIterator;
+
+ class Namespace;
+
+ // These are all the constants used in the cache structures
+
+ // WARNING - if you change these lists you must also edit
+ // the stringification in pkgcache.cc and also consider whether
+ // the cache file will become incompatible.
+ struct Dep
+ {
+ enum DepType {Depends=1,PreDepends=2,Suggests=3,Recommends=4,
+ Conflicts=5,Replaces=6,Obsoletes=7,DpkgBreaks=8,Enhances=9};
+ /** \brief available compare operators
+
+ The lower 4 bits are used to indicate what operator is being specified and
+ the upper 4 bits are flags. OR indicates that the next package is
+ or'd with the current package. */
+ enum DepCompareOp {NoOp=0,LessEq=0x1,GreaterEq=0x2,Less=0x3,
+ Greater=0x4,Equals=0x5,NotEquals=0x6,
+ Or=0x10, /*!< or'ed with the next dependency */
+ MultiArchImplicit=0x20, /*!< generated internally, not spelled out in the index */
+ ArchSpecific=0x40 /*!< was decorated with an explicit architecture in index */
+ };
+ };
+
+ struct State
+ {
+ /** \brief priority of a package version
+
+ Zero is used for unparsable or absent Priority fields. */
+ enum VerPriority {Required=1,Important=2,Standard=3,Optional=4,Extra=5};
+ enum PkgSelectedState {Unknown=0,Install=1,Hold=2,DeInstall=3,Purge=4};
+ enum PkgInstState {Ok=0,ReInstReq=1,HoldInst=2,HoldReInstReq=3};
+ enum PkgCurrentState {NotInstalled=0,UnPacked=1,HalfConfigured=2,
+ HalfInstalled=4,ConfigFiles=5,Installed=6,
+ TriggersAwaited=7,TriggersPending=8};
+ };
+
+ struct Flag
+ {
+ enum PkgFlags {Auto=(1<<0),Essential=(1<<3),Important=(1<<4)};
+ enum PkgFFlags {
+ NotSource=(1<<0), /*!< packages can't be fetched from here, e.g. dpkg/status file */
+ LocalSource=(1<<1), /*!< local sources can't and will not be verified by hashes */
+ NoPackages=(1<<2), /*!< the file includes no package records itself, but additions like Translations */
+ };
+ enum ReleaseFileFlags {
+ NotAutomatic=(1<<0), /*!< archive has a default pin of 1 */
+ ButAutomaticUpgrades=(1<<1), /*!< (together with the previous) archive has a default pin of 100 */
+ };
+ enum ProvidesFlags {
+ MultiArchImplicit=pkgCache::Dep::MultiArchImplicit, /*!< generated internally, not spelled out in the index */
+ ArchSpecific=pkgCache::Dep::ArchSpecific /*!< was decorated with an explicit architecture in index */
+ };
+ };
+
+ protected:
+
+ // Memory mapped cache file
+ std::string CacheFile;
+ MMap &Map;
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ APT_HIDDEN map_id_t sHash(APT::StringView S) const APT_PURE;
+#endif
+ map_id_t sHash(const std::string &S) const APT_PURE;
+ map_id_t sHash(const char *S) const APT_PURE;
+
+ public:
+
+ // Pointers to the arrays of items
+ Header *HeaderP;
+ Group *GrpP;
+ Package *PkgP;
+ VerFile *VerFileP;
+ DescFile *DescFileP;
+ ReleaseFile *RlsFileP;
+ PackageFile *PkgFileP;
+ Version *VerP;
+ Description *DescP;
+ Provides *ProvideP;
+ Dependency *DepP;
+ DependencyData *DepDataP;
+ APT_DEPRECATED_MSG("Not used anymore in cache generation and without a replacement") StringItem *StringItemP;
+ char *StrP;
+
+ virtual bool ReMap(bool const &Errorchecks = true);
+ inline bool Sync() {return Map.Sync();}
+ inline MMap &GetMap() {return Map;}
+ inline void *DataEnd() {return ((unsigned char *)Map.Data()) + Map.Size();}
+
+ // String hashing function (512 range)
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ APT_HIDDEN inline map_id_t Hash(APT::StringView S) const {return sHash(S);}
+#endif
+ inline map_id_t Hash(const std::string &S) const {return sHash(S);}
+ inline map_id_t Hash(const char *S) const {return sHash(S);}
+
+ APT_HIDDEN uint32_t CacheHash();
+
+ // Useful transformation things
+ static const char *Priority(unsigned char Priority);
+
+ // Accessors
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ APT_HIDDEN GrpIterator FindGrp(APT::StringView Name);
+ APT_HIDDEN PkgIterator FindPkg(APT::StringView Name);
+ APT_HIDDEN PkgIterator FindPkg(APT::StringView Name, APT::StringView Arch);
+#endif
+
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ APT::StringView ViewString(map_stringitem_t idx) const
+ {
+ char *name = StrP + idx;
+ uint16_t len = *reinterpret_cast<const uint16_t*>(name - sizeof(uint16_t));
+ return APT::StringView(name, len);
+ }
+#endif
+
+
+ GrpIterator FindGrp(const std::string &Name);
+ PkgIterator FindPkg(const std::string &Name);
+ PkgIterator FindPkg(const std::string &Name, const std::string &Arch);
+
+ Header &Head() {return *HeaderP;}
+ inline GrpIterator GrpBegin();
+ inline GrpIterator GrpEnd();
+ inline PkgIterator PkgBegin();
+ inline PkgIterator PkgEnd();
+ inline PkgFileIterator FileBegin();
+ inline PkgFileIterator FileEnd();
+ inline RlsFileIterator RlsFileBegin();
+ inline RlsFileIterator RlsFileEnd();
+
+ inline bool MultiArchCache() const { return MultiArchEnabled; }
+ inline char const * NativeArch();
+
+ // Make me a function
+ pkgVersioningSystem *VS;
+
+ // Converters
+ static const char *CompTypeDeb(unsigned char Comp) APT_CONST;
+ static const char *CompType(unsigned char Comp) APT_CONST;
+ static const char *DepType(unsigned char Dep);
+
+ pkgCache(MMap *Map,bool DoMap = true);
+ virtual ~pkgCache();
+
+private:
+ void * const d;
+ bool MultiArchEnabled;
+};
+ /*}}}*/
+// Header structure /*{{{*/
+struct pkgCache::Header
+{
+ /** \brief Signature information
+
+ This must contain the hex value 0x98FE76DC which is designed to
+ verify that the system loading the image has the same byte order
+ and byte size as the system saving the image */
+ uint32_t Signature;
+ /** These contain the version of the cache file */
+ map_number_t MajorVersion;
+ map_number_t MinorVersion;
+ /** \brief indicates if the cache should be erased
+
+ Dirty is true if the cache file was opened for reading, the client
+ expects to have written things to it and have not fully synced it.
+ The file should be erased and rebuilt if it is true. */
+ bool Dirty;
+
+ /** \brief Size of structure values
+
+ All *Sz variables contains the sizeof() that particular structure.
+ It is used as an extra consistency check on the structure of the file.
+
+ If any of the size values do not exactly match what the client expects
+ then the client should refuse the load the file. */
+ uint16_t HeaderSz;
+ map_number_t GroupSz;
+ map_number_t PackageSz;
+ map_number_t ReleaseFileSz;
+ map_number_t PackageFileSz;
+ map_number_t VersionSz;
+ map_number_t DescriptionSz;
+ map_number_t DependencySz;
+ map_number_t DependencyDataSz;
+ map_number_t ProvidesSz;
+ map_number_t VerFileSz;
+ map_number_t DescFileSz;
+
+ /** \brief Structure counts
+
+ These indicate the number of each structure contained in the cache.
+ PackageCount is especially useful for generating user state structures.
+ See Package::Id for more info. */
+ map_id_t GroupCount;
+ map_id_t PackageCount;
+ map_id_t VersionCount;
+ map_id_t DescriptionCount;
+ map_id_t DependsCount;
+ map_id_t DependsDataCount;
+ map_fileid_t ReleaseFileCount;
+ map_fileid_t PackageFileCount;
+ map_fileid_t VerFileCount;
+ map_fileid_t DescFileCount;
+ map_id_t ProvidesCount;
+
+ /** \brief index of the first PackageFile structure
+
+ The PackageFile structures are singly linked lists that represent
+ all package files that have been merged into the cache. */
+ map_pointer_t FileList;
+ /** \brief index of the first ReleaseFile structure */
+ map_pointer_t RlsFileList;
+
+ /** \brief String representing the version system used */
+ map_pointer_t VerSysName;
+ /** \brief native architecture the cache was built against */
+ map_pointer_t Architecture;
+ /** \brief all architectures the cache was built against */
+ map_pointer_t Architectures;
+ /** \brief The maximum size of a raw entry from the original Package file */
+ map_filesize_t MaxVerFileSize;
+ /** \brief The maximum size of a raw entry from the original Translation file */
+ map_filesize_t MaxDescFileSize;
+
+ /** \brief The Pool structures manage the allocation pools that the generator uses
+
+ Start indicates the first byte of the pool, Count is the number of objects
+ remaining in the pool and ItemSize is the structure size (alignment factor)
+ of the pool. An ItemSize of 0 indicates the pool is empty. There should be
+ the same number of pools as there are structure types. The generator
+ stores this information so future additions can make use of any unused pool
+ blocks. */
+ DynamicMMap::Pool Pools[12];
+
+ /** \brief hash tables providing rapid group/package name lookup
+
+ Each group/package name is inserted into a hash table using pkgCache::Hash(const &string)
+ By iterating over each entry in the hash table it is possible to iterate over
+ the entire list of packages. Hash Collisions are handled with a singly linked
+ list of packages based at the hash item. The linked list contains only
+ packages that match the hashing function.
+ In the PkgHashTable is it possible that multiple packages have the same name -
+ these packages are stored as a sequence in the list.
+ The size of both tables is the same. */
+ uint32_t HashTableSize;
+ uint32_t GetHashTableSize() const { return HashTableSize; }
+ void SetHashTableSize(unsigned int const sz) { HashTableSize = sz; }
+ map_pointer_t GetArchitectures() const { return Architectures; }
+ void SetArchitectures(map_pointer_t const idx) { Architectures = idx; }
+ map_pointer_t * PkgHashTableP() const { return (map_pointer_t*) (this + 1); }
+ map_pointer_t * GrpHashTableP() const { return PkgHashTableP() + GetHashTableSize(); }
+
+ /** \brief Hash of the file (TODO: Rename) */
+ map_filesize_small_t CacheFileSize;
+
+ bool CheckSizes(Header &Against) const APT_PURE;
+ Header();
+};
+ /*}}}*/
+// Group structure /*{{{*/
+/** \brief groups architecture depending packages together
+
+ On or more packages with the same name form a group, so we have
+ a simple way to access a package built for different architectures
+ Group exists in a singly linked list of group records starting at
+ the hash index of the name in the pkgCache::Header::GrpHashTable */
+struct pkgCache::Group
+{
+ /** \brief Name of the group */
+ map_stringitem_t Name;
+
+ // Linked List
+ /** \brief Link to the first package which belongs to the group */
+ map_pointer_t FirstPackage; // Package
+ /** \brief Link to the last package which belongs to the group */
+ map_pointer_t LastPackage; // Package
+ /** \brief Link to the next Group */
+ map_pointer_t Next; // Group
+ /** \brief unique sequel ID */
+ map_id_t ID;
+
+};
+ /*}}}*/
+// Package structure /*{{{*/
+/** \brief contains information for a single unique package
+
+ There can be any number of versions of a given package.
+ Package exists in a singly linked list of package records starting at
+ the hash index of the name in the pkgCache::Header::PkgHashTable
+
+ A package can be created for every architecture so package names are
+ not unique, but it is guaranteed that packages with the same name
+ are sequencel ordered in the list. Packages with the same name can be
+ accessed with the Group.
+*/
+struct pkgCache::Package
+{
+ /** \brief Name of the package
+ * Note that the access method Name() will remain. It is just this data member
+ * deprecated as this information is already stored and available via the
+ * associated Group – so it is wasting precious binary cache space */
+ APT_DEPRECATED_MSG("Use the .Name() method instead of accessing the member directly") map_stringitem_t Name;
+ /** \brief Architecture of the package */
+ map_stringitem_t Arch;
+ /** \brief Base of a singly linked list of versions
+
+ Each structure represents a unique version of the package.
+ The version structures contain links into PackageFile and the
+ original text file as well as detailed information about the size
+ and dependencies of the specific package. In this way multiple
+ versions of a package can be cleanly handled by the system.
+ Furthermore, this linked list is guaranteed to be sorted
+ from Highest version to lowest version with no duplicate entries. */
+ map_pointer_t VersionList; // Version
+ /** \brief index to the installed version */
+ map_pointer_t CurrentVer; // Version
+ /** \brief index of the group this package belongs to */
+ map_pointer_t Group; // Group the Package belongs to
+
+ // Linked list
+ /** \brief Link to the next package in the same bucket */
+ map_pointer_t NextPackage; // Package
+ /** \brief List of all dependencies on this package */
+ map_pointer_t RevDepends; // Dependency
+ /** \brief List of all "packages" this package provide */
+ map_pointer_t ProvidesList; // Provides
+
+ // Install/Remove/Purge etc
+ /** \brief state that the user wishes the package to be in */
+ map_number_t SelectedState; // What
+ /** \brief installation state of the package
+
+ This should be "ok" but in case the installation failed
+ it will be different.
+ */
+ map_number_t InstState; // Flags
+ /** \brief indicates if the package is installed */
+ map_number_t CurrentState; // State
+
+ /** \brief unique sequel ID
+
+ ID is a unique value from 0 to Header->PackageCount assigned by the generator.
+ This allows clients to create an array of size PackageCount and use it to store
+ state information for the package map. For instance the status file emitter uses
+ this to track which packages have been emitted already. */
+ map_id_t ID;
+ /** \brief some useful indicators of the package's state */
+ map_flags_t Flags;
+};
+ /*}}}*/
+// Release File structure /*{{{*/
+/** \brief stores information about the release files used to generate the cache
+
+ PackageFiles reference ReleaseFiles as we need to keep record of which
+ version belongs to which release e.g. for pinning. */
+struct pkgCache::ReleaseFile
+{
+ /** \brief physical disk file that this ReleaseFile represents */
+ map_stringitem_t FileName;
+ /** \brief the release information
+
+ Please see the files document for a description of what the
+ release information means. */
+ map_stringitem_t Archive;
+ map_stringitem_t Codename;
+ map_stringitem_t Version;
+ map_stringitem_t Origin;
+ map_stringitem_t Label;
+ /** \brief The site the index file was fetched from */
+ map_stringitem_t Site;
+
+ /** \brief Size of the file
+
+ Used together with the modification time as a
+ simple check to ensure that the Packages
+ file has not been altered since Cache generation. */
+ map_filesize_t Size;
+ /** \brief Modification time for the file */
+ time_t mtime;
+
+ /** @TODO document PackageFile::Flags */
+ map_flags_t Flags;
+
+ // Linked list
+ /** \brief Link to the next ReleaseFile in the Cache */
+ map_pointer_t NextFile;
+ /** \brief unique sequel ID */
+ map_fileid_t ID;
+};
+ /*}}}*/
+// Package File structure /*{{{*/
+/** \brief stores information about the files used to generate the cache
+
+ Package files are referenced by Version structures to be able to know
+ after the generation still from which Packages file includes this Version
+ as we need this information later on e.g. for pinning. */
+struct pkgCache::PackageFile
+{
+ /** \brief physical disk file that this PackageFile represents */
+ map_stringitem_t FileName;
+ /** \brief the release information */
+ map_pointer_t Release;
+
+ map_stringitem_t Component;
+ map_stringitem_t Architecture;
+
+ /** \brief indicates what sort of index file this is
+
+ @TODO enumerate at least the possible indexes */
+ map_stringitem_t IndexType;
+ /** \brief Size of the file
+
+ Used together with the modification time as a
+ simple check to ensure that the Packages
+ file has not been altered since Cache generation. */
+ map_filesize_t Size;
+ /** \brief Modification time for the file */
+ time_t mtime;
+
+ /** @TODO document PackageFile::Flags */
+ map_flags_t Flags;
+
+ // Linked list
+ /** \brief Link to the next PackageFile in the Cache */
+ map_pointer_t NextFile; // PackageFile
+ /** \brief unique sequel ID */
+ map_fileid_t ID;
+};
+ /*}}}*/
+// VerFile structure /*{{{*/
+/** \brief associates a version with a PackageFile
+
+ This allows a full description of all Versions in all files
+ (and hence all sources) under consideration. */
+struct pkgCache::VerFile
+{
+ /** \brief index of the package file that this version was found in */
+ map_pointer_t File; // PackageFile
+ /** \brief next step in the linked list */
+ map_pointer_t NextFile; // PkgVerFile
+ /** \brief position in the package file */
+ map_filesize_t Offset; // File offset
+ /** @TODO document pkgCache::VerFile::Size */
+ map_filesize_t Size;
+};
+ /*}}}*/
+// DescFile structure /*{{{*/
+/** \brief associates a description with a Translation file */
+struct pkgCache::DescFile
+{
+ /** \brief index of the file that this description was found in */
+ map_pointer_t File; // PackageFile
+ /** \brief next step in the linked list */
+ map_pointer_t NextFile; // PkgVerFile
+ /** \brief position in the file */
+ map_filesize_t Offset; // File offset
+ /** @TODO document pkgCache::DescFile::Size */
+ map_filesize_t Size;
+};
+ /*}}}*/
+// Version structure /*{{{*/
+/** \brief information for a single version of a package
+
+ The version list is always sorted from highest version to lowest
+ version by the generator. Equal version numbers are either merged
+ or handled as separate versions based on the Hash value. */
+APT_IGNORE_DEPRECATED_PUSH
+struct pkgCache::Version
+{
+ /** \brief complete version string */
+ map_stringitem_t VerStr;
+ /** \brief section this version is filled in */
+ map_stringitem_t Section;
+ /** \brief source package name this version comes from
+ Always contains the name, even if it is the same as the binary name */
+ map_stringitem_t SourcePkgName;
+ /** \brief source version this version comes from
+ Always contains the version string, even if it is the same as the binary version */
+ map_stringitem_t SourceVerStr;
+
+ /** \brief Multi-Arch capabilities of a package version */
+ enum VerMultiArch { No = 0, /*!< is the default and doesn't trigger special behaviour */
+ All = (1<<0), /*!< will cause that Ver.Arch() will report "all" */
+ Foreign = (1<<1), /*!< can satisfy dependencies in another architecture */
+ Same = (1<<2), /*!< can be co-installed with itself from other architectures */
+ Allowed = (1<<3), /*!< other packages are allowed to depend on thispkg:any */
+ AllForeign = All | Foreign,
+ AllAllowed = All | Allowed };
+
+ /** \brief deprecated variant of No */
+ static const APT_DEPRECATED_MSG("The default value of the Multi-Arch field is no, not none") VerMultiArch None = No;
+
+ /** \brief stores the MultiArch capabilities of this version
+
+ Flags used are defined in pkgCache::Version::VerMultiArch
+ */
+ map_number_t MultiArch;
+
+ /** \brief references all the PackageFile's that this version came from
+
+ FileList can be used to determine what distribution(s) the Version
+ applies to. If FileList is 0 then this is a blank version.
+ The structure should also have a 0 in all other fields excluding
+ pkgCache::Version::VerStr and Possibly pkgCache::Version::NextVer. */
+ map_pointer_t FileList; // VerFile
+ /** \brief next (lower or equal) version in the linked list */
+ map_pointer_t NextVer; // Version
+ /** \brief next description in the linked list */
+ map_pointer_t DescriptionList; // Description
+ /** \brief base of the dependency list */
+ map_pointer_t DependsList; // Dependency
+ /** \brief links to the owning package
+
+ This allows reverse dependencies to determine the package */
+ map_pointer_t ParentPkg; // Package
+ /** \brief list of pkgCache::Provides */
+ map_pointer_t ProvidesList; // Provides
+
+ /** \brief archive size for this version
+
+ For Debian this is the size of the .deb file. */
+ map_filesize_t Size; // These are the .deb size
+ /** \brief uncompressed size for this version */
+ map_filesize_t InstalledSize;
+ /** \brief characteristic value representing this version
+
+ No two packages in existence should have the same VerStr
+ and Hash with different contents. */
+ unsigned short Hash;
+ /** \brief unique sequel ID */
+ map_id_t ID;
+ /** \brief parsed priority value */
+ map_number_t Priority;
+};
+APT_IGNORE_DEPRECATED_POP
+ /*}}}*/
+// Description structure /*{{{*/
+/** \brief datamember of a linked list of available description for a version */
+struct pkgCache::Description
+{
+ /** \brief Language code of this description (translation)
+
+ If the value has a 0 length then this is read using the Package
+ file else the Translation-CODE file is used. */
+ map_stringitem_t language_code;
+ /** \brief MD5sum of the original description
+
+ Used to map Translations of a description to a version
+ and to check that the Translation is up-to-date. */
+ map_stringitem_t md5sum;
+
+ /** @TODO document pkgCache::Description::FileList */
+ map_pointer_t FileList; // DescFile
+ /** \brief next translation for this description */
+ map_pointer_t NextDesc; // Description
+ /** \brief the text is a description of this package */
+ map_pointer_t ParentPkg; // Package
+
+ /** \brief unique sequel ID */
+ map_id_t ID;
+};
+ /*}}}*/
+// Dependency structure /*{{{*/
+/** \brief information for a single dependency record
+
+ The records are split up like this to ease processing by the client.
+ The base of the linked list is pkgCache::Version::DependsList.
+ All forms of dependencies are recorded here including Depends,
+ Recommends, Suggests, Enhances, Conflicts, Replaces and Breaks. */
+struct pkgCache::DependencyData
+{
+ /** \brief string of the version the dependency is applied against */
+ map_stringitem_t Version;
+ /** \brief index of the package this depends applies to
+
+ The generator will - if the package does not already exist -
+ create a blank (no version records) package. */
+ map_pointer_t Package; // Package
+
+ /** \brief Dependency type - Depends, Recommends, Conflicts, etc */
+ map_number_t Type;
+ /** \brief comparison operator specified on the depends line
+
+ If the high bit is set then it is a logical OR with the previous record. */
+ map_flags_t CompareOp;
+
+ map_pointer_t NextData;
+};
+struct pkgCache::Dependency
+{
+ map_pointer_t DependencyData; // DependencyData
+ /** \brief version of the package which has the depends */
+ map_pointer_t ParentVer; // Version
+ /** \brief next reverse dependency of this package */
+ map_pointer_t NextRevDepends; // Dependency
+ /** \brief next dependency of this version */
+ map_pointer_t NextDepends; // Dependency
+
+ /** \brief unique sequel ID */
+ map_id_t ID;
+};
+ /*}}}*/
+// Provides structure /*{{{*/
+/** \brief handles virtual packages
+
+ When a Provides: line is encountered a new provides record is added
+ associating the package with a virtual package name.
+ The provides structures are linked off the package structures.
+ This simplifies the analysis of dependencies and other aspects A provides
+ refers to a specific version of a specific package, not all versions need to
+ provide that provides.*/
+struct pkgCache::Provides
+{
+ /** \brief index of the package providing this */
+ map_pointer_t ParentPkg; // Package
+ /** \brief index of the version this provide line applies to */
+ map_pointer_t Version; // Version
+ /** \brief version in the provides line (if any)
+
+ This version allows dependencies to depend on specific versions of a
+ Provides, as well as allowing Provides to override existing packages. */
+ map_stringitem_t ProvideVersion;
+ map_flags_t Flags;
+ /** \brief next provides (based of package) */
+ map_pointer_t NextProvides; // Provides
+ /** \brief next provides (based of version) */
+ map_pointer_t NextPkgProv; // Provides
+};
+ /*}}}*/
+// UNUSED StringItem structure /*{{{*/
+struct APT_DEPRECATED_MSG("No longer used in cache generation without a replacement") pkgCache::StringItem
+{
+ /** \brief string this refers to */
+ map_ptrloc String; // StringItem
+ /** \brief Next link in the chain */
+ map_ptrloc NextItem; // StringItem
+};
+ /*}}}*/
+
+inline char const * pkgCache::NativeArch()
+ { return StrP + HeaderP->Architecture; }
+
+#include <apt-pkg/cacheiterators.h>
+
+inline pkgCache::GrpIterator pkgCache::GrpBegin()
+ {return GrpIterator(*this);}
+inline pkgCache::GrpIterator pkgCache::GrpEnd()
+ {return GrpIterator(*this,GrpP);}
+inline pkgCache::PkgIterator pkgCache::PkgBegin()
+ {return PkgIterator(*this);}
+inline pkgCache::PkgIterator pkgCache::PkgEnd()
+ {return PkgIterator(*this,PkgP);}
+inline pkgCache::PkgFileIterator pkgCache::FileBegin()
+ {return PkgFileIterator(*this,PkgFileP + HeaderP->FileList);}
+inline pkgCache::PkgFileIterator pkgCache::FileEnd()
+ {return PkgFileIterator(*this,PkgFileP);}
+inline pkgCache::RlsFileIterator pkgCache::RlsFileBegin()
+ {return RlsFileIterator(*this,RlsFileP + HeaderP->RlsFileList);}
+inline pkgCache::RlsFileIterator pkgCache::RlsFileEnd()
+ {return RlsFileIterator(*this,RlsFileP);}
+
+
+// Oh I wish for Real Name Space Support
+class pkgCache::Namespace /*{{{*/
+{
+ public:
+ typedef pkgCache::GrpIterator GrpIterator;
+ typedef pkgCache::PkgIterator PkgIterator;
+ typedef pkgCache::VerIterator VerIterator;
+ typedef pkgCache::DescIterator DescIterator;
+ typedef pkgCache::DepIterator DepIterator;
+ typedef pkgCache::PrvIterator PrvIterator;
+ typedef pkgCache::RlsFileIterator RlsFileIterator;
+ typedef pkgCache::PkgFileIterator PkgFileIterator;
+ typedef pkgCache::VerFileIterator VerFileIterator;
+ typedef pkgCache::Version Version;
+ typedef pkgCache::Description Description;
+ typedef pkgCache::Package Package;
+ typedef pkgCache::Header Header;
+ typedef pkgCache::Dep Dep;
+ typedef pkgCache::Flag Flag;
+};
+ /*}}}*/
+#endif
diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc
new file mode 100644
index 000000000..e52667fbc
--- /dev/null
+++ b/apt-pkg/pkgcachegen.cc
@@ -0,0 +1,1859 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: pkgcachegen.cc,v 1.53.2.1 2003/12/24 23:09:17 mdz Exp $
+/* ######################################################################
+
+ Package Cache Generator - Generator for the cache structure.
+
+ This builds the cache structure from the abstract package list parser.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/pkgcachegen.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/version.h>
+#include <apt-pkg/progress.h>
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/macros.h>
+#include <apt-pkg/metaindex.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/hashsum_template.h>
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/md5.h>
+#include <apt-pkg/mmap.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#include <stddef.h>
+#include <string.h>
+#include <iostream>
+#include <string>
+#include <vector>
+#include <memory>
+#include <algorithm>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <apti18n.h>
+ /*}}}*/
+template<class T> using Dynamic = pkgCacheGenerator::Dynamic<T>;
+typedef std::vector<pkgIndexFile *>::iterator FileIterator;
+template <typename Iter> std::vector<Iter*> pkgCacheGenerator::Dynamic<Iter>::toReMap;
+
+static bool IsDuplicateDescription(pkgCache &Cache, pkgCache::DescIterator Desc,
+ APT::StringView CurMd5, std::string const &CurLang);
+
+using std::string;
+using APT::StringView;
+
+// CacheGenerator::pkgCacheGenerator - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* We set the dirty flag and make sure that is written to the disk */
+pkgCacheGenerator::pkgCacheGenerator(DynamicMMap *pMap,OpProgress *Prog) :
+ Map(*pMap), Cache(pMap,false), Progress(Prog),
+ CurrentRlsFile(NULL), CurrentFile(NULL), d(NULL)
+{
+}
+bool pkgCacheGenerator::Start()
+{
+ if (Map.Size() == 0)
+ {
+ // Setup the map interface..
+ Cache.HeaderP = (pkgCache::Header *)Map.Data();
+ _error->PushToStack();
+ Map.RawAllocate(sizeof(pkgCache::Header));
+ bool const newError = _error->PendingError();
+ _error->MergeWithStack();
+ if (newError)
+ return false;
+ if (Map.Size() <= 0)
+ return false;
+
+ Map.UsePools(*Cache.HeaderP->Pools,sizeof(Cache.HeaderP->Pools)/sizeof(Cache.HeaderP->Pools[0]));
+
+ // Starting header
+ *Cache.HeaderP = pkgCache::Header();
+
+ // make room for the hashtables for packages and groups
+ if (Map.RawAllocate(2 * (Cache.HeaderP->GetHashTableSize() * sizeof(map_pointer_t))) == 0)
+ return false;
+
+ map_stringitem_t const idxVerSysName = WriteStringInMap(_system->VS->Label);
+ if (unlikely(idxVerSysName == 0))
+ return false;
+ map_stringitem_t const idxArchitecture = StoreString(MIXED, _config->Find("APT::Architecture"));
+ if (unlikely(idxArchitecture == 0))
+ return false;
+ map_stringitem_t idxArchitectures;
+
+ std::vector<std::string> archs = APT::Configuration::getArchitectures();
+ if (archs.size() > 1)
+ {
+ std::vector<std::string>::const_iterator a = archs.begin();
+ std::string list = *a;
+ for (++a; a != archs.end(); ++a)
+ list.append(",").append(*a);
+ idxArchitectures = WriteStringInMap(list);
+ if (unlikely(idxArchitectures == 0))
+ return false;
+ }
+ else
+ idxArchitectures = idxArchitecture;
+
+ Cache.HeaderP = (pkgCache::Header *)Map.Data();
+ Cache.HeaderP->VerSysName = idxVerSysName;
+ Cache.HeaderP->Architecture = idxArchitecture;
+ Cache.HeaderP->SetArchitectures(idxArchitectures);
+
+ // Calculate the hash for the empty map, so ReMap does not fail
+ Cache.HeaderP->CacheFileSize = Cache.CacheHash();
+ Cache.ReMap();
+ }
+ else
+ {
+ // Map directly from the existing file
+ Cache.ReMap();
+ Map.UsePools(*Cache.HeaderP->Pools,sizeof(Cache.HeaderP->Pools)/sizeof(Cache.HeaderP->Pools[0]));
+ if (Cache.VS != _system->VS)
+ return _error->Error(_("Cache has an incompatible versioning system"));
+ }
+
+ Cache.HeaderP->Dirty = true;
+ Map.Sync(0,sizeof(pkgCache::Header));
+ return true;
+}
+ /*}}}*/
+// CacheGenerator::~pkgCacheGenerator - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* We sync the data then unset the dirty flag in two steps so as to
+ advoid a problem during a crash */
+pkgCacheGenerator::~pkgCacheGenerator()
+{
+ if (_error->PendingError() == true || Map.validData() == false)
+ return;
+ if (Map.Sync() == false)
+ return;
+
+ Cache.HeaderP->Dirty = false;
+ Cache.HeaderP->CacheFileSize = Cache.CacheHash();
+
+ if (_config->FindB("Debug::pkgCacheGen", false))
+ std::clog << "Produced cache with hash " << Cache.HeaderP->CacheFileSize << std::endl;
+ Map.Sync(0,sizeof(pkgCache::Header));
+}
+ /*}}}*/
+void pkgCacheGenerator::ReMap(void const * const oldMap, void const * const newMap, size_t oldSize) {/*{{{*/
+ // Prevent multiple remaps of the same iterator. If seen.insert(iterator)
+ // returns (something, true) the iterator was not yet seen and we can
+ // remap it.
+ std::unordered_set<void *> seen;
+ if (oldMap == newMap)
+ return;
+
+ if (_config->FindB("Debug::pkgCacheGen", false))
+ std::clog << "Remaping from " << oldMap << " to " << newMap << std::endl;
+
+ Cache.ReMap(false);
+
+ CurrentFile += (pkgCache::PackageFile const * const) newMap - (pkgCache::PackageFile const * const) oldMap;
+ CurrentRlsFile += (pkgCache::ReleaseFile const * const) newMap - (pkgCache::ReleaseFile const * const) oldMap;
+
+ for (std::vector<pkgCache::GrpIterator*>::const_iterator i = Dynamic<pkgCache::GrpIterator>::toReMap.begin();
+ i != Dynamic<pkgCache::GrpIterator>::toReMap.end(); ++i)
+ if (std::get<1>(seen.insert(*i)) == true)
+ (*i)->ReMap(oldMap, newMap);
+ for (std::vector<pkgCache::PkgIterator*>::const_iterator i = Dynamic<pkgCache::PkgIterator>::toReMap.begin();
+ i != Dynamic<pkgCache::PkgIterator>::toReMap.end(); ++i)
+ if (std::get<1>(seen.insert(*i)) == true)
+ (*i)->ReMap(oldMap, newMap);
+ for (std::vector<pkgCache::VerIterator*>::const_iterator i = Dynamic<pkgCache::VerIterator>::toReMap.begin();
+ i != Dynamic<pkgCache::VerIterator>::toReMap.end(); ++i)
+ if (std::get<1>(seen.insert(*i)) == true)
+ (*i)->ReMap(oldMap, newMap);
+ for (std::vector<pkgCache::DepIterator*>::const_iterator i = Dynamic<pkgCache::DepIterator>::toReMap.begin();
+ i != Dynamic<pkgCache::DepIterator>::toReMap.end(); ++i)
+ if (std::get<1>(seen.insert(*i)) == true)
+ (*i)->ReMap(oldMap, newMap);
+ for (std::vector<pkgCache::DescIterator*>::const_iterator i = Dynamic<pkgCache::DescIterator>::toReMap.begin();
+ i != Dynamic<pkgCache::DescIterator>::toReMap.end(); ++i)
+ if (std::get<1>(seen.insert(*i)) == true)
+ (*i)->ReMap(oldMap, newMap);
+ for (std::vector<pkgCache::PrvIterator*>::const_iterator i = Dynamic<pkgCache::PrvIterator>::toReMap.begin();
+ i != Dynamic<pkgCache::PrvIterator>::toReMap.end(); ++i)
+ if (std::get<1>(seen.insert(*i)) == true)
+ (*i)->ReMap(oldMap, newMap);
+ for (std::vector<pkgCache::PkgFileIterator*>::const_iterator i = Dynamic<pkgCache::PkgFileIterator>::toReMap.begin();
+ i != Dynamic<pkgCache::PkgFileIterator>::toReMap.end(); ++i)
+ if (std::get<1>(seen.insert(*i)) == true)
+ (*i)->ReMap(oldMap, newMap);
+ for (std::vector<pkgCache::RlsFileIterator*>::const_iterator i = Dynamic<pkgCache::RlsFileIterator>::toReMap.begin();
+ i != Dynamic<pkgCache::RlsFileIterator>::toReMap.end(); ++i)
+ if (std::get<1>(seen.insert(*i)) == true)
+ (*i)->ReMap(oldMap, newMap);
+ for (APT::StringView* ViewP : Dynamic<APT::StringView>::toReMap) {
+ if (std::get<1>(seen.insert(ViewP)) == false)
+ continue;
+ // Ignore views outside of the cache.
+ if (ViewP->data() < static_cast<const char*>(oldMap)
+ || ViewP->data() > static_cast<const char*>(oldMap) + oldSize)
+ continue;
+ const char *data = ViewP->data() + (static_cast<const char*>(newMap) - static_cast<const char*>(oldMap));
+ *ViewP = StringView(data , ViewP->size());
+ }
+} /*}}}*/
+// CacheGenerator::WriteStringInMap /*{{{*/
+map_stringitem_t pkgCacheGenerator::WriteStringInMap(const char *String,
+ const unsigned long &Len) {
+ size_t oldSize = Map.Size();
+ void const * const oldMap = Map.Data();
+ map_stringitem_t const index = Map.WriteString(String, Len);
+ if (index != 0)
+ ReMap(oldMap, Map.Data(), oldSize);
+ return index;
+}
+ /*}}}*/
+// CacheGenerator::WriteStringInMap /*{{{*/
+map_stringitem_t pkgCacheGenerator::WriteStringInMap(const char *String) {
+ size_t oldSize = Map.Size();
+ void const * const oldMap = Map.Data();
+ map_stringitem_t const index = Map.WriteString(String);
+ if (index != 0)
+ ReMap(oldMap, Map.Data(), oldSize);
+ return index;
+}
+ /*}}}*/
+map_pointer_t pkgCacheGenerator::AllocateInMap(const unsigned long &size) {/*{{{*/
+ size_t oldSize = Map.Size();
+ void const * const oldMap = Map.Data();
+ map_pointer_t const index = Map.Allocate(size);
+ if (index != 0)
+ ReMap(oldMap, Map.Data(), oldSize);
+ return index;
+}
+ /*}}}*/
+// CacheGenerator::MergeList - Merge the package list /*{{{*/
+// ---------------------------------------------------------------------
+/* This provides the generation of the entries in the cache. Each loop
+ goes through a single package record from the underlying parse engine. */
+bool pkgCacheGenerator::MergeList(ListParser &List,
+ pkgCache::VerIterator *OutVer)
+{
+ List.Owner = this;
+
+ unsigned int Counter = 0;
+ while (List.Step() == true)
+ {
+ string const PackageName = List.Package();
+ if (PackageName.empty() == true)
+ return false;
+
+ Counter++;
+ if (Counter % 100 == 0 && Progress != 0)
+ Progress->Progress(List.Offset());
+
+ APT::StringView Arch = List.Architecture();
+ Dynamic<APT::StringView> DynArch(Arch);
+ APT::StringView Version = List.Version();
+ Dynamic<APT::StringView> DynVersion(Version);
+ if (Version.empty() == true && Arch.empty() == true)
+ {
+ // package descriptions
+ if (MergeListGroup(List, PackageName) == false)
+ return false;
+ continue;
+ }
+
+ // Get a pointer to the package structure
+ pkgCache::PkgIterator Pkg;
+ Dynamic<pkgCache::PkgIterator> DynPkg(Pkg);
+ if (NewPackage(Pkg, PackageName, Arch) == false)
+ // TRANSLATOR: The first placeholder is a package name,
+ // the other two should be copied verbatim as they include debug info
+ return _error->Error(_("Error occurred while processing %s (%s%d)"),
+ PackageName.c_str(), "NewPackage", 1);
+
+
+ if (Version.empty() == true)
+ {
+ if (MergeListPackage(List, Pkg) == false)
+ return false;
+ }
+ else
+ {
+ if (MergeListVersion(List, Pkg, Version, OutVer) == false)
+ return false;
+ }
+
+ if (OutVer != 0)
+ return true;
+ }
+
+ if (Cache.HeaderP->PackageCount >= std::numeric_limits<map_id_t>::max())
+ return _error->Error(_("Wow, you exceeded the number of package "
+ "names this APT is capable of."));
+ if (Cache.HeaderP->VersionCount >= std::numeric_limits<map_id_t>::max())
+ return _error->Error(_("Wow, you exceeded the number of versions "
+ "this APT is capable of."));
+ if (Cache.HeaderP->DescriptionCount >= std::numeric_limits<map_id_t>::max())
+ return _error->Error(_("Wow, you exceeded the number of descriptions "
+ "this APT is capable of."));
+ if (Cache.HeaderP->DependsCount >= std::numeric_limits<map_id_t>::max())
+ return _error->Error(_("Wow, you exceeded the number of dependencies "
+ "this APT is capable of."));
+
+ return true;
+}
+// CacheGenerator::MergeListGroup /*{{{*/
+bool pkgCacheGenerator::MergeListGroup(ListParser &List, std::string const &GrpName)
+{
+ pkgCache::GrpIterator Grp = Cache.FindGrp(GrpName);
+ // a group has no data on it's own, only packages have it but these
+ // stanzas like this come from Translation- files to add descriptions,
+ // but without a version we don't need a description for it…
+ if (Grp.end() == true)
+ return true;
+ Dynamic<pkgCache::GrpIterator> DynGrp(Grp);
+
+ pkgCache::PkgIterator Pkg;
+ Dynamic<pkgCache::PkgIterator> DynPkg(Pkg);
+ for (Pkg = Grp.PackageList(); Pkg.end() == false; Pkg = Grp.NextPkg(Pkg))
+ if (MergeListPackage(List, Pkg) == false)
+ return false;
+
+ return true;
+}
+ /*}}}*/
+// CacheGenerator::MergeListPackage /*{{{*/
+bool pkgCacheGenerator::MergeListPackage(ListParser &List, pkgCache::PkgIterator &Pkg)
+{
+ // we first process the package, then the descriptions
+ // (for deb this package processing is in fact a no-op)
+ pkgCache::VerIterator Ver(Cache);
+ Dynamic<pkgCache::VerIterator> DynVer(Ver);
+ if (List.UsePackage(Pkg, Ver) == false)
+ return _error->Error(_("Error occurred while processing %s (%s%d)"),
+ Pkg.Name(), "UsePackage", 1);
+
+ // Find the right version to write the description
+ StringView CurMd5 = List.Description_md5();
+ std::vector<std::string> availDesc = List.AvailableDescriptionLanguages();
+ for (Ver = Pkg.VersionList(); Ver.end() == false; ++Ver)
+ {
+ pkgCache::DescIterator VerDesc = Ver.DescriptionList();
+
+ // a version can only have one md5 describing it
+ if (VerDesc.end() == true || Cache.ViewString(VerDesc->md5sum) != CurMd5)
+ continue;
+
+ map_stringitem_t md5idx = VerDesc->md5sum;
+ for (std::vector<std::string>::const_iterator CurLang = availDesc.begin(); CurLang != availDesc.end(); ++CurLang)
+ {
+ // don't add a new description if we have one for the given
+ // md5 && language
+ if (IsDuplicateDescription(Cache, VerDesc, CurMd5, *CurLang) == true)
+ continue;
+
+ AddNewDescription(List, Ver, *CurLang, CurMd5, md5idx);
+ }
+
+ // we can stop here as all "same" versions will share the description
+ break;
+ }
+
+ return true;
+}
+ /*}}}*/
+// CacheGenerator::MergeListVersion /*{{{*/
+bool pkgCacheGenerator::MergeListVersion(ListParser &List, pkgCache::PkgIterator &Pkg,
+ APT::StringView const &Version, pkgCache::VerIterator* &OutVer)
+{
+ pkgCache::VerIterator Ver = Pkg.VersionList();
+ Dynamic<pkgCache::VerIterator> DynVer(Ver);
+ map_pointer_t *LastVer = &Pkg->VersionList;
+ void const * oldMap = Map.Data();
+
+ unsigned short const Hash = List.VersionHash();
+ if (Ver.end() == false)
+ {
+ /* We know the list is sorted so we use that fact in the search.
+ Insertion of new versions is done with correct sorting */
+ int Res = 1;
+ for (; Ver.end() == false; LastVer = &Ver->NextVer, ++Ver)
+ {
+ char const * const VerStr = Ver.VerStr();
+ Res = Cache.VS->DoCmpVersion(Version.data(), Version.data() + Version.length(),
+ VerStr, VerStr + strlen(VerStr));
+ // Version is higher as current version - insert here
+ if (Res > 0)
+ break;
+ // Versionstrings are equal - is hash also equal?
+ if (Res == 0)
+ {
+ if (List.SameVersion(Hash, Ver) == true)
+ break;
+ // sort (volatile) sources above not-sources like the status file
+ if ((CurrentFile->Flags & pkgCache::Flag::NotSource) == 0)
+ {
+ auto VF = Ver.FileList();
+ for (; VF.end() == false; ++VF)
+ if (VF.File().Flagged(pkgCache::Flag::NotSource) == false)
+ break;
+ if (VF.end() == true)
+ break;
+ }
+ }
+ // proceed with the next till we have either the right
+ // or we found another version (which will be lower)
+ }
+
+ /* We already have a version for this item, record that we saw it */
+ if (Res == 0 && Ver.end() == false && Ver->Hash == Hash)
+ {
+ if (List.UsePackage(Pkg,Ver) == false)
+ return _error->Error(_("Error occurred while processing %s (%s%d)"),
+ Pkg.Name(), "UsePackage", 2);
+
+ if (NewFileVer(Ver,List) == false)
+ return _error->Error(_("Error occurred while processing %s (%s%d)"),
+ Pkg.Name(), "NewFileVer", 1);
+
+ // Read only a single record and return
+ if (OutVer != 0)
+ {
+ *OutVer = Ver;
+ return true;
+ }
+
+ return true;
+ }
+ }
+
+ // Add a new version
+ map_pointer_t const verindex = NewVersion(Ver, Version, Pkg.Index(), Hash, *LastVer);
+ if (unlikely(verindex == 0))
+ return _error->Error(_("Error occurred while processing %s (%s%d)"),
+ Pkg.Name(), "NewVersion", 1);
+
+ if (oldMap != Map.Data())
+ LastVer += (map_pointer_t const * const) Map.Data() - (map_pointer_t const * const) oldMap;
+ *LastVer = verindex;
+
+ if (unlikely(List.NewVersion(Ver) == false))
+ return _error->Error(_("Error occurred while processing %s (%s%d)"),
+ Pkg.Name(), "NewVersion", 2);
+
+ if (unlikely(List.UsePackage(Pkg,Ver) == false))
+ return _error->Error(_("Error occurred while processing %s (%s%d)"),
+ Pkg.Name(), "UsePackage", 3);
+
+ if (unlikely(NewFileVer(Ver,List) == false))
+ return _error->Error(_("Error occurred while processing %s (%s%d)"),
+ Pkg.Name(), "NewFileVer", 2);
+
+ pkgCache::GrpIterator Grp = Pkg.Group();
+ Dynamic<pkgCache::GrpIterator> DynGrp(Grp);
+
+ /* If it is the first version of this package we need to add implicit
+ Multi-Arch dependencies to all other package versions in the group now -
+ otherwise we just add them for this new version */
+ if (Pkg.VersionList()->NextVer == 0)
+ {
+ pkgCache::PkgIterator P = Grp.PackageList();
+ Dynamic<pkgCache::PkgIterator> DynP(P);
+ for (; P.end() != true; P = Grp.NextPkg(P))
+ {
+ if (P->ID == Pkg->ID)
+ continue;
+ pkgCache::VerIterator V = P.VersionList();
+ Dynamic<pkgCache::VerIterator> DynV(V);
+ for (; V.end() != true; ++V)
+ if (unlikely(AddImplicitDepends(V, Pkg) == false))
+ return _error->Error(_("Error occurred while processing %s (%s%d)"),
+ Pkg.Name(), "AddImplicitDepends", 1);
+ }
+ }
+ if (unlikely(AddImplicitDepends(Grp, Pkg, Ver) == false))
+ return _error->Error(_("Error occurred while processing %s (%s%d)"),
+ Pkg.Name(), "AddImplicitDepends", 2);
+
+ // Read only a single record and return
+ if (OutVer != 0)
+ {
+ *OutVer = Ver;
+ return true;
+ }
+
+ /* Record the Description(s) based on their master md5sum */
+ StringView CurMd5 = List.Description_md5();
+
+ /* Before we add a new description we first search in the group for
+ a version with a description of the same MD5 - if so we reuse this
+ description group instead of creating our own for this version */
+ for (pkgCache::PkgIterator P = Grp.PackageList();
+ P.end() == false; P = Grp.NextPkg(P))
+ {
+ for (pkgCache::VerIterator V = P.VersionList();
+ V.end() == false; ++V)
+ {
+ if (V->DescriptionList == 0 || Cache.ViewString(V.DescriptionList()->md5sum) != CurMd5)
+ continue;
+ Ver->DescriptionList = V->DescriptionList;
+ }
+ }
+
+ // We haven't found reusable descriptions, so add the first description(s)
+ map_stringitem_t md5idx = Ver->DescriptionList == 0 ? 0 : Ver.DescriptionList()->md5sum;
+ std::vector<std::string> availDesc = List.AvailableDescriptionLanguages();
+ for (std::vector<std::string>::const_iterator CurLang = availDesc.begin(); CurLang != availDesc.end(); ++CurLang)
+ if (AddNewDescription(List, Ver, *CurLang, CurMd5, md5idx) == false)
+ return false;
+ return true;
+}
+ /*}}}*/
+bool pkgCacheGenerator::AddNewDescription(ListParser &List, pkgCache::VerIterator &Ver, std::string const &lang, APT::StringView CurMd5, map_stringitem_t &md5idx) /*{{{*/
+{
+ pkgCache::DescIterator Desc;
+ Dynamic<pkgCache::DescIterator> DynDesc(Desc);
+
+ map_pointer_t const descindex = NewDescription(Desc, lang, CurMd5, md5idx);
+ if (unlikely(descindex == 0))
+ return _error->Error(_("Error occurred while processing %s (%s%d)"),
+ Ver.ParentPkg().Name(), "NewDescription", 1);
+
+ md5idx = Desc->md5sum;
+ Desc->ParentPkg = Ver.ParentPkg().Index();
+
+ // we add at the end, so that the start is constant as we need
+ // that to be able to efficiently share these lists
+ pkgCache::DescIterator VerDesc = Ver.DescriptionList(); // old value might be invalid after ReMap
+ for (;VerDesc.end() == false && VerDesc->NextDesc != 0; ++VerDesc);
+ map_pointer_t * const LastNextDesc = (VerDesc.end() == true) ? &Ver->DescriptionList : &VerDesc->NextDesc;
+ *LastNextDesc = descindex;
+
+ if (NewFileDesc(Desc,List) == false)
+ return _error->Error(_("Error occurred while processing %s (%s%d)"),
+ Ver.ParentPkg().Name(), "NewFileDesc", 1);
+
+ return true;
+}
+ /*}}}*/
+ /*}}}*/
+// CacheGenerator::NewGroup - Add a new group /*{{{*/
+// ---------------------------------------------------------------------
+/* This creates a new group structure and adds it to the hash table */
+bool pkgCacheGenerator::NewGroup(pkgCache::GrpIterator &Grp, StringView Name)
+{
+ Dynamic<StringView> DName(Name);
+ Grp = Cache.FindGrp(Name);
+ if (Grp.end() == false)
+ return true;
+
+ // Get a structure
+ map_pointer_t const Group = AllocateInMap(sizeof(pkgCache::Group));
+ if (unlikely(Group == 0))
+ return false;
+
+ Grp = pkgCache::GrpIterator(Cache, Cache.GrpP + Group);
+ map_stringitem_t const idxName = StoreString(PKGNAME, Name);
+ if (unlikely(idxName == 0))
+ return false;
+ Grp->Name = idxName;
+
+ // Insert it into the hash table
+ unsigned long const Hash = Cache.Hash(Name);
+ map_pointer_t *insertAt = &Cache.HeaderP->GrpHashTableP()[Hash];
+
+ while (*insertAt != 0 && StringViewCompareFast(Name, Cache.ViewString((Cache.GrpP + *insertAt)->Name)) > 0)
+ insertAt = &(Cache.GrpP + *insertAt)->Next;
+ Grp->Next = *insertAt;
+ *insertAt = Group;
+
+ Grp->ID = Cache.HeaderP->GroupCount++;
+ return true;
+}
+ /*}}}*/
+// CacheGenerator::NewPackage - Add a new package /*{{{*/
+// ---------------------------------------------------------------------
+/* This creates a new package structure and adds it to the hash table */
+bool pkgCacheGenerator::NewPackage(pkgCache::PkgIterator &Pkg, StringView Name,
+ StringView Arch) {
+ pkgCache::GrpIterator Grp;
+ Dynamic<StringView> DName(Name);
+ Dynamic<StringView> DArch(Arch);
+ Dynamic<pkgCache::GrpIterator> DynGrp(Grp);
+ if (unlikely(NewGroup(Grp, Name) == false))
+ return false;
+
+ Pkg = Grp.FindPkg(Arch);
+ if (Pkg.end() == false)
+ return true;
+
+ // Get a structure
+ map_pointer_t const Package = AllocateInMap(sizeof(pkgCache::Package));
+ if (unlikely(Package == 0))
+ return false;
+ Pkg = pkgCache::PkgIterator(Cache,Cache.PkgP + Package);
+
+ // Set the name, arch and the ID
+ APT_IGNORE_DEPRECATED(Pkg->Name = Grp->Name;)
+ Pkg->Group = Grp.Index();
+ // all is mapped to the native architecture
+ map_stringitem_t const idxArch = (Arch == "all") ? Cache.HeaderP->Architecture : StoreString(MIXED, Arch);
+ if (unlikely(idxArch == 0))
+ return false;
+ Pkg->Arch = idxArch;
+ Pkg->ID = Cache.HeaderP->PackageCount++;
+
+ // Insert the package into our package list
+ if (Grp->FirstPackage == 0) // the group is new
+ {
+ Grp->FirstPackage = Package;
+ // Insert it into the hash table
+ map_id_t const Hash = Cache.Hash(Name);
+ map_pointer_t *insertAt = &Cache.HeaderP->PkgHashTableP()[Hash];
+ while (*insertAt != 0 && StringViewCompareFast(Name, Cache.ViewString((Cache.GrpP + (Cache.PkgP + *insertAt)->Group)->Name)) > 0)
+ insertAt = &(Cache.PkgP + *insertAt)->NextPackage;
+ Pkg->NextPackage = *insertAt;
+ *insertAt = Package;
+ }
+ else // Group the Packages together
+ {
+ // if sibling is provided by another package, this one is too
+ {
+ pkgCache::PkgIterator const M = Grp.FindPreferredPkg(false); // native or any foreign pkg will do
+ if (M.end() == false) {
+ pkgCache::PrvIterator Prv;
+ Dynamic<pkgCache::PrvIterator> DynPrv(Prv);
+ for (Prv = M.ProvidesList(); Prv.end() == false; ++Prv)
+ {
+ if ((Prv->Flags & pkgCache::Flag::ArchSpecific) != 0)
+ continue;
+ pkgCache::VerIterator Ver = Prv.OwnerVer();
+ Dynamic<pkgCache::VerIterator> DynVer(Ver);
+ if ((Ver->MultiArch & pkgCache::Version::Allowed) == pkgCache::Version::Allowed ||
+ ((Ver->MultiArch & pkgCache::Version::Foreign) == pkgCache::Version::Foreign &&
+ (Prv->Flags & pkgCache::Flag::MultiArchImplicit) == 0))
+ {
+ if (APT::Configuration::checkArchitecture(Ver.ParentPkg().Arch()) == false)
+ continue;
+ if (NewProvides(Ver, Pkg, Prv->ProvideVersion, Prv->Flags) == false)
+ return false;
+ }
+ }
+ }
+ }
+ // let M-A:foreign package siblings provide this package
+ {
+ pkgCache::PkgIterator P;
+ pkgCache::VerIterator Ver;
+ Dynamic<pkgCache::PkgIterator> DynP(P);
+ Dynamic<pkgCache::VerIterator> DynVer(Ver);
+
+ for (P = Grp.PackageList(); P.end() == false; P = Grp.NextPkg(P))
+ {
+ if (APT::Configuration::checkArchitecture(P.Arch()) == false)
+ continue;
+ for (Ver = P.VersionList(); Ver.end() == false; ++Ver)
+ if ((Ver->MultiArch & pkgCache::Version::Foreign) == pkgCache::Version::Foreign)
+ if (NewProvides(Ver, Pkg, Ver->VerStr, pkgCache::Flag::MultiArchImplicit) == false)
+ return false;
+ }
+ }
+ // and negative dependencies, don't forget negative dependencies
+ {
+ pkgCache::PkgIterator const M = Grp.FindPreferredPkg(false);
+ if (M.end() == false) {
+ pkgCache::DepIterator Dep;
+ Dynamic<pkgCache::DepIterator> DynDep(Dep);
+ for (Dep = M.RevDependsList(); Dep.end() == false; ++Dep)
+ {
+ if ((Dep->CompareOp & (pkgCache::Dep::ArchSpecific | pkgCache::Dep::MultiArchImplicit)) != 0)
+ continue;
+ if (Dep->Type != pkgCache::Dep::DpkgBreaks && Dep->Type != pkgCache::Dep::Conflicts &&
+ Dep->Type != pkgCache::Dep::Replaces)
+ continue;
+ pkgCache::VerIterator Ver = Dep.ParentVer();
+ Dynamic<pkgCache::VerIterator> DynVer(Ver);
+ map_pointer_t * unused = NULL;
+ if (NewDepends(Pkg, Ver, Dep->Version, Dep->CompareOp, Dep->Type, unused) == false)
+ return false;
+ }
+ }
+ }
+
+ // this package is the new last package
+ pkgCache::PkgIterator LastPkg(Cache, Cache.PkgP + Grp->LastPackage);
+ Pkg->NextPackage = LastPkg->NextPackage;
+ LastPkg->NextPackage = Package;
+ }
+ Grp->LastPackage = Package;
+
+ // lazy-create foo (of amd64) provides foo:amd64 at the time we first need it
+ if (Arch == "any")
+ {
+ size_t const found = Name.rfind(':');
+ StringView ArchA = Name.substr(found + 1);
+ if (ArchA != "any")
+ {
+ // ArchA is used inside the loop which might remap (NameA is not used)
+ Dynamic<StringView> DynArchA(ArchA);
+ StringView NameA = Name.substr(0, found);
+ pkgCache::PkgIterator PkgA = Cache.FindPkg(NameA, ArchA);
+ Dynamic<pkgCache::PkgIterator> DynPkgA(PkgA);
+ if (PkgA.end())
+ {
+ Dynamic<StringView> DynNameA(NameA);
+ if (NewPackage(PkgA, NameA, ArchA) == false)
+ return false;
+ }
+ if (unlikely(PkgA.end()))
+ return _error->Fatal("NewPackage was successful for %s:%s,"
+ "but the package doesn't exist anyhow!",
+ NameA.to_string().c_str(), ArchA.to_string().c_str());
+ else
+ {
+ pkgCache::PrvIterator Prv = PkgA.ProvidesList();
+ for (; Prv.end() == false; ++Prv)
+ {
+ if (Prv.IsMultiArchImplicit())
+ continue;
+ pkgCache::VerIterator V = Prv.OwnerVer();
+ if (ArchA != V.ParentPkg().Arch())
+ continue;
+ if (NewProvides(V, Pkg, V->VerStr, pkgCache::Flag::MultiArchImplicit | pkgCache::Flag::ArchSpecific) == false)
+ return false;
+ }
+ pkgCache::VerIterator V = PkgA.VersionList();
+ Dynamic<pkgCache::VerIterator> DynV(V);
+ for (; V.end() == false; ++V)
+ {
+ if (NewProvides(V, Pkg, V->VerStr, pkgCache::Flag::MultiArchImplicit | pkgCache::Flag::ArchSpecific) == false)
+ return false;
+ }
+ }
+ }
+ }
+ return true;
+}
+ /*}}}*/
+// CacheGenerator::AddImplicitDepends /*{{{*/
+bool pkgCacheGenerator::AddImplicitDepends(pkgCache::GrpIterator &G,
+ pkgCache::PkgIterator &P,
+ pkgCache::VerIterator &V)
+{
+ APT::StringView Arch = P.Arch() == NULL ? "" : P.Arch();
+ Dynamic<APT::StringView> DynArch(Arch);
+ map_pointer_t *OldDepLast = NULL;
+ /* MultiArch handling introduces a lot of implicit Dependencies:
+ - MultiArch: same → Co-Installable if they have the same version
+ - All others conflict with all other group members */
+ bool const coInstall = ((V->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same);
+ pkgCache::PkgIterator D = G.PackageList();
+ Dynamic<pkgCache::PkgIterator> DynD(D);
+ map_stringitem_t const VerStrIdx = V->VerStr;
+ for (; D.end() != true; D = G.NextPkg(D))
+ {
+ if (Arch == D.Arch() || D->VersionList == 0)
+ continue;
+ /* We allow only one installed arch at the time
+ per group, therefore each group member conflicts
+ with all other group members */
+ if (coInstall == true)
+ {
+ // Replaces: ${self}:other ( << ${binary:Version})
+ NewDepends(D, V, VerStrIdx,
+ pkgCache::Dep::Less | pkgCache::Dep::MultiArchImplicit, pkgCache::Dep::Replaces,
+ OldDepLast);
+ // Breaks: ${self}:other (!= ${binary:Version})
+ NewDepends(D, V, VerStrIdx,
+ pkgCache::Dep::NotEquals | pkgCache::Dep::MultiArchImplicit, pkgCache::Dep::DpkgBreaks,
+ OldDepLast);
+ } else {
+ // Conflicts: ${self}:other
+ NewDepends(D, V, 0,
+ pkgCache::Dep::NoOp | pkgCache::Dep::MultiArchImplicit, pkgCache::Dep::Conflicts,
+ OldDepLast);
+ }
+ }
+ return true;
+}
+bool pkgCacheGenerator::AddImplicitDepends(pkgCache::VerIterator &V,
+ pkgCache::PkgIterator &D)
+{
+ /* MultiArch handling introduces a lot of implicit Dependencies:
+ - MultiArch: same → Co-Installable if they have the same version
+ - All others conflict with all other group members */
+ map_pointer_t *OldDepLast = NULL;
+ bool const coInstall = ((V->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same);
+ if (coInstall == true)
+ {
+ map_stringitem_t const VerStrIdx = V->VerStr;
+ // Replaces: ${self}:other ( << ${binary:Version})
+ NewDepends(D, V, VerStrIdx,
+ pkgCache::Dep::Less | pkgCache::Dep::MultiArchImplicit, pkgCache::Dep::Replaces,
+ OldDepLast);
+ // Breaks: ${self}:other (!= ${binary:Version})
+ NewDepends(D, V, VerStrIdx,
+ pkgCache::Dep::NotEquals | pkgCache::Dep::MultiArchImplicit, pkgCache::Dep::DpkgBreaks,
+ OldDepLast);
+ } else {
+ // Conflicts: ${self}:other
+ NewDepends(D, V, 0,
+ pkgCache::Dep::NoOp | pkgCache::Dep::MultiArchImplicit, pkgCache::Dep::Conflicts,
+ OldDepLast);
+ }
+ return true;
+}
+
+ /*}}}*/
+// CacheGenerator::NewFileVer - Create a new File<->Version association /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgCacheGenerator::NewFileVer(pkgCache::VerIterator &Ver,
+ ListParser &List)
+{
+ if (CurrentFile == 0)
+ return true;
+
+ // Get a structure
+ map_pointer_t const VerFile = AllocateInMap(sizeof(pkgCache::VerFile));
+ if (VerFile == 0)
+ return false;
+
+ pkgCache::VerFileIterator VF(Cache,Cache.VerFileP + VerFile);
+ VF->File = CurrentFile - Cache.PkgFileP;
+
+ // Link it to the end of the list
+ map_pointer_t *Last = &Ver->FileList;
+ for (pkgCache::VerFileIterator V = Ver.FileList(); V.end() == false; ++V)
+ Last = &V->NextFile;
+ VF->NextFile = *Last;
+ *Last = VF.Index();
+
+ VF->Offset = List.Offset();
+ VF->Size = List.Size();
+ if (Cache.HeaderP->MaxVerFileSize < VF->Size)
+ Cache.HeaderP->MaxVerFileSize = VF->Size;
+ Cache.HeaderP->VerFileCount++;
+
+ return true;
+}
+ /*}}}*/
+// CacheGenerator::NewVersion - Create a new Version /*{{{*/
+// ---------------------------------------------------------------------
+/* This puts a version structure in the linked list */
+map_pointer_t pkgCacheGenerator::NewVersion(pkgCache::VerIterator &Ver,
+ APT::StringView const &VerStr,
+ map_pointer_t const ParentPkg,
+ unsigned short const Hash,
+ map_pointer_t const Next)
+{
+ // Get a structure
+ map_pointer_t const Version = AllocateInMap(sizeof(pkgCache::Version));
+ if (Version == 0)
+ return 0;
+
+ // Fill it in
+ Ver = pkgCache::VerIterator(Cache,Cache.VerP + Version);
+ //Dynamic<pkgCache::VerIterator> DynV(Ver); // caller MergeListVersion already takes care of it
+ Ver->NextVer = Next;
+ Ver->ParentPkg = ParentPkg;
+ Ver->Hash = Hash;
+ Ver->ID = Cache.HeaderP->VersionCount++;
+
+ // try to find the version string in the group for reuse
+ pkgCache::PkgIterator Pkg = Ver.ParentPkg();
+ pkgCache::GrpIterator Grp = Pkg.Group();
+ if (Pkg.end() == false && Grp.end() == false)
+ {
+ for (pkgCache::PkgIterator P = Grp.PackageList(); P.end() == false; P = Grp.NextPkg(P))
+ {
+ if (Pkg == P)
+ continue;
+ for (pkgCache::VerIterator V = P.VersionList(); V.end() == false; ++V)
+ {
+ int const cmp = strncmp(V.VerStr(), VerStr.data(), VerStr.length());
+ if (cmp == 0 && V.VerStr()[VerStr.length()] == '\0')
+ {
+ Ver->VerStr = V->VerStr;
+ return Version;
+ }
+ else if (cmp < 0)
+ break;
+ }
+ }
+ }
+ // haven't found the version string, so create
+ map_stringitem_t const idxVerStr = StoreString(VERSIONNUMBER, VerStr);
+ if (unlikely(idxVerStr == 0))
+ return 0;
+ Ver->VerStr = idxVerStr;
+ return Version;
+}
+ /*}}}*/
+// CacheGenerator::NewFileDesc - Create a new File<->Desc association /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgCacheGenerator::NewFileDesc(pkgCache::DescIterator &Desc,
+ ListParser &List)
+{
+ if (CurrentFile == 0)
+ return true;
+
+ // Get a structure
+ map_pointer_t const DescFile = AllocateInMap(sizeof(pkgCache::DescFile));
+ if (DescFile == 0)
+ return false;
+
+ pkgCache::DescFileIterator DF(Cache,Cache.DescFileP + DescFile);
+ DF->File = CurrentFile - Cache.PkgFileP;
+
+ // Link it to the end of the list
+ map_pointer_t *Last = &Desc->FileList;
+ for (pkgCache::DescFileIterator D = Desc.FileList(); D.end() == false; ++D)
+ Last = &D->NextFile;
+
+ DF->NextFile = *Last;
+ *Last = DF.Index();
+
+ DF->Offset = List.Offset();
+ DF->Size = List.Size();
+ if (Cache.HeaderP->MaxDescFileSize < DF->Size)
+ Cache.HeaderP->MaxDescFileSize = DF->Size;
+ Cache.HeaderP->DescFileCount++;
+
+ return true;
+}
+ /*}}}*/
+// CacheGenerator::NewDescription - Create a new Description /*{{{*/
+// ---------------------------------------------------------------------
+/* This puts a description structure in the linked list */
+map_pointer_t pkgCacheGenerator::NewDescription(pkgCache::DescIterator &Desc,
+ const string &Lang,
+ APT::StringView md5sum,
+ map_stringitem_t const idxmd5str)
+{
+ // Get a structure
+ map_pointer_t const Description = AllocateInMap(sizeof(pkgCache::Description));
+ if (Description == 0)
+ return 0;
+
+ // Fill it in
+ Desc = pkgCache::DescIterator(Cache,Cache.DescP + Description);
+ Desc->ID = Cache.HeaderP->DescriptionCount++;
+ map_stringitem_t const idxlanguage_code = StoreString(MIXED, Lang);
+ if (unlikely(idxlanguage_code == 0))
+ return 0;
+ Desc->language_code = idxlanguage_code;
+
+ if (idxmd5str != 0)
+ Desc->md5sum = idxmd5str;
+ else
+ {
+ map_stringitem_t const idxmd5sum = WriteStringInMap(md5sum);
+ if (unlikely(idxmd5sum == 0))
+ return 0;
+ Desc->md5sum = idxmd5sum;
+ }
+
+ return Description;
+}
+ /*}}}*/
+// CacheGenerator::NewDepends - Create a dependency element /*{{{*/
+// ---------------------------------------------------------------------
+/* This creates a dependency element in the tree. It is linked to the
+ version and to the package that it is pointing to. */
+bool pkgCacheGenerator::NewDepends(pkgCache::PkgIterator &Pkg,
+ pkgCache::VerIterator &Ver,
+ map_pointer_t const Version,
+ uint8_t const Op,
+ uint8_t const Type,
+ map_pointer_t* &OldDepLast)
+{
+ void const * const oldMap = Map.Data();
+ // Get a structure
+ map_pointer_t const Dependency = AllocateInMap(sizeof(pkgCache::Dependency));
+ if (unlikely(Dependency == 0))
+ return false;
+
+ bool isDuplicate = false;
+ map_pointer_t DependencyData = 0;
+ map_pointer_t PreviousData = 0;
+ if (Pkg->RevDepends != 0)
+ {
+ pkgCache::Dependency const * const L = Cache.DepP + Pkg->RevDepends;
+ DependencyData = L->DependencyData;
+ do {
+ pkgCache::DependencyData const * const D = Cache.DepDataP + DependencyData;
+ if (Version > D->Version)
+ break;
+ if (D->Version == Version && D->Type == Type && D->CompareOp == Op)
+ {
+ isDuplicate = true;
+ break;
+ }
+ PreviousData = DependencyData;
+ DependencyData = D->NextData;
+ } while (DependencyData != 0);
+ }
+
+ if (isDuplicate == false)
+ {
+ DependencyData = AllocateInMap(sizeof(pkgCache::DependencyData));
+ if (unlikely(DependencyData == 0))
+ return false;
+ }
+
+ pkgCache::Dependency * Link = Cache.DepP + Dependency;
+ Link->ParentVer = Ver.Index();
+ Link->DependencyData = DependencyData;
+ Link->ID = Cache.HeaderP->DependsCount++;
+
+ pkgCache::DepIterator Dep(Cache, Link);
+ if (isDuplicate == false)
+ {
+ Dep->Type = Type;
+ Dep->CompareOp = Op;
+ Dep->Version = Version;
+ Dep->Package = Pkg.Index();
+ ++Cache.HeaderP->DependsDataCount;
+ if (PreviousData != 0)
+ {
+ pkgCache::DependencyData * const D = Cache.DepDataP + PreviousData;
+ Dep->NextData = D->NextData;
+ D->NextData = DependencyData;
+ }
+ else if (Pkg->RevDepends != 0)
+ {
+ pkgCache::Dependency const * const D = Cache.DepP + Pkg->RevDepends;
+ Dep->NextData = D->DependencyData;
+ }
+ }
+
+ if (isDuplicate == true || PreviousData != 0)
+ {
+ pkgCache::Dependency * const L = Cache.DepP + Pkg->RevDepends;
+ Link->NextRevDepends = L->NextRevDepends;
+ L->NextRevDepends = Dependency;
+ }
+ else
+ {
+ Link->NextRevDepends = Pkg->RevDepends;
+ Pkg->RevDepends = Dependency;
+ }
+
+
+ // Do we know where to link the Dependency to?
+ if (OldDepLast == NULL)
+ {
+ OldDepLast = &Ver->DependsList;
+ for (pkgCache::DepIterator D = Ver.DependsList(); D.end() == false; ++D)
+ OldDepLast = &D->NextDepends;
+ } else if (oldMap != Map.Data())
+ OldDepLast += (map_pointer_t const * const) Map.Data() - (map_pointer_t const * const) oldMap;
+
+ Dep->NextDepends = *OldDepLast;
+ *OldDepLast = Dependency;
+ OldDepLast = &Dep->NextDepends;
+ return true;
+}
+ /*}}}*/
+// ListParser::NewDepends - Create the environment for a new dependency /*{{{*/
+// ---------------------------------------------------------------------
+/* This creates a Group and the Package to link this dependency to if
+ needed and handles also the caching of the old endpoint */
+bool pkgCacheListParser::NewDepends(pkgCache::VerIterator &Ver,
+ StringView PackageName,
+ StringView Arch,
+ StringView Version,
+ uint8_t const Op,
+ uint8_t const Type)
+{
+ pkgCache::GrpIterator Grp;
+ Dynamic<pkgCache::GrpIterator> DynGrp(Grp);
+ Dynamic<StringView> DynPackageName(PackageName);
+ Dynamic<StringView> DynArch(Arch);
+ Dynamic<StringView> DynVersion(Version);
+ if (unlikely(Owner->NewGroup(Grp, PackageName) == false))
+ return false;
+
+ map_stringitem_t idxVersion = 0;
+ if (Version.empty() == false)
+ {
+ int const CmpOp = Op & 0x0F;
+ // =-deps are used (79:1) for lockstep on same-source packages (e.g. data-packages)
+ if (CmpOp == pkgCache::Dep::Equals && Version == Ver.VerStr())
+ idxVersion = Ver->VerStr;
+
+ if (idxVersion == 0)
+ {
+ idxVersion = StoreString(pkgCacheGenerator::VERSIONNUMBER, Version);
+ if (unlikely(idxVersion == 0))
+ return false;
+ }
+ }
+
+ bool const isNegative = (Type == pkgCache::Dep::DpkgBreaks ||
+ Type == pkgCache::Dep::Conflicts ||
+ Type == pkgCache::Dep::Replaces);
+
+ pkgCache::PkgIterator Pkg;
+ Dynamic<pkgCache::PkgIterator> DynPkg(Pkg);
+ if (isNegative == false || (Op & pkgCache::Dep::ArchSpecific) == pkgCache::Dep::ArchSpecific || Grp->FirstPackage == 0)
+ {
+ // Locate the target package
+ Pkg = Grp.FindPkg(Arch);
+ if (Pkg.end() == true) {
+ if (unlikely(Owner->NewPackage(Pkg, PackageName, Arch) == false))
+ return false;
+ }
+
+ /* Caching the old end point speeds up generation substantially */
+ if (OldDepVer != Ver) {
+ OldDepLast = NULL;
+ OldDepVer = Ver;
+ }
+
+ return Owner->NewDepends(Pkg, Ver, idxVersion, Op, Type, OldDepLast);
+ }
+ else
+ {
+ /* Caching the old end point speeds up generation substantially */
+ if (OldDepVer != Ver) {
+ OldDepLast = NULL;
+ OldDepVer = Ver;
+ }
+
+ for (Pkg = Grp.PackageList(); Pkg.end() == false; Pkg = Grp.NextPkg(Pkg))
+ {
+ if (Owner->NewDepends(Pkg, Ver, idxVersion, Op, Type, OldDepLast) == false)
+ return false;
+ }
+ }
+ return true;
+}
+ /*}}}*/
+// ListParser::NewProvides - Create a Provides element /*{{{*/
+bool pkgCacheListParser::NewProvides(pkgCache::VerIterator &Ver,
+ StringView PkgName,
+ StringView PkgArch,
+ StringView Version,
+ uint8_t const Flags)
+{
+ pkgCache const &Cache = Owner->Cache;
+ Dynamic<StringView> DynPkgName(PkgName);
+ Dynamic<StringView> DynArch(PkgArch);
+ Dynamic<StringView> DynVersion(Version);
+
+ // We do not add self referencing provides
+ if (Ver.ParentPkg().Name() == PkgName && (PkgArch == Ver.ParentPkg().Arch() ||
+ (PkgArch == "all" && strcmp((Cache.StrP + Cache.HeaderP->Architecture), Ver.ParentPkg().Arch()) == 0)) &&
+ (Version.empty() || Version == Ver.VerStr()))
+ return true;
+
+ // Locate the target package
+ pkgCache::PkgIterator Pkg;
+ Dynamic<pkgCache::PkgIterator> DynPkg(Pkg);
+ if (unlikely(Owner->NewPackage(Pkg,PkgName, PkgArch) == false))
+ return false;
+
+ map_stringitem_t idxProvideVersion = 0;
+ if (Version.empty() == false) {
+ idxProvideVersion = StoreString(pkgCacheGenerator::VERSIONNUMBER, Version);
+ if (unlikely(idxProvideVersion == 0))
+ return false;
+ }
+ return Owner->NewProvides(Ver, Pkg, idxProvideVersion, Flags);
+}
+bool pkgCacheGenerator::NewProvides(pkgCache::VerIterator &Ver,
+ pkgCache::PkgIterator &Pkg,
+ map_pointer_t const ProvideVersion,
+ uint8_t const Flags)
+{
+ // Get a structure
+ map_pointer_t const Provides = AllocateInMap(sizeof(pkgCache::Provides));
+ if (unlikely(Provides == 0))
+ return false;
+ ++Cache.HeaderP->ProvidesCount;
+
+ // Fill it in
+ pkgCache::PrvIterator Prv(Cache,Cache.ProvideP + Provides,Cache.PkgP);
+ Prv->Version = Ver.Index();
+ Prv->ProvideVersion = ProvideVersion;
+ Prv->Flags = Flags;
+ Prv->NextPkgProv = Ver->ProvidesList;
+ Ver->ProvidesList = Prv.Index();
+
+ // Link it to the package
+ Prv->ParentPkg = Pkg.Index();
+ Prv->NextProvides = Pkg->ProvidesList;
+ Pkg->ProvidesList = Prv.Index();
+ return true;
+}
+ /*}}}*/
+// ListParser::NewProvidesAllArch - add provides for all architectures /*{{{*/
+bool pkgCacheListParser::NewProvidesAllArch(pkgCache::VerIterator &Ver, StringView Package,
+ StringView Version, uint8_t const Flags) {
+ pkgCache &Cache = Owner->Cache;
+ pkgCache::GrpIterator Grp = Cache.FindGrp(Package);
+ Dynamic<pkgCache::GrpIterator> DynGrp(Grp);
+ Dynamic<StringView> DynPackage(Package);
+ Dynamic<StringView> DynVersion(Version);
+
+ if (Grp.end() == true)
+ return NewProvides(Ver, Package, Cache.NativeArch(), Version, Flags);
+ else
+ {
+ map_stringitem_t idxProvideVersion = 0;
+ if (Version.empty() == false) {
+ idxProvideVersion = StoreString(pkgCacheGenerator::VERSIONNUMBER, Version);
+ if (unlikely(idxProvideVersion == 0))
+ return false;
+ }
+
+ bool const isImplicit = (Flags & pkgCache::Flag::MultiArchImplicit) == pkgCache::Flag::MultiArchImplicit;
+ bool const isArchSpecific = (Flags & pkgCache::Flag::ArchSpecific) == pkgCache::Flag::ArchSpecific;
+ pkgCache::PkgIterator OwnerPkg = Ver.ParentPkg();
+ Dynamic<pkgCache::PkgIterator> DynOwnerPkg(OwnerPkg);
+ pkgCache::PkgIterator Pkg;
+ Dynamic<pkgCache::PkgIterator> DynPkg(Pkg);
+ for (Pkg = Grp.PackageList(); Pkg.end() == false; Pkg = Grp.NextPkg(Pkg))
+ {
+ if (isImplicit && OwnerPkg == Pkg)
+ continue;
+ if (isArchSpecific == false && APT::Configuration::checkArchitecture(OwnerPkg.Arch()) == false)
+ continue;
+ if (Owner->NewProvides(Ver, Pkg, idxProvideVersion, Flags) == false)
+ return false;
+ }
+ }
+ return true;
+}
+ /*}}}*/
+bool pkgCacheListParser::SameVersion(unsigned short const Hash, /*{{{*/
+ pkgCache::VerIterator const &Ver)
+{
+ return Hash == Ver->Hash;
+}
+ /*}}}*/
+// CacheGenerator::SelectReleaseFile - Select the current release file the indexes belong to /*{{{*/
+bool pkgCacheGenerator::SelectReleaseFile(const string &File,const string &Site,
+ unsigned long Flags)
+{
+ if (File.empty() && Site.empty())
+ {
+ CurrentRlsFile = NULL;
+ return true;
+ }
+
+ // Get some space for the structure
+ map_pointer_t const idxFile = AllocateInMap(sizeof(*CurrentRlsFile));
+ if (unlikely(idxFile == 0))
+ return false;
+ CurrentRlsFile = Cache.RlsFileP + idxFile;
+
+ // Fill it in
+ map_stringitem_t const idxFileName = WriteStringInMap(File);
+ map_stringitem_t const idxSite = StoreString(MIXED, Site);
+ if (unlikely(idxFileName == 0 || idxSite == 0))
+ return false;
+ CurrentRlsFile->FileName = idxFileName;
+ CurrentRlsFile->Site = idxSite;
+ CurrentRlsFile->NextFile = Cache.HeaderP->RlsFileList;
+ CurrentRlsFile->Flags = Flags;
+ CurrentRlsFile->ID = Cache.HeaderP->ReleaseFileCount;
+ RlsFileName = File;
+ Cache.HeaderP->RlsFileList = CurrentRlsFile - Cache.RlsFileP;
+ Cache.HeaderP->ReleaseFileCount++;
+
+ return true;
+}
+ /*}}}*/
+// CacheGenerator::SelectFile - Select the current file being parsed /*{{{*/
+// ---------------------------------------------------------------------
+/* This is used to select which file is to be associated with all newly
+ added versions. The caller is responsible for setting the IMS fields. */
+bool pkgCacheGenerator::SelectFile(std::string const &File,
+ pkgIndexFile const &Index,
+ std::string const &Architecture,
+ std::string const &Component,
+ unsigned long const Flags)
+{
+ // Get some space for the structure
+ map_pointer_t const idxFile = AllocateInMap(sizeof(*CurrentFile));
+ if (unlikely(idxFile == 0))
+ return false;
+ CurrentFile = Cache.PkgFileP + idxFile;
+
+ // Fill it in
+ map_stringitem_t const idxFileName = WriteStringInMap(File);
+ if (unlikely(idxFileName == 0))
+ return false;
+ CurrentFile->FileName = idxFileName;
+ CurrentFile->NextFile = Cache.HeaderP->FileList;
+ CurrentFile->ID = Cache.HeaderP->PackageFileCount;
+ map_stringitem_t const idxIndexType = StoreString(MIXED, Index.GetType()->Label);
+ if (unlikely(idxIndexType == 0))
+ return false;
+ CurrentFile->IndexType = idxIndexType;
+ if (Architecture.empty())
+ CurrentFile->Architecture = 0;
+ else
+ {
+ map_stringitem_t const arch = StoreString(pkgCacheGenerator::MIXED, Architecture);
+ if (unlikely(arch == 0))
+ return false;
+ CurrentFile->Architecture = arch;
+ }
+ map_stringitem_t const component = StoreString(pkgCacheGenerator::MIXED, Component);
+ if (unlikely(component == 0))
+ return false;
+ CurrentFile->Component = component;
+ CurrentFile->Flags = Flags;
+ if (CurrentRlsFile != NULL)
+ CurrentFile->Release = CurrentRlsFile - Cache.RlsFileP;
+ else
+ CurrentFile->Release = 0;
+ PkgFileName = File;
+ Cache.HeaderP->FileList = CurrentFile - Cache.PkgFileP;
+ Cache.HeaderP->PackageFileCount++;
+
+ if (Progress != 0)
+ Progress->SubProgress(Index.Size());
+ return true;
+}
+ /*}}}*/
+// CacheGenerator::WriteUniqueString - Insert a unique string /*{{{*/
+// ---------------------------------------------------------------------
+/* This is used to create handles to strings. Given the same text it
+ always returns the same number */
+map_stringitem_t pkgCacheGenerator::StoreString(enum StringType const type, const char *S,
+ unsigned int Size)
+{
+ auto strings = &strMixed;
+ switch(type) {
+ case MIXED: strings = &strMixed; break;
+ case PKGNAME: strings = &strPkgNames; break;
+ case VERSIONNUMBER: strings = &strVersions; break;
+ case SECTION: strings = &strSections; break;
+ default: _error->Fatal("Unknown enum type used for string storage of '%.*s'", Size, S); return 0;
+ }
+
+ auto const item = strings->find({S, Size, nullptr, 0});
+ if (item != strings->end())
+ return item->item;
+
+ map_stringitem_t const idxString = WriteStringInMap(S,Size);
+ strings->insert({nullptr, Size, this, idxString});
+ return idxString;
+}
+ /*}}}*/
+// CheckValidity - Check that a cache is up-to-date /*{{{*/
+// ---------------------------------------------------------------------
+/* This just verifies that each file in the list of index files exists,
+ has matching attributes with the cache and the cache does not have
+ any extra files. */
+class APT_HIDDEN ScopedErrorRevert {
+public:
+ ScopedErrorRevert() { _error->PushToStack(); }
+ ~ScopedErrorRevert() { _error->RevertToStack(); }
+};
+static bool CheckValidity(FileFd &CacheFile, std::string const &CacheFileName,
+ pkgSourceList &List,
+ FileIterator const Start,
+ FileIterator const End,
+ MMap **OutMap = 0,
+ pkgCache **OutCache = 0)
+{
+ if (CacheFileName.empty())
+ return false;
+ ScopedErrorRevert ser;
+
+ bool const Debug = _config->FindB("Debug::pkgCacheGen", false);
+ // No file, certainly invalid
+ if (CacheFile.Open(CacheFileName, FileFd::ReadOnly, FileFd::None) == false)
+ {
+ if (Debug == true)
+ std::clog << "CacheFile " << CacheFileName << " doesn't exist" << std::endl;
+ return false;
+ }
+
+ if (List.GetLastModifiedTime() > CacheFile.ModificationTime())
+ {
+ if (Debug == true)
+ std::clog << "sources.list is newer than the cache" << std::endl;
+ return false;
+ }
+
+ // Map it
+ std::unique_ptr<MMap> Map(new MMap(CacheFile,0));
+ if (unlikely(Map->validData()) == false)
+ return false;
+ std::unique_ptr<pkgCache> CacheP(new pkgCache(Map.get()));
+ pkgCache &Cache = *CacheP.get();
+ if (_error->PendingError() || Map->Size() == 0)
+ {
+ if (Debug == true)
+ std::clog << "Errors are pending or Map is empty() for " << CacheFileName << std::endl;
+ return false;
+ }
+
+ std::unique_ptr<bool[]> RlsVisited(new bool[Cache.HeaderP->ReleaseFileCount]);
+ memset(RlsVisited.get(),0,sizeof(RlsVisited[0])*Cache.HeaderP->ReleaseFileCount);
+ std::vector<pkgIndexFile *> Files;
+ for (pkgSourceList::const_iterator i = List.begin(); i != List.end(); ++i)
+ {
+ if (Debug == true)
+ std::clog << "Checking RlsFile " << (*i)->Describe() << ": ";
+ pkgCache::RlsFileIterator const RlsFile = (*i)->FindInCache(Cache, true);
+ if (RlsFile.end() == true)
+ {
+ if (Debug == true)
+ std::clog << "FindInCache returned end-Pointer" << std::endl;
+ return false;
+ }
+
+ RlsVisited[RlsFile->ID] = true;
+ if (Debug == true)
+ std::clog << "with ID " << RlsFile->ID << " is valid" << std::endl;
+
+ std::vector <pkgIndexFile *> const * const Indexes = (*i)->GetIndexFiles();
+ std::copy_if(Indexes->begin(), Indexes->end(), std::back_inserter(Files),
+ [](pkgIndexFile const * const I) { return I->HasPackages(); });
+ }
+ for (unsigned I = 0; I != Cache.HeaderP->ReleaseFileCount; ++I)
+ if (RlsVisited[I] == false)
+ {
+ if (Debug == true)
+ std::clog << "RlsFile with ID" << I << " wasn't visited" << std::endl;
+ return false;
+ }
+
+ std::copy(Start, End, std::back_inserter(Files));
+
+ /* Now we check every index file, see if it is in the cache,
+ verify the IMS data and check that it is on the disk too.. */
+ std::unique_ptr<bool[]> Visited(new bool[Cache.HeaderP->PackageFileCount]);
+ memset(Visited.get(),0,sizeof(Visited[0])*Cache.HeaderP->PackageFileCount);
+ for (std::vector<pkgIndexFile *>::const_reverse_iterator PkgFile = Files.rbegin(); PkgFile != Files.rend(); ++PkgFile)
+ {
+ if (Debug == true)
+ std::clog << "Checking PkgFile " << (*PkgFile)->Describe() << ": ";
+ if ((*PkgFile)->Exists() == false)
+ {
+ if (Debug == true)
+ std::clog << "file doesn't exist" << std::endl;
+ continue;
+ }
+
+ // FindInCache is also expected to do an IMS check.
+ pkgCache::PkgFileIterator File = (*PkgFile)->FindInCache(Cache);
+ if (File.end() == true)
+ {
+ if (Debug == true)
+ std::clog << "FindInCache returned end-Pointer" << std::endl;
+ return false;
+ }
+
+ Visited[File->ID] = true;
+ if (Debug == true)
+ std::clog << "with ID " << File->ID << " is valid" << std::endl;
+ }
+
+ for (unsigned I = 0; I != Cache.HeaderP->PackageFileCount; I++)
+ if (Visited[I] == false)
+ {
+ if (Debug == true)
+ std::clog << "PkgFile with ID" << I << " wasn't visited" << std::endl;
+ return false;
+ }
+
+ if (_error->PendingError() == true)
+ {
+ if (Debug == true)
+ {
+ std::clog << "Validity failed because of pending errors:" << std::endl;
+ _error->DumpErrors(std::clog, GlobalError::DEBUG, false);
+ }
+ return false;
+ }
+
+ if (OutMap != 0)
+ *OutMap = Map.release();
+ if (OutCache != 0)
+ *OutCache = CacheP.release();
+ return true;
+}
+ /*}}}*/
+// ComputeSize - Compute the total size of a bunch of files /*{{{*/
+// ---------------------------------------------------------------------
+/* Size is kind of an abstract notion that is only used for the progress
+ meter */
+static map_filesize_t ComputeSize(pkgSourceList const * const List, FileIterator Start,FileIterator End)
+{
+ map_filesize_t TotalSize = 0;
+ if (List != NULL)
+ {
+ for (pkgSourceList::const_iterator i = List->begin(); i != List->end(); ++i)
+ {
+ std::vector <pkgIndexFile *> *Indexes = (*i)->GetIndexFiles();
+ for (std::vector<pkgIndexFile *>::const_iterator j = Indexes->begin(); j != Indexes->end(); ++j)
+ if ((*j)->HasPackages() == true)
+ TotalSize += (*j)->Size();
+ }
+ }
+
+ for (; Start < End; ++Start)
+ {
+ if ((*Start)->HasPackages() == false)
+ continue;
+ TotalSize += (*Start)->Size();
+ }
+ return TotalSize;
+}
+ /*}}}*/
+// BuildCache - Merge the list of index files into the cache /*{{{*/
+static bool BuildCache(pkgCacheGenerator &Gen,
+ OpProgress * const Progress,
+ map_filesize_t &CurrentSize,map_filesize_t TotalSize,
+ pkgSourceList const * const List,
+ FileIterator const Start, FileIterator const End)
+{
+ bool mergeFailure = false;
+
+ auto const indexFileMerge = [&](pkgIndexFile * const I) {
+ if (I->HasPackages() == false || mergeFailure)
+ return;
+
+ if (I->Exists() == false)
+ return;
+
+ if (I->FindInCache(Gen.GetCache()).end() == false)
+ {
+ _error->Warning("Duplicate sources.list entry %s",
+ I->Describe().c_str());
+ return;
+ }
+
+ map_filesize_t const Size = I->Size();
+ if (Progress != NULL)
+ Progress->OverallProgress(CurrentSize, TotalSize, Size, _("Reading package lists"));
+ CurrentSize += Size;
+
+ if (I->Merge(Gen,Progress) == false)
+ mergeFailure = true;
+ };
+
+ if (List != NULL)
+ {
+ for (pkgSourceList::const_iterator i = List->begin(); i != List->end(); ++i)
+ {
+ if ((*i)->FindInCache(Gen.GetCache(), false).end() == false)
+ {
+ _error->Warning("Duplicate sources.list entry %s",
+ (*i)->Describe().c_str());
+ continue;
+ }
+
+ if ((*i)->Merge(Gen, Progress) == false)
+ return false;
+
+ std::vector <pkgIndexFile *> *Indexes = (*i)->GetIndexFiles();
+ if (Indexes != NULL)
+ std::for_each(Indexes->begin(), Indexes->end(), indexFileMerge);
+ if (mergeFailure)
+ return false;
+ }
+ }
+
+ if (Start != End)
+ {
+ Gen.SelectReleaseFile("", "");
+ std::for_each(Start, End, indexFileMerge);
+ if (mergeFailure)
+ return false;
+ }
+ return true;
+}
+ /*}}}*/
+// CacheGenerator::MakeStatusCache - Construct the status cache /*{{{*/
+// ---------------------------------------------------------------------
+/* This makes sure that the status cache (the cache that has all
+ index files from the sources list and all local ones) is ready
+ to be mmaped. If OutMap is not zero then a MMap object representing
+ the cache will be stored there. This is pretty much mandetory if you
+ are using AllowMem. AllowMem lets the function be run as non-root
+ where it builds the cache 'fast' into a memory buffer. */
+static DynamicMMap* CreateDynamicMMap(FileFd * const CacheF, unsigned long Flags)
+{
+ map_filesize_t const MapStart = _config->FindI("APT::Cache-Start", 24*1024*1024);
+ map_filesize_t const MapGrow = _config->FindI("APT::Cache-Grow", 1*1024*1024);
+ map_filesize_t const MapLimit = _config->FindI("APT::Cache-Limit", 0);
+ Flags |= MMap::Moveable;
+ if (_config->FindB("APT::Cache-Fallback", false) == true)
+ Flags |= MMap::Fallback;
+ if (CacheF != NULL)
+ return new DynamicMMap(*CacheF, Flags, MapStart, MapGrow, MapLimit);
+ else
+ return new DynamicMMap(Flags, MapStart, MapGrow, MapLimit);
+}
+static bool writeBackMMapToFile(pkgCacheGenerator * const Gen, DynamicMMap * const Map,
+ std::string const &FileName)
+{
+ FileFd SCacheF(FileName, FileFd::WriteAtomic);
+ if (SCacheF.IsOpen() == false || SCacheF.Failed())
+ return false;
+
+ fchmod(SCacheF.Fd(),0644);
+
+ // Write out the main data
+ if (SCacheF.Write(Map->Data(),Map->Size()) == false)
+ return _error->Error(_("IO Error saving source cache"));
+
+ // Write out the proper header
+ Gen->GetCache().HeaderP->Dirty = false;
+ Gen->GetCache().HeaderP->CacheFileSize = Gen->GetCache().CacheHash();
+ if (SCacheF.Seek(0) == false ||
+ SCacheF.Write(Map->Data(),sizeof(*Gen->GetCache().HeaderP)) == false)
+ return _error->Error(_("IO Error saving source cache"));
+ Gen->GetCache().HeaderP->Dirty = true;
+ return true;
+}
+static bool loadBackMMapFromFile(std::unique_ptr<pkgCacheGenerator> &Gen,
+ std::unique_ptr<DynamicMMap> &Map, OpProgress * const Progress, FileFd &CacheF)
+{
+ Map.reset(CreateDynamicMMap(NULL, 0));
+ if (unlikely(Map->validData()) == false)
+ return false;
+ if (CacheF.IsOpen() == false || CacheF.Seek(0) == false || CacheF.Failed())
+ return false;
+ _error->PushToStack();
+ map_pointer_t const alloc = Map->RawAllocate(CacheF.Size());
+ bool const newError = _error->PendingError();
+ _error->MergeWithStack();
+ if (alloc == 0 && newError)
+ return false;
+ if (CacheF.Read((unsigned char *)Map->Data() + alloc, CacheF.Size()) == false)
+ return false;
+ Gen.reset(new pkgCacheGenerator(Map.get(),Progress));
+ return Gen->Start();
+}
+bool pkgMakeStatusCache(pkgSourceList &List,OpProgress &Progress,
+ MMap **OutMap, bool AllowMem)
+ { return pkgCacheGenerator::MakeStatusCache(List, &Progress, OutMap, AllowMem); }
+bool pkgCacheGenerator::MakeStatusCache(pkgSourceList &List,OpProgress *Progress,
+ MMap **OutMap,bool)
+{
+ return pkgCacheGenerator::MakeStatusCache(List, Progress, OutMap, nullptr, true);
+}
+bool pkgCacheGenerator::MakeStatusCache(pkgSourceList &List,OpProgress *Progress,
+ MMap **OutMap,pkgCache **OutCache, bool)
+{
+ // FIXME: deprecate the ignored AllowMem parameter
+ bool const Debug = _config->FindB("Debug::pkgCacheGen", false);
+
+ std::vector<pkgIndexFile *> Files;
+ if (_system->AddStatusFiles(Files) == false)
+ return false;
+
+ // Decide if we can write to the files..
+ string const CacheFileName = _config->FindFile("Dir::Cache::pkgcache");
+ string const SrcCacheFileName = _config->FindFile("Dir::Cache::srcpkgcache");
+
+ // ensure the cache directory exists
+ if (CacheFileName.empty() == false || SrcCacheFileName.empty() == false)
+ {
+ string dir = _config->FindDir("Dir::Cache");
+ size_t const len = dir.size();
+ if (len > 5 && dir.find("/apt/", len - 6, 5) == len - 5)
+ dir = dir.substr(0, len - 5);
+ if (CacheFileName.empty() == false)
+ CreateDirectory(dir, flNotFile(CacheFileName));
+ if (SrcCacheFileName.empty() == false)
+ CreateDirectory(dir, flNotFile(SrcCacheFileName));
+ }
+
+ if (Progress != NULL)
+ Progress->OverallProgress(0,1,1,_("Reading package lists"));
+
+ bool pkgcache_fine = false;
+ bool srcpkgcache_fine = false;
+ bool volatile_fine = List.GetVolatileFiles().empty();
+ FileFd CacheFile;
+ if (CheckValidity(CacheFile, CacheFileName, List, Files.begin(), Files.end(), volatile_fine ? OutMap : NULL,
+ volatile_fine ? OutCache : NULL) == true)
+ {
+ if (Debug == true)
+ std::clog << "pkgcache.bin is valid - no need to build any cache" << std::endl;
+ pkgcache_fine = true;
+ srcpkgcache_fine = true;
+ }
+
+ FileFd SrcCacheFile;
+ if (pkgcache_fine == false)
+ {
+ if (CheckValidity(SrcCacheFile, SrcCacheFileName, List, Files.end(), Files.end()) == true)
+ {
+ if (Debug == true)
+ std::clog << "srcpkgcache.bin is valid - it can be reused" << std::endl;
+ srcpkgcache_fine = true;
+ }
+ }
+
+ if (volatile_fine == true && srcpkgcache_fine == true && pkgcache_fine == true)
+ {
+ if (Progress != NULL)
+ Progress->OverallProgress(1,1,1,_("Reading package lists"));
+ return true;
+ }
+
+ bool Writeable = false;
+ if (srcpkgcache_fine == false || pkgcache_fine == false)
+ {
+ if (CacheFileName.empty() == false)
+ Writeable = access(flNotFile(CacheFileName).c_str(),W_OK) == 0;
+ else if (SrcCacheFileName.empty() == false)
+ Writeable = access(flNotFile(SrcCacheFileName).c_str(),W_OK) == 0;
+
+ if (Debug == true)
+ std::clog << "Do we have write-access to the cache files? " << (Writeable ? "YES" : "NO") << std::endl;
+ }
+
+ // At this point we know we need to construct something, so get storage ready
+ std::unique_ptr<DynamicMMap> Map(CreateDynamicMMap(NULL, 0));
+ if (unlikely(Map->validData()) == false)
+ return false;
+ if (Debug == true)
+ std::clog << "Open memory Map (not filebased)" << std::endl;
+
+ std::unique_ptr<pkgCacheGenerator> Gen{nullptr};
+ map_filesize_t CurrentSize = 0;
+ std::vector<pkgIndexFile*> VolatileFiles = List.GetVolatileFiles();
+ map_filesize_t TotalSize = ComputeSize(NULL, VolatileFiles.begin(), VolatileFiles.end());
+ if (srcpkgcache_fine == true && pkgcache_fine == false)
+ {
+ if (Debug == true)
+ std::clog << "srcpkgcache.bin was valid - populate MMap with it" << std::endl;
+ if (loadBackMMapFromFile(Gen, Map, Progress, SrcCacheFile) == false)
+ return false;
+ srcpkgcache_fine = true;
+ TotalSize += ComputeSize(NULL, Files.begin(), Files.end());
+ }
+ else if (srcpkgcache_fine == false)
+ {
+ if (Debug == true)
+ std::clog << "srcpkgcache.bin is NOT valid - rebuild" << std::endl;
+ Gen.reset(new pkgCacheGenerator(Map.get(),Progress));
+ if (Gen->Start() == false)
+ return false;
+
+ TotalSize += ComputeSize(&List, Files.begin(),Files.end());
+ if (BuildCache(*Gen, Progress, CurrentSize, TotalSize, &List,
+ Files.end(),Files.end()) == false)
+ return false;
+
+ if (Writeable == true && SrcCacheFileName.empty() == false)
+ if (writeBackMMapToFile(Gen.get(), Map.get(), SrcCacheFileName) == false)
+ return false;
+ }
+
+ if (pkgcache_fine == false)
+ {
+ if (Debug == true)
+ std::clog << "Building status cache in pkgcache.bin now" << std::endl;
+ if (BuildCache(*Gen, Progress, CurrentSize, TotalSize, NULL,
+ Files.begin(), Files.end()) == false)
+ return false;
+
+ if (Writeable == true && CacheFileName.empty() == false)
+ if (writeBackMMapToFile(Gen.get(), Map.get(), CacheFileName) == false)
+ return false;
+ }
+
+ if (Debug == true)
+ std::clog << "Caches done. " << (volatile_fine ? "No volatile files, so we are done here." : "Now bring in the volatile files") << std::endl;
+
+ if (volatile_fine == false)
+ {
+ if (Gen == nullptr)
+ {
+ if (Debug == true)
+ std::clog << "Populate new MMap with cachefile contents" << std::endl;
+ if (loadBackMMapFromFile(Gen, Map, Progress, CacheFile) == false)
+ return false;
+ }
+
+ Files = List.GetVolatileFiles();
+ if (BuildCache(*Gen, Progress, CurrentSize, TotalSize, NULL,
+ Files.begin(), Files.end()) == false)
+ return false;
+ }
+
+ if (OutMap != nullptr)
+ *OutMap = Map.release();
+
+ if (Debug == true)
+ std::clog << "Everything is ready for shipping" << std::endl;
+ return true;
+}
+ /*}}}*/
+// CacheGenerator::MakeOnlyStatusCache - Build only a status files cache/*{{{*/
+class APT_HIDDEN ScopedErrorMerge {
+public:
+ ScopedErrorMerge() { _error->PushToStack(); }
+ ~ScopedErrorMerge() { _error->MergeWithStack(); }
+};
+bool pkgMakeOnlyStatusCache(OpProgress &Progress,DynamicMMap **OutMap)
+ { return pkgCacheGenerator::MakeOnlyStatusCache(&Progress, OutMap); }
+bool pkgCacheGenerator::MakeOnlyStatusCache(OpProgress *Progress,DynamicMMap **OutMap)
+{
+ std::vector<pkgIndexFile *> Files;
+ if (_system->AddStatusFiles(Files) == false)
+ return false;
+
+ ScopedErrorMerge sem;
+ std::unique_ptr<DynamicMMap> Map(CreateDynamicMMap(NULL, 0));
+ if (unlikely(Map->validData()) == false)
+ return false;
+ map_filesize_t CurrentSize = 0;
+ map_filesize_t TotalSize = 0;
+ TotalSize = ComputeSize(NULL, Files.begin(), Files.end());
+
+ // Build the status cache
+ if (Progress != NULL)
+ Progress->OverallProgress(0,1,1,_("Reading package lists"));
+ pkgCacheGenerator Gen(Map.get(),Progress);
+ if (Gen.Start() == false || _error->PendingError() == true)
+ return false;
+ if (BuildCache(Gen,Progress,CurrentSize,TotalSize, NULL,
+ Files.begin(), Files.end()) == false)
+ return false;
+
+ if (_error->PendingError() == true)
+ return false;
+ *OutMap = Map.release();
+
+ return true;
+}
+ /*}}}*/
+// IsDuplicateDescription /*{{{*/
+static bool IsDuplicateDescription(pkgCache &Cache, pkgCache::DescIterator Desc,
+ APT::StringView CurMd5, std::string const &CurLang)
+{
+ // Descriptions in the same link-list have all the same md5
+ if (Desc.end() == true || Cache.ViewString(Desc->md5sum) != CurMd5)
+ return false;
+ for (; Desc.end() == false; ++Desc)
+ if (Desc.LanguageCode() == CurLang)
+ return true;
+ return false;
+}
+ /*}}}*/
+
+pkgCacheListParser::pkgCacheListParser() : Owner(NULL), OldDepLast(NULL), d(NULL) {}
+pkgCacheListParser::~pkgCacheListParser() {}
diff --git a/apt-pkg/pkgcachegen.h b/apt-pkg/pkgcachegen.h
new file mode 100644
index 000000000..cb51c113a
--- /dev/null
+++ b/apt-pkg/pkgcachegen.h
@@ -0,0 +1,253 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Package Cache Generator - Generator for the cache structure.
+
+ This builds the cache structure from the abstract package list parser.
+ Each archive source has it's own list parser that is instantiated by
+ the caller to provide data for the generator.
+
+ Parts of the cache are created by this generator class while other
+ parts are created by the list parser. The list parser is responsible
+ for creating version, depends and provides structures, and some of
+ their contents
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_PKGCACHEGEN_H
+#define PKGLIB_PKGCACHEGEN_H
+
+#include <apt-pkg/md5.h>
+#include <apt-pkg/mmap.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/macros.h>
+
+#include <vector>
+#include <string>
+#if __cplusplus >= 201103L
+#include <unordered_set>
+#endif
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+#include <apt-pkg/string_view.h>
+#endif
+
+class FileFd;
+class pkgSourceList;
+class OpProgress;
+class pkgIndexFile;
+class pkgCacheListParser;
+
+class APT_HIDDEN pkgCacheGenerator /*{{{*/
+{
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ APT_HIDDEN map_stringitem_t WriteStringInMap(APT::StringView String) { return WriteStringInMap(String.data(), String.size()); };
+#endif
+ APT_HIDDEN map_stringitem_t WriteStringInMap(const char *String);
+ APT_HIDDEN map_stringitem_t WriteStringInMap(const char *String, const unsigned long &Len);
+ APT_HIDDEN map_pointer_t AllocateInMap(const unsigned long &size);
+
+ // Dirty hack for public users that do not use C++11 yet
+#if __cplusplus >= 201103L
+ struct string_pointer {
+ const char *data_;
+ size_t size;
+ pkgCacheGenerator *generator;
+ map_stringitem_t item;
+
+ const char *data() const {
+ return data_ != nullptr ? data_ : static_cast<char*>(generator->Map.Data()) + item;
+ }
+
+ bool operator ==(string_pointer const &other) const {
+ return size == other.size && memcmp(data(), other.data(), size) == 0;
+ }
+ };
+ struct hash {
+ uint32_t operator()(string_pointer const &that) const {
+ uint32_t Hash = 5381;
+ const char * const end = that.data() + that.size;
+ for (const char *I = that.data(); I != end; ++I)
+ Hash = 33 * Hash + *I;
+ return Hash;
+ }
+ };
+
+ std::unordered_set<string_pointer, hash> strMixed;
+ std::unordered_set<string_pointer, hash> strPkgNames;
+ std::unordered_set<string_pointer, hash> strVersions;
+ std::unordered_set<string_pointer, hash> strSections;
+#endif
+
+ friend class pkgCacheListParser;
+ typedef pkgCacheListParser ListParser;
+
+ public:
+
+ template<typename Iter> class Dynamic {
+ public:
+ static std::vector<Iter*> toReMap;
+ explicit Dynamic(Iter &I) {
+ toReMap.push_back(&I);
+ }
+
+ ~Dynamic() {
+ toReMap.pop_back();
+ }
+
+#if __cplusplus >= 201103L
+ Dynamic(const Dynamic&) = delete;
+ void operator=(const Dynamic&) = delete;
+#endif
+ };
+
+ protected:
+
+ DynamicMMap &Map;
+ pkgCache Cache;
+ OpProgress *Progress;
+
+ std::string RlsFileName;
+ pkgCache::ReleaseFile *CurrentRlsFile;
+ std::string PkgFileName;
+ pkgCache::PackageFile *CurrentFile;
+
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ bool NewGroup(pkgCache::GrpIterator &Grp, APT::StringView Name);
+ bool NewPackage(pkgCache::PkgIterator &Pkg, APT::StringView Name, APT::StringView Arch);
+ map_pointer_t NewVersion(pkgCache::VerIterator &Ver, APT::StringView const &VerStr,
+ map_pointer_t const ParentPkg, unsigned short const Hash,
+ map_pointer_t const Next);
+ map_pointer_t NewDescription(pkgCache::DescIterator &Desc,const std::string &Lang, APT::StringView md5sum,map_stringitem_t const idxmd5str);
+#endif
+ bool NewFileVer(pkgCache::VerIterator &Ver,ListParser &List);
+ bool NewFileDesc(pkgCache::DescIterator &Desc,ListParser &List);
+ bool NewDepends(pkgCache::PkgIterator &Pkg, pkgCache::VerIterator &Ver,
+ map_pointer_t const Version, uint8_t const Op,
+ uint8_t const Type, map_pointer_t* &OldDepLast);
+ bool NewProvides(pkgCache::VerIterator &Ver, pkgCache::PkgIterator &Pkg,
+ map_stringitem_t const ProvidesVersion, uint8_t const Flags);
+
+ public:
+
+ enum StringType { MIXED, PKGNAME, VERSIONNUMBER, SECTION };
+ map_stringitem_t StoreString(StringType const type, const char * S, unsigned int const Size);
+
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ inline map_stringitem_t StoreString(enum StringType const type, APT::StringView S) {return StoreString(type, S.data(),S.length());};
+#endif
+
+ void DropProgress() {Progress = 0;};
+ bool SelectFile(const std::string &File,pkgIndexFile const &Index, std::string const &Architecture, std::string const &Component, unsigned long Flags = 0);
+ bool SelectReleaseFile(const std::string &File, const std::string &Site, unsigned long Flags = 0);
+ bool MergeList(ListParser &List,pkgCache::VerIterator *Ver = 0);
+ inline pkgCache &GetCache() {return Cache;};
+ inline pkgCache::PkgFileIterator GetCurFile()
+ {return pkgCache::PkgFileIterator(Cache,CurrentFile);};
+ inline pkgCache::RlsFileIterator GetCurRlsFile()
+ {return pkgCache::RlsFileIterator(Cache,CurrentRlsFile);};
+
+ APT_PUBLIC static bool MakeStatusCache(pkgSourceList &List,OpProgress *Progress,
+ MMap **OutMap = 0,bool AllowMem = false);
+ APT_HIDDEN static bool MakeStatusCache(pkgSourceList &List,OpProgress *Progress,
+ MMap **OutMap,pkgCache **OutCache, bool AllowMem = false);
+ APT_PUBLIC static bool MakeOnlyStatusCache(OpProgress *Progress,DynamicMMap **OutMap);
+
+ void ReMap(void const * const oldMap, void const * const newMap, size_t oldSize);
+ bool Start();
+
+ pkgCacheGenerator(DynamicMMap *Map,OpProgress *Progress);
+ virtual ~pkgCacheGenerator();
+
+ private:
+ void * const d;
+ APT_HIDDEN bool MergeListGroup(ListParser &List, std::string const &GrpName);
+ APT_HIDDEN bool MergeListPackage(ListParser &List, pkgCache::PkgIterator &Pkg);
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ APT_HIDDEN bool MergeListVersion(ListParser &List, pkgCache::PkgIterator &Pkg,
+ APT::StringView const &Version, pkgCache::VerIterator* &OutVer);
+#endif
+
+ APT_HIDDEN bool AddImplicitDepends(pkgCache::GrpIterator &G, pkgCache::PkgIterator &P,
+ pkgCache::VerIterator &V);
+ APT_HIDDEN bool AddImplicitDepends(pkgCache::VerIterator &V, pkgCache::PkgIterator &D);
+
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ APT_HIDDEN bool AddNewDescription(ListParser &List, pkgCache::VerIterator &Ver,
+ std::string const &lang, APT::StringView CurMd5, map_stringitem_t &md5idx);
+#endif
+};
+ /*}}}*/
+// This is the abstract package list parser class. /*{{{*/
+class APT_HIDDEN pkgCacheListParser
+{
+ pkgCacheGenerator *Owner;
+ friend class pkgCacheGenerator;
+
+ // Some cache items
+ pkgCache::VerIterator OldDepVer;
+ map_pointer_t *OldDepLast;
+
+ void * const d;
+
+ protected:
+
+ inline map_stringitem_t StoreString(pkgCacheGenerator::StringType const type, const char *S,unsigned int Size) {return Owner->StoreString(type, S, Size);};
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ inline map_stringitem_t StoreString(pkgCacheGenerator::StringType const type, APT::StringView S) {return Owner->StoreString(type, S);};
+ inline map_stringitem_t WriteString(APT::StringView S) {return Owner->WriteStringInMap(S.data(), S.size());};
+#endif
+
+ inline map_stringitem_t WriteString(const char *S,unsigned int Size) {return Owner->WriteStringInMap(S,Size);};
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ bool NewDepends(pkgCache::VerIterator &Ver,APT::StringView Package, APT::StringView Arch,
+ APT::StringView Version,uint8_t const Op,
+ uint8_t const Type);
+ bool NewProvides(pkgCache::VerIterator &Ver,APT::StringView PkgName,
+ APT::StringView PkgArch, APT::StringView Version,
+ uint8_t const Flags);
+ bool NewProvidesAllArch(pkgCache::VerIterator &Ver, APT::StringView Package,
+ APT::StringView Version, uint8_t const Flags);
+#endif
+ public:
+
+ // These all operate against the current section
+ virtual std::string Package() = 0;
+ virtual bool ArchitectureAll() = 0;
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ virtual APT::StringView Architecture() = 0;
+ virtual APT::StringView Version() = 0;
+#endif
+ virtual bool NewVersion(pkgCache::VerIterator &Ver) = 0;
+ virtual std::vector<std::string> AvailableDescriptionLanguages() = 0;
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ virtual APT::StringView Description_md5() = 0;
+#endif
+ virtual unsigned short VersionHash() = 0;
+ /** compare currently parsed version with given version
+ *
+ * \param Hash of the currently parsed version
+ * \param Ver to compare with
+ */
+ virtual bool SameVersion(unsigned short const Hash, pkgCache::VerIterator const &Ver);
+ virtual bool UsePackage(pkgCache::PkgIterator &Pkg,
+ pkgCache::VerIterator &Ver) = 0;
+ virtual map_filesize_t Offset() = 0;
+ virtual map_filesize_t Size() = 0;
+
+ virtual bool Step() = 0;
+
+ virtual bool CollectFileProvides(pkgCache &/*Cache*/,
+ pkgCache::VerIterator &/*Ver*/) {return true;};
+
+ pkgCacheListParser();
+ virtual ~pkgCacheListParser();
+};
+ /*}}}*/
+
+APT_DEPRECATED_MSG("Use pkgCacheGenerator::MakeStatusCache instead") bool pkgMakeStatusCache(pkgSourceList &List,OpProgress &Progress,
+ MMap **OutMap = 0,bool AllowMem = false);
+APT_DEPRECATED_MSG("Use pkgCacheGenerator::MakeOnlyStatusCache instead") bool pkgMakeOnlyStatusCache(OpProgress &Progress,DynamicMMap **OutMap);
+
+#endif
diff --git a/apt-pkg/pkgrecords.cc b/apt-pkg/pkgrecords.cc
new file mode 100644
index 000000000..ef4c17cd2
--- /dev/null
+++ b/apt-pkg/pkgrecords.cc
@@ -0,0 +1,81 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: pkgrecords.cc,v 1.8 2003/09/02 04:52:16 mdz Exp $
+/* ######################################################################
+
+ Package Records - Allows access to complete package description records
+ directly from the file.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/pkgrecords.h>
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#include <stddef.h>
+#include <vector>
+
+#include <apti18n.h>
+ /*}}}*/
+
+// Records::pkgRecords - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* This will create the necessary structures to access the status files */
+pkgRecords::pkgRecords(pkgCache &aCache) : d(NULL), Cache(aCache),
+ Files(Cache.HeaderP->PackageFileCount)
+{
+ for (pkgCache::PkgFileIterator I = Cache.FileBegin();
+ I.end() == false; ++I)
+ {
+ const pkgIndexFile::Type *Type = pkgIndexFile::Type::GetType(I.IndexType());
+ if (Type == 0)
+ {
+ _error->Error(_("Index file type '%s' is not supported"),I.IndexType());
+ return;
+ }
+
+ Files[I->ID] = Type->CreatePkgParser(I);
+ if (Files[I->ID] == 0)
+ return;
+ }
+}
+ /*}}}*/
+// Records::~pkgRecords - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgRecords::~pkgRecords()
+{
+ for ( std::vector<Parser*>::iterator it = Files.begin();
+ it != Files.end();
+ ++it)
+ {
+ delete *it;
+ }
+}
+ /*}}}*/
+// Records::Lookup - Get a parser for the package version file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgRecords::Parser &pkgRecords::Lookup(pkgCache::VerFileIterator const &Ver)
+{
+ Files[Ver.File()->ID]->Jump(Ver);
+ return *Files[Ver.File()->ID];
+}
+ /*}}}*/
+// Records::Lookup - Get a parser for the package description file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgRecords::Parser &pkgRecords::Lookup(pkgCache::DescFileIterator const &Desc)
+{
+ Files[Desc.File()->ID]->Jump(Desc);
+ return *Files[Desc.File()->ID];
+}
+ /*}}}*/
+
+pkgRecords::Parser::Parser() : d(NULL) {}
+pkgRecords::Parser::~Parser() {}
diff --git a/apt-pkg/pkgrecords.h b/apt-pkg/pkgrecords.h
new file mode 100644
index 000000000..7c50c5d41
--- /dev/null
+++ b/apt-pkg/pkgrecords.h
@@ -0,0 +1,116 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: pkgrecords.h,v 1.6 2001/03/13 06:51:46 jgg Exp $
+/* ######################################################################
+
+ Package Records - Allows access to complete package description records
+ directly from the file.
+
+ The package record system abstracts the actual parsing of the
+ package files. This is different than the generators parser in that
+ it is used to access information not generate information. No
+ information touched by the generator should be parable from here as
+ it can always be retrieved directly from the cache.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_PKGRECORDS_H
+#define PKGLIB_PKGRECORDS_H
+
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/macros.h>
+
+#include <string>
+#include <vector>
+
+class pkgRecords /*{{{*/
+{
+ public:
+ class Parser;
+
+ private:
+ /** \brief dpointer placeholder (for later in case we need it) */
+ void * const d;
+
+ pkgCache &Cache;
+ std::vector<Parser *>Files;
+
+ public:
+ // Lookup function
+ Parser &Lookup(pkgCache::VerFileIterator const &Ver);
+ Parser &Lookup(pkgCache::DescFileIterator const &Desc);
+
+ // Construct destruct
+ explicit pkgRecords(pkgCache &Cache);
+ virtual ~pkgRecords();
+};
+ /*}}}*/
+class pkgRecords::Parser /*{{{*/
+{
+ protected:
+
+ virtual bool Jump(pkgCache::VerFileIterator const &Ver) = 0;
+ virtual bool Jump(pkgCache::DescFileIterator const &Desc) = 0;
+
+ public:
+ friend class pkgRecords;
+
+ // These refer to the archive file for the Version
+ virtual std::string FileName() {return std::string();};
+ virtual std::string SourcePkg() {return std::string();};
+ virtual std::string SourceVer() {return std::string();};
+
+ /** return all known hashes in this record.
+ *
+ * For authentication proposes packages come with hashsums which
+ * this method is supposed to parse and return so that clients can
+ * choose the hash to be used.
+ */
+ virtual HashStringList Hashes() const { return HashStringList(); };
+ APT_DEPRECATED_MSG("Use .Hashes instead of a hardcoded hash algorithm") std::string MD5Hash() const { return GetHashFromHashes("MD5Sum"); };
+ APT_DEPRECATED_MSG("Use .Hashes instead of a hardcoded hash algorithm") std::string SHA1Hash() const { return GetHashFromHashes("SHA1"); };
+ APT_DEPRECATED_MSG("Use .Hashes instead of a hardcoded hash algorithm") std::string SHA256Hash() const { return GetHashFromHashes("SHA256"); };
+ APT_DEPRECATED_MSG("Use .Hashes instead of a hardcoded hash algorithm") std::string SHA512Hash() const { return GetHashFromHashes("SHA512"); };
+
+ // These are some general stats about the package
+ virtual std::string Maintainer() {return std::string();};
+ /** return short description in language from record.
+ *
+ * @see #LongDesc
+ */
+ virtual std::string ShortDesc(std::string const &/*lang*/) {return std::string();};
+ /** return long description in language from record.
+ *
+ * If \b lang is empty the "best" available language will be
+ * returned as determined by the APT::Languages configuration.
+ * If a (requested) language can't be found in this record an empty
+ * string will be returned.
+ */
+ virtual std::string LongDesc(std::string const &/*lang*/) {return std::string();};
+ std::string ShortDesc() {return ShortDesc("");};
+ std::string LongDesc() {return LongDesc("");};
+
+ virtual std::string Name() {return std::string();};
+ virtual std::string Homepage() {return std::string();}
+
+ // An arbitrary custom field
+ virtual std::string RecordField(const char * /*fieldName*/) { return std::string();};
+
+ // The record in binary form
+ virtual void GetRec(const char *&Start,const char *&Stop) {Start = Stop = 0;};
+
+ Parser();
+ virtual ~Parser();
+
+ private:
+ void * const d;
+ APT_HIDDEN std::string GetHashFromHashes(char const * const type) const
+ {
+ HashStringList const hashes = Hashes();
+ HashString const * const hs = hashes.find(type);
+ return hs != NULL ? hs->HashValue() : "";
+ };
+};
+ /*}}}*/
+#endif
diff --git a/apt-pkg/pkgsystem.cc b/apt-pkg/pkgsystem.cc
new file mode 100644
index 000000000..b1c6cc1ea
--- /dev/null
+++ b/apt-pkg/pkgsystem.cc
@@ -0,0 +1,89 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: pkgsystem.cc,v 1.3 2004/02/27 00:43:16 mdz Exp $
+/* ######################################################################
+
+ System - Abstraction for running on different systems.
+
+ Basic general structure..
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/debsystem.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/macros.h>
+
+#include <map>
+#include <cassert>
+#include <cstring>
+ /*}}}*/
+
+pkgSystem *_system = 0;
+static pkgSystem *SysList[10];
+pkgSystem **pkgSystem::GlobalList = SysList;
+unsigned long pkgSystem::GlobalListLen = 0;
+
+class APT_HIDDEN pkgSystemPrivate /*{{{*/
+{
+public:
+ typedef decltype(pkgCache::Version::ID) idtype;
+ std::map<idtype,idtype> idmap;
+ pkgSystemPrivate() {}
+};
+ /*}}}*/
+// System::pkgSystem - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* Add it to the global list.. */
+pkgSystem::pkgSystem(char const * const label, pkgVersioningSystem * const vs) :
+ Label(label), VS(vs), d(new pkgSystemPrivate())
+{
+ assert(GlobalListLen < sizeof(SysList)/sizeof(*SysList));
+ SysList[GlobalListLen] = this;
+ ++GlobalListLen;
+}
+ /*}}}*/
+// System::GetSystem - Get the named system /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+APT_PURE pkgSystem *pkgSystem::GetSystem(const char *Label)
+{
+ for (unsigned I = 0; I != GlobalListLen; I++)
+ if (strcmp(SysList[I]->Label,Label) == 0)
+ return SysList[I];
+ return 0;
+}
+ /*}}}*/
+bool pkgSystem::MultiArchSupported() const /*{{{*/
+{
+ debSystem const * const deb = dynamic_cast<debSystem const *>(this);
+ if (deb != NULL)
+ return deb->SupportsMultiArch();
+ return true;
+}
+ /*}}}*/
+std::vector<std::string> pkgSystem::ArchitecturesSupported() const /*{{{*/
+{
+ debSystem const * const deb = dynamic_cast<debSystem const *>(this);
+ if (deb != NULL)
+ return deb->SupportedArchitectures();
+ return {};
+}
+ /*}}}*/
+// pkgSystem::Set/GetVersionMapping - for internal/external communcation/*{{{*/
+void pkgSystem::SetVersionMapping(map_id_t const in, map_id_t const out)
+{
+ if (in == out)
+ return;
+ d->idmap.emplace(in, out);
+}
+map_id_t pkgSystem::GetVersionMapping(map_id_t const in) const
+{
+ auto const o = d->idmap.find(in);
+ return (o == d->idmap.end()) ? in : o->second;
+}
+ /*}}}*/
+
+pkgSystem::~pkgSystem() {}
diff --git a/apt-pkg/pkgsystem.h b/apt-pkg/pkgsystem.h
new file mode 100644
index 000000000..affaa5c9a
--- /dev/null
+++ b/apt-pkg/pkgsystem.h
@@ -0,0 +1,130 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ System - Abstraction for running on different systems.
+
+ Instances of this class can be thought of as factories or meta-classes
+ for a variety of more specialized classes. Together this class and
+ it's specialized offspring completely define the environment and how
+ to access resources for a specific system. There are several sub
+ areas that are all orthogonal - each system has a unique combination of
+ these sub areas:
+ - Versioning. Different systems have different ideas on versions.
+ Within a system all sub classes must follow the same versioning
+ rules.
+ - Local tool locking to prevent multiple tools from accessing the
+ same database.
+ - Candidate Version selection policy - this is probably almost always
+ managed using a standard APT class
+ - Actual Package installation
+ * Indication of what kind of binary formats are supported
+ - Selection of local 'status' indexes that make up the pkgCache.
+
+ It is important to note that the handling of index files is not a
+ function of the system. Index files are handled through a separate
+ abstraction - the only requirement is that the index files have the
+ same idea of versioning as the target system.
+
+ Upon startup each supported system instantiates an instance of the
+ pkgSystem class (using a global constructor) which will make itself
+ available to the main APT init routine. That routine will select the
+ proper system and make it the global default.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_PKGSYSTEM_H
+#define PKGLIB_PKGSYSTEM_H
+
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#include <vector>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/depcache.h>
+#endif
+
+class pkgDepCache;
+class pkgPackageManager;
+class pkgVersioningSystem;
+class Configuration;
+class pkgIndexFile;
+
+class pkgSystemPrivate;
+class pkgSystem
+{
+ public:
+
+ // Global list of supported systems
+ static pkgSystem **GlobalList;
+ static unsigned long GlobalListLen;
+ static pkgSystem *GetSystem(const char *Label);
+
+ const char * const Label;
+ pkgVersioningSystem * const VS;
+
+ /* Prevent other programs from touching shared data not covered by
+ other locks (cache or state locks) */
+ virtual bool Lock() = 0;
+ virtual bool UnLock(bool NoErrors = false) = 0;
+
+ /* Various helper classes to interface with specific bits of this
+ environment */
+ virtual pkgPackageManager *CreatePM(pkgDepCache *Cache) const = 0;
+
+ /* Load environment specific configuration and perform any other setup
+ necessary */
+ virtual bool Initialize(Configuration &/*Cnf*/) {return true;};
+
+ /* Type is some kind of Globally Unique way of differentiating
+ archive file types.. */
+ virtual bool ArchiveSupported(const char *Type) = 0;
+
+ // Return a list of system index files..
+ virtual bool AddStatusFiles(std::vector<pkgIndexFile *> &List) = 0;
+
+ virtual bool FindIndex(pkgCache::PkgFileIterator File,
+ pkgIndexFile *&Found) const = 0;
+
+ /* Evauluate how 'right' we are for this system based on the filesystem
+ etc.. */
+ virtual signed Score(Configuration const &/*Cnf*/) {
+ return 0;
+ };
+
+ //FIXME: these methods should be virtual
+ /** does this system has support for MultiArch?
+ *
+ * Systems supporting only single arch (not systems which are single arch)
+ * are considered legacy systems and support for it will likely degrade over
+ * time.
+ *
+ * The default implementation returns always \b true.
+ *
+ * @return \b true if the system supports MultiArch, \b false if not.
+ */
+ bool MultiArchSupported() const;
+ /** architectures supported by this system
+ *
+ * A MultiArch capable system might be configured to use
+ * this capability.
+ *
+ * @return a list of all architectures (native + foreign) configured
+ * for on this system (aka: which can be installed without force)
+ */
+ std::vector<std::string> ArchitecturesSupported() const;
+
+ APT_HIDDEN void SetVersionMapping(map_id_t const in, map_id_t const out);
+ APT_HIDDEN map_id_t GetVersionMapping(map_id_t const in) const;
+
+ pkgSystem(char const * const Label, pkgVersioningSystem * const VS);
+ virtual ~pkgSystem();
+ private:
+ pkgSystemPrivate * const d;
+};
+
+// The environment we are operating in.
+extern pkgSystem *_system;
+
+#endif
diff --git a/apt-pkg/policy.cc b/apt-pkg/policy.cc
new file mode 100644
index 000000000..3dd6ddac4
--- /dev/null
+++ b/apt-pkg/policy.cc
@@ -0,0 +1,418 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: policy.cc,v 1.10 2003/08/12 00:17:37 mdz Exp $
+/* ######################################################################
+
+ Package Version Policy implementation
+
+ This is just a really simple wrapper around pkgVersionMatch with
+ some added goodies to manage the list of things..
+
+ See man apt_preferences for what value means what.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/policy.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/cachefilter.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/versionmatch.h>
+#include <apt-pkg/version.h>
+
+#include <ctype.h>
+#include <stddef.h>
+#include <string.h>
+#include <string>
+#include <vector>
+#include <iostream>
+#include <sstream>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+// Policy::Init - Startup and bind to a cache /*{{{*/
+// ---------------------------------------------------------------------
+/* Set the defaults for operation. The default mode with no loaded policy
+ file matches the V0 policy engine. */
+pkgPolicy::pkgPolicy(pkgCache *Owner) : Pins(nullptr), VerPins(nullptr),
+ PFPriority(nullptr), Cache(Owner), d(NULL)
+{
+ if (Owner == 0)
+ return;
+ PFPriority = new signed short[Owner->Head().PackageFileCount];
+ Pins = new Pin[Owner->Head().PackageCount];
+ VerPins = new Pin[Owner->Head().VersionCount];
+
+ for (unsigned long I = 0; I != Owner->Head().PackageCount; I++)
+ Pins[I].Type = pkgVersionMatch::None;
+ for (unsigned long I = 0; I != Owner->Head().VersionCount; I++)
+ VerPins[I].Type = pkgVersionMatch::None;
+
+ // The config file has a master override.
+ string DefRel = _config->Find("APT::Default-Release");
+ if (DefRel.empty() == false)
+ {
+ bool found = false;
+ // FIXME: make ExpressionMatches static to use it here easily
+ pkgVersionMatch vm("", pkgVersionMatch::None);
+ for (pkgCache::PkgFileIterator F = Cache->FileBegin(); F != Cache->FileEnd(); ++F)
+ {
+ if (vm.ExpressionMatches(DefRel, F.Archive()) ||
+ vm.ExpressionMatches(DefRel, F.Codename()) ||
+ vm.ExpressionMatches(DefRel, F.Version()) ||
+ (DefRel.length() > 2 && DefRel[1] == '='))
+ found = true;
+ }
+ if (found == false)
+ _error->Error(_("The value '%s' is invalid for APT::Default-Release as such a release is not available in the sources"), DefRel.c_str());
+ else
+ CreatePin(pkgVersionMatch::Release,"",DefRel,990);
+ }
+ InitDefaults();
+}
+ /*}}}*/
+// Policy::InitDefaults - Compute the default selections /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgPolicy::InitDefaults()
+{
+ // Initialize the priorities based on the status of the package file
+ for (pkgCache::PkgFileIterator I = Cache->FileBegin(); I != Cache->FileEnd(); ++I)
+ {
+ PFPriority[I->ID] = 500;
+ if (I.Flagged(pkgCache::Flag::NotSource))
+ PFPriority[I->ID] = 100;
+ else if (I.Flagged(pkgCache::Flag::ButAutomaticUpgrades))
+ PFPriority[I->ID] = 100;
+ else if (I.Flagged(pkgCache::Flag::NotAutomatic))
+ PFPriority[I->ID] = 1;
+ }
+
+ // Apply the defaults..
+ std::unique_ptr<bool[]> Fixed(new bool[Cache->HeaderP->PackageFileCount]);
+ memset(Fixed.get(),0,sizeof(Fixed[0])*Cache->HeaderP->PackageFileCount);
+ StatusOverride = false;
+ for (vector<Pin>::const_iterator I = Defaults.begin(); I != Defaults.end(); ++I)
+ {
+ pkgVersionMatch Match(I->Data,I->Type);
+ for (pkgCache::PkgFileIterator F = Cache->FileBegin(); F != Cache->FileEnd(); ++F)
+ {
+ if (Fixed[F->ID] == false && Match.FileMatch(F) == true)
+ {
+ PFPriority[F->ID] = I->Priority;
+
+ if (PFPriority[F->ID] >= 1000)
+ StatusOverride = true;
+
+ Fixed[F->ID] = true;
+ }
+ }
+ }
+
+ if (_config->FindB("Debug::pkgPolicy",false) == true)
+ for (pkgCache::PkgFileIterator F = Cache->FileBegin(); F != Cache->FileEnd(); ++F)
+ std::clog << "Prio of " << F.FileName() << ' ' << PFPriority[F->ID] << std::endl;
+
+ return true;
+}
+ /*}}}*/
+// Policy::GetCandidateVer - Get the candidate install version /*{{{*/
+// ---------------------------------------------------------------------
+/* Evaluate the package pins and the default list to deteremine what the
+ best package is. */
+pkgCache::VerIterator pkgPolicy::GetCandidateVer(pkgCache::PkgIterator const &Pkg)
+{
+ pkgCache::VerIterator cand;
+ pkgCache::VerIterator cur = Pkg.CurrentVer();
+ int candPriority = -1;
+ pkgVersioningSystem *vs = Cache->VS;
+
+ for (pkgCache::VerIterator ver = Pkg.VersionList(); ver.end() == false; ++ver) {
+ int priority = GetPriority(ver, true);
+
+ if (priority == 0 || priority <= candPriority)
+ continue;
+
+ // TODO: Maybe optimize to not compare versions
+ if (!cur.end() && priority < 1000
+ && (vs->CmpVersion(ver.VerStr(), cur.VerStr()) < 0))
+ continue;
+
+ candPriority = priority;
+ cand = ver;
+ }
+
+ return cand;
+}
+ /*}}}*/
+// Policy::CreatePin - Create an entry in the pin table.. /*{{{*/
+// ---------------------------------------------------------------------
+/* For performance we have 3 tables, the default table, the main cache
+ table (hashed to the cache). A blank package name indicates the pin
+ belongs to the default table. Order of insertion matters here, the
+ earlier defaults override later ones. */
+void pkgPolicy::CreatePin(pkgVersionMatch::MatchType Type,string Name,
+ string Data,signed short Priority)
+{
+ if (Name.empty() == true)
+ {
+ Pin *P = &*Defaults.insert(Defaults.end(),Pin());
+ P->Type = Type;
+ P->Priority = Priority;
+ P->Data = Data;
+ return;
+ }
+
+ size_t found = Name.rfind(':');
+ string Arch;
+ if (found != string::npos) {
+ Arch = Name.substr(found+1);
+ Name.erase(found);
+ }
+
+ // Allow pinning by wildcards - beware of package names looking like wildcards!
+ // TODO: Maybe we should always prefer specific pins over non-specific ones.
+ if ((Name[0] == '/' && Name[Name.length() - 1] == '/') || Name.find_first_of("*[?") != string::npos)
+ {
+ pkgVersionMatch match(Data, Type);
+ for (pkgCache::GrpIterator G = Cache->GrpBegin(); G.end() != true; ++G)
+ if (Name != G.Name() && match.ExpressionMatches(Name, G.Name()))
+ {
+ if (Arch.empty() == false)
+ CreatePin(Type, string(G.Name()).append(":").append(Arch), Data, Priority);
+ else
+ CreatePin(Type, G.Name(), Data, Priority);
+ }
+ return;
+ }
+
+ // find the package (group) this pin applies to
+ pkgCache::GrpIterator Grp = Cache->FindGrp(Name);
+ bool matched = false;
+ if (Grp.end() == false)
+ {
+ std::string MatchingArch;
+ if (Arch.empty() == true)
+ MatchingArch = Cache->NativeArch();
+ else
+ MatchingArch = Arch;
+ APT::CacheFilter::PackageArchitectureMatchesSpecification pams(MatchingArch);
+ for (pkgCache::PkgIterator Pkg = Grp.PackageList(); Pkg.end() != true; Pkg = Grp.NextPkg(Pkg))
+ {
+ if (pams(Pkg.Arch()) == false)
+ continue;
+ Pin *P = Pins + Pkg->ID;
+ // the first specific stanza for a package is the ruler,
+ // all others need to be ignored
+ if (P->Type != pkgVersionMatch::None)
+ P = &*Unmatched.insert(Unmatched.end(),PkgPin(Pkg.FullName()));
+ P->Type = Type;
+ P->Priority = Priority;
+ P->Data = Data;
+ matched = true;
+
+ // Find matching version(s) and copy the pin into it
+ pkgVersionMatch Match(P->Data,P->Type);
+ for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() != true; ++Ver)
+ {
+ if (Match.VersionMatches(Ver)) {
+ Pin *VP = VerPins + Ver->ID;
+ if (VP->Type == pkgVersionMatch::None)
+ *VP = *P;
+ }
+ }
+ }
+ }
+
+ if (matched == false)
+ {
+ PkgPin *P = &*Unmatched.insert(Unmatched.end(),PkgPin(Name));
+ if (Arch.empty() == false)
+ P->Pkg.append(":").append(Arch);
+ P->Type = Type;
+ P->Priority = Priority;
+ P->Data = Data;
+ return;
+ }
+}
+ /*}}}*/
+// Policy::GetMatch - Get the matching version for a package pin /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgCache::VerIterator pkgPolicy::GetMatch(pkgCache::PkgIterator const &Pkg)
+{
+ const Pin &PPkg = Pins[Pkg->ID];
+ if (PPkg.Type == pkgVersionMatch::None)
+ return pkgCache::VerIterator(*Pkg.Cache());
+
+ pkgVersionMatch Match(PPkg.Data,PPkg.Type);
+ return Match.Find(Pkg);
+}
+ /*}}}*/
+// Policy::GetPriority - Get the priority of the package pin /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+APT_PURE signed short pkgPolicy::GetPriority(pkgCache::PkgIterator const &Pkg)
+{
+ if (Pins[Pkg->ID].Type != pkgVersionMatch::None)
+ return Pins[Pkg->ID].Priority;
+ return 0;
+}
+APT_PURE signed short pkgPolicy::GetPriority(pkgCache::VerIterator const &Ver, bool ConsiderFiles)
+{
+ if (VerPins[Ver->ID].Type != pkgVersionMatch::None)
+ return VerPins[Ver->ID].Priority;
+ if (!ConsiderFiles)
+ return 0;
+
+ // priorities are short ints, but we want to pick a value outside the valid range here
+ auto priority = std::numeric_limits<signed int>::min();
+ for (pkgCache::VerFileIterator file = Ver.FileList(); file.end() == false; file++)
+ {
+ /* If this is the status file, and the current version is not the
+ version in the status file (ie it is not installed, or somesuch)
+ then it is not a candidate for installation, ever. This weeds
+ out bogus entries that may be due to config-file states, or
+ other. */
+ if (file.File().Flagged(pkgCache::Flag::NotSource) && Ver.ParentPkg().CurrentVer() != Ver)
+ priority = std::max(priority, static_cast<decltype(priority)>(-1));
+ else
+ priority = std::max(priority, static_cast<decltype(priority)>(GetPriority(file.File())));
+ }
+
+ return priority == std::numeric_limits<decltype(priority)>::min() ? 0 : priority;
+}
+APT_PURE signed short pkgPolicy::GetPriority(pkgCache::PkgFileIterator const &File)
+{
+ return PFPriority[File->ID];
+}
+ /*}}}*/
+// ReadPinDir - Load the pin files from this dir into a Policy /*{{{*/
+// ---------------------------------------------------------------------
+/* This will load each pin file in the given dir into a Policy. If the
+ given dir is empty the dir set in Dir::Etc::PreferencesParts is used.
+ Note also that this method will issue a warning if the dir does not
+ exists but it will return true in this case! */
+bool ReadPinDir(pkgPolicy &Plcy,string Dir)
+{
+ if (Dir.empty() == true)
+ Dir = _config->FindDir("Dir::Etc::PreferencesParts", "/dev/null");
+
+ if (DirectoryExists(Dir) == false)
+ {
+ if (APT::String::Endswith(Dir, "/dev/null") == false)
+ _error->WarningE("DirectoryExists",_("Unable to read %s"),Dir.c_str());
+ return true;
+ }
+
+ _error->PushToStack();
+ vector<string> const List = GetListOfFilesInDir(Dir, "pref", true, true);
+ bool const PendingErrors = _error->PendingError();
+ _error->MergeWithStack();
+ if (PendingErrors)
+ return false;
+
+ // Read the files
+ for (vector<string>::const_iterator I = List.begin(); I != List.end(); ++I)
+ if (ReadPinFile(Plcy, *I) == false)
+ return false;
+ return true;
+}
+ /*}}}*/
+// ReadPinFile - Load the pin file into a Policy /*{{{*/
+// ---------------------------------------------------------------------
+/* I'd like to see the preferences file store more than just pin information
+ but right now that is the only stuff I have to store. Later there will
+ have to be some kind of combined super parser to get the data into all
+ the right classes.. */
+bool ReadPinFile(pkgPolicy &Plcy,string File)
+{
+ if (File.empty() == true)
+ File = _config->FindFile("Dir::Etc::Preferences");
+
+ if (RealFileExists(File) == false)
+ return true;
+
+ FileFd Fd(File,FileFd::ReadOnly);
+ pkgTagFile TF(&Fd, pkgTagFile::SUPPORT_COMMENTS);
+ if (Fd.IsOpen() == false || Fd.Failed())
+ return false;
+
+ pkgTagSection Tags;
+ while (TF.Step(Tags) == true)
+ {
+ // can happen when there are only comments in a record
+ if (Tags.Count() == 0)
+ continue;
+
+ string Name = Tags.FindS("Package");
+ if (Name.empty() == true)
+ return _error->Error(_("Invalid record in the preferences file %s, no Package header"), File.c_str());
+ if (Name == "*")
+ Name = string();
+
+ const char *Start;
+ const char *End;
+ if (Tags.Find("Pin",Start,End) == false)
+ continue;
+
+ const char *Word = Start;
+ for (; Word != End && isspace(*Word) == 0; Word++);
+
+ // Parse the type..
+ pkgVersionMatch::MatchType Type;
+ if (stringcasecmp(Start,Word,"version") == 0 && Name.empty() == false)
+ Type = pkgVersionMatch::Version;
+ else if (stringcasecmp(Start,Word,"release") == 0)
+ Type = pkgVersionMatch::Release;
+ else if (stringcasecmp(Start,Word,"origin") == 0)
+ Type = pkgVersionMatch::Origin;
+ else
+ {
+ _error->Warning(_("Did not understand pin type %s"),string(Start,Word).c_str());
+ continue;
+ }
+ for (; Word != End && isspace(*Word) != 0; Word++);
+
+ _error->PushToStack();
+ int const priority = Tags.FindI("Pin-Priority", 0);
+ bool const newError = _error->PendingError();
+ _error->MergeWithStack();
+ if (priority < std::numeric_limits<short>::min() ||
+ priority > std::numeric_limits<short>::max() ||
+ newError) {
+ return _error->Error(_("%s: Value %s is outside the range of valid pin priorities (%d to %d)"),
+ File.c_str(), Tags.FindS("Pin-Priority").c_str(),
+ std::numeric_limits<short>::min(),
+ std::numeric_limits<short>::max());
+ }
+ if (priority == 0)
+ {
+ return _error->Error(_("No priority (or zero) specified for pin"));
+ }
+
+ istringstream s(Name);
+ string pkg;
+ while(!s.eof())
+ {
+ s >> pkg;
+ Plcy.CreatePin(Type, pkg, string(Word,End),priority);
+ };
+ }
+
+ Plcy.InitDefaults();
+ return true;
+}
+ /*}}}*/
+
+pkgPolicy::~pkgPolicy() {delete [] PFPriority; delete [] Pins; delete [] VerPins; }
diff --git a/apt-pkg/policy.h b/apt-pkg/policy.h
new file mode 100644
index 000000000..943332bbb
--- /dev/null
+++ b/apt-pkg/policy.h
@@ -0,0 +1,97 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Package Version Policy implementation
+
+ This implements the more advanced 'Version 4' APT policy engine. The
+ standard 'Version 0' engine is included inside the DepCache which is
+ it's historical location.
+
+ The V4 engine allows the user to completely control all aspects of
+ version selection. There are three primary means to choose a version
+ * Selection by version match
+ * Selection by Release file match
+ * Selection by origin server
+
+ Each package may be 'pinned' with a single criteria, which will ultimately
+ result in the selection of a single version, or no version, for each
+ package.
+
+ Furthermore, the default selection can be influenced by specifying
+ the ordering of package files. The order is derived by reading the
+ package file preferences and assigning a priority to each package
+ file.
+
+ A special flag may be set to indicate if no version should be returned
+ if no matching versions are found, otherwise the default matching
+ rules are used to locate a hit.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_POLICY_H
+#define PKGLIB_POLICY_H
+
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/versionmatch.h>
+
+#include <vector>
+#include <string>
+
+#ifndef APT_8_CLEANER_HEADERS
+using std::vector;
+#endif
+
+class pkgPolicy : public pkgDepCache::Policy
+{
+ protected:
+
+ struct Pin
+ {
+ pkgVersionMatch::MatchType Type;
+ std::string Data;
+ signed short Priority;
+ Pin() : Type(pkgVersionMatch::None), Priority(0) {};
+ };
+
+ struct PkgPin : Pin
+ {
+ std::string Pkg;
+ explicit PkgPin(std::string const &Pkg) : Pin(), Pkg(Pkg) {};
+ };
+
+ Pin *Pins;
+ Pin *VerPins;
+ signed short *PFPriority;
+ std::vector<Pin> Defaults;
+ std::vector<PkgPin> Unmatched;
+ pkgCache *Cache;
+ bool StatusOverride;
+
+ public:
+
+ // Things for manipulating pins
+ void CreatePin(pkgVersionMatch::MatchType Type,std::string Pkg,
+ std::string Data,signed short Priority);
+ pkgCache::VerIterator GetMatch(pkgCache::PkgIterator const &Pkg);
+
+ // Things for the cache interface.
+ virtual pkgCache::VerIterator GetCandidateVer(pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
+ virtual signed short GetPriority(pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
+ virtual signed short GetPriority(pkgCache::VerIterator const &Ver, bool ConsiderFiles = true) APT_OVERRIDE;
+ virtual signed short GetPriority(pkgCache::PkgFileIterator const &File) APT_OVERRIDE;
+
+ bool InitDefaults();
+
+ explicit pkgPolicy(pkgCache *Owner);
+ virtual ~pkgPolicy();
+ private:
+ void * const d;
+};
+
+bool ReadPinFile(pkgPolicy &Plcy, std::string File = "");
+bool ReadPinDir(pkgPolicy &Plcy, std::string Dir = "");
+
+#endif
diff --git a/apt-pkg/prettyprinters.cc b/apt-pkg/prettyprinters.cc
new file mode 100644
index 000000000..87e78bbde
--- /dev/null
+++ b/apt-pkg/prettyprinters.cc
@@ -0,0 +1,123 @@
+// Description /*{{{*/
+/* ######################################################################
+
+ Provide pretty printers for pkgCache structs like PkgIterator
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/prettyprinters.h>
+
+#include <ostream>
+#include <string>
+
+ /*}}}*/
+
+std::ostream& operator<<(std::ostream& os, const APT::PrettyPkg& pp) /*{{{*/
+{
+ if (pp.Pkg.end() == true)
+ return os << "invalid package";
+
+ auto state = (*pp.DepCache)[pp.Pkg];
+ std::string const current = (pp.Pkg.CurVersion() == 0 ? "none" : pp.Pkg.CurVersion());
+ std::string candidate = state.CandVersion;
+ if (candidate.empty())
+ candidate = "none";
+ std::string install = "none";
+ if (state.InstallVer != nullptr)
+ install = state.InstVerIter(*pp.DepCache).VerStr();
+
+ os << pp.Pkg.FullName(false) << " < " << current;
+ if (current != install && install != "none")
+ os << " -> " << install;
+ if (install != candidate && current != candidate)
+ os << " | " << candidate;
+ os << " @";
+ switch (pp.Pkg->SelectedState)
+ {
+ case pkgCache::State::Unknown: os << 'u'; break;
+ case pkgCache::State::Install: os << 'i'; break;
+ case pkgCache::State::Hold: os << 'h'; break;
+ case pkgCache::State::DeInstall: os << 'r'; break;
+ case pkgCache::State::Purge: os << 'p'; break;
+ default: os << 'X';
+ }
+ switch (pp.Pkg->InstState)
+ {
+ case pkgCache::State::Ok: break;
+ case pkgCache::State::ReInstReq: os << 'R'; break;
+ case pkgCache::State::HoldInst: os << 'H'; break;
+ case pkgCache::State::HoldReInstReq: os << "HR"; break;
+ default: os << 'X';
+ }
+ switch (pp.Pkg->CurrentState)
+ {
+ case pkgCache::State::NotInstalled: os << 'n'; break;
+ case pkgCache::State::ConfigFiles: os << 'c'; break;
+ case pkgCache::State::HalfInstalled: os << 'H'; break;
+ case pkgCache::State::UnPacked: os << 'U'; break;
+ case pkgCache::State::HalfConfigured: os << 'F'; break;
+ case pkgCache::State::TriggersAwaited: os << 'W'; break;
+ case pkgCache::State::TriggersPending: os << 'T'; break;
+ case pkgCache::State::Installed: os << 'i'; break;
+ default: os << 'X';
+ }
+ os << ' ';
+ if (state.Protect())
+ os << "p";
+ if (state.ReInstall())
+ os << "r";
+ if (state.Upgradable())
+ os << "u";
+ if (state.Marked)
+ os << "m";
+ if (state.Garbage)
+ os << "g";
+ if (state.NewInstall())
+ os << "N";
+ else if (state.Upgrade())
+ os << "U";
+ else if (state.Downgrade())
+ os << "D";
+ else if (state.Install())
+ os << "I";
+ else if (state.Purge())
+ os << "P";
+ else if (state.Delete())
+ os << "R";
+ else if (state.Held())
+ os << "H";
+ else if (state.Keep())
+ os << "K";
+ if (state.NowBroken())
+ os << " Nb";
+ else if (state.NowPolicyBroken())
+ os << " NPb";
+ if (state.InstBroken())
+ os << " Ib";
+ else if (state.InstPolicyBroken())
+ os << " IPb";
+ os << " >";
+ return os;
+}
+ /*}}}*/
+std::ostream& operator<<(std::ostream& os, const APT::PrettyDep& pd) /*{{{*/
+{
+ if (unlikely(pd.Dep.end() == true))
+ return os << "invalid dependency";
+
+ pkgCache::PkgIterator P = pd.Dep.ParentPkg();
+ pkgCache::PkgIterator T = pd.Dep.TargetPkg();
+
+ os << (P.end() ? "invalid pkg" : P.FullName(false)) << " " << pd.Dep.DepType()
+ << " on " << APT::PrettyPkg(pd.DepCache, T);
+
+ if (pd.Dep->Version != 0)
+ os << " (" << pd.Dep.CompType() << " " << pd.Dep.TargetVer() << ")";
+
+ return os;
+}
+ /*}}}*/
diff --git a/apt-pkg/prettyprinters.h b/apt-pkg/prettyprinters.h
new file mode 100644
index 000000000..51d9f81a0
--- /dev/null
+++ b/apt-pkg/prettyprinters.h
@@ -0,0 +1,37 @@
+#ifndef APT_PRETTYPRINTERS_H
+#define APT_PRETTYPRINTERS_H
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/macros.h>
+
+class pkgDepCache;
+
+namespace APT {
+
+/** helper to format PkgIterator for easier printing in debug messages.
+ *
+ * The actual text generated is subject to change without prior notice
+ * and should NOT be used as part of a general user interface.
+ */
+struct PrettyPkg
+{
+ pkgDepCache * const DepCache;
+ pkgCache::PkgIterator const Pkg;
+ PrettyPkg(pkgDepCache * const depcache, pkgCache::PkgIterator const &pkg) APT_NONNULL(2) : DepCache(depcache), Pkg(pkg) {}
+};
+/** helper to format DepIterator for easier printing in debug messages.
+ *
+ * The actual text generated is subject to change without prior notice
+ * and should NOT be used as part of a general user interface.
+ */
+struct PrettyDep
+{
+ pkgDepCache * const DepCache;
+ pkgCache::DepIterator const Dep;
+ PrettyDep(pkgDepCache * const depcache, pkgCache::DepIterator const &dep) APT_NONNULL(2) : DepCache(depcache), Dep(dep) {}
+};
+
+}
+std::ostream& operator<<(std::ostream& os, const APT::PrettyPkg& pp);
+std::ostream& operator<<(std::ostream& os, const APT::PrettyDep& pd);
+
+#endif
diff --git a/apt-pkg/sourcelist.cc b/apt-pkg/sourcelist.cc
new file mode 100644
index 000000000..df2e0b46d
--- /dev/null
+++ b/apt-pkg/sourcelist.cc
@@ -0,0 +1,650 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: sourcelist.cc,v 1.3 2002/08/15 20:51:37 niemeyer Exp $
+/* ######################################################################
+
+ List of Sources
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/metaindex.h>
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/debindexfile.h>
+#include <apt-pkg/debsrcrecords.h>
+
+#include <ctype.h>
+#include <stddef.h>
+#include <time.h>
+#include <cstring>
+#include <map>
+#include <string>
+#include <vector>
+#include <fstream>
+#include <algorithm>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+// Global list of Items supported
+static pkgSourceList::Type *ItmList[10];
+pkgSourceList::Type **pkgSourceList::Type::GlobalList = ItmList;
+unsigned long pkgSourceList::Type::GlobalListLen = 0;
+
+// Type::Type - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* Link this to the global list of items*/
+pkgSourceList::Type::Type(char const * const pName, char const * const pLabel) : Name(pName), Label(pLabel)
+{
+ ItmList[GlobalListLen] = this;
+ ++GlobalListLen;
+}
+pkgSourceList::Type::~Type() {}
+ /*}}}*/
+// Type::GetType - Get a specific meta for a given type /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgSourceList::Type *pkgSourceList::Type::GetType(const char *Type)
+{
+ for (unsigned I = 0; I != GlobalListLen; ++I)
+ if (strcmp(GlobalList[I]->Name,Type) == 0)
+ return GlobalList[I];
+ return 0;
+}
+ /*}}}*/
+// Type::FixupURI - Normalize the URI and check it.. /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgSourceList::Type::FixupURI(string &URI) const
+{
+ if (URI.empty() == true)
+ return false;
+
+ if (URI.find(':') == string::npos)
+ return false;
+
+ URI = SubstVar(URI,"$(ARCH)",_config->Find("APT::Architecture"));
+
+ // Make sure that the URI is / postfixed
+ if (URI[URI.size() - 1] != '/')
+ URI += '/';
+
+ return true;
+}
+ /*}}}*/
+bool pkgSourceList::Type::ParseStanza(vector<metaIndex *> &List, /*{{{*/
+ pkgTagSection &Tags,
+ unsigned int const i,
+ FileFd &Fd)
+{
+ map<string, string> Options;
+
+ string Enabled = Tags.FindS("Enabled");
+ if (Enabled.empty() == false && StringToBool(Enabled) == false)
+ return true;
+
+ std::map<char const * const, std::pair<char const * const, bool> > mapping;
+#define APT_PLUSMINUS(X, Y) \
+ mapping.insert(std::make_pair(X, std::make_pair(Y, true))); \
+ mapping.insert(std::make_pair(X "-Add", std::make_pair(Y "+", true))); \
+ mapping.insert(std::make_pair(X "-Remove", std::make_pair(Y "-", true)))
+ APT_PLUSMINUS("Architectures", "arch");
+ APT_PLUSMINUS("Languages", "lang");
+ APT_PLUSMINUS("Targets", "target");
+#undef APT_PLUSMINUS
+ mapping.insert(std::make_pair("Trusted", std::make_pair("trusted", false)));
+ mapping.insert(std::make_pair("Check-Valid-Until", std::make_pair("check-valid-until", false)));
+ mapping.insert(std::make_pair("Valid-Until-Min", std::make_pair("valid-until-min", false)));
+ mapping.insert(std::make_pair("Valid-Until-Max", std::make_pair("valid-until-max", false)));
+ mapping.insert(std::make_pair("Signed-By", std::make_pair("signed-by", false)));
+ mapping.insert(std::make_pair("PDiffs", std::make_pair("pdiffs", false)));
+ mapping.insert(std::make_pair("By-Hash", std::make_pair("by-hash", false)));
+
+ for (std::map<char const * const, std::pair<char const * const, bool> >::const_iterator m = mapping.begin(); m != mapping.end(); ++m)
+ if (Tags.Exists(m->first))
+ {
+ std::string option = Tags.FindS(m->first);
+ // for deb822 the " " is the delimiter, but the backend expects ","
+ if (m->second.second == true)
+ std::replace(option.begin(), option.end(), ' ', ',');
+ Options[m->second.first] = option;
+ }
+
+ {
+ std::string entry;
+ strprintf(entry, "%s:%i", Fd.Name().c_str(), i);
+ Options["sourceslist-entry"] = entry;
+ }
+
+ // now create one item per suite/section
+ string Suite = Tags.FindS("Suites");
+ Suite = SubstVar(Suite,"$(ARCH)",_config->Find("APT::Architecture"));
+ string const Component = Tags.FindS("Components");
+ string const URIS = Tags.FindS("URIs");
+
+ std::vector<std::string> const list_uris = VectorizeString(URIS, ' ');
+ std::vector<std::string> const list_suite = VectorizeString(Suite, ' ');
+ std::vector<std::string> const list_comp = VectorizeString(Component, ' ');
+
+ if (list_uris.empty())
+ // TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+ return _error->Error(_("Malformed entry %u in %s file %s (%s)"), i, "sources", Fd.Name().c_str(), "URI");
+
+ for (std::vector<std::string>::const_iterator U = list_uris.begin();
+ U != list_uris.end(); ++U)
+ {
+ std::string URI = *U;
+ if (U->empty() || FixupURI(URI) == false)
+ return _error->Error(_("Malformed entry %u in %s file %s (%s)"), i, "sources", Fd.Name().c_str(), "URI parse");
+
+ if (list_suite.empty())
+ return _error->Error(_("Malformed entry %u in %s file %s (%s)"), i, "sources", Fd.Name().c_str(), "Suite");
+
+ for (std::vector<std::string>::const_iterator S = list_suite.begin();
+ S != list_suite.end(); ++S)
+ {
+ if (S->empty() == false && (*S)[S->size() - 1] == '/')
+ {
+ if (list_comp.empty() == false)
+ return _error->Error(_("Malformed entry %u in %s file %s (%s)"), i, "sources", Fd.Name().c_str(), "absolute Suite Component");
+ if (CreateItem(List, URI, *S, "", Options) == false)
+ return false;
+ }
+ else
+ {
+ if (list_comp.empty())
+ return _error->Error(_("Malformed entry %u in %s file %s (%s)"), i, "sources", Fd.Name().c_str(), "Component");
+
+ for (std::vector<std::string>::const_iterator C = list_comp.begin();
+ C != list_comp.end(); ++C)
+ {
+ if (CreateItem(List, URI, *S, *C, Options) == false)
+ {
+ return false;
+ }
+ }
+ }
+ }
+ }
+ return true;
+}
+ /*}}}*/
+// Type::ParseLine - Parse a single line /*{{{*/
+// ---------------------------------------------------------------------
+/* This is a generic one that is the 'usual' format for sources.list
+ Weird types may override this. */
+bool pkgSourceList::Type::ParseLine(vector<metaIndex *> &List,
+ const char *Buffer,
+ unsigned int const CurLine,
+ string const &File) const
+{
+ for (;Buffer != 0 && isspace(*Buffer); ++Buffer); // Skip whitespaces
+
+ // Parse option field if it exists
+ // e.g.: [ option1=value1 option2=value2 ]
+ map<string, string> Options;
+ {
+ std::string entry;
+ strprintf(entry, "%s:%i", File.c_str(), CurLine);
+ Options["sourceslist-entry"] = entry;
+ }
+ if (Buffer != 0 && Buffer[0] == '[')
+ {
+ ++Buffer; // ignore the [
+ for (;Buffer != 0 && isspace(*Buffer); ++Buffer); // Skip whitespaces
+ while (*Buffer != ']')
+ {
+ // get one option, e.g. option1=value1
+ string option;
+ if (ParseQuoteWord(Buffer,option) == false)
+ return _error->Error(_("Malformed entry %u in %s file %s (%s)"), CurLine, "list", File.c_str(), "[option] unparseable");
+
+ if (option.length() < 3)
+ return _error->Error(_("Malformed entry %u in %s file %s (%s)"), CurLine, "list", File.c_str(), "[option] too short");
+
+ // accept options even if the last has no space before the ]-end marker
+ if (option.at(option.length()-1) == ']')
+ {
+ for (; *Buffer != ']'; --Buffer);
+ option.resize(option.length()-1);
+ }
+
+ size_t const needle = option.find('=');
+ if (needle == string::npos)
+ return _error->Error(_("Malformed entry %u in %s file %s (%s)"), CurLine, "list", File.c_str(), "[option] not assignment");
+
+ string const key = string(option, 0, needle);
+ string const value = string(option, needle + 1, option.length());
+
+ if (key.empty() == true)
+ return _error->Error(_("Malformed entry %u in %s file %s (%s)"), CurLine, "list", File.c_str(), "[option] no key");
+
+ if (value.empty() == true)
+ return _error->Error(_("Malformed entry %u in %s file %s (%s)"), CurLine, "list", File.c_str(), "[option] no value");
+
+ Options[key] = value;
+ }
+ ++Buffer; // ignore the ]
+ for (;Buffer != 0 && isspace(*Buffer); ++Buffer); // Skip whitespaces
+ }
+
+ string URI;
+ string Dist;
+ string Section;
+
+ if (ParseQuoteWord(Buffer,URI) == false)
+ return _error->Error(_("Malformed entry %u in %s file %s (%s)"), CurLine, "list", File.c_str(), "URI");
+ if (ParseQuoteWord(Buffer,Dist) == false)
+ return _error->Error(_("Malformed entry %u in %s file %s (%s)"), CurLine, "list", File.c_str(), "Suite");
+
+ if (FixupURI(URI) == false)
+ return _error->Error(_("Malformed entry %u in %s file %s (%s)"), CurLine, "list", File.c_str(), "URI parse");
+
+ // Check for an absolute dists specification.
+ if (Dist.empty() == false && Dist[Dist.size() - 1] == '/')
+ {
+ if (ParseQuoteWord(Buffer,Section) == true)
+ return _error->Error(_("Malformed entry %u in %s file %s (%s)"), CurLine, "list", File.c_str(), "absolute Suite Component");
+ Dist = SubstVar(Dist,"$(ARCH)",_config->Find("APT::Architecture"));
+ return CreateItem(List, URI, Dist, Section, Options);
+ }
+
+ // Grab the rest of the dists
+ if (ParseQuoteWord(Buffer,Section) == false)
+ return _error->Error(_("Malformed entry %u in %s file %s (%s)"), CurLine, "list", File.c_str(), "Component");
+
+ do
+ {
+ if (CreateItem(List, URI, Dist, Section, Options) == false)
+ return false;
+ }
+ while (ParseQuoteWord(Buffer,Section) == true);
+
+ return true;
+}
+ /*}}}*/
+// SourceList::pkgSourceList - Constructors /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgSourceList::pkgSourceList() : d(NULL)
+{
+}
+ /*}}}*/
+// SourceList::~pkgSourceList - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgSourceList::~pkgSourceList()
+{
+ for (const_iterator I = SrcList.begin(); I != SrcList.end(); ++I)
+ delete *I;
+ SrcList.clear();
+ for (auto F = VolatileFiles.begin(); F != VolatileFiles.end(); ++F)
+ delete (*F);
+ VolatileFiles.clear();
+}
+ /*}}}*/
+// SourceList::ReadMainList - Read the main source list from etc /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgSourceList::ReadMainList()
+{
+ // CNC:2003-03-03 - Multiple sources list support.
+ bool Res = true;
+#if 0
+ Res = ReadVendors();
+ if (Res == false)
+ return false;
+#endif
+
+ Reset();
+ // CNC:2003-11-28 - Entries in sources.list have priority over
+ // entries in sources.list.d.
+ string Main = _config->FindFile("Dir::Etc::sourcelist", "/dev/null");
+ string Parts = _config->FindDir("Dir::Etc::sourceparts", "/dev/null");
+
+ if (RealFileExists(Main) == true)
+ Res &= ReadAppend(Main);
+ else if (DirectoryExists(Parts) == false && APT::String::Endswith(Parts, "/dev/null") == false)
+ // Only warn if there are no sources.list.d.
+ _error->WarningE("DirectoryExists", _("Unable to read %s"), Parts.c_str());
+
+ if (DirectoryExists(Parts) == true)
+ Res &= ReadSourceDir(Parts);
+ else if (Main.empty() == false && RealFileExists(Main) == false &&
+ APT::String::Endswith(Parts, "/dev/null") == false)
+ // Only warn if there is no sources.list file.
+ _error->WarningE("RealFileExists", _("Unable to read %s"), Main.c_str());
+
+ for (auto && file: _config->FindVector("APT::Sources::With"))
+ Res &= AddVolatileFile(file, nullptr);
+
+ return Res;
+}
+ /*}}}*/
+// SourceList::Reset - Clear the sourcelist contents /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgSourceList::Reset()
+{
+ for (const_iterator I = SrcList.begin(); I != SrcList.end(); ++I)
+ delete *I;
+ SrcList.clear();
+}
+ /*}}}*/
+// SourceList::Read - Parse the sourcelist file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgSourceList::Read(string const &File)
+{
+ Reset();
+ return ReadAppend(File);
+}
+ /*}}}*/
+// SourceList::ReadAppend - Parse a sourcelist file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgSourceList::ReadAppend(string const &File)
+{
+ if (flExtension(File) == "sources")
+ return ParseFileDeb822(File);
+ else
+ return ParseFileOldStyle(File);
+}
+ /*}}}*/
+// SourceList::ReadFileOldStyle - Read Traditional style sources.list /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgSourceList::ParseFileOldStyle(std::string const &File)
+{
+ // Open the stream for reading
+ ifstream F(File.c_str(),ios::in /*| ios::nocreate*/);
+ if (F.fail() == true)
+ return _error->Errno("ifstream::ifstream",_("Opening %s"),File.c_str());
+
+ std::string Buffer;
+ for (unsigned int CurLine = 1; std::getline(F, Buffer); ++CurLine)
+ {
+ // remove comments
+ size_t curpos = 0;
+ while ((curpos = Buffer.find('#', curpos)) != std::string::npos)
+ {
+ size_t const openbrackets = std::count(Buffer.begin(), Buffer.begin() + curpos, '[');
+ size_t const closedbrackets = std::count(Buffer.begin(), Buffer.begin() + curpos, ']');
+ if (openbrackets > closedbrackets)
+ {
+ // a # in an option, unlikely, but oh well, it was supported so stick to it
+ ++curpos;
+ continue;
+ }
+ Buffer.erase(curpos);
+ break;
+ }
+ // remove spaces before/after
+ curpos = Buffer.find_first_not_of(" \t\r");
+ if (curpos != 0)
+ Buffer.erase(0, curpos);
+ curpos = Buffer.find_last_not_of(" \t\r");
+ if (curpos != std::string::npos)
+ Buffer.erase(curpos + 1);
+
+ if (Buffer.empty())
+ continue;
+
+ // Grok it
+ std::string const LineType = Buffer.substr(0, Buffer.find_first_of(" \t\v"));
+ if (LineType.empty() || LineType == Buffer)
+ return _error->Error(_("Malformed line %u in source list %s (type)"),CurLine,File.c_str());
+
+ Type *Parse = Type::GetType(LineType.c_str());
+ if (Parse == 0)
+ return _error->Error(_("Type '%s' is not known on line %u in source list %s"),LineType.c_str(),CurLine,File.c_str());
+
+ if (Parse->ParseLine(SrcList, Buffer.c_str() + LineType.length(), CurLine, File) == false)
+ return false;
+ }
+ return true;
+}
+ /*}}}*/
+// SourceList::ParseFileDeb822 - Parse deb822 style sources.list /*{{{*/
+// ---------------------------------------------------------------------
+/* Returns: the number of stanzas parsed*/
+bool pkgSourceList::ParseFileDeb822(string const &File)
+{
+ // see if we can read the file
+ FileFd Fd(File, FileFd::ReadOnly);
+ pkgTagFile Sources(&Fd, pkgTagFile::SUPPORT_COMMENTS);
+ if (Fd.IsOpen() == false || Fd.Failed())
+ return _error->Error(_("Malformed stanza %u in source list %s (type)"),0,File.c_str());
+
+ // read step by step
+ pkgTagSection Tags;
+ unsigned int i = 0;
+ while (Sources.Step(Tags) == true)
+ {
+ ++i;
+ if(Tags.Exists("Types") == false)
+ return _error->Error(_("Malformed stanza %u in source list %s (type)"),i,File.c_str());
+
+ string const types = Tags.FindS("Types");
+ std::vector<std::string> const list_types = VectorizeString(types, ' ');
+ for (std::vector<std::string>::const_iterator I = list_types.begin();
+ I != list_types.end(); ++I)
+ {
+ Type *Parse = Type::GetType((*I).c_str());
+ if (Parse == 0)
+ {
+ _error->Error(_("Type '%s' is not known on stanza %u in source list %s"), (*I).c_str(),i,Fd.Name().c_str());
+ return false;
+ }
+
+ if (!Parse->ParseStanza(SrcList, Tags, i, Fd))
+ return false;
+ }
+ }
+ return true;
+}
+ /*}}}*/
+// SourceList::FindIndex - Get the index associated with a file /*{{{*/
+static bool FindInIndexFileContainer(std::vector<pkgIndexFile *> const &Cont, pkgCache::PkgFileIterator const &File, pkgIndexFile *&Found)
+{
+ auto const J = std::find_if(Cont.begin(), Cont.end(), [&File](pkgIndexFile const * const J) {
+ return J->FindInCache(*File.Cache()) == File;
+ });
+ if (J != Cont.end())
+ {
+ Found = (*J);
+ return true;
+ }
+ return false;
+}
+bool pkgSourceList::FindIndex(pkgCache::PkgFileIterator File,
+ pkgIndexFile *&Found) const
+{
+ for (const_iterator I = SrcList.begin(); I != SrcList.end(); ++I)
+ if (FindInIndexFileContainer(*(*I)->GetIndexFiles(), File, Found))
+ return true;
+
+ return FindInIndexFileContainer(VolatileFiles, File, Found);
+}
+ /*}}}*/
+// SourceList::GetIndexes - Load the index files into the downloader /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgSourceList::GetIndexes(pkgAcquire *Owner, bool GetAll) const
+{
+ for (const_iterator I = SrcList.begin(); I != SrcList.end(); ++I)
+ if ((*I)->GetIndexes(Owner,GetAll) == false)
+ return false;
+ return true;
+}
+ /*}}}*/
+// CNC:2003-03-03 - By Anton V. Denisov <avd@altlinux.org>.
+// SourceList::ReadSourceDir - Read a directory with sources files
+// Based on ReadConfigDir() /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgSourceList::ReadSourceDir(string const &Dir)
+{
+ std::vector<std::string> ext;
+ ext.push_back("list");
+ ext.push_back("sources");
+ std::vector<std::string> const List = GetListOfFilesInDir(Dir, ext, true);
+
+ // Read the files
+ for (vector<string>::const_iterator I = List.begin(); I != List.end(); ++I)
+ if (ReadAppend(*I) == false)
+ return false;
+ return true;
+
+}
+ /*}}}*/
+// GetLastModified() /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+time_t pkgSourceList::GetLastModifiedTime()
+{
+ vector<string> List;
+
+ string Main = _config->FindFile("Dir::Etc::sourcelist");
+ string Parts = _config->FindDir("Dir::Etc::sourceparts");
+
+ // go over the parts
+ if (DirectoryExists(Parts) == true)
+ List = GetListOfFilesInDir(Parts, "list", true);
+
+ // calculate the time
+ std::vector<time_t> modtimes;
+ modtimes.reserve(1 + List.size());
+ modtimes.push_back(GetModificationTime(Main));
+ std::transform(List.begin(), List.end(), std::back_inserter(modtimes), GetModificationTime);
+ auto const maxmtime = std::max_element(modtimes.begin(), modtimes.end());
+ return *maxmtime;
+}
+ /*}}}*/
+std::vector<pkgIndexFile*> pkgSourceList::GetVolatileFiles() const /*{{{*/
+{
+ return VolatileFiles;
+}
+ /*}}}*/
+void pkgSourceList::AddVolatileFile(pkgIndexFile * const File) /*{{{*/
+{
+ if (File != nullptr)
+ VolatileFiles.push_back(File);
+}
+ /*}}}*/
+static bool fileNameMatches(std::string const &filename, std::string const &idxtype)/*{{{*/
+{
+ for (auto && type: APT::Configuration::getCompressionTypes())
+ {
+ if (type == "uncompressed")
+ {
+ if (filename == idxtype || APT::String::Endswith(filename, '_' + idxtype))
+ return true;
+ }
+ else if (filename == idxtype + '.' + type ||
+ APT::String::Endswith(filename, '_' + idxtype + '.' + type))
+ return true;
+ }
+ return false;
+}
+ /*}}}*/
+bool pkgSourceList::AddVolatileFile(std::string const &File, std::vector<std::string> * const VolatileCmdL)/*{{{*/
+{
+ // Note: FileExists matches directories and links, too!
+ if (File.empty() || FileExists(File) == false)
+ return false;
+
+ std::string const ext = flExtension(File);
+ // udeb is not included as installing it is usually a mistake rather than intended
+ if (ext == "deb" || ext == "ddeb")
+ AddVolatileFile(new debDebPkgFileIndex(File));
+ else if (ext == "dsc")
+ AddVolatileFile(new debDscFileIndex(File));
+ else if (FileExists(flCombine(File, "debian/control")))
+ AddVolatileFile(new debDscFileIndex(flCombine(File, "debian/control")));
+ else if (ext == "changes")
+ {
+ debDscRecordParser changes(File, nullptr);
+ std::vector<pkgSrcRecords::File2> fileslst;
+ if (changes.Files2(fileslst) == false || fileslst.empty())
+ return false;
+ auto const basedir = flNotFile(File);
+ for (auto && file: fileslst)
+ {
+ auto const name = flCombine(basedir, file.Path);
+ AddVolatileFile(name, VolatileCmdL);
+ if (file.Hashes.VerifyFile(name) == false)
+ return _error->Error("The file %s does not match with the hashes in the %s file!", name.c_str(), File.c_str());
+ }
+ return true;
+ }
+ else
+ {
+ auto const filename = flNotDir(File);
+ auto const Target = IndexTarget(File, filename, File, "file:" + File, false, true, {
+ { "FILENAME", File },
+ { "REPO_URI", "file:" + flAbsPath(flNotFile(File)) + '/' },
+ { "COMPONENT", "volatile-packages-file" },
+ });
+ if (fileNameMatches(filename, "Packages"))
+ AddVolatileFile(new debPackagesIndex(Target, true));
+ else if (fileNameMatches(filename, "Sources"))
+ AddVolatileFile(new debSourcesIndex(Target, true));
+ else
+ return false;
+ }
+
+ if (VolatileCmdL != nullptr)
+ VolatileCmdL->push_back(File);
+ return true;
+}
+bool pkgSourceList::AddVolatileFile(std::string const &File)
+{
+ return AddVolatileFile(File, nullptr);
+}
+ /*}}}*/
+void pkgSourceList::AddVolatileFiles(CommandLine &CmdL, std::vector<std::string> * const VolatileCmdL)/*{{{*/
+{
+ std::remove_if(CmdL.FileList + 1, CmdL.FileList + 1 + CmdL.FileSize(), [&](char const * const I) {
+ if (I != nullptr && (I[0] == '/' || (I[0] == '.' && (I[1] == '\0' || (I[1] == '.' && (I[2] == '\0' || I[2] == '/')) || I[1] == '/'))))
+ {
+ if (AddVolatileFile(I, VolatileCmdL))
+ ;
+ else
+ _error->Error(_("Unsupported file %s given on commandline"), I);
+ return true;
+ }
+ return false;
+ });
+}
+void pkgSourceList::AddVolatileFiles(CommandLine &CmdL, std::vector<const char*> * const VolatileCmdL)
+{
+ std::remove_if(CmdL.FileList + 1, CmdL.FileList + 1 + CmdL.FileSize(), [&](char const * const I) {
+ if (I != nullptr && (I[0] == '/' || (I[0] == '.' && (I[1] == '\0' || (I[1] == '.' && (I[2] == '\0' || I[2] == '/')) || I[1] == '/'))))
+ {
+ if (AddVolatileFile(I))
+ {
+ if (VolatileCmdL != nullptr)
+ VolatileCmdL->push_back(I);
+ }
+ else
+ _error->Error(_("Unsupported file %s given on commandline"), I);
+ return true;
+ }
+ return false;
+ });
+}
+ /*}}}*/
diff --git a/apt-pkg/sourcelist.h b/apt-pkg/sourcelist.h
new file mode 100644
index 000000000..65f9c2b89
--- /dev/null
+++ b/apt-pkg/sourcelist.h
@@ -0,0 +1,145 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ SourceList - Manage a list of sources
+
+ The Source List class provides access to a list of sources. It
+ can read them from a file and generate a list of all the distinct
+ sources.
+
+ All sources have a type associated with them that defines the layout
+ of the archive. The exact format of the file is documented in
+ files.sgml.
+
+ The types are mapped through a list of type definitions which handle
+ the actual construction of the back end type. After loading a source
+ list all you have is a list of package index files that have the ability
+ to be Acquired.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_SOURCELIST_H
+#define PKGLIB_SOURCELIST_H
+
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/macros.h>
+
+#include <time.h>
+
+#include <string>
+#include <vector>
+#include <map>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/tagfile.h>
+#endif
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/metaindex.h>
+using std::string;
+using std::vector;
+#endif
+
+class FileFd;
+class pkgTagSection;
+class pkgAcquire;
+class pkgIndexFile;
+class metaIndex;
+class CommandLine;
+
+class pkgSourceList
+{
+ void * const d;
+ std::vector<pkgIndexFile*> VolatileFiles;
+ public:
+
+ // List of supported source list types
+ class Type
+ {
+ public:
+
+ // Global list of Items supported
+ static Type **GlobalList;
+ static unsigned long GlobalListLen;
+ static Type *GetType(const char *Type) APT_PURE;
+
+ char const * const Name;
+ char const * const Label;
+
+ bool FixupURI(std::string &URI) const;
+ virtual bool ParseStanza(std::vector<metaIndex *> &List,
+ pkgTagSection &Tags,
+ unsigned int const stanza_n,
+ FileFd &Fd);
+ virtual bool ParseLine(std::vector<metaIndex *> &List,
+ const char *Buffer,
+ unsigned int const CurLine,std::string const &File) const;
+ virtual bool CreateItem(std::vector<metaIndex *> &List,std::string const &URI,
+ std::string const &Dist,std::string const &Section,
+ std::map<std::string, std::string> const &Options) const = 0;
+ Type(char const * const Name, char const * const Label);
+ virtual ~Type();
+ };
+
+ typedef std::vector<metaIndex *>::const_iterator const_iterator;
+
+ protected:
+
+ std::vector<metaIndex *> SrcList;
+
+ private:
+ APT_HIDDEN bool ParseFileDeb822(std::string const &File);
+ APT_HIDDEN bool ParseFileOldStyle(std::string const &File);
+
+ public:
+
+ bool ReadMainList();
+ bool Read(std::string const &File);
+
+ // CNC:2003-03-03
+ void Reset();
+ bool ReadAppend(std::string const &File);
+ bool ReadSourceDir(std::string const &Dir);
+
+ // List accessors
+ inline const_iterator begin() const {return SrcList.begin();};
+ inline const_iterator end() const {return SrcList.end();};
+ inline unsigned int size() const {return SrcList.size();};
+ inline bool empty() const {return SrcList.empty();};
+
+ bool FindIndex(pkgCache::PkgFileIterator File,
+ pkgIndexFile *&Found) const;
+ bool GetIndexes(pkgAcquire *Owner, bool GetAll=false) const;
+
+ // query last-modified time
+ time_t GetLastModifiedTime();
+
+ /** \brief add file for parsing, but not to the cache
+ *
+ * pkgIndexFiles origining from pkgSourcesList are included in
+ * srcpkgcache, the status files added via #AddStatusFiles are
+ * included in pkgcache, but these files here are not included in
+ * any cache to have the possibility of having a file included just
+ * for a single run like a local .deb/.dsc file.
+ *
+ * The volatile files do not count as "normal" sourceslist entries,
+ * can't be iterated over with #begin and #end and can't be
+ * downloaded, but they can be found via #FindIndex.
+ *
+ * @param File is an index file; pointer-ownership is transferred
+ */
+ void AddVolatileFile(pkgIndexFile * const File);
+ bool AddVolatileFile(std::string const &File);
+ bool AddVolatileFile(std::string const &File, std::vector<std::string> * const VolatileCmdL);
+ APT_DEPRECATED_MSG("Use the overload with string-vector") void AddVolatileFiles(CommandLine &CmdL, std::vector<const char*> * const VolatileCmdL);
+ void AddVolatileFiles(CommandLine &CmdL, std::vector<std::string> * const VolatileCmdL);
+
+ /** @return list of files registered with #AddVolatileFile */
+ std::vector<pkgIndexFile*> GetVolatileFiles() const;
+
+ pkgSourceList();
+ virtual ~pkgSourceList();
+};
+
+#endif
diff --git a/apt-pkg/srcrecords.cc b/apt-pkg/srcrecords.cc
new file mode 100644
index 000000000..a76604a8d
--- /dev/null
+++ b/apt-pkg/srcrecords.cc
@@ -0,0 +1,183 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: srcrecords.cc,v 1.7.2.2 2003/12/26 16:27:34 mdz Exp $
+/* ######################################################################
+
+ Source Package Records - Allows access to source package records
+
+ Parses and allows access to the list of source records and searching by
+ source name on that list.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/srcrecords.h>
+#include <apt-pkg/debsrcrecords.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/metaindex.h>
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/macros.h>
+
+#include <string.h>
+#include <string>
+#include <vector>
+
+#include <apti18n.h>
+ /*}}}*/
+
+// SrcRecords::pkgSrcRecords - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* Open all the source index files */
+pkgSrcRecords::pkgSrcRecords(pkgSourceList &List) : d(NULL), Files(0)
+{
+ for (pkgSourceList::const_iterator I = List.begin(); I != List.end(); ++I)
+ {
+ std::vector<pkgIndexFile *> *Indexes = (*I)->GetIndexFiles();
+ for (std::vector<pkgIndexFile *>::const_iterator J = Indexes->begin();
+ J != Indexes->end(); ++J)
+ {
+ _error->PushToStack();
+ Parser* P = (*J)->CreateSrcParser();
+ bool const newError = _error->PendingError();
+ _error->MergeWithStack();
+ if (newError)
+ return;
+ if (P != 0)
+ Files.push_back(P);
+ }
+ }
+
+ // Doesn't work without any source index files
+ if (Files.empty() == true)
+ {
+ _error->Error(_("You must put some 'source' URIs"
+ " in your sources.list"));
+ return;
+ }
+
+ Restart();
+}
+ /*}}}*/
+// SrcRecords::~pkgSrcRecords - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgSrcRecords::~pkgSrcRecords()
+{
+ // Blow away all the parser objects
+ for(std::vector<Parser*>::iterator I = Files.begin(); I != Files.end(); ++I)
+ delete *I;
+}
+ /*}}}*/
+// SrcRecords::Restart - Restart the search /*{{{*/
+// ---------------------------------------------------------------------
+/* Return all of the parsers to their starting position */
+bool pkgSrcRecords::Restart()
+{
+ Current = Files.begin();
+ for (std::vector<Parser*>::iterator I = Files.begin();
+ I != Files.end(); ++I)
+ if ((*I)->Offset() != 0)
+ (*I)->Restart();
+
+ return true;
+}
+ /*}}}*/
+// SrcRecords::Step - Step to the next Source Record /*{{{*/
+// ---------------------------------------------------------------------
+/* Step to the next source package record */
+const pkgSrcRecords::Parser* pkgSrcRecords::Step()
+{
+ if (Current == Files.end())
+ return 0;
+
+ // Step to the next record, possibly switching files
+ while ((*Current)->Step() == false)
+ {
+ ++Current;
+ if (Current == Files.end())
+ return 0;
+ }
+
+ return *Current;
+}
+ /*}}}*/
+// SrcRecords::Find - Find the first source package with the given name /*{{{*/
+// ---------------------------------------------------------------------
+/* This searches on both source package names and output binary names and
+ returns the first found. A 'cursor' like system is used to allow this
+ function to be called multiple times to get successive entries */
+pkgSrcRecords::Parser *pkgSrcRecords::Find(const char *Package,bool const &SrcOnly)
+{
+ while (true)
+ {
+ if(Step() == 0)
+ return 0;
+
+ // Source name hit
+ if ((*Current)->Package() == Package)
+ return *Current;
+
+ if (SrcOnly == true)
+ continue;
+
+ // Check for a binary hit
+ const char **I = (*Current)->Binaries();
+ for (; I != 0 && *I != 0; ++I)
+ if (strcmp(Package,*I) == 0)
+ return *Current;
+ }
+}
+ /*}}}*/
+// Parser::BuildDepType - Convert a build dep to a string /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+const char *pkgSrcRecords::Parser::BuildDepType(unsigned char const &Type)
+{
+ const char *fields[] = {"Build-Depends",
+ "Build-Depends-Indep",
+ "Build-Conflicts",
+ "Build-Conflicts-Indep",
+ "Build-Depends-Arch",
+ "Build-Conflicts-Arch"};
+ if (unlikely(Type >= sizeof(fields)/sizeof(fields[0])))
+ return "";
+ return fields[Type];
+}
+ /*}}}*/
+bool pkgSrcRecords::Parser::Files2(std::vector<pkgSrcRecords::File2> &F2)/*{{{*/
+{
+ debSrcRecordParser * const deb = dynamic_cast<debSrcRecordParser*>(this);
+ if (deb != NULL)
+ return deb->Files2(F2);
+
+ std::vector<pkgSrcRecords::File> F;
+ if (Files(F) == false)
+ return false;
+ for (std::vector<pkgSrcRecords::File>::const_iterator f = F.begin(); f != F.end(); ++f)
+ {
+ pkgSrcRecords::File2 f2;
+#if __GNUC__ >= 4
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#endif
+ f2.MD5Hash = f->MD5Hash;
+ f2.Size = f->Size;
+ f2.Hashes.push_back(HashString("MD5Sum", f->MD5Hash));
+ f2.FileSize = f->Size;
+#if __GNUC__ >= 4
+ #pragma GCC diagnostic pop
+#endif
+ f2.Path = f->Path;
+ f2.Type = f->Type;
+ F2.push_back(f2);
+ }
+ return true;
+}
+ /*}}}*/
+
+
+pkgSrcRecords::Parser::Parser(const pkgIndexFile *Index) : d(NULL), iIndex(Index) {}
+pkgSrcRecords::Parser::~Parser() {}
diff --git a/apt-pkg/srcrecords.h b/apt-pkg/srcrecords.h
new file mode 100644
index 000000000..a3c8444de
--- /dev/null
+++ b/apt-pkg/srcrecords.h
@@ -0,0 +1,120 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Source Package Records - Allows access to source package records
+
+ Parses and allows access to the list of source records and searching by
+ source name on that list.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_SRCRECORDS_H
+#define PKGLIB_SRCRECORDS_H
+
+#include <apt-pkg/macros.h>
+#include <apt-pkg/hashes.h>
+
+#include <string>
+#include <vector>
+
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+using std::vector;
+#endif
+
+class pkgSourceList;
+class pkgIndexFile;
+class pkgSrcRecords
+{
+ public:
+
+APT_IGNORE_DEPRECATED_PUSH
+ // Describes a single file
+ struct File
+ {
+ APT_DEPRECATED_MSG("Use Hashes member instead of hardcoded hash algorithm") std::string MD5Hash;
+ APT_DEPRECATED_MSG("Use FileSize member instead") unsigned long Size;
+ std::string Path;
+ std::string Type;
+ };
+ struct File2 : public File
+ {
+ unsigned long long FileSize;
+ HashStringList Hashes;
+ };
+APT_IGNORE_DEPRECATED_POP
+
+ // Abstract parser for each source record
+ class Parser
+ {
+ void * const d;
+ protected:
+
+ const pkgIndexFile *iIndex;
+
+ public:
+
+ enum BuildDep {BuildDepend=0x0,BuildDependIndep=0x1,
+ BuildConflict=0x2,BuildConflictIndep=0x3,
+ BuildDependArch=0x4,BuildConflictArch=0x5};
+
+ struct BuildDepRec
+ {
+ std::string Package;
+ std::string Version;
+ unsigned int Op;
+ unsigned char Type;
+ };
+
+ inline const pkgIndexFile &Index() const {return *iIndex;};
+
+ virtual bool Restart() = 0;
+ virtual bool Step() = 0;
+ virtual bool Jump(unsigned long const &Off) = 0;
+ virtual unsigned long Offset() = 0;
+ virtual std::string AsStr() = 0;
+
+ virtual std::string Package() const = 0;
+ virtual std::string Version() const = 0;
+ virtual std::string Maintainer() const = 0;
+ virtual std::string Section() const = 0;
+ virtual const char **Binaries() = 0; // Ownership does not transfer
+
+ //FIXME: Add a parameter to specify which architecture to use for [wildcard] matching
+ virtual bool BuildDepends(std::vector<BuildDepRec> &BuildDeps, bool const &ArchOnly, bool const &StripMultiArch = true) = 0;
+ static const char *BuildDepType(unsigned char const &Type) APT_PURE;
+
+ virtual bool Files(std::vector<pkgSrcRecords::File> &F) = 0;
+ bool Files2(std::vector<pkgSrcRecords::File2> &F);
+
+ explicit Parser(const pkgIndexFile *Index);
+ virtual ~Parser();
+ };
+
+ private:
+ /** \brief dpointer placeholder (for later in case we need it) */
+ void * const d;
+
+ // The list of files and the current parser pointer
+ std::vector<Parser*> Files;
+ std::vector<Parser *>::iterator Current;
+
+ public:
+
+ // Reset the search
+ bool Restart();
+
+ // Step to the next SourcePackage and return pointer to the
+ // next SourceRecord. The pointer is owned by libapt.
+ const Parser* Step();
+
+ // Locate a package by name and return pointer to the Parser.
+ // The pointer is owned by libapt.
+ Parser* Find(const char *Package,bool const &SrcOnly = false);
+
+ explicit pkgSrcRecords(pkgSourceList &List);
+ virtual ~pkgSrcRecords();
+};
+
+#endif
diff --git a/apt-pkg/statechanges.cc b/apt-pkg/statechanges.cc
new file mode 100644
index 000000000..35af45538
--- /dev/null
+++ b/apt-pkg/statechanges.cc
@@ -0,0 +1,227 @@
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/debsystem.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/statechanges.h>
+#include <apt-pkg/prettyprinters.h>
+
+#include <algorithm>
+#include <memory>
+
+namespace APT
+{
+
+class StateChanges::Private
+{
+public:
+ APT::VersionVector hold;
+ APT::VersionVector unhold;
+ APT::VersionVector install;
+ APT::VersionVector deinstall;
+ APT::VersionVector purge;
+ APT::VersionVector error;
+};
+
+#define APT_GETTERSETTER(Name, Container) \
+void StateChanges::Name(pkgCache::VerIterator const &Ver) \
+{ \
+ if (Ver.end() == false) \
+ Container.push_back(Ver); \
+}\
+APT::VersionVector& StateChanges::Name() \
+{ \
+ return Container; \
+}
+APT_GETTERSETTER(Hold, d->hold)
+APT_GETTERSETTER(Unhold, d->unhold)
+APT_GETTERSETTER(Install, d->install)
+APT_GETTERSETTER(Remove, d->deinstall)
+APT_GETTERSETTER(Purge, d->purge)
+#undef APT_GETTERSETTER
+APT::VersionVector& StateChanges::Error()
+{
+ return d->error;
+}
+
+void StateChanges::clear()
+{
+ d->hold.clear();
+ d->unhold.clear();
+ d->install.clear();
+ d->deinstall.clear();
+ d->purge.clear();
+ d->error.clear();
+}
+
+bool StateChanges::empty() const
+{
+ return d->hold.empty() &&
+ d->unhold.empty() &&
+ d->install.empty() &&
+ d->deinstall.empty() &&
+ d->purge.empty() &&
+ d->error.empty();
+}
+
+bool StateChanges::Save(bool const DiscardOutput)
+{
+ bool const Debug = _config->FindB("Debug::pkgDpkgPm", false);
+ d->error.clear();
+ if (d->hold.empty() && d->unhold.empty() && d->install.empty() && d->deinstall.empty() && d->purge.empty())
+ return true;
+
+ std::vector<std::string> Args = debSystem::GetDpkgBaseCommand();
+ // ensure dpkg knows about the package so that it keeps the status we set
+ if (d->hold.empty() == false || d->install.empty() == false)
+ {
+ APT::VersionVector makeDpkgAvailable;
+ auto const notInstalled = [](pkgCache::VerIterator const &V) { return V.ParentPkg()->CurrentVer == 0; };
+ std::copy_if(d->hold.begin(), d->hold.end(), std::back_inserter(makeDpkgAvailable), notInstalled);
+ std::copy_if(d->install.begin(), d->install.end(), std::back_inserter(makeDpkgAvailable), notInstalled);
+
+ if (makeDpkgAvailable.empty() == false)
+ {
+ auto const BaseArgs = Args.size();
+ Args.push_back("--merge-avail");
+ // FIXME: supported only since 1.17.7 in dpkg
+ Args.push_back("-");
+ int dummyAvail = -1;
+ if (Debug)
+ {
+ for (auto const &V: makeDpkgAvailable)
+ {
+ std::clog << "echo 'Dummy record for " << V.ParentPkg().FullName(false) << "' | ";
+ std::copy(Args.begin(), Args.end(), std::ostream_iterator<std::string>(std::clog, " "));
+ std::clog << std::endl;
+ }
+ }
+ else
+ {
+ pid_t const dpkgMergeAvail = debSystem::ExecDpkg(Args, &dummyAvail, nullptr, true);
+
+ FILE* dpkg = fdopen(dummyAvail, "w");
+ for (auto const &V: makeDpkgAvailable)
+ fprintf(dpkg, "Package: %s\nVersion: 0~\nArchitecture: %s\nMaintainer: Dummy Example <dummy@example.org>\n"
+ "Description: dummy package record\n A record is needed to put a package on hold, so here it is.\n\n", V.ParentPkg().Name(), V.Arch());
+ fclose(dpkg);
+
+ ExecWait(dpkgMergeAvail, "dpkg --merge-avail", true);
+ }
+ Args.erase(Args.begin() + BaseArgs, Args.end());
+ }
+ }
+ bool const dpkgMultiArch = _system->MultiArchSupported();
+
+ Args.push_back("--set-selections");
+ if (Debug)
+ {
+ std::string state;
+ auto const dpkgName = [&](pkgCache::VerIterator const &V) {
+ pkgCache::PkgIterator P = V.ParentPkg();
+ if (strcmp(V.Arch(), "none") == 0)
+ ioprintf(std::clog, "echo '%s %s' | ", P.Name(), state.c_str());
+ else if (dpkgMultiArch == false)
+ ioprintf(std::clog, "echo '%s %s' | ", P.FullName(true).c_str(), state.c_str());
+ else
+ ioprintf(std::clog, "echo '%s:%s %s' | ", P.Name(), V.Arch(), state.c_str());
+ std::copy(Args.begin(), Args.end(), std::ostream_iterator<std::string>(std::clog, " "));
+ std::clog << std::endl;
+ };
+ for (auto const &V: d->unhold)
+ {
+ if (V.ParentPkg()->CurrentVer != 0)
+ state = "install";
+ else
+ state = "deinstall";
+ dpkgName(V);
+ }
+ if (d->purge.empty() == false)
+ {
+ state = "purge";
+ std::for_each(d->purge.begin(), d->purge.end(), dpkgName);
+ }
+ if (d->deinstall.empty() == false)
+ {
+ state = "deinstall";
+ std::for_each(d->deinstall.begin(), d->deinstall.end(), dpkgName);
+ }
+ if (d->hold.empty() == false)
+ {
+ state = "hold";
+ std::for_each(d->hold.begin(), d->hold.end(), dpkgName);
+ }
+ if (d->install.empty() == false)
+ {
+ state = "install";
+ std::for_each(d->install.begin(), d->install.end(), dpkgName);
+ }
+ }
+ else
+ {
+ int selections = -1;
+ pid_t const dpkgSelections = debSystem::ExecDpkg(Args, &selections, nullptr, DiscardOutput);
+
+ FILE* dpkg = fdopen(selections, "w");
+ std::string state;
+ auto const dpkgName = [&](pkgCache::VerIterator const &V) {
+ pkgCache::PkgIterator P = V.ParentPkg();
+ if (strcmp(V.Arch(), "none") == 0)
+ fprintf(dpkg, "%s %s\n", P.Name(), state.c_str());
+ else if (dpkgMultiArch == false)
+ fprintf(dpkg, "%s %s\n", P.FullName(true).c_str(), state.c_str());
+ else
+ fprintf(dpkg, "%s:%s %s\n", P.Name(), V.Arch(), state.c_str());
+ };
+ for (auto const &V: d->unhold)
+ {
+ if (V.ParentPkg()->CurrentVer != 0)
+ state = "install";
+ else
+ state = "deinstall";
+ dpkgName(V);
+ }
+ if (d->purge.empty() == false)
+ {
+ state = "purge";
+ std::for_each(d->purge.begin(), d->purge.end(), dpkgName);
+ }
+ if (d->deinstall.empty() == false)
+ {
+ state = "deinstall";
+ std::for_each(d->deinstall.begin(), d->deinstall.end(), dpkgName);
+ }
+ if (d->hold.empty() == false)
+ {
+ state = "hold";
+ std::for_each(d->hold.begin(), d->hold.end(), dpkgName);
+ }
+ if (d->install.empty() == false)
+ {
+ state = "install";
+ std::for_each(d->install.begin(), d->install.end(), dpkgName);
+ }
+ fclose(dpkg);
+
+ if (ExecWait(dpkgSelections, "dpkg --set-selections") == false)
+ {
+ std::move(d->purge.begin(), d->purge.end(), std::back_inserter(d->error));
+ d->purge.clear();
+ std::move(d->deinstall.begin(), d->deinstall.end(), std::back_inserter(d->error));
+ d->deinstall.clear();
+ std::move(d->hold.begin(), d->hold.end(), std::back_inserter(d->error));
+ d->hold.clear();
+ std::move(d->unhold.begin(), d->unhold.end(), std::back_inserter(d->error));
+ d->unhold.clear();
+ std::move(d->install.begin(), d->install.end(), std::back_inserter(d->error));
+ d->install.clear();
+ }
+ }
+ return d->error.empty();
+}
+
+StateChanges::StateChanges() : d(new StateChanges::Private()) {}
+StateChanges::StateChanges(StateChanges&&) = default;
+StateChanges& StateChanges::operator=(StateChanges&&) = default;
+StateChanges::~StateChanges() = default;
+
+}
diff --git a/apt-pkg/statechanges.h b/apt-pkg/statechanges.h
new file mode 100644
index 000000000..1eaf21a3a
--- /dev/null
+++ b/apt-pkg/statechanges.h
@@ -0,0 +1,58 @@
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/macros.h>
+
+#include <memory>
+
+namespace APT
+{
+
+/** Simple wrapper class to abstract away the differences in storing different
+ * states in different places potentially in different versions.
+ */
+class APT_PUBLIC StateChanges
+{
+public:
+ // getter/setter for the different states
+#define APT_GETTERSETTER(Name) \
+ APT::VersionVector& Name(); \
+ void Name(pkgCache::VerIterator const &Ver)
+ APT_GETTERSETTER(Hold);
+ APT_GETTERSETTER(Unhold);
+ APT_GETTERSETTER(Install);
+ APT_GETTERSETTER(Remove);
+ APT_GETTERSETTER(Purge);
+ APT::VersionVector& Error();
+#undef APT_GETTERSETTER
+
+ // operate on all containers at once
+ void clear();
+ bool empty() const;
+
+ /** commit the staged changes to the database(s).
+ *
+ * Makes the needed calls to store the requested states.
+ * After this call the state containers will hold only versions
+ * for which the storing operation succeeded. Versions where the
+ * storing operation failed are collected in #Error(). Note that
+ * error is an upper bound as states are changed in batches so it
+ * isn't always clear which version triggered the failure exactly.
+ *
+ * @param DiscardOutput controls if stdout/stderr should be used
+ * by subprocesses for (detailed) error reporting if needed.
+ * @return \b false if storing failed, true otherwise.
+ * Note that some states might be applied even if the whole operation failed.
+ */
+ bool Save(bool const DiscardOutput = false);
+
+ StateChanges();
+ StateChanges(StateChanges&&);
+ StateChanges& operator=(StateChanges&&);
+ ~StateChanges();
+
+private:
+ class APT_HIDDEN Private;
+ std::unique_ptr<Private> d;
+};
+
+}
diff --git a/apt-pkg/tagfile-compat.cc b/apt-pkg/tagfile-compat.cc
new file mode 100644
index 000000000..fe53e2974
--- /dev/null
+++ b/apt-pkg/tagfile-compat.cc
@@ -0,0 +1,76 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: tagfile.cc,v 1.37.2.2 2003/12/31 16:02:30 mdz Exp $
+/* ######################################################################
+
+ Fast scanner for RFC-822 type header information
+
+ This uses a rotating buffer to load the package information into.
+ The scanner runs over it and isolates and indexes a single section.
+
+ This defines compat functions for the external code.
+
+ ##################################################################### */
+ /*}}}*/
+
+#include<config.h>
+#define APT_COMPILING_TAGFILE_COMPAT_CC
+#include <apt-pkg/tagfile.h>
+
+using std::string;
+using APT::StringView;
+
+
+bool pkgTagSection::Exists(const char* const Tag) const
+{
+ return Exists(StringView(Tag));
+}
+
+bool pkgTagSection::Find(const char *Tag,unsigned int &Pos) const
+{
+ return Find(StringView(Tag), Pos);
+}
+
+bool pkgTagSection::Find(const char *Tag,const char *&Start,
+ const char *&End) const
+{
+ return Find(StringView(Tag), Start, End);
+}
+
+string pkgTagSection::FindS(const char *Tag) const
+{
+ return Find(StringView(Tag)).to_string();
+}
+
+string pkgTagSection::FindRawS(const char *Tag) const
+{
+ return FindRaw(StringView(Tag)).to_string();
+}
+
+signed int pkgTagSection::FindI(const char *Tag,signed long Default) const
+{
+ return FindI(StringView(Tag), Default);
+}
+
+unsigned long long pkgTagSection::FindULL(const char *Tag, unsigned long long const &Default) const
+{
+ return FindULL(StringView(Tag), Default);
+}
+ /*}}}*/
+
+bool pkgTagSection::FindB(const char *Tag, bool const &Default) const
+{
+ return FindB(StringView(Tag), Default);
+}
+
+bool pkgTagSection::FindFlag(const char * const Tag, uint8_t &Flags,
+ uint8_t const Flag) const
+{
+ return FindFlag(StringView(Tag), Flags, Flag);
+}
+
+bool pkgTagSection::FindFlag(const char *Tag,unsigned long &Flags,
+ unsigned long Flag) const
+{
+ return FindFlag(StringView(Tag), Flags, Flag);
+}
diff --git a/apt-pkg/tagfile-keys.list b/apt-pkg/tagfile-keys.list
new file mode 100644
index 000000000..82f0d8316
--- /dev/null
+++ b/apt-pkg/tagfile-keys.list
@@ -0,0 +1,82 @@
+Architecture
+Binary
+Breaks
+Bugs
+Build-Conflicts
+Build-Conflicts-Arch
+Build-Conflicts-Indep
+Build-Depends
+Build-Depends-Arch
+Build-Depends-Indep
+Built-For-Profiles
+Built-Using
+Checksums-Md5
+Checksums-Sha1
+Checksums-Sha256
+Checksums-Sha512
+Class
+Conffiles
+Config-Version
+Conflicts
+Depends
+Description
+Description-md5
+Directory
+Dm-Upload-Allowed
+Enhances
+Essential
+Filename
+Files
+Format
+Homepage
+Important
+Installed-Size
+Installer-Menu-Item
+Kernel-Version
+Maintainer
+MD5sum
+MSDOS-Filename
+Multi-Arch
+Optional
+Origin
+Original-Maintainer
+Package
+Package-List
+Package_Revision
+Package-Revision
+Package-Type
+Pre-Depends
+Priority
+Provides
+Recommended
+Recommends
+Replaces
+Revision
+Section
+SHA1
+SHA256
+SHA512
+Size
+Source
+Standards-Version
+Status
+Subarchitecture
+Suggests
+Tag
+Task
+Testsuite
+Testsuite-Triggers
+Triggers-Awaited
+Triggers-Pending
+Uploaders
+Vcs-Arch
+Vcs-Browse
+Vcs-Browser
+Vcs-Bzr
+Vcs-Cvs
+Vcs-Darcs
+Vcs-Git
+Vcs-Hg
+Vcs-Mtn
+Vcs-Svn
+Version
diff --git a/apt-pkg/tagfile-order.c b/apt-pkg/tagfile-order.c
new file mode 100644
index 000000000..0347d8b76
--- /dev/null
+++ b/apt-pkg/tagfile-order.c
@@ -0,0 +1,111 @@
+/* In this file is the order defined in which e.g. apt-ftparchive will write stanzas in.
+ Other commands might or might not use this. 'apt-cache show' e.g. does NOT!
+
+ The order we chose here is inspired by both dpkg and dak.
+ The testcase test/integration/test-apt-tagfile-fields-order intends to ensure that
+ this file isn't lacking (too far) behind dpkg over time. */
+
+static const char *iTFRewritePackageOrder[] = {
+ "Package",
+ "Package-Type",
+ "Architecture",
+ "Subarchitecture", // Used only by d-i
+ "Version",
+ "Revision", // Obsolete (warning in dpkg)
+ "Package-Revision", // Obsolete (warning in dpkg)
+ "Package_Revision", // Obsolete (warning in dpkg)
+ "Kernel-Version", // Used only by d-i
+ "Built-Using",
+ "Built-For-Profiles",
+ "Auto-Built-Package",
+ "Multi-Arch",
+ "Status",
+ "Priority",
+ "Class", // dpkg nickname for Priority
+ "Essential",
+ "Installer-Menu-Item", // Used only by d-i
+ "Section",
+ "Source",
+ "Origin",
+ "Maintainer",
+ "Original-Maintainer", // unknown in dpkg order
+ "Bugs",
+ "Config-Version", // Internal of dpkg
+ "Conffiles",
+ "Triggers-Awaited",
+ "Triggers-Pending",
+ "Installed-Size",
+ "Provides",
+ "Pre-Depends",
+ "Depends",
+ "Recommends",
+ "Recommended", // dpkg nickname for Recommends
+ "Suggests",
+ "Optional", // dpkg nickname for Suggests
+ "Conflicts",
+ "Breaks",
+ "Replaces",
+ "Enhances",
+ "Filename",
+ "MSDOS-Filename", // Obsolete (used by dselect)
+ "Size",
+ "MD5sum",
+ "SHA1",
+ "SHA256",
+ "SHA512",
+ "Homepage",
+ "Description",
+ "Tag",
+ "Task",
+ 0
+};
+static const char *iTFRewriteSourceOrder[] = {
+ "Package",
+ "Source", // dsc file, renamed to Package in Sources
+ "Format",
+ "Binary",
+ "Architecture",
+ "Version",
+ "Priority",
+ "Class", // dpkg nickname for Priority
+ "Section",
+ "Origin",
+ "Maintainer",
+ "Original-Maintainer", // unknown in dpkg order
+ "Uploaders",
+ "Dm-Upload-Allowed", // Obsolete (ignored by dak)
+ "Standards-Version",
+ "Build-Depends",
+ "Build-Depends-Arch",
+ "Build-Depends-Indep",
+ "Build-Conflicts",
+ "Build-Conflicts-Arch",
+ "Build-Conflicts-Indep",
+ "Testsuite",
+ "Testsuite-Triggers",
+ "Homepage",
+ "Vcs-Browser",
+ "Vcs-Browse", // dak only (nickname?)
+ "Vcs-Arch",
+ "Vcs-Bzr",
+ "Vcs-Cvs",
+ "Vcs-Darcs",
+ "Vcs-Git",
+ "Vcs-Hg",
+ "Vcs-Mtn",
+ "Vcs-Svn",
+ "Directory",
+ "Package-List",
+ "Files",
+ "Checksums-Md5",
+ "Checksums-Sha1",
+ "Checksums-Sha256",
+ "Checksums-Sha512",
+ 0
+};
+
+/* Two levels of initialization are used because gcc will set the symbol
+ size of an array to the length of the array, causing dynamic relinking
+ errors. Doing this makes the symbol size constant */
+const char **TFRewritePackageOrder = iTFRewritePackageOrder;
+const char **TFRewriteSourceOrder = iTFRewriteSourceOrder;
diff --git a/apt-pkg/tagfile.cc b/apt-pkg/tagfile.cc
new file mode 100644
index 000000000..d9519175e
--- /dev/null
+++ b/apt-pkg/tagfile.cc
@@ -0,0 +1,1207 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: tagfile.cc,v 1.37.2.2 2003/12/31 16:02:30 mdz Exp $
+/* ######################################################################
+
+ Fast scanner for RFC-822 type header information
+
+ This uses a rotating buffer to load the package information into.
+ The scanner runs over it and isolates and indexes a single section.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/tagfile-keys.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/string_view.h>
+
+#include <list>
+
+#include <string>
+#include <stdio.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using std::string;
+using APT::StringView;
+
+class APT_HIDDEN pkgTagFilePrivate /*{{{*/
+{
+public:
+ void Reset(FileFd * const pFd, unsigned long long const pSize, pkgTagFile::Flags const pFlags)
+ {
+ if (Buffer != NULL)
+ free(Buffer);
+ Buffer = NULL;
+ Fd = pFd;
+ Flags = pFlags;
+ Start = NULL;
+ End = NULL;
+ Done = false;
+ iOffset = 0;
+ Size = pSize;
+ isCommentedLine = false;
+ chunks.clear();
+ }
+
+ pkgTagFilePrivate(FileFd * const pFd, unsigned long long const Size, pkgTagFile::Flags const pFlags) : Buffer(NULL)
+ {
+ Reset(pFd, Size, pFlags);
+ }
+ FileFd * Fd;
+ pkgTagFile::Flags Flags;
+ char *Buffer;
+ char *Start;
+ char *End;
+ bool Done;
+ unsigned long long iOffset;
+ unsigned long long Size;
+ bool isCommentedLine;
+ struct FileChunk
+ {
+ bool const good;
+ size_t length;
+ FileChunk(bool const pgood, size_t const plength) : good(pgood), length(plength) {}
+ };
+ std::list<FileChunk> chunks;
+
+ ~pkgTagFilePrivate()
+ {
+ if (Buffer != NULL)
+ free(Buffer);
+ }
+};
+ /*}}}*/
+class APT_HIDDEN pkgTagSectionPrivate /*{{{*/
+{
+public:
+ pkgTagSectionPrivate()
+ {
+ }
+ struct TagData {
+ unsigned int StartTag;
+ unsigned int EndTag;
+ unsigned int StartValue;
+ unsigned int NextInBucket;
+
+ explicit TagData(unsigned int const StartTag) : StartTag(StartTag), EndTag(0), StartValue(0), NextInBucket(0) {}
+ };
+ std::vector<TagData> Tags;
+};
+ /*}}}*/
+
+static unsigned long BetaHash(const char *Text, size_t Length) /*{{{*/
+{
+ /* This very simple hash function for the last 8 letters gives
+ very good performance on the debian package files */
+ if (Length > 8)
+ {
+ Text += (Length - 8);
+ Length = 8;
+ }
+ unsigned long Res = 0;
+ for (size_t i = 0; i < Length; ++i)
+ Res = ((unsigned long)(Text[i]) & 0xDF) ^ (Res << 1);
+ return Res & 0x7F;
+}
+ /*}}}*/
+
+// TagFile::pkgTagFile - Constructor /*{{{*/
+pkgTagFile::pkgTagFile(FileFd * const pFd,pkgTagFile::Flags const pFlags, unsigned long long const Size)
+ : d(new pkgTagFilePrivate(pFd, Size + 4, pFlags))
+{
+ Init(pFd, pFlags, Size);
+}
+pkgTagFile::pkgTagFile(FileFd * const pFd,unsigned long long const Size)
+ : pkgTagFile(pFd, pkgTagFile::STRICT, Size)
+{
+}
+void pkgTagFile::Init(FileFd * const pFd, pkgTagFile::Flags const pFlags, unsigned long long Size)
+{
+ /* The size is increased by 4 because if we start with the Size of the
+ filename we need to try to read 1 char more to see an EOF faster, 1
+ char the end-pointer can be on and maybe 2 newlines need to be added
+ to the end of the file -> 4 extra chars */
+ Size += 4;
+ d->Reset(pFd, Size, pFlags);
+
+ if (d->Fd->IsOpen() == false)
+ d->Start = d->End = d->Buffer = 0;
+ else
+ d->Buffer = (char*)malloc(sizeof(char) * Size);
+
+ if (d->Buffer == NULL)
+ d->Done = true;
+ else
+ d->Done = false;
+
+ d->Start = d->End = d->Buffer;
+ d->iOffset = 0;
+ if (d->Done == false)
+ Fill();
+}
+void pkgTagFile::Init(FileFd * const pFd,unsigned long long Size)
+{
+ Init(pFd, pkgTagFile::STRICT, Size);
+}
+ /*}}}*/
+// TagFile::~pkgTagFile - Destructor /*{{{*/
+pkgTagFile::~pkgTagFile()
+{
+ delete d;
+}
+ /*}}}*/
+// TagFile::Offset - Return the current offset in the buffer /*{{{*/
+APT_PURE unsigned long pkgTagFile::Offset()
+{
+ return d->iOffset;
+}
+ /*}}}*/
+// TagFile::Resize - Resize the internal buffer /*{{{*/
+// ---------------------------------------------------------------------
+/* Resize the internal buffer (double it in size). Fail if a maximum size
+ * size is reached.
+ */
+bool pkgTagFile::Resize()
+{
+ // fail is the buffer grows too big
+ if(d->Size > 1024*1024+1)
+ return false;
+
+ return Resize(d->Size * 2);
+}
+bool pkgTagFile::Resize(unsigned long long const newSize)
+{
+ unsigned long long const EndSize = d->End - d->Start;
+
+ // get new buffer and use it
+ char* const newBuffer = static_cast<char*>(realloc(d->Buffer, sizeof(char) * newSize));
+ if (newBuffer == NULL)
+ return false;
+ d->Buffer = newBuffer;
+ d->Size = newSize;
+
+ // update the start/end pointers to the new buffer
+ d->Start = d->Buffer;
+ d->End = d->Start + EndSize;
+ return true;
+}
+ /*}}}*/
+// TagFile::Step - Advance to the next section /*{{{*/
+// ---------------------------------------------------------------------
+/* If the Section Scanner fails we refill the buffer and try again.
+ * If that fails too, double the buffer size and try again until a
+ * maximum buffer is reached.
+ */
+bool pkgTagFile::Step(pkgTagSection &Tag)
+{
+ if(Tag.Scan(d->Start,d->End - d->Start) == false)
+ {
+ do
+ {
+ if (Fill() == false)
+ return false;
+
+ if(Tag.Scan(d->Start,d->End - d->Start, false))
+ break;
+
+ if (Resize() == false)
+ return _error->Error(_("Unable to parse package file %s (%d)"),
+ d->Fd->Name().c_str(), 1);
+
+ } while (Tag.Scan(d->Start,d->End - d->Start, false) == false);
+ }
+
+ size_t tagSize = Tag.size();
+ d->Start += tagSize;
+
+ if ((d->Flags & pkgTagFile::SUPPORT_COMMENTS) == 0)
+ d->iOffset += tagSize;
+ else
+ {
+ auto first = d->chunks.begin();
+ for (; first != d->chunks.end(); ++first)
+ {
+ if (first->good == false)
+ d->iOffset += first->length;
+ else
+ {
+ if (tagSize < first->length)
+ {
+ first->length -= tagSize;
+ d->iOffset += tagSize;
+ break;
+ }
+ else
+ {
+ tagSize -= first->length;
+ d->iOffset += first->length;
+ }
+ }
+ }
+ d->chunks.erase(d->chunks.begin(), first);
+ }
+
+ Tag.Trim();
+ return true;
+}
+ /*}}}*/
+// TagFile::Fill - Top up the buffer /*{{{*/
+// ---------------------------------------------------------------------
+/* This takes the bit at the end of the buffer and puts it at the start
+ then fills the rest from the file */
+static bool FillBuffer(pkgTagFilePrivate * const d)
+{
+ unsigned long long Actual = 0;
+ // See if only a bit of the file is left
+ unsigned long long const dataSize = d->Size - ((d->End - d->Buffer) + 1);
+ if (d->Fd->Read(d->End, dataSize, &Actual) == false)
+ return false;
+ if (Actual != dataSize)
+ d->Done = true;
+ d->End += Actual;
+ return true;
+}
+static void RemoveCommentsFromBuffer(pkgTagFilePrivate * const d)
+{
+ // look for valid comments in the buffer
+ char * good_start = nullptr, * bad_start = nullptr;
+ char * current = d->Start;
+ if (d->isCommentedLine == false)
+ {
+ if (d->Start == d->Buffer)
+ {
+ // the start of the buffer is a newline as a record can't start
+ // in the middle of a line by definition.
+ if (*d->Start == '#')
+ {
+ d->isCommentedLine = true;
+ ++current;
+ if (current > d->End)
+ d->chunks.emplace_back(false, 1);
+ }
+ }
+ if (d->isCommentedLine == false)
+ good_start = d->Start;
+ else
+ bad_start = d->Start;
+ }
+ else
+ bad_start = d->Start;
+
+ std::vector<std::pair<char*, size_t>> good_parts;
+ while (current <= d->End)
+ {
+ size_t const restLength = (d->End - current);
+ if (d->isCommentedLine == false)
+ {
+ current = static_cast<char*>(memchr(current, '#', restLength));
+ if (current == nullptr)
+ {
+ size_t const goodLength = d->End - good_start;
+ d->chunks.emplace_back(true, goodLength);
+ if (good_start != d->Start)
+ good_parts.push_back(std::make_pair(good_start, goodLength));
+ break;
+ }
+ bad_start = current;
+ --current;
+ // ensure that this is really a comment and not a '#' in the middle of a line
+ if (*current == '\n')
+ {
+ size_t const goodLength = (current - good_start) + 1;
+ d->chunks.emplace_back(true, goodLength);
+ good_parts.push_back(std::make_pair(good_start, goodLength));
+ good_start = nullptr;
+ d->isCommentedLine = true;
+ }
+ current += 2;
+ }
+ else // the current line is a comment
+ {
+ current = static_cast<char*>(memchr(current, '\n', restLength));
+ if (current == nullptr)
+ {
+ d->chunks.emplace_back(false, (d->End - bad_start));
+ break;
+ }
+ ++current;
+ // is the next line a comment, too?
+ if (current >= d->End || *current != '#')
+ {
+ d->chunks.emplace_back(false, (current - bad_start));
+ good_start = current;
+ bad_start = nullptr;
+ d->isCommentedLine = false;
+ }
+ ++current;
+ }
+ }
+
+ if (good_parts.empty() == false)
+ {
+ // we found comments, so move later parts over them
+ current = d->Start;
+ for (auto const &good: good_parts)
+ {
+ memmove(current, good.first, good.second);
+ current += good.second;
+ }
+ d->End = current;
+ }
+
+ if (d->isCommentedLine == true)
+ {
+ // deal with a buffer containing only comments
+ // or an (unfinished) comment at the end
+ if (good_parts.empty() == true)
+ d->End = d->Start;
+ else
+ d->Start = d->End;
+ }
+ else
+ {
+ // the buffer was all comment, but ended with the buffer
+ if (good_parts.empty() == true && good_start >= d->End)
+ d->End = d->Start;
+ else
+ d->Start = d->End;
+ }
+}
+bool pkgTagFile::Fill()
+{
+ unsigned long long const EndSize = d->End - d->Start;
+ if (EndSize != 0)
+ {
+ memmove(d->Buffer,d->Start,EndSize);
+ d->Start = d->End = d->Buffer + EndSize;
+ }
+ else
+ d->Start = d->End = d->Buffer;
+
+ unsigned long long Actual = 0;
+ while (d->Done == false && d->Size > (Actual + 1))
+ {
+ if (FillBuffer(d) == false)
+ return false;
+ if ((d->Flags & pkgTagFile::SUPPORT_COMMENTS) != 0)
+ RemoveCommentsFromBuffer(d);
+ Actual = d->End - d->Buffer;
+ }
+ d->Start = d->Buffer;
+
+ if (d->Done == true)
+ {
+ if (EndSize <= 3 && Actual == 0)
+ return false;
+ if (d->Size - (d->End - d->Buffer) < 4)
+ return true;
+
+ // Append a double new line if one does not exist
+ unsigned int LineCount = 0;
+ for (const char *E = d->End - 1; E - d->End < 6 && (*E == '\n' || *E == '\r'); E--)
+ if (*E == '\n')
+ ++LineCount;
+ if (LineCount < 2)
+ {
+ if (static_cast<unsigned long long>(d->End - d->Buffer) >= d->Size)
+ Resize(d->Size + 3);
+ for (; LineCount < 2; ++LineCount)
+ *d->End++ = '\n';
+ }
+ }
+ return true;
+}
+ /*}}}*/
+// TagFile::Jump - Jump to a pre-recorded location in the file /*{{{*/
+// ---------------------------------------------------------------------
+/* This jumps to a pre-recorded file location and reads the record
+ that is there */
+bool pkgTagFile::Jump(pkgTagSection &Tag,unsigned long long Offset)
+{
+ if ((d->Flags & pkgTagFile::SUPPORT_COMMENTS) == 0 &&
+ // We are within a buffer space of the next hit..
+ Offset >= d->iOffset && d->iOffset + (d->End - d->Start) > Offset)
+ {
+ unsigned long long Dist = Offset - d->iOffset;
+ d->Start += Dist;
+ d->iOffset += Dist;
+ // if we have seen the end, don't ask for more
+ if (d->Done == true)
+ return Tag.Scan(d->Start, d->End - d->Start);
+ else
+ return Step(Tag);
+ }
+
+ // Reposition and reload..
+ d->iOffset = Offset;
+ d->Done = false;
+ if (d->Fd->Seek(Offset) == false)
+ return false;
+ d->End = d->Start = d->Buffer;
+ d->isCommentedLine = false;
+ d->chunks.clear();
+
+ if (Fill() == false)
+ return false;
+
+ if (Tag.Scan(d->Start, d->End - d->Start) == true)
+ return true;
+
+ // This appends a double new line (for the real eof handling)
+ if (Fill() == false)
+ return false;
+
+ if (Tag.Scan(d->Start, d->End - d->Start, false) == false)
+ return _error->Error(_("Unable to parse package file %s (%d)"),d->Fd->Name().c_str(), 2);
+
+ return true;
+}
+ /*}}}*/
+// pkgTagSection::pkgTagSection - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+APT_IGNORE_DEPRECATED_PUSH
+pkgTagSection::pkgTagSection()
+ : Section(0), d(new pkgTagSectionPrivate()), Stop(0)
+{
+ memset(&AlphaIndexes, 0, sizeof(AlphaIndexes));
+ memset(&BetaIndexes, 0, sizeof(BetaIndexes));
+}
+APT_IGNORE_DEPRECATED_POP
+ /*}}}*/
+// TagSection::Scan - Scan for the end of the header information /*{{{*/
+bool pkgTagSection::Scan(const char *Start,unsigned long MaxLength, bool const Restart)
+{
+ Section = Start;
+ const char *End = Start + MaxLength;
+
+ if (Restart == false && d->Tags.empty() == false)
+ {
+ Stop = Section + d->Tags.back().StartTag;
+ if (End <= Stop)
+ return false;
+ Stop = (const char *)memchr(Stop,'\n',End - Stop);
+ if (Stop == NULL)
+ return false;
+ ++Stop;
+ }
+ else
+ {
+ Stop = Section;
+ if (d->Tags.empty() == false)
+ {
+ memset(&AlphaIndexes, 0, sizeof(AlphaIndexes));
+ memset(&BetaIndexes, 0, sizeof(BetaIndexes));
+ d->Tags.clear();
+ }
+ d->Tags.reserve(0x100);
+ }
+ unsigned int TagCount = d->Tags.size();
+
+ if (Stop == 0)
+ return false;
+
+ pkgTagSectionPrivate::TagData lastTagData(0);
+ lastTagData.EndTag = 0;
+ Key lastTagKey = Key::Unknown;
+ unsigned int lastTagHash = 0;
+ while (Stop < End)
+ {
+ TrimRecord(true,End);
+
+ // this can happen when TrimRecord trims away the entire Record
+ // (e.g. because it just contains comments)
+ if(Stop == End)
+ return true;
+
+ // Start a new index and add it to the hash
+ if (isspace_ascii(Stop[0]) == 0)
+ {
+ // store the last found tag
+ if (lastTagData.EndTag != 0)
+ {
+ if (lastTagKey != Key::Unknown) {
+ AlphaIndexes[static_cast<size_t>(lastTagKey)] = TagCount;
+ } else {
+ if (BetaIndexes[lastTagHash] != 0)
+ lastTagData.NextInBucket = BetaIndexes[lastTagHash];
+ APT_IGNORE_DEPRECATED_PUSH
+ BetaIndexes[lastTagHash] = TagCount;
+ APT_IGNORE_DEPRECATED_POP
+ }
+ d->Tags.push_back(lastTagData);
+ }
+
+ APT_IGNORE_DEPRECATED(++TagCount;)
+ lastTagData = pkgTagSectionPrivate::TagData(Stop - Section);
+ // find the colon separating tag and value
+ char const * Colon = (char const *) memchr(Stop, ':', End - Stop);
+ if (Colon == NULL)
+ return false;
+ // find the end of the tag (which might or might not be the colon)
+ char const * EndTag = Colon;
+ --EndTag;
+ for (; EndTag > Stop && isspace_ascii(*EndTag) != 0; --EndTag)
+ ;
+ ++EndTag;
+ lastTagData.EndTag = EndTag - Section;
+ lastTagKey = pkgTagHash(Stop, EndTag - Stop);
+ if (lastTagKey == Key::Unknown)
+ lastTagHash = BetaHash(Stop, EndTag - Stop);
+ // find the beginning of the value
+ Stop = Colon + 1;
+ for (; Stop < End && isspace_ascii(*Stop) != 0; ++Stop)
+ if (*Stop == '\n' && Stop[1] != ' ')
+ break;
+ if (Stop >= End)
+ return false;
+ lastTagData.StartValue = Stop - Section;
+ }
+
+ Stop = (const char *)memchr(Stop,'\n',End - Stop);
+
+ if (Stop == 0)
+ return false;
+
+ for (; Stop+1 < End && Stop[1] == '\r'; Stop++)
+ /* nothing */
+ ;
+
+ // Double newline marks the end of the record
+ if (Stop+1 < End && Stop[1] == '\n')
+ {
+ if (lastTagData.EndTag != 0)
+ {
+ if (lastTagKey != Key::Unknown) {
+ AlphaIndexes[static_cast<size_t>(lastTagKey)] = TagCount;
+ } else {
+ if (BetaIndexes[lastTagHash] != 0)
+ lastTagData.NextInBucket = BetaIndexes[lastTagHash];
+ APT_IGNORE_DEPRECATED(BetaIndexes[lastTagHash] = TagCount;)
+ }
+ d->Tags.push_back(lastTagData);
+ }
+
+ pkgTagSectionPrivate::TagData const td(Stop - Section);
+ d->Tags.push_back(td);
+ TrimRecord(false,End);
+ return true;
+ }
+
+ Stop++;
+ }
+
+ return false;
+}
+ /*}}}*/
+// TagSection::TrimRecord - Trim off any garbage before/after a record /*{{{*/
+// ---------------------------------------------------------------------
+/* There should be exactly 2 newline at the end of the record, no more. */
+void pkgTagSection::TrimRecord(bool BeforeRecord, const char*& End)
+{
+ if (BeforeRecord == true)
+ return;
+ for (; Stop < End && (Stop[0] == '\n' || Stop[0] == '\r'); Stop++);
+}
+ /*}}}*/
+// TagSection::Trim - Trim off any trailing garbage /*{{{*/
+// ---------------------------------------------------------------------
+/* There should be exactly 1 newline at the end of the buffer, no more. */
+void pkgTagSection::Trim()
+{
+ for (; Stop > Section + 2 && (Stop[-2] == '\n' || Stop[-2] == '\r'); Stop--);
+}
+ /*}}}*/
+// TagSection::Exists - return True if a tag exists /*{{{*/
+bool pkgTagSection::Exists(StringView Tag) const
+{
+ unsigned int tmp;
+ return Find(Tag, tmp);
+}
+ /*}}}*/
+// TagSection::Find - Locate a tag /*{{{*/
+// ---------------------------------------------------------------------
+/* This searches the section for a tag that matches the given string. */
+bool pkgTagSection::Find(Key key,unsigned int &Pos) const
+{
+ auto Bucket = AlphaIndexes[static_cast<size_t>(key)];
+ Pos = Bucket - 1;
+ return Bucket != 0;
+}
+bool pkgTagSection::Find(StringView TagView,unsigned int &Pos) const
+{
+ const char * const Tag = TagView.data();
+ size_t const Length = TagView.length();
+ auto key = pkgTagHash(Tag, Length);
+ if (key != Key::Unknown)
+ return Find(key, Pos);
+
+ unsigned int Bucket = BetaIndexes[BetaHash(Tag, Length)];
+ if (Bucket == 0)
+ return false;
+
+ for (; Bucket != 0; Bucket = d->Tags[Bucket - 1].NextInBucket)
+ {
+ if ((d->Tags[Bucket - 1].EndTag - d->Tags[Bucket - 1].StartTag) != Length)
+ continue;
+
+ char const * const St = Section + d->Tags[Bucket - 1].StartTag;
+ if (strncasecmp(Tag,St,Length) != 0)
+ continue;
+
+ Pos = Bucket - 1;
+ return true;
+ }
+
+ Pos = 0;
+ return false;
+}
+
+bool pkgTagSection::FindInternal(unsigned int Pos, const char *&Start,
+ const char *&End) const
+{
+ Start = Section + d->Tags[Pos].StartValue;
+ // Strip off the gunk from the end
+ End = Section + d->Tags[Pos + 1].StartTag;
+ if (unlikely(Start > End))
+ return _error->Error("Internal parsing error");
+
+ for (; isspace_ascii(End[-1]) != 0 && End > Start; --End);
+
+ return true;
+}
+bool pkgTagSection::Find(StringView Tag,const char *&Start,
+ const char *&End) const
+{
+ unsigned int Pos;
+ return Find(Tag, Pos) && FindInternal(Pos, Start, End);
+}
+bool pkgTagSection::Find(Key key,const char *&Start,
+ const char *&End) const
+{
+ unsigned int Pos;
+ return Find(key, Pos) && FindInternal(Pos, Start, End);
+}
+ /*}}}*/
+// TagSection::FindS - Find a string /*{{{*/
+StringView pkgTagSection::Find(StringView Tag) const
+{
+ const char *Start;
+ const char *End;
+ if (Find(Tag,Start,End) == false)
+ return StringView();
+ return StringView(Start, End - Start);
+}
+StringView pkgTagSection::Find(Key key) const
+{
+ const char *Start;
+ const char *End;
+ if (Find(key,Start,End) == false)
+ return StringView();
+ return StringView(Start, End - Start);
+}
+ /*}}}*/
+// TagSection::FindRawS - Find a string /*{{{*/
+StringView pkgTagSection::FindRawInternal(unsigned int Pos) const
+{
+ char const *Start = (char const *) memchr(Section + d->Tags[Pos].EndTag, ':', d->Tags[Pos].StartValue - d->Tags[Pos].EndTag);
+ ++Start;
+ char const *End = Section + d->Tags[Pos + 1].StartTag;
+ if (unlikely(Start > End))
+ return "";
+
+ for (; isspace_ascii(End[-1]) != 0 && End > Start; --End);
+
+ return StringView(Start, End - Start);
+}
+StringView pkgTagSection::FindRaw(StringView Tag) const
+{
+ unsigned int Pos;
+ return Find(Tag, Pos) ? FindRawInternal(Pos) : "";
+}
+StringView pkgTagSection::FindRaw(Key key) const
+{
+ unsigned int Pos;
+ return Find(key, Pos) ? FindRawInternal(Pos) : "";
+}
+ /*}}}*/
+// TagSection::FindI - Find an integer /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+signed int pkgTagSection::FindIInternal(unsigned int Pos,signed long Default) const
+{
+ const char *Start;
+ const char *Stop;
+ if (FindInternal(Pos,Start,Stop) == false)
+ return Default;
+
+ // Copy it into a temp buffer so we can use strtol
+ char S[300];
+ if ((unsigned)(Stop - Start) >= sizeof(S))
+ return Default;
+ strncpy(S,Start,Stop-Start);
+ S[Stop - Start] = 0;
+
+ errno = 0;
+ char *End;
+ signed long Result = strtol(S,&End,10);
+ if (errno == ERANGE ||
+ Result < std::numeric_limits<int>::min() || Result > std::numeric_limits<int>::max()) {
+ errno = ERANGE;
+ _error->Error(_("Cannot convert %s to integer: out of range"), S);
+ }
+ if (S == End)
+ return Default;
+ return Result;
+}
+signed int pkgTagSection::FindI(Key key,signed long Default) const
+{
+ unsigned int Pos;
+
+ return Find(key, Pos) ? FindIInternal(Pos) : Default;
+}
+signed int pkgTagSection::FindI(StringView Tag,signed long Default) const
+{
+ unsigned int Pos;
+
+ return Find(Tag, Pos) ? FindIInternal(Pos, Default) : Default;
+}
+ /*}}}*/
+// TagSection::FindULL - Find an unsigned long long integer /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+unsigned long long pkgTagSection::FindULLInternal(unsigned int Pos, unsigned long long const &Default) const
+{
+ const char *Start;
+ const char *Stop;
+ if (FindInternal(Pos,Start,Stop) == false)
+ return Default;
+
+ // Copy it into a temp buffer so we can use strtoull
+ char S[100];
+ if ((unsigned)(Stop - Start) >= sizeof(S))
+ return Default;
+ strncpy(S,Start,Stop-Start);
+ S[Stop - Start] = 0;
+
+ char *End;
+ unsigned long long Result = strtoull(S,&End,10);
+ if (S == End)
+ return Default;
+ return Result;
+}
+unsigned long long pkgTagSection::FindULL(Key key, unsigned long long const &Default) const
+{
+ unsigned int Pos;
+
+ return Find(key, Pos) ? FindULLInternal(Pos, Default) : Default;
+}
+unsigned long long pkgTagSection::FindULL(StringView Tag, unsigned long long const &Default) const
+{
+ unsigned int Pos;
+
+ return Find(Tag, Pos) ? FindULLInternal(Pos, Default) : Default;
+}
+ /*}}}*/
+// TagSection::FindB - Find boolean value /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgTagSection::FindBInternal(unsigned int Pos, bool Default) const
+{
+ const char *Start, *Stop;
+ if (FindInternal(Pos, Start, Stop) == false)
+ return Default;
+ return StringToBool(string(Start, Stop));
+}
+bool pkgTagSection::FindB(Key key, bool Default) const
+{
+ unsigned int Pos;
+ return Find(key, Pos) ? FindBInternal(Pos, Default): Default;
+}
+bool pkgTagSection::FindB(StringView Tag, bool Default) const
+{
+ unsigned int Pos;
+ return Find(Tag, Pos) ? FindBInternal(Pos, Default) : Default;
+}
+ /*}}}*/
+// TagSection::FindFlag - Locate a yes/no type flag /*{{{*/
+// ---------------------------------------------------------------------
+/* The bits marked in Flag are masked on/off in Flags */
+bool pkgTagSection::FindFlagInternal(unsigned int Pos, uint8_t &Flags,
+ uint8_t const Flag) const
+{
+ const char *Start;
+ const char *Stop;
+ if (FindInternal(Pos,Start,Stop) == false)
+ return true;
+ return FindFlag(Flags, Flag, Start, Stop);
+}
+bool pkgTagSection::FindFlag(Key key, uint8_t &Flags,
+ uint8_t const Flag) const
+{
+ unsigned int Pos;
+ if (Find(key,Pos) == false)
+ return true;
+ return FindFlagInternal(Pos, Flags, Flag);
+}
+bool pkgTagSection::FindFlag(StringView Tag, uint8_t &Flags,
+ uint8_t const Flag) const
+{
+ unsigned int Pos;
+ if (Find(Tag,Pos) == false)
+ return true;
+ return FindFlagInternal(Pos, Flags, Flag);
+}
+bool pkgTagSection::FindFlag(uint8_t &Flags, uint8_t const Flag,
+ char const* const Start, char const* const Stop)
+{
+ switch (StringToBool(string(Start, Stop)))
+ {
+ case 0:
+ Flags &= ~Flag;
+ return true;
+
+ case 1:
+ Flags |= Flag;
+ return true;
+
+ default:
+ _error->Warning("Unknown flag value: %s",string(Start,Stop).c_str());
+ return true;
+ }
+ return true;
+}
+bool pkgTagSection::FindFlagInternal(unsigned int Pos,unsigned long &Flags,
+ unsigned long Flag) const
+{
+ const char *Start;
+ const char *Stop;
+ if (FindInternal(Pos,Start,Stop) == false)
+ return true;
+ return FindFlag(Flags, Flag, Start, Stop);
+}
+bool pkgTagSection::FindFlag(Key key,unsigned long &Flags,
+ unsigned long Flag) const
+{
+ unsigned int Pos;
+ return Find(key, Pos) ? FindFlagInternal(Pos, Flags, Flag) : true;
+}
+bool pkgTagSection::FindFlag(StringView Tag,unsigned long &Flags,
+ unsigned long Flag) const
+{
+ unsigned int Pos;
+ return Find(Tag, Pos) ? FindFlagInternal(Pos, Flags, Flag) : true;
+}
+bool pkgTagSection::FindFlag(unsigned long &Flags, unsigned long Flag,
+ char const* Start, char const* Stop)
+{
+ switch (StringToBool(string(Start, Stop)))
+ {
+ case 0:
+ Flags &= ~Flag;
+ return true;
+
+ case 1:
+ Flags |= Flag;
+ return true;
+
+ default:
+ _error->Warning("Unknown flag value: %s",string(Start,Stop).c_str());
+ return true;
+ }
+ return true;
+}
+ /*}}}*/
+void pkgTagSection::Get(const char *&Start,const char *&Stop,unsigned int I) const/*{{{*/
+{
+ Start = Section + d->Tags[I].StartTag;
+ Stop = Section + d->Tags[I+1].StartTag;
+}
+ /*}}}*/
+APT_PURE unsigned int pkgTagSection::Count() const { /*{{{*/
+ if (d->Tags.empty() == true)
+ return 0;
+ // the last element is just marking the end and isn't a real one
+ return d->Tags.size() - 1;
+}
+ /*}}}*/
+// TagSection::Write - Ordered (re)writing of fields /*{{{*/
+pkgTagSection::Tag pkgTagSection::Tag::Remove(std::string const &Name)
+{
+ return Tag(REMOVE, Name, "");
+}
+pkgTagSection::Tag pkgTagSection::Tag::Rename(std::string const &OldName, std::string const &NewName)
+{
+ return Tag(RENAME, OldName, NewName);
+}
+pkgTagSection::Tag pkgTagSection::Tag::Rewrite(std::string const &Name, std::string const &Data)
+{
+ if (Data.empty() == true)
+ return Tag(REMOVE, Name, "");
+ else
+ return Tag(REWRITE, Name, Data);
+}
+static bool WriteTag(FileFd &File, std::string Tag, StringView Value)
+{
+ if (Value.empty() || isspace_ascii(Value[0]) != 0)
+ Tag.append(":");
+ else
+ Tag.append(": ");
+ Tag.append(Value.data(), Value.length());
+ Tag.append("\n");
+ return File.Write(Tag.c_str(), Tag.length());
+}
+static bool RewriteTags(FileFd &File, pkgTagSection const * const This, char const * const Tag,
+ std::vector<pkgTagSection::Tag>::const_iterator &R,
+ std::vector<pkgTagSection::Tag>::const_iterator const &REnd)
+{
+ size_t const TagLen = strlen(Tag);
+ for (; R != REnd; ++R)
+ {
+ std::string data;
+ if (R->Name.length() == TagLen && strncasecmp(R->Name.c_str(), Tag, R->Name.length()) == 0)
+ {
+ if (R->Action != pkgTagSection::Tag::REWRITE)
+ break;
+ data = R->Data;
+ }
+ else if(R->Action == pkgTagSection::Tag::RENAME && R->Data.length() == TagLen &&
+ strncasecmp(R->Data.c_str(), Tag, R->Data.length()) == 0)
+ data = This->FindRaw(R->Name.c_str()).to_string();
+ else
+ continue;
+
+ return WriteTag(File, Tag, data);
+ }
+ return true;
+}
+bool pkgTagSection::Write(FileFd &File, char const * const * const Order, std::vector<Tag> const &Rewrite) const
+{
+ // first pass: Write everything we have an order for
+ if (Order != NULL)
+ {
+ for (unsigned int I = 0; Order[I] != 0; ++I)
+ {
+ std::vector<Tag>::const_iterator R = Rewrite.begin();
+ if (RewriteTags(File, this, Order[I], R, Rewrite.end()) == false)
+ return false;
+ if (R != Rewrite.end())
+ continue;
+
+ if (Exists(Order[I]) == false)
+ continue;
+
+ if (WriteTag(File, Order[I], FindRaw(Order[I])) == false)
+ return false;
+ }
+ }
+ // second pass: See if we have tags which aren't ordered
+ if (d->Tags.empty() == false)
+ {
+ for (std::vector<pkgTagSectionPrivate::TagData>::const_iterator T = d->Tags.begin(); T != d->Tags.end() - 1; ++T)
+ {
+ char const * const fieldname = Section + T->StartTag;
+ size_t fieldnamelen = T->EndTag - T->StartTag;
+ if (Order != NULL)
+ {
+ unsigned int I = 0;
+ for (; Order[I] != 0; ++I)
+ {
+ if (fieldnamelen == strlen(Order[I]) && strncasecmp(fieldname, Order[I], fieldnamelen) == 0)
+ break;
+ }
+ if (Order[I] != 0)
+ continue;
+ }
+
+ std::string const name(fieldname, fieldnamelen);
+ std::vector<Tag>::const_iterator R = Rewrite.begin();
+ if (RewriteTags(File, this, name.c_str(), R, Rewrite.end()) == false)
+ return false;
+ if (R != Rewrite.end())
+ continue;
+
+ if (WriteTag(File, name, FindRaw(name)) == false)
+ return false;
+ }
+ }
+ // last pass: see if there are any rewrites remaining we haven't done yet
+ for (std::vector<Tag>::const_iterator R = Rewrite.begin(); R != Rewrite.end(); ++R)
+ {
+ if (R->Action == Tag::REMOVE)
+ continue;
+ std::string const name = ((R->Action == Tag::RENAME) ? R->Data : R->Name);
+ if (Exists(name.c_str()))
+ continue;
+ if (Order != NULL)
+ {
+ unsigned int I = 0;
+ for (; Order[I] != 0; ++I)
+ {
+ if (strncasecmp(name.c_str(), Order[I], name.length()) == 0 && name.length() == strlen(Order[I]))
+ break;
+ }
+ if (Order[I] != 0)
+ continue;
+ }
+
+ if (WriteTag(File, name, ((R->Action == Tag::RENAME) ? FindRaw(R->Name) : R->Data)) == false)
+ return false;
+ }
+ return true;
+}
+ /*}}}*/
+
+void pkgUserTagSection::TrimRecord(bool /*BeforeRecord*/, const char* &End)/*{{{*/
+{
+ for (; Stop < End && (Stop[0] == '\n' || Stop[0] == '\r' || Stop[0] == '#'); Stop++)
+ if (Stop[0] == '#')
+ Stop = (const char*) memchr(Stop,'\n',End-Stop);
+}
+ /*}}}*/
+
+#include "tagfile-order.c"
+
+// TFRewrite - Rewrite a control record /*{{{*/
+// ---------------------------------------------------------------------
+/* This writes the control record to stdout rewriting it as necessary. The
+ override map item specificies the rewriting rules to follow. This also
+ takes the time to sort the feild list. */
+APT_IGNORE_DEPRECATED_PUSH
+bool TFRewrite(FILE *Output,pkgTagSection const &Tags,const char *Order[],
+ TFRewriteData *Rewrite)
+{
+ unsigned char Visited[256]; // Bit 1 is Order, Bit 2 is Rewrite
+ for (unsigned I = 0; I != 256; I++)
+ Visited[I] = 0;
+
+ // Set new tag up as necessary.
+ for (unsigned int J = 0; Rewrite != 0 && Rewrite[J].Tag != 0; J++)
+ {
+ if (Rewrite[J].NewTag == 0)
+ Rewrite[J].NewTag = Rewrite[J].Tag;
+ }
+
+ // Write all of the tags, in order.
+ if (Order != NULL)
+ {
+ for (unsigned int I = 0; Order[I] != 0; I++)
+ {
+ bool Rewritten = false;
+
+ // See if this is a field that needs to be rewritten
+ for (unsigned int J = 0; Rewrite != 0 && Rewrite[J].Tag != 0; J++)
+ {
+ if (strcasecmp(Rewrite[J].Tag,Order[I]) == 0)
+ {
+ Visited[J] |= 2;
+ if (Rewrite[J].Rewrite != 0 && Rewrite[J].Rewrite[0] != 0)
+ {
+ if (isspace_ascii(Rewrite[J].Rewrite[0]))
+ fprintf(Output,"%s:%s\n",Rewrite[J].NewTag,Rewrite[J].Rewrite);
+ else
+ fprintf(Output,"%s: %s\n",Rewrite[J].NewTag,Rewrite[J].Rewrite);
+ }
+ Rewritten = true;
+ break;
+ }
+ }
+
+ // See if it is in the fragment
+ unsigned Pos;
+ if (Tags.Find(StringView(Order[I]),Pos) == false)
+ continue;
+ Visited[Pos] |= 1;
+
+ if (Rewritten == true)
+ continue;
+
+ /* Write out this element, taking a moment to rewrite the tag
+ in case of changes of case. */
+ const char *Start;
+ const char *Stop;
+ Tags.Get(Start,Stop,Pos);
+
+ if (fputs(Order[I],Output) < 0)
+ return _error->Errno("fputs","IO Error to output");
+ Start += strlen(Order[I]);
+ if (fwrite(Start,Stop - Start,1,Output) != 1)
+ return _error->Errno("fwrite","IO Error to output");
+ if (Stop[-1] != '\n')
+ fprintf(Output,"\n");
+ }
+ }
+
+ // Now write all the old tags that were missed.
+ for (unsigned int I = 0; I != Tags.Count(); I++)
+ {
+ if ((Visited[I] & 1) == 1)
+ continue;
+
+ const char *Start;
+ const char *Stop;
+ Tags.Get(Start,Stop,I);
+ const char *End = Start;
+ for (; End < Stop && *End != ':'; End++);
+
+ // See if this is a field that needs to be rewritten
+ bool Rewritten = false;
+ for (unsigned int J = 0; Rewrite != 0 && Rewrite[J].Tag != 0; J++)
+ {
+ if (stringcasecmp(Start,End,Rewrite[J].Tag) == 0)
+ {
+ Visited[J] |= 2;
+ if (Rewrite[J].Rewrite != 0 && Rewrite[J].Rewrite[0] != 0)
+ {
+ if (isspace_ascii(Rewrite[J].Rewrite[0]))
+ fprintf(Output,"%s:%s\n",Rewrite[J].NewTag,Rewrite[J].Rewrite);
+ else
+ fprintf(Output,"%s: %s\n",Rewrite[J].NewTag,Rewrite[J].Rewrite);
+ }
+
+ Rewritten = true;
+ break;
+ }
+ }
+
+ if (Rewritten == true)
+ continue;
+
+ // Write out this element
+ if (fwrite(Start,Stop - Start,1,Output) != 1)
+ return _error->Errno("fwrite","IO Error to output");
+ if (Stop[-1] != '\n')
+ fprintf(Output,"\n");
+ }
+
+ // Now write all the rewrites that were missed
+ for (unsigned int J = 0; Rewrite != 0 && Rewrite[J].Tag != 0; J++)
+ {
+ if ((Visited[J] & 2) == 2)
+ continue;
+
+ if (Rewrite[J].Rewrite != 0 && Rewrite[J].Rewrite[0] != 0)
+ {
+ if (isspace_ascii(Rewrite[J].Rewrite[0]))
+ fprintf(Output,"%s:%s\n",Rewrite[J].NewTag,Rewrite[J].Rewrite);
+ else
+ fprintf(Output,"%s: %s\n",Rewrite[J].NewTag,Rewrite[J].Rewrite);
+ }
+ }
+
+ return true;
+}
+APT_IGNORE_DEPRECATED_POP
+ /*}}}*/
+
+pkgTagSection::~pkgTagSection() { delete d; }
diff --git a/apt-pkg/tagfile.h b/apt-pkg/tagfile.h
new file mode 100644
index 000000000..e02e7332e
--- /dev/null
+++ b/apt-pkg/tagfile.h
@@ -0,0 +1,241 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Fast scanner for RFC-822 type header information
+
+ This parser handles Debian package files (and others). Their form is
+ RFC-822 type header fields in groups separated by a blank line.
+
+ The parser reads the file and provides methods to step linearly
+ over it or to jump to a pre-recorded start point and read that record.
+
+ A second class is used to perform pre-parsing of the record. It works
+ by indexing the start of each header field and providing lookup
+ functions for header fields.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_TAGFILE_H
+#define PKGLIB_TAGFILE_H
+
+#include <apt-pkg/macros.h>
+
+#include <stdio.h>
+#include <stdint.h>
+
+#include <string>
+#include <vector>
+#include <list>
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+#include <apt-pkg/string_view.h>
+#endif
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/fileutl.h>
+#endif
+
+class FileFd;
+class pkgTagSectionPrivate;
+class pkgTagFilePrivate;
+
+/** \class pkgTagSection parses a single deb822 stanza and provides various Find methods
+ * to extract the included values. It can also be used to modify and write a
+ * valid deb822 stanza optionally (re)ordering the fields inside the stanza.
+ *
+ * Beware: This class does \b NOT support (#-)comments in in- or output!
+ * If the input contains comments they have to be stripped first like pkgTagFile
+ * does with SUPPORT_COMMENTS flag set. */
+class pkgTagSection
+{
+ const char *Section;
+ unsigned int AlphaIndexes[128];
+ unsigned int BetaIndexes[128];
+
+ pkgTagSectionPrivate * const d;
+
+ APT_HIDDEN bool FindInternal(unsigned int Pos,const char *&Start, const char *&End) const;
+#if defined(APT_PKG_EXPOSE_STRING_VIEW)
+ APT_HIDDEN APT::StringView FindInternal(unsigned int Pos) const;
+ APT_HIDDEN APT::StringView FindRawInternal(unsigned int Pos) const;
+#endif
+ APT_HIDDEN signed int FindIInternal(unsigned int Pos,signed long Default = 0) const;
+ APT_HIDDEN bool FindBInternal(unsigned int Pos, bool Default = false) const;
+ APT_HIDDEN unsigned long long FindULLInternal(unsigned int Pos, unsigned long long const &Default = 0) const;
+ APT_HIDDEN bool FindFlagInternal(unsigned int Pos,uint8_t &Flags, uint8_t const Flag) const;
+ APT_HIDDEN bool FindFlagInternal(unsigned int Pos,unsigned long &Flags, unsigned long Flag) const;
+
+ protected:
+ const char *Stop;
+
+ public:
+
+ inline bool operator ==(const pkgTagSection &rhs) {return Section == rhs.Section;};
+ inline bool operator !=(const pkgTagSection &rhs) {return Section != rhs.Section;};
+
+#if !defined(APT_PKG_EXPOSE_STRING_VIEW) || defined(APT_COMPILING_TAGFILE_COMPAT_CC)
+ bool Find(const char *Tag,const char *&Start, const char *&End) const;
+ bool Find(const char *Tag,unsigned int &Pos) const;
+ signed int FindI(const char *Tag,signed long Default = 0) const;
+ bool FindB(const char *Tag, bool const &Default = false) const;
+ unsigned long long FindULL(const char *Tag, unsigned long long const &Default = 0) const;
+ bool FindFlag(const char * const Tag,uint8_t &Flags,
+ uint8_t const Flag) const;
+ bool FindFlag(const char *Tag,unsigned long &Flags,
+ unsigned long Flag) const;
+ bool Exists(const char* const Tag) const;
+#endif
+ // TODO: Remove internally
+ std::string FindS(const char *Tag) const;
+ std::string FindRawS(const char *Tag) const;
+
+ // Functions for lookup with a perfect hash function
+ enum class Key;
+ APT_HIDDEN bool Find(Key key,const char *&Start, const char *&End) const;
+ APT_HIDDEN bool Find(Key key,unsigned int &Pos) const;
+ APT_HIDDEN signed int FindI(Key key,signed long Default = 0) const;
+ APT_HIDDEN bool FindB(Key key, bool Default = false) const;
+ APT_HIDDEN unsigned long long FindULL(Key key, unsigned long long const &Default = 0) const;
+ APT_HIDDEN bool FindFlag(Key key,uint8_t &Flags, uint8_t const Flag) const;
+ APT_HIDDEN bool FindFlag(Key key,unsigned long &Flags, unsigned long Flag) const;
+ APT_HIDDEN bool Exists(Key key) const;
+#ifdef APT_PKG_EXPOSE_STRING_VIEW
+ APT_HIDDEN APT::StringView Find(Key key) const;
+ APT_HIDDEN APT::StringView FindRaw(Key key) const;
+ APT_HIDDEN bool Find(APT::StringView Tag,const char *&Start, const char *&End) const;
+ APT_HIDDEN bool Find(APT::StringView Tag,unsigned int &Pos) const;
+ APT_HIDDEN APT::StringView Find(APT::StringView Tag) const;
+ APT_HIDDEN APT::StringView FindRaw(APT::StringView Tag) const;
+ APT_HIDDEN signed int FindI(APT::StringView Tag,signed long Default = 0) const;
+ APT_HIDDEN bool FindB(APT::StringView, bool Default = false) const;
+ APT_HIDDEN unsigned long long FindULL(APT::StringView Tag, unsigned long long const &Default = 0) const;
+
+ APT_HIDDEN bool FindFlag(APT::StringView Tag,uint8_t &Flags,
+ uint8_t const Flag) const;
+ APT_HIDDEN bool FindFlag(APT::StringView Tag,unsigned long &Flags,
+ unsigned long Flag) const;
+ APT_HIDDEN bool Exists(APT::StringView Tag) const;
+#endif
+
+ bool static FindFlag(uint8_t &Flags, uint8_t const Flag,
+ const char* const Start, const char* const Stop);
+ bool static FindFlag(unsigned long &Flags, unsigned long Flag,
+ const char* Start, const char* Stop);
+
+ /** \brief searches the boundaries of the current section
+ *
+ * While parameter Start marks the beginning of the section, this method
+ * will search for the first double newline in the data stream which marks
+ * the end of the section. It also does a first pass over the content of
+ * the section parsing it as encountered for processing later on by Find
+ *
+ * @param Start is the beginning of the section
+ * @param MaxLength is the size of valid data in the stream pointed to by Start
+ * @param Restart if enabled internal state will be cleared, otherwise it is
+ * assumed that now more data is available in the stream and the parsing will
+ * start were it encountered insufficent data the last time.
+ *
+ * @return \b true if section end was found, \b false otherwise.
+ * Beware that internal state will be inconsistent if \b false is returned!
+ */
+ APT_MUSTCHECK bool Scan(const char *Start, unsigned long MaxLength, bool const Restart = true);
+
+ inline unsigned long size() const {return Stop - Section;};
+ void Trim();
+ virtual void TrimRecord(bool BeforeRecord, const char* &End);
+
+ /** \brief amount of Tags in the current section
+ *
+ * Note: if a Tag is mentioned repeatedly it will be counted multiple
+ * times, but only the last occurrence is available via Find methods.
+ */
+ unsigned int Count() const;
+
+ void Get(const char *&Start,const char *&Stop,unsigned int I) const;
+
+ inline void GetSection(const char *&Start,const char *&Stop) const
+ {
+ Start = Section;
+ Stop = this->Stop;
+ };
+
+ pkgTagSection();
+ virtual ~pkgTagSection();
+
+ struct Tag
+ {
+ enum ActionType { REMOVE, RENAME, REWRITE } Action;
+ std::string Name;
+ std::string Data;
+
+ static Tag Remove(std::string const &Name);
+ static Tag Rename(std::string const &OldName, std::string const &NewName);
+ static Tag Rewrite(std::string const &Name, std::string const &Data);
+ private:
+ Tag(ActionType const Action, std::string const &Name, std::string const &Data) :
+ Action(Action), Name(Name), Data(Data) {}
+ };
+
+ /** Write this section (with optional rewrites) to a file
+ *
+ * @param File to write the section to
+ * @param Order in which tags should appear in the file
+ * @param Rewrite is a set of tags to be renamed, rewritten and/or removed
+ * @return \b true if successful, otherwise \b false
+ */
+ bool Write(FileFd &File, char const * const * const Order = NULL, std::vector<Tag> const &Rewrite = std::vector<Tag>()) const;
+};
+
+
+class APT_DEPRECATED_MSG("Use pkgTagFile with the SUPPORT_COMMENTS flag instead") pkgUserTagSection : public pkgTagSection
+{
+ virtual void TrimRecord(bool BeforeRecord, const char* &End) APT_OVERRIDE;
+};
+
+/** \class pkgTagFile reads and prepares a deb822 formatted file for parsing
+ * via #pkgTagSection. The default mode tries to be as fast as possible and
+ * assumes perfectly valid (machine generated) files like Packages. Support
+ * for comments e.g. needs to be enabled explicitly. */
+class pkgTagFile
+{
+ pkgTagFilePrivate * const d;
+
+ APT_HIDDEN bool Fill();
+ APT_HIDDEN bool Resize();
+ APT_HIDDEN bool Resize(unsigned long long const newSize);
+
+public:
+
+ bool Step(pkgTagSection &Section);
+ unsigned long Offset();
+ bool Jump(pkgTagSection &Tag,unsigned long long Offset);
+
+ enum Flags
+ {
+ STRICT = 0,
+ SUPPORT_COMMENTS = 1 << 0,
+ };
+
+ void Init(FileFd * const F, pkgTagFile::Flags const Flags, unsigned long long Size = 32*1024);
+ void Init(FileFd * const F,unsigned long long const Size = 32*1024);
+
+ pkgTagFile(FileFd * const F, pkgTagFile::Flags const Flags, unsigned long long Size = 32*1024);
+ pkgTagFile(FileFd * const F,unsigned long long Size = 32*1024);
+ virtual ~pkgTagFile();
+};
+
+extern const char **TFRewritePackageOrder;
+extern const char **TFRewriteSourceOrder;
+
+APT_IGNORE_DEPRECATED_PUSH
+struct APT_DEPRECATED_MSG("Use pkgTagSection::Tag and pkgTagSection::Write() instead") TFRewriteData
+{
+ const char *Tag;
+ const char *Rewrite;
+ const char *NewTag;
+};
+APT_DEPRECATED_MSG("Use pkgTagSection::Tag and pkgTagSection::Write() instead") bool TFRewrite(FILE *Output,pkgTagSection const &Tags,const char *Order[],
+ TFRewriteData *Rewrite);
+APT_IGNORE_DEPRECATED_POP
+
+#endif
diff --git a/apt-pkg/update.cc b/apt-pkg/update.cc
new file mode 100644
index 000000000..f7075c446
--- /dev/null
+++ b/apt-pkg/update.cc
@@ -0,0 +1,133 @@
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/acquire-item.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/update.h>
+
+#include <string>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+// ListUpdate - construct Fetcher and update the cache files /*{{{*/
+// ---------------------------------------------------------------------
+/* This is a simple wrapper to update the cache. it will fetch stuff
+ * from the network (or any other sources defined in sources.list)
+ */
+bool ListUpdate(pkgAcquireStatus &Stat,
+ pkgSourceList &List,
+ int PulseInterval)
+{
+ pkgAcquire Fetcher(&Stat);
+ if (Fetcher.GetLock(_config->FindDir("Dir::State::Lists")) == false)
+ return false;
+
+ // Populate it with the source selection
+ if (List.GetIndexes(&Fetcher) == false)
+ return false;
+
+ return AcquireUpdate(Fetcher, PulseInterval, true);
+}
+ /*}}}*/
+// AcquireUpdate - take Fetcher and update the cache files /*{{{*/
+// ---------------------------------------------------------------------
+/* This is a simple wrapper to update the cache with a provided acquire
+ * If you only need control over Status and the used SourcesList use
+ * ListUpdate method instead.
+ */
+bool AcquireUpdate(pkgAcquire &Fetcher, int const PulseInterval,
+ bool const RunUpdateScripts, bool const ListCleanup)
+{
+ // Run scripts
+ if (RunUpdateScripts == true)
+ RunScripts("APT::Update::Pre-Invoke");
+
+ pkgAcquire::RunResult res;
+ if(PulseInterval > 0)
+ res = Fetcher.Run(PulseInterval);
+ else
+ res = Fetcher.Run();
+
+ bool const errorsWereReported = (res == pkgAcquire::Failed);
+ bool Failed = errorsWereReported;
+ bool TransientNetworkFailure = false;
+ bool AllFailed = true;
+ for (pkgAcquire::ItemIterator I = Fetcher.ItemsBegin();
+ I != Fetcher.ItemsEnd(); ++I)
+ {
+ switch ((*I)->Status)
+ {
+ case pkgAcquire::Item::StatDone:
+ AllFailed = false;
+ continue;
+ case pkgAcquire::Item::StatTransientNetworkError:
+ TransientNetworkFailure = true;
+ break;
+ case pkgAcquire::Item::StatIdle:
+ case pkgAcquire::Item::StatFetching:
+ case pkgAcquire::Item::StatError:
+ case pkgAcquire::Item::StatAuthError:
+ Failed = true;
+ break;
+ }
+
+ (*I)->Finished();
+
+ if (errorsWereReported)
+ continue;
+
+ ::URI uri((*I)->DescURI());
+ uri.User.clear();
+ uri.Password.clear();
+ std::string const descUri = std::string(uri);
+ // Show an error for non-transient failures, otherwise only warn
+ if ((*I)->Status == pkgAcquire::Item::StatTransientNetworkError)
+ _error->Warning(_("Failed to fetch %s %s"), descUri.c_str(),
+ (*I)->ErrorText.c_str());
+ else
+ _error->Error(_("Failed to fetch %s %s"), descUri.c_str(),
+ (*I)->ErrorText.c_str());
+ }
+
+ // Clean out any old list files
+ // Keep "APT::Get::List-Cleanup" name for compatibility, but
+ // this is really a global option for the APT library now
+ if (!TransientNetworkFailure && !Failed && ListCleanup == true &&
+ (_config->FindB("APT::Get::List-Cleanup",true) == true &&
+ _config->FindB("APT::List-Cleanup",true) == true))
+ {
+ if (Fetcher.Clean(_config->FindDir("Dir::State::lists")) == false ||
+ Fetcher.Clean(_config->FindDir("Dir::State::lists") + "partial/") == false)
+ // something went wrong with the clean
+ return false;
+ }
+
+ bool Res = true;
+
+ if (errorsWereReported == true)
+ Res = false;
+ else if (TransientNetworkFailure == true)
+ Res = _error->Warning(_("Some index files failed to download. They have been ignored, or old ones used instead."));
+ else if (Failed == true)
+ Res = _error->Error(_("Some index files failed to download. They have been ignored, or old ones used instead."));
+
+ // Run the success scripts if all was fine
+ if (RunUpdateScripts == true)
+ {
+ if(AllFailed == false)
+ RunScripts("APT::Update::Post-Invoke-Success");
+
+ // Run the other scripts
+ RunScripts("APT::Update::Post-Invoke");
+ }
+ return Res;
+}
+ /*}}}*/
diff --git a/apt-pkg/update.h b/apt-pkg/update.h
new file mode 100644
index 000000000..559516f1b
--- /dev/null
+++ b/apt-pkg/update.h
@@ -0,0 +1,22 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Update - ListUpdate related code
+
+ ##################################################################### */
+ /*}}}*/
+
+#ifndef PKGLIB_UPDATE_H
+#define PKGLIB_UPDATE_H
+
+class pkgAcquireStatus;
+class pkgSourceList;
+class pkgAcquire;
+
+bool ListUpdate(pkgAcquireStatus &progress, pkgSourceList &List, int PulseInterval=0);
+bool AcquireUpdate(pkgAcquire &Fetcher, int const PulseInterval = 0,
+ bool const RunUpdateScripts = true, bool const ListCleanup = true);
+
+
+#endif
diff --git a/apt-pkg/upgrade.cc b/apt-pkg/upgrade.cc
new file mode 100644
index 000000000..a61789c11
--- /dev/null
+++ b/apt-pkg/upgrade.cc
@@ -0,0 +1,302 @@
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/algorithms.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/edsp.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/progress.h>
+#include <apt-pkg/upgrade.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#include <string>
+
+#include <apti18n.h>
+ /*}}}*/
+
+// DistUpgrade - Distribution upgrade /*{{{*/
+// ---------------------------------------------------------------------
+/* This autoinstalls every package and then force installs every
+ pre-existing package. This creates the initial set of conditions which
+ most likely contain problems because too many things were installed.
+
+ The problem resolver is used to resolve the problems.
+ */
+static bool pkgDistUpgrade(pkgDepCache &Cache, OpProgress * const Progress)
+{
+ std::string const solver = _config->Find("APT::Solver", "internal");
+ auto const ret = EDSP::ResolveExternal(solver.c_str(), Cache, EDSP::Request::UPGRADE_ALL, Progress);
+ if (solver != "internal")
+ return ret;
+
+ if (Progress != NULL)
+ Progress->OverallProgress(0, 100, 1, _("Calculating upgrade"));
+
+ pkgDepCache::ActionGroup group(Cache);
+
+ /* Upgrade all installed packages first without autoinst to help the resolver
+ in versioned or-groups to upgrade the old solver instead of installing
+ a new one (if the old solver is not the first one [anymore]) */
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ if (I->CurrentVer != 0)
+ Cache.MarkInstall(I, false, 0, false);
+
+ if (Progress != NULL)
+ Progress->Progress(10);
+
+ /* Auto upgrade all installed packages, this provides the basis
+ for the installation */
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ if (I->CurrentVer != 0)
+ Cache.MarkInstall(I, true, 0, false);
+
+ if (Progress != NULL)
+ Progress->Progress(50);
+
+ /* Now, install each essential package which is not installed
+ (and not provided by another package in the same name group) */
+ std::string essential = _config->Find("pkgCacheGen::Essential", "all");
+ if (essential == "all")
+ {
+ for (pkgCache::GrpIterator G = Cache.GrpBegin(); G.end() == false; ++G)
+ {
+ bool isEssential = false;
+ bool instEssential = false;
+ for (pkgCache::PkgIterator P = G.PackageList(); P.end() == false; P = G.NextPkg(P))
+ {
+ if ((P->Flags & pkgCache::Flag::Essential) != pkgCache::Flag::Essential)
+ continue;
+ isEssential = true;
+ if (Cache[P].Install() == true)
+ {
+ instEssential = true;
+ break;
+ }
+ }
+ if (isEssential == false || instEssential == true)
+ continue;
+ pkgCache::PkgIterator P = G.FindPreferredPkg();
+ Cache.MarkInstall(P, true, 0, false);
+ }
+ }
+ else if (essential != "none")
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ if ((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential)
+ Cache.MarkInstall(I, true, 0, false);
+
+ if (Progress != NULL)
+ Progress->Progress(55);
+
+ /* We do it again over all previously installed packages to force
+ conflict resolution on them all. */
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ if (I->CurrentVer != 0)
+ Cache.MarkInstall(I, false, 0, false);
+
+ if (Progress != NULL)
+ Progress->Progress(65);
+
+ pkgProblemResolver Fix(&Cache);
+
+ if (Progress != NULL)
+ Progress->Progress(95);
+
+ // Hold back held packages.
+ if (_config->FindB("APT::Ignore-Hold",false) == false)
+ {
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ {
+ if (I->SelectedState == pkgCache::State::Hold)
+ {
+ Fix.Protect(I);
+ Cache.MarkKeep(I, false, false);
+ }
+ }
+ }
+
+ bool const success = Fix.ResolveInternal(false);
+ if (Progress != NULL)
+ Progress->Done();
+ return success;
+}
+bool pkgDistUpgrade(pkgDepCache &Cache)
+{
+ return pkgDistUpgrade(Cache, NULL);
+}
+ /*}}}*/
+// AllUpgradeNoNewPackages - Upgrade but no removals or new pkgs /*{{{*/
+static bool pkgAllUpgradeNoNewPackages(pkgDepCache &Cache, OpProgress * const Progress)
+{
+ std::string const solver = _config->Find("APT::Solver", "internal");
+ constexpr auto flags = EDSP::Request::UPGRADE_ALL | EDSP::Request::FORBID_NEW_INSTALL | EDSP::Request::FORBID_REMOVE;
+ auto const ret = EDSP::ResolveExternal(solver.c_str(), Cache, flags, Progress);
+ if (solver != "internal")
+ return ret;
+
+ if (Progress != NULL)
+ Progress->OverallProgress(0, 100, 1, _("Calculating upgrade"));
+
+ pkgDepCache::ActionGroup group(Cache);
+ pkgProblemResolver Fix(&Cache);
+
+ // Upgrade all installed packages
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ {
+ if (Cache[I].Install() == true)
+ Fix.Protect(I);
+
+ if (_config->FindB("APT::Ignore-Hold",false) == false)
+ if (I->SelectedState == pkgCache::State::Hold)
+ continue;
+
+ if (I->CurrentVer != 0 && Cache[I].InstallVer != 0)
+ Cache.MarkInstall(I, false, 0, false);
+ }
+
+ if (Progress != NULL)
+ Progress->Progress(50);
+
+ // resolve remaining issues via keep
+ bool const success = Fix.ResolveByKeepInternal();
+ if (Progress != NULL)
+ Progress->Done();
+ return success;
+}
+ /*}}}*/
+// AllUpgradeWithNewInstalls - Upgrade + install new packages as needed /*{{{*/
+// ---------------------------------------------------------------------
+/* Right now the system must be consistent before this can be called.
+ * Upgrade as much as possible without deleting anything (useful for
+ * stable systems)
+ */
+static bool pkgAllUpgradeWithNewPackages(pkgDepCache &Cache, OpProgress * const Progress)
+{
+ std::string const solver = _config->Find("APT::Solver", "internal");
+ constexpr auto flags = EDSP::Request::UPGRADE_ALL | EDSP::Request::FORBID_REMOVE;
+ auto const ret = EDSP::ResolveExternal(solver.c_str(), Cache, flags, Progress);
+ if (solver != "internal")
+ return ret;
+
+ if (Progress != NULL)
+ Progress->OverallProgress(0, 100, 1, _("Calculating upgrade"));
+
+ pkgDepCache::ActionGroup group(Cache);
+ pkgProblemResolver Fix(&Cache);
+
+ // provide the initial set of stuff we want to upgrade by marking
+ // all upgradable packages for upgrade
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ {
+ if (I->CurrentVer != 0 && Cache[I].InstallVer != 0)
+ {
+ if (_config->FindB("APT::Ignore-Hold",false) == false)
+ if (I->SelectedState == pkgCache::State::Hold)
+ continue;
+
+ Cache.MarkInstall(I, false, 0, false);
+ }
+ }
+
+ if (Progress != NULL)
+ Progress->Progress(10);
+
+ // then let auto-install loose
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ if (Cache[I].Install())
+ Cache.MarkInstall(I, true, 0, false);
+
+ if (Progress != NULL)
+ Progress->Progress(50);
+
+ // ... but it may remove stuff, we need to clean up afterwards again
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ if (Cache[I].Delete() == true)
+ Cache.MarkKeep(I, false, false);
+
+ if (Progress != NULL)
+ Progress->Progress(60);
+
+ // resolve remaining issues via keep
+ bool const success = Fix.ResolveByKeepInternal();
+ if (Progress != NULL)
+ Progress->Done();
+ return success;
+}
+ /*}}}*/
+// AllUpgrade - Upgrade as many packages as possible /*{{{*/
+// ---------------------------------------------------------------------
+/* Right now the system must be consistent before this can be called.
+ It also will not change packages marked for install, it only tries
+ to install packages not marked for install */
+static bool pkgAllUpgrade(pkgDepCache &Cache, OpProgress * const Progress)
+{
+ return pkgAllUpgradeNoNewPackages(Cache, Progress);
+}
+bool pkgAllUpgrade(pkgDepCache &Cache)
+{
+ return pkgAllUpgrade(Cache, NULL);
+}
+ /*}}}*/
+// MinimizeUpgrade - Minimizes the set of packages to be upgraded /*{{{*/
+// ---------------------------------------------------------------------
+/* This simply goes over the entire set of packages and tries to keep
+ each package marked for upgrade. If a conflict is generated then
+ the package is restored. */
+bool pkgMinimizeUpgrade(pkgDepCache &Cache)
+{
+ pkgDepCache::ActionGroup group(Cache);
+
+ if (Cache.BrokenCount() != 0)
+ return false;
+
+ // We loop for 10 tries to get the minimal set size.
+ bool Change = false;
+ unsigned int Count = 0;
+ do
+ {
+ Change = false;
+ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
+ {
+ // Not interesting
+ if (Cache[I].Upgrade() == false || Cache[I].NewInstall() == true)
+ continue;
+
+ // Keep it and see if that is OK
+ Cache.MarkKeep(I, false, false);
+ if (Cache.BrokenCount() != 0)
+ Cache.MarkInstall(I, false, 0, false);
+ else
+ {
+ // If keep didn't actually do anything then there was no change..
+ if (Cache[I].Upgrade() == false)
+ Change = true;
+ }
+ }
+ ++Count;
+ }
+ while (Change == true && Count < 10);
+
+ if (Cache.BrokenCount() != 0)
+ return _error->Error("Internal Error in pkgMinimizeUpgrade");
+
+ return true;
+}
+ /*}}}*/
+// APT::Upgrade::Upgrade - Upgrade using a specific strategy /*{{{*/
+bool APT::Upgrade::Upgrade(pkgDepCache &Cache, int mode, OpProgress * const Progress)
+{
+APT_IGNORE_DEPRECATED_PUSH
+ if (mode == ALLOW_EVERYTHING)
+ return pkgDistUpgrade(Cache, Progress);
+ else if ((mode & ~FORBID_REMOVE_PACKAGES) == 0)
+ return pkgAllUpgradeWithNewPackages(Cache, Progress);
+ else if ((mode & ~(FORBID_REMOVE_PACKAGES|FORBID_INSTALL_NEW_PACKAGES)) == 0)
+ return pkgAllUpgradeNoNewPackages(Cache, Progress);
+ else
+ _error->Error("pkgAllUpgrade called with unsupported mode %i", mode);
+APT_IGNORE_DEPRECATED_POP
+ return false;
+}
+ /*}}}*/
diff --git a/apt-pkg/upgrade.h b/apt-pkg/upgrade.h
new file mode 100644
index 000000000..2d9c0fa36
--- /dev/null
+++ b/apt-pkg/upgrade.h
@@ -0,0 +1,35 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Upgrade - Upgrade/DistUpgrade related code
+
+ ##################################################################### */
+ /*}}}*/
+
+#ifndef PKGLIB_UPGRADE_H
+#define PKGLIB_UPGRADE_H
+
+#include <stddef.h>
+#include <apt-pkg/macros.h>
+
+class pkgDepCache;
+class OpProgress;
+
+namespace APT {
+ namespace Upgrade {
+ // FIXME: make this "enum class UpgradeMode {" once we enable c++11
+ enum UpgradeMode {
+ FORBID_REMOVE_PACKAGES = 1,
+ FORBID_INSTALL_NEW_PACKAGES = 2,
+ ALLOW_EVERYTHING = 0
+ };
+ bool Upgrade(pkgDepCache &Cache, int UpgradeMode, OpProgress * const Progress = NULL);
+ }
+}
+
+APT_DEPRECATED_MSG("Use APT::Upgrade::Upgrade() instead") bool pkgDistUpgrade(pkgDepCache &Cache);
+APT_DEPRECATED_MSG("Use APT::Upgrade::Upgrade() instead") bool pkgAllUpgrade(pkgDepCache &Cache);
+
+bool pkgMinimizeUpgrade(pkgDepCache &Cache);
+#endif
diff --git a/apt-pkg/version.cc b/apt-pkg/version.cc
new file mode 100644
index 000000000..f32d39a69
--- /dev/null
+++ b/apt-pkg/version.cc
@@ -0,0 +1,45 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: version.cc,v 1.10 2001/02/20 07:03:17 jgg Exp $
+/* ######################################################################
+
+ Version - Versioning system..
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/version.h>
+
+#include <string.h>
+#include <stdlib.h>
+ /*}}}*/
+
+static pkgVersioningSystem *VSList[10];
+pkgVersioningSystem **pkgVersioningSystem::GlobalList = VSList;
+unsigned long pkgVersioningSystem::GlobalListLen = 0;
+
+// pkgVS::pkgVersioningSystem - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* Link to the global list of versioning systems supported */
+pkgVersioningSystem::pkgVersioningSystem() : Label(NULL)
+{
+ VSList[GlobalListLen] = this;
+ ++GlobalListLen;
+}
+ /*}}}*/
+// pkgVS::GetVS - Find a VS by name /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgVersioningSystem *pkgVersioningSystem::GetVS(const char *Label)
+{
+ for (unsigned I = 0; I != GlobalListLen; I++)
+ if (strcmp(VSList[I]->Label,Label) == 0)
+ return VSList[I];
+ return 0;
+}
+ /*}}}*/
+
+
+pkgVersioningSystem::~pkgVersioningSystem() {}
diff --git a/apt-pkg/version.h b/apt-pkg/version.h
new file mode 100644
index 000000000..5110ecaa7
--- /dev/null
+++ b/apt-pkg/version.h
@@ -0,0 +1,61 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: version.h,v 1.8 2001/05/27 05:55:27 jgg Exp $
+/* ######################################################################
+
+ Version - Versioning system..
+
+ The versioning system represents how versions are compared, represented
+ and how dependencies are evaluated. As a general rule versioning
+ systems are not compatible unless specifically allowed by the
+ TestCompatibility query.
+
+ The versions are stored in a global list of versions, but that is just
+ so that they can be queried when someone does 'apt-get -v'.
+ pkgSystem provides the proper means to access the VS for the active
+ system.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_VERSION_H
+#define PKGLIB_VERSION_H
+
+#include <apt-pkg/strutl.h>
+#include <string>
+
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+#endif
+
+class pkgVersioningSystem
+{
+ public:
+ // Global list of VS's
+ static pkgVersioningSystem **GlobalList;
+ static unsigned long GlobalListLen;
+ static pkgVersioningSystem *GetVS(const char *Label) APT_PURE;
+
+ const char *Label;
+
+ // Compare versions..
+ virtual int DoCmpVersion(const char *A,const char *Aend,
+ const char *B,const char *Bend) = 0;
+
+ virtual bool CheckDep(const char *PkgVer,int Op,const char *DepVer) = 0;
+ virtual int DoCmpReleaseVer(const char *A,const char *Aend,
+ const char *B,const char *Bend) = 0;
+ virtual std::string UpstreamVersion(const char *A) = 0;
+
+ // See if the given VS is compatible with this one..
+ virtual bool TestCompatibility(pkgVersioningSystem const &Against)
+ {return this == &Against;};
+
+ // Shortcuts
+ APT_MKSTRCMP(CmpVersion,DoCmpVersion);
+ APT_MKSTRCMP(CmpReleaseVer,DoCmpReleaseVer);
+
+ pkgVersioningSystem();
+ virtual ~pkgVersioningSystem();
+};
+
+#endif
diff --git a/apt-pkg/versionmatch.cc b/apt-pkg/versionmatch.cc
new file mode 100644
index 000000000..2376ca8fd
--- /dev/null
+++ b/apt-pkg/versionmatch.cc
@@ -0,0 +1,292 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: versionmatch.cc,v 1.9 2003/05/19 17:58:26 doogie Exp $
+/* ######################################################################
+
+ Version Matching
+
+ This module takes a matching string and a type and locates the version
+ record that satisfies the constraint described by the matching string.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/versionmatch.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <string>
+#include <stdio.h>
+#include <ctype.h>
+#include <fnmatch.h>
+#include <regex.h>
+ /*}}}*/
+
+using std::string;
+
+// VersionMatch::pkgVersionMatch - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* Break up the data string according to the selected type */
+pkgVersionMatch::pkgVersionMatch(string Data,MatchType Type) : Type(Type)
+{
+ MatchAll = false;
+ VerPrefixMatch = false;
+ RelVerPrefixMatch = false;
+
+ if (Type == None || Data.length() < 1)
+ return;
+
+ // Cut up the version representation
+ if (Type == Version)
+ {
+ if (Data.end()[-1] == '*')
+ {
+ VerPrefixMatch = true;
+ VerStr = string(Data,0,Data.length()-1);
+ }
+ else
+ VerStr = Data;
+ return;
+ }
+
+ if (Type == Release)
+ {
+ // All empty = match all
+ if (Data == "*")
+ {
+ MatchAll = true;
+ return;
+ }
+
+ // Are we a simple specification?
+ string::const_iterator I = Data.begin();
+ for (; I != Data.end() && *I != '='; ++I);
+ if (I == Data.end())
+ {
+ // Temporary
+ if (isdigit(Data[0]))
+ RelVerStr = Data;
+ else
+ RelRelease = Data;
+
+ if (RelVerStr.length() > 0 && RelVerStr.end()[-1] == '*')
+ {
+ RelVerPrefixMatch = true;
+ RelVerStr = string(RelVerStr.begin(),RelVerStr.end()-1);
+ }
+ return;
+ }
+
+ char Spec[300];
+ char *Fragments[20];
+ snprintf(Spec,sizeof(Spec),"%s",Data.c_str());
+ if (TokSplitString(',',Spec,Fragments,
+ sizeof(Fragments)/sizeof(Fragments[0])) == false)
+ {
+ Type = None;
+ return;
+ }
+
+ for (unsigned J = 0; Fragments[J] != 0; J++)
+ {
+ if (strlen(Fragments[J]) < 3)
+ continue;
+
+ if (stringcasecmp(Fragments[J],Fragments[J]+2,"v=") == 0)
+ RelVerStr = Fragments[J]+2;
+ else if (stringcasecmp(Fragments[J],Fragments[J]+2,"o=") == 0)
+ RelOrigin = Fragments[J]+2;
+ else if (stringcasecmp(Fragments[J],Fragments[J]+2,"a=") == 0)
+ RelArchive = Fragments[J]+2;
+ else if (stringcasecmp(Fragments[J],Fragments[J]+2,"n=") == 0)
+ RelCodename = Fragments[J]+2;
+ else if (stringcasecmp(Fragments[J],Fragments[J]+2,"l=") == 0)
+ RelLabel = Fragments[J]+2;
+ else if (stringcasecmp(Fragments[J],Fragments[J]+2,"c=") == 0)
+ RelComponent = Fragments[J]+2;
+ else if (stringcasecmp(Fragments[J],Fragments[J]+2,"b=") == 0)
+ RelArchitecture = Fragments[J]+2;
+ }
+
+ if (RelVerStr.end()[-1] == '*')
+ {
+ RelVerPrefixMatch = true;
+ RelVerStr = string(RelVerStr.begin(),RelVerStr.end()-1);
+ }
+ return;
+ }
+
+ if (Type == Origin)
+ {
+ if (Data[0] == '"' && Data.length() >= 2 && Data.end()[-1] == '"')
+ OrSite = Data.substr(1, Data.length() - 2);
+ else
+ OrSite = Data;
+ return;
+ }
+}
+ /*}}}*/
+// VersionMatch::MatchVer - Match a version string with prefixing /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgVersionMatch::MatchVer(const char *A,string B,bool Prefix)
+{
+ if (A == NULL)
+ return false;
+
+ const char *Ab = A;
+ const char *Ae = Ab + strlen(A);
+
+ // Strings are not a compatible size.
+ if (((unsigned)(Ae - Ab) != B.length() && Prefix == false) ||
+ (unsigned)(Ae - Ab) < B.length())
+ return false;
+
+ // Match (leading?)
+ if (stringcasecmp(B,Ab,Ab + B.length()) == 0)
+ return true;
+
+ return false;
+}
+ /*}}}*/
+// VersionMatch::Find - Locate the best match for the select type /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgCache::VerIterator pkgVersionMatch::Find(pkgCache::PkgIterator Pkg)
+{
+ pkgCache::VerIterator Ver = Pkg.VersionList();
+ for (; Ver.end() == false; ++Ver)
+ {
+ if (VersionMatches(Ver))
+ return Ver;
+ }
+
+ // This will be Ended by now.
+ return Ver;
+}
+ /*}}}*/
+
+// VersionMatch::Find - Locate the best match for the select type /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgVersionMatch::VersionMatches(pkgCache::VerIterator Ver)
+{
+ if (Type == Version)
+ {
+ if (MatchVer(Ver.VerStr(),VerStr,VerPrefixMatch) == true)
+ return true;
+ if (ExpressionMatches(VerStr, Ver.VerStr()) == true)
+ return true;
+ return false;
+ }
+
+ for (pkgCache::VerFileIterator VF = Ver.FileList(); VF.end() == false; ++VF)
+ if (FileMatch(VF.File()) == true)
+ return true;
+
+ return false;
+}
+ /*}}}*/
+
+#ifndef FNM_CASEFOLD
+#define FNM_CASEFOLD 0
+#endif
+
+bool pkgVersionMatch::ExpressionMatches(const char *pattern, const char *string)/*{{{*/
+{
+ if (pattern == NULL || string == NULL)
+ return false;
+ if (pattern[0] == '/') {
+ size_t length = strlen(pattern);
+ if (pattern[length - 1] == '/') {
+ bool res = false;
+ regex_t preg;
+ char *regex = strdup(pattern + 1);
+ regex[length - 2] = '\0';
+ if (regcomp(&preg, regex, REG_EXTENDED | REG_ICASE) != 0) {
+ _error->Warning("Invalid regular expression: %s", regex);
+ } else if (regexec(&preg, string, 0, NULL, 0) == 0) {
+ res = true;
+ }
+ free(regex);
+ regfree(&preg);
+ return res;
+ }
+ }
+ return fnmatch(pattern, string, FNM_CASEFOLD) == 0;
+}
+bool pkgVersionMatch::ExpressionMatches(const std::string& pattern, const char *string)
+{
+ return ExpressionMatches(pattern.c_str(), string);
+}
+ /*}}}*/
+// VersionMatch::FileMatch - Match against an index file /*{{{*/
+// ---------------------------------------------------------------------
+/* This matcher checks against the release file and the origin location
+ to see if the constraints are met. */
+bool pkgVersionMatch::FileMatch(pkgCache::PkgFileIterator File)
+{
+ if (Type == Release)
+ {
+ if (MatchAll == true)
+ return true;
+
+/* cout << RelVerStr << ',' << RelOrigin << ',' << RelArchive << ',' << RelLabel << endl;
+ cout << File.Version() << ',' << File.Origin() << ',' << File.Archive() << ',' << File.Label() << endl;*/
+
+ if (RelVerStr.empty() == true && RelOrigin.empty() == true &&
+ RelArchive.empty() == true && RelLabel.empty() == true &&
+ RelRelease.empty() == true && RelCodename.empty() == true &&
+ RelComponent.empty() == true && RelArchitecture.empty() == true)
+ return false;
+
+ if (RelVerStr.empty() == false)
+ if (MatchVer(File.Version(),RelVerStr,RelVerPrefixMatch) == false &&
+ ExpressionMatches(RelVerStr, File.Version()) == false)
+ return false;
+ if (RelOrigin.empty() == false)
+ if (!ExpressionMatches(RelOrigin,File.Origin()))
+ return false;
+ if (RelArchive.empty() == false)
+ if (!ExpressionMatches(RelArchive,File.Archive()))
+ return false;
+ if (RelCodename.empty() == false)
+ if (!ExpressionMatches(RelCodename,File.Codename()))
+ return false;
+ if (RelRelease.empty() == false)
+ if (!ExpressionMatches(RelRelease,File.Archive()) &&
+ !ExpressionMatches(RelRelease,File.Codename()))
+ return false;
+ if (RelLabel.empty() == false)
+ if (!ExpressionMatches(RelLabel,File.Label()))
+ return false;
+ if (RelComponent.empty() == false)
+ if (!ExpressionMatches(RelComponent,File.Component()))
+ return false;
+ if (RelArchitecture.empty() == false)
+ if (!ExpressionMatches(RelArchitecture,File.Architecture()))
+ return false;
+ return true;
+ }
+
+ if (Type == Origin)
+ {
+ if (OrSite.empty() == false) {
+ if (File.Site() == NULL)
+ return false;
+ }
+ else if (File->Release == 0)// only 'bad' files like dpkg.status file has no release file
+ return false;
+ return (ExpressionMatches(OrSite, File.Site())); /* both strings match */
+ }
+
+ return false;
+}
+ /*}}}*/
diff --git a/apt-pkg/versionmatch.h b/apt-pkg/versionmatch.h
new file mode 100644
index 000000000..156ad61cb
--- /dev/null
+++ b/apt-pkg/versionmatch.h
@@ -0,0 +1,82 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: versionmatch.h,v 1.4 2001/05/29 03:07:12 jgg Exp $
+/* ######################################################################
+
+ Version Matching
+
+ This module takes a matching string and a type and locates the version
+ record that satisfies the constraint described by the matching string.
+
+ Version: 1.2*
+ Release: o=Debian,v=2.1*,c=main
+ Release: v=2.1*
+ Release: a=testing
+ Release: n=squeeze
+ Release: *
+ Origin: ftp.debian.org
+
+ Release may be a complex type that can specify matches for any of:
+ Version (v= with prefix)
+ Origin (o=)
+ Archive (a=) eg, unstable, testing, stable
+ Codename (n=) e.g. etch, lenny, squeeze, sid
+ Label (l=)
+ Component (c=)
+ Binary Architecture (b=)
+ If there are no equals signs in the string then it is scanned in short
+ form - if it starts with a number it is Version otherwise it is an
+ Archive or a Codename.
+
+ Release may be a '*' to match all releases.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef PKGLIB_VERSIONMATCH_H
+#define PKGLIB_VERSIONMATCH_H
+
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#include <string>
+
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+#endif
+
+class pkgVersionMatch
+{
+ // Version Matching
+ std::string VerStr;
+ bool VerPrefixMatch;
+
+ // Release Matching
+ std::string RelVerStr;
+ bool RelVerPrefixMatch;
+ std::string RelOrigin;
+ std::string RelRelease;
+ std::string RelCodename;
+ std::string RelArchive;
+ std::string RelLabel;
+ std::string RelComponent;
+ std::string RelArchitecture;
+ bool MatchAll;
+
+ // Origin Matching
+ std::string OrSite;
+
+ public:
+
+ enum MatchType {None = 0,Version,Release,Origin} Type;
+
+ bool MatchVer(const char *A,std::string B,bool Prefix) APT_PURE;
+ static bool ExpressionMatches(const char *pattern, const char *string);
+ static bool ExpressionMatches(const std::string& pattern, const char *string);
+ bool FileMatch(pkgCache::PkgFileIterator File);
+ pkgCache::VerIterator Find(pkgCache::PkgIterator Pkg);
+ bool VersionMatches(pkgCache::VerIterator Ver);
+
+ pkgVersionMatch(std::string Data,MatchType Type);
+};
+
+#endif
diff --git a/apt-private/CMakeLists.txt b/apt-private/CMakeLists.txt
new file mode 100644
index 000000000..5dda36c92
--- /dev/null
+++ b/apt-private/CMakeLists.txt
@@ -0,0 +1,25 @@
+# Set the version of the library
+set(MAJOR 0.0)
+set(MINOR 0)
+
+# Definition of the C++ files used to build the library - note that this
+# is expanded at CMake time, so you have to rerun cmake if you add or remove
+# a file (you can just run cmake . in the build directory)
+file(GLOB_RECURSE library "*.cc")
+file(GLOB_RECURSE headers "*.h")
+
+# Create a library using the C++ files
+add_library(apt-private SHARED ${library})
+
+# Link the library and set the SONAME
+target_link_libraries(apt-private PUBLIC apt-pkg)
+set_target_properties(apt-private PROPERTIES VERSION ${MAJOR}.${MINOR})
+set_target_properties(apt-private PROPERTIES SOVERSION ${MAJOR})
+add_version_script(apt-private)
+
+# Install the library and the headers
+install(TARGETS apt-private
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ NAMELINK_SKIP)
+
+flatify(${PROJECT_BINARY_DIR}/include/apt-private/ "${headers}")
diff --git a/apt-private/acqprogress.cc b/apt-private/acqprogress.cc
new file mode 100644
index 000000000..e4bfbd4e5
--- /dev/null
+++ b/apt-private/acqprogress.cc
@@ -0,0 +1,346 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Acquire Progress - Command line progress meter
+
+ ##################################################################### */
+ /*}}}*/
+// Include files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/acquire-item.h>
+#include <apt-pkg/acquire-worker.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/error.h>
+
+#include <apt-private/acqprogress.h>
+
+#include <string.h>
+#include <stdio.h>
+#include <signal.h>
+#include <iostream>
+#include <sstream>
+#include <unistd.h>
+
+#include <apti18n.h>
+ /*}}}*/
+
+// AcqTextStatus::AcqTextStatus - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+AcqTextStatus::AcqTextStatus(std::ostream &out, unsigned int &ScreenWidth,unsigned int const Quiet) :
+ pkgAcquireStatus(), out(out), ScreenWidth(ScreenWidth), LastLineLength(0), ID(0), Quiet(Quiet)
+{
+ // testcases use it to disable pulses without disabling other user messages
+ if (Quiet == 0 && _config->FindB("quiet::NoUpdate", false) == true)
+ this->Quiet = 1;
+ if (Quiet < 2 && _config->FindB("quiet::NoProgress", false) == true)
+ this->Quiet = 2;
+}
+ /*}}}*/
+// AcqTextStatus::Start - Downloading has started /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void AcqTextStatus::Start()
+{
+ pkgAcquireStatus::Start();
+ LastLineLength = 0;
+ ID = 1;
+}
+ /*}}}*/
+void AcqTextStatus::AssignItemID(pkgAcquire::ItemDesc &Itm) /*{{{*/
+{
+ /* In theory calling it from Fetch() would be enough, but to be
+ safe we call it from IMSHit and Fail as well.
+ Also, an Item can pass through multiple stages, so ensure
+ that it keeps the same number */
+ if (Itm.Owner->ID == 0)
+ Itm.Owner->ID = ID++;
+}
+ /*}}}*/
+// AcqTextStatus::IMSHit - Called when an item got a HIT response /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void AcqTextStatus::IMSHit(pkgAcquire::ItemDesc &Itm)
+{
+ if (Quiet > 1)
+ return;
+
+ AssignItemID(Itm);
+ clearLastLine();
+
+ // TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+ ioprintf(out, _("Hit:%lu %s"), Itm.Owner->ID, Itm.Description.c_str());
+ out << std::endl;
+ Update = true;
+}
+ /*}}}*/
+// AcqTextStatus::Fetch - An item has started to download /*{{{*/
+// ---------------------------------------------------------------------
+/* This prints out the short description and the expected size */
+void AcqTextStatus::Fetch(pkgAcquire::ItemDesc &Itm)
+{
+ Update = true;
+ if (Itm.Owner->Complete == true)
+ return;
+ AssignItemID(Itm);
+
+ if (Quiet > 1)
+ return;
+
+ clearLastLine();
+
+ // TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+ // Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+ ioprintf(out, _("Get:%lu %s"), Itm.Owner->ID, Itm.Description.c_str());
+ if (Itm.Owner->FileSize != 0)
+ out << " [" << SizeToStr(Itm.Owner->FileSize) << "B]";
+ out << std::endl;
+}
+ /*}}}*/
+// AcqTextStatus::Done - Completed a download /*{{{*/
+// ---------------------------------------------------------------------
+/* We don't display anything... */
+void AcqTextStatus::Done(pkgAcquire::ItemDesc &Itm)
+{
+ Update = true;
+ AssignItemID(Itm);
+}
+ /*}}}*/
+// AcqTextStatus::Fail - Called when an item fails to download /*{{{*/
+// ---------------------------------------------------------------------
+/* We print out the error text */
+void AcqTextStatus::Fail(pkgAcquire::ItemDesc &Itm)
+{
+ if (Quiet > 1)
+ return;
+
+ AssignItemID(Itm);
+ clearLastLine();
+
+ bool ShowErrorText = true;
+ if (Itm.Owner->Status == pkgAcquire::Item::StatDone || Itm.Owner->Status == pkgAcquire::Item::StatIdle)
+ {
+ // TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+ // which failed to download, but the error is ignored (compare "Err:")
+ ioprintf(out, _("Ign:%lu %s"), Itm.Owner->ID, Itm.Description.c_str());
+ if (Itm.Owner->ErrorText.empty() ||
+ _config->FindB("Acquire::Progress::Ignore::ShowErrorText", false) == false)
+ ShowErrorText = false;
+ }
+ else
+ {
+ // TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+ // which failed to download and the error is critical (compare "Ign:")
+ ioprintf(out, _("Err:%lu %s"), Itm.Owner->ID, Itm.Description.c_str());
+ }
+
+ if (ShowErrorText)
+ {
+ std::string::size_type line_start = 0;
+ std::string::size_type line_end;
+ while ((line_end = Itm.Owner->ErrorText.find_first_of("\n\r", line_start)) != std::string::npos) {
+ out << std::endl << " " << Itm.Owner->ErrorText.substr(line_start, line_end - line_start);
+ line_start = Itm.Owner->ErrorText.find_first_not_of("\n\r", line_end + 1);
+ if (line_start == std::string::npos)
+ break;
+ }
+ if (line_start == 0)
+ out << std::endl << " " << Itm.Owner->ErrorText;
+ else if (line_start != std::string::npos)
+ out << std::endl << " " << Itm.Owner->ErrorText.substr(line_start);
+ }
+ out << std::endl;
+
+ Update = true;
+}
+ /*}}}*/
+// AcqTextStatus::Stop - Finished downloading /*{{{*/
+// ---------------------------------------------------------------------
+/* This prints out the bytes downloaded and the overall average line
+ speed */
+void AcqTextStatus::Stop()
+{
+ pkgAcquireStatus::Stop();
+ if (Quiet > 1)
+ return;
+
+ clearLastLine();
+
+ if (_config->FindB("quiet::NoStatistic", false) == true)
+ return;
+
+ if (FetchedBytes != 0 && _error->PendingError() == false)
+ ioprintf(out,_("Fetched %sB in %s (%sB/s)\n"),
+ SizeToStr(FetchedBytes).c_str(),
+ TimeToStr(ElapsedTime).c_str(),
+ SizeToStr(CurrentCPS).c_str());
+}
+ /*}}}*/
+// AcqTextStatus::Pulse - Regular event pulse /*{{{*/
+// ---------------------------------------------------------------------
+/* This draws the current progress. Each line has an overall percent
+ meter and a per active item status meter along with an overall
+ bandwidth and ETA indicator. */
+bool AcqTextStatus::Pulse(pkgAcquire *Owner)
+{
+ pkgAcquireStatus::Pulse(Owner);
+
+ if (Quiet > 0)
+ return true;
+
+ std::string Line;
+ {
+ std::stringstream S;
+ for (pkgAcquire::Worker *I = Owner->WorkersBegin(); I != 0;
+ I = Owner->WorkerStep(I))
+ {
+ // There is no item running
+ if (I->CurrentItem == 0)
+ {
+ if (I->Status.empty() == false)
+ S << " [" << I->Status << "]";
+
+ continue;
+ }
+
+ // Add in the short description
+ S << " [";
+ if (I->CurrentItem->Owner->ID != 0)
+ S << std::to_string(I->CurrentItem->Owner->ID) << " ";
+ S << I->CurrentItem->ShortDesc;
+
+ // Show the short mode string
+ if (I->CurrentItem->Owner->ActiveSubprocess.empty() == false)
+ S << " " << I->CurrentItem->Owner->ActiveSubprocess;
+
+ enum {Long = 0,Medium,Short} Mode = Medium;
+ // Add the current progress
+ if (Mode == Long)
+ S << " " << std::to_string(I->CurrentSize);
+ else
+ {
+ if (Mode == Medium || I->TotalSize == 0)
+ S << " " << SizeToStr(I->CurrentSize) << "B";
+ }
+
+ // Add the total size and percent
+ if (I->TotalSize > 0 && I->CurrentItem->Owner->Complete == false)
+ {
+ if (Mode == Short)
+ ioprintf(S, " %.0f%%", (I->CurrentSize*100.0)/I->TotalSize);
+ else
+ ioprintf(S, "/%sB %.0f%%", SizeToStr(I->TotalSize).c_str(),
+ (I->CurrentSize*100.0)/I->TotalSize);
+ }
+ S << "]";
+ }
+
+ // Show at least something
+ Line = S.str();
+ S.clear();
+ if (Line.empty() == true)
+ Line = _(" [Working]");
+ }
+ // Put in the percent done
+ {
+ std::stringstream S;
+ ioprintf(S, "%.0f%%", Percent);
+ S << Line;
+ Line = S.str();
+ S.clear();
+ }
+
+ /* Put in the ETA and cps meter, block off signals to prevent strangeness
+ during resizing */
+ sigset_t Sigs,OldSigs;
+ sigemptyset(&Sigs);
+ sigaddset(&Sigs,SIGWINCH);
+ sigprocmask(SIG_BLOCK,&Sigs,&OldSigs);
+
+ if (CurrentCPS != 0)
+ {
+ unsigned long long ETA = (TotalBytes - CurrentBytes)/CurrentCPS;
+ std::string Tmp = " " + SizeToStr(CurrentCPS) + "B/s " + TimeToStr(ETA);
+ size_t alignment = Line.length() + Tmp.length();
+ if (alignment < ScreenWidth)
+ {
+ alignment = ScreenWidth - alignment;
+ for (size_t i = 0; i < alignment; ++i)
+ Line.append(" ");
+ Line.append(Tmp);
+ }
+ }
+ if (Line.length() > ScreenWidth)
+ Line.erase(ScreenWidth);
+ sigprocmask(SIG_SETMASK,&OldSigs,0);
+
+ // Draw the current status
+ if (_config->FindB("Apt::Color", false) == true)
+ out << _config->Find("APT::Color::Yellow");
+ if (LastLineLength > Line.length())
+ clearLastLine();
+ else
+ out << '\r';
+ out << Line << std::flush;
+ if (_config->FindB("Apt::Color", false) == true)
+ out << _config->Find("APT::Color::Neutral") << std::flush;
+
+ LastLineLength = Line.length();
+ Update = false;
+
+ return true;
+}
+ /*}}}*/
+// AcqTextStatus::MediaChange - Media need to be swapped /*{{{*/
+// ---------------------------------------------------------------------
+/* Prompt for a media swap */
+bool AcqTextStatus::MediaChange(std::string Media, std::string Drive)
+{
+ // If we do not output on a terminal and one of the options to avoid user
+ // interaction is given, we assume that no user is present who could react
+ // on your media change request
+ if (isatty(STDOUT_FILENO) != 1 && Quiet >= 2 &&
+ (_config->FindB("APT::Get::Assume-Yes",false) == true ||
+ _config->FindB("APT::Get::Force-Yes",false) == true ||
+ _config->FindB("APT::Get::Trivial-Only",false) == true))
+
+ return false;
+
+ clearLastLine();
+ ioprintf(out,_("Media change: please insert the disc labeled\n"
+ " '%s'\n"
+ "in the drive '%s' and press [Enter]\n"),
+ Media.c_str(),Drive.c_str());
+
+ char C = 0;
+ bool bStatus = true;
+ while (C != '\n' && C != '\r')
+ {
+ int len = read(STDIN_FILENO,&C,1);
+ if(C == 'c' || len <= 0)
+ bStatus = false;
+ }
+
+ if(bStatus)
+ Update = true;
+ return bStatus;
+}
+ /*}}}*/
+void AcqTextStatus::clearLastLine() { /*{{{*/
+ if (Quiet > 0 || LastLineLength == 0)
+ return;
+
+ // do not try to clear more than the (now smaller) screen
+ if (LastLineLength > ScreenWidth)
+ LastLineLength = ScreenWidth;
+
+ out << '\r';
+ for (size_t i = 0; i < LastLineLength; ++i)
+ out << ' ';
+ out << '\r' << std::flush;
+}
+ /*}}}*/
diff --git a/apt-private/acqprogress.h b/apt-private/acqprogress.h
new file mode 100644
index 000000000..6b6d555b1
--- /dev/null
+++ b/apt-private/acqprogress.h
@@ -0,0 +1,44 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Acquire Progress - Command line progress meter
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef ACQPROGRESS_H
+#define ACQPROGRESS_H
+
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/macros.h>
+
+#include <string>
+#include <iostream>
+
+class APT_PUBLIC AcqTextStatus : public pkgAcquireStatus
+{
+ std::ostream &out;
+ unsigned int &ScreenWidth;
+ size_t LastLineLength;
+ unsigned long ID;
+ unsigned long Quiet;
+
+ APT_HIDDEN void clearLastLine();
+ APT_HIDDEN void AssignItemID(pkgAcquire::ItemDesc &Itm);
+
+ public:
+
+ virtual bool MediaChange(std::string Media,std::string Drive) APT_OVERRIDE;
+ virtual void IMSHit(pkgAcquire::ItemDesc &Itm) APT_OVERRIDE;
+ virtual void Fetch(pkgAcquire::ItemDesc &Itm) APT_OVERRIDE;
+ virtual void Done(pkgAcquire::ItemDesc &Itm) APT_OVERRIDE;
+ virtual void Fail(pkgAcquire::ItemDesc &Itm) APT_OVERRIDE;
+ virtual void Start() APT_OVERRIDE;
+ virtual void Stop() APT_OVERRIDE;
+
+ bool Pulse(pkgAcquire *Owner) APT_OVERRIDE;
+
+ AcqTextStatus(std::ostream &out, unsigned int &ScreenWidth,unsigned int const Quiet);
+};
+
+#endif
diff --git a/apt-private/private-cachefile.cc b/apt-private/private-cachefile.cc
new file mode 100644
index 000000000..77090f8eb
--- /dev/null
+++ b/apt-private/private-cachefile.cc
@@ -0,0 +1,118 @@
+// Include files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/algorithms.h>
+#include <apt-pkg/upgrade.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheset.h>
+
+#include <apt-private/private-output.h>
+#include <apt-private/private-cachefile.h>
+
+#include <string.h>
+#include <ostream>
+#include <cstdlib>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+static bool SortPackagesByName(pkgCache * const Owner,
+ map_pointer_t const A, map_pointer_t const B)
+{
+ if (A == 0)
+ return false;
+ if (B == 0 || A == B)
+ return true;
+ pkgCache::Group const * const GA = Owner->GrpP + A;
+ pkgCache::Group const * const GB = Owner->GrpP + B;
+ return strcmp(Owner->StrP + GA->Name, Owner->StrP + GB->Name) <= 0;
+}
+SortedPackageUniverse::SortedPackageUniverse(CacheFile &Cache) :
+ PackageUniverse{Cache}, List(Cache.UniverseList)
+{
+}
+void SortedPackageUniverse::LazyInit() const
+{
+ if (List.empty() == false)
+ return;
+ pkgCache * const Owner = data();
+ // In Multi-Arch systems Grps are easier to sort than Pkgs
+ std::vector<map_pointer_t> GrpList;
+ List.reserve(Owner->Head().GroupCount);
+ for (pkgCache::GrpIterator I{Owner->GrpBegin()}; I.end() != true; ++I)
+ GrpList.emplace_back(I - Owner->GrpP);
+ std::stable_sort(GrpList.begin(), GrpList.end(), std::bind( &SortPackagesByName, Owner, std::placeholders::_1, std::placeholders::_2 ));
+ List.reserve(Owner->Head().PackageCount);
+ for (auto G : GrpList)
+ {
+ pkgCache::GrpIterator const Grp(*Owner, Owner->GrpP + G);
+ for (pkgCache::PkgIterator P = Grp.PackageList(); P.end() != true; P = Grp.NextPkg(P))
+ List.emplace_back(P - Owner->PkgP);
+ }
+}
+// CacheFile::CheckDeps - Open the cache file /*{{{*/
+// ---------------------------------------------------------------------
+/* This routine generates the caches and then opens the dependency cache
+ and verifies that the system is OK. */
+bool CacheFile::CheckDeps(bool AllowBroken)
+{
+ bool FixBroken = _config->FindB("APT::Get::Fix-Broken",false);
+
+ if (_error->PendingError() == true)
+ return false;
+
+ // Check that the system is OK
+ if (DCache->DelCount() != 0 || DCache->InstCount() != 0)
+ return _error->Error("Internal error, non-zero counts");
+
+ // Apply corrections for half-installed packages
+ if (pkgApplyStatus(*DCache) == false)
+ return false;
+
+ if (_config->FindB("APT::Get::Fix-Policy-Broken",false) == true)
+ {
+ FixBroken = true;
+ if ((DCache->PolicyBrokenCount() > 0))
+ {
+ // upgrade all policy-broken packages with ForceImportantDeps=True
+ for (pkgCache::PkgIterator I = Cache->PkgBegin(); !I.end(); ++I)
+ if ((*DCache)[I].NowPolicyBroken() == true)
+ DCache->MarkInstall(I,true,0, false, true);
+ }
+ }
+
+ // Nothing is broken
+ if (DCache->BrokenCount() == 0 || AllowBroken == true)
+ return true;
+
+ // Attempt to fix broken things
+ if (FixBroken == true)
+ {
+ c1out << _("Correcting dependencies...") << flush;
+ if (pkgFixBroken(*DCache) == false || DCache->BrokenCount() != 0)
+ {
+ c1out << _(" failed.") << endl;
+ ShowBroken(c1out,*this,true);
+
+ return _error->Error(_("Unable to correct dependencies"));
+ }
+ if (pkgMinimizeUpgrade(*DCache) == false)
+ return _error->Error(_("Unable to minimize the upgrade set"));
+
+ c1out << _(" Done") << endl;
+ }
+ else
+ {
+ c1out << _("You might want to run 'apt --fix-broken install' to correct these.") << endl;
+ ShowBroken(c1out,*this,true);
+ return _error->Error(_("Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution)."));
+ }
+
+ return true;
+}
+ /*}}}*/
diff --git a/apt-private/private-cachefile.h b/apt-private/private-cachefile.h
new file mode 100644
index 000000000..77e8b61d9
--- /dev/null
+++ b/apt-private/private-cachefile.h
@@ -0,0 +1,72 @@
+#ifndef APT_PRIVATE_CACHEFILE_H
+#define APT_PRIVATE_CACHEFILE_H
+
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/progress.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/macros.h>
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/cacheset.h>
+
+// class CacheFile - Cover class for some dependency cache functions /*{{{*/
+class APT_PUBLIC CacheFile : public pkgCacheFile
+{
+ public:
+ std::vector<map_pointer_t> UniverseList;
+
+ bool CheckDeps(bool AllowBroken = false);
+ bool BuildCaches(bool WithLock = true)
+ {
+ OpTextProgress Prog(*_config);
+ if (pkgCacheFile::BuildCaches(&Prog,WithLock) == false)
+ return false;
+ return true;
+ }
+ bool Open(bool WithLock = true)
+ {
+ OpTextProgress Prog(*_config);
+ return pkgCacheFile::Open(&Prog,WithLock);
+ };
+ bool OpenForInstall()
+ {
+ if (_config->FindB("APT::Get::Print-URIs") == true)
+ return Open(false);
+ else
+ return Open(true);
+ }
+};
+ /*}}}*/
+
+class SortedPackageUniverse : public APT::PackageUniverse
+{
+ std::vector<map_pointer_t> &List;
+ void LazyInit() const;
+
+public:
+ explicit SortedPackageUniverse(CacheFile &Cache);
+
+ class const_iterator : public APT::Container_iterator_base<APT::PackageContainerInterface, SortedPackageUniverse, SortedPackageUniverse::const_iterator, std::vector<map_pointer_t>::const_iterator, pkgCache::PkgIterator>
+ {
+ pkgCache * const Cache;
+ public:
+ inline pkgCache::PkgIterator getType(void) const
+ {
+ if (*_iter == 0) return pkgCache::PkgIterator(*Cache);
+ return pkgCache::PkgIterator(*Cache, Cache->PkgP + *_iter);
+ }
+ explicit const_iterator(pkgCache * const Owner, std::vector<map_pointer_t>::const_iterator i):
+ Container_iterator_base<APT::PackageContainerInterface, SortedPackageUniverse, SortedPackageUniverse::const_iterator, std::vector<map_pointer_t>::const_iterator, pkgCache::PkgIterator>(i), Cache(Owner) {}
+
+ };
+ typedef const_iterator iterator;
+
+ const_iterator begin() const { LazyInit(); return const_iterator(data(), List.begin()); }
+ const_iterator end() const { LazyInit(); return const_iterator(data(), List.end()); }
+ const_iterator cbegin() const { LazyInit(); return const_iterator(data(), List.begin()); }
+ const_iterator cend() const { LazyInit(); return const_iterator(data(), List.end()); }
+ iterator begin() { LazyInit(); return iterator(data(), List.begin()); }
+ iterator end() { LazyInit(); return iterator(data(), List.end()); }
+};
+
+#endif
diff --git a/apt-private/private-cacheset.cc b/apt-private/private-cacheset.cc
new file mode 100644
index 000000000..52cd22d2a
--- /dev/null
+++ b/apt-private/private-cacheset.cc
@@ -0,0 +1,367 @@
+#include <config.h>
+
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/cachefilter.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/progress.h>
+#include <apt-pkg/policy.h>
+#include <apt-pkg/strutl.h>
+
+#include <apt-private/private-cacheset.h>
+
+#include <stddef.h>
+
+#include <apti18n.h>
+
+bool GetLocalitySortedVersionSet(pkgCacheFile &CacheFile, /*{{{*/
+ APT::VersionContainerInterface * const vci,
+ OpProgress * const progress)
+{
+ Matcher null_matcher = Matcher();
+ return GetLocalitySortedVersionSet(CacheFile, vci,
+ null_matcher, progress);
+}
+bool GetLocalitySortedVersionSet(pkgCacheFile &CacheFile,
+ APT::VersionContainerInterface * const vci,
+ Matcher &matcher,
+ OpProgress * const progress)
+{
+ pkgCache * const Cache = CacheFile.GetPkgCache();
+ if (unlikely(Cache == nullptr))
+ return false;
+ if (progress != nullptr)
+ progress->SubProgress(Cache->Head().PackageCount, _("Sorting"));
+
+ pkgDepCache * const DepCache = CacheFile.GetDepCache();
+ if (unlikely(DepCache == nullptr))
+ return false;
+ APT::CacheSetHelper helper(false);
+
+ int Done=0;
+
+ bool const insertCurrentVer = _config->FindB("APT::Cmd::Installed", false);
+ bool const insertUpgradable = _config->FindB("APT::Cmd::Upgradable", false);
+ bool const insertManualInstalled = _config->FindB("APT::Cmd::Manual-Installed", false);
+
+ for (pkgCache::PkgIterator P = Cache->PkgBegin(); P.end() == false; ++P)
+ {
+ if (progress != NULL)
+ {
+ if (Done % 500 == 0)
+ progress->Progress(Done);
+ ++Done;
+ }
+
+ // exclude virtual pkgs
+ if (P->VersionList == 0)
+ continue;
+
+ if ((matcher)(P) == false)
+ continue;
+
+ pkgDepCache::StateCache &state = (*DepCache)[P];
+ if (insertCurrentVer == true)
+ {
+ if (P->CurrentVer != 0)
+ vci->FromPackage(vci, CacheFile, P, APT::CacheSetHelper::INSTALLED, helper);
+ }
+ else if (insertUpgradable == true)
+ {
+ if(P.CurrentVer() && state.Upgradable())
+ vci->FromPackage(vci, CacheFile, P, APT::CacheSetHelper::CANDIDATE, helper);
+ }
+ else if (insertManualInstalled == true)
+ {
+ if (P.CurrentVer() &&
+ ((*DepCache)[P].Flags & pkgCache::Flag::Auto) == false)
+ vci->FromPackage(vci, CacheFile, P, APT::CacheSetHelper::CANDIDATE, helper);
+ }
+ else
+ {
+ if (vci->FromPackage(vci, CacheFile, P, APT::CacheSetHelper::CANDIDATE, helper) == false)
+ {
+ // no candidate, this may happen for packages in
+ // dpkg "deinstall ok config-file" state - we pick the first ver
+ // (which should be the only one)
+ vci->insert(P.VersionList());
+ }
+ }
+ }
+ if (progress != NULL)
+ progress->Done();
+ return true;
+}
+ /*}}}*/
+
+// CacheSetHelper saving virtual packages /*{{{*/
+pkgCache::VerIterator CacheSetHelperVirtuals::canNotGetVersion(
+ enum CacheSetHelper::VerSelector const select,
+ pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg)
+{
+ if (select == NEWEST || select == CANDIDATE || select == ALL)
+ virtualPkgs.insert(Pkg);
+ return CacheSetHelper::canNotGetVersion(select, Cache, Pkg);
+}
+void CacheSetHelperVirtuals::canNotFindVersion(
+ enum CacheSetHelper::VerSelector const select,
+ APT::VersionContainerInterface * vci,
+ pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg)
+{
+ if (select == NEWEST || select == CANDIDATE || select == ALL)
+ virtualPkgs.insert(Pkg);
+ return CacheSetHelper::canNotFindVersion(select, vci, Cache, Pkg);
+}
+static pkgCache::PkgIterator canNotFindPkgName_impl(pkgCacheFile &Cache, std::string const &str)
+{
+ std::string pkg = str;
+ size_t const archfound = pkg.find_last_of(':');
+ std::string arch;
+ if (archfound != std::string::npos) {
+ arch = pkg.substr(archfound+1);
+ pkg.erase(archfound);
+ if (arch == "all" || arch == "native")
+ arch = _config->Find("APT::Architecture");
+ }
+
+ // If we don't find 'foo:amd64' look for 'foo:amd64:any'.
+ // Note: we prepare for an error here as if foo:amd64 does not exist,
+ // but foo:amd64:any it means that this package is only referenced in a
+ // (architecture specific) dependency. We do not add to virtualPkgs directly
+ // as we can't decide from here which error message has to be printed.
+ // FIXME: This doesn't match 'barbarian' architectures
+ pkgCache::PkgIterator Pkg(Cache, 0);
+ std::vector<std::string> const archs = APT::Configuration::getArchitectures();
+ if (archfound == std::string::npos)
+ {
+ for (auto const &a : archs)
+ {
+ Pkg = Cache.GetPkgCache()->FindPkg(pkg + ':' + a, "any");
+ if (Pkg.end() == false && Pkg->ProvidesList != 0)
+ break;
+ }
+ if (Pkg.end() == true)
+ for (auto const &a : archs)
+ {
+ Pkg = Cache.GetPkgCache()->FindPkg(pkg + ':' + a, "any");
+ if (Pkg.end() == false)
+ break;
+ }
+ }
+ else
+ {
+ Pkg = Cache.GetPkgCache()->FindPkg(pkg + ':' + arch, "any");
+ if (Pkg.end() == true)
+ {
+ APT::CacheFilter::PackageArchitectureMatchesSpecification pams(arch);
+ for (auto const &a : archs)
+ {
+ if (pams(a.c_str()) == false)
+ continue;
+ Pkg = Cache.GetPkgCache()->FindPkg(pkg + ':' + a, "any");
+ if (Pkg.end() == false)
+ break;
+ }
+ }
+ }
+ return Pkg;
+}
+pkgCache::PkgIterator CacheSetHelperVirtuals::canNotFindPkgName(pkgCacheFile &Cache, std::string const &str)
+{
+ pkgCache::PkgIterator const Pkg = canNotFindPkgName_impl(Cache, str);
+ if (Pkg.end())
+ return APT::CacheSetHelper::canNotFindPkgName(Cache, str);
+ return Pkg;
+}
+CacheSetHelperVirtuals::CacheSetHelperVirtuals(bool const ShowErrors, GlobalError::MsgType const &ErrorType) :
+ CacheSetHelper{ShowErrors, ErrorType}
+{}
+ /*}}}*/
+
+// CacheSetHelperAPTGet - responsible for message telling from the CacheSets/*{{{*/
+CacheSetHelperAPTGet::CacheSetHelperAPTGet(std::ostream &pout) :
+ APT::CacheSetHelper{true}, out(pout)
+{
+ explicitlyNamed = true;
+}
+void CacheSetHelperAPTGet::showTaskSelection(pkgCache::PkgIterator const &Pkg, std::string const &pattern)
+{
+ ioprintf(out, _("Note, selecting '%s' for task '%s'\n"),
+ Pkg.FullName(true).c_str(), pattern.c_str());
+ explicitlyNamed = false;
+}
+void CacheSetHelperAPTGet::showFnmatchSelection(pkgCache::PkgIterator const &Pkg, std::string const &pattern)
+{
+ ioprintf(out, _("Note, selecting '%s' for glob '%s'\n"),
+ Pkg.FullName(true).c_str(), pattern.c_str());
+ explicitlyNamed = false;
+}
+void CacheSetHelperAPTGet::showRegExSelection(pkgCache::PkgIterator const &Pkg, std::string const &pattern)
+{
+ ioprintf(out, _("Note, selecting '%s' for regex '%s'\n"),
+ Pkg.FullName(true).c_str(), pattern.c_str());
+ explicitlyNamed = false;
+}
+void CacheSetHelperAPTGet::showSelectedVersion(pkgCache::PkgIterator const &/*Pkg*/, pkgCache::VerIterator const Ver,
+ std::string const &ver, bool const /*verIsRel*/)
+{
+ if (ver == Ver.VerStr())
+ return;
+ selectedByRelease.push_back(make_pair(Ver, ver));
+}
+bool CacheSetHelperAPTGet::showVirtualPackageErrors(pkgCacheFile &Cache)
+{
+ if (virtualPkgs.empty() == true)
+ return true;
+ for (APT::PackageSet::const_iterator Pkg = virtualPkgs.begin();
+ Pkg != virtualPkgs.end(); ++Pkg) {
+ if (Pkg->ProvidesList != 0) {
+ ioprintf(c1out,_("Package %s is a virtual package provided by:\n"),
+ Pkg.FullName(true).c_str());
+
+ pkgCache::PrvIterator I = Pkg.ProvidesList();
+ unsigned short provider = 0;
+ for (; I.end() == false; ++I) {
+ pkgCache::PkgIterator Pkg = I.OwnerPkg();
+
+ if (Cache[Pkg].CandidateVerIter(Cache) == I.OwnerVer()) {
+ c1out << " " << Pkg.FullName(true) << " " << I.OwnerVer().VerStr();
+ if (Cache[Pkg].Install() == true && Cache[Pkg].NewInstall() == false)
+ c1out << _(" [Installed]");
+ c1out << std::endl;
+ ++provider;
+ }
+ }
+ // if we found no candidate which provide this package, show non-candidates
+ if (provider == 0)
+ for (I = Pkg.ProvidesList(); I.end() == false; ++I)
+ c1out << " " << I.OwnerPkg().FullName(true) << " " << I.OwnerVer().VerStr()
+ << _(" [Not candidate version]") << std::endl;
+ else
+ out << _("You should explicitly select one to install.") << std::endl;
+ } else {
+ ioprintf(c1out,
+ _("Package %s is not available, but is referred to by another package.\n"
+ "This may mean that the package is missing, has been obsoleted, or\n"
+ "is only available from another source\n"),Pkg.FullName(true).c_str());
+
+ std::vector<bool> Seen(Cache.GetPkgCache()->Head().PackageCount, false);
+ APT::PackageList pkglist;
+ for (pkgCache::DepIterator Dep = Pkg.RevDependsList();
+ Dep.end() == false; ++Dep) {
+ if (Dep->Type != pkgCache::Dep::Replaces)
+ continue;
+ pkgCache::PkgIterator const DP = Dep.ParentPkg();
+ if (Seen[DP->ID] == true)
+ continue;
+ Seen[DP->ID] = true;
+ pkglist.insert(DP);
+ }
+ ShowList(c1out, _("However the following packages replace it:"), pkglist,
+ &AlwaysTrue, &PrettyFullName, &EmptyString);
+ }
+ c1out << std::endl;
+ }
+ return false;
+}
+pkgCache::VerIterator CacheSetHelperAPTGet::canNotFindCandidateVer(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg)
+{
+ APT::VersionSet const verset = tryVirtualPackage(Cache, Pkg, CacheSetHelper::CANDIDATE);
+ if (verset.empty() == false)
+ return *(verset.begin());
+ else if (ShowError == true) {
+ _error->Error(_("Package '%s' has no installation candidate"),Pkg.FullName(true).c_str());
+ virtualPkgs.insert(Pkg);
+ }
+ return pkgCache::VerIterator(Cache, 0);
+}
+pkgCache::VerIterator CacheSetHelperAPTGet::canNotFindNewestVer(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg)
+{
+ if (Pkg->ProvidesList != 0)
+ {
+ APT::VersionSet const verset = tryVirtualPackage(Cache, Pkg, CacheSetHelper::NEWEST);
+ if (verset.empty() == false)
+ return *(verset.begin());
+ if (ShowError == true)
+ ioprintf(out, _("Virtual packages like '%s' can't be removed\n"), Pkg.FullName(true).c_str());
+ }
+ else
+ {
+ pkgCache::GrpIterator Grp = Pkg.Group();
+ pkgCache::PkgIterator P = Grp.PackageList();
+ for (; P.end() != true; P = Grp.NextPkg(P))
+ {
+ if (P == Pkg)
+ continue;
+ if (P->CurrentVer != 0) {
+ // TRANSLATORS: Note, this is not an interactive question
+ ioprintf(c1out,_("Package '%s' is not installed, so not removed. Did you mean '%s'?\n"),
+ Pkg.FullName(true).c_str(), P.FullName(true).c_str());
+ break;
+ }
+ }
+ if (P.end() == true)
+ ioprintf(c1out,_("Package '%s' is not installed, so not removed\n"),Pkg.FullName(true).c_str());
+ }
+ return pkgCache::VerIterator(Cache, 0);
+}
+APT::VersionSet CacheSetHelperAPTGet::tryVirtualPackage(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg,
+ CacheSetHelper::VerSelector const select)
+{
+ /* This is a pure virtual package and there is a single available
+ candidate providing it. */
+ if (unlikely(Cache[Pkg].CandidateVer != 0) || Pkg->ProvidesList == 0)
+ return APT::VersionSet();
+
+ pkgCache::PkgIterator Prov;
+ bool found_one = false;
+ for (pkgCache::PrvIterator P = Pkg.ProvidesList(); P; ++P) {
+ pkgCache::VerIterator const PVer = P.OwnerVer();
+ pkgCache::PkgIterator const PPkg = PVer.ParentPkg();
+
+ /* Ignore versions that are not a candidate. */
+ if (Cache[PPkg].CandidateVer != PVer)
+ continue;
+
+ if (found_one == false) {
+ Prov = PPkg;
+ found_one = true;
+ } else if (PPkg != Prov) {
+ // same group, so it's a foreign package
+ if (PPkg->Group == Prov->Group) {
+ // do we already have the requested arch?
+ if (strcmp(Pkg.Arch(), Prov.Arch()) == 0 ||
+ strcmp(Prov.Arch(), "all") == 0 ||
+ unlikely(strcmp(PPkg.Arch(), Prov.Arch()) == 0)) // packages have only on candidate, but just to be sure
+ continue;
+ // see which architecture we prefer more and switch to it
+ std::vector<std::string> archs = APT::Configuration::getArchitectures();
+ if (std::find(archs.begin(), archs.end(), PPkg.Arch()) < std::find(archs.begin(), archs.end(), Prov.Arch()))
+ Prov = PPkg;
+ continue;
+ }
+ found_one = false; // we found at least two
+ break;
+ }
+ }
+
+ if (found_one == true) {
+ ioprintf(out, _("Note, selecting '%s' instead of '%s'\n"),
+ Prov.FullName(true).c_str(), Pkg.FullName(true).c_str());
+ return APT::VersionSet::FromPackage(Cache, Prov, select, *this);
+ }
+ return APT::VersionSet();
+}
+pkgCache::PkgIterator CacheSetHelperAPTGet::canNotFindPkgName(pkgCacheFile &Cache, std::string const &str)
+{
+ pkgCache::PkgIterator const Pkg = canNotFindPkgName_impl(Cache, str);
+ if (Pkg.end())
+ return APT::CacheSetHelper::canNotFindPkgName(Cache, str);
+ return Pkg;
+}
+ /*}}}*/
diff --git a/apt-private/private-cacheset.h b/apt-private/private-cacheset.h
new file mode 100644
index 000000000..37c921081
--- /dev/null
+++ b/apt-private/private-cacheset.h
@@ -0,0 +1,121 @@
+#ifndef APT_PRIVATE_CACHESET_H
+#define APT_PRIVATE_CACHESET_H
+
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/macros.h>
+
+#include <apt-private/private-output.h>
+
+#include <vector>
+#include <list>
+#include <set>
+#include <string>
+
+class OpProgress;
+
+class VerIteratorWithCaching
+{
+ const pkgCache::VerIterator iter;
+ const pkgCache::DescFile * descFile;
+public:
+ VerIteratorWithCaching(const pkgCache::VerIterator& iter) :
+ iter(iter),
+ descFile(iter->DescriptionList != 0
+ ? (const pkgCache::DescFile *) iter.TranslatedDescription().FileList()
+ : nullptr)
+ {}
+ const pkgCache::DescFile * CachedDescFile() const { return descFile; }
+ operator pkgCache::VerIterator() const { return iter; }
+};
+
+struct VersionSortDescriptionLocality /*{{{*/
+{
+ bool operator () (const VerIteratorWithCaching &v_lhs,
+ const VerIteratorWithCaching &v_rhs)
+ {
+ pkgCache::DescFile const *A = v_lhs.CachedDescFile();
+ pkgCache::DescFile const *B = v_rhs.CachedDescFile();
+
+ if (A == nullptr && B == nullptr)
+ return false;
+
+ if (A == nullptr)
+ return true;
+
+ if (B == nullptr)
+ return false;
+
+ if (A->File == B->File)
+ return A->Offset < B->Offset;
+
+ return A->File < B->File;
+ }
+};
+ /*}}}*/
+// sorted by locality which makes iterating much faster
+typedef APT::VersionContainer<
+ std::set<VerIteratorWithCaching,
+ VersionSortDescriptionLocality> > LocalitySortedVersionSet;
+
+class Matcher {
+public:
+ virtual bool operator () (const pkgCache::PkgIterator &/*P*/) {
+ return true;}
+};
+
+// FIXME: add default argument for OpProgress (or overloaded function)
+bool GetLocalitySortedVersionSet(pkgCacheFile &CacheFile,
+ APT::VersionContainerInterface * const vci,
+ Matcher &matcher,
+ OpProgress * const progress);
+bool GetLocalitySortedVersionSet(pkgCacheFile &CacheFile,
+ APT::VersionContainerInterface * const vci,
+ OpProgress * const progress);
+
+
+// CacheSetHelper saving virtual packages /*{{{*/
+class CacheSetHelperVirtuals: public APT::CacheSetHelper {
+public:
+ APT::PackageSet virtualPkgs;
+
+ virtual pkgCache::VerIterator canNotGetVersion(enum CacheSetHelper::VerSelector const select, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
+ virtual void canNotFindVersion(enum CacheSetHelper::VerSelector const select, APT::VersionContainerInterface * vci, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
+ virtual pkgCache::PkgIterator canNotFindPkgName(pkgCacheFile &Cache, std::string const &str) APT_OVERRIDE;
+
+ CacheSetHelperVirtuals(bool const ShowErrors = true, GlobalError::MsgType const &ErrorType = GlobalError::NOTICE);
+};
+ /*}}}*/
+
+// CacheSetHelperAPTGet - responsible for message telling from the CacheSets/*{{{*/
+class CacheSetHelperAPTGet : public APT::CacheSetHelper {
+ /** \brief stream message should be printed to */
+ std::ostream &out;
+ /** \brief were things like Task or RegEx used to select packages? */
+ bool explicitlyNamed;
+
+ APT::PackageSet virtualPkgs;
+
+public:
+ std::list<std::pair<pkgCache::VerIterator, std::string> > selectedByRelease;
+
+ explicit CacheSetHelperAPTGet(std::ostream &out);
+
+ virtual void showTaskSelection(pkgCache::PkgIterator const &Pkg, std::string const &pattern) APT_OVERRIDE;
+ virtual void showFnmatchSelection(pkgCache::PkgIterator const &Pkg, std::string const &pattern) APT_OVERRIDE;
+ virtual void showRegExSelection(pkgCache::PkgIterator const &Pkg, std::string const &pattern) APT_OVERRIDE;
+ virtual void showSelectedVersion(pkgCache::PkgIterator const &/*Pkg*/, pkgCache::VerIterator const Ver,
+ std::string const &ver, bool const /*verIsRel*/) APT_OVERRIDE;
+ bool showVirtualPackageErrors(pkgCacheFile &Cache);
+
+ virtual pkgCache::VerIterator canNotFindCandidateVer(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
+ virtual pkgCache::VerIterator canNotFindNewestVer(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
+ virtual pkgCache::PkgIterator canNotFindPkgName(pkgCacheFile &Cache, std::string const &str) APT_OVERRIDE;
+
+ APT::VersionSet tryVirtualPackage(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg,
+ CacheSetHelper::VerSelector const select);
+
+ inline bool allPkgNamedExplicitly() const { return explicitlyNamed; }
+};
+ /*}}}*/
+
+#endif
diff --git a/apt-private/private-cmndline.cc b/apt-private/private-cmndline.cc
new file mode 100644
index 000000000..de3992a00
--- /dev/null
+++ b/apt-private/private-cmndline.cc
@@ -0,0 +1,568 @@
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/init.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/strutl.h>
+
+#include <apt-private/private-cmndline.h>
+#include <apt-private/private-main.h>
+
+#include <stdarg.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include <vector>
+#include <iomanip>
+
+#include <apti18n.h>
+ /*}}}*/
+
+APT_SENTINEL static bool strcmp_match_in_list(char const * const Cmd, ...) /*{{{*/
+{
+ if (Cmd == nullptr)
+ return false;
+ va_list args;
+ bool found = false;
+ va_start(args, Cmd);
+ char const * Match = NULL;
+ while ((Match = va_arg(args, char const *)) != NULL)
+ {
+ if (strcmp(Cmd, Match) != 0)
+ continue;
+ found = true;
+ break;
+ }
+ va_end(args);
+ return found;
+}
+ /*}}}*/
+#define addArg(w,x,y,z) Args.push_back(CommandLine::MakeArgs(w,x,y,z))
+#define CmdMatches(...) strcmp_match_in_list(Cmd, __VA_ARGS__, NULL)
+static bool addArgumentsAPTCache(std::vector<CommandLine::Args> &Args, char const * const Cmd)/*{{{*/
+{
+ if (CmdMatches("depends", "rdepends", "xvcg", "dotty"))
+ {
+ addArg('i', "important", "APT::Cache::Important", 0);
+ addArg(0, "installed", "APT::Cache::Installed", 0);
+ addArg(0, "pre-depends", "APT::Cache::ShowPre-Depends", 0);
+ addArg(0, "depends", "APT::Cache::ShowDepends", 0);
+ addArg(0, "recommends", "APT::Cache::ShowRecommends", 0);
+ addArg(0, "suggests", "APT::Cache::ShowSuggests", 0);
+ addArg(0, "replaces", "APT::Cache::ShowReplaces", 0);
+ addArg(0, "breaks", "APT::Cache::ShowBreaks", 0);
+ addArg(0, "conflicts", "APT::Cache::ShowConflicts", 0);
+ addArg(0, "enhances", "APT::Cache::ShowEnhances", 0);
+ addArg(0, "recurse", "APT::Cache::RecurseDepends", 0);
+ addArg(0, "implicit", "APT::Cache::ShowImplicit", 0);
+ }
+ else if (CmdMatches("search"))
+ {
+ addArg('n', "names-only", "APT::Cache::NamesOnly", 0);
+ addArg('f', "full", "APT::Cache::ShowFull", 0);
+ }
+ else if (CmdMatches("show"))
+ {
+ addArg('a', "all-versions", "APT::Cache::AllVersions", 0);
+ }
+ else if (CmdMatches("pkgnames"))
+ {
+ addArg(0, "all-names", "APT::Cache::AllNames", 0);
+ }
+ else if (CmdMatches("unmet"))
+ {
+ addArg('i', "important", "APT::Cache::Important", 0);
+ }
+ else if (CmdMatches("showsrc"))
+ {
+ addArg(0,"only-source","APT::Cache::Only-Source",0);
+ }
+ else if (CmdMatches("gencaches", "showpkg", "stats", "dump",
+ "dumpavail", "showauto", "policy", "madison"))
+ ;
+ else
+ return false;
+
+ bool const found_something = Args.empty() == false;
+
+ // FIXME: move to the correct command(s)
+ addArg('g', "generate", "APT::Cache::Generate", 0);
+ addArg('t', "target-release", "APT::Default-Release", CommandLine::HasArg);
+ addArg('t', "default-release", "APT::Default-Release", CommandLine::HasArg);
+
+ addArg('p', "pkg-cache", "Dir::Cache::pkgcache", CommandLine::HasArg);
+ addArg('s', "src-cache", "Dir::Cache::srcpkgcache", CommandLine::HasArg);
+ addArg(0, "with-source", "APT::Sources::With::", CommandLine::HasArg);
+
+ return found_something;
+}
+ /*}}}*/
+static bool addArgumentsAPTCDROM(std::vector<CommandLine::Args> &Args, char const * const Cmd)/*{{{*/
+{
+ if (CmdMatches("add", "ident") == false)
+ return false;
+
+ // FIXME: move to the correct command(s)
+ addArg(0, "auto-detect", "Acquire::cdrom::AutoDetect", CommandLine::Boolean);
+ addArg('d', "cdrom", "Acquire::cdrom::mount", CommandLine::HasArg);
+ addArg('r', "rename", "APT::CDROM::Rename", 0);
+ addArg('m', "no-mount", "APT::CDROM::NoMount", 0);
+ addArg('f', "fast", "APT::CDROM::Fast", 0);
+ addArg('n', "just-print", "APT::CDROM::NoAct", 0);
+ addArg('n', "recon", "APT::CDROM::NoAct", 0);
+ addArg('n', "no-act", "APT::CDROM::NoAct", 0);
+ addArg('a', "thorough", "APT::CDROM::Thorough", 0);
+ return true;
+}
+ /*}}}*/
+static bool addArgumentsAPTConfig(std::vector<CommandLine::Args> &Args, char const * const Cmd)/*{{{*/
+{
+ if (CmdMatches("dump"))
+ {
+ addArg(0,"empty","APT::Config::Dump::EmptyValue",CommandLine::Boolean);
+ addArg(0,"format","APT::Config::Dump::Format",CommandLine::HasArg);
+ }
+ else if (CmdMatches("shell"))
+ ;
+ else
+ return false;
+
+ return true;
+}
+ /*}}}*/
+static bool addArgumentsAPTDumpSolver(std::vector<CommandLine::Args> &Args, char const * const)/*{{{*/
+{
+ addArg(0,"user","APT::Solver::RunAsUser",CommandLine::HasArg);
+ return true;
+}
+ /*}}}*/
+static bool addArgumentsAPTExtractTemplates(std::vector<CommandLine::Args> &Args, char const * const)/*{{{*/
+{
+ addArg('t',"tempdir","APT::ExtractTemplates::TempDir",CommandLine::HasArg);
+ return true;
+}
+ /*}}}*/
+static bool addArgumentsAPTFTPArchive(std::vector<CommandLine::Args> &Args, char const * const)/*{{{*/
+{
+ addArg(0,"md5","APT::FTPArchive::MD5",0);
+ addArg(0,"sha1","APT::FTPArchive::SHA1",0);
+ addArg(0,"sha256","APT::FTPArchive::SHA256",0);
+ addArg(0,"sha512","APT::FTPArchive::SHA512",0);
+ addArg('d',"db","APT::FTPArchive::DB",CommandLine::HasArg);
+ addArg('s',"source-override","APT::FTPArchive::SourceOverride",CommandLine::HasArg);
+ addArg(0,"delink","APT::FTPArchive::DeLinkAct",0);
+ addArg(0,"readonly","APT::FTPArchive::ReadOnlyDB",0);
+ addArg(0,"contents","APT::FTPArchive::Contents",0);
+ addArg('a',"arch","APT::FTPArchive::Architecture",CommandLine::HasArg);
+ return true;
+}
+ /*}}}*/
+static bool addArgumentsAPTInternalPlanner(std::vector<CommandLine::Args> &, char const * const)/*{{{*/
+{
+ return true;
+}
+ /*}}}*/
+static bool addArgumentsAPTInternalSolver(std::vector<CommandLine::Args> &, char const * const)/*{{{*/
+{
+ return true;
+}
+ /*}}}*/
+static bool addArgumentsAPTHelper(std::vector<CommandLine::Args> &Args, char const * const Cmd)/*{{{*/
+{
+ if (CmdMatches("cat-file"))
+ {
+ addArg('C', "compress", "Apt-Helper::Cat-File::Compress",CommandLine::HasArg);
+ }
+ return true;
+}
+ /*}}}*/
+static bool addArgumentsAPTGet(std::vector<CommandLine::Args> &Args, char const * const Cmd)/*{{{*/
+{
+ if (CmdMatches("install", "remove", "purge", "upgrade", "dist-upgrade",
+ "dselect-upgrade", "autoremove", "full-upgrade"))
+ {
+ addArg(0, "show-progress", "DpkgPM::Progress", 0);
+ addArg('f', "fix-broken", "APT::Get::Fix-Broken", 0);
+ addArg(0, "purge", "APT::Get::Purge", 0);
+ addArg('V',"verbose-versions","APT::Get::Show-Versions",0);
+ addArg(0, "autoremove", "APT::Get::AutomaticRemove", 0);
+ addArg(0, "auto-remove", "APT::Get::AutomaticRemove", 0);
+ addArg(0, "reinstall", "APT::Get::ReInstall", 0);
+ addArg(0, "solver", "APT::Solver", CommandLine::HasArg);
+ addArg(0, "planner", "APT::Planner", CommandLine::HasArg);
+ if (CmdMatches("upgrade"))
+ {
+ addArg(0, "new-pkgs", "APT::Get::Upgrade-Allow-New",
+ CommandLine::Boolean);
+ }
+ }
+ else if (CmdMatches("update"))
+ {
+ addArg(0, "list-cleanup", "APT::Get::List-Cleanup", 0);
+ }
+ else if (CmdMatches("source"))
+ {
+ addArg('b', "compile", "APT::Get::Compile", 0);
+ addArg('b', "build", "APT::Get::Compile", 0);
+ addArg('P', "build-profiles", "APT::Build-Profiles", CommandLine::HasArg);
+ addArg(0, "diff-only", "APT::Get::Diff-Only", 0);
+ addArg(0, "debian-only", "APT::Get::Diff-Only", 0);
+ addArg(0, "tar-only", "APT::Get::Tar-Only", 0);
+ addArg(0, "dsc-only", "APT::Get::Dsc-Only", 0);
+ }
+ else if (CmdMatches("build-dep"))
+ {
+ addArg('a', "host-architecture", "APT::Get::Host-Architecture", CommandLine::HasArg);
+ addArg('P', "build-profiles", "APT::Build-Profiles", CommandLine::HasArg);
+ addArg(0, "purge", "APT::Get::Purge", 0);
+ addArg(0, "solver", "APT::Solver", CommandLine::HasArg);
+ addArg(0,"arch-only","APT::Get::Arch-Only",0);
+ addArg(0,"indep-only","APT::Get::Indep-Only",0);
+ // this has no effect *but* sbuild is using it (see LP: #1255806)
+ // once sbuild is fixed, this option can be removed
+ addArg('f', "fix-broken", "APT::Get::Fix-Broken", 0);
+ }
+ else if (CmdMatches("indextargets"))
+ {
+ addArg(0,"format","APT::Get::IndexTargets::Format", CommandLine::HasArg);
+ addArg(0,"release-info","APT::Get::IndexTargets::ReleaseInfo", 0);
+ }
+ else if (CmdMatches("clean", "autoclean", "auto-clean", "check", "download", "changelog") ||
+ CmdMatches("markauto", "unmarkauto")) // deprecated commands
+ ;
+ else if (CmdMatches("moo"))
+ addArg(0, "color", "APT::Moo::Color", 0);
+
+ if (CmdMatches("install", "remove", "purge", "upgrade", "dist-upgrade",
+ "dselect-upgrade", "autoremove", "auto-remove", "clean", "autoclean", "auto-clean", "check",
+ "build-dep", "full-upgrade", "source"))
+ {
+ addArg('s', "simulate", "APT::Get::Simulate", 0);
+ addArg('s', "just-print", "APT::Get::Simulate", 0);
+ addArg('s', "recon", "APT::Get::Simulate", 0);
+ addArg('s', "dry-run", "APT::Get::Simulate", 0);
+ addArg('s', "no-act", "APT::Get::Simulate", 0);
+ }
+
+ bool const found_something = Args.empty() == false;
+
+ // FIXME: move to the correct command(s)
+ addArg('d',"download-only","APT::Get::Download-Only",0);
+ addArg('y',"yes","APT::Get::Assume-Yes",0);
+ addArg('y',"assume-yes","APT::Get::Assume-Yes",0);
+ addArg(0,"assume-no","APT::Get::Assume-No",0);
+ addArg('u',"show-upgraded","APT::Get::Show-Upgraded",0);
+ addArg('m',"ignore-missing","APT::Get::Fix-Missing",0);
+ addArg('t',"target-release","APT::Default-Release",CommandLine::HasArg);
+ addArg('t',"default-release","APT::Default-Release",CommandLine::HasArg);
+ addArg(0,"download","APT::Get::Download",0);
+ addArg(0,"fix-missing","APT::Get::Fix-Missing",0);
+ addArg(0,"ignore-hold","APT::Ignore-Hold",0);
+ addArg(0,"upgrade","APT::Get::upgrade",0);
+ addArg(0,"only-upgrade","APT::Get::Only-Upgrade",0);
+ addArg(0,"allow-change-held-packages","APT::Get::allow-change-held-packages",CommandLine::Boolean);
+ addArg(0,"allow-remove-essential","APT::Get::allow-remove-essential",CommandLine::Boolean);
+ addArg(0,"allow-downgrades","APT::Get::allow-downgrades",CommandLine::Boolean);
+ addArg(0,"force-yes","APT::Get::force-yes",0);
+ addArg(0,"print-uris","APT::Get::Print-URIs",0);
+ addArg(0,"trivial-only","APT::Get::Trivial-Only",0);
+ addArg(0,"remove","APT::Get::Remove",0);
+ addArg(0,"only-source","APT::Get::Only-Source",0);
+ addArg(0,"allow-unauthenticated","APT::Get::AllowUnauthenticated",0);
+ addArg(0,"allow-insecure-repositories","Acquire::AllowInsecureRepositories",0);
+ addArg(0,"allow-weak-repositories","Acquire::AllowWeakRepositories",0);
+ addArg(0,"install-recommends","APT::Install-Recommends",CommandLine::Boolean);
+ addArg(0,"install-suggests","APT::Install-Suggests",CommandLine::Boolean);
+ addArg(0,"fix-policy","APT::Get::Fix-Policy-Broken",0);
+ addArg(0, "with-source", "APT::Sources::With::", CommandLine::HasArg);
+
+ return found_something;
+}
+ /*}}}*/
+static bool addArgumentsAPTMark(std::vector<CommandLine::Args> &Args, char const * const Cmd)/*{{{*/
+{
+ if (CmdMatches("auto", "manual", "hold", "unhold", "showauto",
+ "showmanual", "showhold", "showholds",
+ "markauto", "unmarkauto"))
+ {
+ addArg('f',"file","Dir::State::extended_states",CommandLine::HasArg);
+ }
+ else if (CmdMatches("install", "remove", "deinstall", "purge",
+ "showinstall", "showinstalls", "showremove", "showremoves",
+ "showdeinstall", "showdeinstalls", "showpurge", "showpurges"))
+ ;
+ else
+ return false;
+
+ if (CmdMatches("markauto", "unmarkauto"))
+ {
+ addArg('v',"verbose","APT::MarkAuto::Verbose",0);
+ }
+
+ if (strncmp(Cmd, "show", strlen("show")) != 0)
+ {
+ addArg('s',"simulate","APT::Mark::Simulate",0);
+ addArg('s',"just-print","APT::Mark::Simulate",0);
+ addArg('s',"recon","APT::Mark::Simulate",0);
+ addArg('s',"dry-run","APT::Mark::Simulate",0);
+ addArg('s',"no-act","APT::Mark::Simulate",0);
+ }
+ addArg(0, "with-source", "APT::Sources::With::", CommandLine::HasArg);
+
+ return true;
+}
+ /*}}}*/
+static bool addArgumentsAPTSortPkgs(std::vector<CommandLine::Args> &Args, char const * const)/*{{{*/
+{
+ addArg('s',"source","APT::SortPkgs::Source",0);
+ return true;
+}
+ /*}}}*/
+static bool addArgumentsAPT(std::vector<CommandLine::Args> &Args, char const * const Cmd)/*{{{*/
+{
+ if (CmdMatches("list"))
+ {
+ addArg('i',"installed","APT::Cmd::Installed",0);
+ addArg(0,"upgradeable","APT::Cmd::Upgradable",0);
+ addArg('u',"upgradable","APT::Cmd::Upgradable",0);
+ addArg(0,"manual-installed","APT::Cmd::Manual-Installed",0);
+ addArg('v', "verbose", "APT::Cmd::List-Include-Summary", 0);
+ addArg('a', "all-versions", "APT::Cmd::All-Versions", 0);
+ }
+ else if (CmdMatches("show"))
+ {
+ addArg('a', "all-versions", "APT::Cache::AllVersions", 0);
+ }
+ else if (addArgumentsAPTGet(Args, Cmd) || addArgumentsAPTCache(Args, Cmd))
+ {
+ // we have no (supported) command-name overlaps so far, so we call
+ // specifics in order until we find one which adds arguments
+ }
+ else
+ return false;
+
+ addArg(0, "with-source", "APT::Sources::With::", CommandLine::HasArg);
+
+ return true;
+}
+ /*}}}*/
+std::vector<CommandLine::Args> getCommandArgs(APT_CMD const Program, char const * const Cmd)/*{{{*/
+{
+ std::vector<CommandLine::Args> Args;
+ Args.reserve(50);
+ if (Cmd != nullptr && strcmp(Cmd, "help") == 0)
+ ; // no options for help so no need to implement it in each
+ else
+ switch (Program)
+ {
+ case APT_CMD::APT: addArgumentsAPT(Args, Cmd); break;
+ case APT_CMD::APT_GET: addArgumentsAPTGet(Args, Cmd); break;
+ case APT_CMD::APT_CACHE: addArgumentsAPTCache(Args, Cmd); break;
+ case APT_CMD::APT_CDROM: addArgumentsAPTCDROM(Args, Cmd); break;
+ case APT_CMD::APT_CONFIG: addArgumentsAPTConfig(Args, Cmd); break;
+ case APT_CMD::APT_DUMP_SOLVER: addArgumentsAPTDumpSolver(Args, Cmd); break;
+ case APT_CMD::APT_EXTRACTTEMPLATES: addArgumentsAPTExtractTemplates(Args, Cmd); break;
+ case APT_CMD::APT_FTPARCHIVE: addArgumentsAPTFTPArchive(Args, Cmd); break;
+ case APT_CMD::APT_HELPER: addArgumentsAPTHelper(Args, Cmd); break;
+ case APT_CMD::APT_INTERNAL_PLANNER: addArgumentsAPTInternalPlanner(Args, Cmd); break;
+ case APT_CMD::APT_INTERNAL_SOLVER: addArgumentsAPTInternalSolver(Args, Cmd); break;
+ case APT_CMD::APT_MARK: addArgumentsAPTMark(Args, Cmd); break;
+ case APT_CMD::APT_SORTPKG: addArgumentsAPTSortPkgs(Args, Cmd); break;
+ }
+
+ // options without a command
+ addArg('h', "help", "help", 0);
+ addArg('v', "version", "version", 0);
+ // general options
+ addArg('q', "quiet", "quiet", CommandLine::IntLevel);
+ addArg('q', "silent", "quiet", CommandLine::IntLevel);
+ addArg('c', "config-file", 0, CommandLine::ConfigFile);
+ addArg('o', "option", 0, CommandLine::ArbItem);
+ addArg(0, NULL, NULL, 0);
+
+ return Args;
+}
+ /*}}}*/
+#undef addArg
+static void ShowHelpListCommands(std::vector<aptDispatchWithHelp> const &Cmds)/*{{{*/
+{
+ if (Cmds.empty() || Cmds[0].Match == nullptr)
+ return;
+ std::cout << std::endl << _("Most used commands:") << std::endl;
+ for (auto const &c: Cmds)
+ {
+ if (c.Help == nullptr)
+ continue;
+ std::cout << " " << c.Match << " - " << c.Help << std::endl;
+ }
+}
+ /*}}}*/
+static bool ShowCommonHelp(APT_CMD const Binary, CommandLine &CmdL, std::vector<aptDispatchWithHelp> const &Cmds,/*{{{*/
+ bool (*ShowHelp)(CommandLine &))
+{
+ std::cout << PACKAGE << " " << PACKAGE_VERSION << " (" << COMMON_ARCH << ")" << std::endl;
+ if (_config->FindB("version") == true && Binary != APT_CMD::APT_GET)
+ return true;
+ if (ShowHelp(CmdL) == false)
+ return false;
+ if (_config->FindB("version") == true || Binary == APT_CMD::APT_FTPARCHIVE)
+ return true;
+ ShowHelpListCommands(Cmds);
+ std::cout << std::endl;
+ char const * cmd = nullptr;
+ switch (Binary)
+ {
+ case APT_CMD::APT: cmd = "apt(8)"; break;
+ case APT_CMD::APT_CACHE: cmd = "apt-cache(8)"; break;
+ case APT_CMD::APT_CDROM: cmd = "apt-cdrom(8)"; break;
+ case APT_CMD::APT_CONFIG: cmd = "apt-config(8)"; break;
+ case APT_CMD::APT_DUMP_SOLVER: cmd = nullptr; break;
+ case APT_CMD::APT_EXTRACTTEMPLATES: cmd = "apt-extracttemplates(1)"; break;
+ case APT_CMD::APT_FTPARCHIVE: cmd = "apt-ftparchive(1)"; break;
+ case APT_CMD::APT_GET: cmd = "apt-get(8)"; break;
+ case APT_CMD::APT_HELPER: cmd = nullptr; break;
+ case APT_CMD::APT_INTERNAL_PLANNER: cmd = nullptr; break;
+ case APT_CMD::APT_INTERNAL_SOLVER: cmd = nullptr; break;
+ case APT_CMD::APT_MARK: cmd = "apt-mark(8)"; break;
+ case APT_CMD::APT_SORTPKG: cmd = "apt-sortpkgs(1)"; break;
+ }
+ if (cmd != nullptr)
+ ioprintf(std::cout, _("See %s for more information about the available commands."), cmd);
+ if (Binary != APT_CMD::APT_DUMP_SOLVER && Binary != APT_CMD::APT_INTERNAL_SOLVER &&
+ Binary != APT_CMD::APT_INTERNAL_PLANNER)
+ std::cout << std::endl <<
+ _("Configuration options and syntax is detailed in apt.conf(5).\n"
+ "Information about how to configure sources can be found in sources.list(5).\n"
+ "Package and version choices can be expressed via apt_preferences(5).\n"
+ "Security details are available in apt-secure(8).\n");
+ if (Binary == APT_CMD::APT_GET || Binary == APT_CMD::APT)
+ std::cout << std::right << std::setw(70) << _("This APT has Super Cow Powers.") << std::endl;
+ else if (Binary == APT_CMD::APT_HELPER || Binary == APT_CMD::APT_DUMP_SOLVER)
+ std::cout << std::right << std::setw(70) << _("This APT helper has Super Meep Powers.") << std::endl;
+ return true;
+}
+ /*}}}*/
+static void BinarySpecificConfiguration(char const * const Binary) /*{{{*/
+{
+ std::string const binary = flNotDir(Binary);
+ if (binary == "apt" || binary == "apt-config")
+ {
+ _config->CndSet("Binary::apt::APT::Color", true);
+ _config->CndSet("Binary::apt::APT::Cache::Show::Version", 2);
+ _config->CndSet("Binary::apt::APT::Cache::AllVersions", false);
+ _config->CndSet("Binary::apt::APT::Cache::ShowVirtuals", true);
+ _config->CndSet("Binary::apt::APT::Cache::Search::Version", 2);
+ _config->CndSet("Binary::apt::APT::Cache::ShowDependencyType", true);
+ _config->CndSet("Binary::apt::APT::Cache::ShowVersion", true);
+ _config->CndSet("Binary::apt::APT::Get::Upgrade-Allow-New", true);
+ _config->CndSet("Binary::apt::APT::Cmd::Show-Update-Stats", true);
+ _config->CndSet("Binary::apt::DPkg::Progress-Fancy", true);
+ _config->CndSet("Binary::apt::APT::Keep-Downloaded-Packages", false);
+ }
+ if (binary == "apt-config")
+ _config->CndSet("Binary::apt-get::Acquire::AllowInsecureRepositories", true);
+
+ _config->Set("Binary", binary);
+}
+ /*}}}*/
+static void BinaryCommandSpecificConfiguration(char const * const Binary, char const * const Cmd)/*{{{*/
+{
+ std::string const binary = flNotDir(Binary);
+ if (binary == "apt-get" && CmdMatches("update"))
+ _config->CndSet("Binary::apt-get::Acquire::AllowInsecureRepositories", true);
+ if ((binary == "apt" || binary == "apt-get") && CmdMatches("upgrade", "dist-upgrade", "full-upgrade"))
+ {
+ //FIXME: the option is documented to apply only for install/remove, so
+ // we force it false for configuration files where users can be confused if
+ // we support it anyhow, but allow it on the commandline to take effect
+ // even through it isn't documented as a user who doesn't want it wouldn't
+ // ask for it
+ _config->Set("Binary::apt-get::APT::Get::AutomaticRemove", false);
+ _config->Set("Binary::apt::APT::Get::AutomaticRemove", false);
+ }
+}
+#undef CmdMatches
+ /*}}}*/
+std::vector<CommandLine::Dispatch> ParseCommandLine(CommandLine &CmdL, APT_CMD const Binary,/*{{{*/
+ Configuration * const * const Cnf, pkgSystem ** const Sys, int const argc, const char *argv[],
+ bool (*ShowHelp)(CommandLine &), std::vector<aptDispatchWithHelp> (*GetCommands)(void))
+{
+ InitLocale(Binary);
+ if (Cnf != NULL && pkgInitConfig(**Cnf) == false)
+ {
+ _error->DumpErrors();
+ exit(100);
+ }
+
+ if (likely(argc != 0 && argv[0] != NULL))
+ BinarySpecificConfiguration(argv[0]);
+
+ std::vector<aptDispatchWithHelp> const CmdsWithHelp = GetCommands();
+ std::vector<CommandLine::Dispatch> Cmds;
+ if (CmdsWithHelp.empty() == false)
+ {
+ CommandLine::Dispatch const help = { "help", [](CommandLine &){return false;} };
+ Cmds.push_back(std::move(help));
+ }
+ for (auto const& cmd : CmdsWithHelp)
+ Cmds.push_back({cmd.Match, cmd.Handler});
+
+ char const * CmdCalled = nullptr;
+ if (Cmds.empty() == false && Cmds[0].Handler != nullptr)
+ CmdCalled = CommandLine::GetCommand(Cmds.data(), argc, argv);
+ if (CmdCalled != nullptr)
+ BinaryCommandSpecificConfiguration(argv[0], CmdCalled);
+ std::string const conf = "Binary::" + _config->Find("Binary");
+ _config->MoveSubTree(conf.c_str(), nullptr);
+
+ // Args running out of scope invalidates the pointer stored in CmdL,
+ // but we don't use the pointer after this function, so we ignore
+ // this problem for now and figure something out if we have to.
+ auto Args = getCommandArgs(Binary, CmdCalled);
+ CmdL = CommandLine(Args.data(), _config);
+
+ if (CmdL.Parse(argc,argv) == false ||
+ (Sys != NULL && pkgInitSystem(*_config, *Sys) == false))
+ {
+ if (_config->FindB("version") == true)
+ ShowCommonHelp(Binary, CmdL, CmdsWithHelp, ShowHelp);
+
+ _error->DumpErrors();
+ exit(100);
+ }
+
+ // See if the help should be shown
+ if (_config->FindB("help") == true || _config->FindB("version") == true ||
+ (CmdL.FileSize() > 0 && strcmp(CmdL.FileList[0], "help") == 0))
+ {
+ ShowCommonHelp(Binary, CmdL, CmdsWithHelp, ShowHelp);
+ exit(0);
+ }
+ if (Cmds.empty() == false && CmdL.FileSize() == 0)
+ {
+ ShowCommonHelp(Binary, CmdL, CmdsWithHelp, ShowHelp);
+ exit(1);
+ }
+ return Cmds;
+}
+ /*}}}*/
+unsigned short DispatchCommandLine(CommandLine &CmdL, std::vector<CommandLine::Dispatch> const &Cmds) /*{{{*/
+{
+ // Match the operation
+ bool const returned = Cmds.empty() ? true : CmdL.DispatchArg(Cmds.data());
+
+ // Print any errors or warnings found during parsing
+ bool const Errors = _error->PendingError();
+ if (_config->FindI("quiet",0) > 0)
+ _error->DumpErrors();
+ else
+ _error->DumpErrors(GlobalError::DEBUG);
+ if (returned == false)
+ return 100;
+ return Errors == true ? 100 : 0;
+}
+ /*}}}*/
diff --git a/apt-private/private-cmndline.h b/apt-private/private-cmndline.h
new file mode 100644
index 000000000..37fe2c91a
--- /dev/null
+++ b/apt-private/private-cmndline.h
@@ -0,0 +1,41 @@
+#ifndef APT_PRIVATE_CMNDLINE_H
+#define APT_PRIVATE_CMNDLINE_H
+
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/macros.h>
+
+#include <vector>
+
+class Configuration;
+class pkgSystem;
+
+enum class APT_CMD {
+ APT,
+ APT_GET,
+ APT_CACHE,
+ APT_CDROM,
+ APT_CONFIG,
+ APT_EXTRACTTEMPLATES,
+ APT_FTPARCHIVE,
+ APT_HELPER,
+ APT_INTERNAL_SOLVER,
+ APT_MARK,
+ APT_SORTPKG,
+ APT_DUMP_SOLVER,
+ APT_INTERNAL_PLANNER,
+};
+struct aptDispatchWithHelp
+{
+ const char *Match;
+ bool (*Handler)(CommandLine &);
+ const char *Help;
+};
+
+APT_PUBLIC std::vector<CommandLine::Dispatch> ParseCommandLine(CommandLine &CmdL, APT_CMD const Binary,
+ Configuration * const * const Cnf, pkgSystem ** const Sys, int const argc, const char * argv[],
+ bool (*ShowHelp)(CommandLine &), std::vector<aptDispatchWithHelp> (*GetCommands)(void));
+APT_PUBLIC unsigned short DispatchCommandLine(CommandLine &CmdL, std::vector<CommandLine::Dispatch> const &Cmds);
+
+APT_PUBLIC std::vector<CommandLine::Args> getCommandArgs(APT_CMD const Program, char const * const Cmd);
+
+#endif
diff --git a/apt-private/private-depends.cc b/apt-private/private-depends.cc
new file mode 100644
index 000000000..3a3a2737a
--- /dev/null
+++ b/apt-private/private-depends.cc
@@ -0,0 +1,152 @@
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/algorithms.h>
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/pkgcache.h>
+
+#include <apt-private/private-cacheset.h>
+#include <apt-private/private-depends.h>
+
+#include <iostream>
+#include <string>
+#include <vector>
+
+#include <stddef.h>
+
+#include <apti18n.h>
+ /*}}}*/
+
+// ShowDepends - Helper for printing out a dependency tree /*{{{*/
+static bool ShowDepends(CommandLine &CmdL, bool const RevDepends)
+{
+ pkgCacheFile CacheFile;
+ pkgCache * const Cache = CacheFile.GetPkgCache();
+ if (unlikely(Cache == nullptr || CacheFile.GetDepCache() == nullptr))
+ return false;
+
+ CacheSetHelperVirtuals helper(false);
+ APT::VersionList verset = APT::VersionList::FromCommandLine(CacheFile, CmdL.FileList + 1, APT::CacheSetHelper::CANDIDATE, helper);
+ if (verset.empty() == true && helper.virtualPkgs.empty() == true)
+ return _error->Error(_("No packages found"));
+ std::vector<bool> Shown(Cache->Head().PackageCount);
+
+ bool const Recurse = _config->FindB("APT::Cache::RecurseDepends", false);
+ bool const Installed = _config->FindB("APT::Cache::Installed", false);
+ bool const Important = _config->FindB("APT::Cache::Important", false);
+ bool const ShowDepType = _config->FindB("APT::Cache::ShowDependencyType", RevDepends == false);
+ bool const ShowVersion = _config->FindB("APT::Cache::ShowVersion", false);
+ bool const ShowPreDepends = _config->FindB("APT::Cache::ShowPre-Depends", true);
+ bool const ShowDepends = _config->FindB("APT::Cache::ShowDepends", true);
+ bool const ShowRecommends = _config->FindB("APT::Cache::ShowRecommends", Important == false);
+ bool const ShowSuggests = _config->FindB("APT::Cache::ShowSuggests", Important == false);
+ bool const ShowReplaces = _config->FindB("APT::Cache::ShowReplaces", Important == false);
+ bool const ShowConflicts = _config->FindB("APT::Cache::ShowConflicts", Important == false);
+ bool const ShowBreaks = _config->FindB("APT::Cache::ShowBreaks", Important == false);
+ bool const ShowEnhances = _config->FindB("APT::Cache::ShowEnhances", Important == false);
+ bool const ShowOnlyFirstOr = _config->FindB("APT::Cache::ShowOnlyFirstOr", false);
+ bool const ShowImplicit = _config->FindB("APT::Cache::ShowImplicit", false);
+
+ while (verset.empty() != true)
+ {
+ pkgCache::VerIterator Ver = *verset.begin();
+ verset.erase(verset.begin());
+ pkgCache::PkgIterator Pkg = Ver.ParentPkg();
+ Shown[Pkg->ID] = true;
+
+ std::cout << Pkg.FullName(true) << std::endl;
+
+ if (RevDepends == true)
+ std::cout << "Reverse Depends:" << std::endl;
+ for (pkgCache::DepIterator D = RevDepends ? Pkg.RevDependsList() : Ver.DependsList();
+ D.end() == false; ++D)
+ {
+ switch (D->Type) {
+ case pkgCache::Dep::PreDepends: if (!ShowPreDepends) continue; break;
+ case pkgCache::Dep::Depends: if (!ShowDepends) continue; break;
+ case pkgCache::Dep::Recommends: if (!ShowRecommends) continue; break;
+ case pkgCache::Dep::Suggests: if (!ShowSuggests) continue; break;
+ case pkgCache::Dep::Replaces: if (!ShowReplaces) continue; break;
+ case pkgCache::Dep::Conflicts: if (!ShowConflicts) continue; break;
+ case pkgCache::Dep::DpkgBreaks: if (!ShowBreaks) continue; break;
+ case pkgCache::Dep::Enhances: if (!ShowEnhances) continue; break;
+ }
+ if (ShowImplicit == false && D.IsImplicit())
+ continue;
+
+ pkgCache::PkgIterator Trg = RevDepends ? D.ParentPkg() : D.TargetPkg();
+
+ if((Installed && Trg->CurrentVer != 0) || !Installed)
+ {
+
+ if ((D->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or && ShowOnlyFirstOr == false)
+ std::cout << " |";
+ else
+ std::cout << " ";
+
+ // Show the package
+ if (ShowDepType == true)
+ std::cout << D.DepType() << ": ";
+ if (Trg->VersionList == 0)
+ std::cout << "<" << Trg.FullName(true) << ">";
+ else
+ std::cout << Trg.FullName(true);
+ if (ShowVersion == true && D->Version != 0)
+ std::cout << " (" << pkgCache::CompTypeDeb(D->CompareOp) << ' ' << D.TargetVer() << ')';
+ std::cout << std::endl;
+
+ if (Recurse == true && Shown[Trg->ID] == false)
+ {
+ Shown[Trg->ID] = true;
+ verset.insert(APT::VersionSet::FromPackage(CacheFile, Trg, APT::CacheSetHelper::CANDIDATE, helper));
+ }
+
+ }
+
+ // Display all solutions
+ std::unique_ptr<pkgCache::Version *[]> List(D.AllTargets());
+ pkgPrioSortList(*Cache,List.get());
+ for (pkgCache::Version **I = List.get(); *I != 0; I++)
+ {
+ pkgCache::VerIterator V(*Cache,*I);
+ if (V != Cache->VerP + V.ParentPkg()->VersionList ||
+ V->ParentPkg == D->Package)
+ continue;
+ std::cout << " " << V.ParentPkg().FullName(true) << std::endl;
+
+ if (Recurse == true && Shown[V.ParentPkg()->ID] == false)
+ {
+ Shown[V.ParentPkg()->ID] = true;
+ verset.insert(APT::VersionSet::FromPackage(CacheFile, V.ParentPkg(), APT::CacheSetHelper::CANDIDATE, helper));
+ }
+ }
+
+ if (ShowOnlyFirstOr == true)
+ while ((D->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or) ++D;
+ }
+ }
+
+ for (APT::PackageSet::const_iterator Pkg = helper.virtualPkgs.begin();
+ Pkg != helper.virtualPkgs.end(); ++Pkg)
+ std::cout << '<' << Pkg.FullName(true) << '>' << std::endl;
+
+ return true;
+}
+ /*}}}*/
+// Depends - Print out a dependency tree /*{{{*/
+bool Depends(CommandLine &CmdL)
+{
+ return ShowDepends(CmdL, false);
+}
+ /*}}}*/
+// RDepends - Print out a reverse dependency tree /*{{{*/
+bool RDepends(CommandLine &CmdL)
+{
+ return ShowDepends(CmdL, true);
+}
+ /*}}}*/
diff --git a/apt-private/private-depends.h b/apt-private/private-depends.h
new file mode 100644
index 000000000..e9f703dc7
--- /dev/null
+++ b/apt-private/private-depends.h
@@ -0,0 +1,11 @@
+#ifndef APT_PRIVATE_DEPENDS_H
+#define APT_PRIVATE_DEPENDS_H
+
+#include <apt-pkg/macros.h>
+
+class CommandLine;
+
+APT_PUBLIC bool Depends(CommandLine &CmdL);
+APT_PUBLIC bool RDepends(CommandLine &CmdL);
+
+#endif
diff --git a/apt-private/private-download.cc b/apt-private/private-download.cc
new file mode 100644
index 000000000..ee477f4cb
--- /dev/null
+++ b/apt-private/private-download.cc
@@ -0,0 +1,378 @@
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/acquire-item.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/clean.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+
+#include <apt-private/private-cachefile.h>
+#include <apt-private/private-download.h>
+#include <apt-private/private-output.h>
+#include <apt-private/private-utils.h>
+#include <apt-private/acqprogress.h>
+
+#include <fstream>
+#include <string>
+#include <vector>
+
+#include <unistd.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <fcntl.h>
+#ifdef HAVE_VFS_H
+#include <sys/vfs.h>
+#else
+#ifdef HAVE_PARAMS_H
+#include <sys/params.h>
+#endif
+#include <sys/mount.h>
+#endif
+#include <sys/statvfs.h>
+#include <sys/stat.h>
+#include <errno.h>
+
+#include <apti18n.h>
+ /*}}}*/
+
+// CheckAuth - check if each download comes form a trusted source /*{{{*/
+bool CheckAuth(pkgAcquire& Fetcher, bool const PromptUser)
+{
+ std::vector<std::string> UntrustedList;
+ for (pkgAcquire::ItemIterator I = Fetcher.ItemsBegin(); I < Fetcher.ItemsEnd(); ++I)
+ if (!(*I)->IsTrusted())
+ UntrustedList.push_back((*I)->ShortDesc());
+
+ if (UntrustedList.empty())
+ return true;
+
+ return AuthPrompt(UntrustedList, PromptUser);
+}
+ /*}}}*/
+bool AuthPrompt(std::vector<std::string> const &UntrustedList, bool const PromptUser)/*{{{*/
+{
+ ShowList(c2out,_("WARNING: The following packages cannot be authenticated!"), UntrustedList,
+ [](std::string const&) { return true; },
+ [](std::string const&str) { return str; },
+ [](std::string const&) { return ""; });
+
+ if (_config->FindB("APT::Get::AllowUnauthenticated",false) == true)
+ {
+ c2out << _("Authentication warning overridden.\n");
+ return true;
+ }
+
+ if (PromptUser == false)
+ return _error->Error(_("Some packages could not be authenticated"));
+
+ if (_config->FindI("quiet",0) < 2
+ && _config->FindB("APT::Get::Assume-Yes",false) == false)
+ {
+ if (!YnPrompt(_("Install these packages without verification?"), false))
+ return _error->Error(_("Some packages could not be authenticated"));
+
+ return true;
+ }
+ else if (_config->FindB("APT::Get::Force-Yes",false) == true) {
+ _error->Warning(_("--force-yes is deprecated, use one of the options starting with --allow instead."));
+ return true;
+ }
+
+ return _error->Error(_("There were unauthenticated packages and -y was used without --allow-unauthenticated"));
+}
+ /*}}}*/
+bool AcquireRun(pkgAcquire &Fetcher, int const PulseInterval, bool * const Failure, bool * const TransientNetworkFailure)/*{{{*/
+{
+ pkgAcquire::RunResult res;
+ if(PulseInterval > 0)
+ res = Fetcher.Run(PulseInterval);
+ else
+ res = Fetcher.Run();
+
+ if (res == pkgAcquire::Failed)
+ return false;
+
+ for (pkgAcquire::ItemIterator I = Fetcher.ItemsBegin();
+ I != Fetcher.ItemsEnd(); ++I)
+ {
+
+ if ((*I)->Status == pkgAcquire::Item::StatDone &&
+ (*I)->Complete == true)
+ continue;
+
+ if (TransientNetworkFailure != NULL && (*I)->Status == pkgAcquire::Item::StatIdle)
+ {
+ *TransientNetworkFailure = true;
+ continue;
+ }
+
+ ::URI uri((*I)->DescURI());
+ uri.User.clear();
+ uri.Password.clear();
+ std::string descUri = std::string(uri);
+ _error->Error(_("Failed to fetch %s %s"), descUri.c_str(),
+ (*I)->ErrorText.c_str());
+
+ if (Failure != NULL)
+ *Failure = true;
+ }
+
+ return true;
+}
+ /*}}}*/
+bool CheckFreeSpaceBeforeDownload(std::string const &Dir, unsigned long long FetchBytes)/*{{{*/
+{
+ uint32_t const RAMFS_MAGIC = 0x858458f6;
+ /* Check for enough free space, but only if we are actually going to
+ download */
+ if (_config->FindB("APT::Get::Print-URIs", false) == true ||
+ _config->FindB("APT::Get::Download", true) == false)
+ return true;
+
+ struct statvfs Buf;
+ if (statvfs(Dir.c_str(),&Buf) != 0) {
+ if (errno == EOVERFLOW)
+ return _error->WarningE("statvfs",_("Couldn't determine free space in %s"),
+ Dir.c_str());
+ else
+ return _error->Errno("statvfs",_("Couldn't determine free space in %s"),
+ Dir.c_str());
+ }
+ else
+ {
+ unsigned long long const FreeBlocks = _config->Find("APT::Sandbox::User").empty() ? Buf.f_bfree : Buf.f_bavail;
+ if (FreeBlocks < (FetchBytes / Buf.f_bsize))
+ {
+ struct statfs Stat;
+ if (statfs(Dir.c_str(),&Stat) != 0
+#ifdef HAVE_STRUCT_STATFS_F_TYPE
+ || Stat.f_type != RAMFS_MAGIC
+#endif
+ )
+ return _error->Error(_("You don't have enough free space in %s."),
+ Dir.c_str());
+ }
+ }
+ return true;
+}
+ /*}}}*/
+
+aptAcquireWithTextStatus::aptAcquireWithTextStatus() : pkgAcquire::pkgAcquire(),
+ Stat(std::cout, ScreenWidth, _config->FindI("quiet",0))
+{
+ SetLog(&Stat);
+}
+
+// DoDownload - download a binary /*{{{*/
+bool DoDownload(CommandLine &CmdL)
+{
+ CacheFile Cache;
+ if (Cache.ReadOnlyOpen() == false)
+ return false;
+
+ APT::CacheSetHelper helper;
+ APT::VersionSet verset = APT::VersionSet::FromCommandLine(Cache,
+ CmdL.FileList + 1, APT::CacheSetHelper::CANDIDATE, helper);
+
+ if (verset.empty() == true)
+ return false;
+
+ pkgRecords Recs(Cache);
+ pkgSourceList *SrcList = Cache.GetSourceList();
+
+ // reuse the usual acquire methods for deb files, but don't drop them into
+ // the usual directories - keep everything in the current directory
+ aptAcquireWithTextStatus Fetcher;
+ std::vector<std::string> storefile(verset.size());
+ std::string const cwd = SafeGetCWD();
+ _config->Set("Dir::Cache::Archives", cwd);
+ int i = 0;
+ for (APT::VersionSet::const_iterator Ver = verset.begin();
+ Ver != verset.end(); ++Ver, ++i)
+ {
+ pkgAcquire::Item *I = new pkgAcqArchive(&Fetcher, SrcList, &Recs, *Ver, storefile[i]);
+ if (storefile[i].empty())
+ continue;
+ std::string const filename = cwd + flNotDir(storefile[i]);
+ storefile[i].assign(filename);
+ I->DestFile.assign(filename);
+ }
+
+ // Just print out the uris and exit if the --print-uris flag was used
+ if (_config->FindB("APT::Get::Print-URIs") == true)
+ {
+ pkgAcquire::UriIterator I = Fetcher.UriBegin();
+ for (; I != Fetcher.UriEnd(); ++I)
+ std::cout << '\'' << I->URI << "' " << flNotDir(I->Owner->DestFile) << ' ' <<
+ I->Owner->FileSize << ' ' << I->Owner->HashSum() << std::endl;
+ return true;
+ }
+
+ if (_error->PendingError() == true || CheckAuth(Fetcher, false) == false)
+ return false;
+
+ bool Failed = false;
+ if (AcquireRun(Fetcher, 0, &Failed, NULL) == false)
+ return false;
+
+ // copy files in local sources to the current directory
+ for (pkgAcquire::ItemIterator I = Fetcher.ItemsBegin(); I != Fetcher.ItemsEnd(); ++I)
+ {
+ std::string const filename = cwd + flNotDir((*I)->DestFile);
+ if ((*I)->Local == true &&
+ filename != (*I)->DestFile &&
+ (*I)->Status == pkgAcquire::Item::StatDone)
+ {
+ std::ifstream src((*I)->DestFile.c_str(), std::ios::binary);
+ std::ofstream dst(filename.c_str(), std::ios::binary);
+ dst << src.rdbuf();
+ chmod(filename.c_str(), 0644);
+ }
+ }
+ return Failed == false;
+}
+ /*}}}*/
+// DoChangelog - Get changelog from the command line /*{{{*/
+bool DoChangelog(CommandLine &CmdL)
+{
+ CacheFile Cache;
+ if (Cache.ReadOnlyOpen() == false)
+ return false;
+
+ APT::CacheSetHelper helper;
+ APT::VersionList verset = APT::VersionList::FromCommandLine(Cache,
+ CmdL.FileList + 1, APT::CacheSetHelper::CANDIDATE, helper);
+ if (verset.empty() == true)
+ return false;
+
+ bool const downOnly = _config->FindB("APT::Get::Download-Only", false);
+ bool const printOnly = _config->FindB("APT::Get::Print-URIs", false);
+ if (printOnly)
+ _config->CndSet("Acquire::Changelogs::AlwaysOnline", true);
+
+ aptAcquireWithTextStatus Fetcher;
+ for (APT::VersionList::const_iterator Ver = verset.begin();
+ Ver != verset.end();
+ ++Ver)
+ {
+ if (printOnly)
+ new pkgAcqChangelog(&Fetcher, Ver, "/dev/null");
+ else if (downOnly)
+ new pkgAcqChangelog(&Fetcher, Ver, ".");
+ else
+ new pkgAcqChangelog(&Fetcher, Ver);
+ }
+
+ if (printOnly == false)
+ {
+ bool Failed = false;
+ if (AcquireRun(Fetcher, 0, &Failed, NULL) == false || Failed == true)
+ return false;
+ }
+
+ if (downOnly == false || printOnly == true)
+ {
+ bool Failed = false;
+ for (pkgAcquire::ItemIterator I = Fetcher.ItemsBegin(); I != Fetcher.ItemsEnd(); ++I)
+ {
+ if (printOnly)
+ {
+ if ((*I)->ErrorText.empty() == false)
+ {
+ Failed = true;
+ _error->Error("%s", (*I)->ErrorText.c_str());
+ }
+ else
+ std::cout << '\'' << (*I)->DescURI() << "' " << flNotDir((*I)->DestFile) << std::endl;
+ }
+ else
+ DisplayFileInPager((*I)->DestFile);
+ }
+ return Failed == false;
+ }
+
+ return true;
+}
+ /*}}}*/
+
+// DoClean - Remove download archives /*{{{*/
+bool DoClean(CommandLine &)
+{
+ std::string const archivedir = _config->FindDir("Dir::Cache::archives");
+ std::string const listsdir = _config->FindDir("Dir::state::lists");
+
+ if (_config->FindB("APT::Get::Simulate") == true)
+ {
+ std::string const pkgcache = _config->FindFile("Dir::cache::pkgcache");
+ std::string const srcpkgcache = _config->FindFile("Dir::cache::srcpkgcache");
+ std::cout << "Del " << archivedir << "* " << archivedir << "partial/*"<< std::endl
+ << "Del " << listsdir << "partial/*" << std::endl
+ << "Del " << pkgcache << " " << srcpkgcache << std::endl;
+ return true;
+ }
+
+ pkgAcquire Fetcher;
+ if (archivedir.empty() == false && FileExists(archivedir) == true &&
+ Fetcher.GetLock(archivedir) == true)
+ {
+ Fetcher.Clean(archivedir);
+ Fetcher.Clean(archivedir + "partial/");
+ }
+
+ if (listsdir.empty() == false && FileExists(listsdir) == true &&
+ Fetcher.GetLock(listsdir) == true)
+ {
+ Fetcher.Clean(listsdir + "partial/");
+ }
+
+ pkgCacheFile::RemoveCaches();
+
+ return true;
+}
+ /*}}}*/
+// DoAutoClean - Smartly remove downloaded archives /*{{{*/
+// ---------------------------------------------------------------------
+/* This is similar to clean but it only purges things that cannot be
+ downloaded, that is old versions of cached packages. */
+ class LogCleaner : public pkgArchiveCleaner
+{
+ protected:
+ virtual void Erase(const char *File, std::string Pkg, std::string Ver,struct stat &St) APT_OVERRIDE
+ {
+ c1out << "Del " << Pkg << " " << Ver << " [" << SizeToStr(St.st_size) << "B]" << std::endl;
+
+ if (_config->FindB("APT::Get::Simulate") == false)
+ RemoveFile("Cleaner::Erase", File);
+ };
+};
+bool DoAutoClean(CommandLine &)
+{
+ std::string const archivedir = _config->FindDir("Dir::Cache::Archives");
+ if (FileExists(archivedir) == false)
+ return true;
+
+ // Lock the archive directory
+ FileFd Lock;
+ if (_config->FindB("Debug::NoLocking",false) == false)
+ {
+ int lock_fd = GetLock(flCombine(archivedir, "lock"));
+ if (lock_fd < 0)
+ return _error->Error(_("Unable to lock the download directory"));
+ Lock.Fd(lock_fd);
+ }
+
+ CacheFile Cache;
+ if (Cache.Open(false) == false)
+ return false;
+
+ LogCleaner Cleaner;
+
+ return Cleaner.Go(archivedir, *Cache) &&
+ Cleaner.Go(flCombine(archivedir, "partial/"), *Cache);
+}
+ /*}}}*/
diff --git a/apt-private/private-download.h b/apt-private/private-download.h
new file mode 100644
index 000000000..d829e8b24
--- /dev/null
+++ b/apt-private/private-download.h
@@ -0,0 +1,38 @@
+#ifndef APT_PRIVATE_DOWNLOAD_H
+#define APT_PRIVATE_DOWNLOAD_H
+
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/macros.h>
+
+#include <apt-private/acqprogress.h>
+
+#include <string>
+#include <vector>
+
+// Check if all files in the fetcher are authenticated
+bool CheckAuth(pkgAcquire& Fetcher, bool const PromptUser);
+
+// show a authentication warning prompt and return true if the system
+// should continue
+bool AuthPrompt(std::vector<std::string> const &UntrustedList, bool const PromptUser);
+
+APT_PUBLIC bool AcquireRun(pkgAcquire &Fetcher, int const PulseInterval, bool * const Failure, bool * const TransientNetworkFailure);
+
+bool CheckFreeSpaceBeforeDownload(std::string const &Dir, unsigned long long FetchBytes);
+
+class APT_PUBLIC aptAcquireWithTextStatus : public pkgAcquire
+{
+ AcqTextStatus Stat;
+public:
+ aptAcquireWithTextStatus();
+};
+
+class CommandLine;
+
+APT_PUBLIC bool DoDownload(CommandLine &CmdL);
+APT_PUBLIC bool DoChangelog(CommandLine &CmdL);
+
+APT_PUBLIC bool DoClean(CommandLine &CmdL);
+APT_PUBLIC bool DoAutoClean(CommandLine &CmdL);
+
+#endif
diff --git a/apt-private/private-install.cc b/apt-private/private-install.cc
new file mode 100644
index 000000000..73a03a828
--- /dev/null
+++ b/apt-private/private-install.cc
@@ -0,0 +1,990 @@
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/acquire-item.h>
+#include <apt-pkg/algorithms.h>
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/pkgrecords.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/sptr.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/macros.h>
+#include <apt-pkg/packagemanager.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/upgrade.h>
+#include <apt-pkg/install-progress.h>
+#include <apt-pkg/prettyprinters.h>
+
+#include <stdlib.h>
+#include <string.h>
+#include <algorithm>
+#include <iostream>
+#include <set>
+#include <vector>
+#include <map>
+
+#include <apt-private/acqprogress.h>
+#include <apt-private/private-install.h>
+#include <apt-private/private-cachefile.h>
+#include <apt-private/private-cacheset.h>
+#include <apt-private/private-download.h>
+#include <apt-private/private-output.h>
+
+#include <apti18n.h>
+ /*}}}*/
+class pkgSourceList;
+
+bool CheckNothingBroken(CacheFile &Cache) /*{{{*/
+{
+ // Now we check the state of the packages,
+ if (Cache->BrokenCount() == 0)
+ return true;
+
+ // FIXME: if an external solver showed an error, we shouldn't show one here
+ if (_error->PendingError() && _config->Find("APT::Solver") == "dump")
+ return false;
+
+ c1out <<
+ _("Some packages could not be installed. This may mean that you have\n"
+ "requested an impossible situation or if you are using the unstable\n"
+ "distribution that some required packages have not yet been created\n"
+ "or been moved out of Incoming.") << std::endl;
+ /*
+ if (Packages == 1)
+ {
+ c1out << std::endl;
+ c1out <<
+ _("Since you only requested a single operation it is extremely likely that\n"
+ "the package is simply not installable and a bug report against\n"
+ "that package should be filed.") << std::endl;
+ }
+ */
+
+ c1out << _("The following information may help to resolve the situation:") << std::endl;
+ c1out << std::endl;
+ ShowBroken(c1out,Cache,false);
+ if (_error->PendingError() == true)
+ return false;
+ else
+ return _error->Error(_("Broken packages"));
+}
+ /*}}}*/
+// InstallPackages - Actually download and install the packages /*{{{*/
+// ---------------------------------------------------------------------
+/* This displays the informative messages describing what is going to
+ happen and then calls the download routines */
+static void RemoveDownloadNeedingItemsFromFetcher(pkgAcquire &Fetcher, bool &Transient)
+{
+ for (pkgAcquire::ItemIterator I = Fetcher.ItemsBegin(); I < Fetcher.ItemsEnd();)
+ {
+ if ((*I)->Local == true)
+ {
+ ++I;
+ continue;
+ }
+
+ // Close the item and check if it was found in cache
+ (*I)->Finished();
+ if ((*I)->Complete == false)
+ Transient = true;
+
+ // Clear it out of the fetch list
+ delete *I;
+ I = Fetcher.ItemsBegin();
+ }
+}
+bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask, bool Safety)
+{
+ if (_config->FindB("APT::Get::Purge", false) == true)
+ for (pkgCache::PkgIterator I = Cache->PkgBegin(); I.end() == false; ++I)
+ if (Cache[I].Delete() == true && Cache[I].Purge() == false)
+ Cache->MarkDelete(I,true);
+
+ // Create the download object
+ aptAcquireWithTextStatus Fetcher;
+ if (_config->FindB("APT::Get::Print-URIs", false) == true)
+ {
+ // force a hashsum for compatibility reasons
+ _config->CndSet("Acquire::ForceHash", "md5sum");
+ }
+ else if (_config->FindB("APT::Get::Simulate") == true)
+ ;
+ else if (Fetcher.GetLock(_config->FindDir("Dir::Cache::Archives")) == false)
+ return false;
+
+ // Read the source list
+ if (Cache.BuildSourceList() == false)
+ return false;
+ pkgSourceList * const List = Cache.GetSourceList();
+
+ // Create the text record parser
+ pkgRecords Recs(Cache);
+ if (_error->PendingError() == true)
+ return false;
+
+ // Create the package manager and prepare to download
+ std::unique_ptr<pkgPackageManager> PM(_system->CreatePM(Cache));
+ if (PM->GetArchives(&Fetcher,List,&Recs) == false ||
+ _error->PendingError() == true)
+ return false;
+
+ if (_config->FindB("APT::Get::Download",true) == false)
+ {
+ bool Missing = false;
+ RemoveDownloadNeedingItemsFromFetcher(Fetcher, Missing);
+ if (Missing)
+ {
+ if (_config->FindB("APT::Get::Fix-Missing",false))
+ PM->FixMissing();
+ else
+ return _error->Error(_("Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?"));
+ }
+ Fetcher.Shutdown();
+ if (_error->PendingError() == true)
+ return false;
+ }
+
+ // Show all the various warning indicators
+ ShowDel(c1out,Cache);
+ ShowNew(c1out,Cache);
+ if (ShwKept == true)
+ ShowKept(c1out,Cache);
+ bool const Hold = !ShowHold(c1out,Cache);
+ if (_config->FindB("APT::Get::Show-Upgraded",true) == true)
+ ShowUpgraded(c1out,Cache);
+ bool const Downgrade = !ShowDowngraded(c1out,Cache);
+
+ bool Essential = false;
+ if (_config->FindB("APT::Get::Download-Only",false) == false)
+ Essential = !ShowEssential(c1out,Cache);
+
+ Stats(c1out,Cache);
+
+ // Sanity check
+ if (Cache->BrokenCount() != 0)
+ {
+ ShowBroken(c1out,Cache,false);
+ return _error->Error(_("Internal error, InstallPackages was called with broken packages!"));
+ }
+
+ if (Cache->DelCount() == 0 && Cache->InstCount() == 0 &&
+ Cache->BadCount() == 0)
+ return true;
+
+ // No remove flag
+ if (Cache->DelCount() != 0 && _config->FindB("APT::Get::Remove",true) == false)
+ return _error->Error(_("Packages need to be removed but remove is disabled."));
+
+ // Fail safe check
+ bool const Fail = (Essential || Downgrade || Hold);
+ if (_config->FindI("quiet",0) >= 2 ||
+ _config->FindB("APT::Get::Assume-Yes",false) == true)
+ {
+ if (_config->FindB("APT::Get::Force-Yes",false) == true) {
+ _error->Warning(_("--force-yes is deprecated, use one of the options starting with --allow instead."));
+ }
+
+ if (Fail == true && _config->FindB("APT::Get::Force-Yes",false) == false) {
+ if (Essential == true && _config->FindB("APT::Get::allow-remove-essential", false) == false)
+ return _error->Error(_("Essential packages were removed and -y was used without --allow-remove-essential."));
+ if (Downgrade == true && _config->FindB("APT::Get::allow-downgrades", false) == false)
+ return _error->Error(_("Packages were downgraded and -y was used without --allow-downgrades."));
+ if (Hold == true && _config->FindB("APT::Get::allow-change-held-packages", false) == false)
+ return _error->Error(_("Held packages were changed and -y was used without --allow-change-held-packages."));
+ }
+ }
+
+ // Run the simulator ..
+ if (_config->FindB("APT::Get::Simulate") == true)
+ {
+ pkgSimulate PM(Cache);
+
+ APT::Progress::PackageManager *progress = APT::Progress::PackageManagerProgressFactory();
+ pkgPackageManager::OrderResult Res = PM.DoInstall(progress);
+ delete progress;
+
+ if (Res == pkgPackageManager::Failed)
+ return false;
+ if (Res != pkgPackageManager::Completed)
+ return _error->Error(_("Internal error, Ordering didn't finish"));
+ return true;
+ }
+
+ // Display statistics
+ auto const FetchBytes = Fetcher.FetchNeeded();
+ auto const FetchPBytes = Fetcher.PartialPresent();
+ auto const DebBytes = Fetcher.TotalNeeded();
+ if (DebBytes != Cache->DebSize())
+ {
+ c0out << DebBytes << ',' << Cache->DebSize() << std::endl;
+ c0out << _("How odd... The sizes didn't match, email apt@packages.debian.org") << std::endl;
+ }
+
+ // Number of bytes
+ if (DebBytes != FetchBytes)
+ //TRANSLATOR: The required space between number and unit is already included
+ // in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+ ioprintf(c1out,_("Need to get %sB/%sB of archives.\n"),
+ SizeToStr(FetchBytes).c_str(),SizeToStr(DebBytes).c_str());
+ else if (DebBytes != 0)
+ //TRANSLATOR: The required space between number and unit is already included
+ // in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+ ioprintf(c1out,_("Need to get %sB of archives.\n"),
+ SizeToStr(DebBytes).c_str());
+
+ // Size delta
+ if (Cache->UsrSize() >= 0)
+ //TRANSLATOR: The required space between number and unit is already included
+ // in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+ ioprintf(c1out,_("After this operation, %sB of additional disk space will be used.\n"),
+ SizeToStr(Cache->UsrSize()).c_str());
+ else
+ //TRANSLATOR: The required space between number and unit is already included
+ // in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+ ioprintf(c1out,_("After this operation, %sB disk space will be freed.\n"),
+ SizeToStr(-1*Cache->UsrSize()).c_str());
+
+ if (CheckFreeSpaceBeforeDownload(_config->FindDir("Dir::Cache::Archives"), (FetchBytes - FetchPBytes)) == false)
+ return false;
+
+ if (_error->PendingError() == true)
+ return false;
+
+ // Just print out the uris an exit if the --print-uris flag was used
+ if (_config->FindB("APT::Get::Print-URIs") == true)
+ {
+ pkgAcquire::UriIterator I = Fetcher.UriBegin();
+ for (; I != Fetcher.UriEnd(); ++I)
+ std::cout << '\'' << I->URI << "' " << flNotDir(I->Owner->DestFile) << ' ' <<
+ std::to_string(I->Owner->FileSize) << ' ' << I->Owner->HashSum() << std::endl;
+ return true;
+ }
+
+ if (Essential == true && Safety == true && _config->FindB("APT::Get::allow-remove-essential", false) == false)
+ {
+ if (_config->FindB("APT::Get::Trivial-Only",false) == true)
+ return _error->Error(_("Trivial Only specified but this is not a trivial operation."));
+
+ // TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+ // careful with hard to type or special characters (like non-breaking spaces)
+ const char *Prompt = _("Yes, do as I say!");
+ std::string question;
+ strprintf(question,
+ _("You are about to do something potentially harmful.\n"
+ "To continue type in the phrase '%s'\n"
+ " ?] "),Prompt);
+ if (AnalPrompt(question, Prompt) == false)
+ {
+ c2out << _("Abort.") << std::endl;
+ exit(1);
+ }
+ }
+ else
+ {
+ // Prompt to continue
+ if (Ask == true || Fail == true)
+ {
+ if (_config->FindB("APT::Get::Trivial-Only",false) == true)
+ return _error->Error(_("Trivial Only specified but this is not a trivial operation."));
+
+ if (_config->FindI("quiet",0) < 2 &&
+ _config->FindB("APT::Get::Assume-Yes",false) == false)
+ {
+ if (YnPrompt(_("Do you want to continue?")) == false)
+ {
+ c2out << _("Abort.") << std::endl;
+ exit(1);
+ }
+ }
+ }
+ }
+
+ if (!CheckAuth(Fetcher, true))
+ return false;
+
+ /* Unlock the dpkg lock if we are not going to be doing an install
+ after. */
+ if (_config->FindB("APT::Get::Download-Only",false) == true)
+ _system->UnLock();
+
+ // Run it
+ bool Failed = false;
+ while (1)
+ {
+ bool Transient = false;
+ if (AcquireRun(Fetcher, 0, &Failed, &Transient) == false)
+ return false;
+
+ if (_config->FindB("APT::Get::Download-Only",false) == true)
+ {
+ if (Failed == true && _config->FindB("APT::Get::Fix-Missing",false) == false)
+ return _error->Error(_("Some files failed to download"));
+ c1out << _("Download complete and in download only mode") << std::endl;
+ return true;
+ }
+
+ if (Failed == true && _config->FindB("APT::Get::Fix-Missing",false) == false)
+ return _error->Error(_("Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?"));
+
+ if (Transient == true && Failed == true)
+ return _error->Error(_("--fix-missing and media swapping is not currently supported"));
+
+ // Try to deal with missing package files
+ if (Failed == true && PM->FixMissing() == false)
+ {
+ c2out << _("Unable to correct missing packages.") << std::endl;
+ return _error->Error(_("Aborting install."));
+ }
+
+ auto const progress = APT::Progress::PackageManagerProgressFactory();
+ _system->UnLock();
+ pkgPackageManager::OrderResult const Res = PM->DoInstall(progress);
+ delete progress;
+
+ if (Res == pkgPackageManager::Failed || _error->PendingError() == true)
+ return false;
+ if (Res == pkgPackageManager::Completed)
+ break;
+
+ _system->Lock();
+
+ // Reload the fetcher object and loop again for media swapping
+ Fetcher.Shutdown();
+ if (PM->GetArchives(&Fetcher,List,&Recs) == false)
+ return false;
+
+ Failed = false;
+ if (_config->FindB("APT::Get::Download",true) == false)
+ RemoveDownloadNeedingItemsFromFetcher(Fetcher, Failed);
+ }
+
+ std::set<std::string> const disappearedPkgs = PM->GetDisappearedPackages();
+ if (disappearedPkgs.empty() == false)
+ {
+ ShowList(c1out, P_("The following package disappeared from your system as\n"
+ "all files have been overwritten by other packages:",
+ "The following packages disappeared from your system as\n"
+ "all files have been overwritten by other packages:", disappearedPkgs.size()), disappearedPkgs,
+ [](std::string const &Pkg) { return Pkg.empty() == false; },
+ [](std::string const &Pkg) { return Pkg; },
+ [](std::string const &) { return std::string(); });
+ c0out << _("Note: This is done automatically and on purpose by dpkg.") << std::endl;
+ }
+
+ // cleanup downloaded debs
+ if (_config->FindB("APT::Keep-Downloaded-Packages", true) == false)
+ {
+ std::string const archivedir = _config->FindDir("Dir::Cache::archives");
+ for (auto I = Fetcher.ItemsBegin(); I != Fetcher.ItemsEnd(); ++I)
+ {
+ if (flNotFile((*I)->DestFile) != archivedir || (*I)->Local)
+ continue;
+ RemoveFile("Keep-Downloaded-Packages=false", (*I)->DestFile);
+ }
+ }
+
+ return true;
+}
+ /*}}}*/
+// DoAutomaticRemove - Remove all automatic unused packages /*{{{*/
+// ---------------------------------------------------------------------
+/* Remove unused automatic packages */
+bool DoAutomaticRemove(CacheFile &Cache)
+{
+ bool Debug = _config->FindB("Debug::pkgAutoRemove",false);
+ bool doAutoRemove = _config->FindB("APT::Get::AutomaticRemove", false);
+ bool hideAutoRemove = _config->FindB("APT::Get::HideAutoRemove");
+
+ pkgDepCache::ActionGroup group(*Cache);
+ if(Debug)
+ std::cout << "DoAutomaticRemove()" << std::endl;
+
+ if (doAutoRemove == true &&
+ _config->FindB("APT::Get::Remove",true) == false)
+ {
+ c1out << _("We are not supposed to delete stuff, can't start "
+ "AutoRemover") << std::endl;
+ return false;
+ }
+
+ bool purgePkgs = _config->FindB("APT::Get::Purge", false);
+ bool smallList = (hideAutoRemove == false &&
+ strcasecmp(_config->Find("APT::Get::HideAutoRemove","").c_str(),"small") == 0);
+
+ unsigned long autoRemoveCount = 0;
+ APT::PackageSet tooMuch;
+ SortedPackageUniverse Universe(Cache);
+ // look over the cache to see what can be removed
+ for (auto const &Pkg: Universe)
+ {
+ if (Cache[Pkg].Garbage)
+ {
+ if(Pkg.CurrentVer() != 0 || Cache[Pkg].Install())
+ if(Debug)
+ std::cout << "We could delete " << APT::PrettyPkg(Cache, Pkg) << std::endl;
+
+ if (doAutoRemove)
+ {
+ if(Pkg.CurrentVer() != 0 &&
+ Pkg->CurrentState != pkgCache::State::ConfigFiles)
+ Cache->MarkDelete(Pkg, purgePkgs, 0, false);
+ else
+ Cache->MarkKeep(Pkg, false, false);
+ }
+ else
+ {
+ // if the package is a new install and already garbage we don't need to
+ // install it in the first place, so nuke it instead of show it
+ if (Cache[Pkg].Install() == true && Pkg.CurrentVer() == 0)
+ {
+ tooMuch.insert(Pkg);
+ Cache->MarkDelete(Pkg, false, 0, false);
+ }
+ // only show stuff in the list that is not yet marked for removal
+ else if(hideAutoRemove == false && Cache[Pkg].Delete() == false)
+ ++autoRemoveCount;
+ }
+ }
+ }
+
+ // we could have removed a new dependency of a garbage package,
+ // so check if a reverse depends is broken and if so install it again.
+ if (tooMuch.empty() == false && (Cache->BrokenCount() != 0 || Cache->PolicyBrokenCount() != 0))
+ {
+ bool Changed;
+ do {
+ Changed = false;
+ for (APT::PackageSet::iterator Pkg = tooMuch.begin();
+ Pkg != tooMuch.end(); ++Pkg)
+ {
+ APT::PackageSet too;
+ too.insert(*Pkg);
+ for (pkgCache::PrvIterator Prv = Cache[Pkg].CandidateVerIter(Cache).ProvidesList();
+ Prv.end() == false; ++Prv)
+ too.insert(Prv.ParentPkg());
+ for (APT::PackageSet::const_iterator P = too.begin(); P != too.end(); ++P)
+ {
+ for (pkgCache::DepIterator R = P.RevDependsList();
+ R.end() == false; ++R)
+ {
+ if (R.IsNegative() == true ||
+ Cache->IsImportantDep(R) == false)
+ continue;
+ auto const RV = R.ParentVer();
+ if (unlikely(RV.end() == true))
+ continue;
+ auto const RP = RV.ParentPkg();
+ // check if that dependency comes from an interesting version
+ if (RP.CurrentVer() == RV)
+ {
+ if ((*Cache)[RP].Keep() == false)
+ continue;
+ }
+ else if (Cache[RP].CandidateVerIter(Cache) == RV)
+ {
+ if ((*Cache)[RP].NewInstall() == false && (*Cache)[RP].Upgrade() == false)
+ continue;
+ }
+ else // ignore dependency from a non-candidate version
+ continue;
+ if (Debug == true)
+ std::clog << "Save " << APT::PrettyPkg(Cache, Pkg) << " as another installed package depends on it: " << APT::PrettyPkg(Cache, RP) << std::endl;
+ Cache->MarkInstall(Pkg, false, 0, false);
+ if (hideAutoRemove == false)
+ ++autoRemoveCount;
+ tooMuch.erase(Pkg);
+ Changed = true;
+ break;
+ }
+ if (Changed == true)
+ break;
+ }
+ if (Changed == true)
+ break;
+ }
+ } while (Changed == true);
+ }
+ // trigger marking now so that the package list below is correct
+ group.release();
+
+ // Now see if we had destroyed anything (if we had done anything)
+ if (Cache->BrokenCount() != 0)
+ {
+ c1out << _("Hmm, seems like the AutoRemover destroyed something which really\n"
+ "shouldn't happen. Please file a bug report against apt.") << std::endl;
+ c1out << std::endl;
+ c1out << _("The following information may help to resolve the situation:") << std::endl;
+ c1out << std::endl;
+ ShowBroken(c1out,Cache,false);
+
+ return _error->Error(_("Internal Error, AutoRemover broke stuff"));
+ }
+
+ // if we don't remove them, we should show them!
+ if (doAutoRemove == false && autoRemoveCount != 0)
+ {
+ if (smallList == false)
+ {
+ SortedPackageUniverse Universe(Cache);
+ ShowList(c1out, P_("The following package was automatically installed and is no longer required:",
+ "The following packages were automatically installed and are no longer required:",
+ autoRemoveCount), Universe,
+ [&Cache](pkgCache::PkgIterator const &Pkg) { return (*Cache)[Pkg].Garbage == true && (*Cache)[Pkg].Delete() == false; },
+ &PrettyFullName, CandidateVersion(&Cache));
+ }
+ else
+ ioprintf(c1out, P_("%lu package was automatically installed and is no longer required.\n",
+ "%lu packages were automatically installed and are no longer required.\n", autoRemoveCount), autoRemoveCount);
+ std::string autocmd = "apt autoremove";
+ if (getenv("SUDO_USER") != nullptr)
+ {
+ auto const envsudocmd = getenv("SUDO_COMMAND");
+ auto const envshell = getenv("SHELL");
+ if (envsudocmd == nullptr || envshell == nullptr || strcmp(envsudocmd, envshell) != 0)
+ autocmd = "sudo " + autocmd;
+ }
+ ioprintf(c1out, P_("Use '%s' to remove it.", "Use '%s' to remove them.", autoRemoveCount), autocmd.c_str());
+ c1out << std::endl;
+ }
+ return true;
+}
+ /*}}}*/
+// DoCacheManipulationFromCommandLine /*{{{*/
+static const unsigned short MOD_REMOVE = 1;
+static const unsigned short MOD_INSTALL = 2;
+
+bool DoCacheManipulationFromCommandLine(CommandLine &CmdL, CacheFile &Cache, int UpgradeMode)
+{
+ std::vector<std::string> VolatileCmdL;
+ return DoCacheManipulationFromCommandLine(CmdL, VolatileCmdL, Cache, UpgradeMode);
+}
+bool DoCacheManipulationFromCommandLine(CommandLine &CmdL, std::vector<std::string> &VolatileCmdL, CacheFile &Cache, int UpgradeMode)
+{
+ std::map<unsigned short, APT::VersionSet> verset;
+ return DoCacheManipulationFromCommandLine(CmdL, VolatileCmdL, Cache, verset, UpgradeMode);
+}
+bool DoCacheManipulationFromCommandLine(CommandLine &CmdL, std::vector<std::string> &VolatileCmdL, CacheFile &Cache,
+ std::map<unsigned short, APT::VersionSet> &verset, int UpgradeMode)
+{
+ // Enter the special broken fixing mode if the user specified arguments
+ bool BrokenFix = false;
+ if (Cache->BrokenCount() != 0)
+ BrokenFix = true;
+
+ std::unique_ptr<pkgProblemResolver> Fix(nullptr);
+ if (_config->FindB("APT::Get::CallResolver", true) == true)
+ Fix.reset(new pkgProblemResolver(Cache));
+
+ unsigned short fallback = MOD_INSTALL;
+ if (strcasecmp(CmdL.FileList[0],"remove") == 0)
+ fallback = MOD_REMOVE;
+ else if (strcasecmp(CmdL.FileList[0], "purge") == 0)
+ {
+ _config->Set("APT::Get::Purge", true);
+ fallback = MOD_REMOVE;
+ }
+ else if (strcasecmp(CmdL.FileList[0], "autoremove") == 0 ||
+ strcasecmp(CmdL.FileList[0], "auto-remove") == 0)
+ {
+ _config->Set("APT::Get::AutomaticRemove", "true");
+ fallback = MOD_REMOVE;
+ }
+
+ std::list<APT::VersionSet::Modifier> mods;
+ mods.push_back(APT::VersionSet::Modifier(MOD_INSTALL, "+",
+ APT::VersionSet::Modifier::POSTFIX, APT::CacheSetHelper::CANDIDATE));
+ mods.push_back(APT::VersionSet::Modifier(MOD_REMOVE, "-",
+ APT::VersionSet::Modifier::POSTFIX, APT::CacheSetHelper::NEWEST));
+ CacheSetHelperAPTGet helper(c0out);
+ verset = APT::VersionSet::GroupedFromCommandLine(Cache,
+ CmdL.FileList + 1, mods, fallback, helper);
+
+ for (auto const &I: VolatileCmdL)
+ {
+ pkgCache::PkgIterator const P = Cache->FindPkg(I);
+ if (P.end())
+ continue;
+
+ // Set any version providing the .deb as the candidate.
+ for (auto Prv = P.ProvidesList(); Prv.end() == false; Prv++)
+ Cache.GetDepCache()->SetCandidateVersion(Prv.OwnerVer());
+
+ // via cacheset to have our usual virtual handling
+ APT::VersionContainerInterface::FromPackage(&(verset[MOD_INSTALL]), Cache, P, APT::CacheSetHelper::CANDIDATE, helper);
+ }
+
+ if (_error->PendingError() == true)
+ {
+ helper.showVirtualPackageErrors(Cache);
+ return false;
+ }
+
+
+ TryToInstall InstallAction(Cache, Fix.get(), BrokenFix);
+ TryToRemove RemoveAction(Cache, Fix.get());
+
+ // new scope for the ActionGroup
+ {
+ pkgDepCache::ActionGroup group(Cache);
+ unsigned short const order[] = { MOD_REMOVE, MOD_INSTALL, 0 };
+
+ for (unsigned short i = 0; order[i] != 0; ++i)
+ {
+ if (order[i] == MOD_INSTALL)
+ InstallAction = std::for_each(verset[MOD_INSTALL].begin(), verset[MOD_INSTALL].end(), InstallAction);
+ else if (order[i] == MOD_REMOVE)
+ RemoveAction = std::for_each(verset[MOD_REMOVE].begin(), verset[MOD_REMOVE].end(), RemoveAction);
+ }
+
+ if (Fix != NULL && _config->FindB("APT::Get::AutoSolving", true) == true)
+ {
+ InstallAction.propergateReleaseCandiateSwitching(helper.selectedByRelease, c0out);
+ InstallAction.doAutoInstall();
+ }
+
+ if (_error->PendingError() == true)
+ {
+ return false;
+ }
+
+ /* If we are in the Broken fixing mode we do not attempt to fix the
+ problems. This is if the user invoked install without -f and gave
+ packages */
+ if (BrokenFix == true && Cache->BrokenCount() != 0)
+ {
+ c1out << _("You might want to run 'apt --fix-broken install' to correct these.") << std::endl;
+ ShowBroken(c1out,Cache,false);
+ return _error->Error(_("Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution)."));
+ }
+
+ if (Fix != NULL)
+ {
+ // Call the scored problem resolver
+ OpTextProgress Progress(*_config);
+ bool const distUpgradeMode = strcmp(CmdL.FileList[0], "dist-upgrade") == 0 || strcmp(CmdL.FileList[0], "full-upgrade") == 0;
+
+ bool resolver_fail = false;
+ if (distUpgradeMode == true || UpgradeMode != APT::Upgrade::ALLOW_EVERYTHING)
+ resolver_fail = APT::Upgrade::Upgrade(Cache, UpgradeMode, &Progress);
+ else
+ resolver_fail = Fix->Resolve(true, &Progress);
+
+ if (resolver_fail == false && Cache->BrokenCount() == 0)
+ return false;
+ }
+
+ if (CheckNothingBroken(Cache) == false)
+ return false;
+ }
+ if (!DoAutomaticRemove(Cache))
+ return false;
+
+ // if nothing changed in the cache, but only the automark information
+ // we write the StateFile here, otherwise it will be written in
+ // cache.commit()
+ if (InstallAction.AutoMarkChanged > 0 &&
+ Cache->DelCount() == 0 && Cache->InstCount() == 0 &&
+ Cache->BadCount() == 0 &&
+ _config->FindB("APT::Get::Simulate",false) == false)
+ Cache->writeStateFile(NULL);
+
+ return true;
+}
+ /*}}}*/
+// DoInstall - Install packages from the command line /*{{{*/
+// ---------------------------------------------------------------------
+/* Install named packages */
+struct PkgIsExtraInstalled {
+ pkgCacheFile * const Cache;
+ APT::VersionSet const * const verset;
+ PkgIsExtraInstalled(pkgCacheFile * const Cache, APT::VersionSet const * const Container) : Cache(Cache), verset(Container) {}
+ bool operator() (pkgCache::PkgIterator const &Pkg)
+ {
+ if ((*Cache)[Pkg].Install() == false)
+ return false;
+ pkgCache::VerIterator const Cand = (*Cache)[Pkg].CandidateVerIter(*Cache);
+ return verset->find(Cand) == verset->end();
+ }
+};
+bool DoInstall(CommandLine &CmdL)
+{
+ CacheFile Cache;
+ std::vector<std::string> VolatileCmdL;
+ Cache.GetSourceList()->AddVolatileFiles(CmdL, &VolatileCmdL);
+
+ // then open the cache
+ if (Cache.OpenForInstall() == false ||
+ Cache.CheckDeps(CmdL.FileSize() != 1) == false)
+ return false;
+
+ std::map<unsigned short, APT::VersionSet> verset;
+ if(!DoCacheManipulationFromCommandLine(CmdL, VolatileCmdL, Cache, verset, 0))
+ return false;
+
+ /* Print out a list of packages that are going to be installed extra
+ to what the user asked */
+ SortedPackageUniverse Universe(Cache);
+ if (Cache->InstCount() != verset[MOD_INSTALL].size())
+ ShowList(c1out, _("The following additional packages will be installed:"), Universe,
+ PkgIsExtraInstalled(&Cache, &verset[MOD_INSTALL]),
+ &PrettyFullName, CandidateVersion(&Cache));
+
+ /* Print out a list of suggested and recommended packages */
+ {
+ std::list<std::string> Recommends, Suggests, SingleRecommends, SingleSuggests;
+ for (auto const &Pkg: Universe)
+ {
+ /* Just look at the ones we want to install */
+ if ((*Cache)[Pkg].Install() == false)
+ continue;
+
+ // get the recommends/suggests for the candidate ver
+ pkgCache::VerIterator CV = (*Cache)[Pkg].CandidateVerIter(*Cache);
+ for (pkgCache::DepIterator D = CV.DependsList(); D.end() == false; )
+ {
+ pkgCache::DepIterator Start;
+ pkgCache::DepIterator End;
+ D.GlobOr(Start,End); // advances D
+ if (Start->Type != pkgCache::Dep::Recommends && Start->Type != pkgCache::Dep::Suggests)
+ continue;
+
+ {
+ // Skip if we already saw this
+ std::string target;
+ for (pkgCache::DepIterator I = Start; I != D; ++I)
+ {
+ if (target.empty() == false)
+ target.append(" | ");
+ target.append(I.TargetPkg().FullName(true));
+ }
+ std::list<std::string> &Type = Start->Type == pkgCache::Dep::Recommends ? SingleRecommends : SingleSuggests;
+ if (std::find(Type.begin(), Type.end(), target) != Type.end())
+ continue;
+ Type.push_back(target);
+ }
+
+ std::list<std::string> OrList;
+ bool foundInstalledInOrGroup = false;
+ for (pkgCache::DepIterator I = Start; I != D; ++I)
+ {
+ {
+ // satisfying package is installed and not marked for deletion
+ APT::VersionList installed = APT::VersionList::FromDependency(Cache, I, APT::CacheSetHelper::INSTALLED);
+ if (std::find_if(installed.begin(), installed.end(),
+ [&Cache](pkgCache::VerIterator const &Ver) { return Cache[Ver.ParentPkg()].Delete() == false; }) != installed.end())
+ {
+ foundInstalledInOrGroup = true;
+ break;
+ }
+ }
+
+ {
+ // satisfying package is upgraded to/new install
+ APT::VersionList upgrades = APT::VersionList::FromDependency(Cache, I, APT::CacheSetHelper::CANDIDATE);
+ if (std::find_if(upgrades.begin(), upgrades.end(),
+ [&Cache](pkgCache::VerIterator const &Ver) { return Cache[Ver.ParentPkg()].Upgrade(); }) != upgrades.end())
+ {
+ foundInstalledInOrGroup = true;
+ break;
+ }
+ }
+
+ if (OrList.empty())
+ OrList.push_back(I.TargetPkg().FullName(true));
+ else
+ OrList.push_back("| " + I.TargetPkg().FullName(true));
+ }
+
+ if(foundInstalledInOrGroup == false)
+ {
+ std::list<std::string> &Type = Start->Type == pkgCache::Dep::Recommends ? Recommends : Suggests;
+ std::move(OrList.begin(), OrList.end(), std::back_inserter(Type));
+ }
+ }
+ }
+ auto always_true = [](std::string const&) { return true; };
+ auto string_ident = [](std::string const&str) { return str; };
+ auto verbose_show_candidate =
+ [&Cache](std::string str)
+ {
+ if (APT::String::Startswith(str, "| "))
+ str.erase(0, 2);
+ pkgCache::PkgIterator const Pkg = Cache->FindPkg(str);
+ if (Pkg.end() == true)
+ return "";
+ return (*Cache)[Pkg].CandVersion;
+ };
+ ShowList(c1out,_("Suggested packages:"), Suggests,
+ always_true, string_ident, verbose_show_candidate);
+ ShowList(c1out,_("Recommended packages:"), Recommends,
+ always_true, string_ident, verbose_show_candidate);
+ }
+
+ // See if we need to prompt
+ // FIXME: check if really the packages in the set are going to be installed
+ if (Cache->InstCount() == verset[MOD_INSTALL].size() && Cache->DelCount() == 0)
+ return InstallPackages(Cache,false,false);
+
+ return InstallPackages(Cache,false);
+}
+ /*}}}*/
+
+// TryToInstall - Mark a package for installation /*{{{*/
+void TryToInstall::operator() (pkgCache::VerIterator const &Ver) {
+ if (unlikely(Ver.end()))
+ {
+ _error->Fatal("The given version to TryToInstall is invalid!");
+ return;
+ }
+ pkgCache::PkgIterator Pkg = Ver.ParentPkg();
+ if (unlikely(Pkg.end()))
+ {
+ _error->Fatal("The given version to TryToInstall has an invalid parent package!");
+ return;
+ }
+
+ Cache->GetDepCache()->SetCandidateVersion(Ver);
+ pkgDepCache::StateCache &State = (*Cache)[Pkg];
+
+ // Handle the no-upgrade case
+ if (_config->FindB("APT::Get::upgrade",true) == false && Pkg->CurrentVer != 0)
+ ioprintf(c1out,_("Skipping %s, it is already installed and upgrade is not set.\n"),
+ Pkg.FullName(true).c_str());
+ // Ignore request for install if package would be new
+ else if (_config->FindB("APT::Get::Only-Upgrade", false) == true && Pkg->CurrentVer == 0)
+ ioprintf(c1out,_("Skipping %s, it is not installed and only upgrades are requested.\n"),
+ Pkg.FullName(true).c_str());
+ else {
+ if (Fix != NULL) {
+ Fix->Clear(Pkg);
+ Fix->Protect(Pkg);
+ }
+ Cache->GetDepCache()->MarkInstall(Pkg,false);
+
+ if (State.Install() == false) {
+ if (_config->FindB("APT::Get::ReInstall",false) == true) {
+ if (Pkg->CurrentVer == 0 || Pkg.CurrentVer().Downloadable() == false)
+ ioprintf(c1out,_("Reinstallation of %s is not possible, it cannot be downloaded.\n"),
+ Pkg.FullName(true).c_str());
+ else
+ Cache->GetDepCache()->SetReInstall(Pkg, true);
+ } else
+ // TRANSLATORS: First string is package name, second is version
+ ioprintf(c1out,_("%s is already the newest version (%s).\n"),
+ Pkg.FullName(true).c_str(), Pkg.CurrentVer().VerStr());
+ }
+
+ // Install it with autoinstalling enabled (if we not respect the minial
+ // required deps or the policy)
+ if (FixBroken == false)
+ doAutoInstallLater.insert(Pkg);
+ }
+
+ // see if we need to fix the auto-mark flag
+ // e.g. apt-get install foo
+ // where foo is marked automatic
+ if (State.Install() == false &&
+ (State.Flags & pkgCache::Flag::Auto) &&
+ _config->FindB("APT::Get::ReInstall",false) == false &&
+ _config->FindB("APT::Get::Only-Upgrade",false) == false &&
+ _config->FindB("APT::Get::Download-Only",false) == false)
+ {
+ ioprintf(c1out,_("%s set to manually installed.\n"),
+ Pkg.FullName(true).c_str());
+ Cache->GetDepCache()->MarkAuto(Pkg,false);
+ AutoMarkChanged++;
+ }
+}
+ /*}}}*/
+bool TryToInstall::propergateReleaseCandiateSwitching(std::list<std::pair<pkgCache::VerIterator, std::string> > const &start, std::ostream &out)/*{{{*/
+{
+ for (std::list<std::pair<pkgCache::VerIterator, std::string> >::const_iterator s = start.begin();
+ s != start.end(); ++s)
+ Cache->GetDepCache()->SetCandidateVersion(s->first);
+
+ bool Success = true;
+ // the Changed list contains:
+ // first: "new version"
+ // second: "what-caused the change"
+ std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> > Changed;
+ for (std::list<std::pair<pkgCache::VerIterator, std::string> >::const_iterator s = start.begin();
+ s != start.end(); ++s)
+ {
+ Changed.push_back(std::make_pair(s->first, pkgCache::VerIterator(*Cache)));
+ // We continue here even if it failed to enhance the ShowBroken output
+ Success &= Cache->GetDepCache()->SetCandidateRelease(s->first, s->second, Changed);
+ }
+ for (std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> >::const_iterator c = Changed.begin();
+ c != Changed.end(); ++c)
+ {
+ if (c->second.end() == true)
+ ioprintf(out, _("Selected version '%s' (%s) for '%s'\n"),
+ c->first.VerStr(), c->first.RelStr().c_str(), c->first.ParentPkg().FullName(true).c_str());
+ else if (c->first.ParentPkg()->Group != c->second.ParentPkg()->Group)
+ {
+ pkgCache::VerIterator V = (*Cache)[c->first.ParentPkg()].CandidateVerIter(*Cache);
+ ioprintf(out, _("Selected version '%s' (%s) for '%s' because of '%s'\n"), V.VerStr(),
+ V.RelStr().c_str(), V.ParentPkg().FullName(true).c_str(), c->second.ParentPkg().FullName(true).c_str());
+ }
+ }
+ return Success;
+}
+ /*}}}*/
+void TryToInstall::doAutoInstall() { /*{{{*/
+ for (APT::PackageSet::const_iterator P = doAutoInstallLater.begin();
+ P != doAutoInstallLater.end(); ++P) {
+ pkgDepCache::StateCache &State = (*Cache)[P];
+ if (State.InstBroken() == false && State.InstPolicyBroken() == false)
+ continue;
+ Cache->GetDepCache()->MarkInstall(P, true);
+ }
+ doAutoInstallLater.clear();
+}
+ /*}}}*/
+// TryToRemove - Mark a package for removal /*{{{*/
+void TryToRemove::operator() (pkgCache::VerIterator const &Ver)
+{
+ pkgCache::PkgIterator Pkg = Ver.ParentPkg();
+
+ if (Fix != NULL)
+ {
+ Fix->Clear(Pkg);
+ Fix->Protect(Pkg);
+ Fix->Remove(Pkg);
+ }
+
+ if ((Pkg->CurrentVer == 0 && PurgePkgs == false) ||
+ (PurgePkgs == true && Pkg->CurrentState == pkgCache::State::NotInstalled))
+ {
+ pkgCache::GrpIterator Grp = Pkg.Group();
+ pkgCache::PkgIterator P = Grp.PackageList();
+ for (; P.end() != true; P = Grp.NextPkg(P))
+ {
+ if (P == Pkg)
+ continue;
+ if (P->CurrentVer != 0 || (PurgePkgs == true && P->CurrentState != pkgCache::State::NotInstalled))
+ {
+ // TRANSLATORS: Note, this is not an interactive question
+ ioprintf(c1out,_("Package '%s' is not installed, so not removed. Did you mean '%s'?\n"),
+ Pkg.FullName(true).c_str(), P.FullName(true).c_str());
+ break;
+ }
+ }
+ if (P.end() == true)
+ ioprintf(c1out,_("Package '%s' is not installed, so not removed\n"),Pkg.FullName(true).c_str());
+
+ // MarkInstall refuses to install packages on hold
+ Pkg->SelectedState = pkgCache::State::Hold;
+ }
+ else
+ Cache->GetDepCache()->MarkDelete(Pkg, PurgePkgs);
+}
+ /*}}}*/
diff --git a/apt-private/private-install.h b/apt-private/private-install.h
new file mode 100644
index 000000000..d2a9bed3f
--- /dev/null
+++ b/apt-private/private-install.h
@@ -0,0 +1,62 @@
+#ifndef APT_PRIVATE_INSTALL_H
+#define APT_PRIVATE_INSTALL_H
+
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/macros.h>
+
+#include <list>
+#include <string>
+#include <utility>
+
+class CacheFile;
+class CommandLine;
+class pkgProblemResolver;
+
+APT_PUBLIC bool DoInstall(CommandLine &Cmd);
+
+bool DoCacheManipulationFromCommandLine(CommandLine &CmdL, std::vector<std::string> &VolatileCmdL, CacheFile &Cache,
+ std::map<unsigned short, APT::VersionSet> &verset, int UpgradeMode);
+bool DoCacheManipulationFromCommandLine(CommandLine &CmdL, std::vector<std::string> &VolatileCmdL, CacheFile &Cache, int UpgradeMode);
+bool DoCacheManipulationFromCommandLine(CommandLine &CmdL, CacheFile &Cache, int UpgradeMode);
+
+APT_PUBLIC bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true,
+ bool Safety = true);
+
+bool CheckNothingBroken(CacheFile &Cache);
+bool DoAutomaticRemove(CacheFile &Cache);
+
+// TryToInstall - Mark a package for installation /*{{{*/
+struct TryToInstall {
+ pkgCacheFile* Cache;
+ pkgProblemResolver* Fix;
+ bool FixBroken;
+ unsigned long AutoMarkChanged;
+ APT::PackageSet doAutoInstallLater;
+
+ TryToInstall(pkgCacheFile &Cache, pkgProblemResolver *PM, bool const FixBroken) : Cache(&Cache), Fix(PM),
+ FixBroken(FixBroken), AutoMarkChanged(0) {};
+
+ void operator() (pkgCache::VerIterator const &Ver);
+ bool propergateReleaseCandiateSwitching(std::list<std::pair<pkgCache::VerIterator, std::string> > const &start, std::ostream &out);
+ void doAutoInstall();
+};
+ /*}}}*/
+// TryToRemove - Mark a package for removal /*{{{*/
+struct TryToRemove {
+ pkgCacheFile* Cache;
+ pkgProblemResolver* Fix;
+ bool PurgePkgs;
+
+ TryToRemove(pkgCacheFile &Cache, pkgProblemResolver *PM) : Cache(&Cache), Fix(PM),
+ PurgePkgs(_config->FindB("APT::Get::Purge", false)) {};
+
+ void operator() (pkgCache::VerIterator const &Ver);
+};
+ /*}}}*/
+
+
+#endif
diff --git a/apt-private/private-list.cc b/apt-private/private-list.cc
new file mode 100644
index 000000000..32c8eeaa2
--- /dev/null
+++ b/apt-private/private-list.cc
@@ -0,0 +1,156 @@
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/cachefilter.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/pkgrecords.h>
+#include <apt-pkg/progress.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/macros.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#include <apt-private/private-cacheset.h>
+#include <apt-private/private-list.h>
+#include <apt-private/private-output.h>
+
+#include <iostream>
+#include <sstream>
+#include <map>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include <apti18n.h>
+ /*}}}*/
+
+struct PackageSortAlphabetic /*{{{*/
+{
+ bool operator () (const pkgCache::PkgIterator &p_lhs,
+ const pkgCache::PkgIterator &p_rhs)
+ {
+ const std::string &l_name = p_lhs.FullName(true);
+ const std::string &r_name = p_rhs.FullName(true);
+ return (l_name < r_name);
+ }
+};
+
+class PackageNameMatcher : public Matcher
+{
+ public:
+ explicit PackageNameMatcher(const char **patterns)
+ {
+ for(int i=0; patterns[i] != NULL; ++i)
+ {
+ std::string pattern = patterns[i];
+ APT::CacheFilter::PackageMatcher *cachefilter = NULL;
+ if(_config->FindB("APT::Cmd::Use-Regexp", false) == true)
+ cachefilter = new APT::CacheFilter::PackageNameMatchesRegEx(pattern);
+ else
+ cachefilter = new APT::CacheFilter::PackageNameMatchesFnmatch(pattern);
+ filters.push_back(cachefilter);
+ }
+ }
+ virtual ~PackageNameMatcher()
+ {
+ for(J=filters.begin(); J != filters.end(); ++J)
+ delete *J;
+ }
+ virtual bool operator () (const pkgCache::PkgIterator &P) APT_OVERRIDE
+ {
+ for(J=filters.begin(); J != filters.end(); ++J)
+ {
+ APT::CacheFilter::PackageMatcher *cachefilter = *J;
+ if((*cachefilter)(P))
+ return true;
+ }
+ return false;
+ }
+
+private:
+ std::vector<APT::CacheFilter::PackageMatcher*> filters;
+ std::vector<APT::CacheFilter::PackageMatcher*>::const_iterator J;
+ #undef PackageMatcher
+};
+ /*}}}*/
+static void ListAllVersions(pkgCacheFile &CacheFile, pkgRecords &records,/*{{{*/
+ pkgCache::PkgIterator const &P, std::ostream &outs,
+ std::string const &format)
+{
+ for (pkgCache::VerIterator Ver = P.VersionList();
+ Ver.end() == false; ++Ver)
+ {
+ ListSingleVersion(CacheFile, records, Ver, outs, format);
+ outs << std::endl;
+ }
+}
+ /*}}}*/
+// list - list package based on criteria /*{{{*/
+// ---------------------------------------------------------------------
+bool DoList(CommandLine &Cmd)
+{
+ pkgCacheFile CacheFile;
+ pkgCache * const Cache = CacheFile.GetPkgCache();
+ if (unlikely(Cache == nullptr || CacheFile.GetDepCache() == nullptr))
+ return false;
+ pkgRecords records(CacheFile);
+
+ const char **patterns;
+ const char *all_pattern[] = { "*", NULL};
+
+ if (strv_length(Cmd.FileList + 1) == 0)
+ {
+ patterns = all_pattern;
+ } else {
+ patterns = Cmd.FileList + 1;
+ }
+
+ std::string format = "${color:highlight}${Package}${color:neutral}/${Origin} ${Version} ${Architecture}${ }${apt:Status}";
+ if (_config->FindB("APT::Cmd::List-Include-Summary", false) == true)
+ format += "\n ${Description}\n";
+
+ PackageNameMatcher matcher(patterns);
+ LocalitySortedVersionSet bag;
+ OpTextProgress progress(*_config);
+ progress.OverallProgress(0,
+ Cache->Head().PackageCount,
+ Cache->Head().PackageCount,
+ _("Listing"));
+ GetLocalitySortedVersionSet(CacheFile, &bag, matcher, &progress);
+ bool const ShowAllVersions = _config->FindB("APT::Cmd::All-Versions", false);
+ std::map<std::string, std::string> output_map;
+ for (LocalitySortedVersionSet::iterator V = bag.begin(); V != bag.end(); ++V)
+ {
+ std::stringstream outs;
+ if(ShowAllVersions == true)
+ ListAllVersions(CacheFile, records, V.ParentPkg(), outs, format);
+ else
+ ListSingleVersion(CacheFile, records, V, outs, format);
+ output_map.insert(std::make_pair<std::string, std::string>(
+ V.ParentPkg().Name(), outs.str()));
+ }
+
+ // FIXME: SORT! and make sorting flexible (alphabetic, by pkg status)
+ // output the sorted map
+ std::map<std::string, std::string>::const_iterator K;
+ for (K = output_map.begin(); K != output_map.end(); ++K)
+ std::cout << (*K).second << std::endl;
+
+ // be nice and tell the user if there is more to see
+ if (bag.size() == 1 && ShowAllVersions == false)
+ {
+ // start with -1 as we already displayed one version
+ int versions = -1;
+ pkgCache::VerIterator Ver = *bag.begin();
+ for ( ; Ver.end() == false; ++Ver)
+ ++versions;
+ if (versions > 0)
+ _error->Notice(P_("There is %i additional version. Please use the '-a' switch to see it", "There are %i additional versions. Please use the '-a' switch to see them.", versions), versions);
+ }
+
+ return true;
+}
+
diff --git a/apt-private/private-list.h b/apt-private/private-list.h
new file mode 100644
index 000000000..aa2677764
--- /dev/null
+++ b/apt-private/private-list.h
@@ -0,0 +1,11 @@
+#ifndef APT_PRIVATE_LIST_H
+#define APT_PRIVATE_LIST_H
+
+#include <apt-pkg/macros.h>
+
+class CommandLine;
+
+APT_PUBLIC bool DoList(CommandLine &Cmd);
+
+
+#endif
diff --git a/apt-private/private-main.cc b/apt-private/private-main.cc
new file mode 100644
index 000000000..52f35cfdc
--- /dev/null
+++ b/apt-private/private-main.cc
@@ -0,0 +1,91 @@
+#include <config.h>
+
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+
+#include <apt-private/private-main.h>
+
+#include <iostream>
+#include <locale>
+
+#include <string.h>
+#include <unistd.h>
+#include <signal.h>
+
+#include <apti18n.h>
+
+
+void InitLocale(APT_CMD const binary) /*{{{*/
+{
+ try {
+ std::locale::global(std::locale(""));
+ } catch (...) {
+ setlocale(LC_ALL, "");
+ }
+ switch(binary)
+ {
+ case APT_CMD::APT:
+ case APT_CMD::APT_CACHE:
+ case APT_CMD::APT_CDROM:
+ case APT_CMD::APT_CONFIG:
+ case APT_CMD::APT_DUMP_SOLVER:
+ case APT_CMD::APT_HELPER:
+ case APT_CMD::APT_GET:
+ case APT_CMD::APT_MARK:
+ textdomain("apt");
+ break;
+ case APT_CMD::APT_EXTRACTTEMPLATES:
+ case APT_CMD::APT_FTPARCHIVE:
+ case APT_CMD::APT_INTERNAL_PLANNER:
+ case APT_CMD::APT_INTERNAL_SOLVER:
+ case APT_CMD::APT_SORTPKG:
+ textdomain("apt-utils");
+ break;
+ }
+}
+void InitLocale() {}
+ /*}}}*/
+void InitSignals() /*{{{*/
+{
+ signal(SIGPIPE,SIG_IGN);
+}
+ /*}}}*/
+void CheckIfSimulateMode(CommandLine &CmdL) /*{{{*/
+{
+ // disable locking in simulation, but show the message only for users
+ // as root hasn't the same problems like unreadable files which can heavily
+ // distort the simulation.
+ if (_config->FindB("APT::Get::Simulate") == true &&
+ (CmdL.FileSize() == 0 ||
+ (strcmp(CmdL.FileList[0], "source") != 0 && strcmp(CmdL.FileList[0], "download") != 0 &&
+ strcmp(CmdL.FileList[0], "changelog") != 0)))
+ {
+ if (getuid() != 0 && _config->FindB("APT::Get::Show-User-Simulation-Note",true) == true)
+ // TRANSLATORS: placeholder is a binary name like apt or apt-get
+ ioprintf(std::cout, _("NOTE: This is only a simulation!\n"
+ " %s needs root privileges for real execution.\n"
+ " Keep also in mind that locking is deactivated,\n"
+ " so don't depend on the relevance to the real current situation!\n"),
+ _config->Find("Binary").c_str());
+ _config->Set("Debug::NoLocking",true);
+ }
+}
+ /*}}}*/
+void CheckIfCalledByScript(int argc, const char *argv[]) /*{{{*/
+{
+ if (unlikely(argc < 1)) return;
+
+ if(!isatty(STDOUT_FILENO) &&
+ _config->FindB("Apt::Cmd::Disable-Script-Warning", false) == false)
+ {
+ std::cerr << std::endl
+ << "WARNING: " << flNotDir(argv[0]) << " "
+ << "does not have a stable CLI interface. "
+ << "Use with caution in scripts."
+ << std::endl
+ << std::endl;
+ }
+}
+ /*}}}*/
diff --git a/apt-private/private-main.h b/apt-private/private-main.h
new file mode 100644
index 000000000..0d60797ed
--- /dev/null
+++ b/apt-private/private-main.h
@@ -0,0 +1,16 @@
+#ifndef APT_PRIVATE_MAIN_H
+#define APT_PRIVATE_MAIN_H
+
+#include <apt-private/private-cmndline.h>
+
+#include <apt-pkg/macros.h>
+
+class CommandLine;
+
+void InitLocale(APT_CMD const binary);
+APT_PUBLIC APT_DEPRECATED_MSG("Is a no-op now") void InitLocale();
+APT_PUBLIC void InitSignals();
+APT_PUBLIC void CheckIfSimulateMode(CommandLine &CmdL);
+APT_PUBLIC void CheckIfCalledByScript(int argc, const char *argv[]);
+
+#endif
diff --git a/apt-private/private-moo.cc b/apt-private/private-moo.cc
new file mode 100644
index 000000000..b8ed6efbd
--- /dev/null
+++ b/apt-private/private-moo.cc
@@ -0,0 +1,200 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Here be cows – but: Never ask, never tell
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/strutl.h>
+
+#include <apt-private/private-moo.h>
+#include <apt-private/private-output.h>
+#include <apt-private/private-utils.h>
+
+#include <stddef.h>
+#include <string.h>
+#include <time.h>
+#include <iostream>
+#include <sstream>
+#include <string>
+
+#include <apti18n.h>
+ /*}}}*/
+
+static std::string getMooLine(time_t const timenow) /*{{{*/
+{
+ struct tm special;
+ localtime_r(&timenow, &special);
+ enum { NORMAL, PACKAGEMANAGER, APPRECIATION, AGITATION, AIRBORN } line;
+ if (special.tm_mon == 11 && special.tm_mday == 25)
+ line = PACKAGEMANAGER;
+ else if (special.tm_mon == 7 && special.tm_mday == 16)
+ line = APPRECIATION;
+ else if (special.tm_mon == 10 && special.tm_mday == 7)
+ line = AGITATION;
+ else if (special.tm_mon == 1 && special.tm_mday == 18)
+ line = AIRBORN;
+ else
+ line = NORMAL;
+
+ bool const quiet = _config->FindI("quiet") >= 2;
+ std::ostringstream out;
+ if (quiet == false)
+ out << "...\"";
+
+ switch(line)
+ {
+ case PACKAGEMANAGER: out << "Happy package management day!"; break;
+ case APPRECIATION: out << "Three moos for Debian!"; break;
+ case AGITATION: out << "Whoever needs milk, bows to the animal."; break;
+ case AIRBORN: out << "It's a Bird ... It's a Plane ... It's Super Cow!"; break;
+ default: out << "Have you mooed today?"; break;
+ }
+
+ if (quiet == true)
+ out << std::endl;
+ else
+ out << "\"..." << std::endl;
+
+ return out.str();
+}
+ /*}}}*/
+static bool printMooLine(time_t const timenow) /*{{{*/
+{
+ std::cerr << getMooLine(timenow);
+ return true;
+}
+ /*}}}*/
+static bool DoMoo1(time_t const timenow) /*{{{*/
+{
+ // our trustworthy super cow since 2001
+ if (_config->FindI("quiet") >= 2)
+ return printMooLine(timenow);
+ std::string const moo = getMooLine(timenow);
+ size_t const depth = moo.length()/4;
+ c1out <<
+ OutputInDepth(depth, " ") << " (__) \n" <<
+ OutputInDepth(depth, " ") << " (oo) \n" <<
+ OutputInDepth(depth, " ") << " /------\\/ \n" <<
+ OutputInDepth(depth, " ") << " / | || \n" <<
+ OutputInDepth(depth, " ") << " * /\\---/\\ \n" <<
+ OutputInDepth(depth, " ") << " ~~ ~~ \n" <<
+ moo;
+ return true;
+}
+ /*}}}*/
+static bool DoMoo2(time_t const timenow) /*{{{*/
+{
+ // by Fernando Ribeiro in lp:56125
+ if (_config->FindI("quiet") >= 2)
+ return printMooLine(timenow);
+ std::string const moo = getMooLine(timenow);
+ size_t const depth = moo.length()/4;
+ if (_config->FindB("APT::Moo::Color", false) == false)
+ c1out <<
+ OutputInDepth(depth, " ") << " (__) \n" <<
+ OutputInDepth(depth, " ") << " _______~(..)~ \n" <<
+ OutputInDepth(depth, " ") << " ,----\\(oo) \n" <<
+ OutputInDepth(depth, " ") << " /|____|,' \n" <<
+ OutputInDepth(depth, " ") << " * /\"\\ /\\ \n" <<
+ OutputInDepth(depth, " ") << " ~ ~ ~ ~ \n" <<
+ moo;
+ else
+ {
+ c1out <<
+ OutputInDepth(depth, " ") << " \033[1;97m(\033[0;33m__\033[1;97m)\033[0m\n" <<
+ OutputInDepth(depth, " ") << " \033[31m_______\033[33m~(\033[1;34m..\033[0;33m)~\033[0m\n" <<
+ OutputInDepth(depth, " ") << " \033[33m,----\033[31m\\\033[33m(\033[1;4;35moo\033[0;33m)\033[0m\n" <<
+ OutputInDepth(depth, " ") << " \033[33m/|____|,'\033[0m\n" <<
+ OutputInDepth(depth, " ") << " \033[1;5;97m*\033[0;33m /\\ /\\\033[0m\n" <<
+ "\033[32m";
+ for (size_t i = moo.length()/2; i > 1; --i)
+ c1out << "wW";
+
+ c1out << "w\033[0m\n" << moo;
+ }
+
+ return true;
+}
+ /*}}}*/
+static bool DoMoo3(time_t const timenow) /*{{{*/
+{
+ // by Robert Millan in deb:134156
+ if (_config->FindI("quiet") >= 2)
+ return printMooLine(timenow);
+ std::string const moo = getMooLine(timenow);
+ size_t const depth = moo.length()/16;
+ c1out <<
+ OutputInDepth(depth, " ") << " \\_/ \n" <<
+ OutputInDepth(depth, " ") << " m00h (__) -(_)- \n" <<
+ OutputInDepth(depth, " ") << " \\ ~Oo~___ / \\\n" <<
+ OutputInDepth(depth, " ") << " (..) |\\ \n" <<
+ OutputInDepth(depth, "_") << "_________|_|_|__________" <<
+ OutputInDepth((moo.length() - (depth + 27)), "_") << "\n" << moo;
+ return true;
+}
+ /*}}}*/
+static bool DoMooApril() /*{{{*/
+{
+ // by Christopher Allan Webber and proposed by Paul Tagliamonte
+ // in a "Community outreach": https://lists.debian.org/debian-devel/2013/04/msg00045.html
+ if (_config->FindI("quiet") >= 2)
+ {
+ std::cerr << "Have you smashed some milk today?" << std::endl;
+ return true;
+ }
+ c1out <<
+ " _ _\n"
+ " (_\\___( \\,\n"
+ " )___ _ Have you smashed some milk today?\n"
+ " /( (_)-(_) /\n"
+ " ,---------' \\_\n"
+ " //( ',__,' \\ (' ')\n"
+ " // ) '----'\n"
+ " '' ; \\ .--. ,/\n"
+ " | )',_,'----( ;\n"
+ " ||| ''' '||\n";
+ return true;
+}
+ /*}}}*/
+bool DoMoo(CommandLine &CmdL) /*{{{*/
+{
+ time_t const timenow = GetSecondsSinceEpoch();
+
+ struct tm april;
+ localtime_r(&timenow, &april);
+ if (april.tm_mday == 1 && april.tm_mon == 3)
+ return DoMooApril();
+
+ signed short SuperCow = 1;
+ if (CmdL.FileSize() != 0)
+ for (const char **Moo = CmdL.FileList + 1; *Moo != 0; Moo++)
+ if (strcasecmp(*Moo, "moo") == 0)
+ SuperCow++;
+
+ // time is random enough for our purpose
+ if (SuperCow > 3)
+ {
+ if (april.tm_sec == 1)
+ SuperCow = 1 + (timenow % 4);
+ else
+ SuperCow = 1 + (timenow % 3);
+ }
+
+ switch(SuperCow) {
+ case 1: return DoMoo1(timenow);
+ case 2: return DoMoo2(timenow);
+ case 3: return DoMoo3(timenow);
+ case 4: return DoMooApril();
+ default: return DoMoo1(timenow);
+ }
+
+ return true;
+}
+ /*}}}*/
diff --git a/apt-private/private-moo.h b/apt-private/private-moo.h
new file mode 100644
index 000000000..c230ce2e1
--- /dev/null
+++ b/apt-private/private-moo.h
@@ -0,0 +1,10 @@
+#ifndef APT_PRIVATE_MOO_H
+#define APT_PRIVATE_MOO_H
+
+#include <apt-pkg/macros.h>
+
+class CommandLine;
+
+APT_PUBLIC bool DoMoo(CommandLine &CmdL);
+
+#endif
diff --git a/apt-private/private-output.cc b/apt-private/private-output.cc
new file mode 100644
index 000000000..9c25cda6d
--- /dev/null
+++ b/apt-private/private-output.cc
@@ -0,0 +1,782 @@
+// Include files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/pkgrecords.h>
+#include <apt-pkg/policy.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#include <apt-private/private-output.h>
+#include <apt-private/private-cachefile.h>
+
+#include <regex.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <iomanip>
+#include <iostream>
+#include <langinfo.h>
+#include <unistd.h>
+#include <signal.h>
+#include <sys/ioctl.h>
+
+#include <sstream>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+std::ostream c0out(0);
+std::ostream c1out(0);
+std::ostream c2out(0);
+std::ofstream devnull("/dev/null");
+
+
+unsigned int ScreenWidth = 80 - 1; /* - 1 for the cursor */
+
+// SigWinch - Window size change signal handler /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static void SigWinch(int)
+{
+ // Riped from GNU ls
+#ifdef TIOCGWINSZ
+ struct winsize ws;
+
+ if (ioctl(1, TIOCGWINSZ, &ws) != -1 && ws.ws_col >= 5)
+ ScreenWidth = ws.ws_col - 1;
+#endif
+}
+ /*}}}*/
+bool InitOutput(std::basic_streambuf<char> * const out) /*{{{*/
+{
+ if (!isatty(STDOUT_FILENO) && _config->FindI("quiet", -1) == -1)
+ _config->Set("quiet","1");
+
+ c0out.rdbuf(out);
+ c1out.rdbuf(out);
+ c2out.rdbuf(out);
+ if (_config->FindI("quiet",0) > 0)
+ c0out.rdbuf(devnull.rdbuf());
+ if (_config->FindI("quiet",0) > 1)
+ c1out.rdbuf(devnull.rdbuf());
+
+ // deal with window size changes
+ signal(SIGWINCH,SigWinch);
+ SigWinch(0);
+
+ if(!isatty(1))
+ {
+ _config->Set("APT::Color", "false");
+ _config->Set("APT::Color::Highlight", "");
+ _config->Set("APT::Color::Neutral", "");
+ } else {
+ // Colors
+ _config->CndSet("APT::Color::Highlight", "\x1B[32m");
+ _config->CndSet("APT::Color::Neutral", "\x1B[0m");
+
+ _config->CndSet("APT::Color::Red", "\x1B[31m");
+ _config->CndSet("APT::Color::Green", "\x1B[32m");
+ _config->CndSet("APT::Color::Yellow", "\x1B[33m");
+ _config->CndSet("APT::Color::Blue", "\x1B[34m");
+ _config->CndSet("APT::Color::Magenta", "\x1B[35m");
+ _config->CndSet("APT::Color::Cyan", "\x1B[36m");
+ _config->CndSet("APT::Color::White", "\x1B[37m");
+ }
+
+ return true;
+}
+ /*}}}*/
+static std::string GetArchiveSuite(pkgCacheFile &/*CacheFile*/, pkgCache::VerIterator ver) /*{{{*/
+{
+ std::string suite = "";
+ if (ver && ver.FileList())
+ {
+ pkgCache::VerFileIterator VF = ver.FileList();
+ for (; VF.end() == false ; ++VF)
+ {
+ if(VF.File() == NULL || VF.File().Archive() == NULL)
+ suite = suite + "," + _("unknown");
+ else
+ suite = suite + "," + VF.File().Archive();
+ //suite = VF.File().Archive();
+ }
+ suite = suite.erase(0, 1);
+ }
+ return suite;
+}
+ /*}}}*/
+static std::string GetFlagsStr(pkgCacheFile &CacheFile, pkgCache::PkgIterator P)/*{{{*/
+{
+ pkgDepCache *DepCache = CacheFile.GetDepCache();
+ pkgDepCache::StateCache &state = (*DepCache)[P];
+
+ std::string flags_str;
+ if (state.NowBroken())
+ flags_str = "B";
+ if (P.CurrentVer() && state.Upgradable() && state.CandidateVer != NULL)
+ flags_str = "g";
+ else if (P.CurrentVer() != NULL)
+ flags_str = "i";
+ else
+ flags_str = "-";
+ return flags_str;
+}
+ /*}}}*/
+static std::string GetCandidateVersion(pkgCacheFile &CacheFile, pkgCache::PkgIterator P)/*{{{*/
+{
+ pkgPolicy *policy = CacheFile.GetPolicy();
+ pkgCache::VerIterator cand = policy->GetCandidateVer(P);
+
+ return cand ? cand.VerStr() : "(none)";
+}
+ /*}}}*/
+static std::string GetInstalledVersion(pkgCacheFile &/*CacheFile*/, pkgCache::PkgIterator P)/*{{{*/
+{
+ pkgCache::VerIterator inst = P.CurrentVer();
+
+ return inst ? inst.VerStr() : "(none)";
+}
+ /*}}}*/
+static std::string GetVersion(pkgCacheFile &/*CacheFile*/, pkgCache::VerIterator V)/*{{{*/
+{
+ pkgCache::PkgIterator P = V.ParentPkg();
+ if (V == P.CurrentVer())
+ {
+ std::string inst_str = DeNull(V.VerStr());
+#if 0 // FIXME: do we want this or something like this?
+ pkgDepCache *DepCache = CacheFile.GetDepCache();
+ pkgDepCache::StateCache &state = (*DepCache)[P];
+ if (state.Upgradable())
+ return "**"+inst_str;
+#endif
+ return inst_str;
+ }
+
+ if(V)
+ return DeNull(V.VerStr());
+ return "(none)";
+}
+ /*}}}*/
+static std::string GetArchitecture(pkgCacheFile &CacheFile, pkgCache::PkgIterator P)/*{{{*/
+{
+ if (P->CurrentVer == 0)
+ {
+ pkgDepCache * const DepCache = CacheFile.GetDepCache();
+ pkgDepCache::StateCache const &state = (*DepCache)[P];
+ if (state.CandidateVer != NULL)
+ {
+ pkgCache::VerIterator const CandV(CacheFile, state.CandidateVer);
+ return CandV.Arch();
+ }
+ else
+ {
+ pkgCache::VerIterator const V = P.VersionList();
+ if (V.end() == false)
+ return V.Arch();
+ else
+ return P.Arch();
+ }
+ }
+ else
+ return P.CurrentVer().Arch();
+}
+ /*}}}*/
+static std::string GetShortDescription(pkgCacheFile &CacheFile, pkgRecords &records, pkgCache::PkgIterator P)/*{{{*/
+{
+ pkgPolicy *policy = CacheFile.GetPolicy();
+
+ pkgCache::VerIterator ver;
+ if (P.CurrentVer())
+ ver = P.CurrentVer();
+ else
+ ver = policy->GetCandidateVer(P);
+
+ std::string ShortDescription = "(none)";
+ if(ver)
+ {
+ pkgCache::DescIterator const Desc = ver.TranslatedDescription();
+ if (Desc.end() == false)
+ {
+ pkgRecords::Parser & parser = records.Lookup(Desc.FileList());
+ ShortDescription = parser.ShortDesc();
+ }
+ }
+ return ShortDescription;
+}
+ /*}}}*/
+static std::string GetLongDescription(pkgCacheFile &CacheFile, pkgRecords &records, pkgCache::PkgIterator P)/*{{{*/
+{
+ pkgPolicy *policy = CacheFile.GetPolicy();
+
+ pkgCache::VerIterator ver;
+ if (P->CurrentVer != 0)
+ ver = P.CurrentVer();
+ else
+ ver = policy->GetCandidateVer(P);
+
+ std::string const EmptyDescription = "(none)";
+ if(ver.end() == true)
+ return EmptyDescription;
+
+ pkgCache::DescIterator const Desc = ver.TranslatedDescription();
+ if (Desc.end() == false)
+ {
+ pkgRecords::Parser & parser = records.Lookup(Desc.FileList());
+ std::string const longdesc = parser.LongDesc();
+ if (longdesc.empty() == false)
+ return SubstVar(longdesc, "\n ", "\n ");
+ }
+ return EmptyDescription;
+}
+ /*}}}*/
+void ListSingleVersion(pkgCacheFile &CacheFile, pkgRecords &records, /*{{{*/
+ pkgCache::VerIterator const &V, std::ostream &out,
+ std::string const &format)
+{
+ pkgCache::PkgIterator const P = V.ParentPkg();
+ pkgDepCache * const DepCache = CacheFile.GetDepCache();
+ pkgDepCache::StateCache const &state = (*DepCache)[P];
+
+ std::string output;
+ if (_config->FindB("APT::Cmd::use-format", false))
+ output = _config->Find("APT::Cmd::format", "${db::Status-Abbrev} ${Package} ${Version} ${Origin} ${Description}");
+ else
+ output = format;
+
+ // FIXME: some of these names are really icky – and all is nowhere documented
+ output = SubstVar(output, "${db::Status-Abbrev}", GetFlagsStr(CacheFile, P));
+ output = SubstVar(output, "${Package}", P.Name());
+ std::string const ArchStr = GetArchitecture(CacheFile, P);
+ output = SubstVar(output, "${Architecture}", ArchStr);
+ std::string const InstalledVerStr = GetInstalledVersion(CacheFile, P);
+ output = SubstVar(output, "${installed:Version}", InstalledVerStr);
+ std::string const CandidateVerStr = GetCandidateVersion(CacheFile, P);
+ output = SubstVar(output, "${candidate:Version}", CandidateVerStr);
+ std::string const VersionStr = GetVersion(CacheFile, V);
+ output = SubstVar(output, "${Version}", VersionStr);
+ output = SubstVar(output, "${Origin}", GetArchiveSuite(CacheFile, V));
+
+ std::string StatusStr = "";
+ if (P->CurrentVer != 0)
+ {
+ if (P.CurrentVer() == V)
+ {
+ if (state.Upgradable() && state.CandidateVer != NULL)
+ strprintf(StatusStr, _("[installed,upgradable to: %s]"),
+ CandidateVerStr.c_str());
+ else if (V.Downloadable() == false)
+ StatusStr = _("[installed,local]");
+ else if(V.Automatic() == true && state.Garbage == true)
+ StatusStr = _("[installed,auto-removable]");
+ else if ((state.Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto)
+ StatusStr = _("[installed,automatic]");
+ else
+ StatusStr = _("[installed]");
+ }
+ else if (state.CandidateVer == V && state.Upgradable())
+ strprintf(StatusStr, _("[upgradable from: %s]"),
+ InstalledVerStr.c_str());
+ }
+ else if (V.ParentPkg()->CurrentState == pkgCache::State::ConfigFiles)
+ StatusStr = _("[residual-config]");
+ output = SubstVar(output, "${apt:Status}", StatusStr);
+ output = SubstVar(output, "${color:highlight}", _config->Find("APT::Color::Highlight", ""));
+ output = SubstVar(output, "${color:neutral}", _config->Find("APT::Color::Neutral", ""));
+ output = SubstVar(output, "${Description}", GetShortDescription(CacheFile, records, P));
+ if (output.find("${LongDescription}") != string::npos)
+ output = SubstVar(output, "${LongDescription}", GetLongDescription(CacheFile, records, P));
+ output = SubstVar(output, "${ }${ }", "${ }");
+ output = SubstVar(output, "${ }\n", "\n");
+ output = SubstVar(output, "${ }", " ");
+ if (APT::String::Endswith(output, " ") == true)
+ output.erase(output.length() - 1);
+
+ out << output;
+}
+ /*}}}*/
+// ShowBroken - Debugging aide /*{{{*/
+// ---------------------------------------------------------------------
+/* This prints out the names of all the packages that are broken along
+ with the name of each broken dependency and a quite version
+ description.
+
+ The output looks like:
+ The following packages have unmet dependencies:
+ exim: Depends: libc6 (>= 2.1.94) but 2.1.3-10 is to be installed
+ Depends: libldap2 (>= 2.0.2-2) but it is not going to be installed
+ Depends: libsasl7 but it is not going to be installed
+ */
+static void ShowBrokenPackage(ostream &out, pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg, bool const Now)
+{
+ if (Now == true)
+ {
+ if ((*Cache)[Pkg].NowBroken() == false)
+ return;
+ }
+ else
+ {
+ if ((*Cache)[Pkg].InstBroken() == false)
+ return;
+ }
+
+ // Print out each package and the failed dependencies
+ out << " " << Pkg.FullName(true) << " :";
+ unsigned const Indent = Pkg.FullName(true).size() + 3;
+ bool First = true;
+ pkgCache::VerIterator Ver;
+
+ if (Now == true)
+ Ver = Pkg.CurrentVer();
+ else
+ Ver = (*Cache)[Pkg].InstVerIter(*Cache);
+
+ if (Ver.end() == true)
+ {
+ out << endl;
+ return;
+ }
+
+ for (pkgCache::DepIterator D = Ver.DependsList(); D.end() == false;)
+ {
+ // Compute a single dependency element (glob or)
+ pkgCache::DepIterator Start;
+ pkgCache::DepIterator End;
+ D.GlobOr(Start,End); // advances D
+
+ if ((*Cache)->IsImportantDep(End) == false)
+ continue;
+
+ if (Now == true)
+ {
+ if (((*Cache)[End] & pkgDepCache::DepGNow) == pkgDepCache::DepGNow)
+ continue;
+ }
+ else
+ {
+ if (((*Cache)[End] & pkgDepCache::DepGInstall) == pkgDepCache::DepGInstall)
+ continue;
+ }
+
+ bool FirstOr = true;
+ while (1)
+ {
+ if (First == false)
+ for (unsigned J = 0; J != Indent; J++)
+ out << ' ';
+ First = false;
+
+ if (FirstOr == false)
+ {
+ for (unsigned J = 0; J != strlen(End.DepType()) + 3; J++)
+ out << ' ';
+ }
+ else
+ out << ' ' << End.DepType() << ": ";
+ FirstOr = false;
+
+ out << Start.TargetPkg().FullName(true);
+
+ // Show a quick summary of the version requirements
+ if (Start.TargetVer() != 0)
+ out << " (" << Start.CompType() << " " << Start.TargetVer() << ")";
+
+ /* Show a summary of the target package if possible. In the case
+ of virtual packages we show nothing */
+ pkgCache::PkgIterator Targ = Start.TargetPkg();
+ if (Targ->ProvidesList == 0)
+ {
+ out << ' ';
+ pkgCache::VerIterator Ver = (*Cache)[Targ].InstVerIter(*Cache);
+ if (Now == true)
+ Ver = Targ.CurrentVer();
+
+ if (Ver.end() == false)
+ {
+ if (Now == true)
+ ioprintf(out,_("but %s is installed"),Ver.VerStr());
+ else
+ ioprintf(out,_("but %s is to be installed"),Ver.VerStr());
+ }
+ else
+ {
+ if ((*Cache)[Targ].CandidateVerIter(*Cache).end() == true)
+ {
+ if (Targ->ProvidesList == 0)
+ out << _("but it is not installable");
+ else
+ out << _("but it is a virtual package");
+ }
+ else
+ out << (Now?_("but it is not installed"):_("but it is not going to be installed"));
+ }
+ }
+
+ if (Start != End)
+ out << _(" or");
+ out << endl;
+
+ if (Start == End)
+ break;
+ ++Start;
+ }
+ }
+}
+void ShowBroken(ostream &out, CacheFile &Cache, bool const Now)
+{
+ if (Cache->BrokenCount() == 0)
+ return;
+
+ out << _("The following packages have unmet dependencies:") << endl;
+ SortedPackageUniverse Universe(Cache);
+ for (auto const &Pkg: Universe)
+ ShowBrokenPackage(out, &Cache, Pkg, Now);
+}
+void ShowBroken(ostream &out, pkgCacheFile &Cache, bool const Now)
+{
+ if (Cache->BrokenCount() == 0)
+ return;
+
+ out << _("The following packages have unmet dependencies:") << endl;
+ APT::PackageUniverse Universe(Cache);
+ for (auto const &Pkg: Universe)
+ ShowBrokenPackage(out, &Cache, Pkg, Now);
+}
+ /*}}}*/
+// ShowNew - Show packages to newly install /*{{{*/
+void ShowNew(ostream &out,CacheFile &Cache)
+{
+ SortedPackageUniverse Universe(Cache);
+ ShowList(out,_("The following NEW packages will be installed:"), Universe,
+ [&Cache](pkgCache::PkgIterator const &Pkg) { return Cache[Pkg].NewInstall(); },
+ &PrettyFullName,
+ CandidateVersion(&Cache));
+}
+ /*}}}*/
+// ShowDel - Show packages to delete /*{{{*/
+void ShowDel(ostream &out,CacheFile &Cache)
+{
+ SortedPackageUniverse Universe(Cache);
+ ShowList(out,_("The following packages will be REMOVED:"), Universe,
+ [&Cache](pkgCache::PkgIterator const &Pkg) { return Cache[Pkg].Delete(); },
+ [&Cache](pkgCache::PkgIterator const &Pkg)
+ {
+ std::string str = PrettyFullName(Pkg);
+ if (((*Cache)[Pkg].iFlags & pkgDepCache::Purge) == pkgDepCache::Purge)
+ str.append("*");
+ return str;
+ },
+ CandidateVersion(&Cache));
+}
+ /*}}}*/
+// ShowKept - Show kept packages /*{{{*/
+void ShowKept(ostream &out,CacheFile &Cache)
+{
+ SortedPackageUniverse Universe(Cache);
+ ShowList(out,_("The following packages have been kept back:"), Universe,
+ [&Cache](pkgCache::PkgIterator const &Pkg)
+ {
+ return Cache[Pkg].Upgrade() == false &&
+ Cache[Pkg].Upgradable() == true &&
+ Pkg->CurrentVer != 0 &&
+ Cache[Pkg].Delete() == false;
+ },
+ &PrettyFullName,
+ CurrentToCandidateVersion(&Cache));
+}
+ /*}}}*/
+// ShowUpgraded - Show upgraded packages /*{{{*/
+void ShowUpgraded(ostream &out,CacheFile &Cache)
+{
+ SortedPackageUniverse Universe(Cache);
+ ShowList(out,_("The following packages will be upgraded:"), Universe,
+ [&Cache](pkgCache::PkgIterator const &Pkg)
+ {
+ return Cache[Pkg].Upgrade() == true && Cache[Pkg].NewInstall() == false;
+ },
+ &PrettyFullName,
+ CurrentToCandidateVersion(&Cache));
+}
+ /*}}}*/
+// ShowDowngraded - Show downgraded packages /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool ShowDowngraded(ostream &out,CacheFile &Cache)
+{
+ SortedPackageUniverse Universe(Cache);
+ return ShowList(out,_("The following packages will be DOWNGRADED:"), Universe,
+ [&Cache](pkgCache::PkgIterator const &Pkg)
+ {
+ return Cache[Pkg].Downgrade() == true && Cache[Pkg].NewInstall() == false;
+ },
+ &PrettyFullName,
+ CurrentToCandidateVersion(&Cache));
+}
+ /*}}}*/
+// ShowHold - Show held but changed packages /*{{{*/
+bool ShowHold(ostream &out,CacheFile &Cache)
+{
+ SortedPackageUniverse Universe(Cache);
+ return ShowList(out,_("The following held packages will be changed:"), Universe,
+ [&Cache](pkgCache::PkgIterator const &Pkg)
+ {
+ return Pkg->SelectedState == pkgCache::State::Hold &&
+ Cache[Pkg].InstallVer != (pkgCache::Version *)Pkg.CurrentVer();
+ },
+ &PrettyFullName,
+ CurrentToCandidateVersion(&Cache));
+}
+ /*}}}*/
+// ShowEssential - Show an essential package warning /*{{{*/
+// ---------------------------------------------------------------------
+/* This prints out a warning message that is not to be ignored. It shows
+ all essential packages and their dependents that are to be removed.
+ It is insanely risky to remove the dependents of an essential package! */
+struct APT_HIDDEN PrettyFullNameWithDue {
+ std::map<unsigned long long, pkgCache::PkgIterator> due;
+ PrettyFullNameWithDue() {}
+ std::string operator() (pkgCache::PkgIterator const &Pkg)
+ {
+ std::string const A = PrettyFullName(Pkg);
+ std::map<unsigned long long, pkgCache::PkgIterator>::const_iterator d = due.find(Pkg->ID);
+ if (d == due.end())
+ return A;
+
+ std::string const B = PrettyFullName(d->second);
+ std::ostringstream outstr;
+ ioprintf(outstr, _("%s (due to %s)"), A.c_str(), B.c_str());
+ return outstr.str();
+ }
+};
+bool ShowEssential(ostream &out,CacheFile &Cache)
+{
+ std::vector<bool> Added(Cache->Head().PackageCount, false);
+ APT::PackageDeque pkglist;
+ PrettyFullNameWithDue withdue;
+
+ SortedPackageUniverse Universe(Cache);
+ for (pkgCache::PkgIterator const &I: Universe)
+ {
+ if ((I->Flags & pkgCache::Flag::Essential) != pkgCache::Flag::Essential &&
+ (I->Flags & pkgCache::Flag::Important) != pkgCache::Flag::Important)
+ continue;
+
+ // The essential package is being removed
+ if (Cache[I].Delete() == false)
+ continue;
+
+ if (Added[I->ID] == false)
+ {
+ Added[I->ID] = true;
+ pkglist.insert(I);
+ }
+
+ if (I->CurrentVer == 0)
+ continue;
+
+ // Print out any essential package depenendents that are to be removed
+ for (pkgCache::DepIterator D = I.CurrentVer().DependsList(); D.end() == false; ++D)
+ {
+ // Skip everything but depends
+ if (D->Type != pkgCache::Dep::PreDepends &&
+ D->Type != pkgCache::Dep::Depends)
+ continue;
+
+ pkgCache::PkgIterator P = D.SmartTargetPkg();
+ if (Cache[P].Delete() == true)
+ {
+ if (Added[P->ID] == true)
+ continue;
+ Added[P->ID] = true;
+
+ pkglist.insert(P);
+ withdue.due[P->ID] = I;
+ }
+ }
+ }
+ return ShowList(out,_("WARNING: The following essential packages will be removed.\n"
+ "This should NOT be done unless you know exactly what you are doing!"),
+ pkglist, &AlwaysTrue, withdue, &EmptyString);
+}
+ /*}}}*/
+// Stats - Show some statistics /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void Stats(ostream &out,pkgDepCache &Dep)
+{
+ unsigned long Upgrade = 0;
+ unsigned long Downgrade = 0;
+ unsigned long Install = 0;
+ unsigned long ReInstall = 0;
+ for (pkgCache::PkgIterator I = Dep.PkgBegin(); I.end() == false; ++I)
+ {
+ if (Dep[I].NewInstall() == true)
+ Install++;
+ else
+ {
+ if (Dep[I].Upgrade() == true)
+ Upgrade++;
+ else
+ if (Dep[I].Downgrade() == true)
+ Downgrade++;
+ }
+
+ if (Dep[I].Delete() == false && (Dep[I].iFlags & pkgDepCache::ReInstall) == pkgDepCache::ReInstall)
+ ReInstall++;
+ }
+
+ ioprintf(out,_("%lu upgraded, %lu newly installed, "),
+ Upgrade,Install);
+
+ if (ReInstall != 0)
+ ioprintf(out,_("%lu reinstalled, "),ReInstall);
+ if (Downgrade != 0)
+ ioprintf(out,_("%lu downgraded, "),Downgrade);
+
+ ioprintf(out,_("%lu to remove and %lu not upgraded.\n"),
+ Dep.DelCount(),Dep.KeepCount());
+
+ if (Dep.BadCount() != 0)
+ ioprintf(out,_("%lu not fully installed or removed.\n"),
+ Dep.BadCount());
+}
+ /*}}}*/
+// YnPrompt - Yes No Prompt. /*{{{*/
+// ---------------------------------------------------------------------
+/* Returns true on a Yes.*/
+bool YnPrompt(char const * const Question, bool Default)
+{
+ auto const AssumeYes = _config->FindB("APT::Get::Assume-Yes",false);
+ auto const AssumeNo = _config->FindB("APT::Get::Assume-No",false);
+ // if we ask interactively, show warnings/notices before the question
+ if (AssumeYes == false && AssumeNo == false)
+ {
+ if (_config->FindI("quiet",0) > 0)
+ _error->DumpErrors(c2out);
+ else
+ _error->DumpErrors(c2out, GlobalError::DEBUG);
+ }
+
+ c2out << Question << std::flush;
+
+ /* nl_langinfo does not support LANGUAGE setting, so we unset it here
+ to have the help-message (hopefully) match the expected characters */
+ char * language = getenv("LANGUAGE");
+ if (language != NULL)
+ language = strdup(language);
+ if (language != NULL)
+ unsetenv("LANGUAGE");
+
+ if (Default == true)
+ // TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+ // e.g. "Do you want to continue? [Y/n] "
+ // The user has to answer with an input matching the
+ // YESEXPR/NOEXPR defined in your l10n.
+ c2out << " " << _("[Y/n]") << " " << std::flush;
+ else
+ // TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+ // e.g. "Should this file be removed? [y/N] "
+ // The user has to answer with an input matching the
+ // YESEXPR/NOEXPR defined in your l10n.
+ c2out << " " << _("[y/N]") << " " << std::flush;
+
+ if (language != NULL)
+ {
+ setenv("LANGUAGE", language, 0);
+ free(language);
+ }
+
+ if (AssumeYes)
+ {
+ // TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+ c1out << _("Y") << std::endl;
+ return true;
+ }
+ else if (AssumeNo)
+ {
+ // TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+ c1out << _("N") << std::endl;
+ return false;
+ }
+
+ char response[1024] = "";
+ std::cin.getline(response, sizeof(response));
+
+ if (!std::cin)
+ return false;
+
+ if (strlen(response) == 0)
+ return Default;
+
+ regex_t Pattern;
+ int Res;
+
+ Res = regcomp(&Pattern, nl_langinfo(YESEXPR),
+ REG_EXTENDED|REG_ICASE|REG_NOSUB);
+
+ if (Res != 0) {
+ char Error[300];
+ regerror(Res,&Pattern,Error,sizeof(Error));
+ return _error->Error(_("Regex compilation error - %s"),Error);
+ }
+
+ Res = regexec(&Pattern, response, 0, NULL, 0);
+ if (Res == 0)
+ return true;
+ return false;
+}
+ /*}}}*/
+// AnalPrompt - Annoying Yes No Prompt. /*{{{*/
+// ---------------------------------------------------------------------
+/* Returns true on a Yes.*/
+bool AnalPrompt(std::string const &Question, const char *Text)
+{
+ if (_config->FindI("quiet",0) > 0)
+ _error->DumpErrors(c2out);
+ else
+ _error->DumpErrors(c2out, GlobalError::DEBUG);
+ c2out << Question << std::flush;
+
+ char Buf[1024];
+ std::cin.getline(Buf,sizeof(Buf));
+ if (strcmp(Buf,Text) == 0)
+ return true;
+ return false;
+}
+ /*}}}*/
+
+std::string PrettyFullName(pkgCache::PkgIterator const &Pkg)
+{
+ return Pkg.FullName(true);
+}
+std::string CandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg)
+{
+ return (*Cache)[Pkg].CandVersion;
+}
+std::function<std::string(pkgCache::PkgIterator const &)> CandidateVersion(pkgCacheFile * const Cache)
+{
+ return std::bind(static_cast<std::string(*)(pkgCacheFile * const, pkgCache::PkgIterator const&)>(&CandidateVersion), Cache, std::placeholders::_1);
+}
+std::string CurrentToCandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg)
+{
+ return std::string((*Cache)[Pkg].CurVersion) + " => " + (*Cache)[Pkg].CandVersion;
+}
+std::function<std::string(pkgCache::PkgIterator const &)> CurrentToCandidateVersion(pkgCacheFile * const Cache)
+{
+ return std::bind(static_cast<std::string(*)(pkgCacheFile * const, pkgCache::PkgIterator const&)>(&CurrentToCandidateVersion), Cache, std::placeholders::_1);
+}
+bool AlwaysTrue(pkgCache::PkgIterator const &)
+{
+ return true;
+}
+std::string EmptyString(pkgCache::PkgIterator const &)
+{
+ return std::string();
+}
+
diff --git a/apt-private/private-output.h b/apt-private/private-output.h
new file mode 100644
index 000000000..bb9428d7f
--- /dev/null
+++ b/apt-private/private-output.h
@@ -0,0 +1,115 @@
+#ifndef APT_PRIVATE_OUTPUT_H
+#define APT_PRIVATE_OUTPUT_H
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/macros.h>
+
+#include <functional>
+#include <fstream>
+#include <string>
+#include <iostream>
+
+// forward declaration
+class pkgCacheFile;
+class CacheFile;
+class pkgDepCache;
+class pkgRecords;
+
+
+APT_PUBLIC extern std::ostream c0out;
+APT_PUBLIC extern std::ostream c1out;
+APT_PUBLIC extern std::ostream c2out;
+APT_PUBLIC extern std::ofstream devnull;
+APT_PUBLIC extern unsigned int ScreenWidth;
+
+APT_PUBLIC bool InitOutput(std::basic_streambuf<char> * const out = std::cout.rdbuf());
+
+void ListSingleVersion(pkgCacheFile &CacheFile, pkgRecords &records,
+ pkgCache::VerIterator const &V, std::ostream &out,
+ std::string const &format);
+
+
+// helper to describe global state
+APT_PUBLIC void ShowBroken(std::ostream &out, CacheFile &Cache, bool const Now);
+APT_PUBLIC void ShowBroken(std::ostream &out, pkgCacheFile &Cache, bool const Now);
+
+template<class Container, class PredicateC, class DisplayP, class DisplayV> bool ShowList(std::ostream &out, std::string const &Title,
+ Container const &cont,
+ PredicateC Predicate,
+ DisplayP PkgDisplay,
+ DisplayV VerboseDisplay)
+{
+ size_t const ScreenWidth = (::ScreenWidth > 3) ? ::ScreenWidth - 3 : 0;
+ int ScreenUsed = 0;
+ bool const ShowVersions = _config->FindB("APT::Get::Show-Versions", false);
+ bool printedTitle = false;
+
+ for (auto const &Pkg: cont)
+ {
+ if (Predicate(Pkg) == false)
+ continue;
+
+ if (printedTitle == false)
+ {
+ out << Title;
+ printedTitle = true;
+ }
+
+ if (ShowVersions == true)
+ {
+ out << std::endl << " " << PkgDisplay(Pkg);
+ std::string const verbose = VerboseDisplay(Pkg);
+ if (verbose.empty() == false)
+ out << " (" << verbose << ")";
+ }
+ else
+ {
+ std::string const PkgName = PkgDisplay(Pkg);
+ if (ScreenUsed == 0 || (ScreenUsed + PkgName.length()) >= ScreenWidth)
+ {
+ out << std::endl << " ";
+ ScreenUsed = 0;
+ }
+ else if (ScreenUsed != 0)
+ {
+ out << " ";
+ ++ScreenUsed;
+ }
+ out << PkgName;
+ ScreenUsed += PkgName.length();
+ }
+ }
+
+ if (printedTitle == true)
+ {
+ out << std::endl;
+ return false;
+ }
+ return true;
+}
+
+void ShowNew(std::ostream &out,CacheFile &Cache);
+void ShowDel(std::ostream &out,CacheFile &Cache);
+void ShowKept(std::ostream &out,CacheFile &Cache);
+void ShowUpgraded(std::ostream &out,CacheFile &Cache);
+bool ShowDowngraded(std::ostream &out,CacheFile &Cache);
+bool ShowHold(std::ostream &out,CacheFile &Cache);
+
+bool ShowEssential(std::ostream &out,CacheFile &Cache);
+
+void Stats(std::ostream &out, pkgDepCache &Dep);
+
+// prompting
+bool YnPrompt(char const * const Question, bool Default=true);
+bool AnalPrompt(std::string const &Question, const char *Text);
+
+std::string PrettyFullName(pkgCache::PkgIterator const &Pkg);
+std::string CandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg);
+std::function<std::string(pkgCache::PkgIterator const &)> CandidateVersion(pkgCacheFile * const Cache);
+std::string CurrentToCandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg);
+std::function<std::string(pkgCache::PkgIterator const &)> CurrentToCandidateVersion(pkgCacheFile * const Cache);
+std::string EmptyString(pkgCache::PkgIterator const &);
+bool AlwaysTrue(pkgCache::PkgIterator const &);
+
+#endif
diff --git a/apt-private/private-search.cc b/apt-private/private-search.cc
new file mode 100644
index 000000000..bae04173d
--- /dev/null
+++ b/apt-private/private-search.cc
@@ -0,0 +1,333 @@
+// Includes /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/pkgrecords.h>
+#include <apt-pkg/policy.h>
+#include <apt-pkg/progress.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/macros.h>
+#include <apt-pkg/pkgcache.h>
+
+#include <apt-private/private-cacheset.h>
+#include <apt-private/private-output.h>
+#include <apt-private/private-search.h>
+#include <apt-private/private-show.h>
+
+#include <string.h>
+#include <iostream>
+#include <sstream>
+#include <map>
+#include <string>
+#include <utility>
+
+#include <apti18n.h>
+ /*}}}*/
+
+static bool FullTextSearch(CommandLine &CmdL) /*{{{*/
+{
+ pkgCacheFile CacheFile;
+ pkgCache *Cache = CacheFile.GetPkgCache();
+ pkgDepCache::Policy *Plcy = CacheFile.GetPolicy();
+ if (unlikely(Cache == NULL || Plcy == NULL))
+ return false;
+
+ // Make sure there is at least one argument
+ unsigned int const NumPatterns = CmdL.FileSize() -1;
+ if (NumPatterns < 1)
+ return _error->Error(_("You must give at least one search pattern"));
+
+#define APT_FREE_PATTERNS() for (std::vector<regex_t>::iterator P = Patterns.begin(); \
+ P != Patterns.end(); ++P) { regfree(&(*P)); }
+
+ // Compile the regex pattern
+ std::vector<regex_t> Patterns;
+ for (unsigned int I = 0; I != NumPatterns; ++I)
+ {
+ regex_t pattern;
+ if (regcomp(&pattern, CmdL.FileList[I + 1], REG_EXTENDED | REG_ICASE | REG_NOSUB) != 0)
+ {
+ APT_FREE_PATTERNS();
+ return _error->Error("Regex compilation error");
+ }
+ Patterns.push_back(pattern);
+ }
+
+ std::map<std::string, std::string> output_map;
+
+ LocalitySortedVersionSet bag;
+ OpTextProgress progress(*_config);
+ progress.OverallProgress(0, 100, 50, _("Sorting"));
+ GetLocalitySortedVersionSet(CacheFile, &bag, &progress);
+ LocalitySortedVersionSet::iterator V = bag.begin();
+
+ progress.OverallProgress(50, 100, 50, _("Full Text Search"));
+ progress.SubProgress(bag.size());
+ pkgRecords records(CacheFile);
+
+ std::string format = "${color:highlight}${Package}${color:neutral}/${Origin} ${Version} ${Architecture}${ }${apt:Status}\n";
+ if (_config->FindB("APT::Cache::ShowFull",false) == false)
+ format += " ${Description}\n";
+ else
+ format += " ${LongDescription}\n";
+
+ bool const NamesOnly = _config->FindB("APT::Cache::NamesOnly", false);
+ int Done = 0;
+ std::vector<bool> PkgsDone(Cache->Head().PackageCount, false);
+ for ( ;V != bag.end(); ++V)
+ {
+ if (Done%500 == 0)
+ progress.Progress(Done);
+ ++Done;
+
+ // we want to list each package only once
+ pkgCache::PkgIterator const P = V.ParentPkg();
+ if (PkgsDone[P->ID] == true)
+ continue;
+
+ char const * const PkgName = P.Name();
+ pkgCache::DescIterator Desc = V.TranslatedDescription();
+ std::string LongDesc = "";
+ if (Desc.end() == false)
+ {
+ pkgRecords::Parser &parser = records.Lookup(Desc.FileList());
+ LongDesc = parser.LongDesc();
+ }
+
+ bool all_found = true;
+ for (std::vector<regex_t>::const_iterator pattern = Patterns.begin();
+ pattern != Patterns.end(); ++pattern)
+ {
+ if (regexec(&(*pattern), PkgName, 0, 0, 0) == 0)
+ continue;
+ else if (NamesOnly == false && regexec(&(*pattern), LongDesc.c_str(), 0, 0, 0) == 0)
+ continue;
+ // search patterns are AND, so one failing fails all
+ all_found = false;
+ break;
+ }
+ if (all_found == true)
+ {
+ PkgsDone[P->ID] = true;
+ std::stringstream outs;
+ ListSingleVersion(CacheFile, records, V, outs, format);
+ output_map.insert(std::make_pair<std::string, std::string>(
+ PkgName, outs.str()));
+ }
+ }
+ APT_FREE_PATTERNS();
+ progress.Done();
+
+ // FIXME: SORT! and make sorting flexible (alphabetic, by pkg status)
+ // output the sorted map
+ std::map<std::string, std::string>::const_iterator K;
+ for (K = output_map.begin(); K != output_map.end(); ++K)
+ std::cout << (*K).second << std::endl;
+
+ return true;
+}
+ /*}}}*/
+// LocalitySort - Sort a version list by package file locality /*{{{*/
+static int LocalityCompare(const void * const a, const void * const b)
+{
+ pkgCache::VerFile const * const A = *(pkgCache::VerFile const * const * const)a;
+ pkgCache::VerFile const * const B = *(pkgCache::VerFile const * const * const)b;
+
+ if (A == 0 && B == 0)
+ return 0;
+ if (A == 0)
+ return 1;
+ if (B == 0)
+ return -1;
+
+ if (A->File == B->File)
+ return A->Offset - B->Offset;
+ return A->File - B->File;
+}
+void LocalitySort(pkgCache::VerFile ** const begin, unsigned long long const Count,size_t const Size)
+{
+ qsort(begin,Count,Size,LocalityCompare);
+}
+static void LocalitySort(pkgCache::DescFile ** const begin, unsigned long long const Count,size_t const Size)
+{
+ qsort(begin,Count,Size,LocalityCompare);
+}
+ /*}}}*/
+// Search - Perform a search /*{{{*/
+// ---------------------------------------------------------------------
+/* This searches the package names and package descriptions for a pattern */
+struct ExDescFile
+{
+ pkgCache::DescFile *Df;
+ pkgCache::VerIterator V;
+ map_id_t ID;
+};
+static bool Search(CommandLine &CmdL)
+{
+ bool const ShowFull = _config->FindB("APT::Cache::ShowFull",false);
+ unsigned int const NumPatterns = CmdL.FileSize() -1;
+
+ pkgCacheFile CacheFile;
+ pkgCache *Cache = CacheFile.GetPkgCache();
+ pkgDepCache::Policy *Plcy = CacheFile.GetPolicy();
+ if (unlikely(Cache == NULL || Plcy == NULL))
+ return false;
+
+ // Make sure there is at least one argument
+ if (NumPatterns < 1)
+ return _error->Error(_("You must give at least one search pattern"));
+
+ // Compile the regex pattern
+ regex_t *Patterns = new regex_t[NumPatterns];
+ memset(Patterns,0,sizeof(*Patterns)*NumPatterns);
+ for (unsigned I = 0; I != NumPatterns; I++)
+ {
+ if (regcomp(&Patterns[I],CmdL.FileList[I+1],REG_EXTENDED | REG_ICASE |
+ REG_NOSUB) != 0)
+ {
+ for (; I != 0; I--)
+ regfree(&Patterns[I]);
+ return _error->Error("Regex compilation error");
+ }
+ }
+
+ if (_error->PendingError() == true)
+ {
+ for (unsigned I = 0; I != NumPatterns; I++)
+ regfree(&Patterns[I]);
+ return false;
+ }
+
+ size_t const descCount = Cache->HeaderP->GroupCount + 1;
+ ExDescFile *DFList = new ExDescFile[descCount];
+ memset(DFList,0,sizeof(*DFList) * descCount);
+
+ bool *PatternMatch = new bool[descCount * NumPatterns];
+ memset(PatternMatch,false,sizeof(*PatternMatch) * descCount * NumPatterns);
+
+ // Map versions that we want to write out onto the VerList array.
+ bool const NamesOnly = _config->FindB("APT::Cache::NamesOnly",false);
+ for (pkgCache::GrpIterator G = Cache->GrpBegin(); G.end() == false; ++G)
+ {
+ size_t const PatternOffset = G->ID * NumPatterns;
+ size_t unmatched = 0, matched = 0;
+ for (unsigned I = 0; I < NumPatterns; ++I)
+ {
+ if (PatternMatch[PatternOffset + I] == true)
+ ++matched;
+ else if (regexec(&Patterns[I],G.Name(),0,0,0) == 0)
+ PatternMatch[PatternOffset + I] = true;
+ else
+ ++unmatched;
+ }
+
+ // already dealt with this package?
+ if (matched == NumPatterns)
+ continue;
+
+ // Doing names only, drop any that don't match..
+ if (NamesOnly == true && unmatched == NumPatterns)
+ continue;
+
+ // Find the proper version to use
+ pkgCache::PkgIterator P = G.FindPreferredPkg();
+ if (P.end() == true)
+ continue;
+ pkgCache::VerIterator V = Plcy->GetCandidateVer(P);
+ if (V.end() == false)
+ {
+ pkgCache::DescIterator const D = V.TranslatedDescription();
+ //FIXME: packages without a description can't be found
+ if (D.end() == true)
+ continue;
+ DFList[G->ID].Df = D.FileList();
+ DFList[G->ID].V = V;
+ DFList[G->ID].ID = G->ID;
+ }
+
+ if (unmatched == NumPatterns)
+ continue;
+
+ // Include all the packages that provide matching names too
+ for (pkgCache::PrvIterator Prv = P.ProvidesList() ; Prv.end() == false; ++Prv)
+ {
+ pkgCache::VerIterator V = Plcy->GetCandidateVer(Prv.OwnerPkg());
+ if (V.end() == true)
+ continue;
+
+ unsigned long id = Prv.OwnerPkg().Group()->ID;
+ pkgCache::DescIterator const D = V.TranslatedDescription();
+ //FIXME: packages without a description can't be found
+ if (D.end() == true)
+ continue;
+ DFList[id].Df = D.FileList();
+ DFList[id].V = V;
+ DFList[id].ID = id;
+
+ size_t const PrvPatternOffset = id * NumPatterns;
+ for (unsigned I = 0; I < NumPatterns; ++I)
+ PatternMatch[PrvPatternOffset + I] |= PatternMatch[PatternOffset + I];
+ }
+ }
+
+ LocalitySort(&DFList->Df, Cache->HeaderP->GroupCount, sizeof(*DFList));
+
+ // Create the text record parser
+ pkgRecords Recs(*Cache);
+ // Iterate over all the version records and check them
+ for (ExDescFile *J = DFList; J->Df != 0; ++J)
+ {
+ pkgRecords::Parser &P = Recs.Lookup(pkgCache::DescFileIterator(*Cache,J->Df));
+ size_t const PatternOffset = J->ID * NumPatterns;
+
+ if (NamesOnly == false)
+ {
+ std::string const LongDesc = P.LongDesc();
+ for (unsigned I = 0; I < NumPatterns; ++I)
+ {
+ if (PatternMatch[PatternOffset + I] == true)
+ continue;
+ else if (regexec(&Patterns[I],LongDesc.c_str(),0,0,0) == 0)
+ PatternMatch[PatternOffset + I] = true;
+ }
+ }
+
+ bool matchedAll = true;
+ for (unsigned I = 0; I < NumPatterns; ++I)
+ if (PatternMatch[PatternOffset + I] == false)
+ {
+ matchedAll = false;
+ break;
+ }
+
+ if (matchedAll == true)
+ {
+ if (ShowFull == true)
+ DisplayRecordV1(CacheFile, J->V, std::cout);
+ else
+ printf("%s - %s\n",P.Name().c_str(),P.ShortDesc().c_str());
+ }
+ }
+
+ delete [] DFList;
+ delete [] PatternMatch;
+ for (unsigned I = 0; I != NumPatterns; I++)
+ regfree(&Patterns[I]);
+ delete [] Patterns;
+ if (ferror(stdout))
+ return _error->Error("Write to stdout failed");
+ return true;
+}
+ /*}}}*/
+bool DoSearch(CommandLine &CmdL) /*{{{*/
+{
+ int const ShowVersion = _config->FindI("APT::Cache::Search::Version", 1);
+ if (ShowVersion <= 1)
+ return Search(CmdL);
+ return FullTextSearch(CmdL);
+}
+
diff --git a/apt-private/private-search.h b/apt-private/private-search.h
new file mode 100644
index 000000000..8ae1f38f3
--- /dev/null
+++ b/apt-private/private-search.h
@@ -0,0 +1,12 @@
+#ifndef APT_PRIVATE_SEARCH_H
+#define APT_PRIVATE_SEARCH_H
+
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/macros.h>
+
+class CommandLine;
+
+APT_PUBLIC bool DoSearch(CommandLine &CmdL);
+APT_PUBLIC void LocalitySort(pkgCache::VerFile ** const begin, unsigned long long const Count,size_t const Size);
+
+#endif
diff --git a/apt-private/private-show.cc b/apt-private/private-show.cc
new file mode 100644
index 000000000..27338a08c
--- /dev/null
+++ b/apt-private/private-show.cc
@@ -0,0 +1,470 @@
+// Includes /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/pkgrecords.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/macros.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/policy.h>
+
+#include <apt-private/private-cacheset.h>
+#include <apt-private/private-output.h>
+#include <apt-private/private-show.h>
+
+#include <stdio.h>
+#include <unistd.h>
+#include <ostream>
+#include <string>
+
+#include <apti18n.h>
+ /*}}}*/
+
+static bool OpenPackagesFile(pkgCacheFile &CacheFile, pkgCache::VerIterator const &V,/*{{{*/
+ FileFd &PkgF, pkgCache::VerFileIterator &Vf)
+{
+ pkgCache const * const Cache = CacheFile.GetPkgCache();
+ if (unlikely(Cache == NULL))
+ return false;
+
+ // Find an appropriate file
+ Vf = V.FileList();
+ for (; Vf.end() == false; ++Vf)
+ if ((Vf.File()->Flags & pkgCache::Flag::NotSource) == 0)
+ break;
+ if (Vf.end() == true)
+ Vf = V.FileList();
+
+ // Check and load the package list file
+ pkgCache::PkgFileIterator I = Vf.File();
+ if (I.IsOk() == false)
+ return _error->Error(_("Package file %s is out of sync."),I.FileName());
+
+ // Read the record
+ return PkgF.Open(I.FileName(), FileFd::ReadOnly, FileFd::Extension);
+}
+ /*}}}*/
+static APT_PURE unsigned char const* skipDescriptionFields(unsigned char const * DescP)/*{{{*/
+{
+ char const * const TagName = "\nDescription";
+ size_t const TagLen = strlen(TagName);
+ while ((DescP = (unsigned char*)strchr((char*)DescP, '\n')) != NULL)
+ {
+ if (DescP[1] == ' ')
+ DescP += 2;
+ else if (strncmp((char*)DescP, TagName, TagLen) == 0)
+ DescP += TagLen;
+ else
+ break;
+ }
+ if (DescP != NULL)
+ ++DescP;
+ return DescP;
+}
+ /*}}}*/
+bool DisplayRecordV1(pkgCacheFile &CacheFile, pkgCache::VerIterator const &V,/*{{{*/
+ std::ostream &out)
+{
+ FileFd PkgF;
+ pkgCache::VerFileIterator Vf;
+ if (OpenPackagesFile(CacheFile, V, PkgF, Vf) == false)
+ return false;
+
+ pkgCache * const Cache = CacheFile.GetPkgCache();
+ if (unlikely(Cache == NULL))
+ return false;
+
+ // Read the record (and ensure that it ends with a newline and NUL)
+ unsigned char *Buffer = new unsigned char[Cache->HeaderP->MaxVerFileSize+2];
+ Buffer[Vf->Size] = '\n';
+ Buffer[Vf->Size+1] = '\0';
+ if (PkgF.Seek(Vf->Offset) == false ||
+ PkgF.Read(Buffer,Vf->Size) == false)
+ {
+ delete [] Buffer;
+ return false;
+ }
+
+ // Get a pointer to start of Description field
+ const unsigned char *DescP = (unsigned char*)strstr((char*)Buffer, "\nDescription");
+ if (DescP != NULL)
+ ++DescP;
+ else
+ DescP = Buffer + Vf->Size;
+
+ // Write all but Description
+ size_t const length = DescP - Buffer;
+ if (length != 0 && FileFd::Write(STDOUT_FILENO, Buffer, length) == false)
+ {
+ delete [] Buffer;
+ return false;
+ }
+
+ // Show the right description
+ pkgRecords Recs(*Cache);
+ pkgCache::DescIterator Desc = V.TranslatedDescription();
+ if (Desc.end() == false)
+ {
+ pkgRecords::Parser &P = Recs.Lookup(Desc.FileList());
+ out << "Description" << ( (strcmp(Desc.LanguageCode(),"") != 0) ? "-" : "" ) << Desc.LanguageCode() << ": " << P.LongDesc();
+ out << std::endl << "Description-md5: " << Desc.md5() << std::endl;
+
+ // Find the first field after the description (if there is any)
+ DescP = skipDescriptionFields(DescP);
+ }
+ // else we have no translation, so we found a lonely Description-md5 -> don't skip it
+
+ // write the rest of the buffer, but skip mixed in Descriptions* fields
+ while (DescP != NULL)
+ {
+ const unsigned char * const Start = DescP;
+ const unsigned char *End = (unsigned char*)strstr((char*)DescP, "\nDescription");
+ if (End == NULL)
+ {
+ End = &Buffer[Vf->Size];
+ DescP = NULL;
+ }
+ else
+ {
+ ++End; // get the newline into the output
+ DescP = skipDescriptionFields(End + strlen("Description"));
+ }
+ size_t const length = End - Start;
+ if (length != 0 && FileFd::Write(STDOUT_FILENO, Start, length) == false)
+ {
+ delete [] Buffer;
+ return false;
+ }
+ }
+ // write a final newline after the last field
+ out << std::endl;
+
+ delete [] Buffer;
+ return true;
+}
+ /*}}}*/
+static bool DisplayRecordV2(pkgCacheFile &CacheFile, pkgCache::VerIterator const &V,/*{{{*/
+ std::ostream &out)
+{
+ FileFd PkgF;
+ pkgCache::VerFileIterator Vf;
+ if (OpenPackagesFile(CacheFile, V, PkgF, Vf) == false)
+ return false;
+
+ // Check and load the package list file
+ pkgCache::PkgFileIterator I = Vf.File();
+ if (I.IsOk() == false)
+ return _error->Error(_("Package file %s is out of sync."),I.FileName());
+
+ // find matching sources.list metaindex
+ pkgSourceList *SrcList = CacheFile.GetSourceList();
+ pkgIndexFile *Index;
+ if (SrcList->FindIndex(I, Index) == false &&
+ _system->FindIndex(I, Index) == false)
+ return _error->Error("Can not find indexfile for Package %s (%s)",
+ V.ParentPkg().Name(), V.VerStr());
+ std::string source_index_file = Index->Describe(true);
+
+ // Read the record
+ pkgTagSection Tags;
+ pkgTagFile TagF(&PkgF);
+
+ if (TagF.Jump(Tags, V.FileList()->Offset) == false)
+ return _error->Error("Internal Error, Unable to parse a package record");
+
+ // make size nice
+ std::string installed_size;
+ if (Tags.FindI("Installed-Size") > 0)
+ strprintf(installed_size, "%sB", SizeToStr(Tags.FindI("Installed-Size")*1024).c_str());
+ else
+ installed_size = _("unknown");
+ std::string package_size;
+ if (Tags.FindI("Size") > 0)
+ strprintf(package_size, "%sB", SizeToStr(Tags.FindI("Size")).c_str());
+ else
+ package_size = _("unknown");
+
+ const char *manual_installed = nullptr;
+ if (V.ParentPkg().CurrentVer() == V)
+ {
+ pkgDepCache *depCache = CacheFile.GetDepCache();
+ if (unlikely(depCache == nullptr))
+ return false;
+ pkgDepCache::StateCache &state = (*depCache)[V.ParentPkg()];
+ manual_installed = !(state.Flags & pkgCache::Flag::Auto) ? "yes" : "no";
+ }
+
+ // FIXME: add verbose that does not do the removal of the tags?
+ std::vector<pkgTagSection::Tag> RW;
+ // delete, apt-cache show has this info and most users do not care
+ RW.push_back(pkgTagSection::Tag::Remove("MD5sum"));
+ RW.push_back(pkgTagSection::Tag::Remove("SHA1"));
+ RW.push_back(pkgTagSection::Tag::Remove("SHA256"));
+ RW.push_back(pkgTagSection::Tag::Remove("SHA512"));
+ RW.push_back(pkgTagSection::Tag::Remove("Filename"));
+ RW.push_back(pkgTagSection::Tag::Remove("Multi-Arch"));
+ RW.push_back(pkgTagSection::Tag::Remove("Architecture"));
+ RW.push_back(pkgTagSection::Tag::Remove("Conffiles"));
+ // we use the translated description
+ RW.push_back(pkgTagSection::Tag::Remove("Description"));
+ RW.push_back(pkgTagSection::Tag::Remove("Description-md5"));
+ // improve
+ RW.push_back(pkgTagSection::Tag::Rewrite("Package", V.ParentPkg().FullName(true)));
+ RW.push_back(pkgTagSection::Tag::Rewrite("Installed-Size", installed_size));
+ RW.push_back(pkgTagSection::Tag::Remove("Size"));
+ RW.push_back(pkgTagSection::Tag::Rewrite("Download-Size", package_size));
+ // add
+ if (manual_installed != nullptr)
+ RW.push_back(pkgTagSection::Tag::Rewrite("APT-Manual-Installed", manual_installed));
+ RW.push_back(pkgTagSection::Tag::Rewrite("APT-Sources", source_index_file));
+
+ FileFd stdoutfd;
+ if (stdoutfd.OpenDescriptor(STDOUT_FILENO, FileFd::WriteOnly, false) == false ||
+ Tags.Write(stdoutfd, TFRewritePackageOrder, RW) == false || stdoutfd.Close() == false)
+ return _error->Error("Internal Error, Unable to parse a package record");
+
+ // write the description
+ pkgCache * const Cache = CacheFile.GetPkgCache();
+ if (unlikely(Cache == NULL))
+ return false;
+ pkgRecords Recs(*Cache);
+ // FIXME: show (optionally) all available translations(?)
+ pkgCache::DescIterator Desc = V.TranslatedDescription();
+ if (Desc.end() == false)
+ {
+ pkgRecords::Parser &P = Recs.Lookup(Desc.FileList());
+ out << "Description: " << P.LongDesc();
+ }
+
+ // write a final newline (after the description)
+ out << std::endl << std::endl;
+
+ return true;
+}
+ /*}}}*/
+bool ShowPackage(CommandLine &CmdL) /*{{{*/
+{
+ pkgCacheFile CacheFile;
+ CacheSetHelperVirtuals helper(true, GlobalError::NOTICE);
+ APT::CacheSetHelper::VerSelector const select = _config->FindB("APT::Cache::AllVersions", true) ?
+ APT::CacheSetHelper::ALL : APT::CacheSetHelper::CANDIDATE;
+ if (select == APT::CacheSetHelper::CANDIDATE && CacheFile.GetDepCache() == nullptr)
+ return false;
+ APT::VersionList const verset = APT::VersionList::FromCommandLine(CacheFile, CmdL.FileList + 1, select, helper);
+ int const ShowVersion = _config->FindI("APT::Cache::Show::Version", 1);
+ for (APT::VersionList::const_iterator Ver = verset.begin(); Ver != verset.end(); ++Ver)
+ if (ShowVersion <= 1)
+ {
+ if (DisplayRecordV1(CacheFile, Ver, std::cout) == false)
+ return false;
+ }
+ else
+ if (DisplayRecordV2(CacheFile, Ver, c1out) == false)
+ return false;
+
+ if (select == APT::CacheSetHelper::CANDIDATE)
+ {
+ APT::VersionList const verset_all = APT::VersionList::FromCommandLine(CacheFile, CmdL.FileList + 1, APT::CacheSetHelper::ALL, helper);
+ int const records = verset_all.size() - verset.size();
+ if (records > 0)
+ _error->Notice(P_("There is %i additional record. Please use the '-a' switch to see it", "There are %i additional records. Please use the '-a' switch to see them.", records), records);
+ }
+
+ if (_config->FindB("APT::Cache::ShowVirtuals", false) == true)
+ for (APT::PackageSet::const_iterator Pkg = helper.virtualPkgs.begin();
+ Pkg != helper.virtualPkgs.end(); ++Pkg)
+ {
+ c1out << "Package: " << Pkg.FullName(true) << std::endl;
+ c1out << "State: " << _("not a real package (virtual)") << std::endl;
+ // FIXME: show providers, see private-cacheset.h
+ // CacheSetHelperAPTGet::showVirtualPackageErrors()
+ }
+
+ if (verset.empty() == true)
+ {
+ if (helper.virtualPkgs.empty() == true)
+ return _error->Error(_("No packages found"));
+ else
+ _error->Notice(_("No packages found"));
+ }
+
+ return true;
+}
+ /*}}}*/
+static std::string Sha1FromString(std::string const &input) /*{{{*/
+{
+ // XXX: move to hashes.h: HashString::FromString() ?
+ SHA1Summation sha1;
+ sha1.Add(input.c_str(), input.length());
+ return sha1.Result().Value();
+}
+ /*}}}*/
+bool ShowSrcPackage(CommandLine &CmdL) /*{{{*/
+{
+ pkgCacheFile CacheFile;
+ pkgSourceList *List = CacheFile.GetSourceList();
+ if (unlikely(List == NULL))
+ return false;
+
+ // Create the text record parsers
+ pkgSrcRecords SrcRecs(*List);
+ if (_error->PendingError() == true)
+ return false;
+
+ bool found = false;
+ // avoid showing identical records
+ std::set<std::string> seen;
+ for (const char **I = CmdL.FileList + 1; *I != 0; I++)
+ {
+ SrcRecs.Restart();
+
+ pkgSrcRecords::Parser *Parse;
+ bool found_this = false;
+ while ((Parse = SrcRecs.Find(*I,false)) != 0) {
+ // SrcRecs.Find() will find both binary and source names
+ if (_config->FindB("APT::Cache::Only-Source", false) == true)
+ if (Parse->Package() != *I)
+ continue;
+ std::string sha1str = Sha1FromString(Parse->AsStr());
+ if (std::find(seen.begin(), seen.end(), sha1str) == seen.end())
+ {
+ std::cout << Parse->AsStr() << std::endl;;
+ found = true;
+ found_this = true;
+ seen.insert(sha1str);
+ }
+ }
+ if (found_this == false) {
+ _error->Warning(_("Unable to locate package %s"),*I);
+ continue;
+ }
+ }
+ if (found == false)
+ _error->Notice(_("No packages found"));
+ return true;
+}
+ /*}}}*/
+// Policy - Show the results of the preferences file /*{{{*/
+bool Policy(CommandLine &CmdL)
+{
+ pkgCacheFile CacheFile;
+ pkgSourceList const * const SrcList = CacheFile.GetSourceList();
+ if (unlikely(SrcList == nullptr))
+ return false;
+ pkgCache * const Cache = CacheFile.GetPkgCache();
+ if (unlikely(Cache == nullptr))
+ return false;
+ pkgPolicy * const Plcy = CacheFile.GetPolicy();
+ if (unlikely(Plcy == nullptr))
+ return false;
+
+ // Print out all of the package files
+ if (CmdL.FileList[1] == 0)
+ {
+ std::cout << _("Package files:") << std::endl;
+ for (pkgCache::PkgFileIterator F = Cache->FileBegin(); F.end() == false; ++F)
+ {
+ if (F.Flagged(pkgCache::Flag::NoPackages))
+ continue;
+ // Locate the associated index files so we can derive a description
+ pkgIndexFile *Indx;
+ if (SrcList->FindIndex(F,Indx) == false &&
+ _system->FindIndex(F,Indx) == false)
+ return _error->Error(_("Cache is out of sync, can't x-ref a package file"));
+
+ printf("%4i %s\n",
+ Plcy->GetPriority(F),Indx->Describe(true).c_str());
+
+ // Print the reference information for the package
+ std::string Str = F.RelStr();
+ if (Str.empty() == false)
+ printf(" release %s\n",F.RelStr().c_str());
+ if (F.Site() != 0 && F.Site()[0] != 0)
+ printf(" origin %s\n",F.Site());
+ }
+
+ // Show any packages have explicit pins
+ std::cout << _("Pinned packages:") << std::endl;
+ pkgCache::PkgIterator I = Cache->PkgBegin();
+ for (;I.end() != true; ++I)
+ {
+ for (pkgCache::VerIterator V = I.VersionList(); !V.end(); ++V) {
+ auto Prio = Plcy->GetPriority(V, false);
+ if (Prio == 0)
+ continue;
+
+ std::cout << " ";
+ // Print the package name and the version we are forcing to
+ ioprintf(std::cout, _("%s -> %s with priority %d\n"), I.FullName(true).c_str(), V.VerStr(), Prio);
+ }
+ }
+ return true;
+ }
+
+ char const * const msgInstalled = _(" Installed: ");
+ char const * const msgCandidate = _(" Candidate: ");
+ short const InstalledLessCandidate =
+ mbstowcs(NULL, msgInstalled, 0) - mbstowcs(NULL, msgCandidate, 0);
+ short const deepInstalled =
+ (InstalledLessCandidate < 0 ? (InstalledLessCandidate*-1) : 0) - 1;
+ short const deepCandidate =
+ (InstalledLessCandidate > 0 ? (InstalledLessCandidate) : 0) - 1;
+
+ // Print out detailed information for each package
+ APT::CacheSetHelper helper(true, GlobalError::NOTICE);
+ APT::PackageList pkgset = APT::PackageList::FromCommandLine(CacheFile, CmdL.FileList + 1, helper);
+ for (APT::PackageList::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
+ {
+ std::cout << Pkg.FullName(true) << ":" << std::endl;
+
+ // Installed version
+ std::cout << msgInstalled << OutputInDepth(deepInstalled, " ");
+ if (Pkg->CurrentVer == 0)
+ std::cout << _("(none)") << std::endl;
+ else
+ std::cout << Pkg.CurrentVer().VerStr() << std::endl;
+
+ // Candidate Version
+ std::cout << msgCandidate << OutputInDepth(deepCandidate, " ");
+ pkgCache::VerIterator V = Plcy->GetCandidateVer(Pkg);
+ if (V.end() == true)
+ std::cout << _("(none)") << std::endl;
+ else
+ std::cout << V.VerStr() << std::endl;
+
+ // Show the priority tables
+ std::cout << _(" Version table:") << std::endl;
+ for (V = Pkg.VersionList(); V.end() == false; ++V)
+ {
+ if (Pkg.CurrentVer() == V)
+ std::cout << " *** " << V.VerStr();
+ else
+ std::cout << " " << V.VerStr();
+
+ std::cout << " " << Plcy->GetPriority(V) << std::endl;
+ for (pkgCache::VerFileIterator VF = V.FileList(); VF.end() == false; ++VF)
+ {
+ // Locate the associated index files so we can derive a description
+ pkgIndexFile *Indx;
+ if (SrcList->FindIndex(VF.File(),Indx) == false &&
+ _system->FindIndex(VF.File(),Indx) == false)
+ return _error->Error(_("Cache is out of sync, can't x-ref a package file"));
+ printf(" %4i %s\n",Plcy->GetPriority(VF.File()),
+ Indx->Describe(true).c_str());
+ }
+ }
+ }
+ return true;
+}
+ /*}}}*/
diff --git a/apt-private/private-show.h b/apt-private/private-show.h
new file mode 100644
index 000000000..80871b817
--- /dev/null
+++ b/apt-private/private-show.h
@@ -0,0 +1,17 @@
+#ifndef APT_PRIVATE_SHOW_H
+#define APT_PRIVATE_SHOW_H
+
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/macros.h>
+
+#include <iostream>
+
+class CommandLine;
+class pkgCacheFile;
+
+APT_PUBLIC bool ShowPackage(CommandLine &CmdL);
+APT_PUBLIC bool DisplayRecordV1(pkgCacheFile &CacheFile, pkgCache::VerIterator const &V, std::ostream &out);
+APT_PUBLIC bool ShowSrcPackage(CommandLine &CmdL);
+APT_PUBLIC bool Policy(CommandLine &CmdL);
+
+#endif
diff --git a/apt-private/private-source.cc b/apt-private/private-source.cc
new file mode 100644
index 000000000..e9ec7c6cf
--- /dev/null
+++ b/apt-private/private-source.cc
@@ -0,0 +1,808 @@
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/acquire-item.h>
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/algorithms.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/metaindex.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/srcrecords.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/version.h>
+#include <apt-pkg/policy.h>
+
+#include <apt-private/private-cachefile.h>
+#include <apt-private/private-cacheset.h>
+#include <apt-private/private-download.h>
+#include <apt-private/private-install.h>
+#include <apt-private/private-source.h>
+
+#include <apt-pkg/debindexfile.h>
+
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <iostream>
+#include <sstream>
+#include <set>
+#include <string>
+#include <vector>
+
+#include <apti18n.h>
+ /*}}}*/
+
+// GetReleaseFileForSourceRecord - Return Suite for the given srcrecord /*{{{*/
+static pkgCache::RlsFileIterator GetReleaseFileForSourceRecord(CacheFile &CacheFile,
+ pkgSourceList const * const SrcList, pkgSrcRecords::Parser const * const Parse)
+{
+ // try to find release
+ const pkgIndexFile& CurrentIndexFile = Parse->Index();
+
+ for (pkgSourceList::const_iterator S = SrcList->begin();
+ S != SrcList->end(); ++S)
+ {
+ std::vector<pkgIndexFile *> *Indexes = (*S)->GetIndexFiles();
+ for (std::vector<pkgIndexFile *>::const_iterator IF = Indexes->begin();
+ IF != Indexes->end(); ++IF)
+ {
+ if (&CurrentIndexFile == (*IF))
+ return (*S)->FindInCache(CacheFile, false);
+ }
+ }
+ return pkgCache::RlsFileIterator(CacheFile);
+}
+ /*}}}*/
+// FindSrc - Find a source record /*{{{*/
+static pkgSrcRecords::Parser *FindSrc(const char *Name,
+ pkgSrcRecords &SrcRecs,std::string &Src,
+ CacheFile &Cache)
+{
+ std::string VerTag, UserRequestedVerTag;
+ std::string ArchTag = "";
+ std::string RelTag = _config->Find("APT::Default-Release");
+ std::string TmpSrc = Name;
+
+ // extract release
+ size_t found = TmpSrc.find_last_of("/");
+ if (found != std::string::npos)
+ {
+ RelTag = TmpSrc.substr(found+1);
+ TmpSrc = TmpSrc.substr(0,found);
+ }
+ // extract the version
+ found = TmpSrc.find_last_of("=");
+ if (found != std::string::npos)
+ {
+ VerTag = UserRequestedVerTag = TmpSrc.substr(found+1);
+ TmpSrc = TmpSrc.substr(0,found);
+ }
+ // extract arch
+ found = TmpSrc.find_last_of(":");
+ if (found != std::string::npos)
+ {
+ ArchTag = TmpSrc.substr(found+1);
+ TmpSrc = TmpSrc.substr(0,found);
+ }
+
+ /* Lookup the version of the package we would install if we were to
+ install a version and determine the source package name, then look
+ in the archive for a source package of the same name. */
+ bool MatchSrcOnly = _config->FindB("APT::Get::Only-Source");
+ pkgCache::PkgIterator Pkg;
+ if (ArchTag != "")
+ Pkg = Cache.GetPkgCache()->FindPkg(TmpSrc, ArchTag);
+ else
+ Pkg = Cache.GetPkgCache()->FindPkg(TmpSrc);
+
+ // if we can't find a package but the user qualified with a arch,
+ // error out here
+ if (Pkg.end() && ArchTag != "")
+ {
+ Src = Name;
+ _error->Error(_("Can not find a package for architecture '%s'"),
+ ArchTag.c_str());
+ return 0;
+ }
+
+ if (MatchSrcOnly == false && Pkg.end() == false)
+ {
+ if(VerTag != "" || RelTag != "" || ArchTag != "")
+ {
+ bool fuzzy = false;
+ // we have a default release, try to locate the pkg. we do it like
+ // this because GetCandidateVer() will not "downgrade", that means
+ // "apt-get source -t stable apt" won't work on a unstable system
+ for (pkgCache::VerIterator Ver = Pkg.VersionList();; ++Ver)
+ {
+ // try first only exact matches, later fuzzy matches
+ if (Ver.end() == true)
+ {
+ if (fuzzy == true)
+ break;
+ fuzzy = true;
+ Ver = Pkg.VersionList();
+ // exit right away from the Pkg.VersionList() loop if we
+ // don't have any versions
+ if (Ver.end() == true)
+ break;
+ }
+
+ // ignore arches that are not for us
+ if (ArchTag != "" && Ver.Arch() != ArchTag)
+ continue;
+
+ // pick highest version for the arch unless the user wants
+ // something else
+ if (ArchTag != "" && VerTag == "" && RelTag == "")
+ if(Cache.GetPkgCache()->VS->CmpVersion(VerTag, Ver.VerStr()) < 0)
+ VerTag = Ver.VerStr();
+
+ // We match against a concrete version (or a part of this version)
+ if (VerTag.empty() == false &&
+ (fuzzy == true || Cache.GetPkgCache()->VS->CmpVersion(VerTag, Ver.VerStr()) != 0) && // exact match
+ (fuzzy == false || strncmp(VerTag.c_str(), Ver.VerStr(), VerTag.size()) != 0)) // fuzzy match
+ continue;
+
+ for (pkgCache::VerFileIterator VF = Ver.FileList();
+ VF.end() == false; ++VF)
+ {
+ /* If this is the status file, and the current version is not the
+ version in the status file (ie it is not installed, or somesuch)
+ then it is not a candidate for installation, ever. This weeds
+ out bogus entries that may be due to config-file states, or
+ other. */
+ if ((VF.File()->Flags & pkgCache::Flag::NotSource) ==
+ pkgCache::Flag::NotSource && Pkg.CurrentVer() != Ver)
+ continue;
+
+ // or we match against a release
+ if(VerTag.empty() == false ||
+ (VF.File().Archive() != 0 && VF.File().Archive() == RelTag) ||
+ (VF.File().Codename() != 0 && VF.File().Codename() == RelTag))
+ {
+ // the Version we have is possibly fuzzy or includes binUploads,
+ // so we use the Version of the SourcePkg (empty if same as package)
+ Src = Ver.SourcePkgName();
+ VerTag = Ver.SourceVerStr();
+ break;
+ }
+ }
+ if (Src.empty() == false)
+ break;
+ }
+ }
+
+ if (Src.empty() == true && ArchTag.empty() == false)
+ {
+ if (VerTag.empty() == false)
+ _error->Error(_("Can not find a package '%s' with version '%s'"),
+ Pkg.FullName().c_str(), VerTag.c_str());
+ if (RelTag.empty() == false)
+ _error->Error(_("Can not find a package '%s' with release '%s'"),
+ Pkg.FullName().c_str(), RelTag.c_str());
+ Src = Name;
+ return 0;
+ }
+
+
+ if (Src.empty() == true)
+ {
+ // if we don't have found a fitting package yet so we will
+ // choose a good candidate and proceed with that.
+ // Maybe we will find a source later on with the right VerTag
+ // or RelTag
+ if (Cache.BuildPolicy() == false)
+ return nullptr;
+ pkgPolicy * Policy = dynamic_cast<pkgPolicy*>(Cache.GetPolicy());
+ if (Policy == nullptr)
+ {
+ _error->Fatal("Implementation error: dynamic up-casting policy engine failed in FindSrc!");
+ return nullptr;
+ }
+ pkgCache::VerIterator const Ver = Policy->GetCandidateVer(Pkg);
+ if (Ver.end() == false)
+ {
+ if (strcmp(Ver.SourcePkgName(),Ver.ParentPkg().Name()) != 0)
+ Src = Ver.SourcePkgName();
+ if (VerTag.empty() == true && strcmp(Ver.SourceVerStr(),Ver.VerStr()) != 0)
+ VerTag = Ver.SourceVerStr();
+ }
+ }
+ }
+
+ if (Src.empty() == true)
+ {
+ Src = TmpSrc;
+ }
+ else
+ {
+ /* if we have a source pkg name, make sure to only search
+ for srcpkg names, otherwise apt gets confused if there
+ is a binary package "pkg1" and a source package "pkg1"
+ with the same name but that comes from different packages */
+ MatchSrcOnly = true;
+ if (Src != TmpSrc)
+ {
+ ioprintf(c1out, _("Picking '%s' as source package instead of '%s'\n"), Src.c_str(), TmpSrc.c_str());
+ }
+ }
+
+ // The best hit
+ pkgSrcRecords::Parser *Last = 0;
+ unsigned long Offset = 0;
+ std::string Version;
+ pkgSourceList const * const SrcList = Cache.GetSourceList();
+
+ /* Iterate over all of the hits, which includes the resulting
+ binary packages in the search */
+ pkgSrcRecords::Parser *Parse;
+ while (true)
+ {
+ SrcRecs.Restart();
+ while ((Parse = SrcRecs.Find(Src.c_str(), MatchSrcOnly)) != 0)
+ {
+ const std::string Ver = Parse->Version();
+
+ // See if we need to look for a specific release tag
+ if (RelTag.empty() == false && UserRequestedVerTag.empty() == true)
+ {
+ pkgCache::RlsFileIterator const Rls = GetReleaseFileForSourceRecord(Cache, SrcList, Parse);
+ if (Rls.end() == false)
+ {
+ if ((Rls->Archive != 0 && RelTag != Rls.Archive()) &&
+ (Rls->Codename != 0 && RelTag != Rls.Codename()))
+ continue;
+ }
+ }
+
+ // Ignore all versions which doesn't fit
+ if (VerTag.empty() == false &&
+ Cache.GetPkgCache()->VS->CmpVersion(VerTag, Ver) != 0) // exact match
+ continue;
+
+ // Newer version or an exact match? Save the hit
+ if (Last == 0 || Cache.GetPkgCache()->VS->CmpVersion(Version,Ver) < 0) {
+ Last = Parse;
+ Offset = Parse->Offset();
+ Version = Ver;
+ }
+
+ // was the version check above an exact match?
+ // If so, we don't need to look further
+ if (VerTag.empty() == false && (VerTag == Ver))
+ break;
+ }
+ if (UserRequestedVerTag == "" && Version != "" && RelTag != "")
+ ioprintf(c1out, "Selected version '%s' (%s) for %s\n",
+ Version.c_str(), RelTag.c_str(), Src.c_str());
+
+ if (Last != 0 || VerTag.empty() == true)
+ break;
+ _error->Error(_("Can not find version '%s' of package '%s'"), VerTag.c_str(), TmpSrc.c_str());
+ return 0;
+ }
+
+ if (Last == 0 || Last->Jump(Offset) == false)
+ return 0;
+
+ return Last;
+}
+ /*}}}*/
+// DoSource - Fetch a source archive /*{{{*/
+// ---------------------------------------------------------------------
+/* Fetch source packages */
+struct DscFile
+{
+ std::string Package;
+ std::string Version;
+ std::string Dsc;
+};
+bool DoSource(CommandLine &CmdL)
+{
+ if (CmdL.FileSize() <= 1)
+ return _error->Error(_("Must specify at least one package to fetch source for"));
+
+ CacheFile Cache;
+ if (Cache.BuildCaches(false) == false)
+ return false;
+
+ // Create the text record parsers
+ pkgSourceList * const List = Cache.GetSourceList();
+ pkgSrcRecords SrcRecs(*List);
+ if (_error->PendingError() == true)
+ return false;
+
+ std::vector<DscFile> Dsc;
+ Dsc.reserve(CmdL.FileSize());
+
+ // insert all downloaded uris into this set to avoid downloading them
+ // twice
+ std::set<std::string> queued;
+
+ // Diff only mode only fetches .diff files
+ bool const diffOnly = _config->FindB("APT::Get::Diff-Only", false);
+ // Tar only mode only fetches .tar files
+ bool const tarOnly = _config->FindB("APT::Get::Tar-Only", false);
+ // Dsc only mode only fetches .dsc files
+ bool const dscOnly = _config->FindB("APT::Get::Dsc-Only", false);
+
+ // Load the requestd sources into the fetcher
+ aptAcquireWithTextStatus Fetcher;
+ std::vector<std::string> UntrustedList;
+ for (const char **I = CmdL.FileList + 1; *I != 0; I++)
+ {
+ std::string Src;
+ pkgSrcRecords::Parser *Last = FindSrc(*I,SrcRecs,Src,Cache);
+ if (Last == 0) {
+ return _error->Error(_("Unable to find a source package for %s"),Src.c_str());
+ }
+
+ if (Last->Index().IsTrusted() == false)
+ UntrustedList.push_back(Src);
+
+ std::string srec = Last->AsStr();
+ std::string::size_type pos = srec.find("\nVcs-");
+ while (pos != std::string::npos)
+ {
+ pos += strlen("\nVcs-");
+ std::string vcs = srec.substr(pos,srec.find(":",pos)-pos);
+ if(vcs == "Browser")
+ {
+ pos = srec.find("\nVcs-", pos);
+ continue;
+ }
+ pos += vcs.length()+2;
+ std::string::size_type epos = srec.find("\n", pos);
+ std::string const uri = srec.substr(pos,epos-pos);
+ ioprintf(c1out, _("NOTICE: '%s' packaging is maintained in "
+ "the '%s' version control system at:\n"
+ "%s\n"),
+ Src.c_str(), vcs.c_str(), uri.c_str());
+ std::string vcscmd;
+ if (vcs == "Bzr")
+ vcscmd = "bzr branch " + uri;
+ else if (vcs == "Git")
+ vcscmd = "git clone " + uri;
+
+ if (vcscmd.empty() == false)
+ ioprintf(c1out,_("Please use:\n%s\n"
+ "to retrieve the latest (possibly unreleased) "
+ "updates to the package.\n"),
+ vcscmd.c_str());
+ break;
+ }
+
+ // Back track
+ std::vector<pkgSrcRecords::File2> Lst;
+ if (Last->Files2(Lst) == false) {
+ return false;
+ }
+
+ DscFile curDsc;
+ // Load them into the fetcher
+ for (std::vector<pkgSrcRecords::File2>::const_iterator I = Lst.begin();
+ I != Lst.end(); ++I)
+ {
+ // Try to guess what sort of file it is we are getting.
+ if (I->Type == "dsc")
+ {
+ curDsc.Package = Last->Package();
+ curDsc.Version = Last->Version();
+ curDsc.Dsc = flNotDir(I->Path);
+ }
+
+ // Handle the only options so that multiple can be used at once
+ if (diffOnly == true || tarOnly == true || dscOnly == true)
+ {
+ if ((diffOnly == true && I->Type == "diff") ||
+ (tarOnly == true && I->Type == "tar") ||
+ (dscOnly == true && I->Type == "dsc"))
+ ; // Fine, we want this file downloaded
+ else
+ continue;
+ }
+
+ // don't download the same uri twice (should this be moved to
+ // the fetcher interface itself?)
+ if(queued.find(Last->Index().ArchiveURI(I->Path)) != queued.end())
+ continue;
+ queued.insert(Last->Index().ArchiveURI(I->Path));
+
+ // check if we have a file with that md5 sum already localy
+ std::string localFile = flNotDir(I->Path);
+ if (FileExists(localFile) == true)
+ if(I->Hashes.VerifyFile(localFile) == true)
+ {
+ ioprintf(c1out,_("Skipping already downloaded file '%s'\n"),
+ localFile.c_str());
+ continue;
+ }
+
+ // see if we have a hash (Acquire::ForceHash is the only way to have none)
+ if (I->Hashes.usable() == false && _config->FindB("APT::Get::AllowUnauthenticated",false) == false)
+ {
+ ioprintf(c1out, "Skipping download of file '%s' as requested hashsum is not available for authentication\n",
+ localFile.c_str());
+ curDsc.Dsc.clear();
+ continue;
+ }
+
+ new pkgAcqFile(&Fetcher,Last->Index().ArchiveURI(I->Path),
+ I->Hashes, I->FileSize, Last->Index().SourceInfo(*Last,*I), Src);
+ }
+ Dsc.push_back(std::move(curDsc));
+ }
+
+ // Display statistics
+ unsigned long long FetchBytes = Fetcher.FetchNeeded();
+ unsigned long long FetchPBytes = Fetcher.PartialPresent();
+ unsigned long long DebBytes = Fetcher.TotalNeeded();
+
+ if (CheckFreeSpaceBeforeDownload(".", (FetchBytes - FetchPBytes)) == false)
+ return false;
+
+ // Number of bytes
+ if (DebBytes != FetchBytes)
+ //TRANSLATOR: The required space between number and unit is already included
+ // in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+ ioprintf(c1out,_("Need to get %sB/%sB of source archives.\n"),
+ SizeToStr(FetchBytes).c_str(),SizeToStr(DebBytes).c_str());
+ else
+ //TRANSLATOR: The required space between number and unit is already included
+ // in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+ ioprintf(c1out,_("Need to get %sB of source archives.\n"),
+ SizeToStr(DebBytes).c_str());
+
+ if (_config->FindB("APT::Get::Simulate",false) == true)
+ {
+ for (auto const &D: Dsc)
+ ioprintf(std::cout, _("Fetch source %s\n"), D.Package.c_str());
+ return true;
+ }
+
+ // Just print out the uris an exit if the --print-uris flag was used
+ if (_config->FindB("APT::Get::Print-URIs") == true)
+ {
+ pkgAcquire::UriIterator I = Fetcher.UriBegin();
+ for (; I != Fetcher.UriEnd(); ++I)
+ std::cout << '\'' << I->URI << "' " << flNotDir(I->Owner->DestFile) << ' ' <<
+ std::to_string(I->Owner->FileSize) << ' ' << I->Owner->HashSum() << std::endl;
+ return true;
+ }
+
+ // check authentication status of the source as well
+ if (UntrustedList.empty() == false && AuthPrompt(UntrustedList, false) == false)
+ return false;
+
+ // Run it
+ bool Failed = false;
+ if (AcquireRun(Fetcher, 0, &Failed, NULL) == false || Failed == true)
+ return _error->Error(_("Failed to fetch some archives."));
+
+ if (diffOnly || tarOnly || dscOnly || _config->FindB("APT::Get::Download-only",false) == true)
+ {
+ c1out << _("Download complete and in download only mode") << std::endl;
+ return true;
+ }
+
+ bool const fixBroken = _config->FindB("APT::Get::Fix-Broken", false);
+ bool SaidCheckIfDpkgDev = false;
+ for (auto const &D: Dsc)
+ {
+ if (unlikely(D.Dsc.empty() == true))
+ continue;
+ std::string const Dir = D.Package + '-' + Cache.GetPkgCache()->VS->UpstreamVersion(D.Version.c_str());
+
+ // See if the package is already unpacked
+ struct stat Stat;
+ if (fixBroken == false && stat(Dir.c_str(),&Stat) == 0 &&
+ S_ISDIR(Stat.st_mode) != 0)
+ {
+ ioprintf(c0out ,_("Skipping unpack of already unpacked source in %s\n"),
+ Dir.c_str());
+ }
+ else
+ {
+ // Call dpkg-source
+ std::string const sourceopts = _config->Find("DPkg::Source-Options", "--no-check -x");
+ std::string S;
+ strprintf(S, "%s %s %s",
+ _config->Find("Dir::Bin::dpkg-source","dpkg-source").c_str(),
+ sourceopts.c_str(), D.Dsc.c_str());
+ if (system(S.c_str()) != 0)
+ {
+ _error->Error(_("Unpack command '%s' failed.\n"), S.c_str());
+ if (SaidCheckIfDpkgDev == false)
+ {
+ _error->Notice(_("Check if the 'dpkg-dev' package is installed.\n"));
+ SaidCheckIfDpkgDev = true;
+ }
+ continue;
+ }
+ }
+
+ // Try to compile it with dpkg-buildpackage
+ if (_config->FindB("APT::Get::Compile",false) == true)
+ {
+ std::string buildopts = _config->Find("APT::Get::Host-Architecture");
+ if (buildopts.empty() == false)
+ buildopts = "-a" + buildopts + " ";
+
+ // get all active build profiles
+ std::string const profiles = APT::Configuration::getBuildProfilesString();
+ if (profiles.empty() == false)
+ buildopts.append(" -P").append(profiles).append(" ");
+
+ buildopts.append(_config->Find("DPkg::Build-Options","-b -uc"));
+
+ // Call dpkg-buildpackage
+ std::string S;
+ strprintf(S, "cd %s && %s %s",
+ Dir.c_str(),
+ _config->Find("Dir::Bin::dpkg-buildpackage","dpkg-buildpackage").c_str(),
+ buildopts.c_str());
+
+ if (system(S.c_str()) != 0)
+ {
+ _error->Error(_("Build command '%s' failed.\n"), S.c_str());
+ continue;
+ }
+ }
+ }
+ return true;
+}
+ /*}}}*/
+// DoBuildDep - Install/removes packages to satisfy build dependencies /*{{{*/
+// ---------------------------------------------------------------------
+/* This function will look at the build depends list of the given source
+ package and install the necessary packages to make it true, or fail. */
+static std::vector<pkgSrcRecords::Parser::BuildDepRec> GetBuildDeps(pkgSrcRecords::Parser * const Last,
+ char const * const Src, bool const StripMultiArch, std::string const &hostArch)
+{
+ std::vector<pkgSrcRecords::Parser::BuildDepRec> BuildDeps;
+ // FIXME: Can't specify architecture to use for [wildcard] matching, so switch default arch temporary
+ if (hostArch.empty() == false)
+ {
+ std::string nativeArch = _config->Find("APT::Architecture");
+ _config->Set("APT::Architecture", hostArch);
+ bool Success = Last->BuildDepends(BuildDeps, _config->FindB("APT::Get::Arch-Only", false), StripMultiArch);
+ _config->Set("APT::Architecture", nativeArch);
+ if (Success == false)
+ {
+ _error->Error(_("Unable to get build-dependency information for %s"), Src);
+ return {};
+ }
+ }
+ else if (Last->BuildDepends(BuildDeps, _config->FindB("APT::Get::Arch-Only", false), StripMultiArch) == false)
+ {
+ _error->Error(_("Unable to get build-dependency information for %s"), Src);
+ return {};
+ }
+
+ if (BuildDeps.empty() == true)
+ ioprintf(c1out,_("%s has no build depends.\n"), Src);
+
+ return BuildDeps;
+}
+static void WriteBuildDependencyPackage(std::ostringstream &buildDepsPkgFile,
+ std::string const &PkgName, std::string const &Arch,
+ std::vector<pkgSrcRecords::Parser::BuildDepRec> const &Dependencies)
+{
+ buildDepsPkgFile << "Package: " << PkgName << "\n"
+ << "Architecture: " << Arch << "\n"
+ << "Version: 1\n";
+
+ bool const IndepOnly = _config->FindB("APT::Get::Indep-Only", false);
+ std::string depends, conflicts;
+ for (auto const &dep: Dependencies)
+ {
+ // ArchOnly is handled while parsing the dependencies on input
+ if (IndepOnly && (dep.Type == pkgSrcRecords::Parser::BuildDependArch ||
+ dep.Type == pkgSrcRecords::Parser::BuildConflictArch))
+ continue;
+ std::string * type;
+ if (dep.Type == pkgSrcRecords::Parser::BuildConflict ||
+ dep.Type == pkgSrcRecords::Parser::BuildConflictIndep ||
+ dep.Type == pkgSrcRecords::Parser::BuildConflictArch)
+ type = &conflicts;
+ else
+ type = &depends;
+
+ type->append(" ").append(dep.Package);
+ if (dep.Version.empty() == false)
+ type->append(" (").append(pkgCache::CompTypeDeb(dep.Op)).append(" ").append(dep.Version).append(")");
+ if ((dep.Op & pkgCache::Dep::Or) == pkgCache::Dep::Or)
+ {
+ type->append("\n |");
+ }
+ else
+ type->append(",\n");
+ }
+ if (depends.empty() == false)
+ buildDepsPkgFile << "Depends:\n" << depends;
+ if (conflicts.empty() == false)
+ buildDepsPkgFile << "Conflicts:\n" << conflicts;
+ buildDepsPkgFile << "\n";
+}
+bool DoBuildDep(CommandLine &CmdL)
+{
+ CacheFile Cache;
+ std::vector<std::string> VolatileCmdL;
+ Cache.GetSourceList()->AddVolatileFiles(CmdL, &VolatileCmdL);
+
+ _config->Set("APT::Install-Recommends", false);
+
+ if (CmdL.FileSize() <= 1 && VolatileCmdL.empty())
+ return _error->Error(_("Must specify at least one package to check builddeps for"));
+
+ bool StripMultiArch;
+ std::string hostArch = _config->Find("APT::Get::Host-Architecture");
+ if (hostArch.empty() == false)
+ {
+ std::vector<std::string> archs = APT::Configuration::getArchitectures();
+ if (std::find(archs.begin(), archs.end(), hostArch) == archs.end())
+ return _error->Error(_("No architecture information available for %s. See apt.conf(5) APT::Architectures for setup"), hostArch.c_str());
+ StripMultiArch = false;
+ }
+ else
+ StripMultiArch = true;
+
+ std::ostringstream buildDepsPkgFile;
+ std::vector<std::pair<std::string,std::string>> pseudoPkgs;
+ // deal with the build essentials first
+ {
+ std::vector<pkgSrcRecords::Parser::BuildDepRec> BuildDeps;
+ for (auto && opt: _config->FindVector("APT::Build-Essential"))
+ {
+ if (opt.empty())
+ continue;
+ pkgSrcRecords::Parser::BuildDepRec rec;
+ rec.Package = std::move(opt);
+ rec.Type = pkgSrcRecords::Parser::BuildDependIndep;
+ rec.Op = 0;
+ BuildDeps.push_back(rec);
+ }
+ std::string const pseudo = "builddeps:essentials";
+ std::string const nativeArch = _config->Find("APT::Architecture");
+ WriteBuildDependencyPackage(buildDepsPkgFile, pseudo, nativeArch, BuildDeps);
+ pseudoPkgs.emplace_back(pseudo, nativeArch);
+ }
+
+ // Read the source list
+ if (Cache.BuildSourceList() == false)
+ return false;
+ pkgSourceList *List = Cache.GetSourceList();
+ std::string const pseudoArch = hostArch.empty() ? _config->Find("APT::Architecture") : hostArch;
+
+ // FIXME: Avoid volatile sources == cmdline assumption
+ {
+ auto const VolatileSources = List->GetVolatileFiles();
+ if (VolatileSources.size() == VolatileCmdL.size())
+ {
+ for (size_t i = 0; i < VolatileSources.size(); ++i)
+ {
+ auto const Src = VolatileCmdL[i];
+ if (DirectoryExists(Src))
+ ioprintf(c1out, _("Note, using directory '%s' to get the build dependencies\n"), Src.c_str());
+ else
+ ioprintf(c1out, _("Note, using file '%s' to get the build dependencies\n"), Src.c_str());
+ std::unique_ptr<pkgSrcRecords::Parser> Last(VolatileSources[i]->CreateSrcParser());
+ if (Last == nullptr)
+ return _error->Error(_("Unable to find a source package for %s"), Src.c_str());
+
+ std::string const pseudo = std::string("builddeps:") + Src;
+ WriteBuildDependencyPackage(buildDepsPkgFile, pseudo, pseudoArch,
+ GetBuildDeps(Last.get(), Src.c_str(), StripMultiArch, hostArch));
+ pseudoPkgs.emplace_back(pseudo, pseudoArch);
+ }
+ }
+ else
+ return _error->Error("Implementation error: Volatile sources (%lu) and"
+ "commandline elements (%lu) do not match!", VolatileSources.size(),
+ VolatileCmdL.size());
+ }
+
+ bool const WantLock = _config->FindB("APT::Get::Print-URIs", false) == false;
+ if (CmdL.FileList[1] != 0)
+ {
+ if (Cache.BuildCaches(WantLock) == false)
+ return false;
+ // Create the text record parsers
+ pkgSrcRecords SrcRecs(*List);
+ if (_error->PendingError() == true)
+ return false;
+ for (const char **I = CmdL.FileList + 1; *I != 0; ++I)
+ {
+ std::string Src;
+ pkgSrcRecords::Parser * const Last = FindSrc(*I,SrcRecs,Src,Cache);
+ if (Last == nullptr)
+ return _error->Error(_("Unable to find a source package for %s"), *I);
+
+ std::string const pseudo = std::string("builddeps:") + Src;
+ WriteBuildDependencyPackage(buildDepsPkgFile, pseudo, pseudoArch,
+ GetBuildDeps(Last, Src.c_str(), StripMultiArch, hostArch));
+ pseudoPkgs.emplace_back(pseudo, pseudoArch);
+ }
+ }
+
+ Cache.AddIndexFile(new debStringPackageIndex(buildDepsPkgFile.str()));
+
+ if (Cache.Open(WantLock) == false)
+ return false;
+ pkgProblemResolver Fix(Cache.GetDepCache());
+
+ APT::PackageVector removeAgain;
+ {
+ pkgDepCache::ActionGroup group(Cache);
+ TryToInstall InstallAction(Cache, &Fix, false);
+ for (auto const &pkg: pseudoPkgs)
+ {
+ pkgCache::PkgIterator const Pkg = Cache->FindPkg(pkg.first, pkg.second);
+ if (Pkg.end())
+ continue;
+ Cache->SetCandidateVersion(Pkg.VersionList());
+ InstallAction(Cache[Pkg].CandidateVerIter(Cache));
+ removeAgain.push_back(Pkg);
+ }
+ InstallAction.doAutoInstall();
+
+ OpTextProgress Progress(*_config);
+ bool const resolver_fail = Fix.Resolve(true, &Progress);
+ if (resolver_fail == false && Cache->BrokenCount() == 0)
+ return false;
+ if (CheckNothingBroken(Cache) == false)
+ return false;
+ }
+ if (DoAutomaticRemove(Cache) == false)
+ return false;
+
+ {
+ pkgDepCache::ActionGroup group(Cache);
+ if (_config->FindB("APT::Get::Build-Dep-Automatic", false) == false)
+ {
+ for (auto const &pkg: removeAgain)
+ {
+ auto const instVer = Cache[pkg].InstVerIter(Cache);
+ if (unlikely(instVer.end() == true))
+ continue;
+ for (auto D = instVer.DependsList(); D.end() != true; ++D)
+ {
+ if (D->Type != pkgCache::Dep::Depends || D.IsMultiArchImplicit())
+ continue;
+ APT::VersionList verlist = APT::VersionList::FromDependency(Cache, D, APT::CacheSetHelper::CANDIDATE);
+ for (auto const &V : verlist)
+ {
+ auto const P = V.ParentPkg();
+ if (Cache[P].InstallVer != V)
+ continue;
+ Cache->MarkAuto(P, false);
+ }
+ }
+ }
+ }
+ for (auto const &pkg: removeAgain)
+ Cache->MarkDelete(pkg, false, 0, true);
+ }
+
+ pseudoPkgs.clear();
+ if (_error->PendingError() || InstallPackages(Cache, false, true) == false)
+ return _error->Error(_("Failed to process build dependencies"));
+ return true;
+}
+ /*}}}*/
diff --git a/apt-private/private-source.h b/apt-private/private-source.h
new file mode 100644
index 000000000..d00c53eb1
--- /dev/null
+++ b/apt-private/private-source.h
@@ -0,0 +1,11 @@
+#ifndef APT_PRIVATE_SOURCE_H
+#define APT_PRIVATE_SOURCE_H
+
+#include <apt-pkg/macros.h>
+
+class CommandLine;
+
+APT_PUBLIC bool DoSource(CommandLine &CmdL);
+APT_PUBLIC bool DoBuildDep(CommandLine &CmdL);
+
+#endif
diff --git a/apt-private/private-sources.cc b/apt-private/private-sources.cc
new file mode 100644
index 000000000..587571760
--- /dev/null
+++ b/apt-private/private-sources.cc
@@ -0,0 +1,105 @@
+#include <config.h>
+
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/cachefile.h>
+
+#include <apt-private/private-output.h>
+#include <apt-private/private-sources.h>
+#include <apt-private/private-utils.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stddef.h>
+#include <unistd.h>
+#include <iostream>
+#include <string>
+
+#include <apti18n.h>
+
+/* Interface discussion with donkult (for the future):
+ apt [add-{archive,release,component}|edit|change-release|disable]-sources
+ and be clever and work out stuff from the Release file
+*/
+
+// EditSource - EditSourcesList /*{{{*/
+class APT_HIDDEN ScopedGetLock {
+public:
+ int fd;
+ ScopedGetLock(std::string const &filename) : fd(GetLock(filename)) {}
+ ~ScopedGetLock() { close(fd); }
+};
+bool EditSources(CommandLine &CmdL)
+{
+ std::string sourceslist;
+ if (CmdL.FileList[1] != NULL)
+ {
+ sourceslist = _config->FindDir("Dir::Etc::sourceparts") + CmdL.FileList[1];
+ if (!APT::String::Endswith(sourceslist, ".list"))
+ sourceslist += ".list";
+ } else {
+ sourceslist = _config->FindFile("Dir::Etc::sourcelist");
+ }
+ HashString before;
+ if (FileExists(sourceslist))
+ before.FromFile(sourceslist);
+ else
+ {
+ FileFd filefd;
+ if (filefd.Open(sourceslist, FileFd::Create | FileFd::WriteOnly, FileFd::None, 0644) == false)
+ return false;
+ }
+
+ ScopedGetLock lock(sourceslist);
+ if (lock.fd < 0)
+ return false;
+
+ bool res;
+ bool file_changed = false;
+ do {
+ if (EditFileInSensibleEditor(sourceslist) == false)
+ return false;
+ if (before.empty())
+ {
+ struct stat St;
+ if (stat(sourceslist.c_str(), &St) == 0 && St.st_size == 0)
+ RemoveFile("edit-sources", sourceslist);
+ }
+ else if (FileExists(sourceslist) && !before.VerifyFile(sourceslist))
+ {
+ file_changed = true;
+ pkgCacheFile::RemoveCaches();
+ }
+ pkgCacheFile CacheFile;
+ res = CacheFile.BuildCaches(nullptr);
+ if (res == false || _error->empty(GlobalError::WARNING) == false) {
+ std::string outs;
+ strprintf(outs, _("Failed to parse %s. Edit again? "), sourceslist.c_str());
+ // FIXME: should we add a "restore previous" option here?
+ if (YnPrompt(outs.c_str(), true) == false)
+ {
+ if (res == false && _error->PendingError() == false)
+ {
+ CacheFile.Close();
+ pkgCacheFile::RemoveCaches();
+ res = CacheFile.BuildCaches(nullptr);
+ }
+ break;
+ }
+ }
+ } while (res == false);
+
+ if (res == true && file_changed == true)
+ {
+ ioprintf(
+ std::cout, _("Your '%s' file changed, please run 'apt-get update'."),
+ sourceslist.c_str());
+ }
+ return res;
+}
+ /*}}}*/
diff --git a/apt-private/private-sources.h b/apt-private/private-sources.h
new file mode 100644
index 000000000..0c421902e
--- /dev/null
+++ b/apt-private/private-sources.h
@@ -0,0 +1,10 @@
+#ifndef APT_PRIVATE_SOURCES_H
+#define APT_PRIVATE_SOURCES_H
+
+#include <apt-pkg/macros.h>
+
+class CommandLine;
+
+APT_PUBLIC bool EditSources(CommandLine &CmdL);
+
+#endif
diff --git a/apt-private/private-unmet.cc b/apt-private/private-unmet.cc
new file mode 100644
index 000000000..51ace3f47
--- /dev/null
+++ b/apt-private/private-unmet.cc
@@ -0,0 +1,120 @@
+// -*- mode: cpp; mode: fold -*-
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/strutl.h>
+
+#include <apt-private/private-cacheset.h>
+#include <apt-private/private-unmet.h>
+
+#include <stddef.h>
+
+#include <iostream>
+
+#include <apti18n.h>
+ /*}}}*/
+
+// UnMet - Show unmet dependencies /*{{{*/
+static bool ShowUnMet(pkgCache::VerIterator const &V, bool const Important)
+{
+ bool Header = false;
+ for (pkgCache::DepIterator D = V.DependsList(); D.end() == false;)
+ {
+ // Collect or groups
+ pkgCache::DepIterator Start;
+ pkgCache::DepIterator End;
+ D.GlobOr(Start,End);
+
+ // Important deps only
+ if (Important == true)
+ if (End->Type != pkgCache::Dep::PreDepends &&
+ End->Type != pkgCache::Dep::Depends)
+ continue;
+
+ // Skip conflicts and replaces
+ if (End.IsNegative() == true || End->Type == pkgCache::Dep::Replaces)
+ continue;
+
+ // Verify the or group
+ bool OK = false;
+ pkgCache::DepIterator RealStart = Start;
+ do
+ {
+ // See if this dep is Ok
+ pkgCache::Version **VList = Start.AllTargets();
+ if (*VList != 0)
+ {
+ OK = true;
+ delete [] VList;
+ break;
+ }
+ delete [] VList;
+
+ if (Start == End)
+ break;
+ ++Start;
+ }
+ while (1);
+
+ // The group is OK
+ if (OK == true)
+ continue;
+
+ // Oops, it failed..
+ if (Header == false)
+ ioprintf(std::cout,_("Package %s version %s has an unmet dep:\n"),
+ V.ParentPkg().FullName(true).c_str(),V.VerStr());
+ Header = true;
+
+ // Print out the dep type
+ std::cout << " " << End.DepType() << ": ";
+
+ // Show the group
+ Start = RealStart;
+ do
+ {
+ std::cout << Start.TargetPkg().FullName(true);
+ if (Start.TargetVer() != 0)
+ std::cout << " (" << Start.CompType() << " " << Start.TargetVer() <<
+ ")";
+ if (Start == End)
+ break;
+ std::cout << " | ";
+ ++Start;
+ }
+ while (1);
+
+ std::cout << std::endl;
+ }
+ return true;
+}
+bool UnMet(CommandLine &CmdL)
+{
+ bool const Important = _config->FindB("APT::Cache::Important",false);
+
+ pkgCacheFile CacheFile;
+ if (unlikely(CacheFile.GetPkgCache() == NULL))
+ return false;
+
+ if (CmdL.FileSize() <= 1)
+ {
+ for (pkgCache::PkgIterator P = CacheFile.GetPkgCache()->PkgBegin(); P.end() == false; ++P)
+ for (pkgCache::VerIterator V = P.VersionList(); V.end() == false; ++V)
+ if (ShowUnMet(V, Important) == false)
+ return false;
+ }
+ else
+ {
+ CacheSetHelperVirtuals helper(true, GlobalError::NOTICE);
+ APT::VersionList verset = APT::VersionList::FromCommandLine(CacheFile, CmdL.FileList + 1,
+ APT::CacheSetHelper::CANDIDATE, helper);
+ for (APT::VersionList::iterator V = verset.begin(); V != verset.end(); ++V)
+ if (ShowUnMet(V, Important) == false)
+ return false;
+ }
+ return true;
+}
+ /*}}}*/
diff --git a/apt-private/private-unmet.h b/apt-private/private-unmet.h
new file mode 100644
index 000000000..31c2c17f3
--- /dev/null
+++ b/apt-private/private-unmet.h
@@ -0,0 +1,10 @@
+#ifndef APT_PRIVATE_UNMET_H
+#define APT_PRIVATE_UNMET_H
+
+#include <apt-pkg/macros.h>
+
+class CommandLine;
+
+APT_PUBLIC bool UnMet(CommandLine &CmdL);
+
+#endif
diff --git a/apt-private/private-update.cc b/apt-private/private-update.cc
new file mode 100644
index 000000000..a886c830f
--- /dev/null
+++ b/apt-private/private-update.cc
@@ -0,0 +1,106 @@
+// Include files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/acquire-item.h>
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/update.h>
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/configuration.h>
+
+#include <apt-private/acqprogress.h>
+#include <apt-private/private-cachefile.h>
+#include <apt-private/private-download.h>
+#include <apt-private/private-output.h>
+#include <apt-private/private-update.h>
+
+#include <ostream>
+#include <string>
+
+#include <apti18n.h>
+ /*}}}*/
+
+// DoUpdate - Update the package lists /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool DoUpdate(CommandLine &CmdL)
+{
+ if (CmdL.FileSize() != 1)
+ return _error->Error(_("The update command takes no arguments"));
+
+ CacheFile Cache;
+
+ // Get the source list
+ if (Cache.BuildSourceList() == false)
+ return false;
+ pkgSourceList *List = Cache.GetSourceList();
+
+ // Just print out the uris an exit if the --print-uris flag was used
+ if (_config->FindB("APT::Get::Print-URIs") == true)
+ {
+ // force a hashsum for compatibility reasons
+ _config->CndSet("Acquire::ForceHash", "md5sum");
+
+ // Populate it with the source selection and get all Indexes
+ // (GetAll=true)
+ aptAcquireWithTextStatus Fetcher;
+ if (List->GetIndexes(&Fetcher,true) == false)
+ return false;
+
+ std::string compExt = APT::Configuration::getCompressionTypes()[0];
+ pkgAcquire::UriIterator I = Fetcher.UriBegin();
+ for (; I != Fetcher.UriEnd(); ++I)
+ {
+ std::string FileName = flNotDir(I->Owner->DestFile);
+ if(compExt.empty() == false &&
+ APT::String::Endswith(FileName, compExt))
+ FileName = FileName.substr(0, FileName.size() - compExt.size() - 1);
+ c1out << '\'' << I->URI << "' " << FileName << ' ' <<
+ std::to_string(I->Owner->FileSize) << ' ' << I->Owner->HashSum() << std::endl;
+ }
+ return true;
+ }
+
+ // do the work
+ if (_config->FindB("APT::Get::Download",true) == true)
+ {
+ AcqTextStatus Stat(std::cout, ScreenWidth,_config->FindI("quiet",0));
+ ListUpdate(Stat, *List);
+ }
+
+ if (_config->FindB("pkgCacheFile::Generate", true) == false)
+ return true;
+
+ // Rebuild the cache.
+ pkgCacheFile::RemoveCaches();
+ if (Cache.BuildCaches(false) == false)
+ return false;
+
+ // show basic stats (if the user whishes)
+ if (_config->FindB("APT::Cmd::Show-Update-Stats", false) == true)
+ {
+ int upgradable = 0;
+ if (Cache.Open(false) == false)
+ return false;
+ for (pkgCache::PkgIterator I = Cache->PkgBegin(); I.end() != true; ++I)
+ {
+ pkgDepCache::StateCache &state = Cache[I];
+ if (I->CurrentVer != 0 && state.Upgradable() && state.CandidateVer != NULL)
+ upgradable++;
+ }
+ const char *msg = P_(
+ "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n",
+ "%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n",
+ upgradable);
+ if (upgradable == 0)
+ c1out << _("All packages are up to date.") << std::endl;
+ else
+ ioprintf(c1out, msg, upgradable);
+ }
+
+ return true;
+}
+ /*}}}*/
diff --git a/apt-private/private-update.h b/apt-private/private-update.h
new file mode 100644
index 000000000..e584f70cf
--- /dev/null
+++ b/apt-private/private-update.h
@@ -0,0 +1,10 @@
+#ifndef APT_PRIVATE_UPDATE_H
+#define APT_PRIVATE_UPDATE_H
+
+#include <apt-pkg/macros.h>
+
+class CommandLine;
+
+APT_PUBLIC bool DoUpdate(CommandLine &CmdL);
+
+#endif
diff --git a/apt-private/private-upgrade.cc b/apt-private/private-upgrade.cc
new file mode 100644
index 000000000..679140bfd
--- /dev/null
+++ b/apt-private/private-upgrade.cc
@@ -0,0 +1,67 @@
+// Includes /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/upgrade.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+
+#include <apt-private/private-install.h>
+#include <apt-private/private-cachefile.h>
+#include <apt-private/private-upgrade.h>
+#include <apt-private/private-output.h>
+
+#include <iostream>
+
+#include <apti18n.h>
+ /*}}}*/
+
+// this is actually performing the various upgrade operations
+static bool UpgradeHelper(CommandLine &CmdL, int UpgradeFlags)
+{
+ CacheFile Cache;
+ std::vector<std::string> VolatileCmdL;
+ Cache.GetSourceList()->AddVolatileFiles(CmdL, &VolatileCmdL);
+
+ if (Cache.OpenForInstall() == false || Cache.CheckDeps() == false)
+ return false;
+
+ if(!DoCacheManipulationFromCommandLine(CmdL, VolatileCmdL, Cache, UpgradeFlags))
+ return false;
+
+ return InstallPackages(Cache,true);
+}
+
+// DoDistUpgrade - Automatic smart upgrader /*{{{*/
+// ---------------------------------------------------------------------
+/* Intelligent upgrader that will install and remove packages at will */
+bool DoDistUpgrade(CommandLine &CmdL)
+{
+ return UpgradeHelper(CmdL, APT::Upgrade::ALLOW_EVERYTHING);
+}
+ /*}}}*/
+bool DoUpgrade(CommandLine &CmdL) /*{{{*/
+{
+ if (_config->FindB("APT::Get::Upgrade-Allow-New", false) == true)
+ return DoUpgradeWithAllowNewPackages(CmdL);
+ else
+ return DoUpgradeNoNewPackages(CmdL);
+}
+ /*}}}*/
+// DoUpgradeNoNewPackages - Upgrade all packages /*{{{*/
+// ---------------------------------------------------------------------
+/* Upgrade all packages without installing new packages or erasing old
+ packages */
+bool DoUpgradeNoNewPackages(CommandLine &CmdL)
+{
+ // Do the upgrade
+ return UpgradeHelper(CmdL,
+ APT::Upgrade::FORBID_REMOVE_PACKAGES|
+ APT::Upgrade::FORBID_INSTALL_NEW_PACKAGES);
+}
+ /*}}}*/
+// DoSafeUpgrade - Upgrade all packages with install but not remove /*{{{*/
+bool DoUpgradeWithAllowNewPackages(CommandLine &CmdL)
+{
+ return UpgradeHelper(CmdL, APT::Upgrade::FORBID_REMOVE_PACKAGES);
+}
+ /*}}}*/
diff --git a/apt-private/private-upgrade.h b/apt-private/private-upgrade.h
new file mode 100644
index 000000000..16bb93c9b
--- /dev/null
+++ b/apt-private/private-upgrade.h
@@ -0,0 +1,13 @@
+#ifndef APTPRIVATE_PRIVATE_UPGRADE_H
+#define APTPRIVATE_PRIVATE_UPGRADE_H
+
+#include <apt-pkg/macros.h>
+
+class CommandLine;
+
+APT_PUBLIC bool DoDistUpgrade(CommandLine &CmdL);
+APT_PUBLIC bool DoUpgrade(CommandLine &CmdL);
+bool DoUpgradeNoNewPackages(CommandLine &CmdL);
+bool DoUpgradeWithAllowNewPackages(CommandLine &CmdL);
+
+#endif
diff --git a/apt-private/private-utils.cc b/apt-private/private-utils.cc
new file mode 100644
index 000000000..5863925b9
--- /dev/null
+++ b/apt-private/private-utils.cc
@@ -0,0 +1,98 @@
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+
+#include <apt-private/private-utils.h>
+
+#include <cstdlib>
+#include <sstream>
+#include <unistd.h>
+
+// DisplayFileInPager - Display File with pager /*{{{*/
+bool DisplayFileInPager(std::string const &filename)
+{
+ pid_t Process = ExecFork();
+ if (Process == 0)
+ {
+ const char *Args[3];
+ Args[1] = filename.c_str();
+ Args[2] = NULL;
+ if (isatty(STDOUT_FILENO) == 1)
+ {
+ // likely installed, provided by sensible-utils
+ std::string const pager = _config->Find("Dir::Bin::Pager",
+ "sensible-pager");
+ Args[0] = pager.c_str();
+ execvp(Args[0],(char **)Args);
+ // lets try some obvious alternatives
+ Args[0] = getenv("PAGER");
+ if (Args[0] != NULL)
+ execvp(Args[0],(char **)Args);
+
+ Args[0] = "pager";
+ execvp(Args[0],(char **)Args);
+ }
+ // we could read the file ourselves, but… meh
+ Args[0] = "cat";
+ execvp(Args[0],(char **)Args);
+ exit(100);
+ }
+
+ // Wait for the subprocess
+ return ExecWait(Process, "pager", false);
+}
+ /*}}}*/
+// EditFileInSensibleEditor - Edit File with editor /*{{{*/
+bool EditFileInSensibleEditor(std::string const &filename)
+{
+ pid_t Process = ExecFork();
+ if (Process == 0)
+ {
+ // likely installed, provided by sensible-utils
+ std::string const editor = _config->Find("Dir::Bin::Editor",
+ "sensible-editor");
+ const char *Args[3];
+ Args[0] = editor.c_str();
+ Args[1] = filename.c_str();
+ Args[2] = NULL;
+ execvp(Args[0],(char **)Args);
+ // the usual suspects we can try as an alternative
+ Args[0] = getenv("VISUAL");
+ if (Args[0] != NULL)
+ execvp(Args[0],(char **)Args);
+
+ Args[0] = getenv("EDITOR");
+ if (Args[0] != NULL)
+ execvp(Args[0],(char **)Args);
+
+ Args[0] = "editor";
+ execvp(Args[0],(char **)Args);
+ exit(100);
+ }
+
+ // Wait for the subprocess
+ return ExecWait(Process, "editor", false);
+}
+ /*}}}*/
+time_t GetSecondsSinceEpoch() /*{{{*/
+{
+ auto const source_date_epoch = getenv("SOURCE_DATE_EPOCH");
+ if (source_date_epoch == nullptr)
+ return time(nullptr);
+
+ time_t epoch;
+ std::stringstream ss(source_date_epoch);
+ ss >> epoch;
+
+ if (ss.fail() || !ss.eof())
+ {
+ _error->Warning("Environment variable SOURCE_DATE_EPOCH was ignored as it has an invalid value: \"%s\"",
+ source_date_epoch);
+ return time(nullptr);
+ }
+
+ return epoch;
+}
+ /*}}}*/
diff --git a/apt-private/private-utils.h b/apt-private/private-utils.h
new file mode 100644
index 000000000..4d48bd1ba
--- /dev/null
+++ b/apt-private/private-utils.h
@@ -0,0 +1,10 @@
+#ifndef APT_PRIVATE_UTILS_H
+#define APT_PRIVATE_UTILS_H
+
+#include <string>
+
+bool DisplayFileInPager(std::string const &filename);
+bool EditFileInSensibleEditor(std::string const &filename);
+time_t GetSecondsSinceEpoch();
+
+#endif
diff --git a/cmdline/CMakeLists.txt b/cmdline/CMakeLists.txt
new file mode 100644
index 000000000..8977b45d1
--- /dev/null
+++ b/cmdline/CMakeLists.txt
@@ -0,0 +1,59 @@
+# Create the executable tasks
+add_executable(apt apt.cc)
+add_executable(apt-cache apt-cache.cc)
+add_executable(apt-get apt-get.cc)
+add_executable(apt-mark apt-mark.cc)
+add_executable(apt-config apt-config.cc)
+add_executable(apt-cdrom apt-cdrom.cc)
+add_executable(apt-helper apt-helper.cc)
+add_executable(apt-sortpkgs apt-sortpkgs.cc)
+add_executable(apt-extracttemplates apt-extracttemplates.cc)
+add_executable(apt-internal-solver apt-internal-solver.cc)
+add_executable(apt-dump-solver apt-dump-solver.cc)
+add_executable(apt-internal-planner apt-internal-planner.cc)
+add_vendor_file(OUTPUT apt-key
+ INPUT apt-key.in
+ MODE 755
+ VARIABLES keyring-filename
+ keyring-removed-filename
+ keyring-master-filename
+ keyring-uri keyring-package)
+
+
+# Link the executables against the libraries
+target_link_libraries(apt apt-pkg apt-private)
+target_link_libraries(apt-cache apt-pkg apt-private)
+target_link_libraries(apt-get apt-pkg apt-private)
+target_link_libraries(apt-config apt-pkg apt-private)
+target_link_libraries(apt-cdrom apt-pkg apt-private)
+target_link_libraries(apt-helper apt-pkg apt-private)
+target_link_libraries(apt-mark apt-pkg apt-private)
+target_link_libraries(apt-sortpkgs apt-pkg apt-private)
+target_link_libraries(apt-extracttemplates apt-pkg apt-inst apt-private)
+target_link_libraries(apt-internal-solver apt-pkg apt-inst apt-private)
+target_link_libraries(apt-dump-solver apt-pkg apt-inst apt-private)
+target_link_libraries(apt-internal-planner apt-pkg apt-inst apt-private)
+
+set_target_properties(apt-dump-solver
+ PROPERTIES RUNTIME_OUTPUT_DIRECTORY solvers
+ RUNTIME_OUTPUT_NAME dump)
+set_target_properties(apt-internal-solver
+ PROPERTIES RUNTIME_OUTPUT_DIRECTORY solvers
+ RUNTIME_OUTPUT_NAME apt)
+set_target_properties(apt-internal-planner
+ PROPERTIES RUNTIME_OUTPUT_DIRECTORY planners
+ RUNTIME_OUTPUT_NAME apt)
+
+# Install the executables
+install(TARGETS apt apt-cache apt-get apt-config apt-cdrom apt-mark apt-sortpkgs
+ apt-extracttemplates
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+
+install(TARGETS apt-helper RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/apt/)
+install(TARGETS apt-dump-solver apt-internal-solver RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/apt/solvers)
+install(TARGETS apt-internal-planner RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/apt/planners)
+
+add_slaves(${CMAKE_INSTALL_LIBEXECDIR}/apt/planners ../solvers/dump planners/dump)
+
+# Install the not-to-be-compiled programs
+INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/apt-key DESTINATION ${CMAKE_INSTALL_BINDIR})
diff --git a/cmdline/apt-cache.cc b/cmdline/apt-cache.cc
new file mode 100644
index 000000000..0d7425c48
--- /dev/null
+++ b/cmdline/apt-cache.cc
@@ -0,0 +1,1156 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: apt-cache.cc,v 1.72 2004/04/30 04:34:03 mdz Exp $
+/* ######################################################################
+
+ apt-cache - Manages the cache files
+
+ apt-cache provides some functions fo manipulating the cache files.
+ It uses the command line interface common to all the APT tools.
+
+ Returns 100 on failure, 0 on success.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/algorithms.h>
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/init.h>
+#include <apt-pkg/metaindex.h>
+#include <apt-pkg/pkgrecords.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/policy.h>
+#include <apt-pkg/progress.h>
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/sptr.h>
+#include <apt-pkg/srcrecords.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/version.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/macros.h>
+#include <apt-pkg/mmap.h>
+#include <apt-pkg/pkgcache.h>
+
+#include <apt-private/private-cacheset.h>
+#include <apt-private/private-cmndline.h>
+#include <apt-private/private-depends.h>
+#include <apt-private/private-show.h>
+#include <apt-private/private-search.h>
+#include <apt-private/private-unmet.h>
+#include <apt-private/private-main.h>
+
+#include <regex.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <algorithm>
+#include <cstring>
+#include <iomanip>
+#include <iostream>
+#include <list>
+#include <map>
+#include <set>
+#include <string>
+#include <vector>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+// DumpPackage - Show a dump of a package record /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static bool DumpPackage(CommandLine &CmdL)
+{
+ pkgCacheFile CacheFile;
+ APT::CacheSetHelper helper(true, GlobalError::NOTICE);
+ APT::PackageList pkgset = APT::PackageList::FromCommandLine(CacheFile, CmdL.FileList + 1, helper);
+
+ for (APT::PackageList::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
+ {
+ cout << "Package: " << Pkg.FullName(true) << endl;
+ cout << "Versions: " << endl;
+ for (pkgCache::VerIterator Cur = Pkg.VersionList(); Cur.end() != true; ++Cur)
+ {
+ cout << Cur.VerStr();
+ for (pkgCache::VerFileIterator Vf = Cur.FileList(); Vf.end() == false; ++Vf)
+ cout << " (" << Vf.File().FileName() << ")";
+ cout << endl;
+ for (pkgCache::DescIterator D = Cur.DescriptionList(); D.end() == false; ++D)
+ {
+ cout << " Description Language: " << D.LanguageCode() << endl
+ << " File: " << D.FileList().File().FileName() << endl
+ << " MD5: " << D.md5() << endl;
+ }
+ cout << endl;
+ }
+
+ cout << endl;
+
+ cout << "Reverse Depends: " << endl;
+ for (pkgCache::DepIterator D = Pkg.RevDependsList(); D.end() != true; ++D)
+ {
+ cout << " " << D.ParentPkg().FullName(true) << ',' << D.TargetPkg().FullName(true);
+ if (D->Version != 0)
+ cout << ' ' << DeNull(D.TargetVer()) << endl;
+ else
+ cout << endl;
+ }
+
+ cout << "Dependencies: " << endl;
+ for (pkgCache::VerIterator Cur = Pkg.VersionList(); Cur.end() != true; ++Cur)
+ {
+ cout << Cur.VerStr() << " - ";
+ for (pkgCache::DepIterator Dep = Cur.DependsList(); Dep.end() != true; ++Dep)
+ cout << Dep.TargetPkg().FullName(true) << " (" << (int)Dep->CompareOp << " " << DeNull(Dep.TargetVer()) << ") ";
+ cout << endl;
+ }
+
+ cout << "Provides: " << endl;
+ for (pkgCache::VerIterator Cur = Pkg.VersionList(); Cur.end() != true; ++Cur)
+ {
+ cout << Cur.VerStr() << " - ";
+ for (pkgCache::PrvIterator Prv = Cur.ProvidesList(); Prv.end() != true; ++Prv)
+ cout << Prv.ParentPkg().FullName(true) << " (= " << (Prv->ProvideVersion == 0 ? "" : Prv.ProvideVersion()) << ") ";
+ cout << endl;
+ }
+ cout << "Reverse Provides: " << endl;
+ for (pkgCache::PrvIterator Prv = Pkg.ProvidesList(); Prv.end() != true; ++Prv)
+ cout << Prv.OwnerPkg().FullName(true) << " " << Prv.OwnerVer().VerStr() << " (= " << (Prv->ProvideVersion == 0 ? "" : Prv.ProvideVersion()) << ")"<< endl;
+ }
+
+ return true;
+}
+ /*}}}*/
+// ShowHashTableStats - Show stats about a hashtable /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static map_pointer_t PackageNext(pkgCache::Package const * const P) { return P->NextPackage; }
+static map_pointer_t GroupNext(pkgCache::Group const * const G) { return G->Next; }
+template<class T>
+static void ShowHashTableStats(std::string Type,
+ T *StartP,
+ map_pointer_t *Hashtable,
+ unsigned long Size,
+ map_pointer_t(*Next)(T const * const))
+{
+ // hashtable stats for the HashTable
+ unsigned long NumBuckets = Size;
+ unsigned long UsedBuckets = 0;
+ unsigned long UnusedBuckets = 0;
+ unsigned long LongestBucket = 0;
+ unsigned long ShortestBucket = NumBuckets;
+ unsigned long Entries = 0;
+ for (unsigned int i=0; i < NumBuckets; ++i)
+ {
+ T *P = StartP + Hashtable[i];
+ if(P == 0 || P == StartP)
+ {
+ ++UnusedBuckets;
+ continue;
+ }
+ ++UsedBuckets;
+ unsigned long ThisBucketSize = 0;
+ for (; P != StartP; P = StartP + Next(P))
+ ++ThisBucketSize;
+ Entries += ThisBucketSize;
+ LongestBucket = std::max(ThisBucketSize, LongestBucket);
+ ShortestBucket = std::min(ThisBucketSize, ShortestBucket);
+ }
+ cout << "Total buckets in " << Type << ": " << NumBuckets << std::endl;
+ cout << " Unused: " << UnusedBuckets << std::endl;
+ cout << " Used: " << UsedBuckets << std::endl;
+ cout << " Utilization: " << 100.0 * UsedBuckets/NumBuckets << "%" << std::endl;
+ cout << " Average entries: " << Entries/(double)UsedBuckets << std::endl;
+ cout << " Longest: " << LongestBucket << std::endl;
+ cout << " Shortest: " << ShortestBucket << std::endl;
+}
+ /*}}}*/
+// Stats - Dump some nice statistics /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static bool Stats(CommandLine &CmdL)
+{
+ if (CmdL.FileSize() > 1) {
+ _error->Error(_("apt-cache stats does not take any arguments"));
+ return false;
+ }
+
+ pkgCacheFile CacheFile;
+ pkgCache *Cache = CacheFile.GetPkgCache();
+
+ if (unlikely(Cache == NULL))
+ return false;
+
+ cout << _("Total package names: ") << Cache->Head().GroupCount << " (" <<
+ SizeToStr(Cache->Head().GroupCount*Cache->Head().GroupSz) << ')' << endl
+ << _("Total package structures: ") << Cache->Head().PackageCount << " (" <<
+ SizeToStr(Cache->Head().PackageCount*Cache->Head().PackageSz) << ')' << endl;
+
+ int Normal = 0;
+ int Virtual = 0;
+ int NVirt = 0;
+ int DVirt = 0;
+ int Missing = 0;
+ pkgCache::PkgIterator I = Cache->PkgBegin();
+ for (;I.end() != true; ++I)
+ {
+ if (I->VersionList != 0 && I->ProvidesList == 0)
+ {
+ Normal++;
+ continue;
+ }
+
+ if (I->VersionList != 0 && I->ProvidesList != 0)
+ {
+ NVirt++;
+ continue;
+ }
+
+ if (I->VersionList == 0 && I->ProvidesList != 0)
+ {
+ // Only 1 provides
+ if (I.ProvidesList()->NextProvides == 0)
+ {
+ DVirt++;
+ }
+ else
+ Virtual++;
+ continue;
+ }
+ if (I->VersionList == 0 && I->ProvidesList == 0)
+ {
+ Missing++;
+ continue;
+ }
+ }
+ cout << _(" Normal packages: ") << Normal << endl;
+ cout << _(" Pure virtual packages: ") << Virtual << endl;
+ cout << _(" Single virtual packages: ") << DVirt << endl;
+ cout << _(" Mixed virtual packages: ") << NVirt << endl;
+ cout << _(" Missing: ") << Missing << endl;
+
+ cout << _("Total distinct versions: ") << Cache->Head().VersionCount << " (" <<
+ SizeToStr(Cache->Head().VersionCount*Cache->Head().VersionSz) << ')' << endl;
+ cout << _("Total distinct descriptions: ") << Cache->Head().DescriptionCount << " (" <<
+ SizeToStr(Cache->Head().DescriptionCount*Cache->Head().DescriptionSz) << ')' << endl;
+ cout << _("Total dependencies: ") << Cache->Head().DependsCount << "/" << Cache->Head().DependsDataCount << " (" <<
+ SizeToStr((Cache->Head().DependsCount*Cache->Head().DependencySz) +
+ (Cache->Head().DependsDataCount*Cache->Head().DependencyDataSz)) << ')' << endl;
+ cout << _("Total ver/file relations: ") << Cache->Head().VerFileCount << " (" <<
+ SizeToStr(Cache->Head().VerFileCount*Cache->Head().VerFileSz) << ')' << endl;
+ cout << _("Total Desc/File relations: ") << Cache->Head().DescFileCount << " (" <<
+ SizeToStr(Cache->Head().DescFileCount*Cache->Head().DescFileSz) << ')' << endl;
+ cout << _("Total Provides mappings: ") << Cache->Head().ProvidesCount << " (" <<
+ SizeToStr(Cache->Head().ProvidesCount*Cache->Head().ProvidesSz) << ')' << endl;
+
+ // String list stats
+ std::set<map_stringitem_t> stritems;
+ for (pkgCache::GrpIterator G = Cache->GrpBegin(); G.end() == false; ++G)
+ stritems.insert(G->Name);
+ for (pkgCache::PkgIterator P = Cache->PkgBegin(); P.end() == false; ++P)
+ {
+ stritems.insert(P->Arch);
+ for (pkgCache::VerIterator V = P.VersionList(); V.end() == false; ++V)
+ {
+ if (V->VerStr != 0)
+ stritems.insert(V->VerStr);
+ if (V->Section != 0)
+ stritems.insert(V->Section);
+ stritems.insert(V->SourcePkgName);
+ stritems.insert(V->SourceVerStr);
+ for (pkgCache::DepIterator D = V.DependsList(); D.end() == false; ++D)
+ {
+ if (D->Version != 0)
+ stritems.insert(D->Version);
+ }
+ for (pkgCache::DescIterator D = V.DescriptionList(); D.end() == false; ++D)
+ {
+ stritems.insert(D->md5sum);
+ stritems.insert(D->language_code);
+ }
+ }
+ for (pkgCache::PrvIterator Prv = P.ProvidesList(); Prv.end() == false; ++Prv)
+ {
+ if (Prv->ProvideVersion != 0)
+ stritems.insert(Prv->ProvideVersion);
+ }
+ }
+ for (pkgCache::RlsFileIterator F = Cache->RlsFileBegin(); F != Cache->RlsFileEnd(); ++F)
+ {
+ stritems.insert(F->FileName);
+ stritems.insert(F->Archive);
+ stritems.insert(F->Codename);
+ stritems.insert(F->Version);
+ stritems.insert(F->Origin);
+ stritems.insert(F->Label);
+ stritems.insert(F->Site);
+ }
+ for (pkgCache::PkgFileIterator F = Cache->FileBegin(); F != Cache->FileEnd(); ++F)
+ {
+ stritems.insert(F->FileName);
+ stritems.insert(F->Architecture);
+ stritems.insert(F->Component);
+ stritems.insert(F->IndexType);
+ }
+
+ unsigned long Size = 0;
+ for (std::set<map_stringitem_t>::const_iterator i = stritems.begin(); i != stritems.end(); ++i)
+ Size += strlen(Cache->StrP + *i) + 1;
+ cout << _("Total globbed strings: ") << stritems.size() << " (" << SizeToStr(Size) << ')' << endl;
+ stritems.clear();
+
+ unsigned long Slack = 0;
+ for (int I = 0; I != 7; I++)
+ Slack += Cache->Head().Pools[I].ItemSize*Cache->Head().Pools[I].Count;
+ cout << _("Total slack space: ") << SizeToStr(Slack) << endl;
+
+ unsigned long Total = 0;
+#define APT_CACHESIZE(X,Y) (Cache->Head().X * Cache->Head().Y)
+ Total = Slack + Size +
+ APT_CACHESIZE(GroupCount, GroupSz) +
+ APT_CACHESIZE(PackageCount, PackageSz) +
+ APT_CACHESIZE(VersionCount, VersionSz) +
+ APT_CACHESIZE(DescriptionCount, DescriptionSz) +
+ APT_CACHESIZE(DependsCount, DependencySz) +
+ APT_CACHESIZE(DependsDataCount, DependencyDataSz) +
+ APT_CACHESIZE(ReleaseFileCount, ReleaseFileSz) +
+ APT_CACHESIZE(PackageFileCount, PackageFileSz) +
+ APT_CACHESIZE(VerFileCount, VerFileSz) +
+ APT_CACHESIZE(DescFileCount, DescFileSz) +
+ APT_CACHESIZE(ProvidesCount, ProvidesSz) +
+ (2 * Cache->Head().GetHashTableSize() * sizeof(map_id_t));
+ cout << _("Total space accounted for: ") << SizeToStr(Total) << endl;
+#undef APT_CACHESIZE
+
+ // hashtable stats
+ ShowHashTableStats<pkgCache::Package>("PkgHashTable", Cache->PkgP, Cache->Head().PkgHashTableP(), Cache->Head().GetHashTableSize(), PackageNext);
+ ShowHashTableStats<pkgCache::Group>("GrpHashTable", Cache->GrpP, Cache->Head().GrpHashTableP(), Cache->Head().GetHashTableSize(), GroupNext);
+
+ return true;
+}
+ /*}}}*/
+// Dump - show everything /*{{{*/
+// ---------------------------------------------------------------------
+/* This is worthless except fer debugging things */
+static bool Dump(CommandLine &)
+{
+ pkgCacheFile CacheFile;
+ pkgCache *Cache = CacheFile.GetPkgCache();
+ if (unlikely(Cache == NULL))
+ return false;
+
+ std::cout << "Using Versioning System: " << Cache->VS->Label << std::endl;
+
+ for (pkgCache::PkgIterator P = Cache->PkgBegin(); P.end() == false; ++P)
+ {
+ std::cout << "Package: " << P.FullName(true) << std::endl;
+ for (pkgCache::VerIterator V = P.VersionList(); V.end() == false; ++V)
+ {
+ std::cout << " Version: " << V.VerStr() << std::endl;
+ std::cout << " File: " << V.FileList().File().FileName() << std::endl;
+ for (pkgCache::DepIterator D = V.DependsList(); D.end() == false; ++D)
+ std::cout << " Depends: " << D.TargetPkg().FullName(true) << ' ' <<
+ DeNull(D.TargetVer()) << std::endl;
+ for (pkgCache::DescIterator D = V.DescriptionList(); D.end() == false; ++D)
+ {
+ std::cout << " Description Language: " << D.LanguageCode() << std::endl
+ << " File: " << D.FileList().File().FileName() << std::endl
+ << " MD5: " << D.md5() << std::endl;
+ }
+ }
+ }
+
+ for (pkgCache::PkgFileIterator F = Cache->FileBegin(); F.end() == false; ++F)
+ {
+ std::cout << "File: " << F.FileName() << std::endl;
+ std::cout << " Type: " << F.IndexType() << std::endl;
+ std::cout << " Size: " << F->Size << std::endl;
+ std::cout << " ID: " << F->ID << std::endl;
+ std::cout << " Flags: " << F->Flags << std::endl;
+ std::cout << " Time: " << TimeRFC1123(F->mtime, true) << std::endl;
+ std::cout << " Archive: " << DeNull(F.Archive()) << std::endl;
+ std::cout << " Component: " << DeNull(F.Component()) << std::endl;
+ std::cout << " Version: " << DeNull(F.Version()) << std::endl;
+ std::cout << " Origin: " << DeNull(F.Origin()) << std::endl;
+ std::cout << " Site: " << DeNull(F.Site()) << std::endl;
+ std::cout << " Label: " << DeNull(F.Label()) << std::endl;
+ std::cout << " Architecture: " << DeNull(F.Architecture()) << std::endl;
+ }
+
+ return true;
+}
+ /*}}}*/
+// DumpAvail - Print out the available list /*{{{*/
+// ---------------------------------------------------------------------
+/* This is needed to make dpkg --merge happy.. I spent a bit of time to
+ make this run really fast, perhaps I went a little overboard.. */
+static bool DumpAvail(CommandLine &)
+{
+ pkgCacheFile CacheFile;
+ pkgCache *Cache = CacheFile.GetPkgCache();
+ if (unlikely(Cache == NULL || CacheFile.BuildPolicy() == false))
+ return false;
+
+ unsigned long Count = Cache->HeaderP->PackageCount+1;
+ pkgCache::VerFile **VFList = new pkgCache::VerFile *[Count];
+ memset(VFList,0,sizeof(*VFList)*Count);
+
+ // Map versions that we want to write out onto the VerList array.
+ for (pkgCache::PkgIterator P = Cache->PkgBegin(); P.end() == false; ++P)
+ {
+ if (P->VersionList == 0)
+ continue;
+
+ /* Find the proper version to use. If the policy says there are no
+ possible selections we return the installed version, if available..
+ This prevents dselect from making it obsolete. */
+ pkgCache::VerIterator V = CacheFile.GetPolicy()->GetCandidateVer(P);
+ if (V.end() == true)
+ {
+ if (P->CurrentVer == 0)
+ continue;
+ V = P.CurrentVer();
+ }
+
+ pkgCache::VerFileIterator VF = V.FileList();
+ for (; VF.end() == false ; ++VF)
+ if ((VF.File()->Flags & pkgCache::Flag::NotSource) == 0)
+ break;
+
+ /* Okay, here we have a bit of a problem.. The policy has selected the
+ currently installed package - however it only exists in the
+ status file.. We need to write out something or dselect will mark
+ the package as obsolete! Thus we emit the status file entry, but
+ below we remove the status line to make it valid for the
+ available file. However! We only do this if their do exist *any*
+ non-source versions of the package - that way the dselect obsolete
+ handling works OK. */
+ if (VF.end() == true)
+ {
+ for (pkgCache::VerIterator Cur = P.VersionList(); Cur.end() != true; ++Cur)
+ {
+ for (VF = Cur.FileList(); VF.end() == false; ++VF)
+ {
+ if ((VF.File()->Flags & pkgCache::Flag::NotSource) == 0)
+ {
+ VF = V.FileList();
+ break;
+ }
+ }
+
+ if (VF.end() == false)
+ break;
+ }
+ }
+
+ VFList[P->ID] = VF;
+ }
+
+ LocalitySort(VFList,Count,sizeof(*VFList));
+
+ std::vector<pkgTagSection::Tag> RW;
+ RW.push_back(pkgTagSection::Tag::Remove("Status"));
+ RW.push_back(pkgTagSection::Tag::Remove("Config-Version"));
+ FileFd stdoutfd;
+ stdoutfd.OpenDescriptor(STDOUT_FILENO, FileFd::WriteOnly, false);
+
+ // Iterate over all the package files and write them out.
+ char *Buffer = new char[Cache->HeaderP->MaxVerFileSize+10];
+ for (pkgCache::VerFile **J = VFList; *J != 0;)
+ {
+ pkgCache::PkgFileIterator File(*Cache,(*J)->File + Cache->PkgFileP);
+ if (File.IsOk() == false)
+ {
+ _error->Error(_("Package file %s is out of sync."),File.FileName());
+ break;
+ }
+
+ FileFd PkgF(File.FileName(),FileFd::ReadOnly, FileFd::Extension);
+ if (_error->PendingError() == true)
+ break;
+
+ /* Write all of the records from this package file, since we
+ already did locality sorting we can now just seek through the
+ file in read order. We apply 1 more optimization here, since often
+ there will be < 1 byte gaps between records (for the \n) we read that
+ into the next buffer and offset a bit.. */
+ unsigned long Pos = 0;
+ for (; *J != 0; J++)
+ {
+ if ((*J)->File + Cache->PkgFileP != File)
+ break;
+
+ const pkgCache::VerFile &VF = **J;
+
+ // Read the record and then write it out again.
+ unsigned long Jitter = VF.Offset - Pos;
+ if (Jitter > 8)
+ {
+ if (PkgF.Seek(VF.Offset) == false)
+ break;
+ Jitter = 0;
+ }
+
+ if (PkgF.Read(Buffer,VF.Size + Jitter) == false)
+ break;
+ Buffer[VF.Size + Jitter] = '\n';
+
+ // See above..
+ if ((File->Flags & pkgCache::Flag::NotSource) == pkgCache::Flag::NotSource)
+ {
+ pkgTagSection Tags;
+ if (Tags.Scan(Buffer+Jitter,VF.Size+1) == false ||
+ Tags.Write(stdoutfd, NULL, RW) == false ||
+ stdoutfd.Write("\n", 1) == false)
+ {
+ _error->Error("Internal Error, Unable to parse a package record");
+ break;
+ }
+ }
+ else
+ {
+ if (stdoutfd.Write(Buffer + Jitter, VF.Size + 1) == false)
+ break;
+ }
+
+ Pos = VF.Offset + VF.Size;
+ }
+
+ if (_error->PendingError() == true)
+ break;
+ }
+
+ delete [] Buffer;
+ delete [] VFList;
+ return !_error->PendingError();
+}
+ /*}}}*/
+// xvcg - Generate a graph for xvcg /*{{{*/
+// ---------------------------------------------------------------------
+// Code contributed from Junichi Uekawa <dancer@debian.org> on 20 June 2002.
+
+static bool XVcg(CommandLine &CmdL)
+{
+ pkgCacheFile CacheFile;
+ pkgCache *Cache = CacheFile.GetPkgCache();
+ if (unlikely(Cache == NULL))
+ return false;
+
+ bool GivenOnly = _config->FindB("APT::Cache::GivenOnly",false);
+
+ /* Normal packages are boxes
+ Pure Provides are triangles
+ Mixed are diamonds
+ rhomb are missing packages*/
+ const char *Shapes[] = {"ellipse","triangle","box","rhomb"};
+
+ /* Initialize the list of packages to show.
+ 1 = To Show
+ 2 = To Show no recurse
+ 3 = Emitted no recurse
+ 4 = Emitted
+ 0 = None */
+ enum States {None=0, ToShow, ToShowNR, DoneNR, Done};
+ enum TheFlags {ForceNR=(1<<0)};
+ unsigned char *Show = new unsigned char[Cache->Head().PackageCount];
+ unsigned char *Flags = new unsigned char[Cache->Head().PackageCount];
+ unsigned char *ShapeMap = new unsigned char[Cache->Head().PackageCount];
+
+ // Show everything if no arguments given
+ if (CmdL.FileList[1] == 0)
+ for (unsigned long I = 0; I != Cache->Head().PackageCount; I++)
+ Show[I] = ToShow;
+ else
+ for (unsigned long I = 0; I != Cache->Head().PackageCount; I++)
+ Show[I] = None;
+ memset(Flags,0,sizeof(*Flags)*Cache->Head().PackageCount);
+
+ // Map the shapes
+ for (pkgCache::PkgIterator Pkg = Cache->PkgBegin(); Pkg.end() == false; ++Pkg)
+ {
+ if (Pkg->VersionList == 0)
+ {
+ // Missing
+ if (Pkg->ProvidesList == 0)
+ ShapeMap[Pkg->ID] = 0;
+ else
+ ShapeMap[Pkg->ID] = 1;
+ }
+ else
+ {
+ // Normal
+ if (Pkg->ProvidesList == 0)
+ ShapeMap[Pkg->ID] = 2;
+ else
+ ShapeMap[Pkg->ID] = 3;
+ }
+ }
+
+ // Load the list of packages from the command line into the show list
+ APT::CacheSetHelper helper(true, GlobalError::NOTICE);
+ std::list<APT::CacheSetHelper::PkgModifier> mods;
+ mods.push_back(APT::CacheSetHelper::PkgModifier(0, ",", APT::PackageSet::Modifier::POSTFIX));
+ mods.push_back(APT::CacheSetHelper::PkgModifier(1, "^", APT::PackageSet::Modifier::POSTFIX));
+ std::map<unsigned short, APT::PackageSet> pkgsets =
+ APT::PackageSet::GroupedFromCommandLine(CacheFile, CmdL.FileList + 1, mods, 0, helper);
+
+ for (APT::PackageSet::const_iterator Pkg = pkgsets[0].begin();
+ Pkg != pkgsets[0].end(); ++Pkg)
+ Show[Pkg->ID] = ToShow;
+ for (APT::PackageSet::const_iterator Pkg = pkgsets[1].begin();
+ Pkg != pkgsets[1].end(); ++Pkg)
+ {
+ Show[Pkg->ID] = ToShow;
+ Flags[Pkg->ID] |= ForceNR;
+ }
+
+ // Little header
+ cout << "graph: { title: \"packages\"" << endl <<
+ "xmax: 700 ymax: 700 x: 30 y: 30" << endl <<
+ "layout_downfactor: 8" << endl;
+
+ bool Act = true;
+ while (Act == true)
+ {
+ Act = false;
+ for (pkgCache::PkgIterator Pkg = Cache->PkgBegin(); Pkg.end() == false; ++Pkg)
+ {
+ // See we need to show this package
+ if (Show[Pkg->ID] == None || Show[Pkg->ID] >= DoneNR)
+ continue;
+
+ //printf ("node: { title: \"%s\" label: \"%s\" }\n", Pkg.Name(), Pkg.Name());
+
+ // Colour as done
+ if (Show[Pkg->ID] == ToShowNR || (Flags[Pkg->ID] & ForceNR) == ForceNR)
+ {
+ // Pure Provides and missing packages have no deps!
+ if (ShapeMap[Pkg->ID] == 0 || ShapeMap[Pkg->ID] == 1)
+ Show[Pkg->ID] = Done;
+ else
+ Show[Pkg->ID] = DoneNR;
+ }
+ else
+ Show[Pkg->ID] = Done;
+ Act = true;
+
+ // No deps to map out
+ if (Pkg->VersionList == 0 || Show[Pkg->ID] == DoneNR)
+ continue;
+
+ pkgCache::VerIterator Ver = Pkg.VersionList();
+ for (pkgCache::DepIterator D = Ver.DependsList(); D.end() == false; ++D)
+ {
+ // See if anything can meet this dep
+ // Walk along the actual package providing versions
+ bool Hit = false;
+ pkgCache::PkgIterator DPkg = D.TargetPkg();
+ for (pkgCache::VerIterator I = DPkg.VersionList();
+ I.end() == false && Hit == false; ++I)
+ {
+ if (Cache->VS->CheckDep(I.VerStr(),D->CompareOp,D.TargetVer()) == true)
+ Hit = true;
+ }
+
+ // Follow all provides
+ for (pkgCache::PrvIterator I = DPkg.ProvidesList();
+ I.end() == false && Hit == false; ++I)
+ {
+ if (Cache->VS->CheckDep(I.ProvideVersion(),D->CompareOp,D.TargetVer()) == false)
+ Hit = true;
+ }
+
+
+ // Only graph critical deps
+ if (D.IsCritical() == true)
+ {
+ printf ("edge: { sourcename: \"%s\" targetname: \"%s\" class: 2 ",Pkg.FullName(true).c_str(), D.TargetPkg().FullName(true).c_str() );
+
+ // Colour the node for recursion
+ if (Show[D.TargetPkg()->ID] <= DoneNR)
+ {
+ /* If a conflicts does not meet anything in the database
+ then show the relation but do not recurse */
+ if (Hit == false && D.IsNegative() == true)
+ {
+ if (Show[D.TargetPkg()->ID] == None &&
+ Show[D.TargetPkg()->ID] != ToShow)
+ Show[D.TargetPkg()->ID] = ToShowNR;
+ }
+ else
+ {
+ if (GivenOnly == true && Show[D.TargetPkg()->ID] != ToShow)
+ Show[D.TargetPkg()->ID] = ToShowNR;
+ else
+ Show[D.TargetPkg()->ID] = ToShow;
+ }
+ }
+
+ // Edge colour
+ switch(D->Type)
+ {
+ case pkgCache::Dep::Conflicts:
+ printf("label: \"conflicts\" color: lightgreen }\n");
+ break;
+ case pkgCache::Dep::DpkgBreaks:
+ printf("label: \"breaks\" color: lightgreen }\n");
+ break;
+ case pkgCache::Dep::Obsoletes:
+ printf("label: \"obsoletes\" color: lightgreen }\n");
+ break;
+
+ case pkgCache::Dep::PreDepends:
+ printf("label: \"predepends\" color: blue }\n");
+ break;
+
+ default:
+ printf("}\n");
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ /* Draw the box colours after the fact since we can not tell what colour
+ they should be until everything is finished drawing */
+ for (pkgCache::PkgIterator Pkg = Cache->PkgBegin(); Pkg.end() == false; ++Pkg)
+ {
+ if (Show[Pkg->ID] < DoneNR)
+ continue;
+
+ if (Show[Pkg->ID] == DoneNR)
+ printf("node: { title: \"%s\" label: \"%s\" color: orange shape: %s }\n", Pkg.FullName(true).c_str(), Pkg.FullName(true).c_str(),
+ Shapes[ShapeMap[Pkg->ID]]);
+ else
+ printf("node: { title: \"%s\" label: \"%s\" shape: %s }\n", Pkg.FullName(true).c_str(), Pkg.FullName(true).c_str(),
+ Shapes[ShapeMap[Pkg->ID]]);
+
+ }
+
+ delete[] Show;
+ delete[] Flags;
+ delete[] ShapeMap;
+
+ printf("}\n");
+ return true;
+}
+ /*}}}*/
+// Dotty - Generate a graph for Dotty /*{{{*/
+// ---------------------------------------------------------------------
+/* Dotty is the graphvis program for generating graphs. It is a fairly
+ simple queuing algorithm that just writes dependencies and nodes.
+ http://www.research.att.com/sw/tools/graphviz/ */
+static bool Dotty(CommandLine &CmdL)
+{
+ pkgCacheFile CacheFile;
+ pkgCache *Cache = CacheFile.GetPkgCache();
+ if (unlikely(Cache == NULL))
+ return false;
+
+ bool GivenOnly = _config->FindB("APT::Cache::GivenOnly",false);
+
+ /* Normal packages are boxes
+ Pure Provides are triangles
+ Mixed are diamonds
+ Hexagons are missing packages*/
+ const char *Shapes[] = {"hexagon","triangle","box","diamond"};
+
+ /* Initialize the list of packages to show.
+ 1 = To Show
+ 2 = To Show no recurse
+ 3 = Emitted no recurse
+ 4 = Emitted
+ 0 = None */
+ enum States {None=0, ToShow, ToShowNR, DoneNR, Done};
+ enum TheFlags {ForceNR=(1<<0)};
+ unsigned char *Show = new unsigned char[Cache->Head().PackageCount];
+ unsigned char *Flags = new unsigned char[Cache->Head().PackageCount];
+ unsigned char *ShapeMap = new unsigned char[Cache->Head().PackageCount];
+
+ // Show everything if no arguments given
+ if (CmdL.FileList[1] == 0)
+ for (unsigned long I = 0; I != Cache->Head().PackageCount; I++)
+ Show[I] = ToShow;
+ else
+ for (unsigned long I = 0; I != Cache->Head().PackageCount; I++)
+ Show[I] = None;
+ memset(Flags,0,sizeof(*Flags)*Cache->Head().PackageCount);
+
+ // Map the shapes
+ for (pkgCache::PkgIterator Pkg = Cache->PkgBegin(); Pkg.end() == false; ++Pkg)
+ {
+ if (Pkg->VersionList == 0)
+ {
+ // Missing
+ if (Pkg->ProvidesList == 0)
+ ShapeMap[Pkg->ID] = 0;
+ else
+ ShapeMap[Pkg->ID] = 1;
+ }
+ else
+ {
+ // Normal
+ if (Pkg->ProvidesList == 0)
+ ShapeMap[Pkg->ID] = 2;
+ else
+ ShapeMap[Pkg->ID] = 3;
+ }
+ }
+
+ // Load the list of packages from the command line into the show list
+ APT::CacheSetHelper helper(true, GlobalError::NOTICE);
+ std::list<APT::CacheSetHelper::PkgModifier> mods;
+ mods.push_back(APT::CacheSetHelper::PkgModifier(0, ",", APT::PackageSet::Modifier::POSTFIX));
+ mods.push_back(APT::CacheSetHelper::PkgModifier(1, "^", APT::PackageSet::Modifier::POSTFIX));
+ std::map<unsigned short, APT::PackageSet> pkgsets =
+ APT::PackageSet::GroupedFromCommandLine(CacheFile, CmdL.FileList + 1, mods, 0, helper);
+
+ for (APT::PackageSet::const_iterator Pkg = pkgsets[0].begin();
+ Pkg != pkgsets[0].end(); ++Pkg)
+ Show[Pkg->ID] = ToShow;
+ for (APT::PackageSet::const_iterator Pkg = pkgsets[1].begin();
+ Pkg != pkgsets[1].end(); ++Pkg)
+ {
+ Show[Pkg->ID] = ToShow;
+ Flags[Pkg->ID] |= ForceNR;
+ }
+
+ // Little header
+ printf("digraph packages {\n");
+ printf("concentrate=true;\n");
+ printf("size=\"30,40\";\n");
+
+ bool Act = true;
+ while (Act == true)
+ {
+ Act = false;
+ for (pkgCache::PkgIterator Pkg = Cache->PkgBegin(); Pkg.end() == false; ++Pkg)
+ {
+ // See we need to show this package
+ if (Show[Pkg->ID] == None || Show[Pkg->ID] >= DoneNR)
+ continue;
+
+ // Colour as done
+ if (Show[Pkg->ID] == ToShowNR || (Flags[Pkg->ID] & ForceNR) == ForceNR)
+ {
+ // Pure Provides and missing packages have no deps!
+ if (ShapeMap[Pkg->ID] == 0 || ShapeMap[Pkg->ID] == 1)
+ Show[Pkg->ID] = Done;
+ else
+ Show[Pkg->ID] = DoneNR;
+ }
+ else
+ Show[Pkg->ID] = Done;
+ Act = true;
+
+ // No deps to map out
+ if (Pkg->VersionList == 0 || Show[Pkg->ID] == DoneNR)
+ continue;
+
+ pkgCache::VerIterator Ver = Pkg.VersionList();
+ for (pkgCache::DepIterator D = Ver.DependsList(); D.end() == false; ++D)
+ {
+ // See if anything can meet this dep
+ // Walk along the actual package providing versions
+ bool Hit = false;
+ pkgCache::PkgIterator DPkg = D.TargetPkg();
+ for (pkgCache::VerIterator I = DPkg.VersionList();
+ I.end() == false && Hit == false; ++I)
+ {
+ if (Cache->VS->CheckDep(I.VerStr(),D->CompareOp,D.TargetVer()) == true)
+ Hit = true;
+ }
+
+ // Follow all provides
+ for (pkgCache::PrvIterator I = DPkg.ProvidesList();
+ I.end() == false && Hit == false; ++I)
+ {
+ if (Cache->VS->CheckDep(I.ProvideVersion(),D->CompareOp,D.TargetVer()) == false)
+ Hit = true;
+ }
+
+ // Only graph critical deps
+ if (D.IsCritical() == true)
+ {
+ printf("\"%s\" -> \"%s\"",Pkg.FullName(true).c_str(),D.TargetPkg().FullName(true).c_str());
+
+ // Colour the node for recursion
+ if (Show[D.TargetPkg()->ID] <= DoneNR)
+ {
+ /* If a conflicts does not meet anything in the database
+ then show the relation but do not recurse */
+ if (Hit == false && D.IsNegative() == true)
+ {
+ if (Show[D.TargetPkg()->ID] == None &&
+ Show[D.TargetPkg()->ID] != ToShow)
+ Show[D.TargetPkg()->ID] = ToShowNR;
+ }
+ else
+ {
+ if (GivenOnly == true && Show[D.TargetPkg()->ID] != ToShow)
+ Show[D.TargetPkg()->ID] = ToShowNR;
+ else
+ Show[D.TargetPkg()->ID] = ToShow;
+ }
+ }
+
+ // Edge colour
+ switch(D->Type)
+ {
+ case pkgCache::Dep::Conflicts:
+ case pkgCache::Dep::Obsoletes:
+ case pkgCache::Dep::DpkgBreaks:
+ printf("[color=springgreen];\n");
+ break;
+
+ case pkgCache::Dep::PreDepends:
+ printf("[color=blue];\n");
+ break;
+
+ default:
+ printf(";\n");
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ /* Draw the box colours after the fact since we can not tell what colour
+ they should be until everything is finished drawing */
+ for (pkgCache::PkgIterator Pkg = Cache->PkgBegin(); Pkg.end() == false; ++Pkg)
+ {
+ if (Show[Pkg->ID] < DoneNR)
+ continue;
+
+ // Orange box for early recursion stoppage
+ if (Show[Pkg->ID] == DoneNR)
+ printf("\"%s\" [color=orange,shape=%s];\n",Pkg.FullName(true).c_str(),
+ Shapes[ShapeMap[Pkg->ID]]);
+ else
+ printf("\"%s\" [shape=%s];\n",Pkg.FullName(true).c_str(),
+ Shapes[ShapeMap[Pkg->ID]]);
+ }
+
+ printf("}\n");
+ delete[] Show;
+ delete[] Flags;
+ delete[] ShapeMap;
+ return true;
+}
+ /*}}}*/
+/* ShowAuto - show automatically installed packages (sorted) {{{*/
+static bool ShowAuto(CommandLine &)
+{
+ pkgCacheFile CacheFile;
+ pkgCache *Cache = CacheFile.GetPkgCache();
+ pkgDepCache *DepCache = CacheFile.GetDepCache();
+ if (unlikely(Cache == NULL || DepCache == NULL))
+ return false;
+
+ std::vector<string> packages;
+ packages.reserve(Cache->HeaderP->PackageCount / 3);
+
+ for (pkgCache::PkgIterator P = Cache->PkgBegin(); P.end() == false; ++P)
+ if ((*DepCache)[P].Flags & pkgCache::Flag::Auto)
+ packages.push_back(P.Name());
+
+ std::sort(packages.begin(), packages.end());
+
+ for (vector<string>::iterator I = packages.begin(); I != packages.end(); ++I)
+ cout << *I << "\n";
+
+ _error->Notice(_("This command is deprecated. Please use 'apt-mark showauto' instead."));
+ return true;
+}
+ /*}}}*/
+// ShowPkgNames - Show package names /*{{{*/
+// ---------------------------------------------------------------------
+/* This does a prefix match on the first argument */
+static bool ShowPkgNames(CommandLine &CmdL)
+{
+ pkgCacheFile CacheFile;
+ if (unlikely(CacheFile.BuildCaches(NULL, false) == false))
+ return false;
+ pkgCache::GrpIterator I = CacheFile.GetPkgCache()->GrpBegin();
+ bool const All = _config->FindB("APT::Cache::AllNames","false");
+
+ if (CmdL.FileList[1] != 0)
+ {
+ for (;I.end() != true; ++I)
+ {
+ if (All == false && I->FirstPackage == 0)
+ continue;
+ if (I.FindPkg("any")->VersionList == 0)
+ continue;
+ if (strncmp(I.Name(),CmdL.FileList[1],strlen(CmdL.FileList[1])) == 0)
+ cout << I.Name() << endl;
+ }
+
+ return true;
+ }
+
+ // Show all pkgs
+ for (;I.end() != true; ++I)
+ {
+ if (All == false && I->FirstPackage == 0)
+ continue;
+ if (I.FindPkg("any")->VersionList == 0)
+ continue;
+ cout << I.Name() << endl;
+ }
+
+ return true;
+}
+ /*}}}*/
+// Madison - Look a bit like katie's madison /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static bool Madison(CommandLine &CmdL)
+{
+ pkgCacheFile CacheFile;
+ pkgSourceList *SrcList = CacheFile.GetSourceList();
+
+ if (SrcList == 0)
+ return false;
+
+ // Create the src text record parsers and ignore errors about missing
+ // deb-src lines that are generated from pkgSrcRecords::pkgSrcRecords
+ pkgSrcRecords SrcRecs(*SrcList);
+ if (_error->PendingError() == true)
+ _error->Discard();
+
+ APT::CacheSetHelper helper(true, GlobalError::NOTICE);
+ for (const char **I = CmdL.FileList + 1; *I != 0; I++)
+ {
+ _error->PushToStack();
+ APT::PackageList pkgset = APT::PackageList::FromString(CacheFile, *I, helper);
+ for (APT::PackageList::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
+ {
+ for (pkgCache::VerIterator V = Pkg.VersionList(); V.end() == false; ++V)
+ {
+ for (pkgCache::VerFileIterator VF = V.FileList(); VF.end() == false; ++VF)
+ {
+// This might be nice, but wouldn't uniquely identify the source -mdz
+// if (VF.File().Archive() != 0)
+// {
+// cout << setw(10) << Pkg.Name() << " | " << setw(10) << V.VerStr() << " | "
+// << VF.File().Archive() << endl;
+// }
+
+ // Locate the associated index files so we can derive a description
+ for (pkgSourceList::const_iterator S = SrcList->begin(); S != SrcList->end(); ++S)
+ {
+ vector<pkgIndexFile *> *Indexes = (*S)->GetIndexFiles();
+ for (vector<pkgIndexFile *>::const_iterator IF = Indexes->begin();
+ IF != Indexes->end(); ++IF)
+ {
+ if ((*IF)->FindInCache(*(VF.File().Cache())) == VF.File())
+ {
+ cout << setw(10) << Pkg.FullName(true) << " | " << setw(10) << V.VerStr() << " | "
+ << (*IF)->Describe(true) << endl;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ SrcRecs.Restart();
+ pkgSrcRecords::Parser *SrcParser;
+ bool foundSomething = false;
+ while ((SrcParser = SrcRecs.Find(*I, false)) != 0)
+ {
+ foundSomething = true;
+ // Maybe support Release info here too eventually
+ cout << setw(10) << SrcParser->Package() << " | "
+ << setw(10) << SrcParser->Version() << " | "
+ << SrcParser->Index().Describe(true) << endl;
+ }
+ if (foundSomething == true)
+ _error->RevertToStack();
+ else
+ _error->MergeWithStack();
+ }
+
+ return true;
+}
+ /*}}}*/
+// GenCaches - Call the main cache generator /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static bool GenCaches(CommandLine &)
+{
+ OpTextProgress Progress(*_config);
+
+ pkgCacheFile CacheFile;
+ return CacheFile.BuildCaches(&Progress, true);
+}
+ /*}}}*/
+static bool ShowHelp(CommandLine &) /*{{{*/
+{
+ std::cout <<
+ _("Usage: apt-cache [options] command\n"
+ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+ "\n"
+ "apt-cache queries and displays available information about installed\n"
+ "and installable packages. It works exclusively on the data acquired\n"
+ "into the local cache via the 'update' command of e.g. apt-get. The\n"
+ "displayed information may therefore be outdated if the last update was\n"
+ "too long ago, but in exchange apt-cache works independently of the\n"
+ "availability of the configured sources (e.g. offline).\n");
+ return true;
+}
+ /*}}}*/
+static std::vector<aptDispatchWithHelp> GetCommands() /*{{{*/
+{
+ return {
+ {"gencaches",&GenCaches, nullptr},
+ {"showsrc",&ShowSrcPackage, _("Show source records")},
+ {"showpkg",&DumpPackage, nullptr},
+ {"stats",&Stats, nullptr},
+ {"dump",&Dump, nullptr},
+ {"dumpavail",&DumpAvail, nullptr},
+ {"unmet",&UnMet, nullptr},
+ {"search",&DoSearch, _("Search the package list for a regex pattern")},
+ {"depends",&Depends, _("Show raw dependency information for a package")},
+ {"rdepends",&RDepends, _("Show reverse dependency information for a package")},
+ {"dotty",&Dotty, nullptr},
+ {"xvcg",&XVcg, nullptr},
+ {"show",&ShowPackage, _("Show a readable record for the package")},
+ {"pkgnames",&ShowPkgNames, _("List the names of all packages in the system")},
+ {"showauto",&ShowAuto, nullptr},
+ {"policy",&Policy, _("Show policy settings")},
+ {"madison",&Madison, nullptr},
+ {nullptr, nullptr, nullptr}
+ };
+}
+ /*}}}*/
+int main(int argc,const char *argv[]) /*{{{*/
+{
+ // Parse the command line and initialize the package library
+ CommandLine CmdL;
+ auto const Cmds = ParseCommandLine(CmdL, APT_CMD::APT_CACHE, &_config, &_system, argc, argv, &ShowHelp, &GetCommands);
+
+ InitOutput();
+
+ if (_config->Exists("APT::Cache::Generate") == true)
+ _config->Set("pkgCacheFile::Generate", _config->FindB("APT::Cache::Generate", true));
+
+ return DispatchCommandLine(CmdL, Cmds);
+}
+ /*}}}*/
diff --git a/cmdline/apt-cdrom.cc b/cmdline/apt-cdrom.cc
new file mode 100644
index 000000000..bac808a41
--- /dev/null
+++ b/cmdline/apt-cdrom.cc
@@ -0,0 +1,236 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: apt-cdrom.cc,v 1.45 2003/11/19 23:50:51 mdz Exp $
+/* ######################################################################
+
+ APT CDROM - Tool for handling APT's CDROM database.
+
+ Currently the only option is 'add' which will take the current CD
+ in the drive and add it into the database.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/init.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/progress.h>
+#include <apt-pkg/cdromutl.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/cdrom.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/pkgsystem.h>
+
+#include <iostream>
+#include <vector>
+#include <string>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <apt-private/private-cmndline.h>
+#include <apt-private/private-output.h>
+#include <apt-private/private-main.h>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+class pkgCdromTextStatus : public pkgCdromStatus /*{{{*/
+{
+protected:
+ OpTextProgress Progress;
+ void Prompt(const char *Text);
+ string PromptLine(const char *Text);
+ bool AskCdromName(string &name) APT_OVERRIDE;
+
+public:
+ virtual void Update(string text, int current) APT_OVERRIDE;
+ virtual bool ChangeCdrom() APT_OVERRIDE;
+ virtual OpProgress* GetOpProgress() APT_OVERRIDE;
+};
+
+void pkgCdromTextStatus::Prompt(const char *Text)
+{
+ char C;
+ cout << Text << ' ' << flush;
+ if (read(STDIN_FILENO,&C,1) < 0)
+ _error->Errno("pkgCdromTextStatus::Prompt",
+ "Failed to read from standard input (not a terminal?)");
+ if (C != '\n')
+ cout << endl;
+}
+
+string pkgCdromTextStatus::PromptLine(const char *Text)
+{
+ cout << Text << ':' << endl;
+
+ string Res;
+ getline(cin,Res);
+ return Res;
+}
+
+bool pkgCdromTextStatus::AskCdromName(string &name)
+{
+ cout << _("Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'") << flush;
+ name = PromptLine("");
+
+ return true;
+}
+
+
+void pkgCdromTextStatus::Update(string text, int /*current*/)
+{
+ if(text.size() > 0)
+ cout << text << flush;
+}
+
+bool pkgCdromTextStatus::ChangeCdrom()
+{
+ Prompt(_("Please insert a Disc in the drive and press [Enter]"));
+ return true;
+}
+
+APT_CONST OpProgress* pkgCdromTextStatus::GetOpProgress()
+{
+ return &Progress;
+}
+ /*}}}*/
+// AddOrIdent - Add or Ident a CDROM /*{{{*/
+static bool AddOrIdent(bool const Add)
+{
+ pkgUdevCdromDevices UdevCdroms;
+ pkgCdromTextStatus log;
+ pkgCdrom cdrom;
+
+ bool oneSuccessful = false;
+ bool AutoDetect = _config->FindB("Acquire::cdrom::AutoDetect", true);
+ if (AutoDetect == true && UdevCdroms.Dlopen() == true)
+ {
+ bool const Debug = _config->FindB("Debug::Acquire::cdrom", false);
+ std::string const CDMount = _config->Find("Acquire::cdrom::mount");
+ bool const NoMount = _config->FindB("APT::CDROM::NoMount", false);
+ if (NoMount == false)
+ _config->Set("APT::CDROM::NoMount", true);
+
+ vector<struct CdromDevice> const v = UdevCdroms.Scan();
+ for (std::vector<struct CdromDevice>::const_iterator cd = v.begin(); cd != v.end(); ++cd)
+ {
+ if (Debug)
+ clog << "Looking at device:"
+ << "\tDeviveName: '" << cd->DeviceName << "'"
+ << "\tIsMounted: '" << cd->Mounted << "'"
+ << "\tMountPoint: '" << cd->MountPath << "'"
+ << endl;
+
+ std::string AptMountPoint;
+ if (cd->Mounted)
+ _config->Set("Acquire::cdrom::mount", cd->MountPath);
+ else if (NoMount == true)
+ continue;
+ else
+ {
+ AptMountPoint = _config->FindDir("Dir::Media::MountPath");
+ if (FileExists(AptMountPoint) == false)
+ mkdir(AptMountPoint.c_str(), 0750);
+ if(MountCdrom(AptMountPoint, cd->DeviceName) == false)
+ {
+ _error->Warning(_("Failed to mount '%s' to '%s'"), cd->DeviceName.c_str(), AptMountPoint.c_str());
+ continue;
+ }
+ _config->Set("Acquire::cdrom::mount", AptMountPoint);
+ }
+
+ _error->PushToStack();
+ if (Add == true)
+ oneSuccessful = cdrom.Add(&log);
+ else
+ {
+ std::string id;
+ oneSuccessful = cdrom.Ident(id, &log);
+ }
+ _error->MergeWithStack();
+
+ if (AptMountPoint.empty() == false)
+ UnmountCdrom(AptMountPoint);
+ }
+ if (NoMount == false)
+ _config->Set("APT::CDROM::NoMount", NoMount);
+ _config->Set("Acquire::cdrom::mount", CDMount);
+ }
+
+ // fallback if auto-detect didn't work
+ if (oneSuccessful == false)
+ {
+ _error->PushToStack();
+ if (Add == true)
+ oneSuccessful = cdrom.Add(&log);
+ else
+ {
+ std::string id;
+ oneSuccessful = cdrom.Ident(id, &log);
+ }
+ _error->MergeWithStack();
+ }
+
+ if (oneSuccessful == false)
+ _error->Error("%s", _("No CD-ROM could be auto-detected or found using the default mount point.\n"
+ "You may try the --cdrom option to set the CD-ROM mount point.\n"
+ "See 'man apt-cdrom' for more information about the CD-ROM auto-detection and mount point."));
+ else if (Add == true)
+ cout << _("Repeat this process for the rest of the CDs in your set.") << endl;
+
+ return oneSuccessful;
+}
+ /*}}}*/
+// DoAdd - Add a new CDROM /*{{{*/
+// ---------------------------------------------------------------------
+/* This does the main add bit.. We show some status and things. The
+ sequence is to mount/umount the CD, Ident it then scan it for package
+ files and reduce that list. Then we copy over the package files and
+ verify them. Then rewrite the database files */
+static bool DoAdd(CommandLine &)
+{
+ return AddOrIdent(true);
+}
+ /*}}}*/
+// DoIdent - Ident a CDROM /*{{{*/
+static bool DoIdent(CommandLine &)
+{
+ return AddOrIdent(false);
+}
+ /*}}}*/
+static bool ShowHelp(CommandLine &) /*{{{*/
+{
+ std::cout <<
+ _("Usage: apt-cdrom [options] command\n"
+ "\n"
+ "apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+ "media types as package sources to APT. The mount point and device\n"
+ "information is taken from apt.conf(5), udev(7) and fstab(5).\n");
+ return true;
+}
+ /*}}}*/
+static std::vector<aptDispatchWithHelp> GetCommands() /*{{{*/
+{
+ return {
+ {"add", &DoAdd, "Add a CDROM"},
+ {"ident", &DoIdent, "Report the identity of a CDROM"},
+ {nullptr, nullptr, nullptr}
+ };
+}
+ /*}}}*/
+int main(int argc,const char *argv[]) /*{{{*/
+{
+ // Parse the command line and initialize the package library
+ CommandLine CmdL;
+ auto const Cmds = ParseCommandLine(CmdL, APT_CMD::APT_CDROM, &_config, &_system, argc, argv, &ShowHelp, &GetCommands);
+
+ InitOutput();
+
+ return DispatchCommandLine(CmdL, Cmds);
+}
+ /*}}}*/
diff --git a/cmdline/apt-config.cc b/cmdline/apt-config.cc
new file mode 100644
index 000000000..adec8dda4
--- /dev/null
+++ b/cmdline/apt-config.cc
@@ -0,0 +1,145 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: apt-config.cc,v 1.11 2003/01/11 07:18:44 jgg Exp $
+/* ######################################################################
+
+ APT Config - Program to manipulate APT configuration files
+
+ This program will parse a config file and then do something with it.
+
+ Commands:
+ shell - Shell mode. After this a series of word pairs should occur.
+ The first is the environment var to set and the second is
+ the key to set it from. Use like:
+ eval `apt-config shell QMode apt::QMode`
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/init.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/pkgsystem.h>
+
+#include <iostream>
+#include <string>
+#include <vector>
+#include <map>
+#include <string.h>
+
+#include <apt-private/private-cmndline.h>
+#include <apt-private/private-main.h>
+
+#include <apti18n.h>
+ /*}}}*/
+using namespace std;
+
+// DoShell - Handle the shell command /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static bool DoShell(CommandLine &CmdL)
+{
+ for (const char **I = CmdL.FileList + 1; *I != 0; I += 2)
+ {
+ if (I[1] == 0 || strlen(I[1]) == 0)
+ return _error->Error(_("Arguments not in pairs"));
+
+ string key = I[1];
+ if (key.end()[-1] == '/') // old directory format
+ key.append("d");
+
+ if (_config->ExistsAny(key.c_str()))
+ cout << *I << "='" <<
+ SubstVar(_config->FindAny(key.c_str()),"'","'\\''") << '\'' << endl;
+
+ }
+
+ return true;
+}
+ /*}}}*/
+// DoDump - Dump the configuration space /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static bool DoDump(CommandLine &CmdL)
+{
+ bool const empty = _config->FindB("APT::Config::Dump::EmptyValue", true);
+ std::string const format = _config->Find("APT::Config::Dump::Format", "%f \"%v\";\n");
+ if (CmdL.FileSize() == 1)
+ _config->Dump(cout, NULL, format.c_str(), empty);
+ else
+ for (const char **I = CmdL.FileList + 1; *I != 0; ++I)
+ _config->Dump(cout, *I, format.c_str(), empty);
+ return true;
+}
+ /*}}}*/
+static bool ShowHelp(CommandLine &) /*{{{*/
+{
+ std::cout <<
+ _("Usage: apt-config [options] command\n"
+ "\n"
+ "apt-config is an interface to the configuration settings used by\n"
+ "all APT tools, mainly intended for debugging and shell scripting.\n");
+ return true;
+}
+ /*}}}*/
+static std::vector<aptDispatchWithHelp> GetCommands() /*{{{*/
+{
+ return {
+ {"shell", &DoShell, _("get configuration values via shell evaluation")},
+ {"dump", &DoDump, _("show the active configuration setting")},
+ {nullptr, nullptr, nullptr}
+ };
+}
+ /*}}}*/
+int main(int argc,const char *argv[]) /*{{{*/
+{
+ // Parse the command line and initialize the package library
+ CommandLine CmdL;
+ auto const Cmds = ParseCommandLine(CmdL, APT_CMD::APT_CONFIG, &_config, &_system, argc, argv, &ShowHelp, &GetCommands);
+
+ std::vector<std::string> const langs = APT::Configuration::getLanguages(true);
+ _config->Clear("Acquire::Languages");
+ for (std::vector<std::string>::const_iterator l = langs.begin(); l != langs.end(); ++l)
+ _config->Set("Acquire::Languages::", *l);
+
+ std::vector<std::string> const archs = APT::Configuration::getArchitectures();
+ _config->Clear("APT::Architectures");
+ for (std::vector<std::string>::const_iterator a = archs.begin(); a != archs.end(); ++a)
+ _config->Set("APT::Architectures::", *a);
+
+ string const conf = "APT::Compressor::";
+ std::map<std::string,std::string> CompressorNames;
+ for (auto && key : _config->FindVector("APT::Compressor", "", true))
+ {
+ auto const comp = conf + key + "::Name";
+ CompressorNames.emplace(_config->Find(comp, key), key);
+ }
+ std::vector<APT::Configuration::Compressor> const compressors = APT::Configuration::getCompressors();
+ _config->Clear("APT::Compressor");
+ for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressors.begin(); c != compressors.end(); ++c)
+ {
+ auto const n = CompressorNames.find(c->Name);
+ string comp = conf + (n == CompressorNames.end() ? c->Name : n->second) + "::";
+ _config->Set(comp + "Name", c->Name);
+ _config->Set(comp + "Extension", c->Extension);
+ _config->Set(comp + "Binary", c->Binary);
+ _config->Set(std::string(comp + "Cost").c_str(), c->Cost);
+ for (std::vector<std::string>::const_iterator a = c->CompressArgs.begin(); a != c->CompressArgs.end(); ++a)
+ _config->Set(comp + "CompressArg::", *a);
+ for (std::vector<std::string>::const_iterator a = c->UncompressArgs.begin(); a != c->UncompressArgs.end(); ++a)
+ _config->Set(comp + "UncompressArg::", *a);
+ }
+
+ std::vector<std::string> const profiles = APT::Configuration::getBuildProfiles();
+ _config->Clear("APT::Build-Profiles");
+ for (std::vector<std::string>::const_iterator p = profiles.begin(); p != profiles.end(); ++p)
+ _config->Set("APT::Build-Profiles::", *p);
+
+ return DispatchCommandLine(CmdL, Cmds);
+}
+ /*}}}*/
diff --git a/cmdline/apt-dump-solver.cc b/cmdline/apt-dump-solver.cc
new file mode 100644
index 000000000..e94021fcf
--- /dev/null
+++ b/cmdline/apt-dump-solver.cc
@@ -0,0 +1,185 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* #####################################################################
+
+ dummy solver to get quickly a scenario file out of APT
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/edsp.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+
+#include <apt-private/private-cmndline.h>
+
+#include <cstdio>
+#include <iostream>
+#include <memory>
+#include <sstream>
+
+#include <sys/types.h>
+#include <sys/wait.h>
+
+#include <string.h>
+#include <unistd.h>
+
+#include <apti18n.h>
+ /*}}}*/
+
+static bool ShowHelp(CommandLine &) /*{{{*/
+{
+ std::cout <<
+ _("Usage: apt-dump-solver\n"
+ "\n"
+ "apt-dump-solver is an interface to store an EDSP scenario in\n"
+ "a file and optionally forwards it to another solver.\n");
+ return true;
+}
+ /*}}}*/
+static std::vector<aptDispatchWithHelp> GetCommands() /*{{{*/
+{
+ return {};
+}
+ /*}}}*/
+static int WriteError(char const * const uid, std::ostringstream &out, FileFd &stdoutfd, pid_t const &Solver)/*{{{*/
+{
+ _error->DumpErrors(out);
+ // ensure the solver isn't printing into "our" error message, too
+ if (Solver != 0)
+ ExecWait(Solver, "dump", true);
+ EDSP::WriteError(uid, out.str(), stdoutfd);
+ return 0;
+}
+ /*}}}*/
+int main(int argc,const char *argv[]) /*{{{*/
+{
+ CommandLine CmdL;
+ ParseCommandLine(CmdL, APT_CMD::APT_DUMP_SOLVER, &_config, nullptr, argc, argv, &ShowHelp, &GetCommands);
+ _config->Clear("Dir::Log");
+
+ bool const is_forwarding_dumper = (CmdL.FileSize() != 0);
+
+ FileFd stdoutfd;
+ if (stdoutfd.OpenDescriptor(STDOUT_FILENO, FileFd::WriteOnly | FileFd::BufferedWrite, true) == false)
+ return 252;
+
+ FileFd dump;
+ char const * const filename = is_forwarding_dumper ? CmdL.FileList[0] : getenv("APT_EDSP_DUMP_FILENAME");
+ if (filename == nullptr || strlen(filename) == 0)
+ {
+ if (is_forwarding_dumper == false)
+ {
+ EDSP::WriteError("ERR_NO_FILENAME", "You have to set the environment variable APT_EDSP_DUMP_FILENAME\n"
+ "to a valid filename to store the dump of EDSP solver input in.\n"
+ "For example with: export APT_EDSP_DUMP_FILENAME=/tmp/dump.edsp", stdoutfd);
+ return 0;
+ }
+ }
+ else
+ {
+ // ignore errors here as logging isn't really critical
+ _error->PushToStack();
+ if (dump.Open(filename, FileFd::WriteOnly | FileFd::Exclusive | FileFd::Create, FileFd::Extension, 0644) == false &&
+ is_forwarding_dumper == false)
+ {
+ _error->MergeWithStack();
+ std::ostringstream out;
+ out << "Writing EDSP solver input to file '" << filename << "' failed as it couldn't be created!\n";
+ return WriteError("ERR_CREATE_FILE", out, stdoutfd, 0);
+ }
+ _error->RevertToStack();
+ }
+
+ pid_t Solver = 0;
+ FileFd forward;
+ if (is_forwarding_dumper)
+ {
+ int external[] = {-1, -1};
+ if (pipe(external) != 0)
+ return 250;
+ for (int i = 0; i < 2; ++i)
+ SetCloseExec(external[i], true);
+
+ Solver = ExecFork();
+ if (Solver == 0) {
+ _config->Set("APT::Sandbox::User", _config->Find("APT::Solver::RunAsUser", _config->Find("APT::Sandbox::User")));
+ DropPrivileges();
+ dup2(external[0], STDIN_FILENO);
+ execv(CmdL.FileList[1], const_cast<char**>(CmdL.FileList + 1));
+ std::cerr << "Failed to execute '" << CmdL.FileList[1] << "'!" << std::endl;
+ _exit(100);
+ }
+ close(external[0]);
+
+ if (WaitFd(external[1], true, 5) == false)
+ return 251;
+
+ if (forward.OpenDescriptor(external[1], FileFd::WriteOnly | FileFd::BufferedWrite, true) == false)
+ return 252;
+ }
+
+ DropPrivileges();
+
+ FileFd input;
+ if (input.OpenDescriptor(STDIN_FILENO, FileFd::ReadOnly) == false)
+ {
+ std::ostringstream out;
+ out << "Writing EDSP solver input to file '" << filename << "' failed as stdin couldn't be opened!\n";
+ return WriteError("ERR_READ_ERROR", out, stdoutfd, Solver);
+ }
+
+ constexpr size_t BufSize = 64 * 1024;
+ std::unique_ptr<char[]> Buf(new char[BufSize]);
+ unsigned long long ToRead = 0;
+ do {
+ if (input.Read(Buf.get(),BufSize, &ToRead) == false)
+ {
+ std::ostringstream out;
+ out << "Writing EDSP solver input to file '" << filename << "' failed as reading from stdin failed!\n";
+ return WriteError("ERR_READ_ERROR", out, stdoutfd, Solver);
+ }
+ if (ToRead == 0)
+ break;
+ if (forward.IsOpen() && forward.Failed() == false && forward.Write(Buf.get(),ToRead) == false)
+ forward.Close();
+ if (dump.IsOpen() && dump.Failed() == false && dump.Write(Buf.get(),ToRead) == false)
+ dump.Close();
+ } while (true);
+ input.Close();
+ forward.Close();
+ dump.Close();
+
+ if (_error->PendingError())
+ {
+ std::ostringstream out;
+ out << "Writing EDSP solver input to file '" << filename << "' failed due to write errors!\n";
+ return WriteError("ERR_WRITE_ERROR", out, stdoutfd, Solver);
+ }
+
+ if (is_forwarding_dumper)
+ {
+ // Wait and collect the error code
+ int Status;
+ while (waitpid(Solver, &Status, 0) != Solver)
+ {
+ if (errno == EINTR)
+ continue;
+
+ std::ostringstream out;
+ ioprintf(out, _("Waited for %s but it wasn't there"), CmdL.FileList[1]);
+ return WriteError("ERR_FORWARD", out, stdoutfd, 0);
+ }
+ if (WIFEXITED(Status))
+ return WEXITSTATUS(Status);
+ else
+ return 255;
+ }
+ else
+ EDSP::WriteError("ERR_JUST_DUMPING", "I am too dumb, i can just dump!\nPlease use one of my friends instead!", stdoutfd);
+ return 0;
+}
diff --git a/cmdline/apt-extracttemplates.cc b/cmdline/apt-extracttemplates.cc
new file mode 100644
index 000000000..a4468b989
--- /dev/null
+++ b/cmdline/apt-extracttemplates.cc
@@ -0,0 +1,349 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: apt-extracttemplates.cc,v 1.15 2003/07/26 00:00:11 mdz Exp $
+/* ######################################################################
+
+ APT Extract Templates - Program to extract debconf config and template
+ files
+
+ This is a simple program to extract config and template information
+ from Debian packages. It can be used to speed up the preconfiguration
+ process for debconf-enabled packages
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/init.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/pkgcachegen.h>
+#include <apt-pkg/version.h>
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/debfile.h>
+#include <apt-pkg/deblistparser.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/dirstream.h>
+#include <apt-pkg/mmap.h>
+
+#include <apt-private/private-cmndline.h>
+#include <apt-private/private-main.h>
+
+#include <iostream>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+#include "apt-extracttemplates.h"
+
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+pkgCache *DebFile::Cache = 0;
+
+// DebFile::DebFile - Construct the DebFile object /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+DebFile::DebFile(const char *debfile)
+ : File(debfile, FileFd::ReadOnly), Control(NULL), ControlLen(0),
+ DepOp(0), PreDepOp(0), Config(0), Template(0), Which(None)
+{
+}
+ /*}}}*/
+// DebFile::~DebFile - Destruct the DebFile object /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+DebFile::~DebFile()
+{
+ delete [] Control;
+ delete [] Config;
+ delete [] Template;
+}
+ /*}}}*/
+// DebFile::GetInstalledVer - Find out the installed version of a pkg /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+string DebFile::GetInstalledVer(const string &package)
+{
+ pkgCache::PkgIterator Pkg = Cache->FindPkg(package);
+ if (Pkg.end() == false)
+ {
+ pkgCache::VerIterator V = Pkg.CurrentVer();
+ if (V.end() == false)
+ {
+ return V.VerStr();
+ }
+ }
+
+ return string();
+}
+ /*}}}*/
+// DebFile::Go - Start extracting a debian package /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool DebFile::Go()
+{
+ debDebFile Deb(File);
+
+ return Deb.ExtractTarMember(*this, "control.tar");
+}
+ /*}}}*/
+// DebFile::DoItem examine element in package and mark /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool DebFile::DoItem(Item &I, int &Fd)
+{
+ if (strcmp(I.Name, "control") == 0)
+ {
+ delete [] Control;
+ Control = new char[I.Size+3];
+ Control[I.Size] = '\n';
+ Control[I.Size + 1] = '\n';
+ Control[I.Size + 2] = '\0';
+ Which = IsControl;
+ ControlLen = I.Size + 3;
+ // make it call the Process method below. this is so evil
+ Fd = -2;
+ }
+ else if (strcmp(I.Name, "config") == 0)
+ {
+ delete [] Config;
+ Config = new char[I.Size+1];
+ Config[I.Size] = 0;
+ Which = IsConfig;
+ Fd = -2;
+ }
+ else if (strcmp(I.Name, "templates") == 0)
+ {
+ delete [] Template;
+ Template = new char[I.Size+1];
+ Template[I.Size] = 0;
+ Which = IsTemplate;
+ Fd = -2;
+ }
+ else
+ {
+ // Ignore it
+ Fd = -1;
+ }
+ return true;
+}
+ /*}}}*/
+// DebFile::Process examine element in package and copy /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool DebFile::Process(Item &/*I*/, const unsigned char *data,
+ unsigned long long size, unsigned long long pos)
+{
+ switch (Which)
+ {
+ case IsControl:
+ memcpy(Control + pos, data, size);
+ break;
+ case IsConfig:
+ memcpy(Config + pos, data, size);
+ break;
+ case IsTemplate:
+ memcpy(Template + pos, data, size);
+ break;
+ default: /* throw it away */ ;
+ }
+ return true;
+}
+ /*}}}*/
+// DebFile::ParseInfo - Parse control file for dependency info /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool DebFile::ParseInfo()
+{
+ if (Control == NULL) return false;
+
+ pkgTagSection Section;
+ if (Section.Scan(Control, ControlLen) == false)
+ return false;
+
+ Package = Section.FindS("Package");
+ Version = GetInstalledVer(Package);
+
+ const char *Start, *Stop;
+ if (Section.Find("Depends", Start, Stop) == true)
+ {
+ while (1)
+ {
+ string P, V;
+ unsigned int Op;
+ Start = debListParser::ParseDepends(Start, Stop, P, V, Op);
+ if (Start == 0) return false;
+ if (P == "debconf")
+ {
+ DepVer = V;
+ DepOp = Op;
+ break;
+ }
+ if (Start == Stop) break;
+ }
+ }
+
+ if (Section.Find("Pre-Depends", Start, Stop) == true)
+ {
+ while (1)
+ {
+ string P, V;
+ unsigned int Op;
+ Start = debListParser::ParseDepends(Start, Stop, P, V, Op);
+ if (Start == 0) return false;
+ if (P == "debconf")
+ {
+ PreDepVer = V;
+ PreDepOp = Op;
+ break;
+ }
+ if (Start == Stop) break;
+ }
+ }
+
+ return true;
+}
+ /*}}}*/
+static bool ShowHelp(CommandLine &) /*{{{*/
+{
+ cout <<
+ _("Usage: apt-extracttemplates file1 [file2 ...]\n"
+ "\n"
+ "apt-extracttemplates is used to extract config and template files\n"
+ "from debian packages. It is used mainly by debconf(1) to prompt for\n"
+ "configuration questions before installation of packages.\n");
+ return true;
+}
+ /*}}}*/
+// WriteFile - write the contents of the passed string to a file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static string WriteFile(const char *package, const char *prefix, const char *data)
+{
+ char fn[512];
+
+ std::string tempdir = GetTempDir();
+ snprintf(fn, sizeof(fn), "%s/%s.%s.XXXXXX",
+ _config->Find("APT::ExtractTemplates::TempDir",
+ tempdir.c_str()).c_str(),
+ package, prefix);
+ FileFd f;
+ if (data == NULL)
+ data = "";
+ int fd = mkstemp(fn);
+ if (fd < 0) {
+ _error->Errno("ofstream::ofstream",_("Unable to mkstemp %s"),fn);
+ return string();
+ }
+ if (!f.OpenDescriptor(fd, FileFd::WriteOnly, FileFd::None, true))
+ {
+ _error->Errno("ofstream::ofstream",_("Unable to write to %s"),fn);
+ return string();
+ }
+ f.Write(data, strlen(data));
+ f.Close();
+ return fn;
+}
+ /*}}}*/
+// WriteConfig - write out the config data from a debian package file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static void WriteConfig(const DebFile &file)
+{
+ string templatefile = WriteFile(file.Package.c_str(), "template", file.Template);
+ string configscript = WriteFile(file.Package.c_str(), "config", file.Config);
+
+ if (templatefile.empty() == true || configscript.empty() == true)
+ return;
+ cout << file.Package << " " << file.Version << " "
+ << templatefile << " " << configscript << endl;
+}
+ /*}}}*/
+// InitCache - initialize the package cache /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static bool Go(CommandLine &CmdL)
+{
+ // Initialize the apt cache
+ MMap *Map = 0;
+ pkgSourceList List;
+ List.ReadMainList();
+ pkgCacheGenerator::MakeStatusCache(List,NULL,&Map,true);
+ if (Map == 0)
+ return false;
+ DebFile::Cache = new pkgCache(Map);
+ if (_error->PendingError() == true)
+ return false;
+
+ // Find out what version of debconf is currently installed
+ string debconfver = DebFile::GetInstalledVer("debconf");
+ if (debconfver.empty() == true)
+ return _error->Error( _("Cannot get debconf version. Is debconf installed?"));
+
+ // Process each package passsed in
+ for (unsigned int I = 0; I != CmdL.FileSize(); I++)
+ {
+ // Will pick up the errors later..
+ DebFile file(CmdL.FileList[I]);
+ if (file.Go() == false)
+ {
+ _error->Error("Prior errors apply to %s",CmdL.FileList[I]);
+ continue;
+ }
+
+ // Does the package have templates?
+ if (file.Template != 0 && file.ParseInfo() == true)
+ {
+ // Check to make sure debconf dependencies are
+ // satisfied
+ // cout << "Check " << file.DepVer << ',' << debconfver << endl;
+ if (file.DepVer != "" &&
+ DebFile::Cache->VS->CheckDep(debconfver.c_str(),
+ file.DepOp,file.DepVer.c_str()
+ ) == false)
+ continue;
+ if (file.PreDepVer != "" &&
+ DebFile::Cache->VS->CheckDep(debconfver.c_str(),
+ file.PreDepOp,file.PreDepVer.c_str()
+ ) == false)
+ continue;
+
+ WriteConfig(file);
+ }
+ }
+
+
+ delete Map;
+ delete DebFile::Cache;
+
+ return !_error->PendingError();
+}
+ /*}}}*/
+static std::vector<aptDispatchWithHelp> GetCommands() /*{{{*/
+{
+ return {
+ {nullptr, nullptr, nullptr}
+ };
+}
+ /*}}}*/
+int main(int argc, const char **argv) /*{{{*/
+{
+ CommandLine CmdL;
+ auto const Cmds = ParseCommandLine(CmdL, APT_CMD::APT_EXTRACTTEMPLATES, &_config, &_system, argc, argv, &ShowHelp, &GetCommands);
+
+ Go(CmdL);
+
+ return DispatchCommandLine(CmdL, {});
+}
+ /*}}}*/
diff --git a/cmdline/apt-extracttemplates.h b/cmdline/apt-extracttemplates.h
new file mode 100644
index 000000000..91e385e70
--- /dev/null
+++ b/cmdline/apt-extracttemplates.h
@@ -0,0 +1,50 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: apt-extracttemplates.h,v 1.2 2001/02/27 04:26:03 jgg Exp $
+/* ######################################################################
+
+ apt-extracttemplate - tool to extract template and config data
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef _APTEXTRACTTEMPLATE_H_
+#define _APTEXTRACTTEMPLATE_H_
+
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/dirstream.h>
+
+#include <string>
+
+class pkgCache;
+
+class DebFile : public pkgDirStream
+{
+ FileFd File;
+ char *Control;
+ unsigned long ControlLen;
+
+public:
+ explicit DebFile(const char *FileName);
+ ~DebFile();
+ bool DoItem(Item &I, int &fd) APT_OVERRIDE;
+ bool Process(pkgDirStream::Item &I, const unsigned char *data,
+ unsigned long long size, unsigned long long pos) APT_OVERRIDE;
+
+ bool Go();
+ bool ParseInfo();
+
+ static std::string GetInstalledVer(const std::string &package);
+
+ std::string Package;
+ std::string Version;
+ std::string DepVer, PreDepVer;
+ unsigned int DepOp, PreDepOp;
+
+ char *Config;
+ char *Template;
+
+ static pkgCache *Cache;
+ enum { None, IsControl, IsConfig, IsTemplate } Which;
+};
+
+#endif
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc
new file mode 100644
index 000000000..95d88e2ad
--- /dev/null
+++ b/cmdline/apt-get.cc
@@ -0,0 +1,446 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: apt-get.cc,v 1.156 2004/08/28 01:05:16 mdz Exp $
+/* ######################################################################
+
+ apt-get - Cover for dpkg
+
+ This is an allout cover for dpkg implementing a safer front end. It is
+ based largely on libapt-pkg.
+
+ The syntax is different,
+ apt-get [opt] command [things]
+ Where command is:
+ update - Resyncronize the package files from their sources
+ upgrade - Smart-Download the newest versions of all packages
+ dselect-upgrade - Follows dselect's changes to the Status: field
+ and installes new and removes old packages
+ dist-upgrade - Powerful upgrader designed to handle the issues with
+ a new distribution.
+ install - Download and install a given package (by name, not by .deb)
+ check - Update the package cache and check for broken packages
+ clean - Erase the .debs downloaded to /var/cache/apt/archives and
+ the partial dir too
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/acquire-item.h>
+#include <apt-pkg/algorithms.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/clean.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/debmetaindex.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/init.h>
+#include <apt-pkg/md5.h>
+#include <apt-pkg/metaindex.h>
+#include <apt-pkg/pkgrecords.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/progress.h>
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/srcrecords.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/version.h>
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/macros.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/upgrade.h>
+#include <apt-pkg/sptr.h>
+
+#include <apt-private/acqprogress.h>
+#include <apt-private/private-cacheset.h>
+#include <apt-private/private-cachefile.h>
+#include <apt-private/private-cmndline.h>
+#include <apt-private/private-download.h>
+#include <apt-private/private-install.h>
+#include <apt-private/private-main.h>
+#include <apt-private/private-moo.h>
+#include <apt-private/private-output.h>
+#include <apt-private/private-update.h>
+#include <apt-private/private-upgrade.h>
+#include <apt-private/private-utils.h>
+#include <apt-private/private-source.h>
+
+#include <errno.h>
+#include <signal.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <pwd.h>
+#include <grp.h>
+
+#include <algorithm>
+#include <fstream>
+#include <iostream>
+#include <sstream>
+#include <set>
+#include <string>
+#include <vector>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+/* mark packages as automatically/manually installed. {{{*/
+static bool DoMarkAuto(CommandLine &CmdL)
+{
+ bool Action = true;
+ int AutoMarkChanged = 0;
+ OpTextProgress progress;
+ CacheFile Cache;
+ if (Cache.Open() == false)
+ return false;
+
+ if (strcasecmp(CmdL.FileList[0],"markauto") == 0)
+ Action = true;
+ else if (strcasecmp(CmdL.FileList[0],"unmarkauto") == 0)
+ Action = false;
+
+ for (const char **I = CmdL.FileList + 1; *I != 0; I++)
+ {
+ const char *S = *I;
+ // Locate the package
+ pkgCache::PkgIterator Pkg = Cache->FindPkg(S);
+ if (Pkg.end() == true) {
+ return _error->Error(_("Couldn't find package %s"),S);
+ }
+ else
+ {
+ if (!Action)
+ ioprintf(c1out,_("%s set to manually installed.\n"), Pkg.Name());
+ else
+ ioprintf(c1out,_("%s set to automatically installed.\n"),
+ Pkg.Name());
+
+ Cache->MarkAuto(Pkg,Action);
+ AutoMarkChanged++;
+ }
+ }
+
+ _error->Notice(_("This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' instead."));
+
+ if (AutoMarkChanged && ! _config->FindB("APT::Get::Simulate",false))
+ return Cache->writeStateFile(NULL);
+ return false;
+}
+ /*}}}*/
+// DoDSelectUpgrade - Do an upgrade by following dselects selections /*{{{*/
+// ---------------------------------------------------------------------
+/* Follows dselect's selections */
+static bool DoDSelectUpgrade(CommandLine &)
+{
+ CacheFile Cache;
+ if (Cache.OpenForInstall() == false || Cache.CheckDeps() == false)
+ return false;
+
+ pkgDepCache::ActionGroup group(Cache);
+
+ // Install everything with the install flag set
+ pkgCache::PkgIterator I = Cache->PkgBegin();
+ for (;I.end() != true; ++I)
+ {
+ /* Install the package only if it is a new install, the autoupgrader
+ will deal with the rest */
+ if (I->SelectedState == pkgCache::State::Install)
+ Cache->MarkInstall(I,false);
+ }
+
+ /* Now install their deps too, if we do this above then order of
+ the status file is significant for | groups */
+ for (I = Cache->PkgBegin();I.end() != true; ++I)
+ {
+ /* Install the package only if it is a new install, the autoupgrader
+ will deal with the rest */
+ if (I->SelectedState == pkgCache::State::Install)
+ Cache->MarkInstall(I,true);
+ }
+
+ // Apply erasures now, they override everything else.
+ for (I = Cache->PkgBegin();I.end() != true; ++I)
+ {
+ // Remove packages
+ if (I->SelectedState == pkgCache::State::DeInstall ||
+ I->SelectedState == pkgCache::State::Purge)
+ Cache->MarkDelete(I,I->SelectedState == pkgCache::State::Purge);
+ }
+
+ /* Resolve any problems that dselect created, allupgrade cannot handle
+ such things. We do so quite aggressively too.. */
+ if (Cache->BrokenCount() != 0)
+ {
+ pkgProblemResolver Fix(Cache);
+
+ // Hold back held packages.
+ if (_config->FindB("APT::Ignore-Hold",false) == false)
+ {
+ for (pkgCache::PkgIterator I = Cache->PkgBegin(); I.end() == false; ++I)
+ {
+ if (I->SelectedState == pkgCache::State::Hold)
+ {
+ Fix.Protect(I);
+ Cache->MarkKeep(I);
+ }
+ }
+ }
+
+ if (Fix.Resolve() == false)
+ {
+ ShowBroken(c1out,Cache,false);
+ return _error->Error(_("Internal error, problem resolver broke stuff"));
+ }
+ }
+
+ // Now upgrade everything
+ if (APT::Upgrade::Upgrade(Cache, APT::Upgrade::FORBID_REMOVE_PACKAGES | APT::Upgrade::FORBID_INSTALL_NEW_PACKAGES) == false)
+ {
+ ShowBroken(c1out,Cache,false);
+ return _error->Error(_("Internal error, problem resolver broke stuff"));
+ }
+
+ return InstallPackages(Cache,false);
+}
+ /*}}}*/
+// DoCheck - Perform the check operation /*{{{*/
+// ---------------------------------------------------------------------
+/* Opening automatically checks the system, this command is mostly used
+ for debugging */
+static bool DoCheck(CommandLine &)
+{
+ CacheFile Cache;
+ Cache.Open();
+ Cache.CheckDeps();
+
+ return true;
+}
+ /*}}}*/
+// DoIndexTargets - Lists all IndexTargets /*{{{*/
+static std::string format_key(std::string key)
+{
+ // deb822 is case-insensitive, but the human eye prefers candy
+ std::transform(key.begin(), key.end(), key.begin(), ::tolower);
+ key[0] = ::toupper(key[0]);
+ size_t found = key.find("_uri");
+ if (found != std::string::npos)
+ key.replace(found, 4, "-URI");
+ while ((found = key.find('_')) != std::string::npos)
+ {
+ key[found] = '-';
+ key[found + 1] = ::toupper(key[found + 1]);
+ }
+ return key;
+}
+static bool DoIndexTargets(CommandLine &CmdL)
+{
+ pkgCacheFile CacheFile;
+ pkgSourceList *SrcList = CacheFile.GetSourceList();
+ pkgCache *Cache = CacheFile.GetPkgCache();
+
+ if (SrcList == nullptr || Cache == nullptr)
+ return false;
+
+ std::string const Format = _config->Find("APT::Get::IndexTargets::Format");
+ bool const ReleaseInfo = _config->FindB("APT::Get::IndexTargets::ReleaseInfo", true);
+ bool Filtered = CmdL.FileSize() > 1;
+ for (pkgSourceList::const_iterator S = SrcList->begin(); S != SrcList->end(); ++S)
+ {
+ std::vector<IndexTarget> const targets = (*S)->GetIndexTargets();
+ std::map<std::string, string> AddOptions;
+ if (ReleaseInfo)
+ {
+ AddOptions.insert(std::make_pair("TRUSTED", ((*S)->IsTrusted() ? "yes" : "no")));
+ pkgCache::RlsFileIterator const RlsFile = (*S)->FindInCache(*Cache, false);
+ if (RlsFile.end())
+ continue;
+#define APT_RELEASE(X,Y) if (RlsFile.Y() != NULL) AddOptions.insert(std::make_pair(X, RlsFile.Y()))
+ APT_RELEASE("CODENAME", Codename);
+ APT_RELEASE("SUITE", Archive);
+ APT_RELEASE("VERSION", Version);
+ APT_RELEASE("ORIGIN", Origin);
+ APT_RELEASE("LABEL", Label);
+#undef APT_RELEASE
+ }
+
+ for (std::vector<IndexTarget>::const_iterator T = targets.begin(); T != targets.end(); ++T)
+ {
+ std::string filename = T->Option(ReleaseInfo ? IndexTarget::EXISTING_FILENAME : IndexTarget::FILENAME);
+ if (filename.empty())
+ continue;
+
+ std::ostringstream stanza;
+ if (Filtered || Format.empty())
+ {
+ stanza << "MetaKey: " << T->MetaKey << "\n"
+ << "ShortDesc: " << T->ShortDesc << "\n"
+ << "Description: " << T->Description << "\n"
+ << "URI: " << T->URI << "\n"
+ << "Filename: " << filename << "\n"
+ << "Optional: " << (T->IsOptional ? "yes" : "no") << "\n"
+ << "KeepCompressed: " << (T->KeepCompressed ? "yes" : "no") << "\n";
+ for (std::map<std::string,std::string>::const_iterator O = AddOptions.begin(); O != AddOptions.end(); ++O)
+ stanza << format_key(O->first) << ": " << O->second << "\n";
+ for (std::map<std::string,std::string>::const_iterator O = T->Options.begin(); O != T->Options.end(); ++O)
+ {
+ if (O->first == "PDIFFS")
+ stanza << "PDiffs: " << O->second << "\n";
+ else if (O->first == "COMPRESSIONTYPES")
+ stanza << "CompressionTypes: " << O->second << "\n";
+ else if (O->first == "KEEPCOMPRESSEDAS")
+ stanza << "KeepCompressedAs: " << O->second << "\n";
+ else if (O->first == "DEFAULTENABLED")
+ stanza << "DefaultEnabled: " << O->second << "\n";
+ else
+ stanza << format_key(O->first) << ": " << O->second << "\n";
+ }
+ stanza << "\n";
+
+ if (Filtered)
+ {
+ // that is a bit crude, but good enough for now
+ bool found = true;
+ std::string haystack = std::string("\n") + stanza.str() + "\n";
+ std::transform(haystack.begin(), haystack.end(), haystack.begin(), ::tolower);
+ size_t const filesize = CmdL.FileSize() - 1;
+ for (size_t i = 0; i != filesize; ++i)
+ {
+ std::string needle = std::string("\n") + CmdL.FileList[i + 1] + "\n";
+ std::transform(needle.begin(), needle.end(), needle.begin(), ::tolower);
+ if (haystack.find(needle) != std::string::npos)
+ continue;
+ found = false;
+ break;
+ }
+ if (found == false)
+ continue;
+ }
+ }
+
+ if (Format.empty())
+ cout << stanza.str();
+ else
+ {
+ std::string out = SubstVar(Format, "$(FILENAME)", filename);
+ out = T->Format(out);
+ for (std::map<std::string,std::string>::const_iterator O = AddOptions.begin(); O != AddOptions.end(); ++O)
+ out = SubstVar(out, std::string("$(") + O->first + ")", O->second);
+ cout << out << std::endl;
+ }
+ }
+ }
+
+ return true;
+}
+ /*}}}*/
+static bool ShowHelp(CommandLine &) /*{{{*/
+{
+ if (_config->FindB("version") == true)
+ {
+ cout << _("Supported modules:") << endl;
+
+ for (unsigned I = 0; I != pkgVersioningSystem::GlobalListLen; I++)
+ {
+ pkgVersioningSystem *VS = pkgVersioningSystem::GlobalList[I];
+ if (_system != 0 && _system->VS == VS)
+ cout << '*';
+ else
+ cout << ' ';
+ cout << "Ver: " << VS->Label << endl;
+
+ /* Print out all the packaging systems that will work with
+ this VS */
+ for (unsigned J = 0; J != pkgSystem::GlobalListLen; J++)
+ {
+ pkgSystem *Sys = pkgSystem::GlobalList[J];
+ if (_system == Sys)
+ cout << '*';
+ else
+ cout << ' ';
+ if (Sys->VS->TestCompatibility(*VS) == true)
+ cout << "Pkg: " << Sys->Label << " (Priority " << Sys->Score(*_config) << ")" << endl;
+ }
+ }
+
+ for (unsigned I = 0; I != pkgSourceList::Type::GlobalListLen; I++)
+ {
+ pkgSourceList::Type *Type = pkgSourceList::Type::GlobalList[I];
+ cout << " S.L: '" << Type->Name << "' " << Type->Label << endl;
+ }
+
+ for (unsigned I = 0; I != pkgIndexFile::Type::GlobalListLen; I++)
+ {
+ pkgIndexFile::Type *Type = pkgIndexFile::Type::GlobalList[I];
+ cout << " Idx: " << Type->Label << endl;
+ }
+
+ return true;
+ }
+
+ std::cout <<
+ _("Usage: apt-get [options] command\n"
+ " apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+ " apt-get [options] source pkg1 [pkg2 ...]\n"
+ "\n"
+ "apt-get is a command line interface for retrieval of packages\n"
+ "and information about them from authenticated sources and\n"
+ "for installation, upgrade and removal of packages together\n"
+ "with their dependencies.\n");
+ return true;
+}
+ /*}}}*/
+static std::vector<aptDispatchWithHelp> GetCommands() /*{{{*/
+{
+ return {
+ {"update", &DoUpdate, _("Retrieve new lists of packages")},
+ {"upgrade", &DoUpgrade, _("Perform an upgrade")},
+ {"install", &DoInstall, _("Install new packages (pkg is libc6 not libc6.deb)")},
+ {"remove", &DoInstall, _("Remove packages")},
+ {"purge", &DoInstall, _("Remove packages and config files")},
+ {"autoremove", &DoInstall, _("Remove automatically all unused packages")},
+ {"auto-remove", &DoInstall, nullptr},
+ {"markauto", &DoMarkAuto, nullptr},
+ {"unmarkauto", &DoMarkAuto, nullptr},
+ {"dist-upgrade", &DoDistUpgrade, _("Distribution upgrade, see apt-get(8)")},
+ {"full-upgrade", &DoDistUpgrade, nullptr},
+ {"dselect-upgrade", &DoDSelectUpgrade, _("Follow dselect selections")},
+ {"build-dep", &DoBuildDep, _("Configure build-dependencies for source packages")},
+ {"clean", &DoClean, _("Erase downloaded archive files")},
+ {"autoclean", &DoAutoClean, _("Erase old downloaded archive files")},
+ {"auto-clean", &DoAutoClean, nullptr},
+ {"check", &DoCheck, _("Verify that there are no broken dependencies")},
+ {"source", &DoSource, _("Download source archives")},
+ {"download", &DoDownload, _("Download the binary package into the current directory")},
+ {"changelog", &DoChangelog, _("Download and display the changelog for the given package")},
+ {"indextargets", &DoIndexTargets, nullptr},
+ {"moo", &DoMoo, nullptr},
+ {nullptr, nullptr, nullptr}
+ };
+}
+ /*}}}*/
+int main(int argc,const char *argv[]) /*{{{*/
+{
+ // Parse the command line and initialize the package library
+ CommandLine CmdL;
+ auto const Cmds = ParseCommandLine(CmdL, APT_CMD::APT_GET, &_config, &_system, argc, argv, &ShowHelp, &GetCommands);
+
+ InitSignals();
+ InitOutput();
+
+ CheckIfSimulateMode(CmdL);
+
+ return DispatchCommandLine(CmdL, Cmds);
+}
+ /*}}}*/
diff --git a/cmdline/apt-helper.cc b/cmdline/apt-helper.cc
new file mode 100644
index 000000000..a6f88ad06
--- /dev/null
+++ b/cmdline/apt-helper.cc
@@ -0,0 +1,211 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* #####################################################################
+ apt-helper - cmdline helpers
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/init.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/acquire-item.h>
+#include <apt-pkg/proxy.h>
+
+#include <apt-private/acqprogress.h>
+#include <apt-private/private-output.h>
+#include <apt-private/private-download.h>
+#include <apt-private/private-cmndline.h>
+#include <apt-private/private-main.h>
+#include <apt-pkg/srvrec.h>
+
+#include <iostream>
+#include <string>
+#include <vector>
+
+#include <unistd.h>
+#include <stdlib.h>
+
+#include <apti18n.h>
+ /*}}}*/
+
+static bool DoAutoDetectProxy(CommandLine &CmdL) /*{{{*/
+{
+ if (CmdL.FileSize() != 2)
+ return _error->Error(_("Need one URL as argument"));
+ URI ServerURL(CmdL.FileList[1]);
+ if (AutoDetectProxy(ServerURL) == false)
+ return false;
+ std::string SpecificProxy = _config->Find("Acquire::"+ServerURL.Access+"::Proxy::" + ServerURL.Host);
+ ioprintf(std::cout, "Using proxy '%s' for URL '%s'\n",
+ SpecificProxy.c_str(), std::string(ServerURL).c_str());
+
+ return true;
+}
+ /*}}}*/
+static bool DoDownloadFile(CommandLine &CmdL) /*{{{*/
+{
+ if (CmdL.FileSize() <= 2)
+ return _error->Error(_("Must specify at least one pair url/filename"));
+
+ aptAcquireWithTextStatus Fetcher;
+ size_t fileind = 0;
+ std::vector<std::string> targetfiles;
+ while (fileind + 2 <= CmdL.FileSize())
+ {
+ std::string download_uri = CmdL.FileList[fileind + 1];
+ std::string targetfile = CmdL.FileList[fileind + 2];
+ std::string hash;
+ if (CmdL.FileSize() > fileind + 3)
+ hash = CmdL.FileList[fileind + 3];
+ // we use download_uri as descr and targetfile as short-descr
+ new pkgAcqFile(&Fetcher, download_uri, hash, 0, download_uri, targetfile,
+ "dest-dir-ignored", targetfile);
+ targetfiles.push_back(targetfile);
+ fileind += 3;
+ }
+
+ bool Failed = false;
+ if (AcquireRun(Fetcher, 0, &Failed, NULL) == false || Failed == true)
+ return _error->Error(_("Download Failed"));
+ if (targetfiles.empty() == false)
+ for (std::vector<std::string>::const_iterator f = targetfiles.begin(); f != targetfiles.end(); ++f)
+ if (FileExists(*f) == false)
+ return _error->Error(_("Download Failed"));
+
+ return true;
+}
+ /*}}}*/
+static bool DoSrvLookup(CommandLine &CmdL) /*{{{*/
+{
+ if (CmdL.FileSize() <= 1)
+ return _error->Error("Must specify at least one SRV record");
+
+ for(size_t i = 1; CmdL.FileList[i] != NULL; ++i)
+ {
+ std::vector<SrvRec> srv_records;
+ std::string const name = CmdL.FileList[i];
+ c0out << "# Target\tPriority\tWeight\tPort # for " << name << std::endl;
+ size_t const found = name.find(":");
+ if (found != std::string::npos)
+ {
+ std::string const host = name.substr(0, found);
+ size_t const port = atoi(name.c_str() + found + 1);
+ if(GetSrvRecords(host, port, srv_records) == false)
+ _error->Error(_("GetSrvRec failed for %s"), name.c_str());
+ }
+ else if(GetSrvRecords(name, srv_records) == false)
+ _error->Error(_("GetSrvRec failed for %s"), name.c_str());
+
+ for (SrvRec const &I : srv_records)
+ ioprintf(c1out, "%s\t%d\t%d\t%d\n", I.target.c_str(), I.priority, I.weight, I.port);
+ }
+ return true;
+}
+ /*}}}*/
+static const APT::Configuration::Compressor *FindCompressor(std::vector<APT::Configuration::Compressor> const & compressors, std::string name) /*{{{*/
+{
+ APT::Configuration::Compressor const * compressor = NULL;
+ for (auto const & c : compressors)
+ {
+ if (compressor != NULL && c.Cost >= compressor->Cost)
+ continue;
+ if (c.Name == name || c.Extension == name || (!c.Extension.empty() && c.Extension.substr(1) == name))
+ compressor = &c;
+ }
+
+ return compressor;
+}
+ /*}}}*/
+static bool DoCatFile(CommandLine &CmdL) /*{{{*/
+{
+ FileFd fd;
+ FileFd out;
+ std::string const compressorName = _config->Find("Apt-Helper::Cat-File::Compress", "");
+
+ if (compressorName.empty() == false)
+ {
+
+ auto const compressors = APT::Configuration::getCompressors();
+ auto const compressor = FindCompressor(compressors, compressorName);
+
+ if (compressor == NULL)
+ return _error->Error("Could not find compressor: %s", compressorName.c_str());
+
+ if (out.OpenDescriptor(STDOUT_FILENO, FileFd::WriteOnly, *compressor) == false)
+ return false;
+ } else
+ {
+ if (out.OpenDescriptor(STDOUT_FILENO, FileFd::WriteOnly) == false)
+ return false;
+ }
+
+ if (CmdL.FileSize() <= 1)
+ {
+ if (fd.OpenDescriptor(STDIN_FILENO, FileFd::ReadOnly) == false)
+ return false;
+ if (CopyFile(fd, out) == false)
+ return false;
+ return true;
+ }
+
+ for(size_t i = 1; CmdL.FileList[i] != NULL; ++i)
+ {
+ std::string const name = CmdL.FileList[i];
+
+ if (name != "-")
+ {
+ if (fd.Open(name, FileFd::ReadOnly, FileFd::Extension) == false)
+ return false;
+ }
+ else
+ {
+ if (fd.OpenDescriptor(STDIN_FILENO, FileFd::ReadOnly) == false)
+ return false;
+ }
+
+ if (CopyFile(fd, out) == false)
+ return false;
+ }
+ return true;
+}
+ /*}}}*/
+static bool ShowHelp(CommandLine &) /*{{{*/
+{
+ std::cout <<
+ _("Usage: apt-helper [options] command\n"
+ " apt-helper [options] cat-file file ...\n"
+ " apt-helper [options] download-file uri target-path\n"
+ "\n"
+ "apt-helper bundles a variety of commands for shell scripts to use\n"
+ "e.g. the same proxy configuration or acquire system as APT would.\n");
+ return true;
+}
+ /*}}}*/
+static std::vector<aptDispatchWithHelp> GetCommands() /*{{{*/
+{
+ return {
+ {"download-file", &DoDownloadFile, _("download the given uri to the target-path")},
+ {"srv-lookup", &DoSrvLookup, _("lookup a SRV record (e.g. _http._tcp.ftp.debian.org)")},
+ {"cat-file", &DoCatFile, _("concatenate files, with automatic decompression")},
+ {"auto-detect-proxy", &DoAutoDetectProxy, _("detect proxy using apt.conf")},
+ {nullptr, nullptr, nullptr}
+ };
+}
+ /*}}}*/
+int main(int argc,const char *argv[]) /*{{{*/
+{
+ CommandLine CmdL;
+ auto const Cmds = ParseCommandLine(CmdL, APT_CMD::APT_HELPER, &_config, &_system, argc, argv, &ShowHelp, &GetCommands);
+
+ InitOutput();
+
+ return DispatchCommandLine(CmdL, Cmds);
+}
+ /*}}}*/
diff --git a/cmdline/apt-internal-planner.cc b/cmdline/apt-internal-planner.cc
new file mode 100644
index 000000000..1f74aa78f
--- /dev/null
+++ b/cmdline/apt-internal-planner.cc
@@ -0,0 +1,196 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* #####################################################################
+
+ cover around the internal solver to be able to run it like an external
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/init.h>
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/edsp.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/packagemanager.h>
+#include <apt-pkg/prettyprinters.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#include <apt-private/private-output.h>
+#include <apt-private/private-cmndline.h>
+#include <apt-private/private-main.h>
+
+#include <string.h>
+#include <iostream>
+#include <sstream>
+#include <list>
+#include <string>
+#include <unistd.h>
+#include <cstdio>
+#include <stdlib.h>
+
+#include <apti18n.h>
+ /*}}}*/
+
+static bool ShowHelp(CommandLine &) /*{{{*/
+{
+ std::cout <<
+ _("Usage: apt-internal-planner\n"
+ "\n"
+ "apt-internal-planner is an interface to use the current internal\n"
+ "installation planner for the APT family like an external one,\n"
+ "for debugging or the like.\n");
+ return true;
+}
+ /*}}}*/
+APT_NORETURN static void DIE(std::string const &message) { /*{{{*/
+ std::cerr << "ERROR: " << message << std::endl;
+ _error->DumpErrors(std::cerr);
+ exit(EXIT_FAILURE);
+}
+ /*}}}*/
+static std::vector<aptDispatchWithHelp> GetCommands() /*{{{*/
+{
+ return {};
+}
+ /*}}}*/
+class PMOutput: public pkgPackageManager /*{{{*/
+{
+ FileFd &output;
+ bool const Debug;
+
+protected:
+ virtual bool Install(PkgIterator Pkg,std::string) APT_OVERRIDE
+ {
+ //std::cerr << "INSTALL: " << APT::PrettyPkg(&Cache, Pkg) << std::endl;
+ return EDSP::WriteSolutionStanza(output, "Unpack", Cache[Pkg].InstVerIter(Cache));
+ }
+ virtual bool Configure(PkgIterator Pkg) APT_OVERRIDE
+ {
+ //std::cerr << "CONFIGURE: " << APT::PrettyPkg(&Cache, Pkg) << " " << std::endl;
+ return EDSP::WriteSolutionStanza(output, "Configure", Cache[Pkg].InstVerIter(Cache));
+ }
+ virtual bool Remove(PkgIterator Pkg,bool) APT_OVERRIDE
+ {
+ //std::cerr << "REMOVE: " << APT::PrettyPkg(&Cache, Pkg) << " " << std::endl;
+ return EDSP::WriteSolutionStanza(output, "Remove", Pkg.CurrentVer());
+ }
+public:
+ PMOutput(pkgDepCache *Cache, FileFd &file) : pkgPackageManager(Cache), output(file),
+ Debug(_config->FindB("Debug::EDSP::WriteSolution", false))
+ {}
+
+ bool ApplyRequest(std::list<std::pair<std::string,EIPP::PKG_ACTION>> const &actions)
+ {
+ for (auto && a: actions)
+ {
+ auto const Pkg = Cache.FindPkg(a.first);
+ if (unlikely(Pkg.end() == true))
+ continue;
+ switch (a.second)
+ {
+ case EIPP::PKG_ACTION::NOOP:
+ break;
+ case EIPP::PKG_ACTION::INSTALL:
+ case EIPP::PKG_ACTION::REINSTALL:
+ FileNames[Pkg->ID] = "EIPP";
+ break;
+ case EIPP::PKG_ACTION::REMOVE:
+ break;
+ }
+ }
+ return true;
+ }
+};
+ /*}}}*/
+int main(int argc,const char *argv[]) /*{{{*/
+{
+ // we really don't need anything
+ DropPrivileges();
+
+ CommandLine CmdL;
+ ParseCommandLine(CmdL, APT_CMD::APT_INTERNAL_PLANNER, &_config, NULL, argc, argv, &ShowHelp, &GetCommands);
+
+ // Deal with stdout not being a tty
+ if (!isatty(STDOUT_FILENO) && _config->FindI("quiet", -1) == -1)
+ _config->Set("quiet","1");
+
+ if (_config->FindI("quiet", 0) < 1)
+ _config->Set("Debug::EIPP::WriteSolution", true);
+
+ _config->Set("APT::System", "Debian APT planner interface");
+ _config->Set("APT::Planner", "internal");
+ _config->Set("eipp::scenario", "/nonexistent/stdin");
+ FileFd output;
+ if (output.OpenDescriptor(STDOUT_FILENO, FileFd::WriteOnly | FileFd::BufferedWrite, true) == false)
+ DIE("stdout couldn't be opened");
+ int const input = STDIN_FILENO;
+ SetNonBlock(input, false);
+
+ EDSP::WriteProgress(0, "Start up planner…", output);
+
+ if (pkgInitSystem(*_config,_system) == false)
+ DIE("System could not be initialized!");
+
+ EDSP::WriteProgress(1, "Read request…", output);
+
+ if (WaitFd(input, false, 5) == false)
+ DIE("WAIT timed out in the planner");
+
+ std::list<std::pair<std::string,EIPP::PKG_ACTION>> actions;
+ unsigned int flags;
+ if (EIPP::ReadRequest(input, actions, flags) == false)
+ DIE("Parsing the request failed!");
+ _config->Set("APT::Immediate-Configure", (flags & EIPP::Request::NO_IMMEDIATE_CONFIGURATION) == 0);
+ _config->Set("APT::Immediate-Configure-All", (flags & EIPP::Request::IMMEDIATE_CONFIGURATION_ALL) != 0);
+ _config->Set("APT::Force-LoopBreak", (flags & EIPP::Request::ALLOW_TEMPORARY_REMOVE_OF_ESSENTIALS) != 0);
+
+ EDSP::WriteProgress(5, "Read scenario…", output);
+
+ pkgCacheFile CacheFile;
+ if (CacheFile.Open(NULL, false) == false)
+ DIE("Failed to open CacheFile!");
+
+ EDSP::WriteProgress(50, "Apply request on scenario…", output);
+
+ if (EIPP::ApplyRequest(actions, CacheFile) == false)
+ DIE("Failed to apply request to depcache!");
+
+ EDSP::WriteProgress(60, "Call orderinstall on current scenario…", output);
+
+ //_config->Set("Debug::pkgOrderList", true);
+ //_config->Set("Debug::pkgPackageManager", true);
+ PMOutput PM(CacheFile, output);
+ if (PM.ApplyRequest(actions) == false)
+ DIE("Failed to apply request to packagemanager!");
+ pkgPackageManager::OrderResult const Res = PM.DoInstallPreFork();
+ std::ostringstream broken;
+ switch (Res)
+ {
+ case pkgPackageManager::Completed:
+ EDSP::WriteProgress(100, "Done", output);
+ break;
+ case pkgPackageManager::Incomplete:
+ broken << "Planner could only incompletely plan an installation order!" << std::endl;
+ _error->DumpErrors(broken, GlobalError::DEBUG);
+ EDSP::WriteError("pm-incomplete", broken.str(), output);
+ break;
+ case pkgPackageManager::Failed:
+ broken << "Planner failed to find an installation order!" << std::endl;
+ _error->DumpErrors(broken, GlobalError::DEBUG);
+ EDSP::WriteError("pm-failed", broken.str(), output);
+ break;
+ }
+
+ return DispatchCommandLine(CmdL, {});
+}
+ /*}}}*/
diff --git a/cmdline/apt-internal-solver.cc b/cmdline/apt-internal-solver.cc
new file mode 100644
index 000000000..aecb0eaba
--- /dev/null
+++ b/cmdline/apt-internal-solver.cc
@@ -0,0 +1,214 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* #####################################################################
+
+ cover around the internal solver to be able to run it like an external
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/init.h>
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/edsp.h>
+#include <apt-pkg/algorithms.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/upgrade.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+
+#include <apt-private/private-output.h>
+#include <apt-private/private-cmndline.h>
+#include <apt-private/private-main.h>
+
+#include <string.h>
+#include <iostream>
+#include <sstream>
+#include <list>
+#include <string>
+#include <unistd.h>
+#include <cstdio>
+#include <stdlib.h>
+
+#include <apti18n.h>
+ /*}}}*/
+
+static bool ShowHelp(CommandLine &) /*{{{*/
+{
+ std::cout <<
+ _("Usage: apt-internal-solver\n"
+ "\n"
+ "apt-internal-solver is an interface to use the current internal\n"
+ "resolver for the APT family like an external one, for debugging or\n"
+ "the like.\n");
+ return true;
+}
+ /*}}}*/
+APT_NORETURN static void DIE(std::string const &message) { /*{{{*/
+ std::cerr << "ERROR: " << message << std::endl;
+ _error->DumpErrors(std::cerr);
+ exit(EXIT_FAILURE);
+}
+ /*}}}*/
+static std::vector<aptDispatchWithHelp> GetCommands() /*{{{*/
+{
+ return {};
+}
+ /*}}}*/
+static bool WriteSolution(pkgDepCache &Cache, FileFd &output) /*{{{*/
+{
+ bool Okay = output.Failed() == false;
+ for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false && likely(Okay); ++Pkg)
+ {
+ std::string action;
+ if (Cache[Pkg].Delete() == true)
+ Okay &= EDSP::WriteSolutionStanza(output, "Remove", Pkg.CurrentVer());
+ else if (Cache[Pkg].NewInstall() == true || Cache[Pkg].Upgrade() == true)
+ Okay &= EDSP::WriteSolutionStanza(output, "Install", Cache.GetCandidateVersion(Pkg));
+ else if (Cache[Pkg].Garbage == true)
+ Okay &= EDSP::WriteSolutionStanza(output, "Autoremove", Pkg.CurrentVer());
+ }
+ return Okay;
+}
+ /*}}}*/
+int main(int argc,const char *argv[]) /*{{{*/
+{
+ // we really don't need anything
+ DropPrivileges();
+
+ CommandLine CmdL;
+ ParseCommandLine(CmdL, APT_CMD::APT_INTERNAL_SOLVER, &_config, NULL, argc, argv, &ShowHelp, &GetCommands);
+
+ if (CmdL.FileList[0] != 0 && strcmp(CmdL.FileList[0], "scenario") == 0)
+ {
+ if (pkgInitSystem(*_config,_system) == false) {
+ std::cerr << "System could not be initialized!" << std::endl;
+ return 1;
+ }
+ pkgCacheFile CacheFile;
+ CacheFile.Open(NULL, false);
+ APT::PackageSet pkgset = APT::PackageSet::FromCommandLine(CacheFile, CmdL.FileList + 1);
+ FileFd output;
+ if (output.OpenDescriptor(STDOUT_FILENO, FileFd::WriteOnly | FileFd::BufferedWrite, true) == false)
+ return 2;
+ if (pkgset.empty() == true)
+ EDSP::WriteScenario(CacheFile, output);
+ else
+ {
+ std::vector<bool> pkgvec(CacheFile->Head().PackageCount, false);
+ for (auto const &p: pkgset)
+ pkgvec[p->ID] = true;
+ EDSP::WriteLimitedScenario(CacheFile, output, pkgvec);
+ }
+ output.Close();
+ _error->DumpErrors(std::cerr);
+ return 0;
+ }
+
+ // Deal with stdout not being a tty
+ if (!isatty(STDOUT_FILENO) && _config->FindI("quiet", -1) == -1)
+ _config->Set("quiet","1");
+
+ if (_config->FindI("quiet", 0) < 1)
+ _config->Set("Debug::EDSP::WriteSolution", true);
+
+ _config->Set("APT::System", "Debian APT solver interface");
+ _config->Set("APT::Solver", "internal");
+ _config->Set("edsp::scenario", "/nonexistent/stdin");
+ _config->Clear("Dir::Log");
+ FileFd output;
+ if (output.OpenDescriptor(STDOUT_FILENO, FileFd::WriteOnly | FileFd::BufferedWrite, true) == false)
+ DIE("stdout couldn't be opened");
+ int const input = STDIN_FILENO;
+ SetNonBlock(input, false);
+
+ EDSP::WriteProgress(0, "Start up solver…", output);
+
+ if (pkgInitSystem(*_config,_system) == false)
+ DIE("System could not be initialized!");
+
+ EDSP::WriteProgress(1, "Read request…", output);
+
+ if (WaitFd(input, false, 5) == false)
+ DIE("WAIT timed out in the resolver");
+
+ std::list<std::string> install, remove;
+ unsigned int flags;
+ if (EDSP::ReadRequest(input, install, remove, flags) == false)
+ DIE("Parsing the request failed!");
+
+ EDSP::WriteProgress(5, "Read scenario…", output);
+
+ pkgCacheFile CacheFile;
+ if (CacheFile.Open(NULL, false) == false)
+ DIE("Failed to open CacheFile!");
+
+ EDSP::WriteProgress(50, "Apply request on scenario…", output);
+
+ if (EDSP::ApplyRequest(install, remove, CacheFile) == false)
+ DIE("Failed to apply request to depcache!");
+
+ pkgProblemResolver Fix(CacheFile);
+ for (std::list<std::string>::const_iterator i = remove.begin();
+ i != remove.end(); ++i) {
+ pkgCache::PkgIterator P = CacheFile->FindPkg(*i);
+ Fix.Clear(P);
+ Fix.Protect(P);
+ Fix.Remove(P);
+ }
+
+ for (std::list<std::string>::const_iterator i = install.begin();
+ i != install.end(); ++i) {
+ pkgCache::PkgIterator P = CacheFile->FindPkg(*i);
+ Fix.Clear(P);
+ Fix.Protect(P);
+ }
+
+ for (std::list<std::string>::const_iterator i = install.begin();
+ i != install.end(); ++i)
+ CacheFile->MarkInstall(CacheFile->FindPkg(*i), true);
+
+ EDSP::WriteProgress(60, "Call problemresolver on current scenario…", output);
+
+ std::string failure;
+ if (flags & EDSP::Request::UPGRADE_ALL) {
+ int upgrade_flags = APT::Upgrade::ALLOW_EVERYTHING;
+ if (flags & EDSP::Request::FORBID_NEW_INSTALL)
+ upgrade_flags |= APT::Upgrade::FORBID_INSTALL_NEW_PACKAGES;
+ if (flags & EDSP::Request::FORBID_REMOVE)
+ upgrade_flags |= APT::Upgrade::FORBID_REMOVE_PACKAGES;
+
+ if (APT::Upgrade::Upgrade(CacheFile, upgrade_flags))
+ ;
+ else if (upgrade_flags == APT::Upgrade::ALLOW_EVERYTHING)
+ failure = "ERR_UNSOLVABLE_FULL_UPGRADE";
+ else
+ failure = "ERR_UNSOLVABLE_UPGRADE";
+ } else if (Fix.Resolve() == false)
+ failure = "ERR_UNSOLVABLE";
+
+ if (failure.empty() == false) {
+ std::ostringstream broken;
+ ShowBroken(broken, CacheFile, false);
+ EDSP::WriteError(failure.c_str(), broken.str(), output);
+ return 0;
+ }
+
+ EDSP::WriteProgress(95, "Write solution…", output);
+
+ if (WriteSolution(CacheFile, output) == false)
+ DIE("Failed to output the solution!");
+
+ EDSP::WriteProgress(100, "Done", output);
+
+ return DispatchCommandLine(CmdL, {});
+}
+ /*}}}*/
diff --git a/cmdline/apt-key.in b/cmdline/apt-key.in
new file mode 100644
index 000000000..723af06ff
--- /dev/null
+++ b/cmdline/apt-key.in
@@ -0,0 +1,784 @@
+#!/bin/sh
+
+set -e
+unset GREP_OPTIONS GPGHOMEDIR CURRENTTRAP
+export IFS="$(printf "\n\b")"
+
+MASTER_KEYRING='&keyring-master-filename;'
+eval "$(apt-config shell MASTER_KEYRING APT::Key::MasterKeyring)"
+ARCHIVE_KEYRING='&keyring-filename;'
+eval "$(apt-config shell ARCHIVE_KEYRING APT::Key::ArchiveKeyring)"
+REMOVED_KEYS='&keyring-removed-filename;'
+eval "$(apt-config shell REMOVED_KEYS APT::Key::RemovedKeys)"
+ARCHIVE_KEYRING_URI='&keyring-uri;'
+eval "$(apt-config shell ARCHIVE_KEYRING_URI APT::Key::ArchiveKeyringURI)"
+
+aptkey_echo() { echo "$@"; }
+
+requires_root() {
+ if [ "$(id -u)" -ne 0 ]; then
+ apt_error "This command can only be used by root."
+ exit 1
+ fi
+}
+
+command_available() {
+ if [ -x "$1" ]; then return 0; fi
+ # command -v "$1" >/dev/null 2>&1 # not required by policy, see #747320
+ # which "$1" >/dev/null 2>&1 # is in debianutils (essential) but not on non-debian systems
+ local OLDIFS="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if [ -x "${p}/${1}" ]; then
+ IFS="$OLDIFS"
+ return 0
+ fi
+ done
+ IFS="$OLDIFS"
+ return 1
+}
+
+escape_shell() {
+ echo "$@" | sed -e "s#'#'\"'\"'#g"
+}
+
+get_fingerprints_of_keyring() {
+ aptkey_execute "$GPG_SH" --keyring "$1" --with-colons --fingerprint | while read publine; do
+ # search for a public key
+ if [ "${publine%%:*}" != 'pub' ]; then continue; fi
+ # search for the associated fingerprint (should be the very next line)
+ while read fprline; do
+ if [ "${fprline%%:*}" = 'sub' ]; then break; # should never happen
+ elif [ "${fprline%%:*}" != 'fpr' ]; then continue; fi
+ echo "$fprline" | cut -d':' -f 10
+ done
+ # order in the keyring shouldn't be important
+ done | sort
+}
+
+add_keys_with_verify_against_master_keyring() {
+ ADD_KEYRING="$1"
+ MASTER="$2"
+
+ if [ ! -f "$ADD_KEYRING" ]; then
+ apt_error "Keyring '$ADD_KEYRING' to be added not found"
+ return
+ fi
+ if [ ! -f "$MASTER" ]; then
+ apt_error "Master-Keyring '$MASTER' not found"
+ return
+ fi
+
+ # when adding new keys, make sure that the archive-master-keyring
+ # is honored. so:
+ # all keys that are exported must have a valid signature
+ # from a key in the $distro-master-keyring
+ add_keys="$(get_fingerprints_of_keyring "$ADD_KEYRING")"
+ all_add_keys="$(aptkey_execute "$GPG_SH" --keyring "$ADD_KEYRING" --with-colons --list-keys | grep ^[ps]ub | cut -d: -f5)"
+ master_keys="$(aptkey_execute "$GPG_SH" --keyring "$MASTER" --with-colons --list-keys | grep ^pub | cut -d: -f5)"
+
+ # ensure there are no colisions LP: #857472
+ for all_add_key in $all_add_keys; do
+ for master_key in $master_keys; do
+ if [ "$all_add_key" = "$master_key" ]; then
+ echo >&2 "Keyid collision for '$all_add_key' detected, operation aborted"
+ return 1
+ fi
+ done
+ done
+
+ for add_key in $add_keys; do
+ # export the add keyring one-by-one
+ local TMP_KEYRING="${GPGHOMEDIR}/tmp-keyring.gpg"
+ aptkey_execute "$GPG_SH" --batch --yes --keyring "$ADD_KEYRING" --output "$TMP_KEYRING" --export "$add_key"
+ if ! aptkey_execute "$GPG_SH" --batch --yes --keyring "$TMP_KEYRING" --import "$MASTER" > "${GPGHOMEDIR}/gpgoutput.log" 2>&1; then
+ cat >&2 "${GPGHOMEDIR}/gpgoutput.log"
+ false
+ fi
+ # check if signed with the master key and only add in this case
+ ADDED=0
+ for master_key in $master_keys; do
+ if aptkey_execute "$GPG_SH" --keyring "$TMP_KEYRING" --check-sigs --with-colons "$add_key" \
+ | grep '^sig:!:' | cut -d: -f5 | grep -q "$master_key"; then
+ aptkey_execute "$GPG_SH" --batch --yes --keyring "$ADD_KEYRING" --export "$add_key" \
+ | aptkey_execute "$GPG" --batch --yes --import
+ ADDED=1
+ fi
+ done
+ if [ $ADDED = 0 ]; then
+ echo >&2 "Key '$add_key' not added. It is not signed with a master key"
+ fi
+ rm -f "${TMP_KEYRING}"
+ done
+}
+
+# update the current archive signing keyring from a network URI
+# the archive-keyring keys needs to be signed with the master key
+# (otherwise it does not make sense from a security POV)
+net_update() {
+ local APT_DIR='/'
+ eval $(apt-config shell APT_DIR Dir)
+
+ # Disabled for now as code is insecure (LP: #1013639 (and 857472, 1013128))
+ APT_KEY_NET_UPDATE_ENABLED=""
+ eval $(apt-config shell APT_KEY_NET_UPDATE_ENABLED APT::Key::Net-Update-Enabled)
+ if [ -z "$APT_KEY_NET_UPDATE_ENABLED" ]; then
+ exit 1
+ fi
+
+ if [ -z "$ARCHIVE_KEYRING_URI" ]; then
+ apt_error 'Your distribution is not supported in net-update as no uri for the archive-keyring is set'
+ exit 1
+ fi
+ # in theory we would need to depend on wget for this, but this feature
+ # isn't useable in debian anyway as we have no keyring uri nor a master key
+ if ! command_available 'wget'; then
+ apt_error 'wget is required for a network-based update, but it is not installed'
+ exit 1
+ fi
+ if [ ! -d "${APT_DIR}/var/lib/apt/keyrings" ]; then
+ mkdir -p "${APT_DIR}/var/lib/apt/keyrings"
+ fi
+ keyring="${APT_DIR}/var/lib/apt/keyrings/$(basename "$ARCHIVE_KEYRING_URI")"
+ old_mtime=0
+ if [ -e $keyring ]; then
+ old_mtime=$(stat -c %Y "$keyring")
+ fi
+ (cd "${APT_DIR}/var/lib/apt/keyrings"; wget --timeout=90 -q -N "$ARCHIVE_KEYRING_URI")
+ if [ ! -e "$keyring" ]; then
+ return
+ fi
+ new_mtime=$(stat -c %Y "$keyring")
+ if [ $new_mtime -ne $old_mtime ]; then
+ aptkey_echo "Checking for new archive signing keys now"
+ add_keys_with_verify_against_master_keyring "$keyring" "$MASTER_KEYRING"
+ fi
+}
+
+update() {
+ if [ -z "$APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE" ]; then
+ echo >&2 "Warning: 'apt-key update' is deprecated and should not be used anymore!"
+ if [ -z "$ARCHIVE_KEYRING" ]; then
+ echo >&2 "Note: In your distribution this command is a no-op and can therefore be removed safely."
+ exit 0
+ fi
+ fi
+ if [ ! -f "$ARCHIVE_KEYRING" ]; then
+ apt_error "Can't find the archive-keyring (Is the &keyring-package; package installed?)"
+ exit 1
+ fi
+
+ # add new keys from the package;
+
+ # we do not use add_keys_with_verify_against_master_keyring here,
+ # because "update" is run on regular package updates. A
+ # attacker might as well replace the master-archive-keyring file
+ # in the package and add his own keys. so this check wouldn't
+ # add any security. we *need* this check on net-update though
+ import_keyring_into_keyring "$ARCHIVE_KEYRING" '' && cat "${GPGHOMEDIR}/gpgoutput.log"
+
+ if [ -r "$REMOVED_KEYS" ]; then
+ # remove no-longer supported/used keys
+ get_fingerprints_of_keyring "$(dearmor_filename "$REMOVED_KEYS")" | while read key; do
+ foreach_keyring_do 'remove_key_from_keyring' "$key"
+ done
+ else
+ apt_warn "Removed keys keyring '$REMOVED_KEYS' missing or not readable"
+ fi
+}
+
+remove_key_from_keyring() {
+ local KEYRINGFILE="$1"
+ shift
+ # non-existent keyrings have by definition no keys
+ if [ ! -e "$KEYRINGFILE" ]; then
+ return
+ fi
+
+ local FINGERPRINTS="${GPGHOMEDIR}/keyringfile.keylst"
+ local DEARMOR="$(dearmor_filename "$KEYRINGFILE")"
+ get_fingerprints_of_keyring "$DEARMOR" > "$FINGERPRINTS"
+
+ for KEY in "$@"; do
+ # strip leading 0x, if present:
+ KEY="$(echo "${KEY#0x}" | tr -d ' ')"
+
+ # check if the key is in this keyring
+ if ! grep -iq "^[0-9A-F]*${KEY}$" "$FINGERPRINTS"; then
+ continue
+ fi
+ if [ ! -w "$KEYRINGFILE" ]; then
+ apt_warn "Key ${KEY} is in keyring ${KEYRINGFILE}, but can't be removed as it is read only."
+ continue
+ fi
+ # check if it is the only key in the keyring and if so remove the keyring altogether
+ if [ '1' = "$(uniq "$FINGERPRINTS" | wc -l)" ]; then
+ mv -f "$KEYRINGFILE" "${KEYRINGFILE}~" # behave like gpg
+ return
+ fi
+ # we can't just modify pointed to files as these might be in /usr or something
+ local REALTARGET
+ if [ -L "$DEARMOR" ]; then
+ REALTARGET="$(readlink -f "$DEARMOR")"
+ mv -f "$DEARMOR" "${DEARMOR}.dpkg-tmp"
+ cp -a "$REALTARGET" "$DEARMOR"
+ fi
+ # delete the key from the keyring
+ aptkey_execute "$GPG_SH" --keyring "$DEARMOR" --batch --delete-keys --yes "$KEY"
+ if [ -n "$REALTARGET" ]; then
+ # the real backup is the old link, not the copy we made
+ mv -f "${DEARMOR}.dpkg-tmp" "${DEARMOR}~"
+ fi
+ if [ "$DEARMOR" != "$KEYRINGFILE" ]; then
+ mv -f "$KEYRINGFILE" "${KEYRINGFILE}~"
+ create_new_keyring "$KEYRINGFILE"
+ aptkey_execute "$GPG_SH" --keyring "$DEARMOR" --armor --export > "$KEYRINGFILE"
+ fi
+ get_fingerprints_of_keyring "$DEARMOR" > "$FINGERPRINTS"
+ done
+}
+
+accessible_file_exists() {
+ if ! test -s "$1"; then
+ return 1
+ fi
+ if test -r "$1"; then
+ return 0
+ fi
+ apt_warn "The key(s) in the keyring $1 are ignored as the file is not readable by user '$USER' executing apt-key."
+ return 1
+}
+
+foreach_keyring_do() {
+ local ACTION="$1"
+ shift
+ # if a --keyring was given, just work on this one
+ if [ -n "$FORCED_KEYRING" ]; then
+ $ACTION "$TRUSTEDFILE" "$@"
+ else
+ # otherwise all known keyrings are up for inspection
+ if accessible_file_exists "$TRUSTEDFILE"; then
+ $ACTION "$TRUSTEDFILE" "$@"
+ fi
+ local TRUSTEDPARTS="/etc/apt/trusted.gpg.d"
+ eval "$(apt-config shell TRUSTEDPARTS Dir::Etc::TrustedParts/d)"
+ if [ -d "$TRUSTEDPARTS" ]; then
+ TRUSTEDPARTS="$(readlink -f "$TRUSTEDPARTS")"
+ local TRUSTEDPARTSLIST="$(cd /; find "$TRUSTEDPARTS" -mindepth 1 -maxdepth 1 \( -name '*.gpg' -o -name '*.asc' \))"
+ for trusted in $(echo "$TRUSTEDPARTSLIST" | sort); do
+ if accessible_file_exists "$trusted"; then
+ $ACTION "$trusted" "$@"
+ fi
+ done
+ fi
+ fi
+}
+
+list_keys_in_keyring() {
+ local KEYRINGFILE="$1"
+ shift
+ # fingerprint and co will fail if key isn't in this keyring
+ aptkey_execute "$GPG_SH" --keyring "$(dearmor_filename "$KEYRINGFILE")" "$@" > "${GPGHOMEDIR}/gpgoutput.log" 2> "${GPGHOMEDIR}/gpgoutput.err" || true
+ if [ ! -s "${GPGHOMEDIR}/gpgoutput.log" ]; then
+ return
+ fi
+ # we fake gpg header here to refer to the real asc file rather than a temp file
+ if [ "${KEYRINGFILE##*.}" = 'asc' ]; then
+ if expr match "$(sed -n '2p' "${GPGHOMEDIR}/gpgoutput.log")" '^-\+$' >/dev/null 2>&1; then
+ echo "$KEYRINGFILE"
+ echo "$KEYRINGFILE" | sed 's#[^-]#-#g'
+ sed '1,2d' "${GPGHOMEDIR}/gpgoutput.log" || true
+ else
+ cat "${GPGHOMEDIR}/gpgoutput.log"
+ fi
+ else
+ cat "${GPGHOMEDIR}/gpgoutput.log"
+ fi
+ if [ -s "${GPGHOMEDIR}/gpgoutput.err" ]; then
+ cat >&2 "${GPGHOMEDIR}/gpgoutput.err"
+ fi
+}
+
+export_key_from_to() {
+ local FROM="$1"
+ local TO="$2"
+ shift 2
+ if ! aptkey_execute "$GPG_SH" --keyring "$(dearmor_filename "$FROM")" --export "$@" > "$TO" 2> "${GPGHOMEDIR}/gpgoutput.log"; then
+ cat >&2 "${GPGHOMEDIR}/gpgoutput.log"
+ false
+ else
+ chmod 0644 -- "$TO"
+ fi
+}
+
+import_keyring_into_keyring() {
+ local FROM="${1:-${GPGHOMEDIR}/pubring.gpg}"
+ local TO="${2:-${GPGHOMEDIR}/pubring.gpg}"
+ shift 2
+ rm -f "${GPGHOMEDIR}/gpgoutput.log"
+ # the idea is simple: We take keys from one keyring and copy it to another
+ # we do this with so many checks in between to ensure that WE control the
+ # creation, so we know that the (potentially) created $TO keyring is a
+ # simple keyring rather than a keybox as gpg2 would create it which in turn
+ # can't be read by gpgv.
+ # BEWARE: This is designed more in the way to work with the current
+ # callers, than to have a well defined it would be easy to add new callers to.
+ if [ ! -s "$TO" ]; then
+ if [ -s "$FROM" ]; then
+ if [ -z "$2" ]; then
+ local OPTS
+ if [ "${TO##*.}" = 'asc' ]; then
+ OPTS='--armor'
+ fi
+ export_key_from_to "$(dearmor_filename "$FROM")" "$TO" $OPTS ${1:+"$1"}
+ else
+ create_new_keyring "$TO"
+ fi
+ else
+ create_new_keyring "$TO"
+ fi
+ elif [ -s "$FROM" ]; then
+ local EXPORTLIMIT="$1"
+ if [ -n "$1$2" ]; then shift; fi
+ local DEARMORTO="$(dearmor_filename "$TO")"
+ if ! aptkey_execute "$GPG_SH" --keyring "$(dearmor_filename "$FROM")" --export ${EXPORTLIMIT:+"$EXPORTLIMIT"} \
+ | aptkey_execute "$GPG_SH" --keyring "$DEARMORTO" --batch --import "$@" > "${GPGHOMEDIR}/gpgoutput.log" 2>&1; then
+ cat >&2 "${GPGHOMEDIR}/gpgoutput.log"
+ false
+ fi
+ if [ "$DEARMORTO" != "$TO" ]; then
+ export_key_from_to "$DEARMORTO" "${DEARMORTO}.asc" --armor
+ if ! cmp -s "$TO" "${DEARMORTO}.asc" 2>/dev/null; then
+ cp -a "$TO" "${TO}~"
+ mv -f "${DEARMORTO}.asc" "$TO"
+ fi
+ fi
+ fi
+}
+
+dearmor_keyring() {
+ # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=831409#67
+ # The awk script is more complex through to skip surrounding garbage and
+ # to support multiple keys in one file (old gpgs generate version headers
+ # which get printed with the original and hence result in garbage input for base64
+ awk '/^-----BEGIN/{ x = 1; }
+/^$/{ if (x == 1) { x = 2; }; }
+/^[^=-]/{ if (x == 2) { print $0; }; }
+/^-----END/{ x = 0; }' | base64 -d
+}
+dearmor_filename() {
+ if [ "${1##*.}" = 'asc' ]; then
+ local trusted="${GPGHOMEDIR}/${1##*/}.gpg"
+ if [ -s "$1" ]; then
+ dearmor_keyring < "$1" > "$trusted"
+ fi
+ echo "$trusted"
+ elif [ "${1##*.}" = 'gpg' ]; then
+ echo "$1"
+ elif [ "$(head -n 1 "$1" 2>/dev/null)" = '-----BEGIN PGP PUBLIC KEY BLOCK-----' ]; then
+ local trusted="${GPGHOMEDIR}/${1##*/}.gpg"
+ dearmor_keyring < "$1" > "$trusted"
+ echo "$trusted"
+ else
+ echo "$1"
+ fi
+}
+catfile() {
+ cat "$(dearmor_filename "$1")" >> "$2"
+}
+
+merge_all_trusted_keyrings_into_pubring() {
+ # does the same as:
+ # foreach_keyring_do 'import_keys_from_keyring' "${GPGHOMEDIR}/pubring.gpg"
+ # but without using gpg, just cat and find
+ local PUBRING="$(readlink -f "${GPGHOMEDIR}")/pubring.gpg"
+ rm -f "$PUBRING"
+ touch "$PUBRING"
+ foreach_keyring_do 'catfile' "$PUBRING"
+}
+
+import_keys_from_keyring() {
+ import_keyring_into_keyring "$1" "$2"
+}
+
+merge_keys_into_keyrings() {
+ import_keyring_into_keyring "$2" "$1" '' --import-options 'merge-only'
+}
+
+merge_back_changes() {
+ if [ -n "$FORCED_KEYRING" ]; then
+ # if the keyring was forced merge is already done
+ if [ "$FORCED_KEYRING" != "$TRUSTEDFILE" ]; then
+ mv -f "$FORCED_KEYRING" "${FORCED_KEYRING}~"
+ export_key_from_to "$TRUSTEDFILE" "$FORCED_KEYRING" --armor
+ fi
+ return
+ fi
+ if [ -s "${GPGHOMEDIR}/pubring.gpg" ]; then
+ # merge all updated keys
+ foreach_keyring_do 'merge_keys_into_keyrings' "${GPGHOMEDIR}/pubring.gpg"
+ fi
+ # look for keys which were added or removed
+ get_fingerprints_of_keyring "${GPGHOMEDIR}/pubring.orig.gpg" > "${GPGHOMEDIR}/pubring.orig.keylst"
+ get_fingerprints_of_keyring "${GPGHOMEDIR}/pubring.gpg" > "${GPGHOMEDIR}/pubring.keylst"
+ comm -3 "${GPGHOMEDIR}/pubring.keylst" "${GPGHOMEDIR}/pubring.orig.keylst" > "${GPGHOMEDIR}/pubring.diff"
+ # key isn't part of new keyring, so remove
+ cut -f 2 "${GPGHOMEDIR}/pubring.diff" | while read key; do
+ if [ -z "$key" ]; then continue; fi
+ foreach_keyring_do 'remove_key_from_keyring' "$key"
+ done
+ # key is only part of new keyring, so we need to import it
+ cut -f 1 "${GPGHOMEDIR}/pubring.diff" | while read key; do
+ if [ -z "$key" ]; then continue; fi
+ import_keyring_into_keyring '' "$TRUSTEDFILE" "$key"
+ done
+}
+
+setup_merged_keyring() {
+ if [ -n "$FORCED_KEYID" ]; then
+ merge_all_trusted_keyrings_into_pubring
+ FORCED_KEYRING="${GPGHOMEDIR}/forcedkeyid.gpg"
+ TRUSTEDFILE="${FORCED_KEYRING}"
+ echo "#!/bin/sh
+exec sh '($(escape_shell "${GPG}")' --keyring '$(escape_shell "${TRUSTEDFILE}")' \"\$@\"" > "${GPGHOMEDIR}/gpg.1.sh"
+ GPG="${GPGHOMEDIR}/gpg.1.sh"
+ # ignore error as this "just" means we haven't found the forced keyid and the keyring will be empty
+ import_keyring_into_keyring '' "$TRUSTEDFILE" "$FORCED_KEYID" || true
+ elif [ -z "$FORCED_KEYRING" ]; then
+ merge_all_trusted_keyrings_into_pubring
+ if [ -r "${GPGHOMEDIR}/pubring.gpg" ]; then
+ cp -a "${GPGHOMEDIR}/pubring.gpg" "${GPGHOMEDIR}/pubring.orig.gpg"
+ else
+ touch "${GPGHOMEDIR}/pubring.gpg" "${GPGHOMEDIR}/pubring.orig.gpg"
+ fi
+ echo "#!/bin/sh
+exec sh '$(escape_shell "${GPG}")' --keyring '$(escape_shell "${GPGHOMEDIR}/pubring.gpg")' \"\$@\"" > "${GPGHOMEDIR}/gpg.1.sh"
+ GPG="${GPGHOMEDIR}/gpg.1.sh"
+ else
+ TRUSTEDFILE="$(dearmor_filename "$FORCED_KEYRING")"
+ create_new_keyring "$TRUSTEDFILE"
+ echo "#!/bin/sh
+exec sh '$(escape_shell "${GPG}")' --keyring '$(escape_shell "${TRUSTEDFILE}")' \"\$@\"" > "${GPGHOMEDIR}/gpg.1.sh"
+ GPG="${GPGHOMEDIR}/gpg.1.sh"
+ fi
+}
+
+create_new_keyring() {
+ # gpg defaults to mode 0600 for new keyrings. Create one with 0644 instead.
+ if ! [ -e "$1" ]; then
+ if [ -w "$(dirname "$1")" ]; then
+ touch -- "$1"
+ chmod 0644 -- "$1"
+ fi
+ fi
+}
+
+aptkey_execute() { sh "$@"; }
+
+usage() {
+ echo "Usage: apt-key [--keyring file] [command] [arguments]"
+ echo
+ echo "Manage apt's list of trusted keys"
+ echo
+ echo " apt-key add <file> - add the key contained in <file> ('-' for stdin)"
+ echo " apt-key del <keyid> - remove the key <keyid>"
+ echo " apt-key export <keyid> - output the key <keyid>"
+ echo " apt-key exportall - output all trusted keys"
+ echo " apt-key update - update keys using the keyring package"
+ echo " apt-key net-update - update keys using the network"
+ echo " apt-key list - list keys"
+ echo " apt-key finger - list fingerprints"
+ echo " apt-key adv - pass advanced options to gpg (download key)"
+ echo
+ echo "If no specific keyring file is given the command applies to all keyring files."
+}
+
+while [ -n "$1" ]; do
+ case "$1" in
+ --keyring)
+ shift
+ TRUSTEDFILE="$1"
+ FORCED_KEYRING="$1"
+ ;;
+ --keyid)
+ shift
+ FORCED_KEYID="$1"
+ ;;
+ --secret-keyring)
+ shift
+ FORCED_SECRET_KEYRING="$1"
+ ;;
+ --readonly)
+ merge_back_changes() { true; }
+ create_new_keyring() { if [ ! -r "$FORCED_KEYRING" ]; then TRUSTEDFILE='/dev/null'; FORCED_KEYRING="$TRUSTEDFILE"; fi; }
+ ;;
+ --fakeroot)
+ requires_root() { true; }
+ ;;
+ --quiet)
+ aptkey_echo() { true; }
+ ;;
+ --debug1)
+ # some cmds like finger redirect stderr to /dev/null …
+ aptkey_execute() { echo 'EXEC:' "$@"; sh "$@"; }
+ ;;
+ --debug2)
+ # … other more complicated ones pipe gpg into gpg.
+ aptkey_execute() { echo >&2 'EXEC:' "$@"; sh "$@"; }
+ ;;
+ --homedir)
+ # force usage of a specific homedir instead of creating a temporary
+ shift
+ GPGHOMEDIR="$1"
+ ;;
+ --*)
+ echo >&2 "Unknown option: $1"
+ usage
+ exit 1;;
+ *)
+ break;;
+ esac
+ shift
+done
+
+if [ -z "$TRUSTEDFILE" ]; then
+ TRUSTEDFILE="/etc/apt/trusted.gpg"
+ eval $(apt-config shell TRUSTEDFILE Apt::GPGV::TrustedKeyring)
+ eval $(apt-config shell TRUSTEDFILE Dir::Etc::Trusted/f)
+fi
+
+command="$1"
+if [ -z "$command" ]; then
+ usage
+ exit 1
+fi
+shift
+
+find_gpgv_status_fd() {
+ while [ -n "$1" ]; do
+ if [ "$1" = '--status-fd' ]; then
+ shift
+ echo "$1"
+ break
+ fi
+ shift
+ done
+}
+GPGSTATUSFD="$(find_gpgv_status_fd "$@")"
+
+apt_warn() {
+ if [ -z "$GPGHOMEDIR" ]; then
+ echo >&2 'W:' "$@"
+ else
+ echo 'W:' "$@" > "${GPGHOMEDIR}/aptwarnings.log"
+ fi
+ if [ -n "$GPGSTATUSFD" ]; then
+ echo >&${GPGSTATUSFD} '[APTKEY:] WARNING' "$@"
+ fi
+}
+apt_error() {
+ if [ -z "$GPGHOMEDIR" ]; then
+ echo >&2 'E:' "$@"
+ else
+ echo 'E:' "$@" > "${GPGHOMEDIR}/aptwarnings.log"
+ fi
+ if [ -n "$GPGSTATUSFD" ]; then
+ echo >&${GPGSTATUSFD} '[APTKEY:] ERROR' "$@"
+ fi
+}
+
+cleanup_gpg_home() {
+ if [ -z "$GPGHOMEDIR" ]; then return; fi
+ if [ -s "$GPGHOMEDIR/aptwarnings.log" ]; then
+ cat >&2 "$GPGHOMEDIR/aptwarnings.log"
+ fi
+ if command_available 'gpgconf'; then
+ GNUPGHOME="${GPGHOMEDIR}" gpgconf --kill gpg-agent >/dev/null 2>&1 || true
+ fi
+ rm -rf "$GPGHOMEDIR"
+}
+
+# gpg needs (in different versions more or less) files to function correctly,
+# so we give it its own homedir and generate some valid content for it later on
+create_gpg_home() {
+ # for cases in which we want to cache a homedir due to expensive setup
+ if [ -n "$GPGHOMEDIR" ]; then
+ return
+ fi
+ if [ -n "$TMPDIR" ]; then
+ # tmpdir is a directory and current user has rwx access to it
+ # same tests as in apt-pkg/contrib/fileutl.cc GetTempDir()
+ if [ ! -d "$TMPDIR" ] || [ ! -r "$TMPDIR" ] || [ ! -w "$TMPDIR" ] || [ ! -x "$TMPDIR" ]; then
+ unset TMPDIR
+ fi
+ fi
+ GPGHOMEDIR="$(mktemp --directory --tmpdir 'apt-key-gpghome.XXXXXXXXXX')"
+ CURRENTTRAP="${CURRENTTRAP} cleanup_gpg_home;"
+ trap "${CURRENTTRAP}" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
+ if [ -z "$GPGHOMEDIR" ]; then
+ apt_error "Could not create temporary gpg home directory in $TMPDIR (wrong permissions?)"
+ exit 28
+ fi
+ chmod 700 "$GPGHOMEDIR"
+}
+
+prepare_gpg_home() {
+ # crude detection if we are called from a maintainerscript where the
+ # package depends on gnupg or not. We accept recommends here as
+ # well as the script hopefully uses apt-key optionally then like e.g.
+ # debian-archive-keyring for (upgrade) cleanup did
+ if [ -n "$DPKG_MAINTSCRIPT_PACKAGE" ] && [ -z "$APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE" ]; then
+ if ! dpkg-query --show --showformat '${Pre-Depends}${Depends}${Recommends}\n' "$DPKG_MAINTSCRIPT_PACKAGE" 2>/dev/null | grep -q gnupg; then
+ cat >&2 <<EOF
+Warning: The $DPKG_MAINTSCRIPT_NAME maintainerscript of the package $DPKG_MAINTSCRIPT_PACKAGE
+Warning: seems to use apt-key (provided by apt) without depending on gnupg or gnupg2.
+Warning: This will BREAK in the future and should be fixed by the package maintainer(s).
+Note: Check first if apt-key functionality is needed at all - it probably isn't!
+EOF
+ fi
+ fi
+ eval "$(apt-config shell GPG_EXE Apt::Key::gpgcommand)"
+ if [ -n "$GPG_EXE" ] && command_available "$GPG_EXE"; then
+ true
+ elif command_available 'gpg'; then
+ GPG_EXE="gpg"
+ elif command_available 'gpg2'; then
+ GPG_EXE="gpg2"
+ elif command_available 'gpg1'; then
+ GPG_EXE="gpg1"
+ else
+ apt_error 'gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation'
+ exit 255
+ fi
+
+ create_gpg_home
+
+ # now tell gpg that it shouldn't try to maintain this trustdb file
+ echo "#!/bin/sh
+exec '$(escape_shell "${GPG_EXE}")' --ignore-time-conflict --no-options --no-default-keyring \\
+--homedir '$(escape_shell "${GPGHOMEDIR}")' --no-auto-check-trustdb --trust-model always \"\$@\"" > "${GPGHOMEDIR}/gpg.0.sh"
+ GPG_SH="${GPGHOMEDIR}/gpg.0.sh"
+ GPG="$GPG_SH"
+
+ # create the trustdb with an (empty) dummy keyring
+ # older gpgs required it, newer gpgs even warn that it isn't needed,
+ # but require it nonetheless for some commands, so we just play safe
+ # here for the foreseeable future and create a dummy one
+ touch "${GPGHOMEDIR}/empty.gpg"
+ if ! "$GPG_EXE" --ignore-time-conflict --no-options --no-default-keyring \
+ --homedir "$GPGHOMEDIR" --quiet --check-trustdb --keyring "${GPGHOMEDIR}/empty.gpg" >"${GPGHOMEDIR}/gpgoutput.log" 2>&1; then
+ cat >&2 "${GPGHOMEDIR}/gpgoutput.log"
+ false
+ fi
+
+ # We don't usually need a secret keyring, of course, but
+ # for advanced operations, we might really need a secret keyring after all
+ if [ -n "$FORCED_SECRET_KEYRING" ] && [ -r "$FORCED_SECRET_KEYRING" ]; then
+ if ! aptkey_execute "$GPG" -v --batch --import "$FORCED_SECRET_KEYRING" >"${GPGHOMEDIR}/gpgoutput.log" 2>&1; then
+ # already imported keys cause gpg1 to fail for some reason… ignore this error
+ if ! grep -q 'already in secret keyring' "${GPGHOMEDIR}/gpgoutput.log"; then
+ cat >&2 "${GPGHOMEDIR}/gpgoutput.log"
+ false
+ fi
+ fi
+ else
+ # and then, there are older versions of gpg which panic and implode
+ # if there isn't one available - and writeable for imports
+ # and even if not output is littered with the creation of a secring,
+ # so lets call import once to have it create what it wants in silence
+ echo -n | aptkey_execute "$GPG" --batch --import >/dev/null 2>&1 || true
+ fi
+}
+
+warn_on_script_usage() {
+ if [ -n "$APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE" ]; then
+ return
+ fi
+ # (Maintainer) scripts should not be using apt-key
+ if [ -n "$DPKG_MAINTSCRIPT_PACKAGE" ]; then
+ echo >&2 "Warning: apt-key should not be used in scripts (called from $DPKG_MAINTSCRIPT_NAME maintainerscript of the package ${DPKG_MAINTSCRIPT_PACKAGE})"
+ elif [ ! -t 1 ]; then
+ echo >&2 "Warning: apt-key output should not be parsed (stdout is not a terminal)"
+ fi
+}
+
+if [ "$command" != 'help' ] && [ "$command" != 'verify' ]; then
+ prepare_gpg_home
+fi
+
+case "$command" in
+ add)
+ warn_on_script_usage
+ requires_root
+ setup_merged_keyring
+ aptkey_execute "$GPG" --quiet --batch --import "$@"
+ merge_back_changes
+ aptkey_echo "OK"
+ ;;
+ del|rm|remove)
+ # no script warning here as removing 'add' usage needs 'del' for cleanup
+ requires_root
+ foreach_keyring_do 'remove_key_from_keyring' "$@"
+ aptkey_echo "OK"
+ ;;
+ update)
+ warn_on_script_usage
+ requires_root
+ setup_merged_keyring
+ update
+ merge_back_changes
+ ;;
+ net-update)
+ requires_root
+ setup_merged_keyring
+ net_update
+ merge_back_changes
+ ;;
+ list|finger*)
+ warn_on_script_usage
+ foreach_keyring_do 'list_keys_in_keyring' --fingerprint "$@"
+ ;;
+ export|exportall)
+ warn_on_script_usage
+ merge_all_trusted_keyrings_into_pubring
+ aptkey_execute "$GPG_SH" --keyring "${GPGHOMEDIR}/pubring.gpg" --armor --export "$@"
+ ;;
+ adv*)
+ warn_on_script_usage
+ setup_merged_keyring
+ aptkey_echo "Executing: $GPG" "$@"
+ aptkey_execute "$GPG" "$@"
+ merge_back_changes
+ ;;
+ verify)
+ GPGV=''
+ eval $(apt-config shell GPGV Apt::Key::gpgvcommand)
+ if [ -n "$GPGV" ] && command_available "$GPGV"; then true;
+ elif command_available 'gpgv'; then GPGV='gpgv';
+ elif command_available 'gpgv2'; then GPGV='gpgv2';
+ elif command_available 'gpgv1'; then GPGV='gpgv1';
+ else
+ apt_error 'gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed'
+ exit 29
+ fi
+ # for a forced keyid we need gpg --export, so full wrapping required
+ if [ -n "$FORCED_KEYID" ]; then
+ prepare_gpg_home
+ else
+ create_gpg_home
+ fi
+ setup_merged_keyring
+ if [ -n "$FORCED_KEYRING" ]; then
+ "$GPGV" --homedir "${GPGHOMEDIR}" --keyring "$(dearmor_filename "${FORCED_KEYRING}")" --ignore-time-conflict "$@"
+ else
+ "$GPGV" --homedir "${GPGHOMEDIR}" --keyring "${GPGHOMEDIR}/pubring.gpg" --ignore-time-conflict "$@"
+ fi
+ ;;
+ help)
+ usage
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+esac
diff --git a/cmdline/apt-mark.cc b/cmdline/apt-mark.cc
new file mode 100644
index 000000000..0cba31e70
--- /dev/null
+++ b/cmdline/apt-mark.cc
@@ -0,0 +1,326 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* #####################################################################
+ apt-mark - show and change auto-installed bit information
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/cacheset.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/init.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/statechanges.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/macros.h>
+#include <apt-pkg/pkgcache.h>
+
+#include <apt-private/private-cmndline.h>
+#include <apt-private/private-output.h>
+#include <apt-private/private-main.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <algorithm>
+#include <fstream>
+#include <iostream>
+#include <string>
+#include <vector>
+
+#include <apti18n.h>
+ /*}}}*/
+using namespace std;
+
+/* DoAuto - mark packages as automatically/manually installed {{{*/
+static bool DoAuto(CommandLine &CmdL)
+{
+ pkgCacheFile CacheFile;
+ pkgDepCache * const DepCache = CacheFile.GetDepCache();
+ if (unlikely(DepCache == nullptr))
+ return false;
+
+ APT::PackageList pkgset = APT::PackageList::FromCommandLine(CacheFile, CmdL.FileList + 1);
+ if (pkgset.empty() == true)
+ return _error->Error(_("No packages found"));
+
+ bool MarkAuto = strcasecmp(CmdL.FileList[0],"auto") == 0;
+ int AutoMarkChanged = 0;
+
+ for (APT::PackageList::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
+ {
+ if (Pkg->CurrentVer == 0)
+ {
+ ioprintf(c1out,_("%s can not be marked as it is not installed.\n"), Pkg.FullName(true).c_str());
+ continue;
+ }
+ else if ((((*DepCache)[Pkg].Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto) == MarkAuto)
+ {
+ if (MarkAuto == false)
+ ioprintf(c1out,_("%s was already set to manually installed.\n"), Pkg.FullName(true).c_str());
+ else
+ ioprintf(c1out,_("%s was already set to automatically installed.\n"), Pkg.FullName(true).c_str());
+ continue;
+ }
+
+ if (MarkAuto == false)
+ ioprintf(c1out,_("%s set to manually installed.\n"), Pkg.FullName(true).c_str());
+ else
+ ioprintf(c1out,_("%s set to automatically installed.\n"), Pkg.FullName(true).c_str());
+
+ DepCache->MarkAuto(Pkg, MarkAuto);
+ ++AutoMarkChanged;
+ }
+ if (AutoMarkChanged > 0 && _config->FindB("APT::Mark::Simulate", false) == false)
+ return DepCache->writeStateFile(NULL);
+ return true;
+}
+ /*}}}*/
+/* DoMarkAuto - mark packages as automatically/manually installed {{{*/
+/* Does the same as DoAuto but tries to do it exactly the same why as
+ the python implementation did it so it can be a drop-in replacement */
+static bool DoMarkAuto(CommandLine &CmdL)
+{
+ pkgCacheFile CacheFile;
+ pkgDepCache * const DepCache = CacheFile.GetDepCache();
+ if (unlikely(DepCache == nullptr))
+ return false;
+
+ APT::PackageList pkgset = APT::PackageList::FromCommandLine(CacheFile, CmdL.FileList + 1);
+ if (pkgset.empty() == true)
+ return _error->Error(_("No packages found"));
+
+ bool const MarkAuto = strcasecmp(CmdL.FileList[0],"markauto") == 0;
+ bool const Verbose = _config->FindB("APT::MarkAuto::Verbose", false);
+ int AutoMarkChanged = 0;
+
+ for (APT::PackageList::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
+ {
+ if (Pkg->CurrentVer == 0 ||
+ (((*DepCache)[Pkg].Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto) == MarkAuto)
+ continue;
+
+ if (Verbose == true)
+ ioprintf(c1out, "changing %s to %d\n", Pkg.Name(), (MarkAuto == false) ? 0 : 1);
+
+ DepCache->MarkAuto(Pkg, MarkAuto);
+ ++AutoMarkChanged;
+ }
+ if (AutoMarkChanged > 0 && _config->FindB("APT::Mark::Simulate", false) == false)
+ return DepCache->writeStateFile(NULL);
+
+ _error->Notice(_("This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' instead."));
+
+ return true;
+}
+ /*}}}*/
+/* ShowAuto - show automatically installed packages (sorted) {{{*/
+static bool ShowAuto(CommandLine &CmdL)
+{
+ pkgCacheFile CacheFile;
+ pkgDepCache * const DepCache = CacheFile.GetDepCache();
+ if (unlikely(DepCache == nullptr))
+ return false;
+
+ std::vector<string> packages;
+
+ bool const ShowAuto = strcasecmp(CmdL.FileList[0],"showauto") == 0;
+
+ if (CmdL.FileList[1] == 0)
+ {
+ packages.reserve(DepCache->Head().PackageCount / 3);
+ for (pkgCache::PkgIterator P = DepCache->PkgBegin(); P.end() == false; ++P)
+ if (P->CurrentVer != 0 &&
+ (((*DepCache)[P].Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto) == ShowAuto)
+ packages.push_back(P.FullName(true));
+ }
+ else
+ {
+ APT::CacheSetHelper helper(false); // do not show errors
+ APT::PackageSet pkgset = APT::PackageSet::FromCommandLine(CacheFile, CmdL.FileList + 1, helper);
+ packages.reserve(pkgset.size());
+ for (APT::PackageSet::const_iterator P = pkgset.begin(); P != pkgset.end(); ++P)
+ if (P->CurrentVer != 0 &&
+ (((*DepCache)[P].Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto) == ShowAuto)
+ packages.push_back(P.FullName(true));
+ }
+
+ std::sort(packages.begin(), packages.end());
+
+ for (vector<string>::const_iterator I = packages.begin(); I != packages.end(); ++I)
+ std::cout << *I << std::endl;
+
+ return true;
+}
+ /*}}}*/
+// DoSelection - wrapping around dpkg selections /*{{{*/
+static bool DoSelection(CommandLine &CmdL)
+{
+ pkgCacheFile CacheFile;
+ pkgCache * const Cache = CacheFile.GetPkgCache();
+ if (unlikely(Cache == nullptr))
+ return false;
+
+ APT::VersionVector pkgset = APT::VersionVector::FromCommandLine(CacheFile, CmdL.FileList + 1, APT::CacheSetHelper::INSTCAND);
+ if (pkgset.empty() == true)
+ return _error->Error(_("No packages found"));
+
+ APT::StateChanges marks;
+ if (strcasecmp(CmdL.FileList[0], "hold") == 0 || strcasecmp(CmdL.FileList[0], "unhold") == 0)
+ {
+ auto const part = std::stable_partition(pkgset.begin(), pkgset.end(),
+ [](pkgCache::VerIterator const &V) { return V.ParentPkg()->SelectedState == pkgCache::State::Hold; });
+
+ bool const MarkHold = strcasecmp(CmdL.FileList[0],"hold") == 0;
+ auto const doneBegin = MarkHold ? pkgset.begin() : part;
+ auto const doneEnd = MarkHold ? part : pkgset.end();
+ std::for_each(doneBegin, doneEnd, [&MarkHold](pkgCache::VerIterator const &V) {
+ if (MarkHold == true)
+ ioprintf(c1out, _("%s was already set on hold.\n"), V.ParentPkg().FullName(true).c_str());
+ else
+ ioprintf(c1out, _("%s was already not hold.\n"), V.ParentPkg().FullName(true).c_str());
+ });
+
+ if (doneBegin == pkgset.begin() && doneEnd == pkgset.end())
+ return true;
+
+ auto const changeBegin = MarkHold ? part : pkgset.begin();
+ auto const changeEnd = MarkHold ? pkgset.end() : part;
+ std::move(changeBegin, changeEnd, std::back_inserter(MarkHold ? marks.Hold() : marks.Unhold()));
+ }
+ else
+ {
+ // FIXME: Maybe show a message for unchanged states here as well?
+ if (strcasecmp(CmdL.FileList[0], "purge") == 0)
+ std::swap(marks.Purge(), pkgset);
+ else if (strcasecmp(CmdL.FileList[0], "deinstall") == 0 || strcasecmp(CmdL.FileList[0], "remove") == 0)
+ std::swap(marks.Remove(), pkgset);
+ else //if (strcasecmp(CmdL.FileList[0], "install") == 0)
+ std::swap(marks.Install(), pkgset);
+ }
+ pkgset.clear();
+
+ bool success = true;
+ if (_config->FindB("APT::Mark::Simulate", false) == false)
+ {
+ success = marks.Save();
+ if (success == false)
+ _error->Error(_("Executing dpkg failed. Are you root?"));
+ }
+ for (auto Ver : marks.Hold())
+ ioprintf(c1out,_("%s set on hold.\n"), Ver.ParentPkg().FullName(true).c_str());
+ for (auto Ver : marks.Unhold())
+ ioprintf(c1out,_("Canceled hold on %s.\n"), Ver.ParentPkg().FullName(true).c_str());
+ for (auto Ver : marks.Purge())
+ ioprintf(c1out,_("Selected %s for purge.\n"), Ver.ParentPkg().FullName(true).c_str());
+ for (auto Ver : marks.Remove())
+ ioprintf(c1out,_("Selected %s for removal.\n"), Ver.ParentPkg().FullName(true).c_str());
+ for (auto Ver : marks.Install())
+ ioprintf(c1out,_("Selected %s for installation.\n"), Ver.ParentPkg().FullName(true).c_str());
+ return success;
+}
+ /*}}}*/
+static bool ShowSelection(CommandLine &CmdL) /*{{{*/
+{
+ pkgCacheFile CacheFile;
+ pkgCache * const Cache = CacheFile.GetPkgCache();
+ if (unlikely(Cache == nullptr))
+ return false;
+
+ pkgCache::State::PkgSelectedState selector;
+ if (strncasecmp(CmdL.FileList[0], "showpurge", strlen("showpurge")) == 0)
+ selector = pkgCache::State::Purge;
+ else if (strncasecmp(CmdL.FileList[0], "showdeinstall", strlen("showdeinstall")) == 0 ||
+ strncasecmp(CmdL.FileList[0], "showremove", strlen("showremove")) == 0)
+ selector = pkgCache::State::DeInstall;
+ else if (strncasecmp(CmdL.FileList[0], "showhold", strlen("showhold")) == 0)
+ selector = pkgCache::State::Hold;
+ else //if (strcasecmp(CmdL.FileList[0], "showinstall", strlen("showinstall")) == 0)
+ selector = pkgCache::State::Install;
+
+ std::vector<string> packages;
+
+ if (CmdL.FileList[1] == 0)
+ {
+ packages.reserve(50); // how many holds are realistic? I hope just a few…
+ for (pkgCache::PkgIterator P = Cache->PkgBegin(); P.end() == false; ++P)
+ if (P->SelectedState == selector)
+ packages.push_back(P.FullName(true));
+ }
+ else
+ {
+ APT::CacheSetHelper helper(false); // do not show errors
+ APT::PackageSet pkgset = APT::PackageSet::FromCommandLine(CacheFile, CmdL.FileList + 1, helper);
+ packages.reserve(pkgset.size());
+ for (APT::PackageSet::const_iterator P = pkgset.begin(); P != pkgset.end(); ++P)
+ if (P->SelectedState == selector)
+ packages.push_back(P.FullName(true));
+ }
+
+ std::sort(packages.begin(), packages.end());
+
+ for (vector<string>::const_iterator I = packages.begin(); I != packages.end(); ++I)
+ std::cout << *I << std::endl;
+
+ return true;
+}
+ /*}}}*/
+static bool ShowHelp(CommandLine &) /*{{{*/
+{
+ std::cout <<
+ _("Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+ "\n"
+ "apt-mark is a simple command line interface for marking packages\n"
+ "as manually or automatically installed. It can also be used to\n"
+ "manipulate the dpkg(1) selection states of packages, and to list\n"
+ "all packages with or without a certain marking.\n");
+ return true;
+}
+ /*}}}*/
+static std::vector<aptDispatchWithHelp> GetCommands() /*{{{*/
+{
+ return {
+ {"auto",&DoAuto, _("Mark the given packages as automatically installed")},
+ {"manual",&DoAuto, _("Mark the given packages as manually installed")},
+ {"hold",&DoSelection, _("Mark a package as held back")},
+ {"unhold",&DoSelection, _("Unset a package set as held back")},
+ {"install",&DoSelection, nullptr},
+ {"remove",&DoSelection, nullptr}, // dpkg uses deinstall, but we use remove everywhere else
+ {"deinstall",&DoSelection, nullptr},
+ {"purge",&DoSelection, nullptr},
+ {"showauto",&ShowAuto, _("Print the list of automatically installed packages")},
+ {"showmanual",&ShowAuto, _("Print the list of manually installed packages")},
+ {"showhold",&ShowSelection, _("Print the list of package on hold")}, {"showholds",&ShowSelection, nullptr},
+ {"showinstall",&ShowSelection, nullptr}, {"showinstalls",&ShowSelection, nullptr},
+ {"showdeinstall",&ShowSelection, nullptr}, {"showdeinstalls",&ShowSelection, nullptr},
+ {"showremove",&ShowSelection, nullptr}, {"showremoves",&ShowSelection, nullptr},
+ {"showpurge",&ShowSelection, nullptr}, {"showpurges",&ShowSelection, nullptr},
+ // obsolete commands for compatibility
+ {"markauto", &DoMarkAuto, nullptr},
+ {"unmarkauto", &DoMarkAuto, nullptr},
+ {nullptr, nullptr, nullptr}
+ };
+}
+ /*}}}*/
+int main(int argc,const char *argv[]) /*{{{*/
+{
+ CommandLine CmdL;
+ auto const Cmds = ParseCommandLine(CmdL, APT_CMD::APT_MARK, &_config, &_system, argc, argv, &ShowHelp, &GetCommands);
+
+ InitOutput();
+
+ return DispatchCommandLine(CmdL, Cmds);
+}
+ /*}}}*/
diff --git a/cmdline/apt-report-mirror-failure b/cmdline/apt-report-mirror-failure
new file mode 100755
index 000000000..7c390642a
--- /dev/null
+++ b/cmdline/apt-report-mirror-failure
@@ -0,0 +1,29 @@
+#!/usr/bin/python
+#
+# This is a stub that is meant to support failure reporting of
+# mirrors to a central database
+#
+# its currently not used
+
+import sys
+import urllib
+import apt_pkg
+
+apt_pkg.init()
+url = apt_pkg.Config.find("Acquire::Mirror::ReportFailures", "")
+ #"http://people.ubuntu.com:9000/mirror-failure")
+ #"http://localhost:9000/mirror-failure")
+if not url:
+ sys.exit(0)
+
+print "Reporting mirror failure to '%s'" % url
+
+data = {}
+data['mirror'] = sys.argv[1]
+data['failurl'] = sys.argv[2]
+data['error'] = sys.argv[3]
+f = urllib.urlopen(url, urllib.urlencode(data))
+f.read()
+f.close()
+
+
diff --git a/cmdline/apt-sortpkgs.cc b/cmdline/apt-sortpkgs.cc
new file mode 100644
index 000000000..cf19b84ec
--- /dev/null
+++ b/cmdline/apt-sortpkgs.cc
@@ -0,0 +1,166 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: apt-sortpkgs.cc,v 1.5 2003/01/11 07:18:44 jgg Exp $
+/* ######################################################################
+
+ APT Sort Packages - Program to sort Package and Source files
+
+ This program is quite simple, it just sorts the package files by
+ package and sorts the fields inside by the internal APT sort order.
+ Input is taken from a named file and sent to stdout.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/tagfile.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/init.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/pkgsystem.h>
+
+#include <apt-private/private-cmndline.h>
+#include <apt-private/private-main.h>
+
+#include <vector>
+#include <algorithm>
+#include <stdio.h>
+#include <unistd.h>
+#include <iostream>
+#include <string>
+#include <memory>
+
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+struct PkgName /*{{{*/
+{
+ string Name;
+ string Ver;
+ string Arch;
+ unsigned long Offset;
+ unsigned long Length;
+
+ inline int Compare3(const PkgName &x) const
+ {
+ int A = stringcasecmp(Name,x.Name);
+ if (A == 0)
+ {
+ A = stringcasecmp(Ver,x.Ver);
+ if (A == 0)
+ A = stringcasecmp(Arch,x.Arch);
+ }
+ return A;
+ }
+
+ bool operator <(const PkgName &x) const {return Compare3(x) < 0;};
+ bool operator >(const PkgName &x) const {return Compare3(x) > 0;};
+ bool operator ==(const PkgName &x) const {return Compare3(x) == 0;};
+};
+ /*}}}*/
+// DoIt - Sort a single file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static bool DoIt(string InFile)
+{
+ FileFd Fd(InFile,FileFd::ReadOnly);
+ pkgTagFile Tags(&Fd);
+ if (_error->PendingError() == true)
+ return false;
+
+ // Parse.
+ vector<PkgName> List;
+ pkgTagSection Section;
+ unsigned long Largest = 0;
+ unsigned long Offset = Tags.Offset();
+ bool Source = _config->FindB("APT::SortPkgs::Source",false);
+ while (Tags.Step(Section) == true)
+ {
+ PkgName Tmp;
+
+ /* Fetch the name, auto-detecting if this is a source file or a
+ package file */
+ Tmp.Name = Section.FindS("Package");
+ Tmp.Ver = Section.FindS("Version");
+ Tmp.Arch = Section.FindS("Architecture");
+
+ if (Tmp.Name.empty() == true)
+ return _error->Error(_("Unknown package record!"));
+
+ Tmp.Offset = Offset;
+ Tmp.Length = Section.size();
+ if (Largest < Tmp.Length)
+ Largest = Tmp.Length;
+
+ List.push_back(Tmp);
+
+ Offset = Tags.Offset();
+ }
+ if (_error->PendingError() == true)
+ return false;
+
+ // Sort it
+ sort(List.begin(),List.end());
+
+ const char **Order = TFRewritePackageOrder;
+ if (Source == true)
+ Order = TFRewriteSourceOrder;
+
+ // Emit
+ FileFd stdoutfd;
+ stdoutfd.OpenDescriptor(STDOUT_FILENO, FileFd::WriteOnly, false);
+ auto const Buffer = std::unique_ptr<unsigned char[]>(new unsigned char[Largest+1]);
+ for (vector<PkgName>::iterator I = List.begin(); I != List.end(); ++I)
+ {
+ // Read in the Record.
+ if (Fd.Seek(I->Offset) == false || Fd.Read(Buffer.get(),I->Length) == false)
+ return false;
+
+ Buffer[I->Length] = '\n';
+ if (Section.Scan((char *)Buffer.get(),I->Length+1) == false)
+ return _error->Error("Internal error, failed to scan buffer");
+
+ // Sort the section
+ if (Section.Write(stdoutfd, Order) == false || stdoutfd.Write("\n", 1) == false)
+ return _error->Error("Internal error, failed to sort fields");
+ }
+ return true;
+}
+ /*}}}*/
+static bool ShowHelp(CommandLine &) /*{{{*/
+{
+ std::cout <<
+ _("Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+ "\n"
+ "apt-sortpkgs is a simple tool to sort package information files.\n"
+ "By default it sorts by binary package information, but the -s option\n"
+ "can be used to switch to source package ordering instead.\n");
+ return true;
+}
+ /*}}}*/
+static std::vector<aptDispatchWithHelp> GetCommands() /*{{{*/
+{
+ return {
+ {nullptr, nullptr, nullptr}
+ };
+}
+ /*}}}*/
+int main(int argc,const char *argv[]) /*{{{*/
+{
+ CommandLine CmdL;
+ ParseCommandLine(CmdL, APT_CMD::APT_SORTPKG, &_config, &_system, argc, argv, &ShowHelp, &GetCommands);
+
+ // Match the operation
+ for (unsigned int I = 0; I != CmdL.FileSize(); I++)
+ if (DoIt(CmdL.FileList[I]) == false)
+ break;
+
+ return DispatchCommandLine(CmdL, {});
+}
+ /*}}}*/
diff --git a/cmdline/apt.cc b/cmdline/apt.cc
new file mode 100644
index 000000000..4b266bcbe
--- /dev/null
+++ b/cmdline/apt.cc
@@ -0,0 +1,118 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ apt - CLI UI for apt
+
+ Returns 100 on failure, 0 on success.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include<config.h>
+
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/init.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/configuration.h>
+
+#include <apt-private/private-list.h>
+#include <apt-private/private-search.h>
+#include <apt-private/private-install.h>
+#include <apt-private/private-output.h>
+#include <apt-private/private-update.h>
+#include <apt-private/private-cmndline.h>
+#include <apt-private/private-moo.h>
+#include <apt-private/private-upgrade.h>
+#include <apt-private/private-show.h>
+#include <apt-private/private-main.h>
+#include <apt-private/private-sources.h>
+#include <apt-private/private-source.h>
+#include <apt-private/private-depends.h>
+#include <apt-private/private-download.h>
+
+#include <unistd.h>
+#include <iostream>
+#include <vector>
+
+#include <apti18n.h>
+ /*}}}*/
+
+static bool ShowHelp(CommandLine &) /*{{{*/
+{
+ std::cout <<
+ _("Usage: apt [options] command\n"
+ "\n"
+ "apt is a commandline package manager and provides commands for\n"
+ "searching and managing as well as querying information about packages.\n"
+ "It provides the same functionality as the specialized APT tools,\n"
+ "like apt-get and apt-cache, but enables options more suitable for\n"
+ "interactive use by default.\n");
+ return true;
+}
+ /*}}}*/
+static std::vector<aptDispatchWithHelp> GetCommands() /*{{{*/
+{
+ return {
+ // query
+ {"list", &DoList, _("list packages based on package names")},
+ {"search", &DoSearch, _("search in package descriptions")},
+ {"show", &ShowPackage, _("show package details")},
+
+ // package stuff
+ {"install", &DoInstall, _("install packages")},
+ {"remove", &DoInstall, _("remove packages")},
+ {"autoremove", &DoInstall, _("Remove automatically all unused packages")},
+ {"auto-remove", &DoInstall, nullptr},
+ {"purge", &DoInstall, nullptr},
+
+ // system wide stuff
+ {"update", &DoUpdate, _("update list of available packages")},
+ {"upgrade", &DoUpgrade, _("upgrade the system by installing/upgrading packages")},
+ {"full-upgrade", &DoDistUpgrade, _("upgrade the system by removing/installing/upgrading packages")},
+
+ // misc
+ {"edit-sources", &EditSources, _("edit the source information file")},
+ {"moo", &DoMoo, nullptr},
+
+ // for compat with muscle memory
+ {"dist-upgrade", &DoDistUpgrade, nullptr},
+ {"showsrc",&ShowSrcPackage, nullptr},
+ {"depends",&Depends, nullptr},
+ {"rdepends",&RDepends, nullptr},
+ {"policy",&Policy, nullptr},
+ {"build-dep", &DoBuildDep,nullptr},
+ {"clean", &DoClean, nullptr},
+ {"autoclean", &DoAutoClean, nullptr},
+ {"auto-clean", &DoAutoClean, nullptr},
+ {"source", &DoSource, nullptr},
+ {"download", &DoDownload, nullptr},
+ {"changelog", &DoChangelog, nullptr},
+
+ {nullptr, nullptr, nullptr}
+ };
+}
+ /*}}}*/
+int main(int argc, const char *argv[]) /*{{{*/
+{
+ CommandLine CmdL;
+ auto const Cmds = ParseCommandLine(CmdL, APT_CMD::APT, &_config, &_system, argc, argv, &ShowHelp, &GetCommands);
+
+ int const quiet = _config->FindI("quiet", 0);
+ if (quiet == 2)
+ {
+ _config->CndSet("quiet::NoProgress", true);
+ _config->Set("quiet", 1);
+ }
+
+ InitSignals();
+ InitOutput();
+
+ CheckIfCalledByScript(argc, argv);
+ CheckIfSimulateMode(CmdL);
+
+ return DispatchCommandLine(CmdL, Cmds);
+}
+ /*}}}*/
diff --git a/completions/CMakeLists.txt b/completions/CMakeLists.txt
new file mode 100644
index 000000000..4ef62a892
--- /dev/null
+++ b/completions/CMakeLists.txt
@@ -0,0 +1,4 @@
+set(BASH_COMPLETION_DIR "${CMAKE_INSTALL_DATAROOTDIR}/bash-completion/completions"
+ CACHE PATH "Path to the bash-completion completions directory")
+
+install(FILES bash/apt DESTINATION ${BASH_COMPLETION_DIR})
diff --git a/completions/bash/apt b/completions/bash/apt
new file mode 100644
index 000000000..07bebc9a3
--- /dev/null
+++ b/completions/bash/apt
@@ -0,0 +1,225 @@
+# Debian apt(8) completion -*- shell-script -*-
+
+_apt()
+{
+ local sourcesdir="/etc/apt/sources.list.d"
+ local cur prev words cword
+ _init_completion || return
+
+ local GENERIC_APT_GET_OPTIONS='
+ -d --download-only
+ -y --assume-yes
+ --assume-no
+ -u --show-upgraded
+ -m --ignore-missing
+ -t --target-release
+ --download
+ --fix-missing
+ --ignore-hold
+ --upgrade
+ --only-upgrade
+ --allow-change-held-packages
+ --allow-remove-essential
+ --allow-downgrades
+ --print-uris
+ --trivial-only
+ --remove
+ --arch-only
+ --allow-unauthenticated
+ --allow-insecure-repositories
+ --install-recommends
+ --install-suggests
+ --fix-policy
+ '
+
+ # see if the user selected a command already
+ local COMMANDS=(
+ "list"
+ "search"
+ "show" "showsrc"
+ "install" "remove" "purge" "autoremove"
+ "update"
+ "upgrade" "full-upgrade" "dist-upgrade"
+ "edit-sources"
+ "help"
+ "source" "build-dep"
+ "clean" "autoclean"
+ "download" "changelog"
+ "moo"
+ "depends" "rdepends"
+ "policy")
+
+ local command i
+ for (( i=0; i < ${#words[@]}-1; i++ )); do
+ if [[ ${COMMANDS[@]} =~ ${words[i]} ]]; then
+ command=${words[i]}
+ break
+ fi
+ done
+
+ # Complete a -t<SPACE><TAB>
+ case $prev in
+ -t|--target-release)
+ COMPREPLY=( $( compgen -W "$(apt-cache policy | egrep -o 'a=[^,]*|n=[^,]*' | cut -f2- -d= | sort -u)" -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ # supported options per command
+ if [[ "$cur" == -* ]]; then
+ case $command in
+ install|remove|purge|upgrade|dist-upgrade|full-upgrade|autoremove)
+ COMPREPLY=( $( compgen -W '--show-progress
+ --fix-broken --purge --verbose-versions --auto-remove
+ -s --simulate --dry-run
+ --download
+ --fix-missing
+ --fix-policy
+ --ignore-hold
+ --force-yes
+ --trivial-only
+ --reinstall --solver
+ -t --target-release'"$GENERIC_APT_GET_OPTIONS" -- "$cur" ) )
+ return 0
+ ;;
+ update)
+ COMPREPLY=( $( compgen -W '--list-cleanup
+ --print-uris
+ --allow-insecure-repositories
+ ' -- "$cur" ) )
+ return 0
+ ;;
+ list)
+ COMPREPLY=( $( compgen -W '--installed --upgradable
+ --manual-installed
+ -v --verbose
+ -a --all-versions
+ -t --target-release
+ ' -- "$cur" ) )
+ return 0
+ ;;
+ show)
+ COMPREPLY=( $( compgen -W '-a --all-versions
+ ' -- "$cur" ) )
+ return 0
+ ;;
+ depends|rdepends)
+ COMPREPLY=( $( compgen -W '-i
+ --important
+ --installed
+ --pre-depends
+ --depends
+ --recommends
+ --suggests
+ --replaces
+ --breaks
+ --conflicts
+ --enhances
+ --recurse
+ --implicit' -- "$cur" ) )
+ return 0
+ ;;
+ search)
+ COMPREPLY=( $( compgen -W '
+ -n --names-only
+ -f --full' -- "$cur" ) )
+ return 0
+ ;;
+ showsrc)
+ COMPREPLY=( $( compgen -W '
+ --only-source' -- "$cur" ) )
+ return 0
+ ;;
+ source)
+ COMPREPLY=( $( compgen -W '
+ -s --simulate --dry-run
+ -b --compile --build
+ -P --build-profiles
+ --diff-only --debian-only
+ --tar-only
+ --dsc-only
+ -t --target-release
+ '"$GENERIC_APT_GET_OPTIONS" -- "$cur" ) )
+ return 0
+ ;;
+ build-dep)
+ COMPREPLY=( $( compgen -W '
+ -a --host-architecture
+ -s --simulate --dry-run
+ -P --build-profiles
+ -t --target-release
+ --purge --solver
+ '"$GENERIC_APT_GET_OPTIONS" -- "$cur" ) )
+ return 0
+ ;;
+ moo)
+ COMPREPLY=( $( compgen -W '
+ --color
+ ' -- "$cur" ) )
+ return 0
+ ;;
+ clean|autoclean)
+ COMPREPLY=( $( compgen -W '
+ -s --simulate --dry-run
+ ' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+ fi
+
+ # specific command arguments
+ if [[ -n $command ]]; then
+ case $command in
+ remove|purge|autoremove)
+ if [[ -f /etc/debian_version ]]; then
+ # Debian system
+ COMPREPLY=( $( \
+ _xfunc dpkg _comp_dpkg_installed_packages $cur ) )
+ else
+ # assume RPM based
+ _xfunc rpm _rpm_installed_packages
+ fi
+ return 0
+ ;;
+ show|list|download|changelog|depends|rdepends)
+ COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \
+ 2> /dev/null ) )
+ return 0
+ ;;
+ install)
+ COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \
+ 2> /dev/null ) )
+ if [[ "$cur" == ./* || "$cur" == /* ]]; then
+ _filedir "deb"
+ fi
+ return 0
+ ;;
+ source|build-dep|showsrc|policy)
+ COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \
+ 2> /dev/null ) $( apt-cache dumpavail | \
+ command grep "^Source: $cur" | sort -u | cut -f2 -d" " ) )
+ return 0
+ ;;
+ edit-sources)
+ COMPREPLY=( $( compgen -W '$( command ls $sourcesdir )' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ moo)
+ COMPREPLY=( $( compgen -W 'moo' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ esac
+ fi
+
+ # no command yet, show what commands we have
+ if [ "$command" = "" ]; then
+ COMPREPLY=( $( compgen -W '${COMMANDS[@]}' -- "$cur" ) )
+ fi
+
+ return 0
+} &&
+complete -F _apt apt
+
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/debian/NEWS b/debian/NEWS
new file mode 100644
index 000000000..bff3621bc
--- /dev/null
+++ b/debian/NEWS
@@ -0,0 +1,124 @@
+apt (1.4.2) unstable; urgency=medium
+
+ If periodic updates and unattended upgrades are enabled, the start of
+ periodic updates are now distributed over 24 hour intervals (as in 1.2
+ to 1.4), whereas starting unattended-upgrade has been restricted to a
+ time between 6 and 7 am. This only affects systems using systemd, other
+ systems still use the classical hourly cron job.
+
+ -- Julian Andres Klode <jak@debian.org> Thu, 04 May 2017 22:54:02 +0200
+
+apt (1.4~beta1) unstable; urgency=medium
+
+ Support for GPG signatures using the SHA1 or RIPE-MD/160 hash
+ algorithms has been disabled. Repositories using Release files
+ signed in such a way will stop working. This change has been made
+ due to security considerations, especially with regards to possible
+ further breakthroughs in SHA1 breaking during the lifetime
+ of this APT release series.
+
+ It is possible (but STRONGLY ADVISED AGAINST) to revert to the previous
+ behaviour by setting the options
+ APT::Hashes::SHA1::Weak "yes";
+ APT::Hashes::RIPE-MD/160::Weak "yes";
+ Note that setting these options only affects the verification of the overall
+ repository signature.
+
+ -- Julian Andres Klode <jak@debian.org> Fri, 25 Nov 2016 13:19:32 +0100
+
+apt (1.2~exp1) experimental; urgency=medium
+
+ [ Automatic removal of debs after install ]
+ After packages are successfully installed by apt(8),
+ the corresponding .deb package files will be
+ removed from the /var/cache/apt/archives cache directory.
+
+ This can be changed by setting the apt configuration option
+ "Binary::apt::APT::Keep-Downloaded-Packages" to "true". E.g:
+
+ # echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' \
+ > /etc/apt/apt.conf.d/01keep-debs
+
+ Please note that the behavior of apt-get is unchanged. The
+ downloaded debs will be kept in the cache directory after they
+ are installed. To enable the behavior for other tools, you can set
+ "APT::Keep-Downloaded-Packages" to false.
+
+ [ Compressed indices ]
+ If you use Acquire::gzipIndexes, or any other compressed index targets,
+ those will now be compressed with the fastest supported algorithm,
+ currently lz4.
+
+ -- Michael Vogt <mvo@debian.org> Tue, 05 Jan 2016 19:22:16 +0100
+
+apt (1.1~exp9) experimental; urgency=medium
+
+ A new algorithm for pinning has been implemented, it now assigns a
+ pin priority to a version instead of assigning a pin to a package.
+
+ This might break existing corner cases of pinning, if they use multiple
+ pins involving the same package name or patterns matching the same
+ package name, but should overall lead to pinning that actually works
+ as intended and documented.
+
+ -- Julian Andres Klode <jak@debian.org> Mon, 17 Aug 2015 14:45:17 +0200
+
+apt (0.8.11) unstable; urgency=low
+
+ * apt-get install pkg/experimental will now not only switch the
+ candidate of package pkg to the version from the release experimental
+ but also of all dependencies of pkg if the current candidate can't
+ satisfy a versioned dependency.
+
+ -- David Kalnischkies <kalnischkies@gmail.com> Fri, 03 Dec 2010 14:09:12 +0100
+
+apt (0.7.26~exp3) experimental; urgency=low
+
+ * apt-ftparchive now reads the standard configuration files in
+ /etc/apt/apt.conf and /etc/apt/apt.conf.d.
+
+ -- Julian Andres Klode <jak@debian.org> Fri, 26 Mar 2010 15:34:16 +0100
+
+apt (0.7.24) unstable; urgency=low
+
+ * Already included in the last version but now with better documentation
+ is the possibility to add/prefer different compression types while
+ downloading archive information, which can decrease the time needed for
+ update on slow machines. See apt.conf (5) manpage for details.
+ * APT manages his manpage translations now with po4a, thanks to Nicolas
+ François and Kurasawa Nozomu, who also provide the ja translation.
+ Thanks to Christian Perrier we have already a fr translation and
+ a few more are hopefully added in the near future.
+ * This version also introduces some _experimental_ configuration options
+ to make more aggressive use of dpkg's triggers. If you want to help
+ testing these _experimental_ options see apt.conf (5) manpage.
+
+ -- David Kalnischkies <kalnischkies@gmail.com> Thu, 24 Sep 2009 15:13:16 +0200
+
+apt (0.7.23) unstable; urgency=low
+
+ * Code that determines which proxy to use was changed. Now
+ 'Acquire::{http,ftp}::Proxy[::<host>]' options have the highest priority,
+ and '{http,ftp}_proxy' environment variables are used only if options
+ mentioned above are not specified.
+
+ -- Eugene V. Lyubimkin <jackyf.devel@gmail.com> Thu, 19 Aug 2009 11:26:16 +0200
+
+apt (0.6.44) unstable; urgency=low
+
+ * apt-ftparchive --db now uses Berkeley DB_BTREE instead of DB_HASH.
+ If you use a database created by an older version of apt, delete
+ it and allow it to be recreated the next time.
+
+ -- Michael Vogt <mvo@debian.org> Wed, 26 Apr 2006 12:57:53 +0200
+
+apt (0.5.25) unstable; urgency=low
+
+ * apt-ftparchive --db now uses Berkeley DB version 4.2. If used with a
+ database created by an older version of apt, an attempt will be made
+ to upgrade the database, but this may not work in all cases. If your
+ database is not automatically upgraded, delete it and allow it to be
+ recreated the next time.
+
+ -- Matt Zimmerman <mdz@debian.org> Sat, 8 May 2004 12:38:07 -0700
+
diff --git a/debian/apt-daily-upgrade.service b/debian/apt-daily-upgrade.service
new file mode 100644
index 000000000..bf2776ac8
--- /dev/null
+++ b/debian/apt-daily-upgrade.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Daily apt upgrade and clean activities
+Documentation=man:apt(8)
+ConditionACPower=true
+After=apt-daily.service
+
+[Service]
+Type=oneshot
+ExecStart=/usr/lib/apt/apt.systemd.daily install
diff --git a/debian/apt-daily-upgrade.timer b/debian/apt-daily-upgrade.timer
new file mode 100644
index 000000000..79caf3b5c
--- /dev/null
+++ b/debian/apt-daily-upgrade.timer
@@ -0,0 +1,11 @@
+[Unit]
+Description=Daily apt upgrade and clean activities
+After=apt-daily.timer
+
+[Timer]
+OnCalendar=*-*-* 6:00
+RandomizedDelaySec=60m
+Persistent=true
+
+[Install]
+WantedBy=timers.target
diff --git a/debian/apt-daily.service b/debian/apt-daily.service
new file mode 100644
index 000000000..4a946afdd
--- /dev/null
+++ b/debian/apt-daily.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Daily apt download activities
+Documentation=man:apt(8)
+ConditionACPower=true
+
+[Service]
+Type=oneshot
+ExecStart=/usr/lib/apt/apt.systemd.daily update
+
diff --git a/debian/apt-daily.timer b/debian/apt-daily.timer
new file mode 100644
index 000000000..735da2440
--- /dev/null
+++ b/debian/apt-daily.timer
@@ -0,0 +1,12 @@
+[Unit]
+Description=Daily apt download activities
+After=network-online.target
+Wants=network-online.target
+
+[Timer]
+OnCalendar=*-*-* 6,18:00
+RandomizedDelaySec=12h
+Persistent=true
+
+[Install]
+WantedBy=timers.target
diff --git a/debian/apt-doc.doc-base.guide b/debian/apt-doc.doc-base.guide
new file mode 100644
index 000000000..b40d68d9f
--- /dev/null
+++ b/debian/apt-doc.doc-base.guide
@@ -0,0 +1,13 @@
+Document: apt-user-guide
+Title: APT User's Guide
+Author: Jason Gunthorpe
+Abstract: The APT User's Guide provides an overview of how to use the
+ APT package manager, and provides a detailed look at the apt-get tool.
+Section: Debian
+
+Format: html
+Index: /usr/share/doc/apt-doc/guide.html/index.html
+Files: /usr/share/doc/apt-doc/guide.html/*.html
+
+Format: text
+Files: /usr/share/doc/apt-doc/guide.text.gz
diff --git a/debian/apt-doc.doc-base.offline b/debian/apt-doc.doc-base.offline
new file mode 100644
index 000000000..f67ec739a
--- /dev/null
+++ b/debian/apt-doc.doc-base.offline
@@ -0,0 +1,13 @@
+Document: apt-offline-usage-guide
+Title: APT Offline Usage Guide
+Author: Jason Gunthorpe
+Abstract: The APT Offline Usage Guide provides detailed instructions and
+ examples of how to use APT on an unconnected computer.
+Section: Debian
+
+Format: html
+Index: /usr/share/doc/apt-doc/offline.html/index.html
+Files: /usr/share/doc/apt-doc/offline.html/*.html
+
+Format: text
+Files: /usr/share/doc/apt-doc/offline.text.gz
diff --git a/debian/apt-doc.docs b/debian/apt-doc.docs
new file mode 100644
index 000000000..bd494002c
--- /dev/null
+++ b/debian/apt-doc.docs
@@ -0,0 +1,4 @@
+README.progress-reporting
+doc/acquire-additional-files.txt
+doc/external-dependency-solver-protocol.txt
+doc/external-installation-planner-protocol.txt
diff --git a/debian/apt-doc.install b/debian/apt-doc.install
new file mode 100644
index 000000000..be5e87159
--- /dev/null
+++ b/debian/apt-doc.install
@@ -0,0 +1 @@
+usr/share/doc/apt-doc
diff --git a/debian/apt-transport-https.README b/debian/apt-transport-https.README
new file mode 100644
index 000000000..0c470a1a2
--- /dev/null
+++ b/debian/apt-transport-https.README
@@ -0,0 +1,2 @@
+See APT::https group of options in apt.conf(5) to configure how APT will handle
+https:// URIs.
diff --git a/debian/apt-transport-https.docs b/debian/apt-transport-https.docs
new file mode 100644
index 000000000..906c1db69
--- /dev/null
+++ b/debian/apt-transport-https.docs
@@ -0,0 +1 @@
+debian/apt-transport-https.README
diff --git a/debian/apt-transport-https.install b/debian/apt-transport-https.install
new file mode 100644
index 000000000..7b14886df
--- /dev/null
+++ b/debian/apt-transport-https.install
@@ -0,0 +1 @@
+usr/lib/apt/methods/https
diff --git a/debian/apt-utils.install b/debian/apt-utils.install
new file mode 100644
index 000000000..a27f1e1e4
--- /dev/null
+++ b/debian/apt-utils.install
@@ -0,0 +1,13 @@
+usr/bin/apt-extracttemplates
+usr/bin/apt-ftparchive
+usr/bin/apt-sortpkgs
+usr/lib/apt/planners/
+usr/lib/apt/solvers/
+usr/share/doc/apt-utils
+usr/share/locale/*/*/apt-utils.mo
+usr/share/man/*/*/apt-extracttemplates.*
+usr/share/man/*/*/apt-ftparchive.*
+usr/share/man/*/*/apt-sortpkgs.*
+usr/share/man/*/apt-extracttemplates.*
+usr/share/man/*/apt-ftparchive.*
+usr/share/man/*/apt-sortpkgs.*
diff --git a/debian/apt.apt-compat.cron.daily b/debian/apt.apt-compat.cron.daily
new file mode 100644
index 000000000..095a44c4a
--- /dev/null
+++ b/debian/apt.apt-compat.cron.daily
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+set -e
+
+# Systemd systems use a systemd timer unit which is preferable to
+# run. We want to randomize the apt update and unattended-upgrade
+# runs as much as possible to avoid hitting the mirrors all at the
+# same time. The systemd time is better at this than the fixed
+# cron.daily time
+if [ -d /run/systemd/system ]; then
+ exit 0
+fi
+
+check_power()
+{
+ # laptop check, on_ac_power returns:
+ # 0 (true) System is on main power
+ # 1 (false) System is not on main power
+ # 255 (false) Power status could not be determined
+ # Desktop systems always return 255 it seems
+ if which on_ac_power >/dev/null 2>&1; then
+ on_ac_power
+ POWER=$?
+ if [ $POWER -eq 1 ]; then
+ return 1
+ fi
+ fi
+ return 0
+}
+
+# sleep for a random interval of time (default 30min)
+# (some code taken from cron-apt, thanks)
+random_sleep()
+{
+ RandomSleep=1800
+ eval $(apt-config shell RandomSleep APT::Periodic::RandomSleep)
+ if [ $RandomSleep -eq 0 ]; then
+ return
+ fi
+ if [ -z "$RANDOM" ] ; then
+ # A fix for shells that do not have this bash feature.
+ RANDOM=$(( $(dd if=/dev/urandom bs=2 count=1 2> /dev/null | cksum | cut -d' ' -f1) % 32767 ))
+ fi
+ TIME=$(($RANDOM % $RandomSleep))
+ sleep $TIME
+}
+
+# delay the job execution by a random amount of time
+random_sleep
+
+# ensure we don't do this on battery
+check_power || exit 0
+
+# run daily job
+exec /usr/lib/apt/apt.systemd.daily
diff --git a/debian/apt.auto-removal.sh b/debian/apt.auto-removal.sh
new file mode 100644
index 000000000..2c32b0c9d
--- /dev/null
+++ b/debian/apt.auto-removal.sh
@@ -0,0 +1,83 @@
+#!/bin/sh
+set -e
+# Mark as not-for-autoremoval those kernel packages that are:
+# - the currently booted version
+# - the kernel version we've been called for
+# - the latest kernel version (as determined by debian version number)
+# - the second-latest kernel version
+#
+# In the common case this results in two kernels saved (booted into the
+# second-latest kernel, we install the latest kernel in an upgrade), but
+# can save up to four. Kernel refers here to a distinct release, which can
+# potentially be installed in multiple flavours counting as one kernel.
+
+eval $(apt-config shell APT_CONF_D Dir::Etc::parts/d)
+test -n "${APT_CONF_D}" || APT_CONF_D="/etc/apt/apt.conf.d"
+config_file="${APT_CONF_D}/01autoremove-kernels"
+
+eval $(apt-config shell DPKG Dir::bin::dpkg/f)
+test -n "$DPKG" || DPKG="/usr/bin/dpkg"
+
+list="$("${DPKG}" -l | awk '/^[ih][^nc][ ]+(linux|kfreebsd|gnumach)-image-[0-9]+\./ && $2 !~ /-dbg(:.*)?$/ && $2 !~ /-dbgsym(:.*)?$/ { print $2,$3; }' \
+ | sed -e 's#^\(linux\|kfreebsd\|gnumach\)-image-##' -e 's#:[^:]\+ # #')"
+debverlist="$(echo "$list" | cut -d' ' -f 2 | sort --unique --reverse --version-sort)"
+
+if [ -n "$1" ]; then
+ installed_version="$(echo "$list" | awk "\$1 == \"$1\" { print \$2;exit; }")"
+fi
+unamer="$(uname -r | tr '[A-Z]' '[a-z]')"
+if [ -n "$unamer" ]; then
+ running_version="$(echo "$list" | awk "\$1 == \"$unamer\" { print \$2;exit; }")"
+fi
+# ignore the currently running version if attempting a reproducible build
+if [ -n "${SOURCE_DATE_EPOCH}" ]; then
+ unamer=""
+ running_version=""
+fi
+latest_version="$(echo "$debverlist" | sed -n 1p)"
+previous_version="$(echo "$debverlist" | sed -n 2p)"
+
+debkernels="$(echo "$latest_version
+$installed_version
+$running_version
+$previous_version" | sort -u | sed -e '/^$/ d')"
+kernels="$( (echo "$1
+$unamer"; for deb in $debkernels; do echo "$list" | awk "\$2 == \"$deb\" { print \$1; }"; done; ) \
+ | sed -e 's#\([\.\+]\)#\\\1#g' -e '/^$/ d' | sort -u)"
+
+generateconfig() {
+ cat <<EOF
+// DO NOT EDIT! File autogenerated by $0
+APT::NeverAutoRemove
+{
+EOF
+ for package in $(apt-config dump --no-empty --format '%v%n' 'APT::VersionedKernelPackages'); do
+ for kernel in $kernels; do
+ echo " \"^${package}-${kernel}$\";"
+ done
+ done
+ echo '};'
+ if [ "${APT_AUTO_REMOVAL_KERNELS_DEBUG:-true}" = 'true' ]; then
+ cat <<EOF
+/* Debug information:
+# dpkg list:
+$(dpkg -l | grep '\(linux\|kfreebsd\|gnumach\)-image-')
+# list of installed kernel packages:
+$list
+# list of different kernel versions:
+$debverlist
+# Installing kernel: $installed_version ($1)
+# Running kernel: ${running_version:-ignored} (${unamer:-ignored})
+# Last kernel: $latest_version
+# Previous kernel: $previous_version
+# Kernel versions list to keep:
+$debkernels
+# Kernel packages (version part) to protect:
+$kernels
+*/
+EOF
+ fi
+}
+generateconfig "$@" > "${config_file}.dpkg-new"
+mv -f "${config_file}.dpkg-new" "$config_file"
+chmod 444 "$config_file"
diff --git a/debian/apt.bug-script b/debian/apt.bug-script
new file mode 100755
index 000000000..a83b5563a
--- /dev/null
+++ b/debian/apt.bug-script
@@ -0,0 +1,33 @@
+#!/bin/bash -e
+
+# reportbug #169495
+if [ -z "$YESNO" ]; then
+ YESNO=$"yYnN"
+fi
+
+cat <<EOF
+I can automatically include various information about your apt configuration in
+your bug report. This information may help to diagnose your problem.
+
+EOF
+
+yesno "May I include your apt configuration (/etc/apt/apt.conf et al)? [Y/n] " yep
+
+if [ "$REPLY" = "yep" ]; then
+ echo -e "\n-- apt-config dump --\n" >&3
+ apt-config dump >&3 2>&1
+fi
+
+for config in /etc/apt/preferences /etc/apt/preferences.d/* /etc/apt/sources.list /etc/apt/sources.list.d/* ; do
+ if [ -f $config ]; then
+ yesno "May I include your $config configuration file? [Y/n] " yep
+ if [ "$REPLY" = "yep" ]; then
+ echo -e "\n-- $config --\n" >&3
+ cat $config >&3
+ else
+ echo -e "\n-- ($config present, but not submitted) --\n" >&3
+ fi
+ else
+ echo -e "\n-- (no $config present) --\n" >&3
+ fi
+done
diff --git a/debian/apt.conf.autoremove b/debian/apt.conf.autoremove
new file mode 100644
index 000000000..3609ca49c
--- /dev/null
+++ b/debian/apt.conf.autoremove
@@ -0,0 +1,48 @@
+APT
+{
+ NeverAutoRemove
+ {
+ "^firmware-linux.*";
+ "^linux-firmware$";
+ };
+
+ VersionedKernelPackages
+ {
+ # linux kernels
+ "linux-image";
+ "linux-headers";
+ "linux-image-extra";
+ "linux-signed-image";
+ # kfreebsd kernels
+ "kfreebsd-image";
+ "kfreebsd-headers";
+ # hurd kernels
+ "gnumach-image";
+ # (out-of-tree) modules
+ ".*-modules";
+ ".*-kernel";
+ "linux-backports-modules-.*";
+ # tools
+ "linux-tools";
+ };
+
+ Never-MarkAuto-Sections
+ {
+ "metapackages";
+ "contrib/metapackages";
+ "non-free/metapackages";
+ "restricted/metapackages";
+ "universe/metapackages";
+ "multiverse/metapackages";
+ };
+
+ Move-Autobit-Sections
+ {
+ "oldlibs";
+ "contrib/oldlibs";
+ "non-free/oldlibs";
+ "restricted/oldlibs";
+ "universe/oldlibs";
+ "multiverse/oldlibs";
+ };
+};
diff --git a/debian/apt.dirs b/debian/apt.dirs
new file mode 100644
index 000000000..54adcaa05
--- /dev/null
+++ b/debian/apt.dirs
@@ -0,0 +1,2 @@
+etc/kernel/postinst.d
+usr/share/bug/apt
diff --git a/debian/apt.install b/debian/apt.install
new file mode 100644
index 000000000..2c2187849
--- /dev/null
+++ b/debian/apt.install
@@ -0,0 +1,41 @@
+debian/*.service /lib/systemd/system/
+debian/*.timer /lib/systemd/system/
+debian/apt.systemd.daily usr/lib/apt
+etc/apt/
+usr/bin/apt
+usr/bin/apt-cache
+usr/bin/apt-cdrom
+usr/bin/apt-config
+usr/bin/apt-get
+usr/bin/apt-key
+usr/bin/apt-mark
+usr/lib/*/libapt-private.so*
+usr/lib/apt/apt-helper
+usr/lib/apt/methods/
+usr/lib/apt/planners/dump
+usr/lib/apt/solvers/dump
+usr/lib/dpkg/methods/apt/
+usr/share/bash-completion/completions/
+usr/share/doc/apt
+usr/share/locale/*/*/apt.mo
+usr/share/man/*/*/apt-cache.*
+usr/share/man/*/*/apt-cdrom.*
+usr/share/man/*/*/apt-config.*
+usr/share/man/*/*/apt-get.*
+usr/share/man/*/*/apt-key.*
+usr/share/man/*/*/apt-mark.*
+usr/share/man/*/*/apt-secure.*
+usr/share/man/*/*/apt.*
+usr/share/man/*/*/apt_preferences.*
+usr/share/man/*/*/sources.list.*
+usr/share/man/*/apt-cache.*
+usr/share/man/*/apt-cdrom.*
+usr/share/man/*/apt-config.*
+usr/share/man/*/apt-get.*
+usr/share/man/*/apt-key.*
+usr/share/man/*/apt-mark.*
+usr/share/man/*/apt-secure.*
+usr/share/man/*/apt.*
+usr/share/man/*/apt_preferences.*
+usr/share/man/*/sources.list.*
+var/
diff --git a/debian/apt.lintian-overrides b/debian/apt.lintian-overrides
new file mode 100644
index 000000000..7d1e892a3
--- /dev/null
+++ b/debian/apt.lintian-overrides
@@ -0,0 +1,5 @@
+# the private library is for internal sharing only
+apt: package-name-doesnt-match-sonames
+apt: systemd-service-file-missing-install-key lib/systemd/system/apt-daily.service
+apt: shlib-calls-exit usr/lib*/libapt-private.so.0.0.0
+apt: no-symbols-control-file usr/lib*/libapt-private.so.0.0.0
diff --git a/debian/apt.logrotate b/debian/apt.logrotate
new file mode 100644
index 000000000..9a6e5d155
--- /dev/null
+++ b/debian/apt.logrotate
@@ -0,0 +1,16 @@
+/var/log/apt/term.log {
+ rotate 12
+ monthly
+ compress
+ missingok
+ notifempty
+}
+
+/var/log/apt/history.log {
+ rotate 12
+ monthly
+ compress
+ missingok
+ notifempty
+}
+
diff --git a/debian/apt.maintscript b/debian/apt.maintscript
new file mode 100644
index 000000000..296f83bd5
--- /dev/null
+++ b/debian/apt.maintscript
@@ -0,0 +1,3 @@
+rm_conffile /etc/apt/apt.conf.d/20changelog 1.2.4~
+# we use a systemd timer unit now
+rm_conffile /etc/cron.daily/apt 1.2.10~
diff --git a/debian/apt.postinst b/debian/apt.postinst
new file mode 100755
index 000000000..8d1cdb1b3
--- /dev/null
+++ b/debian/apt.postinst
@@ -0,0 +1,86 @@
+#! /bin/sh
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+case "$1" in
+ configure)
+ if dpkg --compare-versions "$2" lt 1.1~exp4; then
+ # apt-key before 0.9.10 could leave empty keyrings around
+ find /etc/apt/trusted.gpg.d/ -name '*.gpg' | while read keyring; do
+ if ! test -s "$keyring"; then
+ rm -f "$keyring"
+ fi
+ done
+ # apt-key before 0.9.8.2 could create 0600 trusted.gpg file
+ if test -e /etc/apt/trusted.gpg ; then
+ chmod -f 0644 /etc/apt/trusted.gpg || true
+ fi
+ fi
+
+ if dpkg --compare-versions "$2" lt-nl 0.9.9.5; then
+ # we are using tmpfiles for both
+ rm -f /etc/apt/trustdb.gpg
+ # this removal was done unconditional since 0.8.15.3
+ SECRING='/etc/apt/secring.gpg'
+ # test if secring is an empty normal file
+ if test -f $SECRING -a ! -s $SECRING; then
+ rm -f $SECRING
+ fi
+ fi
+
+ # add unprivileged user for the apt methods
+ adduser --force-badname --system --home /nonexistent \
+ --no-create-home --quiet _apt || true
+
+ # Fixup any mistake in the home directory of the _apt user
+ if dpkg --compare-versions "$2" lt-nl 1.1~exp10~; then
+ usermod --home /nonexistent _apt
+ fi
+
+ # deal with upgrades from experimental
+ if dpkg --compare-versions "$2" 'eq' '1.1~exp3'; then
+ # libapt will setup partial/ at runtime
+ chown -R root:root /var/lib/apt/lists /var/cache/apt/archives || true
+ fi
+
+ # ensure tighter permissions on the logs, see LP: #975199
+ if dpkg --compare-versions "$2" lt-nl 0.9.7.7; then
+ # ensure permissions are right
+ chmod -f 0640 /var/log/apt/term.log* || true
+ fi
+
+ # create kernel autoremoval blacklist on update
+ if dpkg --compare-versions "$2" lt 0.9.9.3; then
+ /etc/kernel/postinst.d/apt-auto-removal
+ fi
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/apt.postrm b/debian/apt.postrm
new file mode 100755
index 000000000..ae1e18d33
--- /dev/null
+++ b/debian/apt.postrm
@@ -0,0 +1,22 @@
+#! /bin/sh
+
+# apt postrm
+# Copyright (C) 1998, Ben Gertzfield <che@debian.org>
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+set -e
+
+#DEBHELPER#
+
+case "$1" in
+ remove)
+ ;;
+ purge)
+ rm -rf /var/cache/apt
+ rm -rf /var/lib/apt
+esac
+
diff --git a/debian/apt.systemd.daily b/debian/apt.systemd.daily
new file mode 100755
index 000000000..49af931bd
--- /dev/null
+++ b/debian/apt.systemd.daily
@@ -0,0 +1,514 @@
+#!/bin/sh
+#set -e
+#
+# This file understands the following apt configuration variables:
+# Values here are the default.
+# Create /etc/apt/apt.conf.d/10periodic file to set your preference.
+#
+# Dir "/";
+# - RootDir for all configuration files
+#
+# Dir::Cache "var/cache/apt/";
+# - Set apt package cache directory
+#
+# Dir::Cache::Archives "archives/";
+# - Set package archive directory
+#
+# APT::Periodic::Enable "1";
+# - Enable the update/upgrade script (0=disable)
+#
+# APT::Periodic::BackupArchiveInterval "0";
+# - Backup after n-days if archive contents changed.(0=disable)
+#
+# APT::Periodic::BackupLevel "3";
+# - Backup level.(0=disable), 1 is invalid.
+#
+# Dir::Cache::Backup "backup/";
+# - Set periodic package backup directory
+#
+# APT::Archives::MaxAge "0"; (old, deprecated)
+# APT::Periodic::MaxAge "0"; (new)
+# - Set maximum allowed age of a cache package file. If a cache
+# package file is older it is deleted (0=disable)
+#
+# APT::Archives::MinAge "2"; (old, deprecated)
+# APT::Periodic::MinAge "2"; (new)
+# - Set minimum age of a package file. If a file is younger it
+# will not be deleted (0=disable). Useful to prevent races
+# and to keep backups of the packages for emergency.
+#
+# APT::Archives::MaxSize "0"; (old, deprecated)
+# APT::Periodic::MaxSize "0"; (new)
+# - Set maximum size of the cache in MB (0=disable). If the cache
+# is bigger, cached package files are deleted until the size
+# requirement is met (the oldest packages will be deleted
+# first).
+#
+# APT::Periodic::Update-Package-Lists "0";
+# - Do "apt-get update" automatically every n-days (0=disable)
+#
+# APT::Periodic::Download-Upgradeable-Packages "0";
+# - Do "apt-get upgrade --download-only" every n-days (0=disable)
+#
+# APT::Periodic::Download-Upgradeable-Packages-Debdelta "1";
+# - Use debdelta-upgrade to download updates if available (0=disable)
+#
+# APT::Periodic::Unattended-Upgrade "0";
+# - Run the "unattended-upgrade" security upgrade script
+# every n-days (0=disabled)
+# Requires the package "unattended-upgrades" and will write
+# a log in /var/log/unattended-upgrades
+#
+# APT::Periodic::AutocleanInterval "0";
+# - Do "apt-get autoclean" every n-days (0=disable)
+#
+# APT::Periodic::CleanInterval "0";
+# - Do "apt-get clean" every n-days (0=disable)
+#
+# APT::Periodic::Verbose "0";
+# - Send report mail to root
+# 0: no report (or null string)
+# 1: progress report (actually any string)
+# 2: + command outputs (remove -qq, remove 2>/dev/null, add -d)
+# 3: + trace on
+#
+
+check_stamp()
+{
+ stamp="$1"
+ interval="$2"
+
+ if [ $interval -eq 0 ]; then
+ debug_echo "check_stamp: interval=0"
+ # treat as no time has passed
+ return 1
+ fi
+
+ if [ ! -f $stamp ]; then
+ debug_echo "check_stamp: missing time stamp file: $stamp."
+ # treat as enough time has passed
+ return 0
+ fi
+
+ # compare midnight today to midnight the day the stamp was updated
+ stamp_file="$stamp"
+ stamp=$(date --date=$(date -r $stamp_file --iso-8601) +%s 2>/dev/null)
+ if [ "$?" != "0" ]; then
+ # Due to some timezones returning 'invalid date' for midnight on
+ # certain dates (e.g. America/Sao_Paulo), if date returns with error
+ # remove the stamp file and return 0. See coreutils bug:
+ # http://lists.gnu.org/archive/html/bug-coreutils/2007-09/msg00176.html
+ rm -f "$stamp_file"
+ return 0
+ fi
+
+ now=$(date --date=$(date --iso-8601) +%s 2>/dev/null)
+ if [ "$?" != "0" ]; then
+ # As above, due to some timezones returning 'invalid date' for midnight
+ # on certain dates (e.g. America/Sao_Paulo), if date returns with error
+ # return 0.
+ return 0
+ fi
+
+ delta=$(($now-$stamp))
+
+ # interval is in days, convert to sec.
+ interval=$(($interval*60*60*24))
+ debug_echo "check_stamp: interval=$interval, now=$now, stamp=$stamp, delta=$delta (sec)"
+
+ # remove timestamps a day (or more) in the future and force re-check
+ if [ $stamp -gt $(($now+86400)) ]; then
+ echo "WARNING: file $stamp_file has a timestamp in the future: $stamp"
+ rm -f "$stamp_file"
+ return 0
+ fi
+
+ if [ $delta -ge $interval ]; then
+ return 0
+ fi
+
+ return 1
+}
+
+update_stamp()
+{
+ stamp="$1"
+ touch $stamp
+}
+
+# we check here if autoclean was enough sizewise
+check_size_constraints()
+{
+ MaxAge=0
+ eval $(apt-config shell MaxAge APT::Archives::MaxAge)
+ eval $(apt-config shell MaxAge APT::Periodic::MaxAge)
+
+ MinAge=2
+ eval $(apt-config shell MinAge APT::Archives::MinAge)
+ eval $(apt-config shell MinAge APT::Periodic::MinAge)
+
+ MaxSize=0
+ eval $(apt-config shell MaxSize APT::Archives::MaxSize)
+ eval $(apt-config shell MaxSize APT::Periodic::MaxSize)
+
+ Cache="/var/cache/apt/archives/"
+ eval $(apt-config shell Cache Dir::Cache::archives/d)
+
+ # sanity check
+ if [ -z "$Cache" ]; then
+ echo "empty Dir::Cache::archives, exiting"
+ exit
+ fi
+
+ # check age
+ if [ ! $MaxAge -eq 0 ] && [ ! $MinAge -eq 0 ]; then
+ debug_echo "aged: ctime <$MaxAge and mtime <$MaxAge and ctime>$MinAge and mtime>$MinAge"
+ find $Cache -name "*.deb" \( -mtime +$MaxAge -and -ctime +$MaxAge \) -and -not \( -mtime -$MinAge -or -ctime -$MinAge \) -print0 | xargs -r -0 rm -f
+ elif [ ! $MaxAge -eq 0 ]; then
+ debug_echo "aged: ctime <$MaxAge and mtime <$MaxAge only"
+ find $Cache -name "*.deb" -ctime +$MaxAge -and -mtime +$MaxAge -print0 | xargs -r -0 rm -f
+ else
+ debug_echo "skip aging since MaxAge is 0"
+ fi
+
+ # check size
+ if [ ! $MaxSize -eq 0 ]; then
+ # maxSize is in MB
+ MaxSize=$(($MaxSize*1024))
+
+ #get current time
+ now=$(date --date=$(date --iso-8601) +%s)
+ MinAge=$(($MinAge*24*60*60))
+
+ # reverse-sort by mtime
+ for file in $(ls -rt $Cache/*.deb 2>/dev/null); do
+ du=$(du -s $Cache)
+ size=${du%%/*}
+ # check if the cache is small enough
+ if [ $size -lt $MaxSize ]; then
+ debug_echo "end remove by archive size: size=$size < $MaxSize"
+ break
+ fi
+
+ # check for MinAge of the file
+ if [ $MinAge -ne 0 ]; then
+ # check both ctime and mtime
+ mtime=$(stat -c %Y $file)
+ ctime=$(stat -c %Z $file)
+ if [ $mtime -gt $ctime ]; then
+ delta=$(($now-$mtime))
+ else
+ delta=$(($now-$ctime))
+ fi
+ if [ $delta -le $MinAge ]; then
+ debug_echo "skip remove by archive size: $file, delta=$delta < $MinAge"
+ break
+ else
+ # delete oldest file
+ debug_echo "remove by archive size: $file, delta=$delta >= $MinAge (sec), size=$size >= $MaxSize"
+ rm -f $file
+ fi
+ fi
+ done
+ fi
+}
+
+# deal with the Apt::Periodic::BackupArchiveInterval
+do_cache_backup()
+{
+ BackupArchiveInterval="$1"
+ if [ $BackupArchiveInterval -eq 0 ]; then
+ return
+ fi
+
+ # Set default values and normalize
+ CacheDir="/var/cache/apt"
+ eval $(apt-config shell CacheDir Dir::Cache/d)
+ CacheDir=${CacheDir%/}
+ if [ -z "$CacheDir" ]; then
+ debug_echo "practically empty Dir::Cache, exiting"
+ return 0
+ fi
+
+ Cache="${CacheDir}/archives/"
+ eval $(apt-config shell Cache Dir::Cache::Archives/d)
+ if [ -z "$Cache" ]; then
+ debug_echo "practically empty Dir::Cache::archives, exiting"
+ return 0
+ fi
+
+ BackupLevel=3
+ eval $(apt-config shell BackupLevel APT::Periodic::BackupLevel)
+ if [ $BackupLevel -le 1 ]; then
+ BackupLevel=2 ;
+ fi
+
+ Back="${CacheDir}/backup/"
+ eval $(apt-config shell Back Dir::Cache::Backup/d)
+ if [ -z "$Back" ]; then
+ echo "practically empty Dir::Cache::Backup, exiting" 1>&2
+ return
+ fi
+
+ CacheArchive="$(basename "${Cache}")"
+ test -n "${CacheArchive}" || CacheArchive="archives"
+ BackX="${Back}${CacheArchive}/"
+ for x in $(seq 0 1 $((${BackupLevel}-1))); do
+ eval "Back${x}=${Back}${x}/"
+ done
+
+ # backup after n-days if archive contents changed.
+ # (This uses hardlink to save disk space)
+ BACKUP_ARCHIVE_STAMP=/var/lib/apt/periodic/backup-archive-stamp
+ if check_stamp $BACKUP_ARCHIVE_STAMP $BackupArchiveInterval; then
+ if [ $({(cd $Cache 2>/dev/null; find . -name "*.deb"); (cd $Back0 2>/dev/null;find . -name "*.deb") ;}| sort|uniq -u|wc -l) -ne 0 ]; then
+ mkdir -p $Back
+ rm -rf $Back$((${BackupLevel}-1))
+ for y in $(seq $((${BackupLevel}-1)) -1 1); do
+ eval BackY=${Back}$y
+ eval BackZ=${Back}$(($y-1))
+ if [ -e $BackZ ]; then
+ mv -f $BackZ $BackY ;
+ fi
+ done
+ cp -la $Cache $Back ; mv -f $BackX $Back0
+ update_stamp $BACKUP_ARCHIVE_STAMP
+ debug_echo "backup with hardlinks. (success)"
+ else
+ debug_echo "skip backup since same content."
+ fi
+ else
+ debug_echo "skip backup since too new."
+ fi
+}
+
+debug_echo()
+{
+ # Display message if $VERBOSE >= 1
+ if [ "$VERBOSE" -ge 1 ]; then
+ echo $1 1>&2
+ fi
+}
+
+# ------------------------ main ----------------------------
+if [ "$1" = "lock_is_held" ]; then
+ shift
+else
+ # Maintain a lock on fd 3, so we can't run the script twice at the same
+ # time.
+ eval $(apt-config shell StateDir Dir::State/d)
+ exec 3>${StateDir}/daily_lock
+ if ! flock -w 3600 3; then
+ echo "E: Could not acquire lock" >&2
+ exit 1
+ fi
+
+ # We hold the lock. Rerun this script as a child process, which
+ # can run without propagating an extra fd to all of its children.
+ "$0" lock_is_held "$@" 3>&-
+ exit $?
+fi
+
+if test -r /var/lib/apt/extended_states; then
+ # Backup the 7 last versions of APT's extended_states file
+ # shameless copy from dpkg cron
+ if cd /var/backups ; then
+ if ! cmp -s apt.extended_states.0 /var/lib/apt/extended_states; then
+ cp -p /var/lib/apt/extended_states apt.extended_states
+ savelog -c 7 apt.extended_states >/dev/null
+ fi
+ fi
+fi
+
+# check apt-config existence
+if ! which apt-config >/dev/null 2>&1; then
+ exit 0
+fi
+
+# check if the user really wants to do something
+AutoAptEnable=1 # default is yes
+eval $(apt-config shell AutoAptEnable APT::Periodic::Enable)
+
+if [ $AutoAptEnable -eq 0 ]; then
+ exit 0
+fi
+
+# Set VERBOSE mode from apt-config (or inherit from environment)
+VERBOSE=0
+eval $(apt-config shell VERBOSE APT::Periodic::Verbose)
+debug_echo "verbose level $VERBOSE"
+if [ "$VERBOSE" -le 1 ]; then
+ # quiet for 0/1
+ XSTDOUT=">/dev/null"
+ XSTDERR="2>/dev/null"
+ XAPTOPT="-qq"
+ XUUPOPT=""
+else
+ XSTDOUT=""
+ XSTDERR=""
+ XAPTOPT=""
+ XUUPOPT="-d"
+fi
+if [ "$VERBOSE" -ge 3 ]; then
+ # trace output
+ set -x
+fi
+
+# check if we can lock the cache and if the cache is clean
+if which apt-get >/dev/null 2>&1 && ! eval apt-get check $XAPTOPT $XSTDERR ; then
+ debug_echo "error encountered in cron job with \"apt-get check\"."
+ exit 0
+fi
+
+# Global current time in seconds since 1970-01-01 00:00:00 UTC
+now=$(date +%s)
+
+# Support old Archive for compatibility.
+# Document only Periodic for all controlling parameters of this script.
+
+UpdateInterval=0
+eval $(apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists)
+
+DownloadUpgradeableInterval=0
+eval $(apt-config shell DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages)
+
+UnattendedUpgradeInterval=0
+eval $(apt-config shell UnattendedUpgradeInterval APT::Periodic::Unattended-Upgrade)
+
+AutocleanInterval=0
+eval $(apt-config shell AutocleanInterval APT::Periodic::AutocleanInterval)
+
+CleanInterval=0
+eval $(apt-config shell CleanInterval APT::Periodic::CleanInterval)
+
+BackupArchiveInterval=0
+eval $(apt-config shell BackupArchiveInterval APT::Periodic::BackupArchiveInterval)
+
+Debdelta=1
+eval $(apt-config shell Debdelta APT::Periodic::Download-Upgradeable-Packages-Debdelta)
+
+# check if we actually have to do anything that requires locking the cache
+if [ $UpdateInterval -eq 0 ] &&
+ [ $DownloadUpgradeableInterval -eq 0 ] &&
+ [ $UnattendedUpgradeInterval -eq 0 ] &&
+ [ $BackupArchiveInterval -eq 0 ] &&
+ [ $AutocleanInterval -eq 0 ] &&
+ [ $CleanInterval -eq 0 ]; then
+
+ # check cache size
+ check_size_constraints
+
+ exit 0
+fi
+
+if [ "$1" = "update" -o -z "$1" ] ; then
+ # deal with BackupArchiveInterval
+ do_cache_backup $BackupArchiveInterval
+
+ # include default system language so that "apt-get update" will
+ # fetch the right translated package descriptions
+ if [ -r /etc/default/locale ]; then
+ . /etc/default/locale
+ export LANG LANGUAGE LC_MESSAGES LC_ALL
+ fi
+
+ # update package lists
+ UPDATED=0
+ UPDATE_STAMP=/var/lib/apt/periodic/update-stamp
+ if check_stamp $UPDATE_STAMP $UpdateInterval; then
+ if eval apt-get $XAPTOPT -y update $XSTDERR; then
+ debug_echo "download updated metadata (success)."
+ if which dbus-send >/dev/null 2>&1 && pidof dbus-daemon >/dev/null 2>&1; then
+ if dbus-send --system / app.apt.dbus.updated boolean:true ; then
+ debug_echo "send dbus signal (success)"
+ else
+ debug_echo "send dbus signal (error)"
+ fi
+ else
+ debug_echo "dbus signal not send (command not available)"
+ fi
+ update_stamp $UPDATE_STAMP
+ UPDATED=1
+ else
+ debug_echo "download updated metadata (error)"
+ fi
+ else
+ debug_echo "download updated metadata (not run)."
+ fi
+
+ # download all upgradeable packages (if it is requested)
+ DOWNLOAD_UPGRADEABLE_STAMP=/var/lib/apt/periodic/download-upgradeable-stamp
+ if [ $UPDATED -eq 1 ] && check_stamp $DOWNLOAD_UPGRADEABLE_STAMP $DownloadUpgradeableInterval; then
+ if [ $Debdelta -eq 1 ]; then
+ debdelta-upgrade >/dev/null 2>&1 || true
+ fi
+ if eval apt-get $XAPTOPT -y -d dist-upgrade $XSTDERR; then
+ update_stamp $DOWNLOAD_UPGRADEABLE_STAMP
+ debug_echo "download upgradable (success)"
+ else
+ debug_echo "download upgradable (error)"
+ fi
+ else
+ debug_echo "download upgradable (not run)"
+ fi
+
+ if which unattended-upgrade >/dev/null 2>&1 && unattended-upgrade --help | grep -q download-only && check_stamp $DOWNLOAD_UPGRADEABLE_STAMP $UnattendedUpgradeInterval; then
+ if unattended-upgrade --download-only $XUUPOPT; then
+ update_stamp $DOWNLOAD_UPGRADEABLE_STAMP
+ debug_echo "unattended-upgrade -d (success)"
+ else
+ debug_echo "unattended-upgrade -d (error)"
+ fi
+ else
+ debug_echo "unattended-upgrade -d (not run)"
+ fi
+fi
+
+if [ "$1" = "install" -o -z "$1" ] ; then
+ # auto upgrade all upgradeable packages
+ UPGRADE_STAMP=/var/lib/apt/periodic/upgrade-stamp
+ if which unattended-upgrade >/dev/null 2>&1 && check_stamp $UPGRADE_STAMP $UnattendedUpgradeInterval; then
+ if unattended-upgrade $XUUPOPT; then
+ update_stamp $UPGRADE_STAMP
+ debug_echo "unattended-upgrade (success)"
+ else
+ debug_echo "unattended-upgrade (error)"
+ fi
+ else
+ debug_echo "unattended-upgrade (not run)"
+ fi
+
+ # clean package archive
+ CLEAN_STAMP=/var/lib/apt/periodic/clean-stamp
+ if check_stamp $CLEAN_STAMP $CleanInterval; then
+ if eval apt-get $XAPTOPT -y clean $XSTDERR; then
+ debug_echo "clean (success)."
+ update_stamp $CLEAN_STAMP
+ else
+ debug_echo "clean (error)"
+ fi
+ else
+ debug_echo "clean (not run)"
+ fi
+
+ # autoclean package archive
+ AUTOCLEAN_STAMP=/var/lib/apt/periodic/autoclean-stamp
+ if check_stamp $AUTOCLEAN_STAMP $AutocleanInterval; then
+ if eval apt-get $XAPTOPT -y autoclean $XSTDERR; then
+ debug_echo "autoclean (success)."
+ update_stamp $AUTOCLEAN_STAMP
+ else
+ debug_echo "autoclean (error)"
+ fi
+ else
+ debug_echo "autoclean (not run)"
+ fi
+
+ # check cache size
+ check_size_constraints
+fi
+
+#
+# vim: set sts=4 ai :
+#
+
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 000000000..f19355c35
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,10339 @@
+apt (1.4.6) unstable; urgency=medium
+
+ * apt.systemd.daily: Do not pass -d to unattended-upgrade for the download
+ job. This actually enables debugging. Instead check if unattended-upgrade
+ supports an option --download-only (which is yet to be implemented) and use
+ that (Closes: #863859)
+
+ -- Julian Andres Klode <jak@debian.org> Thu, 01 Jun 2017 10:50:26 +0200
+
+apt (1.4.5) unstable; urgency=medium
+
+ * Fix parsing of or groups in build-deps with ignored packages (LP: #1694697)
+
+ -- Julian Andres Klode <jak@debian.org> Wed, 31 May 2017 14:52:25 +0200
+
+apt (1.4.4) unstable; urgency=medium
+
+ [ Alan Jenkins ]
+ * apt.systemd.daily: fix error from locking code (Closes: #862567)
+
+ -- Julian Andres Klode <jak@debian.org> Tue, 16 May 2017 23:19:50 +0200
+
+apt (1.4.3) unstable; urgency=medium
+
+ [ Julian Andres Klode ]
+ * Do not try to (re)start timers outside 'apt' package (Closes: #862001)
+
+ [ Miroslav Kure ]
+ * Updated Czech translation of apt (Closes: #861943)
+
+ -- Julian Andres Klode <jak@debian.org> Thu, 11 May 2017 14:46:28 +0200
+
+apt (1.4.2) unstable; urgency=medium
+
+ [ Julian Andres Klode ]
+ * Run unattended-upgrade -d in download part
+ * apt.systemd.daily: Add locking
+ * Split apt-daily timer into two (LP: #1686470)
+
+ [ Matt Kraai ]
+ * bash-completion: Fix spelling of autoclean (Closes: #861846)
+
+ -- Julian Andres Klode <jak@debian.org> Thu, 04 May 2017 22:52:10 +0200
+
+apt (1.4.1) unstable; urgency=medium
+
+ [ Julian Andres Klode ]
+ * systemd: Rework timing and add After=network-online (LP: #1615482)
+ * debian/rules: Actually invoke dh_clean in override_dh_clean
+
+ [ Unit 193 ]
+ * apt-ftparchive: Support '.ddeb' dbgsym packages
+
+ -- Julian Andres Klode <jak@debian.org> Mon, 24 Apr 2017 18:47:55 +0200
+
+apt (1.4) unstable; urgency=medium
+
+ * The April Fools' Release
+
+ [ Julian Andres Klode ]
+ * Ignore \.ucf-[a-z]+$ like we do for \.dpkg-[a-z]+$
+ * Fix mistake in CHANGEPATH comment example
+
+ [ Chris Lamb ]
+ * auto-removal: Ignore running kernel if attempting a reproducible build
+ (Closes: #857632)
+
+ [ Joe Dalton ]
+ * Danish program translation update (Closes: #856723)
+
+ [ David Kalnischkies ]
+ * Fix and avoid quoting in CommandLine::AsString (LP: #1672710)
+ * Ignore AutomaticRemove conffile option in upgrade (Closes: #855891)
+
+ -- Julian Andres Klode <jak@debian.org> Sat, 01 Apr 2017 21:39:37 +0200
+
+apt (1.4~rc2) unstable; urgency=medium
+
+ [ David Kalnischkies ]
+ * add Auto-Built-Package to tagfile-order
+ * don't test with "too early for 32bit" years
+
+ [ Julian Andres Klode ]
+ * Do not lowercase package names representing .dsc/.deb/... files (Closes: #854794)
+ * shippable: Perform CI on Debian stretch instead of Ubuntu xenial
+ * Don't use -1 fd and AT_SYMLINK_NOFOLLOW for faccessat()
+ Thanks to James Clarke for debugging these issues
+ * CMake: Install statvfs.h to include/sys, not just include/
+ * debian: Generate debian/copyright during clean
+
+ -- Julian Andres Klode <jak@debian.org> Wed, 22 Feb 2017 16:02:10 +0100
+
+apt (1.4~rc1) unstable; urgency=medium
+
+ [ David Kalnischkies ]
+ * don't show update stats if cache generation is disabled
+ * don't lock dpkg in 'apt-get clean'
+ * don't lock dpkg in update commands
+ * avoid validate/delete/load race in cache generation
+ * fix 'install --no-download' mode
+ * remove 'old' FAILED files in the next acquire call (Closes: 846476)
+ * stop rred from leaking debug messages on recovered errors (Closes: #850759)
+ * make the moo reproducible.
+ Thanks to Chris Lamb for initial patch and guru meditation (Closes: #848721)
+ * update release mappings in documentation
+ * avoid malloc if option whitelist is disabled (default)
+
+ [ Julian Andres Klode ]
+ * basehttp: Only read Content-Range on 416 and 206 responses (LP: #1657567)
+ * test suite: Do not exit 0 in trap for QUIT
+ * Only merge acquire items with the same meta key (Closes: #838441)
+
+ [ Zhou Mo ]
+ * po: update Simplified Chinese program translation
+
+ [ Jean-Pierre Giraud ]
+ * French manpages translation update (Closes: 852460)
+
+ [ victory ]
+ * Japanese manpages & program translation update
+
+ [ Frans Spiesschaert ]
+ * Dutch program translation update (Closes: #853761)
+ * Dutch manpage translation update (Closes: #853762)
+
+ -- Julian Andres Klode <jak@debian.org> Mon, 06 Feb 2017 14:41:23 +0100
+
+apt (1.4~beta4) unstable; urgency=medium
+
+ * Read dpkg tables to handle architecture wildcards.
+ Thanks to James Clarke <jrtc27@jrtc27.com> for the initial patch
+ (Closes: #748936)
+ * https: Quote path in URL before passing it to curl (LP: #1651923)
+ * Update symbols file for changes in 1.3.1, 1.4~beta{1,3,4}
+
+ -- Julian Andres Klode <jak@debian.org> Tue, 17 Jan 2017 15:18:27 +0100
+
+apt (1.4~beta3) unstable; urgency=medium
+
+ [ Lukasz Kawczynski ]
+ * Honour Acquire::ForceIPv4/6 in the https transport
+
+ [ David Kalnischkies ]
+ * reword "Can't drop priv" warning message (Closes: #813786) (LP: #1522675)
+ * let {dsc,tar,diff}-only implicitly enable download-only
+ * remove needless fork() in apt-get source
+ * default to --no-check for dpkg-source call (Closes: 724744)
+ * warn if clearsigned file has ignored content parts
+ * ensure generation of valid EDSP error stanzas
+ * add --indep-only for build-dep command (Closes: #845775)
+ * allow default build-essentials to be overridden
+ * expand -f to --fix-broken in error messages.
+ Thanks to Kristian Glass for initial patch! (Closes: #709092)
+ * separating state variables regarding server/request (Closes: #440057)
+ * fix minimum pkgs option for dpkg --recursive usage
+ * allow warning generation for non-whitelisted options
+
+ [ Oriol Debian ]
+ * Catalan program translation update (Closes: #846514)
+
+ [ Frans Spiesschaert ]
+ * Dutch manpages translation update (Closes: #849235)
+
+ [ Niels Thykier ]
+ * ParseDepends: Support passing the desired architecture (Closes: #845969)
+
+ -- Julian Andres Klode <jak@debian.org> Thu, 05 Jan 2017 20:50:01 +0100
+
+apt (1.4~beta2) unstable; urgency=high
+
+ [ John R. Lenton ]
+ * bash-completion: Only complete understood file paths for install
+ (LP: #1645815)
+
+ [ Julian Andres Klode ]
+ * SECURITY UPDATE: gpgv: Check for errors when splitting files (CVE-2016-1252)
+ Thanks to Jann Horn, Google Project Zero for reporting the issue
+ (LP: #1647467)
+ * gpgv: Flush the files before checking for errors
+
+ -- Julian Andres Klode <jak@debian.org> Thu, 08 Dec 2016 15:21:16 +0100
+
+apt (1.4~beta1) unstable; urgency=medium
+
+ [ Chris Leick ]
+ * Updated German documentation translation
+ * fix three typos in sources & manpages
+ * German translation proof read by Helge Kreutzmann
+
+ [ Frans Spiesschaert ]
+ * Dutch program translation update (Closes: #840552)
+ * Dutch manpages translation update (Closes: #840757)
+
+ [ David Kalnischkies ]
+ * don't install new deps of candidates for kept back pkgs
+ * keep Release.gpg on untrusted to trusted IMS-Hit (Closes: 838779)
+ * fix testcase expecting incorrect remove log from dpkg
+ * reset HOME, USER(NAME), TMPDIR & SHELL in DropPrivileges (Closes: 842877)
+ * show the conflicting distribution warning again (Closes: 841874)
+ * rename Checksum-FileSize to Filesize in hashsum mismatch
+ * improve SOCKS error messages for http slightly
+ * support 'apt build-dep .' (aka: without /)
+ * add TMP/TEMP/TEMPDIR to the TMPDIR DropPrivileges dance
+ * http: skip connection cleanup if we close it anyhow
+ * add hidden config to set packages as Essential/Important.
+ Thanks to Anthony Towns for initial patch (Closes: 767891)
+ * don't warn if untransformed distribution matches.
+ Thanks to Lukas Anzinger for initial patch (Closes: 644610)
+ * show distribution mismatch for changed codenames
+ * react to trig-pend only if we have nothing else to do
+ * correct cross & disappear progress detection
+ * improve arch-unqualified dpkg-progress parsing
+ * don't perform implicit crossgrades involving M-A:same
+ * do not configure unconfigured to be removed packages
+ * skip unconfigure for unconfigured to-be removed pkgs
+ * report apt-key errors via status-fd messages (LP: #1522988)
+ * add apt-key support for armored GPG key files (*.asc)
+ * document which keyring formats are supported by apt-key (Closes: 844724)
+ * get pdiff files from the same mirror as the index
+ * follow the googletest merge in build-depends
+
+ [ Michael Vogt ]
+ * Do not (re)start "apt-daily.system"
+ Thanks to Alexandre Detiste (Closes: #841763)
+
+ [ Johannes Schauer ]
+ * add support for Build-Depends/Conflicts-Arch (Closes: #837395)
+
+ [ Edgar Fuß ]
+ * http: clear content before reporting the failure (Closes: #465572)
+
+ [ James Clarke ]
+ * apt-ftparchive: Support NotAutomatic and ButAutomaticUpgrades fields
+ (Closes: #272557)
+
+ [ Julian Andres Klode ]
+ * TagSection: Split AlphaIndexes into AlphaIndexes and BetaIndexes
+ * TagSection: Extract Find() methods taking Pos instead of Key
+ * Squashed 'triehash/' content from commit 16f59e1
+ * TagSection: Introduce functions for looking up by key ids
+ * debListParser: Convert to use pkgTagSection::Key-based lookup
+ * Bump the cache major version for non-backportable changes
+ * Introduce tolower_ascii_unsafe() and use it for hashing
+ * Optimize VersionHash() to not need temporary copy of input
+ * Compare size before data when ordering cache bucket entries
+ * debListParser: Micro-optimize AvailableDescriptionLanguages()
+ * Do not use MD5SumValue for Description_md5()
+ * gpgv: Untrust SHA1, RIPE-MD/160, but allow downgrading to weak
+
+ [ Paul Wise ]
+ * show output as documented for APT::Periodic::Verbose 2 (Closes: 845599)
+
+ -- Julian Andres Klode <jak@debian.org> Fri, 25 Nov 2016 23:49:54 +0100
+
+apt (1.3.1) unstable; urgency=medium
+
+ [ Julian Andres Klode ]
+ * Do not read stderr from proxy autodetection scripts
+ * travis: Move codecov from after_success to after_script
+
+ [ victory ]
+ * Japanese manpages translation update
+
+ [ Mert Dirik ]
+ * Turkish program translation update (Closes: #838731)
+
+ -- Julian Andres Klode <jak@debian.org> Tue, 04 Oct 2016 19:43:35 +0200
+
+apt (1.3) unstable; urgency=medium
+
+ [ David Kalnischkies ]
+ * abort connection on '.' target replies in SRV
+ * edsp: try 2 to read responses even if writing failed
+
+ [ Julian Andres Klode ]
+ * test: Always install dpkg into our tests, regardless of MA
+ * CMake: Add coverage build type
+ * Coverage: Do not print messages from gcov
+ * VersionHash: Do not skip too long dependency lines
+
+ -- Julian Andres Klode <jak@debian.org> Tue, 20 Sep 2016 23:53:51 +0200
+
+apt (1.3~rc4) unstable; urgency=medium
+
+ [ Julian Andres Klode ]
+ * Fix segfault and out-of-bounds read in Binary fields
+ * TagFile: Fix off-by-one errors in comment stripping
+ * Base256ToNum: Fix uninitialized value
+ * test-apt-cdrom: Fix for gnupg 2.1.15
+ * CMake: test/libapt: Use a prebuilt GTest library if available
+ * CMake: apt-pkg: Use correct ICONV_INCLUDE_DIRS variable
+ * acquire: Use priority queues and a 3 stage pipeline design
+ => faster updates with better progress reporting
+ * debian: Move bugscript to old location for overlayfs xdev issue
+ * debian: Pass -O to make to get readable build logs
+
+ [ David Kalnischkies ]
+ * try not to call memcpy with length 0 in hash calculations
+ * re-add apt breaks/replaces apt-utils (<< 1.3~exp2~) (Closes: #836220)
+ * support long keyid and fingerprint in gpgv's GOODSIG
+
+ -- Julian Andres Klode <jak@debian.org> Fri, 02 Sep 2016 20:26:36 +0200
+
+apt (1.3~rc3) unstable; urgency=medium
+
+ [ Julian Andres Klode ]
+ * Ignore SIGINT and SIGQUIT for Pre-Install hooks
+ This basically fixes Bug #832593, as long as your /bin/sh
+ is not dash, as dash is evil.
+ * prepare-release: Use equivs and gdebi-core for travis deps
+ * install-progress: Call the real ::fork() in our fork() method
+ * Packaging cleanup:
+ - debian: Install etc/apt if present (e.g., on Ubuntu)
+ - tests/control: Handle the gpg1/gpg2 mess a bit better
+ - debian: Make better use of the tree installed by CMake
+ - debian: Switch to debhelper 10
+ - debian: Add more lintian overrides
+ - debian: Drop outdated stuff
+ - debian: Run wrap-and-sort
+ - Add new symbols to symbols file
+ * Build system fixes, including:
+ - CMake: Translations: Don't rebuild .mo for line number changes
+ - CMake: Translations: Pass --previous to msgmerge.
+ Thanks to Guillem Jover for the suggestion.
+ - CMake: Do not add po/ if USE_NLS is OFF
+ - CMake: Install config and logging directories
+ - CMake: Translations: Build byproduct before output
+ - CMake: Add Large File Support (Closes: #834767)
+ * Several portability fixes (full test suite passes on FreeBSD), including:
+ - CMake: Discover docbook stylesheet in other locations
+ - Add missing includes and external definitions
+ - Use C locale instead of C.UTF-8 for protocol strings
+ - Make directory paths configurable
+ - Lower-case uname -r output in kernel autoremove helper
+ - Make root group configurable via ROOT_GROUP
+ * Accept --autoremove as alias for --auto-remove
+ * apt-inst: debfile: Pass comp. Name to ExtractTar, not Binary
+ * changelog: Respect Dir setting for local changelog getting
+ * init: Add Dir::Bin::planners default entry
+ * Switch documentation from httpredir.d.o to deb.d.o
+
+ [ Zhou Mo ]
+ * zh_CN.po: update simplified Chinese translation
+
+ [ David Kalnischkies ]
+ * do dpkg --configure before --remove/--purge --pending (Closes: 835094)
+ * prevent C++ locale number formatting in text APIs (try 3) (LP: 1611010)
+ * do fail on weakhash/loop earlier in acquire (Closes: 835195)
+ * do not restore selections for already purged packages
+ * apt-key: warn instead of fail on unreadable keyrings
+ * show apt-key warnings in apt update (Closes: 834973)
+ * treat .ddeb files like .deb, especially for dpkg (LP: #1616909)
+ * randomize acquire order for same type index files
+ * don't loop on pinning pkgs from absolute debs by regex (Closes: 835818)
+
+ -- Julian Andres Klode <jak@debian.org> Tue, 30 Aug 2016 22:20:28 +0200
+
+apt (1.3~rc2) unstable; urgency=medium
+
+ [ Julian Andres Klode ]
+ * debian/NEWS: Get rid of 1.3~pre3+cmake1 entry.
+ Thanks to Axel Beckert for reporting
+ * CMake: Use COPYONLY instead of @ONLY
+ * fileutl: empty file support: Avoid fstat() on -1 fd and check result
+ * Change anonscm.d.o links to /git/apt/apt.git and https
+
+ [ David Kalnischkies ]
+ * don't perform int<float in progress bar drawing
+ * ensure a good clock() value for usage and tests
+ * drop incorrect const attribute from DirectoryExists (LP: 1473674)
+ * http(s): allow empty values for header fields (Closes: 834048)
+ * don't sent Range requests if we know its not accepted
+ * don't try pipelining if server closes connections (Closes: #832113)
+ * log with the failed item description, not with next try
+ * retry without same redirection mirror on 404 errors
+ * support getting only-uncompressed files via by-hash
+ * support compression and by-hash for .diff/Index files (Closes: #824926)
+ * default to Dir=/ in dpkg/status file finding magic
+ * add the gpg-classic variant to the gpgv/gnupg or-group
+ * allow spaces in fingerprints for 'apt-key del'
+ * add --with-source option and Packages/Sources support
+ * don't count each Type as an individual deb822-sources stanza
+ * methods: read config in most to least specific order (Closes: 834642)
+
+ -- Julian Andres Klode <jak@debian.org> Wed, 17 Aug 2016 23:31:07 +0200
+
+apt (1.3~rc1) unstable; urgency=medium
+
+ * Summary: CMake branch merged, socks5h (and tor) support, and fancy
+ installation ordering changes.
+
+ [ Julian Andres Klode ]
+ * Handle interrupt when running Pre-Install hooks (Closes: #832593)
+ * CMake: po: Add mirror method
+ * CMake: Translations: Add support for shell scripts
+ * debian: make autopkgtest run with CMake build dir
+ * CMake: Bump minimum required version to 3.4.0
+ * CMake: Check for ptsname_r() again (Closes: #833674)
+ * CMake: Rewrite existing Documentation support and add doxygen
+ * apt-private: Do not include apti18n.h in headers
+ * Get rid of the old buildsystem
+ * Fix some indentation issues in README.md
+
+ [ David Kalnischkies ]
+ * pass --force-remove-essential to dpkg only if needed
+ * use dpkg --unpack --recursive to avoid long cmdlines
+ * save and restore selection states before/after calling dpkg
+ * select remove/purge packages early on for dpkg
+ * call dpkg with --no-triggers by default (Closes: #626599)
+ * don't purge directly, but remove and do purge at the end
+ * ensure all configures are reported to hook scripts
+ * ensure all removes are reported to hook scripts
+ * support all socks-proxy known to curl in https method
+ * suggest transport-packages based on established namescheme
+ * fail on unsupported http/https proxy settings (Closes: #623443)
+ * detect redirection loops in acquire instead of workers
+ * use the same redirection handling for http and https
+ * implement generic config fallback for methods
+ * implement socks5h proxy support for http method (Closes: 744934)
+ * allow methods to be disabled and redirected via config
+ * allow user@host (aka: no password) in URI parsing
+ * try to avoid removal of crossgraded packages
+ * simulate all package manager actions explicitly
+ * disable explicit configuration of all packages at the end
+ * block direct connections to .onion domains (RFC7687)
+ * http: auto-configure for local Tor proxy if called as 'tor'
+
+ -- Julian Andres Klode <jak@debian.org> Thu, 11 Aug 2016 14:10:22 +0200
+
+apt (1.3~pre3+cmake2) experimental; urgency=medium
+
+ * Build-depend on pkg-config
+
+ -- Julian Andres Klode <jak@debian.org> Sat, 06 Aug 2016 23:18:37 +0200
+
+apt (1.3~pre3+cmake1) experimental; urgency=medium
+
+ [ Julian Andres Klode ]
+ * configure.ac: Re-enable pthread support for thread-local _error
+ * CMake: Add basic CMake build system
+ * CMake: Add support for building and installing .mo files
+ * CMake: Add initial support for documentation building
+ * CMake: Switch integration tests and travis over
+ * CMake: debian: Switch packaging over to CMake and dh 9
+
+ [ Jason Travis ]
+ * doc: update path to periodic options script
+
+ -- Julian Andres Klode <jak@debian.org> Sat, 06 Aug 2016 22:37:30 +0200
+
+apt (1.3~pre3) unstable; urgency=medium
+
+ [ Julian Andres Klode ]
+ * ExecGPGV: Fork in all cases
+ * ExecGPGV: Pass current config state to apt-key via temp file (LP: #1607283)
+
+ [ David Kalnischkies ]
+ * tests: activate dpkg multi-arch even if test is single arch
+ * ensure Cnf::FindFile doesn't return files below /dev/null
+ * don't hardcode /var/lib/dpkg/status as dir::state::status
+ * allow arch=all to override No-Support-for-Architecture-all
+ * support "install ./foo.changes"
+ * clean up default-stanzas from extended_states on write
+ * report warnings&errors consistently in edit-sources
+ * create non-existent files in edit-sources with 644 instead of 640
+ * report progress for removing while purging pkgs
+ * use a configurable location for apport report storage
+ * report progress for triggered actions
+ * call flush on the wrapped writebuffered FileFd
+ * verify hash of input file in rred
+ * use proper warning for automatic pipeline disable
+ * http: skip requesting if pipeline is full
+ * rred: truncate result file before writing to it (Closes: #831762)
+ * eipp: avoid producing file warnings in simulation (Closes: 832614)
+ * if the FileFd failed already following calls should fail, too
+ * edsp: try to read responses even if writing failed
+ * prevent C++ locale number formatting in text APIs (try 2) (Closes: 832044)
+ * apt-key: kill gpg-agent explicitly in cleanup
+
+ [ Mert Dirik ]
+ * Turkish program translation update (Closes: 832039)
+
+ -- Julian Andres Klode <jak@debian.org> Thu, 04 Aug 2016 10:23:49 +0200
+
+apt (1.3~pre2) unstable; urgency=medium
+
+ [ Andrew Patterson ]
+ * Add kernels with "+" in the package name to APT::NeverAutoRemove
+ (Closes: #830159)
+
+ [ David Kalnischkies ]
+ * add Testsuite-Triggers to tagfile-order
+ * tests: fix external solver/planner directory setup
+
+ -- Julian Andres Klode <jak@debian.org> Fri, 08 Jul 2016 14:28:57 +0200
+
+apt (1.3~pre1) unstable; urgency=medium
+
+ Upload to unstable from the pub because Niels wanted it
+
+ [ David Kalnischkies ]
+ * show right binary name in simulation notice (Closes: 825216)
+ * imbue datetime parsing with C.UTF-8 locale (Closes: 828011)
+ * imbue .diff/Index parsing with C.UTF-8 as well
+ * close server if parsing of header field failed
+ * add myself to Uploaders
+ * eipp: implement version 0.1 of the protocol
+ * eipp: provide the internal planer as an external one
+ * eipp: make no difference between remove & purge
+ * eipp: properly handle arch-specific provides
+ * eipp: implement Immediate-Configuration flag
+ * eipp: add Allow-Temporary-Remove-of-Essentials
+ * eipp: rename stanza 'Install' to 'Unpack'
+ * eipp: enable xz-compressed scenario logging
+ * if conf unset, don't read / as conf/pref/sources dir
+ * don't do atomic overrides with failed files (Closes: 828908)
+ * if reading of autobit state failed, let write fail
+ * write auto-bits before calling dpkg & again after if needed
+ * protect only the latest same-source providers from autoremove
+ * reinstalling local deb file is no downgrade
+ * do not treat same-version local debs as downgrade
+ * alias apt-key list to finger (Closes: 829232)
+ * warn if apt-key is used in scripts/its output parsed
+ * deprecate 'apt-key update' and no-op it in Debian
+ * use +0000 instead of UTC by default as timezone in output
+ * avoid 416 response teardown binding to null pointer
+ * report write errors in EDSP/EIPP properly back to caller
+ * EIPP/EDSP log can't be written is a warning, not an error
+ * don't change owner/perms/times through file:// symlinks
+ * report all instead of first error up the acquire chain
+ * keep trying with next if connection to a SRV host failed
+
+ [ Zhou Mo ]
+ * zh_CN.po: update simplified chinese translation
+
+ [ Julian Andres Klode ]
+ * methods/ftp: Cope with weird PASV responses.
+ Thanks to Lukasz Stelmach for the initial patch (Closes: #420940)
+ * Fix buffer overflow in debListParser::VersionHash() (Closes: #828812)
+ * cache: Bump minor version to 6
+ * indextargets: Check that cache could be built before using it
+ (Closes: #829651)
+
+ [ Nicolas Le Cam ]
+ * Use the ConditionACPower feature of systemd in the apt-daily service
+ (Closes: #827930)
+ * Add a apt suggests powermgmt-base
+
+ -- Julian Andres Klode <jak@debian.org> Thu, 07 Jul 2016 20:25:18 +0200
+
+apt (1.3~exp3) experimental; urgency=medium
+
+ [ Petter Reinholdtsen ]
+ * Norwegian Bokmål program translation update (Closes: 827067)
+
+ [ David Kalnischkies ]
+ * apt-key: don't search PATH if command is a path already
+ * don't use FindFile for external Dir::Bin commands
+ * http: don't hang on redirect with length + connection close
+ * merge sources.list lines based on Release filename (Closes: 826944)
+ * avoid std::get_time usage to sidestep libstdc++6 bug (LP: 1593583)
+ * do not error if auto-detect-proxy cmd has no output (Closes: 827713)
+ * implement and document DIRECT for auto-detect-proxy
+ * run update post-invokes even on (partial) failures
+ * handle weak-security repositories as unauthenticated (Closes: 827364)
+ * generalize secure->insecure downgrade protection
+ * forbid insecure repositories by default expect in apt-get (Closes: 808367)
+ * source: if download is skipped, don't try to unpack
+ * better error message for insufficient hashsums (Closes: 827758)
+ * add [weak] tag to hash errors to indicate insufficiency
+ * ensure filesize of deb is included in the hashes list
+ * add insecure (and weak) allow-options for sources.list
+
+ [ Dominic Benson ]
+ * Reinstate caching of file hashes in apt-ftparchive (Closes: #806924)
+
+ [ Zhou Mo ]
+ * zh_CN.po: update simplified chinese translation
+
+ -- Julian Andres Klode <jak@debian.org> Wed, 22 Jun 2016 14:50:12 +0200
+
+apt (1.3~exp2) experimental; urgency=medium
+
+ [ Johannes 'josch' Schauer ]
+ * edsp: document unique package identifiers
+
+ [ David Kalnischkies ]
+ * edsp: warn if unexpected stanzas appear in the solution
+ * show globalerrors before asking for confirmation
+ * show final solution in --no-download --fix-missing mode
+ * document --no- as --show-upgraded is the default (Closes: 824456)
+ * fail instead of segfault on unreadable config files (Closes: 824503)
+ * convert EDSP to be based on FileFd instead of FILE*
+ * edsp: dump: support dumping into compressed file
+ * edsp: add Forbid-{New-Install,Remove} and Upgrade-All
+ * update symbols file
+ * no-change bump of Standards-Version to 3.9.8
+ * override lintian on doxygens embedded-javascript-library
+ * fix and document on the fly compressor config
+ * prevent C++ locale number formatting in text APIs (Closes: #825396)
+ * accept only the expected UTC timezones in date parsing (Closes: 819697)
+ * avoid changing the global LC_TIME for Release writing
+ * use de-localed std::put_time instead rolling our own
+ * use std::locale::global instead of setlocale
+ * look into the right textdomain for apt-utils again
+ * try to detect sudo spawned root-shell in prefixing (Closes: 825742)
+ * ignore std::locale exception on non-existent "" locale
+ * apt-key: change to / before find to satisfy its CWD needs.
+ Thanks to Samuel Thibault for 'finding' the culprit! (Closes: 826043)
+ * edsp: use an ID mapping for the internal solver
+ * edsp: use a stanza based interface for solution writing
+ * edsp: optionally store a compressed copy of the last scenario
+ * move 'dump' solver from apt-utils to apt package
+ * edsp: if internal is used, keep this decision
+ * edsp: if logging is requested, do it for internal, too
+ * edsp: drop privileges before executing solvers
+ * don't explicitly configure the last round of packages
+ * drop Dpkg::MaxArgs in favor of Dpkg::MaxArgsBytes
+ * do not hang on piped input in PipedFileFdPrivate
+ * don't leak an FD in lz4 (de)compression
+ * don't leak EDSP solver output fd
+ * don't leak FD in AutoProxyDetect command return parsing
+
+ [ Julian Andres Klode ]
+ * Provide complete apt bash completion.
+ Thanks to Elias Fröhner and Svyatoslav Gryaznov for the initial work
+ (LP: #1573547)
+ * apt.systemd.daily: Put opening brace of check_power on extra line
+ (LP: #1581985)
+ * Add conflicting Signed-By values to error message
+ * Normalize Signed-By values by removing trailing commas everywhere
+ * Pass -fvisibility-inlines-hidden to g++
+
+ [ Zhou Mo ]
+ * zh_CN.po: update simplified Chinese translation.
+
+ [ Yuri Kozlov ]
+ * Russian program translation update (Closes: 824702)
+
+ [ Takuma Yamada ]
+ * Japanese program translation update (Closes: 826291)
+
+ -- Julian Andres Klode <jak@debian.org> Sat, 11 Jun 2016 17:23:19 +0200
+
+apt (1.3~exp1) experimental; urgency=medium
+
+ [ David Kalnischkies ]
+ * make random acquire queues work less random
+ * add dep11 files to default Release patterns
+ * don't ask server if we have entire file in partial/
+ * properly format multiline error messages
+ * format multiline errors properly in acquire progress
+ * show more details for "Hash Sum mismatch" errors
+ * show more details for "Writing more data" errors, too
+ * use the same redirection mirror for all index files
+ * edsp: ask policy engine for the pin of the version directly
+ * give rc-status packages a pin of -1
+ * respect user pinning in M-A:same version (un)screwing
+ * deprecate confusing Pkg.CandVersion() method
+ * factor out Pkg/DepIterator prettyprinters into own header
+ * gpgv: use EXPKEYSIG instead of KEYEXPIRED
+ * gpgv: handle expired sig as worthless
+ * don't show NO_PUBKEY warning if repo is signed by another key
+ (Closes: 618445)
+ * support multiple fingerprints in signed-by
+ * support Signed-By in Release files as a sort of HPKP
+ * bugscript: include all configuration fragment files (Closes: 820861)
+ * move gnupg|gnupg2 from apt Depends to Recommends
+ * warn if apt-key is run unconditionally in maintainerscript
+ * remove 100-levels config nesting limit
+ * let DPKG_COLORS default to our APT::Color setting
+ * allow redirection for items without a space in the desc again
+ * delay progress until Release files are downloaded
+ * download arch:all also for NATIVE_ARCHITECTURE indextargets
+ * implement Fallback-Of for IndexTargets
+ * implement Identifier field for IndexTargets
+ * gpgv: show always webportal error on NODATA (Closes: 823746)
+ * don't sent uninstallable rc-only versions via EDSP
+ * edsp: support generic and solver-specific configs (Closes: 823918)
+
+ [ Julian Andres Klode ]
+ * policy: Get rid of old (pre-1.1) GetCandidateVer algorithm
+ * private-show: Get rid of old policy support code
+ * ftparchive: Support writing Signed-By fields
+ * Strip trailing commas for created signed-by fingerprint lists
+ * update: Run Post-Invoke-Success if not all sources failed
+
+ [ Patrick Cable ]
+ * refactored no_proxy code to work regardless of where https proxy is set
+
+ [ James McCoy ]
+ * deb822: Restore support for <multivalue>-{Add,Remove}
+
+ [ Zhou Mo ]
+ * zh_TW.po: remove several fuzzy tags after review
+
+ [ Adrian Wielgosik ]
+ * Don't copy strings in Startswith, Endswith
+ * Speed up GetLocalitySortedVersionSet.
+
+ [ Frans Spiesschaert ]
+ * Dutch program translation update (Closes: 823976)
+
+ -- Julian Andres Klode <jak@debian.org> Wed, 11 May 2016 10:48:27 +0200
+
+apt (1.2.11) unstable; urgency=medium
+
+ [ David Kalnischkies ]
+ * ensure transaction states are changed only once
+ * stop handling items in doomed transactions.
+ Thanks to Barr Detwix & Vincent Lefevre for log files (Closes: 817240)
+ * do not require non-broken systems in 'upgrade'
+ * detect compressed status files on extension again
+ * recheck Pre-Depends satisfaction in SmartConfigure (LP: #1569099)
+ * fix Alt-Filename handling of file method
+ * allow uncompressed files to be empty in store again
+ * silently skip acquire of empty index files
+ * ensure outdated files are dropped without lists-cleanup
+
+ [ Kelemen Gábor ]
+ * Hungarian program translation update (Closes: 820638)
+
+ -- Julian Andres Klode <jak@debian.org> Mon, 25 Apr 2016 15:23:49 +0200
+
+apt (1.2.10) unstable; urgency=medium
+
+ [ Zhou Mo ]
+ * zh_CN.po: update simplified Chinese translation. (100%)
+
+ [ Julian Andres Klode ]
+ * test-apt-download-progress: Use a larger file for testing
+ * Allow lowering trust level of a hash via config
+
+ [ Michael Vogt ]
+ * Use systemd.timer instead of a cron job (Closes: #600262, #709675, #663290)
+ (LP: #246381, #727685)
+
+ [ David Kalnischkies ]
+ * use buffered writing for InRelease splitting
+
+ [ Takuma Yamada ]
+ * Japanese program translation update (Closes: 819938)
+
+ -- Michael Vogt <mvo@debian.org> Tue, 05 Apr 2016 20:23:47 +0200
+
+apt (1.2.9) unstable; urgency=high
+
+ [ David Kalnischkies ]
+ * drop confusing comma from no strong hash message
+
+ [ Julian Andres Klode ]
+ * Do not mark packages for keep that we want to remove (LP: #1562402)
+ (This fixes some upgrades involving renames where the old package
+ is removed)
+
+ -- Julian Andres Klode <jak@debian.org> Sun, 27 Mar 2016 01:26:51 +0100
+
+apt (1.2.8) unstable; urgency=medium
+
+ [ Michael Vogt ]
+ * Get accurate progress reporting in apt update again
+
+ [ Julian Andres Klode ]
+ * Report non-transient errors as errors, not as warnings
+ * methods/gpgv: Rewrite error handling and message.
+ Thanks to Ron Lee for wording suggestions
+ * Use descriptive URIs in 104 Warning messages
+ * cachefile: Only set members that were initialized successfully
+ (Closes: #818628)
+ * Update symbols file
+
+ [ David Kalnischkies ]
+ * do not strip epochs from state version strings (Closes: 818162)
+ * properly check for "all good sigs are weak" (Closes: 818910)
+ * handle gpgv's weak-digests ERRSIG
+
+ [ Zhou Mo ]
+ * zh_CN.po: update simplified Chinese translation. (Closes: #818639)
+
+ [ Takuma Yamada ]
+ * Japanese manpage translation update (Closes: 818950)
+
+ -- Julian Andres Klode <jak@debian.org> Thu, 24 Mar 2016 19:31:24 +0100
+
+apt (1.2.7) unstable; urgency=medium
+
+ "Caesar is dead"
+
+ [ Frans Spiesschaert ]
+ * Dutch program translation update (Closes: 817060)
+ * Dutch manpages translation update (Closes: 817062)
+
+ [ Julian Andres Klode ]
+ * Use native architecture instead of amd64 for build-dep-purge test
+ * Do not consider SHA1 usable
+ * Test that SHA1-only .diff/Index files are not used
+ * test: Use SHA512 digests for GPG, reject SHA1-based signatures
+ * methods/gpgv: Reject weak digest algorithms
+ * apt-pkg/acquire-worker.cc: Introduce 104 Warning message
+ * methods/gpgv: Warn about SHA1 (and RIPEMD-160)
+
+ [ David Kalnischkies ]
+ * require $(HASH)-Download field in .diff/Index files
+ * flush line-clearing on progress stop before post-invoke (Closes: 793672)
+ * enforce verify of filesize in 'apt-get source'
+
+ [ Manuel "Venturi" Porras Peralta ]
+ * Spanish apt-mark translation fix (Closes: 817999)
+
+ [ Zhou Mo ]
+ * zh_CN.po: fix translation bug. (Closes: #818177)
+
+ [ Michael Vogt ]
+ * Fix bug where the problemresolve can put a pkg into a heisenstate
+ (LP: #1550741)
+
+ -- Julian Andres Klode <jak@debian.org> Tue, 15 Mar 2016 19:20:18 +0100
+
+apt (1.2.6) unstable; urgency=high
+
+ [ Veres Lajos ]
+ * Fix several typos
+
+ [ Julian Andres Klode ]
+ * apt-pkg/algorithms.cc: Avoid stack buffer overflow in KillList
+ (Closes: #701069)
+ * urgency=high because this fixes a stack overflow and the last
+ upload fixed several segfaults and has not migrated yet either.
+
+ -- Julian Andres Klode <jak@debian.org> Mon, 07 Mar 2016 19:49:38 +0100
+
+apt (1.2.5) unstable; urgency=medium
+
+ [ Daniel Kahn Gillmor ]
+ * apt-key del should correctly handle keyids prefixed with 0x
+
+ [ David Kalnischkies ]
+ * support APT::Get::Build-Dep-Automatic again in build-dep
+ * add test for apt-key 0xKEY and use parameter expansion.
+ Thanks to James McCoy for the suggestion. (Closes: 816691)
+ * do not move not-failed pdiff-patches into CWD on failure (Closes: #816837)
+ * get group again after potential remap in Source: parse.
+ Thanks to Francesco Poli and Marc Haber for testdata. (Closes: 812251)
+
+ [ Colin Watson ]
+ * Fix lzma write support to handle "try again" case (Closes: #751688)
+
+ [ Julian Andres Klode ]
+ * Prevent double remapping of iterators and string views
+ * debian/control: Set Standards-Version to 3.9.7
+
+ -- Julian Andres Klode <jak@debian.org> Sun, 06 Mar 2016 19:47:45 +0100
+
+apt (1.2.4) unstable; urgency=medium
+
+ [ David Kalnischkies ]
+ * use local changelog from /usr/share/doc if possible
+ * always download changelogs into /tmp first
+ * pass versioned provides to external solvers in EDSP
+
+ [ Julian Andres Klode ]
+ * Fix maintscript to properly remove 20changelog (Closes: #814754)
+ * Fix crash with empty architecture list (LP: #1549819)
+ * Add missing numeric includes in files using std::accumulate()
+
+ -- Julian Andres Klode <jak@debian.org> Sat, 27 Feb 2016 14:02:47 +0100
+
+apt (1.2.3) unstable; urgency=high
+
+ [ Julian Andres Klode ]
+ * Set seekpos to 0 after reopening files in Seek() (Closes: #812994, #813000)
+
+ [ David Kalnischkies ]
+ * get dpkg lock in build-dep if cache was invalid again (Closes: 814139)
+
+ -- Julian Andres Klode <jak@debian.org> Wed, 10 Feb 2016 18:02:20 +0100
+
+apt (1.2.2) unstable; urgency=medium
+
+ [ David Kalnischkies ]
+ * always create pkg at the time pkg:arch is created
+ * reimplement build-dep via apts normal resolver
+ (Closes: #137560, #444930, #489911, #583914, #728317, #812173)
+ * parse version correctly from binary Source field (Closes: 812492)
+ * get sources for packages in multiple releases again (Closes: 812497)
+ * only warn about missing/invalid Date field for now (Closes: 809329)
+ * support <libc>-<kernel>-<cpu> in architecture specs.
+ Thanks to Bálint Réczey for initial patch (Closes: #812212)
+ * avoid building dependency tree in 'source' command
+
+ [ Stefan Bühler ]
+ * fix "Mismatched free() / delete / delete []" in simple_buffer
+
+ [ Julian Andres Klode ]
+ * Do not buffer writes larger than the buffer if possible
+ * Drop the g++ build-dep, transition is done
+ * NEWS: Prefix the keep deb option with Binary::apt:: (Closes: #812111)
+ * rred: If there were I/O errors, fail
+ * Correctly report write errors when flushing buffered writer
+ * test: Fix apt-key tests to work with current gpg 2.1
+
+ [ Manuel "Venturi" Porras Peralta ]
+ * Spanish program translation update (Closes: 813467)
+
+ [ Adrian Wielgosik ]
+ * Try avoiding loading long package description
+ * Avoid temporary strings in SubstVar.
+
+ [ Fredrik Fornwall ]
+ * edspsystem.cc: include <stdlib.h> for mkdtemp (Closes: #807367)
+
+ -- Julian Andres Klode <jak@debian.org> Thu, 04 Feb 2016 22:50:43 +0100
+
+apt (1.2.1) unstable; urgency=high
+
+ [ Zhou Mo ]
+ * po: update zh_CN programs translation
+
+ [ Julian Andres Klode ]
+ * Remap StringView instances pointing into the cache (Closes: #812251)
+
+ [ Michael Vogt ]
+ * Log calling SUDO_USER or PKEXEC_UID in history.log.
+ Thanks to Thomas Reusch
+
+ -- Julian Andres Klode <jak@debian.org> Mon, 25 Jan 2016 18:03:50 +0100
+
+apt (1.2) unstable; urgency=medium
+
+ [ Julian Andres Klode ]
+ * Do not break apt-file (<< 3.0~exp1~), 2.X works fine
+ * Version the build-depends on liblz4-dev to >= 0.0~r126
+ * search: Handle packages without description (Closes: #810622)
+ * Only enable pipelining if server is HTTP/1.1 (Closes: #810796)
+
+ [ Mattia Rizzolo ]
+ * Sort the list of sources to be built and linked (Closes: #810509)
+
+ [ Michael Vogt ]
+ * Do not show multiple identical apt-cache showsrc entries (Closes: #734922)
+
+ [ David Kalnischkies ]
+ * evaluate sourceslist-list-format entity in vendors sources.list.
+ Thanks to Niels Thykier for reporting on IRC
+ * update symbols file
+ * fix M-A:foreign provides creation for unknown archs
+ * revert file-hash based action-merging in acquire (Closes: 810046)
+ * return correct position in APT::StringView::(r)find
+
+ [ Zhou Mo ]
+ * po: update simplified chinese programs translation
+
+ -- Julian Andres Klode <jak@debian.org> Fri, 15 Jan 2016 19:52:19 +0100
+
+apt (1.2~exp1) experimental; urgency=medium
+
+ [ Beatrice Torracca ]
+ * Italian manpages translation update (Closes: 809522)
+
+ [ David Kalnischkies ]
+ * add optional support for comments in pkgTagFile
+ * support comments in debian/control parsing (Closes: 806775)
+ * properly parse comments in apt_preferences and deb822-style sources
+ * include all compressed Packages/Sources files in Release file
+ * use one 'store' method to rule all (de)compressors
+ * ensure compression cleanup even without lists-cleanup
+ * allow pdiff bootstrap from all supported compressors
+ * keep compressed indexes in a low-cost format
+ * support '-' and no parameter for stdin in apt-helper cat-file
+ * tests: limit autotest-functionname generation to sane characters
+ * use filesize of compressed pdiffs for the limit if possible
+ * remove uncompressed leftover partial file before pdiff bootstrap
+
+ [ Michael Vogt ]
+ * Add support for APT::Periodic::CleanInterval.
+ Thanks to Martin-Éric Racine
+ * Add bash-completion support for the "apt" command (Closes: #747094)
+ * Add new APT::Keep-Downloaded-Packages option (Closes: #160743)
+
+ [ Julian Andres Klode ]
+ * Change compressor costs to be 100 apart
+ * apt-cache: stats: Average is over used, not all, buckets
+ * Increase APT::Cache-HashTableSize default to 50503
+ * travis: pull liblz4-dev from wily
+ * FileFd: (native) LZ4 support
+ * apt-helper: cat-file: Add -C/--compress option
+ * CopyFile: Use 64 * 1024 instead of 64000 as buffer size
+ * acquire: Allow parallelizing methods without hosts
+ * rred: Run in parallel
+ * Introduce internal APT::StringView class
+ * Switch performance critical code to use APT::StringView
+ * pkgCacheGenerator::StoreString: Get rid of std::string
+ * pkgCacheGenerator: CurMd5.Value() cannot be empty
+ * AvailableDescriptionLanguages: Use one string for all iterations
+ * NEWS: Document recompression of indices
+ * Store the size of strings in the cache
+ * libapt-pkg5.0: Add Breaks appstream (<< 0.9.0-3~)
+
+ [ Helmut Grohne ]
+ * Allow building without libgtest-dev under <nocheck> build profile
+ (Closes: #809726)
+
+ -- Julian Andres Klode <jak@debian.org> Fri, 08 Jan 2016 21:41:10 +0100
+
+apt (1.1.10) unstable; urgency=medium
+
+ [ David Kalnischkies ]
+ * deal with empty values properly in deb822 parser (Closes: 808102)
+
+ [ Beatrice Torracca ]
+ * fix 3 typos/omissions in apt.conf(5) (Closes: 809160)
+
+ [ Julian Andres Klode ]
+ * BufferedWriter: flushing: Check for written < size instead of <=
+ * aptconfiguration: Set default compression level to 6
+ * BufferedFileFdPrivate: Make InternalFlush() save against errors
+ * Switch to DJB hashing and use prime number as table size
+ * Turn tolower_ascii() and isspace_ascii() into inline functions
+ * Fix test case that was broken by switch of hash function
+ * pkgTagSection::Scan: Fix read of uninitialized value
+ * pkgCacheGenerator: Allow passing down an already created cache
+ * Add support for calculating hashes over the entire cache
+ * Do not sync the cache file
+
+ -- Julian Andres Klode <jak@debian.org> Wed, 30 Dec 2015 00:40:53 +0100
+
+apt (1.1.9) unstable; urgency=medium
+
+ Highlights: buffered rred writes and slightly faster cache generation (~10%)
+
+ [ Julian Andres Klode ]
+ * Introduce isspace_ascii() for use by parsers
+ * Convert most callers of isspace() to isspace_ascii()
+ * pkgcachegen: Use std::unordered_map instead of std::map
+ * debListParser: ParseDepends: Only query native arch if needed
+ * debListParser: Do not validate Description-md5 for correctness twice
+ * ParseDepends: Mark branches for build-dep parsing as unlikely
+ * rred: Only call pkgInitConfig() in test mode
+ * FileFdPrivate: Add getter and setter for fields
+ * FildFd: Introduce a Flush() function and call it from Close()
+ * FileFd: Add a buffered writing mode
+ * rred: Use buffered writes
+ * pkgcachegen.h: Hack around unordered_map not existing before C++11
+ * doc/acquire-additional-files.txt: Mention apt-helper cat-file
+
+ [ Niels Thykier ]
+ * Hex2Digit: Do not use isxdigit()
+
+ [ David Kalnischkies ]
+ * allow repositories to forbid arch:all for specific index targets
+
+ -- Julian Andres Klode <jak@debian.org> Sun, 27 Dec 2015 19:16:36 +0100
+
+apt (1.1.8) unstable; urgency=medium
+
+ * apt-helper: Add a cat-file command for concatening files
+ * Change InternalReadLine to always use buffer.read() return value
+
+ -- Julian Andres Klode <jak@debian.org> Sat, 26 Dec 2015 23:23:02 +0100
+
+apt (1.1.7) unstable; urgency=medium
+
+ The real "speed up rred for uncompressed files" release
+
+ * Use a hardcoded buffer size of 4096 to fix performance
+ * rred: Allow passing files as arguments for compressor testing
+ * Get rid of memmove() in our read buffering
+
+ -- Julian Andres Klode <jak@debian.org> Sat, 26 Dec 2015 19:10:14 +0100
+
+apt (1.1.6) unstable; urgency=medium
+
+ Merry Christmas from the APT Team
+
+ [ Pino Toscano ]
+ * Fix FileUtlTest.GetTempDir failure when run as root (Closes: #808383)
+ * CopyFile: fix BufSize to a sane value (Closes: #808381)
+ * CopyFile: avoid failing on EOF on some systems (Closes: #808381)
+
+ [ Julian Andres Klode ]
+ * Do nothing in FileFd::Write() if Size is 0 (Closes: #808381)
+
+ [ David Kalnischkies ]
+ * avoid evaluating shell in paths used in apt-key
+ * avoid triggering gpg2 migration in apt-key
+ * follow dpkg and xz and use CRC64 for xz compression
+ * parse xz-compression level from configuration
+ * implement a buffer system for FileFd::ReadLine (Closes: 808579)
+ * ensure we got a lock in clean operation (Closes: 808561)
+
+ -- Julian Andres Klode <jak@debian.org> Thu, 24 Dec 2015 17:01:49 +0100
+
+apt (1.1.5) unstable; urgency=medium
+
+ [ Julian Andres Klode ]
+ * Do not swap required and important in pkgCache::Priority()
+ Thanks to Manuel A. Fernandez Montecelo for discovering this
+ (Closes: #807523)
+ * Convert package names from Packages files to lower case (Closes: #807012)
+ * test framework: Correctly generate new paths in noopchroot
+ * debian/apt.auto-removal.sh: Adjust -dbg exclusion for multi-arch
+ * pkgcache: Make hash arch-independent using fixed size integer
+ * test-apt-download-progress: Run the https test multiple times
+
+ [ David Kalnischkies ]
+ * update symbols files to 1.1.4 state of affairs
+ * parse .diff/Index hashes in reverse order
+ * redirect which stderr to /dev/null for consistency (Closes: 807373)
+ * show a more descriptive error for weak Release files (Closes: 806459)
+ * support regex and co in 'apt-cache policy $pkg' again (Closes: 807870)
+ * non-existing directories don't need to be cleaned (Closes: 807477)
+
+ [ Seo Sanghyeon ]
+ * fix incorrect Korean translation of "manually" and "automatically"
+
+ [ Andreas Metzler ]
+ * mention APT::AutoRemove::{Recommends,Suggests}Important option
+ (Closes: 807413)
+
+ -- Julian Andres Klode <jak@debian.org> Mon, 14 Dec 2015 16:56:11 +0100
+
+apt (1.1.4) unstable; urgency=medium
+
+ [ Julian Andres Klode ]
+ * defaults.mak: Set LC_COLLATE=C.UTF-8 for reproducible sort order
+ * Avoid overflow when summing up file sizes
+
+ [ David Kalnischkies ]
+ * add a apt breaks (apt-utils << 1.1.3) for partial-upgrades (Closes: 806765)
+ * require explicit paths to dsc/control as we do for deb files
+ (Closes: 806693)
+ * use @CHANGEPATH@ as placeholder in changelog URI templates
+ * replace "which" with "command -v" for portability.
+ Thanks to Mingye Wang for the suggestion. (Closes: 807144)
+ * replace run-parts with find|sort to avoid debianutils usage
+ * part revert, part redo 'which' replacement.
+ Thanks to Jakub Wilk for pointing out #747320
+
+ [ Fredrik Fornwall ]
+ * apt-helper.cc: include <stdlib.h> for atoi (Closes: 807031)
+
+ -- Julian Andres Klode <jak@debian.org> Mon, 07 Dec 2015 15:31:31 +0100
+
+apt (1.1.3) unstable; urgency=medium
+
+ [ David Kalnischkies ]
+ * use function pointers instead of weak symbols for cmdline parsing
+ * accept ../ on the cmdline as start for a deb file as well
+ * add apt-utils Depends apt (= ${binary:Version})
+
+ [ Andreas Cadhalpun ]
+ * do not override exact targetrelease matches with lesser matches
+ (Closes: 746412)
+
+ -- Michael Vogt <mvo@debian.org> Mon, 30 Nov 2015 08:49:40 +0100
+
+apt (1.1.2) unstable; urgency=medium
+
+ [ David Kalnischkies ]
+ * outsmart gcc -O3 over-optimization in pkgCdrom::FindPackages
+ * disable privilege-drop verification by default as fakeroot trips over it
+ (Closes: 806475)
+ * fix program name detection in rsh method
+ * disable privilege dropping for rsh/ssh method by default (Closes: 806511)
+
+ [ Michael Vogt ]
+ * do not use "-Wl,-Bsymbolic-functions" during the build to avoid breakage
+
+ -- Julian Andres Klode <jak@debian.org> Sat, 28 Nov 2015 22:47:40 +0100
+
+apt (1.1.1) unstable; urgency=medium
+
+ [ Michael Vogt ]
+ * Deal with killed acquire methods properly instead of hanging
+ (Closes: #806406)
+ * Check if the Apt::Sandbox::User exists in CheckDropPrivsMustBeDisabled()
+ (Closes: #806406)
+
+ [ David Kalnischkies ]
+ * appease adequate with some weak symbols for -private (Closes: #806422)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 27 Nov 2015 16:04:59 +0100
+
+apt (1.1) unstable; urgency=medium
+
+ [ Justin B Rye ]
+ * review apt(8) manpage
+ * review apt-mark(8) manpage
+ * review apt-secure(8) manpage
+ * review sources.list(5) manpage
+
+ [ Michael Vogt ]
+ * upload ABI break version from experimental to unstable
+
+ -- Michael Vogt <mvo@debian.org> Thu, 26 Nov 2015 12:33:44 +0100
+
+apt (1.1~exp16) experimental; urgency=medium
+
+ [ David Kalnischkies ]
+ * do not use _apt for file/copy sources if it isn't world-accessible
+ (Closes: 805069)
+ * support setting empty values (sanely) & removing support
+ for space-gapping: '-o option= value'
+ Thanks to Daniel Hartwig for initial patch. (Closes: 693092)
+ * ignore lost+found in private directory cleanup (Closes: 805424)
+ * update libapt-{pkg,inst} symbols files
+ * do not rerun ./configure causing FTCBFS with newer autotools-dev.
+ Thanks to Helmut Grohne for the detailed bugreport. (Closes: 804923)
+ * do not segfault in cache generation on mmap failure (Closes: 803417)
+ * do not sent Last-Modified if we expect a changed file
+ * show potentially arch-qualified fullname in 'apt show'
+
+ [ Frans Spiesschaert ]
+ * Dutch manpages translation (NEW) (Closes: 805474)
+
+ [ Justin B Rye ]
+ * review of new/changed translatable program strings
+
+ -- Michael Vogt <mvo@debian.org> Tue, 24 Nov 2015 21:29:14 +0100
+
+apt (1.1~exp15) experimental; urgency=medium
+
+ [ Julian Andres Klode ]
+ * deblistparser: Make PrioList const
+ * srvrec: Do not expose C++11 tuple use in header
+ * cacheset: Fix compilation on new GCC in C++98 mode
+ * Provide tests for thread-safety
+
+ [ Mert Dirik ]
+ * Turkish program translation update (Closes: 802610)
+
+ [ David Kalnischkies ]
+ * implement a public pkgSystem::MultiArchSupported
+ * implement a public pkgSystem::ArchitecturesSupported
+ * implement operator* for cacheset iterators
+ * refactor dpkg execution in deb/debsystem
+ * provide public interface to hold/unhold packages
+ * allow all dpkg selections to be set via apt-mark and libapt
+ * drop privileges in file:// method as we do for decompressors
+ * unbreak the copy-method claiming hashsum mismatch since ~exp9
+ (Closes: 799158)
+ * show progress info while 'downloading' a local .deb file
+ * support .deb files in upgrade operations as well
+ * rework errors and warnings around insecure repositories (Closes: 796549)
+ * refer to apt-secure(8) in unsecure repositories warning
+ * suggest 'apt autoremove' to get right of unneeded packages (Closes: 801571)
+ * add binary-specific options via Binary scope
+ * revamp apt(8) to refer more instead of duplicating
+ * disable updating insecure repositories in apt by default
+ * new quiet level -qq for apt to hide progress output
+ * hidden support more apt-get/apt-cache commands in apt
+ (Closes: 778234, 780700, 781237)
+ * show version and type in "apt (r)depends" (Closes: 218995)
+ * revamp all tools help messages
+ * sanify API to get 'the' candidate version (Closes: #803471)
+ * support arch:all data e.g. in separate Packages file
+ * ignore newlines in dpkg-deb control output for installing debs
+ (Closes: 802553)
+ * allow acquire method specific options via Binary scope
+ * encode UTF-8 characters correctly in QuoteString (Closes: 799123)
+ * activate AI_IDN by default to support IDN domains (Closes: 763437)
+
+ -- Michael Vogt <mvo@debian.org> Wed, 11 Nov 2015 17:04:43 +0100
+
+apt (1.1~exp14) experimental; urgency=medium
+
+ [ Julian Andres Klode ]
+ * Revert "Fix select timeout to be 50msec instead of 0.5msec" for acquire
+ * .travis.yml: Add pinned vivid for gettext and clean up a bit
+ * Allow -i and -u as aliases for installed and upgradable in list
+
+ -- Michael Vogt <mvo@debian.org> Tue, 20 Oct 2015 18:25:04 +0200
+
+apt (1.1~exp13) experimental; urgency=medium
+
+ [ Michael Vogt ]
+ * Use xgettext --no-location in make update-pot
+ * Fix select timeout to be 50msec instead of 0.5msec (Closes: #799857)
+
+ [ David Kalnischkies ]
+ * M-A: allowed pkgs of unconfigured archs do not satisfy :any
+ * implement dpkgs vision of interpreting pkg:<arch> dependencies
+ * add Source-Version field for EDSP
+ * fix insecure use of /tmp in EDSP solver 'dump' (Closes: 795600)
+ * select kernels to protect from autoremove based on Debian version
+ (Closes: 787827)
+ * implement autobit and pinning in EDSP solver 'apt'
+ * do not discard new manual-bits while applying EDSP solutions
+ * include debug information in the autoremove-kernels file
+ * avoid using global PendingError to avoid failing too often too soon
+ * implement apt-get source msg 'Please use: $vcs' for git
+ * do not ignore differently versioned self-provides
+ * do not generate bogus hashes if hash is disabled in apt-ftparchive
+ * use APT::FTPArchive hash settings as default for APT::FPArchive::$filetype
+ * add --sha512 option + documentation for apt-ftparchive
+ * deal with spaces in path, command and filepaths in apt-key
+ * add by-hash sources.list option and document all of by-hash
+ * fallback to well-known URI if by-hash fails (Closes: 798919)
+
+ -- Michael Vogt <mvo@debian.org> Mon, 05 Oct 2015 18:27:22 +0200
+
+apt (1.1~exp12) experimental; urgency=medium
+
+ [ David Kalnischkies ]
+ * sources.list and indextargets option for pdiffs
+ * auto-prefix $(SITE) for indextargets Description field
+ * implement PDiff patching for compressed files
+ * implement indextargets option 'DefaultEnabled'
+ * try xz instead of bz2 first for compressed files
+ * implement $(NATIVE_ARCHITECTURE) substvar for indextargets
+ * detect and deal with indextarget duplicates
+ * ignore for _apt inaccessible TMPDIR in pkgAcqChangelog (Closes: 797270)
+ * if file is inaccessible for _apt, disable privilege drop in acquire
+ * remove Christian Perrier from Uploaders as requested.
+ Thanks to Christian for all the l10n, code & social contributions!
+ (Closes: #783337)
+ * use unusable-for-security hashes for integrity checks
+ * use clock() as source for SRV randomness
+
+ [ Miroslav Kure ]
+ * Czech program translation update (Closes: 797329)
+
+ [ Michael Vogt ]
+ * Consider md5sum no longer a usable hash
+ * Add support for writing by-hash dirs in apt-ftparchive
+
+ [ Julian Andres Klode ]
+ * apt-pkg/tagfile.h: Include stdint.h, fixes rdep build failures
+
+ -- Michael Vogt <mvo@debian.org> Fri, 11 Sep 2015 23:31:34 +0200
+
+apt (1.1~exp11) experimental; urgency=medium
+
+ [ Julian Andres Klode ]
+ * pkgcachegen: Account for remapping when parsing depends from NewPackage.
+ Thanks to Jakub Wilk for the bug report and the backtraces (Closes: #796999)
+ * debian/rules: Only do parallel build if specified in DEB_BUILD_OPTIONS.
+ Thanks to Jakub Wilk for the suggestion
+ * cacheset: Prefer the depcache over the policy again
+ * install: Set a local deb as the candidate for that package
+ * Always close compressed files in FileFd
+ * Use compressor support from FileFd for ExtractTar instead of programs
+ * Do not parse Status fields from remote sources
+
+ [ David Kalnischkies ]
+ * just-in-time removal of broken essential packages (Closes: 796070)
+ * correct 'apt update' download summary line
+ * ignore AllowMem parameter in cache generation (Closes: 796459)
+ * add a libapt-pkg recommends apt
+ * fix various typos reported by codespell
+ * use always priv-dropping for changelog download as root
+ * allow explicit dis/enable of IndexTargets in sources options
+
+ [ Anders Jonsson ]
+ * Swedish program translation update (Closes: 796059)
+
+ -- Julian Andres Klode <jak@debian.org> Thu, 27 Aug 2015 17:55:12 +0200
+
+apt (1.1~exp10) experimental; urgency=medium
+
+ [ Michael Vogt ]
+ * add support for SRV record lookup before connect
+ * Provide "apt-get full-upgrade" to match "apt full-upgrade"
+ * Add support for "apt-cache showsrc --only-source srcpkgname"
+ Thanks to Steve Slangasek for the suggestion (Closes: 695633)
+
+ [ Julian Andres Klode ]
+ * Support tabs in sources.list files (Closes: #796067)
+ * Re-indent GetCandidateVerNew() and make ConsiderFiles argument explicit
+ * postinst: Correctly pass --home instead of -home, and fixup old user.
+ Thanks to Niels Thykier for reporting this on IRC
+
+ -- Michael Vogt <mvo@debian.org> Mon, 24 Aug 2015 10:12:15 +0200
+
+apt (1.1~exp9) experimental; urgency=medium
+
+ [ Michael Vogt ]
+ * Add "ca-certificates" recommends to apt-transport-https
+ * test/integration/test-apt-download-progress:
+ - fix test failure on fast hardware
+ * Rename "Size" in ServerState to TotalFileSize
+ * Make apt compile with clang++ again
+ * Cleanup includes (Thanks iwyu)
+
+ [ David Kalnischkies ]
+ * re-enable patchsize limit option for pdiffs
+ * better non-virtual metaIndex.LocalFileName() implementation
+ * mark internal interfaces as hidden
+ * restore ABI of pkgTagSection
+ * streamline display of --help in all tools
+ * allow uninstalled packages to be put on hold
+ * use 'best' hash for source authentication (LP: #1098738)
+ * re-enable support for -s (and co) in apt-get source (Closes: 742578)
+ * create directory for extended_states if needed
+ * create our cache and lib directory always with mode 755
+ * fix file ownership tests to work on kfreebsd
+ * use dpkg --merge-avail only if needed in apt-mark
+ * properly handle already reinstall pkgs in ordering (Closes: 770291)
+ * correct architecture detection for 'rc' packages for purge (Closes: 770898)
+ * derive more of https from http method
+ * properly implement pkgRecord::Parser for *.deb files
+ * improve https method queue progress reporting.
+ Thanks to Robert Edmonds and Anders Kaseorg for initial patchs
+ (Closes: 777565, 781509)
+ * calculate only expected hashes in methods
+ * calculate hashes while downloading in https
+ * ensure lists/ files have correct permissions after apt-cdrom add
+ * unsigned Release files can expire, too
+ * a hit on Release files means the indexes will be hits too
+ * remove "first package seen is native package" assumption.
+ Thanks to Axel Beckert for testing (Closes: 782777)
+ * improve partial/ cleanup in abort and failure cases
+ * a pin of 1000 always means downgrade allowed
+ * remove unused and strange default-value for pins
+ * show non-matching m-a:same versions in debug message
+ * fix 'Source' to 'Package' rename in apt-ftparchive
+ * sync TFRewrite*Order arrays with dpkg and dak
+ * stop depending on copy-on-write for std::string
+ * implement a more c++-style TFRewrite alternative
+ * rewrite all TFRewrite instances to use the new pkgTagSection::Write
+ * detect 416 complete file in partial by expected hash
+ * implement VerifyFile as all-hashes check
+ * detect Releasefile IMS hits even if the server doesn't
+ * treat older Release files than we already have as an IMSHit
+ * don't try other compressions on hashsum mismatch
+ * rework hashsum verification in the acquire system
+ * check patch hashes in rred worker instead of in the handler
+ * add more parsing error checking for rred
+ * support hashes for compressed pdiff files
+ * do not request files if we expect an IMS hit
+ * configurable acquire targets to download additional files
+ * show URI.Path in all acquire item descriptions
+ * implement 'apt-get files' to access index targets
+ * store Release files data in the Cache
+ * implement default apt-get file --release-info mode (Closes: 752702)
+ * populate the Architecture field for PackageFiles (Closes: 687255)
+ * hide Translation-* in 'apt-cache policy' output
+ * provide a public interface for acquiring changelogs
+ (Closes: 687147, 739854, 784027, 787190)
+ * ensure valid or remove destination file in file method
+ * deal better with acquiring the same URI multiple times
+ * call URIStart in cdrom and file method
+ * show item ID in Hit, Ign and Err lines as well
+ * condense parallel requests with the same hashes to one
+ * support lang= and target= sources.list options
+ * bring back deb822 sources.list entries as .sources
+ * detect and error out on conflicting Trusted settings
+ * merge indexRecords into metaIndex
+ * add sources.list Check-Valid-Until and Valid-Until-{Max,Min} options
+ * implement Signed-By option for sources.list
+ * remove the longtime deprecated vendor{,list} stuff
+ * allow individual targets to be kept compressed
+ * support gpg 2.1.x in apt-key (Closes: 781042)
+ * merge keyrings with cat instead of gpg in apt-key.
+ Thanks to Daniel Kahn Gillmor for the suggestion
+ * handle site-changing redirects as mirror changes
+ * disable locking even for root in --simulate
+ * rename 'apt-get files' to 'apt-get indextargets'
+ * enforce GCC5 C++11 ABI and usage
+ * show or-groups in not-installed recommends and suggests lists
+ * hide implicit deps in apt-cache again by default
+ * just-in-time creation for (explicit) negative deps
+ * add volatile sources support in libapt-pkg
+ * parse packages from all architectures into the cache
+ * enhance "hit paywall" error message to mention the probable cause
+ * drop extra newline in 'Failed to fetch' and 'GPG error' message
+ * mark again deps of pkgs in APT::Never-MarkAuto-Sections as manual.
+ Thanks to Raphaël Hertzog and Adam Conrad for detailed reports and
+ initial patches (Closes: 793360) (LP: #1479207)
+ * change to libapt-pkg abi 5.0 with versioned symbols
+ * move APT::Never-MarkAuto-Sections handling to MarkDelete
+ * move manual-bit from 'oldlibs' pkg to its dependencies
+ * remove Dir:: scope limit of RootDir in the documentation (Closes: 659387)
+ * add {contrib,non-free}/{metapackages,oldlibs} to section specialhandling
+ (Closes: 788320)
+
+ [ Frans Spiesschaert ]
+ * Dutch program translation update (Closes: 771039)
+
+ [ Julien Patriarca ]
+ * French program translation update (Closes: 766755)
+
+ [ Zhou Mo ]
+ * Chinese (simplified) program translation update (Closes: 766170)
+ * Chinese (simplified) program translation update (Closes: 771982)
+
+ [ Miroslav Kure ]
+ * Czech program translation update (Closes: 764055)
+
+ [ Mert Dirik ]
+ * Turkish program translation update (Closes: 763379)
+ * Turkish translation update for apt (Closes: #789491)
+
+ [ Kenshi Muto ]
+ * Japanese program translation update (Closes: 763033)
+ * Japanese program translation update (Closes: 772678)
+
+ [ James McCoy ]
+ * support long keyids in "apt-key del" instead of ignoring them
+ (Closes: 754436)
+ * tighten filtering of kernel images in apt.auto-removal (Closes: 772732)
+ * Use terminfo's typical save_cursor/restore_cursor sequences
+ (Closes: #772521)
+
+ [ Manuel "Venturi" Porras Peralta ]
+ * Spanish program translation update (Closes: 771815)
+
+ [ Jean-Pierre Giraud ]
+ * French manpages translation update (Closes: 771967)
+
+ [ Theppitak Karoonboonyanan ]
+ * Thai program translation update (Closes: 772913)
+
+ [ Tomasz Buchert ]
+ * Fix crash in the apt-transport-https when Owner is NULL (Closes: #778375)
+
+ [ Helmut Grohne ]
+ * parse arch-qualified Provides correctly (Closes: 777071)
+
+ [ Beatrice Torracca ]
+ * Italian manpage translation update (Closes: 776702)
+
+ [ Jérémy Bobbio ]
+ * stop displaying time of build in online help (Closes: 774342)
+
+ [ Robert Edmonds ]
+ * HttpsMethod::Fetch(): Zero the FetchResult object when leaving due to 404
+
+ [ Milo Casagrande ]
+ * Italian program translation update (Closes: 782122)
+
+ [ Julian Andres Klode ]
+ * pkgPolicy: Introduce storage and helpers for per-version pins
+ * versionmatch: Extract version match checking out of Find()
+ * policy: Assign per-version pins
+ * apt-cache: Change version pin output to use per-version pins
+ * fileutl_test.cc: Check for /etc/passwd instead of /bin/sh
+ * policy: Return highest file pin if version pin == 0 in GetPriority()
+ * Determine the candidate based on per-version pins, instead of old code
+ (Closes: #770017, #622237, #620249, #685215)
+ * policy: Fix the new policy implementation to handle downgrades correctly
+ * Fix test case breakage from the new policy implementation
+ * policy: Fix the handling of config-files states
+ * Replace INT_MIN with std::numeric_limits<int>::min
+ * Simply ignore cruft in the status files, do not treat it as prio 0
+ * Fix an obscure warning from GCC
+ * apt-get: Do not include apt-pkg/indexrecords.h
+ * Drop C++11 elements from headers
+ * Re-introduce None as a deprecated alias for No
+ * Make QItem a subclass of DescItem
+ * ExecFork: Use /proc/self/fd to determine which files to close
+ (Closes: #764204)
+ * Merge changelog entries from sid-gcc5
+ * Bump apt-inst SONAME to 2.0 to adjust for the ABI break in apt-pkg
+ * Annotate more methods with APT_OVERRIDE.
+ Thanks to g++ -Wsuggest-override
+ * debian/gbp.conf: Set multimaint-merge = True
+ * debian/control: Rename libapt-pkg4.15 -> libapt-pkg5.0
+ * apt.cron.daily: Reference 10periodic instead of 02periodic (LP: #1332106)
+ * Makefile: Add a make fast command for development
+ * Add a parameter ConsiderFiles to GetPriority(VerIterator)
+ * apt-cache: Modify policy output to use per-version pins
+ * Only make Upgradable() return true for packages with a candidate
+ (LP: #896689)
+ * apt-cache: Improve translateability of the "with priority" thing
+ * policy: Be more strict about parsing pin files, and document prio 0
+ (Closes: #429912)
+ * apt_preferences(5): Re-document how priorities are calculated
+ (Closes: #554773)
+ * Drop the Section field from pkgCache::Package again
+ * Fix integration tests for the removal of the Package pin output
+ * Remove an invalid fi from a testcase
+ * C++11: Switch from auto_ptr to unique_ptr
+ * Mark SPtr as deprecated, and convert users to std::unique_ptr
+ * Deprecate SPtrArray<T> and convert everyone to unique_ptr<T[]>
+ * Use setresuid() and setresgid() where available
+ * Accept --upgradeable as synonym for --upgradable (Closes: #787846)
+ * po/fr.po: Remove the unbreakable space before ! in the confirm string
+ (Closes: #727680)
+ * Replace --force-yes by various options starting with --allow
+ * Add integration test for Pin-Priority range checks
+ * Replace UINT_MAX with std::numeric_limits<unsigned int>::max()
+ * Mention that source order only matter per version (Closes: #617445)
+ * Say "in combination with the other options" if an option is not understood
+ (Closes: #762758)
+ * apt-cache: Show an error if stats gets any arguments (Closes: #153161)
+ * apt-cache(8): Mention that --names-only search provides (Closes: #618017)
+ * apt_preferences(5): Correct default pin assignment documentation
+ (Closes: #623706)
+ * apt_preferences(5): Mention overlapping of pin matches
+ * Make auto-remove and auto-clean aliases for the versions without -
+ (Closes: #274159)
+ * apt: Add autoremove and auto-remove commands
+ * changelog: Replace spelling typo for re-enable everywhere.
+ Thanks to Lintian
+ * debian/control: Replace debian by Debian.
+ Thanks to Lintian
+ * debian/control: Drop the versioned python-apt conflict.
+ Thanks to Lintian
+ * debian/control: Remove XS- from Testsuite and bump Standards-Version.
+ Thanks to Lintian
+ * Set Acquire::Changelogs::URI::Origin::Tanglu for Tanglu changelogs
+ * Also add 'in combination with the other options.' to another error
+ * apt-cache(8): Drop the #versions >= #package names comparison
+ (Closes: #691281)
+ * apt-get: allow non-root --print-uris build-dep (Closes: #283400)
+ * doc/files.dbk: Improve documentation for {src,}pkgcache.bin
+ (Closes: #465551)
+ * update: Check if the cache could be opened, don't just assume it
+ (Closes: #756162)
+ * cachefile.cc: Do not ignore return value of pkgDepCache::Init()
+ * Add GetPriority(VerIterator) to pkgDepCache::Policy
+ * Document the general effect of the comma operator (Closes: #574939)
+ * When looking if Provides match, OR them with the normal patches
+ (Closes: #760868)
+ * install: If package already is the newest version, display version
+ (Closes: #315149)
+ * Make pkgCache::Priority() static, it does not need the instance
+ (Closes: #448627)
+ * Replace "extra" in "the following extra packages [...]" by "additional"
+ (Closes: #82430)
+ * Do not crash in 'apt show' for non-installed packages
+ * debian/NEWS: Mention new pinning algorithm added in 2.0~exp1
+
+ [ Yuri Kozlov ]
+ * Russian program translation update (Closes: 789709)
+
+ [ Guillem Jover ]
+ * po-fixups: fill Project-Id-Version and Encoding correctly (Closes: 612996)
+ * Do not set unhonored DPKG_NO_TSTP variable for dpkg (Closes: #765366)
+
+ [ Daniel Hartwig ]
+ * support setting a port for rsh:// in sources.list (Closes: 624727)
+ * replace direct calls to egrep with grep -E.
+ Thanks to David Weinehall for initial patch (Closes: 255577)
+
+ [ Luca Bruno ]
+ * Replace all "press enter" occurrences with "press [Enter]"
+ Thanks to Andre Felipe Machado for initial patch (Closes: 414848)
+
+ [ Jonathan Nieder ]
+ * document VERSION 2 (and 3) pre-install-pkgs hook interface (Closes: 627188)
+
+ [ Tomas Pospisek ]
+ * document APT::Periodic::RandomSleep.
+ Thanks to Chris Bainbridge and Kees Cook for initial text (Closes: 776380)
+
+ [ Johannes Schauer ]
+ * use a=experimental instead n=experimental in pin documentation
+ (Closes: 783343)
+
+ [ Kusanagi Kouichi ]
+ * Show full package records in apt-cache search -f (Closes: #660851)
+
+ -- Michael Vogt <mvo@debian.org> Tue, 18 Aug 2015 11:15:52 +0200
+
+apt (1.1~exp8) experimental; urgency=medium
+
+ [ Michael Vogt ]
+ * merge unstable upload version 1.0.9.3
+ * Ensure /etc/apt/auth.conf has _apt:root owner
+ * Use sysconf(_SC_ARG_MAX) to find the size of Dpkg::MaxArgBytes
+ * Only support Translation-* that are listed in the {In,}Release file
+ * Call "Dequeue()" for items in AbortTransaction() to fix race
+ * prepare ABI for feature/socketpair
+ * Bump ABI to 4.15
+
+ [ David Kalnischkies ]
+ * re-enable support for -s (and co) in apt-get source (Closes: 742578)
+ * run acquire transactions only once
+ * aborted reverify restores file owner and permission
+ * test if TMPDIR is accessible before using (Closes: 765951)
+ * chown finished partial files earlier
+ * promote filesize to a hashstring
+
+ -- Michael Vogt <mvo@debian.org> Thu, 06 Nov 2014 10:01:21 +0100
+
+apt (1.1~exp7) experimental; urgency=medium
+
+ [ David Kalnischkies ]
+ * don't cleanup cdrom files in apt-get update (Closes: 765458)
+ * ignore Acquire::GzipIndexes for cdrom sources
+
+ -- David Kalnischkies <david@kalnischkies.de> Wed, 15 Oct 2014 20:12:15 +0200
+
+apt (1.1~exp6) experimental; urgency=medium
+
+ [ josch ]
+ * implement the updated build profile spec
+
+ [ Michael Vogt ]
+ * methods/rsh.cc: replace strcat with std::string (Closes: #76442)
+ * Add new configallowinsecurerepositories to the test framework
+
+ [ Guillem Jover ]
+ * Update Status field values handling
+
+ [ David Kalnischkies ]
+ * don't drop privileges if _apt has not enough rights
+ * check for available space, excluding root reserved blocks
+
+ -- Michael Vogt <mvo@debian.org> Wed, 15 Oct 2014 07:47:36 +0200
+
+apt (1.1~exp5) experimental; urgency=medium
+
+ [ Michael Vogt ]
+ * Only rename StatError files in AbortTransaction()
+ * Document Acquire{MaxReleaseFileSize,AllowInsecureRepositories,
+ AllowDowngradeToInsecureRepositories} and
+ --no-allow-insecure-repositories
+ * Fix backward compatibility of the new pkgAcquireMethod::DropPrivsOrDie()
+ * Change default of Acquire::AllowInsecureRepositories to "true"
+ so that this change is less disruptive, this will be switched
+ to "false" again after jessie
+
+ [ David Kalnischkies ]
+ * remove useless pdiff filename output (Closes: 764737)
+ * make --allow-insecure-repositories message an error
+ * display a warning for unsigned repos
+ * trusted=yes sources are secure, we just don't know why
+
+ -- Michael Vogt <mvo@debian.org> Mon, 13 Oct 2014 16:15:22 +0200
+
+apt (1.1~exp4) experimental; urgency=medium
+
+ [ Michael Vogt ]
+ * Merge sid version 1.0.9.2
+ * feature/acq-trans:
+ - Make apt-get update more transactional by keeping all data from
+ a sources.list line in partial/ until all data is good and only
+ then move it into lists/ in one step
+ - add new -o Debug::Acquire::Transaction=1 debug option
+ * feature/expected-size:
+ Do not download more data in the mehotds than expected if we know
+ the size. For the InRelease/Release/Release.gpg add new
+ Acquire::MaxReleaseFileSize that defaults to 10Mb for now
+ * Verify the hashes of the downloaded compressed files early
+ * Only load unauthenticated data into our parsers when the user
+ explicitly asked for it via --allow-insecure-repositories
+ (Acquire::AllowInsecureRepositories)
+ * Print warning when trying to use unauthenticated repositories
+ * Use /var/empty as the homedir for _apt
+ * Revert making pkgAcquire::Item::DescURI() "const" to not break
+ API
+ * Do not allow going from a authenticated to unauthenticated repository
+ * Add missing "adduser" dependency (for the new _apt user)
+ Thanks to Russ Allbery (Closes: #763004)
+ * Test if TMPDIR is a directory in apt-key and if not unset it
+ * add early verification for the .diff/Index download
+ * Bump library version to libapt-pkg4.14
+ * Rework pkgAcqMeta{Index,Sig,ClearSig}::{Done,Failed]() for readability
+ * Ignore EINVAL from prctl(PR_SET_NO_NEW_PRIVS) (closes: 764066)
+
+ [ David Kalnischkies ]
+ * deprecate Pkg->Name in favor of Grp->Name
+ * drop stored StringItems in favor of in-memory mappings
+ * de-duplicate version strings in the cache
+ * fix progress output for (dist-)upgrade calculation
+ * move PCI::From* methods into CacheSetHelper class (Closes: 686221)
+ * add a (hidden) --quiet option for apt-key
+ * only create new trusted.gpg if directory is writeable
+ * support (multiple) arguments properly in apt-key
+ * set a primary-keyring only if we have access to it
+ * merge fragment keyrings in apt-key to avoid hitting gpg limits
+ (Closes: 733028)
+ * use apt-key adv (+ gnupg) instead of gpgv for verify
+ * support gnupg2 as drop-in replacement for gnupg
+ * allows one to specify fingerprints in 'apt-key del'
+ * use only one --keyring in gpg interactions
+ * add and use 'apt-key verify' which prefers gpgv over gpg
+ * remove empty keyrings in trusted.gpg.d on upgrade
+ * store source name and version in binary cache
+ * allow fetcher setup without directory creation (Closes: 762898)
+ * cleanup partial directory of lists in apt-get clean (Closes: #762889)
+ * allow options between command and -- on commandline
+ * update symbols file
+ * support parsing of all hashes for pdiff
+ * ensure world-readability for trusted.gpg in postinst (Closes: 647001)
+ * ensure partial dirs are 0700 and owned by _apt:root
+ * use _apt:root only for partial directories
+ * display errortext for all Err
+ * set PR_SET_NO_NEW_PRIVS also if run as non-root
+
+ [ James McCoy ]
+ * ensure apt-key del handles 16-byte key ids (Closes: 754436)
+
+ [ Kenshi Muto ]
+ * Japanese program translation update (Closes: 763033)
+
+ [ Trần Ngá»c Quân ]
+ * Set STRIP_FROM_PATH for doxygen
+
+ [ Mert Dirik ]
+ * Turkish program translation update (Closes: 763379)
+
+ [ Guillem Jover ]
+ * apt-get: Create the temporary downloaded changelog inside tmpdir
+
+ [ Miroslav Kure ]
+ * [l10n] Updated Czech translation of apt (Closes: #764055)
+
+ -- Michael Vogt <mvo@ubuntu.com> Wed, 08 Oct 2014 09:37:35 +0200
+
+apt (1.1~exp3) experimental; urgency=medium
+
+ [ Michael Vogt ]
+ * merged changes from debian/sid up to 1.0.9.1
+ * Make /var/lib/apt/lists and /var/cache/apt/archives owned
+ by the new _apt user
+ * Drop Privileges in the following acquire methods:
+ copy, http, https, ftp, gpgv, gzip/bzip2/lzma/xz
+ * DropPrivs: Improvements based on feedback from error@debian.org
+
+ [ Julian Andres Klode ]
+ * DropPriv: Really call seteuid and not setuid, and add more checks
+ * Use _apt as our unprivileged user name
+ * DropPrivs: Also check for saved set-user-ID and set-group-ID
+ * methods: Fail if we cannot drop privileges
+ * DropPrivs: Also check for saved set-user-ID and set-group-ID
+
+ -- Michael Vogt <mvo@debian.org> Wed, 24 Sep 2014 22:30:09 +0200
+
+apt (1.1~exp2) experimental; urgency=medium
+
+ [ Guillem Jover ]
+ * Add new Base256ToNum long long overload function
+ * Fix ar and tar code to be LFS-safe (Closes: #742882)
+
+ [ Michael Vogt ]
+ * increase libapt-inst to version 1.6
+ * Only allow "apt-get build-dep path" when path starts with ./ or /
+ * Allow passing a full path to apt-get install /foo/bar.deb (CLoses: #752327)
+ * merge changes from the 1.0.6 upload
+
+ -- Michael Vogt <mvo@debian.org> Thu, 10 Jul 2014 13:18:08 +0200
+
+apt (1.1~exp1) experimental; urgency=low
+
+ [ David Kalnischkies ]
+ * [API Break] change "std::string pkgAcquire::Item::DescURI()" to
+ "std::string pkgAcquire::Item::DescURI() const"
+ * [ABI-Break] increase hashtable size for packages/groups by factor 5
+ * [ABI-Break] cleanup datatypes mix used in binary cache
+ * [internal API-Break] remove the Section member from package struct
+ * use 'best' hash for source authentication (LP: 1098738)
+ * use HashStringList in the acquire system
+ * deal with hashes in ftparchive more dynamic as well
+ * re-enable pipelining via hashsum reordering support
+ * parse and retrieve multiple Descriptions in one record
+ * improve pkgTagSection scanning and parsing
+ * invalid cache if architecture set doesn't match (Closes: 745036)
+
+ [ Michael Vogt ]
+ * add support for "apt-get build-dep foo.dsc"
+ * add support for "apt-get build-dep unpacked-source-dir"
+ * add support for "apt-get install foo_1.0_all.deb"
+ * make "apt-get update" progress much more accurate by loading the
+ sizes of the targets into the fetcher early
+ * Implement simple by-hash for apt update to improve reliability of
+ the update. Apt will try to fetch the Packages file via
+ /by-hash/$hash_type/$hash_value if the repo supports that.
+ - add APT::Acquire::$(host)::By-Hash=1 knob
+ - add Acquire-By-Hash=1 to Release file
+ * add Debug::Acquire::Progress debug option
+ * [ABI-Break] lp:~mvo/apt/source-hashes:
+ - use sha{512,256,1} for deb-src when available LP: #1098738
+ * [ABI-Break] stop exporting the accidentally exported parsenetrc() symbol
+ * [ABI-Break] remove the PACKAGE_MATCHER_ABI_COMPAT defines
+ * [ABI BREAK] apt-pkg/pkgcache.h:
+ - adjust pkgCache::State::VerPriority enum, to match reality
+ * test/integration/test-debsrc-hashes:
+ - add integration test, thanks to Daniel Hartwig
+ * [ABI-Break] remove the PACKAGE_MATCHER_ABI_COMPAT defines
+ * [ABI-Break] Pass struct IndexTarget/indexRecords to
+ pkgAcqIndex{,Merge}Diffs
+ * [internal API-Break] rename pkgCache::Package::NextPackage to
+ pkgCache::Package::Next
+ * Calculate Percent as part of pkgAcquireStatus to provide a weighted
+ percent for both items and bytes
+ * apt-pkg/contrib/macros.h: bump library version to 4.13
+ * apt-private/acqprogress.cc: do not show file size on IMSHit, it wasn't
+ fetched
+ * Fix warnings from clang -Wall/clang -fsanitize=address
+ * add DropPrivs() and drop privileges to nobody when running the
+ the buildin apt and dump solvers
+ * lp:~mvo/apt/webserver-simulate-broken-with-fix346386:
+ - fix invalid InRelease file download checking and add regression
+ test to server broken files to the buildin test webserver
+ - add regression test for LP: #34638
+
+ -- Michael Vogt <mvo@debian.org> Thu, 19 Jun 2014 12:01:48 +0200
+
+apt (1.0.10.1) unstable; urgency=medium
+
+ * hide first pdiff merge failure debug message (Closes: 793444)
+ * mark again deps of pkgs in APT::Never-MarkAuto-Sections as manual.
+ Thanks to Raphaël Hertzog and Adam Conrad for detailed reports and
+ initial patches (Closes: 793360) (LP: #1479207)
+ * explicitly build-dep on g++ (>= 4:5.2) for gcc5 transition
+
+ -- David Kalnischkies <david@kalnischkies.de> Mon, 03 Aug 2015 07:29:40 +0200
+
+apt (1.0.10) unstable; urgency=medium
+
+ [ Zhou Mo ]
+ * po: update zh_CN translation slightly
+ * po: Update Simplified Chinese programs translation
+
+ [ Mert Dirik ]
+ * Turkish translation update for apt (Closes: #789491)
+
+ [ Yuri Kozlov ]
+ * Russian program translation update (Closes: 789709)
+
+ [ Milo Casagrande ]
+ * Italian program translation update (Closes: 782122)
+
+ [ Beatrice Torracca ]
+ * Italian manpage translation update (Closes: 776702)
+
+ [ Julian Andres Klode ]
+ * ExecFork: Use /proc/self/fd to determine which files to close
+ (Closes: #764204)
+
+ [ Michael Vogt ]
+ * Prepare new 1.0.10 release with gcc5 abi transition
+
+ [ David Kalnischkies ]
+ * stop depending on copy-on-write for std::string
+ * bump next-abi check above gcc5-abi bump
+ * update symbols file to use gcc5 abi mangling
+
+ -- David Kalnischkies <david@kalnischkies.de> Sat, 25 Jul 2015 12:11:08 +0200
+
+apt (1.0.9.10) unstable; urgency=medium
+
+ [ Michael Vogt ]
+ * Fix crash in pkgDPkgPM::WriteApportReport(() (LP: #1436626)
+ * Move sysconf(_SC_OPEN_MAX); out of the for() loop to avoid unneeded
+ syscalls
+ * Fix endless loop in apt-get update that can cause disk fillup
+ (LP: #1445239)
+
+ [ Helmut Grohne ]
+ * parse arch-qualified Provides correctly (Closes: 777071)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 22 May 2015 17:38:31 +0200
+
+apt (1.0.9.9) unstable; urgency=medium
+
+ [ David Kalnischkies ]
+ * parse specific-arch dependencies correctly on single-arch systems
+ (Closes: 777760)
+ * remove "first package seen is native package" assumption.
+ Thanks to Axel Beckert for testing (Closes: 782777)
+
+ -- David Kalnischkies <david@kalnischkies.de> Tue, 28 Apr 2015 16:11:27 +0200
+
+apt (1.0.9.8) unstable; urgency=medium
+
+ [ David Kalnischkies ]
+ * fix another d(e)select-upgrade typo (LP: #1399037)
+ * properly handle expected filesize in https.
+ Thanks to Robert Edmonds and Anders Kaseorg for initial patchs
+ (Closes: 777565, 781509) (LP: #807303)
+ * avoid depends on std::string implementation for pkgAcquire::Item::Mode
+ (Closes: 781858)
+ * demote VectorizeString gcc attribute from const to pure
+ * keyids in "apt-key del" should be case-insensitive (Closes: 781696)
+ * parse specific-arch dependencies correctly on single-arch systems
+ (Closes: 777760)
+
+ [ Michael Vogt ]
+ * fix crash in order writing in pkgDPkgPM::WriteApportReport() (LP: #1436626)
+
+ -- David Kalnischkies <david@kalnischkies.de> Mon, 13 Apr 2015 07:14:36 +0200
+
+apt (1.0.9.7) unstable; urgency=medium
+
+ [ Tomasz Buchert ]
+ * Fix crash in the apt-transport-https when Owner is NULL (Closes: #778375)
+
+ -- Michael Vogt <mvo@debian.org> Mon, 23 Feb 2015 12:54:03 +0100
+
+apt (1.0.9.6) unstable; urgency=medium
+
+ [ Michael Vogt ]
+ * Fix missing URIStart() for https downloads
+ * Add regression test for the previous commit
+
+ [ David Kalnischkies ]
+ * 128 KiB DSC files ought to be enough for everyone (Closes: 774893)
+ * award points for positive dependencies again (Closes: 774924)
+
+ -- Michael Vogt <mvo@ubuntu.com> Fri, 16 Jan 2015 08:37:25 +0100
+
+apt (1.0.9.5) unstable; urgency=medium
+
+ [ David Kalnischkies ]
+ * dispose http(s) 416 error page as non-content (Closes: 768797)
+ * do not make PTY slave the controlling terminal (Closes: 772641)
+ * always run 'dpkg --configure -a' at the end of our dpkg callings
+ (Closes: 769609)
+ * pass-through stdin fd instead of content if not a terminal (Closes: 773061)
+
+ [ James McCoy ]
+ * tighten filtering of kernel images in apt.auto-removal (Closes: 772732)
+
+ [ Jean-Pierre Giraud ]
+ * French manpages translation update (Closes: 771967)
+
+ [ Zhou Mo ]
+ * Chinese (simplified) program translation update (Closes: 771982)
+
+ [ Kenshi Muto ]
+ * Japanese program translation update (Closes: 772678)
+
+ [ Theppitak Karoonboonyanan ]
+ * Thai program translation update (Closes: 772913)
+
+ -- David Kalnischkies <david@kalnischkies.de> Tue, 23 Dec 2014 13:22:42 +0100
+
+apt (1.0.9.4) unstable; urgency=medium
+
+ [ David Kalnischkies ]
+ * use 'best' hash for source authentication (LP: 1098738)
+ * deprecate the Section member from package struct
+ * allow options between command and -- on commandline
+ * re-enable support for -s (and co) in apt-get source (Closes: 742578)
+ * change codenames to jessie as stable POV in docs
+ * close leaking slave fd after setting up pty magic (Closes: 767774)
+ * fix PTY interaction on linux and kfreebsd (Closes: 765687)
+
+ [ James McCoy ]
+ * support long keyids in "apt-key del" instead of ignoring them
+ (Closes: 754436)
+
+ [ Michael Vogt ]
+ * Use sysconf(_SC_ARG_MAX) to find the size of Dpkg::MaxArgBytes
+
+ [ Frans Spiesschaert ]
+ * Dutch program translation update (Closes: 771039)
+
+ [ Julien Patriarca ]
+ * French program translation update (Closes: 766755)
+
+ [ Zhou Mo ]
+ * Chinese (simplified) program translation update (Closes: 766170)
+
+ [ Miroslav Kure ]
+ * Czech program translation update (Closes: 764055)
+
+ [ Mert Dirik ]
+ * Turkish program translation update (Closes: 763379)
+
+ [ Kenshi Muto ]
+ * Japanese program translation update (Closes: 763033)
+
+ [ Manuel "Venturi" Porras Peralta ]
+ * Spanish program translation update (Closes: 771815)
+
+ -- David Kalnischkies <david@kalnischkies.de> Wed, 03 Dec 2014 14:26:04 +0100
+
+apt (1.0.9.3) unstable; urgency=medium
+
+ [ josch ]
+ * implement the updated build profile spec
+
+ [ Michael Vogt ]
+ * methods/rsh.cc: replace strcat with std::string (Closes: #76442)
+
+ [ Guillem Jover ]
+ * Update Status field values handling
+
+ [ David Kalnischkies ]
+ * don't cleanup cdrom files in apt-get update (Closes: 765458)
+
+ -- Michael Vogt <mvo@debian.org> Wed, 15 Oct 2014 19:49:38 +0200
+
+apt (1.0.9.2) unstable; urgency=medium
+
+ [ Michael Vogt ]
+ * test/integration/test-apt-update-file: improve test
+ * Fix regression when copy: is used for a relative path (Closes: #762160)
+ * generalize Acquire::GzipIndex to support all compressions that
+ apt supports
+ * Fix regression for cdrom: sources from latest security update
+ * Ensure that iTFRewritePackageOrder is "MD5sum" to match
+ apt-ftparchive
+ * debian/rules: add hardening=+all.
+ Thanks to Simon Ruderich, Markus Waldeck
+
+ [ Holger Wansing ]
+ * German program translation update (Closes: 762223)
+
+ [ Jérémy Bobbio ]
+ * disable timestamps in the footer of docs by doxygen
+
+ [ Trần Ngá»c Quân ]
+ * Set STRIP_FROM_PATH for doxygen
+
+ [ Guillem Jover ]
+ * apt-get: Create the temporary downloaded changelog inside tmpdir
+ (closes: #763780) (CVE-2014-7206)
+
+ -- Michael Vogt <mvo@debian.org> Thu, 02 Oct 2014 22:05:39 +0200
+
+apt (1.0.9.1) unstable; urgency=high
+
+ [ Michael Vogt ]
+ * Allow override of Proxy-Auto-Detect by the users configuration
+ (Closes: 759264)
+ * fix ci autopkgtest
+ * fix regression from 1.0.9 when file:/// source are used and
+ those are on a different partition than the apt state directory
+ and add regression test
+
+ [ Trần Ngá»c Quân ]
+ * l10n: vi.po (636t): Update program translation
+
+ [ Chris Leick ]
+ * Updated German documentation translation
+
+ [ Mert Dirik ]
+ * Turkish program translation update (Closes: 761394)
+
+ -- Michael Vogt <mvo@debian.org> Tue, 16 Sep 2014 20:52:25 +0200
+
+apt (1.0.9) unstable; urgency=high
+
+ * SECURITY UPDATE:
+ - incorrect invalidating of unauthenticated data (CVE-2014-0488)
+ - incorect verification of 304 reply (CVE-2014-0487)
+ - incorrect verification of Acquire::Gzip indexes (CVE-2014-0489)
+
+ -- Michael Vogt <mvo@debian.org> Mon, 15 Sep 2014 08:34:46 +0200
+
+apt (1.0.8) unstable; urgency=medium
+
+ [ Holger Wansing ]
+ * German program translation update (Closes: 758837)
+
+ [ Américo Monteiro ]
+ * Portuguese manpages translation update (Closes: 759608)
+
+ [ Warren He ]
+ * initialize iPolicyBrokenCount in DepCache::Update (Closes: 758397)
+
+ [ Andreas Oberritter ]
+ * Avoid yielding blank lines with APT::Cmd::use-format=true
+
+ [ Michael Vogt ]
+ * Make Proxy-Auto-Detect check for each host (Closes: #759264)
+ * Add testcase for apt list --all-versions
+ * * apt-pkg/deb/dpkgpm.cc:
+ - update string matching for dpkg I/O errors. (LP: #1363257)
+ - properly parse the dpkg status line so that package name
+ is properly set and an apport report is created. Thanks
+ to Anders Kaseorg for the patch (LP: #1353171)
+ * Use heap to allocate PatternMatch to avoid potential stack overflow
+ (Closes: 759612)
+ * Run autopkgtest tests with "env -i" to avoid pollution from the host env
+ (Closes: #759655)
+ * test/integration/test-ubuntu-bug-346386-apt-get-update-paywall:
+ - use downloadfile() to fix test failure
+ * Fix incorrect upgradable listing in "apt list"
+ (thanks to Michael Musenbrock) (Closes: #753297)
+ * apt-pkg/cachefile.cc:
+ - ensure we have a Policy in CacheFile.BuildDepCache()
+ * methods/http.cc:
+ - Improve Debug::Acquire::http debug output
+
+ [ Dimitri John Ledkov ]
+ * apt-ftparchive: make Packages & Sources generation optional,
+ during Generate call
+
+ [ David Kalnischkies ]
+ * support regular expressions in 'apt search'
+ * implement --full in apt search
+ * fix progress report for upgrade and reinstall
+ * rework PTY magic to fix stair-stepping on kfreebsd (Closes: 759684)
+ * don't call pager in non-terminals for changelog (Closes: 755040)
+
+ -- Michael Vogt <mvo@debian.org> Tue, 09 Sep 2014 20:09:11 +0200
+
+apt (1.0.7) unstable; urgency=medium
+
+ [ Michael Vogt ]
+ * add REAMDE.md
+ * StringToBool: only act if the entire string is consumed by strtol()
+ * Use @builddeps@ in the debian/tests/control file
+ * apt-pkg/acquire-item.cc: make pkgAcqDiffIndex more uniform
+ * Fix SmartConfigure to ignore ordering of packages that are already valid
+ * doc/apt.8.xml: fix typo, thanks to Jakub Wilk (Closes: #756056)
+ * doc/po/pt.po: updated, thanks to Américo Monteir (Closes: #756200)
+
+ [ victory ]
+ * Update Japanese documentation translation (Closes: #754817)
+
+ [ Trần Ngá»c Quân ]
+ * l10n: vi.po (636t): Update one new string
+
+ [ Julian Andres Klode ]
+ * Fix debListParser to accept "no" as a value for the Multi-Arch field
+ (Closes: #759099)
+
+ [ Mert Dirik ]
+ * Turkish program translation update (Closes: 756710)
+
+ [ Miroslav Kure ]
+ * Czech program translation update (Closes: 758208)
+
+ [ David Kalnischkies ]
+ * add dpkg::source-options for dpkg-source invocation (Closes: 757534)
+ * support versioned provides as implemented by dpkg (Closes: 758153)
+
+ -- Michael Vogt <mvo@debian.org> Wed, 27 Aug 2014 17:11:42 -0700
+
+apt (1.0.6) unstable; urgency=medium
+
+ [ Chris Leick ]
+ * German translation reviewed by Erik Pfannenstein
+
+ [ Michael Vogt ]
+ * methods/http.cc: use Req.str() in debug output
+ * Do not try to parse invalid translation files (LP: #756317)
+ * Do not clean "/" in pkgAcquire::Clean/pkgArchiveCleaner (Closes: #753531)
+ * Only show packages as upgradable if the have a CandidateVer != 0
+ (Closes: #753297)
+
+ [ Trần Ngá»c Quân ]
+ * l10n: vi.po: Update 3 new messages
+
+ [ Joe Hansen ]
+ * Danish program translation update (Closes: 753979)
+
+ [ David Kalnischkies ]
+ * handle moved mmap after UniqFindTagWrite call (Closes: #753941)
+
+ [ Michele Orrù ]
+ * use printf instead of echo in testing framework
+
+ [ Cédric Barboiron ]
+ * Improve description how to turn off the caches (Closes: #753531)
+
+ [ Guillem Jover ]
+ * po: Fill or add missing Language field
+ * po: Remove fuzzy from file msgid header
+ * po: Fill Project-Id-Version with correct project id and version
+ * po: Fix Plural-Forms fields
+ * po: Fix or add missing email addresses
+ * po: Fix encoding issues
+ * po: Fix format specifier order in translation
+ * build: Set the XSL parameter through the command line instead of sed
+ * build: Convert from DebianDoc SGML to DocBook XML
+ * doc: Convert from DebianDoc SGML to DocBook XML
+ * doc: Unfuzzy DocBook translations
+
+ -- Michael Vogt <mvo@debian.org> Thu, 10 Jul 2014 11:46:07 +0200
+
+apt (1.0.5) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * fix autopkgtest tests
+ * fix test-apt-ftparchive-cachedb-lp1274466 and apt-internal-solver tests
+ * test/integration/test-essential-force-loopbreak: fix on non-amd64 systems
+ * Tell the user if no updates are available after apt update (Closes: #751388)
+
+ [ Michele Orrù ]
+ * Check for gtest's header before building.
+
+ [ Chris Leick ]
+ * Updated translation of german documentation
+
+ [ Konstantin Manna ]
+ * fix two german manpage spelling mistakes (Closes: 751635)
+ * add missing comma in SEE ALSO of apt-secure manpage (Closes: 748506)
+
+ [ Fredrik Fornwall ]
+ * use P_ instead of ngettext to compiling with --disable-nls (Closes: 751857)
+
+ [ David Kalnischkies ]
+ * don't send pkg from an unknown architecture via EDSP
+ * fix SubstVar to be usable as a replace_all method
+ * show our broken packages message in 'apt' solver
+ * do not call resolver twice on (dist-)upgrade
+
+ [ Stefano Zacchiroli ]
+ * EDSP doc: clarify that Install/Remove packages are arch-qualified
+
+ -- Michael Vogt <mvo@debian.org> Wed, 18 Jun 2014 13:35:13 +0200
+
+apt (1.0.4) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * Implement CacheDB for source packages in apt-ftparchive
+ * apt-private/acqprogress.cc: reset color in apt update
+ * Show progress in run-tests
+ * Never parse Version/Architecture tags in a Translation-$lang file
+ * Show upgradable packages after apt update (Closes: 748389)
+ * Fix various errors found by clang -fsanitize=address
+ * Fix various errors found by clang scan-build
+ * Show unauthenticated warning for source packages as well (Closes: #749795)
+ * Add compat mode for old (32bit FileSize) CacheDB (LP: #1274466)
+ * cmdline/apt-helper.cc: use less generic description/short-description
+ in apt-helper download
+ * add pkgSrcRecords::Step() to step through all the pkgSrcRecords
+ (thanks to Helmut Grohne)
+
+ [ David Kalnischkies ]
+ * initialize Verify in second pkgAcqIndex constructor
+ * consistently fail if Smart* packagemanager actions fail
+ * fix tight loop detection and temporary removes
+ * if Resolver fails, do not continue even if not broken
+ * check exit status of external solvers
+ * do not revert candidate for protected packages (Closes: 745046)
+ * support Acquire::GzipIndexes in dumpavail (Closes: 742835)
+
+ [ Stefano Zacchiroli ]
+ * EDSP doc: fix typo in Request stanza description
+ * EDSP: bump protocol version to 0.5
+ * EDSP: add Architecture(s) multi-arch fields to the Request stanza
+ * EDSP: add Source field to Package stanzas
+ * EDSP: add APT-Release field to Package stanzas
+
+ [ Sebastian Schmidt ]
+ * fix screen width detection for apt/apt-get lists (Closes: 748430, 747942)
+
+ [ Milo Casagrande ]
+ * Italian program translation update (Closes: 750009)
+
+ -- Michael Vogt <mvo@debian.org> Tue, 10 Jun 2014 14:55:05 +0200
+
+apt (1.0.3) unstable; urgency=medium
+
+ [ Michael Vogt ]
+ * reduce delta to ubuntu
+ * provide support for vendor specific config files
+ * debian/apt-doc.docs: remove README.MultiArch
+ * Fix missing ScreenWidth check in apt.cc
+ * Only do openpty() if both stdin/stdout are terminals (Closes: 746434)
+
+ [ David Kalnischkies ]
+ * add a README for vendor information
+ * remove outdated README.MultiArch
+ * build http request in a stringstream
+ * enforce LFS for partial files in https range requests
+ * handle pkgnames shorter than modifiers (Closes: 744940)
+ * allow vendors to install configuration files
+
+ [ John Ogness ]
+ * properly undo CD-ROM mount in all error cases
+
+ [ Mahyuddin Ramli ]
+ * add vendor information for BlankOn (Closes: 743595)
+
+ [ Adam Conrad ]
+ * fix FileFd::Size bitswap on big-endian architectures (Closes: 745866)
+
+ [ Trần Ngá»c Quân ]
+ * l10n: vi.po: Update one new string
+
+ -- Michael Vogt <mvo@debian.org> Mon, 05 May 2014 14:03:15 +0200
+
+apt (1.0.2) unstable; urgency=medium
+
+ [ Michael Vogt ]
+ * fix apt list output for pkgs in dpkg ^rc state
+ * Notice the user about "apt list -a" when only a single hit if found
+ * fix test-failure in adt
+ * apt-private/acqprogress.cc: fix output when ctrl-c is hit during
+ apt update (LP: #1310548, closes: #744297)
+ * Fix option name DPkg::Progress-Fancy in apt.8 manpage
+ (LP: #1310506)
+
+ [ David Kalnischkies ]
+ * don't double-count seeks in FileFd::Skip for bzip/xz
+ * deal with umask only if we really need to for mkstemp
+ * consider priorities only for downloadable pkgs in resolver
+ * force fancy progressbar redraw on window size change
+ * clear HitEof flag in FileFd::Seek
+ * use Google C++ Testing Framework for libapt tests
+ * support dist-upgrade options in full-upgrade
+
+ [ Trần Ngá»c Quân ]
+ * l10n: vi.po (624t): Update translation
+
+ [ Theppitak Karoonboonyanan ]
+ * Updated Thai program translation (closes: #745120)
+
+ [ James McCoy ]
+ * Consistently use Dpkg::Progress* in documentation (Closes: 745452)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 25 Apr 2014 13:15:03 +0200
+
+apt (1.0.1) unstable; urgency=medium
+
+ [ Michael Vogt ]
+ * Fix crash in "apt list" when a sources.list file is unreable
+ (Closes: 743413)
+ * make apt search case-insensitive by default
+ * Fix possible race when stunnel/aptwebserver create their PID files
+ in the tests
+ * Fix insecure file permissions when using FileFd with OpenMode::Atomic
+ (LP: #1304657)
+
+ [ Julian Andres Klode ]
+ * Version the Breaks/Replaces for sun-java{5,6}-jdk (LP: #1302736)
+ (Closes: #743616)
+ * Add versioned openjdk-6-jdk breaks
+
+ [ Josef Vitu ]
+ * apt: Minor typo in 'apt' man page (closes: #743657)
+
+ -- Michael Vogt <mvo@debian.org> Thu, 10 Apr 2014 09:48:56 +0200
+
+apt (1.0) unstable; urgency=low
+
+ The "Happy birthday and 10000b years in the making" release
+
+ [ Julian Andres Klode ]
+ * apt-inst: Do not try to create a substring of an empty string in
+ error reporting (LP: #1288718)
+
+ [ Beatrice Torracca ]
+ * Italian manpages translation update (Closes: 741867)
+
+ [ Kenshi Muto ]
+ * Japanese programs translation update (Closes: 742255)
+
+ [ David Kalnischkies ]
+ * continue reading in xz even if it outputs nothing
+ * only consider versioned kernel packages in autoremove (Closes: 741962)
+ * correct some reported typos in /etc/cron.daily/apt (Closes: 702016)
+ * ensure proper teardown in dpkg error cases (Closes: 738969)
+ * update symbols file to include new symbols from 0.9.16
+ * do IsInstallOk call in MarkInstall unconditionally
+ * discard candidates via IsInstallOk to allow override (Closes: 740750)
+
+ [ Michael Vogt ]
+ * install apt binary
+ * add apt.8.xml manpage
+ * make fancy-progress fg/bg color configurable via something like
+ Dpkg::Progress-Fancy::Progress-{bg,fg}="%1b[30m"
+ (thanks to Tim Wasser for the suggestion)
+ * Add progressbar to "Dpkg::Progress-Fancy"
+ * fix documentation for APT::Periodic::MaxSize "0" (closes: #740551)
+ * Use mkstemp() in apt-extracttemplaes (closes: #741627)
+ * Add new Debug::RunScripts debug option
+ * do not crash on SIGPIPE in pkgDPkgPM::RunScriptsWithPkgs()
+ * enable DPkg::Progress-Fancy by default when "apt" is used
+ * refresh po/pot and unfuzzy apt-extracttemplate manpage change
+ * remove no longer needed apt.7 page
+ * install "apt" binary by default
+ * add sun-java{5,6}-jdk to breaks/replaces as they provided a
+ "apt" binary as well
+
+ [ Trần Ngá»c Quân ]
+ * l10n: vi.po (623t): Update Vietnamese translation
+ * debian: Add default compress option to xz
+
+ -- Michael Vogt <mvo@debian.org> Tue, 01 Apr 2014 15:48:46 +0200
+
+apt (0.9.16.1) unstable; urgency=medium
+
+ [ Chris Leick ]
+ * Updated German doc translation
+
+ [ Julian Andres Klode ]
+ * Fix handling of autoclosing for compressed files (Closes: #741685)
+
+ -- Julian Andres Klode <jak@debian.org> Sat, 15 Mar 2014 18:05:25 +0100
+
+apt (0.9.16) unstable; urgency=medium
+
+ [ Michael Vogt ]
+ * add hashsum support in apt-helper download-file and
+ add more tests
+
+ [ Trần Ngá»c Quân ]
+ * l10n: vi.po (624t): Update Vietnamese translation
+
+ [ David Kalnischkies ]
+ * propagate a negative score point along breaks/conflicts
+ * check version before adding scores in resolver
+ * autogenerate makefile for vendor system
+ * add default and override handling for Cnf::FindVector
+ * support DEB_BUILD_PROFILES and -P for build profiles
+ * do not configure already unpacked packages needlessly (Closes: 740843)
+ * if mountpoint has a ".disk" directory it is mounted
+ * no error for non-existing mountpoints in MountCdrom
+ * apt-cdrom ident shouldn't be interactive (Closes: 740673)
+ * support very long mtab entries in mountpoint discovery
+ * msgstr with elipses need three dots
+ * cmdline parsing: apt-config is not apt-cdrom
+ * use a configurable list of versioned kernel packages
+ * support kfreebsd and hurd in the kernel hook
+ * add ".*-{kernel,modules}-$KERVER" matcher for hook
+ * ensure that a dot is a dot in the hook
+ * use liblzma-dev to provide xz/lzma support
+ * use the pretty fullname of a pkg as download desciption
+
+ [ Johannes Schauer ]
+ * implement BuildProfileSpec support as dpkg has in 1.17.2 (Closes: 661537)
+
+ [ Wojciech Górski ]
+ * fix polish --install-suggests text in apt-get manpage (Closes: 741056)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 14 Mar 2014 09:45:05 +0100
+
+apt (0.9.15.5) unstable; urgency=medium
+
+ [ Michael Vogt ]
+ * vendor/tanglu/makefile: add missing clean/sources.list
+ * run the acquire tests with the new apt-helper binary, this
+ fixes the autopkgtest failures
+
+ [ Martin Pitt ]
+ * Fix autopkgtest missing dependencies and locale (closes: #739988)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 28 Feb 2014 08:44:25 +0100
+
+apt (0.9.15.4) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * remove auto-generated apt-key and sources.list on clean (closes: 739749)
+ * add testcase for Bug#718329
+ * various fixes for ADT failures
+
+ [ Jon Severinsson ]
+ * add apt-vendor information for tanglu
+
+ [ Guillem Jover ]
+ * ExtractTar: Allow an empty decompressor program
+ * DebFile: Refactor ExtractTarMember() out from ExtractArchive()
+ * Add support for data.tar, control.tar and control.tar.xz
+ * debian: Add debDebFile::ExtractTarMember to the symbols file
+ * Fix typos in documentation (codespell)
+
+ -- Michael Vogt <mvo@debian.org> Sun, 23 Feb 2014 00:27:12 +0100
+
+apt (0.9.15.3) unstable; urgency=medium
+
+ [ Michael Vogt ]
+ * disable https->http redirects in libcurl, thanks to Julien Cristau
+ * ADT: use "Restrictions: allow-stderr and avoid apt-stderr.log in
+ debian/tests/run-tests
+ * test/integration/test-bug-723705-tagfile-truncates-fields:
+ - fix autopkgtest failure
+ * add missing canNotFindFnmatch/showFnmatchSelection
+ (for the next ABI break)
+ * disable fnmatch() matching from the commandline
+ * merge testcase for the autoremove feature from the ubuntu branch
+
+ [ David Kalnischkies ]
+ * do not recommend dselect in apt-get manpage (Closes: 617625)
+ * report https download start only if we really get it
+ * allow http protocol to switch to https
+ * do not compress .xhtml files and remove junk files (Closes: 738933)
+ * simplify code some more to make reddit happy
+ * update symbols file with hints from the buildlogs
+
+ -- Michael Vogt <mvo@debian.org> Thu, 20 Feb 2014 14:42:39 +0100
+
+apt (0.9.15.2) unstable; urgency=medium
+
+ [ Michael Vogt ]
+ * move isatty() check into InitOutput()
+ * Use a APT::VersionSet instead of a VersionList
+ (closes: #738103)
+
+ [ David Kalnischkies ]
+ * simplify code to make compilers happy
+ * update libapt-pkg.symbols file
+ * bump Standards-Version to 3.9.5 (no changes needed)
+ * do not use an empty APT_CONFIG environment variable
+ * always cleanup patchfiles at the end of rred call
+ * use VersionSet in download to handle repeats (Closes: 738103)
+ * use utimes instead of utimensat/futimens (Closes: 738567)
+
+ [ John Ogness ]
+ * apt-cdrom should succeed if any drive succeeds (Closes: 728153)
+
+ [ Trần Ngá»c Quân ]
+ * l10n: vi.po (621t): Update and review
+
+ -- Michael Vogt <mvo@debian.org> Thu, 13 Feb 2014 09:50:04 +0100
+
+apt (0.9.15.1) unstable; urgency=medium
+
+ [ David Kalnischkies ]
+ * use gpg --homedir instead of explicit file placement
+ * use svg in doxygen and ensure dot is around for it
+ * pkgTagFile: if we have seen the end, do not try to see more
+ * restart debSrcRecordParsers only if needed
+ * discard impossible candidates in MarkInstall (Closes: #735967)
+
+ [ Chris Leick ]
+ * update german manpage translation
+ * Trivian unfuzzies of the German po4a translation
+
+ [ Michael Vogt ]
+ * fix apt-get download truncation (closes: #736962)
+ * do not crash if VF.File()/VF.File().Archive() is NULL
+ * show "status" in apt list last to be more awk friendly
+ (thanks to Axel Beckert)
+ * Fix multiarch package upgrade issue
+ * add test for Suite with path
+
+ [ Colin Watson ]
+ * multicompress with externals sets wrong file modes (Closes: 737130)
+
+ -- Michael Vogt <mvo@debian.org> Thu, 06 Feb 2014 18:09:19 +0100
+
+apt (0.9.15) unstable; urgency=low
+
+ * upload version from debian/experimental to unstable
+
+ -- Michael Vogt <mvo@debian.org> Sat, 25 Jan 2014 21:57:00 +0100
+
+apt (0.9.14.3~exp5) experimental; urgency=medium
+
+ [ Anthony Towns ]
+ * methods/rred: minor robustness improvements
+
+ [ Michael Vogt ]
+ * make "apt-mark help" shows all commands
+ * make "apt show" output more user friendly
+ * add "apt full-upgrade" and tweak "apt upgrade"
+ * set APT::Sources::Use-Deb822=false until the format
+ is fully finalized
+
+ -- Michael Vogt <mvo@debian.org> Fri, 24 Jan 2014 23:21:04 +0100
+
+apt (0.9.14.3~exp4) experimental; urgency=medium
+
+ * implement deb822 suggestions by Anthony Towns and Julian Andres Klode:
+ - add Description tag for deb822 sources
+ - add support for Enabled: no in deb822 sources.list
+ - add support for multiple URIs in deb822 style sources.list
+ - add support for multipl types in one line
+ * add integration test for apt search and apt show
+ * do not ignore ioctl(TIOCSCTTY) errors
+
+ -- Michael Vogt <mvo@debian.org> Wed, 22 Jan 2014 18:59:07 +0100
+
+apt (0.9.14.3~exp3) experimental; urgency=low
+
+ * implement deb822 suggestions by donkult (thanks!):
+ - rename "Dist" to "Suites"
+ - rename "Section" to "Sections"
+ - rename "Architectures-Delete" to "Architectures-Remove"
+ - rename "Uri" to "URI"
+ * add "apt list --manual-installed"
+ * add "apt upgrade --dist"
+ * add "apt purge"
+ * flock() the file edited in "apt edit-sources"
+ * apt-private/private-show.cc:
+ - do not show Description-lang: header
+ * reword apt !isatty() warning
+ * add missing integration test for "apt list" and fix bugs
+ found by it
+
+ -- Michael Vogt <mvo@debian.org> Sat, 18 Jan 2014 21:09:24 +0100
+
+apt (0.9.14.3~exp2) experimental; urgency=medium
+
+ [ Julian Andres Klode ]
+ * debian/rules: Call dh_makeshlibs for 'apt'
+
+ [ Anthony Towns ]
+ * reimplement rred to allow applying all the diffs in a single pass
+ * correct IndexDiff vs DiffIndex in Debug output
+
+ [ David Kalnischkies ]
+ * re-enable unlimited pdiff files download
+ * integrate Anthonys rred with POC for client-side merge
+
+ [ Michael Vogt ]
+ * document deb822 style sources.list in sources.list(5)
+ * rename "Dist:" in deb822 style sources.list to "Suite:"
+ * rename URL to Uri in deb822-sources
+ * support multiple "Suite:" entries in deb822 style sources.list:
+ "Suite: stable testing unstable"
+
+ -- Michael Vogt <mvo@debian.org> Thu, 16 Jan 2014 21:43:22 +0100
+
+apt (0.9.14.3~exp1) experimental; urgency=low
+
+ [ Michael Vogt ]
+ * add support for "deb822" style sources.list format and add
+ APT::Sources::Use-Deb822 to support disabling it
+
+ [ David Kalnischkies ]
+ * implement POC client-side merging of pdiffs via apt-file
+
+ [ Trần Ngá»c Quân ]
+ * l10n: vi.po(617t): Update Vietnamese translation
+
+ -- Michael Vogt <mvo@debian.org> Sun, 05 Jan 2014 15:13:32 +0100
+
+apt (0.9.14.2) unstable; urgency=low
+
+ [ Joe Hansen ]
+ * Danish translation update. Closes: #732166
+
+ [ Peter Green ]
+ * add apt-vendor for raspbian. Closes: #732749
+
+ [ Thomas Bechtold ]
+ * apt-pkg/contrib/gpgv.cc: use /tmp as fallback dir if the
+ directory from $TMPDIR is not available (closes: #728500)
+
+ [ Michael Vogt ]
+ * vendor/getinfo:
+ - fix ubuntu-codename
+ * vendor/steamos/*:
+ - add steamos support
+ * bugfix/bts731738-fancy-progess:
+ - fix terminal size issues with e.g. "less" when "APT::Progress-Fancy=1"
+ is used (closes: #731738)
+ * feature/policy-parser-bts732746:
+ - allow more flexibility in /etc/apt/preferences, e.g. comment only
+ sections (closes: #732746)
+ * move TMPDIR handling into GetTempDir() and use that instead of
+ getenv("TMPDIR")
+ * update apt-key net-update and add integration test with the buildin
+ apt webserver
+ * run autopkgtest against the installed apt
+
+ -- Michael Vogt <mvo@debian.org> Sun, 29 Dec 2013 16:41:16 +0100
+
+apt (0.9.14.1) unstable; urgency=medium
+
+ * fix apt-get source -t dist regression (closes: #731853)
+ and add testcase
+ * clarify error message when apt-get source=ver fails
+ (thans to David Kalnischkies)
+ * Fix conffile prompt regression (LP: #1260297)
+ and add testcase
+ * improve error message for apt-get source pkg:arch{=ver,/release}
+
+ -- Michael Vogt <mvo@debian.org> Thu, 12 Dec 2013 18:34:29 +0100
+
+apt (0.9.14) unstable; urgency=low
+
+ [ David Kalnischkies ]
+ * merge ubuntus apport reporting changes to reduce diff
+ * enable NOISE for build logs to enable analyse
+ * introduce a vendor system to change sources.list
+ * add a vendor specific file to have configurable entities
+ * use a substvar to set the archive-keyring in debian/control
+ * cherry-pick ubuntus (disabled) net-update fixes
+ * generate apt-key script with vendor info about keys
+ * drop old /var/state to /var/lib transition artefacts
+
+ [ Steve Langasek ]
+ * prepare-release: declare the packages needed as source build deps.
+
+ [ Michael Vogt ]
+ * enable release based selection for deb-src (closes: 731102)
+ * document Dpkg::Progress-Fancy (closes: 726169), thanks to James McCoy
+ * vendor/makefile: fix build error for parallel builds
+ * Handle SIGWINCH in APT::Progress-Fancy=1
+
+ -- Michael Vogt <mvo@debian.org> Sat, 07 Dec 2013 14:54:31 +0100
+
+apt (0.9.13.1) unstable; urgency=low
+
+ [ Colin Watson ]
+ * fix "apt-get --purge build-dep" (closes: #720597)
+ * fix regression that APT::Keep-Fds is not honored (closes: #730490)
+
+ [ Michael Vogt ]
+ * add "-f" option to "build-dep" as sbuild is using it to fix
+ regression with cross-building (LP: #1255806)
+ * add autopkgtest support for the integration testsuite
+ * merge mvo/feature/short-list
+ * merge mvo/feature/edit-sources
+ * fix segfault in pkgDepCache::SetCandidateRelease() (closes: #709560)
+ * reset terminal on error (closes: #730795)
+ * fix apport report writing (LP: #1254499)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 29 Nov 2013 20:50:17 +0100
+
+apt (0.9.13) unstable; urgency=low
+
+ [ TJ Guthrie ]
+ * Changed MinAgeSec to MinAge in /etc/cron.daily/apt:200,204
+ LP: #1206047
+
+ -- Michael Vogt <mvo@debian.org> Sun, 24 Nov 2013 10:56:22 +0100
+
+apt (0.9.13~exp1) experimental; urgency=low
+
+ * Improve the API for APT::Upgrade::Upgrade()
+ * Re-add "Calculating upgrade..." message
+ * move upgrade related code into upgrade.{cc,h}
+ * Move ListUpdate/AcquireUpdate into update.{cc,h}
+ * Add new apt-pkg/install-progress.h with APT::Progress::PackageManager
+ progress reporting classes
+ * Move the status-fd progress reporting out of the pkgDPkgPM class
+ and into PackageManagerProgressFd
+ * Fix reading dpkg --status-fd on reinstalls
+ * Add new APT::Status-deb822-Fd progress output
+ * add Acquire::http::Proxy-Auto-Detect to the apt.conf.5 manpage
+ (closes: 726597)
+ * Fix detection when multiarch packages are reported by dpkg as
+ disappeared Packages
+ * test/integration/run-tests: output the failed test names
+ * Code Cleanup in pkgDPkgPM
+ * prepare next ABI via #if (APT_PKG_MAJOR >= 4 && APT_PKG_MINOR >= 13)
+ * add new pid_t ExecFork(std::set<int> KeepFDs)
+ * Avoid flickering when "apt-get -o DpkgPM::Progress-Fancy=1" is use
+ * use sysconf(_SC_OPEN_MAX) in ExecFork()
+
+ -- Michael Vogt <mvo@debian.org> Fri, 01 Nov 2013 10:03:06 +0100
+
+apt (0.9.12.1) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * do not send pkgname:arch over the APT::Status-Fd to not break
+ clients (closes: 726156). A new APT::Status-deb822-Fd will be
+ used to fix this.
+ * add integration tests for APT::Status-Fd
+ * add missing _() around the new "Progress" string
+
+ [ David Kalnischkies ]
+ * fix progress-segfault in case of dpkg errors/prompts (Closes: 726047)
+
+ -- Michael Vogt <mvo@debian.org> Tue, 15 Oct 2013 18:25:51 +0200
+
+apt (0.9.12) unstable; urgency=low
+
+ [ Christian Perrier ]
+ * Fix typo in apt-private/private-show.cc. Thanks to Benjamin
+ Keresa. Closes: #724073
+
+ [ Mark Hymers ]
+ * fix libapt-inst for >2G debs (closes: #725483)
+
+ [ David Kalnischkies ]
+ * don't strip :any from dependencies in single-arch (Closes: 723586)
+ * pkg from only trusted sources keeps being trusted (Closes: 617690)
+ * compression-neutral message for missing data.tar member (Closes: 722710)
+ * print-uris prints regardless of quiet-level again (Closes: 722207)
+ * retry without partial data after a 416 response (Closes: 710924)
+ * replace "filesize - 1" trick in http with proper 416 handling
+ * fix partial (206 and 416) support in https
+ * handle complete responses to https range requests (Closes: 617643, 667699)
+ (LP: 1157943)
+ * don't consider holds for autoremoval (Closes: 724995)
+ * put fetch errors in 'source' on our errorstack
+ * use pkgAcqArchive in 'download' for proper errors
+ * fix lzma-support detection via xz binary
+ * do not ++ on erased package pointers in autoremove
+
+ [ Michael Vogt ]
+ * Add new "apt-get upgrade --with-new-pkgs" option (and add man-page for it).
+ So "apt-get upgrade --with-new-pkgs" will pull in new dependencies but
+ never remove packages
+ * Rename "--dpkg-progress" to "--show-progress" and document it in
+ apt-get.8. This will show global install progress information in the
+ terminal.
+ * Fix status-fd progress calculation for certain multi-arch install/upgrade
+ situations
+ * add new -o DpkgPM::Progress-Fancy for nicer dpkg progress output
+ on vt100+ terminals
+ * fix libapt-inst for >2G debs (closes: #725483), thanks to Mark Hymers
+ * debian/apt.postinst: use --compare-versions lt instead of lt-nl,
+ to ensure the apt-auto-removal file is correctly create,
+ thanks to Ben Hutchings
+ * update Uploaders to match recent uploaders better
+ * Set the default "Acquire::PDiffs::FileLimit" to 20. If the amount
+ of pdiffs is bigger things tend to get slower. Set
+ Acquire::PDiffs::FileLimit "0";
+ in /etc/apt/apt.conf to get the old behavior back.
+
+ -- Michael Vogt <mvo@debian.org> Wed, 09 Oct 2013 22:39:41 +0200
+
+apt (0.9.11.4) unstable; urgency=low
+
+ [ Oskari Saarenmaa ]
+ * don't truncate 100 char long paths in tar extraction.
+ Thanks to Mika Eloranta for the testcase! (Closes: #689582)
+
+ [ David Kalnischkies ]
+ * do not trust FileFd::Eof() in pkgTagFile::Fill()
+ Thanks to Cyril Brulebois (Closes: 723705)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 20 Sep 2013 16:12:07 +0200
+
+apt (0.9.11.3) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * Add DPkgPM::Progress option to enable terminal install
+ progress
+ * fix typo (mkostemp->mkstemp)
+ * Remove invalid "-f" option for apt-get check, thanks to
+ Philipp Weis (closes: #721477)
+ * Fix regression of "apt-cache unmet -i", thanks to Daniel Schepler
+ (closes: #722324)
+
+ [ David Kalnischkies ]
+ * use FileFd in HashSum test to unbreak non-linux ports.
+ Thanks to Aaron M. Ucko (Closes: 721723)
+
+ -- Michael Vogt <mvo@debian.org> Tue, 10 Sep 2013 17:32:02 +0200
+
+apt (0.9.11.2) unstable; urgency=low
+
+ [ Milo Casagrande ]
+ * Update Italian translation. Closes: #721030
+
+ [ Trần Ngá»c Quân ]
+ * Update Vietnamese translation. Closes: #720752
+
+ [ Michael Vogt ]
+ * dselect/install:
+ - remove "-f" option for apt-get clean/auto-clean (closes: #720532)
+ * apt-private/private-cmndline.cc:
+ - fix typo in CmdMatches() selection for dselect-upgrade (closes: #720532)
+ * use SPtr<pkgProblemResolver> in DoInstall() to simplify the code
+ * allow pkg manipulation in the upgrade/dist-upgrade commandline, like
+ apt-get dist-upgrade 2vcard- 4g8+ (thanks to Thorsten Glaser for the
+ suggestion)
+
+ [ Angel Guzman Maeso ]
+ * replace usage of potential dangerous mktemp with mkstemp
+
+ -- Michael Vogt <mvo@debian.org> Sat, 31 Aug 2013 16:45:31 +0200
+
+apt (0.9.11.1) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * more coverity fixes:
+ - explicit init
+ - always chdir("/") after chroot()
+ - ftparchive/override.cc: fix "skip empty lines" code, the pointer
+ needs to get de-referenced first
+ * dselect/update:
+ - remove "-f" option for apt-get update to fix breakage (closes: 720532)
+
+ [ Christopher Baines ]
+ * Add test for bug #507998
+
+ [ David Kalnischkies ]
+ * add a breaks libapt-inst for FileFd changes in 0.9.9 (Closes: 720449)
+ * add versions to manpages-it Replaces+Breaks
+
+ [ Ãngel Guzmán Maeso ]
+ * apt-pkg:contrib Avoid compiler warning about sign-compare
+
+ -- Michael Vogt <mvo@debian.org> Sat, 24 Aug 2013 09:13:27 +0200
+
+apt (0.9.11) unstable; urgency=low
+
+ [ Daniel Hartwig ]
+ * Clarify units of Acquire::http::Dl-Limit (closes: #705445)
+ * Show a error message if {,dist-}upgrade is used with additional
+ arguments (closes: #705510)
+
+ [ Michael Vogt ]
+ * lp:~mvo/apt/config-clear:
+ - support Configuration.Clear() for a clear of the entire
+ configuration
+ * lp:~mvo/apt/add-glob-function:
+ - add Glob() to fileutl.{cc,h}
+ * feature/apt-binary2
+ - refactor large chunks of cmdline/*.cc into a new libapt-private
+ library that is shared between the internal apt cmdline tools
+ - install libapt-private* into the apt binary
+ - add PACKAGE_MATCHER_ABI_COMPAT define so that this branch can be
+ merged without breaking ABI
+ - add lintian override for no-shlibs-control-file so that
+ the internal libapt-private.so.0.0.0 can be shipped
+ - adjust apt.install.in to only install libapt-private.so.*
+
+ [ David Kalnischkies ]
+ * ensure that pkgTagFile isn't writing past Buffer length (Closes: 719629)
+ * allow Pre-Install-Pkgs hooks to get info over an FD != stdin
+ (Closes: #671726)
+
+ [ Christian PERRIER ]
+ * French translation update.
+
+ -- Michael Vogt <mvo@debian.org> Wed, 21 Aug 2013 17:51:09 +0200
+
+apt (0.9.10) unstable; urgency=low
+
+ The "Hello to Debconf" upload
+
+ [ Christian Perrier ]
+ * Vietnamese translation update. Closes: #718615
+ * Japanese translation update. Closes: #719279
+ * French translation update.
+
+ [ Michael Vogt ]
+ * work on fixing coverity scan results:
+ - fix some off-by-one errors
+ - fix some resource leaks
+ - fixes in chroot() handling
+ - fix some missing va_end()
+ * make the code -Wall clean again
+ * remove duplicated #include<list>
+ * add .travis.yml
+ * use the 'abi-complicance-checker' package and remove the buildin
+ copy for the abi checks
+
+ [ David Kalnischkies ]
+ * ensure that FileFd::Size returns 0 in error cases
+ * add missing Turkish (tr) to po/LINGUAS
+ * correct management-typo in description found by lintian
+ * implement debian/rules build-{arch,indep} as required by policy 3.9.4
+ * re-enable automatic parallel build of APT
+ * exclude config.{sub,guess} from source package
+ * update the symbol files to reflect current state
+ * unset LANGUAGE for showing [Y/n] answer hints
+ * fix some uninitialized data members
+ * specific pins below 1000 cause downgrades (Closes: 543966)
+ * use pkgTagFile to parse "header" of Release files
+ * fix: --print-uris removes authentication (Closes: 719263)
+ * always use our own trustdb.gpg in apt-key
+ * use a tmpfile for trustdb.gpg in apt-key.
+ Thanks to Andreas Beckmann for the initial patch! (Closes: #687611)
+ * do not double-slash paths in apt-key (Closes: 665411)
+ * make the keyring locations in apt-key configurable
+ * let apt-key del work better with softlink and single key keyrings
+ * do not call 'apt-key update' in apt.postinst
+
+ [ Colin Watson ]
+ * prefer native arch over higher priority for providers (Closes: #718482)
+
+ -- Michael Vogt <mvo@debian.org> Mon, 12 Aug 2013 21:45:07 +0200
+
+apt (0.9.9.4) unstable; urgency=low
+
+ [ David Kalnischkies ]
+ * pick up Translation-* even if only compressed available (Closes: 717665)
+ * request absolute URIs from proxies again (0.9.9.3 regession)
+ (Closes: 717891)
+
+ [ Michael vogt ]
+ * fix missing changelog entry for 0.9.9.3 (git-dch issue)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 26 Jul 2013 09:58:17 +0200
+
+apt (0.9.9.3) unstable; urgency=low
+
+ [ Ben Hutchings ]
+ * debian/apt.auto-removal.sh:
+ - do not include debug symbol packages for the kernel in the
+ blacklist (closes: #717616)
+
+ [ Michael Vogt ]
+ * debian/apt.postinst:
+ - run /etc/kernel/postinst.d/apt-auto-removal once on upgrade
+ to ensure that the correct auto-removal list is generated
+ (closes: #717615)
+
+ [ David Kalnischkies ]
+ * skip all Description fields in apt-cache, not just first (Closes: 717254)
+ * fix 'apt-cache search' crash with missing description (Closes: 647590)
+
+ [ Raphael Geissert ]
+ * Do not send a connection: keep-alive, at all
+
+ -- Michael Vogt <mvo@debian.org> Thu, 25 Jul 2013 17:14:58 +0200
+
+apt (0.9.9.2) unstable; urgency=low
+
+ [ Programs translations ]
+ * Vietnamese updated by Tran Ngoc Quan. Closes: #717016
+
+ [ David Kalnischkies ]
+ * fix if-clause to generate hook-info for 'rc' packages (Closes: 717006)
+
+ -- Michael Vogt <mvo@debian.org> Wed, 17 Jul 2013 14:56:34 +0200
+
+apt (0.9.9.1) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * debian/rules:
+ - call dh_clean in clean (closes: #714980)
+ * apt-pkg/packagemanager.cc:
+ - increate APT::pkgPackageManager::MaxLoopCount to 5000
+ * cherry pick debian/apt.auto-removal.sh feature from the
+ ubuntu/master branch
+
+ [ Steve Langasek ]
+ * debian/apt.conf.autoremove: don't include linux-image*,
+ linux-restricted-modules*, and linux-ubuntu-modules* packages in the
+ list to never be autoremoved.
+ * debian/apt.auto-removal.sh, debian/rules, debian/apt.dirs: install new
+ script to /etc/kernel/postinst.d/ which ensures we only automatically
+ keep the currently-running kernel, the being-installed kernel, and the
+ newest kernel, so we don't fill /boot up with an unlimited number of
+ kernels. LP: #923876.
+
+ [ Adam Conrad ]
+ * Fix up two things in debian/apt.auto-removal.sh:
+ - Use exact matches with $-terminated regexes, so we don't get
+ confusion between similarly-named kernel flavours.
+ - Keep linux-backports-modules in sync with installed kernels.
+
+ [ David Kalnischkies ]
+ * Version 3 for DPkg::Pre-Install-Pkgs with MultiArch info (Closes: #712116)
+ * implement arch+= and arch-= for sources.list
+ * prevent MarkInstall of unsynced Multi-Arch:same siblings
+
+ -- Michael Vogt <mvo@debian.org> Thu, 11 Jul 2013 20:44:31 +0200
+
+apt (0.9.9) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * improve debug output for the Debug::pkgProblemResolver and
+ Debug::pkgDepCache::AutoInstall
+ * improve apt-cdrom output when no CD-ROM can be auto-detected
+ * document --no-auto-detect in apt-cdrom
+
+ [ David Kalnischkies ]
+ * build the en manpages in subdirectory doc/en
+ * remove -ldl from cdrom and -lutil from apt-get linkage
+ * rewrite pkgOrderList::DepRemove to stop incorrect immediate setting
+ (Closes: 645713)
+ * prefer Essentials over Removals in ordering score
+ * fix priority sorting by preferring higher in MarkInstall
+ * try all providers in order if uninstallable in MarkInstall
+ * do unpacks before configures in SmartConfigure (Closes: #707578)
+ * fix support for multiple patterns in apt-cache search (Closes: #691453)
+ * set Fail flag in FileFd on all errors consistently
+ * don't explicitly init ExtractTar InFd with invalid fd
+ * OpenDescriptor should autoclose fd always on error (Closes: #704608)
+ * fail in CopyFile if the FileFds have error flag set
+ * ensure state-dir exists before coyping cdrom files
+ * fix file location for configure-index.gz in apt.conf(5) (Closes: #711921)
+ * handle missing "Description" in apt-cache show (Closes: #712435)
+ * try defaults if auto-detection failed in apt-cdrom (Closes: #712433)
+ * support \n and \r\n line endings in ReadMessages
+ * do not redownload unchanged InRelease files
+ * trigger NODATA error for invalid InRelease files (Closes: #712486)
+
+ -- Michael Vogt <mvo@debian.org> Tue, 02 Jul 2013 08:58:33 +0200
+
+apt (0.9.8.2) unstable; urgency=low
+
+ [ Programs translations ]
+ * French translation : typo fix. Closes: #677272
+
+ [ Guillem Jover ]
+ * Update Vcs fields (Closes: #708562)
+
+ [ Michael Vogt ]
+ * buildlib/apti18n.h.in:
+ - fix build failure when building without NLS (closes: #671587)
+
+ [ Gregoire Menuel ]
+ * Fix double free (closes: #711045)
+
+ [ Raphael Geissert ]
+ * Fix crash when the "mirror" method does not find any entry
+ (closes: #699303)
+
+ [ Johan Kiviniemi ]
+ * cmdline/apt-key:
+ - Create new keyrings with mode 0644 instead of 0600.
+ - Accept a nonexistent --keyring file with the adv subcommand as well.
+
+ -- Michael Vogt <mvo@debian.org> Thu, 06 Jun 2013 19:15:14 +0200
+
+apt (0.9.8.1) unstable; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/indexcopy.cc:
+ - non-inline RunGPGV methods to restore ABI compatibility with previous
+ versions to fix partial upgrades (Closes: #707771)
+
+ [ Michael Vogt ]
+ * moved source to http://git.debian.org/apt/apt.git
+ * updated gbp.conf to match what bzr-buildpackage is doing
+ * remove .bzr-buildpackage/default.conf (superseded by gbp.conf)
+
+ -- Michael Vogt <mvo@debian.org> Thu, 16 May 2013 14:50:43 +0200
+
+apt (0.9.8) unstable; urgency=low
+
+ [ Ludovico Cavedon ]
+ * properly handle if-modfied-since with libcurl/https
+ (closes: #705648)
+
+ [ Andreas Beckman ]
+ * apt-pkg/algorithms.cc:
+ - Do not propagate negative scores from rdepends. Propagating the absolute
+ value of a negative score may boost obsolete packages and keep them
+ installed instead of installing their successors. (Closes: #699759)
+
+ [ Michael Vogt ]
+ * apt-pkg/sourcelist.cc:
+ - fix segfault when a hostname contains a [, thanks to
+ Tzafrir Cohen (closes: #704653)
+ * debian/control:
+ - replace manpages-it (closes: #704723)
+
+ [ David Kalnischkies ]
+ * various simple changes to fix cppcheck warnings
+ * apt-pkg/pkgcachegen.cc:
+ - do not store the MD5Sum for every description language variant as
+ it will be the same for all so it can be shared to save cache space
+ - handle language tags for descriptions are unique strings to be shared
+ - factor version string creation out of NewDepends, so we can easily reuse
+ version strings e.g. for implicit multi-arch dependencies
+ - equal comparisons are used mostly in same-source relations,
+ so use this to try to reuse some version strings
+ - sort group and package names in the hashtable on insert
+ - share version strings between same versions (of different architectures)
+ to save some space and allow quick comparisons later on
+ * apt-pkg/pkgcache.cc:
+ - assume sorted hashtable entries for groups/packages
+ * apt-pkg/cacheiterators.h:
+ - provide DepIterator::IsSatisfied as a nicer shorthand for DepCheck
+ * apt-pkg/deb/debversion.cc:
+ - add a string-equal shortcut for equal version comparisons
+
+ [ Marc Deslauriers ]
+ * make apt-ftparchive generate missing deb-src hashes (LP: #1078697)
+
+ [ Yaroslav Halchenko ]
+ * Fix English spelling error in a message ('A error'). Unfuzzy
+ translations. Closes: #705087
+
+ [ Programs translations ]
+ * French translation completed (Christian Perrier)
+
+ [ Manpages translations ]
+ * French translation completed (Christian Perrier)
+
+ [ Daniel Hartwig ]
+ * apt-pkg/contrib/strutl.cc:
+ - include port in shortened URIs (e.g. with apt-cache policy, progress
+ display) thanks to James McCoy (Closes: #154868, #322074)
+ - percent-encode username and password when writing URIs
+ * methods/http.cc:
+ - properly escape IP-literals (e.g. IPv6 address) when building
+ Host headers and URIs (Closes: #620344)
+ * methods/https.cc:
+ - use https_proxy environment variable if present, falling back to
+ http_proxy otherwise
+ - use authentication credentials from proxy URI
+ (Closes: #651640, LP: #1087512)
+ - environment variables do not override an explicit no proxy
+ directive ("DIRECT") in apt.conf
+ - disregard all_proxy environment variable, like other methods
+
+ -- Michael Vogt <mvo@debian.org> Wed, 08 May 2013 18:43:28 +0200
+
+apt (0.9.7.9~exp2) experimental; urgency=low
+
+ [ Programs translations ]
+ * Update all PO files and apt-all.pot
+ * French translation completed (Christian Perrier)
+
+ [ Daniel Hartwig ]
+ * cmdline/apt-get.cc:
+ - do not have space between "-a" and option when cross building
+ (closes: #703792)
+ * test/integration/test-apt-get-download:
+ - fix test now that #1098752 is fixed
+ * po/{ca,cs,ru}.po:
+ - fix merge artifact
+
+ [ David Kalnischkies ]
+ * apt-pkg/indexcopy.cc:
+ - rename RunGPGV to ExecGPGV and move it to apt-pkg/contrib/gpgv.cc
+ * apt-pkg/contrib/gpgv.cc:
+ - ExecGPGV is a method which should never return, so mark it as such
+ and fix the inconsistency of returning in error cases
+ - don't close stdout/stderr if it is also the statusfd
+ - if ExecGPGV deals with a clear-signed file it will split this file
+ into data and signatures, pass it to gpgv for verification
+ - add method to open (maybe) clearsigned files transparently
+ * apt-pkg/acquire-item.cc:
+ - keep the last good InRelease file around just as we do it with
+ Release.gpg in case the new one we download isn't good for us
+ * apt-pkg/deb/debmetaindex.cc:
+ - re-enable InRelease by default
+ * ftparchive/writer.cc,
+ apt-pkg/deb/debindexfile.cc,
+ apt-pkg/deb/deblistparser.cc:
+ - use OpenMaybeClearSignedFile to be free from detecting and
+ skipping clearsigning metadata in dsc and Release files
+
+ [ Michael Vogt ]
+ * add regression test for CVE-2013-1051
+ * implement GPGSplit() based on the idea from Ansgar Burchardt
+ (many thanks!)
+ * methods/connect.cc:
+ - use Errno() instead of strerror(), thanks to David Kalnischk
+ * doc/apt.conf.5.xml:
+ - document Acquire::ForceIPv{4,6}
+
+ -- Michael Vogt <mvo@debian.org> Wed, 03 Apr 2013 14:19:58 +0200
+
+apt (0.9.7.9~exp1) experimental; urgency=low
+
+ [ Niels Thykier ]
+ * test/libapt/assert.h, test/libapt/run-tests:
+ - exit with status 1 on test failure
+
+ [ Daniel Hartwig ]
+ * test/integration/framework:
+ - continue after test failure but preserve exit status
+
+ [ Programs translation updates ]
+ * Turkish (Mert Dirik). Closes: #703526
+
+ [ Colin Watson ]
+ * methods/connect.cc:
+ - provide useful error message in case of EAI_SYSTEM
+ (closes: #703603)
+
+ [ Michael Vogt ]
+ * add new config options "Acquire::ForceIPv4" and
+ "Acquire::ForceIPv6" to allow focing one or the other
+ (closes: #611891)
+ * lp:~mvo/apt/fix-tagfile-hash:
+ - fix false positives in pkgTagSection.Exists(), thanks to
+ Niels Thykier for the testcase (closes: #703240)
+ - this will require rebuilds of the clients as this used to
+ be a inline function
+
+ -- Michael Vogt <mvo@debian.org> Fri, 22 Mar 2013 21:57:08 +0100
+
+apt (0.9.7.8) unstable; urgency=criticial
+
+ * SECURITY UPDATE: InRelease verification bypass
+ - CVE-2013-1051
+
+ [ David Kalnischk ]
+ * apt-pkg/deb/debmetaindex.cc,
+ test/integration/test-bug-595691-empty-and-broken-archive-files,
+ test/integration/test-releasefile-verification:
+ - disable InRelease downloading until the verification issue is
+ fixed, thanks to Ansgar Burchardt for finding the flaw
+
+ -- Michael Vogt <mvo@debian.org> Thu, 14 Mar 2013 07:47:36 +0100
+
+apt (0.9.7.8~exp2) experimental; urgency=low
+
+ * include two missing patches to really fix bug #696225, thanks to
+ Guillem Jover
+ * ensure sha512 is really used when available, thanks to Tyler Hicks
+ (LP: #1098752)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 01 Mar 2013 19:06:55 +0100
+
+apt (0.9.7.8~exp1) experimental; urgency=low
+
+ [ Manpages translation updates ]
+ * Italian (Beatrice Torracca). Closes: #696601
+
+ [ Programs translation updates ]
+ * Japanese (Kenshi Muto). Closes: #699783
+
+ [ Michael Vogt ]
+ * fix pkgProblemResolver::Scores, thanks to Paul Wise.
+ Closes: #697577
+ * fix missing translated apt.8 manpages, thanks to Helge Kreutzmann
+ for the report. Closes: #696923
+ * apt-pkg/contrib/progress.cc:
+ - Make "..." translatable to fix inconsistencies in the output
+ of e.g. apt-get update. While this adds new translatable strings,
+ not having translations for them will not break anything.
+ Thanks to Guillem Jover. Closes: #696225
+ * debian/apt.cron.daily:
+ - when reading from /dev/urandom, use less entropy and fix a rare
+ bug when the random number chksum is less than 1000.
+ Closes: #695285
+ * methods/https.cc:
+ - reuse connection in https, thanks to Thomas Bushnell, BSG for the
+ patch. LP: #1087543, Closes: #695359
+ - add missing curl_easy_cleanup()
+ * methods/http.cc:
+ - quote spaces in filenames to ensure as the http method is also
+ (potentially) used for non deb,dsc content that may contain
+ spaces, thanks to Daniel Hartwig and Thomas Bushnell
+ (LP: #1086997)
+ - quote plus in filenames to work around a bug in the S3 server
+ (LP: #1003633)
+ * apt-pkg/indexrecords.cc:
+ - support '\r' in the Release file
+
+ [ David Kalnischkies ]
+ * apt-pkg/depcache.cc:
+ - prefer to install packages which have an already installed M-A:same
+ sibling while choosing providers (LP: #1130419)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 01 Mar 2013 14:16:42 +0100
+
+apt (0.9.7.7) unstable; urgency=low
+
+ [ Program translation updates ]
+ * Catalan (Jordi Mallach)
+ * Drop a confusing non-breaking space. Closes: #691024
+ * Thai (Theppitak Karoonboonyanan). Closes: #691613
+ * Vietnamese (Trần Ngá»c Quân). Closes: #693773
+ * Fix Plural forms in German, French, Japanese and Portuguese
+ translations. Thanks to Jakub Wilk for reporting these errors.
+
+ [ David Kalnischkies ]
+ * apt-pkg/packagemanager.cc:
+ - do not do lock-step configuration for a M-A:same package if it isn't
+ unpacked yet in SmartConfigure and do not unpack a M-A:same package
+ again in SmartUnPack if we have already configured it (LP: #1062503)
+ * apt-pkg/depcache.cc:
+ - don't call MarkInstall with the FromUser flag set for packages
+ which are dependencies of APT::Never-MarkAuto-Sections matchers
+ - no mode changes should obviously be ok for pkgDepCache::IsModeChangeOk
+ * cmdline/apt-get.cc:
+ - do not call Mark{Install,Delete} from the autoremove code with
+ the FromUser bit set to avoid modifying the auto-installed bit
+ * apt-pkg/algorithms.cc:
+ - ensure pkgProblemResolver calls MarkDelete without FromUser set
+ so that it can't overrule holds and the protection flag
+
+ [ Michael Vogt ]
+ * change permissions of /var/log/apt/term.log to 0640 (LP: #975199)
+
+ [ Jonathan Thomas ]
+ * apt-pkg/algorithms.cc:
+ - fix package-pointer array memory leak in ResolveByKeepInternal()
+
+ -- Michael Vogt <mvo@debian.org> Thu, 13 Dec 2012 09:52:19 +0100
+
+apt (0.9.7.6) unstable; urgency=low
+
+ [ Program translation updates ]
+ * Ukrainian (A. Bondarenko)
+
+ [ David Kalnischkies ]
+ * apt-pkg/pkgcachegen.cc:
+ - ensure that dependencies for packages:none are always generated
+ - add 2 missing remap registrations causing a segfault in case
+ we use the not remapped iterators after a move of the mmap again
+ - write the native architecture as unique string into the cache header
+ as it is used for arch:all packages as a map to arch:native.
+ Otherwise arch comparisons later will see differences (Closes: #689323)
+ * apt-pkg/pkgcache.cc:
+ - ignore negative dependencies applying in the same group for M-A:same
+ packages on the real package name as self-conflicts (Closes: #688863)
+ * cmdline/apt-cache.cc:
+ - print versioned dependency relations in (r)depends if the option
+ APT::Cache::ShowVersion is true (default: false) as discussed in
+ #218995 to help debian-cd fixing #687949. Thanks to Sam Lidder
+ for initial patch and Steve McIntyre for nagging and testing!
+ * apt-pkg/edsp.cc:
+ - include reinstall requests and already installed (= protected) packages
+ in the install-request for external resolvers (Closes: #689331)
+ * apt-pkg/policy.cc:
+ - match pins with(out) an architecture as we do on the commandline
+ (partly fixing #687255, b= support has to wait for jessie)
+ * apt-pkg/contrib/netrc.cc:
+ - remove the 64 char limit for login/password in internal usage
+ - remove 256 char line limit by using getline() (POSIX.1-2008)
+
+ [ Colin Watson ]
+ * apt-pkg/pkgcachegen.cc:
+ - Fix crash if the cache is remapped while writing a Provides version
+ (LP: #1066445).
+
+ -- Michael Vogt <mvo@debian.org> Tue, 16 Oct 2012 18:08:53 +0200
+
+apt (0.9.7.5) unstable; urgency=low
+
+ [ Manpages translation updates ]
+ * Japanese (KURASAWA Nozomu) (Closes: #684435)
+ * Portuguese (Américo Monteiro) (Closes: #686975)
+
+ [ David Kalnischkies ]
+ * handle packages without a mandatory architecture (debian-policy §5.3)
+ by introducing a pseudo-architecture 'none' so that the small group of
+ users with these packages can get right of them without introducing too
+ much hassle for other users (Closes: #686346)
+ * apt-pkg/cdrom.cc:
+ - copy only configured translation files from a CD-ROM and not all
+ available translation files preventing new installs with d-i from
+ being initialized with all translations (Closes: #678227)
+ - handle Components in the reduction for the source.list as multi-arch CDs
+ otherwise create duplicated source entries (e.g. "wheezy main main")
+ * apt-pkg/packagemanager.cc:
+ - unpack versions only in case a different version from the package
+ is currently in unpack state to recover from broken system states
+ (like different file in M-A:same package and other dpkg errors)
+ and avoid re-unpack otherwise (Closes: #670900)
+ * debian/control:
+ - let libapt-pkg break apt < 0.9.4 to ensure that the installed http-
+ method supports the new redirection-style, thanks to Raphael Geissert
+ for reporting & testing (Closes: #685192)
+ * doc/apt_preferences.5.xml:
+ - use the correct interval (x <= P < y) for pin value documentation as
+ these are the intervals used by the code (Closes: #685989)
+ * apt-pkg/indexcopy.cc:
+ - do not create duplicated flat-archive CD-ROM sources for foreign
+ architectures on multi-arch CD-ROMs
+ - do not warn about files which have a record in the Release file, but
+ are not present on the CD to mirror the behavior of the other methods
+ and to allow uncompressed indexes to be dropped without scaring users
+ * apt-pkg/pkgcachegen.cc:
+ - do not create 'native' (or now 'none') package structures as a side
+ effect of description translation parsing as it pollutes the cache
+
+ -- Michael Vogt <mvo@debian.org> Tue, 11 Sep 2012 15:56:44 +0200
+
+apt (0.9.7.4) unstable; urgency=low
+
+ [ Manpages translation updates ]
+ * Polish (Robert Luberda) (Closes: #683109)
+
+ [ Program translation updates ]
+ * Polish (Michał Kułach)
+
+ [ Pino Toscano ]
+ * apt-pkg/contrib/mmap.cc:
+ - guard only the msync call with _POSIX_SYNCHRONIZED_IO rather
+ than also the fallback code as it breaks APT on hurd since 0.9.7.3
+ as the fallback is now always used on non-linux (Closes: #683354)
+
+ [ David Kalnischkies ]
+ * apt-pkg/contrib/fileutl.cc:
+ - remove _POSIX_SYNCHRONIZED_IO guard in FileFd::Sync() around fsync
+ as this guard is only needed for fdatasync and not defined on hurd
+ * cmdline/apt-get.cc:
+ - error out on (unsatisfiable) build-deps on purly virtual packages
+ instead of ignoring these dependencies; thanks to Johannes Schauer
+ for the detailed report! (Closes: #683786)
+ - ensure that the right architecture is used for cross-dependencies in
+ cases we have to choose a provider by defaulting on host-arch
+ instead of build-arch
+ * doc/apt-verbatim.ent:
+ - denote 'wheezy' as stable codename and 'jessie' as testing codename
+ in the documentation in preparation for release
+ * apt-pkg/indexcopy.cc:
+ - do not use atomic writing if the target is /dev/null as we don't want
+ to replace it, not even automically. (Closes: #683410)
+ * apt-pkg/cdrom.cc:
+ - do not link() but rename() the cdroms.list to cdroms.list~ as a backup
+ to ensure that apt-cdrom can be run multiple times (Closes: #676302)
+
+ -- Michael Vogt <mvo@debian.org> Mon, 06 Aug 2012 15:55:04 +0200
+
+apt (0.9.7.3) unstable; urgency=low
+
+ [ Manpages translation updates ]
+ * Spanish; (Omar Campagne). Closes: #681566
+
+ [ Program translation updates ]
+ * Czech (Miroslav Kure). Closes: #680758
+
+ [ David Kalnischkies ]
+ * apt-pkg/cacheset.cc:
+ - handle :all and :native correctly as architectures again
+ in the commandline parsing (regression in 0.9.7)
+ * apt-pkg/packagemanager.cc:
+ - do not segfault if nothing can be configured to satisfy
+ a pre-depends (e.g. in a pre-depends loop) (Closes: #681958)
+ * apt-pkg/contrib/mmap.cc:
+ - trigger the usage of the fallback code for kfreebsd also in the
+ second (filebased) constructor of DynamicMMap (Closes: #677704)
+ - refer to APT::Cache-Start in case the growing failed as if -Limit is
+ really the offender it will be noted in a previous error message.
+ - for filesystems not supporting mmap'ing a file we need to use a
+ SyncToFd dummy just as we did for compressed files in 0.9.5
+
+ -- Michael Vogt <mvo@debian.org> Fri, 27 Jul 2012 17:53:41 +0200
+
+apt (0.9.7.2) unstable; urgency=low
+
+ [ Manpages translation updates ]
+ * French (Christian Perrier)
+ * German (Chris Leick)
+
+ [ Program translation updates ]
+ * Greek (Θανάσης Îάτσης)
+ * Japanese (Kenshi Muto) (Closes: #679662)
+ * Russian (Yuri Kozlov) (Closes: #679599)
+ * Danish (Joe Dalton) (Closes: #680119)
+ * Portuguese (Miguel Figueiredo) (Closes: #680616)
+
+ [ David Kalnischkies ]
+ * debian/apt.cron.daily:
+ - do not try to backup extended_states file if it doesn't
+ exist (Closes: #680287)
+ * ftparchive/writer.cc:
+ - handle the APT::FTPArchive::Packages::SHA512 option correctly instead
+ of overriding SHA256, thanks Christian Marillat! (Closes: #680252)
+ * cmdline/apt-mark.cc:
+ - arch:all packages are treated as arch:native packages, but dpkg
+ expects pkg:all for selections, so use the arch of the installed
+ version instead of the package structure if possible.
+ Thanks to Stepan Golosunov for the report! (Closes: #680041)
+ * apt-pkg/clean.cc:
+ - run autoclean against pkg:arch and not always against pkg:native as
+ this removes valid cache entries (Closes: #679371)
+ * apt-pkg/deb/deblistparser.cc:
+ - negative dependencies need to apply to all architectures,
+ but those with a specific architecture only apply to this one
+ * apt-pkg/cachefilter.cc:
+ - remove architecture-specific arch to tuple expansion-rules as they lead
+ to the same tuples for different architectures (e.g. linux-arm for arm,
+ armel and armhf) while the dpkg-architecture code uses triples which
+ are different (in the first part, which we omit in our tuples), so e.g.
+ build-dep restrictions for armel ended up effecting armhf as well
+
+ -- Michael Vogt <mvo@debian.org> Fri, 13 Jul 2012 21:33:56 +0200
+
+apt (0.9.7.1) unstable; urgency=low
+
+ [ Program translation updates ]
+ * Bulgarian (Damyan Ivanov) (Closes: #678983)
+ * Hungarian (Gabor Kelemen)
+ * Italian (Milo Casagrande)
+ * Slovenian (Andrej Znidarsic)
+ * German (Holger Wansing) (Closes: #679314)
+ * Slovak (Ivan Masár) (Closes: #679448)
+
+ [ David Kalnischkies ]
+ * cmdline/apt-internal-solver.cc, cmdline/apt-mark.cc:
+ - typo fixes and unfuzzy translations
+ * debian/control:
+ - libapt-{pkg,inst} packages should be in section 'libs' instead
+ of 'admin' as by ftp-master override request in #677596
+ - demote debiandoc-sgml to Build-Depends-Indep
+ * doc/makefile:
+ - separate translation building of debiandoc from manpages
+ so that we don't need to build debiandoc for binary packages
+
+ -- Michael Vogt <mvo@debian.org> Fri, 29 Jun 2012 14:26:32 +0200
+
+apt (0.9.7) unstable; urgency=low
+
+ [ Julian Andres Klode ]
+ * apt-pkg/contrib/mmap.cc:
+ - Fix the Fallback option to work correctly, by not calling
+ realloc() on a map mapped by mmap(), and by using malloc
+ and friends instead of new[].
+ - Zero out the new memory allocated with realloc().
+
+ [ Daniel Hartwig ]
+ * apt-pkg/pkgcachegen.cc:
+ - always reset _error->StackCount in MakeStatusCache (Closes: #677175)
+
+ [ David Kalnischkies ]
+ * apt-pkg/deb/deblistparser.cc:
+ - ensure that mixed positive/negative architecture wildcards
+ are handled in the same way as dpkg handles them
+ - use PackageArchitectureMatchesSpecification filter
+ * apt-pkg/cachefilter.cc:
+ - add PackageArchitectureMatchesSpecification (Closes: #672603)
+ * apt-pkg/cacheset.cc:
+ - add PackageContainerInterface::FromGroup to support
+ architecture specifications with wildcards on the commandline
+ * apt-pkg/pkgcache.cc:
+ - do a string comparison for architecture checking in IsMultiArchImplicit
+ as 'unique' strings in the pkgcache aren't unique (Closes: #677454)
+ * buildlib/configure.mak:
+ - print a message detailing how to get config.guess and config.sub
+ in case they are not in /usr/share/misc (Closes: #677312)
+ * cmdline/apt-get.cc:
+ - print a friendly message in 'download' if a package can't be
+ downloaded (Closes: #677887)
+
+ -- Michael Vogt <mvo@debian.org> Tue, 19 Jun 2012 16:42:43 +0200
+
+apt (0.9.6) unstable; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/cdrom.cc:
+ - fix regression from 0.9.3 which dumped the main configuration
+ _config instead of the cdrom settings (Cnf) as identified and
+ tested by Milan Kupcevic, thanks! (Closes: #674100)
+ * cmdline/apt-get.cc:
+ - do not show 'list of broken packages' header if no package
+ is broken as it happens e.g. for external resolver errors
+ - print URIs for all changelogs in case of --print-uris,
+ thanks to Daniel Hartwig for the patch! (Closes: #674897)
+ - show 'bzr branch' as 'bzr get' is deprecated (LP: #1011032)
+ - check build-dep candidate if install is forbidden
+ * debian/apt-utils.links:
+ - the internal resolver 'apt' is now directly installed in
+ /usr/lib/apt/solvers, so don't instruct dh to create a broken link
+ * doc/apt-verbatim.ent:
+ - APT doesn't belong to the product 'Linux', so use 'APT' instead
+ as after all APT is a big suite of applications
+ * doc/examples/sources.list:
+ - use the codename instead of 'stable' in the examples sources.list
+ as we do in the manpage and as the debian-installer does
+ * doc/apt-get.8.xml:
+ - use apt-utils as package example instead of libc6
+ * apt-pkg/contrib/cmdline.cc:
+ - apply patch from Daniel Hartwig to fix a segfault in case
+ the LongOpt is empty (Closes: #676331)
+ - fix segfault with empty LongOpt in --no-* branch
+ * ftparchive/apt-ftparchive.cc:
+ - default to putting the Contents-* files below $(SECTION) as apt-file
+ expects them there - thanks Martin-Éric Racine! (Closes: #675827)
+ * apt-pkg/deb/deblistparser.cc:
+ - set pkgCacheGen::Essential to "all" again (Closes: #675449)
+ * apt-pkg/algorithms.cc:
+ - force install only for one essential package out of a group
+ * apt-pkg/aptconfiguration.cc:
+ - if APT::Languages=none save "none" in allCodes so that the detected
+ configuration is cached as intended (Closes: #674690, LP: #1004947)
+ * apt-pkg/cacheiterators.h:
+ - add an IsMultiArchImplicit() method for Dep- and PrvIterator
+
+ [ Justin B Rye ]
+ * doc/apt-cdrom.8.xml:
+ - replace CDROM with the proper CD-ROM in text
+ - correct disc vs. disk issues
+ * doc/apt-extracttemplates.1.xml:
+ - debconf is not DebConf
+ * doc/apt-get.8.xml:
+ - move dselect-upgrade below dist-upgrade
+ - review and fix spelling issues
+ * doc/apt-ftparchive.8.xml, doc/apt-config.8.xml,
+ doc/apt-key.8.xml, doc/apt-mark.8.xml,
+ doc/apt_preferences.5.xml, doc/apt-secure.8.xml,
+ doc/apt-sortpkgs.1.xml, sources.list.5.xml:
+ - review and fix typo, grammar and style issues
+ * doc/apt.conf.5.xml:
+ - review and fix typo, grammar and style issues
+ - rephrase APT::Immediate-Configuration and many others
+
+ [ Sebastian Heinlein ]
+ * cmdline/apt-key:
+ - do not hardcode /etc but use Dir::Etc instead
+
+ [ Robert Luberda ]
+ * Polish manpage translation update (Closes: #675603)
+ * doc/apt-mark.8.xml:
+ - in hold, the option name is --file not --filename
+
+ [ Christian Perrier ]
+ * French program and manpage translation update
+ * Danish program translation by Joe Hansen. Closes: #675605
+
+ [ Thibaut Girka ]
+ * cmdline/apt-get.cc:
+ - complain correctly about :any build-dep on M-A:none packages
+ * apt-pkg/deb/deblistparser.cc:
+ - add support for arch-specific qualifiers in dependencies
+
+ -- Michael Vogt <mvo@debian.org> Mon, 11 Jun 2012 16:21:53 +0200
+
+apt (0.9.5.1) unstable; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/contrib/fileutl.cc:
+ - dup() given compressed fd in OpenDescriptor if AutoClose
+ is disabled as otherwise gzclose() and co will close it
+ * doc/*.xml:
+ - mark even more stuff as untranslatable and improve the
+ markup here and there (no real text change)
+ - use docbook DTD 4.5 instead of 4.2 to have valid docs
+
+ [ Justin B Rye ]
+ * doc/*.xml:
+ - remove 'GNU/Linux' from 'Debian systems' strings as Debian
+ has more systems than just GNU/Linux nowadays
+ * doc/apt-cache.8.xml:
+ - fix a typo as well as adding missing literal markup
+ - three small rewordings for better english sentences
+
+ -- Michael Vogt <mvo@debian.org> Thu, 24 May 2012 17:16:34 +0200
+
+apt (0.9.5) unstable; urgency=low
+
+ [ Chris Leick ]
+ * proofreading of the manpage pot
+ * German manpage translation update (Closes: #673294)
+
+ [ David Kalnischkies ]
+ * buildlib/podomain.mak:
+ - ensure that all sources end up in the srclist so that we don't
+ forget to extract half of the translation strings
+ * buildlib/inttypes.h.in:
+ - remove inttypes.h compatibility as providing such a c99 types
+ compatibility conflicts with the usage of c99 type long long
+ * apt-pkg/contrib/mmap.cc:
+ - have a dummy SyncToFd around in case of ReadOnly access to a
+ compressed file as we otherwise on Close() do not delete[] the
+ char buffer but munmap() it… (Closes: #673815)
+ * debian/control:
+ - moving debiandoc-sgml to Build-Depends-Indep was one step too much
+ for the buildds as we still build two sgml files in arch:any
+ * debian/rules:
+ - move internal-solver as 'apt' to his friend dump-solver in
+ /usr/lib/apt/solvers to avoid writing a manpage for it
+
+ -- Michael Vogt <mvo@debian.org> Tue, 22 May 2012 16:14:22 +0200
+
+apt (0.9.4) unstable; urgency=low
+
+ [ David Kalnischkies ]
+ * methods/http.cc:
+ - after many years of pointless discussions disable http/1.1 pipelining
+ by default as many webservers and proxies seem to be unable to conform
+ to specification must's (rfc2616 section 8.1.2.2) (LP: #996151)
+ - add spaces around PACKAGE_VERSION to fix FTBFS with -std=c++11
+ * apt-pkg/pkgcachegen.cc:
+ - make IsDuplicatedDescription static so that it is really private
+ as we don't need a symbol for it as it is not in a header
+ * Makefile, buildlib/*.mak:
+ - reshuffle dependencies so that parallel building seems to work
+ - separate manpages from the rest of the doc building
+ * prepare-release:
+ - apt-inst version isn't apt versions, so don't override variable
+ * debian/rules:
+ - apt-utils packages manpages, so it should depend on build-doc
+ - make apt and apt-utils packages depend on manpages instead of full doc
+ * debian/control:
+ - move doxygen and debiandoc-sgml to Build-Depends-Indep as docs
+ are no longer build in the same target as the manpages
+ * apt-pkg/acquire-methods.cc:
+ - factor out into private Dequeue() to fix access to deleted pointer
+ * apt-pkg/contrib/fileutl.cc:
+ - ensure that we close compressed fds, wait for forks and such even if
+ the FileFd itself is set to not autoclose the given Fd
+ * cmdline/apt-get.cc:
+ - use the host architecture, not the build architecture for matching
+ of [architecture restrictions] in Build-Depends (Closes: #672927)
+ * doc/makefile:
+ - build manpages with the correct l10n.gentext.default.language setting
+ to get the correct section titles provided by docbook
+ * doc/po/de.po:
+ - updated german manpage translation by Chris Leick, thanks!
+ * apt-pkg/packagemanager.cc:
+ - do not run into loop on new-pre-depends-breaks (Closes: #673536)
+ * doc/*.xml:
+ - add a few translator notes and reword some paragraphs to ensure that
+ translators and users alike can better understand them (Closes: #669409)
+ - in <term> mark all options with <option> and mark <term><option>
+ as untranslated for po4a removing ~200 unless "translateable" strings
+ * apt-pkg/aptconfiguration.cc:
+ - longcode Translation files are saved with encoded underscore,
+ so make sure to pick these files up as well for Acquire::Languages
+ * ftparchive/writer.cc:
+ - include Contents-* files in Release files (Closes: #673647)
+
+ [ Michael Vogt ]
+ * merged updated de.po, thanks to Holger Wansing (closes: #672466)
+
+ [ Raphael Geissert ]
+ * apt-pkg/acquire*.cc:
+ - handle redirections in the worker with the right method instead of
+ in the method the redirection occurred in (Closes: #668111)
+ * methods/http.cc:
+ - forbid redirects to change protocol
+ * methods/mirror.cc:
+ - generate an equal sign also for the first arch (Closes: #669142)
+
+ [ Marius Vollmer ]
+ * apt-pkg/algorithms.cc:
+ - fix memory leak of Flags in pkgSimulate by a proper destructor
+
+ -- Michael Vogt <mvo@debian.org> Mon, 21 May 2012 12:29:05 +0200
+
+apt (0.9.3) unstable; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/contrib/strutl.cc:
+ - remove the message size limit from ioprintf and strprintf
+ * apt-pkg/contrib/configuration.cc:
+ - add a more versatile Dump() method
+ - normalize a bit by replacing // and /./ with / in FindFile
+ - /dev/null is a special absolute path as it has no subdirectories
+ * apt-pkg/acquire-worker.cc:
+ - use Dump() to generate the configuration message for sending
+ * cmdline/apt-config.cc:
+ - make it possible to limit dump to a subtree
+ - implement --empty and --format option for dump
+ * apt-pkg/cdrom.cc:
+ - use Dump() to generate the configuration output
+ * apt-pkg/depcache.cc:
+ - clearly separate 'positive' and 'negative' dependencies and
+ their upgrade-resolution tries in MarkInstall and especially don't
+ treat Conflicts differently compared to Breaks here
+ - provider is only a possible solution if the provides has the right
+ version (or none as we have no versioned provides in debian) and not
+ if the version of the provider matches
+ * edsp/edspsystem.cc:
+ - check with RealFileExists for scenario file as otherwise a directory
+ like one provided with RootDir triggers the usage of EDSP
+ * debian/libapt-inst1.5.symbols:
+ - use the correct library name the symbols header
+ * apt-pkg/pkgcachegen.cc:
+ - check if NewDescription allocation has failed and error out accordingly
+ - check if we work on a valid description in IsDuplicateDescription as
+ we end up working on dangling pointers otherwise which segfaults on
+ s390x and ppc64 (Closes: #669427)
+ * apt-pkg/deb/deblistparser.cc:
+ - check length and containing chars for a given description md5sum
+ * ensure that apti18n.h is included last as advertised (Closes: #671623)
+ * apt-pkg/acquire-worker.cc:
+ - revert the use of FileFd::Write in OutFdReady as we don't want error
+ reports about EAGAIN here as we retry later. Thanks to YOSHINO Yoshihito
+ for the report. (Closes: #671721)
+ * apt-pkg/contrib/fileutl.cc:
+ - check that the fd which are closed are valid
+ - ensure that we do init d only once and especially not with its own
+ content as this causes some "interesting" hickups resulting in segfaults
+ as it seems (Closes: #554387, #670979)
+ - collect zombie (de)compressor processes on reopen
+ - ensure that in error conditions the Fail flag is set
+ - ensure that d is set before accessing it
+ * apt-pkg/aptconfiguration.cc:
+ - use NULL instead of "" for no (un)compress parameters
+ * apt-pkg/algorithms.cc:
+ - factor out of ListUpdate a AcquireUpdate to be able to provide your
+ own pkgAcquire fetcher to the wrapper
+ * apt-inst/deb/debfile.h:
+ - readd 'md5.h' to the uncleaned header includes to make qapt build
+ against us again unchanged to unblock transition (Closes: #669163)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 11 May 2012 17:16:22 +0200
+
+apt (0.9.2) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * apt-inst/contrib/extracttar.cc:
+ - ensure that in StartGzip the InFd is set to "AutoClose" to ensure
+ that the pipe is closed when InFd is closed. This fixes a Fd leak
+ (LP: #985452)
+
+ [ David Kalnischkies ]
+ * apt-pkg/deb/deblistparser.cc:
+ - only treat the native apt as essential by default (Closes: #669377)
+ * apt-pkg/contrib/fileutl.cc:
+ - redirect stderr from compressors to /dev/null
+ * apt-pkg/aptconfiguration.cc:
+ - if the compressor is not installed, but we link against it's
+ library accept it as a CompressionType (Closes: #669328)
+ * apt-pkg/contrib/sha2_internal.cc:
+ - do not use the input data directly but memcpy it instead as
+ it could be unaligned as in the http-transport which causes
+ a sigbus error on sparc (Closes: #669061)
+ * apt-pkg/cacheset.cc:
+ - actually return to the fallback modifier if we have detected we
+ should for packagenames which look like modifiers (Closes: #669591)
+
+ [ Adam Conrad ]
+ * Set FD_CLOEXEC on history.log's FD (Closes: #610069, LP: #636010)
+
+ [ Thorsten Spindler ]
+ * apt-pkg/deb/dpkgpm.cc:
+ - do not crash if (*I).Pkg is NULL (LP: #939867)
+
+ [ Malcolm Scott ]
+ * apt-pkg/packagemanager.cc:
+ - iterate over all pre-depends or-group member instead of looping
+ endlessly over the first member in SmartUnpack (LP: #985852)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 20 Apr 2012 11:26:16 +0200
+
+apt (0.9.1) unstable; urgency=low
+
+ [ David Kalnischkies ]
+ * cmdline/apt-get.cc:
+ - if pkgCacheFile::Generate is disabled in 'update' don't
+ remove the caches (and don't try to open them)
+ * apt-pkg/packagemanager.cc:
+ - init counter in SmartConfigure so that the loop-breaker isn't
+ triggered at random… (Closes: #669060)
+
+ [ Christian Perrier ]
+ * Fix typo in apt-get(8). Closes: #664833
+ * Replace "argument" by "paramètre" in French translation.
+ Merci, les Titeps!
+ * Drop hardcoded "en.html" suffix in apt-secure manpage.
+ Thanks to David Prevot.
+
+ -- Michael Vogt <mvo@debian.org> Tue, 17 Apr 2012 09:49:31 +0200
+
+apt (0.9.0) unstable; urgency=low
+
+ * upload to debian/unstable
+
+ -- Michael Vogt <mvo@debian.org> Mon, 16 Apr 2012 15:53:17 +0200
+
+apt (0.9.0~exp1) experimental; urgency=low
+
+ [ Michael Vogt ]
+ * apt-pkg/packagemanager.cc:
+ - fix inconsistent clog/cout usage in the debug output
+ - add APT::pkgPackageManager::MaxLoopCount to ensure that the
+ ordering code does not get into a endless loop when it flip-flops
+ between two states
+ * update libapt-inst1.4 to libapt-inst1.5 because of the cleanup
+ performed
+ * prepare debian/unstable upload, if there are no issues with this
+ upload it will directly go into unstable as 0.9.0
+
+ [ David Kalnischkies ]
+ * do not update po and pot files in the process of the build as this
+ causes timestamp changes for the mo files which therefore can't
+ be refcounted by dpkg for your M-A: same packages
+ (Closes: #659333, LP: #924628)
+ * apt-inst/database.{cc,h}, apt-inst/deb/dpkgdb.{cc,h}:
+ - drop instead of fix as it is only needed if you want to reimplement dpkg
+ and comes straight from the beginning of last decade (Closes: #663372)
+ * apt-inst/deb/debfile.cc:
+ - {Extract,Merge}Control() is another instance of "lets reimplement dpkg"
+ so shot of this code before someone ends up using this…
+ * debian/libapt-pkg4.12:
+ - update symbols file
+ * debian/apt-utils.install:
+ - ship the ftparchive, apt-extractemplates and apt-sortpkgs locales
+ in the apt-utils package instead of the apt package
+ * apt-pkg/packagemanager.cc:
+ - recheck all dependencies if we changed a package in SmartConfigure
+ as this could break an earlier dependency (LP: #940396)
+ - recheck dependencies in SmartUnpack after a change, too
+ * apt-pkg/acquire-worker.cc:
+ - check return of write() as gcc recommends
+ * apt-pkg/acquire.cc:
+ - check return of write() as gcc recommends
+ * apt-pkg/cdrom.cc:
+ - check return of chdir() and link() as gcc recommends
+ * apt-pkg/clean.cc:
+ - check return of chdir() as gcc recommends
+ * apt-pkg/contrib/netrc.cc:
+ - check return of asprintf() as gcc recommends
+ * methods/rred.cc:
+ - check return of writev() as gcc recommends
+ * methods/mirror.cc:
+ - check return of chdir() as gcc recommends
+ * apt-pkg/deb/dpkgpm.cc:
+ - check return of write() a gcc recommends
+ * apt-inst/deb/debfile.cc:
+ - check return of chdir() as gcc recommends
+ * apt-inst/deb/dpkgdb.cc:
+ - check return of chdir() as gcc recommends
+ * methods/makefile:
+ - do not link rred against libz anymore as FileFd handles all
+ this transparently now
+ * debian/control:
+ - bump Standards-Version to 3.9.3 (no changes needed)
+ - add libbz2-dev as new build-dependency
+ - remove the libz-dev alternative from zlib1g-dev build-dependency
+ - suggest xz-utils instead of bzip2 and lzma
+ * doc/apt-get.8.xml:
+ - typofix: respect → respecting, thanks Mike Erickson! (Closes: #664833)
+ * debian/rules:
+ - do not sed in configure.in to set the version-number
+ * prepare-release:
+ - add as a small script to lazy check and prepare releases
+ * doc/*:
+ - move the command synopsis out of each manpage into apt-verbatim.ent
+ as they are a hell to translate and just single out the parameters
+ which can be translated to apt.ent
+ * apt-pkg/aptconfiguration.cc:
+ - if present, prefer xz binary over lzma
+ - if we have zlib builtin insert add a dummy gzip compressor for FileFD
+ - do the same for bz2 builtin if available
+ * methods/bzip2.cc:
+ - remove it as the functionality for all compressors can be
+ provided by gzip.cc now with the usage of FileFD
+ * apt-pkg/contrib/fileutl.cc:
+ - use libz2 library for (de)compression instead of the bzip2 binary as
+ the first is a dependency of dpkg and the later just priority:optional
+ so we gain 'easier' access to bz2-compressed Translation files this way
+ * cmdline/apt-get.cc:
+ - print list of autoremoves in alphabetical order (Closes: #639008)
+
+ [ Bogdan Purcareata ]
+ * doc/apt-get.8.xml:
+ - add 'download' to the usage line (Closes: #649340)
+ * cmdline/apt-get.cc:
+ - distinguish information about 'apt-get autoremove' based on the
+ number of auto-removed packages both before and after the list
+ of packages (Closes: #665833)
+
+ [ Steve Langasek ]
+ * don't treat build-depends-indep as cross-build-dependencies; we should
+ always install the host arch versions. LP: #968828.
+
+ [ Paolo Rotolo ]
+ * Fix string from automatic to automatically (LP: #967393).
+
+ -- Michael Vogt <mvo@debian.org> Thu, 12 Apr 2012 12:40:39 +0200
+
+apt (0.8.16~exp13) experimental; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/acquire-item.cc:
+ - remove 'old' InRelease file if we can't get a new one before
+ proceeding with Release.gpg to avoid the false impression of a still
+ trusted repository by a (still present) old InRelease file.
+ Thanks to Simon Ruderich for reporting this issue! (CVE-2012-0214)
+ - add Debug::pkgAcqArchive::NoQueue to disable package downloading
+ * apt-pkg/deb/dpkgpm.cc:
+ - chroot if needed before dpkg --assert-multi-arch
+ - ensure that dpkg binary doesn't have the chroot-directory prefixed
+ - call dpkg --assert-multi-arch with execvp instead of execv
+ - save the universe by not printing messages about apport if a package
+ with this name is not installed (Closes: #619646)
+ - handle a SIGINT in all modes as a break after the currently running
+ dpkg transaction instead of ignoring it completely
+ * apt-pkg/depcache.cc:
+ - if a M-A:same package is marked for reinstall, mark all it's installed
+ silbings for reinstallation as well (LP: #859188)
+ * apt-pkg/contrib/configuration.cc:
+ - do not stop parent transversal in FindDir if the value is empty
+ * methods/http{s,}.cc:
+ - if a file without an extension is requested send an 'Accept: text/*'
+ header to avoid that the server chooses unsupported compressed files
+ in a content-negotiation attempt (Closes: #657560)
+ - remove the arbitrary MAXLEN limit for response lines (Closes: #658346)
+ * apt-pkg/aptconfiguration.cc:
+ - chroot if needed before calling dpkg --print-foreign-architectures
+ - ensure that architectures are not added multiple times
+ * cmdline/apt-mark.cc:
+ - detect if dpkg has multiarch support before calling --set-selections
+ - correctly ignore already (un)hold packages
+ * apt-pkg/cachefile.cc:
+ - clean up lost atomic cachefiles with 'clean' (Closes: #650513)
+ * apt-pkg/indexrecords.cc:
+ - do not create empty Entries as a sideeffect of Lookup()
+ * apt-pkg/acquire-item.cc:
+ - drop support for i18n/Index file (introduced in 0.8.11) and use
+ the Release file instead to get the Translations (Closes: #649314)
+ - use pdiff for Translation-* files if available (Closes: #657902)
+ * ftparchive/writer.cc:
+ - add 'Translation-*' to the default patterns
+ * cmdline/apt-get.cc:
+ - if a package can't be removed as it is not installed, suggest to
+ the user an (installed) multiarch silbing with 'Did you mean?'
+ - improve 'error' message for packages which are only referenced
+ e.g. in a Depends line and are now requested for removal
+ * cmdline/apt-cache.cc:
+ - correct --pre-depends option by using dash consistently (LP: #940837)
+ * apt-pkg/packagemanager.cc:
+ - do not try to a void a breaks if the broken package pre-depends
+ on the breaker, but let dpkg auto-deconfigure it
+ * apt-pkg/contrib/fileutl.cc:
+ - do not warn about the ignoring of directories (Closes: #662762)
+
+ [ Steve Langasek ]
+ * cmdline/apt-get.cc:
+ - for cross-build-dependencies M-A: none should be DEB_HOST_ARCH,
+ not DEB_BUILD_ARCH (Closes: #646288)
+
+ [ Colin Watson ]
+ * apt-pkg/algorithms.cc:
+ - don't break out of the main-resolver loop for Breaks to deal with all
+ of them in a single iteration (Closes: #657695, LP: #922485)
+ - use a signed int instead of short for score calculation as upgrades
+ become so big now that it can overflow (Closes: #657732, LP: #917173)
+ * Fix IndexCopy::CopyPackages and TranslationsCopy::CopyTranslations to
+ handle compressed files again (LP: #924182, closes: #658096)
+
+ [ Michael Vogt ]
+ * apt-pkg/deb/dpkgpm.cc:
+ - fix crash when a package is in removed but residual config state
+ (LP: #923807)
+ * apt-pkg/contrib/fileutl.h:
+ - fix compat with FileFd::OpenDescriptor() in ReadOnlyGzip mode
+ * apt-pkg/packagemanager.cc:
+ - fix bug in predepends handling - ensure that packages that needs
+ unpackaging are unpacked before they are configured (LP: #927993)
+
+ [ Julian Andres Klode ]
+ * apt-pkg/deb/deblistparser.cc:
+ - Set the Essential flag on APT instead of only Important
+ * apt-pkg/packagemanager.cc:
+ - Do not use immediate configuration for packages with the Important flag
+ * Treat the Important flag like the Essential flag with those differences:
+ - No Immediate configuration (see above)
+ - Not automatically installed during dist-upgrade
+ - No higher score for installation ordering
+
+ -- Michael Vogt <mvo@debian.org> Tue, 06 Mar 2012 18:12:57 +0100
+
+apt (0.8.16~exp12) experimental; urgency=low
+
+ [ Michael Vogt ]
+ * apt-pkg/deb/dpkgpm.cc:
+ - fix segfault on pkg removal
+
+ [ David Kalnischkies ]
+ * apt-pkg/cacheiterators.h:
+ - return the correct version arch for all+foreign, too
+ * apt-pkg/packagemanager.cc:
+ - ignore breaks on not-installed versions while searching for
+ breakage loops as we don't have to avoid them
+ * debian/control:
+ - remove APT from the short descriptions as lintian doesn't like it
+ and it doesn't transport any information for a reader anyway
+ - apply typofixes by Pascal De Vuyst, thanks! (Closes: #652834, #652835)
+ * debian/rules:
+ - apply patch to enable usage of hardning CPPFLAGS and LDFLAGS by
+ Moritz Muehlenhoff, thanks! (Closes: #653504)
+ * methods/https.cc:
+ - use curls list append instead of appending Range and If-Range by hand
+ which generates malformed requests, thanks Mel Collins for the hint!
+ (Closes: #646381)
+ * test/libapt/run-tests:
+ - hurd doesn't have dmesg yet and we don't really need it either,
+ so use with $0 a more stable data source for hashsumming
+
+ [ Pino Toscano ]
+ * test/libapt/globalerror_test.cc:
+ - errno 0 has a different strerror on hurd, so generate the expected
+ message dynamically instead of hardcoding 'Success' (Closes: #656530)
+
+ -- Michael Vogt <mvo@debian.org> Tue, 24 Jan 2012 12:24:38 +0100
+
+apt (0.8.16~exp11) experimental; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/deb/dpkgpm.cc:
+ - redirect out/input of dpkg --assert-multi-arch to /dev/null
+ - if multi-arch is detected ensure that pkg:all is reported as pkg:all
+
+ -- Michael Vogt <mvo@debian.org> Thu, 19 Jan 2012 13:48:18 +0100
+
+apt (0.8.16~exp10) experimental; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/depcache.cc:
+ - implicit conflicts (for multiarch) are supposed to conflict
+ only with real packages, not with virtual providers
+ * apt-pkg/pkgcache.cc:
+ - ignore implicit conflicts on providers in AllTarget, too
+ * apt-pkg/deb/dpkgpm.cc:
+ - check if dpkg supports multiarch with --assert-multi-arch
+ and if it does be always explicit about the architecture
+ * apt-pkg/contrib/fileutl.h:
+ - store the offset in the internal fd before calculate size of
+ the zlib-handled file to jump back to this place again
+ * apt-pkg/aptconfiguration.cc:
+ - parse dpkg --print-foreign-architectures correctly in
+ case archs are separated by newline instead of space, too.
+ (Closes: #655590)
+
+ [ Michael Vogt ]
+ * apt-pkg/contrib/fileutl.h:
+ - fix segfault triggered by the python-apt testsuite
+
+ -- Michael Vogt <mvo@debian.org> Wed, 18 Jan 2012 12:52:26 +0100
+
+apt (0.8.16~exp9) experimental; urgency=low
+
+ [ Julian Andres Klode ]
+ * apt-pkg/cdrom.cc:
+ - Accept .bz2, .xz files in addition to .gz files (Closes: #649451)
+
+ [ Michael Vogt ]
+ * apt-pkg/cdrom.cc:
+ - use aptconfiguration to get the supported compression types
+ * debian/control:
+ - bump debhelper build-dep to debhelper (>= 8.1.3~)
+ - set libapt-pkg-dev to multi-arch: same too
+ * g++ 4.7 fixes
+
+ [ Colin Watson ]
+ * Convert libapt-pkg4.12 and libapt-inst1.4 to Multi-Arch: same.
+
+ [ David Kalnischkies ]
+ * apt-pkg/cacheset.cc:
+ - make the cachesets real containers which can embedding any container
+ to be able to use the same interface regardless of set or list usage
+ - provide a {Package,Version}List similar to {Package,Version}Set
+ * cmdline/apt-{get,cache,mark}.cc:
+ - use Lists instead of Sets if input order should be preserved for
+ commands accepting lists of packages, e.g. policy (Closes: #625960)
+ * apt-pkg/depcache.cc:
+ - prefer native providers over foreigns even if the chain is foreign
+ * cmdline/apt-get.cc:
+ - ignore foreign architectures if we check if a provides has only one
+ resolver as it's basically the same for the user, so no need to choose
+ * cmdline/apt-config.cc:
+ - dump the APT::Compressor settings correctly and completely
+ * apt-pkg/contrib/fileutl.{h,cc}:
+ - implement a ModificationTime method for FileFd
+ - add a ReadLine method
+ - drop the explicit export of gz-compression handling
+ * apt-pkg/cdrom.cc:
+ - support InRelease files on cdrom
+
+ -- Michael Vogt <mvo@debian.org> Thu, 05 Jan 2012 20:26:31 +0100
+
+apt (0.8.16~exp8) experimental; urgency=low
+
+ [ David Kalnischkies ]
+ * algorithms.cc:
+ - show a debug why a package was kept by ResolveByKeep()
+ * apt-pkg/packagemanager.cc:
+ - do not fail on unpacked packages in SmartUnPack, just don't
+ schedule them for unpack, but do all checks and configure them
+ - do not enter an endless loop for (essential) pre-dependency loops
+ * apt-pkg/contrib/sha2_internal.cc:
+ - use a pointer-union to peace gcc strict-aliasing warning
+ * apt-pkg/deb/deblistparser.cc:
+ - M-A: foreign packages provide for other archs, too
+
+ -- David Kalnischkies <kalnischkies@gmail.com> Thu, 03 Nov 2011 09:40:29 -0500
+
+apt (0.8.16~exp7) experimental; urgency=low
+
+ [ David Kalnischkies ]
+ * do not pollute namespace in the headers with using (Closes: #500198)
+ * use forward declaration in headers if possible instead of includes
+ * remove old APT_COMPATIBILITY ifdef's
+ * apt-pkg/deb/dpkgpm.cc:
+ - use std::vector instead of fixed size arrays to store args and
+ multiarch-packagename strings
+ - load the dpkg base arguments only one time and reuse them later
+ * cmdline/apt-get.cc:
+ - follow Provides in the evaluation of saving candidates, too, for
+ satisfying garbage package dependencies (Closes: #640590)
+ * apt-pkg/algorithms.cc:
+ - if a package is garbage, don't try to save it with FixByInstall
+ * apt-pkg/deb/debsrcrecords.cc:
+ - remove the limit of 400 Binaries for a source package (Closes: #622110)
+ * apt-pkg/deb/deblistparser.cc:
+ - fix crash when the dynamic mmap needs to be grown in
+ LoadReleaseInfo (LP: #854090)
+ * apt-pkg/deb/debmetaindex.cc:
+ - none is a separator, not a language: no need for Index (Closes: #624218)
+ * apt-pkg/aptconfiguration.cc:
+ - do not builtin languages only if none is forced (Closes: #643787)
+ * apt-pkg/pkgcachegen.cc:
+ - refactor MergeList by creating -Group, -Package and -Version specialist
+ - share description list between "same" versions (LP: #868977)
+ This also means that descriptions are shared across archives now.
+ - add implicit dependencies needed for Multi-Arch at the time a Version
+ struct is created and not at the end of the cache generation
+ * apt-pkg/pkgcache.cc:
+ - always prefer "en" over "" for "en"-language regardless of cache-order
+
+ [ Michael Vogt ]
+ * apt-pkg/contrib/configuration.cc:
+ - fix double delete (LP: #848907)
+ - ignore only the invalid regexp instead of all options
+ * apt-pkg/acquire-item.h, apt-pkg/deb/debmetaindex.cc:
+ - fix fetching language information by adding OptionalSubIndexTarget
+ * methods/https.cc:
+ - cleanup broken downloads properly
+
+ [ Colin Watson ]
+ * ftparchive/cachedb.cc:
+ - fix buffersize in bytes2hex
+
+ -- Michael Vogt <mvo@debian.org> Fri, 14 Oct 2011 13:51:35 +0200
+
+apt (0.8.16~exp6) experimental; urgency=low
+
+ [ Christopher Baines ]
+ * enable APT in unpack/configure ordering to handle loops as well
+ as tight dependencies between immediate packages better
+ enabling also the possibility to mark all packages as immediate
+ (at least Closes: #353290, #540227, #559733, #621836, #639290)
+
+ [ David Kalnischkies ]
+ * [abi-break] Support large files in the complete toolset. Indexes of this
+ size are pretty unlikely for now, but we need it for deb
+ packages which could become bigger than 4GB now (LP: #815895)
+ * merged the debian-sid branch
+
+ [ Michael Vogt ]
+ * bump ABI version
+
+ -- Michael Vogt <mvo@debian.org> Wed, 14 Sep 2011 21:06:51 +0200
+
+apt (0.8.16~exp5) experimental; urgency=low
+
+ * merged the latest debian-sid fixes
+ * apt-pkg/makefile:
+ - install sha256.h compat header
+ * apt-pkg/pkgcachegen.{cc,h}:
+ - use ref-to-ptr semantic in NewDepends() to ensure that the
+ libapt does not segfault if the cache is remapped in between
+ (LP: #812862)
+ - fix crash when P.Arch() was used but the cache got remapped
+ * apt-pkg/acquire-item.{cc,h}:
+ - do not check for a "Package" tag in optional index targets
+ like the translations index
+ * apt-pkg/acquire.cc:
+ - fix potential divide-by-zero
+ * methods/mirror.cc:
+ - include the architecture(s) in the query string as well so
+ that the server can make better decisions
+
+ -- Michael Vogt <mvo@debian.org> Mon, 15 Aug 2011 14:52:54 +0200
+
+apt (0.8.16~exp4) experimental; urgency=low
+
+ [ Julian Andres Klode ]
+ * apt-pkg/pkgcache.h:
+ - [ABI break] Add pkgCache::Header::CacheFileSize, storing the cache size
+ * apt-pkg/pkgcachegen.cc:
+ - Write the file size to the cache
+ * apt-pkg/pkgcache.cc:
+ - Check that cache is at least CacheFileSize bytes large (LP: #16467)
+
+ [ Michael Vogt ]
+ * merged latest fixes from debian-sid
+ * apt-pkg/cdrom.{cc,h}:
+ - cleanup old ABI break avoidance hacks
+ * [ABI break] apt-pkg/acquire-item.{cc,h}:
+ - cleanup around OptionalIndexTarget and SubIndexTarget
+ * [ABI break] merged patch from Jonathan Thomas to have a new
+ RecordField() function in the pkgRecorder parser. Many thanks
+ Thomas
+ * [ABI break] merge patch from Jonathan Thomas to speed up the
+ depcache by caching the install-recommends and install-suggests
+ values
+ * apt-pkg/contrib/fileutl.{cc,h}:
+ - add GetModificationTime() helper
+ * apt-pkg/pkgcachegen.cc:
+ - regenerate the cache if the sources.list changes to ensure
+ that changes in the ordering there will be honored by apt
+ * apt-pkg/sourcelist.{cc,h}:
+ - add pkgSourceList::GetLastModifiedTime() helper
+
+ -- Michael Vogt <mvo@debian.org> Thu, 28 Jul 2011 16:57:08 +0200
+
+apt (0.8.16~exp3) experimental; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/pkgcache.h:
+ - readd All{Foreign,Allowed} as suggested by Julian to
+ remain strictly API compatible
+ * apt-pkg/acquire*.{cc,h}:
+ - try even harder to support really big files in the fetcher by
+ converting (hopefully) everything to 'long long' (Closes: #632271)
+ * ftparchive/writer.cc:
+ - generate all checksums in one run over the file for Release
+ * cmdline/apt-get.cc:
+ - add an --assume-no option for testing to say 'no' to everything
+ * apt-pkg/deb/debmetaindex.cc:
+ - add trusted=yes option to mark unsigned (local) repository as trusted
+ based on a patch from Ansgar Burchardt, thanks a lot! (Closes: #596498)
+
+ [ Michael Vogt ]
+ * merge fixes from the debian/unstable upload
+ * merge lp:~mvo/apt/sha512-template to get fixes for the
+ sha1/md5 verifiation (closes: #632520)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 15 Jul 2011 09:56:17 +0200
+
+apt (0.8.16~exp2) experimental; urgency=low
+
+ [ David Kalnischkies ]
+ * [ABI-Break] Implement EDSP in libapt-pkg so that all front-ends which
+ use the internal resolver can now be used also with external
+ ones as the usage is hidden in between the old API
+ * provide two edsp solvers in apt-utils:
+ - 'dump' to quickly output a complete scenario and
+ - 'apt' to use the internal as an external resolver
+ * apt-pkg/pkgcache.h:
+ - clean up mess with the "all" handling in MultiArch to
+ fix LP: #733741 cleanly for everyone now
+ * apt-pkg/depcache.cc:
+ - use a boolean instead of an int for Add/Remove in AddStates
+ similar to how it works with AddSizes
+ - let the Mark methods return if their marking was successful
+ - if a Breaks can't be upgraded, remove it. If it or a Conflict
+ can't be removed the installation of the breaker fails.
+ * cmdline/apt-get.cc:
+ - do not discard the error messages from the resolver and instead
+ only show the general 'Broken packages' message if nothing else
+
+ [ Stefano Zacchiroli ]
+ * doc/external-dependency-solver-protocol.txt:
+ - describe EDSP and the configuration interface around it
+
+ [ Michael Vogt ]
+ * [ABI-Break] merge lp:~mvo/apt/sha512-template to add support for sha512
+ * [ABI-Break] merge lp:~mvo/apt/dpointer to support easier extending
+ without breaking the ABI
+ * increase ABI version and update package names
+
+ -- Michael Vogt <mvo@debian.org> Wed, 29 Jun 2011 13:57:28 +0200
+
+apt (0.8.16~exp1) experimental; urgency=low
+
+ * merged with the debian/unstable upload
+
+ -- Michael Vogt <mvo@debian.org> Wed, 29 Jun 2011 12:40:31 +0200
+
+apt (0.8.15.11) UNRELEASED; urgency=low
+
+ * Fix typo in apt-get(8). Closes: #664833
+ * Replace "argument" by "paramètre" in French translation.
+ Merci, les Titeps!
+ * Drop hardcoded "en.html" suffix in apt-secure manpage.
+ Thanks to David Prevot.
+
+ -- Christian Perrier <bubulle@debian.org> Tue, 27 Mar 2012 20:31:38 +0200
+
+apt (0.8.15.10) unstable; urgency=high
+
+ [ David Kalnischkies ]
+ * algorithms.cc:
+ - show a debug why a package was kept by ResolveByKeep()
+ * doc/manpage-style.xml:
+ - put <brackets> around email addresses
+ * doc/po/de.po:
+ - apply typo-fix from Michael Basse, thanks! (LP: #900770)
+ * apt-pkg/acquire-item.cc:
+ - remove 'old' InRelease file if we can't get a new one before
+ proceeding with Release.gpg to avoid the false impression of a still
+ trusted repository by a (still present) old InRelease file.
+ Thanks to Simon Ruderich for reporting this issue! (CVE-2012-0214)
+
+ [ Chris Leick ]
+ * German manpage translation update
+ * doc/*.xml:
+ - find and fix a bunch of misspellings
+
+ [ Program translation updates ]
+ * Dutch (Jeroen Schot). Closes: #652230
+ * Slovak (Ivan Masar). Closes: #652985
+ * Russian (Yuri Kozlov). Closes: #654844
+ * Hungarian (Gabor Kelemen). Closes: #655238
+ * Polish (Michał Kułach). Closes: #656908
+ * Danish (Joe Hansen). Closes: #658643
+ * French: replace "étiquetage" by "épinglage" for "pinning"
+
+ [ Michael Vogt ]
+ * merged patch from lp:~uusijani/apt/uusi-branch:
+ Correct fi translation for hash sum mismatches (lp:420403)
+ Thanks to Jani Uusitalo
+
+ -- Michael Vogt <mvo@debian.org> Tue, 06 Mar 2012 14:14:26 +0100
+
+apt (0.8.15.9) unstable; urgency=low
+
+ [ David Kalnischkies ]
+ * Symbol file update
+ * doc/apt-get.8.xml:
+ - change wording of autoremove description as suggested
+ by Robert Simmons, thanks! (Closes: #641490)
+ * apt-pkg/deb/dpkgpm.cc:
+ - use std::vector instead of fixed size arrays to store args and
+ multiarch-packagename strings
+ - load the dpkg base arguments only one time and reuse them later
+ * cmdline/apt-get.cc:
+ - follow Provides in the evaluation of saving candidates, too, for
+ satisfying garbage package dependencies (Closes: #640590)
+ * apt-pkg/algorithms.cc:
+ - if a package is garbage, don't try to save it with FixByInstall
+ * apt-pkg/init.cc:
+ - silently ignore *.orig and *.save files by default
+ * apt-pkg/policy.cc:
+ - accept generic release pin expressions again in -t (Closes: #644166)
+ * apt-pkg/deb/debmetaindex.cc:
+ - none is a separator, not a language: no need for Index (Closes: #624218)
+ * apt-pkg/aptconfiguration.cc:
+ - do not builtin languages only if none is forced (Closes: #643787)
+ * doc/apt.conf.5.xml:
+ - apply spelling fix by Kevin Lyda, thanks! (Closes: #644104)
+
+ [ Christian Perrier ]
+ * Fix spelling error (sensée) in French translation. Thanks
+ to Corentin Le Gall for spotting it.
+
+ [ Colin Watson ]
+ * ftparchive/cachedb.cc:
+ - fix buffersize in bytes2hex
+
+ [ Michael Vogt ]
+ * ftparchive/cachedb.cc:
+ - make buffer fully dynamic (thanks to Colin Watson)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 14 Oct 2011 12:00:09 +0200
+
+apt (0.8.15.8) unstable; urgency=low
+
+ [ David Kalnischkies ]
+ * cmdline/apt-get.cc:
+ - output list of virtual package providers to c1out in -q=1
+ instead of /dev/null to unbreak sbuild (LP: #816155)
+
+ [ Michael Vogt ]
+ * apt-pkg/contrib/configuration.cc:
+ - fix double delete (LP: #848907)
+ - ignore only the invalid regexp instead of all options
+
+ -- Michael Vogt <mvo@debian.org> Wed, 14 Sep 2011 12:08:25 +0200
+
+apt (0.8.15.7) unstable; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/packagemanager.cc, apt-pkg/pkgcache.cc:
+ - ignore "self"-conflicts for all architectures of a package
+ instead of just for the architecture of the package look at
+ in the ordering of installations, too (LP: #802901)
+ - M-A:same lockstep unpack should operate on installed
+ packages first (LP: #835625)
+ * test/*
+ - reorganize the various testcases and helper we have and
+ integrate them better into the buildsystem
+ - run the test/libapt testcases at package build-time
+ * debian/apt.symbols:
+ - add the newly added symbols since 0.8.15.3
+ * cmdline/apt-get.cc:
+ - remove the binary caches in 'apt-get clean' as it is the first
+ thing recommend by many supporters in case of APT segfaults
+ - remove the caches in 'apt-get update', too, as they will be
+ invalid in most cases anyway
+ * apt-pkg/acquire-item.cc:
+ - if no Release.gpg file is found try to verify with hashes,
+ but do not fail if a hash can't be found
+ * apt-pkg/acquire.cc:
+ - non-existing directories are by definition clean
+ * cmdline/apt-key:
+ - if command is 'add' do not error out if the specified
+ keyring doesn't exist, it will be created by gpg
+ * apt-pkg/orderlist.cc:
+ - prefer visiting packages marked for deletion in VisitProvides
+ if we are operating on a negative dependency so that we can
+ deal early with the fallout of this remove
+ * apt-pkg/indexrecords.cc:
+ - fix Acquire::Max-ValidTime option by interpreting it really
+ as seconds as specified in the manpage and not as days
+ - add an Acquire::Min-ValidTime option (Closes: #640122)
+ * doc/apt.conf.5.xml:
+ - reword Acquire::Max-ValidTime documentation to make clear
+ that it doesn't provide the new Min-ValidTime functionality
+
+ -- Michael Vogt <mvo@debian.org> Mon, 12 Sep 2011 16:38:46 +0200
+
+apt (0.8.15.6) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * apt-pkg/contrib/fileutl.{cc,h}:
+ - add GetModificationTime() helper
+ * apt-pkg/pkgcachegen.cc:
+ - regenerate the cache if the sources.list changes to ensure
+ that changes in the ordering there will be honored by apt
+ * apt-pkg/sourcelist.{cc,h}:
+ - add pkgSourceList::GetLastModifiedTime() helper
+ * apt-pkg/pkgcachegen.{cc,h}:
+ - use ref-to-ptr semantic in NewDepends() to ensure that the
+ libapt does not segfault if the cache is remapped in between
+ (LP: #812862)
+ - fix crash when P.Arch() was used but the cache got remapped
+ * test/integration/test-hashsum-verification:
+ - add regression test for hashsum verification
+ * apt-pkg/acquire-item.cc:
+ - if no Release.gpg file is found, still load the hashes for
+ verification (closes: #636314) and add test
+
+ [ David Kalnischkies ]
+ * lots of cppcheck fixes
+
+ -- Michael Vogt <mvo@debian.org> Mon, 15 Aug 2011 09:20:35 +0200
+
+apt (0.8.15.5) unstable; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/deb/deblistparser.cc:
+ - do not assume that the last char on a line is a \n (Closes: #633350)
+
+ -- Michael Vogt <mvo@debian.org> Thu, 28 Jul 2011 16:49:15 +0200
+
+apt (0.8.15.4) unstable; urgency=low
+
+ [ David Miller ]
+ * apt-pkg/contrib/sha1.cc:
+ - fix illegally casts of on-stack buffer to a type requiring more
+ alignment than it has resulting in segfaults on sparc (Closes: #634696)
+
+ [ Michael Vogt ]
+ * apt-pkg/contrib/cdromutl.cc:
+ - fix escape problem when looking for the mounted devices
+ * apt-pkg/contrib/strutl.{h,cc}, test/libapt/strutil_test.cc:
+ - add new DeEscapeString() similar to DeQuoteString but
+ unescape character escapes like \0XX and \xXX (plus added
+ test)
+ * refresh po/*
+
+ -- Michael Vogt <mvo@debian.org> Tue, 26 Jul 2011 12:12:27 +0200
+
+apt (0.8.15.3) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * apt-pkg/acquire-item.cc:
+ - improve error message for a expired Release file
+ * apt-pkg/algorithms.cc:
+ - Hold back packages that would enter "policy-broken" state on upgrade
+ when doing a "apt-get upgrade"
+ * cmdline/apt-get.cc:
+ - fix missing download progress in apt-get download
+
+ [ David Kalnischkies ]
+ * apt-pkg/pkgcachegen.cc:
+ - fallback to memory if file is not writeable even if access()
+ told us the opposite before (e.g. in fakeroot 1.16) (Closes: #630591)
+ * doc/sources.list.5.xml:
+ - document available [options] for sources.list entries (Closes: 632441)
+ * doc/apt.conf.5.xml:
+ - document APT::Architectures list (Closes: #612102)
+ * cmdline/apt-get.cc:
+ - restore all important dependencies for garbage packages (LP: #806274)
+ - do not require unused partial dirs in 'source' (Closes: #633510)
+ - buildconflicts effect all architectures
+ - implement MultiarchCross for build-dep and source (Closes: #632221)
+ * apt-pkg/init.cc:
+ - use CndSet in pkgInitConfig (Closes: #629617)
+ * apt-pkg/depcache.cc:
+ - change default of APT::AutoRemove::SuggestsImportant to true
+ * cmdline/apt-key:
+ - use a tmpfile instead of /etc/apt/secring.gpg (Closes: #632596)
+ * debian/apt.postinst:
+ - remove /etc/apt/secring.gpg if it is an empty file
+ * doc/apt-cache.8.xml:
+ - apply madison typofix from John Feuerstein, thanks! (Closes: #633455)
+ * apt-pkg/policy.cc:
+ - emit an error on unknown APT::Default-Release value (Closes: #407511)
+ * apt-pkg/aptconfiguration.cc:
+ - ensure that native architecture is if not specified otherwise the
+ first architecture in the Architectures vector
+ * apt-pkg/deb/deblistparser.cc:
+ - Strip only :any and :native if MultiArch should be stripped as it is
+ save to ignore them in non-MultiArch contexts but if the dependency
+ is a specific architecture (and not the native) do not strip
+
+ -- Michael Vogt <mvo@debian.org> Mon, 25 Jul 2011 15:04:43 +0200
+
+apt (0.8.15.2) unstable; urgency=high
+
+ * fix from David Kalnischkies for the InRelease gpg verification
+ code (LP: #784473)
+
+ -- Michael Vogt <mvo@debian.org> Tue, 12 Jul 2011 11:54:47 +0200
+
+apt (0.8.15.1) unstable; urgency=low
+
+ [ David Kalnischkies ]
+ * doc/makefile:
+ - create doxygen directory to avoid depending on magic (Closes: #628799)
+ * cmdline/apt-key:
+ - explicitly state that net-update is not supported if no url is set
+ - require to be root for add, rm, update and net-update
+ - clarify update vs. net-update in different distros (Closes: #632043)
+ * debian/apt.symbols:
+ - forgot 'mips' in the list for all architecture dependent symbols
+ - comment out gcc-4.5 specific symbols as gcc-4.6 is now default
+ - the symbol for PrintStatus() is architecture dependent
+ * apt-pkg/policy.cc:
+ - do not segfault in pinning if a package with this name doesn't exist.
+ Thanks to Ferdinand Thommes for the report!
+ - Defaults is a vector of Pin not of PkgPin
+ - ensure that only the first specific stanza for a package is used
+ - save all stanzas which had no effect in Unmatched
+ - allow package:architecure in Package:
+
+ -- Michael Vogt <mvo@debian.org> Thu, 30 Jun 2011 10:05:36 +0200
+
+apt (0.8.15) unstable; urgency=low
+
+ [ Julian Andres Klode ]
+ * apt-pkg/depcache.cc:
+ - Really release action groups only once (Closes: #622744)
+ - Make purge work again for config-files (LP: #244598) (Closes: #150831)
+ * apt-pkg/acquire-item.cc:
+ - Reject files known to be invalid (LP: #346386) (Closes: #627642)
+ * debian/apt.cron.daily:
+ - Check power after wait, patch by manuel-soto (LP: #705269)
+ * debian/control:
+ - Move ${shlibs:Depends} to Pre-Depends, as we do not want APT
+ unpacked if a library is too old and thus break upgrades
+ * doc/apt-key.8.xml:
+ - Document apt-key net-update (LP: #192810)
+
+ [ Christian Perrier ]
+ * Galician translation update (Miguel Anxo Bouzada). Closes: #626505
+ * Italian translation update (Milo Casagrande). Closes: #627834
+ * German documentation translation update (Chris Leick). Closes: #629949
+ * Catalan translation update (Jordi Mallach). Closes: #630657
+
+ [ David Kalnischkies ]
+ * fix a bunch of cppcheck warnings/errors based on a patch by
+ Niels Thykier, thanks! (Closes: #622805)
+ * apt-pkg/depcache.cc:
+ - really include 'rc' packages in the delete count by fixing a
+ typo which exists since 1999 in the source… (LP: #761175)
+ - if critical or-group can't be satisfied, exit directly.
+ * apt-pkg/acquire-method.cc:
+ - write directly to stdout instead of creating the message in
+ memory first before writing to avoid hitting limits
+ - fix order of CurrentURI and UsedMirror in Status() and Log()
+ * apt-pkg/orderlist.cc:
+ - let VisitRProvides report if the calls were successful
+ * apt-pkg/deb/dpkgpm.cc:
+ - replace obsolete usleep with nanosleep
+ - remove invalid pkgcache.bin and rebuild it if possible
+ - log reinstall commands in history.log
+ * debian/apt{,-utils}.symbols:
+ - update both experimental symbol-files to reflect 0.8.14 state
+ * debian/rules:
+ - remove unused embedded jquery by doxygen from libapt-pkg-doc
+ * cmdline/apt-mark.cc:
+ - reimplement apt-mark in c++
+ - provide a 'showmanual' command (Closes: #582791)
+ - provide a 'dpkg --set-selections' wrapper to set/release holds
+ * cmdline/apt-get.cc:
+ - deprecate mostly undocumented 'markauto' in favor of 'apt-mark'
+ * cmdline/apt-cache.cc:
+ - deprecate mostly undocumented 'showauto' in favor of 'apt-mark'
+ * apt-pkg/pkgcache.cc:
+ - really ignore :arch in FindPkg() in non-multiarch environment
+ * doc/po/de.po:
+ - undo the translation of the command 'dump' in manpage of apt-config
+ as report by Burghard Grossmann on debian-l10n-german, thanks!
+ * apt-pkg/deb/debmetaindex.cc:
+ - do not download TranslationIndex if no Translation-* will be
+ downloaded later on anyway (Closes: #624218)
+ * test/versions.lst:
+ - disable obscure version number tests with versions dpkg doesn't
+ allow any more as they don't start with a number
+ * apt-pkg/acquire-worker.cc:
+ - print filename in the unmatching size warning (Closes: #623137)
+ * apt-pkg/acquire-item.cc:
+ - apply fix for poorly worded 'locate file' error message from
+ Ben Finney, thanks! (Closes: #623171)
+ * methods/http.cc:
+ - add config option to ignore a closed stdin to be able to easily
+ use the method as a simple standalone downloader
+ - Location header in redirects should be absolute URI, but some
+ servers just send an absolute path so still deal with it properly
+ - dequote URL taken from Location in redirects as we will otherwise
+ quote an already quoted string in the request later (Closes: #602412)
+ * apt-pkg/contrib/netrc.cc:
+ - replace non-posix gnu-extension strdupa with strdup
+ * apt-pkg/packagemanager.cc:
+ - ensure for Multi-Arch:same packages that they are unpacked in
+ lock step even in immediate configuration (Closes: #618288)
+ * apt-pkg/init.cc:
+ - don't set deprecated APT::Acquire::Translation, thanks Jörg Sommer!
+ * cmdline/apt-config.cc:
+ - show Acquire::Languages and APT::Architectures settings
+ in 'dump' (Closes: 626739)
+ * apt-pkg/orderlist.cc:
+ - ensure that an old version of a package with a provides can
+ never satisfy a dependency of a newer version of this package
+
+ [ Michael Vogt ]
+ * methods/mirror.cc:
+ - ignore lines starting with "#" in the mirror file
+ - ignore non http urls in the mirrors
+ - append the dist (e.g. sid, wheezy) as a query string when
+ asking for a suitable mirror
+ * apt-pkg/deb/deblistparser.cc:
+ - include all known languages when building the apt cache
+ (LP: #794907)
+ * apt-pkg/deb/debindexfile.cc:
+ - remove some no longer valid checks for "TranslationsAvailable()"
+
+ [ Kenneth Solbø Andersen ]
+ * apt-pkg/deb/dpkgpm.cc:
+ - set permissions of term.log to root.adm and 644 (LP: #404724)
+
+ [ Chris Leick ]
+ * various typo and syntax corrections in doc/*.xml
+
+ -- Michael Vogt <mvo@debian.org> Tue, 28 Jun 2011 18:00:48 +0200
+
+apt (0.8.15~exp3) experimental; urgency=low
+
+ * debian/control:
+ - add Breaks: 0.8.15~exp3) for libapt-pkg4.10 and
+ libapt-inst1.2 (thanks to Jonathan Nieder, closes: #630214)
+ - use depends for the ${shlibs:Depends} to make the breaks work
+
+ -- Michael Vogt <mvo@debian.org> Fri, 17 Jun 2011 21:51:41 +0200
+
+apt (0.8.15~exp2) experimental; urgency=low
+
+ * debian/control:
+ - fix incorrect Replaces (closes: #630204) for libapt-inst1.2
+
+ -- Michael Vogt <mvo@debian.org> Wed, 15 Jun 2011 16:51:14 +0200
+
+apt (0.8.15~exp1) experimental; urgency=low
+
+ [ Julian Andres Klode ]
+ * apt-pkg/depcache.cc:
+ - Really release action groups only once (Closes: #622744)
+ - Make purge work again for config-files (LP: #244598) (Closes: #150831)
+ * apt-pkg/acquire-item.cc:
+ - Reject files known to be invalid (LP: #346386) (Closes: #627642)
+ * debian/apt.cron.daily:
+ - Check power after wait, patch by manuel-soto (LP: #705269)
+ * debian/control:
+ - Move ${shlibs:Depends} to Pre-Depends, as we do not want APT
+ unpacked if a library is too old and thus break upgrades
+ * doc/apt-key.8.xml:
+ - Document apt-key net-update (LP: #192810)
+
+ [ Christian Perrier ]
+ * Galician translation update (Miguel Anxo Bouzada). Closes: #626505
+ * Italian translation update (Milo Casagrande). Closes: #627834
+ * German documentation translation update (Chris Leick). Closes: #629949
+
+ [ David Kalnischkies ]
+ * fix a bunch of cppcheck warnings/errors based on a patch by
+ Niels Thykier, thanks! (Closes: #622805)
+ * apt-pkg/depcache.cc:
+ - really include 'rc' packages in the delete count by fixing a
+ typo which exists since 1999 in the source… (LP: #761175)
+ - if critical or-group can't be satisfied, exit directly.
+ * apt-pkg/acquire-method.cc:
+ - write directly to stdout instead of creating the message in
+ memory first before writing to avoid hitting limits
+ - fix order of CurrentURI and UsedMirror in Status() and Log()
+ * apt-pkg/orderlist.cc:
+ - let VisitRProvides report if the calls were successful
+ * apt-pkg/deb/dpkgpm.cc:
+ - replace obsolete usleep with nanosleep
+ * debian/apt{,-utils}.symbols:
+ - update both experimental symbol-files to reflect 0.8.14 state
+ * debian/rules:
+ - remove unused embedded jquery by doxygen from libapt-pkg-doc
+ * cmdline/apt-mark.cc:
+ - reimplement apt-mark in c++
+ - provide a 'showmanual' command (Closes: #582791)
+ - provide a 'dpkg --set-selections' wrapper to set/release holds
+ * cmdline/apt-get.cc:
+ - deprecate mostly undocumented 'markauto' in favor of 'apt-mark'
+ * cmdline/apt-cache.cc:
+ - deprecate mostly undocumented 'showauto' in favor of 'apt-mark'
+ * apt-pkg/pkgcache.cc:
+ - really ignore :arch in FindPkg() in non-multiarch environment
+ * doc/po/de.po:
+ - undo the translation of the command 'dump' in manpage of apt-config
+ as report by Burghard Grossmann on debian-l10n-german, thanks!
+ * apt-pkg/deb/debmetaindex.cc:
+ - do not download TranslationIndex if no Translation-* will be
+ downloaded later on anyway (Closes: #624218)
+ * test/versions.lst:
+ - disable obscure version number tests with versions dpkg doesn't
+ allow any more as they don't start with a number
+ * apt-pkg/acquire-worker.cc:
+ - print filename in the unmatching size warning (Closes: #623137)
+ * apt-pkg/acquire-item.cc:
+ - apply fix for poorly worded 'locate file' error message from
+ Ben Finney, thanks! (Closes: #623171)
+ * methods/http.cc:
+ - add config option to ignore a closed stdin to be able to easily
+ use the method as a simple standalone downloader
+ - Location header in redirects should be absolute URI, but some
+ servers just send an absolute path so still deal with it properly
+ - dequote URL taken from Location in redirects as we will otherwise
+ quote an already quoted string in the request later (Closes: #602412)
+ * apt-pkg/contrib/netrc.cc:
+ - replace non-posix gnu-extension strdupa with strdup
+ * apt-pkg/packagemanager.cc:
+ - ensure for Multi-Arch:same packages that they are unpacked in
+ lock step even in immediate configuration (Closes: #618288)
+
+ [ Michael Vogt ]
+ * methods/mirror.cc:
+ - ignore lines starting with "#" in the mirror file
+ - ignore non http urls in the mirrors
+ - append the dist (e.g. sid, wheezy) as a query string when
+ asking for a suitable mirror
+ * debian/control:
+ - add libapt-pkg4.10 and libapt-inst1.2 library packages
+
+ -- Michael Vogt <mvo@debian.org> Fri, 10 Jun 2011 15:32:07 +0200
+
+apt (0.8.14.2) UNRELEASED; urgency=low
+
+ [ Julian Andres Klode ]
+ * apt-pkg/depcache.cc:
+ - Really release action groups only once (Closes: #622744)
+ - Make purge work again for config-files (LP: #244598) (Closes: #150831)
+ * debian/apt.cron.daily:
+ - Check power after wait, patch by manuel-soto (LP: #705269)
+ * debian/control:
+ - Move ${shlibs:Depends} to Pre-Depends, as we do not want APT
+ unpacked if a library is too old and thus break upgrades
+ * doc/apt-key.8.xml:
+ - Document apt-key net-update (LP: #192810)
+
+ [ Christian Perrier ]
+ * Galician translation update (Miguel Anxo Bouzada). Closes: #626505
+
+ [ David Kalnischkies ]
+ * fix a bunch of cppcheck warnings/errors based on a patch by
+ Niels Thykier, thanks! (Closes: #622805)
+ * apt-pkg/depcache.cc:
+ - really include 'rc' packages in the delete count by fixing a
+ typo which exists since 1999 in the source… (LP: #761175)
+ - if critical or-group can't be satisfied, exit directly.
+ * apt-pkg/acquire-method.cc:
+ - write directly to stdout instead of creating the message in
+ memory first before writing to avoid hitting limits
+ - fix order of CurrentURI and UsedMirror in Status() and Log()
+ * apt-pkg/orderlist.cc:
+ - let VisitRProvides report if the calls were successful
+ * apt-pkg/deb/dpkgpm.cc:
+ - replace obsolete usleep with nanosleep
+ * debian/apt{,-utils}.symbols:
+ - update both experimental symbol-files to reflect 0.8.14 state
+ * debian/rules:
+ - remove unused embedded jquery by doxygen from libapt-pkg-doc
+ * cmdline/apt-mark.cc:
+ - reimplement apt-mark in c++
+ - provide a 'showmanual' command (Closes: #582791)
+ - provide a 'dpkg --set-selections' wrapper to set/release holds
+ * cmdline/apt-get.cc:
+ - deprecate mostly undocumented 'markauto' in favor of 'apt-mark'
+ * cmdline/apt-cache.cc:
+ - deprecate mostly undocumented 'showauto' in favor of 'apt-mark'
+ * apt-pkg/pkgcache.cc:
+ - really ignore :arch in FindPkg() in non-multiarch environment
+ * doc/po/de.po:
+ - undo the translation of the command 'dump' in manpage of apt-config
+ as report by Burghard Grossmann on debian-l10n-german, thanks!
+ * apt-pkg/deb/debmetaindex.cc:
+ - do not download TranslationIndex if no Translation-* will be
+ downloaded later on anyway (Closes: #624218)
+ * test/versions.lst:
+ - disable obscure version number tests with versions dpkg doesn't
+ allow any more as they don't start with a number
+ * apt-pkg/acquire-worker.cc:
+ - print filename in the unmatching size warning (Closes: #623137)
+ * apt-pkg/acquire-item.cc:
+ - apply fix for poorly worded 'locate file' error message from
+ Ben Finney, thanks! (Closes: #623171)
+ * methods/http.cc:
+ - add config option to ignore a closed stdin to be able to easily
+ use the method as a simple standalone downloader
+ - Location header in redirects should be absolute URI, but some
+ servers just send an absolute path so still deal with it properly
+ - dequote URL taken from Location in redirects as we will otherwise
+ quote an already quoted string in the request later (Closes: #602412)
+ * apt-pkg/contrib/netrc.cc:
+ - replace non-posix gnu-extension strdupa with strdup
+ * apt-pkg/packagemanager.cc:
+ - ensure for Multi-Arch:same packages that they are unpacked in
+ lock step even in immediate configuration (Closes: #618288)
+
+ -- Michael Vogt <mvo@debian.org> Mon, 16 May 2011 14:57:52 +0200
+
+apt (0.8.14.1) unstable; urgency=low
+
+ * apt-pkg/acquire-item.cc:
+ - Only try to rename existing Release files (Closes: #622912)
+
+ -- Julian Andres Klode <jak@debian.org> Sat, 16 Apr 2011 14:36:10 +0200
+
+apt (0.8.14) unstable; urgency=low
+
+ [ Julian Andres Klode ]
+ * apt-pkg/indexcopy.cc:
+ - Use RealFileExists() instead of FileExists(), allows amongst other
+ things a directory named Sources to exist on a CD-ROM (LP: #750694).
+ * apt-pkg/acquire-item.cc:
+ - Use Release files even if they cannot be verified (LP: #704595)
+ * cmdline/apt-get.cc:
+ - Do not install recommends for build-dep (Closes: #454479) (LP: #245273)
+ * apt-pkg/deb/deblistparser.cc:
+ - Handle no space before "[" in build-dependencies (LP: #72344)
+ * apt-pkg/policy.cc:
+ - Allow pinning by glob() expressions, and regular expressions
+ surrounded by slashes (the "/" character) (LP: #399474)
+ (Closes: #121132)
+ * debian/control:
+ - Set Standards-Version to 3.9.2
+
+ [ Michael Vogt ]
+ * mirror method:
+ - do not crash if the mirror file fails to download
+ * apt-pkg/aptconfiguration.cc:
+ - fix comparing for a empty string
+ * debian/apt.cron.daily:
+ - run unattended-upgrades even if there was a error during
+ the apt-get update (LP: #676295)
+
+ [ David Kalnischkies ]
+ * apt-pkg/pkgcache.cc:
+ - use the native Architecture stored in the cache header instead of
+ loading it from configuration as suggested by Julian Andres Klode
+
+ -- Julian Andres Klode <jak@debian.org> Fri, 15 Apr 2011 14:28:15 +0200
+
+apt (0.8.13.2) unstable; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/deb/dpkgpm.cc:
+ - skip --configure if all packages disappeared
+ * apt-pkg/vendor.cc, apt-pkg/vendorlist.cc:
+ - mark them as deprecated as they are unused
+ * apt-pkg/deb/deblistparser.h:
+ - enable StripMultiArch by default for ParseDepends
+ * debian/apt.conf.autoremove:
+ - adapt to new gnumach kernel package naming (Closes: #619337)
+ * doc/apt_preferences.5.xml:
+ - correct typo spotted by Charles Plessy (Closes: #619088)
+ - document ButAutomaticUpgrades together with NotAutomatic
+ as suggested by Charles Plessy (Closes: #619083)
+ * apt-pkg/depcache.cc:
+ - remove pseudo handling leftover from SetReInstall
+ - do not change protected packages in autoinstall (Closes: #618848)
+ * apt-pkg/pkgcachegen.cc:
+ - make "all"->"native" an implementation detail of NewPackage
+ rather than rewrite it in higher methods
+ * apt-pkg/cacheiterator.h:
+ - return "all" instead of native architecture without breaking the abi
+ (too much) by extending enum instead of using bitflags (LP: #733741)
+ * apt-pkg/aptconfiguration.cc:
+ - use dpkg --print-foreign-architectures to get multiarch configuration
+ if non is specified with APT::Architectures (Closes: #612958)
+ * cmdline/apt-get.cc:
+ - do not show simulation notice for non-root commands (Closes: #619072)
+ - be able to disable resolver with APT::Get::CallResolver and disable
+ auto installation with APT::Get::AutoSolving
+ * apt-pkg/deb/deblistparser.cc:
+ - create foo:any provides for all architectures for an allowed package
+
+ -- Michael Vogt <mvo@debian.org> Tue, 05 Apr 2011 09:40:28 +0200
+
+apt (0.8.13.1) unstable; urgency=low
+
+ * apt-pkg/acquire-item.cc: Use stat buffer if stat was
+ successful, not if it failed (Closes: #620546)
+
+ -- Julian Andres Klode <jak@debian.org> Sat, 02 Apr 2011 20:55:35 +0200
+
+apt (0.8.13) unstable; urgency=low
+
+ [ Thorsten Spindler ]
+ * methods/rsh.cc
+ - fix rsh/ssh option parsing (LP: #678080), thanks to
+ Ville Mattila
+
+ [ Michael Vogt ]
+ * apt-pkg/acquire-item.cc:
+ - mark pkgAcqIndexTrans as Index-File to avoid asking the
+ user to insert the CD on each apt-get update
+ * po/sl.po:
+ - updated, thanks to Andrej Znidarsic
+ * mirror method:
+ - when downloading data, show the mirror being used
+ - randomize mirror list after download in a host specific way
+ to ensure that the load is evenly spread across the mirrors
+ - fix some missing "Fail-Ignore"
+
+ -- Michael Vogt <mvo@debian.org> Wed, 16 Mar 2011 08:04:42 +0100
+
+apt (0.8.12) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * apt-pkg/deb/debindexfile.cc:
+ - ignore missing deb-src files in /var/lib/apt/lists, thanks
+ to Thorsten Spindler (LP: #85590)
+ * apt-pkg/contrib/fileutl.cc, apt-pkg/deb/dpkgpm.cc:
+ - honor Dpkg::Chroot-Directory in the RunScripts*() methods
+ * apt-pkg/contrib/cdromutl.{cc,h}, apt-pkg/cdrom.{cc,h}:
+ - deal with missing FSTAB_DIR when using libudev to discover cdrom
+ - add experimental APT::cdrom::CdromOnly option (on by default).
+ When this is set to false apt-cdrom will handle any removable
+ device (like a usb-stick) as a "cdrom/dvd" source
+
+ [ Christian Perrier ]
+ * Fix error in French translation of manpages (apt_preferences(5)).
+ Merci, Rémi Vanicat. Closes: #613689
+ * Complete French manpage translation
+ * Italian translation update (Milo Casagrande). Closes: #614395
+
+ [ David Kalnischkies ]
+ * ftparchive/multicompress.cc, apt-inst/deb/debfile.cc:
+ - support xz compressor to create xz-compressed Indexes and be able
+ to open data.tar.xz files
+ - load the supported compressors from configuration
+ * ftparchive/writer.cc:
+ - ensure that Date and Valid-Until time strings are not localised
+ - add options to disable specific checksums for Indexes
+ - include xz-compressed Packages and Sources files in Release file
+ * apt-pkg/aptconfiguration.cc:
+ - support download of xz-compressed indexes files
+ - support adding new compressors by configuration
+ * apt-pkg/deb/debsrcrecords.cc:
+ - support xz-compressed source v3 debian.tar files
+ - support every compression we have a compressor configured
+ * ftparchive/contents.cc:
+ - remove ExtractArchive codecopy from apt-inst/deb/debfile.cc
+ * apt-inst/deb/debfile.cc:
+ - support data.tar's compressed with any configured compressor
+ * cmdline/apt-get.cc:
+ - reinstall dependencies of reinstalled "garbage" (Closes: #617257)
+
+ [ Steve Langasek ]
+ * apt-pkg/deb/dpkgpm.cc:
+ - make sure that for multiarch packages, we are passing the full
+ qualified package name to dpkg for removals. (Closes: #614298)
+ * Remove the "pseudopackage" handling of Architecture: all packages for
+ Multi-Arch; instead, Arch: all packages only satisfy dependencies for
+ the native arch, except where the Arch: all package is declared
+ Multi-Arch: foreign. (Closes: #613584)
+
+ -- Michael Vogt <mvo@debian.org> Thu, 10 Mar 2011 14:46:48 +0100
+
+apt (0.8.11.5) unstable; urgency=low
+
+ [ Christian Perrier ]
+ * Add missing dot in French translation of manpages. Merci, Olivier
+ Humbert.
+ * French translation update
+ * French manpages translation update
+
+ [ David Kalnischkies ]
+ * apt-pkg/depcache.cc:
+ - party revert fix in 0.8.11.2 which marked all packages as manual
+ installed if the FromUser bit is set in the MarkInstall call.
+ The default for this bit is true and aptitude depends on the old
+ behavior so the package is only marked as manual if its not marked
+ ("old" behavior) or if automatic installation is enabled - which
+ aptitude disables always (see also #613775)
+
+ -- David Kalnischkies <kalnischkies@gmail.com> Thu, 17 Feb 2011 15:16:31 +0100
+
+apt (0.8.11.4) unstable; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/contrib/error.cc:
+ - ensure that va_list is not invalid in second try
+ * cmdline/apt-get.cc:
+ - don't remove new dependencies of garbage packages (Closes: #613420)
+
+ [ Michael Vogt ]
+ * test/integration/*
+ - fix dashish in the integration tests
+
+ -- Michael Vogt <mvo@debian.org> Wed, 16 Feb 2011 14:36:03 +0100
+
+apt (0.8.11.3) unstable; urgency=low
+
+ * apt-pkg/contrib/fileutl.cc:
+ - really detect bigendian machines by including config.h,
+ so we can really (Closes: #612986)
+ * apt-pkg/contrib/mmap.cc:
+ - Base has as 'valid' failure states 0 and -1 so add a simple
+ validData method to check for failure states
+
+ -- David Kalnischkies <kalnischkies@gmail.com> Mon, 14 Feb 2011 16:58:03 +0100
+
+apt (0.8.11.2) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * merged lp:~evfool/apt/fix641673:
+ - String-fix in the source and the translations for the grammatical
+ mistake reported in bug LP: #641673, thanks to Robert Roth
+ * merged lp:~evfool/apt/fix418552:
+ - Grammar fix for bug LP: #418552, thanks to Robert Roth
+
+ [ David Kalnischkies ]
+ * cmdline/apt-get.cc:
+ - add --install-suggests option (Closes: #473089)
+ * apt-pkg/depcache.cc:
+ - mark a package which was requested to be installed on commandline
+ always as manual regardless if it is already marked or not as the
+ marker could be lost later by the removal of rdepends (Closes: #612557)
+ * methods/rred.cc:
+ - read patch into MMap only if we work on uncompressed patches
+ - update size of dynamic MMap as we write in from the outside
+ * apt-pkg/contrib/mmap.cc:
+ - do not try to free the mapping if its is unset
+ * apt-pkg/contrib/fileutl.cc:
+ - reorder the loaded filesize bytes for big endian (Closes: #612986)
+ Thanks to Jörg Sommer for the detailed analyse!
+
+ -- Michael Vogt <mvo@debian.org> Mon, 14 Feb 2011 12:07:18 +0100
+
+apt (0.8.11.1) unstable; urgency=low
+
+ [ Stefan Lippers-Hollmann ]
+ * cmdline/apt-key:
+ - fix root test which prevented setting of trustdb-name
+ which lets gpg fail if it adds/remove keys from trusted.gpg
+ as it tries to open the (maybe) not existent /root/.gnupg
+
+ [ David Kalnischkies ]
+ * debian/apt.symbols:
+ - add more arch dependent symbols
+
+ -- Michael Vogt <mvo@debian.org> Wed, 09 Feb 2011 17:49:59 +0100
+
+apt (0.8.11) unstable; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/depcache.cc:
+ - add SetCandidateRelease() to set a candidate version and
+ the candidates of dependencies if needed to a specified
+ release (Closes: #572709)
+ - allow conflicts in the same group again (Closes: #612099)
+ * cmdline/apt-get.cc:
+ - if --print-uris is used don't setup downloader as we don't need
+ progress, lock nor the directories it would create otherwise
+ - show dependencies of essential packages which are going to remove
+ only if they cause the remove of this essential (Closes: #601961)
+ - keep not installed garbage packages uninstalled instead of showing
+ in the autoremove section and installing those (Closes: #604222)
+ - change pkg/release behavior to use the new SetCandidateRelease
+ so installing packages from experimental or backports is easier
+ - really do not show packages in the extra section if they were
+ requested on the commandline, e.g. with a modifier (Closes: #184730)
+ - always do removes first and set not installed remove packages
+ on hold to prevent temporary installation later (Closes: #549968)
+ * debian/control:
+ - add Vcs-Browser now that loggerhead works again (Closes: #511168)
+ - depend on debhelper 7 to raise compat level
+ - depend on dpkg-dev (>= 1.15.8) to have c++ symbol mangling
+ * apt-pkg/contrib/fileutl.cc:
+ - add a RealFileExists method and check that your configuration files
+ are real files to avoid endless loops if not (Closes: #604401)
+ - ignore non-regular files in GetListOfFilesInDir (Closes: #594694)
+ * apt-pkg/contrib/weakptr.h:
+ - include stddefs.h to fix compile error (undefined NULL) with gcc-4.6
+ * methods/https.cc:
+ - fix CURLOPT_SSL_VERIFYHOST by really passing 2 to it if enabled
+ * deb/dpkgpm.cc:
+ - fix popen/fclose mismatch reported by cppcheck. Thanks to Petter
+ Reinholdtsen for report and patch! (Closes: #607803)
+ * doc/apt.conf.5.xml:
+ - fix multipl{y,e} spelling error reported by Jakub Wilk (Closes: #607636)
+ * apt-inst/contrib/extracttar.cc:
+ - let apt-utils work with encoded tar headers if uid/gid are large.
+ Thanks to Nobuhiro Hayashi for the patch! (Closes: #330162)
+ * apt-pkg/cacheiterator.h:
+ - do not segfault if cache is not build (Closes: #254770)
+ * doc/apt-get.8.xml:
+ - remove duplicated mentioning of --install-recommends
+ * doc/sources.list.5.xml:
+ - remove obsolete references to non-us (Closes: #594495)
+ - a notice is printed for ignored files (Closes: #597615)
+ * debian/rules:
+ - use -- instead of deprecated -u for dh_gencontrol
+ - remove shlibs.local creation and usage
+ - show differences in the symbol files, but never fail
+ * pre-build.sh:
+ - remove as it is not needed for a working 'bzr bd'
+ * debian/{apt,apt-utils}.symbols:
+ - ship experimental unmangled c++ symbol files
+ * methods/rred.cc:
+ - operate optional on gzip compressed pdiffs
+ * apt-pkg/acquire-item.cc:
+ - don't uncompress downloaded pdiff files before feeding it to rred
+ - try downloading clearsigned InRelease before trying Release.gpg
+ - change the internal handling of Extensions in pkgAcqIndex
+ - add a special uncompressed compression type to prefer those files
+ - download and use i18n/Index to choose which Translations to download
+ * cmdline/apt-key:
+ - don't set trustdb-name as non-root so 'list' and 'finger'
+ can be used without being root (Closes: #393005, #592107)
+ * apt-pkg/deb/deblistparser.cc:
+ - rewrite LoadReleaseInfo to cope with clearsigned Releasefiles
+ * ftparchive/writer.cc:
+ - add config option to search for more patterns in release command
+ - include Index files by default in the Release file
+ * methods/{gzip,bzip}.cc:
+ - print a good error message if FileSize() is zero
+ * apt-pkg/aptconfiguration.cc:
+ - remove the inbuilt Translation files whitelist
+ * cmdline/apt-cache.cc:
+ - remove not implemented 'apt-cache add' command
+ * doc/apt-cache.8.xml:
+ - describe reality as apt-cache just queries and doesn't manipulate
+ the caches. Thanks to Enrico Zini for spotting it! (Closes: #612009)
+ * apt-pkg/algorithms.cc:
+ - mark pseudo packages of installed all packages as configured
+ in the simulation as we don't call configure for these packages
+ * apt-pkg/pkgcachegen.cc:
+ - in multiarch, let :all packages conflict with :any packages
+ with a different version to be sure
+ * apt-pkg/contrib/error.cc:
+ - remove 400 char size limit of error messages (LP: #365611)
+
+ [ Michael Vogt ]
+ * methods/http.cc:
+ - do not hang if Acquire::http::ProxyAutoDetect can not be
+ executed or returns no data (LP: #654393)
+ * debian/apt.conf.autoremove:
+ - never autoremove the GNU/Hurd kernel (closes: #588423), thanks
+ to Guillem Jover
+ * apt-pkg/cdrom.cc, apt-pkg/init.cc, methods/cdrom.cc:
+ - use /media/cdrom as default mountoint (closes: #611569)
+ * cmdline/apt-get.cc:
+ - add apt-get changelog (closes: #526990)
+ - add apt-get download (closes: #82738)
+
+ [ Martin Pitt ]
+ * test/integration/test-compressed-indexes, test/test-indexes.sh:
+ - Explicitly disable compressed indexes at the start. This ensures that we
+ will actually test uncompressed indexes regardless of the internal
+ default value of Acquire::GzipIndexes.
+
+ -- Michael Vogt <mvo@debian.org> Tue, 08 Feb 2011 12:58:12 +0100
+
+apt (0.8.10.3) unstable; urgency=low
+
+ [ Programs translations ]
+ * po/es.po: Updated, plus fixes encoding issues and fixes two fuzzy
+ strings, thanks to Javier Fernandez-Sanguino (closes: #610692)
+
+ -- Michael Vogt <mvo@debian.org> Tue, 25 Jan 2011 11:51:42 +0100
+
+apt (0.8.10.2) unstable; urgency=low
+
+ [ David Kalnischkies ]
+ * ftparchive/apt-ftparchive.cc:
+ - fix endless loop for multiple TranslationsWriters
+
+ -- Michael Vogt <mvo@debian.org> Tue, 25 Jan 2011 10:26:15 +0100
+
+apt (0.8.10.1) unstable; urgency=low
+
+ [ Christian Perrier ]
+ * Fix encoding for Slovenian translation. PO file switched
+ to UTF-8. Closes: #609957
+
+ [ Julian Andres Klode ]
+ * cmdline/apt-cache.cc: Create an error for apt-cache depends
+ if packages could not found (LP: #647045)
+
+ [ Programs translations ]
+ * Spanish update by Javier Fernández-Sanguino Peña. Closes: #607145
+
+ [ Manpages translations ]
+ * Correct a typo and an error in French manpages translation.
+ Closes: # 607170
+
+ -- Michael Vogt <mvo@debian.org> Mon, 17 Jan 2011 13:41:04 +0100
+
+apt (0.8.10) unstable; urgency=low
+
+ [ Programs translations ]
+ * Czech by Miroslav Kure. Closes: #605107
+
+ [ Martin Pitt ]
+ * test/integration/test-compressed-indexes, test/test-indexes.sh:
+ - Explicitly disable compressed indexes at the start. This ensures that we
+ will actually test uncompressed indexes regardless of the internal
+ default value of Acquire::GzipIndexes.
+
+ [ David Kalnischkies ]
+ * apt-pkg/algorithms.cc:
+ - mark all installed packages first without auto installation in
+ a dist-upgrade to prefer upgrading packages instead of installing
+ new packages in versioned or-groups (Closes: #605394)
+
+ -- Michael Vogt <mvo@debian.org> Tue, 30 Nov 2010 10:42:17 +0100
+
+apt (0.8.9) unstable; urgency=low
+
+ [ Christian Perrier ]
+ * Fix "typos" in French manpages translations. Thanks to
+ Cyril Brulebois for bashing me.
+ * Drop useless untranslatable sections from apt.8
+
+ [ Programs translations ]
+ * Slovenian update by Andrej ŽnidarÅ¡iÄ and Rosetta Slovenian team
+ * German update by Holger Wansing. Closes: #603619
+
+ [ David Kalnischkies ]
+ * apt-pkg/aptconfiguration.cc:
+ - evaluate Acquire::Languages= before LANG= (Closes: #602573)
+ * apt-pkg/orderlist.cc:
+ - try fixing before removing even if the fix is hidden in
+ a provides, hidden in the #590438 testcase
+ * apt-pkg/algorithms.cc:
+ - if the package was explicitly marked as ToRemove don't
+ consider it as a candidate for FixByInstall
+ * apt-pkg/depcache.cc:
+ - don't install previously not installed providers in a try
+ to satisfy a "Breaks: provides" dependency by upgrade
+ * cmdline/acqprogress.cc:
+ - don't ask the user for media change if quiet >= 2, stdout is not
+ a tty and assume-yes, force-yes or trivial-only option is set to
+ avoid cpu eating endless loops in unattended runs like apt.cron
+ (Closes: #602354, LP: #665580)
+
+ -- Michael Vogt <mvo@debian.org> Thu, 18 Nov 2010 09:25:04 +0100
+
+apt (0.8.8) unstable; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/contrib/fileutl.cc:
+ - Add a FileFd::FileSize() method to get the size of the underlying
+ file and not the size of the content in the file as FileFd::Size()
+ does - the sizes can differ since the direct gzip integration
+ * methods/{gzip,bzip2}.cc:
+ - use FileSize() to determine if the file is invalid (Closes: #600852)
+ * apt-pkg/pkgcache.cc:
+ - fallback always to a suitable description (Closes: #601016)
+
+ [ Michael Vogt ]
+ * apt-pkg/deb/dpkgpm.cc:
+ - ensure that history.log gets closed to avoid leaking a FD
+ (closes: #601649)
+
+ -- Michael Vogt <mvo@debian.org> Thu, 28 Oct 2010 21:22:21 +0200
+
+apt (0.8.7) unstable; urgency=low
+
+ [ Manpages translations ]
+ * Typo fixed in French (extra "Z"). Thanks to Florentin Duneau.
+ * Another typo fixed in French ("Anfin"). Thanks to bubulle
+ * Wrong translation for "showauto" fixed. Thanks to Raphaël Hertzog
+ Closes: #599265
+
+ [ Michael Vogt ]
+ * debian/apt.cron.daily:
+ - source /etc/default/locale (if available) so that the
+ apt-get update cron job fetches the right translated package
+ descriptions
+ * fix test failure on amd64
+ * apt-pkg/deb/debsystem.cc:
+ - fix issues with dir::state::status and dir::state::extended_states
+ when alternative rootdirs are used
+
+ [ Martin Pitt ]
+ * apt-pkg/deb/debindexfile.cc:
+ - Use FileFd::Size() instead of stat()ing the sources/binary/translations
+ indexes directly, so that we have transparent handling of gzipped
+ indexes.
+ * apt-pkg/contrib/fileutl.cc:
+ - Fix FileFd::Size() for gzipped files to give the size of the
+ uncompressed data. This fixes cache building progress going way
+ over 100%.
+
+ [ David Kalnischkies ]
+ * apt-pkg/deb/deblistparser.cc:
+ - support ArmHardFloat port in CompleteArch, thanks to Sebastian
+ Andrzej Siewior for the patch!
+ * doc/apt.ent:
+ - move some strings into apt-verbatim.ent to avoid showing them in
+ apt-doc.pot as they are untranslatable anyway (e.g. manpage references)
+ * doc/apt-verbatim.ent:
+ - change the codenames to reflect the situation after squeeze release
+ * doc/examples/apt-https-method-example.conf:
+ - apply various typo fixes by Olly Betts, thanks! (Closes: #600249)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 15 Oct 2010 18:16:10 +0200
+
+apt (0.8.6) unstable; urgency=low
+
+ [ Programs translations ]
+ * Vietnamese update by Clytie Siddall (Closes: #598489)
+ * Asturian update by Maacub (Closes: #599057)
+
+ [ David Kalnischkies ]
+ * cmdline/apt-cache.cc:
+ - use the TranslatedDescription for searching and not the first
+ available one as it is maybe not an expected language (Closes: #597925)
+ * apt-pkg/contrib/strutl.cc:
+ - add a space between number and unit as required by SI (Closes: #598352)
+ * apt-pkg/depcache.cc:
+ - do not check endpointer packages instead of only those which prevented
+ NeverAutoRemove settings from having an effect (Closes: #598452)
+ - do not remove packages which the user requested for installation
+ explicitly while satisfying other install requests (Closes: #598669)
+ * apt-pkg/packagemanager.cc:
+ - Add a space between period and 'Please' and unfuzzy all translations
+ * doc/po/de.po:
+ - remove the duplicated "angefertigt" in translation-holder string
+
+ -- Michael Vogt <mvo@debian.org> Mon, 04 Oct 2010 11:52:19 +0200
+
+apt (0.8.5) unstable; urgency=low
+
+ [ Manpages translations ]
+ * German (Chris Leick). Closes: #597163
+
+ [ Michael Vogt ]
+ * merged lp:~mvo/apt/conflicts-on-virtuals to better deal with
+ conflicts/breaks against virtual packages (LP: #614993)
+
+ [ David Kalnischkies ]
+ * apt-pkg/policy.cc:
+ - support 100-pinning in Release file with ButAutomaticUpgrades
+ as requested by the backports crew (Closes: #596097)
+ * apt-pkg/deb/deblistparser.cc:
+ - overrule NotAutomatic in case of ButAutomaticUpgrades
+ * debian/apt.cron.daily:
+ - handle absolute directory paths correctly by loading directories
+ directly instead of building the paths on our own (Closes: #596421)
+ * debian/control:
+ - build-depend on docbook-xml to ensure that the xml DTDs are always
+ available on the buildds (Closes: #597145)
+ * buildlib/debiandoc.mak, buildlib/po4a_manpage.mak:
+ - ensure that the build fails if documentation building fails
+ * doc/po/fr.po:
+ - correct two syntax issues to ensure we can build fine
+
+ -- Michael Vogt <mvo@debian.org> Fri, 17 Sep 2010 22:05:06 +0200
+
+apt (0.8.4) unstable; urgency=low
+
+ [ Michael vogt ]
+ * ftparchive/writer.cc:
+ - write out {Files,Checksum-Sha1,Checksum-Sha256} only if
+ available LP: #633967. Thanks to Colin Watson
+ * apt-pkg/contrib/cdromutl.cc:
+ - if apt-cdrom is used on writable media (like usb-sticks), do
+ not use the root directory to identify the medium (as all
+ changes there change the ident id). Use the .disk directory
+ instead
+
+ [ David Kalnischkies ]
+ * ftparchive/writer.cc:
+ - null the valid string instead of the date if Valid-Until is not set
+ * apt-pkg/acquire-item.cc:
+ - use also unsigned Release files again (Closes: #596189)
+
+ [ Christian Perrier ]
+ * Fix missing space after dot in a message from apt-pkg
+ Translations unfuzzied. Thanks to Holger Wansing.
+
+ -- Michael Vogt <mvo@debian.org> Fri, 10 Sep 2010 20:45:15 +0200
+
+apt (0.8.3) unstable; urgency=low
+
+ [ Programs translations ]
+ * German (Holger Wansing). Closes: #596141
+
+ [ Manpages translations ]
+ * Japanese (KURASAWA Nozomu). Closes: #595862
+
+ [ Michael Vogt ]
+ * apt-pkg/indexcopy.cc:
+ - only use trusted.gpg.d directory if it exists
+ - do not replace /dev/null when running in APT::CDROM::NoAct
+ mode (LP: #612666), thanks to Colin Watson
+
+ [ David Kalnischkies ]
+ * ftparchive/apt-ftparchive.cc:
+ - ensure that BinDirectory as well as Tree settings get
+ the correct default FileMode setting (Closes: #595922)
+
+ -- Michael Vogt <mvo@debian.org> Tue, 07 Sep 2010 15:28:41 +0200
+
+apt (0.8.2) unstable; urgency=low
+
+ [ Manpages translations ]
+ * Spanish (Omar Campagne). Closes: #595557
+
+ [ David Kalnischkies ]
+ * apt-pkg/versionmatch.cc:
+ - do not accept 'Pin: origin "' (missing closing ") as a valid
+ way to pin a local archive: either "" or none…
+ * apt-pkg/deb/dpkgpm.cc:
+ - create Dir::Log if needed to support /var/log as tmpfs or similar,
+ inspired by Thomas Bechtold, thanks! (Closes: #523919, LP: #220239)
+ * apt-pkg/indexcopy.cc:
+ - support really still the APT::GPGV::TrustedKeyring setting,
+ as it breaks d-i badly otherwise (Closes: #595428)
+ * cmdline/apt-key:
+ - support also Dir::Etc::Trusted so that apt-key works in the same
+ way as the library part which works with the trusted files
+ * methods/{gzip,bzip2}.cc:
+ - empty files can never be valid archives (Closes: #595691)
+
+ -- Michael Vogt <mvo@debian.org> Mon, 06 Sep 2010 18:10:06 +0200
+
+apt (0.8.1) unstable; urgency=low
+
+ [ Programs translations ]
+ * Thai (Theppitak Karoonboonyanan). Closes: #592695
+ * Russian (Yuri Kozlov). Closes: #594232
+ * Slovak (Ivan Masár). Closes: #594255
+ * Swedish (Daniel Nylander). Closes: #594241
+ * Japanese (Kenshi Muto, Osamu Aoki). Closes: #594265
+ * Italian (Milo Casagrande). Closes: #594238
+ * Asturian (maacub). Closes: #594303
+ * Simplified Chinese (Aron Xu). Closes: #594458
+ * Bulgarian (Damyan Ivanov). Closes: #594627
+ * Portuguese (Miguel Figueiredo). Closes: #594668
+ * Korean (Changwoo Ryu). Closes: #594809
+ * Norwegian Bokmål (Hans Nordhaug). Closes: #595182
+ * Danish (Joe Hansen). Closes: #595176
+ * Catalan (Agustí Grau). Closes: #595234
+
+ [ Christian Perrier ]
+ * Fix spelling error in cmdline/apt-get.cc. Thanks to Osamu Aoki
+ Closes: #594211
+
+ [ Manpages translations ]
+ * Portuguese (Américo Monteiro)
+
+ [ David Kalnischkies ]
+ * cmdline/apt-cache.cc:
+ - show in madison command again also source packages (LP: #614589)
+ - remove useless GetInitialize method
+ * cmdline/apt-get.cc:
+ - remove direct calls of ReadMainList and use the wrapper instead
+ to protect us from useless re-reads and two-times notice display
+ - remove death code by removing unused GetInitialize
+ * apt-pkg/depcache.cc:
+ - now that apt-get purge works on 'rc' packages let the MarkDelete
+ pass this purge forward to the non-pseudo package for pseudos
+ * apt-pkg/contrib/fileutl.cc:
+ - apply SilentlyIgnore also on files without an extension
+ * apt-pkg/contrib/configuration.cc:
+ - fix autoremove by using correct config-option name and
+ don't make faulty assumptions in error handling (Closes: #594689)
+ * apt-pkg/versionmatch.cc:
+ - let the pin origin actually work as advertised in the manpage
+ which means "" are optional and pinning a local archive does
+ work - even if it is a non-flat archive (Closes: #594435)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 03 Sep 2010 18:36:11 +0200
+
+apt (0.8.0) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * merge of the debian-expermental-ma branch
+ * refresh po/pot files in doc/ and po/
+
+ [ Programs translations ]
+ * Swedish (Daniel Nylander). Closes: #592366
+ * French (Christian Perrier)
+
+ [ Manpages translations ]
+ * French (Christian Perrier)
+
+ -- Michael Vogt <mvo@debian.org> Tue, 24 Aug 2010 16:32:19 +0200
+
+apt (0.8.0~pre2) experimental; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/contrib/strutl.cc:
+ - fix error checking for vsnprintf in its safe variant
+ * methods/bzip2.cc:
+ - fix error checking for read in case of failing bzip2/lzma/whatever
+ * debian/apt.cron.daily:
+ - create backups for our extended_states file (Closes: #593430)
+ * apt-pkg/init.cc:
+ - set the default values for dir::etc::trusted options correctly
+ * ftparchive/writer.cc:
+ - init valid-until correctly to prevent garbage entering Release file
+ * apt-pkg/deb/debsystem.cc:
+ - set dir::state::status based at least on dir
+ * apt-pkg/deb/dpkgpm.cc:
+ - use the InstVer instead of the CurrentVer for the autobit transfer
+ * methods/http.cc:
+ - some http servers violate HTTP1.1 by not issuing a Reason-Phrase
+ (or at least a space after the code) especially for 200, but lets
+ be nice and ignore it as we don't need the reason in general
+ * apt-pkg/acquire-item.cc:
+ - don't use ReadOnlyGzip mode for PDiffs as this mode doesn't work
+ in combination with the AddFd methods of our hashclasses
+
+ -- Michael Vogt <mvo@debian.org> Mon, 23 Aug 2010 19:09:08 +0200
+
+apt (0.8.0~pre1) experimental; urgency=low
+
+ [ Programs translations ]
+ * Swedish translation update. Closes: #592366
+
+ [ Michael Vogt ]
+ * merge of the debian-expermental-ma branch
+ * refresh po/pot files in doc/ and po/
+ * apt-pkg/pkgcache.cc:
+ - re-evaluate the architectures cache when the cache is (re)opened
+
+ [ Colin Watson ]
+ * apt-pkg/cdrom.cc:
+ - fix off-by-one error in DropBinaryArch
+
+ [ Julian Andres Klode ]
+ * apt-pkg/contrib/fileutl.cc:
+ - Add WriteAtomic mode.
+ - Revert WriteEmpty to old behavior (LP: #613211)
+ * apt-pkg, methods:
+ - Convert users of WriteEmpty to WriteAtomic.
+ * apt-pkg/depcache.cc:
+ - Only try upgrade for Breaks if there is a newer version, otherwise
+ handle it as Conflicts (by removing it) (helps for #591882).
+ * debian/control:
+ - Add dependency on gnupg to apt, apt-key uses it.
+
+ [ David Kalnischkies ]
+ * apt-pkg/algorithms.cc:
+ - let the problem resolver install packages to fix or-groups
+ as a needed remove nuked another or-member (helps for #591882)
+ - change the debug outputs to display also arch of the
+ package and version dependencies information
+ * cmdline/apt-get.cc:
+ - let APT::Get::Arch-Only in build-dep default to false again
+ (Closes: #592628) Thanks Mohamed Amine IL Idrissi for report!
+ - purge packages in 'rc' state, thanks Rogier! (Closes: #150831)
+ * apt-pkg/pkgcache.cc:
+ - fix LongDesc handling in LANG=C environment
+
+ -- Michael Vogt <mvo@debian.org> Fri, 13 Aug 2010 17:00:49 +0200
+
+apt (0.7.26~exp12) experimental; urgency=low
+
+ [ Michael Vogt ]
+ * debian/control:
+ - add dependency on zlib-dev for libapt-pkg-dev
+
+ [ David Kalnischkies ]
+ * apt-pkg/cacheset.cc:
+ - [ABI BREAK] add an ErrorType option to CacheSetHelper
+ * cmdline/apt-cache.cc:
+ - use Notice instead of Error in the CacheSetHelper messages
+ for compat reasons. Otherwise tools like sbuild blow up
+ - return success in show if a virtual package was given
+ * debian/control:
+ - remove libcurl3-gnutls-dev alternative as the package is gone
+ - increase needed version of libcurl4-gnutls-dev to >= 7.19.0
+ as we use CURLOPT_{ISSUERCERT,CRLFILE} (Closes: #589642)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 30 Jul 2010 11:55:48 +0200
+
+apt (0.7.26~exp11) experimental; urgency=low
+
+ [ Julian Andres Klode ]
+ * apt-pkg/deb/dpkgpm.cc:
+ - Write architecture information to history file.
+ - Add to history whether a change was automatic or not.
+ * apt-pkg/contrib/fileutl.cc:
+ - Add FileFd::OpenDescriptor() (needed for python-apt's #383617).
+ * cmdline/apt-get.cc:
+ - Support large filesystems by using statvfs64() instead of statvfs()
+ and statfs64() instead of statfs() (Closes: #590513).
+ * apt-pkg/cdrom.cc:
+ - Use link() instead of rename() for creating the CD database backup;
+ otherwise there would be a short time without any database.
+
+ [ David Kalnischkies ]
+ * apt-pkg/depcache.cc:
+ - handle "circular" conflicts for "all" packages correctly
+ * cmdline/apt-cache.cc:
+ - be able to omit dependency types in (r)depends (Closes: #319006)
+ - show in (r)depends the candidate per default instead of newest
+ - share the (r)depends code instead of codecopy
+ * apt-pkg/cacheset.cc:
+ - move them back to the library as they look stable now
+ - add a 'newest' pseudo target release as in pkg/newest
+ * apt-pkg/pkgcache.cc:
+ - prefer non-virtual packages in FindPreferredPkg (Closes: #590041)
+ * test/integration/*:
+ - add with bug#590041 testcase a small test "framework"
+ * apt-pkg/orderlist.cc:
+ - try to install another or-group member in DepRemove before
+ breaking the or group (Closes: #590438)
+ - configure also the replacement before remove by adding Immediate flag
+
+ [ Michael Vogt ]
+ * apt-pkg/contrib/error.{cc,h}
+ - docstring cleanup
+ - add inline DumpError() to avoid subtle API break
+
+ -- Michael Vogt <mvo@debian.org> Thu, 29 Jul 2010 16:40:58 +0200
+
+apt (0.7.26~exp10) experimental; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/contrib/error.{cc,h}:
+ - remove constness of va_list parameter to fix build on amd64 and co
+ Thanks Eric Valette! (Closes: #588610)
+ * apt-pkg/deb/debmetaindex.cc:
+ - do not query each architecture for flat file archives
+ - fix typo preventing display of architecture in Info()
+ * methods/bzip2.cc:
+ - add a copycat of the old gzip.cc as we need it for bzip2 and lzma
+
+ [ Martin Pitt ]
+ * debian/rules:
+ - Make DEB_BUILD_OPTIONS=noopt actually work by passing the right
+ CXXFLAGS.
+ * apt-pkg/contrib/fileutl.{h,cc}:
+ - Add support for reading of gzipped files with the new "ReadOnlyGzip"
+ OpenMode. (Closes: #188407)
+ - Link against zlib (in apt-pkg/makefile) and add zlib build dependency.
+ - [ABI BREAK] This adds a new private member to FileFd, but its
+ initialization is in the public header file.
+ * configure.in:
+ - Check for zlib library and headers.
+ * apt-pkg/acquire-item.cc, apt-pkg/deb/debindexfile.cc,
+ apt-pkg/deb/debrecords.cc, apt-pkg/deb/debsrcrecords.h,
+ cmdline/apt-cache.cc:
+ - Open Packages, Sources, and Translations indexes in "ReadOnlyGzip" mode.
+ * apt-pkg/deb/debindexfile.cc:
+ - If we do not find uncompressed package/source/translation indexes, look
+ for gzip compressed ones.
+ * apt-pkg/acquire-item.cc:
+ - If the Acquire::GzipIndexes option is true and we download a gzipped
+ index file, keep it as it is (and rename to .gz) instead of
+ uncompressing it.
+ * doc/apt.conf.5.xml:
+ - Document the new Acquire::GzipIndexes option.
+ * doc/po/apt-doc.pot, doc/po/de.po:
+ - German translation of new Acquire::GzipIndexes option.
+ * Add test/test-indexes.sh:
+ - Test behaviour of index retrieval and usage, in particular with
+ uncompressed and gzip compressed indexes.
+ * methods/gzip.cc: With FileFd now being able to read gzipped files, there
+ is no need for the gzip method any more to spawn an external gzip process.
+ Rewrite it to use FileFd directly, which makes the code a lot simpler, and
+ also using less memory and overhead.
+
+ -- Michael Vogt <mvo@debian.org> Mon, 12 Jul 2010 11:41:01 +0200
+
+apt (0.7.26~exp9) experimental; urgency=low
+
+ [ David Kalnischkies ]
+ * doc/apt.conf.5.xml:
+ - add and document APT::Cache-{Start,Grow,Limit} options for mmap control
+ * apt-pkg/contrib/fileutl.cc:
+ - do not fail von double close()
+
+ -- Michael Vogt <mvo@debian.org> Fri, 09 Jul 2010 21:51:55 +0200
+
+apt (0.7.26~exp8) experimental; urgency=low
+
+ [ David Kalnischkies ]
+ * cmdline/cacheset.cc:
+ - doesn't include it in the library for now as it is too volatile
+ - get the candidate either from an already built depcache
+ or use the policy which is a bit faster than depcache generation
+ - get packages by task^ with FromTask()
+ - only print errors if all tries to get a package by string failed
+ - factor out code to get a single package FromName()
+ - check in Grouped* first without modifier interpretation
+ * cmdline/apt-get.cc:
+ - use the cachsets in the install commands
+ - make the specify order of packages irrelevant (Closes: #196021)
+ * apt-pkg/orderlist.cc:
+ - untouched packages are never missing
+ * apt-pkg/packagemanager.cc:
+ - packages that are not touched doesn't need to be unpacked
+ * debian/control:
+ - remove intltool's dependency as it is an ubuntu artefact
+ * apt-pkg/depcache.cc:
+ - SetCandidateVer for all pseudo packages
+ - SetReInstall for the "all" package of a pseudo package
+ - use the new MatchAgainstConfig for the DefaultRootSetFunc
+ - always mark the all package if a pseudo package is marked for install
+ * apt-pkg/contrib/error.{cc,h}:
+ - complete rewrite but use the same API
+ - add NOTICE and DEBUG as new types of a message
+ - add a simple stack handling to be able to delay error handling
+ * apt-pkg/aptconfiguration.cc:
+ - show a deprecation notice for APT::Acquire::Translation
+ * apt-pkg/contrib/configuration.{cc,h}:
+ - add a wrapper to match strings against configurable regex patterns
+ * apt-pkg/contrib/fileutl.cc:
+ - show notice about ignored file instead of being always silent
+ - add a Dir::Ignore-Files-Silently list option to control the notice
+ * apt-pkg/policy.h:
+ - add another round of const& madness as the previous round accidentally
+ NOT overrides the virtual GetCandidateVer() method (Closes: #587725)
+ * apt-pkg/pkgcachegen.{cc,h}:
+ - make the used MMap moveable (and therefore dynamic resizable) by
+ applying (some) mad pointer magic (Closes: #195018)
+
+ [ Michael Vogt ]
+ * apt-pkg/deb/dpkgpm.cc:
+ - make the apt/term.log output unbuffered (thanks to Matt Zimmerman)
+
+ [ Julian Andres Klode ]
+ * methods/ftp.h:
+ - Handle different logins on the same server (Closes: #586904).
+ * apt-pkg/deb/deblistparser.cc:
+ - Handle architecture wildcards (Closes: #547724).
+ * apt-pkg/versionmatch.cc:
+ - Support matching pins by regular expressions or glob() like patterns,
+ regular expressions have to be put between to slashes; for example,
+ /.*/.
+ * apt-pkg/contrib/fileutl.cc:
+ - Make FileFd replace files atomically in WriteTemp mode (for cache, etc).
+ * debian/control:
+ - Set Standards-Version to 3.9.0
+
+ -- Michael Vogt <mvo@debian.org> Fri, 09 Jul 2010 19:16:20 +0200
+
+apt (0.7.26~exp7) experimental; urgency=low
+
+ * apt-pkg/cachefile.h:
+ - make pkgPolicy public again, libapt-pkg-perl (and probably
+ others) get unhappy without that
+
+ -- Michael Vogt <mvo@debian.org> Thu, 10 Jun 2010 15:33:24 +0200
+
+apt (0.7.26~exp6) experimental; urgency=low
+
+ [ Michael Vogt ]
+ * merge the remaining Ubuntu change:
+ - on gpg verification failure warn and restore the last known
+ good state
+ - on failure display the IP of the server (useful for servers
+ that use round robin DNS)
+ - support Original-Maintainer in RewritePackageOrder
+ - enable cdrom autodetection via libudev by default
+ - show message about Vcs in use when apt-get source is run for
+ packages maintained in a Vcs
+ - better support transitional packages with mark auto-installed.
+ when the transitional package is in "oldlibs" the new package
+ is not marked auto installed (same is true for section
+ metapackages)
+ - provide new "deb mirror://archive.foo/mirrors.list sid main"
+ method expects a list of mirrors (generated on the server e.g.
+ via geoip) and will use that, including cycle on failure
+ - write apport crash file on package failure (disabled by default
+ on debian until apport is available)
+ - support mirror failure reporting (disabled by default on debian)
+
+ [ David Kalnischkies ]
+ * apt-pkg/deb/dpkgpm.cc:
+ - write Disappeared also to the history.log
+ - forward manual-installed bit on package disappearance
+ * apt-pkg/deb/debsystem.cc:
+ - add better config item for extended_states file
+ * apt-pkg/pkgcache.h:
+ - switch {,Install-}Size to unsigned long long
+ * apt-pkg/depcache.cc:
+ - do the autoremove mark process also for required packages to handle
+ these illegally depending on lower priority packages (Closes: #583517)
+ - try harder to find the other pseudo versions for autoremove multiarch
+ - correct "Dangerous iterator usage" pointed out by cppcheck
+ - deal with long long, not with int to remove 2GB Limit (LP: #250909)
+ - deprecate AddSize with Multiplier as it is unused and switch to
+ boolean instead to handle the sizes more gracefully.
+ - switch i{Download,Usr}Size from double to (un)signed long long
+ * apt-pkg/aptconfiguration.cc:
+ - remove duplicate architectures in getArchitectures()
+ * apt-pkg/indexrecords.{cc,h}:
+ - backport forgotten Valid-Until patch from the obsolete experimental
+ branch to prevent replay attacks better, thanks to Thomas Viehmann
+ for the initial patch! (Closes: #499897)
+ - add a constant Exists check for MetaKeys
+ * apt-pkg/acquire-item.cc:
+ - do not try PDiff if it is not listed in the Meta file
+ - sent Last-Modified header also for Translation files
+ * apt-pkg/cacheiterator.h:
+ - let pkgCache::Iterator inherent std::iterator
+ * ftparchive/writer.h:
+ - add a virtual destructor to FTWScanner class (for cppcheck)
+ * apt-pkg/cacheset.{cc,h}:
+ - add simple wrapper around std::set for cache structures
+ - move regex magic from apt-get to new FromRegEx method
+ - move cmdline parsing from apt-cache to new FromCommandLine method
+ - support special release-modifier 'installed' and 'candidate'
+ * apt-pkg/contrib/cmdline.cc:
+ - fix segfault in SaveInConfig caused by writing over char[] sizes
+ * apt-pkg/pkgcache.cc:
+ - get the best matching arch package from a group with FindPreferredPkg
+ * cmdline/apt-cache.cc:
+ - make the search multiarch compatible by using GrpIterator instead
+ - use pkgCacheFile and the new CacheSets all over the place
+ - add --target-release option (Closes: #115520)
+ - accept pkg/release and pkg=version in show and co. (Closes: #236270)
+ - accept package versions in the unmet command
+ * cmdline/apt-get.cc:
+ - use unsigned long long instead of double to store values it gets
+ * apt-pkg/cachefile.{cc,h}:
+ - split Open() into submethods to be able to build only parts
+ - make the OpProgress optional in the Cache buildprocess
+ - store also the SourceList we use internally for export
+ * doc/apt.conf.5.xml:
+ - document the new Valid-Until related options
+ * apt-pkg/contrib/strutl.cc:
+ - split StrToTime() into HTTP1.1 and FTP date parser methods and
+ use strptime() instead of some self-made scanf mangling
+ - use the portable timegm shown in his manpage instead of a strange
+ looking code copycat from wget
+ * ftparchive/writer.cc:
+ - add ValidTime option to generate a Valid-Until header in Release file
+ * apt-pkg/policy.cc:
+ - get the candidate right for a not-installed pseudo package if
+ his non-pseudo friend is installed
+ * apt-pkg/indexcopy.cc:
+ - move the gpg codecopy to a new method and use it also in methods/gpgv.cc
+
+ -- Michael Vogt <mvo@debian.org> Thu, 10 Jun 2010 14:02:22 +0200
+
+apt (0.7.26~exp5) experimental; urgency=low
+
+ [ David Kalnischkies ]
+ * cmdline/apt-get.cc:
+ - rerun dpkg-source in source if --fix-broken is given (Closes: #576752)
+ - don't suggest held packages as they are installed (Closes: #578135)
+ - handle multiple --{tar,diff,dsc}-only options correctly
+ - show at the end of the install process a list of disappeared packages
+ * cmdline/apt-cache.cc:
+ - use GroupCount for package names in stats and add a package struct line
+ * methods/rred.cc:
+ - use the patchfile modification time instead of the one from the
+ "old" file - thanks to Philipp Weis for noticing! (Closes: #571541)
+ * debian/rules:
+ - remove targets referring to CVS or arch as they are useless
+ - use $(CURDIR) instead of $(pwd)
+ - use dpkg-buildflags if available for CXXFLAGS
+ * README.arch:
+ - remove the file completely as it has no use nowadays
+ * apt-pkg/depcache.cc:
+ - be doublesure that the killer query is empty before starting reinstall
+ * methods/gpgv.cc:
+ - remove the keyrings count limit by using vector magic
+ * contrib/mmap.cc:
+ - clarify "MMap reached size limit" error message, thanks Ivan Masár!
+ * doc/apt.ent
+ - add entities for the current oldstable/stable/testing codenames
+ * doc/sources.list.5.xml:
+ - use stable-codename instead of stable in the examples (Closes: #531492)
+ * doc/apt_preferences.5.xml:
+ - adapt some examples here to use current codenames as well
+ - add "NotAutomatic: yes" handling, thanks Osamu Aoki (Closes: #490347)
+ * debian/libapt-pkg-doc.doc-base.cache:
+ - remove yet another reference to the removed cache.sgml
+ * doc/apt-get.8.xml:
+ - do not say explicit target_release_{name,version,codename}, it should
+ be clear by itself and 'man' can break lines again (Closes: #566166)
+ - remove the gnome-apt reference as it is removed from unstable
+ * apt-pkg/deb/dpkgpm.cc:
+ - add 'disappear' to the known processing states, thanks Jonathan Nieder
+ * apt-pkg/packagemanager.h:
+ - export info about disappeared packages with GetDisappearedPackages()
+
+ [ Michael Vogt ]
+ * methods/http.{cc,h}:
+ - code cleanup, use enums instead of magic ints
+
+ [ Jari Aalto ]
+ * debian/rules:
+ - spell out some less known options to reduce manpage consultation-rate
+ - Use POSIX command substitution: $(<command sequence>)
+ - Remove EOL whitespace (Closes: #577804)
+
+ [ Julian Andres Klode ]
+ * apt-pkg/acquire-item.cc:
+ - Fix pkgAcqFile::Custom600Headers() to always return something.
+
+
+ [ Christian Perrier ]
+ * Slovak translation update. Closes: #581159
+ * Italian translation update. Closes: #581742
+ * Swedish translation update. Closes: #592366
+
+ -- Michael Vogt <mvo@debian.org> Tue, 25 May 2010 16:01:42 +0200
+
+apt (0.7.26~exp4) experimental; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/depcache.cc:
+ - rewrite the pseudo package reinstaller to be more intelligent
+ in his package choices
+ * apt-pkg/packagemanager.cc:
+ - don't try to "unpack" pseudo packages twice
+ * apt-pkg/contrib/fileutl.cc:
+ - add a parent-guarded "mkdir -p" as CreateDirectory()
+ * apt-pkg/acquire.{cc,h}:
+ - add a delayed constructor with Setup() for success reporting
+ - check for and create directories in Setup if needed instead of
+ error out unfriendly in the Constructor (Closes: #523920, #525783)
+ - optional handle a lock file in Setup()
+ * apt-pkg/acquire-item.cc:
+ - Acquire::ForceHash to force method for expected hash
+ * cmdline/apt-get.cc:
+ - remove the lock file handling and let Acquire take care of it instead
+ - display MD5Sum in --print-uris if not forced to use another method
+ instead of displaying the strongest available (Closes: #576420)
+ - regex for package names executed on Grp- not PkgIterator
+ - show non-candidates as fallback for virtual packages (Closes: #578385)
+ - set also "all" to this version for pseudo packages in TryToChangeVer
+ * apt-pkg/deb/dpkgpm.cc:
+ - remove Chroot-Directory from files passed to install commands.
+ Thanks to Kel Modderman for report & patch! (Closes: #577226)
+ * ftparchive/writer.cc:
+ - remove 999 chars Files and Checksums rewrite limit (Closes: #577759)
+ * cmdline/apt-cache.cc:
+ - align Installed and Candidate Version in policy so they can be compared
+ easier, thanks Ralf Gesellensetter for the pointer! (Closes: #578657)
+ * doc/apt.ent:
+ - Add a note about APT_CONFIG in the -c description (Closes: #578267)
+ * doc/po/de.po:
+ - correct typos in german apt_preferences manpage, thanks Chris Leick!
+ * apt-pkg/sourcelist.cc:
+ - be less strict and accept [option=value] as well
+ * apt-pkg/contrib/configuration.cc:
+ - error out if #clear directive has no argument
+ * doc/files.sgml:
+ - sync documentation with status quo, regarding files/directories in
+ use, extended_states and uri schemes.
+ * doc/cache.sgml:
+ - drop the file in favor of inplace documentation with doxygen
+ * apt-pkg/pkgcache.h:
+ - enhance the Groups ABI by providing a ID as the other structs does
+ - check also the size of the Group struct then checking for the others
+
+ [ Jari Aalto ]
+ * cmdline/apt-get.cc:
+ - replace backticks with single quotes around fix-broken command
+ in the broken packages message. (Closes: #577168)
+ * dselect/install:
+ - modernize if-statements not to use 'x' (Closes: #577117)
+ - replace backticks with POSIX $() (Closes: #577116)
+
+ [ Michael Vogt ]
+ * [ Abi break ] apt-pkg/acquire-item.{cc,h}:
+ - add "IsIndexFile" to constructor of pkgAcqFile so that it sends
+ the right cache control headers
+ * cmdline/apt-get.cc:
+ - fix crash when pkg.VersionList() is empty
+ * apt-pkg/depcache.cc:
+ - fix incorrect std::cout usage for debug output
+ * test/libapt/getlanguages_test.cc:
+ - Add test for Esperanto that has nocounty associated with them
+ (LP: #560956)
+ * apt-pkg/deb/debrecords.cc:
+ - fix max tag buffer size (LP: #545336, closes: #578959)
+ * debian/rules:
+ - install html doxygen in libapt-pkg-doc
+ * debian/control:
+ - build-depend on doxygen
+
+ [ Julian Andres Klode ]
+ * apt-pkg/contrib/weakptr.h:
+ - add a class WeakPointable which allows one to register weak pointers to
+ an object which will be set to NULL when the object is deallocated.
+ * [ABI break] apt-pkg/acquire{-worker,-item,}.h:
+ - subclass pkgAcquire::{Worker,Item,ItemDesc} from WeakPointable.
+ * apt-pkg/pkgcache.cc:
+ - Merge fix from David to correct handling in single-arch environments.
+ * cmdline/apt-cache.cc:
+ - Add a showauto command to apt-cache.
+ * cmdline/apt-get.cc:
+ - Add apt-get markauto and unmarkauto commands.
+
+ -- Michael Vogt <mvo@debian.org> Thu, 06 May 2010 09:32:54 +0200
+
+apt (0.7.26~exp3) experimental; urgency=low
+
+ [ Christian Perrier ]
+ * German translation update. Closes: #571037
+ * Spanish manpages translation update. Closes: #573293
+ * Dutch translation update. Closes: #573946
+ * Polish manpages translation update. Closes: #574558
+ * Add "manpages-pl (<< 20060617-3~)" to avoid file conflicts with
+ that package that was providing some manpages for APT utilities.
+
+ [ David Kalnischkies ]
+ * [BREAK] merge MultiArch-ABI. We don't support MultiArch,
+ but we support the usage of the new ABI so libapt users
+ can start to prepare for MultiArch (Closes: #536029)
+ * Ignore :qualifiers after package name in build dependencies
+ in the library by default, but try to honour them in apt-get
+ as we have some sort of MultiArch support ready (Closes: #558103)
+ * add translation of the manpages to PT (portuguese)
+ Thanks to Américo Monteiro!
+ * Switch to dpkg-source 3.0 (native) format
+ * apt-pkg/depcache.cc:
+ - remove Auto-Installed information from extended_states
+ together with the package itself (Closes: #572364)
+ * cmdline/apt-mark:
+ - don't crash if no arguments are given (Closes: #570962)
+ * debian/control:
+ - remove some years old and obsolete Replaces
+ - add automake/conf build-depends/conflicts as recommend by
+ the autotools-dev README (Closes: #572615)
+ * apt-pkg/contrib/mmap.{h,cc}:
+ - add char[] fallback for filesystems without shared writable
+ mmap() like JFFS2. Thanks to Marius Vollmer for writing
+ and to Loïc Minier for pointing to the patch! (Closes: #314334)
+ * doc/apt_preferences.5.xml:
+ - fix two typos and be more verbose in the novice warning.
+ Thanks to Osamu Aoki for pointing it out! (Closes: #567669)
+ - fix a=sid vs. n=sid typo, thanks Ansgar Burchardt!
+ - origin can be used to match a hostname (Closes: #352667)
+ - remove wrong pin-priority is optional remark (Closes: #574944)
+ * apt-pkg/deb/dpkgpm.cc:
+ - fix error message construction in OpenLog()
+ - if available store the Commandline in the history
+ * cmdline/apt-get.cc:
+ - add a --only-upgrade flag to install command (Closes: #572259)
+ - fix memory leaks in error conditions in DoSource()
+ - try version match in FindSrc first exact than fuzzy (LP: #551178)
+ * apt-pkg/contrib/cmndline.cc:
+ - save Commandline in Commandline::AsString for logging
+ * apt-pkg/deb/debversion.cc:
+ - consider absent of debian revision equivalent to 0 (Closes: #573592)
+ * doc/makefile, doc/*:
+ - generate subdirectories for building the manpages in on the fly
+ depending on the po files we have.
+ * apt-pkg/pkgcachegen.cc:
+ - merge versions correctly even if multiple different versions
+ with the same version number are available.
+ Thanks to Magnus Holmgren for the patch! (Closes: #351056)
+ * ftparchive/writer.cc:
+ - write LongDescriptions if they shouldn't be included in Packages
+ file into i18n/Translation-en by default.
+ * doc/po/de.po:
+ - correct a few typos in the german manpage translation.
+ Thanks to Chris Leick and Georg Koppen! (Closes: #574962)
+ * apt-pkg/contrib/strutl.cc:
+ - convert all toupper calls to tolower_ascii for a little speedup
+
+ [ Jean-Baptiste Lallement ]
+ * apt-pkg/contrib/strutl.cc:
+ - always escape '%' (LP: #130289) (Closes: #500560)
+ - unescape '%' sequence only if followed by 2 hex digit
+ - username/password are urlencoded in proxy string (RFC 3986)
+
+ [ Julian Andres Klode ]
+ * cmdline/apt-cache.cc:
+ - Change behavior of showsrc to match the one of show (Closes: #512046).
+ * cmdline/apt-key:
+ - Honor Apt::GPGV::TrustedKeyring (Closes: #316390)
+ * cmdline/apt-mark:
+ - Use the new python-apt API (and conflict with python-apt << 0.7.93.2).
+ * apt-inst/contrib/arfile.h:
+ - Add public ARArchive::Members() which returns the list of members.
+ * apt-pkg/policy.cc:
+ - Always return a candidate if there is at least one version pinned > 0
+ (Closes: #512318)
+ * ftparchive/apt-ftparchive.cc:
+ - Read default configuration (Closes: #383257)
+ * debian/rules:
+ - Fix the libraries name to be e.g. libapt-pkg4.9 instead of
+ libapt-pkg-4.9.
+
+ [ Michael Vogt ]
+ * apt-pkg/deb/dpkgpm.cc:
+ - fix backgrounding when dpkg runs (closes: #486222)
+ * cmdline/apt-mark:
+ - show error on incorrect arguments (LP: #517917), thanks to
+ Torsten Spindler
+ * cmdline/apt-get.cc:
+ - if apt-get source foo=version or foo/distro can not be found,
+ error out (LP: #502641)
+ * apt-pkg/packagemanager.cc:
+ - better debug output
+ * doc/examples/configure-index:
+ - add missing Debug::pkgPackageManager option
+
+ -- Michael Vogt <mvo@debian.org> Thu, 01 Apr 2010 17:30:43 +0200
+
+apt (0.7.26~exp2) experimental; urgency=low
+
+ * fix crash when LANGUAGE is not set
+
+ -- Michael Vogt <mvo@debian.org> Thu, 18 Feb 2010 22:07:23 +0100
+
+apt (0.7.26~exp1) experimental; urgency=low
+
+ [ David Kalnischkies ]
+ * [BREAK] add possibility to download and use multiply
+ Translation files, configurable with Acquire::Translation
+ (Closes: #444222, #448216, #550564)
+ * Ignore :qualifiers after package name in build dependencies
+ for now as long we don't understand them (Closes: #558103)
+ * apt-pkg/contrib/mmap.{cc,h}:
+ - extend it to have a growable flag - unused now but maybe...
+ * apt-pkg/pkgcache.h:
+ - use long instead of short for {Ver,Desc}File size,
+ patch from Víctor Manuel Jáquez Leal, thanks! (Closes: #538917)
+ * apt-pkg/acquire-item.cc:
+ - allow also to skip the last patch if target is reached,
+ thanks Bernhard R. Link! (Closes: #545699)
+ * ftparchive/writer.{cc,h}:
+ - add --arch option for packages and contents commands
+ - if an arch is given accept only *_all.deb and *_arch.deb instead
+ of *.deb. Thanks Stephan Bosch for the patch! (Closes: #319710)
+ - add APT::FTPArchive::AlwaysStat to disable the too aggressive
+ caching if versions are build multiply times (not recommend)
+ Patch by Christoph Goehre, thanks! (Closes: #463260)
+ * apt-pkg/deb/dpkgpm.cc:
+ - stdin redirected to /dev/null takes all CPU (Closes: #569488)
+ Thanks to Aurelien Jarno for providing (again) a patch!
+ * buildlib/apti18n.h.in, po/makefile:
+ - add ngettext support with P_()
+ * aptconfiguration.cc:
+ - include all existing Translation files in the Cache (Closes: 564137)
+ * debian/control:
+ - update with no changes to debian policy 3.8.4
+ * doc/apt_preferences.5.xml:
+ - explicitly warn against careless use (Closes: #567669)
+ * debian/rules:
+ - remove creation of empty dir /usr/share/apt
+ * doc/apt-cdrom.8.xml:
+ - fix typo spotted by lintian: proc(c)eed
+
+ [ Ivan Masár ]
+ * Slovak translation update. Closes: #568294
+
+ [ Michael Vogt ]
+ * [BREAK] merged lp:~mvo/apt/history
+ - this writes a /var/log/apt/history tagfile that contains details
+ from the transaction (complements term.log)
+ * methods/http.cc:
+ - add cache-control headers even if no cache is given to allow
+ adding options for intercepting proxies
+ - add Acquire::http::ProxyAutoDetect configuration that
+ can be used to call a external helper to figure out the
+ proxy configuration and return it to apt via stdout
+ (this is a step towards WPAD and zeroconf/avahi support)
+ * abicheck/
+ - add new abitest tester using the ABI Compliance Checker from
+ http://ispras.linuxfoundation.org/index.php/ABI_compliance_checker
+
+ [ Robert Collins ]
+ * Change the package index Info methods to allow apt-cache policy to be
+ useful when using several different archives on the same host.
+ (Closes: #329814, LP: #22354)
+
+ -- Michael Vogt <mvo@debian.org> Thu, 18 Feb 2010 16:11:39 +0100
+
+apt (0.7.25.3) unstable; urgency=low
+
+ [ Christian Perrier ]
+ * Italian translation update. Closes: #567532
+
+ [ David Kalnischkies ]
+ * apt-pkg/contrib/macros.h:
+ - install the header system.h with a new name to be able to use
+ it in other headers (Closes: #567662)
+ * cmdline/acqprogress.cc:
+ - Set Mode to Medium so that the correct prefix is used.
+ Thanks Stefan Haller for the patch! (Closes: #567304 LP: #275243)
+ * ftparchive/writer.cc:
+ - generate sha1 and sha256 checksums for dsc (Closes: #567343)
+ * cmdline/apt-get.cc:
+ - don't mark as manually if in download only (Closes: #468180)
+
+ -- Michael Vogt <mvo@debian.org> Mon, 01 Feb 2010 18:41:15 +0100
+
+apt (0.7.25.2) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * apt-pkg/contrib/cdromutl.cc:
+ - fix UnmountCdrom() fails, give it a bit more time and try
+ the umount again
+ * apt-pkg/cdrom.cc:
+ - fix crash in pkgUdevCdromDevices
+ * methods/cdrom.cc:
+ - fixes in multi cdrom setup code (closes: #549312)
+ - add new "Acquire::cdrom::AutoDetect" config that enables/disables
+ the dlopen of libudev for automatic cdrom detection. Off by default
+ currently, feedback/testing welcome
+ * cmdline/apt-cdrom.cc:
+ - add new --auto-detect option that uses libudev to figure out
+ the cdrom/mount-point
+ * cmdline/apt-mark:
+ - merge fix from Gene Cash that supports markauto for
+ packages that are not in the extended_states file yet
+ (closes: #534920)
+ * ftparchive/writer.{cc,h}:
+ - merge crash fix for apt-ftparchive on hurd, thanks to
+ Samuel Thibault for the patch (closes: #566664)
+
+ [ David Kalnischkies ]
+ * apt-pkg/contrib/fileutl.cc:
+ - Fix the newly introduced method GetListOfFilesInDir to not
+ accept every file if no extension is enforced
+ (= restore old behaviour). (Closes: #565213)
+ * apt-pkg/policy.cc:
+ - accept also partfiles with "pref" file extension as valid
+ * apt-pkg/contrib/configuration.cc:
+ - accept also partfiles with "conf" file extension as valid
+ * doc/apt.conf.5.xml:
+ - reorder description and split out syntax
+ - add partfile name convention (Closes: #558348)
+ * doc/apt_preferences.conf.5.xml:
+ - describe partfile name convention also here
+ * apt-pkg/deb/dpkgpm.cc:
+ - don't segfault if term.log file can't be opened.
+ Thanks Sam Brightman for the patch! (Closes: #475770)
+ * doc/*:
+ - replace the per language addendum with a global addendum
+ - add a explanation why translations include (maybe) english
+ parts to the new global addendum (Closes: #561636)
+ * apt-pkg/contrib/strutl.cc:
+ - fix malloc asseration fail with ja_JP.eucJP locale in
+ apt-cache search. Thanks Kusanagi Kouichi! (Closes: #548884)
+
+ [ Christian Perrier ]
+ * French translation update
+
+ -- Michael Vogt <mvo@debian.org> Wed, 27 Jan 2010 16:16:10 +0100
+
+apt (0.7.25.1) unstable; urgency=low
+
+ [ Christian Perrier ]
+ * French manpage translation update
+ * Russian translation update by Yuri Kozlov
+ Closes: #564171
+
+ [Chris Leick]
+ * spot & fix various typos in all manpages
+ * German manpage translation update
+
+ [ David Kalnischkies ]
+ * cmdline/apt-cache.cc:
+ - remove translatable marker from the "%4i %s\n" string
+ * buildlib/po4a_manpage.mak:
+ - instruct debiandoc to build files with utf-8 encoding
+ * buildlib/tools.m4:
+ - fix some warning from the buildtools
+ * apt-pkg/acquire-item.cc:
+ - add configuration PDiffs::Limit-options to not download
+ too many or too big patches (Closes: #554349)
+ * debian/control:
+ - let all packages depend on ${misc:Depends}
+ * share/*-archive.gpg:
+ - remove the horrible outdated files. We already depend on
+ the keyring so we don't need to ship our own version
+ * cmdline/apt-key:
+ - errors out if wget is not installed (Closes: #545754)
+ - add --keyring option as we have now possibly many
+ * methods/gpgv.cc:
+ - pass all keyrings (TrustedParts) to gpgv instead of
+ using only one trusted.gpg keyring (Closes: #304846)
+ * methods/https.cc:
+ - finally merge the rest of the patchset from Arnaud Ebalard
+ with the CRL and Issuers options, thanks! (Closes: #485963)
+ * apt-pkg/deb/debindexfile.cc, apt-pkg/pkgcachegen.cc:
+ - add debug option Debug::pkgCacheGen
+
+ [ Michael Vogt ]
+ * cmdline/apt-get.cc:
+ - merge fix for apt-get source pkg=version regression
+ (closes: #561971)
+ * po/ru.po:
+ - merged updated ru.po, thanks to Yuri Kozlov (closes: #564171)
+
+ -- Michael Vogt <mvo@debian.org> Sat, 09 Jan 2010 21:52:36 +0100
+
+apt (0.7.25) unstable; urgency=low
+
+ [ Christian Perrier ]
+ * Fix apt-ftparchive(1) wrt description of the "-o" option.
+ Thanks to Dann Frazier for the patch. Closes: #273100
+ * po/LINGUAS. Re-disable Hebrew. Closes: #534992
+ * po/LINGUAS. Enable Asturian and Lithuanian
+ * Fix typo in apt-cache.8.xml: necessarily
+ * Fix "with with" in apt-get.8.xml
+ * Fix some of the typos mentioned by the german team
+ Closes: #479997
+ * Polish translation update by Wiktor Wandachowicz
+ Closes: #548571
+ * German translation update by Holger Wansing
+ Closes: #551534
+ * Italian translation update by Milo Casagrande
+ Closes: #555797
+ * Simplified Chinese translation update by Aron Xu
+ Closes: #558737
+ * Slovak translation update by Ivan Masár
+ Closes: #559277
+
+ [ Michael Vogt ]
+ * apt-pkg/packagemanager.cc:
+ - add output about pre-depends configuring when debug::pkgPackageManager
+ is used
+ * methods/https.cc:
+ - fix incorrect use of CURLOPT_TIMEOUT, closes: #497983, LP: #354972
+ thanks to Brian Thomason for the patch
+ * merge lp:~mvo/apt/netrc branch, this adds support for a
+ /etc/apt/auth.conf that can be used to store username/passwords
+ in a "netrc" style file (with the extension that it supports "/"
+ in a machine definition). Based on the maemo git branch (Closes: #518473)
+ (thanks also to Jussi Hakala and Julian Andres Klode)
+ * apt-pkg/deb/dpkgpm.cc:
+ - add "purge" to list of known actions
+ * apt-pkg/init.h:
+ - add compatibility with old ABI name until the next ABI break
+ * merge segfault fix from Mario Sanchez Prada, many thanks
+ (closes: #561109)
+
+ [ Brian Murray ]
+ * apt-pkg/depcache.cc, apt-pkg/indexcopy.cc:
+ - typo fix (LP: #462328)
+
+ [ Loïc Minier ]
+ * cmdline/apt-key:
+ - Emit a warning if removed keys keyring is missing and skip associated
+ checks (LP: #218971)
+
+ [ David Kalnischkies ]
+ * apt-pkg/packagemanager.cc:
+ - better debug output for ImmediateAdd with depth and why
+ - improve the message shown for failing immediate configuration
+ * doc/guide.it.sgml: moved to doc/it/guide.it.sgml
+ * doc/po4a.conf: activate translation of guide.sgml and offline.sgml
+ * doc/apt.conf.5.xml:
+ - provide a few more details about APT::Immediate-Configure
+ - briefly document the behaviour of the new https options
+ * doc/sources.list.5.xml:
+ - add note about additional apt-transport-methods
+ * doc/apt-mark.8.xml:
+ - correct showauto synopsis, thanks Andrew Schulman (Closes: #551440)
+ * cmdline/apt-get.cc:
+ - source should display his final pkg pick (Closes: #249383, #550952)
+ - source doesn't need the complete version for match (Closes: #245250)
+ - source ignores versions/releases if not available (Closes: #377424)
+ - only warn if (free) space overflows (Closes: #522238)
+ - add --debian-only as alias for --diff-only
+ * methods/connect.cc:
+ - display also strerror of "wicked" getaddrinfo errors
+ - add AI_ADDRCONFIG to ai_flags as suggested by Aurelien Jarno
+ in response to Bernhard R. Link, thanks! (Closes: #505020)
+ * buildlib/configure.mak, buildlib/config.{sub,guess}:
+ - remove (outdated) config.{sub,guess} and use the ones provided
+ by the new added build-dependency autotools-dev instead
+ * configure.in, buildlib/{xml,yodl,sgml}_manpage.mak:
+ - remove the now obsolete manpage buildsystems
+ * doc/{pl,pt_BR,es,it}/*.{sgml,xml}:
+ - convert all remaining translation to the po4a system
+ * debian/control:
+ - drop build-dependency on docbook-utils and xmlto
+ - add build-dependency on autotools-dev
+ - bump policy to 3.8.3 as we have no outdated manpages anymore
+ * debian/NEWS:
+ - fix a typo in 0.7.24: Already -> Already (Closes: #557674)
+ * ftparchive/writer.{cc,h}:
+ - add APT::FTPArchive::LongDescription to be able to disable them
+ * apt-pkg/deb/debsrcrecords.cc:
+ - use "diff" filetype for .debian.tar.* files (Closes: #554898)
+ * methods/rred.cc:
+ - rewrite to be able to handle even big patch files
+ - adopt optional mmap+iovec patch from Morten Hustveit
+ (Closes: #463354) which should speed up a bit. Thanks!
+ * methods/http{,s}.cc
+ - add config setting for User-Agent to the Acquire group,
+ thanks Timothy J. Miller! (Closes: #355782)
+ - add https options which default to http ones (Closes: #557085)
+ * debian/apt.cron.daily:
+ - check cache size even if we do nothing else otherwise, thanks
+ Francesco Poli for patch(s) and patience! (Closes: #459344)
+ * ftparchive/*:
+ - fix a few typos in strings, comments and manpage,
+ thanks Karl Goetz! (Closes: #558757)
+
+ [ Carl Chenet ]
+ * cmdline/apt-mark:
+ - print an error if a new state file can't be created
+ (Closes: #521289) and
+ - exit nicely if python-apt is not installed (Closes: #521284)
+
+ [ Chris Leick ]
+ * doc/de: German translation of manpages (Closes: #552606)
+ * doc/ various manpages:
+ - correct various errors, typos and oddities (Closes: #552535)
+ * doc/apt-secure.8.xml:
+ - replace literal with emphasis tags in Archive configuration
+ * doc/apt-ftparchive.1.xml:
+ - remove informalexample tag which hides the programlisting
+ * doc/apt-get.8.xml:
+ - change equivalent "for" to "to the" (purge command)
+ - clarify --fix-broken sentence about specifying packages
+
+ [ Eugene V. Lyubimkin ]
+ * apt-pkg/contib/strutl.h
+ - Avoid extra inner copy in APT_MKSTRCMP and APT_MKSTRCMP2.
+ * build infrastructure:
+ - Bumped libapt version, excluded eglibc from SONAME. (Closes: #448249)
+
+ [ Julian Andres Klode ]
+ * doc/apt.conf.5.xml:
+ - Deprecate unquoted values, string concatenation and explain what should
+ not be written inside a value (quotes,backslash).
+ - Restrict option names to alphanumerical characters and "/-:._+".
+ - Deprecate #include, we have apt.conf.d nowadays which should be
+ sufficient.
+ * ftparchive/apt-ftparchive.cc:
+ - Call setlocale() so translations are actually used.
+ * debian/apt.conf.autoremove:
+ - Add kfreebsd-image-* to the list (Closes: #558803)
+
+ -- Michael Vogt <mvo@debian.org> Tue, 15 Dec 2009 09:21:55 +0100
+
+apt (0.7.24) unstable; urgency=low
+
+ [ Nicolas François ]
+ * Cleaned up the first patch draft from KURASAWA Nozomu to finally
+ get po4a support for translating the man pages.
+ Many thanks to both for this excellent work! (Closes: #441608)
+ * doc/ja/*, doc/po/ja.po:
+ - remove the old ja man page translation and replace it with
+ the new po4a-powered translation by KURASAWA Nozomu.
+ * doc/*.?.xml (manpages):
+ - add contrib to author tags and also add refmiscinfo to fix warnings
+ * doc/style.txt, buildlib/defaults.mak, buildlib/manpage.mak:
+ - fix a few typos in the comments of this files
+
+ [ Michael Vogt ]
+ * apt-pkg/deb/dpkgpm.cc:
+ - when tcgetattr() returns non-zero skip all pty magic
+ (thanks to Simon Richter, closes: #509866)
+ * apt-inst/contrib/arfile.cc:
+ - show proper error message for Invalid archive members
+
+ [ David Kalnischkies ]
+ * doc/Doxyfile.in:
+ - update file with doxygen 1.6.1 (current unstable)
+ - activate DOT_MULTI_TARGETS, it is default on since doxygen 1.5.9
+ * buildlib/po4a_manpage.mak, doc/makefile, configure:
+ - simplify the makefiles needed for po4a manpages
+ * apt-pkg/contrib/configuration.cc:
+ - add a helper to easily get a vector of strings from the config
+ * apt-pkg/contrib/strutl.cc:
+ - replace unknown multibytes with ? in UTF8ToCharset (Closes: #545208)
+ * doc/apt-get.8.xml:
+ - fix two little typos in the --simulate description. (Closes: #545059)
+ * apt-pkg/aptconfiguration.cc, doc/apt.conf.5.xml:
+ - add an order subgroup to the compression types to simplify reordering
+ a bit and improve the documentation for this option group.
+ * doc/apt.conf.5.xml:
+ - document the Acquire::http::Dl-Limit option
+ - try to be crystal clear about the usage of :: and {} (Closes: #503481)
+ * doc/apt-cache.8.xml:
+ - clarify the note for the pkgnames command (Closes: #547599)
+ * doc/apt.ent, all man pages:
+ - move the description of files to globally usable entities
+ * doc/apt_preferences.5.xml:
+ - document the new preferences.d folder (Closes: #544017)
+ * methods/rred.cc:
+ - add at the top without failing (by Bernhard R. Link, Closes: #545694)
+ * buildlib/sizetable:
+ - add amd64 for cross building (by Mikhail Gusarov, Closes: #513058)
+ * debian/prerm:
+ - remove file as nobody will upgrade from 0.4.10 anymore
+ * debian/control:
+ - remove gnome-apt suggestion as it was removed from debian
+ * apt-pkg/deb/dpkgpm.cc, apt-pkg/packagemanager.cc, apt-pkg/orderlist.cc:
+ - add and document _experimental_ options to make (aggressive)
+ use of dpkg's trigger and configuration handling (Closes: #473461)
+ * cmdline/apt-get.cc:
+ - ignore versions that are not candidates when selecting a package
+ instead of a virtual one (by Marius Vollmer, Closes: #547788)
+
+ [ Christian Perrier ]
+ * doc/fr/*, doc/po/fr.po:
+ - remove the old fr man page translation and replace it with
+ the new po4a-powered translation
+ * doc/de: dropped (translation is too incomplete to be useful in
+ the transition to the po4a-powered translations)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 25 Sep 2009 19:57:25 +0200
+
+apt (0.7.23.1) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * apt-pkg/pkgcache.cc:
+ - do not set internal "needs-configure" state for packages in
+ triggers-pending state. dpkg will deal with the trigger and
+ it if does it before we trigger it, dpkg will error out
+ (LP: #414631)
+ * apt-pkg/acquire-item.cc:
+ - do not segfault on invalid items (closes: #544080)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 28 Aug 2009 21:53:20 +0200
+
+apt (0.7.23) unstable; urgency=low
+
+ [ Eugene V. Lyubimkin ]
+ * methods/{http,https,ftp}, doc/apt.conf.5.xml:
+ - Changed and unified the code that determines which proxy to use. Now
+ 'Acquire::{http,ftp}::Proxy[::<host>]' options have the highest priority,
+ and '{http,ftp}_proxy' environment variables are used only if options
+ mentioned above are not specified.
+ (Closes: #445985, #157759, #320184, #365880, #479617)
+
+ [ David Kalnischkies ]
+ * cmdline/apt-get.cc:
+ - add APT::Get::HideAutoRemove=small to display only a short line
+ instead of the full package list. (Closes: #537450)
+ - ShowBroken() in build-dep (by Mike O'Connor, Closes: #145916)
+ - check for statfs.f_type (by Robert Millan, Closes: #509313)
+ - correct the order of picked package binary vs source in source
+ - use SourceVersion instead of the BinaryVersion to get the source
+ Patch by Matt Kraai, thanks! (Closes: #382826)
+ - add pkg/archive and codename in source (Closes: #414105, #441178)
+ * apt-pkg/contrib/strutl.cc:
+ - enable thousand separator according to the current locale
+ (by Luca Bruno, Closes: #223712)
+ * doc/apt.conf.5.xml:
+ - mention the apt.conf.d dir (by Vincent McIntyre, Closes: #520831)
+ * apt-inst/contrib/arfile.cc:
+ - use sizeof instead strlen (by Marius Vollmer, Closes: #504325)
+ * doc/apt-mark.8.xml:
+ - improve manpage based on patch by Carl Chenet (Closes: #510286)
+ * apt-pkg/acquire-item.cc:
+ - use configsettings for dynamic compression type use and order.
+ Based on a patch by Jyrki Muukkonen, thanks! (LP: #71746)
+ * apt-pkg/aptconfiguration.cc:
+ - add default configuration for compression types and add lzma
+ support. Order is now bzip2, lzma, gzip, none (Closes: #510526)
+ * ftparchive/writer.cc:
+ - add lzma support also here, patch for this (and inspiration for
+ the one above) by Robert Millan, thanks!
+ * apt-pkg/depcache.cc:
+ - restore the --ignore-hold effect in the Is{Delete,Install}Ok hooks
+ * doc/apt-get.8.xml:
+ - update the source description to reflect what it actually does
+ and how it can be used. (Closes: #413021)
+ * methods/http.cc:
+ - allow empty Reason-Phase in Status-Line to please squid,
+ thanks Modestas Vainius for noticing! (Closes: #531157, LP: #411435)
+
+ [ George Danchev ]
+ * cmdline/apt-cache.cc:
+ - fix a memory leak in the xvcg method (Closes: #511557)
+ * apt-pkg/indexcopy.cc:
+ - fix a memory leak then the Release file not exists (Closes: #511556)
+
+ -- Michael Vogt <mvo@debian.org> Thu, 27 Aug 2009 14:44:39 +0200
+
+apt (0.7.22.2) unstable; urgency=low
+
+ * debian/apt.cron.daily:
+ - Make sure that VERBOSE is always set (Closes: #539366)
+ - Script can be disabled by APT::Periodic::Enable=0 (Closes: #485476)
+ - Support using debdelta to download packages (Closes: #532079)
+
+ -- Julian Andres Klode <jak@debian.org> Thu, 06 Aug 2009 12:17:19 +0200
+
+apt (0.7.22.1) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * cmdline/apt-get.cc:
+ - honor APT::Get::Only-Source properly in FindSrc() (thanks to
+ Martin Pitt for reporting the problem), also Closes: #535362.
+
+ [ Julian Andres Klode ]
+ * apt-pkg/contrib/mmap.cc:
+ - Fix FTBFS on GNU/kFreeBSD by disabling DynamicMMap::Grow() on
+ non-Linux architectures as it uses mremap (Closes: #539742).
+ * apt-pkg/sourcelist.cc:
+ - Only warn about missing sources.list if there is no sources.list.d
+ and vice versa as only one of them is needed (Closes: #539731).
+ * debian/control:
+ - Add myself to Uploaders.
+ - Increase Standards-Version to 3.8.2.0.
+
+ -- Julian Andres Klode <jak@debian.org> Mon, 03 Aug 2009 12:48:31 +0200
+
+apt (0.7.22) unstable; urgency=low
+
+ [ Christian Perrier ]
+ * Documentation translations:
+ - Fix a typo in apt-get(8) French translation. Closes: #525043
+ Thanks to Guillaume Delacour for spotting it.
+ - Updated apt.conf(5) manpgae French translation.
+ Thanks to Aurélien Couderc.
+ * Translations:
+ - fr.po
+ - sk.po. Closes: #525857
+ - ru.po. Closes: #526816
+ - eu.po. Closes: #528985
+ - zh_CN.po. Closes: #531390
+ - fr.po
+ - it.po. Closes: #531758
+ - ca.po. Closes: #531921
+ - de.po. Closes: #536430
+ * Added translations
+ - ast.po (Asturian by Marcos Alvareez Costales).
+ Closes: #529007, #529730, #535328
+
+ [ David Kalnischkies ]
+ * [ABI break] support '#' in apt.conf and /etc/apt/preferences
+ (closes: #189866)
+ * [ABI break] Allow pinning by codename (closes: #97564)
+ * support running "--simulate" as user
+ * add depth information to the debug output and show what depends
+ type triggers a autoinst (closes: #458389)
+ * add Debug::pkgDepCache::Marker with more detailed debug output
+ (closes: #87520)
+ * add Debug::pkgProblemResolver::ShowScores and make the scores
+ adjustable
+ * do not write state file in simulate mode (closes: #433007)
+ * add hook for MarkInstall and MarkDelete (closes: #470035)
+ * fix typo in apt-pkg/acquire.cc which prevents Dl-Limit to work
+ correctly when downloading from multiple sites (Closes: #534752)
+ * add the various foldmarkers in apt-pkg & cmdline (no code change)
+ * versions with a pin of -1 shouldn't be a candidate (Closes: #355237)
+ * prefer mmap as memory allocator in MMap instead of a static char
+ array which can (at least in theory) grow dynamic
+ * eliminate (hopefully all) segfaults in pkgcachegen.cc and mmap.cc
+ which can arise if cache doesn't fit into the mmap (Closes: #535218)
+ * display warnings instead of errors if the parts dirs doesn't exist
+
+ [ Michael Vogt ]
+ * honor the dpkg hold state in new Marker hooks (closes: #64141)
+ * debian/apt.cron.daily:
+ - if the timestamp is too far in the future, delete it
+ * apt-pkg/acquire.cc:
+ - make the max pipeline depth of the acquire queue configurable
+ via Acquire::Max-Pipeline-Depth
+ * apt-pkg/deb/dpkgpm.cc:
+ - add Dpkg::UseIoNice boolean option to run dpkg with ionice -c3
+ (off by default)
+ - send "dpkg-exec" message on the status fd when dpkg is run
+ - provide DPkg::Chroot-Directory config option (useful for testing)
+ - fix potential hang when in a background process group
+ * apt-pkg/algorithms.cc:
+ - consider recommends when making the scores for the problem
+ resolver
+ * apt-pkg/acquire-worker.cc:
+ - show error details of failed methods
+ * apt-pkg/contrib/fileutl.cc:
+ - if a process aborts with signal, show signal number
+ * methods/http.cc:
+ - ignore SIGPIPE, we deal with EPIPE from write in
+ HttpMethod::ServerDie() (LP: #385144)
+ * Only run Download-Upgradable and Unattended-Upgrades if the initial
+ update was successful Closes: #341970
+ * apt-pkg/indexcopy.cc:
+ - support having CDs with no Packages file (just a Packages.gz)
+ by not forcing a verification on non-existing files
+ (LP: #255545)
+ - remove the gettext from a string that consists entirely
+ of variables (LP: #56792)
+ * apt-pkg/cacheiterators.h:
+ - add missing checks for Owner == 0 in end()
+ * apt-pkg/indexrecords.cc:
+ - fix some i18n issues
+ * apt-pkg/contrib/strutl.h:
+ - add new strprintf() function to make i18n strings easier
+ - fix compiler warning
+ * apt-pkg/deb/debsystem.cc:
+ - make strings i18n able
+ * fix problematic use of tolower() when calculating the version
+ hash by using locale independent tolower_ascii() function.
+ Thanks to M. Vefa Bicakci (LP: #80248)
+ * build fixes for g++-4.4
+ * cmdline/apt-mark:
+ - add "showauto" option to show automatically installed packages
+ * document --install-recommends and --no-install-recommends
+ (thanks to Dereck Wonnacott, LP: #126180)
+ * doc/apt.conf.5.xml:
+ - merged patch from Aurélien Couderc to improve the text
+ (thanks!)
+ * [ABI] merged the libudev-dlopen branch, this allows one to pass
+ "apt-udev-auto" to Acquire::Cdrom::mount and the cdrom method will
+ dynamically find/mount the cdrom device (if libhal is available)
+
+ [ Julian Andres Klode ]
+ * apt-pkg/contrib/configuration.cc: Fix a small memory leak in
+ ReadConfigFile.
+ * Introduce support for the Enhances field. (Closes: #137583)
+ * Support /etc/apt/preferences.d, by adding ReadPinDir() (Closes: #535512)
+ * configure-index: document Dir::Etc::SourceParts and some other options
+ (Closes: #459605)
+ * Remove Eugene V. Lyubimkin from uploaders as requested.
+ * apt-pkg/contrib/hashes.cc, apt-pkg/contrib/md5.cc:
+ - Support reading until EOF if Size=0 to match behaviour of
+ SHA1Summation and SHA256Summation
+
+ [ Osamu Aoki ]
+ * Updated cron script to support backups by hardlinks and
+ verbose levels. All features turned off by default.
+ * Added more error handlings. Closes: #438803, #462734, #454989
+ * Documented all cron script related configuration items in
+ configure-index.
+
+ [ Dereck Wonnacott ]
+ * apt-ftparchive might write corrupt Release files (LP: #46439)
+ * Apply --important option to apt-cache depends (LP: #16947)
+
+ [ Otavio Salvador ]
+ * Apply patch from Sami Liedes <sliedes@cc.hut.fi> to reduce the
+ number of times we call progress bar updating and debugging
+ configuration settings.
+ * Apply patch from Sami Liedes <sliedes@cc.hut.fi> to avoid unnecessary
+ temporary allocations.
+
+ -- Michael Vogt <mvo@debian.org> Wed, 29 Jul 2009 19:16:22 +0200
+
+apt (0.7.21) unstable; urgency=low
+
+ [ Christian Perrier ]
+ * Translations:
+ - bg.po. Closes: #513211
+ - zh_TW.po. Closes: #513311
+ - nb.po. Closes: #513843
+ - fr.po. Closes: #520430
+ - sv.po. Closes: #518070
+ - sk.po. Closes: #520403
+ - it.po. Closes: #522222
+ - sk.po. Closes: #520403
+
+ [ Jamie Strandboge ]
+ * apt.cron.daily: catch invalid dates due to DST time changes
+ in the stamp files
+
+ [ Michael Vogt ]
+ * methods/gpgv.cc:
+ - properly check for expired and revoked keys (closes: #433091)
+ * apt-pkg/contrib/strutl.cc:
+ - fix TimeToStr i18n (LP: #289807)
+ * [ABI break] merge support for http redirects, thanks to
+ Jeff Licquia and Anthony Towns
+ * [ABI break] use int for the package IDs (thanks to Steve Cotton)
+ * apt-pkg/pkgcache.cc:
+ - do not run "dpkg --configure pkg" if pkg is in trigger-awaited
+ state (LP: #322955)
+ * methods/https.cc:
+ - add Acquire::https::AllowRedirect support
+ * Clarify the --help for 'purge' (LP: #243948)
+ * cmdline/apt-get.cc
+ - fix "apt-get source pkg" if there is a binary package and
+ a source package of the same name but from different
+ packages (LP: #330103)
+
+ [ Colin Watson ]
+ * cmdline/acqprogress.cc:
+ - Call pkgAcquireStatus::Pulse even if quiet, so that we still get
+ dlstatus messages on the status-fd (LP: #290234).
+
+ -- Michael Vogt <mvo@debian.org> Tue, 14 Apr 2009 14:12:51 +0200
+
+apt (0.7.20.2) unstable; urgency=medium
+
+ [ Eugene V. Lyubimkin ]
+ * Urgency set to medium due to RC bug fix.
+ * doc/apt.ent, apt-get.8.xml:
+ - Fix invalid XML entities. (Closes: #514402)
+
+ -- Eugene V. Lyubimkin <jackyf.devel@gmail.com> Sat, 07 Feb 2009 16:48:21 +0200
+
+apt (0.7.20.1) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * apt-pkg/pkgcachegen.cc:
+ - fix apt-cache search for localized description
+ (closes: #512110)
+
+ [ Christian Perrier ]
+ * Translations:
+ - fr.po: fix spelling error to "défectueux". Thanks to Thomas Péteul.
+
+ -- Michael Vogt <mvo@debian.org> Tue, 20 Jan 2009 09:35:05 +0100
+
+apt (0.7.20) unstable; urgency=low
+
+ [ Eugene V. Lyubimkin ]
+ * debian/changelog:
+ - Fixed place of 'merged install-recommends and install-task branches'
+ from 0.6.46.1 to 0.7.0. (Closes: #439866)
+ * buildlib/config.{sub,guess}:
+ - Renewed. This fixes lintian errors.
+ * doc/apt.conf.5.xml, debian/apt-transport-https:
+ - Documented briefly 'Acquire::https' group of options. (Closes: #507398)
+ - Applied patch from Daniel Burrows to document 'Debug' group of options.
+ (Closes: #457265)
+ - Mentioned 'APT::Periodic' and 'APT::Archives' groups of options.
+ (Closes: #438559)
+ - Mentioned '/* ... */' comments. (Closes: #507601)
+ * doc/examples/sources.list:
+ - Removed obsolete commented non-us deb-src entry, replaced it with
+ 'deb-src security.debian.org' one. (Closes: #411298)
+ * apt-pkg/contrib/mmap.cc:
+ - Added instruction how to work around MMap error in MMap error message.
+ (Closes: #385674, 436028)
+ * COPYING:
+ - Actualized. Removed obsolete Qt section, added GPLv2 clause.
+ (Closes: #440049, #509337)
+
+ [ Michael Vogt ]
+ * add option to "apt-get build-dep" to mark the needed
+ build-dep packages as automatic installed.
+ This is controlled via the value of
+ APT::Get::Build-Dep-Automatic and is set "false" by default.
+ Thanks to Aaron Haviland, closes: #448743
+ * apt-inst/contrib/arfile.cc:
+ - support members ending with '/' as well (thanks to Michal Cihr,
+ closes: #500988)
+
+ [ Christian Perrier ]
+ * Translations:
+ - Finnish updated. Closes: #508449
+ - Galician updated. Closes: #509151
+ - Catalan updated. Closes: #509375
+ - Vietnamese updated. Closes: #509422
+ - Traditional Chinese added. Closes: #510664
+ - French corrected (remove awful use of first person)
+
+ -- Michael Vogt <mvo@debian.org> Mon, 05 Jan 2009 08:59:20 +0100
+
+apt (0.7.19) unstable; urgency=low
+
+ [ Eugene V. Lyubimkin ]
+ * doc/sources.list.5.xml:
+ - Mentioned allowed characters in file names in /etc/apt/sources.list.d.
+ Thanks to Matthias Urlichs. (Closes: #426913)
+ * doc/apt-get.8.xml:
+ - Explicitly say that 'dist-upgrade' command may remove packages.
+ - Included '-v'/'--version' as a command to synopsis.
+ * cmdline/apt-cache.cc:
+ - Advanced built-in help. Patch by Andre Felipe Machado. (Closes: #286061)
+ - Fixed typo 'GraphVis' -> 'GraphViz'. (Closes: #349038)
+ - Removed asking to file a release-critical bug against a package if there
+ is a request to install only one package and it is not installable.
+ (Closes: #419521)
+
+ [ Michael Vogt ]
+ - fix SIGHUP handling (closes: #463030)
+
+ [ Christian Perrier ]
+ * Translations:
+ - French updated
+ - Bulgarian updated. Closes: #505476
+ - Slovak updated. Closes: #505483
+ - Swedish updated. Closes: #505491
+ - Japanese updated. Closes: #505495
+ - Korean updated. Closes: #505506
+ - Catalan updated. Closes: #505513
+ - British English updated. Closes: #505539
+ - Italian updated. Closes: #505518, #505683
+ - Polish updated. Closes: #505569
+ - German updated. Closes: #505614
+ - Spanish updated. Closes: #505757
+ - Romanian updated. Closes: #505762
+ - Simplified Chinese updated. Closes: #505727
+ - Portuguese updated. Closes: #505902
+ - Czech updated. Closes: #505909
+ - Norwegian Bokmål updated. Closes: #505934
+ - Brazilian Portuguese updated. Closes: #505949
+ - Basque updated. Closes: #506085
+ - Russian updated. Closes: #506452
+ - Marathi updated.
+ - Ukrainian updated. Closes: #506545
+
+ -- Michael Vogt <mvo@debian.org> Mon, 24 Nov 2008 10:33:54 +0100
+
+apt (0.7.18) unstable; urgency=low
+
+ [ Christian Perrier ]
+ * Translations:
+ - French updated
+ - Thai updated. Closes: #505067
+
+ [ Eugene V. Lyubimkin ]
+ * doc/examples/configure-index:
+ - Removed obsoleted header line. (Closes: #417638)
+ - Changed 'linux-kernel' to 'linux-image'.
+ * doc/sources.list.5.xml:
+ - Fixed typo and grammar in 'sources.list.d' section. Thanks to
+ Timothy G Abbott <tabbott@MIT.EDU>. (Closes: #478098)
+ * doc/apt-get.8.xml:
+ - Advanced descriptions for 'remove' and 'purge' options.
+ (Closes: #274283)
+ * debian/rules:
+ - Target 'apt' need to depend on 'build-doc'. Thanks for Peter Green.
+ Fixes FTBFS. (Closes: #504181)
+
+ [ Michael Vogt ]
+ * fix depend on libdb4.4 (closes: #501253)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 07 Nov 2008 22:13:39 +0100
+
+apt (0.7.17) unstable; urgency=low
+
+ [ Eugene V. Lyubimkin ]
+ * debian/control:
+ - 'Vcs-Bzr' field is official, used it.
+ - Bumped 'Standards-Version' to 3.8.0, no changes needed.
+ - Actualized 'Uploaders' field.
+ * doc/:
+ - Substituted 'apt-archive' with 'apt-ftparchive' in docs.
+ Patch based on work of Andre Felipe Machado. (Closes: #350865)
+ - Mentioned '/<release>' and '=<version>' for 'apt-get install' and
+ '=<version>' for 'apt-get source' in apt-get manpage. Patch based on
+ work of Andre Felipe Machado. (Closes: #399673)
+ - Mentioned more short options in the apt-get manpage. Documented 'xvcg'
+ option in the apt-cache manpage. The part of patch by Andre Felipe
+ Machado. (Closes: #176106, #355945)
+ - Documented that 'apt-get install' command should be used for upgrading
+ some of installed packages. Based on patch by Nori Heikkinen and
+ Andre Felipe Machado. (Closes: #267087)
+ - Mentioned 'apt_preferences(5)' in apt manpage. (Closes: #274295)
+ - Documented 'APT::Default-Release' in apt.conf manpage. (Closes: #430399)
+ - APT::Install-Recommends is now true by default, mentioned this in
+ configure-index example. (Closes: #463268)
+ - Added 'APT::Get::AllowUnauthenticated' to configure-index example.
+ (Closes: #320225)
+ - Documented '--no-install-recommends' option in apt-get manpage.
+ (Closes: #462962)
+ - Documented 'Acquire::PDiffs' in apt.conf manpage. (Closes: #376029)
+ - Added 'copy', 'rsh', 'ssh' to the list of recognized URI schemes in
+ sources.list manpage, as they are already described under in the manpage.
+ - Removed notice that ssh/rsh access cannot use password authentication
+ from sources.list manpage. Thanks to Steffen Joeris. (Closes: #434894)
+ - Added '(x)' to some referrings to manpages in apt-get manpage. Patch by
+ Andre Felipe Machado. (Closes: #309893)
+ - Added 'dist-upgrade' apt-get synopsis in apt-get manpage.
+ (Closes: #323866)
+
+ -- Michael Vogt <mvo@debian.org> Wed, 05 Nov 2008 13:14:56 +0100
+
+apt (0.7.17~exp4) experimental; urgency=low
+
+ * debian/rules:
+ - Fixed lintian warnings "debian/rules ignores make errors".
+ * debian/control:
+ - Substituted outdated "Source-Version" fields with "binary:Version".
+ - Added 'python-apt' to Suggests, as apt-mark need it for work.
+ - Drop Debian revision from 'doc-base' build dependency, this fixes
+ appropriate lintian warning.
+ * debian/libapt-pkg-doc.doc-base.*:
+ - Changed section: from old 'Devel' to 'Debian'. This fixes appropriate
+ lintian warnings.
+ * debian/{postrm,prerm,preinst}:
+ - Added 'set -e', fixes lintian warnings
+ 'maintainer-script-ignores-error'.
+ * dselect/makefile:
+ - Removed unneeded 'LOCAL' entry. This allows cleaning rule to run smoothly.
+ * share/lintian-overrides:
+ - Added with override of 'apt must depend on python'. Script 'apt-mark'
+ needs apt-python for working and checks this on fly. We don't want
+ python in most cases.
+ * cmdline/apt-key:
+ - Added 'unset GREP_OPTIONS' to the script. This prevents 'apt-key update'
+ failure when GREP_OPTIONS contains options that modify grep output.
+ (Closes: #428752)
+
+ -- Eugene V. Lyubimkin <jackyf.devel@gmail.com> Fri, 31 Oct 2008 23:45:17 +0300
+
+apt (0.7.17~exp3) experimental; urgency=low
+
+ * apt-pkg/acquire-item.cc:
+ - fix a merge mistake that prevents the fallback to the
+ uncompressed 'Packages' to work correctly (closes: #409284)
+
+ -- Michael Vogt <mvo@debian.org> Wed, 29 Oct 2008 09:36:24 +0100
+
+apt (0.7.17~exp2) experimental; urgency=low
+
+ [ Eugene V. Lyubimkin ]
+ * apt-pkg/acquire-item.cc:
+ - Added fallback to uncompressed 'Packages' if neither 'bz2' nor 'gz'
+ available. (Closes: #409284)
+ * apt-pkg/algorithm.cc:
+ - Strip username and password from source URL in error message.
+ (Closes: #425150)
+
+ [ Michael Vogt ]
+ * fix various -Wall warnings
+
+ -- Michael Vogt <mvo@debian.org> Tue, 28 Oct 2008 18:06:38 +0100
+
+apt (0.7.17~exp1) experimental; urgency=low
+
+ [ Luca Bruno ]
+ * Fix typos:
+ - apt-pkg/depcache.cc
+ * Fix compilation warnings:
+ - apt-pkg/acquire.cc
+ - apt-pkg/versionmatch.cc
+ * Compilation fixes and portability improvement for compiling APT against non-GNU libc
+ (thanks to Martin Koeppe, closes: #392063):
+ - buildlib/apti18n.h.in:
+ + textdomain() and bindtextdomain() must not be visible when --disable-nls
+ - buildlib/inttypes.h.in: undefine standard int*_t types
+ - Append INTLLIBS to SLIBS:
+ + cmdline/makefile
+ + ftparchive/makefile
+ + methods/makefile
+ * doc/apt.conf.5.xml:
+ - clarify whether configuration items of apt.conf are case-sensitive
+ (thanks to Vincent McIntyre, closes: #345901)
+
+ -- Luca Bruno <lethalman88@gmail.com> Sat, 11 Oct 2008 09:17:46 +0200
+
+apt (0.7.16) unstable; urgency=low
+
+ [ Luca Bruno ]
+ * doc/apt-cache.8.xml:
+ - search command uses POSIX regex, and searches for virtual packages too
+ (closes: #277536)
+ * doc/offline.sgml: clarify remote and target hosts
+ (thanks to Nikolaus Schulz, closes: #175940)
+ * Fix several typos in docs, translations and debian/changelog
+ (thanks to timeless, Nicolas Bonifas and Josh Triplett,
+ closes: #368665, #298821, #411532, #431636, #461458)
+ * Document apt-key finger and adv commands
+ (thanks to Stefan Schmidt, closes: #350575)
+ * Better documentation for apt-get --option
+ (thanks to Tomas Pospisek, closes: #386579)
+ * Retitle the apt-mark.8 manpage (thanks to Justin Pryzby, closes: #471276)
+ * Better documentation on using both APT::Default-Release and
+ /etc/apt/preferences (thanks to Ingo Saitz, closes: #145575)
+
+ [ Michael Vogt ]
+ * doc/apt-cache.8.xml:
+ - add missing citerefentry
+
+ -- Michael Vogt <mvo@debian.org> Fri, 10 Oct 2008 23:44:50 +0200
+
+apt (0.7.15) unstable; urgency=low
+
+ * Upload to unstable
+
+ -- Michael Vogt <mvo@debian.org> Sun, 05 Oct 2008 13:23:47 +0200
+
+apt (0.7.15~exp3) experimental; urgency=low
+
+ [Daniel Burrows]
+ * apt-pkg/deb/dpkgpm.cc:
+ - Store the trigger state descriptions in a way that does not break
+ the ABI. The approach taken makes the search for a string O(n) rather
+ than O(lg(n)), but since n == 4, I do not consider this a major
+ concern. If it becomes a concern, we can sort the static array and
+ use std::equal_range(). (Closes: #499322)
+
+ [ Michael Vogt ]
+ * apt-pkg/packagemanager.cc, apt-pkg/deb/dpkgpm.cc:
+ - move the state file writing into the Go() implementation
+ of dpkgpm (closes: #498799)
+ * apt-pkg/algorithms.cc:
+ - fix simulation performance drop (thanks to Ferenc Wagner
+ for reporting the issue)
+
+ -- Michael Vogt <mvo@debian.org> Wed, 01 Oct 2008 18:09:49 +0200
+
+apt (0.7.15~exp2) experimental; urgency=low
+
+ [ Michael Vogt ]
+ * apt-pkg/pkgcachegen.cc:
+ - do not add multiple identical descriptions for the same
+ language (closes: #400768)
+
+ [ Program translations ]
+ * Catalan updated. Closes: #499462
+
+ -- Michael Vogt <mvo@debian.org> Tue, 23 Sep 2008 07:29:59 +0200
+
+apt (0.7.15~exp1) experimental; urgency=low
+
+ [ Christian Perrier ]
+ * Fix typo in cron.daily script. Closes: #486179
+
+ [ Program translations ]
+ * Traditional Chinese updated. Closes: #488526
+ * German corrected and completed. Closes: #490532, #480002, #498018
+ * French completed
+ * Bulgarian updated. Closes: #492473
+ * Slovak updated. Closes: #492475
+ * Galician updated. Closes: #492794
+ * Japanese updated. Closes: #492975
+ * Fix missing space in Greek translation. Closes: #493922
+ * Greek updated.
+ * Brazilian Portuguese updated.
+ * Basque updated. Closes: #496754
+ * Romanian updated. Closes: #492773, #488361
+ * Portuguese updated. Closes: #491790
+ * Simplified Chinese updated. Closes: #489344
+ * Norwegian Bokmål updated. Closes: #480022
+ * Czech updated. Closes: #479628, #497277
+ * Korean updated. Closes: #464515
+ * Spanish updated. Closes: #457706
+ * Lithuanian added. Closes: #493328
+ * Swedish updated. Closes: #497496
+ * Vietnamese updated. Closes: #497893
+ * Portuguese updated. Closes: #498411
+ * Greek updated. Closes: #498687
+ * Polish updated.
+
+ [ Michael Vogt ]
+ * merge patch that enforces stricter https server certificate
+ checking (thanks to Arnaud Ebalard, closes: #485960)
+ * allow per-mirror specific https settings
+ (thanks to Arnaud Ebalard, closes: #485965)
+ * add doc/examples/apt-https-method-example.cof
+ (thanks to Arnaud Ebalard, closes: #485964)
+ * apt-pkg/depcache.cc:
+ - when checking for new important deps, skip critical ones
+ (closes: #485943)
+ * improve apt progress reporting, display trigger actions
+ * add DPkg::NoTriggers option so that applications that call
+ apt/aptitude (like the installer) defer trigger processing
+ (thanks to Joey Hess)
+ * doc/makefile:
+ - add examples/apt-https-method-example.conf
+
+ -- Michael Vogt <mvo@debian.org> Tue, 16 Sep 2008 21:27:03 +0200
+
+apt (0.7.14) unstable; urgency=low
+
+ [ Christian Perrier ]
+ * Mark a message from dselect backend as translatable
+ Thanks to Frédéric Bothamy for the patch
+ Closes: #322470
+
+ [ Program translations ]
+ * Simplified Chinese updated. Closes: #473360
+ * Catalan fixes. Closes: #387141
+ * Typo fix in Greek translation. Closes: #479122
+ * French updated.
+ * Thai updated. Closes: #479313
+ * Italian updated. Closes: #479326
+ * Polish updated. Closes: #479342
+ * Bulgarian updated. Closes: #479379
+ * Finnish updated. Closes: #479403
+ * Korean updated. Closes: #479426
+ * Basque updated. Closes: #479452
+ * Vietnamese updated. Closes: #479748
+ * Russian updated. Closes: #479777, #499029
+ * Galician updated. Closes: #479792
+ * Portuguese updated. Closes: #479847
+ * Swedish updated. Closes: #479871
+ * Dutch updated. Closes: #480125
+ * Kurdish added. Closes: #480150
+ * Brazilian Portuguese updated. Closes: #480561
+ * Hungarian updated. Closes: #480662
+
+ [ Otavio Salvador ]
+ * Apply patch to avoid truncating of arbitrary files. Thanks to Bryan
+ Donlan <bdonlan@fushizen.net> for the patch. Closes: #482476
+ * Avoid using dbus if dbus-daemon isn't running. Closes: #438803
+
+ [ Michael Vogt ]
+ * debian/apt.cron.daily:
+ - apply patch based on the ideas of Francesco Poli for better
+ behavior when the cache can not be locked (closes: #459344)
+
+ -- Michael Vogt <mvo@debian.org> Wed, 28 May 2008 15:19:12 +0200
+
+apt (0.7.13) unstable; urgency=low
+
+ [ Otavio Salvador ]
+ * Add missing build-depends back from build-depends-indep field.
+ Closes: #478231
+ * Make cron script quiet if cache is locked. Thanks to Ted Percival
+ <ted@midg3t.net> for the patch. Closes: #459344
+ * Add timeout support for https. Thanks to Andrew Martens
+ <andrew.martens@strangeloopnetworks.com> for the patch.
+
+ [ Goswin von Brederlow ]
+ * Add support for --no-download on apt-get update. Closes: #478517
+
+ [ Program translations ]
+ - Vietnamese updated. Closes: #479008
+
+ -- Otavio Salvador <otavio@debian.org> Fri, 02 May 2008 14:46:00 -0300
+
+apt (0.7.12) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * cmdline/apt-key:
+ - add support for a master-keyring that contains signing keys
+ that can be used to sign the archive signing keys. This should
+ make key-rollover easier.
+ * apt-pkg/deb/dpkgpm.cc:
+ - merged patch from Kees Cook to fix anoying upper-case display
+ on amd64 in sbuild
+ * apt-pkg/algorithms.cc:
+ - add APT::Update::Post-Invoke-Success script slot
+ - Make the breaks handling use the kill list. This means, that a
+ Breaks: Pkg (<< version) may put Pkg onto the remove list.
+ * apt-pkg/deb/debmetaindex.cc:
+ - add missing "Release" file uri when apt-get update --print-uris
+ is run
+ * methods/connect.cc:
+ - remember hosts with Resolve failures or connect Timeouts
+ * cmdline/apt-get.cc:
+ - fix incorrect help output for -f (LP: #57487)
+ - do two passes when installing tasks, first ignoring dependencies,
+ then resolving them and run the problemResolver at the end
+ so that it can correct any missing dependencies
+ * debian/apt.cron.daily:
+ - sleep random amount of time (default within 0-30min) before
+ starting the update to hit the mirrors less hard
+ * doc/apt_preferences.5.xml:
+ - fix typo
+ * added debian/README.source
+
+ [ Christian Perrier ]
+ * Fix typos in manpages. Thanks to Daniel Leidert for the fixes
+ Closes: #444922
+ * Fix syntax/copitalisation in some messages. Thanks to Jens Seidel
+ for pointing this and providing the patch.
+ Closes: #466845
+ * Fix Polish offline translation. Thanks to Robert Luberda for the patch
+ and apologies for applying it very lately. Closes: #337758
+ * Fix typo in offline.sgml. Closes: #412900
+
+ [ Program translations ]
+ - German updated. Closes: #466842
+ - Swedish updated.
+ - Polish updated. Closes: #469581
+ - Slovak updated. Closes: #471341
+ - French updated.
+ - Bulgarian updated. Closes: #448492
+ - Galician updated. Closes: #476839
+
+ [ Daniel Burrows ]
+ * apt-pkg/depcache.cc:
+ - Patch MarkInstall to follow currently satisfied Recommends even
+ if they aren't "new", so that we automatically force upgrades
+ when the version of a Recommends has been tightened. (Closes: #470115)
+ - Enable more complete debugging information when Debug::pkgAutoRemove
+ is set.
+ * apt-pkg/contrib/configuration.cc
+ - Lift the 1024-byte limit on lines in configuration files.
+ (Closes: #473710, #473874)
+ * apt-pkg/contrib/strutl.cc:
+ - Lift the 64000-byte limit on individual messages parsed by ReadMessages.
+ (Closes: #474065)
+ * debian/rules:
+ - Add missing Build-Depends-Indep on xsltproc, docbook-xsl, and xmlto.
+
+ -- Daniel Burrows <dburrows@debian.org> Sat, 26 Apr 2008 12:24:35 -0700
+
+apt (0.7.11) unstable; urgency=critical
+
+ [ Raise urgency to critical since it fixes a critical but for Debian
+ Installer Lenny Beta1 release ]
+
+ [ Program translations ]
+ - Vietnamese updated. Closes: #460825
+ - Basque updated. Closes: #461166
+ - Galician updated. Closes: #461468
+ - Portuguese updated. Closes: #464575
+ - Korean updated. Closes: #448430
+ - Simplified Chinese updated. Closes: #465866
+
+ [ Otavio Salvador ]
+ * Applied patch from Robert Millan <rmh@aybabtu.com> to fix the error
+ message when gpgv isn't installed, closes: #452640.
+ * Fix regression about APT::Get::List-Cleanup setting being ignored,
+ closes: #466052.
+
+ -- Otavio Salvador <otavio@debian.org> Thu, 17 Jan 2008 22:36:46 -0200
+
+apt (0.7.10) unstable; urgency=low
+
+ [ Otavio Salvador ]
+ * Applied patch from Mike O'Connor <stew@vireo.org> to add a manpage to
+ apt-mark, closes: #430207.
+ * Applied patch from Andrei Popescu <andreimpopescu@gmail.com> to add a
+ note about some front-ends in apt.8 manpage, closes: #438545.
+ * Applied patch from Aurelien Jarno <aurel32@debian.org> to avoid CPU
+ getting crazy when /dev/null is redirected to stdin (which breaks
+ buildds), closes: #452858.
+ * Applied patch from Aurelien Jarno <aurel32@debian.org> to fix building
+ with newest dpkg-shlibdeps changing the packaging building order and a
+ patch from Robert Millan <rmh@aybabtu.com> to fix parallel building,
+ closes: #452862.
+ * Applied patch from Alexander Winston <alexander.winston@comcast.net>
+ to use 'min' as symbol for minute, closes: #219034.
+ * Applied patch from Amos Waterland <apw@us.ibm.com> to allow apt to
+ work properly in initramfs, closes: #448316.
+ * Applied patch from Robert Millan <rmh@aybabtu.com> to make apt-key and
+ apt-get to ignore time conflicts, closes: #451328.
+ * Applied patch from Peter Eisentraut <peter_e@gmx.net> to fix a
+ grammatical error ("manual installed" -> "manually installed"),
+ closes: #438136.
+ * Fix cron.daily job to not call fail if apt isn't installed, closes:
+ #443286.
+ * Fix compilation warnings in apt-pkg/cdrom.cc and
+ apt-pkg/contrib/configuration.cc.
+ * Fix typo in debian/copyright file ("licened" instead of "licensed"),
+ closes: #458966.
+
+ [ Program translations ]
+ - Basque updated. Closes: #453088
+ - Vietnamese updated. Closes: #453774, #459013
+ - Japanese updated. Closes: #456909
+ - Simplified Chinese updated. Closes: #458039
+ - French updated.
+ - Norwegian Bokmål updated. Closes: #457917
+
+ [ Michael Vogt ]
+ * debian/rules
+ - fix https install location
+ * debian/apt.conf.daily:
+ - print warning if the cache can not be locked (closes: #454561),
+ thanks to Bastian Kleineidam
+ * methods/gpgv.cc:
+ - remove cruft code that caused timestamp/I-M-S issues
+ * ftparchive/contents.cc:
+ - fix error output
+ * apt-pkg/acquire-item.{cc,h}:
+ - make the authentication download code more robust against
+ servers/proxies with broken If-Range implementations
+ * apt-pkg/packagemanager.{cc,h}:
+ - propergate the Immediate flag to make hitting the
+ "E: Internal Error, Could not perform immediate configuration (2)"
+ harder
+ * debian/control:
+ - build against libdb-dev (instead of libdb4.4-dev)
+ * merged the apt--DoListUpdate branch, this provides a common interface
+ for "apt-get update" like operations for the front-ends and also provides
+ hooks to run stuff in APT::Update::{Pre,Post}-Invoke
+
+ [ Chris Cheney ]
+ * ftparchive/contents.cc:
+ - support lzma data members
+ * ftparchive/multicompress.cc:
+ - support lzma output
+
+ [ Daniel Burrows ]
+ * apt-pkg/contrib/configuration.cc:
+ - if RootDir is set, then FindFile and FindDir will return paths
+ relative to the directory stored in RootDir, closes: #456457.
+
+ [ Christian Perrier ]
+ * Fix wording for "After unpacking...". Thanks to Michael Gilbert
+ for the patch. Closes: #260825
+
+ -- Michael Vogt <mvo@debian.org> Mon, 07 Jan 2008 21:40:47 +0100
+
+apt (0.7.9) unstable; urgency=low
+
+ [ Christian Perrier ]
+ * Add several languages to LINGUAS and, therefore, really ship the relevant
+ translation:
+ Arabic, Dzongkha, Khmer, Marathi, Nepali, Thai
+ Thanks to Theppitak Karoonboonyanan for checking this out. Closes: #448321
+
+ [ Program translations ]
+ - Korean updated. Closes: #448430
+ - Galician updated. Closes: #448497
+ - Swedish updated.
+
+ [ Otavio Salvador ]
+ * Fix configure script to check for CURL library and headers presence.
+ * Applied patch from Brian M. Carlson <sandals@crustytoothpaste.ath.cx>
+ to add backward support for arches that lacks pselect support,
+ closes: #448406.
+ * Umount CD-ROM when calling apt-cdrom ident, except when called with
+ -m, closes: #448521.
+
+ -- Otavio Salvador <otavio@debian.org> Wed, 31 Oct 2007 13:37:26 -0200
+
+apt (0.7.8) unstable; urgency=low
+
+ * Applied patch from Daniel Leidert <daniel.leidert@wgdd.de> to fix
+ APT::Acquire::Translation "none" support, closes: #437523.
+ * Applied patch from Daniel Burrows <dburrows@debian.org> to add support
+ for the Homepage field (ABI break), closes: #447970.
+ * Applied patch from Frans Pop <elendil@planet.nl> to fix a trailing
+ space after cd label, closes: #448187.
+
+ -- Otavio Salvador <otavio@debian.org> Fri, 26 Oct 2007 18:20:13 -0200
+
+apt (0.7.7) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * apt-inst/contrib/extracttar.cc:
+ - fix fd leak for zero size files (thanks to Bill Broadley for
+ reporting this bug)
+ * apt-pkg/acquire-item.cc:
+ - remove zero size files on I-M-S hit
+ * methods/https.cc:
+ - only send LastModified if we actually have a file
+ - send range request with if-range
+ - delete failed downloads
+ - delete zero size I-M-S hits
+ * apt-pkg/deb/dpkgpm.{cc,h}:
+ - merged dpkg-log branch, this lets you specify a
+ Dir::Log::Terminal file to log dpkg output to
+ (ABI break)
+ - fix parse error when dpkg sends unexpected data
+ * merged apt--sha256 branch to fully support the new
+ sha256 checksums in the Packages and Release files
+ (ABI break)
+ * apt-pkg/pkgcachegen.cc:
+ - increase default mmap size
+ * tests/local-repo:
+ - added local repository testcase
+ * apt-pkg/acquire.cc:
+ - increase MaxPipeDepth for the internal worker<->method
+ communication to 1000 for the debtorrent backend
+ * make apt build with g++ 4.3
+ * fix missing SetExecClose() call when the status-fd is used
+ * debian/apt.cron.daily:
+ - move unattended-upgrade before apt-get autoclean
+ * fix "purge" commandline argument, closes: #133421
+ (thanks to Julien Danjou for the patch)
+ * cmdline/apt-get.cc:
+ - do not change the auto-installed information if a package
+ is reinstalled
+ * apt-pkg/acquire-item.cc:
+ - fix crash in diff acquire code
+ * cmdline/apt-mark:
+ - Fix chmoding after have renamed the extended-states file (LP: #140019)
+ (thanks to Laurent Bigonville)
+ * apt-pkg/depcache.cc:
+ - set "APT::Install-Recommends" to true by default (OMG!)
+ * debian/apt.cron.daily:
+ - only run the cron job if apt-get check succeeds (LP: #131719)
+
+ [ Program translations ]
+ - French updated
+ - Basque updated. Closes: #436425
+ - Fix the zh_CN translator's name in debian/changelog for 0.7.2
+ Closes: #423272
+ - Vietnamese updated. Closes: #440611
+ - Danish updated. Closes: #441102
+ - Thai added. Closes: #442833
+ - Swedish updated.
+ - Galician updated. Closes: #446626
+
+ [ Otavio Salvador ]
+ * Add hash support to copy method. Thanks Anders Kaseorg by the patch
+ (closes: #436055)
+ * Reset curl options and timestamp between downloaded files. Thanks to
+ Ryan Murray <rmurray@debian.org> for the patch (closes: #437150)
+ * Add support to apt-key to export keys to stdout. Thanks to "Dwayne
+ C. Litzenberger" <dlitz@dlitz.net> for the patch (closes: #441942)
+ * Fix compilation warnings:
+ - apt-pkg/indexfile.cc: conversion from string constant to 'char*';
+ - apt-pkg/acquire-item.cc: likewise;
+ - apt-pkg/cdrom.cc: '%lu' expects 'long unsigned int', but argument
+ has type 'size_t';
+ - apt-pkg/deb/dpkgpm.cc: initialization order and conversion from
+ string constant to 'char*';
+ - methods/gpgv.cc: conversion from string constant to 'char*';
+ - methods/ftp.cc: likewise;
+ - cmdline/apt-extracttemplates.cc: likewise;
+ - apt-pkg/deb/debmetaindex.cc: comparison with string literal results
+ in unspecified behaviour;
+ * cmdline/apt-get.cc: adds 'autoremove' as a valid comment to usage
+ statement of apt-get (closes: #445468).
+ * cmdline/apt-get.cc: really applies Julien Danjou <acid@debian.org>
+ patch to add 'purge' command line argument (closes: #133421).
+
+ [ Ian Jackson ]
+ * dpkg-triggers: Deal properly with new package states.
+
+ [ Colin Watson ]
+ * apt-pkg/contrib/mmap.cc:
+ - don't fail if msync() returns > 0
+
+ -- Michael Vogt <mvo@debian.org> Tue, 23 Oct 2007 14:58:03 +0200
+
+apt (0.7.6) unstable; urgency=low
+
+ * Applied patch from Aurelien Jarno <aurel32@debian.org> to fix wrong
+ directory downloading on non-linux architectures (closes: #435597)
+
+ -- Otavio Salvador <otavio@debian.org> Wed, 01 Aug 2007 19:49:51 -0300
+
+apt (0.7.5) unstable; urgency=low
+
+ [ Otavio Salvador ]
+ * Applied patch from Guillem Jover <guillem@debian.org> to use
+ dpkg-architecture to get the host architecture (closes: #407187)
+ * Applied patch from Guillem Jover <guillem@debian.org> to add
+ support to add lzma support (closes: #408201)
+
+ [ Michael Vogt ]
+ * apt-pkg/depcache.cc:
+ - support a list of sections for:
+ APT::Install-Recommends-Sections
+ APT::Never-MarkAuto-Sections
+ * methods/makefile:
+ - install lzma symlink method (for full lzma support)
+ * debian/control:
+ - suggest "lzma"
+
+ -- Otavio Salvador <otavio@ossystems.com.br> Wed, 25 Jul 2007 20:16:46 -0300
+
+apt (0.7.4) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * cmdline/apt-get.cc:
+ - fix in the task-install code regexp (thanks to Adam Conrad and
+ Colin Watson)
+ - support task removal too: apt-get remove taskname^
+ (thanks to Matt Zimmerman reporting this problem)
+
+ [ Otavio Salvador ]
+ * Fix a typo on 0.7.3 changelog entry about g++ (7.3 to 4.3)
+ * Fix compilation warnings:
+ - apt-pkg/contrib/configuration.cc: wrong argument type;
+ - apt-pkg/deb/dpkgpm.cc: wrong signess;
+ - apt-pkg-acquire-item.cc: wrong signess and orderned initializers;
+ - methods/https.cc:
+ - type conversion;
+ - unused variable;
+ - changed SetupProxy() method to void;
+ * Simplified HttpMethod::Fetch on http.cc removing Tail variable;
+ * Fix pipeline handling on http.cc (closes: #413324)
+ * Fix building to properly support binNMUs. Thanks to Daniel Schepler
+ <schepler@math.unipd.it> by the patch (closes: #359634)
+ * Fix example for Install-{Recommends,Suggests} options on
+ configure-index example file. Thanks to Peter Eisentraut
+ <peter_e@gmx.net> by the patch (closes: #432223)
+
+ [ Christian Perrier ]
+ * Basque translation update. Closes: ##423766
+ * Unfuzzy formerly complete translations
+ * French translation update
+ * Re-generate PO(T) files
+ * Spanish translation update
+ * Swedish translation update
+
+ -- Otavio Salvador <otavio@debian.org> Tue, 24 Jul 2007 09:55:50 -0300
+
+apt (0.7.3) unstable; urgency=low
+
+ * fixed compile errors with g++ 4.3 (thanks to
+ Daniel Burrows, closes: #429378)
+ * fixes in the auto-mark code (thanks to Daniel
+ Burrows)
+ * fix FTBFS by changing build-depends to
+ libcurl4-gnutls-dev (closes: #428363)
+ * cmdline/apt-get.cc:
+ - fix InstallTask code when a pkgRecord ends
+ with a single '\n' (thanks to Soren Hansen for reporting)
+ * merged from Christian Perrier:
+ * vi.po: completed to 532t, again. Closes: #429899
+ * gl.po: completed to 532t. Closes: #429506
+ * vi.po: completed to 532t. Closes: #428672
+ * Update all PO and the POT. Gives 514t14f4u for formerly
+ complete translations
+ * fr.po: completed to 532t
+ * ku.po, uk.po, LINGUAS: reintegrate those translations
+ which disappeared from the BZR repositories
+
+ -- Michael Vogt <mvo@debian.org> Sun, 01 Jul 2007 12:31:29 +0200
+
+apt (0.7.2-0.1) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Build-depend on libcurl4-gnutls-dev instead of the obsolete
+ libcurl3-gnutls-dev. Closes: #428363.
+
+ -- Steve Langasek <vorlon@debian.org> Thu, 28 Jun 2007 18:46:53 -0700
+
+apt (0.7.2) unstable; urgency=low
+
+ * merged the debian/experimental changes back
+ into the debian/sid branch
+ * merged from Christian Perrier:
+ * mr.po: New Marathi translation Closes: #416806
+ * zh_CN.po: Updated by Kov Chai Closes: #416822
+ * tl.po: Updated by Eric Pareja Closes: #416638
+ * gl.po: Updated by Jacobo Tarrio
+ Closes: #412828
+ * da.po: Updated by Claus Hindsgaul
+ Closes: #409483
+ * fr.po: Remove a non-breakable space for usability
+ issues. Closes: #408877
+ * ru.po: Updated Russian translation. Closes: #405476
+ * *.po: Unfuzzy after upstream typo corrections
+ * buildlib/archtable:
+ - added support for sh3/sh4 (closes: #424870)
+ - added support for m32r (closes: #394096)
+ * buildlib/systemtable:
+ - added support for lpia
+ * configure.in:
+ - check systemtable for architecture mapping too
+ * fix error in AutocleanInterval, closes: #319339
+ (thanks to Israel G. Lugo for the patch)
+ * add "purge" commandline argument, closes: #133421)
+ (thanks to Julien Danjou for the patch)
+ * add "purge" commandline argument, closes: #133421)
+ (thanks to Julien Danjou for the patch)
+ * fix FTBFS with gcc 4.3, closes: #417090
+ (thanks to Martin Michlmayr for the patch)
+ * add --dsc-only option, thanks to K. Richard Pixley
+ * Removed the more leftover #pragma interface/implementation
+ closes: #306937 (thanks to Andreas Henriksson for the patch)
+
+ -- Michael Vogt <mvo@debian.org> Wed, 06 Jun 2007 23:19:50 +0200
+
+apt (0.7.1) experimental; urgency=low
+
+ * ABI library name change because it's built against
+ new glibc
+ * implement SourceVer() in pkgRecords
+ (thanks to Daniel Burrows for the patch!)
+ * apt-pkg/algorithm.cc:
+ - use clog for all debugging
+ - only increase the score of installed applications if they
+ are not obsolete
+ - fix resolver bug on removal triggered by weak-dependencies
+ with or-groups
+ * methods/http.cc:
+ - send apt version in User-Agent
+ * apt-pkg/deb/debrecords.cc:
+ - fix SHA1Hash() return value
+ * apt-pkg/cdrom.cc:
+ - only unmount if APT::CDROM::NoMount is false
+ * methods/cdrom.cc:
+ - only umount if it was mounted by the method before
+ * po/gl.po:
+ - fix error translation that causes trouble to lsb_release
+ * apt-pkg/acquire-item.cc:
+ - if decompression of a index fails, delete the index
+ * apt-pkg/acquire.{cc,h}:
+ - deal better with duplicated sources.list entries (avoid
+ double queuing of URLs) - this fixes hangs in bzip/gzip
+ * merged from Christian Perrier:
+ * mr.po: New Marathi translation Closes: #416806
+ * zh_CN.po: Updated by Eric Pareja Closes: #416822
+ * tl.po: Updated by Eric Pareja Closes: #416638
+ * gl.po: Updated by Jacobo Tarrio
+ Closes: #412828
+ * da.po: Updated by Claus Hindsgaul
+ Closes: #409483
+ * fr.po: Remove a non-breakable space for usability
+ issues. Closes: #408877
+ * ru.po: Updated Russian translation. Closes: #405476
+ * *.po: Unfuzzy after upstream typo corrections
+ * vi.po: Updated to 515t. Closes: #426976
+ * eu.po: Updated to 515t. Closes: #423766
+ * pt.po: 515t. Closes: #423111
+ * fr.po: Updated by Christian Perrier
+ * Update all PO and the POT. Gives 513t2f for formerly
+ complete translations
+ * apt-pkg/policy.cc:
+ - allow multiple packages (thanks to David Foerster)
+
+ -- Michael Vogt <mvo@debian.org> Wed, 2 May 2007 13:43:44 +0200
+
+apt (0.7.0) experimental; urgency=low
+
+ * Package that contains all the new features
+ * Removed all #pragma interface/implementation
+ * Branch that contains all the new features:
+ * translated package descriptions
+ * task install support
+ * automatic dependency removal (thanks to Daniel Burrows)
+ * merged support for the new dpkg "Breaks" field
+ (thanks to Ian Jackson)
+ * handle network failures more gracefully on "update"
+ * support for unattended-upgrades (via unattended-upgrades
+ package)
+ * added apt-transport-https method
+ * merged "install-recommends" branch (ABI break):
+ - new "--install-recommends"
+ - install new recommends on "upgrade" if --install-recommends is
+ given
+ - new "--fix-policy" option to install all packages with unmet
+ important dependencies (useful with --install-recommends to
+ see what not-installed recommends are on the system)
+ - fix of recommended packages display (only show CandidateVersion
+ fix or-group handling)
+ * merged "install-task" branch (use with "apt-get install taskname^")
+
+ -- Michael Vogt <mvo@debian.org> Fri, 12 Jan 2007 20:48:07 +0100
+
+apt (0.6.46.4-0.1) unstable; urgency=emergency
+
+ * NMU
+ * Fix broken use of awk in apt-key that caused removal of the wrong keys
+ from the keyring. Closes: #412572
+
+ -- Joey Hess <joeyh@debian.org> Mon, 26 Feb 2007 16:00:22 -0500
+
+apt (0.6.46.4) unstable; urgency=high
+
+ * ack NMU (closes: #401017)
+ * added apt-secure.8 to "See also" section
+ * apt-pkg/deb/dpkgpm.cc:
+ - added "Dpkg::StopOnError" variable that controls if apt
+ will abort on errors from dpkg
+ * apt-pkg/deb/debsrcrecords.{cc,h}:
+ - make the Buffer grow dynamically (closes: #400874)
+ * Merged from Christian Perrier bzr branch:
+ - uk.po: New Ukrainian translation: 483t28f3u
+ - el.po: Update to 503t9f2u
+ - de.po: Updates and corrections.
+ * apt-pkg/contrib/progress.cc:
+ - OpProgress::CheckChange optimized, thanks to Paul Brook
+ (closes: #398381)
+ * apt-pkg/contrib/sha256.cc:
+ - fix building with noopt
+
+ -- Michael Vogt <mvo@debian.org> Thu, 7 Dec 2006 10:49:50 +0100
+
+apt (0.6.46.3-0.2) unstable; urgency=high
+
+ * Non-maintainer upload with permission of Michael Vogt.
+ * Fix FTBFS on most arches (regression from the fix of #400874)
+
+ -- Andreas Barth <aba@not.so.argh.org> Tue, 5 Dec 2006 15:51:22 +0000
+
+apt (0.6.46.3-0.1) unstable; urgency=high
+
+ * Non-maintainer upload with permission of Michael Vogt.
+ * Fix segfault at apt-get source. Closes: #400874
+ * Add apt-key update in postinst, so that debian-archive-keyring doesn't
+ need to depend on apt >= 0.6. Closes: #401114
+ * Don't double-queue pdiff files. Closes: #401017
+
+ -- Andreas Barth <aba@not.so.argh.org> Tue, 5 Dec 2006 10:34:56 +0000
+
+apt (0.6.46.3) unstable; urgency=low
+
+ * apt-pkg/deb/dpkgpm.cc:
+ - make progress reporting robust against multiline error
+ messages
+
+ * Merged from Christian Perrier bzr branch:
+ - ca.po: Updated to 514t
+ - be.po: Updated to 514t
+ - it.po: Updated to 514t
+ - hu.po: Updated to 514t
+ - zh_TW.po: Updated to 514t
+ - ar.po: Updated to 293t221u.
+ - ru.po: Updated to 514t. Closes: #392466
+ - nb.po: Updated to 514t. Closes: #392466
+ - pt.po: Updated to 514t. Closes: #393199
+ - fr.po: One spelling error corrected: s/accèder/accéder
+ - km.po: Updated to 514t.
+ - ko.po: Updated to 514t.
+ - bg.po: Updated to 514t.
+ - de.po: Updated to 514t.
+ - en_GB.po: Updated to 514t.
+
+ -- Michael Vogt <mvo@debian.org> Thu, 2 Nov 2006 11:37:58 +0100
+
+apt (0.6.46.2) unstable; urgency=low
+
+ * debian/control:
+ - depend on debian-archive-keyring to offer clean upgrade path
+ (closes: #386800)
+ * Merged from Christian Perrier bzr branch:
+ - es.po: Updated to 514t. Closes: #391661
+ - da.po: Updated to 514t. Closes: #391424
+ - cs.po: Updated. Closes: #391064
+ - es.po: Updated to 514t. Closes: #391661
+ - da.po: Updated to 514t. Closes: #391424
+
+ -- Michael Vogt <mvo@debian.org> Wed, 11 Oct 2006 09:03:15 +0200
+
+apt (0.6.46.1) unstable; urgency=low
+
+ * methods/gzip.cc:
+ - deal with empty files
+ * Applied patch from Daniel Schepler to make apt bin-NMU able.
+ (closes: bug#359634)
+ * rebuild against current g++ because of:
+ http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29289
+ (closes: #390189)
+ * fix broken i18n in the dpkg progress reporting, thanks to
+ Frans Pop and Steinar Gunderson. (closes: #389261)
+ * Merged from Christian Perrier bzr branch:
+ * fi.po: Updated to 514t. Closes: #390149
+ * eu.po: Updated to 514t. Closes: #389725
+ * vi.po: Updated to 514t. Closes: #388555
+ * make the internal buffer in pkgTagFile grow dynamically
+ (closes: #388708)
+
+ -- Michael Vogt <mvo@debian.org> Mon, 2 Oct 2006 20:42:20 +0200
+
+apt (0.6.46) unstable; urgency=low
+
+ * debian/control:
+ - switched to libdb4.4 for building (closes: #381019)
+ * cmdline/apt-get.cc:
+ - show only the recommends/suggests for the candidate-version, not for all
+ versions of the package (closes: #257054)
+ - properly handle recommends/suggests or-groups when printing the list of
+ suggested/recommends packages (closes: #311619)
+ * methods/http.cc:
+ - check more careful for incorrect proxy settings (closes: #378868)
+ * methods/gzip.cc:
+ - don't hang when /var is full (closes: #341537), thanks to
+ Luis Rodrigo Gallardo Cruz for the patch
+ * doc/examples/sources.list:
+ - removed non-us.debian.org from the example (closes: #380030,#316196)
+ * Merged from Christian Perrier bzr branch:
+ * ro.po: Updated to 514t. Closes: #388402
+ * dz.po: Updated to 514t. Closes: #388184
+ * it.po: Fixed typos. Closes: #387812
+ * ku.po: New kurdish translation. Closes: #387766
+ * sk.po: Updated to 514t. Closes: #386851
+ * ja.po: Updated to 514t. Closes: #386537
+ * gl.po: Updated to 514t. Closes: #386397
+ * fr.po: Updated to 516t.
+ * fi.po: Updated to 512t. Closes: #382702
+ * share/archive-archive.gpg:
+ - removed the outdated amd64 and debian-2004 keys
+ * apt-pkg/tagfile.cc:
+ - applied patch from Jeroen van Wolffelaar to make the tags
+ caseinsensitive (closes: #384182)
+ - reverted MMap use in the tagfile because it does not work
+ across pipes (closes: #383487)
+
+ -- Michael Vogt <mvo@debian.org> Thu, 21 Sep 2006 10:25:03 +0200
+
+apt (0.6.45) unstable; urgency=low
+
+ * apt-pkg/contrib/sha256.cc:
+ - fixed the sha256 generation (closes: #378183)
+ * ftparchive/cachedb.cc:
+ - applied patch from Anthony Towns to fix Clean() function
+ (closes: #379576)
+ * doc/apt-get.8.xml:
+ - fix path to the apt user build (Closes: #375640)
+ * doc/apt-cache.8.xml:
+ - typo (Closes: #376408)
+ * apt-pkg/deb/dpkgpm.cc:
+ - make progress reporting more robust against multiline error
+ messages (first half of a fix for #374195)
+ * doc/examples/configure-index:
+ - document Debug::pkgAcquire::Auth
+ * methods/gpgv.cc:
+ - deal with gpg error "NODATA". Closes: #296103, Thanks to
+ Luis Rodrigo Gallardo Cruz for the patch
+ * apt-inst/contrib/extracttar.cc:
+ - fix for string mangling, closes: #373864
+ * apt-pkg/acquire-item.cc:
+ - check for bzip2 in /bin (closes: #377391)
+ * apt-pkg/tagfile.cc:
+ - make it work on non-mapable files again, thanks
+ to James Troup for confirming the fix (closes: #376777)
+ * Merged from Christian Perrier bzr branch:
+ * ko.po: Updated to 512t. Closes: #378901
+ * hu.po: Updated to 512t. Closes: #376330
+ * km.po: New Khmer translation: 506t6f. Closes: #375068
+ * ne.po: New Nepali translation: 512t. Closes: #373729
+ * vi.po: Updated to 512t. Closes: #368038
+ * zh_TW.po: Remove an extra %s in one string. Closes: #370551
+ * dz.po: New Dzongkha translation: 512t
+ * ro.po: Updated to 512t
+ * eu.po: Updated
+ * eu.po: Updated
+ * fix apt-get dist-upgrade
+ * fix warning if no /var/lib/apt/extended_states is present
+ * don't download Translations for deb-src sources.list lines
+ * apt-pkg/tagfile.cc:
+ - support not-mmapable files again
+
+ -- Michael Vogt <mvo@debian.org> Thu, 27 Jul 2006 00:52:05 +0200
+
+apt (0.6.44.2exp1) experimental; urgency=low
+
+ * added support for i18n of the package descriptions
+ * added support for aptitude like auto-install tracking (a HUGE
+ HUGE thanks to Daniel Burrows who made this possible)
+ * synced with the http://people.debian.org/~mvo/bzr/apt/debian-sid branch
+ * build from http://people.debian.org/~mvo/bzr/apt/debian-experimental
+
+ -- Michael Vogt <mvo@debian.org> Mon, 3 Jul 2006 21:50:31 +0200
+
+apt (0.6.44.2) unstable; urgency=low
+
+ * apt-pkg/depcache.cc:
+ - added Debug::pkgDepCache::AutoInstall (thanks to infinity)
+ * apt-pkg/acquire-item.cc:
+ - fix missing chmod() in the new acquire code
+ (thanks to Bastian Blank, Closes: #367425)
+ * merged from
+ http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main:
+ * sk.po: Completed to 512t
+ * eu.po: Completed to 512t
+ * fr.po: Completed to 512t
+ * sv.po: Completed to 512t
+ * Update all PO and the POT. Gives 506t6f for formerly
+ complete translations
+
+ -- Michael Vogt <mvo@debian.org> Wed, 14 Jun 2006 12:00:57 +0200
+
+apt (0.6.44.1-0.1) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Don't give an error when parsing empty Packages/Sources files.
+ (Closes: #366931, #367086, #370160)
+
+ -- Steinar H. Gunderson <sesse@debian.org> Fri, 9 Jun 2006 00:52:21 +0200
+
+apt (0.6.44.1) unstable; urgency=low
+
+ * apt-pkg/acquire-item.cc:
+ - fix reversed logic of the "Acquire::PDiffs" option
+ * merged from
+ http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main:
+ - po/LINGUAS: added "bg" Closes: #360262
+ - po/gl.po: Galician translation update. Closes: #366849
+ - po/hu.po: Hungarian translation update. Closes: #365448
+ - po/cs.po: Czech translation updated. Closes: #367244
+ * apt-pkg/contrib/sha256.cc:
+ - applied patch to fix unaligned access problem. Closes: #367417
+ (thanks to David Mosberger)
+
+ -- Michael Vogt <mvo@debian.org> Tue, 16 May 2006 21:51:16 +0200
+
+apt (0.6.44) unstable; urgency=low
+
+ * apt-pkg/acquire.cc: don't show ETA if it is 0 or absurdely large
+ * apt-pkg/contrib/sha256.{cc,h},hashes.{cc,h}: support for sha256
+ (thanks to Anthony Towns)
+ * ftparchive/cachedb.{cc,h},writer.{cc,h}: optimizations
+ (thanks to Anthony Towns)
+ * apt pdiff support from experimental merged
+ * apt-pkg/deb/dpkgpm.cc: wording fixes (thanks to Matt Zimmerman)
+ * apt-pkg/deb/dpkgpm.cc:
+ - wording fixes (thanks to Matt Zimmerman)
+ - fix error in dpkg interaction (closes: #364513, thanks to Martin Dickopp)
+ * apt-pkg/tagfile.{cc,h}:
+ - use MMap to read the entries (thanks to Zephaniah E. Hull for the
+ patch) Closes: #350025
+ * Merge from http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main:
+ * bg.po: Added, complete to 512t. Closes: #360262
+ * doc/apt-ftparchive.1.xml:
+ - fix documentation for "SrcPackages" -> "Sources"
+ (thanks to Bart Martens for the patch, closes: #307756)
+ * debian/libapt-pkg-doc.doc-base.cache:
+ - remove broken charackter from description (closes: #361129)
+ * apt-inst/deb/dpkgdb.cc, methods/gpgv.cc:
+ - i18n fixes (closes: #349298)
+ * debian/postinst: don't fail on not available
+ /usr/share/doc/apt/examples/sources.list (closes: #361130)
+ * methods/ftp.cc:
+ - unlink empty file in partial if the download failed because
+ the file is missing on the server (closes: #316337)
+ * apt-pkg/deb/debversion.cc:
+ - treats a version string with explicit zero epoch equal
+ than the same without epoch (Policy 5.6.12, closes: #363358)
+ Thanks to Lionel Elie Mamane for the patch
+
+ -- Michael Vogt <mvo@debian.org> Mon, 8 May 2006 22:28:53 +0200
+
+apt (0.6.43.3) unstable; urgency=low
+
+ * Merge bubulle@debian.org--2005/apt--main--0 up to patch-186:
+ * ca.po: Completed to 512t. Closes: #351592
+ * eu.po: Completed to 512t. Closes: #350483
+ * ja.po: Completed to 512t. Closes: #349806
+ * pl.po: Completed to 512t. Closes: #349514
+ * sk.po: Completed to 512t. Closes: #349474
+ * gl.po: Completed to 512 strings Closes: #349407
+ * sv.po: Completed to 512 strings Closes: #349210
+ * ru.po: Completed to 512 strings Closes: #349154
+ * da.po: Completed to 512 strings Closes: #349084
+ * fr.po: Completed to 512 strings
+ * vi.po: Completed to 511 strings Closes: #348968
+ * zh_CN.po: Completed to 512t. Closes: #353936
+ * it.po: Completed to 512t. Closes: #352803
+ * pt_BR.po: Completed to 512t. Closes: #352419
+ * LINGUAS: Add Welsh
+ * *.po: Updated from sources (512 strings)
+ * apt-pkg/deb/deblistparser.cc:
+ - don't explode on a DepCompareOp in a Provides line, but warn about
+ it and ignore it otherwise (thanks to James Troup for reporting it)
+ * cmdline/apt-get.cc:
+ - don't lock the lists directory in DoInstall, breaks --print-uri
+ (thanks to James Troup for reporting it)
+ * debian/apt.dirs: create /etc/apt/sources.list.d
+ * make apt-cache madison work without deb-src entries (#352583)
+ * cmdline/apt-get.cc: only run the list-cleaner if a update was
+ successful
+
+ -- Michael Vogt <mvo@debian.org> Wed, 22 Feb 2006 10:13:04 +0100
+
+apt (0.6.43.2) unstable; urgency=low
+
+ * Merge bubulle@debian.org--2005/apt--main--0 up to patch-166:
+ - en_GB.po, de.po: fix spaces errors in "Ign " translations Closes: #347258
+ - makefile: make update-po a pre-requisite of clean target so
+ that POT and PO files are always up-to-date
+ - sv.po: Completed to 511t. Closes: #346450
+ - sk.po: Completed to 511t. Closes: #346369
+ - fr.po: Completed to 511t
+ - *.po: Updated from sources (511 strings)
+ - el.po: Completed to 511 strings Closes: #344642
+ - da.po: Completed to 511 strings Closes: #348574
+ - es.po: Updated to 510t1f Closes: #348158
+ - gl.po: Completed to 511 strings Closes: #347729
+ - it.po: Yet another update Closes: #347435
+ * added debian-archive-keyring to the Recommends (closes: #347970)
+ * fixed message in apt-key to install debian-archive-keyring
+ * typos fixed in apt-cache.8 (closes: #348348, #347349)
+ * add patch to fix http download corruption problem (thanks to
+ Petr Vandrovec, closes: #280844, #290694)
+
+ -- Michael Vogt <mvo@debian.org> Thu, 19 Jan 2006 00:06:33 +0100
+
+apt (0.6.43.1) unstable; urgency=low
+
+ * Merge bubulle@debian.org--2005/apt--main--0 up to patch-148:
+ * fr.po: Completed to 510 strings
+ * it.po: Completed to 510t
+ * en_GB.po: Completed to 510t
+ * cs.po: Completed to 510t
+ * zh_CN.po: Completed to 510t
+ * el.po: Updated to 510t
+ * vi.po: Updated to 383t93f34u
+ * tl.po: Completed to 510 strings (Closes: #344306)
+ * sv.po: Completed to 510 strings (Closes: #344056)
+ * LINGUAS: disabled Hebrew translation. (Closes: #313283)
+ * eu.po: Completed to 510 strings (Closes: #342091)
+ * apt-get source won't download already downloaded files again
+ (closes: #79277)
+ * share/debian-archive.gpg: new 2006 ftp-archive signing key added
+ (#345891)
+ * redownload the Release file if IMS-Hit and gpg failure
+ * deal with multiple signatures on a Release file
+
+ -- Michael Vogt <mvo@debian.org> Fri, 6 Jan 2006 01:17:08 +0100
+
+apt (0.6.43) unstable; urgency=medium
+
+ * Merge bubulle@debian.org--2005/apt--main--0 up to patch-132:
+ * zh_CN.po: Completed to 510 strings(Closes: #338267)
+ * gl.po: Completed to 510 strings (Closes: #338356)
+ * added support for "/etc/apt/sources.list.d" directory
+ (closes: #66325)
+ * make pkgDirStream (a bit) more complete
+ * fix bug in pkgCache::VerIterator::end() (thanks to Daniel Burrows)
+ (closes: #339533)
+ * pkgAcqFile is more flexible now (closes: #57091)
+ * support a download rate limit for http (closes: #146877)
+ * included lots of the speedup changes from #319377
+ * add stdint.h to contrib/md5.h (closes: #340448)
+ * ABI change, library name changed (closes: #339147)
+ * Fix GNU/kFreeBSD crash on non-existing server file (closes: #317718)
+ * switch to libdb4.3 in build-depends
+
+ -- Michael Vogt <mvo@debian.org> Tue, 29 Nov 2005 00:17:07 +0100
+
+apt (0.6.42.3) unstable; urgency=low
+
+ * Merge bubulle@debian.org--2005/apt--main--0 up to patch-129:
+ - patch-118: Russian translation update by Yuri Kozlov (closes: #335164)
+ - patch-119: add update-po as a pre-req for binary (closes: #329910)
+ - patch-121: Complete French translation
+ - patch-125: Fixed localization of y/n questions in German translation
+ (closes: #337078)
+ - patch-126: Swedish translation update (closes: #337163)
+ - patch-127: Complete Tagalog translation (closes: #337306)
+ - patch-128: Danish translation update (closes: #337949)
+ - patch-129: Basque translation update (closes: #338101)
+ * cmdline/apt-get.cc:
+ - bufix in FindSrc (closes: #335213, #337910)
+ * added armeb to archtable (closes: #333599)
+ * with --allow-unauthenticated use the old fallback behaviour for
+ sources (closes: #335112)
+
+ -- Michael Vogt <mvo@debian.org> Wed, 9 Nov 2005 07:22:31 +0100
+
+apt (0.6.42.2) unstable; urgency=high
+
+ * NMU (approved by maintainer)
+ * Add AMD64 archive signing key to debian-archive.gpg (closes: #336500).
+ * Add big-endian arm (armeb) support (closes: #333599).
+ * Priority high to get the AMD key into testing ASAP.
+
+ -- Frans Pop <fjp@debian.org> Sun, 30 Oct 2005 21:29:11 +0100
+
+apt (0.6.42.1) unstable; urgency=low
+
+ * fix a incorrect example in the apt_preferences man page
+ (thanks to Filipus Klutiero, closes: #282918)
+ * apt-pkg/pkgrecords.cc:
+ - revert patch from last version, it causes trouble on alpha
+ and ia64 (closes: #335102, #335103)
+ * cmdline/apt-get.cc:
+ - be extra careful in FindSrc (closes: #335213)
+
+ -- Michael Vogt <mvo@debian.org> Sat, 22 Oct 2005 23:44:35 +0200
+
+apt (0.6.42) unstable; urgency=low
+
+ * apt-pkg/cdrom.cc:
+ - unmount the cdrom when apt failed to locate any package files
+ * allow cdrom failures and fallback to other sources in that case
+ (closes: #44135)
+ * better error text when dpkg-source fails
+ * Merge bubulle@debian.org--2005/apt--main--0 up to patch-115:
+ - patch-99: Added Galician translation
+ - patch-100: Completed Danish translation (Closes: #325686)
+ - patch-104: French translation completed
+ - patch-109: Italian translation completed
+ - patch-112: Swedish translation update
+ - patch-115: Basque translation completed (Closes: #333299)
+ * applied french man-page update (thanks to Philippe Batailler)
+ (closes: #316638, #327456)
+ * fix leak in the mmap code, thanks to Daniel Burrows for the
+ patch (closes: #250583)
+ * support for apt-get [build-dep|source] -t (closes: #152129)
+ * added "APT::Authentication::TrustCDROM" option to make the life
+ for the installer people easier (closes: #334656)
+ * fix crash in apt-ftparchive (thanks to Bastian Blank for the patch)
+ (closes: #334671)
+ * apt-pkg/contrib/md5.cc:
+ - fix a alignment problem on sparc64 that gives random bus errors
+ (thanks to Fabbione for providing a test-case)
+ * init the default ScreenWidth to 79 columns by default
+ (Closes: #324921)
+ * cmdline/apt-cdrom.cc:
+ - fix some missing gettext() calls (closes: #334539)
+ * doc/apt-cache.8.xml: fix typo (closes: #334714)
+
+ -- Michael Vogt <mvo@debian.org> Wed, 19 Oct 2005 22:02:09 +0200
+
+apt (0.6.41) unstable; urgency=low
+
+ * improved the support for "error" and "conffile" reporting from
+ dpkg, added the format to README.progress-reporting
+ * added README.progress-reporting to the apt-doc package
+ * improved the network timeout handling, if a index file from a
+ sources.list times out or EAI_AGAIN is returned from getaddrinfo,
+ don't try to get the other files from that entry
+ * Support architecture-specific extra overrides
+ (closes: #225947). Thanks to Anthony Towns for idea and
+ the patch, thanks to Colin Watson for testing it.
+ * Javier Fernandez-Sanguino Pen~a:
+ - Added a first version of an apt-secure.8 manpage, and modified
+ apt-key and apt.end accordingly. Also added the 'update'
+ argument to apt-key which was previously not documented
+ (Closes: #322120)
+ * Andreas Pakulat:
+ - added example apt-ftparchive.conf file to doc/examples
+ (closes: #322483)
+ * Fix a incorrect example in the man-page (closes: #282918)
+ * Fix a bug for very long lines in the apt-cdrom code (closes: #280356)
+ * Fix a manual page bug (closes: #316314)
+ * Do md5sum checking for file and cdrom method (closes: #319142)
+ * Change pkgPolicy::Pin from private to protected to let subclasses
+ access it too (closes: #321799)
+ * add default constructor for PrvIterator (closes: #322267)
+ * Reread status configuration on debSystem::Initialize()
+ (needed for apt-proxy, thanks to Otavio for this patch)
+
+ -- Michael Vogt <mvo@debian.org> Mon, 5 Sep 2005 22:59:03 +0200
+
+apt (0.6.40.1) unstable; urgency=low
+
+ * bugfix in the parsing code for the apt<->dpkg communication. apt
+ crashed when dpkg sends the same state more than once under certain
+ conditions
+ * 0.6.40 breaks the ABI but I accidentally didn't change the soname :/
+
+ -- Michael Vogt <mvo@debian.org> Fri, 5 Aug 2005 13:24:58 +0200
+
+apt (0.6.40) unstable; urgency=low
+
+ * Patch from Jordi Mallach to mark some additional strings for translation
+ * Updated Catalan translation from Jordi Mallach
+ * Merge from bubulle@debian.org--2005/apt--main--0:
+ - Update pot and merge with *.po
+ - Updated French translation, including apt-key.fr.8
+ * Restore changelog entries from the 0.6.x series that went to Debian
+ experimental
+ * Merge michael.vogt@ubuntu.com--2005/apt--progress-reporting--0
+ - Provide an interface for progress reporting which can be used by
+ (e.g.) base-config
+
+ -- Matt Zimmerman <mdz@debian.org> Thu, 28 Jul 2005 11:57:32 -0700
+
+apt (0.6.39) unstable; urgency=low
+
+ * Welsh translation update: daf@muse.19inch.net--2005/apt--main--0--patch-6
+ * Merge mvo's changes from 0.6.36ubuntu1:
+ michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-32
+ * Merge aggregated translation updates:
+ bubulle@debian.org--2005/apt--main--0
+ * Update priority of apt-utils to important, to match the override file
+ * Install only one keyring on each branch (Closes: #316119)
+
+ -- Matt Zimmerman <mdz@debian.org> Tue, 28 Jun 2005 11:51:09 -0700
+
+apt (0.6.38) unstable; urgency=low
+
+ * Merge michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-6, a workaround
+ for the French man pages' failure to build
+ * Branch Debian and Ubuntu
+ - apt.postinst, apt-key: use the appropriate keyring
+ - debian/rules: install all keyrings
+ * Add the current Debian archive signing key (4F368D5D) to
+ debian-archive.gpg
+ * make pinning on the "component" work again (using the section of the
+ archive, we don't use per-section Release files anymore with apt-0.6)
+ (closes ubuntu #9935)
+
+ -- Matt Zimmerman <mdz@debian.org> Sat, 25 Jun 2005 09:51:00 -0700
+
+apt (0.6.37) breezy; urgency=low
+
+ * Merge bubulle@debian.org--2005/apt--main--0 up to patch-81
+ - patch-66: Italian update
+ - patch-71: French update
+ - patch-73: Basque update
+ - patch-74: Hebrew update
+ - patch-76: Correct Hebrew translation (Closes: #306658)
+ - patch-77: French man page update
+ - patch-79: Correct syntax errors in Hebrew translation
+ - patch-81: Portuguese update
+ * Fix build of French man pages (now using XML, not SGML)
+ * Add Welsh translation from Dafydd Harries
+ (daf@muse.19inch.net--2005/apt--main--0--patch-1)
+ * Change debian/bugscript to use #!/bin/bash (Closes: #313402)
+ * Fix a incorrect example in the man-page (closes: #282918)
+
+ -- Matt Zimmerman <mdz@ubuntu.com> Tue, 24 May 2005 14:38:25 -0700
+
+apt (0.6.36ubuntu1) breezy; urgency=low
+
+ * make it possible to write a cache-control: no-cache header even if
+ no proxy is set to support transparent proxies (closes ubuntu: #10773)
+
+ * Merge otavio@debian.org--2005/apt--fixes--0.6:
+ - Fix comment about the need of xmlto while building from Arch;
+ - Fix StatStore struct on cachedb.h to use time_t and then fix a compile
+ warning;
+ - Lock database at start of DoInstall routine to avoid concurrent
+ runs of install/remove and update commands (Closes: #194467)
+ - Fix warnings while compiling with GCC 4.0 compiler
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 23 May 2005 11:57:53 +0200
+
+apt (0.6.36) experimental; urgency=low
+
+ * Merge apt--mvo--0:
+ - apt-pkg/acquire-item.cc:
+ added "Acquire::BrokenProxy" that will force apt to always
+ re-get the Release.gpg file (for broken proxies)
+ - debian/apt.cron.daily:
+ MinAge is defaulting to 2 days now to prevent over-aggressive removal
+ - apt-pkg/cdrom.cc:
+ honor "Acquire::gpgv::Options" when verifying the signature (Ubuntu #8496)
+
+ -- Michael Vogt <mvo@debian.org> Thu, 31 Mar 2005 20:37:11 +0200
+
+apt (0.6.35) hoary; urgency=low
+
+ * Merge apt--mvo--0 (incorporates 0.6.34ubuntu1):
+ - Implement MaxSize and MaxAge in apt.cron.daily, to prevent the cache
+ from growing too large (Ubuntu #6761)
+ - some comments about the pkgAcqMetaSig::Custom600Headers() added
+ - use gpg --with-colons
+ - commented the ftp no_proxy unseting in methods/ftp.cc
+ - added support for "Acquire::gpgv::options" in methods/gpgv.cc
+ * Merge bubulle@debian.org--2005/apt--main--0
+ - Make capitalization more consistent
+ - Un-fuzzy translations resulting from capitalization changes
+ - Italian translation update
+
+ -- Matt Zimmerman <mdz@ubuntu.com> Mon, 7 Mar 2005 20:08:33 -0800
+
+apt (0.6.34) hoary; urgency=low
+
+ * Add missing semicolon to configure-index (Closes: #295773)
+ * Update build-depends on gettext to 0.12 (Closes: #295077)
+ * Merge from bubulle@debian.org--2005/apt--main--0 to get
+ translation updates
+
+ -- Matt Zimmerman <mdz@ubuntu.com> Fri, 4 Mar 2005 16:13:15 -0800
+
+apt (0.6.33) hoary; urgency=low
+
+ * Merge michael.vogt@ubuntu.com--2005/apt--mvo--0 (through patch-6)
+ - patch-1: cosmetic changes (whitespace, "Apt::GPGV->APT::GPGV")
+ - patch-2: (doc) documentation for gpgv
+ - patch-3: (doc) new config variables added configure-index
+ - patch-4: pkgAcquire::Run() pulse intervall can be configured
+ - patch-5: fix for apt-get update removing Release.gpg files (#6865)
+ - patch-6: change the path scoring in apt-cdrom, prefer paths without
+ symlinks
+
+ -- Matt Zimmerman <mdz@ubuntu.com> Sat, 26 Feb 2005 15:21:17 -0800
+
+apt (0.6.32) hoary; urgency=low
+
+ * Merge michael.vogt@ubuntu.com--2005/apt--mvo--0 (patch-1)
+ - Implement Acquire::gpgv::options (Ubuntu bug#6283)
+
+ -- Matt Zimmerman <mdz@ubuntu.com> Tue, 8 Feb 2005 19:31:15 -0800
+
+apt (0.6.31) hoary; urgency=low
+
+ * Matt Zimmerman
+ - Remove debugging output from apt.cron.daily (no one noticed?)
+ - Apply patch from Anthony Towns to allow SHA1Summation to process a file
+ descriptor until EOF, rather than requiring that the length of input be
+ specified (Closes: #291338)
+ - Fix build/install of Polish offline documentation, based on patch from
+ Christian Perrier (Closes: #270404)
+ * Michael Vogt
+ - apt-cdrom.cc separated into front-end (cmdline/apt-cdrom.cc and library
+ apt-pkg/cdrom.{cc,h}) (Ubuntu #5668)
+
+ -- Matt Zimmerman <mdz@ubuntu.com> Fri, 4 Feb 2005 10:23:01 -0800
+
+apt (0.6.30) unstable; urgency=low
+
+ * Add ppc64 to buildlib/archtable
+ * Merge michael.vogt@canonical.com--2004/apt--status-fd--0
+ - Support preserving dpkg status file descriptor, to support
+ better integration with synaptic
+
+ -- Matt Zimmerman <mdz@ubuntu.com> Wed, 19 Jan 2005 00:26:01 -0800
+
+apt (0.6.29) hoary; urgency=low
+
+ * Merge apt--mvo--0 (0.6.27ubuntu4)
+
+
+ -- Matt Zimmerman <mdz@canonical.com> Tue, 28 Dec 2004 17:18:02 -0800
+
+apt (0.6.28) hoary; urgency=low
+
+ * Merge apt--mvo--0
+ * Rebuild source to get rid of arch metadata and temporary files in
+ 0.6.27ubuntu3
+
+ -- Matt Zimmerman <mdz@canonical.com> Thu, 23 Dec 2004 18:53:16 -0800
+
+apt (0.6.27ubuntu4) hoary; urgency=low
+
+ * remove old sig-file in partial/ before starting to fetch a new sig-file
+ (see ubuntu #4769 for the rational)
+ * added apt-key update method (uses ubuntu-keyring)
+ * documented the "--allow-unauthenticated" switch
+ * added DEB_BUILD_PROG_OPTS to debian/rules (additional options can be
+ passed to DEB_BUILD_PROG like "-S")
+
+ -- Michael Vogt <mvo@debian.org> Thu, 23 Dec 2004 11:12:51 +0100
+
+apt (0.6.27ubuntu3) hoary; urgency=low
+
+ * added a exact dependency from libapt-pkg-dev to the apt version it was
+ build with
+
+ -- Michael Vogt <mvo@debian.org> Wed, 15 Dec 2004 09:56:32 +0100
+
+apt (0.6.27ubuntu2) hoary; urgency=low
+
+ * fixed a bug in the rule file that happened during the big 0.5->0.6 merge
+
+ -- Michael Vogt <mvo@debian.org> Tue, 14 Dec 2004 12:14:25 +0100
+
+apt (0.6.27ubuntu1) hoary; urgency=low
+
+ * chmod 755 /usr/bin/apt-key
+ * don't display a error when a apt-get update don't find a
+ Packages.bz2/Sources.bz2 file
+
+ -- Michael Vogt <mvo@debian.org> Mon, 13 Dec 2004 18:40:21 +0100
+
+apt (0.6.27) hoary; urgency=low
+
+ * Merge apt--authentication--0 branch
+ - Implement gpg authentication for package repositories (Closes: #203741)
+ - Also includes Michael Vogt's fixes
+ * Merge apt--misc-abi-changes--0 branch
+ - Use pid_t throughout to hold process IDs (Closes: #226701)
+ - Import patch from Debian bug #195510: (Closes: #195510)
+ - Make Simulate::Describe and Simulate::ShortBreaks private member
+ functions
+ - Add a parameter (Candidate) to Describe to control whether the
+ candidate version is displayed
+ - Pass an appropriate value for Candidate everywhere Describe is called
+
+ -- Matt Zimmerman <mdz@canonical.com> Mon, 13 Dec 2004 01:03:11 -0800
+
+apt (0.6.25) experimental; urgency=low
+
+ * Fix handling of two-part sources for sources.list deb-src entries in
+ the same way that deb entries were fixed
+
+ -- Matt Zimmerman <mdz@debian.org> Wed, 9 Jun 2004 05:29:50 -0700
+
+apt (0.6.24) experimental; urgency=low
+
+ * YnPrompt fixes were inadvertently left out, include them (Closes:
+ #249251)
+
+ -- Matt Zimmerman <mdz@debian.org> Sun, 16 May 2004 14:18:53 -0700
+
+apt (0.6.23) experimental; urgency=low
+
+ * Remove obsolete pkgIterator::TargetVer() (Closes: #230159)
+ * Reverse test in CheckAuth to match new prompt (Closes: #248211)
+
+ -- Matt Zimmerman <mdz@debian.org> Sun, 9 May 2004 21:01:58 -0700
+
+apt (0.6.22) experimental; urgency=low
+
+ * Merge 0.5.25
+ * Make the unauthenticated packages prompt more intuitive (yes to
+ continue, default no), but require --force-yes in addition to
+ --assume-yes in order to override
+
+ -- Matt Zimmerman <mdz@debian.org> Fri, 19 Mar 2004 13:55:35 -0800
+
+apt (0.6.21) experimental; urgency=low
+
+ * Merge 0.5.24
+
+ -- Matt Zimmerman <mdz@debian.org> Tue, 16 Mar 2004 22:52:34 -0800
+
+apt (0.6.20) experimental; urgency=low
+
+ * Merge 0.5.23
+
+ -- Matt Zimmerman <mdz@debian.org> Thu, 26 Feb 2004 17:17:02 -0800
+
+apt (0.6.19) experimental; urgency=low
+
+ * Merge 0.5.22
+ * Convert apt-key(8) to docbook XML
+
+ -- Matt Zimmerman <mdz@debian.org> Mon, 9 Feb 2004 15:44:49 -0800
+
+apt (0.6.18) experimental; urgency=low
+
+ * Add new Debian Archive Automatic Signing Key to the default keyring
+ (existing keyrings are not updated; do that yourself)
+
+ -- Matt Zimmerman <mdz@debian.org> Sat, 17 Jan 2004 17:04:30 -0800
+
+apt (0.6.17) experimental; urgency=low
+
+ * Merge 0.5.21
+ * Handle more IMS stuff correctly
+
+ -- Matt Zimmerman <mdz@debian.org> Fri, 16 Jan 2004 10:54:25 -0800
+
+apt (0.6.16) experimental; urgency=low
+
+ * Fix some cases where the .gpg file could be left in place when it is
+ invalid
+
+ -- Matt Zimmerman <mdz@debian.org> Fri, 9 Jan 2004 09:22:15 -0800
+
+apt (0.6.15) experimental; urgency=low
+
+ * s/Debug::Acquire::gpg/&v/
+ * Honor the [vendor] syntax in sources.list again (though it is not
+ presently used for anything)
+ * Don't ship vendors.list(5) since it isn't used yet
+ * Revert change from 0.6.10; it was right in the first place and the
+ problem was apparently something else. Archive = Suite.
+
+ -- Matt Zimmerman <mdz@debian.org> Mon, 5 Jan 2004 17:43:01 -0800
+
+apt (0.6.14) experimental; urgency=low
+
+ * Merge 0.5.20
+
+ -- Matt Zimmerman <mdz@debian.org> Sun, 4 Jan 2004 11:09:21 -0800
+
+apt (0.6.13) experimental; urgency=low
+
+ * Merge 0.5.19
+
+ -- Matt Zimmerman <mdz@debian.org> Sat, 3 Jan 2004 16:22:31 -0800
+
+apt (0.6.12) experimental; urgency=low
+
+ * Have pkgAcquireIndex calculate an MD5 sum if one is not provided by
+ the method (as with file: and copy:). Local repositories
+ * Fix warning about dist name mismatch to actually print what it was
+ expecting
+ * Don't expect any particular distribution name for two-part
+ sources.list entries
+ * Merge 0.5.18
+
+ -- Matt Zimmerman <mdz@debian.org> Fri, 2 Jan 2004 13:59:00 -0800
+
+apt (0.6.11) experimental; urgency=low
+
+ * Support IMS requests of Release.gpg and Release
+ * This required API changes, bump the libapt-pkg version
+ * Copy local Release files into Dir::State::Lists
+ * Set IndexFile attribute when retrieving Release and Release.gpg so
+ that the appropriate Cache-Control headers are sent
+
+ -- Matt Zimmerman <mdz@debian.org> Fri, 2 Jan 2004 10:46:17 -0800
+
+apt (0.6.10) experimental; urgency=low
+
+ * Use "Codename" (woody, sarge, etc.) to supply the value of the
+ "Archive" package file attribute, used to match "release a=" type
+ pins, rather than "Suite" (stable, testing, etc.)
+
+ -- Matt Zimmerman <mdz@debian.org> Thu, 1 Jan 2004 16:56:47 -0800
+
+apt (0.6.9) experimental; urgency=low
+
+ * Another tagfile workaround
+
+ -- Matt Zimmerman <mdz@debian.org> Thu, 1 Jan 2004 13:56:08 -0800
+
+apt (0.6.8) experimental; urgency=low
+
+ * Add a config option and corresponding command line option
+ (--allow-unauthenticated) to apt-get, to make buildd operators happy
+ (Closes: #225648)
+
+ -- Matt Zimmerman <mdz@debian.org> Wed, 31 Dec 2003 08:28:04 -0800
+
+apt (0.6.7) experimental; urgency=low
+
+ * Forgot to revert part of the changes to tagfile in 0.6.4. Hopefully
+ will fix segfaults for some folks.
+
+ -- Matt Zimmerman <mdz@debian.org> Wed, 31 Dec 2003 08:01:28 -0800
+
+apt (0.6.6) experimental; urgency=low
+
+ * Restore the ugly hack I removed from indexRecords::Load which set the
+ pkgTagFile buffer size to (file size)+256. This is concealing a bug,
+ but I can't fix it right now. This should fix the segfaults that
+ folks are seeing with 0.6.[45].
+
+ -- Matt Zimmerman <mdz@debian.org> Mon, 29 Dec 2003 18:11:13 -0800
+
+apt (0.6.5) experimental; urgency=low
+
+ * Move the authentication check into a separate function in apt-get
+ * Fix display of unauthenticated packages when they are in the cache
+ (Closes: #225336)
+
+ -- Matt Zimmerman <mdz@debian.org> Sun, 28 Dec 2003 16:47:57 -0800
+
+apt (0.6.4) experimental; urgency=low
+
+ * Use the top-level Release file in LoadReleaseInfo, rather than looking
+ for the per-section ones (which aren't downloaded anymore). This
+ unbreaks release pinning, including the NotAutomatic bit used by
+ project/experimental
+ * Use FileFd::Size() rather than a separate stat() call in
+ LoadReleaseInfo
+ * Fix pkgTagFile to leave a little extra room at the end of the buffer
+ to append the record separator if it isn't present
+ * Change LoadReleaseInfo to use "Suite" rather than "Archive", to match
+ the Debian archive's dist-level Release files
+
+ -- Matt Zimmerman <mdz@debian.org> Sun, 28 Dec 2003 15:55:55 -0800
+
+apt (0.6.3) experimental; urgency=low
+
+ * Fix MetaIndexURI for flat ("foo/") sources
+
+ -- Matt Zimmerman <mdz@debian.org> Sun, 28 Dec 2003 12:11:56 -0800
+
+apt (0.6.2) experimental; urgency=low
+
+ * Add space between package names when multiple unauthenticated packages
+ are being installed (Closes: #225212)
+ * Provide apt-key with a secret keyring and a trustdb, even though we
+ would never use them, because it blows up if it doesn't have them
+ * Fix typo in apt-key(8) (standard input is '-', not '/')
+
+ -- Matt Zimmerman <mdz@debian.org> Sat, 27 Dec 2003 13:01:40 -0800
+
+apt (0.6.1) experimental; urgency=low
+
+ * Merge apt 0.5.17
+ * Rearrange Release file authentication code to be more clear
+ * If Release is present, but Release.gpg is not, don't forget to still
+ queue Packages files
+ * Convert distribution "../project/experimental" to "experimental" for
+ comparison purposes
+ * Make a number of Release file errors into warnings; for now, it is OK
+ not to have a codename, for example. We mostly care about checksums
+ for now
+
+ -- Matt Zimmerman <mdz@debian.org> Fri, 26 Dec 2003 15:12:47 -0800
+
+apt (0.6.0) experimental; urgency=low
+
+ * Signature verification support patch ("apt-secure") from Colin Walters
+ <walters@debian.org> and Isaac Jones <ijones@syntaxpolice.org>. This
+ implements:
+ - Release signature verification (Release.gpg)
+ - Packages, Sources md5sum verification against Release
+ - Closes: #203741
+ * Make some modifications to signature verification support:
+ - Release.gpg is always retrieved and verified if present, rather than
+ requiring that sources be configured as secure
+ - Print a hint about installing gnupg if exec(gpgv) fails
+ - Remove obsolete pkgAcqIndexRel
+ - Move vendors.list stuff into a separate module (vendorlist.{h,cc})
+ - If any files about to be retrieved are not authenticated, issue a
+ warning to the user and require confirmation
+ - Fix a heap corruption bug in pkgSrcRecords::pkgSrcRecords()
+ * Suggests: gnupg
+ * Install a keyring in /usr/share/apt/debian-archive.gpg containing an
+ initial set of Debian archive signing keys to seed /etc/apt/trusted.gpg
+ * Add a new tool, apt-key(8) used to manage the keyring
+
+ -- Matt Zimmerman <mdz@debian.org> Fri, 26 Dec 2003 08:27:19 -0800
+
+apt (0.5.32) hoary; urgency=low
+
+ * Call setlocale in the methods, so that the messages are properly
+ localised (Closes: #282700)
+ * Implement support for bzip2-compressed debs (data.tar.bz2)
+
+ -- Matt Zimmerman <mdz@canonical.com> Sat, 11 Dec 2004 09:05:52 -0800
+
+apt (0.5.31) unstable; urgency=low
+
+ * New Romanian translation from Sorin Batariuc <sorin@bonbon.net>
+ (Closes: #281458)
+ * Merge changes from Hoary (0.5.30,0.5.30ubuntu2]
+ * Fix the example in apt_preferences(5) to match the text
+ (Closes: #222267)
+ * Add APT::Periodic::Autoclean setting, to allow "apt-get autoclean" to
+ be run periodically. This is useful with
+ APT::Periodic::Download-Upgradeable-Packages, and defaults to the same
+ value, so that the cache size is bounded
+
+ -- Matt Zimmerman <mdz@debian.org> Tue, 23 Nov 2004 12:53:04 -0800
+
+apt (0.5.30ubuntu2) hoary; urgency=low
+
+ * bzip2 is now "Suggested" and it will detect if bzip2 is installed
+ and only then trying to get Packages.bz2
+
+ -- Michael Vogt <mvo@debian.org> Fri, 19 Nov 2004 12:00:39 +0100
+
+apt (0.5.30ubuntu1) hoary; urgency=low
+
+ * Need to Depend: bzip2 or Packages.bz2 fail.
+
+ -- LaMont Jones <lamont@canonical.com> Thu, 18 Nov 2004 12:51:05 -0700
+
+apt (0.5.30) hoary; urgency=low
+
+ * Patch from Michael Vogt to enable Packages.bz2 use, with a fallback to
+ Packages.gz if it is not present (Closes: #37525)
+
+ -- Matt Zimmerman <mdz@debian.org> Mon, 15 Nov 2004 12:57:28 -0800
+
+apt (0.5.29) unstable; urgency=low
+
+ * Don't hardcode paths in apt.cron.daily
+ * Add to apt.cron.daily the capability to pre-download upgradeable
+ packages
+ * Place timestamp files in /var/lib/apt/periodic, rather than
+ /var/lib/apt itself
+ * Standardize debhelper files a bit
+ - Create all directories in debian/dirs rather than creating some on
+ the dh_installdirs command line
+ - Rename debian/dirs to debian/apt.dirs, debian/examples to
+ debian/apt.examples
+
+ -- Matt Zimmerman <mdz@debian.org> Sat, 13 Nov 2004 17:58:07 -0800
+
+apt (0.5.28) hoary; urgency=low
+
+ * Translation updates:
+ - Updated Hungarian from Kelemen Gábor <kelemeng@gnome.hu> (Closes: #263436)
+ - Updated Greek from George Papamichelakis (Closes: #265004)
+ - Updated Simplified Chinese from Tchaikov (Closes: #265190)
+ - Updated French by Christian Perrier (Closes: #265816)
+ - Updated Japanese by Kenshi Muto (Closes: #265630)
+ - Updated Catalan from Jordi Mallach
+ - Updated Dutch from Bart Cornelis (Closes: #268258, #278697)
+ - Updated Portuguese from Miguel Figueiredo (Closes: #268265)
+ - Updated Polish from Robert Luberda <robert@debian.org> (Closes: #268451)
+ - Updated Danish from Claus Hindsgaul (Closes: #269417)
+ - Updated Norwegian Nynorsk from HÃ¥vard Korsvoll <korsvoll@skulelinux.no>
+ (Closes: #269965)
+ - Updated Russian from Yuri Kozlov <yuray@id.ru> (Closes: #271104)
+ - Updated Italian from Samuele Giovanni Tonon <samu@debian.org>
+ (Closes: #275083)
+ - Updated Brazilian Portuguese from Andre Luis Lopes (Closes: #273944)
+ - Updated Slovak from Peter Mann (Closes: #279481)
+ * APT::Get::APT::Get::No-List-Cleanup -> APT::Get::List-Cleanup in apt-get.cc
+ (Closes: #267266)
+ * Merge Ubuntu changes:
+ - Set default Dpkg::MaxArgs to 1024, and Dpkg::MaxArgBytes to 32k.
+ Needed to work around ordering bugs when installing a large number of
+ packages
+ - Patch from Michael Vogt to add an optional cron job which
+ can run apt-get update periodically
+ * Add arch-build target to debian/rules
+
+ -- Matt Zimmerman <mdz@debian.org> Sat, 13 Nov 2004 15:52:20 -0800
+
+apt (0.5.27) unstable; urgency=high
+
+ * Sneak in a bunch of updated translations before the freeze
+ (no code changes)
+ * Translation updates:
+ - New Finnish translation from Tapio Lehtonen <tale@debian.org>
+ (Closes: #258999)
+ - New Bosnian translation from Safir Šećerović <sapphire@linux.org.ba>
+ (Closes: #254201)
+ - Fix Italian incontrario (Closes: #217277)
+ - Updated Spanish from Ruben Porras (Closes: #260483)
+ - Updated Danish from Claus Hindsgaul (Closes: #260569)
+ - Updated Slovak from Peter Mann (Closes: #260627)
+ - Updated Portuguese from Miguel Figueiredo (Closes: #261423)
+ * Bring configure-index up to date with documented options, patch from
+ Uwe Zeisberger <zeisberg@informatik.uni-freiburg.de> (Closes: #259540)
+ * Note in apt.conf(5) that configure-index does not contain strictly
+ default values, but also examples
+ * Add Polish translation of offline.sgml (Closes: #259229)
+
+ -- Matt Zimmerman <mdz@debian.org> Thu, 29 Jul 2004 09:30:12 -0700
+
+apt (0.5.26) unstable; urgency=low
+
+ * Translation updates:
+ - Spanish update from Ruben Porras <nahoo82@telefonica.net> (Closes: #248214)
+ - Sync Spanish apt(8) (Closes: #249241)
+ - French update from Christian Perrier <bubulle@debian.org> (Closes: #248614)
+ - New Slovak translation from Peter Mann <Peter.Mann@tuke.sk> (Closes: #251676)
+ - Czech update from Miroslav Kure <kurem@upcase.inf.upol.cz> (Closes: #251682)
+ - pt_BR update from Andre Luis Lopes <andrelop@debian.org> (Closes: #251961)
+ - German translation of apt(8) from Helge Kreutzmann <kreutzm@itp.uni-hannover.de>
+ (Closes: #249453)
+ - pt update from Miguel Figueiredo <elmig@debianpt.org> (Closes: #252700)
+ - New Hebrew translation from Lior Kaplan <webmaster@guides.co.il>
+ (Closes: #253182)
+ - New Basque translation from Piarres Beobide Egaña <pi@beobide.net>
+ (Vasco - Euskara - difficult language, Closes: #254407) and already a
+ correction (Closes: #255760)
+ - Updated Brazilian Portuguese translation from
+ Guilherme de S. Pastore <gpastore@colband.com.br> (Closes: #256396)
+ - Updated Greek translation (complete now) from
+ George Papamichelakis <george@step.gr> (Closes: #256797)
+ - New Korean translation from Changwoo Ryu <cwryu@debian.org>
+ (Closes: #257143)
+ - German translation now available in two flavours: with Unicode usage and
+ without (related to #228486, #235759)
+ * Update apt-get(8) to reflect the fact that APT::Get::Only-Source will
+ affect apt-get build-dep as well as apt-get source
+ * Remove aborted remnants of a different method of implementing DEB_BUILD_OPTIONS
+ from debian/rules
+ * Fix typo in error message when encountering unknown type in source list
+ (Closes: #253217)
+ * Update k*bsd-gnu arch names in buildlib/ostable (Closes: #253532)
+ * Add amd64 to buildlib/archtable (Closes: #240896)
+ * Have configure output a more useful error message if the architecture
+ isn't in archtable
+
+ -- Matt Zimmerman <mdz@debian.org> Thu, 8 Jul 2004 15:53:28 -0700
+
+apt (0.5.25) unstable; urgency=low
+
+ * Patch from Jason Gunthorpe to remove arbitrary length limit on Binary
+ field in SourcesWriter::DoPackage
+ * Fix typo in apt-cache(8) (Closes: #238578)
+ * Fix obsolete reference to bug(1) in stub apt(8) man page
+ (Closes: #245923)
+ * Fix typo in configure-index (RecruseDepends -> RecurseDepends)
+ (Closes: #246550)
+ * Support DEB_BUILD_OPTIONS=noopt in debian/rules
+ (Closes: #244293)
+ * Increase length of line buffer in ReadConfigFile to 1024 chars;
+ detect if a line is longer than that and error out
+ (Closes: #244835)
+ * Suppress a signed/unsigned warning in apt-cache.cc:DisplayRecord
+ * Build apt-ftparchive with libdb4.2 rather than libdb2
+ - Patch from Clint Adams to do most of the work
+ - Build-Depends: s/libdb2-dev/libdb4.2-dev/
+ - Add AC_PREREQ(2.50) to configure.in
+ - Use db_strerror(err) rather than GlobalError::Errno (which uses strerror)
+ - Add note to NEWS.Debian about upgrading old databases
+ * Attempt to fix problems with chunked encoding by stripping only a single CR
+ (Closes: #152711)
+ * Modify debian/rules cvs-build to use cvs export, to avoid picking up
+ junk files from the working directory
+ * Add lang=fr attribute to refentry section of
+ apt-extracttemplates.fr.1.sgml and apt-sortpkgs.fr.1.sgml so they are
+ correctly built
+ * Remove extraneous '\' characters from <command> tags in
+ apt_preferences.fr.5.sgml
+ * Translation updates:
+ - Updated Swedish translation from Peter Karlsson <peter@softwolves.pp.se>
+ (Closes: #238943)
+ - New Slovenian translation from Jure ÄŒuhalev <gandalf@owca.info>
+ (closes: #239785)
+ - New Portuguese translation from Miguel Figueiredo <elmig@debianpt.org>
+ (closes: #240074)
+ - Updated Spanish translation from Ruben Porras <nahoo82@telefonica.net>
+ - Updated Spanish translation of man pages from Ruben Porras
+ <nahoo82@telefonica.net>
+ - Updated Simplified Chinese translation from "Carlos Z.F. Liu" <carlos_liu@yahoo.com>
+ (Closes: #241971)
+ - Updated Russian translation from Dmitry Astapov <adept@despammed.com>
+ (Closes: #243959)
+ - Updated Polish translation from Marcin Owsiany <porridge@debian.org>
+ (Closes: #242388)
+ - Updated Czech translation from Miroslav Kure <kurem@upcase.inf.upol.cz>
+ (Closes: #244369)
+ - Updated Japanese translation from Kenshi Muto <kmuto@debian.org>
+ (Closes: #244176)
+ - Run make -C po update-po to update .po files
+ - Updated French translation from Christian Perrier <bubulle@debian.org>
+ (Closes: #246925)
+ - Updated Danish translation from Claus Hindsgaul <claus_h@image.dk>
+ (Closes: #247311)
+
+ -- Matt Zimmerman <mdz@debian.org> Sat, 8 May 2004 12:52:20 -0700
+
+apt (0.5.24) unstable; urgency=low
+
+ * Updated Czech translation from Miroslav Kure <kurem@upcase.inf.upol.cz>
+ (Closes: #235822)
+ * Updated French translation from Christian Perrier <bubulle@debian.org>
+ (Closes: #237403)
+ * Updates to XML man pages from richard.bos@xs4all.nl
+ * Updated Danish translation from Claus Hindsgaul <claus_h@image.dk>
+ (Closes: #237771)
+ * Updated Greek translation from Konstantinos Margaritis
+ <markos@debian.org>
+ (Closes: #237806)
+ * Updated Spanish translation from Ruben Porras <nahoo82@telefonica.net>
+ (Closes: #237863)
+ * Updated pt_BR translation from Andre Luis Lopes <andrelop@debian.org>
+ (Closes: #237960)
+ * Regenerate .pot file (Closes: #237892)
+ * Updated Polish translation from Marcin Owsiany <porridge@debian.org>
+ (Closes: #238333)
+ * In pkgAcquire::Shutdown(), set the status of fetching items to
+ StatError to avoid a sometimes large batch of error messages
+ (Closes: #234685)
+ * Implement an ugly workaround for the 10000-character limit on the
+ Binaries field in debSrcRecordParser, until such time as some things
+ can be converted over to use STL data types (ABI change) (Closes: #236688)
+ * Increase default tagfile buffer from 32k to 128k; this arbitrary limit
+ should also be removed someday (Closes: #174945)
+ * Checked against Standards-Version 3.6.1 (no changes)
+
+ -- Matt Zimmerman <mdz@debian.org> Tue, 16 Mar 2004 22:47:55 -0800
+
+apt (0.5.23) unstable; urgency=low
+
+ * Cosmetic updates to XML man pages from Richard Bos <radoeka@xs4all.nl>
+ * Use the 'binary' target rather than 'all' so that the ssh and bzip2
+ symlinks are created correctly (thanks to Adam Heath)
+ (Closes: #214842)
+ * Updated Simplified Chinese translation of message catalog from Tchaikov
+ <chaisave@263.net> (Closes: #234186)
+ * Change default for Acquire::http::max-age to 0 to prevent index files
+ being out of sync with each other (important with Release.gpg)
+ * Add an assert() to make sure that we don't overflow a fixed-size
+ buffer in the very unlikely event that someone adds 10 packaging
+ systems to apt (Closes: #233678)
+ * Fix whitespace in French translation of "Yes, do as I say!", which
+ made it tricky to type, again. Thanks to Sylvain Pasche
+ <sylvain.pasche@switzerland.org> (Closes: #234494)
+ * Print a slightly clearer error message if no packaging systems are
+ available (Closes: #233681)
+ * Point to Build-Depends in COMPILING (Closes: #233669)
+ * Make debian/rules a bit more consistent in a few places.
+ Specifically, always use -p$@ rather than an explicit package name,
+ and always specify it first, and use dh_shlibdeps -l uniformly rather
+ than sometimes changing LD_LIBRARY_PATH directly
+ * Document unit for Cache-Limit (bytes) (Closes: #234737)
+ * Don't translate "Yes, do as I say!" in Chinese locales, because it can
+ be difficult to input (Closes: #234886)
+
+ -- Matt Zimmerman <mdz@debian.org> Thu, 26 Feb 2004 17:08:14 -0800
+
+apt (0.5.22) unstable; urgency=low
+
+ * Updated French translation of man pages from Philippe Batailler
+ <philippe.batailler@free.fr> (Closes: #203119)
+ * Initialize StatusFile in debSystem (Closes: #229791)
+ * Fix apt-get's suggests/recommends printing, which was skipping every
+ other dependency due to both using GlobOr and incrementing the DepIterator
+ (Closes: #229722)
+ * Restore SIGINT/SIGQUIT handlers to their old values (rather than
+ SIG_DFL) after invoking dpkg (Closes: #229854)
+ * Updated Dutch translation of message catalog from cobaco
+ <cobaco@linux.be> (Closes: #229601)
+ * Catalan translation from Antoni Bella, Matt Bonner and Jordi Mallach
+ (Closes: #230102)
+ * Simplified Chinese translation of message catalog from "Carlos
+ Z.F. Liu" <carlos_liu@yahoo.com> (Closes: #230960)
+ * Replace SGML manpages with XML man pages from richard.bos@xs4all.nl
+ (Closes: #230687)
+ * Updated Spanish translation of man pages from Ruben Porras
+ <nahoo82@telefonica.net> (Closes: #231539)
+ * New Czech translation of message catalog from Miroslav Kure
+ <kurem@upcase.inf.upol.cz> (Closes: #231921)
+
+ -- Matt Zimmerman <mdz@debian.org> Mon, 9 Feb 2004 12:44:54 -0800
+
+apt (0.5.21) unstable; urgency=low
+
+ * Patch from Eric Wong <normalperson@yhbt.net> to include apt18n.h after
+ other headers to avoid breaking locale.h when setlocale() is defined
+ as an empty macro. This was not a problem on Debian, but broke
+ compilation on Solaris. (Closes: #226509)
+ * Updated French translation from Pierre Machard <pmachard@debian.org>
+ (Closes: #226886)
+ * Add colons to apt-get's "kept back"/"upgraded"/"downgraded" messages
+ (Closes: #226813)
+ * Fix typo in apt-cache(8) (Closes: #226351)
+ * Clearer error message in place of "...has no available version, but
+ exists in the database" (Closes: #212203)
+ * Patch from Oliver Kurth <oku@masqmail.cx> to use AC_CACHE_VAL for
+ GLIBC_VER to make cross-compilation easier (Closes: #221528)
+ * Add example preferences file (Closes: #220799)
+ * Updated Greek translation from Konstantinos Margaritis <markos@debian.org>
+ (Closes: #227205)
+ * Updated Spanish translation of man pages from Ruben Porras
+ <nahoo82@telefonica.net> (Closes: #227729)
+
+ -- Matt Zimmerman <mdz@debian.org> Fri, 16 Jan 2004 10:54:39 -0800
+
+apt (0.5.20) unstable; urgency=low
+
+ * Fixed German translations of "Suggested" from Christian Garbs
+ <debian@cgarbs.de> (Closes: #197960)
+ * Add an "apt-cache madison" command with an output format similar to
+ the katie tool of the same name (but less functionality)
+ * Fix debSourcesIndex::Describe() to correctly say "Sources" rather than
+ "Packages"
+
+ -- Matt Zimmerman <mdz@debian.org> Sat, 3 Jan 2004 23:42:50 -0800
+
+apt (0.5.19) unstable; urgency=low
+
+ * Fix Packages::Extensions support in apt-ftparchive generate
+ (Closes: #225453)
+
+ -- Matt Zimmerman <mdz@debian.org> Sat, 3 Jan 2004 16:20:31 -0800
+
+apt (0.5.18) unstable; urgency=low
+
+ * New no_NO.po file from Tollef Fog Heen <tfheen@debian.org> to fix
+ encoding problems (Closes: #225602)
+ * Have "apt-ftparchive release" strip the leading path component from
+ the checksum entries
+
+ -- Matt Zimmerman <mdz@debian.org> Fri, 2 Jan 2004 11:24:35 -0800
+
+apt (0.5.17) unstable; urgency=low
+
+ * Enable apt-ftparchive to generate Release files. Hopefully this will
+ make it easier for folks to secure their apt-able packages
+
+ -- Matt Zimmerman <mdz@debian.org> Fri, 26 Dec 2003 12:53:21 -0800
+
+apt (0.5.16) unstable; urgency=low
+
+ * po/de.po update from Michael Karcher <karcher@physik.fu-berlin.de>
+ (Closes: #222560)
+ * Update config.guess and config.sub from autotools-dev 20031007.1
+ * Add knetbsd to buildlib/ostable (Closes: #212344)
+ * Don't suggest apt-get -f install to correct broken build-deps; broken
+ installed packages are rarely the cause (Closes: #220858)
+ * Avoid clobbering configure.in if sed fails
+
+ -- Matt Zimmerman <mdz@debian.org> Wed, 24 Dec 2003 14:54:40 -0800
+
+apt (0.5.15) unstable; urgency=low
+
+ * Spanish man pages, patch from Ruben Porras <nahoo82@telefonica.net>
+ (Closes: #195444)
+ - apt.es.8 wasn't included in the patch, but was referenced. Fetched
+ version 1.3 from debian-doc cvs
+ - Create doc/es/.cvsignore
+ * Patch from Koblinger Egmont <egmont@uhulinux.hu> to fix
+ pkgCache::PkgFileIterator::Label() to correctly refer to File->Label
+ rather than File->Origin (Closes: #213311)
+ * Add missing comma and space to German translation of "downgraded"
+ (Closes: #213975)
+ * Add missing comma in apt_preferences(5) (Closes: #215362)
+ * Fix whitespace in French translation of "Yes, do as I say!", which
+ made it tricky to type. Thanks to Sylvain Pasche
+ <sylvain.pasche@switzerland.org> (Closes: #217152)
+ * Let apt-get build-dep try alternatives if the installed package
+ doesn't meet version requirements (Closes: #214736)
+ * Fix version display for recommends (Closes: #219900)
+ * Use isatty rather than ttyname for checking if stdin is a terminal.
+ isatty has the advantage of not requiring /proc under Linux, and thus
+ Closes: #221728
+ * Correctly implement -n as a synonym for --names-only (Closes: #224515)
+ * Update apt-cache(8)
+ - Document --installed
+ - --recursive applies to both depends and rdepends
+ * Japanese translation of documentation from Kurasawa Nozomu <nabetaro@slug.jp>
+ (Closes: #186235)
+ * Clarify documentation of --no-upgrade in apt-get(8) (Closes: #219743)
+ * Clean up and simplify some of the suggests/recommends display in apt-get
+ * Use cvs update -d in debian/rules cvs-build rather than just update
+ * Pass --preserve-envvar PATH --preserve-envvar CCACHE_DIR to debuild. apt
+ takes a long time to build, and ccache helps
+
+ -- Matt Zimmerman <mdz@debian.org> Sat, 20 Dec 2003 16:34:30 -0800
+
+apt (0.5.14) unstable; urgency=low
+
+ * apt-get build-dep, when trying to skip over the remaining elements of
+ an or-expression, would accidentally inherit the version requirements of a
+ later item in the or-expression. Fixed it.
+ * Let apt-get build-dep try alternatives if the first dependency in an
+ or-expression is not available
+ * Add a Debug::BuildDeps to generate some trace output
+ * Help apt-get build-dep produce more useful error messages
+ * Process build-dependencies in forward rather than reverse order
+ * Error out if an installed package is too new for a << or <=
+ build-dependency
+ * apt-get build-dep should now be able to handle almost any package with
+ correct build-depends. The primary exception is build-dependencies on
+ virtual packages with more than one provider, and these are
+ discouraged for automated processing (but still common,
+ unfortunately).
+
+ -- Matt Zimmerman <mdz@debian.org> Tue, 23 Sep 2003 22:57:31 -0400
+
+apt (0.5.13) unstable; urgency=medium
+
+ * Document configuration file comment syntax in apt.conf(5)
+ (Closes: #211262)
+ * s/removed/installed/ in a comment in apt-get.cc
+ * Move comment for ListParser::ParseDepends into the right place
+ * Don't preserve ownership when copying config.guess and config.sub.
+ This broke builds where the clean target was run with different
+ privileges than the rest of the build (i.e., root) (Closes: #212183)
+ * On second thought, don't copy config.guess and config.sub at all. I'd
+ rather they always match what is in CVS.
+
+ -- Matt Zimmerman <mdz@debian.org> Mon, 22 Sep 2003 10:28:17 -0400
+
+apt (0.5.12) unstable; urgency=low
+
+ * Exclude subdirectories named 'debian-installer' from the apt-cdrom
+ search (Closes: #210485 -- release-critical)
+
+ -- Matt Zimmerman <mdz@debian.org> Thu, 11 Sep 2003 21:48:14 -0400
+
+apt (0.5.11) unstable; urgency=low
+
+ * Updated pt_BR translations from Andre Luis Lopes <andrelop@debian.org>
+ (Closes: #208302)
+ * In apt.conf(5), give the fully qualified name of Dir::Bin::Methods,
+ rather than just "methods"
+ * Add new nb and nn translations from Petter Reinholdtsen <pere@hungry.com>
+ * Clean up reportbug script a bit, and extend it to distinguish between a
+ configuration file not existing and the user declining to submit it with
+ the report
+ * Add #include <langinfo.h> to cmdline/apt-get.cc. This apparently gets
+ pulled in by something else with recent g++ and/or glibc, but is
+ required when building on, e.g., stable
+ * Patch from Koblinger Egmont <egmont@uhulinux.hu> to fix version
+ comparisons with '~' (Closes: #205960)
+ * Disable Russian translation until someone can review it
+ (Closes: #207690)
+
+ -- Matt Zimmerman <mdz@debian.org> Wed, 10 Sep 2003 19:41:28 -0400
+
+apt (0.5.10) unstable; urgency=low
+
+ * Correct the section in apt_preferences(5) on interpreting priorities
+ to show that zero is not a valid priority, and print a warning if such
+ a pin is encountered in the preferences file (Closes: #204971)
+ * Regenerate French man pages from sgml source (Closes: #205886)
+ * Get self-tests compiling again, updated for latest library API
+ and g++ 3.3
+ * Add version comparison tests for #194327 and #205960
+ * Fix error message in version test to output versions in the order in
+ which they were compared when the reverse comparison fails
+ * Reference the source package bug page rather than the one for the
+ binary package 'apt' in the man pages (Closes: #205290)
+ * Updated Polish po file from Marcin Owsiany <porridge@debian.org>
+ (Closes: #205950)
+ * Mention some of the available front-ends in apt-get(8) (Closes: #205829)
+ * Add apt-config to SEE ALSO section of apt-get (Closes: #205036)
+ * Add missing "lang" attributes to refentry tags in French man pages
+ (apt-cdrom, apt-extracttemplates, apt-sortpkgs)
+ * Change upgraded/newly installed/not fully installed or removed
+ messages to be consistent and somewhat shorter (some translations
+ exceeded 80 characters even in the simplest case)
+ * Make APT::Get::Show-Upgraded (aka apt-get -u) default to true.
+ * Updates to Dutch translation from Bart Cornelis <cobaco@linux.be>
+ (Closes: #207656)
+
+ -- Matt Zimmerman <mdz@debian.org> Sun, 31 Aug 2003 21:12:39 -0400
+
+apt (0.5.9) unstable; urgency=low
+
+ * Oh well, apt isn't going to make it into testing anytime soon due to
+ new glibc and gcc deps, so we might as well fix more bugs
+ * Fix typo in example ftp-archive.conf (Closes: #203295)
+ * Mention default setting for --all-versions (Closes: #203298)
+ * Patch from Otavio Salvador <otavio@debian.org> to have --version
+ only print the version (and not usage as well) (Closes: #203418)
+ * Patch from Otavio Salvador <otavio@debian.org> to switch from
+ dh_installmanpages to dh_installman. Fixes the problem where the
+ pt_BR man page was installed in the wrong location (Closes: #194558)
+ * Move the French apt-ftparchive man page into apt-utils where it
+ belongs. apt-utils Replaces: apt (<< 0.5.9)
+ * Write records from "apt-cache show" using fwrite(3) rather than
+ write(2), in case for some reason the entire record doesn't get
+ written by a single write(2)
+ * Add new French man pages to doc/fr/.cvsignore
+ * Add freebsd to buildlib/ostable (Closes: #193430)
+ * Avoid segfault if a package name is specified which consists
+ entirely of characters which look like end tags ('+', '-')
+ (Closes: #200425)
+ * Patch from Otavio Salvador <otavio@debian.org> to avoid listing
+ suggests/recommends for packages which are selected for installation
+ at the same time as the package which suggests/recommends them
+ (Closes: #200102)
+ * Patch from Otavio Salvador <otavio@debian.org> to avoid listing
+ suggests/recommends which are Provided by a package which is already
+ installed (Closes: #200395)
+ * Patch to update pt_BR man page for apt_preferences(5) from Andre Luis
+ Lopes <andrelop@debian.org> (Closes: #202245)
+ * Use nl_langinfo(YESEXPR) rather than comparing to the translated
+ string "Y". Closes: #200953 and should make the prompting generally
+ more robust in the face of i18n. In the particular case of #200953,
+ it was being fooled because of signedness issues with toupper(3)
+ (Closes: #194614)
+ * apt Suggests: aptitude | synaptic | gnome-apt | wajig
+ (Closes: #146667)
+ * Clean up whitespace in translated strings in ru.po, which messed up
+ indentation (some other translations probably have similar problems)
+ (Closes: #194282)
+ * Run ispell -h over the man page sources and fix a bunch of typos
+ * Use debian/compat rather than DH_COMPAT
+ * Update to debhelper compatibility level 3
+ - remove ldconfig calls from debian/{postinst,postrm} as dh_makeshlibs
+ will add them
+ - echo 3 > debian/compat
+ - Build-Depends: debhelper (>= 3)
+ * Exclude '.#*' from cvs-build
+ * Let the ftp method work with ftp servers which do not require a
+ password (Closes: #199425)
+ * Build-depend on debhelper >= 4.1.62, because we need the fix for
+ #204731 in order for dh_installman to work correctly
+ with our SGML man pages
+ * Move dh_makeshlibs ahead of dh_installdeb so that its postinst
+ fragments are properly substituted
+
+ -- Matt Zimmerman <mdz@debian.org> Sun, 10 Aug 2003 19:54:39 -0400
+
+apt (0.5.8) unstable; urgency=medium
+
+ * urgency=medium because the changes since 0.5.5.1 are pretty safe as
+ far as core functionality, 0.5.5.1 survived unstable for 10 days, and
+ I don't want to delay apt's progress into testing any further. It's
+ decidedly better than 0.5.4.
+ * Clarify the meaning of the only-source option in apt-get(8)
+ (Closes: #177258)
+ * Updated French man pages from Philippe Batailler
+ <philippe.batailler@free.fr> (Closes: #182194)
+ * Give a warning if an illegal type abbreviation is used when looking up a
+ configuration item (Closes: #168453)
+ * Improve build-depends handling of virtual packages even further, so that
+ it will now also try to satisfy build-depends on virtual packages if they
+ are not installed. Note that this only works if there is only one
+ package providing the virtual package, as in other cases (Closes: #165404)
+ * Update config.guess and config.sub from autotools-dev 20030717.1
+ * Tweak SGML in apt-extracttemplates.1.sgml so that literal '>' doesn't end
+ up in output
+ * Document SrcDirectory in apt-ftparchive.1.sgml (Closes: #156370)
+ * Support TMPDIR in apt-extracttemplates (Closes: #191656)
+ * Fix ru.po to use a capital letter for the translation of 'Y' so that
+ YnPrompt works correctly (Closes: #200953). No other translations seem
+ to have this problem
+ * Regenerate POT file and sync .po files
+ * Only try to clear stdin if it is a tty, to avoid looping if there is
+ lots of stuff (perhaps an infinite amount) to read (Closes: #192228)
+
+ -- Matt Zimmerman <mdz@debian.org> Fri, 25 Jul 2003 20:21:53 -0400
+
+apt (0.5.7) unstable; urgency=low
+
+ * Update control file to match overrides (apt priority important,
+ libapt-pkg-dev section libdevel)
+ * Silence the essential packages check if we are only downloading
+ archives and not changing the system (Closes: #190862)
+ * Skip version check if a build-dependency is provided by an installed package
+ (Closes: #126938)
+ * Have apt-cache show exit with an error if it cannot find any of the
+ specified packages (Closes: #101490)
+
+ -- Matt Zimmerman <mdz@debian.org> Mon, 21 Jul 2003 23:43:24 -0400
+
+apt (0.5.6) unstable; urgency=low
+
+ * Adam Heath <doogie@debian.org>
+ - Fix segfault when handling /etc/apt/preferences. Closes: #192409.
+ * Matt Zimmerman <mdz@debian.org>
+ - Clean up some string handling, patch from Peter Lundkvist
+ <p.lundkvist@telia.com> (Closes: #192225)
+ - Don't fall off the end of the buffer when comparing versions.
+ Patch from Koblinger Egmont <egmont@uhulinux.hu> (Closes: #194327)
+ - Minor fixes to apt-ftparchive(1) (Closes: #118156)
+ - Fix typo in apt-ftparchive help text (Closes: #119072)
+ - More typos in apt-ftparchive help text (Closes: #190936)
+ - Update config.guess, config.sub to latest versions
+ - Modify the description for apt-utils to reflect the fact that it is not
+ (any longer) infrequently used (Closes: #138045)
+ - Make setup script for dselect method more explicit about
+ overwriting sources.list (Closes: #151727)
+ - Fix typo in apt-cache(8) (Closes: #161243)
+ - Remove duplicate 'showpkg' from synopsis on apt-cache(8)
+ (Closes: #175611)
+ - Document in apt-get(8) the meaning of the '*' in ShowList, which is that
+ the package is being purged (Closes: #182369)
+ - Fix extra "/" character in apt.conf(5) (Closes: #185545)
+ - Fix typo in tar error message (Closes: #191424)
+ - Clarify description of 'search' on apt-cache(8) (Closes: #192216)
+ - Fix incorrect path for 'partial' directory on apt-get(8)
+ (Closes: #192933)
+ - Fixes to pt_BR translation from Andre Luis Lopes <andrelop@ig.com.br>
+ (Closes: #196669)
+ - Updated apt_preferences(5) man page with many corrections and
+ clarifications from Thomas Hood <jdthood@yahoo.co.uk>
+ (Closes: #193336)
+ - Fix SGML validation errors in apt-cache.8.sgml introduced in 0.5.5 or so
+ - Add a simple example to apt-ftparchive(1) (Closes: #95257)
+ - Add bug script for collecting configuration info (Closes: #176482)
+
+ -- Matt Zimmerman <mdz@debian.org> Mon, 21 Jul 2003 01:59:43 -0400
+
+apt (0.5.5.1) unstable; urgency=low
+
+ * Move the target of the example docs from doc to binary. Closes:
+ #192331
+ * Fix api breakage that broke apt-ftparchive and apt-cache dumpavail, by
+ backing out change that incorretly attempted to handle Package sections
+ larger than 32k. Closes: #192373
+ * Fix never-ending loop with apt-get install -V. Closes: #192355.
+
+ -- Adam Heath <doogie@debian.org> Mon, 19 May 2003 12:30:16 -0500
+
+apt (0.5.5) unstable; urgency=low
+
+ * New deb version compare function, that has no integer limits, and
+ supports pre-versions using ~. Code ported from dpkg.
+ * Fix handling of [!arch] for build-dependencies. Closes: #88798, #149595
+ * Fix handling of build-deps on unknown packages. Closes: #88664, #153307
+ * "apt-get --arch-only build-dep" to install only architecture-
+ dependent build dependencies. Bump minor shared lib number to reflect
+ small change in BuildDepend API.
+ * APT::Build-Essential configuration option (defaults to "build-essential")
+ so that "apt-get build-dep" will ensure build essential packages are
+ installed prior to installing other build-dependencies. Closes: #148879
+ * LD_LIBRARY_PATH thing. Closes: #109430, #147529
+ * /usr/doc reference in postinst. Closes: #126189
+ * Doc updates. Closes: #120689
+ * Possible apt-cache segfault. Closes: #120311, #118431, #117915, #135295,
+ #131062, #136749
+ * Print special message for EAI_AGAIN. Closes: #131397
+ * libapt-pkg-dev needs to bring in the apt-inst library if linking
+ is to work. Closes: #133943
+ * Typos, Doc Stuff. Closes: #132772, #129970, #123642, #114892, #113786,
+ #109591, #105920, #103678, #139752, #138186, #138054, #138050,
+ #139994, #142955, #151654, #151834, #147611, #154268, #173971
+ * Fix possibility for tag file parsing to fail in some unlikely situations.
+ Closes: #139328
+ * Use std C++ names for some header files. Closes: #128741
+ * Do not check for free space if --no-download. Closes: #117856
+ * Actually implement or group handling for 'upgrade'. Closes: #133950
+ * "Internal Error, Couldn't configure pre-depend" is not actually an
+ internal error, it is a packaging error and now it says so, and
+ pinpoints the problem dependency. Closes: #155621
+ * Allows failure to write to a pipe for post-invoke stuff. Closes: #89830
+ * Use usr/share/doc for dhelp. Closes: #115701
+ * --print-uris works with 'update'. Closes: #57070
+ * Options Dpkg::MaxArgs,Dpkg::MaxArgBytes to allow a much longer dpkg
+ command line.
+ * Fixed 2 little OR group bugs, thanks to Yann Dirson. Closes: #143995,
+ #142298
+ * Allow an uninstalled package to be marked for removal on an install
+ line (meaning not to automatically install it), also fix some dodgy
+ handling of protected packages. Closes: #92287, #116011
+ * Fix errant prefix matching in version selection. Closes: #105968
+ * Ensure that all files needed to run APT as a user are readable and
+ ignore roots umask for these files. Closes: #108801
+ * Support larger config spaces. Closes: #111914
+ * 'apt-get update' no longer does 'Building Dependency Tree'.
+ * When matching regexs always print a message. Change regex activation
+ charset. Closes: #147817
+ * Don't die if lines in sources.list are too long. Closes: #146846
+ * Show file name on apt-extracttemplate error messages. Closes: #151835
+ * i18n gettext stuff, based on work from Michael Piefel: Closes: #95933
+ * Some highly unlikely memory faults. Closes: #155842
+ * C++ stuff for G++3.2. Closes: #162617, #165515,
+ * apt-config dumps sends to stdout not stderr now. Closes: #146294
+ * Fix segfault in FindAny when /i is used, and there is no default.
+ Closes: #165891
+ * Add s390x to archtable. Closese: #160992.
+ * Update config.sub/config.guess in cvs, and add support to debian/rules
+ to update them from /usr/share/misc if they exist. Closes: #155014
+ * Remove 'Sorry' from messages. Closes: #148824.
+ * Change wording of 'additional disk space usage' message. Closes:
+ #135021.
+ * apt-extracttemplates now prepends the package name when extracting
+ files. Closes: #132776
+ * Add -n synonym for --names-only for apt-cache. Closes: #130689
+ * Display both current version and new version in apt-get -s. Closes:
+ #92358
+ * Add an options and timeout config item to ssh/rsh. Closes: #90654
+ * libapt-pkg-dev now depends on apt-utils. Closes: #133942.
+ * Change verbose logging output of apt-ftparchive to go to stderr,
+ instead of stdout. Also, errors that occur no longer go to stdout,
+ but stderr. Closes: #161592
+ * Test for timegm in configure. Closes: #165516.
+ * s/st_mtime/mtime/ on our local stat structure in apt-ftparchive, to
+ support compliation on platforms where st_mtime is a macro. Closes:
+ #165518
+ * Check the currently mounted cdrom, to see if it's the one we are
+ interested in. Closes: #154602
+ * Refer to reportbug instead of bug in the man pages. Closes: #173745
+ * Link apt-inst to apt-pkg. Closes: #175055
+ * New apt_preferences man page from Thomas Hood, Susan Kleinmann,
+ and others.
+ * Fix > 300 col screen segfault. Closes: #176052
+ * Rebuild with gcc-3.2. Closes: #177752, #178008.
+ * Fix build-dep handling of | dependencies.
+ Closes: #98640, #145997, #158896, #172901
+ * Double default value of APT::Cache-Limit, until such time as it
+ can be made more dynamic. Closes: #178623.
+ * Report uris with '.gz' when there are errors. Closes: #178435.
+ * When installing build-deps, make sure the new version will
+ satisfy build requirements. Closes: #178121
+ * Split offline and guide documentation into apt-doc. This was done so
+ that binary-arch builds do not require documentation deps. Note, that
+ apt-doc is not installed on upgrades.
+ * Use doc-base, instead of dhelp directly. Closes: #110389
+ * Change http message 'Waiting for file' to 'Waiting for headers'.
+ Closes: #178537
+ * Remove trailing lines on package lists in apt-get. Closes: #178736.
+ * Fix origin pins for file:// uris. Closes: #189014.
+ * Apply typo and syntax patch from bug to apt-cache.8.sgml. Closes:
+ #155194
+ * s/dpkg-preconfig/dpkg-preconfigure/ in examples/configure-index.
+ Closes: #153734.
+ * Fix some typos in the apt-get manual. Closes: #163932.
+ * Apply patch from bug, to change frozen to testing, and then do it
+ everywhere else. Closes: #165085.
+ * Update es.po. Closes: #183111.
+ * Add pt_BR translation of apt_preferences(5). Also, build fr manpages.
+ Closes: #183904.
+ * Add a vcg command to apt-cache, similar to dotty. Closes: #150512.
+ * Add option to apt-get to show versions of packages being
+ upgraded/installed.
+ * Be quiet in apt.post{inst,rm}. Closes: #70685.
+ * apt-get now prints out suggested and recommended packages. Closes:
+ #54982.
+ * Insert some newlines in the cdrom change media message. Closes:
+ #154601.
+ * Add a rdepends command to apt-cache. Closes: #159864.
+ * When building the dpkg command line, allow for 8192 chars to be used,
+ instead of only 1024.
+ * APT::Immediate-Configure had inverted semantics(false meant it was
+ enabled). Closes: #173619.
+ * Fix status file parser so that if a record is larger than 32k, the
+ buffer size will be doubled, and the read attempted again. Closes:
+ #174945.
+
+ -- Adam Heath <doogie@debian.org> Sun, 27 Apr 2003 01:23:12 -0500
+
+apt (0.5.4) unstable; urgency=low
+
+ * M68k config.guess patch. Closes: #88913
+ * Bi-yearly test on OpenBSD and Solaris
+ * Doc updates. Closes: #89121, #89854, #99671, #98353, #95823, #93057,
+ #97520, #102867, #101071, #102421, #101565, #98272, #106914,
+ #105606, #105377
+ * Various cosmetic code updates. Closes: #89066, #89066, #89152
+ * Add "pre-auto" as an option for DSelect::Clean (run autoclean after
+ update).
+ * More patches from Alfredo for Vendors and more SHA-1 stuff
+ * Fix for AJ's 'desire to remove perl-5.005' and possibly other
+ similar situations. Closes: #56708, #59432
+ * no_proxy and ftp. Closes: #89671
+ * Philippe Batailler's man page patches.
+ * Fix for display bug. Closes: #92033, #93652, #98468
+ * Use more than 16bits for the dep ID. Some people ran out..
+ Closes: #103020, #97809, #102951, #99974, #107362, #107395, #107362,
+ #106911, #107395, #108968
+ * Reordered some things to make dante and FTP happier. Closes: #92757
+ * James R. Van Zandt's guide.sgml updates. Closes: #90027
+ * apt-ftparchive copes with no uncompressed package files + contents.
+ * French man pages from philippe batailler - well sort of. They
+ don't build yet..
+ * run-parts. Closes: #94286
+ * 'apt-cache policy' preferences debug tool.
+ * Whatever. Closes: #89762
+ * libstdc++ and HURD. Closes: #92025
+ * More apt-utils verbage. Closes: #86954
+ * Fliped comparison operator. Closes: #94618
+ * Used the right copyright file. Closes: #65691
+ * Randolph's G++3 patches.
+ * Fixed no_proxy tokanizing. Closes: #100046
+ * Strip Config-Version when copying status to available. Closes: #97520
+ * Segfault with missing source files. Closes: #100325
+ * EINTR check. Closes: #102293
+ * Various changes to the locking metholodgy for --print-uris.
+ Closes: #100590
+ * Lame LD_LIBRARY_PATH thing. Closes: #98928
+ * apt-cache search searches provide names too now. Closes: #98695
+ * Checksum and long lines problem. Closes: #106591
+ * .aptignr and empty files are just a warning. Closes: #97364
+
+ -- Jason Gunthorpe <jgg@debian.org> Sat, 18 Aug 2001 17:21:59 -0500
+
+apt (0.5.3) unstable; urgency=low
+
+ * JoeyH's dpkg::preconfig not working. Closes: #88675
+ * Fixed apt override disparity
+ * Alfredo's SHA-1 and related patches
+
+ -- Jason Gunthorpe <jgg@debian.org> Sun, 4 Mar 2001 15:39:43 -0700
+
+apt (0.5.2) unstable; urgency=low
+
+ * Fixed mention of /usr/doc in the long description
+ * JoeyH's downgrade bug -- don't use 0.5.1
+ * Doc bug. Closes: #88538
+ * Fault in building release strings. Closes: #88533
+
+ -- Jason Gunthorpe <jgg@debian.org> Sun, 4 Mar 2001 15:39:43 -0700
+
+apt (0.5.1) unstable; urgency=low
+
+ * Fixed #82894 again, or should be and.
+ * Process the option string right. Closes: #86921
+ * Don't eat the last command for pipes. Closes: #86923
+ * Ignore .* for configuration directory processing. Closes: #86923
+ * Alfredo's no_proxy patch
+ * Documentation fixes. Closes: #87091
+ * JoeyH's double slash bug. Closes: #87266
+ * Unintitialized buffer and apt-ftparchive contents generation.
+ Closes: #87612
+ * Build-deps on virtual packages. Closes: #87639
+ * Fixes glibc/libstdc++ symbol dependencies by including glibc and
+ libstdc++ version info in the library soname and in the package
+ provides. Closes: #87426
+ * Updated soname version to 0.3.2
+ * apt-extracttemplates moved from debconf into apt-utils
+ * s390 archtable entry. Closes: #88232
+ * Dan's segfault
+ * Some instances where the status file can source a package in a
+ non-sensical way. Closes: #87390
+ * Work better if there are duplicate sources.list entries.
+ * Fixed the resetting of Dir with "dir {};". Closes: #87323
+
+ -- Randolph Chung <tausq@debian.org> Sat, 3 Mar 2001 15:37:38 -0700
+
+apt (0.5.0) unstable; urgency=low
+
+ * Fixed an obscure bug with missing final double new lines in
+ package files
+ * Changed the apt-cdrom index copy routine to use the new section
+ rewriter
+ * Added a package file sorter, apt-sortpkgs
+ * Parse obsolete Optional dependencies.
+ * Added Ben's rsh method. Closes: #57794
+ * Added IPv6 FTP support and better DNS rotation support.
+ * Include the server IP in error messages when using a DNS rotation.
+ Closes: #64895
+ * Made most of the byte counters into doubles to prevent 32bit overflow.
+ Closes: #65349
+ * HTTP Authorization. Closes: #61158
+ * Ability to parse and return source index build depends from Randolph.
+ * new 'apt-get build-dep' command from Randolph. Closes: #63982
+ * Added apt-ftparchive the all dancing all singing FTP archive
+ maintinance program
+ * Allow version specifications with =1.2.4-3 and /2.2 or /stable postfixes
+ in apt-get.
+ * Removed useless internal cruft including the xstatus file.
+ * Fixed config parser bugs. Closes: #67848, #71108
+ * Brain Damanged apt-get config options changed, does not change the command
+ line interface, except to allow --enable-* to undo a configuration
+ option:
+ No-Remove -> Remove
+ No-Download -> Download
+ No-Upgrade -> Upgrade
+ * Made this fix configable (DSelect::CheckDir) and default to disabled:
+ * No remove prompt if the archives dir has not changed. Closes: #55709
+ Because it is stupid in the case where no files were downloaded due to
+ a resumed-aborted install, or a full cache! Closes: #65952
+ * Obscure divide by zero problem. Closes: #64394
+ * Update sizetable for mips. Closes: #62288
+ * Fixed a bug with passive FTP connections
+ * Has sizetable entry for sparc64. Closes: #64869
+ * Escape special characters in the ::Label section of the cdroms.lst
+ * Created apt-utils and python-apt packages
+ * Due to the new policy engine, the available file may contain entries
+ from the status file. These are generated if the package is not obsolete
+ but the policy engine prohibits using the version from the package files.
+ They can be identified by the lack of a Filename field.
+ * The new policy engine. Closes: #66509, #66944, #45122, #45094, #40006,
+ #36223, #33468, #22551
+ * Fixed deb-src line for non-us. Closes: #71501, #71601
+ * Fixes for G++ 2.96, s/friend/friend class/
+ * Fixed mis doc of APT::Get::Fix-Missing. Closes: #69269
+ * Confirmed fix for missing new line problem. Closes: #69386
+ * Fixed up dhelp files. Closes: #71312
+ * Added some notes about dselect and offline usage. Closes: #66473, #38316
+ * Lock files on read only file systems are ignored w/ warning.
+ Closes: #61701
+ * apt-get update foo now gives an error! Closes: #42891
+ * Added test for shlibs on hurd. Closes: #71499
+ * Clarified apt-cache document. Closes: #71934
+ * DocBook SGML man pages and some improvements in the text..
+ * sigwinch thing. Closes: #72382
+ * Caching can be turned off by setting the cache file names blank.
+ * Ignores arches it does not know about when autocleaning. Closes: #72862
+ * New function in apt-config to return dirs, files, bools and integers.
+ * Fixed an odd little bug in MarkInstall and fixed it up to handle
+ complex cases involving OR groups and provides.
+ 68754 describes confusing messages which are the result of this..
+ Closes: #63149, #69394, #68754, #77683, #66806, #81486, #78712
+ * Speeling mistake and return code for the 'wicked' resolver error
+ Closes: #72621, #75226, #77464
+ * Solved unable to upgrade libc6 from potato to woody due to 3 package
+ libc6 dependency loop problem.
+ * Leading sources.list spaces. Closes: #76010
+ * Removed a possible infinite loop while processing installations.
+ * Man page updates. Closes: #75411, #75560, #64292, #78469
+ * ReduceSourceList bug. Closes: #76027
+ * --only-source option. Closes: #76320
+ * Typos. Closes: #77812, #77999
+ * Different status messages. Closes: #76652, #78353
+ * /etc/apt/apt.conf.d/ directory for Joey and Matt and pipe protocol 2
+ * OS detection an support for the new pseduo standard of os-arch for the
+ Architecture string. Also uses regexing.. Closes: #39227, #72349
+ * Various i18n stuff. Note that this still needs some i18n wizard
+ to do the last gettextization right. Closes: #62386
+ * Fixed a problem with some odd http servers/proxies that did not return
+ the content size in the header. Closes: #79878, #44379
+ * Little acquire bugs. Closes: #77029, #55820
+ * _POSIX_THREADS may not be defined to anything, just defined..
+ Closes: #78996
+ * Spelling of Ignore-Hold correctly. Closes: #78042
+ * Unlock the dpkg db if in download only mode. Closes: #84851
+ * Brendan O'Dea's dselect admindir stuff. Closes: #62811
+ * Patch from BenC. Closes: #80810
+ * Single output of some names in lists. Closes: #80498, #43286
+ * Nice message for people who can't read syserror output. Closes: #84734
+ * OR search function. Closes: #82894
+ * User's guide updates. Closes: #82469
+ * The AJ/JoeyH var/state to var/lib transition patch. Closes: #59094
+ * Various CD bugs, again thanks to Greenbush
+ Closes: #80946, #76547, #71810, #70049, #69482
+ * Using potato debhelper. Closes: #57977
+ * I cannot self-terminate. Closes: #74928
+
+ -- Jason Gunthorpe <jgg@debian.org> Wed, 21 Feb 2001 00:39:15 -0500
+
+apt (0.3.19) frozen unstable; urgency=low
+
+ * Updates to apt-cdrom to support integrated non-us nicely, thanks to
+ Paul Wade.
+ * Fixed that apt-get/cdrom deadlock thing. Closes: #59853, #62945, #61976
+ * Fixed hardcoded path. Closes: #59743
+ * Fixed Jay's relative path bug
+ * Allowed source only CDs. Closes: #58952
+ * Space check is suppressed if --print-uris is given. Closes: #58965
+ * Clarified the documentation examples for non-us. Closes: #58646
+ * Typo in the package description. Closes: #60230
+ * Man Page typo. Closes: #60347
+ * Typo in Algorithms.cc. Closes: #63577
+ * Evil dotty function in apt-cache for generating dependency graphs
+ with the as-yet-unpackaged GraphVis.
+ * Appears to have been fixed in January.. Closes: #57981
+ * New config.guess/sub for the new archs. Closes: #60874
+ * Fixed error reporting for certain kinds of resolution failures.
+ Closes: #61327
+ * Made autoclean respect 'q' settings. Closes: #63023
+ * Fixed up the example sources.list. Closes: #63676
+ * Added DPkg::FlushSTDIN to control the flushing of stdin before
+ forking dpkg. Closes: #63991
+
+ -- Ben Gertzfield <che@debian.org> Fri, 12 May 2000 21:10:54 -0700
+
+apt (0.3.18) frozen unstable; urgency=low
+
+ * Changes in the postinst script. Closes: #56855, #57237
+ * Fixed bashism. Closes: #57216, #57335
+ * Doc updates. Closes: #57772, #57069, #57331, #57833, #57896
+
+ -- Ben Gertzfield <che@debian.org> Sun, 13 Feb 2000 01:52:31 -0800
+
+apt (0.3.17) unstable; urgency=low
+
+ * RFC 2732 usage for CDROM URIs and fixes to apt-cdrom
+ * Fixed the configuration parser to not blow up if ; is in the config
+ string
+ * Applied visual patch to dselect install script . Closes #55214
+ * Included the configure-index example
+ * Minimal CD swaps
+ * Library soname has increased
+ * Fixed default sources.list to have correct URLs for potato when it
+ becomes stable
+ * Added a message about erasing sources.list to dselect setup script
+ Closes: #55755
+ * No remove prompt if the archives dir has not changed. Closes: #55709
+ * Fixed inclusion of 2nd sample config file. Closes: #55374
+ * Made file mtimes of 0 not confuse the methods If-Modifed-Since check.
+ Closes: #55991
+
+ -- Ben Gertzfield <che@debian.org> Mon, 31 Jan 2000 12:12:40 -0800
+
+apt (0.3.16) unstable; urgency=low
+
+ * Made --no-download work. Closes: #52993
+ * Now compiles on OpenBSD, Solaris and HP-UX
+ * Clarify segfault errors
+ * More debhelper fixes. Closes: #52662, #54566, #52090, #53531, #54769
+ * Fix for Joel's discovery of glibc removal behavior.
+ * Fix for Ben Collins file: uri from slink upgrade.
+ * Fixed resume code in FTP. Closes: #54323
+ * Take more precautions to prevent the corruption Joey Hess saw.
+ * Fixed --no-list-cleanup
+ * RFC 2732 URI parsing ([] for hostnames).
+ * Typo in apt-cache man page. Closes: #54949
+
+ -- Ben Gertzfield <che@debian.org> Fri, 14 Jan 2000 08:04:15 -0800
+
+apt (0.3.15) unstable; urgency=low
+
+ * Added DSelect::WaitAfterDownload Closes: #49549
+ * Fixed cast error in byteswap macro and supporting code. Closes: #50093
+ * Fixed buffer overflow for wide terminal sizes. Closes: #50295
+ * Made -s and clean not do anything. Closes: #50238
+ * Problem with Protected packages and the new OR code.
+ * /usr/share/doc stuff. Closes: #51017, #50228, #51141
+ * Remove doesn't require a package to be installable. Closes: #51175
+ * FTP proxy touch ups in the mabn page. Closes: #51315, #51314
+
+ -- Ben Gertzfield <che@debian.org> Sat, 4 Dec 1999 21:17:24 -0800
+
+apt (0.3.14) unstable; urgency=low
+
+ * Fix Perl or group pre-depends thing Closes: #46091, #46096, #46233, #45901
+ * Fix handling of dpkg's conversions from < -> <= Closes: #46094, #47088
+ * Make unparsable priorities non-fatal Closes: #46266, #46267, #46293, #46298
+ * Fix handling of '/' for the dist name. Closes: #43830, #45640, #45692
+ * Fixed 'Method gave a blank filename' error from IMS queries onto CDs.
+ Closes: #45034, #45695, #46537
+ * Made OR group handling in the problem resolver more elaborate. Closes: #45646
+ * Added APT::Clean-Installed option. Closes: #45973
+ * Moves the free space check to after the calculated size is printed.
+ Closes: #46639, #47498
+ * mipsel arch Closes: #47614
+ * Beautified URI printing to not include passwords Closes: #46857
+ * Fixed little problem with --no-download Closes: #47557
+ * Tweaked Dselect 'update' script to re-gen the avail file even in the
+ event of a failure Closes: #47112
+ * Retries for source archives too Closes: #47529
+ * Unmounts CDROMs iff it mounted them Closes: #45299
+ * Checks for the partial directories before doing downloads Closes: #47392
+ * no_proxy environment variable (http only!) Closes: #43476
+ * apt-cache showsrc Closes: #45799
+ * De-Refs Single Pure virtual packages. Closes: #42437, #43555
+ * Regexs for install. Closes: #35304, #38835
+ * Dependency reports now show OR group relations
+ * Re-Install feature. Cloes: #46961, #37393, #38919
+ * Locks archive directory on clean (woops)
+ * Remove is not 'sticky'. Closes: #48392
+ * Slightly more accurate 'can not find package' message. Closes: #48311
+ * --trivial-only and --no-remove. Closes: #48518
+ * Increased the cache size. Closes: #47648
+ * Comment woopsie. Closes: #48789
+ * Removes existing links when linking sources. Closes: #48775
+ * Problem resolver does not install all virtual packages. Closes: #48591, #49252
+ * Clearer usage message about 'source' Closes: #48858
+ * Immediate configure internal error Closes: #49062, #48884
+
+ -- Ben Gertzfield <che@debian.org> Sun, 7 Nov 1999 20:21:25 -0800
+
+apt (0.3.13) unstable; urgency=low
+
+ * Fix timestamp miss in FTP. Closes: #44363
+ * Fix sorting of Kept packages. Closes: #44377
+ * Fix Segfault for dselect-upgrade. Closes: #44436
+ * Fix handling of '/' for the dist name. Closes #43830
+ * Added APT::Get::Diff-Only and Tar-Only options. Closes #44384
+ * Add commented-out deb-src URI to default sources.list file.
+
+ -- Ben Gertzfield <che@debian.org> Sun, 19 Sep 1999 18:54:20 -0700
+
+apt (0.3.12) unstable; urgency=low
+
+ * Fix for typo in the dhelp index. Closes: #40377
+ * Multiple media swap support
+ * Purge support. Closes: #33291, #40694
+ * Better handling of - remove notation. Closes: #41024
+ * Purge support. Closes: #33291, #40694
+ * Error code on failed update. Closes: #41053
+ * apt-cdrom adds entries for source directories. Closes: #41231
+ * Sorts the output of any list. Closes: #41107
+ * Fixes the looping problem. Closes: #41784, #42414, #44022
+ * Fixes the CRC mechanism to lowercase all strings. Closes: #41839
+ * More checks to keep the display sane. Particularly when fail-over is
+ used with local mirrors and CD-Roms. Closes: #42127, #43130, #43668
+ * PThread lockup problem on certain sparc/m68k. Closes: #40628
+ * apt-cdrom understands .gz Package files too. Closes: #42779
+ * Spelling error in dselect method description. Closes: #43251
+ * Added security to the default source list. Closes: #43356
+
+ -- Ben Gertzfield <che@debian.org> Fri, 3 Sep 1999 09:04:28 -0700
+
+apt (0.3.11) unstable; urgency=low
+
+ * Fix for mis-parsed file: URIs. Closes: #40373, #40366, #40230
+ * Fix for properly upgrading the system from perl 5.004 to 5.005
+
+ -- Ben Gertzfield <che@debian.org> Mon, 28 Jun 1999 21:06:44 -0700
+
+apt (0.3.9) unstable; urgency=low
+
+ * Spelling error in cachefile.cc. Closes: #39885
+ * Trailing slash in dselect install if you try to use the
+ default config file. Closes: #40011
+ * Simulate works for autoclean. Closes: #39141
+ * Fixed spelling errors. Closes: #39673
+ * Changed url parsing a bit. Closes: #40070, #40069
+ * Version 0.3.8 will be for slink/hamm (GNU libc 2).
+
+ -- Ben Gertzfield <che@debian.org> Thu, 24 Jun 1999 18:02:52 -0700
+
+apt (0.3.7) unstable; urgency=low
+
+ * Fixed missing text in the apt-get(8) page. Closes: #37596
+ * Made --simulate and friends work with apt-get source. Closes: #37597, #37656
+ * Fixed inclusion of man pages in the -doc/-dev package. Closes: #37633, #38651
+ * Fixed handling of the -q option with not-entirely integer arguments
+ Closes: #37499
+ * Man page typo Closes: #37762
+ * Fixed parsing of the Source: line. Closes: #37679
+ * Dpkg/dpkg-hurd source bug. Closes: #38004, #38032
+ * Added a check for an empty cache directory. Closes: #37963
+ * Return a failure code if -d is given and packages fail to download.
+ Closes: #38127
+ * Arranged for an ftp proxy specifying an http server to work. See the
+ important note in the sources.list man page.
+ * Accounted for resumed files in the cps calculation. Closes: #36787
+ * Deal with duplicate same version different packages. Closes: #30237
+ * Added --no-download. Closes: #38095
+ * Order of apt-cdrom dist detection. Closes: #38139
+ * Fix apt-cdrom chop handling and missing lines. Closes: #37276
+ * IPv6 http support
+ * Suggests dpkg-dev for apt-get source. Closes: #38158
+ * Fixed typo in apt-get help. Closes: #38712
+ * Improved the error message in the case of broken held package. Closes: #38777
+ * Fixed handling of MD5 failures
+ * Documented list notation Closes: #39008
+ * Change the 'b' to 'B'. Closes: #39007
+
+ -- Ben Gertzfield <che@debian.org> Sun, 20 Jun 1999 18:36:20 -0700
+
+apt (0.3.6) unstable; urgency=low
+
+ * Note that 0.3.5 never made it out the door..
+ * Fix for apt-cdrom and unusual disk label locations. Closes: #35571
+ * Made APT print numbers in decimal. Closes: #35617, #37319
+ * Buffer munching fix for FTP. Closes: #35868
+ * Typo in sample config file. Closes: #35907
+ * Fixed whitespace in version compares. Closes: #35968, #36283, #37051
+ * Changed installed size counter to only count unpacked packages.
+ Closes: #36201
+ * apt-get source support. Closes: #23934, #27190
+ * Renames .debs that fail MD5 checking, provides automatic corruption
+ recovery. Closes: #35931
+ * Fixed autoconf version. Closes: #37305
+ * Random Segfaulting. Closes: #37312, #37530
+ * Fixed apt-cache man page. Closes: #36904
+ * Added a newline to apt-cache showpkg. Closes: #36903
+
+ -- Ben Gertzfield <che@debian.org> Wed, 12 May 1999 09:18:49 -0700
+
+apt (0.3.4) unstable; urgency=low
+
+ * Release for Ben while he is out of town.
+ * Checked the size of partial files. Closes: #33705
+ * apt-get should not print progress on non-tty. Closes: #34944
+ * s/guide.text.gz/users-guide.txt.gz/ debian/control: Closes: #35207
+ * Applied cdrom patches from Torsten. Closes: #35140, #35141
+ * smbmounted cdrom fix. Closes: #35470
+ * Changed ie to eg. Closes: #35196
+
+ -- Adam Heath <doogie@debian.org> Sun, 4 Apr 1999 18:26:44 -0500
+
+apt (0.3.3) unstable; urgency=low
+
+ * Fixes bug with file:/ URIs and multi-CD handling. Closes: #34923
+
+ -- Ben Gertzfield <che@debian.org> Tue, 23 Mar 1999 12:15:44 -0800
+
+apt (0.3.2) unstable; urgency=low
+
+ * Major release into unstable of v3
+ * These bugs have been fixed, explanations are in the bug system, read
+ the man pages as well..
+ Closes: #21113, #22507, #22675, #22836, #22892, #32883, #33006, #34121,
+ #23984, #24685, #24799, #25001, #25019, #34223, #34296, #34355,
+ #24021, #25022, #25026, #25104, #25176, #31557, #31691, #31853,
+ #25458, #26019, #26433, #26592, #26670, #27100, #27100, #27601,
+ #28184, #28391, #28778, #29293, #29351, #27841, #28172, #30260,
+ #29382, #29441, #29903, #29920, #29983, #30027, #30076, #30112,
+ #31009, #31155, #31381, #31883, #32140, #32395, #32584. #34465,
+ #30383, #30441, #30472, #30643, #30827, #30324, #36425, #34596
+
+ -- Ben Gertzfield <che@debian.org> Mon, 15 Mar 1999 19:14:25 -0800
+
+apt (0.3.1) experimental; urgency=low
+
+ * Minor release of cvs version.
+ * Added virtual package libapt-pkgx.x
+
+ -- Mitch Blevins <mblevin@debian.org> Wed, 10 Mar 1999 07:52:44 -0500
+
+apt (0.3.0) experimental; urgency=low
+
+ * New experimental version.
+
+ -- Ben Gertzfield <che@debian.org> Tue, 15 Dec 1998 12:53:21 -0800
+
+apt (0.1.9) frozen unstable; urgency=low
+
+ * Return to the wacky numbering for when we build 0.1.8 for hamm
+ * Important bug related to APT on the Alpha fixed
+ * apt-get dist-upgrade problems fixed
+ * tiny patch for http method to fix an endless loop
+ * nice fix from /usr/doc/lintian/ to remove rpath nastiness from
+ libtool and add proper shared lib dependencies
+ * now dh_shlibdeps is called with LD_LIBRARY_PATH=debian/tmp/usr/lib
+ in case an old libpkg is installed while building APT to prevent
+ spurious dependencies
+
+ -- Ben Gertzfield <che@debian.org> Thu, 5 Nov 1998 17:43:25 -0800
+
+apt (0.1.7) unstable; urgency=low
+
+ * New build with libstdc++2.9.
+ * Various fixes; read the Changelog.
+
+ -- Ben Gertzfield <che@debian.org> Thu, 15 Oct 1998 18:29:18 -0700
+
+apt (0.1.6) unstable; urgency=low
+
+ * Various fixes in the FTP method for error checking. Fixes: #26188.
+ * Spelling corrections in dselect method. Fixes: #25884
+ * Fixes for compilation on alpha/ppc. Fixes: #25313, #26108.
+ * No more bo releases: we're using a normal numbering system now.
+
+ -- Ben Gertzfield <che@debian.org> Tue, 8 Sep 1998 19:27:13 -0700
+
+apt (0.1.5) unstable; urgency=low
+
+ * Changed sources.list to point to 'unstable' by default, as
+ 'frozen' no longer exists!
+
+ -- Ben Gertzfield <che@debian.org> Thu, 23 Jul 1998 22:00:18 -0700
+
+apt (0.1.3) unstable; urgency=low
+
+ * New upstreamish version.
+ * ftp method rewritten in C. Removes dependencies on all perl/perl
+ related modules. This fixes many of the ftp method bugs.
+
+ -- Ben Gertzfield <che@debian.org> Thu, 16 Jul 1998 22:19:00 -0700
+
+apt (0.1.1) unstable; urgency=low
+
+ * Release for unstable.
+
+ -- Ben Gertzfield <che@debian.org> Tue, 30 Jun 1998 20:48:30 -0700
+
+apt (0.1) unstable; urgency=low
+
+ * Kludge to fix problem in libnet-perl with illegal anonymous
+ FTP passwords.
+ * Moved to unstable; apt is in a useable state now.
+ * Fixed version numbering. From now on, numbering will be:
+ 0.1 (no actual release) -> 0.1.0bo (release for libc5) ->
+ 0.1.1 (release for unstable). Thanks, Manoj.
+
+ -- Ben Gertzfield <che@debian.org> Tue, 30 Jun 1998 20:40:58 -0700
+
+apt (0.0.17-1) experimental; urgency=low
+
+ * Fixed problem with libc6 version compare
+ * Scott's away for a while, so I'll be packaging apt for the time
+ being.
+
+ -- Ben Gertzfield <che@debian.org> Thu, 25 Jun 1998 19:02:03 -0700
+
+apt (0.0.16-1) experimental; urgency=low
+
+ * Modifications to make apt-get more friendly when backgrounded.
+ * Updated documentation.
+ * Updates to graphic widgets
+
+ -- Scott K. Ellis <scott@debian.org> Mon, 8 Jun 1998 11:22:02 -0400
+
+apt (0.0.15-0.2bo) experimental; urgency=low
+
+ * Bo compilation
+ * Bob Hilliards crash
+
+ -- Jason Gunthorpe <jgg@debian.org> Sun, 31 May 1998 20:18:35 -0600
+
+apt (0.0.15-0.1bo) experimental; urgency=low
+
+ * Bo compilation
+ * libstdc++272 patch
+
+ -- Jason Gunthorpe <jgg@debian.org> Sun, 31 May 1998 20:18:35 -0600
+
+apt (0.0.15) experimental; urgency=low
+
+ * Clean up source tarball (no user-visible changes)
+
+ -- Scott K. Ellis <scott@debian.org> Tue, 26 May 1998 12:23:53 -0400
+
+apt (0.0.14) experimental; urgency=low
+
+ * Updates in ordering code to make sure certain upgrades work correctly.
+ * Made dselect/setup understand ftp as well as http
+
+ -- Scott K. Ellis <scott@debian.org> Wed, 20 May 1998 13:33:32 -0400
+
+apt (0.0.13-bo1) experimental; urgency=low
+
+ * Bo compilation
+
+ -- Jason Gunthorpe <jgg@debian.org> Mon, 18 May 1998 15:10:49 -0600
+
+apt (0.0.13) experimental; urgency=low
+
+ * Remove hardcoded egcc from debian/rules (#21575)
+ * Fixes for ordering logic when system has a number of unpacked
+ but unconfigured packages installed.
+ * Spelling fix in dselect install method (#22556)
+
+ -- Scott K. Ellis <scott@debian.org> Sun, 17 May 1998 20:08:33 -0400
+
+apt (0.0.12) experimental; urgency=low
+
+ * Fixed problems with package cache corruption.
+ * Made to depend on libc6 >= 2.0.7pre1 due to timezone problems with
+ earlier versions.
+ * Interface and documentation improvements.
+
+ -- Scott K. Ellis <scott@debian.org> Sat, 16 May 1998 23:17:32 -0400
+
+apt (0.0.11) experimental; urgency=low
+
+ * Change dependencies to pre-depends since breaking your packaging tools
+ in the middle of an installation isn't very good.
+ * Bug fixes to ftp method and general apt-get code
+
+ -- Scott K. Ellis <scott@debian.org> Fri, 15 May 1998 08:57:38 -0400
+
+apt (0.0.10) experimental; urgency=low
+
+ * Run "dpkg --configure -a" after an aborted dselect install
+ * Fixed problem with install looping
+ * Support for authenticating proxys: (note this isn't terribly secure)
+ http_proxy="http://user:pass@firewall:port/"
+ * Substitute $ARCH in sources.list
+ * Fixes in the resumption code for ftp
+
+ -- Scott K. Ellis <scott@debian.org> Tue, 12 May 1998 09:14:41 -0400
+
+apt (0.0.9) experimental; urgency=low
+
+ * Added ftp support.
+ * Various other less visible bug fixes.
+ * Fixed problem with segfault when apt-get invoked in a non-existent
+ directory (Bug #21863)
+ * Bumped policy to 2.4.1
+
+ -- Scott K. Ellis <scott@debian.org> Fri, 1 May 1998 09:18:19 -0400
+
+apt (0.0.8) experimental; urgency=low
+
+ * Fixed generated available file (Bug #21836)
+ * Added download ETA (Bug #21774).
+ * Fixed hardcoded ARCH (Bug #21751).
+ * Fixed check on http_proxy (Bug #21795).
+ * Added download speed indicator.
+
+ -- Scott K. Ellis <scott@debian.org> Mon, 27 Apr 1998 10:58:32 -0400
+
+apt (0.0.7) experimental; urgency=low
+
+ * Remove libdeity and apt from package for now, since only apt-get and
+ apt-cache are actually useful right now.
+ * Clean up handling of package installation errors.
+ * Added timeout to http transfers (#21269)
+ * Updated setup for dselect/apt method.
+ * Updated man pages
+ * Long options (added in 0.0.6)
+
+ -- Scott K. Ellis <scott@debian.org> Tue, 21 Apr 1998 09:06:49 -0400
+
+apt (0.0.6) experimental; urgency=low
+
+ * Spelling changes.
+ * Revamped download status display.
+ * Call apt-get clean after successful install in dselect.
+ * Added "apt-get clean" which deletes package files from /var/cache/apt
+
+ -- Scott K. Ellis <scott@debian.org> Thu, 9 Apr 1998 15:13:59 -0400
+
+apt (0.0.5) experimental; urgency=low
+
+ * Ignore signals while dpkg is running so we don't leave dpkg running in
+ the background (#20804)
+ * Check Packages as well as Packages.gz for file URIs (#20784)
+ * Spelling cleanup (#20800)
+ * Added -m option to permit upgrade to go on in the case of a bad mirror.
+ This option may result in incomplete upgrades when used with -f.
+
+ -- Scott K. Ellis <scott@debian.org> Tue, 7 Apr 1998 12:40:29 -0400
+
+apt (0.0.4) experimental; urgency=low
+
+ * New usage guide.
+ * Various documentation updates and cleanup.
+ * Added '-f' option to apt-get attempt to fix broken dependencies.
+
+ -- Scott K. Ellis <scott@debian.org> Sat, 4 Apr 1998 14:36:00 -0500
+
+apt (0.0.3) experimental; urgency=low
+
+ * Added a shlibs.local file to prevent apt from depending on itself.
+ * Updates to how apt-get handles bad states in installed packages.
+ * Updated rules to make sure build works from a freshly checked out source
+ archive. Building from CVS needs libtool/automake/autoconf, builds from
+ the distributed source package should have no such dependency.
+
+ -- Scott K. Ellis <scott@debian.org> Fri, 3 Apr 1998 11:49:47 -0500
+
+apt (0.0.2) unstable; urgency=low
+
+ * Updates to apt-get and http binding for dselect method (apt).
+ * Updating version number from 0.0.1, which was released only on IRC.
+
+ -- Scott K. Ellis <scott@debian.org> Fri, 3 Apr 1998 00:35:18 -0500
+
+apt (0.0.1) unstable; urgency=low
+
+ * Initial Release.
+
+ -- Scott K. Ellis <scott@debian.org> Tue, 31 Mar 1998 12:49:28 -0500
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 000000000..f599e28b8
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+10
diff --git a/debian/control b/debian/control
new file mode 100644
index 000000000..96bbef348
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,159 @@
+Source: apt
+Section: admin
+Priority: important
+Maintainer: APT Development Team <deity@lists.debian.org>
+Uploaders: Michael Vogt <mvo@debian.org>,
+ Julian Andres Klode <jak@debian.org>,
+ David Kalnischkies <donkult@debian.org>
+Standards-Version: 3.9.8
+Build-Depends: cmake (>= 3.4),
+ debhelper (>= 9.20160709~),
+ dh-systemd,
+ docbook-xml,
+ docbook-xsl,
+ dpkg-dev (>= 1.17.14),
+ gettext (>= 0.12),
+ libbz2-dev,
+ libcurl4-gnutls-dev (>= 7.19.4~),
+ libdb-dev,
+ googletest <!nocheck> | libgtest-dev <!nocheck>,
+ liblz4-dev (>= 0.0~r126),
+ liblzma-dev,
+ pkg-config,
+ po4a (>= 0.34-2),
+ xsltproc,
+ zlib1g-dev
+Build-Depends-Indep: doxygen, graphviz, w3m
+Vcs-Git: https://anonscm.debian.org/git/apt/apt.git
+Vcs-Browser: https://anonscm.debian.org/git/apt/apt.git
+Testsuite: autopkgtest
+
+Package: apt
+Architecture: any
+Depends: adduser,
+ gpgv | gpgv2 | gpgv1,
+ ${apt:keyring},
+ ${misc:Depends},
+ ${shlibs:Depends}
+Replaces: apt-utils (<< 1.3~exp2~)
+Breaks: apt-utils (<< 1.3~exp2~)
+Recommends: gnupg | gnupg2 | gnupg1
+Suggests: apt-doc,
+ aptitude | synaptic | wajig,
+ dpkg-dev (>= 1.17.2),
+ powermgmt-base,
+ python-apt
+Description: commandline package manager
+ This package provides commandline tools for searching and
+ managing as well as querying information about packages
+ as a low-level access to all features of the libapt-pkg library.
+ .
+ These include:
+ * apt-get for retrieval of packages and information about them
+ from authenticated sources and for installation, upgrade and
+ removal of packages together with their dependencies
+ * apt-cache for querying available information about installed
+ as well as installable packages
+ * apt-cdrom to use removable media as a source for packages
+ * apt-config as an interface to the configuration settings
+ * apt-key as an interface to manage authentication keys
+
+Package: libapt-pkg5.0
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Breaks: appstream (<< 0.9.0-3~), apt (<< 1.1~exp14), libapt-inst1.5 (<< 0.9.9~)
+Recommends: apt (>= ${binary:Version})
+Section: libs
+Provides: libapt-pkg (= ${binary:Version})
+Description: package management runtime library
+ This library provides the common functionality for searching and
+ managing packages as well as information about packages.
+ Higher-level package managers can depend upon this library.
+ .
+ This includes:
+ * retrieval of information about packages from multiple sources
+ * retrieval of packages and all dependent packages
+ needed to satisfy a request either through an internal
+ solver or by interfacing with an external one
+ * authenticating the sources and validating the retrieved data
+ * installation and removal of packages in the system
+ * providing different transports to retrieve data over cdrom, ftp,
+ http, rsh as well as an interface to add more transports like
+ https (apt-transport-https) and debtorrent (apt-transport-debtorrent).
+
+Package: libapt-inst2.0
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Section: libs
+Provides: libapt-inst (= ${binary:Version})
+Description: deb package format runtime library
+ This library provides methods to query and extract information
+ from deb packages. This includes the control data and the package
+ file content.
+
+Package: apt-doc
+Architecture: all
+Priority: optional
+Depends: ${misc:Depends}
+Section: doc
+Description: documentation for APT
+ This package contains the user guide and offline guide for various
+ APT tools which are provided in a html and a text-only version.
+
+Package: libapt-pkg-dev
+Architecture: any
+Multi-Arch: same
+Priority: optional
+Pre-Depends: ${misc:Pre-Depends}
+Depends: libapt-inst (= ${binary:Version}),
+ libapt-pkg (= ${binary:Version}),
+ zlib1g-dev,
+ ${misc:Depends}
+Section: libdevel
+Description: development files for APT's libapt-pkg and libapt-inst
+ This package contains the header files and libraries for
+ developing with APT's libapt-pkg Debian package manipulation
+ library and the libapt-inst deb/tar/ar library.
+
+Package: libapt-pkg-doc
+Architecture: all
+Priority: optional
+Depends: ${misc:Depends}
+Section: doc
+Description: documentation for APT development
+ This package contains documentation for development of the APT
+ Debian package manipulation program and its libraries.
+ .
+ This includes the source code documentation generated by doxygen
+ in html format.
+
+Package: apt-utils
+Architecture: any
+Depends: apt (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}
+Description: package management related utility programs
+ This package contains some less used commandline utilities related
+ to package management with APT.
+ .
+ * apt-extracttemplates is used by debconf to prompt for configuration
+ questions before installation.
+ * apt-ftparchive is used to create Packages and other index files
+ needed to publish an archive of Debian packages
+ * apt-sortpkgs is a Packages/Sources file normalizer.
+
+Package: apt-transport-https
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Recommends: ca-certificates
+Priority: optional
+Description: https download transport for APT
+ This package enables the usage of 'deb https://foo distro main' lines
+ in the /etc/apt/sources.list so that all package managers using the
+ libapt-pkg library can access metadata and packages available in sources
+ accessible over https (Hypertext Transfer Protocol Secure).
+ .
+ This transport supports server as well as client authentication
+ with certificates.
diff --git a/debian/gbp.conf b/debian/gbp.conf
new file mode 100644
index 000000000..a5e885896
--- /dev/null
+++ b/debian/gbp.conf
@@ -0,0 +1,10 @@
+[DEFAULT]
+; we need a preexport here
+;preexport = ./prepare-release pre-export
+prebuild = ./prepare-release pre-build
+postbuild = ./prepare-release post-build
+debian-branch = master
+debian-tag = %(version)s
+export-dir = ../build-area
+sign-tags = True
+multimaint-merge = True
diff --git a/debian/libapt-inst2.0.install b/debian/libapt-inst2.0.install
new file mode 100644
index 000000000..a8ddd5e2d
--- /dev/null
+++ b/debian/libapt-inst2.0.install
@@ -0,0 +1,2 @@
+usr/lib/*/libapt-inst*.so.*
+usr/share/locale/*/*/libapt-inst*.mo
diff --git a/debian/libapt-inst2.0.symbols b/debian/libapt-inst2.0.symbols
new file mode 100644
index 000000000..2416d276b
--- /dev/null
+++ b/debian/libapt-inst2.0.symbols
@@ -0,0 +1,67 @@
+libapt-inst.so.2.0 libapt-inst2.0 #MINVER#
+* Build-Depends-Package: libapt-pkg-dev
+ (c++)"ExtractTar::Done(bool)@APTINST_2.0" 0.8.0
+ (c++)"ExtractTar::Done()@APTINST_2.0" 1.1~exp12
+ (c++)"ExtractTar::Go(pkgDirStream&)@APTINST_2.0" 0.8.0
+ (c++)"ExtractTar::StartGzip()@APTINST_2.0" 0.8.0
+ (c++)"ExtractTar::ExtractTar(FileFd&, unsigned long long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTINST_2.0" 1.0.5
+ (c++)"ExtractTar::~ExtractTar()@APTINST_2.0" 0.8.0
+ (c++)"debDebFile::GotoMember(char const*)@APTINST_2.0" 0.8.0
+ (c++)"debDebFile::CheckMember(char const*)@APTINST_2.0" 0.8.0
+ (c++)"debDebFile::ControlExtract::DoItem(pkgDirStream::Item&, int&)@APTINST_2.0" 0.8.0
+ (c++)"debDebFile::ExtractTarMember(pkgDirStream&, char const*)@APTINST_2.0" 0.9.15.4
+ (c++)"debDebFile::ExtractArchive(pkgDirStream&)@APTINST_2.0" 0.8.0
+ (c++)"debDebFile::MemControlExtract::TakeControl(void const*, unsigned long long)@APTINST_2.0" 1.0.5
+ (c++)"debDebFile::MemControlExtract::Read(debDebFile&)@APTINST_2.0" 0.8.0
+ (c++)"debDebFile::MemControlExtract::DoItem(pkgDirStream::Item&, int&)@APTINST_2.0" 0.8.0
+ (c++)"debDebFile::MemControlExtract::Process(pkgDirStream::Item&, unsigned char const*, unsigned long long, unsigned long long)@APTINST_2.0" 1.0.5
+ (c++)"debDebFile::debDebFile(FileFd&)@APTINST_2.0" 0.8.0
+ (c++)"pkgExtract::FinishedFile(pkgDirStream::Item&, int)@APTINST_2.0" 0.8.0
+ (c++)"pkgExtract::CheckDirReplace(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int)@APTINST_2.0" 0.8.0
+ (c++)"pkgExtract::HandleOverwrites(pkgFLCache::NodeIterator, bool)@APTINST_2.0" 0.8.0
+ (c++)"pkgExtract::Fail(pkgDirStream::Item&, int)@APTINST_2.0" 0.8.0
+ (c++)"pkgExtract::DoItem(pkgDirStream::Item&, int&)@APTINST_2.0" 0.8.0
+ (c++)"pkgExtract::Aborted()@APTINST_2.0" 0.8.0
+ (c++)"pkgExtract::Finished()@APTINST_2.0" 0.8.0
+ (c++)"pkgExtract::pkgExtract(pkgFLCache&, pkgCache::VerIterator)@APTINST_2.0" 0.8.0
+ (c++)"pkgFLCache::TreeLookup(unsigned int*, char const*, char const*, unsigned long, unsigned int*, bool)@APTINST_2.0" 0.8.0
+ (c++)"pkgFLCache::AddConfFile(char const*, char const*, pkgFLCache::PkgIterator const&, unsigned char const*)@APTINST_2.0" 0.8.0
+ (c++)"pkgFLCache::AddDiversion(pkgFLCache::PkgIterator const&, char const*, char const*)@APTINST_2.0" 0.8.0
+ (c++)"pkgFLCache::BeginDiverLoad()@APTINST_2.0" 0.8.0
+ (c++)"pkgFLCache::FinishDiverLoad()@APTINST_2.0" 0.8.0
+ (c++)"pkgFLCache::GetPkg(char const*, char const*, bool)@APTINST_2.0" 0.8.0
+ (c++)"pkgFLCache::Header::Header()@APTINST_2.0" 0.8.0
+ (c++)"pkgFLCache::GetNode(char const*, char const*, unsigned int, bool, bool)@APTINST_2.0" 0.8.0
+ (c++)"pkgFLCache::DropNode(unsigned int)@APTINST_2.0" 0.8.0
+ (c++)"pkgFLCache::HashNode(pkgFLCache::NodeIterator const&)@APTINST_2.0" 0.8.0
+ (c++)"pkgFLCache::PrintTree(unsigned int, unsigned long)@APTINST_2.0" 0.8.0
+ (c++)"pkgFLCache::pkgFLCache(DynamicMMap&)@APTINST_2.0" 0.8.0
+ (c++)"pkgDirStream::FinishedFile(pkgDirStream::Item&, int)@APTINST_2.0" 0.8.0
+ (c++)"pkgDirStream::Fail(pkgDirStream::Item&, int)@APTINST_2.0" 0.8.0
+ (c++)"pkgDirStream::DoItem(pkgDirStream::Item&, int&)@APTINST_2.0" 0.8.0
+ (c++)"ARArchive::LoadHeaders()@APTINST_2.0" 0.8.0
+ (c++)"ARArchive::ARArchive(FileFd&)@APTINST_2.0" 0.8.0
+ (c++)"ARArchive::~ARArchive()@APTINST_2.0" 0.8.0
+ (c++)"pkgFLCache::NodeIterator::RealPackage() const@APTINST_2.0" 0.8.0
+ (c++)"pkgFLCache::Header::CheckSizes(pkgFLCache::Header&) const@APTINST_2.0" 0.8.0
+ (c++)"ARArchive::FindMember(char const*) const@APTINST_2.0" 0.8.0
+ (c++)"typeinfo for ExtractTar@APTINST_2.0" 0.8.0
+ (c++)"typeinfo for pkgExtract@APTINST_2.0" 0.8.0
+ (c++)"typeinfo for pkgDirStream@APTINST_2.0" 0.8.0
+ (c++)"typeinfo for debDebFile::ControlExtract@APTINST_2.0" 0.8.0
+ (c++)"typeinfo for debDebFile::MemControlExtract@APTINST_2.0" 0.8.0
+ (c++)"typeinfo name for ExtractTar@APTINST_2.0" 0.8.0
+ (c++)"typeinfo name for pkgExtract@APTINST_2.0" 0.8.0
+ (c++)"typeinfo name for pkgDirStream@APTINST_2.0" 0.8.0
+ (c++)"typeinfo name for debDebFile::ControlExtract@APTINST_2.0" 0.8.0
+ (c++)"typeinfo name for debDebFile::MemControlExtract@APTINST_2.0" 0.8.0
+ (c++)"vtable for ExtractTar@APTINST_2.0" 0.8.0
+ (c++)"vtable for pkgExtract@APTINST_2.0" 0.8.0
+ (c++)"vtable for pkgDirStream@APTINST_2.0" 0.8.0
+ (c++)"vtable for debDebFile::ControlExtract@APTINST_2.0" 0.8.0
+ (c++)"vtable for debDebFile::MemControlExtract@APTINST_2.0" 0.8.0
+### gcc artefacts
+ (c++|optional=std)"std::vector<APT::Configuration::Compressor, std::allocator<APT::Configuration::Compressor> >::~vector()@APTINST_2.0" 0.8.12
+### symbol versioning
+ APTINST_2.0@APTINST_2.0 1.1~exp9
+### try to ignore std:: template instances
diff --git a/debian/libapt-pkg-dev.install b/debian/libapt-pkg-dev.install
new file mode 100644
index 000000000..42e7c34d5
--- /dev/null
+++ b/debian/libapt-pkg-dev.install
@@ -0,0 +1,3 @@
+usr/include/apt-pkg/
+usr/lib/*/libapt-inst*.so
+usr/lib/*/libapt-pkg*.so
diff --git a/debian/libapt-pkg-doc.doc-base.design b/debian/libapt-pkg-doc.doc-base.design
new file mode 100644
index 000000000..ce5e0cecb
--- /dev/null
+++ b/debian/libapt-pkg-doc.doc-base.design
@@ -0,0 +1,14 @@
+Document: libapt-pkg-doc-design
+Title: APT Design Document
+Author: Jason Gunthorpe
+Abstract: The APT Design Document is an overview of the specifications and
+ design goals of the APT project. It also attempts to give a broad
+ description of the implementation as well.
+Section: Debian
+
+Format: html
+Index: /usr/share/doc/libapt-pkg-doc/design.html/index.html
+Files: /usr/share/doc/libapt-pkg-doc/design.html/*.html
+
+Format: text
+Files: /usr/share/doc/libapt-pkg-doc/design.text.gz
diff --git a/debian/libapt-pkg-doc.doc-base.dpkg-tech b/debian/libapt-pkg-doc.doc-base.dpkg-tech
new file mode 100644
index 000000000..055e8e674
--- /dev/null
+++ b/debian/libapt-pkg-doc.doc-base.dpkg-tech
@@ -0,0 +1,13 @@
+Document: libapt-pkg-doc-dpkg-tech
+Title: APT's interpetation of DPkg Technical Specification
+Author: Jason Gunthorpe
+Abstract: The DPkg Technical Manual gives an overview of dpkg's external
+ functions(as APT sees them) and describes how it views the world.
+Section: Debian
+
+Format: html
+Index: /usr/share/doc/libapt-pkg-doc/dpkg-tech.html/index.html
+Files: /usr/share/doc/libapt-pkg-doc/dpkg-tech.html/*.html
+
+Format: text
+Files: /usr/share/doc/libapt-pkg-doc/dpkg-tech.text.gz
diff --git a/debian/libapt-pkg-doc.doc-base.files b/debian/libapt-pkg-doc.doc-base.files
new file mode 100644
index 000000000..a9faec027
--- /dev/null
+++ b/debian/libapt-pkg-doc.doc-base.files
@@ -0,0 +1,14 @@
+Document: libapt-pkg-doc-files
+Title: APT Files
+Author: Jason Gunthorpe
+Abstract: The APT Files document describes the complete implementation and
+ format of the installed APT directory structure. It also serves as guide
+ to how APT views the Debian archive.
+Section: Debian
+
+Format: html
+Index: /usr/share/doc/libapt-pkg-doc/files.html/index.html
+Files: /usr/share/doc/libapt-pkg-doc/files.html/*.html
+
+Format: text
+Files: /usr/share/doc/libapt-pkg-doc/files.text.gz
diff --git a/debian/libapt-pkg-doc.doc-base.method b/debian/libapt-pkg-doc.doc-base.method
new file mode 100644
index 000000000..f40d875bd
--- /dev/null
+++ b/debian/libapt-pkg-doc.doc-base.method
@@ -0,0 +1,14 @@
+Document: libapt-pkg-doc-method
+Title: APT Method Interface
+Author: Jason Gunthorpe
+Abstract: The APT Method Interface document describes the interface that
+ APT uses to the archive access methods.
+Section: Debian
+
+Format: html
+Index: /usr/share/doc/libapt-pkg-doc/method.html/index.html
+Files: /usr/share/doc/libapt-pkg-doc/method.html/*.html
+
+Format: text
+Files: /usr/share/doc/libapt-pkg-doc/method.text.gz
+
diff --git a/debian/libapt-pkg-doc.docs b/debian/libapt-pkg-doc.docs
new file mode 100644
index 000000000..b57607e31
--- /dev/null
+++ b/debian/libapt-pkg-doc.docs
@@ -0,0 +1,2 @@
+doc/libapt-pkg2_to_3.txt
+doc/style.txt
diff --git a/debian/libapt-pkg-doc.install b/debian/libapt-pkg-doc.install
new file mode 100644
index 000000000..2f233dd07
--- /dev/null
+++ b/debian/libapt-pkg-doc.install
@@ -0,0 +1 @@
+usr/share/doc/libapt-pkg-doc
diff --git a/debian/libapt-pkg-doc.lintian-overrides b/debian/libapt-pkg-doc.lintian-overrides
new file mode 100644
index 000000000..d7cbc437e
--- /dev/null
+++ b/debian/libapt-pkg-doc.lintian-overrides
@@ -0,0 +1,3 @@
+# embedded by doxygen, see /usr/share/doc/doxygen/README.jquery
+libapt-pkg-doc: embedded-javascript-library
+libapt-pkg-doc: duplicate-files usr/share/doc/libapt-pkg-doc/html/*
diff --git a/debian/libapt-pkg5.0.install b/debian/libapt-pkg5.0.install
new file mode 100644
index 000000000..9ac53bc82
--- /dev/null
+++ b/debian/libapt-pkg5.0.install
@@ -0,0 +1,2 @@
+usr/lib/*/libapt-pkg*.so.*
+usr/share/locale/*/*/libapt-pkg*.mo
diff --git a/debian/libapt-pkg5.0.symbols b/debian/libapt-pkg5.0.symbols
new file mode 100644
index 000000000..030ad35e4
--- /dev/null
+++ b/debian/libapt-pkg5.0.symbols
@@ -0,0 +1,1500 @@
+libapt-pkg.so.5.0 libapt-pkg5.0 #MINVER#
+* Build-Depends-Package: libapt-pkg-dev
+ TFRewritePackageOrder@APTPKG_5.0 0.8.0
+ TFRewriteSourceOrder@APTPKG_5.0 0.8.0
+ (c++)"FileExists(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"IdentCdrom(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int)@APTPKG_5.0" 0.8.0
+ (c++)"ListUpdate(pkgAcquireStatus&, pkgSourceList&, int)@APTPKG_5.0" 0.8.0
+ (c++)"MountCdrom(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"ParseCWord(char const*&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_5.0" 0.8.0
+ (c++)"ReadPinDir(pkgPolicy&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"RunScripts(char const*)@APTPKG_5.0" 0.8.0
+ (c++)"SafeGetCWD[abi:cxx11]()@APTPKG_5.0" 0.8.0
+ (c++)"QuoteString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)@APTPKG_5.0" 0.8.0
+ (c++)"ReadPinFile(pkgPolicy&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"RegexChoice(RxChoiceList*, char const**, char const**)@APTPKG_5.0" 0.8.0
+ (c++)"SetNonBlock(int, bool)@APTPKG_5.0" 0.8.0
+ (c++)"flExtension(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"Base64Encode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"ReadMessages(int, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)@APTPKG_5.0" 0.8.0
+ (c++)"SetCloseExec(int, bool)@APTPKG_5.0" 0.8.0
+ (c++)"StringToBool(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)@APTPKG_5.0" 0.8.0
+ (c++)"UnmountCdrom(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"_GetErrorObj()@APTPKG_5.0" 0.8.0
+ (c++)"Base256ToNum(char const*, unsigned long long&, unsigned int)@APTPKG_5.0" 1.0.5
+ (c++)"pkgFixBroken(pkgDepCache&)@APTPKG_5.0" 0.8.0
+ (c++)"DeQuoteString(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)@APTPKG_5.0" 0.8.0
+ (c++)"DeQuoteString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"OutputInDepth[abi:cxx11](unsigned long, char const*)@APTPKG_5.0" 0.8.0
+ (c++)"ReadConfigDir(Configuration&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&, unsigned int const&)@APTPKG_5.0" 0.8.0
+ (c++)"URItoFileName(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"UTF8ToCodeset(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgInitConfig(Configuration&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgInitSystem(Configuration&, pkgSystem*&)@APTPKG_5.0" 0.8.0
+ (c++)"safe_snprintf(char*, char*, char const*, ...)@APTPKG_5.0" 0.8.0
+ (c++)"stringcasecmp(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char const*, char const*)@APTPKG_5.0" 0.8.0
+ (c++)"stringcasecmp(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)@APTPKG_5.0" 0.8.0
+ (c++)"stringcasecmp(char const*, char const*, char const*, char const*)@APTPKG_5.0" 0.8.0
+ (c++)"tolower_ascii(int)@APTPKG_5.0" 0.8.0
+ (c++)"ParseQuoteWord(char const*&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_5.0" 0.8.0
+ (c++)"ReadConfigFile(Configuration&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&, unsigned int const&)@APTPKG_5.0" 0.8.0
+ (c++)"TokSplitString(char, char*, char**, unsigned long)@APTPKG_5.0" 0.8.0
+ (c++)"maybe_add_auth(URI&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"pkgApplyStatus(pkgDepCache&)@APTPKG_5.0" 0.8.0
+ (c++)"CheckDomainList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"CreateDirectory(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"DirectoryExists(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"VectorizeString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgPrioSortList(pkgCache&, pkgCache::Version**)@APTPKG_5.0" 0.8.0
+ (c++)"pkgMakeStatusCache(pkgSourceList&, OpProgress&, MMap**, bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgMinimizeUpgrade(pkgDepCache&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAllUpgrade(pkgDepCache&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDistUpgrade(pkgDepCache&)@APTPKG_5.0" 0.8.0
+ (c++)"GetListOfFilesInDir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool const&)@APTPKG_5.0" 0.8.0
+ (c++)"GetListOfFilesInDir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&, bool const&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgMakeOnlyStatusCache(OpProgress&, DynamicMMap**)@APTPKG_5.0" 0.8.0
+ (c++)"WaitFd(int, bool, unsigned long)@APTPKG_5.0" 0.8.0
+ (c++)"GetLock(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)@APTPKG_5.0" 0.8.0
+ (c++)"Hex2Num(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned char*, unsigned int)@APTPKG_5.0" 0.8.0
+ (c++)"CopyFile(FileFd&, FileFd&)@APTPKG_5.0" 0.8.0
+ (c++)"ExecFork()@APTPKG_5.0" 0.8.0
+ (c++)"ExecWait(int, char const*, bool)@APTPKG_5.0" 0.8.0
+ (c++)"StrToNum(char const*, unsigned long&, unsigned int, unsigned int)@APTPKG_5.0" 0.8.0
+ (c++)"SubstVar(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"SubstVar(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, SubstVar const*)@APTPKG_5.0" 0.8.0
+ (c++)"flNoLink(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"flNotDir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"ioprintf(std::basic_ostream<char, std::char_traits<char> >&, char const*, ...)@APTPKG_5.0" 0.8.0
+ (c++)"IsMounted(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_5.0" 0.8.0
+ (c++)"LookupTag(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, char const*)@APTPKG_5.0" 0.8.0
+ (c++)"SizeToStr[abi:cxx11](double)@APTPKG_5.0" 0.8.0
+ (c++)"TFRewrite(_IO_FILE*, pkgTagSection const&, char const**, TFRewriteData*)@APTPKG_5.0" 0.8.0
+ (c++)"TimeToStr[abi:cxx11](unsigned long)@APTPKG_5.0" 0.8.0
+ (c++)"_strstrip(char*)@APTPKG_5.0" 0.8.0
+ (c++)"flCombine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"flNotFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"stringcmp(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char const*, char const*)@APTPKG_5.0" 0.8.0
+ (c++)"stringcmp(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)@APTPKG_5.0" 0.8.0
+ (c++)"stringcmp(char const*, char const*, char const*, char const*)@APTPKG_5.0" 0.8.0
+ (c++)"strprintf(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const*, ...)@APTPKG_5.0" 0.8.0
+ (c++)"HashString::SupportedHashes()@APTPKG_5.0" 0.8.0
+ (c++)"HashString::_SupportedHashes@APTPKG_5.0" 0.8.0
+ (c++)"HashString::HashString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"HashString::HashString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"HashString::HashString()@APTPKG_5.0" 0.8.0
+ (c++)"OpProgress::CheckChange(float)@APTPKG_5.0" 0.8.0
+ (c++)"OpProgress::OpProgress()@APTPKG_5.0" 0.8.0
+ (c++)"SourceCopy::~SourceCopy()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqFile::~pkgAcqFile()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::WorkerStep(pkgAcquire::Worker*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::FetchNeeded()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::TotalNeeded()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::MethodConfig::MethodConfig()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::PartialPresent()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Add(pkgAcquire::Item*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Add(pkgAcquire::Worker*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Run(int)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Bump()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Item::Finished()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Item::~Item()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Clean(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Queue::Bump()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Queue::Cycle()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Queue::Dequeue(pkgAcquire::Item*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Queue::Enqueue(pkgAcquire::ItemDesc&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Queue::Startup()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Queue::FindItem(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::Worker*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Queue::ItemDone(pkgAcquire::Queue::QItem*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Queue::Shutdown(bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Queue::~Queue()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Remove(pkgAcquire::Item*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Remove(pkgAcquire::Worker*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::RunFds(fd_set*, fd_set*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::RunFdsSane(fd_set*, fd_set*)@APTPKG_5.0" 1.1.1
+ (c++)"pkgAcquire::SetFds(int&, fd_set*, fd_set*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::UriEnd()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Worker::OutFdReady()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Worker::MediaChange(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Worker::RunMessages()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Worker::Capabilities(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Worker::ReadMessages()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Worker::MethodFailure()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Worker::SendConfiguration()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Worker::Pulse()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Worker::Start()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Worker::ItemDone()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Worker::Construct()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Worker::InFdReady()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Worker::QueueItem(pkgAcquire::Queue::QItem*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Worker::Worker(pkgAcquire::MethodConfig*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Worker::Worker(pkgAcquire::Queue*, pkgAcquire::MethodConfig*, pkgAcquireStatus*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Worker::~Worker()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Dequeue(pkgAcquire::Item*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Enqueue(pkgAcquire::ItemDesc&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::Shutdown()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::UriBegin()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::GetConfig(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::QueueName(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig const*&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::pkgAcquire(pkgAcquireStatus*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::pkgAcquire()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquire::~pkgAcquire()@APTPKG_5.0" 0.8.0
+ (c++)"pkgRecords::Lookup(pkgCache::VerFileIterator const&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgRecords::Lookup(pkgCache::DescFileIterator const&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgRecords::pkgRecords(pkgCache&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgRecords::~pkgRecords()@APTPKG_5.0" 0.8.0
+ (c++)"pkgTagFile::Step(pkgTagSection&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgTagFile::~pkgTagFile()@APTPKG_5.0" 0.8.0
+ (c++)"CommandLine::DispatchArg(CommandLine::Dispatch*, bool)@APTPKG_5.0" 0.8.0
+ (c++)"CommandLine::SaveInConfig(unsigned int const&, char const* const*)@APTPKG_5.0" 0.8.0
+ (c++)"CommandLine::Parse(int, char const**)@APTPKG_5.0" 0.8.0
+ (c++)"CommandLine::HandleOpt(int&, int, char const**, char const*&, CommandLine::Args*, bool)@APTPKG_5.0" 0.8.0
+ (c++)"CommandLine::CommandLine(CommandLine::Args*, Configuration*)@APTPKG_5.0" 0.8.0
+ (c++)"CommandLine::~CommandLine()@APTPKG_5.0" 0.8.0
+ (c++)"DynamicMMap::WriteString(char const*, unsigned long)@APTPKG_5.0" 0.8.0
+ (c++)"DynamicMMap::Grow()@APTPKG_5.0" 0.8.0
+ (c++)"DynamicMMap::Allocate(unsigned long)@APTPKG_5.0" 0.8.0
+ (c++)"DynamicMMap::DynamicMMap(FileFd&, unsigned long, unsigned long const&, unsigned long const&, unsigned long const&)@APTPKG_5.0" 0.8.0
+ (c++)"DynamicMMap::DynamicMMap(unsigned long, unsigned long const&, unsigned long const&, unsigned long const&)@APTPKG_5.0" 0.8.0
+ (c++)"DynamicMMap::~DynamicMMap()@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::DumpErrors(std::basic_ostream<char, std::char_traits<char> >&, GlobalError::MsgType const&, bool const&)@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::PopMessage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::InsertErrno(GlobalError::MsgType const&, char const*, char const*, ...)@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::PushToStack()@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::RevertToStack()@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::MergeWithStack()@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::Debug(char const*, ...)@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::Errno(char const*, char const*, ...)@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::Error(char const*, ...)@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::Fatal(char const*, ...)@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::DebugE(char const*, char const*, ...)@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::FatalE(char const*, char const*, ...)@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::Insert(GlobalError::MsgType const&, char const*, ...)@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::Notice(char const*, ...)@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::Discard()@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::NoticeE(char const*, char const*, ...)@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::Warning(char const*, ...)@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::WarningE(char const*, char const*, ...)@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::GlobalError()@APTPKG_5.0" 0.8.0
+ (c++)"PackageCopy::~PackageCopy()@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::IsDeleteOk(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::MarkDelete(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::StateCache::StripEpoch(char const*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::StateCache::Update(pkgCache::PkgIterator, pkgCache&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::ActionGroup::release()@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::ActionGroup::ActionGroup(pkgDepCache&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::ActionGroup::~ActionGroup()@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::IsInstallOk(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::MarkInstall(pkgCache::PkgIterator const&, bool, unsigned long, bool, bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::SetReInstall(pkgCache::PkgIterator const&, bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::BuildGroupOrs(pkgCache::VerIterator const&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::readStateFile(OpProgress*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::GetRootSetFunc()@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::writeStateFile(OpProgress*, bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::MarkFollowsSuggests()@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::MarkFollowsRecommends()@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::Init(OpProgress*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::Policy::GetCandidateVer(pkgCache::PkgIterator const&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::Update(pkgCache::DepIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::Update(OpProgress*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::Update(pkgCache::PkgIterator const&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::MarkAuto(pkgCache::PkgIterator const&, bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::MarkKeep(pkgCache::PkgIterator const&, bool, bool, unsigned long)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::MarkRequired(pkgDepCache::InRootSetFunc&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::Sweep()@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::pkgDepCache(pkgCache*, pkgDepCache::Policy*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDepCache::~pkgDepCache()@APTPKG_5.0" 0.8.0
+ (c++)"pkgSimulate::Remove(pkgCache::PkgIterator, bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgSimulate::Install(pkgCache::PkgIterator, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"pkgSimulate::Configure(pkgCache::PkgIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgSimulate::pkgSimulate(pkgDepCache*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgSimulate::~pkgSimulate()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqMethod::FetchResult::TakeHashes(Hashes&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqMethod::FetchResult::FetchResult()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqMethod::Configuration(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqMethod::Log(char const*, ...)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqMethod::Run(bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqMethod::Fail(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqMethod::Fail(bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqMethod::Status(char const*, ...)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqMethod::URIDone(pkgAcqMethod::FetchResult&, pkgAcqMethod::FetchResult*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqMethod::Redirect(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqMethod::URIStart(pkgAcqMethod::FetchResult&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqMethod::MediaFail(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqMethod::pkgAcqMethod(char const*, unsigned long)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqMethod::~pkgAcqMethod()@APTPKG_5.0" 0.8.0
+ (c++)"pkgCacheFile::BuildCaches(OpProgress*, bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCacheFile::BuildPolicy(OpProgress*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCacheFile::BuildDepCache(OpProgress*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCacheFile::BuildSourceList(OpProgress*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCacheFile::Open(OpProgress*, bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCacheFile::Close()@APTPKG_5.0" 0.8.0
+ (c++)"pkgCacheFile::pkgCacheFile()@APTPKG_5.0" 0.8.0
+ (c++)"pkgCacheFile::~pkgCacheFile()@APTPKG_5.0" 0.8.0
+ (c++)"pkgIndexFile::LanguageCode[abi:cxx11]()@APTPKG_5.0" 0.8.0
+ (c++)"pkgIndexFile::CheckLanguageCode(char const*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgIndexFile::TranslationsAvailable()@APTPKG_5.0" 0.8.0
+ (c++)"pkgIndexFile::Type::GlobalList@APTPKG_5.0" 0.8.0
+ (c++)"pkgIndexFile::Type::GlobalListLen@APTPKG_5.0" 0.8.0
+ (c++)"pkgIndexFile::Type::GetType(char const*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgIndexFile::Type::Type()@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::VisitRDeps(bool (pkgOrderList::*)(pkgCache::DepIterator), pkgCache::PkgIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::OrderUnpack(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::DepConfigure(pkgCache::DepIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::DepUnPackDep(pkgCache::DepIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::DepUnPackPre(pkgCache::DepIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::DepUnPackCrit(pkgCache::DepIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::DepUnPackPreD(pkgCache::DepIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::OrderCritical()@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::VisitProvides(pkgCache::DepIterator, bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::OrderConfigure()@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::VisitRProvides(bool (pkgOrderList::*)(pkgCache::DepIterator), pkgCache::VerIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::DoRun()@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::Score(pkgCache::PkgIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::AddLoop(pkgCache::DepIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::FileCmp(pkgCache::PkgIterator, pkgCache::PkgIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::CheckDep(pkgCache::DepIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::DepRemove(pkgCache::DepIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::IsMissing(pkgCache::PkgIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::VisitDeps(bool (pkgOrderList::*)(pkgCache::DepIterator), pkgCache::PkgIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::WipeFlags(unsigned long)@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::pkgOrderList(pkgDepCache*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgOrderList::~pkgOrderList()@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::MatchAgainstConfig::MatchAgainstConfig(char const*)@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::MatchAgainstConfig::~MatchAgainstConfig()@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::Set(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::Set(char const*, int const&)@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::Dump(std::basic_ostream<char, std::char_traits<char> >&)@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::Clear(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::Clear(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int const&)@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::Clear(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::CndSet(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::Lookup(char const*, bool const&)@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::Lookup(Configuration::Item*, char const*, unsigned long const&, bool const&)@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::Configuration(Configuration::Item const*)@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::Configuration()@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::~Configuration()@APTPKG_5.0" 0.8.0
+ (c++)"debListParser::ParseDepends(char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int&, bool const&, bool const&)@APTPKG_5.0" 0.8.0
+ (c++)"debListParser::ConvertRelation(char const*, unsigned int&)@APTPKG_5.0" 0.8.0
+ (c++)"debListParser::GetPrio(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqArchive::Finished()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqArchive::QueueNext()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqArchive::pkgAcqArchive(pkgAcquire*, pkgSourceList*, pkgRecords*, pkgCache::VerIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcqArchive::~pkgAcqArchive()@APTPKG_5.0" 0.8.0
+ (c++)"pkgSourceList::Type::GlobalList@APTPKG_5.0" 0.8.0
+ (c++)"pkgSourceList::Type::GlobalListLen@APTPKG_5.0" 0.8.0
+ (c++)"pkgSourceList::Type::GetType(char const*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgSourceList::ReadMainList()@APTPKG_5.0" 0.8.0
+ (c++)"pkgSourceList::Reset()@APTPKG_5.0" 0.8.0
+ (c++)"pkgSourceList::pkgSourceList()@APTPKG_5.0" 0.8.0
+ (c++)"pkgSourceList::~pkgSourceList()@APTPKG_5.0" 0.8.0
+ (c++)"pkgSrcRecords::Find(char const*, bool const&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgSrcRecords::Parser::BuildDepType(unsigned char const&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgSrcRecords::Restart()@APTPKG_5.0" 0.8.0
+ (c++)"pkgSrcRecords::pkgSrcRecords(pkgSourceList&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgSrcRecords::~pkgSrcRecords()@APTPKG_5.0" 0.8.0
+ (c++)"pkgTagSection::TrimRecord(bool, char const*&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgTagSection::Trim()@APTPKG_5.0" 0.8.0
+ (c++)"OpTextProgress::Done()@APTPKG_5.0" 0.8.0
+ (c++)"OpTextProgress::Write(char const*)@APTPKG_5.0" 0.8.0
+ (c++)"OpTextProgress::Update()@APTPKG_5.0" 0.8.0
+ (c++)"OpTextProgress::OpTextProgress(Configuration&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgVersionMatch::ExpressionMatches(char const*, char const*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgVersionMatch::ExpressionMatches(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgVersionMatch::Find(pkgCache::PkgIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgVersionMatch::MatchVer(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgVersionMatch::FileMatch(pkgCache::PkgFileIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgVersionMatch::pkgVersionMatch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgVersionMatch::MatchType)@APTPKG_5.0" 0.8.0
+ (c++)"TranslationsCopy::CopyTranslations(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, pkgCdromStatus*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquireStatus::Stop()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquireStatus::Pulse(pkgAcquire*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquireStatus::Start()@APTPKG_5.0" 0.8.0
+ (c++)"pkgAcquireStatus::pkgAcquireStatus()@APTPKG_5.0" 0.8.0
+ (c++)"pkgArchiveCleaner::Go(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgCache&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCacheGenerator::MakeStatusCache(pkgSourceList&, OpProgress*, MMap**, bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCacheGenerator::MakeOnlyStatusCache(OpProgress*, DynamicMMap**)@APTPKG_5.0" 0.8.0
+ (c++)"pkgPackageManager::FixMissing()@APTPKG_5.0" 0.8.0
+ (c++)"pkgPackageManager::EarlyRemove(pkgCache::PkgIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgPackageManager::GetArchives(pkgAcquire*, pkgSourceList*, pkgRecords*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgPackageManager::SmartRemove(pkgCache::PkgIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgPackageManager::SmartUnPack(pkgCache::PkgIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgPackageManager::ConfigureAll()@APTPKG_5.0" 0.8.0
+ (c++)"pkgPackageManager::ImmediateAdd(pkgCache::PkgIterator, bool, unsigned int const&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgPackageManager::OrderInstall()@APTPKG_5.0" 0.8.0
+ (c++)"pkgPackageManager::DepAlwaysTrue(pkgCache::DepIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgPackageManager::CheckRConflicts(pkgCache::PkgIterator, pkgCache::DepIterator, char const*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgPackageManager::CreateOrderList()@APTPKG_5.0" 0.8.0
+ (c++)"pkgPackageManager::DoInstallPostFork(int)@APTPKG_5.0" 0.8.0
+ (c++)"pkgPackageManager::DoInstall(int)@APTPKG_5.0" 0.8.0
+ (c++)"pkgPackageManager::pkgPackageManager(pkgDepCache*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgPackageManager::~pkgPackageManager()@APTPKG_5.0" 0.8.0
+ (c++)"pkgProblemResolver::InstallProtect()@APTPKG_5.0" 0.8.0
+ (c++)"pkgProblemResolver::pkgProblemResolver(pkgDepCache*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgProblemResolver::~pkgProblemResolver()@APTPKG_5.0" 0.8.0
+ (c++)"debVersioningSystem::CmpFragment(char const*, char const*, char const*, char const*)@APTPKG_5.0" 0.8.0
+ (c++)"debVersioningSystem::DoCmpVersion(char const*, char const*, char const*, char const*)@APTPKG_5.0" 0.8.0
+ (c++)"debVersioningSystem::UpstreamVersion[abi:cxx11](char const*)@APTPKG_5.0" 0.8.0
+ (c++)"debVersioningSystem::CheckDep(char const*, int, char const*)@APTPKG_5.0" 0.8.0
+ (c++)"debVersioningSystem::debVersioningSystem()@APTPKG_5.0" 0.8.0
+ (c++)"pkgUdevCdromDevices::Scan()@APTPKG_5.0" 0.8.0
+ (c++)"pkgUdevCdromDevices::Dlopen()@APTPKG_5.0" 0.8.0
+ (c++)"pkgUdevCdromDevices::pkgUdevCdromDevices()@APTPKG_5.0" 0.8.0
+ (c++)"pkgUdevCdromDevices::~pkgUdevCdromDevices()@APTPKG_5.0" 0.8.0
+ (c++)"pkgVersioningSystem::GlobalList@APTPKG_5.0" 0.8.0
+ (c++)"pkgVersioningSystem::GlobalListLen@APTPKG_5.0" 0.8.0
+ (c++)"pkgVersioningSystem::GetVS(char const*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgVersioningSystem::pkgVersioningSystem()@APTPKG_5.0" 0.8.0
+ (c++)"APT::CacheFilter::PackageNameMatchesRegEx::PackageNameMatchesRegEx(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"APT::CacheFilter::PackageNameMatchesRegEx::~PackageNameMatchesRegEx()@APTPKG_5.0" 0.8.0
+ (c++)"APT::CacheFilter::PackageNameMatchesRegEx::operator()(pkgCache::GrpIterator const&)@APTPKG_5.0" 0.8.0
+ (c++)"APT::CacheFilter::PackageNameMatchesRegEx::operator()(pkgCache::PkgIterator const&)@APTPKG_5.0" 0.8.0
+ (c++)"APT::Configuration::checkArchitecture(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"APT::CacheSetHelper::canNotFindPkgName(pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"APT::CacheSetHelper::canNotFindNewestVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_5.0" 0.8.0
+ (c++)"APT::CacheSetHelper::canNotFindCandidateVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_5.0" 0.8.0
+ (c++)"APT::CacheSetHelper::canNotFindInstalledVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_5.0" 0.8.0
+ (c++)"APT::CacheSetHelper::~CacheSetHelper()@APTPKG_5.0" 0.8.0
+ (c++)"URI::NoUserPassword(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"URI::CopyFrom(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"URI::SiteOnly(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"URI::operator std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >[abi:cxx11]()@APTPKG_5.0" 0.8.0
+ (c++)"MMap::Map(FileFd&)@APTPKG_5.0" 0.8.0
+ (c++)"MMap::Sync(unsigned long, unsigned long)@APTPKG_5.0" 0.8.0
+ (c++)"MMap::Sync()@APTPKG_5.0" 0.8.0
+ (c++)"MMap::Close(bool)@APTPKG_5.0" 0.8.0
+ (c++)"MMap::MMap(FileFd&, unsigned long)@APTPKG_5.0" 0.8.0
+ (c++)"MMap::MMap(unsigned long)@APTPKG_5.0" 0.8.0
+ (c++)"MMap::~MMap()@APTPKG_5.0" 0.8.0
+ (c++)"FileFd::Size()@APTPKG_5.0" 0.8.0
+ (c++)"FileFd::Sync()@APTPKG_5.0" 0.8.0
+ (c++)"FileFd::Tell()@APTPKG_5.0" 0.8.0
+ (c++)"FileFd::Close()@APTPKG_5.0" 0.8.0
+ (c++)"FileFd::~FileFd()@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::CompTypeDeb(unsigned char)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::DepIterator::GlobOr(pkgCache::DepIterator&, pkgCache::DepIterator&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::DepIterator::operator++()@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::GrpIterator::operator++()@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::PkgIterator::operator++()@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::PkgFileIterator::IsOk()@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::PkgFileIterator::RelStr[abi:cxx11]()@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::ReMap(bool const&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::Header::Header()@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::DepType(unsigned char)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::FindGrp(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::FindPkg(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::FindPkg(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::CompType(unsigned char)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::Priority(unsigned char)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::pkgCache(MMap*, bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::~pkgCache()@APTPKG_5.0" 0.8.0
+ (c++)"pkgCdrom::DropRepeats(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, char const*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCdrom::FindPackages(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, pkgCdromStatus*, unsigned int)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCdrom::WriteDatabase(Configuration&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCdrom::DropBinaryArch(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCdrom::WriteSourceList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCdrom::ReduceSourcelist(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCdrom::Add(pkgCdromStatus*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCdrom::Ident(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, pkgCdromStatus*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgCdrom::Score(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"IndexCopy::CopyPackages(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, pkgCdromStatus*)@APTPKG_5.0" 0.8.0
+ (c++)"IndexCopy::ReconstructChop(unsigned long&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"IndexCopy::ReconstructPrefix(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"IndexCopy::ConvertToSourceList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@APTPKG_5.0" 0.8.0
+ (c++)"IndexCopy::ChopDirs(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int)@APTPKG_5.0" 0.8.0
+ (c++)"IndexCopy::GrabFirst(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int)@APTPKG_5.0" 0.8.0
+ (c++)"SigVerify::CopyAndVerify(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)@APTPKG_5.0" 0.8.0
+ (c++)"SigVerify::RunGPGV(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int const&, int*)@APTPKG_5.0" 0.8.0
+ (c++)"debSystem::Initialize(Configuration&)@APTPKG_5.0" 0.8.0
+ (c++)"debSystem::AddStatusFiles(std::vector<pkgIndexFile*, std::allocator<pkgIndexFile*> >&)@APTPKG_5.0" 0.8.0
+ (c++)"debSystem::ArchiveSupported(char const*)@APTPKG_5.0" 0.8.0
+ (c++)"debSystem::Lock()@APTPKG_5.0" 0.8.0
+ (c++)"debSystem::Score(Configuration const&)@APTPKG_5.0" 0.8.0
+ (c++)"debSystem::UnLock(bool)@APTPKG_5.0" 0.8.0
+ (c++)"debSystem::debSystem()@APTPKG_5.0" 0.8.0
+ (c++)"debSystem::~debSystem()@APTPKG_5.0" 0.8.0
+ (c++)"pkgDPkgPM::SendV2Pkgs(_IO_FILE*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDPkgPM::DoTerminalPty(int)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDPkgPM::WriteHistoryTag(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDPkgPM::WriteApportReport(char const*, char const*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDPkgPM::RunScriptsWithPkgs(char const*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDPkgPM::Go(int)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDPkgPM::Reset()@APTPKG_5.0" 0.8.0
+ (c++)"pkgDPkgPM::Remove(pkgCache::PkgIterator, bool)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDPkgPM::DoStdin(int)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDPkgPM::Install(pkgCache::PkgIterator, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDPkgPM::OpenLog()@APTPKG_5.0" 0.8.0
+ (c++)"pkgDPkgPM::CloseLog()@APTPKG_5.0" 0.8.0
+ (c++)"pkgDPkgPM::Configure(pkgCache::PkgIterator)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDPkgPM::pkgDPkgPM(pkgDepCache*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgDPkgPM::~pkgDPkgPM()@APTPKG_5.0" 0.8.0
+ (c++)"pkgPolicy::GetPriority(pkgCache::PkgIterator const&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgPolicy::InitDefaults()@APTPKG_5.0" 0.8.0
+ (c++)"pkgPolicy::GetCandidateVer(pkgCache::PkgIterator const&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgPolicy::GetMatch(pkgCache::PkgIterator const&)@APTPKG_5.0" 0.8.0
+ (c++)"pkgPolicy::CreatePin(pkgVersionMatch::MatchType, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, short)@APTPKG_5.0" 0.8.0
+ (c++)"pkgPolicy::pkgPolicy(pkgCache*)@APTPKG_5.0" 0.8.0
+ (c++)"pkgPolicy::~pkgPolicy()@APTPKG_5.0" 0.8.0
+ (c++)"pkgSystem::GlobalList@APTPKG_5.0" 0.8.0
+ (c++)"pkgSystem::GlobalListLen@APTPKG_5.0" 0.8.0
+ (c++)"pkgSystem::GetSystem(char const*)@APTPKG_5.0" 0.8.0
+ (c++)"HashString::VerifyFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@APTPKG_5.0" 0.8.0
+ (c++)"HashString::empty() const@APTPKG_5.0" 0.8.0
+ (c++)"HashString::toStr[abi:cxx11]() const@APTPKG_5.0" 0.8.0
+ (c++)"CommandLine::FileSize() const@APTPKG_5.0" 0.8.0
+ (c++)"GlobalError::empty(GlobalError::MsgType const&) const@APTPKG_5.0" 0.8.0
+ (c++)"pkgIndexFile::FindInCache(pkgCache&) const@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::MatchAgainstConfig::Match(char const*) const@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::Find[abi:cxx11](char const*, char const*) const@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::Item::FullTag[abi:cxx11](Configuration::Item const*) const@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::FindB(char const*, bool const&) const@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::FindI(char const*, int const&) const@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::Exists(char const*) const@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::FindAny[abi:cxx11](char const*, char const*) const@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::FindDir[abi:cxx11](char const*, char const*) const@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::FindFile[abi:cxx11](char const*, char const*) const@APTPKG_5.0" 0.8.0
+ (c++)"Configuration::ExistsAny(char const*) const@APTPKG_5.0" 0.8.0
+ (c++)"pkgSourceList::GetIndexes(pkgAcquire*, bool) const@APTPKG_5.0" 0.8.0
+ (c++)"pkgSourceList::Type::FixupURI(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const@APTPKG_5.0" 0.8.0
+ (c++)"pkgSourceList::FindIndex(pkgCache::PkgFileIterator, pkgIndexFile*&) const@APTPKG_5.0" 0.8.0
+ (c++)"pkgTagSection::Find(char const*, char const*&, char const*&) const@APTPKG_5.0" 0.8.0
+ (c++)"pkgTagSection::Find(char const*, unsigned int&) const@APTPKG_5.0" 0.8.0
+ (c++)"pkgTagSection::FindI(char const*, long) const@APTPKG_5.0" 0.8.0
+ (c++)"pkgTagSection::FindS[abi:cxx11](char const*) const@APTPKG_5.0" 0.8.0
+ (c++)"pkgTagSection::FindULL(char const*, unsigned long long const&) const@APTPKG_5.0" 0.8.0
+ (c++)"pkgTagSection::FindFlag(char const*, unsigned long&, unsigned long) const@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::DepIterator::AllTargets() const@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::DepIterator::IsCritical() const@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::DepIterator::SmartTargetPkg(pkgCache::PkgIterator&) const@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::GrpIterator::FindPreferredPkg(bool const&) const@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::GrpIterator::FindPkg(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::GrpIterator::NextPkg(pkgCache::PkgIterator const&) const@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::PkgIterator::CurVersion() const@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::PkgIterator::CandVersion() const@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::PkgIterator::State() const@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::VerIterator::CompareVer(pkgCache::VerIterator const&) const@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::VerIterator::NewestFile() const@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::VerIterator::Downloadable() const@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::VerIterator::TranslatedDescription() const@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::VerIterator::RelStr[abi:cxx11]() const@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::VerIterator::Automatic() const@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::sHash(char const*) const@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::sHash(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_5.0" 0.8.0
+ (c++)"pkgCache::Header::CheckSizes(pkgCache::Header&) const@APTPKG_5.0" 0.8.0
+ (c++)"debSystem::CreatePM(pkgDepCache*) const@APTPKG_5.0" 0.8.0
+ (c++)"debSystem::FindIndex(pkgCache::PkgFileIterator, pkgIndexFile*&) const@APTPKG_5.0" 0.8.0
+ (c++)"metaIndex::GetURI[abi:cxx11]() const@APTPKG_5.0" 0.8.0
+ (c++)"metaIndex::GetDist[abi:cxx11]() const@APTPKG_5.0" 0.8.0
+ (c++)"metaIndex::GetType() const@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for OpProgress@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for SourceCopy@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgAcqFile@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgAcquire@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for DynamicMMap@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for PackageCopy@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgDepCache@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgSimulate@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgAcqMethod@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgCacheFile@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgIndexFile@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for WeakPointable@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgAcqArchive@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgTagSection@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for OpTextProgress@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgAcquireStatus@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgPackageManager@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for debVersioningSystem@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgUdevCdromDevices@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgVersioningSystem@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for MMap@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for FileFd@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgCache@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for IndexCopy@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for debSystem@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for metaIndex@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgDPkgPM@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgPolicy@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgSystem@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgAcquire::Item@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgRecords::Parser@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgDepCache::InRootSetFunc@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgDepCache::DefaultRootSetFunc@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgDepCache::Policy@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgSimulate::Policy@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgIndexFile::Type@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for Configuration::MatchAgainstConfig@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgSourceList::Type@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgSrcRecords::Parser@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for APT::CacheSetHelper@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgCache::Namespace@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for OpProgress@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for SourceCopy@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgAcqFile@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgAcquire@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for DynamicMMap@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for PackageCopy@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgDepCache@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgSimulate@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgAcqMethod@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgCacheFile@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgIndexFile@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for WeakPointable@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgAcqArchive@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgTagSection@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for OpTextProgress@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgAcquireStatus@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgPackageManager@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for debVersioningSystem@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgUdevCdromDevices@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgVersioningSystem@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for MMap@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for FileFd@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgCache@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for IndexCopy@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for debSystem@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for metaIndex@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgDPkgPM@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgPolicy@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgSystem@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgAcquire::Item@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgRecords::Parser@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgDepCache::InRootSetFunc@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgDepCache::DefaultRootSetFunc@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgDepCache::Policy@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgSimulate::Policy@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgIndexFile::Type@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for Configuration::MatchAgainstConfig@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgSourceList::Type@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgSrcRecords::Parser@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for APT::CacheSetHelper@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgCache::Namespace@APTPKG_5.0" 0.8.0
+ (c++)"vtable for OpProgress@APTPKG_5.0" 0.8.0
+ (c++)"vtable for SourceCopy@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgAcqFile@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgAcquire@APTPKG_5.0" 0.8.0
+ (c++)"vtable for DynamicMMap@APTPKG_5.0" 0.8.0
+ (c++)"vtable for PackageCopy@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgDepCache@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgSimulate@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgAcqMethod@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgCacheFile@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgIndexFile@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgAcqArchive@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgTagSection@APTPKG_5.0" 0.8.0
+ (c++)"vtable for OpTextProgress@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgAcquireStatus@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgPackageManager@APTPKG_5.0" 0.8.0
+ (c++)"vtable for debVersioningSystem@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgUdevCdromDevices@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgVersioningSystem@APTPKG_5.0" 0.8.0
+ (c++)"vtable for MMap@APTPKG_5.0" 0.8.0
+ (c++)"vtable for FileFd@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgCache@APTPKG_5.0" 0.8.0
+ (c++)"vtable for IndexCopy@APTPKG_5.0" 0.8.0
+ (c++)"vtable for debSystem@APTPKG_5.0" 0.8.0
+ (c++)"vtable for metaIndex@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgDPkgPM@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgPolicy@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgSystem@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgAcquire::Item@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgRecords::Parser@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgDepCache::InRootSetFunc@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgDepCache::DefaultRootSetFunc@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgDepCache::Policy@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgSimulate::Policy@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgIndexFile::Type@APTPKG_5.0" 0.8.0
+ (c++)"vtable for Configuration::MatchAgainstConfig@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgSourceList::Type@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgSrcRecords::Parser@APTPKG_5.0" 0.8.0
+ (c++)"vtable for APT::CacheSetHelper@APTPKG_5.0" 0.8.0
+ (c++)"operator<<(std::basic_ostream<char, std::char_traits<char> >&, pkgCache::DepIterator)@APTPKG_5.0" 0.8.0
+ (c++)"operator<<(std::basic_ostream<char, std::char_traits<char> >&, pkgCache::PkgIterator)@APTPKG_5.0" 0.8.0
+ _config@APTPKG_5.0 0.8.0
+ _system@APTPKG_5.0 0.8.0
+ debSys@APTPKG_5.0 0.8.0
+ debVS@APTPKG_5.0 0.8.0
+ pkgLibVersion@APTPKG_5.0 0.8.0
+ pkgVersion@APTPKG_5.0 0.8.0
+ (c++)"pkgAcquireStatus::~pkgAcquireStatus()@APTPKG_5.0" 0.8.0
+ (c++)"IndexCopy::~IndexCopy()@APTPKG_5.0" 0.8.0
+ (c++)"pkgArchiveCleaner::~pkgArchiveCleaner()@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo for pkgArchiveCleaner@APTPKG_5.0" 0.8.0
+ (c++)"typeinfo name for pkgArchiveCleaner@APTPKG_5.0" 0.8.0
+ (c++)"vtable for pkgArchiveCleaner@APTPKG_5.0" 0.8.0
+### architecture specific: va_list
+ (arch=armel armhf arm64|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, std::__va_list&) const@APTPKG_5.0" 0.8.15~exp1
+ (arch=i386 hurd-i386 kfreebsd-i386 ppc64 ppc64el|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, char*&) const@APTPKG_5.0" 0.8.15~exp1
+ (arch=hppa ia64 mips mipsel mips64el sparc sparc64|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, void*&) const@APTPKG_5.0" 0.8.15~exp1
+ (arch=amd64 kfreebsd-amd64 powerpc powerpcspe s390 s390x x32|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __va_list_tag (&) [1]) const@APTPKG_5.0" 0.8.15~exp1
+ (arch=sh4|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __builtin_va_list&) const@APTPKG_5.0" 0.8.15~exp1
+ (arch=alpha|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __va_list_tag&) const@APTPKG_5.0" 0.8.15~exp1
+### architecture specific: va_list & size_t
+ (arch=i386 hurd-i386 kfreebsd-i386|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned int&)@APTPKG_5.0" 0.8.11.4
+ (arch=armel armhf|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&, unsigned int&)@APTPKG_5.0" 0.8.11.4
+ (arch=arm64|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&, unsigned long&)@APTPKG_5.0" 0.8.11.4
+ (arch=alpha|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag&, unsigned long&)@APTPKG_5.0" 0.8.11.4
+ (arch=powerpc powerpcspe x32|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned int&)@APTPKG_5.0" 0.8.11.4
+ (arch=amd64 kfreebsd-amd64 s390 s390x|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned long&)@APTPKG_5.0" 0.8.11.4
+ (arch=hppa mips mipsel sparc|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned int&)@APTPKG_5.0" 0.8.11.4
+ (arch=ia64 sparc64 mips64el|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned long&)@APTPKG_5.0" 0.8.11.4
+ (arch=sh4|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, __builtin_va_list&, unsigned int&)@APTPKG_5.0" 0.8.11.4
+ (arch=ppc64 ppc64el|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned long&)@APTPKG_5.0" 0.8.11.4
+ (arch=i386 hurd-i386 kfreebsd-i386|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned int&)@APTPKG_5.0" 0.8.11.4
+ (arch=armel armhf|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned int&)@APTPKG_5.0" 0.8.11.4
+ (arch=arm64|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned long&)@APTPKG_5.0" 0.8.11.4
+ (arch=alpha|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag&, int, unsigned long&)@APTPKG_5.0" 0.8.11.4
+ (arch=powerpc powerpcspe x32|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned int&)@APTPKG_5.0" 0.8.11.4
+ (arch=amd64 kfreebsd-amd64 s390 s390x|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned long&)@APTPKG_5.0" 0.8.11.4
+ (arch=hppa mips mipsel sparc|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned int&)@APTPKG_5.0" 0.8.11.4
+ (arch=ia64 sparc64 mips64el|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned long&)@APTPKG_5.0" 0.8.11.4 1
+ (arch=sh4|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __builtin_va_list&, int, unsigned int&)@APTPKG_5.0" 0.8.11.4
+ (arch=ppc64 ppc64el|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned long&)@APTPKG_5.0" 0.8.11.4
+### architecture specific: size_t
+ (arch=i386 armel armhf hppa hurd-i386 kfreebsd-i386 mips mipsel powerpc powerpcspe sh4 sparc x32|c++)"_strtabexpand(char*, unsigned int)@APTPKG_5.0" 0.8.0
+ (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el s390 s390x sparc64 ppc64 ppc64el|c++)"_strtabexpand(char*, unsigned long)@APTPKG_5.0" 0.8.0
+### architecture specific: time_t
+ (arch=!x32|c++)"TimeRFC1123[abi:cxx11](long)@APTPKG_5.0" 0.8.0
+ (arch=x32|c++)"TimeRFC1123[abi:cxx11](long long)@APTPKG_5.0" 0.8.0
+ (arch=!x32|c++)"FTPMDTMStrToTime(char const*, long&)@APTPKG_5.0" 0.8.0
+ (arch=x32|c++)"FTPMDTMStrToTime(char const*, long long&)@APTPKG_5.0" 0.8.0
+ (arch=!x32|c++)"StrToTime(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long&)@APTPKG_5.0" 0.8.0
+ (arch=x32|c++)"StrToTime(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long long&)@APTPKG_5.0" 0.8.0
+ (arch=!x32|c++)"RFC1123StrToTime(char const*, long&)@APTPKG_5.0" 0.8.0
+ (arch=x32|c++)"RFC1123StrToTime(char const*, long long&)@APTPKG_5.0" 0.8.0
+### architecture specific: mode_t
+ (arch=!kfreebsd-i386 !kfreebsd-amd64|c++)"ChangeOwnerAndPermissionOfFile(char const*, char const*, char const*, char const*, unsigned int)@APTPKG_5.0" 1.1~exp9
+ (arch=kfreebsd-i386 kfreebsd-amd64|c++)"ChangeOwnerAndPermissionOfFile(char const*, char const*, char const*, char const*, unsigned short)@APTPKG_5.0" 1.1~exp9
+###
+ (c++)"CreateAPTDirectoryIfNeeded(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.2
+ (c++)"FileFd::FileSize()@APTPKG_5.0" 0.8.8
+ (c++)"Base256ToNum(char const*, unsigned long&, unsigned int)@APTPKG_5.0" 0.8.11
+ (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator>, std::allocator<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> > >&)@APTPKG_5.0" 0.8.11
+ (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.11
+ (c++)"RealFileExists(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.11
+ (c++)"StripEpoch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.11
+ (c++)"pkgTagSection::FindFlag(unsigned long&, unsigned long, char const*, char const*)@APTPKG_5.0" 0.8.11
+ (c++)"FindMountPointForDevice[abi:cxx11](char const*)@APTPKG_5.0" 0.8.12
+ (c++)"pkgUdevCdromDevices::ScanForRemovable(bool)@APTPKG_5.0" 0.8.12
+ (c++)"APT::Configuration::Compressor::Compressor(char const*, char const*, char const*, char const*, char const*, unsigned short)@APTPKG_5.0" 0.8.12
+ (c++)"APT::Configuration::getCompressors(bool)@APTPKG_5.0" 0.8.12
+ (c++)"APT::Configuration::getCompressorExtensions[abi:cxx11]()@APTPKG_5.0" 0.8.12
+ (c++)"pkgCache::DepIterator::IsNegative() const@APTPKG_5.0" 0.8.15~exp1
+ (c++)"Configuration::CndSet(char const*, int)@APTPKG_5.0" 0.8.15.3
+ (c++)"pkgProblemResolver::InstOrNewPolicyBroken(pkgCache::PkgIterator)@APTPKG_5.0" 0.8.15.3
+ (c++)"DeEscapeString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.15.4
+ (c++)"GetModificationTime(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.15.6
+ (c++)"pkgSourceList::GetLastModifiedTime()@APTPKG_5.0" 0.8.15.6
+ (c++)"pkgCacheFile::RemoveCaches()@APTPKG_5.0" 0.8.15.7
+ (c++)"pkgOrderList::VisitNode(pkgCache::PkgIterator, char const*)@APTPKG_5.0" 0.8.15.7
+### external dependency resolver ###
+ (c++)"EDSP::WriteError(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, _IO_FILE*)@APTPKG_5.0" 0.8.16~exp2
+ (c++)"EDSP::ReadRequest(int, std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, bool&, bool&, bool&)@APTPKG_5.0" 0.8.16~exp2
+ (c++)"EDSP::ApplyRequest(std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, pkgDepCache&)@APTPKG_5.0" 0.8.16~exp2
+ (c++)"EDSP::ReadResponse(int, pkgDepCache&, OpProgress*)@APTPKG_5.0" 0.8.16~exp2
+ (c++)"EDSP::WriteRequest(pkgDepCache&, _IO_FILE*, bool, bool, bool, OpProgress*)@APTPKG_5.0" 0.8.16~exp2
+ (c++)"EDSP::ExecuteSolver(char const*, int*, int*)@APTPKG_5.0" 0.8.16~exp2
+ (c++)"EDSP::WriteProgress(unsigned short, char const*, _IO_FILE*)@APTPKG_5.0" 0.8.16~exp2
+ (c++)"EDSP::WriteScenario(pkgDepCache&, _IO_FILE*, OpProgress*)@APTPKG_5.0" 0.8.16~exp2
+ (c++)"EDSP::WriteSolution(pkgDepCache&, _IO_FILE*)@APTPKG_5.0" 0.8.16~exp2
+ (c++)"EDSP::ResolveExternal(char const*, pkgDepCache&, bool, bool, bool, OpProgress*)@APTPKG_5.0" 0.8.16~exp2
+ (c++)"pkgDepCache::Policy::GetPriority(pkgCache::PkgIterator const&)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"pkgDepCache::Policy::GetPriority(pkgCache::PkgFileIterator const&)@APTPKG_5.0" 0.8.16~exp6
+### generalisation of checksums (with lfs) -- mostly api-compatible available (without sha512 in previous versions)
+ (c++)"AddCRC16(unsigned short, void const*, unsigned long long)@APTPKG_5.0" 0.8.16~exp2
+ (c++)"MD5Summation::Add(unsigned char const*, unsigned long long)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"MD5Summation::Result()@APTPKG_5.0" 0.8.16~exp2
+ (c++)"MD5Summation::MD5Summation()@APTPKG_5.0" 0.8.16~exp2
+ (c++)"SHA1Summation::SHA1Summation()@APTPKG_5.0" 0.8.16~exp2
+ (c++)"SHA1Summation::Add(unsigned char const*, unsigned long long)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"SHA1Summation::Result()@APTPKG_5.0" 0.8.16~exp2
+ (c++)"SummationImplementation::AddFD(int, unsigned long long)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo for MD5Summation@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo for SHA1Summation@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo for SHA256Summation@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo for SHA512Summation@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo for SHA2SummationBase@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo for SummationImplementation@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo name for MD5Summation@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo name for SHA1Summation@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo name for SHA256Summation@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo name for SHA512Summation@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo name for SHA2SummationBase@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo name for SummationImplementation@APTPKG_5.0" 0.8.16~exp6
+ (c++)"vtable for MD5Summation@APTPKG_5.0" 0.8.16~exp6
+ (c++)"vtable for SHA1Summation@APTPKG_5.0" 0.8.16~exp6
+ (c++)"vtable for SHA256Summation@APTPKG_5.0" 0.8.16~exp6
+ (c++)"vtable for SHA512Summation@APTPKG_5.0" 0.8.16~exp6
+### large file support - available in older api-compatible versions without lfs ###
+ (c++)"StrToNum(char const*, unsigned long long&, unsigned int, unsigned int)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"OpProgress::SubProgress(unsigned long long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, float)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"OpProgress::OverallProgress(unsigned long long, unsigned long long, unsigned long long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"OpProgress::Progress(unsigned long long)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"SourceCopy::GetFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long long&)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"pkgAcquire::UriIterator::~UriIterator()@APTPKG_5.0" 0.8.16~exp6
+ (c++)"pkgAcquire::MethodConfig::~MethodConfig()@APTPKG_5.0" 0.8.16~exp6
+ (c++)"pkgTagFile::Jump(pkgTagSection&, unsigned long long)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"pkgTagFile::Offset()@APTPKG_5.0" 0.8.16~exp6
+ (c++)"pkgTagFile::pkgTagFile(FileFd*, unsigned long long)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"DynamicMMap::RawAllocate(unsigned long long, unsigned long)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"PackageCopy::GetFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long long&)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"pkgTagSection::~pkgTagSection()@APTPKG_5.0" 0.8.16~exp6
+ (c++)"pkgAcquireStatus::Fetched(unsigned long long, unsigned long long)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"FileFd::Read(void*, unsigned long long, unsigned long long*)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"FileFd::Seek(unsigned long long)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"FileFd::Skip(unsigned long long)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"FileFd::Write(void const*, unsigned long long)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"FileFd::Truncate(unsigned long long)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"pkgPolicy::GetPriority(pkgCache::PkgFileIterator const&)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo for pkgTagFile@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo for pkgSrcRecords@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo for pkgAcquire::UriIterator@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo for pkgAcquire::MethodConfig@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo for pkgAcquire::Queue@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo for pkgAcquire::Worker@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo name for pkgTagFile@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo name for pkgSrcRecords@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo name for pkgAcquire::UriIterator@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo name for pkgAcquire::MethodConfig@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo name for pkgAcquire::Queue@APTPKG_5.0" 0.8.16~exp6
+ (c++)"typeinfo name for pkgAcquire::Worker@APTPKG_5.0" 0.8.16~exp6
+ (c++)"vtable for pkgTagFile@APTPKG_5.0" 0.8.16~exp6
+ (c++)"vtable for pkgSrcRecords@APTPKG_5.0" 0.8.16~exp6
+ (c++)"vtable for pkgAcquire::UriIterator@APTPKG_5.0" 0.8.16~exp6
+ (c++)"vtable for pkgAcquire::MethodConfig@APTPKG_5.0" 0.8.16~exp6
+ (c++)"vtable for pkgAcquire::Queue@APTPKG_5.0" 0.8.16~exp6
+ (c++)"vtable for pkgAcquire::Worker@APTPKG_5.0" 0.8.16~exp6
+### remove deprecated parameter
+ (c++)"pkgDepCache::SetCandidateVersion(pkgCache::VerIterator)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"pkgDepCache::AddSizes(pkgCache::PkgIterator const&, bool)@APTPKG_5.0" 0.8.16~exp6
+ (c++)"pkgDepCache::AddStates(pkgCache::PkgIterator const&, bool)@APTPKG_5.0" 0.8.16~exp6
+### used internally by public interfaces - if you use them directly, you can keep the pieces
+ (c++|optional=internal|regex)"^SHA256_.*@APTPKG_5.0$" 0.8.16~exp2
+ (c++|optional=internal|regex)"^SHA384_.*@APTPKG_5.0$" 0.8.16~exp2
+ (c++|optional=internal|regex)"^SHA512_.*@APTPKG_5.0$" 0.8.16~exp2
+### orderlist rework: the touched methods are protected
+ (c++)"SigINT(int)@APTPKG_5.0" 0.8.16~exp14
+ (c++)"pkgPackageManager::SigINTStop@APTPKG_5.0" 0.8.16~exp14
+ (c++)"pkgPackageManager::SmartUnPack(pkgCache::PkgIterator, bool, int)@APTPKG_5.0" 0.8.16~exp14
+ (c++)"pkgPackageManager::SmartConfigure(pkgCache::PkgIterator, int)@APTPKG_5.0" 0.8.16~exp14
+### FileFd rework: supporting different on-the-fly (de)compressing needs more parameter (abi), but the api is stable
+ (c++)"FileFd::OpenDescriptor(int, unsigned int, FileFd::CompressMode, bool)@APTPKG_5.0" 0.8.16~exp9
+ (c++)"FileFd::OpenDescriptor(int, unsigned int, APT::Configuration::Compressor const&, bool)@APTPKG_5.0" 0.8.16~exp9
+ (c++)"FileFd::ModificationTime()@APTPKG_5.0" 0.8.16~exp9
+ (c++)"FileFd::Open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, FileFd::CompressMode, unsigned long)@APTPKG_5.0" 0.8.16~exp9
+ (c++)"FileFd::Open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, APT::Configuration::Compressor const&, unsigned long)@APTPKG_5.0" 0.8.16~exp9
+ (c++)"FileFd::ReadLine(char*, unsigned long long)@APTPKG_5.0" 0.8.16~exp9
+ (c++)"SummationImplementation::AddFD(FileFd&, unsigned long long)@APTPKG_5.0" 0.8.16~exp9
+ (c++|optional=deprecated,previous-inline)"FileFd::gzFd()@APTPKG_5.0" 0.8.0
+### CacheSet rework: making them real containers breaks bigtime the API (for the CacheSetHelper)
+ (c++)"APT::CacheSetHelper::canNotFindTask(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.16~exp9
+ (c++)"APT::CacheSetHelper::canNotFindRegEx(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.8.16~exp9
+ (c++)"APT::CacheSetHelper::canNotFindAllVer(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_5.0" 0.8.16~exp9
+ (c++)"APT::CacheSetHelper::canNotFindPackage(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.16~exp9
+ (c++)"APT::CacheSetHelper::showTaskSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.16~exp9
+ (c++)"APT::CacheSetHelper::showRegExSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.8.16~exp9
+ (c++)"APT::CacheSetHelper::showSelectedVersion(pkgCache::PkgIterator const&, pkgCache::VerIterator, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@APTPKG_5.0" 0.8.16~exp9
+ (c++)"APT::CacheSetHelper::canNotFindCandInstVer(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_5.0" 0.8.16~exp9
+ (c++)"APT::CacheSetHelper::canNotFindInstCandVer(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_5.0" 0.8.16~exp9
+ (c++)"APT::VersionContainerInterface::getCandidateVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@APTPKG_5.0" 0.8.16~exp9
+ (c++)"APT::VersionContainerInterface::getInstalledVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@APTPKG_5.0" 0.8.16~exp9
+ (c++)"APT::VersionContainerInterface::FromModifierCommandLine(unsigned short&, APT::VersionContainerInterface*, pkgCacheFile&, char const*, std::__cxx11::list<APT::VersionContainerInterface::Modifier, std::allocator<APT::VersionContainerInterface::Modifier> > const&, APT::CacheSetHelper&)@APTPKG_5.0" 0.8.16~exp9
+ (c++)"EDSP::WriteLimitedScenario(pkgDepCache&, _IO_FILE*, APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > > const&, OpProgress*)@APTPKG_5.0" 0.8.16~exp9
+ (c++)"typeinfo for APT::PackageContainerInterface@APTPKG_5.0" 0.8.16~exp9
+ (c++)"typeinfo for APT::VersionContainerInterface@APTPKG_5.0" 0.8.16~exp9
+ (c++)"typeinfo name for APT::PackageContainerInterface@APTPKG_5.0" 0.8.16~exp9
+ (c++)"typeinfo name for APT::VersionContainerInterface@APTPKG_5.0" 0.8.16~exp9
+ (c++)"vtable for APT::PackageContainerInterface@APTPKG_5.0" 0.8.16~exp9
+ (c++)"vtable for APT::VersionContainerInterface@APTPKG_5.0" 0.8.16~exp9
+### rework of the packagemanager rework
+ (c++)"APT::Progress::PackageManagerFancy::HandleSIGWINCH(int)@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerFancy::~PackageManagerFancy()@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerFancy::PackageManagerFancy()@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerFancy::SetupTerminalScrollArea(int)@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerFancy::StatusChanged(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerFancy::Stop()@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManager::~PackageManager()@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressDeb822Fd::ConffilePrompt(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressDeb822Fd::Error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressDeb822Fd::~PackageManagerProgressDeb822Fd()@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressDeb822Fd::PackageManagerProgressDeb822Fd(int)@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressDeb822Fd::StartDpkg()@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressDeb822Fd::StatusChanged(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressDeb822Fd::Stop()@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressDeb822Fd::WriteToStatusFd(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressFactory()@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressFd::ConffilePrompt(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressFd::Error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressFd::~PackageManagerProgressFd()@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressFd::PackageManagerProgressFd(int)@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressFd::StartDpkg()@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressFd::StatusChanged(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressFd::Stop()@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerProgressFd::WriteToStatusFd(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManager::StatusChanged(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerText::~PackageManagerText()@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerText::StatusChanged(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::String::Strip(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.9.13~exp1
+ (c++)"pkgDPkgPM::BuildPackagesProgressMap()@APTPKG_5.0" 0.9.13~exp1
+ (c++)"pkgDPkgPM::DoDpkgStatusFd(int)@APTPKG_5.0" 0.9.13~exp1
+ (c++)"pkgDPkgPM::ProcessDpkgStatusLine(char*)@APTPKG_5.0" 0.9.13~exp1
+ (c++)"pkgDPkgPM::StartPtyMagic()@APTPKG_5.0" 0.9.13~exp1
+ (c++)"pkgDPkgPM::StopPtyMagic()@APTPKG_5.0" 0.9.13~exp1
+ (c++)"typeinfo for APT::Progress::PackageManager@APTPKG_5.0" 0.9.13~exp1
+ (c++)"typeinfo for APT::Progress::PackageManagerFancy@APTPKG_5.0" 0.9.13~exp1
+ (c++)"typeinfo for APT::Progress::PackageManagerProgressDeb822Fd@APTPKG_5.0" 0.9.13~exp1
+ (c++)"typeinfo for APT::Progress::PackageManagerProgressFd@APTPKG_5.0" 0.9.13~exp1
+ (c++)"typeinfo for APT::Progress::PackageManagerText@APTPKG_5.0" 0.9.13~exp1
+ (c++)"typeinfo name for APT::Progress::PackageManager@APTPKG_5.0" 0.9.13~exp1
+ (c++)"typeinfo name for APT::Progress::PackageManagerFancy@APTPKG_5.0" 0.9.13~exp1
+ (c++)"typeinfo name for APT::Progress::PackageManagerProgressDeb822Fd@APTPKG_5.0" 0.9.13~exp1
+ (c++)"typeinfo name for APT::Progress::PackageManagerProgressFd@APTPKG_5.0" 0.9.13~exp1
+ (c++)"typeinfo name for APT::Progress::PackageManagerText@APTPKG_5.0" 0.9.13~exp1
+ (c++)"vtable for APT::Progress::PackageManager@APTPKG_5.0" 0.9.13~exp1
+ (c++)"vtable for APT::Progress::PackageManagerFancy@APTPKG_5.0" 0.9.13~exp1
+ (c++)"vtable for APT::Progress::PackageManagerProgressDeb822Fd@APTPKG_5.0" 0.9.13~exp1
+ (c++)"vtable for APT::Progress::PackageManagerProgressFd@APTPKG_5.0" 0.9.13~exp1
+ (c++)"vtable for APT::Progress::PackageManagerText@APTPKG_5.0" 0.9.13~exp1
+ (c++)"APT::Progress::PackageManagerFancy::instances@APTPKG_5.0" 0.9.14.2
+ (c++)"APT::Progress::PackageManagerFancy::Start(int)@APTPKG_5.0" 0.9.14.2
+### install foo.deb support
+ (c++)"flAbsPath(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 1.1~exp1
+ (c++)"metaIndex::~metaIndex()@APTPKG_5.0" 1.1~exp1
+### CacheFilter functors
+ (c++)"APT::CacheFilter::ANDMatcher::AND(APT::CacheFilter::Matcher*)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher()@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::~ANDMatcher()@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ANDMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::FalseMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::FalseMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::FalseMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::Matcher::~Matcher()@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::NOTMatcher::NOTMatcher(APT::CacheFilter::Matcher*)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::NOTMatcher::~NOTMatcher()@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::NOTMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::NOTMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::NOTMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::OR(APT::CacheFilter::Matcher*)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::~ORMatcher()@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::ORMatcher::ORMatcher()@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::PackageIsNewInstall::operator()(pkgCache::PkgIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::PackageIsNewInstall::~PackageIsNewInstall()@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::PackageIsNewInstall::PackageIsNewInstall(pkgCacheFile*)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::PackageMatcher::~PackageMatcher()@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::PackageNameMatchesFnmatch::PackageNameMatchesFnmatch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::TrueMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::TrueMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheFilter::TrueMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::ANDMatcher@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::FalseMatcher@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::Matcher@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::NOTMatcher@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::ORMatcher@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::PackageArchitectureMatchesSpecification@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::PackageIsNewInstall@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::PackageMatcher@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::PackageNameMatchesFnmatch@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::PackageNameMatchesRegEx@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo for APT::CacheFilter::TrueMatcher@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::ANDMatcher@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::FalseMatcher@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::Matcher@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::NOTMatcher@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::ORMatcher@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::PackageArchitectureMatchesSpecification@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::PackageIsNewInstall@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::PackageMatcher@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::PackageNameMatchesFnmatch@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::PackageNameMatchesRegEx@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo name for APT::CacheFilter::TrueMatcher@APTPKG_5.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::ANDMatcher@APTPKG_5.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::FalseMatcher@APTPKG_5.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::Matcher@APTPKG_5.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::NOTMatcher@APTPKG_5.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::ORMatcher@APTPKG_5.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::PackageArchitectureMatchesSpecification@APTPKG_5.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::PackageIsNewInstall@APTPKG_5.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::PackageMatcher@APTPKG_5.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::PackageNameMatchesFnmatch@APTPKG_5.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::PackageNameMatchesRegEx@APTPKG_5.0" 1.1~exp4
+ (c++)"vtable for APT::CacheFilter::TrueMatcher@APTPKG_5.0" 1.1~exp4
+### cacheset redesign (API, but not ABI compatible)
+# (c++|optional=inline)"APT::PackageContainerInterface::FromCommandLine(APT::PackageContainerInterface*, pkgCacheFile&, char const**, APT::CacheSetHelper&)@APTPKG_5.0" 0.8.16~exp9
+# (c++|optional=inline)"APT::PackageContainerInterface::FromModifierCommandLine(unsigned short&, APT::PackageContainerInterface*, pkgCacheFile&, char const*, std::__cxx11::list<APT::PackageContainerInterface::Modifier, std::allocator<APT::PackageContainerInterface::Modifier> > const&, APT::CacheSetHelper&)@APTPKG_5.0" 0.8.16~exp9
+# (c++|optional=inline)"APT::PackageContainerInterface::FromName(pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, APT::CacheSetHelper&)@APTPKG_5.0" 0.8.16~exp9
+# (c++|optional=inline)"APT::PackageContainerInterface::FromTask(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@APTPKG_5.0" 0.8.16~exp9
+# (c++|optional=inline)"APT::PackageContainerInterface::FromRegEx(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@APTPKG_5.0" 0.8.16~exp9
+# (c++|optional=inline)"APT::VersionContainerInterface::FromString(APT::VersionContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::VersionContainerInterface::Version const&, APT::CacheSetHelper&, bool)@APTPKG_5.0" 0.8.16~exp9
+# (c++|optional=inline)"APT::VersionContainerInterface::FromPackage(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&, APT::VersionContainerInterface::Version const&, APT::CacheSetHelper&)@APTPKG_5.0" 0.8.16~exp9
+# (c++|optional=inline)"APT::VersionContainerInterface::FromCommandLine(APT::VersionContainerInterface*, pkgCacheFile&, char const**, APT::VersionContainerInterface::Version const&, APT::CacheSetHelper&)@APTPKG_5.0" 0.8.16~exp9
+# (c++)"APT::PackageContainerInterface::FromString(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, APT::CacheSetHelper&)@APTPKG_5.0" 0.8.16~exp9
+# (c++)"APT::PackageContainerInterface::FromGroup(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@APTPKG_5.0" 0.9.7
+# (c++)"APT::PackageContainerInterface::FromFnmatch(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@APTPKG_5.0" 0.9.11
+ (c++)"APT::CacheSetHelper::canNotFindFnmatch(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::canNotFindPackage(APT::CacheSetHelper::PkgSelector, APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::canNotFindVersion(APT::CacheSetHelper::VerSelector, APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::canNotGetCandInstVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::canNotGetInstCandVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::canNotGetVersion(APT::CacheSetHelper::VerSelector, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::PackageFrom(APT::CacheSetHelper::PkgSelector, APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::PackageFromCommandLine(APT::PackageContainerInterface*, pkgCacheFile&, char const**)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::PackageFromFnmatch(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::PackageFromModifierCommandLine(unsigned short&, APT::PackageContainerInterface*, pkgCacheFile&, char const*, std::__cxx11::list<APT::CacheSetHelper::PkgModifier, std::allocator<APT::CacheSetHelper::PkgModifier> > const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::PackageFromName(pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::PackageFromPackageName(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::PackageFromRegEx(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::PackageFromString(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::PackageFromTask(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::showFnmatchSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::showPackageSelection(pkgCache::PkgIterator const&, APT::CacheSetHelper::PkgSelector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::CacheSetHelper::showVersionSelection(pkgCache::PkgIterator const&, pkgCache::VerIterator const&, APT::CacheSetHelper::VerSelector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::VersionContainerInterface::FromCommandLine(APT::VersionContainerInterface*, pkgCacheFile&, char const**, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::VersionContainerInterface::FromPackage(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&)@APTPKG_5.0" 1.1~exp4
+ (c++)"APT::VersionContainerInterface::FromString(APT::VersionContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&, bool)@APTPKG_5.0" 1.1~exp4
+ (c++)"typeinfo for APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >@APTPKG_5.0" 0.8.16~exp9
+ (c++)"typeinfo for APT::PackageContainer<std::__cxx11::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >@APTPKG_5.0" 0.8.16~exp9
+ (c++)"typeinfo for APT::VersionContainer<std::__cxx11::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >@APTPKG_5.0" 0.8.16~exp9
+ (c++)"typeinfo name for APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >@APTPKG_5.0" 0.8.16~exp9
+ (c++)"typeinfo name for APT::PackageContainer<std::__cxx11::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >@APTPKG_5.0" 0.8.16~exp9
+ (c++)"typeinfo name for APT::VersionContainer<std::__cxx11::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >@APTPKG_5.0" 0.8.16~exp9
+ (c++)"vtable for APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >@APTPKG_5.0" 0.8.16~exp9
+ (c++)"vtable for APT::PackageContainer<std::__cxx11::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >@APTPKG_5.0" 0.8.16~exp9
+ (c++)"vtable for APT::VersionContainer<std::__cxx11::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >@APTPKG_5.0" 0.8.16~exp9
+ (c++)"typeinfo for APT::VersionContainer<std::vector<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >@APTPKG_5.0" 1.1~exp15
+ (c++)"typeinfo name for APT::VersionContainer<std::vector<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >@APTPKG_5.0" 1.1~exp15
+ (c++)"vtable for APT::VersionContainer<std::vector<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >@APTPKG_5.0" 1.1~exp15
+### all the hashes are belong to us
+# (c++|optional=inline)"Hashes::AddFD(int, unsigned long long, bool, bool, bool, bool)@APTPKG_5.0" 0.8.16~exp6
+# (c++|optional=inline)"Hashes::AddFD(FileFd&, unsigned long long, bool, bool, bool, bool)@APTPKG_5.0" 0.8.16~exp9
+# (c++|optional=inline)"pkgRecords::Parser::MD5Hash()@APTPKG_5.0" 0.8.0
+# (c++|optional=inline)"pkgRecords::Parser::SHA1Hash()@APTPKG_5.0" 0.8.0
+# (c++|optional=inline)"pkgRecords::Parser::SHA256Hash()@APTPKG_5.0" 0.8.0
+# (c++|optional=inline)"pkgRecords::Parser::SHA512Hash()@APTPKG_5.0" 0.8.16~exp6
+ (c++)"Hashes::AddFD(FileFd&, unsigned long long, unsigned int)@APTPKG_5.0" 1.1~exp1
+ (c++)"Hashes::AddFD(int, unsigned long long, unsigned int)@APTPKG_5.0" 1.1~exp1
+ (c++)"Hashes::Add(unsigned char const*, unsigned long long, unsigned int)@APTPKG_5.0" 1.1~exp1
+ (c++)"Hashes::GetHashStringList()@APTPKG_5.0" 1.1~exp1
+ (c++)"Hashes::Hashes()@APTPKG_5.0" 1.1~exp1
+ (c++)"Hashes::~Hashes()@APTPKG_5.0" 1.1~exp1
+ (c++)"HashStringList::find(char const*) const@APTPKG_5.0" 1.1~exp1
+ (c++)"HashStringList::operator==(HashStringList const&) const@APTPKG_5.0" 1.1~exp1
+ (c++)"HashStringList::operator!=(HashStringList const&) const@APTPKG_5.0" 1.1~exp1
+ (c++)"HashStringList::push_back(HashString const&)@APTPKG_5.0" 1.1~exp1
+ (c++)"HashStringList::supported(char const*)@APTPKG_5.0" 1.1~exp1
+ (c++)"HashStringList::usable() const@APTPKG_5.0" 1.1~exp1
+ (c++)"HashStringList::VerifyFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@APTPKG_5.0" 1.1~exp1
+ (c++)"HashString::operator==(HashString const&) const@APTPKG_5.0" 1.1~exp1
+ (c++)"HashString::operator!=(HashString const&) const@APTPKG_5.0" 1.1~exp1
+ (c++)"pkgAcqArchive::IsTrusted() const@APTPKG_5.0" 1.1~exp1
+ (c++)"pkgAcqFile::Custom600Headers[abi:cxx11]() const@APTPKG_5.0" 1.1~exp1
+ (c++)"pkgAcqMethod::DropPrivsOrDie()@APTPKG_5.0" 1.1~exp1
+ (c++)"pkgAcquire::Item::Custom600Headers[abi:cxx11]() const@APTPKG_5.0" 1.1~exp1
+ (c++)"pkgAcquire::Item::IsTrusted() const@APTPKG_5.0" 1.1~exp1
+ (c++)"typeinfo for Hashes@APTPKG_5.0" 1.1~exp1
+ (c++)"typeinfo name for Hashes@APTPKG_5.0" 1.1~exp1
+ (c++)"vtable for Hashes@APTPKG_5.0" 1.1~exp1
+### more transactional update
+ (c++)"pkgAcquire::GetLock(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"pkgAcquire::Item::Dequeue()@APTPKG_5.0" 1.1~exp4
+ (c++)"pkgAcquire::Item::QueueURI(pkgAcquire::ItemDesc&)@APTPKG_5.0" 1.1~exp4
+ (c++)"pkgAcquire::Item::SetActiveSubprocess(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"pkgAcquire::Setup(pkgAcquireStatus*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp4
+ (c++)"pkgDepCache::MarkAndSweep()@APTPKG_5.0" 1.1~exp4
+ (c++)"pkgDepCache::MarkAndSweep(pkgDepCache::InRootSetFunc&)@APTPKG_5.0" 1.1~exp4
+### mixed stuff
+ (c++)"GetListOfFilesInDir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@APTPKG_5.0" 0.8.16~exp13
+ (c++)"pkgCache::DepIterator::IsIgnorable(pkgCache::PkgIterator const&) const@APTPKG_5.0" 0.8.16~exp10
+ (c++)"pkgCache::DepIterator::IsIgnorable(pkgCache::PrvIterator const&) const@APTPKG_5.0" 0.8.16~exp10
+ (c++)"FileFd::Write(int, void const*, unsigned long long)@APTPKG_5.0" 0.8.16~exp14
+ (c++)"_strrstrip(char*)@APTPKG_5.0" 0.9.7.9~exp2
+ (c++)"SplitClearSignedFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, FileFd*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*, FileFd*)@APTPKG_5.0" 0.9.7.9~exp2
+ (c++)"OpenMaybeClearSignedFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, FileFd&)@APTPKG_5.0" 0.9.7.9~exp2
+ (c++)"SigVerify::RunGPGV(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int const&)@APTPKG_5.0" 0.9.7.9~exp2
+ (c++)"Configuration::Dump(std::basic_ostream<char, std::char_traits<char> >&, char const*, char const*, bool)@APTPKG_5.0" 0.9.3
+ (c++)"AcquireUpdate(pkgAcquire&, int, bool, bool)@APTPKG_5.0" 0.9.3
+ (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::PackageArchitectureMatchesSpecification(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@APTPKG_5.0" 0.9.7
+ (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::~PackageArchitectureMatchesSpecification()@APTPKG_5.0" 0.9.7
+ (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::operator()(pkgCache::PkgIterator const&)@APTPKG_5.0" 0.9.7
+ (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::operator()(char const* const&)@APTPKG_5.0" 0.9.7
+ (c++)"APT::Configuration::checkLanguage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)@APTPKG_5.0" 0.9.7.5
+ (c++)"pkgCdrom::DropTranslation(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)@APTPKG_5.0" 0.9.7.5
+ (c++)"pkgCache::DepIterator::IsSatisfied(pkgCache::PrvIterator const&) const@APTPKG_5.0" 0.9.8
+ (c++)"pkgCache::DepIterator::IsSatisfied(pkgCache::VerIterator const&) const@APTPKG_5.0" 0.9.8
+ (c++)"pkgDepCache::IsDeleteOkProtectInstallRequests(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_5.0" 0.9.9.1
+ (c++)"pkgDepCache::IsInstallOkMultiArchSameVersionSynced(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_5.0" 0.9.9.1
+ (c++)"pkgDPkgPM::SendPkgsInfo(_IO_FILE*, unsigned int const&)@APTPKG_5.0" 0.9.9.1
+ (c++)"pkgCache::VerIterator::MultiArchType() const@APTPKG_5.0" 0.9.9.1
+ (c++)"AutoDetectProxy(URI&)@APTPKG_5.0" 0.9.10
+ (c++)"CommandLine::GetCommand(CommandLine::Dispatch const*, unsigned int, char const* const*)@APTPKG_5.0" 0.9.11
+ (c++)"CommandLine::MakeArgs(char, char const*, char const*, unsigned long)@APTPKG_5.0" 0.9.11
+ (c++)"Configuration::Clear()@APTPKG_5.0" 0.9.11
+ (c++)"Glob(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)@APTPKG_5.0" 0.9.11
+ (c++)"APT::CacheFilter::PackageNameMatchesFnmatch::operator()(pkgCache::GrpIterator const&)@APTPKG_5.0" 0.9.11
+ (c++)"APT::CacheFilter::PackageNameMatchesFnmatch::operator()(pkgCache::PkgIterator const&)@APTPKG_5.0" 0.9.11
+ (c++)"pkgTagSection::pkgTagSection()@APTPKG_5.0" 0.9.11
+ (c++)"strv_length(char const**)@APTPKG_5.0" 0.9.11
+ (c++)"StringSplit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int)@APTPKG_5.0" 0.9.11.3
+ (c++)"pkgAcquire::Item::RenameOnError(pkgAcquire::Item::RenameOnErrorState)@APTPKG_5.0" 0.9.12
+ (c++)"APT::String::Endswith(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 0.9.13.1
+ (c++)"ExecFork(std::set<int, std::less<int>, std::allocator<int> >)@APTPKG_5.0" 0.9.13.1
+ (c++)"MergeKeepFdsFromConfiguration(std::set<int, std::less<int>, std::allocator<int> >&)@APTPKG_5.0" 0.9.13.1
+ (c++)"HashString::FromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.9.13.1
+ (c++)"HashString::GetHashForFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@APTPKG_5.0" 0.9.13.1
+ (c++)"GetTempDir[abi:cxx11]()@APTPKG_5.0" 0.9.14.2
+ (c++)"APT::Configuration::getBuildProfiles[abi:cxx11]()@APTPKG_5.0" 0.9.16
+ (c++)"APT::Configuration::getBuildProfilesString[abi:cxx11]()@APTPKG_5.0" 0.9.16
+ (c++)"debListParser::ParseDepends(char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int&)@APTPKG_5.0" 0.9.16
+ (c++)"debListParser::ParseDepends(char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int&, bool const&)@APTPKG_5.0" 0.9.16
+ (c++)"debListParser::ParseDepends(char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int&, bool const&, bool const&, bool const&)@APTPKG_5.0" 0.9.16
+ (c++)"Rename(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_5.0" 0.9.16
+ (c++)"pkgDepCache::IsInstallOkDependenciesSatisfiableByCandidates(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_5.0" 1.0
+ (c++)"APT::Progress::PackageManagerFancy::GetTerminalSize()@APTPKG_5.0" 1.0
+ (c++)"APT::Progress::PackageManagerFancy::GetTextProgressStr[abi:cxx11](float, int)@APTPKG_5.0" 1.0
+ (c++)"EDSP::ExecuteSolver(char const*, int*, int*, bool)@APTPKG_5.0" 1.0.4
+ (c++)"pkgPackageManager::EarlyRemove(pkgCache::PkgIterator, pkgCache::DepIterator const*)@APTPKG_5.0" 1.0.4
+ (c++)"pkgSrcRecords::Step()@APTPKG_5.0" 1.0.4
+ (c++)"pkgDPkgPM::SetupSlavePtyMagic()@APTPKG_5.0" 1.0.8
+ (c++)"HashStringList::find(char const*) const@APTPKG_5.0" 1.0.9.4
+ (c++)"HashStringList::operator==(HashStringList const&) const@APTPKG_5.0" 1.0.9.4
+ (c++)"HashStringList::operator!=(HashStringList const&) const@APTPKG_5.0" 1.0.9.4
+ (c++)"HashStringList::push_back(HashString const&)@APTPKG_5.0" 1.0.9.4
+ (c++)"HashStringList::supported(char const*)@APTPKG_5.0" 1.0.9.4
+ (c++)"HashStringList::VerifyFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@APTPKG_5.0" 1.0.9.4
+ (c++)"HashString::operator==(HashString const&) const@APTPKG_5.0" 1.0.9.4
+ (c++)"HashString::operator!=(HashString const&) const@APTPKG_5.0" 1.0.9.4
+ (c++)"pkgSrcRecords::Parser::Files2(std::vector<pkgSrcRecords::File2, std::allocator<pkgSrcRecords::File2> >&)@APTPKG_5.0" 1.0.9.4
+ (c++)"APT::Progress::PackageManager::PackageManager()@APTPKG_5.0" 1.1~exp1
+ (c++)"pkgDPkgPM::Go(APT::Progress::PackageManager*)@APTPKG_5.0" 1.1~exp1
+ (c++)"pkgPackageManager::DoInstall(APT::Progress::PackageManager*)@APTPKG_5.0" 1.1~exp1
+ (c++)"pkgPackageManager::DoInstallPostFork(APT::Progress::PackageManager*)@APTPKG_5.0" 1.1~exp1
+ (c++)"pkgTagFile::Init(FileFd*, unsigned long long)@APTPKG_5.0" 1.1~exp1
+ (c++)"pkgTagSection::Count() const@APTPKG_5.0" 1.1~exp1
+ (c++)"pkgTagSection::Exists(char const*) const@APTPKG_5.0" 1.1~exp1
+ (c++)"pkgTagSection::FindB(char const*, bool const&) const@APTPKG_5.0" 1.1~exp1
+ (c++)"pkgTagSection::Scan(char const*, unsigned long, bool)@APTPKG_5.0" 1.1~exp1
+ (c++)"StartsWithGPGClearTextSignature(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp1
+ (c++)"Popen(char const**, FileFd&, int&, FileFd::OpenMode)@APTPKG_5.0" 1.1~exp1
+ (c++)"APT::String::Startswith(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp2
+ (c++)"APT::Upgrade::Upgrade(pkgDepCache&, int, OpProgress*)@APTPKG_5.0" 1.1~exp4
+ (c++)"pkgProblemResolver::Resolve(bool, OpProgress*)@APTPKG_5.0" 1.1~exp4
+ (c++)"pkgProblemResolver::ResolveByKeep(OpProgress*)@APTPKG_5.0" 1.1~exp4
+ (c++)"DropPrivileges()@APTPKG_5.0" 1.1~exp4
+ (c++)"FileFd::FileFd(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned long)@APTPKG_5.0" 1.1~exp4
+ (c++)"metaIndex::metaIndex(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgTagSection::Get(char const*&, char const*&, unsigned int) const@APTPKG_5.0" 1.1~exp9
+### ABI 5 changed so much (+ abicxx11 transition)
+ (c++)"APT::CacheSetHelper::CacheSetHelper(bool, GlobalError::MsgType)@APTPKG_5.0" 1.1~exp9
+ (c++)"APT::Configuration::getArchitectures[abi:cxx11](bool const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"APT::Configuration::getCompressionTypes[abi:cxx11](bool const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"APT::Configuration::getLanguages[abi:cxx11](bool const&, bool const&, char const**)@APTPKG_5.0" 1.1~exp9
+ (c++)"APT::PackageContainerInterface::operator=(APT::PackageContainerInterface const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"APT::PackageContainerInterface::PackageContainerInterface(APT::CacheSetHelper::PkgSelector)@APTPKG_5.0" 1.1~exp9
+ (c++)"APT::PackageContainerInterface::~PackageContainerInterface()@APTPKG_5.0" 1.1~exp9
+ (c++)"APT::PackageContainerInterface::PackageContainerInterface()@APTPKG_5.0" 1.1~exp9
+ (c++)"APT::PackageUniverse::~PackageUniverse()@APTPKG_5.0" 1.1~exp9
+ (c++)"APT::PackageUniverse::PackageUniverse(pkgCache*)@APTPKG_5.0" 1.1~exp9
+ (c++)"APT::PackageUniverse::PackageUniverse(pkgCacheFile*)@APTPKG_5.0" 1.1~exp9
+ (c++)"APT::Progress::PackageManagerText::PackageManagerText()@APTPKG_5.0" 1.1~exp9
+ (c++)"APT::VersionContainerInterface::FromDependency(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::DepIterator const&, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&)@APTPKG_5.0" 1.1~exp9
+ (c++)"APT::VersionContainerInterface::operator=(APT::VersionContainerInterface const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"APT::VersionContainerInterface::~VersionContainerInterface()@APTPKG_5.0" 1.1~exp9
+ (c++)"APT::VersionContainerInterface::VersionContainerInterface()@APTPKG_5.0" 1.1~exp9
+ (c++)"CommandLine::CommandLine()@APTPKG_5.0" 1.1~exp9
+ (c++)"Configuration::FindVector(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) const@APTPKG_5.0" 1.1~exp9
+ (c++)"debDebianSourceDirIndex::GetType() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debDebPkgFileIndex::~debDebPkgFileIndex()@APTPKG_5.0" 1.1~exp9
+ (c++)"debDebPkgFileIndex::debDebPkgFileIndex(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"debDebPkgFileIndex::FindInCache(pkgCache&) const@APTPKG_5.0" 1.1~exp9
+ (c++)"debDebPkgFileIndex::GetArchitecture[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debDebPkgFileIndex::GetComponent[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debDebPkgFileIndex::GetContent(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"debDebPkgFileIndex::GetIndexFlags() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debDebPkgFileIndex::GetType() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debDebPkgFileIndex::OpenListFile(FileFd&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"debDscFileIndex::CreateSrcParser() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debDscFileIndex::~debDscFileIndex()@APTPKG_5.0" 1.1~exp9
+ (c++)"debDscFileIndex::debDscFileIndex(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"debDscFileIndex::GetType() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debPackagesIndex::ArchiveInfo[abi:cxx11](pkgCache::VerIterator const&) const@APTPKG_5.0" 1.1~exp9
+ (c++)"debPackagesIndex::~debPackagesIndex()@APTPKG_5.0" 1.1~exp9
+ (c++)"debPackagesIndex::debPackagesIndex(IndexTarget const&, bool)@APTPKG_5.0" 1.1~exp9
+ (c++)"debPackagesIndex::GetIndexFlags() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debPackagesIndex::GetType() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debSourcesIndex::CreateSrcParser() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debSourcesIndex::~debSourcesIndex()@APTPKG_5.0" 1.1~exp9
+ (c++)"debSourcesIndex::debSourcesIndex(IndexTarget const&, bool)@APTPKG_5.0" 1.1~exp9
+ (c++)"debSourcesIndex::GetIndexFlags() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debSourcesIndex::GetType() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debSourcesIndex::OpenListFile(FileFd&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"debSourcesIndex::SourceInfo[abi:cxx11](pkgSrcRecords::Parser const&, pkgSrcRecords::File const&) const@APTPKG_5.0" 1.1~exp9
+ (c++)"debStatusIndex::~debStatusIndex()@APTPKG_5.0" 1.1~exp9
+ (c++)"debStatusIndex::debStatusIndex(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"debStatusIndex::GetArchitecture[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debStatusIndex::GetComponent[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debStatusIndex::GetIndexFlags() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debStatusIndex::GetType() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debTranslationsIndex::~debTranslationsIndex()@APTPKG_5.0" 1.1~exp9
+ (c++)"debTranslationsIndex::debTranslationsIndex(IndexTarget const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"debTranslationsIndex::GetArchitecture[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debTranslationsIndex::GetIndexFlags() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debTranslationsIndex::GetType() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debTranslationsIndex::HasPackages() const@APTPKG_5.0" 1.1~exp9
+ (c++)"debTranslationsIndex::OpenListFile(FileFd&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"ExecGPGV(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int const&, int*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"FileFd::FileFd()@APTPKG_5.0" 1.1~exp9
+ (c++)"FileFd::FileFd(int, bool)@APTPKG_5.0" 1.1~exp9
+ (c++)"FileFd::FileFd(int, unsigned int, FileFd::CompressMode)@APTPKG_5.0" 1.1~exp9
+ (c++)"FileFd::FileFd(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, FileFd::CompressMode, unsigned long)@APTPKG_5.0" 1.1~exp9
+ (c++)"GetTempFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, FileFd*)@APTPKG_5.0" 1.1~exp9
+ (c++)"Hashes::AddFD(FileFd&, unsigned long long)@APTPKG_5.0" 1.1~exp9
+ (c++)"Hashes::AddFD(int, unsigned long long)@APTPKG_5.0" 1.1~exp9
+ (c++)"Hashes::Add(unsigned char const*, unsigned long long)@APTPKG_5.0" 1.1~exp9
+ (c++)"Hashes::Hashes(HashStringList const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"Hashes::Hashes(unsigned int)@APTPKG_5.0" 1.1~exp9
+ (c++)"HashStringList::FileSize() const@APTPKG_5.0" 1.1~exp9
+ (c++)"HashStringList::FileSize(unsigned long long)@APTPKG_5.0" 1.1~exp9
+ (c++)"IndexCopy::IndexCopy()@APTPKG_5.0" 1.1~exp9
+ (c++)"IndexTarget::Format(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@APTPKG_5.0" 1.1~exp9
+ (c++)"IndexTarget::IndexTarget(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, bool, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"IndexTarget::Option[abi:cxx11](IndexTarget::OptionKeys) const@APTPKG_5.0" 1.1~exp9
+ (c++)"metaIndex::CheckDist(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_5.0" 1.1~exp9
+ (c++)"metaIndex::Describe[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"metaIndex::Exists(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_5.0" 1.1~exp9
+ (c++)"metaIndex::FindInCache(pkgCache&, bool) const@APTPKG_5.0" 1.1~exp9
+ (c++)"metaIndex::GetCodename[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"metaIndex::GetDate() const@APTPKG_5.0" 1.1~exp9
+ (c++)"metaIndex::GetExpectedDist[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"metaIndex::GetLoadedSuccessfully() const@APTPKG_5.0" 1.1~exp9
+ (c++)"metaIndex::GetSignedBy[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"metaIndex::GetSuite[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"metaIndex::GetSupportsAcquireByHash() const@APTPKG_5.0" 1.1~exp9
+ (c++)"metaIndex::GetTrusted() const@APTPKG_5.0" 1.1~exp9
+ (c++)"metaIndex::GetValidUntil() const@APTPKG_5.0" 1.1~exp9
+ (c++)"metaIndex::Lookup(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_5.0" 1.1~exp9
+ (c++)"metaIndex::MetaKeys[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"metaIndex::swapLoad(metaIndex*)@APTPKG_5.0" 1.1~exp9
+ (c++)"PackageCopy::PackageCopy()@APTPKG_5.0" 1.1~exp9
+ (c++)"PackageCopy::RewriteEntry(FileFd&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqArchive::DescURI[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqArchive::Done(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqArchive::Failed(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgAcquire::MethodConfig const*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqArchive::GetExpectedHashes() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqArchive::GetFinalFilename[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqArchive::HashesRequired() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqArchive::ShortDesc[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::Done(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::Failed(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgAcquire::MethodConfig const*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::~pkgAcqChangelog()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::pkgAcqChangelog(pkgAcquire*, pkgCache::RlsFileIterator const&, char const*, char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::pkgAcqChangelog(pkgAcquire*, pkgCache::VerIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::pkgAcqChangelog(pkgAcquire*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::URI[abi:cxx11](pkgCache::RlsFileIterator const&, char const*, char const*, char const*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::URI[abi:cxx11](pkgCache::VerIterator const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::URI(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, char const*, char const*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqChangelog::URITemplate[abi:cxx11](pkgCache::RlsFileIterator const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqFile::Done(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqFile::Failed(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgAcquire::MethodConfig const*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqFile::GetExpectedHashes() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqFile::HashesRequired() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqFile::pkgAcqFile(pkgAcquire*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HashStringList const&, unsigned long long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqMethod::FetchItem::FetchItem()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqMethod::FetchItem::~FetchItem()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcqMethod::FetchResult::~FetchResult()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::Done(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::Failed(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgAcquire::MethodConfig const*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::GetFinalFilename[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::GetItemDesc()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::GetOwner() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::HashSum[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::Item(pkgAcquire*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::Rename(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::ReportMirrorFailure(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::ShortDesc[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::Start(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long long)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcquire::Item::VerifyDone(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgAcquire::MethodConfig const*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcquire::Queue::QItem::Custom600Headers[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcquire::Queue::QItem::GetExpectedHashes() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcquire::Queue::QItem::GetMaximumSize() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcquire::Queue::QItem::SyncDestinationFiles() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcquire::Queue::Queue(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgAcquire*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgAcquire::UriIterator::UriIterator(pkgAcquire::Queue*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgArchiveCleaner::pkgArchiveCleaner()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgCache::DepIterator::IsImplicit() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgCacheFile::pkgCacheFile(pkgDepCache*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgCache::PkgIterator::FullName[abi:cxx11](bool const&) const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgCache::RlsFileIterator::IsOk()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgCache::RlsFileIterator::RelStr[abi:cxx11]()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgCdrom::~pkgCdrom()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgCdrom::pkgCdrom()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgCdromStatus::~pkgCdromStatus()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgCdromStatus::pkgCdromStatus()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexFile::FindInCache(pkgCache&) const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexFile::~pkgDebianIndexFile()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexFile::pkgDebianIndexFile(bool)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexRealFile::ArchiveURI(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexRealFile::Describe[abi:cxx11](bool) const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexRealFile::Exists() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexRealFile::GetProgressDescription[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexRealFile::IndexFileName[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexRealFile::OpenListFile(FileFd&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexRealFile::~pkgDebianIndexRealFile()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexRealFile::pkgDebianIndexRealFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexRealFile::Size() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::ArchiveURI(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::Describe[abi:cxx11](bool) const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::Exists() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::GetArchitecture[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::GetComponent[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::GetProgressDescription[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::IndexFileName[abi:cxx11]() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::OpenListFile(FileFd&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::~pkgDebianIndexTargetFile()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::pkgDebianIndexTargetFile(IndexTarget const&, bool)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDebianIndexTargetFile::Size() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDepCache::CheckDep(pkgCache::DepIterator const&, int, pkgCache::PkgIterator&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDepCache::DependencyState(pkgCache::DepIterator const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDepCache::Policy::IsImportantDep(pkgCache::DepIterator const&) const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDepCache::UpdateVerState(pkgCache::PkgIterator const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgDepCache::VersionState(pkgCache::DepIterator, unsigned char, unsigned char, unsigned char) const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgIndexFile::ArchiveInfo[abi:cxx11](pkgCache::VerIterator const&) const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgIndexFile::~pkgIndexFile()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgIndexFile::pkgIndexFile(bool)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgIndexFile::SourceInfo[abi:cxx11](pkgSrcRecords::Parser const&, pkgSrcRecords::File const&) const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgRecords::Parser::~Parser()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgRecords::Parser::Parser()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgSourceList::AddVolatileFile(pkgIndexFile*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgSourceList::GetVolatileFiles() const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgSourceList::ReadAppend(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgSourceList::ReadSourceDir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgSourceList::Read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgSourceList::Type::ParseLine(std::vector<metaIndex*, std::allocator<metaIndex*> >&, char const*, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgSourceList::Type::ParseStanza(std::vector<metaIndex*, std::allocator<metaIndex*> >&, pkgTagSection&, unsigned int, FileFd&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgSourceList::Type::~Type()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgSourceList::Type::Type(char const*, char const*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgSrcRecords::Parser::~Parser()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgSrcRecords::Parser::Parser(pkgIndexFile const*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgSystem::~pkgSystem()@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgSystem::pkgSystem(char const*, pkgVersioningSystem*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgTagSection::FindFlag(char const*, unsigned char&, unsigned char) const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgTagSection::FindFlag(unsigned char&, unsigned char, char const*, char const*)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgTagSection::FindRawS[abi:cxx11](char const*) const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgTagSection::Tag::Remove(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgTagSection::Tag::Rename(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgTagSection::Tag::Rewrite(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgTagSection::Write(FileFd&, char const* const*, std::vector<pkgTagSection::Tag, std::allocator<pkgTagSection::Tag> > const&) const@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgUserTagSection::TrimRecord(bool, char const*&)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgVersioningSystem::~pkgVersioningSystem()@APTPKG_5.0" 1.1~exp9
+ (c++)"SigVerify::~SigVerify()@APTPKG_5.0" 1.1~exp9
+ (c++)"SigVerify::SigVerify()@APTPKG_5.0" 1.1~exp9
+ (c++)"SourceCopy::RewriteEntry(FileFd&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"SourceCopy::SourceCopy()@APTPKG_5.0" 1.1~exp9
+ (c++)"TranslationsCopy::~TranslationsCopy()@APTPKG_5.0" 1.1~exp9
+ (c++)"TranslationsCopy::TranslationsCopy()@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for APT::PackageUniverse@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for debDebianSourceDirIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for debDebPkgFileIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for debDscFileIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for debPackagesIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for debSourcesIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for debStatusIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for debTranslationsIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for pkgAcqChangelog@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for pkgAcqMethod::FetchItem@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for pkgAcqMethod::FetchResult@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for pkgCdrom@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for pkgCdromStatus@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for pkgDebianIndexFile@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for pkgDebianIndexRealFile@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for pkgDebianIndexTargetFile@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for pkgDepCache::ActionGroup@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for pkgOrderList@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for pkgProblemResolver@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for pkgRecords@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for pkgSourceList@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for pkgUserTagSection@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for SigVerify@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo for TranslationsCopy@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for APT::PackageUniverse@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for debDebianSourceDirIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for debDebPkgFileIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for debDscFileIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for debPackagesIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for debSourcesIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for debStatusIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for debTranslationsIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for pkgAcqChangelog@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for pkgAcqMethod::FetchItem@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for pkgAcqMethod::FetchResult@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for pkgCdrom@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for pkgCdromStatus@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for pkgDebianIndexFile@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for pkgDebianIndexRealFile@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for pkgDebianIndexTargetFile@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for pkgDepCache::ActionGroup@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for pkgOrderList@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for pkgProblemResolver@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for pkgRecords@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for pkgSourceList@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for pkgUserTagSection@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for SigVerify@APTPKG_5.0" 1.1~exp9
+ (c++)"typeinfo name for TranslationsCopy@APTPKG_5.0" 1.1~exp9
+ (c++)"URI::ArchiveOnly(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for APT::PackageUniverse@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for debDebianSourceDirIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for debDebPkgFileIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for debDscFileIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for debPackagesIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for debSourcesIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for debStatusIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for debTranslationsIndex@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for pkgAcqChangelog@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for pkgAcqMethod::FetchItem@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for pkgAcqMethod::FetchResult@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for pkgCdrom@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for pkgCdromStatus@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for pkgDebianIndexFile@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for pkgDebianIndexRealFile@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for pkgDebianIndexTargetFile@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for pkgDepCache::ActionGroup@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for pkgOrderList@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for pkgProblemResolver@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for pkgRecords@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for pkgSourceList@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for pkgUserTagSection@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for SigVerify@APTPKG_5.0" 1.1~exp9
+ (c++)"vtable for TranslationsCopy@APTPKG_5.0" 1.1~exp9
+### dpkg selection state changer & general dpkg interfacing
+ (c++)"APT::StateChanges::clear()@APTPKG_5.0" 1.1~exp15
+ (c++)"APT::StateChanges::empty() const@APTPKG_5.0" 1.1~exp15
+ (c++)"APT::StateChanges::Error()@APTPKG_5.0" 1.1~exp15
+ (c++)"APT::StateChanges::Hold()@APTPKG_5.0" 1.1~exp15
+ (c++)"APT::StateChanges::Hold(pkgCache::VerIterator const&)@APTPKG_5.0" 1.1~exp15
+ (c++)"APT::StateChanges::Install()@APTPKG_5.0" 1.1~exp15
+ (c++)"APT::StateChanges::Install(pkgCache::VerIterator const&)@APTPKG_5.0" 1.1~exp15
+ (c++)"APT::StateChanges::operator=(APT::StateChanges&&)@APTPKG_5.0" 1.1~exp15
+ (c++)"APT::StateChanges::Purge()@APTPKG_5.0" 1.1~exp15
+ (c++)"APT::StateChanges::Purge(pkgCache::VerIterator const&)@APTPKG_5.0" 1.1~exp15
+ (c++)"APT::StateChanges::Remove()@APTPKG_5.0" 1.1~exp15
+ (c++)"APT::StateChanges::Remove(pkgCache::VerIterator const&)@APTPKG_5.0" 1.1~exp15
+ (c++)"APT::StateChanges::Save(bool)@APTPKG_5.0" 1.1~exp15
+ (c++)"APT::StateChanges::~StateChanges()@APTPKG_5.0" 1.1~exp15
+ (c++)"APT::StateChanges::StateChanges()@APTPKG_5.0" 1.1~exp15
+ (c++)"APT::StateChanges::StateChanges(APT::StateChanges&&)@APTPKG_5.0" 1.1~exp15
+ (c++)"APT::StateChanges::Unhold()@APTPKG_5.0" 1.1~exp15
+ (c++)"APT::StateChanges::Unhold(pkgCache::VerIterator const&)@APTPKG_5.0" 1.1~exp15
+ (c++)"pkgSystem::ArchitecturesSupported[abi:cxx11]() const@APTPKG_5.0" 1.1~exp15
+ (c++)"pkgSystem::MultiArchSupported() const@APTPKG_5.0" 1.1~exp15
+ (c++)"metaIndex::IsArchitectureSupported(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@APTPKG_5.0" 1.1~exp15
+### misc stuff
+ (c++)"RemoveFile(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp15
+ (c++)"pkgOrderList::OrderCompareA(pkgCache::Package*, pkgCache::Package*)@APTPKG_5.0" 1.1~exp15
+ (c++)"pkgOrderList::OrderCompareB(pkgCache::Package*, pkgCache::Package*)@APTPKG_5.0" 1.1~exp15
+ (c++)"CommandLine::DispatchArg(CommandLine::Dispatch const*, bool)@APTPKG_5.0" 1.1~exp15
+ (c++)"Configuration::MoveSubTree(char const*, char const*)@APTPKG_5.0" 1.1~exp15
+ (c++)"GetTempDir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp15
+ (c++)"HashString::usable() const@APTPKG_5.0" 1.1~exp15
+ (c++)"IndexTarget::OptionBool(IndexTarget::OptionKeys) const@APTPKG_5.0" 1.1~exp12
+ (c++)"pkgDepCache::GetCandidateVersion(pkgCache::PkgIterator const&)@APTPKG_5.0" 1.1~exp15
+ (c++)"pkgDepCache::Policy::GetPriority(pkgCache::VerIterator const&, bool)@APTPKG_5.0" 1.1~exp15
+ (c++)"pkgPackageManager::CheckRBreaks(pkgCache::PkgIterator const&, pkgCache::DepIterator, char const*)@APTPKG_5.0" 1.1~exp11
+ (c++)"pkgPolicy::GetPriority(pkgCache::VerIterator const&, bool)@APTPKG_5.0" 1.1~exp9
+ (c++)"pkgSourceList::AddVolatileFiles(CommandLine&, std::vector<char const*, std::allocator<char const*> >*)@APTPKG_5.0" 1.1~exp15
+ (c++)"pkgSourceList::AddVolatileFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.1~exp15
+ (c++)"pkgVersionMatch::VersionMatches(pkgCache::VerIterator)@APTPKG_5.0" 1.1~exp9
+ (c++)"GetSrvRecords(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::vector<SrvRec, std::allocator<SrvRec> >&)@APTPKG_5.0" 1.1~exp15
+ (c++)"GetSrvRecords(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<SrvRec, std::allocator<SrvRec> >&)@APTPKG_5.0" 1.1~exp15
+ (c++)"PopFromSrvRecs(std::vector<SrvRec, std::allocator<SrvRec> >&)@APTPKG_5.0" 1.1~exp15
+ (c++)"SrvRec::operator==(SrvRec const&) const@APTPKG_5.0" 1.1~exp15
+ (c++)"debDebianSourceDirIndex::GetComponent[abi:cxx11]() const@APTPKG_5.0" 1.1.4
+ (c++)"debDscFileIndex::GetArchitecture[abi:cxx11]() const@APTPKG_5.0" 1.1.4
+ (c++)"debDscFileIndex::GetComponent[abi:cxx11]() const@APTPKG_5.0" 1.1.4
+ (c++)"debDscFileIndex::GetIndexFlags() const@APTPKG_5.0" 1.1.4
+ (c++)"FileFd::Flush()@APTPKG_5.0" 1.1.9
+ (c++)"isspace_ascii(int)@APTPKG_5.0" 1.1.9
+ (c++)"metaIndex::IsArchitectureAllSupportedFor(IndexTarget const&) const@APTPKG_5.0" 1.1.9
+ (c++)"pkgTagFile::Init(FileFd*, pkgTagFile::Flags, unsigned long long)@APTPKG_5.0" 1.2~exp1
+ (c++)"pkgTagFile::pkgTagFile(FileFd*, pkgTagFile::Flags, unsigned long long)@APTPKG_5.0" 1.2~exp1
+### symbol versioning:
+ APTPKG_5.0@APTPKG_5.0 1.1~exp9
+### gcc artifacts
+ (c++|optional=std)"void std::vector<APT::Configuration::Compressor, std::allocator<APT::Configuration::Compressor> >::emplace_back<APT::Configuration::Compressor>(APT::Configuration::Compressor&&)@APTPKG_5.0" 1.1~exp9
+ (c++|optional=std)"void std::vector<char const*, std::allocator<char const*> >::emplace_back<char const*>(char const*&&)@APTPKG_5.0" 1.1~exp9
+ (c++|optional=std)"void std::vector<pkgCache::GrpIterator*, std::allocator<pkgCache::GrpIterator*> >::emplace_back<pkgCache::GrpIterator*>(pkgCache::GrpIterator*&&)@APTPKG_5.0" 1.1~exp9
+ (c++|optional=std)"void std::vector<pkgCache::PkgIterator*, std::allocator<pkgCache::PkgIterator*> >::emplace_back<pkgCache::PkgIterator*>(pkgCache::PkgIterator*&&)@APTPKG_5.0" 1.1~exp9
+# (c++|optional=std)"void std::vector<pkgCache::RlsFileIterator*, std::allocator<pkgCache::RlsFileIterator*> >::emplace_back<pkgCache::RlsFileIterator*>(pkgCache::RlsFileIterator*&&)@APTPKG_5.0" 1.1~exp9
+ (c++|optional=std)"void std::vector<pkgCache::VerIterator*, std::allocator<pkgCache::VerIterator*> >::emplace_back<pkgCache::VerIterator*>(pkgCache::VerIterator*&&)@APTPKG_5.0" 1.1~exp9
+ (c++|optional=std)"void std::vector<pkgDPkgPM::Item, std::allocator<pkgDPkgPM::Item> >::emplace_back<pkgDPkgPM::Item>(pkgDPkgPM::Item&&)@APTPKG_5.0" 1.1~exp9
+ (c++|optional=std)"void std::vector<pkgIndexFile*, std::allocator<pkgIndexFile*> >::emplace_back<pkgIndexFile*>(pkgIndexFile*&&)@APTPKG_5.0" 1.1~exp9
+ (c++|optional=std)"void std::vector<pkgTagSection::Tag, std::allocator<pkgTagSection::Tag> >::emplace_back<pkgTagSection::Tag>(pkgTagSection::Tag&&)@APTPKG_5.0" 1.1~exp9
+ (c++|optional=std)"void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::emplace_back<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)@APTPKG_5.0" 1.1~exp9
+ (arch=!x32|c++|optional=std)"void std::vector<long, std::allocator<long> >::emplace_back<long>(long&&)@APTPKG_5.0" 1.1~exp15
+ (arch=x32|c++|optional=std)"void std::vector<long long, std::allocator<long long> >::emplace_back<long long>(long long&&)@APTPKG_5.0" 1.1~exp15
+ (c++|optional=std)"void std::vector<metaIndex*, std::allocator<metaIndex*> >::emplace_back<metaIndex*>(metaIndex*&&)@APTPKG_5.0" 1.1~exp15
+ (c++|optional=std)"void std::vector<pkgCache::DepIterator*, std::allocator<pkgCache::DepIterator*> >::emplace_back<pkgCache::DepIterator*>(pkgCache::DepIterator*&&)@APTPKG_5.0" 1.1~exp15
+ (c++|optional=std)"void std::vector<pkgCache::PrvIterator*, std::allocator<pkgCache::PrvIterator*> >::emplace_back<pkgCache::PrvIterator*>(pkgCache::PrvIterator*&&)@APTPKG_5.0" 1.1~exp15
+ (c++|optional=std)"void std::vector<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> >::emplace_back<pkgCache::VerIterator>(pkgCache::VerIterator&&)@APTPKG_5.0" 1.1~exp15
+ (c++|optional=std)"SrvRec* std::__move_merge<__gnu_cxx::__normal_iterator<SrvRec*, std::vector<SrvRec, std::allocator<SrvRec> > >, SrvRec*, __gnu_cxx::__ops::_Iter_less_iter>(__gnu_cxx::__normal_iterator<SrvRec*, std::vector<SrvRec, std::allocator<SrvRec> > >, __gnu_cxx::__normal_iterator<SrvRec*, std::vector<SrvRec, std::allocator<SrvRec> > >, __gnu_cxx::__normal_iterator<SrvRec*, std::vector<SrvRec, std::allocator<SrvRec> > >, __gnu_cxx::__normal_iterator<SrvRec*, std::vector<SrvRec, std::allocator<SrvRec> > >, SrvRec*, __gnu_cxx::__ops::_Iter_less_iter)@APTPKG_5.0" 1.1~exp15
+ (c++|optional=std)"void std::vector<std::pair<char*, unsigned long>, std::allocator<std::pair<char*, unsigned long> > >::emplace_back<std::pair<char*, unsigned long> >(std::pair<char*, unsigned long>&&)@APTPKG_5.0" 1.1
+ (c++|optional=std)"char const* const* std::__find_if<char const* const*, __gnu_cxx::__ops::_Iter_equals_val<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const> >(char const* const*, char const* const*, __gnu_cxx::__ops::_Iter_equals_val<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const>, std::random_access_iterator_tag)@APTPKG_5.0" 1.3~exp1
+ (c++|optional=std)"std::ostream_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char, std::char_traits<char> > std::__copy_move_a<false, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::ostream_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char, std::char_traits<char> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::ostream_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char, std::char_traits<char> >)@APTPKG_5.0" 1.3~exp1
+### try to ignore std:: template instances
+ (c++|regex|optional=std)"^std::vector<.+ >::(vector|push_back|erase|_[^ ]+)\(.+\)( const|)@APTPKG_5.0$" 0.8.0
+ (c++|regex|optional=std)"^(void |)std::[^ ]+<.+ >::(_|~).+\(.*\)@APTPKG_5.0$" 0.8.0
+ (c++|regex|optional=std)"^std::[^ ]+<.+ >::(append|insert|reserve|operator[^ ]+)\(.*\)@APTPKG_5.0$" 0.8.0
+ (c++|regex|optional=std)"^(void |DiffInfo\* |)std::_.*@APTPKG_5.0$" 0.8.0
+ (c++|regex|optional=std)"^__gnu_cxx::__[^ ]+<.*@APTPKG_5.0$" 0.8.0
+###
+ (c++)"debStringPackageIndex::~debStringPackageIndex()@APTPKG_5.0" 1.2.2
+ (c++)"debStringPackageIndex::debStringPackageIndex(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.2.2
+ (c++)"debStringPackageIndex::GetArchitecture[abi:cxx11]() const@APTPKG_5.0" 1.2.2
+ (c++)"debStringPackageIndex::GetComponent[abi:cxx11]() const@APTPKG_5.0" 1.2.2
+ (c++)"debStringPackageIndex::GetIndexFlags() const@APTPKG_5.0" 1.2.2
+ (c++)"debStringPackageIndex::GetType() const@APTPKG_5.0" 1.2.2
+ (c++)"pkgCacheFile::AddIndexFile(pkgIndexFile*)@APTPKG_5.0" 1.2.2
+ (c++)"typeinfo for debStringPackageIndex@APTPKG_5.0" 1.2.2
+ (c++)"typeinfo name for debStringPackageIndex@APTPKG_5.0" 1.2.2
+ (c++)"vtable for debStringPackageIndex@APTPKG_5.0" 1.2.2
+ (c++)"operator<<(std::basic_ostream<char, std::char_traits<char> >&, APT::PrettyDep const&)@APTPKG_5.0" 1.3~exp1
+ (c++)"operator<<(std::basic_ostream<char, std::char_traits<char> >&, APT::PrettyPkg const&)@APTPKG_5.0" 1.3~exp1
+ (c++)"EDSP::ReadRequest(int, std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, unsigned int&)@APTPKG_5.0" 1.3~exp2
+ (c++)"EDSP::ResolveExternal(char const*, pkgDepCache&, unsigned int, OpProgress*)@APTPKG_5.0" 1.3~exp2
+ (c++)"EDSP::WriteError(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, FileFd&)@APTPKG_5.0" 1.3~exp2
+ (c++)"EDSP::WriteLimitedScenario(pkgDepCache&, FileFd&, std::vector<bool, std::allocator<bool> > const&, OpProgress*)@APTPKG_5.0" 1.3~exp2
+ (c++)"EDSP::WriteProgress(unsigned short, char const*, FileFd&)@APTPKG_5.0" 1.3~exp2
+ (c++)"EDSP::WriteRequest(pkgDepCache&, FileFd&, unsigned int, OpProgress*)@APTPKG_5.0" 1.3~exp2
+ (c++)"EDSP::WriteScenario(pkgDepCache&, FileFd&, OpProgress*)@APTPKG_5.0" 1.3~exp2
+ (c++)"EDSP::WriteSolutionStanza(FileFd&, char const*, pkgCache::VerIterator const&)@APTPKG_5.0" 1.3~exp2
+ (c++)"int __gnu_cxx::__stoa<long, int, char, int>(long (*)(char const*, char**, int), char const*, char const*, unsigned long*, int)@APTPKG_5.0" 1.3~exp2
+ (c++|optional=std)"std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char> >(std::basic_istream<char, std::char_traits<char> >&, std::_Get_time<char>)@APTPKG_5.0" 1.3~exp2
+ (c++|optional=std)"std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Put_time<char>)@APTPKG_5.0" 1.3~exp2
+ (c++|optional=std)"std::ctype<char>::do_narrow(char, char) const@APTPKG_5.0" 1.3~exp2
+ (c++)"EIPP::ApplyRequest(std::__cxx11::list<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, EIPP::PKG_ACTION>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, EIPP::PKG_ACTION> > >&, pkgDepCache&)@APTPKG_5.0" 1.3~rc2
+ (c++)"EIPP::ReadRequest(int, std::__cxx11::list<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, EIPP::PKG_ACTION>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, EIPP::PKG_ACTION> > >&, unsigned int&)@APTPKG_5.0" 1.3~rc2
+ (c++)"FileFd::Read(int, void*, unsigned long long, unsigned long long*)@APTPKG_5.0" 1.3~rc2
+ (c++)"pkgSourceList::AddVolatileFiles(CommandLine&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*)@APTPKG_5.0" 1.3~rc2
+ (c++)"pkgSourceList::AddVolatileFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*)@APTPKG_5.0" 1.3~rc2
+ (c++)"TimeRFC1123[abi:cxx11](long, bool)@APTPKG_5.0" 1.3~rc2
+ (c++)"unsigned long std::uniform_int_distribution<unsigned long>::operator()<std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul> >(std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul>&, std::uniform_int_distribution<unsigned long>::param_type const&)@APTPKG_5.0" 1.3~rc2
+ (c++)"void std::shuffle<__gnu_cxx::__normal_iterator<IndexTarget*, std::vector<IndexTarget, std::allocator<IndexTarget> > >, std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul>&>(__gnu_cxx::__normal_iterator<IndexTarget*, std::vector<IndexTarget, std::allocator<IndexTarget> > >, __gnu_cxx::__normal_iterator<IndexTarget*, std::vector<IndexTarget, std::allocator<IndexTarget> > >, std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul>&)@APTPKG_5.0" 1.3~rc2
+ (c++)"void std::vector<pkgDPkgPM::Item, std::allocator<pkgDPkgPM::Item> >::emplace_back<pkgDPkgPM::Item::Ops, pkgCache::PkgIterator>(pkgDPkgPM::Item::Ops&&, pkgCache::PkgIterator&&)@APTPKG_5.0" 1.3~rc2
+ (c++)"void std::vector<pkgDPkgPM::Item, std::allocator<pkgDPkgPM::Item> >::emplace_back<pkgDPkgPM::Item::Ops, pkgCache::PkgIterator&>(pkgDPkgPM::Item::Ops&&, pkgCache::PkgIterator&)@APTPKG_5.0" 1.3~rc2
+ (c++)"void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::emplace_back<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.3~rc2
+ (c++)"void std::vector<std::pair<pkgDPkgPM::Item*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<pkgDPkgPM::Item*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::emplace_back<pkgDPkgPM::Item*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(pkgDPkgPM::Item*&&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)@APTPKG_5.0" 1.3~rc2
+ (c++)"AddCRC16Byte(unsigned short, unsigned char)@APTPKG_5.0" 1.4~beta1
+ (c++)"APT::String::Join(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.4~beta4
+ (c++)"debListParser::ParseDepends(char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int&, bool const&, bool const&, bool const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.4~beta3
+ (c++)"pkgTagHash(char const*, unsigned long)@APTPKG_5.0" 1.4~beta1
+ (c++)"Popen(char const**, FileFd&, int&, FileFd::OpenMode, bool)@APTPKG_5.0" 1.3.1
+ (c++|optional=std)"void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::emplace_back<char const (&) [4]>(char const (&) [4])@APTPKG_5.0" 1.4~beta4
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 000000000..ede9591d1
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,49 @@
+#!/usr/bin/make -f
+# Copyright (C) 2009, 2016 Julian Andres Klode <jak@debian.org>
+#
+# Free Software, licensed under the GPL-2 or (at your option) any later version.
+export DEB_LDFLAGS_MAINT_APPEND := -Wl,--as-needed
+export DEB_BUILD_MAINT_OPTIONS := hardening=+all
+
+# do not fail as we are just experimenting with symbol files for now
+export DPKG_GENSYMBOLS_CHECK_LEVEL=0
+
+export CTEST_OUTPUT_ON_FAILURE=1
+
+%:
+ dh $@
+
+override_dh_clean:
+ cp COPYING debian/copyright
+ dh_clean
+
+override_dh_install-indep:
+ dh_install --list-missing
+
+override_dh_install-arch:
+ dh_install -papt-utils -X/dump
+ dh_install -papt -Xmethods/https
+ dh_install --remaining --list-missing
+ install -m 644 debian/apt.conf.autoremove debian/apt/etc/apt/apt.conf.d/01autoremove
+ install -m 755 debian/apt.auto-removal.sh debian/apt/etc/kernel/postinst.d/apt-auto-removal
+
+override_dh_gencontrol:
+ dh_gencontrol -- -Vapt:keyring="$(shell ./vendor/getinfo keyring-package)"
+
+override_dh_installcron:
+ dh_installcron --name=apt-compat
+
+override_dh_systemd_start:
+ # Do not restart "apt-daily.service" because this script runs
+ # unattended-upgrades. So if apt itself is upgraded as part of
+ # an unattended-upgrades run it would kill itself
+ dh_systemd_start -papt apt-daily.timer apt-daily-upgrade.timer
+ dh_systemd_start --remaining-packages
+
+override_dh_auto_configure-arch: flags=-DWITH_DOC=OFF
+override_dh_auto_configure-indep: flags=-DWITH_DOC=ON
+override_dh_auto_configure-arch override_dh_auto_configure-indep:
+ dh_auto_configure -- $(flags)
+
+override_dh_auto_build:
+ dh_auto_build -- -O
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 000000000..89ae9db8f
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (native)
diff --git a/debian/source/options b/debian/source/options
new file mode 100644
index 000000000..d14f4af37
--- /dev/null
+++ b/debian/source/options
@@ -0,0 +1,2 @@
+# Use xz compression by default, we save disk space
+compression = "xz"
diff --git a/debian/tests/control b/debian/tests/control
new file mode 100644
index 000000000..a282584fa
--- /dev/null
+++ b/debian/tests/control
@@ -0,0 +1,8 @@
+Tests: run-tests
+Restrictions: allow-stderr
+Depends: @, @builddeps@, fakeroot, wget, stunnel4, lsof, db-util,
+ gnupg (>= 2) | gnupg2,
+ gnupg1 | gnupg (<< 2),
+ gpgv (>= 2) | gpgv2,
+ gpgv1 | gpgv (<< 2),
+ libfile-fcntllock-perl, python3-apt
diff --git a/debian/tests/run-tests b/debian/tests/run-tests
new file mode 100644
index 000000000..495f7edff
--- /dev/null
+++ b/debian/tests/run-tests
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+set -e
+
+if [ ! -e build/CMakeCache.txt ]; then
+ mkdir build || true
+ ( cd build && cmake .. )
+fi
+
+make -C build/test/interactive-helper
+
+# run tests against the installed apt, use "env -i" to ensure
+# the host env does not pollute our environment
+env -i \
+APT_INTEGRATION_TESTS_SOURCE_DIR=$(pwd) \
+APT_INTEGRATION_TESTS_HELPERS_BIN_DIR=$(pwd)/build/test/interactive-helper \
+APT_INTEGRATION_TESTS_METHODS_DIR=/usr/lib/apt/methods \
+APT_INTEGRATION_TESTS_LIBEXEC_DIR=/usr/lib/apt/ \
+APT_INTEGRATION_TESTS_INTERNAL_SOLVER=/usr/lib/apt/solvers/apt \
+APT_INTEGRATION_TESTS_DUMP_SOLVER=/usr/lib/apt/solvers/dump \
+APT_INTEGRATION_TESTS_INTERNAL_PLANNER=/usr/lib/apt/planners/apt \
+APT_INTEGRATION_TESTS_BUILD_DIR=/usr/bin \
+APT_INTEGRATION_TESTS_FTPARCHIVE_BIN_DIR=/usr/bin \
+APT_INTEGRATION_TESTS_LIBRARY_PATH=/dev/null/does/not/exist \
+./test/integration/run-tests -q
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
new file mode 100644
index 000000000..a1491428f
--- /dev/null
+++ b/doc/CMakeLists.txt
@@ -0,0 +1,88 @@
+include(Documentation)
+
+set(LINGUAS
+ de
+ es
+ fr
+ it
+ ja
+ nl
+ pl
+ pt_BR
+ pt
+)
+
+set(ENTITIES
+ apt.ent
+ apt-verbatim.ent
+ ../vendor/${CURRENT_VENDOR}/apt-vendor.ent
+)
+
+if(WITH_DOC)
+add_docbook(apt-doc HTML TEXT ALL
+ DOCUMENTS
+ guide.dbk
+ offline.dbk
+ INSTALL ${CMAKE_INSTALL_DOCDIR}/../apt-doc
+ LINGUAS ${LINGUAS}
+ DEPENDS ${ENTITIES}
+)
+
+add_docbook(libapt-pkg-doc HTML TEXT ALL
+ DOCUMENTS
+ design.dbk
+ dpkg-tech.dbk
+ files.dbk
+ method.dbk
+ INSTALL ${CMAKE_INSTALL_DOCDIR}/../libapt-pkg-doc
+ LINGUAS ${LINGUAS}
+ DEPENDS ${ENTITIES}
+)
+
+find_package(Doxygen REQUIRED)
+
+file(GLOB_RECURSE apt_pkg "../apt-pkg/*.h" "../apt-pkg/*.cc")
+configure_file(Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
+
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/doxygen.stamp
+ COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
+ COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/doxygen.stamp
+ DEPENDS ${apt_pkg} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
+)
+
+add_custom_target(apt-doxygen ALL
+ DEPENDS ${PROJECT_BINARY_DIR}/doc/doxygen.stamp
+)
+
+install(DIRECTORY ${PROJECT_BINARY_DIR}/doc/doxygen/html
+ DESTINATION ${CMAKE_INSTALL_DOCDIR}/../libapt-pkg-doc
+ PATTERN "*.map" EXCLUDE
+ PATTERN "*.md5" EXCLUDE
+)
+
+endif()
+
+add_docbook(apt-man MANPAGE ALL
+ DOCUMENTS
+ apt.8.xml
+ apt-cache.8.xml
+ apt-cdrom.8.xml
+ apt.conf.5.xml
+ apt-config.8.xml
+ apt-extracttemplates.1.xml
+ apt-ftparchive.1.xml
+ apt-get.8.xml
+ apt-key.8.xml
+ apt-mark.8.xml
+ apt_preferences.5.xml
+ apt-secure.8.xml
+ apt-sortpkgs.1.xml
+ sources.list.5.xml
+ DEPENDS ${ENTITIES}
+ LINGUAS ${LINGUAS}
+)
+
+add_update_po4a(update-po4a po/${PROJECT_NAME}-doc.pot "po/header.pot.txt")
+
+add_subdirectory(examples)
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
new file mode 100644
index 000000000..b6521feb8
--- /dev/null
+++ b/doc/Doxyfile.in
@@ -0,0 +1,2313 @@
+# Doxyfile 1.8.7
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project.
+#
+# All text after a double hash (##) is considered a comment and is placed in
+# front of the TAG it is preceding.
+#
+# All text after a single hash (#) is considered a comment and will be ignored.
+# The format is:
+# TAG = value [value, ...]
+# For lists, items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (\" \").
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all text
+# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
+# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
+# for the list of possible encodings.
+# The default value is: UTF-8.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+# double-quotes, unless you are using Doxywizard) that should identify the
+# project for which the documentation is generated. This name is used in the
+# title of most generated pages and in a few other places.
+# The default value is: My Project.
+
+PROJECT_NAME = @PACKAGE@
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
+# could be handy for archiving the generated documentation or if some version
+# control system is used.
+
+PROJECT_NUMBER = @PACKAGE_VERSION@
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer a
+# quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF = "commandline package manager"
+
+# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
+# the documentation. The maximum height of the logo should not exceed 55 pixels
+# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
+# to the output directory.
+
+PROJECT_LOGO =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
+# into which the generated documentation will be written. If a relative path is
+# entered, it will be relative to the location where doxygen was started. If
+# left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = @PROJECT_BINARY_DIR@/doc/doxygen
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
+# directories (in 2 levels) under the output directory of each output format and
+# will distribute the generated files over these directories. Enabling this
+# option can be useful when feeding doxygen a huge amount of source files, where
+# putting all generated files in the same directory would otherwise causes
+# performance problems for the file system.
+# The default value is: NO.
+
+CREATE_SUBDIRS = NO
+
+# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
+# characters to appear in the names of generated files. If set to NO, non-ASCII
+# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
+# U+3044.
+# The default value is: NO.
+
+ALLOW_UNICODE_NAMES = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
+# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
+# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
+# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
+# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
+# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
+# Ukrainian and Vietnamese.
+# The default value is: English.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
+# descriptions after the members that are listed in the file and class
+# documentation (similar to Javadoc). Set to NO to disable this.
+# The default value is: YES.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
+# description of a member or function before the detailed description
+#
+# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+# The default value is: YES.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator that is
+# used to form the text in various listings. Each string in this list, if found
+# as the leading text of the brief description, will be stripped from the text
+# and the result, after processing the whole list, is used as the annotated
+# text. Otherwise, the brief description is used as-is. If left blank, the
+# following values are used ($name is automatically replaced with the name of
+# the entity):The $name class, The $name widget, The $name file, is, provides,
+# specifies, contains, represents, a, an and the.
+
+ABBREVIATE_BRIEF =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# doxygen will generate a detailed section even if there is only a brief
+# description.
+# The default value is: NO.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+# The default value is: NO.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
+# before files name in the file list and in the header files. If set to NO the
+# shortest path that makes the file name unique will be used
+# The default value is: YES.
+
+FULL_PATH_NAMES = YES
+
+# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
+# Stripping is only done if one of the specified strings matches the left-hand
+# part of the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the path to
+# strip.
+#
+# Note that you can specify absolute paths here, but also relative paths, which
+# will be relative from the directory where doxygen is started.
+# This tag requires that the tag FULL_PATH_NAMES is set to YES.
+
+STRIP_FROM_PATH = @PROJECT_SOURCE_DIR@
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
+# path mentioned in the documentation of a class, which tells the reader which
+# header file to include in order to use a class. If left blank only the name of
+# the header file containing the class definition is used. Otherwise one should
+# specify the list of include paths that are normally passed to the compiler
+# using the -I flag.
+
+STRIP_FROM_INC_PATH = @PROJECT_SOURCE_DIR@
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
+# less readable) file names. This can be useful is your file systems doesn't
+# support long names like on DOS, Mac, or CD-ROM.
+# The default value is: NO.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
+# first line (until the first dot) of a Javadoc-style comment as the brief
+# description. If set to NO, the Javadoc-style will behave just like regular Qt-
+# style comments (thus requiring an explicit @brief command for a brief
+# description.)
+# The default value is: NO.
+
+JAVADOC_AUTOBRIEF = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
+# line (until the first dot) of a Qt-style comment as the brief description. If
+# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
+# requiring an explicit \brief command for a brief description.)
+# The default value is: NO.
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
+# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
+# a brief description. This used to be the default behavior. The new default is
+# to treat a multi-line C++ comment block as a detailed description. Set this
+# tag to YES if you prefer the old behavior instead.
+#
+# Note that setting this tag to YES also means that rational rose comments are
+# not recognized any more.
+# The default value is: NO.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
+# documentation from any documented member that it re-implements.
+# The default value is: YES.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
+# new page for each member. If set to NO, the documentation of a member will be
+# part of the file/class/namespace that contains it.
+# The default value is: NO.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
+# uses this value to replace tabs by spaces in code fragments.
+# Minimum value: 1, maximum value: 16, default value: 4.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that act as commands in
+# the documentation. An alias has the form:
+# name=value
+# For example adding
+# "sideeffect=@par Side Effects:\n"
+# will allow you to put the command \sideeffect (or @sideeffect) in the
+# documentation, which will result in a user-defined paragraph with heading
+# "Side Effects:". You can put \n's in the value part of an alias to insert
+# newlines.
+
+ALIASES = "TODO=\todo"
+
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding "class=itcl::class"
+# will allow you to use the command class in the itcl::class meaning.
+
+TCL_SUBST =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C. For
+# instance, some of the names that are used will be different. The list of all
+# members will be omitted, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_FOR_C = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
+# Python sources only. Doxygen will then generate output that is more tailored
+# for that language. For instance, namespaces will be presented as packages,
+# qualified scopes will look different, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources. Doxygen will then generate output that is tailored for Fortran.
+# The default value is: NO.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for VHDL.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given
+# extension. Doxygen has a built-in mapping, but you can override or extend it
+# using this tag. The format is ext=language, where ext is a file extension, and
+# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
+# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
+# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
+# Fortran. In the later case the parser tries to guess whether the code is fixed
+# or free formatted code, this is the default for Fortran type files), VHDL. For
+# instance to make doxygen treat .inc files as Fortran files (default is PHP),
+# and .f files as C (default is Fortran), use: inc=Fortran f=C.
+#
+# Note For files without extension you can use no_extension as a placeholder.
+#
+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
+# the files are not read by doxygen.
+
+EXTENSION_MAPPING =
+
+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+# according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you can
+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+# case of backward compatibilities issues.
+# The default value is: YES.
+
+MARKDOWN_SUPPORT = YES
+
+# When enabled doxygen tries to link words that correspond to documented
+# classes, or namespaces to their corresponding documentation. Such a link can
+# be prevented in individual cases by by putting a % sign in front of the word
+# or globally by setting AUTOLINK_SUPPORT to NO.
+# The default value is: YES.
+
+AUTOLINK_SUPPORT = YES
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should set this
+# tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string);
+# versus func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+# The default value is: NO.
+
+BUILTIN_STL_SUPPORT = YES
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+# The default value is: NO.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
+# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
+# will parse them like normal C++ but will assume all classes use public instead
+# of private inheritance when no explicit protection keyword is present.
+# The default value is: NO.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate
+# getter and setter methods for a property. Setting this option to YES will make
+# doxygen to replace the get and set methods by a property in the documentation.
+# This will only work if the methods are indeed getting or setting a simple
+# type. If this is not the case, or you want to show the methods anyway, you
+# should set this option to NO.
+# The default value is: YES.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+# The default value is: NO.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES to allow class member groups of the same type
+# (for instance a group of public functions) to be put as a subgroup of that
+# type (e.g. under the Public Functions section). Set it to NO to prevent
+# subgrouping. Alternatively, this can be done per class using the
+# \nosubgrouping command.
+# The default value is: YES.
+
+SUBGROUPING = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
+# are shown inside the group in which they are included (e.g. using \ingroup)
+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
+# and RTF).
+#
+# Note that this feature does not work in combination with
+# SEPARATE_MEMBER_PAGES.
+# The default value is: NO.
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
+# with only public data fields or simple typedef fields will be shown inline in
+# the documentation of the scope in which they are defined (i.e. file,
+# namespace, or group documentation), provided this scope is documented. If set
+# to NO, structs, classes, and unions are shown on a separate page (for HTML and
+# Man pages) or section (for LaTeX and RTF).
+# The default value is: NO.
+
+INLINE_SIMPLE_STRUCTS = NO
+
+# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
+# enum is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically be
+# useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+# The default value is: NO.
+
+TYPEDEF_HIDES_STRUCT = NO
+
+# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
+# cache is used to resolve symbols given their name and scope. Since this can be
+# an expensive process and often the same symbol appears multiple times in the
+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+# doxygen will become slower. If the cache is too large, memory is wasted. The
+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
+# symbols. At the end of a run doxygen will report the cache usage and suggest
+# the optimal cache size from a speed point of view.
+# Minimum value: 0, maximum value: 9, default value: 0.
+
+LOOKUP_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available. Private
+# class members and static file members will be hidden unless the
+# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
+# Note: This will also disable the warnings about undocumented members that are
+# normally produced when WARNINGS is set to YES.
+# The default value is: NO.
+
+EXTRACT_ALL = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
+# be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# scope will be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PACKAGE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
+# included in the documentation.
+# The default value is: NO.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
+# locally in source files will be included in the documentation. If set to NO
+# only classes defined in header files are included. Does not have any effect
+# for Java sources.
+# The default value is: YES.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local methods,
+# which are defined in the implementation section but not in the interface are
+# included in the documentation. If set to NO only methods in the interface are
+# included.
+# The default value is: NO.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base name of
+# the file that contains the anonymous namespace. By default anonymous namespace
+# are hidden.
+# The default value is: NO.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+# undocumented members inside documented classes or files. If set to NO these
+# members will be included in the various overviews, but no documentation
+# section is generated. This option has no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy. If set
+# to NO these classes will be included in the various overviews. This option has
+# no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
+# (class|struct|union) declarations. If set to NO these declarations will be
+# included in the documentation.
+# The default value is: NO.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
+# documentation blocks found inside the body of a function. If set to NO these
+# blocks will be appended to the function's detailed documentation block.
+# The default value is: NO.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation that is typed after a
+# \internal command is included. If the tag is set to NO then the documentation
+# will be excluded. Set it to YES to include the internal documentation.
+# The default value is: NO.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
+# names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+# The default value is: system dependent.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+# their full class and namespace scopes in the documentation. If set to YES the
+# scope will be hidden.
+# The default value is: NO.
+
+HIDE_SCOPE_NAMES = YES
+
+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+# the files that are included by a file in the documentation of that file.
+# The default value is: YES.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
+# grouped member an include statement to the documentation, telling the reader
+# which file to include in order to use the member.
+# The default value is: NO.
+
+SHOW_GROUPED_MEMB_INC = NO
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+# files with double quotes in the documentation rather than with sharp brackets.
+# The default value is: NO.
+
+FORCE_LOCAL_INCLUDES = NO
+
+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
+# documentation for inline members.
+# The default value is: YES.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
+# (detailed) documentation of file and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order.
+# The default value is: YES.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+# descriptions of file, namespace and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order. Note that
+# this will also influence the order of the classes in the class list.
+# The default value is: NO.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+# (brief and detailed) documentation of class members so that constructors and
+# destructors are listed first. If set to NO the constructors will appear in the
+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
+# member documentation.
+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
+# detailed member documentation.
+# The default value is: NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
+# of group names into alphabetical order. If set to NO the group names will
+# appear in their defined order.
+# The default value is: NO.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
+# fully-qualified names, including namespaces. If set to NO, the class list will
+# be sorted only by class name, not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the alphabetical
+# list.
+# The default value is: NO.
+
+SORT_BY_SCOPE_NAME = NO
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+# type resolution of all parameters of a function it will reject a match between
+# the prototype and the implementation of a member function even if there is
+# only one candidate or it is obvious which candidate to choose by doing a
+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+# accept a match between prototype and implementation in such cases.
+# The default value is: NO.
+
+STRICT_PROTO_MATCHING = NO
+
+# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
+# todo list. This list is created by putting \todo commands in the
+# documentation.
+# The default value is: YES.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
+# test list. This list is created by putting \test commands in the
+# documentation.
+# The default value is: YES.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
+# list. This list is created by putting \bug commands in the documentation.
+# The default value is: YES.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
+# the deprecated list. This list is created by putting \deprecated commands in
+# the documentation.
+# The default value is: YES.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional documentation
+# sections, marked by \if <section_label> ... \endif and \cond <section_label>
+# ... \endcond blocks.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
+# initial value of a variable or macro / define can have for it to appear in the
+# documentation. If the initializer consists of more lines than specified here
+# it will be hidden. Use a value of 0 to hide initializers completely. The
+# appearance of the value of individual variables and macros / defines can be
+# controlled using \showinitializer or \hideinitializer command in the
+# documentation regardless of this setting.
+# Minimum value: 0, maximum value: 10000, default value: 30.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
+# the bottom of the documentation of classes and structs. If set to YES the list
+# will mention the files that were used to generate the documentation.
+# The default value is: YES.
+
+SHOW_USED_FILES = YES
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
+# will remove the Files entry from the Quick Index and from the Folder Tree View
+# (if specified).
+# The default value is: YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
+# page. This will remove the Namespaces entry from the Quick Index and from the
+# Folder Tree View (if specified).
+# The default value is: YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command command input-file, where command is the value of the
+# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
+# by doxygen. Whatever the program writes to standard output is used as the file
+# version. For an example see the documentation.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. To create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option. You can
+# optionally specify a file name after the option, if omitted DoxygenLayout.xml
+# will be used as the name of the layout file.
+#
+# Note that if you run doxygen from a directory containing a file called
+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+# tag is left empty.
+
+LAYOUT_FILE =
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
+# the reference definitions. This must be a list of .bib files. The .bib
+# extension is automatically appended if omitted. This requires the bibtex tool
+# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
+# For LaTeX the style of the bibliography can be controlled using
+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
+# search path. Do not use file names with spaces, bibtex cannot handle them. See
+# also \cite for info how to create references.
+
+CITE_BIB_FILES =
+
+#---------------------------------------------------------------------------
+# Configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated to
+# standard output by doxygen. If QUIET is set to YES this implies that the
+# messages are off.
+# The default value is: NO.
+
+QUIET = YES
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
+# this implies that the warnings are on.
+#
+# Tip: Turn warnings on while writing the documentation.
+# The default value is: YES.
+
+WARNINGS = YES
+
+# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
+# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
+# will automatically be disabled.
+# The default value is: YES.
+
+WARN_IF_UNDOCUMENTED = NO
+
+# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some parameters
+# in a documented function, or documenting parameters that don't exist or using
+# markup commands wrongly.
+# The default value is: YES.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
+# are documented, but have no documentation for their parameters or return
+# value. If set to NO doxygen will only warn about wrong or incomplete parameter
+# documentation, but not about the absence of documentation.
+# The default value is: NO.
+
+WARN_NO_PARAMDOC = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that doxygen
+# can produce. The string should contain the $file, $line, and $text tags, which
+# will be replaced by the file and line number from which the warning originated
+# and the warning text. Optionally the format may contain $version, which will
+# be replaced by the version of the file (if it could be obtained via
+# FILE_VERSION_FILTER)
+# The default value is: $file:$line: $text.
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning and error
+# messages should be written. If left blank the output is written to standard
+# error (stderr).
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag is used to specify the files and/or directories that contain
+# documented source files. You may enter file names like myfile.cpp or
+# directories like /usr/src/myproject. Separate the files or directories with
+# spaces.
+# Note: If this tag is empty the current directory is searched.
+
+INPUT = ${PROJECT_SOURCE_DIR}/apt-pkg
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
+# documentation (see: http://www.gnu.org/software/libiconv) for the list of
+# possible encodings.
+# The default value is: UTF-8.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank the
+# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
+# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
+# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
+# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
+# *.qsf, *.as and *.js.
+
+FILE_PATTERNS = *.cc \
+ *.h
+
+# The RECURSIVE tag can be used to specify whether or not subdirectories should
+# be searched for input files as well.
+# The default value is: NO.
+
+RECURSIVE = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+#
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+# The default value is: NO.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories for example use the pattern */test/*
+
+EXCLUDE_PATTERNS =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories use the pattern */test/*
+
+EXCLUDE_SYMBOLS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or directories
+# that contain example code fragments that are included (see the \include
+# command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank all
+# files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude commands
+# irrespective of the value of the RECURSIVE tag.
+# The default value is: NO.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or directories
+# that contain images that are to be included in the documentation (see the
+# \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command:
+#
+# <filter> <input-file>
+#
+# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
+# name of an input file. Doxygen will then use the output that the filter
+# program writes to standard output. If FILTER_PATTERNS is specified, this tag
+# will be ignored.
+#
+# Note that the filter must not add or remove lines; it is applied before the
+# code is scanned, but not when the output code is generated. If lines are added
+# or removed, the anchors will not be placed correctly.
+
+INPUT_FILTER = "sed -e 's#//[ ]*FIXME:\?#/// \\todo#'"
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form: pattern=filter
+# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
+# patterns match the file name, INPUT_FILTER is applied.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER ) will also be used to filter the input files that are used for
+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# The default value is: NO.
+
+FILTER_SOURCE_FILES = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
+# it is also possible to disable source filtering for a specific pattern using
+# *.ext= (so without naming a filter).
+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
+
+FILTER_SOURCE_PATTERNS =
+
+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page
+# (index.html). This can be useful if you have a project on for instance GitHub
+# and want to reuse the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE =
+
+#---------------------------------------------------------------------------
+# Configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
+# generated. Documented entities will be cross-referenced with these sources.
+#
+# Note: To get rid of all source code in the generated output, make sure that
+# also VERBATIM_HEADERS is set to NO.
+# The default value is: NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body of functions,
+# classes and enums directly into the documentation.
+# The default value is: NO.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+# special comment blocks from generated source code fragments. Normal C, C++ and
+# Fortran comments will always remain visible.
+# The default value is: YES.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
+# function all documented functions referencing it will be listed.
+# The default value is: NO.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES then for each documented function
+# all documented entities called/used by that function will be listed.
+# The default value is: NO.
+
+REFERENCES_RELATION = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
+# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
+# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
+# link to the documentation.
+# The default value is: YES.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
+# source code will show a tooltip with additional information such as prototype,
+# brief description and links to the definition and documentation. Since this
+# will make the HTML file larger and loading of large files a bit slower, you
+# can opt to disable this feature.
+# The default value is: YES.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+SOURCE_TOOLTIPS = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code will
+# point to the HTML generated by the htags(1) tool instead of doxygen built-in
+# source browser. The htags tool is part of GNU's global source tagging system
+# (see http://www.gnu.org/software/global/global.html). You will need version
+# 4.8.6 or higher.
+#
+# To use it do the following:
+# - Install the latest version of global
+# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
+# - Make sure the INPUT points to the root of the source tree
+# - Run doxygen as normal
+#
+# Doxygen will invoke htags (and that will in turn invoke gtags), so these
+# tools must be available from the command line (i.e. in the search path).
+#
+# The result: instead of the source browser generated by doxygen, the links to
+# source code will now point to the output of htags.
+# The default value is: NO.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
+# verbatim copy of the header file for each class for which an include is
+# specified. Set to NO to disable this.
+# See also: Section \class.
+# The default value is: YES.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
+# compounds will be generated. Enable this if the project contains a lot of
+# classes, structs, unions or interfaces.
+# The default value is: YES.
+
+ALPHABETICAL_INDEX = NO
+
+# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
+# which the alphabetical index list will be split.
+# Minimum value: 1, maximum value: 20, default value: 5.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all classes will
+# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
+# can be used to specify a prefix (or a list of prefixes) that should be ignored
+# while generating the index headers.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
+# The default value is: YES.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
+# generated HTML page (for example: .htm, .php, .asp).
+# The default value is: .html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FILE_EXTENSION = .xhtml
+
+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
+# each generated HTML page. If the tag is left blank doxygen will generate a
+# standard header.
+#
+# To get valid HTML the header file that includes any scripts and style sheets
+# that doxygen needs, which is dependent on the configuration options used (e.g.
+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
+# default header using
+# doxygen -w html new_header.html new_footer.html new_stylesheet.css
+# YourConfigFile
+# and then modify the file new_header.html. See also section "Doxygen usage"
+# for information on how to generate the default header that doxygen normally
+# uses.
+# Note: The header is subject to change so you typically have to regenerate the
+# default header when upgrading to a newer version of doxygen. For a description
+# of the possible markers and block names see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
+# generated HTML page. If the tag is left blank doxygen will generate a standard
+# footer. See HTML_HEADER for more information on how to generate a default
+# footer and what special commands can be used inside the footer. See also
+# section "Doxygen usage" for information on how to generate the default footer
+# that doxygen normally uses.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
+# sheet that is used by each HTML page. It can be used to fine-tune the look of
+# the HTML output. If left blank doxygen will generate a default style sheet.
+# See also section "Doxygen usage" for information on how to generate the style
+# sheet that doxygen normally uses.
+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
+# it is more robust and this tag (HTML_STYLESHEET) will in the future become
+# obsolete.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_STYLESHEET =
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
+# defined cascading style sheet that is included after the standard style sheets
+# created by doxygen. Using this option one can overrule certain style aspects.
+# This is preferred over using HTML_STYLESHEET since it does not replace the
+# standard style sheet and is therefor more robust against future updates.
+# Doxygen will copy the style sheet file to the output directory. For an example
+# see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_STYLESHEET =
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
+# files will be copied as-is; there are no commands or markers available.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_FILES =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
+# will adjust the colors in the stylesheet and background images according to
+# this color. Hue is specified as an angle on a colorwheel, see
+# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
+# purple, and 360 is red again.
+# Minimum value: 0, maximum value: 359, default value: 220.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_HUE = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
+# in the HTML output. For a value of 0 the output will use grayscales only. A
+# value of 255 will produce the most vivid colors.
+# Minimum value: 0, maximum value: 255, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_SAT = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
+# luminance component of the colors in the HTML output. Values below 100
+# gradually make the output lighter, whereas values above 100 make the output
+# darker. The value divided by 100 is the actual gamma applied, so 80 represents
+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
+# change the gamma.
+# Minimum value: 40, maximum value: 240, default value: 80.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_GAMMA = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_TIMESTAMP = NO
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_DYNAMIC_SECTIONS = NO
+
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
+# shown in the various tree structured indices initially; the user can expand
+# and collapse entries dynamically later on. Doxygen will expand the tree to
+# such a level that at most the specified number of entries are visible (unless
+# a fully collapsed tree already exceeds this amount). So setting the number of
+# entries 1 will produce a full collapsed tree by default. 0 is a special value
+# representing an infinite number of entries and will result in a full expanded
+# tree by default.
+# Minimum value: 0, maximum value: 9999, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files will be
+# generated that can be used as input for Apple's Xcode 3 integrated development
+# environment (see: http://developer.apple.com/tools/xcode/), introduced with
+# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
+# Makefile in the HTML output directory. Running make will produce the docset in
+# that directory and running make install will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
+# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_DOCSET = NO
+
+# This tag determines the name of the docset feed. A documentation feed provides
+# an umbrella under which multiple documentation sets from a single provider
+# (such as a company or product suite) can be grouped.
+# The default value is: Doxygen generated docs.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# This tag specifies a string that should uniquely identify the documentation
+# set bundle. This should be a reverse domain-name style string, e.g.
+# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_BUNDLE_ID = org.doxygen.Project
+
+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+# The default value is: org.doxygen.Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+
+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
+# The default value is: Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_NAME = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
+# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
+# Windows.
+#
+# The HTML Help Workshop contains a compiler that can convert all HTML output
+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+# files are now used as the Windows 98 help format, and will replace the old
+# Windows help format (.hlp) on all Windows platforms in the future. Compressed
+# HTML files also contain an index, a table of contents, and you can search for
+# words in the documentation. The HTML workshop also contains a viewer for
+# compressed HTML files.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_HTMLHELP = NO
+
+# The CHM_FILE tag can be used to specify the file name of the resulting .chm
+# file. You can add a path in front of the file if the result should not be
+# written to the html output directory.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_FILE =
+
+# The HHC_LOCATION tag can be used to specify the location (absolute path
+# including file name) of the HTML help compiler ( hhc.exe). If non-empty
+# doxygen will try to run the HTML help compiler on the generated index.hhp.
+# The file has to be specified with full path.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+HHC_LOCATION =
+
+# The GENERATE_CHI flag controls if a separate .chi index file is generated (
+# YES) or that it should be included in the master .chm file ( NO).
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+GENERATE_CHI = NO
+
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
+# and project file content.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_INDEX_ENCODING =
+
+# The BINARY_TOC flag controls whether a binary table of contents is generated (
+# YES) or a normal table of contents ( NO) in the .chm file. Furthermore it
+# enables the Previous and Next buttons.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members to
+# the table of contents of the HTML help documentation and to the tree view.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
+# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
+# (.qch) of the generated HTML documentation.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
+# the file name of the resulting .qch file. The path specified is relative to
+# the HTML output folder.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
+# Project output. For more information please see Qt Help Project / Namespace
+# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_NAMESPACE =
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
+# Help Project output. For more information please see Qt Help Project / Virtual
+# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
+# folders).
+# The default value is: doc.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
+# filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's filter section matches. Qt Help Project / Filter Attributes (see:
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_SECT_FILTER_ATTRS =
+
+# The QHG_LOCATION tag can be used to specify the location of Qt's
+# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
+# generated .qhp file.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHG_LOCATION =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
+# generated, together with the HTML files, they form an Eclipse help plugin. To
+# install this plugin and make it available under the help contents menu in
+# Eclipse, the contents of the directory containing the HTML and XML files needs
+# to be copied into the plugins directory of eclipse. The name of the directory
+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
+# After copying Eclipse needs to be restarted before the help appears.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_ECLIPSEHELP = NO
+
+# A unique identifier for the Eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have this
+# name. Each documentation set should have its own identifier.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
+
+ECLIPSE_DOC_ID = org.doxygen.Project
+
+# If you want full control over the layout of the generated HTML pages it might
+# be necessary to disable the index and replace it with your own. The
+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
+# of each HTML page. A value of NO enables the index and the value YES disables
+# it. Since the tabs in the index contain the same information as the navigation
+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+DISABLE_INDEX = NO
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information. If the tag
+# value is set to YES, a side panel will be generated containing a tree-like
+# index structure (just like the one that is generated for HTML Help). For this
+# to work a browser that supports JavaScript, DHTML, CSS and frames is required
+# (i.e. any modern browser). Windows users are probably better off using the
+# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
+# further fine-tune the look of the index. As an example, the default style
+# sheet generated by doxygen has an example that shows how to put an image at
+# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
+# the same information as the tab index, you could consider setting
+# DISABLE_INDEX to YES when enabling this option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_TREEVIEW = NO
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
+# doxygen will group on one line in the generated HTML documentation.
+#
+# Note that a value of 0 will completely suppress the enum values from appearing
+# in the overview section.
+# Minimum value: 0, maximum value: 20, default value: 4.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
+# to set the initial width (in pixels) of the frame in which the tree is shown.
+# Minimum value: 0, maximum value: 1500, default value: 250.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+TREEVIEW_WIDTH = 250
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
+# external symbols imported via tag files in a separate window.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+EXT_LINKS_IN_WINDOW = NO
+
+# Use this tag to change the font size of LaTeX formulas included as images in
+# the HTML documentation. When you change the font size after a successful
+# doxygen run you need to manually remove any form_*.png images from the HTML
+# output directory to force them to be regenerated.
+# Minimum value: 8, maximum value: 50, default value: 10.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_FONTSIZE = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are not
+# supported properly for IE 6.0, but are supported on all modern browsers.
+#
+# Note that when changing this option you need to delete any form_*.png files in
+# the HTML output directory before the changes have effect.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_TRANSPARENT = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
+# http://www.mathjax.org) which uses client side Javascript for the rendering
+# instead of using prerendered bitmaps. Use this if you do not have LaTeX
+# installed or if you want to formulas look prettier in the HTML output. When
+# enabled you may also need to install MathJax separately and configure the path
+# to it using the MATHJAX_RELPATH option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+USE_MATHJAX = NO
+
+# When MathJax is enabled you can set the default output format to be used for
+# the MathJax output. See the MathJax site (see:
+# http://docs.mathjax.org/en/latest/output.html) for more details.
+# Possible values are: HTML-CSS (which is slower, but has the best
+# compatibility), NativeMML (i.e. MathML) and SVG.
+# The default value is: HTML-CSS.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_FORMAT = HTML-CSS
+
+# When MathJax is enabled you need to specify the location relative to the HTML
+# output directory using the MATHJAX_RELPATH option. The destination directory
+# should contain the MathJax.js script. For instance, if the mathjax directory
+# is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
+# Content Delivery Network so you can quickly see the result without installing
+# MathJax. However, it is strongly recommended to install a local copy of
+# MathJax from http://www.mathjax.org before deployment.
+# The default value is: http://cdn.mathjax.org/mathjax/latest.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
+# extension names that should be enabled during MathJax rendering. For example
+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_EXTENSIONS =
+
+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
+# of code that will be used on startup of the MathJax code. See the MathJax site
+# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+# example see the documentation.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_CODEFILE =
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
+# the HTML output. The underlying search engine uses javascript and DHTML and
+# should work on any modern browser. Note that when using HTML help
+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
+# there is already a search function so this one should typically be disabled.
+# For large projects the javascript based search engine can be slow, then
+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
+# search using the keyboard; to jump to the search box use <access key> + S
+# (what the <access key> is depends on the OS and browser, but it is typically
+# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
+# key> to jump into the search results window, the results can be navigated
+# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
+# the search. The filter options can be selected when the cursor is inside the
+# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
+# to select a filter and <Enter> or <escape> to activate or cancel the filter
+# option.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+SEARCHENGINE = NO
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a web server instead of a web client using Javascript. There
+# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
+# setting. When disabled, doxygen will generate a PHP script for searching and
+# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
+# and searching needs to be provided by external tools. See the section
+# "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SERVER_BASED_SEARCH = NO
+
+# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
+# script for searching. Instead the search results are written to an XML file
+# which needs to be processed by an external indexer. Doxygen will invoke an
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
+# search results.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/).
+#
+# See the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH = NO
+
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
+# which will return the search results when EXTERNAL_SEARCH is enabled.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/). See the section "External Indexing and
+# Searching" for details.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHENGINE_URL =
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+# search data is written to a file for indexing by an external tool. With the
+# SEARCHDATA_FILE tag the name of this file can be specified.
+# The default file is: searchdata.xml.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHDATA_FILE = searchdata.xml
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+# projects and redirect the results back to the right project.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH_ID =
+
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# projects other than the one defined by this configuration file, but that are
+# all added to the same external search index. Each project needs to have a
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
+# to a relative location where the documentation can be found. The format is:
+# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTRA_SEARCH_MAPPINGS =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
+# The default value is: YES.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked.
+#
+# Note that when enabling USE_PDFLATEX this option is only used for generating
+# bitmaps for formulas in the HTML output, but not in the Makefile that is
+# written to the output directory.
+# The default file is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
+# index for LaTeX.
+# The default file is: makeindex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used by the
+# printer.
+# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
+# 14 inches) and executive (7.25 x 10.5 inches).
+# The default value is: a4.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
+# that should be included in the LaTeX output. To get the times font for
+# instance you can specify
+# EXTRA_PACKAGES=times
+# If left blank no extra packages will be included.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
+# generated LaTeX document. The header should contain everything until the first
+# chapter. If it is left blank doxygen will generate a standard header. See
+# section "Doxygen usage" for information on how to let doxygen write the
+# default header to a separate file.
+#
+# Note: Only use a user-defined header if you know what you are doing! The
+# following commands have a special meaning inside the header: $title,
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
+# replace them by respectively the title of the page, the current date and time,
+# only the current date, the version number of doxygen, the project name (see
+# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HEADER =
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
+# generated LaTeX document. The footer should contain everything after the last
+# chapter. If it is left blank doxygen will generate a standard footer.
+#
+# Note: Only use a user-defined footer if you know what you are doing!
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_FOOTER =
+
+# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the LATEX_OUTPUT output
+# directory. Note that the files will be copied as-is; there are no commands or
+# markers available.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_FILES =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
+# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
+# contain links (just like the HTML output) instead of page references. This
+# makes the output suitable for online browsing using a PDF viewer.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PDF_HYPERLINKS = NO
+
+# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+# the PDF file directly from the LaTeX files. Set this option to YES to get a
+# higher quality PDF documentation.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+USE_PDFLATEX = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
+# command to the generated LaTeX files. This will instruct LaTeX to keep running
+# if errors occur, instead of asking the user for help. This option is also used
+# when generating formulas in HTML.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BATCHMODE = NO
+
+# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
+# index chapters (such as File Index, Compound Index, etc.) in the output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HIDE_INDICES = NO
+
+# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
+# code with syntax highlighting in the LaTeX output.
+#
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_SOURCE_CODE = NO
+
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. See
+# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
+# The default value is: plain.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BIB_STYLE = plain
+
+#---------------------------------------------------------------------------
+# Configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
+# RTF output is optimized for Word 97 and may not look too pretty with other RTF
+# readers/editors.
+# The default value is: NO.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: rtf.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
+# contain hyperlink fields. The RTF file will contain links (just like the HTML
+# output) instead of page references. This makes the output suitable for online
+# browsing using Word or some other Word compatible readers that support those
+# fields.
+#
+# Note: WordPad (write) and others do not support links.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's config
+# file, i.e. a series of assignments. You only have to provide replacements,
+# missing definitions are set to their default value.
+#
+# See also section "Doxygen usage" for information on how to generate the
+# default style sheet that doxygen normally uses.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an RTF document. Syntax is
+# similar to doxygen's config file. A template extensions file can be generated
+# using doxygen -e rtf extensionFile.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
+# classes and files.
+# The default value is: NO.
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it. A directory man3 will be created inside the directory specified by
+# MAN_OUTPUT.
+# The default directory is: man.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to the generated
+# man pages. In case the manual section does not start with a number, the number
+# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
+# optional.
+# The default value is: .3.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_EXTENSION = .3
+
+# The MAN_SUBDIR tag determines the name of the directory created within
+# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
+# MAN_EXTENSION with the initial . removed.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_SUBDIR =
+
+# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
+# will generate one additional man file for each entity documented in the real
+# man page(s). These additional files only source the real man page, but without
+# them the man command would be unable to find the correct page.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
+# captures the structure of the code including all documentation.
+# The default value is: NO.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: xml.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_OUTPUT = xml
+
+# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
+# listings (including syntax highlighting and cross-referencing information) to
+# the XML output. Note that enabling this will significantly increase the size
+# of the XML output.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the DOCBOOK output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
+# that can be used to generate PDF.
+# The default value is: NO.
+
+GENERATE_DOCBOOK = NO
+
+# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
+# front of it.
+# The default directory is: docbook.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_OUTPUT = docbook
+
+#---------------------------------------------------------------------------
+# Configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
+# Definitions (see http://autogen.sf.net) file that captures the structure of
+# the code including all documentation. Note that this feature is still
+# experimental and incomplete at the moment.
+# The default value is: NO.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
+# file that captures the structure of the code including all documentation.
+#
+# Note that this feature is still experimental and incomplete at the moment.
+# The default value is: NO.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
+# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
+# output from the Perl module output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
+# formatted so it can be parsed by a human reader. This is useful if you want to
+# understand what is going on. On the other hand, if this tag is set to NO the
+# size of the Perl module output will be much smaller and Perl will parse it
+# just the same.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file are
+# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
+# so different doxyrules.make files included by the same Makefile don't
+# overwrite each other's variables.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
+# C-preprocessor directives found in the sources and include files.
+# The default value is: YES.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
+# in the source code. If set to NO only conditional compilation will be
+# performed. Macro expansion can be done in a controlled way by setting
+# EXPAND_ONLY_PREDEF to YES.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
+# the macro expansion is limited to the macros specified with the PREDEFINED and
+# EXPAND_AS_DEFINED tags.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES the includes files in the
+# INCLUDE_PATH will be searched if a #include is found.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by the
+# preprocessor.
+# This tag requires that the tag SEARCH_INCLUDES is set to YES.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will be
+# used.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that are
+# defined before the preprocessor is started (similar to the -D option of e.g.
+# gcc). The argument of the tag is a list of macros of the form: name or
+# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
+# is assumed. To prevent a macro definition from being undefined via #undef or
+# recursively expanded use the := operator instead of the = operator.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
+# tag can be used to specify a list of macro names that should be expanded. The
+# macro definition that is found in the sources will be used. Use the PREDEFINED
+# tag if you want to use a different macro definition that overrules the
+# definition found in the source code.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
+# remove all references to function-like macros that are alone on a line, have
+# an all uppercase name, and do not end with a semicolon. Such function macros
+# are typically used for boiler-plate code, and will confuse the parser if not
+# removed.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES tag can be used to specify one or more tag files. For each tag
+# file the location of the external documentation should be added. The format of
+# a tag file without this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where loc1 and loc2 can be relative or absolute paths or URLs. See the
+# section "Linking to external documentation" for more information about the use
+# of tag files.
+# Note: Each tag file must have a unique name (where the name does NOT include
+# the path). If a tag file is not located in the directory in which doxygen is
+# run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
+# tag file that is based on the input files it reads. See section "Linking to
+# external documentation" for more information about the usage of tag files.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
+# class index. If set to NO only the inherited external classes will be listed.
+# The default value is: NO.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
+# the modules index. If set to NO, only the current project's groups will be
+# listed.
+# The default value is: YES.
+
+EXTERNAL_GROUPS = YES
+
+# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
+# the related pages index. If set to NO, only the current project's pages will
+# be listed.
+# The default value is: YES.
+
+EXTERNAL_PAGES = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of 'which perl').
+# The default file (with absolute path) is: /usr/bin/perl.
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
+# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
+# NO turns the diagrams off. Note that this option also works with HAVE_DOT
+# disabled, but it is recommended to install and use dot, since it yields more
+# powerful graphs.
+# The default value is: YES.
+
+CLASS_DIAGRAMS = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see:
+# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH =
+
+# You can include diagrams made with dia in doxygen documentation. Doxygen will
+# then run dia to produce the diagram and insert it in the documentation. The
+# DIA_PATH tag allows you to specify the directory where the dia binary resides.
+# If left empty dia is assumed to be found in the default search path.
+
+DIA_PATH =
+
+# If set to YES, the inheritance and collaboration graphs will hide inheritance
+# and usage relations if the target is undocumented or is not a class.
+# The default value is: YES.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz (see:
+# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
+# Bell Labs. The other options in this section have no effect if this option is
+# set to NO
+# The default value is: YES.
+
+HAVE_DOT = @DOXYGEN_DOT_FOUND@
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
+# to run in parallel. When set to 0 doxygen will base this on the number of
+# processors available in the system. You can set it explicitly to a value
+# larger than 0 to get control over the balance between CPU load and processing
+# speed.
+# Minimum value: 0, maximum value: 32, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_NUM_THREADS = 0
+
+# When you want a differently looking font n the dot files that doxygen
+# generates you can specify the font name using DOT_FONTNAME. You need to make
+# sure dot is able to find the font, which can be done by putting it in a
+# standard location or by setting the DOTFONTPATH environment variable or by
+# setting DOT_FONTPATH to the directory containing the font.
+# The default value is: Helvetica.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTNAME =
+
+# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
+# dot graphs.
+# Minimum value: 4, maximum value: 24, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the default font as specified with
+# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
+# the path where dot can find it using this tag.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTPATH =
+
+# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
+# each documented class showing the direct and indirect inheritance relations.
+# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
+# graph for each documented class showing the direct and indirect implementation
+# dependencies (inheritance, containment, and class references variables) of the
+# class with other documented classes.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
+# groups, showing the direct groups dependencies.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LOOK = NO
+
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
+# class node. If there are many fields or methods and many nodes the graph may
+# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
+# number of items for each type to make the size more manageable. Set this to 0
+# for no limit. Note that the threshold may be exceeded by 50% before the limit
+# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
+# but if the number exceeds 15, the total amount of fields shown is limited to
+# 10.
+# Minimum value: 0, maximum value: 100, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LIMIT_NUM_FIELDS = 10
+
+# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
+# collaboration graphs will show the relations between templates and their
+# instances.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+TEMPLATE_RELATIONS = NO
+
+# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
+# YES then doxygen will generate a graph for each documented file showing the
+# direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDE_GRAPH = YES
+
+# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
+# set to YES then doxygen will generate a graph for each documented file showing
+# the direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable caller graphs for selected
+# functions only using the \callergraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
+# hierarchy of all classes instead of a textual one.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
+# dependencies a directory has on other directories in a graphical way. The
+# dependency relations are determined by the #include relations between the
+# files in the directories.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot.
+# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
+# to make the SVG files visible in IE 9+ (other browsers do not have this
+# requirement).
+# Possible values are: png, png:cairo, png:cairo:cairo, png:cairo:gd, png:gd,
+# png:gd:gd, jpg, jpg:cairo, jpg:cairo:gd, jpg:gd, jpg:gd:gd, gif, gif:cairo,
+# gif:cairo:gd, gif:gd, gif:gd:gd and svg.
+# The default value is: png.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_IMAGE_FORMAT = svg
+
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+#
+# Note that this requires a modern browser other than Internet Explorer. Tested
+# and working are Firefox, Chrome, Safari, and Opera.
+# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
+# the SVG files visible. Older versions of IE do not have SVG support.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INTERACTIVE_SVG = YES
+
+# The DOT_PATH tag can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_PATH = @DOXYGEN_DOT_PATH@
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the \dotfile
+# command).
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOTFILE_DIRS =
+
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the \mscfile
+# command).
+
+MSCFILE_DIRS =
+
+# The DIAFILE_DIRS tag can be used to specify one or more directories that
+# contain dia files that are included in the documentation (see the \diafile
+# command).
+
+DIAFILE_DIRS =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
+# that will be shown in the graph. If the number of nodes in a graph becomes
+# larger than this value, doxygen will truncate the graph, which is visualized
+# by representing a node as a red box. Note that doxygen if the number of direct
+# children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
+# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+# Minimum value: 0, maximum value: 10000, default value: 50.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
+# generated by dot. A depth value of 3 means that only nodes reachable from the
+# root by following a path via at most 3 edges will be shown. Nodes that lay
+# further from the root node will be omitted. Note that setting this option to 1
+# or 2 may greatly reduce the computation time needed for large code bases. Also
+# note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+# Minimum value: 0, maximum value: 1000, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not seem
+# to support this out of the box.
+#
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# read).
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_TRANSPARENT = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10) support
+# this, this feature is disabled by default.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_MULTI_TARGETS = YES
+
+# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
+# explaining the meaning of the various boxes and arrows in the dot generated
+# graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
+# files that are used to generate the various graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_CLEANUP = YES
diff --git a/doc/acquire-additional-files.txt b/doc/acquire-additional-files.txt
new file mode 100644
index 000000000..c55d5fe19
--- /dev/null
+++ b/doc/acquire-additional-files.txt
@@ -0,0 +1,319 @@
+# Acquire additional files in 'update' operations
+
+The download and verification of data from multiple sources in different
+compression formats, with partial downloads and patches is an involved
+process which is hard to implement correctly and securely.
+
+APT front-ends share the code and binaries to make this happen in libapt
+with the Acquire system, supported by helpers shipped in the apt package
+itself and additional transports in individual packages like
+apt-transport-https.
+
+For its own operation libapt needs or can make use of Packages, Sources
+and Translation-* files, which it will acquire by default, but
+a repository might contain more data files (e.g. Contents) a front-end
+(e.g. apt-file) might want to use and would therefore need to be
+downloaded as well.
+
+This file describes the configuration scheme such a front-end can use to
+instruct the Acquire system to download those additional files.
+
+# The Configuration Stanza
+
+The Acquire system uses the same configuration settings to implement the
+files it downloads by default. These settings are the default, but if
+they would be written in a configuration file the configuration
+instructing the Acquire system to download the Packages files would look
+like this (see also apt.conf(5) manpage for configuration file syntax):
+
+ Acquire::IndexTargets::deb::Packages {
+ MetaKey "$(COMPONENT)/binary-$(ARCHITECTURE)/Packages";
+ ShortDescription "Packages";
+ Description "$(RELEASE)/$(COMPONENT) $(ARCHITECTURE) Packages";
+
+ flatMetaKey "Packages";
+ flatDescription "$(RELEASE) Packages";
+
+ Optional "no";
+ };
+
+All files which should be downloaded (nicknamed 'Targets') are mentioned
+below the Acquire::IndexTargets scope. 'deb' is here the type of the
+sources.list entry the file should be acquired for. The only other
+supported value is hence 'deb-src'. Beware: You can't specify multiple
+types here and you can't download the same (evaluated) MetaKey from
+multiple types!
+
+After the type you can pick any valid and unique string which preferable
+refers to the file it downloads (In the example we picked 'Packages').
+This string is used as identifier (if not explicitly set otherwise) for
+the target class and accessible as 'Identifier' and 'Created-By' e.g.
+in the "apt-get indextargets" output as detailed below. The identifier
+is also used to allow user to enable/disable targets per sources.list
+entry.
+
+All targets have three main properties you can define:
+* MetaKey: The identifier of the file to be downloaded as used in the
+ Release file. It is also the relative location of the file from the
+ Release file. You can neither download from a different server
+ entirely (absolute URI) nor access directories above the Release file
+ (e.g. "../../").
+* ShortDescription: Very short string intended to be displayed to the
+ user e.g. while reporting progress. apt will e.g. use this string in
+ the last line to indicate progress of e.g. the download of a specific
+ item.
+* Description: A preferable human understandable and readable identifier
+ of which file is acquired exactly. Mainly used for progress reporting
+ and error messages. apt will e.g. use this string in the Get/Hit/Err
+ progress lines.
+ An identifier of the site accessed as seen in the sources.list (e.g.
+ "http://example.org/debian" or "file:/path/to/a/repository") is
+ automatically prefixed for this property.
+
+
+Additional optional properties:
+* Identifier: The default value is the unique string identifying this
+ file (in the example above it was 'Packages') also accessible as
+ Created-By. The difference is that using this property multiple files
+ can be subsumed under one identifier e.g. if you configure multiple
+ possible locations for the files (with Fallback-Of), but the front-end
+ doesn't need to handle files from the different locations differently.
+* DefaultEnabled: The default value is 'yes' which means that apt will
+ try to acquire this target from all sources. If set to 'no' the user
+ has to explicitly enable this target in the sources.list file with the
+ Targets option(s) – or override this value in a config file.
+* Optional: The default value is 'yes' and should be kept at this value.
+ If enabled the acquire system will skip the download if the file isn't
+ mentioned in the Release file. Otherwise this is treated as a hard
+ error and the update process fails. Note that failures while
+ downloading (e.g. 404 or hash verification errors) are failures,
+ regardless of this setting.
+* KeepCompressed: The default is the value of Acquire::GzipIndexes,
+ which defaults to false. If true, the acquire system will keep the
+ file compressed on disk rather than extract it. If your front-end can't
+ deal with compressed files transparently you have to explicitly set
+ this option to false to avoid problems with users setting the option
+ globally. On the other hand, if you set it to true or don't set it you
+ have to ensure your front-end can deal with all compressed fileformats
+ supported by apt (libapt users can e.g. use FileFd, others can use
+ the cat-file command of /usr/lib/apt/apt-helper).
+* Fallback-Of: Is by default not set. If it is set and specifies another
+ target name (see Created-By) which was found in the Release file the
+ download of this target will be skipped. This can be used to implement
+ fallback(chain)s to allow transitions like the rename of target files.
+ The behavior if cycles are formed with Fallback-Of is undefined!
+* flat{MetaKey,Description}: APT supports two types of repositories:
+ dists-style repositories which are the default and by far the most
+ common which are named after the fact that the files are in an
+ elaborated directory structure. In contrast a flat-style repository
+ lumps all files together in one directory. Support for these flat
+ repositories exists mainly for legacy purposes only. It is therefore
+ recommend to not set these values.
+
+
+The acquire system will automatically choose to download a compressed
+file if it is available and uncompress it for you, just as it will also
+use PDiff patching if provided by the repository and enabled by the
+user. You only have to ensure that the Release file contains the
+information about the compressed files/PDiffs to make this happen.
+*NO* properties have to be set to enable this!
+
+
+More properties exist, but these should *NOT* be set by front-ends
+requesting files. They exist for internal and end-user usage only.
+Some of these are – which are documented here only to ensure that they
+aren't accidentally used by front-ends:
+* PDiffs: controls if apt will try to use PDiffs for this target.
+ Defaults to the value of Acquire::PDiffs which is true by default.
+ Can be overridden per-source by the sources.list option of the same
+ name. See the documentation for both of these for details.
+* By-Hash: controls if apt will try to use an URI constructed from
+ a hashsum of the file to download. See the documentation for config
+ option Acquire::By-Hash and sources.list option By-Hash for details.
+* CompressionTypes: The default value is a space separated list of
+ compression types supported by apt (see Acquire::CompressionTypes).
+ You can set this option to prevent apt from downloading a compression
+ type a front-end can't open transparently. This should always be
+ a temporary workaround through and a bug should be reported against
+ the front-end in question.
+* KeepCompressedAs: The default value is a space separated list of
+ compression types supported by apt (see previous option) which is
+ sorted by the cost-value of the compression in ascending order,
+ except that cost=0 "compressions" (like uncompressed) are listed last.
+
+
+# More examples
+
+The stanzas for Translation-* files as well as for Sources files would
+look like this:
+
+Acquire::IndexTargets {
+ deb::Translations {
+ MetaKey "$(COMPONENT)/i18n/Translation-$(LANGUAGE)";
+ ShortDescription "Translation-$(LANGUAGE)";
+ Description "$(RELEASE)/$(COMPONENT) Translation-$(LANGUAGE)";
+
+ flatMetaKey "$(LANGUAGE)";
+ flatDescription "$(RELEASE) Translation-$(LANGUAGE)";
+ };
+
+ deb-src::Sources {
+ MetaKey "$(COMPONENT)/source/Sources";
+ ShortDescription "Sources";
+ Description "$(RELEASE)/$(COMPONENT) Sources";
+
+ flatMetaKey "Sources";
+ flatDescription "$(RELEASE) Sources";
+
+ Optional "no";
+ };
+};
+
+# Substitution variables
+
+As seen in the examples, properties can contain placeholders filled in
+by the acquire system. The following variables are known; note that
+unknown variables have no default value nor are they touched: They are
+printed as-is.
+
+* $(RELEASE): This is usually an archive- or codename, e.g. "stable" or
+ "stretch". Note that flat-style repositories do not have an archive-
+ or codename per-se, so the value might very well be just "/" or so.
+* $(COMPONENT): as given in the sources.list, e.g. "main", "non-free" or
+ "universe". Note that flat-style repositories again do not really
+ have a meaningful value here.
+* $(LANGUAGE): Values are all entries (expect "none") of configuration
+ option Acquire::Languages, e.g. "en", "de" or "de_AT".
+* $(ARCHITECTURE): Values are all entries of configuration option
+ APT::Architectures (potentially modified by sources.list options),
+ e.g. "amd64", "i386" or "armel" for the 'deb' type. In type 'deb-src'
+ this variable has the value "source".
+* $(NATIVE_ARCHITECTURE): The architecture apt treats as the native
+ architecture for this system configured as APT::Architecture
+ defaulting to the architecture apt itself was built for.
+
+Note that while more variables might exist in the implementation, these
+are to be considered undefined and their usage strongly discouraged. If
+you have a need for other variables contact us.
+
+# Accessing files
+
+Do NOT hardcode specific file locations, names or compression types in
+your application! You will notice that the configuration options give
+you no choice over where the downloaded files will be stored. This is by
+design so multiple applications can download and use the same file
+rather than each and every one of them potentially downloads and uses
+its own copy somewhere on disk.
+
+"apt-get indextargets" can be used to get the location as well as other
+information about all files downloaded (aka: you will see Packages,
+Sources and Translation-* files here as well). Provide a line of the
+default output format as parameter to filter out all entries which do
+not have such a line. With --format, you can further more define your
+own output style. The variables are what you see in the output, just all
+uppercase and wrapped in $(), as in the configuration file.
+
+To get all the filenames of all Translation-en files you can e.g. call:
+ apt-get indextargets --format '$(FILENAME)' "Identifier: Translations" "Language: en"
+
+The line-based filtering and the formatting is rather crude and feature-
+less by design: The default format is Debian's standard format deb822
+(in particular: Field names are case-insensitive and the order of fields
+in the stanza is undefined), so instead of apt reimplementing powerful
+filters and formatting for this command, it is recommend to use piping
+and dedicated tools like 'grep-dctrl' if you need more than the basics
+provided.
+
+Accessing this information via libapt is done by reading the
+sources.lists (pkgSourceList), iterating over the metaIndex objects this
+creates and calling GetIndexTargets() on them. See the source code of
+"apt-get indextargets" for a complete example.
+
+Note that by default targets are not listed if they weren't downloaded.
+If you want to see all targets, you can use the --no-release-info, which
+also removes the Codename, Suite, Version, Origin, Label and Trusted
+fields from the output as these also display data which needs to be
+downloaded first and could hence be inaccurate [on the pro-side: This
+mode is faster as it doesn't require a valid binary cache to operate].
+The most notable difference perhaps is in the Filename field through: By
+default it indicates an existing file, potentially compressed (Hint:
+libapt users can use FileFd to open compressed files transparently). In
+the --no-release-info mode the indicated file doesn't need to exist and
+it will always refer to an uncompressed file, even if the index would be
+(or is) stored compressed.
+
+Remarks on fields only available in (default) --release-info mode:
+* Trusted: Denotes with a 'yes' or 'no' if the data in this file is
+ authenticated by a trust chain rooted in a trusted gpg key. You should
+ be careful with untrusted data and warn the user if you use it.
+* Codename, Suite, Version, Origin and Label are fields from the Release
+ file, are only present if they are present in the Release file and
+ contain the same data.
+
+Remarks on other available fields:
+* MetaKey, ShortDesc, Description, Site, Release: as defined
+ by the configuration and described further above.
+* Identifier: Defaults to the value of Created-By, but can be set
+ explicitly in the configuration (see above). Prefer this field over
+ Created-By to subsume multiple file(location)s (see Fallback-Of).
+* Created-By: configuration entity responsible for this target
+* Target-Of: type of the sources.list entry
+* URI, Repo-URI: avoid using. Contains potentially username/password.
+ Prefer 'Site', especially for display.
+* Optional, DefaultEnabled, KeepCompressed: Decode the options of the
+ same name from the configuration.
+* Language, Architecture, Component: as defined further above, but with
+ the catch that they might be missing if they don't effect the target
+ (aka: They weren't used while evaluating the MetaKey template).
+
+Again, additional fields might be visible in certain implementations,
+but you should avoid using them and instead talk to us about a portable
+implementation.
+
+# Multiple applications requiring the same files
+
+It is highly encouraged that applications talk to each other and to us
+about which files they require. It is usually best to have a common
+package ship the configuration needed to get the files, but specific
+needs might require specific solutions. Again: talk to us.
+
+Bad things will happen if multiple front-ends request the same file(s)
+via different targets, which is another reason why coordination is very
+important!
+
+# Acquiring files not mentioned in the Release file
+
+You can't. This is by design as these files couldn't be verified to not
+be modified in transit, corrupted by the download process or simple if
+they are present at all on the server, which would require apt to probe
+for them. APT did this in the past for legacy reasons, we do not intend
+to go back to these dark times.
+
+This is also why you can't request files from a different server. It
+would have the additional problem that this server might not even be
+accessible (e.g. proxy settings) or that local sources (file:/, cdrom:/)
+start requesting online files…
+
+In other words: We would be opening Pandora's box.
+
+# Acquiring files to a specific location on disk
+
+You can't by design to avoid multiple front-ends requesting the same file
+to be downloaded to multiple different places on (different) disks
+(among other reasons). See the next point for a solution if you really
+have to force a specific location by creating symlinks.
+
+# Post processing the acquired files
+
+You can't modify the files apt has downloaded as apt keeps state with
+e.g. the modification times of the files and advanced features like
+PDiffs break.
+
+You can however install an APT::Update::Post-Invoke{-Success,} hook
+script and use them to copy (modified) files to a different location.
+Use 'apt-get indextargets' (or similar) to get the filenames – do not
+look into /var/lib/apt/lists directly!
+
+Please avoid time consuming calculations in the scripts and instead just
+trigger a background task as there is little to no feedback for the user
+while hook scripts run.
diff --git a/doc/apt-cache.8.xml b/doc/apt-cache.8.xml
new file mode 100644
index 000000000..5726e00f2
--- /dev/null
+++ b/doc/apt-cache.8.xml
@@ -0,0 +1,392 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<refentry>
+
+ <refentryinfo>
+ &apt-author.jgunthorpe;
+ &apt-author.team;
+ &apt-email;
+ &apt-product;
+ <!-- The last update date -->
+ <date>2016-11-25T00:00:00Z</date>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>apt-cache</refentrytitle>
+ <manvolnum>8</manvolnum>
+ <refmiscinfo class="manual">APT</refmiscinfo>
+ </refmeta>
+
+ <!-- Man page title -->
+ <refnamediv>
+ <refname>apt-cache</refname>
+ <refpurpose>query the APT cache</refpurpose>
+ </refnamediv>
+
+ &synopsis-command-apt-cache;
+
+ <refsect1><title>Description</title>
+ <para>
+ <command>apt-cache</command> performs a variety of operations on APT's
+ package cache. <command>apt-cache</command> does not manipulate the
+ state of the system but does provide operations to search and generate
+ interesting output from the package metadata. The metadata is acquired
+ and updated via the 'update' command of e.g. <command>apt-get</command>,
+ so that it can be outdated if the last update is too long ago, but in
+ exchange <command>apt-cache</command> works independently of the
+ availability of the configured sources (e.g. offline).
+ </para>
+
+ <para>Unless the <option>-h</option>, or <option>--help</option> option is given, one of the
+ commands below must be present.</para>
+
+ <variablelist>
+ <varlistentry><term><option>gencaches</option></term>
+ <listitem><para><literal>gencaches</literal> creates APT's package cache. This is done
+ implicitly by all commands needing this cache if it is missing or outdated.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>showpkg</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
+ <listitem><para><literal>showpkg</literal> displays information about the packages listed on the
+ command line. Remaining arguments are package names. The available
+ versions and reverse dependencies of each package listed are listed, as
+ well as forward dependencies for each version. Forward (normal)
+ dependencies are those packages upon which the package in question
+ depends; reverse dependencies are those packages that depend upon the
+ package in question. Thus, forward dependencies must be satisfied for a
+ package, but reverse dependencies need not be.
+ For instance, <command>apt-cache showpkg libreadline2</command> would produce
+ output similar to the following:</para>
+
+<informalexample><programlisting>
+Package: libreadline2
+Versions: 2.1-12(/var/state/apt/lists/foo_Packages),
+Reverse Depends:
+ libreadlineg2,libreadline2
+ libreadline2-altdev,libreadline2
+Dependencies:
+2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))
+Provides:
+2.1-12 -
+Reverse Provides:
+</programlisting></informalexample>
+
+ <para>Thus it may be seen that libreadline2, version 2.1-12, depends on
+ libc5 and ncurses3.0 which must be installed for libreadline2 to work.
+ In turn, libreadlineg2 and libreadline2-altdev depend on libreadline2. If
+ libreadline2 is installed, libc5 and ncurses3.0 (and ldso) must also be
+ installed; libreadlineg2 and libreadline2-altdev do not have to be
+ installed. For the specific meaning of the remainder of the output it
+ is best to consult the apt source code.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>stats</option></term><listitem><para><literal>stats</literal> displays some statistics about the cache.
+ No further arguments are expected. Statistics reported are:
+ <itemizedlist>
+ <listitem><para><literal>Total package names</literal> is the number of package names found
+ in the cache.</para>
+ </listitem>
+
+ <listitem><para><literal>Normal packages</literal> is the number of regular, ordinary package
+ names; these are packages that bear a one-to-one correspondence between
+ their names and the names used by other packages for them in
+ dependencies. The majority of packages fall into this category.</para>
+ </listitem>
+
+ <listitem><para><literal>Pure virtual packages</literal> is the number of packages that exist
+ only as a virtual package name; that is, packages only "provide" the
+ virtual package name, and no package actually uses the name. For
+ instance, "mail-transport-agent" in the Debian system is a
+ pure virtual package; several packages provide "mail-transport-agent",
+ but there is no package named "mail-transport-agent".</para>
+ </listitem>
+
+ <listitem><para><literal>Single virtual packages</literal> is the number of packages with only
+ one package providing a particular virtual package. For example, in the
+ Debian system, "X11-text-viewer" is a virtual package, but
+ only one package, xless, provides "X11-text-viewer".</para>
+ </listitem>
+
+ <listitem><para><literal>Mixed virtual packages</literal> is the number of packages that either
+ provide a particular virtual package or have the virtual package name
+ as the package name. For instance, in the Debian system,
+ "debconf" is both an actual package, and provided by the debconf-tiny
+ package.</para>
+ </listitem>
+
+ <listitem><para><literal>Missing</literal> is the number of package names that were referenced in
+ a dependency but were not provided by any package. Missing packages may
+ be an evidence if a full distribution is not accessed, or if a package
+ (real or virtual) has been dropped from the distribution. Usually they
+ are referenced from Conflicts or Breaks statements.</para>
+ </listitem>
+
+ <listitem><para><literal>Total distinct</literal> versions is the number of package versions
+ found in the cache. If more than one distribution is being accessed
+ (for instance, "stable" and "unstable"), this value
+ can be considerably larger than the number of total package names.</para>
+ </listitem>
+
+ <listitem><para><literal>Total dependencies</literal> is the number of dependency relationships
+ claimed by all of the packages in the cache.</para>
+ </listitem>
+ </itemizedlist>
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>showsrc</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
+ <listitem><para><literal>showsrc</literal> displays all the
+ source package records that match the given package names. All
+ versions are shown, as well as all records that declare the name
+ to be a binary package. Use <option>--only-source</option> to
+ display only source package names.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>dump</option></term>
+ <listitem><para><literal>dump</literal> shows a short listing of every package in the cache. It is
+ primarily for debugging.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>dumpavail</option></term>
+ <listitem><para><literal>dumpavail</literal> prints out an available list to stdout. This is
+ suitable for use with &dpkg; and is used by the &dselect; method.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>unmet</option></term>
+ <listitem><para><literal>unmet</literal> displays a summary of all unmet dependencies in the
+ package cache.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>show</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
+ <listitem><para><literal>show</literal> performs a function similar to
+ <command>dpkg --print-avail</command>; it displays the package records for the
+ named packages.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>search</option> <option><replaceable>&synopsis-regex;</replaceable>…</option></term>
+ <listitem><para><literal>search</literal> performs a full text search on all available package
+ lists for the POSIX regex pattern given, see &regex;.
+ It searches the package names and the
+ descriptions for an occurrence of the regular expression and prints out
+ the package name and the short description, including virtual package
+ names.
+ If <option>--full</option> is given
+ then output identical to <literal>show</literal> is produced for each matched
+ package, and if <option>--names-only</option> is given then the long description
+ is not searched, only the package name and provided packages are.</para>
+ <para>
+ Separate arguments can be used to specify multiple search patterns that
+ are and'ed together.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>depends</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
+ <listitem><para><literal>depends</literal> shows a listing of each dependency a package has
+ and all the possible other packages that can fulfill that dependency.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>rdepends</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
+ <listitem><para><literal>rdepends</literal> shows a listing of each reverse dependency a
+ package has.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>pkgnames</option> <optional><replaceable>&synopsis-prefix;</replaceable></optional></term>
+ <listitem><para>This command prints the name of each package APT knows. The optional
+ argument is a prefix match to filter the name list. The output is suitable
+ for use in a shell tab complete function and the output is generated
+ extremely quickly. This command is best used with the
+ <option>--generate</option> option.</para>
+ <para>Note that a package which APT knows of is not necessarily available to download,
+ installable or installed, e.g. virtual packages are also listed in the generated list.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>dotty</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
+ <listitem><para><literal>dotty</literal> takes a list of packages on the command line and
+ generates output suitable for use by dotty from the
+ <ulink url="http://www.research.att.com/sw/tools/graphviz/">GraphViz</ulink>
+ package. The result will be a set of nodes and edges representing the
+ relationships between the packages. By default the given packages will
+ trace out all dependent packages; this can produce a very large graph.
+ To limit the output to only the packages listed on the command line,
+ set the <literal>APT::Cache::GivenOnly</literal> option.</para>
+
+ <para>The resulting nodes will have several shapes; normal packages are boxes,
+ pure virtual packages are triangles, mixed virtual packages are diamonds,
+ missing packages are hexagons. Orange boxes mean recursion was stopped
+ (leaf packages), blue lines are pre-depends, green lines are conflicts.</para>
+
+ <para>Caution, dotty cannot graph larger sets of packages.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>xvcg</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
+ <listitem><para>The same as <literal>dotty</literal>, only for xvcg from the
+ <ulink url="http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html">VCG tool</ulink>.
+ </para></listitem></varlistentry>
+
+ <varlistentry><term><option>policy</option> <optional><replaceable>&synopsis-pkg;</replaceable>…</optional></term>
+ <listitem><para><literal>policy</literal> is meant to help debug issues relating to the
+ preferences file. With no arguments it will print out the
+ priorities of each source. Otherwise it prints out detailed information
+ about the priority selection of the named package.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>madison</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
+ <listitem><para><literal>apt-cache</literal>'s <literal>madison</literal> command attempts to mimic
+ the output format and a subset of the functionality of the Debian
+ archive management tool, <literal>madison</literal>. It displays
+ available versions of a package in a tabular format. Unlike the
+ original <literal>madison</literal>, it can only display information for
+ the architecture for which APT has retrieved package lists
+ (<literal>APT::Architecture</literal>).</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>options</title>
+ &apt-cmdblurb;
+
+ <variablelist>
+ <varlistentry><term><option>-p</option></term><term><option>--pkg-cache</option></term>
+ <listitem><para>Select the file to store the package cache. The package cache is the
+ primary cache used by all operations.
+ Configuration Item: <literal>Dir::Cache::pkgcache</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-s</option></term><term><option>--src-cache</option></term>
+ <listitem><para>Select the file to store the source cache. The source is used only by
+ <literal>gencaches</literal> and it stores a parsed version of the package
+ information from remote sources. When building the package cache the
+ source cache is used to avoid reparsing all of the package files.
+ Configuration Item: <literal>Dir::Cache::srcpkgcache</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-q</option></term><term><option>--quiet</option></term>
+ <listitem><para>Quiet; produces output suitable for logging, omitting progress indicators.
+ More q's will produce more quietness up to a maximum of 2. You can also use
+ <option>-q=#</option> to set the quietness level, overriding the configuration file.
+ Configuration Item: <literal>quiet</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-i</option></term><term><option>--important</option></term>
+ <listitem><para>Print only important dependencies; for use with <literal>unmet</literal>
+ and <literal>depends</literal>. Causes only Depends and
+ Pre-Depends relations to be printed.
+ Configuration Item: <literal>APT::Cache::Important</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--no-pre-depends</option></term>
+ <term><option>--no-depends</option></term>
+ <term><option>--no-recommends</option></term>
+ <term><option>--no-suggests</option></term>
+ <term><option>--no-conflicts</option></term>
+ <term><option>--no-breaks</option></term>
+ <term><option>--no-replaces</option></term>
+ <term><option>--no-enhances</option></term>
+ <listitem><para>Per default the <command>depends</command> and
+ <command>rdepends</command> print all dependencies. This can be tweaked with
+ these flags which will omit the specified dependency type.
+ Configuration Item: <literal>APT::Cache::Show<replaceable>DependencyType</replaceable></literal>
+ e.g. <literal>APT::Cache::ShowRecommends</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--implicit</option></term>
+ <listitem><para>Per default <command>depends</command> and <command>rdepends</command>
+ print only dependencies explicitly expressed in the metadata. With this flag
+ it will also show dependencies implicitly added based on the encountered data.
+ A <literal>Conflicts: foo</literal> e.g. expresses implicitly that this package
+ also conflicts with the package foo from any other architecture.
+ Configuration Item: <literal>APT::Cache::ShowImplicit</literal>.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-f</option></term><term><option>--full</option></term>
+ <listitem><para>Print full package records when searching.
+ Configuration Item: <literal>APT::Cache::ShowFull</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-a</option></term><term><option>--all-versions</option></term>
+ <listitem><para>Print full records for all available versions. This is the
+ default; to turn it off, use <option>--no-all-versions</option>.
+ If <option>--no-all-versions</option> is specified, only the candidate version
+ will be displayed (the one which would be selected for installation).
+ This option is only applicable to the <literal>show</literal> command.
+ Configuration Item: <literal>APT::Cache::AllVersions</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-g</option></term><term><option>--generate</option></term>
+ <listitem><para>Perform automatic package cache regeneration, rather than use the cache
+ as it is. This is the default; to turn it off, use <option>--no-generate</option>.
+ Configuration Item: <literal>APT::Cache::Generate</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--names-only</option></term><term><option>-n</option></term>
+ <listitem><para>Only search on the package and provided package names, not the long descriptions.
+ Configuration Item: <literal>APT::Cache::NamesOnly</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--all-names</option></term>
+ <listitem><para>Make <literal>pkgnames</literal> print all names, including virtual packages
+ and missing dependencies.
+ Configuration Item: <literal>APT::Cache::AllNames</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--recurse</option></term>
+ <listitem><para>Make <literal>depends</literal> and <literal>rdepends</literal> recursive so
+ that all packages mentioned are printed once.
+ Configuration Item: <literal>APT::Cache::RecurseDepends</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--installed</option></term>
+ <listitem><para>
+ Limit the output of <literal>depends</literal> and <literal>rdepends</literal> to
+ packages which are currently installed.
+ Configuration Item: <literal>APT::Cache::Installed</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--with-source</option> <option>&synopsis-param-filename;</option></term>
+ <listitem><para>
+ Adds the given file as a source for metadata. Can be repeated to add multiple files.
+ Supported are currently <literal>*.deb</literal>, <literal>*.dsc</literal>,
+ <literal>*.changes</literal>, <literal>Sources</literal> and
+ <literal>Packages</literal> files as well as source package directories.
+ Files are matched based on their name only, not their content!</para>
+ <para><literal>Sources</literal> and <literal>Packages</literal> can be compressed in any
+ format apt supports as long as they have the correct extension. If you need to store
+ multiple of these files in one directory you can prefix a name of your choice with the
+ last character being an underscore ("<literal>_</literal>"). Example: my.example_Packages.xz</para>
+ <para>Note that these sources are treated as trusted (see &apt-secure;).
+ Configuration Item: <literal>APT::Sources::With</literal>.</para></listitem>
+ </varlistentry>
+
+ &apt-commonoptions;
+
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>Files</title>
+ <variablelist>
+ &file-sourceslist;
+ &file-statelists;
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>See Also</title>
+ <para>&apt-conf;, &sources-list;, &apt-get;
+ </para>
+ </refsect1>
+
+ <refsect1><title>Diagnostics</title>
+ <para><command>apt-cache</command> returns zero on normal operation, decimal 100 on error.
+ </para>
+ </refsect1>
+
+ &manbugs;
+
+</refentry>
diff --git a/doc/apt-cdrom.8.xml b/doc/apt-cdrom.8.xml
new file mode 100644
index 000000000..8f883c1a3
--- /dev/null
+++ b/doc/apt-cdrom.8.xml
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<refentry>
+
+ <refentryinfo>
+ &apt-author.jgunthorpe;
+ &apt-author.team;
+ &apt-email;
+ &apt-product;
+ <date>2013-11-30T00:00:00Z</date>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>apt-cdrom</refentrytitle>
+ <manvolnum>8</manvolnum>
+ <refmiscinfo class="manual">APT</refmiscinfo>
+ </refmeta>
+
+ <!-- Man page title -->
+ <refnamediv>
+ <refname>apt-cdrom</refname>
+ <refpurpose>APT CD-ROM management utility</refpurpose>
+ </refnamediv>
+
+ &synopsis-command-apt-cdrom;
+
+ <refsect1><title>Description</title>
+ <para><command>apt-cdrom</command> is used to add a new CD-ROM to APT's list
+ of available sources. <command>apt-cdrom</command> takes care of
+ determining the structure of
+ the disc as well as correcting for several possible mis-burns and
+ verifying the index files.
+ </para>
+
+ <para>It is necessary to use <command>apt-cdrom</command> to add CDs to the
+ APT system;
+ it cannot be done by hand. Furthermore each disc in a multi-CD set must be
+ inserted and scanned separately to account for possible mis-burns.
+ </para>
+
+ <para>Unless the <option>-h</option>, or <option>--help</option> option is
+ given, one of the commands below must be present.</para>
+
+ <variablelist>
+ <varlistentry><term><option>add</option></term>
+ <listitem><para><literal>add</literal> is used to add a new disc to the
+ source list. It will unmount the
+ CD-ROM device, prompt for a disc to be inserted and then proceed to
+ scan it and copy the index files. If the disc does not have a proper
+ <filename>.disk</filename> directory you will be prompted for a descriptive
+ title.
+ </para>
+
+ <para>APT uses a CD-ROM ID to track which disc is currently in the drive and
+ maintains a database of these IDs in
+ <filename>&statedir;/cdroms.list</filename>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>ident</option></term>
+ <listitem><para>A debugging tool to report the identity of the current
+ disc as well as the stored file name
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>Options</title>
+ &apt-cmdblurb;
+
+ <variablelist>
+ <varlistentry><term><option>--no-auto-detect</option></term><term><option>--cdrom</option></term>
+ <listitem><para>Do not try to auto-detect the CD-ROM path. Usually combined with the <option>--cdrom</option> option.
+ Configuration Item: <literal>Acquire::cdrom::AutoDetect</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry><term><option>-d</option></term><term><option>--cdrom</option></term>
+ <listitem><para>Mount point; specify the location to mount the CD-ROM. This
+ mount point must be listed in <filename>/etc/fstab</filename> and
+ properly configured.
+ Configuration Item: <literal>Acquire::cdrom::mount</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-r</option></term><term><option>--rename</option></term>
+ <listitem><para>Rename a disc; change the label of a disc or override the
+ disc's given label. This option will cause <command>apt-cdrom</command> to
+ prompt for a new label.
+ Configuration Item: <literal>APT::CDROM::Rename</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-m</option></term><term><option>--no-mount</option></term>
+ <listitem><para>No mounting; prevent <command>apt-cdrom</command> from
+ mounting and unmounting the mount point.
+ Configuration Item: <literal>APT::CDROM::NoMount</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-f</option></term><term><option>--fast</option></term>
+ <listitem><para>Fast Copy; Assume the package files are valid and do not
+ check every package. This option should be used only if
+ <command>apt-cdrom</command> has been run on this disc before and did not
+ detect any errors.
+ Configuration Item: <literal>APT::CDROM::Fast</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-a</option></term><term><option>--thorough</option></term>
+ <listitem><para>Thorough Package Scan; This option may be needed with some
+ old Debian 1.1/1.2 discs that have Package files in strange places. It
+ takes much longer to scan the CD but will pick them all up.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-n</option></term>
+ <term><option>--just-print</option></term>
+ <term><option>--recon</option></term>
+ <term><option>--no-act</option></term>
+ <listitem><para>No Changes; Do not change the &sources-list; file and do
+ not write index files. Everything is still checked however.
+ Configuration Item: <literal>APT::CDROM::NoAct</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ &apt-commonoptions;
+
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>See Also</title>
+ <para>&apt-conf;, &apt-get;, &sources-list;
+ </para>
+ </refsect1>
+
+ <refsect1><title>Diagnostics</title>
+ <para><command>apt-cdrom</command> returns zero on normal operation, decimal 100 on error.
+ </para>
+ </refsect1>
+
+ &manbugs;
+
+</refentry>
+
diff --git a/doc/apt-config.8.xml b/doc/apt-config.8.xml
new file mode 100644
index 000000000..cf2e87c62
--- /dev/null
+++ b/doc/apt-config.8.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<refentry>
+
+ <refentryinfo>
+ &apt-author.jgunthorpe;
+ &apt-author.team;
+ &apt-email;
+ &apt-product;
+ <!-- The last update date -->
+ <date>2013-11-30T00:00:00Z</date>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>apt-config</refentrytitle>
+ <manvolnum>8</manvolnum>
+ <refmiscinfo class="manual">APT</refmiscinfo>
+ </refmeta>
+
+ <!-- Man page title -->
+ <refnamediv>
+ <refname>apt-config</refname>
+ <refpurpose>APT Configuration Query program</refpurpose>
+ </refnamediv>
+
+ &synopsis-command-apt-config;
+
+ <refsect1><title>Description</title>
+ <para><command>apt-config</command> is an internal program used by various
+ portions of the APT suite to provide consistent configurability. It accesses
+ the main configuration file <filename>/etc/apt/apt.conf</filename> in a
+ manner that is easy to use for scripted applications.</para>
+
+ <para>Unless the <option>-h</option>, or <option>--help</option> option is
+ given, one of the commands below must be present.
+ </para>
+
+ <variablelist>
+ <varlistentry><term><option>shell</option></term>
+ <listitem><para>
+ shell is used to access the configuration information from a shell
+ script. It is given pairs of arguments, the first being a shell
+ variable and the second the configuration value to query. As output
+ it lists shell assignment commands for each value present.
+ In a shell script it should be used as follows:
+ </para>
+
+<informalexample><programlisting>
+OPTS="-f"
+RES=`apt-config shell OPTS MyApp::options`
+eval $RES
+</programlisting></informalexample>
+
+ <para>This will set the shell environment variable $OPTS to the value of
+ MyApp::options with a default of <option>-f</option>.</para>
+
+
+ <para>The configuration item may be postfixed with a /[fdbi]. f returns
+ file names, d returns directories, b returns true or false and i returns
+ an integer. Each of the returns is normalized and verified
+ internally.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>dump</option></term>
+ <listitem><para>
+ Just show the contents of the configuration space.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>options</title>
+ &apt-cmdblurb;
+
+ <variablelist>
+ <varlistentry>
+ <term><option>--empty</option></term>
+ <listitem><para>Include options which have an empty value. This is the default, so
+ use --no-empty to remove them from the output.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--format '<replaceable>&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n</replaceable>'</option></term>
+ <listitem><para>Defines the output of each config option. &percnt;t will be replaced with its individual name,
+ &percnt;f with its full hierarchical name and &percnt;v with its value.
+ Use uppercase letters and special characters in the value will be encoded to ensure that
+ it can e.g. be safely used in a quoted-string as defined by RFC822. Additionally
+ &percnt;n will be replaced by a newline, and &percnt;N by a tab. A &percnt; can be
+ printed by using &percnt;&percnt;.</para></listitem>
+ </varlistentry>
+
+ &apt-commonoptions;
+
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>See Also</title>
+ <para>&apt-conf;
+ </para>
+ </refsect1>
+
+ <refsect1><title>Diagnostics</title>
+ <para><command>apt-config</command> returns zero on normal operation, decimal 100 on error.
+ </para>
+ </refsect1>
+
+ &manbugs;
+
+</refentry>
+
diff --git a/doc/apt-extracttemplates.1.xml b/doc/apt-extracttemplates.1.xml
new file mode 100644
index 000000000..cb1332de0
--- /dev/null
+++ b/doc/apt-extracttemplates.1.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<refentry>
+
+ <refentryinfo>
+ &apt-author.jgunthorpe;
+ &apt-author.team;
+ &apt-email;
+ &apt-product;
+ <!-- The last update date -->
+ <date>2014-03-27T00:00:00Z</date>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>apt-extracttemplates</refentrytitle>
+ <manvolnum>1</manvolnum>
+ <refmiscinfo class="manual">APT</refmiscinfo>
+ </refmeta>
+
+ <!-- Man page title -->
+ <refnamediv>
+ <refname>apt-extracttemplates</refname>
+ <refpurpose>Utility to extract <command>debconf</command> config and templates from Debian packages</refpurpose>
+ </refnamediv>
+
+ &synopsis-command-apt-extracttemplates;
+
+ <refsect1><title>Description</title>
+ <para><command>apt-extracttemplates</command> will take one or more Debian package files
+ as input and write out (to a temporary directory) all associated config
+ scripts and template files. For each passed in package that contains
+ config scripts and templates, one line of output will be generated
+ in the format:</para>
+ <para>package version template-file config-script</para>
+ <para>template-file and config-script are written to the temporary directory
+ specified by the <option>-t</option> or <option>--tempdir</option>
+ (<literal>APT::ExtractTemplates::TempDir</literal>) directory,
+ with filenames of the form <filename>package.template.XXXXXX</filename> and
+ <filename>package.config.XXXXXX</filename></para>
+ </refsect1>
+
+ <refsect1><title>options</title>
+ &apt-cmdblurb;
+
+ <variablelist>
+ <varlistentry><term><option>-t</option></term><term><option>--tempdir</option></term>
+ <listitem><para>
+ Temporary directory in which to write extracted <command>debconf</command> template files
+ and config scripts.
+ Configuration Item: <literal>APT::ExtractTemplates::TempDir</literal></para></listitem>
+ </varlistentry>
+
+ &apt-commonoptions;
+
+ </variablelist>
+
+
+ </refsect1>
+
+ <refsect1><title>See Also</title>
+ <para>&apt-conf;</para>
+ </refsect1>
+
+ <refsect1><title>Diagnostics</title>
+ <para><command>apt-extracttemplates</command> returns zero on normal operation, decimal 100 on error.</para>
+ </refsect1>
+
+ &manbugs;
+
+</refentry>
diff --git a/doc/apt-ftparchive.1.xml b/doc/apt-ftparchive.1.xml
new file mode 100644
index 000000000..0a9305132
--- /dev/null
+++ b/doc/apt-ftparchive.1.xml
@@ -0,0 +1,627 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<refentry>
+
+ <refentryinfo>
+ &apt-author.jgunthorpe;
+ &apt-author.team;
+ &apt-email;
+ &apt-product;
+ <!-- The last update date -->
+ <date>2016-11-25T00:00:00Z</date>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>apt-ftparchive</refentrytitle>
+ <manvolnum>1</manvolnum>
+ <refmiscinfo class="manual">APT</refmiscinfo>
+ </refmeta>
+
+ <!-- Man page title -->
+ <refnamediv>
+ <refname>apt-ftparchive</refname>
+ <refpurpose>Utility to generate index files</refpurpose>
+ </refnamediv>
+
+ &synopsis-command-apt-ftparchive;
+
+ <refsect1><title>Description</title>
+ <para><command>apt-ftparchive</command> is the command line tool that generates the index
+ files that APT uses to access a distribution source. The index files should
+ be generated on the origin site based on the content of that site.</para>
+
+ <para><command>apt-ftparchive</command> is a superset of the &dpkg-scanpackages; program,
+ incorporating its entire functionality via the <literal>packages</literal> command.
+ It also contains a contents file generator, <literal>contents</literal>, and an
+ elaborate means to 'script' the generation process for a complete
+ archive.</para>
+
+ <para>Internally <command>apt-ftparchive</command> can make use of binary databases to
+ cache the contents of a .deb file and it does not rely on any external
+ programs aside from &gzip;. When doing a full generate it automatically
+ performs file-change checks and builds the desired compressed output files.</para>
+
+ <para>Unless the <option>-h</option>, or <option>--help</option> option is given,
+ one of the commands below must be present.</para>
+
+ <variablelist>
+ <varlistentry><term><option>packages</option></term>
+ <listitem><para>
+ The packages command generates a package file from a directory tree. It
+ takes the given directory and recursively searches it for .deb files,
+ emitting a package record to stdout for each. This command is
+ approximately equivalent to &dpkg-scanpackages;.</para>
+
+ <para>The option <option>--db</option> can be used to specify a binary caching DB.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>sources</option></term>
+ <listitem><para>
+ The <literal>sources</literal> command generates a source index file from a directory tree.
+ It takes the given directory and recursively searches it for .dsc files,
+ emitting a source record to stdout for each. This command is approximately
+ equivalent to &dpkg-scansources;.</para>
+ <para>
+ If an override file is specified then a source override file will be
+ looked for with an extension of .src. The --source-override option can be
+ used to change the source override file that will be used.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>contents</option></term>
+ <listitem><para>
+ The <literal>contents</literal> command generates a contents file from a directory tree. It
+ takes the given directory and recursively searches it for .deb files,
+ and reads the file list from each file. It then sorts and writes to stdout
+ the list of files matched to packages. Directories are not written to
+ the output. If multiple packages own the same file then each package is
+ separated by a comma in the output.</para>
+ <para>
+ The option <option>--db</option> can be used to specify a binary caching DB.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>release</option></term>
+ <listitem><para>
+ The <literal>release</literal> command generates a Release file from a
+ directory tree. It recursively searches the given directory for
+ uncompressed and compressed <filename>Packages</filename>,
+ <filename>Sources</filename>, <filename>Contents</filename>,
+ <filename>Components</filename> and <filename>icons</filename> files as
+ well as <filename>Release</filename>, <filename>Index</filename> and
+ <filename>md5sum.txt</filename> files by default
+ (<literal>APT::FTPArchive::Release::Default-Patterns</literal>).
+ Additional filename patterns can be added by listing them in
+ <literal>APT::FTPArchive::Release::Patterns</literal>. It then writes to
+ stdout a <filename>Release</filename> file containing (by default) an MD5,
+ SHA1, SHA256 and SHA512 digest for each file.</para>
+ <para>
+ Values for the additional metadata fields in the Release file are
+ taken from the corresponding variables under
+ <literal>APT::FTPArchive::Release</literal>,
+ e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The supported fields
+ are <literal>Origin</literal>, <literal>Label</literal>, <literal>Suite</literal>,
+ <literal>Version</literal>, <literal>Codename</literal>, <literal>Date</literal>,
+ <literal>NotAutomatic</literal>, <literal>ButAutomaticUpgrades</literal>,
+ <literal>Acquire-By-Hash</literal>, <literal>Valid-Until</literal>,
+ <literal>Signed-By</literal>, <literal>Architectures</literal>,
+ <literal>Components</literal> and <literal>Description</literal>.</para></listitem>
+
+ </varlistentry>
+
+ <varlistentry><term><option>generate</option></term>
+ <listitem><para>
+ The <literal>generate</literal> command is designed to be runnable from a cron script and
+ builds indexes according to the given config file. The config language
+ provides a flexible means of specifying which index files are built from
+ which directories, as well as providing a simple means of maintaining the
+ required settings.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>clean</option></term>
+ <listitem><para>
+ The <literal>clean</literal> command tidies the databases used by the given
+ configuration file by removing any records that are no longer necessary.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>The Generate Configuration</title>
+ <para>
+ The <literal>generate</literal> command uses a configuration file to describe the
+ archives that are going to be generated. It follows the typical ISC
+ configuration format as seen in ISC tools like bind 8 and dhcpd.
+ &apt-conf; contains a description of the syntax. Note that the generate
+ configuration is parsed in sectional manner, but &apt-conf; is parsed in a
+ tree manner. This only effects how the scope tag is handled.</para>
+
+ <para>
+ The generate configuration has four separate sections, each described below.</para>
+
+ <refsect2><title><literal>Dir</literal> Section</title>
+ <para>
+ The <literal>Dir</literal> section defines the standard directories needed to
+ locate the files required during the generation process. These
+ directories are prepended certain relative paths defined in later
+ sections to produce a complete an absolute path.</para>
+ <variablelist>
+ <varlistentry><term><option>ArchiveDir</option></term>
+ <listitem><para>
+ Specifies the root of the FTP archive, in a standard
+ Debian configuration this is the directory that contains the
+ <filename>ls-LR</filename> and dist nodes.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>OverrideDir</option></term>
+ <listitem><para>
+ Specifies the location of the override files.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>CacheDir</option></term>
+ <listitem><para>
+ Specifies the location of the cache files.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>FileListDir</option></term>
+ <listitem><para>
+ Specifies the location of the file list files,
+ if the <literal>FileList</literal> setting is used below.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2><title><literal>Default</literal> Section</title>
+ <para>
+ The <literal>Default</literal> section specifies default values, and settings
+ that control the operation of the generator. Other sections may override
+ these defaults with a per-section setting.</para>
+ <variablelist>
+ <varlistentry><term><option>Packages::Compress</option></term>
+ <listitem><para>
+ Sets the default compression schemes to use
+ for the package index files. It is a string that contains a space
+ separated list of at least one of the compressors configured via the
+ <option>APT::Compressor</option> configuration scope.
+ The default for all compression schemes is '. gzip'.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Packages::Extensions</option></term>
+ <listitem><para>
+ Sets the default list of file extensions that are package files.
+ This defaults to '.deb'.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Sources::Compress</option></term>
+ <listitem><para>
+ This is similar to <literal>Packages::Compress</literal>
+ except that it controls the compression for the Sources files.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Sources::Extensions</option></term>
+ <listitem><para>
+ Sets the default list of file extensions that are source files.
+ This defaults to '.dsc'.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Contents::Compress</option></term>
+ <listitem><para>
+ This is similar to <literal>Packages::Compress</literal>
+ except that it controls the compression for the Contents files.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Translation::Compress</option></term>
+ <listitem><para>
+ This is similar to <literal>Packages::Compress</literal>
+ except that it controls the compression for the Translation-en master file.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>DeLinkLimit</option></term>
+ <listitem><para>
+ Specifies the number of kilobytes to delink (and
+ replace with hard links) per run. This is used in conjunction with the
+ per-section <literal>External-Links</literal> setting.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>FileMode</option></term>
+ <listitem><para>
+ Specifies the mode of all created index files. It
+ defaults to 0644. All index files are set to this mode with no regard
+ to the umask.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>LongDescription</option></term>
+ <listitem><para>
+ Specifies whether long descriptions should be included in the <filename>Packages</filename> file or split
+ out into a master <filename>Translation-en</filename> file.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2><title><literal>TreeDefault</literal> Section</title>
+ <para>
+ Sets defaults specific to <literal>Tree</literal> sections. All of these
+ variables are substitution variables and have the strings $(DIST),
+ $(SECTION) and $(ARCH) replaced with their respective values.</para>
+
+ <variablelist>
+ <varlistentry><term><option>MaxContentsChange</option></term>
+ <listitem><para>
+ Sets the number of kilobytes of contents
+ files that are generated each day. The contents files are round-robined
+ so that over several days they will all be rebuilt.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>ContentsAge</option></term>
+ <listitem><para>
+ Controls the number of days a contents file is allowed
+ to be checked without changing. If this limit is passed the mtime of the
+ contents file is updated. This case can occur if the package file is
+ changed in such a way that does not result in a new contents file
+ [override edit for instance]. A hold off is allowed in hopes that new
+ .debs will be installed, requiring a new file anyhow. The default is 10,
+ the units are in days.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Directory</option></term>
+ <listitem><para>
+ Sets the top of the .deb directory tree. Defaults to
+ <filename>$(DIST)/$(SECTION)/binary-$(ARCH)/</filename></para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>SrcDirectory</option></term>
+ <listitem><para>
+ Sets the top of the source package directory tree. Defaults to
+ <filename>$(DIST)/$(SECTION)/source/</filename></para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Packages</option></term>
+ <listitem><para>
+ Sets the output Packages file. Defaults to
+ <filename>$(DIST)/$(SECTION)/binary-$(ARCH)/Packages</filename></para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Sources</option></term>
+ <listitem><para>
+ Sets the output Sources file. Defaults to
+ <filename>$(DIST)/$(SECTION)/source/Sources</filename></para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Translation</option></term>
+ <listitem><para>
+ Sets the output Translation-en master file with the long descriptions if they
+ should be not included in the Packages file. Defaults to
+ <filename>$(DIST)/$(SECTION)/i18n/Translation-en</filename></para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>InternalPrefix</option></term>
+ <listitem><para>
+ Sets the path prefix that causes a symlink to be
+ considered an internal link instead of an external link. Defaults to
+ <filename>$(DIST)/$(SECTION)/</filename></para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Contents</option></term>
+ <listitem><para>
+ Sets the output Contents file. Defaults to
+ <filename>$(DIST)/$(SECTION)/Contents-$(ARCH)</filename>. If this setting causes multiple
+ Packages files to map onto a single Contents file (as is the default)
+ then <command>apt-ftparchive</command> will integrate those package files
+ together automatically.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Contents::Header</option></term>
+ <listitem><para>
+ Sets header file to prepend to the contents output.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>BinCacheDB</option></term>
+ <listitem><para>
+ Sets the binary cache database to use for this
+ section. Multiple sections can share the same database.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>FileList</option></term>
+ <listitem><para>
+ Specifies that instead of walking the directory tree,
+ <command>apt-ftparchive</command> should read the list of files from the given
+ file. Relative files names are prefixed with the archive directory.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>SourceFileList</option></term>
+ <listitem><para>
+ Specifies that instead of walking the directory tree,
+ <command>apt-ftparchive</command> should read the list of files from the given
+ file. Relative files names are prefixed with the archive directory.
+ This is used when processing source indexes.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2><title><literal>Tree</literal> Section</title>
+ <para>
+ The <literal>Tree</literal> section defines a standard Debian file tree which
+ consists of a base directory, then multiple sections in that base
+ directory and finally multiple Architectures in each section. The exact
+ pathing used is defined by the <literal>Directory</literal> substitution variable.</para>
+ <para>
+ The <literal>Tree</literal> section takes a scope tag which sets the
+ <literal>$(DIST)</literal> variable and defines the root of the tree
+ (the path is prefixed by <literal>ArchiveDir</literal>).
+ Typically this is a setting such as <filename>dists/&debian-stable-codename;</filename>.</para>
+ <para>
+ All of the settings defined in the <literal>TreeDefault</literal> section can be
+ used in a <literal>Tree</literal> section as well as three new variables.</para>
+ <para>
+ When processing a <literal>Tree</literal> section <command>apt-ftparchive</command>
+ performs an operation similar to:
+ <programlisting>
+for i in Sections do
+ for j in Architectures do
+ Generate for DIST=scope SECTION=i ARCH=j
+ </programlisting></para>
+
+ <variablelist>
+ <varlistentry><term><option>Sections</option></term>
+ <listitem><para>
+ This is a space separated list of sections which appear
+ under the distribution; typically this is something like
+ <literal>main contrib non-free</literal></para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Architectures</option></term>
+ <listitem><para>
+ This is a space separated list of all the architectures that appear under
+ search section. The special architecture 'source' is used to indicate
+ that this tree has a source archive. The architecture 'all' signals that
+ architecture specific files like <filename>Packages</filename> should not
+ include information about architecture <literal>all</literal> packages in
+ all files as they will be available in a dedicated file.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>LongDescription</option></term>
+ <listitem><para>
+ Specifies whether long descriptions should be included in the <filename>Packages</filename> file or split
+ out into a master <filename>Translation-en</filename> file.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>BinOverride</option></term>
+ <listitem><para>
+ Sets the binary override file. The override file
+ contains section, priority and maintainer address information.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>SrcOverride</option></term>
+ <listitem><para>
+ Sets the source override file. The override file
+ contains section information.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>ExtraOverride</option></term>
+ <listitem><para>
+ Sets the binary extra override file.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>SrcExtraOverride</option></term>
+ <listitem><para>
+ Sets the source extra override file.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2><title><literal>BinDirectory</literal> Section</title>
+ <para>
+ The <literal>bindirectory</literal> section defines a binary directory tree
+ with no special structure. The scope tag specifies the location of
+ the binary directory and the settings are similar to the <literal>Tree</literal>
+ section with no substitution variables or
+ <literal>Section</literal><literal>Architecture</literal> settings.</para>
+ <variablelist>
+ <varlistentry><term><option>Packages</option></term>
+ <listitem><para>
+ Sets the Packages file output.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Sources</option></term>
+ <listitem><para>
+ Sets the Sources file output. At least one of
+ <literal>Packages</literal> or <literal>Sources</literal> is required.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Contents</option></term>
+ <listitem><para>
+ Sets the Contents file output (optional).</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>BinOverride</option></term>
+ <listitem><para>
+ Sets the binary override file.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>SrcOverride</option></term>
+ <listitem><para>
+ Sets the source override file.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>ExtraOverride</option></term>
+ <listitem><para>
+ Sets the binary extra override file.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>SrcExtraOverride</option></term>
+ <listitem><para>
+ Sets the source extra override file.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>BinCacheDB</option></term>
+ <listitem><para>
+ Sets the cache DB.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>PathPrefix</option></term>
+ <listitem><para>
+ Appends a path to all the output paths.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>FileList</option></term><term><option>SourceFileList</option></term>
+ <listitem><para>
+ Specifies the file list file.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+
+ <refsect1><title>The Binary Override File</title>
+ <para>The binary override file is fully compatible with &dpkg-scanpackages;. It
+ contains four fields separated by spaces. The first field is the package name,
+ the second is the priority to force that package to, the third is
+ the section to force that package to and the final field is the maintainer
+ permutation field.</para>
+ <para>The general form of the maintainer field is:
+ <literallayout>old [// oldn]* => new</literallayout>
+ or simply,
+ <literallayout>new</literallayout>
+ The first form allows a double-slash separated list of old email addresses
+ to be specified. If any of those are found then new is substituted for the
+ maintainer field. The second form unconditionally substitutes the
+ maintainer field.</para>
+ </refsect1>
+
+
+ <refsect1><title>The Source Override File</title>
+ <para>
+ The source override file is fully compatible with &dpkg-scansources;. It
+ contains two fields separated by spaces. The first field is the source
+ package name, the second is the section to assign it.</para>
+ </refsect1>
+
+ <refsect1><title>The Extra Override File</title>
+ <para>
+ The extra override file allows any arbitrary tag to be added or replaced
+ in the output. It has three columns, the first is the package, the second is
+ the tag and the remainder of the line is the new value.</para>
+ </refsect1>
+
+ <refsect1><title>options</title>
+ &apt-cmdblurb;
+
+ <variablelist>
+ <varlistentry>
+ <term><option>--md5</option></term>
+ <term><option>--sha1</option></term>
+ <term><option>--sha256</option></term>
+ <term><option>--sha512</option></term>
+ <listitem><para>
+ Generate the given checksum. These options default to on, when turned off the generated
+ index files will not have the checksum fields where possible.
+ Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</replaceable></literal> and
+ <literal>APT::FTPArchive::<replaceable>Index</replaceable>::<replaceable>Checksum</replaceable></literal> where
+ <literal><replaceable>Index</replaceable></literal> can be <literal>Packages</literal>, <literal>Sources</literal> or
+ <literal>Release</literal> and <literal><replaceable>Checksum</replaceable></literal> can be <literal>MD5</literal>,
+ <literal>SHA1</literal>, <literal>SHA256</literal> or <literal>SHA512</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-d</option></term><term><option>--db</option></term>
+ <listitem><para>
+ Use a binary caching DB. This has no effect on the generate command.
+ Configuration Item: <literal>APT::FTPArchive::DB</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-q</option></term><term><option>--quiet</option></term>
+ <listitem><para>
+ Quiet; produces output suitable for logging, omitting progress indicators.
+ More q's will produce more quiet up to a maximum of 2. You can also use
+ <option>-q=#</option> to set the quiet level, overriding the configuration file.
+ Configuration Item: <literal>quiet</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--delink</option></term>
+ <listitem><para>
+ Perform Delinking. If the <literal>External-Links</literal> setting is used then
+ this option actually enables delinking of the files. It defaults to on and
+ can be turned off with <option>--no-delink</option>.
+ Configuration Item: <literal>APT::FTPArchive::DeLinkAct</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--contents</option></term>
+ <listitem><para>
+ Perform contents generation. When this option is set and package indexes
+ are being generated with a cache DB then the file listing will also be
+ extracted and stored in the DB for later use. When using the generate
+ command this option also allows the creation of any Contents files. The
+ default is on.
+ Configuration Item: <literal>APT::FTPArchive::Contents</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-s</option></term><term><option>--source-override</option></term>
+ <listitem><para>
+ Select the source override file to use with the <literal>sources</literal> command.
+ Configuration Item: <literal>APT::FTPArchive::SourceOverride</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--readonly</option></term>
+ <listitem><para>
+ Make the caching databases read only.
+ Configuration Item: <literal>APT::FTPArchive::ReadOnlyDB</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-a</option></term><term><option>--arch</option></term>
+ <listitem><para>Accept in the <literal>packages</literal> and <literal>contents</literal>
+ commands only package files matching <literal>*_arch.deb</literal> or
+ <literal>*_all.deb</literal> instead of all package files in the given path.
+ Configuration Item: <literal>APT::FTPArchive::Architecture</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>APT::FTPArchive::AlwaysStat</option></term>
+ <listitem><para>
+ &apt-ftparchive; caches as much as possible of metadata in a cachedb. If packages
+ are recompiled and/or republished with the same version again, this will lead to problems
+ as the now outdated cached metadata like size and checksums will be used. With this option
+ enabled this will no longer happen as it will be checked if the file was changed.
+ Note that this option is set to "<literal>false</literal>" by default as it is not recommend
+ to upload multiply versions/builds of a package with the same versionnumber, so in theory
+ nobody will have these problems and therefore all these extra checks are useless.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>APT::FTPArchive::LongDescription</option></term>
+ <listitem><para>
+ This configuration option defaults to "<literal>true</literal>" and should only be set to
+ <literal>"false"</literal> if the Archive generated with &apt-ftparchive; also provides
+ <filename>Translation</filename> files. Note that the <filename>Translation-en</filename>
+ master file can only be created in the generate command.
+ </para></listitem>
+ </varlistentry>
+
+ &apt-commonoptions;
+
+ </variablelist>
+ </refsect1>
+
+<refsect1><title>Examples</title>
+
+<para>To create a compressed Packages file for a directory containing
+binary packages (.deb):
+
+<programlisting>
+<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>
+</programlisting></para>
+
+</refsect1>
+
+ <refsect1><title>See Also</title>
+ <para>&apt-conf;</para>
+ </refsect1>
+
+ <refsect1><title>Diagnostics</title>
+ <para><command>apt-ftparchive</command> returns zero on normal operation, decimal 100 on error.</para>
+ </refsect1>
+
+ &manbugs;
+
+</refentry>
diff --git a/doc/apt-get.8.xml b/doc/apt-get.8.xml
new file mode 100644
index 000000000..931a4f313
--- /dev/null
+++ b/doc/apt-get.8.xml
@@ -0,0 +1,618 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<refentry>
+
+ <refentryinfo>
+ &apt-author.jgunthorpe;
+ &apt-author.team;
+ &apt-email;
+ &apt-product;
+ <!-- The last update date -->
+ <date>2017-02-22T00:00:00Z</date>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>apt-get</refentrytitle>
+ <manvolnum>8</manvolnum>
+ <refmiscinfo class="manual">APT</refmiscinfo>
+ </refmeta>
+
+ <!-- Man page title -->
+ <refnamediv>
+ <refname>apt-get</refname>
+ <refpurpose>APT package handling utility -- command-line interface</refpurpose>
+ </refnamediv>
+
+ &synopsis-command-apt-get;
+
+ <refsect1><title>Description</title>
+ <para><command>apt-get</command> is the command-line tool for handling packages, and may be
+ considered the user's "back-end" to other tools using the APT
+ library. Several "front-end" interfaces exist, such as
+ &aptitude;, &synaptic; and &wajig;.</para>
+
+ <para>Unless the <option>-h</option>, or <option>--help</option> option is given, one of the
+ commands below must be present.</para>
+
+ <variablelist>
+ <varlistentry><term><option>update</option></term>
+ <listitem><para><literal>update</literal> is used to resynchronize the package index files from
+ their sources. The indexes of available packages are fetched from the
+ location(s) specified in <filename>/etc/apt/sources.list</filename>.
+ For example, when using a Debian archive, this command retrieves and
+ scans the <filename>Packages.gz</filename> files, so that information about new
+ and updated packages is available. An <literal>update</literal> should always be
+ performed before an <literal>upgrade</literal> or <literal>dist-upgrade</literal>. Please
+ be aware that the overall progress meter will be incorrect as the size
+ of the package files cannot be known in advance.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>upgrade</option></term>
+ <listitem><para><literal>upgrade</literal> is used to install the newest versions of all packages
+ currently installed on the system from the sources enumerated in
+ <filename>/etc/apt/sources.list</filename>. Packages currently installed with
+ new versions available are retrieved and upgraded; under no circumstances
+ are currently installed packages removed, or packages not already installed
+ retrieved and installed. New versions of currently installed packages that
+ cannot be upgraded without changing the install status of another package
+ will be left at their current version. An <literal>update</literal> must be
+ performed first so that <command>apt-get</command> knows that new versions of packages are
+ available.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>dist-upgrade</option></term>
+ <listitem><para><literal>dist-upgrade</literal> in addition to performing the function of
+ <literal>upgrade</literal>, also intelligently handles changing dependencies
+ with new versions of packages; <command>apt-get</command> has a "smart" conflict
+ resolution system, and it will attempt to upgrade the most important
+ packages at the expense of less important ones if necessary.
+ The <literal>dist-upgrade</literal> command may therefore remove some packages.
+ The <filename>/etc/apt/sources.list</filename> file contains a list of locations
+ from which to retrieve desired package files.
+ See also &apt-preferences; for a mechanism for
+ overriding the general settings for individual packages.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>dselect-upgrade</option></term>
+ <listitem><para><literal>dselect-upgrade</literal>
+ is used in conjunction with the traditional Debian packaging
+ front-end, &dselect;. <literal>dselect-upgrade</literal>
+ follows the changes made by &dselect; to the <literal>Status</literal>
+ field of available packages, and performs the actions necessary to realize
+ that state (for instance, the removal of old and the installation of new
+ packages).</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>install</option></term>
+ <listitem>
+ <para><literal>install</literal> is followed by one or more
+ packages desired for installation or upgrading.
+ Each package is a package name, not a fully qualified
+ filename (for instance, in a Debian system,
+ <package>apt-utils</package> would be the argument provided, not
+ <filename>apt-utils_&apt-product-version;_amd64.deb</filename>). All packages required
+ by the package(s) specified for installation will also
+ be retrieved and installed.
+ The <filename>/etc/apt/sources.list</filename> file is
+ used to locate the desired packages. If a hyphen is
+ appended to the package name (with no intervening space),
+ the identified package will be removed if it is installed.
+ Similarly a plus sign can be used to designate a
+ package to install. These latter features may be used
+ to override decisions made by apt-get's conflict
+ resolution system.
+ </para>
+
+ <para>A specific version of a package can be selected for installation by
+ following the package name with an equals and the version of the package
+ to select. This will cause that version to be located and selected for
+ install. Alternatively a specific distribution can be selected by
+ following the package name with a slash and the version of the
+ distribution or the Archive name (stable, testing, unstable).</para>
+
+ <para>Both of the version selection mechanisms can downgrade packages and must
+ be used with care.</para>
+
+ <para>This is also the target to use if you want to upgrade one or
+ more already-installed packages without upgrading every package
+ you have on your system. Unlike the "upgrade" target, which
+ installs the newest version of all currently installed packages,
+ "install" will install the newest version of only the package(s)
+ specified. Simply provide the name of the package(s) you wish
+ to upgrade, and if a newer version is available, it (and its
+ dependencies, as described above) will be downloaded and
+ installed.
+ </para>
+
+ <para>Finally, the &apt-preferences; mechanism allows you to
+ create an alternative installation policy for
+ individual packages.</para>
+
+ <para>If no package matches the given expression and the expression contains one
+ of '.', '?' or '*' then it is assumed to be a POSIX regular expression,
+ and it is applied
+ to all package names in the database. Any matches are then installed (or
+ removed). Note that matching is done by substring so 'lo.*' matches 'how-lo'
+ and 'lowest'. If this is undesired, anchor the regular expression
+ with a '^' or '$' character, or create a more specific regular expression.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>remove</option></term>
+ <listitem><para><literal>remove</literal> is identical to <literal>install</literal> except that packages are
+ removed instead of installed. Note that removing a package leaves its
+ configuration files on the system. If a plus sign is appended to the package
+ name (with no intervening space), the identified package will be
+ installed instead of removed.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>purge</option></term>
+ <listitem><para><literal>purge</literal> is identical to <literal>remove</literal> except that packages are
+ removed and purged (any configuration files are deleted too).</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>source</option></term>
+ <listitem><para><literal>source</literal> causes <command>apt-get</command> to fetch source packages. APT
+ will examine the available packages to decide which source package to
+ fetch. It will then find and download into the current directory the
+ newest available version of that source package while respecting the
+ default release, set with the option <literal>APT::Default-Release</literal>,
+ the <option>-t</option> option or per package with the
+ <literal>pkg/release</literal> syntax, if possible.</para>
+
+ <para>Source packages are tracked separately
+ from binary packages via <literal>deb-src</literal> lines
+ in the &sources-list; file. This means that you will need to add such a line
+ for each repository you want to get sources from; otherwise you will probably
+ get either the wrong (too old/too new) source versions or none at all.</para>
+
+ <para>If the <option>--compile</option> option is specified
+ then the package will be compiled to a binary .deb using
+ <command>dpkg-buildpackage</command> for the architecture as
+ defined by the <command>--host-architecture</command> option.
+ If <option>--download-only</option> is specified then the source package
+ will not be unpacked.</para>
+
+ <para>A specific source version can be retrieved by postfixing the source name
+ with an equals and then the version to fetch, similar to the mechanism
+ used for the package files. This enables exact matching of the source
+ package name and version, implicitly enabling the
+ <literal>APT::Get::Only-Source</literal> option.</para>
+
+ <para>Note that source packages are not installed and tracked in the
+ <command>dpkg</command> database like binary packages; they are simply downloaded
+ to the current directory, like source tarballs.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>build-dep</option></term>
+ <listitem><para><literal>build-dep</literal> causes apt-get to install/remove packages in an
+ attempt to satisfy the build dependencies for a source package. By default the dependencies are
+ satisfied to build the package natively. If desired a host-architecture can be specified
+ with the <option>--host-architecture</option> option instead.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>check</option></term>
+ <listitem><para><literal>check</literal> is a diagnostic tool; it updates the package cache and checks
+ for broken dependencies.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>download</option></term>
+ <listitem><para><literal>download</literal> will download the given
+ binary package into the current directory.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>clean</option></term>
+ <listitem><para><literal>clean</literal> clears out the local repository of retrieved package
+ files. It removes everything but the lock file from
+ <filename>&cachedir;/archives/</filename> and
+ <filename>&cachedir;/archives/partial/</filename>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>autoclean</option> (and the <option>auto-clean</option> alias since 1.1)</term>
+ <listitem><para>Like <literal>clean</literal>, <literal>autoclean</literal> clears out the local
+ repository of retrieved package files. The difference is that it only
+ removes package files that can no longer be downloaded, and are largely
+ useless. This allows a cache to be maintained over a long period without
+ it growing out of control. The configuration option
+ <literal>APT::Clean-Installed</literal> will prevent installed packages from being
+ erased if it is set to off.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>autoremove</option> (and the <option>auto-remove</option> alias since 1.1)</term>
+ <listitem><para><literal>autoremove</literal> is used to remove packages that were automatically
+ installed to satisfy dependencies for other packages and are now no longer needed.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>changelog</option></term>
+ <listitem><para><literal>changelog</literal> tries to download the
+ changelog of a package and displays it through
+ <command>sensible-pager</command>. By default it
+ displays the changelog for the version that is installed.
+ However, you can specify the same options as for the
+ <option>install</option> command.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>indextargets</option></term>
+ <listitem><para>Displays by default a deb822 formatted listing of
+ information about all data files (aka index targets) <command>apt-get
+ update</command> would download. Supports a
+ <option>--format</option> option to modify the output format as
+ well as accepts lines of the default output to filter the records
+ by. The command is mainly used as an interface for external tools
+ working with APT to get information as well as filenames for
+ downloaded files so they can use them as well instead of
+ downloading them again on their own. Detailed documentation is
+ omitted here and can instead be found in the file
+ &apt-acquire-additional-files; shipped by the <package>apt-doc</package> package.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>options</title>
+ &apt-cmdblurb;
+
+ <variablelist>
+ <varlistentry><term><option>--no-install-recommends</option></term>
+ <listitem><para>Do not consider recommended packages as a dependency for installing.
+ Configuration Item: <literal>APT::Install-Recommends</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--install-suggests</option></term>
+ <listitem><para>Consider suggested packages as a dependency for installing.
+ Configuration Item: <literal>APT::Install-Suggests</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-d</option></term><term><option>--download-only</option></term>
+ <listitem><para>Download only; package files are only retrieved, not unpacked or installed.
+ Configuration Item: <literal>APT::Get::Download-Only</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-f</option></term><term><option>--fix-broken</option></term>
+ <listitem><para>Fix; attempt to correct a system with broken dependencies in
+ place. This option, when used with install/remove, can omit any packages
+ to permit APT to deduce a likely solution. If packages are specified,
+ these have to completely correct the problem. The option is sometimes necessary when
+ running APT for the first time; APT itself does not allow broken package
+ dependencies to exist on a system. It is possible that a system's
+ dependency structure can be so corrupt as to require manual intervention
+ (which usually means using <command>dpkg --remove</command> to eliminate some of
+ the offending packages). Use of this option together with <option>-m</option> may produce an
+ error in some situations.
+ Configuration Item: <literal>APT::Get::Fix-Broken</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-m</option></term><term><option>--ignore-missing</option></term>
+ <term><option>--fix-missing</option></term>
+ <listitem><para>Ignore missing packages; if packages cannot be retrieved or fail the
+ integrity check after retrieval (corrupted package files), hold back
+ those packages and handle the result. Use of this option together with
+ <option>-f</option> may produce an error in some situations. If a package is
+ selected for installation (particularly if it is mentioned on the
+ command line) and it could not be downloaded then it will be silently
+ held back.
+ Configuration Item: <literal>APT::Get::Fix-Missing</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--no-download</option></term>
+ <listitem><para>Disables downloading of packages. This is best used with
+ <option>--ignore-missing</option> to force APT to use only the .debs it has
+ already downloaded.
+ Configuration Item: <literal>APT::Get::Download</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-q</option></term><term><option>--quiet</option></term>
+ <listitem><para>Quiet; produces output suitable for logging, omitting progress indicators.
+ More q's will produce more quiet up to a maximum of 2. You can also use
+ <option>-q=#</option> to set the quiet level, overriding the configuration file.
+ Note that quiet level 2 implies <option>-y</option>; you should never use -qq
+ without a no-action modifier such as -d, --print-uris or -s as APT may
+ decide to do something you did not expect.
+ Configuration Item: <literal>quiet</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-s</option></term>
+ <term><option>--simulate</option></term>
+ <term><option>--just-print</option></term>
+ <term><option>--dry-run</option></term>
+ <term><option>--recon</option></term>
+ <term><option>--no-act</option></term>
+ <listitem><para>No action; perform a simulation of events that would occur
+ based on the current system state but do not actually change the
+ system. Locking will be disabled (<option>Debug::NoLocking</option>)
+ so the system state could change while <command>apt-get</command> is
+ running. Simulations can also be executed by non-root users which might
+ not have read access to all apt configuration distorting the simulation.
+ A notice expressing this warning is also shown by default for non-root
+ users (<option>APT::Get::Show-User-Simulation-Note</option>).
+ Configuration Item: <literal>APT::Get::Simulate</literal>.</para>
+
+ <para>Simulated runs print out a series of lines, each representing a <command>dpkg</command>
+ operation: configure (<literal>Conf</literal>), remove (<literal>Remv</literal>)
+ or unpack (<literal>Inst</literal>). Square brackets indicate broken packages, and
+ empty square brackets indicate breaks that are of no consequence (rare).</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-y</option></term><term><option>--yes</option></term>
+ <term><option>--assume-yes</option></term>
+ <listitem><para>Automatic yes to prompts; assume "yes" as answer to all prompts and run
+ non-interactively. If an undesirable situation, such as changing a held
+ package, trying to install a unauthenticated package or removing an essential package
+ occurs then <literal>apt-get</literal> will abort.
+ Configuration Item: <literal>APT::Get::Assume-Yes</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--assume-no</option></term>
+ <listitem><para>Automatic "no" to all prompts.
+ Configuration Item: <literal>APT::Get::Assume-No</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--no-show-upgraded</option></term>
+ <listitem><para>Do not show a list of all packages that are to be upgraded.
+ Configuration Item: <literal>APT::Get::Show-Upgraded</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-V</option></term><term><option>--verbose-versions</option></term>
+ <listitem><para>Show full versions for upgraded and installed packages.
+ Configuration Item: <literal>APT::Get::Show-Versions</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-a</option></term>
+ <term><option>--host-architecture</option></term>
+ <listitem><para>This option controls the architecture packages are built for
+ by <command>apt-get source --compile</command> and how cross-builddependencies
+ are satisfied. By default is it not set which means that the host architecture
+ is the same as the build architecture (which is defined by <literal>APT::Architecture</literal>).
+ Configuration Item: <literal>APT::Get::Host-Architecture</literal>.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-P</option></term>
+ <term><option>--build-profiles</option></term>
+ <listitem><para>This option controls the activated build profiles for which
+ a source package is built by <command>apt-get source --compile</command> and
+ how build dependencies are satisfied. By default no build profile is active.
+ More than one build profile can be activated at a time by concatenating them
+ with a comma.
+ Configuration Item: <literal>APT::Build-Profiles</literal>.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-b</option></term><term><option>--compile</option></term>
+ <term><option>--build</option></term>
+ <listitem><para>Compile source packages after downloading them.
+ Configuration Item: <literal>APT::Get::Compile</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--ignore-hold</option></term>
+ <listitem><para>Ignore package holds; this causes <command>apt-get</command> to ignore a hold
+ placed on a package. This may be useful in conjunction with
+ <literal>dist-upgrade</literal> to override a large number of undesired holds.
+ Configuration Item: <literal>APT::Ignore-Hold</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--with-new-pkgs</option></term>
+ <listitem><para>Allow installing new packages when used in
+ conjunction with <literal>upgrade</literal>. This is useful if
+ the update of a installed package requires new dependencies to be
+ installed. Instead of holding the package back <literal>upgrade</literal>
+ will upgrade the package and install the new dependencies. Note that
+ <literal>upgrade</literal> with this option will never remove packages,
+ only allow adding new ones.
+ Configuration Item: <literal>APT::Get::Upgrade-Allow-New</literal>.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--no-upgrade</option></term>
+ <listitem><para>Do not upgrade packages; when used in conjunction with <literal>install</literal>,
+ <literal>no-upgrade</literal> will prevent packages on the command line
+ from being upgraded if they are already installed.
+ Configuration Item: <literal>APT::Get::Upgrade</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--only-upgrade</option></term>
+ <listitem><para>Do not install new packages; when used in conjunction
+ with <literal>install</literal>, <literal>only-upgrade</literal> will
+ install upgrades for already installed packages only and ignore requests
+ to install new packages.
+ Configuration Item: <literal>APT::Get::Only-Upgrade</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--allow-downgrades</option></term>
+ <listitem><para>This is a dangerous option that will cause apt to continue
+ without prompting if it is doing downgrades. It
+ should not be used except in very special situations. Using
+ it can potentially destroy your system!
+ Configuration Item: <literal>APT::Get::allow-downgrades</literal>. Introduced in APT 1.1.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--allow-remove-essential</option></term>
+ <listitem><para>Force yes; this is a dangerous option that will cause apt to continue
+ without prompting if it is removing essentials. It
+ should not be used except in very special situations. Using
+ it can potentially destroy your system!
+ Configuration Item: <literal>APT::Get::allow-remove-essential</literal>. Introduced in APT 1.1.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--allow-change-held-packages</option></term>
+ <listitem><para>Force yes; this is a dangerous option that will cause apt to continue
+ without prompting if it is changing held packages. It
+ should not be used except in very special situations. Using
+ it can potentially destroy your system!
+ Configuration Item: <literal>APT::Get::allow-change-held-packages</literal>. Introduced in APT 1.1.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--force-yes</option></term>
+ <listitem><para>Force yes; this is a dangerous option that will cause apt to continue
+ without prompting if it is doing something potentially harmful. It
+ should not be used except in very special situations. Using
+ <literal>force-yes</literal> can potentially destroy your system!
+ Configuration Item: <literal>APT::Get::force-yes</literal>. This is deprecated and replaced by <option>--allow-downgrades</option>, <option>--allow-remove-essential</option>, <option>--allow-change-held-packages</option> in 1.1. </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--print-uris</option></term>
+ <listitem><para>Instead of fetching the files to install their URIs are printed. Each
+ URI will have the path, the destination file name, the size and the expected
+ MD5 hash. Note that the file name to write to will not always match
+ the file name on the remote site! This also works with the
+ <literal>source</literal> and <literal>update</literal> commands. When used with the
+ <literal>update</literal> command the MD5 and size are not included, and it is
+ up to the user to decompress any compressed files.
+ Configuration Item: <literal>APT::Get::Print-URIs</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--purge</option></term>
+ <listitem><para>Use purge instead of remove for anything that would be removed.
+ An asterisk ("*") will be displayed next to packages which are
+ scheduled to be purged. <option>remove --purge</option> is equivalent to the
+ <option>purge</option> command.
+ Configuration Item: <literal>APT::Get::Purge</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--reinstall</option></term>
+ <listitem><para>Re-install packages that are already installed and at the newest version.
+ Configuration Item: <literal>APT::Get::ReInstall</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--list-cleanup</option></term>
+ <listitem><para>This option is on by default; use <literal>--no-list-cleanup</literal> to turn
+ it off. When it is on, <command>apt-get</command> will automatically manage the contents
+ of <filename>&statedir;/lists</filename> to ensure that obsolete files are erased.
+ The only reason to turn it off is if you frequently change your sources list.
+ Configuration Item: <literal>APT::Get::List-Cleanup</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>-t</option></term>
+ <term><option>--target-release</option></term>
+ <term><option>--default-release</option></term>
+ <listitem><para>This option controls the default input to the policy engine; it creates
+ a default pin at priority 990 using the specified release string.
+ This overrides the general settings in <filename>/etc/apt/preferences</filename>.
+ Specifically pinned packages are not affected by the value
+ of this option. In short, this option
+ lets you have simple control over which distribution packages will be
+ retrieved from. Some common examples might be
+ <option>-t '2.1*'</option>, <option>-t unstable</option>
+ or <option>-t sid</option>.
+ Configuration Item: <literal>APT::Default-Release</literal>;
+ see also the &apt-preferences; manual page.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--trivial-only</option></term>
+ <listitem><para>
+ Only perform operations that are 'trivial'. Logically this can be considered
+ related to <option>--assume-yes</option>; where <option>--assume-yes</option> will answer
+ yes to any prompt, <option>--trivial-only</option> will answer no.
+ Configuration Item: <literal>APT::Get::Trivial-Only</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--no-remove</option></term>
+ <listitem><para>If any packages are to be removed apt-get immediately aborts without
+ prompting.
+ Configuration Item: <literal>APT::Get::Remove</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--auto-remove</option></term><term><option>--autoremove</option></term>
+ <listitem><para>If the command is either <literal>install</literal> or <literal>remove</literal>,
+ then this option acts like running the <literal>autoremove</literal> command, removing unused
+ dependency packages. Configuration Item: <literal>APT::Get::AutomaticRemove</literal>.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--only-source</option></term>
+ <listitem><para>Only has meaning for the
+ <literal>source</literal> and <literal>build-dep</literal>
+ commands. Indicates that the given source names are not to be
+ mapped through the binary table. This means that if this option
+ is specified, these commands will only accept source package
+ names as arguments, rather than accepting binary package names
+ and looking up the corresponding source package. Configuration
+ Item: <literal>APT::Get::Only-Source</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--diff-only</option></term><term><option>--dsc-only</option></term><term><option>--tar-only</option></term>
+ <listitem><para>Download only the diff, dsc, or tar file of a source archive.
+ Configuration Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</literal>, and
+ <literal>APT::Get::Tar-Only</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--arch-only</option></term>
+ <listitem><para>Only process architecture-dependent build-dependencies.
+ Configuration Item: <literal>APT::Get::Arch-Only</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--indep-only</option></term>
+ <listitem><para>Only process architecture-independent build-dependencies.
+ Configuration Item: <literal>APT::Get::Indep-Only</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--allow-unauthenticated</option></term>
+ <listitem><para>Ignore if packages can't be authenticated and don't prompt
+ about it. This can be useful while working with local repositories,
+ but is a huge security risk if data authenticity isn't ensured in
+ another way by the user itself. The usage of the
+ <option>Trusted</option> option for &sources-list; entries should
+ usually be preferred over this global override. Configuration Item:
+ <literal>APT::Get::AllowUnauthenticated</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--no-allow-insecure-repositories</option></term>
+ <listitem><para>Forbid the update command to acquire unverifiable
+ data from configured sources. APT will fail at the update command
+ for repositories without valid cryptographically signatures. See
+ also &apt-secure; for details on the concept and the implications.
+
+ Configuration Item: <literal>Acquire::AllowInsecureRepositories</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--show-progress</option></term>
+ <listitem><para>Show user friendly progress information in the
+ terminal window when packages are installed, upgraded or
+ removed. For a machine parsable version of this data see
+ README.progress-reporting in the apt doc directory.
+ Configuration Items: <literal>Dpkg::Progress</literal> and <literal>Dpkg::Progress-Fancy</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--with-source</option> <option>&synopsis-param-filename;</option></term>
+ <listitem><para>
+ Adds the given file as a source for metadata. Can be repeated to add multiple files.
+ See <option>--with-source</option> description in &apt-cache; for further details.
+ </para></listitem>
+ </varlistentry>
+
+ &apt-commonoptions;
+
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>Files</title>
+ <variablelist>
+ &file-sourceslist;
+ &file-aptconf;
+ &file-preferences;
+ &file-cachearchives;
+ &file-statelists;
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>See Also</title>
+ <para>&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;,
+ &apt-conf;, &apt-config;, &apt-secure;,
+ The APT User's guide in &guidesdir;, &apt-preferences;, the APT Howto.</para>
+ </refsect1>
+
+ <refsect1><title>Diagnostics</title>
+ <para><command>apt-get</command> returns zero on normal operation, decimal 100 on error.</para>
+ </refsect1>
+ &manbugs;
+</refentry>
diff --git a/doc/apt-key.8.xml b/doc/apt-key.8.xml
new file mode 100644
index 000000000..279c417c7
--- /dev/null
+++ b/doc/apt-key.8.xml
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<refentry>
+ <refentryinfo>
+ &apt-author.jgunthorpe;
+ &apt-author.team;
+ &apt-email;
+ &apt-product;
+ <!-- The last update date -->
+ <date>2016-11-25T00:00:00Z</date>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>apt-key</refentrytitle>
+ <manvolnum>8</manvolnum>
+ <refmiscinfo class="manual">APT</refmiscinfo>
+ </refmeta>
+
+ <!-- Man page title -->
+ <refnamediv>
+ <refname>apt-key</refname>
+ <refpurpose>APT key management utility</refpurpose>
+ </refnamediv>
+
+ &synopsis-command-apt-key;
+
+ <refsect1><title>Description</title>
+ <para>
+ <command>apt-key</command> is used to manage the list of keys used
+ by apt to authenticate packages. Packages which have been
+ authenticated using these keys will be considered trusted.
+ </para>
+ <para>
+ Note that if usage of <command>apt-key</command> is desired the additional
+ installation of the GNU Privacy Guard suite (packaged in
+ <package>gnupg</package>) is required. For this reason alone the programmatic
+ usage (especially in package maintainerscripts!) is strongly discouraged.
+ Further more the output format of all commands is undefined and can and does
+ change whenever the underlying commands change. <command>apt-key</command> will
+ try to detect such usage and generates warnings on stderr in these cases.
+ </para>
+</refsect1>
+
+<refsect1><title>Supported keyring files</title>
+<para>apt-key supports only the binary OpenPGP format (also known as "GPG key
+ public ring") in files with the "<literal>gpg</literal>" extension, not
+ the keybox database format introduced in newer &gpg; versions as default
+ for keyring files. Binary keyring files intended to be used with any apt
+ version should therefore always be created with <command>gpg --export</command>.
+</para>
+<para>Alternatively, if all systems which should be using the created keyring
+ have at least apt version >= 1.4 installed, you can use the ASCII armored
+ format with the "<literal>asc</literal>" extension instead which can be
+ created with <command>gpg --armor --export</command>.
+</para>
+</refsect1>
+
+<refsect1><title>Commands</title>
+ <variablelist>
+ <varlistentry><term><option>add</option> <option>&synopsis-param-filename;</option></term>
+ <listitem>
+ <para>
+ Add a new key to the list of trusted keys.
+ The key is read from the filename given with the parameter
+ &synopsis-param-filename; or if the filename is <literal>-</literal>
+ from standard input.
+ </para>
+ <para>
+ It is critical that keys added manually via <command>apt-key</command> are
+ verified to belong to the owner of the repositories they claim to be for
+ otherwise the &apt-secure; infrastructure is completely undermined.
+ </para>
+ <para>
+ <emphasis>Note</emphasis>: Instead of using this command a keyring
+ should be placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename>
+ directory with a descriptive name and either "<literal>gpg</literal>" or
+ "<literal>asc</literal>" as file extension.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>del</option> <option>&synopsis-param-keyid;</option></term>
+ <listitem>
+ <para>
+
+ Remove a key from the list of trusted keys.
+
+ </para>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>export</option> <option>&synopsis-param-keyid;</option></term>
+ <listitem>
+ <para>
+
+ Output the key &synopsis-param-keyid; to standard output.
+
+ </para>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>exportall</option></term>
+ <listitem>
+ <para>
+
+ Output all trusted keys to standard output.
+
+ </para>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>list</option>, <option>finger</option></term>
+ <listitem>
+ <para>
+
+ List trusted keys with fingerprints.
+
+ </para>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>adv</option></term>
+ <listitem>
+ <para>
+ Pass advanced options to gpg. With <command>adv --recv-key</command> you
+ can e.g. download key from keyservers directly into the trusted set of
+ keys. Note that there are <emphasis>no</emphasis> checks performed, so it is
+ easy to completely undermine the &apt-secure; infrastructure if used without
+ care.
+ </para>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>update</option> (deprecated)</term>
+ <listitem>
+ <para>
+ Update the local keyring with the archive keyring and remove from
+ the local keyring the archive keys which are no longer valid.
+ The archive keyring is shipped in the <literal>archive-keyring</literal> package of your
+ distribution, e.g. the &keyring-package; package in &keyring-distro;.
+ </para>
+ <para>
+ Note that a distribution does not need to and in fact should not use
+ this command any longer and instead ship keyring files in the
+ <filename>/etc/apt/trusted.gpg.d/</filename> directory directly as this
+ avoids a dependency on <package>gnupg</package> and it is easier to manage
+ keys by simply adding and removing files for maintainers and users alike.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>net-update</option></term>
+ <listitem>
+ <para>
+
+ Perform an update working similarly to the <command>update</command> command above,
+ but get the archive keyring from a URI instead and validate it against a master key.
+
+ This requires an installed &wget; and an APT build configured to have
+ a server to fetch from and a master keyring to validate.
+
+ APT in Debian does not support this command, relying on
+ <command>update</command> instead, but Ubuntu's APT does.
+
+ </para>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
+</refsect1>
+
+ <refsect1><title>Options</title>
+<para>Note that options need to be defined before the commands described in the previous section.</para>
+ <variablelist>
+ <varlistentry><term><option>--keyring</option> <option>&synopsis-param-filename;</option></term>
+ <listitem><para>With this option it is possible to specify a particular keyring
+ file the command should operate on. The default is that a command is executed
+ on the <filename>trusted.gpg</filename> file as well as on all parts in the
+ <filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</filename>
+ is the primary keyring which means that e.g. new keys are added to this one.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>Files</title>
+ <variablelist>
+
+ &file-trustedgpg;
+
+ </variablelist>
+
+</refsect1>
+
+<refsect1><title>See Also</title>
+<para>
+&apt-get;, &apt-secure;
+</para>
+</refsect1>
+
+ &manbugs;
+ &manauthor;
+
+</refentry>
+
diff --git a/doc/apt-mark.8.xml b/doc/apt-mark.8.xml
new file mode 100644
index 000000000..ddde0416f
--- /dev/null
+++ b/doc/apt-mark.8.xml
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<refentry>
+
+ <refentryinfo>
+ &apt-author.moconnor;
+ &apt-author.team;
+ &apt-email;
+ &apt-product;
+ <!-- The last update date -->
+ <date>2015-09-25T00:00:00Z</date>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>apt-mark</refentrytitle>
+ <manvolnum>8</manvolnum>
+ <refmiscinfo class="manual">APT</refmiscinfo>
+ </refmeta>
+
+ <!-- Man page title -->
+ <refnamediv>
+ <refname>apt-mark</refname>
+ <refpurpose>show, set and unset various settings for a package</refpurpose>
+ </refnamediv>
+
+ &synopsis-command-apt-mark;
+
+ <refsect1><title>Description</title>
+ <para><command>apt-mark</command> can be used as a unified front-end to set
+ various settings for a package, such as marking a package as being
+ automatically/manually installed or changing <command>dpkg</command>
+ selections such as hold, install, deinstall and purge which are respected
+ e.g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</command>.
+ </para>
+ </refsect1><refsect1><title>Automatically and Manually Installed Packages</title>
+ <para>
+ When you request that a package is installed, and as a result
+ other packages are installed to satisfy its dependencies, the
+ dependencies are marked as being automatically installed, while the
+ package you installed explicitly is marked as manually installed.
+ Once an automatically installed package is no longer depended on
+ by any manually installed package it is considered no longer needed
+ and e.g. <command>apt-get</command> or <command>aptitude</command>
+ will at least suggest removing them.
+ </para>
+ <variablelist>
+ <varlistentry><term><option>auto</option></term>
+ <listitem><para><literal>auto</literal> is used to mark a
+ package as being automatically installed, which will cause the
+ package to be removed when no more manually installed packages
+ depend on this package.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>manual</option></term>
+ <listitem><para><literal>manual</literal> is used to mark a
+ package as being manually installed, which will prevent the
+ package from being automatically removed if no other packages
+ depend on it.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>showauto</option></term>
+ <listitem><para><literal>showauto</literal> is used to print a
+ list of automatically installed packages with each package on a new line.
+ All automatically installed packages will be listed if no package is given.
+ If packages are given only those which are automatically installed will be shown.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>showmanual</option></term>
+ <listitem><para><literal>showmanual</literal> can be used in
+ the same way as <literal>showauto</literal> except that it will print
+ a list of manually installed packages instead.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+
+ <refsect2><title>Options</title>
+ <variablelist>
+ <varlistentry>
+ <term><option>-f=&synopsis-param-filename;</option></term>
+ <term><option>--file=&synopsis-param-filename;</option></term>
+ <listitem><para>
+ Read/Write package stats from the filename given with the parameter
+ &synopsis-param-filename; instead of from the default location, which
+ is <filename>extended_status</filename> in the directory defined
+ by the Configuration Item: <literal>Dir::State</literal>.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ </refsect1><refsect1><title>Prevent Changes for a Package</title>
+ <variablelist>
+ <varlistentry><term><option>hold</option></term>
+ <listitem><para><literal>hold</literal> is used to mark a
+ package as held back, which will prevent the package from being
+ automatically installed, upgraded or removed.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>unhold</option></term>
+ <listitem><para><literal>unhold</literal> is used to cancel a
+ previously set hold on a package to allow all actions again.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>showhold</option></term>
+ <listitem><para><literal>showhold</literal> is used to print a list
+ of packages on hold in the same way as for the other show commands.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1><refsect1><title>Schedule Packages for Install, Remove and Purge</title>
+ <para>
+ Some front-ends like <command>apt-get dselect-upgrade</command> can be used to
+ apply previously scheduled changes to the install state of packages. Such changes
+ can be scheduled with the <option>install</option>, <option>remove</option>
+ (also known as <option>deinstall</option>) and <option>purge</option> commands.
+ Packages with a specific selection can be displayed with <option>showinstall</option>,
+ <option>showremove</option> and <option>showpurge</option> respectively.
+ More information about these so called dpkg selections can be found in &dpkg;.
+ </para>
+ </refsect1>
+
+ <refsect1><title>Options</title>
+ <variablelist>
+ &apt-commonoptions;
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>Files</title>
+ <variablelist>
+ &file-extended_states;
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>See Also</title>
+ <para><phrase>&apt-get;,&aptitude;,&apt-conf;</phrase></para>
+ </refsect1>
+
+ <refsect1><title>Diagnostics</title>
+ <para><command>apt-mark</command> returns zero on normal operation, non-zero on error.</para>
+ </refsect1>
+
+ &manbugs;
+
+</refentry>
diff --git a/doc/apt-secure.8.xml b/doc/apt-secure.8.xml
new file mode 100644
index 000000000..f1f63dae1
--- /dev/null
+++ b/doc/apt-secure.8.xml
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<refentry>
+ <refentryinfo>
+ &apt-author.jgunthorpe;
+ &apt-author.team;
+ &apt-email;
+ &apt-product;
+ <!-- The last update date -->
+ <date>2016-08-06T00:00:00Z</date>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>apt-secure</refentrytitle>
+ <manvolnum>8</manvolnum>
+ <refmiscinfo class="manual">APT</refmiscinfo>
+ </refmeta>
+
+<!-- NOTE: This manpage has been written based on the
+ Securing Debian Manual ("Debian Security
+ Infrastructure" chapter) and on documentation
+ available at the following sites:
+ http://wiki.debian.net/?apt06
+ http://www.syntaxpolice.org/apt-secure/
+ http://www.enyo.de/fw/software/apt-secure/
+-->
+<!-- TODO: write a more verbose example of how it works with
+ a sample similar to
+ http://www.debian-administration.org/articles/174
+ ?
+-->
+
+
+ <!-- Man page title -->
+ <refnamediv>
+ <refname>apt-secure</refname>
+ <refpurpose>Archive authentication support for APT</refpurpose>
+ </refnamediv>
+
+ <refsect1><title>Description</title>
+ <para>
+ Starting with version 0.6, <command>APT</command> contains code that does
+ signature checking of the Release file for all repositories. This ensures
+ that data like packages in the archive can't be modified by people who
+ have no access to the Release file signing key. Starting with version 1.1
+ <command>APT</command> requires repositories to provide recent authentication
+ information for unimpeded usage of the repository.
+ </para>
+
+ <para>
+ If an archive has an unsigned Release file or no Release file at all
+ current APT versions will refuse to download data from them by default
+ in <command>update</command> operations and even if forced to download
+ front-ends like &apt-get; will require explicit confirmation if an
+ installation request includes a package from such an unauthenticated
+ archive.
+ </para>
+
+ <para>
+ As a temporary exception &apt-get; (not &apt;!) raises warnings only if it
+ encounters unauthenticated archives to give a slightly longer grace period
+ on this backward compatibility effecting change. This exception will be removed
+ in future releases and you can opt-out of this grace period by setting the
+ configuration option <option>Binary::apt-get::Acquire::AllowInsecureRepositories</option>
+ to <literal>false</literal> or <option>--no-allow-insecure-repositories</option>
+ on the command line.
+ </para>
+
+ <para>
+ You can force all APT clients to raise only warnings by setting the
+ configuration option <option>Acquire::AllowInsecureRepositories</option> to
+ <literal>true</literal>. Individual repositories can also be allowed to be insecure
+ via the &sources-list; option <literal>allow-insecure=yes</literal>.
+ Note that insecure repositories are strongly discouraged and all options
+ to force apt to continue supporting them will eventually be removed.
+ Users also have the <option>Trusted</option> option available to disable
+ even the warnings, but be sure to understand the implications as detailed in
+ &sources-list;.
+ </para>
+
+ <para>
+ A repository which previously was authenticated but would loose this state in
+ an <command>update</command> operation raises an error in all APT clients
+ irrespective of the option to allow or forbid usage of insecure repositories.
+ The error can be overcome by additionally setting
+ <option>Acquire::AllowDowngradeToInsecureRepositories</option>
+ to <literal>true</literal> or for Individual repositories with the &sources-list;
+ option <literal>allow-downgrade-to-insecure=yes</literal>.
+ </para>
+
+ <para>
+ Note: All APT-based package management front-ends like &apt-get;, &aptitude;
+ and &synaptic; support this authentication feature, so this manpage uses
+ <literal>APT</literal> to refer to them all for simplicity only.
+ </para>
+</refsect1>
+
+ <refsect1><title>Trusted Repositories</title>
+
+ <para>
+ The chain of trust from an APT archive to the end user is made up of
+ several steps. <command>apt-secure</command> is the last step in
+ this chain; trusting an archive does not mean that you trust its
+ packages not to contain malicious code, but means that you
+ trust the archive maintainer. It's the archive maintainer's
+ responsibility to ensure that the archive's integrity is preserved.
+ </para>
+
+ <para>apt-secure does not review signatures at a
+ package level. If you require tools to do this you should look at
+ <command>debsig-verify</command> and
+ <command>debsign</command> (provided in the debsig-verify and
+ devscripts packages respectively).</para>
+
+ <para>
+ The chain of trust in Debian starts (e.g.) when a maintainer uploads a new
+ package or a new version of a package to the Debian archive. In
+ order to become effective, this upload needs to be signed by a key
+ contained in one of the Debian package maintainer keyrings (available in
+ the debian-keyring package). Maintainers' keys are signed by
+ other maintainers following pre-established procedures to
+ ensure the identity of the key holder. Similar procedures exist in all
+ Debian-based distributions.
+ </para>
+
+ <para>
+ Once the uploaded package is verified and included in the archive,
+ the maintainer signature is stripped off, and checksums of the package
+ are computed and put in the Packages file. The checksums of all of the
+ Packages files are then computed and put into the Release file. The
+ Release file is then signed by the archive key for this &keyring-distro; release,
+ and distributed alongside the packages and the Packages files on
+ &keyring-distro; mirrors. The keys are in the &keyring-distro; archive keyring
+ available in the &keyring-package; package.
+ </para>
+
+ <para>
+ End users can check the signature of the Release file, extract a checksum
+ of a package from it and compare it with the checksum of the package
+ they downloaded by hand - or rely on APT doing this automatically.
+ </para>
+
+ <para>Notice that this is distinct from checking signatures on a
+ per package basis. It is designed to prevent two possible attacks:
+ </para>
+
+ <itemizedlist>
+ <listitem><para><literal>Network "man in the middle"
+ attacks</literal>. Without signature checking, malicious
+ agents can introduce themselves into the package download process and
+ provide malicious software either by controlling a network
+ element (router, switch, etc.) or by redirecting traffic to a
+ rogue server (through ARP or DNS spoofing
+ attacks).</para></listitem>
+
+ <listitem><para><literal>Mirror network compromise</literal>.
+ Without signature checking, a malicious agent can compromise a
+ mirror host and modify the files in it to propagate malicious
+ software to all users downloading packages from that
+ host.</para></listitem>
+ </itemizedlist>
+
+ <para>However, it does not defend against a compromise of the
+ master server itself (which signs the packages) or against a
+ compromise of the key used to sign the Release files. In any case,
+ this mechanism can complement a per-package signature.</para>
+</refsect1>
+
+ <refsect1><title>User Configuration</title>
+ <para>
+ <command>apt-key</command> is the program that manages the list of keys used
+ by APT to trust repositories. It can be used to add or remove keys as well
+ as list the trusted keys. Limiting which key(s) are able to sign which archive
+ is possible via the <option>Signed-By</option> in &sources-list;.
+ </para><para>
+ Note that a default installation already contains all keys to securely
+ acquire packages from the default repositories, so fiddling with
+ <command>apt-key</command> is only needed if third-party repositories are
+ added.
+ </para><para>
+ In order to add a new key you need to first download it
+ (you should make sure you are using a trusted communication channel
+ when retrieving it), add it with <command>apt-key</command> and
+ then run <command>apt-get update</command> so that apt can download
+ and verify the <filename>InRelease</filename> or <filename>Release.gpg</filename>
+ files from the archives you have configured.
+ </para>
+</refsect1>
+
+<refsect1><title>Archive Configuration</title>
+ <para>
+ If you want to provide archive signatures in an archive under your
+ maintenance you have to:
+ </para>
+
+ <itemizedlist>
+ <listitem><para><emphasis>Create a toplevel Release
+ file</emphasis>, if it does not exist already. You can do this
+ by running <command>apt-ftparchive release</command>
+ (provided in apt-utils).</para></listitem>
+
+ <listitem><para><emphasis>Sign it</emphasis>. You can do this by running
+ <command>gpg --clearsign -o InRelease Release</command> and
+ <command>gpg -abs -o Release.gpg Release</command>.</para></listitem>
+
+ <listitem><para>
+ <emphasis>Publish the key fingerprint</emphasis>, so that your users
+ will know what key they need to import in order to authenticate the files
+ in the archive. It is best to ship your key in its own keyring package
+ like &keyring-distro; does with &keyring-package; to be able to
+ distribute updates and key transitions automatically later.
+ </para></listitem>
+
+ <listitem><para>
+ <emphasis>Provide instructions on how to add your archive and key</emphasis>.
+ If your users can't acquire your key securely the chain of trust described above is broken.
+ How you can help users add your key depends on your archive and target audience ranging
+ from having your keyring package included in another archive users already have configured
+ (like the default repositories of their distribution) to leveraging the web of trust.
+ </para></listitem>
+
+ </itemizedlist>
+
+ <para>Whenever the contents of the archive change (new packages
+ are added or removed) the archive maintainer has to follow the
+ first two steps outlined above.</para>
+
+</refsect1>
+
+<refsect1><title>See Also</title>
+<para>
+&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;,
+&debsign;, &debsig-verify;, &gpg;
+</para>
+
+<para>For more background information you might want to review the
+<ulink
+url="https://www.debian.org/doc/manuals/securing-debian-howto/ch7">Debian
+Security Infrastructure</ulink> chapter of the Securing Debian Manual
+(also available in the harden-doc package) and the
+<ulink url="http://www.cryptnet.net/fdp/crypto/strong_distro.html"
+>Strong Distribution HOWTO</ulink> by V. Alex Brennen. </para>
+
+</refsect1>
+
+ &manbugs;
+ &manauthor;
+
+<refsect1><title>Manpage Authors</title>
+
+<para>This man-page is based on the work of Javier Fernández-Sanguino
+Peña, Isaac Jones, Colin Walters, Florian Weimer and Michael Vogt.
+</para>
+
+</refsect1>
+
+
+</refentry>
diff --git a/doc/apt-sortpkgs.1.xml b/doc/apt-sortpkgs.1.xml
new file mode 100644
index 000000000..b7f199306
--- /dev/null
+++ b/doc/apt-sortpkgs.1.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<refentry>
+
+ <refentryinfo>
+ &apt-author.jgunthorpe;
+ &apt-author.team;
+ &apt-email;
+ &apt-product;
+ <!-- The last update date -->
+ <date>2013-11-30T00:00:00Z</date>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>apt-sortpkgs</refentrytitle>
+ <manvolnum>1</manvolnum>
+ <refmiscinfo class="manual">APT</refmiscinfo>
+ </refmeta>
+
+ <!-- Man page title -->
+ <refnamediv>
+ <refname>apt-sortpkgs</refname>
+ <refpurpose>Utility to sort package index files</refpurpose>
+ </refnamediv>
+
+ &synopsis-command-apt-sortpkgs;
+
+ <refsect1><title>Description</title>
+ <para><command>apt-sortpkgs</command> will take an index file (source index or package
+ index) and sort the records so that they are ordered by the package name.
+ It will also sort the internal fields of each record according to the
+ internal sorting rules.</para>
+
+ <para>
+ All output is sent to standard output; the input must be a seekable file.</para>
+ </refsect1>
+
+ <refsect1><title>options</title>
+ &apt-cmdblurb;
+
+ <variablelist>
+ <varlistentry><term><option>-s</option></term><term><option>--source</option></term>
+ <listitem><para>
+ Use source index field ordering.
+ Configuration Item: <literal>APT::SortPkgs::Source</literal>.</para></listitem>
+ </varlistentry>
+
+ &apt-commonoptions;
+
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>See Also</title>
+ <para>&apt-conf;</para>
+ </refsect1>
+
+ <refsect1><title>Diagnostics</title>
+ <para><command>apt-sortpkgs</command> returns zero on normal operation, decimal 100 on error.</para>
+ </refsect1>
+
+ &manbugs;
+
+</refentry>
diff --git a/doc/apt-verbatim.ent b/doc/apt-verbatim.ent
new file mode 100644
index 000000000..7d36648be
--- /dev/null
+++ b/doc/apt-verbatim.ent
@@ -0,0 +1,461 @@
+<!-- -*- mode: xml; mode: fold -*- -->
+
+<!-- Some common paths.. -->
+<!ENTITY docdir "/usr/share/doc/apt/">
+<!ENTITY guidesdir "/usr/share/doc/apt-doc/">
+<!ENTITY configureindex "<filename>&docdir;examples/configure-index.gz</filename>">
+<!ENTITY aptconfdir "<filename>/etc/apt.conf</filename>">
+<!ENTITY statedir "/var/lib/apt">
+<!ENTITY cachedir "/var/cache/apt">
+
+<!-- Cross references to other man pages -->
+<!ENTITY apt-conf "<citerefentry>
+ <refentrytitle><filename>apt.conf</filename></refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY apt-get "<citerefentry>
+ <refentrytitle><command>apt-get</command></refentrytitle>
+ <manvolnum>8</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY apt-config "<citerefentry>
+ <refentrytitle><command>apt-config</command></refentrytitle>
+ <manvolnum>8</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY apt-cdrom "<citerefentry>
+ <refentrytitle><command>apt-cdrom</command></refentrytitle>
+ <manvolnum>8</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY apt-cache "<citerefentry>
+ <refentrytitle><command>apt-cache</command></refentrytitle>
+ <manvolnum>8</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY apt-mark "<citerefentry>
+ <refentrytitle><command>apt-mark</command></refentrytitle>
+ <manvolnum>8</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY apt "<citerefentry>
+ <refentrytitle><command>apt</command></refentrytitle>
+ <manvolnum>8</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY apt-preferences "<citerefentry>
+ <refentrytitle><filename>apt_preferences</filename></refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY apt-key "<citerefentry>
+ <refentrytitle><command>apt-key</command></refentrytitle>
+ <manvolnum>8</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY apt-secure "<citerefentry>
+ <refentrytitle>apt-secure</refentrytitle>
+ <manvolnum>8</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY apt-ftparchive "<citerefentry>
+ <refentrytitle><command>apt-ftparchive</command></refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>"
+>
+
+
+<!ENTITY sources-list "<citerefentry>
+ <refentrytitle><filename>sources.list</filename></refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY reportbug "<citerefentry>
+ <refentrytitle><command>reportbug</command></refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY dpkg "<citerefentry>
+ <refentrytitle><command>dpkg</command></refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY dpkg-buildpackage "<citerefentry>
+ <refentrytitle><command>dpkg-buildpackage</command></refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY gzip "<citerefentry>
+ <refentrytitle><command>gzip</command></refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY dpkg-scanpackages "<citerefentry>
+ <refentrytitle><command>dpkg-scanpackages</command></refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY dpkg-scansources "<citerefentry>
+ <refentrytitle><command>dpkg-scansources</command></refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY dselect "<citerefentry>
+ <refentrytitle><command>dselect</command></refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY aptitude "<citerefentry>
+ <refentrytitle><command>aptitude</command></refentrytitle>
+ <manvolnum>8</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY synaptic "<citerefentry>
+ <refentrytitle><command>synaptic</command></refentrytitle>
+ <manvolnum>8</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY squid-deb-proxy-client "<citerefentry>
+ <refentrytitle><command>squid-deb-proxy-client</command></refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY debsign "<citerefentry>
+ <refentrytitle><command>debsign</command></refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY debsig-verify "<citerefentry>
+ <refentrytitle><command>debsig-verify</command></refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY gpg "<citerefentry>
+ <refentrytitle><command>gpg</command></refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY wajig "<citerefentry>
+ <refentrytitle><command>wajig</command></refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY wget "<citerefentry>
+ <refentrytitle><command>wget</command></refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY apt-transport-debtorrent "<citerefentry>
+ <refentrytitle><package>apt-transport-debtorrent</package></refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY regex "<citerefentry>
+ <refentrytitle><abbrev>regex</abbrev></refentrytitle>
+ <manvolnum>7</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY glob "<citerefentry>
+ <refentrytitle><abbrev>glob</abbrev></refentrytitle>
+ <manvolnum>7</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY apt-file "<citerefentry>
+ <refentrytitle><command>apt-file</command></refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>"
+>
+
+<!ENTITY apt-acquire-additional-files "<literal><filename>/usr/share/doc/apt-doc/acquire-additional-files.txt</filename></literal>">
+
+<!-- Boiler plate docinfo section -->
+<!ENTITY apt-email "
+ <address>
+ <email>apt@packages.debian.org</email>
+ </address>
+">
+
+<!ENTITY apt-author.jgunthorpe "
+ <author>
+ <firstname>Jason</firstname>
+ <surname>Gunthorpe</surname>
+ <contrib></contrib>
+ </author>
+">
+
+<!ENTITY apt-author.moconnor "
+ <author>
+ <firstname>Mike</firstname>
+ <surname>O'Connor</surname>
+ <contrib></contrib>
+ </author>
+">
+
+<!ENTITY apt-name.dburrows "
+ <firstname>Daniel</firstname>
+ <surname>Burrows</surname>
+">
+
+<!ENTITY apt-copyright "
+ <copyright>
+ <holder>Jason Gunthorpe</holder>
+ <year>1998-2001</year>
+ </copyright>
+">
+
+<!ENTITY apt-product "
+ <productname>APT</productname>
+ <releaseinfo role='version'>&apt-product-version;</releaseinfo>
+">
+
+<!-- this will be updated by 'prepare-release' -->
+<!ENTITY apt-product-version "1.4.6">
+
+<!-- (Code)names for various things used all over the place -->
+<!ENTITY debian-oldstable-codename "jessie">
+<!ENTITY debian-stable-codename "stretch">
+<!ENTITY debian-testing-codename "buster">
+<!ENTITY debian-stable-version "9">
+<!ENTITY ubuntu-codename "xenial">
+
+<!-- good and bad just refers to matching and not matching a pattern…
+ It is not a remark about the specific perl version.
+ There is no way perl could be classified "good" (or "bad") in any version… -->
+<!ENTITY good-perl "5.20">
+<!ENTITY bad-perl "5.24">
+
+<!-- Arguments -->
+<!ENTITY synopsis-arg-option "<arg><option>-o=<replaceable>&synopsis-config-string;</replaceable></option></arg>">
+<!ENTITY synopsis-arg-config "<arg><option>-c=<filename><replaceable>&synopsis-config-file;</replaceable></filename></option></arg>">
+<!ENTITY synopsis-arg-target-release "<arg><option>-t=<replaceable>&synopsis-target-release;</replaceable></option></arg>">
+<!ENTITY synopsis-arg-architecture "<arg><option>-a=<replaceable>&synopsis-architecture;</replaceable></option></arg>">
+<!ENTITY synopsis-arg-pkgver "<arg choice='plain' rep='repeat'><replaceable>&synopsis-pkg;</replaceable><arg><group choice='req'>
+ <arg choice='plain'>=<replaceable>&synopsis-pkg-ver-number;</replaceable></arg>
+ <arg choice='plain'>/<replaceable>&synopsis-target-release;</replaceable></arg>
+</group></arg></arg>">
+<!ENTITY synopsis-arg-pkg "<arg choice='plain' rep='repeat'><replaceable>&synopsis-pkg;</replaceable></arg>">
+<!ENTITY synopsis-param-filename "<filename><replaceable>&synopsis-filename;</replaceable></filename>">
+<!ENTITY synopsis-help "<arg choice='plain'><group choice='req'><arg choice='plain'>-v</arg><arg choice='plain'>--version</arg></group></arg>
+ <arg choice='plain'><group choice='req'><arg choice='plain'>-h</arg><arg choice='plain'>--help</arg></group></arg>">
+<!ENTITY synopsis-command-apt "<refsynopsisdiv><cmdsynopsis>
+ <command>apt</command>
+ <arg><option>-h</option></arg>
+ &synopsis-arg-option;
+ &synopsis-arg-config;
+ &synopsis-arg-target-release;
+ &synopsis-arg-architecture;
+ <group choice='req'>
+ <arg choice='plain'>list</arg>
+ <arg choice='plain'>search</arg>
+ <arg choice='plain'>show</arg>
+ <arg choice='plain'>update</arg>
+ <arg choice='plain'>install &synopsis-arg-pkgver;</arg>
+ <arg choice='plain'>remove &synopsis-arg-pkg;</arg>
+ <arg choice='plain'>upgrade</arg>
+ <arg choice='plain'>full-upgrade</arg>
+ <arg choice='plain'>edit-sources</arg>
+ &synopsis-help;
+ </group>
+</cmdsynopsis></refsynopsisdiv>">
+<!ENTITY synopsis-command-apt-get "<refsynopsisdiv><cmdsynopsis>
+ <command>apt-get</command>
+ <arg><option>-asqdyfmubV</option></arg>
+ &synopsis-arg-option;
+ &synopsis-arg-config;
+ &synopsis-arg-target-release;
+ &synopsis-arg-architecture;
+ <group choice='req'>
+ <arg choice='plain'>update</arg>
+ <arg choice='plain'>upgrade</arg>
+ <arg choice='plain'>dselect-upgrade</arg>
+ <arg choice='plain'>dist-upgrade</arg>
+ <arg choice='plain'>install &synopsis-arg-pkgver;</arg>
+ <arg choice='plain'>remove &synopsis-arg-pkg;</arg>
+ <arg choice='plain'>purge &synopsis-arg-pkg;</arg>
+ <arg choice='plain'>source &synopsis-arg-pkgver;</arg>
+ <arg choice='plain'>build-dep &synopsis-arg-pkgver;</arg>
+ <arg choice='plain'>download &synopsis-arg-pkgver;</arg>
+ <arg choice='plain'>check</arg>
+ <arg choice='plain'>clean</arg>
+ <arg choice='plain'>autoclean</arg>
+ <arg choice='plain'>autoremove</arg>
+ &synopsis-help;
+ </group>
+</cmdsynopsis></refsynopsisdiv>">
+<!ENTITY synopsis-command-apt-cache "<refsynopsisdiv><cmdsynopsis>
+ <command>apt-cache</command>
+ <arg><option>-agipns</option></arg>
+ &synopsis-arg-option;
+ &synopsis-arg-config;
+ <group choice='req'>
+ <arg choice='plain'>gencaches</arg>
+ <arg choice='plain'>showpkg &synopsis-arg-pkg;</arg>
+ <arg choice='plain'>showsrc &synopsis-arg-pkg;</arg>
+ <arg choice='plain'>stats</arg>
+ <arg choice='plain'>dump</arg>
+ <arg choice='plain'>dumpavail</arg>
+ <arg choice='plain'>unmet</arg>
+ <arg choice='plain'>search <arg choice='plain' rep='repeat'><replaceable>&synopsis-regex;</replaceable></arg></arg>
+ <arg choice='plain'>show &synopsis-arg-pkgver;</arg>
+ <arg choice='plain'>depends &synopsis-arg-pkgver;</arg>
+ <arg choice='plain'>rdepends &synopsis-arg-pkgver;</arg>
+ <arg choice='plain'>pkgnames <arg><replaceable>&synopsis-prefix;</replaceable></arg></arg>
+ <arg choice='plain'>dotty &synopsis-arg-pkgver;</arg>
+ <arg choice='plain'>xvcg &synopsis-arg-pkgver;</arg>
+ <arg choice='plain'>policy <arg rep='repeat'><replaceable>&synopsis-pkg;</replaceable></arg></arg>
+ <arg choice='plain'>madison &synopsis-arg-pkg;</arg>
+ &synopsis-help;
+ </group>
+</cmdsynopsis></refsynopsisdiv>">
+<!ENTITY synopsis-command-apt-cdrom "<refsynopsisdiv><cmdsynopsis>
+ <command>apt-cdrom</command>
+ <arg><option>-rmfan</option></arg>
+ <arg><option>-d=<replaceable>&synopsis-cdrom-mount;</replaceable></option></arg>
+ &synopsis-arg-option;
+ &synopsis-arg-config;
+ <group choice='req'>
+ <arg choice='plain'>add</arg>
+ <arg choice='plain'>ident</arg>
+ &synopsis-help;
+ </group>
+</cmdsynopsis></refsynopsisdiv>">
+<!--<arg><option>- -format '<replaceable>&#37;f \"&#37;v\";&#37;n</replaceable>'</option></arg>-->
+<!ENTITY synopsis-command-apt-config "<refsynopsisdiv><cmdsynopsis>
+ <command>apt-config</command>
+ <arg><option>--empty</option></arg>
+ <arg><option>--format '<replaceable>&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n</replaceable>'</option></arg>
+ &synopsis-arg-option;
+ &synopsis-arg-config;
+ <group choice='req'>
+ <arg choice='plain'>shell</arg>
+ <arg choice='plain'>dump</arg>
+ &synopsis-help;
+ </group>
+</cmdsynopsis></refsynopsisdiv>">
+<!ENTITY synopsis-command-apt-extracttemplates "<refsynopsisdiv><cmdsynopsis>
+ <command>apt-extracttemplates</command>
+ <arg><option>-t=<replaceable>&synopsis-tmp-directory;</replaceable></option></arg>
+ <arg choice='plain' rep='repeat'>&synopsis-param-filename;</arg>
+ &synopsis-help;
+</cmdsynopsis></refsynopsisdiv>">
+<!ENTITY synopsis-arg-ftparchive "<arg choice='plain' rep='repeat'><replaceable>&synopsis-path;</replaceable></arg><arg><filename><replaceable>&synopsis-override;</replaceable></filename><arg><replaceable>&synopsis-pathprefix;</replaceable></arg></arg>">
+<!ENTITY synopsis-command-apt-ftparchive "<refsynopsisdiv><cmdsynopsis>
+ <command>apt-ftparchive</command>
+ <arg><option>-dsq</option></arg>
+ <arg><option>--md5</option></arg>
+ <arg><option>--delink</option></arg>
+ <arg><option>--readonly</option></arg>
+ <arg><option>--contents</option></arg>
+ <arg><option>--arch <replaceable>architecture</replaceable></option></arg>
+ &synopsis-arg-option;
+ &synopsis-arg-config;
+ <group choice='req'>
+ <arg choice='plain'>packages &synopsis-arg-ftparchive;</arg>
+ <arg choice='plain'>sources &synopsis-arg-ftparchive;</arg>
+ <arg choice='plain'>contents <arg choice='plain'><replaceable>&synopsis-path;</replaceable></arg></arg>
+ <arg choice='plain'>release <arg choice='plain'><replaceable>&synopsis-path;</replaceable></arg></arg>
+ <arg choice='plain'>generate <arg choice='plain'><replaceable>&synopsis-config-file;</replaceable></arg> <arg choice='plain' rep='repeat'><replaceable>&synopsis-section;</replaceable></arg></arg>
+ <arg choice='plain'>clean <arg choice='plain'><replaceable>&synopsis-config-file;</replaceable></arg></arg>
+ &synopsis-help;
+ </group>
+</cmdsynopsis></refsynopsisdiv>">
+<!ENTITY synopsis-param-keyid "<replaceable>&synopsis-keyid;</replaceable>">
+<!ENTITY synopsis-command-apt-key "<refsynopsisdiv><cmdsynopsis>
+ <command>apt-key</command>
+ <arg><option>--keyring &synopsis-param-filename;</option></arg>
+ <group choice='req'>
+ <arg choice='plain'>add &synopsis-param-filename;</arg>
+ <arg choice='plain'>del &synopsis-param-keyid;</arg>
+ <arg choice='plain'>export &synopsis-param-keyid;</arg>
+ <arg choice='plain'>exportall</arg>
+ <arg choice='plain'>list</arg>
+ <arg choice='plain'>finger</arg>
+ <arg choice='plain'>adv</arg>
+ <arg choice='plain'>update</arg>
+ <arg choice='plain'>net-update</arg>
+ &synopsis-help;
+ </group>
+</cmdsynopsis></refsynopsisdiv>">
+<!ENTITY synopsis-command-apt-mark "<refsynopsisdiv><cmdsynopsis>
+ <command>apt-mark</command>
+ <group choice='plain'>
+ <group choice='req'>
+ <arg choice='plain'><option>-f=&synopsis-param-filename;</option></arg>
+ <arg choice='plain'>
+ <group choice='req'>
+ <arg choice='plain'>auto</arg>
+ <arg choice='plain'>manual</arg>
+ </group>
+ &synopsis-arg-pkg;
+ </arg>
+ <arg choice='plain'>
+ <group choice='req'>
+ <arg choice='plain'>showauto</arg>
+ <arg choice='plain'>showmanual</arg>
+ </group>
+ <arg choice='opt' rep='repeat'><replaceable>&synopsis-pkg;</replaceable></arg>
+ </arg>
+ </group>
+ &synopsis-help;
+ </group>
+</cmdsynopsis><cmdsynopsis><command>apt-mark</command>
+ <group choice='plain'>
+ <arg choice='plain'>
+ <group choice='req'>
+ <arg choice='plain'>hold</arg>
+ <arg choice='plain'>unhold</arg>
+ <arg choice='plain'>install</arg>
+ <arg choice='plain'>remove</arg>
+ <arg choice='plain'>purge</arg>
+ </group>
+ &synopsis-arg-pkg;
+ </arg>
+ <arg choice='plain'>
+ <group choice='req'>
+ <arg choice='plain'>showhold</arg>
+ <arg choice='plain'>showinstall</arg>
+ <arg choice='plain'>showremove</arg>
+ <arg choice='plain'>showpurge</arg>
+ </group>
+ <arg choice='opt' rep='repeat'><replaceable>&synopsis-pkg;</replaceable></arg>
+ </arg>
+ </group>
+</cmdsynopsis></refsynopsisdiv>">
+<!ENTITY synopsis-command-apt-sortpkgs "<refsynopsisdiv><cmdsynopsis>
+ <command>apt-sortpkgs</command>
+ <arg><option>-s</option></arg>
+ &synopsis-arg-option;
+ &synopsis-arg-config;
+ <arg choice='plain' rep='repeat'>&synopsis-param-filename;</arg>
+ &synopsis-help;
+</cmdsynopsis></refsynopsisdiv>">
diff --git a/doc/apt.8.xml b/doc/apt.8.xml
new file mode 100644
index 000000000..a383070b5
--- /dev/null
+++ b/doc/apt.8.xml
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<refentry>
+
+ <refentryinfo>
+ &apt-author.team;
+ &apt-email;
+ &apt-product;
+ <!-- The last update date -->
+ <date>2015-10-20T00:00:00Z</date>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>apt</refentrytitle>
+ <manvolnum>8</manvolnum>
+ <refmiscinfo class="manual">APT</refmiscinfo>
+ </refmeta>
+
+ <!-- Man page title -->
+ <refnamediv>
+ <refname>apt</refname>
+ <refpurpose>command-line interface</refpurpose>
+ </refnamediv>
+
+ &synopsis-command-apt;
+
+ <refsect1><title>Description</title>
+ <para><command>apt</command> provides a high-level commandline interface for
+ the package management system. It is intended as an end user interface and
+ enables some options better suited for interactive usage by default
+ compared to more specialized APT tools like &apt-get; and &apt-cache;.
+ </para><para>
+ Much like <command>apt</command> itself, its manpage is intended as an end
+ user interface and as such only mentions the most used commands and options
+ partly to not duplicate information in multiple places and partly to avoid
+ overwhelming readers with a cornucopia of options and details.
+ </para>
+
+ <variablelist>
+ <varlistentry><term><option>update</option> (&apt-get;)</term>
+ <listitem><para><option>update</option> is used to download package
+ information from all configured sources. Other commands operate on
+ this data to e.g. perform package upgrades or search in and display
+ details about all packages available for installation.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>upgrade</option> (&apt-get;)</term>
+ <listitem><para><option>upgrade</option> is used to install available
+ upgrades of all packages currently installed on the system from the
+ sources configured via &sources-list;. New packages will be
+ installed if required to satisfy dependencies, but existing
+ packages will never be removed. If an upgrade for a package requires
+ the remove of an installed package the upgrade for this package
+ isn't performed.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>full-upgrade</option> (&apt-get;)</term>
+ <listitem><para><literal>full-upgrade</literal> performs the function of
+ upgrade but will remove currently installed packages if this is
+ needed to upgrade the system as a whole.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>install</option>, <option>remove</option>, <option>purge</option> (&apt-get;)</term>
+ <listitem><para>Performs the requested action on one or more packages
+ specified via &regex;, &glob; or exact match. The requested action
+ can be overridden for specific packages by append a plus (+) to the
+ package name to install this package or a minus (-) to remove it.
+ </para><para>
+ A specific version of a package can be selected for installation by
+ following the package name with an equals (=) and the version of the
+ package to select. Alternatively the version from a specific release can be
+ selected by following the package name with a forward slash (/) and
+ codename (&debian-stable-codename;, &debian-testing-codename;, sid …) or suite name (stable,
+ testing, unstable). This will also select versions from this release
+ for dependencies of this package if needed to satisfy the request.
+ </para><para>
+ Removing a package removes all packaged data, but leaves usually
+ small (modified) user configuration files behind, in case the
+ remove was an accident. Just issuing an installation request for the
+ accidentally removed package will restore its function as before in
+ that case. On the other hand you can get rid of these leftovers
+ by calling <command>purge</command> even on already removed
+ packages. Note that this does not affect any data or configuration
+ stored in your home directory.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>autoremove</option> (&apt-get;)</term>
+ <listitem><para>
+ <literal>autoremove</literal> is used to remove packages that were
+ automatically installed to satisfy dependencies for other packages
+ and are now no longer needed as dependencies changed or the package(s)
+ needing them were removed in the meantime.
+ </para><para>
+ You should check that the list does not include applications you have
+ grown to like even though they were once installed just as a
+ dependency of another package. You can mark such a package as manually
+ installed by using &apt-mark;. Packages which you have installed explicitly
+ via <command>install</command> are also never proposed for automatic removal.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>search</option> (&apt-cache;)</term>
+ <listitem><para><option>search</option> can be used to search for the given
+ &regex; term(s) in the list of available packages and display
+ matches. This can e.g. be useful if you are looking for packages
+ having a specific feature. If you are looking for a package
+ including a specific file try &apt-file;.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>show</option> (&apt-cache;)</term>
+ <listitem><para>Show information about the given package(s) including
+ its dependencies, installation and download size, sources the
+ package is available from, the description of the packages content
+ and much more. It can e.g. be helpful to look at this information
+ before allowing &apt; to remove a package or while searching for
+ new packages to install.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>list</option> (work-in-progress)</term>
+ <listitem><para><option>list</option> is somewhat similar to <command>dpkg-query --list</command>
+ in that it can display a list of packages satisfying certain
+ criteria. It supports &glob; patterns for matching package names as
+ well as options to list installed (<option>--installed</option>),
+ upgradeable (<option>--upgradeable</option>) or all available
+ (<option>--all-versions</option>) versions.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>edit-sources</option> (work-in-progress)</term>
+ <listitem><para><literal>edit-sources</literal> lets you edit
+ your &sources-list; files in your preferred texteditor while also
+ providing basic sanity checks.
+ </para></listitem>
+ </varlistentry>
+
+
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>Script Usage and Differences from Other APT Tools</title>
+ <para>
+ The &apt; commandline is designed as an end-user tool and it may
+ change behavior between versions. While it tries not to break
+ backward compatibility this is not guaranteed either if a change
+ seems beneficial for interactive use.
+ </para><para>
+ All features of &apt; are available in dedicated APT tools like &apt-get;
+ and &apt-cache; as well. &apt; just changes the default value of some
+ options (see &apt-conf; and specifically the Binary scope). So you should
+ prefer using these commands (potentially with some additional options
+ enabled) in your scripts as they keep backward compatibility as much as possible.
+ </para>
+ </refsect1>
+
+ <refsect1><title>See Also</title>
+ <para>&apt-get;, &apt-cache;, &sources-list;,
+ &apt-conf;, &apt-config;,
+ The APT User's guide in &guidesdir;, &apt-preferences;, the APT Howto.</para>
+ </refsect1>
+
+ <refsect1><title>Diagnostics</title>
+ <para><command>apt</command> returns zero on normal operation, decimal 100 on error.</para>
+ </refsect1>
+ &manbugs;
+</refentry>
diff --git a/doc/apt.conf.5.xml b/doc/apt.conf.5.xml
new file mode 100644
index 000000000..260c66c46
--- /dev/null
+++ b/doc/apt.conf.5.xml
@@ -0,0 +1,1322 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<refentry>
+
+ <refentryinfo>
+ &apt-author.jgunthorpe;
+ &apt-author.team;
+ <author>
+ &apt-name.dburrows;
+ <contrib>Initial documentation of Debug::*.</contrib>
+ <email>dburrows@debian.org</email>
+ </author>
+ &apt-email;
+ &apt-product;
+ <!-- The last update date -->
+ <date>2016-11-25T00:00:00Z</date>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>apt.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ <refmiscinfo class="manual">APT</refmiscinfo>
+ </refmeta>
+
+ <!-- Man page title -->
+ <refnamediv>
+ <refname>apt.conf</refname>
+ <refpurpose>Configuration file for APT</refpurpose>
+ </refnamediv>
+
+ <refsect1><title>Description</title>
+ <para><filename>/etc/apt/apt.conf</filename> is the main configuration
+ file shared by all the tools in the APT suite of tools, though it is by
+ no means the only place options can be set. The suite also shares a common
+ command line parser to provide a uniform environment.</para>
+
+ <orderedlist>
+ <para>When an APT tool starts up it will read the configuration files
+ in the following order:</para>
+ <listitem><para>the file specified by the <envar>APT_CONFIG</envar>
+ environment variable (if any)</para></listitem>
+ <listitem><para>all files in <literal>Dir::Etc::Parts</literal> in
+ alphanumeric ascending order which have either no or "<literal>conf</literal>"
+ as filename extension and which only contain alphanumeric,
+ hyphen (-), underscore (_) and period (.) characters.
+ Otherwise APT will print a notice that it has ignored a file, unless that
+ file matches a pattern in the <literal>Dir::Ignore-Files-Silently</literal>
+ configuration list - in which case it will be silently ignored.</para></listitem>
+ <listitem><para>the main configuration file specified by
+ <literal>Dir::Etc::main</literal></para></listitem>
+ <listitem><para>all options set in the binary specific configuration
+ subtree are moved into the root of the tree.</para></listitem>
+ <listitem><para>the command line options are applied to override the
+ configuration directives or to load even more configuration files.</para></listitem>
+ </orderedlist>
+ </refsect1>
+ <refsect1><title>Syntax</title>
+ <para>The configuration file is organized in a tree with options organized into
+ functional groups. Option specification is given with a double colon
+ notation; for instance <literal>APT::Get::Assume-Yes</literal> is an option within
+ the APT tool group, for the Get tool. Options do not inherit from their
+ parent groups.</para>
+
+ <para>Syntactically the configuration language is modeled after what the ISC tools
+ such as bind and dhcp use. Lines starting with
+ <literal>//</literal> are treated as comments (ignored), as well as all text
+ between <literal>/*</literal> and <literal>*/</literal>, just like C/C++ comments.
+ Each line is of the form
+ <literal>APT::Get::Assume-Yes "true";</literal>.
+ The quotation marks and trailing semicolon are required.
+ The value must be on one line, and there is no kind of string concatenation.
+ Values must not include backslashes or extra quotation marks.
+ Option names are made up of alphanumeric characters and the characters "/-:._+".
+ A new scope can be opened with curly braces, like this:</para>
+
+<informalexample><programlisting>
+APT {
+ Get {
+ Assume-Yes "true";
+ Fix-Broken "true";
+ };
+};
+</programlisting></informalexample>
+
+ <para>with newlines placed to make it more readable. Lists can be created by
+ opening a scope and including a single string enclosed in quotes followed by a
+ semicolon. Multiple entries can be included, separated by a semicolon.</para>
+
+<informalexample><programlisting>
+DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
+</programlisting></informalexample>
+
+ <para>In general the sample configuration file &configureindex;
+ is a good guide for how it should look.</para>
+
+ <para>Case is not significant in names of configuration items, so in the
+ previous example you could use <literal>dpkg::pre-install-pkgs</literal>.</para>
+
+ <para>Names for the configuration items are optional if a list is defined as can be seen in
+ the <literal>DPkg::Pre-Install-Pkgs</literal> example above. If you don't specify a name a
+ new entry will simply add a new option to the list. If you specify a name you can override
+ the option in the same way as any other option by reassigning a new value to the option.</para>
+
+ <para>Two special commands are defined: <literal>#include</literal> (which is
+ deprecated and not supported by alternative implementations) and
+ <literal>#clear</literal>. <literal>#include</literal> will include the
+ given file, unless the filename ends in a slash, in which case the whole
+ directory is included.
+ <literal>#clear</literal> is used to erase a part of the configuration tree. The
+ specified element and all its descendants are erased.
+ (Note that these lines also need to end with a semicolon.)</para>
+
+ <para>
+ The <literal>#clear</literal> command is the only way to delete a list or
+ a complete scope. Reopening a scope (or using the syntax described below
+ with an appended <literal>::</literal>) will <emphasis>not</emphasis>
+ override previously written entries. Options can only be overridden by
+ addressing a new value to them - lists and scopes can't be overridden,
+ only cleared.
+ </para>
+
+ <para>All of the APT tools take an -o option which allows an arbitrary configuration
+ directive to be specified on the command line. The syntax is a full option
+ name (<literal>APT::Get::Assume-Yes</literal> for instance) followed by an equals
+ sign then the new value of the option. To append a new element to a list, add a
+ trailing <literal>::</literal> to the name of the list.
+ (As you might suspect, the scope syntax can't be used on the command line.)</para>
+
+ <para>
+ Note that appending items to a list using <literal>::</literal> only works
+ for one item per line, and that you should not use it in combination with
+ the scope syntax (which adds <literal>::</literal> implicitly). Using both
+ syntaxes together will trigger a bug which some users unfortunately depend
+ on: an option with the unusual name "<literal>::</literal>" which acts
+ like every other option with a name. This introduces many problems; for
+ one thing, users who write multiple lines in this
+ <emphasis>wrong</emphasis> syntax in the hope of appending to a list will
+ achieve the opposite, as only the last assignment for this option
+ "<literal>::</literal>" will be used. Future versions of APT will raise
+ errors and stop working if they encounter this misuse, so please correct
+ such statements now while APT doesn't explicitly complain about them.
+ </para>
+ </refsect1>
+
+ <refsect1><title>The APT Group</title>
+ <para>This group of options controls general APT behavior as well as holding the
+ options for all of the tools.</para>
+
+ <variablelist>
+ <varlistentry><term><option>Architecture</option></term>
+ <listitem><para>System Architecture; sets the architecture to use when fetching files and
+ parsing package lists. The internal default is the architecture apt was
+ compiled for.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Architectures</option></term>
+ <listitem><para>
+ All Architectures the system supports. For instance, CPUs implementing
+ the <literal>amd64</literal> (also called <literal>x86-64</literal>)
+ instruction set are also able to execute binaries compiled for the
+ <literal>i386</literal> (<literal>x86</literal>) instruction set. This
+ list is used when fetching files and parsing package lists. The
+ initial default is always the system's native architecture
+ (<literal>APT::Architecture</literal>), and foreign architectures are
+ added to the default list when they are registered via
+ <command>dpkg --add-architecture</command>.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Compressor</option></term>
+ <listitem><para>
+ This scope defines which compression formats are supported, how compression
+ and decompression can be performed if support for this format isn't built
+ into apt directly and a cost-value indicating how costly it is to compress
+ something in this format. As an example the following configuration stanza
+ would allow apt to download and uncompress as well as create and store
+ files with the low-cost <literal>.reversed</literal> file extension which
+ it will pass to the command <command>rev</command> without additional
+ commandline parameters for compression and uncompression:
+<informalexample><programlisting>
+APT::Compressor::rev {
+ Name "rev";
+ Extension ".reversed";
+ Binary "rev";
+ CompressArg {};
+ UncompressArg {};
+ Cost "10";
+};
+</programlisting></informalexample>
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Build-Profiles</option></term>
+ <listitem><para>
+ List of all build profiles enabled for build-dependency resolution,
+ without the "<literal>profile.</literal>" namespace prefix.
+ By default this list is empty. The <envar>DEB_BUILD_PROFILES</envar>
+ as used by &dpkg-buildpackage; overrides the list notation.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Default-Release</option></term>
+ <listitem><para>Default release to install packages from if more than one
+ version is available. Contains release name, codename or release version. Examples: 'stable', 'testing',
+ 'unstable', '&debian-stable-codename;', '&debian-testing-codename;', '4.0', '5.0*'. See also &apt-preferences;.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Ignore-Hold</option></term>
+ <listitem><para>Ignore held packages; this global option causes the problem resolver to
+ ignore held packages in its decision making.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Clean-Installed</option></term>
+ <listitem><para>Defaults to on. When turned on the autoclean feature will remove any packages
+ which can no longer be downloaded from the cache. If turned off then
+ packages that are locally installed are also excluded from cleaning - but
+ note that APT provides no direct means to reinstall them.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Immediate-Configure</option></term>
+ <listitem><para>
+ Defaults to on, which will cause APT to install essential and important
+ packages as soon as possible in an install/upgrade operation, in order
+ to limit the effect of a failing &dpkg; call. If this option is
+ disabled, APT treats an important package in the same way as an extra
+ package: between the unpacking of the package A and its configuration
+ there can be many other unpack or configuration calls for other
+ unrelated packages B, C etc. If these cause the &dpkg; call to fail
+ (e.g. because package B's maintainer scripts generate an error), this
+ results in a system state in which package A is unpacked but
+ unconfigured - so any package depending on A is now no longer
+ guaranteed to work, as its dependency on A is no longer satisfied.
+ </para><para>
+ The immediate configuration marker is also applied in the potentially
+ problematic case of circular dependencies, since a dependency with the
+ immediate flag is equivalent to a Pre-Dependency. In theory this allows
+ APT to recognise a situation in which it is unable to perform immediate
+ configuration, abort, and suggest to the user that the option should be
+ temporarily deactivated in order to allow the operation to proceed.
+ Note the use of the word "theory" here; in the real world this problem
+ has rarely been encountered, in non-stable distribution versions, and
+ was caused by wrong dependencies of the package in question or by a
+ system in an already broken state; so you should not blindly disable
+ this option, as the scenario mentioned above is not the only problem it
+ can help to prevent in the first place.
+ </para><para>
+ Before a big operation like <literal>dist-upgrade</literal> is run
+ with this option disabled you should try to explicitly
+ <literal>install</literal> the package APT is unable to configure
+ immediately; but please make sure you also report your problem to your
+ distribution and to the APT team with the buglink below, so they can
+ work on improving or correcting the upgrade process.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Force-LoopBreak</option></term>
+ <listitem><para>
+ Never enable this option unless you <emphasis>really</emphasis> know
+ what you are doing. It permits APT to temporarily remove an essential
+ package to break a Conflicts/Conflicts or Conflicts/Pre-Depends loop
+ between two essential packages. <emphasis>Such a loop should never exist
+ and is a grave bug</emphasis>. This option will work if the essential
+ packages are not <command>tar</command>, <command>gzip</command>,
+ <command>libc</command>, <command>dpkg</command>, <command>dash</command>
+ or anything that those packages depend on.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Cache-Start</option></term><term><option>Cache-Grow</option></term><term><option>Cache-Limit</option></term>
+ <listitem><para>APT uses since version 0.7.26 a resizable memory mapped cache file to store the available
+ information. <literal>Cache-Start</literal> acts as a hint of the size the cache will grow to,
+ and is therefore the amount of memory APT will request at startup. The default value is
+ 20971520 bytes (~20 MB). Note that this amount of space needs to be available for APT;
+ otherwise it will likely fail ungracefully, so for memory restricted devices this value should
+ be lowered while on systems with a lot of configured sources it should be increased.
+ <literal>Cache-Grow</literal> defines in bytes with the default of 1048576 (~1 MB) how much
+ the cache size will be increased in the event the space defined by <literal>Cache-Start</literal>
+ is not enough. This value will be applied again and again until either the cache is big
+ enough to store all information or the size of the cache reaches the <literal>Cache-Limit</literal>.
+ The default of <literal>Cache-Limit</literal> is 0 which stands for no limit.
+ If <literal>Cache-Grow</literal> is set to 0 the automatic growth of the cache is disabled.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Build-Essential</option></term>
+ <listitem><para>Defines which packages are considered essential build dependencies.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Get</option></term>
+ <listitem><para>The Get subsection controls the &apt-get; tool; please see its
+ documentation for more information about the options here.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Cache</option></term>
+ <listitem><para>The Cache subsection controls the &apt-cache; tool; please see its
+ documentation for more information about the options here.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>CDROM</option></term>
+ <listitem><para>The CDROM subsection controls the &apt-cdrom; tool; please see its
+ documentation for more information about the options here.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>The Acquire Group</title>
+ <para>The <literal>Acquire</literal> group of options controls the
+ download of packages as well as the various "acquire methods" responsible
+ for the download itself (see also &sources-list;).</para>
+
+ <variablelist>
+ <varlistentry><term><option>Check-Valid-Until</option></term>
+ <listitem><para>
+ Security related option defaulting to true, as giving a Release file's
+ validation an expiration date prevents replay attacks over a long
+ timescale, and can also for example help users to identify mirrors
+ that are no longer updated - but the feature depends on the
+ correctness of the clock on the user system. Archive maintainers are
+ encouraged to create Release files with the
+ <literal>Valid-Until</literal> header, but if they don't or a
+ stricter value is desired the <literal>Max-ValidTime</literal>
+ option below can be used.
+ The <option>Check-Valid-Until</option> option of &sources-list; entries should be
+ preferred to disable the check selectively instead of using this global override.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Max-ValidTime</option></term>
+ <listitem><para>Maximum time (in seconds) after its creation (as indicated
+ by the <literal>Date</literal> header) that the <filename>Release</filename>
+ file should be considered valid.
+ If the Release file itself includes a <literal>Valid-Until</literal> header
+ the earlier date of the two is used as the expiration date.
+ The default value is <literal>0</literal> which stands for "valid forever".
+ Archive specific settings can be made by appending the label of the archive
+ to the option name. Preferably, the same can be achieved for specific
+ &sources-list; entries by using the <option>Valid-Until-Max</option> option there.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Min-ValidTime</option></term>
+ <listitem><para>Minimum time (in seconds) after its creation (as indicated
+ by the <literal>Date</literal> header) that the <filename>Release</filename>
+ file should be considered valid.
+ Use this if you need to use a seldom updated (local) mirror of a more
+ frequently updated archive with a <literal>Valid-Until</literal> header
+ instead of completely disabling the expiration date checking.
+ Archive specific settings can and should be used by appending the label of
+ the archive to the option name. Preferably, the same can be achieved for specific
+ &sources-list; entries by using the <option>Valid-Until-Min</option> option there.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>PDiffs</option></term>
+ <listitem><para>Try to download deltas called <literal>PDiffs</literal> for
+ indexes (like <filename>Packages</filename> files) instead of
+ downloading whole ones. True by default. Preferably, this can be set
+ for specific &sources-list; entries or index files by using the
+ <option>PDiffs</option> option there.</para>
+ <para>Two sub-options to limit the use of PDiffs are also available:
+ <literal>FileLimit</literal> can be used to specify a maximum number of
+ PDiff files should be downloaded to update a file. <literal>SizeLimit</literal>
+ on the other hand is the maximum percentage of the size of all patches
+ compared to the size of the targeted file. If one of these limits is
+ exceeded the complete file is downloaded instead of the patches.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>By-Hash</option></term>
+ <listitem><para>Try to download indexes via an URI constructed from a
+ hashsum of the expected file rather than downloaded via a well-known
+ stable filename. True by default, but automatically disabled if the
+ source indicates no support for it. Usage can be forced with the special
+ value "force". Preferably, this can be set for specific &sources-list; entries
+ or index files by using the <option>By-Hash</option> option there.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Queue-Mode</option></term>
+ <listitem><para>Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</literal> or
+ <literal>access</literal> which determines how APT parallelizes outgoing
+ connections. <literal>host</literal> means that one connection per target host
+ will be opened, <literal>access</literal> means that one connection per URI type
+ will be opened.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Retries</option></term>
+ <listitem><para>Number of retries to perform. If this is non-zero APT will retry failed
+ files the given number of times.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Source-Symlinks</option></term>
+ <listitem><para>Use symlinks for source archives. If set to true then source archives will
+ be symlinked when possible instead of copying. True is the default.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>http</option></term>
+ <listitem><para><literal>http::Proxy</literal> sets the default proxy to use for HTTP
+ URIs. It is in the standard form of <literal>http://[[user][:pass]@]host[:port]/</literal>.
+ Per host proxies can also be specified by using the form
+ <literal>http::Proxy::&lt;host&gt;</literal> with the special keyword <literal>DIRECT</literal>
+ meaning to use no proxies. If no one of the above settings is specified,
+ <envar>http_proxy</envar> environment variable
+ will be used.</para>
+
+ <para>Three settings are provided for cache control with HTTP/1.1 compliant
+ proxy caches.
+ <literal>No-Cache</literal> tells the proxy not to use its cached
+ response under any circumstances.
+ <literal>Max-Age</literal> sets the allowed maximum age (in seconds) of
+ an index file in the cache of the proxy.
+ <literal>No-Store</literal> specifies that the proxy should not store
+ the requested archive files in its cache, which can be used to prevent
+ the proxy from polluting its cache with (big) .deb files.</para>
+
+ <para>The option <literal>timeout</literal> sets the timeout timer used by the method;
+ this value applies to the connection as well as the data timeout.</para>
+
+ <para>The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to
+ enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e.g. on
+ high-latency connections. It specifies how many requests are sent in a pipeline.
+ APT tries to detect and workaround misbehaving webservers and proxies at runtime, but
+ if you know that yours does not conform to the HTTP/1.1 specification pipelining can
+ be disabled by setting the value to 0. It is enabled by default with the value 10.</para>
+
+ <para><literal>Acquire::http::AllowRedirect</literal> controls whether APT will follow
+ redirects, which is enabled by default.</para>
+
+ <para>The used bandwidth can be limited with
+ <literal>Acquire::http::Dl-Limit</literal> which accepts integer
+ values in kilobytes per second. The default value is 0 which
+ deactivates the limit and tries to use all available bandwidth.
+ Note that this option implicitly disables downloading from
+ multiple servers at the same time.</para>
+
+ <para><literal>Acquire::http::User-Agent</literal> can be used to set a different
+ User-Agent for the http download method as some proxies allow access for clients
+ only if the client uses a known identifier.</para>
+
+ <para><literal>Acquire::http::Proxy-Auto-Detect</literal> can be used to
+ specify an external command to discover the http proxy to use. The first
+ and only parameter is an URI denoting the host to be contacted to allow
+ for host-specific configuration. APT expects the command to output the
+ proxy on stdout as a single line in the style <literal>http://proxy:port/</literal>
+ or the word <literal>DIRECT</literal> if no proxy should be used. No output
+ indicates that the generic proxy settings should be used.
+
+ Note that auto-detection will not be used for a host if a host-specific proxy
+ configuration is already set via <literal>Acquire::http::Proxy::<replaceable>HOST</replaceable></literal>.
+
+ See the &squid-deb-proxy-client; package for an example implementation that
+ uses avahi.
+
+ This option takes precedence over the legacy option name
+ <literal>ProxyAutoDetect</literal>.
+ </para>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>https</option></term>
+ <listitem><para>
+ The <literal>Cache-control</literal>, <literal>Timeout</literal>,
+ <literal>AllowRedirect</literal>, <literal>Dl-Limit</literal> and
+ <literal>proxy</literal> options work for HTTPS URIs in the same way
+ as for the <literal>http</literal> method, and default to the same
+ values if they are not explicitly set. The
+ <literal>Pipeline-Depth</literal> option is not yet supported.
+ </para>
+
+ <para><literal>CaInfo</literal> suboption specifies place of file that
+ holds info about trusted certificates.
+ <literal>&lt;host&gt;::CaInfo</literal> is the corresponding per-host option.
+ <literal>Verify-Peer</literal> boolean suboption determines whether or not the
+ server's host certificate should be verified against trusted certificates.
+ <literal>&lt;host&gt;::Verify-Peer</literal> is the corresponding per-host option.
+ <literal>Verify-Host</literal> boolean suboption determines whether or not the
+ server's hostname should be verified.
+ <literal>&lt;host&gt;::Verify-Host</literal> is the corresponding per-host option.
+ <literal>SslCert</literal> determines what certificate to use for client
+ authentication. <literal>&lt;host&gt;::SslCert</literal> is the corresponding per-host option.
+ <literal>SslKey</literal> determines what private key to use for client
+ authentication. <literal>&lt;host&gt;::SslKey</literal> is the corresponding per-host option.
+ <literal>SslForceVersion</literal> overrides default SSL version to use.
+ It can contain either of the strings '<literal>TLSv1</literal>' or
+ '<literal>SSLv3</literal>'.
+ <literal>&lt;host&gt;::SslForceVersion</literal> is the corresponding per-host option.
+ </para></listitem></varlistentry>
+
+ <varlistentry><term><option>ftp</option></term>
+ <listitem><para>
+ <literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs.
+ It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</literal>.
+ Per host proxies can also be specified by using the form
+ <literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword <literal>DIRECT</literal>
+ meaning to use no proxies. If no one of the above settings is specified,
+ <envar>ftp_proxy</envar> environment variable
+ will be used. To use an FTP
+ proxy you will have to set the <literal>ftp::ProxyLogin</literal> script in the
+ configuration file. This entry specifies the commands to send to tell
+ the proxy server what to connect to. Please see
+ &configureindex; for an example of
+ how to do this. The substitution variables representing the corresponding
+ URI component are <literal>$(PROXY_USER)</literal>,
+ <literal>$(PROXY_PASS)</literal>, <literal>$(SITE_USER)</literal>,
+ <literal>$(SITE_PASS)</literal>, <literal>$(SITE)</literal> and
+ <literal>$(SITE_PORT)</literal>.</para>
+
+ <para>The option <literal>timeout</literal> sets the timeout timer used by the method;
+ this value applies to the connection as well as the data timeout.</para>
+
+ <para>Several settings are provided to control passive mode. Generally it is
+ safe to leave passive mode on; it works in nearly every environment.
+ However, some situations require that passive mode be disabled and port
+ mode FTP used instead. This can be done globally or for connections that
+ go through a proxy or for a specific host (see the sample config file
+ for examples).</para>
+
+ <para>It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</envar>
+ environment variable to an HTTP URL - see the discussion of the http method
+ above for syntax. You cannot set this in the configuration file and it is
+ not recommended to use FTP over HTTP due to its low efficiency.</para>
+
+ <para>The setting <literal>ForceExtended</literal> controls the use of RFC2428
+ <literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is false, which means
+ these commands are only used if the control connection is IPv6. Setting this
+ to true forces their use even on IPv4 connections. Note that most FTP servers
+ do not support RFC2428.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>cdrom</option></term>
+ <listitem><para>
+ For URIs using the <literal>cdrom</literal> method, the only configurable
+ option is the mount point, <literal>cdrom::Mount</literal>, which must be
+ the mount point for the CD-ROM (or DVD, or whatever) drive as specified in
+ <filename>/etc/fstab</filename>. It is possible to provide alternate mount
+ and unmount commands if your mount point cannot be listed in the fstab.
+ The syntax is to put <literallayout>/cdrom/::Mount "foo";</literallayout> within
+ the <literal>cdrom</literal> block. It is important to have the trailing slash.
+ Unmount commands can be specified using UMount.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>gpgv</option></term>
+ <listitem><para>
+ For GPGV URIs the only configurable option is <literal>gpgv::Options</literal>,
+ which passes additional parameters to gpgv.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>CompressionTypes</option></term>
+ <listitem><para>List of compression types which are understood by the acquire methods.
+ Files like <filename>Packages</filename> can be available in various compression formats.
+ By default the acquire methods can decompress and recompress many common formats like <command>xz</command> and
+ <command>gzip</command>; with this scope the supported formats can be queried, modified
+ as well as support for more formats added (see also <option>APT::Compressor</option>). The syntax for this is:
+ <synopsis>Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> "<replaceable>Methodname</replaceable>";</synopsis>
+ </para><para>Also, the <literal>Order</literal> subgroup can be used to define in which order
+ the acquire system will try to download the compressed files. The acquire system will try the first
+ and proceed with the next compression type in this list on error, so to prefer one over the other type
+ simply add the preferred type first - types not already added will be implicitly appended
+ to the end of the list, so e.g. <synopsis>Acquire::CompressionTypes::Order:: "gz";</synopsis> can
+ be used to prefer <command>gzip</command> compressed files over all other compression formats.
+ If <command>xz</command> should be preferred over <command>gzip</command> and <command>bzip2</command> the
+ configure setting should look like this: <synopsis>Acquire::CompressionTypes::Order { "xz"; "gz"; };</synopsis>
+ It is not needed to add <literal>bz2</literal> to the list explicitly as it will be added automatically.</para>
+ <para>Note that the
+ <literal>Dir::Bin::<replaceable>Methodname</replaceable></literal>
+ will be checked at run time. If this option has been set and support for
+ this format isn't directly built into apt, the method will only be used if
+ this file exists; e.g. for the <literal>bzip2</literal> method (the
+ inbuilt) setting is: <literallayout>Dir::Bin::bzip2 "/bin/bzip2";</literallayout>
+ Note also that list entries specified on the command line will be added at the end of the list
+ specified in the configuration files, but before the default entries. To prefer a type in this case
+ over the ones specified in the configuration files you can set the option direct - not in list style.
+ This will not override the defined list; it will only prefix the list with this type.</para>
+ <para>The special type <literal>uncompressed</literal> can be used to give uncompressed files a
+ preference, but note that most archives don't provide uncompressed files so this is mostly only
+ useable for local mirrors.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>GzipIndexes</option></term>
+ <listitem><para>
+ When downloading <literal>gzip</literal> compressed indexes (Packages, Sources, or
+ Translations), keep them gzip compressed locally instead of unpacking
+ them. This saves quite a lot of disk space at the expense of more CPU
+ requirements when building the local package caches. False by default.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Languages</option></term>
+ <listitem><para>The Languages subsection controls which <filename>Translation</filename> files are downloaded
+ and in which order APT tries to display the description-translations. APT will try to display the first
+ available description in the language which is listed first. Languages can be defined with their
+ short or long language codes. Note that not all archives provide <filename>Translation</filename>
+ files for every language - the long language codes are especially rare.</para>
+ <para>The default list includes "environment" and "en". "<literal>environment</literal>" has a special meaning here:
+ it will be replaced at runtime with the language codes extracted from the <literal>LC_MESSAGES</literal> environment variable.
+ It will also ensure that these codes are not included twice in the list. If <literal>LC_MESSAGES</literal>
+ is set to "C" only the <filename>Translation-en</filename> file (if available) will be used.
+ To force APT to use no Translation file use the setting <literal>Acquire::Languages=none</literal>. "<literal>none</literal>"
+ is another special meaning code which will stop the search for a suitable <filename>Translation</filename> file.
+ This tells APT to download these translations too, without actually
+ using them unless the environment specifies the languages. So the
+ following example configuration will result in the order "en, de" in an
+ English locale or "de, en" in a German one. Note that "fr" is
+ downloaded, but not used unless APT is used in a French locale (where
+ the order would be "fr, de, en").
+ <programlisting>Acquire::Languages { "environment"; "de"; "en"; "none"; "fr"; };</programlisting></para>
+ <para>Note: To prevent problems resulting from APT being executed in different environments
+ (e.g. by different users or by other programs) all Translation files which are found in
+ <filename>/var/lib/apt/lists/</filename> will be added to the end of the list
+ (after an implicit "<literal>none</literal>").</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>ForceIPv4</option></term>
+ <listitem><para>
+ When downloading, force to use only the IPv4 protocol.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>ForceIPv6</option></term>
+ <listitem><para>
+ When downloading, force to use only the IPv6 protocol.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>MaxReleaseFileSize</option></term>
+ <listitem><para>
+ The maximum file size of Release/Release.gpg/InRelease files.
+ The default is 10MB.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>EnableSrvRecords</option></term>
+ <listitem><para>
+ This option controls if apt will use the DNS SRV server record
+ as specified in RFC 2782 to select an alternative server to
+ connect to.
+ The default is "true".
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>AllowInsecureRepositories</option></term>
+ <listitem><para>
+ Allow update operations to load data files from
+ repositories without sufficient security information.
+ The default value is "<literal>false</literal>".
+ Concept, implications as well as alternatives are detailed in &apt-secure;.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>AllowWeakRepositories</option></term>
+ <listitem><para>
+ Allow update operations to load data files from
+ repositories which provide security information, but these
+ are deemed no longer cryptographically strong enough.
+ The default value is "<literal>false</literal>".
+ Concept, implications as well as alternatives are detailed in &apt-secure;.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>AllowDowngradeToInsecureRepositories</option></term>
+ <listitem><para>
+ Allow that a repository that was previously gpg signed to become
+ unsigned during an update operation. When there is no valid signature
+ for a previously trusted repository apt will refuse the update. This
+ option can be used to override this protection. You almost certainly
+ never want to enable this. The default is <literal>false</literal>.
+ Concept, implications as well as alternatives are detailed in &apt-secure;.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Changelogs::URI</option> scope</term>
+ <listitem><para>
+ Acquiring changelogs can only be done if an URI is known from where to get them.
+ Preferable the Release file indicates this in a 'Changelogs' field. If this isn't
+ available the Label/Origin field of the Release file is used to check if a
+ <literal>Acquire::Changelogs::URI::Label::<replaceable>LABEL</replaceable></literal> or
+ <literal>Acquire::Changelogs::URI::Origin::<replaceable>ORIGIN</replaceable></literal> option
+ exists and if so this value is taken. The value in the Release file can be overridden
+ with <literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</replaceable></literal>
+ or <literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGIN</replaceable></literal>.
+
+ The value should be a normal URI to a text file, except that package specific data is
+ replaced with the placeholder <literal>@CHANGEPATH@</literal>. The
+ value for it is: 1. if the package is from a component (e.g. <literal>main</literal>)
+ this is the first part otherwise it is omitted, 2. the first letter of source package name,
+ except if the source package name starts with '<literal>lib</literal>' in which case it will
+ be the first four letters. 3. The complete source package name. 4. the complete name again and
+ 5. the source version.
+ The first (if present), second, third and fourth part are separated by a slash ('<literal>/</literal>')
+ and between the fourth and fifth part is an underscore ('<literal>_</literal>').
+
+ The special value '<literal>no</literal>' is available for this option indicating that
+ this source can't be used to acquire changelog files from. Another source will be tried
+ if available in this case.
+ </para></listitem>
+ </varlistentry>
+
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>Binary specific configuration</title>
+ <para>Especially with the introduction of the <command>apt</command> binary
+ it can be useful to set certain options only for a specific binary as
+ even options which look like they would effect only a certain binary like
+ <option>APT::Get::Show-Versions</option> effect
+ <command>apt-get</command> as well as <command>apt</command>.
+ </para>
+ <para>Setting an option for a specific binary only can be achieved by
+ setting the option inside the
+ <option>Binary::<replaceable>specific-binary</replaceable></option>
+ scope. Setting the option <option>APT::Get::Show-Versions</option> for
+ the <command>apt</command> only can e.g. by done by setting
+ <option>Binary::apt::APT::Get::Show-Versions</option> instead.</para>
+ <para>Note that as seen in the DESCRIPTION section further above you can't
+ set binary-specific options on the commandline itself nor in
+ configuration files loaded via the commandline.</para>
+ </refsect1>
+
+ <refsect1><title>Directories</title>
+
+ <para>The <literal>Dir::State</literal> section has directories that pertain to local
+ state information. <literal>lists</literal> is the directory to place downloaded
+ package lists in and <literal>status</literal> is the name of the &dpkg; status file.
+ <literal>preferences</literal> is the name of the APT <filename>preferences</filename> file.
+ <literal>Dir::State</literal> contains the default directory to prefix on all
+ sub-items if they do not start with <filename>/</filename> or <filename>./</filename>.</para>
+
+ <para><literal>Dir::Cache</literal> contains locations pertaining to local cache
+ information, such as the two package caches <literal>srcpkgcache</literal> and
+ <literal>pkgcache</literal> as well as the location to place downloaded archives,
+ <literal>Dir::Cache::archives</literal>. Generation of caches can be turned off
+ by setting <literal>pkgcache</literal> or <literal>srcpkgcache</literal> to
+ <literal>""</literal>. This will slow down startup but save disk space. It
+ is probably preferable to turn off the pkgcache rather than the srcpkgcache.
+ Like <literal>Dir::State</literal> the default directory is contained in
+ <literal>Dir::Cache</literal></para>
+
+ <para><literal>Dir::Etc</literal> contains the location of configuration files,
+ <literal>sourcelist</literal> gives the location of the sourcelist and
+ <literal>main</literal> is the default configuration file (setting has no effect,
+ unless it is done from the config file specified by
+ <envar>APT_CONFIG</envar>).</para>
+
+ <para>The <literal>Dir::Parts</literal> setting reads in all the config fragments in
+ lexical order from the directory specified. After this is done then the
+ main config file is loaded.</para>
+
+ <para>Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::Bin::Methods</literal>
+ specifies the location of the method handlers and <literal>gzip</literal>,
+ <literal>bzip2</literal>, <literal>lzma</literal>,
+ <literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</literal>
+ <literal>dpkg-buildpackage</literal> and <literal>apt-cache</literal> specify the location
+ of the respective programs.</para>
+
+ <para>
+ The configuration item <literal>RootDir</literal> has a special
+ meaning. If set, all paths will be
+ relative to <literal>RootDir</literal>, <emphasis>even paths that
+ are specified absolutely</emphasis>. So, for instance, if
+ <literal>RootDir</literal> is set to
+ <filename>/tmp/staging</filename> and
+ <literal>Dir::State::status</literal> is set to
+ <filename>/var/lib/dpkg/status</filename>, then the status file
+ will be looked up in
+ <filename>/tmp/staging/var/lib/dpkg/status</filename>.
+ If you want to prefix only relative paths, set <literal>Dir</literal> instead.
+ </para>
+
+ <para>
+ The <literal>Ignore-Files-Silently</literal> list can be used to specify
+ which files APT should silently ignore while parsing the files in the
+ fragment directories. Per default a file which end with <literal>.disabled</literal>,
+ <literal>~</literal>, <literal>.bak</literal> or <literal>.dpkg-[a-z]+</literal>
+ is silently ignored. As seen in the last default value these patterns can use regular
+ expression syntax.
+ </para>
+ </refsect1>
+
+ <refsect1><title>APT in DSelect</title>
+ <para>
+ When APT is used as a &dselect; method several configuration directives
+ control the default behavior. These are in the <literal>DSelect</literal> section.</para>
+
+ <variablelist>
+ <varlistentry><term><option>Clean</option></term>
+ <listitem><para>Cache Clean mode; this value may be one of
+ <literal>always</literal>, <literal>prompt</literal>,
+ <literal>auto</literal>, <literal>pre-auto</literal> and
+ <literal>never</literal>.
+ <literal>always</literal> and <literal>prompt</literal> will remove
+ all packages from the cache after upgrading, <literal>prompt</literal>
+ (the default) does so conditionally.
+ <literal>auto</literal> removes only those packages which are no longer
+ downloadable (replaced with a new version for instance).
+ <literal>pre-auto</literal> performs this action before downloading
+ new packages.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>options</option></term>
+ <listitem><para>The contents of this variable are passed to &apt-get; as command line
+ options when it is run for the install phase.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Updateoptions</option></term>
+ <listitem><para>The contents of this variable are passed to &apt-get; as command line
+ options when it is run for the update phase.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>PromptAfterUpdate</option></term>
+ <listitem><para>If true the [U]pdate operation in &dselect; will always prompt to continue.
+ The default is to prompt only on error.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>How APT calls &dpkg;</title>
+ <para>Several configuration directives control how APT invokes &dpkg;. These are
+ in the <literal>DPkg</literal> section.</para>
+
+ <variablelist>
+ <varlistentry><term><option>options</option></term>
+ <listitem><para>This is a list of options to pass to &dpkg;. The options must be specified
+ using the list notation and each list item is passed as a single argument
+ to &dpkg;.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Pre-Invoke</option></term><term><option>Post-Invoke</option></term>
+ <listitem><para>This is a list of shell commands to run before/after invoking &dpkg;.
+ Like <literal>options</literal> this must be specified in list notation. The
+ commands are invoked in order using <filename>/bin/sh</filename>; should any
+ fail APT will abort.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Pre-Install-Pkgs</option></term>
+ <listitem><para>This is a list of shell commands to run before invoking &dpkg;. Like
+ <literal>options</literal> this must be specified in list notation. The commands
+ are invoked in order using <filename>/bin/sh</filename>; should any fail APT
+ will abort. APT will pass the filenames of all .deb files it is going to
+ install to the commands, one per line on the requested file descriptor, defaulting
+ to standard input.</para>
+
+ <para>Version 2 of this protocol sends more information through the requested
+ file descriptor: a line with the text <literal>VERSION 2</literal>,
+ the APT configuration space, and a list of package actions with filename
+ and version information.</para>
+
+ <para>Each configuration directive line has the form
+ <literal>key=value</literal>. Special characters (equal signs, newlines,
+ nonprintable characters, quotation marks, and percent signs in
+ <literal>key</literal> and newlines, nonprintable characters, and percent
+ signs in <literal>value</literal>) are %-encoded. Lists are represented
+ by multiple <literal>key::=value</literal> lines with the same key. The
+ configuration section ends with a blank line.</para>
+
+ <para>Package action lines consist of five fields in Version 2: package
+ name (without architecture qualification even if foreign), old version,
+ direction of version change (&lt; for upgrades, &gt; for downgrades, = for
+ no change), new version, action. The version fields are "-" for no version
+ at all (for example when installing a package for the first time; no
+ version is treated as earlier than any real version, so that is an
+ upgrade, indicated as <literal>- &lt; 1.23.4</literal>). The action field
+ is "**CONFIGURE**" if the package is being configured, "**REMOVE**" if it
+ is being removed, or the filename of a .deb file if it is being
+ unpacked.</para>
+
+ <para>In Version 3 after each version field follows the architecture
+ of this version, which is "-" if there is no version, and a field showing
+ the MultiArch type "same", "foreign", "allowed" or "none". Note that "none"
+ is an incorrect typename which is just kept to remain compatible, it
+ should be read as "no" and users are encouraged to support both.</para>
+
+ <para>The version of the protocol to be used for the command
+ <literal><replaceable>cmd</replaceable></literal> can be chosen by setting
+ <literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::Version</literal>
+ accordingly, the default being version 1. If APT isn't supporting the requested
+ version it will send the information in the highest version it has support for instead.
+ </para>
+
+ <para>The file descriptor to be used to send the information can be requested with
+ <literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::InfoFD</literal>
+ which defaults to <literal>0</literal> for standard input and is available since
+ version 0.9.11. Support for the option can be detected by looking for the environment
+ variable <envar>APT_HOOK_INFO_FD</envar> which contains the number of the used
+ file descriptor as a confirmation.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Run-Directory</option></term>
+ <listitem><para>APT chdirs to this directory before invoking &dpkg;, the default is
+ <filename>/</filename>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>Build-options</option></term>
+ <listitem><para>These options are passed to &dpkg-buildpackage; when compiling packages;
+ the default is to disable signing and produce all binaries.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>DPkg::ConfigurePending</option></term>
+ <listitem><para>If this option is set APT will call <command>dpkg --configure --pending</command>
+ to let &dpkg; handle all required configurations and triggers. This option is activated by default,
+ but deactivating it could be useful if you want to run APT multiple times in a row - e.g. in an installer.
+ In this scenario you could deactivate this option in all but the last run.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Periodic and Archives options</title>
+ <para><literal>APT::Periodic</literal> and <literal>APT::Archives</literal>
+ groups of options configure behavior of apt periodic updates, which is
+ done by the <literal>/usr/lib/apt/apt.systemd.daily</literal> script. See the top of
+ this script for the brief documentation of these options.
+ </para>
+ </refsect1>
+
+ <refsect1>
+ <title>Debug options</title>
+ <para>
+ Enabling options in the <literal>Debug::</literal> section will
+ cause debugging information to be sent to the standard error
+ stream of the program utilizing the <literal>apt</literal>
+ libraries, or enable special program modes that are primarily
+ useful for debugging the behavior of <literal>apt</literal>.
+ Most of these options are not interesting to a normal user, but a
+ few may be:
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>Debug::pkgProblemResolver</literal> enables output
+ about the decisions made by
+ <literal>dist-upgrade, upgrade, install, remove, purge</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Debug::NoLocking</literal> disables all file
+ locking. This can be used to run some operations (for
+ instance, <literal>apt-get -s install</literal>) as a
+ non-root user.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Debug::pkgDPkgPM</literal> prints out the actual
+ command line each time that <literal>apt</literal> invokes
+ &dpkg;.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Debug::IdentCdrom</literal> disables the inclusion
+ of statfs data in CD-ROM IDs. <!-- TODO: provide a
+ motivating example, except I haven't a clue why you'd want
+ to do this. -->
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ <para>
+ A full list of debugging options to apt follows.
+ </para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>Debug::Acquire::cdrom</option></term>
+
+ <listitem>
+ <para>
+ Print information related to accessing
+ <literal>cdrom://</literal> sources.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::Acquire::ftp</option></term>
+
+ <listitem>
+ <para>
+ Print information related to downloading packages using
+ FTP.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::Acquire::http</option></term>
+
+ <listitem>
+ <para>
+ Print information related to downloading packages using
+ HTTP.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::Acquire::https</option></term>
+
+ <listitem>
+ <para>
+ Print information related to downloading packages using
+ HTTPS.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::Acquire::gpgv</option></term>
+
+ <listitem>
+ <para>
+ Print information related to verifying cryptographic
+ signatures using <literal>gpg</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::aptcdrom</option></term>
+
+ <listitem>
+ <para>
+ Output information about the process of accessing
+ collections of packages stored on CD-ROMs.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::BuildDeps</option></term>
+ <listitem>
+ <para>
+ Describes the process of resolving build-dependencies in
+ &apt-get;.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::Hashes</option></term>
+ <listitem>
+ <para>
+ Output each cryptographic hash that is generated by the
+ <literal>apt</literal> libraries.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::IdentCDROM</option></term>
+ <listitem>
+ <para>
+ Do not include information from <literal>statfs</literal>,
+ namely the number of used and free blocks on the CD-ROM
+ filesystem, when generating an ID for a CD-ROM.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::NoLocking</option></term>
+ <listitem>
+ <para>
+ Disable all file locking. For instance, this will allow
+ two instances of <quote><literal>apt-get
+ update</literal></quote> to run at the same time.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::pkgAcquire</option></term>
+
+ <listitem>
+ <para>
+ Log when items are added to or removed from the global
+ download queue.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::pkgAcquire::Auth</option></term>
+ <listitem>
+ <para>
+ Output status messages and errors related to verifying
+ checksums and cryptographic signatures of downloaded files.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::pkgAcquire::Diffs</option></term>
+ <listitem>
+ <para>
+ Output information about downloading and applying package
+ index list diffs, and errors relating to package index list
+ diffs.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::pkgAcquire::RRed</option></term>
+
+ <listitem>
+ <para>
+ Output information related to patching apt package lists
+ when downloading index diffs instead of full indices.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::pkgAcquire::Worker</option></term>
+
+ <listitem>
+ <para>
+ Log all interactions with the sub-processes that actually
+ perform downloads.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::pkgAutoRemove</option></term>
+
+ <listitem>
+ <para>
+ Log events related to the automatically-installed status of
+ packages and to the removal of unused packages.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::pkgDepCache::AutoInstall</option></term>
+ <listitem>
+ <para>
+ Generate debug messages describing which packages are being
+ automatically installed to resolve dependencies. This
+ corresponds to the initial auto-install pass performed in,
+ e.g., <literal>apt-get install</literal>, and not to the
+ full <literal>apt</literal> dependency resolver; see
+ <literal>Debug::pkgProblemResolver</literal> for that.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::pkgDepCache::Marker</option></term>
+ <listitem>
+ <para>
+ Generate debug messages describing which packages are marked
+ as keep/install/remove while the ProblemResolver does his work.
+ Each addition or deletion may trigger additional actions;
+ they are shown indented two additional spaces under the original entry.
+ The format for each line is <literal>MarkKeep</literal>,
+ <literal>MarkDelete</literal> or <literal>MarkInstall</literal> followed by
+ <literal>package-name &lt;a.b.c -&gt; d.e.f | x.y.z&gt; (section)</literal>
+ where <literal>a.b.c</literal> is the current version of the package,
+ <literal>d.e.f</literal> is the version considered for installation and
+ <literal>x.y.z</literal> is a newer version, but not considered for installation
+ (because of a low pin score). The later two can be omitted if there is none or if
+ it is the same as the installed version.
+ <literal>section</literal> is the name of the section the package appears in.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::pkgDPkgPM</option></term>
+ <listitem>
+ <para>
+ When invoking &dpkg;, output the precise command line with
+ which it is being invoked, with arguments separated by a
+ single space character.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::pkgDPkgProgressReporting</option></term>
+ <listitem>
+ <para>
+ Output all the data received from &dpkg; on the status file
+ descriptor and any errors encountered while parsing it.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::pkgOrderList</option></term>
+
+ <listitem>
+ <para>
+ Generate a trace of the algorithm that decides the order in
+ which <literal>apt</literal> should pass packages to
+ &dpkg;.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::pkgPackageManager</option></term>
+
+ <listitem>
+ <para>
+ Output status messages tracing the steps performed when
+ invoking &dpkg;.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::pkgPolicy</option></term>
+
+ <listitem>
+ <para>
+ Output the priority of each package list on startup.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::pkgProblemResolver</option></term>
+
+ <listitem>
+ <para>
+ Trace the execution of the dependency resolver (this
+ applies only to what happens when a complex dependency
+ problem is encountered).
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::pkgProblemResolver::ShowScores</option></term>
+ <listitem>
+ <para>
+ Display a list of all installed packages with their calculated score
+ used by the pkgProblemResolver. The description of the package
+ is the same as described in <literal>Debug::pkgDepCache::Marker</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::sourceList</option></term>
+
+ <listitem>
+ <para>
+ Print information about the vendors read from
+ <filename>/etc/apt/vendors.list</filename>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>Debug::RunScripts</option></term>
+ <listitem>
+ <para>
+ Display the external commands that are called by apt hooks.
+ This includes e.g. the config options
+ <literal>DPkg::{Pre,Post}-Invoke</literal> or
+ <literal>APT::Update::{Pre,Post}-Invoke</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+<!-- 2009/07/11 Currently used nowhere. The corresponding code
+is commented.
+ <varlistentry>
+ <term><literal>Debug::Vendor</literal></term>
+
+ <listitem>
+ <para>
+ Print information about each vendor.
+ </para>
+ </listitem>
+ </varlistentry>
+-->
+
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>Examples</title>
+ <para>&configureindex; is a
+ configuration file showing example values for all possible
+ options.</para>
+ </refsect1>
+
+ <refsect1><title>Files</title>
+ <variablelist>
+ &file-aptconf;
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>See Also</title>
+ <para>&apt-cache;, &apt-config;<!-- ? reading apt.conf -->, &apt-preferences;.</para>
+ </refsect1>
+
+ &manbugs;
+
+</refentry>
+
diff --git a/doc/apt.ent b/doc/apt.ent
new file mode 100644
index 000000000..6a3837b95
--- /dev/null
+++ b/doc/apt.ent
@@ -0,0 +1,243 @@
+<!ENTITY apt-author.team "
+ <author>
+ <othername>APT team</othername>
+ <contrib></contrib>
+ </author>
+">
+
+<!ENTITY apt-qapage "
+ <para>
+ <ulink url='http://packages.qa.debian.org/a/apt.html'>QA Page</ulink>
+ </para>
+">
+
+<!-- Boiler plate Bug reporting section -->
+<!ENTITY manbugs "
+ <refsect1><title>Bugs</title>
+ <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.
+ If you wish to report a bug in APT, please see
+ <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the
+ &reportbug; command.
+ </para>
+ </refsect1>
+">
+
+<!-- Boiler plate Author section -->
+<!ENTITY manauthor "
+ <refsect1><title>Author</title>
+ <para>APT was written by the APT team <email>apt@packages.debian.org</email>.
+ </para>
+ </refsect1>
+">
+
+<!-- Should be used within the option section of the text to
+ put in the blurb about -h, -v, -c and -o -->
+<!ENTITY apt-commonoptions "
+ <varlistentry><term><option>-h</option></term>
+ <term><option>--help</option></term>
+ <listitem><para>Show a short usage summary.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-v</option></term>
+ <term><option>--version</option></term>
+ <listitem><para>Show the program version.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-c</option></term>
+ <term><option>--config-file</option></term>
+ <listitem><para>Configuration File; Specify a configuration file to use.
+ The program will read the default configuration file and then this
+ configuration file. If configuration settings need to be set before the
+ default configuration files are parsed specify a file with the <envar>APT_CONFIG</envar>
+ environment variable. See &apt-conf; for syntax information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-o</option></term>
+ <term><option>--option</option></term>
+ <listitem><para>Set a Configuration Option; This will set an arbitrary
+ configuration option. The syntax is <option>-o Foo::Bar=bar</option>.
+ <option>-o</option> and <option>--option</option> can be used multiple
+ times to set different options.
+ </para>
+ </listitem>
+ </varlistentry>
+">
+
+<!-- Should be used within the option section of the text to
+ put in the blurb about -h, -v, -c and -o -->
+<!ENTITY apt-cmdblurb "
+ <para>All command line options may be set using the configuration file, the
+ descriptions indicate the configuration option to set. For boolean
+ options you can override the config file by using something like
+ <option>-f-</option>,<option>--no-f</option>, <option>-f=no</option>
+ or several other variations.
+ </para>
+">
+
+<!ENTITY file-aptconf "
+ <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>
+ <listitem><para>APT configuration file.
+ Configuration Item: <literal>Dir::Etc::Main</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>
+ <listitem><para>APT configuration file fragments.
+ Configuration Item: <literal>Dir::Etc::Parts</literal>.</para></listitem>
+ </varlistentry>
+">
+
+<!ENTITY file-cachearchives "
+ <varlistentry><term><filename>&cachedir;/archives/</filename></term>
+ <listitem><para>Storage area for retrieved package files.
+ Configuration Item: <literal>Dir::Cache::Archives</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>
+ <listitem><para>Storage area for package files in transit.
+ Configuration Item: <literal>Dir::Cache::Archives</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>
+ </varlistentry>
+">
+
+<!ENTITY file-preferences "
+ <varlistentry><term><filename>/etc/apt/preferences</filename></term>
+ <listitem><para>Version preferences file.
+ This is where you would specify &quot;pinning&quot;,
+ i.e. a preference to get certain packages
+ from a separate source
+ or from a different version of a distribution.
+ Configuration Item: <literal>Dir::Etc::Preferences</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>
+ <listitem><para>File fragments for the version preferences.
+ Configuration Item: <literal>Dir::Etc::PreferencesParts</literal>.</para></listitem>
+ </varlistentry>
+">
+
+<!ENTITY file-sourceslist "
+ <varlistentry><term><filename>/etc/apt/sources.list</filename></term>
+ <listitem><para>Locations to fetch packages from.
+ Configuration Item: <literal>Dir::Etc::SourceList</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>
+ <listitem><para>File fragments for locations to fetch packages from.
+ Configuration Item: <literal>Dir::Etc::SourceParts</literal>.</para></listitem>
+ </varlistentry>
+">
+
+<!ENTITY file-statelists "
+ <varlistentry><term><filename>&statedir;/lists/</filename></term>
+ <listitem><para>Storage area for state information for each package resource specified in
+ &sources-list;
+ Configuration Item: <literal>Dir::State::Lists</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>
+ <listitem><para>Storage area for state information in transit.
+ Configuration Item: <literal>Dir::State::Lists</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>
+ </varlistentry>
+">
+
+<!ENTITY file-trustedgpg "
+ <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>
+ <listitem><para>Keyring of local trusted keys, new keys will be added here.
+ Configuration Item: <literal>Dir::Etc::Trusted</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>
+ <listitem><para>File fragments for the trusted keys, additional keyrings can
+ be stored here (by other packages or the administrator).
+ Configuration Item <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>
+ </varlistentry>
+">
+
+<!ENTITY file-extended_states "
+ <varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>
+ <listitem><para>Status list of auto-installed packages.
+ Configuration Item: <literal>Dir::State::extended_states</literal>.
+ </para></listitem>
+ </varlistentry>
+">
+
+<!-- TRANSLATOR: This is the section header for the following paragraphs - comparable
+ to the other headers like NAME and DESCRIPTION and should therefore be uppercase. -->
+<!ENTITY translation-title "TRANSLATION">
+
+<!-- TRANSLATOR: This is a placeholder. You should write here who has contributed
+ to the translation in the past, who is responsible now and maybe further information
+ specially related to your translation. -->
+<!ENTITY translation-holder "
+ The english translation was done by John Doe <email>john@doe.org</email> in 2009,
+ 2010 and Daniela Acme <email>daniela@acme.us</email> in 2010 together with the
+ Debian Dummy l10n Team <email>debian-l10n-dummy@lists.debian.org</email>.
+">
+
+<!-- TRANSLATOR: As a translation is allowed to have 20% of untranslated/fuzzy strings
+ in a shipped manpage newer/modified paragraphs will maybe appear in english in
+ the generated manpage. This sentence is therefore here to tell the reader that this
+ is not a mistake by the translator - obviously the target is that at least for stable
+ releases this sentence is not needed. :) -->
+<!ENTITY translation-english "
+ Note that this translated document may contain untranslated parts.
+ This is done on purpose, to avoid losing content when the
+ translation is lagging behind the original content.
+">
+
+<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::pkgProblemResolver=1 -->
+<!ENTITY synopsis-config-string "config_string">
+
+<!-- TRANSLATOR: used as in -c=config_file e.g. -c=./apt.conf -->
+<!ENTITY synopsis-config-file "config_file">
+
+<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -t=squeeze apt/experimental -->
+<!ENTITY synopsis-target-release "target_release">
+
+<!-- TRANSLATOR: used as in -a=architecture e.g. -a=armel -->
+<!ENTITY synopsis-architecture "architecture">
+
+<!-- TRANSLATOR: used as in apt-get install pkg e.g. apt-get install awesome -->
+<!ENTITY synopsis-pkg "pkg">
+
+<!-- TRANSLATOR: used as in pkg=pkg_version_number e.g. apt=0.8.15 -->
+<!ENTITY synopsis-pkg-ver-number "pkg_version_number">
+
+<!-- TRANSLATOR: used as in apt-cache pkgnames prefix e.g. apt-cache pkgnames apt -->
+<!ENTITY synopsis-prefix "prefix">
+
+<!-- TRANSLATOR: used as in apt-cache search regex e.g. apt-cache search awesome -->
+<!ENTITY synopsis-regex "regex">
+
+<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -d=/media/cdrom -->
+<!ENTITY synopsis-cdrom-mount "cdrom_mount_point">
+
+<!-- TRANSLATOR: used as in apt-extracttemplates -t=temporary_directory e.g. apt-extracttemplates -t=/tmp -->
+<!ENTITY synopsis-tmp-directory "temporary_directory">
+
+<!-- TRANSLATOR: used as in apt-extracttemplates filename -->
+<!ENTITY synopsis-filename "filename">
+
+<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive packages path override-file pathprefix -->
+<!ENTITY synopsis-path "path">
+
+<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive packages path override-file pathprefix -->
+<!ENTITY synopsis-override "override-file">
+
+<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive packages path override-file pathprefix -->
+<!ENTITY synopsis-pathprefix "pathprefix">
+
+<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive generate section -->
+<!ENTITY synopsis-section "section">
+
+<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export 473041FA -->
+<!ENTITY synopsis-keyid "keyid">
+
diff --git a/doc/apt_preferences.5.xml b/doc/apt_preferences.5.xml
new file mode 100644
index 000000000..cac9a96e1
--- /dev/null
+++ b/doc/apt_preferences.5.xml
@@ -0,0 +1,723 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<refentry>
+
+ <refentryinfo>
+ &apt-author.team;
+ &apt-email;
+ &apt-product;
+ <!-- The last update date -->
+ <date>2015-08-15T00:00:00Z</date>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>apt_preferences</refentrytitle>
+ <manvolnum>5</manvolnum>
+ <refmiscinfo class="manual">APT</refmiscinfo>
+ </refmeta>
+
+ <!-- Man page title -->
+ <refnamediv>
+ <refname>apt_preferences</refname>
+ <refpurpose>Preference control file for APT</refpurpose>
+ </refnamediv>
+
+<refsect1>
+<title>Description</title>
+<para>The APT preferences file <filename>/etc/apt/preferences</filename>
+and the fragment files in the <filename>/etc/apt/preferences.d/</filename>
+folder can be used to control which versions of packages will be selected
+for installation.</para>
+
+<para>Several versions of a package may be available for installation when
+the &sources-list; file contains references to more than one distribution
+(for example, <literal>stable</literal> and <literal>testing</literal>).
+APT assigns a priority to each version that is available.
+Subject to dependency constraints, <command>apt-get</command> selects the
+version with the highest priority for installation.
+The APT preferences override the priorities that APT assigns to
+package versions by default, thus giving the user control over which
+one is selected for installation.</para>
+
+<para>Several instances of the same version of a package may be available when
+the &sources-list; file contains references to more than one source.
+In this case <command>apt-get</command> downloads the instance listed
+earliest in the &sources-list; file.
+The APT preferences do not affect the choice of instance, only
+the choice of version.</para>
+
+<para>Preferences are a strong power in the hands of a system administrator
+but they can become also their biggest nightmare if used without care!
+APT will not question the preferences, so wrong settings can
+lead to uninstallable packages or wrong decisions while upgrading packages.
+Even more problems will arise if multiple distribution releases are mixed
+without a good understanding of the following paragraphs.
+Packages included in a specific release aren't tested in (and
+therefore don't always work as expected in) older or newer releases, or
+together with other packages from different releases.
+You have been warned.</para>
+
+<para>Note that the files in the <filename>/etc/apt/preferences.d</filename>
+directory are parsed in alphanumeric ascending order and need to obey the
+following naming convention: The files have either no or "<literal>pref</literal>"
+as filename extension and only contain alphanumeric, hyphen (-),
+underscore (_) and period (.) characters.
+Otherwise APT will print a notice that it has ignored a file, unless that
+file matches a pattern in the <literal>Dir::Ignore-Files-Silently</literal>
+configuration list - in which case it will be silently ignored.</para>
+
+<refsect2><title>APT's Default Priority Assignments</title>
+
+<para>If there is no preferences file or if there is no entry in the file
+that applies to a particular version then the priority assigned to that
+version is the priority of the distribution to which that version
+belongs. It is possible to single out a distribution, "the target release",
+which receives a higher priority than other distributions do by default.
+The target release can be set on the <command>apt-get</command> command
+line or in the APT configuration file <filename>/etc/apt/apt.conf</filename>.
+Note that this has precedence over any general priority you set in the
+<filename>/etc/apt/preferences</filename> file described later, but not
+over specifically pinned packages.
+For example,
+
+<programlisting>
+<command>apt-get install -t testing <replaceable>some-package</replaceable></command>
+</programlisting>
+<programlisting>
+APT::Default-Release "stable";
+</programlisting>
+</para>
+
+<para>If the target release has been specified then APT uses the following
+algorithm to set the priorities of the versions of a package. Assign:
+
+<variablelist>
+<varlistentry>
+<term>priority 1</term>
+<listitem><simpara>to the versions coming from archives which in their <filename>Release</filename>
+files are marked as "NotAutomatic: yes" but <emphasis>not</emphasis> as "ButAutomaticUpgrades: yes"
+like the Debian <literal>experimental</literal> archive.</simpara></listitem>
+</varlistentry>
+
+<varlistentry>
+<term>priority 100</term>
+<listitem><simpara>to the version that is already installed (if any) and to the versions coming
+from archives which in their <filename>Release</filename> files are marked as "NotAutomatic: yes" and
+"ButAutomaticUpgrades: yes" like the Debian backports archive since <literal>squeeze-backports</literal>.
+</simpara></listitem>
+</varlistentry>
+
+<varlistentry>
+<term>priority 500</term>
+<listitem><simpara>to the versions that do not belong to the target release.</simpara></listitem>
+</varlistentry>
+
+<varlistentry>
+<term>priority 990</term>
+<listitem><simpara>to the versions that belong to the target release.</simpara></listitem>
+</varlistentry>
+</variablelist>
+
+The highest of those priorities whose description matches the version is assigned to the
+version.
+</para>
+
+<para>If the target release has not been specified then APT simply assigns
+priority 100 to all installed package versions and priority 500 to all
+uninstalled package versions, except versions coming from archives which
+in their <filename>Release</filename> files are marked as "NotAutomatic: yes" -
+these versions get the priority 1 or priority 100 if it is additionally marked
+as "ButAutomaticUpgrades: yes".</para>
+
+<para>APT then applies the following rules, listed in order of precedence,
+to determine which version of a package to install.
+<itemizedlist>
+<listitem><simpara>Never downgrade unless the priority of an available
+version exceeds 1000. ("Downgrading" is installing a less recent version
+of a package in place of a more recent version. Note that none of APT's
+default priorities exceeds 1000; such high priorities can only be set in
+the preferences file. Note also that downgrading a package
+can be risky.)</simpara></listitem>
+<listitem><simpara>Install the highest priority version.</simpara></listitem>
+<listitem><simpara>If two or more versions have the same priority,
+install the most recent one (that is, the one with the higher version
+number).</simpara></listitem>
+<listitem><simpara>If two or more versions have the same priority and
+version number but either the packages differ in some of their metadata or the
+<literal>--reinstall</literal> option is given, install the uninstalled one.</simpara></listitem>
+</itemizedlist>
+</para>
+
+<para>In a typical situation, the installed version of a package (priority 100)
+is not as recent as one of the versions available from the sources listed in
+the &sources-list; file (priority 500 or 990). Then the package will be upgraded
+when <command>apt-get install <replaceable>some-package</replaceable></command>
+or <command>apt-get upgrade</command> is executed.
+</para>
+
+<para>More rarely, the installed version of a package is <emphasis>more</emphasis> recent
+than any of the other available versions. The package will not be downgraded
+when <command>apt-get install <replaceable>some-package</replaceable></command>
+or <command>apt-get upgrade</command> is executed.</para>
+
+<para>Sometimes the installed version of a package is more recent than the
+version belonging to the target release, but not as recent as a version
+belonging to some other distribution. Such a package will indeed be upgraded
+when <command>apt-get install <replaceable>some-package</replaceable></command>
+or <command>apt-get upgrade</command> is executed,
+because at least <emphasis>one</emphasis> of the available versions has a higher
+priority than the installed version.</para>
+</refsect2>
+
+<refsect2><title>The Effect of APT Preferences</title>
+
+<para>The APT preferences file allows the system administrator to control the
+assignment of priorities. The file consists of one or more multi-line records
+separated by blank lines. Records can have one of two forms, a specific form
+and a general form.
+<itemizedlist>
+<listitem>
+<simpara>The specific form assigns a priority (a "Pin-Priority") to one or more
+specified packages with a specified version or version range. For example,
+the following record assigns a high priority to all versions of
+the <filename>perl</filename> package whose version number begins with "<literal>&good-perl;</literal>".
+Multiple packages can be separated by spaces.</simpara>
+
+<programlisting>
+Package: perl
+Pin: version &good-perl;*
+Pin-Priority: 1001
+</programlisting>
+</listitem>
+
+<listitem><simpara>The general form assigns a priority to all of the package versions in a
+given distribution (that is, to all the versions of packages that are
+listed in a certain <filename>Release</filename> file) or to all of the package
+versions coming from a particular Internet site, as identified by the
+site's fully qualified domain name.</simpara>
+
+<simpara>This general-form entry in the APT preferences file applies only
+to groups of packages. For example, the following record assigns a high
+priority to all package versions available from the local site.</simpara>
+
+<programlisting>
+Package: *
+Pin: origin ""
+Pin-Priority: 999
+</programlisting>
+
+<simpara>A note of caution: the keyword used here is "<literal>origin</literal>"
+which can be used to match a hostname. The following record will assign a high priority
+to all versions available from the server identified by the hostname "ftp.de.debian.org"</simpara>
+<programlisting>
+Package: *
+Pin: origin "ftp.de.debian.org"
+Pin-Priority: 999
+</programlisting>
+<simpara>This should <emphasis>not</emphasis> be confused with the Origin of a distribution as
+specified in a <filename>Release</filename> file. What follows the "Origin:" tag
+in a <filename>Release</filename> file is not an Internet address
+but an author or vendor name, such as "Debian" or "Ximian".</simpara>
+
+<simpara>The following record assigns a low priority to all package versions
+belonging to any distribution whose Archive name is "<literal>unstable</literal>".</simpara>
+
+<programlisting>
+Package: *
+Pin: release a=unstable
+Pin-Priority: 50
+</programlisting>
+
+<simpara>The following record assigns a high priority to all package versions
+belonging to any distribution whose Codename is "<literal>&debian-testing-codename;</literal>".</simpara>
+
+<programlisting>
+Package: *
+Pin: release n=&debian-testing-codename;
+Pin-Priority: 900
+</programlisting>
+
+<simpara>The following record assigns a high priority to all package versions
+belonging to any release whose Archive name is "<literal>stable</literal>"
+and whose release Version number is "<literal>&debian-stable-version;</literal>".</simpara>
+
+<programlisting>
+Package: *
+Pin: release a=stable, v=&debian-stable-version;
+Pin-Priority: 500
+</programlisting>
+</listitem>
+</itemizedlist>
+
+The effect of the comma operator is similar to an "and" in logic: All
+conditions must be satisfied for the pin to match. There is one exception:
+For any type of condition (such as two "a" conditions), only the last such
+condition is checked.
+</para>
+
+</refsect2>
+
+<refsect2><title>Regular expressions and &glob; syntax</title>
+<para>
+APT also supports pinning by &glob; expressions, and regular
+expressions surrounded by slashes. For example, the following
+example assigns the priority 500 to all packages from
+experimental where the name starts with gnome (as a &glob;-like
+expression) or contains the word kde (as a POSIX extended regular
+expression surrounded by slashes).
+</para>
+
+<programlisting>
+Package: gnome* /kde/
+Pin: release a=experimental
+Pin-Priority: 500
+</programlisting>
+
+<para>
+The rule for those expressions is that they can occur anywhere
+where a string can occur. Thus, the following pin assigns the
+priority 990 to all packages from a release starting with &ubuntu-codename;.
+</para>
+
+<programlisting>
+Package: *
+Pin: release n=&ubuntu-codename;*
+Pin-Priority: 990
+</programlisting>
+
+<para>
+If a regular expression occurs in a <literal>Package</literal> field,
+the behavior is the same as if this regular expression were replaced
+with a list of all package names it matches. It is undecided whether
+this will change in the future; thus you should always list wild-card
+pins first, so later specific pins override it.
+
+The pattern "<literal>*</literal>" in a Package field is not considered
+a &glob; expression in itself.
+</para>
+</refsect2>
+
+
+
+
+
+<refsect2>
+<title>How APT Interprets Priorities</title>
+
+<para>
+Priorities (P) assigned in the APT preferences file must be positive
+or negative integers. They are interpreted as follows (roughly speaking):
+
+<variablelist>
+<varlistentry>
+<term>P &gt;= 1000</term>
+<listitem><simpara>causes a version to be installed even if this
+constitutes a downgrade of the package</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term>990 &lt;= P &lt; 1000</term>
+<listitem><simpara>causes a version to be installed
+even if it does not come from the target release,
+unless the installed version is more recent</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term>500 &lt;= P &lt; 990</term>
+<listitem><simpara>causes a version to be installed
+unless there is a version available belonging to the target release
+or the installed version is more recent</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term>100 &lt;= P &lt; 500</term>
+<listitem><simpara>causes a version to be installed
+unless there is a version available belonging to some other
+distribution or the installed version is more recent</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term>0 &lt; P &lt; 100</term>
+<listitem><simpara>causes a version to be installed
+only if there is no installed version of the package</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term>P &lt; 0</term>
+<listitem><simpara>prevents the version from being installed</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term>P = 0</term>
+<listitem><simpara>has undefined behaviour, do not use it.</simpara></listitem>
+</varlistentry>
+</variablelist>
+</para>
+
+<para>
+The first specific-form record matching an available package version determines
+the priority of the package version.
+Failing that, the priority of the package is defined as the maximum of all
+priorities defined by generic-form records matching the version.
+Records defined using patterns in the Pin field other than "*" are treated like
+specific-form records.
+</para>
+
+<para>For example, suppose the APT preferences file contains the three
+records presented earlier:</para>
+
+<programlisting>
+Package: perl
+Pin: version &good-perl;*
+Pin-Priority: 1001
+
+Package: *
+Pin: origin ""
+Pin-Priority: 999
+
+Package: *
+Pin: release unstable
+Pin-Priority: 50
+</programlisting>
+
+<para>Then:
+<itemizedlist>
+<listitem><simpara>The most recent available version of the <literal>perl</literal>
+package will be installed, so long as that version's version number begins
+with "<literal>&good-perl;</literal>". If <emphasis>any</emphasis> &good-perl;* version of <literal>perl</literal> is
+available and the installed version is &bad-perl;*, then <literal>perl</literal> will be
+downgraded.</simpara></listitem>
+<listitem><simpara>A version of any package other than <literal>perl</literal>
+that is available from the local system has priority over other versions,
+even versions belonging to the target release.
+</simpara></listitem>
+<listitem><simpara>A version of a package whose origin is not the local
+system but some other site listed in &sources-list; and which belongs to
+an <literal>unstable</literal> distribution is only installed if it is selected
+for installation and no version of the package is already installed.
+</simpara></listitem>
+</itemizedlist>
+</para>
+</refsect2>
+
+<refsect2>
+<title>Determination of Package Version and Distribution Properties</title>
+
+<para>The locations listed in the &sources-list; file should provide
+<filename>Packages</filename> and <filename>Release</filename> files
+to describe the packages available at that location. </para>
+
+<para>The <filename>Packages</filename> file is normally found in the directory
+<filename>.../dists/<replaceable>dist-name</replaceable>/<replaceable>component</replaceable>/<replaceable>arch</replaceable></filename>:
+for example, <filename>.../dists/stable/main/binary-i386/Packages</filename>.
+It consists of a series of multi-line records, one for each package available
+in that directory. Only two lines in each record are relevant for setting
+APT priorities:
+<variablelist>
+<varlistentry>
+<term>the <literal>Package:</literal> line</term>
+<listitem><simpara>gives the package name</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term>the <literal>Version:</literal> line</term>
+<listitem><simpara>gives the version number for the named package</simpara></listitem>
+</varlistentry>
+</variablelist>
+</para>
+
+<para>The <filename>Release</filename> file is normally found in the directory
+<filename>.../dists/<replaceable>dist-name</replaceable></filename>:
+for example, <filename>.../dists/stable/Release</filename>,
+or <filename>.../dists/&debian-stable-codename;/Release</filename>.
+It consists of a single multi-line record which applies to <emphasis>all</emphasis> of
+the packages in the directory tree below its parent. Unlike the
+<filename>Packages</filename> file, nearly all of the lines in a <filename>Release</filename>
+file are relevant for setting APT priorities:
+
+<variablelist>
+<varlistentry>
+<term>the <literal>Archive:</literal> or <literal>Suite:</literal> line</term>
+<listitem><simpara>names the archive to which all the packages
+in the directory tree belong. For example, the line
+"Archive: stable" or
+"Suite: stable"
+specifies that all of the packages in the directory
+tree below the parent of the <filename>Release</filename> file are in a
+<literal>stable</literal> archive. Specifying this value in the APT preferences file
+would require the line:
+</simpara>
+<programlisting>
+Pin: release a=stable
+</programlisting>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term>the <literal>Codename:</literal> line</term>
+<listitem><simpara>names the codename to which all the packages
+in the directory tree belong. For example, the line
+"Codename: &debian-testing-codename;"
+specifies that all of the packages in the directory
+tree below the parent of the <filename>Release</filename> file belong to a version named
+<literal>&debian-testing-codename;</literal>. Specifying this value in the APT preferences file
+would require the line:
+</simpara>
+<programlisting>
+Pin: release n=&debian-testing-codename;
+</programlisting>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term>the <literal>Version:</literal> line</term>
+<listitem><simpara>names the release version. For example, the
+packages in the tree might belong to Debian release
+version &debian-stable-version;. Note that there is normally no version number for the
+<literal>testing</literal> and <literal>unstable</literal> distributions because they
+have not been released yet. Specifying this in the APT preferences
+file would require one of the following lines.
+</simpara>
+
+<programlisting>
+Pin: release v=&debian-stable-version;
+Pin: release a=stable, v=&debian-stable-version;
+Pin: release &debian-stable-version;
+</programlisting>
+
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term>the <literal>Component:</literal> line</term>
+<listitem><simpara>names the licensing component associated with the
+packages in the directory tree of the <filename>Release</filename> file.
+For example, the line "Component: main" specifies that
+all the packages in the directory tree are from the <literal>main</literal>
+component, which entails that they are licensed under terms listed
+in the Debian Free Software Guidelines. Specifying this component
+in the APT preferences file would require the line:
+</simpara>
+<programlisting>
+Pin: release c=main
+</programlisting>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term>the <literal>Origin:</literal> line</term>
+<listitem><simpara>names the originator of the packages in the
+directory tree of the <filename>Release</filename> file. Most commonly, this is
+<literal>Debian</literal>. Specifying this origin in the APT preferences file
+would require the line:
+</simpara>
+<programlisting>
+Pin: release o=Debian
+</programlisting>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term>the <literal>Label:</literal> line</term>
+<listitem><simpara>names the label of the packages in the directory tree
+of the <filename>Release</filename> file. Most commonly, this is
+<literal>Debian</literal>. Specifying this label in the APT preferences file
+would require the line:
+</simpara>
+<programlisting>
+Pin: release l=Debian
+</programlisting>
+</listitem>
+</varlistentry>
+</variablelist>
+</para>
+
+<para>All of the <filename>Packages</filename> and <filename>Release</filename>
+files retrieved from locations listed in the &sources-list; file are stored
+in the directory <filename>/var/lib/apt/lists</filename>, or in the file named
+by the variable <literal>Dir::State::Lists</literal> in the <filename>apt.conf</filename> file.
+For example, the file
+<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename>
+contains the <filename>Release</filename> file retrieved from the site
+<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> architecture
+files from the <literal>contrib</literal> component of the <literal>unstable</literal>
+distribution.</para>
+</refsect2>
+
+<refsect2>
+<title>Optional Lines in an APT Preferences Record</title>
+
+<para>Each record in the APT preferences file can optionally begin with
+one or more lines beginning with the word <literal>Explanation:</literal>.
+This provides a place for comments.</para>
+</refsect2>
+</refsect1>
+
+<refsect1>
+<title>Examples</title>
+<refsect2>
+<title>Tracking Stable</title>
+
+<para>The following APT preferences file will cause APT to assign a
+priority higher than the default (500) to all package versions belonging
+to a <literal>stable</literal> distribution and a prohibitively low priority to
+package versions belonging to other <literal>Debian</literal> distributions.
+
+<programlisting>
+Explanation: Uninstall or do not install any Debian-originated
+Explanation: package versions other than those in the stable distro
+Package: *
+Pin: release a=stable
+Pin-Priority: 900
+
+Package: *
+Pin: release o=Debian
+Pin-Priority: -10
+</programlisting>
+</para>
+
+<para>With a suitable &sources-list; file and the above preferences file,
+any of the following commands will cause APT to upgrade to the
+latest <literal>stable</literal> version(s).
+
+<programlisting>
+apt-get install <replaceable>package-name</replaceable>
+apt-get upgrade
+apt-get dist-upgrade
+</programlisting>
+</para>
+
+<para>The following command will cause APT to upgrade the specified
+package to the latest version from the <literal>testing</literal> distribution;
+the package will not be upgraded again unless this command is given
+again.
+
+<programlisting>
+apt-get install <replaceable>package</replaceable>/testing
+</programlisting>
+</para>
+</refsect2>
+
+ <refsect2>
+ <title>Tracking Testing or Unstable</title>
+
+<para>The following APT preferences file will cause APT to assign
+a high priority to package versions from the <literal>testing</literal>
+distribution, a lower priority to package versions from the
+<literal>unstable</literal> distribution, and a prohibitively low priority
+to package versions from other <literal>Debian</literal> distributions.
+
+<programlisting>
+Package: *
+Pin: release a=testing
+Pin-Priority: 900
+
+Package: *
+Pin: release a=unstable
+Pin-Priority: 800
+
+Package: *
+Pin: release o=Debian
+Pin-Priority: -10
+</programlisting>
+</para>
+
+<para>With a suitable &sources-list; file and the above preferences file,
+any of the following commands will cause APT to upgrade to the latest
+<literal>testing</literal> version(s).
+
+<programlisting>
+apt-get install <replaceable>package-name</replaceable>
+apt-get upgrade
+apt-get dist-upgrade
+</programlisting>
+</para>
+
+<para>The following command will cause APT to upgrade the specified
+package to the latest version from the <literal>unstable</literal> distribution.
+Thereafter, <command>apt-get upgrade</command> will upgrade
+the package to the most recent <literal>testing</literal> version if that is
+more recent than the installed version, otherwise, to the most recent
+<literal>unstable</literal> version if that is more recent than the installed
+version.
+
+<programlisting>
+apt-get install <replaceable>package</replaceable>/unstable
+</programlisting>
+</para>
+</refsect2>
+
+
+<refsect2>
+<title>Tracking the evolution of a codename release</title>
+
+<para>The following APT preferences file will cause APT to assign a
+priority higher than the default (500) to all package versions belonging
+to a specified codename of a distribution and a prohibitively low priority to
+package versions belonging to other <literal>Debian</literal> distributions,
+codenames and archives.
+Note that with this APT preference APT will follow the migration of a release
+from the archive <literal>testing</literal> to <literal>stable</literal> and
+later <literal>oldstable</literal>. If you want to follow for example the progress
+in <literal>testing</literal> notwithstanding the codename changes you should use
+the example configurations above.
+
+<programlisting>
+Explanation: Uninstall or do not install any Debian-originated package versions
+Explanation: other than those in the distribution codenamed with &debian-testing-codename; or sid
+Package: *
+Pin: release n=&debian-testing-codename;
+Pin-Priority: 900
+
+Explanation: Debian unstable is always codenamed with sid
+Package: *
+Pin: release n=sid
+Pin-Priority: 800
+
+Package: *
+Pin: release o=Debian
+Pin-Priority: -10
+</programlisting>
+</para>
+
+<para>With a suitable &sources-list; file and the above preferences file,
+any of the following commands will cause APT to upgrade to the
+latest version(s) in the release codenamed with <literal>&debian-testing-codename;</literal>.
+
+<programlisting>
+apt-get install <replaceable>package-name</replaceable>
+apt-get upgrade
+apt-get dist-upgrade
+</programlisting>
+</para>
+
+<para>The following command will cause APT to upgrade the specified
+package to the latest version from the <literal>sid</literal> distribution.
+Thereafter, <command>apt-get upgrade</command> will upgrade
+the package to the most recent <literal>&debian-testing-codename;</literal> version if that is
+more recent than the installed version, otherwise, to the most recent
+<literal>sid</literal> version if that is more recent than the installed
+version.
+
+<programlisting>
+apt-get install <replaceable>package</replaceable>/sid
+</programlisting>
+</para>
+</refsect2>
+</refsect1>
+
+<refsect1>
+<title>Files</title>
+ <variablelist>
+ &file-preferences;
+ </variablelist>
+</refsect1>
+
+<refsect1>
+<title>See Also</title>
+<para>&apt-get; &apt-cache; &apt-conf; &sources-list;
+</para>
+</refsect1>
+
+ &manbugs;
+
+</refentry>
diff --git a/doc/design.dbk b/doc/design.dbk
new file mode 100644
index 000000000..157e75c1a
--- /dev/null
+++ b/doc/design.dbk
@@ -0,0 +1,439 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<book lang="en">
+
+<title>The APT project design document</title>
+
+<bookinfo>
+
+<authorgroup>
+ <author>
+ <personname>Manoj Srivastava</personname><email>srivasta@debian.org</email>
+ </author>
+</authorgroup>
+
+<releaseinfo>Version &apt-product-version;</releaseinfo>
+
+<abstract>
+<para>
+This document is an overview of the specifications and design goals of the APT
+project. It also attempts to give a broad description of the implementation
+as well.
+</para>
+</abstract>
+
+<copyright><year>1997</year><holder>Manoj Srivastava</holder></copyright>
+
+<legalnotice>
+<title>License Notice</title>
+<para>
+APT, including this document, is free software; you may redistribute it and/or
+modify it under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any later
+version.
+</para>
+<para>
+This is distributed in the hope that it will be useful, but <emphasis>without
+any warranty</emphasis>; without even the implied warranty of merchantability
+or fitness for a particular purpose. See the GNU General Public License for
+more details.
+</para>
+<para>
+You should have received a copy of the GNU General Public License with your
+Debian system, in <literal>/usr/share/common-licenses/GPL</literal>, or with
+the <command>debiandoc-sgml</command> source package as the file
+<literal>COPYING</literal>. If not, write to the Free Software Foundation,
+Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+</para>
+</legalnotice>
+
+</bookinfo>
+
+<chapter id="introduction"><title>Introduction</title>
+<para>
+APT is supposed to be a replacement for dselect, and not a replacement for
+dpkg. However, since addition functionality has been required for APT, and
+given the fact that this is very closely related to dpkg, it is not
+unreasonable to expect that additional functionality in the underlying dpkg
+would also be requested.
+</para>
+<para>
+Deity/dselect are the first introduction that people have to Debian, and
+unfortunately this first impression contributes greatly to the public
+perception of the distribution. It is imperative that this be a showcase for
+Debian, rather than frighten novices away (which has been an accusation often
+levelled at the current system)
+</para>
+</chapter>
+
+<chapter id="ch2"><title>Requirements</title>
+<orderedlist numeration="arabic">
+<listitem>
+<para>
+APT should be a replacement for dselect. Therefore it should have all the
+functionality that dselect has currently. This is the primary means of
+interaction between the user and the package management system, and it should
+be able to handle all tasks involved in installing, upgrading, and routine
+management without having the users take recourse to the underlying management
+system.
+</para>
+</listitem>
+<listitem>
+<para>
+It should be easier to use and less confusing for novice users. The primary
+stimulus for the creation of APT was the perceived intractability, complexity,
+and non-intuitive behavior of the existing user interface, and as such, human
+factors must be a primary mandate of APT.
+</para>
+</listitem>
+<listitem>
+<para>
+It should be able to group packages more flexibly, and possibly allow
+operations based on a group. One should be able to select, or deselect,
+a coherent group of related packages simultaneously, allowing one to add,
+remove, or upgrade functionality to a machine as one step.
+</para>
+</listitem>
+<listitem>
+<para>
+This would allow APT to handle <emphasis>standard installations</emphasis>,
+namely, one could then install a set of packages to enable a machine to
+fulfill specific tasks. Define a few standard installations, and which
+packages are included therein. The packages should be internally consistent.
+</para>
+</listitem>
+<listitem>
+<para>
+Make use of a keywords field in package headers; provide a standard list of
+keywords for people to use. This could be the underpinning to allow the
+previous two requirements to work (though the developers are not constrained
+to implement the previous requirements using keywords)
+</para>
+</listitem>
+<listitem>
+<para>
+Use dependencies, conflicts, and reverse dependencies to properly order
+packages for installation and removal. This has been a complaint in the past
+that the installation methods do not really understand dependencies, causing
+the upgrade process to break, or allowing the removal of packages that left the
+system in an untenable state by breaking the dependencies on packages that were
+dependent on the package being removed. A special emphasis is placed on
+handling pre-dependencies correctly; the target of a predependency has to be
+fully configured before attempting to install the pre-dependent package. Also,
+<emphasis>configure immediately</emphasis> requests mentioned below should be
+handled.
+</para>
+</listitem>
+<listitem>
+<para>
+Handle replacement of a package providing a virtual package with another (for
+example, it has been very difficult replacing <command>sendmail</command> with
+<command>smail</command>, or vice versa), making sure that the dependencies are
+still satisfied.
+</para>
+</listitem>
+<listitem>
+<para>
+Handle source lists for updates from multiple sources. APT should also be able
+to handle diverse methods of acquiring new packages; local filesystem,
+mountable CD-ROM drives, FTP accessible repositories are some of the methods
+that come to mind. Also, the source lists can be separated into categories,
+such as main, contrib, non-us, non-local, non-free, my-very-own, etc. APT
+should be set up to retrieve the Packages files from these multiple source
+lists, as well as retrieving the packages themselves.
+</para>
+</listitem>
+<listitem>
+<para>
+Handle base of source and acquire all Packages files underneath. (possibly
+select based on architecture), this should be a simple extension of the
+previous requirement.
+</para>
+</listitem>
+<listitem>
+<para>
+Handle remote installation (to be implemented maybe in a future version, it
+still needs to be designed). This would ease the burden of maintaining
+multiple Debian machines on a site. In the authors opinion this is a killer
+difference for the distribution, though it may be too hard a problem to be
+implemented with the initial version of APT. However, some thought must be
+given to this to enable APT to retain hooks for future functionality, or at
+least to refrain from methods that may preclude remote activity. It is
+desirable that adding remote installation not require a redesign of APT from
+the ground up.
+</para>
+</listitem>
+<listitem>
+<para>
+Be scalable. Dselect worked a lot better with 400 packages, but at last count
+the number of packages was around twelve hundred and climbing. This also
+requires APT to pay attention to the needs of small machines which are low on
+memory (though this requirement shall diminish as we move towards bigger
+machines, it would still be nice if Debian worked on all old machines where
+Linux itself would work).
+</para>
+</listitem>
+<listitem>
+<para>
+Handle install immediately requests. Some packages, like watchdog, are
+required to be working for the stability of the machine itself. There are
+others which may be required for the correct functioning of a production
+machine, or which are mission critical applications. APT should, in these
+cases, upgrade the packages with minimal downtime; allowing these packages to
+be one of potentially hundreds of packages being upgraded concurrently may
+not satisfy the requirements of the package or the site. (Watchdog, for
+example, if not restarted quickly, may cause the machine to reboot in the
+midst of installation, which may cause havoc on the machine)
+</para>
+</listitem>
+</orderedlist>
+</chapter>
+
+<chapter id="ch3"><title>Procedural description</title>
+<variablelist>
+<varlistentry>
+<term>Set Options</term>
+<listitem>
+<para>
+This process handles setting of user or site options, and configuration of all
+aspects of APT. It allows the user to set the location and order of package
+sources, allowing them to set up source list details, like ftp site locations,
+passwords, etc. Display options may also be set.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Updates</term>
+<listitem>
+<para>
+Build a list of available packages, using source lists or a base location and
+trawling for Packages files (needs to be aware of architecture). This may
+involve finding and retrieving Packages files, storing them locally for
+efficiency, and parsing the data for later use. This would entail contacting
+various underlying access modules (ftp, cdrom mounts, etc) Use a backing store
+for speed. This may also require downloading the actual package files locally
+for speed.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Local status</term>
+<listitem>
+<para>
+Build up a list of packages already installed. This requires reading and
+writing the local?? status file. For remote installation, this should
+probably use similar mechanisms as the Packages file retrieval does. Use
+the backing store for speed. One should consider multiple backing stores,
+one for each machine.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Relationship determination</term>
+<listitem>
+<para>
+Determine forward and reverse dependencies. All known dependency fields should
+be acted upon, since it is fairly cheap to do so. Update the backing store
+with this information.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Selection</term>
+<listitem>
+<para>
+Present the data to the user. Look at Behan Webster's documentation for the
+user interface procedures. (Note: In the authors opinion deletions and reverse
+dependencies should also be presented to the user, in a strictly symmetric
+fashion; this may make it easier to prevent a package being removed that breaks
+dependencies)
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Ordering of package installations and configuration</term>
+<listitem>
+<para>
+Build a list of events. Simple topological sorting gives order of packages
+in dependency order. At certain points in this ordering,
+predependencies/immediate configure directives cause an break in normal
+ordering. We need to insert the uninstall/purge directive in the stream
+(default: as early as possible).
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Action</term>
+<listitem>
+<para>
+Take the order of installations and removals and build up a stream of events
+to send to the packaging system (dpkg). Execute the list of events if
+successful. Do not partially install packages and leave system in broken
+state. Go to The Selection step as needed.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</chapter>
+
+<chapter id="ch4"><title>Modules and interfaces</title>
+<variablelist>
+<varlistentry>
+<term>The user interface module</term>
+<listitem>
+<para>
+Look at Behan Webster's documentation.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Widget set</term>
+<listitem>
+<para>
+Related closely to above Could some one present design decisions of the widget
+set here?
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>pdate Module</term>
+<listitem>
+<para>
+Distinct versions of the same package are recorded separately, but if multiple
+Packages files contain the same version of a package, then only the first one
+is recorded. For this reason, the least expensive update source should be
+listed first (local file system is better than a remote ftp site)
+</para>
+<para>
+This module should interact with the user interface module to set and change
+configuration parameters for the modules listed below. It needs to record that
+information in an on disk data file, to be read on future invocations.
+</para>
+<orderedlist numeration="arabic">
+<listitem>
+<para>
+FTP methods
+</para>
+</listitem>
+<listitem>
+<para>
+mount and file traversal module(s)?
+</para>
+</listitem>
+<listitem>
+<para>
+Other methods ???
+</para>
+</listitem>
+</orderedlist>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Status file parser/generator</term>
+<listitem>
+<para>
+The status file records the current state of the system, listing the packages
+installed, etc. The status file is also one method of communicating with dpkg,
+since it is perfectly permissible for the user to use APT to request packages
+be updated, put others on hold, mark other for removal, etc, and then run
+<literal>dpkg -BORGiE</literal> on a file system.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Package file parser/generator</term>
+<listitem>
+<para>
+Related to above. Handle multiple Packages files, from different
+sources. Each package contains a link back to the packages file structure
+that contains details about the origin of the data.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Dependency module</term>
+<listitem>
+<itemizedlist>
+<listitem>
+<para>
+dependency/conflict determination and linking
+</para>
+</listitem>
+<listitem>
+<para>
+reverse dependency generator. Maybe merged with above
+</para>
+</listitem>
+</itemizedlist>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Package ordering Module</term>
+<listitem>
+<para>
+Create an ordering of the actions to be taken.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Event generator</term>
+<listitem>
+<para>
+module to interact with dpkg
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</chapter>
+
+<chapter id="ch5"><title>Data flow and conversions analysis.</title>
+<screen>
+ ____________
+ __\|ftp modules|
+ / /|___________|
+ _ ____________ / ________________
+ | update | / |mount/local file|
+ |==========================&gt;| module |/_____\| traversals |
+ | |_____________| /|________________|
+ | ^ ^
+ | | | ______________
+ ______|_______ _ _____ ______ | _____v________ \| |
+ |Configuration | |configuration| | |Packages Files| ===|Status file |
+ | module |&lt;=&gt;| data | | |______________| / /|____________|
+ |______________| |_____________| | ^ /
+ ^ | | /
+ | | _______v_______|/_
+ | | | | ________________
+ | | | |/_\| Dependency |
+ | | |backing store |\ /| Module |
+ | | |______________| _|_______________|
+ | \ ^ /| ^
+ | \ | / |
+ | _\|____v_______|/__ ____v_______
+ |_____________________________\| User interaction| | dpkg |
+ /|_________________|&lt;==&gt; Invoker |
+ |___________|
+</screen>
+<para>
+dpkg also interacts with status and available files.
+</para>
+<para>
+The backing store and the associated data structures are the core of APT. All
+modules essentially revolve around the backing store, feeding it data, adding
+and manipulating links and relationships between data in the backing store,
+allowing the user to interact with and modify the data in the backing store,
+and finally writing it out as the status file and possibly issuing directives
+to dpkg.
+</para>
+<para>
+The other focal point for APT is the user interface.
+</para>
+</chapter>
+
+</book>
diff --git a/doc/docbook-html-style.xsl.cmake.in b/doc/docbook-html-style.xsl.cmake.in
new file mode 100644
index 000000000..9216d8e6e
--- /dev/null
+++ b/doc/docbook-html-style.xsl.cmake.in
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+ <!-- Import our base stylesheet -->
+ <xsl:import href="@DOCBOOK_XSL@/xhtml-1_1/chunk.xsl" />
+
+ <!-- Since we use xsltproc (not saxon), add a workaround to ensure UTF-8 -->
+ <xsl:template xmlns="http://www.w3.org/1999/xhtml" name="head.content.generator">
+ <xsl:param name="node" select="."/>
+ <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ </xsl:template>
+
+ <xsl:template name="generate.html.title"/>
+
+ <xsl:template match="releaseinfo" mode="titlepage.mode">
+ <xsl:apply-imports/>
+ <hr/>
+ </xsl:template>
+
+ <xsl:param name="root.filename">index</xsl:param>
+
+ <!-- We do not want a title in HTML. -->
+ <xsl:param name="generate.meta.abstract" select="0"/>
+
+ <!-- We do not want the first subsection on the same page as content. -->
+ <xsl:param name="chunk.first.sections" select="0"/>
+ <xsl:param name="chunk.section.depth" select="0"/>
+ <xsl:param name="chunker.output.indent" select="'yes'"/>
+
+ <xsl:param name="use.id.as.filename" select="1"/>
+
+ <xsl:param name="toc.section.depth" select="1"/>
+ <xsl:param name="generate.section.toc.level" select="0"/>
+ <xsl:param name="section.label.includes.component.label" select="1"/>
+ <xsl:param name="section.autolabel" select="1"/>
+
+ <xsl:param name="generate.css.header" select="1"/>
+
+</xsl:stylesheet>
diff --git a/doc/docbook-text-style.xsl.cmake.in b/doc/docbook-text-style.xsl.cmake.in
new file mode 100644
index 000000000..36af1bcb2
--- /dev/null
+++ b/doc/docbook-text-style.xsl.cmake.in
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+ <xsl:import href="@DOCBOOK_XSL@/xhtml-1_1/docbook.xsl" />
+
+ <!-- Parameters for optimal text output. -->
+ <xsl:param name="callout.graphics" select="0"/>
+ <xsl:param name="callout.unicode" select="0"/>
+ <xsl:param name="section.autolabel" select="1"/>
+ <xsl:param name="section.label.includes.component.label" select="1"/>
+
+ <!-- Centering and aligning title elements. -->
+ <xsl:template match="/*/title[position()=1]" mode="titlepage.mode">
+ <br/>
+ <center>
+ <xsl:apply-imports/>
+ </center>
+ <br/>
+ <hr/> <!-- No underline, but at least something. -->
+ </xsl:template>
+ <xsl:template match="author|editor" mode="titlepage.mode">
+ <center>
+ <xsl:apply-imports/>
+ </center>
+ </xsl:template>
+
+ <xsl:template match="releaseinfo" mode="titlepage.mode">
+ <center>
+ <xsl:apply-imports/>
+ </center>
+ <hr/>
+ </xsl:template>
+
+ <!-- Dirty hack to get a left margin for paragraphs etc. -->
+ <xsl:template match="legalnotice/*
+ |chapter/*[not(name(.)='section') and not(name(.)='title')]
+ |section/*[not(name(.)='section') and not(name(.)='title')]
+ |appendix/*[not(name(.)='section') and not(name(.)='title')]
+ |footnote/*">
+ <xsl:copy><table><tr><td>&#xa0;&#xa0;&#xa0;</td><td>
+ <xsl:apply-imports/>
+ </td></tr></table></xsl:copy>
+ </xsl:template>
+
+ <!-- Skip URLs if it has something to print. -->
+ <xsl:template match="ulink[.!='']">
+ <xsl:copy-of select="."/>
+ </xsl:template>
+ <!-- Print URLs if nothing to print. -->
+ <xsl:template match="ulink[.='']">
+ <xsl:value-of select="@url"/>
+ </xsl:template>
+
+ <!-- Make clear where notes etc. begin and end. -->
+ <xsl:template match="caution|important|note|tip|warning">
+ <table width="80%" border="1">
+ <colgroup>
+ <col align="justify"/>
+ </colgroup>
+ <tbody>
+ <tr>
+ <td align="justify">
+ <xsl:apply-imports/>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/dpkg-tech.dbk b/doc/dpkg-tech.dbk
new file mode 100644
index 000000000..d2d5061ab
--- /dev/null
+++ b/doc/dpkg-tech.dbk
@@ -0,0 +1,870 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<book lang="en">
+
+<title>dpkg technical manual</title>
+
+<bookinfo>
+
+<authorgroup>
+ <author>
+ <personname>Tom Lees</personname><email>tom@lpsg.demon.co.uk</email>
+ </author>
+</authorgroup>
+
+<releaseinfo>Version &apt-product-version;</releaseinfo>
+
+<abstract>
+<para>
+This document describes the minimum necessary workings for the APT dselect
+replacement. It gives an overall specification of what its external interface
+must look like for compatibility, and also gives details of some internal
+quirks.
+</para>
+</abstract>
+
+<copyright><year>1997</year><holder>Tom Lees</holder></copyright>
+
+<legalnotice>
+<title>License Notice</title>
+<para>
+APT and this document are free software; you can redistribute them and/or
+modify them under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+</para>
+<para>
+For more details, on Debian systems, see the file
+/usr/share/common-licenses/GPL for the full license.
+</para>
+</legalnotice>
+
+</bookinfo>
+
+<chapter id="ch1"><title>Quick summary of dpkg's external interface</title>
+
+<section id="control"><title>Control files</title>
+<para>
+The basic dpkg package control file supports the following major features:-
+</para>
+<itemizedlist>
+<listitem>
+<para>
+5 types of dependencies:-
+</para>
+<itemizedlist>
+<listitem>
+<para>
+Pre-Depends, which must be satisfied before a package may be unpacked
+</para>
+</listitem>
+<listitem>
+<para>
+Depends, which must be satisfied before a package may be configured
+</para>
+</listitem>
+<listitem>
+<para>
+Recommends, to specify a package which if not installed may severely limit the
+usefulness of the package
+</para>
+</listitem>
+<listitem>
+<para>
+Suggests, to specify a package which may increase the productivity of the
+package
+</para>
+</listitem>
+<listitem>
+<para>
+Conflicts, to specify a package which must NOT be installed in order for the
+package to be configured
+</para>
+</listitem>
+<listitem>
+<para>
+Breaks, to specify a package which is broken by the package and which should
+therefore not be configured while broken
+</para>
+</listitem>
+</itemizedlist>
+<para>
+Each of these dependencies can specify a version and a dependency on that
+version, for example "&lt;= 0.5-1", "== 2.7.2-1", etc. The comparators
+available are:-
+</para>
+<itemizedlist>
+<listitem>
+<para>
+"&lt;&lt;" - less than
+</para>
+</listitem>
+<listitem>
+<para>
+"&lt;=" - less than or equal to
+</para>
+</listitem>
+<listitem>
+<para>
+"&gt;&gt;" - greater than
+</para>
+</listitem>
+<listitem>
+<para>
+"&gt;=" - greater than or equal to
+</para>
+</listitem>
+<listitem>
+<para>
+"==" - equal to
+</para>
+</listitem>
+</itemizedlist>
+</listitem>
+<listitem>
+<para>
+The concept of "virtual packages", which many other packages may provide,
+using the Provides mechanism. An example of this is the "httpd" virtual
+package, which all web servers should provide. Virtual package names may be
+used in dependency headers. However, current policy is that virtual packages
+do not support version numbers, so dependencies on virtual packages with
+versions will always fail.
+</para>
+</listitem>
+<listitem>
+<para>
+Several other control fields, such as Package, Version, Description, Section,
+Priority, etc., which are mainly for classification purposes. The package
+name must consist entirely of lowercase characters, plus the characters '+',
+'-', and '.'. Fields can extend across multiple lines - on the second and
+subsequent lines, there is a space at the beginning instead of a field name
+and a ':'. Empty lines must consist of the text " .", which will be ignored,
+as will the initial space for other continuation lines. This feature is
+usually only used in the Description field.
+</para>
+</listitem>
+</itemizedlist>
+</section>
+
+<section id="s1.2"><title>The dpkg status area</title>
+<para>
+The "dpkg status area" is the term used to refer to the directory where dpkg
+keeps its various status files (GNU would have you call it the dpkg shared
+state directory). This is always, on Debian systems, /var/lib/dpkg. However,
+the default directory name should not be hard-coded, but #define'd, so that
+alteration is possible (it is available via configure in dpkg 1.4.0.9 and
+above). Of course, in a library, code should be allowed to override the
+default directory, but the default should be part of the library (so that
+the user may change the dpkg admin dir simply by replacing the library).
+</para>
+<para>
+Dpkg keeps a variety of files in its status area. These are discussed later
+on in this document, but a quick summary of the files is here:-
+</para>
+<itemizedlist>
+<listitem>
+<para>
+available - this file contains a concatenation of control information from all
+the packages which dpkg knows about. This is updated using the dpkg commands
+"--update-avail &lt;file&gt;", "--merge-avail &lt;file&gt;", and
+"--clear-avail".
+</para>
+</listitem>
+<listitem>
+<para>
+status - this file contains information on the following things for every
+package:-
+</para>
+<itemizedlist>
+<listitem>
+<para>
+Whether it is installed, not installed, unpacked, removed, failed
+configuration, or half-installed (deconfigured in favour of another package).
+</para>
+</listitem>
+<listitem>
+<para>
+Whether it is selected as install, hold, remove, or purge.
+</para>
+</listitem>
+<listitem>
+<para>
+If it is "ok" (no installation problems), or "not-ok".
+</para>
+</listitem>
+<listitem>
+<para>
+It usually also contains the section and priority (so that dselect may classify
+packages not in available)
+</para>
+</listitem>
+<listitem>
+<para>
+For packages which did not initially appear in the "available" file when they
+were installed, the other control information for them.
+</para>
+</listitem>
+</itemizedlist>
+<para>
+The exact format for the "Status:" field is:
+</para>
+<screen>
+ Status: Want Flag Status
+</screen>
+<para>
+Where <replaceable>Want</replaceable> may be one of
+<emphasis>unknown</emphasis>, <emphasis>install</emphasis>,
+<emphasis>hold</emphasis>, <emphasis>deinstall</emphasis>,
+<emphasis>purge</emphasis>. <replaceable>Flag</replaceable> may
+be one of <emphasis>ok</emphasis>, <emphasis>reinstreq</emphasis>.
+<replaceable>Status</replaceable> may
+be one of <emphasis>not-installed</emphasis>, <emphasis>config-files</emphasis>,
+<emphasis>half-installed</emphasis>, <emphasis>unpacked</emphasis>,
+<emphasis>half-configured</emphasis> and <emphasis>installed</emphasis>.
+The states are as follows:-
+</para>
+<variablelist>
+<varlistentry>
+<term>not-installed</term>
+<listitem>
+<para>
+No files are installed from the package, it has no config files left, it
+uninstalled cleanly if it ever was installed.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>unpacked</term>
+<listitem>
+<para>
+The basic files have been unpacked (and are listed in
+/var/lib/dpkg/info/[package].list. There are config files present, but the
+postinst script has _NOT_ been run.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>half-configured</term>
+<listitem>
+<para>
+The package was installed and unpacked, but the postinst script failed in some
+way.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>installed</term>
+<listitem>
+<para>
+All files for the package are installed, and the configuration was also
+successful.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>half-installed</term>
+<listitem>
+<para>
+An attempt was made to remove the packagem but there was a failure in the
+prerm script.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>config-files</term>
+<listitem>
+<para>
+The package was "removed", not "purged". The config files are left, but
+nothing else.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+<para>
+The two last items are only left in dpkg for compatibility - they are
+understood by it, but never written out in this form.
+</para>
+<para>
+Please see the dpkg source code, <literal>lib/parshelp.c</literal>,
+<emphasis>statusinfos</emphasis>, <emphasis>eflaginfos</emphasis> and
+<emphasis>wantinfos</emphasis> for more details.
+</para>
+</listitem>
+<listitem>
+<para>
+info - this directory contains files from the control archive of every
+package currently installed. They are installed with a prefix of
+"&lt;packagename&gt;.". In addition to this, it also contains a file
+called &lt;package&gt;.list for every package, which contains a list
+of files. Note also that the control file is not copied into here; it
+is instead found as part of status or available.
+</para>
+</listitem>
+<listitem>
+<para>
+methods - this directory is reserved for "method"-specific files - each
+"method" has a subdirectory underneath this directory (or at least,
+it can have). In addition, there is another subdirectory "mnt", where
+misc. filesystems (floppies, CD-ROMs, etc.) are mounted.
+</para>
+</listitem>
+<listitem>
+<para>
+alternatives - directory used by the "update-alternatives" program. It
+contains one file for each "alternatives" interface, which contains
+information about all the needed symlinked files for each alternative.
+</para>
+</listitem>
+<listitem>
+<para>
+diversions - file used by the "dpkg-divert" program. Each diversion takes
+three lines. The first is the package name (or ":" for user diversion), the
+second the original filename, and the third the diverted filename.
+</para>
+</listitem>
+<listitem>
+<para>
+updates - directory used internally by dpkg. This is discussed later, in the
+section <xref linkend="updates"/>.
+</para>
+</listitem>
+<listitem>
+<para>
+parts - temporary directory used by dpkg-split
+</para>
+</listitem>
+</itemizedlist>
+</section>
+
+<section id="s1.3"><title>The dpkg library files</title>
+<para>
+These files are installed under /usr/lib/dpkg (usually), but
+/usr/local/lib/dpkg is also a possibility (as Debian policy dictates). Under
+this directory, there is a "methods" subdirectory. The methods subdirectory in
+turn contains any number of subdirectories for each general method processor
+(note that one set of method scripts can, and is, used for more than one of
+the methods listed under dselect).
+</para>
+<para>
+The following files may be found in each of these subdirectories:-
+</para>
+<itemizedlist>
+<listitem>
+<para>
+names - One line per method, two-digit priority to appear on menu at
+beginning, followed by a space, the name, and then another space and
+the short description.
+</para>
+</listitem>
+<listitem>
+<para>
+desc.&lt;name&gt; - Contains the long description displayed by dselect
+when the cursor is put over the &lt;name&gt; method.
+</para>
+</listitem>
+<listitem>
+<para>
+setup - Script or program which sets up the initial values to be used
+by this method. Called with first argument as the status area directory
+(/var/lib/dpkg), second argument as the name of the method (as in the
+directory name), and the third argument as the option (as in the names file).
+</para>
+</listitem>
+<listitem>
+<para>
+install - Script/program called when the "install" option of dselect is run
+with this method. Same arguments as for setup.
+</para>
+</listitem>
+<listitem>
+<para>
+update - Script/program called when the "update" option of dselect is
+run. Same arguments as for setup/install.
+</para>
+</listitem>
+</itemizedlist>
+</section>
+
+<section id="s1.4"><title>The "dpkg" command-line utility</title>
+
+<section id="s1.4.1"><title>"Documented" command-line interfaces</title>
+<para>
+As yet unwritten. You can refer to the other manuals for now. See
+<citerefentry><refentrytitle>dpkg</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
+</para>
+</section>
+
+<section id="s1.4.2"><title>Environment variables which dpkg responds to</title>
+<itemizedlist>
+<listitem>
+<para>
+SHELL - used to determine which shell to run.
+</para>
+</listitem>
+<listitem>
+<para>
+CC - used as the C compiler to call to determine the target architecture. The
+default is "gcc".
+</para>
+</listitem>
+<listitem>
+<para>
+PATH - dpkg checks that it can find at least the following files in the path
+when it wants to run package installation scripts, and gives an error if it
+cannot find all of them:-
+</para>
+<itemizedlist>
+<listitem>
+<para>
+ldconfig
+</para>
+</listitem>
+<listitem>
+<para>
+start-stop-daemon
+</para>
+</listitem>
+<listitem>
+<para>
+install-info
+</para>
+</listitem>
+<listitem>
+<para>
+update-rc.d
+</para>
+</listitem>
+</itemizedlist>
+</listitem>
+</itemizedlist>
+</section>
+
+<section id="s1.4.3"><title>Assertions</title>
+<para>
+The dpkg utility itself is required for quite a number of packages, even if
+they have been installed with a tool totally separate from dpkg. The reason
+for this is that some packages, in their pre-installation scripts, check that
+your version of dpkg supports certain features. This was broken from the
+start, and it should have actually been a control file header "Dpkg-requires",
+or similar. What happens is that the configuration scripts will abort or
+continue according to the exit code of a call to dpkg, which will stop them
+from being wrongly configured.
+</para>
+<para>
+These special command-line options, which simply return as true or false are
+all prefixed with "--assert-". Here is a list of them (without the prefix):-
+</para>
+<itemizedlist>
+<listitem>
+<para>
+support-predepends - Returns success or failure according to whether a version
+of dpkg which supports predepends properly (1.1.0 or above) is installed,
+according to the database.
+</para>
+</listitem>
+<listitem>
+<para>
+working-epoch - Return success or failure according to whether a version of
+dpkg which supports epochs in version properly (1.4.0.7 or above) is installed,
+according to the database.
+</para>
+</listitem>
+</itemizedlist>
+<para>
+Both these options check the status database to see what version of the
+"dpkg" package is installed, and check it against a known working version.
+</para>
+</section>
+
+<section id="s1.4.4"><title>--predep-package</title>
+<para>
+This strange option is described as follows in the source code:
+</para>
+<screen>
+/* Print a single package which:
+ * (a) is the target of one or more relevant predependencies.
+ * (b) has itself no unsatisfied pre-dependencies.
+ * If such a package is present output is the Packages file entry,
+ * which can be massaged as appropriate.
+ * Exit status:
+ * 0 = a package printed, OK
+ * 1 = no suitable package available
+ * 2 = error
+ */
+</screen>
+<para>
+On further inspection of the source code, it appears that what is does is
+this:-
+</para>
+<itemizedlist>
+<listitem>
+<para>
+Looks at the packages in the database which are selected as "install",
+and are installed.
+</para>
+</listitem>
+<listitem>
+<para>
+It then looks at the Pre-Depends information for each of these packages
+from the available file. When it find a package for which any of the
+pre-dependencies are not satisfied, it breaks from the loop through the
+packages.
+</para>
+</listitem>
+<listitem>
+<para>
+It then looks through the unsatisfied pre-dependencies, and looks for
+packages which would satisfy this pre-dependency, stopping on the first
+it finds. If it finds none, it bombs out with an error.
+</para>
+</listitem>
+<listitem>
+<para>
+It then continues this for every dependency of the initial package.
+</para>
+</listitem>
+</itemizedlist>
+<para>
+Eventually, it writes out the record of all the packages to satisfy the
+pre-dependencies. This is used by the disk method to make sure that its
+dependency ordering is correct. What happens is that all pre-depending
+packages are first installed, then it runs dpkg -iGROEB on the directory,
+which installs in the order package files are found. Since pre-dependencies
+mean that a package may not even be unpacked unless they are satisfied, it
+is necessary to do this (usually, since all the package files are unpacked
+in one phase, the configured in another, this is not needed).
+</para>
+</section>
+
+</section>
+
+</chapter>
+
+<chapter id="ch2"><title>dpkg-deb and .deb file internals</title>
+<para>
+This chapter describes the internals to the "dpkg-deb" tool, which is used by
+"dpkg" as a back-end. dpkg-deb has its own tar extraction functions, which is
+the source of many problems, as it does not support long filenames, using
+extension blocks.
+</para>
+
+<section id="s2.1"><title>The .deb archive format</title>
+<para>
+The main principal of the new-format Debian archive (I won't describe the old
+format - for that have a look at deb-old.5), is that the archive really is an
+archive - as used by "ar" and friends. However, dpkg-deb uses this format
+internally, rather than calling "ar". Inside this archive, there are usually
+the following members:-
+</para>
+<itemizedlist>
+<listitem>
+<para>
+debian-binary
+</para>
+</listitem>
+<listitem>
+<para>
+control.tar.gz
+</para>
+</listitem>
+<listitem>
+<para>
+data.tar.gz
+</para>
+</listitem>
+</itemizedlist>
+<para>
+The debian-binary member consists simply of the string "2.0", indicating
+the format version. control.tar.gz contains the control files (and scripts),
+and the data.tar.gz contains the actual files to populate the filesystem
+with. Both tarfiles extract straight into the current directory. Information
+on the tar formats can be found in the GNU tar info page. Since dpkg-deb
+calls "tar -cf" to build packages, the Debian packages use the GNU extensions.
+</para>
+</section>
+
+<section id="s2.2"><title>The dpkg-deb command-line</title>
+<para>
+dpkg-deb documents itself thoroughly with its '--help' command-line
+option. However, I am including a reference to these for
+completeness. dpkg-deb supports the following options:-
+</para>
+<itemizedlist>
+<listitem>
+<para>
+--build (-b) &lt;dir&gt; - builds a .deb archive, takes a directory which
+contains all the files as an argument. Note that the directory
+&lt;dir&gt;/DEBIAN will be packed separately into the control archive.
+</para>
+</listitem>
+<listitem>
+<para>
+--contents (-c) &lt;debfile&gt; - Lists the contents of the "data.tar.gz"
+member.
+</para>
+</listitem>
+<listitem>
+<para>
+--control (-e) &lt;debfile&gt; - Extracts the control archive into a directory
+called DEBIAN. Alternatively, with another argument, it will extract it into a
+different directory.
+</para>
+</listitem>
+<listitem>
+<para>
+--info (-I) &lt;debfile&gt; - Prints the contents of the "control" file in the
+control archive to stdout. Alternatively, giving it other arguments will cause
+it to print the contents of those files instead.
+</para>
+</listitem>
+<listitem>
+<para>
+--field (-f) &lt;debfile&gt; &lt;field&gt; ... - Prints any number of fields
+from the "control" file. Giving it extra arguments limits the fields it prints
+to only those specified. With no command-line arguments other than a filename,
+it is equivalent to -I and just the .deb filename.
+</para>
+</listitem>
+<listitem>
+<para>
+--extract (-x) &lt;debfile&gt; &lt;dir&gt; - Extracts the data archive of a
+debian package under the directory &lt;dir&gt;.
+</para>
+</listitem>
+<listitem>
+<para>
+--vextract (-X) &lt;debfile&gt; &lt;dir&gt; - Same as --extract, except it
+is equivalent of giving tar the '-v' option - it prints the filenames as it
+extracts them.
+</para>
+</listitem>
+<listitem>
+<para>
+--fsys-tarfile &lt;debfile&gt; - This option outputs a gunzip'd version of
+data.tar.gz to stdout.
+</para>
+</listitem>
+<listitem>
+<para>
+--new - sets the archive format to be used to the new Debian format
+</para>
+</listitem>
+<listitem>
+<para>
+--old - sets the archive format to be used to the old Debian format
+</para>
+</listitem>
+<listitem>
+<para>
+--debug - Tells dpkg-deb to produce debugging output
+</para>
+</listitem>
+<listitem>
+<para>
+--nocheck - Tells dpkg-deb not to check the sanity of the control file
+</para>
+</listitem>
+<listitem>
+<para>
+--help (-h) - Gives a help message
+</para>
+</listitem>
+<listitem>
+<para>
+--version - Shows the version number
+</para>
+</listitem>
+<listitem>
+<para>
+--licence/--license (UK/US spellings) - Shows a brief outline of the GPL
+</para>
+</listitem>
+</itemizedlist>
+
+<section id="s2.2.1"><title>Internal checks used by dpkg-deb when building packages</title>
+<para>
+Here is a list of the internal checks used by dpkg-deb when building
+packages. It is in the order they are done.
+</para>
+<itemizedlist>
+<listitem>
+<para>
+First, the output Debian archive argument, if it is given, is checked using
+stat. If it is a directory, an internal flag is set. This check is only made
+if the archive name is specified explicitly on the command-line. If the
+argument was not given, the default is the directory name, with ".deb"
+appended.
+</para>
+</listitem>
+<listitem>
+<para>
+Next, the control file is checked, unless the --nocheck flag was specified on
+the command-line. dpkg-deb will bomb out if the second argument to --build was
+a directory, and --nocheck was specified. Note that dpkg-deb will not be able
+to determine the name of the package in this case. In the control file, the
+following things are checked:-
+</para>
+<itemizedlist>
+<listitem>
+<para>
+The package name is checked to see if it contains any invalid characters (see
+<xref linkend="control"/> for this).
+</para>
+</listitem>
+<listitem>
+<para>
+The priority field is checked to see if it uses standard values, and
+user-defined values are warned against. However, note that this check is now
+redundant, since the control file no longer contains the priority - the
+changes file now does this.
+</para>
+</listitem>
+<listitem>
+<para>
+The control file fields are then checked against the standard list of fields
+which appear in control files, and any "user-defined" fields are reported as
+warnings.
+</para>
+</listitem>
+<listitem>
+<para>
+dpkg-deb then checks that the control file contains a valid version number.
+</para>
+</listitem>
+</itemizedlist>
+</listitem>
+<listitem>
+<para>
+After this, in the case where a directory was specified to build the .deb file
+in, the filename is created as "directory/pkg_ver.deb" or
+"directory/pkg_ver_arch.deb", depending on whether the control file contains
+an architecture field.
+</para>
+</listitem>
+<listitem>
+<para>
+Next, dpkg-deb checks for the &lt;dir&gt;/DEBIAN directory. It complains if it
+doesn't exist, or if it has permissions &lt; 0755, or &gt; 0775.
+</para>
+</listitem>
+<listitem>
+<para>
+It then checks that all the files in this subdir are either symlinks or plain
+files, and have permissions between 0555 and 0775.
+</para>
+</listitem>
+<listitem>
+<para>
+The conffiles file is then checked to see if the filenames are too
+long. Warnings are produced for each that is. After this, it checks
+that the package provides initial copies of each of these conffiles,
+and that they are all plain files.
+</para>
+</listitem>
+</itemizedlist>
+</section>
+
+</section>
+
+</chapter>
+
+<chapter id="ch3"><title>dpkg internals</title>
+<para>
+This chapter describes the internals of dpkg itself. Although the low-level
+formats are quite simple, what dpkg does in certain cases often does not make
+sense.
+</para>
+
+<section id="updates"><title>Updates</title>
+<para>
+This describes the /var/lib/dpkg/updates directory. The function of this
+directory is somewhat strange, and seems only to be used internally. A
+function called cleanupdates is called whenever the database is scanned. This
+function in turn uses
+<citerefentry><refentrytitle>scandir</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+to sort the files in this directory. Files who names do not consist entirely
+of digits are discarded. dpkg also causes a fatal error if any of the
+filenames are different lengths.
+</para>
+<para>
+After having scanned the directory, dpkg in turn parses each file the same way
+it parses the status file (they are sorted by the scandir to be in numerical
+order). After having done this, it then writes the status information back to
+the "status" file, and removes all the "updates" files.
+</para>
+<para>
+These files are created internally by dpkg's "checkpoint" function, and are
+cleaned up when dpkg exits cleanly.
+</para>
+<para>
+Juding by the use of the updates directory I would call it a Journal. Inorder
+to efficiently ensure the complete integrity of the status file dpkg will
+"checkpoint" or journal all of it's activities in the updates directory. By
+merging the contents of the updates directory (in order!!) against the original
+status file it can get the precise current state of the system, even in the
+event of a system failure while dpkg is running.
+</para>
+<para>
+The other option would be to sync-rewrite the status file after each operation,
+which would kill performance.
+</para>
+<para>
+It is very important that any program that uses the status file abort if the
+updates directory is not empty! The user should be informed to run dpkg
+manually (what options though??) to correct the situation.
+</para>
+</section>
+
+<section id="s3.2"><title>What happens when dpkg reads the database</title>
+<para>
+First, the status file is read. This gives dpkg an initial idea of the
+packages that are there. Next, the updates files are read in, overriding the
+status file, and if necessary, the status file is re-written, and updates files
+are removed. Finally, the available file is read. The available file is read
+with flags which preclude dpkg from updating any status information from it,
+though - installed version, etc., and is also told to record that the packages
+it reads this time are available, not installed.
+</para>
+<para>
+More information on updates is given above.
+</para>
+</section>
+
+<section id="s3.3"><title>How dpkg compares version numbers</title>
+<para>
+Version numbers consist of three parts: the epoch, the upstream version, and
+the Debian revision. Dpkg compares these parts in that order. If the epochs
+are different, it returns immediately, and so on.
+</para>
+<para>
+However, the important part is how it compares the versions which are
+essentially stored as just strings. These are compared in two distinct
+parts: those consisting of numerical characters (which are evaluated, and
+then compared), and those consisting of other characters. When comparing
+non-numerical parts, they are compared as the character values (ASCII),
+but non-alphabetical characters are considered "greater than" alphabetical
+ones. Also note that longer strings (after excluding differences where
+numerical values are equal) are considered "greater than" shorter ones.
+</para>
+<para>
+Here are a few examples of how these rules apply:-
+</para>
+<screen>
+15 &gt; 10
+0010 == 10
+
+d.r &gt; dsr
+32.d.r == 0032.d.r
+d.rnr &lt; d.rnrn
+</screen>
+</section>
+
+</chapter>
+
+</book>
diff --git a/doc/examples/CMakeLists.txt b/doc/examples/CMakeLists.txt
new file mode 100644
index 000000000..1998867db
--- /dev/null
+++ b/doc/examples/CMakeLists.txt
@@ -0,0 +1,4 @@
+install(FILES apt.conf apt-https-method-example.conf configure-index preferences
+ DESTINATION ${CMAKE_INSTALL_DOCDIR}/examples)
+install(FILES apt-ftparchive.conf ftp-archive.conf
+ DESTINATION ${CMAKE_INSTALL_DOCDIR}/../apt-utils/examples)
diff --git a/doc/examples/apt-ftparchive.conf b/doc/examples/apt-ftparchive.conf
new file mode 100644
index 000000000..0e8bcb2ce
--- /dev/null
+++ b/doc/examples/apt-ftparchive.conf
@@ -0,0 +1,46 @@
+// This config is for use with the pool-structure for the packages, thus we
+// don't use a Tree Section in here
+
+// The debian archive should be in the current working dir
+Dir {
+ ArchiveDir ".";
+ CacheDir ".";
+};
+
+// Create Packages, Packages.gz and Packages.xz, remove/add as needed
+Default {
+ Packages::Compress ". gzip xz";
+ Sources::Compress ". gzip xz";
+ Contents::Compress ". gzip xz";
+};
+
+// Includes the main section. You can structure the directory tree under
+// ./pool/main any way you like, apt-ftparchive will take any deb (and
+// source package) it can find. This creates a Packages a Sources and a
+// Contents file for these in the main section of the sid release
+BinDirectory "pool/main" {
+ Packages "dists/sid/main/binary-i386/Packages";
+ Sources "dists/sid/main/source/Sources";
+ Contents "dists/sid/main/Contents-i386";
+}
+
+// This is the same for the contrib section
+BinDirectory "pool/contrib" {
+ Packages "dists/sid/contrib/binary-i386/Packages";
+ Sources "dists/sid/contrib/source/Sources";
+ Contents "dists/sid/contrib/Contents-i386";
+}
+
+// This is the same for the non-free section
+BinDirectory "pool/non-free" {
+ Packages "dists/sid/non-free/binary-i386/Packages";
+ Sources "dists/sid/non-free/source/Sources";
+ Contents "dists/sid/non-free/Contents-i386";
+};
+
+// By default all Packages should have the extension ".deb"
+Default {
+ Packages {
+ Extensions ".deb";
+ };
+};
diff --git a/doc/examples/apt-https-method-example.conf b/doc/examples/apt-https-method-example.conf
new file mode 100644
index 000000000..3152ef1e2
--- /dev/null
+++ b/doc/examples/apt-https-method-example.conf
@@ -0,0 +1,186 @@
+/* This file is a sample configuration for apt https method. Configuration
+ parameters found in this example file are expected to be used in main
+ apt.conf file, just like other configuration parameters for different
+ methods (ftp, file, ...).
+
+ This example file starts with a common setup that voluntarily exhibits
+ all available configurations knobs with simple comments. Extended
+ comments on the behavior of the option is provided at the end for
+ better readability. As a matter of fact, a common configuration file
+ will certainly contain far less elements and benefit of default values
+ for many parameters.
+
+ Because some configuration parameters for apt https method in following
+ examples apply to specific (fictional) repositories, the associated
+ sources.list file is provided here:
+
+ ...
+
+ deb https://secure.dom1.tld/debian unstable main contrib non-free
+ deb-src https://secure.dom1.tld/debian unstable main contrib non-free
+
+ deb https://secure.dom2.tld/debian unstable main contrib non-free
+ deb-src https://secure.dom2.tld/debian unstable main contrib non-free
+
+ ...
+
+
+ Some notes on the servers:
+
+ - secure.dom1.tld is freely accessible using https (no client
+ authentication is required).
+ - secure.dom1.tld certificate is part of a multi level PKI, and we
+ want to specifically check the issuer of its certificate. We do
+ not have the constraint for secure.dom2.tld
+ - secure.dom2.tld requires client authentication by certificate
+ to access its content.
+ - The certificate presented by both server have (as expected) a CN that
+ matches their respective DNS names.
+ - We have CRL available for both dom1.tld and dom2.tld PKI, and intend
+ to use them.
+ - It sometimes happens that we had other more generic https available
+ repository to our list. We want the checks to be performed against
+ a common list of anchors (like the one provided by ca-certificates
+ package for instance)
+
+ The sample configuration below basically covers those simple needs.
+*/
+
+
+// Verify peer certificate and also matching between certificate name
+// and server name as provided in sources.list (default values)
+Acquire::https::Verify-Peer "true";
+Acquire::https::Verify-Host "true";
+
+// Except otherwise specified, use that list of anchors
+Acquire::https::CaInfo "/etc/ssl/certs/ca-certificates.pem";
+
+// Use a specific anchor and associated CRL. Enforce issuer of
+// server certificate using its cert.
+Acquire::https::secure.dom1.tld::CaInfo "/etc/apt/certs/ca-dom1-crt.pem";
+Acquire::https::secure.dom1.tld::CrlFile "/etc/apt/certs/ca-dom1-crl.pem";
+Acquire::https::secure.dom1.tld::IssuerCert "/etc/apt/certs/secure.dom1-issuer-crt.pem";
+
+// Like previous for anchor and CRL, but also provide our
+// certificate and keys for client authentication.
+Acquire::https::secure.dom2.tld::CaInfo "/etc/apt/certs/ca-dom2-crt.pem";
+Acquire::https::secure.dom2.tld::CrlFile "/etc/apt/certs/ca-dom2-crl.pem";
+Acquire::https::secure.dom2.tld::SslCert "/etc/apt/certs/my-crt.pem";
+Acquire::https::secure.dom2.tld::SslKey "/etc/apt/certs/my-key.pem";
+
+// No need to downgrade, TLS will be proposed by default. Uncomment
+// to have SSLv3 proposed.
+// Acquire::https::mirror.ipv6.ssi.corp::SslForceVersion "SSLv3";
+
+// No need for more debug if every is fine (default). Uncomment
+// me to get additional information.
+// Debug::Acquire::https "true";
+
+
+/*
+ Options with extended comments:
+
+ Acquire::https[::repo.domain.tld]::CaInfo "/path/to/ca/certs.pem";
+
+ A string providing the path of a file containing the list of trusted
+ CA certificates used to verify the server certificate. The pointed
+ file is made of the concatenation of the CA certificates (in
+ PEM format) creating the chain used for the verification of the path
+ from the root (self signed one). If the remote server provides the
+ whole chain during the exchange, the file need only contain the root
+ certificate. Otherwise, the whole chain is required.
+
+ If you need to support multiple authorities, the only way is to
+ concatenate everything.
+
+ If None is provided, the default CA bundle used by GnuTLS (apt https
+ method is linked against libcurl-gnutls) is used. At the time of
+ writing, /etc/ssl/certs/ca-certificates.crt.
+
+ If no specific hostname is provided, the file is used by default
+ for all https targets. If a specific mirror is provided, it is
+ used for the https entries in the sources.list file that use that
+ repository (with the same name).
+
+ Acquire::https[::repo.domain.tld]::CrlFile "/path/to/all/crl.pem";
+
+ Like previous knob but for passing the list of CRL files (in PEM
+ format) to be used to verify revocation status. Again, if the
+ option is defined with no specific mirror (probably makes little
+ sense), this CRL information is used for all defined https entries
+ in sources.list file. In a mirror specific context, it only applies
+ to that mirror.
+
+ Acquire::https[::repo.domain.tld]::IssuerCert "/path/to/issuer/cert.pem";
+
+ Allows one to constrain the issuer of the server certificate (for all
+ https mirrors or a specific one) to a specific issuer. If the
+ server certificate has not been issued by this certificate,
+ connection fails.
+
+ Acquire::https[::repo.domain.tld]::Verify-Peer "true";
+
+ When authenticating the server, if the certificate verification fails
+ for some reason (expired, revoked, man in the middle, lack of anchor,
+ ...), the connection fails. This is obviously what you want in all
+ cases and what the default value (true) of this option provides.
+
+ If you know EXACTLY what you are doing, setting this option to "false"
+ allow you to skip peer certificate verification and make the exchange
+ succeed. Again, this option is for debugging or testing purpose only.
+ It removes ALL the security provided by the use of SSL.TLS to secure
+ the HTTP exchanges.
+
+ Acquire::https[::repo.domain.tld]::Verify-Host "true";
+
+ The certificate provided by the server during the TLS/SSL exchange
+ provides the identity of the server which should match the DNS name
+ used to access it. By default, as requested by RFC 2818, the name
+ of the mirror is checked against the identity found in the
+ certificate. This default behavior is safe and should not be
+ changed. If you know that the server you are using has a DNS name
+ which does not match the identity in its certificate, you can
+ [report that issue to its administrator or] set the option to
+ "false", which will prevent the comparison to be done.
+
+ The options can be set globally or on a per-mirror basis. If set
+ globally, the DNS name used is the one found in the sources.list
+ file in the https URI.
+
+ Acquire::https[::repo.domain.tld]::SslCert "/path/to/client/cert.pem";
+ Acquire::https[::repo.domain.tld]::SslKey "/path/to/client/key.pem";
+
+ These two options provides support for client authentication using
+ certificates. They respectively accept the X.509 client certificate
+ in PEM format and the associated client key in PEM format (non
+ encrypted form).
+
+ The options can be set globally (which rarely makes sense) or on a
+ per-mirror basis.
+
+ Acquire::https[::repo.domain.tld]::SslForceVersion "TLSv1";
+
+ This option can be use to select the version which will be proposed
+ to the server. "SSLv3" and "TLSv1" are supported. SSLv2, which is
+ considered insecure anyway is not supported (by gnutls, which is
+ used by libcurl against which apt https method is linked).
+
+ When the option is set to "SSLv3" to have apt propose SSLv3 (and
+ associated sets of ciphersuites) instead of TLSv1 (the default)
+ when performing the exchange. This prevents the server to select
+ TLSv1 and use associated ciphersuites. You should probably not use
+ this option except if you know exactly what you are doing.
+
+ Note that the default setting does not guarantee that the server
+ will not select SSLv3 (for ciphersuites and SSL/TLS version as
+ selection is always done by the server, in the end). It only means
+ that apt will not advertise TLS support.
+
+ Debug::Acquire::https "true";
+
+ This option can be used to show debug information. Because it is
+ quite verbose, it is mainly useful to debug problems in case of
+ failure to connect to a server for some reason. The default value
+ is "false".
+
+*/
diff --git a/doc/examples/apt.conf b/doc/examples/apt.conf
new file mode 100644
index 000000000..7201d1920
--- /dev/null
+++ b/doc/examples/apt.conf
@@ -0,0 +1,32 @@
+// $Id: apt.conf,v 1.43 1999/12/06 02:19:38 jgg Exp $
+/* This file is a sample configuration file with a few harmless sample
+ options.
+*/
+
+APT
+{
+ // Options for apt-get
+ Get
+ {
+ Download-Only "false";
+ };
+
+};
+
+// Options for the downloading routines
+Acquire
+{
+ Retries "0";
+};
+
+// Things that effect the APT dselect method
+DSelect
+{
+ Clean "auto"; // always|auto|prompt|never
+};
+
+DPkg
+{
+ // Probably don't want to use force-downgrade..
+ Options {"--force-overwrite";}
+}
diff --git a/doc/examples/configure-index b/doc/examples/configure-index
new file mode 100644
index 000000000..eb0a242c5
--- /dev/null
+++ b/doc/examples/configure-index
@@ -0,0 +1,758 @@
+/* This file is an index of all APT configuration directives.
+ Instead of actual values the option has the type as value.
+ Additional explanations and possible values might be detailed in a comment.
+
+ Most of the options have sane default values,
+ unless you have specific needs you should NOT include arbitrary
+ items in a custom configuration.
+
+ In some instances involving filenames it is possible to set the default
+ directory when the path is evaluated. This means you can use relative
+ paths within the sub scope.
+
+ The configuration directives are specified in a tree with {} designating
+ a subscope relative to the tag before the {}. You can further specify
+ a subscope using scope notation e.g.,
+ APT::Architecture "i386";
+ This is prefixed with the current scope. Scope notation must be used
+ if an option is specified on the command line with -o.
+
+ The most complex type is perhaps <LIST>:
+ APT::Architectures "<LIST>";
+ In configuration files it usually appears as a subscope of its own like:
+ APT::Architectures { "amd64"; "i386"; };
+ but the same can be achieved with (needed for commandline)
+ APT::Architectures "amd64,i386";
+ which overrides the values in the scope notation.
+
+ See apt.conf manpage for a detailed description of many common options
+ and the syntax of configuration files and commandline options!
+*/
+
+quiet "<INT>";
+quiet::NoUpdate "<BOOL>"; // never update progress information - included in -q=1
+quiet::NoProgress "<BOOL>"; // disables the 0% → 100% progress on cache generation and stuff
+quiet::NoStatistic "<BOOL>"; // no "42 kB downloaded" stats in update
+
+// Options for APT in general
+APT
+{
+ Architecture "<STRING>"; // debian architecture like amd64, i386, powerpc, armhf, mips, …
+ Architectures "<LIST>"; // a list of (foreign) debian architectures, defaults to: dpkg --print-foreign-architectures
+
+ Build-Essential "<LIST>"; // list of package names
+ Build-Profiles "<STRING_OR_LIST>";
+
+ NeverAutoRemove "<LIST>"; // list of package name regexes
+
+ // Options for apt-get
+ Get
+ {
+ // build-dep options:
+ Host-Architecture "<STRING>"; // debian architecture
+ Arch-Only "<BOOL>";
+ Indep-Only "<BOOL>";
+ Build-Dep-Automatic "<BOOL>";
+
+ // (non-)confirming options
+ Force-Yes "<BOOL>"; // allows downgrades, essential removal and eats children
+ Allow-Downgrades "<BOOL>";
+ Allow-Change-Held-Packages "<BOOL>";
+ Allow-Remove-Essential "<BOOL>";
+ Assume-Yes "<BOOL>"; // not as dangerous, but use with care still
+ Assume-No "<BOOL>";
+ Trivial-Only "<BOOL>";
+ Remove "<BOOL>";
+ AllowUnauthenticated "<BOOL>"; // skip security
+
+ AutomaticRemove "<BOOL>";
+ HideAutoRemove "<STRING_OR_BOOL>"; // yes, no, small
+
+ Simulate "<BOOL>";
+ Show-User-Simulation-Note "<BOOL>";
+ Fix-Broken "<BOOL>";
+ Fix-Policy-Broken "<BOOL>";
+
+ Download "<BOOL>";
+ Download-Only "<BOOL>";
+ Fix-Missing "<BOOL>";
+ Print-URIs "<BOOL>";
+ List-Cleanup "<BOOL>";
+
+ Show-Upgraded "<BOOL>";
+ Show-Versions "<BOOL>";
+ Upgrade "<BOOL>";
+ Only-Upgrade "<BOOL>";
+ Upgrade-Allow-New "<BOOL>";
+ Purge "<BOOL>";
+ ReInstall "<BOOL>";
+ Compile "<BOOL>";
+ Only-Source "<BOOL>";
+ Diff-Only "<BOOL>";
+ Tar-Only "<BOOL>";
+ Dsc-Only "<BOOL>";
+
+ Autosolving "<BOOL>";
+ CallResolver "<BOOL>";
+ IndexTargets::ReleaseInfo "<BOOL>";
+ IndexTargets::format "<STRING>";
+ };
+
+ Cache
+ {
+ AllNames "<BOOL>";
+ AllVersions "<BOOL>";
+ Only-Source "<BOOL>";
+ GivenOnly "<BOOL>";
+ RecurseDepends "<BOOL>";
+ Installed "<BOOL>";
+ Important "<BOOL>";
+ ShowDependencyType "<BOOL>";
+ ShowVersion "<BOOL>";
+ ShowPre-Depends "<BOOL>";
+ ShowDepends "<BOOL>";
+ ShowRecommends "<BOOL>";
+ ShowSuggests "<BOOL>";
+ ShowReplaces "<BOOL>";
+ ShowConflicts "<BOOL>";
+ ShowBreaks "<BOOL>";
+ ShowEnhances "<BOOL>";
+ ShowOnlyFirstOr "<BOOL>";
+ ShowImplicit "<BOOL>";
+ ShowVirtuals "<BOOL>";
+ ShowFull "<BOOL>";
+ NamesOnly "<BOOL>";
+
+ show::version "<INT>";
+ search::version "<INT>";
+ };
+
+ CDROM
+ {
+ Rename "<BOOL>";
+ NoMount "<BOOL>";
+ Fast "<BOOL>";
+ NoAct "<BOOL>";
+ Thorough "<BOOL>";
+ DropTranslation "<BOOL>";
+ };
+
+ Update
+ {
+ Pre-Invoke {"touch /var/lib/apt/pre-update-stamp"; };
+ Post-Invoke {"touch /var/lib/apt/post-update-stamp"; };
+ };
+
+ /* define a new supported compressor on the fly
+ Compressor::rev {
+ Name "rev";
+ Extension ".reversed";
+ Binary "rev";
+ CompressArg {};
+ UncompressArg {};
+ Cost "10";
+ };
+ */
+ Compressor "<LIST>";
+ Compressor::** "<UNDEFINED>";
+
+ Authentication
+ {
+ TrustCDROM "false"; // consider the CD-ROM always trusted
+ };
+
+ Clean-Installed "<BOOL>";
+
+ // Some general options
+ Default-Release "<STRING>";
+ Ignore-Hold "<BOOL>";
+ Immediate-Configure "<BOOL>";
+ Immediate-Configure-All "<BOOL>";
+ Force-LoopBreak "<BOOL>";
+
+ Cache-Start "<INT>";
+ Cache-Grow "<INT>";
+ Cache-Limit "<INT>";
+ Cache-Fallback "<BOOL>";
+ Cache-HashTableSize "<INT>";
+
+ // consider Recommends/Suggests as important dependencies that should
+ // be installed by default
+ Install-Recommends "<BOOL>";
+ Install-Suggests "<BOOL>";
+ // reverse Recommends or Suggests prevent autoremoval
+ AutoRemove::RecommendsImportant "<BOOL>";
+ AutoRemove::SuggestsImportant "<BOOL>";
+
+ // consider dependencies of packages in this section manual
+ Never-MarkAuto-Sections {"metapackages"; "universe/metapackages"; };
+
+ // Write progress messages on this fd (for stuff like base-config)
+ Status-Fd "<INT>";
+ Status-deb822-Fd "<INT>";
+ // Keep the list of FDs open (normally apt closes all fds when it
+ // does a ExecFork)
+ Keep-Fds {};
+
+ // control parameters for cron jobs by /etc/cron.daily/apt documented there
+ Periodic {};
+};
+
+// Options for the downloading routines
+Acquire
+{
+ Queue-Mode "<STRING>"; // host or access
+ Retries "<INT>";
+ Source-Symlinks "<BOOL>";
+ ForceHash "<STRING>"; // hashmethod used for expected hash: sha256, sha1 or md5sum
+
+ PDiffs "<BOOL>"; // try to get the IndexFile diffs
+ PDiffs::FileLimit "<INT>"; // don't use diffs if we would need more than 4 diffs
+ PDiffs::SizeLimit "<INT>"; // don't use diffs if size of all patches excess X% of the size of the original file
+ PDiffs::Merge "<BOOL>";
+
+ Check-Valid-Until "<BOOL>";
+ Max-ValidTime "<INT>"; // time in seconds
+ Max-ValidTime::* "<INT>"; // repository label specific configuration
+ Min-ValidTime "<INT>"; // time in seconds
+ Min-ValidTime::* "<INT>"; // repository label specific configuration
+
+ SameMirrorForAllIndexes "<BOOL>"; // use the mirror serving the Release file for Packages & co
+
+ // HTTP method configuration
+ http
+ {
+ Proxy "http://127.0.0.1:3128";
+ Proxy::http.us.debian.org "DIRECT"; // Specific per-host setting
+ Timeout "120";
+ Pipeline-Depth "5";
+ AllowRedirect "true";
+
+ // Cache Control. Note these do not work with Squid 2.0.2
+ No-Cache "false";
+ Max-Age "86400"; // 1 Day age on index files
+ No-Store "false"; // Prevent the cache from storing archives
+ Dl-Limit "<INT>"; // Kb/sec maximum download rate
+ User-Agent "Debian APT-HTTP/1.3";
+ };
+
+ // HTTPS method configuration: uses the http
+ // - proxy config
+ // - cache-control values
+ // - Dl-Limit, Timeout, ... values
+ // if not set explicit for https
+ //
+ // see /usr/share/doc/apt/examples/apt-https-method-example.conf.gz
+ // for more examples
+ https
+ {
+ Verify-Peer "false";
+ SslCert "/etc/apt/some.pem";
+ CaPath "/etc/ssl/certs";
+ Verify-Host "true";
+ AllowRedirect "true";
+
+ Timeout "120";
+ AllowRedirect "true";
+
+ // Cache Control. Note these do not work with Squid 2.0.2
+ No-Cache "false";
+ Max-Age "86400"; // 1 Day age on index files
+ No-Store "false"; // Prevent the cache from storing archives
+ Dl-Limit "<INT>"; // Kb/sec maximum download rate
+
+ User-Agent "Debian APT-CURL/1.0";
+ };
+
+ ftp
+ {
+ Proxy "ftp://127.0.0.1/";
+ Proxy::http.us.debian.org "DIRECT"; // Specific per-host setting
+
+ /* Required script to perform proxy login. This example should work
+ for tisfwtk */
+ ProxyLogin
+ {
+ "USER $(PROXY_USER)";
+ "PASS $(PROXY_PASS)";
+ "USER $(SITE_USER)@$(SITE):$(SITE_PORT)";
+ "PASS $(SITE_PASS)";
+ };
+
+ Timeout "120";
+
+ /* Passive mode control, proxy, non-proxy and per-host. Pasv mode
+ is preferred if possible */
+ Passive "true";
+ Proxy::Passive "true";
+ Passive::http.us.debian.org "true"; // Specific per-host setting
+ };
+
+ cdrom
+ {
+ AutoDetect "<BOOL>"; // do auto detection of the cdrom mountpoint
+ // when auto-detecting, only look for cdrom/dvd. when this is false
+ // it will support any removable device as a "cdrom" source
+ CdromOnly "true";
+
+ // cdrom mountpoint (needs to be defined in fstab if AutoDetect is not used)
+ mount "/cdrom";
+
+ // You need the trailing slash!
+ "/cdrom/"
+ {
+ Mount "sleep 1000";
+ UMount "sleep 500";
+ }
+ };
+
+ gpgv
+ {
+ Options {"--ignore-time-conflict";} // not very useful on a normal system
+ };
+
+ /* CompressionTypes
+ {
+ bz2 "bzip2";
+ lzma "lzma";
+ gz "gzip";
+
+ Order { "uncompressed"; "gz"; "lzma"; "bz2"; };
+ }; */
+ CompressionTypes::Order "<LIST>";
+ CompressionTypes::* "<STRING>";
+
+ Languages "<LIST>"; // "environment,de,en,none,fr";
+
+ // Location of the changelogs with the placeholder @CHANGEPATH@ (e.g. "main/a/apt/apt_1.1")
+ Changelogs::URI
+ {
+ // Origin::Debian "http://metadata.ftp-master.debian.org/changelogs/@CHANGEPATH@_changelog";
+ Origin::* "<STRING>";
+ Label::* "<STRING>";
+ Override::Origin::* "<STRING>";
+ Override::Label::* "<STRING>";
+ };
+ Changelogs::AlwaysOnline "<BOOL>"; // even if the changelog file exists get it online (as the file is incomplete)
+ Changelogs::AlwaysOnline::Origin::* "<BOOL>";
+};
+
+// Directory layout
+Dir "<DIR>"
+{
+ Ignore-Files-Silently "<LIST>"; // of regexes: "\.dpkg-[a-z]+$,\.bak$,~$";
+
+ // Location of the state dir
+ State "<DIR>"
+ {
+ Lists "<DIR>";
+ status "<FILE>";
+ extended_states "<FILE>";
+ cdroms "<FILE>";
+ };
+
+ // Location of the cache dir
+ Cache "<DIR>" {
+ Archives "<DIR>";
+ Backup "backup/"; // backup directory created by /etc/cron.daily/apt
+ srcpkgcache "<FILE>";
+ pkgcache "<FILE>";
+ };
+
+ // Config files
+ Etc "<DIR>" {
+ Main "<FILE>";
+ Netrc "<FILE>";
+ Parts "<DIR>";
+ Preferences "<FILE>";
+ PreferencesParts "<DIR>";
+ SourceList "<FILE>";
+ SourceParts "<DIR>";
+ Trusted "<FILE>";
+ TrustedParts "<DIR>";
+ };
+
+ // Locations of binaries
+ Bin {
+ methods "<DIR>";
+ methods::* "<FILE>";
+ gpg "/usr/bin/gpgv";
+ dpkg "<PROGRAM_PATH>";
+ dpkg-source "<PROGRAM_PATH>";
+ dpkg-buildpackage "/usr/bin/dpkg-buildpackage";
+ lz4 "<PROGRAM_PATH>";
+ gzip "<PROGRAM_PATH>";
+ xz "<PROGRAM_PATH>";
+ bzip2 "<PROGRAM_PATH>";
+ lzma "<PROGRAM_PATH>";
+ uncompressed "<PROGRAM_PATH>";
+
+ solvers "<LIST>"; // of directories
+ planners "<LIST>"; // of directories
+ };
+
+ // Location of the logfiles
+ Log "<DIR>" {
+ Terminal "<FILE>";
+ History "<FILE>";
+ Solver "<FILE>";
+ Planner "<FILE>";
+ };
+
+ Media
+ {
+ MountPath "/media/apt"; // Media AutoDetect mount path
+ };
+};
+
+// Things that effect the APT dselect method
+DSelect
+{
+ Clean "auto"; // always|auto|prompt|never
+ Options "-f";
+ UpdateOptions "";
+ PromptAfterUpdate "no";
+ CheckDir "no";
+}
+
+DPkg
+{
+ NoTriggers "<BOOL>";
+ ConfigurePending "<BOOL>";
+ TriggersPending "<BOOL>";
+
+ // Probably don't want to use force-downgrade..
+ Options {"--force-overwrite";"--force-downgrade";}
+
+ // Auto re-mounting of a readonly /usr
+ Pre-Invoke {"mount -o remount,rw /usr";};
+ Post-Invoke {"mount -o remount,ro /usr";};
+
+ Chroot-Directory "/";
+
+ // Prevents daemons from getting cwd as something mountable (default)
+ Run-Directory "/";
+
+ // Build options for apt-get source --compile
+ Build-Options "-b -uc";
+
+ // Pre-configure all packages before they are installed using debconf.
+ Pre-Install-Pkgs {"dpkg-preconfigure --apt --priority=low --frontend=dialog";};
+
+ // Flush the contents of stdin before forking dpkg.
+ FlushSTDIN "true";
+
+ MaxArgBytes "<INT>"; // Control the size of the command line passed to dpkg.
+ Install::Recursive "<BOOL>" // avoid long commandlines by recursive install in a tmpdir
+ {
+ force "<BOOL>"; // not all dpkg versions support this, so autodetection is default
+ minimum "<INT>"; // don't bother if its just a few packages
+ numbered "<BOOL>"; // avoid M-A:same ordering bug in dpkg
+ };
+
+ UseIONice "<BOOL>";
+
+ // controls if apt will apport on the first dpkg error or if it
+ // tries to install as many packages as possible
+ StopOnError "true";
+}
+
+/* Options you can set to see some debugging text They correspond to names
+ of classes in the source code */
+Debug
+{
+ pkgInitConfig "<BOOL>";
+ pkgProblemResolver "<BOOL>";
+ pkgProblemResolver::ShowScores "<BOOL>";
+ pkgDepCache::AutoInstall "<BOOL>"; // what packages apt installs to satisfy dependencies
+ pkgDepCache::Marker "<BOOL>";
+ pkgCacheGen "<BOOL>";
+ pkgAcquire "<BOOL>";
+ pkgAcquire::Worker "<BOOL>";
+ pkgAcquire::Auth "<BOOL>";
+ pkgAcquire::Diffs "<BOOL>";
+ pkgDPkgPM "<BOOL>";
+ pkgDPkgProgressReporting "<BOOL>";
+ pkgOrderList "<BOOL>";
+ pkgPackageManager "<BOOL>"; // OrderList/Configure debugging
+ pkgAutoRemove "<BOOL>"; // show information about automatic removes
+ BuildDeps "<BOOL>";
+ pkgInitialize "<BOOL>"; // This one will dump the configuration space
+ NoLocking "<BOOL>";
+ Acquire::Ftp "<BOOL>"; // Show ftp command traffic
+ Acquire::Http "<BOOL>"; // Show http command traffic
+ Acquire::Https "<BOOL>"; // Show https debug
+ Acquire::gpgv "<BOOL>"; // Show the gpgv traffic
+ Acquire::cdrom "<BOOL>"; // Show cdrom debug output
+ Acquire::Transaction "<BOOL>";
+ Acquire::Progress "<BOOL>";
+ aptcdrom "<BOOL>"; // Show found package files
+ IdentCdrom "<BOOL>";
+ acquire::netrc "<BOOL>"; // netrc parser
+ RunScripts "<BOOL>"; // debug invocation of external scripts
+ pkgPolicy "<BOOL>";
+ GetListOfFilesInDir "<BOOL>";
+ pkgAcqArchive::NoQueue "<BOOL>";
+ Hashes "<BOOL>";
+ APT::FtpArchive::Clean "<BOOL>";
+ NoDropPrivs "<BOOL>";
+ EDSP::WriteSolution "<BOOL>";
+ InstallProgress::Fancy "<BOOL>";
+ APT::Progress::PackageManagerFd "<BOOL>";
+};
+
+pkgCacheGen
+{
+ Essential "<STRING>"; // native,all, none, installed
+ ForceEssential "<STRING_OR_LIST>"; // package names
+ ForceImportant "<LIST>"; // package names
+};
+
+// modify points awarded for various facts about packages while
+// resolving conflicts in the dependency resolution process
+pkgProblemResolver::Scores
+{
+ Required "<INT>";
+ Important "<INT>";
+ Standard "<INT>";
+ Optional "<INT>";
+ Extra "<INT>";
+ Essentials "<INT>";
+ NotObsolete "<INT>";
+ Depends "<INT>";
+ PreDepends "<INT>";
+ Suggests "<INT>";
+ Recommends "<INT>";
+ Conflicts "<INT>";
+ Replaces "<INT>";
+ Obsoletes "<INT>";
+ Breaks "<INT>";
+ Enhances "<INT>";
+ AddProtected "<INT>";
+ AddEssential "<INT>";
+};
+pkgProblemResolver::FixByInstall "<BOOL>";
+
+APT::FTPArchive::release
+{
+ Default-Patterns "<BOOL>";
+ NumericTimezone "<BOOL>";
+
+ // set specific fields in the generated Release file
+ Acquire-By-Hash "<BOOL>";
+ ButAutomaticUpgrades "<BOOL>";
+ NotAutomatic "<BOOL>";
+ MD5 "<BOOL>";
+ SHA1 "<BOOL>";
+ SHA256 "<BOOL>";
+ SHA512 "<BOOL>";
+ Architectures "<STRING>";
+ Codename "<STRING>";
+ Components "<STRING>";
+ Date "<STRING>";
+ Description "<STRING>";
+ Label "<STRING>";
+ Origin "<STRING>";
+ Signed-by "<STRING>";
+ Suite "<STRING>";
+ Version "<STRING>";
+};
+
+// having both seems wrong
+dpkgpm::progress "<BOOL>";
+dpkg::progress "<BOOL>";
+apt::acquire::by-hash "<STRING>";
+acquire::by-hash "<STRING>";
+apt::acquire::*::by-hash "<STRING>";
+acquire::*::by-hash "<STRING>";
+
+// Unsorted options: Some of those are used only internally
+
+help "<BOOL>"; // true if the help message was requested via e.g. --help
+version "<BOOL>"; // true if the version number was requested via e.g. --version
+Binary "<STRING>"; // name of the program run like apt-get, apt-cache, …
+
+dir::locale "<DIR>";
+dir::bin::dpkg-source "<STRING>";
+
+pkgcachefile::generate "<BOOL>";
+packagemanager::unpackall "<BOOL>";
+packagemanager::configure "<STRING>";
+commandline::asstring "<STRING>";
+edsp::scenario "<STRING>";
+eipp::scenario "<STRING>";
+cd::* "<STRING>"; // added CDRoms are stored as config
+
+orderlist::score::delete "<INT>";
+orderlist::score::essential "<INT>";
+orderlist::score::immediate "<INT>";
+orderlist::score::predepends "<INT>";
+
+apt::sources::with "<LIST>";
+apt::moo::color "<BOOL>";
+apt::pkgpackagemanager::maxloopcount "<INT>";
+apt::hashes::*::untrusted "<BOOL>";
+apt::list-cleanup "<BOOL>";
+apt::authentication::trustcdrom "<BOOL>";
+apt::solver::strict-pinning "<BOOL>";
+apt::keep-downloaded-packages "<BOOL>";
+apt::solver "<STRING>";
+apt::planner "<STRING>";
+apt::system "<STRING>";
+apt::acquire::translation "<STRING>"; // deprecated in favor of Acquire::Languages
+apt::sandbox::user "<STRING>";
+apt::color::highlight "<STRING>";
+apt::color::neutral "<STRING>";
+
+dpkgpm::reporting-steps "<INT>";
+
+dpkg::chroot-directory "<DIR>";
+dpkg::tools::options::** "<UNDEFINED>";
+dpkg::source-options "<STRING>";
+dpkg::progress-fancy "<BOOL>";
+dpkg::selection::remove::approved "<BOOL>";
+dpkg::remove::crossgrade::implicit "<BOOL>";
+dpkg::selection::current::saveandrestore "<BOOL>";
+dpkg::use-pty "<BOOL>";
+
+apt::cmd::disable-script-warning "<BOOL>";
+apt::cmd::show-update-stats "<BOOL>";
+apt::cmd::use-format "<BOOL>";
+apt::cmd::manual-installed "<BOOL>";
+apt::cmd::upgradable "<BOOL>";
+apt::cmd::installed "<BOOL>";
+apt::cmd::list-include-summary "<BOOL>";
+apt::cmd::use-regexp "<BOOL>";
+apt::cmd::all-versions "<BOOL>";
+apt::cmd::format "<STRING>";
+
+apt::config::dump::emptyvalue "<BOOL>";
+apt::config::dump::format "<STRING>";
+
+apt::mark::simulate "<BOOL>";
+apt::markauto::verbose "<BOOL>";
+apt::sortpkgs::source "<BOOL>";
+apt::extracttemplates::tempdir "<STRING>";
+
+apt::key::archivekeyring "<STRING>";
+apt::key::removedkeys "<STRING>";
+apt::key::gpgvcommand "<STRING>";
+apt::key::gpgcommand "<STRING>";
+apt::key::masterkeyring "<STRING>";
+apt::key::archivekeyringuri "<STRING>";
+apt::key::net-update-enabled "<STRING>";
+
+apt::ftparchive::release::patterns "<LIST>";
+apt::ftparchive::release::validtime "<INT>";
+apt::ftparchive::by-hash-keep "<INT>";
+apt::ftparchive::delinkact "<BOOL>";
+apt::ftparchive::md5 "<BOOL>";
+apt::ftparchive::sha1 "<BOOL>";
+apt::ftparchive::sha256 "<BOOL>";
+apt::ftparchive::sha512 "<BOOL>";
+apt::ftparchive::dobyhash "<BOOL>";
+apt::ftparchive::showcachemisses "<BOOL>";
+apt::ftparchive::sources::md5 "<BOOL>";
+apt::ftparchive::sources::sha1 "<BOOL>";
+apt::ftparchive::sources::sha256 "<BOOL>";
+apt::ftparchive::sources::sha512 "<BOOL>";
+apt::ftparchive::packages::md5 "<BOOL>";
+apt::ftparchive::packages::sha1 "<BOOL>";
+apt::ftparchive::packages::sha256 "<BOOL>";
+apt::ftparchive::packages::sha512 "<BOOL>";
+apt::ftparchive::dobyhash "<BOOL>";
+apt::ftparchive::readonlydb "<BOOL>";
+apt::ftparchive::nooverridemsg "<BOOL>";
+apt::ftparchive::alwaysstat "<BOOL>";
+apt::ftparchive::contents "<BOOL>";
+apt::ftparchive::contentsonly "<BOOL>";
+apt::ftparchive::longdescription "<BOOL>";
+apt::ftparchive::includearchitectureall "<BOOL>";
+apt::ftparchive::architecture "<STRING>";
+apt::ftparchive::db "<STRING>";
+apt::ftparchive::sourceoverride "<STRING>";
+
+apt-helper::cat-file::compress "<STRING>";
+
+acquire::cdrom::mount "<DIR>";
+acquire::maxreleasefilesize "<INT>";
+acquire::queuehost::limit "<INT>";
+acquire::max-pipeline-depth "<INT>";
+acquire::allowinsecurerepositories "<BOOL>";
+acquire::allowweakrepositories "<BOOL>";
+acquire::allowdowngradetoinsecurerepositories "<BOOL>";
+acquire::progress::diffpercent "<BOOL>";
+acquire::gzipindexes "<BOOL>";
+acquire::indextargets::randomized "<BOOL>";
+acquire::indextargets::deb::** "<UNDEFINED>";
+acquire::indextargets::deb-src::** "<UNDEFINED>";
+acquire::progress::ignore::showerrortext "<BOOL>";
+acquire::*::dl-limit "<INT>"; // catches file: and co which do not have these
+methods::mirror::problemreporting "<STRING>";
+acquire::http::proxyautodetect "<STRING>";
+acquire::http::proxy-auto-detect "<STRING>";
+acquire::http::proxy::* "<STRING>";
+acquire::https::proxyautodetect "<STRING>";
+acquire::https::proxy-auto-detect "<STRING>";
+acquire::https::proxy::* "<STRING>";
+
+// Options used by apt-ftparchive
+dir::archivedir "<DIR>";
+dir::cachedir "<DIR>";
+dir::overridedir "<DIR>";
+filemode "<INT>";
+longdescription "<BOOL>";
+external-links "<BOOL>";
+default::contentsage "<INT>";
+default::maxcontentschange "<INT>";
+default::filemode "<INT>";
+default::longdescription "<BOOL>";
+default::translation::compress "<STRING>";
+default::contents::compress "<STRING>";
+default::sources::compress "<STRING>";
+default::packages::compress "<STRING>";
+default::sources::extensions "<STRING>";
+default::packages::extensions "<STRING>";
+treedefault::directory "<STRING>";
+treedefault::srcdirectory "<STRING>";
+treedefault::packages "<STRING>";
+treedefault::translation "<STRING>";
+treedefault::internalprefix "<STRING>";
+treedefault::contents "<STRING>";
+treedefault::contents::header "<STRING>";
+treedefault::bincachedb "<STRING>";
+treedefault::srccachedb "<STRING>";
+treedefault::sources "<STRING>";
+treedefault::filelist "<STRING>";
+treedefault::sourcefilelist "<STRING>";
+sections "<STRING>";
+architectures "<STRING>";
+binoverride "<STRING>";
+internalprefix "<STRING>";
+bincachedb "<STRING>";
+directory "<STRING>";
+packages "<STRING>";
+translation "<STRING>";
+contents "<STRING>";
+filelist "<STRING>";
+extraoverride "<STRING>";
+pathprefix "<STRING>";
+srcdirectory "<STRING>";
+sources "<STRING>";
+sourcefilelist "<STRING>";
+srcextraoverride "<STRING>";
+srccachedb "<STRING>";
+srcoverride "<STRING>";
+contents::header "<STRING>";
+packages::compress "<STRING>";
+sources::compress "<STRING>";
+contents::compress "<STRING>";
+translation::compress "<STRING>";
+sources::extensions "<STRING>";
+packages::extensions "<STRING>";
+dir::filelistdir "<STRING>";
+
+// Internal code.
+dir::dpkg::tupletable "<FILE>";
+dir::dpkg::triplettable "<FILE>";
+dir::dpkg::cputable "<FILE>";
diff --git a/doc/examples/ftp-archive.conf b/doc/examples/ftp-archive.conf
new file mode 100644
index 000000000..4f4b00852
--- /dev/null
+++ b/doc/examples/ftp-archive.conf
@@ -0,0 +1,81 @@
+/* This configuration file describes the standard Debian distribution
+ as it once looked */
+
+Dir
+{
+ ArchiveDir "/org/ftp.debian.org/ftp/";
+ OverrideDir "/org/ftp.debian.org/scripts/override/";
+ CacheDir "/org/ftp.debian.org/scripts/cache/";
+};
+
+Default
+{
+ Packages::Compress ". gzip";
+ Sources::Compress "gzip";
+ Contents::Compress "gzip";
+ DeLinkLimit 10000; // 10 Meg delink per day
+ MaxContentsChange 10000; // 10 Meg of new contents files per day
+};
+
+TreeDefault
+{
+ Contents::Header "/org/ftp.debian.org/scripts/masterfiles/Contents.top";
+ BinCacheDB "packages-$(ARCH).db";
+
+ // These are all defaults and are provided for completeness
+ Directory "$(DIST)/$(SECTION)/binary-$(ARCH)/";
+ Packages "$(DIST)/$(SECTION)/binary-$(ARCH)/Packages";
+
+ SrcDirectory "$(DIST)/$(SECTION)/source/";
+ Sources "$(DIST)/$(SECTION)/source/Sources";
+
+ Contents "$(DIST)/Contents-$(ARCH)";
+};
+
+tree "dists/woody"
+{
+ Sections "main contrib non-free";
+ Architectures "alpha arm hurd-i386 i386 m68k powerpc sparc sparc64 source";
+ BinOverride "override.woody.$(SECTION)";
+ SrcOverride "override.woody.$(SECTION).src";
+};
+
+tree "dists/potato"
+{
+ Sections "main contrib non-free";
+ Architectures "alpha arm i386 m68k powerpc sparc source";
+ BinOverride "override.potato.$(SECTION)";
+ SrcOverride "override.woody.$(SECTION).src";
+};
+
+tree "dists/slink"
+{
+ Sections "main contrib non-free";
+ Architectures "alpha i386 m68k sparc source";
+ BinOverride "override.slink.$(SECTION)";
+ SrcOverride "override.woody.$(SECTION).src";
+ External-Links false; // Slink should contain no links outside itself
+};
+
+
+bindirectory "project/experimental"
+{
+ Sources "project/experimental/Sources";
+ Packages "project/experimental/Packages";
+
+ BinOverride "override.experimental";
+ BinCacheDB "packages-experimental.db";
+ SrcOverride "override.experimental.src";
+};
+
+bindirectory "dists/proposed-updates"
+{
+ Packages "project/proposed-updates/Packages";
+ Contents "project/proposed-updates/Contents";
+
+ BinOverride "override.slink.all3";
+ BinOverride "override.slink.all3.src";
+ BinCacheDB "packages-proposed-updates.db";
+};
+
+
diff --git a/doc/examples/preferences b/doc/examples/preferences
new file mode 100644
index 000000000..7ebc52a41
--- /dev/null
+++ b/doc/examples/preferences
@@ -0,0 +1,11 @@
+Package: *
+Pin: release a=stable
+Pin-Priority: 500
+
+Package: *
+Pin: release a=testing
+Pin-Priority: 101
+
+Package: *
+Pin: release a=unstable
+Pin-Priority: 99
diff --git a/doc/external-dependency-solver-protocol.txt b/doc/external-dependency-solver-protocol.txt
new file mode 100644
index 000000000..68902812c
--- /dev/null
+++ b/doc/external-dependency-solver-protocol.txt
@@ -0,0 +1,377 @@
+# APT External Dependency Solver Protocol (EDSP) - version 0.5
+
+This document describes the communication protocol between APT and
+external dependency solvers. The protocol is called APT EDSP, for "APT
+External Dependency Solver Protocol".
+
+
+## Terminology
+
+In the following we use the term **architecture qualified package name**
+(or *arch-qualified package names* for short) to refer to package
+identifiers of the form "package:arch" where "package" is a package name
+and "arch" a dpkg architecture.
+
+
+## Components
+
+- **APT**: we know this one.
+- APT is equipped with its own **internal solver** for dependencies,
+ which is identified by the string `internal`.
+- **External solver**: an *external* software component able to resolve
+ dependencies on behalf of APT.
+
+At each interaction with APT, a single solver is in use. When there is
+a total of 2 or more solvers, internals or externals, the user can
+choose which one to use.
+
+Each solver is identified by an unique string, the **solver
+name**. Solver names must be formed using only alphanumeric ASCII
+characters, dashes, and underscores; solver names must start with a
+lowercase ASCII letter. The special name `internal` denotes APT's
+internal solver, is reserved, and cannot be used by external solvers.
+
+
+## Installation
+
+Each external solver is installed as a file under Dir::Bin::Solvers (see
+below), which defaults to `/usr/lib/apt/solvers`. We will assume in the
+remainder of this section that such a default value is in effect.
+
+The naming scheme is `/usr/lib/apt/solvers/NAME`, where `NAME` is the
+name of the external solver.
+
+Each file under `/usr/lib/apt/solvers` corresponding to an external
+solver must be executable.
+
+No non-solver files must be installed under `/usr/lib/apt/solvers`, so
+that an index of available external solvers can be obtained by listing
+the content of that directory.
+
+
+## Configuration
+
+Several APT options can be used to affect dependency solving in APT. An
+overview of them is given below. Please refer to proper APT
+configuration documentation for more, and more up to date, information.
+
+- **APT::Solver**: the name of the solver to be used for
+ dependency solving. Defaults to `internal`
+
+- **Dir::Bin::Solvers**: absolute path of the directory where to look for
+ external solvers. Defaults to `/usr/lib/apt/solvers`.
+
+- **APT::Solver::Strict-Pinning**: whether pinning must be strictly
+ respected (as the internal solver does) or can be slightly deviated
+ from. Defaults to `yes`.
+
+- **APT::Solver::Preferences**: user preference string used during
+ dependency solving by the requested solver. Check the documentation
+ of the solver you are using if and what is supported as a value here.
+ Defaults to the empty string.
+
+- **APT::Solver::RunAsUser**: if APT itself is run as root it will
+ change to this user before executing the solver. Defaults to the value
+ of APT::Sandbox::User, which itself defaults to `_apt`. Can be
+ disabled by set this option to `root`.
+
+The options **Strict-Pinning** and **Preferences** can also be set for
+a specific solver only via **APT::Solver::NAME::Strict-Pinning** and
+**APT::Solver::NAME::Preferences** respectively where `NAME` is the name
+of the external solver this option should apply to. These options if set
+override the generic options; for simplicity the documentation will
+refer only to the generic options.
+
+
+## Protocol
+
+When configured to use an external solver, APT will resort to it to
+decide which packages should be installed or removed.
+
+The interaction happens **in batch**: APT will invoke the external
+solver passing the current status of installed and available packages,
+as well as the user request to alter the set of installed packages. The
+external solver will compute a new complete set of installed packages
+and gives APT a "diff" listing of which *additional* packages should be
+installed and of which currently installed packages should be
+*removed*. (Note: the order in which those actions have to be performed
+will be up to APT to decide.)
+
+External solvers are invoked by executing them. Communications happens
+via the file descriptors: **stdin** (standard input) and **stdout**
+(standard output). stderr is not used by the EDSP protocol. Solvers can
+therefore use stderr to dump debugging information that could be
+inspected separately.
+
+After invocation, the protocol passes through a sequence of phases:
+
+1. APT invokes the external solver
+2. APT send to the solver a dependency solving **scenario**
+3. The solver solves dependencies. During this phase the solver may
+ send, repeatedly, **progress** information to APT.
+4. The solver sends back to APT an **answer**, i.e. either a *solution*
+ or an *error* report.
+5. The external solver exits
+
+
+### Scenario
+
+A scenario is a text file encoded in a format very similar to the "Deb
+822" format (AKA "the format used by Debian `Packages` files"). A
+scenario consists of two distinct parts: a **request** and a **package
+universe**, occurring in that order. The request consists of a single
+Deb 822 stanza, while the package universe consists of several such
+stanzas. All stanzas occurring in a scenario are separated by an empty
+line.
+
+
+#### Request
+
+Within a dependency solving scenario, a request represents the action on
+installed packages requested by the user.
+
+A request is a single Deb 822 stanza opened by a mandatory Request field
+and followed by a mixture of action, preference, and global
+configuration fields.
+
+The value of the **Request:** field is a string describing the EDSP
+protocol which will be used to communicate. At present, the string must
+be `EDSP 0.5`. Request fields are mainly used to identify the beginning
+of a request stanza; their actual values are otherwise not used by the
+EDSP protocol.
+
+The following **configuration fields** are supported in request stanzas:
+
+- **Architecture:** (mandatory) The name of the *native* architecture on
+ the user machine (see also: `dpkg --print-architecture`)
+
+- **Architectures:** (optional, defaults to the native architecture) A
+ space separated list of *all* architectures known to APT (this is
+ roughly equivalent to the union of `dpkg --print-architecture` and
+ `dpkg --print-foreign-architectures`)
+
+The following **action fields** are supported in request stanzas:
+
+- **Install:** (optional, defaults to the empty string) A space
+ separated list of arch-qualified package names, with *no version
+ attached*, to install. This field denotes a list of packages that the
+ user wants to install, usually via an APT `install` request.
+
+- **Remove:** (optional, defaults to the empty string) Same syntax of
+ Install. This field denotes a list of packages that the user wants to
+ remove, usually via APT `remove` or `purge` requests.
+
+- **Upgrade-All:** (optional, defaults to `no`). Allowed values `yes`,
+ `no`. When set to `yes`, an upgrade of all installed packages has been
+ requested, usually via an upgrade command like 'apt full-upgrade'.
+
+- **Autoremove:** (optional, defaults to `no`). Allowed values: `yes`,
+ `no`. When set to `yes`, a clean up of unused automatically installed
+ packages has been requested, usually via an APT `autoremove` request.
+
+- **Upgrade:** (deprecated, optional, defaults to `no`). Allowed values:
+ `yes`, `no`. When set to `yes`, an upgrade of all installed packages
+ has been requested, usually via an APT `upgrade` request. A value of
+ `yes` is equivalent to the fields `Upgrade-All`,
+ `Forbid-New-Install`and `Forbid-Remove` all set to `yes`.
+
+- **Dist-Upgrade:** (deprecated, optional, defaults to `no`). Allowed
+ values: `yes`, `no`. Same as Upgrade, but for APT `dist-upgrade`
+ requests. A value of `yes` is equivalent to the field `Upgrade-All`
+ set to `yes` and the fields `Forbid-New-Install`and `Forbid-Remove`
+ set to `no`.
+
+The following **preference fields** are supported in request stanzas:
+
+- **Strict-Pinning:** (optional, defaults to `yes`). Allowed values:
+ `yes`, `no`. When set to `yes`, APT pinning is strict, in the sense
+ that the solver must not propose to install packages which are not APT
+ candidates (see the `APT-Pin` and `APT-Candidate` fields in the
+ package universe). When set to `no`, the solver does only a best
+ effort attempt to install APT candidates. Usually, the value of this
+ field comes from the `APT::Solver::Strict-Pinning` configuration
+ option.
+
+- **Forbid-New-Install:* (optional, defaults to `no`). Allowed values:
+ `yes`, `no`. When set to `yes` the resolver is forbidden to install
+ new packages in its returned solution.
+
+- **Forbid-Remove:* (optional, defaults to `no`). Allowed values: `yes`,
+ `no`. When set to `yes` the resolver is forbidden to remove currently
+ installed packages in its returned solution.
+
+- **Solver:** (optional, defaults to the empty string) a purely
+ informational string specifying to which solver this request was send
+ initially.
+
+- **Preferences:** (optional, defaults to the empty string)
+ a solver-specific optimization string, usually coming from the
+ `APT::Solver::Preferences` configuration option.
+
+
+#### Package universe
+
+A package universe is a list of Deb 822 stanzas, one per package, called
+**package stanzas**. Each package stanzas starts with a Package
+field. The following fields are supported in package stanzas:
+
+- All fields contained in the dpkg database, with the exception of
+ fields marked as "internal" (see the manpage `dpkg-query (1)`). Among
+ those fields, the following are mandatory for all package stanzas:
+ Package, Version, Architecture.
+
+ It is recommended not to pass the Description field to external
+ solvers or, alternatively, to trim it to the short description only.
+
+- **Installed:** (optional, defaults to `no`). Allowed values: `yes`,
+ `no`. When set to `yes`, the corresponding package is currently
+ installed.
+
+ Note: the Status field present in the dpkg database must not be passed
+ to the external solver, as it's an internal dpkg field. Installed and
+ other fields permit one to encode the most relevant aspects of Status
+ in communications with solvers.
+
+- **Hold:** (optional, defaults to `no`). Allowed values: `yes`,
+ `no`. When set to `yes`, the corresponding package is marked as "on
+ hold" by dpkg.
+
+- **APT-ID:** (mandatory). Unique package identifier, according to APT.
+
+- **APT-Pin:** (mandatory). Must be an integer. Package pin value,
+ according to APT policy.
+
+- **APT-Candidate:** (optional, defaults to `no`). Allowed values:
+ `yes`, `no`. When set to `yes`, the corresponding package is the APT
+ candidate for installation among all available packages with the same
+ name and architecture.
+
+- **APT-Automatic:** (optional, defaults to `no`). Allowed values:
+ `yes`, `no`. When set to `yes`, the corresponding package is marked by
+ APT as automatic installed. Note that automatic installed packages
+ should be removed by the solver only when the Autoremove action is
+ requested (see Request section).
+
+- **APT-Release:** (optional) The releases the package belongs to, according to
+ APT. The format of this field is multiline with one value per line and the
+ first line (the one containing the field name) empty. Each subsequent line
+ corresponds to one of the releases the package belongs to and looks like
+ this: `o=Debian,a=unstable,n=sid,l=Debian,c=main`. That is, each release line
+ is a comma-separated list of "key=value" pairs, each of which denotes a
+ Release file entry (Origin, Label, Codename, etc.) in the format of
+ APT_PREFERENCES(5).
+
+- **Source:** (optional) The name of the source package the binary
+ package this record is for was built from.
+ This field does NOT include the version of the source package unlike
+ the Source field in the dpkg database. The version is optionally
+ available in the **Source-Version:** field.
+
+
+### Answer
+
+An answer from the external solver to APT is either a *solution* or an
+*error*.
+
+The following invariant on **exit codes** must hold true. When the
+external solver is *able to find a solution*, it will write the solution
+to standard output and then exit with an exit code of 0. When the
+external solver is *unable to find a solution* (and is aware of that),
+it will write an error to standard output and then exit with an exit
+code of 0. An exit code other than 0 will be interpreted as a solver
+crash with no meaningful error about dependency resolution to convey to
+the user.
+
+
+#### Solution
+
+A solution is a list of Deb 822 stanzas. Each of them could be an install
+stanza (telling APT to install a specific new package or to upgrade or
+downgrade a package to a specific version), a remove stanza (telling APT to
+remove one), or an autoremove stanza (telling APT about the *future*
+possibility of removing a package using the Autoremove action).
+
+An **install stanza** starts with an Install field and supports the
+following fields:
+
+- **Install:** (mandatory). The value is a package identifier,
+ referencing one of the package stanzas of the package universe via its
+ APT-ID field.
+
+- All fields supported by package stanzas.
+
+**Remove stanzas** are similar to install stanzas, but have **Remove**
+fields instead of Install fields.
+
+**Autoremove stanzas** are similar to install stanzas, but have
+**Autoremove** fields instead of Install fields. Autoremove stanzas
+should be output so that APT can inform the user of which packages they
+can now autoremove, as a consequence of the executed action. However,
+this protocol makes no assumption on the fact that a subsequent
+invocation of an Autoremove action will actually remove the very same
+packages indicated by Autoremove stanzas in the former solution.
+
+A package can't be installed in multiple versions at the same time, so
+for each package there can at most one version be selected either for
+installation or removal. This especially means that a solver is neither
+allowed to represent package upgrades as a remove of the installed
+version and the installation of another (the remove is implicit and must
+be omitted from the solution) nor is it supported to revert previous
+actions in the solution with later actions. APT is allowed to show
+warnings and might even misbehave in earlier versions if a solver is
+violating this assumption.
+
+In terms of expressivity, install and remove stanzas can carry one
+single field each, as APT-IDs are enough to pinpoint packages to be
+installed/removed. Nonetheless, for protocol readability, it is
+recommended that solvers either add unconditionally the fields Package,
+Version, and Architecture to all install/remove stanzas or,
+alternatively, that they support a `--verbose` command line flag that
+explicitly enables the output of those fields in solutions.
+
+
+#### Error
+
+An error is a single Deb 822 stanza, starting the field Error. The
+following fields are supported in error stanzas:
+
+- **Error:** (mandatory). The value of this field is ignored, although
+ it should be a unique error identifier, such as a UUID.
+
+- **Message:** (mandatory). The value of this field is a text string,
+ meant to be read by humans, that explains the cause of the solver
+ error. Message fields might be multi-line, like the Description field
+ in the dpkg database. The first line conveys a short message, which
+ can be explained in more details using subsequent lines.
+
+
+### Progress
+
+During dependency solving, an external solver may send progress
+information to APT using **progress stanzas**. A progress stanza starts
+with the Progress field and might contain the following fields:
+
+- **Progress:** (mandatory). The value of this field is a date and time
+ timestamp from the UTC timezone, in RFC 2822 format (see 'date -uR' as
+ an example). The timestamp provides a time annotation for the
+ progress report.
+
+- **Percentage:** (optional). An integer from 0 to 100, representing the
+ completion of the dependency solving process, as declared by the
+ solver.
+
+- **Message:** (optional). A textual message, meant to be read by the
+ APT user, telling what is going on within the dependency solving
+ (e.g. the current phase of dependency solving, as declared by the
+ solver).
+
+
+# Future extensions
+
+Potential future extensions to this protocol, listed in no specific
+order, include:
+
+- fixed error types to identify common failures across solvers and
+ enable APT to translate error messages
+- structured error data to explain failures in terms of packages and
+ dependencies
diff --git a/doc/external-installation-planner-protocol.txt b/doc/external-installation-planner-protocol.txt
new file mode 100644
index 000000000..4bad9da0a
--- /dev/null
+++ b/doc/external-installation-planner-protocol.txt
@@ -0,0 +1,301 @@
+# APT External Installation Planner Protocol (EIPP) - version 0.1
+
+This document describes the communication protocol between APT and
+external installation planner. The protocol is called APT EIPP, for "APT
+External Installation Planner Protocol".
+
+
+## Terminology
+
+In the following we use the term **architecture qualified package name**
+(or *arch-qualified package names* for short) to refer to package
+identifiers of the form "package:arch" where "package" is a package name
+and "arch" a dpkg architecture.
+
+
+## Components
+
+- **APT**: we know this one.
+- APT is equipped with its own **internal planner** for the order of
+ package installation (and removal) which is identified by the string
+ `internal`.
+- **External planner**: an *external* software component able to plan an
+ installation on behalf of APT.
+
+At each interaction with APT, a single planner is in use. When there is
+a total of 2 or more planners, internals or externals, the user can
+choose which one to use.
+
+Each planner is identified by an unique string, the **planner name**.
+Planner names must be formed using only alphanumeric ASCII characters,
+dashes, and underscores; planner names must start with a lowercase ASCII
+letter. The special name `internal` denotes APT's internal planner, is
+reserved, and cannot be used by external planners.
+
+
+## Installation
+
+Each external planner is installed as a file under Dir::Bin::Planners
+(see below), which defaults to `/usr/lib/apt/planners`. We will assume
+in the remainder of this section that such a default value is in effect.
+
+The naming scheme is `/usr/lib/apt/planners/NAME`, where `NAME` is the
+name of the external planner.
+
+Each file under `/usr/lib/apt/planners` corresponding to an external
+planner must be executable.
+
+No non-planner files must be installed under `/usr/lib/apt/planners`, so
+that an index of available external planners can be obtained by listing
+the content of that directory.
+
+
+## Configuration
+
+Several APT options can be used to affect installation planing in APT.
+An overview of them is given below. Please refer to proper APT
+configuration documentation for more, and more up to date, information.
+
+- **APT::Planner**: the name of the planner to be used for dependency
+ solving. Defaults to `internal`
+
+- **Dir::Bin::Planners**: absolute path of the directory where to look
+ for external solvers. Defaults to `/usr/lib/apt/planners`.
+
+
+## Protocol
+
+When configured to use an external planner, APT will resort to it to
+decide in which order packages should be installed, configured and
+removed.
+
+The interaction happens **in batch**: APT will invoke the external
+planner passing the current status of (half-)installed packages and of
+packages which should be installed, as well as a request denoting the
+packages to install, reinstall, remove and purge. The external planner
+will compute a valid plan of when and how to call the low-level package
+manager (like dpkg) with each package to satisfy the request.
+
+External planners are invoked by executing them. Communications happens
+via the file descriptors: **stdin** (standard input) and **stdout**
+(standard output). stderr is not used by the EIPP protocol. Planners can
+therefore use stderr to dump debugging information that could be
+inspected separately.
+
+After invocation, the protocol passes through a sequence of phases:
+
+1. APT invokes the external planner
+2. APT send to the planner an installation planner **scenario**
+3. The planner calculates the order. During this phase the planner may
+ send, repeatedly, **progress** information to APT.
+4. The planner sends back to APT an **answer**, i.e. either a *solution*
+ or an *error* report.
+5. The external planner exits
+
+
+### Scenario
+
+A scenario is a text file encoded in a format very similar to the "Deb
+822" format (AKA "the format used by Debian `Packages` files"). A
+scenario consists of two distinct parts: a **request** and a **package
+universe**, occurring in that order. The request consists of a single
+Deb 822 stanza, while the package universe consists of several such
+stanzas. All stanzas occurring in a scenario are separated by an empty
+line.
+
+
+#### Request
+
+Within an installation planner scenario, a request represents the action
+on packages requested by the user explicitly as well as potentially
+additions calculated by a dependency resolver which the user has
+accepted.
+
+An installation planner is not allowed to suggest the modification of
+package states (e.g. removing additional packages) even if it can't
+calculate a solution otherwise – the planner must error out in such
+a case. An exception is made for scenarios which contain packages which
+aren't completely installed (like half-installed or trigger-awaiting):
+Solvers are free to move these packages to a fully installed state (but
+are still forbidden to remove them).
+
+A request is a single Deb 822 stanza opened by a mandatory Request field
+and followed by a mixture of action, preference, and global
+configuration fields.
+
+The value of the **Request:** field is a string describing the EIPP
+protocol which will be used to communicate and especially which answers
+APT will understand. At present, the string must be `EIPP 0.1`. Request
+fields are mainly used to identify the beginning of a request stanza;
+their actual values are otherwise not used by the EIPP protocol.
+
+The following **configuration fields** are supported in request stanzas:
+
+- **Architecture:** (mandatory) The name of the *native* architecture on
+ the user machine (see also: `dpkg --print-architecture`)
+
+- **Architectures:** (optional, defaults to the native architecture) A
+ space separated list of *all* architectures known to APT (this is
+ roughly equivalent to the union of `dpkg --print-architecture` and
+ `dpkg --print-foreign-architectures`)
+
+The following **action fields** are supported in request stanzas:
+
+- **Install:** (optional, defaults to the empty string) A space
+ separated list of arch-qualified package names, with *no version
+ attached*, to install. This field denotes a list of packages that the
+ user wants to install, usually via an APT `install` request.
+
+- **Remove:** (optional, defaults to the empty string) Same syntax of
+ Install. This field denotes a list of packages that the user wants to
+ remove, usually via APT `remove` or `purge` requests.
+
+- **ReInstall:** (optional, defaults to the empty string) Same syntax of
+ Install. This field denotes a list of packages which are installed,
+ but should be reinstalled again e.g. because files shipped by that
+ package were removed or corrupted accidentally, usually requested via
+ an APT `install` request with the `--reinstall` flag.
+
+The following **preference fields** are supported in request stanzas:
+
+- **Planner:** (optional, defaults to the empty string) a purely
+ informational string specifying to which planner this request was send
+ initially.
+
+- **Immediate-Configuration:** (option, unset by default) A boolean
+ value defining if the planner should try to configure all packages as
+ quickly as possible (true) or shouldn't perform any kind of immediate
+ configuration at all (false). If not explicitly set with this field
+ the planner is free to pick either mode or implementing e.g. a mode
+ which configures only packages immediately if they are flagged as
+ `Essential` (or are dependencies of packages marked as `Essential`).
+
+- **Allow-Temporary-Remove-of-Essentials** (optional, defaults to `no`).
+ A boolean value allowing the planner (if set to yes) to temporarily
+ remove an essential package. Associated with the APT::Force-LoopBreak
+ configuration option its main use is highlighting that planners who do
+ temporary removes must take special care in terms of essentials. Legit
+ uses of this option by users is very uncommon, traditionally
+ a situation in which it is needed indicates a packaging error.
+
+
+#### Package universe
+
+A package universe is a list of Deb 822 stanzas, one per package, called
+**package stanzas**. Each package stanzas starts with a Package
+field. The following fields are supported in package stanzas:
+
+- The fields Package, Version, Architecture (all mandatory) and
+ Multi-Arch, Pre-Depends, Depends, Conflicts, Breaks, Essential
+ (optional) as they are contained in the dpkg database (see the manpage
+ `dpkg-query (1)`).
+
+- **Status:** (optional, defaults to `uninstalled`). Allowed values are
+ the "package status" names as listed in `dpkg-query (1)` and visible
+ e.g. in the dpkg database as the second value in the space separated
+ list of values in the Status field there. In other words: Neither
+ desired action nor error flags are present in this field in EIPP!
+
+- **APT-ID:** (mandatory). Unique package identifier, according to APT.
+
+
+### Answer
+
+An answer from the external planner to APT is either a *solution* or an
+*error*.
+
+The following invariant on **exit codes** must hold true. When the
+external planner is *able to find a solution*, it will write the
+solution to standard output and then exit with an exit code of 0. When
+the external planner is *unable to find a solution* (and is aware of
+that), it will write an error to standard output and then exit with an
+exit code of 0. An exit code other than 0 will be interpreted as
+a planner crash with no meaningful error about dependency resolution to
+convey to the user.
+
+
+#### Solution
+
+A solution is a list of Deb 822 stanzas. Each of them could be an:
+
+- unpack stanza to cause the extraction of a package to the disk
+
+- configure stanza to cause an unpacked package to be configured and
+ therefore the installation to be completed
+
+- remove stanza to cause the removal of a package from the system
+
+An **unpack stanza** starts with an Unpack field and supports the
+following fields:
+
+- **Unpack:** (mandatory). The value is a package identifier,
+ referencing one of the package stanzas of the package universe via its
+ APT-ID field.
+
+- All fields supported by package stanzas.
+
+**Configure** and **Remove stanzas** require and support the same
+fields with the exception of the Unpack field which is replaced in
+these instances with the Configure or Remove field respectively.
+
+The order of the stanzas is significant (unlike in the EDSP protocol),
+with the first stanza being the first performed action. If multiple
+stanzas of the same type appear in direct succession the order in such
+a set isn't significant through.
+
+The solution needs to be valid (it is not allowed to configure a package
+before it was unpacked, dependency relations must be satisfied, …), but
+they don't need to be complete: A planner can and should expect that any
+package which wasn't explicitly configured will be configured at the end
+automatically. That also means through that a planner is not allowed to
+produce a solution in which a package remains unconfigured. Also,
+packages which are requested to be removed will be automatically removed
+at the end if not marked for removal explicitly earlier.
+
+In terms of expressivity, all stanzas can carry one single field each, as
+APT-IDs are enough to pinpoint packages to be installed/removed.
+Nonetheless, for protocol readability, it is recommended that planners
+either add unconditionally the fields Package, Version, and Architecture
+to all install/remove stanzas or, alternatively, that they support
+a `--verbose` command line flag that explicitly enables the output of
+those fields in solutions.
+
+#### Error
+
+An error is a single Deb 822 stanza, starting the field Error. The
+following fields are supported in error stanzas:
+
+- **Error:** (mandatory). The value of this field is ignored, although
+ it should be a unique error identifier, such as a UUID.
+
+- **Message:** (mandatory). The value of this field is a text string,
+ meant to be read by humans, that explains the cause of the planner
+ error. Message fields might be multi-line, like the Description field
+ in the dpkg database. The first line conveys a short message, which
+ can be explained in more details using subsequent lines.
+
+
+### Progress
+
+During dependency solving, an external planner may send progress
+information to APT using **progress stanzas**. A progress stanza starts
+with the Progress field and might contain the following fields:
+
+- **Progress:** (mandatory). The value of this field is a date and time
+ timestamp from the UTC timezone, in RFC 2822 format (see 'date -uR' as
+ an example). The timestamp provides a time annotation for the
+ progress report.
+
+- **Percentage:** (optional). An integer from 0 to 100, representing the
+ completion of the installation planning process, as declared by the
+ planner.
+
+- **Message:** (optional). A textual message, meant to be read by the
+ APT user, telling what is going on within the installation planner
+ (e.g. the current phase of planning, as declared by the planner).
+
+
+# Future extensions
+
+Potential future extensions to this protocol are to be discussed on
+deity@lists.debian.org.
diff --git a/doc/files.dbk b/doc/files.dbk
new file mode 100644
index 000000000..714255a53
--- /dev/null
+++ b/doc/files.dbk
@@ -0,0 +1,393 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<book lang="en">
+
+<title>APT Files</title>
+
+<bookinfo>
+
+<authorgroup>
+ <author>
+ <personname>Jason Gunthorpe</personname><email>jgg@debian.org</email>
+ </author>
+</authorgroup>
+
+<releaseinfo>Version &apt-product-version;</releaseinfo>
+
+<abstract>
+<para>
+This document describes the complete implementation and format of the installed
+APT directory structure. It also serves as guide to how APT views the Debian
+archive.
+</para>
+</abstract>
+
+<copyright><year>1998-1999</year><holder>Jason Gunthorpe</holder></copyright>
+
+<legalnotice>
+<title>License Notice</title>
+<para>
+"APT" and this document are free software; you can redistribute them and/or
+modify them under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+</para>
+<para>
+For more details, on Debian systems, see the file
+/usr/share/common-licenses/GPL for the full license.
+</para>
+</legalnotice>
+
+</bookinfo>
+
+<chapter id="ch1"><title>Introduction</title>
+
+<section id="s1.1"><title>General</title>
+<para>
+This document serves two purposes. The first is to document the installed
+directory structure and the format and purpose of each file. The second
+purpose is to document how APT views the Debian archive and deals with multiple
+package files.
+</para>
+<para>
+The var directory structure is as follows:
+</para>
+<screen>
+ /var/lib/apt/
+ lists/
+ partial/
+ periodic/
+ extended_states
+ cdroms.list
+ /var/cache/apt/
+ archives/
+ partial/
+ pkgcache.bin
+ srcpkgcache.bin
+ /etc/apt/
+ sources.list.d/
+ apt.conf.d/
+ preferences.d/
+ trusted.gpg.d/
+ sources.list
+ apt.conf
+ apt_preferences
+ trusted.gpg
+ /usr/lib/apt/
+ methods/
+ bzip2
+ cdrom
+ copy
+ file
+ ftp
+ gpgv
+ gzip
+ http
+ https
+ lzma
+ rred
+ rsh
+ ssh
+</screen>
+<para>
+As is specified in the FHS 2.1 /var/lib/apt is used for application data that
+is not expected to be user modified. /var/cache/apt is used for regeneratable
+data and is where the package cache and downloaded .debs go. /etc/apt is the
+place where configuration should happen and /usr/lib/apt is the place where the
+apt and other packages can place binaries which can be used by the acquire
+system of APT.
+</para>
+</section>
+
+</chapter>
+
+<chapter id="ch2"><title>Files</title>
+
+<section id="s2.1"><title>Files and fragment directories in /etc/apt</title>
+<para>
+All files in /etc/apt are used to modify specific aspects of APT. To enable
+other packages to ship needed configuration herself all these files have a
+fragment directory packages can place their files in instead of mangling with
+the main files. The main files are therefore considered to be only used by the
+user and not by a package. The documentation omits this directories most of
+the time to be easier readable, so every time the documentation includes a
+reference to a main file it really means the file or the fragment directories.
+</para>
+</section>
+
+<section id="s2.2"><title>Distribution Source list (sources.list)</title>
+<para>
+The distribution source list is used to locate archives of the debian
+distribution. It is designed to support any number of active sources and to
+support a mix of source media. The file lists one source per line, with the
+fastest source listed first. The format of each line is:
+</para>
+<para>
+<replaceable>type uri args</replaceable>
+</para>
+<para>
+The first item, <replaceable>type</replaceable>, indicates the format for the
+remainder of the line. It is designed to indicate the structure of the
+distribution the line is talking about. Currently the only defined values are
+<emphasis>deb</emphasis> and <emphasis>deb-src</emphasis> which indicate a
+standard debian (source) archive with a dists directory. More about these
+types and the URI specification can be found in the sources.list manpage.
+</para>
+
+<section id="s2.2.1"><title>Hashing the URI</title>
+<para>
+All permanent information acquired from any of the sources is stored in the
+lists directory. Thus, there must be a way to relate the filename in the lists
+directory to a line in the sourcelist. To simplify things this is done by
+quoting the URI and treating _'s as quoteable characters and converting /
+to _. The URI spec says this is done by converting a sensitive character
+into %xx where xx is the hexadecimal representation from the ASCII character
+set. Examples:
+</para>
+<screen>
+http://www.debian.org/archive/dists/stable/binary-i386/Packages
+/var/lib/apt/lists/www.debian.org_archive_dists_stable_binary-i386_Packages
+
+cdrom:Debian 1.3/debian/Packages
+/var/lib/apt/info/Debian%201.3_debian_Packages
+</screen>
+<para>
+The other alternative that was considered was to use a deep directory structure
+but this poses two problems, it makes it very difficult to prune directories
+back when sources are no longer used and complicates the handling of the
+partial directory. This gives a very simple way to deal with all of the
+situations that can arise. Also note that the same rules described in the
+<emphasis>Archive Directory</emphasis> section regarding the partial sub dir
+apply here as well.
+</para>
+</section>
+
+</section>
+
+<section id="s2.3"><title>Extended States File (extended_states)</title>
+<para>
+The extended_states file serves the same purpose as the normal dpkg status
+file (/var/lib/dpkg/status) except that it stores information unique to
+apt. This includes currently only the autoflag but is open to store more
+unique data that come up over time. It duplicates nothing from the normal
+dpkg status file. Please see other APT documentation for a discussion of
+the exact internal behavior of these fields. The Package and the Architecture
+field are placed directly before the new fields to indicate which package
+they apply to. The new fields are as follows:
+</para>
+<variablelist>
+<varlistentry>
+<term>Auto-Installed</term>
+<listitem>
+<para>
+The Auto flag can be 1 (Yes) or 0 (No) and controls whether the package was
+automatical installed to satisfy a dependency or if the user requested the
+installation
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</section>
+
+<section id="s2.4"><title>Binary Package Cache (srcpkgcache.bin and pkgcache.bin)</title>
+<para>
+Please see cache.sgml for a complete description of what this file
+is. The cache file is updated whenever the Packages or Release files of the lists
+directory or the dpkg status file changes. If the cache is erased, corrupted or of a non-matching
+version it will be automatically rebuilt by all of the tools that need
+it. <emphasis>srcpkgcache.bin</emphasis> contains a cache of all of the
+package, release files in the source list. In comparison to <emphasis>pkgcache.bin</emphasis>, it does not include the /var/lib/dpkg/status file. This allows regeneration of the cache
+when the status files change to use a prebuilt version for greater speed.
+</para>
+</section>
+
+<section id="s2.5"><title>Downloads Directory (archives)</title>
+<para>
+The archives directory is where all downloaded .deb archives go. When the file
+transfer is initiated the deb is placed in partial. Once the file is fully
+downloaded and its MD5 hash and size are verified it is moved from partial
+into archives/. Any files found in archives/ can be assumed to be verified.
+</para>
+<para>
+No directory structure is transferred from the receiving site and all .deb file
+names conform to debian conventions. No short (msdos) filename should be
+placed in archives. If the need arises .debs should be unpacked, scanned and
+renamed to their correct internal names. This is mostly to prevent file name
+conflicts but other programs may depend on this if convenient. A conforming
+.deb is one of the form, name_version_arch.deb. Our archive scripts do not
+handle epochs, but they are necessary and should be re-inserted. If necessary
+_'s and :'s in the fields should be quoted using the % convention. It must be
+possible to extract all 3 fields by examining the file name. Downloaded .debs
+must be found in one of the package lists with an exact name + version match..
+</para>
+</section>
+
+<section id="s2.6"><title>The Methods Directory (/usr/lib/apt/methods)</title>
+<para>
+The Methods directory is more fully described in the APT Methods interface
+document.
+</para>
+</section>
+
+<section id="s2.7"><title>The Configuration File (/etc/apt/apt.conf)</title>
+<para>
+The configuration file (and the associated fragments directory
+/etc/apt/apt.conf.d/) is described in the apt.conf manpage.
+</para>
+</section>
+
+<section id="s2.8"><title>The trusted.gpg File (/etc/apt/trusted.gpg)</title>
+<para>
+The trusted.gpg file (and the files in the associated fragments directory
+/etc/apt/trusted.gpg.d/) is a binary file including the keyring used by apt to
+validate that the information (e.g. the Release file) it downloads are really
+from the distributor it clams to be and is unmodified and is therefore the last
+step in the chain of trust between the archive and the end user. This security
+system is described in the apt-secure manpage.
+</para>
+</section>
+
+<section id="s2.9"><title>The Release File</title>
+<para>
+This file plays an important role in how APT presents the archive to the
+user. Its main purpose is to present a descriptive name for the source of
+each version of each package. It also is used to detect when new versions
+of debian are released. It augments the package file it is associated with
+by providing meta information about the entire archive which the Packages
+file describes.
+</para>
+<para>
+The full name of the distribution for presentation to the user is formed as
+'label version archive', with a possible extended name being 'label version
+archive component'.
+</para>
+<para>
+The file is formed as the package file (RFC-822) with the following tags
+defined:
+</para>
+<variablelist>
+<varlistentry>
+<term>Archive</term>
+<listitem>
+<para>
+This is the common name we give our archives, such as
+<emphasis>stable</emphasis> or <emphasis>unstable</emphasis>.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Component</term>
+<listitem>
+<para>
+Refers to the sub-component of the archive, <emphasis>main</emphasis>,
+<emphasis>contrib</emphasis> etc. Component may be omitted if there are no
+components for this archive.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Version</term>
+<listitem>
+<para>
+This is a version string with the same properties as in the Packages file. It
+represents the release level of the archive.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Origin</term>
+<listitem>
+<para>
+This specifies who is providing this archive. In the case of Debian the string
+will read 'Debian'. Other providers may use their own string
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Label</term>
+<listitem>
+<para>
+This carries the encompassing name of the distribution. For Debian proper this
+field reads 'Debian'. For derived distributions it should contain their proper
+name.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Architecture</term>
+<listitem>
+<para>
+When the archive has packages for a single architecture then the Architecture
+is listed here. If a mixed set of systems are represented then this should
+contain the keyword <emphasis>mixed</emphasis>.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>NotAutomatic</term>
+<listitem>
+<para>
+A Yes/No flag indicating that the archive is extremely unstable and its
+version's should never be automatically selected. This is to be used by
+experimental.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Description</term>
+<listitem>
+<para>
+Description is used to describe the release. For instance experimental would
+contain a warning that the packages have problems.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+<para>
+The location of the Release file in the archive is very important, it must be
+located in the same location as the packages file so that it can be located in
+all situations. The following is an example for the current stable release,
+1.3.1r6
+</para>
+<screen>
+Archive: stable
+Component: main
+Version: 1.3.1r6
+Origin: Debian
+Label: Debian
+Architecture: i386
+</screen>
+<para>
+This is an example of experimental,
+</para>
+<screen>
+Archive: experimental
+Version: 0
+Origin: Debian
+Label: Debian
+Architecture: mixed
+NotAutomatic: Yes
+</screen>
+<para>
+And unstable,
+</para>
+<screen>
+Archive: unstable
+Component: main
+Version: 2.1
+Origin: Debian
+Label: Debian
+Architecture: i386
+</screen>
+</section>
+
+</chapter>
+
+
+</book>
diff --git a/doc/guide.dbk b/doc/guide.dbk
new file mode 100644
index 000000000..dbc4f5431
--- /dev/null
+++ b/doc/guide.dbk
@@ -0,0 +1,561 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<book lang="en">
+
+<title>APT User's Guide</title>
+
+<bookinfo>
+
+<authorgroup>
+ <author>
+ <personname>Jason Gunthorpe</personname><email>jgg@debian.org</email>
+ </author>
+</authorgroup>
+
+<releaseinfo>Version &apt-product-version;</releaseinfo>
+
+<abstract>
+<para>
+This document provides an overview of how to use the APT package manager.
+</para>
+</abstract>
+
+<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>
+
+<legalnotice>
+<title>License Notice</title>
+<para>
+"APT" and this document are free software; you can redistribute them and/or
+modify them under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+</para>
+</legalnotice>
+
+<legalnotice>
+<para>
+For more details, on Debian systems, see the file
+/usr/share/common-licenses/GPL for the full license.
+</para>
+</legalnotice>
+
+</bookinfo>
+
+<chapter id="ch1"><title>General</title>
+<para>
+The APT package currently contains two sections, the APT
+<command>dselect</command> method and the <command>apt-get</command> command
+line user interface. Both provide a way to install and remove packages as well
+as download new packages from the Internet.
+</para>
+
+<section id="s1.1"><title>Anatomy of the Package System</title>
+<para>
+The Debian packaging system has a large amount of information associated with
+each package to help assure that it integrates cleanly and easily into the
+system. The most prominent of its features is the dependency system.
+</para>
+<para>
+The dependency system allows individual programs to make use of shared elements
+in the system such as libraries. It simplifies placing infrequently used
+portions of a program in separate packages to reduce the number of things the
+average user is required to install. Also, it allows for choices in mail
+transport agents, X servers and so on.
+</para>
+<para>
+The first step to understanding the dependency system is to grasp the concept
+of a simple dependency. The meaning of a simple dependency is that a package
+requires another package to be installed at the same time to work properly.
+</para>
+<para>
+For instance, mailcrypt is an emacs extension that aids in encrypting email
+with GPG. Without GPGP installed mailcrypt is useless, so mailcrypt has a
+simple dependency on GPG. Also, because it is an emacs extension it has a
+simple dependency on emacs, without emacs it is completely useless.
+</para>
+<para>
+The other important dependency to understand is a conflicting dependency. It
+means that a package, when installed with another package, will not work and
+may possibly be extremely harmful to the system. As an example consider a mail
+transport agent such as sendmail, exim or qmail. It is not possible to have
+two mail transport agents installed because both need to listen to the network
+to receive mail. Attempting to install two will seriously damage the system so
+all mail transport agents have a conflicting dependency with all other mail
+transport agents.
+</para>
+<para>
+As an added complication there is the possibility for a package to pretend to
+be another package. Consider that exim and sendmail for many intents are
+identical, they both deliver mail and understand a common interface. Hence,
+the package system has a way for them to declare that they are both
+mail-transport-agents. So, exim and sendmail both declare that they provide a
+mail-transport-agent and other packages that need a mail transport agent depend
+on mail-transport-agent. This can add a great deal of confusion when trying to
+manually fix packages.
+</para>
+<para>
+At any given time a single dependency may be met by packages that are already
+installed or it may not be. APT attempts to help resolve dependency issues by
+providing a number of automatic algorithms that help in selecting packages for
+installation.
+</para>
+</section>
+
+</chapter>
+
+<chapter id="ch2"><title>apt-get</title>
+<para>
+<command>apt-get</command> provides a simple way to install packages from the
+command line. Unlike <command>dpkg</command>, <command>apt-get</command> does
+not understand .deb files, it works with the package's proper name and can only
+install .deb archives from a <emphasis>Source</emphasis>.
+</para>
+<para>
+The first <footnote><para> If you are using an http proxy server you must set
+the http_proxy environment variable first, see sources.list(5) </para>
+</footnote> thing that should be done before using <command>apt-get</command>
+is to fetch the package lists from the <emphasis>Sources</emphasis> so that it
+knows what packages are available. This is done with <literal>apt-get
+update</literal>. For instance,
+</para>
+<screen>
+# apt-get update
+Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages
+Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages
+Reading Package Lists... Done
+Building Dependency Tree... Done
+</screen>
+<para>
+Once updated there are several commands that can be used:
+</para>
+<variablelist>
+<varlistentry>
+<term>upgrade</term>
+<listitem>
+<para>
+Upgrade will attempt to gently upgrade the whole system. Upgrade will never
+install a new package or remove an existing package, nor will it ever upgrade a
+package that might cause some other package to break. This can be used daily
+to relatively safely upgrade the system. Upgrade will list all of the packages
+that it could not upgrade, this usually means that they depend on new packages
+or conflict with some other package. <command>dselect</command> or
+<literal>apt-get install</literal> can be used to force these packages to
+install.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>install</term>
+<listitem>
+<para>
+Install is used to install packages by name. The package is automatically
+fetched and installed. This can be useful if you already know the name of the
+package to install and do not want to go into a GUI to select it. Any number
+of packages may be passed to install, they will all be fetched. Install
+automatically attempts to resolve dependency problems with the listed packages
+and will print a summary and ask for confirmation if anything other than its
+arguments are changed.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>dist-upgrade</term>
+<listitem>
+<para>
+Dist-upgrade is a complete upgrader designed to simplify upgrading between
+releases of Debian. It uses a sophisticated algorithm to determine the best
+set of packages to install, upgrade and remove to get as much of the system to
+the newest release. In some situations it may be desired to use dist-upgrade
+rather than spend the time manually resolving dependencies in
+<command>dselect</command>. Once dist-upgrade has completed then
+<command>dselect</command> can be used to install any packages that may have
+been left out.
+</para>
+<para>
+It is important to closely look at what dist-upgrade is going to do, its
+decisions may sometimes be quite surprising.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+<para>
+<command>apt-get</command> has several command line options that are detailed
+in its man page,
+<citerefentry><refentrytitle>apt-get</refentrytitle><manvolnum>8</manvolnum></citerefentry>. The
+most useful option is <literal>-d</literal> which does not install the
+fetched files. If the system has to download a large number of package it
+would be undesired to start installing them in case something goes wrong. When
+<literal>-d</literal> is used the downloaded archives can be installed by
+simply running the command that caused them to be downloaded again without
+<literal>-d</literal>.
+</para>
+</chapter>
+
+<chapter id="ch3"><title>DSelect</title>
+<para>
+The APT <command>dselect</command> method provides the complete
+APT system with the <command>dselect</command> package selection
+GUI. <command>dselect</command> is used to select the packages to be
+installed or removed and APT actually installs them.
+</para>
+<para>
+To enable the APT method you need to select [A]ccess in
+<command>dselect</command> and then choose the APT method. You will be
+prompted for a set of <emphasis>Sources</emphasis> which are places to fetch
+archives from. These can be remote Internet sites, local Debian mirrors or
+CD-ROMs. Each source can provide a fragment of the total Debian archive, APT
+will automatically combine them to form a complete set of packages. If you
+have a CD-ROM then it is a good idea to specify it first and then specify a
+mirror so that you have access to the latest bug fixes. APT will automatically
+use packages on your CD-ROM before downloading from the Internet.
+</para>
+<screen>
+ Set up a list of distribution source locations
+
+ Please give the base URL of the debian distribution.
+ The access schemes I know about are: http file
+
+ For example:
+ file:/mnt/debian,
+ ftp://ftp.debian.org/debian,
+ http://ftp.de.debian.org/debian,
+
+
+ URL [http://llug.sep.bnl.gov/debian]:
+</screen>
+<para>
+The <emphasis>Sources</emphasis> setup starts by asking for the base of the
+Debian archive, defaulting to a HTTP mirror. Next it asks for the distribution
+to get.
+</para>
+<screen>
+ Please give the distribution tag to get or a path to the
+ package file ending in a /. The distribution
+ tags are typically something like: stable unstable testing non-US
+
+ Distribution [stable]:
+</screen>
+<para>
+The distribution refers to the Debian version in the archive,
+<emphasis>stable</emphasis> refers to the latest released version
+and <emphasis>unstable</emphasis> refers to the developmental
+version. <emphasis>non-US</emphasis> is only available on some mirrors
+and refers to packages that contain encryption technology or other
+things that cannot be exported from the United States. Importing these
+packages into the US is legal however.
+</para>
+<screen>
+ Please give the components to get
+ The components are typically something like: main contrib non-free
+
+ Components [main contrib non-free]:
+</screen>
+<para>
+The components list refers to the list of sub distributions to fetch. The
+distribution is split up based on software licenses, main being DFSG free
+packages while contrib and non-free contain things that have various
+restrictions placed on their use and distribution.
+</para>
+<para>
+Any number of sources can be added, the setup script will continue to prompt
+until you have specified all that you want.
+</para>
+<para>
+Before starting to use <command>dselect</command> it is necessary to update
+the available list by selecting [U]pdate from the menu. This is a superset of
+<literal>apt-get update</literal> that makes the fetched information available
+to <command>dselect</command>. [U]pdate must be performed even if
+<literal>apt-get update</literal> has been run before.
+</para>
+<para>
+You can then go on and make your selections using [S]elect and then perform
+the installation using [I]nstall. When using the APT method the [C]onfig and
+[R]emove commands have no meaning, the [I]nstall command performs both of
+them together.
+</para>
+<para>
+By default APT will automatically remove the package (.deb) files once they
+have been successfully installed. To change this behavior place
+<literal>Dselect::clean "prompt";</literal> in /etc/apt/apt.conf.
+</para>
+</chapter>
+
+<chapter id="ch4"><title>The Interface</title>
+<para>
+Both that APT <command>dselect</command> method and <command>apt-get</command>
+share the same interface. It is a simple system that generally tells you what
+it will do and then goes and does it. <footnote><para> The
+<command>dselect</command> method actually is a set of wrapper scripts to
+<command>apt-get</command>. The method actually provides more functionality
+than is present in <command>apt-get</command> alone. </para> </footnote> After
+printing out a summary of what will happen APT then will print out some
+informative status messages so that you can estimate how far along it is and
+how much is left to do.
+</para>
+
+<section id="s4.1"><title>Startup</title>
+<para>
+Before all operations except update, APT performs a number of actions
+to prepare its internal state. It also does some checks of the system's
+state. At any time these operations can be performed by running
+<literal>apt-get check</literal>.
+</para>
+<screen>
+# apt-get check
+Reading Package Lists... Done
+Building Dependency Tree... Done
+</screen>
+<para>
+The first thing it does is read all the package files into memory. APT uses a
+caching scheme so this operation will be faster the second time it is run. If
+some of the package files are not found then they will be ignored and a
+warning will be printed when apt-get exits.
+</para>
+<para>
+The final operation performs a detailed analysis of the system's
+dependencies. It checks every dependency of every installed or unpacked
+package and considers if it is OK. Should this find a problem then a report
+will be printed out and <command>apt-get</command> will refuse to run.
+</para>
+<screen>
+# apt-get check
+Reading Package Lists... Done
+Building Dependency Tree... Done
+You might want to run 'apt --fix-broken install' to correct these.
+Sorry, but the following packages have unmet dependencies:
+ 9fonts: Depends: xlib6g but it is not installed
+ uucp: Depends: mailx but it is not installed
+ blast: Depends: xlib6g (&gt;= 3.3-5) but it is not installed
+ adduser: Depends: perl-base but it is not installed
+ aumix: Depends: libgpmg1 but it is not installed
+ debiandoc-sgml: Depends: sgml-base but it is not installed
+ bash-builtins: Depends: bash (&gt;= 2.01) but 2.0-3 is installed
+ cthugha: Depends: svgalibg1 but it is not installed
+ Depends: xlib6g (&gt;= 3.3-5) but it is not installed
+ libreadlineg2: Conflicts:libreadline2 (&lt;&lt; 2.1-2.1)
+</screen>
+<para>
+In this example the system has many problems, including a serious problem with
+libreadlineg2. For each package that has unmet dependencies a line is printed
+out indicating the package with the problem and the dependencies that are
+unmet. A short explanation of why the package has a dependency problem is also
+included.
+</para>
+<para>
+There are two ways a system can get into a broken state like this. The
+first is caused by <command>dpkg</command> missing some subtle relationships
+between packages when performing upgrades. <footnote><para> APT however
+considers all known dependencies and attempts to prevent broken
+packages </para> </footnote>. The second is if a package installation
+fails during an operation. In this situation a package may have been
+unpacked without its dependents being installed.
+</para>
+<para>
+The second situation is much less serious than the first because APT places
+certain constraints on the order that packages are installed. In both cases
+supplying the <literal>-f</literal> option to <command>apt-get</command>
+will cause APT to deduce a possible solution to the problem and then
+continue on. The APT <command>dselect</command> method always supplies
+the <literal>-f</literal> option to allow for easy continuation of failed
+maintainer scripts.
+</para>
+<para>
+However, if the <literal>-f</literal> option is used to correct a seriously
+broken system caused by the first case then it is possible that it will either
+fail immediately or the installation sequence will fail. In either case it is
+necessary to manually use dpkg (possibly with forcing options) to correct the
+situation enough to allow APT to proceed.
+</para>
+</section>
+
+<section id="s4.2"><title>The Status Report</title>
+<para>
+Before proceeding <command>apt-get</command> will present a report on what will
+happen. Generally the report reflects the type of operation being performed
+but there are several common elements. In all cases the lists reflect the
+final state of things, taking into account the <literal>-f</literal> option
+and any other relevant activities to the command being executed.
+</para>
+
+<section id="s4.2.1"><title>The Extra Package list</title>
+<screen>
+The following extra packages will be installed:
+ libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl
+ mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base
+ bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy
+ squake pgp-i python-base debmake ldso perl libreadlineg2
+ ssh
+</screen>
+<para>
+The Extra Package list shows all of the packages that will be installed or
+upgraded in excess of the ones mentioned on the command line. It is only
+generated for an <literal>install</literal> command. The listed packages are
+often the result of an Auto Install.
+</para>
+</section>
+
+<section id="s4.2.2"><title>The Packages to Remove</title>
+<screen>
+The following packages will be REMOVED:
+ xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix
+ xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel
+ xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid
+ nas xpilot xfig
+</screen>
+<para>
+The Packages to Remove list shows all of the packages that will be removed
+from the system. It can be shown for any of the operations and should be given
+a careful inspection to ensure nothing important is to be taken off. The
+<literal>-f</literal> option is especially good at generating packages to
+remove so extreme care should be used in that case. The list may contain
+packages that are going to be removed because they are only partially
+installed, possibly due to an aborted installation.
+</para>
+</section>
+
+<section id="s4.2.3"><title>The New Packages list</title>
+<screen>
+The following NEW packages will installed:
+ zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base
+</screen>
+<para>
+The New Packages list is simply a reminder of what will happen. The packages
+listed are not presently installed in the system but will be when APT is done.
+</para>
+</section>
+
+<section id="s4.2.4"><title>The Kept Back list</title>
+<screen>
+The following packages have been kept back
+ compface man-db tetex-base msql libpaper svgalib1
+ gs snmp arena lynx xpat2 groff xscreensaver
+</screen>
+<para>
+Whenever the whole system is being upgraded there is the possibility that new
+versions of packages cannot be installed because they require new things or
+conflict with already installed things. In this case the package will appear
+in the Kept Back list. The best way to convince packages listed there to
+install is with <literal>apt-get install</literal> or by using
+<command>dselect</command> to resolve their problems.
+</para>
+</section>
+
+<section id="s4.2.5"><title>Held Packages warning</title>
+<screen>
+The following held packages will be changed:
+ cvs
+</screen>
+<para>
+Sometimes you can ask APT to install a package that is on hold, in such a case
+it prints out a warning that the held package is going to be changed. This
+should only happen during dist-upgrade or install.
+</para>
+</section>
+
+<section id="s4.2.6"><title>Final summary</title>
+<para>
+Finally, APT will print out a summary of all the changes that will occur.
+</para>
+<screen>
+206 packages upgraded, 8 newly installed, 23 to remove and 51 not upgraded.
+12 packages not fully installed or removed.
+Need to get 65.7M/66.7M of archives. After unpacking 26.5M will be used.
+</screen>
+<para>
+The first line of the summary simply is a reduced version of all of the lists
+and includes the number of upgrades - that is packages already installed that
+have new versions available. The second line indicates the number of poorly
+configured packages, possibly the result of an aborted installation. The final
+line shows the space requirements that the installation needs. The first pair
+of numbers refer to the size of the archive files. The first number indicates
+the number of bytes that must be fetched from remote locations and the second
+indicates the total size of all the archives required. The next number
+indicates the size difference between the presently installed packages and the
+newly installed packages. It is roughly equivalent to the space required in
+/usr after everything is done. If a large number of packages are being removed
+then the value may indicate the amount of space that will be freed.
+</para>
+<para>
+Some other reports can be generated by using the -u option to show packages to
+upgrade, they are similar to the previous examples.
+</para>
+</section>
+
+</section>
+
+<section id="s4.3"><title>The Status Display</title>
+<para>
+During the download of archives and package files APT prints out a series of
+status messages.
+</para>
+<screen>
+# apt-get update
+Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages
+Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages
+Hit http://llug.sep.bnl.gov/debian/ testing/main Packages
+Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages
+Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages
+11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s
+</screen>
+<para>
+The lines starting with <emphasis>Get</emphasis> are printed out when APT
+begins to fetch a file while the last line indicates the progress of the
+download. The first percent value on the progress line indicates the total
+percent done of all files. Unfortunately since the size of the Package files
+is unknown <literal>apt-get update</literal> estimates the percent done which
+causes some inaccuracies.
+</para>
+<para>
+The next section of the status line is repeated once for each download
+thread and indicates the operation being performed and some useful
+information about what is happening. Sometimes this section will simply
+read <emphasis>Forking</emphasis> which means the OS is loading the download
+module. The first word after the [ is the fetch number as shown on the
+history lines. The next word is the short form name of the object being
+downloaded. For archives it will contain the name of the package that is
+being fetched.
+</para>
+<para>
+Inside of the single quote is an informative string indicating the progress of
+the negotiation phase of the download. Typically it progresses from
+<emphasis>Connecting</emphasis> to <emphasis>Waiting for file</emphasis> to
+<emphasis>Downloading</emphasis> or <emphasis>Resuming</emphasis>. The final
+value is the number of bytes downloaded from the remote site. Once the
+download begins this is represented as <literal>102/10.2k</literal> indicating
+that 102 bytes have been fetched and 10.2 kilobytes is expected. The total
+size is always shown in 4 figure notation to preserve space. After the size
+display is a percent meter for the file itself. The second last element is the
+instantaneous average speed. This values is updated every 5 seconds and
+reflects the rate of data transfer for that period. Finally is shown the
+estimated transfer time. This is updated regularly and reflects the time to
+complete everything at the shown transfer rate.
+</para>
+<para>
+The status display updates every half second to provide a constant feedback on
+the download progress while the Get lines scroll back whenever a new file is
+started. Since the status display is constantly updated it is unsuitable for
+logging to a file, use the <literal>-q</literal> option to remove the status
+display.
+</para>
+</section>
+
+<section id="s4.4"><title>Dpkg</title>
+<para>
+APT uses <command>dpkg</command> for installing the archives and will
+switch over to the <command>dpkg</command> interface once downloading is
+completed. <command>dpkg</command> will also ask a number of questions as
+it processes the packages and the packages themselves may also ask several
+questions. Before each question there is usually a description of what it
+is asking and the questions are too varied to discuss completely here.
+</para>
+</section>
+
+</chapter>
+
+</book>
diff --git a/doc/libapt-pkg2_to_3.txt b/doc/libapt-pkg2_to_3.txt
new file mode 100644
index 000000000..2806f4081
--- /dev/null
+++ b/doc/libapt-pkg2_to_3.txt
@@ -0,0 +1,90 @@
+libapt-pkg v2 to v3 incorporates several source-incompatible changes
+that people need to be aware of.. Many of this changes are done so that
+most old source will continue to function, but perhaps at reduced
+functionality.
+
+* pkgDepCache is no longer self initializing, you have to call the Init
+ method separately after constructing it. Users of pkgCacheFile do not
+ need to worry about this
+* GetCandidateVer/etc is gone from the pkgCache. It exists only in the
+ DepCache and is just an inline around the new Policy class
+* TargetVer/TargetDist have been eliminated. Nothing should have been using
+ these.
+* There is a policy class. The v0 policy engine which has been used since
+ APT 0.0.0 is instantiated by the DepCache by default. However pkgCacheFile
+ constructs and initializes the new v4 engine. People accessing GetCandidate
+ version outside of a CacheFile/DepCache will need to instantiate and
+ initialize a policy engine on their own.
+* All byte counters are now doubles to advoid 4G wraparound. The compiler
+ should generate warnings on any incorrect use of these.
+* The PriorityType/CompType/DepType functions have been moved out of the
+ iterators and into generate static functions of pkgCache - inline stubs
+ are left in the iterators.
+* The deb dependency element parser has been made into a static function
+ of the list parser and enhanced to optionally understand architecture
+ restrictions.
+* TagSections no longer include the trailing \n. This means that the
+ Offset/Length of a package record in the version structure also does not
+ include the trailing \n.
+* GenCaches::SelectFile accepts a site parameter now too.
+* Global version compare functions are gone. If you
+ #define APT_COMPATIBILITY 1
+ They will come back as they were before. Code should be updated to
+ reference the compare functions to the VersioningSystem (VS) referenced
+ by the Cache or _system structures.
+* Initialization is now two stage (define APT_COMPATIBILITY..) The first
+ stage, pkgInitConfig is called before commandline parsing, and
+ pkgInitSystem is called after. This gives the user the oppertunity to
+ override default settings from the config files before startup has been
+ finalized.
+* pkgSourceList has been gutted. All the junk that was in there before is
+ cleaned up and put in the pkgIndexFile class. There is very little API
+ corrispondence here..
+* pkgMakeStatusCacheMem is gone, pkgMakeStatusCache does the same thing if
+ you set the AllowMem flag. Also, you can get a copy of the map used to
+ store the cache to advoid having to remap it in the calling code. A bunch
+ of other cache related functions are gone, but nobody should have been using
+ them in the first place!
+* Downloading the 'Package' and 'Source' index files is different, use
+ the GetIndexes call in SourceList.
+* SourceRecords::Parser::Source is gone, replaced with Index which does
+ much the same thing.
+* DynamicMap has changed slightly, nobody should care
+* pkgMakeOnlyStatusCache exists, which creates a really small cache that
+ only contains the status file, and in memory.
+* The pkgRecords stuff is changed to abstract through the index file list
+ (should be transparent largely)
+* Locking is handled differently, there is no dpkg lock class, the _system
+ class provides Lock/UnLock methods
+* pkgDepCache is not a subclass of pkgCache, it aggregates it now. Some
+ compatibility functions are provided that make this transition fairly
+ easy.
+* The following functions have had minor argument changes:
+ - pkgSimulate(pkgDepCache &Cache);
+ + pkgSimulate(pkgDepCache *Cache);
+
+ - pkgProblemResolver(pkgDepCache &Cache);
+ + pkgProblemResolver(pkgDepCache *Cache);
+
+ - pkgDepCache(MMap &Map,Policy *Plcy = 0);
+ + pkgDepCache(pkgCache *Cache,Policy *Plcy = 0);
+
+ - pkgOrderList(pkgDepCache &Cache);
+ + pkgOrderList(pkgDepCache *Cache);
+
+ - pkgPackageManager(pkgDepCache &Cache);
+ + pkgPackageManager(pkgDepCache *Cache);
+
+ - pkgCache(MMap &Map,bool DoMap = true);
+ + pkgCache(MMap *Map,bool DoMap = true);
+
+ - pkgCacheGenerator(DynamicMMap &Map,OpProgress &Progress);
+ + pkgCacheGenerator(DynamicMMap *Map,OpProgress *Progress);
+
+ - pkgTagFile(FileFd &F,unsigned long Size = 32*1024);
+ + pkgTagFile(FileFd *F,unsigned long Size = 32*1024);
+
+* Configuration class is const-correct
+* The legacy ability to create a PkgFileIterator that started at Begin
+ is gone, everyone should be using FileBegin().
+* A new dependency relation called obsoletes that is similar to conflicts.
diff --git a/doc/manpage-style.xsl.cmake.in b/doc/manpage-style.xsl.cmake.in
new file mode 100644
index 000000000..53d6780cb
--- /dev/null
+++ b/doc/manpage-style.xsl.cmake.in
@@ -0,0 +1,18 @@
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:import href="@DOCBOOK_XSL@/manpages/docbook.xsl" />
+
+<xsl:param name="man.output.encoding" select="'UTF-8'" />
+
+<xsl:template match="email">&lt;<xsl:apply-templates/>&gt;</xsl:template>
+
+<xsl:template match="date">
+ <xsl:call-template name="datetime.format">
+ <xsl:with-param name="date" select="."/>
+ <xsl:with-param name="format" select="'d B Y'"/>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/method.dbk b/doc/method.dbk
new file mode 100644
index 000000000..e5e035a2b
--- /dev/null
+++ b/doc/method.dbk
@@ -0,0 +1,713 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<book lang="en">
+
+<title>APT Method Interface</title>
+
+<bookinfo>
+
+<authorgroup>
+ <author>
+ <personname>Jason Gunthorpe</personname><email>jgg@debian.org</email>
+ </author>
+</authorgroup>
+
+<releaseinfo>Version &apt-product-version;</releaseinfo>
+
+<abstract>
+<para>
+This document describes the interface that APT uses to the archive access
+methods.
+</para>
+</abstract>
+
+<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>
+
+<legalnotice>
+<title>License Notice</title>
+<para>
+"APT" and this document are free software; you can redistribute them and/or
+modify them under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+</para>
+<para>
+For more details, on Debian systems, see the file
+/usr/share/common-licenses/GPL for the full license.
+</para>
+</legalnotice>
+
+</bookinfo>
+
+<chapter id="ch1"><title>Introduction</title>
+
+<section id="s1.1"><title>General</title>
+<para>
+The APT method interface allows APT to acquire archive files (.deb), index
+files (Packages, Release, Mirrors) and source files (.tar.gz, .diff). It is a
+general, extensible system designed to satisfy all of these requirements:
+</para>
+<orderedlist numeration="arabic">
+<listitem>
+<para>
+Remote methods that download files from a distant site
+</para>
+</listitem>
+<listitem>
+<para>
+Resume of aborted downloads
+</para>
+</listitem>
+<listitem>
+<para>
+Progress reporting
+</para>
+</listitem>
+<listitem>
+<para>
+If-Modified-Since (IMS) checking for index files
+</para>
+</listitem>
+<listitem>
+<para>
+In-Line MD5 generation
+</para>
+</listitem>
+<listitem>
+<para>
+No-copy in-filesystem methods
+</para>
+</listitem>
+<listitem>
+<para>
+Multi-media methods (like CD's)
+</para>
+</listitem>
+<listitem>
+<para>
+Dynamic source selection for failure recovery
+</para>
+</listitem>
+<listitem>
+<para>
+User interaction for user/password requests and media swaps
+</para>
+</listitem>
+<listitem>
+<para>
+Global configuration
+</para>
+</listitem>
+</orderedlist>
+<para>
+Initial releases of APT (0.1.x) used a completely different method interface
+that only supported the first 6 items. This new interface deals with the
+remainder.
+</para>
+</section>
+
+<section id="s1.2"><title>Terms</title>
+<para>
+Several terms are used through out the document, they have specific meanings
+which may not be immediately evident. To clarify they are summarized here.
+</para>
+<variablelist>
+<varlistentry>
+<term>source</term>
+<listitem>
+<para>
+Refers to an item in source list. More specifically it is the broken down
+item, that is each source maps to exactly one index file. Archive sources map
+to Package files and Source Code sources map to Source files.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>archive file</term>
+<listitem>
+<para>
+Refers to a binary package archive (.deb, .rpm, etc).
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>source file</term>
+<listitem>
+<para>
+Refers to one of the files making up the source code of a package. In debian
+it is one of .diff.gz, .dsc. or .tar.gz.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>URI</term>
+<listitem>
+<para>
+Universal Resource Identifier (URI) is a super-set of the familiar URL
+syntax used by web browsers. It consists of an access specification
+followed by a specific location in that access space. The form is
+&lt;access&gt;:&lt;location&gt;. Network addresses are given with the form
+&lt;access&gt;://[&lt;user&gt;[:&lt;pas&gt;]@]hostname[:port]/&lt;location&gt;.
+Some examples:
+</para>
+<screen>
+file:/var/mirrors/debian/
+ftp://ftp.debian.org/debian
+ftp://jgg:MooCow@localhost:21/debian
+nfs://bigred/var/mirrors/debian
+rsync://debian.midco.net/debian
+cdrom:Debian 2.0r1 Disk 1/
+</screen>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>method</term>
+<listitem>
+<para>
+There is a one to one mapping of URI access specifiers to methods. A method is
+a program that knows how to handle a URI access type and operates according to
+the specifications in this file.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>method instance</term>
+<listitem>
+<para>
+A specific running method. There can be more than one instance of each method
+as APT is capable of concurrent method handling.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>message</term>
+<listitem>
+<para>
+A series of lines terminated by a blank line sent down one of the communication
+lines. The first line should have the form xxx TAG where xxx are digits
+forming the status code and TAG is an informational string
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>acquire</term>
+<listitem>
+<para>
+The act of bring a URI into the local pathname space. This may simply be
+verifying the existence of the URI or actually downloading it from a remote
+site.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</section>
+
+</chapter>
+
+<chapter id="ch2"><title>Specification</title>
+
+<section id="s2.1"><title>Overview</title>
+<para>
+All methods operate as a sub process of a main controlling parent. 3 FD's are
+opened for use by the method allowing two way communication and emergency error
+reporting. The FD's correspond to the well known unix FD's, stdin, stdout and
+stderr.
+</para>
+<para>
+Through operation of the method communication is done via http style plain
+text. Specifically RFC-822 (like the Package file) fields are used to describe
+items and a numeric-like header is used to indicate what is happening. Each of
+these distinct communication messages should be sent quickly and without pause.
+</para>
+<para>
+In some instances APT may pre-invoke a method to allow things like file URI's
+to determine how many files are available locally.
+</para>
+</section>
+
+<section id="s2.2"><title>Message Overview</title>
+<para>
+The first line of each message is called the message header. The first 3
+digits (called the Status Code) have the usual meaning found in the http
+protocol. 1xx is informational, 2xx is successful and 4xx is failure. The 6xx
+series is used to specify things sent to the method. After the status code is
+an informational string provided for visual debugging.
+</para>
+<itemizedlist>
+<listitem>
+<para>
+100 Capabilities - Method capabilities
+</para>
+</listitem>
+<listitem>
+<para>
+101 Log - General Logging
+</para>
+</listitem>
+<listitem>
+<para>
+102 Status - Inter-URI status reporting (login progress)
+</para>
+</listitem>
+<listitem>
+<para>
+200 URI Start - URI is starting acquire
+</para>
+</listitem>
+<listitem>
+<para>
+201 URI Done - URI is finished acquire
+</para>
+</listitem>
+<listitem>
+<para>
+400 URI Failure - URI has failed to acquire
+</para>
+</listitem>
+<listitem>
+<para>
+401 General Failure - Method did not like something sent to it
+</para>
+</listitem>
+<listitem>
+<para>
+402 Authorization Required - Method requires authorization to access the URI.
+Authorization is User/Pass
+</para>
+</listitem>
+<listitem>
+<para>
+403 Media Failure - Method requires a media change
+</para>
+</listitem>
+<listitem>
+<para>
+600 URI Acquire - Request a URI be acquired
+</para>
+</listitem>
+<listitem>
+<para>
+601 Configuration - Sends the configuration space
+</para>
+</listitem>
+<listitem>
+<para>
+602 Authorization Credentials - Response to the 402 message
+</para>
+</listitem>
+<listitem>
+<para>
+603 Media Changed - Response to the 403 message
+</para>
+</listitem>
+</itemizedlist>
+<para>
+Only the 6xx series of status codes is sent TO the method. Furthermore the
+method may not emit status codes in the 6xx range. The Codes 402 and 403
+require that the method continue reading all other 6xx codes until the proper
+602/603 code is received. This means the method must be capable of handling an
+unlimited number of 600 messages.
+</para>
+<para>
+The flow of messages starts with the method sending out a <emphasis>100
+Capabilities</emphasis> and APT sending out a <emphasis>601
+Configuration</emphasis>. After that APT begins sending <emphasis>600 URI
+Acquire</emphasis> and the method sends out <emphasis>200 URI Start</emphasis>,
+<emphasis>201 URI Done</emphasis> or <emphasis>400 URI Failure</emphasis>. No
+synchronization is performed, it is expected that APT will send <emphasis>600
+URI Acquire</emphasis> messages at -any- time and that the method should queue
+the messages. This allows methods like http to pipeline requests to the remote
+server. It should be noted however that APT will buffer messages so it is not
+necessary for the method to be constantly ready to receive them.
+</para>
+</section>
+
+<section id="s2.3"><title>Header Fields</title>
+<para>
+The following is a short index of the header fields that are supported
+</para>
+<variablelist>
+<varlistentry>
+<term>URI</term>
+<listitem>
+<para>
+URI being described by the message
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Filename</term>
+<listitem>
+<para>
+Location in the filesystem
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Last-Modified</term>
+<listitem>
+<para>
+A time stamp in RFC1123 notation for use by IMS checks
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>IMS-Hit</term>
+<listitem>
+<para>
+The already existing item is valid
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Size</term>
+<listitem>
+<para>
+Size of the file in bytes
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Resume-Point</term>
+<listitem>
+<para>
+Location that transfer was started
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>MD5-Hash</term>
+<listitem>
+<para>
+Computed MD5 hash for the file
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Message</term>
+<listitem>
+<para>
+String indicating some displayable message
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Media</term>
+<listitem>
+<para>
+String indicating the media name required
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Site</term>
+<listitem>
+<para>
+String indicating the site authorization is required for
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>User</term>
+<listitem>
+<para>
+Username for authorization
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Password</term>
+<listitem>
+<para>
+Password for authorization
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Fail</term>
+<listitem>
+<para>
+Operation failed
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Drive</term>
+<listitem>
+<para>
+Drive the media should be placed in
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Config-Item</term>
+<listitem>
+<para>
+A string of the form
+<replaceable>item</replaceable>=<replaceable>value</replaceable> derived from
+the APT configuration space. These may include method specific values and
+general values not related to the method. It is up to the method to filter out
+the ones it wants.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Single-Instance</term>
+<listitem>
+<para>
+Requires that only one instance of the method be run This is a yes/no value.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Pipeline</term>
+<listitem>
+<para>
+The method is capable of pipelining.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Local</term>
+<listitem>
+<para>
+The method only returns Filename: fields.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Send-Config</term>
+<listitem>
+<para>
+Send configuration to the method.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Needs-Cleanup</term>
+<listitem>
+<para>
+The process is kept around while the files it returned are being used. This is
+primarily intended for CD-ROM and File URIs that need to unmount filesystems.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>Version</term>
+<listitem>
+<para>
+Version string for the method
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+<para>
+This is a list of which headers each status code can use
+</para>
+<variablelist>
+<varlistentry>
+<term>100 Capabilities</term>
+<listitem>
+<para>
+Displays the capabilities of the method. Methods should set the pipeline bit
+if their underlying protocol supports pipelining. The only known method that
+does support pipelining is http. Fields: Version, Single-Instance, Pre-Scan,
+Pipeline, Send-Config, Needs-Cleanup
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>101 Log</term>
+<listitem>
+<para>
+A log message may be printed to the screen if debugging is enabled. This is
+only for debugging the method. Fields: Message
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>102 Status</term>
+<listitem>
+<para>
+Message gives a progress indication for the method. It can be used to show
+pre-transfer status for Internet type methods. Fields: Message
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>200 URI Start</term>
+<listitem>
+<para>
+Indicates the URI is starting to be transferred. The URI is specified along
+with stats about the file itself. Fields: URI, Size, Last-Modified,
+Resume-Point
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>201 URI Done</term>
+<listitem>
+<para>
+Indicates that a URI has completed being transferred. It is possible to
+specify a <emphasis>201 URI Done</emphasis> without a <emphasis>URI
+Start</emphasis> which would mean no data was transferred but the file is now
+available. A Filename field is specified when the URI is directly available in
+the local pathname space. APT will either directly use that file or copy it
+into another location. It is possible to return Alt-* fields to indicate that
+another possibility for the URI has been found in the local pathname space.
+This is done if a decompressed version of a .gz file is found. Fields: URI,
+Size, Last-Modified, Filename, MD5-Hash
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>400 URI Failure</term>
+<listitem>
+<para>
+Indicates a fatal URI failure. The URI is not retrievable from this source. As
+with <emphasis>201 URI Done</emphasis> <emphasis>200 URI Start</emphasis> is
+not required to precede this message Fields: URI, Message
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>401 General Failure</term>
+<listitem>
+<para>
+Indicates that some unspecific failure has occurred and the method is unable
+to continue. The method should terminate after sending this message. It
+is intended to check for invalid configuration options or other severe
+conditions. Fields: Message
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>402 Authorization Required</term>
+<listitem>
+<para>
+The method requires a Username and Password pair to continue. After sending
+this message the method will expect APT to send a <emphasis>602 Authorization
+Credentials</emphasis> message with the required information. It is possible
+for a method to send this multiple times. Fields: Site
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>403 Media Failure</term>
+<listitem>
+<para>
+A method that deals with multiple media requires that a new media be
+inserted. The Media field contains the name of the media to be
+inserted. Fields: Media, Drive
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>600 URI Acquire</term>
+<listitem>
+<para>
+APT is requesting that a new URI be added to the acquire list. Last-Modified
+has the time stamp of the currently cache file if applicable. Filename is the
+name of the file that the acquired URI should be written to. Fields: URI,
+Filename Last-Modified
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>601 Configuration</term>
+<listitem>
+<para>
+APT is sending the configuration space to the method. A series of Config-Item
+fields will be part of this message, each containing an entry from the
+configuration space. Fields: Config-Item.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>602 Authorization Credentials</term>
+<listitem>
+<para>
+This is sent in response to a <emphasis>402 Authorization Required</emphasis>
+message. It contains the entered username and password. Fields: Site, User,
+Password
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>603 Media Changed</term>
+<listitem>
+<para>
+This is sent in response to a <emphasis>403 Media Failure</emphasis>
+message. It indicates that the user has changed media and it is safe
+to proceed. Fields: Media, Fail
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</section>
+
+<section id="s2.4"><title>Notes</title>
+<para>
+The methods supplied by the stock apt are:
+</para>
+<orderedlist numeration="arabic">
+<listitem>
+<para>
+cdrom - For Multi-Disc CD-ROMs
+</para>
+</listitem>
+<listitem>
+<para>
+copy - (internal) For copying files around the filesystem
+</para>
+</listitem>
+<listitem>
+<para>
+file - For local files
+</para>
+</listitem>
+<listitem>
+<para>
+gzip - (internal) For decompression
+</para>
+</listitem>
+<listitem>
+<para>
+http - For HTTP servers
+</para>
+</listitem>
+</orderedlist>
+<para>
+The two internal methods, copy and gzip, are used by the acquire code to
+parallelize and simplify the automatic decompression of package files as well as
+copying package files around the file system. Both methods can be seen to act
+the same except that one decompresses on the fly. APT uses them by generating
+a copy URI that is formed identically to a file URI. The destination file is
+send as normal. The method then takes the file specified by the URI and writes
+it to the destination file. A typical set of operations may be:
+</para>
+<screen>
+http://foo.com/Packages.gz -&gt; /bar/Packages.gz
+gzip:/bar/Packages.gz -&gt; /bar/Packages.decomp
+rename Packages.decomp to /final/Packages
+</screen>
+<para>
+The http method implements a fully featured HTTP/1.1 client that supports
+deep pipelining and reget. It works best when coupled with an apache 1.3
+server. The file method simply generates failures or success responses
+with the filename field set to the proper location. The cdrom method acts
+the same except that it checks that the mount point has a valid cdrom in
+it. It does this by (effectively) computing a md5 hash of 'ls -l' on the
+mountpoint.
+</para>
+</section>
+
+</chapter>
+
+</book>
diff --git a/doc/offline.dbk b/doc/offline.dbk
new file mode 100644
index 000000000..2ad1d98d8
--- /dev/null
+++ b/doc/offline.dbk
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<book lang="en">
+
+<title>Using APT Offline</title>
+
+<bookinfo>
+
+<authorgroup>
+ <author>
+ <personname>Jason Gunthorpe</personname><email>jgg@debian.org</email>
+ </author>
+</authorgroup>
+
+<releaseinfo>Version &apt-product-version;</releaseinfo>
+
+<abstract>
+<para>
+This document describes how to use APT in a non-networked environment,
+specifically a 'sneaker-net' approach for performing upgrades.
+</para>
+</abstract>
+
+<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright>
+
+<legalnotice>
+<title>License Notice</title>
+<para>
+"APT" and this document are free software; you can redistribute them and/or
+modify them under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+</para>
+<para>
+For more details, on Debian systems, see the file
+/usr/share/common-licenses/GPL for the full license.
+</para>
+</legalnotice>
+
+</bookinfo>
+
+<chapter id="ch1"><title>Introduction</title>
+
+<section id="s1.1"><title>Overview</title>
+<para>
+Normally APT requires direct access to a Debian archive, either from a local
+media or through a network. Another common complaint is that a Debian machine
+is on a slow link, such as a modem and another machine has a very fast
+connection but they are physically distant.
+</para>
+<para>
+The solution to this is to use large removable media such as a Zip disc or a
+SuperDisk disc. These discs are not large enough to store the entire Debian
+archive but can easily fit a subset large enough for most users. The idea is
+to use APT to generate a list of packages that are required and then fetch them
+onto the disc using another machine with good connectivity. It is even
+possible to use another Debian machine with APT or to use a completely
+different OS and a download tool like wget. Let <emphasis>remote
+host</emphasis> mean the machine downloading the packages, and <emphasis>target
+host</emphasis> the one with bad or no connection.
+</para>
+<para>
+This is achieved by creatively manipulating the APT configuration file. The
+essential premise to tell APT to look on a disc for it's archive files. Note
+that the disc should be formatted with a filesystem that can handle long file
+names such as ext2, fat32 or vfat.
+</para>
+</section>
+
+</chapter>
+
+<chapter id="ch2"><title>Using APT on both machines</title>
+
+<section id="s2.1"><title>Overview</title>
+<para>
+APT being available on both machines gives the simplest configuration. The
+basic idea is to place a copy of the status file on the disc and use the remote
+machine to fetch the latest package files and decide which packages to
+download. The disk directory structure should look like:
+</para>
+<screen>
+ /disc/
+ archives/
+ partial/
+ lists/
+ partial/
+ status
+ sources.list
+ apt.conf
+</screen>
+</section>
+
+<section id="s2.2"><title>The configuration file</title>
+<para>
+The configuration file should tell APT to store its files on the disc and to
+use the configuration files on the disc as well. The sources.list should
+contain the proper sites that you wish to use from the remote machine, and the
+status file should be a copy of <emphasis>/var/lib/dpkg/status</emphasis> from
+the <emphasis>target host</emphasis>. Please note, if you are using a local
+archive you must use copy URIs, the syntax is identical to file URIs.
+</para>
+<para>
+<emphasis>apt.conf</emphasis> must contain the necessary information to make
+APT use the disc:
+</para>
+<screen>
+ APT
+ {
+ /* This is not necessary if the two machines are the same arch, it tells
+ the remote APT what architecture the target machine is */
+ Architecture "i386";
+
+ Get::Download-Only "true";
+ };
+
+ Dir
+ {
+ /* Use the disc for state information and redirect the status file from
+ the /var/lib/dpkg default */
+ State "/disc/";
+ State::status "status";
+
+ // Binary caches will be stored locally
+ Cache::archives "/disc/archives/";
+ Cache "/tmp/";
+
+ // Location of the source list.
+ Etc "/disc/";
+ };
+</screen>
+<para>
+More details can be seen by examining the apt.conf man page and the sample
+configuration file in
+<emphasis>/usr/share/doc/apt/examples/apt.conf</emphasis>.
+</para>
+<para>
+On the target machine the first thing to do is mount the disc and copy
+<emphasis>/var/lib/dpkg/status</emphasis> to it. You will also need
+to create the directories outlined in the Overview,
+<emphasis>archives/partial/</emphasis> and
+<emphasis>lists/partial/</emphasis>. Then take the disc to the
+remote machine and configure the sources.list. On the remote
+machine execute the following:
+</para>
+<screen>
+ # export APT_CONFIG="/disc/apt.conf"
+ # apt-get update
+ [ APT fetches the package files ]
+ # apt-get dist-upgrade
+ [ APT fetches all the packages needed to upgrade the target machine ]
+</screen>
+<para>
+The dist-upgrade command can be replaced with any other standard APT commands,
+particularly dselect-upgrade. You can even use an APT front end such as
+<emphasis>dselect</emphasis>. However this presents a problem in communicating
+your selections back to the local computer.
+</para>
+<para>
+Now the disc contains all of the index files and archives needed to upgrade the
+target machine. Take the disc back and run:
+</para>
+<screen>
+ # export APT_CONFIG="/disc/apt.conf"
+ # apt-get check
+ [ APT generates a local copy of the cache files ]
+ # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade
+ [ Or any other APT command ]
+</screen>
+<para>
+It is necessary for proper function to re-specify the status file to be the
+local one. This is very important!
+</para>
+<para>
+If you are using dselect you can do the very risky operation of copying
+disc/status to /var/lib/dpkg/status so that any selections you made on the
+remote machine are updated. I highly recommend that people only make
+selections on the local machine - but this may not always be possible. DO NOT
+copy the status file if dpkg or APT have been run in the mean time!!
+</para>
+</section>
+
+</chapter>
+
+<chapter id="ch3"><title>Using APT and wget</title>
+
+<section id="s3.1"><title>Overview</title>
+<para>
+<emphasis>wget</emphasis> is a popular and portable download tool that can run
+on nearly any machine. Unlike the method above this requires that the Debian
+machine already has a list of available packages.
+</para>
+<para>
+The basic idea is to create a disc that has only the archive files downloaded
+from the remote site. This is done by using the --print-uris option to apt-get
+and then preparing a wget script to actually fetch the packages.
+</para>
+</section>
+
+<section id="s3.2"><title>Operation</title>
+<para>
+Unlike the previous technique no special configuration files are required. We
+merely use the standard APT commands to generate the file list.
+</para>
+<screen>
+ # apt-get dist-upgrade
+ [ Press no when prompted, make sure you are happy with the actions ]
+ # apt-get -qq --print-uris dist-upgrade &gt; uris
+ # awk '{print "wget -O " $2 " " $1}' &lt; uris &gt; /disc/wget-script
+</screen>
+<para>
+Any command other than dist-upgrade could be used here, including
+dselect-upgrade.
+</para>
+<para>
+The /disc/wget-script file will now contain a list of wget commands to execute
+in order to fetch the necessary archives. This script should be run with the
+current directory as the disc's mount point so as to save the output on the
+disc.
+</para>
+<para>
+The remote machine would do something like
+</para>
+<screen>
+ # cd /disc
+ # sh -x ./wget-script
+ [ wait.. ]
+</screen>
+<para>
+Once the archives are downloaded and the disc returned to the Debian machine
+installation can proceed using,
+</para>
+<screen>
+ # apt-get -o dir::cache::archives="/disc/" dist-upgrade
+</screen>
+<para>
+Which will use the already fetched archives on the disc.
+</para>
+</section>
+
+</chapter>
+
+</book>
diff --git a/doc/po/apt-doc.pot b/doc/po/apt-doc.pot
new file mode 100644
index 000000000..e5d9cf9de
--- /dev/null
+++ b/doc/po/apt-doc.pot
@@ -0,0 +1,7894 @@
+# Translation of apt manpages and documentation to LANGUAGE
+# This file is distributed under the same license as the apt-doc package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: apt-doc 1.4.6\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-06-01 10:51+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+"<!ENTITY apt-author.team \"\n"
+" <author>\n"
+" <othername>APT team</othername>\n"
+" <contrib></contrib>\n"
+" </author>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+"<!ENTITY apt-qapage \"\n"
+"\t<para>\n"
+"\t\t<ulink url='http://packages.qa.debian.org/a/apt.html'>QA Page</ulink>\n"
+"\t</para>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+"<!-- Boiler plate Bug reporting section -->\n"
+"<!ENTITY manbugs \"\n"
+" <refsect1><title>Bugs</title>\n"
+" <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+" If you wish to report a bug in APT, please see\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
+" &reportbug; command.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+"<!-- Boiler plate Author section -->\n"
+"<!ENTITY manauthor \"\n"
+" <refsect1><title>Author</title>\n"
+" <para>APT was written by the APT team "
+"<email>apt@packages.debian.org</email>.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-commonoptions \"\n"
+" <varlistentry><term><option>-h</option></term>\n"
+" <term><option>--help</option></term>\n"
+" <listitem><para>Show a short usage summary.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-v</option></term>\n"
+" <term><option>--version</option></term>\n"
+" <listitem><para>Show the program version.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-c</option></term>\n"
+" <term><option>--config-file</option></term>\n"
+" <listitem><para>Configuration File; Specify a configuration file to "
+"use. \n"
+" The program will read the default configuration file and then this \n"
+" configuration file. If configuration settings need to be set before "
+"the\n"
+" default configuration files are parsed specify a file with the "
+"<envar>APT_CONFIG</envar>\n"
+" environment variable. See &apt-conf; for syntax information.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-o</option></term>\n"
+" <term><option>--option</option></term>\n"
+" <listitem><para>Set a Configuration Option; This will set an "
+"arbitrary\n"
+" configuration option. The syntax is <option>-o "
+"Foo::Bar=bar</option>.\n"
+" <option>-o</option> and <option>--option</option> can be used "
+"multiple\n"
+" times to set different options.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-cmdblurb \"\n"
+" <para>All command line options may be set using the configuration file, "
+"the\n"
+" descriptions indicate the configuration option to set. For boolean\n"
+" options you can override the config file by using something like \n"
+" <option>-f-</option>,<option>--no-f</option>, <option>-f=no</option>\n"
+" or several other variations.\n"
+" </para>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+"<!ENTITY file-aptconf \"\n"
+" <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>\n"
+" <listitem><para>APT configuration file.\n"
+" Configuration Item: "
+"<literal>Dir::Etc::Main</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
+" <listitem><para>APT configuration file fragments.\n"
+" Configuration Item: "
+"<literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+"<!ENTITY file-cachearchives \"\n"
+" <varlistentry><term><filename>&cachedir;/archives/</filename></term>\n"
+" <listitem><para>Storage area for retrieved package files.\n"
+" Configuration Item: "
+"<literal>Dir::Cache::Archives</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+" "
+"<varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>\n"
+" <listitem><para>Storage area for package files in transit.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal> "
+"(<filename>partial</filename> will be implicitly "
+"appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+"<!ENTITY file-preferences \"\n"
+" <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
+" <listitem><para>Version preferences file.\n"
+" This is where you would specify &quot;pinning&quot;,\n"
+" i.e. a preference to get certain packages\n"
+" from a separate source\n"
+" or from a different version of a distribution.\n"
+" Configuration Item: "
+"<literal>Dir::Etc::Preferences</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+" "
+"<varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>\n"
+" <listitem><para>File fragments for the version preferences.\n"
+" Configuration Item: "
+"<literal>Dir::Etc::PreferencesParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+"<!ENTITY file-sourceslist \"\n"
+" <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+" <listitem><para>Locations to fetch packages from.\n"
+" Configuration Item: "
+"<literal>Dir::Etc::SourceList</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+" "
+"<varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
+" <listitem><para>File fragments for locations to fetch packages from.\n"
+" Configuration Item: "
+"<literal>Dir::Etc::SourceParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+"<!ENTITY file-statelists \"\n"
+" <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
+" <listitem><para>Storage area for state information for each package "
+"resource specified in\n"
+" &sources-list;\n"
+" Configuration Item: "
+"<literal>Dir::State::Lists</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+" "
+"<varlistentry><term><filename>&statedir;/lists/partial/</filename></term>\n"
+" <listitem><para>Storage area for state information in transit.\n"
+" Configuration Item: <literal>Dir::State::Lists</literal> "
+"(<filename>partial</filename> will be implicitly "
+"appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+"<!ENTITY file-trustedgpg \"\n"
+" <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
+" <listitem><para>Keyring of local trusted keys, new keys will be added "
+"here.\n"
+" Configuration Item: "
+"<literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+" "
+"<varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
+" <listitem><para>File fragments for the trusted keys, additional "
+"keyrings can\n"
+" be stored here (by other packages or the administrator).\n"
+" Configuration Item "
+"<literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+"<!ENTITY file-extended_states \"\n"
+" "
+"<varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>\n"
+" <listitem><para>Status list of auto-installed packages.\n"
+" Configuration Item: <literal>Dir::State::extended_states</literal>.\n"
+" </para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is the section header for the following paragraphs - "
+"comparable\n"
+" to the other headers like NAME and DESCRIPTION and should therefore be "
+"uppercase. -->\n"
+"<!ENTITY translation-title \"TRANSLATION\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is a placeholder. You should write here who has "
+"contributed\n"
+" to the translation in the past, who is responsible now and maybe "
+"further information\n"
+" specially related to your translation. -->\n"
+"<!ENTITY translation-holder \"\n"
+" The english translation was done by John Doe "
+"<email>john@doe.org</email> in 2009,\n"
+" 2010 and Daniela Acme <email>daniela@acme.us</email> in 2010 together "
+"with the\n"
+" Debian Dummy l10n Team "
+"<email>debian-l10n-dummy@lists.debian.org</email>.\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: As a translation is allowed to have 20% of "
+"untranslated/fuzzy strings\n"
+" in a shipped manpage newer/modified paragraphs will maybe appear in "
+"english in\n"
+" the generated manpage. This sentence is therefore here to tell the "
+"reader that this\n"
+" is not a mistake by the translator - obviously the target is that at "
+"least for stable\n"
+" releases this sentence is not needed. :) -->\n"
+"<!ENTITY translation-english \"\n"
+" Note that this translated document may contain untranslated parts.\n"
+" This is done on purpose, to avoid losing content when the\n"
+" translation is lagging behind the original content.\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+msgid ""
+"<!-- TRANSLATOR: used as in -o=config_string "
+"e.g. -o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string "
+"\"config_string\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+msgid ""
+"<!-- TRANSLATOR: used as in -c=config_file e.g. -c=./apt.conf --> <!ENTITY "
+"synopsis-config-file \"config_file\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+msgid ""
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release "
+"e.g. -t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"\"target_release\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+msgid ""
+"<!-- TRANSLATOR: used as in -a=architecture e.g. -a=armel --> <!ENTITY "
+"synopsis-architecture \"architecture\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+msgid ""
+"<!-- TRANSLATOR: used as in apt-get install pkg e.g. apt-get install awesome "
+"--> <!ENTITY synopsis-pkg \"pkg\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+msgid ""
+"<!-- TRANSLATOR: used as in pkg=pkg_version_number e.g. apt=0.8.15 --> "
+"<!ENTITY synopsis-pkg-ver-number \"pkg_version_number\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache pkgnames prefix e.g. apt-cache "
+"pkgnames apt --> <!ENTITY synopsis-prefix \"prefix\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache search regex e.g. apt-cache search "
+"awesome --> <!ENTITY synopsis-regex \"regex\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom "
+"-d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates -t=temporary_directory "
+"e.g. apt-extracttemplates -t=/tmp --> <!ENTITY synopsis-tmp-directory "
+"\"temporary_directory\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates filename --> <!ENTITY "
+"synopsis-filename \"filename\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-path \"path\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-override "
+"\"override-file\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-pathprefix "
+"\"pathprefix\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"generate section --> <!ENTITY synopsis-section \"section\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent:1
+msgid ""
+"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
+msgstr ""
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.8.xml:1 apt-get.8.xml:1 apt-cache.8.xml:1 apt-key.8.xml:1
+#: apt-mark.8.xml:1 apt-secure.8.xml:1 apt-cdrom.8.xml:1 apt-config.8.xml:1
+msgid "8"
+msgstr ""
+
+#. type: Content of: <refentry><refmeta><refmiscinfo>
+#: apt.8.xml:1 apt-get.8.xml:1 apt-cache.8.xml:1 apt-key.8.xml:1
+#: apt-mark.8.xml:1 apt-secure.8.xml:1 apt-cdrom.8.xml:1 apt-config.8.xml:1
+#: apt.conf.5.xml:1 apt_preferences.5.xml:1 sources.list.5.xml:1
+#: apt-extracttemplates.1.xml:1 apt-sortpkgs.1.xml:1 apt-ftparchive.1.xml:1
+msgid "APT"
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.8.xml:1
+msgid "command-line interface"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml:1 apt-get.8.xml:1 apt-cache.8.xml:1 apt-key.8.xml:1
+#: apt-mark.8.xml:1 apt-secure.8.xml:1 apt-cdrom.8.xml:1 apt-config.8.xml:1
+#: apt.conf.5.xml:1 apt_preferences.5.xml:1 sources.list.5.xml:1
+#: apt-extracttemplates.1.xml:1 apt-sortpkgs.1.xml:1 apt-ftparchive.1.xml:1
+msgid "Description"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml:1
+msgid ""
+"<command>apt</command> provides a high-level commandline interface for the "
+"package management system. It is intended as an end user interface and "
+"enables some options better suited for interactive usage by default compared "
+"to more specialized APT tools like &apt-get; and &apt-cache;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml:1
+msgid ""
+"Much like <command>apt</command> itself, its manpage is intended as an end "
+"user interface and as such only mentions the most used commands and options "
+"partly to not duplicate information in multiple places and partly to avoid "
+"overwhelming readers with a cornucopia of options and details."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml:1 apt.8.xml:1 apt.8.xml:1 apt.8.xml:1 apt.8.xml:1
+msgid "(&apt-get;)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml:1
+msgid ""
+"<option>update</option> is used to download package information from all "
+"configured sources. Other commands operate on this data to e.g. perform "
+"package upgrades or search in and display details about all packages "
+"available for installation."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml:1
+msgid ""
+"<option>upgrade</option> is used to install available upgrades of all "
+"packages currently installed on the system from the sources configured via "
+"&sources-list;. New packages will be installed if required to satisfy "
+"dependencies, but existing packages will never be removed. If an upgrade for "
+"a package requires the remove of an installed package the upgrade for this "
+"package isn't performed."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml:1
+msgid ""
+"<literal>full-upgrade</literal> performs the function of upgrade but will "
+"remove currently installed packages if this is needed to upgrade the system "
+"as a whole."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml:1 apt.8.xml:1 apt-key.8.xml:1
+msgid ","
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml:1
+msgid ""
+"Performs the requested action on one or more packages specified via &regex;, "
+"&glob; or exact match. The requested action can be overridden for specific "
+"packages by append a plus (+) to the package name to install this package or "
+"a minus (-) to remove it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml:1
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals (=) and the version of the package "
+"to select. Alternatively the version from a specific release can be selected "
+"by following the package name with a forward slash (/) and codename "
+"(&debian-stable-codename;, &debian-testing-codename;, sid …) or suite name "
+"(stable, testing, unstable). This will also select versions from this "
+"release for dependencies of this package if needed to satisfy the request."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml:1
+msgid ""
+"Removing a package removes all packaged data, but leaves usually small "
+"(modified) user configuration files behind, in case the remove was an "
+"accident. Just issuing an installation request for the accidentally removed "
+"package will restore its function as before in that case. On the other hand "
+"you can get rid of these leftovers by calling <command>purge</command> even "
+"on already removed packages. Note that this does not affect any data or "
+"configuration stored in your home directory."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml:1
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed as dependencies changed or the package(s) needing them "
+"were removed in the meantime."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml:1
+msgid ""
+"You should check that the list does not include applications you have grown "
+"to like even though they were once installed just as a dependency of another "
+"package. You can mark such a package as manually installed by using "
+"&apt-mark;. Packages which you have installed explicitly via "
+"<command>install</command> are also never proposed for automatic removal."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml:1 apt.8.xml:1
+msgid "(&apt-cache;)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml:1
+msgid ""
+"<option>search</option> can be used to search for the given &regex; term(s) "
+"in the list of available packages and display matches. This can e.g. be "
+"useful if you are looking for packages having a specific feature. If you "
+"are looking for a package including a specific file try &apt-file;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml:1
+msgid ""
+"Show information about the given package(s) including its dependencies, "
+"installation and download size, sources the package is available from, the "
+"description of the packages content and much more. It can e.g. be helpful to "
+"look at this information before allowing &apt; to remove a package or while "
+"searching for new packages to install."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml:1 apt.8.xml:1
+msgid "(work-in-progress)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml:1
+msgid ""
+"<option>list</option> is somewhat similar to <command>dpkg-query "
+"--list</command> in that it can display a list of packages satisfying "
+"certain criteria. It supports &glob; patterns for matching package names as "
+"well as options to list installed (<option>--installed</option>), "
+"upgradeable (<option>--upgradeable</option>) or all available "
+"(<option>--all-versions</option>) versions."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml:1
+msgid ""
+"<literal>edit-sources</literal> lets you edit your &sources-list; files in "
+"your preferred texteditor while also providing basic sanity checks."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml:1
+msgid "Script Usage and Differences from Other APT Tools"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml:1
+msgid ""
+"The &apt; commandline is designed as an end-user tool and it may change "
+"behavior between versions. While it tries not to break backward "
+"compatibility this is not guaranteed either if a change seems beneficial for "
+"interactive use."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml:1
+msgid ""
+"All features of &apt; are available in dedicated APT tools like &apt-get; "
+"and &apt-cache; as well. &apt; just changes the default value of some "
+"options (see &apt-conf; and specifically the Binary scope). So you should "
+"prefer using these commands (potentially with some additional options "
+"enabled) in your scripts as they keep backward compatibility as much as "
+"possible."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml:1 apt-get.8.xml:1 apt-cache.8.xml:1 apt-key.8.xml:1
+#: apt-mark.8.xml:1 apt-secure.8.xml:1 apt-cdrom.8.xml:1 apt-config.8.xml:1
+#: apt.conf.5.xml:1 apt_preferences.5.xml:1 sources.list.5.xml:1
+#: apt-extracttemplates.1.xml:1 apt-sortpkgs.1.xml:1 apt-ftparchive.1.xml:1
+msgid "See Also"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml:1
+msgid ""
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
+"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml:1 apt-get.8.xml:1 apt-cache.8.xml:1 apt-mark.8.xml:1
+#: apt-cdrom.8.xml:1 apt-config.8.xml:1 apt-extracttemplates.1.xml:1
+#: apt-sortpkgs.1.xml:1 apt-ftparchive.1.xml:1
+msgid "Diagnostics"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml:1
+msgid ""
+"<command>apt</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-get.8.xml:1
+msgid "APT package handling utility -- command-line interface"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml:1
+msgid ""
+"<command>apt-get</command> is the command-line tool for handling packages, "
+"and may be considered the user's \"back-end\" to other tools using the APT "
+"library. Several \"front-end\" interfaces exist, such as &aptitude;, "
+"&synaptic; and &wajig;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml:1 apt-cache.8.xml:1 apt-cdrom.8.xml:1 apt-config.8.xml:1
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Unless the <option>-h</option>, or <option>--help</option> option is given, "
+"one of the commands below must be present."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"<literal>update</literal> is used to resynchronize the package index files "
+"from their sources. The indexes of available packages are fetched from the "
+"location(s) specified in <filename>/etc/apt/sources.list</filename>. For "
+"example, when using a Debian archive, this command retrieves and scans the "
+"<filename>Packages.gz</filename> files, so that information about new and "
+"updated packages is available. An <literal>update</literal> should always be "
+"performed before an <literal>upgrade</literal> or "
+"<literal>dist-upgrade</literal>. Please be aware that the overall progress "
+"meter will be incorrect as the size of the package files cannot be known in "
+"advance."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"<literal>upgrade</literal> is used to install the newest versions of all "
+"packages currently installed on the system from the sources enumerated in "
+"<filename>/etc/apt/sources.list</filename>. Packages currently installed "
+"with new versions available are retrieved and upgraded; under no "
+"circumstances are currently installed packages removed, or packages not "
+"already installed retrieved and installed. New versions of currently "
+"installed packages that cannot be upgraded without changing the install "
+"status of another package will be left at their current version. An "
+"<literal>update</literal> must be performed first so that "
+"<command>apt-get</command> knows that new versions of packages are "
+"available."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"<literal>dist-upgrade</literal> in addition to performing the function of "
+"<literal>upgrade</literal>, also intelligently handles changing dependencies "
+"with new versions of packages; <command>apt-get</command> has a \"smart\" "
+"conflict resolution system, and it will attempt to upgrade the most "
+"important packages at the expense of less important ones if necessary. The "
+"<literal>dist-upgrade</literal> command may therefore remove some packages. "
+"The <filename>/etc/apt/sources.list</filename> file contains a list of "
+"locations from which to retrieve desired package files. See also "
+"&apt-preferences; for a mechanism for overriding the general settings for "
+"individual packages."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"<literal>dselect-upgrade</literal> is used in conjunction with the "
+"traditional Debian packaging front-end, "
+"&dselect;. <literal>dselect-upgrade</literal> follows the changes made by "
+"&dselect; to the <literal>Status</literal> field of available packages, and "
+"performs the actions necessary to realize that state (for instance, the "
+"removal of old and the installation of new packages)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"<literal>install</literal> is followed by one or more packages desired for "
+"installation or upgrading. Each package is a package name, not a fully "
+"qualified filename (for instance, in a Debian system, "
+"<package>apt-utils</package> would be the argument provided, not "
+"<filename>apt-utils_&apt-product-version;_amd64.deb</filename>). All "
+"packages required by the package(s) specified for installation will also be "
+"retrieved and installed. The <filename>/etc/apt/sources.list</filename> "
+"file is used to locate the desired packages. If a hyphen is appended to the "
+"package name (with no intervening space), the identified package will be "
+"removed if it is installed. Similarly a plus sign can be used to designate "
+"a package to install. These latter features may be used to override "
+"decisions made by apt-get's conflict resolution system."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals and the version of the package to "
+"select. This will cause that version to be located and selected for "
+"install. Alternatively a specific distribution can be selected by following "
+"the package name with a slash and the version of the distribution or the "
+"Archive name (stable, testing, unstable)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Both of the version selection mechanisms can downgrade packages and must be "
+"used with care."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"This is also the target to use if you want to upgrade one or more "
+"already-installed packages without upgrading every package you have on your "
+"system. Unlike the \"upgrade\" target, which installs the newest version of "
+"all currently installed packages, \"install\" will install the newest "
+"version of only the package(s) specified. Simply provide the name of the "
+"package(s) you wish to upgrade, and if a newer version is available, it (and "
+"its dependencies, as described above) will be downloaded and installed."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Finally, the &apt-preferences; mechanism allows you to create an alternative "
+"installation policy for individual packages."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"If no package matches the given expression and the expression contains one "
+"of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and "
+"it is applied to all package names in the database. Any matches are then "
+"installed (or removed). Note that matching is done by substring so 'lo.*' "
+"matches 'how-lo' and 'lowest'. If this is undesired, anchor the regular "
+"expression with a '^' or '$' character, or create a more specific regular "
+"expression."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"<literal>remove</literal> is identical to <literal>install</literal> except "
+"that packages are removed instead of installed. Note that removing a package "
+"leaves its configuration files on the system. If a plus sign is appended to "
+"the package name (with no intervening space), the identified package will be "
+"installed instead of removed."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"<literal>purge</literal> is identical to <literal>remove</literal> except "
+"that packages are removed and purged (any configuration files are deleted "
+"too)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"<literal>source</literal> causes <command>apt-get</command> to fetch source "
+"packages. APT will examine the available packages to decide which source "
+"package to fetch. It will then find and download into the current directory "
+"the newest available version of that source package while respecting the "
+"default release, set with the option "
+"<literal>APT::Default-Release</literal>, the <option>-t</option> option or "
+"per package with the <literal>pkg/release</literal> syntax, if possible."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Source packages are tracked separately from binary packages via "
+"<literal>deb-src</literal> lines in the &sources-list; file. This means that "
+"you will need to add such a line for each repository you want to get sources "
+"from; otherwise you will probably get either the wrong (too old/too new) "
+"source versions or none at all."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"If the <option>--compile</option> option is specified then the package will "
+"be compiled to a binary .deb using <command>dpkg-buildpackage</command> for "
+"the architecture as defined by the <command>--host-architecture</command> "
+"option. If <option>--download-only</option> is specified then the source "
+"package will not be unpacked."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"A specific source version can be retrieved by postfixing the source name "
+"with an equals and then the version to fetch, similar to the mechanism used "
+"for the package files. This enables exact matching of the source package "
+"name and version, implicitly enabling the "
+"<literal>APT::Get::Only-Source</literal> option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Note that source packages are not installed and tracked in the "
+"<command>dpkg</command> database like binary packages; they are simply "
+"downloaded to the current directory, like source tarballs."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"<literal>build-dep</literal> causes apt-get to install/remove packages in an "
+"attempt to satisfy the build dependencies for a source package. By default "
+"the dependencies are satisfied to build the package natively. If desired a "
+"host-architecture can be specified with the "
+"<option>--host-architecture</option> option instead."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"<literal>check</literal> is a diagnostic tool; it updates the package cache "
+"and checks for broken dependencies."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"<literal>download</literal> will download the given binary package into the "
+"current directory."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"<literal>clean</literal> clears out the local repository of retrieved "
+"package files. It removes everything but the lock file from "
+"<filename>&cachedir;/archives/</filename> and "
+"<filename>&cachedir;/archives/partial/</filename>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml:1 apt-get.8.xml:1
+msgid "(and the"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml:1 apt-get.8.xml:1
+msgid "alias since 1.1)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Like <literal>clean</literal>, <literal>autoclean</literal> clears out the "
+"local repository of retrieved package files. The difference is that it only "
+"removes package files that can no longer be downloaded, and are largely "
+"useless. This allows a cache to be maintained over a long period without it "
+"growing out of control. The configuration option "
+"<literal>APT::Clean-Installed</literal> will prevent installed packages from "
+"being erased if it is set to off."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"<literal>changelog</literal> tries to download the changelog of a package "
+"and displays it through <command>sensible-pager</command>. By default it "
+"displays the changelog for the version that is installed. However, you can "
+"specify the same options as for the <option>install</option> command."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Displays by default a deb822 formatted listing of information about all data "
+"files (aka index targets) <command>apt-get update</command> would "
+"download. Supports a <option>--format</option> option to modify the output "
+"format as well as accepts lines of the default output to filter the records "
+"by. The command is mainly used as an interface for external tools working "
+"with APT to get information as well as filenames for downloaded files so "
+"they can use them as well instead of downloading them again on their "
+"own. Detailed documentation is omitted here and can instead be found in the "
+"file &apt-acquire-additional-files; shipped by the "
+"<package>apt-doc</package> package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml:1 apt-cache.8.xml:1 apt-config.8.xml:1
+#: apt-extracttemplates.1.xml:1 apt-sortpkgs.1.xml:1 apt-ftparchive.1.xml:1
+msgid "options"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Do not consider recommended packages as a dependency for installing. "
+"Configuration Item: <literal>APT::Install-Recommends</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Consider suggested packages as a dependency for installing. Configuration "
+"Item: <literal>APT::Install-Suggests</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Download only; package files are only retrieved, not unpacked or installed. "
+"Configuration Item: <literal>APT::Get::Download-Only</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Fix; attempt to correct a system with broken dependencies in place. This "
+"option, when used with install/remove, can omit any packages to permit APT "
+"to deduce a likely solution. If packages are specified, these have to "
+"completely correct the problem. The option is sometimes necessary when "
+"running APT for the first time; APT itself does not allow broken package "
+"dependencies to exist on a system. It is possible that a system's dependency "
+"structure can be so corrupt as to require manual intervention (which usually "
+"means using <command>dpkg --remove</command> to eliminate some of the "
+"offending packages). Use of this option together with <option>-m</option> "
+"may produce an error in some situations. Configuration Item: "
+"<literal>APT::Get::Fix-Broken</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Ignore missing packages; if packages cannot be retrieved or fail the "
+"integrity check after retrieval (corrupted package files), hold back those "
+"packages and handle the result. Use of this option together with "
+"<option>-f</option> may produce an error in some situations. If a package is "
+"selected for installation (particularly if it is mentioned on the command "
+"line) and it could not be downloaded then it will be silently held back. "
+"Configuration Item: <literal>APT::Get::Fix-Missing</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Disables downloading of packages. This is best used with "
+"<option>--ignore-missing</option> to force APT to use only the .debs it has "
+"already downloaded. Configuration Item: "
+"<literal>APT::Get::Download</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Note that quiet level 2 implies <option>-y</option>; you should never "
+"use -qq without a no-action modifier such as -d, --print-uris or -s as APT "
+"may decide to do something you did not expect. Configuration Item: "
+"<literal>quiet</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"No action; perform a simulation of events that would occur based on the "
+"current system state but do not actually change the system. Locking will be "
+"disabled (<option>Debug::NoLocking</option>) so the system state could "
+"change while <command>apt-get</command> is running. Simulations can also be "
+"executed by non-root users which might not have read access to all apt "
+"configuration distorting the simulation. A notice expressing this warning "
+"is also shown by default for non-root users "
+"(<option>APT::Get::Show-User-Simulation-Note</option>). Configuration Item: "
+"<literal>APT::Get::Simulate</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Simulated runs print out a series of lines, each representing a "
+"<command>dpkg</command> operation: configure (<literal>Conf</literal>), "
+"remove (<literal>Remv</literal>) or unpack "
+"(<literal>Inst</literal>). Square brackets indicate broken packages, and "
+"empty square brackets indicate breaks that are of no consequence (rare)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Automatic yes to prompts; assume \"yes\" as answer to all prompts and run "
+"non-interactively. If an undesirable situation, such as changing a held "
+"package, trying to install a unauthenticated package or removing an "
+"essential package occurs then <literal>apt-get</literal> will abort. "
+"Configuration Item: <literal>APT::Get::Assume-Yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Automatic \"no\" to all prompts. Configuration Item: "
+"<literal>APT::Get::Assume-No</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Do not show a list of all packages that are to be upgraded. Configuration "
+"Item: <literal>APT::Get::Show-Upgraded</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Show full versions for upgraded and installed packages. Configuration Item: "
+"<literal>APT::Get::Show-Versions</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"This option controls the architecture packages are built for by "
+"<command>apt-get source --compile</command> and how cross-builddependencies "
+"are satisfied. By default is it not set which means that the host "
+"architecture is the same as the build architecture (which is defined by "
+"<literal>APT::Architecture</literal>). Configuration Item: "
+"<literal>APT::Get::Host-Architecture</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"This option controls the activated build profiles for which a source package "
+"is built by <command>apt-get source --compile</command> and how build "
+"dependencies are satisfied. By default no build profile is active. More "
+"than one build profile can be activated at a time by concatenating them with "
+"a comma. Configuration Item: <literal>APT::Build-Profiles</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Compile source packages after downloading them. Configuration Item: "
+"<literal>APT::Get::Compile</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Ignore package holds; this causes <command>apt-get</command> to ignore a "
+"hold placed on a package. This may be useful in conjunction with "
+"<literal>dist-upgrade</literal> to override a large number of undesired "
+"holds. Configuration Item: <literal>APT::Ignore-Hold</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Allow installing new packages when used in conjunction with "
+"<literal>upgrade</literal>. This is useful if the update of a installed "
+"package requires new dependencies to be installed. Instead of holding the "
+"package back <literal>upgrade</literal> will upgrade the package and install "
+"the new dependencies. Note that <literal>upgrade</literal> with this option "
+"will never remove packages, only allow adding new ones. Configuration Item: "
+"<literal>APT::Get::Upgrade-Allow-New</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Do not upgrade packages; when used in conjunction with "
+"<literal>install</literal>, <literal>no-upgrade</literal> will prevent "
+"packages on the command line from being upgraded if they are already "
+"installed. Configuration Item: <literal>APT::Get::Upgrade</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Do not install new packages; when used in conjunction with "
+"<literal>install</literal>, <literal>only-upgrade</literal> will install "
+"upgrades for already installed packages only and ignore requests to install "
+"new packages. Configuration Item: "
+"<literal>APT::Get::Only-Upgrade</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"This is a dangerous option that will cause apt to continue without prompting "
+"if it is doing downgrades. It should not be used except in very special "
+"situations. Using it can potentially destroy your system! Configuration "
+"Item: <literal>APT::Get::allow-downgrades</literal>. Introduced in APT 1.1."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is removing essentials. It should not be used except "
+"in very special situations. Using it can potentially destroy your system! "
+"Configuration Item: "
+"<literal>APT::Get::allow-remove-essential</literal>. Introduced in APT 1.1."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is changing held packages. It should not be used "
+"except in very special situations. Using it can potentially destroy your "
+"system! Configuration Item: "
+"<literal>APT::Get::allow-change-held-packages</literal>. Introduced in APT "
+"1.1."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is doing something potentially harmful. It should "
+"not be used except in very special situations. Using "
+"<literal>force-yes</literal> can potentially destroy your system! "
+"Configuration Item: <literal>APT::Get::force-yes</literal>. This is "
+"deprecated and replaced by <option>--allow-downgrades</option>, "
+"<option>--allow-remove-essential</option>, "
+"<option>--allow-change-held-packages</option> in 1.1."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Instead of fetching the files to install their URIs are printed. Each URI "
+"will have the path, the destination file name, the size and the expected MD5 "
+"hash. Note that the file name to write to will not always match the file "
+"name on the remote site! This also works with the <literal>source</literal> "
+"and <literal>update</literal> commands. When used with the "
+"<literal>update</literal> command the MD5 and size are not included, and it "
+"is up to the user to decompress any compressed files. Configuration Item: "
+"<literal>APT::Get::Print-URIs</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Use purge instead of remove for anything that would be removed. An asterisk "
+"(\"*\") will be displayed next to packages which are scheduled to be "
+"purged. <option>remove --purge</option> is equivalent to the "
+"<option>purge</option> command. Configuration Item: "
+"<literal>APT::Get::Purge</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Re-install packages that are already installed and at the newest version. "
+"Configuration Item: <literal>APT::Get::ReInstall</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"This option is on by default; use <literal>--no-list-cleanup</literal> to "
+"turn it off. When it is on, <command>apt-get</command> will automatically "
+"manage the contents of <filename>&statedir;/lists</filename> to ensure that "
+"obsolete files are erased. The only reason to turn it off is if you "
+"frequently change your sources list. Configuration Item: "
+"<literal>APT::Get::List-Cleanup</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"This option controls the default input to the policy engine; it creates a "
+"default pin at priority 990 using the specified release string. This "
+"overrides the general settings in "
+"<filename>/etc/apt/preferences</filename>. Specifically pinned packages are "
+"not affected by the value of this option. In short, this option lets you "
+"have simple control over which distribution packages will be retrieved "
+"from. Some common examples might be <option>-t '2.1*'</option>, <option>-t "
+"unstable</option> or <option>-t sid</option>. Configuration Item: "
+"<literal>APT::Default-Release</literal>; see also the &apt-preferences; "
+"manual page."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Only perform operations that are 'trivial'. Logically this can be considered "
+"related to <option>--assume-yes</option>; where "
+"<option>--assume-yes</option> will answer yes to any prompt, "
+"<option>--trivial-only</option> will answer no. Configuration Item: "
+"<literal>APT::Get::Trivial-Only</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"If any packages are to be removed apt-get immediately aborts without "
+"prompting. Configuration Item: <literal>APT::Get::Remove</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"If the command is either <literal>install</literal> or "
+"<literal>remove</literal>, then this option acts like running the "
+"<literal>autoremove</literal> command, removing unused dependency "
+"packages. Configuration Item: <literal>APT::Get::AutomaticRemove</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Only has meaning for the <literal>source</literal> and "
+"<literal>build-dep</literal> commands. Indicates that the given source "
+"names are not to be mapped through the binary table. This means that if "
+"this option is specified, these commands will only accept source package "
+"names as arguments, rather than accepting binary package names and looking "
+"up the corresponding source package. Configuration Item: "
+"<literal>APT::Get::Only-Source</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Download only the diff, dsc, or tar file of a source archive. Configuration "
+"Item: <literal>APT::Get::Diff-Only</literal>, "
+"<literal>APT::Get::Dsc-Only</literal>, and "
+"<literal>APT::Get::Tar-Only</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Only process architecture-dependent build-dependencies. Configuration Item: "
+"<literal>APT::Get::Arch-Only</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Only process architecture-independent build-dependencies. Configuration "
+"Item: <literal>APT::Get::Indep-Only</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Ignore if packages can't be authenticated and don't prompt about it. This "
+"can be useful while working with local repositories, but is a huge security "
+"risk if data authenticity isn't ensured in another way by the user itself. "
+"The usage of the <option>Trusted</option> option for &sources-list; entries "
+"should usually be preferred over this global override. Configuration Item: "
+"<literal>APT::Get::AllowUnauthenticated</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Forbid the update command to acquire unverifiable data from configured "
+"sources. APT will fail at the update command for repositories without valid "
+"cryptographically signatures. See also &apt-secure; for details on the "
+"concept and the implications. Configuration Item: "
+"<literal>Acquire::AllowInsecureRepositories</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Show user friendly progress information in the terminal window when packages "
+"are installed, upgraded or removed. For a machine parsable version of this "
+"data see README.progress-reporting in the apt doc directory. Configuration "
+"Items: <literal>Dpkg::Progress</literal> and "
+"<literal>Dpkg::Progress-Fancy</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml:1
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. See <option>--with-source</option> description in "
+"&apt-cache; for further details."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml:1 apt-cache.8.xml:1 apt-key.8.xml:1 apt-mark.8.xml:1
+#: apt.conf.5.xml:1 apt_preferences.5.xml:1
+msgid "Files"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml:1
+msgid ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
+"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
+"APT Howto."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml:1
+msgid ""
+"<command>apt-get</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cache.8.xml:1
+msgid "query the APT cache"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<command>apt-cache</command> performs a variety of operations on APT's "
+"package cache. <command>apt-cache</command> does not manipulate the state of "
+"the system but does provide operations to search and generate interesting "
+"output from the package metadata. The metadata is acquired and updated via "
+"the 'update' command of e.g. <command>apt-get</command>, so that it can be "
+"outdated if the last update is too long ago, but in exchange "
+"<command>apt-cache</command> works independently of the availability of the "
+"configured sources (e.g. offline)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>gencaches</literal> creates APT's package cache. This is done "
+"implicitly by all commands needing this cache if it is missing or outdated."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml:1 apt-cache.8.xml:1 apt-cache.8.xml:1 apt-cache.8.xml:1
+#: apt-cache.8.xml:1 apt-cache.8.xml:1 apt-cache.8.xml:1 apt-cache.8.xml:1
+msgid "&synopsis-pkg;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>showpkg</literal> displays information about the packages listed on "
+"the command line. Remaining arguments are package names. The available "
+"versions and reverse dependencies of each package listed are listed, as well "
+"as forward dependencies for each version. Forward (normal) dependencies are "
+"those packages upon which the package in question depends; reverse "
+"dependencies are those packages that depend upon the package in "
+"question. Thus, forward dependencies must be satisfied for a package, but "
+"reverse dependencies need not be. For instance, <command>apt-cache showpkg "
+"libreadline2</command> would produce output similar to the following:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-cache.8.xml:1
+#, no-wrap
+msgid ""
+"Package: libreadline2\n"
+"Versions: 2.1-12(/var/state/apt/lists/foo_Packages),\n"
+"Reverse Depends: \n"
+" libreadlineg2,libreadline2\n"
+" libreadline2-altdev,libreadline2\n"
+"Dependencies:\n"
+"2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))\n"
+"Provides:\n"
+"2.1-12 - \n"
+"Reverse Provides: \n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"Thus it may be seen that libreadline2, version 2.1-12, depends on libc5 and "
+"ncurses3.0 which must be installed for libreadline2 to work. In turn, "
+"libreadlineg2 and libreadline2-altdev depend on libreadline2. If "
+"libreadline2 is installed, libc5 and ncurses3.0 (and ldso) must also be "
+"installed; libreadlineg2 and libreadline2-altdev do not have to be "
+"installed. For the specific meaning of the remainder of the output it is "
+"best to consult the apt source code."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>stats</literal> displays some statistics about the cache. No "
+"further arguments are expected. Statistics reported are:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>Total package names</literal> is the number of package names found "
+"in the cache."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>Normal packages</literal> is the number of regular, ordinary "
+"package names; these are packages that bear a one-to-one correspondence "
+"between their names and the names used by other packages for them in "
+"dependencies. The majority of packages fall into this category."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>Pure virtual packages</literal> is the number of packages that "
+"exist only as a virtual package name; that is, packages only \"provide\" the "
+"virtual package name, and no package actually uses the name. For instance, "
+"\"mail-transport-agent\" in the Debian system is a pure virtual package; "
+"several packages provide \"mail-transport-agent\", but there is no package "
+"named \"mail-transport-agent\"."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>Single virtual packages</literal> is the number of packages with "
+"only one package providing a particular virtual package. For example, in the "
+"Debian system, \"X11-text-viewer\" is a virtual package, but only one "
+"package, xless, provides \"X11-text-viewer\"."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>Mixed virtual packages</literal> is the number of packages that "
+"either provide a particular virtual package or have the virtual package name "
+"as the package name. For instance, in the Debian system, \"debconf\" is both "
+"an actual package, and provided by the debconf-tiny package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>Missing</literal> is the number of package names that were "
+"referenced in a dependency but were not provided by any package. Missing "
+"packages may be an evidence if a full distribution is not accessed, or if a "
+"package (real or virtual) has been dropped from the distribution. Usually "
+"they are referenced from Conflicts or Breaks statements."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>Total distinct</literal> versions is the number of package versions "
+"found in the cache. If more than one distribution is being accessed (for "
+"instance, \"stable\" and \"unstable\"), this value can be considerably "
+"larger than the number of total package names."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>Total dependencies</literal> is the number of dependency "
+"relationships claimed by all of the packages in the cache."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>showsrc</literal> displays all the source package records that "
+"match the given package names. All versions are shown, as well as all "
+"records that declare the name to be a binary package. Use "
+"<option>--only-source</option> to display only source package names."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>dump</literal> shows a short listing of every package in the "
+"cache. It is primarily for debugging."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>dumpavail</literal> prints out an available list to stdout. This is "
+"suitable for use with &dpkg; and is used by the &dselect; method."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>unmet</literal> displays a summary of all unmet dependencies in the "
+"package cache."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>show</literal> performs a function similar to <command>dpkg "
+"--print-avail</command>; it displays the package records for the named "
+"packages."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml:1
+msgid "&synopsis-regex;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>search</literal> performs a full text search on all available "
+"package lists for the POSIX regex pattern given, see &regex;. It searches "
+"the package names and the descriptions for an occurrence of the regular "
+"expression and prints out the package name and the short description, "
+"including virtual package names. If <option>--full</option> is given then "
+"output identical to <literal>show</literal> is produced for each matched "
+"package, and if <option>--names-only</option> is given then the long "
+"description is not searched, only the package name and provided packages "
+"are."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"Separate arguments can be used to specify multiple search patterns that are "
+"and'ed together."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>depends</literal> shows a listing of each dependency a package has "
+"and all the possible other packages that can fulfill that dependency."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>rdepends</literal> shows a listing of each reverse dependency a "
+"package has."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml:1
+msgid "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"This command prints the name of each package APT knows. The optional "
+"argument is a prefix match to filter the name list. The output is suitable "
+"for use in a shell tab complete function and the output is generated "
+"extremely quickly. This command is best used with the "
+"<option>--generate</option> option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"Note that a package which APT knows of is not necessarily available to "
+"download, installable or installed, e.g. virtual packages are also listed in "
+"the generated list."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>dotty</literal> takes a list of packages on the command line and "
+"generates output suitable for use by dotty from the <ulink "
+"url=\"http://www.research.att.com/sw/tools/graphviz/\">GraphViz</ulink> "
+"package. The result will be a set of nodes and edges representing the "
+"relationships between the packages. By default the given packages will trace "
+"out all dependent packages; this can produce a very large graph. To limit "
+"the output to only the packages listed on the command line, set the "
+"<literal>APT::Cache::GivenOnly</literal> option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"The resulting nodes will have several shapes; normal packages are boxes, "
+"pure virtual packages are triangles, mixed virtual packages are diamonds, "
+"missing packages are hexagons. Orange boxes mean recursion was stopped (leaf "
+"packages), blue lines are pre-depends, green lines are conflicts."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid "Caution, dotty cannot graph larger sets of packages."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"The same as <literal>dotty</literal>, only for xvcg from the <ulink "
+"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG "
+"tool</ulink>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml:1
+msgid "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>policy</literal> is meant to help debug issues relating to the "
+"preferences file. With no arguments it will print out the priorities of each "
+"source. Otherwise it prints out detailed information about the priority "
+"selection of the named package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>apt-cache</literal>'s <literal>madison</literal> command attempts "
+"to mimic the output format and a subset of the functionality of the Debian "
+"archive management tool, <literal>madison</literal>. It displays available "
+"versions of a package in a tabular format. Unlike the original "
+"<literal>madison</literal>, it can only display information for the "
+"architecture for which APT has retrieved package lists "
+"(<literal>APT::Architecture</literal>)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"Select the file to store the package cache. The package cache is the primary "
+"cache used by all operations. Configuration Item: "
+"<literal>Dir::Cache::pkgcache</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"Select the file to store the source cache. The source is used only by "
+"<literal>gencaches</literal> and it stores a parsed version of the package "
+"information from remote sources. When building the package cache the source "
+"cache is used to avoid reparsing all of the package files. Configuration "
+"Item: <literal>Dir::Cache::srcpkgcache</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quietness up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quietness level, overriding the "
+"configuration file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"Print only important dependencies; for use with <literal>unmet</literal> and "
+"<literal>depends</literal>. Causes only Depends and Pre-Depends relations to "
+"be printed. Configuration Item: <literal>APT::Cache::Important</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"Per default the <command>depends</command> and <command>rdepends</command> "
+"print all dependencies. This can be tweaked with these flags which will omit "
+"the specified dependency type. Configuration Item: "
+"<literal>APT::Cache::Show<replaceable>DependencyType</replaceable></literal> "
+"e.g. <literal>APT::Cache::ShowRecommends</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"Per default <command>depends</command> and <command>rdepends</command> print "
+"only dependencies explicitly expressed in the metadata. With this flag it "
+"will also show dependencies implicitly added based on the encountered data. "
+"A <literal>Conflicts: foo</literal> e.g. expresses implicitly that this "
+"package also conflicts with the package foo from any other architecture. "
+"Configuration Item: <literal>APT::Cache::ShowImplicit</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"Print full package records when searching. Configuration Item: "
+"<literal>APT::Cache::ShowFull</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"Print full records for all available versions. This is the default; to turn "
+"it off, use <option>--no-all-versions</option>. If "
+"<option>--no-all-versions</option> is specified, only the candidate version "
+"will be displayed (the one which would be selected for installation). This "
+"option is only applicable to the <literal>show</literal> command. "
+"Configuration Item: <literal>APT::Cache::AllVersions</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"Perform automatic package cache regeneration, rather than use the cache as "
+"it is. This is the default; to turn it off, use "
+"<option>--no-generate</option>. Configuration Item: "
+"<literal>APT::Cache::Generate</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"Only search on the package and provided package names, not the long "
+"descriptions. Configuration Item: <literal>APT::Cache::NamesOnly</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"Make <literal>pkgnames</literal> print all names, including virtual packages "
+"and missing dependencies. Configuration Item: "
+"<literal>APT::Cache::AllNames</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"Make <literal>depends</literal> and <literal>rdepends</literal> recursive so "
+"that all packages mentioned are printed once. Configuration Item: "
+"<literal>APT::Cache::RecurseDepends</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"Limit the output of <literal>depends</literal> and "
+"<literal>rdepends</literal> to packages which are currently installed. "
+"Configuration Item: <literal>APT::Cache::Installed</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. Supported are currently <literal>*.deb</literal>, "
+"<literal>*.dsc</literal>, <literal>*.changes</literal>, "
+"<literal>Sources</literal> and <literal>Packages</literal> files as well as "
+"source package directories. Files are matched based on their name only, not "
+"their content!"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<literal>Sources</literal> and <literal>Packages</literal> can be compressed "
+"in any format apt supports as long as they have the correct extension. If "
+"you need to store multiple of these files in one directory you can prefix a "
+"name of your choice with the last character being an underscore "
+"(\"<literal>_</literal>\"). Example: my.example_Packages.xz"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml:1
+msgid ""
+"Note that these sources are treated as trusted (see &apt-secure;). "
+"Configuration Item: <literal>APT::Sources::With</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml:1
+msgid "&apt-conf;, &sources-list;, &apt-get;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml:1
+msgid ""
+"<command>apt-cache</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-key.8.xml:1
+msgid "APT key management utility"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml:1
+msgid ""
+"<command>apt-key</command> is used to manage the list of keys used by apt to "
+"authenticate packages. Packages which have been authenticated using these "
+"keys will be considered trusted."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml:1
+msgid ""
+"Note that if usage of <command>apt-key</command> is desired the additional "
+"installation of the GNU Privacy Guard suite (packaged in "
+"<package>gnupg</package>) is required. For this reason alone the "
+"programmatic usage (especially in package maintainerscripts!) is strongly "
+"discouraged. Further more the output format of all commands is undefined "
+"and can and does change whenever the underlying commands "
+"change. <command>apt-key</command> will try to detect such usage and "
+"generates warnings on stderr in these cases."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml:1
+msgid "Supported keyring files"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml:1
+msgid ""
+"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
+"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
+"the keybox database format introduced in newer &gpg; versions as default for "
+"keyring files. Binary keyring files intended to be used with any apt version "
+"should therefore always be created with <command>gpg --export</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml:1
+msgid ""
+"Alternatively, if all systems which should be using the created keyring have "
+"at least apt version >= 1.4 installed, you can use the ASCII armored format "
+"with the \"<literal>asc</literal>\" extension instead which can be created "
+"with <command>gpg --armor --export</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml:1
+msgid "Commands"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml:1
+msgid ""
+"Add a new key to the list of trusted keys. The key is read from the "
+"filename given with the parameter &synopsis-param-filename; or if the "
+"filename is <literal>-</literal> from standard input."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml:1
+msgid ""
+"It is critical that keys added manually via <command>apt-key</command> are "
+"verified to belong to the owner of the repositories they claim to be for "
+"otherwise the &apt-secure; infrastructure is completely undermined."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml:1
+msgid ""
+"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
+"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
+"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
+"\"<literal>asc</literal>\" as file extension."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml:1
+msgid "Remove a key from the list of trusted keys."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml:1
+msgid "Output the key &synopsis-param-keyid; to standard output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml:1
+msgid "Output all trusted keys to standard output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml:1
+msgid "List trusted keys with fingerprints."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml:1
+msgid ""
+"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
+"e.g. download key from keyservers directly into the trusted set of "
+"keys. Note that there are <emphasis>no</emphasis> checks performed, so it is "
+"easy to completely undermine the &apt-secure; infrastructure if used without "
+"care."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-key.8.xml:1
+msgid "(deprecated)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml:1
+msgid ""
+"Update the local keyring with the archive keyring and remove from the local "
+"keyring the archive keys which are no longer valid. The archive keyring is "
+"shipped in the <literal>archive-keyring</literal> package of your "
+"distribution, e.g. the &keyring-package; package in &keyring-distro;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml:1
+msgid ""
+"Note that a distribution does not need to and in fact should not use this "
+"command any longer and instead ship keyring files in the "
+"<filename>/etc/apt/trusted.gpg.d/</filename> directory directly as this "
+"avoids a dependency on <package>gnupg</package> and it is easier to manage "
+"keys by simply adding and removing files for maintainers and users alike."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml:1
+msgid ""
+"Perform an update working similarly to the <command>update</command> command "
+"above, but get the archive keyring from a URI instead and validate it "
+"against a master key. This requires an installed &wget; and an APT build "
+"configured to have a server to fetch from and a master keyring to validate. "
+"APT in Debian does not support this command, relying on "
+"<command>update</command> instead, but Ubuntu's APT does."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml:1 apt-mark.8.xml:1 apt-mark.8.xml:1 apt-cdrom.8.xml:1
+msgid "Options"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml:1
+msgid ""
+"Note that options need to be defined before the commands described in the "
+"previous section."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml:1
+msgid ""
+"With this option it is possible to specify a particular keyring file the "
+"command should operate on. The default is that a command is executed on the "
+"<filename>trusted.gpg</filename> file as well as on all parts in the "
+"<filename>trusted.gpg.d</filename> directory, though "
+"<filename>trusted.gpg</filename> is the primary keyring which means that "
+"e.g. new keys are added to this one."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml:1
+msgid "&apt-get;, &apt-secure;"
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-mark.8.xml:1
+msgid "show, set and unset various settings for a package"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml:1
+msgid ""
+"<command>apt-mark</command> can be used as a unified front-end to set "
+"various settings for a package, such as marking a package as being "
+"automatically/manually installed or changing <command>dpkg</command> "
+"selections such as hold, install, deinstall and purge which are respected "
+"e.g. by <command>apt-get dselect-upgrade</command> or "
+"<command>aptitude</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml:1
+msgid "Automatically and Manually Installed Packages"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml:1
+msgid ""
+"When you request that a package is installed, and as a result other packages "
+"are installed to satisfy its dependencies, the dependencies are marked as "
+"being automatically installed, while the package you installed explicitly is "
+"marked as manually installed. Once an automatically installed package is no "
+"longer depended on by any manually installed package it is considered no "
+"longer needed and e.g. <command>apt-get</command> or "
+"<command>aptitude</command> will at least suggest removing them."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml:1
+msgid ""
+"<literal>auto</literal> is used to mark a package as being automatically "
+"installed, which will cause the package to be removed when no more manually "
+"installed packages depend on this package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml:1
+msgid ""
+"<literal>manual</literal> is used to mark a package as being manually "
+"installed, which will prevent the package from being automatically removed "
+"if no other packages depend on it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml:1
+msgid ""
+"<literal>showauto</literal> is used to print a list of automatically "
+"installed packages with each package on a new line. All automatically "
+"installed packages will be listed if no package is given. If packages are "
+"given only those which are automatically installed will be shown."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml:1
+msgid ""
+"<literal>showmanual</literal> can be used in the same way as "
+"<literal>showauto</literal> except that it will print a list of manually "
+"installed packages instead."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml:1
+msgid ""
+"Read/Write package stats from the filename given with the parameter "
+"&synopsis-param-filename; instead of from the default location, which is "
+"<filename>extended_status</filename> in the directory defined by the "
+"Configuration Item: <literal>Dir::State</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml:1
+msgid "Prevent Changes for a Package"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml:1
+msgid ""
+"<literal>hold</literal> is used to mark a package as held back, which will "
+"prevent the package from being automatically installed, upgraded or removed."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml:1
+msgid ""
+"<literal>unhold</literal> is used to cancel a previously set hold on a "
+"package to allow all actions again."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml:1
+msgid ""
+"<literal>showhold</literal> is used to print a list of packages on hold in "
+"the same way as for the other show commands."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml:1
+msgid "Schedule Packages for Install, Remove and Purge"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml:1
+msgid ""
+"Some front-ends like <command>apt-get dselect-upgrade</command> can be used "
+"to apply previously scheduled changes to the install state of packages. Such "
+"changes can be scheduled with the <option>install</option>, "
+"<option>remove</option> (also known as <option>deinstall</option>) and "
+"<option>purge</option> commands. Packages with a specific selection can be "
+"displayed with <option>showinstall</option>, <option>showremove</option> and "
+"<option>showpurge</option> respectively. More information about these so "
+"called dpkg selections can be found in &dpkg;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml:1
+msgid ""
+"<command>apt-mark</command> returns zero on normal operation, non-zero on "
+"error."
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-secure.8.xml:1
+msgid "Archive authentication support for APT"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"Starting with version 0.6, <command>APT</command> contains code that does "
+"signature checking of the Release file for all repositories. This ensures "
+"that data like packages in the archive can't be modified by people who have "
+"no access to the Release file signing key. Starting with version 1.1 "
+"<command>APT</command> requires repositories to provide recent "
+"authentication information for unimpeded usage of the repository."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"If an archive has an unsigned Release file or no Release file at all current "
+"APT versions will refuse to download data from them by default in "
+"<command>update</command> operations and even if forced to download "
+"front-ends like &apt-get; will require explicit confirmation if an "
+"installation request includes a package from such an unauthenticated "
+"archive."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"As a temporary exception &apt-get; (not &apt;!) raises warnings only if it "
+"encounters unauthenticated archives to give a slightly longer grace period "
+"on this backward compatibility effecting change. This exception will be "
+"removed in future releases and you can opt-out of this grace period by "
+"setting the configuration option "
+"<option>Binary::apt-get::Acquire::AllowInsecureRepositories</option> to "
+"<literal>false</literal> or "
+"<option>--no-allow-insecure-repositories</option> on the command line."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"You can force all APT clients to raise only warnings by setting the "
+"configuration option <option>Acquire::AllowInsecureRepositories</option> to "
+"<literal>true</literal>. Individual repositories can also be allowed to be "
+"insecure via the &sources-list; option "
+"<literal>allow-insecure=yes</literal>. Note that insecure repositories are "
+"strongly discouraged and all options to force apt to continue supporting "
+"them will eventually be removed. Users also have the "
+"<option>Trusted</option> option available to disable even the warnings, but "
+"be sure to understand the implications as detailed in &sources-list;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"A repository which previously was authenticated but would loose this state "
+"in an <command>update</command> operation raises an error in all APT clients "
+"irrespective of the option to allow or forbid usage of insecure "
+"repositories. The error can be overcome by additionally setting "
+"<option>Acquire::AllowDowngradeToInsecureRepositories</option> to "
+"<literal>true</literal> or for Individual repositories with the "
+"&sources-list; option <literal>allow-downgrade-to-insecure=yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"Note: All APT-based package management front-ends like &apt-get;, &aptitude; "
+"and &synaptic; support this authentication feature, so this manpage uses "
+"<literal>APT</literal> to refer to them all for simplicity only."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml:1
+msgid "Trusted Repositories"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"The chain of trust from an APT archive to the end user is made up of several "
+"steps. <command>apt-secure</command> is the last step in this chain; "
+"trusting an archive does not mean that you trust its packages not to contain "
+"malicious code, but means that you trust the archive maintainer. It's the "
+"archive maintainer's responsibility to ensure that the archive's integrity "
+"is preserved."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"apt-secure does not review signatures at a package level. If you require "
+"tools to do this you should look at <command>debsig-verify</command> and "
+"<command>debsign</command> (provided in the debsig-verify and devscripts "
+"packages respectively)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"The chain of trust in Debian starts (e.g.) when a maintainer uploads a new "
+"package or a new version of a package to the Debian archive. In order to "
+"become effective, this upload needs to be signed by a key contained in one "
+"of the Debian package maintainer keyrings (available in the debian-keyring "
+"package). Maintainers' keys are signed by other maintainers following "
+"pre-established procedures to ensure the identity of the key holder. Similar "
+"procedures exist in all Debian-based distributions."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"Once the uploaded package is verified and included in the archive, the "
+"maintainer signature is stripped off, and checksums of the package are "
+"computed and put in the Packages file. The checksums of all of the Packages "
+"files are then computed and put into the Release file. The Release file is "
+"then signed by the archive key for this &keyring-distro; release, and "
+"distributed alongside the packages and the Packages files on "
+"&keyring-distro; mirrors. The keys are in the &keyring-distro; archive "
+"keyring available in the &keyring-package; package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"End users can check the signature of the Release file, extract a checksum of "
+"a package from it and compare it with the checksum of the package they "
+"downloaded by hand - or rely on APT doing this automatically."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"Notice that this is distinct from checking signatures on a per package "
+"basis. It is designed to prevent two possible attacks:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml:1
+msgid ""
+"<literal>Network \"man in the middle\" attacks</literal>. Without signature "
+"checking, malicious agents can introduce themselves into the package "
+"download process and provide malicious software either by controlling a "
+"network element (router, switch, etc.) or by redirecting traffic to a rogue "
+"server (through ARP or DNS spoofing attacks)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml:1
+msgid ""
+"<literal>Mirror network compromise</literal>. Without signature checking, a "
+"malicious agent can compromise a mirror host and modify the files in it to "
+"propagate malicious software to all users downloading packages from that "
+"host."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"However, it does not defend against a compromise of the master server itself "
+"(which signs the packages) or against a compromise of the key used to sign "
+"the Release files. In any case, this mechanism can complement a per-package "
+"signature."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml:1
+msgid "User Configuration"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"<command>apt-key</command> is the program that manages the list of keys used "
+"by APT to trust repositories. It can be used to add or remove keys as well "
+"as list the trusted keys. Limiting which key(s) are able to sign which "
+"archive is possible via the <option>Signed-By</option> in &sources-list;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so fiddling with "
+"<command>apt-key</command> is only needed if third-party repositories are "
+"added."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"In order to add a new key you need to first download it (you should make "
+"sure you are using a trusted communication channel when retrieving it), add "
+"it with <command>apt-key</command> and then run <command>apt-get "
+"update</command> so that apt can download and verify the "
+"<filename>InRelease</filename> or <filename>Release.gpg</filename> files "
+"from the archives you have configured."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml:1
+msgid "Archive Configuration"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"If you want to provide archive signatures in an archive under your "
+"maintenance you have to:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml:1
+msgid ""
+"<emphasis>Create a toplevel Release file</emphasis>, if it does not exist "
+"already. You can do this by running <command>apt-ftparchive "
+"release</command> (provided in apt-utils)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml:1
+msgid ""
+"<emphasis>Sign it</emphasis>. You can do this by running <command>gpg "
+"--clearsign -o InRelease Release</command> and <command>gpg -abs -o "
+"Release.gpg Release</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml:1
+msgid ""
+"<emphasis>Publish the key fingerprint</emphasis>, so that your users will "
+"know what key they need to import in order to authenticate the files in the "
+"archive. It is best to ship your key in its own keyring package like "
+"&keyring-distro; does with &keyring-package; to be able to distribute "
+"updates and key transitions automatically later."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml:1
+msgid ""
+"<emphasis>Provide instructions on how to add your archive and "
+"key</emphasis>. If your users can't acquire your key securely the chain of "
+"trust described above is broken. How you can help users add your key "
+"depends on your archive and target audience ranging from having your keyring "
+"package included in another archive users already have configured (like the "
+"default repositories of their distribution) to leveraging the web of trust."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"Whenever the contents of the archive change (new packages are added or "
+"removed) the archive maintainer has to follow the first two steps outlined "
+"above."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+"&debsign;, &debsig-verify;, &gpg;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"For more background information you might want to review the <ulink "
+"url=\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
+"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
+"available in the harden-doc package) and the <ulink "
+"url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" >Strong "
+"Distribution HOWTO</ulink> by V. Alex Brennen."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml:1
+msgid "Manpage Authors"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml:1
+msgid ""
+"This man-page is based on the work of Javier Fernández-Sanguino Peña, Isaac "
+"Jones, Colin Walters, Florian Weimer and Michael Vogt."
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cdrom.8.xml:1
+msgid "APT CD-ROM management utility"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml:1
+msgid ""
+"<command>apt-cdrom</command> is used to add a new CD-ROM to APT's list of "
+"available sources. <command>apt-cdrom</command> takes care of determining "
+"the structure of the disc as well as correcting for several possible "
+"mis-burns and verifying the index files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml:1
+msgid ""
+"It is necessary to use <command>apt-cdrom</command> to add CDs to the APT "
+"system; it cannot be done by hand. Furthermore each disc in a multi-CD set "
+"must be inserted and scanned separately to account for possible mis-burns."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml:1
+msgid ""
+"<literal>add</literal> is used to add a new disc to the source list. It will "
+"unmount the CD-ROM device, prompt for a disc to be inserted and then proceed "
+"to scan it and copy the index files. If the disc does not have a proper "
+"<filename>.disk</filename> directory you will be prompted for a descriptive "
+"title."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml:1
+msgid ""
+"APT uses a CD-ROM ID to track which disc is currently in the drive and "
+"maintains a database of these IDs in "
+"<filename>&statedir;/cdroms.list</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml:1
+msgid ""
+"A debugging tool to report the identity of the current disc as well as the "
+"stored file name"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml:1
+msgid ""
+"Do not try to auto-detect the CD-ROM path. Usually combined with the "
+"<option>--cdrom</option> option. Configuration Item: "
+"<literal>Acquire::cdrom::AutoDetect</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml:1
+msgid ""
+"Mount point; specify the location to mount the CD-ROM. This mount point must "
+"be listed in <filename>/etc/fstab</filename> and properly configured. "
+"Configuration Item: <literal>Acquire::cdrom::mount</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml:1
+msgid ""
+"Rename a disc; change the label of a disc or override the disc's given "
+"label. This option will cause <command>apt-cdrom</command> to prompt for a "
+"new label. Configuration Item: <literal>APT::CDROM::Rename</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml:1
+msgid ""
+"No mounting; prevent <command>apt-cdrom</command> from mounting and "
+"unmounting the mount point. Configuration Item: "
+"<literal>APT::CDROM::NoMount</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml:1
+msgid ""
+"Fast Copy; Assume the package files are valid and do not check every "
+"package. This option should be used only if <command>apt-cdrom</command> has "
+"been run on this disc before and did not detect any errors. Configuration "
+"Item: <literal>APT::CDROM::Fast</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml:1
+msgid ""
+"Thorough Package Scan; This option may be needed with some old Debian "
+"1.1/1.2 discs that have Package files in strange places. It takes much "
+"longer to scan the CD but will pick them all up."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml:1
+msgid ""
+"No Changes; Do not change the &sources-list; file and do not write index "
+"files. Everything is still checked however. Configuration Item: "
+"<literal>APT::CDROM::NoAct</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml:1
+msgid "&apt-conf;, &apt-get;, &sources-list;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml:1
+msgid ""
+"<command>apt-cdrom</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-config.8.xml:1
+msgid "APT Configuration Query program"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml:1
+msgid ""
+"<command>apt-config</command> is an internal program used by various "
+"portions of the APT suite to provide consistent configurability. It accesses "
+"the main configuration file <filename>/etc/apt/apt.conf</filename> in a "
+"manner that is easy to use for scripted applications."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml:1
+msgid ""
+"shell is used to access the configuration information from a shell "
+"script. It is given pairs of arguments, the first being a shell variable and "
+"the second the configuration value to query. As output it lists shell "
+"assignment commands for each value present. In a shell script it should be "
+"used as follows:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-config.8.xml:1
+#, no-wrap
+msgid ""
+"OPTS=\"-f\"\n"
+"RES=`apt-config shell OPTS MyApp::options`\n"
+"eval $RES\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml:1
+msgid ""
+"This will set the shell environment variable $OPTS to the value of "
+"MyApp::options with a default of <option>-f</option>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml:1
+msgid ""
+"The configuration item may be postfixed with a /[fdbi]. f returns file "
+"names, d returns directories, b returns true or false and i returns an "
+"integer. Each of the returns is normalized and verified internally."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml:1
+msgid "Just show the contents of the configuration space."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml:1
+msgid ""
+"Include options which have an empty value. This is the default, so use "
+"--no-empty to remove them from the output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-config.8.xml:1
+msgid "&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml:1
+msgid ""
+"Defines the output of each config option. &percnt;t will be replaced with "
+"its individual name, &percnt;f with its full hierarchical name and &percnt;v "
+"with its value. Use uppercase letters and special characters in the value "
+"will be encoded to ensure that it can e.g. be safely used in a quoted-string "
+"as defined by RFC822. Additionally &percnt;n will be replaced by a newline, "
+"and &percnt;N by a tab. A &percnt; can be printed by using &percnt;&percnt;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml:1 apt-extracttemplates.1.xml:1 apt-sortpkgs.1.xml:1
+#: apt-ftparchive.1.xml:1
+msgid "&apt-conf;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml:1
+msgid ""
+"<command>apt-config</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+
+#. type: Content of: <refentry><refentryinfo><author><contrib>
+#: apt.conf.5.xml:1
+msgid "Initial documentation of Debug::*."
+msgstr ""
+
+#. type: Content of: <refentry><refentryinfo><author><email>
+#: apt.conf.5.xml:1
+msgid "dburrows@debian.org"
+msgstr ""
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.conf.5.xml:1 apt_preferences.5.xml:1 sources.list.5.xml:1
+msgid "5"
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.conf.5.xml:1
+msgid "Configuration file for APT"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"<filename>/etc/apt/apt.conf</filename> is the main configuration file shared "
+"by all the tools in the APT suite of tools, though it is by no means the "
+"only place options can be set. The suite also shares a common command line "
+"parser to provide a uniform environment."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><orderedlist><para>
+#: apt.conf.5.xml:1
+msgid ""
+"When an APT tool starts up it will read the configuration files in the "
+"following order:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"the file specified by the <envar>APT_CONFIG</envar> environment variable (if "
+"any)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending "
+"order which have either no or \"<literal>conf</literal>\" as filename "
+"extension and which only contain alphanumeric, hyphen (-), underscore (_) "
+"and period (.) characters. Otherwise APT will print a notice that it has "
+"ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml:1
+msgid "the main configuration file specified by <literal>Dir::Etc::main</literal>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"all options set in the binary specific configuration subtree are moved into "
+"the root of the tree."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"the command line options are applied to override the configuration "
+"directives or to load even more configuration files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml:1
+msgid "Syntax"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The configuration file is organized in a tree with options organized into "
+"functional groups. Option specification is given with a double colon "
+"notation; for instance <literal>APT::Get::Assume-Yes</literal> is an option "
+"within the APT tool group, for the Get tool. Options do not inherit from "
+"their parent groups."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Syntactically the configuration language is modeled after what the ISC tools "
+"such as bind and dhcp use. Lines starting with <literal>//</literal> are "
+"treated as comments (ignored), as well as all text between "
+"<literal>/*</literal> and <literal>*/</literal>, just like C/C++ comments. "
+"Each line is of the form <literal>APT::Get::Assume-Yes \"true\";</literal>. "
+"The quotation marks and trailing semicolon are required. The value must be "
+"on one line, and there is no kind of string concatenation. Values must not "
+"include backslashes or extra quotation marks. Option names are made up of "
+"alphanumeric characters and the characters \"/-:._+\". A new scope can be "
+"opened with curly braces, like this:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml:1
+#, no-wrap
+msgid ""
+"APT {\n"
+" Get {\n"
+" Assume-Yes \"true\";\n"
+" Fix-Broken \"true\";\n"
+" };\n"
+"};\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"with newlines placed to make it more readable. Lists can be created by "
+"opening a scope and including a single string enclosed in quotes followed by "
+"a semicolon. Multiple entries can be included, separated by a semicolon."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml:1
+#, no-wrap
+msgid "DPkg::Pre-Install-Pkgs {\"/usr/sbin/dpkg-preconfigure --apt\";};\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"In general the sample configuration file &configureindex; is a good guide "
+"for how it should look."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Case is not significant in names of configuration items, so in the previous "
+"example you could use <literal>dpkg::pre-install-pkgs</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Names for the configuration items are optional if a list is defined as can "
+"be seen in the <literal>DPkg::Pre-Install-Pkgs</literal> example above. If "
+"you don't specify a name a new entry will simply add a new option to the "
+"list. If you specify a name you can override the option in the same way as "
+"any other option by reassigning a new value to the option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Two special commands are defined: <literal>#include</literal> (which is "
+"deprecated and not supported by alternative implementations) and "
+"<literal>#clear</literal>. <literal>#include</literal> will include the "
+"given file, unless the filename ends in a slash, in which case the whole "
+"directory is included. <literal>#clear</literal> is used to erase a part of "
+"the configuration tree. The specified element and all its descendants are "
+"erased. (Note that these lines also need to end with a semicolon.)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The <literal>#clear</literal> command is the only way to delete a list or a "
+"complete scope. Reopening a scope (or using the syntax described below with "
+"an appended <literal>::</literal>) will <emphasis>not</emphasis> override "
+"previously written entries. Options can only be overridden by addressing a "
+"new value to them - lists and scopes can't be overridden, only cleared."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"All of the APT tools take an -o option which allows an arbitrary "
+"configuration directive to be specified on the command line. The syntax is a "
+"full option name (<literal>APT::Get::Assume-Yes</literal> for instance) "
+"followed by an equals sign then the new value of the option. To append a new "
+"element to a list, add a trailing <literal>::</literal> to the name of the "
+"list. (As you might suspect, the scope syntax can't be used on the command "
+"line.)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Note that appending items to a list using <literal>::</literal> only works "
+"for one item per line, and that you should not use it in combination with "
+"the scope syntax (which adds <literal>::</literal> implicitly). Using both "
+"syntaxes together will trigger a bug which some users unfortunately depend "
+"on: an option with the unusual name \"<literal>::</literal>\" which acts "
+"like every other option with a name. This introduces many problems; for one "
+"thing, users who write multiple lines in this <emphasis>wrong</emphasis> "
+"syntax in the hope of appending to a list will achieve the opposite, as only "
+"the last assignment for this option \"<literal>::</literal>\" will be "
+"used. Future versions of APT will raise errors and stop working if they "
+"encounter this misuse, so please correct such statements now while APT "
+"doesn't explicitly complain about them."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml:1
+msgid "The APT Group"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"This group of options controls general APT behavior as well as holding the "
+"options for all of the tools."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"System Architecture; sets the architecture to use when fetching files and "
+"parsing package lists. The internal default is the architecture apt was "
+"compiled for."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"All Architectures the system supports. For instance, CPUs implementing the "
+"<literal>amd64</literal> (also called <literal>x86-64</literal>) "
+"instruction set are also able to execute binaries compiled for the "
+"<literal>i386</literal> (<literal>x86</literal>) instruction set. This list "
+"is used when fetching files and parsing package lists. The initial default "
+"is always the system's native architecture "
+"(<literal>APT::Architecture</literal>), and foreign architectures are added "
+"to the default list when they are registered via <command>dpkg "
+"--add-architecture</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"This scope defines which compression formats are supported, how compression "
+"and decompression can be performed if support for this format isn't built "
+"into apt directly and a cost-value indicating how costly it is to compress "
+"something in this format. As an example the following configuration stanza "
+"would allow apt to download and uncompress as well as create and store files "
+"with the low-cost <literal>.reversed</literal> file extension which it will "
+"pass to the command <command>rev</command> without additional commandline "
+"parameters for compression and uncompression:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><informalexample><programlisting>
+#: apt.conf.5.xml:1
+#, no-wrap
+msgid ""
+"APT::Compressor::rev {\n"
+"\tName \"rev\";\n"
+"\tExtension \".reversed\";\n"
+"\tBinary \"rev\";\n"
+"\tCompressArg {};\n"
+"\tUncompressArg {};\n"
+"\tCost \"10\";\n"
+"};\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"List of all build profiles enabled for build-dependency resolution, without "
+"the \"<literal>profile.</literal>\" namespace prefix. By default this list "
+"is empty. The <envar>DEB_BUILD_PROFILES</envar> as used by "
+"&dpkg-buildpackage; overrides the list notation."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Default release to install packages from if more than one version is "
+"available. Contains release name, codename or release version. Examples: "
+"'stable', 'testing', 'unstable', '&debian-stable-codename;', "
+"'&debian-testing-codename;', '4.0', '5.0*'. See also &apt-preferences;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Ignore held packages; this global option causes the problem resolver to "
+"ignore held packages in its decision making."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Defaults to on. When turned on the autoclean feature will remove any "
+"packages which can no longer be downloaded from the cache. If turned off "
+"then packages that are locally installed are also excluded from cleaning - "
+"but note that APT provides no direct means to reinstall them."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Defaults to on, which will cause APT to install essential and important "
+"packages as soon as possible in an install/upgrade operation, in order to "
+"limit the effect of a failing &dpkg; call. If this option is disabled, APT "
+"treats an important package in the same way as an extra package: between the "
+"unpacking of the package A and its configuration there can be many other "
+"unpack or configuration calls for other unrelated packages B, C etc. If "
+"these cause the &dpkg; call to fail (e.g. because package B's maintainer "
+"scripts generate an error), this results in a system state in which package "
+"A is unpacked but unconfigured - so any package depending on A is now no "
+"longer guaranteed to work, as its dependency on A is no longer satisfied."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The immediate configuration marker is also applied in the potentially "
+"problematic case of circular dependencies, since a dependency with the "
+"immediate flag is equivalent to a Pre-Dependency. In theory this allows APT "
+"to recognise a situation in which it is unable to perform immediate "
+"configuration, abort, and suggest to the user that the option should be "
+"temporarily deactivated in order to allow the operation to proceed. Note "
+"the use of the word \"theory\" here; in the real world this problem has "
+"rarely been encountered, in non-stable distribution versions, and was caused "
+"by wrong dependencies of the package in question or by a system in an "
+"already broken state; so you should not blindly disable this option, as the "
+"scenario mentioned above is not the only problem it can help to prevent in "
+"the first place."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Before a big operation like <literal>dist-upgrade</literal> is run with this "
+"option disabled you should try to explicitly <literal>install</literal> the "
+"package APT is unable to configure immediately; but please make sure you "
+"also report your problem to your distribution and to the APT team with the "
+"buglink below, so they can work on improving or correcting the upgrade "
+"process."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Never enable this option unless you <emphasis>really</emphasis> know what "
+"you are doing. It permits APT to temporarily remove an essential package to "
+"break a Conflicts/Conflicts or Conflicts/Pre-Depends loop between two "
+"essential packages. <emphasis>Such a loop should never exist and is a grave "
+"bug</emphasis>. This option will work if the essential packages are not "
+"<command>tar</command>, <command>gzip</command>, <command>libc</command>, "
+"<command>dpkg</command>, <command>dash</command> or anything that those "
+"packages depend on."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"APT uses since version 0.7.26 a resizable memory mapped cache file to store "
+"the available information. <literal>Cache-Start</literal> acts as a hint of "
+"the size the cache will grow to, and is therefore the amount of memory APT "
+"will request at startup. The default value is 20971520 bytes (~20 MB). Note "
+"that this amount of space needs to be available for APT; otherwise it will "
+"likely fail ungracefully, so for memory restricted devices this value should "
+"be lowered while on systems with a lot of configured sources it should be "
+"increased. <literal>Cache-Grow</literal> defines in bytes with the default "
+"of 1048576 (~1 MB) how much the cache size will be increased in the event "
+"the space defined by <literal>Cache-Start</literal> is not enough. This "
+"value will be applied again and again until either the cache is big enough "
+"to store all information or the size of the cache reaches the "
+"<literal>Cache-Limit</literal>. The default of "
+"<literal>Cache-Limit</literal> is 0 which stands for no limit. If "
+"<literal>Cache-Grow</literal> is set to 0 the automatic growth of the cache "
+"is disabled."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid "Defines which packages are considered essential build dependencies."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The Get subsection controls the &apt-get; tool; please see its documentation "
+"for more information about the options here."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The Cache subsection controls the &apt-cache; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The CDROM subsection controls the &apt-cdrom; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml:1
+msgid "The Acquire Group"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The <literal>Acquire</literal> group of options controls the download of "
+"packages as well as the various \"acquire methods\" responsible for the "
+"download itself (see also &sources-list;)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Security related option defaulting to true, as giving a Release file's "
+"validation an expiration date prevents replay attacks over a long timescale, "
+"and can also for example help users to identify mirrors that are no longer "
+"updated - but the feature depends on the correctness of the clock on the "
+"user system. Archive maintainers are encouraged to create Release files with "
+"the <literal>Valid-Until</literal> header, but if they don't or a stricter "
+"value is desired the <literal>Max-ValidTime</literal> option below can be "
+"used. The <option>Check-Valid-Until</option> option of &sources-list; "
+"entries should be preferred to disable the check selectively instead of "
+"using this global override."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Maximum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. If the Release file itself includes a "
+"<literal>Valid-Until</literal> header the earlier date of the two is used as "
+"the expiration date. The default value is <literal>0</literal> which stands "
+"for \"valid forever\". Archive specific settings can be made by appending "
+"the label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the "
+"<option>Valid-Until-Max</option> option there."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Minimum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. Use this if you need to use a seldom updated "
+"(local) mirror of a more frequently updated archive with a "
+"<literal>Valid-Until</literal> header instead of completely disabling the "
+"expiration date checking. Archive specific settings can and should be used "
+"by appending the label of the archive to the option name. Preferably, the "
+"same can be achieved for specific &sources-list; entries by using the "
+"<option>Valid-Until-Min</option> option there."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Try to download deltas called <literal>PDiffs</literal> for indexes (like "
+"<filename>Packages</filename> files) instead of downloading whole ones. True "
+"by default. Preferably, this can be set for specific &sources-list; entries "
+"or index files by using the <option>PDiffs</option> option there."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Two sub-options to limit the use of PDiffs are also available: "
+"<literal>FileLimit</literal> can be used to specify a maximum number of "
+"PDiff files should be downloaded to update a "
+"file. <literal>SizeLimit</literal> on the other hand is the maximum "
+"percentage of the size of all patches compared to the size of the targeted "
+"file. If one of these limits is exceeded the complete file is downloaded "
+"instead of the patches."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Try to download indexes via an URI constructed from a hashsum of the "
+"expected file rather than downloaded via a well-known stable filename. True "
+"by default, but automatically disabled if the source indicates no support "
+"for it. Usage can be forced with the special value \"force\". Preferably, "
+"this can be set for specific &sources-list; entries or index files by using "
+"the <option>By-Hash</option> option there."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Queuing mode; <literal>Queue-Mode</literal> can be one of "
+"<literal>host</literal> or <literal>access</literal> which determines how "
+"APT parallelizes outgoing connections. <literal>host</literal> means that "
+"one connection per target host will be opened, <literal>access</literal> "
+"means that one connection per URI type will be opened."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Number of retries to perform. If this is non-zero APT will retry failed "
+"files the given number of times."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Use symlinks for source archives. If set to true then source archives will "
+"be symlinked when possible instead of copying. True is the default."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"<literal>http::Proxy</literal> sets the default proxy to use for HTTP "
+"URIs. It is in the standard form of "
+"<literal>http://[[user][:pass]@]host[:port]/</literal>. Per host proxies "
+"can also be specified by using the form "
+"<literal>http::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>http_proxy</envar> environment variable will "
+"be used."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Three settings are provided for cache control with HTTP/1.1 compliant proxy "
+"caches. <literal>No-Cache</literal> tells the proxy not to use its cached "
+"response under any circumstances. <literal>Max-Age</literal> sets the "
+"allowed maximum age (in seconds) of an index file in the cache of the "
+"proxy. <literal>No-Store</literal> specifies that the proxy should not "
+"store the requested archive files in its cache, which can be used to prevent "
+"the proxy from polluting its cache with (big) .deb files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1 apt.conf.5.xml:1
+msgid ""
+"The option <literal>timeout</literal> sets the timeout timer used by the "
+"method; this value applies to the connection as well as the data timeout."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial "
+"e.g. on high-latency connections. It specifies how many requests are sent in "
+"a pipeline. APT tries to detect and workaround misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the "
+"HTTP/1.1 specification pipelining can be disabled by setting the value to "
+"0. It is enabled by default with the value 10."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"<literal>Acquire::http::AllowRedirect</literal> controls whether APT will "
+"follow redirects, which is enabled by default."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The used bandwidth can be limited with "
+"<literal>Acquire::http::Dl-Limit</literal> which accepts integer values in "
+"kilobytes per second. The default value is 0 which deactivates the limit and "
+"tries to use all available bandwidth. Note that this option implicitly "
+"disables downloading from multiple servers at the same time."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"<literal>Acquire::http::User-Agent</literal> can be used to set a different "
+"User-Agent for the http download method as some proxies allow access for "
+"clients only if the client uses a known identifier."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"<literal>Acquire::http::Proxy-Auto-Detect</literal> can be used to specify "
+"an external command to discover the http proxy to use. The first and only "
+"parameter is an URI denoting the host to be contacted to allow for "
+"host-specific configuration. APT expects the command to output the proxy on "
+"stdout as a single line in the style <literal>http://proxy:port/</literal> "
+"or the word <literal>DIRECT</literal> if no proxy should be used. No output "
+"indicates that the generic proxy settings should be used. Note that "
+"auto-detection will not be used for a host if a host-specific proxy "
+"configuration is already set via "
+"<literal>Acquire::http::Proxy::<replaceable>HOST</replaceable></literal>. "
+"See the &squid-deb-proxy-client; package for an example implementation that "
+"uses avahi. This option takes precedence over the legacy option name "
+"<literal>ProxyAutoDetect</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The <literal>Cache-control</literal>, <literal>Timeout</literal>, "
+"<literal>AllowRedirect</literal>, <literal>Dl-Limit</literal> and "
+"<literal>proxy</literal> options work for HTTPS URIs in the same way as for "
+"the <literal>http</literal> method, and default to the same values if they "
+"are not explicitly set. The <literal>Pipeline-Depth</literal> option is not "
+"yet supported."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"<literal>CaInfo</literal> suboption specifies place of file that holds info "
+"about trusted certificates. <literal>&lt;host&gt;::CaInfo</literal> is the "
+"corresponding per-host option. <literal>Verify-Peer</literal> boolean "
+"suboption determines whether or not the server's host certificate should be "
+"verified against trusted certificates. "
+"<literal>&lt;host&gt;::Verify-Peer</literal> is the corresponding per-host "
+"option. <literal>Verify-Host</literal> boolean suboption determines whether "
+"or not the server's hostname should be verified. "
+"<literal>&lt;host&gt;::Verify-Host</literal> is the corresponding per-host "
+"option. <literal>SslCert</literal> determines what certificate to use for "
+"client authentication. <literal>&lt;host&gt;::SslCert</literal> is the "
+"corresponding per-host option. <literal>SslKey</literal> determines what "
+"private key to use for client "
+"authentication. <literal>&lt;host&gt;::SslKey</literal> is the corresponding "
+"per-host option. <literal>SslForceVersion</literal> overrides default SSL "
+"version to use. It can contain either of the strings "
+"'<literal>TLSv1</literal>' or '<literal>SSLv3</literal>'. "
+"<literal>&lt;host&gt;::SslForceVersion</literal> is the corresponding "
+"per-host option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs. "
+"It is in the standard form of "
+"<literal>ftp://[[user][:pass]@]host[:port]/</literal>. Per host proxies can "
+"also be specified by using the form "
+"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
+"used. To use an FTP proxy you will have to set the "
+"<literal>ftp::ProxyLogin</literal> script in the configuration file. This "
+"entry specifies the commands to send to tell the proxy server what to "
+"connect to. Please see &configureindex; for an example of how to do "
+"this. The substitution variables representing the corresponding URI "
+"component are <literal>$(PROXY_USER)</literal>, "
+"<literal>$(PROXY_PASS)</literal>, <literal>$(SITE_USER)</literal>, "
+"<literal>$(SITE_PASS)</literal>, <literal>$(SITE)</literal> and "
+"<literal>$(SITE_PORT)</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Several settings are provided to control passive mode. Generally it is safe "
+"to leave passive mode on; it works in nearly every environment. However, "
+"some situations require that passive mode be disabled and port mode FTP used "
+"instead. This can be done globally or for connections that go through a "
+"proxy or for a specific host (see the sample config file for examples)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"It is possible to proxy FTP over HTTP by setting the "
+"<envar>ftp_proxy</envar> environment variable to an HTTP URL - see the "
+"discussion of the http method above for syntax. You cannot set this in the "
+"configuration file and it is not recommended to use FTP over HTTP due to its "
+"low efficiency."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
+"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
+"false, which means these commands are only used if the control connection is "
+"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
+"that most FTP servers do not support RFC2428."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml:1
+#, no-wrap
+msgid "/cdrom/::Mount \"foo\";"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"For URIs using the <literal>cdrom</literal> method, the only configurable "
+"option is the mount point, <literal>cdrom::Mount</literal>, which must be "
+"the mount point for the CD-ROM (or DVD, or whatever) drive as specified in "
+"<filename>/etc/fstab</filename>. It is possible to provide alternate mount "
+"and unmount commands if your mount point cannot be listed in the fstab. The "
+"syntax is to put <placeholder type=\"literallayout\" id=\"0\"/> within the "
+"<literal>cdrom</literal> block. It is important to have the trailing slash. "
+"Unmount commands can be specified using UMount."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"For GPGV URIs the only configurable option is "
+"<literal>gpgv::Options</literal>, which passes additional parameters to "
+"gpgv."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml:1
+#, no-wrap
+msgid ""
+"Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> "
+"\"<replaceable>Methodname</replaceable>\";"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"List of compression types which are understood by the acquire methods. "
+"Files like <filename>Packages</filename> can be available in various "
+"compression formats. By default the acquire methods can decompress and "
+"recompress many common formats like <command>xz</command> and "
+"<command>gzip</command>; with this scope the supported formats can be "
+"queried, modified as well as support for more formats added (see also "
+"<option>APT::Compressor</option>). The syntax for this is: <placeholder "
+"type=\"synopsis\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml:1
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order:: \"gz\";"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml:1
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order { \"xz\"; \"gz\"; };"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Also, the <literal>Order</literal> subgroup can be used to define in which "
+"order the acquire system will try to download the compressed files. The "
+"acquire system will try the first and proceed with the next compression type "
+"in this list on error, so to prefer one over the other type simply add the "
+"preferred type first - types not already added will be implicitly appended "
+"to the end of the list, so e.g. <placeholder type=\"synopsis\" id=\"0\"/> "
+"can be used to prefer <command>gzip</command> compressed files over all "
+"other compression formats. If <command>xz</command> should be preferred "
+"over <command>gzip</command> and <command>bzip2</command> the configure "
+"setting should look like this: <placeholder type=\"synopsis\" id=\"1\"/> It "
+"is not needed to add <literal>bz2</literal> to the list explicitly as it "
+"will be added automatically."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml:1
+#, no-wrap
+msgid "Dir::Bin::bzip2 \"/bin/bzip2\";"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Note that the "
+"<literal>Dir::Bin::<replaceable>Methodname</replaceable></literal> will be "
+"checked at run time. If this option has been set and support for this format "
+"isn't directly built into apt, the method will only be used if this file "
+"exists; e.g. for the <literal>bzip2</literal> method (the inbuilt) setting "
+"is: <placeholder type=\"literallayout\" id=\"0\"/> Note also that list "
+"entries specified on the command line will be added at the end of the list "
+"specified in the configuration files, but before the default entries. To "
+"prefer a type in this case over the ones specified in the configuration "
+"files you can set the option direct - not in list style. This will not "
+"override the defined list; it will only prefix the list with this type."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The special type <literal>uncompressed</literal> can be used to give "
+"uncompressed files a preference, but note that most archives don't provide "
+"uncompressed files so this is mostly only useable for local mirrors."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"When downloading <literal>gzip</literal> compressed indexes (Packages, "
+"Sources, or Translations), keep them gzip compressed locally instead of "
+"unpacking them. This saves quite a lot of disk space at the expense of more "
+"CPU requirements when building the local package caches. False by default."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The Languages subsection controls which <filename>Translation</filename> "
+"files are downloaded and in which order APT tries to display the "
+"description-translations. APT will try to display the first available "
+"description in the language which is listed first. Languages can be defined "
+"with their short or long language codes. Note that not all archives provide "
+"<filename>Translation</filename> files for every language - the long "
+"language codes are especially rare."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><programlisting>
+#: apt.conf.5.xml:1
+#, no-wrap
+msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The default list includes \"environment\" and "
+"\"en\". \"<literal>environment</literal>\" has a special meaning here: it "
+"will be replaced at runtime with the language codes extracted from the "
+"<literal>LC_MESSAGES</literal> environment variable. It will also ensure "
+"that these codes are not included twice in the list. If "
+"<literal>LC_MESSAGES</literal> is set to \"C\" only the "
+"<filename>Translation-en</filename> file (if available) will be used. To "
+"force APT to use no Translation file use the setting "
+"<literal>Acquire::Languages=none</literal>. \"<literal>none</literal>\" is "
+"another special meaning code which will stop the search for a suitable "
+"<filename>Translation</filename> file. This tells APT to download these "
+"translations too, without actually using them unless the environment "
+"specifies the languages. So the following example configuration will result "
+"in the order \"en, de\" in an English locale or \"de, en\" in a German "
+"one. Note that \"fr\" is downloaded, but not used unless APT is used in a "
+"French locale (where the order would be \"fr, de, en\"). <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Note: To prevent problems resulting from APT being executed in different "
+"environments (e.g. by different users or by other programs) all Translation "
+"files which are found in <filename>/var/lib/apt/lists/</filename> will be "
+"added to the end of the list (after an implicit "
+"\"<literal>none</literal>\")."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid "When downloading, force to use only the IPv4 protocol."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid "When downloading, force to use only the IPv6 protocol."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The maximum file size of Release/Release.gpg/InRelease files. The default "
+"is 10MB."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"This option controls if apt will use the DNS SRV server record as specified "
+"in RFC 2782 to select an alternative server to connect to. The default is "
+"\"true\"."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Allow update operations to load data files from repositories without "
+"sufficient security information. The default value is "
+"\"<literal>false</literal>\". Concept, implications as well as alternatives "
+"are detailed in &apt-secure;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Allow update operations to load data files from repositories which provide "
+"security information, but these are deemed no longer cryptographically "
+"strong enough. The default value is \"<literal>false</literal>\". Concept, "
+"implications as well as alternatives are detailed in &apt-secure;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Allow that a repository that was previously gpg signed to become unsigned "
+"during an update operation. When there is no valid signature for a "
+"previously trusted repository apt will refuse the update. This option can be "
+"used to override this protection. You almost certainly never want to enable "
+"this. The default is <literal>false</literal>. Concept, implications as "
+"well as alternatives are detailed in &apt-secure;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.conf.5.xml:1
+msgid "scope"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Acquiring changelogs can only be done if an URI is known from where to get "
+"them. Preferable the Release file indicates this in a 'Changelogs' "
+"field. If this isn't available the Label/Origin field of the Release file is "
+"used to check if a "
+"<literal>Acquire::Changelogs::URI::Label::<replaceable>LABEL</replaceable></literal> "
+"or "
+"<literal>Acquire::Changelogs::URI::Origin::<replaceable>ORIGIN</replaceable></literal> "
+"option exists and if so this value is taken. The value in the Release file "
+"can be overridden with "
+"<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</replaceable></literal> "
+"or "
+"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGIN</replaceable></literal>. "
+"The value should be a normal URI to a text file, except that package "
+"specific data is replaced with the placeholder "
+"<literal>@CHANGEPATH@</literal>. The value for it is: 1. if the package is "
+"from a component (e.g. <literal>main</literal>) this is the first part "
+"otherwise it is omitted, 2. the first letter of source package name, except "
+"if the source package name starts with '<literal>lib</literal>' in which "
+"case it will be the first four letters. 3. The complete source package "
+"name. 4. the complete name again and 5. the source version. The first (if "
+"present), second, third and fourth part are separated by a slash "
+"('<literal>/</literal>') and between the fourth and fifth part is an "
+"underscore ('<literal>_</literal>'). The special value "
+"'<literal>no</literal>' is available for this option indicating that this "
+"source can't be used to acquire changelog files from. Another source will be "
+"tried if available in this case."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml:1
+msgid "Binary specific configuration"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Especially with the introduction of the <command>apt</command> binary it can "
+"be useful to set certain options only for a specific binary as even options "
+"which look like they would effect only a certain binary like "
+"<option>APT::Get::Show-Versions</option> effect <command>apt-get</command> "
+"as well as <command>apt</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Setting an option for a specific binary only can be achieved by setting the "
+"option inside the "
+"<option>Binary::<replaceable>specific-binary</replaceable></option> "
+"scope. Setting the option <option>APT::Get::Show-Versions</option> for the "
+"<command>apt</command> only can e.g. by done by setting "
+"<option>Binary::apt::APT::Get::Show-Versions</option> instead."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Note that as seen in the DESCRIPTION section further above you can't set "
+"binary-specific options on the commandline itself nor in configuration files "
+"loaded via the commandline."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml:1
+msgid "Directories"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The <literal>Dir::State</literal> section has directories that pertain to "
+"local state information. <literal>lists</literal> is the directory to place "
+"downloaded package lists in and <literal>status</literal> is the name of the "
+"&dpkg; status file. <literal>preferences</literal> is the name of the APT "
+"<filename>preferences</filename> file. <literal>Dir::State</literal> "
+"contains the default directory to prefix on all sub-items if they do not "
+"start with <filename>/</filename> or <filename>./</filename>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"<literal>Dir::Cache</literal> contains locations pertaining to local cache "
+"information, such as the two package caches <literal>srcpkgcache</literal> "
+"and <literal>pkgcache</literal> as well as the location to place downloaded "
+"archives, <literal>Dir::Cache::archives</literal>. Generation of caches can "
+"be turned off by setting <literal>pkgcache</literal> or "
+"<literal>srcpkgcache</literal> to <literal>\"\"</literal>. This will slow "
+"down startup but save disk space. It is probably preferable to turn off the "
+"pkgcache rather than the srcpkgcache. Like <literal>Dir::State</literal> "
+"the default directory is contained in <literal>Dir::Cache</literal>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"<literal>Dir::Etc</literal> contains the location of configuration files, "
+"<literal>sourcelist</literal> gives the location of the sourcelist and "
+"<literal>main</literal> is the default configuration file (setting has no "
+"effect, unless it is done from the config file specified by "
+"<envar>APT_CONFIG</envar>)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The <literal>Dir::Parts</literal> setting reads in all the config fragments "
+"in lexical order from the directory specified. After this is done then the "
+"main config file is loaded."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Binary programs are pointed to by "
+"<literal>Dir::Bin</literal>. <literal>Dir::Bin::Methods</literal> specifies "
+"the location of the method handlers and <literal>gzip</literal>, "
+"<literal>bzip2</literal>, <literal>lzma</literal>, <literal>dpkg</literal>, "
+"<literal>apt-get</literal> <literal>dpkg-source</literal> "
+"<literal>dpkg-buildpackage</literal> and <literal>apt-cache</literal> "
+"specify the location of the respective programs."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The configuration item <literal>RootDir</literal> has a special meaning. If "
+"set, all paths will be relative to <literal>RootDir</literal>, "
+"<emphasis>even paths that are specified absolutely</emphasis>. So, for "
+"instance, if <literal>RootDir</literal> is set to "
+"<filename>/tmp/staging</filename> and <literal>Dir::State::status</literal> "
+"is set to <filename>/var/lib/dpkg/status</filename>, then the status file "
+"will be looked up in <filename>/tmp/staging/var/lib/dpkg/status</filename>. "
+"If you want to prefix only relative paths, set <literal>Dir</literal> "
+"instead."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The <literal>Ignore-Files-Silently</literal> list can be used to specify "
+"which files APT should silently ignore while parsing the files in the "
+"fragment directories. Per default a file which end with "
+"<literal>.disabled</literal>, <literal>~</literal>, <literal>.bak</literal> "
+"or <literal>.dpkg-[a-z]+</literal> is silently ignored. As seen in the last "
+"default value these patterns can use regular expression syntax."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml:1
+msgid "APT in DSelect"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"When APT is used as a &dselect; method several configuration directives "
+"control the default behavior. These are in the <literal>DSelect</literal> "
+"section."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Cache Clean mode; this value may be one of <literal>always</literal>, "
+"<literal>prompt</literal>, <literal>auto</literal>, "
+"<literal>pre-auto</literal> and <literal>never</literal>. "
+"<literal>always</literal> and <literal>prompt</literal> will remove all "
+"packages from the cache after upgrading, <literal>prompt</literal> (the "
+"default) does so conditionally. <literal>auto</literal> removes only those "
+"packages which are no longer downloadable (replaced with a new version for "
+"instance). <literal>pre-auto</literal> performs this action before "
+"downloading new packages."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the install phase."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the update phase."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"If true the [U]pdate operation in &dselect; will always prompt to continue. "
+"The default is to prompt only on error."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml:1
+msgid "How APT calls &dpkg;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Several configuration directives control how APT invokes &dpkg;. These are "
+"in the <literal>DPkg</literal> section."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"This is a list of options to pass to &dpkg;. The options must be specified "
+"using the list notation and each list item is passed as a single argument to "
+"&dpkg;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"This is a list of shell commands to run before/after invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"This is a list of shell commands to run before invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort. APT will pass the filenames of all .deb files it is "
+"going to install to the commands, one per line on the requested file "
+"descriptor, defaulting to standard input."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Version 2 of this protocol sends more information through the requested file "
+"descriptor: a line with the text <literal>VERSION 2</literal>, the APT "
+"configuration space, and a list of package actions with filename and version "
+"information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Each configuration directive line has the form "
+"<literal>key=value</literal>. Special characters (equal signs, newlines, "
+"nonprintable characters, quotation marks, and percent signs in "
+"<literal>key</literal> and newlines, nonprintable characters, and percent "
+"signs in <literal>value</literal>) are %-encoded. Lists are represented by "
+"multiple <literal>key::=value</literal> lines with the same key. The "
+"configuration section ends with a blank line."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Package action lines consist of five fields in Version 2: package name "
+"(without architecture qualification even if foreign), old version, direction "
+"of version change (&lt; for upgrades, &gt; for downgrades, = for no change), "
+"new version, action. The version fields are \"-\" for no version at all (for "
+"example when installing a package for the first time; no version is treated "
+"as earlier than any real version, so that is an upgrade, indicated as "
+"<literal>- &lt; 1.23.4</literal>). The action field is \"**CONFIGURE**\" if "
+"the package is being configured, \"**REMOVE**\" if it is being removed, or "
+"the filename of a .deb file if it is being unpacked."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"In Version 3 after each version field follows the architecture of this "
+"version, which is \"-\" if there is no version, and a field showing the "
+"MultiArch type \"same\", \"foreign\", \"allowed\" or \"none\". Note that "
+"\"none\" is an incorrect typename which is just kept to remain compatible, "
+"it should be read as \"no\" and users are encouraged to support both."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The version of the protocol to be used for the command "
+"<literal><replaceable>cmd</replaceable></literal> can be chosen by setting "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::Version</literal> "
+"accordingly, the default being version 1. If APT isn't supporting the "
+"requested version it will send the information in the highest version it has "
+"support for instead."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"The file descriptor to be used to send the information can be requested with "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::InfoFD</literal> "
+"which defaults to <literal>0</literal> for standard input and is available "
+"since version 0.9.11. Support for the option can be detected by looking for "
+"the environment variable <envar>APT_HOOK_INFO_FD</envar> which contains the "
+"number of the used file descriptor as a confirmation."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"APT chdirs to this directory before invoking &dpkg;, the default is "
+"<filename>/</filename>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"These options are passed to &dpkg-buildpackage; when compiling packages; the "
+"default is to disable signing and produce all binaries."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"If this option is set APT will call <command>dpkg --configure "
+"--pending</command> to let &dpkg; handle all required configurations and "
+"triggers. This option is activated by default, but deactivating it could be "
+"useful if you want to run APT multiple times in a row - e.g. in an "
+"installer. In this scenario you could deactivate this option in all but the "
+"last run."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml:1
+msgid "Periodic and Archives options"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups "
+"of options configure behavior of apt periodic updates, which is done by the "
+"<literal>/usr/lib/apt/apt.systemd.daily</literal> script. See the top of "
+"this script for the brief documentation of these options."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml:1
+msgid "Debug options"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Enabling options in the <literal>Debug::</literal> section will cause "
+"debugging information to be sent to the standard error stream of the program "
+"utilizing the <literal>apt</literal> libraries, or enable special program "
+"modes that are primarily useful for debugging the behavior of "
+"<literal>apt</literal>. Most of these options are not interesting to a "
+"normal user, but a few may be:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"<literal>Debug::pkgProblemResolver</literal> enables output about the "
+"decisions made by <literal>dist-upgrade, upgrade, install, remove, "
+"purge</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"<literal>Debug::NoLocking</literal> disables all file locking. This can be "
+"used to run some operations (for instance, <literal>apt-get -s "
+"install</literal>) as a non-root user."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each "
+"time that <literal>apt</literal> invokes &dpkg;."
+msgstr ""
+
+#. TODO: provide a
+#. motivating example, except I haven't a clue why you'd want
+#. to do this.
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
+"in CD-ROM IDs."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid "A full list of debugging options to apt follows."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid "Print information related to accessing <literal>cdrom://</literal> sources."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid "Print information related to downloading packages using FTP."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid "Print information related to downloading packages using HTTP."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid "Print information related to downloading packages using HTTPS."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Print information related to verifying cryptographic signatures using "
+"<literal>gpg</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Output information about the process of accessing collections of packages "
+"stored on CD-ROMs."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid "Describes the process of resolving build-dependencies in &apt-get;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Output each cryptographic hash that is generated by the "
+"<literal>apt</literal> libraries."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Do not include information from <literal>statfs</literal>, namely the number "
+"of used and free blocks on the CD-ROM filesystem, when generating an ID for "
+"a CD-ROM."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Disable all file locking. For instance, this will allow two instances of "
+"<quote><literal>apt-get update</literal></quote> to run at the same time."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid "Log when items are added to or removed from the global download queue."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Output status messages and errors related to verifying checksums and "
+"cryptographic signatures of downloaded files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Output information about downloading and applying package index list diffs, "
+"and errors relating to package index list diffs."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Output information related to patching apt package lists when downloading "
+"index diffs instead of full indices."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid "Log all interactions with the sub-processes that actually perform downloads."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Log events related to the automatically-installed status of packages and to "
+"the removal of unused packages."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Generate debug messages describing which packages are being automatically "
+"installed to resolve dependencies. This corresponds to the initial "
+"auto-install pass performed in, e.g., <literal>apt-get install</literal>, "
+"and not to the full <literal>apt</literal> dependency resolver; see "
+"<literal>Debug::pkgProblemResolver</literal> for that."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Generate debug messages describing which packages are marked as "
+"keep/install/remove while the ProblemResolver does his work. Each addition "
+"or deletion may trigger additional actions; they are shown indented two "
+"additional spaces under the original entry. The format for each line is "
+"<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c "
+"-&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> "
+"is the current version of the package, <literal>d.e.f</literal> is the "
+"version considered for installation and <literal>x.y.z</literal> is a newer "
+"version, but not considered for installation (because of a low pin "
+"score). The later two can be omitted if there is none or if it is the same "
+"as the installed version. <literal>section</literal> is the name of the "
+"section the package appears in."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"When invoking &dpkg;, output the precise command line with which it is being "
+"invoked, with arguments separated by a single space character."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Output all the data received from &dpkg; on the status file descriptor and "
+"any errors encountered while parsing it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Generate a trace of the algorithm that decides the order in which "
+"<literal>apt</literal> should pass packages to &dpkg;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid "Output status messages tracing the steps performed when invoking &dpkg;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid "Output the priority of each package list on startup."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Trace the execution of the dependency resolver (this applies only to what "
+"happens when a complex dependency problem is encountered)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Display a list of all installed packages with their calculated score used by "
+"the pkgProblemResolver. The description of the package is the same as "
+"described in <literal>Debug::pkgDepCache::Marker</literal>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Print information about the vendors read from "
+"<filename>/etc/apt/vendors.list</filename>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:1
+msgid ""
+"Display the external commands that are called by apt hooks. This includes "
+"e.g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"<literal>APT::Update::{Pre,Post}-Invoke</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml:1 apt_preferences.5.xml:1 sources.list.5.xml:1
+#: apt-ftparchive.1.xml:1
+msgid "Examples"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid ""
+"&configureindex; is a configuration file showing example values for all "
+"possible options."
+msgstr ""
+
+#. ? reading apt.conf
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml:1
+msgid "&apt-cache;, &apt-config;, &apt-preferences;."
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt_preferences.5.xml:1
+msgid "Preference control file for APT"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"The APT preferences file <filename>/etc/apt/preferences</filename> and the "
+"fragment files in the <filename>/etc/apt/preferences.d/</filename> folder "
+"can be used to control which versions of packages will be selected for "
+"installation."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"Several versions of a package may be available for installation when the "
+"&sources-list; file contains references to more than one distribution (for "
+"example, <literal>stable</literal> and <literal>testing</literal>). APT "
+"assigns a priority to each version that is available. Subject to dependency "
+"constraints, <command>apt-get</command> selects the version with the highest "
+"priority for installation. The APT preferences override the priorities that "
+"APT assigns to package versions by default, thus giving the user control "
+"over which one is selected for installation."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"Several instances of the same version of a package may be available when the "
+"&sources-list; file contains references to more than one source. In this "
+"case <command>apt-get</command> downloads the instance listed earliest in "
+"the &sources-list; file. The APT preferences do not affect the choice of "
+"instance, only the choice of version."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"Preferences are a strong power in the hands of a system administrator but "
+"they can become also their biggest nightmare if used without care! APT will "
+"not question the preferences, so wrong settings can lead to uninstallable "
+"packages or wrong decisions while upgrading packages. Even more problems "
+"will arise if multiple distribution releases are mixed without a good "
+"understanding of the following paragraphs. Packages included in a specific "
+"release aren't tested in (and therefore don't always work as expected in) "
+"older or newer releases, or together with other packages from different "
+"releases. You have been warned."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"Note that the files in the <filename>/etc/apt/preferences.d</filename> "
+"directory are parsed in alphanumeric ascending order and need to obey the "
+"following naming convention: The files have either no or "
+"\"<literal>pref</literal>\" as filename extension and only contain "
+"alphanumeric, hyphen (-), underscore (_) and period (.) characters. "
+"Otherwise APT will print a notice that it has ignored a file, unless that "
+"file matches a pattern in the <literal>Dir::Ignore-Files-Silently</literal> "
+"configuration list - in which case it will be silently ignored."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml:1
+msgid "APT's Default Priority Assignments"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid ""
+"<command>apt-get install -t testing "
+"<replaceable>some-package</replaceable></command>\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid "APT::Default-Release \"stable\";\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"If there is no preferences file or if there is no entry in the file that "
+"applies to a particular version then the priority assigned to that version "
+"is the priority of the distribution to which that version belongs. It is "
+"possible to single out a distribution, \"the target release\", which "
+"receives a higher priority than other distributions do by default. The "
+"target release can be set on the <command>apt-get</command> command line or "
+"in the APT configuration file <filename>/etc/apt/apt.conf</filename>. Note "
+"that this has precedence over any general priority you set in the "
+"<filename>/etc/apt/preferences</filename> file described later, but not over "
+"specifically pinned packages. For example, <placeholder "
+"type=\"programlisting\" id=\"0\"/> <placeholder type=\"programlisting\" "
+"id=\"1\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"If the target release has been specified then APT uses the following "
+"algorithm to set the priorities of the versions of a package. Assign:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml:1
+msgid "priority 1"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"to the versions coming from archives which in their "
+"<filename>Release</filename> files are marked as \"NotAutomatic: yes\" but "
+"<emphasis>not</emphasis> as \"ButAutomaticUpgrades: yes\" like the Debian "
+"<literal>experimental</literal> archive."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml:1
+msgid "priority 100"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"to the version that is already installed (if any) and to the versions coming "
+"from archives which in their <filename>Release</filename> files are marked "
+"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the Debian "
+"backports archive since <literal>squeeze-backports</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml:1
+msgid "priority 500"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid "to the versions that do not belong to the target release."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml:1
+msgid "priority 990"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid "to the versions that belong to the target release."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"The highest of those priorities whose description matches the version is "
+"assigned to the version."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"If the target release has not been specified then APT simply assigns "
+"priority 100 to all installed package versions and priority 500 to all "
+"uninstalled package versions, except versions coming from archives which in "
+"their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" "
+"- these versions get the priority 1 or priority 100 if it is additionally "
+"marked as \"ButAutomaticUpgrades: yes\"."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"APT then applies the following rules, listed in order of precedence, to "
+"determine which version of a package to install."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"Never downgrade unless the priority of an available version exceeds 1000. "
+"(\"Downgrading\" is installing a less recent version of a package in place "
+"of a more recent version. Note that none of APT's default priorities "
+"exceeds 1000; such high priorities can only be set in the preferences file. "
+"Note also that downgrading a package can be risky.)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid "Install the highest priority version."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"If two or more versions have the same priority, install the most recent one "
+"(that is, the one with the higher version number)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"If two or more versions have the same priority and version number but either "
+"the packages differ in some of their metadata or the "
+"<literal>--reinstall</literal> option is given, install the uninstalled one."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"In a typical situation, the installed version of a package (priority 100) "
+"is not as recent as one of the versions available from the sources listed in "
+"the &sources-list; file (priority 500 or 990). Then the package will be "
+"upgraded when <command>apt-get install "
+"<replaceable>some-package</replaceable></command> or <command>apt-get "
+"upgrade</command> is executed."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"More rarely, the installed version of a package is <emphasis>more</emphasis> "
+"recent than any of the other available versions. The package will not be "
+"downgraded when <command>apt-get install "
+"<replaceable>some-package</replaceable></command> or <command>apt-get "
+"upgrade</command> is executed."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"Sometimes the installed version of a package is more recent than the version "
+"belonging to the target release, but not as recent as a version belonging to "
+"some other distribution. Such a package will indeed be upgraded when "
+"<command>apt-get install <replaceable>some-package</replaceable></command> "
+"or <command>apt-get upgrade</command> is executed, because at least "
+"<emphasis>one</emphasis> of the available versions has a higher priority "
+"than the installed version."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml:1
+msgid "The Effect of APT Preferences"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"The APT preferences file allows the system administrator to control the "
+"assignment of priorities. The file consists of one or more multi-line "
+"records separated by blank lines. Records can have one of two forms, a "
+"specific form and a general form."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"The specific form assigns a priority (a \"Pin-Priority\") to one or more "
+"specified packages with a specified version or version range. For example, "
+"the following record assigns a high priority to all versions of the "
+"<filename>perl</filename> package whose version number begins with "
+"\"<literal>&good-perl;</literal>\". Multiple packages can be separated by "
+"spaces."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"The general form assigns a priority to all of the package versions in a "
+"given distribution (that is, to all the versions of packages that are listed "
+"in a certain <filename>Release</filename> file) or to all of the package "
+"versions coming from a particular Internet site, as identified by the site's "
+"fully qualified domain name."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"This general-form entry in the APT preferences file applies only to groups "
+"of packages. For example, the following record assigns a high priority to "
+"all package versions available from the local site."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"A note of caution: the keyword used here is \"<literal>origin</literal>\" "
+"which can be used to match a hostname. The following record will assign a "
+"high priority to all versions available from the server identified by the "
+"hostname \"ftp.de.debian.org\""
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"This should <emphasis>not</emphasis> be confused with the Origin of a "
+"distribution as specified in a <filename>Release</filename> file. What "
+"follows the \"Origin:\" tag in a <filename>Release</filename> file is not an "
+"Internet address but an author or vendor name, such as \"Debian\" or "
+"\"Ximian\"."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"The following record assigns a low priority to all package versions "
+"belonging to any distribution whose Archive name is "
+"\"<literal>unstable</literal>\"."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any distribution whose Codename is "
+"\"<literal>&debian-testing-codename;</literal>\"."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any release whose Archive name is \"<literal>stable</literal>\" "
+"and whose release Version number is "
+"\"<literal>&debian-stable-version;</literal>\"."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"The effect of the comma operator is similar to an \"and\" in logic: All "
+"conditions must be satisfied for the pin to match. There is one exception: "
+"For any type of condition (such as two \"a\" conditions), only the last such "
+"condition is checked."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml:1
+msgid "Regular expressions and &glob; syntax"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"APT also supports pinning by &glob; expressions, and regular expressions "
+"surrounded by slashes. For example, the following example assigns the "
+"priority 500 to all packages from experimental where the name starts with "
+"gnome (as a &glob;-like expression) or contains the word kde (as a POSIX "
+"extended regular expression surrounded by slashes)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"The rule for those expressions is that they can occur anywhere where a "
+"string can occur. Thus, the following pin assigns the priority 990 to all "
+"packages from a release starting with &ubuntu-codename;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"If a regular expression occurs in a <literal>Package</literal> field, the "
+"behavior is the same as if this regular expression were replaced with a list "
+"of all package names it matches. It is undecided whether this will change in "
+"the future; thus you should always list wild-card pins first, so later "
+"specific pins override it. The pattern \"<literal>*</literal>\" in a "
+"Package field is not considered a &glob; expression in itself."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml:1
+msgid "How APT Interprets Priorities"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"Priorities (P) assigned in the APT preferences file must be positive or "
+"negative integers. They are interpreted as follows (roughly speaking):"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml:1
+msgid "P &gt;= 1000"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"causes a version to be installed even if this constitutes a downgrade of the "
+"package"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml:1
+msgid "990 &lt;= P &lt; 1000"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"causes a version to be installed even if it does not come from the target "
+"release, unless the installed version is more recent"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml:1
+msgid "500 &lt;= P &lt; 990"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to the target release or the installed version is more recent"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml:1
+msgid "100 &lt;= P &lt; 500"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to some other distribution or the installed version is more recent"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml:1
+msgid "0 &lt; P &lt; 100"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"causes a version to be installed only if there is no installed version of "
+"the package"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml:1
+msgid "P &lt; 0"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid "prevents the version from being installed"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml:1
+msgid "P = 0"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid "has undefined behaviour, do not use it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"The first specific-form record matching an available package version "
+"determines the priority of the package version. Failing that, the priority "
+"of the package is defined as the maximum of all priorities defined by "
+"generic-form records matching the version. Records defined using patterns "
+"in the Pin field other than \"*\" are treated like specific-form records."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"For example, suppose the APT preferences file contains the three records "
+"presented earlier:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid "Then:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"The most recent available version of the <literal>perl</literal> package "
+"will be installed, so long as that version's version number begins with "
+"\"<literal>&good-perl;</literal>\". If <emphasis>any</emphasis> "
+"&good-perl;* version of <literal>perl</literal> is available and the "
+"installed version is &bad-perl;*, then <literal>perl</literal> will be "
+"downgraded."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"A version of any package other than <literal>perl</literal> that is "
+"available from the local system has priority over other versions, even "
+"versions belonging to the target release."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"A version of a package whose origin is not the local system but some other "
+"site listed in &sources-list; and which belongs to an "
+"<literal>unstable</literal> distribution is only installed if it is selected "
+"for installation and no version of the package is already installed."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml:1
+msgid "Determination of Package Version and Distribution Properties"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"The locations listed in the &sources-list; file should provide "
+"<filename>Packages</filename> and <filename>Release</filename> files to "
+"describe the packages available at that location."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"The <filename>Packages</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable>/<replaceable>component</replaceable>/<replaceable>arch</replaceable></filename>: "
+"for example, "
+"<filename>.../dists/stable/main/binary-i386/Packages</filename>. It "
+"consists of a series of multi-line records, one for each package available "
+"in that directory. Only two lines in each record are relevant for setting "
+"APT priorities:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml:1
+msgid "the <literal>Package:</literal> line"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid "gives the package name"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml:1 apt_preferences.5.xml:1
+msgid "the <literal>Version:</literal> line"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid "gives the version number for the named package"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"The <filename>Release</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable></filename>: for "
+"example, <filename>.../dists/stable/Release</filename>, or "
+"<filename>.../dists/&debian-stable-codename;/Release</filename>. It "
+"consists of a single multi-line record which applies to "
+"<emphasis>all</emphasis> of the packages in the directory tree below its "
+"parent. Unlike the <filename>Packages</filename> file, nearly all of the "
+"lines in a <filename>Release</filename> file are relevant for setting APT "
+"priorities:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml:1
+msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"names the archive to which all the packages in the directory tree belong. "
+"For example, the line \"Archive: stable\" or \"Suite: stable\" specifies "
+"that all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file are in a <literal>stable</literal> "
+"archive. Specifying this value in the APT preferences file would require "
+"the line:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid "Pin: release a=stable\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml:1
+msgid "the <literal>Codename:</literal> line"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"names the codename to which all the packages in the directory tree belong. "
+"For example, the line \"Codename: &debian-testing-codename;\" specifies that "
+"all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file belong to a version named "
+"<literal>&debian-testing-codename;</literal>. Specifying this value in the "
+"APT preferences file would require the line:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid "Pin: release n=&debian-testing-codename;\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"names the release version. For example, the packages in the tree might "
+"belong to Debian release version &debian-stable-version;. Note that there "
+"is normally no version number for the <literal>testing</literal> and "
+"<literal>unstable</literal> distributions because they have not been "
+"released yet. Specifying this in the APT preferences file would require one "
+"of the following lines."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml:1
+msgid "the <literal>Component:</literal> line"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"names the licensing component associated with the packages in the directory "
+"tree of the <filename>Release</filename> file. For example, the line "
+"\"Component: main\" specifies that all the packages in the directory tree "
+"are from the <literal>main</literal> component, which entails that they are "
+"licensed under terms listed in the Debian Free Software Guidelines. "
+"Specifying this component in the APT preferences file would require the "
+"line:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid "Pin: release c=main\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml:1
+msgid "the <literal>Origin:</literal> line"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"names the originator of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is "
+"<literal>Debian</literal>. Specifying this origin in the APT preferences "
+"file would require the line:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid "Pin: release o=Debian\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml:1
+msgid "the <literal>Label:</literal> line"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml:1
+msgid ""
+"names the label of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is "
+"<literal>Debian</literal>. Specifying this label in the APT preferences "
+"file would require the line:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid "Pin: release l=Debian\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"All of the <filename>Packages</filename> and <filename>Release</filename> "
+"files retrieved from locations listed in the &sources-list; file are stored "
+"in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
+"named by the variable <literal>Dir::State::Lists</literal> in the "
+"<filename>apt.conf</filename> file. For example, the file "
+"<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
+"contains the <filename>Release</filename> file retrieved from the site "
+"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
+"architecture files from the <literal>contrib</literal> component of the "
+"<literal>unstable</literal> distribution."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml:1
+msgid "Optional Lines in an APT Preferences Record"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"Each record in the APT preferences file can optionally begin with one or "
+"more lines beginning with the word <literal>Explanation:</literal>. This "
+"provides a place for comments."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml:1
+msgid "Tracking Stable"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated\n"
+"Explanation: package versions other than those in the stable distro\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"<literal>stable</literal> distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> "
+"distributions. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml:1 apt_preferences.5.xml:1 apt_preferences.5.xml:1
+#, no-wrap
+msgid ""
+"apt-get install <replaceable>package-name</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>stable</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/testing\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>testing</literal> distribution; the package "
+"will not be upgraded again unless this command is given again. <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml:1
+msgid "Tracking Testing or Unstable"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"The following APT preferences file will cause APT to assign a high priority "
+"to package versions from the <literal>testing</literal> distribution, a "
+"lower priority to package versions from the <literal>unstable</literal> "
+"distribution, and a prohibitively low priority to package versions from "
+"other <literal>Debian</literal> distributions. <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>testing</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/unstable\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>unstable</literal> distribution. "
+"Thereafter, <command>apt-get upgrade</command> will upgrade the package to "
+"the most recent <literal>testing</literal> version if that is more recent "
+"than the installed version, otherwise, to the most recent "
+"<literal>unstable</literal> version if that is more recent than the "
+"installed version. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml:1
+msgid "Tracking the evolution of a codename release"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated package "
+"versions\n"
+"Explanation: other than those in the distribution codenamed with "
+"&debian-testing-codename; or sid\n"
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+"\n"
+"Explanation: Debian unstable is always codenamed with sid\n"
+"Package: *\n"
+"Pin: release n=sid\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"specified codename of a distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> distributions, "
+"codenames and archives. Note that with this APT preference APT will follow "
+"the migration of a release from the archive <literal>testing</literal> to "
+"<literal>stable</literal> and later <literal>oldstable</literal>. If you "
+"want to follow for example the progress in <literal>testing</literal> "
+"notwithstanding the codename changes you should use the example "
+"configurations above. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest version(s) in "
+"the release codenamed with <literal>&debian-testing-codename;</literal>. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml:1
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/sid\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml:1
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>sid</literal> distribution. Thereafter, "
+"<command>apt-get upgrade</command> will upgrade the package to the most "
+"recent <literal>&debian-testing-codename;</literal> version if that is more "
+"recent than the installed version, otherwise, to the most recent "
+"<literal>sid</literal> version if that is more recent than the installed "
+"version. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml:1
+msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: sources.list.5.xml:1
+msgid "List of configured APT data sources"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"The source list <filename>/etc/apt/sources.list</filename> and the files "
+"contained in <filename>/etc/apt/sources.list.d/</filename> are designed to "
+"support any number of active sources and a variety of source media. The "
+"files list one source per line (one-line style) or contain multiline stanzas "
+"defining one or more sources per stanza (deb822 style), with the most "
+"preferred source listed first (in case a single version is available from "
+"more than one source). The information available from the configured sources "
+"is acquired by <command>apt-get update</command> (or by an equivalent "
+"command from another APT front-end)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml:1
+msgid "sources.list.d"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"The <filename>/etc/apt/sources.list.d</filename> directory provides a way to "
+"add sources.list entries in separate files. Two different file formats are "
+"allowed as described in the next two sections. Filenames need to have "
+"either the extension <filename>.list</filename> or "
+"<filename>.sources</filename> depending on the contained format. The "
+"filenames may only contain letters (a-z and A-Z), digits (0-9), underscore "
+"(_), hyphen (-) and period (.) characters. Otherwise APT will print a "
+"notice that it has ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml:1
+msgid "One-Line-Style Format"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"Files in this format have the extension <filename>.list</filename>. Each "
+"line specifying a source starts with a type "
+"(e.g. <literal>deb-src</literal>) followed by options and arguments for "
+"this type. Individual entries cannot be continued onto a following "
+"line. Empty lines are ignored, and a <literal>#</literal> character anywhere "
+"on a line marks the remainder of that line as a comment. Consequently an "
+"entry can be disabled by commenting out the entire line. If options should "
+"be provided they are separated by spaces and all of them together are "
+"enclosed by square brackets (<literal>[]</literal>) included in the line "
+"after the type separated from it with a space. If an option allows multiple "
+"values these are separated from each other with a comma "
+"(<literal>,</literal>). An option name is separated from its value(s) by an "
+"equals sign (<literal>=</literal>). Multivalue options also have "
+"<literal>-=</literal> and <literal>+=</literal> as separators, which instead "
+"of replacing the default with the given value(s) modify the default value(s) "
+"to remove or include the given values."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"This is the traditional format and supported by all apt versions. Note that "
+"not all options as described below are supported by all apt versions. Note "
+"also that some older applications parsing this format on their own might not "
+"expect to encounter options as they were uncommon before the introduction of "
+"multi-architecture support."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml:1
+msgid "deb822-Style Format"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"Files in this format have the extension <filename>.sources</filename>. The "
+"format is similar in syntax to other files used by Debian and its "
+"derivatives, such as the metadata files that apt will download from the "
+"configured sources or the <filename>debian/control</filename> file in a "
+"Debian source package. Individual entries are separated by an empty line; "
+"additional empty lines are ignored, and a <literal>#</literal> character at "
+"the start of the line marks the entire line as a comment. An entry can hence "
+"be disabled by commenting out each line belonging to the stanza, but it is "
+"usually easier to add the field \"Enabled: no\" to the stanza to disable the "
+"entry. Removing the field or setting it to yes reenables it. Options have "
+"the same syntax as every other field: A fieldname separated by a colon "
+"(<literal>:</literal>) and optionally spaces from its value(s). Note "
+"especially that multiple values are separated by spaces, not by commas as in "
+"the one-line format. Multivalue fields like <literal>Architectures</literal> "
+"also have <literal>Architectures-Add</literal> and "
+"<literal>Architectures-Remove</literal> to modify the default value rather "
+"than replacing it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"This is a new format supported by apt itself since version 1.1. Previous "
+"versions ignore such files with a notice message as described earlier. It "
+"is intended to make this format gradually the default format, deprecating "
+"the previously described one-line-style format, as it is easier to create, "
+"extend and modify for humans and machines alike especially if a lot of "
+"sources and/or options are involved. Developers who are working with and/or "
+"parsing apt sources are highly encouraged to add support for this format and "
+"to contact the APT team to coordinate and share this work. Users can freely "
+"adopt this format already, but may encounter problems with software not "
+"supporting the format yet."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml:1
+msgid "The deb and deb-src Types: General Format"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"The <literal>deb</literal> type references a typical two-level Debian "
+"archive, <filename>distribution/component</filename>. The "
+"<literal>distribution</literal> is generally a suite name like "
+"<literal>stable</literal> or <literal>testing</literal> or a codename like "
+"<literal>&debian-stable-codename;</literal> or "
+"<literal>&debian-testing-codename;</literal> while component is one of "
+"<literal>main</literal>, <literal>contrib</literal> or "
+"<literal>non-free</literal>. The <literal>deb-src</literal> type references "
+"a Debian distribution's source code in the same form as the "
+"<literal>deb</literal> type. A <literal>deb-src</literal> line is required "
+"to fetch source indexes."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"The format for two one-line-style entries using the <literal>deb</literal> "
+"and <literal>deb-src</literal> types is:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid ""
+"deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] "
+"[...]\n"
+"deb-src [ option1=value1 option2=value2 ] uri suite [component1] "
+"[component2] [...]"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid ""
+" Types: deb deb-src\n"
+" URIs: uri\n"
+" Suites: suite\n"
+" Components: [component1] [component2] [...]\n"
+" option1: value1\n"
+" option2: value2\n"
+" "
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"Alternatively the equivalent entry in deb822 style looks like this: "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"The URI for the <literal>deb</literal> type must specify the base of the "
+"Debian distribution, from which APT will find the information it needs. "
+"<literal>suite</literal> can specify an exact path, in which case the "
+"components must be omitted and <literal>suite</literal> must end with a "
+"slash (<literal>/</literal>). This is useful for the case when only a "
+"particular sub-directory of the archive denoted by the URI is of interest. "
+"If <literal>suite</literal> does not specify an exact path, at least one "
+"<literal>component</literal> must be present."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"<literal>suite</literal> may also contain a variable, "
+"<literal>$(ARCH)</literal> which expands to the Debian architecture (such as "
+"<literal>amd64</literal> or <literal>armel</literal>) used on the "
+"system. This permits architecture-independent "
+"<filename>sources.list</filename> files to be used. In general this is only "
+"of interest when specifying an exact path; <literal>APT</literal> will "
+"automatically generate a URI with the current architecture otherwise."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"Especially in the one-line-style format since only one distribution can be "
+"specified per line it may be necessary to have multiple lines for the same "
+"URI, if a subset of all available distributions or components at that "
+"location is desired. APT will sort the URI list after it has generated a "
+"complete set internally, and will collapse multiple references to the same "
+"Internet host, for instance, into a single connection, so that it does not "
+"inefficiently establish a connection, close it, do something else, and then "
+"re-establish a connection to that same host. APT also parallelizes "
+"connections to different hosts to more effectively deal with sites with low "
+"bandwidth."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"It is important to list sources in order of preference, with the most "
+"preferred source listed first. Typically this will result in sorting by "
+"speed from fastest to slowest (CD-ROM followed by hosts on a local network, "
+"followed by distant Internet hosts, for example)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid "&sourceslist-list-format;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid "&sourceslist-sources-format;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"As an example, the sources for your distribution could look like this in "
+"one-line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or "
+"like this in deb822 style format: <placeholder type=\"literallayout\" "
+"id=\"1\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml:1
+msgid "The deb and deb-src types: Options"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"Each source entry can have options specified to modify which source is "
+"accessed and how data is acquired from it. Format, syntax and names of the "
+"options vary between the one-line-style and deb822-style formats as "
+"described, but they both have the same options available. For simplicity we "
+"list the deb822 fieldname and provide the one-line name in brackets. "
+"Remember that besides setting multivalue options explicitly, there is also "
+"the option to modify them based on the default, but we aren't listing those "
+"names explicitly here. Unsupported options are silently ignored by all APT "
+"versions."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml:1
+msgid ""
+"<option>Architectures</option> (<option>arch</option>) is a multivalue "
+"option defining for which architectures information should be downloaded. If "
+"this option isn't set the default is all architectures as defined by the "
+"<option>APT::Architectures</option> config option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml:1
+msgid ""
+"<option>Languages</option> (<option>lang</option>) is a multivalue option "
+"defining for which languages information such as translated package "
+"descriptions should be downloaded. If this option isn't set the default is "
+"all languages as defined by the <option>Acquire::Languages</option> config "
+"option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml:1
+msgid ""
+"<option>Targets</option> (<option>target</option>) is a multivalue option "
+"defining which download targets apt will try to acquire from this source. If "
+"not specified, the default set is defined by the "
+"<option>Acquire::IndexTargets</option> configuration scope (targets are "
+"specified by their name in the <literal>Created-By</literal> field). "
+"Additionally, targets can be enabled or disabled by using the "
+"<literal>Identifier</literal> field as an option with a boolean value "
+"instead of using this multivalue option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml:1
+msgid ""
+"<option>PDiffs</option> (<option>pdiffs</option>) is a yes/no value which "
+"controls if APT should try to use PDiffs to update old indexes instead of "
+"downloading the new indexes entirely. The value of this option is ignored if "
+"the repository doesn't announce the availability of PDiffs. Defaults to the "
+"value of the option with the same name for a specific index file defined in "
+"the <option>Acquire::IndexTargets</option> scope, which itself defaults to "
+"the value of configuration option <option>Acquire::PDiffs</option> which "
+"defaults to <literal>yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml:1
+msgid ""
+"<option>By-Hash</option> (<option>by-hash</option>) can have the value "
+"<literal>yes</literal>, <literal>no</literal> or <literal>force</literal> "
+"and controls if APT should try to acquire indexes via a URI constructed from "
+"a hashsum of the expected file instead of using the well-known stable "
+"filename of the index. Using this can avoid hashsum mismatches, but requires "
+"a supporting mirror. A <literal>yes</literal> or <literal>no</literal> value "
+"activates/disables the use of this feature if this source indicates support "
+"for it, while <literal>force</literal> will enable the feature regardless of "
+"what the source indicates. Defaults to the value of the option of the same "
+"name for a specific index file defined in the "
+"<option>Acquire::IndexTargets</option> scope, which itself defaults to the "
+"value of configuration option <option>Acquire::By-Hash</option> which "
+"defaults to <literal>yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"Furthermore, there are options which if set affect <emphasis>all</emphasis> "
+"sources with the same URI and Suite, so they have to be set on all such "
+"entries and can not be varied between different components. APT will try to "
+"detect and error out on such anomalies."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml:1
+msgid ""
+"<option>Allow-Insecure</option> (<option>allow-insecure</option>), "
+"<option>Allow-Weak</option> (<option>allow-weak</option>) and "
+"<option>Allow-Downgrade-To-Insecure</option> "
+"(<option>allow-downgrade-to-insecure</option>) are boolean values which all "
+"default to <literal>no</literal>. If set to <literal>yes</literal> they "
+"circumvent parts of &apt-secure; and should therefore not be used lightly!"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml:1
+msgid ""
+"<option>Trusted</option> (<option>trusted</option>) is a tri-state value "
+"which defaults to APT deciding if a source is considered trusted or if "
+"warnings should be raised before e.g. packages are installed from this "
+"source. This option can be used to override that decision. The value "
+"<literal>yes</literal> tells APT always to consider this source as trusted, "
+"even if it doesn't pass authentication checks. It disables parts of "
+"&apt-secure;, and should therefore only be used in a local and trusted "
+"context (if at all) as otherwise security is breached. The value "
+"<literal>no</literal> does the opposite, causing the source to be handled as "
+"untrusted even if the authentication checks passed successfully. The default "
+"value can't be set explicitly."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml:1
+msgid ""
+"<option>Signed-By</option> (<option>signed-by</option>) is either an "
+"absolute path to a keyring file (has to be accessible and readable for the "
+"<literal>_apt</literal> user, so ensure everyone has read-permissions on the "
+"file) or one or more fingerprints of keys either in the "
+"<filename>trusted.gpg</filename> keyring or in the keyrings in the "
+"<filename>trusted.gpg.d/</filename> directory (see <command>apt-key "
+"fingerprint</command>). If the option is set, only the key(s) in this "
+"keyring or only the keys with these fingerprints are used for the "
+"&apt-secure; verification of this repository. Defaults to the value of the "
+"option with the same name if set in the previously acquired "
+"<filename>Release</filename> file. Otherwise all keys in the trusted "
+"keyrings are considered valid signers for this repository."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml:1
+msgid ""
+"<option>Check-Valid-Until</option> (<option>check-valid-until</option>) is "
+"a yes/no value which controls if APT should try to detect replay attacks. A "
+"repository creator can declare a time until which the data provided in the "
+"repository should be considered valid, and if this time is reached, but no "
+"new data is provided, the data is considered expired and an error is "
+"raised. Besides increasing security, as a malicious attacker can't send old "
+"data forever to prevent a user from upgrading to a new version, this also "
+"helps users identify mirrors which are no longer updated. However, some "
+"repositories such as historic archives are not updated any more by design, "
+"so this check can be disabled by setting this option to "
+"<literal>no</literal>. Defaults to the value of configuration option "
+"<option>Acquire::Check-Valid-Until</option> which itself defaults to "
+"<literal>yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml:1
+msgid ""
+"<option>Valid-Until-Min</option> (<option>valid-until-min</option>) and "
+"<option>Valid-Until-Max</option> (<option>valid-until-max</option>) can be "
+"used to raise or lower the time period in seconds in which the data from "
+"this repository is considered valid. -Max can be especially useful if the "
+"repository provides no Valid-Until field on its Release file to set your own "
+"value, while -Min can be used to increase the valid time on seldom updated "
+"(local) mirrors of a more frequently updated but less accessible archive "
+"(which is in the sources.list as well) instead of disabling the check "
+"entirely. Default to the value of the configuration options "
+"<option>Acquire::Min-ValidTime</option> and "
+"<option>Acquire::Max-ValidTime</option> which are both unset by default."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml:1
+msgid "URI Specification"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid "The currently recognized URI types are:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml:1
+msgid ""
+"The file scheme allows an arbitrary directory in the file system to be "
+"considered an archive. This is useful for NFS mounts and local mirrors or "
+"archives."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml:1
+msgid ""
+"The cdrom scheme allows APT to use a local CD-ROM drive with media "
+"swapping. Use the &apt-cdrom; program to create cdrom entries in the source "
+"list."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml:1
+msgid ""
+"The http scheme specifies an HTTP server for the archive. If an environment "
+"variable <envar>http_proxy</envar> is set with the format "
+"http://server:port/, the proxy server specified in <envar>http_proxy</envar> "
+"will be used. Users of authenticated HTTP/1.1 proxies may use a string of "
+"the format http://user:pass@server:port/. Note that this is an insecure "
+"method of authentication."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml:1
+msgid ""
+"The ftp scheme specifies an FTP server for the archive. APT's FTP behavior "
+"is highly configurable; for more information see the &apt-conf; manual "
+"page. Please note that an FTP proxy can be specified by using the "
+"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
+"HTTP proxy (HTTP proxy servers often understand FTP URLs) using this "
+"environment variable and <emphasis>only</emphasis> this environment "
+"variable. Proxies using HTTP specified in the configuration file will be "
+"ignored."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml:1
+msgid ""
+"The copy scheme is identical to the file scheme except that packages are "
+"copied into the cache directory instead of used directly at their location. "
+"This is useful for people using removable media to copy files around with "
+"APT."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml:1
+msgid ""
+"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
+"the files as a given user. Prior configuration of rhosts or RSA keys is "
+"recommended. The standard <command>find</command> and <command>dd</command> "
+"commands are used to perform the file transfers from the remote host."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
+#: sources.list.5.xml:1
+msgid "adding more recognizable URI types"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml:1
+msgid ""
+"APT can be extended with more methods shipped in other optional packages, "
+"which should follow the naming scheme "
+"<package>apt-transport-<replaceable>method</replaceable></package>. For "
+"instance, the APT team also maintains the package "
+"<package>apt-transport-https</package>, which provides access methods for "
+"HTTPS URIs with features similar to the http method. Methods for using "
+"e.g. debtorrent are also available - see &apt-transport-debtorrent;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"Uses the archive stored locally (or NFS mounted) at /home/apt/debian for "
+"stable/main, stable/contrib, and stable/non-free."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid "deb file:/home/apt/debian stable main contrib non-free"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: stable\n"
+"Components: main contrib non-free"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid "As above, except this uses the unstable (development) distribution."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid "deb file:/home/apt/debian unstable main contrib non-free"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid "Sources specification for the above."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid "deb-src file:/home/apt/debian unstable main contrib non-free"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid ""
+"Types: deb-src\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"The first line gets package information for the architectures in "
+"<literal>APT::Architectures</literal> while the second always retrieves "
+"<literal>amd64</literal> and <literal>armel</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://deb.debian.org/debian "
+"&debian-stable-codename; main"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"\n"
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"Architectures: amd64 armel\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"Uses HTTP to access the archive at archive.debian.org, and uses only the "
+"hamm/main area."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid "deb http://archive.debian.org/debian-archive hamm main"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://archive.debian.org/debian-archive\n"
+"Suites: hamm\n"
+"Components: main"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the &debian-stable-codename;/contrib area."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: contrib"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the unstable/contrib area. If this line appears as "
+"well as the one in the previous example in <filename>sources.list</filename> "
+"a single FTP session will be used for both resource lines."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian unstable contrib"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: unstable\n"
+"Components: contrib"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://ftp.tlh.debian.org/universe\n"
+"Suites: unstable/binary-$(ARCH)/"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe "
+"directory, and uses only files found under "
+"<filename>unstable/binary-i386</filename> on i386 machines, "
+"<filename>unstable/binary-amd64</filename> on amd64, and so forth for other "
+"supported architectures. [Note this example only illustrates how to use the "
+"substitution variable; official debian archives are not structured like "
+"this] <placeholder type=\"literallayout\" id=\"0\"/> <placeholder "
+"type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid ""
+"Uses HTTP to get binary packages as well as sources from the stable, testing "
+"and unstable suites and the components main and contrib."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian stable main contrib\n"
+"deb-src http://deb.debian.org/debian stable main contrib\n"
+"deb http://deb.debian.org/debian testing main contrib\n"
+"deb-src http://deb.debian.org/debian testing main contrib\n"
+"deb http://deb.debian.org/debian unstable main contrib\n"
+"deb-src http://deb.debian.org/debian unstable main contrib"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml:1
+#, no-wrap
+msgid ""
+"Types: deb deb-src\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: stable testing unstable\n"
+"Components: main contrib\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml:1
+msgid "&apt-get;, &apt-conf;, &apt-acquire-additional-files;"
+msgstr ""
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt-extracttemplates.1.xml:1 apt-sortpkgs.1.xml:1 apt-ftparchive.1.xml:1
+msgid "1"
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-extracttemplates.1.xml:1
+msgid ""
+"Utility to extract <command>debconf</command> config and templates from "
+"Debian packages"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml:1
+msgid ""
+"<command>apt-extracttemplates</command> will take one or more Debian package "
+"files as input and write out (to a temporary directory) all associated "
+"config scripts and template files. For each passed in package that contains "
+"config scripts and templates, one line of output will be generated in the "
+"format:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml:1
+msgid "package version template-file config-script"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml:1
+msgid ""
+"template-file and config-script are written to the temporary directory "
+"specified by the <option>-t</option> or <option>--tempdir</option> "
+"(<literal>APT::ExtractTemplates::TempDir</literal>) directory, with "
+"filenames of the form <filename>package.template.XXXXXX</filename> and "
+"<filename>package.config.XXXXXX</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-extracttemplates.1.xml:1
+msgid ""
+"Temporary directory in which to write extracted <command>debconf</command> "
+"template files and config scripts. Configuration Item: "
+"<literal>APT::ExtractTemplates::TempDir</literal>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml:1
+msgid ""
+"<command>apt-extracttemplates</command> returns zero on normal operation, "
+"decimal 100 on error."
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-sortpkgs.1.xml:1
+msgid "Utility to sort package index files"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml:1
+msgid ""
+"<command>apt-sortpkgs</command> will take an index file (source index or "
+"package index) and sort the records so that they are ordered by the package "
+"name. It will also sort the internal fields of each record according to the "
+"internal sorting rules."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml:1
+msgid "All output is sent to standard output; the input must be a seekable file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-sortpkgs.1.xml:1
+msgid ""
+"Use source index field ordering. Configuration Item: "
+"<literal>APT::SortPkgs::Source</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml:1
+msgid ""
+"<command>apt-sortpkgs</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-ftparchive.1.xml:1
+msgid "Utility to generate index files"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"<command>apt-ftparchive</command> is the command line tool that generates "
+"the index files that APT uses to access a distribution source. The index "
+"files should be generated on the origin site based on the content of that "
+"site."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"<command>apt-ftparchive</command> is a superset of the &dpkg-scanpackages; "
+"program, incorporating its entire functionality via the "
+"<literal>packages</literal> command. It also contains a contents file "
+"generator, <literal>contents</literal>, and an elaborate means to 'script' "
+"the generation process for a complete archive."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Internally <command>apt-ftparchive</command> can make use of binary "
+"databases to cache the contents of a .deb file and it does not rely on any "
+"external programs aside from &gzip;. When doing a full generate it "
+"automatically performs file-change checks and builds the desired compressed "
+"output files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"The packages command generates a package file from a directory tree. It "
+"takes the given directory and recursively searches it for .deb files, "
+"emitting a package record to stdout for each. This command is approximately "
+"equivalent to &dpkg-scanpackages;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1 apt-ftparchive.1.xml:1
+msgid "The option <option>--db</option> can be used to specify a binary caching DB."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"The <literal>sources</literal> command generates a source index file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .dsc files, emitting a source record to stdout for each. This command is "
+"approximately equivalent to &dpkg-scansources;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"If an override file is specified then a source override file will be looked "
+"for with an extension of .src. The --source-override option can be used to "
+"change the source override file that will be used."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"The <literal>contents</literal> command generates a contents file from a "
+"directory tree. It takes the given directory and recursively searches it for "
+".deb files, and reads the file list from each file. It then sorts and writes "
+"to stdout the list of files matched to packages. Directories are not written "
+"to the output. If multiple packages own the same file then each package is "
+"separated by a comma in the output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"The <literal>release</literal> command generates a Release file from a "
+"directory tree. It recursively searches the given directory for uncompressed "
+"and compressed <filename>Packages</filename>, <filename>Sources</filename>, "
+"<filename>Contents</filename>, <filename>Components</filename> and "
+"<filename>icons</filename> files as well as <filename>Release</filename>, "
+"<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
+"default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>). "
+"Additional filename patterns can be added by listing them in "
+"<literal>APT::FTPArchive::Release::Patterns</literal>. It then writes to "
+"stdout a <filename>Release</filename> file containing (by default) an MD5, "
+"SHA1, SHA256 and SHA512 digest for each file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Values for the additional metadata fields in the Release file are taken from "
+"the corresponding variables under "
+"<literal>APT::FTPArchive::Release</literal>, "
+"e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The supported "
+"fields are <literal>Origin</literal>, <literal>Label</literal>, "
+"<literal>Suite</literal>, <literal>Version</literal>, "
+"<literal>Codename</literal>, <literal>Date</literal>, "
+"<literal>NotAutomatic</literal>, <literal>ButAutomaticUpgrades</literal>, "
+"<literal>Acquire-By-Hash</literal>, <literal>Valid-Until</literal>, "
+"<literal>Signed-By</literal>, <literal>Architectures</literal>, "
+"<literal>Components</literal> and <literal>Description</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"The <literal>generate</literal> command is designed to be runnable from a "
+"cron script and builds indexes according to the given config file. The "
+"config language provides a flexible means of specifying which index files "
+"are built from which directories, as well as providing a simple means of "
+"maintaining the required settings."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"The <literal>clean</literal> command tidies the databases used by the given "
+"configuration file by removing any records that are no longer necessary."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml:1
+msgid "The Generate Configuration"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"The <literal>generate</literal> command uses a configuration file to "
+"describe the archives that are going to be generated. It follows the typical "
+"ISC configuration format as seen in ISC tools like bind 8 and dhcpd. "
+"&apt-conf; contains a description of the syntax. Note that the generate "
+"configuration is parsed in sectional manner, but &apt-conf; is parsed in a "
+"tree manner. This only effects how the scope tag is handled."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml:1
+msgid "The generate configuration has four separate sections, each described below."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml:1
+msgid "<literal>Dir</literal> Section"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"The <literal>Dir</literal> section defines the standard directories needed "
+"to locate the files required during the generation process. These "
+"directories are prepended certain relative paths defined in later sections "
+"to produce a complete an absolute path."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Specifies the root of the FTP archive, in a standard Debian configuration "
+"this is the directory that contains the <filename>ls-LR</filename> and dist "
+"nodes."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid "Specifies the location of the override files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid "Specifies the location of the cache files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Specifies the location of the file list files, if the "
+"<literal>FileList</literal> setting is used below."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml:1
+msgid "<literal>Default</literal> Section"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"The <literal>Default</literal> section specifies default values, and "
+"settings that control the operation of the generator. Other sections may "
+"override these defaults with a per-section setting."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Sets the default compression schemes to use for the package index files. It "
+"is a string that contains a space separated list of at least one of the "
+"compressors configured via the <option>APT::Compressor</option> "
+"configuration scope. The default for all compression schemes is '. gzip'."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Sets the default list of file extensions that are package files. This "
+"defaults to '.deb'."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Sources files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Sets the default list of file extensions that are source files. This "
+"defaults to '.dsc'."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Contents files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Translation-en master file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Specifies the number of kilobytes to delink (and replace with hard links) "
+"per run. This is used in conjunction with the per-section "
+"<literal>External-Links</literal> setting."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Specifies the mode of all created index files. It defaults to 0644. All "
+"index files are set to this mode with no regard to the umask."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1 apt-ftparchive.1.xml:1
+msgid ""
+"Specifies whether long descriptions should be included in the "
+"<filename>Packages</filename> file or split out into a master "
+"<filename>Translation-en</filename> file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml:1
+msgid "<literal>TreeDefault</literal> Section"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Sets defaults specific to <literal>Tree</literal> sections. All of these "
+"variables are substitution variables and have the strings $(DIST), "
+"$(SECTION) and $(ARCH) replaced with their respective values."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Sets the number of kilobytes of contents files that are generated each "
+"day. The contents files are round-robined so that over several days they "
+"will all be rebuilt."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Controls the number of days a contents file is allowed to be checked without "
+"changing. If this limit is passed the mtime of the contents file is "
+"updated. This case can occur if the package file is changed in such a way "
+"that does not result in a new contents file [override edit for instance]. A "
+"hold off is allowed in hopes that new .debs will be installed, requiring a "
+"new file anyhow. The default is 10, the units are in days."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Sets the top of the .deb directory tree. Defaults to "
+"<filename>$(DIST)/$(SECTION)/binary-$(ARCH)/</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Sets the top of the source package directory tree. Defaults to "
+"<filename>$(DIST)/$(SECTION)/source/</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Sets the output Packages file. Defaults to "
+"<filename>$(DIST)/$(SECTION)/binary-$(ARCH)/Packages</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Sets the output Sources file. Defaults to "
+"<filename>$(DIST)/$(SECTION)/source/Sources</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Sets the output Translation-en master file with the long descriptions if "
+"they should be not included in the Packages file. Defaults to "
+"<filename>$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Sets the path prefix that causes a symlink to be considered an internal link "
+"instead of an external link. Defaults to "
+"<filename>$(DIST)/$(SECTION)/</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Sets the output Contents file. Defaults to "
+"<filename>$(DIST)/$(SECTION)/Contents-$(ARCH)</filename>. If this setting "
+"causes multiple Packages files to map onto a single Contents file (as is the "
+"default) then <command>apt-ftparchive</command> will integrate those "
+"package files together automatically."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid "Sets header file to prepend to the contents output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Sets the binary cache database to use for this section. Multiple sections "
+"can share the same database."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Specifies that instead of walking the directory tree, "
+"<command>apt-ftparchive</command> should read the list of files from the "
+"given file. Relative files names are prefixed with the archive directory."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Specifies that instead of walking the directory tree, "
+"<command>apt-ftparchive</command> should read the list of files from the "
+"given file. Relative files names are prefixed with the archive directory. "
+"This is used when processing source indexes."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml:1
+msgid "<literal>Tree</literal> Section"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"The <literal>Tree</literal> section defines a standard Debian file tree "
+"which consists of a base directory, then multiple sections in that base "
+"directory and finally multiple Architectures in each section. The exact "
+"pathing used is defined by the <literal>Directory</literal> substitution "
+"variable."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"The <literal>Tree</literal> section takes a scope tag which sets the "
+"<literal>$(DIST)</literal> variable and defines the root of the tree (the "
+"path is prefixed by <literal>ArchiveDir</literal>). Typically this is a "
+"setting such as <filename>dists/&debian-stable-codename;</filename>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"All of the settings defined in the <literal>TreeDefault</literal> section "
+"can be used in a <literal>Tree</literal> section as well as three new "
+"variables."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt-ftparchive.1.xml:1
+#, no-wrap
+msgid ""
+"for i in Sections do \n"
+" for j in Architectures do\n"
+" Generate for DIST=scope SECTION=i ARCH=j\n"
+" "
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"When processing a <literal>Tree</literal> section "
+"<command>apt-ftparchive</command> performs an operation similar to: "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"This is a space separated list of sections which appear under the "
+"distribution; typically this is something like <literal>main contrib "
+"non-free</literal>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"This is a space separated list of all the architectures that appear under "
+"search section. The special architecture 'source' is used to indicate that "
+"this tree has a source archive. The architecture 'all' signals that "
+"architecture specific files like <filename>Packages</filename> should not "
+"include information about architecture <literal>all</literal> packages in "
+"all files as they will be available in a dedicated file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Sets the binary override file. The override file contains section, priority "
+"and maintainer address information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Sets the source override file. The override file contains section "
+"information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1 apt-ftparchive.1.xml:1
+msgid "Sets the binary extra override file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1 apt-ftparchive.1.xml:1
+msgid "Sets the source extra override file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml:1
+msgid "<literal>BinDirectory</literal> Section"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"The <literal>bindirectory</literal> section defines a binary directory tree "
+"with no special structure. The scope tag specifies the location of the "
+"binary directory and the settings are similar to the <literal>Tree</literal> "
+"section with no substitution variables or "
+"<literal>Section</literal><literal>Architecture</literal> settings."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid "Sets the Packages file output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Sets the Sources file output. At least one of <literal>Packages</literal> or "
+"<literal>Sources</literal> is required."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid "Sets the Contents file output (optional)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid "Sets the binary override file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid "Sets the source override file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid "Sets the cache DB."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid "Appends a path to all the output paths."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid "Specifies the file list file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml:1
+msgid "The Binary Override File"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"The binary override file is fully compatible with &dpkg-scanpackages;. It "
+"contains four fields separated by spaces. The first field is the package "
+"name, the second is the priority to force that package to, the third is the "
+"section to force that package to and the final field is the maintainer "
+"permutation field."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml:1
+#, no-wrap
+msgid "old [// oldn]* => new"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml:1
+#, no-wrap
+msgid "new"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"The general form of the maintainer field is: <placeholder "
+"type=\"literallayout\" id=\"0\"/> or simply, <placeholder "
+"type=\"literallayout\" id=\"1\"/> The first form allows a double-slash "
+"separated list of old email addresses to be specified. If any of those are "
+"found then new is substituted for the maintainer field. The second form "
+"unconditionally substitutes the maintainer field."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml:1
+msgid "The Source Override File"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"The source override file is fully compatible with &dpkg-scansources;. It "
+"contains two fields separated by spaces. The first field is the source "
+"package name, the second is the section to assign it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml:1
+msgid "The Extra Override File"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"The extra override file allows any arbitrary tag to be added or replaced in "
+"the output. It has three columns, the first is the package, the second is "
+"the tag and the remainder of the line is the new value."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Generate the given checksum. These options default to on, when turned off "
+"the generated index files will not have the checksum fields where possible. "
+"Configuration Items: "
+"<literal>APT::FTPArchive::<replaceable>Checksum</replaceable></literal> and "
+"<literal>APT::FTPArchive::<replaceable>Index</replaceable>::<replaceable>Checksum</replaceable></literal> "
+"where <literal><replaceable>Index</replaceable></literal> can be "
+"<literal>Packages</literal>, <literal>Sources</literal> or "
+"<literal>Release</literal> and "
+"<literal><replaceable>Checksum</replaceable></literal> can be "
+"<literal>MD5</literal>, <literal>SHA1</literal>, <literal>SHA256</literal> "
+"or <literal>SHA512</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Use a binary caching DB. This has no effect on the generate command. "
+"Configuration Item: <literal>APT::FTPArchive::DB</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Perform Delinking. If the <literal>External-Links</literal> setting is used "
+"then this option actually enables delinking of the files. It defaults to on "
+"and can be turned off with <option>--no-delink</option>. Configuration "
+"Item: <literal>APT::FTPArchive::DeLinkAct</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Perform contents generation. When this option is set and package indexes are "
+"being generated with a cache DB then the file listing will also be extracted "
+"and stored in the DB for later use. When using the generate command this "
+"option also allows the creation of any Contents files. The default is on. "
+"Configuration Item: <literal>APT::FTPArchive::Contents</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Select the source override file to use with the <literal>sources</literal> "
+"command. Configuration Item: "
+"<literal>APT::FTPArchive::SourceOverride</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Make the caching databases read only. Configuration Item: "
+"<literal>APT::FTPArchive::ReadOnlyDB</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"Accept in the <literal>packages</literal> and <literal>contents</literal> "
+"commands only package files matching <literal>*_arch.deb</literal> or "
+"<literal>*_all.deb</literal> instead of all package files in the given "
+"path. Configuration Item: <literal>APT::FTPArchive::Architecture</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"&apt-ftparchive; caches as much as possible of metadata in a cachedb. If "
+"packages are recompiled and/or republished with the same version again, this "
+"will lead to problems as the now outdated cached metadata like size and "
+"checksums will be used. With this option enabled this will no longer happen "
+"as it will be checked if the file was changed. Note that this option is set "
+"to \"<literal>false</literal>\" by default as it is not recommend to upload "
+"multiply versions/builds of a package with the same versionnumber, so in "
+"theory nobody will have these problems and therefore all these extra checks "
+"are useless."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"This configuration option defaults to \"<literal>true</literal>\" and should "
+"only be set to <literal>\"false\"</literal> if the Archive generated with "
+"&apt-ftparchive; also provides <filename>Translation</filename> files. Note "
+"that the <filename>Translation-en</filename> master file can only be created "
+"in the generate command."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><programlisting>
+#: apt-ftparchive.1.xml:1
+#, no-wrap
+msgid ""
+"<command>apt-ftparchive</command> packages "
+"<replaceable>directory</replaceable> | <command>gzip</command> > "
+"<filename>Packages.gz</filename>\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"To create a compressed Packages file for a directory containing binary "
+"packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml:1
+msgid ""
+"<command>apt-ftparchive</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+
+#. type: Attribute 'lang' of: <book>
+#: guide.dbk:1 offline.dbk:1
+msgid "en"
+msgstr ""
+
+#. type: Content of: <book><title>
+#: guide.dbk:1
+msgid "APT User's Guide"
+msgstr ""
+
+#. type: Content of: <book><bookinfo><authorgroup><author><personname>
+#: guide.dbk:1 offline.dbk:1
+msgid "Jason Gunthorpe"
+msgstr ""
+
+#. type: Content of: <book><bookinfo><authorgroup><author><email>
+#: guide.dbk:1 offline.dbk:1
+msgid "jgg@debian.org"
+msgstr ""
+
+#. type: Content of: <book><bookinfo><releaseinfo>
+#: guide.dbk:1 offline.dbk:1
+msgid "Version &apt-product-version;"
+msgstr ""
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: guide.dbk:1
+msgid "This document provides an overview of how to use the APT package manager."
+msgstr ""
+
+#. type: Content of: <book><bookinfo>
+#: guide.dbk:1
+msgid "<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+
+#. type: Content of: <book><bookinfo><legalnotice><title>
+#: guide.dbk:1 offline.dbk:1
+msgid "License Notice"
+msgstr ""
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk:1 offline.dbk:1
+msgid ""
+"\"APT\" and this document are free software; you can redistribute them "
+"and/or modify them under the terms of the GNU General Public License as "
+"published by the Free Software Foundation; either version 2 of the License, "
+"or (at your option) any later version."
+msgstr ""
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk:1 offline.dbk:1
+msgid ""
+"For more details, on Debian systems, see the file "
+"/usr/share/common-licenses/GPL for the full license."
+msgstr ""
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk:1
+msgid "General"
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk:1
+msgid ""
+"The APT package currently contains two sections, the APT "
+"<command>dselect</command> method and the <command>apt-get</command> command "
+"line user interface. Both provide a way to install and remove packages as "
+"well as download new packages from the Internet."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk:1
+msgid "Anatomy of the Package System"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"The Debian packaging system has a large amount of information associated "
+"with each package to help assure that it integrates cleanly and easily into "
+"the system. The most prominent of its features is the dependency system."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"The dependency system allows individual programs to make use of shared "
+"elements in the system such as libraries. It simplifies placing infrequently "
+"used portions of a program in separate packages to reduce the number of "
+"things the average user is required to install. Also, it allows for choices "
+"in mail transport agents, X servers and so on."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"The first step to understanding the dependency system is to grasp the "
+"concept of a simple dependency. The meaning of a simple dependency is that a "
+"package requires another package to be installed at the same time to work "
+"properly."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"For instance, mailcrypt is an emacs extension that aids in encrypting email "
+"with GPG. Without GPGP installed mailcrypt is useless, so mailcrypt has a "
+"simple dependency on GPG. Also, because it is an emacs extension it has a "
+"simple dependency on emacs, without emacs it is completely useless."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"The other important dependency to understand is a conflicting dependency. It "
+"means that a package, when installed with another package, will not work and "
+"may possibly be extremely harmful to the system. As an example consider a "
+"mail transport agent such as sendmail, exim or qmail. It is not possible to "
+"have two mail transport agents installed because both need to listen to the "
+"network to receive mail. Attempting to install two will seriously damage the "
+"system so all mail transport agents have a conflicting dependency with all "
+"other mail transport agents."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"As an added complication there is the possibility for a package to pretend "
+"to be another package. Consider that exim and sendmail for many intents are "
+"identical, they both deliver mail and understand a common interface. Hence, "
+"the package system has a way for them to declare that they are both "
+"mail-transport-agents. So, exim and sendmail both declare that they provide "
+"a mail-transport-agent and other packages that need a mail transport agent "
+"depend on mail-transport-agent. This can add a great deal of confusion when "
+"trying to manually fix packages."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"At any given time a single dependency may be met by packages that are "
+"already installed or it may not be. APT attempts to help resolve dependency "
+"issues by providing a number of automatic algorithms that help in selecting "
+"packages for installation."
+msgstr ""
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk:1
+msgid "apt-get"
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk:1
+msgid ""
+"<command>apt-get</command> provides a simple way to install packages from "
+"the command line. Unlike <command>dpkg</command>, <command>apt-get</command> "
+"does not understand .deb files, it works with the package's proper name and "
+"can only install .deb archives from a <emphasis>Source</emphasis>."
+msgstr ""
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk:1
+msgid ""
+"If you are using an http proxy server you must set the http_proxy "
+"environment variable first, see sources.list(5)"
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk:1
+msgid ""
+"The first <placeholder type=\"footnote\" id=\"0\"/> thing that should be "
+"done before using <command>apt-get</command> is to fetch the package lists "
+"from the <emphasis>Sources</emphasis> so that it knows what packages are "
+"available. This is done with <literal>apt-get update</literal>. For "
+"instance,"
+msgstr ""
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk:1
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk:1
+msgid "Once updated there are several commands that can be used:"
+msgstr ""
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk:1
+msgid "upgrade"
+msgstr ""
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk:1
+msgid ""
+"Upgrade will attempt to gently upgrade the whole system. Upgrade will never "
+"install a new package or remove an existing package, nor will it ever "
+"upgrade a package that might cause some other package to break. This can be "
+"used daily to relatively safely upgrade the system. Upgrade will list all of "
+"the packages that it could not upgrade, this usually means that they depend "
+"on new packages or conflict with some other "
+"package. <command>dselect</command> or <literal>apt-get install</literal> "
+"can be used to force these packages to install."
+msgstr ""
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk:1
+msgid "install"
+msgstr ""
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk:1
+msgid ""
+"Install is used to install packages by name. The package is automatically "
+"fetched and installed. This can be useful if you already know the name of "
+"the package to install and do not want to go into a GUI to select it. Any "
+"number of packages may be passed to install, they will all be "
+"fetched. Install automatically attempts to resolve dependency problems with "
+"the listed packages and will print a summary and ask for confirmation if "
+"anything other than its arguments are changed."
+msgstr ""
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk:1
+msgid "dist-upgrade"
+msgstr ""
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk:1
+msgid ""
+"Dist-upgrade is a complete upgrader designed to simplify upgrading between "
+"releases of Debian. It uses a sophisticated algorithm to determine the best "
+"set of packages to install, upgrade and remove to get as much of the system "
+"to the newest release. In some situations it may be desired to use "
+"dist-upgrade rather than spend the time manually resolving dependencies in "
+"<command>dselect</command>. Once dist-upgrade has completed then "
+"<command>dselect</command> can be used to install any packages that may have "
+"been left out."
+msgstr ""
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk:1
+msgid ""
+"It is important to closely look at what dist-upgrade is going to do, its "
+"decisions may sometimes be quite surprising."
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk:1
+msgid ""
+"<command>apt-get</command> has several command line options that are "
+"detailed in its man page, "
+"<citerefentry><refentrytitle>apt-get</refentrytitle><manvolnum>8</manvolnum></citerefentry>. "
+"The most useful option is <literal>-d</literal> which does not install the "
+"fetched files. If the system has to download a large number of package it "
+"would be undesired to start installing them in case something goes "
+"wrong. When <literal>-d</literal> is used the downloaded archives can be "
+"installed by simply running the command that caused them to be downloaded "
+"again without <literal>-d</literal>."
+msgstr ""
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk:1
+msgid "DSelect"
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk:1
+msgid ""
+"The APT <command>dselect</command> method provides the complete APT system "
+"with the <command>dselect</command> package selection "
+"GUI. <command>dselect</command> is used to select the packages to be "
+"installed or removed and APT actually installs them."
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk:1
+msgid ""
+"To enable the APT method you need to select [A]ccess in "
+"<command>dselect</command> and then choose the APT method. You will be "
+"prompted for a set of <emphasis>Sources</emphasis> which are places to fetch "
+"archives from. These can be remote Internet sites, local Debian mirrors or "
+"CD-ROMs. Each source can provide a fragment of the total Debian archive, APT "
+"will automatically combine them to form a complete set of packages. If you "
+"have a CD-ROM then it is a good idea to specify it first and then specify a "
+"mirror so that you have access to the latest bug fixes. APT will "
+"automatically use packages on your CD-ROM before downloading from the "
+"Internet."
+msgstr ""
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk:1
+#, no-wrap
+msgid ""
+" Set up a list of distribution source locations\n"
+"\n"
+" Please give the base URL of the debian distribution.\n"
+" The access schemes I know about are: http file\n"
+"\n"
+" For example:\n"
+" file:/mnt/debian,\n"
+" ftp://ftp.debian.org/debian,\n"
+" http://ftp.de.debian.org/debian,\n"
+"\n"
+"\n"
+" URL [http://llug.sep.bnl.gov/debian]:\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk:1
+msgid ""
+"The <emphasis>Sources</emphasis> setup starts by asking for the base of the "
+"Debian archive, defaulting to a HTTP mirror. Next it asks for the "
+"distribution to get."
+msgstr ""
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk:1
+#, no-wrap
+msgid ""
+" Please give the distribution tag to get or a path to the\n"
+" package file ending in a /. The distribution\n"
+" tags are typically something like: stable unstable testing non-US\n"
+"\n"
+" Distribution [stable]:\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk:1
+msgid ""
+"The distribution refers to the Debian version in the archive, "
+"<emphasis>stable</emphasis> refers to the latest released version and "
+"<emphasis>unstable</emphasis> refers to the developmental "
+"version. <emphasis>non-US</emphasis> is only available on some mirrors and "
+"refers to packages that contain encryption technology or other things that "
+"cannot be exported from the United States. Importing these packages into the "
+"US is legal however."
+msgstr ""
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk:1
+#, no-wrap
+msgid ""
+" Please give the components to get\n"
+" The components are typically something like: main contrib non-free\n"
+"\n"
+" Components [main contrib non-free]:\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk:1
+msgid ""
+"The components list refers to the list of sub distributions to fetch. The "
+"distribution is split up based on software licenses, main being DFSG free "
+"packages while contrib and non-free contain things that have various "
+"restrictions placed on their use and distribution."
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk:1
+msgid ""
+"Any number of sources can be added, the setup script will continue to prompt "
+"until you have specified all that you want."
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk:1
+msgid ""
+"Before starting to use <command>dselect</command> it is necessary to update "
+"the available list by selecting [U]pdate from the menu. This is a superset "
+"of <literal>apt-get update</literal> that makes the fetched information "
+"available to <command>dselect</command>. [U]pdate must be performed even if "
+"<literal>apt-get update</literal> has been run before."
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk:1
+msgid ""
+"You can then go on and make your selections using [S]elect and then perform "
+"the installation using [I]nstall. When using the APT method the [C]onfig and "
+"[R]emove commands have no meaning, the [I]nstall command performs both of "
+"them together."
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk:1
+msgid ""
+"By default APT will automatically remove the package (.deb) files once they "
+"have been successfully installed. To change this behavior place "
+"<literal>Dselect::clean \"prompt\";</literal> in /etc/apt/apt.conf."
+msgstr ""
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk:1
+msgid "The Interface"
+msgstr ""
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk:1
+msgid ""
+"The <command>dselect</command> method actually is a set of wrapper scripts "
+"to <command>apt-get</command>. The method actually provides more "
+"functionality than is present in <command>apt-get</command> alone."
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk:1
+msgid ""
+"Both that APT <command>dselect</command> method and "
+"<command>apt-get</command> share the same interface. It is a simple system "
+"that generally tells you what it will do and then goes and does "
+"it. <placeholder type=\"footnote\" id=\"0\"/> After printing out a summary "
+"of what will happen APT then will print out some informative status messages "
+"so that you can estimate how far along it is and how much is left to do."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk:1
+msgid "Startup"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"Before all operations except update, APT performs a number of actions to "
+"prepare its internal state. It also does some checks of the system's "
+"state. At any time these operations can be performed by running "
+"<literal>apt-get check</literal>."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk:1
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"The first thing it does is read all the package files into memory. APT uses "
+"a caching scheme so this operation will be faster the second time it is "
+"run. If some of the package files are not found then they will be ignored "
+"and a warning will be printed when apt-get exits."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"The final operation performs a detailed analysis of the system's "
+"dependencies. It checks every dependency of every installed or unpacked "
+"package and considers if it is OK. Should this find a problem then a report "
+"will be printed out and <command>apt-get</command> will refuse to run."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk:1
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+"You might want to run 'apt --fix-broken install' to correct these.\n"
+"Sorry, but the following packages have unmet dependencies:\n"
+" 9fonts: Depends: xlib6g but it is not installed\n"
+" uucp: Depends: mailx but it is not installed\n"
+" blast: Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" adduser: Depends: perl-base but it is not installed\n"
+" aumix: Depends: libgpmg1 but it is not installed\n"
+" debiandoc-sgml: Depends: sgml-base but it is not installed\n"
+" bash-builtins: Depends: bash (&gt;= 2.01) but 2.0-3 is installed\n"
+" cthugha: Depends: svgalibg1 but it is not installed\n"
+" Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" libreadlineg2: Conflicts:libreadline2 (&lt;&lt; 2.1-2.1)\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"In this example the system has many problems, including a serious problem "
+"with libreadlineg2. For each package that has unmet dependencies a line is "
+"printed out indicating the package with the problem and the dependencies "
+"that are unmet. A short explanation of why the package has a dependency "
+"problem is also included."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para><footnote><para>
+#: guide.dbk:1
+msgid ""
+"APT however considers all known dependencies and attempts to prevent broken "
+"packages"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"There are two ways a system can get into a broken state like this. The first "
+"is caused by <command>dpkg</command> missing some subtle relationships "
+"between packages when performing upgrades. <placeholder type=\"footnote\" "
+"id=\"0\"/>. The second is if a package installation fails during an "
+"operation. In this situation a package may have been unpacked without its "
+"dependents being installed."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"The second situation is much less serious than the first because APT places "
+"certain constraints on the order that packages are installed. In both cases "
+"supplying the <literal>-f</literal> option to <command>apt-get</command> "
+"will cause APT to deduce a possible solution to the problem and then "
+"continue on. The APT <command>dselect</command> method always supplies the "
+"<literal>-f</literal> option to allow for easy continuation of failed "
+"maintainer scripts."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"However, if the <literal>-f</literal> option is used to correct a seriously "
+"broken system caused by the first case then it is possible that it will "
+"either fail immediately or the installation sequence will fail. In either "
+"case it is necessary to manually use dpkg (possibly with forcing options) to "
+"correct the situation enough to allow APT to proceed."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk:1
+msgid "The Status Report"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"Before proceeding <command>apt-get</command> will present a report on what "
+"will happen. Generally the report reflects the type of operation being "
+"performed but there are several common elements. In all cases the lists "
+"reflect the final state of things, taking into account the "
+"<literal>-f</literal> option and any other relevant activities to the "
+"command being executed."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk:1
+msgid "The Extra Package list"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk:1
+#, no-wrap
+msgid ""
+"The following extra packages will be installed:\n"
+" libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl\n"
+" mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base\n"
+" bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy\n"
+" squake pgp-i python-base debmake ldso perl libreadlineg2\n"
+" ssh\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk:1
+msgid ""
+"The Extra Package list shows all of the packages that will be installed or "
+"upgraded in excess of the ones mentioned on the command line. It is only "
+"generated for an <literal>install</literal> command. The listed packages are "
+"often the result of an Auto Install."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk:1
+msgid "The Packages to Remove"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk:1
+#, no-wrap
+msgid ""
+"The following packages will be REMOVED:\n"
+" xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix\n"
+" xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel\n"
+" xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid\n"
+" nas xpilot xfig\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk:1
+msgid ""
+"The Packages to Remove list shows all of the packages that will be removed "
+"from the system. It can be shown for any of the operations and should be "
+"given a careful inspection to ensure nothing important is to be taken "
+"off. The <literal>-f</literal> option is especially good at generating "
+"packages to remove so extreme care should be used in that case. The list may "
+"contain packages that are going to be removed because they are only "
+"partially installed, possibly due to an aborted installation."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk:1
+msgid "The New Packages list"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk:1
+#, no-wrap
+msgid ""
+"The following NEW packages will installed:\n"
+" zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk:1
+msgid ""
+"The New Packages list is simply a reminder of what will happen. The packages "
+"listed are not presently installed in the system but will be when APT is "
+"done."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk:1
+msgid "The Kept Back list"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk:1
+#, no-wrap
+msgid ""
+"The following packages have been kept back\n"
+" compface man-db tetex-base msql libpaper svgalib1\n"
+" gs snmp arena lynx xpat2 groff xscreensaver\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk:1
+msgid ""
+"Whenever the whole system is being upgraded there is the possibility that "
+"new versions of packages cannot be installed because they require new things "
+"or conflict with already installed things. In this case the package will "
+"appear in the Kept Back list. The best way to convince packages listed there "
+"to install is with <literal>apt-get install</literal> or by using "
+"<command>dselect</command> to resolve their problems."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk:1
+msgid "Held Packages warning"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk:1
+#, no-wrap
+msgid ""
+"The following held packages will be changed:\n"
+" cvs\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk:1
+msgid ""
+"Sometimes you can ask APT to install a package that is on hold, in such a "
+"case it prints out a warning that the held package is going to be "
+"changed. This should only happen during dist-upgrade or install."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk:1
+msgid "Final summary"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk:1
+msgid "Finally, APT will print out a summary of all the changes that will occur."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk:1
+#, no-wrap
+msgid ""
+"206 packages upgraded, 8 newly installed, 23 to remove and 51 not "
+"upgraded.\n"
+"12 packages not fully installed or removed.\n"
+"Need to get 65.7M/66.7M of archives. After unpacking 26.5M will be used.\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk:1
+msgid ""
+"The first line of the summary simply is a reduced version of all of the "
+"lists and includes the number of upgrades - that is packages already "
+"installed that have new versions available. The second line indicates the "
+"number of poorly configured packages, possibly the result of an aborted "
+"installation. The final line shows the space requirements that the "
+"installation needs. The first pair of numbers refer to the size of the "
+"archive files. The first number indicates the number of bytes that must be "
+"fetched from remote locations and the second indicates the total size of all "
+"the archives required. The next number indicates the size difference between "
+"the presently installed packages and the newly installed packages. It is "
+"roughly equivalent to the space required in /usr after everything is "
+"done. If a large number of packages are being removed then the value may "
+"indicate the amount of space that will be freed."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk:1
+msgid ""
+"Some other reports can be generated by using the -u option to show packages "
+"to upgrade, they are similar to the previous examples."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk:1
+msgid "The Status Display"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"During the download of archives and package files APT prints out a series of "
+"status messages."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk:1
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ "
+"Packages\n"
+"Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+"11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"The lines starting with <emphasis>Get</emphasis> are printed out when APT "
+"begins to fetch a file while the last line indicates the progress of the "
+"download. The first percent value on the progress line indicates the total "
+"percent done of all files. Unfortunately since the size of the Package files "
+"is unknown <literal>apt-get update</literal> estimates the percent done "
+"which causes some inaccuracies."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"The next section of the status line is repeated once for each download "
+"thread and indicates the operation being performed and some useful "
+"information about what is happening. Sometimes this section will simply read "
+"<emphasis>Forking</emphasis> which means the OS is loading the download "
+"module. The first word after the [ is the fetch number as shown on the "
+"history lines. The next word is the short form name of the object being "
+"downloaded. For archives it will contain the name of the package that is "
+"being fetched."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"Inside of the single quote is an informative string indicating the progress "
+"of the negotiation phase of the download. Typically it progresses from "
+"<emphasis>Connecting</emphasis> to <emphasis>Waiting for file</emphasis> to "
+"<emphasis>Downloading</emphasis> or <emphasis>Resuming</emphasis>. The final "
+"value is the number of bytes downloaded from the remote site. Once the "
+"download begins this is represented as <literal>102/10.2k</literal> "
+"indicating that 102 bytes have been fetched and 10.2 kilobytes is "
+"expected. The total size is always shown in 4 figure notation to preserve "
+"space. After the size display is a percent meter for the file itself. The "
+"second last element is the instantaneous average speed. This values is "
+"updated every 5 seconds and reflects the rate of data transfer for that "
+"period. Finally is shown the estimated transfer time. This is updated "
+"regularly and reflects the time to complete everything at the shown transfer "
+"rate."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"The status display updates every half second to provide a constant feedback "
+"on the download progress while the Get lines scroll back whenever a new file "
+"is started. Since the status display is constantly updated it is unsuitable "
+"for logging to a file, use the <literal>-q</literal> option to remove the "
+"status display."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk:1
+msgid "Dpkg"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk:1
+msgid ""
+"APT uses <command>dpkg</command> for installing the archives and will switch "
+"over to the <command>dpkg</command> interface once downloading is "
+"completed. <command>dpkg</command> will also ask a number of questions as it "
+"processes the packages and the packages themselves may also ask several "
+"questions. Before each question there is usually a description of what it is "
+"asking and the questions are too varied to discuss completely here."
+msgstr ""
+
+#. type: Content of: <book><title>
+#: offline.dbk:1
+msgid "Using APT Offline"
+msgstr ""
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: offline.dbk:1
+msgid ""
+"This document describes how to use APT in a non-networked environment, "
+"specifically a 'sneaker-net' approach for performing upgrades."
+msgstr ""
+
+#. type: Content of: <book><bookinfo>
+#: offline.dbk:1
+msgid "<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk:1
+msgid "Introduction"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk:1 offline.dbk:1 offline.dbk:1
+msgid "Overview"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid ""
+"Normally APT requires direct access to a Debian archive, either from a local "
+"media or through a network. Another common complaint is that a Debian "
+"machine is on a slow link, such as a modem and another machine has a very "
+"fast connection but they are physically distant."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid ""
+"The solution to this is to use large removable media such as a Zip disc or a "
+"SuperDisk disc. These discs are not large enough to store the entire Debian "
+"archive but can easily fit a subset large enough for most users. The idea is "
+"to use APT to generate a list of packages that are required and then fetch "
+"them onto the disc using another machine with good connectivity. It is even "
+"possible to use another Debian machine with APT or to use a completely "
+"different OS and a download tool like wget. Let <emphasis>remote "
+"host</emphasis> mean the machine downloading the packages, and "
+"<emphasis>target host</emphasis> the one with bad or no connection."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid ""
+"This is achieved by creatively manipulating the APT configuration file. The "
+"essential premise to tell APT to look on a disc for it's archive files. Note "
+"that the disc should be formatted with a filesystem that can handle long "
+"file names such as ext2, fat32 or vfat."
+msgstr ""
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk:1
+msgid "Using APT on both machines"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid ""
+"APT being available on both machines gives the simplest configuration. The "
+"basic idea is to place a copy of the status file on the disc and use the "
+"remote machine to fetch the latest package files and decide which packages "
+"to download. The disk directory structure should look like:"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk:1
+#, no-wrap
+msgid ""
+" /disc/\n"
+" archives/\n"
+" partial/\n"
+" lists/\n"
+" partial/\n"
+" status\n"
+" sources.list\n"
+" apt.conf\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk:1
+msgid "The configuration file"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid ""
+"The configuration file should tell APT to store its files on the disc and to "
+"use the configuration files on the disc as well. The sources.list should "
+"contain the proper sites that you wish to use from the remote machine, and "
+"the status file should be a copy of "
+"<emphasis>/var/lib/dpkg/status</emphasis> from the <emphasis>target "
+"host</emphasis>. Please note, if you are using a local archive you must use "
+"copy URIs, the syntax is identical to file URIs."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid ""
+"<emphasis>apt.conf</emphasis> must contain the necessary information to make "
+"APT use the disc:"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk:1
+#, no-wrap
+msgid ""
+" APT\n"
+" {\n"
+" /* This is not necessary if the two machines are the same arch, it "
+"tells\n"
+" the remote APT what architecture the target machine is */\n"
+" Architecture \"i386\";\n"
+"\n"
+" Get::Download-Only \"true\";\n"
+" };\n"
+"\n"
+" Dir\n"
+" {\n"
+" /* Use the disc for state information and redirect the status file from\n"
+" the /var/lib/dpkg default */\n"
+" State \"/disc/\";\n"
+" State::status \"status\";\n"
+"\n"
+" // Binary caches will be stored locally\n"
+" Cache::archives \"/disc/archives/\";\n"
+" Cache \"/tmp/\";\n"
+"\n"
+" // Location of the source list.\n"
+" Etc \"/disc/\";\n"
+" };\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid ""
+"More details can be seen by examining the apt.conf man page and the sample "
+"configuration file in "
+"<emphasis>/usr/share/doc/apt/examples/apt.conf</emphasis>."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid ""
+"On the target machine the first thing to do is mount the disc and copy "
+"<emphasis>/var/lib/dpkg/status</emphasis> to it. You will also need to "
+"create the directories outlined in the Overview, "
+"<emphasis>archives/partial/</emphasis> and "
+"<emphasis>lists/partial/</emphasis>. Then take the disc to the remote "
+"machine and configure the sources.list. On the remote machine execute the "
+"following:"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk:1
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get update\n"
+" [ APT fetches the package files ]\n"
+" # apt-get dist-upgrade\n"
+" [ APT fetches all the packages needed to upgrade the target machine ]\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid ""
+"The dist-upgrade command can be replaced with any other standard APT "
+"commands, particularly dselect-upgrade. You can even use an APT front end "
+"such as <emphasis>dselect</emphasis>. However this presents a problem in "
+"communicating your selections back to the local computer."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid ""
+"Now the disc contains all of the index files and archives needed to upgrade "
+"the target machine. Take the disc back and run:"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk:1
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get check\n"
+" [ APT generates a local copy of the cache files ]\n"
+" # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
+" [ Or any other APT command ]\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid ""
+"It is necessary for proper function to re-specify the status file to be the "
+"local one. This is very important!"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid ""
+"If you are using dselect you can do the very risky operation of copying "
+"disc/status to /var/lib/dpkg/status so that any selections you made on the "
+"remote machine are updated. I highly recommend that people only make "
+"selections on the local machine - but this may not always be possible. DO "
+"NOT copy the status file if dpkg or APT have been run in the mean time!!"
+msgstr ""
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk:1
+msgid "Using APT and wget"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid ""
+"<emphasis>wget</emphasis> is a popular and portable download tool that can "
+"run on nearly any machine. Unlike the method above this requires that the "
+"Debian machine already has a list of available packages."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid ""
+"The basic idea is to create a disc that has only the archive files "
+"downloaded from the remote site. This is done by using the --print-uris "
+"option to apt-get and then preparing a wget script to actually fetch the "
+"packages."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk:1
+msgid "Operation"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid ""
+"Unlike the previous technique no special configuration files are "
+"required. We merely use the standard APT commands to generate the file list."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk:1
+#, no-wrap
+msgid ""
+" # apt-get dist-upgrade\n"
+" [ Press no when prompted, make sure you are happy with the actions ]\n"
+" # apt-get -qq --print-uris dist-upgrade &gt; uris\n"
+" # awk '{print \"wget -O \" $2 \" \" $1}' &lt; uris &gt; /disc/wget-script\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid ""
+"Any command other than dist-upgrade could be used here, including "
+"dselect-upgrade."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid ""
+"The /disc/wget-script file will now contain a list of wget commands to "
+"execute in order to fetch the necessary archives. This script should be run "
+"with the current directory as the disc's mount point so as to save the "
+"output on the disc."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid "The remote machine would do something like"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk:1
+#, no-wrap
+msgid ""
+" # cd /disc\n"
+" # sh -x ./wget-script\n"
+" [ wait.. ]\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid ""
+"Once the archives are downloaded and the disc returned to the Debian machine "
+"installation can proceed using,"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk:1
+#, no-wrap
+msgid " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk:1
+msgid "Which will use the already fetched archives on the disc."
+msgstr ""
diff --git a/doc/po/de.po b/doc/po/de.po
new file mode 100644
index 000000000..211026f79
--- /dev/null
+++ b/doc/po/de.po
@@ -0,0 +1,11336 @@
+# Translation of apt/doc to German
+# Copyright (C) 1997, 1998, 1999 Jason Gunthorpe and others.
+# This file is distributed under the same license as the apt package.
+# Chris Leick <c.leick@vollbio.de>, 2009-2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt-doc 1.3\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-06-01 10:51+0200\n"
+"PO-Revision-Date: 2016-11-15 21:51+0200\n"
+"Last-Translator: Chris Leick <c.leick@vollbio.de>\n"
+"Language-Team: German <debian-l10n-german@lists.debian.org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY apt-author.team \"\n"
+" <author>\n"
+" <othername>APT team</othername>\n"
+" <contrib></contrib>\n"
+" </author>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY apt-author.team \"\n"
+" <author>\n"
+" <othername>APT-Team</othername>\n"
+" <contrib></contrib>\n"
+" </author>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY apt-qapage \"\n"
+"\t<para>\n"
+"\t\t<ulink url='http://packages.qa.debian.org/a/apt.html'>QA Page</ulink>\n"
+"\t</para>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY apt-qapage \"\n"
+"\t<para>\n"
+"\t\t<ulink url='http://packages.qa.debian.org/a/apt.html'>QA-Seite</ulink>\n"
+"\t</para>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Boiler plate Bug reporting section -->\n"
+"<!ENTITY manbugs \"\n"
+" <refsect1><title>Bugs</title>\n"
+" <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+" If you wish to report a bug in APT, please see\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
+" &reportbug; command.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+"<!-- Vorformatierter Textblock Fehlerbericht-Abschnitt -->\n"
+"<!ENTITY manbugs \"\n"
+" <refsect1><title>Fehler</title>\n"
+" <para><ulink url='http://bugs.debian.org/src:apt'>APT-Fehlerseite</ulink>. \n"
+" Wenn Sie einen Fehler in APT berichten möchten, lesen Sie bitte\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</filename> oder den\n"
+" &reportbug;-Befehl. Verfassen Sie Fehlerberichte bitte auf Englisch.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Boiler plate Author section -->\n"
+"<!ENTITY manauthor \"\n"
+" <refsect1><title>Author</title>\n"
+" <para>APT was written by the APT team <email>apt@packages.debian.org</email>.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+"<!-- Vorformatierter Textblock Autor-Abschnitt -->\n"
+"<!ENTITY manauthor \"\n"
+" <refsect1><title>Autor</title>\n"
+" <para>APT wurde vom APT-Team geschrieben <email>apt@packages.debian.org</email>.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-commonoptions \"\n"
+" <varlistentry><term><option>-h</option></term>\n"
+" <term><option>--help</option></term>\n"
+" <listitem><para>Show a short usage summary.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!-- Sollte innerhalb des Abschnitts Option des Textes benutzt werden, \n"
+" um Informationen über -h, -v, -c und -o einzufügen -->\n"
+"<!ENTITY apt-commonoptions \"\n"
+" <varlistentry><term><option>-h</option></term>\n"
+" <term><option>--help</option></term>\n"
+" <listitem><para>eine kurze Aufrufzusammenfassung zeigen\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-v</option></term>\n"
+" <term><option>--version</option></term>\n"
+" <listitem><para>Show the program version.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-v</option></term>\n"
+" <term><option>--version</option></term>\n"
+" <listitem><para>die Version des Programms anzeigen\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-c</option></term>\n"
+" <term><option>--config-file</option></term>\n"
+" <listitem><para>Configuration File; Specify a configuration file to use. \n"
+" The program will read the default configuration file and then this \n"
+" configuration file. If configuration settings need to be set before the\n"
+" default configuration files are parsed specify a file with the <envar>APT_CONFIG</envar>\n"
+" environment variable. See &apt-conf; for syntax information.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-c</option></term>\n"
+" <term><option>--config-file</option></term>\n"
+" <listitem><para>Konfigurationsdatei; gibt eine Konfigurationssdatei zum Benutzen an.\n"
+" Das Programm wird die Vorgabe-Konfigurationsdatei und dann diese\n"
+" Konfigurationsdatei lesen. Falls Konfigurationseinstellungen vor der\n"
+" Vorgabe-Konfiguration ausgewertet werden müssen, geben Sie eine Datei\n"
+" der Umgebungsvariable <envar>APT_CONFIG</envar> an\n"
+" Lesen Sie &apt-conf;, um Syntax-Informationen zu erhalten \n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-o</option></term>\n"
+" <term><option>--option</option></term>\n"
+" <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
+" configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
+" <option>-o</option> and <option>--option</option> can be used multiple\n"
+" times to set different options.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-o</option></term>\n"
+" <term><option>--option</option></term>\n"
+" <listitem><para>eine Konfigurationsoption setzen; Dies wird eine beliebige\n"
+" Konfigurationsoption setzen. Die Syntax lautet <option>-o Foo::Bar=bar</option>.\n"
+" <option>-o</option> und <option>--option</option> kann mehrfach benutzt\n"
+" werden, um verschiedene Optionen zu setzen.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-cmdblurb \"\n"
+" <para>All command line options may be set using the configuration file, the\n"
+" descriptions indicate the configuration option to set. For boolean\n"
+" options you can override the config file by using something like \n"
+" <option>-f-</option>,<option>--no-f</option>, <option>-f=no</option>\n"
+" or several other variations.\n"
+" </para>\n"
+"\">\n"
+msgstr ""
+"<!-- Sollte innerhalb des Abschnitts Option des Textes benutzt werden, \n"
+" um Informationen über -h, -v, -c und -o einzufügen -->\n"
+"<!ENTITY apt-cmdblurb \"\n"
+" <para>Alle Befehlszeilenoptionen können durch die Konfigurationsdatei gesetzt\n"
+" werden, die Beschreibung gibt die zu setzende Option an. Für\n"
+" boolesche Optionen können Sie die Konfigurationsdatei überschreiben,\n"
+" indem Sie etwas wie <option>-f-</option>, <option>--no-f</option>,\n"
+" <option>-f=no</option> oder etliche weitere Varianten benutzen.\n"
+" </para>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-aptconf \"\n"
+" <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>\n"
+" <listitem><para>APT configuration file.\n"
+" Configuration Item: <literal>Dir::Etc::Main</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-aptconf \"\n"
+" <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>\n"
+" <listitem><para>APT-Konfigurationsdatei.\n"
+" Konfigurationselement: <literal>Dir::Etc::Main</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
+" <listitem><para>APT configuration file fragments.\n"
+" Configuration Item: <literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
+" <listitem><para>APT-Konfigurationsdatei-Fragmente.\n"
+" Konfigurationselement: <literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-cachearchives \"\n"
+" <varlistentry><term><filename>&cachedir;/archives/</filename></term>\n"
+" <listitem><para>Storage area for retrieved package files.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-cachearchives \"\n"
+" <varlistentry><term><filename>&cachedir;/archives/</filename></term>\n"
+" <listitem><para>Speicherbereich für aufgerufene Paketdateien.\n"
+" Konfigurationselement: <literal>Dir::Cache::Archives</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>\n"
+" <listitem><para>Storage area for package files in transit.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>\n"
+" <listitem><para>Speicherbereich für Paketdateien auf dem Transportweg.\n"
+" Konfigurationselement: <literal>Dir::Cache::Archives</literal> (<filename>partial</filename> wird implizit angehängt)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-preferences \"\n"
+" <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
+" <listitem><para>Version preferences file.\n"
+" This is where you would specify &quot;pinning&quot;,\n"
+" i.e. a preference to get certain packages\n"
+" from a separate source\n"
+" or from a different version of a distribution.\n"
+" Configuration Item: <literal>Dir::Etc::Preferences</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-preferences \"\n"
+" <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
+" <listitem><para>Version-Einstellungsdatei.\n"
+" Hier können Sie &quot;pinning&quot; angeben, d.h. eine Einstellung,\n"
+" um bestimmte Pakete aus einer separaten Quelle oder von einer\n"
+" anderen Version einer Distribution zu erhalten.\n"
+" Konfigurationselement: <literal>Dir::Etc::Preferences</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>\n"
+" <listitem><para>File fragments for the version preferences.\n"
+" Configuration Item: <literal>Dir::Etc::PreferencesParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>\n"
+" <listitem><para>Dateifragmente für die Versionseinstellungen.\n"
+" Konfigurationselement: <literal>Dir::Etc::PreferencesParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-sourceslist \"\n"
+" <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+" <listitem><para>Locations to fetch packages from.\n"
+" Configuration Item: <literal>Dir::Etc::SourceList</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-sourceslist \"\n"
+" <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+" <listitem><para>Orte, von denen Pakete geladen werden.\n"
+" Konfigurationselement: <literal>Dir::Etc::SourceList</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
+" <listitem><para>File fragments for locations to fetch packages from.\n"
+" Configuration Item: <literal>Dir::Etc::SourceParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
+" <listitem><para>Dateifragmente für Orte, von denen Pakete geladen werden.\n"
+" Konfigurationselement: <literal>Dir::Etc::SourceParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-statelists \"\n"
+" <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
+" <listitem><para>Storage area for state information for each package resource specified in\n"
+" &sources-list;\n"
+" Configuration Item: <literal>Dir::State::Lists</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-statelists \"\n"
+" <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
+" <listitem><para>Speicherbereich für Statusinformationen jeder\n"
+" in &sources-list; angegebenen Paketquelle\n"
+" Konfigurationselement: <literal>Dir::State::Lists</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>\n"
+" <listitem><para>Storage area for state information in transit.\n"
+" Configuration Item: <literal>Dir::State::Lists</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>\n"
+" <listitem><para>Speicherbereich für Statusinformationen auf dem Transportweg.\n"
+" Konfigurationselement: <literal>Dir::State::Lists</literal> (<filename>partial</filename> wird implizit angehängt)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-trustedgpg \"\n"
+" <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
+" <listitem><para>Keyring of local trusted keys, new keys will be added here.\n"
+" Configuration Item: <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-trustedgpg \"\n"
+" <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
+" <listitem><para>Schlüsselbund lokaler vertrauenswürdiger Schlüssel,\n"
+" neue Schlüssel werden hier hinzugefügt.\n"
+" Konfigurationselement: <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
+" <listitem><para>File fragments for the trusted keys, additional keyrings can\n"
+" be stored here (by other packages or the administrator).\n"
+" Configuration Item <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
+" <listitem><para>Dateifragmente für vertrauenswürdige Schlüssel, zusätzliche\n"
+" Schlüsselbunde können hier (von anderen Paketen oder dem Administrator)\n"
+" gespeichert werden.\n"
+" Konfigurationselement: <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-extended_states \"\n"
+" <varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>\n"
+" <listitem><para>Status list of auto-installed packages.\n"
+" Configuration Item: <literal>Dir::State::extended_states</literal>.\n"
+" </para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY file-extended_states \"\n"
+" <varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>\n"
+" <listitem><para>Statusliste automatisch installierter Pakete\n"
+" Konfigurationselement: <literal>Dir::State::extended_states</literal>.\n"
+" </para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is the section header for the following paragraphs - comparable\n"
+" to the other headers like NAME and DESCRIPTION and should therefore be uppercase. -->\n"
+"<!ENTITY translation-title \"TRANSLATION\">\n"
+msgstr "<!ENTITY translation-title \"ÃœBERSETZUNG\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is a placeholder. You should write here who has contributed\n"
+" to the translation in the past, who is responsible now and maybe further information\n"
+" specially related to your translation. -->\n"
+"<!ENTITY translation-holder \"\n"
+" The english translation was done by John Doe <email>john@doe.org</email> in 2009,\n"
+" 2010 and Daniela Acme <email>daniela@acme.us</email> in 2010 together with the\n"
+" Debian Dummy l10n Team <email>debian-l10n-dummy@lists.debian.org</email>.\n"
+"\">\n"
+msgstr ""
+"<!ENTITY translation-holder \"\n"
+" Die deutsche Ãœbersetzung wurde 2009 von Chris Leick\n"
+" <email>c.leick@vollbio.de</email> in Zusammenarbeit mit dem\n"
+" deutschen l10n-Team von Debian\n"
+" <email>debian-l10n-german@lists.debian.org</email> angefertigt.\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: As a translation is allowed to have 20% of untranslated/fuzzy strings\n"
+" in a shipped manpage newer/modified paragraphs will maybe appear in english in\n"
+" the generated manpage. This sentence is therefore here to tell the reader that this\n"
+" is not a mistake by the translator - obviously the target is that at least for stable\n"
+" releases this sentence is not needed. :) -->\n"
+"<!ENTITY translation-english \"\n"
+" Note that this translated document may contain untranslated parts.\n"
+" This is done on purpose, to avoid losing content when the\n"
+" translation is lagging behind the original content.\n"
+"\">\n"
+msgstr ""
+"<!ENTITY translation-english \"\n"
+" Beachten Sie, dass diese Ãœbersetzung Teile enthalten kann, die nicht\n"
+" übersetzt wurden. Dies ist so, damit kein Inhalt verloren geht, wenn\n"
+" die Übersetzung hinter dem Originalinhalt hinterherhängt.\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
+"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+msgstr "<!ENTITY synopsis-config-string \"Konfigurationszeichenkette\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -c=config_file e.g. -c=./apt.conf --> <!ENTITY "
+"synopsis-config-file \"config_file\">"
+msgstr "<!ENTITY synopsis-config-file \"Konfigurationsdatei\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
+"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"\"target_release\">"
+msgstr "<!ENTITY synopsis-target-release \"Ziel-Release\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -a=architecture e.g. -a=armel --> <!ENTITY "
+"synopsis-architecture \"architecture\">"
+msgstr "<!ENTITY synopsis-architecture \"Architektur\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-get install pkg e.g. apt-get install awesome "
+"--> <!ENTITY synopsis-pkg \"pkg\">"
+msgstr "<!ENTITY synopsis-pkg \"Paket\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in pkg=pkg_version_number e.g. apt=0.8.15 --> <!"
+"ENTITY synopsis-pkg-ver-number \"pkg_version_number\">"
+msgstr "<!ENTITY synopsis-pkg-ver-number \"Paketversionsnummer\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache pkgnames prefix e.g. apt-cache "
+"pkgnames apt --> <!ENTITY synopsis-prefix \"prefix\">"
+msgstr "<!ENTITY synopsis-prefix \"Präfix\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache search regex e.g. apt-cache search "
+"awesome --> <!ENTITY synopsis-regex \"regex\">"
+msgstr "<!ENTITY synopsis-regex \"regulärer_Ausdruck\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
+"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+msgstr "<!ENTITY synopsis-cdrom-mount \"CD-ROM-Einhängepunkt\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates -t=temporary_directory e.g. "
+"apt-extracttemplates -t=/tmp --> <!ENTITY synopsis-tmp-directory "
+"\"temporary_directory\">"
+msgstr "<!ENTITY synopsis-tmp-directory \"temporäres_Verzeichnis\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates filename --> <!ENTITY "
+"synopsis-filename \"filename\">"
+msgstr "<!ENTITY synopsis-filename \"Dateiname\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-path \"path\">"
+msgstr "<!ENTITY synopsis-path \"Pfad\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-override "
+"\"override-file\">"
+msgstr "<!ENTITY synopsis-override \"Ãœberschreibungsdatei\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-pathprefix "
+"\"pathprefix\">"
+msgstr "<!ENTITY synopsis-pathprefix \"Pfadpräfix\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"generate section --> <!ENTITY synopsis-section \"section\">"
+msgstr "<!ENTITY synopsis-section \"Abschnitt\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
+msgstr "<!ENTITY synopsis-keyid \"Schlüsselkennung\">"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+msgid "8"
+msgstr "8"
+
+#. type: Content of: <refentry><refmeta><refmiscinfo>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "APT"
+msgstr "APT"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.8.xml
+msgid "command-line interface"
+msgstr "Befehlszeilenschnittstelle"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "Description"
+msgstr "Beschreibung"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"<command>apt</command> provides a high-level commandline interface for the "
+"package management system. It is intended as an end user interface and "
+"enables some options better suited for interactive usage by default compared "
+"to more specialized APT tools like &apt-get; and &apt-cache;."
+msgstr ""
+"<command>apt</command> stellt eine ausgefeilte Befehlszeilenschnittstelle "
+"für das Paketverwaltungssystem zur Verfügung. Es ist als "
+"Endanwenderschnittstelle gedacht und aktiviert standardmäßig einige für den "
+"für den interaktiven Gebrauch besser geeignete Optionen verglichen mit "
+"spezialisierteren Werkzeugen wie &apt-get; und &apt-cache;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"Much like <command>apt</command> itself, its manpage is intended as an end "
+"user interface and as such only mentions the most used commands and options "
+"partly to not duplicate information in multiple places and partly to avoid "
+"overwhelming readers with a cornucopia of options and details."
+msgstr ""
+"Ganz wie <command>apt</command> selbst ist seine Handbuchseite als "
+"Endanwenderschnittstelle gedacht und erwähnt als solche nur die am "
+"häufigsten benutzten Befehle sowie Optionen. Die geschieht zum Teil, um "
+"keine Informationen an mehreren Stellen zu duplizieren und zum Teil, um "
+"Leser nicht mit einem Überfluss an Optionen und Einzelheiten zu überwältigen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(&apt-get;)"
+msgstr "(&apt-get;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>update</option> is used to download package information from all "
+"configured sources. Other commands operate on this data to e.g. perform "
+"package upgrades or search in and display details about all packages "
+"available for installation."
+msgstr ""
+"<option>update</option> wird verwendet, um von allen konfigurierten Quellen "
+"Paketinformationen herunterzuladen. Andere Befehle arbeiten mit diesen "
+"Daten, zum Beispiel, um Paket-Upgrades durchzuführen oder um darin zu suchen "
+"und um Einzelheiten über alle zur Installation verfügbaren Pakete anzuzeigen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>upgrade</option> is used to install available upgrades of all "
+"packages currently installed on the system from the sources configured via "
+"&sources-list;. New packages will be installed if required to satisfy "
+"dependencies, but existing packages will never be removed. If an upgrade for "
+"a package requires the remove of an installed package the upgrade for this "
+"package isn't performed."
+msgstr ""
+"<literal>upgrade</literal> wird verwendet, um verfügbare Upgrades für alle "
+"derzeit auf dem System installierten Pakete von den in der &sources-list; "
+"konfigurierten Quellen zu installieren. Neue Pakete werden installiert, "
+"falls dies nötig ist, um Abhängigkeiten zu erfüllen, existierende werden "
+"jedoch nie entfernt. Falls das Upgrade für ein Paket verlangt, dass ein "
+"installiertes Paket entfernt wird, wird dieses Upgrade nicht durchgeführt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>full-upgrade</literal> performs the function of upgrade but will "
+"remove currently installed packages if this is needed to upgrade the system "
+"as a whole."
+msgstr ""
+"<literal>full-upgrade</literal> verrichtet die Funktion von »upgrade«, wird "
+"aber auch installierte Pakete entfernen, falls dies erforderlich ist, um ein "
+"Upgrade des Systems als Ganzes durchzuführen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml apt-key.8.xml
+msgid ","
+msgstr ","
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Performs the requested action on one or more packages specified via &regex;, "
+"&glob; or exact match. The requested action can be overridden for specific "
+"packages by append a plus (+) to the package name to install this package or "
+"a minus (-) to remove it."
+msgstr ""
+"führt die angefragte Aktion für eines oder mehrere Pakete durch, die über "
+"&regex;, &glob; oder exakten Treffer angegeben wurden. Die angefragte Aktion "
+"kann für spezielle Pakete außer Kraft gesetzt werden, indem ein Plus (+) an "
+"den Paketnamen angehängt wird, um dieses Paket zu installieren oder ein "
+"Minus (-), um es zu entfernen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals (=) and the version of the package "
+"to select. Alternatively the version from a specific release can be selected "
+"by following the package name with a forward slash (/) and codename (&debian-"
+"stable-codename;, &debian-testing-codename;, sid …) or suite name (stable, "
+"testing, unstable). This will also select versions from this release for "
+"dependencies of this package if needed to satisfy the request."
+msgstr ""
+"Eine bestimmte Version eines Paketes kann durch den Paketnamen gefolgt von "
+"einem Gleichheitszeichen (=) und der Version des Paketes zur Installation "
+"ausgewählt werden. Alternativ kann die Version einer bestimmten "
+"Veröffentlichung ausgewählt werden, indem dem Paketnamen ein "
+"Vorwärtsschrägstrich und Codename ((&debian-stable-codename;, &debian-"
+"testing-codename;, sid …) oder Suite-Name (stable, testing, unstable) folgt. "
+"Dies wird außerdem Versionen aus dieser Veröffentlichung für Abhängigkeiten "
+"dieses Pakets auswählen, falls dies zum Erfüllen der Anfrage nötig ist."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Removing a package removes all packaged data, but leaves usually small "
+"(modified) user configuration files behind, in case the remove was an "
+"accident. Just issuing an installation request for the accidentally removed "
+"package will restore its function as before in that case. On the other hand "
+"you can get rid of these leftovers by calling <command>purge</command> even "
+"on already removed packages. Note that this does not affect any data or "
+"configuration stored in your home directory."
+msgstr ""
+"Entfernen eines Pakets entfernt alle paketierten Daten, hinterlässt jedoch "
+"üblicherweise kleine (veränderte) Benutzerkonfigurationsdateien für den "
+"Fall, dass das Entfernen unbeabsichtigt geschah. Das bloße Eingeben einer "
+"Installationsanfrage für das versehentlich entfernte Paket wird seine "
+"Funktionen wieder so herstellen, wie sie vorher waren. Andererseits können "
+"Sie diese Ãœberbleibsel durch den Aufruf von <command>purge</command> "
+"loswerden, sogar bei bereits entfernten Paketen. Beachten Sie, dass dies "
+"keine Daten oder Konfigurationsdateien betrifft, die in Ihrem Home-"
+"Verzeichnis gespeichert sind."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed as dependencies changed or the package(s) needing them "
+"were removed in the meantime."
+msgstr ""
+"<literal>autoremove</literal> wird benutzt, um Pakete zu entfernen, die "
+"automatisch installiert wurden, um Abhängigkeiten für andere Pakete zu "
+"erfüllen und die nicht mehr benötigt werden, da sich die Abhängigkeiten "
+"geändert haben oder die Pakete, die sie benötigten, in der Zwischenzeit "
+"entfernt wurden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"You should check that the list does not include applications you have grown "
+"to like even though they were once installed just as a dependency of another "
+"package. You can mark such a package as manually installed by using &apt-"
+"mark;. Packages which you have installed explicitly via <command>install</"
+"command> are also never proposed for automatic removal."
+msgstr ""
+"Sie sollten prüfen, ob die Liste keine Anwendungen enthält, die sie zu "
+"schätzen gelernt haben, obwohl sie nur als Abhängigkeit eines anderen Pakets "
+"installiert wurden. Sie können solch ein Paket mittels &apt-mark; als "
+"manuell installiert markieren. Pakete, die Sie explizit per "
+"<command>install</command> installiert haben, werden niemals zum "
+"automatischen Entfernen vorgeschlagen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(&apt-cache;)"
+msgstr "(&apt-cache;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>search</option> can be used to search for the given &regex; term(s) "
+"in the list of available packages and display matches. This can e.g. be "
+"useful if you are looking for packages having a specific feature. If you "
+"are looking for a package including a specific file try &apt-file;."
+msgstr ""
+"<option>search</option> kann zur Suche nach den angegebenen &regex;-"
+"Begriffen in der Liste verfügbarer Pakete und zur anzeige der Treffer "
+"benutzt werden. Dies kann z.B. nützlich sein, wenn Sie nach Paketen suchen, "
+"die eine bestimmte Funktionalität bieten. Falls Sie nach einem Paket suchen, "
+"das eine bestimmte Datei enthält, probieren Sie es mit &apt-file;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Show information about the given package(s) including its dependencies, "
+"installation and download size, sources the package is available from, the "
+"description of the packages content and much more. It can e.g. be helpful to "
+"look at this information before allowing &apt; to remove a package or while "
+"searching for new packages to install."
+msgstr ""
+"zeigt Informationen über die angegebenen Pakete einschließlich ihrer "
+"Abhängigkeiten, Installations- und Herunterladegröße, Quellen, in denen das "
+"Paket verfügbar ist, der Beschreibung des Paketinhalts und vieles mehr. Es "
+"kann z.B. hilfreich sein, einen Blick auf diese Informationen zu werfen, "
+"bevor Sie &apt; gestatten, ein Paket zu entfernen oder wenn Sie neue Pakete "
+"zur Installation suchen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(work-in-progress)"
+msgstr "(in Arbeit)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>list</option> is somewhat similar to <command>dpkg-query --list</"
+"command> in that it can display a list of packages satisfying certain "
+"criteria. It supports &glob; patterns for matching package names as well as "
+"options to list installed (<option>--installed</option>), upgradeable "
+"(<option>--upgradeable</option>) or all available (<option>--all-versions</"
+"option>) versions."
+msgstr ""
+"<literal>list</literal> ist <command>dpkg-query --list</command> insofern "
+"ziemlich ähnlich, als dass es eine Liste von Paketen anzeigen kann, die "
+"bestimmte Kriterien erfüllen. Es unterstützt &glob;-Muster zum Abgleich von "
+"Paketnamen ebenso wie Optionen zum Auflisten von installierten (<option>--"
+"installed</option>) Versionen, solchen, von denen ein Upgrade durchgeführt "
+"werden kann (<option>--upgradeable</option>) oder allen verfügbaren "
+"(<option>--all-versions</option>)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>edit-sources</literal> lets you edit your &sources-list; files in "
+"your preferred texteditor while also providing basic sanity checks."
+msgstr ""
+"<literal>edit-sources</literal> ermöglicht die Bearbeitung Ihrer &sources-"
+"list;-Dateien in Ihrem bevorzugten Texteditor und stellt außerdem "
+"grundlegende Plausibilitätsprüfungen bereit."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml
+msgid "Script Usage and Differences from Other APT Tools"
+msgstr "Skriptaufruf und Unterschiede zu anderen APT-Werkzeugen"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"The &apt; commandline is designed as an end-user tool and it may change "
+"behavior between versions. While it tries not to break backward "
+"compatibility this is not guaranteed either if a change seems beneficial for "
+"interactive use."
+msgstr ""
+"Die &apt;-Befehlszeile wurde als Endanwenderwerkzeug entworfen und kann bei "
+"Versionswechseln ihr Verhalten ändern. Obwohl sie versucht, nicht die "
+"Abwärtskompatibilität zu beschädigen, kann dies nicht garantiert werden, "
+"wenn eine Änderung vorteilhaft für den interaktiven Gebrauch zu sein scheint."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"All features of &apt; are available in dedicated APT tools like &apt-get; "
+"and &apt-cache; as well. &apt; just changes the default value of some "
+"options (see &apt-conf; and specifically the Binary scope). So you should "
+"prefer using these commands (potentially with some additional options "
+"enabled) in your scripts as they keep backward compatibility as much as "
+"possible."
+msgstr ""
+"Alle Funktionalitäten von &apt; sind in APT-zugehörigen Werkzeugen wie &apt-"
+"cache; und &apt-get; ebenfalls verfügbar.&apt; ändert nur den Vorgabewert "
+"einiger Optionen (siehe &apt-conf; und insbesondere den Geltungsbereich des "
+"Programms). Daher sollten Sie vorzugsweise diese Befehle (unter Umständen "
+"mit einigen zusätzlichen aktivierten Optionen) in Ihren Skripten verwenden, "
+"da sie die Abwärtskompatibilität so weit wie möglich aufrechterhalten."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "See Also"
+msgstr "Siehe auch"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
+"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+msgstr ""
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, die APT-"
+"Benutzeranleitung in &guidesdir;, &apt-preferences;, das APT-Howto."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-cdrom.8.xml
+#: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml
+msgid "Diagnostics"
+msgstr "Diagnose"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"<command>apt</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+"<command>apt</command> gibt bei normalen Operationen 0 zurück, dezimal 100 "
+"bei Fehlern."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-get.8.xml
+msgid "APT package handling utility -- command-line interface"
+msgstr "APT-Werkzeug für den Umgang mit Paketen -- Befehlszeilenschnittstelle"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"<command>apt-get</command> is the command-line tool for handling packages, "
+"and may be considered the user's \"back-end\" to other tools using the APT "
+"library. Several \"front-end\" interfaces exist, such as &aptitude;, "
+"&synaptic; and &wajig;."
+msgstr ""
+"<command>apt-get</command> ist ein Befehlszeilenwerkzeug zur Handhabung von "
+"Paketen und könnte als »Backend« anderer Werkzeugen betrachtet werden, die "
+"die APT-Bibliothek benutzen. Es existieren mehrere "
+"Oberflächenschnittstellen, wie &aptitude;, &synaptic; und &wajig;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml apt-cache.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt-ftparchive.1.xml
+msgid ""
+"Unless the <option>-h</option>, or <option>--help</option> option is given, "
+"one of the commands below must be present."
+msgstr ""
+"Sofern nicht die <option>-h</option>-, oder <option>--help</option>-Option "
+"angegeben ist, muss einer der unten aufgeführten Befehle vorkommen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>update</literal> is used to resynchronize the package index files "
+"from their sources. The indexes of available packages are fetched from the "
+"location(s) specified in <filename>/etc/apt/sources.list</filename>. For "
+"example, when using a Debian archive, this command retrieves and scans the "
+"<filename>Packages.gz</filename> files, so that information about new and "
+"updated packages is available. An <literal>update</literal> should always be "
+"performed before an <literal>upgrade</literal> or <literal>dist-upgrade</"
+"literal>. Please be aware that the overall progress meter will be incorrect "
+"as the size of the package files cannot be known in advance."
+msgstr ""
+"<literal>update</literal> wird benutzt, um die Paketindexdatei wieder mit "
+"ihren Quellen zu synchronisieren. Die Indexe verfügbarer Pakete werden von "
+"den in <filename>/etc/apt/sources.list</filename> angegebenen Orten geladen. "
+"Wenn Sie zum Beispiel ein Debian-Archiv benutzen, erneuert dieser Befehl die "
+"<filename>Packages.gz</filename>-Dateien und wertet sie aus, so dass "
+"Informationen über neue und aktualisierte Pakete verfügbar sind. Ein "
+"<literal>update</literal> sollte immer vor einem <literal>upgrade</literal> "
+"oder <literal>dist-upgrade</literal> ausgeführt werden. Bitte seien Sie sich "
+"bewusst, dass die Gesamtfortschrittsanzeige nicht richtig sein wird, da die "
+"Größe der Pakete nicht im voraus bekannt ist."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>upgrade</literal> is used to install the newest versions of all "
+"packages currently installed on the system from the sources enumerated in "
+"<filename>/etc/apt/sources.list</filename>. Packages currently installed "
+"with new versions available are retrieved and upgraded; under no "
+"circumstances are currently installed packages removed, or packages not "
+"already installed retrieved and installed. New versions of currently "
+"installed packages that cannot be upgraded without changing the install "
+"status of another package will be left at their current version. An "
+"<literal>update</literal> must be performed first so that <command>apt-get</"
+"command> knows that new versions of packages are available."
+msgstr ""
+"<literal>upgrade</literal> wird benutzt, um die neusten Versionen aller "
+"aktuell auf dem System installierten Pakete aus den in <filename>/etc/apt/"
+"sources.list</filename> aufgezählten Quellen zu installieren. Aktuell "
+"installierte Pakete mit verfügbaren neuen Versionen werden heruntergeladen "
+"und das Upgrade durchgeführt. Unter keinen Umständen werden derzeit "
+"installierte Pakete entfernt oder nicht installierte Pakete heruntergeladen "
+"und installiert. Neue Versionen von aktuell installierten Paketen von denen "
+"kein Upgrade durchgeführt werden kann, ohne den Installationsstatus eines "
+"anderen Paketes zu ändern, werden in ihrer aktuellen Version bleiben. Zuerst "
+"muss ein <literal>update</literal> durchgeführt werden, so dass <command>apt-"
+"get</command> die neuen Versionen der verfügbaren Pakete kennt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>dist-upgrade</literal> in addition to performing the function of "
+"<literal>upgrade</literal>, also intelligently handles changing dependencies "
+"with new versions of packages; <command>apt-get</command> has a \"smart\" "
+"conflict resolution system, and it will attempt to upgrade the most "
+"important packages at the expense of less important ones if necessary. The "
+"<literal>dist-upgrade</literal> command may therefore remove some packages. "
+"The <filename>/etc/apt/sources.list</filename> file contains a list of "
+"locations from which to retrieve desired package files. See also &apt-"
+"preferences; for a mechanism for overriding the general settings for "
+"individual packages."
+msgstr ""
+"<literal>dist-upgrade</literal> führt zusätzlich zu der Funktion von "
+"<literal>upgrade</literal> intelligente Handhabung von "
+"Abhängigkeitsänderungen mit neuen Versionen von Paketen durch. <command>apt-"
+"get</command> hat ein »intelligentes« Konfliktauflösungssystem und es wird "
+"versuchen, Upgrades der wichtigsten Pakete, wenn nötig zu Lasten der weniger "
+"wichtigen, zu machen. So könnte der <literal>dist-upgrade</literal>-Befehl "
+"einige Pakete entfernen. Die <filename>/etc/apt/sources.list</filename>-"
+"Datei enthält eine Liste mit Orten, von denen gewünschte Paketdateien "
+"abgerufen werden. Siehe auch &apt-preferences; für einen Mechanismus zum "
+"überschreiben der allgemeinen Einstellungen für einzelne Pakete."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>dselect-upgrade</literal> is used in conjunction with the "
+"traditional Debian packaging front-end, &dselect;. <literal>dselect-upgrade</"
+"literal> follows the changes made by &dselect; to the <literal>Status</"
+"literal> field of available packages, and performs the actions necessary to "
+"realize that state (for instance, the removal of old and the installation of "
+"new packages)."
+msgstr ""
+"<literal>dselect-upgrade</literal> wird zusammen mit der traditionellen "
+"Debian-Oberfläche &dselect; benutzt. <literal>dselect-upgrade</literal> "
+"folgt den durch &dselect; am <literal>Status</literal>-Feld verfügbarer "
+"Pakete gemachten Änderungen und führt die notwendigen Aktionen durch, um "
+"diesen Status zu realisieren (zum Beispiel das Entfernen von alten und "
+"Installieren von neuen Paketen)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>install</literal> is followed by one or more packages desired for "
+"installation or upgrading. Each package is a package name, not a fully "
+"qualified filename (for instance, in a Debian system, <package>apt-utils</"
+"package> would be the argument provided, not <filename>apt-utils_&apt-"
+"product-version;_amd64.deb</filename>). All packages required by the "
+"package(s) specified for installation will also be retrieved and installed. "
+"The <filename>/etc/apt/sources.list</filename> file is used to locate the "
+"desired packages. If a hyphen is appended to the package name (with no "
+"intervening space), the identified package will be removed if it is "
+"installed. Similarly a plus sign can be used to designate a package to "
+"install. These latter features may be used to override decisions made by apt-"
+"get's conflict resolution system."
+msgstr ""
+"<literal>install</literal> wird gefolgt von einem oder mehreren gewünschten "
+"Paketen zur Installation oder zum Upgrade. Jedes Paket ist ein Paketname, "
+"kein vollständig zusammengesetzter Dateiname (zum Beispiel wäre in einem "
+"»Debian«-System <package>apt-utils</package> das bereitgestellte Argument, "
+"nicht <filename>apt-utils_&apt-product-version;_amd64.deb</filename>). Alle "
+"von den zur Installation angegebenen Paketen benötigten Pakete werden "
+"zusätzlich heruntergeladen und installiert. Die <filename>/etc/apt/sources."
+"list</filename>-Datei wird benutzt, um die gewünschten Pakete zu finden. "
+"Wenn ein Bindestrich an den Paketnamen (ohne Leerzeichen dazwischen) "
+"angehängt ist, wird das erkannte Pakete entfernt, falls es installiert ist. "
+"Ähnlich kann ein Pluszeichen benutzt werden, um ein Paket zum Installieren "
+"vorzumerken. Diese letzteren Funktionen können benutzt werden, um "
+"Entscheidungen zu überschreiben, die vom Konfliktauflösungssystem von apt-"
+"get getroffen wurden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals and the version of the package to "
+"select. This will cause that version to be located and selected for install. "
+"Alternatively a specific distribution can be selected by following the "
+"package name with a slash and the version of the distribution or the Archive "
+"name (stable, testing, unstable)."
+msgstr ""
+"Eine bestimmte Version eines Paketes kann durch den Paketnamen gefolgt von "
+"einem Gleichheitszeichen und der Version des Paketes zur Installation "
+"ausgewählt werden. Dies bewirkt, dass diese Version gesucht und zum "
+"Installieren ausgewählt wird. Alternativ kann eine bestimmte Distribution "
+"durch den Paketnamen gefolgt von einem Schrägstrich und der Version der "
+"Distribution oder des Archivnamens (»stable«, »testing«, »unstable«) "
+"ausgewählt werden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Both of the version selection mechanisms can downgrade packages and must be "
+"used with care."
+msgstr ""
+"Beide Mechanismen der Versionsauswahl können ein Downgrade von Paketen "
+"durchführen und müssen mit Vorsicht gehandhabt werden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This is also the target to use if you want to upgrade one or more already-"
+"installed packages without upgrading every package you have on your system. "
+"Unlike the \"upgrade\" target, which installs the newest version of all "
+"currently installed packages, \"install\" will install the newest version of "
+"only the package(s) specified. Simply provide the name of the package(s) "
+"you wish to upgrade, and if a newer version is available, it (and its "
+"dependencies, as described above) will be downloaded and installed."
+msgstr ""
+"Dies ist außerdem die bevorzugt zu benutzende Art, wenn Sie ein Upgrade "
+"eines oder mehrerer bereits installierter Pakete durchführen möchten, ohne "
+"ein Upgrade aller Pakete, die Sie auf Ihrem System haben, durchzuführen. "
+"Anders als das Ziel von »upgrade«, das die neusten Versionen aller aktuell "
+"installierten Pakete installiert, wird »install« nur die neusten Versionen "
+"der angegebenen Pakete installieren. Geben Sie einfach den Namen des Paketes "
+"an, von dem Sie ein Upgrade durchführen möchten und wenn eine neuere Version "
+"verfügbar ist, wird sie (und ihre Abhängigkeiten, wie oben beschrieben) "
+"heruntergeladen und installiert."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Finally, the &apt-preferences; mechanism allows you to create an alternative "
+"installation policy for individual packages."
+msgstr ""
+"Letztendlich erlaubt Ihnen der &apt-preferences;-Mechanismus eine "
+"alternative Installationsrichtlinie für eigene Pakete zu erzeugen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If no package matches the given expression and the expression contains one "
+"of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and "
+"it is applied to all package names in the database. Any matches are then "
+"installed (or removed). Note that matching is done by substring so 'lo.*' "
+"matches 'how-lo' and 'lowest'. If this is undesired, anchor the regular "
+"expression with a '^' or '$' character, or create a more specific regular "
+"expression."
+msgstr ""
+"Wenn keine Pakete dem angegebenen Ausdruck entsprechen und der Ausdruck "
+"entweder ».«,»,«,»?« oder »*« enthält, dann wird vermutet, dass es sich um "
+"einen regulären POSIX-Ausdruck handelt und er wird auf alle Paketnamen in "
+"der Datenbank angewandt. Jeder Treffer wird dann installiert (oder "
+"entfernt). Beachten Sie, dass nach übereinstimmenden Zeichenkettenteilen "
+"gesucht wird, so dass »lo.*« auf »how-lo« und »lowest« passt. Wenn dies "
+"nicht gewünscht wird, hängen Sie an den regulären Ausdruck ein »^«- oder »$«-"
+"Zeichen, um genauere reguläre Ausdruck zu erstellen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>remove</literal> is identical to <literal>install</literal> except "
+"that packages are removed instead of installed. Note that removing a package "
+"leaves its configuration files on the system. If a plus sign is appended to "
+"the package name (with no intervening space), the identified package will be "
+"installed instead of removed."
+msgstr ""
+"<literal>remove</literal> ist identisch mit <literal>install</literal>, mit "
+"der Ausnahme, dass Pakete entfernt anstatt installiert werden. Beachten Sie, "
+"dass das Entfernen von Paketen deren Konfigurationsdateien im System "
+"belässt. Wenn ein Pluszeichen an den Paketnamen angehängt wird (ohne "
+"Leerzeichen dazwischen) wird das erkannte Paket installiert anstatt entfernt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>purge</literal> is identical to <literal>remove</literal> except "
+"that packages are removed and purged (any configuration files are deleted "
+"too)."
+msgstr ""
+"<literal>purge</literal> entspricht <literal>remove</literal> mit der "
+"Ausnahme, dass Pakete entfernt und vollständig gelöscht werden (jegliche "
+"Konfigurationsdateien werden mitgelöscht)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>source</literal> causes <command>apt-get</command> to fetch source "
+"packages. APT will examine the available packages to decide which source "
+"package to fetch. It will then find and download into the current directory "
+"the newest available version of that source package while respecting the "
+"default release, set with the option <literal>APT::Default-Release</"
+"literal>, the <option>-t</option> option or per package with the "
+"<literal>pkg/release</literal> syntax, if possible."
+msgstr ""
+"<literal>source</literal> veranlasst <command>apt-get</command> dazu, "
+"Paketquellen zu laden. APT wird die verfügbaren Pakete überprüfen, um zu "
+"entscheiden, welche Paketquellen geladen werden. Es wird dann die neueste "
+"Version der Paketquelle finden und in das aktuelle Verzeichnis "
+"herunterladen. Dabei berücksichtigt es das Vorgabe-Release, das mit der "
+"Option <literal>APT::Default-Release</literal>, der Option <option>-t</"
+"option> oder pro Paket mit der <literal>pkg/release</literal>-Syntax gesetzt "
+"wurde, wenn möglich."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Source packages are tracked separately from binary packages via <literal>deb-"
+"src</literal> lines in the &sources-list; file. This means that you will "
+"need to add such a line for each repository you want to get sources from; "
+"otherwise you will probably get either the wrong (too old/too new) source "
+"versions or none at all."
+msgstr ""
+"Paketquellen werden vom Programmpaket getrennt über <literal>deb-src</"
+"literal>-Zeilen in der &sources-list;-Datei nachverfolgt. Das bedeutet, dass "
+"Sie für jedes Depot, aus dem Sie Quellen erhalten wollen, eine solche Zeile "
+"hinzufügen müssen; andernfalls werden Sie eventuell entweder die falschen "
+"Versionen (zu alte/zu neue) oder überhaupt keine Quellpakete erhalten."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If the <option>--compile</option> option is specified then the package will "
+"be compiled to a binary .deb using <command>dpkg-buildpackage</command> for "
+"the architecture as defined by the <command>--host-architecture</command> "
+"option. If <option>--download-only</option> is specified then the source "
+"package will not be unpacked."
+msgstr ""
+"Falls die Option <option>--compile</option> angegeben ist, dann wird das "
+"Paket unter Benutzung von <command>dpkg-buildpackage</command> für die "
+"Architektur, die durch <command>--host-architecture</command> definiert ist, "
+"zu einem binären .deb kompiliert. Falls <option>--download-only</option> "
+"angegeben ist, wird das Quellpaket nicht entpackt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"A specific source version can be retrieved by postfixing the source name "
+"with an equals and then the version to fetch, similar to the mechanism used "
+"for the package files. This enables exact matching of the source package "
+"name and version, implicitly enabling the <literal>APT::Get::Only-Source</"
+"literal> option."
+msgstr ""
+"Eine bestimmte Quellversion kann durch Anhängen eines Gleichheitszeichens "
+"vor den Paketnamen und dann der Version zum Herunterladen erhalten werden, "
+"ähnlich dem Mechanismus, der für Paketdateien benutzt wird. Dies ermöglicht "
+"exakte Ãœbereinstimmung von Quellpaketname und -Version und impliziert das "
+"Einschalten der <literal>APT::Get::Only-Source</literal>-Option."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Note that source packages are not installed and tracked in the "
+"<command>dpkg</command> database like binary packages; they are simply "
+"downloaded to the current directory, like source tarballs."
+msgstr ""
+"Beachten Sie, dass Quellpakete nicht wie normale Programmpakete in der "
+"Datenbank von <command>dpkg</command> installiert und nachverfolgt werden; "
+"sie werden nur wie Quell-Tarballs in das aktuelle Verzeichnis "
+"heruntergeladen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>build-dep</literal> causes apt-get to install/remove packages in an "
+"attempt to satisfy the build dependencies for a source package. By default "
+"the dependencies are satisfied to build the package natively. If desired a "
+"host-architecture can be specified with the <option>--host-architecture</"
+"option> option instead."
+msgstr ""
+"<literal>build-dep</literal> veranlasst apt-get, Pakete zu installieren/"
+"entfernen, um zu versuchen, die Bauabhängigkeiten eines Quellpakets zu "
+"erfüllen. Standardmäßig werden die Abhängigkeiten erfüllt, um das Paket auf "
+"native Art zu bauen. Falls gewünscht, kann stattdessen eine "
+"Rechnerarchitektur mit der Option <option>--host-architecture</option> "
+"angegeben werden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>check</literal> is a diagnostic tool; it updates the package cache "
+"and checks for broken dependencies."
+msgstr ""
+"<literal>check</literal> ist ein Diagnosewerkzeug. Es aktualisiert den "
+"Paketzwischenspeicher und prüft, ob beschädigte Abhängigkeiten vorliegen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>download</literal> will download the given binary package into the "
+"current directory."
+msgstr ""
+"<literal>download</literal> wird das angegebene Binärpaket in das aktuelle "
+"Verzeichnis herunterladen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>clean</literal> clears out the local repository of retrieved "
+"package files. It removes everything but the lock file from "
+"<filename>&cachedir;/archives/</filename> and <filename>&cachedir;/archives/"
+"partial/</filename>."
+msgstr ""
+"<literal>clean</literal> bereinigt das lokale Depot von heruntergeladenen "
+"Paketdateien. Es entfernt alles außer der Sperrdatei aus "
+"<filename>&cachedir;/archives/</filename> und <filename>&cachedir;/archives/"
+"partial/</filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "(and the"
+msgstr "(und der"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias since 1.1)"
+msgstr "Alias seit 1.1)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Like <literal>clean</literal>, <literal>autoclean</literal> clears out the "
+"local repository of retrieved package files. The difference is that it only "
+"removes package files that can no longer be downloaded, and are largely "
+"useless. This allows a cache to be maintained over a long period without it "
+"growing out of control. The configuration option <literal>APT::Clean-"
+"Installed</literal> will prevent installed packages from being erased if it "
+"is set to off."
+msgstr ""
+"Wie <literal>clean</literal> bereinigt <literal>autoclean</literal> das "
+"lokale Depot von heruntergeladenen Paketdateien. Der Unterschied besteht "
+"darin, dass es nur Pakete entfernt, die nicht mehr heruntergeladen werden "
+"können und größtenteils nutzlos sind. Dies erlaubt es, einen "
+"Zwischenspeicher über eine lange Zeitspanne zu betreuen, ohne dass er "
+"unkontrolliert anwächst. Die Konfigurationsoption <literal>APT::Clean-"
+"Installed</literal> wird installierte Pakete vor der Löschung bewahren, wenn "
+"sie auf »off« gesetzt ist."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed."
+msgstr ""
+"<literal>autoremove</literal> wird benutzt, um Pakete zu entfernen, die "
+"automatisch installiert wurden, um Abhängigkeiten für andere Pakete zu "
+"erfüllen und die nicht mehr benötigt werden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>changelog</literal> tries to download the changelog of a package "
+"and displays it through <command>sensible-pager</command>. By default it "
+"displays the changelog for the version that is installed. However, you can "
+"specify the same options as for the <option>install</option> command."
+msgstr ""
+"<literal>changelog</literal> versucht, das Changelog eines Pakets "
+"herunterzuladen und mit <command>sensible-pager</command> anzuzeigen. "
+"Standardmäßig zeigt es das Changelog für die installierte Version. Sie "
+"können jedoch die gleichen Optionen wie für den Befehl <option>install</"
+"option> angeben."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Displays by default a deb822 formatted listing of information about all data "
+"files (aka index targets) <command>apt-get update</command> would download. "
+"Supports a <option>--format</option> option to modify the output format as "
+"well as accepts lines of the default output to filter the records by. The "
+"command is mainly used as an interface for external tools working with APT "
+"to get information as well as filenames for downloaded files so they can use "
+"them as well instead of downloading them again on their own. Detailed "
+"documentation is omitted here and can instead be found in the file &apt-"
+"acquire-additional-files; shipped by the <package>apt-doc</package> package."
+msgstr ""
+"zeigt standardmäßig ein Liste im Deb822-Format mit Informationen über alle "
+"Datendateien (auch als Indexziele bekannt) an, die <command>apt-get update</"
+"command> herunterladen würde. Es unterstützt eine <option>--format</option>-"
+"Option, um das Ausgabeformat zu ändern und auch um Zeilen der "
+"Standardausgabe zum Filtern der Datensätze zu akzeptieren. Der Befehl wird "
+"hauptsächlich als eine Schnittstelle für externe Werkzeuge benutzt, die mit "
+"APT arbeiten, um Informationen sowie Dateinamen für heruntergeladenen "
+"Dateien zu holen, um sie auch anstelle selbst heruntergeladener zu "
+"verwenden. Umfangreiche Dokumentation wird hier weggelassen und kann "
+"stattdessen in der Datei &apt-acquire-additional-files; durch das Paket "
+"<package>apt-doc</package> geliefert."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml apt-cache.8.xml apt-config.8.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "options"
+msgstr "Optionen"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not consider recommended packages as a dependency for installing. "
+"Configuration Item: <literal>APT::Install-Recommends</literal>."
+msgstr ""
+"betrachtet empfohlene Pakete nicht als Abhängigkeit für die Installation. "
+"Konfigurationselement: <literal>APT::Install-Recommends</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Consider suggested packages as a dependency for installing. Configuration "
+"Item: <literal>APT::Install-Suggests</literal>."
+msgstr ""
+"betrachtet empfohlene Pakete als Abhängigkeit für die Installation. "
+"Konfigurationselement: <literal>APT::Install-Suggests</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Download only; package files are only retrieved, not unpacked or installed. "
+"Configuration Item: <literal>APT::Get::Download-Only</literal>."
+msgstr ""
+"nur herunterladen; Paketdateien werden nur heruntergeladen, nicht entpackt "
+"oder installiert. Konfigurationselement: <literal>APT::Get::Download-Only</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Fix; attempt to correct a system with broken dependencies in place. This "
+"option, when used with install/remove, can omit any packages to permit APT "
+"to deduce a likely solution. If packages are specified, these have to "
+"completely correct the problem. The option is sometimes necessary when "
+"running APT for the first time; APT itself does not allow broken package "
+"dependencies to exist on a system. It is possible that a system's dependency "
+"structure can be so corrupt as to require manual intervention (which usually "
+"means using <command>dpkg --remove</command> to eliminate some of the "
+"offending packages). Use of this option together with <option>-m</option> "
+"may produce an error in some situations. Configuration Item: <literal>APT::"
+"Get::Fix-Broken</literal>."
+msgstr ""
+"beheben; versucht ein System von vorhandenen beschädigten Abhängigkeiten zu "
+"korrigieren. Diese Option kann, wenn sie mit »install«/»remove« benutzt "
+"wird, einige Pakete weglassen, um es APT zu erlauben, eine wahrscheinliche "
+"Lösung herzuleiten. Falls Pakete angegeben wurden, müssen diese das Problem "
+"vollständig korrigieren. Die Option ist manchmal nötig, wenn APT zum ersten "
+"Mal ausgeführt wird. APT selbst erlaubt es nicht, dass auf einen System "
+"beschädigte Paketabhängigkeiten existieren. Es ist möglich, dass eine "
+"Abhängigkeitsstruktur eines Systems so fehlerhaft ist, dass ein manuelles "
+"Eingreifen erforderlich ist (was normalerweise bedeutet, dass <command>dpkg "
+"--remove</command> benutzt wird, um einige der fehlerhaften Pakete zu "
+"beseitigen). Wenn Sie die Option zusammen mit <option>-m</option> benutzen, "
+"könnte das in einigen Situationen zu Fehlern führen. Konfigurationselement: "
+"<literal>APT::Get::Fix-Broken</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore missing packages; if packages cannot be retrieved or fail the "
+"integrity check after retrieval (corrupted package files), hold back those "
+"packages and handle the result. Use of this option together with <option>-f</"
+"option> may produce an error in some situations. If a package is selected "
+"for installation (particularly if it is mentioned on the command line) and "
+"it could not be downloaded then it will be silently held back. "
+"Configuration Item: <literal>APT::Get::Fix-Missing</literal>."
+msgstr ""
+"ignoriert fehlende Pakete; Wenn Pakete nicht heruntergeladen werden können "
+"oder die Integritätsprüfung nach dem Herunterladen fehlschlägt (fehlerhafte "
+"Paketdateien), werden diese Pakete zurückgehalten und das Ergebnis "
+"verarbeitet. Die Benutzung dieser Option zusammen mit <option>-f</option> "
+"kann in einigen Situationen zu Fehlern führen. Wenn ein Paket zur "
+"Installation ausgewählt ist (besonders, wenn es auf der Befehlszeile genannt "
+"wurde) und es nicht heruntergeladen werden kann, wird es stillschweigend "
+"zurückgehalten. Konfigurationselement: <literal>APT::Get::Fix-Missing</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Disables downloading of packages. This is best used with <option>--ignore-"
+"missing</option> to force APT to use only the .debs it has already "
+"downloaded. Configuration Item: <literal>APT::Get::Download</literal>."
+msgstr ""
+"schaltet das Herunterladen von Paketen aus. Dies wird am besten mit "
+"<option>--ignore-missing</option> benutzt, um APT zu zwingen, nur die .debs "
+"zu benutzten, die es bereits heruntergeladenen hat. Konfigurationselement: "
+"<literal>APT::Get::Download</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Note that quiet level 2 implies <option>-y</option>; you should never "
+"use -qq without a no-action modifier such as -d, --print-uris or -s as APT "
+"may decide to do something you did not expect. Configuration Item: "
+"<literal>quiet</literal>."
+msgstr ""
+"still; erzeugt eine Ausgabe, die für Protokollierung geeignet ist und "
+"Fortschrittsanzeiger weglässt. Mehr »q«s unterdrücken mehr Ausgaben, bis zu "
+"einem Maximum von 2. Sie können außerdem <option>-q=#</option> benutzen, um "
+"die Stillestufe zu setzen, was die Konfigurationsdatei überschreibt. "
+"Beachten Sie, dass Stillestufe 2 <option>-y</option> impliziert. Sie sollten "
+"niemals -qq ohne einen keine-Aktion-Umwandler, wie -d, --print-uris oder -s "
+"benutzen, da APT entscheiden könnte, etwas zu tun, das Sie nicht erwarten. "
+"Konfigurationselement: <literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"No action; perform a simulation of events that would occur based on the "
+"current system state but do not actually change the system. Locking will be "
+"disabled (<option>Debug::NoLocking</option>) so the system state could "
+"change while <command>apt-get</command> is running. Simulations can also be "
+"executed by non-root users which might not have read access to all apt "
+"configuration distorting the simulation. A notice expressing this warning "
+"is also shown by default for non-root users (<option>APT::Get::Show-User-"
+"Simulation-Note</option>). Configuration Item: <literal>APT::Get::Simulate</"
+"literal>."
+msgstr ""
+"keine Aktion; führt eine Simulation von Ereignissen durch die basierend auf "
+"dem aktuellen Systemstatus auftreten würden, verändert das System jedoch "
+"nicht wirklich. Sperren wird deaktiviert (<option>Debug::NoLocking</"
+"option>), daher kann sich der Systemstatus ändern, während <command>apt-get</"
+"command> ausgeführt wird. Simulationen können auch von Nicht-Root-Benutzern "
+"ausgeführt werden, die möglicherweise keinen Lesezugriff auf alle APT-"
+"Konfigurationsdateien haben, wodurch die Simulation verfälscht wird. "
+"Außerdem wird standardmäßig Nicht-Root-Benutzern ein Hinweis angezeigt, der "
+"diese Warnung wiedergibt. (<option>APT::Get::Show-User-Simulation-Note</"
+"option>). Konfigurationselement: <literal>APT::Get::Simulate</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Simulated runs print out a series of lines, each representing a "
+"<command>dpkg</command> operation: configure (<literal>Conf</literal>), "
+"remove (<literal>Remv</literal>) or unpack (<literal>Inst</literal>). "
+"Square brackets indicate broken packages, and empty square brackets indicate "
+"breaks that are of no consequence (rare)."
+msgstr ""
+"Simulieren gibt eine Serie von Zeilen aus, von denen jede eine "
+"<command>dpkg</command>-Operation darstellt: Konfigurieren (<literal>Conf</"
+"literal>), Entfernen (<literal>Remv</literal>), Entpacken (<literal>Inst</"
+"literal>). Eckige Klammern zeigen beschädigte Pakete an und ein leeres Paar "
+"eckiger Klammern bedeutet Unterbrechungen, die keine Folgen haben (selten)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Automatic yes to prompts; assume \"yes\" as answer to all prompts and run "
+"non-interactively. If an undesirable situation, such as changing a held "
+"package, trying to install a unauthenticated package or removing an "
+"essential package occurs then <literal>apt-get</literal> will abort. "
+"Configuration Item: <literal>APT::Get::Assume-Yes</literal>."
+msgstr ""
+"automatisches »Ja« auf Anfragen; Versucht »Ja« auf alle Anfragen zu "
+"antworten und ohne Eingaben zu laufen. Wenn eine unerwünschte Situation "
+"eintritt, wie ein gehaltenes Paket zu ändern, ein nicht authentifiziert "
+"Paket zu installieren oder ein essentielles Paket zu entfernen, dann wird "
+"<literal>apt-get</literal> abgebrochen. Konfigurationselement: <literal>APT::"
+"Get::Assume-Yes</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Automatic \"no\" to all prompts. Configuration Item: <literal>APT::Get::"
+"Assume-No</literal>."
+msgstr ""
+"automatisches »Nein« auf alle Anfragen. Konfigurationselement: <literal>APT::"
+"Get::Assume-No</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not show a list of all packages that are to be upgraded. Configuration "
+"Item: <literal>APT::Get::Show-Upgraded</literal>."
+msgstr ""
+"gibt keine Liste aller Pakete aus, von denen ein Upgrade durchgeführt wird. "
+"Konfigurationselement: <literal>APT::Get::Show-Upgraded</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Show full versions for upgraded and installed packages. Configuration Item: "
+"<literal>APT::Get::Show-Versions</literal>."
+msgstr ""
+"zeigt vollständige Versionen für Pakete, von denen ein Upgrade durchgeführt "
+"oder die installiert wurden. Konfigurationselement: <literal>APT::Get::Show-"
+"Versions</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the architecture packages are built for by <command>apt-"
+"get source --compile</command> and how cross-builddependencies are "
+"satisfied. By default is it not set which means that the host architecture "
+"is the same as the build architecture (which is defined by <literal>APT::"
+"Architecture</literal>). Configuration Item: <literal>APT::Get::Host-"
+"Architecture</literal>."
+msgstr ""
+"Diese Option steuert, wie die Architekturpakete durch <command>apt-get "
+"source --compile</command> gebaut und wie Cross-Bauabhängigkeiten erfüllt "
+"werden. Standardmäßig ist sie nicht gesetze, was bedeutet, dass die "
+"Rechnerarchitektur die gleiche wie die Bauarchitektur ist (die durch "
+"<literal>APT::Architecture</literal>) definiert wird). "
+"Konfigurationselement: <literal>APT::Get::Host-Architecture</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the activated build profiles for which a source package "
+"is built by <command>apt-get source --compile</command> and how build "
+"dependencies are satisfied. By default no build profile is active. More "
+"than one build profile can be activated at a time by concatenating them with "
+"a comma. Configuration Item: <literal>APT::Build-Profiles</literal>."
+msgstr ""
+"Diese Option steuert die aktivierten Bauprofile für die ein Quellpaket durch "
+"<command>apt-get source --compile</command> gebaut und wie Cross-"
+"Bauabhängigkeiten erfüllt werden. Standardmäßig ist kein Bauprofil aktiv. "
+"Ein weiteres Bauprofil kann gleichzeitig aktiviert werden, indem es durch "
+"ein Komma getrennt angehängt wird. Konfigurationselement: <literal>APT::"
+"Build-Profiles</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Compile source packages after downloading them. Configuration Item: "
+"<literal>APT::Get::Compile</literal>."
+msgstr ""
+"kompiliert Quellpakete, nachdem sie heruntergeladen wurden. "
+"Konfigurationselement: <literal>APT::Get::Compile</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore package holds; this causes <command>apt-get</command> to ignore a "
+"hold placed on a package. This may be useful in conjunction with "
+"<literal>dist-upgrade</literal> to override a large number of undesired "
+"holds. Configuration Item: <literal>APT::Ignore-Hold</literal>."
+msgstr ""
+"ignoriert zurückhalten des Paketes; Dies veranlasst <command>apt-get</"
+"command>, ein für das Paket gesetztes »Halten« zu ignorieren. Dies kann "
+"zusammen mit <literal>dist-upgrade</literal> nützlich sein, um eine große "
+"Anzahl ungewünschter »Halten« zu überschreiben. Konfigurationselement: "
+"<literal>APT::Ignore-Hold</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Allow installing new packages when used in conjunction with "
+"<literal>upgrade</literal>. This is useful if the update of a installed "
+"package requires new dependencies to be installed. Instead of holding the "
+"package back <literal>upgrade</literal> will upgrade the package and install "
+"the new dependencies. Note that <literal>upgrade</literal> with this option "
+"will never remove packages, only allow adding new ones. Configuration Item: "
+"<literal>APT::Get::Upgrade-Allow-New</literal>."
+msgstr ""
+"erlaubt das Installieren neuer Pakete, wenn es zusammen mit "
+"<literal>upgrade</literal> benutzt wird. Dies ist nützlich, falls das "
+"Aktualisieren eines installierten Pakets zur Installation neue "
+"Abhängigkeiten hat. Anstatt das Paket zurückzuhalten, wird <literal>upgrade</"
+"literal> ein Upgrade des Pakets durchführen und die neuen Abhängigkeiten "
+"installieren. Beachten Sie, dass <literal>upgrade</literal> mit dieser "
+"Option niemals Pakete entfernen, sondern nur das Hinzufügen neuer gestatten "
+"wird.Konfigurationselement: <literal>APT::Get::Upgrade-Allow-New</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not upgrade packages; when used in conjunction with <literal>install</"
+"literal>, <literal>no-upgrade</literal> will prevent packages on the command "
+"line from being upgraded if they are already installed. Configuration Item: "
+"<literal>APT::Get::Upgrade</literal>."
+msgstr ""
+"kein Upgrade von Paketen durchführen; Wenn es zusammen mit <literal>install</"
+"literal> benutzt wird, wird <literal>no-upgrade</literal> auf der "
+"Befehlszeile ein Upgrade von Paketen verhindern, wenn sie bereits "
+"installiert sind. Konfigurationselement: <literal>APT::Get::Upgrade</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not install new packages; when used in conjunction with <literal>install</"
+"literal>, <literal>only-upgrade</literal> will install upgrades for already "
+"installed packages only and ignore requests to install new packages. "
+"Configuration Item: <literal>APT::Get::Only-Upgrade</literal>."
+msgstr ""
+"keine neuen Pakete installieren. Wenn es zusammen mit <literal>install</"
+"literal> benutzt wird, wird <literal>only-upgrade</literal> nur Upgrades für "
+"bereits installierte Pakete installieren und Anfragen zur Installation neuer "
+"Pakete ignorieren. Konfigurationselement: <literal>APT::Get::Only-Upgrade</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This is a dangerous option that will cause apt to continue without prompting "
+"if it is doing downgrades. It should not be used except in very special "
+"situations. Using it can potentially destroy your system! Configuration "
+"Item: <literal>APT::Get::allow-downgrades</literal>. Introduced in APT 1.1."
+msgstr ""
+"Dies ist eine gefährliche Option, die APT veranlasst, ohne Nachfrage "
+"fortzufahren, wenn es Downgrades durchführt. Sie sollte nicht benutzt "
+"werden, außer in ganz besonderen Situationen. Ihre Verwendung kann "
+"möglicherweise Ihr System zerstören. Konfigurationselement: <literal>APT::"
+"Get::allow-downgrades</literal>. Eingeführt mit APT 1.1."
+
+# Tatsächlich fragt APT »J/n«
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is removing essentials. It should not be used except "
+"in very special situations. Using it can potentially destroy your system! "
+"Configuration Item: <literal>APT::Get::allow-remove-essential</literal>. "
+"Introduced in APT 1.1."
+msgstr ""
+"erzwingt »Ja«; Dies ist eine gefährliche Option, die APT veranlasst, ohne "
+"Nachfrage fortzufahren, wenn es wesentliche Teile entfernt. Sie sollte nicht "
+"benutzt werden, außer in ganz besonderen Situationen. Ihre Verwendung kann "
+"möglicherweise Ihr System zerstören. Konfigurationselement: <literal>APT::"
+"Get::allow-remove-essential</literal>. Eingeführt mit APT 1.1."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is changing held packages. It should not be used "
+"except in very special situations. Using it can potentially destroy your "
+"system! Configuration Item: <literal>APT::Get::allow-change-held-packages</"
+"literal>. Introduced in APT 1.1."
+msgstr ""
+"erzwingt »Ja«; Dies ist eine gefährliche Option, die APT veranlasst, ohne "
+"Nachfrage fortzufahren, wenn es gehaltene Pakete ändert. Sie sollte nicht "
+"benutzt werden, außer in ganz besonderen Situationen. Es zu benutzen, kann "
+"möglicherweise ihr System zerstören! Konfigurationselement: <literal>APT::"
+"Get::allow-change-held-packages</literal>. Eingeführt mit APT 1.1."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is doing something potentially harmful. It should "
+"not be used except in very special situations. Using <literal>force-yes</"
+"literal> can potentially destroy your system! Configuration Item: "
+"<literal>APT::Get::force-yes</literal>. This is deprecated and replaced by "
+"<option>--allow-downgrades</option>, <option>--allow-remove-essential</"
+"option>, <option>--allow-change-held-packages</option> in 1.1."
+msgstr ""
+"erzwingt »Ja«; Dies ist eine gefährliche Option, die APT veranlasst, ohne "
+"Nachfrage fortzufahren, wenn es etwas möglicherweise schädliches tut. Es "
+"sollte nicht benutzt werden, außer in ganz besonderen Situationen. "
+"<literal>force-yes</literal> zu benutzen, kann möglicherweise ihr System "
+"zerstören! Konfigurationselement: <literal>APT::Get::force-yes</literal>. "
+"Dies ist veraltet und wird in 1.1. durch <option>--allow-downgrades</"
+"option>, <option>--allow-remove-essential</option> und <option>--allow-"
+"change-held-packages</option> ersetzt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Instead of fetching the files to install their URIs are printed. Each URI "
+"will have the path, the destination file name, the size and the expected MD5 "
+"hash. Note that the file name to write to will not always match the file "
+"name on the remote site! This also works with the <literal>source</literal> "
+"and <literal>update</literal> commands. When used with the <literal>update</"
+"literal> command the MD5 and size are not included, and it is up to the user "
+"to decompress any compressed files. Configuration Item: <literal>APT::Get::"
+"Print-URIs</literal>."
+msgstr ""
+"Anstatt die Dateien herunterzuladen, werden ihre URIs ausgegeben. Jeder URI "
+"wird den Pfad, den Zieldateinamen, die Größe und den erwarteten MD5-Hash "
+"enthalten. Beachten Sie, dass der zu schreibende Dateiname nicht immer dem "
+"Dateinamen auf der entfernt gelegenen Seite entspricht. Dies funktioniert "
+"auch mit den Befehlen <literal>source</literal> und <literal>update</"
+"literal>. Wenn es mit dem Befehl <literal>update</literal> benutzt wird, "
+"sind MD5 und Größe nicht enthalten und es ist Aufgabe des Benutzers, "
+"komprimierte Dateien zu dekomprimieren. Konfigurationselement: <literal>APT::"
+"Get::Print-URIs</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Use purge instead of remove for anything that would be removed. An asterisk "
+"(\"*\") will be displayed next to packages which are scheduled to be purged. "
+"<option>remove --purge</option> is equivalent to the <option>purge</option> "
+"command. Configuration Item: <literal>APT::Get::Purge</literal>."
+msgstr ""
+"»purge« anstelle von »remove« für alles zu entfernende benutzen. Ein Stern "
+"(»*«) wird bei Paketen angezeigt, die zum vollständigen Entfernen vorgemerkt "
+"sind. <option>remove --purge</option> entspricht dem Befehl <option>purge</"
+"option>. Konfigurationselement: <literal>APT::Get::Purge</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Re-install packages that are already installed and at the newest version. "
+"Configuration Item: <literal>APT::Get::ReInstall</literal>."
+msgstr ""
+"installiert Pakete erneut, die bereits installiert sind und die neueste "
+"Version haben. Konfigurationselement: <literal>APT::Get::ReInstall</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option is on by default; use <literal>--no-list-cleanup</literal> to "
+"turn it off. When it is on, <command>apt-get</command> will automatically "
+"manage the contents of <filename>&statedir;/lists</filename> to ensure that "
+"obsolete files are erased. The only reason to turn it off is if you "
+"frequently change your sources list. Configuration Item: <literal>APT::Get::"
+"List-Cleanup</literal>."
+msgstr ""
+"Diese Option ist standardmäßig eingeschaltet. Um sie auszuschalten, benutzen "
+"Sie <literal>--no-list-cleanup</literal>. Wenn eingeschaltet, wird "
+"<command>apt-get</command> den Inhalt von <filename>&statedir;/lists</"
+"filename> automatisch verwalten, um sicherzustellen, dass veraltete Dateien "
+"gelöscht werden. Nur das häufige Ändern der Quelllisten stellt den einzigen "
+"Grund zum Ausschalten der Option dar. Konfigurationselement: <literal>APT::"
+"Get::List-Cleanup</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the default input to the policy engine; it creates a "
+"default pin at priority 990 using the specified release string. This "
+"overrides the general settings in <filename>/etc/apt/preferences</"
+"filename>. Specifically pinned packages are not affected by the value of "
+"this option. In short, this option lets you have simple control over which "
+"distribution packages will be retrieved from. Some common examples might be "
+"<option>-t '2.1*'</option>, <option>-t unstable</option> or <option>-t sid</"
+"option>. Configuration Item: <literal>APT::Default-Release</literal>; see "
+"also the &apt-preferences; manual page."
+msgstr ""
+"Diese Option steuert die standardmäßige Eingabe an die Einheit zur "
+"Durchsetzung der Richtlinien (»policy«), sie erstellt eine Vorgabe-Pin mit "
+"Priorität 990 unter Benutzung der angegebenen Release-Zeichenkette. Dies "
+"überschreibt die allgemeinen Einstellungen in <filename>/etc/apt/"
+"preferences</filename>. Pakete mit speziellem Pinning sind nicht vom Wert "
+"dieser Option betroffen. Kurz gesagt, gibt Ihnen diese Option einfache "
+"Kontrolle darüber, welche Distributions-Pakete heruntergeladen werden "
+"sollen. Einige typische Beispiele könnten <option>-t '2.1*'</option>, "
+"<option>-t unstable</option> oder <option>-t sid</option> sein. "
+"Konfigurationselement: <literal>APT::Default-Release</literal>; Lesen Sie "
+"auch die &apt-preferences;-Handbuchseite."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only perform operations that are 'trivial'. Logically this can be considered "
+"related to <option>--assume-yes</option>; where <option>--assume-yes</"
+"option> will answer yes to any prompt, <option>--trivial-only</option> will "
+"answer no. Configuration Item: <literal>APT::Get::Trivial-Only</literal>."
+msgstr ""
+"führt nur Operationen aus, die »trivial« sind. Logischerweise kann dies in "
+"Betracht bezogen auf <option>--assume-yes</option> sein, wobei <option>--"
+"assume-yes</option> auf jede Frage mit »Ja« und <option>--trivial-only</"
+"option> mit »Nein« antworten wird. Konfigurationselement: <literal>APT::Get::"
+"Trivial-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If any packages are to be removed apt-get immediately aborts without "
+"prompting. Configuration Item: <literal>APT::Get::Remove</literal>."
+msgstr ""
+"Wenn irgendwelche Pakete entfernt werden sollen, bricht apt-get sofort ohne "
+"Nachfrage ab. Konfigurationselement: <literal>APT::Get::Remove</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If the command is either <literal>install</literal> or <literal>remove</"
+"literal>, then this option acts like running the <literal>autoremove</"
+"literal> command, removing unused dependency packages. Configuration Item: "
+"<literal>APT::Get::AutomaticRemove</literal>."
+msgstr ""
+"Wenn der Befehl entweder <literal>install</literal> oder <literal>remove</"
+"literal> lautet, dann bewirkt diese Option wie das Ausführen des "
+"<literal>autoremove</literal>-Befehls das Entfernen der nicht benutzten "
+"Abhhängigkeitspakete. Konfigurationselement: <literal>APT::Get::"
+"AutomaticRemove</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only has meaning for the <literal>source</literal> and <literal>build-dep</"
+"literal> commands. Indicates that the given source names are not to be "
+"mapped through the binary table. This means that if this option is "
+"specified, these commands will only accept source package names as "
+"arguments, rather than accepting binary package names and looking up the "
+"corresponding source package. Configuration Item: <literal>APT::Get::Only-"
+"Source</literal>."
+msgstr ""
+"hat nur eine Bedeutung für die Befehle <literal>source</literal> und "
+"<literal>build-dep</literal>. Zeigt an, dass die angegebenen Quellnamen "
+"nicht durch die Programmtabelle ermittelt werden. Dies bedeutet, das dieser "
+"Befehl, wenn diese Option angegeben ist, nur Quellpaketnamen als Argumente "
+"akzeptiert, anstatt Programmpakete zu akzeptieren und nach den "
+"entsprechenden Quellpaketen zu suchen. Konfigurationselement: <literal>APT::"
+"Get::Only-Source</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Download only the diff, dsc, or tar file of a source archive. Configuration "
+"Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</"
+"literal>, and <literal>APT::Get::Tar-Only</literal>."
+msgstr ""
+"lädt nur die diff-, dsc-, oder tar-Dateien eines Quellarchivs herunter. "
+"Konfigurationselemente: <literal>APT::Get::Diff-Only</literal>, "
+"<literal>APT::Get::Dsc-Only</literal> und <literal>APT::Get::Tar-Only</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only process architecture-dependent build-dependencies. Configuration Item: "
+"<literal>APT::Get::Arch-Only</literal>."
+msgstr ""
+"verarbeitet nur architekturabhängige Bauabhängigkeiten. "
+"Konfigurationselement: <literal>APT::Get::Arch-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Only process architecture-dependent build-dependencies. Configuration "
+#| "Item: <literal>APT::Get::Arch-Only</literal>."
+msgid ""
+"Only process architecture-independent build-dependencies. Configuration "
+"Item: <literal>APT::Get::Indep-Only</literal>."
+msgstr ""
+"verarbeitet nur architekturabhängige Bauabhängigkeiten. "
+"Konfigurationselement: <literal>APT::Get::Arch-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore if packages can't be authenticated and don't prompt about it. This "
+"can be useful while working with local repositories, but is a huge security "
+"risk if data authenticity isn't ensured in another way by the user itself. "
+"The usage of the <option>Trusted</option> option for &sources-list; entries "
+"should usually be preferred over this global override. Configuration Item: "
+"<literal>APT::Get::AllowUnauthenticated</literal>."
+msgstr ""
+"ignoriert, falls Pakete nicht authentifiziert werden können und zeigt es "
+"nicht an. Dies kann bei der Arbeit mit lokalen Depots nützlich sein, ist "
+"jedoch ein großes Sicherheitsrisiko, falls die Echtheit der Daten durch den "
+"Benutzer selbst auf eine andere Art sichergestellt ist. Die Benutzung der "
+"Option <option>Trusted</option> für &sources-list;-Einträge sollte "
+"normalerweise diesem globalen Außer-Kraft-setzen vorgezogen werden. "
+"Konfigurationselement: <literal>APT::Get::AllowUnauthenticated</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Forbid the update command to acquire unverifiable data from configured "
+"sources. APT will fail at the update command for repositories without valid "
+"cryptographically signatures. See also &apt-secure; for details on the "
+"concept and the implications. Configuration Item: <literal>Acquire::"
+"AllowInsecureRepositories</literal>."
+msgstr ""
+"verbietet den Befehl »update«, zum Beschaffen nicht überprüfbarer Daten von "
+"konfigurierten Quellen. APT wird beim Befehl »update« für Depots ohne "
+"gültige kryptografische Signaturen fehlschlagen. Weiter Einzelheiten über "
+"das Konzept und was daraus folgt, finden Sie unter &apt-secure;. "
+"Konfigurationselement: <literal>Acquire::AllowInsecureRepositories</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Show user friendly progress information in the terminal window when packages "
+"are installed, upgraded or removed. For a machine parsable version of this "
+"data see README.progress-reporting in the apt doc directory. Configuration "
+"Items: <literal>Dpkg::Progress</literal> and <literal>Dpkg::Progress-Fancy</"
+"literal>."
+msgstr ""
+"zeigt benutzerfreundliche Fortschrittsinformationen im Terminalfenster, wenn "
+"Pakete installiert beziehungsweise entfernt werden oder ein Upgrade "
+"durchgeführt wird. Informationen über eine maschinell auswertbare Version "
+"dieser Daten finden Sie in README.progress-reporting im Verzeichnis apt/doc. "
+"Konfigurationselemente: <literal>Dpkg::Progress</literal> und <literal>Dpkg::"
+"Progress-Fancy</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. See <option>--with-source</option> description in &apt-"
+"cache; for further details."
+msgstr ""
+"fügt die angegebene Datei als Quelle für Metadaten hinzu. Dies kann "
+"wiederholt werden, um mehrere Dateien hinzuzufügen. Weitere Einzelheiten der "
+"<option>--with-source</option>-Beschreibung finden Sie unter &apt-cache;."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml
+msgid "Files"
+msgstr "Dateien"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
+"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
+"APT Howto."
+msgstr ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
+"&apt-secure;, die APT-Benutzeranleitung in &guidesdir;, &apt-preferences;, "
+"das APT-Howto."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"<command>apt-get</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+"<command>apt-get</command> gibt bei normalen Operationen 0 zurück, dezimal "
+"100 bei Fehlern."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cache.8.xml
+msgid "query the APT cache"
+msgstr "den APT-Zwischenspeicher abfragen"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid ""
+"<command>apt-cache</command> performs a variety of operations on APT's "
+"package cache. <command>apt-cache</command> does not manipulate the state of "
+"the system but does provide operations to search and generate interesting "
+"output from the package metadata. The metadata is acquired and updated via "
+"the 'update' command of e.g. <command>apt-get</command>, so that it can be "
+"outdated if the last update is too long ago, but in exchange <command>apt-"
+"cache</command> works independently of the availability of the configured "
+"sources (e.g. offline)."
+msgstr ""
+"<command>apt-cache</command> führt eine Vielzahl von Operationen auf dem "
+"Paketzwischenspeicher von APT durch. <command>apt-cache</command> verändert "
+"nicht den Status des Systems, stellt aber Aktionen zum Suchen und Erzeugen "
+"von interessanten Ausgaben der Paket-Metadaten bereit. Die Metadaten werden "
+"mittels des Befehls »update« z.B. von <command>apt-get</command> beschafft "
+"und aktualisiert, so dass sie veraltet sein können, falls die letzte "
+"Aktualisierung zu lange her ist, im Gegenzug funktioniert <command>apt-"
+"cache</command> unabhängig davon, ob die konfigurierten Quellen verfügbar "
+"sind (z.B. offline)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>gencaches</literal> creates APT's package cache. This is done "
+"implicitly by all commands needing this cache if it is missing or outdated."
+msgstr ""
+"<literal>gencaches</literal> erzeugt den Paketzwischenspeicher von APT. Dies "
+"wird implizit durch alle Befehle erledigt, die diesen Zwischenspeicher "
+"benötigen, falls er fehlt oder veraltet ist."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml
+msgid "&synopsis-pkg;"
+msgstr "&synopsis-pkg;"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>showpkg</literal> displays information about the packages listed on "
+"the command line. Remaining arguments are package names. The available "
+"versions and reverse dependencies of each package listed are listed, as well "
+"as forward dependencies for each version. Forward (normal) dependencies are "
+"those packages upon which the package in question depends; reverse "
+"dependencies are those packages that depend upon the package in question. "
+"Thus, forward dependencies must be satisfied for a package, but reverse "
+"dependencies need not be. For instance, <command>apt-cache showpkg "
+"libreadline2</command> would produce output similar to the following:"
+msgstr ""
+"<literal>showpkg</literal> zeigt Informationen über die auf der Befehlszeile "
+"aufgelisteten Pakete. Die übrigen Argumente sind Paketnamen. Die verfügbaren "
+"Versionen und Rückwärtsabhängigkeiten jedes aufgeführten Paketes werden "
+"ebenso aufgelistet, wie die Vorwärtsabhängigkeiten jeder Version. "
+"Vorwärtsabhängigkeiten (normale Abhängigkeiten) sind jene Pakete, von denen "
+"das betreffende Paket abhängt. Rückwärtsabhängigkeiten sind jene Pakete, die "
+"von dem betreffenden Paket abhängen. Deshalb müssen Vorwärtsabhängigkeiten "
+"für das Paket erfüllt werden, Rückwärtsabhängigkeiten allerdings nicht. "
+"<command>apt-cache showpkg libreadline2</command> würde zum Beispiel eine "
+"Ausgabe ähnlich der folgenden erzeugen:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-cache.8.xml
+#, no-wrap
+msgid ""
+"Package: libreadline2\n"
+"Versions: 2.1-12(/var/state/apt/lists/foo_Packages),\n"
+"Reverse Depends: \n"
+" libreadlineg2,libreadline2\n"
+" libreadline2-altdev,libreadline2\n"
+"Dependencies:\n"
+"2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))\n"
+"Provides:\n"
+"2.1-12 - \n"
+"Reverse Provides: \n"
+msgstr ""
+"Package: libreadline2\n"
+"Versions: 2.1-12(/var/state/apt/lists/foo_Packages),\n"
+"Reverse Depends: \n"
+" libreadlineg2,libreadline2\n"
+" libreadline2-altdev,libreadline2\n"
+"Dependencies:\n"
+"2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))\n"
+"Provides:\n"
+"2.1-12 - \n"
+"Reverse Provides: \n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Thus it may be seen that libreadline2, version 2.1-12, depends on libc5 and "
+"ncurses3.0 which must be installed for libreadline2 to work. In turn, "
+"libreadlineg2 and libreadline2-altdev depend on libreadline2. If "
+"libreadline2 is installed, libc5 and ncurses3.0 (and ldso) must also be "
+"installed; libreadlineg2 and libreadline2-altdev do not have to be "
+"installed. For the specific meaning of the remainder of the output it is "
+"best to consult the apt source code."
+msgstr ""
+"Dadurch sieht man, dass libreadline2, Version 2.1-12, von libc5 und "
+"ncurses3.0 abhängt, die installiert sein müssen, damit libreadline2 "
+"funktioniert. Im Gegenzug hängen libreadlineg2 und libreadline2-altdev von "
+"libreadline2 ab. Wenn libreadline2 installiert ist, müssen außerdem libc5 "
+"und ncurses3.0 (und ldso) installiert sein. Für die spezielle Bedeutung der "
+"restlichen Ausgabe ist es am besten, den apt-Quelltext zu konsultieren."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>stats</literal> displays some statistics about the cache. No "
+"further arguments are expected. Statistics reported are:"
+msgstr ""
+"<literal>stats</literal> zeigt einige Statistiken über den Zwischenspeicher. "
+"Es werden keine weiteren Argumente erwartet. Berichtete Statistiken sind:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total package names</literal> is the number of package names found "
+"in the cache."
+msgstr ""
+"<literal>Total package names</literal> ist die Gesamtzahl der im "
+"Zwischenspeicher gefundenen Pakete."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Normal packages</literal> is the number of regular, ordinary "
+"package names; these are packages that bear a one-to-one correspondence "
+"between their names and the names used by other packages for them in "
+"dependencies. The majority of packages fall into this category."
+msgstr ""
+"<literal>Normal packages</literal> ist die Anzahl der regulären, "
+"gewöhnlichen Paketnamen. Diese sind Pakete, die eine Eins-zu-Eins-"
+"Entsprechung zwischen ihren Namen und den Namen, die andere Pakete für ihre "
+"Abhängigkeiten benutzen, tragen. Die Mehrzahl der Pakete fällt in diese "
+"Kategorie."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Pure virtual packages</literal> is the number of packages that "
+"exist only as a virtual package name; that is, packages only \"provide\" the "
+"virtual package name, and no package actually uses the name. For instance, "
+"\"mail-transport-agent\" in the Debian system is a pure virtual package; "
+"several packages provide \"mail-transport-agent\", but there is no package "
+"named \"mail-transport-agent\"."
+msgstr ""
+"<literal>Pure virtual packages</literal> ist die Anzahl der Pakete, die nur "
+"als ein virtueller Paketname existieren. Das kommt vor, wenn Pakete nur den "
+"virtuellen Paketnamen »bereitstellen« und aktuell kein Paket den Namen "
+"benutzt. Zum Beispiel ist im Debian-GNU/Linux-System »mail-transport-agent« "
+"ein rein virtuelles Paket. Mehrere Pakete stellen »mail-transport-agent« "
+"bereit, aber es gibt kein Paket mit dem Namen »mail-transport-agent«."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Single virtual packages</literal> is the number of packages with "
+"only one package providing a particular virtual package. For example, in the "
+"Debian system, \"X11-text-viewer\" is a virtual package, but only one "
+"package, xless, provides \"X11-text-viewer\"."
+msgstr ""
+"<literal>Single virtual packages</literal> ist die Anzahl der Pakete mit nur "
+"einem Paket, das ein bestimmtes virtuelles Paket bereitstellt. »X11-text-"
+"viewer« ist zum Beispiel im Debian-GNU/Linux-System ein virtuelles Paket, "
+"aber nur ein Paket, xless, stellt »X11-text-viewer« bereit."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Mixed virtual packages</literal> is the number of packages that "
+"either provide a particular virtual package or have the virtual package name "
+"as the package name. For instance, in the Debian system, \"debconf\" is both "
+"an actual package, and provided by the debconf-tiny package."
+msgstr ""
+"<literal>Mixed virtual packages</literal> ist die Anzahl der Pakete, die "
+"entweder ein bestimmtes virtuelles Paket bereitstellen oder den virtuellen "
+"Paketnamen als Paketnamen haben. »debconf« ist zum Beispiel sowohl ein "
+"tatsächliches Paket, wird aber auch vom Paket debconf-tiny bereitgestellt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Missing</literal> is the number of package names that were "
+"referenced in a dependency but were not provided by any package. Missing "
+"packages may be an evidence if a full distribution is not accessed, or if a "
+"package (real or virtual) has been dropped from the distribution. Usually "
+"they are referenced from Conflicts or Breaks statements."
+msgstr ""
+"<literal>Missing</literal> ist die Anzahl der Paketnamen, auf die eine "
+"Abhängigkeit verweist, die aber von keinem Paket bereitgestellt werden. "
+"Fehlende Pakete könnten auftauchen, wenn nicht auf eine vollständige "
+"Distribution zugegriffen oder ein (echtes oder virtuelles) Paket aus einer "
+"Distribution gestrichen wurde. Normalerweise wird auf sie von Conflicts oder "
+"Breaks-Angaben Bezug genommen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total distinct</literal> versions is the number of package versions "
+"found in the cache. If more than one distribution is being accessed (for "
+"instance, \"stable\" and \"unstable\"), this value can be considerably "
+"larger than the number of total package names."
+msgstr ""
+"<literal>Total distinct</literal>-Versionen ist die Anzahl der im "
+"Zwischenspeicher gefundenen Paketversionen. Wenn auf mehr als eine "
+"Distribution zugegriffen wird (zum Beispiel »Stable« und »Unstable« "
+"zusammen), kann dieser Wert deutlich größer als die gesamte Anzahl der "
+"Paketnamen sein."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total dependencies</literal> is the number of dependency "
+"relationships claimed by all of the packages in the cache."
+msgstr ""
+"<literal>Total dependencies</literal> ist die Anzahl der "
+"Abhängigkeitsbeziehungen, den alle Pakete im Zwischenspeicher beanspruchen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>showsrc</literal> displays all the source package records that "
+"match the given package names. All versions are shown, as well as all "
+"records that declare the name to be a binary package. Use <option>--only-"
+"source</option> to display only source package names."
+msgstr ""
+"<literal>showsrc</literal> zeigt alle Quellpaketdatensätze, die den "
+"angegebenen Paketnamen entsprechen. Alle Versionen werden ebenso angezeigt, "
+"wie alle Datensätze, die den Namen für ein Binärpaket angeben. Verwenden Sie "
+"die Option <option>--only-source</option>, um nur Quellpaketnamen anzuzeigen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dump</literal> shows a short listing of every package in the cache. "
+"It is primarily for debugging."
+msgstr ""
+"<literal>dump</literal> zeigt einen kurzen Programmausdruck von jedem Paket "
+"im Zwischenspeicher. Es dient in erster Linie der Fehlersuche."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dumpavail</literal> prints out an available list to stdout. This is "
+"suitable for use with &dpkg; and is used by the &dselect; method."
+msgstr ""
+"<literal>dumpavail</literal> gibt eine verfügbare Liste auf stdout aus. Dies "
+"ist geeignet für die Benutzung mit &dpkg; und wird für die &dselect;-Methode "
+"benutzt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>unmet</literal> displays a summary of all unmet dependencies in the "
+"package cache."
+msgstr ""
+"<literal>unmet</literal> zeigt die Zusammenfassung aller unerfüllten "
+"Abhängigkeiten im Paketzwischenspeicher."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>show</literal> performs a function similar to <command>dpkg --print-"
+"avail</command>; it displays the package records for the named packages."
+msgstr ""
+"<literal>show</literal> führt eine Funktion aus, die <command>dpkg --print-"
+"avail</command> ähnlich ist. Es zeigt die Paketdatensätze für die genannten "
+"Pakete."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml
+msgid "&synopsis-regex;"
+msgstr "&synopsis-regex;"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>search</literal> performs a full text search on all available "
+"package lists for the POSIX regex pattern given, see &regex;. It searches "
+"the package names and the descriptions for an occurrence of the regular "
+"expression and prints out the package name and the short description, "
+"including virtual package names. If <option>--full</option> is given then "
+"output identical to <literal>show</literal> is produced for each matched "
+"package, and if <option>--names-only</option> is given then the long "
+"description is not searched, only the package name and provided packages are."
+msgstr ""
+"<literal>search</literal> führt eine Volltextsuche in der Liste aller "
+"verfügbaren Pakete für das angegebene POSIX-regex-Muster durch, siehe "
+"&regex;. Es durchsucht die Paketnamen und die Beschreibungen nach einem "
+"Vorkommen des regulären Ausdrucks und gibt den Paketnamen mit einer kurzen "
+"Beschreibung, einschließlich virtueller Paketnamen, aus. Wenn <option>--"
+"full</option> angegeben wurde, ist die Ausgabe gleich der, die "
+"<literal>show</literal> für jedes passende Paket erzeugt und wenn <option>--"
+"names-only</option> angegeben wurde, wird die lange Beschreibung nicht "
+"durchsucht, sondern nur der Paketname und die bereitgestellten Pakete."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Separate arguments can be used to specify multiple search patterns that are "
+"and'ed together."
+msgstr ""
+"Separate Argumente können benutzt werden, um mehrere Suchmuster anzugeben, "
+"die »und«-verknüpft werden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>depends</literal> shows a listing of each dependency a package has "
+"and all the possible other packages that can fulfill that dependency."
+msgstr ""
+"<literal>depends</literal> zeigt eine Liste von jeder Abhängigkeit, die ein "
+"Paket hat und alle möglichen anderen Pakete, die die Abhängigkeit erfüllen "
+"können."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>rdepends</literal> shows a listing of each reverse dependency a "
+"package has."
+msgstr ""
+"<literal>rdepends</literal> zeigt eine Liste von jeder "
+"Rückwärtsabhängigkeit, die ein Paket hat."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml
+msgid "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+msgstr "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"This command prints the name of each package APT knows. The optional "
+"argument is a prefix match to filter the name list. The output is suitable "
+"for use in a shell tab complete function and the output is generated "
+"extremely quickly. This command is best used with the <option>--generate</"
+"option> option."
+msgstr ""
+"Dieser Befehl gibt den Namen jedes Paketes aus, das APT kennt. Das optionale "
+"Argument ist ein passendes Präfix, um die Namensliste zu filtern. Die "
+"Ausgabe ist geeignet für die Benutzung in der Tabulatorvervollständigung in "
+"der Shell. Die Ausgabe wird extrem schnell generiert. Dieser Befehl wird am "
+"besten mit der <option>--generate</option>-Option benutzt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Note that a package which APT knows of is not necessarily available to "
+"download, installable or installed, e.g. virtual packages are also listed in "
+"the generated list."
+msgstr ""
+"Beachten Sie, dass ein Paket, das APT kennt, nicht notwendigerweise zum "
+"Herunterladen verfügbar, installierbar oder installiert ist, virtuelle "
+"Pakete sind z.B. auch in der generierten Liste aufgeführt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dotty</literal> takes a list of packages on the command line and "
+"generates output suitable for use by dotty from the <ulink url=\"http://www."
+"research.att.com/sw/tools/graphviz/\">GraphViz</ulink> package. The result "
+"will be a set of nodes and edges representing the relationships between the "
+"packages. By default the given packages will trace out all dependent "
+"packages; this can produce a very large graph. To limit the output to only "
+"the packages listed on the command line, set the <literal>APT::Cache::"
+"GivenOnly</literal> option."
+msgstr ""
+"<literal>dotty</literal> nimmt eine Paketliste auf der Befehlszeile entgegen "
+"und generiert eine Ausgabe, die für die Benutzung durch dotty aus dem Paket "
+"<ulink url=\"http://www.research.att.com/sw/tools/graphviz/\">GraphViz</"
+"ulink> geeignet ist. Das Ergebnis ist eine Zusammenstellung von Knoten und "
+"Kanten, die die Beziehung zwischen Paketen darstellen. Standardmäßig werden "
+"alle abhängigen Pakete ausfindig gemacht. Dies kann zu einem sehr großen "
+"Schaubild führen. Um die Ausgabe auf die Pakete zu beschränken, die auf der "
+"Befehlszeile eingegeben wurden, setzen Sie die Option <literal>APT::Cache::"
+"GivenOnly</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"The resulting nodes will have several shapes; normal packages are boxes, "
+"pure virtual packages are triangles, mixed virtual packages are diamonds, "
+"missing packages are hexagons. Orange boxes mean recursion was stopped (leaf "
+"packages), blue lines are pre-depends, green lines are conflicts."
+msgstr ""
+"Die resultierenden Knoten haben mehrere Formen: Normale Pakete sind "
+"Kästchen, rein virtuelle Pakete sind Dreiecke, gemischt virtuelle Pakete "
+"sind Diamanten, fehlende Pakete sind Sechsecke. Orange Kästchen bedeuten, "
+"dass die Rekursion beendet wurde [Leaf Packages], blaue Linien sind Pre-"
+"depends, grüne Linien sind Konflikte."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid "Caution, dotty cannot graph larger sets of packages."
+msgstr ""
+"Vorsicht, dotty kann keine größeren Zusammenstellungen von Paketen grafisch "
+"darstellen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"The same as <literal>dotty</literal>, only for xvcg from the <ulink url="
+"\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</ulink>."
+msgstr ""
+"Das gleiche wie <literal>dotty</literal>, nur für xvcg vom <ulink url="
+"\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG-Werkzeug</"
+"ulink>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml
+msgid "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+msgstr "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>policy</literal> is meant to help debug issues relating to the "
+"preferences file. With no arguments it will print out the priorities of each "
+"source. Otherwise it prints out detailed information about the priority "
+"selection of the named package."
+msgstr ""
+"<literal>policy</literal> ist dazu gedacht, bei Fragen der Fehlersuche, die "
+"sich auf die Einstellungsdatei beziehen, zu helfen. Ohne Argumente gibt es "
+"die Prioritäten von jeder Quelle aus. Ansonsten gibt es umfangreiche "
+"Informationen über die Prioritätenauswahl der genannten Pakete aus."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>apt-cache</literal>'s <literal>madison</literal> command attempts "
+"to mimic the output format and a subset of the functionality of the Debian "
+"archive management tool, <literal>madison</literal>. It displays available "
+"versions of a package in a tabular format. Unlike the original "
+"<literal>madison</literal>, it can only display information for the "
+"architecture for which APT has retrieved package lists (<literal>APT::"
+"Architecture</literal>)."
+msgstr ""
+"<literal>apt-cache</literal>s <literal>madison</literal>-Befehl versucht das "
+"Ausgabeformat und eine Untermenge der Funktionalität des Debian-"
+"Archivververwaltungswerkzeuges <literal>madison</literal> nachzuahmen. Es "
+"zeigt verfügbare Versionen eines Pakets in Tabellenform. Anders als das "
+"Original <literal>madison</literal>, kann es nur Informationen für die "
+"Architektur anzeigen, für die APT Paketlisten heruntergeladen hat "
+"(<literal>APT::Architecture</literal>)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Select the file to store the package cache. The package cache is the primary "
+"cache used by all operations. Configuration Item: <literal>Dir::Cache::"
+"pkgcache</literal>."
+msgstr ""
+"wählt die Datei zum Speichern des Paketzwischenspeichers. Der "
+"Paketzwischenspeicher ist der primäre Zwischenspeicher, der von allen "
+"Operationen benutzt wird. Konfigurationselement: <literal>Dir::Cache::"
+"pkgcache</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Select the file to store the source cache. The source is used only by "
+"<literal>gencaches</literal> and it stores a parsed version of the package "
+"information from remote sources. When building the package cache the source "
+"cache is used to avoid reparsing all of the package files. Configuration "
+"Item: <literal>Dir::Cache::srcpkgcache</literal>."
+msgstr ""
+"wählt die Datei zum Speichern des Quellenzwischenspeichers. Die Quelle wird "
+"nur von <literal>gencaches</literal> benutzt und sie speichert eine "
+"ausgewertete Version der Paketinformationen von entfernt liegenden Quellen. "
+"Wenn der Paketzwischenspeicher gebildet wird, wird der "
+"Quellenzwischenspeicher benutzt, um ein erneutes Auswerten aller "
+"Paketdateien zu vermeiden. Konfigurationselement: <literal>Dir::Cache::"
+"srcpkgcache</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quietness up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quietness level, overriding the "
+"configuration file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+"still; erzeugt eine Ausgabe, die für Protokollierung geeignet ist und "
+"Fortschrittsanzeiger weglässt. Mehr »q«s unterdrücken mehr Ausgaben, bis zu "
+"einem Maximum von 2. Sie können außerdem <option>-q=#</option> benutzen, um "
+"die Stillestufe zu setzen, was die Konfigurationsdatei überschreibt. "
+"Konfigurationselement: <literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print only important dependencies; for use with <literal>unmet</literal> and "
+"<literal>depends</literal>. Causes only Depends and Pre-Depends relations to "
+"be printed. Configuration Item: <literal>APT::Cache::Important</literal>."
+msgstr ""
+"nur wichtige Abhängigkeiten ausgeben. Zur Benutzung mit <literal>unmet</"
+"literal> und <literal>depends</literal>. Veranlasst, dass nur Depends- und "
+"Pre-Depends-Beziehungen ausgegeben werden. Konfigurationselement: "
+"<literal>APT::Cache::Important</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Per default the <command>depends</command> and <command>rdepends</command> "
+"print all dependencies. This can be tweaked with these flags which will omit "
+"the specified dependency type. Configuration Item: <literal>APT::Cache::"
+"Show<replaceable>DependencyType</replaceable></literal> e.g. <literal>APT::"
+"Cache::ShowRecommends</literal>."
+msgstr ""
+"Standardmäßig geben <command>depends</command> und <command>rdepends</"
+"command> alle Abhängigkeiten aus. Dies kann mit diesen Schaltern optimiert "
+"werden, die den angegebenen Abhängigkeitstyp weglassen. "
+"Konfigurationselement: <literal>APT::Cache::"
+"Show<replaceable>Abhängigkeitstyp</replaceable></literal> z.B. <literal>APT::"
+"Cache::ShowRecommends</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Per default <command>depends</command> and <command>rdepends</command> print "
+"only dependencies explicitly expressed in the metadata. With this flag it "
+"will also show dependencies implicitly added based on the encountered data. "
+"A <literal>Conflicts: foo</literal> e.g. expresses implicitly that this "
+"package also conflicts with the package foo from any other architecture. "
+"Configuration Item: <literal>APT::Cache::ShowImplicit</literal>."
+msgstr ""
+"Standardmäßig geben <command>depends</command> und <command>rdepends</"
+"command> nur Abhängigkeiten aus, die explizit in den Metadaten angegeben "
+"werden. Mit diesem Schalter werden auch Abhängigkeiten angezeigt, die "
+"implizit basierend auf den vorgefundenen Daten hinzugefügt werden. Ein "
+"<literal>Conflicts: foo</literal> sagt z.B. implizit, dass dieses Paket "
+"einen Konflikt mit dem Paket »foo« von jeder anderen Architektur hat. "
+"Konfigurationselement: <literal>APT::Cache::ShowImplicit</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print full package records when searching. Configuration Item: "
+"<literal>APT::Cache::ShowFull</literal>."
+msgstr ""
+"gibt die vollständigen Paketdatensätze beim Suchen aus. "
+"Konfigurationselement: <literal>APT::Cache::ShowFull</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print full records for all available versions. This is the default; to turn "
+"it off, use <option>--no-all-versions</option>. If <option>--no-all-"
+"versions</option> is specified, only the candidate version will be displayed "
+"(the one which would be selected for installation). This option is only "
+"applicable to the <literal>show</literal> command. Configuration Item: "
+"<literal>APT::Cache::AllVersions</literal>."
+msgstr ""
+"gibt die vollständigen Datensätze für alle verfügbaren Versionen aus. Dies "
+"ist die Vorgabe. Um sie auszuschalten, benutzen Sie <option>--no-all-"
+"versions</option>. Wenn <option>--no-all-versions</option> angegeben ist, "
+"wird nur die Anwärterversion angezeigt (die, die zur Installation ausgewählt "
+"würde). Diese Option ist nur für den <literal>show</literal>-Befehl "
+"anwendbar. Konfigurationselement: <literal>APT::Cache::AllVersions</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Perform automatic package cache regeneration, rather than use the cache as "
+"it is. This is the default; to turn it off, use <option>--no-generate</"
+"option>. Configuration Item: <literal>APT::Cache::Generate</literal>."
+msgstr ""
+"führt das Neuerstellen des Paketzwischenspeichers aus, anstatt den "
+"Zwischenspeicher so zu benutzen, wie er ist. Das ist die Vorgabe. Um sie "
+"auszuschalten benutzen Sie <option>--no-generate</option>. "
+"Konfigurationselement: <literal>APT::Cache::Generate</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Only search on the package and provided package names, not the long "
+"descriptions. Configuration Item: <literal>APT::Cache::NamesOnly</literal>."
+msgstr ""
+"durchsucht nur das Paket und die bereitgestellten Paketnamen, nicht die "
+"Langbeschreibungen. Konfigurationselement: <literal>APT::Cache::NamesOnly</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Make <literal>pkgnames</literal> print all names, including virtual packages "
+"and missing dependencies. Configuration Item: <literal>APT::Cache::"
+"AllNames</literal>."
+msgstr ""
+"lässt <literal>pkgnames</literal> alle Namen, einschließlich virtueller "
+"Pakete und fehlender Abhängigkeiten, ausgeben. Konfigurationselement: "
+"<literal>APT::Cache::AllNames</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Make <literal>depends</literal> and <literal>rdepends</literal> recursive so "
+"that all packages mentioned are printed once. Configuration Item: "
+"<literal>APT::Cache::RecurseDepends</literal>."
+msgstr ""
+"macht <literal>depends</literal> und <literal>rdepends</literal> rekursiv, "
+"so dass alle erwähnten Pakete einmal ausgegeben werden. "
+"Konfigurationselement: <literal>APT::Cache::RecurseDepends</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Limit the output of <literal>depends</literal> and <literal>rdepends</"
+"literal> to packages which are currently installed. Configuration Item: "
+"<literal>APT::Cache::Installed</literal>."
+msgstr ""
+"begrenzt die Ausgabe von <literal>depends</literal> und <literal>rdepends</"
+"literal> auf Pakete, die aktuell installiert sind. Konfigurationselement: "
+"<literal>APT::Cache::Installed</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. Supported are currently <literal>*.deb</literal>, "
+"<literal>*.dsc</literal>, <literal>*.changes</literal>, <literal>Sources</"
+"literal> and <literal>Packages</literal> files as well as source package "
+"directories. Files are matched based on their name only, not their content!"
+msgstr ""
+"fügt die angegebene Datei als Quelle für Metadaten hinzu. Dies kann "
+"wiederholt werden, um mehrere Dateien hinzuzufügen. Unterstützt werden "
+"derzeit <literal>*.deb</literal>-, <literal>*.dsc</literal>-, <literal>*."
+"changes</literal>-, <literal>Sources</literal>- und <literal>Packages</"
+"literal>-Dateien sowie Quellpaketverzeichnisse. Dateien werden nur basierend "
+"auf ihren Dateinamen abgeglichen, nicht auf ihrem Inhalt!"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Sources</literal> and <literal>Packages</literal> can be compressed "
+"in any format apt supports as long as they have the correct extension. If "
+"you need to store multiple of these files in one directory you can prefix a "
+"name of your choice with the last character being an underscore "
+"(\"<literal>_</literal>\"). Example: my.example_Packages.xz"
+msgstr ""
+"<literal>Sources</literal> und <literal>Packages</literal> können in jedes "
+"von APT unterstützte Format komprimiert werden, so lange sie die korrekte "
+"Erweiterung haben. Falls Sie mehrere dieser Dateien in einem Verzeichnis "
+"speichern müssen, können sie einen Namen Ihrer Wahl, bei dem das letzte "
+"Zeichen ein Unterstrich (»<literal>_</literal>«) ist, voranstellen. "
+"Beispiel: mein.beispiel_Packages.xz"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Note that these sources are treated as trusted (see &apt-secure;). "
+"Configuration Item: <literal>APT::Sources::With</literal>."
+msgstr ""
+"Beachten Sie, dass diese Quellen als vertrauenswürdig angesehen werden "
+"(siehe &apt-secure;). Konfigurationselement: <literal>APT::Sources::With</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid "&apt-conf;, &sources-list;, &apt-get;"
+msgstr "&apt-conf;, &sources-list;, &apt-get;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid ""
+"<command>apt-cache</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-cache</command> gibt bei normalen Operationen 0 zurück, dezimal "
+"100 bei Fehlern."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-key.8.xml
+msgid "APT key management utility"
+msgstr "APT-Schlüsselverwaltungsdienstprogramm"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"<command>apt-key</command> is used to manage the list of keys used by apt to "
+"authenticate packages. Packages which have been authenticated using these "
+"keys will be considered trusted."
+msgstr ""
+"<command>apt-key</command> wird benutzt, um eine Liste von Schlüsseln zu "
+"verwalten, die APT benutzt, um Pakete zu authentifizieren. Pakete, die durch "
+"Benutzung dieser Schlüssel authentifiziert wurden, werden als "
+"vertrauenswürdig betrachtet."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Note that if usage of <command>apt-key</command> is desired the additional "
+"installation of the GNU Privacy Guard suite (packaged in <package>gnupg</"
+"package>) is required. For this reason alone the programmatic usage "
+"(especially in package maintainerscripts!) is strongly discouraged. Further "
+"more the output format of all commands is undefined and can and does change "
+"whenever the underlying commands change. <command>apt-key</command> will try "
+"to detect such usage and generates warnings on stderr in these cases."
+msgstr ""
+"Beachten Sie, dass, falls die Benutzung von <command>apt-key</command> "
+"gewünscht wird, die Installation der GNU-Privacy-Guard-Suite (paketiert in "
+"<package>gnupg</package>) erforderlich ist. Allein aus diesem Grund wird vom "
+"programmatischen Gebrauch (insbesondere in Betreuerskripten) eindringlich "
+"abgeraten. Darüberhinaus ist das Ausgabeformat aller Befehle undefiniert und "
+"kann und wird sich immer dann ändern, wenn sich die darunterliegenden "
+"Befehle ändern. <command>apt-key</command> wird versuchen, derartige "
+"Benutzung zu erkennen und in diesen Fällen Warnungen auf der "
+"Standardfehlerausgabe erzeugen."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml
+msgid "Supported keyring files"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
+"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
+"the keybox database format introduced in newer &gpg; versions as default for "
+"keyring files. Binary keyring files intended to be used with any apt version "
+"should therefore always be created with <command>gpg --export</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Alternatively, if all systems which should be using the created keyring have "
+"at least apt version >= 1.4 installed, you can use the ASCII armored format "
+"with the \"<literal>asc</literal>\" extension instead which can be created "
+"with <command>gpg --armor --export</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml
+msgid "Commands"
+msgstr "Befehle"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Add a new key to the list of trusted keys. The key is read from the "
+"filename given with the parameter &synopsis-param-filename; or if the "
+"filename is <literal>-</literal> from standard input."
+msgstr ""
+"fügt einen neuen Schlüssel zur Liste der vertrauenswürdigen Schlüssel hinzu. "
+"Der Schlüssel wird aus &synopsis-param-filename; gelesen oder, wenn der "
+"Dateiname <literal>-</literal> ist, von der Standardeingabe."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"It is critical that keys added manually via <command>apt-key</command> are "
+"verified to belong to the owner of the repositories they claim to be for "
+"otherwise the &apt-secure; infrastructure is completely undermined."
+msgstr ""
+"Es ist kritisch, dass überprüft wird, ob diese manuell per <command>apt-key</"
+"command> hinzugefügten Schlüssel wirklich dem Eigentümer des Depots gehören, "
+"andernfalls wird die &apt-secure;-Infrastruktur komplett untergraben."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+#, fuzzy
+#| msgid ""
+#| "Instead of using this command a keyring can be placed directly in the "
+#| "<filename>/etc/apt/trusted.gpg.d/</filename> directory with a descriptive "
+#| "name (same rules for filename apply as for &apt-conf; files) and "
+#| "\"<literal>gpg</literal>\" as file extension."
+msgid ""
+"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
+"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
+"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
+"\"<literal>asc</literal>\" as file extension."
+msgstr ""
+"Anstatt diesen Befehl zu benutzen, kann ein Schlüsselbund mit einem "
+"aussagekräftigen Namen (hier werden die gleichen Dateinamenregeln wie bei "
+"&apt-conf;-Dateien angewandt) und »<literal>gpg</literal>« als "
+"Dateinamenserweiterung auch direkt im Verzeichnis <filename>/etc/apt/trusted."
+"gpg.d/</filename> abgelegt werden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Remove a key from the list of trusted keys."
+msgstr ""
+"entfernt einen Schlüssel von der Liste der vertrauenswürdigen Schlüssel."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Output the key &synopsis-param-keyid; to standard output."
+msgstr "gibt den Schlüssel &synopsis-param-keyid; auf der Standardausgabe aus."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Output all trusted keys to standard output."
+msgstr "gibt alle vertrauenswürdigen Schlüssel auf der Standardausgabe aus."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "List trusted keys with fingerprints."
+msgstr "listet vertrauenswürdige Schlüssel mit Fingerabdrücken auf."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
+"e.g. download key from keyservers directly into the trusted set of keys. "
+"Note that there are <emphasis>no</emphasis> checks performed, so it is easy "
+"to completely undermine the &apt-secure; infrastructure if used without care."
+msgstr ""
+"reicht erweiterte Optionen an GPG weiter. Mit <command>adv --recv-key</"
+"command> können Sie z.B. Schlüssel direkt vom Schlüsselserver in die Ihre "
+"vertrauenswürdige Schlüsselsammlung herunterladen. Beachten Sie, dass dabei "
+"<emphasis>keine</emphasis> Prüfungen durchgeführt werden. Es ist daher "
+"einfach, die &apt-secure;-Infrastruktur komplett zu untergraben, falls dies "
+"ohne Sorgfalt benutzt wird."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-key.8.xml
+msgid "(deprecated)"
+msgstr "(missbilligt)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Update the local keyring with the archive keyring and remove from the local "
+"keyring the archive keys which are no longer valid. The archive keyring is "
+"shipped in the <literal>archive-keyring</literal> package of your "
+"distribution, e.g. the &keyring-package; package in &keyring-distro;."
+msgstr ""
+"aktualisiert den lokalen Schlüsselbund mit dem Archivschlüsselbund und "
+"entfernt die Archivschlüssel, die nicht länger gültig sind, aus dem lokalen "
+"Schlüsselbund. Der Archivschlüsselbund wird im Paket <literal>archive-"
+"keyring</literal> Ihrer Distribution mitgeliefert, z.B. dem Paket &keyring-"
+"package; in &keyring-distro;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Note that a distribution does not need to and in fact should not use this "
+"command any longer and instead ship keyring files in the <filename>/etc/apt/"
+"trusted.gpg.d/</filename> directory directly as this avoids a dependency on "
+"<package>gnupg</package> and it is easier to manage keys by simply adding "
+"and removing files for maintainers and users alike."
+msgstr ""
+"Beachten Sie, dass eine Distribution diesen Befehl nicht benötigt und "
+"tatsächlich nicht länger nutzen sollte. Sie sollte stattdessen "
+"Schlüsselbunddateien im Verzeichnis <filename>/etc/apt/trusted.gpg.d/</"
+"filename> direkt mitliefern, da dies eine Abhängigkeit von <package>gnupg</"
+"package> vermeidet und die Verwaltung von Schlüsseln durch einfaches "
+"Hinzufügen und Entfernen von Dateien für Paketbetreuer und Anwender "
+"gleichermaßen erleichtert."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Perform an update working similarly to the <command>update</command> command "
+"above, but get the archive keyring from a URI instead and validate it "
+"against a master key. This requires an installed &wget; and an APT build "
+"configured to have a server to fetch from and a master keyring to validate. "
+"APT in Debian does not support this command, relying on <command>update</"
+"command> instead, but Ubuntu's APT does."
+msgstr ""
+"funktioniert ähnlich dem vorhergehenden Befehl <command>update</command>, "
+"bezieht aber den Archivschlüsselbund stattdessen von einem URI und bestätigt "
+"ihn anhand eines Master-Schlüssels. Dies erfordert ein installiertes &wget; "
+"und einen derart gebauten APT, bei dem ein Server konfiguriert ist, um den "
+"Master-Schlüsselbund zur Bestätigung abzuholen. APT unterstützt in Debian "
+"diesen Befehl nicht und beruht stattdessen auf <command>update</command>, in "
+"Ubuntu funktioniert dies aber."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml
+msgid "Options"
+msgstr "Optionen"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Note that options need to be defined before the commands described in the "
+"previous section."
+msgstr ""
+"Beachten Sie, dass Optionen vor den im vorherigen Abschnitt beschriebenen "
+"Befehlen definiert sein müssen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"With this option it is possible to specify a particular keyring file the "
+"command should operate on. The default is that a command is executed on the "
+"<filename>trusted.gpg</filename> file as well as on all parts in the "
+"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</"
+"filename> is the primary keyring which means that e.g. new keys are added to "
+"this one."
+msgstr ""
+"Mit dieser Option ist es möglich, eine spezielle Schlüsselbunddatei "
+"anzugeben, mit der der Befehl arbeitet. Vorgabe ist, dass ein Befehl mit der "
+"Datei <filename>trusted.gpg</filename> ausgeführt wird, ebenso wie alle "
+"Teile im Verzeichnis <filename>trusted.gpg.d</filename>, wodurch "
+"<filename>trusted.gpg</filename> der primäre Schlüsselbund wird, d.h. neue "
+"Schlüssel werden zu diesem hinzugefügt."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid "&apt-get;, &apt-secure;"
+msgstr "&apt-get;, &apt-secure;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-mark.8.xml
+msgid "show, set and unset various settings for a package"
+msgstr "zeigt, setzt und hebt verschiedene Einstellungen für ein Paket auf."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"<command>apt-mark</command> can be used as a unified front-end to set "
+"various settings for a package, such as marking a package as being "
+"automatically/manually installed or changing <command>dpkg</command> "
+"selections such as hold, install, deinstall and purge which are respected e."
+"g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
+"command>."
+msgstr ""
+"<command>apt-mark</command> kann als einheitliche Oberfläche zum Setzen "
+"verschiedener Einstellungen eines Pakets benutzt werden, wie das Markieren "
+"eines Pakets als automatisch/manuell installiert oder um <command>dpkg</"
+"command>-Auswahlen wie »hold« (halten), »install« (installieren), "
+"»deinstall« (entfernen) oder »purge« (vollständig entfernen) zu ändern, die "
+"z.B. von <command>apt-get dselect-upgrade</command> oder <command>aptitude</"
+"command> berücksichtigt werden."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Automatically and Manually Installed Packages"
+msgstr "Automatisch und manuell installierte Pakete"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"When you request that a package is installed, and as a result other packages "
+"are installed to satisfy its dependencies, the dependencies are marked as "
+"being automatically installed, while the package you installed explicitly is "
+"marked as manually installed. Once an automatically installed package is no "
+"longer depended on by any manually installed package it is considered no "
+"longer needed and e.g. <command>apt-get</command> or <command>aptitude</"
+"command> will at least suggest removing them."
+msgstr ""
+"Wenn Sie erbitten, dass ein Paket installiert werden soll und im Ergebnis "
+"weitere Pakete installiert werden, um die Abhängigkeiten zu erfüllen, werden "
+"diese Abhängigkeiten als automatisch installiert markiert, während das "
+"Paket, das Sie explizit installiert haben, stattdessen als manuell "
+"installiert markiert wird. Sobald ein automatisch installiertes Paket von "
+"keinem manuell installierten Paket mehr abhängt. wird es als nicht mehr "
+"benötigt angesehen und z.B. <command>apt-get</command> oder "
+"<command>aptitude</command> werden vorschlagen, es zu entfernen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>auto</literal> is used to mark a package as being automatically "
+"installed, which will cause the package to be removed when no more manually "
+"installed packages depend on this package."
+msgstr ""
+"<literal>auto</literal> wird benutzt, um ein Paket als automatisch "
+"installiert zu markieren, was veranlasst, dass das Paket entfernt wird, wenn "
+"keine manuell installierten Pakete von ihm abhängen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>manual</literal> is used to mark a package as being manually "
+"installed, which will prevent the package from being automatically removed "
+"if no other packages depend on it."
+msgstr ""
+"<literal>manual</literal> wird benutzt, um ein Paket als manuell installiert "
+"zu markieren, was verhindert, dass das Paket automatisch entfernt wird, wenn "
+"kein anderes Paket von ihm abhängt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showauto</literal> is used to print a list of automatically "
+"installed packages with each package on a new line. All automatically "
+"installed packages will be listed if no package is given. If packages are "
+"given only those which are automatically installed will be shown."
+msgstr ""
+"<literal>showauto</literal> wird benutzt, um eine Liste automatisch "
+"installierter Pakete – mit einem Paket in jeder neuen Zeile – auszugeben. "
+"Wenn kein Paket angegeben ist, werden alle automatisch installierten Pakete "
+"aufgelistet. Falls Pakete angegeben sind, werden nur diejenigen angezeigt, "
+"die automatisch installiert wurden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showmanual</literal> can be used in the same way as "
+"<literal>showauto</literal> except that it will print a list of manually "
+"installed packages instead."
+msgstr ""
+"<literal>showmanual</literal> kann auf die gleiche Weise wie "
+"<literal>showauto</literal> benutzt werden, mit der Ausnahme, dass es "
+"stattdessen eine Liste manuell installierter Pakete ausgibt."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"Read/Write package stats from the filename given with the parameter "
+"&synopsis-param-filename; instead of from the default location, which is "
+"<filename>extended_status</filename> in the directory defined by the "
+"Configuration Item: <literal>Dir::State</literal>."
+msgstr ""
+"schreibt/liest Paketstatus von dem Dateinamen, der mit dem Parameter "
+"&synopsis-param-filename;, anstatt vom Standardort, der "
+"<filename>extended_status</filename> im von Konfigurationselement "
+"<literal>Dir::State</literal> definierten Verzeichnis, ist."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Prevent Changes for a Package"
+msgstr "Änderungen für ein Paket verhindern"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>hold</literal> is used to mark a package as held back, which will "
+"prevent the package from being automatically installed, upgraded or removed."
+msgstr ""
+"<literal>hold</literal> wird benutzt, um ein Paket als zurückgehalten zu "
+"markieren. Dadurch wird verhindert, dass das Paket automatisch installiert, "
+"entfernt oder ein Upgrade davon durchgeführt wird."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>unhold</literal> is used to cancel a previously set hold on a "
+"package to allow all actions again."
+msgstr ""
+"<literal>unhold</literal> wird benutzt, um ein vorher gesetztes »hold« auf "
+"ein Paket aufzuheben, um alle Aktionen wieder zu erlauben."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showhold</literal> is used to print a list of packages on hold in "
+"the same way as for the other show commands."
+msgstr ""
+"<literal>showhold</literal> wird benutzt, um eine Liste auf »hold« gesetzter "
+"Pakete auf die gleiche Art wie für andere Anzeigebefehle auszugeben."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Schedule Packages for Install, Remove and Purge"
+msgstr ""
+"Pakete zum Installieren, Entfernen und vollständigen Entfernen einplanen"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"Some front-ends like <command>apt-get dselect-upgrade</command> can be used "
+"to apply previously scheduled changes to the install state of packages. Such "
+"changes can be scheduled with the <option>install</option>, <option>remove</"
+"option> (also known as <option>deinstall</option>) and <option>purge</"
+"option> commands. Packages with a specific selection can be displayed with "
+"<option>showinstall</option>, <option>showremove</option> and "
+"<option>showpurge</option> respectively. More information about these so "
+"called dpkg selections can be found in &dpkg;."
+msgstr ""
+"Einige Oberflächen wie <command>apt-get dselect-upgrade</command> können "
+"benutzt werden, um vorher geplante Änderungen am Installationsstatus von "
+"Paketen zu übernehmen. Solche Änderungen können mit dem Befehlen "
+"<option>install</option>, <option>remove</option> (auch als "
+"<option>deinstall</option> bekannt) und <option>purge</option> geplant "
+"werden. Pakete mit einer bestimmten Auswahl können mit <option>showinstall</"
+"option>, <option>showremove</option> beziehungsweise <option>showpurge</"
+"option> angezeigt werden. Weitere Informationen über diese sogenannten Dpkg-"
+"Auswahlen finden Sie in &dpkg;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"<command>apt-mark</command> returns zero on normal operation, non-zero on "
+"error."
+msgstr ""
+"<command>apt-mark</command> gibt bei normalen Operationen Null zurück, bei "
+"Fehlern nicht Null."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-secure.8.xml
+msgid "Archive authentication support for APT"
+msgstr "Archivauthentifizierungsunterstützung für APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Starting with version 0.6, <command>APT</command> contains code that does "
+"signature checking of the Release file for all repositories. This ensures "
+"that data like packages in the archive can't be modified by people who have "
+"no access to the Release file signing key. Starting with version 1.1 "
+"<command>APT</command> requires repositories to provide recent "
+"authentication information for unimpeded usage of the repository."
+msgstr ""
+"Beginnend mit Version 0.6 enthält <command>APT</command> Code, der die "
+"Signatur der Release-Datei für alle Depots prüft. Dies stellt sicher, dass "
+"Daten wie Pakete im Archiv nicht von Leuten geändert werden können, die "
+"keinen Zugriff auf den Signierschlüssel der Release-Datei haben. Beginnend "
+"mit Version 1.1 erfordert <command>APT</command> von Depots aktuelle "
+"Authentifizierungsinformationen für den ungestörten Gebrauch des Depots "
+"bereitzustellen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"If an archive has an unsigned Release file or no Release file at all current "
+"APT versions will refuse to download data from them by default in "
+"<command>update</command> operations and even if forced to download front-"
+"ends like &apt-get; will require explicit confirmation if an installation "
+"request includes a package from such an unauthenticated archive."
+msgstr ""
+"Falls ein Archiv eine nicht signierte oder überhaupt keine Release-Datei "
+"hat, werden alle aktuellen APT-Versionen das Herunterladen von Daten von "
+"dort standardmäßig in <command>update</command>-Transaktionen verweigern. "
+"Sogar wenn Oberflächen wie &apt-get; zum Herunterladen gezwungen werden, "
+"wird eine explizite Bestätigung benötigt, falls eine Installationsanfrage "
+"ein Paket aus einem derartigen nicht authentifizierten Archiv enthält."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"As a temporary exception &apt-get; (not &apt;!) raises warnings only if it "
+"encounters unauthenticated archives to give a slightly longer grace period "
+"on this backward compatibility effecting change. This exception will be "
+"removed in future releases and you can opt-out of this grace period by "
+"setting the configuration option <option>Binary::apt-get::Acquire::"
+"AllowInsecureRepositories</option> to <literal>false</literal> or <option>--"
+"no-allow-insecure-repositories</option> on the command line."
+msgstr ""
+"Als befristete Ausnahme gibt &apt-get; (nicht &apt;!) Warnungen nur dann "
+"aus, falls es nicht authentifizierte Archive vorfindet, um eine etwas "
+"längere Übergangsfrist für die Änderung zu geben, die die "
+"Rückwärtskompatibilität beeinflusst. Diese Ausnahme wird in zukünftigen "
+"Veröffentlichungen entfernt und sie können sich von dieser Übergangsfrist "
+"abmelden, indem Sie die Konfigurationsoption <option>Binary::apt-get::"
+"Acquire::AllowInsecureRepositories</option> auf <literal>false</literal> "
+"oder <option>--no-allow-insecure-repositories</option> auf der Befehlszeile "
+"setzen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"You can force all APT clients to raise only warnings by setting the "
+"configuration option <option>Acquire::AllowInsecureRepositories</option> to "
+"<literal>true</literal>. Individual repositories can also be allowed to be "
+"insecure via the &sources-list; option <literal>allow-insecure=yes</"
+"literal>. Note that insecure repositories are strongly discouraged and all "
+"options to force apt to continue supporting them will eventually be "
+"removed. Users also have the <option>Trusted</option> option available to "
+"disable even the warnings, but be sure to understand the implications as "
+"detailed in &sources-list;."
+msgstr ""
+"Sie können erzwingen, dass alle APT-Clients nur Warnungen ausgeben, indem "
+"Sie die Konfigurationsoption <option>Acquire::AllowInsecureRepositories</"
+"option> auf <literal>true</literal> setzen. Ãœber die &sources-list;-Option "
+"<literal>allow-insecure=yes</literal> kann auch erlaubt werden, dass "
+"individuelle Depots unsicher sind. Beachten Sie, dass von unsicheren Depots "
+"eindringlich abgeraten wird und alle Optionen, die APT zwingen, sie "
+"weiterhin zu unterstützen, irgendwann entfernt werden. Anwendern steht auch "
+"die Option <option>Trusted</option> zur Verfügung, um sogar Warnungen "
+"auszuschalten, seien Sie sich aber sicher, dass Sie die in &sources-list; "
+"erklärten Konsequenzen verstanden haben."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"A repository which previously was authenticated but would loose this state "
+"in an <command>update</command> operation raises an error in all APT clients "
+"irrespective of the option to allow or forbid usage of insecure "
+"repositories. The error can be overcome by additionally setting "
+"<option>Acquire::AllowDowngradeToInsecureRepositories</option> to "
+"<literal>true</literal> or for Individual repositories with the &sources-"
+"list; option <literal>allow-downgrade-to-insecure=yes</literal>."
+msgstr ""
+"Ein Depot, das vorher authentifiziert war, diesen Status jedoch bei einer "
+"<command>update</command>-Transaktion verlieren würde, gibt auf allen APT-"
+"Clients, ungeachtet der Option, die die Verwendung unsicherer Depots erlaubt "
+"oder verbietet, einen Fehler aus. Der Fehler kann durch zusätzliches Setzen "
+"von <option>Acquire::AllowDowngradeToInsecureRepositories</option> auf "
+"<literal>true</literal> oder für individuelle Depots mit der &sources-list;-"
+"Option <literal>allow-downgrade-to-insecure=yes</literal> übergangen werden."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note: All APT-based package management front-ends like &apt-get;, &aptitude; "
+"and &synaptic; support this authentication feature, so this manpage uses "
+"<literal>APT</literal> to refer to them all for simplicity only."
+msgstr ""
+"Hinweis: Alle APT-basierten Paketverwaltungsoberflächen wie &apt-get;, "
+"&aptitude; und &synaptic; unterstützen diese "
+"Authentifizierungsfunktionalität, daher verwendet diese Handbuchseite der "
+"Einfachheit halber exemplarisch für alle <literal>APT</literal>."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Trusted Repositories"
+msgstr "Vertrauenswürdige Depots"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"The chain of trust from an APT archive to the end user is made up of several "
+"steps. <command>apt-secure</command> is the last step in this chain; "
+"trusting an archive does not mean that you trust its packages not to contain "
+"malicious code, but means that you trust the archive maintainer. It's the "
+"archive maintainer's responsibility to ensure that the archive's integrity "
+"is preserved."
+msgstr ""
+"Eine Kette des Vertrauens von einem APT-Archiv zum Endanwender wird durch "
+"verschiedene Schritte erreicht. <command>apt-secure</command> ist der letzte "
+"Schritt in dieser Kette. Einem Archiv zu vertrauen bedeutet nicht, dass das "
+"Paket, dem Sie vertrauen, keinen schadhaften Code enthält, aber es bedeutet, "
+"dass Sie dem Archivbetreuer vertrauen. Der Archivbetreuer ist dafür "
+"verantwortlich, dass er die Korrektheit der Integrität des Archivs "
+"sicherstellt."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"apt-secure does not review signatures at a package level. If you require "
+"tools to do this you should look at <command>debsig-verify</command> and "
+"<command>debsign</command> (provided in the debsig-verify and devscripts "
+"packages respectively)."
+msgstr ""
+"apt-secure überprüft keine Signaturen auf einer Ebene des Pakets. Falls Sie "
+"ein Werkzeug benötigen, das dies tut, sollten Sie einen Blick auf "
+"<command>debsig-verify</command> und <command>debsign</command> werfen "
+"(bereitgestellt von den Paketen debsig-verify beziehungsweise devscripts)."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"The chain of trust in Debian starts (e.g.) when a maintainer uploads a new "
+"package or a new version of a package to the Debian archive. In order to "
+"become effective, this upload needs to be signed by a key contained in one "
+"of the Debian package maintainer keyrings (available in the debian-keyring "
+"package). Maintainers' keys are signed by other maintainers following pre-"
+"established procedures to ensure the identity of the key holder. Similar "
+"procedures exist in all Debian-based distributions."
+msgstr ""
+"Die Kette des Vertrauens in Debian beginnt (z.B.), wenn ein Betreuer ein "
+"neues Paket oder eine neue Version eines Pakets in das Debian-Archiv "
+"hochlädt. Damit es in Kraft tritt muss dieses Hochladen mit einem Schlüssel "
+"signiert werden, der sich in einem der Schlüsselbunde der Debian-Betreuer "
+"befindet (verfügbar im Paket »debian-keyring«). Betreuerschlüssel werden von "
+"anderen Betreuern gemäß vorbestimmter Regeln signiert, um die Identität des "
+"Schlüsselinhabers sicherzustellen. Ähnliche Prozeduren existieren in allen "
+"Debian-basierten Distributionen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Once the uploaded package is verified and included in the archive, the "
+"maintainer signature is stripped off, and checksums of the package are "
+"computed and put in the Packages file. The checksums of all of the Packages "
+"files are then computed and put into the Release file. The Release file is "
+"then signed by the archive key for this &keyring-distro; release, and "
+"distributed alongside the packages and the Packages files on &keyring-"
+"distro; mirrors. The keys are in the &keyring-distro; archive keyring "
+"available in the &keyring-package; package."
+msgstr ""
+"Sobald das hochgeladene Paket überprüft und dem Archiv hinzugefügt wurde, "
+"wird die Betreuersignatur entfernt, Prüfsummen des Pakets werden berechnet "
+"und in die Datei Packages abgelegt. Die Prüfsummen aller Paketdateien werden "
+"berechnet und in der Release-Datei abgelegt. Dann wird die Release-Datei "
+"durch den Archivschlüssel für diese &keyring-distro;-Veröffentlichung "
+"signiert und zusammen mit den Paketen und Packages-Dateien auf &keyring-"
+"distro;-Spiegel verteilt. Die Schlüssel sind im &keyring-distro;-"
+"Archivschlüsselbund im Paket &keyring-package; verfügbar."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"End users can check the signature of the Release file, extract a checksum of "
+"a package from it and compare it with the checksum of the package they "
+"downloaded by hand - or rely on APT doing this automatically."
+msgstr ""
+"Endanwender können die Signatur der Release-Datei prüfen, die Prüfsumme "
+"eines Paketes daraus entpacken und mit der Prüfsumme des Pakets vergleichen, "
+"das sie manuell heruntergeladen haben – oder sich darauf verlassen, dass APT "
+"dies automatisch tut."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Notice that this is distinct from checking signatures on a per package "
+"basis. It is designed to prevent two possible attacks:"
+msgstr ""
+"Beachten Sie, dass dies verschieden von geprüften Signaturen auf Paketbasis "
+"ist. Es wurde entworfen, um zwei mögliche Angriffe zu verhindern:"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<literal>Network \"man in the middle\" attacks</literal>. Without signature "
+"checking, malicious agents can introduce themselves into the package "
+"download process and provide malicious software either by controlling a "
+"network element (router, switch, etc.) or by redirecting traffic to a rogue "
+"server (through ARP or DNS spoofing attacks)."
+msgstr ""
+"<literal>Network \"man in the middle\" attacks</literal>. Ohne "
+"Signaturprüfung kann ein schädlicher Mittelsmann sich selbst in das "
+"Herunterladen von Paketen einbringen und Schadsoftware bereitstellen. Dies "
+"kann entweder durch Kontrolle eines Netzwerkelements (Router, Switch, etc.) "
+"oder durch Umleiten des Netzverkehrs zu einem bösartigen Server (durch ARP- "
+"oder DNS-Manipulationsangriffe) erfolgen."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<literal>Mirror network compromise</literal>. Without signature checking, a "
+"malicious agent can compromise a mirror host and modify the files in it to "
+"propagate malicious software to all users downloading packages from that "
+"host."
+msgstr ""
+"<literal>Mirror network compromise</literal>. Ohne Signaturprüfung kann ein "
+"schädlicher Mittelsmann einen Spiegelserver kompromittieren und die Dateien "
+"darauf verändern, um schädliche Software an alle Anwender zu verbreiten, die "
+"Pakete von diesem Rechner herunterladen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"However, it does not defend against a compromise of the master server itself "
+"(which signs the packages) or against a compromise of the key used to sign "
+"the Release files. In any case, this mechanism can complement a per-package "
+"signature."
+msgstr ""
+"Es schützt jedoch nicht gegen eine Kompromittierung des Hauptservers selbst "
+"(der die Pakete signiert) oder gegen eine Kompromittierung des Schlüssels, "
+"der zum Signieren der Release-Dateien benutzt wird. In jedem Fall kann "
+"dieser Mechanismus eine Signatur pro Paket ergänzen."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "User Configuration"
+msgstr "Benutzerkonfiguration"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"<command>apt-key</command> is the program that manages the list of keys used "
+"by APT to trust repositories. It can be used to add or remove keys as well "
+"as list the trusted keys. Limiting which key(s) are able to sign which "
+"archive is possible via the <option>Signed-By</option> in &sources-list;."
+msgstr ""
+"<command>apt-key</command> ist das Programm, das die Liste der von APT "
+"verwendeten Schlüssel verwaltet, aufgrund derer es Depots vertraut. Es kann "
+"benutzt werden, um Schlüssel hinzuzufügen oder zu entfernen, sowie um "
+"vertrauenswürdige Schlüssel aufzulisten. Welche(r) Schlüssel welches Archiv "
+"signieren kann/können, kann per <option>Signed-By</option> in &sources-list; "
+"eingeschränkt werden."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so fiddling with "
+"<command>apt-key</command> is only needed if third-party repositories are "
+"added."
+msgstr ""
+"Beachten Sie, dass eine Standardinstallation bereits alle Schlüssel zum "
+"sicheren Beschaffen von Paketen aus den Standarddepots enthält, daher ist "
+"das Frickeln mit <command>apt-key</command> nur nötig, wenn "
+"Drittanbieterdepots hinzugefügt werden."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"In order to add a new key you need to first download it (you should make "
+"sure you are using a trusted communication channel when retrieving it), add "
+"it with <command>apt-key</command> and then run <command>apt-get update</"
+"command> so that apt can download and verify the <filename>InRelease</"
+"filename> or <filename>Release.gpg</filename> files from the archives you "
+"have configured."
+msgstr ""
+"Um einen neuen Schlüssel hinzuzufügen, müssen Sie ihn zuerst herunterladen "
+"(Sie sollten sicherstellen, dass Sie einen vertrauenswürdigen "
+"Kommunikationskanal benutzen, wenn Sie ihn herunterladen), ihn mit "
+"<command>apt-key</command> hinzufügen und dann <command>apt-get update</"
+"command> ausführen, so dass APT die Dateien <filename>InRelease</filename> "
+"oder <filename>Release.gpg</filename> der von Ihnen konfigurierten Archive "
+"herunterladen und prüfen kann."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Archive Configuration"
+msgstr "Archivkonfiguration"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"If you want to provide archive signatures in an archive under your "
+"maintenance you have to:"
+msgstr ""
+"Wenn Sie Archivsignaturen in einem von Ihnen betreuten Archiv zur Verfügung "
+"stellen möchten, müssen Sie:"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Create a toplevel Release file</emphasis>, if it does not exist "
+"already. You can do this by running <command>apt-ftparchive release</"
+"command> (provided in apt-utils)."
+msgstr ""
+"<emphasis>erzeugt einer Release-Datei der obersten Stufe</emphasis>, wenn "
+"sie nicht bereits existiert. Sie können dies erledigen, indem Sie "
+"<command>apt-ftparchive release</command> (aus apt-utils) ausführen."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --"
+"clearsign -o InRelease Release</command> and <command>gpg -abs -o Release."
+"gpg Release</command>."
+msgstr ""
+"<emphasis>Signieren Sie es</emphasis>. Sie können dies tun, indem Sie "
+"<command>gpg --clearsign -o InRelease Release</command> und <command>gpg -"
+"abs -o Release.gpg Release</command> ausführen."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Publish the key fingerprint</emphasis>, so that your users will "
+"know what key they need to import in order to authenticate the files in the "
+"archive. It is best to ship your key in its own keyring package like "
+"&keyring-distro; does with &keyring-package; to be able to distribute "
+"updates and key transitions automatically later."
+msgstr ""
+"<emphasis>Veröffentlichen Sie den Schlüsselfingerabdruck</emphasis>, damit "
+"Ihre Anwender wissen, welchen Schlüssel sie importieren müssen, um die "
+"Dateien im Archiv zu authentifizieren. Am besten liefern Sie Ihren Schlüssel "
+"in einem eigenen Paket wie dies &keyring-distro; mit &keyring-package; "
+"macht, um später automatisch Aktualisierungen und Schlüsselwechsel "
+"durchführen zu können."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Provide instructions on how to add your archive and key</"
+"emphasis>. If your users can't acquire your key securely the chain of trust "
+"described above is broken. How you can help users add your key depends on "
+"your archive and target audience ranging from having your keyring package "
+"included in another archive users already have configured (like the default "
+"repositories of their distribution) to leveraging the web of trust."
+msgstr ""
+"<emphasis>Geben Sie Anweisungen, wie Ihr Archiv und Ihr Schlüssel "
+"hinzugefügt werden können</emphasis>. Falls Ihre Benutzer Ihren Schlüssel "
+"nicht auf sichere Weise beschaffen können, ist die oben beschriebene Kette "
+"des Vertrauens unterbrochen. Wie Sie Anwendern helfen können, Ihren "
+"Schlüssel hinzuzufügen, hängt von Ihrem Archiv ab und reicht von der "
+"Bereitstellung des Schlüsselrings als Teil eines Archivs, das bei Ihren "
+"Benutzern bereits konfiguriert ist (wie den Standarddepots ihrer "
+"Distribution), bis hin zum Nutzen des Vertrauensnetzes."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Whenever the contents of the archive change (new packages are added or "
+"removed) the archive maintainer has to follow the first two steps outlined "
+"above."
+msgstr ""
+"Immer wenn sich die Inhalte des Archivs ändern (neue Pakete hinzugefügt oder "
+"entfernt werden), muss der Archivbetreuer den beiden zuerst skizzierten "
+"Schritten folgen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+"&debsign;, &debsig-verify;, &gpg;"
+msgstr ""
+"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+"&debsign;, &debsig-verify;, &gpg;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"For more background information you might want to review the <ulink url="
+"\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
+"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
+"available in the harden-doc package) and the <ulink url=\"http://www."
+"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
+"ulink> by V. Alex Brennen."
+msgstr ""
+"Um weitere Hintergrundinformationen zu erhalten, können Sie die <ulink url="
+"\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Die "
+"Infrastruktur für Sicherheit in Debian</ulink>-Kapitel des Handbuchs "
+"»Anleitung zum Absichern von Debian« (auch verfügbar im Paket harden-doc) "
+"und das <ulink url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" "
+">Strong Distribution HOWTO</ulink> von V. Alex Brennen lesen."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Manpage Authors"
+msgstr "Autoren der Handbuchseite"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"This man-page is based on the work of Javier Fernández-Sanguino Peña, Isaac "
+"Jones, Colin Walters, Florian Weimer and Michael Vogt."
+msgstr ""
+"Diese Handbuchseite basiert auf der Arbeit von Javier Fernández-Sanguino "
+"Peña, Isaac Jones, Colin Walters, Florian Weimer und Michael Vogt."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cdrom.8.xml
+msgid "APT CD-ROM management utility"
+msgstr "APT-CD-ROM-Verwaltungswerkzeug"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<command>apt-cdrom</command> is used to add a new CD-ROM to APT's list of "
+"available sources. <command>apt-cdrom</command> takes care of determining "
+"the structure of the disc as well as correcting for several possible mis-"
+"burns and verifying the index files."
+msgstr ""
+"<command>apt-cdrom</command> wird benutzt, um eine neue CD-ROM zu APTs Liste "
+"der verfügbaren Quellen hinzuzufügen. <command>apt-cdrom</command> kümmert "
+"sich um die festgestellte Struktur des Mediums, sowie die Korrektur für "
+"mehrere mögliche Fehlbrennungen und prüft die Indexdateien."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"It is necessary to use <command>apt-cdrom</command> to add CDs to the APT "
+"system; it cannot be done by hand. Furthermore each disc in a multi-CD set "
+"must be inserted and scanned separately to account for possible mis-burns."
+msgstr ""
+"Es ist notwendig, <command>apt-cdrom</command> zu benutzen, um CDs zum APT-"
+"System hinzuzufügen. Dies kann nicht manuell erfolgen. Weiterhin muss jedes "
+"Medium in einer Zusammenstellung aus mehreren CDs einzeln eingelegt und "
+"gescannt werden, um auf mögliche Fehlbrennungen zu testen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<literal>add</literal> is used to add a new disc to the source list. It will "
+"unmount the CD-ROM device, prompt for a disc to be inserted and then proceed "
+"to scan it and copy the index files. If the disc does not have a proper "
+"<filename>.disk</filename> directory you will be prompted for a descriptive "
+"title."
+msgstr ""
+"<literal>add</literal> wird benutzt, um ein neues Medium zur Quellenliste "
+"hinzuzufügen. Es wird das CD-ROM-Gerät aushängen, verlangen, dass ein Medium "
+"eingelegt wird und dann mit den Einlesen und Kopieren der Indexdateien "
+"fortfahren. Wenn das Medium kein angemessenes <filename>.disk</filename>-"
+"Verzeichnis hat, werden Sie nach einem aussagekräftigen Titel gefragt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"APT uses a CD-ROM ID to track which disc is currently in the drive and "
+"maintains a database of these IDs in <filename>&statedir;/cdroms.list</"
+"filename>"
+msgstr ""
+"APT benutzt eine CD-ROM-ID, um nachzuverfolgen, welches Medium gerade im "
+"Laufwerk ist und verwaltet eine Datenbank mit diesen IDs in "
+"<filename>&statedir;/cdroms.list</filename>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"A debugging tool to report the identity of the current disc as well as the "
+"stored file name"
+msgstr ""
+"ein Fehlersuchwerkzeug, um die Identität des aktuellen Mediums sowie den "
+"gespeicherten Dateinamen zu berichten"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Do not try to auto-detect the CD-ROM path. Usually combined with the "
+"<option>--cdrom</option> option. Configuration Item: <literal>Acquire::"
+"cdrom::AutoDetect</literal>."
+msgstr ""
+"versucht nicht, den CD-ROM-Pfad automatisch zu bestimmen. Dies wird "
+"üblicherweise mit der Option <option>--cdrom</option> kombiniert. "
+"Konfigurationselement: <literal>Acquire::cdrom::AutoDetect</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Mount point; specify the location to mount the CD-ROM. This mount point must "
+"be listed in <filename>/etc/fstab</filename> and properly configured. "
+"Configuration Item: <literal>Acquire::cdrom::mount</literal>."
+msgstr ""
+"Einhängepunkt; gibt den Ort an, an dem die CD-ROM eingehängt wird. Dieser "
+"Einhängepunkt muss in <filename>/etc/fstab</filename> eingetragen und "
+"angemessen konfiguriert sein. Konfigurationselement: <literal>Acquire::"
+"cdrom::mount</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Rename a disc; change the label of a disc or override the disc's given "
+"label. This option will cause <command>apt-cdrom</command> to prompt for a "
+"new label. Configuration Item: <literal>APT::CDROM::Rename</literal>."
+msgstr ""
+"ein Medium umbenennen. Ändert den Namen eines Mediums oder überschreibt den "
+"Namen, der dem Medium gegeben wurde. Diese Option wird <command>apt-cdrom</"
+"command> veranlassen, nach einem neuen Namen zu fragen. "
+"Konfigurationselement: <literal>APT::CDROM::Rename</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"No mounting; prevent <command>apt-cdrom</command> from mounting and "
+"unmounting the mount point. Configuration Item: <literal>APT::CDROM::"
+"NoMount</literal>."
+msgstr ""
+"kein Einhängen; hindert <command>apt-cdrom</command> am Ein- und Aushängen "
+"des Einhängepunkts. Konfigurationselement: <literal>APT::CDROM::NoMount</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Fast Copy; Assume the package files are valid and do not check every "
+"package. This option should be used only if <command>apt-cdrom</command> has "
+"been run on this disc before and did not detect any errors. Configuration "
+"Item: <literal>APT::CDROM::Fast</literal>."
+msgstr ""
+"schnelle Kopie; unterstellt, dass die Paketdateien gültig sind und prüft "
+"nicht jedes Paket. Diese Option sollte nur benutzt werden, wenn <command>apt-"
+"cdrom</command> vorher für dieses Medium ausgeführt wurde und keine Fehler "
+"festgestellt hat. Konfigurationselement: <literal>APT::CDROM::Fast</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Thorough Package Scan; This option may be needed with some old Debian "
+"1.1/1.2 discs that have Package files in strange places. It takes much "
+"longer to scan the CD but will pick them all up."
+msgstr ""
+"gründliche Paketdurchsuchung. Diese Option könnte für einige alte "
+"Debian-1.1/1.2-Medien nötig sein, die Paketdateien an seltsamen Orten haben. "
+"Dies verlängert das Durchsuchen des Mediums deutlich, nimmt aber alle auf."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"No Changes; Do not change the &sources-list; file and do not write index "
+"files. Everything is still checked however. Configuration Item: "
+"<literal>APT::CDROM::NoAct</literal>."
+msgstr ""
+"keine Änderungen. Die &sources-list;-Datei nicht ändern und keine "
+"Indexdateien schreiben. Alles wird jedoch immer noch geprüft. "
+"Konfigurationselement: <literal>APT::CDROM::NoAct</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid "&apt-conf;, &apt-get;, &sources-list;"
+msgstr "&apt-conf;, &apt-get;, &sources-list;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<command>apt-cdrom</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-cdrom</command> gibt bei normalen Operationen 0 zurück, dezimal "
+"100 bei Fehlern."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-config.8.xml
+msgid "APT Configuration Query program"
+msgstr "APT-Konfigurationsabfrageprogramm"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml
+msgid ""
+"<command>apt-config</command> is an internal program used by various "
+"portions of the APT suite to provide consistent configurability. It accesses "
+"the main configuration file <filename>/etc/apt/apt.conf</filename> in a "
+"manner that is easy to use for scripted applications."
+msgstr ""
+"<command>apt-config</command> ist ein internes Programm, das von vielen "
+"Teilen des APT-Pakets benutzt wird, um durchgängige Konfigurierbarkeit "
+"bereitzustellen. Es greift auf die Hauptkonfigurationsdatei <filename>/etc/"
+"apt/apt.conf</filename> auf eine Art zu, die leicht für geskriptete "
+"Anwendungen zu benutzen ist."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"shell is used to access the configuration information from a shell script. "
+"It is given pairs of arguments, the first being a shell variable and the "
+"second the configuration value to query. As output it lists shell assignment "
+"commands for each value present. In a shell script it should be used as "
+"follows:"
+msgstr ""
+"»shell« wird benutzt, um aus einem Shellskript auf "
+"Konfigurationsinformationen zuzugreifen. Es wird ein Paar von Argumenten "
+"angegeben – das erste als Shell-Variable und das zweite als "
+"Konfigurationswert zum Abfragen. Als Ausgabe führt es Shell-"
+"Zuweisungsbefehle für jeden vorhandenen Wert auf. In einen Shellskript "
+"sollte es wie folgt benutzt werden:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-config.8.xml
+#, no-wrap
+msgid ""
+"OPTS=\"-f\"\n"
+"RES=`apt-config shell OPTS MyApp::options`\n"
+"eval $RES\n"
+msgstr ""
+"OPTS=\"-f\"\n"
+"RES=`apt-config shell OPTS MyApp::options`\n"
+"eval $RES\n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"This will set the shell environment variable $OPTS to the value of MyApp::"
+"options with a default of <option>-f</option>."
+msgstr ""
+"Dies wird die Shell-Umgebungsvariable $OPT auf den Wert von MyApp::options "
+"mit einer Vorgabe von <option>-f</option> setzen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"The configuration item may be postfixed with a /[fdbi]. f returns file "
+"names, d returns directories, b returns true or false and i returns an "
+"integer. Each of the returns is normalized and verified internally."
+msgstr ""
+"An das Konfigurationselement kann /[fdbi] angehängt werden. »f« gibt "
+"Dateinamen zurück, »d« gibt Verzeichnisse zurück, »b« gibt true oder false "
+"zurück und »i« gibt eine Ganzzahl zurück. Jede Rückgabe ist normiert und "
+"intern geprüft."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid "Just show the contents of the configuration space."
+msgstr "Nur der Inhalt des Konfigurationsbereichs wird angezeigt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"Include options which have an empty value. This is the default, so use --no-"
+"empty to remove them from the output."
+msgstr ""
+"schließt Optionen ein, die einen leeren Wert haben. Dies ist die Vorgabe, "
+"benutzen Sie daher --no-empty, um sie aus der Ausgabe zu entfernen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-config.8.xml
+msgid "&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n"
+msgstr "&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"Defines the output of each config option. &percnt;t will be replaced with "
+"its individual name, &percnt;f with its full hierarchical name and &percnt;v "
+"with its value. Use uppercase letters and special characters in the value "
+"will be encoded to ensure that it can e.g. be safely used in a quoted-string "
+"as defined by RFC822. Additionally &percnt;n will be replaced by a newline, "
+"and &percnt;N by a tab. A &percnt; can be printed by using &percnt;&percnt;."
+msgstr ""
+"definiert die Ausgabe jeder Konfigurationsoption. &percnt;t wird durch den "
+"individuellen Namen ersetzt, &percnt;f durch ihren vollständigen "
+"hierarchichen Namen und &percnt;v durch ihren Wert. Verwenden Sie "
+"Großbuchstaben; Sonderzeichen in dem Wert werden kodiert, um "
+"sicherzustellen, dass sie z.B. in einer maskierten Zeichenkette, wie sie "
+"RFC822 definiert, sicher verwandt werden kann. &percnt;n wird zusätzlich "
+"durch einen Zeilenumbruch ersetzt, &percnt;N durch einen Tabulator. Ein "
+"&percnt; kann mittels &percnt;&percnt; ausgegeben werden."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml
+msgid "&apt-conf;"
+msgstr "&apt-conf;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml
+msgid ""
+"<command>apt-config</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-config</command> gibt bei normalen Operationen 0 zurück, "
+"dezimal 100 bei Fehlern."
+
+#. type: Content of: <refentry><refentryinfo><author><contrib>
+#: apt.conf.5.xml
+msgid "Initial documentation of Debug::*."
+msgstr "ursprüngliche Dokumentation von Debug::*."
+
+#. type: Content of: <refentry><refentryinfo><author><email>
+#: apt.conf.5.xml
+msgid "dburrows@debian.org"
+msgstr "dburrows@debian.org"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml
+msgid "5"
+msgstr "5"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.conf.5.xml
+msgid "Configuration file for APT"
+msgstr "Konfigurationsdatei für APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<filename>/etc/apt/apt.conf</filename> is the main configuration file shared "
+"by all the tools in the APT suite of tools, though it is by no means the "
+"only place options can be set. The suite also shares a common command line "
+"parser to provide a uniform environment."
+msgstr ""
+"<filename>/etc/apt/apt.conf</filename> ist die Hauptkonfigurationsdatei, die "
+"sich alle Werkzeuge der APT-Suite teilen, es ist jedoch beileibe nicht der "
+"einzige Ort, an dem Optionen gesetzt werden können. Die Suite benutzt "
+"außerdem einen gemeinsamen Befehlszeilenauswerter, um eine einheitliche "
+"Umgebung bereitzustellen."
+
+#. type: Content of: <refentry><refsect1><orderedlist><para>
+#: apt.conf.5.xml
+msgid ""
+"When an APT tool starts up it will read the configuration files in the "
+"following order:"
+msgstr ""
+"Wenn ein APT-Werkzeug startet, wird es die Konfigurationsdateien in der "
+"folgenden Reihenfolge lesen:"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the file specified by the <envar>APT_CONFIG</envar> environment variable (if "
+"any)"
+msgstr ""
+"die Datei, die durch die Umgebungsvariable <envar>APT_CONFIG</envar> "
+"angegeben wird (falls gesetzt)"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending "
+"order which have either no or \"<literal>conf</literal>\" as filename "
+"extension and which only contain alphanumeric, hyphen (-), underscore (_) "
+"and period (.) characters. Otherwise APT will print a notice that it has "
+"ignored a file, unless that file matches a pattern in the <literal>Dir::"
+"Ignore-Files-Silently</literal> configuration list - in which case it will "
+"be silently ignored."
+msgstr ""
+"alle Dateien in <literal>Dir::Etc::Parts</literal> in aufsteigender "
+"alphanumerischer Reihenfolge, die entweder keine oder »<literal>conf</"
+"literal>« als Dateinamenserweiterung haben und die nur alphanumerische "
+"Zeichen, Bindestriche (-), Unterstriche (_) und Punkte (.) enthalten. "
+"Andernfalls wird APT einen Hinweis ausgeben, dass es eine Datei ignoriert "
+"hat, falls die Datei nicht auf ein Muster in der Konfigurationsliste "
+"<literal>Dir::Ignore-Files-Silently</literal> passt – in diesem Fall wird "
+"sie stillschweigend ignoriert."
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the main configuration file specified by <literal>Dir::Etc::main</literal>"
+msgstr ""
+"die Hauptkonfigurationsdatei, die durch <literal>Dir::Etc::main</literal> "
+"angegeben wird"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"all options set in the binary specific configuration subtree are moved into "
+"the root of the tree."
+msgstr ""
+"Alle in der programmspezifischen Unterbaumstruktur gesetzten Optionen werden "
+"in die Wurzel der Baumstruktur verschoben."
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the command line options are applied to override the configuration "
+"directives or to load even more configuration files."
+msgstr ""
+"Die Befehlszeilenoptionen werden angewandt, um die Konfigurationsdirektiven "
+"zu überschreiben oder um sogar mehrere Konfigurationsdateien zu laden."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Syntax"
+msgstr "Syntax"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The configuration file is organized in a tree with options organized into "
+"functional groups. Option specification is given with a double colon "
+"notation; for instance <literal>APT::Get::Assume-Yes</literal> is an option "
+"within the APT tool group, for the Get tool. Options do not inherit from "
+"their parent groups."
+msgstr ""
+"Die Konfigurationsdatei ist in einem Baum mit Optionen organisiert, die in "
+"funktionellen Gruppen organisiert sind. Optionsspezifikation wird mit einer "
+"doppelten Doppelpunktschreibweise angegeben, zum Beispiel ist <literal>APT::"
+"Get::Assume-Yes</literal> eine Option innerhalb der APT-Werkzeuggruppe für "
+"das Werkzeug Get. Optionen werden nicht von ihren Elterngruppe geerbt."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Syntactically the configuration language is modeled after what the ISC tools "
+"such as bind and dhcp use. Lines starting with <literal>//</literal> are "
+"treated as comments (ignored), as well as all text between <literal>/*</"
+"literal> and <literal>*/</literal>, just like C/C++ comments. Each line is "
+"of the form <literal>APT::Get::Assume-Yes \"true\";</literal>. The "
+"quotation marks and trailing semicolon are required. The value must be on "
+"one line, and there is no kind of string concatenation. Values must not "
+"include backslashes or extra quotation marks. Option names are made up of "
+"alphanumeric characters and the characters \"/-:._+\". A new scope can be "
+"opened with curly braces, like this:"
+msgstr ""
+"Syntaktisch ist die Konfigurationssprache dem nachempfunden, was die ISC-"
+"Werkzeuge, wie bind und dhcp, benutzen. Zeilen, die mit <literal>//</"
+"literal> beginnen, werden als Kommentar betrachtet (und ignoriert), ebenso "
+"wie jeglicher Text zwischen <literal>/*</literal> und <literal>*/</literal>, "
+"wie bei C/C++-Kommentaren. Jede Zeile hat die Form <literal>APT::Get::Assume-"
+"Yes \"true\";</literal>. Die Anführungszeichen und abschließenden "
+"Strichpunkte werden benötigt. Der Wert muss in einer Zeile stehen und es "
+"gibt keine Möglichkeit Zeichenketten aneinander zu hängen. Werte dürfen "
+"keine Rückwärtsschrägstriche oder zusätzliche Anführungszeichen enthalten. "
+"Optionsnamen werden aus alphanumerischen Zeichen und den Zeichen »/-:._+« "
+"gebildet. Ein neuer Geltungsbereich kann mit geschweiften Klammern geöffnet "
+"werden, wie:"
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT {\n"
+" Get {\n"
+" Assume-Yes \"true\";\n"
+" Fix-Broken \"true\";\n"
+" };\n"
+"};\n"
+msgstr ""
+"APT {\n"
+" Get {\n"
+" Assume-Yes \"true\";\n"
+" Fix-Broken \"true\";\n"
+" };\n"
+"};\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"with newlines placed to make it more readable. Lists can be created by "
+"opening a scope and including a single string enclosed in quotes followed by "
+"a semicolon. Multiple entries can be included, separated by a semicolon."
+msgstr ""
+"mit eingefügten Zeilenumbrüchen, um es leserlicher zu gestalten. Listen "
+"können erstellt werden, indem ein Geltungsbereich geöffnet wird und eine "
+"einzelne, von Anführungszeichen, denen ein Schrägstrich folgt, "
+"eingeschlossene Zeichenkette eingefügt wird. Es können mehrere Einträge "
+"eingefügt werden, jeweils getrennt durch einen Schrägstrich."
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "DPkg::Pre-Install-Pkgs {\"/usr/sbin/dpkg-preconfigure --apt\";};\n"
+msgstr "DPkg::Pre-Install-Pkgs {\"/usr/sbin/dpkg-preconfigure --apt\";};\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"In general the sample configuration file &configureindex; is a good guide "
+"for how it should look."
+msgstr ""
+"Im Allgemeinen bietet die Beispielkonfigurationsdatei &configureindex; eine "
+"gute Anleitung, wie dies aussehen könnte."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Case is not significant in names of configuration items, so in the previous "
+"example you could use <literal>dpkg::pre-install-pkgs</literal>."
+msgstr ""
+"Die Groß- und Kleinschreibung ist in Namen der Konfigurationselemente nicht "
+"von Bedeutung, deshalb könnten Sie im vorherigen Beispiel auch "
+"<literal>dpkg::pre-install-pkgs</literal> benutzen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Names for the configuration items are optional if a list is defined as can "
+"be seen in the <literal>DPkg::Pre-Install-Pkgs</literal> example above. If "
+"you don't specify a name a new entry will simply add a new option to the "
+"list. If you specify a name you can override the option in the same way as "
+"any other option by reassigning a new value to the option."
+msgstr ""
+"Namen für die Konfigurationselemente sind optional, wenn eine Liste, wie sie "
+"im Beispiel <literal>DPkg::Pre-Install-Pkgs</literal> oberhalb gesehen "
+"werden kann, definiert ist. Wenn Sie keinen neuen Namen angeben, wird ein "
+"neuer Eintrag der Liste lediglich eine neue Option hinzufügen. Wenn Sie "
+"einen Namen eingeben, können Sie die Option, wie jede andere Option, "
+"überschreiben, indem Sie der Option erneut einen neuen Wert zuweisen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Two special commands are defined: <literal>#include</literal> (which is "
+"deprecated and not supported by alternative implementations) and "
+"<literal>#clear</literal>. <literal>#include</literal> will include the "
+"given file, unless the filename ends in a slash, in which case the whole "
+"directory is included. <literal>#clear</literal> is used to erase a part of "
+"the configuration tree. The specified element and all its descendants are "
+"erased. (Note that these lines also need to end with a semicolon.)"
+msgstr ""
+"Es sind zwei Spezialbefehle definiert: <literal>#include</literal> (was "
+"missbilligt ist und von alternativen Implementierungen nicht unterstützt "
+"wird) und <literal>#clear</literal>: <literal>#include</literal> wird die "
+"angegebene Datei einfügen, außer, wenn der Dateiname mit einem Schrägstrich "
+"endet, in diesem Fall wird das ganze Verzeichnis eingefügt. <literal>#clear</"
+"literal> wird benutzt, um einen Teil des Konfigurationsbaums zu löschen. Das "
+"angegebene Element und alle davon absteigenden Elemente werden gelöscht. "
+"(Beachten Sie, dass diese Zeilen auch mit einem Schrägstrich enden müssen.)"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>#clear</literal> command is the only way to delete a list or a "
+"complete scope. Reopening a scope (or using the syntax described below with "
+"an appended <literal>::</literal>) will <emphasis>not</emphasis> override "
+"previously written entries. Options can only be overridden by addressing a "
+"new value to them - lists and scopes can't be overridden, only cleared."
+msgstr ""
+"Der <literal>#clear</literal>-Befehl ist der einzige Weg, eine Liste oder "
+"einen kompletten Geltungsbereich zu löschen. Erneutes Öffnen eines "
+"Geltungsbereichs (oder die unten beschriebene Syntax mit angehängten "
+"<literal>::</literal>) wird vorherige Einträge <emphasis>nicht</emphasis> "
+"außer Kraft setzen. Optionen können nur außer Kraft gesetzt werden, indem "
+"ein neuer Wert an sie adressiert wird – Listen und Geltungsbereiche können "
+"nicht außer Kraft gesetzt, sondern nur bereinigt werden."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"All of the APT tools take an -o option which allows an arbitrary "
+"configuration directive to be specified on the command line. The syntax is a "
+"full option name (<literal>APT::Get::Assume-Yes</literal> for instance) "
+"followed by an equals sign then the new value of the option. To append a new "
+"element to a list, add a trailing <literal>::</literal> to the name of the "
+"list. (As you might suspect, the scope syntax can't be used on the command "
+"line.)"
+msgstr ""
+"Alle APT-Werkzeuge bringen eine Option -o mit, die es einer beliebigen "
+"Konfigurationsdirektiven erlaubt, auf der Befehlszeile angegeben zu werden. "
+"Die Syntax ist ein vollständiger Optionsname (<literal>APT::Get::Assume-Yes</"
+"literal> zum Beispiel), gefolgt von einem Gleichheitszeichen und dann dem "
+"neuen Wert der Option. Um ein neues Element an eine Liste anzuhängen, fügen "
+"Sie ein führendes <literal>::</literal> an den Namen der Liste. (Wenn Ihnen "
+"das merkwürdig vorkommt: Die Geltungsbereichssyntax kann nicht auf der "
+"Befehlszeile benutzt werden.)"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that appending items to a list using <literal>::</literal> only works "
+"for one item per line, and that you should not use it in combination with "
+"the scope syntax (which adds <literal>::</literal> implicitly). Using both "
+"syntaxes together will trigger a bug which some users unfortunately depend "
+"on: an option with the unusual name \"<literal>::</literal>\" which acts "
+"like every other option with a name. This introduces many problems; for one "
+"thing, users who write multiple lines in this <emphasis>wrong</emphasis> "
+"syntax in the hope of appending to a list will achieve the opposite, as only "
+"the last assignment for this option \"<literal>::</literal>\" will be used. "
+"Future versions of APT will raise errors and stop working if they encounter "
+"this misuse, so please correct such statements now while APT doesn't "
+"explicitly complain about them."
+msgstr ""
+"Beachten Sie, dass das Anhängen von Elementen an eine Liste mittels "
+"<literal>::</literal> nur für ein Element pro Zeile funktioniert, Sie "
+"sollten es nicht nicht in Verbindung mit einer Geltungsbereichssyntax "
+"benutzen (die »<literal>::</literal>« explizit hinzufügt). Die Benutzung der "
+"Syntax von beiden zusammen wird einen Fehler auslösen, auf den sich einige "
+"Anwender ungünstigerweise verlassen: eine Option mit dem unüblichen Namen "
+"»<literal>::</literal>«, die sich wie jede andere Option mit einem Namen "
+"verhält. Dies leitet viele Probleme ein; zum einen werden Anwender, die "
+"mehrere Zeilen in dieser <emphasis>falschen</emphasis> Syntax in der "
+"Hoffnung etwas an die Liste anzuhängen, schreiben, das Gegenteil erreichen, "
+"da nur die letzte Zuweisung zu dieser Option »<literal>::</literal>« benutzt "
+"wird. Zukünftige APT-Versionen werden Fehler ausgeben und die Arbeit "
+"stoppen, wenn sie auf diese falsche Verwendung stoßen. Korrigieren Sie "
+"deshalb nun solche Anweisungen, solange sich APT nicht explizit darüber "
+"beklagt."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "The APT Group"
+msgstr "Die APT-Gruppe"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"This group of options controls general APT behavior as well as holding the "
+"options for all of the tools."
+msgstr ""
+"Diese Gruppe von Optionen steuert das allgemeine Verhalten von APT, ebenso "
+"wie es die Optionen für alle Werkzeuge enthält."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"System Architecture; sets the architecture to use when fetching files and "
+"parsing package lists. The internal default is the architecture apt was "
+"compiled for."
+msgstr ""
+"Systemarchitektur; setzt die Architektur die benutzt wird, wenn Dateien "
+"heruntergeladen und Paketlisten ausgewertet werden. Die interne Vorgabe ist "
+"die Architektur für die APT kompiliert wurde."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"All Architectures the system supports. For instance, CPUs implementing the "
+"<literal>amd64</literal> (also called <literal>x86-64</literal>) "
+"instruction set are also able to execute binaries compiled for the "
+"<literal>i386</literal> (<literal>x86</literal>) instruction set. This list "
+"is used when fetching files and parsing package lists. The initial default "
+"is always the system's native architecture (<literal>APT::Architecture</"
+"literal>), and foreign architectures are added to the default list when they "
+"are registered via <command>dpkg --add-architecture</command>."
+msgstr ""
+"alle Architekturen, die das System unterstützt. Zum Beispiel sind CPUs, die "
+"<literal>amd64</literal>-Befehlssätze implementieren (auch <literal>x86-64</"
+"literal> genannt), ebenso in der Lage, Programme auszuführen, die für "
+"<literal>i386</literal>-Befehlssätze (<literal>x86</literal>) kompiliert "
+"wurden. Diese Liste wird benutzt, wenn Dateien abgerufen und Paketlisten "
+"ausgewertet werden. Die interne Vorgabe ist immer die native Architektur des "
+"Systems (<literal>APT::Architecture</literal>) und fremde Architekturen "
+"werden der vorgegebenen Liste hinzugefügt, wenn sie per <command>dpkg --"
+"print-architectures</command> registriert werden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines which compression formats are supported, how compression "
+"and decompression can be performed if support for this format isn't built "
+"into apt directly and a cost-value indicating how costly it is to compress "
+"something in this format. As an example the following configuration stanza "
+"would allow apt to download and uncompress as well as create and store files "
+"with the low-cost <literal>.reversed</literal> file extension which it will "
+"pass to the command <command>rev</command> without additional commandline "
+"parameters for compression and uncompression:"
+msgstr ""
+"Dieser Gültigkeitsbereich definiert, welche Komprimierungsformate "
+"unterstützt werden, wie Komprimierung und Dekomprimierung durchgeführt "
+"werden können, falls die Unterstützung für dieses Format nicht direkt in APT "
+"eingebaut wurde und einen Wert, der anzeigt, wie aufwändig es ist, etwas in "
+"dieses Format zu komprimieren. Als Beispiel würde es der folgende "
+"Konfigurationsabschnitt APT erlauben, Dateien herunterzuladen und zu "
+"dekomprimieren sowie mit der kostengünstigen <literal>.reversed</literal> "
+"Dateiendung zu erzeugen und zu speichern. Dadurch werden sie ohne "
+"zusätzliche Befehlszeilenparameter zum Komprimieren und Dekomprimieren an "
+"den Befehl <command>rev</command> übergeben:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Compressor::rev {\n"
+"\tName \"rev\";\n"
+"\tExtension \".reversed\";\n"
+"\tBinary \"rev\";\n"
+"\tCompressArg {};\n"
+"\tUncompressArg {};\n"
+"\tCost \"10\";\n"
+"};\n"
+msgstr ""
+"APT::Compressor::rev {\n"
+"\tName \"rev\";\n"
+"\tExtension \".reversed\";\n"
+"\tBinary \"rev\";\n"
+"\tCompressArg {};\n"
+"\tUncompressArg {};\n"
+"\tCost \"10\";\n"
+"};\n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"List of all build profiles enabled for build-dependency resolution, without "
+"the \"<literal>profile.</literal>\" namespace prefix. By default this list "
+"is empty. The <envar>DEB_BUILD_PROFILES</envar> as used by &dpkg-"
+"buildpackage; overrides the list notation."
+msgstr ""
+"Liste aller Bauprofile ohne das Namensraum-Präfix »<literal>profile.</"
+"literal>«, die für die Auflösung der Bauabhängigkeiten aktiviert sind. "
+"Standardmäßig ist diese Liste leer. <envar>DEB_BUILD_PROFILES</envar> setzt "
+"so, wie es durch &dpkg-buildpackage; benutzt wird, die Listenschreibweise "
+"außer Kraft."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Default release to install packages from if more than one version is "
+"available. Contains release name, codename or release version. Examples: "
+"'stable', 'testing', 'unstable', '&debian-stable-codename;', '&debian-"
+"testing-codename;', '4.0', '5.0*'. See also &apt-preferences;."
+msgstr ""
+"Standard-Release von dem Pakete installiert werden, wenn mehr als eine "
+"Version verfügbar ist. Enthält Release-Name, Codename oder Release-Version. "
+"Beispiele: »stable«, »testing, »unstable«, »&debian-stable-codename;«, "
+"»&debian-testing-codename;«, »4.0«, »5.0*«. Siehe auch &apt-preferences;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Ignore held packages; this global option causes the problem resolver to "
+"ignore held packages in its decision making."
+msgstr ""
+"Halten von Paketen ignorieren. Diese globale Option veranlasst den "
+"Problemlöser, gehaltene Pakete beim Treffen von Entscheidungen zu ignorieren."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Defaults to on. When turned on the autoclean feature will remove any "
+"packages which can no longer be downloaded from the cache. If turned off "
+"then packages that are locally installed are also excluded from cleaning - "
+"but note that APT provides no direct means to reinstall them."
+msgstr ""
+"standardmäßig auf on (ein). Wenn es auf on gesetzt wird, wird die "
+"automatische Bereinigungsfunktion alle Pakete entfernen, die nicht länger "
+"aus dem Zwischenspeicher heruntergeladen werden können. Wenn es auf off "
+"gesetzt wird, dann werden außerden die Pakete, die lokal installiert sind, "
+"vom Bereinigen ausgeschlossen – beachten Sie jedoch, dass APT keine direkten "
+"Möglichkeiten bereitstellt, um sie erneut zu installieren."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Defaults to on, which will cause APT to install essential and important "
+"packages as soon as possible in an install/upgrade operation, in order to "
+"limit the effect of a failing &dpkg; call. If this option is disabled, APT "
+"treats an important package in the same way as an extra package: between the "
+"unpacking of the package A and its configuration there can be many other "
+"unpack or configuration calls for other unrelated packages B, C etc. If "
+"these cause the &dpkg; call to fail (e.g. because package B's maintainer "
+"scripts generate an error), this results in a system state in which package "
+"A is unpacked but unconfigured - so any package depending on A is now no "
+"longer guaranteed to work, as its dependency on A is no longer satisfied."
+msgstr ""
+"ist standardmäßig aktiviert, was APT veranlassen wird, essentielle und "
+"wichtige Pakete so bald wie möglich in einer Installations-/"
+"Aktualisierungstransaktion zu installieren, um die Auswirkungen eines "
+"scheiternden &dpkg;-Aufrufs zu begrenzen. Falls diese Option deaktiviert "
+"ist, betrachtet APT ein wichtiges Paket auf die gleiche Weise wie ein "
+"zusätzliches Paket: Zwischen dem Entpacken des Pakets A und seiner "
+"Konfiguration können viele andere Entpack- oder Konfigurationsaufrufe für "
+"andere, nicht zugehörige Pakete B, C etc. liegen. Falls dies zum Scheitern "
+"des &dpkg;-Aufrufs führt (z.B. weil Betreuerskripte des Pakets B einen "
+"Fehler erzeugen), führt dies zu einem Systemstatus, in dem Paket A entpackt, "
+"aber nicht konfiguriert ist, daher ist nicht länger gewährleistet, dass "
+"irgendein Paket, das von A abhängt, weiter funktioniert, da seine "
+"Abhängigkeit von A nicht länger erfüllt wird."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The immediate configuration marker is also applied in the potentially "
+"problematic case of circular dependencies, since a dependency with the "
+"immediate flag is equivalent to a Pre-Dependency. In theory this allows APT "
+"to recognise a situation in which it is unable to perform immediate "
+"configuration, abort, and suggest to the user that the option should be "
+"temporarily deactivated in order to allow the operation to proceed. Note "
+"the use of the word \"theory\" here; in the real world this problem has "
+"rarely been encountered, in non-stable distribution versions, and was caused "
+"by wrong dependencies of the package in question or by a system in an "
+"already broken state; so you should not blindly disable this option, as the "
+"scenario mentioned above is not the only problem it can help to prevent in "
+"the first place."
+msgstr ""
+"Außerdem wird die unmittelbare Konfigurationsmarkierung im potenziell "
+"problematischen Fall zirkulärer Abhängigkeiten angewandt, da eine "
+"Abhängigkeit mit der Unmittelbarmarkierung einer Vorabhängigkeit entspricht. "
+"Theoretisch ermöglicht dies APT, eine Situation zu erkennen, in der es keine "
+"unmittelbare Konfiguration durchführen kann, abzubrechen und dem Anwender "
+"vorzuschlagen, dass er die Option zeitweise deaktivieren soll, um ein "
+"Fortsetzen der Transaktion zu ermöglichen. Beachten Sie hier das Wort "
+"»theoretisch«; im wahren Leben ist dieses Problem selten in unstabilen "
+"Distributionsversionen aufgetreten und es wurde durch falsche Abhängigkeiten "
+"des fraglichen Pakets verursacht oder durch ein System in einem beschädigten "
+"Zustand; daher sollten Sie diese Option nicht blind deaktivieren, da das "
+"zuvor erwähnte Szenario nicht das einzige Problem ist, das es an erster "
+"Stelle verhindern kann."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Before a big operation like <literal>dist-upgrade</literal> is run with this "
+"option disabled you should try to explicitly <literal>install</literal> the "
+"package APT is unable to configure immediately; but please make sure you "
+"also report your problem to your distribution and to the APT team with the "
+"buglink below, so they can work on improving or correcting the upgrade "
+"process."
+msgstr ""
+"Bevor eine umfangreiche Transaktion wie <literal>dist-upgrade</literal> mit "
+"dieser ausgeschalteten Option ausgeführt wird, sollten Sie versuchen, "
+"explizit <literal>install</literal> für das Paket auszuführen, das APT nicht "
+"unmittelbar konfigurieren kann. Stellen Sie aber bitte sicher, dass Sie Ihr "
+"Problem außerdem an Ihre Distribution und an das APT-Team mit dem "
+"Fehlerverweis unten melden, so dass sie an der Verbesserung und Korrektur "
+"des Upgrade-Prozesses arbeiten können."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Never enable this option unless you <emphasis>really</emphasis> know what "
+"you are doing. It permits APT to temporarily remove an essential package to "
+"break a Conflicts/Conflicts or Conflicts/Pre-Depends loop between two "
+"essential packages. <emphasis>Such a loop should never exist and is a grave "
+"bug</emphasis>. This option will work if the essential packages are not "
+"<command>tar</command>, <command>gzip</command>, <command>libc</command>, "
+"<command>dpkg</command>, <command>dash</command> or anything that those "
+"packages depend on."
+msgstr ""
+"Schalten Sie diese Option niemals ein, außer wenn Sie <emphasis>wirklich</"
+"emphasis> wissen, was Sie tun. Es erlaubt APT temporär ein essentielles "
+"Paket zu entfernen, um eine Conflicts/Conflicts- oder Conflicts/Pre-Depends-"
+"Schleife zwischen zwei essentiellen Paketen zu unterbrechen. <emphasis>Solch "
+"eine Schleife sollte niemals existieren und ist ein schwerwiegender Fehler</"
+"emphasis>. Diese Option wird funktionieren, wenn die essentiellen Pakete "
+"nicht <command>tar</command>, <command>gzip</command>, <command>libc</"
+"command>, <command>dpkg</command>, <command>dash</command> oder etwas, was "
+"davon abhängt, sind."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"APT uses since version 0.7.26 a resizable memory mapped cache file to store "
+"the available information. <literal>Cache-Start</literal> acts as a hint of "
+"the size the cache will grow to, and is therefore the amount of memory APT "
+"will request at startup. The default value is 20971520 bytes (~20 MB). Note "
+"that this amount of space needs to be available for APT; otherwise it will "
+"likely fail ungracefully, so for memory restricted devices this value should "
+"be lowered while on systems with a lot of configured sources it should be "
+"increased. <literal>Cache-Grow</literal> defines in bytes with the default "
+"of 1048576 (~1 MB) how much the cache size will be increased in the event "
+"the space defined by <literal>Cache-Start</literal> is not enough. This "
+"value will be applied again and again until either the cache is big enough "
+"to store all information or the size of the cache reaches the <literal>Cache-"
+"Limit</literal>. The default of <literal>Cache-Limit</literal> is 0 which "
+"stands for no limit. If <literal>Cache-Grow</literal> is set to 0 the "
+"automatic growth of the cache is disabled."
+msgstr ""
+"APT benutzt seit Version 0.7.26 eine Zwischenspeicherdatei für "
+"Speicherabbilder mit veränderlicher Größe um verfügbare Informationen zu "
+"speichern. <literal>Cache-Start</literal> dient als Hinweis, auf welche "
+"Größe der Zwischenspeicher wachsen wird und enthält daher den Betrag, "
+"welchen Speicher APT beim Start abruft. Die Vorgabe ist 20971520 Byte (~20 "
+"MB). Beachten Sie, dass diese Speichermenge für APT verfügbar sein muss, da "
+"es sonst unschön scheitert. Für Geräte mit eingeschränktem Speicher sollten "
+"diese Werte vermindert werden, während sie für Systeme mit vielen "
+"konfigurierten Quellen erhöht werden sollte. <literal>Cache-Grow</literal> "
+"definiert in Byte mit einer Vorgabe von 1048576 (~1 MB) um wieviel die Größe "
+"des Zwischenspeichers vergößert werden soll, falls der durch <literal>Cache-"
+"Start</literal> vorreservierte nicht ausreicht. Dieser Wert wird wieder und "
+"wieder verwandt bis entweder der Zwischenspeicher groß genug ist, um alle "
+"Informationen zu speichern oder die Zwischenspeichergröße das <literal>Cache-"
+"Limit</literal> erreicht. Vorgabe für <literal>Cache-Limit</literal> ist 0, "
+"was bedeutet, dass es kein Limit gibt. Falls <literal>Cache-Grow</literal> "
+"auf 0 gesetzt ist, kann der Zwischenspeicher nicht automatisch wachsen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Defines which packages are considered essential build dependencies."
+msgstr ""
+"definiert, welche Pakete als essentielle Bauabhängigkeiten betrachtet werden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Get subsection controls the &apt-get; tool; please see its documentation "
+"for more information about the options here."
+msgstr ""
+"Der Get-Unterabschnitt steuert das &apt-get;-Werkzeug. Lesen Sie bitte "
+"dessen Dokumentation, um weitere Informationen über die Optionen hier zu "
+"erhalten."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Cache subsection controls the &apt-cache; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"Der Cache-Unterabschnitt steuert das &apt-cache;-Werkzeug. Lesen Sie bitte "
+"dessen Dokumentation, um weitere Informationen über die Optionen hier zu "
+"erhalten."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The CDROM subsection controls the &apt-cdrom; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"Der CDROM-Unterabschnitt steuert das &apt-cdrom;-Werkzeug. Lesen Sie bitte "
+"dessen Dokumentation, um weitere Informationen über die Optionen hier zu "
+"erhalten."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "The Acquire Group"
+msgstr "Die Erwerbgruppe"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Acquire</literal> group of options controls the download of "
+"packages as well as the various \"acquire methods\" responsible for the "
+"download itself (see also &sources-list;)."
+msgstr ""
+"Die <literal>Acquire</literal>-Gruppe der Optionen steuert das Herunterladen "
+"von Paketen ebenso wie die verschiedenen »Beschaffungsmethoden«, die für das "
+"Herunterladen selbst zuständig sind (siehe auch &sources-list;)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Security related option defaulting to true, as giving a Release file's "
+"validation an expiration date prevents replay attacks over a long timescale, "
+"and can also for example help users to identify mirrors that are no longer "
+"updated - but the feature depends on the correctness of the clock on the "
+"user system. Archive maintainers are encouraged to create Release files with "
+"the <literal>Valid-Until</literal> header, but if they don't or a stricter "
+"value is desired the <literal>Max-ValidTime</literal> option below can be "
+"used. The <option>Check-Valid-Until</option> option of &sources-list; "
+"entries should be preferred to disable the check selectively instead of "
+"using this global override."
+msgstr ""
+"Die sicherheitsbezogene Option wird als »true« vorgegeben. Damit werden "
+"Wiederholungsangriffe über einen längeren Zeitraum hinweg verhindert, indem "
+"der Überprüfung der Datei Release ein Ablaufdatum gegeben wird. "
+"Beispielsweise wird Benutzern damit auch geholfen, länger nicht "
+"aktualisierte Spiegel zu erkennen – diese Funktion hängt jedoch von der "
+"Richtigkeit der Zeiteinstellung auf dem Anwendersystem ab. Archivbetreuer "
+"sind aufgefordert, Release-Dateien mit der Kopfzeile <literal>Valid-Until</"
+"literal> zu erstellen. Falls sie das nicht tun oder ein strengerer Wert "
+"gewünscht wird, kann die Option <literal>Max-ValidTime</literal> benutzt "
+"werden (siehe unten). Der Option <option>Check-Valid-Until</option> von "
+"&sources-list;-Einträgen zum wahlweisen Deaktivieren der Prüfung sollte der "
+"Vorzug gegeben werden, anstatt dies global außer Kraft zu setzen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Maximum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. If the Release file itself includes a "
+"<literal>Valid-Until</literal> header the earlier date of the two is used as "
+"the expiration date. The default value is <literal>0</literal> which stands "
+"for \"valid forever\". Archive specific settings can be made by appending "
+"the label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the <option>Valid-"
+"Until-Max</option> option there."
+msgstr ""
+"maximale Zeit (in Sekunden) nach ihrer Erzeugung (die in der Kopfzeile "
+"<literal>Date</literal> angegeben ist), die die Datei <filename>Release</"
+"filename> als gültig angesehen wird. Falls die Release-Datei selbst eine "
+"<literal>Valid-Until</literal>-Kopfzeile enthält, wird das frühere der "
+"beiden Daten als Ablaufdatum verwandt. Vorgabe ist <literal>0</literal>, was "
+"für »für immer gültig« steht. Archivspezifische Einstellungen können durch "
+"Anhängen der Archivbezeichnung an den Optionsnamen vorgenommen werden. "
+"Vorzugsweise kann dasselbe für bestimmte &sources-list;-Einträge erreicht "
+"werden, indem dort die Option <option>Valid-Until-Max</option> benutzt wird."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Minimum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. Use this if you need to use a seldom updated "
+"(local) mirror of a more frequently updated archive with a <literal>Valid-"
+"Until</literal> header instead of completely disabling the expiration date "
+"checking. Archive specific settings can and should be used by appending the "
+"label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the <option>Valid-"
+"Until-Min</option> option there."
+msgstr ""
+"minimale Zeit (in Sekunden), nach der Erzeugung (die in der Kopfzeile "
+"<literal>Date</literal> angegeben ist), die die Datei <filename>Release</"
+"filename> als gültig angesehen wird. Benutzen Sie dies, falls Sie einen "
+"selten aktualisierten (lokalen) Spiegel eines häufiger aktualisierten "
+"Archivs mit einer <literal>Valid-Until</literal>-Kopfzeile haben, anstatt "
+"die Überprüfung des Ablaufdatums komplett zu deaktivieren. Archivspezifische "
+"Einstellungen können und sollten durch Anhängen der Archivbezeichnung an den "
+"Optionsnamen vorgenommen werden. Vorzugsweise kann dasselbe für bestimmte "
+"&sources-list;-Einträge erreicht werden, indem dort die Option <option>Valid-"
+"Until-Min</option> benutzt wird."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Try to download deltas called <literal>PDiffs</literal> for indexes (like "
+"<filename>Packages</filename> files) instead of downloading whole ones. True "
+"by default. Preferably, this can be set for specific &sources-list; entries "
+"or index files by using the <option>PDiffs</option> option there."
+msgstr ""
+"versucht Unterschiede, die <literal>PDiffs</literal> genannt werden, für "
+"Indexe (wie <filename>Packages</filename>-Dateien) statt der kompletten "
+"Dateien herunterzuladen. Vorgabe ist »true«. Vorzugsweise kann dies für "
+"bestimmte &sources-list;-Einträge oder Index-Dateien gesetzt werden, indem "
+"dort die Option <option>PDiffs</option> benutzt wird."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Two sub-options to limit the use of PDiffs are also available: "
+"<literal>FileLimit</literal> can be used to specify a maximum number of "
+"PDiff files should be downloaded to update a file. <literal>SizeLimit</"
+"literal> on the other hand is the maximum percentage of the size of all "
+"patches compared to the size of the targeted file. If one of these limits is "
+"exceeded the complete file is downloaded instead of the patches."
+msgstr ""
+"Es sind außerdem zwei Unteroptionen verfügbar, um die Benutzung von PDiffs "
+"zu begrenzen: <literal>FileLimit</literal> kann verwandt werden, um die "
+"maximale Anzahl von PDiff-Dateien anzugeben, die zum Aktualisieren einer "
+"Datei heruntergeladen werden sollen. Andererseits gibt <literal>SizeLimit</"
+"literal> die maximale Prozentzahl der Größe aller Patches im Vergleich zur "
+"Zieldatei an. Wenn eine dieser Begrenzungen überschritten wird, wird die "
+"komplette Datei anstelle der Patche heruntergeladen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Try to download indexes via an URI constructed from a hashsum of the "
+"expected file rather than downloaded via a well-known stable filename. True "
+"by default, but automatically disabled if the source indicates no support "
+"for it. Usage can be forced with the special value \"force\". Preferably, "
+"this can be set for specific &sources-list; entries or index files by using "
+"the <option>By-Hash</option> option there."
+msgstr ""
+"versucht Indexe über einen URI der aus der Hash-Summe der erwarteten Datei "
+"gebildet wurde, statt über einen gut bekannten stabilen Dateinamen "
+"herunterzuladen. Standardmäßig »true«, wird aber automatisch deaktiviert, "
+"falls die Quelle anzeigt, dass es nicht unterstützt wird. Der Gebrauch kann "
+"mit dem speziellen Wert »force« erzwungen werden. Vorzugsweise kann dies für "
+"bestimmte &sources-list;-Einträge oder Index-Dateien gesetzt werden, indem "
+"dort die Option <option>By-Hash</option> benutzt wird."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</"
+"literal> or <literal>access</literal> which determines how APT parallelizes "
+"outgoing connections. <literal>host</literal> means that one connection per "
+"target host will be opened, <literal>access</literal> means that one "
+"connection per URI type will be opened."
+msgstr ""
+"Warteschlangenmodus; <literal>Queue-Mode</literal> kann entweder "
+"<literal>host</literal> oder <literal>access</literal> sein, wodurch "
+"festgelegt wird, wie APT ausgehende Verbindungen parallelisiert. "
+"<literal>host</literal> bedeutet, dass eine Verbindung pro Zielrechner "
+"geöffnet wird, <literal>access</literal> bedeutet, dass eine Verbindung pro "
+"URI-Art geöffnet wird."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Number of retries to perform. If this is non-zero APT will retry failed "
+"files the given number of times."
+msgstr ""
+"Anzahl der auszuführenden erneuten Versuche. Wenn dies nicht Null ist, wird "
+"APT fehlgeschlagene Dateien in der angegebenen Zahl erneut versuchen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Use symlinks for source archives. If set to true then source archives will "
+"be symlinked when possible instead of copying. True is the default."
+msgstr ""
+"benutzt symbolische Verweise für Quellarchive. Falls dies auf true gesetzt "
+"ist, werden Quellarchive, wenn möglich, symbolisch verknüpft, anstatt "
+"kopiert zu werden. Die Voreinstellung ist »true«."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>http::Proxy</literal> sets the default proxy to use for HTTP URIs. "
+"It is in the standard form of <literal>http://[[user][:pass]@]host[:port]/</"
+"literal>. Per host proxies can also be specified by using the form "
+"<literal>http::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>http_proxy</envar> environment variable will "
+"be used."
+msgstr ""
+"<literal>http::Proxy</literal> ist der zu benutzende Standard-HTTP-Proxy. Er "
+"wird standardmäßig in der Form <literal>http://[[Anwender][:"
+"Passwort]@]Rechner[:Port]/</literal> angegeben. Durch Rechner-Proxys kann "
+"außerdem in der Form <literal>http::Proxy::&lt;host&gt;</literal> mit dem "
+"speziellen Schlüsselwort <literal>DIRECT</literal> angegeben werden, dass "
+"keine Proxys benutzt werden. Falls keine der obigen Einstellungen angegeben "
+"wurde, wird die Umgebungsvariable <envar>http_proxy</envar> benutzt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Three settings are provided for cache control with HTTP/1.1 compliant proxy "
+"caches. <literal>No-Cache</literal> tells the proxy not to use its cached "
+"response under any circumstances. <literal>Max-Age</literal> sets the "
+"allowed maximum age (in seconds) of an index file in the cache of the "
+"proxy. <literal>No-Store</literal> specifies that the proxy should not "
+"store the requested archive files in its cache, which can be used to prevent "
+"the proxy from polluting its cache with (big) .deb files."
+msgstr ""
+"Für die Steuerung des Zwischenspeichers mit HTTP/1.1-konformen Proxy-"
+"Zwischenspeichern stehen drei Einstellungen zur Verfügung. <literal>No-"
+"Cache</literal> teilt dem Proxy mit, dass er unter keinen Umständen seine "
+"zwischengespeicherten Antworten benutzen soll, <literal>Max-Age</literal> "
+"setzt das maximal erlaubte Alter einer Indexdatei im Zwischenspeicher des "
+"Proxys (in Sekunden). <literal>No-Store</literal> gibt an, dass der Proxy "
+"die angefragten Archivdateien nicht in seinem Zwischenspeicher ablegen soll. "
+"Das kann verwandt werden, um zu verhindern, dass der Proxy seinen "
+"Zwischenspeicher mit (großen) .deb-Dateien verunreinigt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The option <literal>timeout</literal> sets the timeout timer used by the "
+"method; this value applies to the connection as well as the data timeout."
+msgstr ""
+"Die Option <literal>timeout</literal> stellt den Zeitnehmer, der von der "
+"Methode benutzt wird. Dieser Wert wird auf die Verbindungs- sowie die "
+"Datenzeitüberschreitungen angewandt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e."
+"g. on high-latency connections. It specifies how many requests are sent in a "
+"pipeline. APT tries to detect and workaround misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the "
+"HTTP/1.1 specification pipelining can be disabled by setting the value to 0. "
+"It is enabled by default with the value 10."
+msgstr ""
+"Die Einstellung <literal>Acquire::http::Pipeline-Depth</literal> kann "
+"verwandt werden, um HTTP-Weiterleitung zu aktivieren (RFC 2616 Abschnitt "
+"8.1.2.2), was z.B. bei Verbindungen mit hoher Latenz vorteilhaft sein kann. "
+"Sie gibt an, wie viele Anfragen in eine Leitung gesandt werden. APT "
+"versucht, zur Laufzeit Webserver und Proxys aufzuspüren, die sich falsch "
+"verhalten und eine Behelfslösung zu finden. Falls Sie jedoch wissen, dass "
+"sich Ihrer nicht konform zur HTTP/1.1-Spezifikation verhält, kann das "
+"Weiterleiten durch Setzen des Wertes auf 0 deaktiviert werden. Standardmäßig "
+"ist es mit dem Wert 10 aktiviert."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::AllowRedirect</literal> controls whether APT will "
+"follow redirects, which is enabled by default."
+msgstr ""
+"<literal>Acquire::http::AllowRedirect</literal> steuert, ob APT Umleitungen "
+"folgen wird, was standardmäßig aktiviert ist."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</"
+"literal> which accepts integer values in kilobytes per second. The default "
+"value is 0 which deactivates the limit and tries to use all available "
+"bandwidth. Note that this option implicitly disables downloading from "
+"multiple servers at the same time."
+msgstr ""
+"Die benutzte Bandbreite kann durch <literal>Acquire::http::Dl-Limit</"
+"literal> eingeschränkt werden, was Ganzzahlwerte in Kilobyte pro Sekunde "
+"akzeptiert. Der Vorgabewert ist 0, was die Beschränkung ausschaltet und "
+"versucht, sämtliche verfügbare Bandbreite zu benutzen. Beachten Sie, dass "
+"diese Optionen implizit das Herunterladen von mehreren Servern zur gleichen "
+"Zeit deaktiviert."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::User-Agent</literal> can be used to set a different "
+"User-Agent for the http download method as some proxies allow access for "
+"clients only if the client uses a known identifier."
+msgstr ""
+"<literal>Acquire::http::User-Agent</literal> kann benutzt werden, um einen "
+"unterschiedlichen User-Agent für die HTTP-Download-Methode zu setzten, da "
+"einige Proxys den Clients nur dann Zugriff gewähren, wenn der Client einen "
+"bekannten Bezeichner verwendet."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::Proxy-Auto-Detect</literal> can be used to specify "
+"an external command to discover the http proxy to use. The first and only "
+"parameter is an URI denoting the host to be contacted to allow for host-"
+"specific configuration. APT expects the command to output the proxy on "
+"stdout as a single line in the style <literal>http://proxy:port/</literal> "
+"or the word <literal>DIRECT</literal> if no proxy should be used. No output "
+"indicates that the generic proxy settings should be used. Note that auto-"
+"detection will not be used for a host if a host-specific proxy configuration "
+"is already set via <literal>Acquire::http::Proxy::<replaceable>HOST</"
+"replaceable></literal>. See the &squid-deb-proxy-client; package for an "
+"example implementation that uses avahi. This option takes precedence over "
+"the legacy option name <literal>ProxyAutoDetect</literal>."
+msgstr ""
+"<literal>Acquire::http::Proxy-Auto-Detect</literal> kann benutzt werden, um "
+"einen externen Befehl zum Auffinden des HTTP-Proxys anzugeben, der benutzt "
+"werden soll. Der erste und einzige Parameter ist ein URI, der den Rechner "
+"bezeichnet, der kontaktiert werden soll, um eine rechnerspezifische "
+"Konfiguration zu ermöglichen. APT erwartet den Befehl als Ausgabe auf der "
+"Standardausgabe als einzelne Zeile im Stil <literal>http://proxy:port/</"
+"literal> oder das Wort <literal>DIRECT</literal>, falls kein Proxy benutzt "
+"werden soll. Fehlt die Ausgabe, zeigt dies an, dass die allgemeinen Proxy-"
+"Einstellungen benutzt werden sollen. Beachten Sie, dass die automatische "
+"Erkennung nicht für einen Rechner benutzt wird, falls bereits eine "
+"rechnerspezifische Proxy-Konfiguration per <literal>Acquire::http::Proxy::"
+"<replaceable>Rechner</replaceable></literal> gesetzt wurde. Eine "
+"Beispielimplementierung, die Avahi benutzt, finden Sie im Paket &squid-deb-"
+"proxy-client;. Diese Option hat Vorrang vor dem veralteten Optionsnamen "
+"<literal>ProxyAutoDetect</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Cache-control</literal>, <literal>Timeout</literal>, "
+"<literal>AllowRedirect</literal>, <literal>Dl-Limit</literal> and "
+"<literal>proxy</literal> options work for HTTPS URIs in the same way as for "
+"the <literal>http</literal> method, and default to the same values if they "
+"are not explicitly set. The <literal>Pipeline-Depth</literal> option is not "
+"yet supported."
+msgstr ""
+"Die Optionen <literal>Cache-control</literal>, <literal>Timeout</literal>, "
+"<literal>AllowRedirect</literal>, <literal>Dl-Limit</literal> und "
+"<literal>proxy</literal> funktionieren für HTTPS-URIs auf die gleiche Weise "
+"wie für die Methode <literal>http</literal> und haben die gleichen "
+"Vorgabewerte, falls sie nicht explizit gesetzt wurden. Die Option "
+"<literal>Pipeline-Depth</literal> wird noch nicht unterstützt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>CaInfo</literal> suboption specifies place of file that holds info "
+"about trusted certificates. <literal>&lt;host&gt;::CaInfo</literal> is the "
+"corresponding per-host option. <literal>Verify-Peer</literal> boolean "
+"suboption determines whether or not the server's host certificate should be "
+"verified against trusted certificates. <literal>&lt;host&gt;::Verify-Peer</"
+"literal> is the corresponding per-host option. <literal>Verify-Host</"
+"literal> boolean suboption determines whether or not the server's hostname "
+"should be verified. <literal>&lt;host&gt;::Verify-Host</literal> is the "
+"corresponding per-host option. <literal>SslCert</literal> determines what "
+"certificate to use for client authentication. <literal>&lt;host&gt;::"
+"SslCert</literal> is the corresponding per-host option. <literal>SslKey</"
+"literal> determines what private key to use for client authentication. "
+"<literal>&lt;host&gt;::SslKey</literal> is the corresponding per-host "
+"option. <literal>SslForceVersion</literal> overrides default SSL version to "
+"use. It can contain either of the strings '<literal>TLSv1</literal>' or "
+"'<literal>SSLv3</literal>'. <literal>&lt;host&gt;::SslForceVersion</"
+"literal> is the corresponding per-host option."
+msgstr ""
+"Die Unteroption <literal>CaInfo</literal> gibt den Ort an, an dem "
+"Informationen über vertrauenswürdige Zertifikate bereitgehalten werden. "
+"<literal>&lt;host&gt;::CaInfo</literal> ist die entsprechende Option pro "
+"Rechner. Die boolsche Unteroption <literal>Verify-Peer</literal> "
+"entscheidet, ob das Rechnerzertifikat des Servers mit den vertrauenswürdigen "
+"Zertifikaten geprüft werden soll oder nicht. <literal>&lt;host&gt;::Verify-"
+"Peer</literal> ist die entsprechende Option pro Rechner. Die boolsche "
+"Unteroption <literal>Verify-Host</literal> entscheidet, ob der Rechnername "
+"des Servers geprüft werden soll oder nicht. <literal>&lt;host&gt;::Verify-"
+"Host</literal> ist die entsprechende Option pro Rechner. <literal>SslCert</"
+"literal> entscheidet, welches Zertifikat zur Client-Authentifizierung "
+"benutzt wird. <literal>&lt;host&gt;::SslCert</literal> ist die entsprechende "
+"Option pro Rechner. <literal>SslKey</literal> entscheidet, welcher private "
+"Schlüssel für die Client-Authentifizierung benutzt werden. <literal>&lt;"
+"host&gt;::SslKey</literal> ist die entsprechende Option pro Rechner. "
+"<literal>SslForceVersion</literal> überschreibt die zu benutzende Standard-"
+"SSL-Version. Es kann die beiden Zeichenketten »<literal>TLSv1</literal>« "
+"oder »<literal>SSLv3</literal>« enthalten. Die entsprechende Option pro "
+"Rechner ist <literal>&lt;host&gt;::SslForceVersion</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs. "
+"It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</"
+"literal>. Per host proxies can also be specified by using the form "
+"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
+"used. To use an FTP proxy you will have to set the <literal>ftp::ProxyLogin</"
+"literal> script in the configuration file. This entry specifies the commands "
+"to send to tell the proxy server what to connect to. Please see "
+"&configureindex; for an example of how to do this. The substitution "
+"variables representing the corresponding URI component are <literal>"
+"$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, <literal>"
+"$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, <literal>$(SITE)</"
+"literal> and <literal>$(SITE_PORT)</literal>."
+msgstr ""
+"<literal>ftp::Proxy</literal> setzt den Standard-Proxy, der für FTP-URIs "
+"benutzt werden soll. Er wird standardmäßig in der Form <literal>ftp://"
+"[[Anwender][:Passwort]@]Rechner[:Port]/</literal> angegeben. Proxys pro "
+"Rechner können außerdem in der Form <literal>ftp::Proxy::&lt;host&gt;</"
+"literal> angegeben werden. Hierbei bedeutet das spezielle Schlüsselwort "
+"<literal>DIRECT</literal>, dass keine Proxys benutzt werden. Falls keine der "
+"obigen Einstellungen angegeben wurde, wird die Umgebungsvariable "
+"<envar>ftp_proxy</envar> benutzt. Um einen FTP-Proxy zu benutzen, müssen Sie "
+"in der Konfigurationsdatei das Skript <literal>ftp::ProxyLogin</literal> "
+"setzen. Dieser Eintrag gibt die Befehle an, die gesendet werden müssen, um "
+"dem Proxy-Server mitzuteilen, womit er sich verbinden soll. Ein Beispiel, "
+"wie das funktioniert, finden Sie unter &configureindex;. Die "
+"Platzhaltervariablen, die für den zugehörigen URI-Bestandteil stehen, sind "
+"<literal>$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, <literal>"
+"$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, <literal>$(SITE)</"
+"literal> und <literal>$(SITE_PORT)</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Several settings are provided to control passive mode. Generally it is safe "
+"to leave passive mode on; it works in nearly every environment. However, "
+"some situations require that passive mode be disabled and port mode FTP used "
+"instead. This can be done globally or for connections that go through a "
+"proxy or for a specific host (see the sample config file for examples)."
+msgstr ""
+"Mehrere Einstellungen werden zum Steuern des passiven Modus bereitgestellt. "
+"Generell ist es sicher, den passiven Modus eingeschaltet zu lassen, er "
+"funktioniert in nahezu jeder Umgebung. Jedoch erfordern einige Situationen, "
+"dass der passive Modus ausgeschaltet und stattdessen Port-Modus-FTP benutzt "
+"wird. Dies kann global gemacht werden oder für Verbindungen, die durch einen "
+"Proxy oder über einen bestimmten Rechner gehen (Beispiele finden Sie in der "
+"Musterkonfigurationsdatei)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
+"envar> environment variable to an HTTP URL - see the discussion of the http "
+"method above for syntax. You cannot set this in the configuration file and "
+"it is not recommended to use FTP over HTTP due to its low efficiency."
+msgstr ""
+"Es ist möglich, FTP über HTTP zu leiten, indem die Umgebungsvariable "
+"<envar>ftp_proxy</envar> auf eine HTTP-Url gesetzt wird – lesen Sie die "
+"Besprechung der HTTP-Methode oberhalb bezüglich der Syntax. Sie können dies "
+"nicht in der Konfigurationsdatei setzen und es wird wegen der geringen "
+"Effizienz nicht empfohlen FTP über HTTP zu benutzen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
+"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
+"false, which means these commands are only used if the control connection is "
+"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
+"that most FTP servers do not support RFC2428."
+msgstr ""
+"Die Einstellung <literal>ForceExtended</literal> steuert die Benutzung der "
+"RFC2428-Befehle <literal>EPSV</literal> und <literal>EPRT</literal>. Die "
+"Vorgabe ist false, was bedeutet, dass diese Befehle nur benutzt werden, wenn "
+"die Steuerverbindung IPv6 ist. Dies auf true zu stellen erzwingt die "
+"Benutzung selbst auf IPv4-Verbindungen. Beachten Sie, dass die wenigsten FTP-"
+"Server RFC2428 unterstützen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "/cdrom/::Mount \"foo\";"
+msgstr "/cdrom/::Mount \"foo\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"For URIs using the <literal>cdrom</literal> method, the only configurable "
+"option is the mount point, <literal>cdrom::Mount</literal>, which must be "
+"the mount point for the CD-ROM (or DVD, or whatever) drive as specified in "
+"<filename>/etc/fstab</filename>. It is possible to provide alternate mount "
+"and unmount commands if your mount point cannot be listed in the fstab. The "
+"syntax is to put <placeholder type=\"literallayout\" id=\"0\"/> within the "
+"<literal>cdrom</literal> block. It is important to have the trailing slash. "
+"Unmount commands can be specified using UMount."
+msgstr ""
+"Für URIs, die die Methode <literal>cdrom</literal> verwenden, ist die "
+"einzige Option der Einhängepunkt, <literal>cdrom::Mount</literal>, der der "
+"Einhängepunkt des CD-ROM-Laufwerks sein muss (oder der DVD oder was auch "
+"immer), wie er in <filename>/etc/fstab</filename> angegeben wurde. Es ist "
+"möglich, alternative Ein- und Aushängebefehle anzugeben, falls Ihr "
+"Einhängepunkt nicht in der fstab aufgeführt werden kann. Die Syntax besteht "
+"darin, <placeholder type=\"literallayout\" id=\"0\"/> in den <literal>cdrom</"
+"literal>-Block einzufügen. Der abschließende Schrägstrich ist wichtig. "
+"Aushängebefehle können per UMount angegeben werden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"For GPGV URIs the only configurable option is <literal>gpgv::Options</"
+"literal>, which passes additional parameters to gpgv."
+msgstr ""
+"Die einzige Konfigurationsoption für GPGV-URIs ist <literal>gpgv::Options</"
+"literal>, um zusätzliche Parameter an Gpgv weiterzuleiten."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";"
+msgstr "Acquire::CompressionTypes::<replaceable>Dateierweiterung</replaceable> \"<replaceable>Methodenname</replaceable>\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"List of compression types which are understood by the acquire methods. "
+"Files like <filename>Packages</filename> can be available in various "
+"compression formats. By default the acquire methods can decompress and "
+"recompress many common formats like <command>xz</command> and <command>gzip</"
+"command>; with this scope the supported formats can be queried, modified as "
+"well as support for more formats added (see also <option>APT::Compressor</"
+"option>). The syntax for this is: <placeholder type=\"synopsis\" id=\"0\"/>"
+msgstr ""
+"Liste der Kompressionstypen, die von den »Acquire«-Methoden verstanden "
+"werden. Dateien wie <filename>Packages</filename> können in verschiedenen "
+"Kompressionsformaten verfügbar sein. Standardmäßig können die »Acquire«-"
+"Methoden viele gebräuchliche Formate wie <command>xz</command>- und "
+"<command>gzip</command>-komprimierte Dateien dekomprimieren und erneut "
+"komprimieren. In diesem Bereich können die unterstützten Formate abgefragt, "
+"verändert sowie Unterstützung für weitere Formate hinzugefügt werden (siehe "
+"auch <option>APT::Compressor</option>). Die Syntax dafür lautet: "
+"<placeholder type=\"synopsis\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order:: \"gz\";"
+msgstr "Acquire::CompressionTypes::Order:: \"gz\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order { \"xz\"; \"gz\"; };"
+msgstr "Acquire::CompressionTypes::Order { \"xz\"; \"gz\"; };"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Also, the <literal>Order</literal> subgroup can be used to define in which "
+"order the acquire system will try to download the compressed files. The "
+"acquire system will try the first and proceed with the next compression type "
+"in this list on error, so to prefer one over the other type simply add the "
+"preferred type first - types not already added will be implicitly appended "
+"to the end of the list, so e.g. <placeholder type=\"synopsis\" id=\"0\"/> "
+"can be used to prefer <command>gzip</command> compressed files over all "
+"other compression formats. If <command>xz</command> should be preferred "
+"over <command>gzip</command> and <command>bzip2</command> the configure "
+"setting should look like this: <placeholder type=\"synopsis\" id=\"1\"/> It "
+"is not needed to add <literal>bz2</literal> to the list explicitly as it "
+"will be added automatically."
+msgstr ""
+"Außerdem kann die Untergruppe <literal>Order</literal> benutzt werden, um zu "
+"definieren, in welcher Reihenfolge das »Acquire«-System die komprimierten "
+"Dateien herunterzuladen versucht. Das »Acquire«-System wird die erste "
+"ausprobieren und bei einem Fehler mit dem nächsten Kompressionstyp in dieser "
+"Liste fortfahren. Um daher einen Typ einem anderen vorzuziehen, fügen Sie "
+"einfach den bevorzugten Typ an erster Stelle in die Liste ein - Typen, die "
+"noch nicht hinzugefügt wurden, werden vorbehaltlos an das Ende der Liste "
+"angehängt, so kann z.B. <placeholder type=\"synopsis\" id=\"0\"/> benutzt "
+"werden, um <command>gzip</command>-komprimierten Dateien den Vorzug "
+"gegenüber allen anderen Formaten zu geben. Falls <command>xz</command> "
+"gegenüber <command>gzip</command> und <command>bzip2</command> den Vorzug "
+"erhalten soll, sollte die Konfigurationseinstellung so aussehen: "
+"<placeholder type=\"synopsis\" id=\"1\"/>. Es ist nicht nötig, <literal>bz2</"
+"literal> explizit zur Liste hinzuzufügen, da es automatisch hinzufügt wird."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Dir::Bin::bzip2 \"/bin/bzip2\";"
+msgstr "Dir::Bin::bzip2 \"/bin/bzip2\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that the <literal>Dir::Bin::<replaceable>Methodname</replaceable></"
+"literal> will be checked at run time. If this option has been set and "
+"support for this format isn't directly built into apt, the method will only "
+"be used if this file exists; e.g. for the <literal>bzip2</literal> method "
+"(the inbuilt) setting is: <placeholder type=\"literallayout\" id=\"0\"/> "
+"Note also that list entries specified on the command line will be added at "
+"the end of the list specified in the configuration files, but before the "
+"default entries. To prefer a type in this case over the ones specified in "
+"the configuration files you can set the option direct - not in list style. "
+"This will not override the defined list; it will only prefix the list with "
+"this type."
+msgstr ""
+"Beachten Sie, dass <literal>Dir::Bin::<replaceable>Methodenname</"
+"replaceable></literal> zur Laufzeit geprüft wird. Falls diese Option gesetzt "
+"ist und die Unterstützung für dieses Format nicht direkt in APT eingebaut "
+"wurde, wird die Methode nur benutzt, wenn die Datei existiert, z.B. ist die "
+"integrierte Einstellung für die <literal>bzip2</literal>-Methode: "
+"<placeholder type=\"literallayout\" id=\"0\"/>. Beachten Sie auch, dass auf "
+"der Befehlszeile eingegebene Einträge an das Ende der Liste angehängt "
+"werden, die in den Konfigurationsdateien angegeben wurde, aber vor den "
+"Standardeinträgen. Um einen Typ in diesem Fall gegenüber einem, der über die "
+"Konfigurationsdatei angegebenen wurde, zu bevorzugen, können Sie diese "
+"Option direkt setzen – nicht im Listenstil. Dies wird die definierte Liste "
+"nicht außer Kraft setzen, es wird diesen Typ nur vor die Liste setzen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The special type <literal>uncompressed</literal> can be used to give "
+"uncompressed files a preference, but note that most archives don't provide "
+"uncompressed files so this is mostly only useable for local mirrors."
+msgstr ""
+"Der besondere Typ <literal>uncompressed</literal> kann benutzt werden, um "
+"unkomprimierten Dateien einen Vorrang zu geben, beachten Sie jedoch, dass "
+"die meisten Archive keine unkomprimierten Dateien bereitstellen, so dass "
+"dies meist nur für lokale Spiegel benutzt werden kann."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"When downloading <literal>gzip</literal> compressed indexes (Packages, "
+"Sources, or Translations), keep them gzip compressed locally instead of "
+"unpacking them. This saves quite a lot of disk space at the expense of more "
+"CPU requirements when building the local package caches. False by default."
+msgstr ""
+"Wenn <literal>gzip</literal>-komprimierte Indexe heruntergeladen werden "
+"(Packages, Sources, oder Translations), speichere sie lokal mit gzip-"
+"Komprimierung. Dies spart eine Menge Festplattenplatz, aber benötigt mehr "
+"CPU-Ressourcen bei der Erstellung des lokalen Paket-Caches. Vorgabe ist "
+"False."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Languages subsection controls which <filename>Translation</filename> "
+"files are downloaded and in which order APT tries to display the description-"
+"translations. APT will try to display the first available description in the "
+"language which is listed first. Languages can be defined with their short or "
+"long language codes. Note that not all archives provide "
+"<filename>Translation</filename> files for every language - the long "
+"language codes are especially rare."
+msgstr ""
+"Der Unterabschnitt Languages steuert, welche <filename>Translation</"
+"filename>-Dateien heruntergeladen werden und in welcher Reihenfolge APT "
+"versucht, die Beschreibungsübersetzungen anzuzeigen. APT wird versuchen, die "
+"erste verfügbare Beschreibung für die zuerst aufgelistete Sprache "
+"anzuzeigen. Sprachen können durch ihre kurzen oder langen Sprachcodes "
+"definiert sein. Beachten Sie, dass nicht alle Archive <filename>Translation</"
+"filename>-Dateien für jede Sprache bereitstellen – insbesondere sind die "
+"langen Sprachcodes selten."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };"
+msgstr "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The default list includes \"environment\" and \"en\". "
+"\"<literal>environment</literal>\" has a special meaning here: it will be "
+"replaced at runtime with the language codes extracted from the "
+"<literal>LC_MESSAGES</literal> environment variable. It will also ensure "
+"that these codes are not included twice in the list. If "
+"<literal>LC_MESSAGES</literal> is set to \"C\" only the "
+"<filename>Translation-en</filename> file (if available) will be used. To "
+"force APT to use no Translation file use the setting <literal>Acquire::"
+"Languages=none</literal>. \"<literal>none</literal>\" is another special "
+"meaning code which will stop the search for a suitable "
+"<filename>Translation</filename> file. This tells APT to download these "
+"translations too, without actually using them unless the environment "
+"specifies the languages. So the following example configuration will result "
+"in the order \"en, de\" in an English locale or \"de, en\" in a German one. "
+"Note that \"fr\" is downloaded, but not used unless APT is used in a French "
+"locale (where the order would be \"fr, de, en\"). <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Die Standardliste beinhaltet »environment« und »en«. »<literal>environment</"
+"literal>« hat hier eine besondere Bedeutung: Es wird zur Laufzeit durch die "
+"Sprachcodes ersetzt, die aus der Umgebungsvariable <literal>LC_MESSAGES</"
+"literal> extrahiert wurden. Es wird außerdem sicherstellen, dass diese Codes "
+"nicht zweimal in der Liste enthalten sind. Falls <literal>LC_MESSAGES</"
+"literal> auf »C« gesetzt ist, wird nur die Datei <filename>Translation-en</"
+"filename> (falls verfügbar) benutzt. Um APT zu zwingen, keine "
+"Ãœbersetzungsdatei zu verwenden, benutzen Sie die Einstellung "
+"<literal>Acquire::Languages=none</literal>. »<literal>none</literal>« ist "
+"ein weiterer Code mit besonderer Bedeutung, der die Suche nach einer "
+"passenden <filename>Translation</filename>-Datei stoppen wird. Dies weist "
+"APT an, diese Übersetzungen auch herunterzuladen, ohne sie tatsächlich zu "
+"verwenden, es sei denn, die Umgebungsvariable gibt diese Sprachen an. Daher "
+"wird die folgende Beispielkonfiguration in einer englischen Lokalisierung zu "
+"der Reihenfolge »en,de« und in einer deutschen Lokalisierung zu »de,en« "
+"führen. Beachten Sie, dass »fr« heruntergeladen, aber nicht benutzt wird, "
+"falls APT nicht in einer französischen Lokalisierung benutzt wird (wobei die "
+"Reihenfolge »fr, de, en« wäre). <placeholder type=\"programlisting\" id="
+"\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Note: To prevent problems resulting from APT being executed in different "
+"environments (e.g. by different users or by other programs) all Translation "
+"files which are found in <filename>/var/lib/apt/lists/</filename> will be "
+"added to the end of the list (after an implicit \"<literal>none</literal>\")."
+msgstr ""
+"Hinweis: Um Problemen vorzubeugen, die daher kommen, dass APT in "
+"unterschiedlichen Umgebungen ausgeführt wird (z.B. durch verschiedene "
+"Benutzer oder durch andere Programme) werden alle Ãœbersetzungsdateien, die "
+"in <filename>/var/lib/apt/lists/</filename> gefunden werden, an das Ende der "
+"Liste hinzugefügt (nach einem impliziten »<literal>none</literal>«)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "When downloading, force to use only the IPv4 protocol."
+msgstr "Beim Herunterladen wird die Verwendung des IPv4-Protokolls erzwungen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "When downloading, force to use only the IPv6 protocol."
+msgstr "Beim Herunterladen wird die Verwendung des IPv6-Protokolls erzwungen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The maximum file size of Release/Release.gpg/InRelease files. The default "
+"is 10MB."
+msgstr ""
+"die maximale Dateigröße von Release-/Release.gpg-/InRelease-Dateien. Die "
+"Voreinstellung ist 10 MB."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This option controls if apt will use the DNS SRV server record as specified "
+"in RFC 2782 to select an alternative server to connect to. The default is "
+"\"true\"."
+msgstr ""
+"Diese Option steuert, ob APT den in RFC 2782 spezifizierten DNS-SRV-"
+"Serverdatensatz benutzt, um sich mit einen alternativen Server zu verbinden. "
+"Die Voreinstellung ist »true«."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow update operations to load data files from repositories without "
+"sufficient security information. The default value is \"<literal>false</"
+"literal>\". Concept, implications as well as alternatives are detailed in "
+"&apt-secure;."
+msgstr ""
+"Ermöglicht Aktualisierungsaktionen, um Datendateien ohne ausreichende "
+"Sicherheitsinformationen aus Depots zu laden. Die Voreinstellung ist "
+"»<literal>false</literal>«. Konzept, Auswirkungen sowie Alternativen werden "
+"ausführlich in &apt-secure; erklärt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow update operations to load data files from repositories which provide "
+"security information, but these are deemed no longer cryptographically "
+"strong enough. The default value is \"<literal>false</literal>\". Concept, "
+"implications as well as alternatives are detailed in &apt-secure;."
+msgstr ""
+"Ermöglicht Aktualisierungsaktionen, um Datendateien aus Depots zu laden, die "
+"Sicherheitsinformationen bereitstellen, die jedoch nicht mehr als "
+"kryptografisch stark genug erachtet werden. Die Voreinstellung ist "
+"»<literal>false</literal>«. Konzept, Auswirkungen sowie Alternativen werden "
+"ausführlich in &apt-secure; erklärt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow that a repository that was previously gpg signed to become unsigned "
+"during an update operation. When there is no valid signature for a "
+"previously trusted repository apt will refuse the update. This option can be "
+"used to override this protection. You almost certainly never want to enable "
+"this. The default is <literal>false</literal>. Concept, implications as "
+"well as alternatives are detailed in &apt-secure;."
+msgstr ""
+"Ermöglicht, dass ein Depot, das vorher per GPG signiert war, während einer "
+"Transaktion seine Signatur verliert. Wenn ein vorher vertrauenswürdiges "
+"Depot keine gültige Signatur mehr hat, wird APT die Aktualisierung "
+"verweigern. Diese Option kann verwendet werden, um diesen Schutz außer Kraft "
+"zu setzen. Sie wollen dies wahrscheinlich nahezu nie aktivieren. Die "
+"Voreinstellung ist »<literal>false</literal>«. Konzept, Auswirkungen sowie "
+"Alternativen werden ausführlich in &apt-secure; erklärt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.conf.5.xml
+msgid "scope"
+msgstr "Gültigkeitsbereich"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Acquiring changelogs can only be done if an URI is known from where to get "
+"them. Preferable the Release file indicates this in a 'Changelogs' field. "
+"If this isn't available the Label/Origin field of the Release file is used "
+"to check if a <literal>Acquire::Changelogs::URI::Label::<replaceable>LABEL</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Origin::"
+"<replaceable>ORIGIN</replaceable></literal> option exists and if so this "
+"value is taken. The value in the Release file can be overridden with "
+"<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
+"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a "
+"normal URI to a text file, except that package specific data is replaced "
+"with the placeholder <literal>@CHANGEPATH@</literal>. The value for it is: "
+"1. if the package is from a component (e.g. <literal>main</literal>) this "
+"is the first part otherwise it is omitted, 2. the first letter of source "
+"package name, except if the source package name starts with '<literal>lib</"
+"literal>' in which case it will be the first four letters. 3. The complete "
+"source package name. 4. the complete name again and 5. the source version. "
+"The first (if present), second, third and fourth part are separated by a "
+"slash ('<literal>/</literal>') and between the fourth and fifth part is an "
+"underscore ('<literal>_</literal>'). The special value '<literal>no</"
+"literal>' is available for this option indicating that this source can't be "
+"used to acquire changelog files from. Another source will be tried if "
+"available in this case."
+msgstr ""
+"Changelogs können nur beschafft werden, falls ein URI bekannt ist, von dem "
+"sie geholt werden können. Vorzugsweise gibt die Release-Datei ihn in einem "
+"»Changelogs«-Feld an. Falls dies nicht verfügbar ist, werden die Felder "
+"»Label« und »Origin« der Release-Datei benutzt, um zu prüfen, ob eine "
+"<literal>Acquire::Changelogs::URI::Label::<replaceable>BESCHRIFTUNG</"
+"replaceable></literal>- oder <literal>Acquire::Changelogs::URI::Origin::"
+"<replaceable>URSPRUNG</replaceable></literal>-Option existiert und, falls "
+"dies der Fall ist, wird dieser Wert genommen. Der Wert in der Release-Datei "
+"kann mit <literal>Acquire::Changelogs::URI::Override::Label::"
+"<replaceable>BESCHRIFTUNG</replaceable></literal> oder <literal>Acquire::"
+"Changelogs::URI::Override::Origin::<replaceable>URSPRUNG</replaceable></"
+"literal> außer Kraft gesetzt werden. Der Wert sollte ein normaler URI auf "
+"eine Textdatei sein, außer dass paketspezifische Daten durch den Platzhalter "
+"<literal>@CHANGEPATH@</literal> ersetzt werden. Der Wert dafür ist: 1. Falls "
+"das Paket von einer Komponente stammt (z.B. <literal>main</literal>), ist "
+"dies der erste Teil, ansonsten wird er weggelassen. 2. der erste Buchstabe "
+"des Quellpaketnamens, es sei denn, der Paketname beginnt mit »<literal>lib</"
+"literal>«. In diesem Fall werden es die vier ersten Buchstaben sein. 3. der "
+"komplette Quellpaketname 4. wieder der vollständige Name und 5. die "
+"Quellversion. Der erste (falls vorhanden), zweite, dritte und vierte Teil "
+"werden durch einen Schrägstrich (»<literal>/</literal>«) voneinander "
+"getrennt und zwischen dem vierten und fünften ist ein Unterstrich "
+"(»<literal>_</literal>«). Der Spezialwert »<literal>no</literal>«, der für "
+"diese Option verfügbar ist, gibt an, dass diese Quelle nicht benutzt werden "
+"kann, um von dort Changelog-Dateien zu beschaffen. In diesem Fall wird, "
+"falls verfügbar, eine andere Quelle ausprobiert."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Binary specific configuration"
+msgstr "Programmspezifische Konfiguration"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Especially with the introduction of the <command>apt</command> binary it can "
+"be useful to set certain options only for a specific binary as even options "
+"which look like they would effect only a certain binary like <option>APT::"
+"Get::Show-Versions</option> effect <command>apt-get</command> as well as "
+"<command>apt</command>."
+msgstr ""
+"Insbesondere kann es mit der Einführung des <command>apt</command>-Programms "
+"nützlich sein, bestimmte Optionen nur für ein besonderes Programm zu setzen, "
+"da sogar Optionen, die aussehen, als ob sie nur ein bestimmtes Programm "
+"beträfen, wie <option>APT::Get::Show-Versions</option> sowohl <command>apt-"
+"get</command> als auch <command>apt</command> beeinflussen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Setting an option for a specific binary only can be achieved by setting the "
+"option inside the <option>Binary::<replaceable>specific-binary</"
+"replaceable></option> scope. Setting the option <option>APT::Get::Show-"
+"Versions</option> for the <command>apt</command> only can e.g. by done by "
+"setting <option>Binary::apt::APT::Get::Show-Versions</option> instead."
+msgstr ""
+"Eine Option alleine für ein bestimmtes Programm zu setzen kann erreicht "
+"werden, indem die Option innerhalb des <option>Binary::"
+"<replaceable>programmspezifischen</replaceable></option> Gültigkeitsbereichs "
+"gesetzt wird. Das Setzen der Option <option>APT::Get::Show-Versions</option> "
+"für <command>apt</command> kann z.B. stattdessen durch Setzen von "
+"<option>Binary::apt::APT::Get::Show-Versions</option> erledigt werden."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that as seen in the DESCRIPTION section further above you can't set "
+"binary-specific options on the commandline itself nor in configuration files "
+"loaded via the commandline."
+msgstr ""
+"Beachten Sie, dass Sie, wie im Abschnitt BESCHREIBUNG weiter oben gesehen, "
+"die programmspezifischen Optionen weder auf der Befehlszeile selbst, noch in "
+"Konfigurationsdateien, die über die Befehlszeile geladen werden, setzen "
+"können."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Directories"
+msgstr "Verzeichnisse"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Dir::State</literal> section has directories that pertain to "
+"local state information. <literal>lists</literal> is the directory to place "
+"downloaded package lists in and <literal>status</literal> is the name of the "
+"&dpkg; status file. <literal>preferences</literal> is the name of the APT "
+"<filename>preferences</filename> file. <literal>Dir::State</literal> "
+"contains the default directory to prefix on all sub-items if they do not "
+"start with <filename>/</filename> or <filename>./</filename>."
+msgstr ""
+"Der <literal>Dir::State</literal>-Abschnitt hat Verzeichnisse, die zu "
+"lokalen Statusinformationen gehören. <literal>lists</literal> ist das "
+"Verzeichnis, in das heruntergeladene Paketlisten platziert werden und "
+"<literal>status</literal> ist der Name der &dpkg; Statusdatei. "
+"<literal>preferences</literal> ist der Name der APT-<filename>preferences</"
+"filename>-Datei. <literal>Dir::State</literal> enthält das "
+"Standardverzeichnis, das allen Unterelementen vorangestellt wird, falls sie "
+"nicht mit <filename>/</filename> oder <filename>./</filename> beginnen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Dir::Cache</literal> contains locations pertaining to local cache "
+"information, such as the two package caches <literal>srcpkgcache</literal> "
+"and <literal>pkgcache</literal> as well as the location to place downloaded "
+"archives, <literal>Dir::Cache::archives</literal>. Generation of caches can "
+"be turned off by setting <literal>pkgcache</literal> or "
+"<literal>srcpkgcache</literal> to <literal>\"\"</literal>. This will slow "
+"down startup but save disk space. It is probably preferable to turn off the "
+"pkgcache rather than the srcpkgcache. Like <literal>Dir::State</literal> "
+"the default directory is contained in <literal>Dir::Cache</literal>"
+msgstr ""
+"<literal>Dir::Cache</literal> enthält Orte, die zu lokalen "
+"Zwischenspeicherinformationen gehören, so wie die beiden "
+"Paketzwischenspeicher <literal>srcpkgcache</literal> und <literal>pkgcache</"
+"literal>, sowie den Ort, an den heruntergeladene Archive platziert werden, "
+"<literal>Dir::Cache::archives</literal>. Die Generierung von "
+"Zwischenspeichern kann ausgeschaltet werden, indem <literal>pkgcache</"
+"literal> oder <literal>srcpkgcache</literal> auf <literal>\"\"</literal> "
+"wird. Dies wird den Start verlangsamen, aber Plattenplatz sparen. Es ist "
+"vermutlich vorzuziehen, statt des »srcpkgcache«s den »pkgcache« "
+"auszuschalten. Wie <literal>Dir::State</literal> ist das Standardverzeichnis "
+"in <literal>Dir::Cache</literal> enthalten."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Dir::Etc</literal> contains the location of configuration files, "
+"<literal>sourcelist</literal> gives the location of the sourcelist and "
+"<literal>main</literal> is the default configuration file (setting has no "
+"effect, unless it is done from the config file specified by "
+"<envar>APT_CONFIG</envar>)."
+msgstr ""
+"<literal>Dir::Etc</literal> enthält den Ort der Konfigurationsdateien, "
+"<literal>sourcelist</literal> gibt den Ort der Quellliste und <literal>main</"
+"literal> ist die Standardkonfigurationsdatei (Einstellung hat keine "
+"Auswirkung, außer wenn sie aus der in <envar>APT_CONFIG</envar> angegebenen "
+"Konfigurationsdatei erfolgt)."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Dir::Parts</literal> setting reads in all the config fragments "
+"in lexical order from the directory specified. After this is done then the "
+"main config file is loaded."
+msgstr ""
+"Die <literal>Dir::Parts</literal>-Einstellung liest in allen "
+"Konfigurationsteilen in lexikalischer Reihenfolge vom angegebenen "
+"Verzeichnis. Nachdem dies geschehen ist, wird die Hauptkonfigurationsdatei "
+"geladen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
+"Bin::Methods</literal> specifies the location of the method handlers and "
+"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
+"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
+"literal> <literal>dpkg-buildpackage</literal> and <literal>apt-cache</"
+"literal> specify the location of the respective programs."
+msgstr ""
+"Auf binäre Programme wird von <literal>Dir::Bin</literal> verwiesen. "
+"<literal>Dir::Bin::Methods</literal> gibt den Ort des "
+"Methodensteuerungsprogramms an und <literal>gzip</literal>, <literal>bzip2</"
+"literal>, <literal>lzma</literal>, <literal>dpkg</literal>, <literal>apt-"
+"get</literal>, <literal>dpkg-source</literal>, <literal>dpkg-buildpackage</"
+"literal> und <literal>apt-cache</literal> geben den Ort des jeweiligen "
+"Programms an."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The configuration item <literal>RootDir</literal> has a special meaning. If "
+"set, all paths will be relative to <literal>RootDir</literal>, "
+"<emphasis>even paths that are specified absolutely</emphasis>. So, for "
+"instance, if <literal>RootDir</literal> is set to <filename>/tmp/staging</"
+"filename> and <literal>Dir::State::status</literal> is set to <filename>/var/"
+"lib/dpkg/status</filename>, then the status file will be looked up in "
+"<filename>/tmp/staging/var/lib/dpkg/status</filename>. If you want to "
+"prefix only relative paths, set <literal>Dir</literal> instead."
+msgstr ""
+"Das Konfigurationselement <literal>RootDir</literal> hat eine besondere "
+"Bedeutung. Falls es gesetzt ist, sind alle Pfad relativ zu <literal>RootDir</"
+"literal>, <emphasis>sogar Pfade, die absolut angegeben wurden</emphasis>. So "
+"wird zum Beispiel, wenn <literal>RootDir</literal> auf <filename>/tmp/"
+"staging</filename> und <literal>Dir::State::status</literal> auf <filename>/"
+"var/lib/dpkg/status</filename> gesetzt ist, nach der Statusdatei in "
+"<filename>/tmp/staging/var/lib/dpkg/status</filename> nachgesehen. Falls Sie "
+"etwas nur relativen Pfaden voranstellen möchten, setzen Sie stattdessen "
+"<literal>Dir</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Ignore-Files-Silently</literal> list can be used to specify "
+"which files APT should silently ignore while parsing the files in the "
+"fragment directories. Per default a file which end with <literal>.disabled</"
+"literal>, <literal>~</literal>, <literal>.bak</literal> or <literal>.dpkg-[a-"
+"z]+</literal> is silently ignored. As seen in the last default value these "
+"patterns can use regular expression syntax."
+msgstr ""
+"Die Liste <literal>Ignore-Files-Silently</literal> kann benutzt werden, um "
+"anzugeben welche Dateien APT beim Auswerten der Dateien im Verzeichnisteil "
+"stillschweigend ignorieren sollte. Standardmäßig werden Dateien, die auf "
+"<literal>.disabled</literal>, <literal>~</literal>, <literal>.bak</literal> "
+"oder <literal>.dpkg-[a-z]+</literal> endenn stillschweigend ignoriert. Wie "
+"beim letzten Vorgabewert gesehen, kann die Syntax für reguläre Ausdrücke für "
+"diese Muster verwandt werden."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "APT in DSelect"
+msgstr "APT in DSelect"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"When APT is used as a &dselect; method several configuration directives "
+"control the default behavior. These are in the <literal>DSelect</literal> "
+"section."
+msgstr ""
+"Wenn APT als eine &dselect;-Methode benutzt wird, steuern mehrere "
+"Konfigurationsdirektiven das Standardverhalten. Diese stehen im Abschnitt "
+"<literal>DSelect</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Cache Clean mode; this value may be one of <literal>always</literal>, "
+"<literal>prompt</literal>, <literal>auto</literal>, <literal>pre-auto</"
+"literal> and <literal>never</literal>. <literal>always</literal> and "
+"<literal>prompt</literal> will remove all packages from the cache after "
+"upgrading, <literal>prompt</literal> (the default) does so conditionally. "
+"<literal>auto</literal> removes only those packages which are no longer "
+"downloadable (replaced with a new version for instance). <literal>pre-auto</"
+"literal> performs this action before downloading new packages."
+msgstr ""
+"Zwischenspeicherbereinigungsmodus; Dieser Wert kann entweder "
+"»<literal>always</literal>«, »<literal>prompt</literal>«, »<literal>auto</"
+"literal>«, »<literal>pre-auto</literal>« oder »<literal>never</literal>« "
+"sein. »<literal>always</literal>« und »<literal>prompt</literal>« werden, "
+"nachdem das Upgrade durchgeführt wurde, alle Pakete aus dem Zwischenspeicher "
+"entfernen, »<literal>prompt</literal>« (die Vorgabe) tut dies bedingt. "
+"»<literal>auto</literal>« entfernt nur jene Pakete, die nicht länger "
+"heruntergeladen werden können (zum Beispiel, weil sie durch eine neue "
+"Version ersetzt wurden). »<literal>pre-auto</literal>« führt diese Aktion "
+"vor dem Herunterladen neuer Pakete durch."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the install phase."
+msgstr ""
+"Die Inhalte dieser Variablen werden als Befehlszeilenoptionen an &apt-get; "
+"übermittelt, wenn es für die Installationsphase durchlaufen wird."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the update phase."
+msgstr ""
+"Die Inhalte dieser Variable werden als Befehlszeilenoptionen an &apt-get; "
+"übermittelt, wenn es für die Aktualisierungsphase durchlaufen wird."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"If true the [U]pdate operation in &dselect; will always prompt to continue. "
+"The default is to prompt only on error."
+msgstr ""
+"Falls true, wird die Aktualisierungsoption [U] in &dselect; immer "
+"nachfragen, um fortzufahren. Vorgabe ist es, nur bei Fehlern nachzufragen."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "How APT calls &dpkg;"
+msgstr "Wie APT &dpkg; aufruft"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Several configuration directives control how APT invokes &dpkg;. These are "
+"in the <literal>DPkg</literal> section."
+msgstr ""
+"Mehrere Konfigurationsdirektiven steuern, wie APT &dpkg; aufruft. Diese "
+"stehen im Abschnitt <literal>DPkg</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of options to pass to &dpkg;. The options must be specified "
+"using the list notation and each list item is passed as a single argument to "
+"&dpkg;."
+msgstr ""
+"Dies ist eine Liste von Optionen, die an &dpkg; übermittelt werden. Die "
+"Optionen müssen unter Benutzung der Listenschreibweise angegeben werden und "
+"jedes Listenelement wird als einzelnes Argument an &dpkg; übermittelt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of shell commands to run before/after invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort."
+msgstr ""
+"Dies ist eine Liste von Shell-Befehlen, die vor/nach dem Aufruf von &dpkg; "
+"ausgeführt werden. Wie <literal>options</literal> muss dies in "
+"Listenschreibweise angegeben werden. Die Befehle werden der Reihenfolge nach "
+"mit <filename>/bin/sh</filename> aufgerufen, sollte einer fehlschlagen, wird "
+"APT abgebrochen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of shell commands to run before invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort. APT will pass the filenames of all .deb files it is "
+"going to install to the commands, one per line on the requested file "
+"descriptor, defaulting to standard input."
+msgstr ""
+"Dies ist eine Liste von Shell-Befehlen, die vor dem Aufruf von &dpkg; "
+"ausgeführt werden. Wie <literal>options</literal> muss dies in "
+"Listenschreibweise angegeben werden. Die Befehle werden der Reihenfolge nach "
+"mit <filename>/bin/sh</filename> aufgerufen, sollte einer fehlschlagen, wird "
+"APT abgebrochen. APT wird den Befehlen die Dateinamen aller .deb-Dateien, "
+"die es installieren wird, einen pro Zeile, an den angeforderten "
+"standardmäßig auf die Standardeingabe verweisenden Dateideskriptor, "
+"übergeben."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Version 2 of this protocol sends more information through the requested file "
+"descriptor: a line with the text <literal>VERSION 2</literal>, the APT "
+"configuration space, and a list of package actions with filename and version "
+"information."
+msgstr ""
+"Version 2 dieses Protokolls sendet mehr Informationen durch den "
+"angeforderten Dateideskriptor: eine Zeile mit dem Text <literal>VERSION 2</"
+"literal>, den APT-Konfigurationsraum und eine Liste von Paketaktionen mit "
+"Dateinamen und Versionsinformationen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each configuration directive line has the form <literal>key=value</"
+"literal>. Special characters (equal signs, newlines, nonprintable "
+"characters, quotation marks, and percent signs in <literal>key</literal> and "
+"newlines, nonprintable characters, and percent signs in <literal>value</"
+"literal>) are %-encoded. Lists are represented by multiple <literal>key::"
+"=value</literal> lines with the same key. The configuration section ends "
+"with a blank line."
+msgstr ""
+"Jede Zeile der Konfigurationsrichtlinien hat die Form "
+"<literal>Schlüssel=Wert</literal>. Sonderzeichen (Gleichheitszeichen, "
+"Zeilenumbrüche, nicht druckbare Zeichen, Anführungszeichen und "
+"Prozentzeichen in <literal>Schlüssel</literal>) werden %-kodiert. Listen "
+"werden durch mehrere <literal>Schlüssel=Wert</literal>-Zeilen mit demselben "
+"Schlüssel dargestellt. Der Konfigurationsabschnitt endet mit einer leeren "
+"Zeile."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Package action lines consist of five fields in Version 2: package name "
+"(without architecture qualification even if foreign), old version, direction "
+"of version change (&lt; for upgrades, &gt; for downgrades, = for no change), "
+"new version, action. The version fields are \"-\" for no version at all (for "
+"example when installing a package for the first time; no version is treated "
+"as earlier than any real version, so that is an upgrade, indicated as "
+"<literal>- &lt; 1.23.4</literal>). The action field is \"**CONFIGURE**\" if "
+"the package is being configured, \"**REMOVE**\" if it is being removed, or "
+"the filename of a .deb file if it is being unpacked."
+msgstr ""
+"Paketaktionszeilen bestehen in Version 2 aus fünf Feldern: Paketname (ohne "
+"Architekturvoraussetzung, sogar wenn fremd), alte Version, Richtung der "
+"Versionsänderung (»&lt;« für Upgrades, »&gt;« für Downgrades, »=« für keine "
+"Änderung), neue Version, Aktion. Die Versionsfelder sind »-« für gar keine "
+"Version (zum Beispiel, wenn ein Paket zum ersten Mal installiert wird; keine "
+"Version wird als älter als jede echte Version angesehen, daher wird ein "
+"Upgrade als <literal>- &lt; 1.23.4</literal> angezeigt). Das Aktionsfeld ist "
+"»**CONFIGURE**«, falls das Paket konfiguriert wird, »**REMOVE**«, falls es "
+"entfernt wird oder der Dateiname einer .deb-Datei, falls es entpackt wird."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"In Version 3 after each version field follows the architecture of this "
+"version, which is \"-\" if there is no version, and a field showing the "
+"MultiArch type \"same\", \"foreign\", \"allowed\" or \"none\". Note that "
+"\"none\" is an incorrect typename which is just kept to remain compatible, "
+"it should be read as \"no\" and users are encouraged to support both."
+msgstr ""
+"In Version 3 folgt nach jedem Versionsfeld die Architektur dieser Version. "
+"Sie ist »-«, falls es dort keine Version gibt, und ein Feld, das die "
+"Multiarch-Typen »same«, »foreign«, »allowed« oder »none« anzeigt. Beachten "
+"Sie, dass »none« kein korrekter Typenname ist. Er wird nur beibehalten, um "
+"kompatibel zu bleiben. Er sollte als »no« gelesen werden und Anwender werden "
+"ermutigt, beides zu unterstützen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The version of the protocol to be used for the command "
+"<literal><replaceable>cmd</replaceable></literal> can be chosen by setting "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::Version</"
+"literal> accordingly, the default being version 1. If APT isn't supporting "
+"the requested version it will send the information in the highest version it "
+"has support for instead."
+msgstr ""
+"Die Protokollversion, die für den Befehl <literal><replaceable>Befehl</"
+"replaceable></literal> benutzt werden soll, kann durch entsprechendes Setzen "
+"von <literal>DPkg::Tools::options::<replaceable>Befehl</replaceable>::"
+"Version</literal> ausgewählt werden, Voreinstellung ist Version 1. Falls APT "
+"die angefragte Version nicht unterstützt, wird es stattdessen die "
+"Informationen in der höchsten Version senden, für die es Unterstützung "
+"bietet."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The file descriptor to be used to send the information can be requested with "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::InfoFD</"
+"literal> which defaults to <literal>0</literal> for standard input and is "
+"available since version 0.9.11. Support for the option can be detected by "
+"looking for the environment variable <envar>APT_HOOK_INFO_FD</envar> which "
+"contains the number of the used file descriptor as a confirmation."
+msgstr ""
+"Der Dateideskriptor, der zum Senden der Informationen benutzt wird, kann mit "
+"<literal>DPkg::Tools::options::<replaceable>Befehl</replaceable>::InfoFD</"
+"literal> abgefragt werden. Er ist standardmäßig <literal>0</literal> für die "
+"Standardeingabe und seit Version 0.9.11 verfügbar. Unterstützung für die "
+"Option können Sie finden, indem Sie in die Umgebungsvariable "
+"<envar>APT_HOOK_INFO_FD</envar> schauen. Sie enthält die Nummer des "
+"verwendeten Dateideskriptors als eine Bestätigung."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"APT chdirs to this directory before invoking &dpkg;, the default is "
+"<filename>/</filename>."
+msgstr ""
+"APT wechselt mit chdir in dieses Verzeichnis, bevor &dpkg; aufgerufen wird, "
+"die Vorgabe ist <filename>/</filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"These options are passed to &dpkg-buildpackage; when compiling packages; the "
+"default is to disable signing and produce all binaries."
+msgstr ""
+"Diese Optionen werden an &dpkg-buildpackage; beim Kompilieren von Paketen "
+"übermittelt. Standardmäßig wird das Signieren augeschaltet und alle "
+"Programme werden erstellt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"If this option is set APT will call <command>dpkg --configure --pending</"
+"command> to let &dpkg; handle all required configurations and triggers. This "
+"option is activated by default, but deactivating it could be useful if you "
+"want to run APT multiple times in a row - e.g. in an installer. In this "
+"scenario you could deactivate this option in all but the last run."
+msgstr ""
+"Wenn diese Option gesetzt ist, wird APT <command>dpkg --configure --pending</"
+"command> aufrufen, um &dpkg; alle benötigten Konfigurationen und Trigger "
+"handhaben zu lassen. Diese Option ist als Vorgabe aktiviert, sie zu "
+"Deaktivieren könnte jedoch nützlich sein, wenn Sie APT mehrmals "
+"hintereinander ausführen möchten – z.B. in einem Installationsprogramm. In "
+"diesem Szenario könnten Sie diese Option in allen außer der letzten "
+"Ausführung deaktivieren."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Periodic and Archives options"
+msgstr "Periodische- und Archivoptionen"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups "
+"of options configure behavior of apt periodic updates, which is done by the "
+"<literal>/usr/lib/apt/apt.systemd.daily</literal> script. See the top of "
+"this script for the brief documentation of these options."
+msgstr ""
+"<literal>APT::Periodic</literal>- und <literal>APT::Archives</literal>-"
+"Gruppen von Optionen konfigurieren das Verhalten periodischer APT-"
+"Aktualisierungen, die vom Skript <literal>/usr/lib/apt/apt.systemd.daily</"
+"literal> durchgeführt werden. Lesen Sie die Kopfzeilen dieses Skripts, um "
+"eine kurze Dokumentation dieser Optionen zu erhalten."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Debug options"
+msgstr "Fehlersuchoptionen"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Enabling options in the <literal>Debug::</literal> section will cause "
+"debugging information to be sent to the standard error stream of the program "
+"utilizing the <literal>apt</literal> libraries, or enable special program "
+"modes that are primarily useful for debugging the behavior of <literal>apt</"
+"literal>. Most of these options are not interesting to a normal user, but a "
+"few may be:"
+msgstr ""
+"Einschalten von Optionen im Abschnitt <literal>Debug::</literal> wird "
+"veranlassen, dass Fehlersuchinformationen an die Standardfehlerausgabe des "
+"Programms gesendet werden, das die <literal>apt</literal>-Bibliotheken "
+"benutzt oder besondere Programmmodi einschaltet, die in erster Linie für das "
+"Fehlersuchverhalten von <literal>apt</literal> nützlich sind. Die meisten "
+"dieser Optionen sind für den normalen Anwender uninteressant, aber ein paar "
+"könnten es sein:"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::pkgProblemResolver</literal> enables output about the "
+"decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</"
+"literal>."
+msgstr ""
+"<literal>Debug::pkgProblemResolver</literal> schaltet die Ausgabe über die "
+"von <literal>dist-upgrade, upgrade, install, remove, purge</literal> "
+"getroffenen Entscheidungen ein."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::NoLocking</literal> disables all file locking. This can be "
+"used to run some operations (for instance, <literal>apt-get -s install</"
+"literal>) as a non-root user."
+msgstr ""
+"<literal>Debug::NoLocking</literal> schaltet jegliches Sperren von Dateien "
+"aus. Dies kann benutzt werden, um einige Operationen (zum Beispiel "
+"<literal>apt-get -s install</literal>) als nicht root-Anwender auszuführen."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each "
+"time that <literal>apt</literal> invokes &dpkg;."
+msgstr ""
+"<literal>Debug::pkgDPkgPM</literal> gibt die aktuelle Befehlszeile jedesmal "
+"aus, wenn <literal>apt</literal> &dpkg; aufruft."
+
+#. TODO: provide a
+#. motivating example, except I haven't a clue why you'd want
+#. to do this.
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
+"in CD-ROM IDs."
+msgstr ""
+"<literal>Debug::IdentCdrom</literal> schaltet das Einbeziehen von statfs-"
+"Daten in CD-ROM-IDs aus."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid "A full list of debugging options to apt follows."
+msgstr "Eine vollständige Liste der Fehlersuchoptionen von APT folgt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information related to accessing <literal>cdrom://</literal> sources."
+msgstr ""
+"gibt Informationen aus, die sich auf Zugriffe von <literal>cdrom://</"
+"literal>-Quellen beziehen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using FTP."
+msgstr ""
+"gibt Informationen aus, die sich auf das Herunterladen von Paketen per FTP "
+"beziehen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using HTTP."
+msgstr ""
+"gibt Informationen aus, die sich auf das Herunterladen von Paketen per HTTP "
+"beziehen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using HTTPS."
+msgstr ""
+"gibt Informationen aus, die sich auf das Herunterladen von Paketen per HTTPS "
+"beziehen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information related to verifying cryptographic signatures using "
+"<literal>gpg</literal>."
+msgstr ""
+"gibt Informationen aus, die sich auf das Prüfen kryptografischer Signaturen "
+"mittels <literal>gpg</literal> beziehen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information about the process of accessing collections of packages "
+"stored on CD-ROMs."
+msgstr ""
+"gibt Informationen über den Zugriffsprozess auf Paketsammlungen aus, die auf "
+"CD-ROMs gespeichert sind."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Describes the process of resolving build-dependencies in &apt-get;."
+msgstr ""
+"beschreibt den Prozess der Auflösung von Bauabhängigkeiten in &apt-get;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output each cryptographic hash that is generated by the <literal>apt</"
+"literal> libraries."
+msgstr ""
+"gibt jeden kryptografischen Hash aus, der von den <literal>apt</literal>-"
+"Bibliotheken generiert wurde."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Do not include information from <literal>statfs</literal>, namely the number "
+"of used and free blocks on the CD-ROM filesystem, when generating an ID for "
+"a CD-ROM."
+msgstr ""
+"schließt keine Informationen von <literal>statfs</literal> ein, und zwar die "
+"Anzahl der benutzten und freien Blöcke auf dem CD-ROM-Dateisystem, wenn eine "
+"ID für eine CD-ROM generiert wird."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Disable all file locking. For instance, this will allow two instances of "
+"<quote><literal>apt-get update</literal></quote> to run at the same time."
+msgstr ""
+"schaltet jegliches Sperren von Dateien aus. Dies wird zum Beispiel erlauben, "
+"dass zwei Instanzen von <quote><literal>apt-get update</literal></quote> zur "
+"gleichen Zeit laufen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Log when items are added to or removed from the global download queue."
+msgstr ""
+"protokolliert, wenn Elemente aus der globalen Warteschlange zum "
+"Herunterladen hinzugefügt oder entfernt werden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output status messages and errors related to verifying checksums and "
+"cryptographic signatures of downloaded files."
+msgstr ""
+"gibt Statusmeldungen und Fehler aus, die sich auf das Prüfen von Prüfsummen "
+"und kryptografischen Signaturen von heruntergeladenen Dateien beziehen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information about downloading and applying package index list diffs, "
+"and errors relating to package index list diffs."
+msgstr ""
+"gibt Informationen über das Herunterladen und Anwenden von Paketindexlisten-"
+"Diffs und Fehler, die die Paketindexlisten-Diffs betreffen, aus."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information related to patching apt package lists when downloading "
+"index diffs instead of full indices."
+msgstr ""
+"gibt Informationen aus, die sich auf das Patchen von Paketlisten von APT "
+"beziehen, wenn Index-Diffs anstelle vollständiger Indexe heruntergeladen "
+"werden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Log all interactions with the sub-processes that actually perform downloads."
+msgstr ""
+"protokolliert alle Interaktionen mit Unterprozessen, die aktuell Downloads "
+"durchführen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Log events related to the automatically-installed status of packages and to "
+"the removal of unused packages."
+msgstr ""
+"protokolliert alle Ereignisse, die sich auf den automatisch-installiert-"
+"Status von Paketen und auf das Entfernen von nicht benutzten Paketen "
+"beziehen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate debug messages describing which packages are being automatically "
+"installed to resolve dependencies. This corresponds to the initial auto-"
+"install pass performed in, e.g., <literal>apt-get install</literal>, and not "
+"to the full <literal>apt</literal> dependency resolver; see <literal>Debug::"
+"pkgProblemResolver</literal> for that."
+msgstr ""
+"generiert Fehlersuchmeldungen, die beschreiben, welche Pakete automatisch "
+"installiert werden, um Abhängigkeiten aufzulösen. Dies entspricht dem "
+"anfangs durchgeführten auto-install-Durchlauf, z.B. in <literal>apt-get "
+"install</literal> und nicht dem vollständigen <literal>apt</literal>-"
+"Abhängigkeitsauflöser. Lesen Sie dafür <literal>Debug::pkgProblemResolver</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate debug messages describing which packages are marked as keep/install/"
+"remove while the ProblemResolver does his work. Each addition or deletion "
+"may trigger additional actions; they are shown indented two additional "
+"spaces under the original entry. The format for each line is "
+"<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c -"
+"&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> is "
+"the current version of the package, <literal>d.e.f</literal> is the version "
+"considered for installation and <literal>x.y.z</literal> is a newer version, "
+"but not considered for installation (because of a low pin score). The later "
+"two can be omitted if there is none or if it is the same as the installed "
+"version. <literal>section</literal> is the name of the section the package "
+"appears in."
+msgstr ""
+"generiert Fehlersuchmeldungen, die beschreiben, welches Paket als "
+"»keep«/»install«/»remove« markiert ist, während der ProblemResolver seine "
+"Arbeit verrichtet. Jedes Hinzufügen oder Löschen kann zusätzliche Aktionen "
+"auslösen. Sie werden nach zwei eingerückten Leerzeichen unter dem "
+"Originaleintrag angezeigt. Jede Zeile hat das Format <literal>MarkKeep</"
+"literal>, <literal>MarkDelete</literal> oder <literal>MarkInstall</literal> "
+"gefolgt von <literal>Paketname &lt;a.b.c -&gt; d.e.f | x.y.z&gt; "
+"(Abschnitt)</literal> wobei <literal>a.b.c</literal> die aktuelle Version "
+"des Paketes ist, <literal>d.e.f</literal> die Version ist, die zur "
+"Installation vorgesehen ist und <literal>x.y.z</literal> eine neuere Version "
+"ist, die aber nicht zur Installation vorgesehen ist (aufgrund einer "
+"niedrigen Pinning-Bewertung). Die letzten beiden können weggelassen werden, "
+"wenn es keine gibt oder wenn sie die gleiche Version haben, wie die, die "
+"installiert ist. <literal>section</literal> ist der Name des Abschnitts, in "
+"dem das Paket erscheint."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"When invoking &dpkg;, output the precise command line with which it is being "
+"invoked, with arguments separated by a single space character."
+msgstr ""
+"gibt, wenn &dpkg; aufgerufen wird, die genauen Befehlszeile mit der es "
+"aufgerufen wurde, mit Argumenten, die durch einzelne Leerzeichen getrennt "
+"sind, aus."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output all the data received from &dpkg; on the status file descriptor and "
+"any errors encountered while parsing it."
+msgstr ""
+"gibt alle von &dpkg; empfangenen Daten über einen Status-Datei-Deskriptor "
+"und alle während deren Auswertung gefundenen Fehler aus."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate a trace of the algorithm that decides the order in which "
+"<literal>apt</literal> should pass packages to &dpkg;."
+msgstr ""
+"generiert eine Aufzeichnung des Algorithmus, der über die Reihenfolge "
+"entscheidet, in der <literal>apt</literal> Pakete an &dpkg; weiterleiten "
+"soll."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output status messages tracing the steps performed when invoking &dpkg;."
+msgstr ""
+"gibt Statusmeldungen aus, die die Schritte nachverfolgen, die beim Aufruf "
+"von &dpkg; ausgeführt werden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Output the priority of each package list on startup."
+msgstr "gibt die Priorität jeder Paketliste beim Start aus."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Trace the execution of the dependency resolver (this applies only to what "
+"happens when a complex dependency problem is encountered)."
+msgstr ""
+"verfolgt die Ausführung des Abhängigkeitsauflösers (dies wird nur auf das "
+"angewandt, was geschieht, wenn ein komplexes Abhängigkeitsproblem "
+"aufgetreten ist)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Display a list of all installed packages with their calculated score used by "
+"the pkgProblemResolver. The description of the package is the same as "
+"described in <literal>Debug::pkgDepCache::Marker</literal>"
+msgstr ""
+"gibt eine Liste aller installierten Pakete mit ihren berechneten "
+"Bewertungen, die vom pkgProblemResolver benutzt werden, aus. Die "
+"Beschreibung des Pakets ist die gleiche, wie in <literal>Debug::pkgDepCache::"
+"Marker</literal> beschrieben."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information about the vendors read from <filename>/etc/apt/vendors."
+"list</filename>."
+msgstr ""
+"gibt die Informationen über die in <filename>/etc/apt/vendors.list</"
+"filename> gelesenen Anbieter aus."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Display the external commands that are called by apt hooks. This includes e."
+"g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"<literal>APT::Update::{Pre,Post}-Invoke</literal>."
+msgstr ""
+"zeigt die externen Befehle, die durch APT-Hooks aufgerufen werden. Dies "
+"schließt z.B. die Konfigurationsoptionen <literal>DPkg::{Pre,Post}-Invoke</"
+"literal> oder <literal>APT::Update::{Pre,Post}-Invoke</literal> mit ein."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml apt-ftparchive.1.xml
+msgid "Examples"
+msgstr "Beispiele"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"&configureindex; is a configuration file showing example values for all "
+"possible options."
+msgstr ""
+"&configureindex; ist eine Konfigurationsdatei, die Beispielwerte für alle "
+"möglichen Optionen zeigen."
+
+#. ? reading apt.conf
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid "&apt-cache;, &apt-config;, &apt-preferences;."
+msgstr "&apt-cache;, &apt-config;, &apt-preferences;."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt_preferences.5.xml
+msgid "Preference control file for APT"
+msgstr "Voreinstellungssteuerdatei für APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"The APT preferences file <filename>/etc/apt/preferences</filename> and the "
+"fragment files in the <filename>/etc/apt/preferences.d/</filename> folder "
+"can be used to control which versions of packages will be selected for "
+"installation."
+msgstr ""
+"Die APT-Einstellungsdatei <filename>/etc/apt/preferences</filename> und "
+"Teildateien im Verzeichnis <filename>/etc/apt/preferences.d/</filename> "
+"können benutzt werden, um zu steuern, welche Versionen von Paketen zur "
+"Installation ausgewählt werden."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Several versions of a package may be available for installation when the "
+"&sources-list; file contains references to more than one distribution (for "
+"example, <literal>stable</literal> and <literal>testing</literal>). APT "
+"assigns a priority to each version that is available. Subject to dependency "
+"constraints, <command>apt-get</command> selects the version with the highest "
+"priority for installation. The APT preferences override the priorities that "
+"APT assigns to package versions by default, thus giving the user control "
+"over which one is selected for installation."
+msgstr ""
+"Es könnten mehrere Versionen eines Pakets zur Installation verfügbar sein, "
+"wenn die Datei &sources-list; Bezüge zu mehr als einer Distribution enthält "
+"(zum Beispiel <literal>stable</literal> und <literal>testing</literal>). APT "
+"weist jeder verfügbaren Version eine Priorität zu. Je nach "
+"Abhängigkeitsbedingungen wählt <command>apt-get</command> die Version mit "
+"der höchsten Priorität zur Installation aus. Die APT-Einstellungen setzen "
+"die Prioritäten außer Kraft, die APT den Paketversionen standardmäßig "
+"zuweist, was dem Anwender die Kontrolle darüber gibt, welche zur "
+"Installation ausgewählt wird."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Several instances of the same version of a package may be available when the "
+"&sources-list; file contains references to more than one source. In this "
+"case <command>apt-get</command> downloads the instance listed earliest in "
+"the &sources-list; file. The APT preferences do not affect the choice of "
+"instance, only the choice of version."
+msgstr ""
+"Es könnten mehrere Instanzen der gleichen Version eines Paketes verfügbar "
+"sein, wenn die Datei &sources-list; Bezüge zu mehr als einer Distribution "
+"enthält. In diesem Fall lädt <command>apt-get</command> die Instanz "
+"herunter, die in der Datei &sources-list; als erstes aufgelistet ist. Die "
+"APT-Einstellungsdatei beeinflusst die Wahl der Instanz nicht, nur die Wahl "
+"der Version."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Preferences are a strong power in the hands of a system administrator but "
+"they can become also their biggest nightmare if used without care! APT will "
+"not question the preferences, so wrong settings can lead to uninstallable "
+"packages or wrong decisions while upgrading packages. Even more problems "
+"will arise if multiple distribution releases are mixed without a good "
+"understanding of the following paragraphs. Packages included in a specific "
+"release aren't tested in (and therefore don't always work as expected in) "
+"older or newer releases, or together with other packages from different "
+"releases. You have been warned."
+msgstr ""
+"Eigenschaften sind in der Hand eines Systemadministrator ein große Stärke, "
+"können aber auch sein größter Albtraum werden, wenn sie unvorsichtig benutzt "
+"werden. APT wird die Eigenschaften nicht abfragen, so dass deshalb falsche "
+"Einstellungen zu nicht installierbaren Paketen oder falschen Entscheidungen "
+"während des Upgrades führen. Sogar noch mehr Probleme treten auf, wenn "
+"mehrere Distributions-Release ohne gutes Verständnis der folgenden Absätze "
+"gemischt werden. Pakete, die in einem speziellen Release enthalten sind, "
+"sind nicht in älteren und neueren Releases oder zusammen mit Paketen "
+"unterschiedlicher Releases getestet und funktionieren daher erwartungsgemäß "
+"nicht. Sind wurden gewarnt."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Note that the files in the <filename>/etc/apt/preferences.d</filename> "
+"directory are parsed in alphanumeric ascending order and need to obey the "
+"following naming convention: The files have either no or \"<literal>pref</"
+"literal>\" as filename extension and only contain alphanumeric, hyphen (-), "
+"underscore (_) and period (.) characters. Otherwise APT will print a notice "
+"that it has ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
+msgstr ""
+"Beachten Sie, dass die Dateien im Verzeichnis <filename>/etc/apt/preferences."
+"d</filename> in alphanumerisch aufsteigender Reihenfolge ausgewertet werden "
+"und der folgenden Namenskonvention unterliegen: Die Dateien haben entweder "
+"keine oder <literal>»pref«</literal> als Dateierweiterung und sie enthalten "
+"nur alphanumerische Zeichen, Bindestriche (-), Unterstriche (_) oder Punkte "
+"(.). Andernfalls wird APT einen Hinweis ausgeben, dass es eine Datei "
+"ignoriert hat, falls die Datei nicht auf ein Muster in der "
+"Konfigurationsliste <literal>Dir::Ignore-Files-Silently</literal> passt – in "
+"diesem Fall wird sie stillschweigend ignoriert."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "APT's Default Priority Assignments"
+msgstr "APTs Standardprioritätszuweisungen"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "<command>apt-get install -t testing <replaceable>some-package</replaceable></command>\n"
+msgstr "<command>apt-get install -t testing <replaceable>irgendein_Paket</replaceable></command>\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "APT::Default-Release \"stable\";\n"
+msgstr "APT::Default-Release \"stable\";\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If there is no preferences file or if there is no entry in the file that "
+"applies to a particular version then the priority assigned to that version "
+"is the priority of the distribution to which that version belongs. It is "
+"possible to single out a distribution, \"the target release\", which "
+"receives a higher priority than other distributions do by default. The "
+"target release can be set on the <command>apt-get</command> command line or "
+"in the APT configuration file <filename>/etc/apt/apt.conf</filename>. Note "
+"that this has precedence over any general priority you set in the <filename>/"
+"etc/apt/preferences</filename> file described later, but not over "
+"specifically pinned packages. For example, <placeholder type="
+"\"programlisting\" id=\"0\"/> <placeholder type=\"programlisting\" id=\"1\"/>"
+msgstr ""
+"Wenn es keine Einstellungsdatei gibt oder es in der Datei keinen Eintrag "
+"gibt, der sich auf eine bestimmte Version bezieht, dann ist die dieser "
+"Version zugewiesene Priorität, die Priorität der Distribution zu der die "
+"Version gehört. Es ist möglich eine Distribution auszuzeichnen, »das Ziel-"
+"Release«, die eine höhere Priorität erhält, als dies andere Distributionen "
+"standardmäßig tun. Das Ziel-Release kann auf der <command>apt-get</command>-"
+"Befehlszeile oder in der APT-Konfigurationsdatei <filename>/etc/apt/apt."
+"conf</filename> gesetzt werden. Beachten Sie, dass dies Vorrang vor einer "
+"allgemeinen Priorität hat, die Sie, wie später beschrieben, in der Datei "
+"<filename>/etc/apt/preferences</filename> setzen, aber nicht vor bestimmten "
+"mit Pinning gewichteten Paketen. Beispielsweise <placeholder type="
+"\"programlisting\" id=\"0\"/> <placeholder type=\"programlisting\" id=\"1\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If the target release has been specified then APT uses the following "
+"algorithm to set the priorities of the versions of a package. Assign:"
+msgstr ""
+"Wenn das Ziel-Release angegeben wurde, dann benutzt APT den folgenden "
+"Algorithmus, um die Prioritäten der Versionen eines Paketes zu setzen. "
+"Zuweisung:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 1"
+msgstr "Priorität 1"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"to the versions coming from archives which in their <filename>Release</"
+"filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</"
+"emphasis> as \"ButAutomaticUpgrades: yes\" like the Debian "
+"<literal>experimental</literal> archive."
+msgstr ""
+"zu den Versionen, die von Archiven kommen, die in deren <filename>Release</"
+"filename>-Dateien als »NotAutomatic: yes« markiert sind, aber "
+"<emphasis>nicht</emphasis> als »ButAutomaticUpgrades: yes« wie das Archiv "
+"<literal>experimental</literal> von Debian."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 100"
+msgstr "Priorität 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"to the version that is already installed (if any) and to the versions coming "
+"from archives which in their <filename>Release</filename> files are marked "
+"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the Debian "
+"backports archive since <literal>squeeze-backports</literal>."
+msgstr ""
+"zu der Version, die bereits installiert ist (wenn dies der Fall ist) und zu "
+"Versionen, die von Archiven kommen, die in deren <filename>Release</"
+"filename>-Dateien als »NotAutomatic: yes« und »ButAutomaticUpgrades: yes« "
+"markiert sind, wie das Debian-Backports-Archiv seit <literal>squeeze-"
+"backports</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 500"
+msgstr "Priorität 500"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "to the versions that do not belong to the target release."
+msgstr "zu den Versionen, die nicht zum Ziel-Release gehören."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 990"
+msgstr "Priorität 990"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "to the versions that belong to the target release."
+msgstr "zu den Versionen, die zum Ziel-Release gehören."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The highest of those priorities whose description matches the version is "
+"assigned to the version."
+msgstr ""
+"Die höchste dieser Prioritäten, deren Beschreibung zu der Version passt, "
+"wird der Version zugewiesen."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If the target release has not been specified then APT simply assigns "
+"priority 100 to all installed package versions and priority 500 to all "
+"uninstalled package versions, except versions coming from archives which in "
+"their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" "
+"- these versions get the priority 1 or priority 100 if it is additionally "
+"marked as \"ButAutomaticUpgrades: yes\"."
+msgstr ""
+"Wenn das Ziel-Release nicht angegeben wurde, dann weist APT einfach allen "
+"installierten Paketversionen eine Priorität von 100 und allen nicht "
+"installierten Paketversionen eine Priorität von 500 zu, außer wenn Versionen "
+"aus Archiven kommen, die in deren <filename>Release</filename>-Dateien mit "
+"»NotAutomatic: yes« markiert sind – diese Versionen erhalten die Priorität 1 "
+"oder die Priorität 100, falls sie zusätzlich als »ButAutomaticUpgrades: yes« "
+"markiert sind."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"APT then applies the following rules, listed in order of precedence, to "
+"determine which version of a package to install."
+msgstr ""
+"APT wendet dann die folgenden Regeln an, aufgelistet in der Reihenfolge "
+"ihres Vorrangs, um zu bestimmen in welcher Version das Paket zu installieren "
+"ist."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"Never downgrade unless the priority of an available version exceeds 1000. "
+"(\"Downgrading\" is installing a less recent version of a package in place "
+"of a more recent version. Note that none of APT's default priorities "
+"exceeds 1000; such high priorities can only be set in the preferences file. "
+"Note also that downgrading a package can be risky.)"
+msgstr ""
+"Führen Sie niemals ein Downgrade durch, außer wenn die Priorität verfügbarer "
+"Pakete 1000 übersteigt. (»Downgrading« ist das Installieren einer weniger "
+"aktuellen Version, an Stelle einer aktuelleren Version. Beachten Sie, dass "
+"keine Standardpriorität von APT 1000 übersteigt. So hohe Prioritäten können "
+"nur durch die Einstellungsdatei gesetzt werden. Beachten Sie außerdem, dass "
+"Downgrading eines Paketes riskant sein kann.)"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "Install the highest priority version."
+msgstr "installiert die Version mit der höchsten Priorität."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"If two or more versions have the same priority, install the most recent one "
+"(that is, the one with the higher version number)."
+msgstr ""
+"Wenn zwei oder mehr Versionen die gleiche Priorität haben, wird die "
+"aktuellste installiert (das ist die mit der höheren Versionsnummer)."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"If two or more versions have the same priority and version number but either "
+"the packages differ in some of their metadata or the <literal>--reinstall</"
+"literal> option is given, install the uninstalled one."
+msgstr ""
+"Wenn zwei oder mehr Versionen die gleiche Priorität und Versionsnummer "
+"haben, die Pakete sich aber entweder in ihren Metadaten unterscheiden oder "
+"die Option <literal>--reinstall</literal> angegeben wurde, wird die nicht "
+"installierte installiert."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"In a typical situation, the installed version of a package (priority 100) "
+"is not as recent as one of the versions available from the sources listed in "
+"the &sources-list; file (priority 500 or 990). Then the package will be "
+"upgraded when <command>apt-get install <replaceable>some-package</"
+"replaceable></command> or <command>apt-get upgrade</command> is executed."
+msgstr ""
+"In einer typischen Situation ist die Version eines Paketes (Priorität 100) "
+"nicht so aktuell, wie eine der verfügbaren Versionen, die in der Quellliste "
+"der Datei &sources-list; steht (Priorität 500 oder 990). Dann wird ein "
+"Upgrade des Pakets durchgeführt, wenn <command>apt-get install "
+"<replaceable>irgendein_Paket</replaceable></command> oder <command>apt-get "
+"upgrade</command> ausgeführt wird."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"More rarely, the installed version of a package is <emphasis>more</emphasis> "
+"recent than any of the other available versions. The package will not be "
+"downgraded when <command>apt-get install <replaceable>some-package</"
+"replaceable></command> or <command>apt-get upgrade</command> is executed."
+msgstr ""
+"Seltener ist die installierte Version eines Pakets <emphasis>neuer</"
+"emphasis>, als jede andere der verfügbaren Versionen. Für das Paket wird "
+"kein Downgrade durchgeführt, wenn <command>apt-get install "
+"<replaceable>irgendein_Paket</replaceable></command> oder <command>apt-get "
+"upgrade</command> ausgeführt wird."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Sometimes the installed version of a package is more recent than the version "
+"belonging to the target release, but not as recent as a version belonging to "
+"some other distribution. Such a package will indeed be upgraded when "
+"<command>apt-get install <replaceable>some-package</replaceable></command> "
+"or <command>apt-get upgrade</command> is executed, because at least "
+"<emphasis>one</emphasis> of the available versions has a higher priority "
+"than the installed version."
+msgstr ""
+"Manchmal ist die installierte Version eines Pakets aktueller, als die "
+"Version, die zum Ziel-Release gehört, aber nicht so aktuell, wie eine "
+"Version, die zu einer anderen Distribution gehört. Für ein derartiges Paket "
+"wird tatsächlich ein Upgrade durchgeführt, wenn <command>apt-get install "
+"<replaceable>irgendein_Paket</replaceable></command> oder <command>apt-get "
+"upgrade</command> ausgeführt wird, weil mindestens <emphasis>eine</emphasis> "
+"der verfügbaren Versionen eine höhere Priorität als die installierte Version "
+"hat."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "The Effect of APT Preferences"
+msgstr "Die Auswirkungen von APT-Einstellungen"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The APT preferences file allows the system administrator to control the "
+"assignment of priorities. The file consists of one or more multi-line "
+"records separated by blank lines. Records can have one of two forms, a "
+"specific form and a general form."
+msgstr ""
+"Die APT-Einstellungsdatei erlaubt einem Systemverwalter die Zuweisung von "
+"Prioritäten zu steuern. Die Datei besteht aus einem oder mehreren "
+"mehrzeiligen Datensätzen, die durch leere Zeilen getrennt sind. Datensätze "
+"können eine von zwei Gestalten haben, eine spezielle Gestalt oder eine "
+"allgemeine Gestalt."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The specific form assigns a priority (a \"Pin-Priority\") to one or more "
+"specified packages with a specified version or version range. For example, "
+"the following record assigns a high priority to all versions of the "
+"<filename>perl</filename> package whose version number begins with "
+"\"<literal>&good-perl;</literal>\". Multiple packages can be separated by "
+"spaces."
+msgstr ""
+"Die spezielle Form weist die Priorität (eine »Pin-Priorität«) einem oder "
+"mehreren angegebenen Paketen und angegebenen Versionen oder "
+"Versionsbereichen zu. Der folgende Datensatz weist zum Beispiel allen "
+"Versionen des <filename>perl</filename>-Pakets eine höhere Priorität zu, "
+"deren Versionsnummer mit »<literal>&good-perl;</literal>« beginnt. Mehrere "
+"Pakete können durch Leerzeichen getrennt werden."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The general form assigns a priority to all of the package versions in a "
+"given distribution (that is, to all the versions of packages that are listed "
+"in a certain <filename>Release</filename> file) or to all of the package "
+"versions coming from a particular Internet site, as identified by the site's "
+"fully qualified domain name."
+msgstr ""
+"Die allgemeine Form weist allen Paketversionen in einer gegebenen "
+"Distribution (d.h. allen Versionen von Paketen, die in einer bestimmten "
+"<filename>Release</filename>-Datei gelistet sind) oder allen Paketversionen, "
+"die von einer speziellen Internet-Site kommen, die durch ihren voll "
+"ausgebildeten Domänennamen identifiziert wird, eine Priorität zu."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"This general-form entry in the APT preferences file applies only to groups "
+"of packages. For example, the following record assigns a high priority to "
+"all package versions available from the local site."
+msgstr ""
+"Dieser Eintrag in allgemeiner Form in der APT-Einstellungsdatei verwendet "
+"nur Gruppen von Paketen. Der folgende Eintrag weist zum Beispiel allen "
+"Paketversionen eine hohe Priorität zu, die lokal liegen."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A note of caution: the keyword used here is \"<literal>origin</literal>\" "
+"which can be used to match a hostname. The following record will assign a "
+"high priority to all versions available from the server identified by the "
+"hostname \"ftp.de.debian.org\""
+msgstr ""
+"Eine Mahnung zur Vorsicht: Das hier benutzte Schlüsselwort ist "
+"»<literal>origin</literal>«, was zum Finden des Rechnernamens benutzt werden "
+"kann. Der folgende Eintrag wird allen Versionen eine hohe Priorität "
+"zuweisen, die auf dem Server verfügbar sind, der durch den Rechnernamen »ftp."
+"de.debian.org« identifiziert wird."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"This should <emphasis>not</emphasis> be confused with the Origin of a "
+"distribution as specified in a <filename>Release</filename> file. What "
+"follows the \"Origin:\" tag in a <filename>Release</filename> file is not an "
+"Internet address but an author or vendor name, such as \"Debian\" or \"Ximian"
+"\"."
+msgstr ""
+"Dies sollte nicht mit der Herkunft einer Distribution verwechselt werden, "
+"wie sie in einer <filename>Release</filename>-Datei angegeben wurde. Was dem "
+"»Origin:«-Kennzeichen in einer <filename>Release</filename>-Datei folgt, ist "
+"keine Internet-Adresse, sondern ein Autoren- oder Anbietername, wie »Debian« "
+"oder »Ximian«."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a low priority to all package versions "
+"belonging to any distribution whose Archive name is \"<literal>unstable</"
+"literal>\"."
+msgstr ""
+"Der folgende Datensatz weist allen Paketversionen, die zu Distributionen "
+"gehören, deren Archivname »<literal>unstable</literal>« ist, eine niedrige "
+"Priorität zu."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any distribution whose Codename is \"<literal>&debian-testing-"
+"codename;</literal>\"."
+msgstr ""
+"Der folgende Datensatz weist allen Paketversionen, die zu einer Distribution "
+"gehören, deren Codename »<literal>&debian-testing-codename;</literal>« ist, "
+"eine hohe Priorität zu."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+msgstr ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any release whose Archive name is \"<literal>stable</literal>\" "
+"and whose release Version number is \"<literal>&debian-stable-version;</"
+"literal>\"."
+msgstr ""
+"Der folgende Datensatz weist allen Paketversionen, die zu einer Distribution "
+"gehören, deren Archivname »<literal>stable</literal>« und deren Release-"
+"Nummer »<literal>&debian-stable-version;</literal>« ist, eine hohe Priorität "
+"zu."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The effect of the comma operator is similar to an \"and\" in logic: All "
+"conditions must be satisfied for the pin to match. There is one exception: "
+"For any type of condition (such as two \"a\" conditions), only the last such "
+"condition is checked."
+msgstr ""
+"Die Auswirkungen des trennenden Kommas ist einem »und« in der Logik ähnlich: "
+"Alle Bedingungen müssen erfüllt werden, dass die Pin passt. Es gibt jedoch "
+"eine Ausnahme: Bei jedem Bedingungstyp (wie zwei »a«-Bedingungen) wird nur "
+"die letzte Bedingungen geprüft."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Regular expressions and &glob; syntax"
+msgstr "Reguläre Ausdrücke und &glob;-Syntax"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"APT also supports pinning by &glob; expressions, and regular expressions "
+"surrounded by slashes. For example, the following example assigns the "
+"priority 500 to all packages from experimental where the name starts with "
+"gnome (as a &glob;-like expression) or contains the word kde (as a POSIX "
+"extended regular expression surrounded by slashes)."
+msgstr ""
+"APT unterstützt außerdem Pinning mittels &glob;-Ausdrücken und regulären "
+"Ausdrücken, die von »/« umschlossen sind. Das folgende Beispiel weist "
+"beispielsweise allen Paketen aus Experimental die Priorität 500 zu, bei "
+"denen der Name mit »gnome« beginnt (wie ein &glob;-artiger Ausdruck) oder "
+"das Wort »kde« enthält (wie ein erweiterter regulärer POSIX-Ausdruck, der "
+"von Schrägstrichen umschlossen wird)."
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+msgstr ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The rule for those expressions is that they can occur anywhere where a "
+"string can occur. Thus, the following pin assigns the priority 990 to all "
+"packages from a release starting with &ubuntu-codename;."
+msgstr ""
+"Die Regel für diese Ausdrücke ist, dass sie überall dort auftreten können, "
+"wo eine Zeichenkette auftreten kann. Somit weist die folgende Pin allen "
+"Paketen von einem Release seit Karmic die Priorität 900 zu."
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+msgstr ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If a regular expression occurs in a <literal>Package</literal> field, the "
+"behavior is the same as if this regular expression were replaced with a list "
+"of all package names it matches. It is undecided whether this will change in "
+"the future; thus you should always list wild-card pins first, so later "
+"specific pins override it. The pattern \"<literal>*</literal>\" in a "
+"Package field is not considered a &glob; expression in itself."
+msgstr ""
+"Falls ein regulärer Ausdruck in einem <literal>Package</literal>-Feld "
+"vorkommt, ist das Verhalten dasselbe, als wenn der reguläre Ausdruck durch "
+"eine Liste aller Paketnamen ersetzt würde, auf die er passt. Es ist noch "
+"nicht entschieden, wie sich dies in Zukunft ändern wird, daher sollten Sie "
+"immer zuerst Platzhalter-Pins auflisten, so dass es später spezielle Pins "
+"außer Kraft setzen können. Das Muster »<literal>*</literal>« in einem "
+"»Package«-Feld wird selbst nicht als ein &glob;-Ausdruck angesehen."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "How APT Interprets Priorities"
+msgstr "Wie APT Prioritäten interpretiert"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Priorities (P) assigned in the APT preferences file must be positive or "
+"negative integers. They are interpreted as follows (roughly speaking):"
+msgstr ""
+"Die in der APT-Einstellungsdatei zugewiesenen Prioritäten (P) müssen "
+"positive oder negative Ganzzahlen sein. Sie werden wie folgt interpretiert "
+"(grob gesagt):"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P &gt;= 1000"
+msgstr "P &gt;= 1000"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed even if this constitutes a downgrade of the "
+"package"
+msgstr ""
+"veranlasst, dass eine Version installiert wird, auch wenn dies ein Downgrade "
+"des Pakets durchführt"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "990 &lt;= P &lt; 1000"
+msgstr "990 &lt;= P &lt; 1000"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed even if it does not come from the target "
+"release, unless the installed version is more recent"
+msgstr ""
+"veranlasst, dass eine Version installiert wird, auch wenn diese nicht vom "
+"Ziel-Release kommt, außer wenn die installierte Version aktueller ist"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "500 &lt;= P &lt; 990"
+msgstr "500 &lt;= P &lt; 990"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to the target release or the installed version is more recent"
+msgstr ""
+"veranlasst, dass eine Version installiert wird, außer wenn eine Version "
+"verfügbar ist, die zum Ziel-Release gehört oder die installierte Version "
+"neuer ist"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "100 &lt;= P &lt; 500"
+msgstr "100 &lt;= P &lt; 500"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to some other distribution or the installed version is more recent"
+msgstr ""
+"veranlasst, dass eine Version installiert wird, außer wenn eine Version "
+"verfügbar ist, die zu einer anderen Distribution gehört oder die "
+"installierte Version neuer ist"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "0 &lt; P &lt; 100"
+msgstr "0 &lt; P &lt; 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed only if there is no installed version of "
+"the package"
+msgstr ""
+"veranlasst, dass eine Version nur dann installiert wird, wenn es keine "
+"installierte Version des Pakets gibt"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P &lt; 0"
+msgstr "P &lt; 0"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "prevents the version from being installed"
+msgstr "verhindert das Installieren der Version"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P = 0"
+msgstr "P = 0"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "has undefined behaviour, do not use it."
+msgstr "hat kein definiertes Verhalten, verwenden Sie es nicht."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The first specific-form record matching an available package version "
+"determines the priority of the package version. Failing that, the priority "
+"of the package is defined as the maximum of all priorities defined by "
+"generic-form records matching the version. Records defined using patterns "
+"in the Pin field other than \"*\" are treated like specific-form records."
+msgstr ""
+"Der erste Datensatz mit speziellem Format der zu einer verfügbaren "
+"Paketversion passt, legt die Priorität der Paketversion fest. Schlägt dies "
+"fehl, wird die Priorität als Maximum aller Prioritäten der Datensätze mit "
+"generischem Format definiert, die zu einer verfügbaren Version passen. "
+"Datensätze, die so definiert sind, dass sie andere Muster als »*« im Feld "
+"Pin verwenden, werden wie Datensätze mit speziellem Format betrachtet."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"For example, suppose the APT preferences file contains the three records "
+"presented earlier:"
+msgstr ""
+"Nehmen wir zum Beispiel an, die APT-Einstellungsdatei enthält die drei "
+"bereits gezeigten Datensätze:"
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid "Then:"
+msgstr "Dann:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The most recent available version of the <literal>perl</literal> package "
+"will be installed, so long as that version's version number begins with "
+"\"<literal>&good-perl;</literal>\". If <emphasis>any</emphasis> &good-perl;"
+"* version of <literal>perl</literal> is available and the installed version "
+"is &bad-perl;*, then <literal>perl</literal> will be downgraded."
+msgstr ""
+"Es wird die aktuellste verfügbare Version des Pakets <literal>perl</literal> "
+"installiert, so lange die Versionsnummer mit »<literal>&good-perl;</"
+"literal>« anfängt. Wenn <emphasis>irgendeine</emphasis> &good-perl;*-Version "
+"von <literal>perl</literal> verfügbar ist und die installierte Version &bad-"
+"perl;* ist, dann wird von <literal>perl</literal> ein Downgrade durchgeführt."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A version of any package other than <literal>perl</literal> that is "
+"available from the local system has priority over other versions, even "
+"versions belonging to the target release."
+msgstr ""
+"Eine Version irgendeines anderen Pakets als <literal>perl</literal>, die vom "
+"lokalen System verfügbar ist, hat eine Priorität über anderen Versionen, "
+"sogar wenn diese Versionen zum Ziel-Release gehören."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A version of a package whose origin is not the local system but some other "
+"site listed in &sources-list; and which belongs to an <literal>unstable</"
+"literal> distribution is only installed if it is selected for installation "
+"and no version of the package is already installed."
+msgstr ""
+"Eine Version eines Pakets, dessen Ursprung nicht das lokale System ist, aber "
+"ein anderer in &sources-list; aufgelisteter Ort und der zu einer "
+"<literal>unstable</literal>-Distribution gehört, wird nur installiert, falls "
+"es zur Installation ausgewählt wurde und nicht bereits eine Version des "
+"Pakets installiert ist."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Determination of Package Version and Distribution Properties"
+msgstr "Festlegung von Paketversion und Distributions-Eigenschaften"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The locations listed in the &sources-list; file should provide "
+"<filename>Packages</filename> and <filename>Release</filename> files to "
+"describe the packages available at that location."
+msgstr ""
+"Die in der &sources-list;-Datei aufgelisteten Orte sollten "
+"<filename>Packages</filename>- und <filename>Release</filename>-Dateien "
+"bereitstellen, um die an diesem Ort verfügbaren Pakete zu beschreiben."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The <filename>Packages</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable>/"
+"<replaceable>component</replaceable>/<replaceable>arch</replaceable></"
+"filename>: for example, <filename>.../dists/stable/main/binary-i386/"
+"Packages</filename>. It consists of a series of multi-line records, one for "
+"each package available in that directory. Only two lines in each record are "
+"relevant for setting APT priorities:"
+msgstr ""
+"Die <filename>Packages</filename>-Datei wird normalerweise im Verzeichnis "
+"<filename>…/dists/<replaceable>Distributions-Name</replaceable>/"
+"<replaceable>Komponente</replaceable>/<replaceable>Architektur</"
+"replaceable></filename> gefunden, zum Beispiel <filename>…/dists/stable/main/"
+"binary-i386/Packages</filename>. Sie besteht aus einer Serie mehrzeiliger "
+"Datensätze, einem für jedes verfügbare Paket in diesem Verzeichnis. In jedem "
+"Datensatz sind nur zwei Zeilen zum Setzen der APT-Prioritäten relevant:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Package:</literal> line"
+msgstr "die <literal>Package:</literal>-Zeile"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "gives the package name"
+msgstr "gibt den Paketnamen an"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Version:</literal> line"
+msgstr "die <literal>Version:</literal>-Zeile"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "gives the version number for the named package"
+msgstr "gibt die Versionsnummer für das genannte Paket an"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The <filename>Release</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable></filename>: for "
+"example, <filename>.../dists/stable/Release</filename>, or <filename>.../"
+"dists/&debian-stable-codename;/Release</filename>. It consists of a single "
+"multi-line record which applies to <emphasis>all</emphasis> of the packages "
+"in the directory tree below its parent. Unlike the <filename>Packages</"
+"filename> file, nearly all of the lines in a <filename>Release</filename> "
+"file are relevant for setting APT priorities:"
+msgstr ""
+"Die <filename>Release</filename>-Datei ist normalerweise im Verzeichnis "
+"<filename>…/dists/<replaceable>Distributionsname</replaceable></filename> zu "
+"finden, zum Beispiel <filename>…/dists/stable/Release</filename> oder "
+"<filename>…/dists/&debian-stable-codename;/Release</filename>. Sie besteht "
+"aus einem einzelnen mehrzeiligen Datensatz, der auf <emphasis>alle</"
+"emphasis> Pakete im Verzeichnisbaum unterhalb des übergeordneten "
+"Verzeichnisses zutrifft. Anders als die <filename>Packages</filename>-Datei "
+"sind nahezu alle Zeilen in einer <filename>Release</filename>-Datei für das "
+"Setzen von APT-Prioritäten relevant:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line"
+msgstr "die <literal>Archive:</literal>- oder <literal>Suite:</literal>-Zeile"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the archive to which all the packages in the directory tree belong. "
+"For example, the line \"Archive: stable\" or \"Suite: stable\" specifies "
+"that all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file are in a <literal>stable</literal> "
+"archive. Specifying this value in the APT preferences file would require "
+"the line:"
+msgstr ""
+"benennt das Archiv, zu dem alle Pakete im Verzeichnisbaum gehören. Die Zeile "
+"»Archive: stable« oder »Suite: stable« gibt zum Beispiel an, dass alle "
+"Pakete im Verzeichnisbaum unterhalb des der <filename>Release</filename>-"
+"Datei übergeordneten Verzeichnisses sich in einem <literal>stable</literal>-"
+"Archiv befinden. Diesen Wert in der APT-Einstellungsdatei anzugeben würde "
+"die folgende Zeile benötigen:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release a=stable\n"
+msgstr "Pin: release a=stable\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Codename:</literal> line"
+msgstr "die <literal>Codename:</literal>-Zeile"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the codename to which all the packages in the directory tree belong. "
+"For example, the line \"Codename: &debian-testing-codename;\" specifies that "
+"all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file belong to a version named <literal>&debian-"
+"testing-codename;</literal>. Specifying this value in the APT preferences "
+"file would require the line:"
+msgstr ""
+"benennt den Codenamen, zu dem alle Pakete im Verzeichnisbaum gehören. Die "
+"Zeile »Codename: &debian-testing-codename;« gibt zum Beispiel an, dass alle "
+"Pakete im Verzeichnisbaum unterhalb des der <filename>Release</filename>-"
+"Datei übergeordneten Verzeichnisses zu einer Version mit Namen "
+"<literal>&debian-testing-codename;</literal> gehören. Diesen Wert in der APT-"
+"Einstellungsdatei anzugeben würde die folgende Zeile benötigen:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release n=&debian-testing-codename;\n"
+msgstr "Pin: release n=&debian-testing-codename;\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the release version. For example, the packages in the tree might "
+"belong to Debian release version &debian-stable-version;. Note that there "
+"is normally no version number for the <literal>testing</literal> and "
+"<literal>unstable</literal> distributions because they have not been "
+"released yet. Specifying this in the APT preferences file would require one "
+"of the following lines."
+msgstr ""
+"benennt die Release-Version. Die Pakete im Baum könnten zum Beispiel zur "
+"Debian-Release-Version &debian-stable-version; gehören. Beachten Sie, dass "
+"es normalerweise keine Versionsnummer für <literal>testing</literal>- und "
+"<literal>unstable</literal>-Distributionen gibt, weil sie noch nicht "
+"veröffentlicht wurden. Diese in der APT-Einstellungsdatei anzugeben würde "
+"eine der folgenden Zeilen benötigen:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+msgstr ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Component:</literal> line"
+msgstr "die <literal>Component:</literal>-Zeile"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the licensing component associated with the packages in the directory "
+"tree of the <filename>Release</filename> file. For example, the line "
+"\"Component: main\" specifies that all the packages in the directory tree "
+"are from the <literal>main</literal> component, which entails that they are "
+"licensed under terms listed in the Debian Free Software Guidelines. "
+"Specifying this component in the APT preferences file would require the line:"
+msgstr ""
+"benennt die Lizenzierungskomponente, die mit den Paketen im Verzeichnisbaum "
+"der <filename>Release</filename>-Datei verbunden ist. Die Zeile »Component: "
+"main« gibt zum Beispiel an, dass alle Pakete im Verzeichnisbaum von der "
+"<literal>main</literal>-Komponente stammen, was zur Folge hat, dass sie "
+"unter den Bedingungen der Debian-Richtlinien für Freie Software stehen. "
+"Diese Komponente in der APT-Einstellungsdatei anzugeben würde die folgende "
+"Zeilen benötigen:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release c=main\n"
+msgstr "Pin: release c=main\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Origin:</literal> line"
+msgstr "die <literal>Origin:</literal>-Zeile"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the originator of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is <literal>Debian</"
+"literal>. Specifying this origin in the APT preferences file would require "
+"the line:"
+msgstr ""
+"benennt den Urheber des Pakets im Verzeichnisbaum der <filename>Release</"
+"filename>-Datei. Zumeist ist dies <literal>Debian</literal>. Diesen Ursprung "
+"in der APT-Einstellungsdatei anzugeben würde die folgende Zeile benötigen:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release o=Debian\n"
+msgstr "Pin: release o=Debian\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Label:</literal> line"
+msgstr "die <literal>Label:</literal>-Zeile"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the label of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is <literal>Debian</"
+"literal>. Specifying this label in the APT preferences file would require "
+"the line:"
+msgstr ""
+"benennt die Beschriftung des Pakets im Verzeichnisbaum der "
+"<filename>Release</filename>-Datei. Zumeist ist dies <literal>Debian</"
+"literal>. Diese Beschriftung in der APT-Einstellungsdatei anzugeben würde "
+"die folgende Zeile benötigen:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release l=Debian\n"
+msgstr "Pin: release l=Debian\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"All of the <filename>Packages</filename> and <filename>Release</filename> "
+"files retrieved from locations listed in the &sources-list; file are stored "
+"in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
+"named by the variable <literal>Dir::State::Lists</literal> in the "
+"<filename>apt.conf</filename> file. For example, the file <filename>debian."
+"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
+"contains the <filename>Release</filename> file retrieved from the site "
+"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
+"architecture files from the <literal>contrib</literal> component of the "
+"<literal>unstable</literal> distribution."
+msgstr ""
+"Alle <filename>Packages</filename>- und <filename>Release</filename>-"
+"Dateien, die von Orten heruntergeladen werden, die in der Datei &sources-"
+"list; aufgelistet sind, werden im Verzeichnis <filename>/var/lib/apt/lists</"
+"filename> oder in der von der Variablen <literal>Dir::State::Lists</literal> "
+"in der Datei <filename>apt.conf</filename> benannten Datei gespeichert. Die "
+"Datei <filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"i386_Release</filename> enthält zum Beispiel die <filename>Release</"
+"filename>-Datei, die von der Site <literal>debian.lcs.mit.edu</literal> für "
+"die <literal>binary-i386</literal>-Architekturdateien von der "
+"<literal>contrib</literal>-Komponente der <literal>unstable</literal>-"
+"Distribution heruntergeladen wurde."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Optional Lines in an APT Preferences Record"
+msgstr "Optionale Zeilen in einem APT-Einstellungsdatensatz"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Each record in the APT preferences file can optionally begin with one or "
+"more lines beginning with the word <literal>Explanation:</literal>. This "
+"provides a place for comments."
+msgstr ""
+"Optional kann jeder Datensatz in der APT-Einstellungsdatei mit einer oder "
+"mehreren Zeilen beginnen, die mit dem Wort <literal>Explanation:</literal> "
+"anfangen. Dieses stellt einen Platz für Kommentare bereit."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking Stable"
+msgstr "Stable verfolgen"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated\n"
+"Explanation: package versions other than those in the stable distro\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Explanation: Deinstallieren oder nicht installieren von anderen von Debian\n"
+"Explanation: stammenden Paketversionen als denen der Stable-Distribution\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"<literal>stable</literal> distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> "
+"distributions. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Die folgende APT-Einstellungsdatei wird APT veranlassen, allen "
+"Paketversionen eine höhere Priorität als die Vorgabe (500) zu geben, die zu "
+"einer <literal>stable</literal>-Distribution gehören und eine ungeheuer "
+"niedrige Priorität Paketversionen, die zu anderen <literal>Debian</literal>-"
+"Distributionen gehören. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"apt-get install <replaceable>package-name</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+msgstr ""
+"apt-get install <replaceable>Paketname</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>stable</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+"Mit einer geeigneten &sources-list;-Datei und der obigen Einstellungsdatei "
+"wird jeder der folgenden Befehle APT veranlassen, ein Upgrade auf die "
+"neuste(n) <literal>stable</literal>-Version(en) durchzuführen. <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/testing\n"
+msgstr "apt-get install <replaceable>Paket</replaceable>/testing\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>testing</literal> distribution; the package "
+"will not be upgraded again unless this command is given again. <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Der folgende Befehl wird APT veranlassen, ein Upgrade des angegebenen Pakets "
+"auf die neuste Version der <literal>testing</literal>-Distribution "
+"durchzuführen. Von dem Paket wird kein weiteres Upgrade durchgeführt, außer "
+"wenn dieser Befehl wieder angegeben wird. <placeholder type=\"programlisting"
+"\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking Testing or Unstable"
+msgstr "Testing oder Unstable verfolgen"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a high priority "
+"to package versions from the <literal>testing</literal> distribution, a "
+"lower priority to package versions from the <literal>unstable</literal> "
+"distribution, and a prohibitively low priority to package versions from "
+"other <literal>Debian</literal> distributions. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Die folgende APT-Einstellungsdatei wird APT veranlassen, Paketversionen der "
+"<literal>testing</literal>-Distribution eine hohe Priorität, Paketversionen "
+"der <literal>unstable</literal>-Distribution eine niedrigere Priorität und "
+"eine ungeheuer niedrige Priorität zu Paketversionen von anderen "
+"<literal>Debian</literal>-Distributionen zuzuweisen. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>testing</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+"Mit einer geeigneten &sources-list;-Datei und der obigen Einstellungsdatei "
+"wird jeder der folgenden Befehle APT veranlassen, ein Upgrade auf die "
+"neuste(n) <literal>testing</literal>-Version(en) durchzuführen. <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/unstable\n"
+msgstr "apt-get install <replaceable>Paket</replaceable>/unstable\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>unstable</literal> distribution. "
+"Thereafter, <command>apt-get upgrade</command> will upgrade the package to "
+"the most recent <literal>testing</literal> version if that is more recent "
+"than the installed version, otherwise, to the most recent <literal>unstable</"
+"literal> version if that is more recent than the installed version. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Der folgende Befehl wird APT veranlassen, ein Upgrade des angegebenen Pakets "
+"auf die neuste Version der <literal>unstable</literal>-Distribution "
+"durchzuführen. Danach wird <command>apt-get upgrade</command> ein Upgrade "
+"des Pakets auf die aktuellste <literal>testing</literal>-Version "
+"durchführen, falls diese aktueller als die installierte Version ist, "
+"andernfalls auf die aktuellste <literal>unstable</literal>-Version, wenn "
+"diese aktueller als die installierte Version ist. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking the evolution of a codename release"
+msgstr "Die Entwicklung eines Codename-Releases verfolgen"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated package versions\n"
+"Explanation: other than those in the distribution codenamed with &debian-testing-codename; or sid\n"
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+"\n"
+"Explanation: Debian unstable is always codenamed with sid\n"
+"Package: *\n"
+"Pin: release n=sid\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Explanation: Deinstallieren oder nicht installieren von anderen von Debian\n"
+"Explanation: stammenden Paketversionen als denen der &debian-testing-codename;-\n"
+"Explanation: oder Sid-Distribution\n"
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+"\n"
+"Explanation: Debian-Unstable hat immer den Codenamen sid\n"
+"Package: *\n"
+"Pin: release a=sid\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"specified codename of a distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> distributions, "
+"codenames and archives. Note that with this APT preference APT will follow "
+"the migration of a release from the archive <literal>testing</literal> to "
+"<literal>stable</literal> and later <literal>oldstable</literal>. If you "
+"want to follow for example the progress in <literal>testing</literal> "
+"notwithstanding the codename changes you should use the example "
+"configurations above. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Die folgende APT-Einstellungsdatei wird APT veranlassen, allen Paketen, die "
+"zu einem bestimmten Codenamen einer Distribution gehören, eine höhere "
+"Priorität als die Vorgabe (500) zu geben und Paketversionen, die zu anderen "
+"<literal>Debian</literal>-Distributionen, Codenamen und Archiven gehören, "
+"eine ungeheuer niedrige Priorität zu geben. Beachten Sie, dass APT mit "
+"diesen APT-Einstellungen der Migration eines Releases vom Archiv "
+"<literal>testing</literal> zu <literal>stable</literal> und später zu "
+"<literal>oldstable</literal> folgen wird. Wenn Sie zum Beispiel dem "
+"Fortschritt in <literal>testing</literal> folgen möchten, obwohl der "
+"Codename sich ändert, sollten Sie die Beispielkonfigurationen oberhalb "
+"benutzen. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest version(s) in "
+"the release codenamed with <literal>&debian-testing-codename;</literal>. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Mit einer geeigneten &sources-list;-Datei und der obigen Einstellungsdatei "
+"wird jeder der folgenden Befehle APT veranlassen, ein Upgrade auf die "
+"letzte(n) Version(en) im Release mit Codenamen <literal>&debian-testing-"
+"codename;</literal> durchzuführen. <placeholder type=\"programlisting\" id="
+"\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/sid\n"
+msgstr "apt-get install <replaceable>Paket</replaceable>/sid\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>sid</literal> distribution. Thereafter, "
+"<command>apt-get upgrade</command> will upgrade the package to the most "
+"recent <literal>&debian-testing-codename;</literal> version if that is more "
+"recent than the installed version, otherwise, to the most recent "
+"<literal>sid</literal> version if that is more recent than the installed "
+"version. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Der folgende Befehl wird APT veranlassen, ein Upgrade des angegebenen Pakets "
+"auf die letzte Version der <literal>sid</literal>-Distribution "
+"durchzuführen. Danach wird <command>apt-get upgrade</command> ein Upgrade "
+"des Pakets auf die aktuellste <literal>&debian-testing-codename;</literal>-"
+"Version durchführen, wenn diese aktueller als die installierte Version ist, "
+"andernfalls auf die aktuellste <literal>sid</literal>-Version, wenn diese "
+"aktueller als die installierte Version ist. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: sources.list.5.xml
+msgid "List of configured APT data sources"
+msgstr "Liste konfigurierter APT-Datenquellen"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The source list <filename>/etc/apt/sources.list</filename> and the files "
+"contained in <filename>/etc/apt/sources.list.d/</filename> are designed to "
+"support any number of active sources and a variety of source media. The "
+"files list one source per line (one-line style) or contain multiline stanzas "
+"defining one or more sources per stanza (deb822 style), with the most "
+"preferred source listed first (in case a single version is available from "
+"more than one source). The information available from the configured sources "
+"is acquired by <command>apt-get update</command> (or by an equivalent "
+"command from another APT front-end)."
+msgstr ""
+"Die Quellenliste <filename>/etc/apt/sources.list</filename> und die in "
+"<filename>/etc/apt/sources.list.d/</filename> enthaltenen Dateien wurden "
+"entworfen, um eine beliebige Anzahl aktiver Quellen und unterschiedlicher "
+"Quellmedien zu unterstützen. Die Dateien führen eine Quelle je Zeile auf "
+"(einzeiliger Stil) oder enthalten mehrzeilige Absätze, die eine oder mehrere "
+"Quellen pro Absatz definieren (Deb822-Stil), bei der die bevorzugte Quelle "
+"zuerst aufgeführt wird (im Fall, dass eine einzelne Version von mehr als "
+"einer Quelle verfügbar ist). Die Informationen über die konfigurierten "
+"Quellen werden durch <command>apt-get update</command> (oder einem "
+"vergleichbaren Befehl einer anderen APT-Oberfläche) beschafft."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "sources.list.d"
+msgstr "sources.list.d"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The <filename>/etc/apt/sources.list.d</filename> directory provides a way to "
+"add sources.list entries in separate files. Two different file formats are "
+"allowed as described in the next two sections. Filenames need to have "
+"either the extension <filename>.list</filename> or <filename>.sources</"
+"filename> depending on the contained format. The filenames may only contain "
+"letters (a-z and A-Z), digits (0-9), underscore (_), hyphen (-) and period "
+"(.) characters. Otherwise APT will print a notice that it has ignored a "
+"file, unless that file matches a pattern in the <literal>Dir::Ignore-Files-"
+"Silently</literal> configuration list - in which case it will be silently "
+"ignored."
+msgstr ""
+"Das Verzeichnis <filename>/etc/apt/sources.list.d</filename> stellt eine "
+"Möglichkeit bereit, sources.list-Einträge in separaten Dateien hinzuzufügen. "
+"Zwei verschiedene Formate sind, wie in den beiden nächsten Abschnitten "
+"erklärt, erlaubt. Dateinamen müssen abhängig vom enthaltenen Format entweder "
+"eine <filename>.list</filename>- oder <filename>.sources</filename>-Endung "
+"haben. Die Dateinamen dürfen nur Buchstaben (a-z und A-Z), Ziffern (0-9), "
+"Unterstrich (_), Bindestrich (-) und Punkt (.) enthalten. Andernfalls wird "
+"APT einen Hinweis ausgeben, dass es eine Datei ignoriert hat, falls die "
+"Datei nicht auf ein Muster in der Konfigurationsliste <literal>Dir::Ignore-"
+"Files-Silently</literal> passt – in diesem Fall wird sie stillschweigend "
+"ignoriert."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "One-Line-Style Format"
+msgstr "Format mit einzeiligem Stil"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Files in this format have the extension <filename>.list</filename>. Each "
+"line specifying a source starts with a type (e.g. <literal>deb-src</"
+"literal>) followed by options and arguments for this type. Individual "
+"entries cannot be continued onto a following line. Empty lines are ignored, "
+"and a <literal>#</literal> character anywhere on a line marks the remainder "
+"of that line as a comment. Consequently an entry can be disabled by "
+"commenting out the entire line. If options should be provided they are "
+"separated by spaces and all of them together are enclosed by square brackets "
+"(<literal>[]</literal>) included in the line after the type separated from "
+"it with a space. If an option allows multiple values these are separated "
+"from each other with a comma (<literal>,</literal>). An option name is "
+"separated from its value(s) by an equals sign (<literal>=</literal>). "
+"Multivalue options also have <literal>-=</literal> and <literal>+=</literal> "
+"as separators, which instead of replacing the default with the given "
+"value(s) modify the default value(s) to remove or include the given values."
+msgstr ""
+"Dateien in diesem Format haben die Endung<filename>.list</filename>. Jede "
+"Zeile, die eine Quelle angibt, beginnt mit einem Typ (z.B. <literal>deb-src</"
+"literal>), gefolgt von Optionen und Argumenten für diesen Typ. Individuelle "
+"Einträge können nicht auf einer Folgezeile fortgesetzt werden. Leere Zeilen "
+"werden ignoriert und ein <literal>#</literal>-Zeichen irgendwo in einer "
+"Zeile kennzeichnet den Rest der Zeile als Kommentar. Ein Eintrag kann "
+"folglich durch Auskommentieren der ganzen Zeile deaktiviert werden. Falls "
+"Optionen bereitgestellt werden sollen, werden sie durch Leerräume getrennt "
+"und alle zusammen in quadratische Klammern (<literal>[]</literal>) "
+"eingeschlossen. Sie sind in der Zeile nach dem Typ enthalten und mit einem "
+"Leerraum von ihm getrennt. Falls eine Option mehrere Werte erlaubt, werden "
+"diese voneinander per Komma (<literal>,</literal>) getrennt. Ein Optionsname "
+"wird von seinem (seinen) Wert(en) durch ein Gleichheitszeichen (<literal>=</"
+"literal>) getrennt. Optionen mit mehreren Werten haben außerdem <literal>-=</"
+"literal> und <literal>+=</literal> als Trenner, die statt den vorgegebenen "
+"Wert durch den (die) angegebenen Wert(e) zu ersetzen, den vorgegebenen Wert "
+"selbst ändern oder entfernen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This is the traditional format and supported by all apt versions. Note that "
+"not all options as described below are supported by all apt versions. Note "
+"also that some older applications parsing this format on their own might not "
+"expect to encounter options as they were uncommon before the introduction of "
+"multi-architecture support."
+msgstr ""
+"Dies ist das traditionelle, von allen APT-Versionen unterstützte Format. "
+"Beachten Sie, dass nicht alle unten beschriebenen Optionen von allen "
+"Versionen von APT unterstützt werden. Beachten Sie außerdem, dass einige "
+"ältere Anwendungen dieses Format selbst auswerten und nicht erwarten, dass "
+"Optionen auftauchen, da diese vor der Einführung der Unterstützung mehrerer "
+"Architekturen nicht üblich waren."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "deb822-Style Format"
+msgstr "Format im Deb822-Stil"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Files in this format have the extension <filename>.sources</filename>. The "
+"format is similar in syntax to other files used by Debian and its "
+"derivatives, such as the metadata files that apt will download from the "
+"configured sources or the <filename>debian/control</filename> file in a "
+"Debian source package. Individual entries are separated by an empty line; "
+"additional empty lines are ignored, and a <literal>#</literal> character at "
+"the start of the line marks the entire line as a comment. An entry can hence "
+"be disabled by commenting out each line belonging to the stanza, but it is "
+"usually easier to add the field \"Enabled: no\" to the stanza to disable the "
+"entry. Removing the field or setting it to yes reenables it. Options have "
+"the same syntax as every other field: A fieldname separated by a colon "
+"(<literal>:</literal>) and optionally spaces from its value(s). Note "
+"especially that multiple values are separated by spaces, not by commas as in "
+"the one-line format. Multivalue fields like <literal>Architectures</literal> "
+"also have <literal>Architectures-Add</literal> and <literal>Architectures-"
+"Remove</literal> to modify the default value rather than replacing it."
+msgstr ""
+"Dateien in diesem Format haben die Endung<filename>.sources</filename>. Die "
+"Syntax des Formates ist dem ähnlich, was andere von Debian und seinen "
+"Derivaten benutzte Dateien verwenden, wie Metadatendateien, die APT von den "
+"konfigurierten Quellen herunterlädt oder der Datei <filename>debian/control</"
+"filename> in einem Debian-Quellpaket. Individuelle Einträge werden durch "
+"eine leere Zeile getrennt: Zusätzliche leere Zeilen werden ignoriert und "
+"<literal>#</literal>-Zeichen am Anfang einer Zeile kennzeichnen die ganze "
+"Zeile als Kommentar. Ein Eintrag kann daher deaktiviert werden, indem jede "
+"Zeile, die zum Absatz gehört, auskommentiert wird. Es ist üblicherweise "
+"jedoch einfacher, dem Absatz das Feld »Enabled: no« hinzuzufügen, um den "
+"Eintrag zu deaktivieren. Durch Entfernen des Feldes oder indem es auf »yes« "
+"gesetzt wird, wird es wieder aktiviert. Optionen haben dieselbe Syntax wie "
+"jedes andere Feld: ein Feldname, durch einen Doppelpunkt (<literal>:</"
+"literal>) und optionale Leerräume von ihren (ihrem) Wert(en) getrennt. "
+"Beachten Sie insbesondere, dass mehrere Werte durch Leerräume getrennt "
+"werden, nicht durch Kommas, wie im einzeiligen Format. Felder mit mehreren "
+"Werten wie <literal>Architectures</literal> haben obendrein "
+"<literal>Architectures-Add</literal> und <literal>Architectures-Remove</"
+"literal>, um den Vorgabewert zu ändern, statt ihn zu ersetzen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This is a new format supported by apt itself since version 1.1. Previous "
+"versions ignore such files with a notice message as described earlier. It "
+"is intended to make this format gradually the default format, deprecating "
+"the previously described one-line-style format, as it is easier to create, "
+"extend and modify for humans and machines alike especially if a lot of "
+"sources and/or options are involved. Developers who are working with and/or "
+"parsing apt sources are highly encouraged to add support for this format and "
+"to contact the APT team to coordinate and share this work. Users can freely "
+"adopt this format already, but may encounter problems with software not "
+"supporting the format yet."
+msgstr ""
+"Dies ist ein neues Format, das von APT selbst seit Version 1.1. unterstützt "
+"wird. Ältere Versionen ignorieren solche Dateien, wie vorher beschrieben, "
+"mit einer Benachrichtigung. Es ist vorgesehen, dieses Format schrittweise "
+"zum Standardformat zu machen und das vorher beschriebene Format mit dem "
+"einzeiligen Stil zu missbilligen, da das neue für Menschen einfacher zu "
+"erstellen, zu erweitern und zu ändern ist. Dies trifft für Maschinen ebenso "
+"zu, insbesondere dann, wenn viele Quellen und/oder Optionen beteiligt sind. "
+"Entwickler, die mit APT-Quellen arbeiten und/oder sie auswerten, sind "
+"dringend ermutigt, dieses Format zu unterstützen und das APT-Team zu "
+"kontaktieren, um diese Arbeit zu koordinieren und weiterzugeben. Benutzer "
+"können dieses Format bereits übernehmen, es könnten jedoch Probleme mit "
+"Software auftreten, die dieses Format noch nicht unterstützen."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "The deb and deb-src Types: General Format"
+msgstr "Die Typen »deb« und »deb-src«: allgemeines Format"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The <literal>deb</literal> type references a typical two-level Debian "
+"archive, <filename>distribution/component</filename>. The "
+"<literal>distribution</literal> is generally a suite name like "
+"<literal>stable</literal> or <literal>testing</literal> or a codename like "
+"<literal>&debian-stable-codename;</literal> or <literal>&debian-testing-"
+"codename;</literal> while component is one of <literal>main</literal>, "
+"<literal>contrib</literal> or <literal>non-free</literal>. The <literal>deb-"
+"src</literal> type references a Debian distribution's source code in the "
+"same form as the <literal>deb</literal> type. A <literal>deb-src</literal> "
+"line is required to fetch source indexes."
+msgstr ""
+"Der <literal>deb</literal>-Typ beschreibt ein typisches zweistufiges Debian-"
+"Archiv, <filename>Distribution/Komponente</filename>. <literal>Distribution</"
+"literal> ist typischerweise eine Suite wie <literal>stable</literal> oder "
+"<literal>testing</literal> oder ein Codename wie <literal>&debian-stable-"
+"codename;</literal> oder <literal>&debian-testing-codename;</literal> "
+"während Komponente entweder <literal>main</literal>, <literal>contrib</"
+"literal> oder <literal>non-free</literal> ist. Der <literal>deb-src</"
+"literal>-Typ beschreibt den Quellcode einer Debian-Distribution in der "
+"gleichen Form wie den <literal>deb</literal>-Typ. Eine <literal>deb-src</"
+"literal>-Zeile wird benötigt, um Quellindizes herunterzuladen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The format for two one-line-style entries using the <literal>deb</literal> "
+"and <literal>deb-src</literal> types is:"
+msgstr ""
+"Das Format für zwei Einträge im einzeiligen Stil, die die <literal>deb</"
+"literal>- und <literal>deb-src</literal>-Typen benutzen, ist:"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]\n"
+"deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]"
+msgstr ""
+"deb [ Option1=Wert1 Option2=Wert2 ] URI Suite [Bestandteil1] [Bestandteil2] […]\n"
+"deb-src [ Option1=Wert1 Option2=Wert2 ] URI Suite [Bestandteil1] [Bestandteil2] […]"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+" Types: deb deb-src\n"
+" URIs: uri\n"
+" Suites: suite\n"
+" Components: [component1] [component2] [...]\n"
+" option1: value1\n"
+" option2: value2\n"
+" "
+msgstr ""
+" Types: deb deb-src\n"
+" URIs: URI\n"
+" Suites: Suite\n"
+" Components: [Bestandteil1] [Bestandteil2] […]\n"
+" Option1: Wert1\n"
+" Option2: Wert2\n"
+" "
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Alternatively the equivalent entry in deb822 style looks like this: "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
+msgstr ""
+"Der alternative Eintrag sieht im Format des Deb822-Stils etwa so aus: "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The URI for the <literal>deb</literal> type must specify the base of the "
+"Debian distribution, from which APT will find the information it needs. "
+"<literal>suite</literal> can specify an exact path, in which case the "
+"components must be omitted and <literal>suite</literal> must end with a "
+"slash (<literal>/</literal>). This is useful for the case when only a "
+"particular sub-directory of the archive denoted by the URI is of interest. "
+"If <literal>suite</literal> does not specify an exact path, at least one "
+"<literal>component</literal> must be present."
+msgstr ""
+"Der URI für den <literal>deb</literal>-Typ muss die Basis der Debian-"
+"Distribution angeben, wo APT die Informationen findet, die es benötigt. "
+"<literal>Suite</literal> kann einen genauen Pfad angeben. In diesem Fall "
+"müssen die Komponenten weggelassen werden und <literal>Suite</literal> muss "
+"mit einem Schrägstrich (<literal>/</literal>) enden. Dies ist nützlich, wenn "
+"nur ein bestimmtes Unterverzeichnis des vom URI angegebenen Archivs von "
+"Interesse ist. Wenn <literal>Suite</literal> keinen genauen Pfad angibt, "
+"muss mindestens eine <literal>Komponente</literal> angegeben sein."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"<literal>suite</literal> may also contain a variable, <literal>$(ARCH)</"
+"literal> which expands to the Debian architecture (such as <literal>amd64</"
+"literal> or <literal>armel</literal>) used on the system. This permits "
+"architecture-independent <filename>sources.list</filename> files to be used. "
+"In general this is only of interest when specifying an exact path; "
+"<literal>APT</literal> will automatically generate a URI with the current "
+"architecture otherwise."
+msgstr ""
+"<literal>Suite</literal> könnte außerdem eine Variable, <literal>$(ARCH)</"
+"literal>, enthalten, die zur Debian-Architektur (wie <literal>amd64</"
+"literal> oder <literal>armel</literal>) expandiert wird, die auf dem System "
+"benutzt wird. Dies erlaubt es, architekturunabhängige <filename>sources."
+"list</filename>-Dateien zu benutzen. Im Allgemeinen ist dies nur von "
+"Interesse, wenn ein genauer Pfad angegeben wird, andernfalls wird "
+"<literal>APT</literal> automatisch einen URI mit der aktuellen Architektur "
+"generieren."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Especially in the one-line-style format since only one distribution can be "
+"specified per line it may be necessary to have multiple lines for the same "
+"URI, if a subset of all available distributions or components at that "
+"location is desired. APT will sort the URI list after it has generated a "
+"complete set internally, and will collapse multiple references to the same "
+"Internet host, for instance, into a single connection, so that it does not "
+"inefficiently establish a connection, close it, do something else, and then "
+"re-establish a connection to that same host. APT also parallelizes "
+"connections to different hosts to more effectively deal with sites with low "
+"bandwidth."
+msgstr ""
+"Insbesondere im Format im einzeiligen Stil könnte es nötig sein, da pro "
+"Zeile nur eine Distribution angegeben werden kann, mehrere Zeilen für den "
+"gleichen URI zu haben, falls eine Untermenge aller verfügbarer "
+"Distributionen oder Komponenten von diesem Ort gewünscht wird. APT wird die "
+"URI-Liste sortieren, nachdem es intern eine komplette Zusammenstellung "
+"generiert hat und es wird mehrere Bezüge zum gleichen Internet-Rechner "
+"zusammenfassen, zum Beispiel zu einer einzigen Verbindung, so dass es keine "
+"ineffiziente Verbindunge herstellt, sie schließt, sonst etwas tut und dann "
+"erneut eine Verbindung zum gleichen Rechner herstellt. APT parallelisiert "
+"außerdem Verbindungen zu verschiedenen Rechnern, um effektiver mit Orten "
+"niedriger Bandbreite umzugehen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"It is important to list sources in order of preference, with the most "
+"preferred source listed first. Typically this will result in sorting by "
+"speed from fastest to slowest (CD-ROM followed by hosts on a local network, "
+"followed by distant Internet hosts, for example)."
+msgstr ""
+"Es ist wichtig, die Quellen in der Reihenfolge ihrer Wichtigkeit "
+"aufzulisten, die bevorzugte Quelle zuerst. Typischerweise resultiert dies in "
+"einer Sortierung nach Geschwindigkeit, vom schnellsten zum langsamsten (CD-"
+"ROM, gefolgt von Rechnern im lokalen Netzwerk, gefolgt von Internet-"
+"Rechnern, zum Beispiel)."
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "&sourceslist-list-format;"
+msgstr "&sourceslist-list-format;"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "&sourceslist-sources-format;"
+msgstr "&sourceslist-sources-format;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"As an example, the sources for your distribution could look like this in one-"
+"line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or like "
+"this in deb822 style format: <placeholder type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+"Die Quellen für Ihre Distribution könnten zum Beispiel im Format mit "
+"einzeiligem Stil so aussehen: <placeholder type=\"literallayout\" id=\"0\"/> "
+"oder im Format mit Deb822-Stil so: <placeholder type=\"literallayout\" id="
+"\"1\"/>."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "The deb and deb-src types: Options"
+msgstr "Die Typen deb und deb-src: Optionen"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Each source entry can have options specified to modify which source is "
+"accessed and how data is acquired from it. Format, syntax and names of the "
+"options vary between the one-line-style and deb822-style formats as "
+"described, but they both have the same options available. For simplicity we "
+"list the deb822 fieldname and provide the one-line name in brackets. "
+"Remember that besides setting multivalue options explicitly, there is also "
+"the option to modify them based on the default, but we aren't listing those "
+"names explicitly here. Unsupported options are silently ignored by all APT "
+"versions."
+msgstr ""
+"Jeder Quelleneintrag kann Optionen haben, die angegeben wurden, um zu "
+"ändern, auf welche Quelle zugegriffen wird und wie Daten von ihr beschafft "
+"werden. Format, Syntax und Namen der Optionen weichen, wie beschrieben, "
+"zwischen dem Format mit einzeiligem Stil und dem Format mit Deb822-Stil "
+"voneinander ab, für beide sind jedoch dieselben Optionen verfügbar. Der "
+"Einfachheit halber wird der Deb822-Feldname aufgeführt und der einzeilige "
+"Name in Klammern bereitgestellt. Denken Sie daran, dass Sie ergänzend zum "
+"expliziten Setzen von Optionen mit mehreren Werten auch die Möglichkeit "
+"haben, sie basierend auf dem Vorgabewert zu ändern, aber diese Namen werden "
+"hier nicht explizit aufgeführt. Nicht unterstützte Optionen werden "
+"stillschweigend von allen APT-Versionen ignoriert."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Architectures</option> (<option>arch</option>) is a multivalue "
+"option defining for which architectures information should be downloaded. If "
+"this option isn't set the default is all architectures as defined by the "
+"<option>APT::Architectures</option> config option."
+msgstr ""
+"<option>Architectures</option> (<option>arch</option>) ist eine Option mit "
+"mehreren Werten, die definiert, für welche Architekturen Informationen "
+"heruntergeladen werden sollen. Falls diese Option nicht gesetzt ist, ist die "
+"Voreinstellung »alle Architekturen«. Dies wird durch die "
+"Konfigurationsoption <option>APT::Architectures</option> definiert."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Languages</option> (<option>lang</option>) is a multivalue option "
+"defining for which languages information such as translated package "
+"descriptions should be downloaded. If this option isn't set the default is "
+"all languages as defined by the <option>Acquire::Languages</option> config "
+"option."
+msgstr ""
+"<option>Languages</option> (<option>lang</option>) ist eine Option mit "
+"mehreren Werten, die definiert, welche Sprachinformationen, wie etwa "
+"übersetzte Paketbeschreibungen, heruntergeladen werden sollen. Falls diese "
+"Option nicht gesetzt ist, werden alle durch die Konfigurationsoption "
+"<option>Acquire::Languages</option> definierten Sprachen heruntergeladen."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Targets</option> (<option>target</option>) is a multivalue option "
+"defining which download targets apt will try to acquire from this source. If "
+"not specified, the default set is defined by the <option>Acquire::"
+"IndexTargets</option> configuration scope (targets are specified by their "
+"name in the <literal>Created-By</literal> field). Additionally, targets can "
+"be enabled or disabled by using the <literal>Identifier</literal> field as "
+"an option with a boolean value instead of using this multivalue option."
+msgstr ""
+"<option>Targets</option> (<option>target</option>) ist eine Option mit "
+"mehreren Werten, die definiert, welche Herunterladeziele APT aus dieser "
+"Quelle versucht zu beschaffen. Ist sie nicht angegeben, wird die "
+"Voreinstellung durch den Konfigurationsbereich <option>Acquire::"
+"IndexTargets</option> spezifiziert (Ziele werden im Feld <literal>Created-"
+"By</literal> durch ihren Namen angegeben). Außerdem können Ziele mittels des "
+"Felds <literal>Identifier</literal> als Option mit einem Wahrheitswert "
+"aktiviert oder deaktiviert werden, anstatt diese Option mit mehreren Werten "
+"zu benutzen."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>PDiffs</option> (<option>pdiffs</option>) is a yes/no value which "
+"controls if APT should try to use PDiffs to update old indexes instead of "
+"downloading the new indexes entirely. The value of this option is ignored if "
+"the repository doesn't announce the availability of PDiffs. Defaults to the "
+"value of the option with the same name for a specific index file defined in "
+"the <option>Acquire::IndexTargets</option> scope, which itself defaults to "
+"the value of configuration option <option>Acquire::PDiffs</option> which "
+"defaults to <literal>yes</literal>."
+msgstr ""
+"<option>PDiffs</option> (<option>pdiffs</option>) ist ein yes-/no- (Ja-/"
+"Nein-)Wert, der steuert, ob APT versuchen soll, PDiffs zum Aktualisieren "
+"alter Indexe zu benutzen, statt die ganzen neuen Indexe herunterzuladen. Der "
+"Wert dieser Option wird ignoriert, falls das Depot die Verfügbarkeit von "
+"PDiffs nicht ankündigt. Sie ist auf den Wert der Option mit demselben Namen "
+"für eine bestimmte Indexdatei voreingestellt, die im Gültigkeitsbereich "
+"<option>Acquire::IndexTargets</option> definiert ist und die Ihrerseits "
+"wiederum auf den Wert der Konfigurationsoption <option>Acquire::PDiffs</"
+"option> voreingestellt ist, deren Vorgabe <literal>yes</literal> ist."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>By-Hash</option> (<option>by-hash</option>) can have the value "
+"<literal>yes</literal>, <literal>no</literal> or <literal>force</literal> "
+"and controls if APT should try to acquire indexes via a URI constructed from "
+"a hashsum of the expected file instead of using the well-known stable "
+"filename of the index. Using this can avoid hashsum mismatches, but requires "
+"a supporting mirror. A <literal>yes</literal> or <literal>no</literal> value "
+"activates/disables the use of this feature if this source indicates support "
+"for it, while <literal>force</literal> will enable the feature regardless of "
+"what the source indicates. Defaults to the value of the option of the same "
+"name for a specific index file defined in the <option>Acquire::IndexTargets</"
+"option> scope, which itself defaults to the value of configuration option "
+"<option>Acquire::By-Hash</option> which defaults to <literal>yes</literal>."
+msgstr ""
+"<option>By-Hash</option> (<option>by-hash</option>) kann die Werte "
+"<literal>yes</literal>, <literal>no</literal> oder <literal>force</literal> "
+"haben und steuert, ob APT versuchen sollte, Indexe über einen URI zu "
+"beschaffen, der aus einer Hash-Summe der erwarteten Datei konstruiert wird, "
+"statt über einen gut bekannten stabilen Dateinamen. Damit können unpassende "
+"Hash-Summen vermeiden werden, dies erfordert jedoch einen Spiegelserver, der "
+"dies unterstützt. Ein <literal>yes</literal>- oder <literal>no</literal>-"
+"Wert aktiviert/deaktiviert die Verwendung dieser Funktionalität, falls diese "
+"Quelle ihre Unterstützung anzeigt, während <literal>force</literal> die "
+"Funktionalität ungeachtet der Angabe der Quelle aktiviert. Sie ist auf den "
+"Wert der Option mit demselben Namen für eine bestimmte Indexdatei "
+"voreingestellt, die im Gültigkeitsbereich <option>Acquire::IndexTargets</"
+"option> definiert ist und die ihrerseits wiederum auf den Wert der "
+"Konfigurationsoption <option>Acquire::By-Hash</option> voreingestellt ist, "
+"deren Vorgabe <literal>yes</literal> ist."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Furthermore, there are options which if set affect <emphasis>all</emphasis> "
+"sources with the same URI and Suite, so they have to be set on all such "
+"entries and can not be varied between different components. APT will try to "
+"detect and error out on such anomalies."
+msgstr ""
+"Ãœberdies gibt es Optionen, die, falls sie gesetzt sind, <emphasis>alle</"
+"emphasis> Quellen mit demselben URI und derselben Suite beeinflussen, daher "
+"müssen sie auf alle solchen Einträgen gesetzt werden und können sich nicht "
+"zwischen verschiedenen Bestandteilen unterscheiden. APT wird versuchen, "
+"solche Anomalien aufzuspüren und Fehler auszugeben."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Allow-Insecure</option> (<option>allow-insecure</option>), "
+"<option>Allow-Weak</option> (<option>allow-weak</option>) and <option>Allow-"
+"Downgrade-To-Insecure</option> (<option>allow-downgrade-to-insecure</"
+"option>) are boolean values which all default to <literal>no</literal>. If "
+"set to <literal>yes</literal> they circumvent parts of &apt-secure; and "
+"should therefore not be used lightly!"
+msgstr ""
+"<option>Allow-Insecure</option> (<option>allow-insecure</option>), "
+"<option>Allow-Weak</option> (<option>allow-weak</option>) und <option>Allow-"
+"Downgrade-To-Insecure</option> (<option>allow-downgrade-to-insecure</"
+"option>) sind Wahrheitswerte, deren Voreinstellung <literal>no</literal> "
+"ist. Falls sie auf <literal>yes</literal> gesetzt sind, umgehen sie Teile "
+"von &apt-secure; und sollten daher nicht leichtfertig benutzt werden."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Trusted</option> (<option>trusted</option>) is a tri-state value "
+"which defaults to APT deciding if a source is considered trusted or if "
+"warnings should be raised before e.g. packages are installed from this "
+"source. This option can be used to override that decision. The value "
+"<literal>yes</literal> tells APT always to consider this source as trusted, "
+"even if it doesn't pass authentication checks. It disables parts of &apt-"
+"secure;, and should therefore only be used in a local and trusted context "
+"(if at all) as otherwise security is breached. The value <literal>no</"
+"literal> does the opposite, causing the source to be handled as untrusted "
+"even if the authentication checks passed successfully. The default value "
+"can't be set explicitly."
+msgstr ""
+"<option>Trusted</option> (<option>trusted</option>) ist ein Wert, der drei "
+"Status annehmen kann. APT entscheidet standardmäßig, ob ein Paket als "
+"vertrauenswürdig angesehen wird oder ob eine Warnung erscheinen sollte, "
+"bevor z.B. Pakete aus dieser Quelle installiert werden. Diese Option kann "
+"benutzt werden, um diese Entscheidung außer Kraft zu setzen. Der Wert "
+"<literal>yes</literal> sagt APT, dass es diese Quelle immer als "
+"vertrauenswürdig ansehen soll, sogar dann, wenn sie die "
+"Authentifizierungsprüfungen nicht erfolgreich durchläuft. Sie deaktiviert "
+"Teile von &apt-secure; und sollte daher nur in einem lokalen und "
+"vertrauenswürdigen Umfeld (falls überhaupt) verwendet werden, da die "
+"Sicherheit andernfalls verletzt wird. Der Wert <literal>no</literal> tut das "
+"Gegenteil. Er sorgt dafür, dass die Quelle als nicht vertrauenswürdig "
+"behandelt wird, sogar dann, wenn sie die Authentifizierungsprüfungen "
+"erfolgreich durchläuft. Der Vorgabewert kann nicht explizit gesetzt werden."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Signed-By</option> (<option>signed-by</option>) is either an "
+"absolute path to a keyring file (has to be accessible and readable for the "
+"<literal>_apt</literal> user, so ensure everyone has read-permissions on the "
+"file) or one or more fingerprints of keys either in the <filename>trusted."
+"gpg</filename> keyring or in the keyrings in the <filename>trusted.gpg.d/</"
+"filename> directory (see <command>apt-key fingerprint</command>). If the "
+"option is set, only the key(s) in this keyring or only the keys with these "
+"fingerprints are used for the &apt-secure; verification of this repository. "
+"Defaults to the value of the option with the same name if set in the "
+"previously acquired <filename>Release</filename> file. Otherwise all keys "
+"in the trusted keyrings are considered valid signers for this repository."
+msgstr ""
+"<option>Signed-By</option> (<option>signed-by</option>) ist entweder ein "
+"absoluter Pfad zu einer Schlüsselbunddatei (muss für den Benutzer von "
+"<literal>_apt</literal> zugänglich und lesbar sein, sorgen Sie also dafür, "
+"dass jeder Leserechte an der Datei hat) oder einer oder mehrere "
+"Fingerabdrücke von Schlüsseln, die entweder im <filename>trusted.gpg</"
+"filename>-Schlüsselbund oder in den Schlüsselbunden im Verzeichnis "
+"<filename>trusted.gpg.d/</filename> liegen (siehe <command>apt-key "
+"fingerprint</command>). Falls die Option gesetzt ist, wird/werden nur der/"
+"die Schlüssel in diesem Schlüsselbund oder nur die Schlüssel mit diesen "
+"Fingerabdrücken für die &apt-secure;-Überprüfung dieses Depots benutzt. Sie "
+"ist auf den Wert der Option mit demselben Namen voreingestellt, falls sie in "
+"der vorher beschafften <filename>Release</filename>-Datei gesetzt ist. "
+"Andernfalls werden alle Schlüssel in den vertrauenswürdigen Schlüsselbunden "
+"als gültige Unterzeichner für dieses Depot angesehen."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Check-Valid-Until</option> (<option>check-valid-until</option>) is "
+"a yes/no value which controls if APT should try to detect replay attacks. A "
+"repository creator can declare a time until which the data provided in the "
+"repository should be considered valid, and if this time is reached, but no "
+"new data is provided, the data is considered expired and an error is "
+"raised. Besides increasing security, as a malicious attacker can't send old "
+"data forever to prevent a user from upgrading to a new version, this also "
+"helps users identify mirrors which are no longer updated. However, some "
+"repositories such as historic archives are not updated any more by design, "
+"so this check can be disabled by setting this option to <literal>no</"
+"literal>. Defaults to the value of configuration option <option>Acquire::"
+"Check-Valid-Until</option> which itself defaults to <literal>yes</literal>."
+msgstr ""
+"<option>Check-Valid-Until</option> (<option>check-valid-until</option>) ist "
+"ein yes-/no- (Ja-/Nein-)Wert, der steuert, ob APT versuchen soll, "
+"Wiederholungsangriffe aufzuspüren. Ein Depotersteller kann eine Zeit "
+"festlegen, bis zu der die im Depot bereitgestellten Daten als gültig "
+"angesehen werden und, falls dieser Zeitpunkt erreicht ist, aber keine neuen "
+"Daten bereitgestellt wurden, die Daten als ungültig angesehen werden und "
+"eine Fehlermeldung erscheint. Neben einer Steigerung der Sicherheit, da ein "
+"böswilliger Angreifer nie alte Daten senden kann, um einen Anwender vom "
+"Upgrade auf eine neue Version abzuhalten, hilft dies Benutzern auch, "
+"Spiegelserver zu erkennen, die nicht länger aktualisiert werden. Einige "
+"Depots, wie die historischen Archive, werden jedoch absichtlich nicht mehr "
+"aktualisiert, daher kann diese Prüfung durch Setzen dieser Option auf "
+"<literal>no</literal> deaktiviert werden. Voreingestellt ist der Wert der "
+"Konfigurationsoption <option>Acquire::Check-Valid-Until</option>, die "
+"ihrerseits die Voreinstellung <literal>yes</literal> hat."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Valid-Until-Min</option> (<option>valid-until-min</option>) and "
+"<option>Valid-Until-Max</option> (<option>valid-until-max</option>) can be "
+"used to raise or lower the time period in seconds in which the data from "
+"this repository is considered valid. -Max can be especially useful if the "
+"repository provides no Valid-Until field on its Release file to set your own "
+"value, while -Min can be used to increase the valid time on seldom updated "
+"(local) mirrors of a more frequently updated but less accessible archive "
+"(which is in the sources.list as well) instead of disabling the check "
+"entirely. Default to the value of the configuration options "
+"<option>Acquire::Min-ValidTime</option> and <option>Acquire::Max-ValidTime</"
+"option> which are both unset by default."
+msgstr ""
+"<option>Valid-Until-Min</option> (<option>valid-until-min</option>) und "
+"<option>Valid-Until-Max</option> (<option>valid-until-max</option>) können "
+"benutzt werden, um die Dauer in Sekunden zu verlängern oder zu verkürzen, in "
+"der die Daten des Depots als gültig angesehen werden. -Max kann insbesondere "
+"dann nützlich sein, wenn das Depot kein Valid-Until-Feld in seiner Release-"
+"Datei bereitstellt, mit dem Sie Ihren eigenen Wert setzen können, während -"
+"Min benutzt werden kann, um die Gültigkeitsdauer auf selten aktualisierten "
+"(lokalen) Spiegelservern für ein häufig aktualisiertes aber weniger oft "
+"erreichbares Archiv (das auch in der sources.list steht) zu erhöhen anstatt "
+"die Prüfung ganz zu deaktivieren. Voreingestellt sind die Werte der "
+"Konfigurationsoptionen <option>Acquire::Min-ValidTime</option> und "
+"<option>Acquire::Max-ValidTime</option>, die standardmäßig jeweils nicht "
+"gesetzt sind."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "URI Specification"
+msgstr "URI-Beschreibung"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "The currently recognized URI types are:"
+msgstr "Die derzeit zulässigen URI-Typen sind:"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The file scheme allows an arbitrary directory in the file system to be "
+"considered an archive. This is useful for NFS mounts and local mirrors or "
+"archives."
+msgstr ""
+"Das file-Schema erlaubt es einem beliebigen Verzeichnis im Dateisystem, als "
+"Archiv betrachtet zu werden. Dies ist nützlich für eingehängtes NFS und "
+"lokale Spiegel oder Archive."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The cdrom scheme allows APT to use a local CD-ROM drive with media swapping. "
+"Use the &apt-cdrom; program to create cdrom entries in the source list."
+msgstr ""
+"Das cdrom-Schema erlaubt APT ein lokales CD-ROM-Laufwerk mit Medienwechsel "
+"zu benutzen. Benutzen Sie das Programm &apt-cdrom;, um CD-ROM-Einträge in "
+"der Quellenliste zu erstellen."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The http scheme specifies an HTTP server for the archive. If an environment "
+"variable <envar>http_proxy</envar> is set with the format http://server:"
+"port/, the proxy server specified in <envar>http_proxy</envar> will be used. "
+"Users of authenticated HTTP/1.1 proxies may use a string of the format "
+"http://user:pass@server:port/. Note that this is an insecure method of "
+"authentication."
+msgstr ""
+"Das http-Schema gibt einen HTTP-Server für das Archiv an. Wenn eine "
+"Umgebungsvariable <envar>http_proxy</envar> mit dem Format http://Server:"
+"Port/ gesetzt ist, wird der in <envar>http_proxy</envar> angegebene Proxy-"
+"Server benutzt. Anwender eines HTTP/1.1-authentifizierten Proxys können eine "
+"Zeichenkette mit dem Format http://Anwender:Passwort@Server:Port/ benutzt. "
+"Beachten Sie, dass dies eine unsichere Authentifizierungsmethode ist."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The ftp scheme specifies an FTP server for the archive. APT's FTP behavior "
+"is highly configurable; for more information see the &apt-conf; manual page. "
+"Please note that an FTP proxy can be specified by using the "
+"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
+"HTTP proxy (HTTP proxy servers often understand FTP URLs) using this "
+"environment variable and <emphasis>only</emphasis> this environment "
+"variable. Proxies using HTTP specified in the configuration file will be "
+"ignored."
+msgstr ""
+"Das ftp-Schema gibt einen FTP-Server für das Archiv an. Das FTP-Verhalten "
+"von APT ist in hohem Maße konfigurierbar. Um weitere Informationen zu "
+"erhalten, lesen Sie die &apt-conf;-Handbuchseite. Bitte beachten Sie, dass "
+"ein FTP-Proxy durch Benutzung der <envar>ftp_proxy</envar>-"
+"Umgebungsvariablen angegeben werden kann. Es ist mittels dieser "
+"Umgebungsvariable und <emphasis>nur</emphasis> dieser Umgebungsvariable "
+"möglich, einen HTTP-Proxy anzugeben (HTTP-Proxy-Server verstehen oft auch "
+"FTP-URLs). FTP-Proxys, die gemäß Angabe in der Konfigurationsdatei HTTP "
+"benutzen, werden ignoriert."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The copy scheme is identical to the file scheme except that packages are "
+"copied into the cache directory instead of used directly at their location. "
+"This is useful for people using removable media to copy files around with "
+"APT."
+msgstr ""
+"Das copy-Schema ist identisch mit dem file-Schema, außer dass Pakete in das "
+"Zwischenspeicherverzeichnis kopiert werden, anstatt direkt von ihrem "
+"Herkunftsort benutzt zu werden. Dies ist für Leute nützlich, die "
+"Wechseldatenträger benutzen, um Dateien mit APT umherzukopieren."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
+"the files as a given user. Prior configuration of rhosts or RSA keys is "
+"recommended. The standard <command>find</command> and <command>dd</command> "
+"commands are used to perform the file transfers from the remote host."
+msgstr ""
+"Die rsh/ssh-Methode ruft RSH/SSH auf, um sich mit einem Rechner in der Ferne "
+"zu verbinden und als angegebener Benutzer auf die Dateien zuzugreifen. Es "
+"wird empfohlen, vorher Rhosts und RSA-Schlüssel zu konfigurieren. Für die "
+"Ãœbertragung von Dateien aus der Ferne werden die Standardbefehle "
+"<command>find</command> und <command>dd</command> verwandt."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
+#: sources.list.5.xml
+msgid "adding more recognizable URI types"
+msgstr "weitere zulässige URI-Typen hinzufügen"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"APT can be extended with more methods shipped in other optional packages, "
+"which should follow the naming scheme <package>apt-transport-"
+"<replaceable>method</replaceable></package>. For instance, the APT team "
+"also maintains the package <package>apt-transport-https</package>, which "
+"provides access methods for HTTPS URIs with features similar to the http "
+"method. Methods for using e.g. debtorrent are also available - see &apt-"
+"transport-debtorrent;."
+msgstr ""
+"APT kann mit weiteren Methoden, die in anderen optionalen Paketen geliefert "
+"werden, die dem Namensschema <literal>apt-transport-<replaceable>Methode</"
+"replaceable></literal> folgen sollten, erweitert werden. Das APT-Team "
+"betreut zum Beispiel außerdem das Paket <literal>apt-transport-https</"
+"literal>, das Zugriffsmethoden für HTTPS-URIs mit Funktionen bereitstellt, "
+"die denen der HTTP-Methode ähneln. Außerdem sind z.B. Methoden für die "
+"Benutzung von debtorrent verfügbar – siehe &apt-transport-debtorrent;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses the archive stored locally (or NFS mounted) at /home/apt/debian for "
+"stable/main, stable/contrib, and stable/non-free."
+msgstr ""
+"benutzt die lokal gespeicherten (oder per NFS eingehängten) Archive in /home/"
+"apt/debian für stable/main, stable/contrib und stable/non-free."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb file:/home/apt/debian stable main contrib non-free"
+msgstr "deb file:/home/apt/debian stable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: stable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: stable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "As above, except this uses the unstable (development) distribution."
+msgstr ""
+"wie oben, außer das dies die »unstable«- (Entwicklungs-) Distribution "
+"benutzt."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb file:/home/apt/debian unstable main contrib non-free"
+msgstr "deb file:/home/apt/debian unstable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "Sources specification for the above."
+msgstr "Quellenangabe für Obiges"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb-src file:/home/apt/debian unstable main contrib non-free"
+msgstr "deb-src file:/home/apt/debian unstable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb-src\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb-src\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The first line gets package information for the architectures in "
+"<literal>APT::Architectures</literal> while the second always retrieves "
+"<literal>amd64</literal> and <literal>armel</literal>."
+msgstr ""
+"Die erste Zeile bekommt Paketinformationen für die Architekturen in "
+"<literal>APT::Architectures</literal>, während die zweite immer "
+"<literal>amd64</literal> und <literal>armel</literal> holt."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main"
+msgstr ""
+"deb http://deb.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"\n"
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"Architectures: amd64 armel\n"
+msgstr ""
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"\n"
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"Architectures: amd64 armel\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to access the archive at archive.debian.org, and uses only the "
+"hamm/main area."
+msgstr ""
+"benutzt HTTP, um auf das Archiv auf archive.debian.org zuzugreifen und nur "
+"den hamm/main-Bereich zu benutzen."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb http://archive.debian.org/debian-archive hamm main"
+msgstr "deb http://archive.debian.org/debian-archive hamm main"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://archive.debian.org/debian-archive\n"
+"Suites: hamm\n"
+"Components: main"
+msgstr ""
+"Types: deb\n"
+"URIs: http://archive.debian.org/debian-archive\n"
+"Suites: hamm\n"
+"Components: main"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the &debian-stable-codename;/contrib area."
+msgstr ""
+"benutzt FTP, um auf das Archiv auf archive.debian.org unter dem debian-"
+"Verzeichnis zuzugreifen und nur den &debian-stable-codename;/contrib-Bereich "
+"zu benutzen."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: contrib"
+msgstr ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: contrib"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the unstable/contrib area. If this line appears as "
+"well as the one in the previous example in <filename>sources.list</filename> "
+"a single FTP session will be used for both resource lines."
+msgstr ""
+"benutzt FTP, um auf das Archiv auf ftp.debian.org unter dem debian-"
+"Verzeichnis zuzugreifen und nur den unstable/contrib-Bereich zu benutzen. "
+"Falls diese Zeile zusammen mit der aus dem vorherigen Beispiel in der Datei "
+"<filename>sources.list</filename> auftaucht, wird eine einzelne FTP-Sitzung "
+"für beide Quellzeilen benutzt."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian unstable contrib"
+msgstr "deb ftp://ftp.debian.org/debian unstable contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: unstable\n"
+"Components: contrib"
+msgstr ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: unstable\n"
+"Components: contrib"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+msgstr "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://ftp.tlh.debian.org/universe\n"
+"Suites: unstable/binary-$(ARCH)/"
+msgstr ""
+"Types: deb\n"
+"URIs: http://ftp.tlh.debian.org/universe\n"
+"Suites: unstable/binary-$(ARCH)/"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe "
+"directory, and uses only files found under <filename>unstable/binary-i386</"
+"filename> on i386 machines, <filename>unstable/binary-amd64</filename> on "
+"amd64, and so forth for other supported architectures. [Note this example "
+"only illustrates how to use the substitution variable; official debian "
+"archives are not structured like this] <placeholder type=\"literallayout\" "
+"id=\"0\"/> <placeholder type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+"benutzt HTTP, um auf das Archiv auf ftp.tlh.debian.org unter dem universe-"
+"Verzeichnis zuzugreifen und benutzt nur Dateien, die unter "
+"<filename>unstable/binary-i386</filename> auf i386-Maschinen, "
+"<filename>unstable/binary-amd64</filename> auf amd64 und so weiter für "
+"andere unterstützte Architekturen, gefunden werden. [Beachten Sie, dass "
+"dieses Beispiel nur anschaulich macht, wie die Platzhaltervariable benutzt "
+"wird. Offizielle Debian-Archive sind nicht so strukturiert.] <placeholder "
+"type=\"literallayout\" id=\"0\"/> <placeholder type=\"literallayout\" id="
+"\"1\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to get binary packages as well as sources from the stable, testing "
+"and unstable suites and the components main and contrib."
+msgstr ""
+"benutzt HTTP, um sowohl Binärpakete als auch Quellen von den Suites Stable, "
+"Testing, Unstable und den Bestandteilen Main und Contrib zu holen."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian stable main contrib\n"
+"deb-src http://deb.debian.org/debian stable main contrib\n"
+"deb http://deb.debian.org/debian testing main contrib\n"
+"deb-src http://deb.debian.org/debian testing main contrib\n"
+"deb http://deb.debian.org/debian unstable main contrib\n"
+"deb-src http://deb.debian.org/debian unstable main contrib"
+msgstr ""
+"deb http://deb.debian.org/debian stable main contrib\n"
+"deb-src http://deb.debian.org/debian stable main contrib\n"
+"deb http://deb.debian.org/debian testing main contrib\n"
+"deb-src http://deb.debian.org/debian testing main contrib\n"
+"deb http://deb.debian.org/debian unstable main contrib\n"
+"deb-src http://deb.debian.org/debian unstable main contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb deb-src\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: stable testing unstable\n"
+"Components: main contrib\n"
+msgstr ""
+"Types: deb deb-src\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: stable testing unstable\n"
+"Components: main contrib\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "&apt-get;, &apt-conf;, &apt-acquire-additional-files;"
+msgstr "&apt-get;, &apt-conf;, &apt-acquire-additional-files;"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt-extracttemplates.1.xml apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "1"
+msgstr "1"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-extracttemplates.1.xml
+msgid ""
+"Utility to extract <command>debconf</command> config and templates from "
+"Debian packages"
+msgstr ""
+"Hilfsprogramm zum Extrahieren der <command>debconf</command>-Konfiguration "
+"und Schablonen von Debian-Paketen"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"<command>apt-extracttemplates</command> will take one or more Debian package "
+"files as input and write out (to a temporary directory) all associated "
+"config scripts and template files. For each passed in package that contains "
+"config scripts and templates, one line of output will be generated in the "
+"format:"
+msgstr ""
+"<command>apt-extracttemplates</command> nimmt als Eingabe ein oder mehrere "
+"Debian-Paketdateien entgegen und schreibt alle verbundenen "
+"Konfigurationsskripte und Schablonendateien (in ein temporäres Verzeichnis) "
+"heraus. Für jedes übergebene Paket das Konfigurationsskripte und "
+"Schablonendateien enthält, wird eine Ausgabezeile in folgendem Format "
+"generiert:"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid "package version template-file config-script"
+msgstr "Paket Version Schablonendatei Konfigurationsskript"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"template-file and config-script are written to the temporary directory "
+"specified by the <option>-t</option> or <option>--tempdir</option> "
+"(<literal>APT::ExtractTemplates::TempDir</literal>) directory, with "
+"filenames of the form <filename>package.template.XXXXXX</filename> and "
+"<filename>package.config.XXXXXX</filename>"
+msgstr ""
+"Schablonendatei und Konfigurationsskript werden in das temporäre Verzeichnis "
+"geschrieben, das durch das Verzeichnis <option>-t</option> oder <option>--"
+"tempdir</option> (<literal>APT::ExtractTemplates::TempDir</literal>) mit "
+"Dateinamen der Form <filename>package. template.XXXXXX</filename> und "
+"<filename>package.config.XXXXXX</filename> angegeben wurde."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"Temporary directory in which to write extracted <command>debconf</command> "
+"template files and config scripts. Configuration Item: <literal>APT::"
+"ExtractTemplates::TempDir</literal>"
+msgstr ""
+"temporäres Verzeichnis, in das die extrahierten <command>debconf</command>-"
+"Schablonendateien und Konfigurationsdateien geschrieben werden. "
+"Konfigurationselement: <literal>APT::ExtractTemplates::TempDir</literal>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"<command>apt-extracttemplates</command> returns zero on normal operation, "
+"decimal 100 on error."
+msgstr ""
+"<command>apt-extracttemplates</command> gibt bei normalen Operationen 0 "
+"zurück, dezimal 100 bei Fehlern."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-sortpkgs.1.xml
+msgid "Utility to sort package index files"
+msgstr "Werkzeug zum Sortieren von Paketindexdateien"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"<command>apt-sortpkgs</command> will take an index file (source index or "
+"package index) and sort the records so that they are ordered by the package "
+"name. It will also sort the internal fields of each record according to the "
+"internal sorting rules."
+msgstr ""
+"<command>apt-sortpkgs</command> nimmt eine Indexdatei (Quell- oder "
+"Paketindex) und sortiert die Datensätze nach Paketnamen. Es wird außerdem "
+"die internen Felder jedes Datensatzes gemäß interner Sortierregeln sortieren."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"All output is sent to standard output; the input must be a seekable file."
+msgstr ""
+"Alle Ausgaben werden an die Standardausgabe gesandt, die Eingabe muss eine "
+"durchsuchbare Datei sein."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"Use source index field ordering. Configuration Item: <literal>APT::"
+"SortPkgs::Source</literal>."
+msgstr ""
+"Quellindexfeldanordnung benutzen. Konfigurationselement: <literal>APT::"
+"SortPkgs::Source</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"<command>apt-sortpkgs</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+"<command>apt-sortpkgs</command> gibt bei normalen Operationen 0 zurück, "
+"dezimal 100 bei Fehlern."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-ftparchive.1.xml
+msgid "Utility to generate index files"
+msgstr "Hilfsprogramm zum Generieren von Indexdateien"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> is the command line tool that generates "
+"the index files that APT uses to access a distribution source. The index "
+"files should be generated on the origin site based on the content of that "
+"site."
+msgstr ""
+"<command>apt-ftparchive</command> ist das Befehlszeilenwerkzeug, das "
+"Indexdateien generiert, die APT zum Zugriff auf eine Distributionsquelle "
+"benutzt. Die Indexdateien sollten auf der Ursprungs-Site auf Basis des "
+"Inhalts dieser Stelle generiert werden."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> is a superset of the &dpkg-scanpackages; "
+"program, incorporating its entire functionality via the <literal>packages</"
+"literal> command. It also contains a contents file generator, "
+"<literal>contents</literal>, and an elaborate means to 'script' the "
+"generation process for a complete archive."
+msgstr ""
+"<command>apt-ftparchive</command> ist eine Obermenge des &dpkg-scanpackages;-"
+"Programms, das dessen ganze Funktionalität über den <literal>packages</"
+"literal>-Befehl enthält ist ein durchdachtes Mittel den Generierungsprozess "
+"für ein komplettes Archiv zu »skripten«."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Internally <command>apt-ftparchive</command> can make use of binary "
+"databases to cache the contents of a .deb file and it does not rely on any "
+"external programs aside from &gzip;. When doing a full generate it "
+"automatically performs file-change checks and builds the desired compressed "
+"output files."
+msgstr ""
+"Intern kann <command>apt-ftparchive</command> von Programmdatenbanken "
+"Gebrauch machen, um die Inhalte einer .deb-Datei zwischenzuspeichern und es "
+"verlasst sich nicht auf irgendwelche externen Programme, abgesehen von "
+"&gzip;. Wenn eine vollständige Generierung erfolgt, werden automatisch "
+"Dateiänderungsprüfungen durchgeführt und die gewünschten gepackten "
+"Ausgabedateien erzeugt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The packages command generates a package file from a directory tree. It "
+"takes the given directory and recursively searches it for .deb files, "
+"emitting a package record to stdout for each. This command is approximately "
+"equivalent to &dpkg-scanpackages;."
+msgstr ""
+"Der »packages«-Befehl generiert eine Paketdatei aus einem Verzeichnisbaum. "
+"Er nimmt ein vorgegebenes Verzeichnis und durchsucht es rekursiv nach .deb-"
+"Dateien, wobei es für jede einen Paketdatensatz auf stdout ausgibt.Dieser "
+"Befehl entspricht etwa &dpkg-scanpackages;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The option <option>--db</option> can be used to specify a binary caching DB."
+msgstr ""
+"Die Option <option>--db</option> kann benutzt werden, um eine Datenbank zum "
+"Zwischenspeichern von Programmen anzugeben."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>sources</literal> command generates a source index file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .dsc files, emitting a source record to stdout for each. This command is "
+"approximately equivalent to &dpkg-scansources;."
+msgstr ""
+"Der <literal>sources</literal>-Befehl generiert eine Quellenindexdatei aus "
+"einem Verzeichnisbaum. Er nimmt ein vorgegebenes Verzeichnis und durchsucht "
+"es rekursiv nach .dsc-Dateien, wobei es für jede einen Quelldatensatz auf "
+"stdout ausgibt. Dieser Befehl entspricht etwa &dpkg-scansources;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"If an override file is specified then a source override file will be looked "
+"for with an extension of .src. The --source-override option can be used to "
+"change the source override file that will be used."
+msgstr ""
+"Wenn eine Override-Datei angegeben ist, wird nach einer Quellen-Override-"
+"Datei mit einer .src-Dateiendung gesucht. Die Option »--source-override« "
+"kann benutzt werden, um die Quellen-Override-Datei, die benutzt wird, zu "
+"ändern."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>contents</literal> command generates a contents file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .deb files, and reads the file list from each file. It then sorts and "
+"writes to stdout the list of files matched to packages. Directories are not "
+"written to the output. If multiple packages own the same file then each "
+"package is separated by a comma in the output."
+msgstr ""
+"Der <literal>contents</literal>-Befehl generiert eine Inhaltsdatei aus einem "
+"Verzeichnisbaum. Er nimmt ein vorgegebenes Verzeichnis und durchsucht es "
+"rekursiv nach .deb-Dateien und liest die Dateiliste von jeder Datei. Dann "
+"sortiert er die Liste der passenden Pakete und schreibt sie nach stdout. "
+"Verzeichnisse werden nicht in die Ausgabe geschrieben. Falls mehrere Pakete "
+"die gleiche Datei besitzen, dann befindet sich jedes Paket durch Komma "
+"getrennt in der Ausgabe."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>release</literal> command generates a Release file from a "
+"directory tree. It recursively searches the given directory for uncompressed "
+"and compressed <filename>Packages</filename>, <filename>Sources</filename>, "
+"<filename>Contents</filename>, <filename>Components</filename> and "
+"<filename>icons</filename> files as well as <filename>Release</filename>, "
+"<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
+"default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>). "
+"Additional filename patterns can be added by listing them in <literal>APT::"
+"FTPArchive::Release::Patterns</literal>. It then writes to stdout a "
+"<filename>Release</filename> file containing (by default) an MD5, SHA1, "
+"SHA256 and SHA512 digest for each file."
+msgstr ""
+"Der Befehl <literal>release</literal> erzeugt eine Release-Datei aus einem "
+"Verzeichnisbaum. Standardmäßig durchsucht er rekursiv das angegebene "
+"Verzeichnis nach nicht komprimierten und komprimierten <filename>Packages</"
+"filename>-, <filename>Sources</filename>-, <filename>Contents</filename>-, "
+"<filename>Components</filename>- und <filename>icons</filename>-Dateien, "
+"ebenso wie standardmäßig <filename>Release</filename>-, <filename>Index</"
+"filename> und <filename>md5sum.txt</filename>-Dateien (<literal>APT::"
+"FTPArchive::Release::Default-Patterns</literal>). Zusätzliche Muster für "
+"Dateinamen können hinzugefügt werden, indem sie in <literal>APT::FTPArchive::"
+"Release::Patterns</literal> aufgeführt werden. Dann schreibt er eine "
+"<filename>Release</filename>-Datei auf die Standardausgabe, die "
+"(standardmäßig) für jede Datei eine MD5-, SHA1-, SHA256- und SHA512-"
+"Prüfsumme enthält."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Values for the additional metadata fields in the Release file are taken from "
+"the corresponding variables under <literal>APT::FTPArchive::Release</"
+"literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The "
+"supported fields are <literal>Origin</literal>, <literal>Label</literal>, "
+"<literal>Suite</literal>, <literal>Version</literal>, <literal>Codename</"
+"literal>, <literal>Date</literal>, <literal>NotAutomatic</literal>, "
+"<literal>ButAutomaticUpgrades</literal>, <literal>Acquire-By-Hash</literal>, "
+"<literal>Valid-Until</literal>, <literal>Signed-By</literal>, "
+"<literal>Architectures</literal>, <literal>Components</literal> and "
+"<literal>Description</literal>."
+msgstr ""
+"Werte für zusätzliche Metadatenfelder in der Release-Datei werden den "
+"entsprechenden Variablen unter <literal>APT::FTPArchive::Release</literal> "
+"entnommen, z.B. <literal>APT::FTPArchive::Release::Origin</literal>. Die "
+"unterstützten Felder sind: <literal>Origin</literal>, <literal>Label</"
+"literal>, <literal>Suite</literal>, <literal>Version</literal>, "
+"<literal>Codename</literal>, <literal>Date</literal>, <literal>NotAutomatic</"
+"literal>, <literal>ButAutomaticUpgrades</literal>, <literal>Acquire-By-Hash</"
+"literal>, <literal>Valid-Until</literal>, <literal>Signed-By</literal>, "
+"<literal>Architectures</literal>, <literal>Components</literal>, "
+"<literal>Description</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>generate</literal> command is designed to be runnable from a "
+"cron script and builds indexes according to the given config file. The "
+"config language provides a flexible means of specifying which index files "
+"are built from which directories, as well as providing a simple means of "
+"maintaining the required settings."
+msgstr ""
+"Der <literal>generate</literal>-Befehl wurde entworfen, um von einem Cron-"
+"Skript ausführbar zu sein und bildet Indexe, die der angegebenen "
+"Konfigurationsdatei entsprechen. Die Konfigurationssprache stellt eine "
+"flexible Möglichkeit bereit, um anzugeben, welche Indexdateien von welchen "
+"Verzeichnissen gebildet wurden, ebenso wie sie eine einfache Möglichkeit zur "
+"Verwaltung der erforderlichen Einstellungen bereitstellt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>clean</literal> command tidies the databases used by the given "
+"configuration file by removing any records that are no longer necessary."
+msgstr ""
+"Der <literal>clean</literal>-Befehl räumt die Datenbanken auf, die von der "
+"angegebenen Konfigurationsdatei benutzt wurden, indem es nicht länger nötige "
+"Datensätze entfernt."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Generate Configuration"
+msgstr "Die Generate-Konfiguration"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>generate</literal> command uses a configuration file to "
+"describe the archives that are going to be generated. It follows the typical "
+"ISC configuration format as seen in ISC tools like bind 8 and dhcpd. &apt-"
+"conf; contains a description of the syntax. Note that the generate "
+"configuration is parsed in sectional manner, but &apt-conf; is parsed in a "
+"tree manner. This only effects how the scope tag is handled."
+msgstr ""
+"Der <literal>generate</literal>-Befehl benutzt eine Konfigurationsdatei, um "
+"die Archive zu beschreiben, die generiert werden sollen. Es folgt dem "
+"typischen ISC-Konfigurationsformat, wie es in ISC-Werkzeugen wie Bind 8 oder "
+"DHCP gesehen werden kann. &apt-conf; enthält eine Beschreibung der Syntax. "
+"Beachten Sie, dass die generate-Konfiguration abschnittsweise ausgewertet "
+"wird, &apt-conf; aber baumartig ausgewertet wird. Dies hat nur Auswirkungen, "
+"wenn die Markierung »scope« behandelt wird."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The generate configuration has four separate sections, each described below."
+msgstr ""
+"Die generate-Konfiguration hat vier getrennte Abschnitte, jeder ist "
+"unterhalb beschrieben"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Dir</literal> Section"
+msgstr "<literal>Dir</literal>-Abschnitt"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Dir</literal> section defines the standard directories needed "
+"to locate the files required during the generation process. These "
+"directories are prepended certain relative paths defined in later sections "
+"to produce a complete an absolute path."
+msgstr ""
+"Der <literal>Dir</literal>-Abschnitt definiert die Vorgabeverzeichnisse, die "
+"zum Orten der benötigten Dateien während des Generierungsprozesses gebraucht "
+"werden. Diese Verzeichnisse werden bestimmten relativen Pfaden, die in "
+"späteren Abschnitten definiert werden, vorangestellt, um einen vollständigen "
+"absoluten Pfad zu bilden."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the root of the FTP archive, in a standard Debian configuration "
+"this is the directory that contains the <filename>ls-LR</filename> and dist "
+"nodes."
+msgstr ""
+"gibt die Wurzel des FTP-Archivs an. In einer Debian-Standardkonfiguration "
+"ist das das Verzeichnis, das die <filename>ls-LR</filename>- und dist-Knoten "
+"enthält."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the location of the override files."
+msgstr "gibt den Ort der Override-Dateien an"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the location of the cache files."
+msgstr "gibt den Ort der Zwischenspeicherdateien an"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the location of the file list files, if the <literal>FileList</"
+"literal> setting is used below."
+msgstr ""
+"gibt den Ort der Dateilistendateien an, wenn die <literal>FileList</literal> "
+"unterhalb gesetzt ist."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Default</literal> Section"
+msgstr "<literal>Default</literal>-Abschnitt"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Default</literal> section specifies default values, and "
+"settings that control the operation of the generator. Other sections may "
+"override these defaults with a per-section setting."
+msgstr ""
+"Der <literal>Default</literal>-Abschnitt gibt Vorgabewerte an und "
+"Einstellungen, die den Betrieb des Generators steuern. Andere Abschnitte "
+"können diese Vorgaben mit einer Einstellung pro Abschnitt überschreiben."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default compression schemes to use for the package index files. It "
+"is a string that contains a space separated list of at least one of the "
+"compressors configured via the <option>APT::Compressor</option> "
+"configuration scope. The default for all compression schemes is '. gzip'."
+msgstr ""
+"setzt das Standardkompressionsschema, das für die Paketindexdateien benutzt "
+"wird. Es ist eine Zeichenkette, die eine durch Leerzeichen getrennte Liste "
+"mit mindestens einem der im Konfigurationsbereich <option>APT::Compressor</"
+"option> eingerichteten Kompressionsprogramme enthält. Die Voreinstellung für "
+"alle Kompressionsschemas ist ». gzip«."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default list of file extensions that are package files. This "
+"defaults to '.deb'."
+msgstr ""
+"setzt die Vorgabeliste von Dateierweiterungen, die Paketdateien sind. "
+"Vorgabe ist ».deb«."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Sources files."
+msgstr ""
+"Dies ist <literal>Packages::Compress</literal> ähnlich, außer dass es die "
+"Kompression der Quelldateien steuert."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default list of file extensions that are source files. This "
+"defaults to '.dsc'."
+msgstr ""
+"setzt die Vorgabeliste von Dateierweiterungen, die Quelldateien sind. "
+"Vorgabe ist ».dsc«."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Contents files."
+msgstr ""
+"Dies ist <literal>Packages::Compress</literal> ähnlich, außer dass es die "
+"Kompression der Inhaltsdateien steuert."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Translation-en master file."
+msgstr ""
+"Dies ist <literal>Packages::Compress</literal> ähnlich, außer dass es die "
+"Kompression der Translation-en-Hauptdatei steuert."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the number of kilobytes to delink (and replace with hard links) "
+"per run. This is used in conjunction with the per-section <literal>External-"
+"Links</literal> setting."
+msgstr ""
+"gibt die Anzahl von Kilobytes an, die pro Durchlauf delinkt (und durch "
+"Hardlinks ersetzt) werden sollen. Dies wird in Verbindung mit der "
+"<literal>External-Links</literal>-Einstellung pro Abschnitt benutzt."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the mode of all created index files. It defaults to 0644. All "
+"index files are set to this mode with no regard to the umask."
+msgstr ""
+"gibt die Rechte für alle erstellten Indexdateien an. Vorgabe ist 0644. Alle "
+"Indexdateien werden ohne Beachtung von umask auf diese Rechte gesetzt."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies whether long descriptions should be included in the "
+"<filename>Packages</filename> file or split out into a master "
+"<filename>Translation-en</filename> file."
+msgstr ""
+"gesetzt, falls lange Beschreibungen in die <filename>Package</filename>-"
+"Datei eingeschlossen werden oder in eine <filename>Translation-en</filename>-"
+"Hauptdatei unterteilt werden sollen"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>TreeDefault</literal> Section"
+msgstr "<literal>TreeDefault</literal>-Abschnitt"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets defaults specific to <literal>Tree</literal> sections. All of these "
+"variables are substitution variables and have the strings $(DIST), "
+"$(SECTION) and $(ARCH) replaced with their respective values."
+msgstr ""
+"setzt Vorgaben speziell für <literal>Tree</literal>-Abschnitte. All diese "
+"Variablen sind Platzhaltervariablen und haben die Zeichenketten $(DIST), "
+"$(SECTION) und $(ARCH) durch ihre jeweiligen Werte ersetzt."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the number of kilobytes of contents files that are generated each day. "
+"The contents files are round-robined so that over several days they will all "
+"be rebuilt."
+msgstr ""
+"setzt die Anzahl der Kilobytes der Inhaltdateien, die jeden Tag generiert "
+"werden. Die Inhaltdateien werden reihum ersetzt, so dass sie über mehrere "
+"Tage alle neu gebildet werden."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Controls the number of days a contents file is allowed to be checked without "
+"changing. If this limit is passed the mtime of the contents file is updated. "
+"This case can occur if the package file is changed in such a way that does "
+"not result in a new contents file [override edit for instance]. A hold off "
+"is allowed in hopes that new .debs will be installed, requiring a new file "
+"anyhow. The default is 10, the units are in days."
+msgstr ""
+"steuert die Anzahl der Tage, die eine Inhaltsdatei erlaubt ist ohne Änderung "
+"geprüft zu werden. Wenn die Grenze überschritten ist, wird die mtime der "
+"Inhaltsdatei aktualisiert. Dieser Fall kann auftreten, wenn die Package-"
+"Datei auf einem Weg geändert wurde, der nicht in einer neuen Inhaltsdatei "
+"resultierte [überschreibendes Bearbeiten zum Beispiel]. Ein Aufhalten ist "
+"erlaubt, in der Hoffnung dass neue .debs installiert werden, die sowieso "
+"eine neue Datei benötigen. Die Vorgabe ist 10, die Einheiten sind Tage."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/"
+"$(SECTION)/binary-$(ARCH)/</filename>"
+msgstr ""
+"setzt den Beginn des .deb-Verzeichnisbaums. Vorgabe ist <filename>$(DIST)/"
+"$(SECTION)/binary-$(ARCH)/</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the top of the source package directory tree. Defaults to <filename>"
+"$(DIST)/$(SECTION)/source/</filename>"
+msgstr ""
+"setzt den Beginn des Quellpaketverzeichnisbaums. Vorgabe ist <filename>"
+"$(DIST)/$(SECTION)/source/</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Packages file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"binary-$(ARCH)/Packages</filename>"
+msgstr ""
+"setzt die Ausgabe-Packages-Datei. Vorgabe ist <filename>$(DIST)/$(SECTION)/"
+"binary-$(ARCH)/Packages</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Sources file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"source/Sources</filename>"
+msgstr ""
+"setzt die Ausgabe-Quelldatei. Vorgabe ist <filename>$(DIST)/$(SECTION)/"
+"source/Sources</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Translation-en master file with the long descriptions if "
+"they should be not included in the Packages file. Defaults to <filename>"
+"$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+msgstr ""
+"setzt die Ausgabe der Translation-en-Hauptdatei mit den langen "
+"Beschreibungen falls Sie nicht in der Packages-Datei enthalten sind. Vorgabe "
+"ist <filename>$(DIST)/$(SECTION)/i18n/Translation-en</filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the path prefix that causes a symlink to be considered an internal link "
+"instead of an external link. Defaults to <filename>$(DIST)/$(SECTION)/</"
+"filename>"
+msgstr ""
+"setzt die Pfad-Präfix, die bewirkt, dass ein symbolischer Verweis wie ein "
+"interner anstatt wie ein externer Verweis behandelt wird. Vorgabe ist "
+"<filename>$(DIST)/$(SECTION)/</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Contents file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"Contents-$(ARCH)</filename>. If this setting causes multiple Packages files "
+"to map onto a single Contents file (as is the default) then <command>apt-"
+"ftparchive</command> will integrate those package files together "
+"automatically."
+msgstr ""
+"setzt die Ausgabe-Contens-Datei. Vorgabe ist <filename>$(DIST)/$(SECTION)/"
+"Contents-$(ARCH)</filename>. Wenn diese Einstellung bewirkt, dass mehrere "
+"Packages-Dateien auf einer einzelnen Inhaltsdatei abgebildet werden (so wie "
+"es Vorgabe ist), dann wird <command>apt-ftparchive</command> diese Dateien "
+"automatisch integrieren."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets header file to prepend to the contents output."
+msgstr "setzt die Kopfdatendatei, um sie der Inhaltsausgabe voranzustellen."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the binary cache database to use for this section. Multiple sections "
+"can share the same database."
+msgstr ""
+"setzt die Programmzwischenspeicherdatenbank zur Benutzung in diesem "
+"Abschnitt. Mehrere Abschnitte können sich die gleiche Datenbank teilen."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies that instead of walking the directory tree, <command>apt-"
+"ftparchive</command> should read the list of files from the given file. "
+"Relative files names are prefixed with the archive directory."
+msgstr ""
+"gibt an, dass <command>apt-ftparchive</command> die Liste der Dateien aus "
+"der vorgegebenen Datei liest, anstatt den Verzeichnisbaum zu durchlaufen. "
+"Relativen Dateinamen wird das Archivverzeichnis vorangestellt."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies that instead of walking the directory tree, <command>apt-"
+"ftparchive</command> should read the list of files from the given file. "
+"Relative files names are prefixed with the archive directory. This is used "
+"when processing source indexes."
+msgstr ""
+"gibt an, dass <command>apt-ftparchive</command> die Liste der Dateien aus "
+"der vorgegebenen Datei liest, anstatt den Verzeichnisbaum zu durchlaufen. "
+"Relativen Dateinamen wird das Archivverzeichnis vorangestellt. Dies wird "
+"benutzt, wenn Quellindizes verarbeitet werden."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Tree</literal> Section"
+msgstr "<literal>Tree</literal>-Abschnitt"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Tree</literal> section defines a standard Debian file tree "
+"which consists of a base directory, then multiple sections in that base "
+"directory and finally multiple Architectures in each section. The exact "
+"pathing used is defined by the <literal>Directory</literal> substitution "
+"variable."
+msgstr ""
+"Der <literal>Tree</literal>-Abschnitt definiert einen Standard-Debian-"
+"Dateibaum, der aus einem Basisverzeichnis, dann mehreren Abschnitten in "
+"diesem Basisverzeichnis und am Ende, mehreren Architekturen in jedem "
+"Abschnitt besteht. Die genaue benutzte Pfadeinstellung ist durch die "
+"<literal>Directory</literal>-Ersetzungsvariable definiert."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Tree</literal> section takes a scope tag which sets the "
+"<literal>$(DIST)</literal> variable and defines the root of the tree (the "
+"path is prefixed by <literal>ArchiveDir</literal>). Typically this is a "
+"setting such as <filename>dists/&debian-stable-codename;</filename>."
+msgstr ""
+"Der <literal>Tree</literal>-Abschnitt nimmt eine scope-Markierung, die die "
+"<literal>$(DIST)</literal>-Variable setzt und die Wurzel des Baumes "
+"definiert (der Pfad hat den Präfix von <literal>ArchiveDir</literal>). "
+"Typischerweise ist dies eine Einstellung wie <filename>dists/&debian-stable-"
+"codename;</filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"All of the settings defined in the <literal>TreeDefault</literal> section "
+"can be used in a <literal>Tree</literal> section as well as three new "
+"variables."
+msgstr ""
+"Alle im <literal>TreeDefault</literal>-Abschnitt definierten Einstellungen "
+"können in einem <literal>Tree</literal>-Abschnitt, sowie als drei neue "
+"Variablen benutzt werden."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid ""
+"for i in Sections do \n"
+" for j in Architectures do\n"
+" Generate for DIST=scope SECTION=i ARCH=j\n"
+" "
+msgstr ""
+"for i in Abschnitte do\n"
+" for j in Architekturen do\n"
+" Generiere for DIST=Geltungsbereich SECTION=i ARCH=j\n"
+" "
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"When processing a <literal>Tree</literal> section <command>apt-ftparchive</"
+"command> performs an operation similar to: <placeholder type=\"programlisting"
+"\" id=\"0\"/>"
+msgstr ""
+"Wenn ein <literal>Tree</literal>-Abschnitt bearbeitet wird, führt "
+"<command>apt-ftparchive</command> eine Operation aus, die folgender ähnelt:"
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is a space separated list of sections which appear under the "
+"distribution; typically this is something like <literal>main contrib non-"
+"free</literal>"
+msgstr ""
+"Dies ist eine durch Leerzeichen getrennte Liste der Abschnitte, die unter "
+"der Distribution erscheint, typischerweise etwas wie <literal>main contrib "
+"non-free</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is a space separated list of all the architectures that appear under "
+"search section. The special architecture 'source' is used to indicate that "
+"this tree has a source archive. The architecture 'all' signals that "
+"architecture specific files like <filename>Packages</filename> should not "
+"include information about architecture <literal>all</literal> packages in "
+"all files as they will be available in a dedicated file."
+msgstr ""
+"Dies ist eine durch Kommas getrennte Liste aller Architekturen, die unter "
+"dem Suchbereich erscheinen. Die besondere Architektur »source« wird benutzt, "
+"um anzuzeigen, dass dieser Verzeichnisbaum über ein Quellarchiv verfügt. Die "
+"Architektur »all« signalisiert, dass architekturspezifische Dateien wie "
+"<filename>Packages</filename> keine Informationen über Pakete der "
+"Architektur <literal>all</literal> enthalten sollten, da sie in einer "
+"dedizierten Datei verfügbar sein werden."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the binary override file. The override file contains section, priority "
+"and maintainer address information."
+msgstr ""
+"setzt die Programm-Override-Datei. Die Override-Datei enthält Abschnitt, "
+"Priorität und Adressinformationen des Betreuers."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the source override file. The override file contains section "
+"information."
+msgstr ""
+"setzt die Quell-Override-Datei. Die Override-Datei enthält "
+"Abschnittsinformationen."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the binary extra override file."
+msgstr "setzt die zusätzliche Programm-Override-Datei"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the source extra override file."
+msgstr "setzt die zusätzliche Quell-Override-Datei"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>BinDirectory</literal> Section"
+msgstr "<literal>BinDirectory</literal>-Abschnitt"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>bindirectory</literal> section defines a binary directory tree "
+"with no special structure. The scope tag specifies the location of the "
+"binary directory and the settings are similar to the <literal>Tree</literal> "
+"section with no substitution variables or <literal>Section</"
+"literal><literal>Architecture</literal> settings."
+msgstr ""
+"Der <literal>bindirectory</literal>-Abschnitt definiert einen "
+"Programmverzeichnisbaum ohne spezielle Struktur. Die scope-Markierung gibt "
+"den Ort des Programmverzeichnisses an und die Einstellungen sind denen des "
+"<literal>Tree</literal>-Abschnitts ohne Platzhaltervariablen oder "
+"<literal>Abschnitt</literal><literal>Architektur</literal> ähnlich."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the Packages file output."
+msgstr "setzt die Packages-Dateiausgabe"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the Sources file output. At least one of <literal>Packages</literal> or "
+"<literal>Sources</literal> is required."
+msgstr ""
+"setzt die Sources-Dateiausgabe. Entweder <literal>Packages</literal> oder "
+"<literal>Sources</literal> ist erforderlich."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the Contents file output (optional)."
+msgstr "setzt die Contents-Dateiausgabe (optional)"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the binary override file."
+msgstr "setzt die Programm-Override-Datei"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the source override file."
+msgstr "setzt die Quell-Override-Datei"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the cache DB."
+msgstr "setzt die Zwischenspeicherdatenbank"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Appends a path to all the output paths."
+msgstr "hängt einen Pfad an alle Ausgabepfade an"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the file list file."
+msgstr "gibt die Dateilistendatei an"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Binary Override File"
+msgstr "Die Programm-Override-Datei"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The binary override file is fully compatible with &dpkg-scanpackages;. It "
+"contains four fields separated by spaces. The first field is the package "
+"name, the second is the priority to force that package to, the third is the "
+"section to force that package to and the final field is the maintainer "
+"permutation field."
+msgstr ""
+"Die Programm-Override-Datei ist vollständig zu &dpkg-scanpackages; "
+"kompatibel. Sie enthält vier durch Leerzeichen getrennte Felder. Das erste "
+"Feld ist der Paketname, das zweite ist die Priorität zu der das Paket "
+"erzwungen wird, das dritte ist der Abschnittzu der das Paket erzwungen wird "
+"und das letzte Feld ist das Betreuerumsetzungsfeld."
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "old [// oldn]* => new"
+msgstr "alt [// oldn]* => neu"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "new"
+msgstr "neu"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The general form of the maintainer field is: <placeholder type="
+"\"literallayout\" id=\"0\"/> or simply, <placeholder type=\"literallayout\" "
+"id=\"1\"/> The first form allows a double-slash separated list of old email "
+"addresses to be specified. If any of those are found then new is substituted "
+"for the maintainer field. The second form unconditionally substitutes the "
+"maintainer field."
+msgstr ""
+"Die allgemeine Form des Betreuerfelds ist: <placeholder type=\"literallayout"
+"\" id=\"0\"/> oder einfach <placeholder type=\"literallayout\" id=\"1\"/>. "
+"Die erste Form erlaubt es, eine durch Doppelschrägstrich getrennte Liste "
+"alter E-Mail-Adressen anzugegeben. Wenn eine davon gefunden wird, wird die "
+"neue für das Betreuerfeld ersetzt. Die zweite Form ersetzt das Betreuerfeld "
+"bedingungslos."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Source Override File"
+msgstr "Die Quell-Override-Datei"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The source override file is fully compatible with &dpkg-scansources;. It "
+"contains two fields separated by spaces. The first field is the source "
+"package name, the second is the section to assign it."
+msgstr ""
+"Die Quell-Override-Datei ist vollständig kompatibel zu &dpkg-scansources;. "
+"Sie enthält zwei durch Leerzeichen getrennte Felder. Das erste Feld ist der "
+"Quellpaketname, das zweite ist der Abschnitt, dem er zugeordnet ist."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Extra Override File"
+msgstr "Die zusätzlich Override-Datei"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The extra override file allows any arbitrary tag to be added or replaced in "
+"the output. It has three columns, the first is the package, the second is "
+"the tag and the remainder of the line is the new value."
+msgstr ""
+"Die zusätzlich Override-Datei erlaubt jeder beliebigen Markierung zur "
+"Ausgabe hinzugefügt oder darin ersetzt zu werden. Sie hat drei Spalten. Die "
+"erste ist das Paket, die zweite ist die Markierung und der Rest der Zeile "
+"ist der neue Wert."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Generate the given checksum. These options default to on, when turned off "
+"the generated index files will not have the checksum fields where possible. "
+"Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</"
+"replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</"
+"replaceable>::<replaceable>Checksum</replaceable></literal> where "
+"<literal><replaceable>Index</replaceable></literal> can be "
+"<literal>Packages</literal>, <literal>Sources</literal> or <literal>Release</"
+"literal> and <literal><replaceable>Checksum</replaceable></literal> can be "
+"<literal>MD5</literal>, <literal>SHA1</literal>, <literal>SHA256</literal> "
+"or <literal>SHA512</literal>."
+msgstr ""
+"erzeugt die vorgegebene Prüfsumme. Diese Optionen sind standardmäßig "
+"aktiviert. Wenn sie deaktiviert sind, werden die erzeugten Indexdateien nach "
+"Möglichkeit keine Prüfsummenfelder erhalten. Konfigurationselemente: "
+"<literal>APT::FTPArchive::<replaceable>Prüfsumme</replaceable></literal> und "
+"<literal>APT::FTPArchive::<replaceable>Index</replaceable>::"
+"<replaceable>Prüfsumme</replaceable></literal>, wobei "
+"<literal><replaceable>Index</replaceable></literal> <literal>Packages</"
+"literal>, <literal>Sources</literal> oder <literal>Release</literal> sein "
+"kann und <literal><replaceable>Prüfsumme</replaceable></literal> "
+"<literal>MD5</literal>, <literal>SHA1</literal>, <literal>SHA256</literal> "
+"oder <literal>SHA512</literal> sein kann."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Use a binary caching DB. This has no effect on the generate command. "
+"Configuration Item: <literal>APT::FTPArchive::DB</literal>."
+msgstr ""
+"benutzt eine Programmzwischenspeicherdatenbank. Dies hat keine Auswirkung "
+"auf den »generate«-Befehl. Konfigurationselement: <literal>APT::FTPArchive::"
+"DB</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+"still; erzeugt eine Ausgabe, die für Protokollierung geeignet ist und "
+"Fortschrittsanzeiger weglässt. Mehr »q«s unterdrücken mehr Ausgaben, bis zu "
+"einem Maximum von 2. Sie können außerdem <option>-q=#</option> benutzen, um "
+"die Stillestufe zu setzen, was die Konfigurationsdatei überschreibt. "
+"Konfigurationselement: <literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Perform Delinking. If the <literal>External-Links</literal> setting is used "
+"then this option actually enables delinking of the files. It defaults to on "
+"and can be turned off with <option>--no-delink</option>. Configuration "
+"Item: <literal>APT::FTPArchive::DeLinkAct</literal>."
+msgstr ""
+"führt Delinking aus. Wenn die <literal>External-Links</literal>-Einstellung "
+"benutzt wird, schaltet diese Option das Delinking zu Dateien ein. "
+"Standardmäßig ist es an und kann mit <option>--no-delink</option> "
+"ausgeschaltet werden. Konfigurationselement: <literal>APT::FTPArchive::"
+"DeLinkAct</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Perform contents generation. When this option is set and package indexes are "
+"being generated with a cache DB then the file listing will also be extracted "
+"and stored in the DB for later use. When using the generate command this "
+"option also allows the creation of any Contents files. The default is on. "
+"Configuration Item: <literal>APT::FTPArchive::Contents</literal>."
+msgstr ""
+"führt Inhaltsgenerierung durch. Wenn diese Option gesetzt ist und "
+"Paketindizes mit einer Zwischenspeicherdatenbank generiert werden, dann wird "
+"die Dateiliste auch extrahiert und für spätere Benutzung in der Datenbank "
+"gespeichert. Wenn der »generate«-Befehl benutzt wird, erlaubt diese Option "
+"außerdem die Erzeugung beliebiger Contents-Dateien. Die Vorgabe ist an. "
+"Konfigurationselement: <literal>APT::FTPArchive::Contents</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Select the source override file to use with the <literal>sources</literal> "
+"command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</"
+"literal>."
+msgstr ""
+"wählt die Quell-Override-Datei, die mit dem <literal>sources</literal>-"
+"Befehl benutzt wird. Konfigurationselement: <literal>APT::FTPArchive::"
+"SourceOverride</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Make the caching databases read only. Configuration Item: <literal>APT::"
+"FTPArchive::ReadOnlyDB</literal>."
+msgstr ""
+"gibt der Zwischenspeicherdatenbank nur Lesezugriff. Konfigurationselement: "
+"<literal>APT::FTPArchive::ReadOnlyDB</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Accept in the <literal>packages</literal> and <literal>contents</literal> "
+"commands only package files matching <literal>*_arch.deb</literal> or "
+"<literal>*_all.deb</literal> instead of all package files in the given "
+"path. Configuration Item: <literal>APT::FTPArchive::Architecture</literal>."
+msgstr ""
+"akzeptiert in den Befehlen <literal>packages</literal> und "
+"<literal>contents</literal> nur Paketdateien, die auf <literal>*_arch.deb</"
+"literal> oder <literal>*_all.deb</literal> passen, anstatt aller "
+"Paketdateien im angegebenen Pfad. Konfigurationselement: <literal>APT::"
+"FTPArchive::Architecture</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"&apt-ftparchive; caches as much as possible of metadata in a cachedb. If "
+"packages are recompiled and/or republished with the same version again, this "
+"will lead to problems as the now outdated cached metadata like size and "
+"checksums will be used. With this option enabled this will no longer happen "
+"as it will be checked if the file was changed. Note that this option is set "
+"to \"<literal>false</literal>\" by default as it is not recommend to upload "
+"multiply versions/builds of a package with the same versionnumber, so in "
+"theory nobody will have these problems and therefore all these extra checks "
+"are useless."
+msgstr ""
+"&apt-ftparchive; speichert so viele Metadaten wie möglich in einer "
+"Zwischenspeicherdatenbank. Falls Pakete neu kompiliert und/oder neu mit der "
+"gleichen Version veröffentlicht werden, führt dies zu Problemen, da die nun "
+"veralteten zwischengespeicherten Metadaten, wie Größe und Prüfsumme benutzt "
+"werden. Mit dieser eingeschalteten Option wird dies nicht weiter vorkommen, "
+"da geprüft wird, ob die Datei geändert wurde. Beachten Sie, dass diese "
+"Option standardmäßig auf »<literal>false</literal>« gesetzt ist, da es nicht "
+"empfohlen wird, mehrere Versionen/Builds eines Pakets mit der gleichen "
+"Versionsnummer hochzuladen, so dass theoretisch niemand dieses Probleme "
+"haben sollte und all diese zusätzlichen Prüfungen daher nutzlos sind."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This configuration option defaults to \"<literal>true</literal>\" and should "
+"only be set to <literal>\"false\"</literal> if the Archive generated with "
+"&apt-ftparchive; also provides <filename>Translation</filename> files. Note "
+"that the <filename>Translation-en</filename> master file can only be created "
+"in the generate command."
+msgstr ""
+"Diese Konfigurationsoption ist standardmäßig »<literal>true</literal>« und "
+"sollte nur auf »<literal>false</literal>« gesetzt werden, wenn das mit &apt-"
+"ftparchive; generierte Archiv außerdem <filename>Translation</filename>-"
+"Dateien bereitstellt. Beachten Sie, dass die Hauptdatei "
+"<filename>Translation-en</filename> nur durch den Befehl »generate« erstellt "
+"werden kann."
+
+#. type: Content of: <refentry><refsect1><para><programlisting>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n"
+msgstr "<command>apt-ftparchive</command> Pakete <replaceable>Verzeichnis</replaceable> | <command>gzip</command> > <filename>Pakete.gz</filename>\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"To create a compressed Packages file for a directory containing binary "
+"packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Um eine gepackte Paketdatei für ein Verzeichnis zu erstellen, das "
+"Programmpakete (.deb) enthält: <placeholder type=\"programlisting\" id=\"0\"/"
+">"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+"<command>apt-ftparchive</command> gibt bei normalen Operationen 0 zurück, "
+"dezimal 100 bei Fehlern."
+
+#. type: Attribute 'lang' of: <book>
+#: guide.dbk offline.dbk
+msgid "en"
+msgstr "de"
+
+#. type: Content of: <book><title>
+#: guide.dbk
+msgid "APT User's Guide"
+msgstr "APT-Benutzerhandbuch"
+
+#. type: Content of: <book><bookinfo><authorgroup><author><personname>
+#: guide.dbk offline.dbk
+msgid "Jason Gunthorpe"
+msgstr "Jason Gunthorpe"
+
+#. type: Content of: <book><bookinfo><authorgroup><author><email>
+#: guide.dbk offline.dbk
+msgid "jgg@debian.org"
+msgstr "jgg@debian.org"
+
+#. type: Content of: <book><bookinfo><releaseinfo>
+#: guide.dbk offline.dbk
+msgid "Version &apt-product-version;"
+msgstr "Version &apt-product-version;"
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: guide.dbk
+msgid ""
+"This document provides an overview of how to use the APT package manager."
+msgstr ""
+"Dieses Dokument stellt eine Ãœbersicht bereit, wie das APT-"
+"Paketverwaltungsprogramm benutzt wird."
+
+#. type: Content of: <book><bookinfo>
+#: guide.dbk
+msgid ""
+"<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+"<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>"
+
+#. type: Content of: <book><bookinfo><legalnotice><title>
+#: guide.dbk offline.dbk
+msgid "License Notice"
+msgstr "Lizenzhinweis"
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk offline.dbk
+msgid ""
+"\"APT\" and this document are free software; you can redistribute them and/"
+"or modify them under the terms of the GNU General Public License as "
+"published by the Free Software Foundation; either version 2 of the License, "
+"or (at your option) any later version."
+msgstr ""
+"»APT« und dieses Dokument sind freie Software. Sie können sie weitergeben "
+"und/oder verändern unter den Bedingungen der GNU General Public License, wie "
+"sie von der Free Software Foundation veröffentlicht wird; entweder Version 2 "
+"der Lizenz oder (optional) jeder späteren Version."
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk offline.dbk
+msgid ""
+"For more details, on Debian systems, see the file /usr/share/common-licenses/"
+"GPL for the full license."
+msgstr ""
+"Siehe für weitere Details auf Debian-Systemen die Datei /usr/share/common-"
+"licenses/GPL, die die vollständige Lizenz enthält."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "General"
+msgstr "Allgemein"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The APT package currently contains two sections, the APT <command>dselect</"
+"command> method and the <command>apt-get</command> command line user "
+"interface. Both provide a way to install and remove packages as well as "
+"download new packages from the Internet."
+msgstr ""
+"Das Paket APT enthält derzeit zwei Abschnitte, die APT-<command>dselect</"
+"command>-Methode und die Anwenderschnittstelle <command>apt-get</command> "
+"für die Befehlszeile. Beide stellen eine Möglichkeit bereit, Pakete zu "
+"installieren, zu entfernen, sowie neue Pakete aus dem Internet "
+"herunterzuladen."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Anatomy of the Package System"
+msgstr "Anatomie des Paketsystems"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The Debian packaging system has a large amount of information associated "
+"with each package to help assure that it integrates cleanly and easily into "
+"the system. The most prominent of its features is the dependency system."
+msgstr ""
+"Das Debian-Paketierungssystem besitzt eine große Anzahl von Informationen, "
+"die mit jedem Paket verbunden sind, um zu helfen sicherzustellen, dass es "
+"ordentlich und leicht in das System integriert wird. Das bekannteste seiner "
+"Funktionen ist das Abhängigkeitssystem."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The dependency system allows individual programs to make use of shared "
+"elements in the system such as libraries. It simplifies placing infrequently "
+"used portions of a program in separate packages to reduce the number of "
+"things the average user is required to install. Also, it allows for choices "
+"in mail transport agents, X servers and so on."
+msgstr ""
+"Das Abhängigkeitssystem erlaubt individuellen Programmen, Gebrauch von "
+"gemeinsam im System benutzten Elementen, wie Bibliotheken, zu machen. Es "
+"vereinfacht, selten benutze Teile eines Programms in separaten Paketen zu "
+"platzieren, um die Zahl von Dingen zu verringern, die der "
+"Durchschnittsanwender installieren sollte. Außerdem erlaubt es die Auswahl "
+"von Mail-Transport-Agenten, X-Servern und so weiter."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The first step to understanding the dependency system is to grasp the "
+"concept of a simple dependency. The meaning of a simple dependency is that a "
+"package requires another package to be installed at the same time to work "
+"properly."
+msgstr ""
+"Der erste Schritt zum Verständnis des Abhängigkeitssystems besteht darin, "
+"das Konzept einer einfachen Abhängigkeit zu begreifen. Die Bedeutung einer "
+"einfachen Abhängigkeit besteht darin, dass ein Paket ein anderes Paket "
+"benötigt, das zu gleichen Zeit installiert sein muss, um ordentlich zu "
+"funktionieren."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"For instance, mailcrypt is an emacs extension that aids in encrypting email "
+"with GPG. Without GPGP installed mailcrypt is useless, so mailcrypt has a "
+"simple dependency on GPG. Also, because it is an emacs extension it has a "
+"simple dependency on emacs, without emacs it is completely useless."
+msgstr ""
+"Mailcrypt ist zum Beispiel eine Emacs-Erweiterung, die hilft, E-Mails mit "
+"GPG zu verschlüsseln. Ohne installiertes GPG ist Mailcrypt unbrauchbar, "
+"deshalb hat Mailcrypt eine einfache Abhängigkeit von GPG. Da es außerdem "
+"eine Emacs-Erweiterung ist, hat es ebenfalls eine einfache Abhängigkeit von "
+"Emacs. Ohne Emacs ist es komplett unbenutzbar."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The other important dependency to understand is a conflicting dependency. It "
+"means that a package, when installed with another package, will not work and "
+"may possibly be extremely harmful to the system. As an example consider a "
+"mail transport agent such as sendmail, exim or qmail. It is not possible to "
+"have two mail transport agents installed because both need to listen to the "
+"network to receive mail. Attempting to install two will seriously damage the "
+"system so all mail transport agents have a conflicting dependency with all "
+"other mail transport agents."
+msgstr ""
+"Die andere wichtige Abhängigkeit, die es zu verstehen gilt, ist eine in "
+"Konflikt stehende Abhängigkeit. Das bedeutet, dass das Paket, wenn es mit "
+"einem anderen Paket installiert ist, nicht funktioniert und möglicherweise "
+"extrem schädlich für das System sein könnte. Stellen Sie sich als Beispiel "
+"einen Mail-Transport-Agenten wie Sendmail, Exim oder QMail vor. Es ist nicht "
+"möglich, zwei Mail-Transport-Agenten installiert zu haben, da beide im "
+"Netzwerk auf zu empfangende Mails warten. Der Versuch, zwei zu installieren, "
+"würde das System ernsthaft beschädigen, weshalb alle Mail-Transport-Agenten "
+"in Konflikt stehende Abhängigkeiten mit allen anderen Mail-Transport-Agenten "
+"haben."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"As an added complication there is the possibility for a package to pretend "
+"to be another package. Consider that exim and sendmail for many intents are "
+"identical, they both deliver mail and understand a common interface. Hence, "
+"the package system has a way for them to declare that they are both mail-"
+"transport-agents. So, exim and sendmail both declare that they provide a "
+"mail-transport-agent and other packages that need a mail transport agent "
+"depend on mail-transport-agent. This can add a great deal of confusion when "
+"trying to manually fix packages."
+msgstr ""
+"Als zusätzliche Komplikation besteht die Möglichkeit, dass ein Paket "
+"vortäuscht, ein anderes Paket zu sein. Bedenken Sie, dass Exim und Sendmail "
+"in vieler Hinsicht identisch sind – sie liefern beide E-Mails aus und "
+"verstehen eine gemeinsame Schnittstelle. Daher hat das Paketsystem die "
+"Möglichkeit, beide als Mail-Transport-Agenten zu deklarieren. Deshalb "
+"deklarieren Exim und Sendmail, dass sie einen Mail-Transport-Agenten "
+"bereitstellen und andere Pakete, die einen Mail-Transport-Agenten benötigen, "
+"dass sie von einem Mail-Transport-Agenten abhängen. Die kann zu großer "
+"Verwirrung führen, wenn manuell versucht wird, Pakete zu reparieren."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"At any given time a single dependency may be met by packages that are "
+"already installed or it may not be. APT attempts to help resolve dependency "
+"issues by providing a number of automatic algorithms that help in selecting "
+"packages for installation."
+msgstr ""
+"Zu jeder Zeit könnte eine einzelne Abhängigkeit von Paketen vorgefunden "
+"werden, die bereits installiert sind oder nicht. APT versucht beim Auflösen "
+"von Abhängigkeitsproblemen zu helfen, indem es eine Anzahl automatischer "
+"Algorithmen bereitstellt, die bei der Auswahl von Paketen zur Installation "
+"helfen."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "apt-get"
+msgstr "apt-get"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"<command>apt-get</command> provides a simple way to install packages from "
+"the command line. Unlike <command>dpkg</command>, <command>apt-get</command> "
+"does not understand .deb files, it works with the package's proper name and "
+"can only install .deb archives from a <emphasis>Source</emphasis>."
+msgstr ""
+"<command>apt-get</command> stellt eine einfache Möglichkeit zu Verfügung, "
+"Pakete auf der Befehlszeile zu installieren. Anders als <command>dpkg</"
+"command> versteht <command>apt-get</command> keine .deb-Dateien. Es arbeitet "
+"mit dem Eigennamen des Pakets und kann .deb-Archive nur aus einer "
+"<emphasis>Quelle</emphasis> installieren."
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk
+msgid ""
+"If you are using an http proxy server you must set the http_proxy "
+"environment variable first, see sources.list(5)"
+msgstr ""
+"Falls Sie einen HTTP-Proxy-Server benutzen, müssen Sie zuerst die "
+"Umgebungsvariable »http_proxy« setzen, siehe sources.list(5)"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The first <placeholder type=\"footnote\" id=\"0\"/> thing that should be "
+"done before using <command>apt-get</command> is to fetch the package lists "
+"from the <emphasis>Sources</emphasis> so that it knows what packages are "
+"available. This is done with <literal>apt-get update</literal>. For instance,"
+msgstr ""
+"Das Erste <placeholder type=\"footnote\" id=\"0\"/>, das Sie vor der "
+"Benutzung von <command>apt-get</command> tun sollten, ist es, die "
+"Paketlisten von der <emphasis>Quelle</emphasis> herunterzuladen, so dass es "
+"weiß, welche Pakete verfügbar sind. Dies wird mit <literal>apt-get update</"
+"literal> erledigt. Zum Beispiel,"
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+"# apt-get update\n"
+"OK http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"OK http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Paketlisten werden gelesen … Fertig\n"
+"Abhängigkeitsbaum wird aufgebaut … Fertig\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid "Once updated there are several commands that can be used:"
+msgstr "Einmal aktualisiert stehen mehrere Befehl zur Benutzung zur Verfügung:"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "upgrade"
+msgstr "upgrade"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Upgrade will attempt to gently upgrade the whole system. Upgrade will never "
+"install a new package or remove an existing package, nor will it ever "
+"upgrade a package that might cause some other package to break. This can be "
+"used daily to relatively safely upgrade the system. Upgrade will list all of "
+"the packages that it could not upgrade, this usually means that they depend "
+"on new packages or conflict with some other package. <command>dselect</"
+"command> or <literal>apt-get install</literal> can be used to force these "
+"packages to install."
+msgstr ""
+"»Upgrade« wird versuchen, ein behutsames Upgrade des ganzen Systems "
+"durchzuführen. »Upgrade« wird niemals ein neues Paket installieren oder "
+"entfernen, noch wird es jemals ein Upgrade eines Pakets durchführen, das "
+"andere Pakete beschädigen könnte. Dies kann täglich dazu benutzt werden, um "
+"ein relativ sicheres Upgrade des Systems durchzuführen. »Upgrade« wird alle "
+"Pakete auflisten, von denen es kein Upgrade durchführen kann, was "
+"üblicherweise bedeutet, dass sie von neuen Paketen abhängen oder Konflikte "
+"mit anderen Paketen haben. <command>dselect</command> oder <literal>apt-get "
+"install</literal> können benutzt werden, um die Installation von diesen "
+"Paketen zu erzwingen."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "install"
+msgstr "install"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Install is used to install packages by name. The package is automatically "
+"fetched and installed. This can be useful if you already know the name of "
+"the package to install and do not want to go into a GUI to select it. Any "
+"number of packages may be passed to install, they will all be fetched. "
+"Install automatically attempts to resolve dependency problems with the "
+"listed packages and will print a summary and ask for confirmation if "
+"anything other than its arguments are changed."
+msgstr ""
+"»Install« wird benutzt, um Pakete nach Namen zu installieren. Das Paket wird "
+"automatisch heruntergeladen und installiert. Dies kann nützlich sein, wenn "
+"Sie bereits den Namen des zu installierenden Pakets kennen und keine GUI "
+"aufrufen möchten, um es auszuwählen. Jede Anzahl von Paketen könnte zum "
+"Installieren übergeben werden, sie werden alle heruntergeladen. »Install« "
+"versucht automatisch Abhängigkeitsprobleme mit den aufgelisteten Paketen "
+"aufzulösen, wird eine Zusammenfassung ausgeben und nach einer Bestätigung "
+"fragen, wenn sich etwas anderes als dessen Argumente ändert."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "dist-upgrade"
+msgstr "dist-upgrade"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Dist-upgrade is a complete upgrader designed to simplify upgrading between "
+"releases of Debian. It uses a sophisticated algorithm to determine the best "
+"set of packages to install, upgrade and remove to get as much of the system "
+"to the newest release. In some situations it may be desired to use dist-"
+"upgrade rather than spend the time manually resolving dependencies in "
+"<command>dselect</command>. Once dist-upgrade has completed then "
+"<command>dselect</command> can be used to install any packages that may have "
+"been left out."
+msgstr ""
+"»Dist-upgrade« führt vollständige Upgrades durch. Es wurde entworfen, um "
+"Upgrades zwischen Releases von Debian zu vereinfachen. Es benutzt einen "
+"ausgeklügelten Algorithmus, um die beste Zusammenstellung von Paketen zum "
+"Installieren, für das Upgrade oder zum Entfernen festzulegen, um soviel wie "
+"möglich vom System auf das neuste Release zu bekommen. In einigen "
+"Situationen könnte es eher gewünscht sein, »dist-upgrade« zu benutzen, als "
+"Zeit in das manuelle Auflösen von Abhängigkeiten in <command>dselect</"
+"command> zu investieren. Ist »Dist-upgrade« erst vollständig, dann kann "
+"<command>dselect</command> benutzt werden, um einige Pakete zu installieren, "
+"die außen vor geblieben sind."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"It is important to closely look at what dist-upgrade is going to do, its "
+"decisions may sometimes be quite surprising."
+msgstr ""
+"Es ist wichtig, genau zu schauen, was »Dist-upgrade« tun wird, seine "
+"Entscheidungen können manchmal ziemlich überraschend sein."
+
+# s/package/packages/
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"<command>apt-get</command> has several command line options that are "
+"detailed in its man page, <citerefentry><refentrytitle>apt-get</"
+"refentrytitle><manvolnum>8</manvolnum></citerefentry>. The most useful "
+"option is <literal>-d</literal> which does not install the fetched files. If "
+"the system has to download a large number of package it would be undesired "
+"to start installing them in case something goes wrong. When <literal>-d</"
+"literal> is used the downloaded archives can be installed by simply running "
+"the command that caused them to be downloaded again without <literal>-d</"
+"literal>."
+msgstr ""
+"<command>apt-get</command> hat mehrere Befehlszeilenoptionen, die sich "
+"detailliert in seiner Handbuchseite, <citerefentry><refentrytitle>apt-get</"
+"refentrytitle><manvolnum>8</manvolnum></citerefentry> finden. Die "
+"nützlichste Option ist <literal>-d</literal>, die die heruntergeladenen "
+"Dateien nicht installiert. Falls das System eine große Anzahl Pakete "
+"herunterladen soll, würde es nicht erwünscht sein, wenn die Installation "
+"auch in dem Fall gestartet würde, dass etwas schief läuft. Falls <literal>-"
+"d</literal> benutzt wird, können die heruntergeladenen Archive dadurch "
+"installiert werden, indem einfach der Befehl, der das Herunterladen "
+"veranlasste, erneut ohne <literal>-d</literal> ausgeführt wird."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "DSelect"
+msgstr "DSelect"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The APT <command>dselect</command> method provides the complete APT system "
+"with the <command>dselect</command> package selection GUI. <command>dselect</"
+"command> is used to select the packages to be installed or removed and APT "
+"actually installs them."
+msgstr ""
+"Die APT-<command>dselect</command>-Methode stellt das komplette APT-System "
+"mit dem <command>dselect</command>-Paketauswahl-GUI bereit. "
+"<command>dselect</command> wird benutzt, um Pakete zum Installieren oder "
+"Entfernen auszuwählen und APT installiert sie tatsächlich."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"To enable the APT method you need to select [A]ccess in <command>dselect</"
+"command> and then choose the APT method. You will be prompted for a set of "
+"<emphasis>Sources</emphasis> which are places to fetch archives from. These "
+"can be remote Internet sites, local Debian mirrors or CD-ROMs. Each source "
+"can provide a fragment of the total Debian archive, APT will automatically "
+"combine them to form a complete set of packages. If you have a CD-ROM then "
+"it is a good idea to specify it first and then specify a mirror so that you "
+"have access to the latest bug fixes. APT will automatically use packages on "
+"your CD-ROM before downloading from the Internet."
+msgstr ""
+"Um die APT-Methode einzuschalten, müssen Sie [Z]ugriff in <command>dselect</"
+"command> auswählen und dann die APT-Methode wählen. Sie werden nach einer "
+"Zusammenstellung von <emphasis>Quellen</emphasis> gefragt. Dies sind Plätze, "
+"von denen Archive heruntergeladen werden. Dies können ferne Internetsites, "
+"lokale Debian-Spiegel oder CD-ROMs sein. Jede Quelle kann einen Ausschnitt "
+"des gesamten Debian-Archives bereitstellen. APT wird sie automatisch "
+"kombinieren, um eine komplette Zusammenstellung von Paketen zu formen. Falls "
+"Sie eine CD-ROM haben, ist es eine gute Idee, sie als erstes und dann den "
+"Spiegel anzugeben, so dass Sie Zugriff auf die neusten Fehlerbehebungen "
+"haben. APT wird automatisch Pakete auf der CD-ROM benutzen, bevor es sie aus "
+"dem Internet herunterlädt."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Set up a list of distribution source locations\n"
+"\n"
+" Please give the base URL of the debian distribution.\n"
+" The access schemes I know about are: http file\n"
+"\n"
+" For example:\n"
+" file:/mnt/debian,\n"
+" ftp://ftp.debian.org/debian,\n"
+" http://ftp.de.debian.org/debian,\n"
+"\n"
+"\n"
+" URL [http://llug.sep.bnl.gov/debian]:\n"
+msgstr ""
+" eine Liste mit Orten von Distributionsquellen einrichten\n"
+"\n"
+" Bitte geben Sie die Basis-URL der Debian-Distribution an.\n"
+" Die bekannten Zugriffsschemas dafür sind: http file\n"
+"\n"
+" Zum Beispiel:\n"
+" file:/mnt/debian,\n"
+" ftp://ftp.debian.org/debian,\n"
+" http://ftp.de.debian.org/debian,\n"
+"\n"
+"\n"
+" URL [http://llug.sep.bnl.gov/debian]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The <emphasis>Sources</emphasis> setup starts by asking for the base of the "
+"Debian archive, defaulting to a HTTP mirror. Next it asks for the "
+"distribution to get."
+msgstr ""
+"Das Einrichten der <emphasis>Quellen</emphasis> beginnt durch das Erfragen "
+"der Basis des Debian-Archives, vorgegeben ist ein HTTP-Spiegel. Als nächstes "
+"wird nach der zu erhaltenden Distribution gefragt."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Please give the distribution tag to get or a path to the\n"
+" package file ending in a /. The distribution\n"
+" tags are typically something like: stable unstable testing non-US\n"
+"\n"
+" Distribution [stable]:\n"
+msgstr ""
+" Bitte geben Sie die zu erhaltende Distributionskennzeichnung oder den mit\n"
+" einem / endenden Pfad zum Paket an. Die Distributionskennzeichnungen sind\n"
+" normalerweise etwas wie: stable unstable testing non-US\n"
+"\n"
+" Distribution [stable]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The distribution refers to the Debian version in the archive, "
+"<emphasis>stable</emphasis> refers to the latest released version and "
+"<emphasis>unstable</emphasis> refers to the developmental version. "
+"<emphasis>non-US</emphasis> is only available on some mirrors and refers to "
+"packages that contain encryption technology or other things that cannot be "
+"exported from the United States. Importing these packages into the US is "
+"legal however."
+msgstr ""
+"Die Distribution bezieht sich auf die Debian-Version im Archiv, "
+"<emphasis>stable</emphasis> bezieht sich auf die zuletzt veröffentlichte "
+"Version und <emphasis>unstable</emphasis> bezieht sich auf die "
+"Entwicklungsversion. <emphasis>non-US</emphasis> ist nur auf einigen "
+"Spiegeln verfügbar und bezieht sich auf Pakete, die "
+"Verschlüsselungstechnologie oder andere Dinge enthalten, die nicht aus den "
+"Vereinigten Staaten exportiert werden können. Diese Pakete in die USA zu "
+"importieren ist jedoch legal."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Please give the components to get\n"
+" The components are typically something like: main contrib non-free\n"
+"\n"
+" Components [main contrib non-free]:\n"
+msgstr ""
+" Bitte geben Sie die Komponenten an, die Sie erhalten möchten\n"
+" Die Komponenten sind normalerweise etwas wie: »main« »contrib« »non-free«\n"
+"\n"
+" Komponenten [main contrib non-free]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The components list refers to the list of sub distributions to fetch. The "
+"distribution is split up based on software licenses, main being DFSG free "
+"packages while contrib and non-free contain things that have various "
+"restrictions placed on their use and distribution."
+msgstr ""
+"Die Komponentenliste bezieht sich auf die Liste von Unter-Distributionen zum "
+"Herunterladen. Die Distribution ist auf Basis von Software-Lizenzen "
+"unterteilt, »Main« besteht aus Paketen die gemäß der DFSG frei sind, während "
+"»Contrib« und »Non-free« Dinge enthalten, die verschiedene Einschränkungen "
+"in ihrer Benutzung und ihren Vertrieb haben."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Any number of sources can be added, the setup script will continue to prompt "
+"until you have specified all that you want."
+msgstr ""
+"Jegliche Anzahl von Quellen kann hinzugefügt werden, das Einrichtungsskript "
+"wird mit Nachfragen fortfahren, bis Sie alles angegeben haben, was Sie "
+"möchten."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Before starting to use <command>dselect</command> it is necessary to update "
+"the available list by selecting [U]pdate from the menu. This is a superset "
+"of <literal>apt-get update</literal> that makes the fetched information "
+"available to <command>dselect</command>. [U]pdate must be performed even if "
+"<literal>apt-get update</literal> has been run before."
+msgstr ""
+"Bevor sie beginnen, <command>dselect</command> zu benutzen, ist es "
+"notwendig, die Verfügbarkeitsliste zu aktualisieren, indem sie aus dem Menü "
+"[E]rneuern auswählen. Dies ist eine Obermenge von <literal>apt-get update</"
+"literal>, das <command>dselect</command> heruntergeladene Informationen zur "
+"Verfügung stellt. [E]rneuern muss auch dann durchgeführt werden, wenn vorher "
+"<literal>apt-get update</literal> ausgeführt wurde."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"You can then go on and make your selections using [S]elect and then perform "
+"the installation using [I]nstall. When using the APT method the [C]onfig and "
+"[R]emove commands have no meaning, the [I]nstall command performs both of "
+"them together."
+msgstr ""
+"Sie können dann fortfahren und Ihre Auswahl per [A]uswähle treffen und dann "
+"die Installation mit [I]nstall. vornehmen. Wenn Sie die APT-Methode "
+"benutzen, haben die Befehle Kon[f]ig. und [L]öschen keine Bedeutung, der "
+"Befehl [I]nstall. führt beides gleichermaßen aus."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"By default APT will automatically remove the package (.deb) files once they "
+"have been successfully installed. To change this behavior place "
+"<literal>Dselect::clean \"prompt\";</literal> in /etc/apt/apt.conf."
+msgstr ""
+"Standardmäßig wird APT automatisch die Paketdateien (.deb) entfernen, sobald "
+"sie erfolgreich installiert sind. Um dieses Verhalten zu ändern, platzieren "
+"Sie <literal>Dselect::clean \"prompt\";</literal> in /etc/apt/apt.conf."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "The Interface"
+msgstr "Die Schnittstelle"
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk
+msgid ""
+"The <command>dselect</command> method actually is a set of wrapper scripts "
+"to <command>apt-get</command>. The method actually provides more "
+"functionality than is present in <command>apt-get</command> alone."
+msgstr ""
+"Die Methode <command>dselect</command> ist tatsächlich eine Zusammenstellung "
+"von Wrapper-Skripten für <command>apt-get</command>. Die Methode stellt "
+"tatsächlich mehr Funktionalitäten bereit, als in <command>apt-get</command> "
+"allein vorhanden sind."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Both that APT <command>dselect</command> method and <command>apt-get</"
+"command> share the same interface. It is a simple system that generally "
+"tells you what it will do and then goes and does it. <placeholder type="
+"\"footnote\" id=\"0\"/> After printing out a summary of what will happen APT "
+"then will print out some informative status messages so that you can "
+"estimate how far along it is and how much is left to do."
+msgstr ""
+"Sowohl die APT-Methode <command>dselect</command>, als auch <command>apt-"
+"get</command> teilen sich die gleiche Schnittstelle. Es ist ein einfaches "
+"System, das üblicherweise mitteilt, was es tun wird und es dann tut. "
+"<placeholder type=\"footnote\" id=\"0\"/> Nach der Ausgabe einer "
+"Zusammenfassung was passieren wird, gibt APT einige informative "
+"Statusmeldungen aus, so dass Sie abschätzen können, wie weit es ist und "
+"wieviel noch zu tun ist."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Startup"
+msgstr "Anfang"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Before all operations except update, APT performs a number of actions to "
+"prepare its internal state. It also does some checks of the system's state. "
+"At any time these operations can be performed by running <literal>apt-get "
+"check</literal>."
+msgstr ""
+"Vor allen Operationen, ausgenommen »update«, führt APT eine Reihe von "
+"Aktionen durch, um seinen internen Status vorzubereiten. Es macht außerdem "
+"einige Prüfungen des Systemstatus. Diese Operationen können jederzeit durch "
+"Ausführung von <literal>apt-get check</literal> durchgeführt werden."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+"# apt-get check\n"
+"Paketlisten werden gelesen … Fertig\n"
+"Abhängigkeitsbaum wird aufgebaut … Fertig\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The first thing it does is read all the package files into memory. APT uses "
+"a caching scheme so this operation will be faster the second time it is run. "
+"If some of the package files are not found then they will be ignored and a "
+"warning will be printed when apt-get exits."
+msgstr ""
+"Das erste was es tut, ist das Einlesen aller Paketdateien in den Speicher. "
+"APT benutzt ein Zwischenspeicherschema, so dass diese Operation beim zweiten "
+"Ausführen schneller laufen wird. Falls einige der Paketdateien nicht "
+"gefunden werden, werden sie ignoriert und beim Beenden von Apt-get wird eine "
+"Warnung ausgegeben."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The final operation performs a detailed analysis of the system's "
+"dependencies. It checks every dependency of every installed or unpacked "
+"package and considers if it is OK. Should this find a problem then a report "
+"will be printed out and <command>apt-get</command> will refuse to run."
+msgstr ""
+"Die letzte Operation führt eine detaillierte Analyse der Abhängigkeiten des "
+"Systems durch. Sie prüft jede Abhängigkeit jedes installierten oder "
+"entpackten Pakets und berücksichtigt, ob es in Ordnung ist. Sollte sie ein "
+"Problem finden, dann wird eine Meldung ausgegeben und <command>apt-get</"
+"command> wird die Ausführung verweigern."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+"You might want to run 'apt --fix-broken install' to correct these.\n"
+"Sorry, but the following packages have unmet dependencies:\n"
+" 9fonts: Depends: xlib6g but it is not installed\n"
+" uucp: Depends: mailx but it is not installed\n"
+" blast: Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" adduser: Depends: perl-base but it is not installed\n"
+" aumix: Depends: libgpmg1 but it is not installed\n"
+" debiandoc-sgml: Depends: sgml-base but it is not installed\n"
+" bash-builtins: Depends: bash (&gt;= 2.01) but 2.0-3 is installed\n"
+" cthugha: Depends: svgalibg1 but it is not installed\n"
+" Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" libreadlineg2: Conflicts:libreadline2 (&lt;&lt; 2.1-2.1)\n"
+msgstr ""
+"# apt-get check\n"
+"Paketlisten werden gelesen … Fertig Fertig\n"
+"Abhängigkeitsbaum wird aufgebaut\n"
+"Status-Informationen einlesen … Fertig Fertig\n"
+"Probieren Sie „apt --fix-broken install“, um diese zu korrigieren:\n"
+"Die folgenden Pakete haben nichterfüllte Abhängigkeiten:\n"
+" 9fonts: Hängt ab: xlib6g ist aber nicht installiert\n"
+" uucp: Hängt ab: mailx ist aber nicht installiert\n"
+" blast: Hängt ab: xlib6g (&gt;= 3.3-5) ist aber nicht installiert\n"
+" adduser: Hängt ab: perl-base ist aber nicht installiert\n"
+" aumix: Hängt ab: libgpmg1 ist aber nicht installiert\n"
+" debiandoc-sgml: Hängt ab: sgml-base ist aber nicht installiert\n"
+" bash-builtins: Hängt ab: bash (&gt;= 2.01) but 2.0-3 ist installiert\n"
+" cthugha: Hängt ab: svgalibg1 ist aber nicht installiert\n"
+" Hängt ab: xlib6g (&gt;= 3.3-5) ist aber nicht installiert\n"
+" libreadlineg2: Conflicts:libreadline2 (&lt;&lt; 2.1-2.1)\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"In this example the system has many problems, including a serious problem "
+"with libreadlineg2. For each package that has unmet dependencies a line is "
+"printed out indicating the package with the problem and the dependencies "
+"that are unmet. A short explanation of why the package has a dependency "
+"problem is also included."
+msgstr ""
+"In diesem Beispiel hat das System viele Probleme, einschließlich eines "
+"ernsten Problems mit libreadlineg2. Für jedes Paket, das nichterfüllte "
+"Abhängigkeiten hat, wird eine Zeile ausgegeben, die das Paket mit dem "
+"Problem anzeigt und die Abhängigkeiten, die nicht erfüllt sind. Eine kurze "
+"Erklärung, warum das Paket ein Abhängigkeitsproblem hat, ist inbegriffen."
+
+#. type: Content of: <book><chapter><section><para><footnote><para>
+#: guide.dbk
+msgid ""
+"APT however considers all known dependencies and attempts to prevent broken "
+"packages"
+msgstr ""
+"APT berücksichtigt jedoch alle bekannten Abhängigkeiten und versucht, "
+"kaputte Pakete zu vermeiden"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"There are two ways a system can get into a broken state like this. The first "
+"is caused by <command>dpkg</command> missing some subtle relationships "
+"between packages when performing upgrades. <placeholder type=\"footnote\" id="
+"\"0\"/>. The second is if a package installation fails during an operation. "
+"In this situation a package may have been unpacked without its dependents "
+"being installed."
+msgstr ""
+"Es gibt zwei Möglichkeiten, wie ein System in einen kaputten Status wie "
+"diesen kommen kann. Die erste wird dadurch verursacht, dass <command>dpkg</"
+"command> einige feine Beziehungen zwischen Paketen übersieht, wenn Upgrades "
+"durchgeführt werden. <placeholder type=\"footnote\" id=\"0\"/>. Die zweite "
+"tritt auf, falls eine Paketinstallation während der Ausführung fehlschlägt. "
+"In dieser Situation könnte ein Paket entpackt worden sein, ohne dass die von "
+"ihm Abhängigen installiert sind."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The second situation is much less serious than the first because APT places "
+"certain constraints on the order that packages are installed. In both cases "
+"supplying the <literal>-f</literal> option to <command>apt-get</command> "
+"will cause APT to deduce a possible solution to the problem and then "
+"continue on. The APT <command>dselect</command> method always supplies the "
+"<literal>-f</literal> option to allow for easy continuation of failed "
+"maintainer scripts."
+msgstr ""
+"Die zweite Situation ist weit weniger ernst als die erste, weil APT "
+"bestimmte Beschränkungen in der Reihenfolge setzt, in der Pakete installiert "
+"werden. In beiden Fällen veranlasst die Option <literal>-f</literal> "
+"<command>apt-get</command>, eine mögliche Lösung für das Problem zu folgern "
+"und dann fortzufahren. Die APT-Methode <command>dselect</command> liefert "
+"immer die Option <literal>-f</literal>, zum einfachen Fortfahren von "
+"gescheiterten Betreuerskripten."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"However, if the <literal>-f</literal> option is used to correct a seriously "
+"broken system caused by the first case then it is possible that it will "
+"either fail immediately or the installation sequence will fail. In either "
+"case it is necessary to manually use dpkg (possibly with forcing options) to "
+"correct the situation enough to allow APT to proceed."
+msgstr ""
+"Falls jedoch die Option <literal>-f</literal> benutzt wird, um ein ernsthaft "
+"kaputtes System zu korrigieren, das vom ersten Fall verursacht wurde, dann "
+"ist es möglich, dass es entweder sofort fehlschlägt oder die "
+"Installationsabfolge fehlschlagen wird. In beiden Fällen ist es nötig, Dpkg "
+"(möglicherweise mit erzwingenden Optionen) manuell zu benutzen, um die "
+"Situation ausreichend zu korrigieren, so dass es APT ermöglicht wird, "
+"fortzufahren."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "The Status Report"
+msgstr "Der Statusbericht"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Before proceeding <command>apt-get</command> will present a report on what "
+"will happen. Generally the report reflects the type of operation being "
+"performed but there are several common elements. In all cases the lists "
+"reflect the final state of things, taking into account the <literal>-f</"
+"literal> option and any other relevant activities to the command being "
+"executed."
+msgstr ""
+"Bevor es fortfährt, wird <command>apt-get</command> einen Bericht darüber "
+"präsentieren, was geschehen wird. Im Allgemeinen spiegelt der Bericht den "
+"Typ der Operation, die ausgeführt wird, wider, aber es gibt auch mehrere "
+"geläufige Elemente. Auf jeden Fall spiegelt die Liste den Endstatus der "
+"Dinge wider, bezieht die Option <literal>-f</literal> in Betracht und alle "
+"andere relevante Aktivitäten zum Befehl, der ausgeführt wird."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Extra Package list"
+msgstr "Die zusätzliche Paketliste"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following extra packages will be installed:\n"
+" libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl\n"
+" mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base\n"
+" bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy\n"
+" squake pgp-i python-base debmake ldso perl libreadlineg2\n"
+" ssh\n"
+msgstr ""
+"Die folgenden Pakete werden zusätzlich installiert:\n"
+" libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl\n"
+" mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base\n"
+" bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy\n"
+" squake pgp-i python-base debmake ldso perl libreadlineg2\n"
+" ssh\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The Extra Package list shows all of the packages that will be installed or "
+"upgraded in excess of the ones mentioned on the command line. It is only "
+"generated for an <literal>install</literal> command. The listed packages are "
+"often the result of an Auto Install."
+msgstr ""
+"Die zusätzliche Paketliste zeigt alle Pakete, die installiert werden oder "
+"von denen ein Upgrade durchgeführt wird, zusätzlich zu den auf der "
+"Befehlszeile angegebenen. Sie wird nur für einen <literal>install</literal>-"
+"Befehl generiert. Die aufgelisteten Pakete sind häufig das Ergebnis einer "
+"automatischen Installation."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Packages to Remove"
+msgstr "Die zu entfernenden Pakete"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following packages will be REMOVED:\n"
+" xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix\n"
+" xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel\n"
+" xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid\n"
+" nas xpilot xfig\n"
+msgstr ""
+"Die folgenden Pakete werden ENTFERNT:\n"
+" xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix\n"
+" xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel\n"
+" xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid\n"
+" nas xpilot xfig\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The Packages to Remove list shows all of the packages that will be removed "
+"from the system. It can be shown for any of the operations and should be "
+"given a careful inspection to ensure nothing important is to be taken off. "
+"The <literal>-f</literal> option is especially good at generating packages "
+"to remove so extreme care should be used in that case. The list may contain "
+"packages that are going to be removed because they are only partially "
+"installed, possibly due to an aborted installation."
+msgstr ""
+"Die Liste der zu entfernenden Pakete zeigt all die Pakete, die vom System "
+"entfernt werden. Sie kann für jede der Operationen angezeigt werden und "
+"sollte einer sorgfältige Überprüfung unterzogen werden, um sicherzustellen, "
+"dass nichts Wichtiges weggenommen wird. Die Option <literal>-f</literal> ist "
+"insbesondere gut darin, Pakete zum Entfernen vorzumerken, so dass in diesem "
+"Fall mit extremer Vorsicht vorgegangen werden sollte. Die Liste könnte "
+"Pakete enthalten, die entfernt werden, weil sie nur teilweise installiert "
+"sind, möglicherweise aufgrund einer abgebrochenen Installation."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The New Packages list"
+msgstr "Die Liste neuer Pakete"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following NEW packages will installed:\n"
+" zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base\n"
+msgstr ""
+"Die folgenden NEUEN Pakete werden zusätzlich installiert:\n"
+" zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The New Packages list is simply a reminder of what will happen. The packages "
+"listed are not presently installed in the system but will be when APT is "
+"done."
+msgstr ""
+"Die Liste neuer Pakete ist einfache eine Erinnerung, was geschehen wird. Die "
+"aufgelisteten Pakete sind zurzeit nicht auf dem System installiert, werden "
+"es aber sein, wenn APT fertig ist."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Kept Back list"
+msgstr "Die Liste zurückgehaltener Pakete"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following packages have been kept back\n"
+" compface man-db tetex-base msql libpaper svgalib1\n"
+" gs snmp arena lynx xpat2 groff xscreensaver\n"
+msgstr ""
+"Die folgenden Pakete werden zurückgehalten:\n"
+" compface man-db tetex-base msql libpaper svgalib1\n"
+" gs snmp arena lynx xpat2 groff xscreensaver\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Whenever the whole system is being upgraded there is the possibility that "
+"new versions of packages cannot be installed because they require new things "
+"or conflict with already installed things. In this case the package will "
+"appear in the Kept Back list. The best way to convince packages listed there "
+"to install is with <literal>apt-get install</literal> or by using "
+"<command>dselect</command> to resolve their problems."
+msgstr ""
+"Jedesmal, wenn ein Upgrade des ganzen Systems durchgeführt wird, besteht die "
+"Möglichkeit, dass neue Versionen von Paketen nicht installiert werden "
+"können, weil sie neue Dinge benötigen oder einen Konflikt mit bereits "
+"installierten Dingen haben. In diesem Fall wird das Paket auf der Liste "
+"zurückgehaltener Pakete erscheinen. Der beste Weg dort aufgeführte Pakete "
+"zur Installation zu bewegen, ist per <literal>apt-get install</literal> oder "
+"indem <command>dselect</command> zum Lösen ihrer Probleme benutzt wird."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "Held Packages warning"
+msgstr "Warnung wegen zurückgehaltener Pakete"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following held packages will be changed:\n"
+" cvs\n"
+msgstr ""
+"Die folgenden zurückgehaltenen Pakete werden geändert:\n"
+" cvs\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Sometimes you can ask APT to install a package that is on hold, in such a "
+"case it prints out a warning that the held package is going to be changed. "
+"This should only happen during dist-upgrade or install."
+msgstr ""
+"Manchmal können Sie APT bitten, ein auf »zurückgehalten« gesetztes Paket zu "
+"installieren. In einem solchen Fall gibt es eine Warnung aus, dass das "
+"zurückgehaltene Paket geändert wird. Dies sollte nur während »Dist-upgrade« "
+"oder »Install« vorkommen."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "Final summary"
+msgstr "Abschließende Zusammenfassung"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Finally, APT will print out a summary of all the changes that will occur."
+msgstr ""
+"Abschließend wird APT eine Zusammenfassung aller Änderungen ausgeben, die "
+"auftreten werden."
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"206 packages upgraded, 8 newly installed, 23 to remove and 51 not upgraded.\n"
+"12 packages not fully installed or removed.\n"
+"Need to get 65.7M/66.7M of archives. After unpacking 26.5M will be used.\n"
+msgstr ""
+"206 Pakete aktualisiert, 8 zusätzlich installiert, 23 werden entfernt und 51 nicht aktualisiert.\n"
+"12 Pakete nicht vollständig installiert oder entfernt.\n"
+"Muss 65,7MB/66,7MB an Archiven herunterladen. Nach dem Entpacken werden 26,5MB zusätzlich belegt sein.\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The first line of the summary simply is a reduced version of all of the "
+"lists and includes the number of upgrades - that is packages already "
+"installed that have new versions available. The second line indicates the "
+"number of poorly configured packages, possibly the result of an aborted "
+"installation. The final line shows the space requirements that the "
+"installation needs. The first pair of numbers refer to the size of the "
+"archive files. The first number indicates the number of bytes that must be "
+"fetched from remote locations and the second indicates the total size of all "
+"the archives required. The next number indicates the size difference between "
+"the presently installed packages and the newly installed packages. It is "
+"roughly equivalent to the space required in /usr after everything is done. "
+"If a large number of packages are being removed then the value may indicate "
+"the amount of space that will be freed."
+msgstr ""
+"Die erste Zeile der Zusammenfassung ist bloß eine Zusammenfassung von all "
+"den Listen und umfasst die Anzahl der Upgrades – das sind bereits "
+"installierte Pakete, für die neue Versionen verfügbar sind. Die zweite Zeile "
+"zeigt die Anzahl von schlecht konfigurierten Paketen, die möglicherweise das "
+"Ergebnis einer abgebrochenen Installation sind. Die letzt Zeile zeigt den "
+"Speicherbedarf, den die Installation benötigt. Das erste Zahlenpaar bezieht "
+"sich auf die Größe der Archivdateien. Die erste Zahl zeigt die Anzahl der "
+"Bytes an, die von fernen Orten heruntergeladen werden müssen und die zweite "
+"zeigt die gesamte Größe aller benötigten Archive an. Die nächste Zahl zeigt "
+"den Größenunterschied zwischen den derzeit installierten Paketen und den neu "
+"installierten Paketen. Es entspricht ungefähr dem in /usr benötigten "
+"Speicher nachdem alles erledigt ist. Wenn eine große Anzahl Pakete entfernt "
+"wird, dann kann der Wert den Betrag des freiwerdenden Speichers anzeigen."
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Some other reports can be generated by using the -u option to show packages "
+"to upgrade, they are similar to the previous examples."
+msgstr ""
+"Einige andere Berichte können durch Benutzung der Option »-u« generiert "
+"werden, um Pakete anzuzeigen, von denen ein Upgrade durchgeführt werden "
+"soll. Dies ist den vorherigen Beispielen ähnlich."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "The Status Display"
+msgstr "Der Anzeigestatus"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"During the download of archives and package files APT prints out a series of "
+"status messages."
+msgstr ""
+"Während des Herunterladens von Archiven und Paketdateien gibt APT eine Reihe "
+"von Statusmeldungen aus."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+"11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
+msgstr ""
+"# apt-get update\n"
+"Hole:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Hole:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Treffer http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+"Hole:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Hole:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+"11% [5 testing/non-free 'Warte auf Datei' 0/32.1k 0%] 2203b/s 1m52s\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The lines starting with <emphasis>Get</emphasis> are printed out when APT "
+"begins to fetch a file while the last line indicates the progress of the "
+"download. The first percent value on the progress line indicates the total "
+"percent done of all files. Unfortunately since the size of the Package files "
+"is unknown <literal>apt-get update</literal> estimates the percent done "
+"which causes some inaccuracies."
+msgstr ""
+"Die Zeilen, die mit <emphasis>Hole</emphasis> beginnen, werden ausgegeben, "
+"wenn APT anfängt, eine Datei herunterzuladen, während die letzte Zeile den "
+"Fortschritt des Herunterladens anzeigt. Die erste Prozentzahl der "
+"Fortschrittszeile zeigt die gesamt erledigte Prozentzahl aller Dateien an. "
+"Unglücklicherweise schätzt <literal>apt-get update</literal> die erledigte "
+"Prozentzahl, da die Größe der Pakete unbekannt ist, was einige "
+"Ungenauigkeiten bewirkt."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The next section of the status line is repeated once for each download "
+"thread and indicates the operation being performed and some useful "
+"information about what is happening. Sometimes this section will simply read "
+"<emphasis>Forking</emphasis> which means the OS is loading the download "
+"module. The first word after the [ is the fetch number as shown on the "
+"history lines. The next word is the short form name of the object being "
+"downloaded. For archives it will contain the name of the package that is "
+"being fetched."
+msgstr ""
+"Der nächste Abschnitt der Statuszeile wird für jeden Download-Thread "
+"wiederholt und zeigt die durchgeführte Operation, sowie einige nützliche "
+"Informationen darüber an was geschieht. Manchmal wird dieser Abschnitt "
+"einfach nur <emphasis>Forking</emphasis> darstellen, was bedeutet, dass das "
+"Betriebssystem das Download-Modul am Laden ist. Das erste Wort nach dem »[« "
+"ist die Ladenummer, wie sie auf den Verlaufszeilen angezeigt wird. Das "
+"nächste Wort ist Name in Kurzform des Ojektes, das heruntergeladen wird. Für "
+"Archive wird es den Namen des Paketes enthalten, das heruntergeladen wird."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Inside of the single quote is an informative string indicating the progress "
+"of the negotiation phase of the download. Typically it progresses from "
+"<emphasis>Connecting</emphasis> to <emphasis>Waiting for file</emphasis> to "
+"<emphasis>Downloading</emphasis> or <emphasis>Resuming</emphasis>. The final "
+"value is the number of bytes downloaded from the remote site. Once the "
+"download begins this is represented as <literal>102/10.2k</literal> "
+"indicating that 102 bytes have been fetched and 10.2 kilobytes is expected. "
+"The total size is always shown in 4 figure notation to preserve space. After "
+"the size display is a percent meter for the file itself. The second last "
+"element is the instantaneous average speed. This values is updated every 5 "
+"seconds and reflects the rate of data transfer for that period. Finally is "
+"shown the estimated transfer time. This is updated regularly and reflects "
+"the time to complete everything at the shown transfer rate."
+msgstr ""
+"Innerhalb von einzelnen Anführungszeichen folgt eine informative "
+"Zeichenkette, die den Fortschritt der Ãœbertragungsphase des Downloads "
+"anzeigt. Normalerweise schreitet sie fort von <emphasis>Verbinde</emphasis> "
+"zu <emphasis>Warte auf Datei</emphasis> zu <emphasis>Lade herunter</"
+"emphasis> oder <emphasis>Nehme wieder auf</emphasis>. Der letzte Wert ist "
+"die Anzahl der von der fernen Site heruntergeladenen Bytes. Sobald der "
+"Download beginnt, zeigt sich dies wie <literal>102/10.2k</literal> was "
+"anzeigt, dass 102 Bytes heruntergeladen und 10,2 Kilobytes erwartet werden. "
+"Die Gesamtgröße wird immer in vierstelliger Schreibweise dargestellt, um "
+"Platz zu sparen. Nach der Größenanzeige ist eine Prozentangabe für die Datei "
+"selbst. Das zweitletzte Element ist die augenblickliche "
+"Fortschrittsgeschwindigkeit. Dieser Wert wird alle fünf Sekunden "
+"aktualisiert und spiegelt die Datenübertragungsgeschwindigkeit in dieser "
+"Periode wider. Am Ende wird die geschätzte Übertragungszeit angezeigt. Dies "
+"wird regelmäßig aktualisiert und spiegelt die Zeit zum Vervollständigen bei "
+"der angezeigten Datenübertragungsgeschwindigkeit wider."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The status display updates every half second to provide a constant feedback "
+"on the download progress while the Get lines scroll back whenever a new file "
+"is started. Since the status display is constantly updated it is unsuitable "
+"for logging to a file, use the <literal>-q</literal> option to remove the "
+"status display."
+msgstr ""
+"Die Statusanzeige aktualisiert sich alle halbe Sekunde, um eine gleichmäßige "
+"Rückmeldung über den Download-Fortschritt bereitzustellen, während die "
+"»Hole«-Zeilen bei jeder gestarteten neuen Datei zurückscrollen. Da die "
+"Statusanzeige ständig aktualisiert wird, ist sie für die Protokollierung in "
+"eine Datei ungeeignet. Benutzen Sie die Option <literal>-q</literal>, um die "
+"Statusanzeige zu entfernen."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Dpkg"
+msgstr "Dpkg"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"APT uses <command>dpkg</command> for installing the archives and will switch "
+"over to the <command>dpkg</command> interface once downloading is completed. "
+"<command>dpkg</command> will also ask a number of questions as it processes "
+"the packages and the packages themselves may also ask several questions. "
+"Before each question there is usually a description of what it is asking and "
+"the questions are too varied to discuss completely here."
+msgstr ""
+"APT benutzt <command>dpkg</command>, um die Archive zu installieren und wird "
+"zu der <command>dpkg</command>-Schnittstelle herüberschalten, sobald der "
+"Download vollständig ist. <command>dpkg</command> wird außerdem eine Reihe "
+"von Fragen stellen, während es die Pakete abarbeitet und die Pakete können "
+"auch mehrere Fragen stellen . Vor jeder Frage ist üblicherweise eine "
+"Beschreibung des Gefragten und die Fragen sind zu vielfältig, um sie "
+"vollständig hier zu besprechen."
+
+#. type: Content of: <book><title>
+#: offline.dbk
+msgid "Using APT Offline"
+msgstr "APT offline verwenden"
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: offline.dbk
+msgid ""
+"This document describes how to use APT in a non-networked environment, "
+"specifically a 'sneaker-net' approach for performing upgrades."
+msgstr ""
+"Dieses Dokument beschreibt, wie APT in einer Umgebung ohne Netzwerk, "
+"speziell einem »Turnschuhnetzwerk«, an die Durchführung von Upgrades "
+"herangeht."
+
+#. type: Content of: <book><bookinfo>
+#: offline.dbk
+msgid ""
+"<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+"<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright>"
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Introduction"
+msgstr "Einleitung"
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "Overview"
+msgstr "Ãœbersicht"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Normally APT requires direct access to a Debian archive, either from a local "
+"media or through a network. Another common complaint is that a Debian "
+"machine is on a slow link, such as a modem and another machine has a very "
+"fast connection but they are physically distant."
+msgstr ""
+"Normalerweise benötigt APT direkten Zugang zu einem Debian-Archiv, entweder "
+"von einem lokalen Medium oder über ein Netz. Eine andere häufige "
+"Beanstandung ist, dass eine Debian-Maschine an einer langsamen Anbindung, "
+"wie einem Modem, hängt und eine andere Maschine eine sehr schnelle "
+"Verbindung hat, sie jedoch physisch fern sind."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The solution to this is to use large removable media such as a Zip disc or a "
+"SuperDisk disc. These discs are not large enough to store the entire Debian "
+"archive but can easily fit a subset large enough for most users. The idea is "
+"to use APT to generate a list of packages that are required and then fetch "
+"them onto the disc using another machine with good connectivity. It is even "
+"possible to use another Debian machine with APT or to use a completely "
+"different OS and a download tool like wget. Let <emphasis>remote host</"
+"emphasis> mean the machine downloading the packages, and <emphasis>target "
+"host</emphasis> the one with bad or no connection."
+msgstr ""
+"Die Lösung dazu besteht darin, große Wechselmedien, wie eine Zip-Platte oder "
+"eine SuperDisk zu benutzen. Diese Platten sind nicht groß genug, um ein "
+"ganzes Debian-Archiv zu speichern, können aber leicht eine Untermenge "
+"aufnehmen, die für die meisten Anwender groß genug ist. Die Idee besteht "
+"darin, APT zu benutzen, um eine Liste benötigter Pakete zu generieren und "
+"diese dann mit einer anderen Maschine mit guter Verbindung auf die Platte "
+"herunterzuladen. Es ist sogar möglich, eine andere Debian-Maschine mit APT "
+"oder ein komplett unterschiedliches Betriebssystem und ein Download-Werkzeug "
+"wie Wget zu benutzen. Nennen wir die Maschine, die die Pakete herunterlädt "
+"<emphasis>ferner Rechner</emphasis> und die mit der schlechten oder "
+"fehlenden Verbindung <emphasis>Zielrechner</emphasis>."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"This is achieved by creatively manipulating the APT configuration file. The "
+"essential premise to tell APT to look on a disc for it's archive files. Note "
+"that the disc should be formatted with a filesystem that can handle long "
+"file names such as ext2, fat32 or vfat."
+msgstr ""
+"Dies wird durch kreatives Manipulieren der APT-Konfigurationsdatei erreicht. "
+"Die wesentliche Voraussetzung besteht darin, APT mitzuteilen, dass es für "
+"seine Archivdateien auf einer Platte nachsieht. Beachten Sie, dass diese "
+"Platte mit einem Dateisystem formatiert sein sollte, das mit langen "
+"Dateinamen umgehen kann, so wie ext2, fat32 oder vfat."
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Using APT on both machines"
+msgstr "APT auf beiden Maschinen benutzen"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"APT being available on both machines gives the simplest configuration. The "
+"basic idea is to place a copy of the status file on the disc and use the "
+"remote machine to fetch the latest package files and decide which packages "
+"to download. The disk directory structure should look like:"
+msgstr ""
+"Ein verfügbares APT auf beiden Maschinen stellt die einfachste Konfiguration "
+"dar. Die Grundidee besteht darin, eine Kopie der Statusdatei auf der Platte "
+"zu platzieren und die ferne Maschine zu benutzen, um die neusten "
+"Paketdateien herunterzuladen und zu entscheiden, welche Pakete "
+"heruntergeladen werden. Die Plattenverzeichnisstruktur sollte so aussehen:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" /disc/\n"
+" archives/\n"
+" partial/\n"
+" lists/\n"
+" partial/\n"
+" status\n"
+" sources.list\n"
+" apt.conf\n"
+msgstr ""
+" /Platte/\n"
+" Archive/\n"
+" partial/\n"
+" lists/\n"
+" partial/\n"
+" status\n"
+" sources.list\n"
+" apt.conf\n"
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "The configuration file"
+msgstr "Die Konfigurationsdatei"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The configuration file should tell APT to store its files on the disc and to "
+"use the configuration files on the disc as well. The sources.list should "
+"contain the proper sites that you wish to use from the remote machine, and "
+"the status file should be a copy of <emphasis>/var/lib/dpkg/status</"
+"emphasis> from the <emphasis>target host</emphasis>. Please note, if you are "
+"using a local archive you must use copy URIs, the syntax is identical to "
+"file URIs."
+msgstr ""
+"Die Konfigurationsdatei sollte APT mitteilen, dass es seine Dateien auf der "
+"Platte speichert und obendrein die Konfigurationsdateien auf der Platte "
+"benutzt. Die »sources.list« sollte genau die Sites enthalten, die Sie auf "
+"der fernen Maschine benutzen möchten und die Statusdatei sollte eine Kopie "
+"von <emphasis>/var/lib/dpkg/status</emphasis> vom <emphasis>Zielrechner</"
+"emphasis> sein. Bitte beachten Sie, falls Sie lokale Archive benutzen, dass "
+"Sie »copy«-URIs benutzen müssen. Die Syntax entspricht der von »file«-URIs."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"<emphasis>apt.conf</emphasis> must contain the necessary information to make "
+"APT use the disc:"
+msgstr ""
+"<emphasis>apt.conf</emphasis> muss die nötigen Informationen enthalten, "
+"damit APT die Platte benutzt:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" APT\n"
+" {\n"
+" /* This is not necessary if the two machines are the same arch, it tells\n"
+" the remote APT what architecture the target machine is */\n"
+" Architecture \"i386\";\n"
+"\n"
+" Get::Download-Only \"true\";\n"
+" };\n"
+"\n"
+" Dir\n"
+" {\n"
+" /* Use the disc for state information and redirect the status file from\n"
+" the /var/lib/dpkg default */\n"
+" State \"/disc/\";\n"
+" State::status \"status\";\n"
+"\n"
+" // Binary caches will be stored locally\n"
+" Cache::archives \"/disc/archives/\";\n"
+" Cache \"/tmp/\";\n"
+"\n"
+" // Location of the source list.\n"
+" Etc \"/disc/\";\n"
+" };\n"
+msgstr ""
+" APT\n"
+" {\n"
+" /* Dies ist nicht nötig, falls die beiden Maschinen die gleiche\n"
+" Architektur haben. Es teilt dem fernen APT mit, welche Architektur die\n"
+" Zielmaschine hat */\n"
+" Architecture \"i386\";\n"
+"\n"
+" Get::Download-Only \"true\";\n"
+" };\n"
+"\n"
+" Dir\n"
+" {\n"
+" /* Die Platte für Statusinformationen benutzen und die Statusdatei\n"
+" umleiten von /var/lib/dpkg default */\n"
+" State \"/disc/\";\n"
+" State::status \"status\";\n"
+"\n"
+" // Programmzwischenspeicher werden lokal gespeichert\n"
+" Cache::archives \"/disc/archives/\";\n"
+" Cache \"/tmp/\";\n"
+"\n"
+" // Ort der Quellenliste.\n"
+" Etc \"/disc/\";\n"
+" };\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"More details can be seen by examining the apt.conf man page and the sample "
+"configuration file in <emphasis>/usr/share/doc/apt/examples/apt.conf</"
+"emphasis>."
+msgstr ""
+"Weitere Details finden sich in der apt.conf-Handbuchseite und der "
+"Musterkonfigurationsdatei in <emphasis>/usr/share/doc/apt/examples/apt.conf</"
+"emphasis>."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"On the target machine the first thing to do is mount the disc and copy "
+"<emphasis>/var/lib/dpkg/status</emphasis> to it. You will also need to "
+"create the directories outlined in the Overview, <emphasis>archives/partial/"
+"</emphasis> and <emphasis>lists/partial/</emphasis>. Then take the disc to "
+"the remote machine and configure the sources.list. On the remote machine "
+"execute the following:"
+msgstr ""
+"Das Erste, was auf der Zielmaschine getan werden muss, ist das Einhängen der "
+"Platte und das Kopieren von <emphasis>/var/lib/dpkg/status</emphasis> "
+"dorthin. Sie werden außerdem die in der Übersicht umrissenen Verzeichnisse "
+"<emphasis>archives/partial/</emphasis> und <emphasis>lists/partial/</"
+"emphasis> erstellen müssen. Dann bringen Sie die Platte zu der fernen "
+"Maschine und konfigurieren Sie die »sources.list«. Führen Sie das folgende "
+"aus:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get update\n"
+" [ APT fetches the package files ]\n"
+" # apt-get dist-upgrade\n"
+" [ APT fetches all the packages needed to upgrade the target machine ]\n"
+msgstr ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get update\n"
+" [ APT lädt die Paketdateien herunter ]\n"
+" # apt-get dist-upgrade\n"
+" [ APT lädt all die Pakete herunter, die die Zielmaschine benötigt, um ein\n"
+" Upgrade durchzuführen ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The dist-upgrade command can be replaced with any other standard APT "
+"commands, particularly dselect-upgrade. You can even use an APT front end "
+"such as <emphasis>dselect</emphasis>. However this presents a problem in "
+"communicating your selections back to the local computer."
+msgstr ""
+"Der Befehl »dist-upgrade« kann durch alle anderen Standard-APT-Befehle "
+"ersetzt werden, insbesondere »dselect-upgrade«. Sie können sogar eine APT-"
+"Oberfläche, wie <emphasis>dselect</emphasis>, benutzen. Jedoch stellt dies "
+"ein Problem dar, Ihre Auswahl zurück an den lokalen Rechner zu kommunizieren."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Now the disc contains all of the index files and archives needed to upgrade "
+"the target machine. Take the disc back and run:"
+msgstr ""
+"Nun enthält die Platte alle Indexdateien und Archive, die nötig sind, um ein "
+"Upgrade der Zielmaschine druchzuführen. Bringen Sie die Platte zurück und "
+"starten Sie:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get check\n"
+" [ APT generates a local copy of the cache files ]\n"
+" # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
+" [ Or any other APT command ]\n"
+msgstr ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get check\n"
+" [ APT generiert eine lokale Kopie der Zwischenspeicherdateien ]\n"
+" # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
+" [ Oder irgendeinen anderen APT-Befehl ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"It is necessary for proper function to re-specify the status file to be the "
+"local one. This is very important!"
+msgstr ""
+"Es ist für ordentliches Funktionieren notwendig, die Statusdatei erneut als "
+"die lokale anzugeben. Dies ist sehr wichtig!"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"If you are using dselect you can do the very risky operation of copying disc/"
+"status to /var/lib/dpkg/status so that any selections you made on the remote "
+"machine are updated. I highly recommend that people only make selections on "
+"the local machine - but this may not always be possible. DO NOT copy the "
+"status file if dpkg or APT have been run in the mean time!!"
+msgstr ""
+"Wenn Sie Dselect benutzen, können Sie die sehr riskante Operation "
+"durchführen, disc/status auf /var/lib/dpkg/status zu kopieren, so dass die "
+"von Ihnen gemachte Auswahl auf der fernen Maschine aktualisiert wird. Es "
+"wird in höchstem Maße empfohlen, dass Leute nur auf der lokalen Maschine "
+"Auswahlen treffen – aber dies könnte manchmal unmöglich sein. Kopieren Sie "
+"die Statusdatei NICHT, falls Dpkg oder APT in der Zwischenzeit benutzt "
+"wurden!"
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Using APT and wget"
+msgstr "APT und Wget benutzen"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"<emphasis>wget</emphasis> is a popular and portable download tool that can "
+"run on nearly any machine. Unlike the method above this requires that the "
+"Debian machine already has a list of available packages."
+msgstr ""
+"<emphasis>wget</emphasis> ist eine populäres und portierbares Download-"
+"Werkzeug, das auf nahezu jeder Maschine laufen kann. Anders als die Methode "
+"oben wird hierfür benötigt, dass die Debian-Maschine bereits eine Liste "
+"verfügbarer Pakete hat."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The basic idea is to create a disc that has only the archive files "
+"downloaded from the remote site. This is done by using the --print-uris "
+"option to apt-get and then preparing a wget script to actually fetch the "
+"packages."
+msgstr ""
+"Die Grundidee besteht darin, eine Platte zu erzeugen, die nur die "
+"heruntergeladenen Archivdateien von der fernen Site enthält. Die wird durch "
+"Benutzen der apt-get-Option »--print-uris« und dem anschließenden "
+"Vorbereiten eines Wget-Skripts getan, um die eigentlichen Pakete "
+"herunterzuladen."
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "Operation"
+msgstr "Betrieb"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Unlike the previous technique no special configuration files are required. "
+"We merely use the standard APT commands to generate the file list."
+msgstr ""
+"Anders als bei der vorherigen Technik werden keine speziellen "
+"Konfigurationsdateien benötigt. Es werden lediglich die Standard-APT-Befehle "
+"benutzt, um die Dateiliste zu erstellen."
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # apt-get dist-upgrade\n"
+" [ Press no when prompted, make sure you are happy with the actions ]\n"
+" # apt-get -qq --print-uris dist-upgrade &gt; uris\n"
+" # awk '{print \"wget -O \" $2 \" \" $1}' &lt; uris &gt; /disc/wget-script\n"
+msgstr ""
+" # apt-get dist-upgrade \n"
+" [ Antworten Sie »nein« auf gestellte Fragen, wenn Sie mit den Aktionen\n"
+" zufrieden sind ]\n"
+" # apt-get -qq --print-uris dist-upgrade &gt; uris\n"
+" # awk '{print \"wget -O \" $2 \" \" $1}' &lt; uris &gt; /Platte/wget-script\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Any command other than dist-upgrade could be used here, including dselect-"
+"upgrade."
+msgstr ""
+"Jeder andere Befehl als »dist-upgrade« könnte hier benutzt werden, "
+"einschließlich »upgrade«."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The /disc/wget-script file will now contain a list of wget commands to "
+"execute in order to fetch the necessary archives. This script should be run "
+"with the current directory as the disc's mount point so as to save the "
+"output on the disc."
+msgstr ""
+"Die Datei /Platte/wget-script wird nun eine Liste der Wget-Befehle "
+"enthalten, um die erforderlichen Archive herunterzuladen. Dieses Skript "
+"sollte mit dem aktuellen Verzeichnis als Platteneinhängepunkt ausgeführt "
+"werden, so dass die Ausgabe auf die Platte gespeichert wird."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid "The remote machine would do something like"
+msgstr "Die ferne Maschine würde etwas wie das folgende tun"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # cd /disc\n"
+" # sh -x ./wget-script\n"
+" [ wait.. ]\n"
+msgstr ""
+" # cd /Platte\n"
+" # sh -x ./wget-script\n"
+" [ warten … Fertig ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Once the archives are downloaded and the disc returned to the Debian machine "
+"installation can proceed using,"
+msgstr ""
+"Sobald die Archive heruntergeladen und die Platte zur Debian-Maschine "
+"zurückgekehrt ist, kann die Installation fortfahren durch Benutzung von "
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
+msgstr " # apt-get -o dir::cache::archives=\"/Platte/\" dist-upgrade\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid "Which will use the already fetched archives on the disc."
+msgstr "Es wird die bereits auf die Platte heruntergeladenen Archive benutzen."
diff --git a/doc/po/es.po b/doc/po/es.po
new file mode 100644
index 000000000..f2f54f198
--- /dev/null
+++ b/doc/po/es.po
@@ -0,0 +1,11689 @@
+# apt man pages translation to Spanish
+# Copyright (C) 2003, 2004, 2009, 2010, 2012 Software in the Public Interest
+# This file is distributed under the same license as the apt package.
+#
+# Changes:
+# - Initial translation
+# Ismael Fanlo, 2003
+# Carlos Mestre, 2003
+# Rudy Godoy <rudy@kernel-panik.org>, 2003
+# Gustavo Saldumbide <gsal@adinet.com.uy>, 2003
+# Javier Fernández-Sanguino <jfs@computer.org>, 2003
+# Rubén Porras Campo <nahoo@inicia.es>, 2003, 2004
+#
+#
+# - Updates
+# Francisco Javier Cuadrado <fcocuadrado@gmail.com>, 2009, 2010
+# Omar Campagne <ocampagne@gmail.com>, 2009, 2010, 2012.
+#
+# Traductores, si no conocen el formato PO, merece la pena leer la
+# documentación de gettext, especialmente las secciones dedicadas a este
+# formato, por ejemplo ejecutando:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Equipo de traducción al español, por favor lean antes de traducir
+# los siguientes documentos:
+#
+# - El proyecto de traducción de Debian al español
+# http://www.debian.org/intl/spanish/
+# especialmente las notas y normas de traducción en
+# http://www.debian.org/intl/spanish/notas
+#
+# - La guía de traducción de po's de debconf:
+# /usr/share/doc/po-debconf/README-trans
+# o http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt-doc 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-06-01 10:51+0200\n"
+"PO-Revision-Date: 2014-07-04 01:31+0200\n"
+"Last-Translator: Omar Campagne <ocampagne@gmail.com>\n"
+"Language-Team: Debian l10n Spanish <debian-l10n-spanish@lists.debian.org>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Virtaal 0.7.1\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY apt-author.team \"\n"
+" <author>\n"
+" <othername>APT team</othername>\n"
+" <contrib></contrib>\n"
+" </author>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY apt-author.team \"\n"
+" <author>\n"
+" <othername>Equipo de APT</othername>\n"
+" <contrib></contrib>\n"
+" </author>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY apt-qapage \"\n"
+"\t<para>\n"
+"\t\t<ulink url='http://packages.qa.debian.org/a/apt.html'>QA Page</ulink>\n"
+"\t</para>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY apt-qapage \"\n"
+"\t<para>\n"
+"\t\t<ulink url='http://packages.qa.debian.org/a/apt.html'>Página de QA</ulink>\n"
+"\t</para>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Boiler plate Bug reporting section -->\n"
+"<!ENTITY manbugs \"\n"
+" <refsect1><title>Bugs</title>\n"
+" <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+" If you wish to report a bug in APT, please see\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
+" &reportbug; command.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+"<!-- Boiler plate Bug reporting section -->\n"
+"<!ENTITY manbugs \"\n"
+" <refsect1><title>Bugs</title>\n"
+" <para><ulink url='http://bugs.debian.org/src:apt'>Página de errores de APT</ulink>. \n"
+" Si quiere informar de un error en APT, consulte\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</filename> o use la orden\n"
+" &reportbug;.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Boiler plate Author section -->\n"
+"<!ENTITY manauthor \"\n"
+" <refsect1><title>Author</title>\n"
+" <para>APT was written by the APT team <email>apt@packages.debian.org</email>.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+"<!-- Boiler plate Author section -->\n"
+"<!ENTITY manauthor \"\n"
+" <refsect1><title>Autor</title>\n"
+" <para>El equipo APT <email>apt@packages.debian.org</email> escribió apt.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-commonoptions \"\n"
+" <varlistentry><term><option>-h</option></term>\n"
+" <term><option>--help</option></term>\n"
+" <listitem><para>Show a short usage summary.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-commonoptions \"\n"
+" <varlistentry><term><option>-h</option></term>\n"
+" <term><option>--help</option></term>\n"
+" <listitem><para>Muestra un mensaje corto sobre el uso.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-v</option></term>\n"
+" <term><option>--version</option></term>\n"
+" <listitem><para>Show the program version.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-v</option></term>\n"
+" <term><option>--version</option></term>\n"
+" <listitem><para>Muestra la versión del programa.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-c</option></term>\n"
+" <term><option>--config-file</option></term>\n"
+" <listitem><para>Configuration File; Specify a configuration file to use. \n"
+" The program will read the default configuration file and then this \n"
+" configuration file. If configuration settings need to be set before the\n"
+" default configuration files are parsed specify a file with the <envar>APT_CONFIG</envar>\n"
+" environment variable. See &apt-conf; for syntax information.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-c</option></term>\n"
+" <term><option>--config-file</option></term>\n"
+" <listitem><para>Fichero de configuración: Especifica el fichero de \n"
+" configuración a usar. \n"
+" El programa leerá el fichero de configuración predeterminado y, \n"
+" después, este fichero de configuración. Si necesita que ciertas \n"
+" opciones de configuración se definan antes que el análisis de los \n"
+" de los ficheros de configuración predeterminados, defina un fichero \n"
+" con la variable de entorno <envar>APT_CONFIG</envar>. \n"
+" Consulte &apt-conf; para información sobre la sintaxis.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-o</option></term>\n"
+" <term><option>--option</option></term>\n"
+" <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
+" configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
+" <option>-o</option> and <option>--option</option> can be used multiple\n"
+" times to set different options.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-o</option></term>\n"
+" <term><option>--option</option></term>\n"
+" <listitem><para>Define una opción de configuración: Esto definirá una opción\n"
+" arbitraria de configuración. La sintaxis es <option>-o Algo::Cosa=cosa</option>.\n"
+" <option>-o</option> y <option>--option</option> se pueden usar varias\n"
+" veces para definir diferentes opciones.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-cmdblurb \"\n"
+" <para>All command line options may be set using the configuration file, the\n"
+" descriptions indicate the configuration option to set. For boolean\n"
+" options you can override the config file by using something like \n"
+" <option>-f-</option>,<option>--no-f</option>, <option>-f=no</option>\n"
+" or several other variations.\n"
+" </para>\n"
+"\">\n"
+msgstr ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-cmdblurb \"\n"
+" <para>Todas las opciones de la línea de órdenes se pueden definir\n"
+" mediante el fichero de configuración, las descripciones indican la\n"
+" opción de la configuración a definir. Para opciones de tipo «boolean»\n"
+" puede invalidar el fichero de configuración utilizando algo como\n"
+" <option>-f-</option>,<option>--no-f</option>, <option>-f=no</option>\n"
+" u otras muchas variaciones.\n"
+" </para>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-aptconf \"\n"
+" <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>\n"
+" <listitem><para>APT configuration file.\n"
+" Configuration Item: <literal>Dir::Etc::Main</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-aptconf \"\n"
+" <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>\n"
+" <listitem><para>Fichero de configuración de APT.\n"
+" Opción de configuración: <literal>Dir::Etc::Main</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
+" <listitem><para>APT configuration file fragments.\n"
+" Configuration Item: <literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
+" <listitem><para>Fragmentos del fichero de configuración de APT.\n"
+" Opción de configuración: <literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-cachearchives \"\n"
+" <varlistentry><term><filename>&cachedir;/archives/</filename></term>\n"
+" <listitem><para>Storage area for retrieved package files.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-cachearchives \"\n"
+" <varlistentry><term><filename>&cachedir;/archives/</filename></term>\n"
+" <listitem><para>Ãrea de almacenamiento para los ficheros de paquetes descargados.\n"
+" Opción de configuración: <literal>Dir::Cache::Archives</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>\n"
+" <listitem><para>Storage area for package files in transit.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>\n"
+" <listitem><para>Ãrea de almacenamiento para los ficheros de paquetes en tránsito.\n"
+" Opción de configuración: <literal>Dir::Cache::Archives</literal> (se añade <filename>partial</filename>de forma implícita)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-preferences \"\n"
+" <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
+" <listitem><para>Version preferences file.\n"
+" This is where you would specify &quot;pinning&quot;,\n"
+" i.e. a preference to get certain packages\n"
+" from a separate source\n"
+" or from a different version of a distribution.\n"
+" Configuration Item: <literal>Dir::Etc::Preferences</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-preferences \"\n"
+" <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
+" <listitem><para>Ficheros de preferencias de versión.\n"
+" Aquí puede especificar el anclaje (&quot;pinning&quot;),\n"
+" una preferencia para conseguir ciertos paquetes a partir de\n"
+" una fuente diferente o de una versión diferente de una distribución.\n"
+" Opción de configuración: <literal>Dir::Etc::Preferences</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>\n"
+" <listitem><para>File fragments for the version preferences.\n"
+" Configuration Item: <literal>Dir::Etc::PreferencesParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>\n"
+" <listitem><para>Fragmentos de fichero para las preferencias de la versión.\n"
+" Opción de configuración: <literal>Dir::Etc::PreferencesParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-sourceslist \"\n"
+" <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+" <listitem><para>Locations to fetch packages from.\n"
+" Configuration Item: <literal>Dir::Etc::SourceList</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-sourceslist \"\n"
+" <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+" <listitem><para>Ubicaciones de dónde conseguir los paquetes.\n"
+" Opción de configuración: <literal>Dir::Etc::SourceList</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
+" <listitem><para>File fragments for locations to fetch packages from.\n"
+" Configuration Item: <literal>Dir::Etc::SourceParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
+" <listitem><para>Fragmentos de fichero para las ubicaciones de dónde descargar los paquetes.\n"
+" Opción de configuración: <literal>Dir::Etc::SourceParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-statelists \"\n"
+" <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
+" <listitem><para>Storage area for state information for each package resource specified in\n"
+" &sources-list;\n"
+" Configuration Item: <literal>Dir::State::Lists</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-statelists \"\n"
+" <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
+" <listitem><para>Ãrea de almacenamiento para la información del estado\n"
+" de cada fuente de paquetes especificado en &sources-list;\n"
+" Opción de configuración: <literal>Dir::State::Lists</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>\n"
+" <listitem><para>Storage area for state information in transit.\n"
+" Configuration Item: <literal>Dir::State::Lists</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>\n"
+" <listitem><para>Ãrea de almacenamiento para la información de estado en tránsito.\n"
+" Elemento de configuración: <literal>Dir::State::Lists</literal> (se añade <filename>partial</filename> de forma implícita)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-trustedgpg \"\n"
+" <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
+" <listitem><para>Keyring of local trusted keys, new keys will be added here.\n"
+" Configuration Item: <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-trustedgpg \"\n"
+" <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
+" <listitem><para>Registro de claves de las claves locales de confianza,\n"
+" las claves nuevas se añadirán aquí.\n"
+" Elemento de configuración: <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
+" <listitem><para>File fragments for the trusted keys, additional keyrings can\n"
+" be stored here (by other packages or the administrator).\n"
+" Configuration Item <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
+" <listitem><para>Fragmentos de fichero de claves de confianza, se pueden\n"
+" añadir en este directorio registros de claves adicionales (por otros\n"
+" paquetes o el administrador.\n"
+" Elemento de configuración: <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-extended_states \"\n"
+" <varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>\n"
+" <listitem><para>Status list of auto-installed packages.\n"
+" Configuration Item: <literal>Dir::State::extended_states</literal>.\n"
+" </para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY file-extended_states \"\n"
+" <varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>\n"
+" <listitem><para>Lista de estado de paquetes automáticamente instalados.\n"
+" Elemento de configuración: <literal>Dir::State::extended_states</literal>.\n"
+" </para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is the section header for the following paragraphs - comparable\n"
+" to the other headers like NAME and DESCRIPTION and should therefore be uppercase. -->\n"
+"<!ENTITY translation-title \"TRANSLATION\">\n"
+msgstr ""
+"<!-- TRANSLATOR: This is the section header for the following paragraphs - comparable\n"
+" to the other headers like NAME and DESCRIPTION and should therefore be uppercase. -->\n"
+"<!ENTITY translation-title \"TRADUCCIÓN\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is a placeholder. You should write here who has contributed\n"
+" to the translation in the past, who is responsible now and maybe further information\n"
+" specially related to your translation. -->\n"
+"<!ENTITY translation-holder \"\n"
+" The english translation was done by John Doe <email>john@doe.org</email> in 2009,\n"
+" 2010 and Daniela Acme <email>daniela@acme.us</email> in 2010 together with the\n"
+" Debian Dummy l10n Team <email>debian-l10n-dummy@lists.debian.org</email>.\n"
+"\">\n"
+msgstr ""
+"<!-- TRANSLATOR: This is a placeholder. You should write here who has contributed\n"
+" to the translation in the past, who is responsible now and maybe further information\n"
+" specially related to your translation. -->\n"
+"<!ENTITY translation-holder \"\n"
+" La traducción al español la realizaron Ismael Fanlo, Carlos Mestre,\n"
+" Rudy Godoy, Gustavo Saldumbide, Javier Fernández-Sanguino y Rubén\n"
+" Porras Campo entre los años 2003 y 2004. La traducción fue actualizada\n"
+" por Francisco Javier Cuadrado y Omar Campagne Polaino entre los años\n"
+" 2009 y 2012 .\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: As a translation is allowed to have 20% of untranslated/fuzzy strings\n"
+" in a shipped manpage newer/modified paragraphs will maybe appear in english in\n"
+" the generated manpage. This sentence is therefore here to tell the reader that this\n"
+" is not a mistake by the translator - obviously the target is that at least for stable\n"
+" releases this sentence is not needed. :) -->\n"
+"<!ENTITY translation-english \"\n"
+" Note that this translated document may contain untranslated parts.\n"
+" This is done on purpose, to avoid losing content when the\n"
+" translation is lagging behind the original content.\n"
+"\">\n"
+msgstr ""
+"<!-- TRANSLATOR: As a translation is allowed to have 20% of untranslated/fuzzy strings\n"
+" in a shipped manpage newer/modified paragraphs will maybe appear in english in\n"
+" the generated manpage. This sentence is therefore here to tell the reader that this\n"
+" is not a mistake by the translator - obviously the target is that at least for stable\n"
+" releases this sentence is not needed. :) -->\n"
+"<!ENTITY translation-english \"\n"
+" Tenga en cuenta que este documento puede contener secciones sin\n"
+" traducir. Esto es intencionado para evitar perder contenido cuando\n"
+" la traducción no está actualizada con respecto al documento original.\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
+"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
+"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -c=config_file e.g. -c=./apt.conf --> <!ENTITY "
+"synopsis-config-file \"config_file\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -c=config_file e.g. -c=./apt.conf --> <!ENTITY "
+"synopsis-config-file \"config_file\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
+"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"\"target_release\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
+"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"\"target_release\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -a=architecture e.g. -a=armel --> <!ENTITY "
+"synopsis-architecture \"architecture\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -a=architecture e.g. -a=armel --> <!ENTITY "
+"synopsis-architecture \"architecture\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-get install pkg e.g. apt-get install awesome "
+"--> <!ENTITY synopsis-pkg \"pkg\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-get install pkg e.g. apt-get install awesome "
+"--> <!ENTITY synopsis-pkg \"pkg\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in pkg=pkg_version_number e.g. apt=0.8.15 --> <!"
+"ENTITY synopsis-pkg-ver-number \"pkg_version_number\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in pkg=pkg_version_number e.g. apt=0.8.15 --> <!"
+"ENTITY synopsis-pkg-ver-number \"pkg_version_number\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache pkgnames prefix e.g. apt-cache "
+"pkgnames apt --> <!ENTITY synopsis-prefix \"prefix\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-cache pkgnames prefix e.g. apt-cache "
+"pkgnames apt --> <!ENTITY synopsis-prefix \"prefix\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache search regex e.g. apt-cache search "
+"awesome --> <!ENTITY synopsis-regex \"regex\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-cache search regex e.g. apt-cache search "
+"awesome --> <!ENTITY synopsis-regex \"regex\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
+"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
+"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates -t=temporary_directory e.g. "
+"apt-extracttemplates -t=/tmp --> <!ENTITY synopsis-tmp-directory "
+"\"temporary_directory\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates -t=temporary_directory e.g. "
+"apt-extracttemplates -t=/tmp --> <!ENTITY synopsis-tmp-directory "
+"\"temporary_directory\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates filename --> <!ENTITY "
+"synopsis-filename \"filename\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates filename --> <!ENTITY "
+"synopsis-filename \"filename\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-path \"path\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-path \"path\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-override "
+"\"override-file\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-override "
+"\"override-file\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-pathprefix "
+"\"pathprefix\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-pathprefix "
+"\"pathprefix\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"generate section --> <!ENTITY synopsis-section \"section\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"generate section --> <!ENTITY synopsis-section \"section\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+msgid "8"
+msgstr "8"
+
+#. type: Content of: <refentry><refmeta><refmiscinfo>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "APT"
+msgstr "APT"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.8.xml
+msgid "command-line interface"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "Description"
+msgstr "Descripción"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"<command>apt</command> provides a high-level commandline interface for the "
+"package management system. It is intended as an end user interface and "
+"enables some options better suited for interactive usage by default compared "
+"to more specialized APT tools like &apt-get; and &apt-cache;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"Much like <command>apt</command> itself, its manpage is intended as an end "
+"user interface and as such only mentions the most used commands and options "
+"partly to not duplicate information in multiple places and partly to avoid "
+"overwhelming readers with a cornucopia of options and details."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(&apt-get;)"
+msgstr "(&apt-get;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>update</option> is used to download package information from all "
+"configured sources. Other commands operate on this data to e.g. perform "
+"package upgrades or search in and display details about all packages "
+"available for installation."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>upgrade</option> is used to install available upgrades of all "
+"packages currently installed on the system from the sources configured via "
+"&sources-list;. New packages will be installed if required to satisfy "
+"dependencies, but existing packages will never be removed. If an upgrade for "
+"a package requires the remove of an installed package the upgrade for this "
+"package isn't performed."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>full-upgrade</literal> performs the function of upgrade but will "
+"remove currently installed packages if this is needed to upgrade the system "
+"as a whole."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml apt-key.8.xml
+msgid ","
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Performs the requested action on one or more packages specified via &regex;, "
+"&glob; or exact match. The requested action can be overridden for specific "
+"packages by append a plus (+) to the package name to install this package or "
+"a minus (-) to remove it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+#, fuzzy
+#| msgid ""
+#| "A specific version of a package can be selected for installation by "
+#| "following the package name with an equals and the version of the package "
+#| "to select. This will cause that version to be located and selected for "
+#| "install. Alternatively a specific distribution can be selected by "
+#| "following the package name with a slash and the version of the "
+#| "distribution or the Archive name (stable, testing, unstable)."
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals (=) and the version of the package "
+"to select. Alternatively the version from a specific release can be selected "
+"by following the package name with a forward slash (/) and codename (&debian-"
+"stable-codename;, &debian-testing-codename;, sid …) or suite name (stable, "
+"testing, unstable). This will also select versions from this release for "
+"dependencies of this package if needed to satisfy the request."
+msgstr ""
+"Puede seleccionar una versión especifica de un paquete poniendo a "
+"continuación del nombre del paquete un símbolo igual («=») seguido de la "
+"versión deseada. Esto provocará que se localice y seleccione esa versión "
+"para su instalación. Alternativamente se puede seleccionar una distribución "
+"específica poniendo a continuación del nombre del paquete una barra («/») "
+"seguida de la versión de la distribución o su nombre en el archivo de Debian "
+"(stable, testing, unstable)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Removing a package removes all packaged data, but leaves usually small "
+"(modified) user configuration files behind, in case the remove was an "
+"accident. Just issuing an installation request for the accidentally removed "
+"package will restore its function as before in that case. On the other hand "
+"you can get rid of these leftovers by calling <command>purge</command> even "
+"on already removed packages. Note that this does not affect any data or "
+"configuration stored in your home directory."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>autoremove</literal> is used to remove packages that were "
+#| "automatically installed to satisfy dependencies for other packages and "
+#| "are now no longer needed."
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed as dependencies changed or the package(s) needing them "
+"were removed in the meantime."
+msgstr ""
+"<literal>autoremove</literal> desinstala paquetes que se instalaron "
+"automáticamente para satisfacer las dependencias de otros paquetes pero que "
+"ya no son necesarios."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"You should check that the list does not include applications you have grown "
+"to like even though they were once installed just as a dependency of another "
+"package. You can mark such a package as manually installed by using &apt-"
+"mark;. Packages which you have installed explicitly via <command>install</"
+"command> are also never proposed for automatic removal."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(&apt-cache;)"
+msgstr "(&apt-cache;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>search</option> can be used to search for the given &regex; term(s) "
+"in the list of available packages and display matches. This can e.g. be "
+"useful if you are looking for packages having a specific feature. If you "
+"are looking for a package including a specific file try &apt-file;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Show information about the given package(s) including its dependencies, "
+"installation and download size, sources the package is available from, the "
+"description of the packages content and much more. It can e.g. be helpful to "
+"look at this information before allowing &apt; to remove a package or while "
+"searching for new packages to install."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(work-in-progress)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>list</option> is somewhat similar to <command>dpkg-query --list</"
+"command> in that it can display a list of packages satisfying certain "
+"criteria. It supports &glob; patterns for matching package names as well as "
+"options to list installed (<option>--installed</option>), upgradeable "
+"(<option>--upgradeable</option>) or all available (<option>--all-versions</"
+"option>) versions."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>edit-sources</literal> lets you edit your &sources-list; files in "
+"your preferred texteditor while also providing basic sanity checks."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml
+msgid "Script Usage and Differences from Other APT Tools"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"The &apt; commandline is designed as an end-user tool and it may change "
+"behavior between versions. While it tries not to break backward "
+"compatibility this is not guaranteed either if a change seems beneficial for "
+"interactive use."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"All features of &apt; are available in dedicated APT tools like &apt-get; "
+"and &apt-cache; as well. &apt; just changes the default value of some "
+"options (see &apt-conf; and specifically the Binary scope). So you should "
+"prefer using these commands (potentially with some additional options "
+"enabled) in your scripts as they keep backward compatibility as much as "
+"possible."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "See Also"
+msgstr "Véase también"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+#, fuzzy
+#| msgid ""
+#| "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, "
+#| "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, &apt-"
+#| "preferences;, the APT Howto."
+msgid ""
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
+"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+msgstr ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, "
+"&apt-config;, &apt-secure;, la guía de usuario de APT en &guidesdir;, &apt-"
+"preferences;, el Cómo de APT."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-cdrom.8.xml
+#: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml
+msgid "Diagnostics"
+msgstr "Diagnósticos"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"<command>apt</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+"<command>apt</command> devuelve cero si no hay ningún error, y el valor 100 "
+"en caso de error."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-get.8.xml
+msgid "APT package handling utility -- command-line interface"
+msgstr ""
+"Herramienta de gestión de paquetes APT -- interfaz para la línea de órdenes"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "<command>apt-get</command> is the command-line tool for handling "
+#| "packages, and may be considered the user's \"back-end\" to other tools "
+#| "using the APT library. Several \"front-end\" interfaces exist, such as "
+#| "&dselect;, &aptitude;, &synaptic; and &wajig;."
+msgid ""
+"<command>apt-get</command> is the command-line tool for handling packages, "
+"and may be considered the user's \"back-end\" to other tools using the APT "
+"library. Several \"front-end\" interfaces exist, such as &aptitude;, "
+"&synaptic; and &wajig;."
+msgstr ""
+"<command>apt-get</command> es la herramienta para la gestión de paquetes "
+"desde la línea de órdenes, y se puede considerar el sistema de «bajo nivel» "
+"de otras herramientas de usuario que usan la biblioteca de APT. Existen "
+"varias interfaces de «alto nivel», tales como &dselect;, &aptitude;, "
+"&synaptic; y &wajig;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml apt-cache.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt-ftparchive.1.xml
+msgid ""
+"Unless the <option>-h</option>, or <option>--help</option> option is given, "
+"one of the commands below must be present."
+msgstr ""
+"A menos que se use la opción <option>-h</option> o <option>--help</option>, "
+"una de las siguientes órdenes debe estar presente."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>update</literal> is used to resynchronize the package index files "
+"from their sources. The indexes of available packages are fetched from the "
+"location(s) specified in <filename>/etc/apt/sources.list</filename>. For "
+"example, when using a Debian archive, this command retrieves and scans the "
+"<filename>Packages.gz</filename> files, so that information about new and "
+"updated packages is available. An <literal>update</literal> should always be "
+"performed before an <literal>upgrade</literal> or <literal>dist-upgrade</"
+"literal>. Please be aware that the overall progress meter will be incorrect "
+"as the size of the package files cannot be known in advance."
+msgstr ""
+"<literal>update</literal> se usa para sincronizar el índice de paquetes "
+"desde sus fuentes. Los índices de paquetes disponibles se obtienen de los "
+"lugares especificados en <filename>/etc/apt/sources.list</filename>. Por "
+"ejemplo, cuando se usa un archivo de Debian, esta orden descarga y analiza "
+"los ficheros <filename>Packages.gz</filename>, de tal forma que la "
+"información acerca de los nuevos paquetes pasa a estar disponible. Siempre "
+"se debe realizar un <literal>update</literal> antes de un <literal>upgrade</"
+"literal> o un <literal>dist-upgrade</literal>. Tenga en cuenta que el "
+"indicador de progreso será incorrecto, ya que se desconoce de antemano el "
+"tamaño de los archivos de paquete."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>upgrade</literal> is used to install the newest versions of all "
+"packages currently installed on the system from the sources enumerated in "
+"<filename>/etc/apt/sources.list</filename>. Packages currently installed "
+"with new versions available are retrieved and upgraded; under no "
+"circumstances are currently installed packages removed, or packages not "
+"already installed retrieved and installed. New versions of currently "
+"installed packages that cannot be upgraded without changing the install "
+"status of another package will be left at their current version. An "
+"<literal>update</literal> must be performed first so that <command>apt-get</"
+"command> knows that new versions of packages are available."
+msgstr ""
+"<literal>upgrade</literal> se usa para instalar la versión más nueva de "
+"todos los paquetes instalados en el sistema provenientes de alguna de las "
+"fuentes listadas en <filename>/etc/apt/sources.list</filename>. Los paquetes "
+"instalados con una nueva versión disponible se descargan y actualizan, y "
+"bajo ninguna circunstancia se desinstalarán paquetes, o se instalarán "
+"paquetes nuevos. Las nuevas versiones de programas instalados que no se "
+"puedan actualizar sin cambiar el estado de instalación de otros paquetes no "
+"se instalarán, manteniéndose la versión actual. Debe realizar un "
+"<literal>update</literal> antes para que <command>apt-get</command> sepa que "
+"hay nuevas versiones disponibles."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>dist-upgrade</literal> in addition to performing the function of "
+"<literal>upgrade</literal>, also intelligently handles changing dependencies "
+"with new versions of packages; <command>apt-get</command> has a \"smart\" "
+"conflict resolution system, and it will attempt to upgrade the most "
+"important packages at the expense of less important ones if necessary. The "
+"<literal>dist-upgrade</literal> command may therefore remove some packages. "
+"The <filename>/etc/apt/sources.list</filename> file contains a list of "
+"locations from which to retrieve desired package files. See also &apt-"
+"preferences; for a mechanism for overriding the general settings for "
+"individual packages."
+msgstr ""
+"<literal>dist-upgrade</literal>, además de realizar las acciones de "
+"<literal>upgrade</literal>, trata inteligentemente los cambios de "
+"dependencias debidos a las nuevas versiones de paquetes. <command>apt-get</"
+"command> tiene un sistema «inteligente» de resolución de conflictos, y si es "
+"necesario tratará de actualizar los paquetes más importantes a costa de los "
+"menos importantes. Por ello, puede que la orden <literal>dist-upgrade</"
+"literal> elimine algunos paquetes. El fichero <filename>/etc/apt/sources."
+"list</filename> contiene una lista de sitios desde los que descargar los "
+"ficheros de paquetes. También puede consultar &apt-preferences; si quiere "
+"invalidar este comportamiento para paquetes individuales."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>dselect-upgrade</literal> is used in conjunction with the "
+"traditional Debian packaging front-end, &dselect;. <literal>dselect-upgrade</"
+"literal> follows the changes made by &dselect; to the <literal>Status</"
+"literal> field of available packages, and performs the actions necessary to "
+"realize that state (for instance, the removal of old and the installation of "
+"new packages)."
+msgstr ""
+"<literal>dselect-upgrade</literal> se usa junto al tradicional administrador "
+"de paquetes de Debian, &dselect;. <literal>dselect-upgrade</literal> "
+"registra los cambios que haya hecho &dselect; al campo <literal>Status</"
+"literal> (estado) de los paquetes disponibles y realiza las acciones "
+"necesarias para que los cambios se lleven a cabo (por ejemplo, borrar "
+"paquetes antiguos e instalar las nuevas versiones)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>install</literal> is followed by one or more packages desired for "
+"installation or upgrading. Each package is a package name, not a fully "
+"qualified filename (for instance, in a Debian system, <package>apt-utils</"
+"package> would be the argument provided, not <filename>apt-utils_&apt-"
+"product-version;_amd64.deb</filename>). All packages required by the "
+"package(s) specified for installation will also be retrieved and installed. "
+"The <filename>/etc/apt/sources.list</filename> file is used to locate the "
+"desired packages. If a hyphen is appended to the package name (with no "
+"intervening space), the identified package will be removed if it is "
+"installed. Similarly a plus sign can be used to designate a package to "
+"install. These latter features may be used to override decisions made by apt-"
+"get's conflict resolution system."
+msgstr ""
+"<literal>install</literal> instala o actualiza los paquetes que siguen a la "
+"palabra «install». Cada paquete es un nombre de paquete, y no el nombre "
+"completo del fichero del paquete (por ejemplo, en un sistema Debian GNU/"
+"Linux, el argumento sería <package>apt-utils</package>, y no <filename>apt-"
+"utils_&apt-product-version;_amd64.deb</filename>). Se obtendrán e instalarán "
+"todos los paquetes necesarios por los paquetes especificados para la "
+"instalación. El fichero <filename>/etc/apt/sources.list</filename> se "
+"utiliza para ubicar los paquetes. Si se antepone un guión al nombre del "
+"paquete (sin ningún espacio) el paquete se desinstalará en vez de instalar. "
+"De forma similar, el signo de suma se puede usar para especificar que un "
+"paquete se debe instalar. Estas últimas características se pueden usar para "
+"invalidar las decisiones tomadas por el sistema de resolución de conflictos "
+"de apt-get."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals and the version of the package to "
+"select. This will cause that version to be located and selected for install. "
+"Alternatively a specific distribution can be selected by following the "
+"package name with a slash and the version of the distribution or the Archive "
+"name (stable, testing, unstable)."
+msgstr ""
+"Puede seleccionar una versión especifica de un paquete poniendo a "
+"continuación del nombre del paquete un símbolo igual («=») seguido de la "
+"versión deseada. Esto provocará que se localice y seleccione esa versión "
+"para su instalación. Alternativamente se puede seleccionar una distribución "
+"específica poniendo a continuación del nombre del paquete una barra («/») "
+"seguida de la versión de la distribución o su nombre en el archivo de Debian "
+"(stable, testing, unstable)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Both of the version selection mechanisms can downgrade packages and must be "
+"used with care."
+msgstr ""
+"Cualquiera de estos dos métodos de selección puede instalar una versión "
+"anterior de los paquetes y se debe utilizar con precaución."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This is also the target to use if you want to upgrade one or more already-"
+"installed packages without upgrading every package you have on your system. "
+"Unlike the \"upgrade\" target, which installs the newest version of all "
+"currently installed packages, \"install\" will install the newest version of "
+"only the package(s) specified. Simply provide the name of the package(s) "
+"you wish to upgrade, and if a newer version is available, it (and its "
+"dependencies, as described above) will be downloaded and installed."
+msgstr ""
+"Esto también es el objetivo a usar si quiere actualizar uno o más paquetes "
+"instalados sin actualizar todos los paquetes del sistema. A diferencia del "
+"objetivo de «upgrade», que instala la versión más nueva de todos los "
+"paquetes instalados, «install» instalará la versión más nueva sólo de los "
+"paquetes especificados. Simplemente proporcione el nombre de los paquetes "
+"que quiere actualizar, y si una versión más nueva está disponible ésta (y "
+"sus dependencias, como se describió anteriormente) se descargarán e "
+"instalarán."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Finally, the &apt-preferences; mechanism allows you to create an alternative "
+"installation policy for individual packages."
+msgstr ""
+"Por último, &apt-preferences; permite modificar las normas de selección para "
+"paquetes individuales."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If no package matches the given expression and the expression contains one "
+"of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and "
+"it is applied to all package names in the database. Any matches are then "
+"installed (or removed). Note that matching is done by substring so 'lo.*' "
+"matches 'how-lo' and 'lowest'. If this is undesired, anchor the regular "
+"expression with a '^' or '$' character, or create a more specific regular "
+"expression."
+msgstr ""
+"Si ningún paquete coincide con la expresión proporcionada y la expresión "
+"contiene un «.», «?» o un «*», entonces se asume que es una expresión "
+"regular de acuerdo con el estándar POSIX, y se aplica a todos los nombres de "
+"paquetes de la base de datos. Cualquier coincidencia se instala (o "
+"desinstala). Tenga en cuenta que la comparación se hace en subcadenas, de "
+"manera que «lo.*» es válido para «how-lo» y para «lowest». Si este no es el "
+"comportamiento deseado, debe anclar la expresión regular con un «^» o un "
+"«$», o bien crear una expresión regular más específica."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>remove</literal> is identical to <literal>install</literal> except "
+"that packages are removed instead of installed. Note that removing a package "
+"leaves its configuration files on the system. If a plus sign is appended to "
+"the package name (with no intervening space), the identified package will be "
+"installed instead of removed."
+msgstr ""
+"<literal>remove</literal> se comporta del mismo modo que <literal>install</"
+"literal> con la diferencia de que elimina los paquetes en vez de "
+"instalarlos. Tenga en cuenta que al eliminar un paquete sus ficheros de "
+"configuración permanecen en el sistema. Si un signo de suma precede al "
+"nombre del paquete (sin ningún espacio en blanco entre los dos), el paquete "
+"en cuestión será instalado en vez de eliminado."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>purge</literal> is identical to <literal>remove</literal> except "
+"that packages are removed and purged (any configuration files are deleted "
+"too)."
+msgstr ""
+"<literal>purge</literal> es idéntico a <literal>remove</literal>, con la "
+"diferencia de que los paquetes se eliminarán y purgarán (se eliminará "
+"también cualquier fichero de configuración)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>source</literal> causes <command>apt-get</command> to fetch source "
+"packages. APT will examine the available packages to decide which source "
+"package to fetch. It will then find and download into the current directory "
+"the newest available version of that source package while respecting the "
+"default release, set with the option <literal>APT::Default-Release</"
+"literal>, the <option>-t</option> option or per package with the "
+"<literal>pkg/release</literal> syntax, if possible."
+msgstr ""
+"<literal>source</literal> hace que <command>apt-get</command> descargue los "
+"paquetes fuente. APT examinará los paquetes disponibles para decidir qué "
+"paquete fuente descargará. Entonces descargará la versión más reciente del "
+"paquete fuente en el directorio actual respetando la versión predeterminada, "
+"que se define en la opción <literal>APT::Default-Release</literal>, la "
+"opción <option>-t</option> o según el paquete con la sintaxis <literal>pkg/"
+"release</literal>, si es posible."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Source packages are tracked separately from binary packages via <literal>deb-"
+"src</literal> lines in the &sources-list; file. This means that you will "
+"need to add such a line for each repository you want to get sources from; "
+"otherwise you will probably get either the wrong (too old/too new) source "
+"versions or none at all."
+msgstr ""
+"Los paquetes fuente se registran de forma separada de los paquetes binarios "
+"mediante líneas del tipo <literal>deb-src</literal> en el fichero &sources-"
+"list;. Esto significa que debe añadir una línea como ésta para cada "
+"repositorio del que quiera conseguir las fuentes. En caso contrario podría "
+"obtener una versión de fuentes distinta (demasiado antigua/reciente) o "
+"ninguna."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If the <option>--compile</option> option is specified then the package will "
+"be compiled to a binary .deb using <command>dpkg-buildpackage</command> for "
+"the architecture as defined by the <command>--host-architecture</command> "
+"option. If <option>--download-only</option> is specified then the source "
+"package will not be unpacked."
+msgstr ""
+"Si se especifica la opción <option>--compile</option> el paquete se "
+"compilará en un binario «.deb» utilizando <command>dpkg-buildpackage</"
+"command> para la arquitectura definida con la opción <command>--host-"
+"architecture</command>. Si se especifica <option>--download-only</option> el "
+"paquete fuente no se desempaquetará."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"A specific source version can be retrieved by postfixing the source name "
+"with an equals and then the version to fetch, similar to the mechanism used "
+"for the package files. This enables exact matching of the source package "
+"name and version, implicitly enabling the <literal>APT::Get::Only-Source</"
+"literal> option."
+msgstr ""
+"Puede obtener una versión especifica de un paquete fuente insertando un "
+"signo igual («=») seguido de la versión a descargar después del nombre del "
+"paquete, de forma similar al método que se usa con los paquetes binarios. "
+"Esto permite seleccionar exactamente el nombre y versión del paquete fuente, "
+"activando implícitamente la opción <literal>APT::Get::Only-Source</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Note that source packages are not installed and tracked in the "
+"<command>dpkg</command> database like binary packages; they are simply "
+"downloaded to the current directory, like source tarballs."
+msgstr ""
+"Tenga en cuenta que los paquetes fuente no se instalan ni registran en la "
+"base de datos de <command>dpkg</command> como sí lo hacen los binarios. Sólo "
+"se descargan al directorio actual en la forma de archivos tar de fuentes."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>build-dep</literal> causes apt-get to install/remove packages in an "
+"attempt to satisfy the build dependencies for a source package. By default "
+"the dependencies are satisfied to build the package natively. If desired a "
+"host-architecture can be specified with the <option>--host-architecture</"
+"option> option instead."
+msgstr ""
+"<literal>build-dep</literal> procova que apt-get instale/elimine paquetes "
+"para intentar satisfacer las dependencias de construcción de un paquete "
+"fuente. Por omisión, las dependencias se satisfacen para construir el "
+"paquete de forma nativa. También se puede definir la arquitectura anfitrión "
+"<option>--host-architecture</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>check</literal> is a diagnostic tool; it updates the package cache "
+"and checks for broken dependencies."
+msgstr ""
+"<literal>check</literal> es una herramienta de diagnóstico, actualiza la "
+"caché de paquetes y revisa la existencia de dependencias rotas."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>download</literal> will download the given binary package into the "
+"current directory."
+msgstr ""
+"<literal>download</literal> descarga el paquete binario introducido al "
+"directorio actual."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>clean</literal> clears out the local repository of retrieved "
+#| "package files. It removes everything but the lock file from "
+#| "<filename>&cachedir;/archives/</filename> and <filename>&cachedir;/"
+#| "archives/partial/</filename>. When APT is used as a &dselect; method, "
+#| "<literal>clean</literal> is run automatically. Those who do not use "
+#| "dselect will likely want to run <literal>apt-get clean</literal> from "
+#| "time to time to free up disk space."
+msgid ""
+"<literal>clean</literal> clears out the local repository of retrieved "
+"package files. It removes everything but the lock file from "
+"<filename>&cachedir;/archives/</filename> and <filename>&cachedir;/archives/"
+"partial/</filename>."
+msgstr ""
+"<literal>clean</literal> borra totalmente el repositorio local que contiene "
+"los ficheros de los paquetes descargados. Borra todo excepto el fichero de "
+"bloqueo de los directorios <filename>&cachedir;/archives/</filename> y "
+"<filename>&cachedir;/archives/partial/</filename>. Cuando APT se usa como un "
+"método de &dselect;, <literal>clean</literal> se ejecuta automáticamente. Si "
+"no usa dselect es probable que desee ejecutar <literal>apt-get clean</"
+"literal> de vez en cuando para liberar algo de espacio en disco."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "(and the"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias since 1.1)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Like <literal>clean</literal>, <literal>autoclean</literal> clears out the "
+"local repository of retrieved package files. The difference is that it only "
+"removes package files that can no longer be downloaded, and are largely "
+"useless. This allows a cache to be maintained over a long period without it "
+"growing out of control. The configuration option <literal>APT::Clean-"
+"Installed</literal> will prevent installed packages from being erased if it "
+"is set to off."
+msgstr ""
+"Al igual que <literal>clean</literal>, <literal>autoclean</literal> borra el "
+"repositorio local de paquetes descargados. La diferencia reside en que sólo "
+"borrará aquellos paquetes que ya no se pueden descargar, o que son "
+"claramente inservibles. Esto permite mantener el almacén durante largos "
+"periodos de tiempo sin que aumente su tamaño descontroladamente. Si la "
+"opción de configuración <literal>APT::Clean-Installed</literal> está "
+"desactivada impedirá que se borren los paquetes instalados."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed."
+msgstr ""
+"<literal>autoremove</literal> desinstala paquetes que se instalaron "
+"automáticamente para satisfacer las dependencias de otros paquetes pero que "
+"ya no son necesarios."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>changelog</literal> downloads a package changelog and displays "
+#| "it through <command>sensible-pager</command>. The server name and base "
+#| "directory is defined in the <literal>APT::Changelogs::Server</literal> "
+#| "variable (e.g. <ulink url=\"http://packages.debian.org/changelogs"
+#| "\">packages.debian.org/changelogs</ulink> for Debian or <ulink url="
+#| "\"http://changelogs.ubuntu.com/changelogs\">changelogs.ubuntu.com/"
+#| "changelogs</ulink> for Ubuntu). By default it displays the changelog for "
+#| "the version that is installed. However, you can specify the same options "
+#| "as for the <option>install</option> command."
+msgid ""
+"<literal>changelog</literal> tries to download the changelog of a package "
+"and displays it through <command>sensible-pager</command>. By default it "
+"displays the changelog for the version that is installed. However, you can "
+"specify the same options as for the <option>install</option> command."
+msgstr ""
+"<literal>changelog</literal> descarga un fichero de registro de cambios "
+"«changelog» de un paquete dado y lo muestra a través de <command>sensible-"
+"pager</command>. El nombre de servidor y el directorio base se define con la "
+"variable <literal>APT::Changelogs::Server</literal> (por ejemplo, <ulink url="
+"\"http://packages.debian.org/changelogs\">packages.debian.org/changelogs</"
+"ulink> para Debian o <ulink url=\"http://changelogs.ubuntu.com/changelogs"
+"\">changelogs.ubuntu.com/changelogs</ulink> para Ubuntu). Por omisión, "
+"muestra el fichero de registro de cambios de la versión instalada. Por otra "
+"parte, puede definir las mismas opciones que con la orden <option>install</"
+"option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Displays by default a deb822 formatted listing of information about all data "
+"files (aka index targets) <command>apt-get update</command> would download. "
+"Supports a <option>--format</option> option to modify the output format as "
+"well as accepts lines of the default output to filter the records by. The "
+"command is mainly used as an interface for external tools working with APT "
+"to get information as well as filenames for downloaded files so they can use "
+"them as well instead of downloading them again on their own. Detailed "
+"documentation is omitted here and can instead be found in the file &apt-"
+"acquire-additional-files; shipped by the <package>apt-doc</package> package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml apt-cache.8.xml apt-config.8.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "options"
+msgstr "Opciones"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not consider recommended packages as a dependency for installing. "
+"Configuration Item: <literal>APT::Install-Recommends</literal>."
+msgstr ""
+"No considera los paquetes recomendados como dependencia al instalar. Opción "
+"de configuración: <literal>APT::Install-Recommends</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Consider suggested packages as a dependency for installing. Configuration "
+"Item: <literal>APT::Install-Suggests</literal>."
+msgstr ""
+"Considera los paquetes sugeridos («Suggests») como una dependencia a "
+"instalar. Opción de configuración: <literal>APT::Install-Suggests</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Download only; package files are only retrieved, not unpacked or installed. "
+"Configuration Item: <literal>APT::Get::Download-Only</literal>."
+msgstr ""
+"Sólo descarga los ficheros de los paquetes, no los desempaqueta ni los "
+"instala. Opción de configuración: <literal>APT::Get::Download-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Fix; attempt to correct a system with broken dependencies in place. This "
+#| "option, when used with install/remove, can omit any packages to permit "
+#| "APT to deduce a likely solution. If packages are specified, these have to "
+#| "completely correct the problem. The option is sometimes necessary when "
+#| "running APT for the first time; APT itself does not allow broken package "
+#| "dependencies to exist on a system. It is possible that a system's "
+#| "dependency structure can be so corrupt as to require manual intervention "
+#| "(which usually means using &dselect; or <command>dpkg --remove</command> "
+#| "to eliminate some of the offending packages). Use of this option together "
+#| "with <option>-m</option> may produce an error in some situations. "
+#| "Configuration Item: <literal>APT::Get::Fix-Broken</literal>."
+msgid ""
+"Fix; attempt to correct a system with broken dependencies in place. This "
+"option, when used with install/remove, can omit any packages to permit APT "
+"to deduce a likely solution. If packages are specified, these have to "
+"completely correct the problem. The option is sometimes necessary when "
+"running APT for the first time; APT itself does not allow broken package "
+"dependencies to exist on a system. It is possible that a system's dependency "
+"structure can be so corrupt as to require manual intervention (which usually "
+"means using <command>dpkg --remove</command> to eliminate some of the "
+"offending packages). Use of this option together with <option>-m</option> "
+"may produce an error in some situations. Configuration Item: <literal>APT::"
+"Get::Fix-Broken</literal>."
+msgstr ""
+"Intenta arreglar un sistema con dependencias actualmente rotas. Si se usa "
+"esta opción junto a «install»/«remove» se puede omitir cualquier paquete "
+"para permitir a APT deducir una posible solución. Si se especifican "
+"problemas, deben corregir totalmente el problema. La opción, a veces, se "
+"necesita cuando se ejecuta APT por primera vez, APT no permite que existan "
+"dependencias de paquetes rotas en un sistema. Es posible que la estructura "
+"de dependencias de un sistema esté tan deteriorada que requiera una "
+"intervención manual (generalmente puede ejecutar &dselect; o <command>dpkg --"
+"remove</command> para desinstalar alguno de los paquetes que crean el "
+"conflicto). El uso de esta opción junto con <option>-m</option> puede "
+"producir un error en algunas situaciones. Opción de configuración: "
+"<literal>APT::Get::Fix-Broken</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore missing packages; if packages cannot be retrieved or fail the "
+"integrity check after retrieval (corrupted package files), hold back those "
+"packages and handle the result. Use of this option together with <option>-f</"
+"option> may produce an error in some situations. If a package is selected "
+"for installation (particularly if it is mentioned on the command line) and "
+"it could not be downloaded then it will be silently held back. "
+"Configuration Item: <literal>APT::Get::Fix-Missing</literal>."
+msgstr ""
+"Ignora paquetes faltantes. Si no se pueden descargar paquetes, o estos no "
+"superan la prueba de integridad tras la descarga (ficheros de paquete "
+"corruptos), se retienen y se continúa con el resto. Si se utiliza esta "
+"opción con <option>-f</option> puede provocar un error en algunos casos. Si "
+"un paquete se selecciona para su instalación (particularmente si se hace "
+"mediante la línea de órdenes) y no se puede descargar, se le retendrá "
+"silenciosamente. Opción de configuración: <literal>APT::Get::Fix-Missing</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Disables downloading of packages. This is best used with <option>--ignore-"
+"missing</option> to force APT to use only the .debs it has already "
+"downloaded. Configuration Item: <literal>APT::Get::Download</literal>."
+msgstr ""
+"Deshabilita la descarga de paquetes. Si se utiliza junto <option>--ignore-"
+"missing</option> ofrece la mejor manera de forzar a APT a utilizar sólo los "
+"ficheros «.deb» descargados con anterioridad. Opción de configuración: "
+"<literal>APT::Get::Download</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Note that quiet level 2 implies <option>-y</option>; you should never "
+"use -qq without a no-action modifier such as -d, --print-uris or -s as APT "
+"may decide to do something you did not expect. Configuration Item: "
+"<literal>quiet</literal>."
+msgstr ""
+"Produce una salida adecuada para su registro, omitiendo los indicadores de "
+"progreso. Si se especifican más «q» (hasta un máximo de 2) se conseguirá una "
+"salida más silenciosa. También es posible usar <option>-q=#</option> para "
+"seleccionar el nivel de silencio, omitiendo el fichero de configuración. "
+"Tenga en cuenta que un nivel silencioso 2 implica <option>-y</option>; por "
+"ello, no se debe utilizar «-qq» sin añadir un modificador de acción nula "
+"como «-d», «--print-uris» o «-s» para evitar que APT realice algo que usted "
+"no espera. Opción de configuración: <literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"No action; perform a simulation of events that would occur based on the "
+"current system state but do not actually change the system. Locking will be "
+"disabled (<option>Debug::NoLocking</option>) so the system state could "
+"change while <command>apt-get</command> is running. Simulations can also be "
+"executed by non-root users which might not have read access to all apt "
+"configuration distorting the simulation. A notice expressing this warning "
+"is also shown by default for non-root users (<option>APT::Get::Show-User-"
+"Simulation-Note</option>). Configuration Item: <literal>APT::Get::Simulate</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Simulated runs print out a series of lines, each representing a "
+"<command>dpkg</command> operation: configure (<literal>Conf</literal>), "
+"remove (<literal>Remv</literal>) or unpack (<literal>Inst</literal>). "
+"Square brackets indicate broken packages, and empty square brackets indicate "
+"breaks that are of no consequence (rare)."
+msgstr ""
+"Las simulaciones de ejecución muestran un conjunto de líneas, y cada una "
+"representa una acción de <command>dpkg</command>: configuración "
+"(<literal>Conf</literal>), eliminación (<literal>Remv</literal>) o "
+"desempaquetado (<literal>Inst</literal>). Los corchetes indican paquetes "
+"rotos, y corchetes vacíos indican relaciones de rotura sin consecuencias "
+"(poco frecuente)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Automatic yes to prompts; assume \"yes\" as answer to all prompts and run "
+"non-interactively. If an undesirable situation, such as changing a held "
+"package, trying to install a unauthenticated package or removing an "
+"essential package occurs then <literal>apt-get</literal> will abort. "
+"Configuration Item: <literal>APT::Get::Assume-Yes</literal>."
+msgstr ""
+"Supone una respuesta afirmativa a todas las preguntas, de esta forma apt-get "
+"se ejecuta sin necesidad de intervención posterior para tomar decisiones. "
+"<literal>apt-get</literal> terminará sin hacer nada de producirse una "
+"situación no deseada, como cambiar un paquete retenido, instalar un paquete "
+"sin autenticar o desinstalar un paquete esencial. Opción de configuración: "
+"<literal>APT::Get::Assume-Yes</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Automatic \"no\" to all prompts. Configuration Item: <literal>APT::Get::"
+"Assume-No</literal>."
+msgstr ""
+"Supone «no» a todas las consultas. Opción de configuración: <literal>APT::"
+"Get::Assume-No</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Show upgraded packages; print out a list of all packages that are to be "
+#| "upgraded. Configuration Item: <literal>APT::Get::Show-Upgraded</literal>."
+msgid ""
+"Do not show a list of all packages that are to be upgraded. Configuration "
+"Item: <literal>APT::Get::Show-Upgraded</literal>."
+msgstr ""
+"Muestra los paquetes que se van a actualizar. Opción de configuración: "
+"<literal>APT::Get::Show-Upgraded</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Show full versions for upgraded and installed packages. Configuration Item: "
+"<literal>APT::Get::Show-Versions</literal>."
+msgstr ""
+"Muestra las versiones completas para los paquetes actualizados e instalados. "
+"Opción de configuración: <literal>APT::Get::Show-Versions</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "This option controls the architecture packages are built for by "
+#| "<command>apt-get source --compile</command> and how cross-"
+#| "builddependencies are satisfied. By default is it not set which means "
+#| "that the host architecture is the same as the build architecture (which "
+#| "is defined by <literal>APT::Architecture</literal>). Configuration Item: "
+#| "<literal>APT::Get::Host-Architecture</literal>"
+msgid ""
+"This option controls the architecture packages are built for by <command>apt-"
+"get source --compile</command> and how cross-builddependencies are "
+"satisfied. By default is it not set which means that the host architecture "
+"is the same as the build architecture (which is defined by <literal>APT::"
+"Architecture</literal>). Configuration Item: <literal>APT::Get::Host-"
+"Architecture</literal>."
+msgstr ""
+"Esta opción controla la arquitectura para la que se construyen los paquetes "
+"mediante <command>apt-get source --compile</command> y cómo se satisfacen "
+"las dependencias cruzadas de construcción. No se define por omisión, lo que "
+"implica que la arquitectura anfitrión es la misma que la de construcción "
+"(definida con <literal>APT::Architecture</literal>). Opción de "
+"configuración: <literal>APT::Get::Host-Architecture</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "This option controls the architecture packages are built for by "
+#| "<command>apt-get source --compile</command> and how cross-"
+#| "builddependencies are satisfied. By default is it not set which means "
+#| "that the host architecture is the same as the build architecture (which "
+#| "is defined by <literal>APT::Architecture</literal>). Configuration Item: "
+#| "<literal>APT::Get::Host-Architecture</literal>"
+msgid ""
+"This option controls the activated build profiles for which a source package "
+"is built by <command>apt-get source --compile</command> and how build "
+"dependencies are satisfied. By default no build profile is active. More "
+"than one build profile can be activated at a time by concatenating them with "
+"a comma. Configuration Item: <literal>APT::Build-Profiles</literal>."
+msgstr ""
+"Esta opción controla la arquitectura para la que se construyen los paquetes "
+"mediante <command>apt-get source --compile</command> y cómo se satisfacen "
+"las dependencias cruzadas de construcción. No se define por omisión, lo que "
+"implica que la arquitectura anfitrión es la misma que la de construcción "
+"(definida con <literal>APT::Architecture</literal>). Opción de "
+"configuración: <literal>APT::Get::Host-Architecture</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Compile source packages after downloading them. Configuration Item: "
+"<literal>APT::Get::Compile</literal>."
+msgstr ""
+"Descarga los paquetes fuente y luego los compila. Opción de configuración: "
+"<literal>APT::Get::Compile</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore package holds; this causes <command>apt-get</command> to ignore a "
+"hold placed on a package. This may be useful in conjunction with "
+"<literal>dist-upgrade</literal> to override a large number of undesired "
+"holds. Configuration Item: <literal>APT::Ignore-Hold</literal>."
+msgstr ""
+"Ignora los paquetes retenidos. Esto hace que <command>apt-get</command> "
+"ignore toda retención impuesta a un paquete. Esto puede ser útil junto a "
+"<literal>dist-upgrade</literal> para invalidar un gran número de paquetes "
+"retenidos de manera no deseada. Opción de configuración: <literal>APT::"
+"Ignore-Hold</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Allow installing new packages when used in conjunction with "
+"<literal>upgrade</literal>. This is useful if the update of a installed "
+"package requires new dependencies to be installed. Instead of holding the "
+"package back <literal>upgrade</literal> will upgrade the package and install "
+"the new dependencies. Note that <literal>upgrade</literal> with this option "
+"will never remove packages, only allow adding new ones. Configuration Item: "
+"<literal>APT::Get::Upgrade-Allow-New</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not upgrade packages; when used in conjunction with <literal>install</"
+"literal>, <literal>no-upgrade</literal> will prevent packages on the command "
+"line from being upgraded if they are already installed. Configuration Item: "
+"<literal>APT::Get::Upgrade</literal>."
+msgstr ""
+"No actualiza los paquetes. Cuando se usa junto a <literal>install</literal>, "
+"<literal>no-upgrade</literal>, impide que se actualicen los paquetes "
+"definidos en la línea de órdenes si ya están instalados. Opción de "
+"configuración: <literal>APT::Get::Upgrade</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not install new packages; when used in conjunction with <literal>install</"
+"literal>, <literal>only-upgrade</literal> will install upgrades for already "
+"installed packages only and ignore requests to install new packages. "
+"Configuration Item: <literal>APT::Get::Only-Upgrade</literal>."
+msgstr ""
+"No instala paquetes nuevos. Cuando se usa junto a <literal>install</"
+"literal>, <literal>only-upgrade</literal> solo actualiza los paquetes "
+"definidos en la línea de órdenes que ya están instalados, e ignora las "
+"órdenes de instalación de paquetes nuevos. Opción de configuración: "
+"<literal>APT::Get::Only-Upgrade</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Force yes; this is a dangerous option that will cause apt to continue "
+#| "without prompting if it is doing something potentially harmful. It should "
+#| "not be used except in very special situations. Using <literal>force-yes</"
+#| "literal> can potentially destroy your system! Configuration Item: "
+#| "<literal>APT::Get::force-yes</literal>."
+msgid ""
+"This is a dangerous option that will cause apt to continue without prompting "
+"if it is doing downgrades. It should not be used except in very special "
+"situations. Using it can potentially destroy your system! Configuration "
+"Item: <literal>APT::Get::allow-downgrades</literal>. Introduced in APT 1.1."
+msgstr ""
+"Supone una respuesta afirmativa a todas las preguntas. Ésta es una opción "
+"peligrosa que hará que apt continúe sin preguntar incluso si se va a "
+"realizar algo potencialmente peligroso. No se debe usar excepto en "
+"situaciones muy especiales. ¡Utilizar <literal>force-yes</literal> puede "
+"destruir su sistema! Opción de configuración: <literal>APT::Get::force-yes</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Force yes; this is a dangerous option that will cause apt to continue "
+#| "without prompting if it is doing something potentially harmful. It should "
+#| "not be used except in very special situations. Using <literal>force-yes</"
+#| "literal> can potentially destroy your system! Configuration Item: "
+#| "<literal>APT::Get::force-yes</literal>."
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is removing essentials. It should not be used except "
+"in very special situations. Using it can potentially destroy your system! "
+"Configuration Item: <literal>APT::Get::allow-remove-essential</literal>. "
+"Introduced in APT 1.1."
+msgstr ""
+"Supone una respuesta afirmativa a todas las preguntas. Ésta es una opción "
+"peligrosa que hará que apt continúe sin preguntar incluso si se va a "
+"realizar algo potencialmente peligroso. No se debe usar excepto en "
+"situaciones muy especiales. ¡Utilizar <literal>force-yes</literal> puede "
+"destruir su sistema! Opción de configuración: <literal>APT::Get::force-yes</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Force yes; this is a dangerous option that will cause apt to continue "
+#| "without prompting if it is doing something potentially harmful. It should "
+#| "not be used except in very special situations. Using <literal>force-yes</"
+#| "literal> can potentially destroy your system! Configuration Item: "
+#| "<literal>APT::Get::force-yes</literal>."
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is changing held packages. It should not be used "
+"except in very special situations. Using it can potentially destroy your "
+"system! Configuration Item: <literal>APT::Get::allow-change-held-packages</"
+"literal>. Introduced in APT 1.1."
+msgstr ""
+"Supone una respuesta afirmativa a todas las preguntas. Ésta es una opción "
+"peligrosa que hará que apt continúe sin preguntar incluso si se va a "
+"realizar algo potencialmente peligroso. No se debe usar excepto en "
+"situaciones muy especiales. ¡Utilizar <literal>force-yes</literal> puede "
+"destruir su sistema! Opción de configuración: <literal>APT::Get::force-yes</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Force yes; this is a dangerous option that will cause apt to continue "
+#| "without prompting if it is doing something potentially harmful. It should "
+#| "not be used except in very special situations. Using <literal>force-yes</"
+#| "literal> can potentially destroy your system! Configuration Item: "
+#| "<literal>APT::Get::force-yes</literal>."
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is doing something potentially harmful. It should "
+"not be used except in very special situations. Using <literal>force-yes</"
+"literal> can potentially destroy your system! Configuration Item: "
+"<literal>APT::Get::force-yes</literal>. This is deprecated and replaced by "
+"<option>--allow-downgrades</option>, <option>--allow-remove-essential</"
+"option>, <option>--allow-change-held-packages</option> in 1.1."
+msgstr ""
+"Supone una respuesta afirmativa a todas las preguntas. Ésta es una opción "
+"peligrosa que hará que apt continúe sin preguntar incluso si se va a "
+"realizar algo potencialmente peligroso. No se debe usar excepto en "
+"situaciones muy especiales. ¡Utilizar <literal>force-yes</literal> puede "
+"destruir su sistema! Opción de configuración: <literal>APT::Get::force-yes</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Instead of fetching the files to install their URIs are printed. Each URI "
+"will have the path, the destination file name, the size and the expected MD5 "
+"hash. Note that the file name to write to will not always match the file "
+"name on the remote site! This also works with the <literal>source</literal> "
+"and <literal>update</literal> commands. When used with the <literal>update</"
+"literal> command the MD5 and size are not included, and it is up to the user "
+"to decompress any compressed files. Configuration Item: <literal>APT::Get::"
+"Print-URIs</literal>."
+msgstr ""
+"Muestra los URI de los ficheros a instalar en vez de descargarlos. Cada URI "
+"contiene la dirección de dónde se obtendrá el paquete, el fichero de "
+"destino, su tamaño y la suma de control MD5 esperada. Tenga en cuenta que el "
+"nombre de fichero no siempre coincide con el nombre del fichero en el sitio "
+"remoto. Esto también funciona con las órdenes <literal>source</literal> y "
+"<literal>update</literal>. Cuando se usa con la orden <literal>update</"
+"literal> no se incluyen ni el resumen MD5 ni el tamaño, y es tarea del "
+"usuario descomprimir cualquier fichero comprimido. Opción de configuración: "
+"<literal>APT::Get::Print-URIs</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Use purge instead of remove for anything that would be removed. An asterisk "
+"(\"*\") will be displayed next to packages which are scheduled to be purged. "
+"<option>remove --purge</option> is equivalent to the <option>purge</option> "
+"command. Configuration Item: <literal>APT::Get::Purge</literal>."
+msgstr ""
+"Utiliza «purge» (purgar) en lugar de «remove» para todo aquello que se "
+"desinstale. Un asterisco («*») aparecerá a continuación de los paquetes que "
+"se vayan a purgar. <option>remove --purge</option> es equivalente a la orden "
+"<option>purge</option>. Opción de configuración: <literal>APT::Get::Purge</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Re-install packages that are already installed and at the newest version. "
+"Configuration Item: <literal>APT::Get::ReInstall</literal>."
+msgstr ""
+"Reinstala los paquetes ya instalados, incluso si son la última versión "
+"disponible del paquete. Opción de configuración: <literal>APT::Get::"
+"ReInstall</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option is on by default; use <literal>--no-list-cleanup</literal> to "
+"turn it off. When it is on, <command>apt-get</command> will automatically "
+"manage the contents of <filename>&statedir;/lists</filename> to ensure that "
+"obsolete files are erased. The only reason to turn it off is if you "
+"frequently change your sources list. Configuration Item: <literal>APT::Get::"
+"List-Cleanup</literal>."
+msgstr ""
+"Esta opción está activada de forma predeterminada, si quiere desactivarla "
+"utilice <literal>--no-list-cleanup</literal>. Cuando está activada "
+"<command>apt-get</command> administra automáticamente los contenidos de "
+"<filename>&statedir;/lists</filename> para asegurarse de que se borran los "
+"ficheros obsoletos. La única razón para desactivarla es si realiza "
+"frecuentemente cambios en la lista de fuentes. Opción de configuración: "
+"<literal>APT::Get::List-Cleanup</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the default input to the policy engine; it creates a "
+"default pin at priority 990 using the specified release string. This "
+"overrides the general settings in <filename>/etc/apt/preferences</"
+"filename>. Specifically pinned packages are not affected by the value of "
+"this option. In short, this option lets you have simple control over which "
+"distribution packages will be retrieved from. Some common examples might be "
+"<option>-t '2.1*'</option>, <option>-t unstable</option> or <option>-t sid</"
+"option>. Configuration Item: <literal>APT::Default-Release</literal>; see "
+"also the &apt-preferences; manual page."
+msgstr ""
+"Esta opción controla la entrada predeterminada del motor de directrices, "
+"creando un anclaje («pin») con una prioridad 990 usando la cadena de "
+"caracteres de la distribución especificada. Esto invalida la configuración "
+"general de <filename>/etc/apt/preferences</filename>. Aquellos paquetes con "
+"un anclaje específico no se verán afectados por el valor de esta opción. "
+"Resumiendo, esta opción le da control sobre la distribución de la que se "
+"obtienen los paquetes. Algunos ejemplos comunes pueden ser <option>-t "
+"'2.1*'</option> o <option>-t unstable</option> o <option>-t sid</option>. "
+"Opción de configuración: <literal>APT::Default-Release</literal>. Consulte "
+"también la página del manual de &apt-preferences;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only perform operations that are 'trivial'. Logically this can be considered "
+"related to <option>--assume-yes</option>; where <option>--assume-yes</"
+"option> will answer yes to any prompt, <option>--trivial-only</option> will "
+"answer no. Configuration Item: <literal>APT::Get::Trivial-Only</literal>."
+msgstr ""
+"Sólo realiza acciones consideradas «triviales». Esta opción está relacionada "
+"con <option>--assume-yes</option>, de modo que donde <option>--assume-yes</"
+"option> responde afirmativamente a cualquier pregunta, <option>--trivial-"
+"only</option> responderá negativamente. Opción de configuración: "
+"<literal>APT::Get::Trivial-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If any packages are to be removed apt-get immediately aborts without "
+"prompting. Configuration Item: <literal>APT::Get::Remove</literal>."
+msgstr ""
+"Si se va a desinstalar algún paquete, apt-get terminará inmediatamente sin "
+"preguntar. Opción de configuración: <literal>APT::Get::Remove</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If the command is either <literal>install</literal> or <literal>remove</"
+"literal>, then this option acts like running the <literal>autoremove</"
+"literal> command, removing unused dependency packages. Configuration Item: "
+"<literal>APT::Get::AutomaticRemove</literal>."
+msgstr ""
+"Si la orden es <literal>install</literal> o <literal>remove</literal>, esta "
+"opción realiza el funcionamiento de <literal>autoremove</literal>, "
+"eliminando dependencias en desuso. Opción de configuración: <literal>APT::"
+"Get::AutomaticRemove</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only has meaning for the <literal>source</literal> and <literal>build-dep</"
+"literal> commands. Indicates that the given source names are not to be "
+"mapped through the binary table. This means that if this option is "
+"specified, these commands will only accept source package names as "
+"arguments, rather than accepting binary package names and looking up the "
+"corresponding source package. Configuration Item: <literal>APT::Get::Only-"
+"Source</literal>."
+msgstr ""
+"Sólo tiene sentido para las órdenes <literal>source</literal> y "
+"<literal>build-dep</literal>. Indica que los nombres de paquetes fuente "
+"proporcionados no se deben tratar a través de la tabla de binarios. Esto "
+"significa que si se especifica esta opción, estas órdenes sólo aceptarán "
+"como argumento nombres de paquetes fuente, en vez de aceptar nombres de "
+"paquetes binarios, para luego buscar el nombre del paquete fuente "
+"correspondiente. Opción de configuración: <literal>APT::Get::Only-Source</"
+"literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Download only the diff, dsc, or tar file of a source archive. Configuration "
+"Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</"
+"literal>, and <literal>APT::Get::Tar-Only</literal>."
+msgstr ""
+"Descarga sólo el fichero diff, dsc o tar del archivo de fuentes. Opciones de "
+"configuración: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::"
+"Dsc-Only</literal> y <literal>APT::Get::Tar-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only process architecture-dependent build-dependencies. Configuration Item: "
+"<literal>APT::Get::Arch-Only</literal>."
+msgstr ""
+"Procesa sólo las dependencias de construcción dependientes de la "
+"arquitectura. Opción de configuración: <literal>APT::Get::Arch-Only</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Only process architecture-dependent build-dependencies. Configuration "
+#| "Item: <literal>APT::Get::Arch-Only</literal>."
+msgid ""
+"Only process architecture-independent build-dependencies. Configuration "
+"Item: <literal>APT::Get::Indep-Only</literal>."
+msgstr ""
+"Procesa sólo las dependencias de construcción dependientes de la "
+"arquitectura. Opción de configuración: <literal>APT::Get::Arch-Only</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore if packages can't be authenticated and don't prompt about it. This "
+"can be useful while working with local repositories, but is a huge security "
+"risk if data authenticity isn't ensured in another way by the user itself. "
+"The usage of the <option>Trusted</option> option for &sources-list; entries "
+"should usually be preferred over this global override. Configuration Item: "
+"<literal>APT::Get::AllowUnauthenticated</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Forbid the update command to acquire unverifiable data from configured "
+"sources. APT will fail at the update command for repositories without valid "
+"cryptographically signatures. See also &apt-secure; for details on the "
+"concept and the implications. Configuration Item: <literal>Acquire::"
+"AllowInsecureRepositories</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Show user friendly progress information in the terminal window when packages "
+"are installed, upgraded or removed. For a machine parsable version of this "
+"data see README.progress-reporting in the apt doc directory. Configuration "
+"Items: <literal>Dpkg::Progress</literal> and <literal>Dpkg::Progress-Fancy</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. See <option>--with-source</option> description in &apt-"
+"cache; for further details."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml
+msgid "Files"
+msgstr "Ficheros"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, "
+#| "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, &apt-"
+#| "preferences;, the APT Howto."
+msgid ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
+"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
+"APT Howto."
+msgstr ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, "
+"&apt-config;, &apt-secure;, la guía de usuario de APT en &guidesdir;, &apt-"
+"preferences;, el Cómo de APT."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"<command>apt-get</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+"<command>apt-get</command> devuelve cero si no hay ningún error, y el valor "
+"100 en caso de error."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cache.8.xml
+msgid "query the APT cache"
+msgstr "Realiza consultas al caché de APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "<command>apt-cache</command> performs a variety of operations on APT's "
+#| "package cache. <command>apt-cache</command> does not manipulate the state "
+#| "of the system but does provide operations to search and generate "
+#| "interesting output from the package metadata."
+msgid ""
+"<command>apt-cache</command> performs a variety of operations on APT's "
+"package cache. <command>apt-cache</command> does not manipulate the state of "
+"the system but does provide operations to search and generate interesting "
+"output from the package metadata. The metadata is acquired and updated via "
+"the 'update' command of e.g. <command>apt-get</command>, so that it can be "
+"outdated if the last update is too long ago, but in exchange <command>apt-"
+"cache</command> works independently of the availability of the configured "
+"sources (e.g. offline)."
+msgstr ""
+"<command>apt-cache</command> realiza una serie de operaciones sobre la caché "
+"(registro o lista) de paquetes de APT. <command>apt-cache</command> no "
+"modifica el estado del sistema pero proporciona operaciones de búsqueda y "
+"genera información interesante a partir de los metadatos del paquete."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>gencaches</literal> creates APT's package cache. This is done "
+"implicitly by all commands needing this cache if it is missing or outdated."
+msgstr ""
+"<literal>gencaches</literal> genera la caché de paquetes de APT. Todas las "
+"órdenes realizan esta acción de forma implícita si no se detecta la caché o "
+"si está obsoleta."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml
+msgid "&synopsis-pkg;"
+msgstr "&synopsis-pkg;"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>showpkg</literal> displays information about the packages listed on "
+"the command line. Remaining arguments are package names. The available "
+"versions and reverse dependencies of each package listed are listed, as well "
+"as forward dependencies for each version. Forward (normal) dependencies are "
+"those packages upon which the package in question depends; reverse "
+"dependencies are those packages that depend upon the package in question. "
+"Thus, forward dependencies must be satisfied for a package, but reverse "
+"dependencies need not be. For instance, <command>apt-cache showpkg "
+"libreadline2</command> would produce output similar to the following:"
+msgstr ""
+"<literal>showpkg</literal> muestra la información relativa a los paquetes "
+"listados en la línea de órdenes. Los argumentos restantes se consideran "
+"nombres de paquetes. Para cada paquete de la lista se listan las versiones y "
+"dependencias inversas disponibles, así como las dependencias de cada "
+"versión. Las dependencias (normales) son los paquetes de los que depende el "
+"paquete en cuestión, las dependencias inversas son los paquetes que dependen "
+"del paquete en cuestión. Por ello, las dependencias se deben satisfacer para "
+"un paquete, pero las dependencias inversas no. Por ejemplo, <command>apt-"
+"cache showpkg libreadline2</command> produciría una salida similar a la "
+"siguiente:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-cache.8.xml
+#, no-wrap
+msgid ""
+"Package: libreadline2\n"
+"Versions: 2.1-12(/var/state/apt/lists/foo_Packages),\n"
+"Reverse Depends: \n"
+" libreadlineg2,libreadline2\n"
+" libreadline2-altdev,libreadline2\n"
+"Dependencies:\n"
+"2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))\n"
+"Provides:\n"
+"2.1-12 - \n"
+"Reverse Provides: \n"
+msgstr ""
+"Paquete: libreadline2\n"
+"Versiones: 2.1-12(/var/state/apt/lists/foo_Packages),\n"
+"Dependencias inversas: \n"
+" libreadlineg2,libreadline2\n"
+" libreadline2-altdev,libreadline2\n"
+"Dependencias:\n"
+"2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))\n"
+"Provides:\n"
+"2.1-12 - \n"
+"Reverse Provides: \n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Thus it may be seen that libreadline2, version 2.1-12, depends on libc5 and "
+"ncurses3.0 which must be installed for libreadline2 to work. In turn, "
+"libreadlineg2 and libreadline2-altdev depend on libreadline2. If "
+"libreadline2 is installed, libc5 and ncurses3.0 (and ldso) must also be "
+"installed; libreadlineg2 and libreadline2-altdev do not have to be "
+"installed. For the specific meaning of the remainder of the output it is "
+"best to consult the apt source code."
+msgstr ""
+"La información de salida muestra que libreadline2, con versión 2.1-12, "
+"depende de libc5 y ncurses3.0, que se deben instalar para que libreadline2 "
+"funcione. Además, libreadlineg2 y libreadline2-altdev dependen de "
+"libreadline2. De modo que si libreadline2 está instalado, libc5 y ncurses3.0 "
+"(y ldso) también deben estar instalados, pero libreadlineg2 y libreadline2-"
+"altdev no tienen que estarlo. Para el significado específico del resto de la "
+"salida lo mejor es consultar el código fuente de apt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>stats</literal> displays some statistics about the cache. No "
+"further arguments are expected. Statistics reported are:"
+msgstr ""
+"<literal>stats</literal> muestra algunas estadísticas sobre la caché. No "
+"necesita ningún argumento adicional. Las estadísticas que muestra son:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total package names</literal> is the number of package names found "
+"in the cache."
+msgstr ""
+"<literal>Total de nombres de paquetes</literal> es el número de paquetes "
+"encontrados en la caché."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Normal packages</literal> is the number of regular, ordinary "
+"package names; these are packages that bear a one-to-one correspondence "
+"between their names and the names used by other packages for them in "
+"dependencies. The majority of packages fall into this category."
+msgstr ""
+"<literal>Paquetes normales</literal> es el número de nombres de paquetes "
+"normales. Estos paquetes tienen una correspondencia unívoca entre sus "
+"nombres y los nombres que usan otros paquetes al listarlos en sus "
+"dependencias. La mayoría de los paquetes pertenecen a este grupo."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Pure virtual packages</literal> is the number of packages that "
+"exist only as a virtual package name; that is, packages only \"provide\" the "
+"virtual package name, and no package actually uses the name. For instance, "
+"\"mail-transport-agent\" in the Debian system is a pure virtual package; "
+"several packages provide \"mail-transport-agent\", but there is no package "
+"named \"mail-transport-agent\"."
+msgstr ""
+"<literal>Paquetes virtuales puros</literal> es el número de paquetes que "
+"existen sólo como nombre de un paquete virtual, esto es, paquetes que sólo "
+"«proporcionan» el nombre del paquete virtual, y no hay ningún paquete más "
+"que use el nombre. Por ejemplo, «mail-transport-agent» en un sistema Debian "
+"es un paquete virtual puro, varios paquetes proporcionan «mail-transport-"
+"agent», pero no hay ningún paquete que se llame «mail-transport-agent»."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Single virtual packages</literal> is the number of packages with "
+"only one package providing a particular virtual package. For example, in the "
+"Debian system, \"X11-text-viewer\" is a virtual package, but only one "
+"package, xless, provides \"X11-text-viewer\"."
+msgstr ""
+"<literal>Paquetes virtuales únicos</literal> es el número de paquetes con un "
+"único paquete que proporciona un paquete virtual en concreto. Por ejemplo, "
+"en un sistema Debian, «X11-text-viewer» es un paquete virtual, pero sólo un "
+"paquete, xless, proporciona «X11-text-viewer»."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Mixed virtual packages</literal> is the number of packages that "
+"either provide a particular virtual package or have the virtual package name "
+"as the package name. For instance, in the Debian system, \"debconf\" is both "
+"an actual package, and provided by the debconf-tiny package."
+msgstr ""
+"<literal>Paquetes virtuales mixtos</literal> es el número de paquetes que o "
+"bien proporcionan un determinado paquete virtual o tienen el mismo nombre "
+"como paquete virtual y como paquete normal. Por ejemplo, en un sistema "
+"Debian, «debconf» es a la vez un paquete normal, y que proporciona el "
+"paquete debconf-tiny."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Missing</literal> is the number of package names that were "
+"referenced in a dependency but were not provided by any package. Missing "
+"packages may be an evidence if a full distribution is not accessed, or if a "
+"package (real or virtual) has been dropped from the distribution. Usually "
+"they are referenced from Conflicts or Breaks statements."
+msgstr ""
+"<literal>No encontrados</literal> es el número de nombres de paquetes "
+"mencionados como dependencia pero que ningún paquete los proporciona. Estos "
+"paquetes pueden ser una prueba de que no se tiene acceso a toda la "
+"distribución, o de la eliminación de algún paquete (real o virtual) dentro "
+"de la distribución. Normalmente se hace referencia a ellos desde los campos "
+"«Conflicts» o «Breaks» de la descripción de los paquetes."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>Total distinct</literal> versions is the number of package "
+#| "versions found in the cache; this value is therefore at least equal to "
+#| "the number of total package names. If more than one distribution is being "
+#| "accessed (for instance, \"stable\" and \"unstable\"), this value can be "
+#| "considerably larger than the number of total package names."
+msgid ""
+"<literal>Total distinct</literal> versions is the number of package versions "
+"found in the cache. If more than one distribution is being accessed (for "
+"instance, \"stable\" and \"unstable\"), this value can be considerably "
+"larger than the number of total package names."
+msgstr ""
+"<literal>Total de versiones distintas</literal> es el número de versiones de "
+"paquetes encontradas en la caché, por lo tanto el número es al menos igual "
+"al número total de paquetes. Si se analiza más de una distribución "
+"(«estable» e «inestable», por ejemplo) al mismo tiempo, este valor puede ser "
+"considerablemente mayor que el número total de paquetes."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total dependencies</literal> is the number of dependency "
+"relationships claimed by all of the packages in the cache."
+msgstr ""
+"<literal>Total de dependencias</literal> es el número total de relaciones de "
+"dependencia de todos los paquetes de la caché."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>showsrc</literal> displays all the source package records that "
+#| "match the given package names. All versions are shown, as well as all "
+#| "records that declare the name to be a binary package."
+msgid ""
+"<literal>showsrc</literal> displays all the source package records that "
+"match the given package names. All versions are shown, as well as all "
+"records that declare the name to be a binary package. Use <option>--only-"
+"source</option> to display only source package names."
+msgstr ""
+"<literal>showsrc</literal> muestra todos los campos de los paquetes fuente "
+"que coinciden con los nombres de los paquetes proporcionados. Se muestran "
+"todas las versiones, así como todos los campos cuyo nombre manifiesta que "
+"son binarios."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dump</literal> shows a short listing of every package in the cache. "
+"It is primarily for debugging."
+msgstr ""
+"<literal>dump</literal> muestra una pequeña lista de todos los paquetes en "
+"la caché. Fundamentalmente para depuración."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dumpavail</literal> prints out an available list to stdout. This is "
+"suitable for use with &dpkg; and is used by the &dselect; method."
+msgstr ""
+"<literal>dumpavail</literal> muestra por la salida estándar una lista de los "
+"paquetes disponibles. Esta lista es apropiada para su uso con &dpkg; y, "
+"además, la usa el método &dselect;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>unmet</literal> displays a summary of all unmet dependencies in the "
+"package cache."
+msgstr ""
+"<literal>unmet</literal> muestra un resumen de todas las dependencias no "
+"satisfechas en la caché de paquetes."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>show</literal> performs a function similar to <command>dpkg --print-"
+"avail</command>; it displays the package records for the named packages."
+msgstr ""
+"<literal>show</literal> realiza una función similar a <command>dpkg --print-"
+"avail</command>, muestra los campos del paquete para los paquetes nombrados."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml
+msgid "&synopsis-regex;"
+msgstr "&synopsis-regex;"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>search</literal> performs a full text search on all available "
+#| "package lists for the POSIX regex pattern given, see &regex;. It "
+#| "searches the package names and the descriptions for an occurrence of the "
+#| "regular expression and prints out the package name and the short "
+#| "description, including virtual package names. If <option>--full</option> "
+#| "is given then output identical to <literal>show</literal> is produced for "
+#| "each matched package, and if <option>--names-only</option> is given then "
+#| "the long description is not searched, only the package name is."
+msgid ""
+"<literal>search</literal> performs a full text search on all available "
+"package lists for the POSIX regex pattern given, see &regex;. It searches "
+"the package names and the descriptions for an occurrence of the regular "
+"expression and prints out the package name and the short description, "
+"including virtual package names. If <option>--full</option> is given then "
+"output identical to <literal>show</literal> is produced for each matched "
+"package, and if <option>--names-only</option> is given then the long "
+"description is not searched, only the package name and provided packages are."
+msgstr ""
+"<literal>search</literal> realiza una búsqueda de la expresión regular POSIX "
+"dada en todo el texto de todos los paquetes disponibles, consulte &regex;. "
+"Busca la expresión regular tanto en el nombre de los paquetes como en su "
+"descripción y muestra el nombre del paquete y una pequeña descripción de "
+"éste, incluyendo nombres de paquetes virtuales. Si se proporciona el "
+"argumento <option>--full</option> el resultado es igual al que produce "
+"<literal>show</literal> para cada paquete, pero si se proporciona el "
+"argumento <option>--names-only</option> entonces sólo se busca en el nombre "
+"de los paquetes, no en la descripción larga."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Separate arguments can be used to specify multiple search patterns that are "
+"and'ed together."
+msgstr ""
+"Se pueden usar argumentos separados para especificar varios patrones de "
+"búsqueda que se juntarán mediante una «Y lógica»."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>depends</literal> shows a listing of each dependency a package has "
+"and all the possible other packages that can fulfill that dependency."
+msgstr ""
+"<literal>depends</literal> muestra una lista de todas la dependencias de un "
+"paquete y de todos los demás paquetes que la pueden satisfacer."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>rdepends</literal> shows a listing of each reverse dependency a "
+"package has."
+msgstr ""
+"<literal>rdepends</literal> muestra las dependencias inversas de un paquete."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml
+msgid "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+msgstr "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"This command prints the name of each package APT knows. The optional "
+"argument is a prefix match to filter the name list. The output is suitable "
+"for use in a shell tab complete function and the output is generated "
+"extremely quickly. This command is best used with the <option>--generate</"
+"option> option."
+msgstr ""
+"Esta orden muestra el nombre de todos los paquetes que APT conoce. El "
+"argumento opcional es un prefijo para filtrar la lista de nombres. La salida "
+"es apropiada para su uso junto con la función de completado automático "
+"mediante tabulador en un intérprete de órdenes y se genera de forma "
+"extremadamente rápida. El mejor uso de la orden es con la opción <option>--"
+"generate</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Note that a package which APT knows of is not necessarily available to "
+"download, installable or installed, e.g. virtual packages are also listed in "
+"the generated list."
+msgstr ""
+"Tenga en cuenta que un paquete que conoce APT puede no estar necesariamente "
+"disponible para descargar, instalar o instalado, por ejemplo: los paquetes "
+"virtuales también aparecen en la lista generada."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dotty</literal> takes a list of packages on the command line and "
+"generates output suitable for use by dotty from the <ulink url=\"http://www."
+"research.att.com/sw/tools/graphviz/\">GraphViz</ulink> package. The result "
+"will be a set of nodes and edges representing the relationships between the "
+"packages. By default the given packages will trace out all dependent "
+"packages; this can produce a very large graph. To limit the output to only "
+"the packages listed on the command line, set the <literal>APT::Cache::"
+"GivenOnly</literal> option."
+msgstr ""
+"<literal>dotty</literal> toma una lista de paquetes de la línea de ordenes y "
+"genera una salida apropiada para su uso con dotty, del paquete <ulink url="
+"\"http://www.research.att.com/sw/tools/graphviz/\">GraphViz</ulink>. El "
+"resultado será un conjunto de nodos y uniones representando las relaciones "
+"entre los paquetes. De forma predeterminada, los paquetes proporcionados "
+"mostrarán todas sus dependencias, lo que puede producir un grafo muy grande. "
+"Para limitar la salida sólo a los paquetes listados en la línea de órdenes, "
+"active la opción <literal>APT::Cache::GivenOnly</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"The resulting nodes will have several shapes; normal packages are boxes, "
+"pure virtual packages are triangles, mixed virtual packages are diamonds, "
+"missing packages are hexagons. Orange boxes mean recursion was stopped (leaf "
+"packages), blue lines are pre-depends, green lines are conflicts."
+msgstr ""
+"Los nodos resultantes tendrán varias formas: los paquetes normales son "
+"cajas, los paquetes virtuales puros son triángulos, los paquetes virtuales "
+"mixtos son diamantes y los paquetes no encontrados son hexágonos. Las cajas "
+"naranjas simbolizan que el recorrido se detuvo en paquetes que ningún otro "
+"declara como dependencia, las líneas azules son pre-dependencias y las "
+"líneas verdes son conflictos."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid "Caution, dotty cannot graph larger sets of packages."
+msgstr "Tenga cuidado, dotty no puede dibujar grandes conjuntos de paquetes."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"The same as <literal>dotty</literal>, only for xvcg from the <ulink url="
+"\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</ulink>."
+msgstr ""
+"Lo mismo que <literal>dotty</literal>, sólo para xvcg de la <ulink url="
+"\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">herramienta VCG</"
+"ulink>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml
+msgid "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+msgstr "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>policy</literal> is meant to help debug issues relating to the "
+"preferences file. With no arguments it will print out the priorities of each "
+"source. Otherwise it prints out detailed information about the priority "
+"selection of the named package."
+msgstr ""
+"<literal>policy</literal> está pensado para ayudar a depurar asuntos "
+"relacionados con el fichero de preferencias. Sin argumentos mostrará las "
+"prioridades de cada fuente. De forma alternativa, muestra una información "
+"detallada acerca de la prioridad de selección del paquete nombrado."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>apt-cache</literal>'s <literal>madison</literal> command attempts "
+"to mimic the output format and a subset of the functionality of the Debian "
+"archive management tool, <literal>madison</literal>. It displays available "
+"versions of a package in a tabular format. Unlike the original "
+"<literal>madison</literal>, it can only display information for the "
+"architecture for which APT has retrieved package lists (<literal>APT::"
+"Architecture</literal>)."
+msgstr ""
+"La orden <literal>madison</literal> de <literal>apt-cache</literal> intenta "
+"imitar el formato de salida y parte de la funcionalidad de la herramienta "
+"para la gestión del archivo de Debian, <literal>madison</literal>. Muestra "
+"las versiones disponibles de un determinado paquete en un formato tabular. A "
+"diferencia del <literal>madison</literal> original, sólo puede mostrar "
+"información para la arquitectura para la que APT obtuvo las listas de "
+"paquetes (<literal>APT::Architecture</literal>)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Select the file to store the package cache. The package cache is the primary "
+"cache used by all operations. Configuration Item: <literal>Dir::Cache::"
+"pkgcache</literal>."
+msgstr ""
+"Define el fichero donde guardar la caché de paquetes. La caché de paquetes "
+"es la caché primaria usada para todas las operaciones. Opción de "
+"configuración: <literal>Dir::Cache::pkgcache</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Select the file to store the source cache. The source is used only by "
+"<literal>gencaches</literal> and it stores a parsed version of the package "
+"information from remote sources. When building the package cache the source "
+"cache is used to avoid reparsing all of the package files. Configuration "
+"Item: <literal>Dir::Cache::srcpkgcache</literal>."
+msgstr ""
+"Escoge el fichero para guardar la caché fuente. Sólo <literal>gencaches</"
+"literal> usa esta caché y guarda una versión analizada de la información de "
+"los paquetes de las fuentes remotas. Cuando se genera la caché de paquetes "
+"la caché fuente se usa para evitar analizar todos los ficheros de paquetes. "
+"Opción de configuración: <literal>Dir::Cache::srcpkgcache</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quietness up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quietness level, overriding the "
+"configuration file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+"Produce una salida adecuada para su almacenamiento, omitiendo los "
+"indicadores de progreso. Más «q» producirán una salida más silenciosa, hasta "
+"un máximo de dos. También se puede usar <option>-q=#</option> para definir "
+"el nivel de silencio, ignorando el fichero de configuración. Opción de "
+"configuración: <literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print only important dependencies; for use with <literal>unmet</literal> and "
+"<literal>depends</literal>. Causes only Depends and Pre-Depends relations to "
+"be printed. Configuration Item: <literal>APT::Cache::Important</literal>."
+msgstr ""
+"Muestra sólo las dependencias importantes, se usa junto con <literal>unmet</"
+"literal> y <literal>depends</literal>. Hace que sólo se muestren las "
+"dependencias y pre-dependencias. Opción de configuración: <literal>APT::"
+"Cache::Important</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "Per default the <literal>depends</literal> and <literal>rdepends</"
+#| "literal> print all dependencies. This can be tweaked with these flags "
+#| "which will omit the specified dependency type. Configuration Item: "
+#| "<literal>APT::Cache::Show<replaceable>DependencyType</replaceable></"
+#| "literal> e.g. <literal>APT::Cache::ShowRecommends</literal>."
+msgid ""
+"Per default the <command>depends</command> and <command>rdepends</command> "
+"print all dependencies. This can be tweaked with these flags which will omit "
+"the specified dependency type. Configuration Item: <literal>APT::Cache::"
+"Show<replaceable>DependencyType</replaceable></literal> e.g. <literal>APT::"
+"Cache::ShowRecommends</literal>."
+msgstr ""
+"Por omisión, <literal>depends</literal> y <literal>rdepends</literal> "
+"muestran todas las dependencias. Este comportamiento se puede modificar con "
+"los siguientes parámetros, los cuales omitirán el tipo de dependencia "
+"especificado. Opción de configuración: <literal>APT::Cache::"
+"Show<replaceable>Tipo-de Dependencia</replaceable></literal>. Por ejemplo, "
+"<literal>APT::Cache::ShowRecommends</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Per default <command>depends</command> and <command>rdepends</command> print "
+"only dependencies explicitly expressed in the metadata. With this flag it "
+"will also show dependencies implicitly added based on the encountered data. "
+"A <literal>Conflicts: foo</literal> e.g. expresses implicitly that this "
+"package also conflicts with the package foo from any other architecture. "
+"Configuration Item: <literal>APT::Cache::ShowImplicit</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print full package records when searching. Configuration Item: "
+"<literal>APT::Cache::ShowFull</literal>."
+msgstr ""
+"Muestra todos los campos de información cuando se realiza una búsqueda. "
+"Opción de configuración: <literal>APT::Cache::ShowFull</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print full records for all available versions. This is the default; to turn "
+"it off, use <option>--no-all-versions</option>. If <option>--no-all-"
+"versions</option> is specified, only the candidate version will be displayed "
+"(the one which would be selected for installation). This option is only "
+"applicable to the <literal>show</literal> command. Configuration Item: "
+"<literal>APT::Cache::AllVersions</literal>."
+msgstr ""
+"Muestra los campos completos de todas las versiones disponibles. Es el "
+"comportamiento predeterminado, para desactivarlo utilice <option>--no-all-"
+"versions</option>. Si se especifica <option>--no-all-versions</option>, sólo "
+"se muestra la versión candidata (la que se escogería para instalar). Esta "
+"opción sólo se aplica a la orden <literal>show</literal>. Opción de "
+"configuración: <literal>APT::Cache::AllVersions</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Perform automatic package cache regeneration, rather than use the cache as "
+"it is. This is the default; to turn it off, use <option>--no-generate</"
+"option>. Configuration Item: <literal>APT::Cache::Generate</literal>."
+msgstr ""
+"Realiza una regeneración completa de la caché de paquetes, en vez de usarla "
+"tal y como está. Esta es la opción predeterminada, para desactivarla use "
+"<option>--no-generate</option>. Opción de configuración: <literal>APT::"
+"Cache::Generate</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "Only search on the package names, not the long descriptions. "
+#| "Configuration Item: <literal>APT::Cache::NamesOnly</literal>."
+msgid ""
+"Only search on the package and provided package names, not the long "
+"descriptions. Configuration Item: <literal>APT::Cache::NamesOnly</literal>."
+msgstr ""
+"Sólo busca en los nombres de paquetes, no en las descripciones largas. "
+"Opción de configuración: <literal>APT::Cache::NamesOnly</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Make <literal>pkgnames</literal> print all names, including virtual packages "
+"and missing dependencies. Configuration Item: <literal>APT::Cache::"
+"AllNames</literal>."
+msgstr ""
+"Hace que <literal>pkgnames</literal> muestre todos los nombres, incluyendo "
+"los paquetes virtuales y las dependencias no encontradas. Opción de "
+"configuración: <literal>APT::Cache::AllNames</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Make <literal>depends</literal> and <literal>rdepends</literal> recursive so "
+"that all packages mentioned are printed once. Configuration Item: "
+"<literal>APT::Cache::RecurseDepends</literal>."
+msgstr ""
+"Hace que <literal>depends</literal> y <literal>rdepends</literal> sean "
+"recursivos de modo que todos los paquetes mencionados se muestran sólo una "
+"vez. Opción de configuración <literal>APT::Cache::RecurseDepends</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Limit the output of <literal>depends</literal> and <literal>rdepends</"
+"literal> to packages which are currently installed. Configuration Item: "
+"<literal>APT::Cache::Installed</literal>."
+msgstr ""
+"Limita la salida de <literal>depends</literal> y <literal>rdepends</literal> "
+"a paquetes actualmente instalados. Opción de configuración: <literal>APT::"
+"Cache::Installed</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. Supported are currently <literal>*.deb</literal>, "
+"<literal>*.dsc</literal>, <literal>*.changes</literal>, <literal>Sources</"
+"literal> and <literal>Packages</literal> files as well as source package "
+"directories. Files are matched based on their name only, not their content!"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Sources</literal> and <literal>Packages</literal> can be compressed "
+"in any format apt supports as long as they have the correct extension. If "
+"you need to store multiple of these files in one directory you can prefix a "
+"name of your choice with the last character being an underscore "
+"(\"<literal>_</literal>\"). Example: my.example_Packages.xz"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "Use source index field ordering. Configuration Item: <literal>APT::"
+#| "SortPkgs::Source</literal>."
+msgid ""
+"Note that these sources are treated as trusted (see &apt-secure;). "
+"Configuration Item: <literal>APT::Sources::With</literal>."
+msgstr ""
+"Utililza el orden por el campo de índice de fuentes. Opción de "
+"configuración: <literal>APT::SortPkgs::Source</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid "&apt-conf;, &sources-list;, &apt-get;"
+msgstr "&apt-conf;, &sources-list;, &apt-get;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid ""
+"<command>apt-cache</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-cache</command> devuelve cero si no hay ningún error, y el "
+"valor 100 en caso de error."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-key.8.xml
+msgid "APT key management utility"
+msgstr "Herramienta para gestionar las claves de APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"<command>apt-key</command> is used to manage the list of keys used by apt to "
+"authenticate packages. Packages which have been authenticated using these "
+"keys will be considered trusted."
+msgstr ""
+"<command>apt-key</command> sirve para gestionar la lista de claves que APT "
+"usa para autenticar paquetes. Los paquetes autenticados mediante estas "
+"claves se consideran de confianza."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Note that if usage of <command>apt-key</command> is desired the additional "
+"installation of the GNU Privacy Guard suite (packaged in <package>gnupg</"
+"package>) is required. For this reason alone the programmatic usage "
+"(especially in package maintainerscripts!) is strongly discouraged. Further "
+"more the output format of all commands is undefined and can and does change "
+"whenever the underlying commands change. <command>apt-key</command> will try "
+"to detect such usage and generates warnings on stderr in these cases."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml
+msgid "Supported keyring files"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
+"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
+"the keybox database format introduced in newer &gpg; versions as default for "
+"keyring files. Binary keyring files intended to be used with any apt version "
+"should therefore always be created with <command>gpg --export</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Alternatively, if all systems which should be using the created keyring have "
+"at least apt version >= 1.4 installed, you can use the ASCII armored format "
+"with the \"<literal>asc</literal>\" extension instead which can be created "
+"with <command>gpg --armor --export</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml
+msgid "Commands"
+msgstr "Órdenes"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Add a new key to the list of trusted keys. The key is read from the "
+"filename given with the parameter &synopsis-param-filename; or if the "
+"filename is <literal>-</literal> from standard input."
+msgstr ""
+"Añade una nueva clave a la lista claves de confianza. La clave se lee desde "
+"el fichero dado con el parámetro &synopsis-param-filename; o desde la "
+"entrada estándar si el nombre de fichero se define como <literal>-</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"It is critical that keys added manually via <command>apt-key</command> are "
+"verified to belong to the owner of the repositories they claim to be for "
+"otherwise the &apt-secure; infrastructure is completely undermined."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
+"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
+"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
+"\"<literal>asc</literal>\" as file extension."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Remove a key from the list of trusted keys."
+msgstr "Elimina una clave de la lista de claves de confianza."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Output the key &synopsis-param-keyid; to standard output."
+msgstr "Muestra la clave &synopsis-param-keyid; por la salida estándar."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Output all trusted keys to standard output."
+msgstr "Devuelve todas las claves de confianza por la salida estándar."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+#, fuzzy
+#| msgid "List trusted keys."
+msgid "List trusted keys with fingerprints."
+msgstr "Lista las claves de confianza."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
+"e.g. download key from keyservers directly into the trusted set of keys. "
+"Note that there are <emphasis>no</emphasis> checks performed, so it is easy "
+"to completely undermine the &apt-secure; infrastructure if used without care."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-key.8.xml
+msgid "(deprecated)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Update the local keyring with the archive keyring and remove from the local "
+"keyring the archive keys which are no longer valid. The archive keyring is "
+"shipped in the <literal>archive-keyring</literal> package of your "
+"distribution, e.g. the &keyring-package; package in &keyring-distro;."
+msgstr ""
+"Actualiza el registro de claves local con el registro de claves del archivo "
+"y elimina del registro local las claves de archivo que ya no son válidas. El "
+"registro de claves del archivo se encuentra en el paquete <literal>archive-"
+"keyring</literal> de su distribución; esto es, el paquete &keyring-package; "
+"en &keyring-distro;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Note that a distribution does not need to and in fact should not use this "
+"command any longer and instead ship keyring files in the <filename>/etc/apt/"
+"trusted.gpg.d/</filename> directory directly as this avoids a dependency on "
+"<package>gnupg</package> and it is easier to manage keys by simply adding "
+"and removing files for maintainers and users alike."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Perform an update working similarly to the <command>update</command> command "
+"above, but get the archive keyring from a URI instead and validate it "
+"against a master key. This requires an installed &wget; and an APT build "
+"configured to have a server to fetch from and a master keyring to validate. "
+"APT in Debian does not support this command, relying on <command>update</"
+"command> instead, but Ubuntu's APT does."
+msgstr ""
+"Realiza una actualización similar a la realizada por la orden "
+"<command>update</command>, pero obtiene el registro de claves de archivo de "
+"una dirección URI, y la valida con la clave maestra. Requiere &wget;, y una "
+"construcción de APT configurada con un servidor de dónde obtener la clave "
+"maestra con la que validar. En Debian, APT no es compatible con esta orden, "
+"y en su lugar depende de la orden <command>update</command>, pero la versión "
+"de APT para Ubuntu sí es compatible."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml
+msgid "Options"
+msgstr "Opciones"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Note that options need to be defined before the commands described in the "
+"previous section."
+msgstr ""
+"Tenga en cuenta que las opciones se deben definir antes de las órdenes "
+"descritas en el sección anterior."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"With this option it is possible to specify a particular keyring file the "
+"command should operate on. The default is that a command is executed on the "
+"<filename>trusted.gpg</filename> file as well as on all parts in the "
+"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</"
+"filename> is the primary keyring which means that e.g. new keys are added to "
+"this one."
+msgstr ""
+"Con esta opción es posible definir un fichero de registro de claves "
+"específico sobre el que la orden debe actuar. Por omisión, la orden se "
+"ejecuta con el fichero <filename>trusted.gpg</filename> así como con los "
+"fragmentos en el directorio <filename>trusted.gpg.d</filename>, aunque "
+"<filename>trusted.gpg</filename> es el registro de claves principal, esto "
+"es, por ejemplo, que las claves nuevas se añaden a este fichero."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid "&apt-get;, &apt-secure;"
+msgstr "&apt-get;, &apt-secure;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-mark.8.xml
+msgid "show, set and unset various settings for a package"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"<command>apt-mark</command> can be used as a unified front-end to set "
+"various settings for a package, such as marking a package as being "
+"automatically/manually installed or changing <command>dpkg</command> "
+"selections such as hold, install, deinstall and purge which are respected e."
+"g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
+"command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Automatically and Manually Installed Packages"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+#, fuzzy
+#| msgid ""
+#| "When you request that a package is installed, and as a result other "
+#| "packages are installed to satisfy its dependencies, the dependencies are "
+#| "marked as being automatically installed. Once these automatically "
+#| "installed packages are no longer depended on by any manually installed "
+#| "packages, they will be removed by e.g. <command>apt-get</command> or "
+#| "<command>aptitude</command>."
+msgid ""
+"When you request that a package is installed, and as a result other packages "
+"are installed to satisfy its dependencies, the dependencies are marked as "
+"being automatically installed, while the package you installed explicitly is "
+"marked as manually installed. Once an automatically installed package is no "
+"longer depended on by any manually installed package it is considered no "
+"longer needed and e.g. <command>apt-get</command> or <command>aptitude</"
+"command> will at least suggest removing them."
+msgstr ""
+"Cuando solicita la instalación de un paquete y como resultado de ello se "
+"instalan otros paquetes para satisfacer sus dependencias, éstos se marcarán "
+"como instalados automáticamente. Una vez que estos paquetes instalados "
+"automáticamente ya no son necesarios para ningún paquete instalado "
+"manualmente, <command>apt-get</command> o <command>aptitude</command> los "
+"eliminará."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>auto</literal> is used to mark a package as being automatically "
+"installed, which will cause the package to be removed when no more manually "
+"installed packages depend on this package."
+msgstr ""
+"<literal>auto</literal> se utiliza para marcar un paquete como "
+"automáticamente instalado, provocando la eliminación del paquete cuando "
+"ningún otro paquete manualmente instalado depende de este paquete."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>manual</literal> is used to mark a package as being manually "
+"installed, which will prevent the package from being automatically removed "
+"if no other packages depend on it."
+msgstr ""
+"<literal>manual</literal> sirve para marcar un paquete como instalado "
+"manualmente, impidiendo la eliminación automática de este paquete si ningún "
+"otro depende de él."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showauto</literal> is used to print a list of automatically "
+"installed packages with each package on a new line. All automatically "
+"installed packages will be listed if no package is given. If packages are "
+"given only those which are automatically installed will be shown."
+msgstr ""
+"<literal>showauto</literal> muestra una lista de paquetes automáticamente "
+"instalados en diferentes líneas. Si no se introduce ningún paquete, se "
+"muestran todos los paquetes automáticamente instalados. Si se introducen "
+"paquetes solo se muestran aquellos automáticamente instalados."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showmanual</literal> can be used in the same way as "
+"<literal>showauto</literal> except that it will print a list of manually "
+"installed packages instead."
+msgstr ""
+"<literal>showmanual</literal> se puede utilizar de la misma forma que "
+"<literal>showauto</literal>, a excepción de que muestra una lista de "
+"paquetes manualmente instalados."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"Read/Write package stats from the filename given with the parameter "
+"&synopsis-param-filename; instead of from the default location, which is "
+"<filename>extended_status</filename> in the directory defined by the "
+"Configuration Item: <literal>Dir::State</literal>."
+msgstr ""
+"Escribe y lee las estadísticas de los paquetes con el nombre de fichero "
+"definido con el parámetro &synopsis-param-filename;, en lugar de la "
+"ubicación predeterminada, que es <filename>extended_status</filename> en el "
+"directorio definido con la opción de configuración: <literal>Dir::State</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Prevent Changes for a Package"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>manual</literal> is used to mark a package as being manually "
+#| "installed, which will prevent the package from being automatically "
+#| "removed if no other packages depend on it."
+msgid ""
+"<literal>hold</literal> is used to mark a package as held back, which will "
+"prevent the package from being automatically installed, upgraded or removed."
+msgstr ""
+"<literal>manual</literal> sirve para marcar un paquete como instalado "
+"manualmente, impidiendo la eliminación automática de este paquete si ningún "
+"otro depende de él."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>unhold</literal> is used to cancel a previously set hold on a "
+"package to allow all actions again."
+msgstr ""
+"<literal>unhold</literal> sirve para permitir cualquier acción habitual "
+"sobre un paquete previamente marcado con «hold»."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showhold</literal> is used to print a list of packages on hold in "
+"the same way as for the other show commands."
+msgstr ""
+"<literal>showhold</literal> muestra una lista de paquetes retenidos («hold») "
+"de la misma forma que las otras órdenes «show»."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Schedule Packages for Install, Remove and Purge"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"Some front-ends like <command>apt-get dselect-upgrade</command> can be used "
+"to apply previously scheduled changes to the install state of packages. Such "
+"changes can be scheduled with the <option>install</option>, <option>remove</"
+"option> (also known as <option>deinstall</option>) and <option>purge</"
+"option> commands. Packages with a specific selection can be displayed with "
+"<option>showinstall</option>, <option>showremove</option> and "
+"<option>showpurge</option> respectively. More information about these so "
+"called dpkg selections can be found in &dpkg;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"<command>apt-mark</command> returns zero on normal operation, non-zero on "
+"error."
+msgstr ""
+"<command>apt-mark</command> devuelve cero si no hay ningún error, y el valor "
+"100 en caso de error."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-secure.8.xml
+msgid "Archive authentication support for APT"
+msgstr "Compatibilidad con la autenticación en el archivo para APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "Starting with version 0.6, <command>apt</command> contains code that does "
+#| "signature checking of the Release file for all archives. This ensures "
+#| "that packages in the archive can't be modified by people who have no "
+#| "access to the Release file signing key."
+msgid ""
+"Starting with version 0.6, <command>APT</command> contains code that does "
+"signature checking of the Release file for all repositories. This ensures "
+"that data like packages in the archive can't be modified by people who have "
+"no access to the Release file signing key. Starting with version 1.1 "
+"<command>APT</command> requires repositories to provide recent "
+"authentication information for unimpeded usage of the repository."
+msgstr ""
+"Desde la versión 0.6, <command>apt</command> contiene el código que realiza "
+"la comprobación de la firma del fichero «Release» para todos los archivos. "
+"Esto asegura que los paquetes del archivo no se han modificado por alguien "
+"sin acceso a la clave con la que se firmó el fichero «Release»."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"If an archive has an unsigned Release file or no Release file at all current "
+"APT versions will refuse to download data from them by default in "
+"<command>update</command> operations and even if forced to download front-"
+"ends like &apt-get; will require explicit confirmation if an installation "
+"request includes a package from such an unauthenticated archive."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"As a temporary exception &apt-get; (not &apt;!) raises warnings only if it "
+"encounters unauthenticated archives to give a slightly longer grace period "
+"on this backward compatibility effecting change. This exception will be "
+"removed in future releases and you can opt-out of this grace period by "
+"setting the configuration option <option>Binary::apt-get::Acquire::"
+"AllowInsecureRepositories</option> to <literal>false</literal> or <option>--"
+"no-allow-insecure-repositories</option> on the command line."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"You can force all APT clients to raise only warnings by setting the "
+"configuration option <option>Acquire::AllowInsecureRepositories</option> to "
+"<literal>true</literal>. Individual repositories can also be allowed to be "
+"insecure via the &sources-list; option <literal>allow-insecure=yes</"
+"literal>. Note that insecure repositories are strongly discouraged and all "
+"options to force apt to continue supporting them will eventually be "
+"removed. Users also have the <option>Trusted</option> option available to "
+"disable even the warnings, but be sure to understand the implications as "
+"detailed in &sources-list;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"A repository which previously was authenticated but would loose this state "
+"in an <command>update</command> operation raises an error in all APT clients "
+"irrespective of the option to allow or forbid usage of insecure "
+"repositories. The error can be overcome by additionally setting "
+"<option>Acquire::AllowDowngradeToInsecureRepositories</option> to "
+"<literal>true</literal> or for Individual repositories with the &sources-"
+"list; option <literal>allow-downgrade-to-insecure=yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "The package front-ends &apt-get;, &aptitude; and &synaptic; support this "
+#| "new authentication feature."
+msgid ""
+"Note: All APT-based package management front-ends like &apt-get;, &aptitude; "
+"and &synaptic; support this authentication feature, so this manpage uses "
+"<literal>APT</literal> to refer to them all for simplicity only."
+msgstr ""
+"Las interfaces de gestión de paquetes &apt-get;, &aptitude; y &synaptic; "
+"pueden usar esta nueva funcionalidad de autenticación."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid "Trusted archives"
+msgid "Trusted Repositories"
+msgstr "Archivos de confianza"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "The chain of trust from an apt archive to the end user is made up of "
+#| "several steps. <command>apt-secure</command> is the last step in this "
+#| "chain; trusting an archive does not mean that you trust its packages not "
+#| "to contain malicious code, but means that you trust the archive "
+#| "maintainer. It's the archive maintainer's responsibility to ensure that "
+#| "the archive's integrity is preserved."
+msgid ""
+"The chain of trust from an APT archive to the end user is made up of several "
+"steps. <command>apt-secure</command> is the last step in this chain; "
+"trusting an archive does not mean that you trust its packages not to contain "
+"malicious code, but means that you trust the archive maintainer. It's the "
+"archive maintainer's responsibility to ensure that the archive's integrity "
+"is preserved."
+msgstr ""
+"La cadena de confianza desde un archivo apt a un usuario final se realiza en "
+"diferentes pasos. <command>apt-secure</command> es el último paso en esta "
+"cadena; confiar en un archivo no implica que los paquetes en los que se "
+"confía no contengan código malicioso, pero significa que se confía en el "
+"responsable del archivo. El responsable del archivo es el responsable de "
+"asegurar que la integridad del archivo es correcta."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"apt-secure does not review signatures at a package level. If you require "
+"tools to do this you should look at <command>debsig-verify</command> and "
+"<command>debsign</command> (provided in the debsig-verify and devscripts "
+"packages respectively)."
+msgstr ""
+"apt-secure no revisa las firmas a nivel de paquete. Si necesita herramientas "
+"para realizar esto, debería ver <command>debsig-verify</command> y "
+"<command>debsign</command> (proporcionados en los paquetes debsig-verify y "
+"devscripts respectivamente)."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "The chain of trust in Debian starts when a maintainer uploads a new "
+#| "package or a new version of a package to the Debian archive. In order to "
+#| "become effective, this upload needs to be signed by a key contained in "
+#| "the Debian Maintainers keyring (available in the debian-keyring package). "
+#| "Maintainers' keys are signed by other maintainers following pre-"
+#| "established procedures to ensure the identity of the key holder."
+msgid ""
+"The chain of trust in Debian starts (e.g.) when a maintainer uploads a new "
+"package or a new version of a package to the Debian archive. In order to "
+"become effective, this upload needs to be signed by a key contained in one "
+"of the Debian package maintainer keyrings (available in the debian-keyring "
+"package). Maintainers' keys are signed by other maintainers following pre-"
+"established procedures to ensure the identity of the key holder. Similar "
+"procedures exist in all Debian-based distributions."
+msgstr ""
+"La cadena de confianza de Debian comienza cuando un mantenedor sube un nuevo "
+"paquete o una nueva versión de un paquete al archivo de Debian. Para que la "
+"subida sea efectiva, se debe firmar con una clave de un mantenedor del "
+"registro de claves de los mantenedores de Debian (disponible en el paquete "
+"debian-keyring). Las claves de los mantenedores son firmados por otros "
+"mantenedores siguiendo unos procedimientos pre-establecidos para asegurar la "
+"identidad del propietario de la clave."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Once the uploaded package is verified and included in the archive, the "
+"maintainer signature is stripped off, and checksums of the package are "
+"computed and put in the Packages file. The checksums of all of the Packages "
+"files are then computed and put into the Release file. The Release file is "
+"then signed by the archive key for this &keyring-distro; release, and "
+"distributed alongside the packages and the Packages files on &keyring-"
+"distro; mirrors. The keys are in the &keyring-distro; archive keyring "
+"available in the &keyring-package; package."
+msgstr ""
+"Una vez que el paquete enviado se ha verificado e incluido en el archivo, se "
+"elimina la firma del mantenedor, y se realizan las sumas de control del "
+"paquete, que se incluyen en el fichero «Packages». A continuación, se "
+"realiza una suma de control de todos los ficheros «Package», y se incluyen "
+"en el fichero «Release». Acto seguido, el fichero «Release» se firma con la "
+"clave del archivo de esta distribución de &keyring-distro;, y se distribuye "
+"junto con los paquetes y los ficheros «Packages» de las réplicas de &keyring-"
+"distro;. Las claves están disponibles en el registro de claves del archivo "
+"&keyring-distro; en el paquete &keyring-package; package."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"End users can check the signature of the Release file, extract a checksum of "
+"a package from it and compare it with the checksum of the package they "
+"downloaded by hand - or rely on APT doing this automatically."
+msgstr ""
+"El usuario final puede comprobar la firma del fichero «Release», extraer la "
+"suma de control de un paquete de él y compararlo con la suma de control del "
+"paquete descargado manualmente, o depender de la comprobación automática de "
+"APT."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Notice that this is distinct from checking signatures on a per package "
+"basis. It is designed to prevent two possible attacks:"
+msgstr ""
+"Tenga en cuenta que esto es distinto a comprobar las firmas de cada paquete "
+"individualmente. Se diseñó para prevenir dos posible ataques:"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<literal>Network \"man in the middle\" attacks</literal>. Without signature "
+"checking, malicious agents can introduce themselves into the package "
+"download process and provide malicious software either by controlling a "
+"network element (router, switch, etc.) or by redirecting traffic to a rogue "
+"server (through ARP or DNS spoofing attacks)."
+msgstr ""
+"<literal>Ataques de red «man in the middle» (persona entre medias)</"
+"literal>. Sin la comprobación de las firmas, se puede introducir un agente "
+"dañino en el proceso de descarga del paquete que ejecute programas con "
+"contenido malicioso para controlar un elemento de la red (enrutador, switch, "
+"etc) o para redirigir el tráfico a un servidor ficticio (mediante ataques de "
+"envenenamiento de ARP o de DNS)."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<literal>Mirror network compromise</literal>. Without signature checking, a "
+"malicious agent can compromise a mirror host and modify the files in it to "
+"propagate malicious software to all users downloading packages from that "
+"host."
+msgstr ""
+"<literal>Réplica de la red comprometida</literal>. Sin la comprobación de la "
+"firma, una persona malvada puede comprometer una réplica y modificar los "
+"ficheros de ésta para propagar programas con contenido malicioso a todos los "
+"usuarios que descarguen paquetes de dicha réplica."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "However, it does not defend against a compromise of the Debian master "
+#| "server itself (which signs the packages) or against a compromise of the "
+#| "key used to sign the Release files. In any case, this mechanism can "
+#| "complement a per-package signature."
+msgid ""
+"However, it does not defend against a compromise of the master server itself "
+"(which signs the packages) or against a compromise of the key used to sign "
+"the Release files. In any case, this mechanism can complement a per-package "
+"signature."
+msgstr ""
+"Sin embargo, esto no protege de un servidor maestro de Debian (que firma los "
+"paquetes) comprometido o contra una clave usada para firmar los ficheros "
+"«Release» comprometida. En cualquier caso, este mecanismo puede complementar "
+"una firma por paquete."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "User Configuration"
+msgstr "Configuración de usuario"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "<command>apt-key</command> is the program that manages the list of keys "
+#| "used by apt. It can be used to add or remove keys, although an "
+#| "installation of this release will automatically contain the default "
+#| "Debian archive signing keys used in the Debian package repositories."
+msgid ""
+"<command>apt-key</command> is the program that manages the list of keys used "
+"by APT to trust repositories. It can be used to add or remove keys as well "
+"as list the trusted keys. Limiting which key(s) are able to sign which "
+"archive is possible via the <option>Signed-By</option> in &sources-list;."
+msgstr ""
+"<command>apt-key</command> es el programa que gestiona la lista de claves "
+"usadas por apt. Se puede usar para añadir o eliminar claves, aunque la "
+"instalación de esta versión contiene automáticamente las claves "
+"predeterminadas del archivo de Debian que se usan en los repositorios de "
+"paquetes de Debian."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so fiddling with "
+"<command>apt-key</command> is only needed if third-party repositories are "
+"added."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"In order to add a new key you need to first download it (you should make "
+"sure you are using a trusted communication channel when retrieving it), add "
+"it with <command>apt-key</command> and then run <command>apt-get update</"
+"command> so that apt can download and verify the <filename>InRelease</"
+"filename> or <filename>Release.gpg</filename> files from the archives you "
+"have configured."
+msgstr ""
+"Para poder añadir una clave nueva primero necesita descargarla (debería "
+"asegurarse de que está usando un canal de comunicación seguro cuando la "
+"consiga), añádala con <command>apt-key</command> y ejecute <command>apt-get "
+"update</command> para que apt descargue y compruebe los ficheros "
+"<filename>InRelease</filename> o <filename>Release.gpg</filename> de los "
+"archivos de paquetes configurados."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Archive Configuration"
+msgstr "Configuración del archivo"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"If you want to provide archive signatures in an archive under your "
+"maintenance you have to:"
+msgstr ""
+"Si quiere proporcionar firmas de archivo en un archivo bajo su control tiene "
+"que:"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Create a toplevel Release file</emphasis>, if it does not exist "
+"already. You can do this by running <command>apt-ftparchive release</"
+"command> (provided in apt-utils)."
+msgstr ""
+"<emphasis>Crear un fichero «Release»</emphasis>, si no existe. Para ello se "
+"ejecuta <command>apt-ftparchive release</command> (proporcionado en apt-"
+"utils)."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --"
+"clearsign -o InRelease Release</command> and <command>gpg -abs -o Release."
+"gpg Release</command>."
+msgstr ""
+"<emphasis>Firme el fichero</emphasis>. Para ello, puede ejecutar "
+"<command>gpg --clearsign -o InRelease Release</command> y <command>gpg -abs -"
+"o Release.gpg Release</command>."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "<emphasis>Publish the key fingerprint</emphasis>, that way your users "
+#| "will know what key they need to import in order to authenticate the files "
+#| "in the archive."
+msgid ""
+"<emphasis>Publish the key fingerprint</emphasis>, so that your users will "
+"know what key they need to import in order to authenticate the files in the "
+"archive. It is best to ship your key in its own keyring package like "
+"&keyring-distro; does with &keyring-package; to be able to distribute "
+"updates and key transitions automatically later."
+msgstr ""
+"<emphasis>Publicar la huella digital de la clave</emphasis>, de modo que los "
+"usuarios conozcan qué clave necesitan importar para autenticar los ficheros "
+"del archivo."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Provide instructions on how to add your archive and key</"
+"emphasis>. If your users can't acquire your key securely the chain of trust "
+"described above is broken. How you can help users add your key depends on "
+"your archive and target audience ranging from having your keyring package "
+"included in another archive users already have configured (like the default "
+"repositories of their distribution) to leveraging the web of trust."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Whenever the contents of the archive change (new packages are added or "
+"removed) the archive maintainer has to follow the first two steps outlined "
+"above."
+msgstr ""
+"Cuando los contenidos del archivo cambien (se añadan paquetes nuevos o se "
+"eliminen) el mantenedor del archivo tiene que seguir los dos primeros pasos "
+"explicados anteriormente."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+"&debsign;, &debsig-verify;, &gpg;"
+msgstr ""
+"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+"&debsign;, &debsig-verify;, &gpg;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"For more background information you might want to review the <ulink url="
+"\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
+"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
+"available in the harden-doc package) and the <ulink url=\"http://www."
+"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
+"ulink> by V. Alex Brennen."
+msgstr ""
+"Para más información puede que quiera revisar el capítulo de la <ulink url="
+"\"https://www.debian.org/doc/manuals/securing-debian-howto/"
+"ch7\">Infraestructura de Seguridad de Debian</ulink> del Manual de Seguridad "
+"de Debian (también disponible en el paquete harden-doc) y el <ulink url="
+"\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" >COMO Fortificar "
+"una Distribución</ulink> de V. Alex Brennen."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Manpage Authors"
+msgstr "Autores de la página del manual"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"This man-page is based on the work of Javier Fernández-Sanguino Peña, Isaac "
+"Jones, Colin Walters, Florian Weimer and Michael Vogt."
+msgstr ""
+"Esta página del manual se basa en el trabajo de Javier Fernández-Sanguino "
+"Peña, Isaac Jones, Colin Walters, Florian Weimer y Michael Vogt."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cdrom.8.xml
+msgid "APT CD-ROM management utility"
+msgstr "Herramienta de APT para la gestión de discos ópticos"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<command>apt-cdrom</command> is used to add a new CD-ROM to APT's list of "
+"available sources. <command>apt-cdrom</command> takes care of determining "
+"the structure of the disc as well as correcting for several possible mis-"
+"burns and verifying the index files."
+msgstr ""
+"<command>apt-cdrom</command> se utiliza para añadir un disco óptico nuevo a "
+"la lista de fuentes disponibles de APT. <command>apt-cdrom</command> examina "
+"la estructura del disco, corrige los posibles errores de grabación y "
+"verifica los ficheros de índice."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"It is necessary to use <command>apt-cdrom</command> to add CDs to the APT "
+"system; it cannot be done by hand. Furthermore each disc in a multi-CD set "
+"must be inserted and scanned separately to account for possible mis-burns."
+msgstr ""
+"Se requiere utilizar <command>apt-cdrom</command> para añadir los discos al "
+"sistema APT, no se puede hacer manualmente. Además, debe insertar y analizar "
+"cada disco de un conjunto de discos por separado para detectar posibles "
+"errores de grabación."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<literal>add</literal> is used to add a new disc to the source list. It will "
+"unmount the CD-ROM device, prompt for a disc to be inserted and then proceed "
+"to scan it and copy the index files. If the disc does not have a proper "
+"<filename>.disk</filename> directory you will be prompted for a descriptive "
+"title."
+msgstr ""
+"<literal>add</literal> añade un disco nuevo a la lista de fuentes. "
+"Desmontará el dispositivo del disco y pedirá que se inserte un disco para "
+"iniciar el análisis y copiado de los ficheros de índice. Si el disco no "
+"contiene un directorio <filename>.disk</filename> apropiado, se le pedirá un "
+"título descriptivo."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"APT uses a CD-ROM ID to track which disc is currently in the drive and "
+"maintains a database of these IDs in <filename>&statedir;/cdroms.list</"
+"filename>"
+msgstr ""
+"APT utiliza un identificador de disco óptico para identificar el disco "
+"presente en la unidad lectora, y mantiene una base de datos de estos "
+"identificadores en <filename>&statedir;/cdroms.list</filename>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"A debugging tool to report the identity of the current disc as well as the "
+"stored file name"
+msgstr ""
+"Una herramienta de depuración para informar de la identidad del disco actual "
+"así como del nombre del fichero guardado."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+#, fuzzy
+#| msgid ""
+#| "Mount point; specify the location to mount the CD-ROM. This mount point "
+#| "must be listed in <filename>/etc/fstab</filename> and properly "
+#| "configured. Configuration Item: <literal>Acquire::cdrom::mount</literal>."
+msgid ""
+"Do not try to auto-detect the CD-ROM path. Usually combined with the "
+"<option>--cdrom</option> option. Configuration Item: <literal>Acquire::"
+"cdrom::AutoDetect</literal>."
+msgstr ""
+"Punto de montaje. Define el lugar donde se debe montar el disco óptico. El "
+"punto de montaje debe aparecer en <filename>/etc/fstab</filename> y estar "
+"correctamente configurado. Opción de configuración: <literal>Acquire::cdrom::"
+"mount</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Mount point; specify the location to mount the CD-ROM. This mount point must "
+"be listed in <filename>/etc/fstab</filename> and properly configured. "
+"Configuration Item: <literal>Acquire::cdrom::mount</literal>."
+msgstr ""
+"Punto de montaje. Define el lugar donde se debe montar el disco óptico. El "
+"punto de montaje debe aparecer en <filename>/etc/fstab</filename> y estar "
+"correctamente configurado. Opción de configuración: <literal>Acquire::cdrom::"
+"mount</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Rename a disc; change the label of a disc or override the disc's given "
+"label. This option will cause <command>apt-cdrom</command> to prompt for a "
+"new label. Configuration Item: <literal>APT::CDROM::Rename</literal>."
+msgstr ""
+"Renombra un disco. Cambia la etiqueta de un disco o invalida la etiqueta del "
+"disco. Esta opción hará que <command>apt-cdrom</command> solicite una "
+"etiqueta nueva. Opción de configuración: <literal>APT::CDROM::Rename</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"No mounting; prevent <command>apt-cdrom</command> from mounting and "
+"unmounting the mount point. Configuration Item: <literal>APT::CDROM::"
+"NoMount</literal>."
+msgstr ""
+"No montar. Evita que <command>apt-cdrom</command> monte y desmonte el punto "
+"de montaje. Opción de configuración: <literal>APT::CDROM::NoMount</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Fast Copy; Assume the package files are valid and do not check every "
+"package. This option should be used only if <command>apt-cdrom</command> has "
+"been run on this disc before and did not detect any errors. Configuration "
+"Item: <literal>APT::CDROM::Fast</literal>."
+msgstr ""
+"Crea una copia rápida. Asume que los ficheros de paquete son válidos y no "
+"comprueba cada paquete. Esta opción sólo se debe usar si <command>apt-cdrom</"
+"command> comprobó el disco anteriormente y no detectó ningún error. Opción "
+"de configuración: <literal>APT::CDROM::Fast</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Thorough Package Scan; This option may be needed with some old Debian "
+"1.1/1.2 discs that have Package files in strange places. It takes much "
+"longer to scan the CD but will pick them all up."
+msgstr ""
+"Comprobación meticulosa de los paquetes. Esta opción puede ser necesaria con "
+"algunos discos viejos de Debian 1.1/1.2, que tienen los ficheros de paquete "
+"en lugares extraños. El análisis del disco óptico lleva mucho más tiempo, "
+"pero encontrará todo el contenido."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"No Changes; Do not change the &sources-list; file and do not write index "
+"files. Everything is still checked however. Configuration Item: "
+"<literal>APT::CDROM::NoAct</literal>."
+msgstr ""
+"Sin cambios. No cambia el fichero &sources-list; y no escribe los ficheros "
+"de índice. Aun así, se revisará todo. Opción de configuración: <literal>APT::"
+"CDROM::NoAct</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid "&apt-conf;, &apt-get;, &sources-list;"
+msgstr "&apt-conf;, &apt-get;, &sources-list;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<command>apt-cdrom</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-cdrom</command> devuelve cero si no hay ningún error y el valor "
+"100 en caso de error."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-config.8.xml
+msgid "APT Configuration Query program"
+msgstr "Programa para consultar la configuración de APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml
+msgid ""
+"<command>apt-config</command> is an internal program used by various "
+"portions of the APT suite to provide consistent configurability. It accesses "
+"the main configuration file <filename>/etc/apt/apt.conf</filename> in a "
+"manner that is easy to use for scripted applications."
+msgstr ""
+"<command>apt-config</command> es un programa interno que usan varios "
+"programas del conjunto de herramientas de APT para ofrecer un método de "
+"configuración sólido. Este programa accede al fichero principal de "
+"configuración <filename>/etc/apt/apt.conf</filename> de forma que resulta "
+"sencillo de usar por aplicaciones con scripts."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"shell is used to access the configuration information from a shell script. "
+"It is given pairs of arguments, the first being a shell variable and the "
+"second the configuration value to query. As output it lists shell assignment "
+"commands for each value present. In a shell script it should be used as "
+"follows:"
+msgstr ""
+"Se utiliza para acceder a la información de la configuración mediante un "
+"script. Se proporcionan parejas de argumentos, el primero es una variable "
+"del intérprete de órdenes y el segundo el valor de la configuración que "
+"consultar. Como salida muestra una serie de órdenes asignadas al intérprete "
+"de órdenes para cada valor presente. Esto se debería usar de la siguiente "
+"manera en un script de intérprete de órdenes:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-config.8.xml
+#, no-wrap
+msgid ""
+"OPTS=\"-f\"\n"
+"RES=`apt-config shell OPTS MyApp::options`\n"
+"eval $RES\n"
+msgstr ""
+"OPTS=\"-f\"\n"
+"RES=`apt-config shell OPTS MiAplicación::opciones`\n"
+"eval $RES\n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"This will set the shell environment variable $OPTS to the value of MyApp::"
+"options with a default of <option>-f</option>."
+msgstr ""
+"Esto define la variable de entorno del intérprete de órdenes $OPTS con el "
+"valor de MyApp::Opciones, y con <option>-f</option> por omisión."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"The configuration item may be postfixed with a /[fdbi]. f returns file "
+"names, d returns directories, b returns true or false and i returns an "
+"integer. Each of the returns is normalized and verified internally."
+msgstr ""
+"La opción de configuración se puede corregir posteriormente con un «/"
+"[fdbi]». El parámetro «f» devuelve nombres de fichero, «d» devuelve los "
+"directorios, «b» devuelve verdadero o falso, e «i» devuelve un número "
+"entero. Cada uno de los valores devueltos se normaliza y se verifica "
+"internamente."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid "Just show the contents of the configuration space."
+msgstr "Sólo muestra el contenido del espacio de configuración."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"Include options which have an empty value. This is the default, so use --no-"
+"empty to remove them from the output."
+msgstr ""
+"Incluye opciones con un valor vacío. Este es el comportamiento "
+"predeterminado, utilice «--no-empty» para eliminarlos de la salida."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-config.8.xml
+msgid "&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n"
+msgstr "&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"Defines the output of each config option. &percnt;t will be replaced with "
+"its individual name, &percnt;f with its full hierarchical name and &percnt;v "
+"with its value. Use uppercase letters and special characters in the value "
+"will be encoded to ensure that it can e.g. be safely used in a quoted-string "
+"as defined by RFC822. Additionally &percnt;n will be replaced by a newline, "
+"and &percnt;N by a tab. A &percnt; can be printed by using &percnt;&percnt;."
+msgstr ""
+"Define la salida de cada opción de configuración. &percnt;t se sustituye con "
+"el nombre individual, &percnt;f con el nombre jerárquico completo, y &percnt;"
+"v con su valor. Si utiliza letras mayúsculas, los caracteres especiales del "
+"valor se codificaran para garantizar su uso seguro en una cadena delimitada "
+"por comillas, como define RFC822. Además, &percnt;n se sustituye con una "
+"línea nueva, y &percnt;N con una tabulación. Se puede mostrar un &percnt; "
+"utilizando &percnt;&percnt;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml
+msgid "&apt-conf;"
+msgstr "&apt-conf;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml
+msgid ""
+"<command>apt-config</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-config</command> devuelve cero si no hay ningún error, y el "
+"valor 100 en caso de error."
+
+#. type: Content of: <refentry><refentryinfo><author><contrib>
+#: apt.conf.5.xml
+msgid "Initial documentation of Debug::*."
+msgstr "Documentación inicial de Debug::*."
+
+#. type: Content of: <refentry><refentryinfo><author><email>
+#: apt.conf.5.xml
+msgid "dburrows@debian.org"
+msgstr "dburrows@debian.org"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml
+msgid "5"
+msgstr "5"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.conf.5.xml
+msgid "Configuration file for APT"
+msgstr "Fichero de configuración de APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<filename>/etc/apt/apt.conf</filename> is the main configuration file shared "
+"by all the tools in the APT suite of tools, though it is by no means the "
+"only place options can be set. The suite also shares a common command line "
+"parser to provide a uniform environment."
+msgstr ""
+"<filename>/etc/apt/apt.conf</filename> es el fichero de configuración "
+"principal, compartido por todas las herramientas del conjunto APT, aunque no "
+"es la única ubicación donde se pueden definir opciones. El conjunto de "
+"herramientas también comparte el mismo analizador de línea de órdenes para "
+"ofrecer un entorno homogéneo."
+
+#. type: Content of: <refentry><refsect1><orderedlist><para>
+#: apt.conf.5.xml
+msgid ""
+"When an APT tool starts up it will read the configuration files in the "
+"following order:"
+msgstr ""
+"Cuando se inicia una herramienta de APT, leerá los ficheros de configuración "
+"en el siguiente orden:"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the file specified by the <envar>APT_CONFIG</envar> environment variable (if "
+"any)"
+msgstr ""
+"El fichero definido por la variable de entorno <envar>APT_CONFIG</envar> (de "
+"existir)."
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending "
+"order which have either no or \"<literal>conf</literal>\" as filename "
+"extension and which only contain alphanumeric, hyphen (-), underscore (_) "
+"and period (.) characters. Otherwise APT will print a notice that it has "
+"ignored a file, unless that file matches a pattern in the <literal>Dir::"
+"Ignore-Files-Silently</literal> configuration list - in which case it will "
+"be silently ignored."
+msgstr ""
+"Todos los ficheros en <literal>Dir::Etc::Parts</literal> en orden "
+"alfanumérico ascendente cuya extensión de fichero no es «<literal>conf</"
+"literal>» y que solo contenga caracteres alfanuméricos, guión (-), guión "
+"bajo (_) y punto (.). De no ser así, APT informa de que ha ignorado un "
+"fichero si este no coincide con el patrón en la lista de configuración "
+"<literal>Dir::Ignore-Files-Silently</literal>. Si coincide, se ignora de "
+"forma silenciosa."
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the main configuration file specified by <literal>Dir::Etc::main</literal>"
+msgstr ""
+"El fichero de configuración principal definido por <literal>Dir::Etc::main</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"all options set in the binary specific configuration subtree are moved into "
+"the root of the tree."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the command line options are applied to override the configuration "
+"directives or to load even more configuration files."
+msgstr ""
+"Las opciones de línea de órdenes se aplican para anular directivas de "
+"configuración o para cargar más ficheros de configuración."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Syntax"
+msgstr "Sintaxis"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The configuration file is organized in a tree with options organized into "
+"functional groups. Option specification is given with a double colon "
+"notation; for instance <literal>APT::Get::Assume-Yes</literal> is an option "
+"within the APT tool group, for the Get tool. Options do not inherit from "
+"their parent groups."
+msgstr ""
+"El fichero de configuración está organizado en forma de árbol con las "
+"opciones organizadas en grupos funcionales. Las opciones se proporcionan con "
+"dos puntos dobles; por ejemplo <literal>APT::Get::Assume-Yes</literal> es "
+"una opción de la herramienta Get, dentro del conjunto de herramientas de "
+"APT. Las opciones no se heredan de sus grupos paternos."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Syntactically the configuration language is modeled after what the ISC tools "
+"such as bind and dhcp use. Lines starting with <literal>//</literal> are "
+"treated as comments (ignored), as well as all text between <literal>/*</"
+"literal> and <literal>*/</literal>, just like C/C++ comments. Each line is "
+"of the form <literal>APT::Get::Assume-Yes \"true\";</literal>. The "
+"quotation marks and trailing semicolon are required. The value must be on "
+"one line, and there is no kind of string concatenation. Values must not "
+"include backslashes or extra quotation marks. Option names are made up of "
+"alphanumeric characters and the characters \"/-:._+\". A new scope can be "
+"opened with curly braces, like this:"
+msgstr ""
+"Sintácticamente, el modelo del lenguaje de configuración es similar a las "
+"herramientas de ISC como pueden ser «bind» y «dhcp». Las líneas que "
+"comienzan con <literal>//</literal> se tratan como comentarios (se ignoran), "
+"así como todo el texto que haya entre <literal>/*</literal> y <literal>*/</"
+"literal>, igual que en los comentarios de C/C++. Cada línea tiene la forma "
+"<literal>APT::Get::Assume-Yes \"true\";</literal>. Es necesario utilizar "
+"comillas y un punto y coma final. El valor debe estar en una única línea y "
+"no se permite concatenar cadenas. No se pueden incluir barras inversas «\\» "
+"o comillas adicionales. Un nombre de opción se compone de caracteres "
+"alfanuméricos y los caracteres «/-:._+». Un nuevo ámbito se puede abrir con "
+"llaves, como:"
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT {\n"
+" Get {\n"
+" Assume-Yes \"true\";\n"
+" Fix-Broken \"true\";\n"
+" };\n"
+"};\n"
+msgstr ""
+"APT {\n"
+" Get {\n"
+" Assume-Yes \"true\";\n"
+" Fix-Broken \"true\";\n"
+" };\n"
+"};\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"with newlines placed to make it more readable. Lists can be created by "
+"opening a scope and including a single string enclosed in quotes followed by "
+"a semicolon. Multiple entries can be included, separated by a semicolon."
+msgstr ""
+"con nuevas líneas ubicadas para hacerlo más legible. Las listas pueden "
+"crearse abriendo un nuevo ámbito e incluyendo una única cadena acotada entre "
+"comillas seguida de un punto y coma. Se pueden incluir varias entradas "
+"separadas por punto y coma."
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "DPkg::Pre-Install-Pkgs {\"/usr/sbin/dpkg-preconfigure --apt\";};\n"
+msgstr "DPkg::Pre-Install-Pkgs {\"/usr/sbin/dpkg-preconfigure --apt\";};\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"In general the sample configuration file &configureindex; is a good guide "
+"for how it should look."
+msgstr ""
+"En general, el fichero de configuración de ejemplo &configureindex; es una "
+"buena guía para entender su aspecto."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Case is not significant in names of configuration items, so in the previous "
+"example you could use <literal>dpkg::pre-install-pkgs</literal>."
+msgstr ""
+"El uso de las mayúsculas no afecta a los nombres de opciones de "
+"configuración, y por ello, en el ejemplo anterior, puede utilizar "
+"<literal>dpkg::pre-install-pkgs</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Names for the configuration items are optional if a list is defined as can "
+"be seen in the <literal>DPkg::Pre-Install-Pkgs</literal> example above. If "
+"you don't specify a name a new entry will simply add a new option to the "
+"list. If you specify a name you can override the option in the same way as "
+"any other option by reassigning a new value to the option."
+msgstr ""
+"Los nombres de las opciones de configuración son opcionales si se define una "
+"lista como muestra el ejemplo anterior de <literal>DPkg::Pre-Install-Pkgs</"
+"literal>. Si no se define un nombre, simplemente se añade una nueva opción a "
+"la lista. Si se define un nombre, se puede redefinir la opción como "
+"cualquier otra opción reasignando un nuevo valor a la opción."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Two special commands are defined: <literal>#include</literal> (which is "
+"deprecated and not supported by alternative implementations) and "
+"<literal>#clear</literal>. <literal>#include</literal> will include the "
+"given file, unless the filename ends in a slash, in which case the whole "
+"directory is included. <literal>#clear</literal> is used to erase a part of "
+"the configuration tree. The specified element and all its descendants are "
+"erased. (Note that these lines also need to end with a semicolon.)"
+msgstr ""
+"Se definen dos órdenes especiales, <literal>#include</literal> (ya obsoleto "
+"y no es compatible en implementaciones alternativas) y <literal>#clear</"
+"literal>. <literal>#include</literal> incluirá el fichero proporcionado, a "
+"menos que el final del nombre del fichero acabe en una barra, en cuyo caso "
+"se incluye el directorio entero. <literal>#clear</literal> se usa para "
+"borrar parte del árbol de configuración. El elemento especificado y sus "
+"descendientes se eliminarán. (Tenga en cuenta que estas líneas también deben "
+"acabar con punto y coma)."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>#clear</literal> command is the only way to delete a list or a "
+"complete scope. Reopening a scope (or using the syntax described below with "
+"an appended <literal>::</literal>) will <emphasis>not</emphasis> override "
+"previously written entries. Options can only be overridden by addressing a "
+"new value to them - lists and scopes can't be overridden, only cleared."
+msgstr ""
+"La orden <literal>#clear</literal> ofrece la única forma de eliminar una "
+"lista o un ámbito completo. Reabrir un ámbito (o utilizar la sintaxis de "
+"adición de <literal>::</literal> que se describe a continuación) "
+"<emphasis>no</emphasis> redefinirá las entradas escritas anteriormente. Sólo "
+"se pueden redefinir las opciones asignándolas un nuevo valor; las listas y "
+"los ámbitos no se pueden redefinir, sólo eliminar."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"All of the APT tools take an -o option which allows an arbitrary "
+"configuration directive to be specified on the command line. The syntax is a "
+"full option name (<literal>APT::Get::Assume-Yes</literal> for instance) "
+"followed by an equals sign then the new value of the option. To append a new "
+"element to a list, add a trailing <literal>::</literal> to the name of the "
+"list. (As you might suspect, the scope syntax can't be used on the command "
+"line.)"
+msgstr ""
+"Todas las herramientas de APT aceptan la opción «-o» que permite definir una "
+"directriz arbitraria de configuración que se define en la línea de órdenes. "
+"La sintaxis es un nombre de opción completo (por ejemplo, <literal>APT::Get::"
+"Assume-Yes</literal>) seguido por signos de igualdad y el nuevo valor de la "
+"opción. Para añadir un nuevo elemento a lista, añada <literal>::</literal> "
+"al final del nombre de la lista. (Como puede imaginar, no puede usar la "
+"sintaxis de ámbitos en la línea de órdenes)."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that appending items to a list using <literal>::</literal> only works "
+"for one item per line, and that you should not use it in combination with "
+"the scope syntax (which adds <literal>::</literal> implicitly). Using both "
+"syntaxes together will trigger a bug which some users unfortunately depend "
+"on: an option with the unusual name \"<literal>::</literal>\" which acts "
+"like every other option with a name. This introduces many problems; for one "
+"thing, users who write multiple lines in this <emphasis>wrong</emphasis> "
+"syntax in the hope of appending to a list will achieve the opposite, as only "
+"the last assignment for this option \"<literal>::</literal>\" will be used. "
+"Future versions of APT will raise errors and stop working if they encounter "
+"this misuse, so please correct such statements now while APT doesn't "
+"explicitly complain about them."
+msgstr ""
+"Tenga en cuenta que añadir elementos a la lista mediante <literal>::</"
+"literal> solo funciona para un elemento por línea, y no se debe utilizar con "
+"la sintaxis de ámbitos (que añade <literal>::</literal> de forma implícita). "
+"Utilizar las dos sintaxis combinadas provocaría un fallo del que "
+"lamentablemente dependen algunos usuarios: una opción con el nombre no "
+"habitual «<literal>::</literal>» que actúa como cualquier otra opción con un "
+"nombre. Esto presenta varios problemas; por ejemplo, los usuarios que "
+"escriban varias líneas con esta sintaxis <emphasis>errónea</emphasis> "
+"esperando que se añada a una lista obtendrían lo contrario, ya que solo se "
+"utilizaría la última asignación para la opción «<literal>::</literal>». Las "
+"versiones futuras de APT mostrarán los fallos y detendrán el funcionamiento "
+"si encuentran algún uso inadecuado, y por ello debe corregir tales "
+"declaraciones ahora que APT no muestra fallos de forma explícita."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "The APT Group"
+msgstr "El grupo APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"This group of options controls general APT behavior as well as holding the "
+"options for all of the tools."
+msgstr ""
+"Este grupo de opciones controla el comportamiento general de APT así como "
+"mantiene las opciones para todas las herramientas."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"System Architecture; sets the architecture to use when fetching files and "
+"parsing package lists. The internal default is the architecture apt was "
+"compiled for."
+msgstr ""
+"La arquitectura del sistema, define la arquitectura a usar al obtener los "
+"ficheros y analizar las listas de paquetes. El valor predeterminado es la "
+"arquitectura para la que apt se compiló."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"All Architectures the system supports. For instance, CPUs implementing the "
+"<literal>amd64</literal> (also called <literal>x86-64</literal>) "
+"instruction set are also able to execute binaries compiled for the "
+"<literal>i386</literal> (<literal>x86</literal>) instruction set. This list "
+"is used when fetching files and parsing package lists. The initial default "
+"is always the system's native architecture (<literal>APT::Architecture</"
+"literal>), and foreign architectures are added to the default list when they "
+"are registered via <command>dpkg --add-architecture</command>."
+msgstr ""
+"Todas las arquitecturas que el sistema permite. Por ejemplo, los "
+"procesadores que incorporan el conjunto de instrucciones <literal>amd64</"
+"literal> (también llamado <literal>x86-64</literal>) permiten ejecutar "
+"binarios compilados para el conjunto de instrucciones <literal>i386</"
+"literal> (<literal>x86</literal>). Esta lista se utiliza al obtener paquetes "
+"y analizar las listas de paquetes. El valor predeterminado es la "
+"arquitectura nativa del sistema (<literal>APT::Architecture</literal>), y "
+"las arquitecturas externas se añaden al registro mediante <command>dpkg --"
+"add-architecture</command>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines which compression formats are supported, how compression "
+"and decompression can be performed if support for this format isn't built "
+"into apt directly and a cost-value indicating how costly it is to compress "
+"something in this format. As an example the following configuration stanza "
+"would allow apt to download and uncompress as well as create and store files "
+"with the low-cost <literal>.reversed</literal> file extension which it will "
+"pass to the command <command>rev</command> without additional commandline "
+"parameters for compression and uncompression:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Compressor::rev {\n"
+"\tName \"rev\";\n"
+"\tExtension \".reversed\";\n"
+"\tBinary \"rev\";\n"
+"\tCompressArg {};\n"
+"\tUncompressArg {};\n"
+"\tCost \"10\";\n"
+"};\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"List of all build profiles enabled for build-dependency resolution, without "
+"the \"<literal>profile.</literal>\" namespace prefix. By default this list "
+"is empty. The <envar>DEB_BUILD_PROFILES</envar> as used by &dpkg-"
+"buildpackage; overrides the list notation."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Default release to install packages from if more than one version is "
+"available. Contains release name, codename or release version. Examples: "
+"'stable', 'testing', 'unstable', '&debian-stable-codename;', '&debian-"
+"testing-codename;', '4.0', '5.0*'. See also &apt-preferences;."
+msgstr ""
+"La versión predeterminada de la que se instalarán los paquetes, si hay más "
+"de una versión disponible. Contiene el nombre de la versión, ya sea el "
+"nombre en código o el número de la versión. Por ejemplo: «stable», "
+"«testing», «unstable», «&debian-stable-codename;», «&debian-testing-"
+"codename;», «4.0», «5.0*». Consulte también &apt-preferences;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Ignore held packages; this global option causes the problem resolver to "
+"ignore held packages in its decision making."
+msgstr ""
+"Ignora paquetes retenidos. Esta opción global provoca que el solucionador de "
+"problemas ignore los paquetes retenidos en la toma de decisiones."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Defaults to on. When turned on the autoclean feature will remove any "
+"packages which can no longer be downloaded from the cache. If turned off "
+"then packages that are locally installed are also excluded from cleaning - "
+"but note that APT provides no direct means to reinstall them."
+msgstr ""
+"Activo de forma predeterminada. Cuando se activa la función «autoclean», "
+"ésta eliminará cualquier paquete del almacén que ya no se pueda descargar. "
+"Si se desactiva, entonces los paquetes que están localmente instalados son "
+"excluidos de la limpieza - tenga en cuenta que APT no proporciona ningún "
+"mecanismo directo para reinstalarlos."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Defaults to on, which will cause APT to install essential and important "
+"packages as soon as possible in an install/upgrade operation, in order to "
+"limit the effect of a failing &dpkg; call. If this option is disabled, APT "
+"treats an important package in the same way as an extra package: between the "
+"unpacking of the package A and its configuration there can be many other "
+"unpack or configuration calls for other unrelated packages B, C etc. If "
+"these cause the &dpkg; call to fail (e.g. because package B's maintainer "
+"scripts generate an error), this results in a system state in which package "
+"A is unpacked but unconfigured - so any package depending on A is now no "
+"longer guaranteed to work, as its dependency on A is no longer satisfied."
+msgstr ""
+"Activo de forma predeterminada, lo que provoca que APT instale paquetes "
+"esenciales e importantes en la siguiente acción de instalación/actualización "
+"para así limitar el efecto de un fallo de invocación a &dpkg;. Si se "
+"desactiva esta opción, APT trata un paquete importante de la misma forma que "
+"un paquete extra: entre el desempaquetado del paquete A y su configuración "
+"se pueden dar otros desempaquetados o invocaciones de configuración para "
+"otros paquete no relacionados, como B, C, etc. Si esto último provoca un "
+"fallo en la invocación a &dpkg; (por ejemplo, porque los scripts de "
+"desarrollador del paquete B provocan un error), el resultado es un estado "
+"del sistema en el que el paquete A está desempaquetado pero no configurado, "
+"lo que puede afectar al correcto funcionamiento de los paquetes dependientes "
+"del paquete A, ya que no se satisface la dependencia sobre éste."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The immediate configuration marker is also applied in the potentially "
+"problematic case of circular dependencies, since a dependency with the "
+"immediate flag is equivalent to a Pre-Dependency. In theory this allows APT "
+"to recognise a situation in which it is unable to perform immediate "
+"configuration, abort, and suggest to the user that the option should be "
+"temporarily deactivated in order to allow the operation to proceed. Note "
+"the use of the word \"theory\" here; in the real world this problem has "
+"rarely been encountered, in non-stable distribution versions, and was caused "
+"by wrong dependencies of the package in question or by a system in an "
+"already broken state; so you should not blindly disable this option, as the "
+"scenario mentioned above is not the only problem it can help to prevent in "
+"the first place."
+msgstr ""
+"El marcador de configuración inmediata también se aplica en los casos "
+"problemáticos de dependencias circulares, ya que una dependencia con el "
+"marcador de configuración inmediata equivale a una predependencia. En "
+"teoría, esto permite que APT reconozca un caso en el que no puede realizar "
+"una configuración inmediata, interrumpa la operación, y sugiera al usuario "
+"la desactivación temporal de la opción para poder completar la operación. "
+"Tenga en cuenta el uso de la palabra «teoría»; el uso real ha provocado este "
+"problema muy pocas veces, en versiones de publicaciones no estables, y "
+"provocado por las dependencias erróneas de un paquete específico o en un "
+"sistema con un estado previo de dependencias rotas. No desactive esta opción "
+"sin reflexionar antes, ya que evita otros problemas además del caso descrito "
+"anteriormente."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Before a big operation like <literal>dist-upgrade</literal> is run with this "
+"option disabled you should try to explicitly <literal>install</literal> the "
+"package APT is unable to configure immediately; but please make sure you "
+"also report your problem to your distribution and to the APT team with the "
+"buglink below, so they can work on improving or correcting the upgrade "
+"process."
+msgstr ""
+"Antes de ejecutar una operación profunda como <literal>dist-upgrade</"
+"literal> con esta opción desactivada, debería intentar ejecutar "
+"<literal>install</literal> para el paquete que APT es incapaz de configurar "
+"inmediatamente; cerciórese de informar de su problema a su distribución y al "
+"equipo de APT mediante el enlace de informe de fallo al final del documento, "
+"para que así pueden mejorar y corregir el proceso de actualización."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Never enable this option unless you <emphasis>really</emphasis> know what "
+"you are doing. It permits APT to temporarily remove an essential package to "
+"break a Conflicts/Conflicts or Conflicts/Pre-Depends loop between two "
+"essential packages. <emphasis>Such a loop should never exist and is a grave "
+"bug</emphasis>. This option will work if the essential packages are not "
+"<command>tar</command>, <command>gzip</command>, <command>libc</command>, "
+"<command>dpkg</command>, <command>dash</command> or anything that those "
+"packages depend on."
+msgstr ""
+"Nunca active esta opción a menos que <emphasis>realmente</emphasis> sepa lo "
+"que hace. Permite a APT eliminar un paquete esencial de forma temporal para "
+"interrumpir un bucle «Conflicto/Conflicto» o «Conflicto/Predepende» entre "
+"dos paquetes esenciales. <emphasis>Un buble así no debería existir y es un "
+"fallo serio</emphasis>. Esta opción funciona si los paquetes esenciales no "
+"son <command>tar</command>, <command>gzip</command>, <command>libc</"
+"command>, <command>dpkg</command>, <command>dash</command> o cualquier cosa "
+"sobre la que estos paquetes dependen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"APT uses since version 0.7.26 a resizable memory mapped cache file to store "
+"the available information. <literal>Cache-Start</literal> acts as a hint of "
+"the size the cache will grow to, and is therefore the amount of memory APT "
+"will request at startup. The default value is 20971520 bytes (~20 MB). Note "
+"that this amount of space needs to be available for APT; otherwise it will "
+"likely fail ungracefully, so for memory restricted devices this value should "
+"be lowered while on systems with a lot of configured sources it should be "
+"increased. <literal>Cache-Grow</literal> defines in bytes with the default "
+"of 1048576 (~1 MB) how much the cache size will be increased in the event "
+"the space defined by <literal>Cache-Start</literal> is not enough. This "
+"value will be applied again and again until either the cache is big enough "
+"to store all information or the size of the cache reaches the <literal>Cache-"
+"Limit</literal>. The default of <literal>Cache-Limit</literal> is 0 which "
+"stands for no limit. If <literal>Cache-Grow</literal> is set to 0 the "
+"automatic growth of the cache is disabled."
+msgstr ""
+"A partir de la versión 0.7.26, APT utiliza un fichero de caché mapeado en "
+"memoria para almacenar la información de paquetes disponibles. "
+"<literal>Cache-Start</literal> actúa como una indicación del tamaño máximo "
+"de la caché, y por ello es la cantidad de memoria que APT solicita al "
+"iniciarse. El valor predeterminado es 20971520 bytes (aprox. 20 MB). Tenga "
+"en cuanta que esta cantidad de espacio debe estar disponible para APT; de lo "
+"contrario, fallará posiblemente, y por ello se debe reducir este valor para "
+"dispositivos con restricciones de memoria, mientras que se debe aumentar "
+"para sistemas con varias fuentes configuradas. <literal>Cache-Grow</literal> "
+"define en bytes con un valor predeterminado de 1048576 (aprox. 1 MB) cuánto "
+"puede aumentar como máximo el tamaño de la caché si no basta con el espacio "
+"definido con <literal>Cache-Start</literal>. Este valor se aplica repetidas "
+"veces hasta que la caché puede almacenar toda la información, o el tamaño de "
+"la caché alcance el valor definido con <literal>Cache-Limit</literal>. El "
+"valor predeterminado de <literal>Cache-Limit</literal> es cero, sin límite. "
+"Si se define <literal>Cache-Grow</literal> con un valor de cero, se "
+"desactiva el crecimiento automático de la caché."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Defines which packages are considered essential build dependencies."
+msgstr ""
+"Define los paquetes que se consideran dependencias de construcción "
+"esenciales."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Get subsection controls the &apt-get; tool; please see its documentation "
+"for more information about the options here."
+msgstr ""
+"La subsección «Get» controla la herramienta &apt-get;; consulte la "
+"documentación para más información sobre esta opción."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Cache subsection controls the &apt-cache; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"La subsección Cache controla la herramienta &apt-cache;; consulte la "
+"documentación para más información sobre esta opción."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The CDROM subsection controls the &apt-cdrom; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"La subsección CDROM controla la herramienta &apt-cdrom;; consulte la "
+"documentación para más información sobre esta opción."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "The Acquire Group"
+msgstr "El grupo Acquire"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Acquire</literal> group of options controls the download of "
+"packages as well as the various \"acquire methods\" responsible for the "
+"download itself (see also &sources-list;)."
+msgstr ""
+"El grupo de opciones <literal>Acquire</literal> controla la descarga de "
+"paquetes y los distintos métodos de obtención responsable de la descarga en "
+"sí mismo (consulte también &sources-list;)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Security related option defaulting to true, as giving a Release file's "
+#| "validation an expiration date prevents replay attacks over a long "
+#| "timescale, and can also for example help users to identify mirrors that "
+#| "are no longer updated - but the feature depends on the correctness of the "
+#| "clock on the user system. Archive maintainers are encouraged to create "
+#| "Release files with the <literal>Valid-Until</literal> header, but if they "
+#| "don't or a stricter value is desired the <literal>Max-ValidTime</literal> "
+#| "option below can be used."
+msgid ""
+"Security related option defaulting to true, as giving a Release file's "
+"validation an expiration date prevents replay attacks over a long timescale, "
+"and can also for example help users to identify mirrors that are no longer "
+"updated - but the feature depends on the correctness of the clock on the "
+"user system. Archive maintainers are encouraged to create Release files with "
+"the <literal>Valid-Until</literal> header, but if they don't or a stricter "
+"value is desired the <literal>Max-ValidTime</literal> option below can be "
+"used. The <option>Check-Valid-Until</option> option of &sources-list; "
+"entries should be preferred to disable the check selectively instead of "
+"using this global override."
+msgstr ""
+"Opción relacionada con la seguridad, cuyo valor predeterminado es «true», ya "
+"que una validación con fecha de vencimiento para un fichero «Release» evita "
+"ataques replay de larga duración y puede, por ejemplo, ayudar a identificar "
+"las réplicas no actualizadas, aunque esta función depende de la corrección "
+"de la hora del sistema del usuario. Se recomienda a los responsables de "
+"archivos que creen ficheros «Release» con la cabecera <literal>Valid-Until</"
+"literal>, pero si no se hace o se desea un valor más estricto, se puede "
+"utilizar la opción <literal>Max-ValidTime</literal> a continuación."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Maximum time (in seconds) after its creation (as indicated by the "
+#| "<literal>Date</literal> header) that the <filename>Release</filename> "
+#| "file should be considered valid. If the Release file itself includes a "
+#| "<literal>Valid-Until</literal> header the earlier date of the two is used "
+#| "as the expiration date. The default value is <literal>0</literal> which "
+#| "stands for \"valid forever\". Archive specific settings can be made by "
+#| "appending the label of the archive to the option name."
+msgid ""
+"Maximum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. If the Release file itself includes a "
+"<literal>Valid-Until</literal> header the earlier date of the two is used as "
+"the expiration date. The default value is <literal>0</literal> which stands "
+"for \"valid forever\". Archive specific settings can be made by appending "
+"the label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the <option>Valid-"
+"Until-Max</option> option there."
+msgstr ""
+"El periodo (en segundos) a partir de la creación del fichero "
+"«Release» (indicado en la cabecera <literal>Date</literal>) durante el cual "
+"se considerará válida. Si el fichero «Release» incluye una cabecera "
+"<literal>Valid-Until</literal>, la fecha más temprana se utilizará como la "
+"fecha de vencimiento. El valor predefinido es <literal>0</literal>, esto es, "
+"sin límite de tiempo. Las opciones de configuración específicas al archivo "
+"se pueden realizar añadiendo la etiqueta del archivo al nombre de opción."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Minimum time (in seconds) after its creation (as indicated by the "
+#| "<literal>Date</literal> header) that the <filename>Release</filename> "
+#| "file should be considered valid. Use this if you need to use a seldom "
+#| "updated (local) mirror of a more frequently updated archive with a "
+#| "<literal>Valid-Until</literal> header instead of completely disabling the "
+#| "expiration date checking. Archive specific settings can and should be "
+#| "used by appending the label of the archive to the option name."
+msgid ""
+"Minimum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. Use this if you need to use a seldom updated "
+"(local) mirror of a more frequently updated archive with a <literal>Valid-"
+"Until</literal> header instead of completely disabling the expiration date "
+"checking. Archive specific settings can and should be used by appending the "
+"label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the <option>Valid-"
+"Until-Min</option> option there."
+msgstr ""
+"El tiempo mínimo en segundos a partir de la creación del fichero "
+"<filename>Release</filename> (indicado en la cabecera <literal>Date</"
+"literal>) durante los cuales se considerará válido .Utilícelo si necesita "
+"utilizar una réplica (local) raramente actualizada que es copia de un "
+"archivo actualizado regularmente con una cabecera calida <literal>Valid-"
+"Until</literal> en lugar de desactivar la comprobación de la fecha de "
+"vencimiento. Las opciones de configuración específicas del archivo se pueden "
+"y deben utilizar añadiendo la etiqueta del archivo al nombre de opción."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Try to download deltas called <literal>PDiffs</literal> for indexes (like "
+#| "<filename>Packages</filename> files) instead of downloading whole ones. "
+#| "True by default."
+msgid ""
+"Try to download deltas called <literal>PDiffs</literal> for indexes (like "
+"<filename>Packages</filename> files) instead of downloading whole ones. True "
+"by default. Preferably, this can be set for specific &sources-list; entries "
+"or index files by using the <option>PDiffs</option> option there."
+msgstr ""
+"Intenta descargar deltas llamados <literal>PDiffs</literal> para los índices "
+"(como ficheros <filename>Packages</filename>) en lugar de descargarlos "
+"enteros. Su valor predeterminado es «true»."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Two sub-options to limit the use of PDiffs are also available: "
+"<literal>FileLimit</literal> can be used to specify a maximum number of "
+"PDiff files should be downloaded to update a file. <literal>SizeLimit</"
+"literal> on the other hand is the maximum percentage of the size of all "
+"patches compared to the size of the targeted file. If one of these limits is "
+"exceeded the complete file is downloaded instead of the patches."
+msgstr ""
+"Se ofrecen dos opciones secundarias para limitar el uso de «PDiffs»: "
+"<literal>FileLimit</literal> permite definir el número máximo de ficheros "
+"«PDiff» que se descargarán para actualizar un fichero. Por otra parte, "
+"<literal>SizeLimit</literal> es el porcentaje máximo del tamaño de todos los "
+"parches en comparación con el tamaño del fichero de destino. Si se supera "
+"uno de estos límites, se descargará el fichero completo en lugar de los "
+"parches."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Try to download deltas called <literal>PDiffs</literal> for indexes (like "
+#| "<filename>Packages</filename> files) instead of downloading whole ones. "
+#| "True by default."
+msgid ""
+"Try to download indexes via an URI constructed from a hashsum of the "
+"expected file rather than downloaded via a well-known stable filename. True "
+"by default, but automatically disabled if the source indicates no support "
+"for it. Usage can be forced with the special value \"force\". Preferably, "
+"this can be set for specific &sources-list; entries or index files by using "
+"the <option>By-Hash</option> option there."
+msgstr ""
+"Intenta descargar deltas llamados <literal>PDiffs</literal> para los índices "
+"(como ficheros <filename>Packages</filename>) en lugar de descargarlos "
+"enteros. Su valor predeterminado es «true»."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</"
+"literal> or <literal>access</literal> which determines how APT parallelizes "
+"outgoing connections. <literal>host</literal> means that one connection per "
+"target host will be opened, <literal>access</literal> means that one "
+"connection per URI type will be opened."
+msgstr ""
+"Modo de cola, <literal>Queue-Mode</literal> puede ser <literal>host</"
+"literal> o <literal>access</literal>, que determina cómo paralelizará APT "
+"las conexiones salientes. <literal>host</literal> significa que se abrirá "
+"una conexión por máquina de destino, <literal>access</literal> significa que "
+"se abrirá una conexión por cada tipo de URI."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Number of retries to perform. If this is non-zero APT will retry failed "
+"files the given number of times."
+msgstr ""
+"El número de reintentos a realizar. Si es distinto de cero APT volverá a "
+"intentar obtener los ficheros fallidos el número de veces proporcionado."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Use symlinks for source archives. If set to true then source archives will "
+"be symlinked when possible instead of copying. True is the default."
+msgstr ""
+"Utiliza enlaces simbólicos para los archivos fuente. Si es «true» los "
+"archivos fuente se enlazarán cuando sea posible, en vez de copiarse. Es "
+"«true» de forma predeterminada."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>http::Proxy</literal> sets the default proxy to use for HTTP URIs. "
+"It is in the standard form of <literal>http://[[user][:pass]@]host[:port]/</"
+"literal>. Per host proxies can also be specified by using the form "
+"<literal>http::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>http_proxy</envar> environment variable will "
+"be used."
+msgstr ""
+"<literal>http::Proxy</literal> define el proxy predeterminado que utilizar "
+"para direcciones HTTP URI. Utiliza el formato estándar <literal>http://"
+"[[usuario][:contraseña]@]máquina[:puerto]/</literal>. También se puede "
+"especificar un proxy por cada máquina usando la forma <literal>http::Proxy::"
+"&lt;máquina&gt;</literal> con la palabra especial <literal>DIRECT</literal> "
+"que significa que no se use ningún proxy. La variable de entorno "
+"<envar>http_proxy</envar> se usará en caso de no definir ninguna de las "
+"opciones anteriores."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Three settings are provided for cache control with HTTP/1.1 compliant proxy "
+"caches. <literal>No-Cache</literal> tells the proxy not to use its cached "
+"response under any circumstances. <literal>Max-Age</literal> sets the "
+"allowed maximum age (in seconds) of an index file in the cache of the "
+"proxy. <literal>No-Store</literal> specifies that the proxy should not "
+"store the requested archive files in its cache, which can be used to prevent "
+"the proxy from polluting its cache with (big) .deb files."
+msgstr ""
+"Se proporcionan tres opciones de configuración para el control de la caché "
+"con proxy cachés conformes a HTTP/1.1. <literal>No-Cache</literal> indica al "
+"proxy que nunca utilice la respuesta cacheada. <literal>Max-Age</literal> "
+"define la máxima antigüedad permitida (en segundos) de un fichero de índice "
+"en la caché de un proxy. <literal>No-Store</literal> define que el proxy no "
+"debe almacenar ficheros del archivo en su caché, que se puede utilizar para "
+"impedir que el proxy contamine la caché con ficheros «.deb» (de gran tamaño)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The option <literal>timeout</literal> sets the timeout timer used by the "
+"method; this value applies to the connection as well as the data timeout."
+msgstr ""
+"La opción <literal>timeout</literal> define el tiempo máximo de espera "
+"utilizado por el método; este valor se aplica al establecimiento de conexión "
+"y a la recepción de datos."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used "
+#| "to enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be "
+#| "beneficial e.g. on high-latency connections. It specifies how many "
+#| "requests are sent in a pipeline. Previous APT versions had a default of "
+#| "10 for this setting, but the default value is now 0 (= disabled) to avoid "
+#| "problems with the ever-growing amount of webservers and proxies which "
+#| "choose to not conform to the HTTP/1.1 specification."
+msgid ""
+"The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e."
+"g. on high-latency connections. It specifies how many requests are sent in a "
+"pipeline. APT tries to detect and workaround misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the "
+"HTTP/1.1 specification pipelining can be disabled by setting the value to 0. "
+"It is enabled by default with the value 10."
+msgstr ""
+"La opción <literal>Acquire::http::Pipeline-Depth</literal> se puede utilizar "
+"para activar HTTP pipelining (RFC 2616 sección 8.1.2.2), que puede "
+"facilitar, por ejemplo, las conexiones de latencia alta. También define el "
+"número de solicitudes que se envían en cada pipeline. El valor "
+"predeterminado para esta opción con versiones anteriores de APT era 10, pero "
+"ahora el valor predeterminado es cero (= desactivado) para evitar problemas "
+"con la siempre creciente cantidad de servidores web y proxies que escogen no "
+"cumplir la especificación HTTP/1.1."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::AllowRedirect</literal> controls whether APT will "
+"follow redirects, which is enabled by default."
+msgstr ""
+"<literal>Acquire::http::AllowRedirect</literal> controla si APT respeta una "
+"redirección; activado por omisión."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</"
+#| "literal> which accepts integer values in kilobytes. The default value is "
+#| "0 which deactivates the limit and tries to use all available bandwidth "
+#| "(note that this option implicitly disables downloading from multiple "
+#| "servers at the same time.)"
+msgid ""
+"The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</"
+"literal> which accepts integer values in kilobytes per second. The default "
+"value is 0 which deactivates the limit and tries to use all available "
+"bandwidth. Note that this option implicitly disables downloading from "
+"multiple servers at the same time."
+msgstr ""
+"El ancho de banda usado se puede limitar mediante <literal>Acquire::http::Dl-"
+"Limit</literal>, que acepta valores enteros en kilobytes. El valor "
+"predeterminado es cero, que desactiva el límite e intenta utilizar todo el "
+"ancho de banda disponible (tenga en cuenta que esta opción desactiva "
+"implícitamente la descarga simultánea desde varios servidores)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::User-Agent</literal> can be used to set a different "
+"User-Agent for the http download method as some proxies allow access for "
+"clients only if the client uses a known identifier."
+msgstr ""
+"<literal>Acquire::http::User-Agent</literal> se puede usar para definir un "
+"«User-Agent» distinto para la descarga http ya que algunos proxys sólo "
+"permiten el acceso para clientes que usan un identificador conocido."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::Proxy-Auto-Detect</literal> can be used to specify "
+"an external command to discover the http proxy to use. The first and only "
+"parameter is an URI denoting the host to be contacted to allow for host-"
+"specific configuration. APT expects the command to output the proxy on "
+"stdout as a single line in the style <literal>http://proxy:port/</literal> "
+"or the word <literal>DIRECT</literal> if no proxy should be used. No output "
+"indicates that the generic proxy settings should be used. Note that auto-"
+"detection will not be used for a host if a host-specific proxy configuration "
+"is already set via <literal>Acquire::http::Proxy::<replaceable>HOST</"
+"replaceable></literal>. See the &squid-deb-proxy-client; package for an "
+"example implementation that uses avahi. This option takes precedence over "
+"the legacy option name <literal>ProxyAutoDetect</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Cache-control</literal>, <literal>Timeout</literal>, "
+"<literal>AllowRedirect</literal>, <literal>Dl-Limit</literal> and "
+"<literal>proxy</literal> options work for HTTPS URIs in the same way as for "
+"the <literal>http</literal> method, and default to the same values if they "
+"are not explicitly set. The <literal>Pipeline-Depth</literal> option is not "
+"yet supported."
+msgstr ""
+"Las opciones <literal>Cache-control</literal>, <literal>Timeout</literal>, "
+"<literal>AllowRedirect</literal>, <literal>Dl-Limit</literal> y "
+"<literal>proxy</literal> funcionan con direcciones HTTPS URI de la misma "
+"forma que con el método <literal>http</literal>, y utiliza los mismos "
+"valores predeterminados si no se define. Aún no se permite la opción "
+"<literal>Pipeline-Depth</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>CaInfo</literal> suboption specifies place of file that holds info "
+"about trusted certificates. <literal>&lt;host&gt;::CaInfo</literal> is the "
+"corresponding per-host option. <literal>Verify-Peer</literal> boolean "
+"suboption determines whether or not the server's host certificate should be "
+"verified against trusted certificates. <literal>&lt;host&gt;::Verify-Peer</"
+"literal> is the corresponding per-host option. <literal>Verify-Host</"
+"literal> boolean suboption determines whether or not the server's hostname "
+"should be verified. <literal>&lt;host&gt;::Verify-Host</literal> is the "
+"corresponding per-host option. <literal>SslCert</literal> determines what "
+"certificate to use for client authentication. <literal>&lt;host&gt;::"
+"SslCert</literal> is the corresponding per-host option. <literal>SslKey</"
+"literal> determines what private key to use for client authentication. "
+"<literal>&lt;host&gt;::SslKey</literal> is the corresponding per-host "
+"option. <literal>SslForceVersion</literal> overrides default SSL version to "
+"use. It can contain either of the strings '<literal>TLSv1</literal>' or "
+"'<literal>SSLv3</literal>'. <literal>&lt;host&gt;::SslForceVersion</"
+"literal> is the corresponding per-host option."
+msgstr ""
+"La subopción <literal>CaInfo</literal> define la ubicación del fichero que "
+"guarda la información sobre certificados de confianza. <literal>&lt;"
+"host&gt;::CaInfo</literal> es la opción correspondiente para cada servidor. "
+"La subopción booleana <literal>Verify-Peer</literal> define si se debe "
+"comprobar el certificado del servidor con certificados de confianza. "
+"<literal>&lt;host&gt;::Verify-Peer</literal> es la opción correspondiente "
+"para cada servidor. La subopción booleana <literal>Verify-Host</literal> "
+"define si se debe comprobar el «hostname» del servidor. <literal>&lt;"
+"host&gt;::Verify-Host</literal> es la opción correspondiente para cada "
+"servidor. <literal>SslCert</literal> define el certificado que utilizar para "
+"la autenticación del cliente. <literal>&lt;host&gt;::SslCert</literal> es la "
+"opción correspondiente para cada servidor. <literal>SslKey</literal> define "
+"la clave privada que utilizar para la autenticación del cliente. "
+"<literal>&lt;host&gt;::SslKey</literal> es la opción correspondiente para "
+"cada servidor. <literal>SslForceVersion</literal> sustituye la versión "
+"predeterminada de SSL que utilizar. Se admiten las cadenas «<literal>TLSv1</"
+"literal>» o «<literal>SSLv3</literal>». <literal>&lt;host&gt;::"
+"SslForceVersion</literal> es la opción correspondiente para cada servidor."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs. "
+"It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</"
+"literal>. Per host proxies can also be specified by using the form "
+"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
+"used. To use an FTP proxy you will have to set the <literal>ftp::ProxyLogin</"
+"literal> script in the configuration file. This entry specifies the commands "
+"to send to tell the proxy server what to connect to. Please see "
+"&configureindex; for an example of how to do this. The substitution "
+"variables representing the corresponding URI component are <literal>"
+"$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, <literal>"
+"$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, <literal>$(SITE)</"
+"literal> and <literal>$(SITE_PORT)</literal>."
+msgstr ""
+"<literal>ftp::Proxy</literal> define el proxy predeterminado que utilizar "
+"para los URI de FTP. Utiliza el formato estándar <literal>ftp://[[usuario][:"
+"contraseña]@]máquina[:puerto]/</literal>. También se puede especificar un "
+"proxy por cada máquina usando la forma <literal>ftp::Proxy::&lt;máquina&gt;</"
+"literal> con la palabra especial <literal>DIRECT</literal>, que significa "
+"que no se use ningún proxy. La variable de entorno <envar>ftp_proxy</envar> "
+"se usará en caso de no definir ninguna de las opciones anteriores. Para usar "
+"un proxy FTP debe configurar el script <literal>ftp::ProxyLogin</literal> en "
+"el fichero de configuración. Esta entrada define las órdenes a enviar para "
+"decirle al servidor del proxy a qué conectarse. Consulte &configureindex; "
+"para un ejemplo de uso. Las variables de sustitución que representan el "
+"componente URI son <literal>$(PROXY_USER)</literal> <literal>$(PROXY_PASS)</"
+"literal> <literal>$(SITE_USER)</literal> <literal>$(SITE_PASS)</literal> "
+"<literal>$(SITE)</literal> y <literal>$(SITE_PORT)</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Several settings are provided to control passive mode. Generally it is safe "
+"to leave passive mode on; it works in nearly every environment. However, "
+"some situations require that passive mode be disabled and port mode FTP used "
+"instead. This can be done globally or for connections that go through a "
+"proxy or for a specific host (see the sample config file for examples)."
+msgstr ""
+"Puede controlar el modo pasivo a través de varias opciones. Habitualmente, "
+"es seguro dejar activado el modo pasivo, y funciona en casi todos los "
+"entornos. Sin embargo algunas situaciones requieren desactivar el modo "
+"pasivo y usar el modo puerto de FTP en su lugar. Esto se puede hacer "
+"globalmente, para conexiones a través de un proxy o para una máquina en "
+"concreto (consulte el ejemplo de fichero de configuración para ver algunos "
+"ejemplos)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
+"envar> environment variable to an HTTP URL - see the discussion of the http "
+"method above for syntax. You cannot set this in the configuration file and "
+"it is not recommended to use FTP over HTTP due to its low efficiency."
+msgstr ""
+"Es posible usar un proxy FTP a través de HTTP definiendo la variable de "
+"entorno <envar>ftp_proxy</envar> con un HTTP URL. Para la sintaxis consulte "
+"la explicación anterior del método http. Esto no puede definir en el fichero "
+"de configuración y no se recomienda el uso de FTP por encima de HTTP debido "
+"a su poca eficiencia."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
+"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
+"false, which means these commands are only used if the control connection is "
+"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
+"that most FTP servers do not support RFC2428."
+msgstr ""
+"La opción <literal>ForceExtended</literal> controla el uso de las órdenes de "
+"RFC 2428 <literal>EPSV</literal> y <literal>EPRT</literal>. De forma "
+"predeterminada es «false», que significa que sólo se usa si el control de "
+"conexión es IPv6. Cambiándolo a «true» fuerza su uso incluso en conexiones "
+"IPv4. Tenga en cuenta que la mayoría de los servidores de FTP no son "
+"compatibles con la RFC 2428."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "/cdrom/::Mount \"foo\";"
+msgstr "/cdrom/::Mount \"algo\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"For URIs using the <literal>cdrom</literal> method, the only configurable "
+"option is the mount point, <literal>cdrom::Mount</literal>, which must be "
+"the mount point for the CD-ROM (or DVD, or whatever) drive as specified in "
+"<filename>/etc/fstab</filename>. It is possible to provide alternate mount "
+"and unmount commands if your mount point cannot be listed in the fstab. The "
+"syntax is to put <placeholder type=\"literallayout\" id=\"0\"/> within the "
+"<literal>cdrom</literal> block. It is important to have the trailing slash. "
+"Unmount commands can be specified using UMount."
+msgstr ""
+"Para los URI que utilizan el método <literal>cdrom</literal>, la única "
+"opción configurable es el punto de montaje, <literal>cdrom::Mount</literal>, "
+"que debe ser el punto de montaje del dispositivo de CD-ROM (o DVD u otro) "
+"tal y como se define en <filename>/etc/fstab</filename>. Se pueden "
+"proporcionar órdenes «mount» y «unmount» alternativas si el punto de montaje "
+"no se puede definir en el fichero «fstab». La sintaxis consiste en insertar "
+"<placeholder type=\"literallayout\" id=\"0\"/> dentro del bloque "
+"<literal>cdrom</literal>. Es importante dejar una barra al final. Puede "
+"especificar órdenes para desmontar mediante UMount."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"For GPGV URIs the only configurable option is <literal>gpgv::Options</"
+"literal>, which passes additional parameters to gpgv."
+msgstr ""
+"Para direcciones GPGV URI, la única opción configurable es <literal>gpgv::"
+"Options</literal>, que introduce parámetros adicionales a gpgv."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";"
+msgstr "Acquire::CompressionTypes::<replaceable>extensión-del-fichero</replaceable> \"<replaceable>nombre-del-método</replaceable>\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "List of compression types which are understood by the acquire methods. "
+#| "Files like <filename>Packages</filename> can be available in various "
+#| "compression formats. By default the acquire methods can decompress "
+#| "<command>bzip2</command>, <command>lzma</command> and <command>gzip</"
+#| "command> compressed files; with this setting more formats can be added on "
+#| "the fly or the used method can be changed. The syntax for this is: "
+#| "<placeholder type=\"synopsis\" id=\"0\"/>"
+msgid ""
+"List of compression types which are understood by the acquire methods. "
+"Files like <filename>Packages</filename> can be available in various "
+"compression formats. By default the acquire methods can decompress and "
+"recompress many common formats like <command>xz</command> and <command>gzip</"
+"command>; with this scope the supported formats can be queried, modified as "
+"well as support for more formats added (see also <option>APT::Compressor</"
+"option>). The syntax for this is: <placeholder type=\"synopsis\" id=\"0\"/>"
+msgstr ""
+"Lista de los tipos de compresión que se pueden usar en los métodos de "
+"«acquire». Los ficheros como <filename>Packages</filename> pueden estar "
+"disponibles en varios formatos de compresión. De forma predeterminada los "
+"métodos de «acquire» pueden descomprimir los ficheros comprimidos en "
+"<command>bzip2</command>, <command>lzma</command> y <command>gzip</command>, "
+"y con esta opción se pueden añadir más formatos en el momento, o cambiar el "
+"método usado. La sintaxis para esto es: <placeholder type=\"synopsis\" id="
+"\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order:: \"gz\";"
+msgstr "Acquire::CompressionTypes::Order:: \"gz\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order { \"xz\"; \"gz\"; };"
+msgstr "Acquire::CompressionTypes::Order { \"xz\"; \"gz\"; };"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Also, the <literal>Order</literal> subgroup can be used to define in "
+#| "which order the acquire system will try to download the compressed files. "
+#| "The acquire system will try the first and proceed with the next "
+#| "compression type in this list on error, so to prefer one over the other "
+#| "type simply add the preferred type first - default types not already "
+#| "added will be implicitly appended to the end of the list, so e.g. "
+#| "<placeholder type=\"synopsis\" id=\"0\"/> can be used to prefer "
+#| "<command>gzip</command> compressed files over <command>bzip2</command> "
+#| "and <command>lzma</command>. If <command>lzma</command> should be "
+#| "preferred over <command>gzip</command> and <command>bzip2</command> the "
+#| "configure setting should look like this: <placeholder type=\"synopsis\" "
+#| "id=\"1\"/> It is not needed to add <literal>bz2</literal> to the list "
+#| "explicitly as it will be added automatically."
+msgid ""
+"Also, the <literal>Order</literal> subgroup can be used to define in which "
+"order the acquire system will try to download the compressed files. The "
+"acquire system will try the first and proceed with the next compression type "
+"in this list on error, so to prefer one over the other type simply add the "
+"preferred type first - types not already added will be implicitly appended "
+"to the end of the list, so e.g. <placeholder type=\"synopsis\" id=\"0\"/> "
+"can be used to prefer <command>gzip</command> compressed files over all "
+"other compression formats. If <command>xz</command> should be preferred "
+"over <command>gzip</command> and <command>bzip2</command> the configure "
+"setting should look like this: <placeholder type=\"synopsis\" id=\"1\"/> It "
+"is not needed to add <literal>bz2</literal> to the list explicitly as it "
+"will be added automatically."
+msgstr ""
+"El subgrupo <literal>Order</literal> también se puede usar para definir en "
+"qué orden el sistema de «acquire» intentará descargar los ficheros "
+"comprimidos. El sistema de «acquire» intentará el primero y, en caso de "
+"error, procederá con el siguiente tipo de compresión de la lista, por lo que "
+"si prefiere un tipo antes que otro sólo tiene que añadirlo a la lista el "
+"primero (los tipos predeterminados que no se han añadido lo hacen de forma "
+"implícita al final de la lista; por ejemplo, <placeholder type=\"synopsis\" "
+"id=\"0\"/> se puede usar cuando se prefieran los ficheros comprimidos con "
+"<command>gzip</command> antes que con <command>bzip2</command> y "
+"<command>lzma</command>. Si se prefiere <command>lzma</command> antes que "
+"<command>gzip</command> y <command>bzip2</command>, la opción de "
+"configuración debería parecerse a esto <placeholder type=\"synopsis\" id="
+"\"1\"/> No es necesario añadir <literal>bz2</literal> a la lista de forma "
+"explícita ya que se añadirá de forma automática."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Dir::Bin::bzip2 \"/bin/bzip2\";"
+msgstr "Dir::Bin::bzip2 \"/bin/bzip2\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Note that the <literal>Dir::Bin::<replaceable>Methodname</replaceable></"
+#| "literal> will be checked at run time. If this option has been set, the "
+#| "method will only be used if this file exists; e.g. for the "
+#| "<literal>bzip2</literal> method (the inbuilt) setting is: <placeholder "
+#| "type=\"literallayout\" id=\"0\"/> Note also that list entries specified "
+#| "on the command line will be added at the end of the list specified in the "
+#| "configuration files, but before the default entries. To prefer a type in "
+#| "this case over the ones specified in the configuration files you can set "
+#| "the option direct - not in list style. This will not override the "
+#| "defined list; it will only prefix the list with this type."
+msgid ""
+"Note that the <literal>Dir::Bin::<replaceable>Methodname</replaceable></"
+"literal> will be checked at run time. If this option has been set and "
+"support for this format isn't directly built into apt, the method will only "
+"be used if this file exists; e.g. for the <literal>bzip2</literal> method "
+"(the inbuilt) setting is: <placeholder type=\"literallayout\" id=\"0\"/> "
+"Note also that list entries specified on the command line will be added at "
+"the end of the list specified in the configuration files, but before the "
+"default entries. To prefer a type in this case over the ones specified in "
+"the configuration files you can set the option direct - not in list style. "
+"This will not override the defined list; it will only prefix the list with "
+"this type."
+msgstr ""
+"Tenga en cuenta que <literal>Dir::Bin::<replaceable>método</replaceable></"
+"literal> se comprueba en tiempo de ejecución. Si se define esta opción, el "
+"método se usará solo si este fichero existe; por ejemplo, la opción para el "
+"método <literal>bzip2</literal> (integrado) es: <placeholder type="
+"\"literallayout\" id=\"0\"/>. Tenga en cuenta que las entradas para la "
+"lista definidas en la línea de órdenes se añadirán al final de la lista "
+"definida en los ficheros de configuración, pero antes que las entradas "
+"predefinidas. Si prefiere un tipo sobre otro definido en los ficheros de "
+"configuración, defina la opción directamente, no en estilo de lista. Esto no "
+"omite la lista definida, simplemente prefija la lista con este tipo."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The special type <literal>uncompressed</literal> can be used to give "
+"uncompressed files a preference, but note that most archives don't provide "
+"uncompressed files so this is mostly only useable for local mirrors."
+msgstr ""
+"El tipo especial <literal>uncompressed</literal> se puede utilizar para "
+"establecer una preferencia por los ficheros descomprimidos, pero tenga en "
+"cuenta que la mayoría de archivos no proporcionan ficheros descomprimidos, "
+"así que habitualmente esto solo sirve con réplicas locales."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"When downloading <literal>gzip</literal> compressed indexes (Packages, "
+"Sources, or Translations), keep them gzip compressed locally instead of "
+"unpacking them. This saves quite a lot of disk space at the expense of more "
+"CPU requirements when building the local package caches. False by default."
+msgstr ""
+"Al descargar ficheros de índice comprimidos con <literal>gzip</literal>, "
+"(«Packages», «Sources», o «Translations»), los mantiene comprimidos "
+"localmente en lugar de desempaquetarlos. Esto ahorra mucho espacio en disco "
+"a costa de mayores requerimientos del procesador al generar los almacenes de "
+"paquetes locales. El valor predeterminado es «false»."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Languages subsection controls which <filename>Translation</filename> "
+"files are downloaded and in which order APT tries to display the description-"
+"translations. APT will try to display the first available description in the "
+"language which is listed first. Languages can be defined with their short or "
+"long language codes. Note that not all archives provide "
+"<filename>Translation</filename> files for every language - the long "
+"language codes are especially rare."
+msgstr ""
+"La subsección «Languages» controla qué ficheros <filename>Translation</"
+"filename> se descargan y en qué orden APT intentará mostrar las traducciones "
+"de la descripción. APT intentará mostrar la primera descripción en el idioma "
+"que esté primero en la lista. Los idiomas se pueden especificar con sus "
+"códigos de idioma cortos o largos. Tenga en cuenta que no todos los archivos "
+"de paquetes proporcionan ficheros <filename>Translation</filename> para cada "
+"idioma (especialmente para los códigos de idioma largos)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };"
+msgstr "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; }"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The default list includes \"environment\" and \"en\". "
+"\"<literal>environment</literal>\" has a special meaning here: it will be "
+"replaced at runtime with the language codes extracted from the "
+"<literal>LC_MESSAGES</literal> environment variable. It will also ensure "
+"that these codes are not included twice in the list. If "
+"<literal>LC_MESSAGES</literal> is set to \"C\" only the "
+"<filename>Translation-en</filename> file (if available) will be used. To "
+"force APT to use no Translation file use the setting <literal>Acquire::"
+"Languages=none</literal>. \"<literal>none</literal>\" is another special "
+"meaning code which will stop the search for a suitable "
+"<filename>Translation</filename> file. This tells APT to download these "
+"translations too, without actually using them unless the environment "
+"specifies the languages. So the following example configuration will result "
+"in the order \"en, de\" in an English locale or \"de, en\" in a German one. "
+"Note that \"fr\" is downloaded, but not used unless APT is used in a French "
+"locale (where the order would be \"fr, de, en\"). <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+msgstr ""
+"La lista predeterminada incluye «environment» y «en». «<literal>environment</"
+"literal>» tiene aquí un significado especial: se sustituye en tiempo de "
+"ejecución con los códigos de idioma extraídos de la variable de entorno "
+"<literal>LC_MESSAGES</literal>. También comprueba que estos códigos no se "
+"incluyen por duplicado. Si se define <literal>LC_MESSAGES</literal> como "
+"«C», solo se utiliza el fichero <filename>Translation-en</filename> (si está "
+"disponible). Para obligar a que APT no utilice ningún fichero «Translation» "
+"utilice la configuración <literal>Acquire::Languages=none</literal>. "
+"«<literal>none</literal>» es otro código con significado especial que "
+"detiene la búsqueda de un fichero <filename>Translation</filename> adecuado. "
+"Indica a APT que también descargue estas traducciones, sin utilizarlas "
+"amenos que el entorno defina el idioma. Por ello, el siguiente ejemplo de "
+"configuración en el orden «en, de» para una configuración local en inglés, o "
+"«de, en» para una en alemán. Tenga en cuenta que se descarga «fr», pero no "
+"se utiliza a menos que se utilice APT bajo una configuración local en "
+"francés (donde el orden sería «fr, de, en»). <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Note: To prevent problems resulting from APT being executed in different "
+"environments (e.g. by different users or by other programs) all Translation "
+"files which are found in <filename>/var/lib/apt/lists/</filename> will be "
+"added to the end of the list (after an implicit \"<literal>none</literal>\")."
+msgstr ""
+"Nota: para impedir problemas derivados de ejecutar APT en distintos entornos "
+"(por ejemplo, por distintos usuarios u otros programas), todos los ficheros "
+"«Translation» que se encuentran en <filename>/var/lib/apt/lists/</filename> "
+"se añaden al final de la lista (después de un «<literal>none</literal>» "
+"implícito)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "When downloading, force to use only the IPv4 protocol."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "When downloading, force to use only the IPv6 protocol."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The maximum file size of Release/Release.gpg/InRelease files. The default "
+"is 10MB."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This option controls if apt will use the DNS SRV server record as specified "
+"in RFC 2782 to select an alternative server to connect to. The default is "
+"\"true\"."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow update operations to load data files from repositories without "
+"sufficient security information. The default value is \"<literal>false</"
+"literal>\". Concept, implications as well as alternatives are detailed in "
+"&apt-secure;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow update operations to load data files from repositories which provide "
+"security information, but these are deemed no longer cryptographically "
+"strong enough. The default value is \"<literal>false</literal>\". Concept, "
+"implications as well as alternatives are detailed in &apt-secure;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow that a repository that was previously gpg signed to become unsigned "
+"during an update operation. When there is no valid signature for a "
+"previously trusted repository apt will refuse the update. This option can be "
+"used to override this protection. You almost certainly never want to enable "
+"this. The default is <literal>false</literal>. Concept, implications as "
+"well as alternatives are detailed in &apt-secure;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.conf.5.xml
+msgid "scope"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Acquiring changelogs can only be done if an URI is known from where to get "
+"them. Preferable the Release file indicates this in a 'Changelogs' field. "
+"If this isn't available the Label/Origin field of the Release file is used "
+"to check if a <literal>Acquire::Changelogs::URI::Label::<replaceable>LABEL</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Origin::"
+"<replaceable>ORIGIN</replaceable></literal> option exists and if so this "
+"value is taken. The value in the Release file can be overridden with "
+"<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
+"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a "
+"normal URI to a text file, except that package specific data is replaced "
+"with the placeholder <literal>@CHANGEPATH@</literal>. The value for it is: "
+"1. if the package is from a component (e.g. <literal>main</literal>) this "
+"is the first part otherwise it is omitted, 2. the first letter of source "
+"package name, except if the source package name starts with '<literal>lib</"
+"literal>' in which case it will be the first four letters. 3. The complete "
+"source package name. 4. the complete name again and 5. the source version. "
+"The first (if present), second, third and fourth part are separated by a "
+"slash ('<literal>/</literal>') and between the fourth and fifth part is an "
+"underscore ('<literal>_</literal>'). The special value '<literal>no</"
+"literal>' is available for this option indicating that this source can't be "
+"used to acquire changelog files from. Another source will be tried if "
+"available in this case."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid "User configuration"
+msgid "Binary specific configuration"
+msgstr "Configuración de usuario"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Especially with the introduction of the <command>apt</command> binary it can "
+"be useful to set certain options only for a specific binary as even options "
+"which look like they would effect only a certain binary like <option>APT::"
+"Get::Show-Versions</option> effect <command>apt-get</command> as well as "
+"<command>apt</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Setting an option for a specific binary only can be achieved by setting the "
+"option inside the <option>Binary::<replaceable>specific-binary</"
+"replaceable></option> scope. Setting the option <option>APT::Get::Show-"
+"Versions</option> for the <command>apt</command> only can e.g. by done by "
+"setting <option>Binary::apt::APT::Get::Show-Versions</option> instead."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that as seen in the DESCRIPTION section further above you can't set "
+"binary-specific options on the commandline itself nor in configuration files "
+"loaded via the commandline."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Directories"
+msgstr "Directorios"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Dir::State</literal> section has directories that pertain to "
+"local state information. <literal>lists</literal> is the directory to place "
+"downloaded package lists in and <literal>status</literal> is the name of the "
+"&dpkg; status file. <literal>preferences</literal> is the name of the APT "
+"<filename>preferences</filename> file. <literal>Dir::State</literal> "
+"contains the default directory to prefix on all sub-items if they do not "
+"start with <filename>/</filename> or <filename>./</filename>."
+msgstr ""
+"La sección <literal>Dir::State</literal> contiene directorios que afectan a "
+"la información de estado local. <literal>lists</literal> es el directorio en "
+"el que se almacenan las listas de los paquetes descargados y "
+"<literal>status</literal> es el nombre del fichero de estado de &dpkg;. "
+"<literal>preferences</literal> es el nombre del fichero "
+"<filename>preferences</filename> (preferencias) de APT. <literal>Dir::State</"
+"literal> contiene el directorio que se usará como prefijo predeterminado en "
+"todos los elementos subordinados en caso de que no empiecen con <filename>/</"
+"filename> ó <filename>./</filename>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>Dir::Cache</literal> contains locations pertaining to local "
+#| "cache information, such as the two package caches <literal>srcpkgcache</"
+#| "literal> and <literal>pkgcache</literal> as well as the location to place "
+#| "downloaded archives, <literal>Dir::Cache::archives</literal>. Generation "
+#| "of caches can be turned off by setting their names to the empty string. "
+#| "This will slow down startup but save disk space. It is probably "
+#| "preferable to turn off the pkgcache rather than the srcpkgcache. Like "
+#| "<literal>Dir::State</literal> the default directory is contained in "
+#| "<literal>Dir::Cache</literal>"
+msgid ""
+"<literal>Dir::Cache</literal> contains locations pertaining to local cache "
+"information, such as the two package caches <literal>srcpkgcache</literal> "
+"and <literal>pkgcache</literal> as well as the location to place downloaded "
+"archives, <literal>Dir::Cache::archives</literal>. Generation of caches can "
+"be turned off by setting <literal>pkgcache</literal> or "
+"<literal>srcpkgcache</literal> to <literal>\"\"</literal>. This will slow "
+"down startup but save disk space. It is probably preferable to turn off the "
+"pkgcache rather than the srcpkgcache. Like <literal>Dir::State</literal> "
+"the default directory is contained in <literal>Dir::Cache</literal>"
+msgstr ""
+"<literal>Dir::Cache</literal> contiene las ubicaciones que afectan a la "
+"información de la caché local, como los dos cachés de paquetes "
+"<literal>srcpkgcache</literal> y <literal>pkgcache</literal>, así como a la "
+"ubicación dónde se guardan los ficheros descargados, <literal>Dir::Cache::"
+"archives</literal>. La generación de cachés se puede desactivar dejando sus "
+"nombres como una cadena vacía. Ésto hará que el arranque sea más lento, pero "
+"ahorrará espacio. Habitualmente, es preferible deshabilitar pkgcache en "
+"lugar de srcpkgcache. Al igual que con <literal>Dir::State</literal> el "
+"directorio predeterminado está en <literal>Dir::Cache</literal>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Dir::Etc</literal> contains the location of configuration files, "
+"<literal>sourcelist</literal> gives the location of the sourcelist and "
+"<literal>main</literal> is the default configuration file (setting has no "
+"effect, unless it is done from the config file specified by "
+"<envar>APT_CONFIG</envar>)."
+msgstr ""
+"<literal>Dir::Etc</literal> contiene la ubicación de los ficheros de "
+"configuración, <literal>sourcelist</literal> proporciona la ubicación de "
+"sourcelist y <literal>main</literal> es el fichero de configuración "
+"predeterminado (esta opción de configuración no tiene ningún efecto a menos "
+"que se realice desde el fichero de configuración definido en "
+"<envar>APT_CONFIG</envar>)."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Dir::Parts</literal> setting reads in all the config fragments "
+"in lexical order from the directory specified. After this is done then the "
+"main config file is loaded."
+msgstr ""
+"La opción <literal>Dir::Parts</literal> lee en todos los fragmentos de "
+"ficheros de configuración en orden léxico desde el directorio especificado. "
+"Al finalizar este proceso carga el fichero de configuración principal."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
+"Bin::Methods</literal> specifies the location of the method handlers and "
+"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
+"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
+"literal> <literal>dpkg-buildpackage</literal> and <literal>apt-cache</"
+"literal> specify the location of the respective programs."
+msgstr ""
+"<literal>Dir::Bin</literal> apunta a los programas binarios. <literal>Dir::"
+"Bin::Methods</literal> define la ubicación de los gestores de los métodos y "
+"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
+"<literal>dpkg</literal>, <literal>apt-get</literal>, <literal>dpkg-source</"
+"literal>, <literal>dpkg-buildpackage</literal> y <literal>apt-cache</"
+"literal> especifican la ubicación de sus respectivos programas."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "The configuration item <literal>RootDir</literal> has a special meaning. "
+#| "If set, all paths in <literal>Dir::</literal> will be relative to "
+#| "<literal>RootDir</literal>, <emphasis>even paths that are specified "
+#| "absolutely</emphasis>. So, for instance, if <literal>RootDir</literal> "
+#| "is set to <filename>/tmp/staging</filename> and <literal>Dir::State::"
+#| "status</literal> is set to <filename>/var/lib/dpkg/status</filename>, "
+#| "then the status file will be looked up in <filename>/tmp/staging/var/lib/"
+#| "dpkg/status</filename>."
+msgid ""
+"The configuration item <literal>RootDir</literal> has a special meaning. If "
+"set, all paths will be relative to <literal>RootDir</literal>, "
+"<emphasis>even paths that are specified absolutely</emphasis>. So, for "
+"instance, if <literal>RootDir</literal> is set to <filename>/tmp/staging</"
+"filename> and <literal>Dir::State::status</literal> is set to <filename>/var/"
+"lib/dpkg/status</filename>, then the status file will be looked up in "
+"<filename>/tmp/staging/var/lib/dpkg/status</filename>. If you want to "
+"prefix only relative paths, set <literal>Dir</literal> instead."
+msgstr ""
+"La opción de configuración <literal>RootDir</literal> tiene un significado "
+"especial. Si se define, todas las rutas de <literal>Dir::</literal> serán "
+"relativas a <literal>RootDir</literal>, <emphasis>incluso las rutas que se "
+"especifiquen de forma absoluta</emphasis>. De modo que, por ejemplo, si "
+"<literal>RootDir</literal> se define como <filename>/tmp/staging</filename> "
+"y <literal>Dir::State::status</literal> se define como <filename>/var/lib/"
+"dpkg/status</filename>, entonces el fichero de estado será <filename>/tmp/"
+"staging/var/lib/dpkg/status</filename>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Ignore-Files-Silently</literal> list can be used to specify "
+"which files APT should silently ignore while parsing the files in the "
+"fragment directories. Per default a file which end with <literal>.disabled</"
+"literal>, <literal>~</literal>, <literal>.bak</literal> or <literal>.dpkg-[a-"
+"z]+</literal> is silently ignored. As seen in the last default value these "
+"patterns can use regular expression syntax."
+msgstr ""
+"La lista <literal>Ignore-Files-Silently</literal> se puede usar para definir "
+"qué fichero debería ignorar APT silenciosamente al analizar ficheros en los "
+"directorios de fragmentos. Por omisión, se ignora silenciosamente un fichero "
+"que termina con <literal>.disabled</literal>, <literal>~</literal>, "
+"<literal>.bak</literal> o <literal>.dpkg-[a-z]+</literal>. Como se puede ver "
+"con el último valor predeterminado, estos patrones pueden usar la sintaxis "
+"de expresiones regulares."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "APT in DSelect"
+msgstr "APT con DSelect"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"When APT is used as a &dselect; method several configuration directives "
+"control the default behavior. These are in the <literal>DSelect</literal> "
+"section."
+msgstr ""
+"Varias directivas de configuración controlan el comportamiento "
+"predeterminado cuando APT se usa como método de &dselect;. Éstas se "
+"encuentran en la sección <literal>DSelect</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Cache Clean mode; this value may be one of <literal>always</literal>, "
+"<literal>prompt</literal>, <literal>auto</literal>, <literal>pre-auto</"
+"literal> and <literal>never</literal>. <literal>always</literal> and "
+"<literal>prompt</literal> will remove all packages from the cache after "
+"upgrading, <literal>prompt</literal> (the default) does so conditionally. "
+"<literal>auto</literal> removes only those packages which are no longer "
+"downloadable (replaced with a new version for instance). <literal>pre-auto</"
+"literal> performs this action before downloading new packages."
+msgstr ""
+"Modo de limpieza del almacén de paquetes. Este valor puede ser "
+"<literal>always</literal>, <literal>prompt</literal>, <literal>auto</"
+"literal>, <literal>pre-auto</literal> y <literal>never</literal>. "
+"<literal>always</literal> y <literal>prompt</literal> eliminan todos los "
+"paquetes del almacén después de una actualización, aunque <literal>prompt</"
+"literal> (predeterminado) solicita una confirmación. <literal>auto</literal> "
+"solo elimina los paquetes que ya no se pueden descargar (por ejemplo, "
+"sustituidos por una versión más reciente). <literal>pre-auto</literal> "
+"realiza esta acción antes de descargar paquetes nuevos."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the install phase."
+msgstr ""
+"Los contenidos de esta variable se introducen a &apt-get; como opciones de "
+"la línea de ordenes al ejecutar la fase de instalación."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the update phase."
+msgstr ""
+"Los contenidos de esta variable se introducen a &apt-get; como opciones de "
+"la línea de ordenes al ejecutar la fase de actualización."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"If true the [U]pdate operation in &dselect; will always prompt to continue. "
+"The default is to prompt only on error."
+msgstr ""
+"Si es «true», la operación de «[U]pdate» (actualización) en &dselect; "
+"preguntará siempre antes de continuar. De forma predeterminada, sólo "
+"preguntará en caso de error."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "How APT calls &dpkg;"
+msgstr "Invocación de APT a dpkg"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Several configuration directives control how APT invokes &dpkg;. These are "
+"in the <literal>DPkg</literal> section."
+msgstr ""
+"Varias directivas de configuración controlan cómo invoca APT a &dpkg;. Éstas "
+"se encuentran en la sección <literal>DPkg</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of options to pass to &dpkg;. The options must be specified "
+"using the list notation and each list item is passed as a single argument to "
+"&dpkg;."
+msgstr ""
+"Es una lista de opciones que se introducen a &dpkg;. Las opciones se deben "
+"especificar usando la notación de lista, y cada elemento de la lista se "
+"introduce a &dpkg; como un sólo argumento."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of shell commands to run before/after invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort."
+msgstr ""
+"Es una lista de órdenes de la consola que se ejecutarán antes y/o después de "
+"invocar a &dpkg;. Como <literal>options</literal>, se debe especificar con "
+"notación de lista. Las órdenes se ejecutarán en orden usando <filename>/bin/"
+"sh</filename>; en caso de fallo, APT cancela la acción."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "This is a list of shell commands to run before invoking &dpkg;. Like "
+#| "<literal>options</literal> this must be specified in list notation. The "
+#| "commands are invoked in order using <filename>/bin/sh</filename>; should "
+#| "any fail APT will abort. APT will pass the filenames of all .deb files it "
+#| "is going to install to the commands, one per line on standard input."
+msgid ""
+"This is a list of shell commands to run before invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort. APT will pass the filenames of all .deb files it is "
+"going to install to the commands, one per line on the requested file "
+"descriptor, defaulting to standard input."
+msgstr ""
+"Es una lista de órdenes de la consola que se ejecutarán antes de invocar a "
+"&dpkg;. Como <literal>options</literal>, se debe especificar con notación de "
+"lista. Las órdenes se ejecutan en orden usando <filename>/bin/sh</filename>, "
+"y APT finalizará en caso de fallo. APT introducirá a las órdenes los nombres "
+"de fichero de todos los «.deb» que va a instalar, uno por línea a través de "
+"la entrada estándar."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Version 2 of this protocol sends more information through the requested file "
+"descriptor: a line with the text <literal>VERSION 2</literal>, the APT "
+"configuration space, and a list of package actions with filename and version "
+"information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each configuration directive line has the form <literal>key=value</"
+"literal>. Special characters (equal signs, newlines, nonprintable "
+"characters, quotation marks, and percent signs in <literal>key</literal> and "
+"newlines, nonprintable characters, and percent signs in <literal>value</"
+"literal>) are %-encoded. Lists are represented by multiple <literal>key::"
+"=value</literal> lines with the same key. The configuration section ends "
+"with a blank line."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Package action lines consist of five fields in Version 2: package name "
+"(without architecture qualification even if foreign), old version, direction "
+"of version change (&lt; for upgrades, &gt; for downgrades, = for no change), "
+"new version, action. The version fields are \"-\" for no version at all (for "
+"example when installing a package for the first time; no version is treated "
+"as earlier than any real version, so that is an upgrade, indicated as "
+"<literal>- &lt; 1.23.4</literal>). The action field is \"**CONFIGURE**\" if "
+"the package is being configured, \"**REMOVE**\" if it is being removed, or "
+"the filename of a .deb file if it is being unpacked."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"In Version 3 after each version field follows the architecture of this "
+"version, which is \"-\" if there is no version, and a field showing the "
+"MultiArch type \"same\", \"foreign\", \"allowed\" or \"none\". Note that "
+"\"none\" is an incorrect typename which is just kept to remain compatible, "
+"it should be read as \"no\" and users are encouraged to support both."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The version of the protocol to be used for the command "
+"<literal><replaceable>cmd</replaceable></literal> can be chosen by setting "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::Version</"
+"literal> accordingly, the default being version 1. If APT isn't supporting "
+"the requested version it will send the information in the highest version it "
+"has support for instead."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The file descriptor to be used to send the information can be requested with "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::InfoFD</"
+"literal> which defaults to <literal>0</literal> for standard input and is "
+"available since version 0.9.11. Support for the option can be detected by "
+"looking for the environment variable <envar>APT_HOOK_INFO_FD</envar> which "
+"contains the number of the used file descriptor as a confirmation."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"APT chdirs to this directory before invoking &dpkg;, the default is "
+"<filename>/</filename>."
+msgstr ""
+"APT cambia a este directorio antes de invocar a &dpkg;, el valor "
+"predeterminado es <filename>/</filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"These options are passed to &dpkg-buildpackage; when compiling packages; the "
+"default is to disable signing and produce all binaries."
+msgstr ""
+"Estas opciones se introducen a &dpkg-buildpackage; cuando compila paquetes; "
+"el comportamiento predeterminado se limita a deshabilitar el firmado de "
+"paquetes y a producir todos los binarios."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "If this option is set APT will call <command>dpkg --configure --pending</"
+#| "command> to let &dpkg; handle all required configurations and triggers. "
+#| "This option is activated automatically per default if the previous option "
+#| "is not set to <literal>all</literal>, but deactivating it could be useful "
+#| "if you want to run APT multiple times in a row - e.g. in an installer. In "
+#| "these sceneries you could deactivate this option in all but the last run."
+msgid ""
+"If this option is set APT will call <command>dpkg --configure --pending</"
+"command> to let &dpkg; handle all required configurations and triggers. This "
+"option is activated by default, but deactivating it could be useful if you "
+"want to run APT multiple times in a row - e.g. in an installer. In this "
+"scenario you could deactivate this option in all but the last run."
+msgstr ""
+"Si define esta opción, APT ejecutará <command>dpkg --configure --pending</"
+"command> para permitir a dpkg manejar todas las configuraciones necesarias y "
+"todos los disparadores. Esta opción se activa automáticamente de forma "
+"predeterminada si la opción anterior no está definida como <literal>all</"
+"literal>, pero desactivarla podría ser útil si se quiere ejecutar APT varias "
+"veces seguidas, por ejemplo: en un instalador. En estas situaciones podría "
+"desactivar esta opción en todas las ejecuciones menos la última."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Periodic and Archives options"
+msgstr "Las opciones «Periodic» y «Archives»"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups "
+"of options configure behavior of apt periodic updates, which is done by the "
+"<literal>/usr/lib/apt/apt.systemd.daily</literal> script. See the top of "
+"this script for the brief documentation of these options."
+msgstr ""
+"Los grupos de opciones <literal>APT::Periodic</literal> y <literal>APT::"
+"Archives</literal> configuran el comportamiento de las actualizaciones "
+"periódicas de apt, que se hacen mediante el script <literal>/etc/cron.daily/"
+"apt</literal>. Consulte la cabecera de este script para una breve "
+"documentación de estas opciones."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Debug options"
+msgstr "Opciones de depuración"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Enabling options in the <literal>Debug::</literal> section will cause "
+"debugging information to be sent to the standard error stream of the program "
+"utilizing the <literal>apt</literal> libraries, or enable special program "
+"modes that are primarily useful for debugging the behavior of <literal>apt</"
+"literal>. Most of these options are not interesting to a normal user, but a "
+"few may be:"
+msgstr ""
+"Activar las opciones de la sección <literal>Debug::</literal> provocará que "
+"la información de depuración se envíe a la salida estándar del programa que "
+"esté utilizando las bibliotecas de <literal>apt</literal>, o activar los "
+"modos especiales del programa que son útiles para depurar el comportamiento "
+"de <literal>apt</literal>. La mayoría de estas opciones no son interesantes "
+"para un usuario normal, aunque unas cuantas sí son:"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::pkgProblemResolver</literal> enables output about the "
+"decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</"
+"literal>."
+msgstr ""
+"<literal>Debug::pkgProblemResolver</literal> activa la salida de las "
+"decisiones tomadas por <literal>dist-upgrade, upgrade, install, remove, "
+"purge</literal>."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::NoLocking</literal> disables all file locking. This can be "
+"used to run some operations (for instance, <literal>apt-get -s install</"
+"literal>) as a non-root user."
+msgstr ""
+"<literal>Debug::NoLocking</literal> desactiva todos los cerrojos de los "
+"ficheros. Esto se puede usar para ejecutar algunas operaciones (por ejemplo, "
+"<literal>apt-get -s install</literal>) como un usuario normal."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each "
+"time that <literal>apt</literal> invokes &dpkg;."
+msgstr ""
+"<literal>Debug::pkgDPkgPM</literal> muestra la línea de órdenes actual cada "
+"vez que <literal>apt</literal> invoca a &dpkg;."
+
+#. TODO: provide a
+#. motivating example, except I haven't a clue why you'd want
+#. to do this.
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
+"in CD-ROM IDs."
+msgstr ""
+"<literal>Debug::IdentCdrom</literal> desactiva la inclusión de los datos de "
+"statfs en los identificadores de los discos ópticos."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid "A full list of debugging options to apt follows."
+msgstr ""
+"A continuación, se muestra la lista completa de las opciones de depuración "
+"de apt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information related to accessing <literal>cdrom://</literal> sources."
+msgstr ""
+"Muestra la información relacionada al acceso de las fuentes de "
+"<literal>cdrom://</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using FTP."
+msgstr ""
+"Muestra la información relacionada con la descarga de paquetes mediante FTP."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using HTTP."
+msgstr ""
+"Muestra la información relacionada con la descarga de paquetes mediante HTTP."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using HTTPS."
+msgstr ""
+"Muestra la información relacionada con la descarga de paquetes mediante "
+"HTTPS."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information related to verifying cryptographic signatures using "
+"<literal>gpg</literal>."
+msgstr ""
+"Muestra la información relacionada con la comprobación de las firmas "
+"criptográficas mediante <literal>gpg</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information about the process of accessing collections of packages "
+"stored on CD-ROMs."
+msgstr ""
+"Muestra la información sobre el proceso de acceso a las colecciones de "
+"paquetes almacenadas en CD-ROM."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Describes the process of resolving build-dependencies in &apt-get;."
+msgstr ""
+"Describe el proceso de resolución de dependencias de compilación en &apt-"
+"get;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output each cryptographic hash that is generated by the <literal>apt</"
+"literal> libraries."
+msgstr ""
+"Muestra los «hashes» criptográficos que generan las bibliotecas de "
+"<literal>apt</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Do not include information from <literal>statfs</literal>, namely the number "
+"of used and free blocks on the CD-ROM filesystem, when generating an ID for "
+"a CD-ROM."
+msgstr ""
+"No incluye la información de <literal>statfs</literal>, el número de bloques "
+"libres y usados del sistema de ficheros del CD-ROM, cuando se genera un "
+"identificador de un CD-ROM."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Disable all file locking. For instance, this will allow two instances of "
+"<quote><literal>apt-get update</literal></quote> to run at the same time."
+msgstr ""
+"Desactiva todos los cerrojos de los ficheros. Por ejemplo, esto permitirá "
+"ejecutar dos instancias de <quote><literal>apt-get update</literal></quote> "
+"a la vez."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Log when items are added to or removed from the global download queue."
+msgstr ""
+"Registra los elementos que se añaden o se borran de la cola de descarga "
+"global."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output status messages and errors related to verifying checksums and "
+"cryptographic signatures of downloaded files."
+msgstr ""
+"Muestra los mensajes de estado y los errores relacionados con la "
+"comprobación de las sumas de verificación y las firmas criptográficas de los "
+"ficheros descargados."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information about downloading and applying package index list diffs, "
+"and errors relating to package index list diffs."
+msgstr ""
+"Muestra la información de la descarga y la aplicación de los diffs de la "
+"lista de índices de paquetes, y los errores relacionados con éstos."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information related to patching apt package lists when downloading "
+"index diffs instead of full indices."
+msgstr ""
+"Muestra la información relacionada con el parcheado de las listas de "
+"paquetes de apt cuando se descargan los diffs de los índices en lugar de los "
+"índices completos."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Log all interactions with the sub-processes that actually perform downloads."
+msgstr ""
+"Registra todas las interacciones de los sub-procesos que están realizando "
+"descargas."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Log events related to the automatically-installed status of packages and to "
+"the removal of unused packages."
+msgstr ""
+"Registra los eventos relacionados con el estado «instalado automáticamente» "
+"de los paquetes y con la eliminación de los paquetes sin usar."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate debug messages describing which packages are being automatically "
+"installed to resolve dependencies. This corresponds to the initial auto-"
+"install pass performed in, e.g., <literal>apt-get install</literal>, and not "
+"to the full <literal>apt</literal> dependency resolver; see <literal>Debug::"
+"pkgProblemResolver</literal> for that."
+msgstr ""
+"Genera los mensajes de depuración que describen qué paquetes se están "
+"instalando automáticamente para resolver las dependencias. Esto corresponde "
+"al paso inicial de instalación automática, por ejemplo: <literal>apt-get "
+"install</literal> y no el solucionador completo de dependencias de "
+"<literal>apt</literal>. Consulte <literal>Debug::pkgProblemResolver</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate debug messages describing which packages are marked as keep/install/"
+"remove while the ProblemResolver does his work. Each addition or deletion "
+"may trigger additional actions; they are shown indented two additional "
+"spaces under the original entry. The format for each line is "
+"<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c -"
+"&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> is "
+"the current version of the package, <literal>d.e.f</literal> is the version "
+"considered for installation and <literal>x.y.z</literal> is a newer version, "
+"but not considered for installation (because of a low pin score). The later "
+"two can be omitted if there is none or if it is the same as the installed "
+"version. <literal>section</literal> is the name of the section the package "
+"appears in."
+msgstr ""
+"Genera los mensajes de depuración que describen qué paquete se marcará como "
+"mantener/instalar/borrar mientras el solucionador de problemas "
+"(«ProblemResolver») realiza su trabajo. Cada adición o borrado puede iniciar "
+"acciones adicionales; éstas se muestran sangradas con dos espacios bajo la "
+"entrada original. El formato de cada línea es <literal>MarkKeep</literal>, "
+"<literal>MarkDelete</literal> o <literal>MarkInstall</literal> seguido de "
+"<literal>package-name &lt;a.b.c -&gt; d.e.f | x.y.z&gt; (sección)</literal> "
+"siendo <literal>a.b.c</literal> la versión actual del paquete, <literal>d.e."
+"f</literal> la versión considerada para instalar y <literal>x.y.z</literal> "
+"una versión nueva, pero no considerada para la instalación (por una "
+"puntuación baja). Las dos últimas se pueden omitir si no hay o si es la "
+"misma versión que la instalada. <literal>sección</literal> es el nombre de "
+"la sección en la que aparece el paquete."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"When invoking &dpkg;, output the precise command line with which it is being "
+"invoked, with arguments separated by a single space character."
+msgstr ""
+"Cuando se invoca a &dpkg; muestra la línea de órdenes exacta con la que se "
+"invocó, con los argumentos separados por un espacio."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output all the data received from &dpkg; on the status file descriptor and "
+"any errors encountered while parsing it."
+msgstr ""
+"Muestra todos los datos recibidos de &dpkg; en el descriptor del fichero de "
+"estado y cualquier error encontrado durante el análisis."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate a trace of the algorithm that decides the order in which "
+"<literal>apt</literal> should pass packages to &dpkg;."
+msgstr ""
+"Genera una traza del algoritmo que decide el orden en el que <literal>apt</"
+"literal> debería entregar los paquetes a &dpkg;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output status messages tracing the steps performed when invoking &dpkg;."
+msgstr ""
+"Muestra los mensajes de estado siguiendo los pasos realizados al invocar a "
+"&dpkg;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Output the priority of each package list on startup."
+msgstr "Muestra la prioridad de cada lista de paquetes al iniciarse."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Trace the execution of the dependency resolver (this applies only to what "
+"happens when a complex dependency problem is encountered)."
+msgstr ""
+"Muestra la ejecución del solucionador de dependencias (esto se aplica sólo a "
+"lo que ocurre cuando se encuentra un problema de dependencias complejo)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Display a list of all installed packages with their calculated score used by "
+"the pkgProblemResolver. The description of the package is the same as "
+"described in <literal>Debug::pkgDepCache::Marker</literal>"
+msgstr ""
+"Muestra una lista de todos los paquetes instalados con sus puntuaciones "
+"calculadas y usadas por pkgProblemResolver. La descripción del paquete es la "
+"misma que la descrita en <literal>Debug::pkgDepCache::Marker</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information about the vendors read from <filename>/etc/apt/vendors."
+"list</filename>."
+msgstr ""
+"Muestra la información de los proveedores extraída de <filename>/etc/apt/"
+"vendors.list</filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Display the external commands that are called by apt hooks. This includes e."
+"g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"<literal>APT::Update::{Pre,Post}-Invoke</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml apt-ftparchive.1.xml
+msgid "Examples"
+msgstr "Ejemplos"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"&configureindex; is a configuration file showing example values for all "
+"possible options."
+msgstr ""
+"&configureindex; es un fichero de configuración de ejemplo que muestra "
+"valores de ejemplo para todas las opciones posibles."
+
+#. ? reading apt.conf
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid "&apt-cache;, &apt-config;, &apt-preferences;."
+msgstr "&apt-cache;, &apt-config;, &apt-preferences;."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt_preferences.5.xml
+msgid "Preference control file for APT"
+msgstr "Fichero de preferencias de APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"The APT preferences file <filename>/etc/apt/preferences</filename> and the "
+"fragment files in the <filename>/etc/apt/preferences.d/</filename> folder "
+"can be used to control which versions of packages will be selected for "
+"installation."
+msgstr ""
+"El fichero de preferencias de APT <filename>/etc/apt/preferences</filename> "
+"y los segmentos de fichero dentro del directorio <filename>/etc/apt/"
+"preferences.d/</filename> se pueden usar para controlar las versiones de los "
+"paquetes seleccionados para su instalación."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Several versions of a package may be available for installation when the "
+"&sources-list; file contains references to more than one distribution (for "
+"example, <literal>stable</literal> and <literal>testing</literal>). APT "
+"assigns a priority to each version that is available. Subject to dependency "
+"constraints, <command>apt-get</command> selects the version with the highest "
+"priority for installation. The APT preferences override the priorities that "
+"APT assigns to package versions by default, thus giving the user control "
+"over which one is selected for installation."
+msgstr ""
+"Puede disponer de varias versiones de un mismo paquete cuando el fichero "
+"&sources-list; contiene referencias a más de una distribución (por ejemplo, "
+"«<literal>stable</literal>» (estable) y «<literal>testing</literal>» (en "
+"pruebas)). APT asigna una prioridad a cada versión disponible, y limitado "
+"por las dependencias, <command>apt-get</command> selecciona la versión con "
+"mayor prioridad. Las preferencias de APT modifican las prioridades que APT "
+"asigna de forma predeterminada a las versiones de paquetes, dando control al "
+"usuario sobre qué versión se seleccionará para su instalación."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Several instances of the same version of a package may be available when the "
+"&sources-list; file contains references to more than one source. In this "
+"case <command>apt-get</command> downloads the instance listed earliest in "
+"the &sources-list; file. The APT preferences do not affect the choice of "
+"instance, only the choice of version."
+msgstr ""
+"Puede que estén disponibles varios ejemplares de la misma versión de un "
+"paquete cuando el fichero «&sources-list;» contenga referencias a más de una "
+"fuente. En este caso <command>apt-get</command> descarga el ejemplar que "
+"aparezca listado primero en el fichero «&sources-list;». Las preferencias de "
+"APT no modifican la elección del ejemplar, sólo la elección de la versión."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Preferences are a strong power in the hands of a system administrator but "
+"they can become also their biggest nightmare if used without care! APT will "
+"not question the preferences, so wrong settings can lead to uninstallable "
+"packages or wrong decisions while upgrading packages. Even more problems "
+"will arise if multiple distribution releases are mixed without a good "
+"understanding of the following paragraphs. Packages included in a specific "
+"release aren't tested in (and therefore don't always work as expected in) "
+"older or newer releases, or together with other packages from different "
+"releases. You have been warned."
+msgstr ""
+"Las preferencias («preferences») son un gran poder en las manos de un "
+"administrador de sistemas, pero también se pueden convertir en su mayor "
+"pesadilla si se utilizan sin cuidado. APT no se cuestionará si las "
+"preferencias contienen opciones erróneas, lo que puede generar casos de "
+"paquetes no instalables o una toma de decisiones errónea al actualizar "
+"paquetes. Pueden surgir más problemas si se mezclan varias publicaciones de "
+"distribución sin un correcto entendimiento de los siguientes párrafos. Los "
+"paquetes incluidos en una distribución específica no se comprueban en "
+"combinación con otras distribuciones más antiguas o más recientes, y puede "
+"que no funcionen como se espera. Queda avisado."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Note that the files in the <filename>/etc/apt/preferences.d</filename> "
+"directory are parsed in alphanumeric ascending order and need to obey the "
+"following naming convention: The files have either no or \"<literal>pref</"
+"literal>\" as filename extension and only contain alphanumeric, hyphen (-), "
+"underscore (_) and period (.) characters. Otherwise APT will print a notice "
+"that it has ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
+msgstr ""
+"Tenga en cuenta que los ficheros bajo el directorio <filename>/etc/apt/"
+"preferences.d</filename> se analizan en orden ascendente alfanumérico, y sus "
+"nombres deben cumplir la siguiente convención: el fichero no tiene "
+"extensión, o tiene la extensión <literal>pref</literal>, y solo contiene "
+"caracteres alfanuméricos, guión (-), guión bajo (_) y punto (.). En caso "
+"contrario APT informa que ha omitido un fichero, a menos que este fichero "
+"coincida con un patrón en la lista de configuración <literal>Dir::Ignore-"
+"Files-Silently</literal>. Si coincide, el fichero se ignora silenciosamente."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "APT's Default Priority Assignments"
+msgstr "Asignación de prioridades predeterminadas de APT "
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "<command>apt-get install -t testing <replaceable>some-package</replaceable></command>\n"
+msgstr "<command>apt-get install -t testing <replaceable>paquete</replaceable></command>\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "APT::Default-Release \"stable\";\n"
+msgstr "APT::Default-Release \"stable\";\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If there is no preferences file or if there is no entry in the file that "
+"applies to a particular version then the priority assigned to that version "
+"is the priority of the distribution to which that version belongs. It is "
+"possible to single out a distribution, \"the target release\", which "
+"receives a higher priority than other distributions do by default. The "
+"target release can be set on the <command>apt-get</command> command line or "
+"in the APT configuration file <filename>/etc/apt/apt.conf</filename>. Note "
+"that this has precedence over any general priority you set in the <filename>/"
+"etc/apt/preferences</filename> file described later, but not over "
+"specifically pinned packages. For example, <placeholder type="
+"\"programlisting\" id=\"0\"/> <placeholder type=\"programlisting\" id=\"1\"/>"
+msgstr ""
+"De no existir el fichero de preferencias, o si no hay ninguna entrada en "
+"éste que se pueda aplicar a una determinada versión, se asigna a la versión "
+"la prioridad de la distribución a la que pertenece. Es posible seleccionar "
+"una distribución, la &gt;&gt;distribución objetivo&lt;&lt; (n. t. del inglés "
+"<emphasis>target release</emphasis>), que recibe una prioridad predefinida "
+"mayor que el resto. La distribución objetivo se puede definir en la línea de "
+"órdenes al ejecutar <command>apt-get</command> o en el fichero de "
+"configuración de APT <filename>/etc/apt/apt.conf</filename>. Tenga en cuenta "
+"que esto tiene preferencia sobre cualquier otra prioridad definida en "
+"<filename>/etc/apt/preferencias</filename>, pero que no afecta al anclaje de "
+"paquetes específicos. Por ejemplo, <placeholder type=\"programlisting\" id="
+"\"0\"/><placeholder type=\"programlisting\" id=\"1\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If the target release has been specified then APT uses the following "
+"algorithm to set the priorities of the versions of a package. Assign:"
+msgstr ""
+"Si se ha especificado una distribución objetivo, APT usa el siguiente "
+"algoritmo para establecer las prioridades de cada versión de un paquete. "
+"Asignar: "
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 1"
+msgstr "priority 1"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"to the versions coming from archives which in their <filename>Release</"
+"filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</"
+"emphasis> as \"ButAutomaticUpgrades: yes\" like the Debian "
+"<literal>experimental</literal> archive."
+msgstr ""
+"A las versiones provenientes de archivos con la opción «NotAutomatic: yes» "
+"en su fichero <filename>Release</filename>, pero <emphasis>no</emphasis> "
+"como «ButAutomaticUpgrades: yes», como el archivo <literal>experimental</"
+"literal> de Debian."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 100"
+msgstr "prioridad 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"to the version that is already installed (if any) and to the versions coming "
+"from archives which in their <filename>Release</filename> files are marked "
+"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the Debian "
+"backports archive since <literal>squeeze-backports</literal>."
+msgstr ""
+"A la versión ya instalada (si existe) y a las versiones provenientes de "
+"archivos con las opciones «NotAutomatic: yes» y «ButAutomaticUpgrades: yes» "
+"en su fichero <filename>Release</filename>, como el archivo Debian de "
+"paquetes adaptados a una versión anterior («backports») a partir de "
+"<literal>squeeze-backports</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 500"
+msgstr "prioridad 500"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+#| msgid ""
+#| "to the versions that are not installed and belong to the target release."
+msgid "to the versions that do not belong to the target release."
+msgstr ""
+"a las versiones que no están instaladas y que pertenecen a la distribución "
+"objetivo."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 990"
+msgstr "prioridad 990"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+#| msgid ""
+#| "to the versions that are not installed and belong to the target release."
+msgid "to the versions that belong to the target release."
+msgstr ""
+"a las versiones que no están instaladas y que pertenecen a la distribución "
+"objetivo."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The highest of those priorities whose description matches the version is "
+"assigned to the version."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If the target release has not been specified then APT simply assigns "
+"priority 100 to all installed package versions and priority 500 to all "
+"uninstalled package versions, except versions coming from archives which in "
+"their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" "
+"- these versions get the priority 1 or priority 100 if it is additionally "
+"marked as \"ButAutomaticUpgrades: yes\"."
+msgstr ""
+"Si no se define la versión objetivo, APT asigna una prioridad 100 a la "
+"versión de todos los paquetes instalados, y una prioridad 500 a todas las "
+"versiones no instaladas de paquete, a excepción de las provenientes de "
+"archivos con la opción «NotAutomatic: yes» en su fichero <filename>Release</"
+"filename>. Estas versiones reciben la prioridad 1 o 100 si también se define "
+"la opción «ButAutomaticUpgrades: yes»."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"APT then applies the following rules, listed in order of precedence, to "
+"determine which version of a package to install."
+msgstr ""
+"APT aplica las siguientes normas, expuestas por orden de precedencia, para "
+"determinar qué versión del paquete debe instalar."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"Never downgrade unless the priority of an available version exceeds 1000. "
+"(\"Downgrading\" is installing a less recent version of a package in place "
+"of a more recent version. Note that none of APT's default priorities "
+"exceeds 1000; such high priorities can only be set in the preferences file. "
+"Note also that downgrading a package can be risky.)"
+msgstr ""
+"Nunca instala una versión anterior de un paquete en lugar de la instalada a "
+"menos que la prioridad de la versión disponible supere 1000 («Desactualizar» "
+"significa instalar una versión menos reciente de un paquete. Tenga en cuenta "
+"que ninguna de las prioridades que asigna APT por omisión superan 1000; "
+"éstas prioridades sólo se pueden establecer mediante el fichero de "
+"preferencias. Observe que instalar una versión anterior del paquete puede "
+"ser peligroso)."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "Install the highest priority version."
+msgstr "Instala la versión de mayor prioridad."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"If two or more versions have the same priority, install the most recent one "
+"(that is, the one with the higher version number)."
+msgstr ""
+"Si dos o más versiones tienen la misma prioridad, instala la más reciente "
+"(esto es, la que tiene un número de versión mayor)."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"If two or more versions have the same priority and version number but either "
+"the packages differ in some of their metadata or the <literal>--reinstall</"
+"literal> option is given, install the uninstalled one."
+msgstr ""
+"Si dos o más versiones tienen la misma prioridad y número de versión, pero o "
+"bien difieren en su meta-información o se ha introducido la opción "
+"<literal>--reinstall</literal>, se instalará la que no está instalada."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"In a typical situation, the installed version of a package (priority 100) "
+"is not as recent as one of the versions available from the sources listed in "
+"the &sources-list; file (priority 500 or 990). Then the package will be "
+"upgraded when <command>apt-get install <replaceable>some-package</"
+"replaceable></command> or <command>apt-get upgrade</command> is executed."
+msgstr ""
+"Generalmente, la versión instalada del paquete (prioridad 100) no es tan "
+"reciente como la disponible a través de las fuentes en «&sources-"
+"list;» (prioridad 500 o 990). En este caso, el paquete se actualizará al "
+"ejecutar <command>apt-get install <replaceable>paquete</replaceable></"
+"command> o <command>apt-get upgrade</command>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"More rarely, the installed version of a package is <emphasis>more</emphasis> "
+"recent than any of the other available versions. The package will not be "
+"downgraded when <command>apt-get install <replaceable>some-package</"
+"replaceable></command> or <command>apt-get upgrade</command> is executed."
+msgstr ""
+"Rara vez la versión instalada de un paquete es <emphasis>más</emphasis> "
+"reciente que cualquiera de las versiones disponibles. En éste caso no se "
+"instalará la versión anterior del paquete al ejecutar <command>apt-get "
+"install <replaceable>paquete</replaceable></command> o <command>apt-get "
+"upgrade</command>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Sometimes the installed version of a package is more recent than the version "
+"belonging to the target release, but not as recent as a version belonging to "
+"some other distribution. Such a package will indeed be upgraded when "
+"<command>apt-get install <replaceable>some-package</replaceable></command> "
+"or <command>apt-get upgrade</command> is executed, because at least "
+"<emphasis>one</emphasis> of the available versions has a higher priority "
+"than the installed version."
+msgstr ""
+"A veces, la versión instalada de un paquete es más reciente que la versión "
+"perteneciente a la distribución objetivo, pero no tan reciente como la "
+"versión de otra distribución. Este tipo de paquetes se actualizarán al "
+"ejecutar <command>apt-get install <replaceable>paquete</replaceable></"
+"command> o <command>apt-get upgrade</command> porque al menos <emphasis>uno</"
+"emphasis> de los ejemplares disponibles tiene una prioridad mayor que la "
+"versión instalada."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "The Effect of APT Preferences"
+msgstr "El efecto de las preferencias sobre APT"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The APT preferences file allows the system administrator to control the "
+"assignment of priorities. The file consists of one or more multi-line "
+"records separated by blank lines. Records can have one of two forms, a "
+"specific form and a general form."
+msgstr ""
+"El fichero de preferencias de APT permite al administrador del sistema "
+"controlar la asignación de prioridades. El fichero consiste en uno o más "
+"registros de varias líneas separados entre sí por espacios en blanco. Los "
+"registros pueden tener una de estos dos formatos: el específico o el general."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The specific form assigns a priority (a \"Pin-Priority\") to one or more "
+"specified packages with a specified version or version range. For example, "
+"the following record assigns a high priority to all versions of the "
+"<filename>perl</filename> package whose version number begins with "
+"\"<literal>&good-perl;</literal>\". Multiple packages can be separated by "
+"spaces."
+msgstr ""
+"El formato «específico» asigna una prioridad («Pin-Priority») a uno más "
+"paquetes definidos con una versión o un rango de versiones especificados. "
+"Por ejemplo, el siguiente registro asigna una prioridad alta a todas las "
+"versiones del paquete <filename>perl</filename> cuyo número de versión "
+"empiece con «<literal>&good-perl;</literal>». Puede especificar varios "
+"paquetes separados por espacios."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The general form assigns a priority to all of the package versions in a "
+"given distribution (that is, to all the versions of packages that are listed "
+"in a certain <filename>Release</filename> file) or to all of the package "
+"versions coming from a particular Internet site, as identified by the site's "
+"fully qualified domain name."
+msgstr ""
+"El formato habitual asigna una prioridad a todas las versiones de los "
+"paquetes en una distribución (esto es, a todas las versiones de paquetes "
+"listados en un fichero <filename>Release</filename> particular), o a todas "
+"las versiones de un paquete provenientes de un sitio concreto en Internet, "
+"identificado por su nombre de dominio."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"This general-form entry in the APT preferences file applies only to groups "
+"of packages. For example, the following record assigns a high priority to "
+"all package versions available from the local site."
+msgstr ""
+"Esta entrada con formato general en el fichero de preferencias de APT sólo "
+"afecta a grupos de paquetes. Por ejemplo, el siguiente registro asigna una "
+"prioridad alta a todas las versiones disponibles desde un sitio local."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A note of caution: the keyword used here is \"<literal>origin</literal>\" "
+"which can be used to match a hostname. The following record will assign a "
+"high priority to all versions available from the server identified by the "
+"hostname \"ftp.de.debian.org\""
+msgstr ""
+"Una nota de aviso: la palabra clave usada aquí es «<literal>origin</"
+"literal>», el cual se puede usar para coincidir con un nombre de sistema. El "
+"siguiente registro asignará una prioridad alta a todas las versiones "
+"disponibles desde el servidor identificado con el nombre de sistema «ftp.de."
+"debian.org»."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"This should <emphasis>not</emphasis> be confused with the Origin of a "
+"distribution as specified in a <filename>Release</filename> file. What "
+"follows the \"Origin:\" tag in a <filename>Release</filename> file is not an "
+"Internet address but an author or vendor name, such as \"Debian\" or \"Ximian"
+"\"."
+msgstr ""
+"<emphasis>No</emphasis> se debe confundir con el origen («Origin») de una "
+"distribución tal y como se especifica un fichero <filename>Release</"
+"filename>. Lo que sigue a la etiqueta «Origin:» en un fichero "
+"<filename>Release</filename> no es la dirección de un sitio de Internet, "
+"sino el autor o el nombre del proveedor, tales como «Debian» o «Ximian»."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a low priority to all package versions "
+"belonging to any distribution whose Archive name is \"<literal>unstable</"
+"literal>\"."
+msgstr ""
+"El siguiente registro asigna una prioridad baja a todas las versiones de los "
+"paquetes pertenecientes a cualquier distribución que tenga como nombre de "
+"archivo de paquetes «<literal>unstable</literal>» (inestable)."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any distribution whose Codename is \"<literal>&debian-testing-"
+"codename;</literal>\"."
+msgstr ""
+"El siguiente registro asigna una prioridad alta a todas las versiones de los "
+"paquetes pertenecientes a cualquier distribución que tenga como nombre clave "
+"«<literal>&debian-testing-codename;</literal>»."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+msgstr ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any release whose Archive name is \"<literal>stable</literal>\" "
+"and whose release Version number is \"<literal>&debian-stable-version;</"
+"literal>\"."
+msgstr ""
+"El siguiente registro asigna una prioridad alta a todas las versiones de los "
+"paquetes pertenecientes a cualquier publicación que tenga como nombre de "
+"archivo de paquetes «<literal>stable</literal>» y como número de versión "
+"«<literal>&debian-stable-version;</literal>»."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The effect of the comma operator is similar to an \"and\" in logic: All "
+"conditions must be satisfied for the pin to match. There is one exception: "
+"For any type of condition (such as two \"a\" conditions), only the last such "
+"condition is checked."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Regular expressions and &glob; syntax"
+msgstr "Expresiones regulares y sintaxis &glob;"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"APT also supports pinning by &glob; expressions, and regular expressions "
+"surrounded by slashes. For example, the following example assigns the "
+"priority 500 to all packages from experimental where the name starts with "
+"gnome (as a &glob;-like expression) or contains the word kde (as a POSIX "
+"extended regular expression surrounded by slashes)."
+msgstr ""
+"APT también permite el anclaje mediante expresiones &glob;, y expresiones "
+"regulares delimitadas con barras. Por ejemplo, la siguiente opción asigna "
+"una prioridad 500 a todos los paquetes del archivo experimental si el nombre "
+"comienza con «gnome» (como expresión de tipo &glob;) o contiene la palabra "
+"«kde» (como expresión regular extendida POSIX delimitada por barras)."
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+msgstr ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The rule for those expressions is that they can occur anywhere where a "
+"string can occur. Thus, the following pin assigns the priority 990 to all "
+"packages from a release starting with &ubuntu-codename;."
+msgstr ""
+"La regla para estas expresiones es que pueden aparecer donde lo hace una "
+"cadena. Por ello, el siguiente anclaje asigna la prioridad 990 a todos los "
+"paquetes provenientes de una publicación a partir de &ubuntu-codename;."
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+msgstr ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If a regular expression occurs in a <literal>Package</literal> field, the "
+"behavior is the same as if this regular expression were replaced with a list "
+"of all package names it matches. It is undecided whether this will change in "
+"the future; thus you should always list wild-card pins first, so later "
+"specific pins override it. The pattern \"<literal>*</literal>\" in a "
+"Package field is not considered a &glob; expression in itself."
+msgstr ""
+"Si se detecta una expresión regular en un campo «<literal>Package</"
+"literal>», el comportamiento sera igual que sustituir esta expresión regular "
+"con una lista de todos los nombres de paquetes con los que coincide. No se "
+"ha decidido si esto se modificará en el futuro. Por ello, siempre debe "
+"enumerar los comodines de anclaje en primer lugar, para que los anclajes "
+"específicos los anulen en caso de ser necesario. El patrón «<literal>*</"
+"literal>» en un campo «Package» no se considera una expresión &glob;."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "How APT Interprets Priorities"
+msgstr "Interpretación de APT de las prioridades"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Priorities (P) assigned in the APT preferences file must be positive or "
+"negative integers. They are interpreted as follows (roughly speaking):"
+msgstr ""
+"Las prioridades (P) asignadas en el fichero de preferencias de APT deben ser "
+"números enteros positivos o negativos. Se interpretan (en general) del "
+"siguiente modo:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P &gt;= 1000"
+msgstr "P &gt;= 1000"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed even if this constitutes a downgrade of the "
+"package"
+msgstr ""
+"La versión se instala incluso si es una versión anterior a la instalada en "
+"el sistema."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "990 &lt;= P &lt; 1000"
+msgstr "990 &lt;= P &lt; 1000"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed even if it does not come from the target "
+"release, unless the installed version is more recent"
+msgstr ""
+"La versión se instala aunque no venga de la distribución objetivo, a menos "
+"que la versión instalada sea más reciente."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "500 &lt;= P &lt; 990"
+msgstr "500 &lt;= P &lt; 990"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to the target release or the installed version is more recent"
+msgstr ""
+"La versión se instala a menos que exista otro ejemplar disponible "
+"perteneciente a la distribución objetivo, o bien si la versión instalada es "
+"más reciente."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "100 &lt;= P &lt; 500"
+msgstr "100 &lt;= P &lt; 500"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to some other distribution or the installed version is more recent"
+msgstr ""
+"La versión se instala a menos que exista una versión disponible "
+"perteneciente a otra distribución, o si la versión instalada es más reciente."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "0 &lt; P &lt; 100"
+msgstr "0 &lt; P &lt; 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed only if there is no installed version of "
+"the package"
+msgstr ""
+"La versión sólo se instala si no hay ninguna versión del paquete instalada."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P &lt; 0"
+msgstr "P &lt; 0"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "prevents the version from being installed"
+msgstr "Evita la instalación de la versión."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P = 0"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "has undefined behaviour, do not use it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+#| msgid ""
+#| "If any specific-form records match an available package version then the "
+#| "first such record determines the priority of the package version. "
+#| "Failing that, if any general-form records match an available package "
+#| "version then the first such record determines the priority of the package "
+#| "version."
+msgid ""
+"The first specific-form record matching an available package version "
+"determines the priority of the package version. Failing that, the priority "
+"of the package is defined as the maximum of all priorities defined by "
+"generic-form records matching the version. Records defined using patterns "
+"in the Pin field other than \"*\" are treated like specific-form records."
+msgstr ""
+"Si cualquier registro con formato específico coincide con una versión "
+"disponible de un paquete, el registro determina la prioridad de la versión "
+"del paquete. De no ser así, y si cualquier número de registros con formato "
+"general coinciden con una versión, el primero determina la prioridad de la "
+"versión del paquete."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"For example, suppose the APT preferences file contains the three records "
+"presented earlier:"
+msgstr ""
+"Por ejemplo, suponga que el fichero de preferencias de APT contiene los tres "
+"registros antes mencionados:"
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid "Then:"
+msgstr "Por ello:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The most recent available version of the <literal>perl</literal> package "
+"will be installed, so long as that version's version number begins with "
+"\"<literal>&good-perl;</literal>\". If <emphasis>any</emphasis> &good-perl;"
+"* version of <literal>perl</literal> is available and the installed version "
+"is &bad-perl;*, then <literal>perl</literal> will be downgraded."
+msgstr ""
+"La versión más reciente disponible del paquete <literal>perl</literal> se "
+"instalará siempre que el número de versión empiece con «<literal>&good-perl;"
+"</literal>». De existir <emphasis>cualquier</emphasis> versión &good-perl;* "
+"disponible de <literal>perl</literal>, y si la versión instalada es &bad-"
+"perl;*, se instalará una versión anterior de <literal>perl</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A version of any package other than <literal>perl</literal> that is "
+"available from the local system has priority over other versions, even "
+"versions belonging to the target release."
+msgstr ""
+"Cualquier otra versión de un paquete distinto de <literal>perl</literal> "
+"disponible desde el sistema local tiene prioridad sobre el resto de las "
+"versiones, incluso sobre los pertenecientes a la distribución objetivo."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A version of a package whose origin is not the local system but some other "
+"site listed in &sources-list; and which belongs to an <literal>unstable</"
+"literal> distribution is only installed if it is selected for installation "
+"and no version of the package is already installed."
+msgstr ""
+"Otras versiones que tengan un origen distinto al sistema local listadas en "
+"«&sources-list;» y que pertenezcan a la distribución <literal>unstable</"
+"literal> sólo se instalarán si se seleccionan para su instalación y si no "
+"hay ninguna versión del paquete ya instalado."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Determination of Package Version and Distribution Properties"
+msgstr "Determinar la versión del paquete y las propiedades de la distribución"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The locations listed in the &sources-list; file should provide "
+"<filename>Packages</filename> and <filename>Release</filename> files to "
+"describe the packages available at that location."
+msgstr ""
+"Los recursos listados en el fichero «&sources-list;» deben proporcionar los "
+"ficheros <filename>Packages</filename> y <filename>Release</filename>. Éstos "
+"describen los paquetes disponibles en cada uno de los sitios."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The <filename>Packages</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable>/"
+"<replaceable>component</replaceable>/<replaceable>arch</replaceable></"
+"filename>: for example, <filename>.../dists/stable/main/binary-i386/"
+"Packages</filename>. It consists of a series of multi-line records, one for "
+"each package available in that directory. Only two lines in each record are "
+"relevant for setting APT priorities:"
+msgstr ""
+"El fichero <filename>Packages</filename> se suele encontrar en el directorio "
+"<filename>.../dists/<replaceable>nombre-dist</replaceable>/"
+"<replaceable>componente</replaceable>/<replaceable>arquitectura</"
+"replaceable></filename>, por ejemplo, <filename>.../dists/stable/main/binary-"
+"i386/Packages</filename>. Este fichero consiste en una serie de registros de "
+"varias líneas, uno por cada paquete disponible en ese directorio. Sólo dos "
+"líneas en cada registro son relevantes a la hora de definir las prioridades "
+"de APT:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Package:</literal> line"
+msgstr "La línea <literal>Package:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "gives the package name"
+msgstr "indica el nombre del paquete."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Version:</literal> line"
+msgstr "La línea <literal>Version:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "gives the version number for the named package"
+msgstr "indica el número de versión del paquete."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The <filename>Release</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable></filename>: for "
+"example, <filename>.../dists/stable/Release</filename>, or <filename>.../"
+"dists/&debian-stable-codename;/Release</filename>. It consists of a single "
+"multi-line record which applies to <emphasis>all</emphasis> of the packages "
+"in the directory tree below its parent. Unlike the <filename>Packages</"
+"filename> file, nearly all of the lines in a <filename>Release</filename> "
+"file are relevant for setting APT priorities:"
+msgstr ""
+"El fichero <filename>Release</filename> se suele encontrar en el directorio "
+"<filename>.../dists/<replaceable>nombre-dist</replaceable></filename>, por "
+"ejemplo <filename>.../dists/stable/Release</filename> o <filename>.../dists/"
+"&debian-stable-codename;/Release</filename>. El fichero consiste en "
+"registros de una sola línea que se aplican a <emphasis>todos</emphasis> los "
+"paquetes por debajo del directorio padre. Al contrario que el fichero "
+"<filename>Packages</filename>, casi todas las líneas del fichero "
+"<filename>Release</filename> son relevantes para las prioridades de APT:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line"
+msgstr "Las líneas <literal>Archive:</literal> o <literal>Suite:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the archive to which all the packages in the directory tree belong. "
+"For example, the line \"Archive: stable\" or \"Suite: stable\" specifies "
+"that all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file are in a <literal>stable</literal> "
+"archive. Specifying this value in the APT preferences file would require "
+"the line:"
+msgstr ""
+"indican el nombre del archivo al que pertenecen todos los paquetes del árbol "
+"de directorios. Por ejemplo, la línea «Archive: stable» o «Suite: stable» "
+"especifica que todos los paquetes en el árbol de directorios por debajo del "
+"directorio raíz marcado en el fichero <filename>Release</filename> están en "
+"un archivo «<literal>stable</literal>» (estable). Para especificar una "
+"preferencia de acuerdo con este parámetro tendrá que insertar la siguiente "
+"línea en el fichero de preferencias de APT:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release a=stable\n"
+msgstr "Pin: release a=stable\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Codename:</literal> line"
+msgstr "La línea <literal>Codename:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the codename to which all the packages in the directory tree belong. "
+"For example, the line \"Codename: &debian-testing-codename;\" specifies that "
+"all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file belong to a version named <literal>&debian-"
+"testing-codename;</literal>. Specifying this value in the APT preferences "
+"file would require the line:"
+msgstr ""
+"indica el nombre de la distribución a la que pertenecen todos los paquetes "
+"del árbol de directorios. Por ejemplo, la línea «Codename: &debian-testing-"
+"codename;» especifica que todos los paquetes en el árbol de directorios por "
+"debajo del directorio padre marcado en el fichero <filename>Release</"
+"filename> pertenecen a la versión llamada <literal>&debian-testing-codename;"
+"</literal>. Para especificar una preferencia de acuerdo con este parámetro "
+"tendrá que poner una de las siguientes líneas en el fichero de preferencias "
+"de APT:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release n=&debian-testing-codename;\n"
+msgstr "Pin: release n=&debian-testing-codename;\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the release version. For example, the packages in the tree might "
+"belong to Debian release version &debian-stable-version;. Note that there "
+"is normally no version number for the <literal>testing</literal> and "
+"<literal>unstable</literal> distributions because they have not been "
+"released yet. Specifying this in the APT preferences file would require one "
+"of the following lines."
+msgstr ""
+"nombra la versión de la publicación. Por ejemplo, los paquetes en el árbol "
+"pueden pertenecer a la versión &debian-stable-version; de Debian. Observe "
+"que, generalmente, <literal>testing</literal> y <literal>unstable</literal> "
+"no tienen una versión asignada porque no se han publicado. Para especificar "
+"una preferencia de acuerdo con este parámetro tendrá que poner una de las "
+"siguientes línea en el fichero de preferencias de APT:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+msgstr ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Component:</literal> line"
+msgstr "La línea <literal>Component:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the licensing component associated with the packages in the directory "
+"tree of the <filename>Release</filename> file. For example, the line "
+"\"Component: main\" specifies that all the packages in the directory tree "
+"are from the <literal>main</literal> component, which entails that they are "
+"licensed under terms listed in the Debian Free Software Guidelines. "
+"Specifying this component in the APT preferences file would require the line:"
+msgstr ""
+"indica la licencia asociada a los paquetes en el árbol de directorios "
+"correspondiente al fichero <filename>Release</filename>. Por ejemplo, la "
+"línea <literal>Component: main</literal> especifica que todos los paquetes "
+"en el árbol de directorios pertenecen a la sección <literal>main</literal>, "
+"lo cual asegura que su licencia se ajusta a las Directrices sobre software "
+"libre de Debian (DFSG). Para especificar una preferencia de acuerdo con este "
+"parámetro tendrá que poner la siguiente línea en el fichero de preferencias "
+"de APT:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release c=main\n"
+msgstr "Pin: release c=main\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Origin:</literal> line"
+msgstr "La línea <literal>Origin:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the originator of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is <literal>Debian</"
+"literal>. Specifying this origin in the APT preferences file would require "
+"the line:"
+msgstr ""
+"indica la procedencia de los paquetes en el árbol de directorios del fichero "
+"<filename>Release</filename>. La fuente más común es <literal>Debian</"
+"literal>. Puede definir esta fuente en el fichero de preferencias de APT "
+"mediante la siguiente línea:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release o=Debian\n"
+msgstr "Pin: release o=Debian\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Label:</literal> line"
+msgstr "La línea <literal>Label:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the label of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is <literal>Debian</"
+"literal>. Specifying this label in the APT preferences file would require "
+"the line:"
+msgstr ""
+"nombra la etiqueta de los paquetes en los árboles de directorios del fichero "
+"<filename>Release</filename>. Generalmente, es <literal>Debian</literal>. "
+"Puede definir esta etiqueta en el fichero de preferencias de APT mediante la "
+"siguiente línea:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release l=Debian\n"
+msgstr "Pin: release l=Debian\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"All of the <filename>Packages</filename> and <filename>Release</filename> "
+"files retrieved from locations listed in the &sources-list; file are stored "
+"in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
+"named by the variable <literal>Dir::State::Lists</literal> in the "
+"<filename>apt.conf</filename> file. For example, the file <filename>debian."
+"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
+"contains the <filename>Release</filename> file retrieved from the site "
+"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
+"architecture files from the <literal>contrib</literal> component of the "
+"<literal>unstable</literal> distribution."
+msgstr ""
+"Todos los ficheros <filename>Packages</filename> y <filename>Release</"
+"filename> obtenidos de los recursos en «&sources-list;» se guardan en el "
+"directorio <filename>/var/lib/apt/lists</filename>, o en el directorio "
+"definido por la variable <literal>Dir::State::Lists</literal>, que se puede "
+"definir en el fichero <filename>apt.conf</filename>. Por ejemplo, el fichero "
+"<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"i386_Release</filename> contiene los ficheros <filename>Release</filename> "
+"obtenidos de <literal>debian.lcs.mit.edu</literal> para la arquitectura "
+"<literal>binary-i386</literal> de la sección <literal>contrib</literal> de "
+"la distribución «<literal>unstable</literal>» (inestable)."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Optional Lines in an APT Preferences Record"
+msgstr "Líneas opcionales en el registro de preferencias de APT"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Each record in the APT preferences file can optionally begin with one or "
+"more lines beginning with the word <literal>Explanation:</literal>. This "
+"provides a place for comments."
+msgstr ""
+"Cada registro en el fichero de preferencias de APT puede comenzar con una o "
+"más líneas que tengan como primera palabra <literal>Explanation:</literal>. "
+"Útil para comentarios."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking Stable"
+msgstr "Seguir la distribución «stable» (estable)"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated\n"
+"Explanation: package versions other than those in the stable distro\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Explanation: Desinstalar o no instalar los ejemplares que no\n"
+"Explanation: pertenecen a la distribución estable\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"<literal>stable</literal> distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> "
+"distributions. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"El siguiente fichero de preferencias de APT provoca que APT asigne una "
+"prioridad mayor de la que asigna por omisión (500) a todas las versiones de "
+"paquete de la distribución <literal>stable</literal> y una prioridad más "
+"baja al resto de versiones de paquetes de otras distribuciones "
+"<literal>Debian</literal>. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"apt-get install <replaceable>package-name</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+msgstr ""
+"apt-get install <replaceable>paquete</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>stable</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+"Con un fichero «&sources-list;» adecuado y el fichero de preferencias "
+"mostrado anteriormente, cualquiera de las siguientes órdenes de APT hace que "
+"o bien todo el sistema o bien sólo algunos paquetes se actualicen a la "
+"última versión en <literal>stable</literal>. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/testing\n"
+msgstr "apt-get install <replaceable>paquete</replaceable>/testing\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>testing</literal> distribution; the package "
+"will not be upgraded again unless this command is given again. <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"La siguiente orden hace que APT actualice un paquete a la última versión de "
+"la distribución <literal>testing</literal>, el paquete no se actualizará de "
+"nuevo a menos que se ejecute la orden otra vez. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking Testing or Unstable"
+msgstr "Seguir la distribución «testing» (en pruebas) o «unstable» (inestable)"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a high priority "
+"to package versions from the <literal>testing</literal> distribution, a "
+"lower priority to package versions from the <literal>unstable</literal> "
+"distribution, and a prohibitively low priority to package versions from "
+"other <literal>Debian</literal> distributions. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+msgstr ""
+"El siguiente fichero de preferencias de APT provocará que APT asigne mayor "
+"prioridad a las versiones de la distribución <literal>testing</literal>, una "
+"prioridad menor a los paquetes de la distribución <literal>unstable</"
+"literal>, y una prioridad prohibitiva a los paquetes de otras distribuciones "
+"de <literal>Debian</literal>. <placeholder type=\"programlisting\" id=\"0\"/"
+">"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>testing</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+"Con un fichero &sources-list; adecuado y el fichero de preferencias anterior "
+"cualquiera de las siguientes órdenes hará que APT actualice los paquetes a "
+"la última versión de la distribución <literal>testing</literal>. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/unstable\n"
+msgstr "apt-get install <replaceable>paquete</replaceable>/unstable\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>unstable</literal> distribution. "
+"Thereafter, <command>apt-get upgrade</command> will upgrade the package to "
+"the most recent <literal>testing</literal> version if that is more recent "
+"than the installed version, otherwise, to the most recent <literal>unstable</"
+"literal> version if that is more recent than the installed version. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"La siguiente orden hace que APT actualice un determinado paquete a la última "
+"versión de la distribución <literal>unstable</literal>. Más tarde, "
+"<command>apt-get upgrade</command> actualizará el paquete a la última "
+"versión de la distribución <literal>testing</literal> si es más reciente que "
+"la versión instalada. De otro modo, se instalará la versión más reciente de "
+"la distribución<literal>unstable</literal> si es más reciente que la versión "
+"instalada. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking the evolution of a codename release"
+msgstr "Seguir la evolución de una publicación por el nombre"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated package versions\n"
+"Explanation: other than those in the distribution codenamed with &debian-testing-codename; or sid\n"
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+"\n"
+"Explanation: Debian unstable is always codenamed with sid\n"
+"Package: *\n"
+"Pin: release n=sid\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Explanation: Eliminar o no instalar cualquier paquete de Debian cuya versión sea\n"
+"Explanation: distinta a aquellos en las distribuciones de nombre squeeze o sid\n"
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+"\n"
+"Explanation: El nombre clave de Debian «unstable» siempre es sid\n"
+"Package: *\n"
+"Pin: release n=sid\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"specified codename of a distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> distributions, "
+"codenames and archives. Note that with this APT preference APT will follow "
+"the migration of a release from the archive <literal>testing</literal> to "
+"<literal>stable</literal> and later <literal>oldstable</literal>. If you "
+"want to follow for example the progress in <literal>testing</literal> "
+"notwithstanding the codename changes you should use the example "
+"configurations above. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"El siguiente fichero de preferencias de APT provocará que APT asigne una "
+"prioridad superior a la predeterminada (500) a todas las versiones de "
+"paquetes pertenecientes a un nombre de distribución especificado, y una "
+"prioridad prohibitivamente baja a las versiones de paquetes pertenecientes a "
+"otras distribuciones de <literal>Debian</literal>, nombres clave y archivos "
+"Debian. Tenga en cuenta que con esta preferencia, APT seguirá la migración "
+"de una publicación desde el archivo <literal>testing</literal> a "
+"<literal>stable</literal> y por último <literal>oldstable</literal>. Si "
+"desea seguir, por ejemplo, el progreso en <literal>testing</literal> "
+"obviando el nombre de la publicación, debería usar los ejemplos de "
+"configuración mencionados anteriormente. <placeholder type=\"programlisting"
+"\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest version(s) in "
+"the release codenamed with <literal>&debian-testing-codename;</literal>. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Con un fichero «&sources-list;» adecuado y el fichero de preferencias "
+"mostrado anteriormente, cualquiera de las siguientes órdenes provocará que "
+"APT actualice los paquetes a la última versión de la distribución llamada "
+"<literal>&debian-testing-codename;</literal>. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/sid\n"
+msgstr "apt-get install <replaceable>paquete</replaceable>/sid\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>sid</literal> distribution. Thereafter, "
+"<command>apt-get upgrade</command> will upgrade the package to the most "
+"recent <literal>&debian-testing-codename;</literal> version if that is more "
+"recent than the installed version, otherwise, to the most recent "
+"<literal>sid</literal> version if that is more recent than the installed "
+"version. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"La siguiente orden hace que APT actualice un determinado paquete a la última "
+"versión de la distribución <literal>sid</literal>. Más tarde, <command>apt-"
+"get upgrade</command> actualizará el paquete a la última versión de la "
+"distribución<literal>&debian-testing-codename;</literal> si es más reciente "
+"que la versión instalada. De otro modo, se instalará la versión más reciente "
+"de la distribución <literal>sid</literal> si es más reciente que la versión "
+"instalada. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: sources.list.5.xml
+msgid "List of configured APT data sources"
+msgstr "Lista de fuentes de datos de APT configurados"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "The source list <filename>/etc/apt/sources.list</filename> is designed to "
+#| "support any number of active sources and a variety of source media. The "
+#| "file lists one source per line, with the most preferred source listed "
+#| "first. The information available from the configured sources is acquired "
+#| "by <command>apt-get update</command> (or by an equivalent command from "
+#| "another APT front-end)."
+msgid ""
+"The source list <filename>/etc/apt/sources.list</filename> and the files "
+"contained in <filename>/etc/apt/sources.list.d/</filename> are designed to "
+"support any number of active sources and a variety of source media. The "
+"files list one source per line (one-line style) or contain multiline stanzas "
+"defining one or more sources per stanza (deb822 style), with the most "
+"preferred source listed first (in case a single version is available from "
+"more than one source). The information available from the configured sources "
+"is acquired by <command>apt-get update</command> (or by an equivalent "
+"command from another APT front-end)."
+msgstr ""
+"La lista de fuentes <filename>/etc/apt/sources.list</filename> se ha "
+"diseñado para permitir cualquier número de fuentes activas así como "
+"distintos medios de soporte de fuentes. El fichero enumera una fuente por "
+"línea, con la fuente preferida en primer lugar. La información disponible de "
+"las fuentes configuradas se obtiene mediante <command>apt-get update</"
+"command> (o una orden equivalente de una interfaz de APT)."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "sources.list.d"
+msgstr "sources.list.d"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "The <filename>/etc/apt/sources.list.d</filename> directory provides a way "
+#| "to add sources.list entries in separate files. The format is the same as "
+#| "for the regular <filename>sources.list</filename> file. File names need "
+#| "to end with <filename>.list</filename> and may only contain letters (a-z "
+#| "and A-Z), digits (0-9), underscore (_), hyphen (-) and period (.) "
+#| "characters. Otherwise APT will print a notice that it has ignored a "
+#| "file, unless that file matches a pattern in the <literal>Dir::Ignore-"
+#| "Files-Silently</literal> configuration list - in which case it will be "
+#| "silently ignored."
+msgid ""
+"The <filename>/etc/apt/sources.list.d</filename> directory provides a way to "
+"add sources.list entries in separate files. Two different file formats are "
+"allowed as described in the next two sections. Filenames need to have "
+"either the extension <filename>.list</filename> or <filename>.sources</"
+"filename> depending on the contained format. The filenames may only contain "
+"letters (a-z and A-Z), digits (0-9), underscore (_), hyphen (-) and period "
+"(.) characters. Otherwise APT will print a notice that it has ignored a "
+"file, unless that file matches a pattern in the <literal>Dir::Ignore-Files-"
+"Silently</literal> configuration list - in which case it will be silently "
+"ignored."
+msgstr ""
+"El directorio <filename>/etc/apt/sources.list.d</filename> ofrece una manera "
+"de añadir entradas de «sources.list» en ficheros separados. El formato es "
+"idéntico al del fichero normal <filename>sources.list</filename>. Los "
+"nombres de los ficheros deben terminar en <filename>.list</filename>, y sólo "
+"pueden contener caracteres de letras (a-z y A-Z), dígitos (0-9), guión bajo "
+"(_), guión (-) y punto (.). De no ser así, APT informa de que ha omitido un "
+"fichero, a menos que coincida con un patrón en la lista de configuración "
+"<literal>Dir::Ignore-Files-Silently</literal>. Si coincide, se omite "
+"silenciosamente."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "One-Line-Style Format"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Files in this format have the extension <filename>.list</filename>. Each "
+"line specifying a source starts with a type (e.g. <literal>deb-src</"
+"literal>) followed by options and arguments for this type. Individual "
+"entries cannot be continued onto a following line. Empty lines are ignored, "
+"and a <literal>#</literal> character anywhere on a line marks the remainder "
+"of that line as a comment. Consequently an entry can be disabled by "
+"commenting out the entire line. If options should be provided they are "
+"separated by spaces and all of them together are enclosed by square brackets "
+"(<literal>[]</literal>) included in the line after the type separated from "
+"it with a space. If an option allows multiple values these are separated "
+"from each other with a comma (<literal>,</literal>). An option name is "
+"separated from its value(s) by an equals sign (<literal>=</literal>). "
+"Multivalue options also have <literal>-=</literal> and <literal>+=</literal> "
+"as separators, which instead of replacing the default with the given "
+"value(s) modify the default value(s) to remove or include the given values."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This is the traditional format and supported by all apt versions. Note that "
+"not all options as described below are supported by all apt versions. Note "
+"also that some older applications parsing this format on their own might not "
+"expect to encounter options as they were uncommon before the introduction of "
+"multi-architecture support."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "deb822-Style Format"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Files in this format have the extension <filename>.sources</filename>. The "
+"format is similar in syntax to other files used by Debian and its "
+"derivatives, such as the metadata files that apt will download from the "
+"configured sources or the <filename>debian/control</filename> file in a "
+"Debian source package. Individual entries are separated by an empty line; "
+"additional empty lines are ignored, and a <literal>#</literal> character at "
+"the start of the line marks the entire line as a comment. An entry can hence "
+"be disabled by commenting out each line belonging to the stanza, but it is "
+"usually easier to add the field \"Enabled: no\" to the stanza to disable the "
+"entry. Removing the field or setting it to yes reenables it. Options have "
+"the same syntax as every other field: A fieldname separated by a colon "
+"(<literal>:</literal>) and optionally spaces from its value(s). Note "
+"especially that multiple values are separated by spaces, not by commas as in "
+"the one-line format. Multivalue fields like <literal>Architectures</literal> "
+"also have <literal>Architectures-Add</literal> and <literal>Architectures-"
+"Remove</literal> to modify the default value rather than replacing it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This is a new format supported by apt itself since version 1.1. Previous "
+"versions ignore such files with a notice message as described earlier. It "
+"is intended to make this format gradually the default format, deprecating "
+"the previously described one-line-style format, as it is easier to create, "
+"extend and modify for humans and machines alike especially if a lot of "
+"sources and/or options are involved. Developers who are working with and/or "
+"parsing apt sources are highly encouraged to add support for this format and "
+"to contact the APT team to coordinate and share this work. Users can freely "
+"adopt this format already, but may encounter problems with software not "
+"supporting the format yet."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid "The deb and deb-src types"
+msgid "The deb and deb-src Types: General Format"
+msgstr "Los tipos «deb» y «deb-src»"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "The <literal>deb</literal> type references a typical two-level Debian "
+#| "archive, <filename>distribution/component</filename>. The "
+#| "<literal>distribution</literal> is generally an archive name like "
+#| "<literal>stable</literal> or <literal>testing</literal> or a codename "
+#| "like <literal>&debian-stable-codename;</literal> or <literal>&debian-"
+#| "testing-codename;</literal> while component is one of <literal>main</"
+#| "literal>, <literal>contrib</literal> or <literal>non-free</literal>. The "
+#| "<literal>deb-src</literal> type references a Debian distribution's source "
+#| "code in the same form as the <literal>deb</literal> type. A <literal>deb-"
+#| "src</literal> line is required to fetch source indexes."
+msgid ""
+"The <literal>deb</literal> type references a typical two-level Debian "
+"archive, <filename>distribution/component</filename>. The "
+"<literal>distribution</literal> is generally a suite name like "
+"<literal>stable</literal> or <literal>testing</literal> or a codename like "
+"<literal>&debian-stable-codename;</literal> or <literal>&debian-testing-"
+"codename;</literal> while component is one of <literal>main</literal>, "
+"<literal>contrib</literal> or <literal>non-free</literal>. The <literal>deb-"
+"src</literal> type references a Debian distribution's source code in the "
+"same form as the <literal>deb</literal> type. A <literal>deb-src</literal> "
+"line is required to fetch source indexes."
+msgstr ""
+"El tipo <literal>deb</literal> hace referencia a un típico archivo de Debian "
+"de dos niveles, <filename>distribución/componente</filename>. Habitualmente, "
+"<literal>distribución</literal> es «<literal>stable</literal>» (estable) o "
+"«<literal>testing</literal>» (en pruebas), o un nombre código como "
+"<literal>&debian-stable-codename;</literal> o <literal>&debian-testing-"
+"codename;</literal>, mientras que el componente es <literal>main</literal> "
+"(principal), <literal>contrib</literal>, <literal>non-free</literal> (no "
+"libre), o <literal>non-us</literal>. El tipo <literal>deb-src</literal> hace "
+"referencia al código fuente de la distribución con la misma sintaxis que el "
+"tipo <literal>deb</literal>. Debe insertar una línea <literal>deb-src</"
+"literal> para obtener los índices de fuentes."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "The format for a <filename>sources.list</filename> entry using the "
+#| "<literal>deb</literal> and <literal>deb-src</literal> types is:"
+msgid ""
+"The format for two one-line-style entries using the <literal>deb</literal> "
+"and <literal>deb-src</literal> types is:"
+msgstr ""
+"El formato para una entrada en el fichero <filename>sources.list</filename> "
+"usando los tipos <literal>deb</literal> y <literal>deb-src</literal> es:"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]\n"
+"deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+" Types: deb deb-src\n"
+" URIs: uri\n"
+" Suites: suite\n"
+" Components: [component1] [component2] [...]\n"
+" option1: value1\n"
+" option2: value2\n"
+" "
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Alternatively the equivalent entry in deb822 style looks like this: "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "The URI for the <literal>deb</literal> type must specify the base of the "
+#| "Debian distribution, from which APT will find the information it needs. "
+#| "<literal>distribution</literal> can specify an exact path, in which case "
+#| "the components must be omitted and <literal>distribution</literal> must "
+#| "end with a slash (<literal>/</literal>). This is useful for the case when "
+#| "only a particular sub-section of the archive denoted by the URI is of "
+#| "interest. If <literal>distribution</literal> does not specify an exact "
+#| "path, at least one <literal>component</literal> must be present."
+msgid ""
+"The URI for the <literal>deb</literal> type must specify the base of the "
+"Debian distribution, from which APT will find the information it needs. "
+"<literal>suite</literal> can specify an exact path, in which case the "
+"components must be omitted and <literal>suite</literal> must end with a "
+"slash (<literal>/</literal>). This is useful for the case when only a "
+"particular sub-directory of the archive denoted by the URI is of interest. "
+"If <literal>suite</literal> does not specify an exact path, at least one "
+"<literal>component</literal> must be present."
+msgstr ""
+"El URI para el tipo <literal>deb</literal> debe especificar la base de la "
+"distribución de Debian desde la que APT encontrará la información que "
+"necesita. <literal>distribución</literal> puede definir una ruta exacta, en "
+"cuyo caso debe omitir los componentes y <literal>distribución</literal> debe "
+"finalizar con una barra (<literal>/</literal>). Esto es útil cuando sólo se "
+"requiere una sub-sección del archivo señalado por el URI. Al menos uno de "
+"los <literal>componentes</literal> debe estar presente si "
+"<literal>distribución</literal> no define una ruta exacta."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>distribution</literal> may also contain a variable, <literal>"
+#| "$(ARCH)</literal> which expands to the Debian architecture (such as "
+#| "<literal>amd64</literal> or <literal>armel</literal>) used on the system. "
+#| "This permits architecture-independent <filename>sources.list</filename> "
+#| "files to be used. In general this is only of interest when specifying an "
+#| "exact path, <literal>APT</literal> will automatically generate a URI with "
+#| "the current architecture otherwise."
+msgid ""
+"<literal>suite</literal> may also contain a variable, <literal>$(ARCH)</"
+"literal> which expands to the Debian architecture (such as <literal>amd64</"
+"literal> or <literal>armel</literal>) used on the system. This permits "
+"architecture-independent <filename>sources.list</filename> files to be used. "
+"In general this is only of interest when specifying an exact path; "
+"<literal>APT</literal> will automatically generate a URI with the current "
+"architecture otherwise."
+msgstr ""
+"<literal>distribución</literal> puede contener una variable, <literal>"
+"$(ARCH)</literal>, que se expandirá a la arquitectura de Debian usada en el "
+"sistema (por ejemplo, <literal>amd64</literal> o <literal>armel</literal>). "
+"Esto permite que los ficheros <filename>sources.list</filename> sean "
+"independientes de la arquitectura. En general, esta característica sólo es "
+"de interés si se especifica una ruta completa, de lo contrario <literal>APT</"
+"literal> generará automáticamente una URI con la arquitectura actual del "
+"sistema."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "Since only one distribution can be specified per line it may be necessary "
+#| "to have multiple lines for the same URI, if a subset of all available "
+#| "distributions or components at that location is desired. APT will sort "
+#| "the URI list after it has generated a complete set internally, and will "
+#| "collapse multiple references to the same Internet host, for instance, "
+#| "into a single connection, so that it does not inefficiently establish an "
+#| "FTP connection, close it, do something else, and then re-establish a "
+#| "connection to that same host. This feature is useful for accessing busy "
+#| "FTP sites with limits on the number of simultaneous anonymous users. APT "
+#| "also parallelizes connections to different hosts to more effectively deal "
+#| "with sites with low bandwidth."
+msgid ""
+"Especially in the one-line-style format since only one distribution can be "
+"specified per line it may be necessary to have multiple lines for the same "
+"URI, if a subset of all available distributions or components at that "
+"location is desired. APT will sort the URI list after it has generated a "
+"complete set internally, and will collapse multiple references to the same "
+"Internet host, for instance, into a single connection, so that it does not "
+"inefficiently establish a connection, close it, do something else, and then "
+"re-establish a connection to that same host. APT also parallelizes "
+"connections to different hosts to more effectively deal with sites with low "
+"bandwidth."
+msgstr ""
+"Debido a que sólo se puede especificar una distribución por línea, es "
+"posible que se precisen varias líneas para la misma URI si desea tener "
+"acceso a más de una distribución o componente de esa ubicación. APT ordenará "
+"internamente la lista de direcciones URI después de generar una copia "
+"interna, y unirá varias referencias al mismo servidor de Internet en una "
+"sola conexión, para así no establecer una conexión FTP de forma ineficiente, "
+"cerrarla, hacer otra cosa, y entonces restablecer la conexión con el mismo "
+"servidor. Esta característica es útil para acceder a sitios FPT muy "
+"visitados que limitan el número de accesos simultáneos a usuarios anónimos. "
+"APT también realizará conexiones paralelas a diferentes servidores para "
+"aprovechar mejor el ancho de banda."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"It is important to list sources in order of preference, with the most "
+"preferred source listed first. Typically this will result in sorting by "
+"speed from fastest to slowest (CD-ROM followed by hosts on a local network, "
+"followed by distant Internet hosts, for example)."
+msgstr ""
+"Es importante listar las fuentes por orden de preferencia, con la fuente "
+"preferente al inicio. Lo normal es ordenar las fuentes por velocidad, de la "
+"más rápida a la más lenta (CD-ROM seguido de servidores en la red local, "
+"seguidos por servidores de Internet distantes, por ejemplo)."
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "&sourceslist-list-format;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "&sourceslist-sources-format;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"As an example, the sources for your distribution could look like this in one-"
+"line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or like "
+"this in deb822 style format: <placeholder type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid "The deb and deb-src types"
+msgid "The deb and deb-src types: Options"
+msgstr "Los tipos «deb» y «deb-src»"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Each source entry can have options specified to modify which source is "
+"accessed and how data is acquired from it. Format, syntax and names of the "
+"options vary between the one-line-style and deb822-style formats as "
+"described, but they both have the same options available. For simplicity we "
+"list the deb822 fieldname and provide the one-line name in brackets. "
+"Remember that besides setting multivalue options explicitly, there is also "
+"the option to modify them based on the default, but we aren't listing those "
+"names explicitly here. Unsupported options are silently ignored by all APT "
+"versions."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#| "replaceable>,…</literal> can be used to specify for which architectures "
+#| "information should be downloaded. If this option is not set all "
+#| "architectures defined by the <literal>APT::Architectures</literal> option "
+#| "will be downloaded."
+msgid ""
+"<option>Architectures</option> (<option>arch</option>) is a multivalue "
+"option defining for which architectures information should be downloaded. If "
+"this option isn't set the default is all architectures as defined by the "
+"<option>APT::Architectures</option> config option."
+msgstr ""
+"<literal>arch=<replaceable>arquitecura1</replaceable>,"
+"<replaceable>arquitecura2</replaceable>,…</literal> se puede utilizar para "
+"definir la arquitectura para la que se descarga información sobre "
+"arquitecturas. Si no se define esta opción, se descargarán todas las "
+"arquitecturas definidas por la opción <literal>APT::Architectures</literal>."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#| "replaceable>,…</literal> can be used to specify for which architectures "
+#| "information should be downloaded. If this option is not set all "
+#| "architectures defined by the <literal>APT::Architectures</literal> option "
+#| "will be downloaded."
+msgid ""
+"<option>Languages</option> (<option>lang</option>) is a multivalue option "
+"defining for which languages information such as translated package "
+"descriptions should be downloaded. If this option isn't set the default is "
+"all languages as defined by the <option>Acquire::Languages</option> config "
+"option."
+msgstr ""
+"<literal>arch=<replaceable>arquitecura1</replaceable>,"
+"<replaceable>arquitecura2</replaceable>,…</literal> se puede utilizar para "
+"definir la arquitectura para la que se descarga información sobre "
+"arquitecturas. Si no se define esta opción, se descargarán todas las "
+"arquitecturas definidas por la opción <literal>APT::Architectures</literal>."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Targets</option> (<option>target</option>) is a multivalue option "
+"defining which download targets apt will try to acquire from this source. If "
+"not specified, the default set is defined by the <option>Acquire::"
+"IndexTargets</option> configuration scope (targets are specified by their "
+"name in the <literal>Created-By</literal> field). Additionally, targets can "
+"be enabled or disabled by using the <literal>Identifier</literal> field as "
+"an option with a boolean value instead of using this multivalue option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>PDiffs</option> (<option>pdiffs</option>) is a yes/no value which "
+"controls if APT should try to use PDiffs to update old indexes instead of "
+"downloading the new indexes entirely. The value of this option is ignored if "
+"the repository doesn't announce the availability of PDiffs. Defaults to the "
+"value of the option with the same name for a specific index file defined in "
+"the <option>Acquire::IndexTargets</option> scope, which itself defaults to "
+"the value of configuration option <option>Acquire::PDiffs</option> which "
+"defaults to <literal>yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>By-Hash</option> (<option>by-hash</option>) can have the value "
+"<literal>yes</literal>, <literal>no</literal> or <literal>force</literal> "
+"and controls if APT should try to acquire indexes via a URI constructed from "
+"a hashsum of the expected file instead of using the well-known stable "
+"filename of the index. Using this can avoid hashsum mismatches, but requires "
+"a supporting mirror. A <literal>yes</literal> or <literal>no</literal> value "
+"activates/disables the use of this feature if this source indicates support "
+"for it, while <literal>force</literal> will enable the feature regardless of "
+"what the source indicates. Defaults to the value of the option of the same "
+"name for a specific index file defined in the <option>Acquire::IndexTargets</"
+"option> scope, which itself defaults to the value of configuration option "
+"<option>Acquire::By-Hash</option> which defaults to <literal>yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Furthermore, there are options which if set affect <emphasis>all</emphasis> "
+"sources with the same URI and Suite, so they have to be set on all such "
+"entries and can not be varied between different components. APT will try to "
+"detect and error out on such anomalies."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Allow-Insecure</option> (<option>allow-insecure</option>), "
+"<option>Allow-Weak</option> (<option>allow-weak</option>) and <option>Allow-"
+"Downgrade-To-Insecure</option> (<option>allow-downgrade-to-insecure</"
+"option>) are boolean values which all default to <literal>no</literal>. If "
+"set to <literal>yes</literal> they circumvent parts of &apt-secure; and "
+"should therefore not be used lightly!"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Trusted</option> (<option>trusted</option>) is a tri-state value "
+"which defaults to APT deciding if a source is considered trusted or if "
+"warnings should be raised before e.g. packages are installed from this "
+"source. This option can be used to override that decision. The value "
+"<literal>yes</literal> tells APT always to consider this source as trusted, "
+"even if it doesn't pass authentication checks. It disables parts of &apt-"
+"secure;, and should therefore only be used in a local and trusted context "
+"(if at all) as otherwise security is breached. The value <literal>no</"
+"literal> does the opposite, causing the source to be handled as untrusted "
+"even if the authentication checks passed successfully. The default value "
+"can't be set explicitly."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Signed-By</option> (<option>signed-by</option>) is either an "
+"absolute path to a keyring file (has to be accessible and readable for the "
+"<literal>_apt</literal> user, so ensure everyone has read-permissions on the "
+"file) or one or more fingerprints of keys either in the <filename>trusted."
+"gpg</filename> keyring or in the keyrings in the <filename>trusted.gpg.d/</"
+"filename> directory (see <command>apt-key fingerprint</command>). If the "
+"option is set, only the key(s) in this keyring or only the keys with these "
+"fingerprints are used for the &apt-secure; verification of this repository. "
+"Defaults to the value of the option with the same name if set in the "
+"previously acquired <filename>Release</filename> file. Otherwise all keys "
+"in the trusted keyrings are considered valid signers for this repository."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Check-Valid-Until</option> (<option>check-valid-until</option>) is "
+"a yes/no value which controls if APT should try to detect replay attacks. A "
+"repository creator can declare a time until which the data provided in the "
+"repository should be considered valid, and if this time is reached, but no "
+"new data is provided, the data is considered expired and an error is "
+"raised. Besides increasing security, as a malicious attacker can't send old "
+"data forever to prevent a user from upgrading to a new version, this also "
+"helps users identify mirrors which are no longer updated. However, some "
+"repositories such as historic archives are not updated any more by design, "
+"so this check can be disabled by setting this option to <literal>no</"
+"literal>. Defaults to the value of configuration option <option>Acquire::"
+"Check-Valid-Until</option> which itself defaults to <literal>yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Valid-Until-Min</option> (<option>valid-until-min</option>) and "
+"<option>Valid-Until-Max</option> (<option>valid-until-max</option>) can be "
+"used to raise or lower the time period in seconds in which the data from "
+"this repository is considered valid. -Max can be especially useful if the "
+"repository provides no Valid-Until field on its Release file to set your own "
+"value, while -Min can be used to increase the valid time on seldom updated "
+"(local) mirrors of a more frequently updated but less accessible archive "
+"(which is in the sources.list as well) instead of disabling the check "
+"entirely. Default to the value of the configuration options "
+"<option>Acquire::Min-ValidTime</option> and <option>Acquire::Max-ValidTime</"
+"option> which are both unset by default."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "URI Specification"
+msgstr "Especificación del URI"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "The currently recognized URI types are:"
+msgstr "Los tipos de URI permitidos actualmente son:"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The file scheme allows an arbitrary directory in the file system to be "
+"considered an archive. This is useful for NFS mounts and local mirrors or "
+"archives."
+msgstr ""
+"El esquema «file» permite considerar cualquier directorio en el sistema de "
+"ficheros como un archivo de paquetes adicional. Esto es útil para "
+"particiones montadas mediante NFS y réplicas o archivos de paquetes locales."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The cdrom scheme allows APT to use a local CD-ROM drive with media swapping. "
+"Use the &apt-cdrom; program to create cdrom entries in the source list."
+msgstr ""
+"El esquema «cdrom» permite a APT utilizar la unidad de CD-ROM local. Utilice "
+"el programa &apt-cdrom; para añadir entradas de un disco óptico a «sources."
+"list»."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The http scheme specifies an HTTP server for the archive. If an environment "
+"variable <envar>http_proxy</envar> is set with the format http://server:"
+"port/, the proxy server specified in <envar>http_proxy</envar> will be used. "
+"Users of authenticated HTTP/1.1 proxies may use a string of the format "
+"http://user:pass@server:port/. Note that this is an insecure method of "
+"authentication."
+msgstr ""
+"El esquema «http» define un servidor HTTP como el archivo de paquetes. Si la "
+"variable de entorno <envar>http_proxy</envar> está definida con formato "
+"«http://servidor:puerto/», se usará el servidor proxy definido en "
+"<envar>http_proxy</envar>. Los usuarios de servidores proxy con "
+"autenticación HTTP/1.1 deberán usar la cadena de caracteres «http://usuario:"
+"contraseña@servidor:puerto/». Tenga en cuenta que este método de "
+"autenticación no es seguro."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The ftp scheme specifies an FTP server for the archive. APT's FTP behavior "
+"is highly configurable; for more information see the &apt-conf; manual page. "
+"Please note that an FTP proxy can be specified by using the "
+"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
+"HTTP proxy (HTTP proxy servers often understand FTP URLs) using this "
+"environment variable and <emphasis>only</emphasis> this environment "
+"variable. Proxies using HTTP specified in the configuration file will be "
+"ignored."
+msgstr ""
+"El esquema «ftp» definea un servidor FTP como el archivo de paquetes. El "
+"comportamiento de APT con FTP es muy configurable, para más información "
+"consulte la página de manual de &apt-conf;. Tenga en cuenta que puede "
+"especificar un proxy FTP mediante la variable de entorno <envar>ftp_proxy</"
+"envar>. Es posible especificar un servidor proxy HTTP (los servidores proxy "
+"HTTP normalmente comprenden los URL de tipo FTP) mediante este método y SÓLO "
+"este método. Se ignoran los proxies que utilizan HTTP definidos en el "
+"fichero de configuración."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The copy scheme is identical to the file scheme except that packages are "
+"copied into the cache directory instead of used directly at their location. "
+"This is useful for people using removable media to copy files around with "
+"APT."
+msgstr ""
+"El esquema «copy» es idéntico a «file», pero los paquetes se copian al "
+"directorio almacén en vez de usarlos directamente en su ubicación original. "
+"Es de utilidad para personas que utilizan dispositivos extraíbles, ya que "
+"permite realizar la copia de ficheros con APT."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
+"the files as a given user. Prior configuration of rhosts or RSA keys is "
+"recommended. The standard <command>find</command> and <command>dd</command> "
+"commands are used to perform the file transfers from the remote host."
+msgstr ""
+"El método «rsh/ssh» invoca RSH/SSH para establecer una conexión con una "
+"máquina remota y acceder a los ficheros como un usuario dado. Se recomienda "
+"configurar previamente rhosts o las claves RSA. Las órdenes estándar "
+"<command>find</command> y <command>dd</command> se utilizan para realizar la "
+"transferencia de ficheros desde la máquina remota."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
+#: sources.list.5.xml
+msgid "adding more recognizable URI types"
+msgstr "Añadir más tipos de URI reconocidos."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"APT can be extended with more methods shipped in other optional packages, "
+"which should follow the naming scheme <package>apt-transport-"
+"<replaceable>method</replaceable></package>. For instance, the APT team "
+"also maintains the package <package>apt-transport-https</package>, which "
+"provides access methods for HTTPS URIs with features similar to the http "
+"method. Methods for using e.g. debtorrent are also available - see &apt-"
+"transport-debtorrent;."
+msgstr ""
+"APT se puede extender con más métodos proporcionados por paquetes "
+"opcionales, que deben seguir el esquema de denominación <package>apt-"
+"transport-<replaceable>método</replaceable></package>. Por ejemplo, el "
+"equipo de APT también desarrolla el paquete <package>apt-transport-https</"
+"package>, que proporciona métodos de acceso a direcciones URI de HTTPS de "
+"forma similar al método «http». También se proporcionan métodos para "
+"debtorrent, consulte &apt-transport-debtorrent;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses the archive stored locally (or NFS mounted) at /home/apt/debian for "
+"stable/main, stable/contrib, and stable/non-free."
+msgstr ""
+"Utiliza el archivo local (o montado mediante NFS) en «/home/apt/debian» para "
+"«stable/main», «stable/contrib», y «stable/non-free»."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb file:/home/apt/debian stable main contrib non-free"
+msgstr "deb file:/home/apt/debian stable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: stable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: stable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "As above, except this uses the unstable (development) distribution."
+msgstr ""
+"Como arriba, excepto que usa la distribución «unstable» (en desarrollo)."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb file:/home/apt/debian unstable main contrib non-free"
+msgstr "deb file:/home/apt/debian unstable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid "Source line for the above"
+msgid "Sources specification for the above."
+msgstr "Línea para obtener el código fuente desde la ubicación anterior."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb-src file:/home/apt/debian unstable main contrib non-free"
+msgstr "deb-src file:/home/apt/debian unstable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb-src\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb-src\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The first line gets package information for the architectures in "
+"<literal>APT::Architectures</literal> while the second always retrieves "
+"<literal>amd64</literal> and <literal>armel</literal>."
+msgstr ""
+"La primera línea obtiene información de paquete para las arquitecturas en "
+"<literal>APT::Architectures</literal> mientras que la segunda siempre "
+"obtiene <literal>amd64</literal> y <literal>armel</literal>."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main"
+msgstr ""
+"deb http://deb.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"\n"
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"Architectures: amd64 armel\n"
+msgstr ""
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"\n"
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"Architectures: amd64 armel\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to access the archive at archive.debian.org, and uses only the "
+"hamm/main area."
+msgstr ""
+"Utiliza HTTP para acceder al archivo de Debian en «archive.debian.org», y "
+"usa sólo la sección «hamm/main»."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb http://archive.debian.org/debian-archive hamm main"
+msgstr "deb http://archive.debian.org/debian-archive hamm main"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://archive.debian.org/debian-archive\n"
+"Suites: hamm\n"
+"Components: main"
+msgstr ""
+"Types: deb\n"
+"URIs: http://archive.debian.org/debian-archive\n"
+"Suites: hamm\n"
+"Components: main"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the &debian-stable-codename;/contrib area."
+msgstr ""
+"Utiliza FTP para acceder al archivo de Debian en «ftp.debian.org», debajo "
+"del directorio «debian», y usa sólo la sección «&debian-stable-codename;/"
+"contrib»."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: contrib"
+msgstr ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: contrib"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the unstable/contrib area. If this line appears as "
+"well as the one in the previous example in <filename>sources.list</filename> "
+"a single FTP session will be used for both resource lines."
+msgstr ""
+"Utiliza FTP para acceder al archivo de Debian en «ftp.debian.org», debajo "
+"del directorio «debian», y usa sólo la sección unstable/contrib. Si tanto "
+"esta línea como la del ejemplo anterior aparecen en <filename>sources.list</"
+"filename>, se usará sólo una sesión FTP para ambas."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian unstable contrib"
+msgstr "deb ftp://ftp.debian.org/debian unstable contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: unstable\n"
+"Components: contrib"
+msgstr ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: unstable\n"
+"Components: contrib"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+msgstr "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://ftp.tlh.debian.org/universe\n"
+"Suites: unstable/binary-$(ARCH)/"
+msgstr ""
+"Types: deb\n"
+"URIs: http://ftp.tlh.debian.org/universe\n"
+"Suites: unstable/binary-$(ARCH)/"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe "
+#| "directory, and uses only files found under <filename>unstable/binary-"
+#| "i386</filename> on i386 machines, <filename>unstable/binary-amd64</"
+#| "filename> on amd64, and so forth for other supported architectures. [Note "
+#| "this example only illustrates how to use the substitution variable; "
+#| "official debian archives are not structured like this] <placeholder type="
+#| "\"literallayout\" id=\"0\"/>"
+msgid ""
+"Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe "
+"directory, and uses only files found under <filename>unstable/binary-i386</"
+"filename> on i386 machines, <filename>unstable/binary-amd64</filename> on "
+"amd64, and so forth for other supported architectures. [Note this example "
+"only illustrates how to use the substitution variable; official debian "
+"archives are not structured like this] <placeholder type=\"literallayout\" "
+"id=\"0\"/> <placeholder type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+"Utiliza HTTP para acceder al archivo en «ftp.tlh.debian.org», bajo el "
+"directorio «universe», y sólo usa ficheros que se encuentren bajo "
+"<filename>unstable/binary-i386</filename> en máquinas i386, "
+"<filename>unstable/binary-amd64</filename> en máquinas amd64, y así para "
+"todas las arquitecturas compatibles. (Tenga en cuenta que este ejemplo sólo "
+"sirve para ilustrar cómo se usa la variable de sustitución, «non-us» ya "
+"tiene esta estructura.) <placeholder type=\"literallayout\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to get binary packages as well as sources from the stable, testing "
+"and unstable suites and the components main and contrib."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian stable main contrib\n"
+"deb-src http://deb.debian.org/debian stable main contrib\n"
+"deb http://deb.debian.org/debian testing main contrib\n"
+"deb-src http://deb.debian.org/debian testing main contrib\n"
+"deb http://deb.debian.org/debian unstable main contrib\n"
+"deb-src http://deb.debian.org/debian unstable main contrib"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb deb-src\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: stable testing unstable\n"
+"Components: main contrib\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "&apt-get;, &apt-conf;, &apt-acquire-additional-files;"
+msgstr "&apt-get;, &apt-conf;, &apt-acquire-additional-files;"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt-extracttemplates.1.xml apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "1"
+msgstr "1"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-extracttemplates.1.xml
+msgid ""
+"Utility to extract <command>debconf</command> config and templates from "
+"Debian packages"
+msgstr ""
+"Herramienta de extracción de configuración de <command>debconf</command> y "
+"plantillas de paquetes de Debian"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"<command>apt-extracttemplates</command> will take one or more Debian package "
+"files as input and write out (to a temporary directory) all associated "
+"config scripts and template files. For each passed in package that contains "
+"config scripts and templates, one line of output will be generated in the "
+"format:"
+msgstr ""
+"<command>apt-extracttemplates</command> tomará uno o más ficheros de "
+"paquetes de Debian como entrada para escribir (a un directorio temporal) "
+"todos los scripts de configuración asociados y los ficheros de plantilla. "
+"Para cada paquete proporcionado que contenga scripts de configuración y "
+"plantillas, se generará una salida de una línea con el formato:"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid "package version template-file config-script"
+msgstr "paquete versión fichero-de-plantilla script-de-configuración"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"template-file and config-script are written to the temporary directory "
+"specified by the <option>-t</option> or <option>--tempdir</option> "
+"(<literal>APT::ExtractTemplates::TempDir</literal>) directory, with "
+"filenames of the form <filename>package.template.XXXXXX</filename> and "
+"<filename>package.config.XXXXXX</filename>"
+msgstr ""
+"El fichero de plantilla y el script de configuración se escriben en el "
+"directorio temporal definido mediante la opción <option>-t</option> o "
+"<option>--tempdir</option> (<literal>APT::ExtractTemplates::TempDir</"
+"literal>), con un formato de nombre de fichero <filename>paquete.template."
+"XXXXXX</filename> y <filename>paquete.config.XXXXXX</filename>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"Temporary directory in which to write extracted <command>debconf</command> "
+"template files and config scripts. Configuration Item: <literal>APT::"
+"ExtractTemplates::TempDir</literal>"
+msgstr ""
+"El directorio temporal en el que se escribirán los ficheros de plantillas "
+"<command>debconf</command> y los scripts de configuración extraídos. Opción "
+"de configuración: <literal>APT::ExtractTemplates::TempDir</literal>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"<command>apt-extracttemplates</command> returns zero on normal operation, "
+"decimal 100 on error."
+msgstr ""
+"<command>apt-extracttemplates</command> devuelve cero si no hay ningún "
+"error, y el valor 100 en caso de error."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-sortpkgs.1.xml
+msgid "Utility to sort package index files"
+msgstr "Herramienta para ordenar los ficheros de índice de paquetes"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"<command>apt-sortpkgs</command> will take an index file (source index or "
+"package index) and sort the records so that they are ordered by the package "
+"name. It will also sort the internal fields of each record according to the "
+"internal sorting rules."
+msgstr ""
+"<command>apt-sortpkgs</command> toma un fichero de índice (índice de fuentes "
+"o índice de paquetes) y ordena los registros por nombre de paquete. También "
+"ordena los campos internos de cada registro de acuerdo a las reglas de "
+"ordenación internas."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"All output is sent to standard output; the input must be a seekable file."
+msgstr ""
+"Toda la salida se muestra por la salida estándar, la entrada debe ser un "
+"fichero ubicable."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"Use source index field ordering. Configuration Item: <literal>APT::"
+"SortPkgs::Source</literal>."
+msgstr ""
+"Utililza el orden por el campo de índice de fuentes. Opción de "
+"configuración: <literal>APT::SortPkgs::Source</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"<command>apt-sortpkgs</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+"<command>apt-sortpkgs</command> devuelve cero si no hay ningún error, y el "
+"valor 100 en caso de error."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-ftparchive.1.xml
+msgid "Utility to generate index files"
+msgstr "Herramienta para generar ficheros de índice"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> is the command line tool that generates "
+"the index files that APT uses to access a distribution source. The index "
+"files should be generated on the origin site based on the content of that "
+"site."
+msgstr ""
+"<command>apt-ftparchive</command> es la herramienta de la línea de órdenes "
+"que genera los ficheros de índice que APT utiliza para acceder a la fuente "
+"de la distribución. Los ficheros de índice se deberían generar en el sitio "
+"de origen basado en el contenido de ese sitio."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> is a superset of the &dpkg-scanpackages; "
+"program, incorporating its entire functionality via the <literal>packages</"
+"literal> command. It also contains a contents file generator, "
+"<literal>contents</literal>, and an elaborate means to 'script' the "
+"generation process for a complete archive."
+msgstr ""
+"<command>apt-ftparchive</command> es un superconjunto del programa &dpkg-"
+"scanpackages;, e incorpora su funcionalidad al completo mediante la orden "
+"<literal>packages</literal>. También contiene un generador de contenidos de "
+"fichero, <literal>contents</literal>, y un modo elaborado para realizar un "
+"«script» para el proceso de generación de un archivo completo."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Internally <command>apt-ftparchive</command> can make use of binary "
+"databases to cache the contents of a .deb file and it does not rely on any "
+"external programs aside from &gzip;. When doing a full generate it "
+"automatically performs file-change checks and builds the desired compressed "
+"output files."
+msgstr ""
+"Internamente, <command>apt-ftparchive</command> puede hacer uso de bases de "
+"datos binarias para almacenar los contenidos de un fichero «.deb» y no "
+"depender de ningún programa externo como &gzip;. Cuando se realiza una "
+"generación completa, automáticamente realiza comprobaciones de cambios en "
+"los ficheros y genera los ficheros de salida comprimidos deseados."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The packages command generates a package file from a directory tree. It "
+"takes the given directory and recursively searches it for .deb files, "
+"emitting a package record to stdout for each. This command is approximately "
+"equivalent to &dpkg-scanpackages;."
+msgstr ""
+"La orden «packages» genera un fichero de paquete a partir de un directorio. "
+"Busca recursivamente ficheros «.deb» en el directorio proporcionado, "
+"generando un registro de paquete en la salida estándar para cada uno. Esta "
+"orden es casi un equivalente de &dpkg-scanpackages;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The option <option>--db</option> can be used to specify a binary caching DB."
+msgstr ""
+"La opción <option>--db</option> se puede usar para especificar una base de "
+"datos binaria para la caché (registro de paquetes)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>sources</literal> command generates a source index file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .dsc files, emitting a source record to stdout for each. This command is "
+"approximately equivalent to &dpkg-scansources;."
+msgstr ""
+"La orden <literal>sources</literal> genera un fichero de índice de fuentes a "
+"partir de un directorio. Toma el directorio proporcionado y busca en él "
+"recursivamente ficheros «.dsc», generando un registro de fuente en la salida "
+"estándar para cada uno. Esta orden es casi un equivalente de &dpkg-"
+"scansources;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"If an override file is specified then a source override file will be looked "
+"for with an extension of .src. The --source-override option can be used to "
+"change the source override file that will be used."
+msgstr ""
+"Si se define un fichero alternativo, se buscará un fichero de fuentes "
+"alternativo con la extensión «.src». Puede usar la opción --source-override "
+"para cambiar el fichero de fuentes alternativo que se usará."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>contents</literal> command generates a contents file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .deb files, and reads the file list from each file. It then sorts and "
+"writes to stdout the list of files matched to packages. Directories are not "
+"written to the output. If multiple packages own the same file then each "
+"package is separated by a comma in the output."
+msgstr ""
+"La orden <literal>contents</literal> genera un fichero de contenidos a "
+"partir de un directorio. Toma el directorio proporcionado y busca en él "
+"recursivamente ficheros «.deb», lee la lista de ficheros para cada uno, los "
+"ordena y muestra en la salida estándar la lista de ficheros que coinciden "
+"con los paquetes. Los directorios no se muestran por la salida estándar. Si "
+"varios paquetes tienen el mismo fichero, entonces cada paquete se separará "
+"por una coma en la salida."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+#, fuzzy
+#| msgid ""
+#| "The <literal>release</literal> command generates a Release file from a "
+#| "directory tree. It recursively searches the given directory for "
+#| "uncompressed <filename>Packages</filename> and <filename>Sources</"
+#| "filename> files and ones compressed with <command>gzip</command>, "
+#| "<command>bzip2</command> or <command>lzma</command> as well as "
+#| "<filename>Release</filename> and <filename>md5sum.txt</filename> files by "
+#| "default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>). "
+#| "Additional filename patterns can be added by listing them in "
+#| "<literal>APT::FTPArchive::Release::Patterns</literal>. It then writes to "
+#| "stdout a <filename>Release</filename> file containing an MD5, SHA1 and "
+#| "SHA256 digest for each file."
+msgid ""
+"The <literal>release</literal> command generates a Release file from a "
+"directory tree. It recursively searches the given directory for uncompressed "
+"and compressed <filename>Packages</filename>, <filename>Sources</filename>, "
+"<filename>Contents</filename>, <filename>Components</filename> and "
+"<filename>icons</filename> files as well as <filename>Release</filename>, "
+"<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
+"default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>). "
+"Additional filename patterns can be added by listing them in <literal>APT::"
+"FTPArchive::Release::Patterns</literal>. It then writes to stdout a "
+"<filename>Release</filename> file containing (by default) an MD5, SHA1, "
+"SHA256 and SHA512 digest for each file."
+msgstr ""
+"La orden <literal>release</literal> genera un fichero «Release» a partir de "
+"un árbol de directorios. Analiza el directorio dado de forma recursiva en "
+"busca de ficheros <filename>Packages</filename> y <filename>Sources</"
+"filename> descomprmidos, y aquellos comprimidos con <command>gzip</command>, "
+"<command>bzip2</command> o <command>lzma</command>, así como los ficheros "
+"<filename>Release</filename> y <filename>md5sum.txt</filename> de forma "
+"predefinida. (<literal>APT::FTPArchive::Release::Default-Patterns</"
+"literal>). Se pueden añadir patrones de nombres de fichero enumerándolos en "
+"<literal>APT::FTPArchive::Release::Patterns</literal>. A continuación genera "
+"un fichero <filename>Release</filename> a través de la salida estándar que "
+"contiene una suma de control MD5, SHA1 y SHA256 para cada fichero."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Values for the additional metadata fields in the Release file are taken from "
+"the corresponding variables under <literal>APT::FTPArchive::Release</"
+"literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The "
+"supported fields are <literal>Origin</literal>, <literal>Label</literal>, "
+"<literal>Suite</literal>, <literal>Version</literal>, <literal>Codename</"
+"literal>, <literal>Date</literal>, <literal>NotAutomatic</literal>, "
+"<literal>ButAutomaticUpgrades</literal>, <literal>Acquire-By-Hash</literal>, "
+"<literal>Valid-Until</literal>, <literal>Signed-By</literal>, "
+"<literal>Architectures</literal>, <literal>Components</literal> and "
+"<literal>Description</literal>."
+msgstr ""
+"Los valores para los campos de metadatos adicionales en el fichero «Release» "
+"se toman de las variables correspondientes en <literal>APT::FTPArchive::"
+"Release</literal>, por ejemplo <literal>APT::FTPArchive::Release::Origin</"
+"literal>. Los campos permitidos son: <literal>Origin</literal>, "
+"<literal>Label</literal>, <literal>Suite</literal>, <literal>Version</"
+"literal>, <literal>Codename</literal>, <literal>Date</literal>, "
+"<literal>NotAutomatic</literal>, <literal>ButAutomaticUpgrades</literal>, "
+"<literal>Acquire-By-Hash</literal>, <literal>Valid-Until</literal>, "
+"<literal>Signed-By</literal>, <literal>Architectures</literal>, "
+"<literal>Components</literal> y <literal>Description</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>generate</literal> command is designed to be runnable from a "
+"cron script and builds indexes according to the given config file. The "
+"config language provides a flexible means of specifying which index files "
+"are built from which directories, as well as providing a simple means of "
+"maintaining the required settings."
+msgstr ""
+"La orden <literal>generate</literal> se ha diseñado para ejecutarse desde un "
+"script de cron y genera los índices de acuerdo a lo proporcionado en el "
+"fichero de configuración. El lenguaje de configuración proporciona una forma "
+"flexible de definir qué ficheros de índice se generarán a partir de qué "
+"directorios, así como proporcionar una forma sencilla de mantener la "
+"configuración necesaria."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>clean</literal> command tidies the databases used by the given "
+"configuration file by removing any records that are no longer necessary."
+msgstr ""
+"La orden <literal>clean</literal> ordena las bases de datos que usa el "
+"fichero de configuración proporcionado, eliminando los registros que no son "
+"necesarios."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Generate Configuration"
+msgstr "La configuración de «generate»"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>generate</literal> command uses a configuration file to "
+"describe the archives that are going to be generated. It follows the typical "
+"ISC configuration format as seen in ISC tools like bind 8 and dhcpd. &apt-"
+"conf; contains a description of the syntax. Note that the generate "
+"configuration is parsed in sectional manner, but &apt-conf; is parsed in a "
+"tree manner. This only effects how the scope tag is handled."
+msgstr ""
+"La orden <literal>generate</literal> usa un fichero de configuración para "
+"describir los ficheros que se generarán. Sigue el típico formato de "
+"configuración de ISC presente en las herramientas de ISC como bind 8 y "
+"dhcpd. &apt-conf; contiene una descripción de la sintaxis. Tenga en cuenta "
+"que la configuración de «generate» se analiza por sección, pero &apt-conf; "
+"se analiza por árbol. Esto sólo afecta a cómo se maneja el ámbito de la "
+"etiqueta."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The generate configuration has four separate sections, each described below."
+msgstr ""
+"La configuración de «generate» tiene cuatro secciones diferentes, descritas "
+"a continuación."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Dir</literal> Section"
+msgstr "Sección <literal>Dir</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Dir</literal> section defines the standard directories needed "
+"to locate the files required during the generation process. These "
+"directories are prepended certain relative paths defined in later sections "
+"to produce a complete an absolute path."
+msgstr ""
+"La sección <literal>Dir</literal> define los directorios estándar necesarios "
+"para ubicar los ficheros necesarios durante el proceso de generación. A "
+"estos directorios se les añaden ciertas rutas relativas definidas en "
+"secciones posteriores para producir una ruta absoluta."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the root of the FTP archive, in a standard Debian configuration "
+"this is the directory that contains the <filename>ls-LR</filename> and dist "
+"nodes."
+msgstr ""
+"Define la raíz del archivo FTP; en una configuración estándar de Debian éste "
+"es el directorio que contiene el <filename>ls-LR</filename> y los nodos "
+"«dist»."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the location of the override files."
+msgstr "Define la ubicación de los ficheros alternativos."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the location of the cache files."
+msgstr "Define la ubicación de los ficheros almacenados."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the location of the file list files, if the <literal>FileList</"
+"literal> setting is used below."
+msgstr ""
+"Define la ubicación de los ficheros del listado de ficheros, si se usa "
+"posteriormente el valor <literal>FileList</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Default</literal> Section"
+msgstr "Sección <literal>Default</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Default</literal> section specifies default values, and "
+"settings that control the operation of the generator. Other sections may "
+"override these defaults with a per-section setting."
+msgstr ""
+"La sección <literal>Default</literal> define los valores predeterminados, y "
+"los ajustes que controlan la operación del generador. Otras secciones pueden "
+"sobrescribir estos valores predeterminados con un valor de la sección."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+#, fuzzy
+#| msgid ""
+#| "Sets the default compression schemes to use for the package index files. "
+#| "It is a string that contains a space separated list of at least one of: "
+#| "'.' (no compression), 'gzip' and 'bzip2'. The default for all compression "
+#| "schemes is '. gzip'."
+msgid ""
+"Sets the default compression schemes to use for the package index files. It "
+"is a string that contains a space separated list of at least one of the "
+"compressors configured via the <option>APT::Compressor</option> "
+"configuration scope. The default for all compression schemes is '. gzip'."
+msgstr ""
+"Define los esquemas de compresión predeterminados para usar en los ficheros "
+"de índice de paquete. Es una cadena que contiene una lista separada por "
+"espacios de al menos uno de los siguientes valores: «.» (sin compresión), "
+"«gzip» y «bzip2». El valor predeterminado para todos los esquemas de "
+"compresión es «. gzip»."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default list of file extensions that are package files. This "
+"defaults to '.deb'."
+msgstr ""
+"Define la lista predeterminada de extensiones de fichero que son ficheros de "
+"paquete. El valor predeterminado es «.deb»."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Sources files."
+msgstr ""
+"Esta opción es similar a <literal>Packages::Compress</literal> excepto que "
+"controla la compresión para los ficheros «Sources»."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default list of file extensions that are source files. This "
+"defaults to '.dsc'."
+msgstr ""
+"Define la lista predeterminada de las extensiones de fichero que son "
+"ficheros de fuentes. El valor predeterminado es «.dsc»."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Contents files."
+msgstr ""
+"Esta opción es similar a <literal>Packages::Compress</literal> excepto que "
+"controla la compresión para los ficheros «Contents»."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Translation-en master file."
+msgstr ""
+"Esta opción es similar a <literal>Packages::Compress</literal> excepto que "
+"controla la compresión para el fichero maestro Translation-en."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the number of kilobytes to delink (and replace with hard links) "
+"per run. This is used in conjunction with the per-section <literal>External-"
+"Links</literal> setting."
+msgstr ""
+"Define el número de kilobytes a desenlazar (y reemplazar con enlaces duros) "
+"por ejecución. Se usa junto al valor <literal>External-Links</literal> de "
+"cada sección."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the mode of all created index files. It defaults to 0644. All "
+"index files are set to this mode with no regard to the umask."
+msgstr ""
+"Define el modo de todos los ficheros de índice creados. El valor "
+"predeterminado es 0644. Todos los ficheros de índice se ajustan a este modo "
+"sin tener en cuenta la máscara de usuario («umask»)."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies whether long descriptions should be included in the "
+"<filename>Packages</filename> file or split out into a master "
+"<filename>Translation-en</filename> file."
+msgstr ""
+"Define si se incluyen descripciones largas en el fichero <filename>Packages</"
+"filename>, o si se separan en un fichero <filename>Translation-en</filename> "
+"maestro."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>TreeDefault</literal> Section"
+msgstr "Sección <literal>TreeDefault</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets defaults specific to <literal>Tree</literal> sections. All of these "
+"variables are substitution variables and have the strings $(DIST), "
+"$(SECTION) and $(ARCH) replaced with their respective values."
+msgstr ""
+"Define los valores predeterminados de las secciones <literal>Tree</literal>. "
+"Todas estas variables son variables de sustitución y reemplazan las cadenas "
+"$(DIST), $(SECTION) y $(ARCH) con sus valores respectivos."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the number of kilobytes of contents files that are generated each day. "
+"The contents files are round-robined so that over several days they will all "
+"be rebuilt."
+msgstr ""
+"Define el número de kilobytes de los ficheros de contenido que se generan "
+"cada día. Los ficheros de contenido están en una cola «round-robin», de modo "
+"que durante varios días todos se regenerarán."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Controls the number of days a contents file is allowed to be checked without "
+"changing. If this limit is passed the mtime of the contents file is updated. "
+"This case can occur if the package file is changed in such a way that does "
+"not result in a new contents file [override edit for instance]. A hold off "
+"is allowed in hopes that new .debs will be installed, requiring a new file "
+"anyhow. The default is 10, the units are in days."
+msgstr ""
+"Controla el número de días en los que se permite comprobar un fichero de "
+"contenido sin cambios. Si este límite caduca, el tiempo de modificación "
+"(mtime) del fichero de contenido se actualiza. Este caso puede aparecer si "
+"un fichero de paquete cambia de forma que no resulte en un fichero de "
+"contenido nuevo (por ejemplo, una edición alternativa). Se permite la "
+"retención con la esperanza de que se instalen nuevos «.deb», lo cual precisa "
+"un fichero nuevo de todos modos. El valor predeterminado es diez, las "
+"unidades usadas son días."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/"
+"$(SECTION)/binary-$(ARCH)/</filename>"
+msgstr ""
+"Define la raíz del directorio «.deb». El valor predeterminado es <filename>"
+"$(DIST)/$(SECTION)/binary-$(ARCH)/</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the top of the source package directory tree. Defaults to <filename>"
+"$(DIST)/$(SECTION)/source/</filename>"
+msgstr ""
+"Define la raíz del directorio de los paquetes de fuentes. El valor "
+"predeterminado es <filename>$(DIST)/$(SECTION)/source/</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Packages file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"binary-$(ARCH)/Packages</filename>"
+msgstr ""
+"Define el fichero «Packages» de salida. El valor predeterminado es <filename>"
+"$(DIST)/$(SECTION)/binary-$(ARCH)/Packages</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Sources file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"source/Sources</filename>"
+msgstr ""
+"Define el fichero «Sources» de salida. El valor predeterminado es <filename>"
+"$(DIST)/$(SECTION)/source/Sources</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Translation-en master file with the long descriptions if "
+"they should be not included in the Packages file. Defaults to <filename>"
+"$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+msgstr ""
+"Define el fichero maestro «Translation-en» que contiene las descripciones "
+"largas en el caso de que no se incluyan en el fichero «Packages». El valor "
+"predeterminado es <filename>$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the path prefix that causes a symlink to be considered an internal link "
+"instead of an external link. Defaults to <filename>$(DIST)/$(SECTION)/</"
+"filename>"
+msgstr ""
+"Define el prefijo de la ruta que hace que un enlace simbólico se considere "
+"un enlace interno en lugar de un enlace externo. El valor predeterminado es "
+"<filename>$(DIST)/$(SECTION)/</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Contents file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"Contents-$(ARCH)</filename>. If this setting causes multiple Packages files "
+"to map onto a single Contents file (as is the default) then <command>apt-"
+"ftparchive</command> will integrate those package files together "
+"automatically."
+msgstr ""
+"Define el fichero «Contents» de salida. El valor predeterminado es <filename>"
+"$(DIST)/Contents-$(ARCH)</filename>. Si este valor provoca que varios "
+"ficheros «Packages» se relacionen con un único fichero «Contents» (el "
+"comportamiento predeterminado), <command>apt-ftparchive</command> integrará "
+"automáticamente esos ficheros de paquete."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets header file to prepend to the contents output."
+msgstr ""
+"Define el fichero de cabecera a añadir al fichero «Contents» de salida."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the binary cache database to use for this section. Multiple sections "
+"can share the same database."
+msgstr ""
+"Define la base de datos binaria de la caché para usar en esta sección. "
+"Varias secciones pueden compartir la misma base de datos."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies that instead of walking the directory tree, <command>apt-"
+"ftparchive</command> should read the list of files from the given file. "
+"Relative files names are prefixed with the archive directory."
+msgstr ""
+"Define que <command>apt-ftparchive</command> debería leer la lista de "
+"ficheros del fichero proporcionado en lugar de explorar recursivamente el "
+"árbol de directorios. A los nombres de los ficheros relativos se les añade "
+"como prefijo el directorio del archivo."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies that instead of walking the directory tree, <command>apt-"
+"ftparchive</command> should read the list of files from the given file. "
+"Relative files names are prefixed with the archive directory. This is used "
+"when processing source indexes."
+msgstr ""
+"Define que <command>apt-ftparchive</command> debería leer la lista de "
+"ficheros del fichero proporcionado en lugar de explorar recursivamente el "
+"árbol de directorio. A los nombres de los ficheros relativos se les añade "
+"como prefijo el directorio del archivo. Sólo se usa cuando se procesan "
+"índices de fuentes."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Tree</literal> Section"
+msgstr "Sección <literal>Tree</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Tree</literal> section defines a standard Debian file tree "
+"which consists of a base directory, then multiple sections in that base "
+"directory and finally multiple Architectures in each section. The exact "
+"pathing used is defined by the <literal>Directory</literal> substitution "
+"variable."
+msgstr ""
+"La sección <literal>Tree</literal> define un árbol de un archivo de paquetes "
+"Debian estándar que consiste en un directorio base, varias secciones en ese "
+"directorio base y finalmente varias arquitecturas en cada sección. La ruta "
+"exacta usada se define en la variable de sustitución <literal>Directory</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Tree</literal> section takes a scope tag which sets the "
+"<literal>$(DIST)</literal> variable and defines the root of the tree (the "
+"path is prefixed by <literal>ArchiveDir</literal>). Typically this is a "
+"setting such as <filename>dists/&debian-stable-codename;</filename>."
+msgstr ""
+"La sección <literal>Tree</literal> toma un ámbito de una etiqueta que define "
+"la variable <literal>$(DIST)</literal> y la raíz del árbol (a la ruta se le "
+"añade el prefijo <literal>ArchiveDir</literal>). Normalmente esto es un "
+"valor como <filename>dists/&debian-stable-codename;</filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"All of the settings defined in the <literal>TreeDefault</literal> section "
+"can be used in a <literal>Tree</literal> section as well as three new "
+"variables."
+msgstr ""
+"Todos los valores definidos en la sección <literal>TreeDefault</literal> se "
+"pueden utilizar en la sección <literal>Tree</literal>, así como tres nuevas "
+"variables."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid ""
+"for i in Sections do \n"
+" for j in Architectures do\n"
+" Generate for DIST=scope SECTION=i ARCH=j\n"
+" "
+msgstr ""
+"for i in Sections do \n"
+" for j in Architectures do\n"
+" Generar con DIST=scope SECTION=i ARCH=j\n"
+" "
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"When processing a <literal>Tree</literal> section <command>apt-ftparchive</"
+"command> performs an operation similar to: <placeholder type=\"programlisting"
+"\" id=\"0\"/>"
+msgstr ""
+"Cuando se procesa una sección <literal>Tree</literal> <command>apt-"
+"ftparchive</command> realiza una operación similar a la siguiente: "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is a space separated list of sections which appear under the "
+"distribution; typically this is something like <literal>main contrib non-"
+"free</literal>"
+msgstr ""
+"Es una lista de secciones separadas por espacios que aparecen bajo la "
+"distribución; habitualmente, es similar a <literal>main contrib non-free</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is a space separated list of all the architectures that appear under "
+"search section. The special architecture 'source' is used to indicate that "
+"this tree has a source archive. The architecture 'all' signals that "
+"architecture specific files like <filename>Packages</filename> should not "
+"include information about architecture <literal>all</literal> packages in "
+"all files as they will be available in a dedicated file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the binary override file. The override file contains section, priority "
+"and maintainer address information."
+msgstr ""
+"Define el fichero binario alternativo. Éste contiene la información sobre la "
+"sección, la prioridad y la dirección del mantenedor."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the source override file. The override file contains section "
+"information."
+msgstr ""
+"Define el fichero de fuentes alternativo. Éste contiene la información sobre "
+"la sección."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the binary extra override file."
+msgstr "Define el fichero binario alternativo adicional."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the source extra override file."
+msgstr "Define el fichero de fuentes alternativo adicional."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>BinDirectory</literal> Section"
+msgstr "Sección <literal>BinDirectory</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>bindirectory</literal> section defines a binary directory tree "
+"with no special structure. The scope tag specifies the location of the "
+"binary directory and the settings are similar to the <literal>Tree</literal> "
+"section with no substitution variables or <literal>Section</"
+"literal><literal>Architecture</literal> settings."
+msgstr ""
+"La sección <literal>bindirectory</literal> define un directorio binario sin "
+"ningún tipo de estructura especial. El ámbito de la etiqueta define la "
+"ubicación del directorio binario, la configuración es similar a la sección "
+"<literal>Tree</literal> sin sustituir las variables o la configuración de "
+"<literal>Section</literal><literal>Architecture</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the Packages file output."
+msgstr "Define el fichero «Packages» de salida."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the Sources file output. At least one of <literal>Packages</literal> or "
+"<literal>Sources</literal> is required."
+msgstr ""
+"Define el fichero «Sources» de salida. Es necesario al menos un fichero "
+"<literal>Packages</literal> o <literal>Sources</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the Contents file output (optional)."
+msgstr "Define el fichero «Contents» de salida (opcional)"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the binary override file."
+msgstr "Define el fichero binario alternativo."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the source override file."
+msgstr "Define el fichero de fuentes alternativo."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the cache DB."
+msgstr "Define la base de datos de la caché."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Appends a path to all the output paths."
+msgstr "Añade una ruta a todas las rutas de salida."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the file list file."
+msgstr "Define el fichero de la lista de ficheros."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Binary Override File"
+msgstr "El fichero binario alternativo"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The binary override file is fully compatible with &dpkg-scanpackages;. It "
+"contains four fields separated by spaces. The first field is the package "
+"name, the second is the priority to force that package to, the third is the "
+"section to force that package to and the final field is the maintainer "
+"permutation field."
+msgstr ""
+"El fichero binario alternativo es totalmente compatible con &dpkg-"
+"scanpackages;. Contiene cuatro campos separados por espacios. El primero es "
+"el nombre del paquete, el segundo la prioridad asignada el paquete, el "
+"tercero es la sección a la que se fuerza el paquete y el último es el campo "
+"de permutación del mantenedor."
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "old [// oldn]* => new"
+msgstr "antigua [// antigua-n]* => nueva"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "new"
+msgstr "nueva"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The general form of the maintainer field is: <placeholder type="
+"\"literallayout\" id=\"0\"/> or simply, <placeholder type=\"literallayout\" "
+"id=\"1\"/> The first form allows a double-slash separated list of old email "
+"addresses to be specified. If any of those are found then new is substituted "
+"for the maintainer field. The second form unconditionally substitutes the "
+"maintainer field."
+msgstr ""
+"La forma general del campo del mantenedor es: <placeholder type="
+"\"literallayout\" id=\"0\"/> o simplemente <placeholder type=\"literallayout"
+"\" id=\"1\"/> La primera forma permite una lista separada por barras dobles "
+"de las direcciones de correo electrónico antiguas a definir. Si se encuentra "
+"cualquier de ellas «nueva» se sustituye por el campo del mantenedor. La "
+"segunda forma sustituye de forma incondicional el campo del mantenedor."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Source Override File"
+msgstr "El fichero de fuentes alternativo"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The source override file is fully compatible with &dpkg-scansources;. It "
+"contains two fields separated by spaces. The first field is the source "
+"package name, the second is the section to assign it."
+msgstr ""
+"El fichero de fuentes alternativo es totalmente compatible con &dpkg-"
+"scansources;. Contiene dos campos separados por espacios. El primero es el "
+"nombre del paquete fuente, el segundo es la sección a la que se asignará."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Extra Override File"
+msgstr "El fichero alternativo adicional"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The extra override file allows any arbitrary tag to be added or replaced in "
+"the output. It has three columns, the first is the package, the second is "
+"the tag and the remainder of the line is the new value."
+msgstr ""
+"El fichero alternativo adicional permite añadir o reemplazar en la salida "
+"cualquier etiqueta arbitraria. Tiene tres columnas, la primera es el "
+"paquete, la segunda es la etiqueta y el resto de la línea es el nuevo valor."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Generate the given checksum. These options default to on, when turned off "
+"the generated index files will not have the checksum fields where possible. "
+"Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</"
+"replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</"
+"replaceable>::<replaceable>Checksum</replaceable></literal> where "
+"<literal><replaceable>Index</replaceable></literal> can be "
+"<literal>Packages</literal>, <literal>Sources</literal> or <literal>Release</"
+"literal> and <literal><replaceable>Checksum</replaceable></literal> can be "
+"<literal>MD5</literal>, <literal>SHA1</literal>, <literal>SHA256</literal> "
+"or <literal>SHA512</literal>."
+msgstr ""
+"Genera la suma de control dada. Por omisión, estas opciones están activas. "
+"Si se desactivan, los ficheros de índice generados no contendrán los campos "
+"de suma de control donde sea posibl. Opciones de configuración: "
+"<literal>APT::FTPArchive::<replaceable>Checksum</replaceable></literal> y "
+"<literal>APT::FTPArchive::<replaceable>Index</replaceable>::"
+"<replaceable>Checksum</replaceable></literal> donde "
+"<literal><replaceable>Index</replaceable></literal> puede ser "
+"<literal>Packages</literal>, <literal>Sources</literal> o <literal>Release</"
+"literal>, y <literal><replaceable>Checksum</replaceable></literal> puede ser "
+"<literal>MD5</literal>, <literal>SHA1</literal>, <literal>SHA256</literal> o "
+"<literal>SHA512</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Use a binary caching DB. This has no effect on the generate command. "
+"Configuration Item: <literal>APT::FTPArchive::DB</literal>."
+msgstr ""
+"Utiliza una base de datos binaria para la caché. Ésto no afecta a la orden "
+"«generate». Opción de configuración: <literal>APT::FTPArchive::DB</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+"Silencioso, produce una salida adecuada para su almacenamiento, omitiendo "
+"los indicadores de progreso. Más letras «q» producen una salida más "
+"silenciosa, hasta un máximo de dos letras. Además, es posible usar <option>-"
+"q=#</option> para ajustar el nivel de silencio, ignorando el fichero de "
+"configuración. Opción de configuración: <literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Perform Delinking. If the <literal>External-Links</literal> setting is used "
+"then this option actually enables delinking of the files. It defaults to on "
+"and can be turned off with <option>--no-delink</option>. Configuration "
+"Item: <literal>APT::FTPArchive::DeLinkAct</literal>."
+msgstr ""
+"Realiza el desenlazado. Esta opción activa el desenlazado de los ficheros si "
+"se usa la opción <literal>External-Links</literal>. Esta activa de forma "
+"predeterminada y se puede desactivar mediante <option>--no-delink</option>. "
+"Opción de configuración: <literal>APT::FTPArchive::DeLinkAct</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Perform contents generation. When this option is set and package indexes are "
+"being generated with a cache DB then the file listing will also be extracted "
+"and stored in the DB for later use. When using the generate command this "
+"option also allows the creation of any Contents files. The default is on. "
+"Configuration Item: <literal>APT::FTPArchive::Contents</literal>."
+msgstr ""
+"Realiza la generación de «contents». Cuando se usa esta opción y los índices "
+"de los paquetes se están generando con una base de datos de la caché, el "
+"listado de los ficheros se extraerá también y se almacenará en la base de "
+"datos para su uso posterior. Cuando se usa la orden «generate» esta opción "
+"también permite la creación de cualquier fichero «Contents». Esta activa de "
+"forma predeterminada. Opción de configuración: <literal>APT::FTPArchive::"
+"Contents</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Select the source override file to use with the <literal>sources</literal> "
+"command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</"
+"literal>."
+msgstr ""
+"Selecciona el fichero de fuentes alternativo a usar con la orden "
+"<literal>sources</literal>. Opción de configuración: <literal>APT::"
+"FTPArchive::SourceOverride</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Make the caching databases read only. Configuration Item: <literal>APT::"
+"FTPArchive::ReadOnlyDB</literal>."
+msgstr ""
+"Define los permisos de las bases de datos de la caché como sólo lectura. "
+"Opción de configuración: <literal>APT::FTPArchive::ReadOnlyDB</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Accept in the <literal>packages</literal> and <literal>contents</literal> "
+"commands only package files matching <literal>*_arch.deb</literal> or "
+"<literal>*_all.deb</literal> instead of all package files in the given "
+"path. Configuration Item: <literal>APT::FTPArchive::Architecture</literal>."
+msgstr ""
+"Hace que las órdenes <literal>packages</literal> y <literal>contents</"
+"literal> sólo acepten aquellos paquetes que coinciden con <literal>*_arch."
+"deb</literal> o <literal>*_all.deb</literal>, en lugar de todos los ficheros "
+"de paquete en la ruta dada. Elemento de configuración: <literal>APT::"
+"FTPArchive::Architecture</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"&apt-ftparchive; caches as much as possible of metadata in a cachedb. If "
+"packages are recompiled and/or republished with the same version again, this "
+"will lead to problems as the now outdated cached metadata like size and "
+"checksums will be used. With this option enabled this will no longer happen "
+"as it will be checked if the file was changed. Note that this option is set "
+"to \"<literal>false</literal>\" by default as it is not recommend to upload "
+"multiply versions/builds of a package with the same versionnumber, so in "
+"theory nobody will have these problems and therefore all these extra checks "
+"are useless."
+msgstr ""
+"&apt-ftparchive; almacena tantos metadatos como sea posible en una base de "
+"datos de almacenamiento. Si los paquetes se recompilan o publican otra vez "
+"con la misma versión aparecerán problemas ya que se usarán los metadatos "
+"almacenados y ahora obsoletos tales como el tamaño o la suma de control. "
+"Esta situación se evitará si se activa esta opción ya que se comprobará si "
+"el fichero ha cambiado. Tenga en cuenta que esta opción está definida como "
+"«<literal>false</literal>» por omisión, ya que no se recomienda subir varias "
+"versiones o compilaciones de un paquete con el mismo número de versión, así "
+"que en teoría nadie debería tener problemas y por ello todas estas "
+"comprobaciones adicionales son innecesarias."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This configuration option defaults to \"<literal>true</literal>\" and should "
+"only be set to <literal>\"false\"</literal> if the Archive generated with "
+"&apt-ftparchive; also provides <filename>Translation</filename> files. Note "
+"that the <filename>Translation-en</filename> master file can only be created "
+"in the generate command."
+msgstr ""
+"De forma predeterminada esta opción de configuración se define como "
+"«<literal>true</literal>» y sólo se debería definir como «<literal>false</"
+"literal>» si el archivo de paquetes generado con &apt-ftparchive; también "
+"proporciona ficheros <filename>Translation</filename>. Tenga en cuenta que "
+"el fichero maestro <filename>Translation-en</filename> sólo se puede crear "
+"con la orden «generate»."
+
+#. type: Content of: <refentry><refsect1><para><programlisting>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n"
+msgstr "<command>apt-ftparchive</command> packages <replaceable>directorio</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"To create a compressed Packages file for a directory containing binary "
+"packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Para crear un fichero «Packages» comprimido para un directorio que contenga "
+"paquetes binarios («.deb»): <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+"<command>apt-ftparchive</command> devuelve cero si no hay ningún error, y el "
+"valor 100 en caso de error."
+
+#. type: Attribute 'lang' of: <book>
+#: guide.dbk offline.dbk
+msgid "en"
+msgstr "es"
+
+#. type: Content of: <book><title>
+#: guide.dbk
+msgid "APT User's Guide"
+msgstr "Guía de usuario de APT"
+
+#. type: Content of: <book><bookinfo><authorgroup><author><personname>
+#: guide.dbk offline.dbk
+msgid "Jason Gunthorpe"
+msgstr "Jason Gunthorpe"
+
+#. type: Content of: <book><bookinfo><authorgroup><author><email>
+#: guide.dbk offline.dbk
+msgid "jgg@debian.org"
+msgstr "jgg@debian.org"
+
+#. type: Content of: <book><bookinfo><releaseinfo>
+#: guide.dbk offline.dbk
+msgid "Version &apt-product-version;"
+msgstr ""
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: guide.dbk
+msgid ""
+"This document provides an overview of how to use the APT package manager."
+msgstr ""
+"Este documento ofrece una introducción sobre cómo usar el gestor de paquetes "
+"APT."
+
+#. type: Content of: <book><bookinfo>
+#: guide.dbk
+msgid ""
+"<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+"<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>"
+
+#. type: Content of: <book><bookinfo><legalnotice><title>
+#: guide.dbk offline.dbk
+msgid "License Notice"
+msgstr ""
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk offline.dbk
+msgid ""
+"\"APT\" and this document are free software; you can redistribute them and/"
+"or modify them under the terms of the GNU General Public License as "
+"published by the Free Software Foundation; either version 2 of the License, "
+"or (at your option) any later version."
+msgstr ""
+"APT y este documento son software libre. Se garantiza permiso para copiar, "
+"distribuir y modificar este documento según los términos de la GNU General "
+"Public License publicada por la Free Software Foundation, ya sea en su "
+"versión 2 o (a su elección) cualquier versión posterior."
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk offline.dbk
+msgid ""
+"For more details, on Debian systems, see the file /usr/share/common-licenses/"
+"GPL for the full license."
+msgstr ""
+"Para más detalles acerca de sistemas Debian y la licencia completa, consulte "
+"el fichero «/usr/share/common-licenses/GPL»."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "General"
+msgstr "General"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The APT package currently contains two sections, the APT <command>dselect</"
+"command> method and the <command>apt-get</command> command line user "
+"interface. Both provide a way to install and remove packages as well as "
+"download new packages from the Internet."
+msgstr ""
+"El paquete APT contiene a día de hoy dos secciones, el método "
+"<command>dselect</command> y la interfaz de usuario para la línea de órdenes "
+"<command>apt-get</command>. Ambos ofrecen una manera de instalar y "
+"desinstalar paquetes, así como descargar paquetes nuevos de Internet."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Anatomy of the Package System"
+msgstr "Anatomía del sistema de paquetes"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The Debian packaging system has a large amount of information associated "
+"with each package to help assure that it integrates cleanly and easily into "
+"the system. The most prominent of its features is the dependency system."
+msgstr ""
+"El sistema de empaquetado de Debian tiene una gran cantidad de información "
+"asociada a cada paquete para asegurar una integración sencilla y limpia en "
+"el sistema. La característica más importante es el sistema de dependencias."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The dependency system allows individual programs to make use of shared "
+"elements in the system such as libraries. It simplifies placing infrequently "
+"used portions of a program in separate packages to reduce the number of "
+"things the average user is required to install. Also, it allows for choices "
+"in mail transport agents, X servers and so on."
+msgstr ""
+"El sistema de dependencias permite el uso de elementos compartidos en el "
+"sistema por programas individuales, tales como bibliotecas. Ésto simplifica "
+"ubicar porciones poco usadas de programas en distintos paquetes para así "
+"reducir el número de cosas que el usuario medio tiene que instalar. También "
+"permite elegir el agente de transporte del correo electrónico, el servidor "
+"de X y demás."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The first step to understanding the dependency system is to grasp the "
+"concept of a simple dependency. The meaning of a simple dependency is that a "
+"package requires another package to be installed at the same time to work "
+"properly."
+msgstr ""
+"El primer paso para entender el sistema de dependencias es familiarizarse "
+"con el concepto de dependencia simple. El significado de una dependencia "
+"simple es que un paquete requiere que otro también esté instalado para poder "
+"funcionar correctamente."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"For instance, mailcrypt is an emacs extension that aids in encrypting email "
+"with GPG. Without GPGP installed mailcrypt is useless, so mailcrypt has a "
+"simple dependency on GPG. Also, because it is an emacs extension it has a "
+"simple dependency on emacs, without emacs it is completely useless."
+msgstr ""
+"Por ejemplo, mailcrypt es una extensión de emacs que asiste en el cifrado de "
+"correo con GPG. Sin GPG, mailcrypt es inservible, y por ello mailcrypt tiene "
+"una dependencia simple con GPG. Como también es una extensión de emacs tiene "
+"una dependencia simple con emacs, ya que sin él mailcrypt es inservible."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The other important dependency to understand is a conflicting dependency. It "
+"means that a package, when installed with another package, will not work and "
+"may possibly be extremely harmful to the system. As an example consider a "
+"mail transport agent such as sendmail, exim or qmail. It is not possible to "
+"have two mail transport agents installed because both need to listen to the "
+"network to receive mail. Attempting to install two will seriously damage the "
+"system so all mail transport agents have a conflicting dependency with all "
+"other mail transport agents."
+msgstr ""
+"Otra importante dependencia que debe entender es la dependencia de "
+"conflicto. Esto se produce cuando se instala un paquete junto con otro de "
+"modo que la combinación los hace inservibles, pudiendo causar daños en el "
+"sistema. Como ejemplo, suponga un agente de transporte de correo electrónico "
+"como sendmail, exim o qmail. Es imposible tener dos agentes de transporte de "
+"correo instalados ya que ambos necesitan una conexión con la red para "
+"recibir correo. El intento de instalar dos puede dañar gravemente el "
+"sistema, y por ello todos los agentes de transporte de correo tienen una "
+"dependencia de conflicto con todos los demás."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"As an added complication there is the possibility for a package to pretend "
+"to be another package. Consider that exim and sendmail for many intents are "
+"identical, they both deliver mail and understand a common interface. Hence, "
+"the package system has a way for them to declare that they are both mail-"
+"transport-agents. So, exim and sendmail both declare that they provide a "
+"mail-transport-agent and other packages that need a mail transport agent "
+"depend on mail-transport-agent. This can add a great deal of confusion when "
+"trying to manually fix packages."
+msgstr ""
+"Para complicarlo todo, cabe la posibilidad de que un paquete pretenda ser "
+"otro. En muchos aspectos, exim y sendmail son idénticos; ambos envían correo "
+"y entienden una misma interfaz. Por ello, el sistema de paquetes tiene una "
+"forma de hacer que ambos declaren ser agentes de transporte de correo («mail-"
+"transport-agent»). Así, exim y sendmail declaran que proporcionan un agente "
+"de transporte de correo y los paquetes que dependen de tales agentes "
+"dependerán de «mail-transport-agent». Esto puede añadir confusión al "
+"intentar arreglar paquetes manualmente."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"At any given time a single dependency may be met by packages that are "
+"already installed or it may not be. APT attempts to help resolve dependency "
+"issues by providing a number of automatic algorithms that help in selecting "
+"packages for installation."
+msgstr ""
+"Puede que en cualquier momento una dependencia simple se satisfaga por "
+"paquetes ya instalados, o que la dependencia no esté satisfecha. APT intenta "
+"asistir en la resolución de problemas de dependencias mediante un número de "
+"algoritmos automáticos que ayudan en la selección de paquetes a instalar."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "apt-get"
+msgstr "apt-get"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"<command>apt-get</command> provides a simple way to install packages from "
+"the command line. Unlike <command>dpkg</command>, <command>apt-get</command> "
+"does not understand .deb files, it works with the package's proper name and "
+"can only install .deb archives from a <emphasis>Source</emphasis>."
+msgstr ""
+"<command>apt-get</command> ofrece una forma sencilla de instalar paquetes "
+"desde la línea de órdenes. A diferencia de <command>dpkg</command>, "
+"<command>apt-get</command> no intenta comprender los ficheros «.deb», sino "
+"que funciona con el nombre real del paquete y sólo puede instalar ficheros «."
+"deb» desde una <emphasis>fuente</emphasis>."
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk
+msgid ""
+"If you are using an http proxy server you must set the http_proxy "
+"environment variable first, see sources.list(5)"
+msgstr ""
+"Si está usando un servidor proxy primero debe definir la variable de entorno "
+"http_proxy, consulte sources.list (5)."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The first <placeholder type=\"footnote\" id=\"0\"/> thing that should be "
+"done before using <command>apt-get</command> is to fetch the package lists "
+"from the <emphasis>Sources</emphasis> so that it knows what packages are "
+"available. This is done with <literal>apt-get update</literal>. For instance,"
+msgstr ""
+"La primera <placeholder type=\"footnote\" id=\"0\"/> cosa que debería hacer "
+"antes de usar <command>apt-get</command> es obtener las listas de paquetes "
+"desde las <emphasis>fuentes</emphasis> para así conocer los paquetes "
+"disponibles. Puede hacer esto mediante <literal>apt-get update</literal>. "
+"Por ejemplo,"
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+"# apt-get update\n"
+"Des http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Des http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Leyendo lista de paquetes... Hecho\n"
+"Creando árbol de dependencias... Hecho\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid "Once updated there are several commands that can be used:"
+msgstr "Puede usar varias órdenes después de actualizar:"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "upgrade"
+msgstr "upgrade"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Upgrade will attempt to gently upgrade the whole system. Upgrade will never "
+"install a new package or remove an existing package, nor will it ever "
+"upgrade a package that might cause some other package to break. This can be "
+"used daily to relatively safely upgrade the system. Upgrade will list all of "
+"the packages that it could not upgrade, this usually means that they depend "
+"on new packages or conflict with some other package. <command>dselect</"
+"command> or <literal>apt-get install</literal> can be used to force these "
+"packages to install."
+msgstr ""
+"«upgrade» intentará actualizar con cuidado todo el sistema. «upgrade» nunca "
+"intentará instalar un paquete nuevo o eliminar un paquete existente, y en "
+"ningún caso actualizará un paquete que pueda causar un problema de "
+"dependencias rotas a otro paquete. «upgrade» mostrará todos los paquetes que "
+"no pudo actualizar, lo cual generalmente significa que dependen de paquetes "
+"nuevos o que entran en conflicto con otro paquete. Puede usar "
+"<command>dselect</command> o <literal>apt-get install</literal> para forzar "
+"la instalación de tales paquetes."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "install"
+msgstr "install"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Install is used to install packages by name. The package is automatically "
+"fetched and installed. This can be useful if you already know the name of "
+"the package to install and do not want to go into a GUI to select it. Any "
+"number of packages may be passed to install, they will all be fetched. "
+"Install automatically attempts to resolve dependency problems with the "
+"listed packages and will print a summary and ask for confirmation if "
+"anything other than its arguments are changed."
+msgstr ""
+"«install» se usa para instalar paquetes por nombre. El paquete se obtendrá e "
+"instalará automáticamente. Es de utilidad si ya conoce el nombre del paquete "
+"a instalar y no desea ejecutar una interfaz gráfica para seleccionarlo. "
+"Puede introducir cualquier número de paquetes para su instalación y todos se "
+"obtendrán. La instalación automática intenta resolver problemas de "
+"dependencias con los paquetes listados, y mostrará un resumen al pedir una "
+"confirmación en caso de modificar cualquiera de los argumentos introducidos."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "dist-upgrade"
+msgstr "dist-upgrade"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Dist-upgrade is a complete upgrader designed to simplify upgrading between "
+"releases of Debian. It uses a sophisticated algorithm to determine the best "
+"set of packages to install, upgrade and remove to get as much of the system "
+"to the newest release. In some situations it may be desired to use dist-"
+"upgrade rather than spend the time manually resolving dependencies in "
+"<command>dselect</command>. Once dist-upgrade has completed then "
+"<command>dselect</command> can be used to install any packages that may have "
+"been left out."
+msgstr ""
+"«dist-upgrade» es una actualizador completo diseñado para simplificar la "
+"actualización entre publicaciones de Debian. Utiliza un sofisticado "
+"algoritmo para diseñar el mejor conjunto de paquetes a instalar, actualizar "
+"y eliminar para así obtener cuanto sea posible de la última publicación. "
+"Puede que en algunas situaciones desee usar «dist-upgrade» en lugar de pasar "
+"tiempo resolviendo dependencias con <command>dselect</command>. Puede usar "
+"<command>dselect</command> para instalar cualquier paquete que se haya "
+"quedado atrás."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"It is important to closely look at what dist-upgrade is going to do, its "
+"decisions may sometimes be quite surprising."
+msgstr ""
+"Es importante revisar lo que «dist-upgrade» planea hacer, ya que sus "
+"decisiones a veces pueden resultar sorprendentes."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"<command>apt-get</command> has several command line options that are "
+"detailed in its man page, <citerefentry><refentrytitle>apt-get</"
+"refentrytitle><manvolnum>8</manvolnum></citerefentry>. The most useful "
+"option is <literal>-d</literal> which does not install the fetched files. If "
+"the system has to download a large number of package it would be undesired "
+"to start installing them in case something goes wrong. When <literal>-d</"
+"literal> is used the downloaded archives can be installed by simply running "
+"the command that caused them to be downloaded again without <literal>-d</"
+"literal>."
+msgstr ""
+"<command>apt-get</command> ofrece varias opciones de línea de órdenes "
+"detalladas en su página de manual, <citerefentry><refentrytitle>apt-get</"
+"refentrytitle><manvolnum>8</manvolnum></citerefentry>. La opción más útil es "
+"<literal>-d</literal>, que no instala los ficheros obtenidos. Puede que no "
+"desee instalar los paquetes de inicio si el sistema se tiene que descargar "
+"un gran número de éstos, en caso de que algo vaya mal. Cuando usa <literal>-"
+"d</literal> puede instalar los ficheros descargados simplemente ejecutando "
+"la orden que provocó su descarga, sin <literal>-d</literal>."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "DSelect"
+msgstr "DSelect"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The APT <command>dselect</command> method provides the complete APT system "
+"with the <command>dselect</command> package selection GUI. <command>dselect</"
+"command> is used to select the packages to be installed or removed and APT "
+"actually installs them."
+msgstr ""
+"El método <command>dselect</command> de APT ofrece el sistema completo de "
+"APT con la interfaz gráfica de selección de paquetes <command>dselect</"
+"command>. <command>dselect</command> se usa para seleccionar los paquetes a "
+"instalar o desinstalar que en realidad instalará APT."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"To enable the APT method you need to select [A]ccess in <command>dselect</"
+"command> and then choose the APT method. You will be prompted for a set of "
+"<emphasis>Sources</emphasis> which are places to fetch archives from. These "
+"can be remote Internet sites, local Debian mirrors or CD-ROMs. Each source "
+"can provide a fragment of the total Debian archive, APT will automatically "
+"combine them to form a complete set of packages. If you have a CD-ROM then "
+"it is a good idea to specify it first and then specify a mirror so that you "
+"have access to the latest bug fixes. APT will automatically use packages on "
+"your CD-ROM before downloading from the Internet."
+msgstr ""
+"Para habilitar el método APT tiene que seleccionar [M]étodo en "
+"<command>dselect</command>, y después seleccionar el método APT. Se le "
+"pedirá un conjunto de <emphasis>fuentes</emphasis>, ubicaciones de donde "
+"obtener los ficheros. Pueden ser sitios remotos de Internet, replicas "
+"locales de Debian o discos ópticos. Cada fuente puede proporcionar un "
+"fragmento del total del archivo Debian, los cuales APT combinará "
+"automáticamente para formar un conjunto completo de paquetes. Si tiene un "
+"disco óptico es una buena idea definirlo primero en el fichero de "
+"configuración y después especificar una replica para así tener acceso a los "
+"últimos arreglos de fallos. APT usará automáticamente los paquetes del disco "
+"óptico en lugar de descargarlos de Internet."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Set up a list of distribution source locations\n"
+"\n"
+" Please give the base URL of the debian distribution.\n"
+" The access schemes I know about are: http file\n"
+"\n"
+" For example:\n"
+" file:/mnt/debian,\n"
+" ftp://ftp.debian.org/debian,\n"
+" http://ftp.de.debian.org/debian,\n"
+"\n"
+"\n"
+" URL [http://llug.sep.bnl.gov/debian]:\n"
+msgstr ""
+" Set up a list of distribution source locations\n"
+"\n"
+" Please give the base URL of the debian distribution.\n"
+" The access schemes I know about are: http file\n"
+"\n"
+" For example:\n"
+" file:/mnt/debian,\n"
+" ftp://ftp.debian.org/debian,\n"
+" http://ftp.de.debian.org/debian,\n"
+"\n"
+"\n"
+" URL [http://llug.sep.bnl.gov/debian]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The <emphasis>Sources</emphasis> setup starts by asking for the base of the "
+"Debian archive, defaulting to a HTTP mirror. Next it asks for the "
+"distribution to get."
+msgstr ""
+"La configuración de las <emphasis>fuentes</emphasis> comienza preguntando la "
+"base del archivo de Debian, cuyo valor predeterminado es una réplica HTTP. A "
+"continuación, preguntará la distribución a obtener."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Please give the distribution tag to get or a path to the\n"
+" package file ending in a /. The distribution\n"
+" tags are typically something like: stable unstable testing non-US\n"
+"\n"
+" Distribution [stable]:\n"
+msgstr ""
+" Please give the distribution tag to get or a path to the\n"
+" package file ending in a /. The distribution\n"
+" tags are typically something like: stable unstable testing non-US\n"
+"\n"
+" Distribution [stable]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The distribution refers to the Debian version in the archive, "
+"<emphasis>stable</emphasis> refers to the latest released version and "
+"<emphasis>unstable</emphasis> refers to the developmental version. "
+"<emphasis>non-US</emphasis> is only available on some mirrors and refers to "
+"packages that contain encryption technology or other things that cannot be "
+"exported from the United States. Importing these packages into the US is "
+"legal however."
+msgstr ""
+"La distribución se refiere a la versión de Debian en el archivo, "
+"<emphasis>stable</emphasis> (estable) se refiere a la última versión "
+"publicada, y <emphasis>unstable</emphasis> (inestable) se refiere a la "
+"versión en desarrollo. <emphasis>non-US</emphasis> sólo está disponible en "
+"algunas réplicas, aquellos paquetes que contienen tecnología cifrada y otras "
+"cosas que no se pueden exportar desde los Estados Unidos. Aun así, importar "
+"estos paquetes a E.E.U.U es ilegal."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Please give the components to get\n"
+" The components are typically something like: main contrib non-free\n"
+"\n"
+" Components [main contrib non-free]:\n"
+msgstr ""
+" Please give the components to get\n"
+" The components are typically something like: main contrib non-free\n"
+"\n"
+" Components [main contrib non-free]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The components list refers to the list of sub distributions to fetch. The "
+"distribution is split up based on software licenses, main being DFSG free "
+"packages while contrib and non-free contain things that have various "
+"restrictions placed on their use and distribution."
+msgstr ""
+"La lista de componentes se refiere a la lista de sub-distribuciones a "
+"obtener. La distribución está dividida en base a licencias de software, "
+"siendo «main» paquetes libres de acuerdo con DFSG, mientras que «contrib» y "
+"«non-free» contienen paquetes con restricciones en cuanto a su uso y "
+"distribución."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Any number of sources can be added, the setup script will continue to prompt "
+"until you have specified all that you want."
+msgstr ""
+"Puede añadir cualquier número de fuentes, el script de configuración le "
+"preguntará por fuentes hasta que el usuario defina todo lo que quiera."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Before starting to use <command>dselect</command> it is necessary to update "
+"the available list by selecting [U]pdate from the menu. This is a superset "
+"of <literal>apt-get update</literal> that makes the fetched information "
+"available to <command>dselect</command>. [U]pdate must be performed even if "
+"<literal>apt-get update</literal> has been run before."
+msgstr ""
+"Es necesario actualizar la lista disponible mediante el elemento de menú "
+"[A]ctualizar antes de iniciar <command>dselect</command>. Éste es un "
+"superconjunto de <literal>apt-get update</literal> que permite a "
+"<command>dselect</command> disponer de la información obtenida. Debe "
+"ejecutar [A]ctualizar aunque haya ejecutado <literal>apt-get update</"
+"literal> con anterioridad."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"You can then go on and make your selections using [S]elect and then perform "
+"the installation using [I]nstall. When using the APT method the [C]onfig and "
+"[R]emove commands have no meaning, the [I]nstall command performs both of "
+"them together."
+msgstr ""
+"Hecho esto puede realizar sus selecciones usando [S]elect y ejecutar la "
+"instalación posteriormente con [I]nstall. Al usar el método APT las órdenes "
+"[C]onfig y [R]emove carecen de significado ya que la orden [I]nstall ejecuta "
+"ambos a la vez."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"By default APT will automatically remove the package (.deb) files once they "
+"have been successfully installed. To change this behavior place "
+"<literal>Dselect::clean \"prompt\";</literal> in /etc/apt/apt.conf."
+msgstr ""
+"Por omisión, APT eliminará automáticamente los ficheros de paquete («.deb») "
+"una vez que se hayan instalado con éxito. Para modificar este "
+"comportamiento, inserte <literal>Dselect::clean \"prompt\";</literal> en «/"
+"etc/apt/apt.conf»."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "The Interface"
+msgstr "La interfaz"
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk
+msgid ""
+"The <command>dselect</command> method actually is a set of wrapper scripts "
+"to <command>apt-get</command>. The method actually provides more "
+"functionality than is present in <command>apt-get</command> alone."
+msgstr ""
+"El método <command>dselect</command> es en realidad un conjunto de scripts "
+"en torno a <command>apt-get</command>. En realidad, el método ofrece más "
+"funcionalidad que la presente en <command>apt-get</command> por si mismo."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Both that APT <command>dselect</command> method and <command>apt-get</"
+"command> share the same interface. It is a simple system that generally "
+"tells you what it will do and then goes and does it. <placeholder type="
+"\"footnote\" id=\"0\"/> After printing out a summary of what will happen APT "
+"then will print out some informative status messages so that you can "
+"estimate how far along it is and how much is left to do."
+msgstr ""
+"El método <command>dselect</command> de APT y <command>apt-get</command> "
+"comparten la misma interfaz. Es un sencillo programa que le informa de lo "
+"que va a hacer, para después llevarlo a cabo. <placeholder type=\"footnote\" "
+"id=\"0\"/> Después de mostrar el resumen de lo que va a pasar APT mostrará "
+"mensajes de estado informativos para ofrecer una estimación de cuánto queda "
+"por hacer."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Startup"
+msgstr "Arranque"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Before all operations except update, APT performs a number of actions to "
+"prepare its internal state. It also does some checks of the system's state. "
+"At any time these operations can be performed by running <literal>apt-get "
+"check</literal>."
+msgstr ""
+"APT realiza un número de acciones para preparar su estado interno antes de "
+"cualquier operación, a excepción de «update». También realiza algunas "
+"revisiones del estado del sistema. Puede llevar a cabo estas acciones en "
+"cualquier momento ejecutando <literal>apt-get check</literal>."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+"# apt-get check\n"
+"Leyendo lista de paquetes... Hecho\n"
+"Creando árbol de dependencias... Hecho\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The first thing it does is read all the package files into memory. APT uses "
+"a caching scheme so this operation will be faster the second time it is run. "
+"If some of the package files are not found then they will be ignored and a "
+"warning will be printed when apt-get exits."
+msgstr ""
+"La primera acción que ejecuta es pasar todos los ficheros de paquete a la "
+"memoria. APT usa un esquema de almacenado con lo cual esta operación será "
+"más rápida la segunda vez que la ejecute. De no encontrar algún fichero de "
+"paquete, éstos se ignorarán y verá una advertencia al finalizar apt-get."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The final operation performs a detailed analysis of the system's "
+"dependencies. It checks every dependency of every installed or unpacked "
+"package and considers if it is OK. Should this find a problem then a report "
+"will be printed out and <command>apt-get</command> will refuse to run."
+msgstr ""
+"La última acción realiza un detallado análisis de las dependencias del "
+"sistema. Revisa cada dependencia de cada paquete instalado o sin "
+"desempaquetar analiza su validación. En caso de error aparecerá un informe, "
+"y <command>apt-get</command> se negará a ejecutarse."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+"You might want to run 'apt --fix-broken install' to correct these.\n"
+"Sorry, but the following packages have unmet dependencies:\n"
+" 9fonts: Depends: xlib6g but it is not installed\n"
+" uucp: Depends: mailx but it is not installed\n"
+" blast: Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" adduser: Depends: perl-base but it is not installed\n"
+" aumix: Depends: libgpmg1 but it is not installed\n"
+" debiandoc-sgml: Depends: sgml-base but it is not installed\n"
+" bash-builtins: Depends: bash (&gt;= 2.01) but 2.0-3 is installed\n"
+" cthugha: Depends: svgalibg1 but it is not installed\n"
+" Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" libreadlineg2: Conflicts:libreadline2 (&lt;&lt; 2.1-2.1)\n"
+msgstr ""
+"# apt-get check\n"
+"Leyendo lista de paquetes... Hecho\n"
+"Creando árbol de dependencias... Hecho\n"
+"Tal vez quiera ejecutar 'apt --fix-broken install' para corregirlo.\n"
+"Los siguientes paquetes tienen dependencias incumplidas:\n"
+" 9fonts: Depende: xlib6g pero no está instalado\n"
+" uucp: Depende: mailx pero no está instalado\n"
+" blast: Depende: xlib6g (&gt;= 3.3-5) pero no está instalado\n"
+" adduser: Depende: perl-base pero no está instalado\n"
+" aumix: Depende: libgpmg1 pero no está instalado\n"
+" debiandoc-sgml: Depende: sgml-base pero no está instalado\n"
+" bash-builtins: Depende: bash (&gt;= 2.01) pero 2.0-3 está instalado\n"
+" cthugha: Depende: svgalibg1 pero no está instalado\n"
+" Depende: xlib6g (&gt;= 3.3-5) pero no está instalado\n"
+" libreadlineg2: Entra en conflicto:libreadline2 (&lt;&lt; 2.1-2.1)\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"In this example the system has many problems, including a serious problem "
+"with libreadlineg2. For each package that has unmet dependencies a line is "
+"printed out indicating the package with the problem and the dependencies "
+"that are unmet. A short explanation of why the package has a dependency "
+"problem is also included."
+msgstr ""
+"En este ejemplo el sistema tiene varios problemas, incluyendo un serio "
+"problema con libreadlineg2. Una línea aparecerá por cada paquete con "
+"dependencias no satisfechas indicando el paquete con el problema y las "
+"dependencias no satisfechas. También incluye una explicación de porqué el "
+"paquete tiene un problema de dependencias."
+
+#. type: Content of: <book><chapter><section><para><footnote><para>
+#: guide.dbk
+msgid ""
+"APT however considers all known dependencies and attempts to prevent broken "
+"packages"
+msgstr ""
+"APT, de todas formas, considera todas las dependencias conocidas e intenta "
+"prevenir paquetes rotos"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"There are two ways a system can get into a broken state like this. The first "
+"is caused by <command>dpkg</command> missing some subtle relationships "
+"between packages when performing upgrades. <placeholder type=\"footnote\" id="
+"\"0\"/>. The second is if a package installation fails during an operation. "
+"In this situation a package may have been unpacked without its dependents "
+"being installed."
+msgstr ""
+"Hay dos formas de que el sistema tenga un estado roto como éste. El primero "
+"es causado por la omisión de <command>dpkg</command> de ciertas relaciones "
+"delicadas entre paquetes al realizar una actualización. <placeholder type="
+"\"footnote\" id=\"0\"/>. El segundo ocurre se la instalación de un paquete "
+"falla durante la operación. En esta situación puede que un paquete se haya "
+"desempaquetado sin que sus dependencias estuviesen instaladas previamente."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The second situation is much less serious than the first because APT places "
+"certain constraints on the order that packages are installed. In both cases "
+"supplying the <literal>-f</literal> option to <command>apt-get</command> "
+"will cause APT to deduce a possible solution to the problem and then "
+"continue on. The APT <command>dselect</command> method always supplies the "
+"<literal>-f</literal> option to allow for easy continuation of failed "
+"maintainer scripts."
+msgstr ""
+"La segunda situación es mucho menos grave que la primera ya que APT define "
+"ciertos límites en el orden de instalación de los paquetes. En ambos casos, "
+"introducir la opción <literal>-f</literal> a <command>apt-get</command> "
+"causará que APT deduzca una posible solución al problema para después "
+"continuar. El método <command>dselect</command> de APT siempre ofrece la "
+"opción <literal>-f</literal> para permitir una fácil continuación cuando "
+"existen scripts fallidos del mantenedor."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"However, if the <literal>-f</literal> option is used to correct a seriously "
+"broken system caused by the first case then it is possible that it will "
+"either fail immediately or the installation sequence will fail. In either "
+"case it is necessary to manually use dpkg (possibly with forcing options) to "
+"correct the situation enough to allow APT to proceed."
+msgstr ""
+"Aún así, de usar la opción <literal>-f</literal> para corregir un sistema "
+"gravemente roto por el primer caso cabe que la acción falle inmediatamente o "
+"que la secuencia de instalación se interrumpa. En cualquier caso es "
+"necesario usar dpkg manualmente (puede que con opciones de forzado) para "
+"corregir la situación lo suficiente como para que APT pueda continuar."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "The Status Report"
+msgstr "El informe de estado"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Before proceeding <command>apt-get</command> will present a report on what "
+"will happen. Generally the report reflects the type of operation being "
+"performed but there are several common elements. In all cases the lists "
+"reflect the final state of things, taking into account the <literal>-f</"
+"literal> option and any other relevant activities to the command being "
+"executed."
+msgstr ""
+"Antes de proceder <command>apt-get</command> presentará un informe de lo que "
+"va a ocurrir. Generalmente el informe refleja el tipo de operación a "
+"realizar, pero hay ciertos elementos comunes. La lista refleja el estado "
+"final de las cosas en todos los casos, teniendo en cuenta la opción "
+"<literal>-f</literal> y cualquier otra actividad relevante a la orden "
+"ejecutada."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Extra Package list"
+msgstr "La lista de paquetes extras"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following extra packages will be installed:\n"
+" libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl\n"
+" mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base\n"
+" bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy\n"
+" squake pgp-i python-base debmake ldso perl libreadlineg2\n"
+" ssh\n"
+msgstr ""
+"Se instalarán los siguientes paquetes extras:\n"
+" libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl\n"
+" mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base\n"
+" bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy\n"
+" squake pgp-i python-base debmake ldso perl libreadlineg2\n"
+" ssh\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The Extra Package list shows all of the packages that will be installed or "
+"upgraded in excess of the ones mentioned on the command line. It is only "
+"generated for an <literal>install</literal> command. The listed packages are "
+"often the result of an Auto Install."
+msgstr ""
+"La lista de paquetes extras muestra todos los paquetes que se van a instalar "
+"o actualizar en adición a aquellos mencionados en la línea de órdenes. Sólo "
+"se genera para la orden <literal>install</literal>. Generalmente, los "
+"paquetes listados son el resultado de una instalación automática."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Packages to Remove"
+msgstr "Los paquetes a eliminar"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following packages will be REMOVED:\n"
+" xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix\n"
+" xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel\n"
+" xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid\n"
+" nas xpilot xfig\n"
+msgstr ""
+"Los siguientes paquetes se ELIMINARÃN:\n"
+" xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix\n"
+" xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel\n"
+" xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid\n"
+" nas xpilot xfig\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The Packages to Remove list shows all of the packages that will be removed "
+"from the system. It can be shown for any of the operations and should be "
+"given a careful inspection to ensure nothing important is to be taken off. "
+"The <literal>-f</literal> option is especially good at generating packages "
+"to remove so extreme care should be used in that case. The list may contain "
+"packages that are going to be removed because they are only partially "
+"installed, possibly due to an aborted installation."
+msgstr ""
+"La lista de paquetes a eliminar muestra todos los paquetes que se van a "
+"eliminar del sistema. Puede aparecer durante cualquier operación, y se "
+"debería revisar cuidadosamente para asegurar que no se va a eliminar nada "
+"importante. La opción <literal>-f</literal> puede generar varios paquetes a "
+"eliminar así que se debe utilizar con precaución. La lista puede contener "
+"paquetes a eliminar porque están parcialmente instalados, posiblemente "
+"debido a una instalación interrumpida."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The New Packages list"
+msgstr "La lista de paquetes nuevos"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following NEW packages will installed:\n"
+" zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base\n"
+msgstr ""
+"Se instalarán los siguientes paquetes NUEVOS:\n"
+" zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The New Packages list is simply a reminder of what will happen. The packages "
+"listed are not presently installed in the system but will be when APT is "
+"done."
+msgstr ""
+"La lista de paquetes nuevos es sólo un recordatorio de lo que va a ocurrir. "
+"Los paquetes listados no se encuentran instalados en el sistema pero lo "
+"estarán cuando APT finalice."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Kept Back list"
+msgstr "La lista de paquetes retenidos"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following packages have been kept back\n"
+" compface man-db tetex-base msql libpaper svgalib1\n"
+" gs snmp arena lynx xpat2 groff xscreensaver\n"
+msgstr ""
+"Los siguientes paquetes se han retenido:\n"
+" compface man-db tetex-base msql libpaper svgalib1\n"
+" gs snmp arena lynx xpat2 groff xscreensaver\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Whenever the whole system is being upgraded there is the possibility that "
+"new versions of packages cannot be installed because they require new things "
+"or conflict with already installed things. In this case the package will "
+"appear in the Kept Back list. The best way to convince packages listed there "
+"to install is with <literal>apt-get install</literal> or by using "
+"<command>dselect</command> to resolve their problems."
+msgstr ""
+"Puede que al actualizar el sistema por completo no se puedan instalar "
+"versiones nuevas de paquetes porque requieren nuevos elementos que entran en "
+"conflicto con paquetes ya instalados. En este caso, el paquete aparecerá en "
+"la lista de paquetes retenidos. La mejor manera de instalar paquetes "
+"listados aquí es mediante <literal>apt-get install</literal> o mediante "
+"<command>dselect</command> para así resolver esos problemas."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "Held Packages warning"
+msgstr "Advertencia de paquetes retenidos"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following held packages will be changed:\n"
+" cvs\n"
+msgstr ""
+"Se cambiarán los siguientes paquetes retenidos:\n"
+" cvs\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Sometimes you can ask APT to install a package that is on hold, in such a "
+"case it prints out a warning that the held package is going to be changed. "
+"This should only happen during dist-upgrade or install."
+msgstr ""
+"Puede que a veces ordene a APT que instale un paquete retenido, en cuyo caso "
+"verá una advertencia de que el paquete retenido se va a modificar. Esto sólo "
+"debería ocurrir durante un «dist-upgrade» o un «install»."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "Final summary"
+msgstr "Resumen final"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Finally, APT will print out a summary of all the changes that will occur."
+msgstr ""
+"Por último, APT mostrará un resumen de los cambios que se llevarán a cabo."
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"206 packages upgraded, 8 newly installed, 23 to remove and 51 not upgraded.\n"
+"12 packages not fully installed or removed.\n"
+"Need to get 65.7M/66.7M of archives. After unpacking 26.5M will be used.\n"
+msgstr ""
+"206 paquetes actualizados, 8 se instalarán, 23 para eliminar y 51 no\n"
+"actualizados.\n"
+"12 paquetes no instalados del todo o eliminados.\n"
+"Se necesita descargar 65.7M/66.7M de archivos. Se usarán 26.5M después de desempaquetar.\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The first line of the summary simply is a reduced version of all of the "
+"lists and includes the number of upgrades - that is packages already "
+"installed that have new versions available. The second line indicates the "
+"number of poorly configured packages, possibly the result of an aborted "
+"installation. The final line shows the space requirements that the "
+"installation needs. The first pair of numbers refer to the size of the "
+"archive files. The first number indicates the number of bytes that must be "
+"fetched from remote locations and the second indicates the total size of all "
+"the archives required. The next number indicates the size difference between "
+"the presently installed packages and the newly installed packages. It is "
+"roughly equivalent to the space required in /usr after everything is done. "
+"If a large number of packages are being removed then the value may indicate "
+"the amount of space that will be freed."
+msgstr ""
+"La primera línea del resumen es simplemente una versión reducida de todas "
+"las listas e incluye el número de actualizaciones, esto es, paquetes ya "
+"instalados y de los cuales existen versiones nuevas disponibles. La segunda "
+"línea indica el número de paquetes mal configurados, posiblemente el "
+"resultado de una instalación interrumpida. La última línea muestra los "
+"requerimientos de espacio para la instalación. El primer par de números "
+"indican el tamaño de los ficheros del archivo. El primer número indica el "
+"número de bytes que se tienen que obtener de ubicaciones remotas, y el "
+"segundo indica el tamaño total de todos los archivos requeridos. El "
+"siguiente número indica la diferencia de tamaño entre los paquetes "
+"instalados y los paquetes nuevos a instalar. Básicamente equivale al espacio "
+"requerido en «/usr» al finalizar el proceso. En caso de existir varios "
+"paquetes a eliminar el valor puede indicar la cantidad de espacio que se va "
+"a liberar."
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Some other reports can be generated by using the -u option to show packages "
+"to upgrade, they are similar to the previous examples."
+msgstr ""
+"Puede generar otros informes con la opción «-u» para mostrar los paquetes a "
+"actualizar, similar a los ejemplos anteriores."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "The Status Display"
+msgstr "La pantalla de estado"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"During the download of archives and package files APT prints out a series of "
+"status messages."
+msgstr ""
+"APT muestra una serie de mensajes de estado en el transcurso de descargar "
+"ficheros de paquete y archivo."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+"11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
+msgstr ""
+"# apt-get update\n"
+"Des:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Des:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Obj http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+"Des:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"es:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+"11% [5 testing/non-free Esperando las cabeceras 0/32.1k 0%] 2203b/s 1m52s\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The lines starting with <emphasis>Get</emphasis> are printed out when APT "
+"begins to fetch a file while the last line indicates the progress of the "
+"download. The first percent value on the progress line indicates the total "
+"percent done of all files. Unfortunately since the size of the Package files "
+"is unknown <literal>apt-get update</literal> estimates the percent done "
+"which causes some inaccuracies."
+msgstr ""
+"Las líneas comenzando con <emphasis>Des</emphasis> aparecen cuando APT "
+"inicia la obtención de un fichero, mientras que la última línea indica el "
+"progreso de la descarga. El primer valor porcentual en la barra de progreso "
+"indica el porcentaje total de los ficheros ya descargados. "
+"Desafortunadamente, <literal>apt-get update</literal> desconoce el tamaño de "
+"los ficheros de paquete y por ello genera una estimación que puede ser "
+"inexacta."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The next section of the status line is repeated once for each download "
+"thread and indicates the operation being performed and some useful "
+"information about what is happening. Sometimes this section will simply read "
+"<emphasis>Forking</emphasis> which means the OS is loading the download "
+"module. The first word after the [ is the fetch number as shown on the "
+"history lines. The next word is the short form name of the object being "
+"downloaded. For archives it will contain the name of the package that is "
+"being fetched."
+msgstr ""
+"La siguiente sección de la línea de estado se repite por cada instancia de "
+"descarga e indica la operación realizada, así como información útil relativa "
+"a lo que está pasando. Puede que esta sección sólo muestre "
+"<emphasis>Forking</emphasis>, lo cual significa que el sistema operativo "
+"está cargando el módulo de descargas. La primera palabra después de «[» es "
+"el número de obtención tal y como se muestra en la línea del histórico. La "
+"siguiente palabra es la forma corta del nombre del objeto en descarga. Al "
+"conectarse con los archivos, contendrá el nombre del paquete obtenido."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Inside of the single quote is an informative string indicating the progress "
+"of the negotiation phase of the download. Typically it progresses from "
+"<emphasis>Connecting</emphasis> to <emphasis>Waiting for file</emphasis> to "
+"<emphasis>Downloading</emphasis> or <emphasis>Resuming</emphasis>. The final "
+"value is the number of bytes downloaded from the remote site. Once the "
+"download begins this is represented as <literal>102/10.2k</literal> "
+"indicating that 102 bytes have been fetched and 10.2 kilobytes is expected. "
+"The total size is always shown in 4 figure notation to preserve space. After "
+"the size display is a percent meter for the file itself. The second last "
+"element is the instantaneous average speed. This values is updated every 5 "
+"seconds and reflects the rate of data transfer for that period. Finally is "
+"shown the estimated transfer time. This is updated regularly and reflects "
+"the time to complete everything at the shown transfer rate."
+msgstr ""
+"Una cadena informativa aparecerá entre comillas simples indicando el "
+"progreso de la fase de negociación de la descarga. Generalmente progresa de "
+"<emphasis>Conectando</emphasis> a <emphasis>Esperando fichero</emphasis>, "
+"finalizando con <emphasis>Descargando</emphasis> o <emphasis>Continuando</"
+"emphasis>. El último valor es el número de bytes descargados desde el sitio "
+"remoto. Una vez que la descarga arranque se representará como "
+"<literal>102/10.2k</literal> indicando que ya se han obtenido 102 bytes y "
+"que se esperan 10.2 kilobytes. El tamaño total siempre aparece con la "
+"notación de la figura 4 para conservar espacio. A continuación aparece un "
+"medidor porcentual del fichero. El penúltimo elemento es la media "
+"instantánea de velocidad. Estos valores se actualizan cada 5 segundos y "
+"reflejan la tasa de descarga de datos de ese periodo. Por último puede ver "
+"el tiempo estimado para la transferencia. Esto se actualiza regularmente y "
+"refleja el tiempo restante para completar todo tal y como se ve en la tasa "
+"de transferencia visible."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The status display updates every half second to provide a constant feedback "
+"on the download progress while the Get lines scroll back whenever a new file "
+"is started. Since the status display is constantly updated it is unsuitable "
+"for logging to a file, use the <literal>-q</literal> option to remove the "
+"status display."
+msgstr ""
+"La pantalla de estado se actualiza cada medio segundo para ofrecer una "
+"constante información del progreso de la descarga, mientras que las líneas "
+"«Des» se desplazan hacia atrás cuando se inicia la descarga de otro fichero. "
+"Ya que la pantalla de estado se actualiza constantemente carece de utilidad "
+"para su registro en un fichero. Puede usar la opción <literal>-q</literal> "
+"para omitir la pantalla de estado."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Dpkg"
+msgstr "Dpkg"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"APT uses <command>dpkg</command> for installing the archives and will switch "
+"over to the <command>dpkg</command> interface once downloading is completed. "
+"<command>dpkg</command> will also ask a number of questions as it processes "
+"the packages and the packages themselves may also ask several questions. "
+"Before each question there is usually a description of what it is asking and "
+"the questions are too varied to discuss completely here."
+msgstr ""
+"APT usa <command>dpkg</command> para instalar ficheros, y pasará a "
+"interactuar con <command>dpkg</command> al finalizar la descarga. "
+"<command>dpkg</command> también planteará un número de preguntas a medida "
+"que procesa los paquetes, los cuales también pueden formular preguntas. A "
+"cada pregunta generalmente le precede una descripción de la pregunta en sí. "
+"Éstas son demasiado variadas como para poder tratarlas aquí en su totalidad."
+
+#. type: Content of: <book><title>
+#: offline.dbk
+msgid "Using APT Offline"
+msgstr "Uso de APT Offline"
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: offline.dbk
+msgid ""
+"This document describes how to use APT in a non-networked environment, "
+"specifically a 'sneaker-net' approach for performing upgrades."
+msgstr ""
+"Este documento describe el uso de APT en un entorno sin conexión a red, "
+"específicamente una aproximación «sneaker-net» a la tarea de actualización."
+
+#. type: Content of: <book><bookinfo>
+#: offline.dbk
+msgid ""
+"<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+"<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright>"
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Introduction"
+msgstr "Introducción"
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "Overview"
+msgstr "Resumen"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Normally APT requires direct access to a Debian archive, either from a local "
+"media or through a network. Another common complaint is that a Debian "
+"machine is on a slow link, such as a modem and another machine has a very "
+"fast connection but they are physically distant."
+msgstr ""
+"Generalmente, APT necesita un acceso directo a un archivo de Debian, bien "
+"desde un dispositivo local o a través de una red. Otra queja frecuente es "
+"que una máquina con un sistema Debian dispone de una conexión lenta como la "
+"de un módem, y otra máquina físicamente lejos dispone de una conexión muy "
+"rápida."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The solution to this is to use large removable media such as a Zip disc or a "
+"SuperDisk disc. These discs are not large enough to store the entire Debian "
+"archive but can easily fit a subset large enough for most users. The idea is "
+"to use APT to generate a list of packages that are required and then fetch "
+"them onto the disc using another machine with good connectivity. It is even "
+"possible to use another Debian machine with APT or to use a completely "
+"different OS and a download tool like wget. Let <emphasis>remote host</"
+"emphasis> mean the machine downloading the packages, and <emphasis>target "
+"host</emphasis> the one with bad or no connection."
+msgstr ""
+"La solución a esto es usar dispositivos extraíbles de gran capacidad tales "
+"como un disco Zip o uno SuperDisk. Estos discos no tienen la suficiente "
+"capacidad para almacenar todo el archivo de Debian, pero pueden contener un "
+"sub-conjunto suficientemente grande para la mayoría de usuarios. La idea es "
+"usar APT para generar una lista de los paquetes requeridos para después "
+"almacenarlos en un disco usando el sistema que tiene una conexión rápida. Es "
+"incluso posible usar otro sistema Debian con APT, o usar un sistema "
+"operativo totalmente distinto junto con una herramienta de descarga como "
+"wget. Digamos que el <emphasis>sistema remoto</emphasis> es aquél que "
+"descarga los paquetes, y <emphasis>sistema destino</emphasis> es aquél con "
+"poca o ninguna conexión."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"This is achieved by creatively manipulating the APT configuration file. The "
+"essential premise to tell APT to look on a disc for it's archive files. Note "
+"that the disc should be formatted with a filesystem that can handle long "
+"file names such as ext2, fat32 or vfat."
+msgstr ""
+"Esto se logra manipulando con imaginación el fichero de configuración de "
+"APT. La premisa esencial es decirle a APT que busque en el disco los "
+"ficheros del archivo. Tenga en cuenta que el disco debería tener un formato "
+"de un sistema de ficheros capaz de gestionar nombres largos de ficheros, "
+"tales como ext2, fat32 o vfat."
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Using APT on both machines"
+msgstr "Uso de APT en ambas máquinas"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"APT being available on both machines gives the simplest configuration. The "
+"basic idea is to place a copy of the status file on the disc and use the "
+"remote machine to fetch the latest package files and decide which packages "
+"to download. The disk directory structure should look like:"
+msgstr ""
+"La configuración más sencilla es posible si APT está instalado en ambas "
+"máquinas. La idea básica es guardar una copia del fichero de estado en el "
+"disco, después usar el sistema remoto para obtener los últimos ficheros de "
+"paquete y decidir qué paquetes descargar. La estructura de directorios del "
+"disco debería tener este aspecto:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" /disc/\n"
+" archives/\n"
+" partial/\n"
+" lists/\n"
+" partial/\n"
+" status\n"
+" sources.list\n"
+" apt.conf\n"
+msgstr ""
+" /disc/\n"
+" archives/\n"
+" partial/\n"
+" lists/\n"
+" partial/\n"
+" status\n"
+" sources.list\n"
+" apt.conf\n"
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "The configuration file"
+msgstr "El fichero de configuración"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The configuration file should tell APT to store its files on the disc and to "
+"use the configuration files on the disc as well. The sources.list should "
+"contain the proper sites that you wish to use from the remote machine, and "
+"the status file should be a copy of <emphasis>/var/lib/dpkg/status</"
+"emphasis> from the <emphasis>target host</emphasis>. Please note, if you are "
+"using a local archive you must use copy URIs, the syntax is identical to "
+"file URIs."
+msgstr ""
+"El fichero de configuración debería indicar a APT que guarde los ficheros en "
+"el disco, y también utilizar los ficheros de configuración en el disco. El "
+"fichero «sources.list» debería contener los sitios apropiados que desea "
+"utilizar desde el sistema remoto, y el fichero de estado debería ser una "
+"copia de <emphasis>/var/lib/dpkg/status</emphasis> del <emphasis>sistema "
+"destino</emphasis>. Tenga en cuenta que si usa un archivo local debe usar el "
+"URI «copy», de idéntica sintaxis al URI «file»."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"<emphasis>apt.conf</emphasis> must contain the necessary information to make "
+"APT use the disc:"
+msgstr ""
+"<emphasis>apt-conf</emphasis> debe contener toda la información necesaria "
+"para que APT use el disco:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" APT\n"
+" {\n"
+" /* This is not necessary if the two machines are the same arch, it tells\n"
+" the remote APT what architecture the target machine is */\n"
+" Architecture \"i386\";\n"
+"\n"
+" Get::Download-Only \"true\";\n"
+" };\n"
+"\n"
+" Dir\n"
+" {\n"
+" /* Use the disc for state information and redirect the status file from\n"
+" the /var/lib/dpkg default */\n"
+" State \"/disc/\";\n"
+" State::status \"status\";\n"
+"\n"
+" // Binary caches will be stored locally\n"
+" Cache::archives \"/disc/archives/\";\n"
+" Cache \"/tmp/\";\n"
+"\n"
+" // Location of the source list.\n"
+" Etc \"/disc/\";\n"
+" };\n"
+msgstr ""
+" APT\n"
+" {\n"
+" /* Esto no es necesario si ambos sistemas tienen la misma arquitectura,\n"
+" informa al APT remoto la arquitectura del sistema destino */\n"
+" Architecture \"i386\";\n"
+"\n"
+" Get::Download-Only \"true\";\n"
+" };\n"
+"\n"
+" Dir\n"
+" {\n"
+" /* Use el disco para información de estado y redireccionar el fichero de\n"
+" estado desde el valor predeterminado «/var/lib/dpkg» */\n"
+" State \"/disc/\";\n"
+" State::status \"status\";\n"
+"\n"
+" // Los cachés binarios se guardan localmente\n"
+" Cache::archives \"/disc/archives/\";\n"
+" Cache \"/tmp/\";\n"
+"\n"
+" // Ubicación del fichero de fuentes.\n"
+" Etc \"/disc/\";\n"
+" };\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"More details can be seen by examining the apt.conf man page and the sample "
+"configuration file in <emphasis>/usr/share/doc/apt/examples/apt.conf</"
+"emphasis>."
+msgstr ""
+"Para más detalles consulte la página de manual y el fichero de configuración "
+"de ejemplo en <emphasis>/usr/share/doc/apt/examples/apt.conf</emphasis>."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"On the target machine the first thing to do is mount the disc and copy "
+"<emphasis>/var/lib/dpkg/status</emphasis> to it. You will also need to "
+"create the directories outlined in the Overview, <emphasis>archives/partial/"
+"</emphasis> and <emphasis>lists/partial/</emphasis>. Then take the disc to "
+"the remote machine and configure the sources.list. On the remote machine "
+"execute the following:"
+msgstr ""
+"Lo primero que debe hacer en el sistema destino es montar el disco y guardar "
+"en él una copia de <emphasis>/var/lib/dpkg/status</emphasis>. También debe "
+"crear los directorios definidos en el Resumen, <emphasis>archives/partial/</"
+"emphasis> y <emphasis>lists/partial/</emphasis>. Después, lleve el disco "
+"hasta el sistema remoto y configure «sources.list». Ejecute lo siguiente en "
+"el sistema remoto:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get update\n"
+" [ APT fetches the package files ]\n"
+" # apt-get dist-upgrade\n"
+" [ APT fetches all the packages needed to upgrade the target machine ]\n"
+msgstr ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get update\n"
+" [ APT obtiene los ficheros de paquete ]\n"
+" # apt-get dist-upgrade\n"
+" [ APT obtiene todos los paquetes necesarios para actualizar el sistema\n"
+" destino ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The dist-upgrade command can be replaced with any other standard APT "
+"commands, particularly dselect-upgrade. You can even use an APT front end "
+"such as <emphasis>dselect</emphasis>. However this presents a problem in "
+"communicating your selections back to the local computer."
+msgstr ""
+"Puede reemplazar la orden «dist-upgrade» con cualquiera otra orden estándar "
+"de APT, en especial «dselect-upgrade». Incluso puede usar una interfaz de "
+"APT como <emphasis>dselect</emphasis>. Sin embargo, esto presenta un "
+"problema al informar después de sus selecciones al sistema remoto."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Now the disc contains all of the index files and archives needed to upgrade "
+"the target machine. Take the disc back and run:"
+msgstr ""
+"Ahora el disco contiene todos los ficheros de índice y archivo necesarios "
+"para actualizar el sistema destino. Inserte el disco otra vez y ejecute:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get check\n"
+" [ APT generates a local copy of the cache files ]\n"
+" # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
+" [ Or any other APT command ]\n"
+msgstr ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get check\n"
+" [ APT genera una copia local de los ficheros de caché ]\n"
+" # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
+" [ O cualquiera otra orden de APT ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"It is necessary for proper function to re-specify the status file to be the "
+"local one. This is very important!"
+msgstr ""
+"Para un correcto funcionamiento debe definir nuevamente el fichero de estado "
+"local. Tiene una importancia crucial."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"If you are using dselect you can do the very risky operation of copying disc/"
+"status to /var/lib/dpkg/status so that any selections you made on the remote "
+"machine are updated. I highly recommend that people only make selections on "
+"the local machine - but this may not always be possible. DO NOT copy the "
+"status file if dpkg or APT have been run in the mean time!!"
+msgstr ""
+"Si está usando dselect puede realizar la arriesgada operación de copiar "
+"«disc/status» a «/var/lib/dpkg/status» para actualizar todas las selecciones "
+"hecha en el sistema remoto. Recomiendo seriamente hacer las selecciones sólo "
+"en el sistema local, aunque puede que no sea posible. NO copie el fichero de "
+"estado si dpkg o APT se han ejecutado mientras tanto."
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Using APT and wget"
+msgstr "Uso de APT y wget"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"<emphasis>wget</emphasis> is a popular and portable download tool that can "
+"run on nearly any machine. Unlike the method above this requires that the "
+"Debian machine already has a list of available packages."
+msgstr ""
+"<emphasis>wget</emphasis> es una herramienta de descarga muy popular que "
+"funciona prácticamente en cualquier sistema. A diferencia del método "
+"anterior, requiere que el sistema Debian tenga una lista de paquetes "
+"disponibles."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The basic idea is to create a disc that has only the archive files "
+"downloaded from the remote site. This is done by using the --print-uris "
+"option to apt-get and then preparing a wget script to actually fetch the "
+"packages."
+msgstr ""
+"La idea básica es crear un disco que sólo contiene los ficheros del archivo "
+"descargados desde el sistema remoto. Esto se hace mediante la opción de apt-"
+"get «--print-uris», para después preparar un script de wget que finalmente "
+"obtendrá los paquetes."
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "Operation"
+msgstr "Operación"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Unlike the previous technique no special configuration files are required. "
+"We merely use the standard APT commands to generate the file list."
+msgstr ""
+"A diferencia de la técnica anterior, no requiere ningún fichero de "
+"configuración especial. Solo se utilizan órdenes estándar de APT para "
+"generar el fichero con la lista."
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # apt-get dist-upgrade\n"
+" [ Press no when prompted, make sure you are happy with the actions ]\n"
+" # apt-get -qq --print-uris dist-upgrade &gt; uris\n"
+" # awk '{print \"wget -O \" $2 \" \" $1}' &lt; uris &gt; /disc/wget-script\n"
+msgstr ""
+" # apt-get dist-upgrade \n"
+" [ Pulse no cuando se le pregunte, asegúrese de estar conforme con las\n"
+" acciones ]\n"
+" # apt-get -qq --print-uris dist-upgrade &gt; uris\n"
+" # awk '{print \"wget -O \" $2 \" \" $1}' &lt; uris &gt; /disc/wget-script\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Any command other than dist-upgrade could be used here, including dselect-"
+"upgrade."
+msgstr ""
+"Se puede utilizar cualquier otra orden aparte de «dist-upgrade», incluyendo "
+"«dselect-upgrade»."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The /disc/wget-script file will now contain a list of wget commands to "
+"execute in order to fetch the necessary archives. This script should be run "
+"with the current directory as the disc's mount point so as to save the "
+"output on the disc."
+msgstr ""
+"El fichero «/disc/wget-script» ahora contiene una lista de órdenes de wget a "
+"ejecutar para obtener los archivos necesarios. Este script se debería "
+"ejecutar en el directorio del punto de montaje del disco para poder guardar "
+"la salida en el disco."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid "The remote machine would do something like"
+msgstr "El sistema remoto haría algo como"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # cd /disc\n"
+" # sh -x ./wget-script\n"
+" [ wait.. ]\n"
+msgstr ""
+" # cd /disc\n"
+" # sh -x ./wget-script\n"
+" [ wait.. ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Once the archives are downloaded and the disc returned to the Debian machine "
+"installation can proceed using,"
+msgstr ""
+"Una vez que los archivos se han descargado y el disco está finalmente "
+"conectado al sistema Debian, ejecute la instalación con lo siguiente."
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
+msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid "Which will use the already fetched archives on the disc."
+msgstr "Esto utiliza los archivos del disco previamente obtenidos."
+
+#~ msgid "dpkg trigger usage (and related options)"
+#~ msgstr "Uso del disparador de dpkg (y de las opciones relacionadas)"
+
+#~ msgid ""
+#~ "APT can call &dpkg; in such a way as to let it make aggressive use of "
+#~ "triggers over multiple calls of &dpkg;. Without further options &dpkg; "
+#~ "will use triggers once each time it runs. Activating these options can "
+#~ "therefore decrease the time needed to perform the install or upgrade. "
+#~ "Note that it is intended to activate these options per default in the "
+#~ "future, but as it drastically changes the way APT calls &dpkg; it needs a "
+#~ "lot more testing. <emphasis>These options are therefore currently "
+#~ "experimental and should not be used in production environments.</"
+#~ "emphasis> It also breaks progress reporting such that all front-ends will "
+#~ "currently stay around half (or more) of the time in the 100% state while "
+#~ "it actually configures all packages."
+#~ msgstr ""
+#~ "APT puede invocar &dpkg; de forma que pueda hacer un uso agresivo de los "
+#~ "disparadores («triggers») mediante varias invocaciones a &dpkg;. Sin no "
+#~ "se definen más opciones, &dpkg; utilizará los disparadores una durante su "
+#~ "ejecución. Si se activan estas opciones, se puede reducir el tiempo "
+#~ "necesario para realizar la instalación o la actualización. Tenga en "
+#~ "cuenta que está diseñado para que estas opciones se activen de forma "
+#~ "predeterminada en un futuro, pero debido a los cambios drásticos en la "
+#~ "manera en que APT invoca a &dpkg;, necesita más pruebas. "
+#~ "<emphasis>Actualmente, estas opciones son experimentales, y no se "
+#~ "deberían usar en entornos de producción.</emphasis> También provoca un "
+#~ "fallo en el informe de progreso, con lo que todas las interfaces muestran "
+#~ "un progreso del 100% durante la mitad del tiempo (o más) durante la "
+#~ "configuración de todos los paquetes."
+
+#~ msgid ""
+#~ "DPkg::NoTriggers \"true\";\n"
+#~ "PackageManager::Configure \"smart\";\n"
+#~ "DPkg::ConfigurePending \"true\";\n"
+#~ "DPkg::TriggersPending \"true\";"
+#~ msgstr ""
+#~ "DPkg::NoTriggers \"true\";\n"
+#~ "PackageManager::Configure \"smart\";\n"
+#~ "DPkg::ConfigurePending \"true\";\n"
+#~ "DPkg::TriggersPending \"true\";"
+
+#~ msgid ""
+#~ "Note that it is not guaranteed that APT will support these options or "
+#~ "that these options will not cause (big) trouble in the future. If you "
+#~ "have understand the current risks and problems with these options, but "
+#~ "are brave enough to help testing them, create a new configuration file "
+#~ "and test a combination of options. Please report any bugs, problems and "
+#~ "improvements you encounter and make sure to note which options you have "
+#~ "used in your reports. Asking &dpkg; for help could also be useful for "
+#~ "debugging proposes, see e.g. <command>dpkg --audit</command>. A defensive "
+#~ "option combination would be <placeholder type=\"literallayout\" id=\"0\"/>"
+#~ msgstr ""
+#~ "Tenga en cuenta que no se garantiza que APT permitirá usar estas opciones "
+#~ "o que estas opciones no causen un (gran) problema en el futuro. Si ha "
+#~ "entendido los riesgos y los problemas actuales con estas opciones pero es "
+#~ "lo suficientemente valiente para ayudar a probarlas, cree un nuevo "
+#~ "fichero de configuración y pruebe una combinación de las opciones. Por "
+#~ "favor, informe de cualquier error, problema o mejora que encuentre y "
+#~ "asegúrese de apuntar en sus informes qué opciones ha usado. Pedir ayuda a "
+#~ "&dpkg; también puede ser útil por motivos de depuración, véase por "
+#~ "ejemplo: <command>dpkg --audit</command>. Una combinación de opciones "
+#~ "defensivas sería <placeholder type=\"literallayout\" id=\"0\"/>"
+
+#~ msgid ""
+#~ "Add the no triggers flag to all &dpkg; calls (except the ConfigurePending "
+#~ "call). See &dpkg; if you are interested in what this actually means. In "
+#~ "short: &dpkg; will not run the triggers when this flag is present unless "
+#~ "it is explicitly called to do so in an extra call. Note that this option "
+#~ "exists (undocumented) also in older APT versions with a slightly "
+#~ "different meaning: Previously these option only append --no-triggers to "
+#~ "the configure calls to &dpkg; - now APT will also add this flag to the "
+#~ "unpack and remove calls."
+#~ msgstr ""
+#~ "Añade a todas las invocaciones a &dpkg; la opción sin disparadores («no "
+#~ "triggers»), excepto a la invocación a «ConfigurePending». Consulte &dpkg; "
+#~ "si está interesado en saber qué significa esto. De forma breve: &dpkg; no "
+#~ "ejecuta los disparadores cuando está opción está presente a menos que se "
+#~ "ejecute explícitamente con una invocación adicional. Tenga en cuenta que "
+#~ "esta opción también existe en versiones antiguas de APT (aunque sin "
+#~ "documentar) con un significado diferente. Anteriormente sólo se añadía la "
+#~ "opción «--no-triggers» a las invocaciones de la configuración para "
+#~ "&dpkg;, ahora APT también añade esta opción a las invocaciones de "
+#~ "desempaquetado y eliminación."
+
+#~ msgid ""
+#~ "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" "
+#~ "and \"<literal>no</literal>\". The default value is \"<literal>all</"
+#~ "literal>\", which causes APT to configure all packages. The "
+#~ "\"<literal>smart</literal>\" way is to configure only packages which need "
+#~ "to be configured before another package can be unpacked (Pre-Depends), "
+#~ "and let the rest be configured by &dpkg; with a call generated by the "
+#~ "ConfigurePending option (see below). On the other hand, \"<literal>no</"
+#~ "literal>\" will not configure anything, and totally relies on &dpkg; for "
+#~ "configuration (which at the moment will fail if a Pre-Depends is "
+#~ "encountered). Setting this option to any value other than <literal>all</"
+#~ "literal> will implicitly also activate the next option by default, as "
+#~ "otherwise the system could end in an unconfigured and potentially "
+#~ "unbootable state."
+#~ msgstr ""
+#~ "Los valores válidos son «<literal>all</literal>», «<literal>smart</"
+#~ "literal>» y «<literal>no</literal>». El valor predeterminado es "
+#~ "«<literal>all</literal>», que hace que APT configure todos los paquetes. "
+#~ "El valor «<literal>smart</literal>» sólo configura los paquetes que "
+#~ "requieren ser configurados antes de que se desempaquete otro paquete "
+#~ "(predependencia) y permite que &dpkg; configure los restantes con una "
+#~ "invocación generada por la opción «ConfigurePending» (más abajo). El "
+#~ "valor «<literal>no</literal>» no configura nada y depende por completo de "
+#~ "&dpkg; para la configuración (que fallará si se encuentra una pre-"
+#~ "dependencia). Si se define esta opción con un valor distinto a "
+#~ "«<literal>all</literal>» activa implícitamente la siguiente opción de "
+#~ "forma predeterminada, ya que de otro modo el sistema podría terminar en "
+#~ "un estado mal configurado qué podría derivar en la imposibilidad de "
+#~ "arrancar el sistema. "
+
+#~ msgid ""
+#~ "Useful for the <literal>smart</literal> configuration as a package which "
+#~ "has pending triggers is not considered as <literal>installed</literal>, "
+#~ "and &dpkg; treats them as <literal>unpacked</literal> currently which is "
+#~ "a showstopper for Pre-Dependencies (see debbugs #526774). Note that this "
+#~ "will process all triggers, not only the triggers needed to configure this "
+#~ "package."
+#~ msgstr ""
+#~ "Útil para una configuración <literal>smart</literal> en la que un paquete "
+#~ "que tiene disparadores pendientes no se considera como "
+#~ "<literal>instalado</literal> y que dpkg lo trata como "
+#~ "<literal>desempaquetado</literal>, lo cual entra en conflicto con el "
+#~ "sistema de pre-dependencias (véase debbugs #526774). Tenga en cuenta que "
+#~ "esto procesará todos los disparadores, no sólo los disparadores "
+#~ "necesarios para configurar este paquete."
+
+#~ msgid ""
+#~ "OrderList::Score {\n"
+#~ "\tDelete 500;\n"
+#~ "\tEssential 200;\n"
+#~ "\tImmediate 10;\n"
+#~ "\tPreDepends 50;\n"
+#~ "};"
+#~ msgstr ""
+#~ "OrderList::Score {\n"
+#~ "\tDelete 500;\n"
+#~ "\tEssential 200;\n"
+#~ "\tImmediate 10;\n"
+#~ "\tPreDepends 50;\n"
+#~ "};"
+
+#~ msgid ""
+#~ "Essential packages (and their dependencies) should be configured "
+#~ "immediately after unpacking. It is a good idea to do this quite early in "
+#~ "the upgrade process as these configure calls also currently require "
+#~ "<literal>DPkg::TriggersPending</literal> which will run quite a few "
+#~ "triggers (which may not be needed). Essentials get per default a high "
+#~ "score but the immediate flag is relatively low (a package which has a Pre-"
+#~ "Depends is rated higher). These option and the others in the same group "
+#~ "can be used to change the scoring. The following example shows the "
+#~ "settings with their default values. <placeholder type=\"literallayout\" "
+#~ "id=\"0\"/>"
+#~ msgstr ""
+#~ "Los paquetes esenciales (y sus dependencias) se deberían configurar "
+#~ "inmediatamente después de desempaquetarlos. Se recomienda realizarlo lo "
+#~ "más pronto posible en el proceso de actualización ya que actualmente "
+#~ "estas invocaciones de configuración también necesitan <literal>DPkg::"
+#~ "TriggersPending</literal>, que ejecuta varios disparadores (que puede que "
+#~ "no sean necesarios). Los esenciales tienen, de forma predeterminada, una "
+#~ "puntuación alta pero la opción inmediata es relativamente baja (un "
+#~ "paquete que tenga pre-dependencias tiene una puntuación más alta). Puede "
+#~ "cambiar la puntuación mediante esta opción y las otras del mismo grupo. "
+#~ "El siguiente ejemplo muestra la configuración con los valores "
+#~ "predeterminados. <placeholder type=\"literallayout\" id=\"0\"/>"
+
+#~ msgid "List fingerprints of trusted keys."
+#~ msgstr "Lista las huellas digitales de las claves de confianza."
+
+#~ msgid "<filename>/etc/apt/trustdb.gpg</filename>"
+#~ msgstr "<filename>/etc/apt/trustdb.gpg</filename>"
+
+#~ msgid "Local trust database of archive keys."
+#~ msgstr "Base de datos local de las claves de confianza de archivos Debian"
+
+#~ msgid "&keyring-filename;"
+#~ msgstr "&keyring-filename;"
+
+#~ msgid "Keyring of &keyring-distro; archive trusted keys."
+#~ msgstr ""
+#~ "Registro de las claves de confianza del archivo de &keyring-distro;."
+
+#~ msgid "&keyring-removed-filename;"
+#~ msgstr "&keyring-removed-filename;"
+
+#~ msgid "Keyring of &keyring-distro; archive removed trusted keys."
+#~ msgstr ""
+#~ "Registro de las claves de confianza eliminadas del archivo de &keyring-"
+#~ "distro;."
+
+#, fuzzy
+#~| msgid "&apt-cache; &apt-conf;"
+#~ msgid "&apt-get;, &apt-conf;"
+#~ msgstr "&apt-cache; &apt-conf;"
+
+#~ msgid ""
+#~ "This is a space separated list of all the architectures that appear under "
+#~ "search section. The special architecture 'source' is used to indicate "
+#~ "that this tree has a source archive."
+#~ msgstr ""
+#~ "Es una lista de todas las arquitecturas separadas por espacios que "
+#~ "aparecen bajo la sección de búsqueda. La arquitectura especial «source» "
+#~ "se usa para indicar que este árbol tiene un fichero de fuentes."
+
+#, fuzzy
+#~| msgid ""
+#~| "<literal>rdepends</literal> shows a listing of each reverse dependency a "
+#~| "package has."
+#~ msgid ""
+#~ "<literal>show</literal> shows the package information for the given "
+#~ "package(s)."
+#~ msgstr ""
+#~ "<literal>rdepends</literal> muestra las dependencias inversas de un "
+#~ "paquete."
+
+#, fuzzy
+#~| msgid ""
+#~| "<literal>showhold</literal> is used to print a list of packages on hold "
+#~| "in the same way as for the other show commands."
+#~ msgid ""
+#~ "<literal>update</literal> is used to resynchronize the package index "
+#~ "files from their sources."
+#~ msgstr ""
+#~ "<literal>showhold</literal> muestra una lista de paquetes retenidos "
+#~ "(«hold») de la misma forma que las otras órdenes «show»."
+
+#, fuzzy
+#~| msgid "the <literal>Package:</literal> line"
+#~ msgid "The option <literal>DPkg::Progress-Fancy</literal> is enabled."
+#~ msgstr "La línea <literal>Package:</literal>"
+
+#, fuzzy
+#~| msgid "the <literal>Component:</literal> line"
+#~ msgid "The option <literal>APT::Color</literal> is enabled."
+#~ msgstr "La línea <literal>Component:</literal>"
+
+#, fuzzy
+#~| msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line"
+#~ msgid ""
+#~ "The option <literal>upgrade</literal> has <literal>--with-new-pkgs</"
+#~ "literal> enabled by default."
+#~ msgstr "Las líneas <literal>Archive:</literal> o <literal>Suite:</literal>"
+
+#~ msgid ""
+#~ "Pass advanced options to gpg. With adv --recv-key you can download the "
+#~ "public key."
+#~ msgstr ""
+#~ "Proporciona opciones avanzadas a gpg. Puede descargar la clave pública "
+#~ "con «adv --recv-key»."
+
+#~ msgid "mark/unmark a package as being automatically-installed"
+#~ msgstr "Marca o desmarca un paquete como instalado automáticamente"
+
+#~ msgid ""
+#~ "<command>apt-mark</command> will change whether a package has been marked "
+#~ "as being automatically installed."
+#~ msgstr ""
+#~ "<command>apt-mark</command> conmuta si un paquete se instaló "
+#~ "automáticamente o no."
+
+#~ msgid ""
+#~ "<literal>hold</literal> is used to mark a package as held back, which "
+#~ "will prevent the package from being automatically installed, upgraded or "
+#~ "removed. The command is only a wrapper around <command>dpkg --set-"
+#~ "selections</command> and the state is therefore maintained by &dpkg; and "
+#~ "not affected by the <option>--file</option> option."
+#~ msgstr ""
+#~ "<literal>hold</literal> sirve para marcar un paquete para su retención, "
+#~ "impidiendo que el paquete se instale, actualice o elimine de forma "
+#~ "automática. La orden es una interfaz para <command>dpkg --set-selections</"
+#~ "command>, por lo que &dpkg; preserva el estado sin que la opción "
+#~ "<option>--file</option> tenga efecto sobre él."
+
+#~ msgid ""
+#~ "If a package comes from a archive without a signature, or with a "
+#~ "signature that apt does not have a key for, that package is considered "
+#~ "untrusted, and installing it will result in a big warning. <command>apt-"
+#~ "get</command> will currently only warn for unsigned archives; future "
+#~ "releases might force all sources to be verified before downloading "
+#~ "packages from them."
+#~ msgstr ""
+#~ "Si el paquete viene de un archivo sin una firma o con una firma de la que "
+#~ "apt no tiene su clave, el paquete se considerará no fiable y su "
+#~ "instalación provocará un aviso importante. <command>apt-get</command> "
+#~ "actualmente sólo avisa de los archivos sin firmar, puede que las próximas "
+#~ "versiones fuercen una comprobación de todas las fuentes antes de "
+#~ "descargar paquetes desde ellas."
+
+#~ msgid ""
+#~ "No action; perform a simulation of events that would occur but do not "
+#~ "actually change the system. Configuration Item: <literal>APT::Get::"
+#~ "Simulate</literal>."
+#~ msgstr ""
+#~ "No realiza ninguna acción, simula lo que hubiese ocurrido pero sin hacer "
+#~ "cambios reales en el sistema. Opción de configuración: <literal>APT::Get::"
+#~ "Simulate</literal>."
+
+#~ msgid ""
+#~ "Simulated runs performed as a user will automatically deactivate locking "
+#~ "(<literal>Debug::NoLocking</literal>), and if the option <literal>APT::"
+#~ "Get::Show-User-Simulation-Note</literal> is set (as it is by default) a "
+#~ "notice will also be displayed indicating that this is only a simulation. "
+#~ "Runs performed as root do not trigger either NoLocking or the notice - "
+#~ "superusers should know what they are doing without further warnings from "
+#~ "<literal>apt-get</literal>."
+#~ msgstr ""
+#~ "Las simulaciones de ejecución realizadas por un usuario desactivan el "
+#~ "bloqueo de forma automática (<literal>Debug::NoLocking</literal>), y si "
+#~ "se define la opción <literal>APT::Get::Show-User-Simulation-Note</"
+#~ "literal> (activa de forma predefinida) se muestra un aviso que indica que "
+#~ "solo es una simulación. Las ejecuciones realizadas como usuario «root» no "
+#~ "activan «NoLocking» o el aviso. Los administradores deben ser conscientes "
+#~ "de sus acciones sin avisos de <literal>apt-get</literal>."
+
+#~ msgid ""
+#~ "Ignore if packages can't be authenticated and don't prompt about it. "
+#~ "This is useful for tools like pbuilder. Configuration Item: "
+#~ "<literal>APT::Get::AllowUnauthenticated</literal>."
+#~ msgstr ""
+#~ "Ignora si los paquetes no se pueden autenticar, sin generar ningún "
+#~ "diálogo sobre ello. Esto es útil para herramientas como pbuilder. Opción "
+#~ "de configuración: <literal>APT::Get::AllowUnauthenticated</literal>."
+
+#, fuzzy
+#~| msgid ""
+#~| "Version 2 of this protocol dumps more information, including the "
+#~| "protocol version, the APT configuration space and the packages, files "
+#~| "and versions being changed. Version 2 is enabled by setting "
+#~| "<literal>DPkg::Tools::options::cmd::Version</literal> to 2. "
+#~| "<literal>cmd</literal> is a command given to <literal>Pre-Install-Pkgs</"
+#~| "literal>."
+#~ msgid ""
+#~ "Version 2 of this protocol dumps more information, including the protocol "
+#~ "version, the APT configuration space and the packages, files and versions "
+#~ "being changed. Version 3 adds the architecture and <literal>MultiArch</"
+#~ "literal> flag to each version being dumped."
+#~ msgstr ""
+#~ "La versión 2 de este protocolo vuelca más información, incluyendo la "
+#~ "versión del protocolo, el espacio de configuración de APT y de los "
+#~ "paquetes, los ficheros y las versiones que cambian. La versión 2 se "
+#~ "habilita definiendo <literal>DPkg::Tools::Options::cmd::Version</literal> "
+#~ "con el valor 2. <literal>cmd</literal> es una orden que se pasa a "
+#~ "<literal>Pre-Install-Pkgs</literal>."
+
+#~ msgid ""
+#~ "to the versions that are not installed and do not belong to the target "
+#~ "release."
+#~ msgstr ""
+#~ "a las versiones que ni están instaladas ni pertenecen a la distribución "
+#~ "objetivo."
+
+#~ msgid ""
+#~ "Each line specifying a source starts with type (e.g. <literal>deb-src</"
+#~ "literal>) followed by options and arguments for this type. Individual "
+#~ "entries cannot be continued onto a following line. Empty lines are "
+#~ "ignored, and a <literal>#</literal> character anywhere on a line marks "
+#~ "the remainder of that line as a comment."
+#~ msgstr ""
+#~ "Cada línea que define una fuente empieza con el tipo (por ejemplo, "
+#~ "<literal>«deb-src</literal>») seguido de las opciones y argumentos para "
+#~ "este tipo. Una entrada individual no puede continuar en la siguiente "
+#~ "línea. Las líneas vacías se ignoran, y un carácter «<literal>#</literal>» "
+#~ "presente en cualquier lugar de la línea marca los caracteres restantes "
+#~ "como comentario."
+
+#, fuzzy
+#~| msgid "deb [ options ] uri distribution [component1] [component2] [...]"
+#~ msgid "deb [ options ] uri suite [component1] [component2] [...]"
+#~ msgstr "deb [ opciones ] uri distribución [componente1] [componente2] [...]"
+
+#~ msgid ""
+#~ "<literal>options</literal> is always optional and needs to be surrounded "
+#~ "by square brackets. It can consist of multiple settings in the form "
+#~ "<literal><replaceable>setting</replaceable>=<replaceable>value</"
+#~ "replaceable></literal>. Multiple settings are separated by spaces. The "
+#~ "following settings are supported by APT (note however that unsupported "
+#~ "settings will be ignored silently):"
+#~ msgstr ""
+#~ "<literal>options</literal> siempre es opcional, y debe estar delimitado "
+#~ "por corchetes. Puede consistir de varias opciones con la forma "
+#~ "<literal><replaceable>opción</replaceable>=<replaceable>valor</"
+#~ "replaceable></literal>. Varias opciones se separan con espacios. APT "
+#~ "permite las siguientes opciones (tenga en cuenta que las opciones no "
+#~ "permitidas se ignoran silenciosamente):"
+
+#, fuzzy
+#~| msgid ""
+#~| "<literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#~| "replaceable>,…</literal> can be used to specify for which architectures "
+#~| "information should be downloaded. If this option is not set all "
+#~| "architectures defined by the <literal>APT::Architectures</literal> "
+#~| "option will be downloaded."
+#~ msgid ""
+#~ "<literal>arch+=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#~ "replaceable>,…</literal> and <literal>arch-=<replaceable>arch1</"
+#~ "replaceable>,<replaceable>arch2</replaceable>,…</literal> which can be "
+#~ "used to add/remove architectures from the set which will be downloaded."
+#~ msgstr ""
+#~ "<literal>arch=<replaceable>arquitecura1</replaceable>,"
+#~ "<replaceable>arquitecura2</replaceable>,…</literal> se puede utilizar "
+#~ "para definir la arquitectura para la que se descarga información sobre "
+#~ "arquitecturas. Si no se define esta opción, se descargarán todas las "
+#~ "arquitecturas definidas por la opción <literal>APT::Architectures</"
+#~ "literal>."
+
+#~ msgid ""
+#~ "<literal>trusted=yes</literal> can be set to indicate that packages from "
+#~ "this source are always authenticated even if the <filename>Release</"
+#~ "filename> file is not signed or the signature can't be checked. This "
+#~ "disables parts of &apt-secure; and should therefore only be used in a "
+#~ "local and trusted context. <literal>trusted=no</literal> is the opposite "
+#~ "which handles even correctly authenticated sources as not authenticated."
+#~ msgstr ""
+#~ "<literal>trusted=yes</literal> se puede definir para indicar que los "
+#~ "paquetes que proviene de esta fuente siempre están autenticados incluso "
+#~ "si el fichero <filename>Release</filename> no está firmado, o si no se "
+#~ "puede comprobar la firma. Esto desactiva partes de &apt-secure; y por "
+#~ "ello solo se debe utilizar en un contexto local y de confianza. "
+#~ "<literal>trusted=no</literal> ofrece lo opuesto, ya que supone que las "
+#~ "fuentes correctamente autenticadas no lo están."
+
+#~ msgid "Some examples:"
+#~ msgstr "Algunos ejemplos:"
+
+#~ msgid ""
+#~ "deb http://ftp.debian.org/debian &debian-stable-codename; main contrib "
+#~ "non-free\n"
+#~ "deb http://security.debian.org/ &debian-stable-codename;/updates main "
+#~ "contrib non-free\n"
+#~ " "
+#~ msgstr ""
+#~ "deb http://ftp.debian.org/debian &debian-stable-codename; main contrib "
+#~ "non-free\n"
+#~ "deb http://security.debian.org/ &debian-stable-codename;/updates main "
+#~ "contrib non-free\n"
+#~ " "
+
+#~ msgid "apt"
+#~ msgstr "apt"
+
+#~ msgid "16 June 1998"
+#~ msgstr "16 de Junio de 1998"
+
+#~ msgid "Debian"
+#~ msgstr "Debian"
+
+#~ msgid "NAME"
+#~ msgstr "NOMBRE"
+
+#~ msgid "apt - Advanced Package Tool"
+#~ msgstr "apt - Herramienta avanzada de paquetes"
+
+#~ msgid "SYNOPSIS"
+#~ msgstr "SINOPSIS"
+
+#~ msgid "B<apt>"
+#~ msgstr "B<apt>"
+
+#~ msgid "DESCRIPTION"
+#~ msgstr "DESCRIPCIÓN"
+
+#, fuzzy
+#~| msgid ""
+#~| "APT is a management system for software packages. For normal day to day "
+#~| "package management there are several front-ends available, such as "
+#~| "B<aptitude>(8) for the command line or B<synaptic>(8) for the X Window "
+#~| "System. Some options are only implemented in B<apt-get>(8) though."
+#~ msgid ""
+#~ "For normal day to day package management there are several front-ends "
+#~ "available, such as B<aptitude>(8) for the command line or "
+#~ "B<synaptic>(8) for the X Window System. Some options are only "
+#~ "implemented in B<apt-get>(8) though."
+#~ msgstr ""
+#~ "APT es un sistema de gestión de paquetes de software. Dispone de varias "
+#~ "interfaces para la gestión de paquetes normal del día a día, tales como "
+#~ "B<aptitude>(8) para la línea de órdenes o B<synaptic>(8) para el sistema "
+#~ "de ventanas de X. Algunas opciones sólo están implementadas en B<apt-"
+#~ "get>(8)."
+
+#~ msgid "SEE ALSO"
+#~ msgstr "VÉASE TAMBIÉN"
+
+#, fuzzy
+#~| msgid ""
+#~| "B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources.list>(5), "
+#~| "B<apt_preferences>(5), B<apt-secure>(8)"
+#~ msgid ""
+#~ "B<apt>(8), B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources."
+#~ "list>(5), B<apt_preferences>(5), B<apt-secure>(8)"
+#~ msgstr ""
+#~ "B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources.list>(5), "
+#~ "B<apt_preferences>(5), B<apt-secure>(8)"
+
+#~ msgid "DIAGNOSTICS"
+#~ msgstr "DIAGNÓSTICOS"
+
+#~ msgid "apt returns zero on normal operation, decimal 100 on error."
+#~ msgstr ""
+#~ "apt devuelve cero si no hay ningún error, y el valor 100 en caso de error."
+
+#~ msgid "BUGS"
+#~ msgstr "FALLOS"
+
+#~ msgid "This manpage isn't even started."
+#~ msgstr "Esta página de manual ni siquiera está iniciada."
+
+#~ msgid ""
+#~ "See E<lt>http://bugs.debian.org/aptE<gt>. If you wish to report a bug in "
+#~ "B<apt>, please see I</usr/share/doc/debian/bug-reporting.txt> or the "
+#~ "B<reportbug>(1) command."
+#~ msgstr ""
+#~ "Consulte E<lt>http://bugs.debian.org/aptE<gt>. Si desea enviar un informe "
+#~ "de error sobre B<apt>, por favor lea I</usr/share/doc/debian/bug-"
+#~ "reporting.txt> o use la orden B<reportbug>(1)."
+
+#~ msgid "AUTHOR"
+#~ msgstr "AUTOR"
+
+#~ msgid "apt was written by the APT team E<lt>apt@packages.debian.orgE<gt>."
+#~ msgstr "El equipo APT E<lt>apt@packages.debian.orgE<gt> escribió apt."
diff --git a/doc/po/fr.po b/doc/po/fr.po
new file mode 100644
index 000000000..56bded828
--- /dev/null
+++ b/doc/po/fr.po
@@ -0,0 +1,12259 @@
+# Translation of apt package man pages
+# Copyright (C) 2000-2009 Debian French l10n team <debian-l10n-french@lists.debian.org>
+# This file is distributed under the same license as the apt package.
+#
+# Translators:
+#
+# Jérôme Marant, 2000.
+# Philippe Batailler, 2005.
+# Christian Perrier <bubulle@debian.org>, 2009, 2010, 2011, 2012, 2013.
+# Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>, 2014, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt-doc 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-06-01 10:51+0200\n"
+"PO-Revision-Date: 2017-01-24 22:43+0100\n"
+"Last-Translator: Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>\n"
+"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.5\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY apt-author.team \"\n"
+" <author>\n"
+" <othername>APT team</othername>\n"
+" <contrib></contrib>\n"
+" </author>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY apt-author.team \"\n"
+" <author>\n"
+" <othername>Équipe de développement d'APT</othername>\n"
+" <contrib></contrib>\n"
+" </author>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY apt-qapage \"\n"
+"\t<para>\n"
+"\t\t<ulink url='http://packages.qa.debian.org/a/apt.html'>QA Page</ulink>\n"
+"\t</para>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY apt-qapage \"\n"
+"\t<para>\n"
+"\t\t<ulink url='http://packages.qa.debian.org/a/apt.html'>Page qualité</ulink>\n"
+"\t</para>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Boiler plate Bug reporting section -->\n"
+"<!ENTITY manbugs \"\n"
+" <refsect1><title>Bugs</title>\n"
+" <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+" If you wish to report a bug in APT, please see\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
+" &reportbug; command.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+"<!-- Boiler plate Bug reporting section -->\n"
+"<!ENTITY manbugs \"\n"
+" <refsect1><title>Bogues</title>\n"
+" <para><ulink url='http://bugs.debian.org/src:apt'>Page des bogues d'APT</ulink>. \n"
+" Si vous souhaitez signaler un bogue à propos d'APT, veuillez lire\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</filename> ou utiliser\n"
+" la commande &reportbug;.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Boiler plate Author section -->\n"
+"<!ENTITY manauthor \"\n"
+" <refsect1><title>Author</title>\n"
+" <para>APT was written by the APT team <email>apt@packages.debian.org</email>.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+"<!-- Boiler plate Author section -->\n"
+"<!ENTITY manauthor \"\n"
+" <refsect1><title>Author</title>\n"
+" <para>APT a été écrit par l'équipe de développement APT <email>apt@packages.debian.org</email>.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-commonoptions \"\n"
+" <varlistentry><term><option>-h</option></term>\n"
+" <term><option>--help</option></term>\n"
+" <listitem><para>Show a short usage summary.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-commonoptions \"\n"
+" <varlistentry><term><option>-h</option></term>\n"
+" <term><option>--help</option></term>\n"
+" <listitem><para>Afficher un bref résumé de l'utilisation.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-v</option></term>\n"
+" <term><option>--version</option></term>\n"
+" <listitem><para>Show the program version.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-v</option></term>\n"
+" <term><option>--version</option></term>\n"
+" <listitem><para>Afficher la version du programme.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-c</option></term>\n"
+" <term><option>--config-file</option></term>\n"
+" <listitem><para>Configuration File; Specify a configuration file to use. \n"
+" The program will read the default configuration file and then this \n"
+" configuration file. If configuration settings need to be set before the\n"
+" default configuration files are parsed specify a file with the <envar>APT_CONFIG</envar>\n"
+" environment variable. See &apt-conf; for syntax information.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-c</option></term>\n"
+" <term><option>--config-file</option></term>\n"
+" <listitem><para>Fichier de configuration ; indique le fichier de configuration à utiliser. \n"
+" Le programme lira le fichier de configuration par défaut puis le fichier indiqué ici. \n"
+" Si les réglages de configuration doivent être établis avant l'analyse des fichiers\n"
+" de configuration par défaut, un fichier peut être indiqué avec la variable d'environnement <envar>APT_CONFIG</envar>. Veuillez consulter &apt-conf; pour des informations sur la syntaxe d'utilisation. \n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-o</option></term>\n"
+" <term><option>--option</option></term>\n"
+" <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
+" configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
+" <option>-o</option> and <option>--option</option> can be used multiple\n"
+" times to set different options.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-o</option></term>\n"
+" <term><option>--option</option></term>\n"
+" <listitem><para>Définir une option de configuration ; permet de régler\n"
+" une option de configuration donnée. La syntaxe est <option>-o Foo::Bar=bar</option>.\n"
+" <option>-o</option> et <option>--option</option> peuvent être utilisées plusieurs fois\n"
+" pour définir des options différentes.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-cmdblurb \"\n"
+" <para>All command line options may be set using the configuration file, the\n"
+" descriptions indicate the configuration option to set. For boolean\n"
+" options you can override the config file by using something like \n"
+" <option>-f-</option>,<option>--no-f</option>, <option>-f=no</option>\n"
+" or several other variations.\n"
+" </para>\n"
+"\">\n"
+msgstr ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-cmdblurb \"\n"
+" <para>Toutes les options de la ligne de commande peuvent être définies dans le fichier de configuration, \n"
+" les descriptions indiquant l'option de configuration concernée. Pour les options\n"
+" booléennes, vous pouvez inverser les réglages du fichiers de configuration avec \n"
+" <option>-f-</option>,<option>--no-f</option>, <option>-f=no</option>\n"
+" et d'autres variantes analogues.\n"
+" </para>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-aptconf \"\n"
+" <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>\n"
+" <listitem><para>APT configuration file.\n"
+" Configuration Item: <literal>Dir::Etc::Main</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-aptconf \"\n"
+" <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>\n"
+" <listitem><para>Fichier de configuration d'APT.\n"
+" Élément de configuration : <literal>Dir::Etc::Main</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
+" <listitem><para>APT configuration file fragments.\n"
+" Configuration Item: <literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
+" <listitem><para>Fragments du fichier de configuration d'APT.\n"
+" Élément de configuration : <literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-cachearchives \"\n"
+" <varlistentry><term><filename>&cachedir;/archives/</filename></term>\n"
+" <listitem><para>Storage area for retrieved package files.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-cachearchives \"\n"
+" <varlistentry><term><filename>&cachedir;/archives/</filename></term>\n"
+" <listitem><para>Zone de stockage des fichiers récupérés.\n"
+" Élément de configuration : <literal>Dir::Cache::Archives</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>\n"
+" <listitem><para>Storage area for package files in transit.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>\n"
+" <listitem><para>Zone de stockage pour les paquets en transit.\n"
+" Élément de configuration : <literal>Dir::Cache::Archives</literal> (<filename>partial</filename> sera implicitement ajouté). </para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-preferences \"\n"
+" <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
+" <listitem><para>Version preferences file.\n"
+" This is where you would specify &quot;pinning&quot;,\n"
+" i.e. a preference to get certain packages\n"
+" from a separate source\n"
+" or from a different version of a distribution.\n"
+" Configuration Item: <literal>Dir::Etc::Preferences</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-preferences \"\n"
+" <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
+" <listitem><para>Fichier des préférences.\n"
+" C'est dans ce fichier qu'on peut faire de l'épinglage (pinning) c'est-à-dire, choisir d'obtenir des paquets d'une source distincte ou d'une distribution différente.\n"
+" Élément de configuration : <literal>Dir::Etc::Preferences</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>\n"
+" <listitem><para>File fragments for the version preferences.\n"
+" Configuration Item: <literal>Dir::Etc::PreferencesParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>\n"
+" <listitem><para>Fragments de fichiers pour la préférence des versions.\n"
+" Élément de configuration : <literal>Dir::Etc::PreferencesParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-sourceslist \"\n"
+" <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+" <listitem><para>Locations to fetch packages from.\n"
+" Configuration Item: <literal>Dir::Etc::SourceList</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-sourceslist \"\n"
+" <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+" <listitem><para>Emplacement pour la récupération des paquets.\n"
+" Élément de configuration : <literal>Dir::Etc::SourceList</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
+" <listitem><para>File fragments for locations to fetch packages from.\n"
+" Configuration Item: <literal>Dir::Etc::SourceParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
+" <listitem><para>Fragments de fichiers définissant les emplacements de récupération de paquets.\n"
+" Élément de configuration : <literal>Dir::Etc::SourceParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-statelists \"\n"
+" <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
+" <listitem><para>Storage area for state information for each package resource specified in\n"
+" &sources-list;\n"
+" Configuration Item: <literal>Dir::State::Lists</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-statelists \"\n"
+" <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
+" <listitem><para>Zone de stockage pour les informations qui concernent chaque ressource de paquet spécifiée dans &sources-list;\n"
+" Élément de configuration : <literal>Dir::State::Lists</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>\n"
+" <listitem><para>Storage area for state information in transit.\n"
+" Configuration Item: <literal>Dir::State::Lists</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>\n"
+" <listitem><para>Zone de stockage pour les informations en transit.\n"
+" Élément de configuration : <literal>Dir::State::Lists</literal> (<filename>partial</filename> sera implicitement ajouté).</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-trustedgpg \"\n"
+" <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
+" <listitem><para>Keyring of local trusted keys, new keys will be added here.\n"
+" Configuration Item: <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-trustedgpg \"\n"
+" <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
+" <listitem><para>Porte-clés des clés de confiance locales. Les nouvelles clés y seront ajoutées.\n"
+" Élément de configuration: <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
+" <listitem><para>File fragments for the trusted keys, additional keyrings can\n"
+" be stored here (by other packages or the administrator).\n"
+" Configuration Item <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
+" <listitem><para>Fragments de fichiers pour les clés de signatures sûres. Des fichiers\n"
+" supplémentaires peuvent être placés à cet endroit (par des paquets ou par l'administrateur).\n"
+" Élément de configuration : <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-extended_states \"\n"
+" <varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>\n"
+" <listitem><para>Status list of auto-installed packages.\n"
+" Configuration Item: <literal>Dir::State::extended_states</literal>.\n"
+" </para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY file-extended_states \"\n"
+" <varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>\n"
+" <listitem><para>Liste d'état des paquets installés automatiquement.\n"
+" Élément de configuration : <literal>Dir::State::extended_states</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is the section header for the following paragraphs - comparable\n"
+" to the other headers like NAME and DESCRIPTION and should therefore be uppercase. -->\n"
+"<!ENTITY translation-title \"TRANSLATION\">\n"
+msgstr "<!ENTITY translation-title \"TRADUCTEURS\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is a placeholder. You should write here who has contributed\n"
+" to the translation in the past, who is responsible now and maybe further information\n"
+" specially related to your translation. -->\n"
+"<!ENTITY translation-holder \"\n"
+" The english translation was done by John Doe <email>john@doe.org</email> in 2009,\n"
+" 2010 and Daniela Acme <email>daniela@acme.us</email> in 2010 together with the\n"
+" Debian Dummy l10n Team <email>debian-l10n-dummy@lists.debian.org</email>.\n"
+"\">\n"
+msgstr ""
+"<!ENTITY translation-holder \"\n"
+" Jérôme Marant, Philippe Batailler, Christian Perrier <email>bubulle@debian.org</email> (2000, 2005, 2009, 2010),\n"
+" Équipe de traduction francophone de Debian <email>debian-l10n-french@lists.debian.org</email>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: As a translation is allowed to have 20% of untranslated/fuzzy strings\n"
+" in a shipped manpage newer/modified paragraphs will maybe appear in english in\n"
+" the generated manpage. This sentence is therefore here to tell the reader that this\n"
+" is not a mistake by the translator - obviously the target is that at least for stable\n"
+" releases this sentence is not needed. :) -->\n"
+"<!ENTITY translation-english \"\n"
+" Note that this translated document may contain untranslated parts.\n"
+" This is done on purpose, to avoid losing content when the\n"
+" translation is lagging behind the original content.\n"
+"\">\n"
+msgstr ""
+"<!ENTITY translation-english \"\n"
+" Veuillez noter que cette traduction peut contenir des parties non traduites.\n"
+" Cela est volontaire, pour éviter de perdre du contenu quand la\n"
+" traduction est légèrement en retard sur le contenu d'origine.\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
+"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+msgstr "<!ENTITY synopsis-config-string \"chaîne_de_configuration\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -c=config_file e.g. -c=./apt.conf --> <!ENTITY "
+"synopsis-config-file \"config_file\">"
+msgstr "<!ENTITY synopsis-config-file \"fichier_de_configuration\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
+"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"\"target_release\">"
+msgstr "<!ENTITY synopsis-target-release \"publication_cible\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -a=architecture e.g. -a=armel --> <!ENTITY "
+"synopsis-architecture \"architecture\">"
+msgstr "<!ENTITY synopsis-architecture \"architecture\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-get install pkg e.g. apt-get install awesome "
+"--> <!ENTITY synopsis-pkg \"pkg\">"
+msgstr "<!ENTITY synopsis-pkg \"paquet\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in pkg=pkg_version_number e.g. apt=0.8.15 --> <!"
+"ENTITY synopsis-pkg-ver-number \"pkg_version_number\">"
+msgstr "<!ENTITY synopsis-pkg-ver-number \"numéro_version_paquet\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache pkgnames prefix e.g. apt-cache "
+"pkgnames apt --> <!ENTITY synopsis-prefix \"prefix\">"
+msgstr "<!ENTITY synopsis-prefix \"préfixe\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache search regex e.g. apt-cache search "
+"awesome --> <!ENTITY synopsis-regex \"regex\">"
+msgstr "<!ENTITY synopsis-regex \"expression_régulière\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
+"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+msgstr "<!ENTITY synopsis-cdrom-mount \"point_de_montage_CD-ROM\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates -t=temporary_directory e.g. "
+"apt-extracttemplates -t=/tmp --> <!ENTITY synopsis-tmp-directory "
+"\"temporary_directory\">"
+msgstr "<!ENTITY synopsis-tmp-directory \"répertoire_temporaire\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates filename --> <!ENTITY "
+"synopsis-filename \"filename\">"
+msgstr "<!ENTITY synopsis-filename \"nom_de_fichier\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-path \"path\">"
+msgstr "<!ENTITY synopsis-path \"chemin\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-override "
+"\"override-file\">"
+msgstr "<!ENTITY synopsis-override \"fichier-override\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-pathprefix "
+"\"pathprefix\">"
+msgstr "<!ENTITY synopsis-pathprefix \"préfixe_de_chemin\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"generate section --> <!ENTITY synopsis-section \"section\">"
+msgstr "<!ENTITY synopsis-section \"section\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
+msgstr "<!ENTITY synopsis-keyid \"id_de_clé\">"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+msgid "8"
+msgstr "8"
+
+#. type: Content of: <refentry><refmeta><refmiscinfo>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "APT"
+msgstr "APT"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.8.xml
+msgid "command-line interface"
+msgstr "interface en ligne de commande"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "Description"
+msgstr "Description"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"<command>apt</command> provides a high-level commandline interface for the "
+"package management system. It is intended as an end user interface and "
+"enables some options better suited for interactive usage by default compared "
+"to more specialized APT tools like &apt-get; and &apt-cache;."
+msgstr ""
+"<command>apt</command> fournit une interface en ligne de commande pour le "
+"système de gestion de paquets. Elle est conçue comme une interface "
+"utilisateur et permet certaines options plus adaptées à une utilisation "
+"interactive par défaut par rapport aux outils d'APT plus spécialisés tels "
+"que &apt-get; et &apt-cache;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"Much like <command>apt</command> itself, its manpage is intended as an end "
+"user interface and as such only mentions the most used commands and options "
+"partly to not duplicate information in multiple places and partly to avoid "
+"overwhelming readers with a cornucopia of options and details."
+msgstr ""
+"Exactement comme <command>apt</command> lui-même, cette page de manuel vise "
+"à être une interface pour l'utilisateur et ainsi elle ne mentionne que les "
+"commandes et les options les plus courantes, en partie pour ne pas répéter "
+"les informations à de multiples emplacements et en partie pour ne pas noyer "
+"le lecteur par une surabondance d'options et de détails."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(&apt-get;)"
+msgstr "(&apt-get;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>update</option> is used to download package information from all "
+"configured sources. Other commands operate on this data to e.g. perform "
+"package upgrades or search in and display details about all packages "
+"available for installation."
+msgstr ""
+"La commande <option>update</option> permet de télécharger les informations "
+"sur les paquets à partir des sources configurées. D'autres commandes "
+"agissent sur ces données, par exemple, réalisent la mise à jour de paquet ou "
+"recherchent et affichent des détails à propos de tous les paquets qui "
+"peuvent être installés."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>upgrade</option> is used to install available upgrades of all "
+"packages currently installed on the system from the sources configured via "
+"&sources-list;. New packages will be installed if required to satisfy "
+"dependencies, but existing packages will never be removed. If an upgrade for "
+"a package requires the remove of an installed package the upgrade for this "
+"package isn't performed."
+msgstr ""
+"La commande <literal>upgrade</literal> permet d'installer les mises à jour "
+"disponibles de tous les paquets présents sur le système en utilisant les "
+"sources énumérées dans &sources-list;. De nouveaux paquets seront installés "
+"si cela est nécessaire pour satisfaire des dépendances, mais les paquets "
+"installés ne seront jamais supprimés. Si la mise à jour d'un paquet "
+"nécessite la suppression d'un paquet installé, la mise à jour n'est pas "
+"réalisée."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>full-upgrade</literal> performs the function of upgrade but will "
+"remove currently installed packages if this is needed to upgrade the system "
+"as a whole."
+msgstr ""
+"La commande <literal>full-upgrade</literal> remplit la même fonction que "
+"upgrade mais supprimera des paquets actuellement installés si cela est "
+"nécessaire pour mettre à jour le système dans son ensemble."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml apt-key.8.xml
+msgid ","
+msgstr ","
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Performs the requested action on one or more packages specified via &regex;, "
+"&glob; or exact match. The requested action can be overridden for specific "
+"packages by append a plus (+) to the package name to install this package or "
+"a minus (-) to remove it."
+msgstr ""
+"La commande réalise l'action requise sur un ou plusieurs paquets spécifiés "
+"avec &regex;, &glob; ou avec la correspondance exacte. Les actions requises "
+"peuvent être remplacées pour certains paquets en ajoutant un plus (+) au nom "
+"du paquet pour l'installer et ou un moins (-) pour le supprimer."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals (=) and the version of the package "
+"to select. Alternatively the version from a specific release can be selected "
+"by following the package name with a forward slash (/) and codename (&debian-"
+"stable-codename;, &debian-testing-codename;, sid …) or suite name (stable, "
+"testing, unstable). This will also select versions from this release for "
+"dependencies of this package if needed to satisfy the request."
+msgstr ""
+"On peut choisir d'installer une version particulière d'un paquet en faisant "
+"suivre son nom par un signe égal (=) et par la version du paquet à "
+"sélectionner. Autrement, on peut choisir une version spécifique en faisant "
+"suivre le nom du paquet par une barre oblique (/) et le nom de code (&debian-"
+"stable-codename;, &debian-testing-codename;, sid …) ou un nom de suite "
+"(stable, testing, unstable). Cela sélectionnera aussi cette version pour les "
+"dépendances de ce paquet si cela est nécessaire pour satisfaire la requête."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Removing a package removes all packaged data, but leaves usually small "
+"(modified) user configuration files behind, in case the remove was an "
+"accident. Just issuing an installation request for the accidentally removed "
+"package will restore its function as before in that case. On the other hand "
+"you can get rid of these leftovers by calling <command>purge</command> even "
+"on already removed packages. Note that this does not affect any data or "
+"configuration stored in your home directory."
+msgstr ""
+"La suppression d'un paquet entraîne la suppression de toutes les données "
+"empaquetées, mais conserve habituellement les petits fichiers (modifiés) de "
+"configuration de l'utilisateur, pour le cas où la suppression a été "
+"accidentelle. Dans ce cas, il suffira d'émettre une demande d'installation "
+"pour le paquet supprimé accidentellement pour restaurer son fonctionnement "
+"antérieur. D'autre part, on peut facilement se débarrasser de ces reliquats "
+"en appelant la commande <command>purge</command> même sur des paquets déjà "
+"supprimés. Notez que cela n'affecte aucune donnée ou configuration stockées "
+"dans votre répertoire personnel."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed as dependencies changed or the package(s) needing them "
+"were removed in the meantime."
+msgstr ""
+"La commande <literal>autoremove</literal>, supprime les paquets installés "
+"automatiquement dans le but de satisfaire les dépendances d'autres paquets "
+"et qui ne sont plus nécessaires parce que les dépendances ont changé ou "
+"parce que le ou les paquets ont été supprimés entre-temps."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"You should check that the list does not include applications you have grown "
+"to like even though they were once installed just as a dependency of another "
+"package. You can mark such a package as manually installed by using &apt-"
+"mark;. Packages which you have installed explicitly via <command>install</"
+"command> are also never proposed for automatic removal."
+msgstr ""
+"Vous devriez vérifier que la liste ne contient pas des applications que vous "
+"avez fini par apprécier, même si elles ont été installées seulement comme "
+"dépendance d'un autre paquet. Vous pouvez marquer ces paquets comme "
+"installés manuellement avec &apt-mark;. Les paquets que vous avez installés "
+"explicitement avec la commande <command>install</command> ne seront jamais "
+"proposés non plus pour une suppression automatique."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(&apt-cache;)"
+msgstr "(&apt-cache;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>search</option> can be used to search for the given &regex; term(s) "
+"in the list of available packages and display matches. This can e.g. be "
+"useful if you are looking for packages having a specific feature. If you "
+"are looking for a package including a specific file try &apt-file;."
+msgstr ""
+"La commande <option>search</option> peut être utilisée pour rechercher le(s) "
+"terme(s) &regex; donné(s) dans la liste de paquets disponibles et affiche "
+"les paquets correspondants. Par exemple, cela peut être utile pour "
+"rechercher des paquets dotés d'une fonctionnalité particulière. Si vous "
+"recherchez un paquet qui fournit un fichier particulier, essayez &apt-file;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Show information about the given package(s) including its dependencies, "
+"installation and download size, sources the package is available from, the "
+"description of the packages content and much more. It can e.g. be helpful to "
+"look at this information before allowing &apt; to remove a package or while "
+"searching for new packages to install."
+msgstr ""
+"La commande affiche des informations sur le(s) paquet(s) donné(s) y compris "
+"ses dépendances, sa taille installé et au téléchargement, les sources d’où "
+"provient le paquet, la description du contenu des paquets et bien plus "
+"encore. Cela peut être utile pour consulter ces informations avant "
+"d'autoriser &apt; à supprimer un paquet ou lors d'une recherche de nouveaux "
+"paquets à installer."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(work-in-progress)"
+msgstr "(travail en cours)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>list</option> is somewhat similar to <command>dpkg-query --list</"
+"command> in that it can display a list of packages satisfying certain "
+"criteria. It supports &glob; patterns for matching package names as well as "
+"options to list installed (<option>--installed</option>), upgradeable "
+"(<option>--upgradeable</option>) or all available (<option>--all-versions</"
+"option>) versions."
+msgstr ""
+"La commande <literal>list</literal> est à peu près semblable à la commande "
+"<command>dpkg-query --list</command> dans la mesure où elle peut afficher "
+"une liste de paquets qui satisfont à certains critères. Elle gère les motifs "
+"&glob; pour la correspondance des noms de paquets ainsi que des options pour "
+"afficher les versions installées <option>--installed</option>, pouvant être "
+"mises à jour <option>--upgradeable</option>, ou toutes les versions "
+"disponibles <option>--all-versions</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>edit-sources</literal> lets you edit your &sources-list; files in "
+"your preferred texteditor while also providing basic sanity checks."
+msgstr ""
+"La commande <literal>edit-sources</literal> permet de modifier le fichier "
+"&sources-list; avec votre éditeur de texte préféré et fournit des "
+"vérifications de sécurité de base."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml
+msgid "Script Usage and Differences from Other APT Tools"
+msgstr "Utilisation de scripts et différences avec les autres outils d'APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"The &apt; commandline is designed as an end-user tool and it may change "
+"behavior between versions. While it tries not to break backward "
+"compatibility this is not guaranteed either if a change seems beneficial for "
+"interactive use."
+msgstr ""
+"La ligne de commande de &apt; est conçue comme un outil pour l'utilisateur "
+"et son comportement peut varier selon ses versions. Bien qu'il s'efforce de "
+"ne pas casser les compatibilités ascendantes, cela ne peut pas non plus être "
+"garanti, si une modification semble bénéfique pour une utilisation "
+"interactive."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"All features of &apt; are available in dedicated APT tools like &apt-get; "
+"and &apt-cache; as well. &apt; just changes the default value of some "
+"options (see &apt-conf; and specifically the Binary scope). So you should "
+"prefer using these commands (potentially with some additional options "
+"enabled) in your scripts as they keep backward compatibility as much as "
+"possible."
+msgstr ""
+"Toutes les fonctionnalités d'&apt; sont aussi proposées dans les outils "
+"dédiés d'APT tels que &apt-get; ou &apt-cache; &apt; modifie seulement la "
+"valeur par défaut de certaines options (voir &apt-conf; et en particulier le "
+"champ d'action Binary). Aussi vous devriez préférer l'utilisation de ces "
+"commandes (éventuellement avec certaines options complémentaires activées) "
+"dans les scripts parce qu'elles conservent autant que possible la "
+"compatibilité ascendante."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "See Also"
+msgstr "Voir aussi"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
+"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+msgstr ""
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, le guide "
+"d'APT dans &guidesdir;, &apt-preferences;, le « HOWTO » d'APT."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-cdrom.8.xml
+#: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml
+msgid "Diagnostics"
+msgstr "Diagnostics"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"<command>apt</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+"<command>apt</command> renvoie zéro après une opération normale, et le "
+"décimal 100 en cas d'erreur."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-get.8.xml
+msgid "APT package handling utility -- command-line interface"
+msgstr ""
+"Utilitaire APT pour la gestion des paquets -- interface en ligne de commande."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"<command>apt-get</command> is the command-line tool for handling packages, "
+"and may be considered the user's \"back-end\" to other tools using the APT "
+"library. Several \"front-end\" interfaces exist, such as &aptitude;, "
+"&synaptic; and &wajig;."
+msgstr ""
+"<command>apt-get</command> est le programme en ligne de commande pour la "
+"gestion des paquets. Il peut être considéré comme l'outil de base pour les "
+"autres programmes de la bibliothèque APT. Plusieurs interfaces utilisateur "
+"existent, comme &aptitude;, &synaptic; and &wajig;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml apt-cache.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt-ftparchive.1.xml
+msgid ""
+"Unless the <option>-h</option>, or <option>--help</option> option is given, "
+"one of the commands below must be present."
+msgstr ""
+"À moins que l'option <option>-h</option> ou <option>--help</option> ne soit "
+"donnée, l'une des commandes suivantes doit être présente."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>update</literal> is used to resynchronize the package index files "
+"from their sources. The indexes of available packages are fetched from the "
+"location(s) specified in <filename>/etc/apt/sources.list</filename>. For "
+"example, when using a Debian archive, this command retrieves and scans the "
+"<filename>Packages.gz</filename> files, so that information about new and "
+"updated packages is available. An <literal>update</literal> should always be "
+"performed before an <literal>upgrade</literal> or <literal>dist-upgrade</"
+"literal>. Please be aware that the overall progress meter will be incorrect "
+"as the size of the package files cannot be known in advance."
+msgstr ""
+"La commande <literal>update</literal> permet de resynchroniser un fichier "
+"d'index répertoriant les paquets disponibles et sa source. Ces fichiers sont "
+"récupérés aux endroits spécifiés dans <filename>/etc/apt/sources.list</"
+"filename>. Ainsi, lorsqu'on utilise une archive Debian, cette commande "
+"récupère les fichiers <filename>Packages.gz</filename> et les analyse de "
+"manière à rendre disponibles les informations concernant les nouveaux "
+"paquets et les paquets mis à jour. On devrait toujours exécuter une commande "
+"<literal>update</literal> avant les commandes <literal>upgrade</literal> ou "
+"<literal>dist-upgrade</literal>. Veuillez noter que l'indicateur de "
+"progression d'ensemble peut être imprécis puisque la taille de ces fichiers "
+"ne peut être connue à l'avance."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>upgrade</literal> is used to install the newest versions of all "
+"packages currently installed on the system from the sources enumerated in "
+"<filename>/etc/apt/sources.list</filename>. Packages currently installed "
+"with new versions available are retrieved and upgraded; under no "
+"circumstances are currently installed packages removed, or packages not "
+"already installed retrieved and installed. New versions of currently "
+"installed packages that cannot be upgraded without changing the install "
+"status of another package will be left at their current version. An "
+"<literal>update</literal> must be performed first so that <command>apt-get</"
+"command> knows that new versions of packages are available."
+msgstr ""
+"La commande <literal>upgrade</literal> permet d'installer les versions les "
+"plus récentes de tous les paquets présents sur le système en utilisant les "
+"sources énumérées dans <filename>/etc/apt/sources.list</filename>. Les "
+"paquets installés dont il existe de nouvelles versions sont récupérés et mis "
+"à niveau. En aucun cas des paquets déjà installés ne sont supprimés ; de "
+"même, des paquets qui ne sont pas déjà installés ne sont ni récupérés ni "
+"installés. Les paquets dont de nouvelles versions ne peuvent pas être "
+"installées sans changer le statut d'installation d'un autre paquet sont "
+"laissés dans leur version courante. On doit d'abord exécuter la commande "
+"<literal>update</literal> pour que <command>apt-get</command> connaisse "
+"l'existence de nouvelles versions des paquets."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>dist-upgrade</literal> in addition to performing the function of "
+"<literal>upgrade</literal>, also intelligently handles changing dependencies "
+"with new versions of packages; <command>apt-get</command> has a \"smart\" "
+"conflict resolution system, and it will attempt to upgrade the most "
+"important packages at the expense of less important ones if necessary. The "
+"<literal>dist-upgrade</literal> command may therefore remove some packages. "
+"The <filename>/etc/apt/sources.list</filename> file contains a list of "
+"locations from which to retrieve desired package files. See also &apt-"
+"preferences; for a mechanism for overriding the general settings for "
+"individual packages."
+msgstr ""
+"La commande <literal>dist-upgrade</literal> effectue la fonction "
+"<literal>upgrade</literal> en y ajoutant une gestion intelligente des "
+"changements de dépendances dans les nouvelles versions des paquets ; "
+"<command>apt-get</command> possède un système « intelligent » de résolution "
+"des conflits et il essaye, quand c'est nécessaire, de mettre à niveau les "
+"paquets les plus importants avant les paquets les moins importants. Le "
+"fichier <filename>/etc/apt/sources.list</filename> contient une liste de "
+"sources où récupérer les paquets désirés. Voyez aussi &apt-preferences; pour "
+"un mécanisme de remplacement des paramètres généraux pour certains paquets."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>dselect-upgrade</literal> is used in conjunction with the "
+"traditional Debian packaging front-end, &dselect;. <literal>dselect-upgrade</"
+"literal> follows the changes made by &dselect; to the <literal>Status</"
+"literal> field of available packages, and performs the actions necessary to "
+"realize that state (for instance, the removal of old and the installation of "
+"new packages)."
+msgstr ""
+"<literal>dselect-upgrade</literal> est utilisée conjointement avec "
+"&dselect;, la plus ancienne interface du projet Debian pour la gestion des "
+"paquets. La commande <literal>dselect-upgrade</literal> suit les "
+"modifications faites par &dselect; dans le champ <literal>Status</literal> "
+"des paquets disponibles, et effectue les actions nécessaires à la "
+"réalisation de cet état (par exemple, suppression d'anciens paquets, "
+"installation de nouveaux paquets)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>install</literal> is followed by one or more packages desired for "
+"installation or upgrading. Each package is a package name, not a fully "
+"qualified filename (for instance, in a Debian system, <package>apt-utils</"
+"package> would be the argument provided, not <filename>apt-utils_&apt-"
+"product-version;_amd64.deb</filename>). All packages required by the "
+"package(s) specified for installation will also be retrieved and installed. "
+"The <filename>/etc/apt/sources.list</filename> file is used to locate the "
+"desired packages. If a hyphen is appended to the package name (with no "
+"intervening space), the identified package will be removed if it is "
+"installed. Similarly a plus sign can be used to designate a package to "
+"install. These latter features may be used to override decisions made by apt-"
+"get's conflict resolution system."
+msgstr ""
+"La commande <literal>install</literal> est suivie par un ou plusieurs "
+"paquets à installer. Chaque paquet est un nom de paquet ; ce n'est pas un "
+"nom complet de fichier (par exemple, dans un système Debian, on indiquera "
+"<package>apt-utils</package> et non pas <filename>apt-utils_&apt-product-"
+"version;_amd64.deb</filename>). Tous les paquets requis par le(s) paquet(s) "
+"que l'on veut installer sont aussi récupérés et installés. Le fichier "
+"<filename>/etc/apt/sources.list</filename> est utilisé pour retrouver les "
+"paquets désirés. Quand un trait d'union est accolé (sans espace "
+"intermédiaire) au nom d'un paquet déjà installé, ce paquet est supprimé. De "
+"même on peut ajouter un signe « + » pour désigner un paquet à installer. "
+"Cette dernière fonctionnalité peut être utilisée pour annuler les décisions "
+"prises par le système de résolution des conflits d'apt-get."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals and the version of the package to "
+"select. This will cause that version to be located and selected for install. "
+"Alternatively a specific distribution can be selected by following the "
+"package name with a slash and the version of the distribution or the Archive "
+"name (stable, testing, unstable)."
+msgstr ""
+"On peut choisir d'installer une version particulière d'un paquet en faisant "
+"suivre son nom par un signe égal et par la version. Cette version sera "
+"recherchée et l'installation sera demandée. On peut aussi choisir une "
+"distribution particulière en faisant suivre le nom du paquet par une barre "
+"oblique et par le nom de la distribution ou de l'archive (stable, testing, "
+"unstable)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Both of the version selection mechanisms can downgrade packages and must be "
+"used with care."
+msgstr ""
+"Avec ces possibilités de choisir la version, de vieilles versions d'un "
+"paquet peuvent être installées. Cette fonctionnalité est donc à utiliser "
+"avec précaution."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This is also the target to use if you want to upgrade one or more already-"
+"installed packages without upgrading every package you have on your system. "
+"Unlike the \"upgrade\" target, which installs the newest version of all "
+"currently installed packages, \"install\" will install the newest version of "
+"only the package(s) specified. Simply provide the name of the package(s) "
+"you wish to upgrade, and if a newer version is available, it (and its "
+"dependencies, as described above) will be downloaded and installed."
+msgstr ""
+"Cette méthode est aussi utile pour mettre à jour un ou plusieurs paquets "
+"déjà installés sans mettre à jour les autres paquets du système. À la "
+"différence de la commande « upgrade » qui installera la dernière version "
+"disponible de tous les paquets installés au moment de son exécution, "
+"« install » n'installera la nouvelle version que pour le(s) paquet(s) "
+"indiqué(s). Il suffit de fournir le nom du(des) paquet(s) à mettre à jour et "
+"si une nouvelle version est disponible, cette version (et ses dépendances, "
+"comme décrit plus haut) sera récupérée et installée."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Finally, the &apt-preferences; mechanism allows you to create an alternative "
+"installation policy for individual packages."
+msgstr ""
+"Enfin, le mécanisme d'&apt-preferences; permet de créer d'autres règles pour "
+"l'installation des paquets."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If no package matches the given expression and the expression contains one "
+"of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and "
+"it is applied to all package names in the database. Any matches are then "
+"installed (or removed). Note that matching is done by substring so 'lo.*' "
+"matches 'how-lo' and 'lowest'. If this is undesired, anchor the regular "
+"expression with a '^' or '$' character, or create a more specific regular "
+"expression."
+msgstr ""
+"Quand aucun paquet ne correspond à l'expression donnée en paramètre et que "
+"cette expression contient l'un des caractères « . », « ? » ou « * », elle "
+"est considérée comme une expression rationnelle POSIX et elle est appliquée "
+"à tous les paquets de la base de données. Tout paquet correspondant est "
+"installé (ou supprimé). Veuillez noter que la comparaison est effectuée par "
+"sous-chaîne et « lo.* » correspond aussi bien à « how-lo » qu'à « lowest ». "
+"Si ce n'est pas le comportement souhaité, l'expression peut être ancrée avec "
+"un caractère « ^ » ou un caractère « $ », une autre possibilité étant "
+"d'utiliser une expression plus précise."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>remove</literal> is identical to <literal>install</literal> except "
+"that packages are removed instead of installed. Note that removing a package "
+"leaves its configuration files on the system. If a plus sign is appended to "
+"the package name (with no intervening space), the identified package will be "
+"installed instead of removed."
+msgstr ""
+"La commande <literal>remove</literal> est identique à la commande "
+"<literal>install</literal>, les paquets étant alors supprimés et non "
+"installés. Veuillez noter que la suppression d'un paquet en laisse les "
+"fichiers de configuration sur le système. Quand un signe plus est accolé "
+"(sans espace intermédiaire) au nom du paquet, le paquet est installé au lieu "
+"d'être supprimé."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>purge</literal> is identical to <literal>remove</literal> except "
+"that packages are removed and purged (any configuration files are deleted "
+"too)."
+msgstr ""
+"La commande <literal>purge</literal> est identique à <literal>remove</"
+"literal> mais les paquets indiqués sont supprimés et purgés (leurs fichiers "
+"de configuration sont également effacés)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>source</literal> causes <command>apt-get</command> to fetch source "
+"packages. APT will examine the available packages to decide which source "
+"package to fetch. It will then find and download into the current directory "
+"the newest available version of that source package while respecting the "
+"default release, set with the option <literal>APT::Default-Release</"
+"literal>, the <option>-t</option> option or per package with the "
+"<literal>pkg/release</literal> syntax, if possible."
+msgstr ""
+"Avec la commande <literal>source</literal>, <command>apt-get</command> "
+"récupère des paquets source. APT examine les paquets disponibles pour "
+"choisir le paquet source à récupérer. Il télécharge ensuite dans le "
+"répertoire courant la version la plus récente du paquet, définie par rapport "
+"à la distribution par défaut établie soit avec l'option <literal>APT::"
+"Default-Release</literal>, soit avec l'option <option>-t</option> ou soit "
+"par paquet avec la syntaxe <literal>paquet/version</literal> si possible."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Source packages are tracked separately from binary packages via <literal>deb-"
+"src</literal> lines in the &sources-list; file. This means that you will "
+"need to add such a line for each repository you want to get sources from; "
+"otherwise you will probably get either the wrong (too old/too new) source "
+"versions or none at all."
+msgstr ""
+"Les paquets source sont gérés indépendamment des paquets binaires, avec les "
+"lignes <literal>deb-src</literal> dans le fichier &sources-list;. Il est "
+"donc nécessaire d'ajouter une telle ligne pour chaque dépôt pour lequel vous "
+"souhaitez pouvoir obtenir les sources. Dans le cas contraire, vous "
+"n'obtiendrez pas les mêmes sources que celles du paquet que vous avez "
+"installé ou que vous voulez installer."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If the <option>--compile</option> option is specified then the package will "
+"be compiled to a binary .deb using <command>dpkg-buildpackage</command> for "
+"the architecture as defined by the <command>--host-architecture</command> "
+"option. If <option>--download-only</option> is specified then the source "
+"package will not be unpacked."
+msgstr ""
+"Si l'option <option>--compile</option> est spécifiée, le paquet est compilé "
+"en un binaire .deb avec <command>dpkg-buildpackage</command> pour "
+"l'architecture définie par l'option <command>--host-architecture</command>. "
+"Si <option>--download-only</option> est spécifié, le source n'est pas "
+"décompacté."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"A specific source version can be retrieved by postfixing the source name "
+"with an equals and then the version to fetch, similar to the mechanism used "
+"for the package files. This enables exact matching of the source package "
+"name and version, implicitly enabling the <literal>APT::Get::Only-Source</"
+"literal> option."
+msgstr ""
+"De la même façon qu'avec les paquets binaires, on peut récupérer une version "
+"particulière d'un paquet source en faisant suivre son nom par un signe égal "
+"et par la version. Cela permet une comparaison exacte entre le nom du paquet "
+"source et la version ; l'option correspondante est : <literal>APT::Get::Only-"
+"Source</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Note that source packages are not installed and tracked in the "
+"<command>dpkg</command> database like binary packages; they are simply "
+"downloaded to the current directory, like source tarballs."
+msgstr ""
+"Veuillez noter que les paquets source ne sont pas installés et suivis dans "
+"la base de données de <command>dpkg</command> comme le sont les paquets "
+"binaires ; ils sont simplement téléchargés dans le répertoire courant, comme "
+"les archives tar."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>build-dep</literal> causes apt-get to install/remove packages in an "
+"attempt to satisfy the build dependencies for a source package. By default "
+"the dependencies are satisfied to build the package natively. If desired a "
+"host-architecture can be specified with the <option>--host-architecture</"
+"option> option instead."
+msgstr ""
+"Avec la commande <literal>build-dep</literal>, apt-get installe ou supprime "
+"des paquets dans le but de satisfaire les dépendances de construction d'un "
+"paquet source. Par défaut, les dépendances sont satisfaites pour la "
+"construction native du paquet. Au besoin, une architecture hôte peut être "
+"indiquée avec l'option <option>--host-architecture</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>check</literal> is a diagnostic tool; it updates the package cache "
+"and checks for broken dependencies."
+msgstr ""
+"La commande <literal>check</literal> est un outil de diagnostic ; il met à "
+"jour le cache des paquets et cherche les dépendances défectueuses."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>download</literal> will download the given binary package into the "
+"current directory."
+msgstr ""
+"<literal>download</literal> télécharge le fichier binaire indiqué dans le "
+"répertoire courant."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>clean</literal> clears out the local repository of retrieved "
+"package files. It removes everything but the lock file from "
+"<filename>&cachedir;/archives/</filename> and <filename>&cachedir;/archives/"
+"partial/</filename>."
+msgstr ""
+"La commande <literal>clean</literal> nettoie le référentiel local des "
+"paquets récupérés. Elle supprime tout, excepté le fichier de verrou situé "
+"dans <filename>&cachedir;/archives/</filename> et <filename>&cachedir;/"
+"archives/partial/</filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "(and the"
+msgstr "(et"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias since 1.1)"
+msgstr "l'alias depuis la version 1.1)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Like <literal>clean</literal>, <literal>autoclean</literal> clears out the "
+"local repository of retrieved package files. The difference is that it only "
+"removes package files that can no longer be downloaded, and are largely "
+"useless. This allows a cache to be maintained over a long period without it "
+"growing out of control. The configuration option <literal>APT::Clean-"
+"Installed</literal> will prevent installed packages from being erased if it "
+"is set to off."
+msgstr ""
+"Tout comme <literal>clean</literal>, <literal>autoclean</literal> nettoie le "
+"référentiel local des paquets récupérés. La différence est qu'il supprime "
+"uniquement les paquets qui ne peuvent plus être téléchargés et qui sont "
+"inutiles. On peut ainsi contrôler la taille de ce cache sur une longue "
+"période. Tant qu'elle n'est pas activée, l'option de configuration "
+"<literal>APT::Clean-Installed</literal> empêche la suppression de paquets "
+"installés."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed."
+msgstr ""
+"Avec la commande <literal>autoremove</literal>, apt-get supprime les paquets "
+"installés dans le but de satisfaire les dépendances d'autres paquets et qui "
+"ne sont plus nécessaires."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>changelog</literal> tries to download the changelog of a package "
+"and displays it through <command>sensible-pager</command>. By default it "
+"displays the changelog for the version that is installed. However, you can "
+"specify the same options as for the <option>install</option> command."
+msgstr ""
+"<literal>changelog</literal> tente de télécharger le journal des "
+"modifications d'un paquet et l'affiche avec <command>sensible-pager</"
+"command>. Par défaut, c'est le journal des modifications de la version "
+"installée du paquet qui est affiché. Cependant, il est possible d'utiliser "
+"les mêmes options que pour la commande <option>install</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Displays by default a deb822 formatted listing of information about all data "
+"files (aka index targets) <command>apt-get update</command> would download. "
+"Supports a <option>--format</option> option to modify the output format as "
+"well as accepts lines of the default output to filter the records by. The "
+"command is mainly used as an interface for external tools working with APT "
+"to get information as well as filenames for downloaded files so they can use "
+"them as well instead of downloading them again on their own. Detailed "
+"documentation is omitted here and can instead be found in the file &apt-"
+"acquire-additional-files; shipped by the <package>apt-doc</package> package."
+msgstr ""
+"La commande affiche par défaut une liste au format deb822 des informations "
+"sur tous les fichiers de données (ou cibles d'index) que <command>apt-get "
+"update</command> peut télécharger. Elle prend en charge une option <option>--"
+"format</option> pour modifier le format de sortie et accepte les lignes de "
+"la sortie par défaut pour filtrer les enregistrements. La commande est "
+"utilisée principalement comme interface avec les outils qui fonctionnent "
+"avec APT pour obtenir des informations comme les noms des fichiers "
+"téléchargés de telle sorte qu'ils peuvent les utiliser plutôt que de les "
+"télécharger à nouveau de leur côté. La documentation détaillée, absente ici, "
+"peut être trouvée dans le fichier &apt-acquire-additional-files; fourni par "
+"le paquet <package>apt-doc</package>."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml apt-cache.8.xml apt-config.8.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "options"
+msgstr "options"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not consider recommended packages as a dependency for installing. "
+"Configuration Item: <literal>APT::Install-Recommends</literal>."
+msgstr ""
+"Ne pas considérer les paquets recommandés comme des dépendances à installer. "
+"Élément de configuration : <literal>APT::Install-Recommends</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Consider suggested packages as a dependency for installing. Configuration "
+"Item: <literal>APT::Install-Suggests</literal>."
+msgstr ""
+"Considérer les paquets suggérés comme des dépendances à installer. Élément "
+"de configuration : <literal>APT::Install-Suggests</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Download only; package files are only retrieved, not unpacked or installed. "
+"Configuration Item: <literal>APT::Get::Download-Only</literal>."
+msgstr ""
+"Récupération seule ; les paquets sont récupérés mais ne sont ni dépaquetés "
+"ni installés. Élément de configuration : <literal>APT::Get::Download-Only</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Fix; attempt to correct a system with broken dependencies in place. This "
+"option, when used with install/remove, can omit any packages to permit APT "
+"to deduce a likely solution. If packages are specified, these have to "
+"completely correct the problem. The option is sometimes necessary when "
+"running APT for the first time; APT itself does not allow broken package "
+"dependencies to exist on a system. It is possible that a system's dependency "
+"structure can be so corrupt as to require manual intervention (which usually "
+"means using <command>dpkg --remove</command> to eliminate some of the "
+"offending packages). Use of this option together with <option>-m</option> "
+"may produce an error in some situations. Configuration Item: <literal>APT::"
+"Get::Fix-Broken</literal>."
+msgstr ""
+"Correction ; cette option demande de réparer un système où existent des "
+"dépendances défectueuses. Utilisée avec install ou remove, elle peut exclure "
+"un paquet pour permettre de déduire une solution viable. Tout paquet "
+"spécifié doit complètement corriger le problème. Cette option est "
+"quelquefois nécessaire lorsque l'on exécute APT pour la première fois ; APT "
+"interdit les dépendances défectueuses dans un système. Il est possible que "
+"la structure de dépendances d'un système soit tellement corrompue qu'elle "
+"requiert une intervention manuelle (ce qui veut dire la plupart du temps "
+"utiliser <command>dpkg --remove</command> pour éliminer les paquets en "
+"cause). L'utilisation de cette option conjointement avec <option>-m</option> "
+"peut produire une erreur dans certaines situations. Élément de "
+"configuration : <literal>APT::Get::Fix-Broken</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore missing packages; if packages cannot be retrieved or fail the "
+"integrity check after retrieval (corrupted package files), hold back those "
+"packages and handle the result. Use of this option together with <option>-f</"
+"option> may produce an error in some situations. If a package is selected "
+"for installation (particularly if it is mentioned on the command line) and "
+"it could not be downloaded then it will be silently held back. "
+"Configuration Item: <literal>APT::Get::Fix-Missing</literal>."
+msgstr ""
+"Ignorer les paquets manquants ; si des paquets ne peuvent être récupérés, "
+"ou, après récupération, ne satisfont pas au contrôle d'intégrité, cette "
+"commande met ces paquets de côté et gère le résultat. Utiliser cette option "
+"conjointement avec <option>-f</option> peut produire une erreur dans "
+"certaines situations. Quand un paquet, sélectionné pour une installation "
+"(particulièrement si c'est mentionné en ligne de commande), ne peut être "
+"récupéré, il est mis silencieusement de côté. Élément de configuration : "
+"<literal>APT::Get::Fix-Missing</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Disables downloading of packages. This is best used with <option>--ignore-"
+"missing</option> to force APT to use only the .debs it has already "
+"downloaded. Configuration Item: <literal>APT::Get::Download</literal>."
+msgstr ""
+"Pas de récupération. Le mieux est d'utiliser cette option avec <option>--"
+"ignore-missing</option> pour forcer APT à n'utiliser que les .deb qu'il a "
+"déjà récupérés. Élément de configuration : <literal>APT::Get::Download</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Note that quiet level 2 implies <option>-y</option>; you should never "
+"use -qq without a no-action modifier such as -d, --print-uris or -s as APT "
+"may decide to do something you did not expect. Configuration Item: "
+"<literal>quiet</literal>."
+msgstr ""
+"Mode silencieux ; cette commande produit une sortie destinée à "
+"l'enregistrement dans un fichier-journal en omettant les indicateurs de "
+"progression. Un plus grand nombre de « q » (2 au plus) produit un plus grand "
+"silence. On peut aussi utiliser <option>-q=#</option> pour positionner le "
+"niveau de silence, et annuler le fichier de configuration. Notez qu'un "
+"niveau de silence égal à 2 implique <option>-y</option> et vous ne devez "
+"jamais utiliser <option>-qq</option> sans l'accompagner d'un modificateur "
+"tel que <option>-d</option>, <option>--print-uris</option> ou <option>-s</"
+"option> : APT pourrait alors exécuter des actions inattendues. Élément de "
+"configuration : <literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"No action; perform a simulation of events that would occur based on the "
+"current system state but do not actually change the system. Locking will be "
+"disabled (<option>Debug::NoLocking</option>) so the system state could "
+"change while <command>apt-get</command> is running. Simulations can also be "
+"executed by non-root users which might not have read access to all apt "
+"configuration distorting the simulation. A notice expressing this warning "
+"is also shown by default for non-root users (<option>APT::Get::Show-User-"
+"Simulation-Note</option>). Configuration Item: <literal>APT::Get::Simulate</"
+"literal>."
+msgstr ""
+"Pas d'action ; réalise une simulation des événements qui pourraient survenir "
+"sur la base de l'état du système actuel, mais ne modifie pas véritablement "
+"le système. Le verrouillage sera désactivé (<option>Debug::NoLocking</"
+"option>), ainsi l'état du système peut changer pendant que <command>apt-get</"
+"command> est exécuté. Les simulations peuvent aussi être exécutées par les "
+"utilisateurs ordinaires qui pourraient ne pas avoir accès en lecture à toute "
+"la configuration d'apt, ce qui fausse la simulation. Une annonce exprimant "
+"cet avertissement est aussi affichée par défaut pour les utilisateurs "
+"ordinaires (<option>APT::Get::Show-User-Simulation-Note</option>). Élément "
+"de configuration : <literal>APT::Get::Simulate</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Simulated runs print out a series of lines, each representing a "
+"<command>dpkg</command> operation: configure (<literal>Conf</literal>), "
+"remove (<literal>Remv</literal>) or unpack (<literal>Inst</literal>). "
+"Square brackets indicate broken packages, and empty square brackets indicate "
+"breaks that are of no consequence (rare)."
+msgstr ""
+"La simulation affiche une série de lignes représentant chacune une opération "
+"de <command>dpkg</command>, Configure (<literal>Conf</literal>), Remove "
+"(<literal>Remv</literal>), Unpack (<literal>Inst</literal>). Des crochets "
+"encadrent des paquets endommagés et des crochets n'encadrant rien indiquent "
+"que les dommages n'ont aucune conséquence (rare)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Automatic yes to prompts; assume \"yes\" as answer to all prompts and run "
+"non-interactively. If an undesirable situation, such as changing a held "
+"package, trying to install a unauthenticated package or removing an "
+"essential package occurs then <literal>apt-get</literal> will abort. "
+"Configuration Item: <literal>APT::Get::Assume-Yes</literal>."
+msgstr ""
+"Répondre automatiquement oui aux questions ; présume « oui » comme réponse à "
+"toutes les questions et s'exécute de manière non interactive. Dans le cas "
+"d'une situation indésirable, comme le changement d'un paquet gelé, "
+"l'installation d'un paquet non authentifié ou la suppression d'un paquet "
+"essentiel, <literal>apt-get</literal> s'interrompt. Élément de "
+"configuration : <literal>APT::Get::Assume-Yes</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Automatic \"no\" to all prompts. Configuration Item: <literal>APT::Get::"
+"Assume-No</literal>."
+msgstr ""
+"Répondre automatiquement négativement aux questions. Élément de "
+"configuration : <literal>APT::Get::Assume-No</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not show a list of all packages that are to be upgraded. Configuration "
+"Item: <literal>APT::Get::Show-Upgraded</literal>."
+msgstr ""
+"Ne pas afficher la liste de tous les paquets qui doivent être mis à niveau. "
+"Élément de configuration : <literal>APT::Get::Show-Upgraded</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Show full versions for upgraded and installed packages. Configuration Item: "
+"<literal>APT::Get::Show-Versions</literal>."
+msgstr ""
+"Afficher les versions complètes des paquets installés ou mis à niveau. "
+"Élément de configuration : <literal>APT::Get::Show-Versions</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the architecture packages are built for by <command>apt-"
+"get source --compile</command> and how cross-builddependencies are "
+"satisfied. By default is it not set which means that the host architecture "
+"is the same as the build architecture (which is defined by <literal>APT::"
+"Architecture</literal>). Configuration Item: <literal>APT::Get::Host-"
+"Architecture</literal>."
+msgstr ""
+"Cette option contrôle comment les paquets d'architectures sont construits "
+"par <command>apt-get source --compile</command> et comment les dépendances "
+"de construction transverses sont respectées. Elle n'est pas positionnée par "
+"défaut ce qui signifie que l'architecture hôte est la même que "
+"l'architecture de construction (définie par <literal>APT::Architecture</"
+"literal>). Élément de configuration : <literal>APT::Get::Host-Architecture</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the activated build profiles for which a source package "
+"is built by <command>apt-get source --compile</command> and how build "
+"dependencies are satisfied. By default no build profile is active. More "
+"than one build profile can be activated at a time by concatenating them with "
+"a comma. Configuration Item: <literal>APT::Build-Profiles</literal>."
+msgstr ""
+"Cette option contrôle les profils de construction actifs pour lesquels un "
+"paquet source est construit par <command>apt-get source --compile</command> "
+"et comment les dépendances sont respectées. Par défaut, aucun profil de "
+"construction n'est actif. Plus d'un profil peut être activé en même temps en "
+"les concaténant par une virgule. Élément de configuration : <literal>APT::"
+"Build-Profiles</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Compile source packages after downloading them. Configuration Item: "
+"<literal>APT::Get::Compile</literal>."
+msgstr ""
+"Cette commande compile un paquet source après l'avoir récupéré. Élément de "
+"configuration : <literal>APT::Get::Compile</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore package holds; this causes <command>apt-get</command> to ignore a "
+"hold placed on a package. This may be useful in conjunction with "
+"<literal>dist-upgrade</literal> to override a large number of undesired "
+"holds. Configuration Item: <literal>APT::Ignore-Hold</literal>."
+msgstr ""
+"Cette commande ignore la marque « Hold » (« retenu ») d'un paquet ; par ce "
+"biais, <command>apt-get</command> ignore un « hold » placé sur un paquet. "
+"cela peut être utile avec <literal>dist-upgrade</literal> pour annuler un "
+"grand nombre de « hold » indésirables. Élément de configuration : "
+"<literal>APT::Ignore-Hold</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Allow installing new packages when used in conjunction with "
+"<literal>upgrade</literal>. This is useful if the update of a installed "
+"package requires new dependencies to be installed. Instead of holding the "
+"package back <literal>upgrade</literal> will upgrade the package and install "
+"the new dependencies. Note that <literal>upgrade</literal> with this option "
+"will never remove packages, only allow adding new ones. Configuration Item: "
+"<literal>APT::Get::Upgrade-Allow-New</literal>."
+msgstr ""
+"Cette commande permet d'installer de nouveaux paquets lorsqu'elle est "
+"utilisée en conjonction avec la commande <literal>upgrade</literal>. C'est "
+"utile si la mise à jour d'un paquet installé exige l'installation de "
+"nouveaux paquets. Plutôt que de conserver le paquet, <literal>upgrade</"
+"literal> mettra à jour le paquet et installera les nouvelles dépendances. "
+"Remarquez que la commande <literal>upgrade</literal> avec cette option ne "
+"retirera jamais de paquets : elle ne permettra que l'ajout de nouveaux. "
+"Élément de configuration : <literal>APT::Get::Upgrade-Allow-New</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not upgrade packages; when used in conjunction with <literal>install</"
+"literal>, <literal>no-upgrade</literal> will prevent packages on the command "
+"line from being upgraded if they are already installed. Configuration Item: "
+"<literal>APT::Get::Upgrade</literal>."
+msgstr ""
+"Aucune mise à niveau ; quand elle est utilisée avec <literal>install</"
+"literal>, cette commande empêche les paquets mentionnés sur la ligne de "
+"commande d'être mis à niveau. Élément de configuration : <literal>APT::Get::"
+"Upgrade</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not install new packages; when used in conjunction with <literal>install</"
+"literal>, <literal>only-upgrade</literal> will install upgrades for already "
+"installed packages only and ignore requests to install new packages. "
+"Configuration Item: <literal>APT::Get::Only-Upgrade</literal>."
+msgstr ""
+"N'installe aucun nouveau paquet ; quand elle est utilisée avec "
+"<literal>install</literal>, <literal>only-upgrade</literal> ne met à jour "
+"que les paquets installés sans en installer de nouveaux. Élément de "
+"configuration : <literal>APT::Get::Only-Upgrade</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This is a dangerous option that will cause apt to continue without prompting "
+"if it is doing downgrades. It should not be used except in very special "
+"situations. Using it can potentially destroy your system! Configuration "
+"Item: <literal>APT::Get::allow-downgrades</literal>. Introduced in APT 1.1."
+msgstr ""
+"Cette option est dangereuse parce qu'elle laisse APT continuer sans poser de "
+"questions quand il réalise un retour en arrière. Elle ne doit être utilisée "
+"que dans des circonstances très spéciales. L'utiliser peut éventuellement "
+"détruire le système ! Élément de configuration : <literal>APT::Get::allow-"
+"downgrades</literal>. Introduite dans APT 1.1"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is removing essentials. It should not be used except "
+"in very special situations. Using it can potentially destroy your system! "
+"Configuration Item: <literal>APT::Get::allow-remove-essential</literal>. "
+"Introduced in APT 1.1."
+msgstr ""
+"Forcer l'acceptation ; cette option est dangereuse parce qu'elle laisse APT "
+"continuer sans poser de questions quand il supprime des paquets essentiels. "
+"Cette option ne doit être utilisée que dans des circonstances très "
+"spéciales. L'utiliser peut éventuellement détruire le système ! Élément de "
+"configuration : <literal>APT::Get::allow-remove-essential</literal>. "
+"Introduite dans APT 1.1."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is changing held packages. It should not be used "
+"except in very special situations. Using it can potentially destroy your "
+"system! Configuration Item: <literal>APT::Get::allow-change-held-packages</"
+"literal>. Introduced in APT 1.1."
+msgstr ""
+"Forcer l'acceptation ; cette option est dangereuse parce qu'elle laisse APT "
+"continuer sans poser de questions quand il modifie des paquets retenus. "
+"(« hold »). Cette option ne doit être utilisée que dans des circonstances "
+"très spéciales. L'utiliser peut éventuellement détruire le système ! Élément "
+"de configuration : <literal>APT::Get::allow-change-held-packages</literal>. "
+"Introduite dans APT 1.1."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is doing something potentially harmful. It should "
+"not be used except in very special situations. Using <literal>force-yes</"
+"literal> can potentially destroy your system! Configuration Item: "
+"<literal>APT::Get::force-yes</literal>. This is deprecated and replaced by "
+"<option>--allow-downgrades</option>, <option>--allow-remove-essential</"
+"option>, <option>--allow-change-held-packages</option> in 1.1."
+msgstr ""
+"Forcer l'acceptation ; cette option est dangereuse parce qu'elle laisse APT "
+"continuer sans poser de questions quand il réalise quelque chose de "
+"potentiellement dommageable. Cette option ne doit être utilisée que dans des "
+"circonstances très spéciales. Utiliser <literal>force-yes</literal> peut "
+"éventuellement détruire le système ! Élément de configuration : "
+"<literal>APT::Get::force-yes</literal>. Cette option est obsolète et "
+"remplacée par <option>--allow-downgrades</option>, <option>--allow-remove-"
+"essential</option>, et <option>--allow-change-held-packages</option> dans "
+"APT 1.1."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Instead of fetching the files to install their URIs are printed. Each URI "
+"will have the path, the destination file name, the size and the expected MD5 "
+"hash. Note that the file name to write to will not always match the file "
+"name on the remote site! This also works with the <literal>source</literal> "
+"and <literal>update</literal> commands. When used with the <literal>update</"
+"literal> command the MD5 and size are not included, and it is up to the user "
+"to decompress any compressed files. Configuration Item: <literal>APT::Get::"
+"Print-URIs</literal>."
+msgstr ""
+"Au lieu de récupérer les paquets à installer, leurs URI sont affichées. "
+"Chaque URI a un chemin, un nom de fichier destination, une taille et une clé "
+"MD5 attendue. Veuillez noter que le nom de fichier à afficher ne correspond "
+"pas toujours au nom de fichier sur le site distant. Cette option fonctionne "
+"aussi avec la commande <literal>source</literal> et avec la commande "
+"<literal>update</literal>. Avec la commande <literal>update</literal>, la "
+"somme MD5 et la taille ne sont pas données et c'est à l'utilisateur de "
+"décompresser les fichiers compressés. Élément de configuration : "
+"<literal>APT::Get::Print-URIs</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Use purge instead of remove for anything that would be removed. An asterisk "
+"(\"*\") will be displayed next to packages which are scheduled to be purged. "
+"<option>remove --purge</option> is equivalent to the <option>purge</option> "
+"command. Configuration Item: <literal>APT::Get::Purge</literal>."
+msgstr ""
+"Utiliser « purge » à la place de « remove » pour supprimer tout ce qui peut "
+"être supprimé. Un astérisque (*) sera accolé aux noms des paquets qui vont "
+"être purgés. <option>remove --purge</option> est équivalent à la commande "
+"<option>purge</option>. Élément de configuration : <literal>APT::Get::Purge</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Re-install packages that are already installed and at the newest version. "
+"Configuration Item: <literal>APT::Get::ReInstall</literal>."
+msgstr ""
+"Réinstaller les paquets déjà installés avec leur version la plus récente. "
+"Élément de configuration : <literal>APT::Get::ReInstall</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option is on by default; use <literal>--no-list-cleanup</literal> to "
+"turn it off. When it is on, <command>apt-get</command> will automatically "
+"manage the contents of <filename>&statedir;/lists</filename> to ensure that "
+"obsolete files are erased. The only reason to turn it off is if you "
+"frequently change your sources list. Configuration Item: <literal>APT::Get::"
+"List-Cleanup</literal>."
+msgstr ""
+"Cette option est activée par défaut ; utilisez <literal>--no-list-cleanup</"
+"literal> pour la désactiver. Quand elle est activée, <command>apt-get</"
+"command> gère automatiquement le contenu de <filename>&statedir;/lists</"
+"filename> afin d'assurer que les fichiers obsolètes soient effacés. La seule "
+"raison de la désactiver est une modification fréquente de la liste de "
+"sources. Élément de configuration : <literal>APT::Get::List-Cleanup</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the default input to the policy engine; it creates a "
+"default pin at priority 990 using the specified release string. This "
+"overrides the general settings in <filename>/etc/apt/preferences</"
+"filename>. Specifically pinned packages are not affected by the value of "
+"this option. In short, this option lets you have simple control over which "
+"distribution packages will be retrieved from. Some common examples might be "
+"<option>-t '2.1*'</option>, <option>-t unstable</option> or <option>-t sid</"
+"option>. Configuration Item: <literal>APT::Default-Release</literal>; see "
+"also the &apt-preferences; manual page."
+msgstr ""
+"Cette option contrôle l'entrée par défaut pour les questions de "
+"distribution ; un épinglage (pin) par défaut dont la priorité vaut 990 est "
+"créée en utilisant la chaîne spécifiée. Le fichier des préférences peut "
+"annuler cette décision. En clair, cette option permet de contrôler "
+"simplement dans quelle distribution seront récupérés les paquets. Par "
+"exemple : <option>-t '2.1*'</option>, <option>-t unstable</option> ou "
+"<option>-t sid</option>. Élément de configuration : <literal>APT::Default-"
+"Release</literal>. Voyez aussi la page de manuel d'&apt-preferences;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only perform operations that are 'trivial'. Logically this can be considered "
+"related to <option>--assume-yes</option>; where <option>--assume-yes</"
+"option> will answer yes to any prompt, <option>--trivial-only</option> will "
+"answer no. Configuration Item: <literal>APT::Get::Trivial-Only</literal>."
+msgstr ""
+"Ne réalise que les opérations « triviales ». Logiquement ceci peut être "
+"considéré comme relatif à <option>--assume-yes</option>. Alors que <option>--"
+"assume-yes</option> répond oui à n'importe quelle question, <option>--"
+"trivial-only</option> répond non. Élément de configuration : <literal>APT::"
+"Get::Trivial-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If any packages are to be removed apt-get immediately aborts without "
+"prompting. Configuration Item: <literal>APT::Get::Remove</literal>."
+msgstr ""
+"Arrêter immédiatement apt-get, sans poser de questions, si des paquets "
+"doivent être supprimés. Élément de configuration : <literal>APT::Get::"
+"Remove</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If the command is either <literal>install</literal> or <literal>remove</"
+"literal>, then this option acts like running the <literal>autoremove</"
+"literal> command, removing unused dependency packages. Configuration Item: "
+"<literal>APT::Get::AutomaticRemove</literal>."
+msgstr ""
+"Si la commande utilisée est soit <literal>install</literal> soit "
+"<literal>remove</literal>, cette option a le même effet "
+"qu'<literal>autoremove</literal> et supprime les paquets de dépendance "
+"inutilisés. Élément de configuration : <literal>APT::Get::Upgrade</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only has meaning for the <literal>source</literal> and <literal>build-dep</"
+"literal> commands. Indicates that the given source names are not to be "
+"mapped through the binary table. This means that if this option is "
+"specified, these commands will only accept source package names as "
+"arguments, rather than accepting binary package names and looking up the "
+"corresponding source package. Configuration Item: <literal>APT::Get::Only-"
+"Source</literal>."
+msgstr ""
+"Cette option n'a de sens qu'avec les commandes <literal>source</literal> et "
+"<literal>build-dep</literal>. Elle indique que les noms de sources donnés ne "
+"doivent pas être repérés à travers le tableau des binaires. Cela signifie "
+"que si cette option est choisie, la commande <literal>source</literal> "
+"acceptera seulement des noms de paquets source comme argument ; elle "
+"n'acceptera pas de les rechercher à partir des noms de paquets binaires "
+"correspondants. Élément de configuration : <literal>APT::Get::Only-Source</"
+"literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Download only the diff, dsc, or tar file of a source archive. Configuration "
+"Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</"
+"literal>, and <literal>APT::Get::Tar-Only</literal>."
+msgstr ""
+"Ne télécharger que le fichier .diff, .dsc ou .tar d'une archive source. "
+"Élément de configuration : <literal>APT::Get::Diff-Only</literal>, "
+"<literal>APT::Get::Dsc-Only</literal> et <literal>APT::Get::Tar-Only</"
+"literal>, "
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only process architecture-dependent build-dependencies. Configuration Item: "
+"<literal>APT::Get::Arch-Only</literal>."
+msgstr ""
+"Ne traiter que les dépendances de construction dépendantes de "
+"l'architecture. Élément de configuration : <literal>APT::Get::Arch-Only</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only process architecture-independent build-dependencies. Configuration "
+"Item: <literal>APT::Get::Indep-Only</literal>."
+msgstr ""
+"Ne traiter que les dépendances de construction indépendantes de "
+"l'architecture. Élément de configuration : <literal>APT::Get::Indep-Only</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore if packages can't be authenticated and don't prompt about it. This "
+"can be useful while working with local repositories, but is a huge security "
+"risk if data authenticity isn't ensured in another way by the user itself. "
+"The usage of the <option>Trusted</option> option for &sources-list; entries "
+"should usually be preferred over this global override. Configuration Item: "
+"<literal>APT::Get::AllowUnauthenticated</literal>."
+msgstr ""
+"Ignorer le fait que les paquets ne peuvent pas être authentifiés ; ne le "
+"signale pas à l'utilisateur. Cette option peut être utile si on travaille "
+"avec des dépôts locaux, mais cela représente un risque considérable si "
+"l'authenticité des données n'est pas assurée d'une autre manière par "
+"l'utilisateur lui-même. L'utilisation de l'option <option>Trusted</option> "
+"pour les entrées de &sources-list; devrait être habituellement préférée à ce "
+"remplacement global. Élément de configuration : <literal>APT::Get::"
+"AllowUnauthenticated</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Forbid the update command to acquire unverifiable data from configured "
+"sources. APT will fail at the update command for repositories without valid "
+"cryptographically signatures. See also &apt-secure; for details on the "
+"concept and the implications. Configuration Item: <literal>Acquire::"
+"AllowInsecureRepositories</literal>."
+msgstr ""
+"Interdire la commande update pour obtenir des données non vérifiables des "
+"sources configurées. APT échouera si la commande update vise des dépôts sans "
+"signatures cryptographiques valables. Voir aussi &apt-secure; pour plus de "
+"détails sur le concept et ses implications. Élément de configuration : "
+"<literal>Acquire::AllowInsecureRepositories</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Show user friendly progress information in the terminal window when packages "
+"are installed, upgraded or removed. For a machine parsable version of this "
+"data see README.progress-reporting in the apt doc directory. Configuration "
+"Items: <literal>Dpkg::Progress</literal> and <literal>Dpkg::Progress-Fancy</"
+"literal>."
+msgstr ""
+"Cette commande montre les informations de progression conviviales dans la "
+"fenêtre du terminal quand des paquets sont installés, mis à jour ou "
+"supprimés. Pour une version exploitable par une machine de ces données, voir "
+"README.progress-reporting dans le répertoire doc de apt. Élément de "
+"configuration : <literal>Dpkg::Progress</literal> et <literal>Dpkg::Progress-"
+"Fancy</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. See <option>--with-source</option> description in &apt-"
+"cache; for further details."
+msgstr ""
+"Ajoute le fichier donné comme source de méta-données. La commande peut être "
+"répétée pour ajouter de multiples fichiers. Voir la description de l'option "
+"<option>--with-source</option> dans &apt-cache; pour plus de détails."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml
+msgid "Files"
+msgstr "Fichiers"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
+"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
+"APT Howto."
+msgstr ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
+"&apt-secure;, le guide d'APT dans &guidesdir;, &apt-preferences;, le "
+"« HOWTO » d'APT."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"<command>apt-get</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+"<command>apt-get</command> renvoie zéro après une opération normale, le "
+"décimal 100 en cas d'erreur."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cache.8.xml
+msgid "query the APT cache"
+msgstr "recherche dans le cache d'APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid ""
+"<command>apt-cache</command> performs a variety of operations on APT's "
+"package cache. <command>apt-cache</command> does not manipulate the state of "
+"the system but does provide operations to search and generate interesting "
+"output from the package metadata. The metadata is acquired and updated via "
+"the 'update' command of e.g. <command>apt-get</command>, so that it can be "
+"outdated if the last update is too long ago, but in exchange <command>apt-"
+"cache</command> works independently of the availability of the configured "
+"sources (e.g. offline)."
+msgstr ""
+"<command>apt-cache</command> réalise différentes opérations sur le cache de "
+"paquet d'APT. <command>apt-cache</command> ne manipule pas l'état du système "
+"mais fournit des moyens de recherche dans les métadonnées d'un paquet "
+"desquelles il extrait les informations intéressantes. Les métadonnées sont "
+"obtenues et mises à jour avec la commande update d'<command>apt-get</"
+"command> par exemple, et peuvent donc être périmées si la dernière mise à "
+"jour est trop ancienne, mais en contrepartie <command>apt-cache</command> "
+"fonctionne indépendamment de la disponibilité des sources configurées (par "
+"exemple hors ligne)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>gencaches</literal> creates APT's package cache. This is done "
+"implicitly by all commands needing this cache if it is missing or outdated."
+msgstr ""
+"<literal>gencaches</literal> crée le cache d'APT. Cette action est faite "
+"implicitement par toute commande qui a besoin de ce cache s'il est manquant "
+"ou obsolète."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml
+msgid "&synopsis-pkg;"
+msgstr "&synopsis-pkg;"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>showpkg</literal> displays information about the packages listed on "
+"the command line. Remaining arguments are package names. The available "
+"versions and reverse dependencies of each package listed are listed, as well "
+"as forward dependencies for each version. Forward (normal) dependencies are "
+"those packages upon which the package in question depends; reverse "
+"dependencies are those packages that depend upon the package in question. "
+"Thus, forward dependencies must be satisfied for a package, but reverse "
+"dependencies need not be. For instance, <command>apt-cache showpkg "
+"libreadline2</command> would produce output similar to the following:"
+msgstr ""
+"La commande <literal>showpkg</literal> affiche des informations sur les "
+"paquets donnés en argument. Les arguments restants sont les noms de paquets. "
+"Les versions disponibles et les dépendances inverses de chaque paquet "
+"répertorié sont listées, ainsi que les dépendances normales pour chaque "
+"version. Les dépendances normales d'un paquet sont constituées par les "
+"paquets dont il dépend ; les dépendances inverses sont les paquets qui "
+"dépendent du paquet en question. Les dépendances normales doivent donc être "
+"satisfaites et les dépendances inverses n'ont pas besoin de l'être. Ainsi, "
+"la commande <command>apt-cache showpkg libreadline2</command> donnera ce "
+"résultat :"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-cache.8.xml
+#, no-wrap
+msgid ""
+"Package: libreadline2\n"
+"Versions: 2.1-12(/var/state/apt/lists/foo_Packages),\n"
+"Reverse Depends: \n"
+" libreadlineg2,libreadline2\n"
+" libreadline2-altdev,libreadline2\n"
+"Dependencies:\n"
+"2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))\n"
+"Provides:\n"
+"2.1-12 - \n"
+"Reverse Provides: \n"
+msgstr ""
+"Package: libreadline2\n"
+"Versions: 2.1-12(/var/state/apt/lists/foo_Packages),\n"
+"Reverse Depends: \n"
+" libreadlineg2,libreadline2\n"
+" libreadline2-altdev,libreadline2\n"
+"Dependencies:\n"
+"2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))\n"
+"Provides:\n"
+"2.1-12 - \n"
+"Reverse Provides: \n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Thus it may be seen that libreadline2, version 2.1-12, depends on libc5 and "
+"ncurses3.0 which must be installed for libreadline2 to work. In turn, "
+"libreadlineg2 and libreadline2-altdev depend on libreadline2. If "
+"libreadline2 is installed, libc5 and ncurses3.0 (and ldso) must also be "
+"installed; libreadlineg2 and libreadline2-altdev do not have to be "
+"installed. For the specific meaning of the remainder of the output it is "
+"best to consult the apt source code."
+msgstr ""
+"On peut voir que libreadline2, version 2.1-12, dépend de libc5 et "
+"ncurses3.0 ; ces paquets doivent être installés au préalable pour que "
+"libreadline2 fonctionne. À leur tour, libreadlineg2 et libreadline2-altdev "
+"dépendent de libreadline2. Si libreadline2 est installé, libc5 et ncurses3.0 "
+"doivent être installés ; libreadlineg2 et libreadline2-altdev n'ont pas à "
+"l'être. Pour connaître le sens de la fin de chaîne, il est préférable de "
+"consulter le code source d'APT."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>stats</literal> displays some statistics about the cache. No "
+"further arguments are expected. Statistics reported are:"
+msgstr ""
+"La commande <literal>stats</literal> affiche des statistiques à propos du "
+"cache. Aucun autre argument n'est attendu. Voici les informations "
+"rapportées :"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total package names</literal> is the number of package names found "
+"in the cache."
+msgstr ""
+"<literal>Total package names</literal> est le nombre de paquets trouvés dans "
+"le cache."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Normal packages</literal> is the number of regular, ordinary "
+"package names; these are packages that bear a one-to-one correspondence "
+"between their names and the names used by other packages for them in "
+"dependencies. The majority of packages fall into this category."
+msgstr ""
+"<literal>Normal packages</literal> est le nombre de paquets simples, "
+"ordinaires ; ces paquets tolèrent une correspondance bijective entre leur "
+"nom et le nom utilisé par les autres paquets pour les qualifier comme "
+"dépendance. La majorité des paquets appartient à cette catégorie."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Pure virtual packages</literal> is the number of packages that "
+"exist only as a virtual package name; that is, packages only \"provide\" the "
+"virtual package name, and no package actually uses the name. For instance, "
+"\"mail-transport-agent\" in the Debian system is a pure virtual package; "
+"several packages provide \"mail-transport-agent\", but there is no package "
+"named \"mail-transport-agent\"."
+msgstr ""
+"<literal>Pure virtual packages</literal> est le nombre de paquets qui "
+"n'existent que sous la forme d'un nom représentant un paquet virtuel ; ces "
+"paquets « fournissent » seulement un nom de paquet virtuel et aucun paquet "
+"n'utilise véritablement ce nom. Par exemple, au sein du système Debian GNU/"
+"Linux, le nom « mail-transport-agent » est un paquet virtuel pur ; plusieurs "
+"paquets peuvent « fournir » ce nom « mail-transport-agent », mais il "
+"n'existe aucun paquet nommé « mail-transport-agent »."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Single virtual packages</literal> is the number of packages with "
+"only one package providing a particular virtual package. For example, in the "
+"Debian system, \"X11-text-viewer\" is a virtual package, but only one "
+"package, xless, provides \"X11-text-viewer\"."
+msgstr ""
+"<literal>Single virtual packages</literal> est le nombre de paquets virtuels "
+"qui ne peuvent être remplis que par un seul paquet. Par exemple, au sein du "
+"système Debian, « X11-text-viewer » est un paquet virtuel ; seul le paquet "
+"« xless » remplit « X11-text-viewer »."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Mixed virtual packages</literal> is the number of packages that "
+"either provide a particular virtual package or have the virtual package name "
+"as the package name. For instance, in the Debian system, \"debconf\" is both "
+"an actual package, and provided by the debconf-tiny package."
+msgstr ""
+"<literal>Mixed virtual packages</literal> est le nombre de paquets qui "
+"remplissent un paquet virtuel particulier ou dont le nom est un nom de "
+"paquet virtuel. Par exemple, au sein du système Debian, « debconf » est un "
+"paquet réel et il est aussi fourni par « debconf-tiny »."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Missing</literal> is the number of package names that were "
+"referenced in a dependency but were not provided by any package. Missing "
+"packages may be an evidence if a full distribution is not accessed, or if a "
+"package (real or virtual) has been dropped from the distribution. Usually "
+"they are referenced from Conflicts or Breaks statements."
+msgstr ""
+"<literal>Missing</literal> est le nombre de paquets référencés dans une "
+"dépendance mais qui ne sont fournis par aucun paquet. Les paquets manquants "
+"peuvent être mis en évidence quand on n'accède pas à une distribution "
+"complète ou si un paquet (réel ou virtuel) a été sorti d'une distribution. "
+"Habituellement on les trouve dans les champs « Conflicts » ou « Breaks »."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total distinct</literal> versions is the number of package versions "
+"found in the cache. If more than one distribution is being accessed (for "
+"instance, \"stable\" and \"unstable\"), this value can be considerably "
+"larger than the number of total package names."
+msgstr ""
+"<literal>Total distinct</literal> versions est le nombre de versions de "
+"paquets trouvées dans le cache. Quand on accède à plus d'une distribution "
+"(« stable » et « unstable », par exemple), cette valeur peut être "
+"considérablement plus grande que le nombre total de paquets."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total dependencies</literal> is the number of dependency "
+"relationships claimed by all of the packages in the cache."
+msgstr ""
+"<literal>Total dependencies</literal> est le nombre de relations de "
+"dépendances déclarées par tous les paquets présents dans le cache."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>showsrc</literal> displays all the source package records that "
+"match the given package names. All versions are shown, as well as all "
+"records that declare the name to be a binary package. Use <option>--only-"
+"source</option> to display only source package names."
+msgstr ""
+"<literal>showsrc</literal> affiche toutes les entrées de paquets source qui "
+"correspondent aux noms donnés. Toutes les versions sont affichées et toutes "
+"les entrées qui déclarent que ces noms correspondent à des paquets binaires. "
+"Utilisez l'option <option>--only-source</option> pour n'afficher que le nom "
+"des paquets source."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dump</literal> shows a short listing of every package in the cache. "
+"It is primarily for debugging."
+msgstr ""
+"La commande <literal>dump</literal> affiche un court résumé sur chaque "
+"paquet du cache. Elle est d'abord destinée au débogage."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dumpavail</literal> prints out an available list to stdout. This is "
+"suitable for use with &dpkg; and is used by the &dselect; method."
+msgstr ""
+"La commande <literal>dumpavail</literal> affiche sur la sortie standard la "
+"liste des paquets disponibles. Elle convient à une utilisation avec &dpkg; "
+"et la méthode &dselect; s'en sert."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>unmet</literal> displays a summary of all unmet dependencies in the "
+"package cache."
+msgstr ""
+"La commande <literal>unmet</literal> affiche un résumé concernant toutes les "
+"dépendances absentes dans le cache de paquets."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>show</literal> performs a function similar to <command>dpkg --print-"
+"avail</command>; it displays the package records for the named packages."
+msgstr ""
+"La commande <literal>show</literal> est semblable à <command>dpkg --print-"
+"avail</command> ; elle affiche des informations sur les paquets donnés en "
+"argument."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml
+msgid "&synopsis-regex;"
+msgstr "&synopsis-regex;"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>search</literal> performs a full text search on all available "
+"package lists for the POSIX regex pattern given, see &regex;. It searches "
+"the package names and the descriptions for an occurrence of the regular "
+"expression and prints out the package name and the short description, "
+"including virtual package names. If <option>--full</option> is given then "
+"output identical to <literal>show</literal> is produced for each matched "
+"package, and if <option>--names-only</option> is given then the long "
+"description is not searched, only the package name and provided packages are."
+msgstr ""
+"La commande <literal>search</literal> recherche l'expression rationnelle "
+"POSIX donnée en paramètre sur tous les paquets disponibles, voir &regex;. "
+"Elle cherche une occurrence de la chaîne dans les noms de paquets et dans "
+"les descriptions puis elle affiche le nom du paquet et sa description "
+"courte. Quand l'option <option>--full</option> est fournie, la sortie est "
+"identique à <literal>show</literal> pour chaque paquet ; quand l'option "
+"<option>--names-only</option> est fournie, la recherche ne porte pas sur les "
+"descriptions longues, mais seulement sur les noms de paquets et les paquets "
+"fournis."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Separate arguments can be used to specify multiple search patterns that are "
+"and'ed together."
+msgstr ""
+"On peut utiliser des arguments distincts pour indiquer des expressions "
+"rationnelles différentes sur lesquelles seront réalisées un « et » logique."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>depends</literal> shows a listing of each dependency a package has "
+"and all the possible other packages that can fulfill that dependency."
+msgstr ""
+"La commande <literal>depends</literal> affiche la liste de toutes les "
+"dépendances d'un paquet et la liste de tous les paquets possibles qui "
+"satisfont ces dépendances."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>rdepends</literal> shows a listing of each reverse dependency a "
+"package has."
+msgstr ""
+"La commande <literal>rdepends</literal> affiche la liste de toutes les "
+"dépendances inverses d'un paquet."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml
+msgid "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+msgstr "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"This command prints the name of each package APT knows. The optional "
+"argument is a prefix match to filter the name list. The output is suitable "
+"for use in a shell tab complete function and the output is generated "
+"extremely quickly. This command is best used with the <option>--generate</"
+"option> option."
+msgstr ""
+"Cette commande affiche le nom de chaque paquet connu par APT. Un préfixe "
+"pour filtrer la liste des noms peut être donné en paramètre. La sortie est "
+"adaptée à une utilisation au sein d'une fonction complète de shell ; elle "
+"est produite très rapidement. On utilise au mieux cette commande avec "
+"l'option <option>--generate</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Note that a package which APT knows of is not necessarily available to "
+"download, installable or installed, e.g. virtual packages are also listed in "
+"the generated list."
+msgstr ""
+"Veuillez noter qu'un paquet connu par APT n'est pas forcément disponible, "
+"installable ou installé. Par exemple, les paquets virtuels sont également "
+"affichés dans la liste créée."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dotty</literal> takes a list of packages on the command line and "
+"generates output suitable for use by dotty from the <ulink url=\"http://www."
+"research.att.com/sw/tools/graphviz/\">GraphViz</ulink> package. The result "
+"will be a set of nodes and edges representing the relationships between the "
+"packages. By default the given packages will trace out all dependent "
+"packages; this can produce a very large graph. To limit the output to only "
+"the packages listed on the command line, set the <literal>APT::Cache::"
+"GivenOnly</literal> option."
+msgstr ""
+"La commande <literal>dotty</literal> prend une liste de paquets sur la ligne "
+"de commande et affiche une sortie appropriée à une utilisation par la "
+"commande dotty du paquet <ulink url=\"http://www.research.att.com/sw/tools/"
+"graphviz/\">GraphViz</ulink>. Il en résulte un ensemble de nœuds et d'arcs "
+"représentant les relations entre les paquets. Par défaut les paquets donnés "
+"en argument suivent toutes leurs dépendances, ce qui peut produire un graphe "
+"très volumineux. Pour limiter la sortie aux seuls paquets listés sur la "
+"ligne de commande, positionnez l'option <literal>APT::Cache::GivenOnly</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"The resulting nodes will have several shapes; normal packages are boxes, "
+"pure virtual packages are triangles, mixed virtual packages are diamonds, "
+"missing packages are hexagons. Orange boxes mean recursion was stopped (leaf "
+"packages), blue lines are pre-depends, green lines are conflicts."
+msgstr ""
+"Les noeuds résultants ont plusieurs formes ; les paquets normaux sont des "
+"boîtes, les « provides » purs sont des triangles, les « provides » mixtes "
+"sont des diamants et les paquets manquants sont des hexagones. Les boîtes "
+"oranges expriment un arrêt de la récursivité [paquet feuille], les lignes "
+"bleues représentent des prédépendances et les lignes vertes représentent des "
+"conflits."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid "Caution, dotty cannot graph larger sets of packages."
+msgstr ""
+"Attention, dotty ne peut pas représenter des ensembles très grands de "
+"paquets."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"The same as <literal>dotty</literal>, only for xvcg from the <ulink url="
+"\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</ulink>."
+msgstr ""
+"Identique à <literal>dotty</literal>, mais réservé à xvcg fourni avec <ulink "
+"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</"
+"ulink>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml
+msgid "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+msgstr "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>policy</literal> is meant to help debug issues relating to the "
+"preferences file. With no arguments it will print out the priorities of each "
+"source. Otherwise it prints out detailed information about the priority "
+"selection of the named package."
+msgstr ""
+"<literal>policy</literal> sert à déboguer des problèmes relatifs au fichier "
+"des préférences. Sans argument, la commande affiche la priorité de chaque "
+"source. Sinon, elle affiche des informations précises sur la priorité du "
+"paquet donné en argument."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>apt-cache</literal>'s <literal>madison</literal> command attempts "
+"to mimic the output format and a subset of the functionality of the Debian "
+"archive management tool, <literal>madison</literal>. It displays available "
+"versions of a package in a tabular format. Unlike the original "
+"<literal>madison</literal>, it can only display information for the "
+"architecture for which APT has retrieved package lists (<literal>APT::"
+"Architecture</literal>)."
+msgstr ""
+"La commande <literal>madison</literal> d'<literal>apt-cache</literal> "
+"cherche à mimer le format de sortie propre à l'outil debian de gestion "
+"d'archives, <literal>madison</literal>, ainsi qu'une partie de ses "
+"fonctionnalités. Elle affiche les versions disponibles d'un paquet dans un "
+"tableau. Contrairement au programme original <literal>madison</literal>, "
+"elle n'affiche que des informations concernant l'architecture pour laquelle "
+"Apt a lu la liste des paquets disponibles (<literal>APT::Architecture</"
+"literal>)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Select the file to store the package cache. The package cache is the primary "
+"cache used by all operations. Configuration Item: <literal>Dir::Cache::"
+"pkgcache</literal>."
+msgstr ""
+"Indique le fichier servant de cache des paquets. Le cache des paquets est le "
+"cache primaire utilisé par toutes les opérations. Élément de configuration : "
+"<literal>Dir::Cache::pkgcache</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Select the file to store the source cache. The source is used only by "
+"<literal>gencaches</literal> and it stores a parsed version of the package "
+"information from remote sources. When building the package cache the source "
+"cache is used to avoid reparsing all of the package files. Configuration "
+"Item: <literal>Dir::Cache::srcpkgcache</literal>."
+msgstr ""
+"Indique le fichier servant de cache des sources. Ce cache n'est utilisé que "
+"par <literal>gencaches</literal> ; une version des informations sur les "
+"paquets, issue d'une analyse de sources distantes, est conservée. Quand le "
+"cache des paquets est créé, le cache des sources est utilisé afin d'éviter "
+"d'analyser à nouveau tous les paquets. Élément de configuration : "
+"<literal>Dir::Cache::srcpkgcache</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quietness up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quietness level, overriding the "
+"configuration file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+"Mode silencieux ; produit une sortie pertinente pour l'enregistrement dans "
+"un fichier-journal, sans afficher d'indicateur de progression. Un plus grand "
+"nombre de q produira un plus grand silence, avec un maximum de 2. Vous "
+"pouvez aussi utiliser <option>-q=#</option> pour positionner le niveau de "
+"silence, annulant le fichier de configuration. Élément de configuration : "
+"<literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print only important dependencies; for use with <literal>unmet</literal> and "
+"<literal>depends</literal>. Causes only Depends and Pre-Depends relations to "
+"be printed. Configuration Item: <literal>APT::Cache::Important</literal>."
+msgstr ""
+"N'affiche que les dépendances importantes ; à utiliser avec les commandes "
+"<literal>unmet</literal> et <literal>depends</literal> pour n'afficher que "
+"les relations Depends et Pre-Depends. Élément de configuration : "
+"<literal>APT::Cache::Important</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Per default the <command>depends</command> and <command>rdepends</command> "
+"print all dependencies. This can be tweaked with these flags which will omit "
+"the specified dependency type. Configuration Item: <literal>APT::Cache::"
+"Show<replaceable>DependencyType</replaceable></literal> e.g. <literal>APT::"
+"Cache::ShowRecommends</literal>."
+msgstr ""
+"Par défaut, <command>depends</command> et <command>rdepends</command> "
+"affichent toutes les dépendances. Ce comportement peut être modifié avec ces "
+"réglages qui omettront le type de dépendance indiqué. Élément de "
+"configuration : <literal>APT::Cache::Show<replaceable>TypeDépendance</"
+"replaceable></literal>, p. ex. <literal>APT::Cache::ShowRecommends</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Per default <command>depends</command> and <command>rdepends</command> print "
+"only dependencies explicitly expressed in the metadata. With this flag it "
+"will also show dependencies implicitly added based on the encountered data. "
+"A <literal>Conflicts: foo</literal> e.g. expresses implicitly that this "
+"package also conflicts with the package foo from any other architecture. "
+"Configuration Item: <literal>APT::Cache::ShowImplicit</literal>."
+msgstr ""
+"Par défaut, <command>depends</command> et <command>rdepends</command> "
+"n'affichent que les dépendances indiquées explicitement dans les "
+"métadonnées. Avec ce marqueur, ils afficheront aussi les dépendances "
+"ajoutées de façon implicite basées sur les données rencontrées. Par exemple, "
+"un message <literal>Conflicts: foo</literal> exprime de façon implicite que "
+"ce paquet est aussi en conflit avec le paquet foo de n'importe quelle autre "
+"architecture. Élément de configuration : <literal>APT::Cache::ShowImplicit</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print full package records when searching. Configuration Item: "
+"<literal>APT::Cache::ShowFull</literal>."
+msgstr ""
+"Affiche la totalité des champs d'information sur le paquet lors d'une "
+"recherche. Élément de configuration : <literal>APT::Cache::ShowFull</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print full records for all available versions. This is the default; to turn "
+"it off, use <option>--no-all-versions</option>. If <option>--no-all-"
+"versions</option> is specified, only the candidate version will be displayed "
+"(the one which would be selected for installation). This option is only "
+"applicable to the <literal>show</literal> command. Configuration Item: "
+"<literal>APT::Cache::AllVersions</literal>."
+msgstr ""
+"Affiche la totalité des champs d'information pour toutes les versions "
+"disponibles : c'est la valeur par défaut. Pour la désactiver, utilisez "
+"l'option <option>--no-all-versions</option>. Quand l'option <option>--no-all-"
+"versions</option> est choisie, seuls les éléments de la version choisie "
+"(celle qui serait installée) seront affichés. Cette option concerne "
+"seulement la commande <literal>show</literal>. Élément de configuration : "
+"<literal>APT::Cache::AllVersions</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Perform automatic package cache regeneration, rather than use the cache as "
+"it is. This is the default; to turn it off, use <option>--no-generate</"
+"option>. Configuration Item: <literal>APT::Cache::Generate</literal>."
+msgstr ""
+"Réalise une mise à jour automatique du cache des paquets plutôt que de se "
+"servir du cache tel qu'il est. Pour désactiver cette option (option par "
+"défaut), utilisez l'option <option>--no-generate</option>. Élément de "
+"configuration : <literal>APT::Cache::Generate</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Only search on the package and provided package names, not the long "
+"descriptions. Configuration Item: <literal>APT::Cache::NamesOnly</literal>."
+msgstr ""
+"N'effectue une recherche que sur les noms de paquets et de paquets fournis, "
+"pas sur les descriptions longues. Élément de configuration : <literal>APT::"
+"Cache::NamesOnly</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Make <literal>pkgnames</literal> print all names, including virtual packages "
+"and missing dependencies. Configuration Item: <literal>APT::Cache::"
+"AllNames</literal>."
+msgstr ""
+"Avec cette option, <literal>pkgnames</literal> affiche tous les noms, les "
+"noms des paquets virtuels et les dépendances manquantes. Élément de "
+"configuration : <literal>APT::Cache::AllNames</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Make <literal>depends</literal> and <literal>rdepends</literal> recursive so "
+"that all packages mentioned are printed once. Configuration Item: "
+"<literal>APT::Cache::RecurseDepends</literal>."
+msgstr ""
+"Avec cette option, <literal>depends</literal> et <literal>rdepends</literal> "
+"sont récursives de manière à n'afficher qu'une seule fois les paquets "
+"mentionnés. Élément de configuration : <literal>APT::Cache::RecurseDepends</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Limit the output of <literal>depends</literal> and <literal>rdepends</"
+"literal> to packages which are currently installed. Configuration Item: "
+"<literal>APT::Cache::Installed</literal>."
+msgstr ""
+"Cette option limite la sortie de <literal>depends</literal> et de "
+"<literal>rdepends</literal> aux paquets qui sont actuellement installés. "
+"Élément de configuration : <literal>APT::Cache::Installed</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. Supported are currently <literal>*.deb</literal>, "
+"<literal>*.dsc</literal>, <literal>*.changes</literal>, <literal>Sources</"
+"literal> and <literal>Packages</literal> files as well as source package "
+"directories. Files are matched based on their name only, not their content!"
+msgstr ""
+"Ajoute le fichier donné comme source de métadonnées. La commande peut être "
+"répétée pour ajouter de multiples fichiers. Actuellement, les "
+"fichiers<literal>*.deb</literal>, <literal>*.dsc</literal>, <literal>*."
+"changes</literal>, <literal>Sources</literal> et <literal>Packages</"
+"literal>, aussi bien que les répertoires de paquets source sont pris en "
+"charge. Les correspondances de fichier sont basées sur leur nom seulement et "
+"non sur leur contenu !"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Sources</literal> and <literal>Packages</literal> can be compressed "
+"in any format apt supports as long as they have the correct extension. If "
+"you need to store multiple of these files in one directory you can prefix a "
+"name of your choice with the last character being an underscore "
+"(\"<literal>_</literal>\"). Example: my.example_Packages.xz"
+msgstr ""
+"Les <literal>Sources</literal> et <literal>Packages</literal> peuvent être "
+"compressés dans n'importe quel format qu'APT prend en charge à condition "
+"qu'ils portent la bonne extension. Si vous avez besoin de stocker plusieurs "
+"de ces fichiers dans un seul répertoire, vous pouvez ajouter comme préfixe "
+"le nom que vous voulez pourvu que le dernier caractère soit un tiret bas "
+"(« <literal>_</literal> »). Exemple : mon.exemple_Packages.xz"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Note that these sources are treated as trusted (see &apt-secure;). "
+"Configuration Item: <literal>APT::Sources::With</literal>."
+msgstr ""
+"Veuillez noter que ces sources sont traitées comme fiables (voir &apt-"
+"secure;). Élément de configuration : <literal>APT::Sources::With</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid "&apt-conf;, &sources-list;, &apt-get;"
+msgstr "&apt-conf;, &sources-list;, &apt-get;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid ""
+"<command>apt-cache</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-cache</command> retourne zéro après un déroulement normal et le "
+"nombre décimal 100 en cas d'erreur."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-key.8.xml
+msgid "APT key management utility"
+msgstr "Utilitaire de gestion des clés d'APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"<command>apt-key</command> is used to manage the list of keys used by apt to "
+"authenticate packages. Packages which have been authenticated using these "
+"keys will be considered trusted."
+msgstr ""
+"<command>apt-key</command> gère les clés dont se sert apt pour authentifier "
+"les paquets. Les paquets authentifiés par ces clés seront réputés fiables."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Note that if usage of <command>apt-key</command> is desired the additional "
+"installation of the GNU Privacy Guard suite (packaged in <package>gnupg</"
+"package>) is required. For this reason alone the programmatic usage "
+"(especially in package maintainerscripts!) is strongly discouraged. Further "
+"more the output format of all commands is undefined and can and does change "
+"whenever the underlying commands change. <command>apt-key</command> will try "
+"to detect such usage and generates warnings on stderr in these cases."
+msgstr ""
+"Notez que si vous souhaitez utiliser <command>apt-key</command>, "
+"l'installation complémentaire de la suite GNU Privacy Guard (paquet "
+"<package>gnupg</package>) est requise. Pour cette raison uniquement, "
+"l'utilisation programmée (en particulier dans les scripts des responsables "
+"des paquets !) est fortement déconseillée. En outre, le format de sortie de "
+"toutes les commandes est indéfini et de plus il peut changer, et il change "
+"réellement chaque fois que les commandes sous-jacentes changent. "
+"<command>apt-key</command> essaiera de détecter un tel usage et, dans ces "
+"cas, enverra des alertes sur l'erreur standard."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml
+msgid "Supported keyring files"
+msgstr "Trousseaux de clés pris en charge"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
+"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
+"the keybox database format introduced in newer &gpg; versions as default for "
+"keyring files. Binary keyring files intended to be used with any apt version "
+"should therefore always be created with <command>gpg --export</command>."
+msgstr ""
+"apt-key ne prend en charge que le format binaire OpenPGP (connu aussi sous "
+"le nom de « trousseau de clés public GPG ») dans les fichiers avec "
+"l'extension « <literal>gpg</literal> », et pas le format de base de données "
+"Keybox, introduit comme format par défaut pour les fichiers de trousseau de "
+"clés dans les versions les plus récentes de &gpg;. Les fichiers binaires de "
+"trousseau de clés destinés à être utilisés dans toutes les versions d'apt "
+"devraient donc toujours être créés avec la commande <command>gpg --export</"
+"command>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Alternatively, if all systems which should be using the created keyring have "
+"at least apt version >= 1.4 installed, you can use the ASCII armored format "
+"with the \"<literal>asc</literal>\" extension instead which can be created "
+"with <command>gpg --armor --export</command>."
+msgstr ""
+"Autrement, si tous les systèmes susceptibles d'utiliser le trousseau de clés "
+"créé disposent d'une version d'apt >= 1.4, il est possible d'utiliser plutôt "
+"le format ASCII-Armored, avec l'extension « <literal>asc</literal> », qui "
+"peut être créé par la commande <command>gpg --armor --export</command>."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml
+msgid "Commands"
+msgstr "Commandes"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Add a new key to the list of trusted keys. The key is read from the "
+"filename given with the parameter &synopsis-param-filename; or if the "
+"filename is <literal>-</literal> from standard input."
+msgstr ""
+"Ajouter une clé à la liste des clés fiables. La clé est lue dans le fichier "
+"indiqué avec le paramètre &synopsis-param-filename; ou sur l'entrée standard "
+"si le nom de fichier est <literal>-</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"It is critical that keys added manually via <command>apt-key</command> are "
+"verified to belong to the owner of the repositories they claim to be for "
+"otherwise the &apt-secure; infrastructure is completely undermined."
+msgstr ""
+"Il est primordial de vérifier que les clés ajoutées manuellement avec "
+"<command>apt-key</command> appartiennent bien au propriétaire des dépôts "
+"comme elles le prétendent, sinon l'infrastructure de &apt-secure; est "
+"complètement compromise."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
+"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
+"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
+"\"<literal>asc</literal>\" as file extension."
+msgstr ""
+"<emphasis>Attention</emphasis> : plutôt que d'utiliser cette commande, un "
+"trousseau de clés peut être placé directement dans le répertoire <filename>/"
+"etc/apt/trusted.gpg.d/</filename> avec un nom descriptif et soit "
+"« <literal>gpg</literal> » soit « <literal>asc</literal> » comme extension "
+"de fichier."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Remove a key from the list of trusted keys."
+msgstr "Supprimer une clé de la liste des clés fiables."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Output the key &synopsis-param-keyid; to standard output."
+msgstr "Afficher la clé &synopsis-param-keyid; sur la sortie standard."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Output all trusted keys to standard output."
+msgstr "Afficher toutes les clés fiables sur la sortie standard."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "List trusted keys with fingerprints."
+msgstr "Afficher la liste des clés fiables avec leurs empreintes."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
+"e.g. download key from keyservers directly into the trusted set of keys. "
+"Note that there are <emphasis>no</emphasis> checks performed, so it is easy "
+"to completely undermine the &apt-secure; infrastructure if used without care."
+msgstr ""
+"Passer des options avancées à gpg. Avec <command>adv --recv-key</command>, "
+"il est possible par exemple de télécharger une clé directement d'un serveur "
+"de clé dans l'ensemble de clés fiables. Veuillez noter qu'il n'y a "
+"<emphasis>aucune</emphasis> vérification réalisée, aussi, il peut être "
+"facile de compromettre complètement l'infrastructure &apt-secure;, si la "
+"commande est utilisée sans précaution."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-key.8.xml
+msgid "(deprecated)"
+msgstr "(obsolète)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Update the local keyring with the archive keyring and remove from the local "
+"keyring the archive keys which are no longer valid. The archive keyring is "
+"shipped in the <literal>archive-keyring</literal> package of your "
+"distribution, e.g. the &keyring-package; package in &keyring-distro;."
+msgstr ""
+"Mettre à jour le trousseau de clés local avec le trousseau de clés de "
+"l'archive et y supprimer les clés qui ne sont plus valables. Le trousseau de "
+"clés de l'archive est fourni dans le paquet <literal>archive-keyring</"
+"literal> de la distribution, par exemple le paquet &keyring-package; dans "
+"&keyring-distro;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Note that a distribution does not need to and in fact should not use this "
+"command any longer and instead ship keyring files in the <filename>/etc/apt/"
+"trusted.gpg.d/</filename> directory directly as this avoids a dependency on "
+"<package>gnupg</package> and it is easier to manage keys by simply adding "
+"and removing files for maintainers and users alike."
+msgstr ""
+"Veuillez noter qu'une distribution n'a pas besoin et, en fait, ne devrait "
+"plus utiliser cette commande et plutôt charger directement les fichiers de "
+"trousseau de clés dans le répertoire <filename>/etc/apt/trusted.gpg.d/</"
+"filename> parce que cela évite une dépendance à <package>gnupg</package> et "
+"qu'il est plus facile pour les responsables et les utilisateurs de gérer les "
+"clés en ajoutant ou en retirant simplement des fichiers."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Perform an update working similarly to the <command>update</command> command "
+"above, but get the archive keyring from a URI instead and validate it "
+"against a master key. This requires an installed &wget; and an APT build "
+"configured to have a server to fetch from and a master keyring to validate. "
+"APT in Debian does not support this command, relying on <command>update</"
+"command> instead, but Ubuntu's APT does."
+msgstr ""
+"Effectuer une mise à jour analogue à celle de la commande <command>update</"
+"command> mais avec récupération du trousseau de clés de l'archive depuis une "
+"URI et la valide avec une clé maître. Cette commande nécessite que &wget; "
+"soit installé, qu'APT soit construit pour le récupérer sur un serveur et "
+"enfin une clé maître pour effectuer la validation. Cette commande n'est pas "
+"gérée par APT dans Debian où <command>update</command> est utilisé à la "
+"place. Par contre, la version d'Ubuntu permet de l'utiliser."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml
+msgid "Options"
+msgstr "Options"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Note that options need to be defined before the commands described in the "
+"previous section."
+msgstr ""
+"Veuillez noter que les options doivent être utilisées avant les commandes "
+"décrites dans la section suivante."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"With this option it is possible to specify a particular keyring file the "
+"command should operate on. The default is that a command is executed on the "
+"<filename>trusted.gpg</filename> file as well as on all parts in the "
+"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</"
+"filename> is the primary keyring which means that e.g. new keys are added to "
+"this one."
+msgstr ""
+"Cette option permet d'indiquer le fichier porte-clés sur lequel la commande "
+"doit agir. Par défaut, une commande sera exécutée sur le fichier "
+"<filename>trusted.gpg</filename> ainsi que sur tous les fichiers du "
+"répertoire <filename>trusted.gpg.d</filename>. Le fichier <filename>trusted."
+"gpg</filename> reste le fichier principal pour les clés donc, par exemple, "
+"les nouvelles clés y seront ajoutées."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid "&apt-get;, &apt-secure;"
+msgstr "&apt-get;, &apt-secure;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-mark.8.xml
+msgid "show, set and unset various settings for a package"
+msgstr "affiche, définit ou redéfinit divers paramètres d'un paquet"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"<command>apt-mark</command> can be used as a unified front-end to set "
+"various settings for a package, such as marking a package as being "
+"automatically/manually installed or changing <command>dpkg</command> "
+"selections such as hold, install, deinstall and purge which are respected e."
+"g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
+"command>."
+msgstr ""
+"La commande <command>apt-mark</command> peut être utilisée comme interface "
+"unique pour diverses configurations d'un paquet, par exemple pour le marquer "
+"comme installé automatiquement ou manuellement, ou pour modifier les "
+"sélections de <command>dpkg</command> telles que <option>hold</option> "
+"<option>install</option> <option>deinstall</option> et <option>purge</"
+"option> qui sont suivies par exemple par les commandes <command>apt-get "
+"dselect-upgrade</command> ou <command>aptitude</command>."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Automatically and Manually Installed Packages"
+msgstr "Paquets installés automatiquement et manuellement"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"When you request that a package is installed, and as a result other packages "
+"are installed to satisfy its dependencies, the dependencies are marked as "
+"being automatically installed, while the package you installed explicitly is "
+"marked as manually installed. Once an automatically installed package is no "
+"longer depended on by any manually installed package it is considered no "
+"longer needed and e.g. <command>apt-get</command> or <command>aptitude</"
+"command> will at least suggest removing them."
+msgstr ""
+"Lorsque l'installation d'un paquet est demandée et que par voie de "
+"dépendances d'autres paquets sont installés, ces paquets sont marqués comme "
+"ayant été automatiquement installés, tandis que le paquet que vous avez "
+"installé explicitement est marqué comme manuellement installé. Une fois que "
+"ces paquets automatiquement installés ne sont plus liés à un paquet installé "
+"manuellement, ils ne seront plus considérés comme nécessaires et "
+"<command>apt-get</command> ou <command>aptitude</command>, par exemple, "
+"proposeront au moins de les supprimer."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>auto</literal> is used to mark a package as being automatically "
+"installed, which will cause the package to be removed when no more manually "
+"installed packages depend on this package."
+msgstr ""
+"<literal>auto</literal> permet de marquer un paquet comme ayant été installé "
+"automatiquement. Un tel paquet sera supprimé automatiquement dès que plus "
+"aucun paquet installé manuellement ne dépend de lui."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>manual</literal> is used to mark a package as being manually "
+"installed, which will prevent the package from being automatically removed "
+"if no other packages depend on it."
+msgstr ""
+"<literal>manual</literal> permet de marquer un paquet comme installé "
+"manuellement. Un tel paquet ne sera pas supprimé automatiquement, même si "
+"aucun autre paquet n'en dépend."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showauto</literal> is used to print a list of automatically "
+"installed packages with each package on a new line. All automatically "
+"installed packages will be listed if no package is given. If packages are "
+"given only those which are automatically installed will be shown."
+msgstr ""
+"<literal>showauto</literal>, affiche les paquets installés automatiquement, "
+"un paquet par ligne. Si aucun paramètre n'est indiqué, tous les paquets "
+"installés automatiquement seront affichés. Si des noms de paquets sont "
+"passés en paramètre, seuls ceux qui sont automatiquement installés seront "
+"affichés."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showmanual</literal> can be used in the same way as "
+"<literal>showauto</literal> except that it will print a list of manually "
+"installed packages instead."
+msgstr ""
+"<literal>showmanual</literal> peut être utilisé de manière analogue à "
+"<literal>showauto</literal> pour afficher la liste des paquets installés "
+"manuellement."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"Read/Write package stats from the filename given with the parameter "
+"&synopsis-param-filename; instead of from the default location, which is "
+"<filename>extended_status</filename> in the directory defined by the "
+"Configuration Item: <literal>Dir::State</literal>."
+msgstr ""
+"Lecture/écriture des statistiques d'un paquet dans &synopsis-param-filename; "
+"au lieu du fichier par défaut (<filename>extended_status</filename> dans le "
+"répertoire défini par l'élément de configuration <literal>Dir::State</"
+"literal>)."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Prevent Changes for a Package"
+msgstr "Empêcher les modifications d'un paquet"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>hold</literal> is used to mark a package as held back, which will "
+"prevent the package from being automatically installed, upgraded or removed."
+msgstr ""
+"<literal>hold</literal> permet de marquer un paquet comme retenu, ce qui "
+"empêchera qu'il soit installé, mis à jour ou supprimé automatiquement."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>unhold</literal> is used to cancel a previously set hold on a "
+"package to allow all actions again."
+msgstr ""
+"<literal>unhold</literal> est utilisé pour supprimer l'état "
+"« hold » (retenu) d'un paquet afin de permettre toute action qui y est liée."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showhold</literal> is used to print a list of packages on hold in "
+"the same way as for the other show commands."
+msgstr ""
+"<literal>showhold</literal> permet d'afficher la liste des paquets retenus "
+"de manière analogue aux commandes de même type."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Schedule Packages for Install, Remove and Purge"
+msgstr "Programmer des paquets pour Install, Remove et Purge"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"Some front-ends like <command>apt-get dselect-upgrade</command> can be used "
+"to apply previously scheduled changes to the install state of packages. Such "
+"changes can be scheduled with the <option>install</option>, <option>remove</"
+"option> (also known as <option>deinstall</option>) and <option>purge</"
+"option> commands. Packages with a specific selection can be displayed with "
+"<option>showinstall</option>, <option>showremove</option> and "
+"<option>showpurge</option> respectively. More information about these so "
+"called dpkg selections can be found in &dpkg;."
+msgstr ""
+"Certains frontaux comme <command>apt-get dselect-upgrade</command> peuvent "
+"être utilisés pour appliquer des modifications, préalablement programmées, "
+"de l'état d'installation de paquets. Ces modifications peuvent être "
+"programmées avec les commandes <option>install</option>, <option>remove</"
+"option> (connue aussi sous le nom de <option>deinstall</option>) et "
+"<option>purge</option>. Les paquets faisant l'objet d'une sélection "
+"particulière peuvent être affichés respectivement avec les options "
+"<option>showinstall</option>, <option>showremove</option> et "
+"<option>showpurge</option>. Vous trouverez plus d'information sur ce que "
+"l'on appelle les sélections de dpkg dans &dpkg;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"<command>apt-mark</command> returns zero on normal operation, non-zero on "
+"error."
+msgstr ""
+"<command>apt-mark</command> retourne zéro après un déroulement normal, et un "
+"autre chiffre en cas d'erreur."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-secure.8.xml
+msgid "Archive authentication support for APT"
+msgstr "Gestion de l'authentification d'archive avec APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Starting with version 0.6, <command>APT</command> contains code that does "
+"signature checking of the Release file for all repositories. This ensures "
+"that data like packages in the archive can't be modified by people who have "
+"no access to the Release file signing key. Starting with version 1.1 "
+"<command>APT</command> requires repositories to provide recent "
+"authentication information for unimpeded usage of the repository."
+msgstr ""
+"Depuis sa version 0.6, <command>apt</command> sait vérifier la signature du "
+"fichier Release de chaque archive. On s'assure ainsi que les paquets de "
+"cette archive ne peuvent pas être modifiés par quelqu'un qui ne possède pas "
+"la clé de la signature du fichier Release. À partir de la version 1.1, "
+"<command>apt</command> exige que les dépôts fournissent des informations "
+"récentes d'authentification pour une utilisation libre du dépôt."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"If an archive has an unsigned Release file or no Release file at all current "
+"APT versions will refuse to download data from them by default in "
+"<command>update</command> operations and even if forced to download front-"
+"ends like &apt-get; will require explicit confirmation if an installation "
+"request includes a package from such an unauthenticated archive."
+msgstr ""
+"Si une archive possède un fichier Release non signé ou pas de fichier "
+"Release du tout, les versions actuelles d'APT refuseront par défaut d'en "
+"télécharger des données dans les opérations <command>update</command>. Même "
+"si un frontal tel que &apt-get; est forcé de télécharger, il demandera une "
+"confirmation explicite si une installation inclut un paquet d'une archive "
+"non authentifiée."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"As a temporary exception &apt-get; (not &apt;!) raises warnings only if it "
+"encounters unauthenticated archives to give a slightly longer grace period "
+"on this backward compatibility effecting change. This exception will be "
+"removed in future releases and you can opt-out of this grace period by "
+"setting the configuration option <option>Binary::apt-get::Acquire::"
+"AllowInsecureRepositories</option> to <literal>false</literal> or <option>--"
+"no-allow-insecure-repositories</option> on the command line."
+msgstr ""
+"Comme exception temporaire, &apt-get; (pas &apt; !) émet seulement une mise "
+"en garde s'il rencontre des archives non authentifiées pour accorder une "
+"période de grâce un peu plus longue à cette modification affectant la "
+"compatibilité ascendante. Cette exception disparaîtra dans les futures "
+"versions et vous pouvez renoncer à ce délai de grâce en configurant l'option "
+"<option>Binary::apt-get::Acquire::AllowInsecureRepositories</option> à "
+"<literal>false</literal> ou en passant l'option <option>--no-allow-insecure-"
+"repositories</option> sur la ligne de commande."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"You can force all APT clients to raise only warnings by setting the "
+"configuration option <option>Acquire::AllowInsecureRepositories</option> to "
+"<literal>true</literal>. Individual repositories can also be allowed to be "
+"insecure via the &sources-list; option <literal>allow-insecure=yes</"
+"literal>. Note that insecure repositories are strongly discouraged and all "
+"options to force apt to continue supporting them will eventually be "
+"removed. Users also have the <option>Trusted</option> option available to "
+"disable even the warnings, but be sure to understand the implications as "
+"detailed in &sources-list;."
+msgstr ""
+"Vous pouvez contraindre les clients APT à n'émettre que des avertissements "
+"en configurant l'option <option>Acquire::AllowInsecureRepositories</option> "
+"à <literal>true</literal>. L'option <literal>allow-insecure=yes</literal> de "
+"&sources-list; peut aussi permettre à des dépôts individuels d'être non "
+"sécurisés. Veuillez noter que les dépôts non sécurisés sont fortement "
+"déconseillés et toutes les options pour contraindre APT à continuer à les "
+"prendre en charge devront être éventuellement supprimées. Les utilisateurs "
+"disposent aussi de l'option <option>Trusted</option> pour désactiver même "
+"les avertissements, mais il faut être sûr de comprendre ses implications "
+"détaillées dans &sources-list;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"A repository which previously was authenticated but would loose this state "
+"in an <command>update</command> operation raises an error in all APT clients "
+"irrespective of the option to allow or forbid usage of insecure "
+"repositories. The error can be overcome by additionally setting "
+"<option>Acquire::AllowDowngradeToInsecureRepositories</option> to "
+"<literal>true</literal> or for Individual repositories with the &sources-"
+"list; option <literal>allow-downgrade-to-insecure=yes</literal>."
+msgstr ""
+"Un dépôt qui auparavant était authentifié, mais qui perdrait cet état lors "
+"d'une opération <command>update</command> envoie un message d'erreur à tous "
+"les clients d'APT quelle que soit l'option d'autoriser ou d'interdire "
+"l'utilisation de dépôts non sécurisés. L'erreur peut être contournée par le "
+"réglage supplémentaire de <option>Acquire::"
+"AllowDowngradeToInsecureRepositories</option> à <literal>true</literal>, ou, "
+"pour des dépôts individuels avec l'option <literal>allow-downgrade-to-"
+"insecure=yes</literal> de &sources-list;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note: All APT-based package management front-ends like &apt-get;, &aptitude; "
+"and &synaptic; support this authentication feature, so this manpage uses "
+"<literal>APT</literal> to refer to them all for simplicity only."
+msgstr ""
+"Attention : toutes les interfaces de gestion de paquets comme &apt-get;, "
+"&aptitude; et &synaptic; possèdent cette fonction de certification, aussi "
+"cette page de manuel utilise <literal>APT</literal> pour se référer à "
+"l'ensemble d'entre elles, pour des raisons de simplicité."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Trusted Repositories"
+msgstr "Archives de confiance"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"The chain of trust from an APT archive to the end user is made up of several "
+"steps. <command>apt-secure</command> is the last step in this chain; "
+"trusting an archive does not mean that you trust its packages not to contain "
+"malicious code, but means that you trust the archive maintainer. It's the "
+"archive maintainer's responsibility to ensure that the archive's integrity "
+"is preserved."
+msgstr ""
+"D'une archive APT jusqu'à l'utilisateur, la chaîne de confiance se construit "
+"en plusieurs étapes. <command>Apt-secure</command> est la dernière étape. "
+"Faire confiance à une archive ne signifie pas que les paquets qu'elle "
+"contient sont exempts de code malveillant, mais signifie que vous faites "
+"confiance au responsable de l'archive. C'est ensuite au responsable de "
+"l'archive de faire en sorte que l'archive soit fiable."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"apt-secure does not review signatures at a package level. If you require "
+"tools to do this you should look at <command>debsig-verify</command> and "
+"<command>debsign</command> (provided in the debsig-verify and devscripts "
+"packages respectively)."
+msgstr ""
+"<command>Apt-secure</command> n'examine pas la signature d'un paquet. "
+"Certains programmes peuvent le faire comme <command>debsig-verify</command> "
+"ou <command>debsign</command>, qu'on peut trouver dans les paquets debsig-"
+"verify et devscripts."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"The chain of trust in Debian starts (e.g.) when a maintainer uploads a new "
+"package or a new version of a package to the Debian archive. In order to "
+"become effective, this upload needs to be signed by a key contained in one "
+"of the Debian package maintainer keyrings (available in the debian-keyring "
+"package). Maintainers' keys are signed by other maintainers following pre-"
+"established procedures to ensure the identity of the key holder. Similar "
+"procedures exist in all Debian-based distributions."
+msgstr ""
+"La chaîne de confiance dans Debian commence, par exemple, quand un "
+"responsable de paquet envoie un nouveau paquet ou une nouvelle version d'un "
+"paquet dans l'archive. Cet envoi, pour être effectif, doit être signé avec "
+"la clé d'un responsable qui se trouve dans un des trousseaux des "
+"responsables de paquet Debian (disponibles dans le paquet debian-keyring). "
+"Les clés des responsables de paquet sont signées par d'autres responsables, "
+"suivant des procédures préétablies pour s'assurer de l'identité des "
+"propriétaires de la clé. Des procédures similaires existent dans toutes les "
+"distributions basées sur Debian."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Once the uploaded package is verified and included in the archive, the "
+"maintainer signature is stripped off, and checksums of the package are "
+"computed and put in the Packages file. The checksums of all of the Packages "
+"files are then computed and put into the Release file. The Release file is "
+"then signed by the archive key for this &keyring-distro; release, and "
+"distributed alongside the packages and the Packages files on &keyring-"
+"distro; mirrors. The keys are in the &keyring-distro; archive keyring "
+"available in the &keyring-package; package."
+msgstr ""
+"Une fois que le paquet envoyé a été vérifié et inclus dans l'archive, la "
+"signature du responsable est enlevée, une somme de contrôle du paquet est "
+"calculée et mise dans le fichier Packages. Une somme de contrôle de tous les "
+"paquets est ensuite calculée et mise dans le fichier Release. Ce fichier est "
+"signé par la clé de l'archive pour la version courante de la distribution et "
+"distribuée en même temps que les paquets et les fichiers Packages sur les "
+"miroirs. Les clés sont dans le trousseau de clés de l'archive fournies par "
+"le paquet &keyring-package;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"End users can check the signature of the Release file, extract a checksum of "
+"a package from it and compare it with the checksum of the package they "
+"downloaded by hand - or rely on APT doing this automatically."
+msgstr ""
+"Un utilisateur peut consulter la signature du fichier Release, extraire la "
+"somme de contrôle d'un paquet et la comparer avec la somme du paquet qu'il a "
+"téléchargé, ou tout simplement compter sur APT pour faire ces opérations "
+"automatiquement."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Notice that this is distinct from checking signatures on a per package "
+"basis. It is designed to prevent two possible attacks:"
+msgstr ""
+"Cette façon de faire est différente d'une vérification de la signature d'un "
+"paquet. Elle vise à empêcher deux types d'attaque possibles :"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<literal>Network \"man in the middle\" attacks</literal>. Without signature "
+"checking, malicious agents can introduce themselves into the package "
+"download process and provide malicious software either by controlling a "
+"network element (router, switch, etc.) or by redirecting traffic to a rogue "
+"server (through ARP or DNS spoofing attacks)."
+msgstr ""
+"<literal>Attaque réseau de type « homme au milieu »</literal>. Sans "
+"vérification de signature, quelqu'un de malveillant peut s'introduire au "
+"milieu du processus de téléchargement et insérer du code soit en contrôlant "
+"un élément du réseau, routeur, commutateur, etc. soit en détournant le "
+"trafic vers un serveur fourbe (par usurpation d'adresses)."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<literal>Mirror network compromise</literal>. Without signature checking, a "
+"malicious agent can compromise a mirror host and modify the files in it to "
+"propagate malicious software to all users downloading packages from that "
+"host."
+msgstr ""
+"<literal>Attaque par compromission d'un miroir sur le réseau</literal>. "
+"Sans vérification de signature, quelqu'un de malveillant peut compromettre "
+"un miroir et modifier les fichiers. Ainsi tous ceux qui téléchargent les "
+"paquets de ce miroir propagent du code malveillant."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"However, it does not defend against a compromise of the master server itself "
+"(which signs the packages) or against a compromise of the key used to sign "
+"the Release files. In any case, this mechanism can complement a per-package "
+"signature."
+msgstr ""
+"Cependant cette méthode ne protège pas contre une compromission du serveur "
+"principal lui-même (qui signe les paquets) ni contre la compromission de la "
+"clé qui sert à signer les fichiers Release. Mais elle peut compléter la "
+"signature des paquets."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "User Configuration"
+msgstr "Configuration utilisateur"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"<command>apt-key</command> is the program that manages the list of keys used "
+"by APT to trust repositories. It can be used to add or remove keys as well "
+"as list the trusted keys. Limiting which key(s) are able to sign which "
+"archive is possible via the <option>Signed-By</option> in &sources-list;."
+msgstr ""
+"Le programme qui gère la liste des clés utilisées par APT pour faire "
+"confiance aux dépôts s'appelle <command>apt-key</command>. Il peut ajouter "
+"ou supprimer des clés aussi bien que lister les clés de confiance. Il est "
+"possible de limiter la capacité pour une ou plusieurs clés de signer telle "
+"ou telle archive avec l'option <option>Signed-By</option> dans &sources-"
+"list;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so fiddling with "
+"<command>apt-key</command> is only needed if third-party repositories are "
+"added."
+msgstr ""
+"Veuillez noter qu'une installation par défaut possède toutes les clés pour "
+"obtenir en toute sécurité des paquets des dépôts par défaut, aussi, bricoler "
+"avec <command>apt-key</command> n'est nécessaire que si vous souhaitez "
+"ajouter des dépôts tiers."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"In order to add a new key you need to first download it (you should make "
+"sure you are using a trusted communication channel when retrieving it), add "
+"it with <command>apt-key</command> and then run <command>apt-get update</"
+"command> so that apt can download and verify the <filename>InRelease</"
+"filename> or <filename>Release.gpg</filename> files from the archives you "
+"have configured."
+msgstr ""
+"Pour ajouter une clé, vous devez d'abord la télécharger. Il vaut mieux "
+"utiliser un canal fiable pour ce téléchargement. Ensuite vous l'ajoutez avec "
+"la commande <command>apt-key</command> et vous lancez la commande "
+"<command>apt-get update</command> pour télécharger et vérifier le fichier "
+"<filename>InRelease</filename> ou <filename>Release.gpg</filename> de "
+"l'archive que vous avez configurée."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Archive Configuration"
+msgstr "Configuration d'une archive"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"If you want to provide archive signatures in an archive under your "
+"maintenance you have to:"
+msgstr ""
+"Si vous voulez signer les archives dont vous avez la responsabilité, vous "
+"devez :"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Create a toplevel Release file</emphasis>, if it does not exist "
+"already. You can do this by running <command>apt-ftparchive release</"
+"command> (provided in apt-utils)."
+msgstr ""
+"<emphasis>créer un fichier Release à la racine de l'archive</emphasis>, s'il "
+"n'existe pas déjà. Vous pouvez le créer avec la commande <command>apt-"
+"ftparchive release</command> (fournie dans le paquet apt-utils)."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --"
+"clearsign -o InRelease Release</command> and <command>gpg -abs -o Release."
+"gpg Release</command>."
+msgstr ""
+"<emphasis>le signer</emphasis>, avec les commande <command>gpg -- clearsign -"
+"o InRelease Release</command> et <command>gpg -abs -o Release.gpg Release</"
+"command>."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Publish the key fingerprint</emphasis>, so that your users will "
+"know what key they need to import in order to authenticate the files in the "
+"archive. It is best to ship your key in its own keyring package like "
+"&keyring-distro; does with &keyring-package; to be able to distribute "
+"updates and key transitions automatically later."
+msgstr ""
+"<emphasis>publier l'empreinte de la clé</emphasis>. Ainsi les utilisateurs "
+"de votre archive connaîtront la clé qu'ils doivent importer pour "
+"authentifier les fichiers de l'archive. Le mieux est de diffuser sa clé dans "
+"son propre paquet de trousseau comme le fait &keyring-distro; avec &keyring-"
+"package; pour ensuite distribuer automatiquement les mises à jour et les "
+"transitions de clés."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Provide instructions on how to add your archive and key</"
+"emphasis>. If your users can't acquire your key securely the chain of trust "
+"described above is broken. How you can help users add your key depends on "
+"your archive and target audience ranging from having your keyring package "
+"included in another archive users already have configured (like the default "
+"repositories of their distribution) to leveraging the web of trust."
+msgstr ""
+"<emphasis>fournir les instructions pour ajouter l'archive et la clé</"
+"emphasis>. Si les utilisateurs ne peuvent récupérer de façon sûre votre clé, "
+"la chaîne de confiance décrite plus haut est rompue. La façon d'aider les "
+"utilisateurs à ajouter votre clé de l'archive dépend de l'archive et de "
+"l'audience cible : cela va d'un paquet de trousseau inclus dans une autre "
+"archive que des utilisateurs ont déjà configurée (comme les dépôts par "
+"défaut de leur distribution) à la mobilisation du web de confiance."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Whenever the contents of the archive change (new packages are added or "
+"removed) the archive maintainer has to follow the first two steps outlined "
+"above."
+msgstr ""
+"Chaque fois que le contenu de l'archive change, (suppression ou ajout de "
+"nouveaux paquets) le responsable doit refaire les deux premières étapes."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+"&debsign;, &debsig-verify;, &gpg;"
+msgstr ""
+"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+"&debsign;, &debsig-verify;, &gpg;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"For more background information you might want to review the <ulink url="
+"\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
+"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
+"available in the harden-doc package) and the <ulink url=\"http://www."
+"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
+"ulink> by V. Alex Brennen."
+msgstr ""
+"Pour des informations plus complètes, vous pouvez consulter <ulink url="
+"\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\"> "
+"l'infrastructure debian pour la sécurité</ulink> un chapitre du manuel "
+"Debian sur la sécurité (disponible dans le paquet harden-doc) et le <ulink "
+"url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\">Strong "
+"Distribution HOWTO</ulink> par V. Alex Brennen."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Manpage Authors"
+msgstr "Auteurs des pages de manuel"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"This man-page is based on the work of Javier Fernández-Sanguino Peña, Isaac "
+"Jones, Colin Walters, Florian Weimer and Michael Vogt."
+msgstr ""
+"Cette page a été écrite à partir des travaux de Javier Fernández-Sanguino "
+"Peña, Isaac Jones, Colin Walters, Florian Weimer et Michael Vogt."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cdrom.8.xml
+msgid "APT CD-ROM management utility"
+msgstr "Utilitaire de gestion des CD d'APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<command>apt-cdrom</command> is used to add a new CD-ROM to APT's list of "
+"available sources. <command>apt-cdrom</command> takes care of determining "
+"the structure of the disc as well as correcting for several possible mis-"
+"burns and verifying the index files."
+msgstr ""
+"<command>apt-cdrom</command> est utilisé pour ajouter un nouveau CD à la "
+"liste des sources disponibles. <command>apt-cdrom</command> prend soin de "
+"déterminer la structure du disque, de corriger de possibles erreurs de "
+"gravure et de vérifier les fichiers d'index."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"It is necessary to use <command>apt-cdrom</command> to add CDs to the APT "
+"system; it cannot be done by hand. Furthermore each disc in a multi-CD set "
+"must be inserted and scanned separately to account for possible mis-burns."
+msgstr ""
+"Il est nécessaire d'utiliser <command>apt-cdrom</command> pour ajouter des "
+"CD au système APT car cela ne peut être réalisé manuellement. Par ailleurs, "
+"chaque disque d'un ensemble de CD doit être séparément inséré et parcouru "
+"pour prendre en compte de possibles erreurs de gravure."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<literal>add</literal> is used to add a new disc to the source list. It will "
+"unmount the CD-ROM device, prompt for a disc to be inserted and then proceed "
+"to scan it and copy the index files. If the disc does not have a proper "
+"<filename>.disk</filename> directory you will be prompted for a descriptive "
+"title."
+msgstr ""
+"La commande <literal>add</literal> est utilisée pour ajouter un nouveau "
+"disque à la liste des sources. Elle démonte le CD, réclame l'insertion d'un "
+"disque, parcourt ensuite le disque et copie les fichiers d'index. Si le "
+"disque ne possède pas de répertoire <filename>.disk</filename> correct, un "
+"titre descriptif est demandé."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"APT uses a CD-ROM ID to track which disc is currently in the drive and "
+"maintains a database of these IDs in <filename>&statedir;/cdroms.list</"
+"filename>"
+msgstr ""
+"APT utilise un identifiant de CD pour reconnaître le disque qui se trouve "
+"actuellement dans le lecteur et maintient une base de données de ces "
+"identifiants dans <filename>&statedir;/cdroms.list</filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"A debugging tool to report the identity of the current disc as well as the "
+"stored file name"
+msgstr ""
+"Cette commande de débogage retourne l'identifiant du disque actuel ainsi que "
+"le nom du fichier stocké."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Do not try to auto-detect the CD-ROM path. Usually combined with the "
+"<option>--cdrom</option> option. Configuration Item: <literal>Acquire::"
+"cdrom::AutoDetect</literal>."
+msgstr ""
+"Ne pas essayer de détecter automatiquement le chemin du CD-ROM. "
+"Habituellement combiné avec l'option <option>--cdrom</option>. Élément de "
+"configuration : <literal>Acquire::cdrom::AutoDetect</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Mount point; specify the location to mount the CD-ROM. This mount point must "
+"be listed in <filename>/etc/fstab</filename> and properly configured. "
+"Configuration Item: <literal>Acquire::cdrom::mount</literal>."
+msgstr ""
+"Point de montage ; spécifie l'emplacement de montage du CD. Ce point de "
+"montage doit être spécifié dans <filename>/etc/fstab</filename> et "
+"correctement configuré. Élément de configuration : <literal>Acquire::cdrom::"
+"mount</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Rename a disc; change the label of a disc or override the disc's given "
+"label. This option will cause <command>apt-cdrom</command> to prompt for a "
+"new label. Configuration Item: <literal>APT::CDROM::Rename</literal>."
+msgstr ""
+"Change le nom d'un disque ; change le nom d'un disque ou remplace un disque "
+"pour un nom donné. Cette option oblige <command>apt-cdrom</command> à "
+"demander un nouveau nom à l'utilisateur. Élément de configuration : "
+"<literal>APT::CDROM::Rename</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"No mounting; prevent <command>apt-cdrom</command> from mounting and "
+"unmounting the mount point. Configuration Item: <literal>APT::CDROM::"
+"NoMount</literal>."
+msgstr ""
+"Pas de montage ; empêche <command>apt-cdrom</command> de monter ou démonter "
+"le point de montage. Élément de configuration : <literal >APT::CDROM::"
+"NoMount</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Fast Copy; Assume the package files are valid and do not check every "
+"package. This option should be used only if <command>apt-cdrom</command> has "
+"been run on this disc before and did not detect any errors. Configuration "
+"Item: <literal>APT::CDROM::Fast</literal>."
+msgstr ""
+"Copie rapide ; suppose que les fichiers de paquets sont valables et ne "
+"vérifie pas chaque paquet. Cette option ne devrait être utilisée que si "
+"<command>apt-cdrom</command> a préalablement utilisé ce disque et n'a trouvé "
+"aucune erreur. Élément de configuration : <literal>APT::CDROM::Fast</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Thorough Package Scan; This option may be needed with some old Debian "
+"1.1/1.2 discs that have Package files in strange places. It takes much "
+"longer to scan the CD but will pick them all up."
+msgstr ""
+"Parcours minutieux des paquets ; cette option peut être nécessaire avec des "
+"CD d'anciens systèmes Debian 1.1 ou 1.2 dont les fichiers Packages sont "
+"situés dans des endroits inhabituels. Il faudra plus de temps pour parcourir "
+"le CD mais tous les paquets seront repérés."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"No Changes; Do not change the &sources-list; file and do not write index "
+"files. Everything is still checked however. Configuration Item: "
+"<literal>APT::CDROM::NoAct</literal>."
+msgstr ""
+"Aucune modification ; ne pas modifier le fichier &sources-list; ni les "
+"fichiers d'index. Cependant, tout est vérifié. Élément de configuration : "
+"<literal>APT::CDROM::NoAct</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid "&apt-conf;, &apt-get;, &sources-list;"
+msgstr "&apt-conf;, &apt-get;, &sources-list;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<command>apt-cdrom</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-cdrom</command> renvoie zéro après un déroulement normal, et le "
+"nombre décimal 100 en cas d'erreur."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-config.8.xml
+msgid "APT Configuration Query program"
+msgstr "Programme d'interrogation de la configuration d'APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml
+msgid ""
+"<command>apt-config</command> is an internal program used by various "
+"portions of the APT suite to provide consistent configurability. It accesses "
+"the main configuration file <filename>/etc/apt/apt.conf</filename> in a "
+"manner that is easy to use for scripted applications."
+msgstr ""
+"<command>apt-config</command> est un programme interne utilisé par "
+"différents composants d'APT ; il offre la possibilité d'une configuration "
+"cohérente et permet aux applications conçues sous forme de script une "
+"utilisation simple du fichier de configuration principal <filename>/etc/apt/"
+"apt.conf</filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"shell is used to access the configuration information from a shell script. "
+"It is given pairs of arguments, the first being a shell variable and the "
+"second the configuration value to query. As output it lists shell assignment "
+"commands for each value present. In a shell script it should be used as "
+"follows:"
+msgstr ""
+"Le terme shell est utilisé pour accéder aux informations de configuration "
+"depuis un script shell. Deux arguments doivent lui être donnés ; le premier "
+"est une variable du shell et le second une valeur de configuration à "
+"demander. La sortie standard consiste en une liste de commandes "
+"d'assignation de shell pour chaque valeur présente. Dans un script shell, "
+"cette commande devrait être utilisée comme suit :"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-config.8.xml
+#, no-wrap
+msgid ""
+"OPTS=\"-f\"\n"
+"RES=`apt-config shell OPTS MyApp::options`\n"
+"eval $RES\n"
+msgstr ""
+"OPTS=\"-f\"\n"
+"RES=`apt-config shell OPTS MyApp::Options`\n"
+"eval $RES\n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"This will set the shell environment variable $OPTS to the value of MyApp::"
+"options with a default of <option>-f</option>."
+msgstr ""
+"La variable d'environnement du shell $OPTS sera définie par la valeur de "
+"MyApp::Options ou, par défaut, la valeur -f."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"The configuration item may be postfixed with a /[fdbi]. f returns file "
+"names, d returns directories, b returns true or false and i returns an "
+"integer. Each of the returns is normalized and verified internally."
+msgstr ""
+"L'élément de configuration peut être suivi par /[fdbi]. « f » renvoie un nom "
+"de fichier, « d » un nom de répertoire, « b » renvoie « true » ou « false » "
+"et « i » renvoie un entier. Chacune de ses valeurs est normalisée et "
+"vérifiée."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid "Just show the contents of the configuration space."
+msgstr "Affiche seulement le contenu de l'espace de configuration."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"Include options which have an empty value. This is the default, so use --no-"
+"empty to remove them from the output."
+msgstr ""
+"Inclure les options qui ont une valeur vide. Ce comportement est celui par "
+"défaut ; il est donc conseillé d'utiliser --no-empty pour les supprimer de "
+"ce qui est retourné."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-config.8.xml
+msgid "&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n"
+msgstr "&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"Defines the output of each config option. &percnt;t will be replaced with "
+"its individual name, &percnt;f with its full hierarchical name and &percnt;v "
+"with its value. Use uppercase letters and special characters in the value "
+"will be encoded to ensure that it can e.g. be safely used in a quoted-string "
+"as defined by RFC822. Additionally &percnt;n will be replaced by a newline, "
+"and &percnt;N by a tab. A &percnt; can be printed by using &percnt;&percnt;."
+msgstr ""
+"Définit ce que retourne chaque option de configuration. &percnt;t sera "
+"remplacé par son nom individuel, &percnt;f par le nom hiérarchique complet "
+"et &percnt;v par la valeur. Les majuscules et les caractères spéciaux dans "
+"la valeur seront encodés afin de pouvoir être utilisés sans problèmes, par "
+"exemple dans une chaîne définie par RFC822. Par ailleurs, &percnt;n sera "
+"remplacé par un retour à la ligne et &percnt;N par une tabulation. Le "
+"caractère &percnt; peut être affiché avec &percnt;&percnt; ."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml
+msgid "&apt-conf;"
+msgstr "&apt-conf;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml
+msgid ""
+"<command>apt-config</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-config</command> retourne zéro après un déroulement normal, et "
+"le nombre 100 en cas d'erreur."
+
+#. type: Content of: <refentry><refentryinfo><author><contrib>
+#: apt.conf.5.xml
+msgid "Initial documentation of Debug::*."
+msgstr "Documentation initiale de Debug::*."
+
+#. type: Content of: <refentry><refentryinfo><author><email>
+#: apt.conf.5.xml
+msgid "dburrows@debian.org"
+msgstr "dburrows@debian.org"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml
+msgid "5"
+msgstr "5"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.conf.5.xml
+msgid "Configuration file for APT"
+msgstr "Fichier de configuration pour APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<filename>/etc/apt/apt.conf</filename> is the main configuration file shared "
+"by all the tools in the APT suite of tools, though it is by no means the "
+"only place options can be set. The suite also shares a common command line "
+"parser to provide a uniform environment."
+msgstr ""
+"Le fichier <filename>apt.conf</filename> est le fichier de configuration "
+"principal du l'ensemble de programmes APT, mais n'est de loin pas le seul "
+"endroit où des choix d'options peuvent être effectués. L'ensemble des outils "
+"partagent leur analyse de la ligne de commande, ce qui permet de garantir un "
+"environnement d'utilisation uniforme."
+
+#. type: Content of: <refentry><refsect1><orderedlist><para>
+#: apt.conf.5.xml
+msgid ""
+"When an APT tool starts up it will read the configuration files in the "
+"following order:"
+msgstr ""
+"Lorsqu'un programme de l'ensemble APT est utilisé, il lit le fichier de "
+"configuration dans l'ordre suivant :"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the file specified by the <envar>APT_CONFIG</envar> environment variable (if "
+"any)"
+msgstr ""
+"fichier indiqué par la variable d'environnement <envar>APT_CONFIG</envar> si "
+"elle existe"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending "
+"order which have either no or \"<literal>conf</literal>\" as filename "
+"extension and which only contain alphanumeric, hyphen (-), underscore (_) "
+"and period (.) characters. Otherwise APT will print a notice that it has "
+"ignored a file, unless that file matches a pattern in the <literal>Dir::"
+"Ignore-Files-Silently</literal> configuration list - in which case it will "
+"be silently ignored."
+msgstr ""
+"tous les fichiers de <literal>Dir::Etc::Parts</literal> dans l'ordre "
+"alphanumérique ascendant qui ont soit l'extension \"<literal>conf</literal>"
+"\", soit aucune extension et qui ne contiennent que des caractères "
+"alphanumériques, des tirets (-), des caractères de soulignement (_) et des "
+"points (.), les autres fichiers étant ignorés. Dans le cas contraire, APT "
+"affichera un avertissement indiquant qu'il a ignoré un fichier si celui-ci "
+"ne correspond par à un motif défini dans <literal>Dir::Ignore-Files-"
+"Silently</literal> (les fichiers correspondant à cette variable de "
+"configuration étant, eux, ignorés silencieusemennt)."
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the main configuration file specified by <literal>Dir::Etc::main</literal>"
+msgstr ""
+"le fichier de configuration défini par <literal>Dir::Etc::Main</literal>"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"all options set in the binary specific configuration subtree are moved into "
+"the root of the tree."
+msgstr ""
+"toutes les options définie dans le sous-arbre binaire de configuration "
+"spécifique sont déplacées à la racine de l'arbre."
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the command line options are applied to override the configuration "
+"directives or to load even more configuration files."
+msgstr ""
+"les options de ligne de commande sont appliquées pour remplacer les "
+"directives de configuration ou pour charger d'autres fichiers de "
+"configuration."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Syntax"
+msgstr "Syntaxe"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The configuration file is organized in a tree with options organized into "
+"functional groups. Option specification is given with a double colon "
+"notation; for instance <literal>APT::Get::Assume-Yes</literal> is an option "
+"within the APT tool group, for the Get tool. Options do not inherit from "
+"their parent groups."
+msgstr ""
+"Le fichier de configuration est construit comme un arbre d'options "
+"organisées en groupes fonctionnels. On se sert du double deux points "
+"(« :: ») pour indiquer une option ; par exemple, <literal>APT::Get::Assume-"
+"Yes</literal> est une option pour le groupe d'outils APT, destinée à l'outil "
+"Get. Il n'y a pas d'héritage des options des groupes parents."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Syntactically the configuration language is modeled after what the ISC tools "
+"such as bind and dhcp use. Lines starting with <literal>//</literal> are "
+"treated as comments (ignored), as well as all text between <literal>/*</"
+"literal> and <literal>*/</literal>, just like C/C++ comments. Each line is "
+"of the form <literal>APT::Get::Assume-Yes \"true\";</literal>. The "
+"quotation marks and trailing semicolon are required. The value must be on "
+"one line, and there is no kind of string concatenation. Values must not "
+"include backslashes or extra quotation marks. Option names are made up of "
+"alphanumeric characters and the characters \"/-:._+\". A new scope can be "
+"opened with curly braces, like this:"
+msgstr ""
+"Syntaxiquement, le langage de configuration est conçu sur le même modèle que "
+"les langages utilisés par des outils ISC tels que bind et dhcp. Une ligne "
+"qui commence par <literal>//</literal> est traitée comme un commentaire et "
+"ignorée, de même que les sections de texte placées entre <literal>/*</"
+"literal> et <literal>*/</literal>, tout comme les commentaires C/C++. "
+"Chaque ligne est de la forme : <literal>APT::Get::Assume-Yes \"true\";</"
+"literal>. Les guillemets et le point-virgule final sont obligatoire. La "
+"valeur doit tenir sur une seule ligne et il n'existe pas de fusion de "
+"chaînes. Elle ne doit pas comporter de guillemets et de barre oblique "
+"inversée. Le nom d'une option peut contenir des caractères alphanumériques "
+"et « /-:._+ ». On peut déclarer un nouveau champ d'action avec des "
+"accolades, comme suit :"
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT {\n"
+" Get {\n"
+" Assume-Yes \"true\";\n"
+" Fix-Broken \"true\";\n"
+" };\n"
+"};\n"
+msgstr ""
+"APT {\n"
+" Get {\n"
+" Assume-Yes \"true\";\n"
+" Fix-Broken \"true\";\n"
+" };\n"
+"};\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"with newlines placed to make it more readable. Lists can be created by "
+"opening a scope and including a single string enclosed in quotes followed by "
+"a semicolon. Multiple entries can be included, separated by a semicolon."
+msgstr ""
+"avec des retours à la ligne pour faciliter la lecture. On peut créer une "
+"liste en ouvrant un champ d'action et en y insérant une chaîne entre "
+"guillemets suivie d'un point virgule. Des entrées multiples peuvent être "
+"incluses, séparées par des points-virgules."
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "DPkg::Pre-Install-Pkgs {\"/usr/sbin/dpkg-preconfigure --apt\";};\n"
+msgstr "DPkg::Pre-Install-Pkgs {\"/usr/sbin/dpkg-preconfigure --apt\";};\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"In general the sample configuration file &configureindex; is a good guide "
+"for how it should look."
+msgstr ""
+"Les modèles &configureindex; montrent à quoi devrait ressembler le fichier "
+"de configuration."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Case is not significant in names of configuration items, so in the previous "
+"example you could use <literal>dpkg::pre-install-pkgs</literal>."
+msgstr ""
+"Les identifiants des options de configuration ne sont pas sensibles à la "
+"casse. Dans l'exemple précédent, on pourrait donc aussi bien utiliser "
+"<literal>dpkg::pre-install-pkgs</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Names for the configuration items are optional if a list is defined as can "
+"be seen in the <literal>DPkg::Pre-Install-Pkgs</literal> example above. If "
+"you don't specify a name a new entry will simply add a new option to the "
+"list. If you specify a name you can override the option in the same way as "
+"any other option by reassigning a new value to the option."
+msgstr ""
+"Les noms des éléments de configuration sont optionnels si une liste est "
+"définie, comme cela peut se voir avec l'exemple <literal>DPkg::Pre-Install-"
+"Pkgs</literal> précédent. Si vous n'indiquez pas de nom, une nouvelle entrée "
+"ajoutera une nouvelle option à la liste. Dans le cas contraire, l'option "
+"correspondante peut être remplacée, comme toute autre option, en lui "
+"réaffectant une valeur."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Two special commands are defined: <literal>#include</literal> (which is "
+"deprecated and not supported by alternative implementations) and "
+"<literal>#clear</literal>. <literal>#include</literal> will include the "
+"given file, unless the filename ends in a slash, in which case the whole "
+"directory is included. <literal>#clear</literal> is used to erase a part of "
+"the configuration tree. The specified element and all its descendants are "
+"erased. (Note that these lines also need to end with a semicolon.)"
+msgstr ""
+"Deux éléments spéciaux sont autorisés : <literal>#include</literal> (qui est "
+"obsolète et n'est plus géré par des implémentations alternatives) et "
+"<literal>#clear</literal>. <literal>#include</literal> inclut le fichier "
+"donné en paramètre, à moins que le nom ne se termine par une barre oblique "
+"auquel cas le répertoire entier est inclus. <literal>#clear</literal> sert à "
+"effacer une partie de l'arbre de configuration. L'élément désigné et tout "
+"ses descendants sont supprimés. Veuillez noter que ces lignes doivent "
+"également se terminer avec un point-virgule."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>#clear</literal> command is the only way to delete a list or a "
+"complete scope. Reopening a scope (or using the syntax described below with "
+"an appended <literal>::</literal>) will <emphasis>not</emphasis> override "
+"previously written entries. Options can only be overridden by addressing a "
+"new value to them - lists and scopes can't be overridden, only cleared."
+msgstr ""
+"La commande <literal>#clear</literal> est la seule façon de supprimer une "
+"liste ou un champ d'action (« scope »). La réouverture d'un scope ou le "
+"style « :: » décrit plus loin ne remplaceront <emphasis>pas</emphasis> les "
+"entrées écrites précédemment. Les options ne peuvent être remplacées qu'en "
+"leur affectant une nouvelle valeur. Les listes et les champs d'action ne "
+"peuvent être remplacés mais seulement effacés."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"All of the APT tools take an -o option which allows an arbitrary "
+"configuration directive to be specified on the command line. The syntax is a "
+"full option name (<literal>APT::Get::Assume-Yes</literal> for instance) "
+"followed by an equals sign then the new value of the option. To append a new "
+"element to a list, add a trailing <literal>::</literal> to the name of the "
+"list. (As you might suspect, the scope syntax can't be used on the command "
+"line.)"
+msgstr ""
+"Tous les outils d'APT possèdent une option <option>-o</option> qui permet de "
+"spécifier une configuration quelconque depuis la ligne de commande. La "
+"syntaxe consiste en un nom complet d'option (par exemple <literal>APT::Get::"
+"Assume-Yes</literal>) suivi par un signe égal, puis par la nouvelle valeur "
+"de l'option. On peut compléter une liste en ajoutant un <literal>::</"
+"literal> final au nom de la liste. Comme on peut s'en douter, la syntaxe de "
+"champ d'action (« scope ») ne peut pas être indiquée à la ligne de commande."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that appending items to a list using <literal>::</literal> only works "
+"for one item per line, and that you should not use it in combination with "
+"the scope syntax (which adds <literal>::</literal> implicitly). Using both "
+"syntaxes together will trigger a bug which some users unfortunately depend "
+"on: an option with the unusual name \"<literal>::</literal>\" which acts "
+"like every other option with a name. This introduces many problems; for one "
+"thing, users who write multiple lines in this <emphasis>wrong</emphasis> "
+"syntax in the hope of appending to a list will achieve the opposite, as only "
+"the last assignment for this option \"<literal>::</literal>\" will be used. "
+"Future versions of APT will raise errors and stop working if they encounter "
+"this misuse, so please correct such statements now while APT doesn't "
+"explicitly complain about them."
+msgstr ""
+"Veuillez noter que vous ne pouvez utiliser <literal>::</literal> que pour "
+"ajouter un élément par ligne à la liste et que cela ne devrait pas être "
+"utilisé en combinaison avec la syntaxe de champ d'action (« scope ») qui "
+"inclut implicitement <literal>::</literal>. L'utilisation simultanée des "
+"deux syntaxes déclenchera un bogue dont certains utilisateurs se servent "
+"comme d'une fonctionnalité : une option avec le nom inhabituel « <literal>::"
+"</literal> » se comportera comme toute autre option nommée. Cela risque "
+"d'avoir de nombreux problèmes comme conséquence, par exemple si un "
+"utilisateur écrit plusieurs lignes avec cette syntaxe <emphasis>erronée</"
+"emphasis> afin de faire un ajout à la liste, l'effet obtenu sera inverse "
+"puisque seule la dernière valeur pour l'option « <literal>::</literal> » "
+"sera utilisée. Les futures versions d'APT retourneront une erreur et "
+"l'exécution sera interrompue si cette utilisation incorrecte est rencontrée. "
+"Il est donc conseillé de corriger ces défauts tant qu'APT ne s'en plaint pas "
+"explicitement."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "The APT Group"
+msgstr "Le groupe APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"This group of options controls general APT behavior as well as holding the "
+"options for all of the tools."
+msgstr ""
+"Ce groupe d'options contrôle le comportement global d'APT et contient "
+"également des options communes à tous les outils."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"System Architecture; sets the architecture to use when fetching files and "
+"parsing package lists. The internal default is the architecture apt was "
+"compiled for."
+msgstr ""
+"L'architecture du système ; cette option positionne l'architecture à "
+"utiliser pour récupérer des fichiers et analyser des listes de paquets. La "
+"valeur interne par défaut est l'architecture pour laquelle APT a été compilé."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"All Architectures the system supports. For instance, CPUs implementing the "
+"<literal>amd64</literal> (also called <literal>x86-64</literal>) "
+"instruction set are also able to execute binaries compiled for the "
+"<literal>i386</literal> (<literal>x86</literal>) instruction set. This list "
+"is used when fetching files and parsing package lists. The initial default "
+"is always the system's native architecture (<literal>APT::Architecture</"
+"literal>), and foreign architectures are added to the default list when they "
+"are registered via <command>dpkg --add-architecture</command>."
+msgstr ""
+"Toutes les architectures gérées par le système. Par exemple, les processeurs "
+"qui mettent en Å“uvre le jeu d'instructions <literal>amd64</literal> (aussi "
+"appelé <literal>x86-64</literal>) peuvent exécuter des binaires compilés "
+"pour le jeu d'instructions<literal>i386</literal> (<literal>x86</literal>). "
+"Cette liste est utilisé pour récupérer des fichiers et analyser les listes "
+"de paquets. La valeur par défaut initiale est toujours celle de "
+"l'architecture native du système (<literal>APT::Architecture</literal>) et "
+"les autres architectures sont ajoutées à la liste par défaut lorsqu'elles "
+"sont enregistrées avec <command>dpkg --add-architecture</command>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines which compression formats are supported, how compression "
+"and decompression can be performed if support for this format isn't built "
+"into apt directly and a cost-value indicating how costly it is to compress "
+"something in this format. As an example the following configuration stanza "
+"would allow apt to download and uncompress as well as create and store files "
+"with the low-cost <literal>.reversed</literal> file extension which it will "
+"pass to the command <command>rev</command> without additional commandline "
+"parameters for compression and uncompression:"
+msgstr ""
+"Ce champ d'action (« scope ») définit quels formats de compression sont "
+"gérés, comment la compression et la décompression peuvent être réalisées si "
+"ce format n'est pas pris en charge directement dans APT et une indication du "
+"coût d'une compression dans ce format. Dans cet exemple, le paragraphe "
+"suivant de la configuration permettra à APT de télécharger, décompresser, "
+"créer et stocker des fichiers avec l'extension de fichier à bas coût "
+"<literal>.reversed</literal> qu'il passera à la commande <command>rev</"
+"command> sans paramètre supplémentaire en ligne de commande pour la "
+"compression et la décompression :"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Compressor::rev {\n"
+"\tName \"rev\";\n"
+"\tExtension \".reversed\";\n"
+"\tBinary \"rev\";\n"
+"\tCompressArg {};\n"
+"\tUncompressArg {};\n"
+"\tCost \"10\";\n"
+"};\n"
+msgstr ""
+"APT::Compressor::rev {\n"
+"\tName \"rev\";\n"
+"\tExtension \".reversed\";\n"
+"\tBinary \"rev\";\n"
+"\tCompressArg {};\n"
+"\tUncompressArg {};\n"
+"\tCost \"10\";\n"
+"};\n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"List of all build profiles enabled for build-dependency resolution, without "
+"the \"<literal>profile.</literal>\" namespace prefix. By default this list "
+"is empty. The <envar>DEB_BUILD_PROFILES</envar> as used by &dpkg-"
+"buildpackage; overrides the list notation."
+msgstr ""
+"Liste de tous les profils de construction activés pour la résolution de "
+"dépendances de construction, sans le préfixe de l'espace de nommage du "
+"\"<literal>profile.</literal>\". Par défaut, cette liste est vide. La "
+"variable <envar>DEB_BUILD_PROFILES</envar> comme l'utilise &dpkg-"
+"buildpackage; annule la notation de liste."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Default release to install packages from if more than one version is "
+"available. Contains release name, codename or release version. Examples: "
+"'stable', 'testing', 'unstable', '&debian-stable-codename;', '&debian-"
+"testing-codename;', '4.0', '5.0*'. See also &apt-preferences;."
+msgstr ""
+"Indique la distribution à utiliser par défaut lors de l'installation d'un "
+"paquet si plusieurs versions sont disponibles. La valeur peut être un nom de "
+"distribution ou un numéro de version. Exemples : « stable », « testing », "
+"« &debian-stable-codename; », « &debian-testing-codename; », « 4.0 », "
+"« 5.0* ». Voir aussi &apt-preferences;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Ignore held packages; this global option causes the problem resolver to "
+"ignore held packages in its decision making."
+msgstr ""
+"Ignore les paquets « gelés » ; cette option globale indique au système de "
+"résolution de ne pas tenir compte des paquets « gelés » dans sa prise de "
+"décision."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Defaults to on. When turned on the autoclean feature will remove any "
+"packages which can no longer be downloaded from the cache. If turned off "
+"then packages that are locally installed are also excluded from cleaning - "
+"but note that APT provides no direct means to reinstall them."
+msgstr ""
+"Avec cette option qui est activée par défaut, la fonctionnalité "
+"« autoclean » supprime du cache tout paquet qui ne peut plus être récupéré. "
+"Quand cette option est désactivée, les paquets qui sont installés localement "
+"sont aussi exclus du nettoyage - mais notez que APT ne fournit aucun moyen "
+"direct pour les réinstaller."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Defaults to on, which will cause APT to install essential and important "
+"packages as soon as possible in an install/upgrade operation, in order to "
+"limit the effect of a failing &dpkg; call. If this option is disabled, APT "
+"treats an important package in the same way as an extra package: between the "
+"unpacking of the package A and its configuration there can be many other "
+"unpack or configuration calls for other unrelated packages B, C etc. If "
+"these cause the &dpkg; call to fail (e.g. because package B's maintainer "
+"scripts generate an error), this results in a system state in which package "
+"A is unpacked but unconfigured - so any package depending on A is now no "
+"longer guaranteed to work, as its dependency on A is no longer satisfied."
+msgstr ""
+"La valeur par défaut est « on » ce qui a pour conséquence qu'APT installera "
+"les paquets essentiels et importants dès que possible pendant les opérations "
+"d'installation ou de mise à jour, afin de limiter les conséquences d'un "
+"échec de &dpkg;. Si cette option est désactivée, APT traitera les paquets "
+"importants comme les paquets de priorité « extra » : entre la décompaction "
+"du paquet A et sa configuration, de nombreuses opérations de décompaction ou "
+"de configuration peuvent prendre place pour des paquets B ou C qui n'ont "
+"rien à voir. Si ces opérations provoquent un échec de &dpkg; (par exemple si "
+"les scripts du responsable du paquet B provoquent une erreur), le résultat "
+"est que le paquet A est décompacté mais non configuré. En conséquence, les "
+"paquets qui en dépendent pourraient ne plus fonctionner puisque leurs "
+"dépendances ne sont pas satisfaites."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The immediate configuration marker is also applied in the potentially "
+"problematic case of circular dependencies, since a dependency with the "
+"immediate flag is equivalent to a Pre-Dependency. In theory this allows APT "
+"to recognise a situation in which it is unable to perform immediate "
+"configuration, abort, and suggest to the user that the option should be "
+"temporarily deactivated in order to allow the operation to proceed. Note "
+"the use of the word \"theory\" here; in the real world this problem has "
+"rarely been encountered, in non-stable distribution versions, and was caused "
+"by wrong dependencies of the package in question or by a system in an "
+"already broken state; so you should not blindly disable this option, as the "
+"scenario mentioned above is not the only problem it can help to prevent in "
+"the first place."
+msgstr ""
+"Le marqueur de configuration immédiate est également utilisé dans le cas "
+"potentiellement délicat de dépendances circulaires, car une dépendance avec "
+"le marqueur « immediate » est équivalent à une pré-dépendance. Cela permet "
+"en théorie à APT de reconnaître le cas où il ne peut effectuer de "
+"configuration immédiate et de s'interrompre pour suggérer de désactiver "
+"temporairement l'option pour permettre aux opérations de s'effectuer. "
+"Veuillez noter l'utilisation du terme « en théorie » : en réalité, ce "
+"problème est rarement rencontré, dans des versions non stables de "
+"distributions, et était causé par des dépendances incorrectes ou par un "
+"système déjà dans un état instable. Vous ne devriez donc pas désactiver "
+"cette option sans savoir ce que vous faites car le scénario ci-dessus n'est "
+"le seul qu'elle permet d'éviter."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Before a big operation like <literal>dist-upgrade</literal> is run with this "
+"option disabled you should try to explicitly <literal>install</literal> the "
+"package APT is unable to configure immediately; but please make sure you "
+"also report your problem to your distribution and to the APT team with the "
+"buglink below, so they can work on improving or correcting the upgrade "
+"process."
+msgstr ""
+"Avant qu'une opération importante comme <literal>dist-upgrade</literal> ne "
+"soit exécutée avec cette option désactivée, vous devriez essayer d'installer "
+"(<literal>install</literal>) explicitement le paquet qu'APT ne peut pas "
+"configurer immédiatement. Ne manquez toutefois pas de signaler le problème "
+"dans votre distribution et à l'équipe de maintenance d'APT avec le lien de "
+"système de gestion de bogues ci-dessous, afin qu'ils puissent améliorer ou "
+"corriger les processus de mise à jour."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Never enable this option unless you <emphasis>really</emphasis> know what "
+"you are doing. It permits APT to temporarily remove an essential package to "
+"break a Conflicts/Conflicts or Conflicts/Pre-Depends loop between two "
+"essential packages. <emphasis>Such a loop should never exist and is a grave "
+"bug</emphasis>. This option will work if the essential packages are not "
+"<command>tar</command>, <command>gzip</command>, <command>libc</command>, "
+"<command>dpkg</command>, <command>dash</command> or anything that those "
+"packages depend on."
+msgstr ""
+"Ne jamais activer cette option à moins que vous ne sachiez "
+"<emphasis>réellement</emphasis> ce que vous faites. Elle autorise APT à "
+"supprimer temporairement un paquet essentiel pour mettre fin à une boucle "
+"Conflicts / Conflicts ou Conflicts / Pre-Depends entre deux paquets "
+"essentiels. <emphasis>Une telle boucle ne devrait jamais se produire : c'est "
+"un bogue très important</emphasis>. Cette option fonctionne si les paquets "
+"essentiels ne sont pas <command>tar</command>, <command>gzip</command>, "
+"<command>libc</command>, <command>dpkg</command>, <command>dash</command> ou "
+"tous les paquets dont ces paquets dépendent."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"APT uses since version 0.7.26 a resizable memory mapped cache file to store "
+"the available information. <literal>Cache-Start</literal> acts as a hint of "
+"the size the cache will grow to, and is therefore the amount of memory APT "
+"will request at startup. The default value is 20971520 bytes (~20 MB). Note "
+"that this amount of space needs to be available for APT; otherwise it will "
+"likely fail ungracefully, so for memory restricted devices this value should "
+"be lowered while on systems with a lot of configured sources it should be "
+"increased. <literal>Cache-Grow</literal> defines in bytes with the default "
+"of 1048576 (~1 MB) how much the cache size will be increased in the event "
+"the space defined by <literal>Cache-Start</literal> is not enough. This "
+"value will be applied again and again until either the cache is big enough "
+"to store all information or the size of the cache reaches the <literal>Cache-"
+"Limit</literal>. The default of <literal>Cache-Limit</literal> is 0 which "
+"stands for no limit. If <literal>Cache-Grow</literal> is set to 0 the "
+"automatic growth of the cache is disabled."
+msgstr ""
+"À partir de la version 0.7.26, APT utilise un fichier de cache de taille "
+"variable indexé en mémoire (« resizable memory mapped cache file ») pour "
+"conserver les informations du fichier « available ». <literal>Cache-Start</"
+"literal> définit la taille minimale de ce cache et par conséquent la "
+"quantité de mémoire qu'APT utilisera dès son lancement. La valeur par défaut "
+"est de 20971520 octets (environ 20 Mo). Il est indispensable que l'ensemble "
+"de cette mémoire soit disponible, sinon APT ne pourra se lancer. Il peut "
+"donc être nécessaire de diminuer cette valeur sur des systèmes disposant de "
+"peu de mémoire. Au contraire, pour des systèmes qui utilisent de nombreuses "
+"sources de paquet, il peut être nécessaire de l'augmenter. La valeur de "
+"<literal>Cache-Grow</literal> définit, en octets, la quantité de mémoire "
+"supplémentaire qui peut être allouée au cache si la valeur définie par "
+"<literal>Cache-Start</literal> est insuffisante. La valeur par défaut de "
+"<literal>Cache-Grow</literal> est de 1048576 octets (environ 1 Mo). Cette "
+"augmentation se fera tant que la taille du cache sera insuffisante pour "
+"contenir toutes les informations nécessaires ou qu'elle atteint la valeur "
+"limite définie par <literal>Cache-Limit</literal>. La valeur par défaut de "
+"<literal>Cache-Limit</literal> est nulle (il n'existe donc pas de limite à "
+"la taille maximale du cache). Si <literal>Cache-Grow</literal> est égal à 0, "
+"l'augmentation automatique de la taille du cache est désactivée."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Defines which packages are considered essential build dependencies."
+msgstr ""
+"Cette option définit les paquets qui sont considérés comme faisant partie "
+"des dépendances essentielles pour la construction de paquets."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Get subsection controls the &apt-get; tool; please see its documentation "
+"for more information about the options here."
+msgstr ""
+"La sous-section <literal>Get</literal> contrôle l'outil &apt-get;, veuillez "
+"consulter sa documentation pour avoir plus d'informations sur les options en "
+"question."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Cache subsection controls the &apt-cache; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"La sous-section <literal>Cache</literal> contrôle l'outil &apt-cache;, "
+"veuillez consulter sa documentation pour avoir plus d'informations sur les "
+"options en question."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The CDROM subsection controls the &apt-cdrom; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"La sous-section <literal>CDROM</literal> contrôle l'outil &apt-cdrom;, "
+"veuillez consulter sa documentation pour avoir plus d'informations sur les "
+"options en question."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "The Acquire Group"
+msgstr "Le groupe Acquire"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Acquire</literal> group of options controls the download of "
+"packages as well as the various \"acquire methods\" responsible for the "
+"download itself (see also &sources-list;)."
+msgstr ""
+"Le groupe d'options <literal>Acquire</literal> contrôle le téléchargement "
+"des paquets ainsi que les différentes « méthodes d'acquisition » qui "
+"effectuent ce téléchargement (voir aussi &sources-list;)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Security related option defaulting to true, as giving a Release file's "
+"validation an expiration date prevents replay attacks over a long timescale, "
+"and can also for example help users to identify mirrors that are no longer "
+"updated - but the feature depends on the correctness of the clock on the "
+"user system. Archive maintainers are encouraged to create Release files with "
+"the <literal>Valid-Until</literal> header, but if they don't or a stricter "
+"value is desired the <literal>Max-ValidTime</literal> option below can be "
+"used. The <option>Check-Valid-Until</option> option of &sources-list; "
+"entries should be preferred to disable the check selectively instead of "
+"using this global override."
+msgstr ""
+"L'activation de l'option de sécurité qui permet de mettre une limite "
+"temporelle de validité au fichier Release permet d'éviter des attaques de "
+"type « replay » et permet d'éviter d'utiliser des miroirs qui ne sont plus à "
+"jour. Cependant, cette fonctionnalité a besoin que l'horloge du système soit "
+"à jour. Les gestionnaires d'archives devraient créer des fichiers Release "
+"comportant l'en-tête <literal>Valid-Until</literal>. Cependant, si cet en-"
+"tête est absent, ou si une valeur plus stricte est désirée, la valeur du "
+"paramètre <literal>Max-ValidTime</literal> est alors utilisée. L'option "
+"<option>Check-Valid-Until</option> des entrées de &sources-list; devrait "
+"être préférée pour désactiver sélectivement la vérification plutôt que "
+"d'utiliser ce remplacement global."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Maximum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. If the Release file itself includes a "
+"<literal>Valid-Until</literal> header the earlier date of the two is used as "
+"the expiration date. The default value is <literal>0</literal> which stands "
+"for \"valid forever\". Archive specific settings can be made by appending "
+"the label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the <option>Valid-"
+"Until-Max</option> option there."
+msgstr ""
+"Durée maximale (en secondes) pendant laquelle un fichier Release est "
+"considéré comme valable, à partir du moment de sa création (tel que cela est "
+"indiqué dans l'en-tête <literal>Date</literal>). Si ce fichier lui-même "
+"comporte un en-tête <literal>Valid-Until</literal> la plus ancienne des deux "
+"dates est utilisée comme date d'expiration. La valeur par défaut "
+"(<literal>0</literal>) signifie « valable éternellement ». Un réglage "
+"spécifique pour une archive donnée peut être défini en ajoutant l'étiquette "
+"de l'archive au nom de l'option. De préférence, le même résultat peut être "
+"obtenu pour des entrées particulières de &sources-list; en utilisant ici "
+"l'option <option>Valid-Until-Max</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Minimum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. Use this if you need to use a seldom updated "
+"(local) mirror of a more frequently updated archive with a <literal>Valid-"
+"Until</literal> header instead of completely disabling the expiration date "
+"checking. Archive specific settings can and should be used by appending the "
+"label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the <option>Valid-"
+"Until-Min</option> option there."
+msgstr ""
+"Durée minimale (en secondes) pendant laquelle un fichier Release est "
+"considéré comme valable, à partir du moment de sa création (tel que cela est "
+"indiqué dans l'en-tête <literal>Date</literal>). Il est conseillé d'utiliser "
+"ce réglage si vous utilisez un miroir mis à jour ponctuellement (par exemple "
+"un miroir local) d'une archive mise à jour plus fréquemment avec un en-tête "
+"<literal>Valid-Until</literal> plutôt que de désactiver complètement le "
+"contrôle des dates d'expiration. Un réglage spécifique pour une archive "
+"donnée peut être défini en ajoutant l'étiquette de l'archive au nom de "
+"l'option. De préférence, le même résultat peut être obtenu pour des entrées "
+"particulières de &sources-list; en utilisant ici l'option <option>Valid-"
+"Until-Min</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Try to download deltas called <literal>PDiffs</literal> for indexes (like "
+"<filename>Packages</filename> files) instead of downloading whole ones. True "
+"by default. Preferably, this can be set for specific &sources-list; entries "
+"or index files by using the <option>PDiffs</option> option there."
+msgstr ""
+"Essayer de télécharger les fichiers différentiels appelés <literal>PDiffs</"
+"literal> pour les index (par exemple les fichiers <filename>Packages</"
+"filename>), plutôt que de les télécharger entièrement. Par défaut à "
+"« true ». De préférence, cela peut être défini pour des entrées "
+"particulières de &sources-list; ou des fichiers d'index en utilisant ici "
+"l'option <option>PDiffs</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Two sub-options to limit the use of PDiffs are also available: "
+"<literal>FileLimit</literal> can be used to specify a maximum number of "
+"PDiff files should be downloaded to update a file. <literal>SizeLimit</"
+"literal> on the other hand is the maximum percentage of the size of all "
+"patches compared to the size of the targeted file. If one of these limits is "
+"exceeded the complete file is downloaded instead of the patches."
+msgstr ""
+"Deux sous-options permettant de limiter l'utilisation de fichiers « pdiff » "
+"sont également disponibles. <literal>FileLimit</literal> permet d'indiquer "
+"le nombre maximal de fichiers de différences peuvent être téléchargés pour "
+"modifier un fichier. <literal>SizeLimit</literal> permet par ailleurs de "
+"limiter la taille combinée des fichiers de différences récupérés à un "
+"certain pourcentage du fichier à modifier. Si une de ces limites est "
+"dépassée, le fichier complet est téléchargé au lieu de télécharger les "
+"fichiers de différences."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Try to download indexes via an URI constructed from a hashsum of the "
+"expected file rather than downloaded via a well-known stable filename. True "
+"by default, but automatically disabled if the source indicates no support "
+"for it. Usage can be forced with the special value \"force\". Preferably, "
+"this can be set for specific &sources-list; entries or index files by using "
+"the <option>By-Hash</option> option there."
+msgstr ""
+"Essayer de télécharger les index avec un URI construit à partir de la somme "
+"de hachage du fichier attendu plutôt que de les télécharger à partir d'un "
+"nom de fichier stable bien connu. Par défaut à « true », mais "
+"automatiquement désactivé si la source n'indique pas sa prise en charge. Son "
+"utilisation peut être forcée avec la valeur spéciale « force ». De "
+"préférence, cela peut être défini pour des entrées particulières de &sources-"
+"list; ou des fichiers d'index en utilisant ici l'option <option>By-Hash</"
+"option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</"
+"literal> or <literal>access</literal> which determines how APT parallelizes "
+"outgoing connections. <literal>host</literal> means that one connection per "
+"target host will be opened, <literal>access</literal> means that one "
+"connection per URI type will be opened."
+msgstr ""
+"Mode de file d'attente ; <literal>Queue-Mode</literal> peut prendre les "
+"valeurs <literal>host</literal> ou <literal>access</literal>, ce qui "
+"détermine comment APT parallélise les connexions sortantes. <literal>Host</"
+"literal> signifie qu'une connexion par cible sera initiée, tandis que "
+"<literal>access</literal> signifie qu'une connexion par type d'URI sera "
+"initiée."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Number of retries to perform. If this is non-zero APT will retry failed "
+"files the given number of times."
+msgstr ""
+"Nombre d'essais à effectuer. Si ce nombre n'est pas nul, APT essaie de "
+"récupérer, le nombre donné de fois, les fichiers dont la récupération a "
+"échoué."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Use symlinks for source archives. If set to true then source archives will "
+"be symlinked when possible instead of copying. True is the default."
+msgstr ""
+"Utilise des liens symboliques pour les archives de sources. Positionnée à "
+"« true », cette option crée si possible des liens symboliques vers les "
+"archives de sources au lieu de les copier. Par défaut à « true »."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>http::Proxy</literal> sets the default proxy to use for HTTP URIs. "
+"It is in the standard form of <literal>http://[[user][:pass]@]host[:port]/</"
+"literal>. Per host proxies can also be specified by using the form "
+"<literal>http::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>http_proxy</envar> environment variable will "
+"be used."
+msgstr ""
+"<literal>http::Proxy</literal> est le mandataire (proxy) HTTP à utiliser par "
+"défaut pour les URI HTTP. Il se présente sous la forme standard : "
+"<literal>http://[[utilisateur][:mot_de_passe]@]hôte[:port]/</literal>. On "
+"peut spécifier un mandataire particulier par hôte distant en utilisant la "
+"syntaxe : <literal>http::Proxy::&lt;hôte&gt;</literal>. Le mot-clé spécial "
+"<literal>DIRECT</literal> indique alors de n'utiliser aucun mandataire pour "
+"l'hôte. Si aucun des paramètres précédents n'est défini, la variable "
+"d'environnement <envar>http_proxy</envar> annule et remplace toutes les "
+"options de mandataire HTTP."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Three settings are provided for cache control with HTTP/1.1 compliant proxy "
+"caches. <literal>No-Cache</literal> tells the proxy not to use its cached "
+"response under any circumstances. <literal>Max-Age</literal> sets the "
+"allowed maximum age (in seconds) of an index file in the cache of the "
+"proxy. <literal>No-Store</literal> specifies that the proxy should not "
+"store the requested archive files in its cache, which can be used to prevent "
+"the proxy from polluting its cache with (big) .deb files."
+msgstr ""
+"Trois options de configuration sont fournies pour le contrôle des caches "
+"compatibles avec HTTP/1.1. <literal>No-Cache</literal> signifie que le "
+"mandataire ne doit jamais utiliser les réponses qu'il a stockées ; "
+"<literal>Max-Age</literal> établit l'ancienneté maximale (en secondes) d'un "
+"fichier d'index dans le cache du mandataire. <literal>No-Store</literal> "
+"indique que le mandataire ne doit pas mettre en cache les fichiers "
+"d'archive, ce qui peut éviter de polluer un cache mandataire avec des "
+"fichiers .deb très grands."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The option <literal>timeout</literal> sets the timeout timer used by the "
+"method; this value applies to the connection as well as the data timeout."
+msgstr ""
+"L'option <literal>timeout</literal> positionne le compteur d'expiration du "
+"délai (timeout) utilisé par la méthode. Cela s'applique aussi bien à la "
+"connexion qu'aux données."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e."
+"g. on high-latency connections. It specifies how many requests are sent in a "
+"pipeline. APT tries to detect and workaround misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the "
+"HTTP/1.1 specification pipelining can be disabled by setting the value to 0. "
+"It is enabled by default with the value 10."
+msgstr ""
+"Le réglage <literal>Acquire::http::Pipeline-Depth</literal> permet "
+"d'utiliser l'enchaînement HTTP (« HTTP pipelining », RFC 2616 section "
+"8.1.2.2) ce qui peut être utile par exemple avec des connexions à latence "
+"élevée. Il indique le nombre de requêtes envoyées dans le tuyau. APT tente "
+"de détecter et de contourner les serveurs web et les mandataires qui se "
+"comportent mal à l'exécution, mais si vous savez que vos serveurs ne "
+"respectent pas la norme HTTP/1.1, l'enchaînement peut être désactivé en "
+"définissant cette valeur à 0. Il est activé par défaut avec une valeur de 10."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::AllowRedirect</literal> controls whether APT will "
+"follow redirects, which is enabled by default."
+msgstr ""
+"<literal>Acquire::http::AllowRedirect</literal> contrôle le fait qu'APT "
+"suive les redirections. Ce réglage est activé par défaut."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</"
+"literal> which accepts integer values in kilobytes per second. The default "
+"value is 0 which deactivates the limit and tries to use all available "
+"bandwidth. Note that this option implicitly disables downloading from "
+"multiple servers at the same time."
+msgstr ""
+"La bande passante utilisée peut être limité avec <literal>Acquire::http::Dl-"
+"Limit</literal> qui peut prendre une valeur entière, l'unité utilisée étant "
+"le kilo-octet par seconde. La valeur par défaut est 0, ce qui correspond à "
+"aucune limitation de bande passante. Veuillez noter que cette option "
+"désactive implicitement le téléchargement simultané depuis plusieurs "
+"serveurs."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::User-Agent</literal> can be used to set a different "
+"User-Agent for the http download method as some proxies allow access for "
+"clients only if the client uses a known identifier."
+msgstr ""
+"L'option <literal>Acquire::http::User-Agent</literal> peut être utilisée "
+"pour envoyer une valeur User-Agent modifiée pour les téléchargements HTTP, "
+"ce qui peut par exemple être utile avec certains mandataires HTTP qui "
+"n'autorisent l'accès qu'aux client s'identifiant de manière spécifique.."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::Proxy-Auto-Detect</literal> can be used to specify "
+"an external command to discover the http proxy to use. The first and only "
+"parameter is an URI denoting the host to be contacted to allow for host-"
+"specific configuration. APT expects the command to output the proxy on "
+"stdout as a single line in the style <literal>http://proxy:port/</literal> "
+"or the word <literal>DIRECT</literal> if no proxy should be used. No output "
+"indicates that the generic proxy settings should be used. Note that auto-"
+"detection will not be used for a host if a host-specific proxy configuration "
+"is already set via <literal>Acquire::http::Proxy::<replaceable>HOST</"
+"replaceable></literal>. See the &squid-deb-proxy-client; package for an "
+"example implementation that uses avahi. This option takes precedence over "
+"the legacy option name <literal>ProxyAutoDetect</literal>."
+msgstr ""
+"L'option <literal>Acquire::http::Proxy-Auto-Detect</literal> peut être "
+"utilisée pour indiquer une commande externe pour découvrir le mandataire "
+"HTTP à utiliser. Le premier et seul paramètre est un URI indiquant l'hôte à "
+"contacter pour permettre une configuration propre à l'hôte. Apt s'attend à "
+"ce que la commande indique le mandataire sur la sortie standard dans le "
+"style <literal>http://proxy:port/</literal> ou le mot <literal>DIRECT</"
+"literal> si aucun mandataire ne doit être utilisé. Aucune sortie indique que "
+"le mandataire générique doit être utilisé. Notez que l'auto-détection ne "
+"sera pas exécutée si une configuration spécifique de mandataire hôte a déjà "
+"été établie par <literal>Acquire::http::Proxy::$HOST</literal>. Voir le "
+"paquet &squid-deb-proxy-client; pour un exemple d'implémentation qui utilise "
+"avahi. Cette option l'emporte sur l'ancien nom d'option "
+"<literal>ProxyAutoDetect</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Cache-control</literal>, <literal>Timeout</literal>, "
+"<literal>AllowRedirect</literal>, <literal>Dl-Limit</literal> and "
+"<literal>proxy</literal> options work for HTTPS URIs in the same way as for "
+"the <literal>http</literal> method, and default to the same values if they "
+"are not explicitly set. The <literal>Pipeline-Depth</literal> option is not "
+"yet supported."
+msgstr ""
+"Les options <literal>Cache-control</literal>, <literal>Timeout</literal>, "
+"<literal>AllowRedirect</literal>, <literal>Dl-Limit</literal> et "
+"<literal>proxy</literal> fonctionnent pour les URI HTTPS de la même manière "
+"que la méthode <literal>http</literal>. Les valeurs par défaut sont les "
+"mêmes si elles ne sont pas indiquées. L'option <literal>Pipeline-Depth</"
+"literal> n'est pas encore gérée."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>CaInfo</literal> suboption specifies place of file that holds info "
+"about trusted certificates. <literal>&lt;host&gt;::CaInfo</literal> is the "
+"corresponding per-host option. <literal>Verify-Peer</literal> boolean "
+"suboption determines whether or not the server's host certificate should be "
+"verified against trusted certificates. <literal>&lt;host&gt;::Verify-Peer</"
+"literal> is the corresponding per-host option. <literal>Verify-Host</"
+"literal> boolean suboption determines whether or not the server's hostname "
+"should be verified. <literal>&lt;host&gt;::Verify-Host</literal> is the "
+"corresponding per-host option. <literal>SslCert</literal> determines what "
+"certificate to use for client authentication. <literal>&lt;host&gt;::"
+"SslCert</literal> is the corresponding per-host option. <literal>SslKey</"
+"literal> determines what private key to use for client authentication. "
+"<literal>&lt;host&gt;::SslKey</literal> is the corresponding per-host "
+"option. <literal>SslForceVersion</literal> overrides default SSL version to "
+"use. It can contain either of the strings '<literal>TLSv1</literal>' or "
+"'<literal>SSLv3</literal>'. <literal>&lt;host&gt;::SslForceVersion</"
+"literal> is the corresponding per-host option."
+msgstr ""
+"La sous-option <literal>CaInfo</literal> spécifie le fichier contenant les "
+"informations sur les certificats de confiance. La sous-option booléenne "
+"<literal>Verify-Peer</literal> précise si le certificat d'hôte du serveur "
+"doit être confronté aux certificats de confiance ou pas. La sous-option "
+"booléenne <literal>Verify-Host</literal> précise s'il faut vérifier ou pas "
+"le nom d'hôte du serveur. <literal>SslCert</literal> détermine le certificat "
+"à utiliser pour l'authentification du client. <literal>SslKey</literal> "
+"détermine quelle clé privée doit être utilisée pour l'authentification du "
+"client. <literal>SslForceVersion</literal> surcharge la valeur par défaut "
+"pour la version de SSL à utiliser et peut contenir l'une des chaînes "
+"<literal>TLSv1</literal> ou <literal>SSLv3</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs. "
+"It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</"
+"literal>. Per host proxies can also be specified by using the form "
+"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
+"used. To use an FTP proxy you will have to set the <literal>ftp::ProxyLogin</"
+"literal> script in the configuration file. This entry specifies the commands "
+"to send to tell the proxy server what to connect to. Please see "
+"&configureindex; for an example of how to do this. The substitution "
+"variables representing the corresponding URI component are <literal>"
+"$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, <literal>"
+"$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, <literal>$(SITE)</"
+"literal> and <literal>$(SITE_PORT)</literal>."
+msgstr ""
+"<literal>ftp::Proxy</literal> est le mandataire (proxy) FTP à utiliser par "
+"défaut pour les URI FTP. Il se présente sous la forme standard : "
+"<literal>ftp://[[user][:pass]@]host[:port]/</literal>. On peut spécifier un "
+"mandataire particulier par hôte distant en utilisant la syntaxe : "
+"<literal>ftp::Proxy::&lt;hôte&gt;</literal>. Le mot-clé spécial "
+"<literal>DIRECT</literal> indique alors de n'utiliser aucun mandataire pour "
+"l'hôte. Si aucun des paramètres précédents n'est définis, la variable "
+"d'environnement <envar>ftp_proxy</envar> annule et replace toutes les "
+"options de mandataire FTP. Pour utiliser un mandataire FTP, vous devrez "
+"renseigner l'entrée <literal>ftp::ProxyLogin</literal> dans le fichier de "
+"configuration. Cette entrée spécifie les commandes à envoyer au mandataire "
+"pour lui préciser à quoi il doit se connecter. Voyez &configureindex; pour "
+"savoir comment faire. Les variables de substitution qui représentent le "
+"composant d'URI correspondant sont : <literal>$(PROXY_USER)</literal>, "
+"<literal>$(PROXY_PASS)</literal>, <literal>$(SITE_USER)</literal>, <literal>"
+"$(SITE_PASS)</literal>, <literal>$(SITE)</literal> et <literal>$(SITE_PORT)</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Several settings are provided to control passive mode. Generally it is safe "
+"to leave passive mode on; it works in nearly every environment. However, "
+"some situations require that passive mode be disabled and port mode FTP used "
+"instead. This can be done globally or for connections that go through a "
+"proxy or for a specific host (see the sample config file for examples)."
+msgstr ""
+"Plusieurs options de configuration sont fournies pour contrôler le mode "
+"passif. Il est généralement plus sûr d'activer le mode passif et cela marche "
+"dans presque tous les environnements. Cependant, certaines situations "
+"nécessitent que le mode passif soit désactivé et que le mode « port » de ftp "
+"soit utilisé à la place. On peut le faire globalement, pour des connexions "
+"qui passent par un mandataire ou pour une machine spécifique (examinez le "
+"modèle de fichier de configuration)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
+"envar> environment variable to an HTTP URL - see the discussion of the http "
+"method above for syntax. You cannot set this in the configuration file and "
+"it is not recommended to use FTP over HTTP due to its low efficiency."
+msgstr ""
+"Il est possible de faire transiter le trafic FTP par un mandataire HTTP en "
+"positionnant la variable d'environnement <envar>ftp_proxy</envar> à une URL "
+"HTTP -- consultez la méthode http ci-dessus pour la syntaxe. On ne peut pas "
+"le faire dans le fichier de configuration et il n'est de toute façon pas "
+"recommandé d'utiliser FTP au travers de HTTP en raison de la faible "
+"efficacité de cette méthode."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
+"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
+"false, which means these commands are only used if the control connection is "
+"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
+"that most FTP servers do not support RFC2428."
+msgstr ""
+"L'option <literal>ForceExtended</literal> contrôle l'utilisation des "
+"commandes liées à la RFC 2428, <literal>EPSV</literal> et <literal>EPRT</"
+"literal>. Par défaut, elle vaut « false » ce qui signifie que ces commandes "
+"ne sont utilisées que pour une connexion de type IPv6. Quand elle vaut "
+"« true », on les utilise même si la connexion est de type IPv4. La plupart "
+"des serveurs FTP ne suivent pas la RFC 2428."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "/cdrom/::Mount \"foo\";"
+msgstr "/cdrom/::Mount \"foo\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"For URIs using the <literal>cdrom</literal> method, the only configurable "
+"option is the mount point, <literal>cdrom::Mount</literal>, which must be "
+"the mount point for the CD-ROM (or DVD, or whatever) drive as specified in "
+"<filename>/etc/fstab</filename>. It is possible to provide alternate mount "
+"and unmount commands if your mount point cannot be listed in the fstab. The "
+"syntax is to put <placeholder type=\"literallayout\" id=\"0\"/> within the "
+"<literal>cdrom</literal> block. It is important to have the trailing slash. "
+"Unmount commands can be specified using UMount."
+msgstr ""
+"La seule option de configuration pour les URI qui utilisent la méthode "
+"<literal>cdrom</literal> est le point de montage : <literal>cdrom::Mount</"
+"literal> ; il doit représenter le point de montage du lecteur de CD-ROM (ou "
+"DVD, etc.) indiqué dans <filename>/etc/fstab</filename>. D'autres commandes "
+"de montage et de démontage peuvent être fournies quand le point de montage "
+"ne peut être listé dans le fichier <filename>/etc/fstab</filename>. "
+"Syntaxiquement, il faut placer <placeholder type=\"literallayout\" id=\"0\"/"
+"> dans le bloc <literal>cdrom</literal>. La barre oblique finale est "
+"importante. Les commandes de démontage peuvent être spécifiées en utilisant "
+"<literal>UMount</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"For GPGV URIs the only configurable option is <literal>gpgv::Options</"
+"literal>, which passes additional parameters to gpgv."
+msgstr ""
+"La seule option pour les URI GPGV est <literal>gpgv::Options</literal>, qui "
+"permet de passer des paramètres à gpgv"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";"
+msgstr "Acquire::CompressionTypes::<replaceable>ExtensionFichier</replaceable> \"<replaceable>NomMethode</replaceable>\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"List of compression types which are understood by the acquire methods. "
+"Files like <filename>Packages</filename> can be available in various "
+"compression formats. By default the acquire methods can decompress and "
+"recompress many common formats like <command>xz</command> and <command>gzip</"
+"command>; with this scope the supported formats can be queried, modified as "
+"well as support for more formats added (see also <option>APT::Compressor</"
+"option>). The syntax for this is: <placeholder type=\"synopsis\" id=\"0\"/>"
+msgstr ""
+"Cette option indique la liste des types de compression comprises par les "
+"méthodes d'acquisition. Des fichiers comme <filename>Packages</filename> "
+"peuvent être disponibles dans divers formats de compression. Par défaut, les "
+"méthodes d'acquisition décompressent et recompressent dans beaucoup de "
+"formats courants les fichiers compressés comme avec <command>xz</command> et "
+"<command>gzip</command> ; ce champ d'action permet de rechercher les formats "
+"pris en charge ou de les modifier, et l'ajout de prise en charge de formats "
+"supplémentaires est aussi possible (voir aussi <option>APT::Compressor</"
+"option>). La syntaxe à utiliser est : <placeholder type=\"synopsis\" id="
+"\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order:: \"gz\";"
+msgstr "Acquire::CompressionTypes::Order:: \"gz\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order { \"xz\"; \"gz\"; };"
+msgstr "Acquire::CompressionTypes::Order { \"xz\"; \"gz\"; };"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Also, the <literal>Order</literal> subgroup can be used to define in which "
+"order the acquire system will try to download the compressed files. The "
+"acquire system will try the first and proceed with the next compression type "
+"in this list on error, so to prefer one over the other type simply add the "
+"preferred type first - types not already added will be implicitly appended "
+"to the end of the list, so e.g. <placeholder type=\"synopsis\" id=\"0\"/> "
+"can be used to prefer <command>gzip</command> compressed files over all "
+"other compression formats. If <command>xz</command> should be preferred "
+"over <command>gzip</command> and <command>bzip2</command> the configure "
+"setting should look like this: <placeholder type=\"synopsis\" id=\"1\"/> It "
+"is not needed to add <literal>bz2</literal> to the list explicitly as it "
+"will be added automatically."
+msgstr ""
+"Le sous-groupe <literal>Order</literal> peut être également utilisé pour "
+"définir l'ordre dans lequel le système d'acquisition tentera de télécharger "
+"les fichiers compressés. Le premier système mentionné sera essayé en "
+"premier, puis le suivant en cas d'échec. Ainsi, pour privilégier un format "
+"par rapport à un autre, il suffit de le placer en premier dans cette liste. "
+"Les types qui ne sont pas déjà indiqués seront ajoutés implicitement à la "
+"fin de la liste. Ainsi, par exemple, <placeholder type=\"synopsis\" id=\"0\"/"
+"> peut être utilisé pour préférer les fichiers compressés avec "
+"<command>gzip</command> par rapport à tous les autres formats de "
+"compression. Si l'objectif est d'utiliser <command>xz</command> en priorité "
+"par rapport à <command>gzip</command> et <command>bzip2</command>, ce "
+"réglage doit ressembler à <placeholder type=\"synopsis\" id=\"1\"/>. Il est "
+"inutile d'ajouter explicitement <literal>bz2</literal> à liste car il sera "
+"ajouté automatiquement."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Dir::Bin::bzip2 \"/bin/bzip2\";"
+msgstr "Dir::Bin::bzip2 \"/bin/bzip2\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that the <literal>Dir::Bin::<replaceable>Methodname</replaceable></"
+"literal> will be checked at run time. If this option has been set and "
+"support for this format isn't directly built into apt, the method will only "
+"be used if this file exists; e.g. for the <literal>bzip2</literal> method "
+"(the inbuilt) setting is: <placeholder type=\"literallayout\" id=\"0\"/> "
+"Note also that list entries specified on the command line will be added at "
+"the end of the list specified in the configuration files, but before the "
+"default entries. To prefer a type in this case over the ones specified in "
+"the configuration files you can set the option direct - not in list style. "
+"This will not override the defined list; it will only prefix the list with "
+"this type."
+msgstr ""
+"Veuillez noter que <literal>Dir::Bin::<replaceable>NomMethode</replaceable></"
+"literal> sera contrôlé à l'exécution : si cette option est utilisée et que "
+"la prise en charge de ce format n'est pas construite dans APT, la méthode ne "
+"sera utilisée que si ce fichier existe. Ainsi, pour la méthode "
+"<literal>bzip2</literal>, le réglage (utilisé en interne) est <placeholder "
+"type=\"literallayout\" id=\"0\"/>. Veuillez également noter que les éléments "
+"de liste indiqués à la ligne de commande seront ajoutés à la fin de la liste "
+"indiquée dans les fichiers de configuration, mais avant les valeurs par "
+"défaut. Dans ce cas, pour établir une préférence par rapport aux types "
+"mentionnés dans les fichiers de configuration, il est possible de placer "
+"l'option directement, pas sous forme de liste. Cela ne remplacera pas la "
+"liste par défaut mais elle sera simplement préfixée avec l'option en "
+"question."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The special type <literal>uncompressed</literal> can be used to give "
+"uncompressed files a preference, but note that most archives don't provide "
+"uncompressed files so this is mostly only useable for local mirrors."
+msgstr ""
+"Le type spécial <literal>uncompressed</literal> peut servir à donner la "
+"préférence aux fichiers non compressés. Veuillez noter que la plupart des "
+"archives ne fournissent pas de fichiers non compressés, donc ce réglage est "
+"surtout destiné aux miroirs locaux."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"When downloading <literal>gzip</literal> compressed indexes (Packages, "
+"Sources, or Translations), keep them gzip compressed locally instead of "
+"unpacking them. This saves quite a lot of disk space at the expense of more "
+"CPU requirements when building the local package caches. False by default."
+msgstr ""
+"Lorsque des index compressés par gzip doivent être utilisés (pour les "
+"fichiers Packages, Sources, Translations), ceux-ci seront compressés avec "
+"gzip au lieu d'être laissés décompressés. Cela peut permettre de gagner "
+"beaucoup d'espace disque au prix d'une utilisation plus importante du "
+"processeur lorsque les caches locaux sont créés. Valeur par défaut : Faux "
+"(« False »)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Languages subsection controls which <filename>Translation</filename> "
+"files are downloaded and in which order APT tries to display the description-"
+"translations. APT will try to display the first available description in the "
+"language which is listed first. Languages can be defined with their short or "
+"long language codes. Note that not all archives provide "
+"<filename>Translation</filename> files for every language - the long "
+"language codes are especially rare."
+msgstr ""
+"La sous-section « Languages » contrôle quels fichiers <filename>Translation</"
+"filename> sont téléchargés et dans quel ordre APT les utilisera pour "
+"afficher les traductions de descriptions. APT recherchera d'abord la "
+"première traduction disponible pour le champ Description dans la langue "
+"choisie en premier. Les langues peuvent être indiquées par leur code long ou "
+"court. Veuillez noter que tous les dépôts ne fournissent pas les fichiers "
+"<filename>Translation</filename> pour toutes les langues, les codes longs de "
+"langues étant particulièrement rares."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };"
+msgstr "Acquire::Languages { \"environment\"; \"fr\"; \"en\"; \"none\"; \"de\"; };"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The default list includes \"environment\" and \"en\". "
+"\"<literal>environment</literal>\" has a special meaning here: it will be "
+"replaced at runtime with the language codes extracted from the "
+"<literal>LC_MESSAGES</literal> environment variable. It will also ensure "
+"that these codes are not included twice in the list. If "
+"<literal>LC_MESSAGES</literal> is set to \"C\" only the "
+"<filename>Translation-en</filename> file (if available) will be used. To "
+"force APT to use no Translation file use the setting <literal>Acquire::"
+"Languages=none</literal>. \"<literal>none</literal>\" is another special "
+"meaning code which will stop the search for a suitable "
+"<filename>Translation</filename> file. This tells APT to download these "
+"translations too, without actually using them unless the environment "
+"specifies the languages. So the following example configuration will result "
+"in the order \"en, de\" in an English locale or \"de, en\" in a German one. "
+"Note that \"fr\" is downloaded, but not used unless APT is used in a French "
+"locale (where the order would be \"fr, de, en\"). <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+msgstr ""
+"La liste par défaut contient « environment » et « en ». La valeur "
+"« environment » a une signification spéciale : elle sera remplacée, à "
+"l'exécution, par les codes de langues utilisés dans la variable "
+"d'environnement <literal>LC_MESSAGES</literal>. Les codes utilisés en double "
+"ne seront pas inclus deux fois dans la liste. Si <literal>LC_MESSAGES</"
+"literal> contient « C », seul le fichier <filename>Translation-en</filename> "
+"sera utilisé, s'il est disponible. Pour forcer APT à n'utiliser aucun "
+"fichier de traduction, il est nécessaire d'utiliser le réglage "
+"<literal>Acquire::Languages=none</literal>. La valeur « <literal>none</"
+"literal> » a une signification spéciale et indique de ne rechercher aucun "
+"fichier <filename>Translation</filename>. Cela indique à APT de télécharger "
+"ces traductions, sans nécessairement les utiliser sauf si la variable "
+"d'environnement indique ces langues. Ainsi, dans l'exemple qui suit, l'ordre "
+"utilisé sera « en, fr » si dans un environnement configuré pour l'anglais et "
+"« fr, en » pour un environnement configuré en français. Les fichiers pour "
+"l'allemand seront également téléchargés mais ne sont utilisés que dans un "
+"environnement configuré pour l'allemand. Dans ce dernier cas, l'ordre est "
+"alors « de, fr, en ». <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Note: To prevent problems resulting from APT being executed in different "
+"environments (e.g. by different users or by other programs) all Translation "
+"files which are found in <filename>/var/lib/apt/lists/</filename> will be "
+"added to the end of the list (after an implicit \"<literal>none</literal>\")."
+msgstr ""
+"Note : afin d'éviter des problèmes lorsqu'APT est exécuté dans différents "
+"environnements (p. ex. par différents utilisateurs ou différents "
+"programmes), tous les fichiers « Translation »qui sont trouvés dans "
+"<filename>/var/lib/apt/lists/</filename> seront ajoutés à la fin de la liste "
+"(après un « <literal>none</literal> » implicite)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "When downloading, force to use only the IPv4 protocol."
+msgstr "Utilisation imposée du protocole IPv4 lors des téléchargements."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "When downloading, force to use only the IPv6 protocol."
+msgstr "Utilisation imposée du protocole IPv6 lors des téléchargements."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The maximum file size of Release/Release.gpg/InRelease files. The default "
+"is 10MB."
+msgstr ""
+"La taille maximale des fichiers Release/Release.gpg/InRelease. La taille par "
+"défaut est 10 Mo."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This option controls if apt will use the DNS SRV server record as specified "
+"in RFC 2782 to select an alternative server to connect to. The default is "
+"\"true\"."
+msgstr ""
+"Cette option vérifie si APT utilisera l'entrée de serveur DNS SRV telle que "
+"définie dans la RFC 2782 pour choisir un serveur alternatif auquel se "
+"connecter. La valeur par défaut est « true »."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow update operations to load data files from repositories without "
+"sufficient security information. The default value is \"<literal>false</"
+"literal>\". Concept, implications as well as alternatives are detailed in "
+"&apt-secure;."
+msgstr ""
+"Autoriser les opérations de mise à jour à charger des fichiers de données à "
+"partir de dépôts sans informations de sécurité suffisantes. La valeur par "
+"défaut est « <literal>false</literal> ». Le concept, les implications ainsi "
+"que les alternatives sont détaillés dans &apt-secure;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow update operations to load data files from repositories which provide "
+"security information, but these are deemed no longer cryptographically "
+"strong enough. The default value is \"<literal>false</literal>\". Concept, "
+"implications as well as alternatives are detailed in &apt-secure;."
+msgstr ""
+"Autoriser les opérations de mise à jour à charger des fichiers de données à "
+"partir de dépôts qui fournissent des informations de sécurité, mais qui ne "
+"sont plus considérés comme suffisamment robustes sur le plan de la "
+"cryptographie. La valeur par défaut est « <literal>false</literal> ». Le "
+"concept, les implications ainsi que les alternatives sont détaillés dans "
+"&apt-secure;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow that a repository that was previously gpg signed to become unsigned "
+"during an update operation. When there is no valid signature for a "
+"previously trusted repository apt will refuse the update. This option can be "
+"used to override this protection. You almost certainly never want to enable "
+"this. The default is <literal>false</literal>. Concept, implications as "
+"well as alternatives are detailed in &apt-secure;."
+msgstr ""
+"Permettre qu'un dépôt qui était auparavant signé par pgp devienne non signé "
+"durant l'opération de la mise à jour. Quand il n'y a pas de signature "
+"valable pour un ancien dépôt de confiance, APT refusera la mise à jour. "
+"Cette option peut être utilisée pour contourner cette protection. Vous ne "
+"souhaiterez presque certainement jamais activer cette option. La valeur pas "
+"défaut est « <literal>false</literal> ». Le concept, les implications ainsi "
+"que les alternatives sont détaillés dans &apt-secure;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.conf.5.xml
+msgid "scope"
+msgstr "champ d'action"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Acquiring changelogs can only be done if an URI is known from where to get "
+"them. Preferable the Release file indicates this in a 'Changelogs' field. "
+"If this isn't available the Label/Origin field of the Release file is used "
+"to check if a <literal>Acquire::Changelogs::URI::Label::<replaceable>LABEL</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Origin::"
+"<replaceable>ORIGIN</replaceable></literal> option exists and if so this "
+"value is taken. The value in the Release file can be overridden with "
+"<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
+"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a "
+"normal URI to a text file, except that package specific data is replaced "
+"with the placeholder <literal>@CHANGEPATH@</literal>. The value for it is: "
+"1. if the package is from a component (e.g. <literal>main</literal>) this "
+"is the first part otherwise it is omitted, 2. the first letter of source "
+"package name, except if the source package name starts with '<literal>lib</"
+"literal>' in which case it will be the first four letters. 3. The complete "
+"source package name. 4. the complete name again and 5. the source version. "
+"The first (if present), second, third and fourth part are separated by a "
+"slash ('<literal>/</literal>') and between the fourth and fifth part is an "
+"underscore ('<literal>_</literal>'). The special value '<literal>no</"
+"literal>' is available for this option indicating that this source can't be "
+"used to acquire changelog files from. Another source will be tried if "
+"available in this case."
+msgstr ""
+"La récupération des journaux des modifications n'est possible que si l'URI "
+"où les télécharger est connu. De préférence, le fichier Release l'indique "
+"dans un champ « Changelogs ». S'il n'est pas disponible, les champs Label ou "
+"Origine du fichier Release sont utilisés pour vérifier si les options "
+"<literal>Acquire::Changelogs::URI::Label::<replaceable>LABEL</replaceable></"
+"literal> ou <literal>Acquire::Changelogs::URI::Origin::<replaceable>ORIGINE</"
+"replaceable></literal> existent, et si c'est le cas, cette valeur est prise. "
+"La valeur dans le fichier Release peut être contournée par <literal>Acquire::"
+"Changelogs::URI::Override::Label::<replaceable>LABEL</replaceable></literal> "
+"ou <literal>Acquire::Changelogs::URI::Override::Origin::"
+"<replaceable>ORIGINE</replaceable></literal>. La valeur devrait être un URI "
+"normal vers un fichier texte, à l'exception que les données spécifiques du "
+"paquet sont remplacées par le paramètre <literal>@CHANGEPATH@</literal>. Sa "
+"valeur est la suivante : 1. si le paquet provient d'un composant (par "
+"exemple <literal>main</literal>) il constitue la première partie, sinon elle "
+"est omise ; 2. est la première lettre du nom du paquet source, sauf si le "
+"nom du paquet source commence par <literal>lib</literal> auquel cas les "
+"quatre premières lettres seront utilisées ; 3. le nom complet du paquet "
+"source ; 4. le nom complet une fois de plus ; 5. la version de la source. "
+"Les quatres premières parties (ou trois si le composant est absent) sont "
+"séparées par des barres obliques (« <literal>/</literal> »), et les deux "
+"dernières sont séparées par un caractère de soulignement (« <literal>_</"
+"literal> »). La valeur spéciale « <literal>no</literal> » est disponible "
+"pour indiquer que cette source ne peut être utilisée pour récupérer les "
+"fichiers changelog. Dans ce cas, une autre source sera essayée."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Binary specific configuration"
+msgstr "Configuration spécifique d'exécutable"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Especially with the introduction of the <command>apt</command> binary it can "
+"be useful to set certain options only for a specific binary as even options "
+"which look like they would effect only a certain binary like <option>APT::"
+"Get::Show-Versions</option> effect <command>apt-get</command> as well as "
+"<command>apt</command>."
+msgstr ""
+"Particulièrement avec l'introduction de l'exécutable <command>apt</command> "
+"il peut être utile de configurer certaines options seulement pour un "
+"exécutable particulier dans la mesure ou même des options qui semblent "
+"affecter seulement certains binaires telles que <option>APT::Get::Show-"
+"Versions</option> affectent <command>apt-get</command> autant "
+"qu'<command>apt</command>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Setting an option for a specific binary only can be achieved by setting the "
+"option inside the <option>Binary::<replaceable>specific-binary</"
+"replaceable></option> scope. Setting the option <option>APT::Get::Show-"
+"Versions</option> for the <command>apt</command> only can e.g. by done by "
+"setting <option>Binary::apt::APT::Get::Show-Versions</option> instead."
+msgstr ""
+"La configuration d'une option pour un exécutable particulier peut être "
+"réalisée en réglant l'option dans le champ d'action <option>Binary::"
+"<replaceable>exécutable-spécifique</replaceable></option>. Affecter l'option "
+"<option>APT::Get::Show-Versions</option> à <command>apt</command> seulement "
+"peut être fait, par exemple en configurant plutôt <option>Binary::apt::APT::"
+"Get::Show-Versions</option>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that as seen in the DESCRIPTION section further above you can't set "
+"binary-specific options on the commandline itself nor in configuration files "
+"loaded via the commandline."
+msgstr ""
+"Veuillez noter que comme cela est indiqué dans la section DESCRIPTION plus "
+"haut, il n'est pas possible de configurer les options spécifiques aux "
+"exécutables en ligne de commande ni dans des fichiers de configuration "
+"chargés par la ligne de commande."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Directories"
+msgstr "Les répertoires"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Dir::State</literal> section has directories that pertain to "
+"local state information. <literal>lists</literal> is the directory to place "
+"downloaded package lists in and <literal>status</literal> is the name of the "
+"&dpkg; status file. <literal>preferences</literal> is the name of the APT "
+"<filename>preferences</filename> file. <literal>Dir::State</literal> "
+"contains the default directory to prefix on all sub-items if they do not "
+"start with <filename>/</filename> or <filename>./</filename>."
+msgstr ""
+"Les répertoires de la section <literal>Dir::State</literal> concernent le "
+"système local. <literal>lists</literal> est le répertoire où placer les "
+"listes de paquets téléchargés et <literal>status</literal> est le nom du "
+"fichier d'état de &dpkg;. <literal>preferences</literal> concerne APT : "
+"c'est le nom du fichier <filename>preferences</filename>. <literal>Dir::"
+"State</literal> contient le répertoire par défaut préfixé à tous les sous-"
+"éléments, quand ceux-ci ne commencent pas par <filename>/</filename> ou "
+"<filename>./</filename>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Dir::Cache</literal> contains locations pertaining to local cache "
+"information, such as the two package caches <literal>srcpkgcache</literal> "
+"and <literal>pkgcache</literal> as well as the location to place downloaded "
+"archives, <literal>Dir::Cache::archives</literal>. Generation of caches can "
+"be turned off by setting <literal>pkgcache</literal> or "
+"<literal>srcpkgcache</literal> to <literal>\"\"</literal>. This will slow "
+"down startup but save disk space. It is probably preferable to turn off the "
+"pkgcache rather than the srcpkgcache. Like <literal>Dir::State</literal> "
+"the default directory is contained in <literal>Dir::Cache</literal>"
+msgstr ""
+"<literal>Dir::Cache</literal> contient les emplacements qui renseignent sur "
+"le cache local : par exemple, les deux caches de paquets "
+"<literal>srcpkgcache</literal> et <literal>pkgcache</literal>, ainsi que "
+"l'endroit où sont placées les archives téléchargées, <literal>Dir::Cache::"
+"archives</literal>. On peut empêcher la création des caches en positionnant "
+"<literal>pkgcache</literal> ou <literal>srcpkgcache</literal> à la valeur "
+"<literal>\"\"</literal>. Cela ralentit le démarrage mais économise de "
+"l'espace disque. Il vaut mieux se passer du cache <literal>pkgcache</"
+"literal> plutôt que se passer du cache <literal>srcpkgcache</literal>. Comme "
+"pour <literal>Dir::State</literal>, le répertoire par défaut est contenu "
+"dans <literal>Dir::Cache</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Dir::Etc</literal> contains the location of configuration files, "
+"<literal>sourcelist</literal> gives the location of the sourcelist and "
+"<literal>main</literal> is the default configuration file (setting has no "
+"effect, unless it is done from the config file specified by "
+"<envar>APT_CONFIG</envar>)."
+msgstr ""
+"<literal>Dir::Etc</literal> contient l'emplacement des fichiers de "
+"configuration, <literal>sourcelist</literal> indique l'emplacement de la "
+"liste de sources et <literal>main</literal> est le fichier de configuration "
+"par défaut (le modifier n'a aucun effet, à moins qu'on ne le modifie avec le "
+"fichier de configuration indiqué par la variable <envar>APT_CONFIG</envar>)."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Dir::Parts</literal> setting reads in all the config fragments "
+"in lexical order from the directory specified. After this is done then the "
+"main config file is loaded."
+msgstr ""
+"<literal>Dir::Parts</literal> lit, par ordre d'entrée, tous les fragments de "
+"configuration dans le répertoire indiqué. Ensuite, le fichier principal de "
+"configuration est chargé."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
+"Bin::Methods</literal> specifies the location of the method handlers and "
+"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
+"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
+"literal> <literal>dpkg-buildpackage</literal> and <literal>apt-cache</"
+"literal> specify the location of the respective programs."
+msgstr ""
+"Les programmes binaires sont pointés par <literal>Dir::Bin</literal>. "
+"L'emplacement des gestionnaires de méthodes est indiqué par <literal>Dir::"
+"Bin::Methods</literal> ; <literal>gzip</literal>, <literal>bzip2</literal>, "
+"<literal>lzma</literal>, <literal>dpkg</literal>, <literal>apt-get</"
+"literal>, <literal>dpkg-source</literal>, <literal>dpkg-buildpackage</"
+"literal> et <literal>apt-cache</literal> indiquent l'emplacement des "
+"programmes correspondants."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The configuration item <literal>RootDir</literal> has a special meaning. If "
+"set, all paths will be relative to <literal>RootDir</literal>, "
+"<emphasis>even paths that are specified absolutely</emphasis>. So, for "
+"instance, if <literal>RootDir</literal> is set to <filename>/tmp/staging</"
+"filename> and <literal>Dir::State::status</literal> is set to <filename>/var/"
+"lib/dpkg/status</filename>, then the status file will be looked up in "
+"<filename>/tmp/staging/var/lib/dpkg/status</filename>. If you want to "
+"prefix only relative paths, set <literal>Dir</literal> instead."
+msgstr ""
+"L'option de configuration <literal>RootDir</literal> a une signification "
+"particulière. Lorsqu'elle est définie, tous les chemins sont considérés "
+"relativement à <literal>RootDir</literal>, <emphasis>même les chemins "
+"spécifiés de manière absolue</emphasis>. Ainsi par exemple si "
+"<literal>RootDir</literal> est défini comme <filename>/tmp/staging</"
+"filename>, et que chemin du fichier d'état <literal>Dir::State::status</"
+"literal> est déclaré comme <filename>/var/lib/dpkg/status</filename> alors "
+"ce fichier sera cherché dans <filename>/tmp/staging/var/lib/dpkg/status</"
+"filename>. Si vous souhaitez seulement préfixer des chemins relatifs, "
+"définissez plutôt <literal>Dir</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Ignore-Files-Silently</literal> list can be used to specify "
+"which files APT should silently ignore while parsing the files in the "
+"fragment directories. Per default a file which end with <literal>.disabled</"
+"literal>, <literal>~</literal>, <literal>.bak</literal> or <literal>.dpkg-[a-"
+"z]+</literal> is silently ignored. As seen in the last default value these "
+"patterns can use regular expression syntax."
+msgstr ""
+"La liste <literal>Ignore-Files-Silently</literal> permet d'indiquer quels "
+"sont les fichiers qu'APT peut ignorer sans avertissement dans les "
+"répertoires contenant des fragments de configuration. Par défaut, les "
+"fichiers qui se terminent par <literal>.disabled</literal>, <literal>~</"
+"literal>, <literal>.bak</literal> ou <literal>.dpkg-[a-z]+</literal> sont "
+"ignorés. Comme cela est visible dans le dernier élément de cette liste, il "
+"est possible d'utiliser la syntaxe des expressions rationnelles."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "APT in DSelect"
+msgstr "APT et DSelect"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"When APT is used as a &dselect; method several configuration directives "
+"control the default behavior. These are in the <literal>DSelect</literal> "
+"section."
+msgstr ""
+"Quand APT est utilisé comme une méthode de &dselect;, plusieurs directives "
+"contrôlent le comportement par défaut. On les trouve dans la section "
+"<literal>DSelect</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Cache Clean mode; this value may be one of <literal>always</literal>, "
+"<literal>prompt</literal>, <literal>auto</literal>, <literal>pre-auto</"
+"literal> and <literal>never</literal>. <literal>always</literal> and "
+"<literal>prompt</literal> will remove all packages from the cache after "
+"upgrading, <literal>prompt</literal> (the default) does so conditionally. "
+"<literal>auto</literal> removes only those packages which are no longer "
+"downloadable (replaced with a new version for instance). <literal>pre-auto</"
+"literal> performs this action before downloading new packages."
+msgstr ""
+"Mode de nettoyage du cache ; cette variable peut prendre l'une des valeurs "
+"suivantes : « <literal>always</literal> », « <literal>prompt</literal> », "
+"« <literal>auto</literal> », « <literal>pre-auto</literal> » et "
+"« <literal>never</literal> ». « <literal>always</literal> » et "
+"« <literal>prompt</literal> » suppriment tous les paquets du cache après la "
+"mise à niveau ; « <literal>prompt</literal> » (valeur par défaut) les "
+"supprime après une demande et « <literal>auto</literal> » ne supprime que "
+"les archives qui ne peuvent plus être téléchargées (remplacées, par exemple, "
+"par une nouvelle version). « <literal>pre-auto</literal> » les supprime "
+"avant de récupérer de nouveaux paquets."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the install phase."
+msgstr ""
+"Le contenu de cette variable est passé comme options de ligne de commande à "
+"&apt-get; lors de la phase d'installation."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the update phase."
+msgstr ""
+"Le contenu de cette variable est passé comme options de ligne de commande à "
+"&apt-get; lors de la phase de mise à jour."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"If true the [U]pdate operation in &dselect; will always prompt to continue. "
+"The default is to prompt only on error."
+msgstr ""
+"Si cette option est « true », l'opération [U]pdate de &dselect; interroge "
+"toujours l'utilisateur avant de continuer. Par défaut, ce n'est qu'en cas "
+"d'erreur que l'on propose à l'utilisateur d'intervenir."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "How APT calls &dpkg;"
+msgstr "Méthode d'appel de &dpkg; par APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Several configuration directives control how APT invokes &dpkg;. These are "
+"in the <literal>DPkg</literal> section."
+msgstr ""
+"Plusieurs directives de configuration contrôlent la manière dont APT invoque "
+"&dpkg; : elles figurent dans la section <literal>DPkg</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of options to pass to &dpkg;. The options must be specified "
+"using the list notation and each list item is passed as a single argument to "
+"&dpkg;."
+msgstr ""
+"Il s'agit d'une liste d'options à passer à &dpkg;. Les options doivent être "
+"déclarées en utilisant la notation de liste et chaque élément de la liste "
+"est passé comme un seul paramètre à &dpkg;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of shell commands to run before/after invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort."
+msgstr ""
+"Il s'agit d'une liste de commandes shell à exécuter avant ou après l'appel "
+"de &dpkg;. Tout comme pour <literal>Options</literal>, on doit utiliser la "
+"notation de liste. Les commandes sont appelées dans l'ordre, en utilisant "
+"<filename>/bin/sh</filename> : APT s'arrête dès que l'une d'elles échoue."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of shell commands to run before invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort. APT will pass the filenames of all .deb files it is "
+"going to install to the commands, one per line on the requested file "
+"descriptor, defaulting to standard input."
+msgstr ""
+"Il s'agit d'une liste de commandes shell à exécuter avant d'appeler &dpkg;. "
+"Tout comme pour <literal>Options</literal>, on doit utiliser la notation de "
+"liste. Les commandes sont appelées dans l'ordre, en utilisant <filename>/bin/"
+"sh</filename> : APT s'arrête dès que l'une d'elles échoue. APT transmet aux "
+"commandes les noms de tous les fichiers .deb qu'il va installer, à raison "
+"d'un par ligne sur le descripteur de fichier demandé, par défaut sur "
+"l'entrée standard."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Version 2 of this protocol sends more information through the requested file "
+"descriptor: a line with the text <literal>VERSION 2</literal>, the APT "
+"configuration space, and a list of package actions with filename and version "
+"information."
+msgstr ""
+"La version 2 de ce protocole envoie plus d'informations à travers le "
+"descripteur du fichier requis : une ligne avec le texte <literal>VERSION 2</"
+"literal>, l'espace de configuration d'APT et une liste d'actions de paquet "
+"avec le nom de fichier et l'information de version."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each configuration directive line has the form <literal>key=value</"
+"literal>. Special characters (equal signs, newlines, nonprintable "
+"characters, quotation marks, and percent signs in <literal>key</literal> and "
+"newlines, nonprintable characters, and percent signs in <literal>value</"
+"literal>) are %-encoded. Lists are represented by multiple <literal>key::"
+"=value</literal> lines with the same key. The configuration section ends "
+"with a blank line."
+msgstr ""
+"Chaque ligne de directive de configuration a la forme <literal>clé=valeur</"
+"literal>. Les caractères spéciaux (signes égal, fin de ligne, caractères non "
+"imprimables, guillemets et signe pourcentage dans <literal>clé</literal> et "
+"fin de ligne, caractères non imprimables et signe pourcentage dans "
+"<literal>valeur</literal>) sont %-encodés (encodage URL). Les listes sont "
+"représentés par des lignes <literal>clé::=valeur</literal> multiples avec la "
+"même clé. Les sections de la configuration se terminent par une ligne vide."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Package action lines consist of five fields in Version 2: package name "
+"(without architecture qualification even if foreign), old version, direction "
+"of version change (&lt; for upgrades, &gt; for downgrades, = for no change), "
+"new version, action. The version fields are \"-\" for no version at all (for "
+"example when installing a package for the first time; no version is treated "
+"as earlier than any real version, so that is an upgrade, indicated as "
+"<literal>- &lt; 1.23.4</literal>). The action field is \"**CONFIGURE**\" if "
+"the package is being configured, \"**REMOVE**\" if it is being removed, or "
+"the filename of a .deb file if it is being unpacked."
+msgstr ""
+"Les lignes d'action de paquet consistent en cinq champs dans la version 2 : "
+"le nom du paquet (sans qualification d'architecture, même si c'est une "
+"architecture supplémentaire – « foreign »), la version ancienne, la "
+"direction du changement de version (&lt; pour les mises à niveau, &gt; pour "
+"les retours en arrière, = pour pas de modification), la nouvelle version, "
+"l'action. Les champs versions sont « - » pour pas de version du tout (par "
+"exemple lors de la première installation d'un paquet ; pas de version est "
+"traité comme antérieur à n'importe quelle version réelle, ainsi c'est une "
+"mise à jour, indiquée comme <literal>- &lt; 1.23.4</literal>). Le champ "
+"action est « **CONFIGURE** » si le paquet est en cours de configuration, "
+"« **REMOVE** » s'il est en cours de suppression, ou bien le nom d'un "
+"fichier .deb s'il est en cours de dépaquetage."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"In Version 3 after each version field follows the architecture of this "
+"version, which is \"-\" if there is no version, and a field showing the "
+"MultiArch type \"same\", \"foreign\", \"allowed\" or \"none\". Note that "
+"\"none\" is an incorrect typename which is just kept to remain compatible, "
+"it should be read as \"no\" and users are encouraged to support both."
+msgstr ""
+"Dans la Version 3, après chaque champ version, se trouve l’architecture de "
+"cette version qui est « - » s'il n'y a pas de version, puis un champ "
+"montrant le type MultiArch « same », « foreign », « allowed » ou « none ». "
+"Veuillez noter que « none » est un nom de type incorrect qui est juste "
+"conservé pour des raisons de compatibilité, il devrait être lu comme « no » "
+"et les utilisateurs sont encouragés à prendre en charge les deux."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The version of the protocol to be used for the command "
+"<literal><replaceable>cmd</replaceable></literal> can be chosen by setting "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::Version</"
+"literal> accordingly, the default being version 1. If APT isn't supporting "
+"the requested version it will send the information in the highest version it "
+"has support for instead."
+msgstr ""
+"La version du protocole qu'il faut utiliser pour la commande "
+"<literal><replaceable>cmd</replaceable></literal> peut être choisie en "
+"réglant <literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::"
+"Version</literal> en conséquence, la version par défaut étant la première. "
+"Si APT ne gère pas la version demandée, il enverra les informations dans la "
+"version la plus haute qu'il gère."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The file descriptor to be used to send the information can be requested with "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::InfoFD</"
+"literal> which defaults to <literal>0</literal> for standard input and is "
+"available since version 0.9.11. Support for the option can be detected by "
+"looking for the environment variable <envar>APT_HOOK_INFO_FD</envar> which "
+"contains the number of the used file descriptor as a confirmation."
+msgstr ""
+"Le descripteur de fichier à utiliser pour l'envoi des informations peut être "
+"demandé avec l'option <literal>DPkg::Tools::options::<replaceable>cmd</"
+"replaceable>::InfoFD</literal> qui est par défaut <literal>0</literal> comme "
+"entrée standard ; l'option est disponible depuis la version 0.9.11. La prise "
+"en charge de l'option peut être détectée en regardant la variable "
+"d'environnement <envar>APT_HOOK_INFO_FD</envar> qui contient comme "
+"confirmation le numéro du descripteur de fichier utilisé."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"APT chdirs to this directory before invoking &dpkg;, the default is "
+"<filename>/</filename>."
+msgstr ""
+"APT se place dans ce répertoire avant d'appeler &dpkg; ; par défaut, c'est "
+"le répertoire <filename>/</filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"These options are passed to &dpkg-buildpackage; when compiling packages; the "
+"default is to disable signing and produce all binaries."
+msgstr ""
+"Ces options sont passées à &dpkg-buildpackage; lors de la compilation des "
+"paquets ; par défaut la signature est désactivée et tous les binaires sont "
+"créés."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"If this option is set APT will call <command>dpkg --configure --pending</"
+"command> to let &dpkg; handle all required configurations and triggers. This "
+"option is activated by default, but deactivating it could be useful if you "
+"want to run APT multiple times in a row - e.g. in an installer. In this "
+"scenario you could deactivate this option in all but the last run."
+msgstr ""
+"Si cette option est choisie, APT lancera <command>dpkg --configure --"
+"pending</command> pour laisser &dpkg; gérer les configurations de paquets et "
+"les actions différées. Cette option est automatiquement activée. Il peut par "
+"contre être utile de la désactiver pour lancer APT plusieurs fois "
+"successives, par exemple quand il est utilisé depuis un outil "
+"d'installation. Dans ce cas, seul le dernier de tous les appels successifs "
+"peut conserver l'option active."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Periodic and Archives options"
+msgstr "Options « Periodic » et « Archive »"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups "
+"of options configure behavior of apt periodic updates, which is done by the "
+"<literal>/usr/lib/apt/apt.systemd.daily</literal> script. See the top of "
+"this script for the brief documentation of these options."
+msgstr ""
+"Les groupes d'options <literal>APT::Periodic</literal> et <literal>APT::"
+"Archive</literal> configurent les comportements périodiques réalisés par le "
+"script <literal>/usr/lib/apt/apt.systemd.daily</literal>, lancé "
+"quotidiennement."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Debug options"
+msgstr "Les options de débogage"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Enabling options in the <literal>Debug::</literal> section will cause "
+"debugging information to be sent to the standard error stream of the program "
+"utilizing the <literal>apt</literal> libraries, or enable special program "
+"modes that are primarily useful for debugging the behavior of <literal>apt</"
+"literal>. Most of these options are not interesting to a normal user, but a "
+"few may be:"
+msgstr ""
+"Les options de la section <literal>Debug::</literal> servent soit à "
+"provoquer l'affichage d'informations de débogage sur la sortie d'erreur "
+"standard du programme qui utilise les bibliothèques APT, soit à activer des "
+"modes de fonctionnement spéciaux qui sont principalement utiles pour "
+"déboguer le comportement de <literal>APT</literal>. La plupart de ces "
+"options n'ont pas d'intérêt pour un utilisateur normal, mais certaines "
+"peuvent tout de même être utiles :"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::pkgProblemResolver</literal> enables output about the "
+"decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</"
+"literal>."
+msgstr ""
+"<literal>Debug::pkgProblemResolver</literal> affiche d'intéressantes "
+"informations sur les décisions prises par les commandes <literal>dist-"
+"upgrade, upgrade, install, remove et purge</literal>."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::NoLocking</literal> disables all file locking. This can be "
+"used to run some operations (for instance, <literal>apt-get -s install</"
+"literal>) as a non-root user."
+msgstr ""
+"<literal>Debug::NoLocking</literal> désactive le verrouillage de fichier de "
+"manière à ce qu'APT puisse effectuer quelques opérations (telles que "
+"<literal>apt-get -s install</literal>) sans avoir les privilèges du "
+"superutilisateur."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each "
+"time that <literal>apt</literal> invokes &dpkg;."
+msgstr ""
+"<literal>Debug::pkgDPkgPM</literal> affiche la ligne de commande à chaque "
+"appel de &dpkg;."
+
+#. TODO: provide a
+#. motivating example, except I haven't a clue why you'd want
+#. to do this.
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
+"in CD-ROM IDs."
+msgstr ""
+"<literal>Debug::IdentCdrom</literal> désactive l'inclusion de données de "
+"type statfs dans les identifiants de CD."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid "A full list of debugging options to apt follows."
+msgstr "Liste complète des options de débogage de APT :"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information related to accessing <literal>cdrom://</literal> sources."
+msgstr ""
+"Affiche les informations concernant les sources de type <literal>cdrom://</"
+"literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using FTP."
+msgstr ""
+"Affiche les informations concernant le téléchargement de paquets par FTP."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using HTTP."
+msgstr ""
+"Affiche les informations concernant le téléchargement de paquets par HTTP."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using HTTPS."
+msgstr "Print information related to downloading packages using HTTPS."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information related to verifying cryptographic signatures using "
+"<literal>gpg</literal>."
+msgstr ""
+"Affiche les informations relatives à la vérification de signatures "
+"cryptographiques avec <literal>gpg</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information about the process of accessing collections of packages "
+"stored on CD-ROMs."
+msgstr ""
+"Affiche des informations concernant l'accès aux collections de paquets "
+"stockées sur CD."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Describes the process of resolving build-dependencies in &apt-get;."
+msgstr ""
+"Décrit le processus de résolution des dépendances pour la construction de "
+"paquets source ( « build-dependencies » ) par &apt-get;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output each cryptographic hash that is generated by the <literal>apt</"
+"literal> libraries."
+msgstr ""
+"Affiche toutes les clés de hachage cryptographiques créées par les "
+"librairies d'<literal>apt</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Do not include information from <literal>statfs</literal>, namely the number "
+"of used and free blocks on the CD-ROM filesystem, when generating an ID for "
+"a CD-ROM."
+msgstr ""
+"Désactive l'inclusion des données de type <literal>statfs</literal> pour la "
+"génération des identifiants de CD, c'est-à-dire le nombre de blocs libres et "
+"utilisés sur le système de fichier du CD."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Disable all file locking. For instance, this will allow two instances of "
+"<quote><literal>apt-get update</literal></quote> to run at the same time."
+msgstr ""
+"Désactive le verrouillage de fichiers. Cela permet par exemple de lancer "
+"deux instances de <quote><literal>apt-get update</literal></quote> en même "
+"temps."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Log when items are added to or removed from the global download queue."
+msgstr ""
+"Trace les ajouts et suppressions d'éléments de la queue globale de "
+"téléchargement."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output status messages and errors related to verifying checksums and "
+"cryptographic signatures of downloaded files."
+msgstr ""
+"Affiche les détails de la vérification des sommes de contrôle et des "
+"signatures cryptographiques des fichiers téléchargés, ainsi que les erreurs "
+"éventuelles."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information about downloading and applying package index list diffs, "
+"and errors relating to package index list diffs."
+msgstr ""
+"Affiche les informations de téléchargement et de prise en compte des "
+"fichiers différentiels des indexes de paquets, ainsi que les erreurs "
+"éventuelles."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information related to patching apt package lists when downloading "
+"index diffs instead of full indices."
+msgstr ""
+"Affiche les détails de l'application des fichiers de différences aux listes "
+"de paquets d'APT quand ces fichiers de différences sont téléchargés à la "
+"place des fichiers complets."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Log all interactions with the sub-processes that actually perform downloads."
+msgstr ""
+"Affiche toutes les interactions avec les processus enfants qui se chargent "
+"effectivement des téléchargements."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Log events related to the automatically-installed status of packages and to "
+"the removal of unused packages."
+msgstr ""
+"Affiche les changements concernant le marquage des paquets comme installés "
+"automatiquement, et la suppression des paquets inutiles."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate debug messages describing which packages are being automatically "
+"installed to resolve dependencies. This corresponds to the initial auto-"
+"install pass performed in, e.g., <literal>apt-get install</literal>, and not "
+"to the full <literal>apt</literal> dependency resolver; see <literal>Debug::"
+"pkgProblemResolver</literal> for that."
+msgstr ""
+"Crée les informations de débogage décrivant quels paquets sont installés "
+"automatiquement pour satisfaire les dépendances. Cela concerne la passe "
+"initiale d'installation automatique effectuée par exemple par <literal>apt-"
+"get install</literal> et pas le système de résolution de dépendances complet "
+"de APT ; voir <literal>Debug::pkgProblemResolver</literal> pour ce dernier."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate debug messages describing which packages are marked as keep/install/"
+"remove while the ProblemResolver does his work. Each addition or deletion "
+"may trigger additional actions; they are shown indented two additional "
+"spaces under the original entry. The format for each line is "
+"<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c -"
+"&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> is "
+"the current version of the package, <literal>d.e.f</literal> is the version "
+"considered for installation and <literal>x.y.z</literal> is a newer version, "
+"but not considered for installation (because of a low pin score). The later "
+"two can be omitted if there is none or if it is the same as the installed "
+"version. <literal>section</literal> is the name of the section the package "
+"appears in."
+msgstr ""
+"Crée les informations de débogage décrivant quels paquets sont gardés/"
+"installés/supprimés pendant le travail de l'outil de résolution de "
+"problèmes. Chaque ajout ou suppression peut impliquer des actions "
+"supplémentaires ; elles sont alors indiquées avec une indentation de deux "
+"espaces de plus que l'action qui les a déclenchées. Le format de chaque "
+"ligne est <literal>MarkKeep</literal>, <literal>MarkDelete</literal> ou "
+"<literal>MarkInstall</literal> suivi de <literal>nom-paquet &lt;a.b.c -&gt; "
+"d.e.f | x.y.z&gt; (section)</literal> où <literal>a.b.c</literal> est la "
+"version actuelle du paquet, <literal>d.e.f</literal> la version devant être "
+"installée et <literal>x.y.z</literal> une version plus récente qui n'est "
+"pas prévue pour être installée (à cause d'un score plus faible). Ces deux "
+"derniers éléments peuvent ne pas être mentionnés s'ils ne sont pas "
+"pertinents où lorsque ils sont identiques à la version installée. "
+"<literal>section</literal> est le nom de la section où figure le paquet."
+"automatiquement pour satisfaire les dépendances. Cela concerne la passe "
+"initiale d'installation automatique effectuée par exemple par <literal>apt-"
+"get install</literal> et pas le système de résolution de dépendances complet "
+"de APT ; voir <literal>Debug::pkgProblemResolver</literal> pour ce dernier."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"When invoking &dpkg;, output the precise command line with which it is being "
+"invoked, with arguments separated by a single space character."
+msgstr ""
+"Affiche la commande exacte d'invocation de &dpkg; à chaque appel ; les "
+"paramètres sont séparés par des espaces."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output all the data received from &dpkg; on the status file descriptor and "
+"any errors encountered while parsing it."
+msgstr ""
+"Affiche l'ensemble des informations reçues de &dpkg; par l'intermédiaire du "
+"descripteur de fichier d'état, et les éventuelles erreurs d'analyse de ce "
+"fichier."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate a trace of the algorithm that decides the order in which "
+"<literal>apt</literal> should pass packages to &dpkg;."
+msgstr ""
+"Affiche les étapes de l'algorithme utilisé pour choisir l'ordre dans lequel "
+"<literal>apt</literal> passe les paquets à &dpkg;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output status messages tracing the steps performed when invoking &dpkg;."
+msgstr "Affiche le détail des opérations liées à l'invocation de &dpkg;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Output the priority of each package list on startup."
+msgstr "Affiche, au lancement, la priorité de chaque liste de paquets."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Trace the execution of the dependency resolver (this applies only to what "
+"happens when a complex dependency problem is encountered)."
+msgstr ""
+"Affiche la trace d'exécution du système de résolution de dépendances (ne "
+"concerne que les cas où un problème de dépendances complexe se présente)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Display a list of all installed packages with their calculated score used by "
+"the pkgProblemResolver. The description of the package is the same as "
+"described in <literal>Debug::pkgDepCache::Marker</literal>"
+msgstr ""
+"Affiche la liste de tous les paquets installés avec leur score calculé par "
+"l'outil de résolution de problèmes. La description du paquet est celle qui "
+"est décrite dans <literal>Debug::pkgDepCache::Marker</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information about the vendors read from <filename>/etc/apt/vendors."
+"list</filename>."
+msgstr ""
+"Affiche les fournisseurs déclarés dans le fichier <filename>/etc/apt/vendors."
+"list</filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Display the external commands that are called by apt hooks. This includes e."
+"g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"<literal>APT::Update::{Pre,Post}-Invoke</literal>."
+msgstr ""
+"Affiche les commandes externes qui sont appelés par le point d'entrée apt. "
+"Cela inclut par exemple les options de configuration <literal>DPkg::{Pre,"
+"Post}-Invoke</literal> ou <literal>APT::Update::{Pre,Post}-Invoke</literal>."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml apt-ftparchive.1.xml
+msgid "Examples"
+msgstr "Exemples"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"&configureindex; is a configuration file showing example values for all "
+"possible options."
+msgstr ""
+"Le fichier &configureindex; contient un modèle de fichier montrant des "
+"exemples pour toutes les options existantes."
+
+#. ? reading apt.conf
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid "&apt-cache;, &apt-config;, &apt-preferences;."
+msgstr "&apt-cache;, &apt-config;, &apt-preferences;."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt_preferences.5.xml
+msgid "Preference control file for APT"
+msgstr "Fichier de contrôle des préférences pour APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"The APT preferences file <filename>/etc/apt/preferences</filename> and the "
+"fragment files in the <filename>/etc/apt/preferences.d/</filename> folder "
+"can be used to control which versions of packages will be selected for "
+"installation."
+msgstr ""
+"Le fichier d'APT, <filename>/etc/apt/preferences</filename> et les fichiers "
+"fragments situés dans le dossier <filename>/etc/apt/preferences.d/</"
+"filename>, peuvent être utilisés pour choisir la version des paquets que "
+"l'on veut installer."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Several versions of a package may be available for installation when the "
+"&sources-list; file contains references to more than one distribution (for "
+"example, <literal>stable</literal> and <literal>testing</literal>). APT "
+"assigns a priority to each version that is available. Subject to dependency "
+"constraints, <command>apt-get</command> selects the version with the highest "
+"priority for installation. The APT preferences override the priorities that "
+"APT assigns to package versions by default, thus giving the user control "
+"over which one is selected for installation."
+msgstr ""
+"Quand le fichier &sources-list; contient des références à plusieurs "
+"distributions (par exemple, <literal>stable</literal> et <literal>testing</"
+"literal>), plusieurs versions d'un paquet peuvent être installées. APT "
+"affecte une priorité à chaque version disponible. La commande <command>apt-"
+"get</command>, tenant compte des contraintes de dépendance, installe la "
+"version qui possède la priorité la plus haute. Le fichier "
+"<filename>preferences</filename> annule les priorités assignées par défaut "
+"aux versions des paquets : ainsi l'utilisateur peut choisir la version qu'il "
+"veut installer."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Several instances of the same version of a package may be available when the "
+"&sources-list; file contains references to more than one source. In this "
+"case <command>apt-get</command> downloads the instance listed earliest in "
+"the &sources-list; file. The APT preferences do not affect the choice of "
+"instance, only the choice of version."
+msgstr ""
+"Si le fichier &sources-list; contient, pour une même distribution, des "
+"références à plusieurs sites de téléchargement, il peut exister plusieurs "
+"exemplaires de la même version d'un paquet. Dans ce cas, <command>apt-get</"
+"command> télécharge l'exemplaire qui apparaît en premier dans le fichier "
+"&sources-list;. Le fichier <filename>preferences</filename> n'influe pas sur "
+"le choix des exemplaires, seulement sur le choix de la version."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Preferences are a strong power in the hands of a system administrator but "
+"they can become also their biggest nightmare if used without care! APT will "
+"not question the preferences, so wrong settings can lead to uninstallable "
+"packages or wrong decisions while upgrading packages. Even more problems "
+"will arise if multiple distribution releases are mixed without a good "
+"understanding of the following paragraphs. Packages included in a specific "
+"release aren't tested in (and therefore don't always work as expected in) "
+"older or newer releases, or together with other packages from different "
+"releases. You have been warned."
+msgstr ""
+"Les préférences sont un outil puissant pour les administrateurs système mais "
+"peuvent devenir leur pire cauchemar si elles sont utilisées sans "
+"précautions. APT ne remettra pas en doute les réglages choisis. Des valeurs "
+"erronées pourront alors conduire à des paquets non installables ou à des "
+"décisions incorrectes lors de la mise à jour des paquets. Des problèmes "
+"supplémentaires peuvent survenir si des distributions multiples sont "
+"mélangées sans une bonne compréhension des paragraphes qui suivent."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Note that the files in the <filename>/etc/apt/preferences.d</filename> "
+"directory are parsed in alphanumeric ascending order and need to obey the "
+"following naming convention: The files have either no or \"<literal>pref</"
+"literal>\" as filename extension and only contain alphanumeric, hyphen (-), "
+"underscore (_) and period (.) characters. Otherwise APT will print a notice "
+"that it has ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
+msgstr ""
+"Veuillez noter que les fichiers du répertoire <filename>/etc/apt/preferences."
+"d</filename> sont analysés par ordre alphanumérique ascendant, doivent avoir "
+"l'extension \"<literal>pref</literal>\" ou aucune extension et ne peuvent "
+"continir que des caractères alphanumériques, des tirets (-), des caractères "
+"de soulignement (_) et des points (.). Dans le cas contraire, APT affichera "
+"un avertissement indiquant qu'il a ignoré un fichier si celui-ci ne "
+"correspond par à un motif défini dans <literal>Dir::Ignore-Files-Silently</"
+"literal> (les fichiers correspondant à cette variable de configuration "
+"étant, eux, ignorés silencieusemennt)."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "APT's Default Priority Assignments"
+msgstr "Priorités affectées par défaut"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "<command>apt-get install -t testing <replaceable>some-package</replaceable></command>\n"
+msgstr "<command>apt-get install -t testing <replaceable>paquet</replaceable></command>\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "APT::Default-Release \"stable\";\n"
+msgstr "APT::Default-Release \"stable\";\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If there is no preferences file or if there is no entry in the file that "
+"applies to a particular version then the priority assigned to that version "
+"is the priority of the distribution to which that version belongs. It is "
+"possible to single out a distribution, \"the target release\", which "
+"receives a higher priority than other distributions do by default. The "
+"target release can be set on the <command>apt-get</command> command line or "
+"in the APT configuration file <filename>/etc/apt/apt.conf</filename>. Note "
+"that this has precedence over any general priority you set in the <filename>/"
+"etc/apt/preferences</filename> file described later, but not over "
+"specifically pinned packages. For example, <placeholder type="
+"\"programlisting\" id=\"0\"/> <placeholder type=\"programlisting\" id=\"1\"/>"
+msgstr ""
+"Quand le fichier des préférences n'existe pas, ou quand aucune entrée de ce "
+"fichier ne s'applique à une version précise, la priorité affectée à cette "
+"version est la priorité de la distribution à laquelle elle appartient. On "
+"peut distinguer une distribution et lui donner une priorité plus haute que "
+"celle des autres distributions : on l'appelle la distribution par défaut ou "
+"« target release » et elle peut être définie sur la ligne de commande de "
+"<command>apt-get</command> ou dans le fichier de configuration d'APT, "
+"<filename>/etc/apt/apt.conf</filename>. Par exemple : <placeholder type="
+"\"programlisting\" id=\"0\"/> <placeholder type=\"programlisting\" id=\"1\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If the target release has been specified then APT uses the following "
+"algorithm to set the priorities of the versions of a package. Assign:"
+msgstr ""
+"Quand une distribution par défaut a été indiquée, APT utilise l'algorithme "
+"suivant pour déterminer la priorité des versions d'un paquet :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 1"
+msgstr "priorité 1"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"to the versions coming from archives which in their <filename>Release</"
+"filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</"
+"emphasis> as \"ButAutomaticUpgrades: yes\" like the Debian "
+"<literal>experimental</literal> archive."
+msgstr ""
+"pour les versions issues d'archives dont le fichier <filename>Release</"
+"filename> comporte la mention « NotAutomatic: yes » mais <emphasis>pas</"
+"emphasis> « ButAutomaticUpgrades: yes » comme l'archive "
+"<literal>experimental</literal> de Debian."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 100"
+msgstr "une priorité égale à 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"to the version that is already installed (if any) and to the versions coming "
+"from archives which in their <filename>Release</filename> files are marked "
+"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the Debian "
+"backports archive since <literal>squeeze-backports</literal>."
+msgstr ""
+"pour les versions issues d'archives dont le fichier <filename>Release</"
+"filename> comporte la mention « NotAutomatic: yes » et "
+"« ButAutomaticUpgrades: yes » comme l'archive des rétroportages de Debian "
+"depuis <literal>squeeze-backports</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 500"
+msgstr "une priorité égale à 500"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "to the versions that do not belong to the target release."
+msgstr ""
+"est affectée aux versions qui n'appartiennent pas à la distribution par "
+"défaut."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 990"
+msgstr "une priorité égale à 990"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "to the versions that belong to the target release."
+msgstr ""
+"est affectée aux versions qui appartiennent à la distribution par défaut."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The highest of those priorities whose description matches the version is "
+"assigned to the version."
+msgstr ""
+"La priorité la plus élevée dont la description correspond à la version est "
+"affectée à la version."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If the target release has not been specified then APT simply assigns "
+"priority 100 to all installed package versions and priority 500 to all "
+"uninstalled package versions, except versions coming from archives which in "
+"their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" "
+"- these versions get the priority 1 or priority 100 if it is additionally "
+"marked as \"ButAutomaticUpgrades: yes\"."
+msgstr ""
+"Quand aucune distribution par défaut n'a été indiquée, APT affecte "
+"simplement une priorité égale à 100 à toute version installée d'un paquet et "
+"une priorité égale à 500 à tout version non installée. Cela à l'exception "
+"des versions issues des archives qui ont la mention « NotAutomatic: yes » "
+"dans leur fichier <filename>Release</filename>, qui auront alors une "
+"priorité égale à 1 ou à 100 si elles sont également marquées avec "
+"« ButAutomaticUpgrades: yes »."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"APT then applies the following rules, listed in order of precedence, to "
+"determine which version of a package to install."
+msgstr ""
+"Puis APT applique les règles suivantes pour déterminer la version du paquet "
+"qu'il faut installer (par ordre de priorité) :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"Never downgrade unless the priority of an available version exceeds 1000. "
+"(\"Downgrading\" is installing a less recent version of a package in place "
+"of a more recent version. Note that none of APT's default priorities "
+"exceeds 1000; such high priorities can only be set in the preferences file. "
+"Note also that downgrading a package can be risky.)"
+msgstr ""
+"Ne jamais revenir en arrière, sauf si la priorité d'une version disponible "
+"dépasse 1000. « Revenir en arrière » signifie installer une version moins "
+"récente que la version installée. Il faut noter qu'aucune des priorités par "
+"défaut n'excède 1000 ; de telles valeurs ne peuvent être définies que dans "
+"le fichier des préférences. Notez aussi qu'il est risqué de revenir en "
+"arrière."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "Install the highest priority version."
+msgstr "Installer la version qui possède la priorité la plus haute."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"If two or more versions have the same priority, install the most recent one "
+"(that is, the one with the higher version number)."
+msgstr ""
+"Quand deux (ou plus) versions ont la même priorité, installer la version la "
+"plus récente (c.-à-d. celle dont le numéro de version est le plus grand)."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"If two or more versions have the same priority and version number but either "
+"the packages differ in some of their metadata or the <literal>--reinstall</"
+"literal> option is given, install the uninstalled one."
+msgstr ""
+"Quand deux (ou plus) versions ont la même priorité et le même numéro de "
+"version, mais soit les paquets diffèrent par certaines métadonnées, soit "
+"l'option <literal>--reinstall</literal> a été donnée, installer la version "
+"qui n'est pas installée."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"In a typical situation, the installed version of a package (priority 100) "
+"is not as recent as one of the versions available from the sources listed in "
+"the &sources-list; file (priority 500 or 990). Then the package will be "
+"upgraded when <command>apt-get install <replaceable>some-package</"
+"replaceable></command> or <command>apt-get upgrade</command> is executed."
+msgstr ""
+"En général, la version installée d'un paquet (priorité 100) n'est pas aussi "
+"récente que les versions disponibles dans les sources listées dans le "
+"fichier &sources-list; (priorité 500 ou 990). Et donc le paquet sera mis à "
+"niveau avec la commande : <command>apt-get install <replaceable>paquet</"
+"replaceable></command> ou <command>apt-get dist-upgrade</command>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"More rarely, the installed version of a package is <emphasis>more</emphasis> "
+"recent than any of the other available versions. The package will not be "
+"downgraded when <command>apt-get install <replaceable>some-package</"
+"replaceable></command> or <command>apt-get upgrade</command> is executed."
+msgstr ""
+"La version installée d'un paquet peut être - rarement - <emphasis>plus</"
+"emphasis> récente que tout autre version disponible. Les commandes "
+"<command>apt-get install <replaceable>paquet</replaceable></command> ou "
+"<command>apt-get upgrade</command> ne provoquent pas de retour en arrière."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Sometimes the installed version of a package is more recent than the version "
+"belonging to the target release, but not as recent as a version belonging to "
+"some other distribution. Such a package will indeed be upgraded when "
+"<command>apt-get install <replaceable>some-package</replaceable></command> "
+"or <command>apt-get upgrade</command> is executed, because at least "
+"<emphasis>one</emphasis> of the available versions has a higher priority "
+"than the installed version."
+msgstr ""
+"Parfois, la version installée d'un paquet est plus récente que la version "
+"appartenant à la distribution par défaut, mais moins récente que la version "
+"appartenant à une autre distribution. Une telle version sera mise à niveau "
+"par les commandes <command>apt-get install <replaceable>paquet</"
+"replaceable></command> ou <command>apt-get upgrade</command> car au moins "
+"<emphasis>l'une</emphasis> des versions disponibles possède une plus haute "
+"priorité que celle de la version installée."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "The Effect of APT Preferences"
+msgstr "Conséquences des préférences"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The APT preferences file allows the system administrator to control the "
+"assignment of priorities. The file consists of one or more multi-line "
+"records separated by blank lines. Records can have one of two forms, a "
+"specific form and a general form."
+msgstr ""
+"Le fichier des préférences permet à l'administrateur système de contrôler "
+"l'affectation des priorités. Ce fichier est constitué d'une ou plusieurs "
+"entrées séparées par des lignes blanches. Ces entrées peuvent avoir deux "
+"formes, une forme particulière et une forme générale."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The specific form assigns a priority (a \"Pin-Priority\") to one or more "
+"specified packages with a specified version or version range. For example, "
+"the following record assigns a high priority to all versions of the "
+"<filename>perl</filename> package whose version number begins with "
+"\"<literal>&good-perl;</literal>\". Multiple packages can be separated by "
+"spaces."
+msgstr ""
+"La forme particulière affecte une priorité (<emphasis>Pin-Priority</"
+"emphasis>) à un paquet précis, à une version précise ou à un intervalle "
+"spécifiant plusieurs versions. Par exemple, l'entrée suivante affecte une "
+"priorité haute à toutes les versions du paquet <filename>perl</filename> "
+"dont le numéro de version commence par <literal>&good-perl;</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The general form assigns a priority to all of the package versions in a "
+"given distribution (that is, to all the versions of packages that are listed "
+"in a certain <filename>Release</filename> file) or to all of the package "
+"versions coming from a particular Internet site, as identified by the site's "
+"fully qualified domain name."
+msgstr ""
+"La forme générale affecte une priorité à toutes les versions d'un paquet "
+"dans une distribution donnée (c'est-à-dire, à toutes les versions d'un "
+"paquet qui sont listées dans un fichier <filename>Release</filename>), ou à "
+"toutes les versions d'un paquet provenant d'un site Internet identifié par "
+"un nom complètement qualifié."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"This general-form entry in the APT preferences file applies only to groups "
+"of packages. For example, the following record assigns a high priority to "
+"all package versions available from the local site."
+msgstr ""
+"Cette forme générale des entrées du fichier des préférences s'applique "
+"seulement aux groupes de paquets. Par exemple, l'entrée suivante affecte une "
+"priorité haute à toutes les versions disponibles dans le site local."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A note of caution: the keyword used here is \"<literal>origin</literal>\" "
+"which can be used to match a hostname. The following record will assign a "
+"high priority to all versions available from the server identified by the "
+"hostname \"ftp.de.debian.org\""
+msgstr ""
+"Il est important de noter que le mot-clé utilisé ici est « <literal>origin</"
+"literal> » qui peut servir à indiquer un nom d'hôte. Dans l'exemple qui "
+"suit, une haute priorité est donnée à toutes les versions disponibles sur le "
+"serveur identifié par le nom d'hôte « ftp.de.debian.org »."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"This should <emphasis>not</emphasis> be confused with the Origin of a "
+"distribution as specified in a <filename>Release</filename> file. What "
+"follows the \"Origin:\" tag in a <filename>Release</filename> file is not an "
+"Internet address but an author or vendor name, such as \"Debian\" or \"Ximian"
+"\"."
+msgstr ""
+"Veuillez noter que le mot-clé utilisé ici, <literal>origin</literal>, ne "
+"doit pas être confondu avec l'Origine d'une distribution indiquée dans un "
+"fichier <filename>Release</filename>. Ce qui suit l'étiquette « Origin: » "
+"dans un fichier <filename>Release</filename> n'est pas une adresse Internet "
+"mais le nom d'un auteur ou d'un distributeur, comme « Debian » ou « Ximian »."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a low priority to all package versions "
+"belonging to any distribution whose Archive name is \"<literal>unstable</"
+"literal>\"."
+msgstr ""
+"L'entrée suivante affecte une priorité basse à toutes les versions d'un "
+"paquet appartenant à toute distribution dont le nom d'« Archive » est "
+"<literal>unstable</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any distribution whose Codename is \"<literal>&debian-testing-"
+"codename;</literal>\"."
+msgstr ""
+"L'entrée suivante affecte une priorité haute à toutes les versions d'un "
+"paquet appartenant à toute distribution dont le nom de code est "
+"<literal>&debian-testing-codename;</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+msgstr ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any release whose Archive name is \"<literal>stable</literal>\" "
+"and whose release Version number is \"<literal>&debian-stable-version;</"
+"literal>\"."
+msgstr ""
+"L'entrée suivante affecte une priorité haute à toutes les versions d'un "
+"paquet appartenant à toute distribution dont le nom d'« Archive » est "
+"<literal>stable</literal> et dont le numéro de « Version » est "
+"<literal>&debian-stable-version;</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The effect of the comma operator is similar to an \"and\" in logic: All "
+"conditions must be satisfied for the pin to match. There is one exception: "
+"For any type of condition (such as two \"a\" conditions), only the last such "
+"condition is checked."
+msgstr ""
+"L'effet de l'opérateur virgule est identique à un « and » logique : toutes "
+"les conditions doivent être satisfaites pour que l'épinglage corresponde. Il "
+"existe une exception : pour chaque type de condition (telles que deux "
+"conditions « a »), seule la dernière condition est vérifiée."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Regular expressions and &glob; syntax"
+msgstr "Expressions régulières et syntaxe &glob;"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"APT also supports pinning by &glob; expressions, and regular expressions "
+"surrounded by slashes. For example, the following example assigns the "
+"priority 500 to all packages from experimental where the name starts with "
+"gnome (as a &glob;-like expression) or contains the word kde (as a POSIX "
+"extended regular expression surrounded by slashes)."
+msgstr ""
+"APT gére également l'épinglage (« pinning ») avec des expressions &glob; et "
+"des expressions régulières entourées par des barres obliques. Par exemple, "
+"l'exemple qui suit affecte une priorité de 500 à tous les paquets "
+"d'experimental dont le nom commence par gnome (en tant qu'expression de "
+"type &glob;) ou contient le mot kde (sous format d'une expression régulière "
+"POSIX étendue, entourée de barres obliques)."
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+msgstr ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The rule for those expressions is that they can occur anywhere where a "
+"string can occur. Thus, the following pin assigns the priority 990 to all "
+"packages from a release starting with &ubuntu-codename;."
+msgstr ""
+"La règle pour ces expressions est qu'elles peuvent prendre place dès que la "
+"chaîne correspondante est trouvée. Ainsi, l'épinglage qui suit affecte une "
+"priorité de 990 à tous les paquets d'une version de distribution commençant "
+"par &ubuntu-codename;."
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+msgstr ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If a regular expression occurs in a <literal>Package</literal> field, the "
+"behavior is the same as if this regular expression were replaced with a list "
+"of all package names it matches. It is undecided whether this will change in "
+"the future; thus you should always list wild-card pins first, so later "
+"specific pins override it. The pattern \"<literal>*</literal>\" in a "
+"Package field is not considered a &glob; expression in itself."
+msgstr ""
+"Si une expression régulière est rencontrée dans un champ <literal>Package</"
+"literal>, le comportement sera celui qui aurait eu lieu si cette expression "
+"était remplacée par la liste de tous les paquets auxquels elle correspond. "
+"Il n'est pas encore décidé si cela sera conservé dans le futur : il est donc "
+"conseillé d'utiliser des épinglages avec caractères génériques en premier "
+"afin qu'ils soient remplacés par des épinglages plus spécifiques. Le motif "
+"« <literal>*</literal> » dans un champ Package n'est pas considéré comme une "
+"expression &glob; en soi."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "How APT Interprets Priorities"
+msgstr "Méthode d'interprétation des priorités par APT"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Priorities (P) assigned in the APT preferences file must be positive or "
+"negative integers. They are interpreted as follows (roughly speaking):"
+msgstr ""
+"Les priorités (P) indiquées dans le fichier des préférences doivent être des "
+"entiers positifs ou négatifs. Ils sont interprétés à peu près comme suit :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P &gt;= 1000"
+msgstr "P &gt;= 1000"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed even if this constitutes a downgrade of the "
+"package"
+msgstr ""
+"cette priorité entraîne l'installation du paquet même s'il s'agit d'un "
+"retour en arrière."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "990 &lt;= P &lt; 1000"
+msgstr "990 &lt;= P &lt; 1000"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed even if it does not come from the target "
+"release, unless the installed version is more recent"
+msgstr ""
+"la version sera installée, même si elle n'appartient pas à la distribution "
+"par défaut ; mais elle ne sera pas installée si la version installée est "
+"plus récente."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "500 &lt;= P &lt; 990"
+msgstr "500 &lt;= P &lt; 990"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to the target release or the installed version is more recent"
+msgstr ""
+"La version sera installée, sauf s'il existe une version appartenant à la "
+"distribution par défaut ou si la version installée est plus récente."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "100 &lt;= P &lt; 500"
+msgstr "100 &lt;= P &lt; 500"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to some other distribution or the installed version is more recent"
+msgstr ""
+"la version sera installée, sauf s'il existe une version appartenant à une "
+"autre distribution ou si la version installée est plus récente."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "0 &lt; P &lt; 100"
+msgstr "0 &lt; P &lt; 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed only if there is no installed version of "
+"the package"
+msgstr "la version sera installée si aucune version du paquet n'est installée."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P &lt; 0"
+msgstr "P &lt; 0"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "prevents the version from being installed"
+msgstr "cette priorité empêche l'installation de la version."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P = 0"
+msgstr "P = 0"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "has undefined behaviour, do not use it."
+msgstr "a un comportement indéfini, ne pas l'utiliser."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The first specific-form record matching an available package version "
+"determines the priority of the package version. Failing that, the priority "
+"of the package is defined as the maximum of all priorities defined by "
+"generic-form records matching the version. Records defined using patterns "
+"in the Pin field other than \"*\" are treated like specific-form records."
+msgstr ""
+"La première entrée de forme particulière correspondant à une version "
+"disponible de paquet détermine la priorité de la version du paquet. S'il "
+"n'en existe pas, la priorité du paquet est définie comme la plus haute de "
+"toutes les priorités par les entrées de forme générale correspondant à la "
+"version. Les entrées définies en utilisant des motifs dans le champ Pin "
+"autre que « * » sont traitées comme des entrées de forme générale."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"For example, suppose the APT preferences file contains the three records "
+"presented earlier:"
+msgstr ""
+"Supposons par exemple que le fichier des préférences contienne les trois "
+"entrées décrites ci-dessous :"
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid "Then:"
+msgstr "Alors :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The most recent available version of the <literal>perl</literal> package "
+"will be installed, so long as that version's version number begins with "
+"\"<literal>&good-perl;</literal>\". If <emphasis>any</emphasis> &good-perl;"
+"* version of <literal>perl</literal> is available and the installed version "
+"is &bad-perl;*, then <literal>perl</literal> will be downgraded."
+msgstr ""
+"La version la plus récente du paquet <literal>perl</literal> sera installé "
+"pour autant que son numéro de version commence par <literal>&good-perl;</"
+"literal>. Si l'<emphasis>une</emphasis> des versions &good-perl;* existe et "
+"si la version installée est une version &bad-perl;*, il y aura un retour en "
+"arrière."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A version of any package other than <literal>perl</literal> that is "
+"available from the local system has priority over other versions, even "
+"versions belonging to the target release."
+msgstr ""
+"Les versions des paquets (autres que <literal>perl</literal>) disponibles "
+"dans le site local ont priorité sur les autres versions, même celles "
+"appartenant à la distribution par défaut."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A version of a package whose origin is not the local system but some other "
+"site listed in &sources-list; and which belongs to an <literal>unstable</"
+"literal> distribution is only installed if it is selected for installation "
+"and no version of the package is already installed."
+msgstr ""
+"La version d'un paquet dont l'origine n'est pas le site local mais un site "
+"Internet mentionné dans &sources-list; et qui appartient à une distribution "
+"<literal>unstable</literal>, ne sera installée que si aucune version du "
+"paquet n'est déjà installée."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Determination of Package Version and Distribution Properties"
+msgstr ""
+"Détermination de la version des paquets et des propriétés des distributions"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The locations listed in the &sources-list; file should provide "
+"<filename>Packages</filename> and <filename>Release</filename> files to "
+"describe the packages available at that location."
+msgstr ""
+"Chaque source indiquée dans le fichier &sources-list; doit fournir les "
+"fichiers <filename>Packages</filename> et <filename>Release</filename> qui "
+"décrivent les paquets disponibles à cet endroit."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The <filename>Packages</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable>/"
+"<replaceable>component</replaceable>/<replaceable>arch</replaceable></"
+"filename>: for example, <filename>.../dists/stable/main/binary-i386/"
+"Packages</filename>. It consists of a series of multi-line records, one for "
+"each package available in that directory. Only two lines in each record are "
+"relevant for setting APT priorities:"
+msgstr ""
+"Le fichier <filename>Packages</filename> se trouve normalement dans le "
+"répertoire <filename>.../dists/<replaceable>dist-name</replaceable>/"
+"<replaceable>component</replaceable>/<replaceable>arch</replaceable></"
+"filename>, par exemple, <filename>.../dists/stable/main/binary-i386/"
+"Packages</filename>. Il consiste en entrées composées de lignes, une pour "
+"chaque paquet disponible dans le répertoire. Seules deux lignes des entrées "
+"sont pertinentes pour la détermination des priorités :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Package:</literal> line"
+msgstr "la ligne <literal>Package:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "gives the package name"
+msgstr "donne le nom du paquet"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Version:</literal> line"
+msgstr "la ligne <literal>Version:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "gives the version number for the named package"
+msgstr "donne le numéro de version du paquet"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The <filename>Release</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable></filename>: for "
+"example, <filename>.../dists/stable/Release</filename>, or <filename>.../"
+"dists/&debian-stable-codename;/Release</filename>. It consists of a single "
+"multi-line record which applies to <emphasis>all</emphasis> of the packages "
+"in the directory tree below its parent. Unlike the <filename>Packages</"
+"filename> file, nearly all of the lines in a <filename>Release</filename> "
+"file are relevant for setting APT priorities:"
+msgstr ""
+"Le fichier <filename>Release</filename> se trouve normalement dans le "
+"répertoire <filename>.../dists/<replaceable>nom-distribution</replaceable></"
+"filename>, par exemple, <filename>.../dists/stable/Release</filename>, ou "
+"<filename>.../dists/&debian-stable-codename;/Release</filename>. Il "
+"consiste en une seule entrée composée de plusieurs lignes qui s'applique à "
+"<emphasis>tous</emphasis> les paquets situés dans les répertoires sous le "
+"répertoire parent. Contrairement au fichier <filename>Packages</filename>, "
+"presque toutes les lignes du fichier <filename>Release</filename> sont "
+"pertinentes pour déterminer les priorités :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line"
+msgstr "La ligne <literal>Archive:</literal> ou <literal>Suite:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the archive to which all the packages in the directory tree belong. "
+"For example, the line \"Archive: stable\" or \"Suite: stable\" specifies "
+"that all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file are in a <literal>stable</literal> "
+"archive. Specifying this value in the APT preferences file would require "
+"the line:"
+msgstr ""
+"nomme l'archive à laquelle appartiennent tous les paquets situés dans les "
+"répertoires. Par exemple, la ligne <literal>Archive: stable</literal> "
+"indique que tous les paquets dans les répertoires situés sous le répertoire "
+"parent du fichier <filename>Release</filename> appartiennent à l'archive "
+"<literal>stable</literal>. Indiquer cette valeur dans le fichier des "
+"préférences demanderait cette ligne :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release a=stable\n"
+msgstr "Pin: release a=stable\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Codename:</literal> line"
+msgstr "la ligne <literal>Codename:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the codename to which all the packages in the directory tree belong. "
+"For example, the line \"Codename: &debian-testing-codename;\" specifies that "
+"all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file belong to a version named <literal>&debian-"
+"testing-codename;</literal>. Specifying this value in the APT preferences "
+"file would require the line:"
+msgstr ""
+"indique le nom de code auquel appartiennent tous les paquets situés dans les "
+"répertoires. Par exemple, la ligne <literal>Codename: &debian-testing-"
+"codename;</literal> indique que tous les paquets dans les répertoires situés "
+"sous le répertoire parent du fichier <filename>Release</filename> "
+"appartiennent à la version portant le nom de code <literal>&debian-testing-"
+"codename;</literal>. Indiquer cette valeur dans le fichier des préférences "
+"demanderait cette ligne :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release n=&debian-testing-codename;\n"
+msgstr "Pin: release n=&debian-testing-codename;\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the release version. For example, the packages in the tree might "
+"belong to Debian release version &debian-stable-version;. Note that there "
+"is normally no version number for the <literal>testing</literal> and "
+"<literal>unstable</literal> distributions because they have not been "
+"released yet. Specifying this in the APT preferences file would require one "
+"of the following lines."
+msgstr ""
+"indique la version de la distribution. Par exemple, les paquets dans les "
+"répertoires peuvent appartenir à la distribution Debian version &debian-"
+"stable-version;. Il n'y a pas de numéro de version pour les distributions "
+"<literal>testing</literal> et <literal>unstable</literal> car elles n'ont "
+"pas encore été publiées. Indiquer cette valeur dans le fichier des "
+"préférences demanderait ces lignes :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+msgstr ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Component:</literal> line"
+msgstr "La ligne <literal>Component:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the licensing component associated with the packages in the directory "
+"tree of the <filename>Release</filename> file. For example, the line "
+"\"Component: main\" specifies that all the packages in the directory tree "
+"are from the <literal>main</literal> component, which entails that they are "
+"licensed under terms listed in the Debian Free Software Guidelines. "
+"Specifying this component in the APT preferences file would require the line:"
+msgstr ""
+"nomme un composant qui indique le type de licence associée aux paquets "
+"situés dans les répertoires sous le fichier <filename>Release</filename>. "
+"Par exemple, la ligne <literal>Component: main</literal> indique que tous "
+"les exemplaires dans les répertoires appartiennent au composant "
+"<literal>main</literal>, c'est-à-dire que leur licence est en accord avec "
+"les Directives Debian pour le logiciel libre. Indiquer ce composant dans le "
+"fichier des préférences demanderait cette ligne :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release c=main\n"
+msgstr "Pin: release c=main\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Origin:</literal> line"
+msgstr "La ligne <literal>Origin:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the originator of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is <literal>Debian</"
+"literal>. Specifying this origin in the APT preferences file would require "
+"the line:"
+msgstr ""
+"nomme l'origine des paquets situés dans les répertoires sous le fichier "
+"<filename>Release</filename>. En général, c'est <literal>Debian</literal>. "
+"Indiquer cette origine dans le fichier des préférences demanderait cette "
+"ligne :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release o=Debian\n"
+msgstr "Pin: release o=Debian\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Label:</literal> line"
+msgstr "La ligne <literal>Label:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the label of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is <literal>Debian</"
+"literal>. Specifying this label in the APT preferences file would require "
+"the line:"
+msgstr ""
+"indique une étiquette pour les paquets qui se trouvent dans les répertoires "
+"sous le fichier <filename>Release</filename>. En général, c'est "
+"<literal>Debian</literal>. Indiquer cette origine dans le fichier des "
+"préférences demanderait cette ligne :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release l=Debian\n"
+msgstr "Pin: release l=Debian\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"All of the <filename>Packages</filename> and <filename>Release</filename> "
+"files retrieved from locations listed in the &sources-list; file are stored "
+"in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
+"named by the variable <literal>Dir::State::Lists</literal> in the "
+"<filename>apt.conf</filename> file. For example, the file <filename>debian."
+"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
+"contains the <filename>Release</filename> file retrieved from the site "
+"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
+"architecture files from the <literal>contrib</literal> component of the "
+"<literal>unstable</literal> distribution."
+msgstr ""
+"Tous les fichiers <filename>Packages</filename> et <filename>Release</"
+"filename> récupérés dans des sources indiquées dans le fichier &sources-"
+"list; sont conservés dans le répertoire <filename>/var/lib/apt/lists</"
+"filename> ou dans le fichier spécifié par la variable <literal>Dir::State::"
+"Lists</literal> dans le fichier <filename>apt.conf</filename>. Par exemple, "
+"le fichier <filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"i386_Release</filename> contient le fichier <filename>Release</filename> du "
+"site <literal>debian.lcs.mit.edu</literal>, architecture <literal>binary-"
+"i386</literal> et composant <literal>contrib</literal> de la distribution "
+"<literal>unstable</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Optional Lines in an APT Preferences Record"
+msgstr "Lignes facultatives dans le fichier des préférences"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Each record in the APT preferences file can optionally begin with one or "
+"more lines beginning with the word <literal>Explanation:</literal>. This "
+"provides a place for comments."
+msgstr ""
+"Toute entrée du fichier des préférences peut commencer par une ou plusieurs "
+"lignes contenant le mot <literal>Explanation:</literal>. Cela permet des "
+"commentaires."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking Stable"
+msgstr "Méthode pour suivre Stable"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated\n"
+"Explanation: package versions other than those in the stable distro\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Explanation: Ne pas installer des exemplaires d'origine Debian\n"
+"Explanation: sauf ceux de la distribution stable\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"<literal>stable</literal> distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> "
+"distributions. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Le fichier des préférences suivant affecte une priorité plus haute que la "
+"priorité par défaut (500) à tous les exemplaires appartenant à la "
+"distribution <literal>stable</literal> et une priorité prohibitivement basse "
+"à tous les exemplaires appartenant à d'autres distributions <literal>Debian</"
+"literal>. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"apt-get install <replaceable>package-name</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+msgstr ""
+"apt-get install <replaceable>paquet</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>stable</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+"Avec le fichier des préférences ci-dessus et un fichier &sources-list; "
+"adéquat, les commandes suivantes utiliseront les versions les plus récentes "
+"de <literal>stable</literal> pour faire la mise à niveau : <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/testing\n"
+msgstr "apt-get install <replaceable>paquet</replaceable>/testing\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>testing</literal> distribution; the package "
+"will not be upgraded again unless this command is given again. <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"La commande suivante utilisera la version la plus récente de la distribution "
+"<literal>testing</literal> pour mettre à niveau le paquet spécifié ; "
+"cependant les mises à niveau ultérieures du paquet ne se feront pas à moins "
+"de relancer la commande. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking Testing or Unstable"
+msgstr "Méthode pour suivre Testing ou Unstable"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a high priority "
+"to package versions from the <literal>testing</literal> distribution, a "
+"lower priority to package versions from the <literal>unstable</literal> "
+"distribution, and a prohibitively low priority to package versions from "
+"other <literal>Debian</literal> distributions. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Le fichier des préférences suivant affecte une priorité haute aux versions "
+"des paquets appartenant à la distribution <literal>testing</literal>, une "
+"priorité moindre aux versions appartenant à la distribution "
+"<literal>unstable</literal> et une priorité prohibitivement basse aux "
+"versions appartenant à d'autres distributions <literal>Debian</literal>. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>testing</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+"Avec un fichier &sources-list; approprié et le fichier des préférences ci-"
+"dessus, les commandes suivantes utiliseront les versions les plus récentes "
+"de <literal>testing</literal> pour faire la mise à niveau : <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/unstable\n"
+msgstr "apt-get install <replaceable>paquet</replaceable>/unstable\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>unstable</literal> distribution. "
+"Thereafter, <command>apt-get upgrade</command> will upgrade the package to "
+"the most recent <literal>testing</literal> version if that is more recent "
+"than the installed version, otherwise, to the most recent <literal>unstable</"
+"literal> version if that is more recent than the installed version. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"La commande suivante utilisera la version la plus récente de la distribution "
+"<literal>unstable</literal> pour mettre à niveau le paquet spécifié ; Par la "
+"suite, <command>apt-get upgrade</command> mettra le paquet à jour avec la "
+"plus récente version dans <literal>testing</literal> si elle est plus "
+"récente que la version installée ou avec la plus récente version dans "
+"<literal>unstable</literal> si elle est plus récente que la version "
+"installée. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking the evolution of a codename release"
+msgstr "Suivre l'évolution d'une version par son nom de code"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated package versions\n"
+"Explanation: other than those in the distribution codenamed with &debian-testing-codename; or sid\n"
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+"\n"
+"Explanation: Debian unstable is always codenamed with sid\n"
+"Package: *\n"
+"Pin: release n=sid\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Explanation: Ne pas installer des exemplaires d'origine Debian\n"
+"Explanation: sauf ceux de la distribution &debian-testing-codename; ou sid\n"
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+"\n"
+"Explanation: Debian unstable porte toujours le nom sid\n"
+"Package: *\n"
+"Pin: release n=sid\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"specified codename of a distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> distributions, "
+"codenames and archives. Note that with this APT preference APT will follow "
+"the migration of a release from the archive <literal>testing</literal> to "
+"<literal>stable</literal> and later <literal>oldstable</literal>. If you "
+"want to follow for example the progress in <literal>testing</literal> "
+"notwithstanding the codename changes you should use the example "
+"configurations above. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Le fichier des préférences suivant affecte une priorité plus haute que la "
+"priorité par défaut (500) à tous les exemplaires appartenant à la version "
+"portant le nom de code indiqué et une priorité prohibitivement basse à tous "
+"les exemplaires appartenant à d'autres distributions <literal>Debian</"
+"literal>. Veuillez noter qu'avec ce fichier de préférences, APT suivra la "
+"transformation d'une version <literal>testing</literal> en <literal>stable</"
+"literal> puis <literal>oldstable</literal>. Si, au contraire, vous souhaitez "
+"suivre la version <literal>testing</literal>, vous devriez utiliser un des "
+"exemples précédents. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest version(s) in "
+"the release codenamed with <literal>&debian-testing-codename;</literal>. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Avec le fichier des préférences ci-dessus et un fichier &sources-list; "
+"adéquat, les commandes suivantes utiliseront les versions les plus récentes "
+"de <literal>&debian-testing-codename;</literal> pour faire la mise à "
+"niveau : <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/sid\n"
+msgstr "apt-get install <replaceable>paquet</replaceable>/sid\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>sid</literal> distribution. Thereafter, "
+"<command>apt-get upgrade</command> will upgrade the package to the most "
+"recent <literal>&debian-testing-codename;</literal> version if that is more "
+"recent than the installed version, otherwise, to the most recent "
+"<literal>sid</literal> version if that is more recent than the installed "
+"version. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"La commande suivante utilisera la version la plus récente de la distribution "
+"<literal>sid</literal> pour mettre à niveau le paquet spécifié ; Par la "
+"suite, <command>apt-get upgrade</command> mettra le paquet à jour avec la "
+"plus récente version dans <literal>&debian-testing-codename;</literal> si "
+"elle est plus récente que la version installée ou avec la plus récente "
+"version dans <literal>sid</literal> si elle est plus récente que la version "
+"installée. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: sources.list.5.xml
+msgid "List of configured APT data sources"
+msgstr "Liste des sources de données APT configurées"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The source list <filename>/etc/apt/sources.list</filename> and the files "
+"contained in <filename>/etc/apt/sources.list.d/</filename> are designed to "
+"support any number of active sources and a variety of source media. The "
+"files list one source per line (one-line style) or contain multiline stanzas "
+"defining one or more sources per stanza (deb822 style), with the most "
+"preferred source listed first (in case a single version is available from "
+"more than one source). The information available from the configured sources "
+"is acquired by <command>apt-get update</command> (or by an equivalent "
+"command from another APT front-end)."
+msgstr ""
+"Le fichier de liste de sources <filename>/etc/apt/sources.list</filename> et "
+"les fichiers contenus dans <filename>/etc/apt/sources.list.d/</filename> "
+"sont conçus pour pouvoir gérer un nombre quelconque de sources actives et de "
+"médias. Le fichier donne une source par ligne (One-Line style) ou fournit "
+"des paragraphes multilignes définissant une ou plusieurs sources par "
+"paragraphe (style deb822), avec les sources prioritaires en premier (dans le "
+"cas où il y a une seule version disponible à partir de plus d'une source). "
+"L'information relative aux sources configurées est récupérée par la commande "
+"<command>apt-get update</command> (ou par une commande équivalente avec une "
+"autre interface à APT)."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "sources.list.d"
+msgstr "sources.list.d"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The <filename>/etc/apt/sources.list.d</filename> directory provides a way to "
+"add sources.list entries in separate files. Two different file formats are "
+"allowed as described in the next two sections. Filenames need to have "
+"either the extension <filename>.list</filename> or <filename>.sources</"
+"filename> depending on the contained format. The filenames may only contain "
+"letters (a-z and A-Z), digits (0-9), underscore (_), hyphen (-) and period "
+"(.) characters. Otherwise APT will print a notice that it has ignored a "
+"file, unless that file matches a pattern in the <literal>Dir::Ignore-Files-"
+"Silently</literal> configuration list - in which case it will be silently "
+"ignored."
+msgstr ""
+"Le répertoire <filename>/etc/apt/sources.list.d</filename> permet de "
+"spécifier des sources de paquets dans des fichiers distincts. Deux formats "
+"de fichiers différents sont permis comme cela est décrit dans les deux "
+"sections suivantes. Les noms de fichier doivent se terminer par <filename>."
+"list</filename> ou par <filename>.sources</filename> selon le format fourni. "
+"Ils ne peuvent contenir que des lettres (a-z et A-Z), des chiffres (0-9), "
+"des caractères de soulignement (_), des tirets (-) et des points (.). Dans "
+"le cas contraire, APT affichera un avertissement indiquant qu'il a ignoré un "
+"fichier si celui-ci ne correspond par à un motif défini dans <literal>Dir::"
+"Ignore-Files-Silently</literal> (les fichiers correspondant à cette variable "
+"de configuration étant, eux, ignorés silencieusement)."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "One-Line-Style Format"
+msgstr "Format One-Line-Style"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Files in this format have the extension <filename>.list</filename>. Each "
+"line specifying a source starts with a type (e.g. <literal>deb-src</"
+"literal>) followed by options and arguments for this type. Individual "
+"entries cannot be continued onto a following line. Empty lines are ignored, "
+"and a <literal>#</literal> character anywhere on a line marks the remainder "
+"of that line as a comment. Consequently an entry can be disabled by "
+"commenting out the entire line. If options should be provided they are "
+"separated by spaces and all of them together are enclosed by square brackets "
+"(<literal>[]</literal>) included in the line after the type separated from "
+"it with a space. If an option allows multiple values these are separated "
+"from each other with a comma (<literal>,</literal>). An option name is "
+"separated from its value(s) by an equals sign (<literal>=</literal>). "
+"Multivalue options also have <literal>-=</literal> and <literal>+=</literal> "
+"as separators, which instead of replacing the default with the given "
+"value(s) modify the default value(s) to remove or include the given values."
+msgstr ""
+"Les entrées individuelles ne peuvent pas se poursuivre sur la ligne "
+"suivante. Les lignes vides sont ignorées et un caractère <literal>#</"
+"literal> n'importe où sur une ligne signale que le reste de la ligne est un "
+"commentaire. Par conséquent, une entrée peut être désactivée en commentant "
+"la totalité de la ligne. Si plusieurs options doivent être fournies, elles "
+"sont séparées par des espaces et sont entourées toutes ensembles par des "
+"crochets (<literal>[]</literal>) inclus sur la ligne après le type séparé "
+"par un espace. Si une option permet plusieurs valeurs, elles sont séparées "
+"les unes des autres par une virgule (<literal>,</literal>). Un nom d'option "
+"est séparé de ses options par une signe égal (<literal>=</literal>). Des "
+"options à plusieurs valeurs disposent aussi des séparateurs <literal>-=</"
+"literal> et <literal>+=</literal>, qui, au lieu de remplacer la valeur par "
+"défaut par la ou les valeurs données, modifient la ou les valeurs par défaut "
+"pour supprimer ou inclure les valeurs données."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This is the traditional format and supported by all apt versions. Note that "
+"not all options as described below are supported by all apt versions. Note "
+"also that some older applications parsing this format on their own might not "
+"expect to encounter options as they were uncommon before the introduction of "
+"multi-architecture support."
+msgstr ""
+"Il s'agit du format traditionnel, géré par toute les version de APT. "
+"Veuillez noter que toutes les options décrites plus bas ne sont pas prises "
+"en charge par toutes les versions d'APT. Notez aussi que certaine des plus "
+"anciennes applications qui analysent ce format elles-mêmes ne s'attendent "
+"pas à rencontrer des options qui étaient rares avant l'introduction de la "
+"prise en charge multi-architecture."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "deb822-Style Format"
+msgstr "Format deb822-Style"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Files in this format have the extension <filename>.sources</filename>. The "
+"format is similar in syntax to other files used by Debian and its "
+"derivatives, such as the metadata files that apt will download from the "
+"configured sources or the <filename>debian/control</filename> file in a "
+"Debian source package. Individual entries are separated by an empty line; "
+"additional empty lines are ignored, and a <literal>#</literal> character at "
+"the start of the line marks the entire line as a comment. An entry can hence "
+"be disabled by commenting out each line belonging to the stanza, but it is "
+"usually easier to add the field \"Enabled: no\" to the stanza to disable the "
+"entry. Removing the field or setting it to yes reenables it. Options have "
+"the same syntax as every other field: A fieldname separated by a colon "
+"(<literal>:</literal>) and optionally spaces from its value(s). Note "
+"especially that multiple values are separated by spaces, not by commas as in "
+"the one-line format. Multivalue fields like <literal>Architectures</literal> "
+"also have <literal>Architectures-Add</literal> and <literal>Architectures-"
+"Remove</literal> to modify the default value rather than replacing it."
+msgstr ""
+"Les fichiers dans ce format possèdent l'extension <filename>.sources</"
+"filename>. La syntaxe du format est similaire à celle des autres fichiers "
+"utilisés par Debian et ses dérivés, comme les fichiers de métadonnées qu'APT "
+"télécharge des sources configurées ou le fichier <filename>debian/control</"
+"filename> d'un paquet source de Debian. Les entrées individuelles sont "
+"séparées par une ligne vide ; les lignes vides supplémentaires sont ignorées "
+"et un caractère <literal>#</literal> en début de ligne signale la ligne "
+"comme un commentaire. Une entrée, par conséquent, peut être désactivée en "
+"commentant chaque ligne appartenant au paragraphe, mais il est "
+"habituellement plus facile d'ajouter le champ « Enabled: no » au paragraphe "
+"pour désactiver l'entrée. Retirer ce champ ou le définir à « yes » le "
+"réactive. Les options ont la même syntaxe que tous les autres champs : un "
+"nom de champ séparé par le caracère deux-points (<literal>:</literal>) et "
+"éventuellement des valeurs séparées par des espaces. Veuillez noter "
+"particulièrement que des valeurs multiples sont séparées par des espaces et "
+"non par des virgules comme dans le format « One-Line ». Les champs "
+"multivaleurs comme <literal>Architectures</literal> disposent aussi des "
+"options <literal>Architectures-Add</literal> et <literal>Architectures-"
+"Remove</literal> pour modifier la valeur par défaut plutôt que de la "
+"remplacer."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This is a new format supported by apt itself since version 1.1. Previous "
+"versions ignore such files with a notice message as described earlier. It "
+"is intended to make this format gradually the default format, deprecating "
+"the previously described one-line-style format, as it is easier to create, "
+"extend and modify for humans and machines alike especially if a lot of "
+"sources and/or options are involved. Developers who are working with and/or "
+"parsing apt sources are highly encouraged to add support for this format and "
+"to contact the APT team to coordinate and share this work. Users can freely "
+"adopt this format already, but may encounter problems with software not "
+"supporting the format yet."
+msgstr ""
+"Il s'agit d'un nouveau format pris en charge par APT lui-même depuis la "
+"version 1.1. Les versions précédentes ignorent ce type de fichier avec un "
+"message d'avertissement tel que décrit précédemment. L'objectif est de faire "
+"de ce format le format par défaut, et de rendre obsolète le format « One-"
+"Line-Style » décrit plus haut, parce qu'il est plus facile à créer, à "
+"étendre et à modifier pour les humains comme pour les machines, surtout s'il "
+"inclut beaucoup de sources et/ou d'options. Les développeurs qui travaillent "
+"avec les sources apt ou les analysent sont fortement encouragés à ajouter la "
+"prise en charge de ce format et à prendre contact avec l'équipe APT pour "
+"coordonner et partager ce travail. Les utilisateurs sont libres d'adopter "
+"déjà ce format, mais peuvent se confronter à des problèmes avec les "
+"logiciels qui ne le gèrent pas encore."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "The deb and deb-src Types: General Format"
+msgstr "Les types deb et deb-src : format général"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The <literal>deb</literal> type references a typical two-level Debian "
+"archive, <filename>distribution/component</filename>. The "
+"<literal>distribution</literal> is generally a suite name like "
+"<literal>stable</literal> or <literal>testing</literal> or a codename like "
+"<literal>&debian-stable-codename;</literal> or <literal>&debian-testing-"
+"codename;</literal> while component is one of <literal>main</literal>, "
+"<literal>contrib</literal> or <literal>non-free</literal>. The <literal>deb-"
+"src</literal> type references a Debian distribution's source code in the "
+"same form as the <literal>deb</literal> type. A <literal>deb-src</literal> "
+"line is required to fetch source indexes."
+msgstr ""
+"Le type <literal>deb</literal> décrit une archive Debian classique à deux "
+"niveaux, <filename>distribution/composant</filename>. <literal>distribution</"
+"literal> peut prendre l'une des valeurs suivantes : un nom de suite tel que "
+"<literal>stable</literal> ou <literal>testing</literal> ou bien un nom de "
+"code comme <literal>&debian-stable-codename;</literal> ou <literal>&debian-"
+"testing-codename;</literal>, alors que composant prend les valeurs : "
+"<literal>main</literal>, <literal>contrib</literal> ou <literal>non-free</"
+"literal>. Le type <literal>deb-src</literal> décrit une archive de "
+"distribution de code source pour une distribution Debian dans le même format "
+"que le type <literal>deb</literal>. Une ligne <literal>deb-src</literal> est "
+"nécessaire pour récupérer les index des sources."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The format for two one-line-style entries using the <literal>deb</literal> "
+"and <literal>deb-src</literal> types is:"
+msgstr ""
+"Le format de deux entrées du genre « One-Line-Style » utilisant les types "
+"<literal>deb</literal> et <literal>deb-src</literal> est :"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]\n"
+"deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]"
+msgstr ""
+"deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]\n"
+"deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+" Types: deb deb-src\n"
+" URIs: uri\n"
+" Suites: suite\n"
+" Components: [component1] [component2] [...]\n"
+" option1: value1\n"
+" option2: value2\n"
+" "
+msgstr ""
+" Types: deb deb-src\n"
+" URIs: uri\n"
+" Suites: suite\n"
+" Components: [component1] [component2] [...]\n"
+" option1: value1\n"
+" option2: value2\n"
+" "
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Alternatively the equivalent entry in deb822 style looks like this: "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
+msgstr ""
+"Autrement, l'entrée équivalente de style deb822 ressemble à ceci : "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The URI for the <literal>deb</literal> type must specify the base of the "
+"Debian distribution, from which APT will find the information it needs. "
+"<literal>suite</literal> can specify an exact path, in which case the "
+"components must be omitted and <literal>suite</literal> must end with a "
+"slash (<literal>/</literal>). This is useful for the case when only a "
+"particular sub-directory of the archive denoted by the URI is of interest. "
+"If <literal>suite</literal> does not specify an exact path, at least one "
+"<literal>component</literal> must be present."
+msgstr ""
+"L'URI de type <literal>deb</literal> doit indiquer la base de la "
+"distribution Debian dans laquelle APT trouvera les informations dont il a "
+"besoin. <literal>suite</literal> peut spécifier le chemin exact : dans ce "
+"cas, on doit omettre les composants et <literal>suite</literal> doit se "
+"terminer par une barre oblique (<literal>/</literal>). C'est utile quand "
+"seul un sous-répertoire particulier de l'archive décrite par cet URI est "
+"intéressant. Quand <literal>suite</literal> n'indique pas un chemin exact, "
+"un <literal>composant</literal> au moins doit être présent."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"<literal>suite</literal> may also contain a variable, <literal>$(ARCH)</"
+"literal> which expands to the Debian architecture (such as <literal>amd64</"
+"literal> or <literal>armel</literal>) used on the system. This permits "
+"architecture-independent <filename>sources.list</filename> files to be used. "
+"In general this is only of interest when specifying an exact path; "
+"<literal>APT</literal> will automatically generate a URI with the current "
+"architecture otherwise."
+msgstr ""
+"<literal>suite</literal> peut aussi contenir une variable <literal>$(ARCH)</"
+"literal>, qui sera remplacée par l'architecture Debian (comme "
+"<literal>amd64</literal> ou <literal>armel</literal>) sur laquelle s'exécute "
+"le système. On peut ainsi utiliser un fichier <filename>sources.list</"
+"filename> qui ne dépend pas d'une architecture. En général, ce n'est "
+"intéressant que si l'on indique un chemin exact ; sinon <literal>APT</"
+"literal> crée automatiquement un URI en fonction de l'architecture effective."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Especially in the one-line-style format since only one distribution can be "
+"specified per line it may be necessary to have multiple lines for the same "
+"URI, if a subset of all available distributions or components at that "
+"location is desired. APT will sort the URI list after it has generated a "
+"complete set internally, and will collapse multiple references to the same "
+"Internet host, for instance, into a single connection, so that it does not "
+"inefficiently establish a connection, close it, do something else, and then "
+"re-establish a connection to that same host. APT also parallelizes "
+"connections to different hosts to more effectively deal with sites with low "
+"bandwidth."
+msgstr ""
+"Particulièrement lorsqu'on utilise le format « One-Line-Style », puisqu'on "
+"ne peut indiquer qu'une seule distribution par ligne, il peut être "
+"nécessaire de disposer le même URI sur plusieurs lignes quand on veut "
+"accéder à un sous-ensemble des distributions ou composants disponibles à "
+"cette adresse. APT trie les URI après avoir crée pour lui-même la liste "
+"complète ; il regroupe les références multiples au même hôte Internet en vue "
+"d'une connexion unique et il évite ainsi, par exemple, d'établir une "
+"connexion FTP, de la fermer, faire autre chose, puis d'établir encore cette "
+"connexion. Cette fonctionnalité permet l'accès à des sites FTP surchargés "
+"qui limitent le nombre de connexions simultanées pour les utilisateurs "
+"anonymes. APT parallélise aussi les connexions à différents hôtes pour tirer "
+"plus efficacement parti des sites à faible bande passante."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"It is important to list sources in order of preference, with the most "
+"preferred source listed first. Typically this will result in sorting by "
+"speed from fastest to slowest (CD-ROM followed by hosts on a local network, "
+"followed by distant Internet hosts, for example)."
+msgstr ""
+"Il est important d'indiquer les sources par ordre de préférence, la source "
+"principale apparaissant en premier. Un tri est fait, de la plus rapide à la "
+"plus lente ; par exemple, un CD suivi par les hôtes d'un réseau local, puis "
+"les hôtes distants."
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "&sourceslist-list-format;"
+msgstr "&sourceslist-list-format;"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "&sourceslist-sources-format;"
+msgstr "&sourceslist-sources-format;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"As an example, the sources for your distribution could look like this in one-"
+"line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or like "
+"this in deb822 style format: <placeholder type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+"À titre d'exemple, les sources de votre distribution au format « One-Line-"
+"Style » pourraient ressembler à ceci : <placeholder type=\"literallayout\" "
+"id=\"0\"/> ou à ceci au format de style deb822 : <placeholder type="
+"\"literallayout\" id=\"1\"/>"
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "The deb and deb-src types: Options"
+msgstr "Les types deb et deb-src : options"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Each source entry can have options specified to modify which source is "
+"accessed and how data is acquired from it. Format, syntax and names of the "
+"options vary between the one-line-style and deb822-style formats as "
+"described, but they both have the same options available. For simplicity we "
+"list the deb822 fieldname and provide the one-line name in brackets. "
+"Remember that besides setting multivalue options explicitly, there is also "
+"the option to modify them based on the default, but we aren't listing those "
+"names explicitly here. Unsupported options are silently ignored by all APT "
+"versions."
+msgstr ""
+"Chaque entrée de source peut avoir des options spécifiées pour modifier la "
+"source à laquelle accéder et comment les données y sont récupérées. Le "
+"format, la syntaxe et les noms des options peuvent être différents entre le "
+"format « One-Line-Style » et le format de style deb822, mais les mêmes "
+"options sont disponibles dans les deux formats. Pour simplifier, nous "
+"listons les noms de champ avec deb822 et fournissons le nom « One-Line » "
+"entre parenthèses. Il faut se souvenir que en plus du réglage explicite des "
+"options multi-valeurs, il y a aussi l'option de les modifier en se basant "
+"sur les valeurs par défaut, mais nous ne listons pas ces noms explicitement "
+"ici. Les options non prises en charge sont ignorées par toutes les version "
+"d'APT."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Architectures</option> (<option>arch</option>) is a multivalue "
+"option defining for which architectures information should be downloaded. If "
+"this option isn't set the default is all architectures as defined by the "
+"<option>APT::Architectures</option> config option."
+msgstr ""
+"<option>Architectures</option> (<option>arch</option>) est une option "
+"multivaleur pour définir les architectures pour lesquelles l'information "
+"doit être téléchargée. Si cette option n'est pas utilisée, l'option par "
+"défaut est toutes les architectures définies par l'option de configuration "
+"<literal>APT::Architectures</literal>."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Languages</option> (<option>lang</option>) is a multivalue option "
+"defining for which languages information such as translated package "
+"descriptions should be downloaded. If this option isn't set the default is "
+"all languages as defined by the <option>Acquire::Languages</option> config "
+"option."
+msgstr ""
+"<option>Languages</option> (<option>lang</option>) est une option "
+"multivaleur pour définir les langues pour lesquelles les informations, "
+"telles que les descriptions de paquet traduites, doivent être téléchargées. "
+"Si cette option n'est pas utilisée, l'option par défaut est toutes les "
+"langues définies par l'option de configuration <option>Acquire::Languages</"
+"option>."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Targets</option> (<option>target</option>) is a multivalue option "
+"defining which download targets apt will try to acquire from this source. If "
+"not specified, the default set is defined by the <option>Acquire::"
+"IndexTargets</option> configuration scope (targets are specified by their "
+"name in the <literal>Created-By</literal> field). Additionally, targets can "
+"be enabled or disabled by using the <literal>Identifier</literal> field as "
+"an option with a boolean value instead of using this multivalue option."
+msgstr ""
+"<option>Targets</option> (<option>target</option>) est une option "
+"multivaleur pour définir les cibles qu'apt essaiera d’acquérir à partir de "
+"cette source. Si cette option n'est pas spécifiée, la configuration par "
+"défaut est définie par le champ d'action de configuration <option>Acquire::"
+"IndexTargets</option> (les cibles sont définies par leur nom dans le champ "
+"<literal>Created-By</literal>). De plus, les cibles peuvent être activées ou "
+"désactivées en utilisant le champ <literal>Identifier</literal> comme option "
+"avec une valeur booléenne plutôt que d'utiliser cette option multivaleur."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>PDiffs</option> (<option>pdiffs</option>) is a yes/no value which "
+"controls if APT should try to use PDiffs to update old indexes instead of "
+"downloading the new indexes entirely. The value of this option is ignored if "
+"the repository doesn't announce the availability of PDiffs. Defaults to the "
+"value of the option with the same name for a specific index file defined in "
+"the <option>Acquire::IndexTargets</option> scope, which itself defaults to "
+"the value of configuration option <option>Acquire::PDiffs</option> which "
+"defaults to <literal>yes</literal>."
+msgstr ""
+"<option>PDiffs</option> (<option>pdiffs</option>) est une valeur yes/no qui "
+"contrôle si APT doit essayer d'utiliser PDiffs pour mettre à jour des index "
+"anciens plutôt que de télécharger les nouveaux index en totalité. La valeur "
+"de cette option est ignorée si le dépôt n'annonce pas la disponibilité de "
+"PDiffs. Elle a, par défaut, la valeur de l'option du même nom pour un "
+"fichier particulier défini dans le champ d'action <option>Acquire::"
+"IndexTargets</option>, qui prend lui-même par défaut la valeur de l'option "
+"de configuration <option>Acquire::PDiffs</option>, dont la valeur par défaut "
+"est <literal>yes</literal>."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>By-Hash</option> (<option>by-hash</option>) can have the value "
+"<literal>yes</literal>, <literal>no</literal> or <literal>force</literal> "
+"and controls if APT should try to acquire indexes via a URI constructed from "
+"a hashsum of the expected file instead of using the well-known stable "
+"filename of the index. Using this can avoid hashsum mismatches, but requires "
+"a supporting mirror. A <literal>yes</literal> or <literal>no</literal> value "
+"activates/disables the use of this feature if this source indicates support "
+"for it, while <literal>force</literal> will enable the feature regardless of "
+"what the source indicates. Defaults to the value of the option of the same "
+"name for a specific index file defined in the <option>Acquire::IndexTargets</"
+"option> scope, which itself defaults to the value of configuration option "
+"<option>Acquire::By-Hash</option> which defaults to <literal>yes</literal>."
+msgstr ""
+"<option>By-Hash</option> (<option>by-hash</option>)peut avoir la valeur "
+"<literal>yes</literal>, <literal>no</literal> ou <literal>force</literal> et "
+"contrôle si APT doit essayer d’acquérir des index grâce à un URI construit à "
+"partir de la somme de hachage du fichier attendu plutôt que d'utiliser le "
+"nom de fichier de stable bien connu de l'index. Son utilisation peut éviter "
+"des décalages de somme de hachage, mais nécessite un miroir de prise en "
+"charge. Une valeur <literal>yes</literal> ou <literal>no</literal> active ou "
+"désactive l'utilisation de cette fonctionnalité si cette source indique sa "
+"prise en charge, tandis que <literal>force</literal> activera la "
+"fonctionnalité quel que soit ce que la source indique. Elle a, par défaut, "
+"la valeur de l'option du même nom pour un fichier particulier défini dans le "
+"champ d'action <option>Acquire::IndexTargets</option>, qui prend lui-même "
+"par défaut la valeur de l'option de configuration <option>Acquire::By-Hash</"
+"option>, dont la valeur par défaut est <literal>yes</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Furthermore, there are options which if set affect <emphasis>all</emphasis> "
+"sources with the same URI and Suite, so they have to be set on all such "
+"entries and can not be varied between different components. APT will try to "
+"detect and error out on such anomalies."
+msgstr ""
+"Par ailleurs, si certaines options sont définies, elles affectent "
+"<emphasis>toutes</emphasis> les sources avec les mêmes URI et Suite, et donc "
+"doivent être définies sur toutes ces entrées et ne peuvent être modifiées "
+"entre les différents composants. APT essaiera de détecter et provoquera une "
+"erreur avec de telles anomalies."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Allow-Insecure</option> (<option>allow-insecure</option>), "
+"<option>Allow-Weak</option> (<option>allow-weak</option>) and <option>Allow-"
+"Downgrade-To-Insecure</option> (<option>allow-downgrade-to-insecure</"
+"option>) are boolean values which all default to <literal>no</literal>. If "
+"set to <literal>yes</literal> they circumvent parts of &apt-secure; and "
+"should therefore not be used lightly!"
+msgstr ""
+"<option>Allow-Insecure</option> (<option>allow-insecure</option>), "
+"<option>Allow-Weak</option> (<option>allow-weak</option>) et <option>Allow-"
+"Downgrade-To-Insecure</option> (<option>allow-downgrade-to-insecure</"
+"option>) sont des valeurs booléennes dont la valeur par défaut est "
+"<literal>no</literal>. Si elles sont définies à <literal>yes</literal>, "
+"elles contournent certains éléments d'&apt-secure; et par conséquent ne "
+"devraient pas utilisées à la légère."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Trusted</option> (<option>trusted</option>) is a tri-state value "
+"which defaults to APT deciding if a source is considered trusted or if "
+"warnings should be raised before e.g. packages are installed from this "
+"source. This option can be used to override that decision. The value "
+"<literal>yes</literal> tells APT always to consider this source as trusted, "
+"even if it doesn't pass authentication checks. It disables parts of &apt-"
+"secure;, and should therefore only be used in a local and trusted context "
+"(if at all) as otherwise security is breached. The value <literal>no</"
+"literal> does the opposite, causing the source to be handled as untrusted "
+"even if the authentication checks passed successfully. The default value "
+"can't be set explicitly."
+msgstr ""
+"<option>Trusted</option> (<option>trusted</option>) comporte trois valeurs "
+"d'état qui définissent par défaut si APT décide de considérer une source "
+"comme sûre ou doit lancer un avertissement avant qu'un paquet soit, par "
+"exemple, installé à partir de cette source. Cette option peut être utilisée "
+"pour outrepasser cette décision. La valeur <literal>yes</literal> dit à APT "
+"de considérer cette source comme sûre, même si elle échoue au test "
+"d'authentification. Elle désactive des éléments d'&apt-secure; et elle ne "
+"devrait être utilisée que dans un contexte local et sécurisé si possible, "
+"parce qu'autrement elle ouvre une brèche dans la sécurité. La valeur "
+"<literal>no</literal> fait le contraire et fait que la source est traitée "
+"comme non sûre, même si les tests d'authentification sont réussis. La valeur "
+"par défaut ne peut pas être définie explicitement."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Signed-By</option> (<option>signed-by</option>) is either an "
+"absolute path to a keyring file (has to be accessible and readable for the "
+"<literal>_apt</literal> user, so ensure everyone has read-permissions on the "
+"file) or one or more fingerprints of keys either in the <filename>trusted."
+"gpg</filename> keyring or in the keyrings in the <filename>trusted.gpg.d/</"
+"filename> directory (see <command>apt-key fingerprint</command>). If the "
+"option is set, only the key(s) in this keyring or only the keys with these "
+"fingerprints are used for the &apt-secure; verification of this repository. "
+"Defaults to the value of the option with the same name if set in the "
+"previously acquired <filename>Release</filename> file. Otherwise all keys "
+"in the trusted keyrings are considered valid signers for this repository."
+msgstr ""
+"<option>Signed-By</option> (<option>signed-by</option>) est soit un chemin "
+"absolu vers un fichier de trousseau de clés (qui doit être accessible en "
+"lecture pour l'utilisateur <literal>_apt</literal>, et donc, il faut "
+"s'assurer que tout le monde a le droit de lecture sur le fichier) ou une ou "
+"plusieurs empreintes de clés situées soit dans le trousseau "
+"<filename>trusted.gpg</filename>, soit dans les trousseaux du répertoire "
+"<filename>trusted.gpg.d/</filename> (voir <command>apt-key fingerprint</"
+"command>). Si cette option est définie, seule la ou les clés dans ce "
+"trousseau, ou seules les clés avec ces empreintes sont utilisées pour la "
+"vérification du répertoire par &apt-secure;. Elle possède la valeur par "
+"défaut de l'option du même nom si elle a été définie dans le fichier "
+"<filename>Release</filename> récupéré auparavant. Autrement, toutes les clés "
+"des trousseaux de confiance sont considérées comme des signatures valables "
+"pour ce dépôt."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Check-Valid-Until</option> (<option>check-valid-until</option>) is "
+"a yes/no value which controls if APT should try to detect replay attacks. A "
+"repository creator can declare a time until which the data provided in the "
+"repository should be considered valid, and if this time is reached, but no "
+"new data is provided, the data is considered expired and an error is "
+"raised. Besides increasing security, as a malicious attacker can't send old "
+"data forever to prevent a user from upgrading to a new version, this also "
+"helps users identify mirrors which are no longer updated. However, some "
+"repositories such as historic archives are not updated any more by design, "
+"so this check can be disabled by setting this option to <literal>no</"
+"literal>. Defaults to the value of configuration option <option>Acquire::"
+"Check-Valid-Until</option> which itself defaults to <literal>yes</literal>."
+msgstr ""
+"<option>Check-Valid-Until</option> (<option>check-valid-until</option>) est "
+"une valeur yes/no qui détermine si APT doit tenter de détecter les attaques "
+"par replay. Un créateur de dépôt peut déclarer une période pendant laquelle "
+"les données fournies par le dépôt peuvent être considérées comme valables, "
+"une fois ce délai échu, et si les données n'ont pas été fournies, elles sont "
+"considérées comme expirées, et un message d'erreur est envoyé. En plus "
+"d'accroître la sécurité, puisqu'un attaquant malveillant ne peut plus "
+"envoyer des données anciennes pour empêcher un utilisateur de mettre à "
+"niveau vers une nouvelle version, elle facilite l'identification de miroirs "
+"qui ne sont plus mis à jour. Néanmoins, certains dépôts, comme les archives "
+"historiques ne sont plus mis à jour à dessein, aussi cette vérification peut "
+"être désactivée en réglant cette option à <literal>no</literal>. Elle "
+"possède la valeur par défaut de l'option <option>Acquire::Check-Valid-Until</"
+"option> qui elle-même possède la valeur <literal>yes</literal> par défaut."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Valid-Until-Min</option> (<option>valid-until-min</option>) and "
+"<option>Valid-Until-Max</option> (<option>valid-until-max</option>) can be "
+"used to raise or lower the time period in seconds in which the data from "
+"this repository is considered valid. -Max can be especially useful if the "
+"repository provides no Valid-Until field on its Release file to set your own "
+"value, while -Min can be used to increase the valid time on seldom updated "
+"(local) mirrors of a more frequently updated but less accessible archive "
+"(which is in the sources.list as well) instead of disabling the check "
+"entirely. Default to the value of the configuration options "
+"<option>Acquire::Min-ValidTime</option> and <option>Acquire::Max-ValidTime</"
+"option> which are both unset by default."
+msgstr ""
+"<option>Valid-Until-Min</option> (<option>valid-until-min</option>) et "
+"<option>Valid-Until-Max</option> (<option>valid-until-max</option>) peuvent "
+"être utilisées pour augmenter ou diminuer la durée, en secondes pendant "
+"laquelle les données de ce dépôt sont considérées comme valables. -Max peut "
+"être particulièrement utile pour définir une valeur propre si le dépôt ne "
+"fournit pas de champ Valid-Until dans son fichier Release, tandis que -Min "
+"peut être utilisé pour augmenter la durée de validité sur des miroirs "
+"(locaux), rarement mis à jour, d'une archive plus fréquemment mise à jour "
+"mais moins accessible (qui est aussi dans le sources.list), plutôt que de "
+"désactiver totalement la vérification. Elle possède la valeur par défaut des "
+"options de configuration <option>Acquire::Min-ValidTime</option> et "
+"<option>Acquire::Max-ValidTime</option> qui toutes les deux ne sont pas "
+"définies par défaut."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "URI Specification"
+msgstr "Spécification des URI"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "The currently recognized URI types are:"
+msgstr "Les types d'URI actuellement reconnus sont :"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The file scheme allows an arbitrary directory in the file system to be "
+"considered an archive. This is useful for NFS mounts and local mirrors or "
+"archives."
+msgstr ""
+"Le procédé <literal>file</literal> permet qu'un répertoire arbitraire au "
+"sein du système de fichier soit considéré comme une archive. On s'en sert "
+"avec les montages NFS, les miroirs et les archives locaux."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The cdrom scheme allows APT to use a local CD-ROM drive with media swapping. "
+"Use the &apt-cdrom; program to create cdrom entries in the source list."
+msgstr ""
+"Le procédé <literal>cdrom</literal> permet l'utilisation d'un lecteur de CD "
+"avec la possibilité de changer de media. Utilisez le programme &apt-cdrom; "
+"pour créer des entrées dans la liste des sources."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The http scheme specifies an HTTP server for the archive. If an environment "
+"variable <envar>http_proxy</envar> is set with the format http://server:"
+"port/, the proxy server specified in <envar>http_proxy</envar> will be used. "
+"Users of authenticated HTTP/1.1 proxies may use a string of the format "
+"http://user:pass@server:port/. Note that this is an insecure method of "
+"authentication."
+msgstr ""
+"Le procédé <literal>http</literal> indique un serveur HTTP comme archive. Si "
+"une variable d'environnement <envar>http_proxy</envar> (au format http://"
+"server:port/) existe, le serveur mandataire indiqué par <envar>http_proxy</"
+"envar> est utilisé. Quand un serveur mandataire HTTP/1.1 demande une "
+"authentification, on peut utiliser la chaîne http://user:pass@server:port/. "
+"Notez qu'il s'agit d'une méthode d'authentification peu sûre."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The ftp scheme specifies an FTP server for the archive. APT's FTP behavior "
+"is highly configurable; for more information see the &apt-conf; manual page. "
+"Please note that an FTP proxy can be specified by using the "
+"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
+"HTTP proxy (HTTP proxy servers often understand FTP URLs) using this "
+"environment variable and <emphasis>only</emphasis> this environment "
+"variable. Proxies using HTTP specified in the configuration file will be "
+"ignored."
+msgstr ""
+"Le procédé <literal>ftp</literal> indique un serveur FTP comme archive. Le "
+"fonctionnement en mode ftp est largement configurable ; référez-vous à la "
+"page de manuel de &apt-cdrom; pour d'autres informations. On remarquera "
+"qu'on peut indiquer un mandataire FTP avec la variable d'environnement "
+"<envar>ftp_proxy</envar>. On peut aussi spécifier un mandataire HTTP (les "
+"serveurs mandataires HTTP comprennent souvent les URL FTP) en utilisant "
+"cette méthode et <emphasis>seulement</emphasis> cette méthode. Les "
+"mandataires qui utilisent HTTP et qui sont spécifiés dans le fichier de "
+"configuration seront ignorés."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The copy scheme is identical to the file scheme except that packages are "
+"copied into the cache directory instead of used directly at their location. "
+"This is useful for people using removable media to copy files around with "
+"APT."
+msgstr ""
+"Le procédé <literal>copy</literal> est identique au procédé <literal>file</"
+"literal> excepté que les paquets sont copiés dans le cache du répertoire au "
+"lieu d'être utilisés directement depuis leur emplacement. Ce réglage peut "
+"servir aux utilisateurs qui se servent d'un support amovible pour recopier "
+"des fichiers avec APT."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
+"the files as a given user. Prior configuration of rhosts or RSA keys is "
+"recommended. The standard <command>find</command> and <command>dd</command> "
+"commands are used to perform the file transfers from the remote host."
+msgstr ""
+"Le procédé rsh/ssh utilise rsh/ssh pour se connecter à une machine distante "
+"et pour accéder aux fichiers en tant qu'un certain utilisateur. Il est "
+"recommandé de régler préalablement les hôtes distants (rhosts) ou les clés "
+"RSA. Les commandes standard <command>find</command> et <command>dd</command> "
+"sont utilisées pour l'accès aux fichiers de la machine distante."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
+#: sources.list.5.xml
+msgid "adding more recognizable URI types"
+msgstr "ajout de types d'URI supplémentaires reconnues"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"APT can be extended with more methods shipped in other optional packages, "
+"which should follow the naming scheme <package>apt-transport-"
+"<replaceable>method</replaceable></package>. For instance, the APT team "
+"also maintains the package <package>apt-transport-https</package>, which "
+"provides access methods for HTTPS URIs with features similar to the http "
+"method. Methods for using e.g. debtorrent are also available - see &apt-"
+"transport-debtorrent;."
+msgstr ""
+"APT peut être complété avec des méthodes supplémentaires fournies par des "
+"paquets optionnels dont le schéma de nommage est <literal>apt-transport-"
+"<replaceable>méthode</replaceable></literal>. Ainsi, l'équipe de "
+"maintenance d'APT gère un paquet <literal>apt-transport-https</literal> qui "
+"gère les accès par URI de type https, avec des fonctionnalités analogues à "
+"la méthode http. D'autres méthodes telles que debtorrent sont aussi "
+"disponibles (voir &apt-transport-debtorrent;)."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses the archive stored locally (or NFS mounted) at /home/apt/debian for "
+"stable/main, stable/contrib, and stable/non-free."
+msgstr ""
+"Utiliser l'archive stockée localement (ou montée via NFS) dans /home/apt/"
+"debian pour stable/main, stable/contrib et stable/non-free."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb file:/home/apt/debian stable main contrib non-free"
+msgstr "deb file:/home/apt/debian stable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: stable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: stable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "As above, except this uses the unstable (development) distribution."
+msgstr ""
+"Comme ci-dessus, excepté que cette ligne utilise la distribution "
+"« unstable » (développement)."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb file:/home/apt/debian unstable main contrib non-free"
+msgstr "deb file:/home/apt/debian unstable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "Sources specification for the above."
+msgstr "Indication des sources pour les lignes précédentes."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb-src file:/home/apt/debian unstable main contrib non-free"
+msgstr "deb-src file:/home/apt/debian unstable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb-src\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb-src\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The first line gets package information for the architectures in "
+"<literal>APT::Architectures</literal> while the second always retrieves "
+"<literal>amd64</literal> and <literal>armel</literal>."
+msgstr ""
+"La première ligne récupère l'information des paquets pour les architectures "
+"de <literal>APT::Architectures</literal> alors que la deuxième récupère "
+"<literal>amd64</literal> et <literal>armel</literal>."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main"
+msgstr ""
+"deb http://deb.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"\n"
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"Architectures: amd64 armel\n"
+msgstr ""
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"\n"
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"Architectures: amd64 armel\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to access the archive at archive.debian.org, and uses only the "
+"hamm/main area."
+msgstr ""
+"Utiliser HTTP pour accéder à l'archive située à archive.debian.org, et "
+"n'utiliser que la section hamm/main."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb http://archive.debian.org/debian-archive hamm main"
+msgstr "deb http://archive.debian.org/debian-archive hamm main"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://archive.debian.org/debian-archive\n"
+"Suites: hamm\n"
+"Components: main"
+msgstr ""
+"Types: deb\n"
+"URIs: http://archive.debian.org/debian-archive\n"
+"Suites: hamm\n"
+"Components: main"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the &debian-stable-codename;/contrib area."
+msgstr ""
+"Utiliser FTP pour accéder à l'archive située à ftp.debian.org, dans le "
+"répertoire debian, et n'utiliser que la section &debian-stable-codename;/"
+"contrib."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: contrib"
+msgstr ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: contrib"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the unstable/contrib area. If this line appears as "
+"well as the one in the previous example in <filename>sources.list</filename> "
+"a single FTP session will be used for both resource lines."
+msgstr ""
+"Utiliser FTP pour accéder à l'archive située à ftp.debian.org, dans le "
+"répertoire debian, et n'utiliser que la section unstable/contrib. Si cette "
+"ligne et celle de l'exemple précédent dans <filename>sources.list</filename> "
+"apparaissent, une seule session FTP sera utilisée pour les deux lignes."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian unstable contrib"
+msgstr "deb ftp://ftp.debian.org/debian unstable contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: unstable\n"
+"Components: contrib"
+msgstr ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: unstable\n"
+"Components: contrib"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+msgstr "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://ftp.tlh.debian.org/universe\n"
+"Suites: unstable/binary-$(ARCH)/"
+msgstr ""
+"Types: deb\n"
+"URIs: http://ftp.tlh.debian.org/universe\n"
+"Suites: unstable/binary-$(ARCH)/"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe "
+"directory, and uses only files found under <filename>unstable/binary-i386</"
+"filename> on i386 machines, <filename>unstable/binary-amd64</filename> on "
+"amd64, and so forth for other supported architectures. [Note this example "
+"only illustrates how to use the substitution variable; official debian "
+"archives are not structured like this] <placeholder type=\"literallayout\" "
+"id=\"0\"/> <placeholder type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+"Utiliser HTTP pour accéder à l'archive située à ftp.tlh.debian.org, dans le "
+"répertoire universe, et n'utiliser que les fichiers trouvés dans "
+"<filename>unstable/binary-i386</filename> pour les machines i386, dans "
+"<filename>unstable/binary-amd64</filename> pour les machines amd64 et ainsi "
+"de suite pour les autres architectures reconnues. [Notez que cet exemple "
+"montre seulement la manière d'utiliser la variable à substituer, les "
+"archives Debian officielles n'étant pas structurées de cette manière.] "
+"<placeholder type=\"literallayout\" id=\"0\"/> <placeholder type="
+"\"literallayout\" id=\"1\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to get binary packages as well as sources from the stable, testing "
+"and unstable suites and the components main and contrib."
+msgstr ""
+"Utiliser HTTP pour pouvoir obtenir les paquets binaires ainsi que les "
+"sources des suites stable, testing et unstable et des composants main et "
+"contrib."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian stable main contrib\n"
+"deb-src http://deb.debian.org/debian stable main contrib\n"
+"deb http://deb.debian.org/debian testing main contrib\n"
+"deb-src http://deb.debian.org/debian testing main contrib\n"
+"deb http://deb.debian.org/debian unstable main contrib\n"
+"deb-src http://deb.debian.org/debian unstable main contrib"
+msgstr ""
+"deb http://deb.debian.org/debian stable main contrib\n"
+"deb-src http://deb.debian.org/debian stable main contrib\n"
+"deb http://deb.debian.org/debian testing main contrib\n"
+"deb-src http://deb.debian.org/debian testing main contrib\n"
+"deb http://deb.debian.org/debian unstable main contrib\n"
+"deb-src http://deb.debian.org/debian unstable main contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb deb-src\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: stable testing unstable\n"
+"Components: main contrib\n"
+msgstr ""
+"Types: deb deb-src\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: stable testing unstable\n"
+"Components: main contrib\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "&apt-get;, &apt-conf;, &apt-acquire-additional-files;"
+msgstr "&apt-get;, &apt-conf;, &apt-acquire-additional-files;"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt-extracttemplates.1.xml apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "1"
+msgstr "1"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-extracttemplates.1.xml
+msgid ""
+"Utility to extract <command>debconf</command> config and templates from "
+"Debian packages"
+msgstr ""
+"Outil d'extraction des textes et fichiers de configuration pour "
+"<command>debconf</command> contenu dans un paquet Debian"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"<command>apt-extracttemplates</command> will take one or more Debian package "
+"files as input and write out (to a temporary directory) all associated "
+"config scripts and template files. For each passed in package that contains "
+"config scripts and templates, one line of output will be generated in the "
+"format:"
+msgstr ""
+"<command>Apt-extracttemplates</command> prend un ou plusieurs paquets Debian "
+"en paramètre et extrait (dans un répertoire temporaire) tous les scripts et "
+"guides de configuration associés. Pour chaque paquet traité contenant des "
+"scripts et guides de configuration, une ligne est affichée au format "
+"suivant :"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid "package version template-file config-script"
+msgstr "paquet version guide-de-configuration script-de-configuration"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"template-file and config-script are written to the temporary directory "
+"specified by the <option>-t</option> or <option>--tempdir</option> "
+"(<literal>APT::ExtractTemplates::TempDir</literal>) directory, with "
+"filenames of the form <filename>package.template.XXXXXX</filename> and "
+"<filename>package.config.XXXXXX</filename>"
+msgstr ""
+"Les scripts et guides de configuration sont écrits dans le répertoire "
+"temporaire indiqué par l'option <option>-t</option> ou <option>--tempdir</"
+"option> (<literal>APT::ExtractTemplates::TempDir</literal>) ; les noms de "
+"fichier sont de la forme <filename>package.template.XXXXXX</filename> ou "
+"<filename>package.config.XXXXXX</filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"Temporary directory in which to write extracted <command>debconf</command> "
+"template files and config scripts. Configuration Item: <literal>APT::"
+"ExtractTemplates::TempDir</literal>"
+msgstr ""
+"Répertoire temporaire dans lequel écrire les scripts de configuration et "
+"modèles d'écrans pour <command>debconf</command>. Élément de configuration : "
+"<literal>APT::ExtractTemplates::TempDir</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"<command>apt-extracttemplates</command> returns zero on normal operation, "
+"decimal 100 on error."
+msgstr ""
+"<command>apt-extracttemplates</command> retourne zéro si tout se passe bien, "
+"le nombre 100 en cas d'erreur."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-sortpkgs.1.xml
+msgid "Utility to sort package index files"
+msgstr "Outil de tri des index de paquets."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"<command>apt-sortpkgs</command> will take an index file (source index or "
+"package index) and sort the records so that they are ordered by the package "
+"name. It will also sort the internal fields of each record according to the "
+"internal sorting rules."
+msgstr ""
+"<command>Apt-sortpkgs</command> prend un index (un index de Source ou un "
+"index de paquet) et trie leurs enregistrements selon le nom de paquet. Un "
+"tri des champs de chaque enregistrement est réalisé selon des règles "
+"internes."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"All output is sent to standard output; the input must be a seekable file."
+msgstr ""
+"Le résultat est envoyé sur la sortie standard ; l'entrée doit être un "
+"fichier analysable."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"Use source index field ordering. Configuration Item: <literal>APT::"
+"SortPkgs::Source</literal>."
+msgstr ""
+"Utiliser un index de sources pour le tri des champs. Élément de "
+"configuration : <literal>APT::SortPkgs::Source</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"<command>apt-sortpkgs</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+"<command>apt-sortpkgs</command> retourne zéro si tout se passe bien ou 100 "
+"en cas d'erreur."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-ftparchive.1.xml
+msgid "Utility to generate index files"
+msgstr "Outil de création de fichiers d'index"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> is the command line tool that generates "
+"the index files that APT uses to access a distribution source. The index "
+"files should be generated on the origin site based on the content of that "
+"site."
+msgstr ""
+"<command>apt-ftparchive</command> est l'outil en ligne de commande qui crée "
+"les index dont APT se sert pour accéder aux sources des distributions. Un "
+"index doit être créé pour un site et basé sur le contenu de ce site."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> is a superset of the &dpkg-scanpackages; "
+"program, incorporating its entire functionality via the <literal>packages</"
+"literal> command. It also contains a contents file generator, "
+"<literal>contents</literal>, and an elaborate means to 'script' the "
+"generation process for a complete archive."
+msgstr ""
+"<command>apt-ftparchive</command> est un ensemble comprenant le programme "
+"&dpkg-scanpackages; et toutes ses fonctionnalités via la commande "
+"<literal>packages</literal> ; il comprend aussi un générateur de fichier "
+"« Contents », la commande <literal>contents</literal>, et une technique "
+"élaborée pour automatiser le processus de création d'une archive complète."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Internally <command>apt-ftparchive</command> can make use of binary "
+"databases to cache the contents of a .deb file and it does not rely on any "
+"external programs aside from &gzip;. When doing a full generate it "
+"automatically performs file-change checks and builds the desired compressed "
+"output files."
+msgstr ""
+"<command>Apt-ftparchive</command> peut utiliser lui-même des bases de "
+"données binaires pour « cacher » le contenu d'un fichier .deb ; il n'a pas "
+"besoin de programmes extérieurs, sauf &gzip;. Lors d'une exécution, il "
+"vérifie les changements dans les fichiers et crée les fichiers compressés "
+"voulus."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The packages command generates a package file from a directory tree. It "
+"takes the given directory and recursively searches it for .deb files, "
+"emitting a package record to stdout for each. This command is approximately "
+"equivalent to &dpkg-scanpackages;."
+msgstr ""
+"La commande packages crée un fichier « Packages » à partir d'une "
+"arborescence. Elle recherche récursivement à travers le répertoire donné les "
+"fichiers .deb et, pour chaque fichier trouvé, envoie une entrée pour ce "
+"paquet sur la sortie standard. Cette commande est approximativement "
+"équivalente à &dpkg-scanpackages;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The option <option>--db</option> can be used to specify a binary caching DB."
+msgstr ""
+"On peut se servir de l'option <option>--db</option> pour demander un cache "
+"binaire."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>sources</literal> command generates a source index file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .dsc files, emitting a source record to stdout for each. This command is "
+"approximately equivalent to &dpkg-scansources;."
+msgstr ""
+"La commande <literal>sources</literal> crée un index des sources à partir "
+"d'une arborescence. Elle recherche récursivement à travers le répertoire "
+"donné les fichiers .dsc et, pour chaque fichier trouvé, envoie une entrée "
+"pour ce paquet sur la sortie standard. Cette commande est approximativement "
+"équivalente à &dpkg-scansources;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"If an override file is specified then a source override file will be looked "
+"for with an extension of .src. The --source-override option can be used to "
+"change the source override file that will be used."
+msgstr ""
+"Quand on précise un fichier « override », c'est un fichier source avec une "
+"extension .src qui est recherché. On peut se servir de l'option --source-"
+"override pour changer de fichier source d'« override »."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>contents</literal> command generates a contents file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .deb files, and reads the file list from each file. It then sorts and "
+"writes to stdout the list of files matched to packages. Directories are not "
+"written to the output. If multiple packages own the same file then each "
+"package is separated by a comma in the output."
+msgstr ""
+"La commande <literal>contents</literal> crée un fichier « Contents » à "
+"partir d'une arborescence. Elle recherche récursivement à travers le "
+"répertoire donné les fichiers .deb et, pour chaque fichier trouvé, lit la "
+"liste des fichiers. Elle trie la liste des fichiers correspondant à des "
+"paquets et l'envoie sur la sortie standard. Les répertoires ne font pas "
+"partie du résultat. Quand un fichier appartient à plusieurs paquets, une "
+"virgule sépare les paquets."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>release</literal> command generates a Release file from a "
+"directory tree. It recursively searches the given directory for uncompressed "
+"and compressed <filename>Packages</filename>, <filename>Sources</filename>, "
+"<filename>Contents</filename>, <filename>Components</filename> and "
+"<filename>icons</filename> files as well as <filename>Release</filename>, "
+"<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
+"default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>). "
+"Additional filename patterns can be added by listing them in <literal>APT::"
+"FTPArchive::Release::Patterns</literal>. It then writes to stdout a "
+"<filename>Release</filename> file containing (by default) an MD5, SHA1, "
+"SHA256 and SHA512 digest for each file."
+msgstr ""
+"La commande <literal>release</literal> crée un fichier Release à partir "
+"d'une arborescence. Elle recherche récursivement dans le répertoire indiqué "
+"des fichiers <filename>Packages</filename>, <filename>Sources</filename>, "
+"<filename>Contents</filename>, <filename>Components</filename> et "
+"<filename>icons</filename> non compressés et compressés ainsi que des "
+"fichiers <filename>Release</filename>, <filename>Index</filename> et "
+"<filename>md5sum.txt</filename> par défaut (<literal>APT::FTPArchive::"
+"Release::Default-Patterns</literal>). Des motifs supplémentaires pour les "
+"noms de fichiers peuvent être ajoutés en les mentionnant dans <literal>APT::"
+"FTPArchive::Release::Patterns</literal>. Le fichier <filename>Release</"
+"filename> est ensuite affiché sur la sortie standard et comporte (par "
+"défaut) des sommes de contrôle MD5, SHA1 et SHA256 et SHA512 pour chaque "
+"fichier."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Values for the additional metadata fields in the Release file are taken from "
+"the corresponding variables under <literal>APT::FTPArchive::Release</"
+"literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The "
+"supported fields are <literal>Origin</literal>, <literal>Label</literal>, "
+"<literal>Suite</literal>, <literal>Version</literal>, <literal>Codename</"
+"literal>, <literal>Date</literal>, <literal>NotAutomatic</literal>, "
+"<literal>ButAutomaticUpgrades</literal>, <literal>Acquire-By-Hash</literal>, "
+"<literal>Valid-Until</literal>, <literal>Signed-By</literal>, "
+"<literal>Architectures</literal>, <literal>Components</literal> and "
+"<literal>Description</literal>."
+msgstr ""
+"La valeur des autres champs de métadonnées du fichier Release sont tirées de "
+"la valeur correspondante dans <literal>APT::FTPArchive::Release</literal>, "
+"p. ex. <literal>APT::FTPArchive::Release::Origin</literal>. Les champs "
+"reconnus sont : <literal>Origin</literal>, <literal>Label</literal>, "
+"<literal>Suite</literal>, <literal>Version</literal>, <literal>Codename</"
+"literal>, <literal>Date</literal>, <literal>NotAutomatic</literal>, "
+"<literal>ButAutomaticUpgrades</literal>, <literal>Acquire-By-Hash</literal>, "
+"<literal>Valid-Until</literal>, <literal>Signed-By</literal>, "
+"<literal>Architectures</literal>, <literal>Components</literal>, "
+"<literal>Description</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>generate</literal> command is designed to be runnable from a "
+"cron script and builds indexes according to the given config file. The "
+"config language provides a flexible means of specifying which index files "
+"are built from which directories, as well as providing a simple means of "
+"maintaining the required settings."
+msgstr ""
+"La commande <literal>generate</literal> est conçue pour être exécutable par "
+"le programme cron et elle crée un index en suivant le fichier de "
+"configuration donné. Le langage de configuration fournit un moyen souple de "
+"préciser index et répertoires aussi bien que les paramètres requis."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>clean</literal> command tidies the databases used by the given "
+"configuration file by removing any records that are no longer necessary."
+msgstr ""
+"La commande <literal>clean</literal> nettoie les bases de données utilisées "
+"par le fichier de configuration en supprimant les enregistrements qui ne "
+"sont plus nécessaires."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Generate Configuration"
+msgstr "Configuration de la commande generate"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>generate</literal> command uses a configuration file to "
+"describe the archives that are going to be generated. It follows the typical "
+"ISC configuration format as seen in ISC tools like bind 8 and dhcpd. &apt-"
+"conf; contains a description of the syntax. Note that the generate "
+"configuration is parsed in sectional manner, but &apt-conf; is parsed in a "
+"tree manner. This only effects how the scope tag is handled."
+msgstr ""
+"La commande <literal>generate</literal> utilise un fichier de configuration "
+"pour décrire l'archive qui va être créée. Le format de ce fichier est le "
+"format ISC classique utilisé par des outils ISC comme bind 8 et dhcpd. Le "
+"fichier &apt-conf; décrit ce format. Il faut noter que l'analyse de ce "
+"fichier se fait par section tandis que celle d'&apt-conf; se fait par "
+"arborescence. Cela n'affecte que l'usage de l'étiquette de visée (scope tag)."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The generate configuration has four separate sections, each described below."
+msgstr ""
+"Ce fichier de configuration possède quatre sections, décrites ci-dessous."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Dir</literal> Section"
+msgstr "La section <literal>Dir</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Dir</literal> section defines the standard directories needed "
+"to locate the files required during the generation process. These "
+"directories are prepended certain relative paths defined in later sections "
+"to produce a complete an absolute path."
+msgstr ""
+"La section <literal>Dir</literal> définit les répertoires standards où "
+"situer les fichiers nécessaires au processus de création. Ces répertoires "
+"sont précédés de chemins relatifs définis dans les sections suivantes de "
+"manière à produire un chemin absolu et complet."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the root of the FTP archive, in a standard Debian configuration "
+"this is the directory that contains the <filename>ls-LR</filename> and dist "
+"nodes."
+msgstr ""
+"Indique la racine de l'archive FTP ; Pour une configuration Debian "
+"classique, c'est le répertoire qui contient le fichier <filename>ls-LR</"
+"filename> et les noeuds des distributions."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the location of the override files."
+msgstr "Indique l'emplacement des fichiers d'« override »."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the location of the cache files."
+msgstr "Indique l'emplacement des fichiers de cache."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the location of the file list files, if the <literal>FileList</"
+"literal> setting is used below."
+msgstr ""
+"Indique l'emplacement des fichiers contenant la liste des fichiers (si on se "
+"sert de la valeur <literal>FileList</literal> définie plus bas)."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Default</literal> Section"
+msgstr "La section <literal>Default</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Default</literal> section specifies default values, and "
+"settings that control the operation of the generator. Other sections may "
+"override these defaults with a per-section setting."
+msgstr ""
+"La section <literal>Default</literal> précise les valeurs par défaut et les "
+"paramètres qui contrôlent la marche du générateur. Ces valeurs peuvent être "
+"annulées dans d'autres sections (paramètrage par section)."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default compression schemes to use for the package index files. It "
+"is a string that contains a space separated list of at least one of the "
+"compressors configured via the <option>APT::Compressor</option> "
+"configuration scope. The default for all compression schemes is '. gzip'."
+msgstr ""
+"Indique comment sont compressés les fichiers d'index. C'est une chaîne qui "
+"contient une liste séparée par des espaces qui contient au moins l'un des "
+"compresseurs configuré à travers le champ d'action de configuration "
+"<option>APT::Compressor</option>. La valeur par défaut pour tous les schémas "
+"de compression est « . gzip »."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default list of file extensions that are package files. This "
+"defaults to '.deb'."
+msgstr ""
+"Indique la liste par défaut des extensions de fichier qui constituent des "
+"paquets. Par défaut, c'est « .deb »."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Sources files."
+msgstr ""
+"Identique à <literal>Packages::Compress</literal> mais précise comment sont "
+"compressés les fichiers sources."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default list of file extensions that are source files. This "
+"defaults to '.dsc'."
+msgstr ""
+"Indique la liste par défaut des extensions de fichier qui constituent des "
+"fichiers sources. Par défaut, c'est « .dsc »."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Contents files."
+msgstr ""
+"Identique à <literal>Packages::Compress</literal> mais précise comment sont "
+"compressés les fichiers « Contents »."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Translation-en master file."
+msgstr ""
+"Identique à <literal>Packages::Compress</literal> mais précise comment est "
+"compressé le fichier maître Translations-en."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the number of kilobytes to delink (and replace with hard links) "
+"per run. This is used in conjunction with the per-section <literal>External-"
+"Links</literal> setting."
+msgstr ""
+"Indique le nombre de kilo-octets à délier (et à remplacer par des liens en "
+"dur) pour chaque exécution. On s'en sert, pour chaque section, avec le "
+"paramètre <literal>External-Links</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the mode of all created index files. It defaults to 0644. All "
+"index files are set to this mode with no regard to the umask."
+msgstr ""
+"Indique le système de permissions des fichiers d'index créés. Par défaut, "
+"c'est le mode 0644. Tous les fichiers d'index ont ce mode et le masque "
+"utilisateur (umasq) est ignoré."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies whether long descriptions should be included in the "
+"<filename>Packages</filename> file or split out into a master "
+"<filename>Translation-en</filename> file."
+msgstr ""
+"Définit si les descriptions longues doivent être incluses dans le fichier "
+"<filename>Packages</filename> ou déplacées dans un fichier maître "
+"<filename>Translation-en</filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>TreeDefault</literal> Section"
+msgstr "La section <literal>TreeDefault</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets defaults specific to <literal>Tree</literal> sections. All of these "
+"variables are substitution variables and have the strings $(DIST), "
+"$(SECTION) and $(ARCH) replaced with their respective values."
+msgstr ""
+"Indique les valeurs par défaut particulières à la section <literal>Tree</"
+"literal>. Toutes ces variables sont des variables de substitution ; les "
+"chaînes $(DIST), $(SECTION) et $(ARCH) sont remplacées par leur valeur "
+"respective."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the number of kilobytes of contents files that are generated each day. "
+"The contents files are round-robined so that over several days they will all "
+"be rebuilt."
+msgstr ""
+"Indique le nombre de kilo-octets de fichiers « Contents » qui sont créés "
+"chaque jour. Les fichiers « Contents » sont choisis selon le système « round-"
+"robin » de manière que, sur plusieurs jours, tous soient reconstruits."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Controls the number of days a contents file is allowed to be checked without "
+"changing. If this limit is passed the mtime of the contents file is updated. "
+"This case can occur if the package file is changed in such a way that does "
+"not result in a new contents file [override edit for instance]. A hold off "
+"is allowed in hopes that new .debs will be installed, requiring a new file "
+"anyhow. The default is 10, the units are in days."
+msgstr ""
+"Contrôle le nombre de jours pendant lequel un fichier « Contents » peut être "
+"utilisé sans actualisation. Quand cette limite est franchie, le « mtime » du "
+"fichier « Contents » est mis à jour. Cela peut arriver quand un fichier est "
+"modifié sans que cela modifie le fichier « Contents » (modification par "
+"« override » par exemple). Un délai est permis dans l'espoir que de "
+"nouveaux « .deb » seront installés, exigeant un nouveau « Contents ». Par "
+"défaut ce nombre vaut 10, l'unité étant le jour."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/"
+"$(SECTION)/binary-$(ARCH)/</filename>"
+msgstr ""
+"Indique la racine de l'arborescence des « .deb ». Par défaut, c'est "
+"<filename>$(DIST)/$(SECTION)/binary-$(ARCH)/</filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the top of the source package directory tree. Defaults to <filename>"
+"$(DIST)/$(SECTION)/source/</filename>"
+msgstr ""
+"Indique la racine de l'arborescence des paquets source. Par défaut, c'est "
+"<filename>$(DIST)/$(SECTION)/source/</filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Packages file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"binary-$(ARCH)/Packages</filename>"
+msgstr ""
+"Indique le fichier « Packages » créé. Par défaut, c'est <filename>$(DIST)/"
+"$(SECTION)/binary-$(ARCH)/Packages</filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Sources file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"source/Sources</filename>"
+msgstr ""
+"Indique le fichier « Sources » créé. Par défaut, c'est <filename>$(DIST)/"
+"$(SECTION)/source/Sources</filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Translation-en master file with the long descriptions if "
+"they should be not included in the Packages file. Defaults to <filename>"
+"$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+msgstr ""
+"Définit le fichier maître Translation-en qui comporte les descriptions "
+"longues si elles ne sont pas incluses dans le fichier Packages. Valeur par "
+"défaut : <filename>$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the path prefix that causes a symlink to be considered an internal link "
+"instead of an external link. Defaults to <filename>$(DIST)/$(SECTION)/</"
+"filename>"
+msgstr ""
+"Indique un préfixe de chemin ; ce préfixe fait qu'un lien symbolique sera "
+"considéré comme un lien interne plutôt que comme un lien externe. Par "
+"défaut, c'est <filename>$(DIST)/$(SECTION)/</filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Contents file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"Contents-$(ARCH)</filename>. If this setting causes multiple Packages files "
+"to map onto a single Contents file (as is the default) then <command>apt-"
+"ftparchive</command> will integrate those package files together "
+"automatically."
+msgstr ""
+"Indique le fichier « Contents » créé. Par défaut, c'est <filename>$(DIST)/"
+"Contents-$(ARCH)</filename>. Quand le paramètrage fait que différents "
+"fichiers « Packages » se réfèrent à un seul fichier « Contents », "
+"<command>apt-ftparchive</command> les intègre automatiquement."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets header file to prepend to the contents output."
+msgstr "Indique l'en-tête à préfixer au fichier « Contents » créé."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the binary cache database to use for this section. Multiple sections "
+"can share the same database."
+msgstr ""
+"Indique la base de données binaire servant de cache pour cette section. "
+"Différentes sections peuvent partager cette base de données."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies that instead of walking the directory tree, <command>apt-"
+"ftparchive</command> should read the list of files from the given file. "
+"Relative files names are prefixed with the archive directory."
+msgstr ""
+"Indique qu'au lieu de lire l'arborescence, <command>apt-ftparchive</command> "
+"doit lire la liste de fichiers dans le fichier donné en paramètre. Les noms "
+"relatifs sont préfixés par le répertoire de l'archive."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies that instead of walking the directory tree, <command>apt-"
+"ftparchive</command> should read the list of files from the given file. "
+"Relative files names are prefixed with the archive directory. This is used "
+"when processing source indexes."
+msgstr ""
+"Indique qu'au lieu de lire l'arborescence, <command>apt-ftparchive</command> "
+"doit lire la liste de fichiers dans le fichier donné en paramètre. Les noms "
+"relatifs sont préfixés par le répertoire de l'archive. On s'en sert pour "
+"traiter les index de sources."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Tree</literal> Section"
+msgstr "La section <literal>Tree</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Tree</literal> section defines a standard Debian file tree "
+"which consists of a base directory, then multiple sections in that base "
+"directory and finally multiple Architectures in each section. The exact "
+"pathing used is defined by the <literal>Directory</literal> substitution "
+"variable."
+msgstr ""
+"La section <literal>Tree</literal> définit une arborescence debian classique "
+"avec un répertoire de base, différentes sections dans ce répertoire et "
+"différentes architectures dans chaque section. Le chemin exact est défini "
+"par la variable de substitution <literal>Directory</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Tree</literal> section takes a scope tag which sets the "
+"<literal>$(DIST)</literal> variable and defines the root of the tree (the "
+"path is prefixed by <literal>ArchiveDir</literal>). Typically this is a "
+"setting such as <filename>dists/&debian-stable-codename;</filename>."
+msgstr ""
+"La section <literal>Tree</literal> accepte une étiquette de visée (scope "
+"tag) qui détermine la variable <literal>$(DIST)</literal> et la racine de "
+"l'arborescence (le chemin est préfixé par <literal>ArchiveDir</literal>). "
+"C'est par exemple : <filename>dists/&debian-stable-codename;</filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"All of the settings defined in the <literal>TreeDefault</literal> section "
+"can be used in a <literal>Tree</literal> section as well as three new "
+"variables."
+msgstr ""
+"Tous les paramètres définis dans la section <literal>TreeDefault</literal> "
+"peuvent s'utiliser dans la section <literal>Tree</literal> ainsi que les "
+"trois nouvelles variables suivantes."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid ""
+"for i in Sections do \n"
+" for j in Architectures do\n"
+" Generate for DIST=scope SECTION=i ARCH=j\n"
+" "
+msgstr ""
+"for i in Sections do \n"
+" for j in Architectures do\n"
+" Generate for DIST=scope SECTION=i ARCH=j\n"
+" "
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"When processing a <literal>Tree</literal> section <command>apt-ftparchive</"
+"command> performs an operation similar to: <placeholder type=\"programlisting"
+"\" id=\"0\"/>"
+msgstr ""
+"Quand il exécute la section <literal>Tree</literal>, <command>apt-"
+"ftparchive</command> effectue une opération analogue à : <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is a space separated list of sections which appear under the "
+"distribution; typically this is something like <literal>main contrib non-"
+"free</literal>"
+msgstr ""
+"C'est une liste de sections séparées par des espaces qui appartiennent à une "
+"distribution ; classiquement, on trouve <literal>main contrib non-free</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is a space separated list of all the architectures that appear under "
+"search section. The special architecture 'source' is used to indicate that "
+"this tree has a source archive. The architecture 'all' signals that "
+"architecture specific files like <filename>Packages</filename> should not "
+"include information about architecture <literal>all</literal> packages in "
+"all files as they will be available in a dedicated file."
+msgstr ""
+"C'est une liste de toutes les architectures séparées par des espaces qui "
+"appartiennent à chaque section. L'architecture spéciale « source » indique "
+"que l'arborescence est une arborescence de sources. L'architecture « all » "
+"indique que les fichiers spécifiques à l'architecture comme "
+"<filename>Packages</filename> ne devraient pas inclure d'informations sur "
+"les paquets de l'architecture <literal>all</literal> dans tous les fichiers "
+"comme elles devraient être disponibles dans un fichier dédié."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the binary override file. The override file contains section, priority "
+"and maintainer address information."
+msgstr ""
+"Indique le fichier binaire d'« override ». Ce fichier contient des "
+"informations sur la section, la priorité et le responsable du paquet."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the source override file. The override file contains section "
+"information."
+msgstr ""
+"Indique le fichier source d'« override ». Ce fichier contient des "
+"informations sur la section."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the binary extra override file."
+msgstr "Indique un autre fichier d'« override » pour les binaires."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the source extra override file."
+msgstr "Indique un autre fichier d'« override » pour les sources."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>BinDirectory</literal> Section"
+msgstr "La section <literal>BinDirectory</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>bindirectory</literal> section defines a binary directory tree "
+"with no special structure. The scope tag specifies the location of the "
+"binary directory and the settings are similar to the <literal>Tree</literal> "
+"section with no substitution variables or <literal>Section</"
+"literal><literal>Architecture</literal> settings."
+msgstr ""
+"La section <literal>bindirectory</literal> définit une arborescence binaire "
+"sans structure particulière. L'étiquette de visée (scope tag) indique "
+"l'emplacement du répertoire binaire et le paramètrage est identique à celui "
+"pour la section <literal>Tree</literal> sans substitution de variables ou au "
+"paramètrage de <literal>Section</literal><literal>Architecture</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the Packages file output."
+msgstr "Définit le fichier « Packages » créé."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the Sources file output. At least one of <literal>Packages</literal> or "
+"<literal>Sources</literal> is required."
+msgstr ""
+"Définit le fichier « Sources » créé. L'un des deux fichiers, "
+"<literal>Packages</literal> ou <literal>Sources</literal> est nécessaire."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the Contents file output (optional)."
+msgstr "Définit le fichier « Contents » créé."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the binary override file."
+msgstr "Définit le fichier d'« override » pour les binaires."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the source override file."
+msgstr "Définit le fichier d'« override » pour les sources."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the cache DB."
+msgstr "Définit la base de données cache."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Appends a path to all the output paths."
+msgstr "Ajoute un chemin à tous les chemins créés."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the file list file."
+msgstr "Définit le fichier contenant la liste des fichiers."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Binary Override File"
+msgstr "Le fichier d'« Override » pour les binaires."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The binary override file is fully compatible with &dpkg-scanpackages;. It "
+"contains four fields separated by spaces. The first field is the package "
+"name, the second is the priority to force that package to, the third is the "
+"section to force that package to and the final field is the maintainer "
+"permutation field."
+msgstr ""
+"Le fichier d'« Override » est pleinement compatible avec &dpkg-"
+"scanpackages;. Il contient quatre champs séparés par des espaces. Le premier "
+"est le nom du paquet ; le deuxième est la priorité à donner à ce paquet ; le "
+"troisième est sa section et le dernier champ est un champ pour changer le "
+"nom du responsable de paquet."
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "old [// oldn]* => new"
+msgstr "old [// oldn]* => new"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "new"
+msgstr "new"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The general form of the maintainer field is: <placeholder type="
+"\"literallayout\" id=\"0\"/> or simply, <placeholder type=\"literallayout\" "
+"id=\"1\"/> The first form allows a double-slash separated list of old email "
+"addresses to be specified. If any of those are found then new is substituted "
+"for the maintainer field. The second form unconditionally substitutes the "
+"maintainer field."
+msgstr ""
+"Le champ du responsable est de cette forme : <placeholder type="
+"\"literallayout\" id=\"0\"/> ou simplement, <placeholder type=\"literallayout"
+"\" id=\"1\"/> La première forme permet de spécifier de vieilles adresses "
+"dans une liste (le séparateur est la double barre oblique). Si l'une de ces "
+"deux formes est rencontrée, la valeur de new remplace la valeur du champ. La "
+"deuxième forme remplace inconditionnellement le champ."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Source Override File"
+msgstr "Le fichier d'« Override » pour les sources"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The source override file is fully compatible with &dpkg-scansources;. It "
+"contains two fields separated by spaces. The first field is the source "
+"package name, the second is the section to assign it."
+msgstr ""
+"Le fichier d'« Override » est pleinement compatible avec &dpkg-scansources;. "
+"Il contient deux champs. Le premier est le nom du paquet source ; le second, "
+"sa section."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Extra Override File"
+msgstr "Le fichier supplémentaire d'« Override »"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The extra override file allows any arbitrary tag to be added or replaced in "
+"the output. It has three columns, the first is the package, the second is "
+"the tag and the remainder of the line is the new value."
+msgstr ""
+"Le fichier supplémentaire d'« Override » permet d'ajouter ou de remplacer "
+"des étiquettes sur la sortie. Il possède trois colonnes : la première "
+"représente le paquet, la seconde est une étiquette et la troisième en fin de "
+"ligne est la nouvelle valeur."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Generate the given checksum. These options default to on, when turned off "
+"the generated index files will not have the checksum fields where possible. "
+"Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</"
+"replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</"
+"replaceable>::<replaceable>Checksum</replaceable></literal> where "
+"<literal><replaceable>Index</replaceable></literal> can be "
+"<literal>Packages</literal>, <literal>Sources</literal> or <literal>Release</"
+"literal> and <literal><replaceable>Checksum</replaceable></literal> can be "
+"<literal>MD5</literal>, <literal>SHA1</literal>, <literal>SHA256</literal> "
+"or <literal>SHA512</literal>."
+msgstr ""
+"Crée la somme de contrôle indiquée. Si ces options sont actives par défaut. "
+"Quand elles sont désactivées, les fichiers d'index créés n'auront pas de "
+"champ de somme de contrôle là où cela était possible. Éléments de "
+"configuration :<literal>APT::FTPArchive::<replaceable>Checksum</"
+"replaceable></literal> et <literal>APT::FTPArchive::<replaceable>Index</"
+"replaceable>::<replaceable>Checksum</replaceable></literal> où "
+"<literal><replaceable>Index</replaceable></literal> peut être "
+"<literal>Packages</literal>, <literal>Sources</literal> ou <literal>Release</"
+"literal> et <literal><replaceable>Checksum</replaceable></literal> peut être "
+"<literal>MD5</literal>, <literal>SHA1</literal>, <literal>SHA256</literal> "
+"ou <literal>SHA512</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Use a binary caching DB. This has no effect on the generate command. "
+"Configuration Item: <literal>APT::FTPArchive::DB</literal>."
+msgstr ""
+"Utiliser une base de données binaire pour cache. Cela n'a aucun effet sur la "
+"commande generate. Élément de configuration : <literal>APT::FTPArchive::DB</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+"Mode silencieux ; cette commande produit une sortie destinée à "
+"l'enregistrement dans un fichier-journal en omettant les indicateurs de "
+"progression. Un plus grand nombre de « q » (2 au plus) rend le programme de "
+"plus en plus silencieux. On peut aussi utiliser <option>-q=#</option> pour "
+"définir ce « niveau de silence », et ne plus tenir compte des réglages du "
+"fichier de configuration. Élément de configuration : <literal>quiet</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Perform Delinking. If the <literal>External-Links</literal> setting is used "
+"then this option actually enables delinking of the files. It defaults to on "
+"and can be turned off with <option>--no-delink</option>. Configuration "
+"Item: <literal>APT::FTPArchive::DeLinkAct</literal>."
+msgstr ""
+"Défaire une liaison. Si <literal>External-Links</literal> est activé, cette "
+"option permet réellement de délier les fichiers. Par défaut, elle est "
+"activée mais elle peut être désactivée avec l'option <option>--no-delink</"
+"option>. Élément de configuration : <literal>APT::FTPArchive::DeLinkAct</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Perform contents generation. When this option is set and package indexes are "
+"being generated with a cache DB then the file listing will also be extracted "
+"and stored in the DB for later use. When using the generate command this "
+"option also allows the creation of any Contents files. The default is on. "
+"Configuration Item: <literal>APT::FTPArchive::Contents</literal>."
+msgstr ""
+"Permettre la création d'un fichier « Contents ». Quand cette option est "
+"activée et que les index sont créés sous forme de base de données binaire, "
+"la liste des fichiers est aussi extraite et conservée dans la base de "
+"données pour un usage futur. Avec la commande generate, cette option permet "
+"la création de fichiers « Contents ». Par défaut, elle est activée. Élément "
+"de configuration : <literal>APT::FTPArchive::Contents</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Select the source override file to use with the <literal>sources</literal> "
+"command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</"
+"literal>."
+msgstr ""
+"Indique le fichier d'« override » à utiliser avec la commande "
+"<literal>sources</literal>. Élément de configuration : <literal>APT::"
+"FTPArchive::SourceOverride</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Make the caching databases read only. Configuration Item: <literal>APT::"
+"FTPArchive::ReadOnlyDB</literal>."
+msgstr ""
+"N'autoriser que la lecture pour les bases de données de cache. Élément de "
+"configuration : <literal>APT::FTPArchive::ReadOnlyDB</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Accept in the <literal>packages</literal> and <literal>contents</literal> "
+"commands only package files matching <literal>*_arch.deb</literal> or "
+"<literal>*_all.deb</literal> instead of all package files in the given "
+"path. Configuration Item: <literal>APT::FTPArchive::Architecture</literal>."
+msgstr ""
+"N'accepte dans les commandes <literal>packages</literal> et "
+"<literal>contents</literal> que les fichiers de paquets correspondant à "
+"<literal>*_arch.deb</literal> ou <literal>*_all.deb</literal> au lieu de "
+"tous les fichiers de paquets du chemin indiqué.Élément de configuration : "
+"<literal>APT::FTPArchive::Architecture</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"&apt-ftparchive; caches as much as possible of metadata in a cachedb. If "
+"packages are recompiled and/or republished with the same version again, this "
+"will lead to problems as the now outdated cached metadata like size and "
+"checksums will be used. With this option enabled this will no longer happen "
+"as it will be checked if the file was changed. Note that this option is set "
+"to \"<literal>false</literal>\" by default as it is not recommend to upload "
+"multiply versions/builds of a package with the same versionnumber, so in "
+"theory nobody will have these problems and therefore all these extra checks "
+"are useless."
+msgstr ""
+"&apt-ftparchive; met le plus de métadonnées possible en cache dans une base "
+"de données. Si les paquets sont recompilés ou republiés avec à nouveau la "
+"même version, cela pourra causer des problèmes car, alors, les métadonnées "
+"en cache (p. ex. les tailles et les sommes de contrôle) seront utilisées. Si "
+"cette option est choisie, cela n'arrivera plus car le fichier sera contrôlé "
+"pour vérifier s'il a été modifié. Veuillez noter que cette option n'est pas "
+"activée par défaut car il est déconseillé d'envoyer dans les archives des "
+"versions identiques. En théorie, donc, ces problème ne devraient pas "
+"survenir et l'ensemble de ces contrôles devient inutile."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This configuration option defaults to \"<literal>true</literal>\" and should "
+"only be set to <literal>\"false\"</literal> if the Archive generated with "
+"&apt-ftparchive; also provides <filename>Translation</filename> files. Note "
+"that the <filename>Translation-en</filename> master file can only be created "
+"in the generate command."
+msgstr ""
+"Cette option de configuration a « <literal>true</literal> » comme valeur par "
+"défaut et ne devrait être placée sur « <literal>false</literal> » que si "
+"l'archive créée avec &apt-ftparchive; fournit également des fichiers "
+"<filename>Translation</filename>. Veuillez noter que le fichier maître "
+"<filename>Translation-en</filename> ne peut être créé que par la commande "
+"generate."
+
+#. type: Content of: <refentry><refsect1><para><programlisting>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n"
+msgstr "<command>apt-ftparchive</command> packages <replaceable>répertoire</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"To create a compressed Packages file for a directory containing binary "
+"packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Création d'un fichier « Packages » compressé pour un répertoire contenant "
+"des paquets binaires (.deb): <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+"<command>apt-ftparchive</command> retourne zéro si tout se passe bien, le "
+"nombre 100 en cas d'erreur."
+
+#. type: Attribute 'lang' of: <book>
+#: guide.dbk offline.dbk
+msgid "en"
+msgstr "fr"
+
+#. type: Content of: <book><title>
+#: guide.dbk
+msgid "APT User's Guide"
+msgstr "Guide d'utilisation d'APT"
+
+#. type: Content of: <book><bookinfo><authorgroup><author><personname>
+#: guide.dbk offline.dbk
+msgid "Jason Gunthorpe"
+msgstr "Jason Gunthorpe"
+
+#. type: Content of: <book><bookinfo><authorgroup><author><email>
+#: guide.dbk offline.dbk
+msgid "jgg@debian.org"
+msgstr "jgg@debian.org"
+
+#. type: Content of: <book><bookinfo><releaseinfo>
+#: guide.dbk offline.dbk
+msgid "Version &apt-product-version;"
+msgstr "Version &apt-product-version;"
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: guide.dbk
+msgid ""
+"This document provides an overview of how to use the APT package manager."
+msgstr ""
+"Ce document fournit un aperçu des méthode d'utilisation du gestionnaire de "
+"paquets APT."
+
+#. type: Content of: <book><bookinfo>
+#: guide.dbk
+msgid ""
+"<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+"<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>"
+
+#. type: Content of: <book><bookinfo><legalnotice><title>
+#: guide.dbk offline.dbk
+msgid "License Notice"
+msgstr "Mention de licence "
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk offline.dbk
+msgid ""
+"\"APT\" and this document are free software; you can redistribute them and/"
+"or modify them under the terms of the GNU General Public License as "
+"published by the Free Software Foundation; either version 2 of the License, "
+"or (at your option) any later version."
+msgstr ""
+"APT, ainsi que ce document, sont libres. Vous pouvez les redistribuer et les "
+"modifier en respectant les conditions de la licence publique générale GNU "
+"telle que publiée par la Free Software Foundation, en version 2 ou "
+"ultérieure."
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk offline.dbk
+msgid ""
+"For more details, on Debian systems, see the file /usr/share/common-licenses/"
+"GPL for the full license."
+msgstr ""
+"Les détails complets de cette licence sont, sur les systèmes Debian GNU/"
+"Linux, consultables dans le fichier usr/share/common-licenses/GPL."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "General"
+msgstr "Généralités"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The APT package currently contains two sections, the APT <command>dselect</"
+"command> method and the <command>apt-get</command> command line user "
+"interface. Both provide a way to install and remove packages as well as "
+"download new packages from the Internet."
+msgstr ""
+"Le paquet APT comporte actuellement deux parties : la méthode APT pour "
+"<command>dselect</command> et l'interface en ligne de commande <command>apt-"
+"get</command>. Les deux fournissent des méthodes d'installation et de "
+"suppression de paquets ainsi que de téléchargement de nouveaux paquets par "
+"Internet."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Anatomy of the Package System"
+msgstr "Anatomie du système de gestion des paquets"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The Debian packaging system has a large amount of information associated "
+"with each package to help assure that it integrates cleanly and easily into "
+"the system. The most prominent of its features is the dependency system."
+msgstr ""
+"Le système de gestion de paquets de Debian intègre de nombreuses "
+"informations associées à chaque paquet afin de garantir qu'il s'intègre "
+"proprement et facilement sur le système. Une des fonctionnalités les plus "
+"immédiatement visibles est le système de gestion des dépendances."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The dependency system allows individual programs to make use of shared "
+"elements in the system such as libraries. It simplifies placing infrequently "
+"used portions of a program in separate packages to reduce the number of "
+"things the average user is required to install. Also, it allows for choices "
+"in mail transport agents, X servers and so on."
+msgstr ""
+"Le système de gestion des dépendances permet aux programmes de partage des "
+"éléments du système, tels que les bibliothèques de fonctions. Il permet "
+"d'isoler dans des paquets spécifiques certains parties moins utilisées des "
+"programmes afin de limiter le nombre d'éléments que l'utilisateur ordinaire "
+"a besoin d'installer. Ce système de gestion des dépendances permet également "
+"d'effectuer des choix parmi les divers agents de transport de courrier "
+"électronique, les serveurs X et d'autres cxomposants du système."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The first step to understanding the dependency system is to grasp the "
+"concept of a simple dependency. The meaning of a simple dependency is that a "
+"package requires another package to be installed at the same time to work "
+"properly."
+msgstr ""
+"La première étape de compréhension de la gestion de dépendances est "
+"d'examiner le fonctionnement d'une dépendance simple. Une dépendance simple "
+"est le cas où un paquet donné a besoin qu'un autre paquet soit installé "
+"simultanément pour pouvoir fonctionner correctement."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"For instance, mailcrypt is an emacs extension that aids in encrypting email "
+"with GPG. Without GPGP installed mailcrypt is useless, so mailcrypt has a "
+"simple dependency on GPG. Also, because it is an emacs extension it has a "
+"simple dependency on emacs, without emacs it is completely useless."
+msgstr ""
+"Par example, mailcrypt est une extension à Emacs qui permet de gérer le "
+"courrier électronique chiffré avec GPG. Si GPG n'est pas installé, mailcrypt "
+"est inutile. Donc le paquet mailcrypt a une dépendance simple sur GPG. De "
+"plus, étant une extension à Emacs sans lequel il est totalement inutile, il "
+"a une dépendance simple sur emacs."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The other important dependency to understand is a conflicting dependency. It "
+"means that a package, when installed with another package, will not work and "
+"may possibly be extremely harmful to the system. As an example consider a "
+"mail transport agent such as sendmail, exim or qmail. It is not possible to "
+"have two mail transport agents installed because both need to listen to the "
+"network to receive mail. Attempting to install two will seriously damage the "
+"system so all mail transport agents have a conflicting dependency with all "
+"other mail transport agents."
+msgstr ""
+"Un autre type de dépendance importante est la dépendance en conflit. Cela "
+"signifie qu'un paquet ne fonctionne pas lorsqu'il est installé en même temps "
+"qu'un autre paquet donné, ce qui peut même être dommageable pour le système. "
+"Un exemple est par exemple constitué par les agents de transport de courrier "
+"tels que sendmail, exim ou qmail. Il n'est pas possible d'installer deux "
+"agents de transport de courrier simultanément puisque les deux ont besoin "
+"d'être à l'écoute sur le réseau pour recevoir le courrier électronique. "
+"Installer deux programmes de ce type sur le même système pourrait conduire à "
+"des pertes de données, ce qui explique que tous les agents de transport de "
+"courrier électronique soient établis comme étant en conflit les uns avec les "
+"autres."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"As an added complication there is the possibility for a package to pretend "
+"to be another package. Consider that exim and sendmail for many intents are "
+"identical, they both deliver mail and understand a common interface. Hence, "
+"the package system has a way for them to declare that they are both mail-"
+"transport-agents. So, exim and sendmail both declare that they provide a "
+"mail-transport-agent and other packages that need a mail transport agent "
+"depend on mail-transport-agent. This can add a great deal of confusion when "
+"trying to manually fix packages."
+msgstr ""
+"Il existe également la possibilité pour un paquet donné de prétendre être un "
+"autre paquet. Par exemple, exim et sendmail sont analogues sur de nombreux "
+"aspects ; ils servent tous deux à acheminer le courrier électronique et leur "
+"interface d'utilisation est la même. Pour cette raison, le système de "
+"gestion des paquets leur fournit la possibilité d'indiquer qu'ils sont "
+"chacun un agent de transport de courrier (« mail transport agent ») en "
+"indiquant qu'ils fournissent (« Provides ») « mail-transport-agent ». Ainsi, "
+"un paquet qui a besoin de cette fonctionnalité peut dépendre simplement d'un "
+"paquet « mail-transprot-agent ». Cette fonctionnalité utile peut toutefois "
+"rendre la correction de certains défauts des paquets plus complexe."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"At any given time a single dependency may be met by packages that are "
+"already installed or it may not be. APT attempts to help resolve dependency "
+"issues by providing a number of automatic algorithms that help in selecting "
+"packages for installation."
+msgstr ""
+"À un instant donné, une dépendance donnée peut être ou pas remplie par des "
+"paquets installés ou pas encore installés. APT tente donc de résoudre les "
+"problèmes de dépendances par l'intermédiaire d'un certain nombre "
+"d'algorithmes automatiques qui simplifient le choix des paquets à installer."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "apt-get"
+msgstr "apt-get"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"<command>apt-get</command> provides a simple way to install packages from "
+"the command line. Unlike <command>dpkg</command>, <command>apt-get</command> "
+"does not understand .deb files, it works with the package's proper name and "
+"can only install .deb archives from a <emphasis>Source</emphasis>."
+msgstr ""
+"Le programme <command>apt-get</command> offre une méthode simple pour "
+"installer des paquets à la ligne de commande. À la différence de "
+"<command>dpkg</command>, <command>apt-get</command> ne gère pas directement "
+"les fichiers .deb files. Il travaille avec le nom des paquets et ne peut "
+"installer les archives .deb que depuis une <emphasis>Source</emphasis>."
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk
+msgid ""
+"If you are using an http proxy server you must set the http_proxy "
+"environment variable first, see sources.list(5)"
+msgstr ""
+"Si vous utilisez un serveur mandataire (« proxy ») HTTP, vous devez d'abord "
+"positionner la variable d'environnement http_proxy, voir sources.list(5)"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The first <placeholder type=\"footnote\" id=\"0\"/> thing that should be "
+"done before using <command>apt-get</command> is to fetch the package lists "
+"from the <emphasis>Sources</emphasis> so that it knows what packages are "
+"available. This is done with <literal>apt-get update</literal>. For instance,"
+msgstr ""
+"La première action <placeholder type=\"footnote\" id=\"0\"/> à effectuer "
+"avant d'utiliser <command>apt-get</command> est de récupérer les listes de "
+"paquets depuis les <emphasis>Sources</emphasis> afin que le programme sache "
+"quels sont les paquets disponibles. Cela peut être effectué avec la commande "
+"<literal>apt-get update</literal>. Par exemple,"
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+"# apt-get update\n"
+"Réception de http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Réception de http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Lecture des listes de paquets... Fait\n"
+"Construction de l'arbre des dépendances... Fait\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid "Once updated there are several commands that can be used:"
+msgstr ""
+"Une fois cette mise à jour effectuée, plusieurs commandes peuvent être "
+"utilisées :"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "upgrade"
+msgstr "upgrade"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Upgrade will attempt to gently upgrade the whole system. Upgrade will never "
+"install a new package or remove an existing package, nor will it ever "
+"upgrade a package that might cause some other package to break. This can be "
+"used daily to relatively safely upgrade the system. Upgrade will list all of "
+"the packages that it could not upgrade, this usually means that they depend "
+"on new packages or conflict with some other package. <command>dselect</"
+"command> or <literal>apt-get install</literal> can be used to force these "
+"packages to install."
+msgstr ""
+"La commande « upgrade » permet de mettre à jour le système de manière non "
+"invasive. Cette commande ne provoquera jamais l'installation de nouveaux "
+"paquets ou la suppression de paquets existants. Elle ne déclenchera pas non "
+"plus la mise à jour d'un paquet si celle-ci casse le fonctionnement d'un "
+"autre paquet. Cette commande peut être utilisé par exemple quotidiennement "
+"pour mettre à jour le système de manière relativement sûre. Lorsqu'elle est "
+"utilisée, la liste des paquets qui ne peuvent être mis à jour sera affichée. "
+"Cela est en général du au fait qu'ils dépendent de nouveaux paquets ou "
+"qu'ils entrent en conflit avec d'autres paquets. Le programme "
+"<command>dselect</command> ou la commande <literal>apt-get install</literal> "
+"peuvet être utilisés pour forcer l'installation de tels paquets."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "install"
+msgstr "install"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Install is used to install packages by name. The package is automatically "
+"fetched and installed. This can be useful if you already know the name of "
+"the package to install and do not want to go into a GUI to select it. Any "
+"number of packages may be passed to install, they will all be fetched. "
+"Install automatically attempts to resolve dependency problems with the "
+"listed packages and will print a summary and ask for confirmation if "
+"anything other than its arguments are changed."
+msgstr ""
+"La commande « install » permet d'installer des paquets par nom. Le paquet à "
+"installer est automatiquement récupéré et installé. Cela est utile lorsque "
+"le nom du paquet à installer est déjà connu et que l'on ne souhaite pas "
+"passer par une interface graphique pour le choisir. Un nombre quelconque de "
+"paquets peuvent être demandés à être installés ;  ils seront alors tous "
+"récupérés. La commande « install » résout automatiquement les problèmes de "
+"dépendances pour les paquets concernés, puis affiche un résumé avant de "
+"demander une confirmation si des actions autres que ce qui est demandé à la "
+"ligne de commande sont nécessaires."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "dist-upgrade"
+msgstr "dist-upgrade"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Dist-upgrade is a complete upgrader designed to simplify upgrading between "
+"releases of Debian. It uses a sophisticated algorithm to determine the best "
+"set of packages to install, upgrade and remove to get as much of the system "
+"to the newest release. In some situations it may be desired to use dist-"
+"upgrade rather than spend the time manually resolving dependencies in "
+"<command>dselect</command>. Once dist-upgrade has completed then "
+"<command>dselect</command> can be used to install any packages that may have "
+"been left out."
+msgstr ""
+"La commande « dist-upgrade » est une commande de mise à jour complète "
+"d'abord destinés à permettre les mises à jour entre deux versions "
+"successives de la distribution. Via un algorithme complexe, le meilleur jeu "
+"de paquets à installer, mettre à jour ou supprimer est déterminé dans le but "
+"d'amener une majorité du système vers la nouvelle version. Dans certains "
+"cas, il peut être judicieux d'utiliser « dist-upgrade » plutôt que de "
+"chercher à résoudre manuellement les dépendances avec <command>dselect</"
+"command>. Une fois que « dist-upgrade » a été utilisé, <command>dselect</"
+"command> peut servir à installer les paquets qui auraient pu être laissés de "
+"côté."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"It is important to closely look at what dist-upgrade is going to do, its "
+"decisions may sometimes be quite surprising."
+msgstr ""
+"Il est important de regarder de près ce que « dist-upgrade » car ses "
+"décisions peuvent parfois apparaître surprenantes."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"<command>apt-get</command> has several command line options that are "
+"detailed in its man page, <citerefentry><refentrytitle>apt-get</"
+"refentrytitle><manvolnum>8</manvolnum></citerefentry>. The most useful "
+"option is <literal>-d</literal> which does not install the fetched files. If "
+"the system has to download a large number of package it would be undesired "
+"to start installing them in case something goes wrong. When <literal>-d</"
+"literal> is used the downloaded archives can be installed by simply running "
+"the command that caused them to be downloaded again without <literal>-d</"
+"literal>."
+msgstr ""
+"<command>apt-get</command> fournit de nombreuses options de ligne de "
+"commande qui sont expliquées en détail dans sa page de manuel, "
+"<citerefentry><refentrytitle>apt-get</refentrytitle><manvolnum>8</"
+"manvolnum></citerefentry>. Une des plus utiles est l'option <literal>-d</"
+"literal> qui récupère sans les installer les fichiers nécessaires. Si le "
+"système a besoin de télécharger un grand nombre de paquets, il est par "
+"exemple souhaitable de pouvoir simplement les récupérer sans les installer "
+"immédiatement, au cas où quelque chose se passe mal. Une fois que <literal>-"
+"d</literal> a été utilisé, il est possible d'installer les archives "
+"téléchargées en exécutant simplement la commande qui a permis de les "
+"récupérer, sans l'option <literal>-d</literal>."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "DSelect"
+msgstr "DSelect"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The APT <command>dselect</command> method provides the complete APT system "
+"with the <command>dselect</command> package selection GUI. <command>dselect</"
+"command> is used to select the packages to be installed or removed and APT "
+"actually installs them."
+msgstr ""
+"La méthode APT de <command>dselect</command> permet d'utiliser le système "
+"APT dans son ensemble depuis l'interface graphique de gestion des paquets "
+"<command>dselect</command>. L'interface est alors utilisée pour choisir les "
+"paquets à installer ou supprimer et c'est APT qui effectue les opérations "
+"individuelles d'installation ou suppression."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"To enable the APT method you need to select [A]ccess in <command>dselect</"
+"command> and then choose the APT method. You will be prompted for a set of "
+"<emphasis>Sources</emphasis> which are places to fetch archives from. These "
+"can be remote Internet sites, local Debian mirrors or CD-ROMs. Each source "
+"can provide a fragment of the total Debian archive, APT will automatically "
+"combine them to form a complete set of packages. If you have a CD-ROM then "
+"it is a good idea to specify it first and then specify a mirror so that you "
+"have access to the latest bug fixes. APT will automatically use packages on "
+"your CD-ROM before downloading from the Internet."
+msgstr ""
+"Pour activer la méthode APT, il est nécessaire de choisir [A]ccéder dans "
+"<command>dselect</command> puis utiliser le choix permettant d'activer APT. "
+"Des <emphasis>Sources</emphasis> d'installation seront demandées, qui sont "
+"les emplacements d'où les paquets seront récupérés. Cela peut être des sites "
+"Internet distants, des miroirs locaux ou des CD. Chaque source peut fournir "
+"un sous-ensemble de l'archive complète Debian. APT les combinera "
+"automatiquement pour créer un jeu complet de paquets. Avec des supports de "
+"type CD, il est conseillé de les indiquer en premier puis de les compléter "
+"avec un miroir distant qui permettra d'obtenir les versions les plus à jour "
+"s'il y en a. APT utilisera alors les paquets disponibles sur les CD avant de "
+"les télécharger via l'Internet."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Set up a list of distribution source locations\n"
+"\n"
+" Please give the base URL of the debian distribution.\n"
+" The access schemes I know about are: http file\n"
+"\n"
+" For example:\n"
+" file:/mnt/debian,\n"
+" ftp://ftp.debian.org/debian,\n"
+" http://ftp.de.debian.org/debian,\n"
+"\n"
+"\n"
+" URL [http://llug.sep.bnl.gov/debian]:\n"
+msgstr ""
+" Réglage de la liste des emplacements sources de distribution\n"
+"\n"
+" Veuillez indiquer l'URL de base de la distribution Debian.\n"
+" Les schémas d'accès connus sont : http file\n"
+"\n"
+" Exemple:\n"
+" file:/mnt/debian,\n"
+" ftp://ftp.debian.org/debian,\n"
+" http://ftp.de.debian.org/debian,\n"
+"\n"
+"\n"
+" URL [http://llug.sep.bnl.gov/debian]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The <emphasis>Sources</emphasis> setup starts by asking for the base of the "
+"Debian archive, defaulting to a HTTP mirror. Next it asks for the "
+"distribution to get."
+msgstr ""
+"La configuration des <emphasis>Sources</emphasis> débute par l'indication de "
+"la base de l'archive Debian, par défaut un miroir HTTP. Puis la distribution "
+"est demandée."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Please give the distribution tag to get or a path to the\n"
+" package file ending in a /. The distribution\n"
+" tags are typically something like: stable unstable testing non-US\n"
+"\n"
+" Distribution [stable]:\n"
+msgstr ""
+" Veuillez indiquer le nom de la distribution à utiliser ou\n"
+" le chemin d'accès au fichier des paquets, terminé par un /.\n"
+" Les noms de distribution sont en général de la forme suivante :\n"
+" stable unstable testing non-US\n"
+"\n"
+" Distribution [stable] :\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The distribution refers to the Debian version in the archive, "
+"<emphasis>stable</emphasis> refers to the latest released version and "
+"<emphasis>unstable</emphasis> refers to the developmental version. "
+"<emphasis>non-US</emphasis> is only available on some mirrors and refers to "
+"packages that contain encryption technology or other things that cannot be "
+"exported from the United States. Importing these packages into the US is "
+"legal however."
+msgstr ""
+"La distribution fait référence à la version de Debian dans l'archive. "
+"<emphasis>stable</emphasis> est la dernière version publiée et "
+"<emphasis>unstable</emphasis> la version en développement. <emphasis>non-US</"
+"emphasis> n'est disponible que sur certains miroirs et fait référence à des "
+"paquets contenant des technologies de chiffrement et d'autres élements dont "
+"l'exportation est interdite depuis les États-Unis d'Amérique. Il est "
+"toutefois autorisé de les y importer. [Note du traducteur : à la date de "
+"cette traduction, 2010, cette notion est totalement obsolète]."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Please give the components to get\n"
+" The components are typically something like: main contrib non-free\n"
+"\n"
+" Components [main contrib non-free]:\n"
+msgstr ""
+" Veuillez indiquer les composants à utiliser\n"
+" Les composants sont en général de la forme suivante :\n"
+" main contrib non-free\n"
+"\n"
+" Composants [main contrib non-free] :\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The components list refers to the list of sub distributions to fetch. The "
+"distribution is split up based on software licenses, main being DFSG free "
+"packages while contrib and non-free contain things that have various "
+"restrictions placed on their use and distribution."
+msgstr ""
+"La liste des composants correspond à la liste des sous-ensemble de la "
+"distribution que l'on souhaite utiliser. Les distributions sont en général "
+"divisées ainsi pour des raisons de licences. La sous-distribution « main » "
+"comporte les paquets libre selon les principes du logiciel libre selon "
+"Debian (DFSG) alors que contrib et non-free correspondent à des éléments qui "
+"comprennent des restrictions de distribution ou d'utilisation."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Any number of sources can be added, the setup script will continue to prompt "
+"until you have specified all that you want."
+msgstr ""
+"Un nombre quelconque de sources peuvent être ajoutées. Le script de "
+"configuration continuera à les demander tant que vous n'indiquerez pas que "
+"le processus est terminé."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Before starting to use <command>dselect</command> it is necessary to update "
+"the available list by selecting [U]pdate from the menu. This is a superset "
+"of <literal>apt-get update</literal> that makes the fetched information "
+"available to <command>dselect</command>. [U]pdate must be performed even if "
+"<literal>apt-get update</literal> has been run before."
+msgstr ""
+"Avant d'utiliser <command>dselect</command>, il est nécessaire de mettre à "
+"jour la liste de ce qui est disponible en choisissant « [M]ise à jour » "
+"depuis le menu. Cette action exécutera la commande « apt-get update », ce "
+"qui rendra les informations récupérées disponibles pour <command>dselect</"
+"command>. Elle doit être utilisée même si la commande « apt-get » a déjà été "
+"utilisée sur ce système."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"You can then go on and make your selections using [S]elect and then perform "
+"the installation using [I]nstall. When using the APT method the [C]onfig and "
+"[R]emove commands have no meaning, the [I]nstall command performs both of "
+"them together."
+msgstr ""
+"Une fois cela effectué, vous pouvez poursuivre et utiliser l'option "
+"« [S]électionner » pour choisir les paquets à installer puis « [I]nstaller » "
+"pour les installer. Lorsque la méthode APT est utilisée, les options "
+"« [C]onfigurer » et « [R]etirer » ne sont pas utilisées, car « [I]nstaller » "
+"fait l'ensemble des opérations."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"By default APT will automatically remove the package (.deb) files once they "
+"have been successfully installed. To change this behavior place "
+"<literal>Dselect::clean \"prompt\";</literal> in /etc/apt/apt.conf."
+msgstr ""
+"Par défait, APT supprimera automatiquement les fichiers des paquets "
+"(fichiers .deb) une fois qu'ils ont été installés correctement. Pour "
+"modifier ce comportement, vous pouvez utiliser <literal>Dselect::clean "
+"\"prompt\";</literal> dans /etc/apt/apt.conf."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "The Interface"
+msgstr "L'interface"
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk
+msgid ""
+"The <command>dselect</command> method actually is a set of wrapper scripts "
+"to <command>apt-get</command>. The method actually provides more "
+"functionality than is present in <command>apt-get</command> alone."
+msgstr ""
+"La méthode <command>dselect</command> consiste en fait en un jeu de scripts "
+"qui encapsulent <command>apt-get</command>. Cela approte des fonctionnalités "
+"supplémentaires à celles d'<command>apt-get</command> utilisé isolément."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Both that APT <command>dselect</command> method and <command>apt-get</"
+"command> share the same interface. It is a simple system that generally "
+"tells you what it will do and then goes and does it. <placeholder type="
+"\"footnote\" id=\"0\"/> After printing out a summary of what will happen APT "
+"then will print out some informative status messages so that you can "
+"estimate how far along it is and how much is left to do."
+msgstr ""
+"La méthode APT de <command>dselect</command> et le programme <command>apt-"
+"get</command> utilisent la même interface. Elle consiste en un système "
+"simple qui indique les opérations qui seront effectuées puis les réalise."
+"<placeholder type=\"footnote\" id=\"0\"/> Après avoir indiqué un résumé des "
+"opérations qui seront effectuées, APT donnera un certain nombre "
+"d'informations permettant d'estimer sa progression, tout au long des actions "
+"qu'il effectue. "
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Startup"
+msgstr "Démarrage"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Before all operations except update, APT performs a number of actions to "
+"prepare its internal state. It also does some checks of the system's state. "
+"At any time these operations can be performed by running <literal>apt-get "
+"check</literal>."
+msgstr ""
+"Avant toute opération autre qu'une mise à jour, APT effectue un certain "
+"nombre d'actions pour préparer ses mécaismes internes de fonctionnement. Il "
+"vérifie également l'état du système. Ces opérations peuvent être effectuées "
+"isolément avec la commande <literal>apt-get check</literal>."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+"# apt-get check\n"
+"Lecture de la liste des paquets... Fait\n"
+"Construction de l'arbre des dépendances... Fait\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The first thing it does is read all the package files into memory. APT uses "
+"a caching scheme so this operation will be faster the second time it is run. "
+"If some of the package files are not found then they will be ignored and a "
+"warning will be printed when apt-get exits."
+msgstr ""
+"En premier lieu, la liste des paquets est lue et placée en mémoire. APT "
+"utilise un mécanisme de cache et cette opération sera plus rapide si elle "
+"est effectuée une deuxième fois.Si certains des fichiers de paquets ne sont "
+"pas trouvés, ils seront ignorés et une informatique sera affichée quand apt-"
+"get se terminera."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The final operation performs a detailed analysis of the system's "
+"dependencies. It checks every dependency of every installed or unpacked "
+"package and considers if it is OK. Should this find a problem then a report "
+"will be printed out and <command>apt-get</command> will refuse to run."
+msgstr ""
+"Ensuite, une analyse détaillée des dépendances du système est réalisée. Les "
+"dépendances de chaque paquet installé ou décompressé sont vérifiées. Si un "
+"problème est trouvé, il sera affiché et <command>apt-get</command> bloquera "
+"des opérations ultérieures."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+"You might want to run 'apt --fix-broken install' to correct these.\n"
+"Sorry, but the following packages have unmet dependencies:\n"
+" 9fonts: Depends: xlib6g but it is not installed\n"
+" uucp: Depends: mailx but it is not installed\n"
+" blast: Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" adduser: Depends: perl-base but it is not installed\n"
+" aumix: Depends: libgpmg1 but it is not installed\n"
+" debiandoc-sgml: Depends: sgml-base but it is not installed\n"
+" bash-builtins: Depends: bash (&gt;= 2.01) but 2.0-3 is installed\n"
+" cthugha: Depends: svgalibg1 but it is not installed\n"
+" Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" libreadlineg2: Conflicts:libreadline2 (&lt;&lt; 2.1-2.1)\n"
+msgstr ""
+"# apt-get check\n"
+"Lecture de la liste des paquets... Fait\n"
+"Construction de l'arbre des dépendances... Fait\n"
+"Vous pouvez lancer « apt --fix-broken install » pour corriger ces problèmes.\n"
+"Les paquets suivants contiennent des dépendances non satisfaites :\n"
+" 9fonts: Depends: xlib6g mais il n'est pas installé\n"
+" uucp: Depends: mailx mais il n'est pas installé\n"
+" blast: Depends: xlib6g (&gt;= 3.3-5) mais il n'est pas installé\n"
+" adduser: Depends: perl-base mais il n'est pas installé\n"
+" aumix: Depends: libgpmg1 mais il n'est pas installé\n"
+" debiandoc-sgml: Depends: sgml-base mais il n'est pas installé\n"
+" bash-builtins: Depends: bash (&gt;= 2.01) but 2.0-3 is installed\n"
+" cthugha: Depends: svgalibg1 mais il n'est pas installé\n"
+" Depends: xlib6g (&gt;= 3.3-5) mais il n'est pas installé\n"
+" libreadlineg2: Conflicts:libreadline2 (&lt;&lt; 2.1-2.1)\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"In this example the system has many problems, including a serious problem "
+"with libreadlineg2. For each package that has unmet dependencies a line is "
+"printed out indicating the package with the problem and the dependencies "
+"that are unmet. A short explanation of why the package has a dependency "
+"problem is also included."
+msgstr ""
+"Dans cet exemple, le système comporte plusieurs problèmes, notamment un "
+"problème sérieux avec libreadline2g. Une ligne est affichée pour chaque "
+"paquet dont les dépendances ne sont pas satisfaites, indiquant quel est le "
+"problème. Une explication simple du problème est donnée."
+
+#. type: Content of: <book><chapter><section><para><footnote><para>
+#: guide.dbk
+msgid ""
+"APT however considers all known dependencies and attempts to prevent broken "
+"packages"
+msgstr ""
+"Cependant, APT prend en compte les dépendances connues et s'efforce d'éviter "
+"que cette situation ne se produise"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"There are two ways a system can get into a broken state like this. The first "
+"is caused by <command>dpkg</command> missing some subtle relationships "
+"between packages when performing upgrades. <placeholder type=\"footnote\" id="
+"\"0\"/>. The second is if a package installation fails during an operation. "
+"In this situation a package may have been unpacked without its dependents "
+"being installed."
+msgstr ""
+"Il existe deux façons pour le système d'aboutir à cet état. Cela peut "
+"d'abord être causé par des subtilités de relations entre les paquets que "
+"<command>dpkg</command> aurait manquées lors de mises à jour. <placeholder "
+"type=\"footnote\" id=\"0\"/>. Cela peut également être dû à l'échec "
+"antérieur d'une installation de paquet. Dans le cas présent, un paquet a pu "
+"être décompressé sans que ses dépendances ne soient satisfaites."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The second situation is much less serious than the first because APT places "
+"certain constraints on the order that packages are installed. In both cases "
+"supplying the <literal>-f</literal> option to <command>apt-get</command> "
+"will cause APT to deduce a possible solution to the problem and then "
+"continue on. The APT <command>dselect</command> method always supplies the "
+"<literal>-f</literal> option to allow for easy continuation of failed "
+"maintainer scripts."
+msgstr ""
+"La seconde situation est moins grave que la première car APT met certaines "
+"contraintes sur l'ordre d'installation des paquets. Dans les deux cas, "
+"l'option <literal>-f</literal> utilisée avec <command>apt-get</command> "
+"conduira APT à rechercher une solution possible puis à continuer. La méthode "
+"APT de <command>dselect</command> utilise toujours cette option <literal>-f</"
+"literal> afin de pouvoir poursuivre plus facilement ses opérations si un "
+"script de mainteneur échoue de manière inopinée."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"However, if the <literal>-f</literal> option is used to correct a seriously "
+"broken system caused by the first case then it is possible that it will "
+"either fail immediately or the installation sequence will fail. In either "
+"case it is necessary to manually use dpkg (possibly with forcing options) to "
+"correct the situation enough to allow APT to proceed."
+msgstr ""
+"Cependant, si l'option <literal>-f</literal> est utilisée pour corriger un "
+"système fortement corrompu qui est dans le premier cas, il est possible que "
+"l'opération échoue immédiatement ou au cours des diverses tentatives de "
+"réparation effectuées. Dans tous les cas, il peut être nécessaire de "
+"corriger la situation manuellement avec dpkg (éventuellement en utilisant "
+"des options pour forcer certains opérations) avant de pouvoir utiliser à "
+"nouveau APT."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "The Status Report"
+msgstr "Le rapport d'état"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Before proceeding <command>apt-get</command> will present a report on what "
+"will happen. Generally the report reflects the type of operation being "
+"performed but there are several common elements. In all cases the lists "
+"reflect the final state of things, taking into account the <literal>-f</"
+"literal> option and any other relevant activities to the command being "
+"executed."
+msgstr ""
+"Avant de démarrer ses actions, <command>apt-get</command> en affiche un "
+"résumé. En général, ce rapport dépend du type d'opération qui est "
+"entreprise, mais de nombreux éléments sont communs aux différents types de "
+"rapports. Ainsi, dans tous les cas, les listes reflètent l'état final du "
+"système, en tenant compte de l'option <literal>-f</literal> et des autres "
+"opérations découlant du type de commande utilisée."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Extra Package list"
+msgstr "La liste des paquets supplémentaires"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following extra packages will be installed:\n"
+" libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl\n"
+" mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base\n"
+" bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy\n"
+" squake pgp-i python-base debmake ldso perl libreadlineg2\n"
+" ssh\n"
+msgstr ""
+"Les paquets supplémentaires suivants seront installés :\n"
+" libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl\n"
+" mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base\n"
+" bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy\n"
+" squake pgp-i python-base debmake ldso perl libreadlineg2\n"
+" ssh\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The Extra Package list shows all of the packages that will be installed or "
+"upgraded in excess of the ones mentioned on the command line. It is only "
+"generated for an <literal>install</literal> command. The listed packages are "
+"often the result of an Auto Install."
+msgstr ""
+"La liste des paquets supplémentaires montre tous les paquets installés ou "
+"mis à jour en plus de ceux indiqués à la ligne de commande. Elle n'apparaît "
+"qu'avec la commande <literal>install</literal>. Le plus souvent, les paquets "
+"concernés sont le résultat d'une installation automatique."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Packages to Remove"
+msgstr "Les paquets à supprimer"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following packages will be REMOVED:\n"
+" xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix\n"
+" xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel\n"
+" xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid\n"
+" nas xpilot xfig\n"
+msgstr ""
+"Les paquets suivants seront ENLEVÉS :\n"
+" xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix\n"
+" xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel\n"
+" xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid\n"
+" nas xpilot xfig\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The Packages to Remove list shows all of the packages that will be removed "
+"from the system. It can be shown for any of the operations and should be "
+"given a careful inspection to ensure nothing important is to be taken off. "
+"The <literal>-f</literal> option is especially good at generating packages "
+"to remove so extreme care should be used in that case. The list may contain "
+"packages that are going to be removed because they are only partially "
+"installed, possibly due to an aborted installation."
+msgstr ""
+"La liste des paquets à enlever montre tous les paquets qui seront supprimés "
+"du système. Elle peut apparaître pour tout type d'opération. Il est "
+"conseillé de l'inspecter en détail afin de vérifier qu'aucun paquet "
+"important ne va être supprimé. L'option <literal>-f</literal> provoque "
+"notamment souvent des suppressions de paquets et il est déconseillé d'être "
+"particulièrement attentif dans ce genre de cas. La liste peut comporter des "
+"paquets qui seront supprimés parce qu'ils sont seulement partiellement "
+"installés, par exemple après l'interruption d'une opération d'installation."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The New Packages list"
+msgstr "La liste des nouveaux paquets"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following NEW packages will installed:\n"
+" zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base\n"
+msgstr ""
+"Les NOUVEAUX paquets suivants seront installés :\n"
+" zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The New Packages list is simply a reminder of what will happen. The packages "
+"listed are not presently installed in the system but will be when APT is "
+"done."
+msgstr ""
+"La liste des nouveaux paquets est un simple rappel des opérations qui vont "
+"avoir lieu. Les paquets affichés ne sont pas encore présents sur le système "
+"mais le seront une fois qu'APT aura terminé."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Kept Back list"
+msgstr "La liste des paquets conservés"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following packages have been kept back\n"
+" compface man-db tetex-base msql libpaper svgalib1\n"
+" gs snmp arena lynx xpat2 groff xscreensaver\n"
+msgstr ""
+"Les paquets suivants ont été conservés :\n"
+" compface man-db tetex-base msql libpaper svgalib1\n"
+" gs snmp arena lynx xpat2 groff xscreensaver\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Whenever the whole system is being upgraded there is the possibility that "
+"new versions of packages cannot be installed because they require new things "
+"or conflict with already installed things. In this case the package will "
+"appear in the Kept Back list. The best way to convince packages listed there "
+"to install is with <literal>apt-get install</literal> or by using "
+"<command>dselect</command> to resolve their problems."
+msgstr ""
+"À chaque fois que le système entier est mis à jour, il est possible que de "
+"nouvelles versions de paquets ne puissent pas être installées car elles ont "
+"besoins ne nouveaux paquets ou qu'elles entrent en conflit avec des paquets "
+"existants. Ces paquets apparaîtront alors dans la liste des paquets "
+"conservés. Le meilleure méthode pour effectivement installer ces paquets est "
+"souvent de le faire explicitement avec la commande <literal>apt-get install</"
+"literal> ou avec <command>dselect</command>."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "Held Packages warning"
+msgstr "L'avertissement pour paquets retenus"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following held packages will be changed:\n"
+" cvs\n"
+msgstr ""
+"Les paquets retenus suivants seront changés :\n"
+" cvs\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Sometimes you can ask APT to install a package that is on hold, in such a "
+"case it prints out a warning that the held package is going to be changed. "
+"This should only happen during dist-upgrade or install."
+msgstr ""
+"Il peut parfois être utile de demander à APT d'installer un paquet retenu "
+"(« hold »). Dans ce cas, le programme affichera un avertissement indiquant "
+"que le paquet retenu va être modifié. Cela ne se produira que lors de "
+"l'utilisation des commandes dist-upgrade ou install."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "Final summary"
+msgstr "Résumé final"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Finally, APT will print out a summary of all the changes that will occur."
+msgstr ""
+"Enfin, APT affichera un résumé de toutes les opérations qui prendront place."
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"206 packages upgraded, 8 newly installed, 23 to remove and 51 not upgraded.\n"
+"12 packages not fully installed or removed.\n"
+"Need to get 65.7M/66.7M of archives. After unpacking 26.5M will be used.\n"
+msgstr ""
+"206 paquets mis à jour, 8 nouvellement installés, 23 à enlever et 51 non mis à jour.\n"
+"12 paquets partiellement installés ou enlevés.\n"
+"Il est nécessaire de prendre 65,7Mo/66,7Mo dans les archives. Après cette opération, 26,5Mo d'espace disque supplémentaires seront utilisés.\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The first line of the summary simply is a reduced version of all of the "
+"lists and includes the number of upgrades - that is packages already "
+"installed that have new versions available. The second line indicates the "
+"number of poorly configured packages, possibly the result of an aborted "
+"installation. The final line shows the space requirements that the "
+"installation needs. The first pair of numbers refer to the size of the "
+"archive files. The first number indicates the number of bytes that must be "
+"fetched from remote locations and the second indicates the total size of all "
+"the archives required. The next number indicates the size difference between "
+"the presently installed packages and the newly installed packages. It is "
+"roughly equivalent to the space required in /usr after everything is done. "
+"If a large number of packages are being removed then the value may indicate "
+"the amount of space that will be freed."
+msgstr ""
+"La première ligne de ce résumé est une version simplifiée de l'ensemble des "
+"listes et indique le nombre de mises à jour (paquets déjà installés et pour "
+"lesquels une nouvelle version est disponible). La deuxième ligne indique le "
+"nombre de paquets incorrectement configurés, en raison notamment "
+"d'installations interrompues. La dernière ligne indique l'espace disque "
+"nécessaire pour effectuer l'installation. Le premier couple de nombre fait "
+"référence à la taille des fichiers d'archive. Le premier nombre est le "
+"nombre d'octets à récupérer depuis les sites distants et le deuxième la "
+"taille totale de tous les fichiers nécessaires. Le nombre suivant représente "
+"la différence d'espace occupé entre les paquets installés actuellement et ce "
+"qui sera ensuite installé. Il est grossièrement égal à l'espace "
+"supplémentaire nécessaire dans /usr après achèvement de toutes les "
+"opérations. Si de nombreux paquets sont supprimés, cette valeur peut "
+"représenter l'espace qui est alors libéré."
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Some other reports can be generated by using the -u option to show packages "
+"to upgrade, they are similar to the previous examples."
+msgstr ""
+"D'autres rapports peuvent être créés avec l'option -u qui affiche les "
+"paquets à mettre à jour. Il sont analogues aux exemples précédents."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "The Status Display"
+msgstr "L'affichage d'état"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"During the download of archives and package files APT prints out a series of "
+"status messages."
+msgstr ""
+"Pendant le téléchargement des fichiers des paquets, APT affiche un certain "
+"nombre de messages d'avancement."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+"11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
+msgstr ""
+"# apt-get update\n"
+"Réception de :1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Réception de :2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Atteint http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+"Réception de :4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Réception de :5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+"11% [5 testing/non-free `Attente du fichier' 0/32.1k 0%] 2203b/s 1m52s\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The lines starting with <emphasis>Get</emphasis> are printed out when APT "
+"begins to fetch a file while the last line indicates the progress of the "
+"download. The first percent value on the progress line indicates the total "
+"percent done of all files. Unfortunately since the size of the Package files "
+"is unknown <literal>apt-get update</literal> estimates the percent done "
+"which causes some inaccuracies."
+msgstr ""
+"Les lignes qui débutent par « Réception de » sont affichées quand APT "
+"démarre la récupération d'un fichier alors que la dernière ligne indique la "
+"progression du téléchargement. La première valeur de pourcentage de la ligne "
+"est le pourcentage de téléchargement déjà effectué, pour l'ensemble des "
+"fichiers. Il faut noter que, comme la taille des fichiers de paquets n'est "
+"pas connue, <literal>apt-get update</literal> estime le pourcentage effectué "
+"ce qui peut conduire à des imprécisions."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The next section of the status line is repeated once for each download "
+"thread and indicates the operation being performed and some useful "
+"information about what is happening. Sometimes this section will simply read "
+"<emphasis>Forking</emphasis> which means the OS is loading the download "
+"module. The first word after the [ is the fetch number as shown on the "
+"history lines. The next word is the short form name of the object being "
+"downloaded. For archives it will contain the name of the package that is "
+"being fetched."
+msgstr ""
+"La section suivante de la ligne d'état est répétée pour chaque sous-tâche de "
+"téléchargement. Elle indique l'opération effectuée et d'autres informations "
+"utiles sur ce qui est en cours. Cette section indiquera parfois "
+"<emphasis>Forking</emphasis> ce qui indique que le système charge le module "
+"de téléchargement. Le premier mot après le crochet ouvrant ([) est le numéro "
+"d'ordre de téléchargement comme indiqué dans les lignes d'historique. Le mot "
+"suivant est le nom court de l'objet téléchargé. Pour les archives, il s'agit "
+"du nom du paquet en cours de récupération."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Inside of the single quote is an informative string indicating the progress "
+"of the negotiation phase of the download. Typically it progresses from "
+"<emphasis>Connecting</emphasis> to <emphasis>Waiting for file</emphasis> to "
+"<emphasis>Downloading</emphasis> or <emphasis>Resuming</emphasis>. The final "
+"value is the number of bytes downloaded from the remote site. Once the "
+"download begins this is represented as <literal>102/10.2k</literal> "
+"indicating that 102 bytes have been fetched and 10.2 kilobytes is expected. "
+"The total size is always shown in 4 figure notation to preserve space. After "
+"the size display is a percent meter for the file itself. The second last "
+"element is the instantaneous average speed. This values is updated every 5 "
+"seconds and reflects the rate of data transfer for that period. Finally is "
+"shown the estimated transfer time. This is updated regularly and reflects "
+"the time to complete everything at the shown transfer rate."
+msgstr ""
+"À l'intérieur des guillemets, on trouve une information sur la progression "
+"de la phase de négociation du téléchargement. Usuellement, elle évolue de "
+"<emphasis>Connexion</emphasis> à <emphasis>Attente du fichier</emphasis>, "
+"puis <emphasis>Téléchargement</emphasis> ou <emphasis>Reprise</emphasis>. La "
+"valeur finale est le nombre d'octets téléchargés depuis le site distant. Une "
+"fois le téléchargement commencé, cette indication prend la forme "
+"<literal>102/10,2ko</literal>, ce qui indique que 102 octets ont été "
+"téléchargés et que 10,2 kilo-octets sont attendus. La taille totale est "
+"toujours représentées sur 4 digits pour des raisons de place disponible. "
+"Après cet affichage de taille, se trouve une barre de progression pour le "
+"téléchargement du fichier lui-même. L'élément suivant est la vitesse "
+"instantanée de téléchargement. Elle est mise à jour toutes les 5 secondes et "
+"représente la vitesse de transfert pour cette période. Enfin, est affiché la "
+"temps de téléchargement restant estimé. Cette information est mise "
+"régulièrement à jour et représete la durée estimée de téléchargement de "
+"toute ce qui est nécessaire, à la vitesse affichée."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The status display updates every half second to provide a constant feedback "
+"on the download progress while the Get lines scroll back whenever a new file "
+"is started. Since the status display is constantly updated it is unsuitable "
+"for logging to a file, use the <literal>-q</literal> option to remove the "
+"status display."
+msgstr ""
+"La ligne d'état est mise à jour chaque demi-seconde afin de fournir un "
+"retour régulier sur la progression du téléchargement alors que les lignes "
+"« Réception de » reculent d'une unité à chaque fois qu'un nouveau fichier "
+"est démarré. Comme l'état est mis à jour régulièrement, il ne peut pas "
+"servir pour la journalisation dans un fichier. Il est nécessaire d'utiliser "
+"l'option <literal>-q</literal> pour supprimer cet affichage."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Dpkg"
+msgstr "Dpkg"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"APT uses <command>dpkg</command> for installing the archives and will switch "
+"over to the <command>dpkg</command> interface once downloading is completed. "
+"<command>dpkg</command> will also ask a number of questions as it processes "
+"the packages and the packages themselves may also ask several questions. "
+"Before each question there is usually a description of what it is asking and "
+"the questions are too varied to discuss completely here."
+msgstr ""
+"APT utilise <command>dpkg</command> pour installer les archives et bascule "
+"vers l'interface de ce programme une fois le téléchargement terminé. "
+"<command>dpkg</command> peut poser un certain nombre de questions pendant le "
+"traitement des paquets, qui peuvent eux-même être amener à poser des "
+"questions. Chacune de ces questions comporte un description de ce qui est "
+"attendu et elles sont trop variables d'un paquet à l'autre pour qu'une "
+"description détaillée soit donnée dans ce document."
+
+#. type: Content of: <book><title>
+#: offline.dbk
+msgid "Using APT Offline"
+msgstr "Utilisation d'APT hors ligne"
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: offline.dbk
+msgid ""
+"This document describes how to use APT in a non-networked environment, "
+"specifically a 'sneaker-net' approach for performing upgrades."
+msgstr ""
+"Ce document décrit la méthode d'utilisation d'APT hors connexion à un "
+"réseau, et plus particulièrement une approche « sneaker-net » pour les mises "
+"à jour."
+
+#. type: Content of: <book><bookinfo>
+#: offline.dbk
+msgid ""
+"<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+"<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright>"
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Introduction"
+msgstr "Introduction"
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "Overview"
+msgstr "Aperçu"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Normally APT requires direct access to a Debian archive, either from a local "
+"media or through a network. Another common complaint is that a Debian "
+"machine is on a slow link, such as a modem and another machine has a very "
+"fast connection but they are physically distant."
+msgstr ""
+"Normalement, APT a besoin d'avoir un accès direct à une archive Debian, soit "
+"sur un support local, soit via le réseau. Un autre cas intéressant à traiter "
+"est celui d'une machine dotée d'une liaison peu rapide (comme un modem) avec "
+"une autre possédant une connexion à haut débit mais située à distance."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The solution to this is to use large removable media such as a Zip disc or a "
+"SuperDisk disc. These discs are not large enough to store the entire Debian "
+"archive but can easily fit a subset large enough for most users. The idea is "
+"to use APT to generate a list of packages that are required and then fetch "
+"them onto the disc using another machine with good connectivity. It is even "
+"possible to use another Debian machine with APT or to use a completely "
+"different OS and a download tool like wget. Let <emphasis>remote host</"
+"emphasis> mean the machine downloading the packages, and <emphasis>target "
+"host</emphasis> the one with bad or no connection."
+msgstr ""
+"Une solution est d'utiliser un support amovible de grande taille tel qu'un "
+"disque Zip ou un disque Superdisk (NdT : ce document est daté..:-)). Bien "
+"que ces supports ne disposent pas d'assez de place pour héberger une archive "
+"Debian complète, ils peuvent toutefois contenir un sous-ensemble de taille "
+"suffisante pour les besoins de nombreux utilisateurs. L'idée est alors "
+"d'utiliser APT pour créer une liste de paquets nécessaires, puis de les "
+"récupérer avec une machine disposant d'une bonne connectivité. Il est même "
+"possible d'utiliser soit une autre machine Debian avec APT soit un autre "
+"système d'exploitation et un outil de téléchargement tel que wget. Dans ce "
+"qui suit, <emphasis>machine distante</emphasis> désignera la machine qui "
+"télécharge les paquets et <emphasis>machine cible</emphasis>, celle qui a "
+"une connectivité limitée."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"This is achieved by creatively manipulating the APT configuration file. The "
+"essential premise to tell APT to look on a disc for it's archive files. Note "
+"that the disc should be formatted with a filesystem that can handle long "
+"file names such as ext2, fat32 or vfat."
+msgstr ""
+"Il est nécessaire de manipuler le fichier de configuration d'APT de manière "
+"intelligente. Le préalable est d'indiquer à APT d'examiner le contenu d'un "
+"disque pour y trouver les fichiers d'archive. Ce disque doit utiliser un "
+"système de fichier autorisant les noms longs, par exemple ext2, fat32 ou "
+"vfat."
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Using APT on both machines"
+msgstr "Utilisation d'APT sur les deux machines"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"APT being available on both machines gives the simplest configuration. The "
+"basic idea is to place a copy of the status file on the disc and use the "
+"remote machine to fetch the latest package files and decide which packages "
+"to download. The disk directory structure should look like:"
+msgstr ""
+"Si APT existe sur les deux machines, le cas est relativement simple. L'idée "
+"de base est de mettre une copie du fichier d'état sur le disque et "
+"d'utiliser la machine distante pour récupérer la dernière liste de paquets "
+"et choisir ceux à télécharger. La structure des répertoires du disque "
+"devraient ressembler à :"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" /disc/\n"
+" archives/\n"
+" partial/\n"
+" lists/\n"
+" partial/\n"
+" status\n"
+" sources.list\n"
+" apt.conf\n"
+msgstr ""
+" /disc/\n"
+" archives/\n"
+" partial/\n"
+" lists/\n"
+" partial/\n"
+" status\n"
+" sources.list\n"
+" apt.conf\n"
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "The configuration file"
+msgstr "Le fichier de configuration"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The configuration file should tell APT to store its files on the disc and to "
+"use the configuration files on the disc as well. The sources.list should "
+"contain the proper sites that you wish to use from the remote machine, and "
+"the status file should be a copy of <emphasis>/var/lib/dpkg/status</"
+"emphasis> from the <emphasis>target host</emphasis>. Please note, if you are "
+"using a local archive you must use copy URIs, the syntax is identical to "
+"file URIs."
+msgstr ""
+"Le fichier de configuration indique à APT où conserver ses fichiers sur le "
+"disque et d'utiliser également les fichiers de configuration du disque. Le "
+"fichier sources.list devrait référencer les sites que vous souhaitez "
+"utiliser depuis la machine distante et le fichier d'état doit être une copie "
+"de <emphasis>/var/lib/dpkg/status</emphasis> de l'<emphasis>ordinateur "
+"cible</emphasis>. Veuillez noter que si sous utilisez une archive locale, "
+"les URI doivent en être copiés. La syntaxe est la même que celle des URI "
+"fichiers."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"<emphasis>apt.conf</emphasis> must contain the necessary information to make "
+"APT use the disc:"
+msgstr ""
+"<emphasis>apt.conf</emphasis> doit avoir les informations nécessaires pour "
+"qu'APT utilise le disque.disc:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" APT\n"
+" {\n"
+" /* This is not necessary if the two machines are the same arch, it tells\n"
+" the remote APT what architecture the target machine is */\n"
+" Architecture \"i386\";\n"
+"\n"
+" Get::Download-Only \"true\";\n"
+" };\n"
+"\n"
+" Dir\n"
+" {\n"
+" /* Use the disc for state information and redirect the status file from\n"
+" the /var/lib/dpkg default */\n"
+" State \"/disc/\";\n"
+" State::status \"status\";\n"
+"\n"
+" // Binary caches will be stored locally\n"
+" Cache::archives \"/disc/archives/\";\n"
+" Cache \"/tmp/\";\n"
+"\n"
+" // Location of the source list.\n"
+" Etc \"/disc/\";\n"
+" };\n"
+msgstr ""
+" APT\n"
+" {\n"
+" /* This is not necessary if the two machines are the same arch, it tells\n"
+" the remote APT what architecture the target machine is */\n"
+" Architecture \"i386\";\n"
+"\n"
+" Get::Download-Only \"true\";\n"
+" };\n"
+"\n"
+" Dir\n"
+" {\n"
+" /* Use the disc for state information and redirect the status file from\n"
+" the /var/lib/dpkg default */\n"
+" State \"/disc/\";\n"
+" State::status \"status\";\n"
+"\n"
+" // Binary caches will be stored locally\n"
+" Cache::archives \"/disc/archives/\";\n"
+" Cache \"/tmp/\";\n"
+"\n"
+" // Location of the source list.\n"
+" Etc \"/disc/\";\n"
+" };\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"More details can be seen by examining the apt.conf man page and the sample "
+"configuration file in <emphasis>/usr/share/doc/apt/examples/apt.conf</"
+"emphasis>."
+msgstr ""
+"Plus d'informations peuvent être trouvées dans la page de manuel du fichier "
+"apt.conf et dans l'exemple de fichier de configuration que l'on peut trouver "
+"dans <emphasis>/usr/share/doc/apt/examples/apt.conf</emphasis>."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"On the target machine the first thing to do is mount the disc and copy "
+"<emphasis>/var/lib/dpkg/status</emphasis> to it. You will also need to "
+"create the directories outlined in the Overview, <emphasis>archives/partial/"
+"</emphasis> and <emphasis>lists/partial/</emphasis>. Then take the disc to "
+"the remote machine and configure the sources.list. On the remote machine "
+"execute the following:"
+msgstr ""
+"Sur la machine cible, il est d'abord nécessaire de monter le disque et y "
+"copier le fichier <emphasis>/var/lib/dpkg/status</emphasis>. Il sera aussi "
+"nécessaire de créer les répertoires dans l'aperçu (Overview), "
+"<emphasis>archives/partial/</emphasis> and <emphasis>lists/partial/</"
+"emphasis>. Connecter ensuite le disque à la machine distante et configurer "
+"le fichier sources.list. Sur la machine distante, exécuter la séquence de "
+"commandes suivante :"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get update\n"
+" [ APT fetches the package files ]\n"
+" # apt-get dist-upgrade\n"
+" [ APT fetches all the packages needed to upgrade the target machine ]\n"
+msgstr ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get update\n"
+" [ APT récupère les fichiers des paquets ]\n"
+" # apt-get dist-upgrade\n"
+" [ APT récupère tous les fichiers nécessaires à la mise à jour de la machine distante ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The dist-upgrade command can be replaced with any other standard APT "
+"commands, particularly dselect-upgrade. You can even use an APT front end "
+"such as <emphasis>dselect</emphasis>. However this presents a problem in "
+"communicating your selections back to the local computer."
+msgstr ""
+"La commande dist-upgrade peut être remplacée par toute autres commande "
+"usuelle d'APT, notamment dselect-upgrade. Il est même possible d'utiliser "
+"une interface comme <emphasis>dselect</emphasis>. Cependant, cela complique "
+"la communication des choix vers l'ordinateur local."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Now the disc contains all of the index files and archives needed to upgrade "
+"the target machine. Take the disc back and run:"
+msgstr ""
+"Après cette opération, le disque contiendra tous les fichiers d'index et les "
+"archives nécessaires pour mettre à jour la machine cible. Il est alors "
+"possible d'y ramener le disque et exécuter :"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get check\n"
+" [ APT generates a local copy of the cache files ]\n"
+" # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
+" [ Or any other APT command ]\n"
+msgstr ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get check\n"
+" [ APT crée la copie locale des fichiers de cache ]\n"
+" # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
+" [ Ou toute autre commande APT ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"It is necessary for proper function to re-specify the status file to be the "
+"local one. This is very important!"
+msgstr ""
+"Pour un fonctionnement correct, il est indispensable de ré-indiquer que le "
+"fichier d'état est le fichier local. Cela est très important."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"If you are using dselect you can do the very risky operation of copying disc/"
+"status to /var/lib/dpkg/status so that any selections you made on the remote "
+"machine are updated. I highly recommend that people only make selections on "
+"the local machine - but this may not always be possible. DO NOT copy the "
+"status file if dpkg or APT have been run in the mean time!!"
+msgstr ""
+"Si vous utilisez dselect, vous pouvez effectuer l'opération dangereuse "
+"consistant à copier disc/status en /var/lib/dpkg/status, afin que les choix "
+"effectués sur la machine distante soient mis à jour. Il est recommandé de "
+"n'éffectuer les choix que sur la machine locale, mais ce n'est pas toujours "
+"possible. NE COPIEZ PAS le fichier d'état si dpkg ou APT ont été exécutés "
+"dans l'intervalle."
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Using APT and wget"
+msgstr "Utilisation d'APT et wget"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"<emphasis>wget</emphasis> is a popular and portable download tool that can "
+"run on nearly any machine. Unlike the method above this requires that the "
+"Debian machine already has a list of available packages."
+msgstr ""
+"<emphasis>wget</emphasis> est un outil classique de téléchargement qui peut "
+"être exécuté sur à peu près tout type de machine. À la différence de la "
+"méthode précédente, cela impose que la machine Debian a déjà une liste des "
+"paquets disponibles."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The basic idea is to create a disc that has only the archive files "
+"downloaded from the remote site. This is done by using the --print-uris "
+"option to apt-get and then preparing a wget script to actually fetch the "
+"packages."
+msgstr ""
+"L'idée de base est de créer un disque qui ne comporte que les fichiers "
+"archive téléchargés depuis le site distant. Cela peut être effectué avec "
+"l'option --print-uris d'apt-get puis de la préparation d'un script wget "
+"permettant de récupérer les paquets/"
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "Operation"
+msgstr "Fonctionnement"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Unlike the previous technique no special configuration files are required. "
+"We merely use the standard APT commands to generate the file list."
+msgstr ""
+"À la différence de la méthode précédente, aucun fichier de configuration "
+"spécifique n'est nécessaire. Seules les commandes standard d'APT seront "
+"utilisées pour créer la liste de ficheirs."
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # apt-get dist-upgrade\n"
+" [ Press no when prompted, make sure you are happy with the actions ]\n"
+" # apt-get -qq --print-uris dist-upgrade &gt; uris\n"
+" # awk '{print \"wget -O \" $2 \" \" $1}' &lt; uris &gt; /disc/wget-script\n"
+msgstr ""
+" # apt-get dist-upgrade \n"
+" [ Répondre négativement à la question, pour être sûr(e) que les actions vous conviennent ]\n"
+" # apt-get -qq --print-uris dist-upgrade &gt; uris\n"
+" # awk '{print \"wget -O \" $2 \" \" $1}' &lt; uris &gt; /disc/wget-script\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Any command other than dist-upgrade could be used here, including dselect-"
+"upgrade."
+msgstr ""
+"Toute autre commande que dist-upgrade peut être utilisée, y compris dselect-"
+"upgrade."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The /disc/wget-script file will now contain a list of wget commands to "
+"execute in order to fetch the necessary archives. This script should be run "
+"with the current directory as the disc's mount point so as to save the "
+"output on the disc."
+msgstr ""
+"Le fichier /disc/wget-script contiendra alors la liste des commandes wget à "
+"exécuter afin de récupérer les fichiers nécessaires. Ce script doit être "
+"exécuté depuis le point de montage du disque afin que les fichiers soient "
+"écrits sur le disque."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid "The remote machine would do something like"
+msgstr "Sur la machine distante, il faudra alors exécuter l'équivalent de :"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # cd /disc\n"
+" # sh -x ./wget-script\n"
+" [ wait.. ]\n"
+msgstr ""
+" # cd /disc\n"
+" # sh -x ./wget-script\n"
+" [ attendre.. ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Once the archives are downloaded and the disc returned to the Debian machine "
+"installation can proceed using,"
+msgstr ""
+"Une fois les fichiers téléchargés et le disque reconnecté à la machine "
+"Debian, l'installation peut se poursuivre avec :"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
+msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid "Which will use the already fetched archives on the disc."
+msgstr "Cette commande utilisera les fichiers récupérés sur le disque."
+
+#~ msgid "dpkg trigger usage (and related options)"
+#~ msgstr ""
+#~ "utilisation des actions différées (« triggers ») de dpkg (et options "
+#~ "associées)"
+
+#~ msgid ""
+#~ "APT can call &dpkg; in such a way as to let it make aggressive use of "
+#~ "triggers over multiple calls of &dpkg;. Without further options &dpkg; "
+#~ "will use triggers once each time it runs. Activating these options can "
+#~ "therefore decrease the time needed to perform the install or upgrade. "
+#~ "Note that it is intended to activate these options per default in the "
+#~ "future, but as it drastically changes the way APT calls &dpkg; it needs a "
+#~ "lot more testing. <emphasis>These options are therefore currently "
+#~ "experimental and should not be used in production environments.</"
+#~ "emphasis> It also breaks progress reporting such that all front-ends will "
+#~ "currently stay around half (or more) of the time in the 100% state while "
+#~ "it actually configures all packages."
+#~ msgstr ""
+#~ "APT peut lancer &dpkg; pour utiliser les actions différées de manière "
+#~ "agressive entre les appels successifs à &dpkg;. Sans options "
+#~ "supplémentaires, &dpkg; utilisera les actions différées une fois à "
+#~ "chacune de ses exécutions. Si ces options sont utilisées, le temps "
+#~ "d'exécution peut diminuer fortement dans les actions d'installation ou de "
+#~ "mise à jour. Il est prévu de les activer par défaut dans le futur mais "
+#~ "étant donné qu'elles changent notablement la méthode qu'utilise APT pour "
+#~ "lancer &dpkg;, elles ont besoin d'importantes validations. <emphasis>Ces "
+#~ "options sont donc expérimentales et ne devraient pas être utilisées avec "
+#~ "des environnements de production.</emphasis>. Elles modifient également "
+#~ "le suivi de progression et toutes les interfaces passeront la moitié du "
+#~ "temps à un état terminé à 100% pendant la configuration des paquets."
+
+#~ msgid ""
+#~ "DPkg::NoTriggers \"true\";\n"
+#~ "PackageManager::Configure \"smart\";\n"
+#~ "DPkg::ConfigurePending \"true\";\n"
+#~ "DPkg::TriggersPending \"true\";"
+#~ msgstr ""
+#~ "DPkg::NoTriggers \"true\";\n"
+#~ "PackageManager::Configure \"smart\";\n"
+#~ "DPkg::ConfigurePending \"true\";\n"
+#~ "DPkg::TriggersPending \"true\";"
+
+#~ msgid ""
+#~ "Note that it is not guaranteed that APT will support these options or "
+#~ "that these options will not cause (big) trouble in the future. If you "
+#~ "have understand the current risks and problems with these options, but "
+#~ "are brave enough to help testing them, create a new configuration file "
+#~ "and test a combination of options. Please report any bugs, problems and "
+#~ "improvements you encounter and make sure to note which options you have "
+#~ "used in your reports. Asking &dpkg; for help could also be useful for "
+#~ "debugging proposes, see e.g. <command>dpkg --audit</command>. A defensive "
+#~ "option combination would be <placeholder type=\"literallayout\" id=\"0\"/>"
+#~ msgstr ""
+#~ "Veuillez noter que rien ne garantit qu'APT gérera encore ces options dans "
+#~ "le futur ou qu'elles ne provoqueront pas de nombreux dégâts. Si vous avez "
+#~ "bien compris les implications de ce choix et êtes suffisamment motivé(e) "
+#~ "pour essayer ces options, il vous est donc possible de créer un nouveau "
+#~ "fichier de configuration et essayer une combinaison de ces options. "
+#~ "Veuillez signaler tout bogue, problèmes ou suggestions d'amélioration en "
+#~ "prenant soin de mentionner les options utilisées. Utiliser l'aide "
+#~ "apportée par &dpkg; peut également être utile pour le débogage, par "
+#~ "exemple <command>dpkg --audit</command>. Une combinaison intéressante "
+#~ "d'options pourrait être <placeholder type=\"literallayout\" id=\"0\"/>."
+
+#~ msgid ""
+#~ "Add the no triggers flag to all &dpkg; calls (except the ConfigurePending "
+#~ "call). See &dpkg; if you are interested in what this actually means. In "
+#~ "short: &dpkg; will not run the triggers when this flag is present unless "
+#~ "it is explicitly called to do so in an extra call. Note that this option "
+#~ "exists (undocumented) also in older APT versions with a slightly "
+#~ "different meaning: Previously these option only append --no-triggers to "
+#~ "the configure calls to &dpkg; - now APT will also add this flag to the "
+#~ "unpack and remove calls."
+#~ msgstr ""
+#~ "Ajoute l'option « no-triggers » à tous les appels à &dpkg; (hormis "
+#~ "l'appel « ConfigurePending »). Voir &dpkg; pour plus d'informations sur "
+#~ "la signification de cette option. En résumé, &dpkg; n'effectuera pas les "
+#~ "actions différées (« triggers ») si cette option est utilisée sauf si "
+#~ "cela est demandé explicitement dans une invocation supplémentaire. Cette "
+#~ "option existe en fait déjà (mais n'est pas documentée) dans de plus "
+#~ "anciennes version d'APT avec une signification légèrement différente : "
+#~ "elle n'ajoutait l'option « --no-triggers » qu'aux appels de &dpkg; avec "
+#~ "« configure » alors que cela sera désormais utilisé également avec les "
+#~ "appels à &dpkg; avec les options « unpack » et « remove »."
+
+#~ msgid ""
+#~ "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" "
+#~ "and \"<literal>no</literal>\". The default value is \"<literal>all</"
+#~ "literal>\", which causes APT to configure all packages. The "
+#~ "\"<literal>smart</literal>\" way is to configure only packages which need "
+#~ "to be configured before another package can be unpacked (Pre-Depends), "
+#~ "and let the rest be configured by &dpkg; with a call generated by the "
+#~ "ConfigurePending option (see below). On the other hand, \"<literal>no</"
+#~ "literal>\" will not configure anything, and totally relies on &dpkg; for "
+#~ "configuration (which at the moment will fail if a Pre-Depends is "
+#~ "encountered). Setting this option to any value other than <literal>all</"
+#~ "literal> will implicitly also activate the next option by default, as "
+#~ "otherwise the system could end in an unconfigured and potentially "
+#~ "unbootable state."
+#~ msgstr ""
+#~ "Les valeurs possibles sont « <literal>all</literal> », « <literal>smart</"
+#~ "literal> » et « <literal>no</literal> ». La valeur par défaut est "
+#~ "« <literal>all</literal> » où APT configure tous les paquets. La valeur "
+#~ "« <literal>smart</literal> » permet de ne configurer que les paquets qui "
+#~ "ont besoin de l'être avant la décompaction d'un autre paquet (à cause "
+#~ "d'une pré-dépendance) ; les autres configurations sont laissées pour un "
+#~ "appel ultérieur à &dpkg; via un appel créé par l'option ConfigurePending "
+#~ "(voir plus loin). L'option « <literal>no</literal> » ne provoquera aucune "
+#~ "configuration et s'en remettra totalement à &dpkg; pour ces opérations "
+#~ "(ce qui échouera en cas de pré-dépendances). Si cette option est définie "
+#~ "sur une valeur différente de « <literal>all</literal> », l'option "
+#~ "suivante sera activée par défaut pour éviter de placer le système dans un "
+#~ "état non configuré et donc éventuellement non amorçable."
+
+#~ msgid ""
+#~ "Useful for the <literal>smart</literal> configuration as a package which "
+#~ "has pending triggers is not considered as <literal>installed</literal>, "
+#~ "and &dpkg; treats them as <literal>unpacked</literal> currently which is "
+#~ "a showstopper for Pre-Dependencies (see debbugs #526774). Note that this "
+#~ "will process all triggers, not only the triggers needed to configure this "
+#~ "package."
+#~ msgstr ""
+#~ "Cette option est utile pour la configuration en mode « <literal>smart</"
+#~ "literal> ». En effet, un paquet qui a des actions différées "
+#~ "(« triggers ») en attente n'est pas considéré comme installé (état "
+#~ "« <literal>installed</literal> ») et &dpkg; le considère actuellement "
+#~ "comme simplement décompacté (état « <literal>unpacked</literal> ») ce qui "
+#~ "empêche une gestion correcte des pré-dépendances (voir le bogue Debian "
+#~ "#526774). Veuillez noter que cette option provoquera la gestion de toutes "
+#~ "les actions différées, pas seulement celles concernant le paquet en cours "
+#~ "de traitement."
+
+#~ msgid ""
+#~ "OrderList::Score {\n"
+#~ "\tDelete 500;\n"
+#~ "\tEssential 200;\n"
+#~ "\tImmediate 10;\n"
+#~ "\tPreDepends 50;\n"
+#~ "};"
+#~ msgstr ""
+#~ "OrderList::Score {\n"
+#~ "\tDelete 500;\n"
+#~ "\tEssential 200;\n"
+#~ "\tImmediate 10;\n"
+#~ "\tPreDepends 50;\n"
+#~ "};"
+
+#~ msgid ""
+#~ "Essential packages (and their dependencies) should be configured "
+#~ "immediately after unpacking. It is a good idea to do this quite early in "
+#~ "the upgrade process as these configure calls also currently require "
+#~ "<literal>DPkg::TriggersPending</literal> which will run quite a few "
+#~ "triggers (which may not be needed). Essentials get per default a high "
+#~ "score but the immediate flag is relatively low (a package which has a Pre-"
+#~ "Depends is rated higher). These option and the others in the same group "
+#~ "can be used to change the scoring. The following example shows the "
+#~ "settings with their default values. <placeholder type=\"literallayout\" "
+#~ "id=\"0\"/>"
+#~ msgstr ""
+#~ "Les paquets essentiels (et leurs dépendances) devraient être configurés "
+#~ "après avoir été décompressés. Il est conseillé que cette opération ait "
+#~ "lieu le plus tôt possible dans le processus de mise à jour car ces "
+#~ "opérations de configuration nécessitent également <literal>DPkg::"
+#~ "TriggersPending</literal>, ce qui peut conduire à l'exécution de certains "
+#~ "actions différées qui ne sont pas nécessairement utiles. Les paquets "
+#~ "essentiels obtiennent par défaut un score élevé mais le marqueur "
+#~ "« immédiat » implique un score assez bas (par exemple un paquet qui "
+#~ "comporte des prédépendances obtient un score plus élevé). Cette option et "
+#~ "les options du même groupe permettent de modifier la façon d'attribuer un "
+#~ "score. L'exemple ci-dessous indique ces réglages avec leurs valeurs par "
+#~ "défaut. <placeholder type=\"literallayout\" id=\"0\"/>"
+
+#~ msgid "List fingerprints of trusted keys."
+#~ msgstr "Afficher les empreintes des clés fiables."
+
+#~ msgid "<filename>/etc/apt/trustdb.gpg</filename>"
+#~ msgstr "<filename>/etc/apt/trustdb.gpg</filename>"
+
+#~ msgid "Local trust database of archive keys."
+#~ msgstr "Base de données locale de fiabilité des clés de l'archive."
+
+#~ msgid "&keyring-filename;"
+#~ msgstr "&keyring-filename;"
+
+#~ msgid "Keyring of &keyring-distro; archive trusted keys."
+#~ msgstr "Trousseau des clés fiables de l'archive &keyring-distro;."
+
+#~ msgid "&keyring-removed-filename;"
+#~ msgstr "&keyring-removed-filename;"
+
+#~ msgid "Keyring of &keyring-distro; archive removed trusted keys."
+#~ msgstr ""
+#~ "Trousseau des clés fiables supprimées de l'archive &keyring-distro;."
+
+#, fuzzy
+#~| msgid "&apt-cache; &apt-conf;"
+#~ msgid "&apt-get;, &apt-conf;"
+#~ msgstr "&apt-cache; &apt-conf;"
+
+#~ msgid ""
+#~ "This is a space separated list of all the architectures that appear under "
+#~ "search section. The special architecture 'source' is used to indicate "
+#~ "that this tree has a source archive."
+#~ msgstr ""
+#~ "C'est une liste de toutes les architectures séparées par des espaces qui "
+#~ "appartiennent à chaque section. L'architecture spéciale « source » "
+#~ "indique que l'arborescence est une arborescence de sources."
+
+#~ msgid ""
+#~ "<command>apt</command> (Advanced Package Tool) is the command-line tool "
+#~ "for handling packages. It provides a commandline interface for the "
+#~ "package management of the system. See also &apt-get; and &apt-cache; for "
+#~ "more low-level command options."
+#~ msgstr ""
+#~ "<command>apt</command> (Advanced Package Tool) est un outil en ligne de "
+#~ "commande pour gérer les paquets. Il fournit une interface en ligne de "
+#~ "commande au système de gestion de paquets. Voir également &apt-get; et "
+#~ "&apt-cache; pour davantage d'options en ligne de commande."
+
+#~ msgid ""
+#~ "<literal>search</literal> searches for the given term(s) and display "
+#~ "matching packages."
+#~ msgstr ""
+#~ "La commande <literal>search</literal> recherche le(s) terme(s) donnée(s) "
+#~ "et affiche les paquets correspondants."
+
+#~ msgid ""
+#~ "<literal>show</literal> shows the package information for the given "
+#~ "package(s)."
+#~ msgstr ""
+#~ "La commande <literal>show</literal> affiche les informations sur le(s) "
+#~ "paquet(s) donné(s)."
+
+#~ msgid ""
+#~ "<literal>install</literal> is followed by one or more package names "
+#~ "desired for installation or upgrading."
+#~ msgstr ""
+#~ "La commande <literal>install</literal> est suivie du nom de un ou "
+#~ "plusieurs paquets dont l'installation ou la mise à jour est souhaitée."
+
+#~ msgid ""
+#~ "<literal>update</literal> is used to resynchronize the package index "
+#~ "files from their sources."
+#~ msgstr ""
+#~ "La commande <literal>update</literal> permet de resynchroniser un fichier "
+#~ "d'index répertoriant les paquets disponibles et sa source."
+
+#~ msgid "Script usage"
+#~ msgstr "Utilisation de scripts"
+
+#~ msgid "Differences to &apt-get;"
+#~ msgstr "Différences avec &apt-get;"
+
+#~ msgid ""
+#~ "The <command>apt</command> command is meant to be pleasant for end users "
+#~ "and does not need to be backward compatible like &apt-get;. Therefore "
+#~ "some options are different:"
+#~ msgstr ""
+#~ "La commande <command>apt</command> est sensée être agréable à "
+#~ "l'utilisateur et ne pas avoir besoin de compatibilité ascendante comme "
+#~ "&apt-get;. Par conséquent, certaines options sont différentes :"
+
+#~ msgid "The option <literal>DPkg::Progress-Fancy</literal> is enabled."
+#~ msgstr "L'option <literal>DPkg::Progress-Fancy</literal> est activée."
+
+#~ msgid "The option <literal>APT::Color</literal> is enabled."
+#~ msgstr "L'option <literal>APT::Color</literal> est activée."
+
+#~ msgid ""
+#~ "A new <literal>list</literal> command is available similar to "
+#~ "<literal>dpkg --list</literal>."
+#~ msgstr ""
+#~ "Une nouvelle commande <literal>list</literal> est disponible, semblable à "
+#~ "la commande <literal>dpkg --list</literal>."
+
+#~ msgid ""
+#~ "The option <literal>upgrade</literal> has <literal>--with-new-pkgs</"
+#~ "literal> enabled by default."
+#~ msgstr ""
+#~ "La commande <literal>upgrade</literal> a l'option <literal>--with-new-"
+#~ "pkgs</literal> activée par défaut."
+
+#~ msgid ""
+#~ "Pass advanced options to gpg. With adv --recv-key you can download the "
+#~ "public key."
+#~ msgstr ""
+#~ "Passer des options avancées à gpg. Avec la commande adv --recv-key, il "
+#~ "est possible de télécharger une clé publique."
+
+#~ msgid "mark/unmark a package as being automatically-installed"
+#~ msgstr "Indiquer si un paquet a été installé automatiquement ou non"
+
+#~ msgid ""
+#~ "<command>apt-mark</command> will change whether a package has been marked "
+#~ "as being automatically installed."
+#~ msgstr ""
+#~ "Avec la commande <command>apt-mark</command>, on peut indiquer si un "
+#~ "paquet a été automatiquement installé ou pas."
+
+#~ msgid ""
+#~ "<literal>hold</literal> is used to mark a package as held back, which "
+#~ "will prevent the package from being automatically installed, upgraded or "
+#~ "removed. The command is only a wrapper around <command>dpkg --set-"
+#~ "selections</command> and the state is therefore maintained by &dpkg; and "
+#~ "not affected by the <option>--file</option> option."
+#~ msgstr ""
+#~ "<literal>hold</literal> permet de marquer un paquet comme conservé, ce "
+#~ "qui empêchera de l'installer, de le mettre à jour ou de le supprimer "
+#~ "automatiquement. Cette commande est une simple envelopper à la commande "
+#~ "<command>dpkg --set-selections</command>, l'état étant géré par &dpkg; et "
+#~ "non affecté par l'option <option>--file</option>."
+
+#~ msgid ""
+#~ "If a package comes from a archive without a signature, or with a "
+#~ "signature that apt does not have a key for, that package is considered "
+#~ "untrusted, and installing it will result in a big warning. <command>apt-"
+#~ "get</command> will currently only warn for unsigned archives; future "
+#~ "releases might force all sources to be verified before downloading "
+#~ "packages from them."
+#~ msgstr ""
+#~ "Quand un paquet provient d'une archive sans signature ou d'une archive "
+#~ "avec une signature dont apt ne possède pas la clé, ce paquet n'est pas "
+#~ "considéré comme fiable et son installation provoquera un avertissement. "
+#~ "Pour l'instant, <command>apt-get</command> ne signale que les archives "
+#~ "sans signature ; les prochaines versions pourraient rendre obligatoire la "
+#~ "vérification des sources avant tout téléchargement de paquet."
+
+#~ msgid ""
+#~ "No action; perform a simulation of events that would occur but do not "
+#~ "actually change the system. Configuration Item: <literal>APT::Get::"
+#~ "Simulate</literal>."
+#~ msgstr ""
+#~ "Pas d'action ; simule les événements qui devraient se produire sans "
+#~ "effectuer de changement réel sur le système. Élément de configuration : "
+#~ "<literal>APT::Get::Simulate</literal>."
+
+#~ msgid ""
+#~ "Simulated runs performed as a user will automatically deactivate locking "
+#~ "(<literal>Debug::NoLocking</literal>), and if the option <literal>APT::"
+#~ "Get::Show-User-Simulation-Note</literal> is set (as it is by default) a "
+#~ "notice will also be displayed indicating that this is only a simulation. "
+#~ "Runs performed as root do not trigger either NoLocking or the notice - "
+#~ "superusers should know what they are doing without further warnings from "
+#~ "<literal>apt-get</literal>."
+#~ msgstr ""
+#~ "Lorsque la simulation est effectuée par un utilisateur sans privilège, le "
+#~ "verrouillage sera désactivé automatiquement (<literal>Debug::NoLocking</"
+#~ "literal>). Une mention explicite indiquant qu'il s'agit d'une simple "
+#~ "simulation sera affichée si l'option <literal>APT::Get::Show-User-"
+#~ "Simulation-Note</literal> est activée (elle est active par défaut). Ni la "
+#~ "désactivation du verrou (NoLocking) ni l'affichage de la mention de "
+#~ "simulation ne seront déclenchées si la commande est lancée par "
+#~ "l'utilisateur root (pour qui il n'est pas jugé utile qu'<literal>apt-get</"
+#~ "literal> envoie de telles notifications)."
+
+#~ msgid ""
+#~ "Ignore if packages can't be authenticated and don't prompt about it. "
+#~ "This is useful for tools like pbuilder. Configuration Item: "
+#~ "<literal>APT::Get::AllowUnauthenticated</literal>."
+#~ msgstr ""
+#~ "Ignorer le fait que les paquets ne peuvent pas être authentifiés ; ne le "
+#~ "signale pas à l'utilisateur. Cette option est très utile pour certains "
+#~ "outils comme pbuilder. Élément de configuration : <literal>APT::Get::"
+#~ "AllowUnauthenticated</literal>."
+
+#~ msgid ""
+#~ "Version 2 of this protocol dumps more information, including the protocol "
+#~ "version, the APT configuration space and the packages, files and versions "
+#~ "being changed. Version 3 adds the architecture and <literal>MultiArch</"
+#~ "literal> flag to each version being dumped."
+#~ msgstr ""
+#~ "La deuxième version de ce protocole donne plus de renseignements : on "
+#~ "obtient la version du protocole, la configuration de APT et les paquets, "
+#~ "fichiers ou versions qui ont changé. La troisième version ajoute "
+#~ "l'architecture et le marqueur <literal>MultiArch</literal> à chaque "
+#~ "version déposée."
+
+#~ msgid ""
+#~ "to the versions that are not installed and do not belong to the target "
+#~ "release."
+#~ msgstr ""
+#~ "est affectée aux versions qui ne sont pas installées et qui "
+#~ "n'appartiennent pas à la distribution par défaut."
+
+#~ msgid ""
+#~ "Each line specifying a source starts with type (e.g. <literal>deb-src</"
+#~ "literal>) followed by options and arguments for this type. Individual "
+#~ "entries cannot be continued onto a following line. Empty lines are "
+#~ "ignored, and a <literal>#</literal> character anywhere on a line marks "
+#~ "the remainder of that line as a comment."
+#~ msgstr ""
+#~ "Chaque ligne qui indique une source commence par son type (p. ex. "
+#~ "<literal>deb-src</literal>), suivi d'options et paramètres pour ce type. "
+#~ "Les entrées individuelles ne peuvent pas être multilignes. Les lignes "
+#~ "vides sont ignorées et un caractère <literal>#</literal> sur une ligne "
+#~ "indique que le reste de la ligne est un commentaire."
+
+#~ msgid "deb [ options ] uri suite [component1] [component2] [...]"
+#~ msgstr "deb [ options ] uri suite [composant1] [composant2] [...]"
+
+#~ msgid ""
+#~ " Types: deb deb-src\n"
+#~ " URIs: http://example.com\n"
+#~ " Suites: stable testing\n"
+#~ " Sections: component1 component2\n"
+#~ " Description: short\n"
+#~ " long long long\n"
+#~ " [option1]: [option1-value]\n"
+#~ "\n"
+#~ " Types: deb\n"
+#~ " URIs: http://another.example.com\n"
+#~ " Suites: experimental\n"
+#~ " Sections: component1 component2\n"
+#~ " Enabled: no\n"
+#~ " Description: short\n"
+#~ " long long long\n"
+#~ " [option1]: [option1-value]\n"
+#~ " "
+#~ msgstr ""
+#~ " Types: deb deb-src\n"
+#~ " URIs: http://example.com\n"
+#~ " Suites: stable testing\n"
+#~ " Sections: component1 component2\n"
+#~ " Description: short\n"
+#~ " long long long\n"
+#~ " [option1]: [option1-value]\n"
+#~ "\n"
+#~ " Types: deb\n"
+#~ " URIs: http://another.example.com\n"
+#~ " Suites: experimental\n"
+#~ " Sections: composant1 composant2\n"
+#~ " Enabled: no\n"
+#~ " Description: short\n"
+#~ " long long long\n"
+#~ " [option1]: [option1-value]\n"
+#~ " "
+
+#~ msgid ""
+#~ "<literal>options</literal> is always optional and needs to be surrounded "
+#~ "by square brackets. It can consist of multiple settings in the form "
+#~ "<literal><replaceable>setting</replaceable>=<replaceable>value</"
+#~ "replaceable></literal>. Multiple settings are separated by spaces. The "
+#~ "following settings are supported by APT (note however that unsupported "
+#~ "settings will be ignored silently):"
+#~ msgstr ""
+#~ "<literal>options</literal> est toujours optionnel et doit être entouré "
+#~ "par des crochets. It est constitué de réglages multiples sous la forme "
+#~ "<literal><replaceable>réglage</replaceable>=<replaceable>valeur</"
+#~ "replaceable></literal>. Des réglages multiples sont séparés par des "
+#~ "espaces. Les réglages suivants sont gérés par APT (des réglages non gérés "
+#~ "seront ignorés silencieusement) :"
+
+#~ msgid ""
+#~ "<literal>arch+=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#~ "replaceable>,…</literal> and <literal>arch-=<replaceable>arch1</"
+#~ "replaceable>,<replaceable>arch2</replaceable>,…</literal> which can be "
+#~ "used to add/remove architectures from the set which will be downloaded."
+#~ msgstr ""
+#~ "<literal>arch+=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#~ "replaceable>,…</literal> et <literal>arch-=<replaceable>arch1</"
+#~ "replaceable>,<replaceable>arch2</replaceable>,…</literal> qui peuvent "
+#~ "être utilisés pour ajouter ou supprimer des architectures dans l'ensemble "
+#~ "qui sera téléchargée."
+
+#~ msgid ""
+#~ "<literal>trusted=yes</literal> can be set to indicate that packages from "
+#~ "this source are always authenticated even if the <filename>Release</"
+#~ "filename> file is not signed or the signature can't be checked. This "
+#~ "disables parts of &apt-secure; and should therefore only be used in a "
+#~ "local and trusted context. <literal>trusted=no</literal> is the opposite "
+#~ "which handles even correctly authenticated sources as not authenticated."
+#~ msgstr ""
+#~ "<literal>trusted=yes</literal> peut être utilisée pour indiquer que les "
+#~ "paquets issus de cette source doivent être authentifiés même si le "
+#~ "fichier <filename>Release</filename> n'est pas signé ou que la signature "
+#~ "ne peut pas être vérifiée. Cela désactive certaines parties d'&apt-"
+#~ "secure; et ne devrait donc être utilisé que dans un contexte local ou "
+#~ "sûr. <literal>trusted=no</literal> est l'opposé et considérera même les "
+#~ "sources correctement authentifiées comme non authentifiées."
+
+#~ msgid "Some examples:"
+#~ msgstr "Exemples :"
+
+#~ msgid ""
+#~ "deb http://ftp.debian.org/debian &debian-stable-codename; main contrib "
+#~ "non-free\n"
+#~ "deb http://security.debian.org/ &debian-stable-codename;/updates main "
+#~ "contrib non-free\n"
+#~ " "
+#~ msgstr ""
+#~ "deb http://ftp.debian.org/debian &debian-stable-codename; main contrib "
+#~ "non-free\n"
+#~ "deb http://security.debian.org/ &debian-stable-codename;/updates main "
+#~ "contrib non-free\n"
+#~ " "
+
+#~ msgid "apt"
+#~ msgstr "apt"
+
+#~ msgid "16 June 1998"
+#~ msgstr "16 Juin 1998"
+
+#~ msgid "Debian"
+#~ msgstr "Debian"
+
+#~ msgid "NAME"
+#~ msgstr "NOM"
+
+#~ msgid "apt - Advanced Package Tool"
+#~ msgstr "apt - Outil complet de gestion de paquets"
+
+#~ msgid "SYNOPSIS"
+#~ msgstr "RÉSUMÉ"
+
+#~ msgid "B<apt>"
+#~ msgstr "B<apt>"
+
+#~ msgid "DESCRIPTION"
+#~ msgstr "DESCRIPTION"
+
+#, fuzzy
+#~| msgid ""
+#~| "APT is a management system for software packages. For normal day to day "
+#~| "package management there are several front-ends available, such as "
+#~| "B<aptitude>(8) for the command line or B<synaptic>(8) for the X Window "
+#~| "System. Some options are only implemented in B<apt-get>(8) though."
+#~ msgid ""
+#~ "For normal day to day package management there are several front-ends "
+#~ "available, such as B<aptitude>(8) for the command line or "
+#~ "B<synaptic>(8) for the X Window System. Some options are only "
+#~ "implemented in B<apt-get>(8) though."
+#~ msgstr ""
+#~ "APT est un système de gestion de paquets logiciels. Pour la gestion au "
+#~ "quotidien des paquets, il existe plusieurs frontaux comme B<aptitude>(9) "
+#~ "en ligne de commande ou B<synaptic>(8) pour X Window. Cependant, "
+#~ "certaines options ne sont disponibles que dans B<apt-get>(8)."
+
+#~ msgid "SEE ALSO"
+#~ msgstr "VOIR AUSSI"
+
+#, fuzzy
+#~| msgid ""
+#~| "B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources.list>(5), "
+#~| "B<apt_preferences>(5), B<apt-secure>(8)"
+#~ msgid ""
+#~ "B<apt>(8), B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources."
+#~ "list>(5), B<apt_preferences>(5), B<apt-secure>(8)"
+#~ msgstr ""
+#~ "B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources.list>(5), "
+#~ "B<apt_preferences>(5), B<apt-secure>(8)"
+
+#~ msgid "DIAGNOSTICS"
+#~ msgstr "DIAGNOSTICS"
+
+#~ msgid "apt returns zero on normal operation, decimal 100 on error."
+#~ msgstr ""
+#~ "apt renvoie zéro après une opération normale et la valeur décimale 100 en "
+#~ "cas d'erreur."
+
+#~ msgid "BUGS"
+#~ msgstr "BOGUES"
+
+#~ msgid "This manpage isn't even started."
+#~ msgstr "Cette page de manuel n'a même pas commencé à être rédigée."
+
+#~ msgid ""
+#~ "See E<lt>http://bugs.debian.org/aptE<gt>. If you wish to report a bug in "
+#~ "B<apt>, please see I</usr/share/doc/debian/bug-reporting.txt> or the "
+#~ "B<reportbug>(1) command."
+#~ msgstr ""
+#~ "Voir E<lt>http://bugs.debian.org/aptE<gt>. Si vous souhaitez signaler un "
+#~ "bogue dans B<apt>, veuillez lire I</usr/share/doc/debian/bug-reporting."
+#~ "txt> ou utiliser la commande B<reportbug>(1)."
+
+#~ msgid "AUTHOR"
+#~ msgstr "AUTEURS"
+
+#~ msgid "apt was written by the APT team E<lt>apt@packages.debian.orgE<gt>."
+#~ msgstr ""
+#~ "apt a été écrit par l'équipe de développement APT E<lt>apt@packages."
+#~ "debian.orgE<gt>."
+
+#~ msgid "Package resource list for APT"
+#~ msgstr "Liste des sources de paquets"
+
+#~ msgid ""
+#~ "As the configuration can be deferred to be done at the end by &dpkg; it "
+#~ "can be tried to order the unpack series only by critical needs, e.g. by "
+#~ "Pre-Depends. Default is true and therefore the \"old\" method of ordering "
+#~ "in various steps by everything. While both method were present in earlier "
+#~ "APT versions the <literal>OrderCritical</literal> method was unused, so "
+#~ "this method is very experimental and needs further improvements before "
+#~ "becoming really useful."
+#~ msgstr ""
+#~ "Cette option permet de ne trier les opérations de décompactage qu'en "
+#~ "fonction de leur criticité (c'est à dire en ne considérant que les pré-"
+#~ "dépendances) dans le cas où la configuration des paquets est différée "
+#~ "pour n'être effectuée qu'à la fin par &dpkg;. Cette option est active par "
+#~ "défaut, ce qui revient à la méthode traditionnelle où les opérations ont "
+#~ "lieu en plusieurs étapes, selon l'ensemble des critères de tri. Bien que "
+#~ "les deux méthodes existent même dans les versions, la méthode "
+#~ "« <literal>OrderCritical</literal> » n'était pas utilisée. Elle doit donc "
+#~ "être considérée comme très expérimentale et a besoin de nombreuses "
+#~ "améliorations avant de devenir réellement utile. (Note du traducteur : la "
+#~ "version originale de cette partie des pages de manuel est très confuse. "
+#~ "Il est donc conseillé de s'y reporter en cas de doute car le contresens "
+#~ "de traduction n'est pas exclu...)."
+
+#~ msgid "Dump the default configuration to standard error on startup."
+#~ msgstr ""
+#~ "Affiche, au lancement, l'ensemble de la configuration sur la sortie "
+#~ "d'erreur standard."
+
+#~ msgid ""
+#~ "Defaults to on which will cause APT to install essential and important "
+#~ "packages as fast as possible in the install/upgrade operation. This is "
+#~ "done to limit the effect of a failing &dpkg; call: If this option is "
+#~ "disabled APT does treat an important package in the same way as an extra "
+#~ "package: Between the unpacking of the important package A and his "
+#~ "configuration can then be many other unpack or configuration calls, e.g. "
+#~ "for package B which has no relation to A, but causes the dpkg call to "
+#~ "fail (e.g. because maintainer script of package B generates an error) "
+#~ "which results in a system state in which package A is unpacked but "
+#~ "unconfigured - each package depending on A is now no longer guaranteed to "
+#~ "work as their dependency on A is not longer satisfied. The immediate "
+#~ "configuration marker is also applied to all dependencies which can "
+#~ "generate a problem if the dependencies e.g. form a circle as a dependency "
+#~ "with the immediate flag is comparable with a Pre-Dependency. So in theory "
+#~ "it is possible that APT encounters a situation in which it is unable to "
+#~ "perform immediate configuration, errors out and refers to this option so "
+#~ "the user can deactivate the immediate configuration temporarily to be "
+#~ "able to perform an install/upgrade again. Note the use of the word "
+#~ "\"theory\" here as this problem was only encountered by now in real world "
+#~ "a few times in non-stable distribution versions and was caused by wrong "
+#~ "dependencies of the package in question or by a system in an already "
+#~ "broken state, so you should not blindly disable this option as the "
+#~ "mentioned scenario above is not the only problem immediate configuration "
+#~ "can help to prevent in the first place. Before a big operation like "
+#~ "<literal>dist-upgrade</literal> is run with this option disabled it "
+#~ "should be tried to explicitly <literal>install</literal> the package APT "
+#~ "is unable to configure immediately, but please make sure to report your "
+#~ "problem also to your distribution and to the APT team with the buglink "
+#~ "below so they can work on improving or correcting the upgrade process."
+#~ msgstr ""
+#~ "La valeur par défaut de ce réglage est « on » ce qui conduira APT à "
+#~ "installer les paquets essentiels et importants dès que possible pendant "
+#~ "les opérations d'installation ou de mise à jour. Cela permet de limiter "
+#~ "les conséquences de l'échec d'un appel à &dpkg; : si cette option est "
+#~ "désactivée, APT gérera un paquet important de la même manière qu'un "
+#~ "paquet « extra » ; entre le dépaquetage du paquet important A et sa "
+#~ "configuration pourront prendre place de nombreux autres opérations de "
+#~ "dépaquetage ou de configuration. Ainsi, si le paquet B, qui n'a pas de "
+#~ "rapport avec A, provoque une erreur de &dpkg; (p. ex. en cas d'erreur "
+#~ "dans les scripts du responsable), le paquet A sera alors dans l'état "
+#~ "installé mais non configuré et chaque paquet qui en dépend ne "
+#~ "fonctionnera plus nécessairement puisque sa dépendance n'est pas "
+#~ "satisfaite. Le marqueur de configuration immédiate sera aussi utilisé "
+#~ "pour toute dépendance qui peut créer un problème, par exemple les "
+#~ "dépendances circulaires. En effet, utiliser le marqueur de configuration "
+#~ "immédiate revient à gérer une pré-dépendance. Il est donc possible, en "
+#~ "théorie, qu'APT rencontre une situation où il lui est impossible "
+#~ "d'effectuer la configuration immédiate, qu'il se termine alors avec une "
+#~ "erreur en faisant référence à cette option afin que l'utilisateur puisse "
+#~ "la désactiver temporairement pour retenter l'opération d'installation ou "
+#~ "de mise à jour. Il est à noter que « en théorie » indique ici que cette "
+#~ "situation n'a été rencontrée que dans de rares cas, sur des versions "
+#~ "instables de distributions, la cause étant des dépendances incorrectes ou "
+#~ "un système déjà dans un état instable. Il est donc déconseillé de "
+#~ "désactiver cette option sans réfléchir car la situation décrite "
+#~ "précédemment n'est qu'un des cas où la configuration immédiate permet de "
+#~ "résoudre des situations complexes. Avant de tenter une opération telle "
+#~ "que <literal>dist-upgrade</literal> avec cette option désactivée, il est "
+#~ "largement préférable d'essayer une opération <literal>install</literal> "
+#~ "sur le paquet qu'APT ne peut configurer immédiatement. Il est également "
+#~ "conseillé de signaler ce type de problème dans le système de suivi de "
+#~ "bogues de la distribution utilisée afin qu'il soit étudié et corrigé."
+
+#~ msgid ""
+#~ "The package resource list is used to locate archives of the package "
+#~ "distribution system in use on the system. At this time, this manual page "
+#~ "documents only the packaging system used by the Debian system. This "
+#~ "control file is <filename>/etc/apt/sources.list</filename>."
+#~ msgstr ""
+#~ "La liste des sources de paquets indique où trouver les archives du "
+#~ "système de distribution de paquets utilisé. Pour l'instant, cette page de "
+#~ "manuel ne documente que le système d'empaquetage utilisé par le système "
+#~ "Debian GNU/Linux. Ce fichier de contrôle est <filename>/etc/apt/sources."
+#~ "list</filename>."
+
+#~ msgid ""
+#~ "The source list is designed to support any number of active sources and a "
+#~ "variety of source media. The file lists one source per line, with the "
+#~ "most preferred source listed first. The format of each line is: "
+#~ "<literal>type uri args</literal> The first item, <literal>type</literal> "
+#~ "determines the format for <literal>args</literal>. <literal>uri</literal> "
+#~ "is a Universal Resource Identifier (URI), which is a superset of the more "
+#~ "specific and well-known Universal Resource Locator, or URL. The rest of "
+#~ "the line can be marked as a comment by using a #."
+#~ msgstr ""
+#~ "La liste des sources est conçue pour gérer un nombre quelconque de "
+#~ "sources actives et différents média. Le fichier présente une source par "
+#~ "ligne et la source préférée apparaît en premier. Le format de chaque "
+#~ "ligne est : <literal>type uri paramètres</literal>. Le premier élément, "
+#~ "<literal>type</literal>, détermine le format des <literal>paramètres</"
+#~ "literal>. <literal>uri</literal> est un identificateur universel de "
+#~ "ressources (URI), qui est un sur-ensemble du plus spécifique et bien "
+#~ "connu repère universel de ressources, ou URL. La fin de la ligne peut "
+#~ "être un commentaire commençant par un caractère #."
+
+#~ msgid ""
+#~ "<literal>gencaches</literal> performs the same operation as <command>apt-"
+#~ "get check</command>. It builds the source and package caches from the "
+#~ "sources in &sources-list; and from <filename>/var/lib/dpkg/status</"
+#~ "filename>."
+#~ msgstr ""
+#~ "La commande <literal>gencaches</literal> fait la même chose que "
+#~ "<command>apt-get check</command>. Elle construit les caches des sources "
+#~ "et des paquets à partir des sources répertoriées dans &sources-list; et "
+#~ "dans <filename>/var/lib/dpkg/status</filename>."
+
+#~ msgid ""
+#~ "One setting is provided to control the pipeline depth in cases where the "
+#~ "remote server is not RFC conforming or buggy (such as Squid 2.0.2). "
+#~ "<literal>Acquire::http::Pipeline-Depth</literal> can be a value from 0 to "
+#~ "5 indicating how many outstanding requests APT should send. A value of "
+#~ "zero MUST be specified if the remote host does not properly linger on TCP "
+#~ "connections - otherwise data corruption will occur. Hosts which require "
+#~ "this are in violation of RFC 2068."
+#~ msgstr ""
+#~ "Une option de configuration est fournie pour contrôler la profondeur du "
+#~ "tube pour le cas où un serveur distant n'est pas conforme à la RFC ou est "
+#~ "bogué (comme Squid 2.0.2). <literal>Acquire::http::Pipeline-Depth </"
+#~ "literal> a une valeur comprise entre 0 et 5 : elle indique le nombre de "
+#~ "requêtes en attente qui peuvent être émises. Quand la machine distante ne "
+#~ "conserve pas correctement les connexions TCP, la valeur doit égale à 0. "
+#~ "Dans le cas contraire, des données seront corrompues. Les machines qui "
+#~ "ont besoin de cette option ne respectent pas la RFC 2068."
+
+#~ msgid ""
+#~ "Update the local keyring with the keyring of Debian archive keys and "
+#~ "removes from the keyring the archive keys which are no longer valid."
+#~ msgstr ""
+#~ "Mettre à jour le trousseau de clés local avec le trousseau de clés de "
+#~ "l'archive Debian et supprimer les clés qui y sont périmées."
+
+#~ msgid "--keyring <replaceable>filename</replaceable>"
+#~ msgstr "--keyring <replaceable>fichier</replaceable>"
+
+#, fuzzy
+#~| msgid ""
+#~| "Seconds the Release file should be considered valid after it was "
+#~| "created. The default is \"for ever\" (0) if the Release file of the "
+#~| "archive doesn't include a <literal>Valid-Until</literal> header. If it "
+#~| "does then this date is the default. The date from the Release file or "
+#~| "the date specified by the creation time of the Release file "
+#~| "(<literal>Date</literal> header) plus the seconds specified with this "
+#~| "options are used to check if the validation of a file has expired by "
+#~| "using the earlier date of the two. Archive specific settings can be made "
+#~| "by appending the label of the archive to the option name."
+#~ msgid ""
+#~ "Seconds the Release file should be considered valid after it was created. "
+#~ "The default is \"for ever\" (0) if the Release file of the archive "
+#~ "doesn't include a <literal>Valid-Until</literal> header. If it does then "
+#~ "this date is the default. The date from the Release file or the date "
+#~ "specified by the creation time of the Release file (<literal>Date</"
+#~ "literal> header) plus the seconds specified with this options are used to "
+#~ "check if the validation of a file has expired by using the earlier date "
+#~ "of the two. Archive specific settings can be made by appending the label "
+#~ "of the archive to the option name."
+#~ msgstr ""
+#~ "Durée (en secondes) pendant laquelle un fichier Release est considéré "
+#~ "comme valable, à partir du moment de sa création. La valeur par défaut "
+#~ "est 0 (fichier valable indéfiniment) si le fichier Release de l'archive "
+#~ "ne comporte pas d'en-tête <literal>Valid-Until</literal>. Dans le cas "
+#~ "contraire, c'est la valeur de cet en-tête qui est la valeur par défaut du "
+#~ "paramètre. La date du fichier Release ou la date indiquée dans l'en-tête "
+#~ "<literal>Date</literal>, augmentées du nombre de secondes indiquées sont "
+#~ "comparées à la date courante pour déterminer si un fichier Release donné "
+#~ "est obsolète ou pas. Un réglage spécifique pour une archive donnée peut "
+#~ "être défini en ajoutant l'étiquette de l'archive au nom de l'option."
+
+#~ msgid ""
+#~ "Generate MD5 sums. This defaults to on, when turned off the generated "
+#~ "index files will not have MD5Sum fields where possible. Configuration "
+#~ "Item: <literal>APT::FTPArchive::MD5</literal>"
+#~ msgstr ""
+#~ "Créer la somme de contrôle MD5. Cette option est activée par défaut. "
+#~ "Quand elle est désactivée, les fichiers d'index n'ont pas les champs "
+#~ "MD5Sum là où c'est possible. Élément de configuration : <literal>APT::"
+#~ "FTPArchive::MD5</literal>."
+
+#~ msgid "Show a short usage summary."
+#~ msgstr "Affiche un résumé de l'aide"
+
+#~ msgid "Show the program version."
+#~ msgstr "Affiche la version du programme."
+
+#~ msgid "to the version that is already installed (if any)."
+#~ msgstr "est affectée à la version déjà installée (si elle existe)."
+
+#~ msgid "APT package handling utility -- cache manipulator"
+#~ msgstr "Gestionnaire de paquets APT - manipulation du cache"
+
+#~ msgid "add <replaceable>file(s)</replaceable>"
+#~ msgstr "add <replaceable>fichier(s)</replaceable>"
+
+#~ msgid ""
+#~ "<literal>add</literal> adds the named package index files to the package "
+#~ "cache. This is for debugging only."
+#~ msgstr ""
+#~ "La commande <literal>add</literal> ajoute des fichiers indexant des "
+#~ "paquets au cache des paquets. Cela sert uniquement pour le débogage."
+
+#~ msgid ""
+#~ "The <literal>release</literal> command generates a Release file from a "
+#~ "directory tree. It recursively searches the given directory for Packages, "
+#~ "Packages.gz, Packages.bz2, Sources, Sources.gz, Sources.bz2, Release and "
+#~ "md5sum.txt files. It then writes to stdout a Release file containing an "
+#~ "MD5 digest and SHA1 digest for each file."
+#~ msgstr ""
+#~ "La commande <literal>release</literal> crée un fichier « Release » à "
+#~ "partir d'un répertoire. Elle cherche récursivement dans ce répertoire les "
+#~ "fichiers Packages, Packages.gz, Packages.bz2, Sources, Sources.gz, "
+#~ "Sources.bz2, Release et md5sum.txt. Elle envoie alors un fichier Release "
+#~ "sur la sortie standard avec un résumé MD5 et un résumé SHA1 pour chaque "
+#~ "fichier."
+
+#~ msgid "Also install recommended packages."
+#~ msgstr "Installer également les paquets recommandés."
+
+#~ msgid "Do not install recommended packages."
+#~ msgstr "Ne pas installer les paquets recommandés."
+
+#~ msgid ""
+#~ "While it is possible to add an empty compression type to the order list, "
+#~ "but APT in its current version doesn't understand it correctly and will "
+#~ "display many warnings about not downloaded files - these warnings are "
+#~ "most of the time false negatives. Future versions will maybe include a "
+#~ "way to really prefer uncompressed files to support the usage of local "
+#~ "mirrors."
+#~ msgstr ""
+#~ "Bien qu'il soit possible d'ajouter un type vide de compression à la liste "
+#~ "ordonnée, APT ne l'interprétera pas correctement et affichera de nombreux "
+#~ "messages d'avertissement à propos d'échec de téléchargement, qui sont le "
+#~ "plus souvent des avertissements sans conséquences. Dans de futures "
+#~ "versions, il deviendra réellement possible d'établir une préférence pour "
+#~ "des fichiers non compressés afin de gérer des miroirs locaux."
+
+#~ msgid ""
+#~ "Uses HTTP to access the archive at nonus.debian.org, under the debian-non-"
+#~ "US directory."
+#~ msgstr ""
+#~ "Utiliser HTTP pour accéder à l'archive située à nonus.debian.org, dans le "
+#~ "répertoire debian-non-US."
+
+#~ msgid ""
+#~ "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-"
+#~ "free"
+#~ msgstr ""
+#~ "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-"
+#~ "free"
+
+#~ msgid "OPTIONS"
+#~ msgstr "OPTIONS"
+
+#~ msgid "None."
+#~ msgstr "Aucune."
+
+#~ msgid "FILES"
+#~ msgstr "FICHIERS"
+
+#~ msgid "<filename>/var/lib/apt/extended_states</filename>"
+#~ msgstr "<filename>/var/lib/apt/extended_states</filename>"
+
+#~ msgid ""
+#~ "Status list of auto-installed packages. Configuration Item: "
+#~ "<literal>Dir::State</literal> sets the path to the "
+#~ "<filename>extended_states</filename> file."
+#~ msgstr ""
+#~ "États des paquets automatiquement installés. L'élément de configuration "
+#~ "<literal>Dir::State</literal> définit le chemin d'accès au fichier "
+#~ "<filename>extended_states</filename>."
+
+#~ msgid ""
+#~ "APT uses a fixed size memory mapped cache file to store the 'available' "
+#~ "information. This sets the size of that cache (in bytes)."
+#~ msgstr ""
+#~ "APT utilise un fichier de cache chargé en mémoire avec mmap pour ranger "
+#~ "les informations sur les paquets disponibles. Cette option fixe la taille "
+#~ "mémoire allouée (en octets) pour le chargement de ce cache."
+
+#~ msgid ""
+#~ "The <literal>Pin-Priority:</literal> line in each APT preferences record "
+#~ "is optional. If omitted, APT assigns a priority of 1 less than the last "
+#~ "value specified on a line beginning with <literal>Pin-Priority: "
+#~ "release ...</literal>."
+#~ msgstr ""
+#~ "La ligne <literal>Pin-Priority:</literal> d'une entrée est facultative. "
+#~ "Si elle n'existe pas, APT affecte une priorité inférieure de 1 à la "
+#~ "valeur spécifiée sur une ligne commençant par <literal>Pin-Priority: "
+#~ "release ...</literal>."
+
+#~ msgid "Keyring of local trusted keys, new keys will be added here."
+#~ msgstr ""
+#~ "Trousseau de clés locales fiables : les nouvelles clés y seront ajoutées."
+
+#~ msgid ""
+#~ "<filename>apt.conf</filename> is the main configuration file for the APT "
+#~ "suite of tools, all tools make use of the configuration file and a common "
+#~ "command line parser to provide a uniform environment. When an APT tool "
+#~ "starts up it will read the configuration specified by the "
+#~ "<envar>APT_CONFIG</envar> environment variable (if any) and then read the "
+#~ "files in <literal>Dir::Etc::Parts</literal> then read the main "
+#~ "configuration file specified by <literal>Dir::Etc::main</literal> then "
+#~ "finally apply the command line options to override the configuration "
+#~ "directives, possibly loading even more config files."
+#~ msgstr ""
+#~ "Le fichier <filename>apt.conf</filename> est le principal fichier de "
+#~ "configuration de la collection d'outils que constitue APT ; tous les "
+#~ "outils font appel à ce fichier de configuration et utilisent un analyseur "
+#~ "syntaxique en ligne de commande commun afin de fournir un environnement "
+#~ "uniforme. Quand un outil d'APT démarre, il lit la configuration désignée "
+#~ "par variable d'environnement <envar>APT_CONFIG</envar> (si elle existe), "
+#~ "puis il lit les fichiers situés dans <literal>Dir::Etc::Parts</literal> "
+#~ "ainsi que le principal fichier de configuration indiqué par <literal>Dir::"
+#~ "Etc::main</literal> ; enfin il applique les options de la ligne de "
+#~ "commande qui prévalent sur les directives de configuration, chargeant si "
+#~ "nécessaire d'autres fichiers de configuration."
+
+#~ msgid ""
+#~ "Disable Immediate Configuration; This dangerous option disables some of "
+#~ "APT's ordering code to cause it to make fewer dpkg calls. Doing so may be "
+#~ "necessary on some extremely slow single user systems but is very "
+#~ "dangerous and may cause package install scripts to fail or worse. Use at "
+#~ "your own risk."
+#~ msgstr ""
+#~ "Désactive la configuration immédiate ; cette dangereuse option désactive "
+#~ "une partie du code de mise en ordre de APT pour que ce dernier effectue "
+#~ "le moins d'appels possible à &dpkg;. Ça peut être nécessaire sur des "
+#~ "systèmes à un seul utilisateur extrêmement lents, mais cette option est "
+#~ "très dangereuse et peut faire échouer les scripts d'installation, voire "
+#~ "pire. Utilisez-la à vos risques et périls."
+
+#~ msgid ""
+#~ "APT configuration file fragments. Configuration Item: <literal>Dir::Etc::"
+#~ "Parts</literal>."
+#~ msgstr ""
+#~ "Éléments du fichier de configuration d'APT. Élément de configuration : "
+#~ "<literal>Dir::Etc::Parts</literal>."
+
+#~ msgid ""
+#~ "Storage area for retrieved package files. Configuration Item: "
+#~ "<literal>Dir::Cache::Archives</literal>."
+#~ msgstr ""
+#~ "Zone de stockage pour les paquets récupérés. Élément de configuration : "
+#~ "<literal>Dir::Cache::Archives</literal>."
diff --git a/doc/po/header.pot.txt b/doc/po/header.pot.txt
new file mode 100644
index 000000000..c2e7fedce
--- /dev/null
+++ b/doc/po/header.pot.txt
@@ -0,0 +1,3 @@
+# Translation of apt manpages and documentation to LANGUAGE
+# This file is distributed under the same license as the apt-doc package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
diff --git a/doc/po/it.po b/doc/po/it.po
new file mode 100644
index 000000000..98d5a0784
--- /dev/null
+++ b/doc/po/it.po
@@ -0,0 +1,13376 @@
+# Translation of apt package's po4a documentation
+# Copyright (C) 2000-2012 Debian Italian l10n team <debian-l10n-italian@lists.debian.org>
+# This file is distributed under the same license as the apt package.
+# Translators:
+# Eugenia Franzoni, 2000
+# Hugh Hartmann, 2000-2012
+# Gabriele Stilli, 2012
+# Beatrice Torracca <beatricet@libero.it>, 2012, 2014, 2015.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt-doc 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-06-01 10:51+0200\n"
+"PO-Revision-Date: 2015-12-27 21:26+0200\n"
+"Last-Translator: Beatrice Torracca <beatricet@libero.it>\n"
+"Language-Team: Italian <debian-l10n-italian@lists.debian.org>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Virtaal 0.7.1\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY apt-author.team \"\n"
+" <author>\n"
+" <othername>APT team</othername>\n"
+" <contrib></contrib>\n"
+" </author>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY apt-author.team \"\n"
+" <author>\n"
+" <othername>Team APT</othername>\n"
+" <contrib></contrib>\n"
+" </author>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY apt-qapage \"\n"
+"\t<para>\n"
+"\t\t<ulink url='http://packages.qa.debian.org/a/apt.html'>QA Page</ulink>\n"
+"\t</para>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY apt-qapage \"\n"
+"\t<para>\n"
+"\t\t<ulink url='http://packages.qa.debian.org/a/apt.html'>Pagina QA</ulink>\n"
+"\t</para>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Boiler plate Bug reporting section -->\n"
+"<!ENTITY manbugs \"\n"
+" <refsect1><title>Bugs</title>\n"
+" <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+" If you wish to report a bug in APT, please see\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
+" &reportbug; command.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+"<!-- Boiler plate Bug reporting section -->\n"
+"<!ENTITY manbugs \"\n"
+" <refsect1><title>Bug</title>\n"
+" <para><ulink url='http://bugs.debian.org/src:apt'>Pagina dei bug di APT</ulink>.\n"
+" Se si desidera segnalare un bug in APT, vedere\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</filename> o il\n"
+" comando &reportbug;.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Boiler plate Author section -->\n"
+"<!ENTITY manauthor \"\n"
+" <refsect1><title>Author</title>\n"
+" <para>APT was written by the APT team <email>apt@packages.debian.org</email>.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+"<!-- Sezione standard autore -->\n"
+"<!ENTITY manauthor \"\n"
+" <refsect1><title>Autore</title>\n"
+" <para>APT è stato scritto dal Team APT <email>apt@packages.debian.org</email>.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-commonoptions \"\n"
+" <varlistentry><term><option>-h</option></term>\n"
+" <term><option>--help</option></term>\n"
+" <listitem><para>Show a short usage summary.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!-- Da usare all'interno della sezione opzioni del testo da\n"
+" mettere nella pappardella su -h, -v, -c e -o -->\n"
+"<!ENTITY apt-commonoptions \"\n"
+" <varlistentry><term><option>-h</option></term>\n"
+" <term><option>--help</option></term>\n"
+" <listitem><para>Mostra un breve riassunto sull'uso.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-v</option></term>\n"
+" <term><option>--version</option></term>\n"
+" <listitem><para>Show the program version.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-v</option></term>\n"
+" <term><option>--version</option></term>\n"
+" <listitem><para>Mostra la versione del programma.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-c</option></term>\n"
+" <term><option>--config-file</option></term>\n"
+" <listitem><para>Configuration File; Specify a configuration file to use. \n"
+" The program will read the default configuration file and then this \n"
+" configuration file. If configuration settings need to be set before the\n"
+" default configuration files are parsed specify a file with the <envar>APT_CONFIG</envar>\n"
+" environment variable. See &apt-conf; for syntax information.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-c</option></term>\n"
+" <term><option>--config-file</option></term>\n"
+" <listitem><para>File di configurazione; specifica un file di configurazione da usare. \n"
+" Il programma legge il file di configurazione predefinito e poi questo \n"
+" file di configurazione. Se è necessario modificare le impostazioni di \n"
+" configurazione prima che vengano analizzati i file di configurazione \n"
+" predefiniti, specificare un file con la variabile d'ambiente <envar>APT_CONFIG</envar>. \n"
+" Vedere &apt-conf; per informazioni sulla sintassi.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-o</option></term>\n"
+" <term><option>--option</option></term>\n"
+" <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
+" configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
+" <option>-o</option> and <option>--option</option> can be used multiple\n"
+" times to set different options.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-o</option></term>\n"
+" <term><option>--option</option></term>\n"
+" <listitem><para>Imposta un'opzione di configurazione; imposterà una qualunque\n"
+" opzione di configurazione. La sintassi è <option>-o Pinco::Pallo=pallo</option>.\n"
+" <option>-o</option> e <option>--option</option> si possono usare più\n"
+" volte per impostare opzioni diverse.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-cmdblurb \"\n"
+" <para>All command line options may be set using the configuration file, the\n"
+" descriptions indicate the configuration option to set. For boolean\n"
+" options you can override the config file by using something like \n"
+" <option>-f-</option>,<option>--no-f</option>, <option>-f=no</option>\n"
+" or several other variations.\n"
+" </para>\n"
+"\">\n"
+msgstr ""
+"<!-- Da usare all'interno della sezione opzioni del testo da\n"
+" mettere nella pappardella su -h, -v, -c e -o -->\n"
+"<!ENTITY apt-cmdblurb \"\n"
+" <para>Tutte le opzioni a riga di comando si possono impostare usando il file di\n"
+" configurazione; le descrizioni indicano l'opzione da impostare. Per le opzioni\n"
+" booleane si può scavalcare il file di configurazione usando \n"
+"qualcosa come <option>-f-</option>, <option>--no-f</option>, <option>-f=no</option>\n"
+" o diverse altre varianti.\n"
+" </para>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-aptconf \"\n"
+" <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>\n"
+" <listitem><para>APT configuration file.\n"
+" Configuration Item: <literal>Dir::Etc::Main</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-aptconf \"\n"
+" <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>\n"
+" <listitem><para>File di configurazione di APT.\n"
+" Voce di configurazione: <literal>Dir::Etc::Main</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
+" <listitem><para>APT configuration file fragments.\n"
+" Configuration Item: <literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
+" <listitem><para>Frammenti di file di configurazione di APT.\n"
+" Voce di configurazione: <literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-cachearchives \"\n"
+" <varlistentry><term><filename>&cachedir;/archives/</filename></term>\n"
+" <listitem><para>Storage area for retrieved package files.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-cachearchives \"\n"
+" <varlistentry><term><filename>&cachedir;/archives/</filename></term>\n"
+" <listitem><para>Area di archiviazione per i file dei pacchetti recuperati.\n"
+" Voce di configurazione: <literal>Dir::Cache::Archives</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>\n"
+" <listitem><para>Storage area for package files in transit.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>\n"
+" <listitem><para>Area di archiviazione per i file dei pacchetti in transito.\n"
+" Voce di configurazione: <literal>Dir::Cache::Archives</literal> (<filename>partial</filename> verrà implicitamente aggiunto in fondo al nome)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-preferences \"\n"
+" <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
+" <listitem><para>Version preferences file.\n"
+" This is where you would specify &quot;pinning&quot;,\n"
+" i.e. a preference to get certain packages\n"
+" from a separate source\n"
+" or from a different version of a distribution.\n"
+" Configuration Item: <literal>Dir::Etc::Preferences</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-preferences \"\n"
+" <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
+" <listitem><para>File di preferenze di versione.\n"
+" Qui si specifica il &quot;pinning&quot;,\n"
+" ossia una preferenza a prendere determinati pacchetti\n"
+" da una fonte separata\n"
+" o da una diversa versione di una distribuzione.\n"
+" Voce di configurazione: <literal>Dir::Etc::Preferences</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>\n"
+" <listitem><para>File fragments for the version preferences.\n"
+" Configuration Item: <literal>Dir::Etc::PreferencesParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>\n"
+" <listitem><para>Frammenti di file per le preferenze di versione.\n"
+" Voce di configurazione: <literal>Dir::Etc::PreferencesParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-sourceslist \"\n"
+" <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+" <listitem><para>Locations to fetch packages from.\n"
+" Configuration Item: <literal>Dir::Etc::SourceList</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-sourceslist \"\n"
+" <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+" <listitem><para>Posizioni da cui scaricare i pacchetti.\n"
+" Voce di configurazione: <literal>Dir::Etc::SourceList</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
+" <listitem><para>File fragments for locations to fetch packages from.\n"
+" Configuration Item: <literal>Dir::Etc::SourceParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
+" <listitem><para>Frammenti di file per le posizioni da cui scaricare i pacchetti.\n"
+" Voce di configurazione: <literal>Dir::Etc::SourceParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-statelists \"\n"
+" <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
+" <listitem><para>Storage area for state information for each package resource specified in\n"
+" &sources-list;\n"
+" Configuration Item: <literal>Dir::State::Lists</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-statelists \"\n"
+" <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
+" <listitem><para>Area di archiviazione per le informazioni sullo stato di ciascuna risorsa dei pacchetti specificata in\n"
+" &sources-list;\n"
+" Voce di configurazione: <literal>Dir::State::Lists</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>\n"
+" <listitem><para>Storage area for state information in transit.\n"
+" Configuration Item: <literal>Dir::State::Lists</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>\n"
+" <listitem><para>Area di archiviazione per le informazioni di stato in transito.\n"
+" Voce di configurazione: <literal>Dir::State::Lists</literal> (<filename>partial</filename> verrà implicitamente aggiunto in fondo al nome)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-trustedgpg \"\n"
+" <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
+" <listitem><para>Keyring of local trusted keys, new keys will be added here.\n"
+" Configuration Item: <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-trustedgpg \"\n"
+" <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
+" <listitem><para>Portachiavi delle chiavi fidate locali; qui saranno aggiunte le nuove chiavi.\n"
+" Voce di configurazione: <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
+" <listitem><para>File fragments for the trusted keys, additional keyrings can\n"
+" be stored here (by other packages or the administrator).\n"
+" Configuration Item <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
+" <listitem><para>Frammenti di file per le chiavi fidate, qui potranno essere memorizzati\n"
+" ulteriori portachiavi (da parte di altri pacchetti o dall'amministratore).\n"
+" Voce di configurazione <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-extended_states \"\n"
+" <varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>\n"
+" <listitem><para>Status list of auto-installed packages.\n"
+" Configuration Item: <literal>Dir::State::extended_states</literal>.\n"
+" </para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY file-extended_states \"\n"
+" <varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>\n"
+" <listitem><para>Elenco degli stati dei pacchetti installati automaticamente.\n"
+" Voce di configurazione: <literal>Dir::State::extended_states</literal>.\n"
+" </para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is the section header for the following paragraphs - comparable\n"
+" to the other headers like NAME and DESCRIPTION and should therefore be uppercase. -->\n"
+"<!ENTITY translation-title \"TRANSLATION\">\n"
+msgstr ""
+"<!-- TRANSLATOR: This is the section header for the following paragraphs - comparable\n"
+" to the other headers like NAME and DESCRIPTION and should therefore be uppercase. -->\n"
+"<!ENTITY translation-title \"TRADUZIONE\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is a placeholder. You should write here who has contributed\n"
+" to the translation in the past, who is responsible now and maybe further information\n"
+" specially related to your translation. -->\n"
+"<!ENTITY translation-holder \"\n"
+" The english translation was done by John Doe <email>john@doe.org</email> in 2009,\n"
+" 2010 and Daniela Acme <email>daniela@acme.us</email> in 2010 together with the\n"
+" Debian Dummy l10n Team <email>debian-l10n-dummy@lists.debian.org</email>.\n"
+"\">\n"
+msgstr ""
+"<!-- TRANSLATOR: This is a placeholder. You should write here who has contributed\n"
+" to the translation in the past, who is responsible now and maybe further information\n"
+" specially related to your translation. -->\n"
+"<!ENTITY translation-holder \"\n"
+" Traduzione in italiano a cura del Team italiano di localizzazione di Debian <email>debian-l10n-italian@lists.debian.org</email>. In particolare hanno contribuito Eugenia Franzoni (2000), Hugh Hartmann (2000-2012), Gabriele Stilli (2012), Beatrice Torracca (2012, 2014, 2015).\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: As a translation is allowed to have 20% of untranslated/fuzzy strings\n"
+" in a shipped manpage newer/modified paragraphs will maybe appear in english in\n"
+" the generated manpage. This sentence is therefore here to tell the reader that this\n"
+" is not a mistake by the translator - obviously the target is that at least for stable\n"
+" releases this sentence is not needed. :) -->\n"
+"<!ENTITY translation-english \"\n"
+" Note that this translated document may contain untranslated parts.\n"
+" This is done on purpose, to avoid losing content when the\n"
+" translation is lagging behind the original content.\n"
+"\">\n"
+msgstr ""
+"<!-- TRANSLATOR: As a translation is allowed to have 20% of untranslated/fuzzy strings\n"
+" in a shipped manpage newer/modified paragraphs will maybe appear in english in\n"
+" the generated manpage. This sentence is therefore here to tell the reader that this\n"
+" is not a mistake by the translator - obviously the target is that at least for stable\n"
+" releases this sentence is not needed. :) -->\n"
+"<!ENTITY translation-english \"\n"
+" Notare che questa versione tradotta del documento può contenere parti non tradotte. Ciò è voluto, per evitare di perdere contenuti quando la traduzione non è aggiornata rispetto all'originale.\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
+"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
+"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"stringa_config\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -c=config_file e.g. -c=./apt.conf --> <!ENTITY "
+"synopsis-config-file \"config_file\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -c=config_file e.g. -c=./apt.conf --> <!ENTITY "
+"synopsis-config-file \"file_config\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
+"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"\"target_release\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
+"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"\"rilascio_obiettivo\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -a=architecture e.g. -a=armel --> <!ENTITY "
+"synopsis-architecture \"architecture\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -a=architecture e.g. -a=armel --> <!ENTITY "
+"synopsis-architecture \"architettura\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-get install pkg e.g. apt-get install awesome "
+"--> <!ENTITY synopsis-pkg \"pkg\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-get install pkg e.g. apt-get install awesome "
+"--> <!ENTITY synopsis-pkg \"pacch\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in pkg=pkg_version_number e.g. apt=0.8.15 --> <!"
+"ENTITY synopsis-pkg-ver-number \"pkg_version_number\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in pkg=pkg_version_number e.g. apt=0.8.15 --> <!"
+"ENTITY synopsis-pkg-ver-number \"numero_versione_pacch\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache pkgnames prefix e.g. apt-cache "
+"pkgnames apt --> <!ENTITY synopsis-prefix \"prefix\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-cache pkgnames prefix e.g. apt-cache "
+"pkgnames apt --> <!ENTITY synopsis-prefix \"prefisso\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache search regex e.g. apt-cache search "
+"awesome --> <!ENTITY synopsis-regex \"regex\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-cache search regex e.g. apt-cache search "
+"awesome --> <!ENTITY synopsis-regex \"espr_reg\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
+"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
+"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"punto_mount_cdrom\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates -t=temporary_directory e.g. "
+"apt-extracttemplates -t=/tmp --> <!ENTITY synopsis-tmp-directory "
+"\"temporary_directory\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates -t=temporary_directory e.g. "
+"apt-extracttemplates -t=/tmp --> <!ENTITY synopsis-tmp-directory "
+"\"directory_temporanea\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates filename --> <!ENTITY "
+"synopsis-filename \"filename\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates filename --> <!ENTITY "
+"synopsis-filename \"nomefile\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-path \"path\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-path \"percorso"
+"\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-override "
+"\"override-file\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-override \"file-"
+"override\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-pathprefix "
+"\"pathprefix\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-pathprefix "
+"\"prefisso_percorso\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"generate section --> <!ENTITY synopsis-section \"section\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"generate section --> <!ENTITY synopsis-section \"sezione\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+"473041FA --> <!ENTITY synopsis-keyid \"IDchiave\">"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+msgid "8"
+msgstr "8"
+
+#. type: Content of: <refentry><refmeta><refmiscinfo>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "APT"
+msgstr "APT"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.8.xml
+msgid "command-line interface"
+msgstr "interfaccia a riga di comando"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "Description"
+msgstr "Descrizione"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"<command>apt</command> provides a high-level commandline interface for the "
+"package management system. It is intended as an end user interface and "
+"enables some options better suited for interactive usage by default compared "
+"to more specialized APT tools like &apt-get; and &apt-cache;."
+msgstr ""
+"<command>apt</command> fornisce un'interfaccia a riga di comando di alto "
+"livello per il sistema di gestione dei pacchetti. È pensata come interfaccia "
+"per l'utente finale e permette in modo predefinito alcune opzioni più adatte "
+"per l'uso interattivo rispetto a strumenti APT più specializzati come &apt-"
+"get; e &apt-cache;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"Much like <command>apt</command> itself, its manpage is intended as an end "
+"user interface and as such only mentions the most used commands and options "
+"partly to not duplicate information in multiple places and partly to avoid "
+"overwhelming readers with a cornucopia of options and details."
+msgstr ""
+"Proprio come <command>apt</command> stesso, la sua pagina di manuale è "
+"pensata come interfaccia per l'utente finale e, pertanto, menziona solamente "
+"i comandi e le opzioni più utilizzati, in parte per non duplicare le "
+"informazioni in più posti e in parte per evitare di travolgere i lettori con "
+"una valanga di opzioni e dettagli."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(&apt-get;)"
+msgstr "(&apt-get;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>update</option> is used to download package information from all "
+"configured sources. Other commands operate on this data to e.g. perform "
+"package upgrades or search in and display details about all packages "
+"available for installation."
+msgstr ""
+"<option>update</option> viene usato per scaricare le informazioni sui "
+"pacchetti da tutte le fonti configurate. Altri comandi operano su questi "
+"dati, ad esempio per effettuare gli aggiornamenti dei pacchetti o per "
+"cercare e visualizzare i dettagli su tutti i pacchetti disponibili per "
+"l'installazione."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>upgrade</option> is used to install available upgrades of all "
+"packages currently installed on the system from the sources configured via "
+"&sources-list;. New packages will be installed if required to satisfy "
+"dependencies, but existing packages will never be removed. If an upgrade for "
+"a package requires the remove of an installed package the upgrade for this "
+"package isn't performed."
+msgstr ""
+"<option>upgrade</option> viene usato per installare gli aggiornamenti "
+"disponibili per tutti i pacchetti attualmente installati nel sistema "
+"prendendoli dalle fonti configurate attraverso &sources-list;. Nuovi "
+"pacchetti verranno installati se necessari per soddisfare le dipendenze, ma "
+"quelli esistenti non saranno mai rimossi. Se l'aggiornamento di un pacchetto "
+"richiede la rimozione di un pacchetto installato, l'aggiornamento di tale "
+"pacchetto non viene effettuato."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>full-upgrade</literal> performs the function of upgrade but will "
+"remove currently installed packages if this is needed to upgrade the system "
+"as a whole."
+msgstr ""
+"<literal>full-upgrade</literal> effettua la funzione di aggiornamento ma "
+"rimuove i pacchetti attualmente installati se ciò è necessario per "
+"aggiornare il sistema nel suo complesso."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml apt-key.8.xml
+msgid ","
+msgstr ","
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Performs the requested action on one or more packages specified via &regex;, "
+"&glob; or exact match. The requested action can be overridden for specific "
+"packages by append a plus (+) to the package name to install this package or "
+"a minus (-) to remove it."
+msgstr ""
+"Effettua l'azione richiesta su uno o più pacchetti specificati attraverso "
+"&regex;, &glob; o una corrispondenza esatta. L'azione richiesta può essere "
+"modificata per pacchetti specifici aggiungendo un segno più (+) al nome di "
+"un pacchetto per installarlo o un segno meno (-) per rimuoverlo."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals (=) and the version of the package "
+"to select. Alternatively the version from a specific release can be selected "
+"by following the package name with a forward slash (/) and codename (&debian-"
+"stable-codename;, &debian-testing-codename;, sid …) or suite name (stable, "
+"testing, unstable). This will also select versions from this release for "
+"dependencies of this package if needed to satisfy the request."
+msgstr ""
+"È possibile selezionare una versione specifica di un pacchetto per "
+"l'installazione scrivendo dopo il nome del pacchetto un segno di uguale (=) "
+"e la versione del pacchetto da selezionare. In alternativa può essere "
+"selezionata la versione da un rilascio specifico scrivendo dopo il nome del "
+"pacchetto una sbarra («/») e il nome in codice (&debian-stable-codename;, "
+"&debian-testing-codename;, sid …) o il nome della suite (stable, testing, "
+"unstable). Se necessarie per soddisfare la richiesta, anche le dipendenze "
+"del pacchetto in oggetto saranno selezionate da questo rilascio."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Removing a package removes all packaged data, but leaves usually small "
+"(modified) user configuration files behind, in case the remove was an "
+"accident. Just issuing an installation request for the accidentally removed "
+"package will restore its function as before in that case. On the other hand "
+"you can get rid of these leftovers by calling <command>purge</command> even "
+"on already removed packages. Note that this does not affect any data or "
+"configuration stored in your home directory."
+msgstr ""
+"La rimozione di un pacchetto rimuove tutti i dati pacchettizzati, ma "
+"solitamente lascia piccoli file di configurazione utente (modificati), nel "
+"caso la rimozione sia avvenuta per errore. In questo caso basta una "
+"richiesta di installazione del pacchetto rimosso per sbaglio per "
+"ripristinare il suo funzionamento come era prima. D'altro canto ci si può "
+"sbarazzare di questi avanzi di file chiamando <command>purge</command> anche "
+"sui pacchetti già rimossi. Notare che ciò non ha effetto sui dati o le "
+"configurazioni memorizzate nelle directory personali degli utenti."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed as dependencies changed or the package(s) needing them "
+"were removed in the meantime."
+msgstr ""
+"<literal>autoremove</literal> viene usato per rimuovere i pacchetti che sono "
+"stati installati automaticamente per soddisfare delle dipendenze per altri "
+"pacchetti e che non sono più necessari perché le dipendenze sono cambiate o "
+"perché i pacchetti che li richiedevano sono stati nel frattempo rimossi."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"You should check that the list does not include applications you have grown "
+"to like even though they were once installed just as a dependency of another "
+"package. You can mark such a package as manually installed by using &apt-"
+"mark;. Packages which you have installed explicitly via <command>install</"
+"command> are also never proposed for automatic removal."
+msgstr ""
+"Si dovrebbe controllare che la l'elenco non includa applicazioni che sono "
+"nel frattempo diventate desiderate, anche se sono state inizialmente "
+"installate solo come dipendenze di un altro pacchetto. Si possono marcare "
+"tali pacchetti come installati manualmente usando &apt-mark;. Anche i "
+"pacchetti che sono stati esplicitamente installati con <command>install</"
+"command> non vengono mai proposti per la rimozione automatica."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(&apt-cache;)"
+msgstr "(&apt-cache;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>search</option> can be used to search for the given &regex; term(s) "
+"in the list of available packages and display matches. This can e.g. be "
+"useful if you are looking for packages having a specific feature. If you "
+"are looking for a package including a specific file try &apt-file;."
+msgstr ""
+"<option>search</option> può essere usato per cercare daterminati termini "
+"&regex; nell'elenco dei pacchetti disponibili e per visualizzare le "
+"corrispondenze. Ciò è ad esempio utile se si stanno cercando pacchetti con "
+"una specifica funzionalità. Per cercare un pacchetto che contiene un file "
+"specifico provare &apt-file;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Show information about the given package(s) including its dependencies, "
+"installation and download size, sources the package is available from, the "
+"description of the packages content and much more. It can e.g. be helpful to "
+"look at this information before allowing &apt; to remove a package or while "
+"searching for new packages to install."
+msgstr ""
+"Mostra informazioni sui pacchetti specificati, incluse le loro dipendenze, "
+"le dimensioni di installazione e scaricamento, le fonti da cui sono "
+"disponibili, le descrizioni del contenuto dei pacchetti e molto altro. Può "
+"ad esempio essere utile per vedere tutte queste informazioni prima di "
+"permettere ad &apt; di rimuovere un pacchetto o quando si cercano nuovi "
+"pacchetti da installare."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(work-in-progress)"
+msgstr "(lavoro-in-corso)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>list</option> is somewhat similar to <command>dpkg-query --list</"
+"command> in that it can display a list of packages satisfying certain "
+"criteria. It supports &glob; patterns for matching package names as well as "
+"options to list installed (<option>--installed</option>), upgradeable "
+"(<option>--upgradeable</option>) or all available (<option>--all-versions</"
+"option>) versions."
+msgstr ""
+"<option>list</option> è in qualche modo simile a <command>dpkg-query --list</"
+"command>, nel senso che può visualizzare un elenco di pacchetti che "
+"soddisfano determinati criteri. Supporta l'uso di modelli &glob; per le "
+"corrispondenze con i nomi dei pacchetti, così come opzioni per elencare le "
+"versioni installate (<option>--installed</option>), aggiornabili (<option>--"
+"upgradeable</option>) o disponibili (<option>--all-versions</option>)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>edit-sources</literal> lets you edit your &sources-list; files in "
+"your preferred texteditor while also providing basic sanity checks."
+msgstr ""
+"<literal>edit-sources</literal> permette di modificare i propri file "
+"&sources-list; nell'editor di testo preferito e fornisce controlli di sanità "
+"di base."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml
+msgid "Script Usage and Differences from Other APT Tools"
+msgstr "Uso di script e differenze rispetto ad altri strumenti APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"The &apt; commandline is designed as an end-user tool and it may change "
+"behavior between versions. While it tries not to break backward "
+"compatibility this is not guaranteed either if a change seems beneficial for "
+"interactive use."
+msgstr ""
+"La riga di comando di &apt; è progettata come strumento per l'utente finale "
+"e il suo comportamento può cambiare da una versione ad un'altra. Sebbene si "
+"cerchi di non rompere la compatibilità all'indietro, questa però non è "
+"garantita se una modifica sembra utile per l'uso interattivo."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"All features of &apt; are available in dedicated APT tools like &apt-get; "
+"and &apt-cache; as well. &apt; just changes the default value of some "
+"options (see &apt-conf; and specifically the Binary scope). So you should "
+"prefer using these commands (potentially with some additional options "
+"enabled) in your scripts as they keep backward compatibility as much as "
+"possible."
+msgstr ""
+"Tutte le funzionalità di &apt; sono anche disponibili in strumenti APT "
+"dedicati come &apt-get; e &apt-cache;. &apt; cambia solamente il valore "
+"predefinito di alcune opzioni (vedere &apt-conf; e in particolare la sezione "
+"Binary). Perciò si raccomanda di preferire l'uso di questi comandi "
+"(potenzialmente con abilitate alcune opzioni aggiuntive) negli script, dato "
+"che essi mantengono il più possibile la compatibilità all'indietro."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "See Also"
+msgstr "Vedere anche"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
+"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+msgstr ""
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, la Guida "
+"dell'utente di APT in &guidesdir;, &apt-preferences;, l'APT Howto."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-cdrom.8.xml
+#: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml
+msgid "Diagnostics"
+msgstr "Diagnostica"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"<command>apt</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+"<command>apt</command> restituisce zero in caso di funzionamento normale e "
+"il valore decimale 100 in caso di errore."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-get.8.xml
+msgid "APT package handling utility -- command-line interface"
+msgstr ""
+"strumento APT per la gestione dei pacchetti, interfaccia a riga di comando"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"<command>apt-get</command> is the command-line tool for handling packages, "
+"and may be considered the user's \"back-end\" to other tools using the APT "
+"library. Several \"front-end\" interfaces exist, such as &aptitude;, "
+"&synaptic; and &wajig;."
+msgstr ""
+"<command>apt-get</command> è lo strumento a riga di comando per gestire "
+"pacchetti e può essere considerato il «backend» dell'utente per altri "
+"strumenti che usano la libreria APT. Esistono diversi «front-end» per "
+"interfaccia, come &aptitude;, &synaptic; e &wajig;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml apt-cache.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt-ftparchive.1.xml
+msgid ""
+"Unless the <option>-h</option>, or <option>--help</option> option is given, "
+"one of the commands below must be present."
+msgstr ""
+"A meno che non venga fornita l'opzione <option>-h</option> o <option>--help</"
+"option>, deve essere presente uno dei comandi seguenti."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>update</literal> is used to resynchronize the package index files "
+"from their sources. The indexes of available packages are fetched from the "
+"location(s) specified in <filename>/etc/apt/sources.list</filename>. For "
+"example, when using a Debian archive, this command retrieves and scans the "
+"<filename>Packages.gz</filename> files, so that information about new and "
+"updated packages is available. An <literal>update</literal> should always be "
+"performed before an <literal>upgrade</literal> or <literal>dist-upgrade</"
+"literal>. Please be aware that the overall progress meter will be incorrect "
+"as the size of the package files cannot be known in advance."
+msgstr ""
+"<literal>update</literal> è usato per sincronizzare nuovamente i file degli "
+"indici dei pacchetti dalle loro fonti. Gli indici dei pacchetti disponibili "
+"sono scaricati dalle posizioni specificate in <filename>/etc/apt/sources."
+"list</filename>. Per esempio, quando si usa un archivio Debian, questo "
+"comando recupera e analizza i file <filename>Packages.gz</filename>, in modo "
+"da rendere disponibili informazioni sui pacchetti nuovi e quelli aggiornati. "
+"Si dovrebbe sempre fare un <literal>update</literal> prima di un "
+"<literal>upgrade</literal> o <literal>dist-upgrade</literal>. Notare che "
+"l'indicatore di avanzamento globale non è preciso perché è impossibile "
+"conoscere in anticipo la dimensione dei file degli indici dei pacchetti."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>upgrade</literal> is used to install the newest versions of all "
+"packages currently installed on the system from the sources enumerated in "
+"<filename>/etc/apt/sources.list</filename>. Packages currently installed "
+"with new versions available are retrieved and upgraded; under no "
+"circumstances are currently installed packages removed, or packages not "
+"already installed retrieved and installed. New versions of currently "
+"installed packages that cannot be upgraded without changing the install "
+"status of another package will be left at their current version. An "
+"<literal>update</literal> must be performed first so that <command>apt-get</"
+"command> knows that new versions of packages are available."
+msgstr ""
+"<literal>upgrade</literal> è usato per installare le versioni più recenti di "
+"tutti i pacchetti attualmente installati sul sistema, usando le fonti "
+"elencate in <filename>/etc/apt/sources.list</filename>. I pacchetti "
+"attualmente installati con nuove versioni disponibili sono recuperati e "
+"aggiornati; in nessun caso vengono rimossi pacchetti attualmente installati "
+"oppure recuperati e installati pacchetti che non lo sono già. I pacchetti "
+"attualmente installati che hanno una nuova versione, ma che non possono "
+"essere aggiornati senza cambiare lo stato di installazione di un altro "
+"pacchetto, vengono lasciati alla versione attuale. Deve essere prima "
+"effettuato un <literal>update</literal> in modo che <command>apt-get</"
+"command> sappia se sono disponibili nuove versioni dei pacchetti."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>dist-upgrade</literal> in addition to performing the function of "
+"<literal>upgrade</literal>, also intelligently handles changing dependencies "
+"with new versions of packages; <command>apt-get</command> has a \"smart\" "
+"conflict resolution system, and it will attempt to upgrade the most "
+"important packages at the expense of less important ones if necessary. The "
+"<literal>dist-upgrade</literal> command may therefore remove some packages. "
+"The <filename>/etc/apt/sources.list</filename> file contains a list of "
+"locations from which to retrieve desired package files. See also &apt-"
+"preferences; for a mechanism for overriding the general settings for "
+"individual packages."
+msgstr ""
+"<literal>dist-upgrade</literal>, oltre ad effettuare le funzioni di "
+"<literal>upgrade</literal>, gestisce anche in maniera intelligente le "
+"modifiche delle dipendenze delle nuove versioni dei pacchetti; <command>apt-"
+"get</command> ha un sistema «intelligente» di risoluzione dei conflitti e "
+"cerca di aggiornare i pacchetti più importanti a scapito di quelli meno "
+"importanti, se necessario. Il comando <literal>dist-upgrade</literal> può "
+"quindi rimuovere alcuni pacchetti. Il file <filename>/etc/apt/sources.list</"
+"filename> contiene un elenco di posizioni da cui recuperare i file di "
+"pacchetto desiderati. Vedere anche &apt-preferences; per un meccanismo per "
+"scavalcare le impostazioni generali per singoli pacchetti."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>dselect-upgrade</literal> is used in conjunction with the "
+"traditional Debian packaging front-end, &dselect;. <literal>dselect-upgrade</"
+"literal> follows the changes made by &dselect; to the <literal>Status</"
+"literal> field of available packages, and performs the actions necessary to "
+"realize that state (for instance, the removal of old and the installation of "
+"new packages)."
+msgstr ""
+"<literal>dselect-upgrade</literal> viene usato insieme a &dselect;, il front-"
+"end tradizionale per i pacchetti di Debian. <literal>dselect-upgrade</"
+"literal> segue i cambiamenti fatti da &dselect; al campo <literal>Status</"
+"literal> dei pacchetti disponibili, ed effettua le azioni necessarie per "
+"realizzare tale stato (ad esempio la rimozione di vecchi pacchetti e "
+"l'installazione di nuovi)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>install</literal> is followed by one or more packages desired for "
+"installation or upgrading. Each package is a package name, not a fully "
+"qualified filename (for instance, in a Debian system, <package>apt-utils</"
+"package> would be the argument provided, not <filename>apt-utils_&apt-"
+"product-version;_amd64.deb</filename>). All packages required by the "
+"package(s) specified for installation will also be retrieved and installed. "
+"The <filename>/etc/apt/sources.list</filename> file is used to locate the "
+"desired packages. If a hyphen is appended to the package name (with no "
+"intervening space), the identified package will be removed if it is "
+"installed. Similarly a plus sign can be used to designate a package to "
+"install. These latter features may be used to override decisions made by apt-"
+"get's conflict resolution system."
+msgstr ""
+"<literal>install</literal> è seguito da uno o più pacchetti da installare o "
+"aggiornare. Ogni pacchetto è un nome di pacchetto, non un nome di file "
+"pienamente qualificato (ad esempio, in un sistema Debian, l'argomento "
+"fornito sarebbe <package>apt-utils</package>, non <filename>apt-utils_&apt-"
+"product-version;_amd64.deb</filename>). Tutti i pacchetti richiesti dai "
+"pacchetti specificati per l'installazione saranno anch'essi recuperati e "
+"installati. Il file <filename>/etc/apt/sources.list</filename> viene usato "
+"per localizzare i pacchetti desiderati. Se viene aggiunto un segno meno alla "
+"fine del nome di pacchetto (senza spazio), il pacchetto specificato viene "
+"rimosso, se è installato. Analogamente un segno più può essere usato per "
+"specificare un pacchetto da installare. Queste ultime funzionalità possono "
+"essere usate per scavalcare decisioni prese dal sistema di risoluzione dei "
+"conflitti di apt-get."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals and the version of the package to "
+"select. This will cause that version to be located and selected for install. "
+"Alternatively a specific distribution can be selected by following the "
+"package name with a slash and the version of the distribution or the Archive "
+"name (stable, testing, unstable)."
+msgstr ""
+"È possibile selezionare una versione specifica di un pacchetto per "
+"l'installazione scrivendo dopo il nome del pacchetto un segno di uguale e la "
+"versione del pacchetto da selezionare. Ciò farà sì che venga localizzata e "
+"selezionata per l'installazione quella versione. In alternativa può essere "
+"selezionata una distribuzione specifica scrivendo dopo il nome del pacchetto "
+"una sbarra («/») e la versione della distribuzione o il nome dell'archivio "
+"(stable, testing, unstable)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Both of the version selection mechanisms can downgrade packages and must be "
+"used with care."
+msgstr ""
+"Entrambi i meccanismi di selezione della versione possono far retrocedere "
+"pacchetti e devono essere usati con cautela."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This is also the target to use if you want to upgrade one or more already-"
+"installed packages without upgrading every package you have on your system. "
+"Unlike the \"upgrade\" target, which installs the newest version of all "
+"currently installed packages, \"install\" will install the newest version of "
+"only the package(s) specified. Simply provide the name of the package(s) "
+"you wish to upgrade, and if a newer version is available, it (and its "
+"dependencies, as described above) will be downloaded and installed."
+msgstr ""
+"Questa è l'azione da usare anche quando si desiderano aggiornare uno o più "
+"pacchetti già installati senza aggiornare ogni pacchetto nel sistema. A "
+"differenza dell'azione «upgrade», che aggiorna alla versione più recente "
+"tutti i pacchetti installati, «install» installa la versione più recente "
+"solamente per i pacchetti specificati. Basta fornire il nome dei pacchetti "
+"che si desiderano aggiornare e, se è disponibile una versione più recente, "
+"essa (e tutte le sue dipendenze come descritto sopra) verrà scaricata e "
+"installata."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Finally, the &apt-preferences; mechanism allows you to create an alternative "
+"installation policy for individual packages."
+msgstr ""
+"Da ultimo, il meccanismo &apt-preferences; permette di creare una politica "
+"di installazione alternativa per i singoli pacchetti."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If no package matches the given expression and the expression contains one "
+"of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and "
+"it is applied to all package names in the database. Any matches are then "
+"installed (or removed). Note that matching is done by substring so 'lo.*' "
+"matches 'how-lo' and 'lowest'. If this is undesired, anchor the regular "
+"expression with a '^' or '$' character, or create a more specific regular "
+"expression."
+msgstr ""
+"Se nessun pacchetto corrisponde all'espressione specificata e questa "
+"contiene uno tra «.», «?» o «*», allora viene considerata come "
+"un'espressione regolare POSIX e viene confrontata con tutti i nomi di "
+"pacchetto nel database. Ogni corrispondenza viene quindi installata (o "
+"rimossa). Notare che la corrispondenza avviene con sottostringhe, perciò "
+"«bass.*» trova corrispondenza con «quanto-bass» e «bassissimo». Se ciò non è "
+"quello che si desidera, ancorare l'espressione regolare con un carattere «^» "
+"o «$», oppure creare un'espressione regolare più specifica."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>remove</literal> is identical to <literal>install</literal> except "
+"that packages are removed instead of installed. Note that removing a package "
+"leaves its configuration files on the system. If a plus sign is appended to "
+"the package name (with no intervening space), the identified package will be "
+"installed instead of removed."
+msgstr ""
+"<literal>remove</literal> è identico a <literal>install</literal> tranne per "
+"il fatto che i pacchetti sono rimossi invece che installati. Notare che la "
+"rimozione di un pacchetto lascia i suoi file di configurazione nel sistema. "
+"Se viene aggiunto un segno più in fondo al nome del pacchetto (senza spazi "
+"in mezzo), il pacchetto specificato viene installato invece che rimosso."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>purge</literal> is identical to <literal>remove</literal> except "
+"that packages are removed and purged (any configuration files are deleted "
+"too)."
+msgstr ""
+"<literal>purge</literal> è identico a <literal>remove</literal> tranne per "
+"il fatto che i pacchetti sono rimossi ed eliminati completamente (viene "
+"eliminato anche ogni file di configurazione)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>source</literal> causes <command>apt-get</command> to fetch source "
+"packages. APT will examine the available packages to decide which source "
+"package to fetch. It will then find and download into the current directory "
+"the newest available version of that source package while respecting the "
+"default release, set with the option <literal>APT::Default-Release</"
+"literal>, the <option>-t</option> option or per package with the "
+"<literal>pkg/release</literal> syntax, if possible."
+msgstr ""
+"<literal>source</literal> fa sì che <command>apt-get</command> scarichi i "
+"pacchetti sorgente. APT esaminerà i pacchetti disponibili per decidere quali "
+"pacchetti sorgente scaricare. Poi, se possibile, troverà e scaricherà nella "
+"directory corrente la versione più recente disponibile di quel pacchetto "
+"sorgente rispettando il rilascio predefinito, impostato con l'opzione "
+"<literal>APT::Default-Release</literal>, l'opzione <option>-t</option> o per "
+"i singoli pacchetti con la sintassi <literal>pacch/rilascio</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Source packages are tracked separately from binary packages via <literal>deb-"
+"src</literal> lines in the &sources-list; file. This means that you will "
+"need to add such a line for each repository you want to get sources from; "
+"otherwise you will probably get either the wrong (too old/too new) source "
+"versions or none at all."
+msgstr ""
+"Il sistema tiene traccia dei pacchetti sorgente in modo separato dai "
+"pacchetti binari, attraverso righe <literal>deb-src</literal> nel file "
+"&sources-list;. Ciò significa che sarà necessario aggiungere una riga di "
+"questo tipo per ciascun repository da cui si desiderano ottenere sorgenti; "
+"in caso contrario probabilmente si otterrà la versione sorgente sbagliata "
+"(troppo vecchia o troppo nuova) oppure nessuna versione."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If the <option>--compile</option> option is specified then the package will "
+"be compiled to a binary .deb using <command>dpkg-buildpackage</command> for "
+"the architecture as defined by the <command>--host-architecture</command> "
+"option. If <option>--download-only</option> is specified then the source "
+"package will not be unpacked."
+msgstr ""
+"Se viene specificata l'opzione <option>--compile</option> allora il "
+"pacchetto verrà compilato in un .deb binario usando <command>dpkg-"
+"buildpackage</command> per l'architettura così come definita dall'opzione "
+"<command>--host-architecture</command>. Se viene usata l'opzione <option>--"
+"download-only</option>, allora il pacchetto sorgente non verrà spacchettato."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"A specific source version can be retrieved by postfixing the source name "
+"with an equals and then the version to fetch, similar to the mechanism used "
+"for the package files. This enables exact matching of the source package "
+"name and version, implicitly enabling the <literal>APT::Get::Only-Source</"
+"literal> option."
+msgstr ""
+"Può essere recuperata una specifica versione sorgente facendo seguire al "
+"nome del sorgente un segno uguale e quindi la versione da scaricare, in modo "
+"simile al meccanismo usato per i file di pacchetto. Ciò permette la "
+"corrispondenza esatta con il nome e la versione del pacchetto sorgente, "
+"abilitando implicitamente l'opzione <literal>APT::Get::Only-Source</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Note that source packages are not installed and tracked in the "
+"<command>dpkg</command> database like binary packages; they are simply "
+"downloaded to the current directory, like source tarballs."
+msgstr ""
+"Notare che i pacchetti sorgente non vengono installati né viene tenuta "
+"traccia di essi nel database di <command>dpkg</command> come per i pacchetti "
+"binari; sono semplicemente scaricati nella directory corrente, come archivi "
+"tar dei sorgenti."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>build-dep</literal> causes apt-get to install/remove packages in an "
+"attempt to satisfy the build dependencies for a source package. By default "
+"the dependencies are satisfied to build the package natively. If desired a "
+"host-architecture can be specified with the <option>--host-architecture</"
+"option> option instead."
+msgstr ""
+"<literal>build-dep</literal> fa sì che apt-get installi o rimuova pacchetti, "
+"nel tentativo di soddisfare le dipendenze di compilazione di un pacchetto "
+"sorgente. In modo predefinito sono soddisfatte le dipendenze per compilare "
+"il pacchetto in modo nativo. Se lo si desidera, è possibile invece "
+"specificare un'architettura ospite con l'opzione <option>--host-"
+"architecture</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>check</literal> is a diagnostic tool; it updates the package cache "
+"and checks for broken dependencies."
+msgstr ""
+"<literal>check</literal> è uno strumento diagnostico; aggiorna la cache dei "
+"pacchetti e controlla la presenza di dipendenze non soddisfatte."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>download</literal> will download the given binary package into the "
+"current directory."
+msgstr ""
+"<literal>download</literal> scarica il pacchetto binario specificato nella "
+"directory corrente."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>clean</literal> clears out the local repository of retrieved "
+"package files. It removes everything but the lock file from "
+"<filename>&cachedir;/archives/</filename> and <filename>&cachedir;/archives/"
+"partial/</filename>."
+msgstr ""
+"<literal>clean</literal> ripulisce il repository locale dei file di "
+"pacchetto recuperati. Rimuove tutto da <filename>&cachedir;/archives/</"
+"filename> e <filename>&cachedir;/archives/partial/</filename>, tranne il "
+"file di lock."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "(and the"
+msgstr "(e l'alias"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias since 1.1)"
+msgstr "a partire da 1.1)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Like <literal>clean</literal>, <literal>autoclean</literal> clears out the "
+"local repository of retrieved package files. The difference is that it only "
+"removes package files that can no longer be downloaded, and are largely "
+"useless. This allows a cache to be maintained over a long period without it "
+"growing out of control. The configuration option <literal>APT::Clean-"
+"Installed</literal> will prevent installed packages from being erased if it "
+"is set to off."
+msgstr ""
+"Come <literal>clean</literal>, <literal>autoclean</literal> ripulisce il "
+"repository locale dei file di pacchetto recuperati. La differenza sta nel "
+"fatto che rimuove solo i file di pacchetto che non possono più essere "
+"scaricati e sono per lo più inutili. Questo permette di mantenere una cache "
+"per un periodo lungo senza che cresca fuori controllo. Se l'opzione di "
+"configurazione <literal>APT::Clean-Installed</literal> è disabilitata, "
+"impedisce che vengano eliminati i pacchetti installati."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed."
+msgstr ""
+"<literal>autoremove</literal> viene usato per rimuovere i pacchetti che sono "
+"stati installati automaticamente per soddisfare delle dipendenze per altri "
+"pacchetti e che non sono più necessari."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>changelog</literal> tries to download the changelog of a package "
+"and displays it through <command>sensible-pager</command>. By default it "
+"displays the changelog for the version that is installed. However, you can "
+"specify the same options as for the <option>install</option> command."
+msgstr ""
+"<literal>changelog</literal> cerca di scaricare il changelog di un pacchetto "
+"e lo visualizza usando <command>sensible-pager</command>. In modo "
+"predefinito visualizza il changelog per la versione che è installata. "
+"Tuttavia si possono specificare le stesse opzioni del comando "
+"<option>install</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Displays by default a deb822 formatted listing of information about all "
+#| "data files (aka index targets) <command>apt-get update</command> would "
+#| "download. Supports a <option>--format</option> option to modify the "
+#| "output format as well as accepts lines of the default output to filter "
+#| "the records by. The command is mainly used as an interface for external "
+#| "tools working with APT to get information as well as filenames for "
+#| "downloaded files so they can use them as well instead of downloading them "
+#| "again on their own. Detailed documentation is omitted here and can "
+#| "instead be found in the source tree in <literal><filename>doc/acquire-"
+#| "additional-files.txt</filename></literal>."
+msgid ""
+"Displays by default a deb822 formatted listing of information about all data "
+"files (aka index targets) <command>apt-get update</command> would download. "
+"Supports a <option>--format</option> option to modify the output format as "
+"well as accepts lines of the default output to filter the records by. The "
+"command is mainly used as an interface for external tools working with APT "
+"to get information as well as filenames for downloaded files so they can use "
+"them as well instead of downloading them again on their own. Detailed "
+"documentation is omitted here and can instead be found in the file &apt-"
+"acquire-additional-files; shipped by the <package>apt-doc</package> package."
+msgstr ""
+"Visualizza in modo predefinito un elenco formattato come deb822 di "
+"informazioni su tutti i file dei dati (alias target indice) che <command>apt-"
+"get update</command> scaricherebbe. Permette l'uso di un'opzione <option>--"
+"format</option> per modificare il formato di output, così come accetta righe "
+"dell'output predefinito con cui filtrare le voci. Il comando è usato "
+"principalmente come interfaccia per strumenti esterni che lavorano con APT "
+"per ottenere informazioni e nomi di file per i file scaricati, in modo che "
+"possano essere usati anch'essi invece di riscaricarli. La documentazione "
+"dettagliata non è presentata qui e può essere invece trovata nell'albero dei "
+"sorgenti in <literal><filename>doc/acquire-additional-files.txt</filename></"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml apt-cache.8.xml apt-config.8.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "options"
+msgstr "opzioni"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not consider recommended packages as a dependency for installing. "
+"Configuration Item: <literal>APT::Install-Recommends</literal>."
+msgstr ""
+"Non considerare i pacchetti raccomandati come una dipendenza per "
+"l'installazione. Voce di configurazione: <literal>APT::Install-Recommends</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Consider suggested packages as a dependency for installing. Configuration "
+"Item: <literal>APT::Install-Suggests</literal>."
+msgstr ""
+"Considera i pacchetti suggeriti come una dipendenza per l'installazione. "
+"Voce di configurazione:<literal>APT::Install-Suggests</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Download only; package files are only retrieved, not unpacked or installed. "
+"Configuration Item: <literal>APT::Get::Download-Only</literal>."
+msgstr ""
+"Scarica solamente; i file di pacchetto sono solo recuperati e non "
+"spacchettati o installati. Voce di configurazione: <literal>APT::Get::"
+"Download-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Fix; attempt to correct a system with broken dependencies in place. This "
+"option, when used with install/remove, can omit any packages to permit APT "
+"to deduce a likely solution. If packages are specified, these have to "
+"completely correct the problem. The option is sometimes necessary when "
+"running APT for the first time; APT itself does not allow broken package "
+"dependencies to exist on a system. It is possible that a system's dependency "
+"structure can be so corrupt as to require manual intervention (which usually "
+"means using <command>dpkg --remove</command> to eliminate some of the "
+"offending packages). Use of this option together with <option>-m</option> "
+"may produce an error in some situations. Configuration Item: <literal>APT::"
+"Get::Fix-Broken</literal>."
+msgstr ""
+"Aggiusta; cerca di correggere un sistema che ha dipendenze non soddisfatte. "
+"Questa opzione, quando usata con install o remove, può omettere qualsiasi "
+"pacchetto per permettere ad APT di trovare una soluzione valida. Se sono "
+"specificati dei pacchetti, questi devono risolvere completamente il "
+"problema. L'opzione è a volte necessaria quando si esegue APT per la prima "
+"volta; APT stesso non permette l'esistenza di pacchetti con dipendenze non "
+"soddisfatte in un sistema. È possibile che la struttura di dipendenze di un "
+"sistema sia corrotta a tal punto da richiedere un intervento manuale (il che "
+"di solito significa usare <command>dpkg --remove</command> per eliminare "
+"alcuni dei pacchetti che creano problemi). L'uso di questa opzione insieme a "
+"<option>-m</option> può in alcune situazioni produrre un errore. Voce di "
+"configurazione: <literal>APT::Get::Fix-Broken</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore missing packages; if packages cannot be retrieved or fail the "
+"integrity check after retrieval (corrupted package files), hold back those "
+"packages and handle the result. Use of this option together with <option>-f</"
+"option> may produce an error in some situations. If a package is selected "
+"for installation (particularly if it is mentioned on the command line) and "
+"it could not be downloaded then it will be silently held back. "
+"Configuration Item: <literal>APT::Get::Fix-Missing</literal>."
+msgstr ""
+"Ignora i pacchetti mancanti; se alcuni pacchetti non possono essere "
+"recuperati o fallisce il controllo sulla loro integrità dopo il recupero "
+"(file di pacchetto corrotti), mantiene bloccati tali pacchetti e gestisce il "
+"risultato. L'uso di questa opzione insieme a <option>-f</option> può "
+"produrre un errore in alcune situazioni. Se un pacchetto è selezionato per "
+"l'installazione (particolarmente se è indicato nella riga di comando) e non "
+"può essere scaricato verrà silenziosamente mantenuto invariato. Voce di "
+"configurazione: <literal>APT::Get::Fix-Missing</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Disables downloading of packages. This is best used with <option>--ignore-"
+"missing</option> to force APT to use only the .debs it has already "
+"downloaded. Configuration Item: <literal>APT::Get::Download</literal>."
+msgstr ""
+"Disabilita lo scaricamento dei pacchetti. È usato al meglio con <option>--"
+"ignore-missing</option> per forzare APT ad usare solo i .deb che ha già "
+"scaricato. Voce di configurazione: <literal>APT::Get::Download</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Note that quiet level 2 implies <option>-y</option>; you should never "
+"use -qq without a no-action modifier such as -d, --print-uris or -s as APT "
+"may decide to do something you did not expect. Configuration Item: "
+"<literal>quiet</literal>."
+msgstr ""
+"Silenzioso; produce un output adatto alla registrazione, omettendo gli "
+"indicatori di avanzamento. L'uso di più «q» produce un output più silenzioso "
+"fino a un massimo di 2. Si può anche usare <option>-q=n</option> per "
+"impostare il livello di silenziosità a n, scavalcando il file di "
+"configurazione. Notare che il livello di silenziosità 2 implica <option>-y</"
+"option>; non si dovrebbe mai usare -qq senza un modificatore che non fa "
+"azioni come -d, --print-uris o -s, dato che APT potrebbe decidere di fare "
+"qualcosa di inatteso. Voce di configurazione: <literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"No action; perform a simulation of events that would occur based on the "
+"current system state but do not actually change the system. Locking will be "
+"disabled (<option>Debug::NoLocking</option>) so the system state could "
+"change while <command>apt-get</command> is running. Simulations can also be "
+"executed by non-root users which might not have read access to all apt "
+"configuration distorting the simulation. A notice expressing this warning "
+"is also shown by default for non-root users (<option>APT::Get::Show-User-"
+"Simulation-Note</option>). Configuration Item: <literal>APT::Get::Simulate</"
+"literal>."
+msgstr ""
+"Nessuna azione; effettua una simulazione degli eventi che avverrebbero sulla "
+"base dello stato attuale del sistema, ma non fa nulla per cambiare "
+"effettivamente il sistema. Il lock viene disabilitato (<option>Debug::"
+"NoLocking</option>) perciò lo stato del sistema può cambiare durante "
+"l'esecuzione di <command>apt-get</command>. Le simulazioni possono anche "
+"essere eseguite da utenti non privilegiati che potrebbero non aver accesso "
+"in lettura a tutta la configurazione di apt, rendendo perciò distorta la "
+"simulazione. Per gli utenti diversi da root viene mostrata in modo "
+"predefinito una notifica che avverte di questo (<option>APT::Get::Show-User-"
+"Simulation-Note</option>). Voce di configurazione: <literal>APT::Get::"
+"Simulate</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Simulated runs print out a series of lines, each representing a "
+"<command>dpkg</command> operation: configure (<literal>Conf</literal>), "
+"remove (<literal>Remv</literal>) or unpack (<literal>Inst</literal>). "
+"Square brackets indicate broken packages, and empty square brackets indicate "
+"breaks that are of no consequence (rare)."
+msgstr ""
+"Le esecuzioni simulate stampano una serie di righe, ciascuna delle quali "
+"rappresenta un'operazione di <command>dpkg</command>: configurazione "
+"(<literal>Conf</literal>), rimozione (<literal>Remv</literal>) o "
+"spacchettamento (<literal>Inst</literal>). Le parentesi quadre indicano i "
+"pacchetti difettosi e le parentesi quadre vuote indicano difetti che non "
+"hanno conseguenze (rari)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Automatic yes to prompts; assume \"yes\" as answer to all prompts and run "
+"non-interactively. If an undesirable situation, such as changing a held "
+"package, trying to install a unauthenticated package or removing an "
+"essential package occurs then <literal>apt-get</literal> will abort. "
+"Configuration Item: <literal>APT::Get::Assume-Yes</literal>."
+msgstr ""
+"Rispondi automaticamente «sì» ai prompt; assume «sì» come risposta a tutti i "
+"prompt e viene eseguito in modo non interattivo. Se si verifica una "
+"situazione non desiderabile, come il cambiamento di un pacchetto bloccato, "
+"il tentativo di installazione di un pacchetto non autenticato o la rimozione "
+"di un pacchetto essenziale, allora <literal>apt-get</literal> annullerà "
+"l'esecuzione. Voce di configurazione: <literal>APT::Get::Assume-Yes</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Automatic \"no\" to all prompts. Configuration Item: <literal>APT::Get::"
+"Assume-No</literal>."
+msgstr ""
+"Rispondi automaticamente «no» a tutti i prompt. Voce di configurazione: "
+"<literal>APT::Get::Assume-No</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Show upgraded packages; print out a list of all packages that are to be "
+#| "upgraded. Configuration Item: <literal>APT::Get::Show-Upgraded</literal>."
+msgid ""
+"Do not show a list of all packages that are to be upgraded. Configuration "
+"Item: <literal>APT::Get::Show-Upgraded</literal>."
+msgstr ""
+"Mostra i pacchetti aggiornati; stampa un elenco di tutti i pacchetti che "
+"devono essere aggiornati. Voce di configurazione: <literal>APT::Get::Show-"
+"Upgraded</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Show full versions for upgraded and installed packages. Configuration Item: "
+"<literal>APT::Get::Show-Versions</literal>."
+msgstr ""
+"Mostra la versione completa dei pacchetti aggiornati e installati. Voce di "
+"configurazione: <literal>APT::Get::Show-Versions</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the architecture packages are built for by <command>apt-"
+"get source --compile</command> and how cross-builddependencies are "
+"satisfied. By default is it not set which means that the host architecture "
+"is the same as the build architecture (which is defined by <literal>APT::"
+"Architecture</literal>). Configuration Item: <literal>APT::Get::Host-"
+"Architecture</literal>."
+msgstr ""
+"Questa opzione controlla l'architettura per la quale <command>apt-get source "
+"--compile</command> compila i pacchetti e come le dipendenze di compilazione "
+"incrociata sono soddisfatte. In modo predefinito non è impostata, il che "
+"significa che l'architettura ospite è la stessa dell'architettura di "
+"compilazione (che è definita da <literal>APT::Architecture</literal>). Voce "
+"di configurazione: <literal>APT::Get::Host-Architecture</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the activated build profiles for which a source package "
+"is built by <command>apt-get source --compile</command> and how build "
+"dependencies are satisfied. By default no build profile is active. More "
+"than one build profile can be activated at a time by concatenating them with "
+"a comma. Configuration Item: <literal>APT::Build-Profiles</literal>."
+msgstr ""
+"Questa opzione controlla i profili di compilazione attivi per i quali "
+"<command>apt-get source --compile</command> compila un pacchetto sorgente e "
+"come le dipendenze di compilazione sono soddisfatte. In modo predefinito non "
+"è attivo alcun profilo di compilazione. Più profili di compilazione possono "
+"essere attivati contemporaneamente concatenandoli con una virgola. Voce di "
+"configurazione: <literal>APT::Build-Profiles</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Compile source packages after downloading them. Configuration Item: "
+"<literal>APT::Get::Compile</literal>."
+msgstr ""
+"Compila i pacchetti sorgente dopo averli scaricati. Voce di configurazione: "
+"<literal>APT::Get::Compile</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore package holds; this causes <command>apt-get</command> to ignore a "
+"hold placed on a package. This may be useful in conjunction with "
+"<literal>dist-upgrade</literal> to override a large number of undesired "
+"holds. Configuration Item: <literal>APT::Ignore-Hold</literal>."
+msgstr ""
+"Ignora i blocchi sui pacchetti; ciò fa sì che <command>apt-get</command> "
+"ignori il blocco posto su un pacchetto. Può essere utile insieme a "
+"<literal>dist-upgrade</literal> per scavalcare un grande numero di blocchi "
+"non desiderati. Voce di configurazione: <literal>APT::Ignore-Hold</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Allow installing new packages when used in conjunction with "
+"<literal>upgrade</literal>. This is useful if the update of a installed "
+"package requires new dependencies to be installed. Instead of holding the "
+"package back <literal>upgrade</literal> will upgrade the package and install "
+"the new dependencies. Note that <literal>upgrade</literal> with this option "
+"will never remove packages, only allow adding new ones. Configuration Item: "
+"<literal>APT::Get::Upgrade-Allow-New</literal>."
+msgstr ""
+"Permette l'installazione di nuovi pacchetti quando usato insieme a "
+"<literal>upgrade</literal>. Ciò è utile se l'aggiornamento di un pacchetto "
+"installato richiede l'installazione di nuove dipendenze. Invece di bloccare "
+"il pacchetto <literal>upgrade</literal> aggiornerà il pacchetto e installerà "
+"le nuove dipendenze. Notare che <literal>upgrade</literal> con questa "
+"opzione non rimuoverà mai pacchetti, permetterà solo l'aggiunta di nuovi. "
+"Voce di configurazione: <literal>APT::Get::Upgrade-Allow-New</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not upgrade packages; when used in conjunction with <literal>install</"
+"literal>, <literal>no-upgrade</literal> will prevent packages on the command "
+"line from being upgraded if they are already installed. Configuration Item: "
+"<literal>APT::Get::Upgrade</literal>."
+msgstr ""
+"Non aggiornare i pacchetti; quando usato insieme a <literal>install</"
+"literal>, <literal>no-upgrade</literal> impedisce che i pacchetti nella riga "
+"di comando vengano aggiornati se sono già installati. Voce di "
+"configurazione: <literal>APT::Get::Upgrade</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not install new packages; when used in conjunction with <literal>install</"
+"literal>, <literal>only-upgrade</literal> will install upgrades for already "
+"installed packages only and ignore requests to install new packages. "
+"Configuration Item: <literal>APT::Get::Only-Upgrade</literal>."
+msgstr ""
+"Non installare nuovi pacchetti; quando usato insieme a <literal>install</"
+"literal>, <literal>only-upgrade</literal> installa gli aggiornamenti "
+"solamente per i pacchetti già installati e ignora le richieste di "
+"installarne di nuovi. Voce di configurazione: <literal>APT::Get::Only-"
+"Upgrade</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This is a dangerous option that will cause apt to continue without prompting "
+"if it is doing downgrades. It should not be used except in very special "
+"situations. Using it can potentially destroy your system! Configuration "
+"Item: <literal>APT::Get::allow-downgrades</literal>. Introduced in APT 1.1."
+msgstr ""
+"Questa è un'opzione pericolosa che fa sì che apt, se sta facendo delle "
+"retrocessioni a versioni precedenti, continui senza chiedere all'utente. Non "
+"dovrebbe essere usata se non in situazioni molto particolari. Il suo uso può "
+"potenzialmente distruggere il sistema. Voce di configurazione: "
+"<literal>APT::Get::allow-downgrades</literal>. Introdotta in APT 1.1."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is removing essentials. It should not be used except "
+"in very special situations. Using it can potentially destroy your system! "
+"Configuration Item: <literal>APT::Get::allow-remove-essential</literal>. "
+"Introduced in APT 1.1."
+msgstr ""
+"Questa è un'opzione pericolosa che fa sì che apt, se sta rimuovendo dei "
+"pacchetti essenziali, continui senza chiedere all'utente. Non dovrebbe "
+"essere usata se non in situazioni molto particolari. Il suo uso può "
+"potenzialmente distruggere il sistema. Voce di configurazione: "
+"<literal>APT::Get::allow-remove-essential</literal>. Introdotta in APT 1.1."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is changing held packages. It should not be used "
+"except in very special situations. Using it can potentially destroy your "
+"system! Configuration Item: <literal>APT::Get::allow-change-held-packages</"
+"literal>. Introduced in APT 1.1."
+msgstr ""
+"Forza «sì»; questa è un'opzione pericolosa che fa sì che apt, se sta "
+"modificando i pacchetti bloccati, continui senza chiedere all'utente. Non "
+"dovrebbe essere usata se non in situazioni molto particolari. Il suo uso può "
+"potenzialmente distruggere il sistema. Voce di configurazione: "
+"<literal>APT::Get::allow-change-held-packages</literal>. Introdotta in APT "
+"1.1."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is doing something potentially harmful. It should "
+"not be used except in very special situations. Using <literal>force-yes</"
+"literal> can potentially destroy your system! Configuration Item: "
+"<literal>APT::Get::force-yes</literal>. This is deprecated and replaced by "
+"<option>--allow-downgrades</option>, <option>--allow-remove-essential</"
+"option>, <option>--allow-change-held-packages</option> in 1.1."
+msgstr ""
+"Forza «sì»; questa è un'opzione pericolosa che fa sì che apt, se sta facendo "
+"qualcosa di potenzialmente pericoloso, continui senza chiedere "
+"l'autorizzazione all'utente. Non dovrebbe essere usata se non in situazioni "
+"molto particolari. L'uso di <literal>force-yes</literal> può potenzialmente "
+"distruggere il sistema. Voce di configurazione: <literal>APT::Get::force-"
+"yes</literal>. È deprecata e sostituita in 1.1 da <option>--allow-"
+"downgrades</option>, <option>--allow-remove-essential</option>, <option>--"
+"allow-change-held-packages</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Instead of fetching the files to install their URIs are printed. Each URI "
+"will have the path, the destination file name, the size and the expected MD5 "
+"hash. Note that the file name to write to will not always match the file "
+"name on the remote site! This also works with the <literal>source</literal> "
+"and <literal>update</literal> commands. When used with the <literal>update</"
+"literal> command the MD5 and size are not included, and it is up to the user "
+"to decompress any compressed files. Configuration Item: <literal>APT::Get::"
+"Print-URIs</literal>."
+msgstr ""
+"Invece di scaricare i file per l'installazione, stampa i loro URI. Ogni URI "
+"ha il percorso, il nome del file di destinazione, la dimensione e l'hash MD5 "
+"atteso. Notare che il nome file in cui scrivere non corrisponde sempre al "
+"nome file sul sito remoto. Questo funziona anche con i comandi "
+"<literal>source</literal> e <literal>update</literal>. Quando usato con il "
+"comando <literal>update</literal> l'hash MD5 e la dimensione non sono "
+"inclusi, e sta all'utente decomprimere qualsiasi file compresso. Voce di "
+"configurazione: <literal>APT::Get::Print-URIs</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Use purge instead of remove for anything that would be removed. An asterisk "
+"(\"*\") will be displayed next to packages which are scheduled to be purged. "
+"<option>remove --purge</option> is equivalent to the <option>purge</option> "
+"command. Configuration Item: <literal>APT::Get::Purge</literal>."
+msgstr ""
+"Usa purge invece di remove per ogni cosa da rimuovere. Verrà visualizzato un "
+"asterisco («*») vicino ai pacchetti pianificati per l'eliminazione completa. "
+"<option>remove --purge</option> è equivalente al comando <option>purge</"
+"option>. Voce di configurazione: <literal>APT::Get::Purge</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Re-install packages that are already installed and at the newest version. "
+"Configuration Item: <literal>APT::Get::ReInstall</literal>."
+msgstr ""
+"Reinstalla i pacchetti che sono già installati alla nuova versione. Voce di "
+"configurazione: <literal>APT::Get::ReInstall</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option is on by default; use <literal>--no-list-cleanup</literal> to "
+"turn it off. When it is on, <command>apt-get</command> will automatically "
+"manage the contents of <filename>&statedir;/lists</filename> to ensure that "
+"obsolete files are erased. The only reason to turn it off is if you "
+"frequently change your sources list. Configuration Item: <literal>APT::Get::"
+"List-Cleanup</literal>."
+msgstr ""
+"Questa opzione è attivata in modo predefinito; usare <literal>--no-list-"
+"cleanup</literal> per disabilitarla. Quando è attivata <command>apt-get</"
+"command> gestisce automaticamente il contenuto di <filename>&statedir;/"
+"lists</filename> per garantire che i file obsoleti siano eliminati. L'unica "
+"ragione per disabilitarla è se si cambia di frequente la propria lista di "
+"fonti. Voce di configurazione: <literal>APT::Get::List-Cleanup</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the default input to the policy engine; it creates a "
+"default pin at priority 990 using the specified release string. This "
+"overrides the general settings in <filename>/etc/apt/preferences</"
+"filename>. Specifically pinned packages are not affected by the value of "
+"this option. In short, this option lets you have simple control over which "
+"distribution packages will be retrieved from. Some common examples might be "
+"<option>-t '2.1*'</option>, <option>-t unstable</option> or <option>-t sid</"
+"option>. Configuration Item: <literal>APT::Default-Release</literal>; see "
+"also the &apt-preferences; manual page."
+msgstr ""
+"Questa opzione controlla l'input predefinito per il motore delle politiche; "
+"crea un pin predefinito alla priorità 990 usando la stringa di rilascio "
+"specificata. Ciò scavalca le impostazioni generali in <filename>/etc/apt/"
+"preferences</filename>. Questa opzione non ha effetto sui pacchetti su cui "
+"si usa specificatamente il pinning. In breve, questa opzione permette di "
+"avere un semplice controllo sulla distribuzione da cui verranno recuperati i "
+"pacchetti. Alcuni esempi comuni possono essere <option>-t '2.1*'</option>, "
+"<option>-t unstable</option> o <option>-t sid</option>. Voce di "
+"configurazione: <literal>APT::Default-Release</literal>; vedere anche la "
+"pagina di manuale di &apt-preferences;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only perform operations that are 'trivial'. Logically this can be considered "
+"related to <option>--assume-yes</option>; where <option>--assume-yes</"
+"option> will answer yes to any prompt, <option>--trivial-only</option> will "
+"answer no. Configuration Item: <literal>APT::Get::Trivial-Only</literal>."
+msgstr ""
+"Effettua solo le operazioni che sono «banali». Può essere correlato "
+"logicamente a <option>--assume-yes</option>: mentre <option>--assume-yes</"
+"option> risponde «sì» a tutti i prompt, <option>--trivial-only</option> "
+"risponde «no». Voce di configurazione: <literal>APT::Get::Trivial-Only</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If any packages are to be removed apt-get immediately aborts without "
+"prompting. Configuration Item: <literal>APT::Get::Remove</literal>."
+msgstr ""
+"Se un qualsiasi pacchetto dovrebbe essere rimosso, apt-get immediatamente "
+"annulla l'operazione senza chiedere. Voce di configurazione: <literal>APT::"
+"Get::Remove</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If the command is either <literal>install</literal> or <literal>remove</"
+"literal>, then this option acts like running the <literal>autoremove</"
+"literal> command, removing unused dependency packages. Configuration Item: "
+"<literal>APT::Get::AutomaticRemove</literal>."
+msgstr ""
+"Se il comando è <literal>install</literal> oppure <literal>remove</literal>, "
+"allora questa opzione si comporta come se si eseguisse il comando "
+"<literal>autoremove</literal>, rimuovendo i pacchetti di dipendenza non "
+"utilizzati. Voce di configurazione: <literal>APT::Get::AutomaticRemove</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only has meaning for the <literal>source</literal> and <literal>build-dep</"
+"literal> commands. Indicates that the given source names are not to be "
+"mapped through the binary table. This means that if this option is "
+"specified, these commands will only accept source package names as "
+"arguments, rather than accepting binary package names and looking up the "
+"corresponding source package. Configuration Item: <literal>APT::Get::Only-"
+"Source</literal>."
+msgstr ""
+"Ha significato solo per i comandi <literal>source</literal> e <literal>build-"
+"dep</literal>. Indica che i nomi dei sorgenti indicati non devono essere "
+"mappati usando la tabella dei binari; ciò significa che, se viene "
+"specificata questa opzione, tali comandi accetteranno solamente nomi di "
+"pacchetti sorgente come argomento, invece di accettare nomi di pacchetti "
+"binari e cercare il pacchetto sorgente corrispondente. Voce di "
+"configurazione: <literal>APT::Get::Only-Source</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Download only the diff, dsc, or tar file of a source archive. Configuration "
+"Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</"
+"literal>, and <literal>APT::Get::Tar-Only</literal>."
+msgstr ""
+"Scarica solo il file diff, dsc o tar di un archivio sorgente. Voce di "
+"configurazione: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::"
+"Dsc-Only</literal> e <literal>APT::Get::Tar-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only process architecture-dependent build-dependencies. Configuration Item: "
+"<literal>APT::Get::Arch-Only</literal>."
+msgstr ""
+"Elabora solo le dipendenze di compilazione dipendenti dall'architettura. "
+"Voce di configurazione: <literal>APT::Get::Arch-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Only process architecture-dependent build-dependencies. Configuration "
+#| "Item: <literal>APT::Get::Arch-Only</literal>."
+msgid ""
+"Only process architecture-independent build-dependencies. Configuration "
+"Item: <literal>APT::Get::Indep-Only</literal>."
+msgstr ""
+"Elabora solo le dipendenze di compilazione dipendenti dall'architettura. "
+"Voce di configurazione: <literal>APT::Get::Arch-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore if packages can't be authenticated and don't prompt about it. This "
+"can be useful while working with local repositories, but is a huge security "
+"risk if data authenticity isn't ensured in another way by the user itself. "
+"The usage of the <option>Trusted</option> option for &sources-list; entries "
+"should usually be preferred over this global override. Configuration Item: "
+"<literal>APT::Get::AllowUnauthenticated</literal>."
+msgstr ""
+"Ignora il fatto che i pacchetti non possono essere autenticati e non chiede "
+"all'utente cosa fare. Questo può essere utile quando si lavora con "
+"repository locali, ma è un enorme rischio per la sicurezza se l'autenticità "
+"dei dati non viene garantita in altro modo dall'utente stesso. L'uso "
+"dell'opzione <option>Trusted</option> per le voci in &sources-list; dovrebbe "
+"solitamente essere preferito rispetto a questa impostazione globale. Voce di "
+"configurazione: <literal>APT::Get::AllowUnauthenticated</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Forbid the update command to acquire unverifiable data from configured "
+#| "sources. Apt will fail at the update command for repositories without "
+#| "valid cryptographically signatures. Configuration Item: "
+#| "<literal>Acquire::AllowInsecureRepositories</literal>."
+msgid ""
+"Forbid the update command to acquire unverifiable data from configured "
+"sources. APT will fail at the update command for repositories without valid "
+"cryptographically signatures. See also &apt-secure; for details on the "
+"concept and the implications. Configuration Item: <literal>Acquire::"
+"AllowInsecureRepositories</literal>."
+msgstr ""
+"Impedisce dal comando update di acquisire dati non verificati dalle fonti "
+"configurate. Il comando update di Apt fallirà per i repository senza firme "
+"crittografiche valide. Voce di configurazione: <literal>Acquire::"
+"AllowInsecureRepositories</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Show user friendly progress information in the terminal window when packages "
+"are installed, upgraded or removed. For a machine parsable version of this "
+"data see README.progress-reporting in the apt doc directory. Configuration "
+"Items: <literal>Dpkg::Progress</literal> and <literal>Dpkg::Progress-Fancy</"
+"literal>."
+msgstr ""
+"Mostra informazioni sul progresso facili da leggere nella finestra del "
+"terminale quando i pacchetti sono installati, aggiornati o rimossi. Per una "
+"versione analizzabile da macchina di questi dati, vedere README.progress-"
+"reporting nella directory della documentazione di apt. Voce di "
+"configurazione: <literal>Dpkg::Progress</literal> e <literal>Dpkg::Progress-"
+"Fancy</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. See <option>--with-source</option> description in &apt-"
+"cache; for further details."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml
+msgid "Files"
+msgstr "File"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
+"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
+"APT Howto."
+msgstr ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
+"&apt-secure;, la guida dell'utente di APT in &guidesdir;, &apt-preferences;, "
+"l'APT Howto."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"<command>apt-get</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+"<command>apt-get</command> restituisce zero in caso di funzionamento normale "
+"e il valore decimale 100 in caso di errore."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cache.8.xml
+msgid "query the APT cache"
+msgstr "interroga la cache di APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid ""
+"<command>apt-cache</command> performs a variety of operations on APT's "
+"package cache. <command>apt-cache</command> does not manipulate the state of "
+"the system but does provide operations to search and generate interesting "
+"output from the package metadata. The metadata is acquired and updated via "
+"the 'update' command of e.g. <command>apt-get</command>, so that it can be "
+"outdated if the last update is too long ago, but in exchange <command>apt-"
+"cache</command> works independently of the availability of the configured "
+"sources (e.g. offline)."
+msgstr ""
+"<command>apt-cache</command> esegue una varietà di operazioni sulla cache "
+"dei pacchetti di APT. <command>apt-cache</command> non manipola lo stato del "
+"sistema ma fornisce operazioni per fare ricerche e generare risultati "
+"interessanti partendo dai metadati dei pacchetti. I metadati vengono "
+"acquisiti e aggiornati attraverso il comando «update» di, ad esempio, "
+"<command>apt-get</command>, perciò possono non essere più attuali se "
+"l'ultimo aggiornamento è stato fatto troppo tempo prima, ma d'altro canto "
+"<command>apt-cache</command> funziona in modo indipendente dalla "
+"disponibilità delle fonti configurate (cioè anche fuori linea)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>gencaches</literal> creates APT's package cache. This is done "
+"implicitly by all commands needing this cache if it is missing or outdated."
+msgstr ""
+"<literal>gencaches</literal> crea la cache dei pacchetti di APT. Ciò viene "
+"fatto implicitamente da tutti i comandi che hanno bisogno di tale cache, se "
+"essa manca o non è aggiornata."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml
+msgid "&synopsis-pkg;"
+msgstr "&synopsis-pkg;"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>showpkg</literal> displays information about the packages listed on "
+"the command line. Remaining arguments are package names. The available "
+"versions and reverse dependencies of each package listed are listed, as well "
+"as forward dependencies for each version. Forward (normal) dependencies are "
+"those packages upon which the package in question depends; reverse "
+"dependencies are those packages that depend upon the package in question. "
+"Thus, forward dependencies must be satisfied for a package, but reverse "
+"dependencies need not be. For instance, <command>apt-cache showpkg "
+"libreadline2</command> would produce output similar to the following:"
+msgstr ""
+"<literal>showpkg</literal> mostra informazioni sui pacchetti elencati nella "
+"riga di comando. I restanti argomenti sono nomi di pacchetto. Sono elencate "
+"le versioni disponibili e le dipendenze inverse di ogni pacchetto, oltre "
+"alle dipendenze dirette per ogni versione. Le dipendenze dirette (normali) "
+"sono quei pacchetti da cui dipende il pacchetto in questione; le dipendenze "
+"inverse sono quei pacchetti che dipendono dal pacchetto in questione. "
+"Quindi, per un pacchetto, devono essere soddisfatte le dipendenze dirette, "
+"ma non necessariamente quelle inverse. Per esempio, <command>apt-cache "
+"showpkg libreadline2</command> produce un risultato simile al seguente:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-cache.8.xml
+#, no-wrap
+msgid ""
+"Package: libreadline2\n"
+"Versions: 2.1-12(/var/state/apt/lists/foo_Packages),\n"
+"Reverse Depends: \n"
+" libreadlineg2,libreadline2\n"
+" libreadline2-altdev,libreadline2\n"
+"Dependencies:\n"
+"2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))\n"
+"Provides:\n"
+"2.1-12 - \n"
+"Reverse Provides: \n"
+msgstr ""
+"Package: libreadline2\n"
+"Versions: 2.1-12(/var/state/apt/lists/pinco_Packages),\n"
+"Reverse Depends: \n"
+" libreadlineg2,libreadline2\n"
+" libreadline2-altdev,libreadline2\n"
+"Dependencies:\n"
+"2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))\n"
+"Provides:\n"
+"2.1-12 - \n"
+"Reverse Provides: \n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Thus it may be seen that libreadline2, version 2.1-12, depends on libc5 and "
+"ncurses3.0 which must be installed for libreadline2 to work. In turn, "
+"libreadlineg2 and libreadline2-altdev depend on libreadline2. If "
+"libreadline2 is installed, libc5 and ncurses3.0 (and ldso) must also be "
+"installed; libreadlineg2 and libreadline2-altdev do not have to be "
+"installed. For the specific meaning of the remainder of the output it is "
+"best to consult the apt source code."
+msgstr ""
+"Quindi si vede che libreadline2, versione 2.1-12, dipende da libc5 e "
+"ncurses3.0 che devono essere installati affinché libreadline2 funzioni. A "
+"loro volta, libreadlineg2 e libreadline2-altdev dipendono da libreadline2. "
+"Se libreadline2 è installato, devono esserlo anche libc5 e ncurses3.0 (e "
+"ldso); non necessariamente devono esserlo libreadlineg2 e libreadline2-"
+"altdev. Per il significato specifico del resto dell'output è meglio "
+"consultare il codice sorgente di apt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>stats</literal> displays some statistics about the cache. No "
+"further arguments are expected. Statistics reported are:"
+msgstr ""
+"<literal>stats</literal> mostra alcune statistiche sulla cache. Non sono "
+"previsti ulteriori argomenti. Le statistiche riportate sono:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total package names</literal> is the number of package names found "
+"in the cache."
+msgstr ""
+"<literal>Totale nomi dei pacchetti</literal> è il numero di nomi di "
+"pacchetto trovati nella cache."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Normal packages</literal> is the number of regular, ordinary "
+"package names; these are packages that bear a one-to-one correspondence "
+"between their names and the names used by other packages for them in "
+"dependencies. The majority of packages fall into this category."
+msgstr ""
+"<literal>Pacchetti normali</literal> è il numero di nomi di pacchetti "
+"regolari, normali; sono pacchetti che hanno una corrispondenza uno-a-uno fra "
+"il loro nome e il nome usato da altri pacchetti per indicarli nelle loro "
+"dipendenze. La maggioranza dei pacchetti ricade in questa categoria."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Pure virtual packages</literal> is the number of packages that "
+"exist only as a virtual package name; that is, packages only \"provide\" the "
+"virtual package name, and no package actually uses the name. For instance, "
+"\"mail-transport-agent\" in the Debian system is a pure virtual package; "
+"several packages provide \"mail-transport-agent\", but there is no package "
+"named \"mail-transport-agent\"."
+msgstr ""
+"<literal>Pacchetti virtuali puri</literal> è il numero di pacchetti che "
+"esistono solo come nome di pacchetto virtuale; vale a dire, i pacchetti "
+"«forniscono» solamente il nome del pacchetto virtuale e nessun pacchetto in "
+"realtà usa quel nome. Per esempio, «mail-transport-agent» nel sistema Debian "
+"è un pacchetto virtuale puro; diversi pacchetti forniscono «mail-transport-"
+"agent», ma non c'è alcun pacchetto chiamato «mail-transport-agent»."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Single virtual packages</literal> is the number of packages with "
+"only one package providing a particular virtual package. For example, in the "
+"Debian system, \"X11-text-viewer\" is a virtual package, but only one "
+"package, xless, provides \"X11-text-viewer\"."
+msgstr ""
+"<literal>Pacchetti virtuali singoli</literal> è il numero di pacchetti "
+"virtuali per cui esiste solo un pacchetto che li fornisce. Per esempio, nel "
+"sistema Debian «X11-text-viewer» è un pacchetto virtuale, ma solo un "
+"pacchetto, xless, fornisce «X11-text-viewer»."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Mixed virtual packages</literal> is the number of packages that "
+"either provide a particular virtual package or have the virtual package name "
+"as the package name. For instance, in the Debian system, \"debconf\" is both "
+"an actual package, and provided by the debconf-tiny package."
+msgstr ""
+"<literal>Pacchetti virtuali misti</literal> è il numero di pacchetti che "
+"forniscono un particolare pacchetto virtuale oppure hanno il nome uguale a "
+"quello del pacchetto virtuale. Per esempio, nel sistema Debian «debconf» è "
+"sia un pacchetto vero e proprio, sia è fornito dal pacchetto debconf-tiny."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Missing</literal> is the number of package names that were "
+"referenced in a dependency but were not provided by any package. Missing "
+"packages may be an evidence if a full distribution is not accessed, or if a "
+"package (real or virtual) has been dropped from the distribution. Usually "
+"they are referenced from Conflicts or Breaks statements."
+msgstr ""
+"<literal>Mancanti</literal> è il numero di nomi di pacchetto che vengono "
+"menzionati in una dipendenza ma non sono forniti da alcun pacchetto. I "
+"pacchetti mancanti possono essere un segno che non si ha accesso a una "
+"distribuzione completa o che un pacchetto (reale o virtuale) è stato "
+"eliminato da una distribuzione. Di solito vengono menzionati da clausole "
+"Conflicts o Breaks."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total distinct</literal> versions is the number of package versions "
+"found in the cache. If more than one distribution is being accessed (for "
+"instance, \"stable\" and \"unstable\"), this value can be considerably "
+"larger than the number of total package names."
+msgstr ""
+"<literal>Totale versioni distinte</literal> è il numero di versioni di "
+"pacchetti trovate nella cache. Se si ha accesso a più di una distribuzione "
+"(ad esempio sia «stable» che «unstable»), questo valore può essere "
+"decisamente più grande del numero dei nomi totali di pacchetto."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total dependencies</literal> is the number of dependency "
+"relationships claimed by all of the packages in the cache."
+msgstr ""
+"<literal>Totale dipendenze</literal> è il numero di relazioni di dipendenza "
+"dichiarate da tutti i pacchetti nella cache."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>showsrc</literal> displays all the source package records that "
+"match the given package names. All versions are shown, as well as all "
+"records that declare the name to be a binary package. Use <option>--only-"
+"source</option> to display only source package names."
+msgstr ""
+"<literal>showsrc</literal> mostra tutti i pacchetti sorgente che "
+"corrispondono ai nomi dei pacchetti specificati. Vengono mostrate tutte le "
+"versioni, così come tutti i record che dichiarano che il nome è quello di un "
+"pacchetto binario. Usare <option>--only-source</option> per visualizzare "
+"solo i nomi di pacchetti sorgente."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dump</literal> shows a short listing of every package in the cache. "
+"It is primarily for debugging."
+msgstr ""
+"<literal>dump</literal> mostra un breve elenco di tutti i pacchetti nella "
+"cache. Serve soprattutto a scopo di debug."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dumpavail</literal> prints out an available list to stdout. This is "
+"suitable for use with &dpkg; and is used by the &dselect; method."
+msgstr ""
+"<literal>dumpavail</literal> stampa una lista di pacchetti disponibili su "
+"stdout. Questa è adatta all'uso con &dpkg; ed è usata dal metodo &dselect;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>unmet</literal> displays a summary of all unmet dependencies in the "
+"package cache."
+msgstr ""
+"<literal>unmet</literal> mostra un riassunto di tutte le dipendenze non "
+"soddisfatte nella cache dei pacchetti."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>show</literal> performs a function similar to <command>dpkg --print-"
+"avail</command>; it displays the package records for the named packages."
+msgstr ""
+"<literal>show</literal> esegue una funzione simile a <command>dpkg --print-"
+"avail</command>; mostra i record dei pacchetti per i pacchetti specificati."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml
+msgid "&synopsis-regex;"
+msgstr "&synopsis-regex;"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>search</literal> performs a full text search on all available "
+"package lists for the POSIX regex pattern given, see &regex;. It searches "
+"the package names and the descriptions for an occurrence of the regular "
+"expression and prints out the package name and the short description, "
+"including virtual package names. If <option>--full</option> is given then "
+"output identical to <literal>show</literal> is produced for each matched "
+"package, and if <option>--names-only</option> is given then the long "
+"description is not searched, only the package name and provided packages are."
+msgstr ""
+"<literal>search</literal> esegue una ricerca completa a tutto testo in tutti "
+"gli elenchi di pacchetti disponibili cercando il modello di espressione "
+"regolare POSIX specificato; vedere &regex;. Cerca le occorrenze "
+"dell'espressione regolare nei nomi e nelle descrizioni dei pacchetti e "
+"stampa il nome e la descrizione breve dei pacchetti, inclusi quelli "
+"virtuali. Se viene fornita l'opzione <option>--full</option>, per ciascun "
+"pacchetto che soddisfa la ricerca viene prodotto un output identico a quello "
+"di <literal>show</literal>; se viene fornita l'opzione <option>--names-only</"
+"option> la ricerca viene fatta solo sul nome del pacchetto e dei pacchetti "
+"forniti e non sulla descrizione lunga."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Separate arguments can be used to specify multiple search patterns that are "
+"and'ed together."
+msgstr ""
+"È possibile usare argomenti separati per specificare più modelli di ricerca "
+"che vengono combinati con un AND."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>depends</literal> shows a listing of each dependency a package has "
+"and all the possible other packages that can fulfill that dependency."
+msgstr ""
+"<literal>depends</literal> mostra un elenco con ogni dipendenza di un "
+"pacchetto e tutti i possibili altri pacchetti che possono soddisfare quella "
+"dipendenza."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>rdepends</literal> shows a listing of each reverse dependency a "
+"package has."
+msgstr ""
+"<literal>rdepends</literal> mostra un elenco di tutte le dipendenze inverse "
+"di un pacchetto."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml
+msgid "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+msgstr "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"This command prints the name of each package APT knows. The optional "
+"argument is a prefix match to filter the name list. The output is suitable "
+"for use in a shell tab complete function and the output is generated "
+"extremely quickly. This command is best used with the <option>--generate</"
+"option> option."
+msgstr ""
+"Questo comando stampa il nome di tutti i pacchetti che APT conosce. "
+"L'argomento opzionale è un prefisso per filtrare l'elenco dei nomi. Il "
+"risultato è adatto ad essere usato in una funzione di shell di completamento "
+"automatico tramite Tab e viene generato molto rapidamente. Questo comando "
+"viene usato al meglio con l'opzione <option>--generate</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Note that a package which APT knows of is not necessarily available to "
+"download, installable or installed, e.g. virtual packages are also listed in "
+"the generated list."
+msgstr ""
+"Notare che un pacchetto che APT conosce non è necessariamente disponibile "
+"per essere scaricato, installabile o installato; ad esempio, i pacchetti "
+"virtuali sono anch'essi compresi nell'elenco generato."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dotty</literal> takes a list of packages on the command line and "
+"generates output suitable for use by dotty from the <ulink url=\"http://www."
+"research.att.com/sw/tools/graphviz/\">GraphViz</ulink> package. The result "
+"will be a set of nodes and edges representing the relationships between the "
+"packages. By default the given packages will trace out all dependent "
+"packages; this can produce a very large graph. To limit the output to only "
+"the packages listed on the command line, set the <literal>APT::Cache::"
+"GivenOnly</literal> option."
+msgstr ""
+"<literal>dotty</literal> accetta un elenco di pacchetti dalla riga di "
+"comando e genera un output adatto all'uso da parte di dotty del pacchetto "
+"<ulink url=\"http://www.research.att.com/sw/tools/graphviz/\">GraphViz</"
+"ulink>. Il risultato sarà un insieme di nodi e linee che rappresentano le "
+"relazioni fra i pacchetti. In modo predefinito dai pacchetti dati si "
+"risalirà a tutti i pacchetti delle dipendenze; ciò può produrre un grafo "
+"molto grande. Per limitare il risultato ai soli pacchetti elencati sulla "
+"riga di comando, impostare l'opzione <literal>APT::Cache::GivenOnly</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"The resulting nodes will have several shapes; normal packages are boxes, "
+"pure virtual packages are triangles, mixed virtual packages are diamonds, "
+"missing packages are hexagons. Orange boxes mean recursion was stopped (leaf "
+"packages), blue lines are pre-depends, green lines are conflicts."
+msgstr ""
+"I nodi risultanti avranno diverse forme: i pacchetti normali sono "
+"rettangoli, i pacchetti virtuali puri sono triangoli, i pacchetti virtuali "
+"misti sono rombi, i pacchetti mancanti sono esagoni. I rettangoli arancioni "
+"indicano che la ricorsione è stata arrestata (pacchetti foglia), le linee "
+"blu sono pre-dipendenze, le linee verdi sono conflitti."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid "Caution, dotty cannot graph larger sets of packages."
+msgstr ""
+"Attenzione: dotty non può creare i grafi degli insiemi più grandi di "
+"pacchetti."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"The same as <literal>dotty</literal>, only for xvcg from the <ulink url="
+"\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</ulink>."
+msgstr ""
+"Stessa cosa di <literal>dotty</literal>, ma per xvcg dello <ulink url="
+"\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">strumento VCG</"
+"ulink>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml
+msgid "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+msgstr "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>policy</literal> is meant to help debug issues relating to the "
+"preferences file. With no arguments it will print out the priorities of each "
+"source. Otherwise it prints out detailed information about the priority "
+"selection of the named package."
+msgstr ""
+"<literal>policy</literal> è pensato per aiutare a fare il debug di problemi "
+"relativi al file delle preferenze. Senza argomenti stampa le priorità di "
+"ciascuna fonte. Altrimenti stampa informazioni dettagliate sulla selezione "
+"di priorità del pacchetto indicato."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>apt-cache</literal>'s <literal>madison</literal> command attempts "
+"to mimic the output format and a subset of the functionality of the Debian "
+"archive management tool, <literal>madison</literal>. It displays available "
+"versions of a package in a tabular format. Unlike the original "
+"<literal>madison</literal>, it can only display information for the "
+"architecture for which APT has retrieved package lists (<literal>APT::"
+"Architecture</literal>)."
+msgstr ""
+"Il comando <literal>madison</literal> di <literal>apt-cache</literal> cerca "
+"di imitare il formato di uscita e un sottoinsieme delle funzionalità di "
+"<literal>madison</literal>, lo strumento di gestione dell'archivio di "
+"Debian. Mostra le versioni disponibili di un pacchetto in forma tabellare. "
+"Contrariamente al <literal>madison</literal> originale, può mostrare "
+"informazioni solamente per l'architettura per cui APT ha recuperato gli "
+"elenchi dei pacchetti (<literal>APT::Architecture</literal>)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Select the file to store the package cache. The package cache is the primary "
+"cache used by all operations. Configuration Item: <literal>Dir::Cache::"
+"pkgcache</literal>."
+msgstr ""
+"Seleziona il file in cui memorizzare la cache dei pacchetti. Questa è la "
+"cache primaria usata da tutte le operazioni. Voce di configurazione: "
+"<literal>Dir::Cache::pkgcache</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Select the file to store the source cache. The source is used only by "
+"<literal>gencaches</literal> and it stores a parsed version of the package "
+"information from remote sources. When building the package cache the source "
+"cache is used to avoid reparsing all of the package files. Configuration "
+"Item: <literal>Dir::Cache::srcpkgcache</literal>."
+msgstr ""
+"Seleziona il file in cui memorizzare la cache dei sorgenti. Questa è usata "
+"solo da <literal>gencaches</literal> e memorizza una versione analizzata "
+"delle informazioni sui pacchetti provenienti da fonti remote. Al momento "
+"della costruzione della cache dei pacchetti, la cache dei sorgenti viene "
+"usata per evitare di rileggere tutti i file dei pacchetti. Voce di "
+"configurazione: <literal>Dir::Cache::srcpkgcache</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quietness up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quietness level, overriding the "
+"configuration file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+"Silenzioso; produce un output adatto per un file di registro, omettendo gli "
+"indicatori di avanzamento. Ulteriori q produrranno un risultato ancor più "
+"silenzioso, fino a un massimo di 2. È anche possibile usare <option>-q=n</"
+"option> per impostare il livello di silenziosità a n, scavalcando il file di "
+"configurazione. Voce di configurazione: <literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print only important dependencies; for use with <literal>unmet</literal> and "
+"<literal>depends</literal>. Causes only Depends and Pre-Depends relations to "
+"be printed. Configuration Item: <literal>APT::Cache::Important</literal>."
+msgstr ""
+"Stampa solo le dipendenze importanti; da usarsi con <literal>unmet</literal> "
+"e <literal>depends</literal>. Fa sì che vengano stampate solo le relazioni "
+"Depends e Pre-Depends. Voce di configurazione: <literal>APT::Cache::"
+"Important</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Per default the <command>depends</command> and <command>rdepends</command> "
+"print all dependencies. This can be tweaked with these flags which will omit "
+"the specified dependency type. Configuration Item: <literal>APT::Cache::"
+"Show<replaceable>DependencyType</replaceable></literal> e.g. <literal>APT::"
+"Cache::ShowRecommends</literal>."
+msgstr ""
+"In modo predefinito <command>depends</command> e <command>rdepends</command> "
+"stampano tutte le dipendenze. Ciò può essere modificato con queste opzioni "
+"che omettono il tipo specificato di dipendenza. Voce di configurazione "
+"<literal>APT::Cache::Show<replaceable>TipoDipendenza</replaceable></"
+"literal>, ad es. <literal>APT::Cache::ShowRecommends</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Per default <command>depends</command> and <command>rdepends</command> print "
+"only dependencies explicitly expressed in the metadata. With this flag it "
+"will also show dependencies implicitly added based on the encountered data. "
+"A <literal>Conflicts: foo</literal> e.g. expresses implicitly that this "
+"package also conflicts with the package foo from any other architecture. "
+"Configuration Item: <literal>APT::Cache::ShowImplicit</literal>."
+msgstr ""
+"In modo predefinito <command>depends</command> e <command>rdepends</command> "
+"stampano solo le dipendenze esplicitamente espresse nei metadati. Con questa "
+"opzione mostrano anche le dipendenze aggiunte implicitamente sulla base dei "
+"dati incontrati. Ad esempio un <literal>Conflicts: pippo</literal> esprime "
+"implicitamente che questo pacchetto va in conflitto anche con il pacchetto "
+"pippo da qualsiasi altra architettura. Voce di configurazione: <literal>APT::"
+"Cache::ShowImplicit</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print full package records when searching. Configuration Item: "
+"<literal>APT::Cache::ShowFull</literal>."
+msgstr ""
+"Stampa l'intero record dei pacchetti durante la ricerca. Voce di "
+"configurazione: <literal>APT::Cache::ShowFull</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print full records for all available versions. This is the default; to turn "
+"it off, use <option>--no-all-versions</option>. If <option>--no-all-"
+"versions</option> is specified, only the candidate version will be displayed "
+"(the one which would be selected for installation). This option is only "
+"applicable to the <literal>show</literal> command. Configuration Item: "
+"<literal>APT::Cache::AllVersions</literal>."
+msgstr ""
+"Stampa i record completi per tutte le versioni disponibili. Questa è "
+"l'impostazione predefinita; per disattivarla, usare <option>--no-all-"
+"versions</option>. Se si specifica <option>--no-all-versions</option>, verrà "
+"visualizzata solo la versione candidata (quella che sarebbe scelta per "
+"l'installazione). Questa opzione è applicabile solo al comando "
+"<literal>show</literal>. Voce di configurazione: <literal>APT::Cache::"
+"AllVersions</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Perform automatic package cache regeneration, rather than use the cache as "
+"it is. This is the default; to turn it off, use <option>--no-generate</"
+"option>. Configuration Item: <literal>APT::Cache::Generate</literal>."
+msgstr ""
+"Esegui la rigenerazione automatica della cache dei pachetti, piuttosto che "
+"usare la cache così com'è. Questa è l'impostazione predefinita; per "
+"disattivarla, usare <option>--no-generate</option>. Voce di configurazione: "
+"<literal>APT::Cache::Generate</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Only search on the package and provided package names, not the long "
+"descriptions. Configuration Item: <literal>APT::Cache::NamesOnly</literal>."
+msgstr ""
+"Cerca soltanto nei nomi dei pacchetti e dei pacchetti forniti, non nelle "
+"descrizioni lunghe. Voce di configurazione: <literal>APT::Cache::NamesOnly</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Make <literal>pkgnames</literal> print all names, including virtual packages "
+"and missing dependencies. Configuration Item: <literal>APT::Cache::"
+"AllNames</literal>."
+msgstr ""
+"Fai sì che <literal>pkgnames</literal> stampi tutti i nomi, inclusi i "
+"pacchetti virtuali e le dipendenze mancanti. Voce di configurazione: "
+"<literal>APT::Cache::AllNames</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Make <literal>depends</literal> and <literal>rdepends</literal> recursive so "
+"that all packages mentioned are printed once. Configuration Item: "
+"<literal>APT::Cache::RecurseDepends</literal>."
+msgstr ""
+"Rendi ricorsivi <literal>depends</literal> e <literal>rdepends</literal> in "
+"modo che tutti i pacchetti menzionati siano stampati una sola volta. Voce di "
+"configurazione: <literal>APT::Cache::RecurseDepends</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Limit the output of <literal>depends</literal> and <literal>rdepends</"
+"literal> to packages which are currently installed. Configuration Item: "
+"<literal>APT::Cache::Installed</literal>."
+msgstr ""
+"Limita l'output di <literal>depends</literal> e <literal>rdepends</literal> "
+"ai pacchetti attualmente installati. Voce di configurazione: <literal>APT::"
+"Cache::Installed</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. Supported are currently <literal>*.deb</literal>, "
+"<literal>*.dsc</literal>, <literal>*.changes</literal>, <literal>Sources</"
+"literal> and <literal>Packages</literal> files as well as source package "
+"directories. Files are matched based on their name only, not their content!"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Sources</literal> and <literal>Packages</literal> can be compressed "
+"in any format apt supports as long as they have the correct extension. If "
+"you need to store multiple of these files in one directory you can prefix a "
+"name of your choice with the last character being an underscore "
+"(\"<literal>_</literal>\"). Example: my.example_Packages.xz"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "Use source index field ordering. Configuration Item: <literal>APT::"
+#| "SortPkgs::Source</literal>."
+msgid ""
+"Note that these sources are treated as trusted (see &apt-secure;). "
+"Configuration Item: <literal>APT::Sources::With</literal>."
+msgstr ""
+"Usa l'ordinamento dei campi dell'indice dei sorgenti. Voce di "
+"configurazione: <literal>APT::SortPkgs::Source</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid "&apt-conf;, &sources-list;, &apt-get;"
+msgstr "&apt-conf;, &sources-list;, &apt-get;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid ""
+"<command>apt-cache</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-cache</command> restituisce zero in caso di funzionamento "
+"normale e il valore decimale 100 in caso di errore."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-key.8.xml
+msgid "APT key management utility"
+msgstr "strumento APT per la gestione delle chiavi"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"<command>apt-key</command> is used to manage the list of keys used by apt to "
+"authenticate packages. Packages which have been authenticated using these "
+"keys will be considered trusted."
+msgstr ""
+"<command>apt-key</command> viene usato per gestire l'elenco delle chiavi "
+"usate da apt per autenticare i pacchetti. I pacchetti che sono stati "
+"autenticati usando queste chiavi verranno considerati fidati."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Note that if usage of <command>apt-key</command> is desired the additional "
+"installation of the GNU Privacy Guard suite (packaged in <package>gnupg</"
+"package>) is required. For this reason alone the programmatic usage "
+"(especially in package maintainerscripts!) is strongly discouraged. Further "
+"more the output format of all commands is undefined and can and does change "
+"whenever the underlying commands change. <command>apt-key</command> will try "
+"to detect such usage and generates warnings on stderr in these cases."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml
+msgid "Supported keyring files"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
+"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
+"the keybox database format introduced in newer &gpg; versions as default for "
+"keyring files. Binary keyring files intended to be used with any apt version "
+"should therefore always be created with <command>gpg --export</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Alternatively, if all systems which should be using the created keyring have "
+"at least apt version >= 1.4 installed, you can use the ASCII armored format "
+"with the \"<literal>asc</literal>\" extension instead which can be created "
+"with <command>gpg --armor --export</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml
+msgid "Commands"
+msgstr "Comandi"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Add a new key to the list of trusted keys. The key is read from the "
+"filename given with the parameter &synopsis-param-filename; or if the "
+"filename is <literal>-</literal> from standard input."
+msgstr ""
+"Aggiunge una nuova chiave all'elenco delle chiavi fidate. La chiave viene "
+"letta dal file specificato con il parametro &synopsis-param-filename; o, se "
+"il nome file è <literal>-</literal>, dallo standard input."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"It is critical that keys added manually via <command>apt-key</command> are "
+"verified to belong to the owner of the repositories they claim to be for "
+"otherwise the &apt-secure; infrastructure is completely undermined."
+msgstr ""
+"È di importanza critica verificare che le chiavi aggiunte manualmente usando "
+"<command>apt-key</command> appartengano al proprietario del repository per "
+"cui dichiarano di essere, altrimenti l'infrastruttura &apt-secure; viene "
+"completamente minata alla base."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
+"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
+"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
+"\"<literal>asc</literal>\" as file extension."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Remove a key from the list of trusted keys."
+msgstr "Rimuove una chiave dall'elenco delle chiavi fidate."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Output the key &synopsis-param-keyid; to standard output."
+msgstr ""
+"Visualizza sullo standard output l'&synopsis-param-keyid; della chiave."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Output all trusted keys to standard output."
+msgstr "Visualizza sullo standard output tutte le chiavi fidate."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+#, fuzzy
+#| msgid "List trusted keys."
+msgid "List trusted keys with fingerprints."
+msgstr "Elenca le chiavi fidate."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
+"e.g. download key from keyservers directly into the trusted set of keys. "
+"Note that there are <emphasis>no</emphasis> checks performed, so it is easy "
+"to completely undermine the &apt-secure; infrastructure if used without care."
+msgstr ""
+"Passa opzioni avanzate a gpg. Con <command>adv --recv-key</command> si può, "
+"ad esempio, scaricare una chiave da un server di chiavi direttamente "
+"nell'insieme delle chiavi fidate. Notare che <emphasis>non</emphasis> viene "
+"effettuato alcun controllo, perciò è facile minare completamente "
+"l'infrastruttura &apt-secure; se viene usato senza cautela."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-key.8.xml
+msgid "(deprecated)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Update the local keyring with the archive keyring and remove from the local "
+"keyring the archive keys which are no longer valid. The archive keyring is "
+"shipped in the <literal>archive-keyring</literal> package of your "
+"distribution, e.g. the &keyring-package; package in &keyring-distro;."
+msgstr ""
+"Aggiorna il portachiavi locale con il portachiavi dell'archivio e rimuove "
+"dal portachiavi locale le chiavi di archivio che non sono più valide. Il "
+"portachiavi degli archivi è fornito nel pacchetto <literal>archive-keyring</"
+"literal> delle diverse distribuzioni, ad esempio il pacchetto &keyring-"
+"package; in &keyring-distro;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Note that a distribution does not need to and in fact should not use this "
+"command any longer and instead ship keyring files in the <filename>/etc/apt/"
+"trusted.gpg.d/</filename> directory directly as this avoids a dependency on "
+"<package>gnupg</package> and it is easier to manage keys by simply adding "
+"and removing files for maintainers and users alike."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Perform an update working similarly to the <command>update</command> command "
+"above, but get the archive keyring from a URI instead and validate it "
+"against a master key. This requires an installed &wget; and an APT build "
+"configured to have a server to fetch from and a master keyring to validate. "
+"APT in Debian does not support this command, relying on <command>update</"
+"command> instead, but Ubuntu's APT does."
+msgstr ""
+"Effettua un aggiornamento funzionando in modo simile al comando "
+"<command>update</command> descritto prima, ma ottiene invece il portachiavi "
+"degli archivi da un URI e lo convalida usando una chiave master. Ciò "
+"richiede che &wget; sia installato, e una versione di APT configurata per "
+"avere un server da cui scaricare e un portachiavi master per la convalida. "
+"APT in Debian non supporta questo comando, ma fa affidamento sul comando "
+"<command>update</command>; APT in Ubuntu invece lo fa."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml
+msgid "Options"
+msgstr "Opzioni"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Note that options need to be defined before the commands described in the "
+"previous section."
+msgstr ""
+"Notare che le opzioni devono essere definite prima dei comandi descritti "
+"nella sezione precedente."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"With this option it is possible to specify a particular keyring file the "
+"command should operate on. The default is that a command is executed on the "
+"<filename>trusted.gpg</filename> file as well as on all parts in the "
+"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</"
+"filename> is the primary keyring which means that e.g. new keys are added to "
+"this one."
+msgstr ""
+"Con questa opzione è possibile specificare un particolare file portachiavi "
+"su cui deve operare il comando. Il comportamento predefinito esegue i "
+"comandi sul file <filename>trusted.gpg</filename>, così come su tutte le "
+"parti nella directory <filename>trusted.gpg.d</filename>; <filename>trusted."
+"gpg</filename> è però il portachiavi primario il che significa, ad esempio, "
+"che le nuove chiavi sono aggiunte ad esso."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid "&apt-get;, &apt-secure;"
+msgstr "&apt-get;, &apt-secure;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-mark.8.xml
+msgid "show, set and unset various settings for a package"
+msgstr "mostra, imposta e deconfigura varie impostazioni per un pacchetto"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"<command>apt-mark</command> can be used as a unified front-end to set "
+"various settings for a package, such as marking a package as being "
+"automatically/manually installed or changing <command>dpkg</command> "
+"selections such as hold, install, deinstall and purge which are respected e."
+"g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
+"command>."
+msgstr ""
+"<command>apt-mark</command> può essere usato come fronted unificato per "
+"configurare varie impostazioni per un pacchetto, come contrassegnarlo come "
+"installato automaticamente/manualmente, oppure per cambiare selezioni di "
+"<command>dpkg</command> come blocco, installazione, rimozione ed "
+"eliminazione completa, che vengono onorate, ad esempio, da <command>apt-get "
+"dselect-upgrade</command> o <command>aptitude</command>."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Automatically and Manually Installed Packages"
+msgstr "Pacchetti installati automaticamente e manualmente"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"When you request that a package is installed, and as a result other packages "
+"are installed to satisfy its dependencies, the dependencies are marked as "
+"being automatically installed, while the package you installed explicitly is "
+"marked as manually installed. Once an automatically installed package is no "
+"longer depended on by any manually installed package it is considered no "
+"longer needed and e.g. <command>apt-get</command> or <command>aptitude</"
+"command> will at least suggest removing them."
+msgstr ""
+"Quando viene richiesta l'installazione di un pacchetto e ciò fa sì che altri "
+"pacchetti vengano installati per soddisfare le sue dipendenze, queste ultime "
+"sono contrassegnate come installate automaticamente, mentre i pacchetti che "
+"vengono installati esplicitamente sono contrassegnati come installati "
+"manualmente. Una volta che non c'è più alcun pacchetto installato "
+"manualmente che dipende da un dato pacchetto installato automaticamente, "
+"quest'ultimo viene considerato come non più necessario e, ad esempio, "
+"<command>apt-get</command> o <command>aptitude</command> come minimo "
+"suggeriscono di rimuoverlo."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>auto</literal> is used to mark a package as being automatically "
+"installed, which will cause the package to be removed when no more manually "
+"installed packages depend on this package."
+msgstr ""
+"<literal>auto</literal> viene usato per contrassegnare un pacchetto come "
+"installato automaticamente, il che fa sì che il pacchetto venga rimosso "
+"quando non c'è più alcun pacchetto installato manualmente che dipende da "
+"esso."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>manual</literal> is used to mark a package as being manually "
+"installed, which will prevent the package from being automatically removed "
+"if no other packages depend on it."
+msgstr ""
+"<literal>manual</literal> viene usato per contrassegnare un pacchetto come "
+"installato manualmente, il che impedisce che un pacchetto venga rimosso "
+"automaticamente se nessun altro dipende da esso."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showauto</literal> is used to print a list of automatically "
+"installed packages with each package on a new line. All automatically "
+"installed packages will be listed if no package is given. If packages are "
+"given only those which are automatically installed will be shown."
+msgstr ""
+"<literal>showauto</literal> viene usato per stampare un elenco di pacchetti "
+"installati automaticamente, ciascuno su una riga. Se non viene specificato "
+"alcun pacchetto, vengono elencati tutti i pacchetti installati "
+"automaticamente. Se vengono specificati dei pacchetti, verranno mostrati "
+"solo quelli automaticamente installati."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showmanual</literal> can be used in the same way as "
+"<literal>showauto</literal> except that it will print a list of manually "
+"installed packages instead."
+msgstr ""
+"<literal>showmanual</literal> può essere usato nello stesso modo di "
+"<literal>showauto</literal>, tranne per il fatto che stampa invece un elenco "
+"dei pacchetti installati manualmente"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"Read/Write package stats from the filename given with the parameter "
+"&synopsis-param-filename; instead of from the default location, which is "
+"<filename>extended_status</filename> in the directory defined by the "
+"Configuration Item: <literal>Dir::State</literal>."
+msgstr ""
+"Legge/Scrive le statistiche sui pacchetti dal file specificato con il "
+"parametro &synopsis-param-filename; invece che dalla posizione predefinita "
+"che è <filename>extended_status</filename> nella directory definita dalla "
+"voce di configurazione <literal>Dir::State</literal>."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Prevent Changes for a Package"
+msgstr "Evitare modifiche ad un pacchetto"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>hold</literal> is used to mark a package as held back, which will "
+"prevent the package from being automatically installed, upgraded or removed."
+msgstr ""
+"<literal>hold</literal> viene usato per contrassegnare un pacchetto come "
+"bloccato, il che impedisce che un pacchetto venga installato, aggiornato o "
+"rimosso automaticamente."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>unhold</literal> is used to cancel a previously set hold on a "
+"package to allow all actions again."
+msgstr ""
+"<literal>unhold</literal> viene usato per annullare un blocco impostato in "
+"precedenza, per permettere nuovamente tutte le azioni."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showhold</literal> is used to print a list of packages on hold in "
+"the same way as for the other show commands."
+msgstr ""
+"<literal>showhold</literal> viene usato per stampare un elenco di pacchetti "
+"bloccati in modo uguale a ciò che fanno gli altri comandi «show»."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Schedule Packages for Install, Remove and Purge"
+msgstr "Pianificare l'installazione, rimozione ed eliminazione di pacchetti"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"Some front-ends like <command>apt-get dselect-upgrade</command> can be used "
+"to apply previously scheduled changes to the install state of packages. Such "
+"changes can be scheduled with the <option>install</option>, <option>remove</"
+"option> (also known as <option>deinstall</option>) and <option>purge</"
+"option> commands. Packages with a specific selection can be displayed with "
+"<option>showinstall</option>, <option>showremove</option> and "
+"<option>showpurge</option> respectively. More information about these so "
+"called dpkg selections can be found in &dpkg;."
+msgstr ""
+"Alcuni frontend, come <command>apt-get dselect-upgrade</command> possono "
+"essere usati per applicare modifiche allo stato di installazione dei "
+"pacchetti precedentemente pianificate. Queste modifiche possono essere "
+"pianificate usando i comandi <option>install</option>, <option>remove</"
+"option> (noto anche come <option>deinstall</option>) e <option>purge</"
+"option>. I pacchetti con una selezione specifica possono essere visualizzati "
+"rispettivamente con <option>showinstall</option>, <option>showremove</"
+"option> e <option>showpurge</option>. Ulteriori informazioni su queste "
+"cosiddette selezioni di dpkg possono essere trovate in &dpkg;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"<command>apt-mark</command> returns zero on normal operation, non-zero on "
+"error."
+msgstr ""
+"<command>apt-mark</command> restituisce zero in caso di funzionamento "
+"normale e un valore diverso da zero in caso di errore."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-secure.8.xml
+msgid "Archive authentication support for APT"
+msgstr "supporto per l'autenticazione degli archivi per APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "Starting with version 0.6, <command>APT</command> contains code that does "
+#| "signature checking of the Release file for all repositories. This ensures "
+#| "that data like packages in the archive can't be modified by people who "
+#| "have no access to the Release file signing key."
+msgid ""
+"Starting with version 0.6, <command>APT</command> contains code that does "
+"signature checking of the Release file for all repositories. This ensures "
+"that data like packages in the archive can't be modified by people who have "
+"no access to the Release file signing key. Starting with version 1.1 "
+"<command>APT</command> requires repositories to provide recent "
+"authentication information for unimpeded usage of the repository."
+msgstr ""
+"A partire dalla versione 0.6, <command>APT</command> contiene del codice che "
+"controlla le firme dei file Release per tutti i repository. Ciò assicura che "
+"dati quali i pacchetti nell'archivio non possano essere modificati da "
+"persone che non hanno accesso alla chiave di firma dei file Release."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "If an archive has an unsigned Release file or no Release file at all "
+#| "current APT versions will raise a warning in <command>update</command> "
+#| "operations and front-ends like <command>apt-get</command> will require "
+#| "explicit confirmation if an installation request includes a package from "
+#| "such an unauthenticated archive."
+msgid ""
+"If an archive has an unsigned Release file or no Release file at all current "
+"APT versions will refuse to download data from them by default in "
+"<command>update</command> operations and even if forced to download front-"
+"ends like &apt-get; will require explicit confirmation if an installation "
+"request includes a package from such an unauthenticated archive."
+msgstr ""
+"Se un archivio ha un file Release non firmato o non ha per nulla un file "
+"Release, le versioni attuali di APT mostrano un avvertimento durante le "
+"operazioni di <command>update</command> e i frontend come <command>apt-get</"
+"command> richiedono una conferma esplicita se una richiesta di installazione "
+"include un pacchetto da un archivio non autenticato di questo tipo."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"As a temporary exception &apt-get; (not &apt;!) raises warnings only if it "
+"encounters unauthenticated archives to give a slightly longer grace period "
+"on this backward compatibility effecting change. This exception will be "
+"removed in future releases and you can opt-out of this grace period by "
+"setting the configuration option <option>Binary::apt-get::Acquire::"
+"AllowInsecureRepositories</option> to <literal>false</literal> or <option>--"
+"no-allow-insecure-repositories</option> on the command line."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"You can force all APT clients to raise only warnings by setting the "
+"configuration option <option>Acquire::AllowInsecureRepositories</option> to "
+"<literal>true</literal>. Individual repositories can also be allowed to be "
+"insecure via the &sources-list; option <literal>allow-insecure=yes</"
+"literal>. Note that insecure repositories are strongly discouraged and all "
+"options to force apt to continue supporting them will eventually be "
+"removed. Users also have the <option>Trusted</option> option available to "
+"disable even the warnings, but be sure to understand the implications as "
+"detailed in &sources-list;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"A repository which previously was authenticated but would loose this state "
+"in an <command>update</command> operation raises an error in all APT clients "
+"irrespective of the option to allow or forbid usage of insecure "
+"repositories. The error can be overcome by additionally setting "
+"<option>Acquire::AllowDowngradeToInsecureRepositories</option> to "
+"<literal>true</literal> or for Individual repositories with the &sources-"
+"list; option <literal>allow-downgrade-to-insecure=yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note: All APT-based package management front-ends like &apt-get;, &aptitude; "
+"and &synaptic; support this authentication feature, so this manpage uses "
+"<literal>APT</literal> to refer to them all for simplicity only."
+msgstr ""
+"Nota: tutti i front-end di gestione dei pacchetti basati su APT, come &apt-"
+"get;, &aptitude; e &synaptic;, supportano questa funzionalità di "
+"autenticazione, perciò questa pagina di manuale usa <literal>APT</literal> "
+"per fare riferimento a tutti loro solo per ragioni di semplicità."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Trusted Repositories"
+msgstr "Repository fidati"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"The chain of trust from an APT archive to the end user is made up of several "
+"steps. <command>apt-secure</command> is the last step in this chain; "
+"trusting an archive does not mean that you trust its packages not to contain "
+"malicious code, but means that you trust the archive maintainer. It's the "
+"archive maintainer's responsibility to ensure that the archive's integrity "
+"is preserved."
+msgstr ""
+"La catena di fiducia da un archivio APT all'utente finale è composta di vari "
+"passaggi intermedi. <command>apt-secure</command> è l'ultimo della catena; "
+"il fatto che si abbia fiducia in un archivio non significa che si abbia "
+"fiducia che i suoi pacchetti non contengano codice malevolo, ma significa "
+"che si ha fiducia nel manutentore dell'archivio. È responsabilità del "
+"manutentore dell'archivio assicurare che sia preservata l'integrità "
+"dell'archivio."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"apt-secure does not review signatures at a package level. If you require "
+"tools to do this you should look at <command>debsig-verify</command> and "
+"<command>debsign</command> (provided in the debsig-verify and devscripts "
+"packages respectively)."
+msgstr ""
+"apt-secure non controlla le firme a livello di pacchetto. Se si desiderano "
+"strumenti per farlo, si possono guardare <command>debsig-verify</command> e "
+"<command>debsign</command> (forniti rispettivamente nei pacchetti debsig-"
+"verify e devscripts)."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"The chain of trust in Debian starts (e.g.) when a maintainer uploads a new "
+"package or a new version of a package to the Debian archive. In order to "
+"become effective, this upload needs to be signed by a key contained in one "
+"of the Debian package maintainer keyrings (available in the debian-keyring "
+"package). Maintainers' keys are signed by other maintainers following pre-"
+"established procedures to ensure the identity of the key holder. Similar "
+"procedures exist in all Debian-based distributions."
+msgstr ""
+"La catena di fiducia in Debian ha inizio (ad esempio) quando un manutentore "
+"carica un nuovo pacchetto o una nuova versione di un pacchetto nell'archivio "
+"Debian. Per poter diventare effettivo, questo caricamento deve essere "
+"firmato con una chiave contenuta in uno dei portachiavi dei manutentori "
+"Debian (disponibili nel pacchetto debian-keyring). Le chiavi dei manutentori "
+"sono firmate da altri manutentori seguendo delle procedure prestabilite, per "
+"assicurare l'identità del proprietario della chiave. Procedure simili "
+"esistono in tutte le distribuzioni basate su Debian."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Once the uploaded package is verified and included in the archive, the "
+"maintainer signature is stripped off, and checksums of the package are "
+"computed and put in the Packages file. The checksums of all of the Packages "
+"files are then computed and put into the Release file. The Release file is "
+"then signed by the archive key for this &keyring-distro; release, and "
+"distributed alongside the packages and the Packages files on &keyring-"
+"distro; mirrors. The keys are in the &keyring-distro; archive keyring "
+"available in the &keyring-package; package."
+msgstr ""
+"Una volta che il pacchetto caricato è verificato e incluso nell'archivio, la "
+"firma del manutentore viene rimossa e i codici di controllo del pacchetto "
+"vengono calcolati e messi nel file Packages. Vengono quindi calcolati i "
+"codici di controllo di tutti i file Packages e vengono messi nel file "
+"Release. Il file Release viene poi firmato con la chiave dell'archivio per "
+"questo rilascio di &keyring-distro; e viene distribuito insieme ai pacchetti "
+"e ai file Packages nei mirror &keyring-distro;. Le chiavi sono nel "
+"portachiavi degli archivi &keyring-distro;, disponibile nel pacchetto "
+"&keyring-package;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"End users can check the signature of the Release file, extract a checksum of "
+"a package from it and compare it with the checksum of the package they "
+"downloaded by hand - or rely on APT doing this automatically."
+msgstr ""
+"Gli utenti finali possono controllare la firma del file Release, estrarre da "
+"esso il codice di controllo di un pacchetto e confrontarlo con il codice di "
+"controllo del pacchetto che hanno scaricato a mano, oppure possono affidarsi "
+"ad APT che lo fa automaticamente."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Notice that this is distinct from checking signatures on a per package "
+"basis. It is designed to prevent two possible attacks:"
+msgstr ""
+"Notare che questo è diverso dal controllare le firme per ciascun pacchetto. "
+"È progettato per prevenire due possibili attacchi:"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<literal>Network \"man in the middle\" attacks</literal>. Without signature "
+"checking, malicious agents can introduce themselves into the package "
+"download process and provide malicious software either by controlling a "
+"network element (router, switch, etc.) or by redirecting traffic to a rogue "
+"server (through ARP or DNS spoofing attacks)."
+msgstr ""
+"<literal>Attacchi di rete «man in the middle»</literal>. Senza il controllo "
+"delle firme, soggetti malevoli possono introdursi nel processo di "
+"scaricamento dei pacchetti e fornire software pericoloso controllando un "
+"elemento di rete (router, switch, ecc.) oppure ridirigendo il traffico ad un "
+"server cattivo (attraverso attacchi di falsificazione di DNS e ARP)."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<literal>Mirror network compromise</literal>. Without signature checking, a "
+"malicious agent can compromise a mirror host and modify the files in it to "
+"propagate malicious software to all users downloading packages from that "
+"host."
+msgstr ""
+"<literal>Compromissione della rete dei mirror</literal>. Senza il controllo "
+"delle firme, soggetti malevoli possono compromettere un host mirror e "
+"modificare i file su di esso per propagare il software pericoloso a tutti "
+"gli utenti che scaricano i pacchetti da quell'host."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"However, it does not defend against a compromise of the master server itself "
+"(which signs the packages) or against a compromise of the key used to sign "
+"the Release files. In any case, this mechanism can complement a per-package "
+"signature."
+msgstr ""
+"Tuttavia non difende dalle compromissioni del server principale stesso (che "
+"firma i pacchetti) o dalla compromissione della chiave usata per firmare i "
+"file Release. In ogni caso, questo meccanismo può complementare le firme a "
+"livello di singolo pacchetto."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "User Configuration"
+msgstr "Configurazione utente"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"<command>apt-key</command> is the program that manages the list of keys used "
+"by APT to trust repositories. It can be used to add or remove keys as well "
+"as list the trusted keys. Limiting which key(s) are able to sign which "
+"archive is possible via the <option>Signed-By</option> in &sources-list;."
+msgstr ""
+"<command>apt-key</command> è il programma che gestisce l'elenco delle chiavi "
+"usate da APT per fidarsi dei repository. Può essere usato per aggiungere o "
+"rimuovere chiavi, oltre che per elencare le chiavi fidate. È possibile "
+"limitare quali chiavi possono firmare determinati archivi usando "
+"<option>Signed-By</option> in &sources-list;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so fiddling with "
+"<command>apt-key</command> is only needed if third-party repositories are "
+"added."
+msgstr ""
+"Notare che un'installazione predefinita contiene già tutte le chiavi per "
+"acquisire in modo sicuro i pacchetti dai repository predefiniti, perciò le "
+"modifiche fatte a mano con <command>apt-key</command> sono necessarie solo "
+"se vengono aggiunti repository di terze parti."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"In order to add a new key you need to first download it (you should make "
+"sure you are using a trusted communication channel when retrieving it), add "
+"it with <command>apt-key</command> and then run <command>apt-get update</"
+"command> so that apt can download and verify the <filename>InRelease</"
+"filename> or <filename>Release.gpg</filename> files from the archives you "
+"have configured."
+msgstr ""
+"Per aggiungere una nuova chiave, è necessario prima scaricarla (ci si "
+"dovrebbe assicurare di usare un canale di comunicazione fidato quando la si "
+"recupera), aggiungerla con <command>apt-key</command> e poi eseguire "
+"<command>apt-get update</command>, in modo che apt possa scaricare e "
+"verificare i file <filename>InRelease</filename> o <filename>Release.gpg</"
+"filename> dagli archivi che sono configurati."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Archive Configuration"
+msgstr "Configurazione dell'archivio"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"If you want to provide archive signatures in an archive under your "
+"maintenance you have to:"
+msgstr ""
+"Se si desiderano fornire firme per un archivio di cui si è il manutentore, "
+"si deve:"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Create a toplevel Release file</emphasis>, if it does not exist "
+"already. You can do this by running <command>apt-ftparchive release</"
+"command> (provided in apt-utils)."
+msgstr ""
+"<emphasis>Creare un file Release di livello più alto</emphasis>, se non "
+"esiste già. Lo si può fare eseguendo <command>apt-ftparchive release</"
+"command> (fornito in apt-utils)."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --"
+"clearsign -o InRelease Release</command> and <command>gpg -abs -o Release."
+"gpg Release</command>."
+msgstr ""
+"<emphasis>Firmarlo</emphasis>. Lo si può fare eseguendo <command>gpg --"
+"clearsign -o InRelease Release</command> e <command>gpg -abs -o Release.gpg "
+"Release</command>."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Publish the key fingerprint</emphasis>, so that your users will "
+"know what key they need to import in order to authenticate the files in the "
+"archive. It is best to ship your key in its own keyring package like "
+"&keyring-distro; does with &keyring-package; to be able to distribute "
+"updates and key transitions automatically later."
+msgstr ""
+"<emphasis>Pubblicare l'impronta digitale della chiave</emphasis>, in modo "
+"che i propri utenti sappiano quale chiave devono importare per poter "
+"autenticare i file nell'archivio. È meglio distribuire la propria chiave in "
+"un proprio pacchetto portachiavi, come &keyring-distro; fa con &keyring-"
+"package; per essere in grado in futuro di distribuire aggiornamenti e "
+"transizioni di chiave in modo automatico."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Provide instructions on how to add your archive and key</"
+"emphasis>. If your users can't acquire your key securely the chain of trust "
+"described above is broken. How you can help users add your key depends on "
+"your archive and target audience ranging from having your keyring package "
+"included in another archive users already have configured (like the default "
+"repositories of their distribution) to leveraging the web of trust."
+msgstr ""
+"<emphasis>Fornire istruzioni su come aggiungere il proprio archivio e la "
+"propria chiave</emphasis>. Se i propri utenti non possono acquisire la "
+"chiave in maniera sicura, la catena di fiducia descritta sopra viene "
+"interrotta. Il modo in cui si può aiutare gli utenti ad aggiungere la "
+"propria chiave dipende dal proprio archivio e dalla propria utenza e va da "
+"avere un proprio pacchetto portachiavi incluso in un altro archivio che gli "
+"utenti hanno già configurato (come i repository predefiniti della loro "
+"distribuzione) a sfruttare la rete di fiducia."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Whenever the contents of the archive change (new packages are added or "
+"removed) the archive maintainer has to follow the first two steps outlined "
+"above."
+msgstr ""
+"Ogni volta che i contenuti dell'archivio cambiano (sono aggiunti o rimossi "
+"nuovi pacchetti), il manutentore dell'archivio deve compiere nuovamente i "
+"primi due passi descritti sopra."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+"&debsign;, &debsig-verify;, &gpg;"
+msgstr ""
+"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+"&debsign;, &debsig-verify;, &gpg;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"For more background information you might want to review the <ulink url="
+"\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
+"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
+"available in the harden-doc package) and the <ulink url=\"http://www."
+"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
+"ulink> by V. Alex Brennen."
+msgstr ""
+"Per maggiori informazioni sui concetti alla base di questo sistema, si può "
+"leggere il capitolo <ulink url=\"https://www.debian.org/doc/manuals/securing-"
+"debian-howto/ch7\">Debian Security Infrastructure</ulink> del manuale "
+"Securing Debian (disponibile anche nel pacchetto harden-doc) e il <ulink url="
+"\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" >Strong "
+"Distribution HOWTO</ulink> di V. Alex Brennen."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Manpage Authors"
+msgstr "Autori della pagina di manuale"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"This man-page is based on the work of Javier Fernández-Sanguino Peña, Isaac "
+"Jones, Colin Walters, Florian Weimer and Michael Vogt."
+msgstr ""
+"Questa pagina di manuale è basata sul lavoro di Javier Fernández-Sanguino "
+"Peña, Isaac Jones, Colin Walters, Florian Weimer e Michael Vogt."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cdrom.8.xml
+msgid "APT CD-ROM management utility"
+msgstr "strumento APT per la gestione dei CD-ROM"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<command>apt-cdrom</command> is used to add a new CD-ROM to APT's list of "
+"available sources. <command>apt-cdrom</command> takes care of determining "
+"the structure of the disc as well as correcting for several possible mis-"
+"burns and verifying the index files."
+msgstr ""
+"<command>apt-cdrom</command> è usato per aggiungere un nuovo CD-ROM alla "
+"lista delle fonti disponibili per APT. <command>apt-cdrom</command> si "
+"prende cura di determinare la struttura del disco e anche di correggere "
+"possibili errori di masterizzazione e di verificare i file indice."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"It is necessary to use <command>apt-cdrom</command> to add CDs to the APT "
+"system; it cannot be done by hand. Furthermore each disc in a multi-CD set "
+"must be inserted and scanned separately to account for possible mis-burns."
+msgstr ""
+"Per aggiungere dei CD al sistema APT è necessario usare <command>apt-cdrom</"
+"command>, in quanto ciò non può essere fatto manualmente. Inoltre ogni disco "
+"in un insieme di più CD deve essere inserito e scansionato separatamente per "
+"tenere conto di possibili errori di masterizzazione."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<literal>add</literal> is used to add a new disc to the source list. It will "
+"unmount the CD-ROM device, prompt for a disc to be inserted and then proceed "
+"to scan it and copy the index files. If the disc does not have a proper "
+"<filename>.disk</filename> directory you will be prompted for a descriptive "
+"title."
+msgstr ""
+"<literal>add</literal> è usato per aggiungere un nuovo disco alla lista "
+"delle fonti. Smonterà il device del CD-ROM, chiederà di inserire un disco e "
+"poi procederà alla sua scansione e copierà i file indice. Se il disco non ha "
+"una directory <filename>.disk/</filename> corretta, verrà chiesto un titolo "
+"descrittivo."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"APT uses a CD-ROM ID to track which disc is currently in the drive and "
+"maintains a database of these IDs in <filename>&statedir;/cdroms.list</"
+"filename>"
+msgstr ""
+"APT usa un identificativo per i CD-ROM per tenere traccia di quale disco è "
+"attualmente nel lettore e mantiene un database di questi identificativi nel "
+"file <filename>&statedir;/cdroms.list</filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"A debugging tool to report the identity of the current disc as well as the "
+"stored file name"
+msgstr ""
+"Uno strumento di debug per riportare l'identità del disco corrente così come "
+"il nome dei file memorizzato."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Do not try to auto-detect the CD-ROM path. Usually combined with the "
+"<option>--cdrom</option> option. Configuration Item: <literal>Acquire::"
+"cdrom::AutoDetect</literal>."
+msgstr ""
+"Non cercare di rilevare automaticamente il percorso del CD-ROM. Solitamente "
+"usato insieme all'opzione <option>--cdrom</option>. Voce di configurazione: "
+"<literal>Acquire::cdrom::AutoDetect</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Mount point; specify the location to mount the CD-ROM. This mount point must "
+"be listed in <filename>/etc/fstab</filename> and properly configured. "
+"Configuration Item: <literal>Acquire::cdrom::mount</literal>."
+msgstr ""
+"Punto di mount; specifica la posizione in cui montare il CD-ROM. Questo "
+"punto di mount deve essere elencato nel file <filename>/etc/fstab</filename> "
+"e configurato correttamente. Voce di configurazione: <literal>Acquire::"
+"cdrom::mount</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Rename a disc; change the label of a disc or override the disc's given "
+"label. This option will cause <command>apt-cdrom</command> to prompt for a "
+"new label. Configuration Item: <literal>APT::CDROM::Rename</literal>."
+msgstr ""
+"Rinomina un disco; cambia l'etichetta di un disco o soppianta l'etichetta "
+"originale del disco. Questa opzione farà sì che <command>apt-cdrom</command> "
+"chieda una nuova etichetta. Voce di configurazione: <literal>APT::CDROM::"
+"Rename</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"No mounting; prevent <command>apt-cdrom</command> from mounting and "
+"unmounting the mount point. Configuration Item: <literal>APT::CDROM::"
+"NoMount</literal>."
+msgstr ""
+"Non montare; impedisce ad <command>apt-cdrom</command> di montare e smontare "
+"il punto di mount. Voce di configurazione: <literal>APT::CDROM::NoMount</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Fast Copy; Assume the package files are valid and do not check every "
+"package. This option should be used only if <command>apt-cdrom</command> has "
+"been run on this disc before and did not detect any errors. Configuration "
+"Item: <literal>APT::CDROM::Fast</literal>."
+msgstr ""
+"Copia rapida; assume che i file dei pacchetti siano validi e non verifica "
+"ogni pacchetto. Questa opzione dovrebbe essere usata solo se <command>apt-"
+"cdrom</command> è stato già eseguito sul disco e non ha rilevato alcun "
+"errore. Voce di configurazione: <literal>APT::CDROM::Fast</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Thorough Package Scan; This option may be needed with some old Debian "
+"1.1/1.2 discs that have Package files in strange places. It takes much "
+"longer to scan the CD but will pick them all up."
+msgstr ""
+"Scansione approfondita dei file Package; questa opzione può essere "
+"necessaria con alcuni dischi delle vecchie Debian 1.1/1.2 in cui i file "
+"Package si trovano in posti inconsueti. La scansione dei CD richiederà molto "
+"più tempo, ma troverà tutti i file."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"No Changes; Do not change the &sources-list; file and do not write index "
+"files. Everything is still checked however. Configuration Item: "
+"<literal>APT::CDROM::NoAct</literal>."
+msgstr ""
+"Nessun cambiamento; non cambia il file &sources-list; e non scrive i file "
+"indice. Tuttavia ogni cosa è comunque verificata. Voce di configurazione: "
+"<literal>APT::CDROM::NoAct</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid "&apt-conf;, &apt-get;, &sources-list;"
+msgstr "&apt-conf;, &apt-get;, &sources-list;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<command>apt-cdrom</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-cdrom</command> restituisce zero in caso di funzionamento "
+"normale e il valore decimale 100 in caso di errore."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-config.8.xml
+msgid "APT Configuration Query program"
+msgstr "programma di interrogazione della configurazione di APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml
+msgid ""
+"<command>apt-config</command> is an internal program used by various "
+"portions of the APT suite to provide consistent configurability. It accesses "
+"the main configuration file <filename>/etc/apt/apt.conf</filename> in a "
+"manner that is easy to use for scripted applications."
+msgstr ""
+"<command>apt-config</command> è un programma interno usato da varie parti "
+"della suite APT per fornire una configurabilità coerente. Accede al file "
+"principale di configurazione <filename>/etc/apt/apt.conf</filename> in un "
+"modo facile da usare da parte di applicazioni che usano script."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"shell is used to access the configuration information from a shell script. "
+"It is given pairs of arguments, the first being a shell variable and the "
+"second the configuration value to query. As output it lists shell assignment "
+"commands for each value present. In a shell script it should be used as "
+"follows:"
+msgstr ""
+"shell viene usato per accedere alle informazioni di configurazione da parte "
+"di uno script di shell. Riceve coppie di argomenti, il primo dei quali è una "
+"variabile di shell e il secondo è il valore di configurazione da "
+"interrogare. Come risultato elenca il comando shell di assegnazione per "
+"ciascun valore presente. In uno script di shell dovrebbe essere usato in "
+"modo simile a:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-config.8.xml
+#, no-wrap
+msgid ""
+"OPTS=\"-f\"\n"
+"RES=`apt-config shell OPTS MyApp::options`\n"
+"eval $RES\n"
+msgstr ""
+"OPZIONI=\"-f\"\n"
+"RES=`apt-config shell OPZIONI MiaApp::opzioni`\n"
+"eval $RES\n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"This will set the shell environment variable $OPTS to the value of MyApp::"
+"options with a default of <option>-f</option>."
+msgstr ""
+"In questo modo la variabile d'ambiente $OPZIONI della shell verrà impostata "
+"al valore di MiaApp::opzioni con un valore predefinito di <option>-f</"
+"option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"The configuration item may be postfixed with a /[fdbi]. f returns file "
+"names, d returns directories, b returns true or false and i returns an "
+"integer. Each of the returns is normalized and verified internally."
+msgstr ""
+"La voce di configurazione può essere seguita da /[fdbi]. f restituisce nomi "
+"di file, d restituisce directory, b restituisce vero o falso e i restituisce "
+"un intero. Ogni valore restituito è normalizzato e verificato internamente."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid "Just show the contents of the configuration space."
+msgstr "Mostra soltanto i contenuti dello spazio di configurazione."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"Include options which have an empty value. This is the default, so use --no-"
+"empty to remove them from the output."
+msgstr ""
+"Include le opzioni che hanno un valore vuoto. Questo è il comportamento "
+"predefinito, perciò usare --no-empty per rimuoverle dall'output."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-config.8.xml
+msgid "&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n"
+msgstr "&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"Defines the output of each config option. &percnt;t will be replaced with "
+"its individual name, &percnt;f with its full hierarchical name and &percnt;v "
+"with its value. Use uppercase letters and special characters in the value "
+"will be encoded to ensure that it can e.g. be safely used in a quoted-string "
+"as defined by RFC822. Additionally &percnt;n will be replaced by a newline, "
+"and &percnt;N by a tab. A &percnt; can be printed by using &percnt;&percnt;."
+msgstr ""
+"Definisce l'output per ciascuna opzione di configurazione. &percnt;t verrà "
+"sostituito dal suo nome, &percnt;f dal suo nome gerarchico completo e "
+"&percnt;v dal suo valore. Usa le lettere maiuscole e i caratteri speciali "
+"nel valore verranno codificati per assicurare che possano essere usati senza "
+"problemi in una stringa tra virgolette, come definito nella RFC822. In "
+"aggiunta &percnt;n verrà sostituito da un ritorno a capo e &percnt;N da una "
+"tabulazione. Un carattere &percnt; può essere prodotto usando &percnt;"
+"&percnt;. "
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml
+msgid "&apt-conf;"
+msgstr "&apt-conf;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml
+msgid ""
+"<command>apt-config</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-config</command> restituisce zero in caso di funzionamento "
+"normale e il valore decimale 100 in caso di errore."
+
+#. type: Content of: <refentry><refentryinfo><author><contrib>
+#: apt.conf.5.xml
+msgid "Initial documentation of Debug::*."
+msgstr "Documentazione iniziale di Debug::*."
+
+#. type: Content of: <refentry><refentryinfo><author><email>
+#: apt.conf.5.xml
+msgid "dburrows@debian.org"
+msgstr "dburrows@debian.org"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml
+msgid "5"
+msgstr "5"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.conf.5.xml
+msgid "Configuration file for APT"
+msgstr "file di configurazione di APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<filename>/etc/apt/apt.conf</filename> is the main configuration file shared "
+"by all the tools in the APT suite of tools, though it is by no means the "
+"only place options can be set. The suite also shares a common command line "
+"parser to provide a uniform environment."
+msgstr ""
+"<filename>/etc/apt/apt.conf</filename> è il file di configurazione "
+"principale condiviso da tutti gli strumenti nella suite APT, anche se non è "
+"affatto l'unico posto in cui possono essere impostate opzioni. La suite "
+"condivide anche un analizzatore comune della riga di comando per fornire un "
+"ambiente uniforme."
+
+#. type: Content of: <refentry><refsect1><orderedlist><para>
+#: apt.conf.5.xml
+msgid ""
+"When an APT tool starts up it will read the configuration files in the "
+"following order:"
+msgstr ""
+"Quando uno strumento APT viene avviato, legge i file di configurazione nel "
+"seguente ordine:"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the file specified by the <envar>APT_CONFIG</envar> environment variable (if "
+"any)"
+msgstr ""
+"il file specificato dalla variabile d'ambiente <envar>APT_CONFIG</envar> (se "
+"presente)"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending "
+"order which have either no or \"<literal>conf</literal>\" as filename "
+"extension and which only contain alphanumeric, hyphen (-), underscore (_) "
+"and period (.) characters. Otherwise APT will print a notice that it has "
+"ignored a file, unless that file matches a pattern in the <literal>Dir::"
+"Ignore-Files-Silently</literal> configuration list - in which case it will "
+"be silently ignored."
+msgstr ""
+"tutti i file in <literal>Dir::Etc::Parts</literal>, in ordine alfanumerico "
+"crescente, se il loro nome file non ha estensione o ha «<literal>conf</"
+"literal>» come estensione, e contiene solamente caratteri alfanumerici, "
+"trattini (-), caratteri di sottolineatura (_) e punti (.). Altrimenti, APT "
+"visualizza un messaggio che informa che un file è stato ignorato, a meno che "
+"il file non corrisponda ad un modello nell'elenco di configurazione "
+"<literal>Dir::Ignore-Files-Silently</literal> nel qual caso verrà ignorato "
+"silenziosamente."
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the main configuration file specified by <literal>Dir::Etc::main</literal>"
+msgstr ""
+"il file di configurazione principale specificato da <literal>Dir::Etc::main</"
+"literal>"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"all options set in the binary specific configuration subtree are moved into "
+"the root of the tree."
+msgstr ""
+"tutte le opzioni impostate nel sottoalbero di configurazione specifico dei "
+"binari sono spostate nella radice dell'albero."
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the command line options are applied to override the configuration "
+"directives or to load even more configuration files."
+msgstr ""
+"le opzioni nella riga di comando sono applicate per scavalcare le direttive "
+"di configurazione o per caricare ulteriori file di configurazione."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Syntax"
+msgstr "Sintassi"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The configuration file is organized in a tree with options organized into "
+"functional groups. Option specification is given with a double colon "
+"notation; for instance <literal>APT::Get::Assume-Yes</literal> is an option "
+"within the APT tool group, for the Get tool. Options do not inherit from "
+"their parent groups."
+msgstr ""
+"Il file di configurazione ha un'organizzazione ad albero con le opzioni "
+"riunite in gruppi funzionali. Un'opzione viene specificata con una notazione "
+"a due punti (:); per esempio <literal>APT::Get::Assume-Yes</literal> è "
+"un'opzione per lo strumento Get all'interno del gruppo dello strumento APT. "
+"Le opzioni non ereditano dai gruppi genitori."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Syntactically the configuration language is modeled after what the ISC tools "
+"such as bind and dhcp use. Lines starting with <literal>//</literal> are "
+"treated as comments (ignored), as well as all text between <literal>/*</"
+"literal> and <literal>*/</literal>, just like C/C++ comments. Each line is "
+"of the form <literal>APT::Get::Assume-Yes \"true\";</literal>. The "
+"quotation marks and trailing semicolon are required. The value must be on "
+"one line, and there is no kind of string concatenation. Values must not "
+"include backslashes or extra quotation marks. Option names are made up of "
+"alphanumeric characters and the characters \"/-:._+\". A new scope can be "
+"opened with curly braces, like this:"
+msgstr ""
+"Sintatticamente il linguaggio di configurazione è basato sul modello di "
+"quello usato dagli strumenti ISC come bind e dhcp. Le righe che iniziano con "
+"<literal>//</literal> vengono trattate come commenti (ignorate), così come "
+"tutto il testo racchiuso tra <literal>/*</literal> e <literal>*/</literal>, "
+"proprio come i commenti C/C++. Ogni riga ha la forma <literal>APT::Get::"
+"Assume-Yes \"true\";</literal>. Le virgolette e il punto e virgola finale "
+"sono obbligatori. I valori non possono includere barre inverse (\\) o "
+"ulteriori virgolette. I nomi delle opzioni sono costituiti da caratteri "
+"alfanumerici e dai caratteri «/-:._+». Un nuovo ambito può essere aperto con "
+"parentesi graffe come in:"
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT {\n"
+" Get {\n"
+" Assume-Yes \"true\";\n"
+" Fix-Broken \"true\";\n"
+" };\n"
+"};\n"
+msgstr ""
+"APT {\n"
+" Get {\n"
+" Assume-Yes \"true\";\n"
+" Fix-Broken \"true\";\n"
+" };\n"
+"};\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"with newlines placed to make it more readable. Lists can be created by "
+"opening a scope and including a single string enclosed in quotes followed by "
+"a semicolon. Multiple entries can be included, separated by a semicolon."
+msgstr ""
+"con le nuove righe posizionate in modo da renderle più leggibili. Si possono "
+"creare elenchi aprendo un ambito e includendo una singola stringa racchiusa "
+"tra virgolette e seguita da un punto e virgola. Possono essere incluse più "
+"voci, separate da un punto e virgola."
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "DPkg::Pre-Install-Pkgs {\"/usr/sbin/dpkg-preconfigure --apt\";};\n"
+msgstr "DPkg::Pre-Install-Pkgs {\"/usr/sbin/dpkg-preconfigure --apt\";};\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"In general the sample configuration file &configureindex; is a good guide "
+"for how it should look."
+msgstr ""
+"In generale i file di configurazione d'esempio &configureindex; sono una "
+"buona guida su come debba essere un file di configurazione."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Case is not significant in names of configuration items, so in the previous "
+"example you could use <literal>dpkg::pre-install-pkgs</literal>."
+msgstr ""
+"I nomi delle voci di configurazione sono insensibili all'uso di maiuscole e "
+"minuscole, perciò nell'esempio precedente si sarebbe potuto usare "
+"<literal>dpkg::pre-install-pkgs</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Names for the configuration items are optional if a list is defined as can "
+"be seen in the <literal>DPkg::Pre-Install-Pkgs</literal> example above. If "
+"you don't specify a name a new entry will simply add a new option to the "
+"list. If you specify a name you can override the option in the same way as "
+"any other option by reassigning a new value to the option."
+msgstr ""
+"I nomi delle voci di configurazione sono opzionali se viene definito un "
+"elenco come si può vedere nell'esempio <literal>DPkg::Pre-Install-Pkgs</"
+"literal> precedente. Se non si specifica un nome, una nuova voce aggiunge "
+"semplicemente una nuova opzione all'elenco. Se si specifica un nome, si può "
+"sovrascrivere l'opzione come per ogni altra, assegnandole un nuovo valore."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Two special commands are defined: <literal>#include</literal> (which is "
+"deprecated and not supported by alternative implementations) and "
+"<literal>#clear</literal>. <literal>#include</literal> will include the "
+"given file, unless the filename ends in a slash, in which case the whole "
+"directory is included. <literal>#clear</literal> is used to erase a part of "
+"the configuration tree. The specified element and all its descendants are "
+"erased. (Note that these lines also need to end with a semicolon.)"
+msgstr ""
+"Sono definiti due comandi speciali: <literal>#include</literal> (che è "
+"deprecato e non supportato da implementazioni alternative) e "
+"<literal>#clear</literal>. <literal>#include</literal> include il file "
+"indicato a meno che il suo nome non termini con un carattere «/», nel qual "
+"caso viene inclusa l'intera directory. <literal>#clear</literal> viene usato "
+"per eliminare una parte dell'albero di configurazione. L'elemento "
+"specificato e tutti i suoi discendenti vengono eliminati. (Notare che anche "
+"queste righe devono terminare con un punto e virgola.)"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>#clear</literal> command is the only way to delete a list or a "
+"complete scope. Reopening a scope (or using the syntax described below with "
+"an appended <literal>::</literal>) will <emphasis>not</emphasis> override "
+"previously written entries. Options can only be overridden by addressing a "
+"new value to them - lists and scopes can't be overridden, only cleared."
+msgstr ""
+"Il comando <literal>#clear</literal> è l'unico modo di cancellare un elenco "
+"o un intero ambito. Riaprire un ambito (o usare la sintassi descritta più "
+"sotto aggiungendo alla fine <literal>::</literal>) <emphasis>non</emphasis> "
+"sovrascrive le voci precedentemente scritte. Le opzioni possono essere "
+"sovrascritte solamente assegnandovi un nuovo valore; gli elenchi e gli "
+"ambiti non possono essere sovrascritti, solo cancellati."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"All of the APT tools take an -o option which allows an arbitrary "
+"configuration directive to be specified on the command line. The syntax is a "
+"full option name (<literal>APT::Get::Assume-Yes</literal> for instance) "
+"followed by an equals sign then the new value of the option. To append a new "
+"element to a list, add a trailing <literal>::</literal> to the name of the "
+"list. (As you might suspect, the scope syntax can't be used on the command "
+"line.)"
+msgstr ""
+"Tutti gli strumenti APT accettano un'opzione -o che permette di specificare "
+"una direttiva di configurazione arbitraria nella riga di comando. La "
+"sintassi è un nome completo di opzione (per esempio <literal>APT::Get::"
+"Assume-Yes</literal>) seguito da un segno di uguaglianza e quindi il nuovo "
+"valore dell'opzione. Per aggiungere un nuovo elemento ad un elenco, "
+"aggiungere <literal>::</literal> alla fine del nome dell'elenco. (Come si "
+"può immaginare, la sintassi per gli ambiti non può essere usata nella riga "
+"di comando.)"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that appending items to a list using <literal>::</literal> only works "
+"for one item per line, and that you should not use it in combination with "
+"the scope syntax (which adds <literal>::</literal> implicitly). Using both "
+"syntaxes together will trigger a bug which some users unfortunately depend "
+"on: an option with the unusual name \"<literal>::</literal>\" which acts "
+"like every other option with a name. This introduces many problems; for one "
+"thing, users who write multiple lines in this <emphasis>wrong</emphasis> "
+"syntax in the hope of appending to a list will achieve the opposite, as only "
+"the last assignment for this option \"<literal>::</literal>\" will be used. "
+"Future versions of APT will raise errors and stop working if they encounter "
+"this misuse, so please correct such statements now while APT doesn't "
+"explicitly complain about them."
+msgstr ""
+"Notare che aggiungere voci in coda ad un elenco usando <literal>::</literal> "
+"funziona solamente con un elemento per riga, e che non si dovrebbe usarlo "
+"insieme alla sintassi per gli ambiti (che aggiunge implicitamente <literal>::"
+"</literal>). L'uso di entrambe le sintassi insieme fa apparire un bug che "
+"sfortunatamente alcuni utenti utilizzano: un'opzione con l'insolito nome "
+"«<literal>::</literal>» che funziona come una qualsiasi altra opzione con "
+"nome. Ciò introduce molti problemi; innanzitutto gli utenti che scrivono più "
+"righe con questa sintassi <emphasis>sbagliata</emphasis> nella speranza di "
+"aggiungere voci ad un elenco ottengono il risultato opposto, dato che viene "
+"usata solo l'ultima assegnazione per questa opzione «<literal>::</literal>». "
+"Le versioni future di APT causeranno errori e smetteranno di funzionare se "
+"incontrano questo uso scorretto, perciò è bene correggere tali dichiarazioni "
+"ora, quando APT ancora non si lamenta esplicitamente."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "The APT Group"
+msgstr "Il gruppo APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"This group of options controls general APT behavior as well as holding the "
+"options for all of the tools."
+msgstr ""
+"Questo gruppo di opzioni controlla il comportamento generale di APT, oltre a "
+"contenere le opzioni per tutti gli strumenti."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"System Architecture; sets the architecture to use when fetching files and "
+"parsing package lists. The internal default is the architecture apt was "
+"compiled for."
+msgstr ""
+"Architettura di sistema; imposta l'architettura da usare quando si "
+"recuperano i file e si analizzano gli elenchi dei pacchetti. Il valore "
+"predefinito interno è l'architettura per la quale apt è stato compilato."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"All Architectures the system supports. For instance, CPUs implementing the "
+"<literal>amd64</literal> (also called <literal>x86-64</literal>) "
+"instruction set are also able to execute binaries compiled for the "
+"<literal>i386</literal> (<literal>x86</literal>) instruction set. This list "
+"is used when fetching files and parsing package lists. The initial default "
+"is always the system's native architecture (<literal>APT::Architecture</"
+"literal>), and foreign architectures are added to the default list when they "
+"are registered via <command>dpkg --add-architecture</command>."
+msgstr ""
+"Tutte le architetture supportate dal sistema. Ad esempio, le CPU che "
+"implementano l'insieme di istruzioni <literal>amd64</literal> (chiamato "
+"anche <literal>x86-64</literal>) sono anche in grado di eseguire binari "
+"compilati per l'insieme di istruzioni <literal>i386</literal> (<literal>x86</"
+"literal>). Questo elenco viene usato quando si recuperano i file e si "
+"analizzano gli elenchi dei pacchetti. Il valore iniziale predefinito è "
+"sempre l'architettura nativa del sistema (<literal>APT::Architecture</"
+"literal>), e le altre architetture vengono aggiunte all'elenco predefinito "
+"quando sono registrate con <command>dpkg --add-architecture</command>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines which compression formats are supported, how compression "
+"and decompression can be performed if support for this format isn't built "
+"into apt directly and a cost-value indicating how costly it is to compress "
+"something in this format. As an example the following configuration stanza "
+"would allow apt to download and uncompress as well as create and store files "
+"with the low-cost <literal>.reversed</literal> file extension which it will "
+"pass to the command <command>rev</command> without additional commandline "
+"parameters for compression and uncompression:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Compressor::rev {\n"
+"\tName \"rev\";\n"
+"\tExtension \".reversed\";\n"
+"\tBinary \"rev\";\n"
+"\tCompressArg {};\n"
+"\tUncompressArg {};\n"
+"\tCost \"10\";\n"
+"};\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"List of all build profiles enabled for build-dependency resolution, without "
+"the \"<literal>profile.</literal>\" namespace prefix. By default this list "
+"is empty. The <envar>DEB_BUILD_PROFILES</envar> as used by &dpkg-"
+"buildpackage; overrides the list notation."
+msgstr ""
+"Elenco dei profili di compilazione abilitati per la risoluzione delle "
+"dipendenze di compilazione, senza il prefisso dello spazio dei nomi "
+"«<literal>profile.</literal>». In modo predefinito questa lista è vuota. "
+"<envar>DEB_BUILD_PROFILES</envar>, come usata da &dpkg-buildpackage; ha la "
+"precedenza sulla notazione della lista."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Default release to install packages from if more than one version is "
+"available. Contains release name, codename or release version. Examples: "
+"'stable', 'testing', 'unstable', '&debian-stable-codename;', '&debian-"
+"testing-codename;', '4.0', '5.0*'. See also &apt-preferences;."
+msgstr ""
+"Il rilascio predefinito da cui installare i pacchetti se è disponibile più "
+"di una versione. Contiene il nome del rilascio, il nome in codice o la "
+"versione del rilascio. Esempi: «stable», «testing», «unstable», «&debian-"
+"stable-codename;», «&debian-testing-codename;», «4.0», «5.0*». Vedere anche "
+"&apt-preferences;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Ignore held packages; this global option causes the problem resolver to "
+"ignore held packages in its decision making."
+msgstr ""
+"Ignora i pacchetti bloccati; questa opzione globale fa sì che il risolutore "
+"di problemi ignori i pacchetti bloccati nel suo processo decisionale."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Defaults to on. When turned on the autoclean feature will remove any "
+"packages which can no longer be downloaded from the cache. If turned off "
+"then packages that are locally installed are also excluded from cleaning - "
+"but note that APT provides no direct means to reinstall them."
+msgstr ""
+"Attiva in modo predefinito. Quando attiva, la funzionalità autoclean rimuove "
+"dalla cache ogni pacchetto che non può più essere scaricato. Se disattivata, "
+"allora sono esclusi dalla rimozione anche i pacchetti che sono installati; "
+"fare attenzione però al fatto che APT non fornisce alcun mezzo diretto per "
+"reinstallarli."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Defaults to on, which will cause APT to install essential and important "
+"packages as soon as possible in an install/upgrade operation, in order to "
+"limit the effect of a failing &dpkg; call. If this option is disabled, APT "
+"treats an important package in the same way as an extra package: between the "
+"unpacking of the package A and its configuration there can be many other "
+"unpack or configuration calls for other unrelated packages B, C etc. If "
+"these cause the &dpkg; call to fail (e.g. because package B's maintainer "
+"scripts generate an error), this results in a system state in which package "
+"A is unpacked but unconfigured - so any package depending on A is now no "
+"longer guaranteed to work, as its dependency on A is no longer satisfied."
+msgstr ""
+"Attiva in modo predefinito, il che fa sì che APT installi i pacchetti "
+"essenziali e importanti non appena è possibile durante un'installazione o "
+"aggiornamento, per limitare l'effetto di una chiamata a &dpkg; che non ha "
+"successo. Se questa opzione è disattivata, APT tratta un pacchetto "
+"importante nello stesso modo di un pacchetto extra: tra lo spacchettamento "
+"del pacchetto A e la sua configurazione possono esserci molte altre chiamate "
+"di spacchettamento o configurazione per altri pacchetti non correlati B, C, "
+"ecc. Se queste causano il fallimento della chiamata a &dpkg; (ad esempio "
+"perché lo script del manutentore di B genera un errore), ciò ha come "
+"risultato un sistema in cui il pacchetto A è spacchettato ma non "
+"configurato; perciò non è più garantito il funzionamento di ogni pacchetto "
+"che dipende da A, dato che la dipendenza da A non è più soddisfatta."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The immediate configuration marker is also applied in the potentially "
+"problematic case of circular dependencies, since a dependency with the "
+"immediate flag is equivalent to a Pre-Dependency. In theory this allows APT "
+"to recognise a situation in which it is unable to perform immediate "
+"configuration, abort, and suggest to the user that the option should be "
+"temporarily deactivated in order to allow the operation to proceed. Note "
+"the use of the word \"theory\" here; in the real world this problem has "
+"rarely been encountered, in non-stable distribution versions, and was caused "
+"by wrong dependencies of the package in question or by a system in an "
+"already broken state; so you should not blindly disable this option, as the "
+"scenario mentioned above is not the only problem it can help to prevent in "
+"the first place."
+msgstr ""
+"Il contrassegno di configurazione immediata viene applicato anche nel caso "
+"potenzialmente problematico di dipendenze circolari, dato che una dipendenza "
+"con il contrassegno di immediato è equivalente ad una pre-dipendenza. In "
+"teoria ciò permette ad APT di riconoscere una situazione in cui non è in "
+"grado di effettuare la configurazione immediata, di terminare annullando e "
+"di suggerire all'utente che l'opzione dovrebbe essere temporaneamente "
+"disattivata per permettere la continuazione dell'operazione. Notare come sia "
+"stata usata l'espressione «in teoria»: in realtà questo problema si è "
+"verificato molto di rado, in versioni non stabili di distribuzione, ed è "
+"stato causato da dipendenze sbagliate del pacchetto interessato o da un "
+"sistema che era già in uno stato erroneo; perciò non si dovrebbe disattivare "
+"alla cieca questa opzione, dato che lo scenario descritto sopra non è "
+"l'unico problema che può aiutare a prevenire."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Before a big operation like <literal>dist-upgrade</literal> is run with this "
+"option disabled you should try to explicitly <literal>install</literal> the "
+"package APT is unable to configure immediately; but please make sure you "
+"also report your problem to your distribution and to the APT team with the "
+"buglink below, so they can work on improving or correcting the upgrade "
+"process."
+msgstr ""
+"Prima di eseguire una grossa operazione come <literal>dist-upgrade</literal> "
+"con questa opzione disattivata, si dovrebbe provare a usare esplicitamente "
+"<literal>install</literal> sul pacchetto che APT non è stato in grado di "
+"configurare immediatamente; assicurarsi però di segnalare il problema alla "
+"propria distribuzione e al Team di APT usando il collegamento per i bug "
+"indicato in seguito, in modo che possano lavorare a migliorare o correggere "
+"il processo di aggiornamento."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Never enable this option unless you <emphasis>really</emphasis> know what "
+"you are doing. It permits APT to temporarily remove an essential package to "
+"break a Conflicts/Conflicts or Conflicts/Pre-Depends loop between two "
+"essential packages. <emphasis>Such a loop should never exist and is a grave "
+"bug</emphasis>. This option will work if the essential packages are not "
+"<command>tar</command>, <command>gzip</command>, <command>libc</command>, "
+"<command>dpkg</command>, <command>dash</command> or anything that those "
+"packages depend on."
+msgstr ""
+"Non attivare mai questa opzione a meno di non sapere <emphasis>veramente</"
+"emphasis> ciò che si sta facendo. Permette ad APT di rimuovere "
+"temporaneamente un pacchetto essenziale per rompere un ciclo Conflicts/"
+"Conflicts o Conflicts/Pre-Depends tra due pacchetti essenziali. <emphasis>Un "
+"tale ciclo non dovrebbe mai esistere ed è un bug grave</emphasis>. Questa "
+"opzione funziona se i pacchetti essenziali non sono <command>tar</command>, "
+"<command>gzip</command>, <command>libc</command>, <command>dpkg</command>, "
+"<command>dash</command> o qualsiasi altro da cui dipendono tali pacchetti."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"APT uses since version 0.7.26 a resizable memory mapped cache file to store "
+"the available information. <literal>Cache-Start</literal> acts as a hint of "
+"the size the cache will grow to, and is therefore the amount of memory APT "
+"will request at startup. The default value is 20971520 bytes (~20 MB). Note "
+"that this amount of space needs to be available for APT; otherwise it will "
+"likely fail ungracefully, so for memory restricted devices this value should "
+"be lowered while on systems with a lot of configured sources it should be "
+"increased. <literal>Cache-Grow</literal> defines in bytes with the default "
+"of 1048576 (~1 MB) how much the cache size will be increased in the event "
+"the space defined by <literal>Cache-Start</literal> is not enough. This "
+"value will be applied again and again until either the cache is big enough "
+"to store all information or the size of the cache reaches the <literal>Cache-"
+"Limit</literal>. The default of <literal>Cache-Limit</literal> is 0 which "
+"stands for no limit. If <literal>Cache-Grow</literal> is set to 0 the "
+"automatic growth of the cache is disabled."
+msgstr ""
+"APT, a partire dalla versione 0.7.26, usa un file cache ridimensionabile "
+"mappato in memoria per memorizzare le informazioni disponibili. "
+"<literal>Cache-Start</literal> funziona da indicatore della dimensione che "
+"la cache raggiungerà ed è perciò la quantità di memoria che APT richiederà "
+"all'avvio. Il valore predefinito è 20971520 byte (~20 MB). Notare che questa "
+"quantità di spazio deve essere disponibile per APT, altrimenti probabilmente "
+"terminerà con un fallimento in modo molto poco grazioso; perciò per i "
+"dispositivi con memoria limitata questo valore dovrebbe essere abbassato, "
+"mentre nei sistemi con molte fonti configurate dovrebbe essere aumentato. "
+"<literal>Cache-Grow</literal> definisce di quanto verrà aumentata la "
+"dimensione della cache in byte, se lo spazio definito da <literal>Cache-"
+"Start</literal> non è sufficiente; il valore predefinito è 1048576 (~1 MB). "
+"Questo valore verrà applicato più volte, fino a che la cache non è grande "
+"abbastanza per memorizzare tutte le informazioni o la dimensione della cache "
+"raggiunge il valore <literal>Cache-Limit</literal>. Il valore predefinito di "
+"<literal>Cache-Limit</literal> è 0 che indica nessun limite. Se "
+"<literal>Cache-Grow</literal> viene impostato a 0 la crescita automatica "
+"della cache è disabilitata."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Defines which packages are considered essential build dependencies."
+msgstr ""
+"Definisce quali pacchetti sono considerati dipendenze di compilazione "
+"essenziali."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Get subsection controls the &apt-get; tool; please see its documentation "
+"for more information about the options here."
+msgstr ""
+"La sottosezione Get controlla lo strumento &apt-get;; vedere la sua "
+"documentazione per maggiori informazioni su queste opzioni."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Cache subsection controls the &apt-cache; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"La sottosezione Cache controlla lo strumento &apt-cache;; vedere la sua "
+"documentazione per maggiori informazioni su queste opzioni."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The CDROM subsection controls the &apt-cdrom; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"La sottosezione CDROM controlla lo strumento &apt-cdrom;; vedere la sua "
+"documentazione per maggiori informazioni su queste opzioni."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "The Acquire Group"
+msgstr "Il gruppo Acquire"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Acquire</literal> group of options controls the download of "
+"packages as well as the various \"acquire methods\" responsible for the "
+"download itself (see also &sources-list;)."
+msgstr ""
+"Il gruppo di opzioni <literal>Acquire</literal> controlla lo scaricamento "
+"dei pacchetti così come i vari «metodi di acquisizione» responsabili per lo "
+"scaricamento stesso (vedere anche &sources-list;)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Security related option defaulting to true, as giving a Release file's "
+"validation an expiration date prevents replay attacks over a long timescale, "
+"and can also for example help users to identify mirrors that are no longer "
+"updated - but the feature depends on the correctness of the clock on the "
+"user system. Archive maintainers are encouraged to create Release files with "
+"the <literal>Valid-Until</literal> header, but if they don't or a stricter "
+"value is desired the <literal>Max-ValidTime</literal> option below can be "
+"used. The <option>Check-Valid-Until</option> option of &sources-list; "
+"entries should be preferred to disable the check selectively instead of "
+"using this global override."
+msgstr ""
+"Opzione relativa alla sicurezza attiva in modo predefinito, poiché dare una "
+"data di scadenza alla convalida di un file Release evita attacchi ripetuti "
+"nel corso del tempo e può anche, per esempio, aiutare gli utenti a "
+"identificare i mirror che non sono più aggiornati, ma la funzionalità "
+"dipende dall'esattezza dell'orologio sul sistema dell'utente. I manutentori "
+"degli archivi sono incoraggiati a creare file Release con l'intestazione "
+"<literal>Valid-Until</literal>, ma se non lo fanno o se si desidera un "
+"valore più restrittivo può essere utilizzata l'opzione <literal>Max-"
+"ValidTime</literal> seguente. Per disabiitare il controllo in modo selettivo "
+"dovrebbe essere preferita l'opzione <option>Check-Valid-Until</option> delle "
+"voci in &sources-list;, invece di usare questa configurazione globale."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Maximum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. If the Release file itself includes a "
+"<literal>Valid-Until</literal> header the earlier date of the two is used as "
+"the expiration date. The default value is <literal>0</literal> which stands "
+"for \"valid forever\". Archive specific settings can be made by appending "
+"the label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the <option>Valid-"
+"Until-Max</option> option there."
+msgstr ""
+"Tempo massimo (in secondi) dalla sua creazione (come indicata "
+"dall'intestazione <literal>Date</literal>) per il quale il file "
+"<filename>Release</filename> deve essere considerato valido. Se il file "
+"Release stesso include un'intestazione <literal>Valid-Until</literal>, viene "
+"usata come data di scadenza quella più corta. Il valore predefinito è "
+"<literal>0</literal> che sta per «valido per sempre». Possono essere fatte "
+"impostazioni specifiche per ciascun archivio aggiungendo l'etichetta "
+"dell'archivio in fondo al nome dell'opzione. È preferibile ottenere la "
+"stessa cosa per voci specifiche in &sources-list; usando lì l'opzione "
+"<option>Valid-Until-Max</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Minimum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. Use this if you need to use a seldom updated "
+"(local) mirror of a more frequently updated archive with a <literal>Valid-"
+"Until</literal> header instead of completely disabling the expiration date "
+"checking. Archive specific settings can and should be used by appending the "
+"label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the <option>Valid-"
+"Until-Min</option> option there."
+msgstr ""
+"Tempo minimo (in secondi) dalla sua creazione (come indicata "
+"dall'intestazione <literal>Date</literal>) per il quale il file "
+"<filename>Release</filename> deve essere considerato valido. Utilizzare "
+"questa opzione se si deve usare un mirror (locale), aggiornato raramente, di "
+"un archivio aggiornato più spesso che ha un'intestazione <literal>Valid-"
+"Until</literal>, invece di disabilitare completamente il controllo della "
+"data di scadenza. Possono essere fatte impostazioni specifiche per ciascun "
+"archivio aggiungendo l'etichetta dell'archivio in fondo al nome "
+"dell'opzione. È preferibile ottenere la stessa cosa per voci specifiche in "
+"&sources-list; usando lì l'opzione <option>Valid-Until-Min</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Try to download deltas called <literal>PDiffs</literal> for indexes (like "
+"<filename>Packages</filename> files) instead of downloading whole ones. True "
+"by default. Preferably, this can be set for specific &sources-list; entries "
+"or index files by using the <option>PDiffs</option> option there."
+msgstr ""
+"Cerca di scaricare le differenze chiamate <literal>PDiff</literal> per gli "
+"indici (come i file <filename>Packages</filename>), invece di scaricare "
+"interamente i nuovi. Attiva in modo predefinito. È preferibile fare questa "
+"impostazione per file indice o voci specifiche in &sources-list; usando lì "
+"l'opzione <option>PDiffs</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Two sub-options to limit the use of PDiffs are also available: "
+"<literal>FileLimit</literal> can be used to specify a maximum number of "
+"PDiff files should be downloaded to update a file. <literal>SizeLimit</"
+"literal> on the other hand is the maximum percentage of the size of all "
+"patches compared to the size of the targeted file. If one of these limits is "
+"exceeded the complete file is downloaded instead of the patches."
+msgstr ""
+"Sono disponibili anche due sotto-opzioni per limitare l'uso dei PDiff: "
+"<literal>FileLimit</literal> può essere usata per specificare un numero "
+"massimo di file PDiff che devono essere scaricati per aggiornare un file. "
+"<literal>SizeLimit</literal>, invece, è la percentuale massima della "
+"dimensione di tutte le patch in rapporto alla dimensione del file finale "
+"considerato. Se uno di questi limiti viene superato, viene scaricato il file "
+"completo invece delle patch."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Try to download indexes via an URI constructed from a hashsum of the "
+"expected file rather than downloaded via a well-known stable filename. True "
+"by default, but automatically disabled if the source indicates no support "
+"for it. Usage can be forced with the special value \"force\". Preferably, "
+"this can be set for specific &sources-list; entries or index files by using "
+"the <option>By-Hash</option> option there."
+msgstr ""
+"Cerca di scaricare gli indici usando un URI costruito a partire da una somma "
+"hash del file atteso invece che scaricato attraverso un nome di file stable "
+"ben noto. Attiva in modo predefinito, ma disabilitata in modo predefinito se "
+"la fonte non indica il supporto per essa. Il suo uso può essere forzato con "
+"il valore speciale «force». È preferibile impostarla per file indice o voci "
+"specifiche in &sources-list; usando lì l'opzione <option>By-Hash</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</"
+"literal> or <literal>access</literal> which determines how APT parallelizes "
+"outgoing connections. <literal>host</literal> means that one connection per "
+"target host will be opened, <literal>access</literal> means that one "
+"connection per URI type will be opened."
+msgstr ""
+"Modalità di coda; <literal>Queue-Mode</literal> può essere <literal>host</"
+"literal> o <literal>access</literal>, che determinano come APT mette in "
+"parallelo le connessioni in uscita. <literal>host</literal> significa che "
+"viene aperta una connessione per ogni host bersaglio, <literal>access</"
+"literal> significa che viene aperta una connessione per ogni tipo di URI."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Number of retries to perform. If this is non-zero APT will retry failed "
+"files the given number of times."
+msgstr ""
+"Numero di tentativi successivi da effettuare. Se è diverso da zero, APT "
+"riproverà per il numero di volte specificato a scaricare i file con cui non "
+"ha avuto successo."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Use symlinks for source archives. If set to true then source archives will "
+"be symlinked when possible instead of copying. True is the default."
+msgstr ""
+"Usa i collegamenti simbolici per gli archivi sorgente. Se impostata a vero, "
+"allora per gli archivi sorgente verranno creati, quando possibile, dei "
+"collegamenti simbolici invece di fare una copia. Il valore predefinito è "
+"vero."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>http::Proxy</literal> sets the default proxy to use for HTTP URIs. "
+"It is in the standard form of <literal>http://[[user][:pass]@]host[:port]/</"
+"literal>. Per host proxies can also be specified by using the form "
+"<literal>http::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>http_proxy</envar> environment variable will "
+"be used."
+msgstr ""
+"<literal>http::Proxy</literal> imposta il proxy predefinito da usare per gli "
+"URI HTTP. È nella forma standard <literal>http://[[utente][:password]@]host[:"
+"porta]/</literal>. Possono anche essere specificati proxy per ciascun host "
+"usando la forma <literal>http::Proxy::&lt;host&gt;</literal> con la speciale "
+"parola chiave <literal>DIRECT</literal> che significa di non usare un proxy. "
+"Se non viene specificata alcuna delle impostazioni precedenti, viene usata "
+"la variabile d'ambiente <envar>http_proxy</envar>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Three settings are provided for cache control with HTTP/1.1 compliant proxy "
+"caches. <literal>No-Cache</literal> tells the proxy not to use its cached "
+"response under any circumstances. <literal>Max-Age</literal> sets the "
+"allowed maximum age (in seconds) of an index file in the cache of the "
+"proxy. <literal>No-Store</literal> specifies that the proxy should not "
+"store the requested archive files in its cache, which can be used to prevent "
+"the proxy from polluting its cache with (big) .deb files."
+msgstr ""
+"Sono fornite tre impostazioni per il controllo della cache in proxy con "
+"cache conformi a HTTP/1.1. <literal>No-Cache</literal> indica al proxy di "
+"non usare la sua risposta in cache in nessuna circostanza. <literal>Max-Age</"
+"literal> imposta l'età massima consentita (in secondi) di un file indice "
+"nella cache del proxy. <literal>No-Store</literal> specifica che il proxy "
+"non deve memorizzare i file archivio richiesti nella sua cache, il che può "
+"essere usato per evitare che il proxy riempia la propria cache con (grandi) "
+"file .deb."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The option <literal>timeout</literal> sets the timeout timer used by the "
+"method; this value applies to the connection as well as the data timeout."
+msgstr ""
+"L'opzione <literal>timeout</literal> imposta il tempo di timeout usato dal "
+"metodo; questo valore si applica sia al timeout per la connessione sia a "
+"quello per i dati."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e."
+"g. on high-latency connections. It specifies how many requests are sent in a "
+"pipeline. APT tries to detect and workaround misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the "
+"HTTP/1.1 specification pipelining can be disabled by setting the value to 0. "
+"It is enabled by default with the value 10."
+msgstr ""
+"L'impostazione <literal>Acquire::http::Pipeline-Depth</literal> può essere "
+"usata per abilitare le pipeline HTTP (RFC 2616, sezione 8.1.2.2) che possono "
+"essere utili, ad esempio, in connessioni con grande latenza. Specifica "
+"quante richieste sono inviate in una pipeline. APT cerca di rilevare al "
+"momento dell'esecuzione i server web e i proxy con comportamento non "
+"corretto e di aggirare il problema, ma se è noto che i propri non sono "
+"conformi alla specifica HTTP/1.1, l'uso delle pipeline può essere "
+"disabilitato impostando il valore a 0. In modo predefinito è abilitato con "
+"il valore 10."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::AllowRedirect</literal> controls whether APT will "
+"follow redirects, which is enabled by default."
+msgstr ""
+"<literal>Acquire::http::AllowRedirect</literal> specifica se APT segue o "
+"meno le ridirezioni che sono abilitate in modo predefinito."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</"
+"literal> which accepts integer values in kilobytes per second. The default "
+"value is 0 which deactivates the limit and tries to use all available "
+"bandwidth. Note that this option implicitly disables downloading from "
+"multiple servers at the same time."
+msgstr ""
+"La quantità di banda utilizzata può essere limitata con <literal>Acquire::"
+"http::Dl-Limit</literal> che accetta valori interi in kilobyte al secondo. "
+"Il valore predefinito è 0 che disattiva il limite e cerca di usare tutta la "
+"banda disponibile. Notare che questa opzione implicitamente disabilita lo "
+"scaricamento da più server contemporaneamente."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::User-Agent</literal> can be used to set a different "
+"User-Agent for the http download method as some proxies allow access for "
+"clients only if the client uses a known identifier."
+msgstr ""
+"<literal>Acquire::http::User-Agent</literal> può essere usata per impostare "
+"un User-Agent diverso per il metodo di scaricamento http, dato che alcuni "
+"proxy permettono l'accesso per i client solo se usano un identificativo "
+"conosciuto."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>Acquire::http::Proxy-Auto-Detect</literal> can be used to "
+#| "specify an external command to discover the http proxy to use. Apt "
+#| "expects the command to output the proxy on stdout in the style "
+#| "<literal>http://proxy:port/</literal>. This will override the generic "
+#| "<literal>Acquire::http::Proxy</literal> but not any specific host proxy "
+#| "configuration set via <literal>Acquire::http::Proxy::$HOST</literal>. "
+#| "See the &squid-deb-proxy-client; package for an example implementation "
+#| "that uses avahi. This option takes precedence over the legacy option name "
+#| "<literal>ProxyAutoDetect</literal>."
+msgid ""
+"<literal>Acquire::http::Proxy-Auto-Detect</literal> can be used to specify "
+"an external command to discover the http proxy to use. The first and only "
+"parameter is an URI denoting the host to be contacted to allow for host-"
+"specific configuration. APT expects the command to output the proxy on "
+"stdout as a single line in the style <literal>http://proxy:port/</literal> "
+"or the word <literal>DIRECT</literal> if no proxy should be used. No output "
+"indicates that the generic proxy settings should be used. Note that auto-"
+"detection will not be used for a host if a host-specific proxy configuration "
+"is already set via <literal>Acquire::http::Proxy::<replaceable>HOST</"
+"replaceable></literal>. See the &squid-deb-proxy-client; package for an "
+"example implementation that uses avahi. This option takes precedence over "
+"the legacy option name <literal>ProxyAutoDetect</literal>."
+msgstr ""
+"<literal>Acquire::http::Proxy-Auto-Detect</literal> può essere usato per "
+"specificare un comando esterno per rilevare il proxy http da usare. Apt si "
+"aspetta che il comando produca in output il proxy sullo stdout nello stile "
+"<literal>http://proxy:porta/</literal>. Questo avrà la precedenza sul "
+"generico <literal>Acquire::http::Proxy</literal>, ma non su qualsiasi "
+"configurazione specifica di host proxy impostata con <literal>Acquire::http::"
+"Proxy::$HOST</literal>. Vedere il pacchetto &squid-deb-proxy-client; per un "
+"esempio di implementazione che usa avahi. Questa opzione ha la precedenza "
+"sull'opzione col nome obsoleto <literal>ProxyAutoDetect</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Cache-control</literal>, <literal>Timeout</literal>, "
+"<literal>AllowRedirect</literal>, <literal>Dl-Limit</literal> and "
+"<literal>proxy</literal> options work for HTTPS URIs in the same way as for "
+"the <literal>http</literal> method, and default to the same values if they "
+"are not explicitly set. The <literal>Pipeline-Depth</literal> option is not "
+"yet supported."
+msgstr ""
+"Le opzioni<literal>Cache-control</literal>, <literal>Timeout</literal>, "
+"<literal>AllowRedirect</literal>, <literal>Dl-Limit</literal> e "
+"<literal>proxy</literal> funzionano per gli URI HTTPS nello stesso modo che "
+"per il metodo <literal>http</literal> e assumono in modo predefinito lo "
+"stesso valore, a meno di non essere impostate in modo esplicito. L'opzione "
+"<literal>Pipeline-Depth</literal> non è ancora supportata."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>CaInfo</literal> suboption specifies place of file that holds info "
+"about trusted certificates. <literal>&lt;host&gt;::CaInfo</literal> is the "
+"corresponding per-host option. <literal>Verify-Peer</literal> boolean "
+"suboption determines whether or not the server's host certificate should be "
+"verified against trusted certificates. <literal>&lt;host&gt;::Verify-Peer</"
+"literal> is the corresponding per-host option. <literal>Verify-Host</"
+"literal> boolean suboption determines whether or not the server's hostname "
+"should be verified. <literal>&lt;host&gt;::Verify-Host</literal> is the "
+"corresponding per-host option. <literal>SslCert</literal> determines what "
+"certificate to use for client authentication. <literal>&lt;host&gt;::"
+"SslCert</literal> is the corresponding per-host option. <literal>SslKey</"
+"literal> determines what private key to use for client authentication. "
+"<literal>&lt;host&gt;::SslKey</literal> is the corresponding per-host "
+"option. <literal>SslForceVersion</literal> overrides default SSL version to "
+"use. It can contain either of the strings '<literal>TLSv1</literal>' or "
+"'<literal>SSLv3</literal>'. <literal>&lt;host&gt;::SslForceVersion</"
+"literal> is the corresponding per-host option."
+msgstr ""
+"La sotto-opzione <literal>CaInfo</literal> specifica la posizione del file "
+"che contiene le informazioni sui certificati fidati; <literal>&lt;host&gt;::"
+"CaInfo</literal> è la corrispondente opzione specifica per ciascun host. La "
+"sotto-opzione booleana <literal>Verify-Peer</literal> determina se il "
+"certificato host del server deve o non deve essere verificato usando i "
+"certificati fidati; <literal>&lt;host&gt;::Verify-Peer</literal> è la "
+"corrispondente opzione specifica per ciascun host. La sotto-opzione booleana "
+"<literal>Verify-Host</literal> determina se il nome host del server deve o "
+"non deve essere verificato; <literal>&lt;host&gt;::Verify-Host</literal> è "
+"la corrispondente opzione specifica per ciascun host. <literal>SslCert</"
+"literal> determina quale certificato usare per l'autenticazione client; "
+"<literal>&lt;host&gt;::SslCert</literal> è la corrispondente opzione "
+"specifica per ciascun host. <literal>SslKey</literal> determina quale chiave "
+"privata usare per l'autenticazione client; <literal>&lt;host&gt;::SslKey</"
+"literal> è la corrispondente opzione specifica per ciascun host. "
+"<literal>SslForceVersion</literal> scavalca la versione predefinita SSL da "
+"usare e può contenere la stringa «<literal>TLSv1</literal>» o "
+"«<literal>SSLv3</literal>»; <literal>&lt;host&gt;::SslForceVersion</"
+"literal> è la corrispondente opzione specifica per ciascun host."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs. "
+"It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</"
+"literal>. Per host proxies can also be specified by using the form "
+"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
+"used. To use an FTP proxy you will have to set the <literal>ftp::ProxyLogin</"
+"literal> script in the configuration file. This entry specifies the commands "
+"to send to tell the proxy server what to connect to. Please see "
+"&configureindex; for an example of how to do this. The substitution "
+"variables representing the corresponding URI component are <literal>"
+"$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, <literal>"
+"$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, <literal>$(SITE)</"
+"literal> and <literal>$(SITE_PORT)</literal>."
+msgstr ""
+"<literal>ftp::Proxy</literal> imposta il proxy predefinito da usare per gli "
+"URI FTP. È nella forma standard <literal>ftp://[[utente][:password]@]host[:"
+"porta]/</literal>. Si possono anche specificare proxy per ciascun host "
+"usando la forma <literal>ftp::Proxy::&lt;host&gt;</literal> con la speciale "
+"parola chiave <literal>DIRECT</literal> che indica di non usare proxy. Se "
+"nessuna delle opzioni precedenti è impostata, viene usata la variabile "
+"d'ambiente <envar>ftp_proxy</envar>. Per usare un proxy FTP è necessario "
+"impostare lo script <literal>ftp::ProxyLogin</literal> nel file di "
+"configurazione. Questa voce specifica i comandi da inviare per dire al "
+"server proxy a cosa connettersi. Vedere &configureindex; per un esempio di "
+"come utilizzarla. Le variabili di sostituzione che rappresentano i "
+"corrispondenti componenti dell'URI sono <literal>$(PROXY_USER)</literal>, "
+"<literal>$(PROXY_PASS)</literal>, <literal>$(SITE_USER)</literal>, <literal>"
+"$(SITE_PASS)</literal>, <literal>$(SITE)</literal> e <literal>$(SITE_PORT)</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Several settings are provided to control passive mode. Generally it is safe "
+"to leave passive mode on; it works in nearly every environment. However, "
+"some situations require that passive mode be disabled and port mode FTP used "
+"instead. This can be done globally or for connections that go through a "
+"proxy or for a specific host (see the sample config file for examples)."
+msgstr ""
+"Sono fornite diverse impostazioni per controllare la modalità passiva. "
+"Generalmente è sicuro lasciare attiva la modalità passiva; funziona in quasi "
+"tutti gli ambienti. Tuttavia in alcune situazioni è necessario disabilitare "
+"la modalità passiva e usare invece la modalità per porta FTP. Ciò può essere "
+"fatto globalmente o, per connessioni che passano attraverso un proxy, per "
+"uno specifico host (vedere il file di configurazione d'esempio)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
+"envar> environment variable to an HTTP URL - see the discussion of the http "
+"method above for syntax. You cannot set this in the configuration file and "
+"it is not recommended to use FTP over HTTP due to its low efficiency."
+msgstr ""
+"È possibile usare FTP attraverso un proxy via HTTP impostando la variabile "
+"d'ambiente <envar>ftp_proxy</envar> ad un URL HTTP; per la sintassi vedere "
+"la spiegazione del metodo http più sopra. Non è possibile impostare questa "
+"opzione nel file di configurazione e l'uso di FTP via HTTP non è raccomando "
+"a causa della sua bassa efficienza."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
+"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
+"false, which means these commands are only used if the control connection is "
+"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
+"that most FTP servers do not support RFC2428."
+msgstr ""
+"L'impostazione <literal>ForceExtended</literal> controlla l'uso dei comandi "
+"<literal>EPSV</literal> e <literal>EPRT</literal> della RFC 2428. Il valore "
+"predefinito è falso, il che significa che questi comandi sono usati "
+"solamente se la connessione di controllo è IPv6. Impostare questo valore a "
+"vero forza il loro uso anche su connessioni IPv4. Notare che la maggior "
+"parte dei server FTP non supporta la RFC 2428."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "/cdrom/::Mount \"foo\";"
+msgstr "/cdrom/::Mount \"pippo\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"For URIs using the <literal>cdrom</literal> method, the only configurable "
+"option is the mount point, <literal>cdrom::Mount</literal>, which must be "
+"the mount point for the CD-ROM (or DVD, or whatever) drive as specified in "
+"<filename>/etc/fstab</filename>. It is possible to provide alternate mount "
+"and unmount commands if your mount point cannot be listed in the fstab. The "
+"syntax is to put <placeholder type=\"literallayout\" id=\"0\"/> within the "
+"<literal>cdrom</literal> block. It is important to have the trailing slash. "
+"Unmount commands can be specified using UMount."
+msgstr ""
+"Per URI che usano il metodo <literal>cdrom</literal>, l'unica opzione "
+"configurabile è il punto di mount, <literal>cdrom::Mount</literal>, che deve "
+"essere il punto di mount dell'unità CD-ROM (o DVD o quello che è), come "
+"specificato in <filename>/etc/fstab</filename>. È possibile fornire comandi "
+"alternativi per il montaggio e lo smontaggio se il proprio punto di mount "
+"non può essere elencato in fstab. La sintassi prevede di mettere "
+"<placeholder type=\"literallayout\" id=\"0\"/> all'interno del blocco "
+"<literal>cdrom</literal>. È importante che sia presente la barra in fondo. I "
+"comandi per lo smontaggio possono essere specificati usando UMount."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"For GPGV URIs the only configurable option is <literal>gpgv::Options</"
+"literal>, which passes additional parameters to gpgv."
+msgstr ""
+"Per gli URI GPGV l'unica opzione configurabile è <literal>gpgv::Options</"
+"literal>, che passa parametri aggiuntivi a gpgv."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";"
+msgstr "Acquire::CompressionTypes::<replaceable>EstensioneFile</replaceable> \"<replaceable>NomeMetodo</replaceable>\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "List of compression types which are understood by the acquire methods. "
+#| "Files like <filename>Packages</filename> can be available in various "
+#| "compression formats. By default the acquire methods can decompress "
+#| "<command>bzip2</command>, <command>lzma</command> and <command>gzip</"
+#| "command> compressed files; with this setting more formats can be added on "
+#| "the fly or the used method can be changed. The syntax for this is: "
+#| "<placeholder type=\"synopsis\" id=\"0\"/>"
+msgid ""
+"List of compression types which are understood by the acquire methods. "
+"Files like <filename>Packages</filename> can be available in various "
+"compression formats. By default the acquire methods can decompress and "
+"recompress many common formats like <command>xz</command> and <command>gzip</"
+"command>; with this scope the supported formats can be queried, modified as "
+"well as support for more formats added (see also <option>APT::Compressor</"
+"option>). The syntax for this is: <placeholder type=\"synopsis\" id=\"0\"/>"
+msgstr ""
+"Elenco di tipi di compressione che sono capiti dai metodi di acquisizione. I "
+"file come <filename>Packages</filename> possono essere disponibili in vari "
+"formati di compressione. In modo predefinito i metodi di acquisizione "
+"possono decomprimere file compressi con <command>bzip2</command>, "
+"<command>lzma</command> e <command>gzip</command>; con questa impostazione "
+"si possono aggiungere altri formati al volo oppure può essere cambiato il "
+"metodo usato. La sintassi è: <placeholder type=\"synopsis\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order:: \"gz\";"
+msgstr "Acquire::CompressionTypes::Order:: \"gz\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order { \"xz\"; \"gz\"; };"
+msgstr "Acquire::CompressionTypes::Order { \"xz\"; \"gz\"; };"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Also, the <literal>Order</literal> subgroup can be used to define in "
+#| "which order the acquire system will try to download the compressed files. "
+#| "The acquire system will try the first and proceed with the next "
+#| "compression type in this list on error, so to prefer one over the other "
+#| "type simply add the preferred type first - default types not already "
+#| "added will be implicitly appended to the end of the list, so e.g. "
+#| "<placeholder type=\"synopsis\" id=\"0\"/> can be used to prefer "
+#| "<command>gzip</command> compressed files over <command>bzip2</command> "
+#| "and <command>lzma</command>. If <command>lzma</command> should be "
+#| "preferred over <command>gzip</command> and <command>bzip2</command> the "
+#| "configure setting should look like this: <placeholder type=\"synopsis\" "
+#| "id=\"1\"/> It is not needed to add <literal>bz2</literal> to the list "
+#| "explicitly as it will be added automatically."
+msgid ""
+"Also, the <literal>Order</literal> subgroup can be used to define in which "
+"order the acquire system will try to download the compressed files. The "
+"acquire system will try the first and proceed with the next compression type "
+"in this list on error, so to prefer one over the other type simply add the "
+"preferred type first - types not already added will be implicitly appended "
+"to the end of the list, so e.g. <placeholder type=\"synopsis\" id=\"0\"/> "
+"can be used to prefer <command>gzip</command> compressed files over all "
+"other compression formats. If <command>xz</command> should be preferred "
+"over <command>gzip</command> and <command>bzip2</command> the configure "
+"setting should look like this: <placeholder type=\"synopsis\" id=\"1\"/> It "
+"is not needed to add <literal>bz2</literal> to the list explicitly as it "
+"will be added automatically."
+msgstr ""
+"Inoltre si può usare il sottogruppo <literal>Order</literal> per definire in "
+"quale ordine il sistema di acquisizione cerca di scaricare i file compressi. "
+"Il sistema tenta con il primo tipo di compressione e in caso di errore passa "
+"al successivo nell'elenco perciò, per preferire un tipo rispetto ad un "
+"altro, basta mettere il tipo preferito per primo; i tipi predefiniti che non "
+"sono già presenti vengono aggiunti in modo implicito alla fine dell'elenco, "
+"perciò si può usare, ad esempio, <placeholder type=\"synopsis\" id=\"0\"/> "
+"per preferire i file compressi con <command>gzip</command> a <command>bzip2</"
+"command> e <command>lzma</command>. Se si volesse preferire <command>lzma</"
+"command> rispetto a <command>gzip</command> e <command>bzip2</command>, "
+"l'impostazione di configurazione sarebbe: <placeholder type=\"synopsis\" id="
+"\"1\"/> Non è necessario aggiungere esplicitamente <literal>bz2</literal> "
+"all'elenco, dato che verrà aggiunto automaticamente."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Dir::Bin::bzip2 \"/bin/bzip2\";"
+msgstr "Dir::Bin::bzip2 \"/bin/bzip2\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Note that the <literal>Dir::Bin::<replaceable>Methodname</replaceable></"
+#| "literal> will be checked at run time. If this option has been set, the "
+#| "method will only be used if this file exists; e.g. for the "
+#| "<literal>bzip2</literal> method (the inbuilt) setting is: <placeholder "
+#| "type=\"literallayout\" id=\"0\"/> Note also that list entries specified "
+#| "on the command line will be added at the end of the list specified in the "
+#| "configuration files, but before the default entries. To prefer a type in "
+#| "this case over the ones specified in the configuration files you can set "
+#| "the option direct - not in list style. This will not override the "
+#| "defined list; it will only prefix the list with this type."
+msgid ""
+"Note that the <literal>Dir::Bin::<replaceable>Methodname</replaceable></"
+"literal> will be checked at run time. If this option has been set and "
+"support for this format isn't directly built into apt, the method will only "
+"be used if this file exists; e.g. for the <literal>bzip2</literal> method "
+"(the inbuilt) setting is: <placeholder type=\"literallayout\" id=\"0\"/> "
+"Note also that list entries specified on the command line will be added at "
+"the end of the list specified in the configuration files, but before the "
+"default entries. To prefer a type in this case over the ones specified in "
+"the configuration files you can set the option direct - not in list style. "
+"This will not override the defined list; it will only prefix the list with "
+"this type."
+msgstr ""
+"Notare che <literal>Dir::Bin::<replaceable>NomeMetodo</replaceable></"
+"literal> viene controllata al momento dell'esecuzione. Se questa opzione è "
+"stata impostata, il metodo verrà usato solo se questo file è esistente; ad "
+"esempio, per il metodo <literal>bzip2</literal> l'impostazione (interna) è: "
+"<placeholder type=\"literallayout\" id=\"0\"/> Notare anche che le voci "
+"nell'elenco specificate nella riga di comando vengono aggiunte alla fine "
+"dell'elenco specificato nei file di configurazione, ma prima delle voci "
+"predefinite. In questo caso, per preferire un tipo rispetto a quelli "
+"specificati nei file di configurazione si può impostare l'opzione "
+"direttamente, non nello stile per elenco. Ciò non sovrascrive l'elenco "
+"definito; aggiunge solamente il tipo indicato all'inizio dell'elenco."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The special type <literal>uncompressed</literal> can be used to give "
+"uncompressed files a preference, but note that most archives don't provide "
+"uncompressed files so this is mostly only useable for local mirrors."
+msgstr ""
+"Il tipo speciale <literal>uncompressed</literal> può essere usato per dare "
+"la precedenza ai file non compressi, ma è bene notare che la maggior parte "
+"degli archivi non fornisce file non compressi, perciò questo è utilizzabile "
+"soprattutto per i mirror locali."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"When downloading <literal>gzip</literal> compressed indexes (Packages, "
+"Sources, or Translations), keep them gzip compressed locally instead of "
+"unpacking them. This saves quite a lot of disk space at the expense of more "
+"CPU requirements when building the local package caches. False by default."
+msgstr ""
+"Quando si scaricano indici compressi con <literal>gzip</literal> (Packages, "
+"Sources o Translations), li mantiene localmente compressi con gzip invece di "
+"spacchettarli. Questo fa risparmiare parecchio spazio su disco a spese di un "
+"maggiore uso della CPU quando si creano le cache locali dei pacchetti. In "
+"modo predefinito è disabilitato."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Languages subsection controls which <filename>Translation</filename> "
+"files are downloaded and in which order APT tries to display the description-"
+"translations. APT will try to display the first available description in the "
+"language which is listed first. Languages can be defined with their short or "
+"long language codes. Note that not all archives provide "
+"<filename>Translation</filename> files for every language - the long "
+"language codes are especially rare."
+msgstr ""
+"La sottosezione Languages controlla quali file <filename>Translation</"
+"filename> sono scaricati e in quale ordine APT cerca di visualizzare le "
+"traduzioni delle descrizioni. APT cerca di visualizzare la prima descrizione "
+"disponibile nella lingua elencata per prima. Le lingue possono essere "
+"definite con i loro codici brevi o lunghi. Notare che non tutti gli archivi "
+"forniscono i file <filename>Translation</filename> per tutte le lingue; i "
+"codici di lingua lunghi sono particolarmente rari."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };"
+msgstr "Acquire::Languages { \"environment\"; \"it\"; \"en\"; \"none\"; \"fr\"; };"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The default list includes \"environment\" and \"en\". "
+"\"<literal>environment</literal>\" has a special meaning here: it will be "
+"replaced at runtime with the language codes extracted from the "
+"<literal>LC_MESSAGES</literal> environment variable. It will also ensure "
+"that these codes are not included twice in the list. If "
+"<literal>LC_MESSAGES</literal> is set to \"C\" only the "
+"<filename>Translation-en</filename> file (if available) will be used. To "
+"force APT to use no Translation file use the setting <literal>Acquire::"
+"Languages=none</literal>. \"<literal>none</literal>\" is another special "
+"meaning code which will stop the search for a suitable "
+"<filename>Translation</filename> file. This tells APT to download these "
+"translations too, without actually using them unless the environment "
+"specifies the languages. So the following example configuration will result "
+"in the order \"en, de\" in an English locale or \"de, en\" in a German one. "
+"Note that \"fr\" is downloaded, but not used unless APT is used in a French "
+"locale (where the order would be \"fr, de, en\"). <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+msgstr ""
+"L'elenco predefinito include «environment» ed «en». «<literal>environment</"
+"literal>» ha un significato speciale in questo contesto: viene sostituito al "
+"momento dell'esecuzione dai codici di lingua estratti dalla variabile "
+"d'ambiente <literal>LC_MESSAGES</literal>. Assicura anche che questi codici "
+"non vengano inclusi due volte nell'elenco. Se <literal>LC_MESSAGES</literal> "
+"è impostata a «C», viene usato solamente il file <filename>Translation-en</"
+"filename> (se disponibile). Per forzare APT a non usare alcun file "
+"Translation, usare l'impostazione <literal>Acquire::Languages=none</"
+"literal>. \"<literal>none</literal>\" è un altro codice con significato "
+"speciale che interrompe la ricerca di un file <filename>Translation</"
+"filename> adatto. Questo dice ad APT di scaricare anche queste traduzioni, "
+"senza usarle realmente a meno che l'ambiente non specifichi le lingue. "
+"Perciò il seguente esempio di configurazione avrà come risultato l'ordine "
+"«en, it» in una localizzazione inglese o «it, en» in una italiana. Notare "
+"che «fr» viene scaricato, ma non usato, a meno che APT non venga usato in "
+"una localizzazione francese (dove l'ordine sarebbe «fr, it, en»). "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Note: To prevent problems resulting from APT being executed in different "
+"environments (e.g. by different users or by other programs) all Translation "
+"files which are found in <filename>/var/lib/apt/lists/</filename> will be "
+"added to the end of the list (after an implicit \"<literal>none</literal>\")."
+msgstr ""
+"Notare che per prevenire problemi risultanti dall'uso di APT in ambienti "
+"differenti (ad esempio da parte di utenti o programmi diversi), tutti i file "
+"Translation che si trovano in <filename>/var/lib/apt/lists/</filename> "
+"vengono aggiunti alla fine dell'elenco (dopo un \"<literal>none</literal>\" "
+"implicito)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "When downloading, force to use only the IPv4 protocol."
+msgstr "Durante gli scaricamenti, forza l'uso del solo protocollo IPv4."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "When downloading, force to use only the IPv6 protocol."
+msgstr "Durante gli scaricamenti, forza l'uso del solo protocollo IPv6."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The maximum file size of Release/Release.gpg/InRelease files. The default "
+"is 10MB."
+msgstr ""
+"La dimensione massima per i file Release/Release.gpg/InRelease. Il valore "
+"predefinito è 10 MB."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This option controls if apt will use the DNS SRV server record as specified "
+"in RFC 2782 to select an alternative server to connect to. The default is "
+"\"true\"."
+msgstr ""
+"Questa opzione controlla se apt usa il record del server DNS SRV come "
+"specificato nella RFC 2782 per selezionare un server alternativo a cui "
+"connettersi. In modo predefinito è impostata a vero («true»)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow update operations to load data files from repositories without "
+"sufficient security information. The default value is \"<literal>false</"
+"literal>\". Concept, implications as well as alternatives are detailed in "
+"&apt-secure;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow update operations to load data files from repositories which provide "
+"security information, but these are deemed no longer cryptographically "
+"strong enough. The default value is \"<literal>false</literal>\". Concept, "
+"implications as well as alternatives are detailed in &apt-secure;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Allow that a repository that was previously gpg signed to become unsigned "
+#| "durign a update operation. When there is no valid signature of a "
+#| "previously trusted repository apt will refuse the update. This option can "
+#| "be used to override this protection. You almost certainly never want to "
+#| "enable this. The default is false. Note that apt will still consider "
+#| "packages from this source untrusted and warn about them if you try to "
+#| "install them."
+msgid ""
+"Allow that a repository that was previously gpg signed to become unsigned "
+"during an update operation. When there is no valid signature for a "
+"previously trusted repository apt will refuse the update. This option can be "
+"used to override this protection. You almost certainly never want to enable "
+"this. The default is <literal>false</literal>. Concept, implications as "
+"well as alternatives are detailed in &apt-secure;."
+msgstr ""
+"Permette che un repository che era in precedenza firmato con gpg diventi non "
+"firmato durante un'operazione di aggiornamento. Quando non c'è una firma "
+"valida per un repository precedentemente fidato, apt rifiuta "
+"l'aggiornamento. Questa opzione può essere usata per scavalcare questa "
+"protezione. Non dovrebbe mai venire abilitata. Il valore predefinito è "
+"falso. Notare che apt considera comunque i pacchetti da questa fonte come "
+"non fidati e produce avvertimenti se si cerca di installarli."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.conf.5.xml
+msgid "scope"
+msgstr "ambito"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Acquiring changelogs can only be done if an URI is known from where to get "
+"them. Preferable the Release file indicates this in a 'Changelogs' field. "
+"If this isn't available the Label/Origin field of the Release file is used "
+"to check if a <literal>Acquire::Changelogs::URI::Label::<replaceable>LABEL</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Origin::"
+"<replaceable>ORIGIN</replaceable></literal> option exists and if so this "
+"value is taken. The value in the Release file can be overridden with "
+"<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
+"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a "
+"normal URI to a text file, except that package specific data is replaced "
+"with the placeholder <literal>@CHANGEPATH@</literal>. The value for it is: "
+"1. if the package is from a component (e.g. <literal>main</literal>) this "
+"is the first part otherwise it is omitted, 2. the first letter of source "
+"package name, except if the source package name starts with '<literal>lib</"
+"literal>' in which case it will be the first four letters. 3. The complete "
+"source package name. 4. the complete name again and 5. the source version. "
+"The first (if present), second, third and fourth part are separated by a "
+"slash ('<literal>/</literal>') and between the fourth and fifth part is an "
+"underscore ('<literal>_</literal>'). The special value '<literal>no</"
+"literal>' is available for this option indicating that this source can't be "
+"used to acquire changelog files from. Another source will be tried if "
+"available in this case."
+msgstr ""
+"L'acquisizione di changelog è possibile solamente se è noto un URI da cui "
+"ottenerli. Il file Release indica questa informazione preferibilmente in un "
+"campo «Changelogs». Se questo non è disponibile, viene usato il campo Label/"
+"Origin del file Release per controllare se esiste un'opzione "
+"<literal>Acquire::Changelogs::URI::Label::<replaceable>ETICHETTA</"
+"replaceable></literal> o <literal>Acquire::Changelogs::URI::Origin::"
+"<replaceable>ORIGINE</replaceable></literal> e, se è così, viene preso "
+"questo valore. Il valore nel file Release può essere scavalcato con "
+"<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>ETICHETTA</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
+"Origin::<replaceable>ORIGINE</replaceable></literal>. Il valore deve essere "
+"un URI normale verso un file di testo, tranne per il fatto che dati "
+"specifici di pacchetto sono sostituito con il segnaposto "
+"<literal>@CHANGEPATH@</literal>. Il valore per esso è: 1. se il pacchetto è "
+"da una componente (es. <literal>main</literal>) è la prima parte, altrimenti "
+"viene omesso; 2. la prima lettera del nome del pacchetto sorgente, tranne "
+"per i pacchetti sorgente con nome che inizia con «<literal>lib</literal>», "
+"nel qual caso saranno le prime quattro lettere; 3. il nome completo del "
+"pacchetto sorgente; 4. il nome completo di nuovo e 5. la versione sorgente. "
+"La prima (se presente), la seconda, la terza e la quarta parte sono separate "
+"da una sbarra («<literal>/</literal>») e tra la quarta e la quinta parte c'è "
+"un trattino basso («<literal>_</literal>»). Per questa opzione è disponibile "
+"il valore speciale «<literal>no</literal>» che indica che questa fonte non "
+"può essere usata per acquisire file changelog. In questo caso viene provata "
+"un'altra fonte, se disponibile."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Binary specific configuration"
+msgstr "Configurazione specifica per binari"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Especially with the introduction of the <command>apt</command> binary it can "
+"be useful to set certain options only for a specific binary as even options "
+"which look like they would effect only a certain binary like <option>APT::"
+"Get::Show-Versions</option> effect <command>apt-get</command> as well as "
+"<command>apt</command>."
+msgstr ""
+"Specialmente con l'introduzione del binario <command>apt</command> può "
+"essere utile impostare determinate opzioni solamente per uno specifico "
+"binario, dato che anche opzioni che sembrerebbero avere effetto solo su un "
+"determinato binario come <option>APT::Get::Show-Versions</option>, hanno "
+"effetto su <command>apt-get</command> così come su <command>apt</command>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Setting an option for a specific binary only can be achieved by setting the "
+"option inside the <option>Binary::<replaceable>specific-binary</"
+"replaceable></option> scope. Setting the option <option>APT::Get::Show-"
+"Versions</option> for the <command>apt</command> only can e.g. by done by "
+"setting <option>Binary::apt::APT::Get::Show-Versions</option> instead."
+msgstr ""
+"L'impostazione di un'opzione per un solo binario specifico può essere "
+"ottenuta solamente impostando l'opzione all'interno di un ambito "
+"<option>Binary::<replaceable>binario-specifico</replaceable></option>. Ad "
+"esempio impostare l'opzione <option>APT::Get::Show-Versions</option> "
+"solamente per <command>apt</command> può essere fatto impostando invece "
+"<option>Binary::apt::APT::Get::Show-Versions</option>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that as seen in the DESCRIPTION section further above you can't set "
+"binary-specific options on the commandline itself nor in configuration files "
+"loaded via the commandline."
+msgstr ""
+"Notare che, come visto nella sezione DESCRIZIONE più in alto, non si possono "
+"impostare opzioni specifiche per un binario dalla riga di comando né nei "
+"file di configurazione caricati tramite la riga di comando"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Directories"
+msgstr "Directory"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Dir::State</literal> section has directories that pertain to "
+"local state information. <literal>lists</literal> is the directory to place "
+"downloaded package lists in and <literal>status</literal> is the name of the "
+"&dpkg; status file. <literal>preferences</literal> is the name of the APT "
+"<filename>preferences</filename> file. <literal>Dir::State</literal> "
+"contains the default directory to prefix on all sub-items if they do not "
+"start with <filename>/</filename> or <filename>./</filename>."
+msgstr ""
+"La sezione <literal>Dir::State</literal> contiene directory che sono "
+"relative a informazioni di stato locali. <literal>lists</literal> è la "
+"directory in cui mettere gli elenchi scaricati dei pacchetti e "
+"<literal>status</literal> è il nome del file di stato di &dpkg;. "
+"<literal>preferences</literal> è il nome del file <filename>preferences</"
+"filename> di APT. <literal>Dir::State</literal> contiene la directory "
+"predefinita da anteporre a tutte le sottovoci che non iniziano con "
+"<filename>/</filename> o <filename>./</filename>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Dir::Cache</literal> contains locations pertaining to local cache "
+"information, such as the two package caches <literal>srcpkgcache</literal> "
+"and <literal>pkgcache</literal> as well as the location to place downloaded "
+"archives, <literal>Dir::Cache::archives</literal>. Generation of caches can "
+"be turned off by setting <literal>pkgcache</literal> or "
+"<literal>srcpkgcache</literal> to <literal>\"\"</literal>. This will slow "
+"down startup but save disk space. It is probably preferable to turn off the "
+"pkgcache rather than the srcpkgcache. Like <literal>Dir::State</literal> "
+"the default directory is contained in <literal>Dir::Cache</literal>"
+msgstr ""
+"<literal>Dir::Cache</literal> contiene le posizioni relative alle "
+"informazioni della cache locale, come le due cache dei pacchetti "
+"<literal>srcpkgcache</literal> e <literal>pkgcache</literal>, così come la "
+"posizione in cui mettere gli archivi scaricati: <literal>Dir::Cache::"
+"archives</literal>. La generazione delle cache può essere disattivata "
+"impostando <literal>pkgcache</literal> o <literal>srcpkgcache</literal> a "
+"<literal>\"\"</literal>. Questo rallenta l'avvio ma fa risparmiare spazio su "
+"disco. È probabilmente preferibile disattivare pkgcache piuttosto che "
+"srcpkgcache. Come per <literal>Dir::State</literal>, la directory "
+"predefinita è contenuta in <literal>Dir::Cache</literal>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Dir::Etc</literal> contains the location of configuration files, "
+"<literal>sourcelist</literal> gives the location of the sourcelist and "
+"<literal>main</literal> is the default configuration file (setting has no "
+"effect, unless it is done from the config file specified by "
+"<envar>APT_CONFIG</envar>)."
+msgstr ""
+"<literal>Dir::Etc</literal> contiene la posizione dei file di "
+"configurazione; <literal>sourcelist</literal> fornisce la posizione di "
+"sourcelist e <literal>main</literal> è il file di configurazione predefinito "
+"(l'impostazione non ha effetto, a meno che non venga fatta dal file di "
+"configurazione specificato da <envar>APT_CONFIG</envar>)."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Dir::Parts</literal> setting reads in all the config fragments "
+"in lexical order from the directory specified. After this is done then the "
+"main config file is loaded."
+msgstr ""
+"L'impostazione <literal>Dir::Parts</literal> legge dalla directory "
+"specificata tutti i frammenti di configurazione in ordine lessicale. Al "
+"termine viene caricato il file di configurazione principale."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
+"Bin::Methods</literal> specifies the location of the method handlers and "
+"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
+"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
+"literal> <literal>dpkg-buildpackage</literal> and <literal>apt-cache</"
+"literal> specify the location of the respective programs."
+msgstr ""
+"<literal>Dir::Bin</literal> punta ai programmi binari; <literal>Dir::Bin::"
+"Methods</literal> specifica la posizione dei gestori dei metodi e "
+"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
+"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
+"literal> <literal>dpkg-buildpackage</literal> e <literal>apt-cache</literal> "
+"specificano la posizione dei rispettivi programmi."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The configuration item <literal>RootDir</literal> has a special meaning. If "
+"set, all paths will be relative to <literal>RootDir</literal>, "
+"<emphasis>even paths that are specified absolutely</emphasis>. So, for "
+"instance, if <literal>RootDir</literal> is set to <filename>/tmp/staging</"
+"filename> and <literal>Dir::State::status</literal> is set to <filename>/var/"
+"lib/dpkg/status</filename>, then the status file will be looked up in "
+"<filename>/tmp/staging/var/lib/dpkg/status</filename>. If you want to "
+"prefix only relative paths, set <literal>Dir</literal> instead."
+msgstr ""
+"La voce di configurazione <literal>RootDir</literal> ha un significato "
+"speciale. Se impostata, tutti i percorsi saranno relativi a "
+"<literal>RootDir</literal>, <emphasis>anche i percorsi che sono specificati "
+"in modo assoluto</emphasis>. Perciò, ad esempio, se <literal>RootDir</"
+"literal> è impostata a <filename>/tmp/staging</filename> e <literal>Dir::"
+"State::status</literal> è impostata a <filename>/var/lib/dpkg/status</"
+"filename>, allora il file di stato verrà cercato in <filename>/tmp/staging/"
+"var/lib/dpkg/status</filename>. Se si desidera un prefisso solo per i "
+"percorsi relativi, impostare invece <literal>Dir</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Ignore-Files-Silently</literal> list can be used to specify "
+"which files APT should silently ignore while parsing the files in the "
+"fragment directories. Per default a file which end with <literal>.disabled</"
+"literal>, <literal>~</literal>, <literal>.bak</literal> or <literal>.dpkg-[a-"
+"z]+</literal> is silently ignored. As seen in the last default value these "
+"patterns can use regular expression syntax."
+msgstr ""
+"La lista <literal>Ignore-Files-Silently</literal> può essere usata per "
+"specificare quali file debbano essere ignorati in modo silenzioso da APT "
+"mentre analizza i file nelle directory con i frammenti. In modo predefinito "
+"un file il cui nome termina con <literal>.disabled</literal>, <literal>~</"
+"literal>, <literal>.bak</literal> o <literal>.dpkg-[a-z]+</literal> viene "
+"ignorato in modo silenzioso. Come si vede nell'ultimo valore predefinito "
+"questi modelli possono usare una sintassi con espressioni regolari."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "APT in DSelect"
+msgstr "APT in DSelect"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"When APT is used as a &dselect; method several configuration directives "
+"control the default behavior. These are in the <literal>DSelect</literal> "
+"section."
+msgstr ""
+"Quando APT viene usato come metodo per &dselect; svariate direttive di "
+"configurazione controllano il comportamento predefinito; queste sono nella "
+"sezione <literal>DSelect</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Cache Clean mode; this value may be one of <literal>always</literal>, "
+"<literal>prompt</literal>, <literal>auto</literal>, <literal>pre-auto</"
+"literal> and <literal>never</literal>. <literal>always</literal> and "
+"<literal>prompt</literal> will remove all packages from the cache after "
+"upgrading, <literal>prompt</literal> (the default) does so conditionally. "
+"<literal>auto</literal> removes only those packages which are no longer "
+"downloadable (replaced with a new version for instance). <literal>pre-auto</"
+"literal> performs this action before downloading new packages."
+msgstr ""
+"Modalità di pulizia della cache; i valori permessi sono <literal>always</"
+"literal>, <literal>prompt</literal>, <literal>auto</literal>, <literal>pre-"
+"auto</literal> e <literal>never</literal>. <literal>always</literal> e "
+"<literal>prompt</literal> rimuovono tutti i pacchetti dalla cache dopo ogni "
+"aggiornamento; <literal>prompt</literal> (il valore predefinito) lo fa in "
+"modo condizionato. <literal>auto</literal> rimuove solo quei pacchetti che "
+"non sono più scaricabili (ad esempio perché sostituiti da una nuova "
+"versione). <literal>pre-auto</literal> effettua questa azione prima di "
+"scaricare i nuovi pacchetti."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the install phase."
+msgstr ""
+"Il contenuto di questa variabile è passato come opzioni per la riga di "
+"comando ad &apt-get;, quando questo viene eseguito per la fase di "
+"installazione."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the update phase."
+msgstr ""
+"Il contenuto di questa variabile è passato come opzioni per la riga di "
+"comando ad &apt-get;, quando questo viene eseguito per la fase di "
+"aggiornamento."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"If true the [U]pdate operation in &dselect; will always prompt to continue. "
+"The default is to prompt only on error."
+msgstr ""
+"Se impostato a vero l'operazione [A]ggiorna di &dselect; chiederà sempre "
+"conferma prima di continuare. Il comportamento predefinito è di chiedere "
+"solo in caso di errore."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "How APT calls &dpkg;"
+msgstr "Come APT invoca &dpkg;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Several configuration directives control how APT invokes &dpkg;. These are "
+"in the <literal>DPkg</literal> section."
+msgstr ""
+"Diverse direttive di configurazione controllano il modo in cui APT invoca "
+"&dpkg;; sono nella sezione <literal>DPkg</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of options to pass to &dpkg;. The options must be specified "
+"using the list notation and each list item is passed as a single argument to "
+"&dpkg;."
+msgstr ""
+"Questa è una lista di opzioni da passare a &dpkg;. Le opzioni devono essere "
+"specificate usando la notazione per le liste e ogni voce nella lista viene "
+"passata a &dpkg; come un singolo argomento."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of shell commands to run before/after invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort."
+msgstr ""
+"Questa è una lista di comandi di shell da eseguire prima/dopo l'invocazione "
+"di &dpkg;. Come <literal>options</literal> deve essere specificata con la "
+"notazione per le liste. I comandi sono invocati in ordine usando <filename>/"
+"bin/sh</filename>; se qualcuno dei comandi fallisce APT terminerà annullando."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of shell commands to run before invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort. APT will pass the filenames of all .deb files it is "
+"going to install to the commands, one per line on the requested file "
+"descriptor, defaulting to standard input."
+msgstr ""
+"Questa è una lista di comandi di shell da eseguire prima di invocare &dpkg;. "
+"Come <literal>options</literal> deve essere specificata con la notazione per "
+"le liste. I comandi sono invocati in ordine usando <filename>/bin/sh</"
+"filename>; se qualcuno dei comandi fallisce APT terminerà annullando. APT "
+"passa i nomi di file di tutti i file .deb che sta per installare ai comandi, "
+"uno per riga sul descrittore di file richiesto, usando in modo predefinito "
+"lo standard input."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Version 2 of this protocol sends more information through the requested file "
+"descriptor: a line with the text <literal>VERSION 2</literal>, the APT "
+"configuration space, and a list of package actions with filename and version "
+"information."
+msgstr ""
+"La versione 2 di questo protocollo invia più informazioni attraverso il "
+"descrittore di file richiesto: una riga con il testo <literal>VERSION 2</"
+"literal>, lo spazio di configurazione di APT e un elenco di azioni di "
+"pacchetto con nome file e informazioni sulle versioni."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each configuration directive line has the form <literal>key=value</"
+"literal>. Special characters (equal signs, newlines, nonprintable "
+"characters, quotation marks, and percent signs in <literal>key</literal> and "
+"newlines, nonprintable characters, and percent signs in <literal>value</"
+"literal>) are %-encoded. Lists are represented by multiple <literal>key::"
+"=value</literal> lines with the same key. The configuration section ends "
+"with a blank line."
+msgstr ""
+"Ogni riga con una direttiva di configurazione ha la forma "
+"<literal>chiave=valore</literal>. I caratteri speciali (segno di uguale, a "
+"capo, caratteri non stampabili, virgolette e segno di percentuale in "
+"<literal>chiave</literal> e a capo, caratteri non stampabili e segno di "
+"percentuale in <literal>valore</literal>) sono codificati con %-valore. Le "
+"liste sono rappresentate da più righe <literal>chiave::=valore</literal> con "
+"la stessa chiave. La sezione di configurazione termina con una riga vuota."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Package action lines consist of five fields in Version 2: old version, "
+#| "direction of version change (&lt; for upgrades, &gt; for downgrades, = "
+#| "for no change), new version, action. The version fields are \"-\" for no "
+#| "version at all (for example when installing a package for the first time; "
+#| "no version is treated as earlier than any real version, so that is an "
+#| "upgrade, indicated as <literal>- &lt; 1.23.4</literal>). The action field "
+#| "is \"**CONFIGURE**\" if the package is being configured, \"**REMOVE**\" "
+#| "if it is being removed, or the filename of a .deb file if it is being "
+#| "unpacked."
+msgid ""
+"Package action lines consist of five fields in Version 2: package name "
+"(without architecture qualification even if foreign), old version, direction "
+"of version change (&lt; for upgrades, &gt; for downgrades, = for no change), "
+"new version, action. The version fields are \"-\" for no version at all (for "
+"example when installing a package for the first time; no version is treated "
+"as earlier than any real version, so that is an upgrade, indicated as "
+"<literal>- &lt; 1.23.4</literal>). The action field is \"**CONFIGURE**\" if "
+"the package is being configured, \"**REMOVE**\" if it is being removed, or "
+"the filename of a .deb file if it is being unpacked."
+msgstr ""
+"Le righe delle azioni di pacchetto sono costituite nella Versione 2 da "
+"cinque campi: vecchia versione, direzione del cambiamento di versione (&lt; "
+"per gli aggiornamenti, &gt; per le retrocessioni a versioni precedenti, = "
+"per nessun cambiamento), nuova versione, azione. I campi di versione sono "
+"«-» per nessuna versione (per esempio quando si installa un pacchetto per la "
+"prima volta; la mancanza di versione viene trattata come precedente a "
+"qualsiasi versione, perciò è un aggiornamento indicato come <literal>- &lt; "
+"1.23.4</literal>). Il campo dell'azione è «**CONFIGURE**» se il pacchetto "
+"viene configurato, «**REMOVE**» se viene rimosso o il nome ddi un file .deb "
+"se viene spacchettato."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"In Version 3 after each version field follows the architecture of this "
+"version, which is \"-\" if there is no version, and a field showing the "
+"MultiArch type \"same\", \"foreign\", \"allowed\" or \"none\". Note that "
+"\"none\" is an incorrect typename which is just kept to remain compatible, "
+"it should be read as \"no\" and users are encouraged to support both."
+msgstr ""
+"Nella Versione 3 ogni campo di versione viene seguito dall'architettura di "
+"questa versione, che è «-» se non c'è versione, e da un campo che mostra il "
+"tipo MultiArch «same», «foreign», «allowed» o «none». Notare che «none» è un "
+"nome di tipo non corretto che viene mantenuto per questioni di compatibilità "
+"e dovrebbe essere letto come «no» e gli utenti sono incoraggiati a "
+"supportarli entrambi."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The version of the protocol to be used for the command "
+"<literal><replaceable>cmd</replaceable></literal> can be chosen by setting "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::Version</"
+"literal> accordingly, the default being version 1. If APT isn't supporting "
+"the requested version it will send the information in the highest version it "
+"has support for instead."
+msgstr ""
+"La versione del protocollo da usare per il comando "
+"<literal><replaceable>cmd</replaceable></literal> può essere scelta "
+"impostando in modo appropriato <literal>DPkg::Tools::options::"
+"<replaceable>cmd</replaceable>::Version</literal>, il cui valore predefinito "
+"è la versione 1. Se APT non supporta la versione richiesta invierà invece "
+"l'informazione nella versione più alta per cui ha il supporto."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The file descriptor to be used to send the information can be requested with "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::InfoFD</"
+"literal> which defaults to <literal>0</literal> for standard input and is "
+"available since version 0.9.11. Support for the option can be detected by "
+"looking for the environment variable <envar>APT_HOOK_INFO_FD</envar> which "
+"contains the number of the used file descriptor as a confirmation."
+msgstr ""
+"Il descrittore di file da usare per inviare le informazioni può essere "
+"richiesto con <literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::"
+"InfoFD</literal> che è in modo predefinito <literal>0</literal> per lo "
+"standard input ed è disponibile a partire dalla versione 0.9.11. Il supporto "
+"per l'opzione può essere controllato guardando la variabile d'ambiente "
+"<envar>APT_HOOK_INFO_FD</envar> che contiene il numero del descrittore di "
+"file usato per conferma."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"APT chdirs to this directory before invoking &dpkg;, the default is "
+"<filename>/</filename>."
+msgstr ""
+"APT cambia la directory attuale in questa prima di invocare &dpkg;; il "
+"valore predefinito è <filename>/</filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"These options are passed to &dpkg-buildpackage; when compiling packages; the "
+"default is to disable signing and produce all binaries."
+msgstr ""
+"Queste opzioni sono passate a &dpkg-buildpackage; quando vengono compilati i "
+"pacchetti; il valore predefinito disabilita la firma e produce tutti i "
+"binari."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "If this option is set APT will call <command>dpkg --configure --pending</"
+#| "command> to let &dpkg; handle all required configurations and triggers. "
+#| "This option is activated automatically per default if the previous option "
+#| "is not set to <literal>all</literal>, but deactivating it could be useful "
+#| "if you want to run APT multiple times in a row - e.g. in an installer. In "
+#| "these sceneries you could deactivate this option in all but the last run."
+msgid ""
+"If this option is set APT will call <command>dpkg --configure --pending</"
+"command> to let &dpkg; handle all required configurations and triggers. This "
+"option is activated by default, but deactivating it could be useful if you "
+"want to run APT multiple times in a row - e.g. in an installer. In this "
+"scenario you could deactivate this option in all but the last run."
+msgstr ""
+"Se questa opzione è impostata, APT invoca <command>dpkg --configure --"
+"pending</command> per lasciare che &dpkg; gestisca tutte le configurazioni e "
+"i trigger necessari. Questa opzione viene attivata automaticamente in modo "
+"predefinito se l'opzione precedente non è impostata a <literal>all</"
+"literal>, ma potrebbe essere utile disattivarla se si desidera eseguire APT "
+"più volte di seguito, ad esempio in un installatore. In uno scenario simile "
+"si può disattivare questa opzione in tutte le esecuzioni tranne l'ultima."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Periodic and Archives options"
+msgstr "Opzioni Periodic e Archives"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups "
+"of options configure behavior of apt periodic updates, which is done by the "
+"<literal>/usr/lib/apt/apt.systemd.daily</literal> script. See the top of "
+"this script for the brief documentation of these options."
+msgstr ""
+"I gruppi di opzioni <literal>APT::Periodic</literal> e <literal>APT::"
+"Archives</literal> configurano il comportamento degli aggiornamenti "
+"periodici di apt, ciò viene fatto attraverso lo script <literal>/etc/cron."
+"daily/apt</literal>. Per una breve documentazione di queste opzioni, vedere "
+"all'inizio dello script."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Debug options"
+msgstr "Opzioni di debug"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Enabling options in the <literal>Debug::</literal> section will cause "
+"debugging information to be sent to the standard error stream of the program "
+"utilizing the <literal>apt</literal> libraries, or enable special program "
+"modes that are primarily useful for debugging the behavior of <literal>apt</"
+"literal>. Most of these options are not interesting to a normal user, but a "
+"few may be:"
+msgstr ""
+"Se si abilitano le opzioni nella sezione <literal>Debug::</literal> verranno "
+"inviate delle informazioni di debug nel flusso dello standard error del "
+"programma usando le librerie <literal>apt</literal>, o verranno abilitate "
+"speciali modalità del programma che sono principalmente utili per far il "
+"debug del comportamento di <literal>apt</literal>. La maggior parte di "
+"queste opzioni non è interessante per l'utente normale, ma alcune potrebbero "
+"esserlo:"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::pkgProblemResolver</literal> enables output about the "
+"decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</"
+"literal>."
+msgstr ""
+"<literal>Debug::pkgProblemResolver</literal> abilita l'output relativo alle "
+"decisioni prese da <literal>dist-upgrade, upgrade, install, remove, purge</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::NoLocking</literal> disables all file locking. This can be "
+"used to run some operations (for instance, <literal>apt-get -s install</"
+"literal>) as a non-root user."
+msgstr ""
+"<literal>Debug::NoLocking</literal> disabilita tutti i lock sui file. Può "
+"essere usato per eseguire alcune operazioni (ad esempio <literal>apt-get -s "
+"install</literal>) come utente non root."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each "
+"time that <literal>apt</literal> invokes &dpkg;."
+msgstr ""
+"<literal>Debug::pkgDPkgPM</literal> stampa l'effettiva riga di comando ogni "
+"volta che <literal>apt</literal> invoca &dpkg;."
+
+#. TODO: provide a
+#. motivating example, except I haven't a clue why you'd want
+#. to do this.
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
+"in CD-ROM IDs."
+msgstr ""
+"<literal>Debug::IdentCdrom</literal> disabilita l'inclusione di dati statfs "
+"negli ID dei CD-ROM."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid "A full list of debugging options to apt follows."
+msgstr "Segue un elenco completo delle opzioni di debug per apt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information related to accessing <literal>cdrom://</literal> sources."
+msgstr ""
+"Stampa informazioni relative all'accesso a fonti <literal>cdrom://</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using FTP."
+msgstr ""
+"Stampa informazioni relative allo scaricamento dei pacchetti usando FTP."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using HTTP."
+msgstr ""
+"Stampa informazioni relative allo scaricamento dei pacchetti usando HTTP."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using HTTPS."
+msgstr ""
+"Stampa informazioni relative allo scaricamento dei pacchetti usando HTTPS."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information related to verifying cryptographic signatures using "
+"<literal>gpg</literal>."
+msgstr ""
+"Stampa informazioni relative alla verifica delle firme di cifratura fatta "
+"usando <literal>gpg</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information about the process of accessing collections of packages "
+"stored on CD-ROMs."
+msgstr ""
+"Produce in output informazioni sul processo di accesso a raccolte di "
+"pacchetti memorizzati su CD-ROM."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Describes the process of resolving build-dependencies in &apt-get;."
+msgstr ""
+"Descrive il processo di risoluzione delle dipendenze di compilazione in &apt-"
+"get;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output each cryptographic hash that is generated by the <literal>apt</"
+"literal> libraries."
+msgstr ""
+"Produce in output ogni hash crittografico che viene generato dalle librerie "
+"<literal>apt</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Do not include information from <literal>statfs</literal>, namely the number "
+"of used and free blocks on the CD-ROM filesystem, when generating an ID for "
+"a CD-ROM."
+msgstr ""
+"Quando viene generato l'ID per un CD-ROM, non include informazioni da "
+"<literal>statfs</literal>, cioè il numero di blocchi usati e liberi sul file "
+"system del CD-ROM."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Disable all file locking. For instance, this will allow two instances of "
+"<quote><literal>apt-get update</literal></quote> to run at the same time."
+msgstr ""
+"Disabilita tutti i lock sui file. Per esempio permette di eseguire due "
+"istanze di <quote><literal>apt-get update</literal></quote> "
+"contemporaneamente."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Log when items are added to or removed from the global download queue."
+msgstr ""
+"Registra nel log quando vengono aggiunte o rimosse voci dalla coda globale "
+"degli scaricamenti."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output status messages and errors related to verifying checksums and "
+"cryptographic signatures of downloaded files."
+msgstr ""
+"Produce in output messaggi di stato ed errori relativi alla verifica dei "
+"codici di controllo e delle firme di cifratura dei file scaricati."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information about downloading and applying package index list diffs, "
+"and errors relating to package index list diffs."
+msgstr ""
+"Produce in output informazioni sullo scaricamento e l'applicazione dei diff "
+"per gli elenchi degli indici dei pacchetti, e gli errori relativi a tali "
+"diff."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information related to patching apt package lists when downloading "
+"index diffs instead of full indices."
+msgstr ""
+"Produce in output informazioni relative all'applicazione di patch agli "
+"elenchi dei pacchetti di apt quando vengono scaricati i diff per gli indici "
+"invece degli indici completi."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Log all interactions with the sub-processes that actually perform downloads."
+msgstr ""
+"Registra nel log tutte le interazioni con i sottoprocessi che effettuano "
+"realmente gli scaricamenti."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Log events related to the automatically-installed status of packages and to "
+"the removal of unused packages."
+msgstr ""
+"Registra nel log gli eventi relativi allo stato di automaticamente "
+"installato dei pacchetti e alla rimozione dei pacchetti non utilizzati."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate debug messages describing which packages are being automatically "
+"installed to resolve dependencies. This corresponds to the initial auto-"
+"install pass performed in, e.g., <literal>apt-get install</literal>, and not "
+"to the full <literal>apt</literal> dependency resolver; see <literal>Debug::"
+"pkgProblemResolver</literal> for that."
+msgstr ""
+"Genera messaggi di debug che descrivono quali pacchetti vengono "
+"automaticamente installati per risolvere delle dipendenze. Corrisponde al "
+"passo iniziale di installazione automatica effettuato, ad esempio, in "
+"<literal>apt-get install</literal> e non all'intero risolutore di dipendenze "
+"di <literal>apt</literal>; per quello vedere <literal>Debug::"
+"pkgProblemResolver</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate debug messages describing which packages are marked as keep/install/"
+"remove while the ProblemResolver does his work. Each addition or deletion "
+"may trigger additional actions; they are shown indented two additional "
+"spaces under the original entry. The format for each line is "
+"<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c -"
+"&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> is "
+"the current version of the package, <literal>d.e.f</literal> is the version "
+"considered for installation and <literal>x.y.z</literal> is a newer version, "
+"but not considered for installation (because of a low pin score). The later "
+"two can be omitted if there is none or if it is the same as the installed "
+"version. <literal>section</literal> is the name of the section the package "
+"appears in."
+msgstr ""
+"Genera messaggi di debug che descrivono quali pacchetto vengono "
+"contrassegnati per essere mantenuti/installati/rimossi mentre il "
+"ProblemResolver fa il suo lavoro. Ogni aggiunta o rimozione può causare "
+"azioni aggiuntive che vengono mostrate con un rientro di due spazi in più "
+"sotto alla voce originale. Il formato per ogni riga è <literal>MarkKeep</"
+"literal>, <literal>MarkDelete</literal> o <literal>MarkInstall</literal> "
+"seguito da <literal>nome-pacchetto &lt;a.b.c -&gt; d.e.f | x.y.z&gt; "
+"(sezione)</literal> dove <literal>a.b.c</literal> è l'attuale versione del "
+"pacchetto, <literal>d.e.f</literal> è la versione presa in considerazione "
+"per l'installazione e <literal>x.y.z</literal> è una versione più recente, "
+"ma non considerata per l'installazione (a causa di un punteggio di pin più "
+"basso). Gli ultimi due possono essere omessi se non esistono o se sono "
+"uguali alla versione installata. <literal>sezione</literal> è il nome della "
+"sezione in cui compare il pacchetto."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"When invoking &dpkg;, output the precise command line with which it is being "
+"invoked, with arguments separated by a single space character."
+msgstr ""
+"Quando invoca &dpkg;, produce in output l'esatta riga di comando usata, con "
+"gli argomenti separati da un singolo carattere di spazio."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output all the data received from &dpkg; on the status file descriptor and "
+"any errors encountered while parsing it."
+msgstr ""
+"Produce in output tutti i dati ricevuti da &dpkg; sul descrittore del file "
+"di stato ed ogni errore incontrato durante la sua analisi."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate a trace of the algorithm that decides the order in which "
+"<literal>apt</literal> should pass packages to &dpkg;."
+msgstr ""
+"Genera un trace dell'algoritmo che decide l'ordine in cui <literal>apt</"
+"literal> deve passare i pacchetti a &dpkg;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output status messages tracing the steps performed when invoking &dpkg;."
+msgstr ""
+"Produce in output messaggi di stato che indicano i passi effettuati "
+"nell'invocazione di &dpkg;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Output the priority of each package list on startup."
+msgstr "Produce in output la priorità di ogni elenco di pacchetti all'avvio."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Trace the execution of the dependency resolver (this applies only to what "
+"happens when a complex dependency problem is encountered)."
+msgstr ""
+"Traccia l'esecuzione del risolutore di dipendenze (questo ha effetto solo "
+"per ciò che accade quando viene incontrato un problema complesso di "
+"dipendenze)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Display a list of all installed packages with their calculated score used by "
+"the pkgProblemResolver. The description of the package is the same as "
+"described in <literal>Debug::pkgDepCache::Marker</literal>"
+msgstr ""
+"Visualizza un elenco di tutti i pacchetti installati con il loro punteggio "
+"calcolato che è usato dal pkgProblemResolver. La descrizione dei pacchetti è "
+"la stessa descritta in <literal>Debug::pkgDepCache::Marker</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information about the vendors read from <filename>/etc/apt/vendors."
+"list</filename>."
+msgstr ""
+"Stampa informazioni sui fornitori lette da <filename>/etc/apt/vendors.list</"
+"filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Display the external commands that are called by apt hooks. This includes e."
+"g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"<literal>APT::Update::{Pre,Post}-Invoke</literal>."
+msgstr ""
+"Visualizza i comandi esterni che sono richiamati dagli hook di apt. Ciò "
+"include ad esempio le opzioni di configurazione <literal>DPkg::{Pre,Post}-"
+"Invoke</literal> o <literal>APT::Update::{Pre,Post}-Invoke</literal>."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml apt-ftparchive.1.xml
+msgid "Examples"
+msgstr "Esempi"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"&configureindex; is a configuration file showing example values for all "
+"possible options."
+msgstr ""
+"&configureindex; è un file di configurazione che mostra valori d'esempio per "
+"tutte le opzioni possibili."
+
+#. ? reading apt.conf
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid "&apt-cache;, &apt-config;, &apt-preferences;."
+msgstr "&apt-cache;, &apt-config;, &apt-preferences;."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt_preferences.5.xml
+msgid "Preference control file for APT"
+msgstr "file di controllo delle preferenze per APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"The APT preferences file <filename>/etc/apt/preferences</filename> and the "
+"fragment files in the <filename>/etc/apt/preferences.d/</filename> folder "
+"can be used to control which versions of packages will be selected for "
+"installation."
+msgstr ""
+"Il file delle preferenze di APT, <filename>/etc/apt/preferences</filename> e "
+"i file frammento nella directory <filename>/etc/apt/preferences.d/</"
+"filename> possono essere usati per controllare quale versione verrà "
+"selezionata per l'installazione."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Several versions of a package may be available for installation when the "
+"&sources-list; file contains references to more than one distribution (for "
+"example, <literal>stable</literal> and <literal>testing</literal>). APT "
+"assigns a priority to each version that is available. Subject to dependency "
+"constraints, <command>apt-get</command> selects the version with the highest "
+"priority for installation. The APT preferences override the priorities that "
+"APT assigns to package versions by default, thus giving the user control "
+"over which one is selected for installation."
+msgstr ""
+"Quando il file &sources-list; contiene riferimenti a più di una "
+"distribuzione, potrebbero essere disponibili per l'installazione diverse "
+"versioni di un pacchetto (ad esempio <literal>stable</literal> e "
+"<literal>testing</literal>). APT assegna una priorità a ciascuna versione "
+"che è disponibile. Tenendo in considerazione i limiti imposti dalle "
+"dipendenze, <command>apt-get</command> seleziona per l'installazione la "
+"versione con la più alta priorità. Le preferenze di APT scavalcano le "
+"priorità che APT assegna in modo predefinito alle versioni dei pacchetti, "
+"dando perciò all'utente il controllo su quale venga selezionata per "
+"l'installazione."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Several instances of the same version of a package may be available when the "
+"&sources-list; file contains references to more than one source. In this "
+"case <command>apt-get</command> downloads the instance listed earliest in "
+"the &sources-list; file. The APT preferences do not affect the choice of "
+"instance, only the choice of version."
+msgstr ""
+"Quando il file &sources-list; contiene riferimenti a più di una fonte, "
+"potrebbero essere disponibili più istanze della stessa versione di un "
+"pacchetto. In questo caso <command>apt-get</command> scarica l'istanza "
+"elencata per prima nel file &sources-list;. Le preferenze di APT non hanno "
+"effetto sulla scelta dell'istanza, ma solo sulla scelta della versione."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Preferences are a strong power in the hands of a system administrator but "
+"they can become also their biggest nightmare if used without care! APT will "
+"not question the preferences, so wrong settings can lead to uninstallable "
+"packages or wrong decisions while upgrading packages. Even more problems "
+"will arise if multiple distribution releases are mixed without a good "
+"understanding of the following paragraphs. Packages included in a specific "
+"release aren't tested in (and therefore don't always work as expected in) "
+"older or newer releases, or together with other packages from different "
+"releases. You have been warned."
+msgstr ""
+"Le preferenze sono uno strumento potente nelle mani di un amministratore di "
+"sistema, ma possono anche diventare il suo incubo peggiore se usate con poca "
+"cautela! APT non mette in dubbio le preferenze scelte, perciò impostazioni "
+"sbagliate possono avere come risultato pacchetti non installabili o "
+"decisioni sbagliate durante l'aggiornamento dei pacchetti. Se vengono "
+"mescolati più rilasci di distribuzione può sorgere un numero ancora più "
+"grande di problemi, se non si sono capiti bene i concetti spiegati nei "
+"prossimi paragrafi. I pacchetti inclusi in uno specifico rilascio non sono "
+"testati (e perciò non sempre funzionano come atteso) in rilasci più vecchi o "
+"più nuovi, o insieme ad altri pacchetti da altri rilasci. Ci si consideri "
+"avvertiti."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Note that the files in the <filename>/etc/apt/preferences.d</filename> "
+"directory are parsed in alphanumeric ascending order and need to obey the "
+"following naming convention: The files have either no or \"<literal>pref</"
+"literal>\" as filename extension and only contain alphanumeric, hyphen (-), "
+"underscore (_) and period (.) characters. Otherwise APT will print a notice "
+"that it has ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
+msgstr ""
+"Notare che i file nella directory <filename>/etc/apt/preferences.d</"
+"filename> vengono analizzati in ordine alfanumerico crescente e i loro nomi "
+"devono conformarsi alle seguenti convenzioni: non devono avere estensione o "
+"avere estensione \"<literal>pref</literal>\", e possono contenere solo "
+"caratteri alfanumerici, trattini (-), trattini bassi (_) e punti (.). In "
+"caso contrario APT stampa un messaggio che informa che un file è stato "
+"ignorato, a meno che tale file non corrisponda ad un modello nell'elenco di "
+"configurazione <literal>Dir::Ignore-Files-Silently</literal>, nel qual caso "
+"viene ignorato in modo silenzioso."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "APT's Default Priority Assignments"
+msgstr "Assegnazioni della priorità predefinite di APT"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "<command>apt-get install -t testing <replaceable>some-package</replaceable></command>\n"
+msgstr "<command>apt-get install -t testing <replaceable>un-pacchetto</replaceable></command>\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "APT::Default-Release \"stable\";\n"
+msgstr "APT::Default-Release \"stable\";\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If there is no preferences file or if there is no entry in the file that "
+"applies to a particular version then the priority assigned to that version "
+"is the priority of the distribution to which that version belongs. It is "
+"possible to single out a distribution, \"the target release\", which "
+"receives a higher priority than other distributions do by default. The "
+"target release can be set on the <command>apt-get</command> command line or "
+"in the APT configuration file <filename>/etc/apt/apt.conf</filename>. Note "
+"that this has precedence over any general priority you set in the <filename>/"
+"etc/apt/preferences</filename> file described later, but not over "
+"specifically pinned packages. For example, <placeholder type="
+"\"programlisting\" id=\"0\"/> <placeholder type=\"programlisting\" id=\"1\"/>"
+msgstr ""
+"Se non c'è alcun file di preferenze o non c'è nel file una voce applicabile "
+"ad una versione particolare, allora la priorità assegnata a quella versione "
+"è la priorità della distribuzione a cui essa appartiene. È possibile "
+"distinguere una distribuzione, il «rilascio obiettivo», che riceve in modo "
+"predefinito una priorità maggiore delle altre distribuzioni. Il rilascio "
+"obiettivo può essere impostato nella riga di comando di <command>apt-get</"
+"command> o nel file di configurazione di APT, <filename>/etc/apt/apt.conf</"
+"filename>. Notare che questa impostazione ha precedenza rispetto a qualsiasi "
+"priorità generale sia stata impostata nel file <filename>/etc/apt/"
+"preferences</filename> descritto in seguito, ma non rispetto a pacchetti per "
+"cui è specificatamente indicato un pin. Per esempio, <placeholder type="
+"\"programlisting\" id=\"0\"/> <placeholder type=\"programlisting\" id=\"1\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If the target release has been specified then APT uses the following "
+"algorithm to set the priorities of the versions of a package. Assign:"
+msgstr ""
+"Se il rilascio obiettivo è stato specificato, allora APT usa il seguente "
+"algoritmo per impostare le priorità delle versioni di un pacchetto. Assegna:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 1"
+msgstr "priorità 1"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"to the versions coming from archives which in their <filename>Release</"
+"filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</"
+"emphasis> as \"ButAutomaticUpgrades: yes\" like the Debian "
+"<literal>experimental</literal> archive."
+msgstr ""
+"alle versioni che provengono da archivi che, nei loro file "
+"<filename>Release</filename>, sono contrassegnati come «NotAutomatic: yes», "
+"ma non come «ButAutomaticUpgrades: yes», come l'archivio Debian "
+"<literal>experimental</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 100"
+msgstr "priorità 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"to the version that is already installed (if any) and to the versions coming "
+"from archives which in their <filename>Release</filename> files are marked "
+"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the Debian "
+"backports archive since <literal>squeeze-backports</literal>."
+msgstr ""
+"alla versione che è già installata (se esiste) e alla versioni che "
+"provengono da archivi che, nei loro file <filename>Release</filename>, sono "
+"contrassegnati come «NotAutomatic: yes» e «ButAutomaticUpgrades: yes», come "
+"l'archivio Debian backports a partire da <literal>squeeze-backports</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 500"
+msgstr "priorità 500"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "to the versions that do not belong to the target release."
+msgstr "alle versioni che non appartengono al rilascio obiettivo."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 990"
+msgstr "priorità 990"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "to the versions that belong to the target release."
+msgstr "alle versioni che appartengono al rilascio obiettivo."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The highest of those priorities whose description matches the version is "
+"assigned to the version."
+msgstr ""
+"Alla versione viene assegnata la più alta di queste priorità la cui "
+"descrizione corrisponde alla versione."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If the target release has not been specified then APT simply assigns "
+"priority 100 to all installed package versions and priority 500 to all "
+"uninstalled package versions, except versions coming from archives which in "
+"their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" "
+"- these versions get the priority 1 or priority 100 if it is additionally "
+"marked as \"ButAutomaticUpgrades: yes\"."
+msgstr ""
+"Se il rilascio obiettivo non è stato specificato, allora APT assegna "
+"semplicemente la priorità 100 a tutte le versioni di pacchetto installate e "
+"la priorità 500 a tutte le versioni di pacchetto non installate, tranne le "
+"versioni che provengono da archivi che, nei loro file <filename>Release</"
+"filename>, sono contrassegnati come «NotAutomatic: yes»; queste ultime "
+"versioni hanno priorità 1, oppure priorità 100 se sono in aggiunta "
+"contrassegnate come «ButAutomaticUpgrades: yes»."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"APT then applies the following rules, listed in order of precedence, to "
+"determine which version of a package to install."
+msgstr ""
+"Per determinare quale versione di un pacchetto installare APT applica poi le "
+"seguenti regole, elencate in ordine di precedenza."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"Never downgrade unless the priority of an available version exceeds 1000. "
+"(\"Downgrading\" is installing a less recent version of a package in place "
+"of a more recent version. Note that none of APT's default priorities "
+"exceeds 1000; such high priorities can only be set in the preferences file. "
+"Note also that downgrading a package can be risky.)"
+msgstr ""
+"Non retrocede mai ad una versione più bassa, a meno che la priorità della "
+"versione disponibile non sia maggiore di 1000. («Retrocedere» significa "
+"installare una versione meno recente di un pacchetto al posto di una più "
+"recente. Notare che nessuna delle priorità predefinite di APT è maggiore di "
+"1000; priorità così alte possono solo essere impostate nel file delle "
+"preferenze. Notare inoltre che retrocedere un pacchetto può essere "
+"rischioso.)"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "Install the highest priority version."
+msgstr "Installa la versione con la priorità più alta."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"If two or more versions have the same priority, install the most recent one "
+"(that is, the one with the higher version number)."
+msgstr ""
+"Se due o più versioni hanno la stessa priorità, installa la versione più "
+"recente (cioè quella con il numero di versione più alto)."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"If two or more versions have the same priority and version number but either "
+"the packages differ in some of their metadata or the <literal>--reinstall</"
+"literal> option is given, install the uninstalled one."
+msgstr ""
+"Se due o più versioni hanno la stessa priorità e lo stesso numero di "
+"versione, ma hanno una qualche differenza in alcuni dei loro metadati, "
+"oppure viene usata l'opzione <literal>--reinstall</literal>, installa quella "
+"non installata."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"In a typical situation, the installed version of a package (priority 100) "
+"is not as recent as one of the versions available from the sources listed in "
+"the &sources-list; file (priority 500 or 990). Then the package will be "
+"upgraded when <command>apt-get install <replaceable>some-package</"
+"replaceable></command> or <command>apt-get upgrade</command> is executed."
+msgstr ""
+"In una situazione tipica, la versione installata di un pacchetto (priorità "
+"100) non è così recente come una delle versioni disponibili dalle fonti "
+"elencate nel file &sources-list; (priorità 500 o 990). Quindi il pacchetto "
+"viene aggiornato quando viene eseguito <command>apt-get install "
+"<replaceable>un-pacchetto</replaceable></command> o <command>apt-get "
+"upgrade</command>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"More rarely, the installed version of a package is <emphasis>more</emphasis> "
+"recent than any of the other available versions. The package will not be "
+"downgraded when <command>apt-get install <replaceable>some-package</"
+"replaceable></command> or <command>apt-get upgrade</command> is executed."
+msgstr ""
+"Più raramente, la versione installata di un pacchetto è <emphasis>più</"
+"emphasis> recente di qualsiasi altra versione disponibile. Il pacchetto non "
+"viene retrocesso quando viene eseguito <command>apt-get install "
+"<replaceable>un-pacchetto</replaceable></command> o <command>apt-get "
+"upgrade</command>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Sometimes the installed version of a package is more recent than the version "
+"belonging to the target release, but not as recent as a version belonging to "
+"some other distribution. Such a package will indeed be upgraded when "
+"<command>apt-get install <replaceable>some-package</replaceable></command> "
+"or <command>apt-get upgrade</command> is executed, because at least "
+"<emphasis>one</emphasis> of the available versions has a higher priority "
+"than the installed version."
+msgstr ""
+"A volte la versione installata di un pacchetto è più recente di quella che "
+"appartiene al rilascio obiettivo, ma non così recente come la versione che "
+"appartiene a qualche altra distribuzione. Un tale pacchetto verrà di fatto "
+"aggiornato quando viene eseguito <command>apt-get install <replaceable>un-"
+"pacchetto</replaceable></command> o <command>apt-get upgrade</command>, "
+"perché almeno <emphasis>una</emphasis> delle versioni disponibili ha una "
+"priorità più alta di quella installata."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "The Effect of APT Preferences"
+msgstr "L'effetto delle preferenze di APT"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The APT preferences file allows the system administrator to control the "
+"assignment of priorities. The file consists of one or more multi-line "
+"records separated by blank lines. Records can have one of two forms, a "
+"specific form and a general form."
+msgstr ""
+"Il file delle preferenze di APT permette all'amministratore di sistema di "
+"controllare l'assegnazione delle priorità. Il file consiste di uno o più "
+"record su più righe, separati da righe vuote. I record possono avere una tra "
+"due forme: una forma specifica e una forma generica."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The specific form assigns a priority (a \"Pin-Priority\") to one or more "
+"specified packages with a specified version or version range. For example, "
+"the following record assigns a high priority to all versions of the "
+"<filename>perl</filename> package whose version number begins with "
+"\"<literal>&good-perl;</literal>\". Multiple packages can be separated by "
+"spaces."
+msgstr ""
+"La forma specifica assegna una priorità (una «Pin-Priority») ad uno o più "
+"pacchetti specifici con una versione o un intervallo di versioni specifici. "
+"Ad esempio, il record seguente assegna una priorità alta a tutte le versioni "
+"del pacchetto <filename>perl</filename> il cui numero di versione inizia con "
+"«<literal>&good-perl;</literal>». Più pacchetti possono essere separati da "
+"spazi."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The general form assigns a priority to all of the package versions in a "
+"given distribution (that is, to all the versions of packages that are listed "
+"in a certain <filename>Release</filename> file) or to all of the package "
+"versions coming from a particular Internet site, as identified by the site's "
+"fully qualified domain name."
+msgstr ""
+"La forma generica assegna una priorità a tutte le versioni di pacchetto in "
+"una data distribuzione (cioè a tutte le versioni dei pacchetti che sono "
+"elencati in un determinato file <filename>Release</filename>) o a tutte le "
+"versioni di pacchetto che provengono da un particolare sito Internet "
+"identificato in base al suo nome di dominio pienamente qualificato."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"This general-form entry in the APT preferences file applies only to groups "
+"of packages. For example, the following record assigns a high priority to "
+"all package versions available from the local site."
+msgstr ""
+"Queste voci in forma generica nel file di preferenze di APT si applicano "
+"solo ai gruppi di pacchetti. Per esempio, il record seguente assegna una "
+"priorità alta a tutte le versioni di pacchetto disponibili dal sito locale."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A note of caution: the keyword used here is \"<literal>origin</literal>\" "
+"which can be used to match a hostname. The following record will assign a "
+"high priority to all versions available from the server identified by the "
+"hostname \"ftp.de.debian.org\""
+msgstr ""
+"Un avvertimento: la parola chiave usata in questo caso è «<literal>origin</"
+"literal>» e può essere usata per indicare un nome host. Il record seguente "
+"assegna una priorità alta a tutte le versioni disponibili dal server "
+"identificato dal nome host «ftp.de.debian.org»"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"This should <emphasis>not</emphasis> be confused with the Origin of a "
+"distribution as specified in a <filename>Release</filename> file. What "
+"follows the \"Origin:\" tag in a <filename>Release</filename> file is not an "
+"Internet address but an author or vendor name, such as \"Debian\" or \"Ximian"
+"\"."
+msgstr ""
+"Questo <emphasis>non</emphasis> deve essere confuso con l'Origine di una "
+"distribuzione come indicata in un file <filename>Release</filename>. Ciò che "
+"segue il tag «Origin:» in un file <filename>Release</filename> non è un "
+"indirizzo Internet, ma un nome di autore o produttore, come «Debian» o "
+"«Ximian»."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a low priority to all package versions "
+"belonging to any distribution whose Archive name is \"<literal>unstable</"
+"literal>\"."
+msgstr ""
+"Il record seguente assegna una priorità bassa a tutte le versioni di "
+"pacchetto che appartengono ad una qualsiasi distribuzione il cui nome di "
+"archivio è «<literal>unstable</literal>»."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any distribution whose Codename is \"<literal>&debian-testing-"
+"codename;</literal>\"."
+msgstr ""
+"Il record seguente assegna una priorità alta a tutte le versioni di "
+"pacchetto che appartengono ad una qualsiasi distribuzione il cui nome in "
+"codice è «<literal>&debian-testing-codename;</literal>»."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+msgstr ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any release whose Archive name is \"<literal>stable</literal>\" "
+"and whose release Version number is \"<literal>&debian-stable-version;</"
+"literal>\"."
+msgstr ""
+"Il record seguente assegna una priorità alta a tutte le versioni di "
+"pacchetto che appartengono ad un qualsiasi rilascio il cui nome di archivio "
+"è «<literal>stable</literal>» e il cui numero di versione del rilascio è "
+"«<literal>&debian-stable-version;</literal>»."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The effect of the comma operator is similar to an \"and\" in logic: All "
+"conditions must be satisfied for the pin to match. There is one exception: "
+"For any type of condition (such as two \"a\" conditions), only the last such "
+"condition is checked."
+msgstr ""
+"L'effetto dell'operatore virgola è simile ad un «AND» nella logica: tutte le "
+"condizioni devono essere soddisfatte affinche il pin faccia corrispondenza. "
+"Esiste una sola eccezione: per ciascun tipo di condizione (come due "
+"condizioni «a»), solo l'ultima di queste condizioni viene controllata."
+
+# &glob; è rimpiazzato da "glob(7)"
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Regular expressions and &glob; syntax"
+msgstr "Sintassi per le espressioni regolari e &glob;"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"APT also supports pinning by &glob; expressions, and regular expressions "
+"surrounded by slashes. For example, the following example assigns the "
+"priority 500 to all packages from experimental where the name starts with "
+"gnome (as a &glob;-like expression) or contains the word kde (as a POSIX "
+"extended regular expression surrounded by slashes)."
+msgstr ""
+"APT permette anche di impostare priorità di pin usando espressioni &glob; ed "
+"espressioni regolari racchiuse tra sbarre («/»). L'esempio seguente assegna, "
+"ad esempio, la priorità 500 a tutti i pacchetti da experimental il cui nome "
+"inizia con gnome (indicato con un'espressione in stile &glob;) oppure "
+"contiene la parola kde (indicato in forma di espressione regolare estesa "
+"POSIX racchiusa tra sbarre)."
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+msgstr ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The rule for those expressions is that they can occur anywhere where a "
+"string can occur. Thus, the following pin assigns the priority 990 to all "
+"packages from a release starting with &ubuntu-codename;."
+msgstr ""
+"Di norma queste espressioni possono essere utilizzate ovunque c'è una "
+"stringa. Perciò il pin seguente assegna la priorità 990 a tutti i pacchetti "
+"provenienti da un rilascio il cui nome inizia con &ubuntu-codename;."
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+msgstr ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If a regular expression occurs in a <literal>Package</literal> field, the "
+"behavior is the same as if this regular expression were replaced with a list "
+"of all package names it matches. It is undecided whether this will change in "
+"the future; thus you should always list wild-card pins first, so later "
+"specific pins override it. The pattern \"<literal>*</literal>\" in a "
+"Package field is not considered a &glob; expression in itself."
+msgstr ""
+"Se un'espressione regolare viene usata in un campo <literal>Package</"
+"literal>, il comportamento è equivalente a quello che si otterrebbe se "
+"l'espressione regolare fosse sostituita da un elenco di tutti i nomi di "
+"pacchetto a cui corrisponde. Non è chiaro se questo comportamento verrà "
+"modificato in futuro; perciò si dovrebbero sempre indicare per primi i pin "
+"con caratteri jolly, in modo che i pin specifici successivi abbiano "
+"precedenza su di essi. Il modello «<literal>*</literal>» in un campo Package "
+"non viene considerato come un'espressione &glob;."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "How APT Interprets Priorities"
+msgstr "Come APT interpreta le priorità"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Priorities (P) assigned in the APT preferences file must be positive or "
+"negative integers. They are interpreted as follows (roughly speaking):"
+msgstr ""
+"Le priorità (P) assegnate nel file delle preferenze di APT devono essere "
+"rappresentate da interi positivi o negativi. Vengono interpretate nel modo "
+"seguente (semplificando le cose):"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P &gt;= 1000"
+msgstr "P &gt;= 1000"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed even if this constitutes a downgrade of the "
+"package"
+msgstr ""
+"causa l'installazione di una versione anche se ciò costituisce una "
+"retrocessione del pacchetto"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "990 &lt;= P &lt; 1000"
+msgstr "990 &lt;= P &lt; 1000"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed even if it does not come from the target "
+"release, unless the installed version is more recent"
+msgstr ""
+"causa l'installazione di una versione anche se non proviene dal rilascio "
+"obiettivo, a meno che la versione installata non sia più recente"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "500 &lt;= P &lt; 990"
+msgstr "500 &lt;= P &lt; 990"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to the target release or the installed version is more recent"
+msgstr ""
+"causa l'installazione di una versione, a meno che non ci sia una versione "
+"disponibile appartenente al rilascio obiettivo o la versione installata non "
+"sia più recente"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "100 &lt;= P &lt; 500"
+msgstr "100 &lt;= P &lt; 500"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to some other distribution or the installed version is more recent"
+msgstr ""
+"causa l'installazione di una versione, a meno che non ci sia una versione "
+"disponibile appartenente ad una qualche altra distribuzione o la versione "
+"installata non sia più recente"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "0 &lt; P &lt; 100"
+msgstr "0 &lt; P &lt; 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed only if there is no installed version of "
+"the package"
+msgstr ""
+"causa l'installazione di una versione solo se nessuna versione del pacchetto "
+"è installata"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P &lt; 0"
+msgstr "P &lt; 0"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "prevents the version from being installed"
+msgstr "impedisce l'installazione della versione"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P = 0"
+msgstr "P = 0"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "has undefined behaviour, do not use it."
+msgstr "ha un comportamento non definito, non usarlo."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The first specific-form record matching an available package version "
+"determines the priority of the package version. Failing that, the priority "
+"of the package is defined as the maximum of all priorities defined by "
+"generic-form records matching the version. Records defined using patterns "
+"in the Pin field other than \"*\" are treated like specific-form records."
+msgstr ""
+"Il primo record in forma specifica, che corrisponde ad una versione di "
+"pacchetto disponibile, determina la priorità della versione del pacchetto. "
+"In caso contrario, la priorità del pacchetto viene definita come il valore "
+"massimo di tutte le priorità definite da record in forma generica che "
+"corrispondono alla versione. I record definiti usando modelli nel campo Pin "
+"diversi da «*» sono trattati come record in forma specifica."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"For example, suppose the APT preferences file contains the three records "
+"presented earlier:"
+msgstr ""
+"Per esempio, supponendo che il file di preferenze di APT contenga i tre "
+"record descritti in precedenza:"
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid "Then:"
+msgstr "Allora:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The most recent available version of the <literal>perl</literal> package "
+"will be installed, so long as that version's version number begins with "
+"\"<literal>&good-perl;</literal>\". If <emphasis>any</emphasis> &good-perl;"
+"* version of <literal>perl</literal> is available and the installed version "
+"is &bad-perl;*, then <literal>perl</literal> will be downgraded."
+msgstr ""
+"Verrà installata la più recente versione disponibile del pacchetto "
+"<literal>perl</literal>, fintanto che il suo numero di versione inizia con "
+"«<literal>&good-perl;</literal>». Se è disponibile <emphasis>una qualsiasi</"
+"emphasis> versione &good-perl;* di <literal>perl</literal> e la versione "
+"installata è &bad-perl;*, allora <literal>perl</literal> verrà retrocesso."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A version of any package other than <literal>perl</literal> that is "
+"available from the local system has priority over other versions, even "
+"versions belonging to the target release."
+msgstr ""
+"Una versione di un qualsiasi pacchetto diverso da <literal>perl</literal> "
+"che sia disponibile sul sistema locale ha la priorità rispetto ad altre "
+"versioni, incluse quelle che appartengono al rilascio obiettivo."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A version of a package whose origin is not the local system but some other "
+"site listed in &sources-list; and which belongs to an <literal>unstable</"
+"literal> distribution is only installed if it is selected for installation "
+"and no version of the package is already installed."
+msgstr ""
+"Una versione di un pacchetto la cui origine non sia il sistema locale, ma un "
+"qualche altro sito elencato in &sources-list; e che appartiene ad una "
+"distribuzione <literal>unstable</literal>, viene installata solamente se è "
+"selezionata per l'installazione e nessuna versione del pacchetto è già "
+"installata."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Determination of Package Version and Distribution Properties"
+msgstr ""
+"Determinazione delle proprietà di versione del pacchetto e di distribuzione"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The locations listed in the &sources-list; file should provide "
+"<filename>Packages</filename> and <filename>Release</filename> files to "
+"describe the packages available at that location."
+msgstr ""
+"Le posizioni elencate nel file &sources-list; dovrebbero fornire i file "
+"<filename>Packages</filename> e <filename>Release</filename> che descrivono "
+"i pacchetti disponibili in quelle posizioni."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The <filename>Packages</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable>/"
+"<replaceable>component</replaceable>/<replaceable>arch</replaceable></"
+"filename>: for example, <filename>.../dists/stable/main/binary-i386/"
+"Packages</filename>. It consists of a series of multi-line records, one for "
+"each package available in that directory. Only two lines in each record are "
+"relevant for setting APT priorities:"
+msgstr ""
+"Il file <filename>Packages</filename> si trova normalmente nella directory "
+"<filename>.../dists/<replaceable>nome-dist</replaceable>/"
+"<replaceable>componente</replaceable>/<replaceable>arch</replaceable></"
+"filename>: per esempio, <filename>.../dists/stable/main/binary-i386/"
+"Packages</filename>. È costituito da una serie di record su più righe, uno "
+"per ogni pacchetto disponibile in tale directory. In ciascun record solo due "
+"righe sono rilevanti per l'impostazione delle priorità di APT:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Package:</literal> line"
+msgstr "la riga <literal>Package:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "gives the package name"
+msgstr "indica il nome del pacchetto"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Version:</literal> line"
+msgstr "la riga <literal>Version:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "gives the version number for the named package"
+msgstr "indica il numero di versione per il pacchetto indicato"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The <filename>Release</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable></filename>: for "
+"example, <filename>.../dists/stable/Release</filename>, or <filename>.../"
+"dists/&debian-stable-codename;/Release</filename>. It consists of a single "
+"multi-line record which applies to <emphasis>all</emphasis> of the packages "
+"in the directory tree below its parent. Unlike the <filename>Packages</"
+"filename> file, nearly all of the lines in a <filename>Release</filename> "
+"file are relevant for setting APT priorities:"
+msgstr ""
+"Il file <filename>Release</filename> si trova normalmente nella directory "
+"<filename>.../dists/<replaceable>nome-dist</replaceable></filename>: ad "
+"esempio, <filename>.../dists/stable/Release</filename> o <filename>.../dists/"
+"&debian-stable-codename;/Release</filename>. Consiste di un record su più "
+"righe che si applica a <emphasis>tutti</emphasis> i pacchetti nell'albero di "
+"directory sottostante alla directory genitrice. A differenza di ciò che "
+"avviene per il file <filename>Packages</filename>, quasi tutte le righe in "
+"un file <filename>Release</filename> sono importanti per l'impostazione "
+"delle priorità di APT:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line"
+msgstr "la riga <literal>Archive:</literal> o <literal>Suite:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the archive to which all the packages in the directory tree belong. "
+"For example, the line \"Archive: stable\" or \"Suite: stable\" specifies "
+"that all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file are in a <literal>stable</literal> "
+"archive. Specifying this value in the APT preferences file would require "
+"the line:"
+msgstr ""
+"indica l'archivio a cui appartengono tutti i pacchetti nell'albero di "
+"directory. Per esempio, la riga «Archive: stable» o «Suite: stable» "
+"specifica che tutti i pacchetti nell'albero di directory sottostante la "
+"directory che contiene il file <filename>Release</filename> sono "
+"nell'archivio <literal>stable</literal>. Per specificare questo valore nelle "
+"preferenze di APT si deve usare la riga:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release a=stable\n"
+msgstr "Pin: release a=stable\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Codename:</literal> line"
+msgstr "la riga <literal>Codename:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the codename to which all the packages in the directory tree belong. "
+"For example, the line \"Codename: &debian-testing-codename;\" specifies that "
+"all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file belong to a version named <literal>&debian-"
+"testing-codename;</literal>. Specifying this value in the APT preferences "
+"file would require the line:"
+msgstr ""
+"indica il nome in codice a cui appartengono tutti i pacchetti nell'albero di "
+"directory. Per esempio, la riga «Codename: &debian-testing-codename;» "
+"specifica che tutti i pacchetti nell'albero di directory sottostante la "
+"directory che contiene il file <filename>Release</filename> appartengono ad "
+"una versione chiamata <literal>&debian-testing-codename;</literal>. Per "
+"specificare questo valore nelle preferenze di APT si deve usare la riga:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release n=&debian-testing-codename;\n"
+msgstr "Pin: release n=&debian-testing-codename;\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the release version. For example, the packages in the tree might "
+"belong to Debian release version &debian-stable-version;. Note that there "
+"is normally no version number for the <literal>testing</literal> and "
+"<literal>unstable</literal> distributions because they have not been "
+"released yet. Specifying this in the APT preferences file would require one "
+"of the following lines."
+msgstr ""
+"indica la versione del rilascio. Per esempio, i pacchetti nell'albero "
+"potrebbero appartenere alla versione &debian-stable-version; del rilascio "
+"Debian. Notare che normalmente non esiste un numero di versione per le "
+"distribuzioni <literal>testing</literal> e <literal>unstable</literal>, "
+"perché non sono ancora state rilasciate. Per specificare questo valore nelle "
+"preferenze di APT si deve usare una delle seguenti righe:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+msgstr ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Component:</literal> line"
+msgstr "la riga<literal>Component:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the licensing component associated with the packages in the directory "
+"tree of the <filename>Release</filename> file. For example, the line "
+"\"Component: main\" specifies that all the packages in the directory tree "
+"are from the <literal>main</literal> component, which entails that they are "
+"licensed under terms listed in the Debian Free Software Guidelines. "
+"Specifying this component in the APT preferences file would require the line:"
+msgstr ""
+"indica le componenti con le varie licenze associate ai pacchetti nell'albero "
+"di directory del file <filename>Release</filename>. Per esempio, la riga "
+"«Component: main» specifica che tutti i pacchetti nell'albero di directory "
+"provengono dalla componente <literal>main</literal>, e quindi che sono "
+"rilasciati nei termini elencati nelle Linee guida per il Software Libero di "
+"Debian. Per specificare questa componente nelle preferenze di APT si deve "
+"usare la riga:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release c=main\n"
+msgstr "Pin: release c=main\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Origin:</literal> line"
+msgstr "la riga <literal>Origin:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the originator of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is <literal>Debian</"
+"literal>. Specifying this origin in the APT preferences file would require "
+"the line:"
+msgstr ""
+"indica l'origine dei pacchetti nell'albero di directory del file "
+"<filename>Release</filename>. Normalmente è <literal>Debian</literal>. Per "
+"specificare questa origine nelle preferenze di APT si deve usare la riga:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release o=Debian\n"
+msgstr "Pin: release o=Debian\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Label:</literal> line"
+msgstr "la riga <literal>Label:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the label of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is <literal>Debian</"
+"literal>. Specifying this label in the APT preferences file would require "
+"the line:"
+msgstr ""
+"indica l'etichetta dei pacchetti nell'albero di directory del file "
+"<filename>Release</filename>. Normalmente è <literal>Debian</literal>. Per "
+"specificare questa etichetta nelle preferenze di APT si deve usare la riga:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release l=Debian\n"
+msgstr "Pin: release l=Debian\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"All of the <filename>Packages</filename> and <filename>Release</filename> "
+"files retrieved from locations listed in the &sources-list; file are stored "
+"in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
+"named by the variable <literal>Dir::State::Lists</literal> in the "
+"<filename>apt.conf</filename> file. For example, the file <filename>debian."
+"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
+"contains the <filename>Release</filename> file retrieved from the site "
+"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
+"architecture files from the <literal>contrib</literal> component of the "
+"<literal>unstable</literal> distribution."
+msgstr ""
+"Tutti i file <filename>Packages</filename> e <filename>Release</filename> "
+"recuperati dalle posizioni elencate nel file &sources-list; sono memorizzati "
+"nella directory <filename>/var/lib/apt/lists</filename> o nel file indicato "
+"dalla variabile <literal>Dir::State::Lists</literal> nel file <filename>apt."
+"conf</filename>. Per esempio, il file <filename>debian.lcs.mit."
+"edu_debian_dists_unstable_contrib_binary-i386_Release</filename> contiene il "
+"file <filename>Release</filename> recuperato dal sito <literal>debian.lcs."
+"mit.edu</literal> per i file dell'architettura <literal>binary-i386</"
+"literal> nella componente <literal>contrib</literal> della distribuzione "
+"<literal>unstable</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Optional Lines in an APT Preferences Record"
+msgstr "Righe opzionali in un record delle preferenze di APT"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Each record in the APT preferences file can optionally begin with one or "
+"more lines beginning with the word <literal>Explanation:</literal>. This "
+"provides a place for comments."
+msgstr ""
+"Ogni record nel file delle preferenze di APT può iniziare opzionalmente con "
+"una o più righe che cominciano con la parola <literal>Explanation:</"
+"literal>. Ciò fornisce un posto dove mettere commenti."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking Stable"
+msgstr "Seguire Stable in modo continuativo"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated\n"
+"Explanation: package versions other than those in the stable distro\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Explanation: Disinstallare o non installare ogni versione di\n"
+"Explanation: pacchetto originata da Debian che non sia nella\n"
+"Explanation: distribuzione stable\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"<literal>stable</literal> distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> "
+"distributions. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Il seguente file di preferenze di APT fa sì che APT assegni una priorità più "
+"alta di quella predefinita (500) a tutte le versioni di pacchetto che "
+"appartengono alla distribuzione <literal>stable</literal>, e una priorità "
+"eccezionalmente bassa alle versioni di pacchetto che appartengono alle altre "
+"distribuzioni <literal>Debian</literal>. <placeholder type=\"programlisting"
+"\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"apt-get install <replaceable>package-name</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+msgstr ""
+"apt-get install <replaceable>nome-pacchetto</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>stable</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+"Con un file &sources-list; adatto e il file di preferenze descritto sopra, "
+"uno qualsiasi dei seguenti comandi farà sì che APT aggiorni il sistema alle "
+"versioni più recenti di <literal>stable</literal>. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/testing\n"
+msgstr "apt-get install <replaceable>pacchetto</replaceable>/testing\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>testing</literal> distribution; the package "
+"will not be upgraded again unless this command is given again. <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Il seguente comando farà sì che APT aggiorni il pacchetto specificato alla "
+"versione più recente nella distribuzione <literal>testing</literal>; il "
+"pacchetto non verrà successivamente aggiornato a meno di non usare "
+"nuovamente questo comando. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking Testing or Unstable"
+msgstr "Seguire Testing o Unstable in modo continuativo"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a high priority "
+"to package versions from the <literal>testing</literal> distribution, a "
+"lower priority to package versions from the <literal>unstable</literal> "
+"distribution, and a prohibitively low priority to package versions from "
+"other <literal>Debian</literal> distributions. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Il seguente file di preferenze di APT fa sì che APT assegni una priorità "
+"alta alle versioni di pacchetto nella distribuzione <literal>testing</"
+"literal>, una priorità più bassa alle versioni di pacchetto nella "
+"distribuzione <literal>unstable</literal>, e una priorità eccezionalmente "
+"bassa alle versioni di pacchetto nelle altre distribuzioni <literal>Debian</"
+"literal>. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>testing</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+"Con un file &sources-list; adatto e il file di preferenze descritto sopra, "
+"uno qualsiasi dei seguenti comandi farà sì che APT aggiorni il sistema alle "
+"versioni più recenti di <literal>testing</literal>. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/unstable\n"
+msgstr "apt-get install <replaceable>pacchetto</replaceable>/unstable\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>unstable</literal> distribution. "
+"Thereafter, <command>apt-get upgrade</command> will upgrade the package to "
+"the most recent <literal>testing</literal> version if that is more recent "
+"than the installed version, otherwise, to the most recent <literal>unstable</"
+"literal> version if that is more recent than the installed version. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Il comando seguente farà sì che APT aggiorni il pacchetto specificato alla "
+"più recente versione nella distribuzione <literal>unstable</literal>. "
+"Successivamente, <command>apt-get upgrade</command> aggiornerà il pacchetto "
+"alla versione più recente in <literal>testing</literal>, se è più nuova di "
+"quella installata, altrimenti alla più recente versione in "
+"<literal>unstable</literal> se è più recente di quella installata. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking the evolution of a codename release"
+msgstr "Seguire l'evoluzione di un rilascio in base al nome in codice"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated package versions\n"
+"Explanation: other than those in the distribution codenamed with &debian-testing-codename; or sid\n"
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+"\n"
+"Explanation: Debian unstable is always codenamed with sid\n"
+"Package: *\n"
+"Pin: release n=sid\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Explanation: Disinstallare o non installare qualsiasi versione di pacchetto\n"
+"Explanation: originata da Debian che non sia nella distribuzione con\n"
+"Explanation: nome in codice &debian-testing-codename; o sid\n"
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+"\n"
+"Explanation: Debian unstable ha sempre il nome in codice side\n"
+"Package: *\n"
+"Pin: release n=sid\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"specified codename of a distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> distributions, "
+"codenames and archives. Note that with this APT preference APT will follow "
+"the migration of a release from the archive <literal>testing</literal> to "
+"<literal>stable</literal> and later <literal>oldstable</literal>. If you "
+"want to follow for example the progress in <literal>testing</literal> "
+"notwithstanding the codename changes you should use the example "
+"configurations above. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Il seguente file delle preferenze di APT farà sì che APT assegni una "
+"priorità più alta di quella predefinita (500) a tutte le versioni di "
+"pacchetto che appartengono alla distribuzione con il nome in codice "
+"specificato, e una priorità eccezionalmente bassa alle versioni di pacchetto "
+"che appartengono ad altre distribuzioni, nomi in codice e archivi "
+"<literal>Debian</literal>. Notare che con questa preferenza, APT segue la "
+"migrazione di un rilascio dall'archivio <literal>testing</literal> a "
+"<literal>stable</literal> e successivamente a <literal>oldstable</literal>. "
+"Se si vuole seguire il progresso, ad esempio, di <literal>testing</literal> "
+"indipendentemente dai cambi di nome in codice si devono usare le "
+"configurazioni negli esempi precedenti. <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest version(s) in "
+"the release codenamed with <literal>&debian-testing-codename;</literal>. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Con un file &sources-list; adatto e il file di preferenze descritto sopra, "
+"uno qualsiasi dei seguenti comandi farà sì che APT aggiorni il sistema alle "
+"versioni più recenti nel rilascio con nome in codice <literal>&debian-"
+"testing-codename;</literal>. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/sid\n"
+msgstr "apt-get install <replaceable>pacchetto</replaceable>/sid\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>sid</literal> distribution. Thereafter, "
+"<command>apt-get upgrade</command> will upgrade the package to the most "
+"recent <literal>&debian-testing-codename;</literal> version if that is more "
+"recent than the installed version, otherwise, to the most recent "
+"<literal>sid</literal> version if that is more recent than the installed "
+"version. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Il comando seguente farà sì che APT aggiorni il pacchetto specificato alla "
+"più recente versione nella distribuzione <literal>sid</literal>. "
+"Successivamente, <command>apt-get upgrade</command> aggiornerà il pacchetto "
+"alla versione più recente in <literal>&debian-testing-codename;</literal>, "
+"se è più nuova di quella installata, altrimenti alla più recente versione in "
+"<literal>sid</literal> se è più recente di quella installata. <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: sources.list.5.xml
+msgid "List of configured APT data sources"
+msgstr "elenco delle fonti di dati configurate per APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The source list <filename>/etc/apt/sources.list</filename> and the files "
+"contained in <filename>/etc/apt/sources.list.d/</filename> are designed to "
+"support any number of active sources and a variety of source media. The "
+"files list one source per line (one-line style) or contain multiline stanzas "
+"defining one or more sources per stanza (deb822 style), with the most "
+"preferred source listed first (in case a single version is available from "
+"more than one source). The information available from the configured sources "
+"is acquired by <command>apt-get update</command> (or by an equivalent "
+"command from another APT front-end)."
+msgstr ""
+"L'elenco delle fonti <filename>/etc/apt/sources.list</filename> e i file "
+"contenuti in <filename>/etc/apt/sources.list.d/</filename> sono progettati "
+"per supportare qualsiasi numero di fonti attive e svariati supporti. I file "
+"elencano una fonte per riga (stile a una riga) o contengono sezioni "
+"multiriga che definiscono una o più fonti per sezione (stile deb822), con la "
+"fonte preferita elencata per prima (nel caso in cui una singola versione sia "
+"disponibile da più di una fonte). Le informazioni disponibili dalle fonti "
+"configurate sono acquisite con <command>apt-get update</command> (o con un "
+"comando equivalente in un'altra interfaccia per APT)."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "sources.list.d"
+msgstr "sources.list.d"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The <filename>/etc/apt/sources.list.d</filename> directory provides a way to "
+"add sources.list entries in separate files. Two different file formats are "
+"allowed as described in the next two sections. Filenames need to have "
+"either the extension <filename>.list</filename> or <filename>.sources</"
+"filename> depending on the contained format. The filenames may only contain "
+"letters (a-z and A-Z), digits (0-9), underscore (_), hyphen (-) and period "
+"(.) characters. Otherwise APT will print a notice that it has ignored a "
+"file, unless that file matches a pattern in the <literal>Dir::Ignore-Files-"
+"Silently</literal> configuration list - in which case it will be silently "
+"ignored."
+msgstr ""
+"La directory <filename>/etc/apt/sources.list.d</filename> permette di "
+"aggiungere voci per sources.list in file separati. Sono permessi due formati "
+"di file differenti, come descritto nelle due sezioni seguenti. I nomi dei "
+"file devono terminare con l'estensione <filename>.list</filename> o "
+"<filename>.sources</filename> a seconda del formato contenuto. I nomi di "
+"file possono contenere solamente lettere (a-z e A-Z), cifre (0-9), trattini "
+"bassi (_), trattini (-) e punti (.). In caso contrario APT stampa un "
+"messaggio che notifica che un file è stato ignorato, a meno che il file non "
+"corrisponda ad un modello nell'elenco di configurazione <literal>Dir::Ignore-"
+"Files-Silently</literal>, nel qual caso viene ignorato in modo silenzioso."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "One-Line-Style Format"
+msgstr "Formato con stile a una riga"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Files in this format have the extension <filename>.list</filename>. Each "
+"line specifying a source starts with a type (e.g. <literal>deb-src</"
+"literal>) followed by options and arguments for this type. Individual "
+"entries cannot be continued onto a following line. Empty lines are ignored, "
+"and a <literal>#</literal> character anywhere on a line marks the remainder "
+"of that line as a comment. Consequently an entry can be disabled by "
+"commenting out the entire line. If options should be provided they are "
+"separated by spaces and all of them together are enclosed by square brackets "
+"(<literal>[]</literal>) included in the line after the type separated from "
+"it with a space. If an option allows multiple values these are separated "
+"from each other with a comma (<literal>,</literal>). An option name is "
+"separated from its value(s) by an equals sign (<literal>=</literal>). "
+"Multivalue options also have <literal>-=</literal> and <literal>+=</literal> "
+"as separators, which instead of replacing the default with the given "
+"value(s) modify the default value(s) to remove or include the given values."
+msgstr ""
+"I file in questo formato hanno l'estensione <filename>.list</filename>. Ogni "
+"riga che specifica una fonte inizia con un tipo (es. <literal>deb-src</"
+"literal> seguito da opzioni e argomenti per questo tipo. Voci singole non "
+"possono proseguire su una riga successiva. Le righe vuote sono ignorate e un "
+"carattere <literal>#</literal> in qualunque punto di una riga contrassegna "
+"il resto di tale riga come commento. Di conseguenza una voce può essere "
+"disabilitata commentando l'intera riga. Se devono essere fornite opzioni, "
+"esse sono separate da spazi e tutte insieme sono racchiuse tra parentesi "
+"quadre (<literal>[]</literal>), incluse nella riga dopo il tipo e separate "
+"da esso con uno spazio. Se un'opzione permette più valori, questi sono "
+"separati con una virgola (<literal>,</literal>). Un nome di opzione è "
+"separato dal suo o dai suoi valori da un segno di uguale (<literal>=</"
+"literal>). Opzioni con più valori usano come separatori anche <literal>-=</"
+"literal> e <literal>+=</literal> che, invece di sostituire i valori "
+"predefiniti con quelli specificati, modificano i valori predefiniti per "
+"rimuovere o includere i valori specificati."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This is the traditional format and supported by all apt versions. Note that "
+"not all options as described below are supported by all apt versions. Note "
+"also that some older applications parsing this format on their own might not "
+"expect to encounter options as they were uncommon before the introduction of "
+"multi-architecture support."
+msgstr ""
+"Questo è il formato tradizionale ed è supportato da tutte le versioni di "
+"apt. Notare che non tutte le opzioni come descritte in seguito sono "
+"supportate da tutte le versioni di apt. Notare anche che alcune applicazioni "
+"più vecchie che analizzano questo formato da sole possono non aspettarsi di "
+"incontrare opzioni, dato che erano non comuni prima dell'introduzione del "
+"supporto multiarchitettura."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "deb822-Style Format"
+msgstr "Formato in stile deb822"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Files in this format have the extension <filename>.sources</filename>. The "
+"format is similar in syntax to other files used by Debian and its "
+"derivatives, such as the metadata files that apt will download from the "
+"configured sources or the <filename>debian/control</filename> file in a "
+"Debian source package. Individual entries are separated by an empty line; "
+"additional empty lines are ignored, and a <literal>#</literal> character at "
+"the start of the line marks the entire line as a comment. An entry can hence "
+"be disabled by commenting out each line belonging to the stanza, but it is "
+"usually easier to add the field \"Enabled: no\" to the stanza to disable the "
+"entry. Removing the field or setting it to yes reenables it. Options have "
+"the same syntax as every other field: A fieldname separated by a colon "
+"(<literal>:</literal>) and optionally spaces from its value(s). Note "
+"especially that multiple values are separated by spaces, not by commas as in "
+"the one-line format. Multivalue fields like <literal>Architectures</literal> "
+"also have <literal>Architectures-Add</literal> and <literal>Architectures-"
+"Remove</literal> to modify the default value rather than replacing it."
+msgstr ""
+"I file in questo formato hanno l'estensione <filename>.sources</filename>. "
+"Il formato è simile nella sintassi ad altri file usati in Debian e nelle sue "
+"derivate, come i file dei metadati che apt scarica dalle fonti configurate o "
+"il file <filename>debian/control</filename> in un pacchetto sorgente Debian. "
+"Le singole voci sono separate da una riga vuota; righe vuote aggiuntive sono "
+"ignorate e un carattere <literal>#</literal> all'inizio della riga "
+"contrassegna l'intera riga come un commento. Una voce può quindi essere "
+"disabilitata commentando ogni riga che appartiene alla sezione ma, per "
+"disabilitare la voce, è solitamente più facile aggiungere il campo «Enabled: "
+"no» alla sezione. Rimuovere il campo, o impostarlo a «yes» la riabilita. Le "
+"opzioni hanno la stessa sintassi di ogni altro campo: un nome di campo "
+"separato dai suoi valori con da due punti (<literal>:</literal>) e spazi "
+"opzionali. Notare in particolar modo che valori multipli sono separati da "
+"spazi, non da virgole come nel formato a singola riga. I campi con più "
+"valori, come <literal>Architectures</literal> hanno anche "
+"<literal>Architectures-Add</literal> e <literal>Architectures-Remove</"
+"literal> per modificare il valore predefinito invece di sostituirlo. "
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This is a new format supported by apt itself since version 1.1. Previous "
+"versions ignore such files with a notice message as described earlier. It "
+"is intended to make this format gradually the default format, deprecating "
+"the previously described one-line-style format, as it is easier to create, "
+"extend and modify for humans and machines alike especially if a lot of "
+"sources and/or options are involved. Developers who are working with and/or "
+"parsing apt sources are highly encouraged to add support for this format and "
+"to contact the APT team to coordinate and share this work. Users can freely "
+"adopt this format already, but may encounter problems with software not "
+"supporting the format yet."
+msgstr ""
+"Questo è un nuovo formato supportato da apt stesso a partire dalla versione "
+"1.1. Le versioni precedenti ignorano questo tipo di file con un messaggio di "
+"notifica come descritto in precedenza. L'intenzione è di rendere in modo "
+"graduale questo formato il formato predefinito, rendendo deprecato il "
+"formato con lo stile a singola riga descritto prima, dato che è più facile "
+"da creare, estendere e modificare sia per le persone sia per le macchine, "
+"specialmente se sono coinvolte molte fonti e opzioni. Gli sviluppatori che "
+"lavorano o analizzano fonti di apt sono caldamente incoraggiati ad "
+"aggiungere il supporto per questo formato e a contattare il team di APT per "
+"coordinare e condividere il lavoro. Gli utenti possono già adottare "
+"liberamente questo formato, ma potrebbero incontrare problemi con il "
+"software che non supporta ancora il formato."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "The deb and deb-src Types: General Format"
+msgstr "I tipi deb e deb-src: formato generico"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The <literal>deb</literal> type references a typical two-level Debian "
+"archive, <filename>distribution/component</filename>. The "
+"<literal>distribution</literal> is generally a suite name like "
+"<literal>stable</literal> or <literal>testing</literal> or a codename like "
+"<literal>&debian-stable-codename;</literal> or <literal>&debian-testing-"
+"codename;</literal> while component is one of <literal>main</literal>, "
+"<literal>contrib</literal> or <literal>non-free</literal>. The <literal>deb-"
+"src</literal> type references a Debian distribution's source code in the "
+"same form as the <literal>deb</literal> type. A <literal>deb-src</literal> "
+"line is required to fetch source indexes."
+msgstr ""
+"Il tipo <literal>deb</literal> è un riferimento a un tipico archivio Debian "
+"a due livelli, <filename>distribuzione/componente</filename>. "
+"<literal>distribuzione</literal> è tipicamente un nome di suite come "
+"<literal>stable</literal> o <literal>testing</literal>, oppure un nome in "
+"codice come <literal>&debian-stable-codename;</literal> o <literal>&debian-"
+"testing-codename;</literal>; componente è uno tra <literal>main</literal>, "
+"<literal>contrib</literal> o <literal>non-free</literal>. Il tipo "
+"<literal>deb-src</literal> è un riferimento al codice sorgente di una "
+"distribuzione Debian nella stessa forma di quella del tipo <literal>deb</"
+"literal>. Per recuperare gli indici dei pacchetti sorgente è necessaria una "
+"riga <literal>deb-src</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The format for two one-line-style entries using the <literal>deb</literal> "
+"and <literal>deb-src</literal> types is:"
+msgstr ""
+"Il formato per due voci in stile a singola riga che usano il tipo "
+"<literal>deb</literal> e <literal>deb-src</literal> è:"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]\n"
+"deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]"
+msgstr ""
+"deb [ opzione1=valore1 opzione2=valore2 ] uri suite [componente1] [componente2] [...]\n"
+"deb-src [ opzione1=valore1 opzione2=valore2 ] uri suite [componente1] [componente2] [...]"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+" Types: deb deb-src\n"
+" URIs: uri\n"
+" Suites: suite\n"
+" Components: [component1] [component2] [...]\n"
+" option1: value1\n"
+" option2: value2\n"
+" "
+msgstr ""
+" Types: deb deb-src\n"
+" URIs: uri\n"
+" Suites: suite\n"
+" Components: [componente1] [componente2] [...]\n"
+" opzione1: valore1\n"
+" opzione2: valore2\n"
+" "
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Alternatively the equivalent entry in deb822 style looks like this: "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
+msgstr ""
+"In alternativa la voce equivalente in stile deb822 è simile a questa: "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The URI for the <literal>deb</literal> type must specify the base of the "
+"Debian distribution, from which APT will find the information it needs. "
+"<literal>suite</literal> can specify an exact path, in which case the "
+"components must be omitted and <literal>suite</literal> must end with a "
+"slash (<literal>/</literal>). This is useful for the case when only a "
+"particular sub-directory of the archive denoted by the URI is of interest. "
+"If <literal>suite</literal> does not specify an exact path, at least one "
+"<literal>component</literal> must be present."
+msgstr ""
+"L'URI per il tipo <literal>deb</literal> deve specificare la base della "
+"distribuzione Debian, dalla quale APT troverà le informazioni di cui ha "
+"bisogno. <literal>suite</literal> può specificare un percorso esatto, nel "
+"qual caso le componenti devono essere omesse e <literal>suite</literal> deve "
+"terminare con una sbarra (<literal>/</literal>). Questo è utile nel caso in "
+"cui si è interessati solo a una particolare sottodirectory dell'archivio "
+"indicato dall'URI. Se <literal>suite</literal> non specifica un percorso "
+"esatto, deve essere presente almeno una <literal>componente</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"<literal>suite</literal> may also contain a variable, <literal>$(ARCH)</"
+"literal> which expands to the Debian architecture (such as <literal>amd64</"
+"literal> or <literal>armel</literal>) used on the system. This permits "
+"architecture-independent <filename>sources.list</filename> files to be used. "
+"In general this is only of interest when specifying an exact path; "
+"<literal>APT</literal> will automatically generate a URI with the current "
+"architecture otherwise."
+msgstr ""
+"<literal>suite</literal> può anche contenere una variabile <literal>$(ARCH)</"
+"literal> che viene espansa nell'architettura Debian (come <literal>amd64</"
+"literal> o <literal>armel</literal>) usata nel sistema. Ciò consente di "
+"utilizzare file <filename>sources.list</filename> indipendenti "
+"dall'architettura. In generale questo è interessante solo quando viene "
+"specificato un percorso esatto, altrimenti <literal>APT</literal> genera "
+"automaticamente un URI con l'architettura corrente."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Especially in the one-line-style format since only one distribution can be "
+"specified per line it may be necessary to have multiple lines for the same "
+"URI, if a subset of all available distributions or components at that "
+"location is desired. APT will sort the URI list after it has generated a "
+"complete set internally, and will collapse multiple references to the same "
+"Internet host, for instance, into a single connection, so that it does not "
+"inefficiently establish a connection, close it, do something else, and then "
+"re-establish a connection to that same host. APT also parallelizes "
+"connections to different hosts to more effectively deal with sites with low "
+"bandwidth."
+msgstr ""
+"Specialmente nel formato in stile a singola riga, dato che può essere "
+"specificata solo una distribuzione per riga, può essere necessario avere più "
+"righe per lo stesso URI, se si desidera un sottoinsieme di tutte le "
+"distribuzioni o componenti disponibili in quella posizione. APT ordinerà la "
+"lista degli URI dopo aver generato internamente un insieme completo, e "
+"riunirà i riferimenti multipli, per esempio al medesimo host Internet in una "
+"singola connessione; in questo modo non stabilisce in modo inefficiente una "
+"connessione per poi chiuderla, fare qualcos'altro e quindi ristabilire una "
+"connessione con il medesimo host. APT inoltre parallelizza le connessioni a "
+"host differenti, per gestire in maniera più efficiente i siti con scarsa "
+"larghezza di banda."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"It is important to list sources in order of preference, with the most "
+"preferred source listed first. Typically this will result in sorting by "
+"speed from fastest to slowest (CD-ROM followed by hosts on a local network, "
+"followed by distant Internet hosts, for example)."
+msgstr ""
+"È importante elencare le fonti in ordine di preferenza con la fonte "
+"preferita elencata per prima. Tipicamente ciò viene fatto ordinando per "
+"velocità dalla più veloce alla più lenta (per esempio CD-ROM seguiti da host "
+"in una rete locale, seguiti da host Internet distanti)."
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "&sourceslist-list-format;"
+msgstr "&sourceslist-list-format;"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "&sourceslist-sources-format;"
+msgstr "&sourceslist-sources-format;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"As an example, the sources for your distribution could look like this in one-"
+"line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or like "
+"this in deb822 style format: <placeholder type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+"Come esempio, le fonti per la propria distribuzione potrebbero essere simili "
+"a queste in formato in stile a singola riga: <placeholder type="
+"\"literallayout\" id=\"0\"/> o a queste in formato in stile deb822: "
+"<placeholder type=\"literallayout\" id=\"1\"/>"
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "The deb and deb-src types: Options"
+msgstr "I tipi deb e deb-src: opzioni"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Each source entry can have options specified to modify which source is "
+"accessed and how data is acquired from it. Format, syntax and names of the "
+"options vary between the one-line-style and deb822-style formats as "
+"described, but they both have the same options available. For simplicity we "
+"list the deb822 fieldname and provide the one-line name in brackets. "
+"Remember that besides setting multivalue options explicitly, there is also "
+"the option to modify them based on the default, but we aren't listing those "
+"names explicitly here. Unsupported options are silently ignored by all APT "
+"versions."
+msgstr ""
+"Ogni voce di fonte può avere specificate delle opzioni per modificare a "
+"quale fonte venga fatto l'accesso e come vengano acquisiti i dati da essa. "
+"Il formato, la sintassi e i nomi delle opzioni variano, come descritto, tra "
+"i formati in stile a singola riga e in stile deb822, ma entrambi hanno "
+"disponibili le stesse opzioni. Per semplicità viene elencato il nome del "
+"campo deb822 e viene fornito in nome per la singola riga tra parentesi. "
+"Ricordarsi che oltre a impostare esplicitamente le opzioni multivalore, è "
+"anche possibile modificarle sulla base del loro valore predefinito, ma qui "
+"non vengono esplicitamente elencati questi nomi. Le opzioni non supportate "
+"vengono ignorate silenziosamente da tutte le versioni di APT."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Architectures</option> (<option>arch</option>) is a multivalue "
+"option defining for which architectures information should be downloaded. If "
+"this option isn't set the default is all architectures as defined by the "
+"<option>APT::Architectures</option> config option."
+msgstr ""
+"<option>Architectures</option> (<option>arch</option>) è un'opzione "
+"multivalore che definisce le architetture per le quali scaricare le "
+"informazioni. Se questa opzione non è impostata il valore predefinito è "
+"tutte le architetture come definite dall'opzione di configurazione "
+"<option>APT::Architectures</option>."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Languages</option> (<option>lang</option>) is a multivalue option "
+"defining for which languages information such as translated package "
+"descriptions should be downloaded. If this option isn't set the default is "
+"all languages as defined by the <option>Acquire::Languages</option> config "
+"option."
+msgstr ""
+"<option>Languages</option> (<option>lang</option>) è un'opzione multivalore "
+"che definisce le lingue per cui scaricare informazioni quali le traduzioni "
+"delle descrizioni dei pacchetti. Se questa opzione non è impostata il valore "
+"predefinito è tutte le lingue come definite dall'opzione di configurazione "
+"<option>Acquire::Languages</option>."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "<option>Targets</option> (<option>target</option>) is a multivalue option "
+#| "defining which download targets apt will try to acquire from this source. "
+#| "If not specified, the default set is defined by the <option>Acquire::"
+#| "IndexTargets</option> configuration scope. Additionally, specific "
+#| "targets can be enabled or disabled by using the identifier as field name "
+#| "instead of using this multivalue option."
+msgid ""
+"<option>Targets</option> (<option>target</option>) is a multivalue option "
+"defining which download targets apt will try to acquire from this source. If "
+"not specified, the default set is defined by the <option>Acquire::"
+"IndexTargets</option> configuration scope (targets are specified by their "
+"name in the <literal>Created-By</literal> field). Additionally, targets can "
+"be enabled or disabled by using the <literal>Identifier</literal> field as "
+"an option with a boolean value instead of using this multivalue option."
+msgstr ""
+"<option>Targets</option> (<option>target</option>) è un'opzione multivalore "
+"che definisce quali rilasci obiettivo di scaricamento apt cercherà di "
+"acquisire da questa fonte. Se non specificata, l'insieme predefinito è "
+"definito dall'ambito di configurazione <option>Acquire::IndexTargets</"
+"option>. In aggiunta target specifici possono essere abilitati o "
+"disabilitati usando l'identificatore come nome di campo invece di usare "
+"questa opzione multivalore."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>PDiffs</option> (<option>pdiffs</option>) is a yes/no value which "
+"controls if APT should try to use PDiffs to update old indexes instead of "
+"downloading the new indexes entirely. The value of this option is ignored if "
+"the repository doesn't announce the availability of PDiffs. Defaults to the "
+"value of the option with the same name for a specific index file defined in "
+"the <option>Acquire::IndexTargets</option> scope, which itself defaults to "
+"the value of configuration option <option>Acquire::PDiffs</option> which "
+"defaults to <literal>yes</literal>."
+msgstr ""
+"<option>PDiffs</option> (<option>pdiffs</option>) è un valore «yes»/«no» che "
+"controlla se APT deve cercare di usare i PDiff per aggiornare i vecchi "
+"indici invece di scaricare interamente i nuovi indici. Il valore di questa "
+"opzione viene ignorato se il repository non annuncia la disponibilità dei "
+"Pdiff. In modo predefinito assume il valore dell'opzione omonima per uno "
+"specifico file indice definito nell'ambito <option>Acquire::IndexTargets</"
+"option>, che a sua volta assume in modo predefinito il valore dell'opzione "
+"di configurazione <option>Acquire::PDiffs</option> che assume in modo "
+"predefinito il valore <literal>yes</literal>."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>By-Hash</option> (<option>by-hash</option>) can have the value "
+"<literal>yes</literal>, <literal>no</literal> or <literal>force</literal> "
+"and controls if APT should try to acquire indexes via a URI constructed from "
+"a hashsum of the expected file instead of using the well-known stable "
+"filename of the index. Using this can avoid hashsum mismatches, but requires "
+"a supporting mirror. A <literal>yes</literal> or <literal>no</literal> value "
+"activates/disables the use of this feature if this source indicates support "
+"for it, while <literal>force</literal> will enable the feature regardless of "
+"what the source indicates. Defaults to the value of the option of the same "
+"name for a specific index file defined in the <option>Acquire::IndexTargets</"
+"option> scope, which itself defaults to the value of configuration option "
+"<option>Acquire::By-Hash</option> which defaults to <literal>yes</literal>."
+msgstr ""
+"<option>By-Hash</option> (<option>by-hash</option>) può avere il valore "
+"<literal>yes</literal>, <literal>no</literal> o <literal>force</literal> "
+"edetermina se APT debba cercare di acquisire gli indici attraverso un URI "
+"costruito a partire da una somma hash del file atteso, invece di usare il "
+"ben noto nome file stabile dell'indice. Il suo uso può evitare mancate "
+"corrispondenze delle somme hash, ma richiede un mirror che la supporti. Un "
+"valore <literal>yes</literal> o <literal>no</literal> attiva o disattiva "
+"l'uso di questa funzionalità se la fonte indica che la supporta, mentre "
+"<literal>force</literal> abilita la funzionalità indipendentemente da ciò "
+"che viene indicato dalla fonte. Assume in modo predefinito il valore "
+"dell'opzione omonima per uno specifico file indice definito nell'ambito "
+"<option>Acquire::IndexTargets</option>, che a sua volta assume in modo "
+"predefinito il valore dell'opzione di configurazione <option>Acquire::By-"
+"Hash</option> che assume in modo predefinito il valore <literal>yes</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Furthermore, there are options which if set affect <emphasis>all</emphasis> "
+"sources with the same URI and Suite, so they have to be set on all such "
+"entries and can not be varied between different components. APT will try to "
+"detect and error out on such anomalies."
+msgstr ""
+"Inoltre ci sono opzioni che, se impostate, hanno effetto su <emphasis>tutte</"
+"emphasis> le fonti con gli stessi URI e suite, perciò devono essere "
+"impostate su tutte queste voci e non possono essere cambiate tra le diverse "
+"componenti. APT cerca di rilevare queste anomalie e risolverle."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Allow-Insecure</option> (<option>allow-insecure</option>), "
+"<option>Allow-Weak</option> (<option>allow-weak</option>) and <option>Allow-"
+"Downgrade-To-Insecure</option> (<option>allow-downgrade-to-insecure</"
+"option>) are boolean values which all default to <literal>no</literal>. If "
+"set to <literal>yes</literal> they circumvent parts of &apt-secure; and "
+"should therefore not be used lightly!"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Trusted</option> (<option>trusted</option>) is a tri-state value "
+"which defaults to APT deciding if a source is considered trusted or if "
+"warnings should be raised before e.g. packages are installed from this "
+"source. This option can be used to override that decision. The value "
+"<literal>yes</literal> tells APT always to consider this source as trusted, "
+"even if it doesn't pass authentication checks. It disables parts of &apt-"
+"secure;, and should therefore only be used in a local and trusted context "
+"(if at all) as otherwise security is breached. The value <literal>no</"
+"literal> does the opposite, causing the source to be handled as untrusted "
+"even if the authentication checks passed successfully. The default value "
+"can't be set explicitly."
+msgstr ""
+"<option>Trusted</option> (<option>trusted</option>) è un valore con tre "
+"stati che in modo predefinito lascia che sia APT a decidere se una fonte è "
+"considerata fidata o se debbano essere prodotti degli avvertimenti prima, ad "
+"esempio, che vengano installati pacchetti da questa fonte. Questa opzione "
+"può essere usata per scavalcare tale decisione. Il valore <literal>yes</"
+"literal> dice ad APT di considerare sempre questa fonte come fidata, anche "
+"se non supera i controlli di autenticazione. Disabilita parti di &apt-"
+"secure; e dovrebbe perciò essere usata (se proprio si deve) solamente in un "
+"contesto locale e fidato, dato che altrimenti la sicurezza è compromessa. Il "
+"valore <literal>no</literal> fa l'opposto, facendo sì che la fonte venga "
+"gestita come non fidata anche se i controlli di autenticazione sono stati "
+"superati con successo. Il valore predefinito non può essere impostato "
+"esplicitamente."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "<option>Signed-By</option> (<option>signed-by</option>) is either an "
+#| "absolute path to a keyring file (has to be accessible and readable for "
+#| "the <literal>_apt</literal> user, so ensure everyone has read-permissions "
+#| "on the file) or a fingerprint of a key either in the <filename>trusted."
+#| "gpg</filename> keyring or in one of the keyrings in the <filename>trusted."
+#| "gpg.d/</filename> directory (see <command>apt-key fingerprint</command>). "
+#| "If the option is set, only the key(s) in this keyring or only the key "
+#| "with this fingerprint is used for the &apt-secure; verification of this "
+#| "repository. Otherwise all keys in the trusted keyrings are considered "
+#| "valid signers for this repository."
+msgid ""
+"<option>Signed-By</option> (<option>signed-by</option>) is either an "
+"absolute path to a keyring file (has to be accessible and readable for the "
+"<literal>_apt</literal> user, so ensure everyone has read-permissions on the "
+"file) or one or more fingerprints of keys either in the <filename>trusted."
+"gpg</filename> keyring or in the keyrings in the <filename>trusted.gpg.d/</"
+"filename> directory (see <command>apt-key fingerprint</command>). If the "
+"option is set, only the key(s) in this keyring or only the keys with these "
+"fingerprints are used for the &apt-secure; verification of this repository. "
+"Defaults to the value of the option with the same name if set in the "
+"previously acquired <filename>Release</filename> file. Otherwise all keys "
+"in the trusted keyrings are considered valid signers for this repository."
+msgstr ""
+"<option>Signed-By</option> (<option>signed-by</option>) è un percorso "
+"assoluto ad un file di portachiavi (deve essere accessibile e leggibile "
+"dall'utente <literal>_apt</literal>, perciò assicurarsi che tutti abbiano i "
+"permessi di lettura sul file) oppure una fingerprint di una chiave nel "
+"portachiavi <filename>trusted.gpg</filename> o in uno dei portachiavi nella "
+"directory <filename>trusted.gpg.d/</filename> (vedere <command>apt-key "
+"fingerprint</command>). Se l'opzione è impostata, solo le chiavi in questo "
+"portachiavi oppure solamente la chiave con questa fingerprint vengono usate "
+"per la verifica con &apt-secure; di questo repository. Altrimenti tutte le "
+"chiavi nei portachiavi fidati vengono considerate come firmatari validi per "
+"questo repository."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Check-Valid-Until</option> (<option>check-valid-until</option>) is "
+"a yes/no value which controls if APT should try to detect replay attacks. A "
+"repository creator can declare a time until which the data provided in the "
+"repository should be considered valid, and if this time is reached, but no "
+"new data is provided, the data is considered expired and an error is "
+"raised. Besides increasing security, as a malicious attacker can't send old "
+"data forever to prevent a user from upgrading to a new version, this also "
+"helps users identify mirrors which are no longer updated. However, some "
+"repositories such as historic archives are not updated any more by design, "
+"so this check can be disabled by setting this option to <literal>no</"
+"literal>. Defaults to the value of configuration option <option>Acquire::"
+"Check-Valid-Until</option> which itself defaults to <literal>yes</literal>."
+msgstr ""
+"<option>Check-Valid-Until</option> (<option>check-valid-until</option>) è "
+"un valore «yes»/«no» che determina se APT debba cercare di rilevare "
+"attacchi di tipo replay. Un creatore di un repository può dichiarare una "
+"data fino alla quale i dati forniti nel repository devono essere considerati "
+"validi e, se viene raggiunta questa data ma non sono stati forniti nuovi "
+"dati, i dati sono considerati scaduti e viene generato un errore. Oltre ad "
+"aumentare la sicurezza, dato che un autore di attacchi malintenzionato non "
+"può inviare vecchi dati per sempre per evitare che un utente aggiorni ad una "
+"nuova versione, questo aiuta anche gli utenti ad identificare i mirror che "
+"non vengono più aggiornati. Alcuni repository, tuttavia, come gli archivi "
+"storici non vengono più aggiornati appositamente, perciò questo controllo "
+"può essere disabilitato impostando questa opzione a <literal>no</literal>. "
+"Assume in modo predefinito il valore dell'opzione di configurazione "
+"<option>Acquire::Check-Valid-Until</option> che a sua volta ha come valore "
+"predefinito <literal>yes</literal>."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Valid-Until-Min</option> (<option>valid-until-min</option>) and "
+"<option>Valid-Until-Max</option> (<option>valid-until-max</option>) can be "
+"used to raise or lower the time period in seconds in which the data from "
+"this repository is considered valid. -Max can be especially useful if the "
+"repository provides no Valid-Until field on its Release file to set your own "
+"value, while -Min can be used to increase the valid time on seldom updated "
+"(local) mirrors of a more frequently updated but less accessible archive "
+"(which is in the sources.list as well) instead of disabling the check "
+"entirely. Default to the value of the configuration options "
+"<option>Acquire::Min-ValidTime</option> and <option>Acquire::Max-ValidTime</"
+"option> which are both unset by default."
+msgstr ""
+"<option>Valid-Until-Min</option> (<option>valid-until-min</option>) e "
+"<option>Valid-Until-Max</option> (<option>valid-until-max</option>) possono "
+"essere usate per aumentare o diminuire il periodo di tempo in secondi per il "
+"quale sono considerati validi i dati da questo repository. -Max può essere "
+"particolarmente utile per impostare un proprio valore se il repository non "
+"fornisce un campo Valid-Until nel suo file Release, mentre -Min può essere "
+"usato per aumentare il tempo di validità di mirror (locali) aggiornati "
+"raramente di un archivio aggiornato più frequentemente ma meno raggiungibile "
+"(che è anch'esso nel sources.list) invece di disabilitare completamente il "
+"controllo. I valori assunti in modo predefinito sono quelli delle opzioni di "
+"configurazione <option>Acquire::Min-ValidTime</option> e <option>Acquire::"
+"Max-ValidTime</option> che sono entrambe non impostate in modo predefinito."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "URI Specification"
+msgstr "Specificare URI"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "The currently recognized URI types are:"
+msgstr "I tipi di URI attualmente riconosciuti sono:"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The file scheme allows an arbitrary directory in the file system to be "
+"considered an archive. This is useful for NFS mounts and local mirrors or "
+"archives."
+msgstr ""
+"Il tipo file permette di considerare come un archivio una directory "
+"arbitraria nel file system. È utile per file system NFS montati e mirror o "
+"archivi locali."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The cdrom scheme allows APT to use a local CD-ROM drive with media swapping. "
+"Use the &apt-cdrom; program to create cdrom entries in the source list."
+msgstr ""
+"Il tipo cdrom permette ad APT di usare un'unità CD-ROM locale cambiando i "
+"supporti. Usare il programma &apt-cdrom; per creare voci cdrom nell'elenco "
+"delle fonti."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The http scheme specifies an HTTP server for the archive. If an environment "
+"variable <envar>http_proxy</envar> is set with the format http://server:"
+"port/, the proxy server specified in <envar>http_proxy</envar> will be used. "
+"Users of authenticated HTTP/1.1 proxies may use a string of the format "
+"http://user:pass@server:port/. Note that this is an insecure method of "
+"authentication."
+msgstr ""
+"Il tipo http specifica un server HTTP per l'archivio. Se è impostata una "
+"variabile d'ambiente <envar>http_proxy</envar> con il formato http://server:"
+"porta/, verrà usato il server proxy specificato in <envar>http_proxy</"
+"envar>. Gli utenti con proxy HTTP/1.1 con autenticazione possono usare una "
+"stringa nel formato http://utente:password@server:porta/. Notare che questo "
+"è un metodo di autenticazione non sicuro."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The ftp scheme specifies an FTP server for the archive. APT's FTP behavior "
+"is highly configurable; for more information see the &apt-conf; manual page. "
+"Please note that an FTP proxy can be specified by using the "
+"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
+"HTTP proxy (HTTP proxy servers often understand FTP URLs) using this "
+"environment variable and <emphasis>only</emphasis> this environment "
+"variable. Proxies using HTTP specified in the configuration file will be "
+"ignored."
+msgstr ""
+"Il tipo ftp specifica un server FTP per l'archivio. Il comportamento FTP di "
+"APT è altamente configurabile; per maggiori informazioni vedere la pagina di "
+"manuale &apt-conf;. Notare che è possibile specificare un proxy FTP usando "
+"la variabile d'ambiente <envar>ftp_proxy</envar>. È possibile specificare un "
+"proxy HTTP (i server proxy HTTP spesso gestiscono gli URL FTP) usando questa "
+"e <emphasis>SOLO</emphasis> questa variabile d'ambiente. I proxy che usano "
+"HTTP specificati nel file di configurazione verranno ignorati."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The copy scheme is identical to the file scheme except that packages are "
+"copied into the cache directory instead of used directly at their location. "
+"This is useful for people using removable media to copy files around with "
+"APT."
+msgstr ""
+"Il tipo copy è identico al tipo file tranne per il fatto che i pacchetti "
+"vengono copiati nella directory della cache invece di essere usati "
+"direttamente dalla loro posizione. Ciò è utile per coloro che usano supporti "
+"rimovibili, per copiare i file nelle varie posizioni con APT."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
+"the files as a given user. Prior configuration of rhosts or RSA keys is "
+"recommended. The standard <command>find</command> and <command>dd</command> "
+"commands are used to perform the file transfers from the remote host."
+msgstr ""
+"Il metodo rsh/ssh invoca RSH/SSH per connettersi ad un host remoto e "
+"accedere ai file come un determinato utente. È raccomandato configurare "
+"precedentemente le chiavi RSA o rhosts. Per effettuare i trasferimenti di "
+"file dall'host remoto vengono usati i comandi standard <command>find</"
+"command> e <command>dd</command>."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
+#: sources.list.5.xml
+msgid "adding more recognizable URI types"
+msgstr "aggiungere ulteriori tipi di URI riconoscibili"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"APT can be extended with more methods shipped in other optional packages, "
+"which should follow the naming scheme <package>apt-transport-"
+"<replaceable>method</replaceable></package>. For instance, the APT team "
+"also maintains the package <package>apt-transport-https</package>, which "
+"provides access methods for HTTPS URIs with features similar to the http "
+"method. Methods for using e.g. debtorrent are also available - see &apt-"
+"transport-debtorrent;."
+msgstr ""
+"APT può essere esteso con ulteriori metodi forniti in altri pacchetti "
+"opzionali, i cui nomi devono seguire lo schema <package>apt-transport-"
+"<replaceable>metodo</replaceable></package>. Per esempio, il team di APT "
+"mantiene anche il pacchetto <package>apt-transport-https</package> che "
+"fornisce i metodi di accesso per URI HTTPS con funzionalità simili a quelle "
+"del metodo http. Sono disponibili anche i metodi per usare, ad esempio, "
+"debtorrrent; vedere &apt-transport-debtorrent;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses the archive stored locally (or NFS mounted) at /home/apt/debian for "
+"stable/main, stable/contrib, and stable/non-free."
+msgstr ""
+"Usa l'archivio memorizzato in locale (o montato via NFS) in /home/apt/debian "
+"per stable/main, stable/contrib e stable/non-free."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb file:/home/apt/debian stable main contrib non-free"
+msgstr "deb file:/home/apt/debian stable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: stable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: stable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "As above, except this uses the unstable (development) distribution."
+msgstr ""
+"Come sopra, tranne per il fatto che usa la distribuzione unstable (di "
+"sviluppo)"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb file:/home/apt/debian unstable main contrib non-free"
+msgstr "deb file:/home/apt/debian unstable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "Sources specification for the above."
+msgstr "Indicazione per i sorgenti corrispondente alla precedente."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb-src file:/home/apt/debian unstable main contrib non-free"
+msgstr "deb-src file:/home/apt/debian unstable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb-src\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb-src\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The first line gets package information for the architectures in "
+"<literal>APT::Architectures</literal> while the second always retrieves "
+"<literal>amd64</literal> and <literal>armel</literal>."
+msgstr ""
+"La prima riga ottiene le informazioni sui pacchetti per le architetture in "
+"<literal>APT::Architectures</literal>, mentre la seconda scarica sempre "
+"<literal>amd64</literal> e <literal>armel</literal>."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main"
+msgstr ""
+"deb http://deb.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"\n"
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"Architectures: amd64 armel\n"
+msgstr ""
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"\n"
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"Architectures: amd64 armel\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to access the archive at archive.debian.org, and uses only the "
+"hamm/main area."
+msgstr ""
+"Usa HTTP per accedere all'archivio in archive.debian.org e usa solo l'area "
+"hamm/main."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb http://archive.debian.org/debian-archive hamm main"
+msgstr "deb http://archive.debian.org/debian-archive hamm main"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://archive.debian.org/debian-archive\n"
+"Suites: hamm\n"
+"Components: main"
+msgstr ""
+"Types: deb\n"
+"URIs: http://archive.debian.org/debian-archive\n"
+"Suites: hamm\n"
+"Components: main"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the &debian-stable-codename;/contrib area."
+msgstr ""
+"Usa FTP per accedere all'archivio in ftp.debian.org, nella directory debian "
+"e usa solo l'area &debian-stable-codename;/contrib."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: contrib"
+msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the unstable/contrib area. If this line appears as "
+"well as the one in the previous example in <filename>sources.list</filename> "
+"a single FTP session will be used for both resource lines."
+msgstr ""
+"Usa FTP per accedere all'archivio in ftp.debian.org nella directory debian e "
+"usa solo l'area unstable/contrib. Se in <filename>sources.list</filename> "
+"sono presenti sia questa riga sia quella nell'esempio precedente, verrà "
+"usata una sola sessione FTP per entrambe le righe."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian unstable contrib"
+msgstr "deb ftp://ftp.debian.org/debian unstable contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: unstable\n"
+"Components: contrib"
+msgstr ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: unstable\n"
+"Components: contrib"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+msgstr "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://ftp.tlh.debian.org/universe\n"
+"Suites: unstable/binary-$(ARCH)/"
+msgstr ""
+"Types: deb\n"
+"URIs: http://ftp.tlh.debian.org/universe\n"
+"Suites: unstable/binary-$(ARCH)/"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe "
+"directory, and uses only files found under <filename>unstable/binary-i386</"
+"filename> on i386 machines, <filename>unstable/binary-amd64</filename> on "
+"amd64, and so forth for other supported architectures. [Note this example "
+"only illustrates how to use the substitution variable; official debian "
+"archives are not structured like this] <placeholder type=\"literallayout\" "
+"id=\"0\"/> <placeholder type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+"Usa HTTP per accedere all'archivio in ftp.tlh.debian.org nella directory "
+"universe e usa solo i file che si trovano in <filename>unstable/binary-i386</"
+"filename> sulle macchine i386, <filename>unstable/binary-amd64</filename> su "
+"quelle amd64 e così via per le altre architetture supportate. [Notare che "
+"questo esempio illustra solamente come usare la variabile per la "
+"sostituzione; gli archivi Debian ufficiali non sono strutturati in questo "
+"modo.] <placeholder type=\"literallayout\" id=\"0\"/> <placeholder type="
+"\"literallayout\" id=\"1\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to get binary packages as well as sources from the stable, testing "
+"and unstable suites and the components main and contrib."
+msgstr ""
+"Usa HTTP per ottenere i pacchetti binari, così come quelli sorgenti, dalle "
+"suite stable, testing e unstable e le componenti main e contrib."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian stable main contrib\n"
+"deb-src http://deb.debian.org/debian stable main contrib\n"
+"deb http://deb.debian.org/debian testing main contrib\n"
+"deb-src http://deb.debian.org/debian testing main contrib\n"
+"deb http://deb.debian.org/debian unstable main contrib\n"
+"deb-src http://deb.debian.org/debian unstable main contrib"
+msgstr ""
+"deb http://deb.debian.org/debian stable main contrib\n"
+"deb-src http://deb.debian.org/debian stable main contrib\n"
+"deb http://deb.debian.org/debian testing main contrib\n"
+"deb-src http://deb.debian.org/debian testing main contrib\n"
+"deb http://deb.debian.org/debian unstable main contrib\n"
+"deb-src http://deb.debian.org/debian unstable main contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb deb-src\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: stable testing unstable\n"
+"Components: main contrib\n"
+msgstr ""
+"Types: deb deb-src\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: stable testing unstable\n"
+"Components: main contrib\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "&apt-get;, &apt-conf;, &apt-acquire-additional-files;"
+msgstr "&apt-get;, &apt-conf;, &apt-acquire-additional-files;"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt-extracttemplates.1.xml apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "1"
+msgstr "1"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-extracttemplates.1.xml
+msgid ""
+"Utility to extract <command>debconf</command> config and templates from "
+"Debian packages"
+msgstr ""
+"utilità per estrarre configurazioni e modelli <command>debconf</command> dai "
+"pacchetti Debian"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"<command>apt-extracttemplates</command> will take one or more Debian package "
+"files as input and write out (to a temporary directory) all associated "
+"config scripts and template files. For each passed in package that contains "
+"config scripts and templates, one line of output will be generated in the "
+"format:"
+msgstr ""
+"<command>apt-extracttemplates</command> accetta in input uno o più file di "
+"pacchetti Debian e scrive (in una directory temporanea) tutti gli script di "
+"configurazione e i file template associati. Per ogni pacchetto ricevuto che "
+"contenga script di configurazione e template, verrà generata una riga in "
+"output nel formato:"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid "package version template-file config-script"
+msgstr "pacchetto versione file-template script-di-configurazione"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"template-file and config-script are written to the temporary directory "
+"specified by the <option>-t</option> or <option>--tempdir</option> "
+"(<literal>APT::ExtractTemplates::TempDir</literal>) directory, with "
+"filenames of the form <filename>package.template.XXXXXX</filename> and "
+"<filename>package.config.XXXXXX</filename>"
+msgstr ""
+"file-template e script-di-configurazione sono scritti nella directory "
+"temporanea specificata da <option>-t</option> o <option>--tempdir</option> "
+"(<literal>APT::ExtractTemplates::TempDir</literal>), con i nomi dei file "
+"nella forma <filename>pacchetto.template.XXXXXX</filename> e "
+"<filename>pacchetto.config.XXXXXX</filename>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"Temporary directory in which to write extracted <command>debconf</command> "
+"template files and config scripts. Configuration Item: <literal>APT::"
+"ExtractTemplates::TempDir</literal>"
+msgstr ""
+"Directory temporanea dove scrivere gli script di configurazione e i file "
+"template di <command>debconf</command> estratti. Voce di configurazione: "
+"<literal>APT::ExtractTemplates::TempDir</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"<command>apt-extracttemplates</command> returns zero on normal operation, "
+"decimal 100 on error."
+msgstr ""
+"<command>apt-extracttemplates</command>restituisce zero in caso di "
+"funzionamento normale e il valore decimale 100 in caso di errore."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-sortpkgs.1.xml
+msgid "Utility to sort package index files"
+msgstr "utilità per ordinare i file indice dei pacchetti"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"<command>apt-sortpkgs</command> will take an index file (source index or "
+"package index) and sort the records so that they are ordered by the package "
+"name. It will also sort the internal fields of each record according to the "
+"internal sorting rules."
+msgstr ""
+"<command>apt-sortpkgs</command> accetta un file indice (indice di sorgenti o "
+"di pacchetti) e ordina i record in base al nome del pacchetto. Ordina anche "
+"i campi interni ad ogni record in base alle regole di ordinamento interne."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"All output is sent to standard output; the input must be a seekable file."
+msgstr ""
+"Tutto l'output viene inviato sullo standard output; l'input deve essere un "
+"file leggibile con seek."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"Use source index field ordering. Configuration Item: <literal>APT::"
+"SortPkgs::Source</literal>."
+msgstr ""
+"Usa l'ordinamento dei campi dell'indice dei sorgenti. Voce di "
+"configurazione: <literal>APT::SortPkgs::Source</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"<command>apt-sortpkgs</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+"<command>apt-sortpkgs</command> restituisce zero in caso di funzionamento "
+"normale e il valore decimale 100 in caso di errore."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-ftparchive.1.xml
+msgid "Utility to generate index files"
+msgstr "strumento per generare file indice"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> is the command line tool that generates "
+"the index files that APT uses to access a distribution source. The index "
+"files should be generated on the origin site based on the content of that "
+"site."
+msgstr ""
+"<command>apt-ftparchive</command> è lo strumento a riga di comando che "
+"genera i file indice usati da APT per accedere a una fonte di distribuzione. "
+"I file indice devono essere generati sul sito origine in base al contenuto "
+"di tale sito."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> is a superset of the &dpkg-scanpackages; "
+"program, incorporating its entire functionality via the <literal>packages</"
+"literal> command. It also contains a contents file generator, "
+"<literal>contents</literal>, and an elaborate means to 'script' the "
+"generation process for a complete archive."
+msgstr ""
+"<command>apt-ftparchive</command> è un sovrainsieme del programma &dpkg-"
+"scanpackages; e incorpora tutte le sue funzionalità tramite il comando "
+"<literal>packages</literal>. Inoltre contiene un generatore di file dei "
+"contenuti, <literal>contents</literal>, e un modo elaborato per gestire "
+"tramite script il processo di generazione per un archivio completo."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Internally <command>apt-ftparchive</command> can make use of binary "
+"databases to cache the contents of a .deb file and it does not rely on any "
+"external programs aside from &gzip;. When doing a full generate it "
+"automatically performs file-change checks and builds the desired compressed "
+"output files."
+msgstr ""
+"Internamente <command>apt-ftparchive</command> può far uso di database "
+"binari per tenere in cache il contenuto di un file .deb e non si basa su "
+"programmi esterni all'infuori di &gzip;. Quando genera un archivio completo, "
+"esegue automaticamente un controllo sui file modificati e crea i file "
+"compressi desiderati in uscita."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The packages command generates a package file from a directory tree. It "
+"takes the given directory and recursively searches it for .deb files, "
+"emitting a package record to stdout for each. This command is approximately "
+"equivalent to &dpkg-scanpackages;."
+msgstr ""
+"Il comando packages genera un file dell'indice di pacchetti da un albero di "
+"directory. Prende la directory data e vi ricerca i file .deb ricorsivamente, "
+"emettendo per ciascuno un record sullo stdout. Questo comando è più o meno "
+"equivalente a &dpkg-scanpackages;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The option <option>--db</option> can be used to specify a binary caching DB."
+msgstr ""
+"L'opzione <option>--db</option> può essere usata per specificare un database "
+"binario da usare come cache."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>sources</literal> command generates a source index file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .dsc files, emitting a source record to stdout for each. This command is "
+"approximately equivalent to &dpkg-scansources;."
+msgstr ""
+"Il comando <literal>sources</literal> genera un file indice dei sorgenti da "
+"un albero di directory. Prende la directory data e vi ricerca i file .dsc "
+"ricorsivamente, emettendo per ciascuno un record sullo stdout. Questo "
+"comando è più o meno equivalente a &dpkg-scansources;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"If an override file is specified then a source override file will be looked "
+"for with an extension of .src. The --source-override option can be used to "
+"change the source override file that will be used."
+msgstr ""
+"Se si specifica un file override, allora verrà cercato un file override "
+"sorgente con estensione .src. L'opzione --source-override può essere usata "
+"per cambiare il file override sorgente da usare."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>contents</literal> command generates a contents file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .deb files, and reads the file list from each file. It then sorts and "
+"writes to stdout the list of files matched to packages. Directories are not "
+"written to the output. If multiple packages own the same file then each "
+"package is separated by a comma in the output."
+msgstr ""
+"Il comando <literal>contents</literal> genera un file di contenuti da un "
+"albero di directory. Prende la directory data e vi ricerca i file .deb "
+"ricorsivamente, leggendo l'elenco dei file da ciascun file. Quindi ordina e "
+"scrive sullo stdout l'elenco di file con i corrispondenti pacchetti. Le "
+"directory non vengono scritte sull'output. Se più pacchetti contengono lo "
+"stesso file, ciascun pacchetto è separato da una virgola nell'output."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+#, fuzzy
+#| msgid ""
+#| "The <literal>release</literal> command generates a Release file from a "
+#| "directory tree. It recursively searches the given directory for "
+#| "uncompressed <filename>Packages</filename> and <filename>Sources</"
+#| "filename> files and ones compressed with <command>gzip</command>, "
+#| "<command>bzip2</command> or <command>lzma</command> as well as "
+#| "<filename>Release</filename> and <filename>md5sum.txt</filename> files by "
+#| "default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>). "
+#| "Additional filename patterns can be added by listing them in "
+#| "<literal>APT::FTPArchive::Release::Patterns</literal>. It then writes to "
+#| "stdout a <filename>Release</filename> file containing (by default) an "
+#| "MD5, SHA1, SHA256 and SHA512 digest for each file."
+msgid ""
+"The <literal>release</literal> command generates a Release file from a "
+"directory tree. It recursively searches the given directory for uncompressed "
+"and compressed <filename>Packages</filename>, <filename>Sources</filename>, "
+"<filename>Contents</filename>, <filename>Components</filename> and "
+"<filename>icons</filename> files as well as <filename>Release</filename>, "
+"<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
+"default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>). "
+"Additional filename patterns can be added by listing them in <literal>APT::"
+"FTPArchive::Release::Patterns</literal>. It then writes to stdout a "
+"<filename>Release</filename> file containing (by default) an MD5, SHA1, "
+"SHA256 and SHA512 digest for each file."
+msgstr ""
+"Il comando <literal>release</literal> genera un file Release da un albero di "
+"directory. In modo predefinito cerca ricorsivamente nella directory data i "
+"file <filename>Packages</filename> e <filename>Sources</filename> non "
+"compressi e quelli compressi con <command>gzip</command>, <command>bzip2</"
+"command> o <command>lzma</command>, come anche i file <filename>Release</"
+"filename> e <filename>md5sum.txt</filename> (<literal>APT::FTPArchive::"
+"Release::Default-Patterns</literal>). Si possono aggiungere ulteriori "
+"modelli per i nomi di file elencandoli in <literal>APT::FTPArchive::Release::"
+"Patterns</literal>. Scrive poi sullo stdout un file <filename>Release</"
+"filename> contenente (in modo predefinito) per ogni file un digest MD5, "
+"SHA1, SHA256 e SHA512."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Values for the additional metadata fields in the Release file are taken from "
+"the corresponding variables under <literal>APT::FTPArchive::Release</"
+"literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The "
+"supported fields are <literal>Origin</literal>, <literal>Label</literal>, "
+"<literal>Suite</literal>, <literal>Version</literal>, <literal>Codename</"
+"literal>, <literal>Date</literal>, <literal>NotAutomatic</literal>, "
+"<literal>ButAutomaticUpgrades</literal>, <literal>Acquire-By-Hash</literal>, "
+"<literal>Valid-Until</literal>, <literal>Signed-By</literal>, "
+"<literal>Architectures</literal>, <literal>Components</literal> and "
+"<literal>Description</literal>."
+msgstr ""
+"I valori dei campi di metadati aggiuntivi nel file Release sono presi dalle "
+"variabili corrispondenti sotto <literal>APT::FTPArchive::Release</literal>, "
+"ad esempio <literal>APT::FTPArchive::Release::Origin</literal>. I campi "
+"supportati sono: <literal>Origin</literal>, <literal>Label</literal>, "
+"<literal>Suite</literal>, <literal>Version</literal>, <literal>Codename</"
+"literal>, <literal>Date</literal>, <literal>NotAutomatic</literal>, "
+"<literal>ButAutomaticUpgrades</literal>, <literal>Acquire-By-Hash</literal>, "
+"<literal>Valid-Until</literal>, <literal>Signed-By</literal>, "
+"<literal>Architectures</literal>, <literal>Components</literal>, "
+"<literal>Description</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>generate</literal> command is designed to be runnable from a "
+"cron script and builds indexes according to the given config file. The "
+"config language provides a flexible means of specifying which index files "
+"are built from which directories, as well as providing a simple means of "
+"maintaining the required settings."
+msgstr ""
+"Il comando <literal>generate</literal> è pensato per essere eseguibile da "
+"uno script di cron e costruisce gli indici in base al file di configurazione "
+"fornito. Il linguaggio di configurazione fornisce un mezzo flessibile per "
+"specificare quali file di indice vengano costruiti a partire da quali "
+"directory, oltre a fornire un mezzo semplice per amministrare le "
+"impostazioni desiderate."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>clean</literal> command tidies the databases used by the given "
+"configuration file by removing any records that are no longer necessary."
+msgstr ""
+"Il comando <literal>clean</literal> pulisce i database usati dal file di "
+"configurazione dato, rimuovendo tutti i record non più necessari."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Generate Configuration"
+msgstr "La configurazione di generate"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>generate</literal> command uses a configuration file to "
+"describe the archives that are going to be generated. It follows the typical "
+"ISC configuration format as seen in ISC tools like bind 8 and dhcpd. &apt-"
+"conf; contains a description of the syntax. Note that the generate "
+"configuration is parsed in sectional manner, but &apt-conf; is parsed in a "
+"tree manner. This only effects how the scope tag is handled."
+msgstr ""
+"Il comando <literal>generate</literal> usa un file di configurazione per "
+"descrivere gli archivi da generare. Segue il tipico formato di "
+"configurazione ISC come usato negli strumenti ISC come bind 8 e dhcpd. &apt-"
+"conf; contiene una descrizione della sintassi. Notare che la configurazione "
+"di generate viene letta per sezioni, ma &apt-conf; viene letto ad albero. "
+"Ciò ha effetto soltanto sulla gestione del tag di ambito."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The generate configuration has four separate sections, each described below."
+msgstr ""
+"La configurazione di generate ha quattro sezioni separate, ciascuna delle "
+"quali è descritta in seguito."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Dir</literal> Section"
+msgstr "Sezione <literal>Dir</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Dir</literal> section defines the standard directories needed "
+"to locate the files required during the generation process. These "
+"directories are prepended certain relative paths defined in later sections "
+"to produce a complete an absolute path."
+msgstr ""
+"La sezione <literal>Dir</literal> definisce le directory standard necessarie "
+"per localizzare i file richiesti durante il processo di generazione. Queste "
+"directory vengono fatte precedere da alcuni percorsi relativi definiti nelle "
+"sezioni successive, per produrre un percorso assoluto completo."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the root of the FTP archive, in a standard Debian configuration "
+"this is the directory that contains the <filename>ls-LR</filename> and dist "
+"nodes."
+msgstr ""
+"Specifica la radice dell'archivio FTP; in una configurazione Debian standard "
+"questa è la directory che contiene i nodi <filename>ls-LR</filename> e dist."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the location of the override files."
+msgstr "Specifica la posizione dei file override."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the location of the cache files."
+msgstr "Specifica la posizione dei file cache."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the location of the file list files, if the <literal>FileList</"
+"literal> setting is used below."
+msgstr ""
+"Specifica la posizione dei file con gli elenchi dei file, se viene usata "
+"l'impostazione <literal>FileList</literal> sotto."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Default</literal> Section"
+msgstr "Sezione <literal>Default</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Default</literal> section specifies default values, and "
+"settings that control the operation of the generator. Other sections may "
+"override these defaults with a per-section setting."
+msgstr ""
+"La sezione <literal>Default</literal> specifica i valori predefiniti e le "
+"impostazioni che controllano il funzionamento del generatore. Altre sezioni "
+"possono scavalcare questi valori tramite impostazioni definite per sezione."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+#, fuzzy
+#| msgid ""
+#| "Sets the default compression schemes to use for the package index files. "
+#| "It is a string that contains a space separated list of at least one of: "
+#| "'.' (no compression), 'gzip' and 'bzip2'. The default for all compression "
+#| "schemes is '. gzip'."
+msgid ""
+"Sets the default compression schemes to use for the package index files. It "
+"is a string that contains a space separated list of at least one of the "
+"compressors configured via the <option>APT::Compressor</option> "
+"configuration scope. The default for all compression schemes is '. gzip'."
+msgstr ""
+"Imposta gli schemi di compressione predefiniti da usare per i file indice "
+"dei pacchetti. È una stringa che contiene una lista separata da spazi con "
+"almeno uno fra «.» (nessuna compressione), «gzip» e «bzip2». Il valore "
+"predefinito per tutti gli schemi di compressione è «. gzip»."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default list of file extensions that are package files. This "
+"defaults to '.deb'."
+msgstr ""
+"Imposta la lista predefinita di estensioni di file che contraddistinguono i "
+"file dei pacchetti. Il valore predefinito è «.deb»."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Sources files."
+msgstr ""
+"Simile a <literal>Packages::Compress</literal>, tranne per il fatto che "
+"controlla la compressione dei file Sources."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default list of file extensions that are source files. This "
+"defaults to '.dsc'."
+msgstr ""
+"Imposta la lista predefinita di estensioni che contraddistinguono i file dei "
+"sorgenti. Il valore predefinito è «.dsc»."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Contents files."
+msgstr ""
+"Simile a <literal>Packages::Compress</literal>, tranne per il fatto che "
+"controlla la compressione dei file Contents."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Translation-en master file."
+msgstr ""
+"Simile a <literal>Packages::Compress</literal>, tranne per il fatto che "
+"controlla la compressione del file principale Translation-en."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the number of kilobytes to delink (and replace with hard links) "
+"per run. This is used in conjunction with the per-section <literal>External-"
+"Links</literal> setting."
+msgstr ""
+"Specifica il numero dei kilobyte da scollegare (e sostituire con "
+"collegamenti fisici) per esecuzione. Viene usato insieme all'impostazione "
+"per sezione <literal>External-Links</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the mode of all created index files. It defaults to 0644. All "
+"index files are set to this mode with no regard to the umask."
+msgstr ""
+"Specifica la modalità di tutti i file indice creati. Il valore predefinito è "
+"0644. Tutti i file di indice sono impostati a questa modalità a prescindere "
+"dall'umask."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies whether long descriptions should be included in the "
+"<filename>Packages</filename> file or split out into a master "
+"<filename>Translation-en</filename> file."
+msgstr ""
+"Specifica se le descrizioni lunghe debbano essere incluse nel file "
+"<filename>Packages</filename> o separate in un file <filename>Translation-"
+"en</filename> principale."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>TreeDefault</literal> Section"
+msgstr "Sezione <literal>TreeDefault</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets defaults specific to <literal>Tree</literal> sections. All of these "
+"variables are substitution variables and have the strings $(DIST), "
+"$(SECTION) and $(ARCH) replaced with their respective values."
+msgstr ""
+"Imposta valori predefiniti specifici per le sezioni <literal>Tree</literal>. "
+"Tutte queste variabili sono variabili di sostituzione in cui le stringhe "
+"$(DIST), $(SECTION) e $(ARCH) verranno sostituite dai loro rispettivi valori."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the number of kilobytes of contents files that are generated each day. "
+"The contents files are round-robined so that over several days they will all "
+"be rebuilt."
+msgstr ""
+"Imposta il numero di kilobyte di file Contents che vengono generati ogni "
+"giorno. I file Contents sono ruotati a turno in modo da venire rigenerati "
+"tutti nel giro di alcuni giorni."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Controls the number of days a contents file is allowed to be checked without "
+"changing. If this limit is passed the mtime of the contents file is updated. "
+"This case can occur if the package file is changed in such a way that does "
+"not result in a new contents file [override edit for instance]. A hold off "
+"is allowed in hopes that new .debs will be installed, requiring a new file "
+"anyhow. The default is 10, the units are in days."
+msgstr ""
+"Controlla il numero di giorni durante i quali un file Contents può essere "
+"controllato senza modifiche. Al superamento di questo limite, l'orario mtime "
+"del file Contents viene aggiornato. Questo può succedere se il file Packages "
+"viene modificato in un modo che non ha come risultato un nuovo file Contents "
+"[ad esempio una modifica di override]. È consentito un certo ritardo, nella "
+"speranza che vengano installati nuovi pacchetti .deb, il che richiederebbe "
+"comunque la creazione di un nuovo file. Il valore predefinito è 10, i valori "
+"sono espressi in giorni."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/"
+"$(SECTION)/binary-$(ARCH)/</filename>"
+msgstr ""
+"Imposta la radice dell'albero della directory dei .deb. Il valore "
+"predefinito è <filename>$(DIST)/$(SECTION)/binary-$(ARCH)/</filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the top of the source package directory tree. Defaults to <filename>"
+"$(DIST)/$(SECTION)/source/</filename>"
+msgstr ""
+"Imposta la radice dell'albero della directory dei pacchetti sorgente. Il "
+"valore predefinito è <filename>$(DIST)/$(SECTION)/source/</filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Packages file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"binary-$(ARCH)/Packages</filename>"
+msgstr ""
+"Imposta il file Packages di uscita. Il valore predefinito è <filename>"
+"$(DIST)/$(SECTION)/binary-$(ARCH)/Packages</filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Sources file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"source/Sources</filename>"
+msgstr ""
+"Imposta il file Sources di uscita. Il valore predefinito è <filename>$(DIST)/"
+"$(SECTION)/source/Sources</filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Translation-en master file with the long descriptions if "
+"they should be not included in the Packages file. Defaults to <filename>"
+"$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+msgstr ""
+"Imposta il file Translation-en principale di uscita contenente le "
+"descrizioni lunghe se non devono essere incluse nel file Packages. Il valore "
+"predefinito è <filename>$(DIST)/$(SECTION)/i18n/Translation-en</filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the path prefix that causes a symlink to be considered an internal link "
+"instead of an external link. Defaults to <filename>$(DIST)/$(SECTION)/</"
+"filename>"
+msgstr ""
+"Imposta il prefisso del percorso che fa sì che un collegamento simbolico sia "
+"considerato un collegamento interno invece che esterno. Il valore "
+"predefinito è <filename>$(DIST)/$(SECTION)/</filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Contents file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"Contents-$(ARCH)</filename>. If this setting causes multiple Packages files "
+"to map onto a single Contents file (as is the default) then <command>apt-"
+"ftparchive</command> will integrate those package files together "
+"automatically."
+msgstr ""
+"Imposta il file Contents di uscita. Il valore predefinito è <filename>"
+"$(DIST)/$(SECTION)/Contents-$(ARCH)</filename>. Se questa impostazione fa sì "
+"che più file Packages corrispondano a un solo file Contents (come avviene "
+"con il valore predefinito), allora <command>apt-ftparchive</command> unirà "
+"automaticamente insieme questi file dei pacchetti."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets header file to prepend to the contents output."
+msgstr "Imposta il file di intestazione da anteporre all'output dei contenuti."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the binary cache database to use for this section. Multiple sections "
+"can share the same database."
+msgstr ""
+"Imposta il database per la cache binaria da usare per questa sezione. Lo "
+"stesso database può essere condiviso da più sezioni."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies that instead of walking the directory tree, <command>apt-"
+"ftparchive</command> should read the list of files from the given file. "
+"Relative files names are prefixed with the archive directory."
+msgstr ""
+"Specifica che invece di percorrere l'albero delle directory, <command>apt-"
+"ftparchive</command> deve leggere la lista dei file dal file dato. I nomi "
+"relativi dei file vengono fatti precedere dalla directory archivio."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies that instead of walking the directory tree, <command>apt-"
+"ftparchive</command> should read the list of files from the given file. "
+"Relative files names are prefixed with the archive directory. This is used "
+"when processing source indexes."
+msgstr ""
+"Specifica che invece di percorrere l'albero delle directory, <command>apt-"
+"ftparchive</command> deve leggere la lista dei file dal file dato. I nomi di "
+"file relativi vengono fatti precedere dalla directory archivio. Questa "
+"opzione viene usata quando si elaborano gli indici dei sorgenti."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Tree</literal> Section"
+msgstr "Sezione <literal>Tree</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Tree</literal> section defines a standard Debian file tree "
+"which consists of a base directory, then multiple sections in that base "
+"directory and finally multiple Architectures in each section. The exact "
+"pathing used is defined by the <literal>Directory</literal> substitution "
+"variable."
+msgstr ""
+"La sezione <literal>Tree</literal> definisce un albero di file standard "
+"Debian che consiste in una directory di base, quindi più sezioni in quella "
+"directory di base e infine più architetture in ogni sezione. Gli esatti "
+"percorsi usati sono definiti dalla variabile di sostituzione "
+"<literal>Directory</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Tree</literal> section takes a scope tag which sets the "
+"<literal>$(DIST)</literal> variable and defines the root of the tree (the "
+"path is prefixed by <literal>ArchiveDir</literal>). Typically this is a "
+"setting such as <filename>dists/&debian-stable-codename;</filename>."
+msgstr ""
+"La sezione <literal>Tree</literal> accetta un tag di ambito che imposta la "
+"variabile <literal>$(DIST)</literal> e definisce la radice dell'albero (il "
+"percorso viene fatto precedere da <literal>ArchiveDir</literal>). Di solito "
+"è un'impostazione simile a <filename>dists/&debian-stable-codename;</"
+"filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"All of the settings defined in the <literal>TreeDefault</literal> section "
+"can be used in a <literal>Tree</literal> section as well as three new "
+"variables."
+msgstr ""
+"Tutte le impostazioni definite nella sezione <literal>TreeDefault</literal> "
+"possono essere usate in una sezione <literal>Tree</literal>, oltre a tre "
+"nuove variabili."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid ""
+"for i in Sections do \n"
+" for j in Architectures do\n"
+" Generate for DIST=scope SECTION=i ARCH=j\n"
+" "
+msgstr ""
+"for i in Sections do \n"
+" for j in Architectures do\n"
+" Genera per DIST=ambito SECTION=i ARCH=j\n"
+" "
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"When processing a <literal>Tree</literal> section <command>apt-ftparchive</"
+"command> performs an operation similar to: <placeholder type=\"programlisting"
+"\" id=\"0\"/>"
+msgstr ""
+"Quando elabora una sezione <literal>Tree</literal>, <command>apt-ftparchive</"
+"command> esegue un'operazione simile a: <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is a space separated list of sections which appear under the "
+"distribution; typically this is something like <literal>main contrib non-"
+"free</literal>"
+msgstr ""
+"Questa è una lista di sezioni che appaiono sotto la distribuzione, separate "
+"da spazi; tipicamente è simile a <literal>main contrib non-free</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is a space separated list of all the architectures that appear under "
+"search section. The special architecture 'source' is used to indicate that "
+"this tree has a source archive. The architecture 'all' signals that "
+"architecture specific files like <filename>Packages</filename> should not "
+"include information about architecture <literal>all</literal> packages in "
+"all files as they will be available in a dedicated file."
+msgstr ""
+"Questa è una lista separata da spazi di tutte le architetture che sono "
+"presenti nella sezione ricerca. L'architettura speciale «source» viene usata "
+"per indicare che questo albero ha un archivio sorgente. L'architettura «all» "
+"indica che i file specifici per un'architettura come <filename>Packages</"
+"filename> non dovrebbero includere informazioni sui pacchetti con "
+"architettura <literal>all</literal> in tutti i file, dato che saranno "
+"disponibili in un file dedicato."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the binary override file. The override file contains section, priority "
+"and maintainer address information."
+msgstr ""
+"Imposta il file override binario. Il file override contiene informazioni "
+"sulla sezione, la priorità e l'indirizzo del manutentore."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the source override file. The override file contains section "
+"information."
+msgstr ""
+"Imposta il file override sorgente. Il file override contiene informazioni "
+"sulla sezione."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the binary extra override file."
+msgstr "Imposta il file override binario extra."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the source extra override file."
+msgstr "Imposta il file override sorgente extra."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>BinDirectory</literal> Section"
+msgstr "Sezione <literal>BinDirectory</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>bindirectory</literal> section defines a binary directory tree "
+"with no special structure. The scope tag specifies the location of the "
+"binary directory and the settings are similar to the <literal>Tree</literal> "
+"section with no substitution variables or <literal>Section</"
+"literal><literal>Architecture</literal> settings."
+msgstr ""
+"La sezione <literal>bindirectory</literal> definisce un albero di directory "
+"dei binari senza una struttura speciale. Il tag di ambito specifica la "
+"posizione della directory dei binari e le impostazioni sono simili a quelle "
+"della sezione <literal>Tree</literal> senza variabili di sostituzione o "
+"impostazioni <literal>Section</literal><literal>Architecture</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the Packages file output."
+msgstr "Imposta l'output del file Packages."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the Sources file output. At least one of <literal>Packages</literal> or "
+"<literal>Sources</literal> is required."
+msgstr ""
+"Imposta l'output del file Sources. È obbligatorio almeno uno fra "
+"<literal>Packages</literal> e <literal>Sources</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the Contents file output (optional)."
+msgstr "Imposta l'output del file Contents (opzionale)."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the binary override file."
+msgstr "Imposta il file override binario."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the source override file."
+msgstr "Imposta il file override sorgente."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the cache DB."
+msgstr "Imposta il DB della cache."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Appends a path to all the output paths."
+msgstr "Aggiunge un percorso a tutti i percorsi di uscita."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the file list file."
+msgstr "Specifica il file con l'elenco dei file."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Binary Override File"
+msgstr "Il file override binario"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The binary override file is fully compatible with &dpkg-scanpackages;. It "
+"contains four fields separated by spaces. The first field is the package "
+"name, the second is the priority to force that package to, the third is the "
+"section to force that package to and the final field is the maintainer "
+"permutation field."
+msgstr ""
+"Il file override binario è completamente compatibile con &dpkg-"
+"scanpackages;. Contiene quattro campi separati da spazi. Il primo campo è il "
+"nome del pacchetto, il secondo è la priorità a cui forzare quel pacchetto, "
+"il terzo è la sezione in cui forzare quel pacchetto e l'ultimo campo è il "
+"campo di permutazione del manutentore."
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "old [// oldn]* => new"
+msgstr "vecchio [// vecchio...]* => nuovo"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "new"
+msgstr "nuovo"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The general form of the maintainer field is: <placeholder type="
+"\"literallayout\" id=\"0\"/> or simply, <placeholder type=\"literallayout\" "
+"id=\"1\"/> The first form allows a double-slash separated list of old email "
+"addresses to be specified. If any of those are found then new is substituted "
+"for the maintainer field. The second form unconditionally substitutes the "
+"maintainer field."
+msgstr ""
+"La forma generale del campo manutentore è: <placeholder type=\"literallayout"
+"\" id=\"0\"/> o semplicemente <placeholder type=\"literallayout\" id=\"1\"/"
+">. La prima forma consente di specificare una lista di vecchi indirizzi di "
+"posta elettronica separati da una doppia sbarra. Se qualcuno di essi viene "
+"trovato, allora il campo manutentore viene sostituito con «nuovo». La "
+"seconda forma sostituisce invariabilmente il campo manutentore."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Source Override File"
+msgstr "Il file override sorgente"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The source override file is fully compatible with &dpkg-scansources;. It "
+"contains two fields separated by spaces. The first field is the source "
+"package name, the second is the section to assign it."
+msgstr ""
+"Il file override sorgente è completamente compatibile con &dpkg-"
+"scansources;. Contiene due campi separati da spazi. Il primo campo è il nome "
+"del pacchetto sorgente, il secondo è la sezione a cui assegnarlo."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Extra Override File"
+msgstr "Il file override extra"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The extra override file allows any arbitrary tag to be added or replaced in "
+"the output. It has three columns, the first is the package, the second is "
+"the tag and the remainder of the line is the new value."
+msgstr ""
+"Il file override extra permette di aggiungere o sostituire nell'output un "
+"tag arbitrario. Ha tre colonne: la prima per il pacchetto, la seconda per il "
+"tag e il resto della riga è il nuovo valore."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Generate the given checksum. These options default to on, when turned off "
+"the generated index files will not have the checksum fields where possible. "
+"Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</"
+"replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</"
+"replaceable>::<replaceable>Checksum</replaceable></literal> where "
+"<literal><replaceable>Index</replaceable></literal> can be "
+"<literal>Packages</literal>, <literal>Sources</literal> or <literal>Release</"
+"literal> and <literal><replaceable>Checksum</replaceable></literal> can be "
+"<literal>MD5</literal>, <literal>SHA1</literal>, <literal>SHA256</literal> "
+"or <literal>SHA512</literal>."
+msgstr ""
+"Genera i codici di controllo specificati. Queste opzioni sono abilitate in "
+"modo predefinito; quando vengono disabilitate i file indice non hanno, "
+"quando ciò è possibile, i campi dei codici di controllo. Voci di "
+"configurazione: <literal>APT::FTPArchive::<replaceable>Codice-di-controllo</"
+"replaceable></literal> e <literal>APT::FTPArchive::<replaceable>Indice</"
+"replaceable>::<replaceable>Codice-di-controllo</replaceable></literal> dove "
+"<literal><replaceable>Indice</replaceable></literal> può essere "
+"<literal>Packages</literal>, <literal>Sources</literal> o <literal>Release</"
+"literal> e <literal><replaceable>Codice-di-controllo</replaceable></literal> "
+"può essere <literal>MD5</literal>, <literal>SHA1</literal>, <literal>SHA256</"
+"literal> o <literal>SHA512</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Use a binary caching DB. This has no effect on the generate command. "
+"Configuration Item: <literal>APT::FTPArchive::DB</literal>."
+msgstr ""
+"Usa un DB per la cache binaria. Questo non ha effetto sul comando generate. "
+"Voce di configurazione: <literal>APT::FTPArchive::DB</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+"Silenzioso; produce un output adatto per un file di registro, omettendo gli "
+"indicatori di avanzamento. Ulteriori q produrranno un risultato ancor più "
+"silenzioso, fino a un massimo di 2. È anche possibile usare <option>-q=n</"
+"option> per impostare il livello di silenziosità, scavalcando il file di "
+"configurazione. Voce di configurazione: <literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Perform Delinking. If the <literal>External-Links</literal> setting is used "
+"then this option actually enables delinking of the files. It defaults to on "
+"and can be turned off with <option>--no-delink</option>. Configuration "
+"Item: <literal>APT::FTPArchive::DeLinkAct</literal>."
+msgstr ""
+"Effettua il de-collegamento. Se viene usata l'impostazione <literal>External-"
+"Links</literal> allora questa opzione abilita di fatto il de-collegamento "
+"dei file. È attiva in modo predefinito e può essere disabilitata con "
+"<option>--no-delink</option>. Voce di configurazione: <literal>APT::"
+"FTPArchive::DeLinkAct</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Perform contents generation. When this option is set and package indexes are "
+"being generated with a cache DB then the file listing will also be extracted "
+"and stored in the DB for later use. When using the generate command this "
+"option also allows the creation of any Contents files. The default is on. "
+"Configuration Item: <literal>APT::FTPArchive::Contents</literal>."
+msgstr ""
+"Effettua la generazione dei Contents. Se viene impostata questa opzione e "
+"gli indici dei pacchetti sono generati con un DB della cache, allora anche "
+"l'elenco dei file verrà estratto e memorizzato nel DB per gli usi futuri. "
+"Quando si usa il comando generate questa opzione permette anche la creazione "
+"di qualsiasi file Contents. È attiva in modo predefinito. Voce di "
+"configurazione: <literal>APT::FTPArchive::Contents</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Select the source override file to use with the <literal>sources</literal> "
+"command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</"
+"literal>."
+msgstr ""
+"Seleziona il file override sorgente da usare con il comando "
+"<literal>sources</literal>. Voce di configurazione <literal>APT::FTPArchive::"
+"SourceOverride</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Make the caching databases read only. Configuration Item: <literal>APT::"
+"FTPArchive::ReadOnlyDB</literal>."
+msgstr ""
+"Rende i database delle cache in sola lettura. Voce di configurazione: "
+"<literal>APT::FTPArchive::ReadOnlyDB</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Accept in the <literal>packages</literal> and <literal>contents</literal> "
+"commands only package files matching <literal>*_arch.deb</literal> or "
+"<literal>*_all.deb</literal> instead of all package files in the given "
+"path. Configuration Item: <literal>APT::FTPArchive::Architecture</literal>."
+msgstr ""
+"Accetta per i comandi <literal>packages</literal> e <literal>contents</"
+"literal> solo i file di pacchetto che corrispondono a <literal>*_arch.deb</"
+"literal> o <literal>*_all.deb</literal> invece di tutti i file di pacchetto "
+"nel percorso specificato. Voce di configurazione: <literal>APT::FTPArchive::"
+"Architecture</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"&apt-ftparchive; caches as much as possible of metadata in a cachedb. If "
+"packages are recompiled and/or republished with the same version again, this "
+"will lead to problems as the now outdated cached metadata like size and "
+"checksums will be used. With this option enabled this will no longer happen "
+"as it will be checked if the file was changed. Note that this option is set "
+"to \"<literal>false</literal>\" by default as it is not recommend to upload "
+"multiply versions/builds of a package with the same versionnumber, so in "
+"theory nobody will have these problems and therefore all these extra checks "
+"are useless."
+msgstr ""
+"&apt-ftparchive; memorizza in un database cache il maggior numero possibile "
+"di metadati. Se i pacchetti sono ricompilati o ripubblicati nuovamente con "
+"la stessa versione, questo causa problemi dato che verranno usati dei "
+"metadati in cache, come la dimensione e i codici di controllo, non più "
+"aggiornati. Notare che questa opzione è impostata in modo predefinito a "
+"«<literal>false</literal>» dato che non è raccomandabile caricare più "
+"versioni/compilazioni di un pacchetto con lo stesso numero di versione, "
+"perciò in teoria nessuno dovrebbe avere di questi problemi e di conseguenza "
+"tutti questi controlli aggiuntivi sono inutili."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This configuration option defaults to \"<literal>true</literal>\" and should "
+"only be set to <literal>\"false\"</literal> if the Archive generated with "
+"&apt-ftparchive; also provides <filename>Translation</filename> files. Note "
+"that the <filename>Translation-en</filename> master file can only be created "
+"in the generate command."
+msgstr ""
+"Questa opzione di configurazione è impostata a «<literal>true</literal>» in "
+"modo predefinito e dovrebbe essere impostata a <literal>«false»</literal> "
+"solamente se l'archivio generato con &apt-ftparchive; fornisce anche file "
+"<filename>Translation</filename>. Notare che il file principale "
+"<filename>Translation-en</filename> può essere creato solamente con il "
+"comando generate."
+
+#. type: Content of: <refentry><refsect1><para><programlisting>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n"
+msgstr "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"To create a compressed Packages file for a directory containing binary "
+"packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Per creare un file Packages compresso per una directory contenente pacchetti "
+"binari (.deb): <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+"<command>apt-ftparchive</command> restituisce zero in caso di funzionamento "
+"normale e il valore decimale 100 in caso di errore."
+
+#. type: Attribute 'lang' of: <book>
+#: guide.dbk offline.dbk
+msgid "en"
+msgstr "it"
+
+#. type: Content of: <book><title>
+#: guide.dbk
+msgid "APT User's Guide"
+msgstr "Guida dell'utente di APT"
+
+#. type: Content of: <book><bookinfo><authorgroup><author><personname>
+#: guide.dbk offline.dbk
+msgid "Jason Gunthorpe"
+msgstr "Jason Gunthorpe"
+
+#. type: Content of: <book><bookinfo><authorgroup><author><email>
+#: guide.dbk offline.dbk
+msgid "jgg@debian.org"
+msgstr "jgg@debian.org"
+
+#. type: Content of: <book><bookinfo><releaseinfo>
+#: guide.dbk offline.dbk
+msgid "Version &apt-product-version;"
+msgstr "Versione &apt-product-version;"
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: guide.dbk
+msgid ""
+"This document provides an overview of how to use the APT package manager."
+msgstr ""
+"Questo documento fornisce una panoramica su come usare il gestore di "
+"pacchetti APT."
+
+#. type: Content of: <book><bookinfo>
+#: guide.dbk
+msgid ""
+"<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+"<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>"
+
+#. type: Content of: <book><bookinfo><legalnotice><title>
+#: guide.dbk offline.dbk
+msgid "License Notice"
+msgstr "Licenza"
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk offline.dbk
+msgid ""
+"\"APT\" and this document are free software; you can redistribute them and/"
+"or modify them under the terms of the GNU General Public License as "
+"published by the Free Software Foundation; either version 2 of the License, "
+"or (at your option) any later version."
+msgstr ""
+"«APT» e questo documento sono software libero; li si può ridistribuire e/o "
+"modificare secondo i termini della Licenza Pubblica Generica GNU (GPL), "
+"pubblicata dalla Free Software Foundation, nella versione 2 o (a propria "
+"scelta) qualsiasi versione successiva."
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk offline.dbk
+msgid ""
+"For more details, on Debian systems, see the file /usr/share/common-licenses/"
+"GPL for the full license."
+msgstr ""
+"Per ulteriori dettagli, sui sistemi Debian, si veda il testo completo della "
+"licenza nel file /usr/share/common-licenses/GPL."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "General"
+msgstr "Descrizione generale"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The APT package currently contains two sections, the APT <command>dselect</"
+"command> method and the <command>apt-get</command> command line user "
+"interface. Both provide a way to install and remove packages as well as "
+"download new packages from the Internet."
+msgstr ""
+"Il pacchetto APT al momento contiene due sezioni, il metodo APT per "
+"<command>dselect</command> e l'interfaccia utente a riga di comando "
+"<command>apt-get</command>; entrambi forniscono un modo per installare e "
+"rimuovere pacchetti, così come per scaricarne di nuovi da Internet."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Anatomy of the Package System"
+msgstr "Anatomia del sistema dei pacchetti"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The Debian packaging system has a large amount of information associated "
+"with each package to help assure that it integrates cleanly and easily into "
+"the system. The most prominent of its features is the dependency system."
+msgstr ""
+"Il sistema dei pacchetti di Debian contiene un gran numero di informazioni "
+"associate a ciascun pacchetto, per garantire che si integri facilmente ed in "
+"maniera pulita nel sistema. La sua caratteristica più importante è il "
+"sistema di dipendenze."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The dependency system allows individual programs to make use of shared "
+"elements in the system such as libraries. It simplifies placing infrequently "
+"used portions of a program in separate packages to reduce the number of "
+"things the average user is required to install. Also, it allows for choices "
+"in mail transport agents, X servers and so on."
+msgstr ""
+"Il sistema di dipendenze permette ai singoli programmi di fare uso degli "
+"elementi condivisi del sistema, quali le librerie. Semplifica l'inserimento "
+"delle porzioni di un programma usate raramente in pacchetti separati per "
+"ridurre il numero di cose che l'utente medio deve installare. Inoltre, rende "
+"possibile avere più di una scelta per cose quali i programmi di "
+"trasferimento della posta elettronica, i server X e così via."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The first step to understanding the dependency system is to grasp the "
+"concept of a simple dependency. The meaning of a simple dependency is that a "
+"package requires another package to be installed at the same time to work "
+"properly."
+msgstr ""
+"Il primo passo per capire il sistema di dipendenze è la comprensione del "
+"concetto di dipendenza semplice: un pacchetto richiede che un altro sia "
+"installato insieme ad esso per poter funzionare."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"For instance, mailcrypt is an emacs extension that aids in encrypting email "
+"with GPG. Without GPGP installed mailcrypt is useless, so mailcrypt has a "
+"simple dependency on GPG. Also, because it is an emacs extension it has a "
+"simple dependency on emacs, without emacs it is completely useless."
+msgstr ""
+"Ad esempio, mailcrypt è un'estensione di emacs che aiuta a cifrare i "
+"messaggi di posta elettronica GPG. Se GPG non è installato, mailcrypt è "
+"inutile, quindi mailcrypt ha una dipendenza semplice da GPG. Inoltre, dato "
+"che si tratta di un'estensione di emacs, mailcrypt ha anche una dipendenza "
+"semplice da emacs, senza il quale è totalmente inutile."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The other important dependency to understand is a conflicting dependency. It "
+"means that a package, when installed with another package, will not work and "
+"may possibly be extremely harmful to the system. As an example consider a "
+"mail transport agent such as sendmail, exim or qmail. It is not possible to "
+"have two mail transport agents installed because both need to listen to the "
+"network to receive mail. Attempting to install two will seriously damage the "
+"system so all mail transport agents have a conflicting dependency with all "
+"other mail transport agents."
+msgstr ""
+"L'altro tipo di dipendenza importante da capire è la dipendenza di "
+"conflitto; significa che un pacchetto, quando è installato insieme ad un "
+"altro, non funziona e potrebbe potenzialmente causare seri danni al sistema. "
+"Come esempio, si consideri un programma di trasporto della posta, quale "
+"sendmail, exim o qmail: non è possibile averne installati due "
+"contemporaneamente, perché entrambi hanno bisogno di restare in ascolto "
+"sulla rete per ricevere la posta. Tentare di installarne due danneggerebbe "
+"seriamente il sistema, quindi ciascun programma di trasporto della posta ha "
+"una dipendenza di conflitto verso tutti gli altri."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"As an added complication there is the possibility for a package to pretend "
+"to be another package. Consider that exim and sendmail for many intents are "
+"identical, they both deliver mail and understand a common interface. Hence, "
+"the package system has a way for them to declare that they are both mail-"
+"transport-agents. So, exim and sendmail both declare that they provide a "
+"mail-transport-agent and other packages that need a mail transport agent "
+"depend on mail-transport-agent. This can add a great deal of confusion when "
+"trying to manually fix packages."
+msgstr ""
+"Come ulteriore complicazione, c'è la possibilità per un pacchetto di far "
+"finta di essere un altro. Ad esempio, exim e sendmail sono dal lato pratico "
+"identici, dato che entrambi consegnano la posta e utilizzano un'interfaccia "
+"comune. Il sistema dei pacchetti quindi fornisce un mezzo con cui entrambi "
+"possono dichiarare di essere programmi di trasporto della posta; perciò "
+"entrambi dichiarano di fornire un mail-transport-agent e gli altri pacchetti "
+"che hanno bisogno di un programma di trasferimento della posta possono "
+"dipendere da mail-transport-agent. Quando si cerca di modificare a mano i "
+"pacchetti, questo può portare a moltissima confusione."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"At any given time a single dependency may be met by packages that are "
+"already installed or it may not be. APT attempts to help resolve dependency "
+"issues by providing a number of automatic algorithms that help in selecting "
+"packages for installation."
+msgstr ""
+"In un determinato momento una singola dipendenza può essere soddisfatta dai "
+"pacchetti già installati o può non esserlo; APT cerca di risolvere i "
+"problemi di dipendenze fornendo svariati algoritmi automatici, che aiutano a "
+"selezionare i pacchetti da installare."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "apt-get"
+msgstr "apt-get"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"<command>apt-get</command> provides a simple way to install packages from "
+"the command line. Unlike <command>dpkg</command>, <command>apt-get</command> "
+"does not understand .deb files, it works with the package's proper name and "
+"can only install .deb archives from a <emphasis>Source</emphasis>."
+msgstr ""
+"<command>apt-get</command> fornisce un modo semplice di installare i "
+"pacchetti dalla riga di comando. Diversamente da <command>dpkg</command>, "
+"<command>apt-get</command> non tratta i file .deb, ma utilizza il vero nome "
+"dei pacchetti e può installare archivi .deb solo da una <emphasis>fonte</"
+"emphasis>."
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk
+msgid ""
+"If you are using an http proxy server you must set the http_proxy "
+"environment variable first, see sources.list(5)"
+msgstr ""
+"Se si sta usando un server proxy http, si deve prima ancora impostare la "
+"variabile d'ambiente http_proxy; vedere sources.list(5)."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The first <placeholder type=\"footnote\" id=\"0\"/> thing that should be "
+"done before using <command>apt-get</command> is to fetch the package lists "
+"from the <emphasis>Sources</emphasis> so that it knows what packages are "
+"available. This is done with <literal>apt-get update</literal>. For instance,"
+msgstr ""
+"La prima <placeholder type=\"footnote\" id=\"0\"/> cosa da fare prima di "
+"usare <command>apt-get</command> è scaricare gli elenchi dei pacchetti dalle "
+"<emphasis>fonti</emphasis> in modo che il programma sappia quali pacchetti "
+"sono disponibili. Lo si fa con <literal>apt-get update</literal>. Ad esempio,"
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+"# apt-get update\n"
+"Scaricamento di: http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Scaricamento di: http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Lettura elenco dei pacchetti... Fatto\n"
+"Generazione albero delle dipendenze... Fatto\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid "Once updated there are several commands that can be used:"
+msgstr "Una volta aggiornato l'elenco, si possono usare svariati comandi:"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "upgrade"
+msgstr "upgrade"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Upgrade will attempt to gently upgrade the whole system. Upgrade will never "
+"install a new package or remove an existing package, nor will it ever "
+"upgrade a package that might cause some other package to break. This can be "
+"used daily to relatively safely upgrade the system. Upgrade will list all of "
+"the packages that it could not upgrade, this usually means that they depend "
+"on new packages or conflict with some other package. <command>dselect</"
+"command> or <literal>apt-get install</literal> can be used to force these "
+"packages to install."
+msgstr ""
+"Upgrade tenterà di fare un aggiornamento indolore del sistema completo, "
+"senza installare mai nuovi pacchetti o rimuoverne di esistenti, e senza mai "
+"aggiornare un pacchetto se ciò ne rende altri difettosi. Può essere usato "
+"quotidianamente per fare un aggiornamento relativamente sicuro del sistema. "
+"Upgrade elencherà tutti i pacchetti che non avrà potuto aggiornare, cosa che "
+"in genere significa che questi dipendono da nuovi pacchetti o che vanno in "
+"conflitto con altri. Per forzare la loro installazione si può usare "
+"<command>dselect</command> o <literal>apt-get install</literal>."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "install"
+msgstr "install"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Install is used to install packages by name. The package is automatically "
+"fetched and installed. This can be useful if you already know the name of "
+"the package to install and do not want to go into a GUI to select it. Any "
+"number of packages may be passed to install, they will all be fetched. "
+"Install automatically attempts to resolve dependency problems with the "
+"listed packages and will print a summary and ask for confirmation if "
+"anything other than its arguments are changed."
+msgstr ""
+"Install viene usato per installare i pacchetti per nome. Il pacchetto viene "
+"automaticamente scaricato ed installato; questo può essere utile se già se "
+"ne conosce il nome e non si vuole entrare in un'interfaccia grafica per "
+"selezionarlo. Al comando si possono passare anche più pacchetti, che saranno "
+"tutti scaricati. Install cerca automaticamente di risolvere i problemi di "
+"dipendenze dei pacchetti elencati, stampa un riassunto e chiede conferma se "
+"devono essere modificati altri pacchetti che non siano quelli sulla riga di "
+"comando."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "dist-upgrade"
+msgstr "dist-upgrade"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Dist-upgrade is a complete upgrader designed to simplify upgrading between "
+"releases of Debian. It uses a sophisticated algorithm to determine the best "
+"set of packages to install, upgrade and remove to get as much of the system "
+"to the newest release. In some situations it may be desired to use dist-"
+"upgrade rather than spend the time manually resolving dependencies in "
+"<command>dselect</command>. Once dist-upgrade has completed then "
+"<command>dselect</command> can be used to install any packages that may have "
+"been left out."
+msgstr ""
+"Dist-upgrade fa un aggiornamento completo ed è progettato in modo da rendere "
+"semplici gli aggiornamenti tra i rilasci di Debian. Usa un algoritmo "
+"sofisticato per determinare il miglior insieme di pacchetti da installare, "
+"aggiornare e rimuovere per migrare alla versione più recente la maggior "
+"parte del sistema possibile. In alcune situazioni può essere vantaggioso "
+"usare dist-upgrade invece di dedicare tempo a risolvere manualmente le "
+"dipendenze con <command>dselect</command>. Una volta completato il lavoro di "
+"dist-upgrade, si può usare <command>dselect</command> per installare "
+"eventuali pacchetti che sono stati tralasciati."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"It is important to closely look at what dist-upgrade is going to do, its "
+"decisions may sometimes be quite surprising."
+msgstr ""
+"È importante controllare attentamente cosa intende fare dist-upgrade, dato "
+"che le sue decisioni a volte possono essere abbastanza sorprendenti."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"<command>apt-get</command> has several command line options that are "
+"detailed in its man page, <citerefentry><refentrytitle>apt-get</"
+"refentrytitle><manvolnum>8</manvolnum></citerefentry>. The most useful "
+"option is <literal>-d</literal> which does not install the fetched files. If "
+"the system has to download a large number of package it would be undesired "
+"to start installing them in case something goes wrong. When <literal>-d</"
+"literal> is used the downloaded archives can be installed by simply running "
+"the command that caused them to be downloaded again without <literal>-d</"
+"literal>."
+msgstr ""
+"<command>apt-get</command> ha diverse opzioni per la riga di comando, che "
+"sono documentate dettagliatamente nella sua pagina di manuale, "
+"<citerefentry><refentrytitle>apt-get</refentrytitle><manvolnum>8</"
+"manvolnum></citerefentry>. L'opzione più utile è <literal>-d</literal>, che "
+"non installa i file scaricati; se il sistema deve scaricare un gran numero "
+"di pacchetti, non è bene iniziare ad installarli nel caso qualcosa dovesse "
+"andare storto. Quando si usa <literal>-d</literal>, gli archivi scaricati "
+"possono essere installati semplicemente eseguendo di nuovo lo stesso comando "
+"senza l'opzione <literal>-d</literal>."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "DSelect"
+msgstr "DSelect"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The APT <command>dselect</command> method provides the complete APT system "
+"with the <command>dselect</command> package selection GUI. <command>dselect</"
+"command> is used to select the packages to be installed or removed and APT "
+"actually installs them."
+msgstr ""
+"Il metodo APT di <command>dselect</command> fornisce tutte le funzionalità "
+"del sistema APT con l'interfaccia grafica di selezione dei pacchetti "
+"<command>dselect</command>. <command>dselect</command> viene usato per "
+"selezionare i pacchetti da installare o rimuovere, ed APT fa l'effettiva "
+"installazione."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"To enable the APT method you need to select [A]ccess in <command>dselect</"
+"command> and then choose the APT method. You will be prompted for a set of "
+"<emphasis>Sources</emphasis> which are places to fetch archives from. These "
+"can be remote Internet sites, local Debian mirrors or CD-ROMs. Each source "
+"can provide a fragment of the total Debian archive, APT will automatically "
+"combine them to form a complete set of packages. If you have a CD-ROM then "
+"it is a good idea to specify it first and then specify a mirror so that you "
+"have access to the latest bug fixes. APT will automatically use packages on "
+"your CD-ROM before downloading from the Internet."
+msgstr ""
+"Per abilitare il metodo APT si deve selezionare [A]ccess in "
+"<command>dselect</command> e scegliere il metodo APT; verrà chiesto un "
+"insieme di fonti (<emphasis>Sources</emphasis>), cioè di posti da cui "
+"scaricare gli archivi. Possono essere siti Internet remoti, mirror locali di "
+"Debian o CD-ROM; ogni fonte può fornire una parte dell'intero archivio "
+"Debian, ed APT le combinerà automaticamente insieme per formare un insieme "
+"completo di pacchetti. Se si ha un CD-ROM allora è una buona idea indicarlo "
+"per primo e poi specificare un mirror, in modo da avere accesso alle ultime "
+"versioni con le soluzioni dei bug. APT in questo modo userà automaticamente "
+"i pacchetti sul CD-ROM prima di scaricarli da Internet."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Set up a list of distribution source locations\n"
+"\n"
+" Please give the base URL of the debian distribution.\n"
+" The access schemes I know about are: http file\n"
+"\n"
+" For example:\n"
+" file:/mnt/debian,\n"
+" ftp://ftp.debian.org/debian,\n"
+" http://ftp.de.debian.org/debian,\n"
+"\n"
+"\n"
+" URL [http://llug.sep.bnl.gov/debian]:\n"
+msgstr ""
+" Set up a list of distribution source locations\n"
+"\n"
+" Please give the base URL of the debian distribution.\n"
+" The access schemes I know about are: http file\n"
+"\n"
+" For example:\n"
+" file:/mnt/debian,\n"
+" ftp://ftp.debian.org/debian,\n"
+" http://ftp.de.debian.org/debian,\n"
+"\n"
+"\n"
+" URL [http://llug.sep.bnl.gov/debian]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The <emphasis>Sources</emphasis> setup starts by asking for the base of the "
+"Debian archive, defaulting to a HTTP mirror. Next it asks for the "
+"distribution to get."
+msgstr ""
+"La configurazione delle <emphasis>fonti</emphasis> inizia chiedendo la base "
+"dell'archivio Debian, proponendo in modo predefinito un mirror HTTP; "
+"successivamente viene chiesta la distribuzione da scaricare."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Please give the distribution tag to get or a path to the\n"
+" package file ending in a /. The distribution\n"
+" tags are typically something like: stable unstable testing non-US\n"
+"\n"
+" Distribution [stable]:\n"
+msgstr ""
+" Please give the distribution tag to get or a path to the\n"
+" package file ending in a /. The distribution\n"
+" tags are typically something like: stable unstable testing non-US\n"
+"\n"
+" Distribution [stable]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The distribution refers to the Debian version in the archive, "
+"<emphasis>stable</emphasis> refers to the latest released version and "
+"<emphasis>unstable</emphasis> refers to the developmental version. "
+"<emphasis>non-US</emphasis> is only available on some mirrors and refers to "
+"packages that contain encryption technology or other things that cannot be "
+"exported from the United States. Importing these packages into the US is "
+"legal however."
+msgstr ""
+"La distribuzione indica la versione Debian dell'archivio: <emphasis>stable</"
+"emphasis> è l'ultima versione rilasciata e <emphasis>unstable</emphasis> è "
+"quella di sviluppo. <emphasis>non-US</emphasis> è disponibile solo su alcuni "
+"mirror e contiene dei pacchetti in cui viene usata della tecnologia di "
+"cifratura o altre cose che non possono essere esportate dagli Stati Uniti; "
+"importare questi pacchetti negli USA è però legale."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Please give the components to get\n"
+" The components are typically something like: main contrib non-free\n"
+"\n"
+" Components [main contrib non-free]:\n"
+msgstr ""
+" Please give the components to get\n"
+" The components are typically something like: main contrib non-free\n"
+"\n"
+" Components [main contrib non-free]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The components list refers to the list of sub distributions to fetch. The "
+"distribution is split up based on software licenses, main being DFSG free "
+"packages while contrib and non-free contain things that have various "
+"restrictions placed on their use and distribution."
+msgstr ""
+"L'elenco delle componenti indica la lista di sottodistribuzioni da "
+"scaricare. Ciascuna distribuzione viene suddivisa in base alle licenze del "
+"software: la componente main contiene pacchetti liberi secondo le DFSG, "
+"mentre contrib e non-free contengono software che ha diverse restrizioni "
+"sull'uso e sulla distribuzione."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Any number of sources can be added, the setup script will continue to prompt "
+"until you have specified all that you want."
+msgstr ""
+"Si può aggiungere un qualsiasi numero di fonti, e lo script di "
+"configurazione continuerà a chiedere fino a che non sono state specificate "
+"tutte quelle desiderate."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Before starting to use <command>dselect</command> it is necessary to update "
+"the available list by selecting [U]pdate from the menu. This is a superset "
+"of <literal>apt-get update</literal> that makes the fetched information "
+"available to <command>dselect</command>. [U]pdate must be performed even if "
+"<literal>apt-get update</literal> has been run before."
+msgstr ""
+"Prima di cominciare a usare <command>dselect</command> è necessario "
+"aggiornare l'elenco dei pacchetti disponibili selezionando [U]pdate dal "
+"menù: si tratta di un sovrainsieme di ciò che fa <literal>apt-get update</"
+"literal>, che rende le informazioni scaricate disponibili a "
+"<command>dselect</command>. [U]pdate deve essere usato anche se prima è "
+"stato eseguito <literal>apt-get update</literal>."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"You can then go on and make your selections using [S]elect and then perform "
+"the installation using [I]nstall. When using the APT method the [C]onfig and "
+"[R]emove commands have no meaning, the [I]nstall command performs both of "
+"them together."
+msgstr ""
+"Si può a questo punto continuare selezionando i pacchetti desiderati usando "
+"[S]elect e poi installando con [I]nstall. Se si usa il metodo APT, i comandi "
+"[C]onfig e [R]emove non hanno significato, dato che entrambe le fasi sono "
+"contenute in [I]nstall."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"By default APT will automatically remove the package (.deb) files once they "
+"have been successfully installed. To change this behavior place "
+"<literal>Dselect::clean \"prompt\";</literal> in /etc/apt/apt.conf."
+msgstr ""
+"In modo predefinito APT rimuoverà automaticamente i file (.deb) dei "
+"pacchetti che sono stati installati con successo. Per modificare questo "
+"comportamento, inserire <literal>Dselect::clean \"prompt\";</literal> in /"
+"etc/apt/apt.conf."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "The Interface"
+msgstr "L'interfaccia"
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk
+msgid ""
+"The <command>dselect</command> method actually is a set of wrapper scripts "
+"to <command>apt-get</command>. The method actually provides more "
+"functionality than is present in <command>apt-get</command> alone."
+msgstr ""
+"Il metodo <command>dselect</command> è in effetti un insieme di script "
+"wrapper per <command>apt-get</command>. Il metodo fornisce di fatto più "
+"funzionalità di quanto siano presenti nel solo <command>apt-get</command>."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Both that APT <command>dselect</command> method and <command>apt-get</"
+"command> share the same interface. It is a simple system that generally "
+"tells you what it will do and then goes and does it. <placeholder type="
+"\"footnote\" id=\"0\"/> After printing out a summary of what will happen APT "
+"then will print out some informative status messages so that you can "
+"estimate how far along it is and how much is left to do."
+msgstr ""
+"Sia il metodo APT per <command>dselect</command> sia <command>apt-get</"
+"command> condividono la stessa interfaccia; si tratta di un sistema semplice "
+"che indica in genere cosa sta per fare, e poi lo fa.<placeholder type="
+"\"footnote\" id=\"0\"/> Dopo la stampa di un riassunto delle operazioni che "
+"saranno fatte, APT stampa dei messaggi informativi sullo stato, in modo da "
+"poter avere un'idea del punto a cui arrivato e di quanto ci sia ancora da "
+"fare."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Startup"
+msgstr "Avvio"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Before all operations except update, APT performs a number of actions to "
+"prepare its internal state. It also does some checks of the system's state. "
+"At any time these operations can be performed by running <literal>apt-get "
+"check</literal>."
+msgstr ""
+"Prima di ogni operazione, eccetto update, APT compie alcune operazioni per "
+"preparare il suo stato interno; fa inoltre dei controlli sullo stato del "
+"sistema. In qualsiasi momento le stesse operazioni possono essere fatte con "
+"<literal>apt-get check</literal>."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+"# apt-get check\n"
+"Lettura elenco pacchetti... Fatto\n"
+"Generazione albero delle dipendenze... Fatto\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The first thing it does is read all the package files into memory. APT uses "
+"a caching scheme so this operation will be faster the second time it is run. "
+"If some of the package files are not found then they will be ignored and a "
+"warning will be printed when apt-get exits."
+msgstr ""
+"La prima cosa che fa è leggere tutti i file dei pacchetti in memoria; APT "
+"usa un sistema di cache in modo da rendere la stessa operazione più veloce "
+"la seconda volta che la si fa. Se alcuni dei file dei pacchetti non vengono "
+"trovati, sono ignorati e viene stampato un avvertimento all'uscita di apt-"
+"get."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The final operation performs a detailed analysis of the system's "
+"dependencies. It checks every dependency of every installed or unpacked "
+"package and considers if it is OK. Should this find a problem then a report "
+"will be printed out and <command>apt-get</command> will refuse to run."
+msgstr ""
+"L'operazione finale consiste in un'analisi dettagliata delle dipendenze del "
+"sistema: viene controllato che tutte le dipendenze dei singoli pacchetti "
+"installati o non scompattati siano soddisfatte. Se vengono individuati dei "
+"problemi, viene stampato un resoconto, e <command>apt-get</command> esce "
+"senza eseguire alcuna operazione."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+"You might want to run 'apt --fix-broken install' to correct these.\n"
+"Sorry, but the following packages have unmet dependencies:\n"
+" 9fonts: Depends: xlib6g but it is not installed\n"
+" uucp: Depends: mailx but it is not installed\n"
+" blast: Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" adduser: Depends: perl-base but it is not installed\n"
+" aumix: Depends: libgpmg1 but it is not installed\n"
+" debiandoc-sgml: Depends: sgml-base but it is not installed\n"
+" bash-builtins: Depends: bash (&gt;= 2.01) but 2.0-3 is installed\n"
+" cthugha: Depends: svgalibg1 but it is not installed\n"
+" Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" libreadlineg2: Conflicts:libreadline2 (&lt;&lt; 2.1-2.1)\n"
+msgstr ""
+"# apt-get check\n"
+"Lettura elenco pacchetti... Fatto\n"
+"Generazione albero delle dipendenze... Fatto\n"
+"È utile eseguire \"run apt --fix-broken install\" per correggere ciò.\n"
+"I seguenti pacchetti hanno dipendenze non soddisfatte:\n"
+" 9fonts: Dipende: xlib6g ma non è installato\n"
+" uucp: Dipende: mailx ma non è installato\n"
+" blast: Dipende: xlib6g (&gt;= 3.3-5) ma non è installato\n"
+" adduser: Dipende: perl-base ma non è installato\n"
+" aumix: Dipende: libgpmg1 ma non è installato\n"
+" debiandoc-sgml: Dipende: sgml-base ma non è installato\n"
+" bash-builtins: Dipende: bash (&gt;= 2.01) ma la versione 2.0-3 è installata\n"
+" cthugha: Dipende: svgalibg1 ma non è installato\n"
+" Dipende: xlib6g (&gt;= 3.3-5) ma non è installato\n"
+" libreadlineg2: Va in conflitto: libreadline2 (&lt;&lt; 2.1-2.1)\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"In this example the system has many problems, including a serious problem "
+"with libreadlineg2. For each package that has unmet dependencies a line is "
+"printed out indicating the package with the problem and the dependencies "
+"that are unmet. A short explanation of why the package has a dependency "
+"problem is also included."
+msgstr ""
+"In questo esempio il sistema ha molti problemi, tra cui uno piuttosto serio "
+"con libreadlineg2. Per ciascun pacchetto che ha dipendenze non soddisfatte, "
+"viene stampata una riga che indica il pacchetto con il problema e quali "
+"dipendenze non sono soddisfatte. Viene inclusa inoltre una breve spiegazione "
+"del perché il pacchetto ha un problema di dipendenze."
+
+#. type: Content of: <book><chapter><section><para><footnote><para>
+#: guide.dbk
+msgid ""
+"APT however considers all known dependencies and attempts to prevent broken "
+"packages"
+msgstr ""
+"APT tuttavia considera tutte le dipendenze note e cerca di evitare che i "
+"pacchetti siano difettosi."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"There are two ways a system can get into a broken state like this. The first "
+"is caused by <command>dpkg</command> missing some subtle relationships "
+"between packages when performing upgrades. <placeholder type=\"footnote\" id="
+"\"0\"/>. The second is if a package installation fails during an operation. "
+"In this situation a package may have been unpacked without its dependents "
+"being installed."
+msgstr ""
+"Ci sono due modi in cui un sistema può arrivare in uno stato problematico di "
+"questo genere: il primo avviene se <command>dpkg</command> non ha ravvisato "
+"alcune relazioni delicate tra i pacchetti durante un aggiornamento."
+"<placeholder type=\"footnote\" id=\"0\"/> Il secondo è possibile se "
+"l'installazione di un pacchetto fallisce; in questo caso è possibile che un "
+"pacchetto venga scompattato senza che tutti quelli da cui dipende siano "
+"stati installati."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The second situation is much less serious than the first because APT places "
+"certain constraints on the order that packages are installed. In both cases "
+"supplying the <literal>-f</literal> option to <command>apt-get</command> "
+"will cause APT to deduce a possible solution to the problem and then "
+"continue on. The APT <command>dselect</command> method always supplies the "
+"<literal>-f</literal> option to allow for easy continuation of failed "
+"maintainer scripts."
+msgstr ""
+"La seconda situazione è molto meno seria della prima, dato che APT pone "
+"alcune restrizioni sull'ordine di installazione dei pacchetti. In entrambi i "
+"casi l'opzione <literal>-f</literal> di <command>apt-get</command> farà sì "
+"che APT trovi una soluzione possibile e possa continuare. Il metodo APT di "
+"<command>dselect</command> comprende sempre l'opzione <literal>-f</literal> "
+"per permettere di continuare facilmente anche in caso di script dei "
+"manutentori errati."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"However, if the <literal>-f</literal> option is used to correct a seriously "
+"broken system caused by the first case then it is possible that it will "
+"either fail immediately or the installation sequence will fail. In either "
+"case it is necessary to manually use dpkg (possibly with forcing options) to "
+"correct the situation enough to allow APT to proceed."
+msgstr ""
+"Tuttavia, se l'opzione <literal>-f</literal> viene usata per correggere un "
+"sistema in uno stato molto problematico causato da una situazione del primo "
+"tipo, è possibile che l'operazione fallisca subito o che fallisca durante la "
+"sequenza di installazione. In entrambi i casi è necessario usare dpkg a mano "
+"(probabilmente usando delle opzioni di forzatura) per correggere quanto "
+"basta per poter fare continuare APT."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "The Status Report"
+msgstr "Il resoconto sullo stato"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Before proceeding <command>apt-get</command> will present a report on what "
+"will happen. Generally the report reflects the type of operation being "
+"performed but there are several common elements. In all cases the lists "
+"reflect the final state of things, taking into account the <literal>-f</"
+"literal> option and any other relevant activities to the command being "
+"executed."
+msgstr ""
+"Prima di procedere, <command>apt-get</command> presenterà un resoconto delle "
+"operazioni che sta per fare. In genere tale resoconto varierà con il tipo di "
+"operazione da fare, ma ci sono svariati elementi comuni: in tutti i casi gli "
+"elenchi riflettono lo stato finale delle cose, e tengono conto dell'opzione "
+"<literal>-f</literal> e di altre attività rilevanti per il comando da "
+"eseguire."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Extra Package list"
+msgstr "L'elenco dei pacchetti extra"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following extra packages will be installed:\n"
+" libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl\n"
+" mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base\n"
+" bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy\n"
+" squake pgp-i python-base debmake ldso perl libreadlineg2\n"
+" ssh\n"
+msgstr ""
+"I seguenti pacchetti saranno inoltre installati:\n"
+" libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl\n"
+" mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base\n"
+" bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy\n"
+" squake pgp-i python-base debmake ldso perl libreadlineg2\n"
+" ssh\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The Extra Package list shows all of the packages that will be installed or "
+"upgraded in excess of the ones mentioned on the command line. It is only "
+"generated for an <literal>install</literal> command. The listed packages are "
+"often the result of an Auto Install."
+msgstr ""
+"L'elenco dei pacchetti extra mostra tutti i pacchetti che verranno "
+"installati o aggiornati oltre a quelli indicati sulla riga di comando. Viene "
+"generato solo per il comando <literal>install</literal>. I pacchetti "
+"elencati sono spesso il risultato di un'operazione di installazione "
+"automatica."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Packages to Remove"
+msgstr "I pacchetti da rimuovere"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following packages will be REMOVED:\n"
+" xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix\n"
+" xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel\n"
+" xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid\n"
+" nas xpilot xfig\n"
+msgstr ""
+"I seguenti pacchetti saranno RIMOSSI:\n"
+" xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix\n"
+" xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel\n"
+" xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid\n"
+" nas xpilot xfig\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The Packages to Remove list shows all of the packages that will be removed "
+"from the system. It can be shown for any of the operations and should be "
+"given a careful inspection to ensure nothing important is to be taken off. "
+"The <literal>-f</literal> option is especially good at generating packages "
+"to remove so extreme care should be used in that case. The list may contain "
+"packages that are going to be removed because they are only partially "
+"installed, possibly due to an aborted installation."
+msgstr ""
+"L'elenco dei pacchetti da rimuovere indica tutti i pacchetti che verranno "
+"rimossi dal sistema. Può essere mostrato per una qualsiasi delle operazioni, "
+"e deve sempre essere esaminato attentamente per assicurarsi che non venga "
+"eliminato qualcosa di importante. Con l'opzione <literal>-f</literal> è "
+"particolarmente probabile che vengano eliminati dei pacchetti, perciò in "
+"questo caso va fatta particolare attenzione. L'elenco può contenere dei "
+"pacchetti che verranno rimossi perché sono solo parzialmente installati, "
+"forse a causa di un'installazione non terminata correttamente."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The New Packages list"
+msgstr "L'elenco dei nuovi pacchetti installati"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following NEW packages will installed:\n"
+" zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base\n"
+msgstr ""
+"I seguenti pacchetti NUOVI saranno installati:\n"
+" zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The New Packages list is simply a reminder of what will happen. The packages "
+"listed are not presently installed in the system but will be when APT is "
+"done."
+msgstr ""
+"L'elenco dei nuovi pacchetti installati è semplicemente un promemoria su "
+"quello che accadrà. I pacchetti nell'elenco non sono al momento installati "
+"nel sistema, ma lo saranno alla fine delle operazioni di APT."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Kept Back list"
+msgstr "L'elenco dei pacchetti bloccati"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following packages have been kept back\n"
+" compface man-db tetex-base msql libpaper svgalib1\n"
+" gs snmp arena lynx xpat2 groff xscreensaver\n"
+msgstr ""
+"I seguenti pacchetti sono stati mantenuti alla versione attuale:\n"
+" compface man-db tetex-base msql libpaper svgalib1\n"
+" gs snmp arena lynx xpat2 groff xscreensaver\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Whenever the whole system is being upgraded there is the possibility that "
+"new versions of packages cannot be installed because they require new things "
+"or conflict with already installed things. In this case the package will "
+"appear in the Kept Back list. The best way to convince packages listed there "
+"to install is with <literal>apt-get install</literal> or by using "
+"<command>dselect</command> to resolve their problems."
+msgstr ""
+"In ogni caso in cui il sistema viene aggiornato nel suo insieme, c'è la "
+"possibilità che non possano venire installate nuove versioni di alcuni "
+"pacchetti, dato che potrebbero richiedere l'installazione di pacchetti non "
+"presenti nel sistema o entrare in conflitto con altri già presenti. In "
+"questo caso, il pacchetto viene elencato nella lista di quelli mantenuti "
+"alla versione attuale. Il miglior modo per forzare l'installazione dei "
+"pacchetti elencati in questa lista è installarli con <literal>apt-get "
+"install</literal> o usare <command>dselect</command> per risolvere i "
+"problemi."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "Held Packages warning"
+msgstr "Messaggi di avvertimento sui pacchetti bloccati"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following held packages will be changed:\n"
+" cvs\n"
+msgstr ""
+"I seguenti pacchetti bloccati saranno cambiati:\n"
+" cvs\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Sometimes you can ask APT to install a package that is on hold, in such a "
+"case it prints out a warning that the held package is going to be changed. "
+"This should only happen during dist-upgrade or install."
+msgstr ""
+"A volte si può richiedere ad APT di installare un pacchetto che è stato "
+"bloccato; in questi casi viene stampato un messaggio che avverte che il "
+"pacchetto verrà modificato. Questo dovrebbe accadere solo durante operazioni "
+"di dist-upgrade o di install."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "Final summary"
+msgstr "Resoconto finale"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Finally, APT will print out a summary of all the changes that will occur."
+msgstr ""
+"Infine, APT stamperà un riassunto di tutte le modifiche che accadranno."
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"206 packages upgraded, 8 newly installed, 23 to remove and 51 not upgraded.\n"
+"12 packages not fully installed or removed.\n"
+"Need to get 65.7M/66.7M of archives. After unpacking 26.5M will be used.\n"
+msgstr ""
+"206 aggiornati, 8 installati, 23 da rimuovere e 51 non aggiornati.\n"
+"12 non completamente installati o rimossi..\n"
+"È necessario scaricare 65.7M/66.7M di archivi. Dopo quest'operazione, verranno occupati 26.5M di spazio su disco.\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The first line of the summary simply is a reduced version of all of the "
+"lists and includes the number of upgrades - that is packages already "
+"installed that have new versions available. The second line indicates the "
+"number of poorly configured packages, possibly the result of an aborted "
+"installation. The final line shows the space requirements that the "
+"installation needs. The first pair of numbers refer to the size of the "
+"archive files. The first number indicates the number of bytes that must be "
+"fetched from remote locations and the second indicates the total size of all "
+"the archives required. The next number indicates the size difference between "
+"the presently installed packages and the newly installed packages. It is "
+"roughly equivalent to the space required in /usr after everything is done. "
+"If a large number of packages are being removed then the value may indicate "
+"the amount of space that will be freed."
+msgstr ""
+"La prima riga del riassunto è semplicemente una versione ridotta di tutti "
+"gli elenchi ed include il numero di aggiornamenti, cioè dei pacchetti già "
+"installati per cui è disponibile una nuova versione. La seconda riga indica "
+"il numero di pacchetti con problemi di configurazione, probabilmente in "
+"conseguenza di un'installazione non andata a buon fine. La riga finale "
+"indica i requisiti di spazio dell'installazione; i primi due numeri "
+"riguardano la dimensione dei file archivio: indicano rispettivamente il "
+"numero di byte che devono essere trasferiti da posizioni remote e la "
+"dimensione totale di tutti gli archivi necessari. Il numero successivo "
+"indica la differenza in dimensione tra i pacchetti già installati e quelli "
+"che lo saranno, ed è approssimativamente equivalente allo spazio richiesto "
+"in /usr dopo l'installazione. Se si stanno rimuovendo molti pacchetti, "
+"allora il valore può indicare lo spazio che verrà liberato."
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Some other reports can be generated by using the -u option to show packages "
+"to upgrade, they are similar to the previous examples."
+msgstr ""
+"Si possono generare altri resoconti usando l'opzione -u per mostrare i "
+"pacchetti da aggiornare, ma sono simili all'esempio precedente."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "The Status Display"
+msgstr "La visualizzazione dello stato"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"During the download of archives and package files APT prints out a series of "
+"status messages."
+msgstr ""
+"Durante lo scaricamento degli archivi e dei file dei pacchetti APT stampa "
+"una serie di messaggi di stato."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+"11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
+msgstr ""
+"# apt-get update\n"
+"Scaricamento di:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Scaricamento di:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Trovato http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+"Scaricamento di:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Scaricamento di:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+"11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The lines starting with <emphasis>Get</emphasis> are printed out when APT "
+"begins to fetch a file while the last line indicates the progress of the "
+"download. The first percent value on the progress line indicates the total "
+"percent done of all files. Unfortunately since the size of the Package files "
+"is unknown <literal>apt-get update</literal> estimates the percent done "
+"which causes some inaccuracies."
+msgstr ""
+"Le righe che cominciano con <emphasis>Scaricamento di</emphasis> vengono "
+"stampate quando APT inizia a scaricare un file, mentre l'ultima riga indica "
+"il progresso dell'operazione. Il primo valore in percentuale nella riga di "
+"progresso indica la percentuale totale scaricata di tutti i file; dato che "
+"la dimensione dei file Package non è nota, purtroppo a volte <literal>apt-"
+"get update</literal> fa una stima poco accurata."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The next section of the status line is repeated once for each download "
+"thread and indicates the operation being performed and some useful "
+"information about what is happening. Sometimes this section will simply read "
+"<emphasis>Forking</emphasis> which means the OS is loading the download "
+"module. The first word after the [ is the fetch number as shown on the "
+"history lines. The next word is the short form name of the object being "
+"downloaded. For archives it will contain the name of the package that is "
+"being fetched."
+msgstr ""
+"La sezione successiva della riga di stato viene ripetuta una volta per "
+"ciascuna istanza di scaricamento, ed indica l'operazione in corso, insieme "
+"ad alcune informazioni utili su cosa stia accadendo. A volte questa sezione "
+"contiene solamente <emphasis>Forking</emphasis>, che significa che il "
+"sistema operativo sta caricando il modulo per lo scaricamento. La prima "
+"parola dopo la parentesi quadra aperta è il numero dello scaricamento come "
+"mostrato nelle righe della cronologia. La parola successiva è il nome breve "
+"dell'oggetto che si sta scaricando, che per gli archivi è il nome del "
+"pacchetto."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Inside of the single quote is an informative string indicating the progress "
+"of the negotiation phase of the download. Typically it progresses from "
+"<emphasis>Connecting</emphasis> to <emphasis>Waiting for file</emphasis> to "
+"<emphasis>Downloading</emphasis> or <emphasis>Resuming</emphasis>. The final "
+"value is the number of bytes downloaded from the remote site. Once the "
+"download begins this is represented as <literal>102/10.2k</literal> "
+"indicating that 102 bytes have been fetched and 10.2 kilobytes is expected. "
+"The total size is always shown in 4 figure notation to preserve space. After "
+"the size display is a percent meter for the file itself. The second last "
+"element is the instantaneous average speed. This values is updated every 5 "
+"seconds and reflects the rate of data transfer for that period. Finally is "
+"shown the estimated transfer time. This is updated regularly and reflects "
+"the time to complete everything at the shown transfer rate."
+msgstr ""
+"All'interno delle virgolette singole c'è una stringa informativa, che indica "
+"il progresso della fase di negoziazione dello scaricamento. Tipicamente "
+"comincia con <emphasis>Connecting</emphasis>, procede con <emphasis>Waiting "
+"for file</emphasis> e poi con <emphasis>Downloading</emphasis> o "
+"<emphasis>Resuming</emphasis>; il valore finale è il numero di byte che sono "
+"stati scaricati dal sito remoto. Una volta cominciato lo scaricamento, viene "
+"rappresentato come <literal>102/10.2k</literal>, che indica che sono stati "
+"scaricati 102 byte su 10,2 kilobyte attesi. La dimensione totale viene "
+"sempre espressa in notazione a quattro cifre, per risparmiare spazio. Dopo "
+"la dimensione viene indicato un indicatore progressivo della percentuale del "
+"file. Il penultimo elemento è la velocità istantanea media, che viene "
+"aggiornata ogni 5 secondi e riflette la velocità di trasferimento dei dati "
+"in quel periodo. Infine, viene visualizzato il tempo stimato per il "
+"trasferimento, che viene aggiornato periodicamente e riflette il tempo "
+"necessario per completare tutte le operazioni alla velocità di trasferimento "
+"mostrata."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The status display updates every half second to provide a constant feedback "
+"on the download progress while the Get lines scroll back whenever a new file "
+"is started. Since the status display is constantly updated it is unsuitable "
+"for logging to a file, use the <literal>-q</literal> option to remove the "
+"status display."
+msgstr ""
+"La visualizzazione dello stato viene aggiornata ogni mezzo secondo per "
+"fornire un feedback costante sul processo di scaricamento, e le righe Get "
+"scorrono in alto quando viene avviato lo scaricamento di un nuovo file. Dato "
+"che la visualizzazione dello stato viene costantemente aggiornata, non è "
+"adatta per essere registrata in un file; per non visualizzarla si può usare "
+"l'opzione <literal>-q</literal>."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Dpkg"
+msgstr "Dpkg"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"APT uses <command>dpkg</command> for installing the archives and will switch "
+"over to the <command>dpkg</command> interface once downloading is completed. "
+"<command>dpkg</command> will also ask a number of questions as it processes "
+"the packages and the packages themselves may also ask several questions. "
+"Before each question there is usually a description of what it is asking and "
+"the questions are too varied to discuss completely here."
+msgstr ""
+"APT usa <command>dpkg</command> per installare gli archivi e passerà "
+"all'interfaccia di <command>dpkg</command> una volta completati gli "
+"scaricamenti. <command>dpkg</command> porrà anche alcune domande durante "
+"l'elaborazione dei pacchetti, ed i pacchetti stessi potranno farne altre. "
+"Prima di ciascuna domanda viene proposta di solito una descrizione di ciò "
+"che viene chiesto, e le domande sono troppo diverse per poter essere "
+"discusse in maniera completa in questa occasione."
+
+#. type: Content of: <book><title>
+#: offline.dbk
+msgid "Using APT Offline"
+msgstr "Usare APT offline"
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: offline.dbk
+msgid ""
+"This document describes how to use APT in a non-networked environment, "
+"specifically a 'sneaker-net' approach for performing upgrades."
+msgstr ""
+"Questo documento descrive come usare APT in un ambiente non connesso in "
+"rete, specificatamente un approccio «sfrutta-altra-rete» per fare gli "
+"aggiornamenti."
+
+#. type: Content of: <book><bookinfo>
+#: offline.dbk
+msgid ""
+"<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+"<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright>"
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Introduction"
+msgstr "Introduzione"
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "Overview"
+msgstr "Panoramica"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Normally APT requires direct access to a Debian archive, either from a local "
+"media or through a network. Another common complaint is that a Debian "
+"machine is on a slow link, such as a modem and another machine has a very "
+"fast connection but they are physically distant."
+msgstr ""
+"Normalmente APT richiede l'accesso diretto ad un archivio Debian, attraverso "
+"un supporto locale o la rete. Un problema comune è che una macchina Debian "
+"ha un collegamento lento, come un modem, e un'altra macchina ha una "
+"connessione veloce, ma le due sono fisicamente distanti."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The solution to this is to use large removable media such as a Zip disc or a "
+"SuperDisk disc. These discs are not large enough to store the entire Debian "
+"archive but can easily fit a subset large enough for most users. The idea is "
+"to use APT to generate a list of packages that are required and then fetch "
+"them onto the disc using another machine with good connectivity. It is even "
+"possible to use another Debian machine with APT or to use a completely "
+"different OS and a download tool like wget. Let <emphasis>remote host</"
+"emphasis> mean the machine downloading the packages, and <emphasis>target "
+"host</emphasis> the one with bad or no connection."
+msgstr ""
+"La soluzione è usare supporti rimovibili grandi come un disco Zip o uno "
+"SuperDisk. Questi dischi non sono grandi abbastanza per memorizzare l'intero "
+"archivio Debian, ma possono facilmente contenere un sottoinsieme "
+"sufficientemente grande per la maggior parte degli utenti. L'idea è di usare "
+"APT per generare un elenco di pacchetti che sono necessari e poi scaricarli "
+"nel disco usando un'altra macchina con una buona connettività. È possibile "
+"anche usare un'altra macchina Debian con APT o usare un sistema operativo "
+"completamente diverso e uno strumento per scaricare file come wget. In "
+"questo documento con <emphasis>host remoto</emphasis> viene indicata la "
+"macchina che scarica i pacchetti, e <emphasis>host di destinazione</"
+"emphasis> è quella senza connessione o con una connessione non buona."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"This is achieved by creatively manipulating the APT configuration file. The "
+"essential premise to tell APT to look on a disc for it's archive files. Note "
+"that the disc should be formatted with a filesystem that can handle long "
+"file names such as ext2, fat32 or vfat."
+msgstr ""
+"Questo viene ottenuto modificando in modo particolare il file di "
+"configurazione di APT. Come premessa essenziale, si deve dire ad APT di "
+"cercare in un disco i suoi file archivio. Notare che il disco deve essere "
+"formattato con un file system che può gestire i nomi di file lunghi, come "
+"ext2, fat32 o vfat."
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Using APT on both machines"
+msgstr "Usare APT su entrambe le macchine"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"APT being available on both machines gives the simplest configuration. The "
+"basic idea is to place a copy of the status file on the disc and use the "
+"remote machine to fetch the latest package files and decide which packages "
+"to download. The disk directory structure should look like:"
+msgstr ""
+"La configurazione più semplice si ha se APT è disponibile su entrambe le "
+"macchine. L'idea di base è di mettere una copia del file di stato sul disco "
+"e usare la macchina remota per scaricare i file dei pacchetti più recenti e "
+"per decidere quali pacchetti scaricare. La struttura delle directory sul "
+"disco deve essere simile a:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" /disc/\n"
+" archives/\n"
+" partial/\n"
+" lists/\n"
+" partial/\n"
+" status\n"
+" sources.list\n"
+" apt.conf\n"
+msgstr ""
+" /disc/\n"
+" archives/\n"
+" partial/\n"
+" lists/\n"
+" partial/\n"
+" status\n"
+" sources.list\n"
+" apt.conf\n"
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "The configuration file"
+msgstr "Il file di configurazione"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The configuration file should tell APT to store its files on the disc and to "
+"use the configuration files on the disc as well. The sources.list should "
+"contain the proper sites that you wish to use from the remote machine, and "
+"the status file should be a copy of <emphasis>/var/lib/dpkg/status</"
+"emphasis> from the <emphasis>target host</emphasis>. Please note, if you are "
+"using a local archive you must use copy URIs, the syntax is identical to "
+"file URIs."
+msgstr ""
+"Il file di configurazione deve indicare ad APT di memorizzare i suoi file "
+"sul disco e di usare i file di configurazione anch'essi sul disco. Il file "
+"sources.list deve contenere i siti appropriati che si desiderano usare dalla "
+"macchina remota e il file di stato dovrebbe essere una copia di <emphasis>/"
+"var/lib/dpkg/status</emphasis> della <emphasis>macchina di destinazione</"
+"emphasis>. Notare che, se si sta usando un archivio locale, si devono usare "
+"URI «copy» la cui sintassi è identica a quella degli URI «file»."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"<emphasis>apt.conf</emphasis> must contain the necessary information to make "
+"APT use the disc:"
+msgstr ""
+"<emphasis>apt.conf</emphasis> deve contenere le informazioni necessarie per "
+"far sì che APT usi il disco:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" APT\n"
+" {\n"
+" /* This is not necessary if the two machines are the same arch, it tells\n"
+" the remote APT what architecture the target machine is */\n"
+" Architecture \"i386\";\n"
+"\n"
+" Get::Download-Only \"true\";\n"
+" };\n"
+"\n"
+" Dir\n"
+" {\n"
+" /* Use the disc for state information and redirect the status file from\n"
+" the /var/lib/dpkg default */\n"
+" State \"/disc/\";\n"
+" State::status \"status\";\n"
+"\n"
+" // Binary caches will be stored locally\n"
+" Cache::archives \"/disc/archives/\";\n"
+" Cache \"/tmp/\";\n"
+"\n"
+" // Location of the source list.\n"
+" Etc \"/disc/\";\n"
+" };\n"
+msgstr ""
+" APT\n"
+" {\n"
+" /* Questo non è necessario se le due macchine hanno la stessa architettura,\n"
+" dice ad APT remoto qual è l'architettura della macchina di destinazione */\n"
+" Architecture \"i386\";\n"
+"\n"
+" Get::Download-Only \"true\";\n"
+" };\n"
+"\n"
+" Dir\n"
+" {\n"
+" /* Usa il disco per le informazioni sullo stato e ridirige il file di stato\n"
+" dalla posizione predefinita /var/lib/dpkg */\n"
+" State \"/disc/\";\n"
+" State::status \"status\";\n"
+"\n"
+" // Le cache binarie saranno memorizzate in locale\n"
+" Cache::archives \"/disc/archives/\";\n"
+" Cache \"/tmp/\";\n"
+"\n"
+" // Posizione dell'elenco di fonti.\n"
+" Etc \"/disc/\";\n"
+" };\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"More details can be seen by examining the apt.conf man page and the sample "
+"configuration file in <emphasis>/usr/share/doc/apt/examples/apt.conf</"
+"emphasis>."
+msgstr ""
+"Si possono vedere informazioni più dettagliate nella pagina di manuale di "
+"apt.conf e nel file di configurazione d'esempio in <emphasis>/usr/share/doc/"
+"apt/examples/apt.conf</emphasis>."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"On the target machine the first thing to do is mount the disc and copy "
+"<emphasis>/var/lib/dpkg/status</emphasis> to it. You will also need to "
+"create the directories outlined in the Overview, <emphasis>archives/partial/"
+"</emphasis> and <emphasis>lists/partial/</emphasis>. Then take the disc to "
+"the remote machine and configure the sources.list. On the remote machine "
+"execute the following:"
+msgstr ""
+"Nella macchina di destinazione, la prima cosa da fare è montare il disco e "
+"copiarvi <emphasis>/var/lib/dpkg/status</emphasis>. Sarà anche necessario "
+"creare le directory elencate nella panoramica: <emphasis>archives/partial/</"
+"emphasis> e <emphasis>lists/partial/</emphasis>. Poi portare il disco nella "
+"macchina remota e configurare il file sources.list; in tale macchina "
+"eseguire:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get update\n"
+" [ APT fetches the package files ]\n"
+" # apt-get dist-upgrade\n"
+" [ APT fetches all the packages needed to upgrade the target machine ]\n"
+msgstr ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get update\n"
+" [ APT scarica i file degli elenchi dei pacchetti ]\n"
+" # apt-get dist-upgrade\n"
+" [ APT scarica tutti i pacchetti necessari per aggiornare la macchina di destinazione ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The dist-upgrade command can be replaced with any other standard APT "
+"commands, particularly dselect-upgrade. You can even use an APT front end "
+"such as <emphasis>dselect</emphasis>. However this presents a problem in "
+"communicating your selections back to the local computer."
+msgstr ""
+"Il comando dist-upgrade può essere sostituito con qualsiasi altro comando "
+"APT standard, in particolare dselect-upgrade. Si può persino usare un front-"
+"end per APT come <emphasis>dselect</emphasis>; questo tuttavia pone alcuni "
+"problemi nel comunicare le selezioni fatte al computer locale."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Now the disc contains all of the index files and archives needed to upgrade "
+"the target machine. Take the disc back and run:"
+msgstr ""
+"Ora il disco contiene i file indice e gli archivi necessari per aggiornare "
+"la macchina di destinazione. Riportare il disco alla macchina locale ed "
+"eseguire:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get check\n"
+" [ APT generates a local copy of the cache files ]\n"
+" # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
+" [ Or any other APT command ]\n"
+msgstr ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get check\n"
+" [ APT genera una copia locale dei file di cache ]\n"
+" # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
+" [ O qualsiasi altro comando APT ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"It is necessary for proper function to re-specify the status file to be the "
+"local one. This is very important!"
+msgstr ""
+"Per il corretto funzionamento è necessario rispecificare il fatto che il "
+"file di stato è quello locale. Questo è molto importante!"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"If you are using dselect you can do the very risky operation of copying disc/"
+"status to /var/lib/dpkg/status so that any selections you made on the remote "
+"machine are updated. I highly recommend that people only make selections on "
+"the local machine - but this may not always be possible. DO NOT copy the "
+"status file if dpkg or APT have been run in the mean time!!"
+msgstr ""
+"Se si sta usando dselect si può fare l'operazione molto rischiosa di copiare "
+"disc/status in /var/lib/dpkg/status, in modo che sia aggiornata qualsiasi "
+"selezione fatta nella macchina remota. Si raccomanda di fare le selezioni "
+"solamente nella macchina locale, ma ciò non è sempre possibile. NON copiare "
+"il file di stato se nel frattempo sono stati eseguiti dpkg o APT!"
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Using APT and wget"
+msgstr "Usare APT e wget"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"<emphasis>wget</emphasis> is a popular and portable download tool that can "
+"run on nearly any machine. Unlike the method above this requires that the "
+"Debian machine already has a list of available packages."
+msgstr ""
+"<emphasis>wget</emphasis> è uno strumento popolare e portabile per scaricare "
+"file che può essere eseguito quasi su qualsiasi macchina. A differenza del "
+"metodo descritto sopra, questo richiede che la macchina Debian abbia già un "
+"elenco dei pacchetti disponibili."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The basic idea is to create a disc that has only the archive files "
+"downloaded from the remote site. This is done by using the --print-uris "
+"option to apt-get and then preparing a wget script to actually fetch the "
+"packages."
+msgstr ""
+"L'idea di base è di creare un disco che ha solo i file degli archivi dei "
+"pacchetti, scaricati dal sito remoto. Ciò viene fatto usando l'opzione --"
+"print-uris di apt-get e poi preparando uno script che usa wget per scaricare "
+"effettivamente i pacchetti."
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "Operation"
+msgstr "Funzionamento"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Unlike the previous technique no special configuration files are required. "
+"We merely use the standard APT commands to generate the file list."
+msgstr ""
+"A differenza della tecnica precedente, non sono richiesti file di "
+"configurazione speciali; vengono semplicemente usati i comandi APT standard "
+"per generare l'elenco dei file."
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # apt-get dist-upgrade\n"
+" [ Press no when prompted, make sure you are happy with the actions ]\n"
+" # apt-get -qq --print-uris dist-upgrade &gt; uris\n"
+" # awk '{print \"wget -O \" $2 \" \" $1}' &lt; uris &gt; /disc/wget-script\n"
+msgstr ""
+" # apt-get dist-upgrade \n"
+" [ Inserire no alla domanda, assicurarsi di approvare le azioni proposte ]\n"
+" # apt-get -qq --print-uris dist-upgrade &gt; uris\n"
+" # awk '{print \"wget -O \" $2 \" \" $1}' &lt; uris &gt; /disc/wget-script\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Any command other than dist-upgrade could be used here, including dselect-"
+"upgrade."
+msgstr ""
+"Si può usare qualsiasi comando che non sia dist-upgrade, incluso dselect-"
+"upgrade."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The /disc/wget-script file will now contain a list of wget commands to "
+"execute in order to fetch the necessary archives. This script should be run "
+"with the current directory as the disc's mount point so as to save the "
+"output on the disc."
+msgstr ""
+"Il file /disc/wget-script contiene ora un elenco dei comandi wget da "
+"eseguire per poter scaricare gli archivi necessari. Questo script dovrebbe "
+"essere eseguito con il punto di mount del disco come directory attuale di "
+"lavoro, in modo che l'output venga salvato sul disco."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid "The remote machine would do something like"
+msgstr "Nella macchina remota fare qualcosa come:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # cd /disc\n"
+" # sh -x ./wget-script\n"
+" [ wait.. ]\n"
+msgstr ""
+" # cd /disc\n"
+" # sh -x ./wget-script\n"
+" [ attendere... ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Once the archives are downloaded and the disc returned to the Debian machine "
+"installation can proceed using,"
+msgstr ""
+"Una volta che gli archivi sono stati scaricati e il disco è stato riportato "
+"alla macchina Debian, si può procedere con l'installazione usando"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
+msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid "Which will use the already fetched archives on the disc."
+msgstr "che userà gli archivi già scaricati e presenti sul disco."
+
+#~ msgid "dpkg trigger usage (and related options)"
+#~ msgstr "Uso dei trigger di dpkg (e relative opzioni)"
+
+#~ msgid ""
+#~ "APT can call &dpkg; in such a way as to let it make aggressive use of "
+#~ "triggers over multiple calls of &dpkg;. Without further options &dpkg; "
+#~ "will use triggers once each time it runs. Activating these options can "
+#~ "therefore decrease the time needed to perform the install or upgrade. "
+#~ "Note that it is intended to activate these options per default in the "
+#~ "future, but as it drastically changes the way APT calls &dpkg; it needs a "
+#~ "lot more testing. <emphasis>These options are therefore currently "
+#~ "experimental and should not be used in production environments.</"
+#~ "emphasis> It also breaks progress reporting such that all front-ends will "
+#~ "currently stay around half (or more) of the time in the 100% state while "
+#~ "it actually configures all packages."
+#~ msgstr ""
+#~ "APT può invocare &dpkg; in modo tale da permettergli di fare un uso più "
+#~ "aggressivo dei trigger su chiamate multiple di &dpkg;. Senza opzioni "
+#~ "ulteriori &dpkg; usa i trigger una volta sola per ogni volta che viene "
+#~ "eseguito. Attivando queste opzioni si può quindi diminuire il tempo "
+#~ "necessario per effettuare l'installazione o l'aggiornamento. Notare che "
+#~ "questo è pensato per attivare queste opzioni in modo predefinito nel "
+#~ "futuro ma, dato che cambia drasticamente il modo in cui APT chiama "
+#~ "&dpkg;, necessita di essere testato ancora molto. <emphasis>Queste "
+#~ "opzioni sono perciò al momento sperimentali e non dovrebbero essere usate "
+#~ "in ambienti di produzione.</emphasis> Inoltre rende difettosi i rapporti "
+#~ "sull'avanzamento, tanto che che tutte le interfacce attualmente rimangono "
+#~ "per metà (o più) del tempo nello stato 100% mentre in realtà stanno "
+#~ "venendo configurati i pacchetti."
+
+#~ msgid ""
+#~ "DPkg::NoTriggers \"true\";\n"
+#~ "PackageManager::Configure \"smart\";\n"
+#~ "DPkg::ConfigurePending \"true\";\n"
+#~ "DPkg::TriggersPending \"true\";"
+#~ msgstr ""
+#~ "DPkg::NoTriggers \"true\";\n"
+#~ "PackageManager::Configure \"smart\";\n"
+#~ "DPkg::ConfigurePending \"true\";\n"
+#~ "DPkg::TriggersPending \"true\";"
+
+#~ msgid ""
+#~ "Note that it is not guaranteed that APT will support these options or "
+#~ "that these options will not cause (big) trouble in the future. If you "
+#~ "have understand the current risks and problems with these options, but "
+#~ "are brave enough to help testing them, create a new configuration file "
+#~ "and test a combination of options. Please report any bugs, problems and "
+#~ "improvements you encounter and make sure to note which options you have "
+#~ "used in your reports. Asking &dpkg; for help could also be useful for "
+#~ "debugging proposes, see e.g. <command>dpkg --audit</command>. A defensive "
+#~ "option combination would be <placeholder type=\"literallayout\" id=\"0\"/>"
+#~ msgstr ""
+#~ "Notare che non è garantito che APT supporterà queste opzioni o che queste "
+#~ "opzioni non causeranno (grossi) problemi in futuro. Se i rischi e i "
+#~ "problemi attuali legati a queste opzioni sono chiari, ma si è abbastanza "
+#~ "coraggiosi da volere aiutare a testarle, creare un nuovo file di "
+#~ "configurazione e provare una combinazione di opzioni. Segnalare ogni bug, "
+#~ "problema o miglioramento che si presenta e assicurarsi di indicare nella "
+#~ "segnalazione quali opzioni sono state usate. Potrebbe anche essere utile "
+#~ "chiedere aiuto a &dpkg; per il debug; vedere ad esempio <command>dpkg --"
+#~ "audit</command>. Una combinazione di opzioni sulla difensiva sarebbe "
+#~ "<placeholder type=\"literallayout\" id=\"0\"/>"
+
+#~ msgid ""
+#~ "Add the no triggers flag to all &dpkg; calls (except the ConfigurePending "
+#~ "call). See &dpkg; if you are interested in what this actually means. In "
+#~ "short: &dpkg; will not run the triggers when this flag is present unless "
+#~ "it is explicitly called to do so in an extra call. Note that this option "
+#~ "exists (undocumented) also in older APT versions with a slightly "
+#~ "different meaning: Previously these option only append --no-triggers to "
+#~ "the configure calls to &dpkg; - now APT will also add this flag to the "
+#~ "unpack and remove calls."
+#~ msgstr ""
+#~ "Aggiunge l'opzione --no-triggers a tutte le invocazioni di &dpkg; (tranne "
+#~ "la chiamata ConfigurePending). Se si è interessati a capire cosa ciò "
+#~ "significhi veramente, vedere &dpkg;. In breve: quando questa opzione è "
+#~ "presente &dpkg; non esegue i trigger, a meno che non sia esplicitamente "
+#~ "chiamato per farlo con una chiamata aggiuntiva. Notare che questa opzione "
+#~ "esiste (non documentata) anche in versioni più vecchie di APT, con un "
+#~ "significato leggermente diverso: prima queste opzioni aggiungevano "
+#~ "solamente --no-triggers alle chiamate di &dpkg; per la configurazione, "
+#~ "ora APT aggiunge questa opzione anche alle chiamate per lo "
+#~ "spacchettamento e la rimozione."
+
+#~ msgid ""
+#~ "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" "
+#~ "and \"<literal>no</literal>\". The default value is \"<literal>all</"
+#~ "literal>\", which causes APT to configure all packages. The "
+#~ "\"<literal>smart</literal>\" way is to configure only packages which need "
+#~ "to be configured before another package can be unpacked (Pre-Depends), "
+#~ "and let the rest be configured by &dpkg; with a call generated by the "
+#~ "ConfigurePending option (see below). On the other hand, \"<literal>no</"
+#~ "literal>\" will not configure anything, and totally relies on &dpkg; for "
+#~ "configuration (which at the moment will fail if a Pre-Depends is "
+#~ "encountered). Setting this option to any value other than <literal>all</"
+#~ "literal> will implicitly also activate the next option by default, as "
+#~ "otherwise the system could end in an unconfigured and potentially "
+#~ "unbootable state."
+#~ msgstr ""
+#~ "Valori permessi sono «<literal>all</literal>», «<literal>smart</literal>» "
+#~ "e «<literal>no</literal>». Il valore predefinito è «<literal>all</"
+#~ "literal>», il che fa sì che APT configuri tutti i pacchetti. Il modo "
+#~ "«<literal>smart</literal>» (intelligente) è quello di configurare solo i "
+#~ "pacchetti che devono essere configurati prima che possa essere "
+#~ "spacchettato un altro pacchetto (Pre-Depends), e lasciare che il resto "
+#~ "venga configurato da &dpkg; con una chiamata generata dall'opzione "
+#~ "ConfigurePending (vedere più sotto). D'altro canto, «<literal>no</"
+#~ "literal>» non configura nulla e si affida completamente a &dpkg; per la "
+#~ "configurazione (che al momento fallisce se viene incontrata una relazione "
+#~ "Pre-Depends). Impostare questo parametro ad un qualsiasi valore diverso "
+#~ "da <literal>all</literal> attiva implicitamente in modo predefinito anche "
+#~ "l'opzione successiva, dato che altrimenti il sistema potrebbe finire in "
+#~ "uno stato non configurato e potenzialmente non avviabile."
+
+#~ msgid ""
+#~ "Useful for the <literal>smart</literal> configuration as a package which "
+#~ "has pending triggers is not considered as <literal>installed</literal>, "
+#~ "and &dpkg; treats them as <literal>unpacked</literal> currently which is "
+#~ "a showstopper for Pre-Dependencies (see debbugs #526774). Note that this "
+#~ "will process all triggers, not only the triggers needed to configure this "
+#~ "package."
+#~ msgstr ""
+#~ "Utile per la configurazione <literal>smart</literal> dato che un "
+#~ "pacchetto che ha trigger in sospeso non è considerato come "
+#~ "<literal>installato</literal> e &dpkg; attualmente lo tratta come "
+#~ "<literal>spacchettato</literal> che è un ostacolo per le relazioni Pre-"
+#~ "Depends (vedere il bug Debian #526774). Notare che questo elaborerà tutti "
+#~ "i trigger, non solo quelli necessari per configurare il pacchetto in "
+#~ "questione."
+
+#~ msgid ""
+#~ "OrderList::Score {\n"
+#~ "\tDelete 500;\n"
+#~ "\tEssential 200;\n"
+#~ "\tImmediate 10;\n"
+#~ "\tPreDepends 50;\n"
+#~ "};"
+#~ msgstr ""
+#~ "OrderList::Score {\n"
+#~ "\tDelete 500;\n"
+#~ "\tEssential 200;\n"
+#~ "\tImmediate 10;\n"
+#~ "\tPreDepends 50;\n"
+#~ "};"
+
+#~ msgid ""
+#~ "Essential packages (and their dependencies) should be configured "
+#~ "immediately after unpacking. It is a good idea to do this quite early in "
+#~ "the upgrade process as these configure calls also currently require "
+#~ "<literal>DPkg::TriggersPending</literal> which will run quite a few "
+#~ "triggers (which may not be needed). Essentials get per default a high "
+#~ "score but the immediate flag is relatively low (a package which has a Pre-"
+#~ "Depends is rated higher). These option and the others in the same group "
+#~ "can be used to change the scoring. The following example shows the "
+#~ "settings with their default values. <placeholder type=\"literallayout\" "
+#~ "id=\"0\"/>"
+#~ msgstr ""
+#~ "I pacchetti essenziali (e le loro dipendenze) dovrebbero essere "
+#~ "configurati immediatamente dopo essere stati spacchettati. È una buona "
+#~ "idea farlo abbastanza presto nel processo di aggiornamento, dato che "
+#~ "queste chiamate di configurazione al momento richiedono anche "
+#~ "<literal>DPkg::TriggersPending</literal> che esegue un certo numero di "
+#~ "trigger (che potrebbero non essere necessari). I pacchetti essenziali "
+#~ "ottengono in modo predefinito un punteggio alto, ma il contrassegno di "
+#~ "immediatezza è relativamente basso (un pacchetto che ha una relazione Pre-"
+#~ "Depends è valutato con un punteggio maggiore). Queste opzioni e le altre "
+#~ "nello stesso gruppo possono essere usate per cambiare il punteggio. "
+#~ "L'esempio seguente mostra le impostazioni con i loro valori predefiniti. "
+#~ "<placeholder type=\"literallayout\" id=\"0\"/>"
+
+#~ msgid "List fingerprints of trusted keys."
+#~ msgstr "Elenca le impronte digitali delle chiavi fidate."
+
+#~ msgid "<filename>/etc/apt/trustdb.gpg</filename>"
+#~ msgstr "<filename>/etc/apt/trustdb.gpg</filename>"
+
+#~ msgid "Local trust database of archive keys."
+#~ msgstr "Database locale di fiducia delle chiavi archiviate."
+
+#~ msgid "&keyring-filename;"
+#~ msgstr "&keyring-filename;"
+
+#~ msgid "Keyring of &keyring-distro; archive trusted keys."
+#~ msgstr "Portachiavi delle chiavi fidate degli archivi &keyring-distro;."
+
+#~ msgid "&keyring-removed-filename;"
+#~ msgstr "&keyring-removed-filename;"
+
+#~ msgid "Keyring of &keyring-distro; archive removed trusted keys."
+#~ msgstr ""
+#~ "Portachiavi delle chiavi fidate rimosse degli archivi &keyring-distro;."
+
+#~ msgid ""
+#~ "In the future APT will refuse to work with unauthenticated repositories "
+#~ "by default until support for them is removed entirely. Users have the "
+#~ "option to opt-in to this behavior already by setting the configuration "
+#~ "option <option>Acquire::AllowInsecureRepositories</option> to "
+#~ "<literal>false</literal>."
+#~ msgstr ""
+#~ "In futuro APT si rifiuterà in modo predefinito di lavorare con repository "
+#~ "non autenticati fino a quando il supporto per essi sarà completamente "
+#~ "rimosso. Gli utenti hanno l'opzione di passare di già a questo "
+#~ "comportamento impostando l'opzione di configurazione <option>Acquire::"
+#~ "AllowInsecureRepositories</option> a <literal>false</literal>."
+
+#~ msgid ""
+#~ "Allow the update operation to load data files from a repository without a "
+#~ "trusted signature. If enabled this option no data files will be loaded "
+#~ "and the update operation fails with a error for this source. The default "
+#~ "is false for backward compatibility. This will be changed in the future."
+#~ msgstr ""
+#~ "Permette all'operazione «update» di caricare i file dei dati da un "
+#~ "repository senza una firma fidata. Se questa opzione viene abilitata non "
+#~ "viene caricato alcun file dei dati e l'operazione di «update» fallisce "
+#~ "per tale fonte. Il valore predefinito è impostato a falso per "
+#~ "compatibilità all'indietro. In futuro ciò cambierà."
+
+#~ msgid "&apt-get;, &apt-conf;"
+#~ msgstr "&apt-get;, &apt-conf;"
+
+#~ msgid ""
+#~ "This is a space separated list of all the architectures that appear under "
+#~ "search section. The special architecture 'source' is used to indicate "
+#~ "that this tree has a source archive."
+#~ msgstr ""
+#~ "Questa è una lista di tutte le architetture che appaiono sotto una "
+#~ "sezione, separate da spazi. L'architettura speciale «source» è usata per "
+#~ "indicare che questo albero ha un archivio sorgente."
+
+#~ msgid ""
+#~ "<command>apt</command> (Advanced Package Tool) is the command-line tool "
+#~ "for handling packages. It provides a commandline interface for the "
+#~ "package management of the system. See also &apt-get; and &apt-cache; for "
+#~ "more low-level command options."
+#~ msgstr ""
+#~ "<command>apt</command> (Advanced Package Tool, strumento avanzato per "
+#~ "pacchetti) è lo strumento a riga di comando per maneggiare i pacchetti. "
+#~ "Fornisce un'interfaccia a riga di comando per la gestione dei pacchetti "
+#~ "del sistema. Per altre opzioni di comandi a basso livello vedere anche "
+#~ "&apt-get; e &apt-cache;."
+
+#~ msgid ""
+#~ "<literal>search</literal> searches for the given term(s) and display "
+#~ "matching packages."
+#~ msgstr ""
+#~ "<literal>search</literal> cerca i termini specificati e visualizza i "
+#~ "pacchetti che corrispondono."
+
+#~ msgid ""
+#~ "<literal>show</literal> shows the package information for the given "
+#~ "package(s)."
+#~ msgstr ""
+#~ "<literal>show</literal> mostra le informazioni di pacchetto per i "
+#~ "pacchetti specificati."
+
+#~ msgid ""
+#~ "<literal>install</literal> is followed by one or more package names "
+#~ "desired for installation or upgrading."
+#~ msgstr ""
+#~ "<literal>install</literal> è seguito da uno o più nomi di pacchetto che "
+#~ "si desidera vengano installati o aggiornati."
+
+#~ msgid ""
+#~ "<literal>update</literal> is used to resynchronize the package index "
+#~ "files from their sources."
+#~ msgstr ""
+#~ "<literal>update</literal> viene usato per risincronizzare i file con gli "
+#~ "indici dei pacchetti con le loro fonti."
+
+#~ msgid "Script usage"
+#~ msgstr "Uso di script"
+
+#~ msgid "Differences to &apt-get;"
+#~ msgstr "Differenze con &apt-get;"
+
+#~ msgid ""
+#~ "The <command>apt</command> command is meant to be pleasant for end users "
+#~ "and does not need to be backward compatible like &apt-get;. Therefore "
+#~ "some options are different:"
+#~ msgstr ""
+#~ "Il comando <command>apt</command> non è pensato per essere facile da "
+#~ "usare per gli utenti finali e non è necessario sia compatibile "
+#~ "all'indietro come &apt-get;. Perciò alcune opzioni sono diverse:"
+
+#~ msgid "The option <literal>DPkg::Progress-Fancy</literal> is enabled."
+#~ msgstr "L'opzione <literal>DPkg::Progress-Fancy</literal> è abilitata."
+
+#~ msgid "The option <literal>APT::Color</literal> is enabled."
+#~ msgstr "L'opzione <literal>APT::Color</literal> è abilitata."
+
+#~ msgid ""
+#~ "A new <literal>list</literal> command is available similar to "
+#~ "<literal>dpkg --list</literal>."
+#~ msgstr ""
+#~ "È disponibile un nuovo comando <literal>list</literal> simile a "
+#~ "<literal>dpkg --list</literal>."
+
+#~ msgid ""
+#~ "The option <literal>upgrade</literal> has <literal>--with-new-pkgs</"
+#~ "literal> enabled by default."
+#~ msgstr ""
+#~ "L'opzione <literal>upgrade</literal> ha <literal>--with-new-pkgs</"
+#~ "literal> abilitato in modo predefinito."
+
+#~ msgid ""
+#~ "Pass advanced options to gpg. With adv --recv-key you can download the "
+#~ "public key."
+#~ msgstr ""
+#~ "Passa opzioni avanzate a gpg. Con adv --recv-key è possibile scaricare la "
+#~ "chiave pubblica."
+
+#~ msgid "mark/unmark a package as being automatically-installed"
+#~ msgstr ""
+#~ "mette/toglie il contrassegno di automaticamente installato ai pacchetti"
+
+#~ msgid ""
+#~ "<command>apt-mark</command> will change whether a package has been marked "
+#~ "as being automatically installed."
+#~ msgstr ""
+#~ "<command>apt-mark</command> cambia il contrassegno di un pacchetto che "
+#~ "indica se è stato installato automaticamente."
+
+#~ msgid ""
+#~ "<literal>hold</literal> is used to mark a package as held back, which "
+#~ "will prevent the package from being automatically installed, upgraded or "
+#~ "removed. The command is only a wrapper around <command>dpkg --set-"
+#~ "selections</command> and the state is therefore maintained by &dpkg; and "
+#~ "not affected by the <option>--file</option> option."
+#~ msgstr ""
+#~ "<literal>hold</literal> viene usato per contrassegnare un pacchetto come "
+#~ "bloccato, il che impedisce che il pacchetto venga automaticamente "
+#~ "installato, aggiornato o rimosso. Il comando è solamente un wrapper per "
+#~ "<command>dpkg --set-selections</command> e lo stato è pertanto mantenuto "
+#~ "da &dpkg; e non è influenzato dall'opzione <option>--file</option>."
+
+#~ msgid ""
+#~ "If a package comes from a archive without a signature, or with a "
+#~ "signature that apt does not have a key for, that package is considered "
+#~ "untrusted, and installing it will result in a big warning. <command>apt-"
+#~ "get</command> will currently only warn for unsigned archives; future "
+#~ "releases might force all sources to be verified before downloading "
+#~ "packages from them."
+#~ msgstr ""
+#~ "Se un pacchetto proviene da un archivio senza una firma, o con una firma "
+#~ "per la quale apt non ha una chiave, tale pacchetto viene considerato non "
+#~ "fidato e quando lo si installa si ottiene un importante avvertimento. "
+#~ "<command>apt-get</command> attualmente avverte solamente in caso di "
+#~ "archivi non firmati; le versioni future potrebbero forzare la verifica di "
+#~ "tutte le fonti prima di scaricare pacchetti da esse."
+
+#~ msgid ""
+#~ "No action; perform a simulation of events that would occur but do not "
+#~ "actually change the system. Configuration Item: <literal>APT::Get::"
+#~ "Simulate</literal>."
+#~ msgstr ""
+#~ "Nessuna azione; effettua una simulazione degli eventi che si "
+#~ "verificherebbero, ma non cambia realmente il sistema. Voce di "
+#~ "configurazione: <literal>APT::Get::Simulate</literal>."
+
+#~ msgid ""
+#~ "Simulated runs performed as a user will automatically deactivate locking "
+#~ "(<literal>Debug::NoLocking</literal>), and if the option <literal>APT::"
+#~ "Get::Show-User-Simulation-Note</literal> is set (as it is by default) a "
+#~ "notice will also be displayed indicating that this is only a simulation. "
+#~ "Runs performed as root do not trigger either NoLocking or the notice - "
+#~ "superusers should know what they are doing without further warnings from "
+#~ "<literal>apt-get</literal>."
+#~ msgstr ""
+#~ "Le esecuzioni simulate effettuate da un utente disattivano "
+#~ "automaticamente il lock (<literal>Debug::NoLocking</literal>) e se è "
+#~ "impostata l'opzione <literal>APT::Get::Show-User-Simulation-Note</"
+#~ "literal> (come predefinito), viene anche visualizzato un messaggio che "
+#~ "indica che quella fatta è solo una simulazione. Le esecuzioni effettuate "
+#~ "da root non attivano né NoLocking né i messaggi: i superutenti dovrebbero "
+#~ "sapere ciò che stanno facendo senza bisogno di ulteriori avvertimenti da "
+#~ "<literal>apt-get</literal>."
+
+#~ msgid ""
+#~ "Ignore if packages can't be authenticated and don't prompt about it. "
+#~ "This is useful for tools like pbuilder. Configuration Item: "
+#~ "<literal>APT::Get::AllowUnauthenticated</literal>."
+#~ msgstr ""
+#~ "Ignora se i pacchetti non possono essere autenticati e non chiedere "
+#~ "all'utente cosa fare. È utile per strumenti come pbuilder. Voce di "
+#~ "configurazione: <literal>APT::Get::AllowUnauthenticated</literal>."
+
+#~ msgid ""
+#~ "Version 2 of this protocol dumps more information, including the protocol "
+#~ "version, the APT configuration space and the packages, files and versions "
+#~ "being changed. Version 3 adds the architecture and <literal>MultiArch</"
+#~ "literal> flag to each version being dumped."
+#~ msgstr ""
+#~ "La versione 2 di questo protocollo fa il dump di più informazioni, "
+#~ "inclusi la versione del protocollo, lo spazio di configurazione di APT, e "
+#~ "i pacchetti, file e versioni che vengono modificati. La versione 3 "
+#~ "aggiunge l'architettura e il contrassegno <literal>MultiArch</literal> "
+#~ "per ciascuna versione di cui viene fatto il dump."
+
+#~ msgid ""
+#~ "to the versions that are not installed and do not belong to the target "
+#~ "release."
+#~ msgstr ""
+#~ "alle versioni che non sono installate e non appartengono al rilascio "
+#~ "obiettivo."
+
+#~ msgid ""
+#~ "Each line specifying a source starts with type (e.g. <literal>deb-src</"
+#~ "literal>) followed by options and arguments for this type. Individual "
+#~ "entries cannot be continued onto a following line. Empty lines are "
+#~ "ignored, and a <literal>#</literal> character anywhere on a line marks "
+#~ "the remainder of that line as a comment."
+#~ msgstr ""
+#~ "Ogni riga che specifica una fonte inizia con il tipo (per esempio "
+#~ "<literal>deb-src</literal>), seguito dalle opzioni e dagli argomenti per "
+#~ "tale tipo. Ogni singola voce non può essere divisa su più righe. Le righe "
+#~ "vuote vengono ignorate e un carattere <literal>#</literal> in qualsiasi "
+#~ "punto di una riga contrassegna come commento la parte rimanente della "
+#~ "riga."
+
+#~ msgid "deb [ options ] uri suite [component1] [component2] [...]"
+#~ msgstr "deb [ opzioni ] uri suite [componente1] [componente2] [...]"
+
+#~ msgid ""
+#~ " Types: deb deb-src\n"
+#~ " URIs: http://example.com\n"
+#~ " Suites: stable testing\n"
+#~ " Sections: component1 component2\n"
+#~ " Description: short\n"
+#~ " long long long\n"
+#~ " [option1]: [option1-value]\n"
+#~ "\n"
+#~ " Types: deb\n"
+#~ " URIs: http://another.example.com\n"
+#~ " Suites: experimental\n"
+#~ " Sections: component1 component2\n"
+#~ " Enabled: no\n"
+#~ " Description: short\n"
+#~ " long long long\n"
+#~ " [option1]: [option1-value]\n"
+#~ " "
+#~ msgstr ""
+#~ " Types: deb deb-src\n"
+#~ " URIs: http://example.com\n"
+#~ " Suites: stable testing\n"
+#~ " Sections: componente1 componente2\n"
+#~ " Description: breve\n"
+#~ " lunga lunga lunga\n"
+#~ " [opzione1]: [valore-opzione1]\n"
+#~ "\n"
+#~ " Types: deb\n"
+#~ " URIs: http://another.example.com\n"
+#~ " Suites: experimental\n"
+#~ " Sections: componente1 componente2\n"
+#~ " Enabled: no\n"
+#~ " Description:breve\n"
+#~ " lunga lunga lunga\n"
+#~ " [opzione1]: [valore-opzione1]\n"
+#~ " "
+
+#~ msgid ""
+#~ "<literal>options</literal> is always optional and needs to be surrounded "
+#~ "by square brackets. It can consist of multiple settings in the form "
+#~ "<literal><replaceable>setting</replaceable>=<replaceable>value</"
+#~ "replaceable></literal>. Multiple settings are separated by spaces. The "
+#~ "following settings are supported by APT (note however that unsupported "
+#~ "settings will be ignored silently):"
+#~ msgstr ""
+#~ "<literal>opzioni</literal> è sempre opzionale e deve essere racchiuso tra "
+#~ "parentesi quadre. Può consistere di più impostazioni nella forma "
+#~ "<literal><replaceable>impostazione</replaceable>=<replaceable>valore</"
+#~ "replaceable></literal>. Impostazioni multiple vengono separate da spazi. "
+#~ "APT supporta le seguenti impostazioni (notare però che le impostazioni "
+#~ "non supportate verranno ignorate in modo silenzioso):"
+
+#~ msgid ""
+#~ "<literal>arch+=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#~ "replaceable>,…</literal> and <literal>arch-=<replaceable>arch1</"
+#~ "replaceable>,<replaceable>arch2</replaceable>,…</literal> which can be "
+#~ "used to add/remove architectures from the set which will be downloaded."
+#~ msgstr ""
+#~ "<literal>arch+=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#~ "replaceable>,…</literal> e <literal>arch-=<replaceable>arch1</"
+#~ "replaceable>,<replaceable>arch2</replaceable>,…</literal> possono essere "
+#~ "usati per aggiungere e rimuovere architetture dall'insieme di quelle che "
+#~ "verranno scaricate."
+
+#~ msgid ""
+#~ "<literal>trusted=yes</literal> can be set to indicate that packages from "
+#~ "this source are always authenticated even if the <filename>Release</"
+#~ "filename> file is not signed or the signature can't be checked. This "
+#~ "disables parts of &apt-secure; and should therefore only be used in a "
+#~ "local and trusted context. <literal>trusted=no</literal> is the opposite "
+#~ "which handles even correctly authenticated sources as not authenticated."
+#~ msgstr ""
+#~ "<literal>trusted=yes</literal> può essere usato per indicare che i "
+#~ "pacchetti da questa fonte sono sempre autenticati anche se il file "
+#~ "<filename>Release</filename> non è firmato o la firma non può essere "
+#~ "controllata. Ciò disabilita parti di &apt-secure; e dovrebbe quindi "
+#~ "essere usato solo in un contesto locale o fidato. <literal>trusted=no</"
+#~ "literal> fa l'opposto e tratta anche le fonti correttamente autenticate "
+#~ "come non autenticate."
+
+#~ msgid "Some examples:"
+#~ msgstr "Alcuni esempi:"
+
+#~ msgid ""
+#~ "deb http://ftp.debian.org/debian &debian-stable-codename; main contrib "
+#~ "non-free\n"
+#~ "deb http://security.debian.org/ &debian-stable-codename;/updates main "
+#~ "contrib non-free\n"
+#~ " "
+#~ msgstr ""
+#~ "deb http://ftp.debian.org/debian &debian-stable-codename; main contrib "
+#~ "non-free\n"
+#~ "deb http://security.debian.org/ &debian-stable-codename;/updates main "
+#~ "contrib non-free\n"
+#~ " "
+
+#~ msgid "apt"
+#~ msgstr "apt"
+
+#~ msgid "16 June 1998"
+#~ msgstr "16 giugno 1998"
+
+#~ msgid "Debian"
+#~ msgstr "Debian"
+
+#~ msgid "NAME"
+#~ msgstr "NOME"
+
+#~ msgid "apt - Advanced Package Tool"
+#~ msgstr "apt - Advanced Package Tool (strumento avanzato per i pacchetti)"
+
+#~ msgid "SYNOPSIS"
+#~ msgstr "SINTASSI"
+
+#~ msgid "B<apt>"
+#~ msgstr "B<apt>"
+
+#~ msgid "DESCRIPTION"
+#~ msgstr "DESCRIZIONE"
+
+#, fuzzy
+#~| msgid ""
+#~| "APT is a management system for software packages. For normal day to day "
+#~| "package management there are several front-ends available, such as "
+#~| "B<aptitude>(8) for the command line or B<synaptic>(8) for the X Window "
+#~| "System. Some options are only implemented in B<apt-get>(8) though."
+#~ msgid ""
+#~ "For normal day to day package management there are several front-ends "
+#~ "available, such as B<aptitude>(8) for the command line or "
+#~ "B<synaptic>(8) for the X Window System. Some options are only "
+#~ "implemented in B<apt-get>(8) though."
+#~ msgstr ""
+#~ "APT è un sistema di gestione per i pacchetti software. Per la normale "
+#~ "gestione quotidiana dei pacchetti sono disponibili diverse interfacce, "
+#~ "quali B<aptitude>(8) per la riga di comando o B<synaptic>(8) per il "
+#~ "sistema X Window. Comunque alcune opzioni sono implementate solo in B<apt-"
+#~ "get>(8)."
+
+#~ msgid "SEE ALSO"
+#~ msgstr "VEDERE ANCHE"
+
+#, fuzzy
+#~| msgid ""
+#~| "B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources.list>(5), "
+#~| "B<apt_preferences>(5), B<apt-secure>(8)"
+#~ msgid ""
+#~ "B<apt>(8), B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources."
+#~ "list>(5), B<apt_preferences>(5), B<apt-secure>(8)"
+#~ msgstr ""
+#~ "B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources.list>(5), "
+#~ "B<apt_preferences>(5), B<apt-secure>(8)"
+
+#~ msgid "DIAGNOSTICS"
+#~ msgstr "DIAGNOSTICA"
+
+#~ msgid "apt returns zero on normal operation, decimal 100 on error."
+#~ msgstr ""
+#~ "apt restituisce zero in caso di funzionamento normale e il valore "
+#~ "decimale 100 in caso di errore."
+
+#~ msgid "BUGS"
+#~ msgstr "BUG"
+
+#~ msgid "This manpage isn't even started."
+#~ msgstr "Questa pagina di manuale non è neanche stata iniziata."
+
+#~ msgid ""
+#~ "See E<lt>http://bugs.debian.org/aptE<gt>. If you wish to report a bug in "
+#~ "B<apt>, please see I</usr/share/doc/debian/bug-reporting.txt> or the "
+#~ "B<reportbug>(1) command."
+#~ msgstr ""
+#~ "Vedere E<lt>http://bugs.debian.org/aptE<gt>. Per segnalare un bug in "
+#~ "B<apt>, vedere I</usr/share/doc/debian/bug-reporting.txt> o il comando "
+#~ "B<reportbug>(1)."
+
+#~ msgid "AUTHOR"
+#~ msgstr "AUTORE"
+
+#~ msgid "apt was written by the APT team E<lt>apt@packages.debian.orgE<gt>."
+#~ msgstr "apt è stato scritto dal Team APT E<lt>apt@packages.debian.orgE<gt>."
+
+#~ msgid "Debian GNU/Linux"
+#~ msgstr "Debian GNU/Linux"
+
+#~ msgid "OPTIONS"
+#~ msgstr "OPZIONI"
+
+#~ msgid "None."
+#~ msgstr "Nessuna."
+
+#~ msgid "FILES"
+#~ msgstr "FILE"
+
+#~ msgid ""
+#~ "<!-- Some common paths.. --> <!ENTITY docdir \"/usr/share/doc/apt/\"> <!"
+#~ "ENTITY guidesdir \"/usr/share/doc/apt-doc/\"> <!ENTITY configureindex "
+#~ "\"<filename>&docdir;examples/configure-index.gz</filename>\"> <!ENTITY "
+#~ "aptconfdir \"<filename>/etc/apt.conf</filename>\"> <!ENTITY statedir \"/"
+#~ "var/lib/apt\"> <!ENTITY cachedir \"/var/cache/apt\">"
+#~ msgstr ""
+#~ "<!-- Alcuni percorsi comuni. --> <!ENTITY docdir \"/usr/share/doc/apt/\"> "
+#~ "<!ENTITY guidesdir \"/usr/share/doc/apt-doc/\"> <!ENTITY configureindex "
+#~ "\"<filename>&docdir;examples/configure-index.gz</filename>\"> <!ENTITY "
+#~ "aptconfdir \"<filename>/etc/apt.conf</filename>\"> <!ENTITY statedir \"/"
+#~ "var/lib/apt\"> <!ENTITY cachedir \"/var/cache/apt\">"
+
+#~ msgid ""
+#~ "<!-- Cross references to other man pages -->\n"
+#~ "<!ENTITY apt-conf \"<citerefentry>\n"
+#~ " <refentrytitle><filename>apt.conf</filename></refentrytitle>\n"
+#~ " <manvolnum>5</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!-- Riferimenti incrociati ad altre pagine di manuale -->\n"
+#~ "<!ENTITY apt-conf \"<citerefentry>\n"
+#~ " <refentrytitle><filename>apt.conf</filename></refentrytitle>\n"
+#~ " <manvolnum>5</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY apt-get \"<citerefentry>\n"
+#~ " <refentrytitle><command>apt-get</command></refentrytitle>\n"
+#~ " <manvolnum>8</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY apt-get \"<citerefentry>\n"
+#~ " <refentrytitle><command>apt-get</command></refentrytitle>\n"
+#~ " <manvolnum>8</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY apt-config \"<citerefentry>\n"
+#~ " <refentrytitle><command>apt-config</command></refentrytitle>\n"
+#~ " <manvolnum>8</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY apt-config \"<citerefentry>\n"
+#~ " <refentrytitle><command>apt-config</command></refentrytitle>\n"
+#~ " <manvolnum>8</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY apt-cdrom \"<citerefentry>\n"
+#~ " <refentrytitle><command>apt-cdrom</command></refentrytitle>\n"
+#~ " <manvolnum>8</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY apt-cdrom \"<citerefentry>\n"
+#~ " <refentrytitle><command>apt-cdrom</command></refentrytitle>\n"
+#~ " <manvolnum>8</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY apt-cache \"<citerefentry>\n"
+#~ " <refentrytitle><command>apt-cache</command></refentrytitle>\n"
+#~ " <manvolnum>8</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY apt-cache \"<citerefentry>\n"
+#~ " <refentrytitle><command>apt-cache</command></refentrytitle>\n"
+#~ " <manvolnum>8</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY apt-preferences \"<citerefentry>\n"
+#~ " <refentrytitle><command>apt_preferences</command></refentrytitle>\n"
+#~ " <manvolnum>5</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY apt-preferences \"<citerefentry>\n"
+#~ " <refentrytitle><command>apt_preferences</command></refentrytitle>\n"
+#~ " <manvolnum>5</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY apt-key \"<citerefentry>\n"
+#~ " <refentrytitle><command>apt-key</command></refentrytitle>\n"
+#~ " <manvolnum>8</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY apt-key \"<citerefentry>\n"
+#~ " <refentrytitle><command>apt-key</command></refentrytitle>\n"
+#~ " <manvolnum>8</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY apt-secure \"<citerefentry>\n"
+#~ " <refentrytitle>apt-secure</refentrytitle>\n"
+#~ " <manvolnum>8</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY apt-secure \"<citerefentry>\n"
+#~ " <refentrytitle>apt-secure</refentrytitle>\n"
+#~ " <manvolnum>8</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY apt-ftparchive \"<citerefentry>\n"
+#~ " <refentrytitle><filename>apt-ftparchive</filename></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY apt-ftparchive \"<citerefentry>\n"
+#~ " <refentrytitle><filename>apt-ftparchive</filename></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY sources-list \"<citerefentry>\n"
+#~ " <refentrytitle><filename>sources.list</filename></refentrytitle>\n"
+#~ " <manvolnum>5</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY sources-list \"<citerefentry>\n"
+#~ " <refentrytitle><filename>sources.list</filename></refentrytitle>\n"
+#~ " <manvolnum>5</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY reportbug \"<citerefentry>\n"
+#~ " <refentrytitle><command>reportbug</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY reportbug \"<citerefentry>\n"
+#~ " <refentrytitle><command>reportbug</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY dpkg \"<citerefentry>\n"
+#~ " <refentrytitle><command>dpkg</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY dpkg \"<citerefentry>\n"
+#~ " <refentrytitle><command>dpkg</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY dpkg-buildpackage \"<citerefentry>\n"
+#~ " <refentrytitle><command>dpkg-buildpackage</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY dpkg-buildpackage \"<citerefentry>\n"
+#~ " <refentrytitle><command>dpkg-buildpackage</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY gzip \"<citerefentry>\n"
+#~ " <refentrytitle><command>gzip</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY gzip \"<citerefentry>\n"
+#~ " <refentrytitle><command>gzip</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY dpkg-scanpackages \"<citerefentry>\n"
+#~ " <refentrytitle><command>dpkg-scanpackages</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY dpkg-scanpackages \"<citerefentry>\n"
+#~ " <refentrytitle><command>dpkg-scanpackages</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY dpkg-scansources \"<citerefentry>\n"
+#~ " <refentrytitle><command>dpkg-scansources</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY dpkg-scansources \"<citerefentry>\n"
+#~ " <refentrytitle><command>dpkg-scansources</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY dselect \"<citerefentry>\n"
+#~ " <refentrytitle><command>dselect</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY dselect \"<citerefentry>\n"
+#~ " <refentrytitle><command>dselect</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY aptitude \"<citerefentry>\n"
+#~ " <refentrytitle><command>aptitude</command></refentrytitle>\n"
+#~ " <manvolnum>8</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY aptitude \"<citerefentry>\n"
+#~ " <refentrytitle><command>aptitude</command></refentrytitle>\n"
+#~ " <manvolnum>8</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY synaptic \"<citerefentry>\n"
+#~ " <refentrytitle><command>synaptic</command></refentrytitle>\n"
+#~ " <manvolnum>8</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY synaptic \"<citerefentry>\n"
+#~ " <refentrytitle><command>synaptic</command></refentrytitle>\n"
+#~ " <manvolnum>8</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY debsign \"<citerefentry>\n"
+#~ " <refentrytitle><command>debsign</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY debsign \"<citerefentry>\n"
+#~ " <refentrytitle><command>debsign</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY debsig-verify \"<citerefentry>\n"
+#~ " <refentrytitle><command>debsig-verify</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY debsig-verify \"<citerefentry>\n"
+#~ " <refentrytitle><command>debsig-verify</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY gpg \"<citerefentry>\n"
+#~ " <refentrytitle><command>gpg</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY gpg \"<citerefentry>\n"
+#~ " <refentrytitle><command>gpg</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY gnome-apt \"<citerefentry>\n"
+#~ " <refentrytitle><command>gnome-apt</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY gnome-apt \"<citerefentry>\n"
+#~ " <refentrytitle><command>gnome-apt</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!ENTITY wajig \"<citerefentry>\n"
+#~ " <refentrytitle><command>wajig</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+#~ msgstr ""
+#~ "<!ENTITY wajig \"<citerefentry>\n"
+#~ " <refentrytitle><command>wajig</command></refentrytitle>\n"
+#~ " <manvolnum>1</manvolnum>\n"
+#~ " </citerefentry>\"\n"
+#~ ">\n"
+
+#~ msgid ""
+#~ "<!-- Boiler plate docinfo section -->\n"
+#~ "<!ENTITY apt-docinfo \"\n"
+#~ " <refentryinfo>\n"
+#~ " <address><email>apt@packages.debian.org</email></address>\n"
+#~ " <author>\n"
+#~ " <firstname>Jason</firstname> <surname>Gunthorpe</surname>\n"
+#~ " <contrib></contrib>\n"
+#~ " </author>\n"
+#~ " <copyright><year>1998-2001</year> <holder>Jason Gunthorpe</holder></"
+#~ "copyright>\n"
+#~ " <date>28 October 2008</date>\n"
+#~ " <productname>Linux</productname>\n"
+#~ msgstr ""
+#~ "<!-- Sezione standard docinfo -->\n"
+#~ "<!ENTITY apt-docinfo \"\n"
+#~ " <refentryinfo>\n"
+#~ " <address><email>apt@packages.debian.org</email></address>\n"
+#~ " <author>\n"
+#~ " <firstname>Jason</firstname> <surname>Gunthorpe</surname>\n"
+#~ " <contrib></contrib>\n"
+#~ " </author>\n"
+#~ " <copyright><year>1998-2001</year> <holder>Jason Gunthorpe</holder></"
+#~ "copyright>\n"
+#~ " <date>28 ottobre 2008</date>\n"
+#~ " <productname>Linux</productname>\n"
+
+#~ msgid ""
+#~ " </refentryinfo>\n"
+#~ "\"> \n"
+#~ msgstr ""
+#~ " </refentryinfo>\n"
+#~ "\"> \n"
+
+#~ msgid ""
+#~ "<!ENTITY apt-email \"\n"
+#~ " <address>\n"
+#~ " <email>apt@packages.debian.org</email>\n"
+#~ " </address>\n"
+#~ "\">\n"
+#~ msgstr ""
+#~ "<!ENTITY apt-email \"\n"
+#~ " <address>\n"
+#~ " <email>apt@packages.debian.org</email>\n"
+#~ " </address>\n"
+#~ "\">\n"
+
+#~ msgid ""
+#~ "<!ENTITY apt-author.jgunthorpe \"\n"
+#~ " <author>\n"
+#~ " <firstname>Jason</firstname>\n"
+#~ " <surname>Gunthorpe</surname>\n"
+#~ " <contrib></contrib>\n"
+#~ " </author>\n"
+#~ "\">\n"
+#~ msgstr ""
+#~ "<!ENTITY apt-author.jgunthorpe \"\n"
+#~ " <author>\n"
+#~ " <firstname>Jason</firstname>\n"
+#~ " <surname>Gunthorpe</surname>\n"
+#~ " <contrib></contrib>\n"
+#~ " </author>\n"
+#~ "\">\n"
+
+#~ msgid ""
+#~ "<!ENTITY apt-author.moconnor \"\n"
+#~ " <author>\n"
+#~ " <firstname>Mike</firstname>\n"
+#~ " <surname>O'Connor</surname>\n"
+#~ " <contrib></contrib>\n"
+#~ " </author>\n"
+#~ "\">\n"
+#~ msgstr ""
+#~ "<!ENTITY apt-author.moconnor \"\n"
+#~ " <author>\n"
+#~ " <firstname>Mike</firstname>\n"
+#~ " <surname>O'Connor</surname>\n"
+#~ " <contrib></contrib>\n"
+#~ " </author>\n"
+#~ "\">\n"
+
+#~ msgid ""
+#~ "<!ENTITY apt-product \"\n"
+#~ " <productname>Linux</productname>\n"
+#~ "\">\n"
+#~ msgstr ""
+#~ "<!ENTITY apt-product \"\n"
+#~ " <productname>Linux</productname>\n"
+#~ "\">\n"
+
+#~ msgid ""
+#~ "<!ENTITY apt-copyright \"\n"
+#~ " <copyright>\n"
+#~ " <holder>Jason Gunthorpe</holder>\n"
+#~ " <year>1998-2001</year>\n"
+#~ " </copyright>\n"
+#~ "\">\n"
+#~ msgstr ""
+#~ "<!ENTITY apt-copyright \"\n"
+#~ " <copyright>\n"
+#~ " <holder>Jason Gunthorpe</holder>\n"
+#~ " <year>1998-2001</year>\n"
+#~ " </copyright>\n"
+#~ "\">\n"
+
+#~ msgid ""
+#~ "<!-- Boiler plate Bug reporting section -->\n"
+#~ "<!ENTITY manbugs \"\n"
+#~ " <refsect1><title>Bugs</title>\n"
+#~ " <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</"
+#~ "ulink>. \n"
+#~ " If you wish to report a bug in APT, please see\n"
+#~ " <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
+#~ " &reportbug; command.\n"
+#~ " </para>\n"
+#~ " </refsect1>\n"
+#~ "\">\n"
+#~ msgstr ""
+#~ "<!-- Sezione standard segnalazione bachi -->\n"
+#~ "<!ENTITY manbugs \"\n"
+#~ " <refsect1><title>Bachi</title>\n"
+#~ " <para><ulink url='http://bugs.debian.org/src:apt'>Pagina dei bachi di "
+#~ "APT</ulink>. \n"
+#~ " Per segnalare un baco in APT, vedere\n"
+#~ " <filename>/usr/share/doc/debian/bug-reporting.txt</filename> o il\n"
+#~ " comando &reportbug;.\n"
+#~ " </para>\n"
+#~ " </refsect1>\n"
+#~ "\">\n"
+
+#~ msgid ""
+#~ " <varlistentry>\n"
+#~ " <term><option>-c</option></term>\n"
+#~ " <term><option>--config-file</option></term>\n"
+#~ " <listitem><para>Configuration File; Specify a configuration file to "
+#~ "use. \n"
+#~ " The program will read the default configuration file and then this \n"
+#~ " configuration file. See &apt-conf; for syntax information. \n"
+#~ " </para>\n"
+#~ " </listitem>\n"
+#~ " </varlistentry>\n"
+#~ msgstr ""
+#~ " <varlistentry>\n"
+#~ " <term><option>-c</option></term>\n"
+#~ " <term><option>--config-file</option></term>\n"
+#~ " <listitem><para>File di configurazione; Specifica un file di "
+#~ "configurazione da usare. \n"
+#~ " Il programma leggerà il file di configurazione predefinito e poi "
+#~ "questo \n"
+#~ " file di configurazione. Vedere &apt-conf; per informazioni sulla "
+#~ "sintassi. \n"
+#~ " </para>\n"
+#~ " </listitem>\n"
+#~ " </varlistentry>\n"
+
+#~ msgid ""
+#~ " <varlistentry><term><filename>&cachedir;/archives/partial/</"
+#~ "filename></term>\n"
+#~ " <listitem><para>Storage area for package files in transit.\n"
+#~ " Configuration Item: <literal>Dir::Cache::Archives</literal> "
+#~ "(implicit partial). </para></listitem>\n"
+#~ " </varlistentry>\n"
+#~ "\">\n"
+#~ msgstr ""
+#~ " <varlistentry><term><filename>&cachedir;/archives/partial/</"
+#~ "filename></term>\n"
+#~ " <listitem><para>Area di memorizzazione per i file dei pacchetti in "
+#~ "transito.\n"
+#~ " Voce di configurazione: <literal>Dir::Cache::Archives</literal> "
+#~ "(partial implicito). </para></listitem>\n"
+#~ " </varlistentry>\n"
+#~ "\">\n"
+
+#~ msgid ""
+#~ " <varlistentry><term><filename>&statedir;/lists/partial/</filename></"
+#~ "term>\n"
+#~ " <listitem><para>Storage area for state information in transit.\n"
+#~ " Configuration Item: <literal>Dir::State::Lists</literal> (implicit "
+#~ "partial).</para></listitem>\n"
+#~ " </varlistentry>\n"
+#~ "\">\n"
+#~ msgstr ""
+#~ " <varlistentry><term><filename>&statedir;/lists/partial/</filename></"
+#~ "term>\n"
+#~ " <listitem><para>Area di archiviazione per le informazioni di stato "
+#~ "in transito.\n"
+#~ " Voce di configurazione: <literal>Dir::State::Lists</literal> "
+#~ "(partial implicito).</para></listitem>\n"
+#~ " </varlistentry>\n"
+#~ "\">\n"
+
+#~ msgid "<!ENTITY translation-title \"TRANSLATION\">"
+#~ msgstr "<!ENTITY translation-title \"TRANSLATION\">"
+
+#~ msgid ""
+#~ "<!-- TRANSLATOR: This is a placeholder. You should write here who has "
+#~ "constributed\n"
+#~ " to the translation in the past, who is responsible now and maybe "
+#~ "further information\n"
+#~ " specially related to your translation. -->\n"
+#~ "<!ENTITY translation-holder \"\n"
+#~ " The english translation was done by John Doe <email>john@doe.org</"
+#~ "email> in 2009,\n"
+#~ " 2010 and Daniela Acme <email>daniela@acme.us</email> in 2010 "
+#~ "together with the\n"
+#~ " Debian Dummy l10n Team <email>debian-l10n-dummy@lists.debian.org</"
+#~ "email>.\n"
+#~ "\">\n"
+#~ msgstr ""
+#~ "<!-- TRADUTTORE: questo è un segnaposto. Qui bisogna scrivere chi ha "
+#~ "contribuito\n"
+#~ " alla traduzione in passato, l'attuale responsabile e nel caso "
+#~ "ulteriori informazioni\n"
+#~ " riguardanti in modo particolare questa traduzione. -->\n"
+#~ "<!ENTITY translation-holder \"\n"
+#~ " La traduzione italiana è stata fatta da Eugenia Franzoni\n"
+#~ " <email>eugenia@linuxcare.com</email> nel 2000 e da Gabriele Stilli\n"
+#~ " <email>superenzima@libero.it</email> nel 2010 insieme a\n"
+#~ " chiunque vorrà unirsi (DA CORREGGERE ALLA FINE).\n"
+#~ "\">\n"
+
+#~ msgid ""
+#~ "<!-- TRANSLATOR: As a translation is allowed to have 20% of untranslated/"
+#~ "fuzzy strings\n"
+#~ " in a shipped manpage will maybe appear english parts. -->\n"
+#~ "<!ENTITY translation-english \"\n"
+#~ " Note that this translated document may contain untranslated parts.\n"
+#~ " This is done on purpose, to avoid losing content when the\n"
+#~ " translation is lagging behind the original content.\n"
+#~ "\">\n"
+#~ msgstr ""
+#~ "<!-- TRADUTTORE: poiché una traduzione può avere il 20% di stringhe non "
+#~ "tradotte/fuzzy\n"
+#~ " in una manpage fornita è possibile che compaiano parti in inglese. --"
+#~ ">\n"
+#~ "<!ENTITY translation-english \"\n"
+#~ " Questo documento tradotto può contenere parti non tradotte.\n"
+#~ " Ciò è fatto di proposito, per evitare di perdere contenuti quando "
+#~ "la\n"
+#~ " traduzione è più vecchia del contenuto originale.\n"
+#~ "\">\n"
+
+#~ msgid ""
+#~ "&apt-author.jgunthorpe; &apt-author.team; &apt-email; &apt-product; "
+#~ "<date>29 February 2004</date>"
+#~ msgstr ""
+#~ "&apt-author.jgunthorpe; &apt-author.team; &apt-email; &apt-product; "
+#~ "<date>29 February 2004</date>"
+
+#~ msgid "APT package handling utility -- cache manipulator"
+#~ msgstr "APT strumento di gestione pacchetti -- manipolatore di cache"
+
+#~ msgid ""
+#~ "<command>apt-cache</command> <arg><option>-hvsn</option></arg> "
+#~ "<arg><option>-o=<replaceable>config string</replaceable></option></arg> "
+#~ "<arg><option>-c=<replaceable>file</replaceable></option></arg> <group "
+#~ "choice=\"req\"> <arg>add <arg choice=\"plain\" rep=\"repeat"
+#~ "\"><replaceable>file</replaceable></arg></arg> <arg>gencaches</arg> "
+#~ "<arg>showpkg <arg choice=\"plain\" rep=\"repeat\"><replaceable>pkg</"
+#~ "replaceable></arg></arg> <arg>showsrc <arg choice=\"plain\" rep=\"repeat"
+#~ "\"><replaceable>pkg</replaceable></arg></arg> <arg>stats</arg> <arg>dump</"
+#~ "arg> <arg>dumpavail</arg> <arg>unmet</arg> <arg>search <arg choice=\"plain"
+#~ "\"><replaceable>regex</replaceable></arg></arg> <arg>show <arg choice="
+#~ "\"plain\" rep=\"repeat\"><replaceable>pkg</replaceable></arg></arg> "
+#~ "<arg>depends <arg choice=\"plain\" rep=\"repeat\"><replaceable>pkg</"
+#~ "replaceable></arg></arg> <arg>rdepends <arg choice=\"plain\" rep=\"repeat"
+#~ "\"><replaceable>pkg</replaceable></arg></arg> <arg>pkgnames <arg choice="
+#~ "\"plain\"><replaceable>prefix</replaceable></arg></arg> <arg>dotty <arg "
+#~ "choice=\"plain\" rep=\"repeat\"><replaceable>pkg</replaceable></arg></"
+#~ "arg> <arg>xvcg <arg choice=\"plain\" rep=\"repeat\"><replaceable>pkg</"
+#~ "replaceable></arg></arg> <arg>policy <arg choice=\"plain\" rep=\"repeat"
+#~ "\"><replaceable>pkgs</replaceable></arg></arg> <arg>madison <arg choice="
+#~ "\"plain\" rep=\"repeat\"><replaceable>pkgs</replaceable></arg></arg> </"
+#~ "group>"
+#~ msgstr ""
+#~ "<command>apt-cache</command> <arg><option>-hvsn</option></arg> "
+#~ "<arg><option>-o=<replaceable>stringa di configurazione</replaceable></"
+#~ "option></arg> <arg><option>-c=<replaceable>file</replaceable></option></"
+#~ "arg> <group choice=\"req\"> <arg>add <arg choice=\"plain\" rep=\"repeat"
+#~ "\"><replaceable>file</replaceable></arg></arg> <arg>gencaches</arg> "
+#~ "<arg>showpkg <arg choice=\"plain\" rep=\"repeat\"><replaceable>pacchetto</"
+#~ "replaceable></arg></arg> <arg>showsrc <arg choice=\"plain\" rep=\"repeat"
+#~ "\"><replaceable>pacchetto</replaceable></arg></arg> <arg>stats</arg> "
+#~ "<arg>dump</arg> <arg>dumpavail</arg> <arg>unmet</arg> <arg>search <arg "
+#~ "choice=\"plain\"><replaceable>regex</replaceable></arg></arg> <arg>show "
+#~ "<arg choice=\"plain\" rep=\"repeat\"><replaceable>pacchetto</"
+#~ "replaceable></arg></arg> <arg>depends <arg choice=\"plain\" rep=\"repeat"
+#~ "\"><replaceable>pacchetto</replaceable></arg></arg> <arg>rdepends <arg "
+#~ "choice=\"plain\" rep=\"repeat\"><replaceable>pacchetto</replaceable></"
+#~ "arg></arg> <arg>pkgnames <arg choice=\"plain\"><replaceable>prefisso</"
+#~ "replaceable></arg></arg> <arg>dotty <arg choice=\"plain\" rep=\"repeat"
+#~ "\"><replaceable>pacchetto</replaceable></arg></arg> <arg>xvcg <arg choice="
+#~ "\"plain\" rep=\"repeat\"><replaceable>pacchetto</replaceable></arg></arg> "
+#~ "<arg>policy <arg choice=\"plain\" rep=\"repeat\"><replaceable>pacchetti</"
+#~ "replaceable></arg></arg> <arg>madison <arg choice=\"plain\" rep=\"repeat"
+#~ "\"><replaceable>pacchetti</replaceable></arg></arg> </group>"
+
+#~ msgid "add <replaceable>file(s)</replaceable>"
+#~ msgstr "add <replaceable>file</replaceable>"
+
+#~ msgid ""
+#~ "<literal>add</literal> adds the named package index files to the package "
+#~ "cache. This is for debugging only."
+#~ msgstr ""
+#~ "<literal>add</literal> aggiunge i file di indice dei pacchetti menzionati "
+#~ "alla cache dei pacchetti. Questo serve solo per fare il debug."
+
+#~ msgid "gencaches"
+#~ msgstr "gencaches"
+
+#~ msgid ""
+#~ "<literal>gencaches</literal> performs the same operation as <command>apt-"
+#~ "get check</command>. It builds the source and package caches from the "
+#~ "sources in &sources-list; and from <filename>/var/lib/dpkg/status</"
+#~ "filename>."
+#~ msgstr ""
+#~ "<literal>gencaches</literal> esegue la stessa operazione di <command>apt-"
+#~ "get check</command>. Costruisce le cache sorgenti e pacchetti dalle fonti "
+#~ "in &sources-list; e da <filename>/var/lib/dpkg/status</filename>."
+
+#~ msgid "showpkg <replaceable>pkg(s)</replaceable>"
+#~ msgstr "showpkg <replaceable>pacchetti</replaceable>"
+
+#~ msgid "stats"
+#~ msgstr "stats"
+
+#~ msgid ""
+#~ "<literal>Pure virtual packages</literal> is the number of packages that "
+#~ "exist only as a virtual package name; that is, packages only \"provide\" "
+#~ "the virtual package name, and no package actually uses the name. For "
+#~ "instance, \"mail-transport-agent\" in the Debian GNU/Linux system is a "
+#~ "pure virtual package; several packages provide \"mail-transport-agent\", "
+#~ "but there is no package named \"mail-transport-agent\"."
+#~ msgstr ""
+#~ "<literal>Pacchetti virtuali puri</literal> è il numero di pacchetti che "
+#~ "esistono solo come nome di pacchetto virtuale; vale a dire, i pacchetti "
+#~ "\"forniscono\" solo il nome del pacchetto virtuale e nessun pacchetto in "
+#~ "realtà usa quel nome. Per esempio, \"mail-transport-agent\" nel sistema "
+#~ "Debian GNU/Linux è un pacchetto virtuale puro; diversi pacchetti "
+#~ "forniscono \"mail-transport-agent\", ma non c'è alcun pacchetto chiamato "
+#~ "\"mail-transport-agent\"."
+
+#~ msgid ""
+#~ "<literal>Single virtual packages</literal> is the number of packages with "
+#~ "only one package providing a particular virtual package. For example, in "
+#~ "the Debian GNU/Linux system, \"X11-text-viewer\" is a virtual package, "
+#~ "but only one package, xless, provides \"X11-text-viewer\"."
+#~ msgstr ""
+#~ "<literal>Pacchetti virtuali singoli</literal> è il numero di pacchetti "
+#~ "per cui solo un pacchetto fornisce un particolare pacchetto virtuale. Per "
+#~ "esempio, nel sistema Debian GNU/Linux, \"X11-text-viewer\" è un pacchetto "
+#~ "virtuale, ma solo un pacchetto, xless, fornisce \"X11-text-viewer\"."
+
+#~ msgid ""
+#~ "<literal>Mixed virtual packages</literal> is the number of packages that "
+#~ "either provide a particular virtual package or have the virtual package "
+#~ "name as the package name. For instance, in the Debian GNU/Linux system, "
+#~ "\"debconf\" is both an actual package, and provided by the debconf-tiny "
+#~ "package."
+#~ msgstr ""
+#~ "<literal>Pacchetti virtuali misti</literal> è il numero di pacchetti che "
+#~ "forniscono un particolare pacchetto virtuale o che hanno il nome del "
+#~ "pacchetto virtuale come nome del pacchetto. Per esempio, nel sistema "
+#~ "Debian GNU/Linux , \"debconf\" è sia un pacchetto vero e proprio sia "
+#~ "fornito dal pacchetto debconf-tiny."
+
+#~ msgid ""
+#~ "<literal>Total distinct</literal> versions is the number of package "
+#~ "versions found in the cache; this value is therefore at least equal to "
+#~ "the number of total package names. If more than one distribution (both "
+#~ "\"stable\" and \"unstable\", for instance), is being accessed, this value "
+#~ "can be considerably larger than the number of total package names."
+#~ msgstr ""
+#~ "<literal>Totale versioni distinte</literal> è il numero di versioni di "
+#~ "pacchetti trovate nella cache; questo valore pertanto è almeno pari al "
+#~ "numero dei nomi totali di pacchetto. Se si ha accesso a più di una "
+#~ "distribuzione (ad esempio sia \"stable\" che \"unstable\"), questo valore "
+#~ "può essere decisamente più grande del numero dei nomi totali di pacchetti."
+
+#~ msgid "showsrc <replaceable>pkg(s)</replaceable>"
+#~ msgstr "showsrc <replaceable>pacchetti</replaceable>"
+
+#~ msgid ""
+#~ "<literal>showsrc</literal> displays all the source package records that "
+#~ "match the given package names. All versions are shown, as well as all "
+#~ "records that declare the name to be a Binary."
+#~ msgstr ""
+#~ "<literal>showsrc</literal> mostra tutti i pacchetti sorgente che "
+#~ "combaciano coi nomi dei pacchetti dati. Vengono mostrate tutte le "
+#~ "versioni, così come tutti i record che dichiarano che il nome è un "
+#~ "pacchetto binario."
+
+#~ msgid "dump"
+#~ msgstr "dump"
+
+#~ msgid "dumpavail"
+#~ msgstr "dumpavail"
+
+#~ msgid "unmet"
+#~ msgstr "unmet"
+
+#~ msgid "show <replaceable>pkg(s)</replaceable>"
+#~ msgstr "show <replaceable>pacchetti</replaceable>"
+
+#~ msgid "search <replaceable>regex [ regex ... ]</replaceable>"
+#~ msgstr "search <replaceable>regex [ regex ... ]</replaceable>"
+
+#~ msgid ""
+#~ "<literal>search</literal> performs a full text search on all available "
+#~ "package lists for the POSIX regex pattern given, see "
+#~ "<citerefentry><refentrytitle><command>regex</command></refentrytitle> "
+#~ "<manvolnum>7</manvolnum></citerefentry>. It searches the package names "
+#~ "and the descriptions for an occurrence of the regular expression and "
+#~ "prints out the package name and the short description, including virtual "
+#~ "package names. If <option>--full</option> is given then output identical "
+#~ "to <literal>show</literal> is produced for each matched package, and if "
+#~ "<option>--names-only</option> is given then the long description is not "
+#~ "searched, only the package name is."
+#~ msgstr ""
+#~ "<literal>search</literal> esegue una ricerca completa del testo su tutte "
+#~ "le liste di pacchetti disponibili cercando il modellp di regexp POSIX "
+#~ "fornito; vedere <citerefentry><refentrytitle><command>regex</command></"
+#~ "refentrytitle> <manvolnum>7</manvolnum></citerefentry>. Cerca le "
+#~ "occorrenze dell'expressione regolare nei nomi e nelle descrizioni dei "
+#~ "pacchetti e stampa il nome e la descrizione breve dei pacchetti, inclusi "
+#~ "quelli virtuali. Se viene fornita l'opzione <option>--full</option>, il "
+#~ "risultato è identico a <literal>show</literal> per ciascun pacchetto che "
+#~ "soddisfa la ricerca; se viene fornita l'opzione <option>--names-only</"
+#~ "option> la ricerca viene fatta solo sul nome del pacchetto e non sulla "
+#~ "descrizione lunga."
+
+#~ msgid "depends <replaceable>pkg(s)</replaceable>"
+#~ msgstr "depends <replaceable>pacchetti</replaceable>"
+
+#~ msgid "rdepends <replaceable>pkg(s)</replaceable>"
+#~ msgstr "rdepends <replaceable>pacchetti</replaceable>"
+
+#~ msgid "pkgnames <replaceable>[ prefix ]</replaceable>"
+#~ msgstr "pkgnames <replaceable>[ prefisso ]</replaceable>"
+
+#~ msgid "dotty <replaceable>pkg(s)</replaceable>"
+#~ msgstr "dotty <replaceable>pacchetti</replaceable>"
+
+#~ msgid ""
+#~ "The resulting nodes will have several shapes; normal packages are boxes, "
+#~ "pure provides are triangles, mixed provides are diamonds, missing "
+#~ "packages are hexagons. Orange boxes mean recursion was stopped [leaf "
+#~ "packages], blue lines are pre-depends, green lines are conflicts."
+#~ msgstr ""
+#~ "I nodi risultanti avranno diverse forme: i pacchetti normali sono "
+#~ "quadrati, quelli forniti puri sono triangoli, quelli forniti misti sono "
+#~ "rombi, i pacchetti mancanti sono esagoni. I quadrati arancioni indicano "
+#~ "che la ricorsione è stata arrestata [pacchetti foglia], le linee blu sono "
+#~ "pre-dipendenze, le linee verdi sono conflitti."
+
+#~ msgid "xvcg <replaceable>pkg(s)</replaceable>"
+#~ msgstr "xvcg <replaceable>pacchetti</replaceable>"
+
+#~ msgid "policy <replaceable>[ pkg(s) ]</replaceable>"
+#~ msgstr "policy <replaceable>[ pacchetti ]</replaceable>"
+
+#~ msgid "madison <replaceable>/[ pkg(s) ]</replaceable>"
+#~ msgstr "madison <replaceable>/[ pacchetti ]</replaceable>"
+
+#~ msgid "<option>-p</option>"
+#~ msgstr "<option>-p</option>"
+
+#~ msgid "<option>--pkg-cache</option>"
+#~ msgstr "<option>--pkg-cache</option>"
+
+#~ msgid "<option>-s</option>"
+#~ msgstr "<option>-s</option>"
+
+#~ msgid "<option>--src-cache</option>"
+#~ msgstr "<option>--src-cache</option>"
+
+#~ msgid "<option>-q</option>"
+#~ msgstr "<option>-q</option>"
+
+#~ msgid "<option>--quiet</option>"
+#~ msgstr "<option>--quiet</option>"
+
+#~ msgid "<option>-i</option>"
+#~ msgstr "<option>-i</option>"
+
+#~ msgid "<option>--important</option>"
+#~ msgstr "<option>--important</option>"
+
+#~ msgid ""
+#~ "Print only important dependencies; for use with unmet and depends. Causes "
+#~ "only Depends and Pre-Depends relations to be printed. Configuration "
+#~ "Item: <literal>APT::Cache::Important</literal>."
+#~ msgstr ""
+#~ "Stampa solo le dipendenze importanti; da usarsi con unmet e depends. Fa "
+#~ "sì che vengano stampate solo le relazioni di Depends e Pre-Depends. Voce "
+#~ "di configurazione: <literal>APT::Cache::Important</literal>."
+
+#~ msgid "<option>-f</option>"
+#~ msgstr "<option>-f</option>"
+
+#~ msgid "<option>--full</option>"
+#~ msgstr "<option>--full</option>"
+
+#~ msgid "<option>-a</option>"
+#~ msgstr "<option>-a</option>"
+
+#~ msgid "<option>--all-versions</option>"
+#~ msgstr "<option>--all-versions</option>"
+
+#~ msgid ""
+#~ "Print full records for all available versions. This is the default; to "
+#~ "turn it off, use <option>--no-all-versions</option>. If <option>--no-all-"
+#~ "versions</option> is specified, only the candidate version will displayed "
+#~ "(the one which would be selected for installation). This option is only "
+#~ "applicable to the <literal>show</literal> command. Configuration Item: "
+#~ "<literal>APT::Cache::AllVersions</literal>."
+#~ msgstr ""
+#~ "Stampa i record completi per tutte le versioni disponibili. Questa è "
+#~ "l'impostazione predefinita; per disattivarla, usare <option>--no-all-"
+#~ "versions</option>. Se si specifica <option>--no-all-versions</option>, "
+#~ "verrà visualizzata solo la versione candidata (quella che sarebbe scelta "
+#~ "per l'installazione). Questa opzione è applicabile solo al comando "
+#~ "<literal>show</literal>. Voce di configurazione: <literal>APT::Cache::"
+#~ "AllVersions</literal>."
+
+#~ msgid "<option>-g</option>"
+#~ msgstr "<option>-g</option>"
+
+#~ msgid "<option>--generate</option>"
+#~ msgstr "<option>--generate</option>"
+
+#~ msgid "<option>--names-only</option>"
+#~ msgstr "<option>--names-only</option>"
+
+#~ msgid "<option>-n</option>"
+#~ msgstr "<option>-n</option>"
+
+#~ msgid "<option>--all-names</option>"
+#~ msgstr "<option>--all-names</option>"
+
+#~ msgid "<option>--recurse</option>"
+#~ msgstr "<option>--recurse</option>"
+
+#~ msgid "<option>--installed</option>"
+#~ msgstr "<option>--installed</option>"
+
+#~ msgid "&apt-commonoptions;"
+#~ msgstr "&apt-commonoptions;"
+
+#~ msgid "&file-sourceslist; &file-statelists;"
+#~ msgstr "&file-sourceslist; &file-statelists;"
+
+#~ msgid ""
+#~ "&apt-author.jgunthorpe; &apt-author.team; &apt-email; &apt-product; "
+#~ "<date>14 February 2004</date>"
+#~ msgstr ""
+#~ "&apt-author.jgunthorpe; &apt-author.team; &apt-email; &apt-product; "
+#~ "<date>14 febbraio 2004</date>"
+
+#~ msgid "apt-cdrom"
+#~ msgstr "apt-cdrom"
+
+#~ msgid "APT CDROM management utility"
+#~ msgstr "Strumento di APT per la gestione dei CDROM"
+
+#~ msgid ""
+#~ "<command>apt-cdrom</command> <arg><option>-hvrmfan</option></arg> "
+#~ "<arg><option>-d=<replaceable>cdrom mount point</replaceable></option></"
+#~ "arg> <arg><option>-o=<replaceable>config string</replaceable></option></"
+#~ "arg> <arg><option>-c=<replaceable>file</replaceable></option></arg> "
+#~ "<group> <arg>add</arg> <arg>ident</arg> </group>"
+#~ msgstr ""
+#~ "<command>apt-cdrom</command> <arg><option>-hvrmfan</option></arg> "
+#~ "<arg><option>-d=<replaceable>punto di mount del cdrom</replaceable></"
+#~ "option></arg> <arg><option>-o=<replaceable>stringa di configurazione</"
+#~ "replaceable></option></arg> <arg><option>-c=<replaceable>file</"
+#~ "replaceable></option></arg> <group> <arg>add</arg> <arg>ident</arg> </"
+#~ "group>"
+
+#~ msgid ""
+#~ "<command>apt-cdrom</command> is used to add a new CDROM to APTs list of "
+#~ "available sources. <command>apt-cdrom</command> takes care of determining "
+#~ "the structure of the disc as well as correcting for several possible mis-"
+#~ "burns and verifying the index files."
+#~ msgstr ""
+#~ "<command>apt-cdrom</command> è usato per aggiungere un nuovo CDROM alla "
+#~ "lista di sorgenti disponibili di APT. <command>apt-cdrom</command> si "
+#~ "prende cura di determinare la struttura del disco e anche di correggere "
+#~ "possibili errori di masterizzazione e verificare i file indice."
+
+#~ msgid ""
+#~ "It is necessary to use <command>apt-cdrom</command> to add CDs to the APT "
+#~ "system, it cannot be done by hand. Furthermore each disk in a multi-cd "
+#~ "set must be inserted and scanned separately to account for possible mis-"
+#~ "burns."
+#~ msgstr ""
+#~ "Per aggiungere CD al sistema APT è necessario usare <command>apt-cdrom</"
+#~ "command>, in quanto ciò non può essere fatto manualmente. Inoltre ogni "
+#~ "disco in un insieme di più CD deve essere inserito e scansionato "
+#~ "separatamente per tenere conto di possibili errori di masterizzazione."
+
+#~ msgid "add"
+#~ msgstr "add"
+
+#~ msgid ""
+#~ "<literal>add</literal> is used to add a new disc to the source list. It "
+#~ "will unmount the CDROM device, prompt for a disk to be inserted and then "
+#~ "proceed to scan it and copy the index files. If the disc does not have a "
+#~ "proper <filename>disk</filename> directory you will be prompted for a "
+#~ "descriptive title."
+#~ msgstr ""
+#~ "<literal>add</literal> è usato per aggiungere un nuovo CDROM alla lista "
+#~ "delle sorgenti. Smonterà il device del CDROM, chiederà di inserire un "
+#~ "disco e poi procederà alla scansione del cdrom e copierà i file indice. "
+#~ "Se il disco non ha una directory <filename>.disk/</filename> corretta "
+#~ "verrà chiesto un titolo descrittivo."
+
+#~ msgid ""
+#~ "APT uses a CDROM ID to track which disc is currently in the drive and "
+#~ "maintains a database of these IDs in <filename>&statedir;/cdroms.list</"
+#~ "filename>"
+#~ msgstr ""
+#~ "APT usa un identificatore del CDROM per tenere traccia di quale disco è "
+#~ "attualmente nel lettore e mantiene un database di questi identificativi "
+#~ "nel file <filename>&statedir;/cdroms.list</filename>."
+
+#~ msgid "ident"
+#~ msgstr "ident"
+
+#~ msgid ""
+#~ "Unless the <option>-h</option>, or <option>--help</option> option is "
+#~ "given one of the commands below must be present. <placeholder type="
+#~ "\"variablelist\" id=\"0\"/>"
+#~ msgstr ""
+#~ "A meno che non venga fornita l'opzione <option>-h</option> o <option>--"
+#~ "help</option>, deve essere presente uno dei comandi seguenti. "
+#~ "<placeholder type=\"variablelist\" id=\"0\"/>"
+
+#~ msgid "<option>-d</option>"
+#~ msgstr "<option>-d</option>"
+
+#~ msgid "<option>--cdrom</option>"
+#~ msgstr "<option>--cdrom</option>"
+
+#~ msgid ""
+#~ "Mount point; specify the location to mount the cdrom. This mount point "
+#~ "must be listed in <filename>/etc/fstab</filename> and properly "
+#~ "configured. Configuration Item: <literal>Acquire::cdrom::mount</literal>."
+#~ msgstr ""
+#~ "Punto di mount; specifica la posizione in cui montare il CDROM. Questo "
+#~ "punto di mount deve essere elencato nel file <filename>/etc/fstab</"
+#~ "filename> e configurato correttamente. Voce di configurazione: "
+#~ "<literal>Acquire::cdrom::mount</literal>."
+
+#~ msgid "<option>-r</option>"
+#~ msgstr "<option>-r</option>"
+
+#~ msgid "<option>--rename</option>"
+#~ msgstr "<option>--rename</option>"
+
+#~ msgid ""
+#~ "Rename a disc; change the label of a disk or override the disks given "
+#~ "label. This option will cause <command>apt-cdrom</command> to prompt for "
+#~ "a new label. Configuration Item: <literal>APT::CDROM::Rename</literal>."
+#~ msgstr ""
+#~ "Rinomina un disco; cambia l'etichetta di un disco o soppianta l'etichetta "
+#~ "originale del disco. Questa opzione farà sì che <command>apt-cdrom</"
+#~ "command> chieda una nuova etichetta. Voce di configurazione: "
+#~ "<literal>APT::CDROM::Rename</literal>."
+
+#~ msgid "<option>-m</option>"
+#~ msgstr "<option>-m</option>"
+
+#~ msgid "<option>--no-mount</option>"
+#~ msgstr "<option>--no-mount</option>"
+
+#~ msgid "<option>--fast</option>"
+#~ msgstr "<option>--fast</option>"
+
+#~ msgid "<option>--thorough</option>"
+#~ msgstr "<option>--thorough</option>"
+
+#~ msgid "<option>--just-print</option>"
+#~ msgstr "<option>--just-print</option>"
+
+#~ msgid "<option>--recon</option>"
+#~ msgstr "<option>--recon</option>"
+
+#~ msgid "<option>--no-act</option>"
+#~ msgstr "<option>--no-act</option>"
+
+#~ msgid "apt-config"
+#~ msgstr "apt-config"
+
+#~ msgid ""
+#~ "<command>apt-config</command> <arg><option>-hv</option></arg> "
+#~ "<arg><option>-o=<replaceable>config string</replaceable></option></arg> "
+#~ "<arg><option>-c=<replaceable>file</replaceable></option></arg> <group "
+#~ "choice=\"req\"> <arg>shell</arg> <arg>dump</arg> </group>"
+#~ msgstr ""
+#~ "<command>apt-config</command> <arg><option>-hv</option></arg> "
+#~ "<arg><option>-o=<replaceable>stringa di configurazione</replaceable></"
+#~ "option></arg> <arg><option>-c=<replaceable>file</replaceable></option></"
+#~ "arg> <group choice=\"req\"> <arg>shell</arg> <arg>dump</arg> </group>"
+
+#~ msgid ""
+#~ "<command>apt-config</command> is an internal program used by various "
+#~ "portions of the APT suite to provide consistent configurability. It "
+#~ "accesses the main configuration file <filename>/etc/apt/apt.conf</"
+#~ "filename> in a manner that is easy to use by scripted applications."
+#~ msgstr ""
+#~ "<command>apt-config</command> è un programma interno usato da varie parti "
+#~ "della suite APT per fornire una configurabiità coerente. Accede al file "
+#~ "principale di configurazione <filename>/etc/apt/apt.conf</filename> in "
+#~ "modo facile da usare da parte di applicazioni che girano sotto forma di "
+#~ "script."
+
+#~ msgid ""
+#~ "Unless the <option>-h</option>, or <option>--help</option> option is "
+#~ "given one of the commands below must be present."
+#~ msgstr ""
+#~ "A meno che non venga fornita l'opzione <option>-h</option> o <option>--"
+#~ "help</option>, deve essere presente uno dei comandi seguenti."
+
+#~ msgid "shell"
+#~ msgstr "shell"
+
+#~ msgid ""
+#~ "shell is used to access the configuration information from a shell "
+#~ "script. It is given pairs of arguments, the first being a shell variable "
+#~ "and the second the configuration value to query. As output it lists a "
+#~ "series of shell assignments commands for each present value. In a shell "
+#~ "script it should be used like:"
+#~ msgstr ""
+#~ "shell viene usato per accedere alle informazioni di configurazione da "
+#~ "parte di uno script di shell. Riceve coppie di argomenti, il primo dei "
+#~ "quali è una variabile di shell e il secondo è il valore di configurazione "
+#~ "da interrogare. Come risultato elenca una serie di comandi di "
+#~ "assegnazione di shell per ciascun valore presente. In uno script di shell "
+#~ "dovrebbe essere usato in modo simile a:"
+
+#~ msgid "apt-extracttemplates"
+#~ msgstr "apt-extracttemplates"
+
+#~ msgid "Utility to extract DebConf config and templates from Debian packages"
+#~ msgstr ""
+#~ "Utilità per estrarre configurazioni e modelli DebConf dai pacchetti Debian"
+
+#~ msgid ""
+#~ "<command>apt-extracttemplates</command> <arg><option>-hv</option></arg> "
+#~ "<arg><option>-t=<replaceable>temporary directory</replaceable></option></"
+#~ "arg> <arg choice=\"plain\" rep=\"repeat\"><replaceable>file</"
+#~ "replaceable></arg>"
+#~ msgstr ""
+#~ "<command>apt-extracttemplates</command> <arg><option>-hv</option></arg> "
+#~ "<arg><option>-t=<replaceable>directory temporanea</replaceable></option></"
+#~ "arg> <arg choice=\"plain\" rep=\"repeat\"><replaceable>file</"
+#~ "replaceable></arg>"
+
+#~ msgid ""
+#~ "template-file and config-script are written to the temporary directory "
+#~ "specified by the -t or --tempdir (<literal>APT::ExtractTemplates::"
+#~ "TempDir</literal>) directory, with filenames of the form "
+#~ "<filename>package.template.XXXX</filename> and <filename>package.config."
+#~ "XXXX</filename>"
+#~ msgstr ""
+#~ "file-template e script-di-configurazione sono scritti nella directory "
+#~ "temporanea specificata da -t o --tempdir (<literal>APT::ExtractTemplates::"
+#~ "TempDir</literal>) directory, con i nomi dei file nella forma "
+#~ "<filename>pacchetto.template.XXXX</filename> e <filename>pacchetto.config."
+#~ "XXXX</filename>"
+
+#~ msgid "<option>-t</option>"
+#~ msgstr "<option>-t</option>"
+
+#~ msgid "<option>--tempdir</option>"
+#~ msgstr "<option>--tempdir</option>"
+
+#~ msgid ""
+#~ "Temporary directory in which to write extracted debconf template files "
+#~ "and config scripts. Configuration Item: <literal>APT::ExtractTemplates::"
+#~ "TempDir</literal>"
+#~ msgstr ""
+#~ "Directory temporanea dove scrivere i file template di debconf e gli "
+#~ "script di configurazione estratti. Voce di configurazione: <literal>APT::"
+#~ "ExtractTemplates::TempDir</literal>."
+
+#~ msgid ""
+#~ "&apt-author.jgunthorpe; &apt-author.team; &apt-email; &apt-product; "
+#~ "<date>17 August 2009</date>"
+#~ msgstr ""
+#~ "&apt-author.jgunthorpe; &apt-author.team; &apt-email; &apt-product; "
+#~ "<date>17 agosto 2009</date>"
+
+#~ msgid "apt-ftparchive"
+#~ msgstr "apt-ftparchive"
+
+#~ msgid ""
+#~ "<command>apt-ftparchive</command> <arg><option>-hvdsq</option></arg> "
+#~ "<arg><option>--md5</option></arg> <arg><option>--delink</option></arg> "
+#~ "<arg><option>--readonly</option></arg> <arg><option>--contents</option></"
+#~ "arg> <arg><option>--arch <replaceable>architecture</replaceable></"
+#~ "option></arg> <arg><option>-o <replaceable>config</"
+#~ "replaceable>=<replaceable>string</replaceable></option></arg> "
+#~ "<arg><option>-c=<replaceable>file</replaceable></option></arg> <group "
+#~ "choice=\"req\"> <arg>packages<arg choice=\"plain\" rep=\"repeat"
+#~ "\"><replaceable>path</replaceable></arg><arg><replaceable>override</"
+#~ "replaceable><arg><replaceable>pathprefix</replaceable></arg></arg></arg> "
+#~ "<arg>sources<arg choice=\"plain\" rep=\"repeat\"><replaceable>path</"
+#~ "replaceable></arg><arg><replaceable>override</"
+#~ "replaceable><arg><replaceable>pathprefix</replaceable></arg></arg></arg> "
+#~ "<arg>contents <arg choice=\"plain\"><replaceable>path</replaceable></"
+#~ "arg></arg> <arg>release <arg choice=\"plain\"><replaceable>path</"
+#~ "replaceable></arg></arg> <arg>generate <arg choice=\"plain"
+#~ "\"><replaceable>config-file</replaceable></arg> <arg choice=\"plain\" rep="
+#~ "\"repeat\"><replaceable>section</replaceable></arg></arg> <arg>clean <arg "
+#~ "choice=\"plain\"><replaceable>config-file</replaceable></arg></arg> </"
+#~ "group>"
+#~ msgstr ""
+#~ "<command>apt-ftparchive</command> <arg><option>-hvdsq</option></arg> "
+#~ "<arg><option>--md5</option></arg> <arg><option>--delink</option></arg> "
+#~ "<arg><option>--readonly</option></arg> <arg><option>--contents</option></"
+#~ "arg> <arg><option>--arch <replaceable>architettura</replaceable></"
+#~ "option></arg> <arg><option>-o <replaceable>configurazione</"
+#~ "replaceable>=<replaceable>stringa</replaceable></option></arg> "
+#~ "<arg><option>-c=<replaceable>file</replaceable></option></arg> <group "
+#~ "choice=\"req\"> <arg>packages<arg choice=\"plain\" rep=\"repeat"
+#~ "\"><replaceable>percorso</replaceable></arg><arg><replaceable>override</"
+#~ "replaceable><arg><replaceable>prefisso del percorso</replaceable></arg></"
+#~ "arg></arg> <arg>sources<arg choice=\"plain\" rep=\"repeat"
+#~ "\"><replaceable>percorso</replaceable></arg><arg><replaceable>override</"
+#~ "replaceable><arg><replaceable>prefisso del percorso</replaceable></arg></"
+#~ "arg></arg> <arg>contents <arg choice=\"plain\"><replaceable>percorso</"
+#~ "replaceable></arg></arg> <arg>release <arg choice=\"plain"
+#~ "\"><replaceable>percorso</replaceable></arg></arg> <arg>generate <arg "
+#~ "choice=\"plain\"><replaceable>file-di-configurazione</replaceable></arg> "
+#~ "<arg choice=\"plain\" rep=\"repeat\"><replaceable>sezione</replaceable></"
+#~ "arg></arg> <arg>clean <arg choice=\"plain\"><replaceable>file-di-"
+#~ "configurazione</replaceable></arg></arg> </group>"
+
+#~ msgid "packages"
+#~ msgstr "packages"
+
+#~ msgid "sources"
+#~ msgstr "sources"
+
+#~ msgid "contents"
+#~ msgstr "contents"
+
+#~ msgid "release"
+#~ msgstr "release"
+
+#~ msgid ""
+#~ "The <literal>release</literal> command generates a Release file from a "
+#~ "directory tree. It recursively searches the given directory for Packages, "
+#~ "Packages.gz, Packages.bz2, Sources, Sources.gz, Sources.bz2, Release and "
+#~ "md5sum.txt files. It then writes to stdout a Release file containing an "
+#~ "MD5 digest and SHA1 digest for each file."
+#~ msgstr ""
+#~ "Il comando <literal>release</literal> genera un file Release da un albero "
+#~ "di directory. Cerca ricorivamente file Packages, Packages.gz, Packages."
+#~ "bz2, Sources, Sources.gz, Sources.bz2, Release e md5sum.txt nella "
+#~ "directory data. Quindi scrive su stdout un file Release che contiene un "
+#~ "digest MD5 e SHA1 per ciascun file."
+
+#~ msgid ""
+#~ "Values for the additional metadata fields in the Release file are taken "
+#~ "from the corresponding variables under <literal>APT::FTPArchive::Release</"
+#~ "literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The "
+#~ "supported fields are: <literal>Origin</literal>, <literal>Label</"
+#~ "literal>, <literal>Suite</literal>, <literal>Version</literal>, "
+#~ "<literal>Codename</literal>, <literal>Date</literal>, "
+#~ "<literal>Architectures</literal>, <literal>Components</literal>, "
+#~ "<literal>Description</literal>."
+#~ msgstr ""
+#~ "I valori dei campi di metadati aggiuntivi nel file Release sono presi "
+#~ "dalle variabili corrispondenti sotto <literal>APT::FTPArchive::Release</"
+#~ "literal>, ad esempio <literal>APT::FTPArchive::Release::Origin</"
+#~ "literal>. I campi supportati sono: <literal>Origin</literal>, "
+#~ "<literal>Label</literal>, <literal>Suite</literal>, <literal>Version</"
+#~ "literal>, <literal>Codename</literal>, <literal>Date</literal>, "
+#~ "<literal>Architectures</literal>, <literal>Components</literal>, "
+#~ "<literal>Description</literal>."
+
+#~ msgid "generate"
+#~ msgstr "generate"
+
+#~ msgid "clean"
+#~ msgstr "clean"
+
+#~ msgid ""
+#~ "The generate configuration has 4 separate sections, each described below."
+#~ msgstr ""
+#~ "La configurazione di generate ha 4 sezioni separate, ciascuna delle quali "
+#~ "è descritta sotto."
+
+#~ msgid "Dir Section"
+#~ msgstr "Sezione Dir"
+
+#~ msgid "ArchiveDir"
+#~ msgstr "ArchiveDir"
+
+#~ msgid "OverrideDir"
+#~ msgstr "OverrideDir"
+
+#~ msgid "CacheDir"
+#~ msgstr "CacheDir"
+
+#~ msgid "Specifies the location of the cache files"
+#~ msgstr "Specifica la posizione dei file cache."
+
+#~ msgid "FileListDir"
+#~ msgstr "FileListDir"
+
+#~ msgid "Default Section"
+#~ msgstr "Sezione Default"
+
+#~ msgid "Packages::Compress"
+#~ msgstr "Packages::Compress"
+
+#~ msgid ""
+#~ "Sets the default compression schemes to use for the Package index files. "
+#~ "It is a string that contains a space separated list of at least one of: "
+#~ "'.' (no compression), 'gzip' and 'bzip2'. The default for all compression "
+#~ "schemes is '. gzip'."
+#~ msgstr ""
+#~ "Imposta gli schemi di compressione predefiniti da usare per i file indice "
+#~ "dei pacchetti. È una stringa che contiene una lista separata da spazi "
+#~ "contenente almeno uno fra \".\" (nessuna compressione), \"gzip\" e "
+#~ "\"bzip2\". Il valore predefinito per tutti gli schemi di compressione è "
+#~ "\"gzip\"."
+
+#~ msgid "Packages::Extensions"
+#~ msgstr "Packages::Extensions"
+
+#~ msgid "Sources::Compress"
+#~ msgstr "Sources::Compress"
+
+#~ msgid "Sources::Extensions"
+#~ msgstr "Sources::Extensions"
+
+#~ msgid "Contents::Compress"
+#~ msgstr "Contents::Compress"
+
+#~ msgid "DeLinkLimit"
+#~ msgstr "DeLinkLimit"
+
+#~ msgid "FileMode"
+#~ msgstr "FileMode"
+
+#~ msgid "TreeDefault Section"
+#~ msgstr "Sezione TreeDefault"
+
+#~ msgid "MaxContentsChange"
+#~ msgstr "MaxContentsChange"
+
+#~ msgid "ContentsAge"
+#~ msgstr "ContentsAge"
+
+#~ msgid "Directory"
+#~ msgstr "Directory"
+
+#~ msgid "SrcDirectory"
+#~ msgstr "SrcDirectory"
+
+#~ msgid "Packages"
+#~ msgstr "Packages"
+
+#~ msgid "Sources"
+#~ msgstr "Sources"
+
+#~ msgid "InternalPrefix"
+#~ msgstr "InternalPrefix"
+
+#~ msgid "Contents"
+#~ msgstr "Contents"
+
+#~ msgid ""
+#~ "Sets the output Contents file. Defaults to <filename>$(DIST)/Contents-"
+#~ "$(ARCH)</filename>. If this setting causes multiple Packages files to map "
+#~ "onto a single Contents file (such as the default) then <command>apt-"
+#~ "ftparchive</command> will integrate those package files together "
+#~ "automatically."
+#~ msgstr ""
+#~ "Imposta il file Contents di uscita. Il valore predefinito è <filename>"
+#~ "$(DIST)/Contents-$(ARCH)</filename>. Se questa impostazione fa sì che più "
+#~ "file Packages corrispondano a un solo file Contents (come con il valore "
+#~ "predefinito) allora <command>apt-ftparchive</command> unirà "
+#~ "automaticamente insieme questi file dei pacchetti."
+
+#~ msgid "Contents::Header"
+#~ msgstr "Contents::Header"
+
+#~ msgid "BinCacheDB"
+#~ msgstr "BinCacheDB"
+
+#~ msgid "FileList"
+#~ msgstr "FileList"
+
+#~ msgid "SourceFileList"
+#~ msgstr "SourceFileList"
+
+#~ msgid "Tree Section"
+#~ msgstr "Sezione Tree"
+
+#~ msgid ""
+#~ "The <literal>Tree</literal> section takes a scope tag which sets the "
+#~ "<literal>$(DIST)</literal> variable and defines the root of the tree (the "
+#~ "path is prefixed by <literal>ArchiveDir</literal>). Typically this is a "
+#~ "setting such as <filename>dists/woody</filename>."
+#~ msgstr ""
+#~ "La sezione <literal>Tree</literal> prende un tag di ambito che imposta la "
+#~ "variabile <literal>$(DIST)</literal> e definisce la radice dell'albero "
+#~ "(il percorso viene prefissato da <literal>ArchiveDir</literal>). Di "
+#~ "solito è un'impostazione simile a <filename>dists/woody</filename>."
+
+#~ msgid ""
+#~ "All of the settings defined in the <literal>TreeDefault</literal> section "
+#~ "can be use in a <literal>Tree</literal> section as well as three new "
+#~ "variables."
+#~ msgstr ""
+#~ "Tutte le impostazioni definite nella sezione <literal>TreeDefault</"
+#~ "literal> possono essere usate in una sezione <literal>Tree</literal>, "
+#~ "oltre a tre nuove variabili."
+
+#~ msgid "Sections"
+#~ msgstr "Sezioni"
+
+#~ msgid ""
+#~ "This is a space separated list of sections which appear under the "
+#~ "distribution, typically this is something like <literal>main contrib non-"
+#~ "free</literal>"
+#~ msgstr ""
+#~ "Questa è una lista di sezioni che appaiono sotto la distribuzione, "
+#~ "separate da spazi; tipicamente è simile a <literal>main contrib non-free</"
+#~ "literal>."
+
+#~ msgid "Architectures"
+#~ msgstr "Architetture"
+
+#~ msgid "BinOverride"
+#~ msgstr "BinOverride"
+
+#~ msgid "SrcOverride"
+#~ msgstr "SrcOverride"
+
+#~ msgid "ExtraOverride"
+#~ msgstr "ExtraOverride"
+
+#~ msgid "SrcExtraOverride"
+#~ msgstr "SrcExtraOverride"
+
+#~ msgid "BinDirectory Section"
+#~ msgstr "Sezione BinDirectory"
+
+#~ msgid "Sets the Contents file output. (optional)"
+#~ msgstr "Imposta il file Contents di uscita (facoltativo)."
+
+#~ msgid "PathPrefix"
+#~ msgstr "PathPrefix"
+
+#~ msgid "FileList, SourceFileList"
+#~ msgstr "FileList, SourceFileList"
+
+#~ msgid ""
+#~ "The binary override file is fully compatible with &dpkg-scanpackages;. It "
+#~ "contains 4 fields separated by spaces. The first field is the package "
+#~ "name, the second is the priority to force that package to, the third is "
+#~ "the section to force that package to and the final field is the "
+#~ "maintainer permutation field."
+#~ msgstr ""
+#~ "Il file override binario è completamente compatibile con &dpkg-"
+#~ "scanpackages;. Contiene 4 campi separati da spazi. Il primo campo è il "
+#~ "nome del pacchetto, il secondo è la priorità a cui forzare quel "
+#~ "pacchetto, il terzo è la sezione in cui forzare quel pacchetto e l'ultimo "
+#~ "campo è il campo di permutazione del manutentore."
+
+#, fuzzy
+#~ msgid "update"
+#~ msgstr "upgrade"
+
+#, fuzzy
+#~ msgid "dselect-upgrade"
+#~ msgstr "dist-upgrade"
+
+#, fuzzy
+#~ msgid "apt-key"
+#~ msgstr "apt-get"
+
+#, fuzzy
+#~ msgid ""
+#~ "For more details, on Debian GNU/Linux systems, see the file /usr/share/"
+#~ "common-licenses/GPL for the full license."
+#~ msgstr ""
+#~ "Per ulteriori dettagli sui sistemi GNU/Linux si veda il testo completo "
+#~ "della licenza nel file /usr/share/common-licenses/GPL."
+
+#, fuzzy
+#~ msgid ""
+#~ "To enable the APT method you need to select [A]ccess in <command>dselect</"
+#~ "command> and then choose the APT method. You will be prompted for a set "
+#~ "of <emphasis>Sources</emphasis> which are places to fetch archives from. "
+#~ "These can be remote Internet sites, local Debian mirrors or CDROMs. Each "
+#~ "source can provide a fragment of the total Debian archive, APT will "
+#~ "automatically combine them to form a complete set of packages. If you "
+#~ "have a CDROM then it is a good idea to specify it first and then specify "
+#~ "a mirror so that you have access to the latest bug fixes. APT will "
+#~ "automatically use packages on your CDROM before downloading from the "
+#~ "Internet."
+#~ msgstr ""
+#~ "Per abilitare il metodo APT dovete selezionare [A]ccess in "
+#~ "<command>dselect</command> e scegliere il metodo APT; vi verrà chiesto un "
+#~ "insieme di fonti (<emphasis>Sources</emphasis>), cioè di posti da cui "
+#~ "scaricare gli archivi. Tali fonti possono essere siti Internet remoti, "
+#~ "mirror locali di Debian o CDROM; ciascuna di esse può fornire una parte "
+#~ "dell'archivio Debian, ed APT le combinerà insieme in un set completo di "
+#~ "pacchetti. Se avete un CDROM è una buona idea indicare quello per primo, "
+#~ "e poi i mirror, in modo da avere accesso alle ultime versioni; APT userà "
+#~ "in questo modo automaticamente i pacchetti sul CDROM prima di scaricarli "
+#~ "da Internet."
diff --git a/doc/po/ja.po b/doc/po/ja.po
new file mode 100644
index 000000000..05b1e2dcb
--- /dev/null
+++ b/doc/po/ja.po
@@ -0,0 +1,10826 @@
+# Translation of apt package man pages
+# Copyright (C) 2003-2017 Debian Japanese List <debian-japanese@lists.debian.org>
+# This file is distributed under the same license as the apt package.
+#
+# Translators:
+# KURASAWA Nozomu, 2003-2006, 2009-2012.
+# Takuma Yamada <tyamada@takumayamada.com>, 2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt-doc 1.4\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-06-01 10:51+0200\n"
+"PO-Revision-Date: 2017-01-06 04:50+0900\n"
+"Last-Translator: Takuma Yamada <tyamada@takumayamada.com>\n"
+"Language-Team: Japanese <debian-japanese@lists.debian.org>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY apt-author.team \"\n"
+" <author>\n"
+" <othername>APT team</othername>\n"
+" <contrib></contrib>\n"
+" </author>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY apt-author.team \"\n"
+" <author>\n"
+" <othername>APT ãƒãƒ¼ãƒ </othername>\n"
+" <contrib></contrib>\n"
+" </author>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY apt-qapage \"\n"
+"\t<para>\n"
+"\t\t<ulink url='http://packages.qa.debian.org/a/apt.html'>QA Page</ulink>\n"
+"\t</para>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY apt-qapage \"\n"
+"\t<para>\n"
+"\t\t<ulink url='http://packages.qa.debian.org/a/apt.html'>QA ページ</ulink>\n"
+"\t</para>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Boiler plate Bug reporting section -->\n"
+"<!ENTITY manbugs \"\n"
+" <refsect1><title>Bugs</title>\n"
+" <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+" If you wish to report a bug in APT, please see\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
+" &reportbug; command.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+"<!-- Boiler plate Bug reporting section -->\n"
+"<!ENTITY manbugs \"\n"
+" <refsect1><title>ãƒã‚°</title>\n"
+" <para><ulink url='http://bugs.debian.org/src:apt'>APT ãƒã‚°ãƒšãƒ¼ã‚¸</ulink> ã‚’ã”覧ãã ã•ã„。 \n"
+" APT ã®ãƒã‚°ã‚’報告ã™ã‚‹å ´åˆã¯ã€\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</filename> ã‚„\n"
+" &reportbug; コマンドをã”覧ãã ã•ã„。\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Boiler plate Author section -->\n"
+"<!ENTITY manauthor \"\n"
+" <refsect1><title>Author</title>\n"
+" <para>APT was written by the APT team <email>apt@packages.debian.org</email>.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+"<!-- Boiler plate Author section -->\n"
+"<!ENTITY manauthor \"\n"
+" <refsect1><title>著者</title>\n"
+" <para>APT 㯠APT ãƒãƒ¼ãƒ  <email>apt@packages.debian.org</email> ã«ã‚ˆã£ã¦æ›¸ã‹ã‚Œã¾ã—ãŸã€‚\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-commonoptions \"\n"
+" <varlistentry><term><option>-h</option></term>\n"
+" <term><option>--help</option></term>\n"
+" <listitem><para>Show a short usage summary.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-commonoptions \"\n"
+" <varlistentry><term><option>-h</option></term>\n"
+" <term><option>--help</option></term>\n"
+" <listitem><para>使ã„æ–¹ã®çŸ­ã„è¦ç´„を表示ã—ã¾ã™ã€‚\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-v</option></term>\n"
+" <term><option>--version</option></term>\n"
+" <listitem><para>Show the program version.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-v</option></term>\n"
+" <term><option>--version</option></term>\n"
+" <listitem><para>プログラムã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’表示ã—ã¾ã™ã€‚\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-c</option></term>\n"
+" <term><option>--config-file</option></term>\n"
+" <listitem><para>Configuration File; Specify a configuration file to use. \n"
+" The program will read the default configuration file and then this \n"
+" configuration file. If configuration settings need to be set before the\n"
+" default configuration files are parsed specify a file with the <envar>APT_CONFIG</envar>\n"
+" environment variable. See &apt-conf; for syntax information.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-c</option></term>\n"
+" <term><option>--config-file</option></term>\n"
+" <listitem><para>設定ファイル。 使用ã™ã‚‹è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’指定ã—ã¾ã™ã€‚\n"
+" ã“ã®ãƒ—ログラムã¯ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆè¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’読んã§ã‹ã‚‰ã€ã“ã®è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’読ã¿ã¾ã™ã€‚\n"
+" ã“ã®è¨­å®šã‚’デフォルト設定ファイルよりもå‰ã«èª­ã‚€å¿…è¦ãŒã‚ã‚‹å ´åˆã€\n"
+" <envar>APT_CONFIG</envar> 環境変数ã«æŒ‡å®šã—ã¦ãã ã•ã„。構文ã«ã¤ã„ã¦ã¯ &apt-conf; ã‚’ã”覧ãã ã•ã„。\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-o</option></term>\n"
+" <term><option>--option</option></term>\n"
+" <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
+" configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
+" <option>-o</option> and <option>--option</option> can be used multiple\n"
+" times to set different options.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-o</option></term>\n"
+" <term><option>--option</option></term>\n"
+" <listitem><para>設定オプションã®ã‚»ãƒƒãƒˆã€‚ä»»æ„ã®è¨­å®šã‚ªãƒ—ションをセットã—ã¾ã™ã€‚\n"
+" 構文 <option>-o Foo::Bar=bar</option> ã¨ãªã‚Šã¾ã™ã€‚\n"
+" ç•°ãªã‚‹ã‚ªãƒ—ションを設定ã™ã‚‹ãŸã‚ã€<option>-o</option> 㨠<option>--option</option> ã¯ã€\n"
+" 複数回使用ã§ãã¾ã™ã€‚\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-cmdblurb \"\n"
+" <para>All command line options may be set using the configuration file, the\n"
+" descriptions indicate the configuration option to set. For boolean\n"
+" options you can override the config file by using something like \n"
+" <option>-f-</option>,<option>--no-f</option>, <option>-f=no</option>\n"
+" or several other variations.\n"
+" </para>\n"
+"\">\n"
+msgstr ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-cmdblurb \"\n"
+" <para>ã“ã“ã§è¨­å®šã‚ªãƒ—ションã¨ã—ã¦èª¬æ˜Žã—ãŸã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚ªãƒ—ションã¯ã€\n"
+" ã™ã¹ã¦è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’使用ã—ã¦è¨­å®šã§ãã¾ã™ã€‚\n"
+" 設定ファイルã«æ›¸ã„ãŸçœŸå½å€¤ã‚’ã¨ã‚‹ã‚ªãƒ—ションã¯\n"
+" <option>-f-</option>,<option>--no-f</option>, <option>-f=no</option>\n"
+" ãªã©ã®ã‚ˆã†ã«ã—ã¦ä¸Šæ›¸ãã§ãã¾ã™ã€‚\n"
+" </para>\n"
+"\">\n"
+"\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-aptconf \"\n"
+" <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>\n"
+" <listitem><para>APT configuration file.\n"
+" Configuration Item: <literal>Dir::Etc::Main</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-aptconf \"\n"
+" <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>\n"
+" <listitem><para>APT 設定ファイル。\n"
+" 設定項目: <literal>Dir::Etc::Main</literal></para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
+" <listitem><para>APT configuration file fragments.\n"
+" Configuration Item: <literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
+" <listitem><para>APT 設定ファイル断片。\n"
+" 設定項目: <literal>Dir::Etc::Parts</literal></para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-cachearchives \"\n"
+" <varlistentry><term><filename>&cachedir;/archives/</filename></term>\n"
+" <listitem><para>Storage area for retrieved package files.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-cachearchives \"\n"
+" <varlistentry><term><filename>&cachedir;/archives/</filename></term>\n"
+" <listitem><para>å–得済ã¿ãƒ‘ッケージファイル格ç´ã‚¨ãƒªã‚¢ã€‚\n"
+" 設定項目: <literal>Dir::Cache::Archives</literal></para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>\n"
+" <listitem><para>Storage area for package files in transit.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>\n"
+" <listitem><para>å–得中パッケージファイル格ç´ã‚¨ãƒªã‚¢ã€‚\n"
+" 設定項目: <literal>Dir::Cache::Archives</literal> (暗黙㧠<filename>partial</filename> を追加)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-preferences \"\n"
+" <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
+" <listitem><para>Version preferences file.\n"
+" This is where you would specify &quot;pinning&quot;,\n"
+" i.e. a preference to get certain packages\n"
+" from a separate source\n"
+" or from a different version of a distribution.\n"
+" Configuration Item: <literal>Dir::Etc::Preferences</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-preferences \"\n"
+" <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
+" <listitem><para>ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ—リファレンスファイル。\n"
+" ã“ã“ã« &quot;pin&quot;ã®è¨­å®šã‚’è¡Œã„ã¾ã™ã€‚\n"
+" ã¤ã¾ã‚Šã€åˆ¥ã€…ã®å–得元や異ãªã‚‹ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューションã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ã€\n"
+" ã©ã“ã‹ã‚‰ãƒ‘ッケージをå–å¾—ã™ã‚‹ã‹ã‚’設定ã—ã¾ã™ã€‚\n"
+" 設定項目: <literal>Dir::Etc::Preferences</literal></para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>\n"
+" <listitem><para>File fragments for the version preferences.\n"
+" Configuration Item: <literal>Dir::Etc::PreferencesParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>\n"
+" <listitem><para>ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ—リファレンスファイル断片。\n"
+" 設定項目: <literal>Dir::Etc::PreferencesParts</literal></para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-sourceslist \"\n"
+" <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+" <listitem><para>Locations to fetch packages from.\n"
+" Configuration Item: <literal>Dir::Etc::SourceList</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-sourceslist \"\n"
+" <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+" <listitem><para>パッケージå–å¾—å…ƒã®å ´æ‰€ã€‚\n"
+" 設定項目: <literal>Dir::Etc::SourceList</literal></para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
+" <listitem><para>File fragments for locations to fetch packages from.\n"
+" Configuration Item: <literal>Dir::Etc::SourceParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
+" <listitem><para>パッケージå–å¾—å…ƒã®å ´æ‰€ã®ãƒ•ã‚¡ã‚¤ãƒ«æ–­ç‰‡\n"
+" 設定項目: <literal>Dir::Etc::SourceParts</literal></para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-statelists \"\n"
+" <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
+" <listitem><para>Storage area for state information for each package resource specified in\n"
+" &sources-list;\n"
+" Configuration Item: <literal>Dir::State::Lists</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-statelists \"\n"
+" <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
+" <listitem><para>&sources-list; ã«æŒ‡å®šã—ãŸã€ãƒ‘ッケージリソースã”ã¨ã®çŠ¶æ…‹æƒ…報格ç´ã‚¨ãƒªã‚¢ã€‚\n"
+" 設定項目: <literal>Dir::State::Lists</literal></para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>\n"
+" <listitem><para>Storage area for state information in transit.\n"
+" Configuration Item: <literal>Dir::State::Lists</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>\n"
+" <listitem><para>å–得中状態情報格ç´ã‚¨ãƒªã‚¢ã€‚\n"
+" 設定項目: <literal>Dir::State::Lists</literal> (暗黙㧠<filename>partial</filename> を追加)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-trustedgpg \"\n"
+" <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
+" <listitem><para>Keyring of local trusted keys, new keys will be added here.\n"
+" Configuration Item: <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-trustedgpg \"\n"
+" <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
+" <listitem><para>ローカルã§ä¿¡é ¼æ¸ˆã¿ã‚­ãƒ¼ã®ã‚­ãƒ¼ãƒªãƒ³ã‚°ã€æ–°è¦ã‚­ãƒ¼ã¯ã“ã“ã«è¿½åŠ ã—ã¾ã™ã€‚\n"
+" 設定項目: <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
+" <listitem><para>File fragments for the trusted keys, additional keyrings can\n"
+" be stored here (by other packages or the administrator).\n"
+" Configuration Item <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
+" <listitem><para>信頼済ã¿ã‚­ãƒ¼ã®ãƒ•ã‚¡ã‚¤ãƒ«æ–­ç‰‡ã€è¿½åŠ ã‚­ãƒ¼ãƒªãƒ³ã‚°ã¯ (ä»–ã®ãƒ‘ッケージや管ç†è€…ã«ã‚ˆã‚Š) ã“ã“ã«æ ¼ç´ã—ã¾ã™ã€‚\n"
+" 設定項目: <literal>Dir::Etc::TrustedParts</literal></para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-extended_states \"\n"
+" <varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>\n"
+" <listitem><para>Status list of auto-installed packages.\n"
+" Configuration Item: <literal>Dir::State::extended_states</literal>.\n"
+" </para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY file-extended_states \"\n"
+" <varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>\n"
+" <listitem><para>自動インストールã•ã‚ŒãŸãƒ‘ッケージã®çŠ¶æ…‹ä¸€è¦§ã§ã™ã€‚\n"
+" 設定項目: <literal>Dir::State::extended_states</literal>\n"
+" </para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is the section header for the following paragraphs - comparable\n"
+" to the other headers like NAME and DESCRIPTION and should therefore be uppercase. -->\n"
+"<!ENTITY translation-title \"TRANSLATION\">\n"
+msgstr ""
+"<!-- TRANSLATOR: This is the section header for the following paragraphs - comparable\n"
+" to the other headers like NAME and DESCRIPTION and should therefore be uppercase. -->\n"
+"<!ENTITY translation-title \"翻訳\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is a placeholder. You should write here who has contributed\n"
+" to the translation in the past, who is responsible now and maybe further information\n"
+" specially related to your translation. -->\n"
+"<!ENTITY translation-holder \"\n"
+" The english translation was done by John Doe <email>john@doe.org</email> in 2009,\n"
+" 2010 and Daniela Acme <email>daniela@acme.us</email> in 2010 together with the\n"
+" Debian Dummy l10n Team <email>debian-l10n-dummy@lists.debian.org</email>.\n"
+"\">\n"
+msgstr ""
+"<!-- TRANSLATOR: This is a placeholder. You should write here who has contributed\n"
+" to the translation in the past, who is responsible now and maybe further information\n"
+" specially related to your translation. -->\n"
+"<!ENTITY translation-holder \"\n"
+" 倉澤 望 <email>nabetaro@debian.or.jp</email> (2003-2006,2009-2012),\n"
+" Takuma Yamada <email>tyamada@takumayamada.com</email> (2016),\n"
+" Debian JP Documentation ML <email>debian-doc@debian.or.jp</email>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: As a translation is allowed to have 20% of untranslated/fuzzy strings\n"
+" in a shipped manpage newer/modified paragraphs will maybe appear in english in\n"
+" the generated manpage. This sentence is therefore here to tell the reader that this\n"
+" is not a mistake by the translator - obviously the target is that at least for stable\n"
+" releases this sentence is not needed. :) -->\n"
+"<!ENTITY translation-english \"\n"
+" Note that this translated document may contain untranslated parts.\n"
+" This is done on purpose, to avoid losing content when the\n"
+" translation is lagging behind the original content.\n"
+"\">\n"
+msgstr ""
+"<!-- TRANSLATOR: As a translation is allowed to have 20% of untranslated/fuzzy strings\n"
+" in a shipped manpage newer/modified paragraphs will maybe appear in english in\n"
+" the generated manpage. This sentence is therefore here to tell the reader that this\n"
+" is not a mistake by the translator - obviously the target is that at least for stable\n"
+" releases this sentence is not needed. :) -->\n"
+"<!ENTITY translation-english \"\n"
+" ã“ã®ç¿»è¨³æ–‡æ›¸ã«ã¯æœªè¨³éƒ¨åˆ†ãŒå«ã¾ã‚Œã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ã“ã¨ã«\n"
+" 注æ„ã—ã¦ãã ã•ã„。\n"
+" 翻訳ãŒã‚ªãƒªã‚¸ãƒŠãƒ«ã«è¿½å¾“ã§ãã¦ã„ãªã„å ´åˆã€\n"
+" 内容を失ã‚ãªã„よã†ã«ã“ã®ã‚ˆã†ã«ã—ã¦ã„ã¾ã™ã€‚\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
+"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
+"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"設定文字列\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -c=config_file e.g. -c=./apt.conf --> <!ENTITY "
+"synopsis-config-file \"config_file\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -c=config_file e.g. -c=./apt.conf --> <!ENTITY "
+"synopsis-config-file \"設定ファイル\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
+"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"\"target_release\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
+"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release \"対象リリー"
+"ス\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -a=architecture e.g. -a=armel --> <!ENTITY "
+"synopsis-architecture \"architecture\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -a=architecture e.g. -a=armel --> <!ENTITY "
+"synopsis-architecture \"アーキテクãƒãƒ£\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-get install pkg e.g. apt-get install awesome "
+"--> <!ENTITY synopsis-pkg \"pkg\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-get install pkg e.g. apt-get install awesome "
+"--> <!ENTITY synopsis-pkg \"パッケージ\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in pkg=pkg_version_number e.g. apt=0.8.15 --> <!"
+"ENTITY synopsis-pkg-ver-number \"pkg_version_number\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in pkg=pkg_version_number e.g. apt=0.8.15 --> <!"
+"ENTITY synopsis-pkg-ver-number \"パッケージãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache pkgnames prefix e.g. apt-cache "
+"pkgnames apt --> <!ENTITY synopsis-prefix \"prefix\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-cache pkgnames prefix e.g. apt-cache "
+"pkgnames apt --> <!ENTITY synopsis-prefix \"prefix\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache search regex e.g. apt-cache search "
+"awesome --> <!ENTITY synopsis-regex \"regex\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-cache search regex e.g. apt-cache search "
+"awesome --> <!ENTITY synopsis-regex \"æ­£è¦è¡¨ç¾\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
+"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
+"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"CDROMマウントãƒã‚¤ãƒ³ãƒˆ\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates -t=temporary_directory e.g. "
+"apt-extracttemplates -t=/tmp --> <!ENTITY synopsis-tmp-directory "
+"\"temporary_directory\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates -t=temporary_directory e.g. "
+"apt-extracttemplates -t=/tmp --> <!ENTITY synopsis-tmp-directory \"一時ディレ"
+"クトリ\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates filename --> <!ENTITY "
+"synopsis-filename \"filename\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates filename --> <!ENTITY "
+"synopsis-filename \"ファイルå\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-path \"path\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-path \"パス\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-override "
+"\"override-file\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-override "
+"\"override-file\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-pathprefix "
+"\"pathprefix\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-pathprefix "
+"\"pathprefix\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"generate section --> <!ENTITY synopsis-section \"section\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"generate section --> <!ENTITY synopsis-section \"セクション\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+"473041FA --> <!ENTITY synopsis-keyid \"キーID\">"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+msgid "8"
+msgstr "8"
+
+#. type: Content of: <refentry><refmeta><refmiscinfo>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "APT"
+msgstr "APT"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.8.xml
+msgid "command-line interface"
+msgstr "コマンドラインインターフェイス"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "Description"
+msgstr "説明"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"<command>apt</command> provides a high-level commandline interface for the "
+"package management system. It is intended as an end user interface and "
+"enables some options better suited for interactive usage by default compared "
+"to more specialized APT tools like &apt-get; and &apt-cache;."
+msgstr ""
+"<command>apt</command> ã¯ã€ãƒ‘ッケージ管ç†ã‚·ã‚¹ãƒ†ãƒ ç”¨ã®é«˜ãƒ¬ãƒ™ãƒ«ã®ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³"
+"インターフェースをæä¾›ã—ã¾ã™ã€‚エンドユーザインターフェースã¨ã—ã¦è¨­è¨ˆã•ã‚Œã¦ã„"
+"ã¾ã™ã€‚ã¾ãŸ &apt-get; ã‚„ &apt-cache; ã®ã‚ˆã†ãªå°‚用㮠APT ツールã¨æ¯”ã¹ã¦ã€ãƒ‡ãƒ•ã‚©"
+"ルトã§ã‚¤ãƒ³ã‚¿ãƒ©ã‚¯ãƒ†ã‚£ãƒ–ãªä½¿ç”¨ã«é©ã—ãŸã„ãã¤ã‹ã®ã‚ªãƒ—ションãŒæœ‰åŠ¹ã«ãªã£ã¦ã„ã¾"
+"ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"Much like <command>apt</command> itself, its manpage is intended as an end "
+"user interface and as such only mentions the most used commands and options "
+"partly to not duplicate information in multiple places and partly to avoid "
+"overwhelming readers with a cornucopia of options and details."
+msgstr ""
+"<command>apt</command> 自身ã¨åŒã˜ã‚ˆã†ã«ã€man ページã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‚¤ãƒ³ã‚¿ãƒ¼"
+"フェースã¨ã—ã¦æ„図ã•ã‚Œã¦ã„ã¾ã™ã€‚ã•ã‚‰ã«ã€ä¸€éƒ¨ã®ã‚ªãƒ—ションや詳細ã®è±Šå¯Œã•ã§èª­è€…"
+"を圧倒ã™ã‚‹ã“ã¨ã‚’é¿ã‘ã‚‹ãŸã‚ã€è¤‡æ•°ã®å ´æ‰€ã§éƒ¨åˆ†çš„ã«æƒ…報を複製ã—ãªã„よã†ã€æœ€ã‚‚使"
+"用ã•ã‚Œã‚‹ã‚³ãƒžãƒ³ãƒ‰ã¨ã‚ªãƒ—ションを言åŠã™ã‚‹ã‚ˆã†ã«æ„図ã•ã‚Œã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(&apt-get;)"
+msgstr "(&apt-get;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>update</option> is used to download package information from all "
+"configured sources. Other commands operate on this data to e.g. perform "
+"package upgrades or search in and display details about all packages "
+"available for installation."
+msgstr ""
+"<option>update</option> ã¯ã€è¨­å®šã•ã‚ŒãŸã™ã¹ã¦ã®å–å¾—å…ƒã‹ã‚‰ãƒ‘ッケージ情報をダウ"
+"ンロードã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚ã»ã‹ã®ã‚³ãƒžãƒ³ãƒ‰ã¯ã€ã“ã®ãƒ‡ãƒ¼ã‚¿ã‚’æ“作ã—ã¾ã™ã€‚例"
+"ãˆã°ã€ãƒ‘ッケージã®ã‚¢ãƒƒãƒ—グレードを実行ã—ãŸã‚Šã€ä¸­ã‚’検索ã—ãŸã‚Šã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«å¯"
+"能ãªã™ã¹ã¦ã®ãƒ‘ッケージã«é–¢ã™ã‚‹è©³ç´°æƒ…報を表示ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>upgrade</option> is used to install available upgrades of all "
+"packages currently installed on the system from the sources configured via "
+"&sources-list;. New packages will be installed if required to satisfy "
+"dependencies, but existing packages will never be removed. If an upgrade for "
+"a package requires the remove of an installed package the upgrade for this "
+"package isn't performed."
+msgstr ""
+"<option>upgrade</option> ã¯ã€&sources-list; ã§è¨­å®šã•ã‚ŒãŸå–å¾—å…ƒã‹ã‚‰ã‚·ã‚¹ãƒ†ãƒ ã«"
+"ç¾åœ¨ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã®ã™ã¹ã¦ã®ãƒ‘ッケージã§åˆ©ç”¨å¯èƒ½ãªã‚¢ãƒƒãƒ—グレードをインス"
+"トールã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚ä¾å­˜é–¢ä¿‚を満ãŸã™ãŸã‚ã«å¿…è¦ãªå ´åˆã¯æ–°ã—ã„パッ"
+"ケージãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¾ã™ãŒã€æ—¢å­˜ã®ãƒ‘ッケージãŒå‰Šé™¤ã•ã‚Œã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›"
+"ん。パッケージã®ã‚¢ãƒƒãƒ—グレードã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ãƒ‘ッケージã®å‰Šé™¤ãŒå¿…è¦ãªå ´"
+"åˆã€ãã®ãƒ‘ッケージã®ã‚¢ãƒƒãƒ—グレードã¯è¡Œã‚ã‚Œã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>full-upgrade</literal> performs the function of upgrade but will "
+"remove currently installed packages if this is needed to upgrade the system "
+"as a whole."
+msgstr ""
+"<literal>full-upgrade</literal> ã¯ã‚¢ãƒƒãƒ—グレードã®æ©Ÿèƒ½ã‚’実行ã—ã¾ã™ãŒã€ã‚·ã‚¹ãƒ†"
+"ム全体をアップグレードã™ã‚‹ãŸã‚ã«å¿…è¦ã¨ã•ã‚Œã‚‹å ´åˆã«ã¯ã€ç¾åœ¨ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã®"
+"パッケージを削除ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml apt-key.8.xml
+msgid ","
+msgstr ","
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Performs the requested action on one or more packages specified via &regex;, "
+"&glob; or exact match. The requested action can be overridden for specific "
+"packages by append a plus (+) to the package name to install this package or "
+"a minus (-) to remove it."
+msgstr ""
+"&regex;ã€&glob; ã¾ãŸã¯ 完全ãªä¸€è‡´ã§æŒ‡å®šã•ã‚ŒãŸ 1 ã¤ä»¥ä¸Šã®ãƒ‘ッケージã«å¯¾ã—ã¦è¦"
+"求ã•ã‚ŒãŸå‡¦ç†ã‚’実行ã—ã¾ã™ã€‚è¦æ±‚ã•ã‚ŒãŸå‡¦ç†ã¯ã€ç‰¹å®šã®ãƒ‘ッケージã«å¯¾ã—ã¦ãƒ‘ッケー"
+"ジåã«ãƒ—ラス (+) を追加ã—ã¦ãƒ‘ッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’ã€ãƒžã‚¤ãƒŠã‚¹ (-) を追加ã—"
+"ã¦ãƒ‘ッケージã®å‰Šé™¤ã‚’上書ãã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals (=) and the version of the package "
+"to select. Alternatively the version from a specific release can be selected "
+"by following the package name with a forward slash (/) and codename (&debian-"
+"stable-codename;, &debian-testing-codename;, sid …) or suite name (stable, "
+"testing, unstable). This will also select versions from this release for "
+"dependencies of this package if needed to satisfy the request."
+msgstr ""
+"パッケージåã«ã‚¤ã‚³ãƒ¼ãƒ« (=) ã¨ãƒ‘ッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’続ã‘ã‚‹ã“ã¨ã§ã€é¸æŠžã—ãŸ"
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ‘ッケージをインストールã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚代ã‚ã‚Šã«ã€ãƒ‘ッケージ"
+"åã«ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ (/) ãŠã‚ˆã³ã‚³ãƒ¼ãƒ‰å (&debian-stable-codename;ã€&debian-testing-"
+"codename;ã€sid …) ã¾ãŸã¯ã‚¹ã‚¤ãƒ¼ãƒˆå (stableã€testingã€unstable) を続ã‘ã‚‹ã“ã¨"
+"ã§ã€ç‰¹å®šã®ãƒªãƒªãƒ¼ã‚¹ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’インストールã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã¾ãŸã€å¿…è¦ãª"
+"å ´åˆã«ã¯ã€ãƒ‘ッケージã®ä¾å­˜é–¢ä¿‚を満ãŸã™ãƒªãƒªãƒ¼ã‚¹ã‹ã‚‰ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’é¸æŠžã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Removing a package removes all packaged data, but leaves usually small "
+"(modified) user configuration files behind, in case the remove was an "
+"accident. Just issuing an installation request for the accidentally removed "
+"package will restore its function as before in that case. On the other hand "
+"you can get rid of these leftovers by calling <command>purge</command> even "
+"on already removed packages. Note that this does not affect any data or "
+"configuration stored in your home directory."
+msgstr ""
+"パッケージã®å‰Šé™¤ã¯ãƒ‘ッケージã®å…¨ãƒ‡ãƒ¼ã‚¿ã‚’削除ã—ã¾ã™ãŒã€å‰Šé™¤ã®äº‹æ•…ã«å‚™ãˆã¦ã€é€š"
+"常ã¯éš ã‚Œã¦ã„ã‚‹å°ã•ãª (修正ã•ã‚ŒãŸ) ユーザ設定ファイルを残ã—ã¾ã™ã€‚å•é¡ŒãŒç™ºç”Ÿã—"
+"ãŸã¨ãã¯ã€èª¤ã£ã¦å‰Šé™¤ã—ãŸãƒ‘ッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«è¦æ±‚を発行ã™ã‚‹ã¨ã€ä»¥å‰ã®ã‚ˆã†"
+"ã«ãã®æ©Ÿèƒ½ã‚’復元ã—ã¾ã™ã€‚一方ã€<command>purge</command> を呼ã³å‡ºã™ã“ã¨ã§ã€ã™ã§"
+"ã«å‰Šé™¤ã—ãŸãƒ‘ッケージã®æ®‹ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ã‚’削除ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã‚Œã¯ã‚ãªãŸã®"
+"ホームディレクトリã«ä¿å­˜ã—ã¦ã„るデータや設定ã«ã¯å½±éŸ¿ã‚’与ãˆãªã„ã“ã¨ã«æ³¨æ„ã—ã¦"
+"ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed as dependencies changed or the package(s) needing them "
+"were removed in the meantime."
+msgstr ""
+"<literal>autoremove</literal> ã¯ã€ã»ã‹ã®ãƒ‘ッケージã®ä¾å­˜é–¢ä¿‚を満ãŸã™ãŸã‚ã«è‡ª"
+"å‹•çš„ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚ŒãŸå¾Œã«ã€ä¾å­˜é–¢ä¿‚ã®å¤‰æ›´ã‚ã‚‹ã„ã¯å¿…è¦ã¨ã—ã¦ã„ãŸãƒ‘ッケージ"
+"ãŒå‰Šé™¤ã•ã‚ŒãŸã“ã¨ã§ã‚‚ã†å¿…è¦ãªããªã£ãŸãƒ‘ッケージã®å‰Šé™¤ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾"
+"ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"You should check that the list does not include applications you have grown "
+"to like even though they were once installed just as a dependency of another "
+"package. You can mark such a package as manually installed by using &apt-"
+"mark;. Packages which you have installed explicitly via <command>install</"
+"command> are also never proposed for automatic removal."
+msgstr ""
+"別ã®ãƒ‘ッケージã®ä¾å­˜é–¢ä¿‚ã®ãŸã‚一度インストールã•ã‚ŒãŸãªã©ã§å¢—ãˆãŸã‚¢ãƒ—リケー"
+"ションãŒãƒªã‚¹ãƒˆã«å«ã¾ã‚Œã¦ã„ãªã„ã“ã¨ã‚’確èªã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚&apt-mark; を使ã£"
+"ã¦ã€æ‰‹å‹•ã§ãƒ‘ッケージをインストール済ã«ãƒžãƒ¼ã‚¯ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+"<command>install</command> 経由ã§æ˜Žç¤ºçš„ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸãƒ‘ッケージã¯ã€è‡ªå‹•å‰Š"
+"除ã®ãŸã‚ã«æ案ã•ã‚Œã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(&apt-cache;)"
+msgstr "(&apt-cache;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>search</option> can be used to search for the given &regex; term(s) "
+"in the list of available packages and display matches. This can e.g. be "
+"useful if you are looking for packages having a specific feature. If you "
+"are looking for a package including a specific file try &apt-file;."
+msgstr ""
+"<option>search</option> ã¯ã€åˆ©ç”¨å¯èƒ½ãªãƒ‘ッケージã®ãƒªã‚¹ãƒˆã‚’指定ã—㟠&regex; æ¡"
+"件ã§æ¤œç´¢ã—ã¦ãƒžãƒƒãƒã—ãŸçµæžœã‚’表示ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã‚Œã¯ã€ä¾‹"
+"ãˆã°ç‰¹å®šã®æ©Ÿèƒ½ã‚’ã‚‚ã¤ãƒ‘ッケージを探ã—ã¦ã„ã‚‹å ´åˆã«æœ‰ç”¨ã§ã™ã€‚特定ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å«"
+"むパッケージを探ã—ã¦ã„ã‚‹ã®ãªã‚‰ã€&apt-file; を試ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Show information about the given package(s) including its dependencies, "
+"installation and download size, sources the package is available from, the "
+"description of the packages content and much more. It can e.g. be helpful to "
+"look at this information before allowing &apt; to remove a package or while "
+"searching for new packages to install."
+msgstr ""
+"指定ã•ã‚ŒãŸãƒ‘ッケージã«é–¢ã™ã‚‹æƒ…報を表示ã—ã¾ã™ã€‚ä¾å­˜é–¢ä¿‚ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŠã‚ˆã³ãƒ€"
+"ウンロードサイズã€ãƒ‘ッケージãŒå…¥æ‰‹å¯èƒ½ãªå–å¾—å…ƒã€ãƒ‘ッケージã®å†…容ã®èª¬æ˜Žãªã©ã‚’"
+"å«ã¿ã¾ã™ã€‚例ãˆã° &apt; ã«ãƒ‘ッケージã®å‰Šé™¤ã‚’ã•ã›ã‚‹å‰ã‚„ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹æ–°ã—ã„"
+"パッケージを検索ã™ã‚‹ã¨ãã«ã€ã“ã®æƒ…報を見ã¦å‚考ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(work-in-progress)"
+msgstr "(作業中)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>list</option> is somewhat similar to <command>dpkg-query --list</"
+"command> in that it can display a list of packages satisfying certain "
+"criteria. It supports &glob; patterns for matching package names as well as "
+"options to list installed (<option>--installed</option>), upgradeable "
+"(<option>--upgradeable</option>) or all available (<option>--all-versions</"
+"option>) versions."
+msgstr ""
+"<option>list</option> ã¯ã€ä¸€å®šã®åŸºæº–を満ãŸã™ãƒ‘ッケージã®ãƒªã‚¹ãƒˆã‚’表示ã™ã‚‹ã“ã¨"
+"ãŒã§ãã‚‹ã¨ã„ã†ç‚¹ã§ã€<command>dpkg-query --list</command> ã«ä¼¼ã¦ã„ã¾ã™ã€‚インス"
+"トール済 (<option>--installed</option>)ã€ã‚¢ãƒƒãƒ—グレードå¯èƒ½ (<option>--"
+"upgradeable</option>) ã¾ãŸã¯åˆ©ç”¨å¯èƒ½ãªã™ã¹ã¦ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ (<option>--all-"
+"versions</option>) ã®ä¸€è¦§ã‚ªãƒ—ションã§ã‚‚ã€ãƒ‘ッケージåをマッãƒã•ã›ã‚‹ &glob; パ"
+"ターンをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>edit-sources</literal> lets you edit your &sources-list; files in "
+"your preferred texteditor while also providing basic sanity checks."
+msgstr ""
+"<literal>edit-sources</literal> ã¯ã€ãŠå¥½ã¿ã®ãƒ†ã‚­ã‚¹ãƒˆã‚¨ãƒ‡ã‚£ã‚¿ã§ &sources-"
+"list; ファイルを編集ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã¾ãŸã€åŸºæœ¬çš„ãªå¥å…¨æ€§ãƒã‚§ãƒƒã‚¯ã‚’æä¾›ã—"
+"ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml
+msgid "Script Usage and Differences from Other APT Tools"
+msgstr "スクリプトã®ä½¿ã„æ–¹ãŠã‚ˆã³ã»ã‹ã® APT ツールã¨ã®é•ã„"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"The &apt; commandline is designed as an end-user tool and it may change "
+"behavior between versions. While it tries not to break backward "
+"compatibility this is not guaranteed either if a change seems beneficial for "
+"interactive use."
+msgstr ""
+"&apt; コマンドラインã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶å‘ã‘ツールã¨ã—ã¦è¨­è¨ˆã•ã‚Œã¦ã„ã¾ã™ã€‚動作ã¯"
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³é–“ã§å¤‰æ›´ã•ã‚Œã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚後方互æ›æ€§ã‚’æãªã†ã“ã¨ã®ãªã„よã†ã«"
+"ã¯åŠªã‚ã¾ã™ãŒã€å¤‰æ›´ãŒã‚¤ãƒ³ã‚¿ãƒ©ã‚¯ãƒ†ã‚£ãƒ–ãªä½¿ç”¨ã«æœ‰ç›Šã¨æ€ã‚れる場åˆã«ã¯ã€ãã®ä¿è¨¼"
+"ã¯ã‚ã‚Šã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"All features of &apt; are available in dedicated APT tools like &apt-get; "
+"and &apt-cache; as well. &apt; just changes the default value of some "
+"options (see &apt-conf; and specifically the Binary scope). So you should "
+"prefer using these commands (potentially with some additional options "
+"enabled) in your scripts as they keep backward compatibility as much as "
+"possible."
+msgstr ""
+"&apt; ã®ã™ã¹ã¦ã®æ©Ÿèƒ½ã¯ã€&apt-get; ã‚„ &apt-cache; ãªã©å°‚用㮠APT ツールã§åˆ©ç”¨"
+"å¯èƒ½ã§ã™ã€‚&apt; ã¯ã€å˜ã«ã„ãã¤ã‹ã®ã‚ªãƒ—ションã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã‚’変更ã—ã¾ã™ (&apt-"
+"conf; ã®ç‰¹ã«ãƒã‚¤ãƒŠãƒªç¯„囲をå‚ç…§)。å¯èƒ½ãªé™ã‚Šä¸‹ä½äº’æ›æ€§ã‚’ä¿ã¤ã‚ˆã†ã«ã€ã‚¹ã‚¯ãƒªãƒ—ト"
+"ã§ã¯ (潜在的ã«æœ‰åŠ¹ã«ãªã£ã¦ã„ã‚‹ã„ãã¤ã‹ã®è¿½åŠ ã‚ªãƒ—ションをã¤ã‘ã¦) コマンドを使"
+"ã†ã¹ãã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "See Also"
+msgstr "関連項目"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
+"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+msgstr ""
+"&apt-get;ã€&apt-cache;ã€&sources-list;ã€&apt-conf;ã€&apt-config;ã€"
+"&guidesdir; ã«ã‚ã‚‹ APT ユーザガイドã€&apt-preferences;ã€APT Howto."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-cdrom.8.xml
+#: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml
+msgid "Diagnostics"
+msgstr "診断メッセージ"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"<command>apt</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+"<command>apt</command> ã¯æ­£å¸¸çµ‚了時㫠0 ã‚’è¿”ã—ã¾ã™ã€‚エラー時ã«ã¯å進㮠100 ã‚’"
+"è¿”ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-get.8.xml
+msgid "APT package handling utility -- command-line interface"
+msgstr "APT パッケージæ“作ユーティリティ -- コマンドラインインターフェース"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"<command>apt-get</command> is the command-line tool for handling packages, "
+"and may be considered the user's \"back-end\" to other tools using the APT "
+"library. Several \"front-end\" interfaces exist, such as &aptitude;, "
+"&synaptic; and &wajig;."
+msgstr ""
+"<command>apt-get</command> ã¯ã€ãƒ‘ッケージをæ“作ã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ãƒ„ールã§ã€"
+"APT ライブラリを用ã„ã‚‹ä»–ã®ãƒ„ールã®ãƒ¦ãƒ¼ã‚¶å´ã€Œãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã€ã¨ã„ãˆã‚‹ã‚‚ã®ã§ã™ã€‚"
+"「フロントエンドã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã«ã¯ã€&aptitude;, &synaptic;, &wajig; ãªã©"
+"ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml apt-cache.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt-ftparchive.1.xml
+msgid ""
+"Unless the <option>-h</option>, or <option>--help</option> option is given, "
+"one of the commands below must be present."
+msgstr ""
+"<option>-h</option> オプションや <option>--help</option> オプションを除ãã€ä»¥"
+"下ã«æŒ™ã’るコマンドãŒå¿…è¦ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>update</literal> is used to resynchronize the package index files "
+"from their sources. The indexes of available packages are fetched from the "
+"location(s) specified in <filename>/etc/apt/sources.list</filename>. For "
+"example, when using a Debian archive, this command retrieves and scans the "
+"<filename>Packages.gz</filename> files, so that information about new and "
+"updated packages is available. An <literal>update</literal> should always be "
+"performed before an <literal>upgrade</literal> or <literal>dist-upgrade</"
+"literal>. Please be aware that the overall progress meter will be incorrect "
+"as the size of the package files cannot be known in advance."
+msgstr ""
+"<literal>update</literal>ã¯ã€å–å¾—å…ƒã‹ã‚‰ãƒ‘ッケージインデックスファイルã®å†åŒæœŸ"
+"ã‚’è¡Œã†ã®ã«ä½¿ç”¨ã—ã¾ã™ã€‚利用å¯èƒ½ãªãƒ‘ッケージã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã¯ã€<filename>/etc/"
+"apt/sources.list</filename> ã«è¨˜è¿°ã—ãŸå ´æ‰€ã‹ã‚‰å–å¾—ã—ã¾ã™ã€‚例ãˆã° Debian アー"
+"カイブを利用ã™ã‚‹éš›ã€ã“ã®ã‚³ãƒžãƒ³ãƒ‰ãŒ <filename>Packages.gz</filename> ファイル"
+"を検索ã™ã‚‹ã“ã¨ã§ã€æ–°è¦ã¾ãŸã¯æ›´æ–°ã•ã‚ŒãŸãƒ‘ッケージã®æƒ…å ±ãŒåˆ©ç”¨å¯èƒ½ã¨ãªã‚Šã¾ã™ã€‚"
+"<literal>update</literal> ã¯ã€<literal>upgrade</literal> ã‚„ <literal>dist-"
+"upgrade</literal> ã‚’è¡Œã†å‰ã«å¸¸ã«å®Ÿè¡Œã—ã¦ãã ã•ã„。å‰ã‚‚ã£ã¦ãƒ‘ッケージファイル"
+"ã®ã‚µã‚¤ã‚ºã‚’知るã“ã¨ãŒã§ããªã„ãŸã‚ã€å…¨ä½“ã®é€²æ—メータã¯æ­£ã—ã表示ã•ã‚Œã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>upgrade</literal> is used to install the newest versions of all "
+"packages currently installed on the system from the sources enumerated in "
+"<filename>/etc/apt/sources.list</filename>. Packages currently installed "
+"with new versions available are retrieved and upgraded; under no "
+"circumstances are currently installed packages removed, or packages not "
+"already installed retrieved and installed. New versions of currently "
+"installed packages that cannot be upgraded without changing the install "
+"status of another package will be left at their current version. An "
+"<literal>update</literal> must be performed first so that <command>apt-get</"
+"command> knows that new versions of packages are available."
+msgstr ""
+"<literal>upgrade</literal> ã¯ã€ç¾åœ¨ã‚·ã‚¹ãƒ†ãƒ ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„る全パッケー"
+"ジã®æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ã€<filename>/etc/apt/sources.list</filename> ã«åˆ—挙ã—ãŸå–"
+"å¾—å…ƒã‹ã‚‰ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã®ã«ä½¿ç”¨ã—ã¾ã™ã€‚ç¾åœ¨ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ä¸­ã®ãƒ‘ッケージã«æ–°ã—"
+"ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã‚ã‚Œã°æ›´æ–°ã—ã¾ã™ãŒã€ã„ã‹ãªã‚‹æ™‚ã‚‚ç¾åœ¨ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ä¸­ã®ãƒ‘ッケージ"
+"ã®å‰Šé™¤ã¯è¡Œã„ã¾ã›ã‚“ã—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ã„ãªã„パッケー所ã®å–得・インストールã¯"
+"è¡Œã„ã¾ã›ã‚“。対象ã®ãƒ‘ッケージãŒã€ä»–ã®ãƒ‘ッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«çŠ¶æ…‹ã‚’変更ã›ãšã«"
+"æ›´æ–°ã§ããªã„å ´åˆã¯ã€ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ã¾ã¾ã¨ãªã‚Šã¾ã™ã€‚最åˆã« "
+"<literal>update</literal> を実行ã—ã¦ãŠãã€<command>apt-get</command> ã«ãƒ‘ッ"
+"ケージã®æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã‚ã‚‹ã“ã¨ã‚’知らã›ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>dist-upgrade</literal> in addition to performing the function of "
+"<literal>upgrade</literal>, also intelligently handles changing dependencies "
+"with new versions of packages; <command>apt-get</command> has a \"smart\" "
+"conflict resolution system, and it will attempt to upgrade the most "
+"important packages at the expense of less important ones if necessary. The "
+"<literal>dist-upgrade</literal> command may therefore remove some packages. "
+"The <filename>/etc/apt/sources.list</filename> file contains a list of "
+"locations from which to retrieve desired package files. See also &apt-"
+"preferences; for a mechanism for overriding the general settings for "
+"individual packages."
+msgstr ""
+"<literal>dist-upgrade</literal> ã¯ã€<literal>upgrade</literal> ã®æ©Ÿèƒ½ã«åŠ ãˆã€"
+"æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ‘ッケージã«å¯¾ã™ã‚‹ä¾å­˜é–¢ä¿‚ã®å¤‰æ›´ã‚’知的ã«æ“作ã—ã¾ã™ã€‚"
+"<command>apt-get</command> ã¯ã€Œæ´—ç·´ã•ã‚ŒãŸã€ç«¶åˆè§£æ±ºã‚·ã‚¹ãƒ†ãƒ ã‚’æŒã¡ã€å¿…è¦ã¨ã‚ら"
+"ã°æ¯”較的é‡è¦ã§ãªã„パッケージを犠牲ã«ã—ã¦ã€æœ€é‡è¦ãƒ‘ッケージã®æ›´æ–°ã‚’試ã¿ã¾ã™ã€‚"
+"ãã®ãŸã‚ <literal>dist-upgrade</literal> ã¯ã€ã„ãã¤ã‹ã®ãƒ‘ッケージを削除ã™ã‚‹å¯"
+"能性ãŒã‚ã‚Šã¾ã™ã€‚<filename>/etc/apt/sources.list</filename> ファイルã«ã¯ã€å¿…è¦"
+"ãªãƒ‘ッケージファイルを検索ã™ã‚‹å ´æ‰€ã®ãƒªã‚¹ãƒˆãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚特定ã®ãƒ‘ッケージ"
+"å‘ã‘ã«ã€ä¸€èˆ¬çš„ãªè¨­å®šã‚’上書ãã™ã‚‹æ©Ÿæ§‹ã«ã¤ã„ã¦ã¯ã€&apt-preferences; ã‚’ã”覧ãã "
+"ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>dselect-upgrade</literal> is used in conjunction with the "
+"traditional Debian packaging front-end, &dselect;. <literal>dselect-upgrade</"
+"literal> follows the changes made by &dselect; to the <literal>Status</"
+"literal> field of available packages, and performs the actions necessary to "
+"realize that state (for instance, the removal of old and the installation of "
+"new packages)."
+msgstr ""
+"<literal>dselect-upgrade</literal> ã¯ã€ä¼çµ±çš„㪠Debian GNU/Linux パッケージ管"
+"ç†ãƒ•ãƒ­ãƒ³ãƒˆã‚¨ãƒ³ãƒ‰ã® &dselect; ã¨å…±ã«ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚<literal>dselect-upgrade</"
+"literal> ã¯ã€&dselect; ã§ä½œã‚‰ã‚ŒãŸåˆ©ç”¨å¯èƒ½ãƒ‘ッケージã®<literal>Status</"
+"literal> フィールドã®å¤‰æ›´ã‚’追跡ã—ã€ãã®çŠ¶æ…‹ã‚’å映ã•ã›ã‚‹ã®ã«å¿…è¦ãªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’"
+"実行ã—ã¾ã™ã€‚(例ãˆã°ã€å¤ã„パッケージã®å‰Šé™¤ã‚„æ–°ã—ã„パッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãª"
+"ã©)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>install</literal> is followed by one or more packages desired for "
+"installation or upgrading. Each package is a package name, not a fully "
+"qualified filename (for instance, in a Debian system, <package>apt-utils</"
+"package> would be the argument provided, not <filename>apt-utils_&apt-"
+"product-version;_amd64.deb</filename>). All packages required by the "
+"package(s) specified for installation will also be retrieved and installed. "
+"The <filename>/etc/apt/sources.list</filename> file is used to locate the "
+"desired packages. If a hyphen is appended to the package name (with no "
+"intervening space), the identified package will be removed if it is "
+"installed. Similarly a plus sign can be used to designate a package to "
+"install. These latter features may be used to override decisions made by apt-"
+"get's conflict resolution system."
+msgstr ""
+"<literal>install</literal> ã®å¾Œã«ã¯ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚„æ›´æ–°ã—ãŸã„パッケージを 1 "
+"ã¤ä»¥ä¸ŠæŒ‡å®šã—ã¾ã™ã€‚指定ã™ã‚‹ãƒ‘ッケージã¯ã€å®Œå…¨ãªãƒ•ã‚¡ã‚¤ãƒ«åã§ã¯ãªãパッケージå"
+"ã§ã™ (例ãˆã° Debian システムã§ã¯ã€<filename>apt-utils_&apt-product-version;"
+"_amd64.deb</filename> ã§ã¯ãªã <package>apt-utils</package> を引数ã¨ã—ã¦ä¸Žãˆ"
+"ã¾ã™)。インストールã™ã‚‹ã‚ˆã†æŒ‡å®šã—ãŸã™ã¹ã¦ã®ãƒ‘ッケージã«å¯¾ã—ã€ä¾å­˜ãƒ‘ッケージも"
+"å«ã‚ã¦å–得・インストールを行ã„ã¾ã™ã€‚<filename>/etc/apt/sources.list</"
+"filename> ファイルをã€è¦æ±‚ã™ã‚‹ãƒ‘ッケージã®å ´æ‰€ã‚’特定ã™ã‚‹ã®ã«ä½¿ç”¨ã—ã¾ã™ã€‚パッ"
+"ケージåã®å¾Œã‚ã« (空白をå«ã¾ãš) ãƒã‚¤ãƒ•ãƒ³ãŒè¿½åŠ ã•ã‚Œã¦ã„ã‚‹å ´åˆã€ãã®ãƒ‘ッケージ"
+"ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã‚Œã°å‰Šé™¤ã—ã¾ã™ã€‚åŒæ§˜ã«ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ãƒ‘ッケージを明"
+"示ã™ã‚‹ã®ã«ãƒ—ラス記å·ã‚‚使用ã§ãã¾ã™ã€‚ã“ã®è¨˜å·ã¯ apt-get ã®ç«¶åˆè§£æ±ºã‚·ã‚¹ãƒ†ãƒ ã®åˆ¤"
+"断を上書ãã™ã‚‹ã®ã«åˆ©ç”¨ã•ã‚Œã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals and the version of the package to "
+"select. This will cause that version to be located and selected for install. "
+"Alternatively a specific distribution can be selected by following the "
+"package name with a slash and the version of the distribution or the Archive "
+"name (stable, testing, unstable)."
+msgstr ""
+"パッケージã«ã‚¤ã‚³ãƒ¼ãƒ«è¨˜å·ã¨ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’続ã‘ã‚‹ã“ã¨ã§ã€é¸æŠžã—ãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ‘ッ"
+"ケージをインストールã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã¤ã¾ã‚Šã€æŒ‡å®šã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ‘ッケージ"
+"をインストールã™ã‚‹ã‚ˆã†ã«é¸æŠžã™ã‚‹ã€ã¨ã„ã†ã“ã¨ã§ã™ã€‚別ã®æ–¹æ³•ã¨ã—ã¦ã¯ã€ãƒ‡ã‚£ã‚¹ãƒˆ"
+"リビューションを特定ã™ã‚‹ã®ã«ã€ãƒ‘ッケージåã«ç¶šã‘ã¦ã€ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã¨ãƒ‡ã‚£ã‚¹ãƒˆãƒª"
+"ビューションã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚„アーカイブå (stable, testing, unstable) を記述ã§ã"
+"ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Both of the version selection mechanisms can downgrade packages and must be "
+"used with care."
+msgstr ""
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³é¸æŠžæ©Ÿæ§‹ã¯ãƒ€ã‚¦ãƒ³ã‚°ãƒ¬ãƒ¼ãƒ‰ã«ã‚‚使用ã§ãã‚‹ãŸã‚ã€æ³¨æ„ã—ã¦ä½¿ç”¨ã—ãªã‘ã‚Œã°"
+"ãªã‚Šã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This is also the target to use if you want to upgrade one or more already-"
+"installed packages without upgrading every package you have on your system. "
+"Unlike the \"upgrade\" target, which installs the newest version of all "
+"currently installed packages, \"install\" will install the newest version of "
+"only the package(s) specified. Simply provide the name of the package(s) "
+"you wish to upgrade, and if a newer version is available, it (and its "
+"dependencies, as described above) will be downloaded and installed."
+msgstr ""
+"システムã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã®ãƒ‘ッケージをã€ã™ã¹ã¦ã‚¢ãƒƒãƒ—グレードã™ã‚‹ã®ã§ã¯ãª"
+"ãã€ã„ãã¤ã‹ã®ãƒ‘ッケージをアップグレードã™ã‚‹å ´åˆã«ã‚‚ã€ã“ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’使用ã§"
+"ãã¾ã™ã€‚ç¾åœ¨ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„るパッケージã™ã¹ã¦ã®æœ€æ–°ç‰ˆã‚’インストールã™ã‚‹ "
+"\"upgrade\" ターゲットã¨ç•°ãªã‚Šã€\"install\" ã¯æŒ‡å®šã—ãŸãƒ‘ッケージã®æœ€æ–°ç‰ˆã®ã¿"
+"をインストールã—ã¾ã™ã€‚å˜ç´”ã«ã‚¢ãƒƒãƒ—グレードã—ãŸã„パッケージåを指定ã—ã¦ãã ã•"
+"ã„。より新ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨ã§ãã‚‹å ´åˆã€ãã®ãƒ‘ッケージ (ã¨å‰è¿°ã®ä¾å­˜é–¢ä¿‚ã«"
+"ã‚るパッケージ) をダウンロード・インストールã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Finally, the &apt-preferences; mechanism allows you to create an alternative "
+"installation policy for individual packages."
+msgstr ""
+"最後ã«ã€&apt-preferences; 機構ã«ã‚ˆã‚Šã€ç‰¹å®šã®ãƒ‘ッケージã«å¯¾ã™ã‚‹ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãƒ"
+"リシーを作æˆã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If no package matches the given expression and the expression contains one "
+"of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and "
+"it is applied to all package names in the database. Any matches are then "
+"installed (or removed). Note that matching is done by substring so 'lo.*' "
+"matches 'how-lo' and 'lowest'. If this is undesired, anchor the regular "
+"expression with a '^' or '$' character, or create a more specific regular "
+"expression."
+msgstr ""
+"構文㫠'.', '?', '*' ã‚’å«ã¿ã€ãƒ‘ッケージåãŒãƒžãƒƒãƒã—ãªã‹ã£ãŸå ´åˆã€POSIX æ­£è¦è¡¨"
+"ç¾ã§ã‚ã‚‹ã¨è¦‹ãªã—ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã®å…¨ãƒ‘ッケージåã«å¯¾ã—ã¦é©ç”¨ã—ã¾ã™ã€‚マッãƒã—"
+"ãŸãƒ‘ッケージã™ã¹ã¦ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«(ã‚‚ã—ãã¯å‰Šé™¤)ã•ã‚Œã¾ã™ã€‚'lo.*' ã®ã‚ˆã†ãªæ–‡å­—列"
+"ã¯ã€'how-lo' ã‚„ 'lowest' ã«ãƒžãƒƒãƒã™ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。ãã†ã—ãŸããªã‘ã‚Œ"
+"ã°ã€'^' ã‚„ '$' を付ã‘ã‚‹ã‹ã€ã‚‚ã£ã¨è©³ã—ã„æ­£è¦è¡¨ç¾ã‚’指定ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>remove</literal> is identical to <literal>install</literal> except "
+"that packages are removed instead of installed. Note that removing a package "
+"leaves its configuration files on the system. If a plus sign is appended to "
+"the package name (with no intervening space), the identified package will be "
+"installed instead of removed."
+msgstr ""
+"<literal>remove</literal> ã¯ã€ãƒ‘ッケージãŒå‰Šé™¤ã•ã‚Œã‚‹ã“ã¨ã‚’除ãã€"
+"<literal>install</literal> ã¨åŒæ§˜ã§ã™ã€‚削除ã•ã‚ŒãŸãƒ‘ッケージã®è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€"
+"システムã«æ®‹ã£ãŸã¾ã¾ã«ãªã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。プラス記å·ãŒãƒ‘ッケージåã« "
+"(é–“ã«ç©ºç™½ã‚’å«ã¾ãšã«) 付加ã•ã‚Œã‚‹ã¨ã€è­˜åˆ¥ã•ã‚ŒãŸãƒ‘ッケージをã€å‰Šé™¤ã§ã¯ãªãインス"
+"トールã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>purge</literal> is identical to <literal>remove</literal> except "
+"that packages are removed and purged (any configuration files are deleted "
+"too)."
+msgstr ""
+"パッケージãŒå‰Šé™¤ã‹ã¤å®Œå…¨å‰Šé™¤ (ã™ã¹ã¦ã®è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚‚削除) ã•ã‚Œã‚‹ã®ã‚’除ãã€"
+"<literal>purge</literal> 㯠<literal>remove</literal> ã¨åŒã˜ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>source</literal> causes <command>apt-get</command> to fetch source "
+"packages. APT will examine the available packages to decide which source "
+"package to fetch. It will then find and download into the current directory "
+"the newest available version of that source package while respecting the "
+"default release, set with the option <literal>APT::Default-Release</"
+"literal>, the <option>-t</option> option or per package with the "
+"<literal>pkg/release</literal> syntax, if possible."
+msgstr ""
+"<literal>source</literal> ã¯ã€<command>apt-get</command> ã«ã‚½ãƒ¼ã‚¹ãƒ‘ッケージを"
+"å–å¾—ã•ã›ã¾ã™ã€‚APT ã¯ã©ã®ã‚½ãƒ¼ã‚¹ãƒ‘ッケージをå–å¾—ã™ã‚‹ã‹æ±ºã‚ã‚‹ãŸã‚ã€åˆ©ç”¨å¯èƒ½ãª"
+"パッケージを検査ã—ã¾ã™ã€‚ãã®å¾Œã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒªãƒªãƒ¼ã‚¹ã‹ã‚‰æœ€æ–°ã®åˆ©ç”¨å¯èƒ½ãªã‚½ãƒ¼ã‚¹"
+"パッケージを見ã¤ã‘ã€ã‚«ãƒ¬ãƒ³ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¸ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¾ã™ã€‚デフォルトリ"
+"リースã¯ã€å¯èƒ½ã§ã‚ã‚Œã°ã€<literal>APT::Default-Release</literal> オプションã€"
+"<option>-t</option> オプションã€ãƒ‘ッケージã”ã¨ã® <literal>pkg/release</"
+"literal> 構文ã§æŒ‡å®šã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Source packages are tracked separately from binary packages via <literal>deb-"
+"src</literal> lines in the &sources-list; file. This means that you will "
+"need to add such a line for each repository you want to get sources from; "
+"otherwise you will probably get either the wrong (too old/too new) source "
+"versions or none at all."
+msgstr ""
+"ソースパッケージã¯ã€&sources-list; ファイル㮠<literal>deb-src</literal> è¡Œã«"
+"よりã€ãƒã‚¤ãƒŠãƒªãƒ‘ッケージã¨åˆ†ã‘ã¦ç®¡ç†ã•ã‚Œã¾ã™ã€‚ã¤ã¾ã‚Šã€ã‚½ãƒ¼ã‚¹ã‚’å–å¾—ã—ãŸã„リãƒ"
+"ジトリをã€ãã‚Œãžã‚Œè¿½åŠ ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã€‚ã“ã†ã—ãªã„ã¨ã€èª¤ã£ãŸ (å¤"
+"ã™ãŽãƒ»æ–°ã—ã™ãŽãª) ソースãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’å–å¾—ã—ãŸã‚Šã€ä½•ã‚‚å–å¾—ã§ããªããªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If the <option>--compile</option> option is specified then the package will "
+"be compiled to a binary .deb using <command>dpkg-buildpackage</command> for "
+"the architecture as defined by the <command>--host-architecture</command> "
+"option. If <option>--download-only</option> is specified then the source "
+"package will not be unpacked."
+msgstr ""
+"<option>--compile</option> オプションを指定ã™ã‚‹ã¨ã€<command>dpkg-"
+"buildpackage</command> を用ã„ã¦ã€<command>--host-architecture</command> オプ"
+"ションã§å®šç¾©ã—ãŸã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã®ãƒã‚¤ãƒŠãƒª .deb パッケージをコンパイルã—ã¾ã™ã€‚"
+"<option>--download-only</option> を指定ã™ã‚‹ã¨ã€ã‚½ãƒ¼ã‚¹ãƒ‘ッケージを展開ã—ã¾ã›"
+"ん。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"A specific source version can be retrieved by postfixing the source name "
+"with an equals and then the version to fetch, similar to the mechanism used "
+"for the package files. This enables exact matching of the source package "
+"name and version, implicitly enabling the <literal>APT::Get::Only-Source</"
+"literal> option."
+msgstr ""
+"パッケージã¨åŒæ§˜ã«ã€ã‚½ãƒ¼ã‚¹åã®å¾Œã‚ã«ã‚¤ã‚³ãƒ¼ãƒ«ã¨å–å¾—ã—ãŸã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ç½®ãã¨ã€"
+"指定ã—ãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ã‚½ãƒ¼ã‚¹ã‚’å–å¾—ã§ãã¾ã™ã€‚<literal>APT::Get::Only-Source</"
+"literal> オプションãŒæš—é»™ã®ã†ã¡ã«æœ‰åŠ¹ã«ãªã£ã¦ã„ã‚‹ãŸã‚ã€ã‚½ãƒ¼ã‚¹ãƒ‘ッケージåã¨"
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«åŽ³å¯†ã«ä¸€è‡´ã•ã›ã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Note that source packages are not installed and tracked in the "
+"<command>dpkg</command> database like binary packages; they are simply "
+"downloaded to the current directory, like source tarballs."
+msgstr ""
+"ソースパッケージã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œãšã€ãƒã‚¤ãƒŠãƒªãƒ‘ッケージã®ã‚ˆã†ã« "
+"<command>dpkg</command> データベースã§ç®¡ç†ã•ã‚Œãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。"
+"ソース㮠tarball ã®ã‚ˆã†ã«ã€å˜ã«ã‚«ãƒ¬ãƒ³ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>build-dep</literal> causes apt-get to install/remove packages in an "
+"attempt to satisfy the build dependencies for a source package. By default "
+"the dependencies are satisfied to build the package natively. If desired a "
+"host-architecture can be specified with the <option>--host-architecture</"
+"option> option instead."
+msgstr ""
+"<literal>build-dep</literal> ã¯ã€ã‚½ãƒ¼ã‚¹ãƒ‘ッケージã®æ§‹ç¯‰ä¾å­˜é–¢ä¿‚を満ãŸã™ã‚ˆã†"
+"ã«ã€ãƒ‘ッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãƒ»å‰Šé™¤ã‚’è¡Œã„ã¾ã™ã€‚デフォルトã§ã¯ã€ãƒ‘ッケージをãƒ"
+"イティブã«æ§‹ç¯‰ã™ã‚‹ä¾å­˜é–¢ä¿‚を満ãŸã—ã¾ã™ã€‚ãŠæœ›ã¿ãªã‚‰ã€<option>--host-"
+"architecture</option> オプションã«ã‚ˆã‚Šã€åˆ¥ã®ãƒ›ã‚¹ãƒˆã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã‚’指定ã§ãã¾"
+"ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>check</literal> is a diagnostic tool; it updates the package cache "
+"and checks for broken dependencies."
+msgstr ""
+"<literal>check</literal> ã¯ã€ãƒ‘ッケージキャッシュã®æ›´æ–°ã‚„壊れãŸä¾å­˜é–¢ä¿‚ã‚’"
+"ãƒã‚§ãƒƒã‚¯ã™ã‚‹è¨ºæ–­ãƒ„ールã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>download</literal> will download the given binary package into the "
+"current directory."
+msgstr ""
+"<literal>download</literal> ã¯ã€ä¸ŽãˆãŸãƒã‚¤ãƒŠãƒªãƒ‘ッケージをã€ã‚«ãƒ¬ãƒ³ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯"
+"トリã«ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>clean</literal> clears out the local repository of retrieved "
+"package files. It removes everything but the lock file from "
+"<filename>&cachedir;/archives/</filename> and <filename>&cachedir;/archives/"
+"partial/</filename>."
+msgstr ""
+"<literal>clean</literal> ã¯ã€å–å¾—ã—ãŸãƒ‘ッケージã®ãƒ­ãƒ¼ã‚«ãƒ«ãƒªãƒã‚¸ãƒˆãƒªã‚’掃除ã—ã¾"
+"ã™ã€‚<filename>&cachedir;/archives/</filename> 㨠<filename>&cachedir;/"
+"archives/partial/</filename> ã‹ã‚‰ãƒ­ãƒƒã‚¯ãƒ•ã‚¡ã‚¤ãƒ«ä»¥å¤–ã™ã¹ã¦å‰Šé™¤ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "(and the"
+msgstr "(ãŠã‚ˆã³"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias since 1.1)"
+msgstr "1.1 以é™ã®åˆ¥å)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Like <literal>clean</literal>, <literal>autoclean</literal> clears out the "
+"local repository of retrieved package files. The difference is that it only "
+"removes package files that can no longer be downloaded, and are largely "
+"useless. This allows a cache to be maintained over a long period without it "
+"growing out of control. The configuration option <literal>APT::Clean-"
+"Installed</literal> will prevent installed packages from being erased if it "
+"is set to off."
+msgstr ""
+"<literal>clean</literal> ã®ã‚ˆã†ã«ã€<literal>autoclean</literal> ã¯å–å¾—ã—ãŸ"
+"パッケージã®ãƒ­ãƒ¼ã‚«ãƒ«ãƒªãƒã‚¸ãƒˆãƒªã‚’掃除ã—ã¾ã™ã€‚é•ã„ã¯ã€ã‚‚ã†ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã•ã‚Œã‚‹ã“"
+"ã¨ãŒãªã„パッケージファイルやã€ã»ã¨ã‚“ã©ä¸è¦ãªãƒ‘ッケージファイルã®ã¿ã‚’削除ã™ã‚‹"
+"ã“ã¨ã§ã™ã€‚ã“ã®ãŸã‚ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã¯ã€åˆ¶å¾¡ä¸èƒ½ã«ãªã‚‹ã»ã©æˆé•·ã™ã‚‹ã“ã¨ãªãã€é•·æœŸã«"
+"ã‚ãŸã£ã¦ç¶­æŒã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚設定オプション <literal>APT::Clean-"
+"Installed</literal> ã« off をセットã—ã¦ã„ã‚Œã°ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã®ãƒ‘ッケージ"
+"ファイルãŒå‰Šé™¤ã•ã‚Œã‚‹ã®ã‚’防ãã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed."
+msgstr ""
+"<literal>autoremove</literal> ã¯ã€ä»–ã®ãƒ‘ッケージã®ä¾å­˜é–¢ä¿‚を満ãŸã™ãŸã‚ã«è‡ªå‹•"
+"çš„ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã€ã‚‚ã†å¿…è¦ãªããªã£ãŸãƒ‘ッケージを削除ã™ã‚‹ã®ã«ä½¿ç”¨ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>changelog</literal> tries to download the changelog of a package "
+"and displays it through <command>sensible-pager</command>. By default it "
+"displays the changelog for the version that is installed. However, you can "
+"specify the same options as for the <option>install</option> command."
+msgstr ""
+"<literal>changelog</literal> ã¯ã€ãƒ‘ッケージ㮠changelog をダウンロードã—ã€"
+"<command>sensible-pager</command> ã§è¡¨ç¤ºã—ã¾ã™ã€‚デフォルトã§ã¯ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«"
+"ã•ã‚Œã¦ã„ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® changelog を表示ã—ã¾ã™ã€‚ã—ã‹ã—ã€<option>install</"
+"option> コマンドã¨åŒã˜ã‚ªãƒ—ションを指定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Displays by default a deb822 formatted listing of information about all data "
+"files (aka index targets) <command>apt-get update</command> would download. "
+"Supports a <option>--format</option> option to modify the output format as "
+"well as accepts lines of the default output to filter the records by. The "
+"command is mainly used as an interface for external tools working with APT "
+"to get information as well as filenames for downloaded files so they can use "
+"them as well instead of downloading them again on their own. Detailed "
+"documentation is omitted here and can instead be found in the file &apt-"
+"acquire-additional-files; shipped by the <package>apt-doc</package> package."
+msgstr ""
+"デフォルトã§ã¯ <command>apt-get update</command> ã§ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã™ã‚‹ã“ã¨ãŒã§ã"
+"ã‚‹ã™ã¹ã¦ã®ãƒ‡ãƒ¼ã‚¿ãƒ•ã‚¡ã‚¤ãƒ« (別åインデックスターゲット) ã«é–¢ã™ã‚‹æƒ…報㮠deb822 "
+"å½¢å¼ã®ãƒªã‚¹ãƒˆã‚’表示ã—ã¾ã™ã€‚出力形å¼ã‚’変更ã™ã‚‹ã€ã¾ãŸãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’フィルタã™ã‚‹ãƒ‡"
+"フォルト出力ã®è¡Œã‚’å—ã‘付ã‘ã‚‹ãŸã‚ã® <option>--format</option> オプションをサ"
+"ãƒãƒ¼ãƒˆã—ã¾ã™ã€‚コマンドã¯ä¸»ã«ã€ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã®æƒ…報やファイルåã‚’å–"
+"å¾—ã™ã‚‹ãŸã‚ã«ã€APT を扱ã†å¤–部ツール用ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã¨ã—ã¦ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚ã"
+"ã—ã¦ã€å¤–部ツールãŒè‡ªèº«ã§å†åº¦ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã™ã‚‹ä»£ã‚ã‚Šã«ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+"詳細ãªãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã¯ã“ã“ã§ã¯çœç•¥ã—ã¾ã™ãŒã€ä»£ã‚ã‚Šã« <package>apt-doc</"
+"package> パッケージã«åŽéŒ²ã•ã‚Œã¦ã„ã‚‹ <literal><filename>doc/acquire-"
+"additional-files.txt</filename></literal> ã§è¦‹ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml apt-cache.8.xml apt-config.8.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "options"
+msgstr "オプション"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not consider recommended packages as a dependency for installing. "
+"Configuration Item: <literal>APT::Install-Recommends</literal>."
+msgstr ""
+"「推奨ã€ãƒ‘ッケージをインストールã™ã‚‹ä¾å­˜é–¢ä¿‚ã¨è¦‹ãªã—ã¾ã›ã‚“。設定項目: "
+"<literal>APT::Install-Recommends</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Consider suggested packages as a dependency for installing. Configuration "
+"Item: <literal>APT::Install-Suggests</literal>."
+msgstr ""
+"「æ案ã€ãƒ‘ッケージをインストールã™ã‚‹ä¾å­˜é–¢ä¿‚ã¨è¦‹ãªã—ã¾ã™ã€‚設定項目: "
+"<literal>APT::Install-Suggests</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Download only; package files are only retrieved, not unpacked or installed. "
+"Configuration Item: <literal>APT::Get::Download-Only</literal>."
+msgstr ""
+"ダウンロードã®ã¿ - パッケージファイルã®å–å¾—ã®ã¿ã‚’è¡Œã„ã€å±•é–‹ãƒ»ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’è¡Œ"
+"ã„ã¾ã›ã‚“。設定項目: <literal>APT::Get::Download-Only</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Fix; attempt to correct a system with broken dependencies in place. This "
+"option, when used with install/remove, can omit any packages to permit APT "
+"to deduce a likely solution. If packages are specified, these have to "
+"completely correct the problem. The option is sometimes necessary when "
+"running APT for the first time; APT itself does not allow broken package "
+"dependencies to exist on a system. It is possible that a system's dependency "
+"structure can be so corrupt as to require manual intervention (which usually "
+"means using <command>dpkg --remove</command> to eliminate some of the "
+"offending packages). Use of this option together with <option>-m</option> "
+"may produce an error in some situations. Configuration Item: <literal>APT::"
+"Get::Fix-Broken</literal>."
+msgstr ""
+"修復 - ä¾å­˜é–¢ä¿‚ãŒå£Šã‚ŒãŸã‚·ã‚¹ãƒ†ãƒ ã®ä¿®æ­£ã‚’試ã¿ã¾ã™ã€‚ã“ã®ã‚ªãƒ—ションを install ã‚„ "
+"remove ã¨ä¸€ç·’ã«ä½¿ã†ã¨ãã¯ã€APT ãŒè§£æ±ºæ³•ã‚’推測ã™ã‚‹ã®ã§ã€ãƒ‘ッケージを指定ã—ãªã"
+"ã¦ã‚‚ã‹ã¾ã„ã¾ã›ã‚“。ã©ã®ãƒ‘ッケージを指定ã—ã¦ã‚‚ã€å®Œå…¨ã«å•é¡Œã‚’解決ã—ã¾ã™ã€‚APT 自"
+"体ã¯ã€ã‚·ã‚¹ãƒ†ãƒ ã«å­˜åœ¨ã™ã‚‹ç ´æã—ãŸãƒ‘ッケージä¾å­˜é–¢ä¿‚を許ã™ã“ã¨ãŒã§ããªã„ã®ã§ã€"
+"åˆã‚㦠APT を実行ã™ã‚‹å ´åˆã€ã“ã®ã‚ªãƒ—ションãŒå¿…è¦ã«ãªã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚システム"
+"ã®ä¾å­˜é–¢ä¿‚構造ã«ã‹ãªã‚Šå•é¡ŒãŒã‚ã‚‹å ´åˆã¯ã€æ‰‹å‹•ã§ä¿®æ­£ã™ã‚‹ã‚ˆã†è¦æ±‚ã™ã‚‹ã“ã¨ã‚‚ã‚ã‚Š"
+"ã¾ã™ã€‚(通常ã¯ã€å•é¡Œã®ã‚るパッケージをå–り除ãã®ã« <command>dpkg --remove</"
+"command> を使用ã—ã¾ã™) ã“ã®ã‚ªãƒ—ションを <option>-m</option> オプションã¨åŒæ™‚"
+"ã«ä½¿ç”¨ã™ã‚‹ã¨ã€ã‚¨ãƒ©ãƒ¼ã«ãªã‚‹çŠ¶æ³ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。設定項目: <literal>APT::"
+"Get::Fix-Broken</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore missing packages; if packages cannot be retrieved or fail the "
+"integrity check after retrieval (corrupted package files), hold back those "
+"packages and handle the result. Use of this option together with <option>-f</"
+"option> may produce an error in some situations. If a package is selected "
+"for installation (particularly if it is mentioned on the command line) and "
+"it could not be downloaded then it will be silently held back. "
+"Configuration Item: <literal>APT::Get::Fix-Missing</literal>."
+msgstr ""
+"欠è½ãƒ‘ッケージã®ç„¡è¦– - パッケージãŒå–å¾—ã§ããªã‹ã£ãŸã‚Šã€(パッケージã®ç ´æã§) "
+"å–å¾—ã—ãŸå¾Œã®æ•´åˆæ€§ãƒã‚§ãƒƒã‚¯ã«å¤±æ•—ã—ãŸå ´åˆã€ãã®ãƒ‘ッケージã®å‡¦ç†ã‚’ä¿ç•™ã—最後ã¾"
+"ã§å‡¦ç†ã‚’続ã‘ã¾ã™ã€‚ã“ã®ã‚ªãƒ—ションを <option>-f</option> オプションã¨åŒæ™‚ã«ä½¿ç”¨"
+"ã™ã‚‹ã¨ã€ã‚¨ãƒ©ãƒ¼ã«ãªã‚‹çŠ¶æ³ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。パッケージをインストールã™ã‚‹ã‚ˆ"
+"ã†é¸æŠžã—ã¦ã„ã‚‹ (特ã«ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã§ã®æ“作ã™ã‚‹) å ´åˆã‚„ã€ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã§ããª"
+"ã‹ã£ãŸå ´åˆã«ã€ãªã«ã‚‚表示ã›ãšä¿ç•™ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚設定項目: <literal>APT::"
+"Get::Fix-Missing</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Disables downloading of packages. This is best used with <option>--ignore-"
+"missing</option> to force APT to use only the .debs it has already "
+"downloaded. Configuration Item: <literal>APT::Get::Download</literal>."
+msgstr ""
+"パッケージã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’無効ã«ã—ã¾ã™ã€‚ã“ã‚Œã¯ã™ã§ã«ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—㟠.deb ã«"
+"対ã—ã¦ã®ã¿ APT ã‚’è¡Œã†å ´åˆã«ã€<option>--ignore-missing</option> ã¨ä½µã›ã¦ä½¿ã†ã®"
+"ãŒã‚ˆã„ã§ã—ょã†ã€‚設定項目: <literal>APT::Get::Download</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Note that quiet level 2 implies <option>-y</option>; you should never "
+"use -qq without a no-action modifier such as -d, --print-uris or -s as APT "
+"may decide to do something you did not expect. Configuration Item: "
+"<literal>quiet</literal>."
+msgstr ""
+"é™ç²› - 進æ—表示をçœç•¥ã—ã€ãƒ­ã‚°ã‚’ã¨ã‚‹ã®ã«ä¾¿åˆ©ãªå‡ºåŠ›ã‚’è¡Œã„ã¾ã™ã€‚最大 2 ã¤ã¾ã§ q "
+"ã‚’é‡ã­ã‚‹ã“ã¨ã§ã‚ˆã‚Šé™ç²›ã«ã§ãã¾ã™ã€‚ã¾ãŸã€<option>-q=#</option> ã®ã‚ˆã†ã«é™ç²›ãƒ¬"
+"ベルを指定ã—ã¦ã€è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’上書ãã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚é™ç²›ãƒ¬ãƒ™ãƒ« 2 㯠"
+"<option>-y</option> ã‚’å«ã‚“ã§ã„ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。APT ãŒæ„図ã—ãªã„決定"
+"ã‚’è¡Œã†ã‹ã‚‚ã—ã‚Œãªã„ã®ã§ -d, --print-uris, -s ã®ã‚ˆã†ãªæ“作を行ã‚ãªã„オプション"
+"ã‚’ã¤ã‘ãšã« -qq を使用ã™ã‚‹ã¹ãã§ã¯ã‚ã‚Šã¾ã›ã‚“。設定項目: <literal>quiet</"
+"literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"No action; perform a simulation of events that would occur based on the "
+"current system state but do not actually change the system. Locking will be "
+"disabled (<option>Debug::NoLocking</option>) so the system state could "
+"change while <command>apt-get</command> is running. Simulations can also be "
+"executed by non-root users which might not have read access to all apt "
+"configuration distorting the simulation. A notice expressing this warning "
+"is also shown by default for non-root users (<option>APT::Get::Show-User-"
+"Simulation-Note</option>). Configuration Item: <literal>APT::Get::Simulate</"
+"literal>."
+msgstr ""
+"何もã—ãªã„ - ç¾åœ¨ã®ã‚·ã‚¹ãƒ†ãƒ çŠ¶æ…‹ã«åŸºã¥ã„ã¦èµ·ã“るイベントã®ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’è¡Œ"
+"ã„ã€å®Ÿéš›ã«ã¯ã‚·ã‚¹ãƒ†ãƒ ã‚’変更ã—ã¾ã›ã‚“。ロックã¯ç„¡åŠ¹ã«ãªã‚‹ (<option>Debug::"
+"NoLocking</option>) ã®ã§ã€<command>apt-get</command> 実行中ã«ã‚·ã‚¹ãƒ†ãƒ ã®çŠ¶æ…‹ãŒ"
+"変化ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚シミュレーション㯠root 以外ã®ãƒ¦ãƒ¼ã‚¶ãŒå®Ÿè¡Œã§ãã¾ã™"
+"ãŒã€ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’æ­ªã‚ã‚‹ã™ã¹ã¦ã® apt 設定ã¸ã®èª­ã¿å–りアクセス権をæŒã£ã¦ã„"
+"ãªã„å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ã“ã®è­¦å‘Šã‚’表ã™é€šçŸ¥ã¯ã€root 以外ã®ãƒ¦ãƒ¼ã‚¶ã§ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§"
+"表示ã•ã‚Œã¾ã™ (<option>APT::Get::Show-User-Simulation-Note</option>)。設定項"
+"ç›®: <literal>APT::Get::Simulate</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Simulated runs print out a series of lines, each representing a "
+"<command>dpkg</command> operation: configure (<literal>Conf</literal>), "
+"remove (<literal>Remv</literal>) or unpack (<literal>Inst</literal>). "
+"Square brackets indicate broken packages, and empty square brackets indicate "
+"breaks that are of no consequence (rare)."
+msgstr ""
+"シミュレートã®çµæžœã€<command>dpkg</command> ã®å‹•ä½œã‚’表ã™ä¸€é€£ã®è¡Œã®ãã‚Œãžã‚Œ"
+"ã«ã€è¨­å®š (<literal>Conf</literal>)ã€å‰Šé™¤ (<literal>Remv</literal>)ã€å±•é–‹ "
+"(<literal>Inst</literal>) を表示ã—ã¾ã™ã€‚角カッコã¯å£Šã‚ŒãŸãƒ‘ッケージを表ã—ã€(ã¾"
+"ã‚Œã«) 空ã®è§’カッコã¯å¤§ã—ãŸå•é¡Œã§ã¯ãªã„ã“ã¨ã‚’表ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Automatic yes to prompts; assume \"yes\" as answer to all prompts and run "
+"non-interactively. If an undesirable situation, such as changing a held "
+"package, trying to install a unauthenticated package or removing an "
+"essential package occurs then <literal>apt-get</literal> will abort. "
+"Configuration Item: <literal>APT::Get::Assume-Yes</literal>."
+msgstr ""
+"プロンプトã¸ã®è‡ªå‹•æ‰¿è«¾ - ã™ã¹ã¦ã®ãƒ—ロンプトã«è‡ªå‹•çš„ã« \"yes\" ã¨ç­”ãˆã€éžå¯¾è©±"
+"çš„ã«å®Ÿè¡Œã—ã¾ã™ã€‚ä¿ç•™ã—ãŸãƒ‘ッケージã®çŠ¶æ…‹ã‚’変更ã—ãŸã‚Šã€å¿…須パッケージを削除ã™"
+"るよã†ãªä¸é©åˆ‡ãªçŠ¶æ³ã®å ´åˆã€<literal>apt-get</literal> ã¯å‡¦ç†ã‚’中断ã—ã¾ã™ã€‚設"
+"定項目: <literal>APT::Get::Assume-Yes</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Automatic \"no\" to all prompts. Configuration Item: <literal>APT::Get::"
+"Assume-No</literal>."
+msgstr ""
+"å…¨ã¦ã®è³ªå•ã«ã€è‡ªå‹•çš„ã« \"no\" ã¨ç­”ãˆã¾ã™ã€‚設定項目: <literal>APT::Get::"
+"Assume-No</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not show a list of all packages that are to be upgraded. Configuration "
+"Item: <literal>APT::Get::Show-Upgraded</literal>."
+msgstr ""
+"æ›´æ–°ã•ã‚Œã‚‹å…¨ãƒ‘ッケージã®è¡¨ç¤ºã‚’è¡Œã„ã¾ã›ã‚“。設定項目: <literal>APT::Get::Show-"
+"Upgraded</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Show full versions for upgraded and installed packages. Configuration Item: "
+"<literal>APT::Get::Show-Versions</literal>."
+msgstr ""
+"更新・インストールã™ã‚‹ãƒ‘ッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ã™ã¹ã¦è¡¨ç¤ºã—ã¾ã™ã€‚設定項目: "
+"<literal>APT::Get::Show-Versions</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the architecture packages are built for by <command>apt-"
+"get source --compile</command> and how cross-builddependencies are "
+"satisfied. By default is it not set which means that the host architecture "
+"is the same as the build architecture (which is defined by <literal>APT::"
+"Architecture</literal>). Configuration Item: <literal>APT::Get::Host-"
+"Architecture</literal>."
+msgstr ""
+"ã“ã®ã‚ªãƒ—ションã¯ã€<command>apt-get source --compile</command> ã§æ§‹ç¯‰ã™ã‚‹ãƒ‘ッ"
+"ケージã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã‚„ã€ã©ã®ã‚ˆã†ã«ã‚¯ãƒ­ã‚¹ä¾å­˜é–¢ä¿‚を解決ã™ã‚‹ã‹ã‚’制御ã—ã¾ã™ã€‚"
+"デフォルトã§ã¯æœªå®šç¾©ã§ã€ã“ã‚Œã¯ãƒ›ã‚¹ãƒˆã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã¯ã€(<literal>APT::"
+"Architecture</literal> ã§å®šç¾©ã—ãŸ) ビルドアーキテクãƒãƒ£ã¨åŒã˜ã¨ã„ã†æ„味ã«ãªã‚Š"
+"ã¾ã™ã€‚設定項目: <literal>APT::Get::Host-Architecture</literal>。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the activated build profiles for which a source package "
+"is built by <command>apt-get source --compile</command> and how build "
+"dependencies are satisfied. By default no build profile is active. More "
+"than one build profile can be activated at a time by concatenating them with "
+"a comma. Configuration Item: <literal>APT::Build-Profiles</literal>."
+msgstr ""
+"ã“ã®ã‚ªãƒ—ションã¯ã€<command>apt-get source --compile</command> ã§ãƒ‘ッケージを"
+"ビルドã™ã‚‹éš›ã«æœ‰åŠ¹åŒ–ã™ã‚‹ãƒ“ルドプロファイルやã€ã©ã®ã‚ˆã†ã«ã‚¯ãƒ­ã‚¹ä¾å­˜é–¢ä¿‚を解決"
+"ã™ã‚‹ã‹ã‚’制御ã—ã¾ã™ã€‚デフォルトã§ã¯æœ‰åŠ¹åŒ–ã™ã‚‹ãƒ“ルドプロファイルã¯ã‚ã‚Šã¾ã›ã‚“。"
+"コンマã§é€£çµã™ã‚‹ã“ã¨ã§è¤‡æ•°ã®ãƒ“ルドプロファイルを有効化ã§ãã¾ã™ã€‚設定項目: "
+"<literal>APT::Get::Host-Architecture</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Compile source packages after downloading them. Configuration Item: "
+"<literal>APT::Get::Compile</literal>."
+msgstr ""
+"ソースパッケージをダウンロード後ã€ã‚³ãƒ³ãƒ‘イルã—ã¾ã™ã€‚設定項目: <literal>APT::"
+"Get::Compile</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore package holds; this causes <command>apt-get</command> to ignore a "
+"hold placed on a package. This may be useful in conjunction with "
+"<literal>dist-upgrade</literal> to override a large number of undesired "
+"holds. Configuration Item: <literal>APT::Ignore-Hold</literal>."
+msgstr ""
+"ä¿ç•™ãƒ‘ッケージã®ç„¡è¦– - パッケージã®ä¿ç•™æŒ‡ç¤ºã‚’無視ã—㦠<command>apt-get</"
+"command> ã‚’è¡Œã„ã¾ã™ã€‚<literal>dist-upgrade</literal> ã¨å…±ã«ä½¿ç”¨ã—ã€ãƒ‘ッケージ"
+"を大é‡ã«ã€ä¿ç•™è§£é™¤ã™ã‚‹ã®ã«ä¾¿åˆ©ã§ã™ã€‚設定項目: <literal>APT::Ignore-Hold</"
+"literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Allow installing new packages when used in conjunction with "
+"<literal>upgrade</literal>. This is useful if the update of a installed "
+"package requires new dependencies to be installed. Instead of holding the "
+"package back <literal>upgrade</literal> will upgrade the package and install "
+"the new dependencies. Note that <literal>upgrade</literal> with this option "
+"will never remove packages, only allow adding new ones. Configuration Item: "
+"<literal>APT::Get::Upgrade-Allow-New</literal>."
+msgstr ""
+"<literal>upgrade</literal> ã¨ä½µã›ã¦ä½¿ã£ãŸå ´åˆã«æ–°ã—ã„パッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«"
+"を許å¯ã—ã¾ã™ã€‚ã“ã‚Œã¯æ–°ã—ã„ä¾å­˜ã‚’インストールã™ã‚‹ãŸã‚ã«æ—¢ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦"
+"ã„るパッケージを更新ã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆã«æœ‰ç”¨ã§ã™ã€‚パッケージをä¿ç•™ã™ã‚‹ä»£ã‚ã‚Š"
+"ã« <literal>upgrade</literal> ãŒãƒ‘ッケージをアップグレードã—ã¦æ–°ã—ã„ä¾å­˜ã‚’イ"
+"ンストールã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ—ションã¨ä½µã›ã¦ä½¿ã£ãŸå ´åˆã€<literal>upgrade</"
+"literal> ãŒãƒ‘ッケージを削除ã™ã‚‹ã“ã¨ã¯ãªãã€æ–°è¦è¿½åŠ ã‚’許å¯ã™ã‚‹ã ã‘ã§ã‚ã‚‹ã“ã¨ã«"
+"注æ„ã—ã¦ãã ã•ã„。設定項目: <literal>APT::Get::Upgrade-Allow-New</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not upgrade packages; when used in conjunction with <literal>install</"
+"literal>, <literal>no-upgrade</literal> will prevent packages on the command "
+"line from being upgraded if they are already installed. Configuration Item: "
+"<literal>APT::Get::Upgrade</literal>."
+msgstr ""
+"パッケージ更新ãªã— - <literal>install</literal> ã¨åŒæ™‚ã«ä½¿ç”¨ã™ã‚‹ã¨ã€"
+"<literal>no-upgrade</literal> ã¯ã€ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã§æŒ‡å®šã—ãŸãƒ‘ッケージãŒã€ã™ã§"
+"ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ã‚ã‚‹å ´åˆã«æ›´æ–°ã‚’è¡Œã„ã¾ã›ã‚“。設定項目: <literal>APT::Get::"
+"Upgrade</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not install new packages; when used in conjunction with <literal>install</"
+"literal>, <literal>only-upgrade</literal> will install upgrades for already "
+"installed packages only and ignore requests to install new packages. "
+"Configuration Item: <literal>APT::Get::Only-Upgrade</literal>."
+msgstr ""
+"æ–°è¦ãƒ‘ッケージインストールãªã— - <literal>install</literal> ã¨åŒæ™‚ã«ä½¿ç”¨ã™ã‚‹"
+"ã¨ã€<literal>only-upgrade</literal> ã¯ã€ã™ã§ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„るパッケー"
+"ジã®ã¿ã‚’アップグレードã—ã€æ–°ã—ã„パッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«è¦æ±‚を無視ã—ã¾ã™ã€‚設"
+"定項目: <literal>APT::Get::Only-Upgrade</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This is a dangerous option that will cause apt to continue without prompting "
+"if it is doing downgrades. It should not be used except in very special "
+"situations. Using it can potentially destroy your system! Configuration "
+"Item: <literal>APT::Get::allow-downgrades</literal>. Introduced in APT 1.1."
+msgstr ""
+"ダウングレードを行ã†å ´åˆã§ã‚‚ã€ç¢ºèªãªã—ã§å®Ÿè¡Œã—ã¦ã—ã¾ã†å±é™ºãªã‚ªãƒ—ションã§ã™ã€‚"
+"よã»ã©ã®çŠ¶æ³ã§ãªã‘ã‚Œã°ã€ä½¿ã†ã¹ãã§ã¯ã‚ã‚Šã¾ã›ã‚“。ã“ã®ã‚ªãƒ—ションを使ã†ã¨ã€ã‚·ã‚¹"
+"テムを破壊ã—ã‹ã­ã¾ã›ã‚“! 設定項目: <literal>APT::Get::allow-downgrades</"
+"literal>。APT 1.1 ã§å°Žå…¥ã•ã‚Œã¾ã—ãŸã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is removing essentials. It should not be used except "
+"in very special situations. Using it can potentially destroy your system! "
+"Configuration Item: <literal>APT::Get::allow-remove-essential</literal>. "
+"Introduced in APT 1.1."
+msgstr ""
+"強制承諾 - å¿…è¦ä¸å¯æ¬ ãªã‚‚ã®ã‚’削除ã™ã‚‹å ´åˆã§ã‚‚ã€ç¢ºèªãªã—ã§å®Ÿè¡Œã—ã¦ã—ã¾ã†å±é™ºãª"
+"オプションã§ã™ã€‚よã»ã©ã®çŠ¶æ³ã§ãªã‘ã‚Œã°ã€ä½¿ã†ã¹ãã§ã¯ã‚ã‚Šã¾ã›ã‚“。"
+"<literal>force-yes</literal> を使ã†ã¨ã€ã‚·ã‚¹ãƒ†ãƒ ã‚’破壊ã—ã‹ã­ã¾ã›ã‚“! 設定項目: "
+"<literal>APT::Get::allow-remove-essential</literal>。APT 1.1 ã§å°Žå…¥ã•ã‚Œã¾ã—"
+"ãŸã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is changing held packages. It should not be used "
+"except in very special situations. Using it can potentially destroy your "
+"system! Configuration Item: <literal>APT::Get::allow-change-held-packages</"
+"literal>. Introduced in APT 1.1."
+msgstr ""
+"強制承諾 - ä¿æŒã•ã‚ŒãŸãƒ‘ッケージを変更ã™ã‚‹å ´åˆã§ã‚‚ã€ç¢ºèªãªã—ã§å®Ÿè¡Œã—ã¦ã—ã¾ã†å±"
+"険ãªã‚ªãƒ—ションã§ã™ã€‚よã»ã©ã®çŠ¶æ³ã§ãªã‘ã‚Œã°ã€ä½¿ã†ã¹ãã§ã¯ã‚ã‚Šã¾ã›ã‚“。ã“ã®ã‚ªãƒ—"
+"ションを使ã†ã¨ã€ã‚·ã‚¹ãƒ†ãƒ ã‚’破壊ã—ã‹ã­ã¾ã›ã‚“! 設定項目: <literal>APT::Get::"
+"allow-change-held-packages</literal>。APT 1.1 ã§å°Žå…¥ã•ã‚Œã¾ã—ãŸã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is doing something potentially harmful. It should "
+"not be used except in very special situations. Using <literal>force-yes</"
+"literal> can potentially destroy your system! Configuration Item: "
+"<literal>APT::Get::force-yes</literal>. This is deprecated and replaced by "
+"<option>--allow-downgrades</option>, <option>--allow-remove-essential</"
+"option>, <option>--allow-change-held-packages</option> in 1.1."
+msgstr ""
+"強制承諾 - 何ã‹æ傷を与ãˆã‹ã­ãªã„動作をã—よã†ã¨ã—ãŸå ´åˆã§ã‚‚ã€ç¢ºèªãªã—ã§å®Ÿè¡Œã—"
+"ã¦ã—ã¾ã†å±é™ºãªã‚ªãƒ—ションã§ã™ã€‚よã»ã©ã®çŠ¶æ³ã§ãªã‘ã‚Œã°ã€ä½¿ã†ã¹ãã§ã¯ã‚ã‚Šã¾ã›"
+"ん。<literal>force-yes</literal> を使ã†ã¨ã€ã‚·ã‚¹ãƒ†ãƒ ã‚’破壊ã—ã‹ã­ã¾ã›ã‚“! 設定項"
+"ç›®: <literal>APT::Get::force-yes</literal>。ã“ã‚Œã¯éžæŽ¨å¥¨ã§ã€1.1 ã§<option>--"
+"allow-downgrades</option>, <option>--allow-remove-essential</option>, "
+"<option>--allow-change-held-packages</option> ã«ç½®ãæ›ãˆã‚‰ã‚Œã¾ã—ãŸã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Instead of fetching the files to install their URIs are printed. Each URI "
+"will have the path, the destination file name, the size and the expected MD5 "
+"hash. Note that the file name to write to will not always match the file "
+"name on the remote site! This also works with the <literal>source</literal> "
+"and <literal>update</literal> commands. When used with the <literal>update</"
+"literal> command the MD5 and size are not included, and it is up to the user "
+"to decompress any compressed files. Configuration Item: <literal>APT::Get::"
+"Print-URIs</literal>."
+msgstr ""
+"インストールã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å–å¾—ã™ã‚‹ä»£ã‚ã‚Šã«ã€ãã® URI を表示ã—ã¾ã™ã€‚URI ã«ã¯ã€"
+"パスã€å¯¾è±¡ãƒ•ã‚¡ã‚¤ãƒ«åã€ãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºã€äºˆæ¸¬ã•ã‚Œã‚‹ MD5 ãƒãƒƒã‚·ãƒ¥ãŒå«ã¾ã‚Œã¦ã„ã¾"
+"ã™ã€‚出力ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«åãŒã€å¸¸ã«ãƒªãƒ¢ãƒ¼ãƒˆã‚µã‚¤ãƒˆã®ãƒ•ã‚¡ã‚¤ãƒ«åã¨ä¸€è‡´ã™ã‚‹ã‚ã‘ã§ã¯ãª"
+"ã„ã€ã¨ã„ã†ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„! ã“れ㯠<literal>source</literal> コマンドã€"
+"<literal>update</literal> コマンドã§ã‚‚動作ã—ã¾ã™ã€‚<literal>update</literal> "
+"ã§ä½¿ç”¨ã—ãŸã¨ãã«ã¯ã€MD5 やファイルサイズをå«ã¿ã¾ã›ã‚“。ã“ã®ã¨ãã€åœ§ç¸®ãƒ•ã‚¡ã‚¤ãƒ«"
+"ã®å±•é–‹ã¯ãƒ¦ãƒ¼ã‚¶ã®è²¬ä»»ã«ãŠã„ã¦è¡Œã£ã¦ãã ã•ã„。設定項目: <literal>APT::Get::"
+"Print-URIs</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Use purge instead of remove for anything that would be removed. An asterisk "
+"(\"*\") will be displayed next to packages which are scheduled to be purged. "
+"<option>remove --purge</option> is equivalent to the <option>purge</option> "
+"command. Configuration Item: <literal>APT::Get::Purge</literal>."
+msgstr ""
+"削除ã™ã‚‹éš›ã€ã€Œå‰Šé™¤ã€ã§ã¯ãªã「完全削除ã€ã‚’è¡Œã„ã¾ã™ã€‚「完全削除ã€ã‚’è¡Œã†ã¨æŒ‡ç¤º"
+"ã—ãŸãƒ‘ッケージåã®å¾Œã«ã¯ã€ã‚¢ã‚¹ã‚¿ãƒªã‚¹ã‚¯ (\"*\") ãŒä»˜ãã¾ã™ã€‚<option>remove --"
+"purge</option> 㯠<option>purge</option> コマンドã¨ç­‰ä¾¡ã§ã™ã€‚ 設定項目: "
+"<literal>APT::Get::Purge</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Re-install packages that are already installed and at the newest version. "
+"Configuration Item: <literal>APT::Get::ReInstall</literal>."
+msgstr ""
+"ã™ã§ã«æœ€æ–°ç‰ˆãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¦ã‚‚ã€ãƒ‘ッケージをå†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¾ã™ã€‚設"
+"定項目: <literal>APT::Get::ReInstall</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option is on by default; use <literal>--no-list-cleanup</literal> to "
+"turn it off. When it is on, <command>apt-get</command> will automatically "
+"manage the contents of <filename>&statedir;/lists</filename> to ensure that "
+"obsolete files are erased. The only reason to turn it off is if you "
+"frequently change your sources list. Configuration Item: <literal>APT::Get::"
+"List-Cleanup</literal>."
+msgstr ""
+"ã“ã®æ©Ÿèƒ½ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ ON ã«ãªã£ã¦ã„ã¾ã™ã€‚OFF ã«ã™ã‚‹ã«ã¯ <literal>--no-list-"
+"cleanup</literal> ã¨ã—ã¦ãã ã•ã„。ON ã®å ´åˆã€<command>apt-get</command> ã¯å¤"
+"ããªã£ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’確実ã«æ¶ˆåŽ»ã™ã‚‹ãŸã‚ã€è‡ªå‹•çš„ã« <filename>&statedir;/lists</"
+"filename> ã®ä¸­èº«ã‚’管ç†ã—ã¾ã™ã€‚ã“れを OFF ã«ã™ã‚‹ã®ã¯ã€å–得元リストを頻ç¹ã«å¤‰æ›´"
+"ã™ã‚‹æ™‚ãらã„ã§ã—ょã†ã€‚設定項目: <literal>APT::Get::List-Cleanup</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the default input to the policy engine; it creates a "
+"default pin at priority 990 using the specified release string. This "
+"overrides the general settings in <filename>/etc/apt/preferences</"
+"filename>. Specifically pinned packages are not affected by the value of "
+"this option. In short, this option lets you have simple control over which "
+"distribution packages will be retrieved from. Some common examples might be "
+"<option>-t '2.1*'</option>, <option>-t unstable</option> or <option>-t sid</"
+"option>. Configuration Item: <literal>APT::Default-Release</literal>; see "
+"also the &apt-preferences; manual page."
+msgstr ""
+"ã“ã®ã‚ªãƒ—ションã¯ã€ãƒãƒªã‚·ãƒ¼ã‚¨ãƒ³ã‚¸ãƒ³ã¸ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå…¥åŠ›ã‚’制御ã—ã¾ã™ã€‚ã¾ãŸã€æŒ‡å®š"
+"ã•ã‚ŒãŸãƒªãƒªãƒ¼ã‚¹æ–‡å­—列を使用ã—ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆ pin を優先度 990 ã§ä½œæˆã—ã¾ã™ã€‚ã“ã‚Œ"
+"ã¯ã€<filename>/etc/apt/preferences</filename> ã«ã‚る一般設定を上書ãã—ã¾ã™ã€‚"
+"pin ã§ç•™ã‚ã‚‹ã®ã‚’明示ã•ã‚ŒãŸãƒ‘ッケージã«ã¯ã€ã“ã®ã‚ªãƒ—ションã®å€¤ã¯å½±éŸ¿ã‚’与ãˆã¾ã›"
+"ん。ã¤ã¾ã‚Šã“ã®ã‚ªãƒ—ションã§ã€ã©ã®é…布パッケージをå–å¾—ã™ã‚‹ã‹ã‚’ç°¡å˜ã«ç®¡ç†ã—ã¾"
+"ã™ã€‚一般的ãªä¾‹ã¨ã—ã¦ã¯ã€<option>-t '2.1*'</option>, <option>-t unstable</"
+"option>, <option>-t sid</option> ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚設定項目: <literal>APT::"
+"Default-Release</literal>。&apt-preferences; ã®ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãƒšãƒ¼ã‚¸ã‚‚å‚ç…§ã—ã¦ãã "
+"ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only perform operations that are 'trivial'. Logically this can be considered "
+"related to <option>--assume-yes</option>; where <option>--assume-yes</"
+"option> will answer yes to any prompt, <option>--trivial-only</option> will "
+"answer no. Configuration Item: <literal>APT::Get::Trivial-Only</literal>."
+msgstr ""
+"「é‡è¦ã§ãªã„ã€æ“作ã®ã¿ã‚’è¡Œã„ã¾ã™ã€‚ã“ã‚Œã¯è«–ç†çš„ã« <option>--assume-yes</"
+"option> ã®ä»²é–“ã¨è¦‹ãªã›ã¾ã™ã€‚<option>--assume-yes</option> ã¯è³ªå•ã«ã™ã¹ã¦ yes "
+"ã¨ç­”ãˆã¾ã™ãŒã€<option>--trivial-only</option> ã¯ã™ã¹ã¦ no ã¨ç­”ãˆã¾ã™ã€‚設定項"
+"ç›®: <literal>APT::Get::Trivial-Only</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If any packages are to be removed apt-get immediately aborts without "
+"prompting. Configuration Item: <literal>APT::Get::Remove</literal>."
+msgstr ""
+"パッケージãŒå‰Šé™¤ã•ã‚Œã‚‹çŠ¶æ³ã«ãªã£ãŸã¨ãã€ãƒ—ロンプトを表示ã›ãšä¸­æ–­ã—ã¾ã™ã€‚設定"
+"é …ç›®: <literal>APT::Get::Remove</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If the command is either <literal>install</literal> or <literal>remove</"
+"literal>, then this option acts like running the <literal>autoremove</"
+"literal> command, removing unused dependency packages. Configuration Item: "
+"<literal>APT::Get::AutomaticRemove</literal>."
+msgstr ""
+"コマンド㌠<literal>install</literal> ã‹ <literal>remove</literal> ã§ã‚ã‚‹å ´"
+"åˆã€ã“ã®ã‚ªãƒ—ションã¯ä½¿ç”¨ã—ã¦ã„ãªã„ä¾å­˜ã—ã¦ã„るパッケージを削除ã—ã€"
+"<literal>autoremove</literal> コマンドã®ã‚ˆã†ã«å‹•ä½œã—ã¾ã™ã€‚設定項目: "
+"<literal>APT::Get::AutomaticRemove</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only has meaning for the <literal>source</literal> and <literal>build-dep</"
+"literal> commands. Indicates that the given source names are not to be "
+"mapped through the binary table. This means that if this option is "
+"specified, these commands will only accept source package names as "
+"arguments, rather than accepting binary package names and looking up the "
+"corresponding source package. Configuration Item: <literal>APT::Get::Only-"
+"Source</literal>."
+msgstr ""
+"<literal>source</literal> コマンド㨠<literal>build-dep</literal> コマンドã§"
+"ã®ã¿æ„味ãŒã‚ã‚Šã¾ã™ã€‚指定ã•ã‚ŒãŸã‚½ãƒ¼ã‚¹åãŒãƒã‚¤ãƒŠãƒªãƒ†ãƒ¼ãƒ–ルã«ãƒžãƒƒãƒ—ã•ã‚Œãªã„よã†"
+"ã«ã—ã¾ã™ã€‚ã“ã‚Œã¯ã€ã“ã®ã‚ªãƒ—ションを指定ã™ã‚‹ã¨ã€ãƒã‚¤ãƒŠãƒªãƒ‘ッケージåã‚’å—ã‘付ã‘"
+"ã¦å¯¾å¿œã™ã‚‹ã‚½ãƒ¼ã‚¹ãƒ‘ッケージを探ã™ã®ã§ã¯ãªãã€å¼•æ•°ã«ã‚½ãƒ¼ã‚¹ãƒ‘ッケージåã—ã‹å—ã‘"
+"付ã‘ãªããªã‚‹ã€ã¨ã„ã†ã“ã¨ã§ã™ã€‚設定項目: <literal>APT::Get::Only-Source</"
+"literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Download only the diff, dsc, or tar file of a source archive. Configuration "
+"Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</"
+"literal>, and <literal>APT::Get::Tar-Only</literal>."
+msgstr ""
+"ソースアーカイブ㮠diff ファイルや dsc ファイルã€tar ファイルã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã®"
+"ã¿ã‚’è¡Œã„ã¾ã™ã€‚設定項目: <literal>APT::Get::Diff-Only</literal>, "
+"<literal>APT::Get::Dsc-Only</literal>, <literal>APT::Get::Tar-Only</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only process architecture-dependent build-dependencies. Configuration Item: "
+"<literal>APT::Get::Arch-Only</literal>."
+msgstr ""
+"構築ä¾å­˜é–¢ä¿‚ã®è§£æ±ºã‚’ã€ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã«ä¾å­˜ã—ãŸã‚‚ã®ã®ã¿è¡Œã„ã¾ã™ã€‚設定項目: "
+"<literal>APT::Get::Arch-Only</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only process architecture-independent build-dependencies. Configuration "
+"Item: <literal>APT::Get::Indep-Only</literal>."
+msgstr ""
+"構築ä¾å­˜é–¢ä¿‚ã®è§£æ±ºã‚’ã€ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã«ä¾å­˜ã—ãªã„ã‚‚ã®ã®ã¿è¡Œã„ã¾ã™ã€‚設定項目: "
+"<literal>APT::Get::Arch-Only</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore if packages can't be authenticated and don't prompt about it. This "
+"can be useful while working with local repositories, but is a huge security "
+"risk if data authenticity isn't ensured in another way by the user itself. "
+"The usage of the <option>Trusted</option> option for &sources-list; entries "
+"should usually be preferred over this global override. Configuration Item: "
+"<literal>APT::Get::AllowUnauthenticated</literal>."
+msgstr ""
+"パッケージãŒèªè¨¼ã§ããªã„å ´åˆã¯ç„¡è¦–ã—ã¦ãã ã•ã„。プロンプトã¯è¡¨ç¤ºã•ã‚Œã¾ã›ã‚“。"
+"ローカルリãƒã‚¸ãƒˆãƒªã§ã®ä½œæ¥­ä¸­ã«ã¯æœ‰ç”¨ã§ã™ãŒã€ãƒ¦ãƒ¼ã‚¶è‡ªèº«ãŒåˆ¥ã®æ–¹æ³•ã§ãƒ‡ãƒ¼ã‚¿ã®ä¿¡"
+"憑性を確ä¿ã—ã¦ã„ãªã„å ´åˆã¯ã€ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ä¸Šã®é‡å¤§ãªãƒªã‚¹ã‚¯ã«ãªã‚Šã¾ã™ã€‚&sources-"
+"list; エントリ用㮠<option>Trusted</option> オプションã®ä½¿ç”¨ã¯ã€é€šå¸¸ã‚°ãƒ­ãƒ¼ãƒ"
+"ルオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã‚ˆã‚Šã‚‚優先ã•ã‚Œã‚‹ã¯ãšã§ã™ã€‚設定項目: <literal>APT::Get::"
+"AllowUnauthenticated</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Forbid the update command to acquire unverifiable data from configured "
+"sources. APT will fail at the update command for repositories without valid "
+"cryptographically signatures. See also &apt-secure; for details on the "
+"concept and the implications. Configuration Item: <literal>Acquire::"
+"AllowInsecureRepositories</literal>."
+msgstr ""
+"設定ã•ã‚ŒãŸå–å¾—å…ƒã‹ã‚‰æ¤œè¨¼ã§ããªã„データをå–å¾—ã™ã‚‹ update コマンドをç¦æ­¢ã—ã¾"
+"ã™ã€‚APT ã¯ã€æœ‰åŠ¹ãªæš—å·ã«ã‚ˆã‚‹ç½²åã®ãªã„リãƒã‚¸ãƒˆãƒªç”¨ã® update コマンドã§å¤±æ•—ã—"
+"ã¾ã™ã€‚概念ã¨å½±éŸ¿ã®è©³ç´°ã«ã¤ã„ã¦ã¯ &apt-secure; ã‚‚å‚ç…§ã—ã¦ãã ã•ã„。設定項目: "
+"<literal>Acquire::AllowInsecureRepositories</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Show user friendly progress information in the terminal window when packages "
+"are installed, upgraded or removed. For a machine parsable version of this "
+"data see README.progress-reporting in the apt doc directory. Configuration "
+"Items: <literal>Dpkg::Progress</literal> and <literal>Dpkg::Progress-Fancy</"
+"literal>."
+msgstr ""
+"パッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã€ã‚¢ãƒƒãƒ—グレードã€å‰Šé™¤æ™‚ã«ãƒ¦ãƒ¼ã‚¶ã«ã¨ã£ã¦ã‚ã‹ã‚Šã‚„ã™ã„"
+"å½¢ã§é€²æ—情報をターミナルウィンドウ内ã«è¡¨ç¤ºã—ã¾ã™ã€‚ã“ã®ãƒ‡ãƒ¼ã‚¿ã®æ©Ÿæ¢°çš„ã«è§£æžã§"
+"ãã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã¤ã„ã¦ã¯ apt ã® doc ディレクトリã«ã‚ã‚‹ README.progress-"
+"reporting を見ã¦ãã ã•ã„。設定項目: <literal>Dpkg::Progress</literal>〠"
+"<literal>Dpkg::Progress-Fancy</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. See <option>--with-source</option> description in &apt-"
+"cache; for further details."
+msgstr ""
+"メタ情報ã®ã‚½ãƒ¼ã‚¹ã¨ã—ã¦æŒ‡å®šã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’追加ã—ã¾ã™ã€‚指定を繰り返ã™ã¨è¤‡æ•°ã®"
+"ファイルを追加ã§ãã¾ã™ã€‚ã•ã‚‰ãªã‚‹è©³ç´°ã«ã¤ã„ã¦ã¯ &apt-cache; ã® <option>--with-"
+"source</option> ã®èª¬æ˜Žã‚’見ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml
+msgid "Files"
+msgstr "ファイル"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
+"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
+"APT Howto."
+msgstr ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
+"&apt-secure;, &guidesdir; ã«ã‚ã‚‹ APT ユーザガイド, &apt-preferences;, APT "
+"Howto"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"<command>apt-get</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+"<command>apt-get</command> ã¯æ­£å¸¸çµ‚了時㫠0 ã‚’è¿”ã—ã¾ã™ã€‚エラー時ã«ã¯å進㮠"
+"100 ã‚’è¿”ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cache.8.xml
+msgid "query the APT cache"
+msgstr "APT キャッシュã¸ã®å•ã„åˆã‚ã›"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid ""
+"<command>apt-cache</command> performs a variety of operations on APT's "
+"package cache. <command>apt-cache</command> does not manipulate the state of "
+"the system but does provide operations to search and generate interesting "
+"output from the package metadata. The metadata is acquired and updated via "
+"the 'update' command of e.g. <command>apt-get</command>, so that it can be "
+"outdated if the last update is too long ago, but in exchange <command>apt-"
+"cache</command> works independently of the availability of the configured "
+"sources (e.g. offline)."
+msgstr ""
+"<command>apt-cache</command> 㯠APT ã®ãƒ‘ッケージキャッシュã«å¯¾ã—ã¦ã€ã•ã¾ã–ã¾"
+"ãªæ“作を行ã„ã¾ã™ã€‚<command>apt-cache</command> ã¯ã€ã‚·ã‚¹ãƒ†ãƒ çŠ¶æ…‹ã®æ“作ã¯è¡Œã„ã¾"
+"ã›ã‚“ãŒã€ãƒ‘ッケージã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’検索ã—ãŸã‚Šã€èˆˆå‘³æ·±ã„出力を生æˆã™ã‚‹ã¨ã„ã£ãŸæ“"
+"作をæä¾›ã—ã¾ã™ã€‚メタデータã¯ã€ä¾‹ãˆã° <command>apt-get</command> ã® 'update' "
+"コマンドã§å–å¾—ã—ã¦æ›´æ–°ã—ã¾ã™ã€‚ãã®ãŸã‚ã€æœ€å¾Œã®æ›´æ–°ãŒå¤ã™ãŽã‚‹å ´åˆã¯ã€æ™‚代é…ã‚Œ"
+"ã§ã™ã€‚ãŸã ã—ã€å¼•ãæ›ãˆã« <command>apt-cache</command> ã¯ã€è¨­å®šã•ã‚ŒãŸå–å¾—å…ƒã®"
+"å¯ç”¨æ€§ã¨ã¯ç‹¬ç«‹ã—ã¦å‹•ä½œã—ã¾ã™ (例ãˆã°ã‚ªãƒ•ãƒ©ã‚¤ãƒ³)。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>gencaches</literal> creates APT's package cache. This is done "
+"implicitly by all commands needing this cache if it is missing or outdated."
+msgstr ""
+"<literal>gencaches</literal> 㯠APT ã®ãƒ‘ッケージキャッシュを作æˆã—ã¾ã™ã€‚ã“ã®"
+"キャッシュãŒè¦‹ã¤ã‹ã‚‰ãªã„ã€ã¾ãŸã¯å¤ããªã£ã¦ã„ã‚‹å ´åˆã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’å¿…è¦ã¨ã™ã‚‹ã™"
+"ã¹ã¦ã®ã‚³ãƒžãƒ³ãƒ‰ã«ã‚ˆã£ã¦ã€æš—é»™ã§å®Ÿè¡Œã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml
+msgid "&synopsis-pkg;"
+msgstr "&synopsis-pkg;"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>showpkg</literal> displays information about the packages listed on "
+"the command line. Remaining arguments are package names. The available "
+"versions and reverse dependencies of each package listed are listed, as well "
+"as forward dependencies for each version. Forward (normal) dependencies are "
+"those packages upon which the package in question depends; reverse "
+"dependencies are those packages that depend upon the package in question. "
+"Thus, forward dependencies must be satisfied for a package, but reverse "
+"dependencies need not be. For instance, <command>apt-cache showpkg "
+"libreadline2</command> would produce output similar to the following:"
+msgstr ""
+"<literal>showpkg</literal> ã¯ã€ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ä¸Šã«åˆ—挙ã—ãŸãƒ‘ッケージã®æƒ…報を表"
+"示ã—ã¾ã™ã€‚後ã«ç¶šã引数ã¯ãƒ‘ッケージåã¨ãªã‚Šã¾ã™ã€‚å„パッケージã«ã¤ã„ã¦ã€æœ‰åŠ¹ãª"
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨è¢«ä¾å­˜é–¢ä¿‚を列挙ã—ã€ã•ã‚‰ã«ãã®å„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã¤ã„ã¦ä¾å­˜é–¢ä¿‚を表示"
+"ã—ã¾ã™ã€‚(通常ã®) ä¾å­˜é–¢ä¿‚ã¨ã¯ã€å¯¾è±¡ã®ãƒ‘ッケージãŒä¾å­˜ã—ã¦ã„るパッケージを指ã—"
+"ã¾ã™ã€‚ã¾ãŸã€è¢«ä¾å­˜é–¢ä¿‚ã¨ã¯ã€å¯¾è±¡ã®ãƒ‘ッケージã«ä¾å­˜ã—ã¦ã„るパッケージを指ã—ã¾"
+"ã™ã€‚従ã£ã¦ã€ãƒ‘ッケージã®ä¾å­˜é–¢ä¿‚ã¯æº€ãŸã•ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“ãŒã€è¢«ä¾å­˜é–¢ä¿‚ã¯æº€"
+"ãŸã™å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。実例ã¨ã—ã¦ã€ä»¥ä¸‹ã« <command>apt-cache showpkg "
+"libreadline2</command> ã®å‡ºåŠ›ã‚’掲ã’ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-cache.8.xml
+#, no-wrap
+msgid ""
+"Package: libreadline2\n"
+"Versions: 2.1-12(/var/state/apt/lists/foo_Packages),\n"
+"Reverse Depends: \n"
+" libreadlineg2,libreadline2\n"
+" libreadline2-altdev,libreadline2\n"
+"Dependencies:\n"
+"2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))\n"
+"Provides:\n"
+"2.1-12 - \n"
+"Reverse Provides: \n"
+msgstr ""
+"Package: libreadline2\n"
+"Versions: 2.1-12(/var/state/apt/lists/foo_Packages),\n"
+"Reverse Depends: \n"
+" libreadlineg2,libreadline2\n"
+" libreadline2-altdev,libreadline2\n"
+"Dependencies:\n"
+"2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))\n"
+"Provides:\n"
+"2.1-12 - \n"
+"Reverse Provides: \n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Thus it may be seen that libreadline2, version 2.1-12, depends on libc5 and "
+"ncurses3.0 which must be installed for libreadline2 to work. In turn, "
+"libreadlineg2 and libreadline2-altdev depend on libreadline2. If "
+"libreadline2 is installed, libc5 and ncurses3.0 (and ldso) must also be "
+"installed; libreadlineg2 and libreadline2-altdev do not have to be "
+"installed. For the specific meaning of the remainder of the output it is "
+"best to consult the apt source code."
+msgstr ""
+"ã¤ã¾ã‚Šã€libreadline2 ã® version 2.1-12 ã¯ã€libc5 㨠ncurses3.0 ã«ä¾å­˜ã—ã¦ã„"
+"ã¦ã€libreadline2 ãŒå‹•ä½œã™ã‚‹ã«ã¯ã€ã“れらをインストールã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã¨ã„ã†ã“ã¨"
+"ãŒåˆ¤ã‚Šã¾ã™ã€‚一方ã€libreadlineg2 㨠libreadline2-altdev 㯠libreadline2 ã«ä¾å­˜"
+"ã—ã¦ã„ã¾ã™ã€‚libreadline2 をインストールã™ã‚‹ãŸã‚ã«ã¯ã€libc5, ncurses3.0, ldso "
+"ã‚’ã™ã¹ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“ãŒã€libreadlineg2 㨠libreadline2-"
+"altdev ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。出力ã®æ®‹ã‚Šã®éƒ¨åˆ†ã®æ„味ã«ã¤ã„ã¦ã¯ã€"
+"apt ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’調ã¹ã‚‹ã®ãŒæœ€è‰¯ã§ã—ょã†ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>stats</literal> displays some statistics about the cache. No "
+"further arguments are expected. Statistics reported are:"
+msgstr ""
+"<literal>stats</literal> ã¯ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã«ã¤ã„ã¦ã®çµ±è¨ˆæƒ…報を表示ã—ã¾ã™ã€‚ãれ以"
+"上ã€å¼•æ•°ã¯å¿…è¦ã‚ã‚Šã¾ã›ã‚“。以下ã®çµ±è¨ˆæƒ…報を表示ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total package names</literal> is the number of package names found "
+"in the cache."
+msgstr ""
+"<literal>パッケージåç·æ•°</literal>ã¯ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã«å­˜åœ¨ã™ã‚‹ãƒ‘ッケージ数を表ã—"
+"ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Normal packages</literal> is the number of regular, ordinary "
+"package names; these are packages that bear a one-to-one correspondence "
+"between their names and the names used by other packages for them in "
+"dependencies. The majority of packages fall into this category."
+msgstr ""
+"<literal>通常パッケージ</literal>ã¯ã€å…¬å¼ã®æ™®é€šã®ãƒ‘ッケージ数を表ã—ã¾ã™ã€‚ã“ã‚Œ"
+"ã¯ã€ä»–ã®ãƒ‘ッケージã®ä¾å­˜é–¢ä¿‚ã§ä½¿ç”¨ã•ã‚ŒãŸå称ã§ã€ãã‚ŒãŒä¸€å¯¾ä¸€ã«å¯¾å¿œã™ã‚‹ãƒ‘ッ"
+"ケージã§ã™ã€‚大多数ã®ãƒ‘ッケージã¯ã“ã®ã‚«ãƒ†ã‚´ãƒªã«å…¥ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Pure virtual packages</literal> is the number of packages that "
+"exist only as a virtual package name; that is, packages only \"provide\" the "
+"virtual package name, and no package actually uses the name. For instance, "
+"\"mail-transport-agent\" in the Debian system is a pure virtual package; "
+"several packages provide \"mail-transport-agent\", but there is no package "
+"named \"mail-transport-agent\"."
+msgstr ""
+"<literal>純粋仮想パッケージ</literal>ã¯ã€ä»®æƒ³ãƒ‘ッケージåã¨ã—ã¦ã®ã¿å­˜åœ¨ã™ã‚‹"
+"パッケージ (仮想パッケージåã®ã¿ã‚’「æä¾›ã€ã—ã€å®Ÿéš›ã«ã¯ã„ã‹ãªã‚‹ãƒ‘ッケージもã"
+"ã®å称をæŒãŸãªã„) ã®æ•°ã‚’表ã—ã¾ã™ã€‚例ãˆã°ã€Debian システムã§ã¯ \"mail-"
+"transport-agent\" ã¯ç´”粋仮想パッケージã§ã™ã€‚\"mail-transport-agent\" ã‚’æä¾›ã™"
+"るパッケージã¯ã„ãã¤ã‚‚ã‚ã‚Šã¾ã™ãŒã€\"mail-transport-agent\" ã¨ã„ã†åå‰ã®ãƒ‘ッ"
+"ケージã¯ã‚ã‚Šã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Single virtual packages</literal> is the number of packages with "
+"only one package providing a particular virtual package. For example, in the "
+"Debian system, \"X11-text-viewer\" is a virtual package, but only one "
+"package, xless, provides \"X11-text-viewer\"."
+msgstr ""
+"<literal>å˜ä¸€ä»®æƒ³ãƒ‘ッケージ</literal>ã¯ã€ç‰¹å®šã®ä»®æƒ³ãƒ‘ッケージåã‚’æä¾›ã™ã‚‹ãƒ‘ッ"
+"ケージãŒã€ãŸã ä¸€ã¤ã®å ´åˆã®æ•°ã‚’表ã—ã¾ã™ã€‚例ãˆã°ã€Debian システムã§ã¯ã€\"X11-"
+"text-viewer\" ã¯ä»®æƒ³ãƒ‘ッケージã§ã™ãŒã€\"X11-text-viewer\" ã‚’æä¾›ã™ã‚‹ãƒ‘ッケー"
+"ジã¯ã€xless パッケージã®ã¿ã¨ã„ã†ã“ã¨ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Mixed virtual packages</literal> is the number of packages that "
+"either provide a particular virtual package or have the virtual package name "
+"as the package name. For instance, in the Debian system, \"debconf\" is both "
+"an actual package, and provided by the debconf-tiny package."
+msgstr ""
+"<literal>複åˆä»®æƒ³ãƒ‘ッケージ</literal>ã¯ã€ãã®ä»®æƒ³ãƒ‘ッケージåã‚’æä¾›ã™ã‚‹ãƒ‘ッ"
+"ケージãŒè¤‡æ•°ã‚ã‚‹ã‹ã€ã¾ãŸãƒ‘ッケージåã¨åŒã˜ä»®æƒ³ãƒ‘ッケージåã‚’æŒã¤ãƒ‘ッケージã®"
+"数を表ã—ã¾ã™ã€‚例ãˆã°ã€Debian システムã§ã¯ã€\"debconf\" ã¯å®Ÿéš›ã®ãƒ‘ッケージåã§"
+"ã‚‚ã‚ã‚Šã¾ã™ãŒã€debconf-tiny ã«ã‚ˆã£ã¦æ供もã•ã‚Œã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Missing</literal> is the number of package names that were "
+"referenced in a dependency but were not provided by any package. Missing "
+"packages may be an evidence if a full distribution is not accessed, or if a "
+"package (real or virtual) has been dropped from the distribution. Usually "
+"they are referenced from Conflicts or Breaks statements."
+msgstr ""
+"<literal>欠è½</literal>ã¯ã€ä¾å­˜é–¢ä¿‚中ã«ã¯å­˜åœ¨ã™ã‚‹ã®ã«ã€ã©ã®ãƒ‘ッケージã«ã‚‚æä¾›"
+"ã•ã‚Œã¦ã„ãªã„パッケージåã®æ•°ã‚’表ã—ã¾ã™ã€‚欠è½ãƒ‘ッケージã¯ã€å…¨ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ュー"
+"ションã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¦ã„ãªã„ã‹ã€(実ãªã„ã—仮想) パッケージãŒãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ュー"
+"ションã‹ã‚‰ã¯ãšã•ã‚ŒãŸã¨ã„ã†å…†å€™ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。通常ã€æ§‹æ–‡ãŒç«¶åˆã‚„ç ´æã™ã‚‹ã¨ã“"
+"ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total distinct</literal> versions is the number of package versions "
+"found in the cache. If more than one distribution is being accessed (for "
+"instance, \"stable\" and \"unstable\"), this value can be considerably "
+"larger than the number of total package names."
+msgstr ""
+"<literal>個別ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç·æ•°</literal>ã¯ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã«å­˜åœ¨ã™ã‚‹ãƒ‘ッケージã®ãƒãƒ¼"
+"ジョンã®æ•°ã‚’表ã—ã¾ã™ã€‚ã‚‚ã—複数ã®ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューション (例ãˆã° \"stable\" 㨠"
+"\"unstable\") ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã€ã“ã®å€¤ã¯ãƒ‘ッケージåç·æ•°ã‚ˆã‚Šã‚‚ã‹ãªã‚Šå¤§ãã„"
+"æ•°ã«ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total dependencies</literal> is the number of dependency "
+"relationships claimed by all of the packages in the cache."
+msgstr ""
+"<literal>ä¾å­˜é–¢ä¿‚ç·æ•°</literal>ã¯ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã«ã‚ã‚‹ã™ã¹ã¦ã®ãƒ‘ッケージã§è¦æ±‚ã•"
+"ã‚ŒãŸä¾å­˜é–¢ä¿‚ã®æ•°ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>showsrc</literal> displays all the source package records that "
+"match the given package names. All versions are shown, as well as all "
+"records that declare the name to be a binary package. Use <option>--only-"
+"source</option> to display only source package names."
+msgstr ""
+"<literal>showsrc</literal> ã¯ã€æŒ‡å®šã—ãŸãƒ‘ッケージåã«ä¸€è‡´ã™ã‚‹ã‚½ãƒ¼ã‚¹ãƒ‘ッケージ"
+"ã‚’ã€ã™ã¹ã¦è¡¨ç¤ºã—ã¾ã™ã€‚ãƒã‚¤ãƒŠãƒªãƒ‘ッケージã«ãªã‚‹ã¨ãã®å称を宣言ã—ãŸãƒ¬ã‚³ãƒ¼ãƒ‰ã¨"
+"ã¨ã‚‚ã«ã€ã™ã¹ã¦ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã¤ã„ã¦è¡¨ç¤ºã—ã¾ã™ã€‚ソースパッケージåã ã‘を表示ã™"
+"ã‚‹ã«ã¯ã€<option>--only-source</option> を使用ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dump</literal> shows a short listing of every package in the cache. "
+"It is primarily for debugging."
+msgstr ""
+"<literal>dump</literal> ã¯ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥å†…ã®ãƒ‘ッケージãã‚Œãžã‚Œã«ã¤ã„ã¦ã€çŸ­ã„一"
+"覧を表示ã—ã¾ã™ã€‚主ã«ãƒ‡ãƒãƒƒã‚°ç”¨ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dumpavail</literal> prints out an available list to stdout. This is "
+"suitable for use with &dpkg; and is used by the &dselect; method."
+msgstr ""
+"<literal>dumpavail</literal> ã¯ã€æ¨™æº–出力ã«åˆ©ç”¨å¯èƒ½ãªã‚‚ã®ã®ä¸€è¦§ã‚’出力ã—ã¾"
+"ã™ã€‚ &dpkg; ã¨å…±ã«ä½¿ç”¨ã™ã‚‹ã¨ä¾¿åˆ©ã§ã™ã—ã€&dselect; ã§ã‚‚使用ã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>unmet</literal> displays a summary of all unmet dependencies in the "
+"package cache."
+msgstr ""
+"<literal>unmet</literal> ã¯ã€ãƒ‘ッケージキャッシュ内ã«ã‚ã‚‹ã€ä¸é©å½“ãªä¾å­˜é–¢ä¿‚ã®"
+"概è¦ã‚’表示ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>show</literal> performs a function similar to <command>dpkg --print-"
+"avail</command>; it displays the package records for the named packages."
+msgstr ""
+"<literal>show</literal> ã¯ã€<command>dpkg --print-avail</command> ã¨åŒæ§˜ã®æ©Ÿ"
+"能を実行ã—ã¾ã™ã€‚ã“ã‚Œã¯ã€æŒ‡å®šã—ãŸãƒ‘ッケージã®ãƒ‘ッケージレコードã®è¡¨ç¤ºã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml
+msgid "&synopsis-regex;"
+msgstr "&synopsis-regex;"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>search</literal> performs a full text search on all available "
+"package lists for the POSIX regex pattern given, see &regex;. It searches "
+"the package names and the descriptions for an occurrence of the regular "
+"expression and prints out the package name and the short description, "
+"including virtual package names. If <option>--full</option> is given then "
+"output identical to <literal>show</literal> is produced for each matched "
+"package, and if <option>--names-only</option> is given then the long "
+"description is not searched, only the package name and provided packages are."
+msgstr ""
+"<literal>search</literal> ã¯ã€ä¸Žãˆã‚‰ã‚ŒãŸ POSIX ã®æ­£è¦è¡¨ç¾ (&regex; ã‚’å‚ç…§) ã«"
+"よりã€ã™ã¹ã¦ã®åˆ©ç”¨å¯èƒ½ãªãƒ‘ッケージã«å¯¾ã—ã¦å…¨æ–‡æ¤œç´¢ã‚’è¡Œã„ã¾ã™ã€‚パッケージåã¨"
+"説明ã«å¯¾ã—ã¦æ­£è¦è¡¨ç¾ã§æ¤œç´¢ã‚’è¡Œã„ã€ãƒ‘ッケージå (仮想パッケージåã‚’å«ã‚€) ã¨çŸ­"
+"ã„説明文を表示ã—ã¾ã™ã€‚<option>--full</option> ãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã€ãƒžãƒƒãƒã—ãŸ"
+"パッケージã«å¯¾ã— <literal>show</literal> ã¨åŒã˜æƒ…報を出力ã—ã¾ã™ã€‚<option>--"
+"names-only</option> ãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã¯ã€é•·ã„説明文ã«å¯¾ã—ã¦æ¤œç´¢ã‚’è¡Œã‚ãšã€ãƒ‘ッ"
+"ケージåã¨æä¾›ã•ã‚ŒãŸãƒ‘ッケージã®ã¿å¯¾è±¡ã¨ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Separate arguments can be used to specify multiple search patterns that are "
+"and'ed together."
+msgstr "空白ã§åŒºåˆ‡ã£ãŸå¼•æ•°ã§ã€è¤‡æ•°ã®æ¤œç´¢ãƒ‘ターン㮠and ã‚’ã¨ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>depends</literal> shows a listing of each dependency a package has "
+"and all the possible other packages that can fulfill that dependency."
+msgstr ""
+"<literal>depends</literal> ã¯ã€ãƒ‘ッケージãŒæŒã£ã¦ã„ã‚‹ä¾å­˜é–¢ä¿‚ã¨ã€ãã®ä¾å­˜é–¢ä¿‚"
+"を満ãŸã™ä»–ã®ãƒ‘ッケージã®ä¸€è¦§ã‚’表示ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>rdepends</literal> shows a listing of each reverse dependency a "
+"package has."
+msgstr ""
+"<literal>rdepends</literal> ã¯ã€ãƒ‘ッケージãŒæŒã¤è¢«ä¾å­˜é–¢ä¿‚を一覧表示ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml
+msgid "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+msgstr "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"This command prints the name of each package APT knows. The optional "
+"argument is a prefix match to filter the name list. The output is suitable "
+"for use in a shell tab complete function and the output is generated "
+"extremely quickly. This command is best used with the <option>--generate</"
+"option> option."
+msgstr ""
+"ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã¯ã€APT ãŒçŸ¥ã£ã¦ã„ã‚‹å„パッケージã®åå‰ã‚’表示ã—ã¾ã™ã€‚オプション引"
+"æ•°ã¯ã€åå‰ä¸€è¦§ã‹ã‚‰å…ˆé ­ä¸€è‡´ã§æŠ½å‡ºã—ã¾ã™ã€‚ã“ã®å‡ºåŠ›ã¯ã‚·ã‚§ãƒ«ã®ã‚¿ãƒ–ã«ã‚ˆã‚‹è£œå®Œæ©Ÿèƒ½"
+"ã§ä½¿ã„ã‚„ã™ãã€ã¾ãŸéžå¸¸ã«é«˜é€Ÿã«ç”Ÿæˆã•ã‚Œã¾ã™ã€‚ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã¯ <option>--"
+"generate</option> オプションã¨å…±ã«ä½¿ç”¨ã™ã‚‹ã¨éžå¸¸ã«ä¾¿åˆ©ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Note that a package which APT knows of is not necessarily available to "
+"download, installable or installed, e.g. virtual packages are also listed in "
+"the generated list."
+msgstr ""
+"APT ãŒçŸ¥ã£ã¦ã„るパッケージã¯ã€ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰å¯èƒ½ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«å¯èƒ½ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼"
+"ル済ã¿ã§ã‚ã‚‹å¿…è¦ãŒãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。ã¤ã¾ã‚Šã€ä»®æƒ³ãƒ‘ッケージも生æˆã—"
+"ãŸä¸€è¦§ã«ã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dotty</literal> takes a list of packages on the command line and "
+"generates output suitable for use by dotty from the <ulink url=\"http://www."
+"research.att.com/sw/tools/graphviz/\">GraphViz</ulink> package. The result "
+"will be a set of nodes and edges representing the relationships between the "
+"packages. By default the given packages will trace out all dependent "
+"packages; this can produce a very large graph. To limit the output to only "
+"the packages listed on the command line, set the <literal>APT::Cache::"
+"GivenOnly</literal> option."
+msgstr ""
+"<literal>dotty</literal> ã¯ã€ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ä¸Šã®ãƒ‘ッケージåã‹ã‚‰ã€<ulink url="
+"\"http://www.research.att.com/sw/tools/graphviz/\">GraphViz</ulink> パッケー"
+"ジ㮠dotty コマンドã§åˆ©ç”¨ã™ã‚‹ã®ã«ä¾¿åˆ©ãªå‡ºåŠ›ã‚’生æˆã—ã¾ã™ã€‚çµæžœã¯ãƒ‘ッケージã®é–¢"
+"係を表ã‚ã™ã€ãƒŽãƒ¼ãƒ‰ãƒ»ã‚¨ãƒƒã‚¸ã®ã‚»ãƒƒãƒˆã§è¡¨ç¾ã•ã‚Œã¾ã™ã€‚デフォルトã§ã¯ã€ã™ã¹ã¦ã®ä¾"
+"存パッケージをトレースã™ã‚‹ã®ã§ã€éžå¸¸ã«å¤§ãã„図ãŒå¾—られã¾ã™ã€‚コマンドラインã«"
+"列挙ã—ãŸãƒ‘ッケージã ã‘を出力ã™ã‚‹ã‚ˆã†ã«åˆ¶é™ã™ã‚‹ã«ã¯ã€<literal>APT::Cache::"
+"GivenOnly</literal> をセットã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"The resulting nodes will have several shapes; normal packages are boxes, "
+"pure virtual packages are triangles, mixed virtual packages are diamonds, "
+"missing packages are hexagons. Orange boxes mean recursion was stopped (leaf "
+"packages), blue lines are pre-depends, green lines are conflicts."
+msgstr ""
+"çµæžœã®ãƒŽãƒ¼ãƒ‰ã¯æ•°ç¨®ã®å½¢çŠ¶ã‚’ã¨ã‚Šã¾ã™ã€‚通常パッケージã¯å››è§’ã€ç´”粋仮想パッケージ"
+"ã¯ä¸‰è§’ã€è¤‡åˆä»®æƒ³ãƒ‘ッケージã¯è±å½¢ã€æ¬ è½ãƒ‘ッケージã¯å…­è§’å½¢ã§è¡¨ã—ã¾ã™ã€‚オレンジ"
+"ã®å››è§’ã¯å†å¸°ãŒçµ‚了ã—ãŸã€Œãƒªãƒ¼ãƒ•ãƒ‘ッケージã€ã€é’ã„ç·šã¯å…ˆè¡Œä¾å­˜ã€ç·‘ã®ç·šã¯ç«¶åˆã‚’"
+"表ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid "Caution, dotty cannot graph larger sets of packages."
+msgstr "注æ„) dotty ã¯ã€ãƒ‘ッケージã®ã‚ˆã‚Šå¤§ããªã‚»ãƒƒãƒˆã®ã‚°ãƒ©ãƒ•ã¯æã‘ã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"The same as <literal>dotty</literal>, only for xvcg from the <ulink url="
+"\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</ulink>."
+msgstr ""
+"<literal>dotty</literal> ã¨åŒæ§˜ã§ã™ãŒã€<ulink url=\"http://rw4.cs.uni-sb.de/"
+"users/sander/html/gsvcg1.html\">VCG tool</ulink> ã® xvcg 専用ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml
+msgid "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+msgstr "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>policy</literal> is meant to help debug issues relating to the "
+"preferences file. With no arguments it will print out the priorities of each "
+"source. Otherwise it prints out detailed information about the priority "
+"selection of the named package."
+msgstr ""
+"<literal>policy</literal> ã¯ã€ãƒ—リファレンスファイル関係ã®å•é¡Œã«ã¤ã„ã¦ã€ãƒ‡"
+"ãƒãƒƒã‚°ã‚’支æ´ã—ã¾ã™ã€‚引数を指定ã—ãªã‹ã£ãŸå ´åˆã€å–å¾—å…ƒã”ã¨ã®å„ªå…ˆé †ä½ã‚’表示ã—ã¾"
+"ã™ã€‚一方ã€ãƒ‘ッケージåを指定ã—ãŸå ´åˆã€å„ªå…ˆé †ã®è©³ç´°æƒ…報を表示ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>apt-cache</literal>'s <literal>madison</literal> command attempts "
+"to mimic the output format and a subset of the functionality of the Debian "
+"archive management tool, <literal>madison</literal>. It displays available "
+"versions of a package in a tabular format. Unlike the original "
+"<literal>madison</literal>, it can only display information for the "
+"architecture for which APT has retrieved package lists (<literal>APT::"
+"Architecture</literal>)."
+msgstr ""
+"<literal>apt-cache</literal> ã® <literal>madison</literal> コマンドã¯ã€"
+"Debian アーカイブ管ç†ãƒ„ール <literal>madison</literal> ã®æ©Ÿèƒ½ã®ã‚µãƒ–セットã§ã€"
+"出力フォーマットを真似よã†ã¨ã—ã¾ã™ã€‚パッケージã®åˆ©ç”¨å¯èƒ½ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’表形å¼ã§"
+"表示ã—ã¾ã™ã€‚オリジナル㮠<literal>madison</literal> ã¨é•ã„ã€APT ãŒãƒ‘ッケージ"
+"一覧を検索ã—ãŸã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ (<literal>APT::Architecture</literal>) ã®æƒ…報を"
+"表示ã™ã‚‹ã ã‘ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Select the file to store the package cache. The package cache is the primary "
+"cache used by all operations. Configuration Item: <literal>Dir::Cache::"
+"pkgcache</literal>."
+msgstr ""
+"パッケージキャッシュを格ç´ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¾ã™ã€‚パッケージキャッシュã¯ã€"
+"ã™ã¹ã¦ã®æ“作ã§ä½¿ç”¨ã•ã‚Œã‚‹ä¸€æ¬¡ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã§ã™ã€‚設定項目: <literal>Dir::Cache::"
+"pkgcache</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Select the file to store the source cache. The source is used only by "
+"<literal>gencaches</literal> and it stores a parsed version of the package "
+"information from remote sources. When building the package cache the source "
+"cache is used to avoid reparsing all of the package files. Configuration "
+"Item: <literal>Dir::Cache::srcpkgcache</literal>."
+msgstr ""
+"ソースキャッシュを格ç´ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¾ã™ã€‚ã“ã®ã‚½ãƒ¼ã‚¹ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã¯ "
+"<literal>gencaches</literal> ã§ã®ã¿ä½¿ç”¨ã•ã‚Œã€ã“ã“ã«è§£æžã•ã‚ŒãŸå–å¾—å…ƒã®ãƒ‘ッケー"
+"ジ情報ãŒæ ¼ç´ã•ã‚Œã¦ã„ã¾ã™ã€‚パッケージキャッシュを構築ã™ã‚‹éš›ã«ã€å…¨ãƒ‘ッケージ"
+"ファイルã®å†è§£æžã‚’é¿ã‘ã‚‹ãŸã‚ã«ã€ã‚½ãƒ¼ã‚¹ã‚­ãƒ£ãƒƒã‚·ãƒ¥ãŒä½¿ã‚ã‚Œã¾ã™ã€‚設定項目: "
+"<literal>Dir::Cache::srcpkgcache</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quietness up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quietness level, overriding the "
+"configuration file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+"é™ç²› - 進æ—表示をçœç•¥ã—ã€ãƒ­ã‚°ã‚’ã¨ã‚‹ã®ã«ä¾¿åˆ©ãªå‡ºåŠ›ã‚’è¡Œã„ã¾ã™ã€‚最大 2 ã¤ã¾ã§ q "
+"ã‚’é‡ã­ã‚‹ã“ã¨ã§ã•ã‚‰ã«é™ç²›ã«ã§ãã¾ã™ã€‚ã¾ãŸã€<option>-q=#</option> ã®ã‚ˆã†ã«é™ç²›"
+"レベルを指定ã—ã¦ã€è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’上書ãã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚設定項目: "
+"<literal>quiet</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print only important dependencies; for use with <literal>unmet</literal> and "
+"<literal>depends</literal>. Causes only Depends and Pre-Depends relations to "
+"be printed. Configuration Item: <literal>APT::Cache::Important</literal>."
+msgstr ""
+"「é‡è¦ã€ä¾å­˜é–¢ä¿‚ã®ã¿è¡¨ç¤º - <literal>unmet</literal> ã‚„ <literal>depends</"
+"literal> ã¨å…±ã«ä½¿ç”¨ã—ã€ã€Œä¾å­˜ã€é–¢ä¿‚ã¨ã€Œå…ˆè¡Œä¾å­˜ã€é–¢ä¿‚ã®ã¿ã‚’表示ã—ã¾ã™ã€‚設定項"
+"ç›®: <literal>APT::Cache::Important</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Per default the <command>depends</command> and <command>rdepends</command> "
+"print all dependencies. This can be tweaked with these flags which will omit "
+"the specified dependency type. Configuration Item: <literal>APT::Cache::"
+"Show<replaceable>DependencyType</replaceable></literal> e.g. <literal>APT::"
+"Cache::ShowRecommends</literal>."
+msgstr ""
+"デフォルトã§ã¯ <command>depends</command> ã‚„ <command>rdepends</command> ã¯å…¨"
+"ä¾å­˜é–¢ä¿‚を出力ã—ã¾ã™ã€‚ã“ã®æŒ™å‹•ã‚’ã€ã“ã“ã«æŒ™ã’ãŸãƒ•ãƒ©ã‚°ã§æŒ‡å®šã—ãŸä¾å­˜é–¢ä¿‚ã‚’çœç•¥"
+"ã§ãã¾ã™ã€‚設定項目: <literal>APT::Cache::Show<replaceable>ä¾å­˜é–¢ä¿‚タイプ</"
+"replaceable></literal> 例: <literal>APT::Cache::ShowRecommends</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Per default <command>depends</command> and <command>rdepends</command> print "
+"only dependencies explicitly expressed in the metadata. With this flag it "
+"will also show dependencies implicitly added based on the encountered data. "
+"A <literal>Conflicts: foo</literal> e.g. expresses implicitly that this "
+"package also conflicts with the package foo from any other architecture. "
+"Configuration Item: <literal>APT::Cache::ShowImplicit</literal>."
+msgstr ""
+"デフォルトã§ã¯ <command>depends</command> ã‚„ <command>rdepends</command> ã¯ãƒ¡"
+"タデータ中ã«æ˜Žç¤ºçš„ã«è¡¨ç¾ã•ã‚ŒãŸä¾å­˜é–¢ä¿‚ã®ã¿ã‚’出力ã—ã¾ã™ã€‚ã“ã®ãƒ•ãƒ©ã‚°ã‚’指定ã™ã‚‹"
+"ã¨ã€é­é‡ã—ãŸãƒ‡ãƒ¼ã‚¿ã«ã‚‚ã¨ã¥ã„ã¦è¿½åŠ ã®ä¾å­˜é–¢ä¿‚を表示ã—ã¾ã™ã€‚"
+"<literal>Conflicts: foo</literal> ã¯ã€ä¾‹ãˆã°ã€ã“ã®ãƒ‘ッケージãŒã»ã‹ã®ã‚¢ãƒ¼ã‚­ãƒ†"
+"クãƒãƒ£ã‹ã‚‰ã®ãƒ‘ッケージ foo ã¨ç«¶åˆã—ã¦ã„ã‚‹ã“ã¨ã‚’暗黙的ã«è¡¨ç¾ã—ã¦ã„ã¾ã™ã€‚設定項"
+"ç›®: <literal>APT::Cache::ShowImplicit</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print full package records when searching. Configuration Item: "
+"<literal>APT::Cache::ShowFull</literal>."
+msgstr ""
+"search 時ã«å…¨ãƒ‘ッケージレコードを表示ã—ã¾ã™ã€‚設定項目: <literal>APT::Cache::"
+"ShowFull</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print full records for all available versions. This is the default; to turn "
+"it off, use <option>--no-all-versions</option>. If <option>--no-all-"
+"versions</option> is specified, only the candidate version will be displayed "
+"(the one which would be selected for installation). This option is only "
+"applicable to the <literal>show</literal> command. Configuration Item: "
+"<literal>APT::Cache::AllVersions</literal>."
+msgstr ""
+"全利用å¯èƒ½ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ¬ã‚³ãƒ¼ãƒ‰å…¨ä½“を表示ã—ã¾ã™ã€‚ã“ã‚Œã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®å‹•ä½œã§ã€ç„¡"
+"効ã«ã™ã‚‹ã«ã¯ <option>--no-all-versions</option> を使用ã—ã¦ãã ã•ã„。"
+"<option>--no-all-versions</option> を指定ã™ã‚‹ã¨ã€å€™è£œãƒãƒ¼ã‚¸ãƒ§ãƒ³ (インストール"
+"ã®éš›ã«é¸æŠžã•ã‚Œã‚‹ã‚‚ã®) ã ã‘表示ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ—ションã¯ã€<literal>show</"
+"literal> コマンドã§ã®ã¿é©ç”¨ã§ãã¾ã™ã€‚設定項目: <literal>APT::Cache::"
+"AllVersions</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Perform automatic package cache regeneration, rather than use the cache as "
+"it is. This is the default; to turn it off, use <option>--no-generate</"
+"option>. Configuration Item: <literal>APT::Cache::Generate</literal>."
+msgstr ""
+"ãã®ã¾ã¾ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’使用ã™ã‚‹ã®ã§ã¯ãªãã€è‡ªå‹•çš„ã«ãƒ‘ッケージキャッシュをå†ç”Ÿæˆ"
+"ã—ã¾ã™ã€‚ã“ã‚Œã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®å‹•ä½œã§ã€ç„¡åŠ¹ã«ã™ã‚‹ã«ã¯ <option>--no-generate</"
+"option> を使用ã—ã¦ãã ã•ã„。設定項目: <literal>APT::Cache::Generate</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Only search on the package and provided package names, not the long "
+"descriptions. Configuration Item: <literal>APT::Cache::NamesOnly</literal>."
+msgstr ""
+"é•·ã„説明文ã§ã¯ãªãã€ãƒ‘ッケージãŠã‚ˆã³æä¾›ã•ã‚ŒãŸãƒ‘ッケージåã®ã¿æ¤œç´¢ã—ã¾ã™ã€‚設"
+"定項目: <literal>APT::Cache::NamesOnly</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Make <literal>pkgnames</literal> print all names, including virtual packages "
+"and missing dependencies. Configuration Item: <literal>APT::Cache::"
+"AllNames</literal>."
+msgstr ""
+"<literal>pkgnames</literal> ã§ã€ä»®æƒ³ãƒ‘ッケージや欠è½ä¾å­˜é–¢ä¿‚ã‚’å«ã‚ãŸå…¨å称を"
+"表示ã—ã¾ã™ã€‚設定項目: <literal>APT::Cache::AllNames</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Make <literal>depends</literal> and <literal>rdepends</literal> recursive so "
+"that all packages mentioned are printed once. Configuration Item: "
+"<literal>APT::Cache::RecurseDepends</literal>."
+msgstr ""
+"<literal>depends</literal> ã‚„ <literal>rdepends</literal> ã§ã€æŒ‡å®šã—ãŸå…¨ãƒ‘ッ"
+"ケージをå†å¸°çš„ã«ä¸€åº¦ã«è¡¨ç¤ºã—ã¾ã™ã€‚設定項目: <literal>APT::Cache::"
+"RecurseDepends</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Limit the output of <literal>depends</literal> and <literal>rdepends</"
+"literal> to packages which are currently installed. Configuration Item: "
+"<literal>APT::Cache::Installed</literal>."
+msgstr ""
+"<literal>depends</literal> ã‚„ <literal>rdepends</literal> ã®å‡ºåŠ›ã‚’ã€ç¾åœ¨ã‚¤ãƒ³"
+"ストールã•ã‚Œã¦ã„るパッケージã«é™å®šã—ã¾ã™ã€‚設定項目: <literal>APT::Cache::"
+"Installed</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. Supported are currently <literal>*.deb</literal>, "
+"<literal>*.dsc</literal>, <literal>*.changes</literal>, <literal>Sources</"
+"literal> and <literal>Packages</literal> files as well as source package "
+"directories. Files are matched based on their name only, not their content!"
+msgstr ""
+"メタ情報ã®ã‚½ãƒ¼ã‚¹ã¨ã—ã¦æŒ‡å®šã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’追加ã—ã¾ã™ã€‚指定を繰り返ã™ã¨è¤‡æ•°ã®"
+"ファイルを追加ã§ãã¾ã™ã€‚ç¾åœ¨ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹ã®ã¯ <literal>*.deb</literal>ã€"
+"<literal>*.dsc</literal>ã€<literal>*.changes</literal>ã€<literal>Sources</"
+"literal>ã€<literal>Packages</literal> ファイル並ã³ã«ã‚½ãƒ¼ã‚¹ãƒ‘ッケージã®ãƒ‡ã‚£ãƒ¬"
+"クトリã§ã™ã€‚ファイルã¨ã®ç…§åˆã¯ãƒ•ã‚¡ã‚¤ãƒ«åã ã‘を基ã«ã—ã¦è¡Œã„ã€ãƒ•ã‚¡ã‚¤ãƒ«ã®å†…容ã¨"
+"ã®ç…§åˆã¯è¡Œã„ã¾ã›ã‚“!"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Sources</literal> and <literal>Packages</literal> can be compressed "
+"in any format apt supports as long as they have the correct extension. If "
+"you need to store multiple of these files in one directory you can prefix a "
+"name of your choice with the last character being an underscore "
+"(\"<literal>_</literal>\"). Example: my.example_Packages.xz"
+msgstr ""
+"<literal>Sources</literal> åŠã³ <literal>Packages</literal> ã¯æ­£ã—ã„æ‹¡å¼µå­ã‚’"
+"付ã‘ã¦ã„れ㰠APT ãŒã‚µãƒãƒ¼ãƒˆã™ã‚‹ä»»æ„ã®å½¢å¼ã§åœ§ç¸®ã§ãã¾ã™ã€‚ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’åŒã˜"
+"ディレクトリã«è¤‡æ•°ç½®ãå¿…è¦ãŒã‚ã‚‹å ´åˆã¯ã€è‡ªåˆ†ãŒä»˜ã‘ã‚‹åå‰ã®éƒ¨åˆ†ã®æœ€å¾Œå°¾ã«ã‚¢ãƒ³"
+"ダースコア (「<literal>_</literal>ã€) を付加ã—ãŸã‚‚ã®ã‚’先頭ã«ä»˜ã‘ã¾ã™ã€‚例: my."
+"example_Packages.xz"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Note that these sources are treated as trusted (see &apt-secure;). "
+"Configuration Item: <literal>APT::Sources::With</literal>."
+msgstr ""
+"ã“ã‚Œã«ã‚ˆã£ã¦æŒ‡å®šã—ãŸã‚½ãƒ¼ã‚¹ã¯ä¿¡é ¼ã§ãã‚‹ã‚‚ã®ã¨ã—ã¦æ‰±ã‚れる (&apt-secure; å‚ç…§) "
+"ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。設定項目: <literal>APT::Sources::With</literal>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid "&apt-conf;, &sources-list;, &apt-get;"
+msgstr "&apt-conf;, &sources-list;, &apt-get;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid ""
+"<command>apt-cache</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-cache</command> ã¯æ­£å¸¸çµ‚了時㫠0 ã‚’è¿”ã—ã¾ã™ã€‚エラー時ã«ã¯å進㮠"
+"100 ã‚’è¿”ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-key.8.xml
+msgid "APT key management utility"
+msgstr "APT キー管ç†ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"<command>apt-key</command> is used to manage the list of keys used by apt to "
+"authenticate packages. Packages which have been authenticated using these "
+"keys will be considered trusted."
+msgstr ""
+"<command>apt-key</command> ã¯ã€apt ㌠パッケージをèªè¨¼ã™ã‚‹ã®ã«ä½¿ç”¨ã™ã‚‹ã‚­ãƒ¼ã®"
+"一覧を管ç†ã™ã‚‹ã®ã«ä½¿ç”¨ã—ã¾ã™ã€‚ã“ã®ã‚­ãƒ¼ã§èªè¨¼ã•ã‚ŒãŸãƒ‘ッケージã¯ã€ä¿¡é ¼ã™ã‚‹ã«è¶³"
+"ã‚‹ã¨è¦‹ãªã›ã‚‹ã§ã—ょã†ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Note that if usage of <command>apt-key</command> is desired the additional "
+"installation of the GNU Privacy Guard suite (packaged in <package>gnupg</"
+"package>) is required. For this reason alone the programmatic usage "
+"(especially in package maintainerscripts!) is strongly discouraged. Further "
+"more the output format of all commands is undefined and can and does change "
+"whenever the underlying commands change. <command>apt-key</command> will try "
+"to detect such usage and generates warnings on stderr in these cases."
+msgstr ""
+"<command>apt-key</command> を利用ã™ã‚‹ãŸã‚ã«ã¯ GNU Privacy Guard suite "
+"(<package>gnupg</package> ã«åŽéŒ²) を追加ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã“ã¨ã«æ³¨"
+"æ„ã—ã¦ãã ã•ã„。ãã®ãŸã‚ã€ãƒ—ログラムå˜ä½“ã§ã®ç”¨é€”ã« (特ã«ãƒ‘ッケージã®ãƒ¡ãƒ³ãƒ†ãƒŠ"
+"スクリプトã§!) 使ã†ã“ã¨ã¯å…¨ã勧ã‚られã¾ã›ã‚“。ã•ã‚‰ã«ã€ã“ã®ãƒ—ログラムã®ã‚³ãƒžãƒ³ãƒ‰"
+"ã®å‡ºåŠ›å½¢å¼ã¯ã©ã‚Œã‚‚è¦å®šã•ã‚Œã¦ãŠã‚‰ãšã€æ ¹æœ¬ã¨ãªã‚‹ã‚³ãƒžãƒ³ãƒ‰ã«å¤‰æ›´ãŒã‚ã‚Œã°ã“ã¡ã‚‰ã‚‚"
+"変ã‚ã‚‹ã¨ã„ã†ã“ã¨ã«ãªã‚Šã¾ã™ã€‚<command>apt-key</command> ã¯ãã†ã„ã£ãŸä½¿ã„æ–¹ã®æ¤œ"
+"出を試ã¿ã€ãã®å ´åˆã«ã¯æ¨™æº–エラーã«è­¦å‘Šã‚’出ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml
+msgid "Supported keyring files"
+msgstr "サãƒãƒ¼ãƒˆã™ã‚‹ã‚­ãƒ¼ãƒªãƒ³ã‚°ãƒ•ã‚¡ã‚¤ãƒ«"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
+"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
+"the keybox database format introduced in newer &gpg; versions as default for "
+"keyring files. Binary keyring files intended to be used with any apt version "
+"should therefore always be created with <command>gpg --export</command>."
+msgstr ""
+"apt-key ã§ã¯æ‹¡å¼µå­ã€Œ<literal>gpg</literal>ã€ã®ä»˜ã‘られ㟠OpenPGP ã®ãƒã‚¤ãƒŠãƒªå½¢"
+"å¼ (ã„ã‚ゆる「GPG キー公開用リングã€) ã‚’åŽéŒ²ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã ã‘をサãƒãƒ¼ãƒˆã—ã¾"
+"ã™ã€‚&gpg; ã®ã‚‚ã£ã¨æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§å°Žå…¥ã•ã‚Œã¦ã‚­ãƒ¼ãƒªãƒ³ã‚°ãƒ•ã‚¡ã‚¤ãƒ«ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆ"
+"ã¨ãªã£ã¦ã„るキーボックスã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å½¢å¼ã¯ã‚µãƒãƒ¼ãƒˆã—ã¾ã›ã‚“。ãã®ãŸã‚ã€ãƒãƒ¼"
+"ジョンをå•ã‚ãš apt ã§åˆ©ç”¨ã™ã‚‹ãŸã‚ã®ãƒã‚¤ãƒŠãƒªã‚­ãƒ¼ãƒªãƒ³ã‚°ãƒ•ã‚¡ã‚¤ãƒ«ã®ä½œæˆã«ã¯å¸¸ã« "
+"<command>gpg --export</command> を使ã£ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Alternatively, if all systems which should be using the created keyring have "
+"at least apt version >= 1.4 installed, you can use the ASCII armored format "
+"with the \"<literal>asc</literal>\" extension instead which can be created "
+"with <command>gpg --armor --export</command>."
+msgstr ""
+"ã¾ãŸã€ä½œæˆã—ãŸã‚­ãƒ¼ãƒªãƒ³ã‚°ã‚’利用ã™ã‚‹ã‚·ã‚¹ãƒ†ãƒ ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã‚‹ apt ã®ãƒãƒ¼"
+"ジョンãŒå…¨ã¦ 1.4 以é™ã§ã‚ã‚Œã°ã€<command>gpg --armor --export</command> ã§ä½œæˆ"
+"ã™ã‚‹ã€æ‹¡å¼µå­ã«ã€Œ<literal>asc</literal>ã€ã‚’付ã‘られãŸä¿è­·ä»˜ãアスキー形å¼ã‚’代"
+"ã‚ã‚Šã«ä½¿ã†ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ "
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml
+msgid "Commands"
+msgstr "コマンド"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Add a new key to the list of trusted keys. The key is read from the "
+"filename given with the parameter &synopsis-param-filename; or if the "
+"filename is <literal>-</literal> from standard input."
+msgstr ""
+"信頼キーã®ãƒªã‚¹ãƒˆã«æ–°ã—ã„キーを追加ã—ã¾ã™ã€‚ã“ã®ã‚­ãƒ¼ã‚’ &synopsis-param-"
+"filename; パラメータã«ä¸ŽãˆãŸãƒ•ã‚¡ã‚¤ãƒ«åã‹ã‚‰èª­ã¿è¾¼ã¿ã¾ã™ãŒã€ãƒ•ã‚¡ã‚¤ãƒ«åã‚’ "
+"<literal>-</literal> ã¨ã™ã‚‹ã¨ã€æ¨™æº–入力ã‹ã‚‰èª­ã¿è¾¼ã¿ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"It is critical that keys added manually via <command>apt-key</command> are "
+"verified to belong to the owner of the repositories they claim to be for "
+"otherwise the &apt-secure; infrastructure is completely undermined."
+msgstr ""
+"<command>apt-key</command> を使用ã—ã¦æ‰‹å‹•ã§è¿½åŠ ã•ã‚ŒãŸã‚­ãƒ¼ã¯ã€ãƒªãƒã‚¸ãƒˆãƒªã®æ‰€æœ‰"
+"者ã«æ‰€å±žã—ã¦ã„ã‚‹ã“ã¨ãŒç¢ºèªã•ã‚Œã¦ã„ã‚‹ã“ã¨ãŒé‡è¦ã§ã™ã€‚ãã†ã§ãªã‘ã‚Œã°ã€&apt-"
+"secure; インフラãŒå®Œå…¨ã«æãªã‚ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
+"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
+"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
+"\"<literal>asc</literal>\" as file extension."
+msgstr ""
+"<emphasis>注æ„</emphasis>: ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’使ã†ä»£ã‚ã‚Šã«ã€ã‚­ãƒ¼ãƒªãƒ³ã‚°ã«è¨˜è¿°çš„ãªå"
+"å‰ (ファイルåã«ã¤ã„ã¦ã¯ &apt-conf; ファイルã¨åŒä¸€ã®è¦å‰‡ãŒé©ç”¨ã•ã‚Œã¾ã™) を付"
+"ã‘ã¦ã€ãƒ•ã‚¡ã‚¤ãƒ«ã®æ‹¡å¼µå­ã‚’「<literal>gpg</literal>ã€ã¾ãŸã¯ã€Œ<literal>asc</"
+"literal>ã€ã¨ã—㦠<filename>/etc/apt/trusted.gpg.d/</filename> ディレクトリã«"
+"直接é…ç½®ã™ã‚‹æ–¹æ³•ã‚‚ã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Remove a key from the list of trusted keys."
+msgstr "信頼キー一覧ã‹ã‚‰ã‚­ãƒ¼ã‚’削除ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Output the key &synopsis-param-keyid; to standard output."
+msgstr "キー &synopsis-param-keyid; を標準出力ã«å‡ºåŠ›ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Output all trusted keys to standard output."
+msgstr "ä¿¡é ¼ã™ã‚‹ã‚­ãƒ¼ã‚’ã™ã¹ã¦æ¨™æº–出力ã«å‡ºåŠ›ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "List trusted keys with fingerprints."
+msgstr "信頼キーã¨ãã®ãƒ•ã‚£ãƒ³ã‚¬ãƒ¼ãƒ—リントを一覧表示ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+#, fuzzy
+#| msgid ""
+#| "Pass advanced options to gpg. With <command>adv --recv-key</command> you "
+#| "can e.g. download key from keyservers directly into the the trusted set "
+#| "of keys. Note that there are <emphasis>no</emphasis> checks performed, so "
+#| "it is easy to completely undermine the &apt-secure; infrastructure if "
+#| "used without care."
+msgid ""
+"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
+"e.g. download key from keyservers directly into the trusted set of keys. "
+"Note that there are <emphasis>no</emphasis> checks performed, so it is easy "
+"to completely undermine the &apt-secure; infrastructure if used without care."
+msgstr ""
+"gpg ã«é«˜åº¦ãªã‚ªãƒ—ションを渡ã—ã¾ã™ã€‚<command>adv --recv-key</command> を使用ã—"
+"ã¦ã€ä¾‹ãˆã°ã€ã‚­ãƒ¼ã‚µãƒ¼ãƒãƒ¼ã‹ã‚‰ä¿¡é ¼ã•ã‚ŒãŸã‚­ãƒ¼ã«ç›´æŽ¥ã‚­ãƒ¼ã‚’ダウンロードã™ã‚‹ã“ã¨ãŒ"
+"ã§ãã¾ã™ã€‚ãƒã‚§ãƒƒã‚¯ãŒ<emphasis>è¡Œã‚ã‚Œãªã„</emphasis>ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。注"
+"æ„ã›ãšä½¿ç”¨ã™ã‚‹ãªã‚‰ã€å®¹æ˜“ã« &apt-secure; インフラを完全ã«å‚·ã¤ã‘ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-key.8.xml
+msgid "(deprecated)"
+msgstr "(éžæŽ¨å¥¨)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Update the local keyring with the archive keyring and remove from the local "
+"keyring the archive keys which are no longer valid. The archive keyring is "
+"shipped in the <literal>archive-keyring</literal> package of your "
+"distribution, e.g. the &keyring-package; package in &keyring-distro;."
+msgstr ""
+"ローカルキーリングをアーカイブキーリングã§æ›´æ–°ã—ã€ã‚‚ã†æœ‰åŠ¹ã§ãªããªã£ãŸã‚¢ãƒ¼ã‚«"
+"イブキーをローカルキーリングã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã€‚アーカイブキーリングã¯ã€ä½¿ç”¨ä¸­ã®"
+"ディストリビューションã«ã‚ã‚‹ <literal>archive-keyring</literal> パッケージ "
+"(例ãˆã° &keyring-distro; ã§ã¯ &keyring-package; パッケージ) ã§æä¾›ã•ã‚Œã¦ã„ã¾"
+"ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Note that a distribution does not need to and in fact should not use this "
+"command any longer and instead ship keyring files in the <filename>/etc/apt/"
+"trusted.gpg.d/</filename> directory directly as this avoids a dependency on "
+"<package>gnupg</package> and it is easier to manage keys by simply adding "
+"and removing files for maintainers and users alike."
+msgstr ""
+"ディストリビューションã§ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’使ã†å¿…è¦ã¯ãªãã€å®Ÿã®ã¨ã“ã‚ã‚‚ã¯ã‚„ã“れを"
+"使ã†ã®ã§ã¯ãªãキーリングファイルを <filename>/etc/apt/trusted.gpg</filename> "
+"ディレクトリã«ç›´æŽ¥é…ç½®ã™ã¹ãã§ã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。ãã‚Œã«ã‚ˆã£ã¦ "
+"<package>gnupg</package> ã¸ã®ä¾å­˜ã‚’回é¿ã§ãã€éµã®ç®¡ç†ã¯å˜ç´”ã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’追加ã€"
+"削除ã™ã‚‹ã ã‘ã«ãªã‚‹ãŸã‚ã€ãƒ¡ãƒ³ãƒ†ãƒŠã«ã¨ã£ã¦ã‚‚ユーザã«ã¨ã£ã¦ã‚‚åŒæ§˜ã«å®¹æ˜“ã«ãªã‚Šã¾"
+"ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Perform an update working similarly to the <command>update</command> command "
+"above, but get the archive keyring from a URI instead and validate it "
+"against a master key. This requires an installed &wget; and an APT build "
+"configured to have a server to fetch from and a master keyring to validate. "
+"APT in Debian does not support this command, relying on <command>update</"
+"command> instead, but Ubuntu's APT does."
+msgstr ""
+"上記㮠<command>update</command> コマンドã¨åŒæ§˜ã«æ›´æ–°ã—ã¾ã™ãŒã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–キー"
+"リングを URI ã‹ã‚‰å–å¾—ã—ã€ãƒžã‚¹ã‚¿ãƒ¼ã‚­ãƒ¼ã‚’用ã„ã¦æ¤œè¨¼ã—ã¾ã™ã€‚ã“ã‚Œã«ã¯ &wget; ã®ã‚¤"
+"ンストールã¨ã€ APT ã®ãƒ“ルドã«å–å¾—ã™ã‚‹ã‚µãƒ¼ãƒã¨æ¤œè¨¼ã™ã‚‹ãƒžã‚¹ã‚¿ãƒ¼ã‚­ãƒ¼ãƒªãƒ³ã‚°ãŒè¨­å®š"
+"ã•ã‚Œã¦ã„ã‚‹ã“ã¨ãŒå¿…è¦ã§ã™ã€‚Debian ã§ã® APT ã¯ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›"
+"ん。代ã‚ã‚Šã« <command>update</command> を使用ã—ã¦ãã ã•ã„。Ubuntu ã® APT ã§ã¯"
+"有効ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml
+msgid "Options"
+msgstr "オプション"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Note that options need to be defined before the commands described in the "
+"previous section."
+msgstr ""
+"å‰ç¯€ã§èª¬æ˜Žã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®å‰ã«ã€ã“ã®ã‚ªãƒ—ションを定義ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—"
+"ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"With this option it is possible to specify a particular keyring file the "
+"command should operate on. The default is that a command is executed on the "
+"<filename>trusted.gpg</filename> file as well as on all parts in the "
+"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</"
+"filename> is the primary keyring which means that e.g. new keys are added to "
+"this one."
+msgstr ""
+"ã“ã®ã‚ªãƒ—ションã§ã¯ã€ã‚³ãƒžãƒ³ãƒ‰ãŒæ“作ã™ã‚‹ã¹ã特定ã®ã‚­ãƒ¼ãƒªãƒ³ã‚°ãƒ•ã‚¡ã‚¤ãƒ«ã‚’指定ã§ã"
+"ã¾ã™ã€‚デフォルトã§ã¯ã€<filename>trusted.gpg</filename> 㨠<filename>trusted."
+"gpg.d</filename> ディレクトリã«ã‚ã‚‹ã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’用ã„ã¦ã€ã‚³ãƒžãƒ³ãƒ‰ãŒå‹•ä½œã—"
+"ã¾ã™ã€‚ã¨ã¯ã„ãˆã€<filename>trusted.gpg</filename> ãŒãƒ—ライマリキーリングã«ãªã‚Š"
+"ã¾ã™ã€‚ã¤ã¾ã‚Šæ–°ã—ã„キーã¯ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã«è¿½åŠ ã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid "&apt-get;, &apt-secure;"
+msgstr "&apt-get;, &apt-secure;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-mark.8.xml
+msgid "show, set and unset various settings for a package"
+msgstr "パッケージã®å„種設定ã®è¡¨ç¤ºã€è¨­å®šã€è¨­å®šè§£é™¤"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"<command>apt-mark</command> can be used as a unified front-end to set "
+"various settings for a package, such as marking a package as being "
+"automatically/manually installed or changing <command>dpkg</command> "
+"selections such as hold, install, deinstall and purge which are respected e."
+"g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
+"command>."
+msgstr ""
+"çµ±åˆãƒ•ãƒ­ãƒ³ãƒˆã‚¨ãƒ³ãƒ‰ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚例ãˆã°ã€ãƒ‘ッケージを自動/手動"
+"インストール済ã¿ã¨ãƒžãƒ¼ã‚¯ã—ãŸã‚Šã€<command>dpkg</command> ã®é¸æŠžã‚’ä¿ç•™ã€ã‚¤ãƒ³ã‚¹"
+"トールã€å‰Šé™¤ã‚„完全削除ã«å¤‰æ›´ã§ãã¾ã™ã€‚例ãˆã° <command>apt-get dselect-"
+"upgrade</command> ã‚„ <command>aptitude</command> ã«ã‚ˆã‚Šãƒªã‚¹ãƒšã‚¯ãƒˆã•ã‚Œã¦ã„ã¾"
+"ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Automatically and Manually Installed Packages"
+msgstr "自動ãŠã‚ˆã³æ‰‹å‹•ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ãƒ‘ッケージ"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"When you request that a package is installed, and as a result other packages "
+"are installed to satisfy its dependencies, the dependencies are marked as "
+"being automatically installed, while the package you installed explicitly is "
+"marked as manually installed. Once an automatically installed package is no "
+"longer depended on by any manually installed package it is considered no "
+"longer needed and e.g. <command>apt-get</command> or <command>aptitude</"
+"command> will at least suggest removing them."
+msgstr ""
+"パッケージをインストールã™ã‚‹ã¨è¦æ±‚ã—ã€ãã®çµæžœã€åˆ¥ã®ãƒ‘ッケージãŒä¾å­˜é–¢ä¿‚を満"
+"ãŸã™ãŸã‚ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚ŒãŸå ´åˆã€ä¾å­˜é–¢ä¿‚ã«è‡ªå‹•ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã¨ãƒžãƒ¼ã‚¯ã•ã‚Œ"
+"ã¾ã™ã€‚ã„ã£ãŸã‚“自動的ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚ŒãŸãƒ‘ッケージã¯ã€æ‰‹å‹•ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸ"
+"パッケージã«ä¾å­˜ã•ã‚Œãªããªã‚‹ã¨ã€ãã®ãƒ‘ッケージã¯ã€ä¾‹ãˆã° <command>apt-get</"
+"command> ã‚„ <command>aptitude</command> ã«ã‚ˆã‚Šå‰Šé™¤ãŒæ案ã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>auto</literal> is used to mark a package as being automatically "
+"installed, which will cause the package to be removed when no more manually "
+"installed packages depend on this package."
+msgstr ""
+"<literal>auto</literal> ã¯ã€ãƒ‘ッケージを自動インストール済ã¿ã¨ãƒžãƒ¼ã‚¯ã—ã¾ã™ã€‚"
+"ã“ã®ãƒ‘ッケージã«ä¾å­˜ã™ã‚‹æ‰‹å‹•ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚ŒãŸãƒ‘ッケージãŒãªããªã‚‹ã¨ã€ã“ã®"
+"パッケージを削除ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>manual</literal> is used to mark a package as being manually "
+"installed, which will prevent the package from being automatically removed "
+"if no other packages depend on it."
+msgstr ""
+"<literal>manual</literal> ã¯ã€ãƒ‘ッケージを手動インストール済ã¿ã¨ãƒžãƒ¼ã‚¯ã—ã¾"
+"ã™ã€‚ã“ã®ãƒ‘ッケージã«ä¾å­˜ã™ã‚‹ã»ã‹ã®ãƒ‘ッケージãŒãªããªã£ã¦ã‚‚ã€ã“ã®ãƒ‘ッケージを"
+"自動的ã«å‰Šé™¤ã™ã‚‹ã®ã‚’防ãŽã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showauto</literal> is used to print a list of automatically "
+"installed packages with each package on a new line. All automatically "
+"installed packages will be listed if no package is given. If packages are "
+"given only those which are automatically installed will be shown."
+msgstr ""
+"<literal>showauto</literal> ã¯ã€è‡ªå‹•çš„ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚ŒãŸãƒ‘ッケージをã€ãƒ‘ッ"
+"ケージã”ã¨ã«æ”¹è¡Œã—ã¦è¡¨ç¤ºã—ã¾ã™ã€‚パッケージを与ãˆãªã‘ã‚Œã°ã€è‡ªå‹•çš„ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼"
+"ルã•ã‚ŒãŸãƒ‘ッケージをã™ã¹ã¦ä¸€è¦§è¡¨ç¤ºã—ã¾ã™ã€‚パッケージを与ãˆãŸå ´åˆã¯ã€ãã®ãƒ‘ッ"
+"ケージãŒè‡ªå‹•çš„ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã‚‹å ´åˆã«ã®ã¿ã€è¡¨ç¤ºã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showmanual</literal> can be used in the same way as "
+"<literal>showauto</literal> except that it will print a list of manually "
+"installed packages instead."
+msgstr ""
+"<literal>showmanual</literal> 㯠<literal>showauto</literal> ã¨åŒæ§˜ã«ä½¿ç”¨ã§ã"
+"ã¾ã™ãŒã€æ‰‹å‹•ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚ŒãŸãƒ‘ッケージã®ä¸€è¦§ã‚’表示ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"Read/Write package stats from the filename given with the parameter "
+"&synopsis-param-filename; instead of from the default location, which is "
+"<filename>extended_status</filename> in the directory defined by the "
+"Configuration Item: <literal>Dir::State</literal>."
+msgstr ""
+"デフォルトã®å ´æ‰€ (設定項目: <literal>Dir::State</literal> ã§å®šç¾©ã—ãŸãƒ‡ã‚£ãƒ¬ã‚¯"
+"トリ㮠<filename>extended_status</filename>) ã§ã¯ãªãã€ãƒ‘ラメータ &synopsis-"
+"param-filename; ã‹ã‚‰ãƒ‘ッケージã®çŠ¶æ…‹ã‚’読ã¿æ›¸ãã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Prevent Changes for a Package"
+msgstr "パッケージã®å¤‰æ›´ã‚’防ã"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>hold</literal> is used to mark a package as held back, which will "
+"prevent the package from being automatically installed, upgraded or removed."
+msgstr ""
+"<literal>hold</literal> ã¯ã€ãƒ‘ッケージをä¿ç•™ã¨ã—ã¦ãƒžãƒ¼ã‚¯ã—ã¾ã™ã€‚パッケージを"
+"自動的ãªã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã€ã‚¢ãƒƒãƒ—グレードã€å‰Šé™¤ã‹ã‚‰é˜²ãŽã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>unhold</literal> is used to cancel a previously set hold on a "
+"package to allow all actions again."
+msgstr ""
+"<literal>unhold</literal> ã¯ã€ä»¥å‰ä¿ç•™ã—ãŸãƒ‘ッケージをã€ã¾ãŸæ“作ã§ãるよã†"
+"キャンセルã™ã‚‹ã®ã«ä½¿ç”¨ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showhold</literal> is used to print a list of packages on hold in "
+"the same way as for the other show commands."
+msgstr ""
+"<literal>showhold</literal> ã¯ã€ä»–ã® show コマンドã¨åŒæ§˜ã«ã€ä¿ç•™ã•ã‚Œã¦ã„ã‚‹"
+"パッケージを出力ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Schedule Packages for Install, Remove and Purge"
+msgstr "パッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã€å‰Šé™¤ã€å®Œå…¨å‰Šé™¤ã‚’スケジュールã™ã‚‹"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"Some front-ends like <command>apt-get dselect-upgrade</command> can be used "
+"to apply previously scheduled changes to the install state of packages. Such "
+"changes can be scheduled with the <option>install</option>, <option>remove</"
+"option> (also known as <option>deinstall</option>) and <option>purge</"
+"option> commands. Packages with a specific selection can be displayed with "
+"<option>showinstall</option>, <option>showremove</option> and "
+"<option>showpurge</option> respectively. More information about these so "
+"called dpkg selections can be found in &dpkg;."
+msgstr ""
+"<command>apt-get dselect-upgrade</command> ã®ã‚ˆã†ãªã„ãã¤ã‹ã®ãƒ•ãƒ­ãƒ³ãƒˆã‚¨ãƒ³ãƒ‰"
+"ã¯ã€ãƒ‘ッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«çŠ¶æ…‹ã®äº‹å‰ã®ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«å¤‰æ›´ã‚’é©ç”¨ã™ã‚‹ãŸã‚ã«ä½¿ç”¨"
+"ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã®ã‚ˆã†ãªå¤‰æ›´ã¯ã€<option>install</option>ã€"
+"<option>remove</option> (<option>deinstall</option> ã¨ã—ã¦ã‚‚知られã¦ã„ã¾ã™) "
+"ãŠã‚ˆã³ <option>purge</option> オプションã§ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚特"
+"定ã®ãƒ‘ッケージã®é¸æŠžã¯ã€ãã‚Œãžã‚Œ <option>showinstall</option>ã€"
+"<option>showremove</option> ãŠã‚ˆã³ <option>showpurge</option> ã§è¡¨ç¤ºã™ã‚‹ã“ã¨"
+"ãŒã§ãã¾ã™ã€‚dpkg é¸æŠžã¨ã‚‚呼ã¶ã“れらã®è©³ç´°ã«ã¤ã„ã¦ã¯ã€dpkg ã§è¦‹ã¤ã‘ã‚‹ã“ã¨ãŒã§"
+"ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"<command>apt-mark</command> returns zero on normal operation, non-zero on "
+"error."
+msgstr ""
+"<command>apt-mark</command> ã¯æ­£å¸¸çµ‚了時㫠0 ã‚’è¿”ã—ã¾ã™ã€‚エラー時ã«ã¯ 0 以外"
+"ã‚’è¿”ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-secure.8.xml
+msgid "Archive authentication support for APT"
+msgstr "APT アーカイブèªè¨¼ã‚µãƒãƒ¼ãƒˆ"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Starting with version 0.6, <command>APT</command> contains code that does "
+"signature checking of the Release file for all repositories. This ensures "
+"that data like packages in the archive can't be modified by people who have "
+"no access to the Release file signing key. Starting with version 1.1 "
+"<command>APT</command> requires repositories to provide recent "
+"authentication information for unimpeded usage of the repository."
+msgstr ""
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 0.6 よりã€<command>APT</command> ã¯å…¨ãƒªãƒã‚¸ãƒˆãƒªã«å¯¾ã™ã‚‹ Release "
+"ファイルã®ç½²åãƒã‚§ãƒƒã‚¯ã‚³ãƒ¼ãƒ‰ã‚’åŽéŒ²ã—ã¦ã„ã¾ã™ã€‚ã“ã‚Œã«ã‚ˆã‚Šã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã®ãƒ‘ッ"
+"ケージã®ã‚ˆã†ãªãƒ‡ãƒ¼ã‚¿ãŒã€Release ファイル署åキーã«ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„人ã«ã‚ˆã£ã¦"
+"変更ã•ã‚Œã¦ã„ãªã„ã“ã¨ã‚’ä¿è¨¼ã—ã¾ã™ã€‚ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.1 ã‹ã‚‰ã¯ã€<command>APT</"
+"command> ã¯ãƒªãƒã‚¸ãƒˆãƒªã«å¯¾ã—ã€ãã®ãƒªãƒã‚¸ãƒˆãƒªãŒæœ€è¿‘é…滞ãªã使ãˆã¦ã„ã‚‹ã“ã¨ã‚’証明"
+"ã™ã‚‹æƒ…å ±ã®æ供をè¦æ±‚ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"If an archive has an unsigned Release file or no Release file at all current "
+"APT versions will refuse to download data from them by default in "
+"<command>update</command> operations and even if forced to download front-"
+"ends like &apt-get; will require explicit confirmation if an installation "
+"request includes a package from such an unauthenticated archive."
+msgstr ""
+"アーカイブã«ç½²åã•ã‚Œã¦ã„ãªã„ Release ファイルãŒã‚ã‚‹ã€ã¾ãŸã¯ Release ファイル"
+"ãŒå…¨ããªã„å ´åˆã¯ã€ç¾åœ¨ã® APT ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯ <command>update</command> æ“作ã«ã‚ˆ"
+"ã‚‹ãã“ã‹ã‚‰ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’デフォルトã§æ‹’å¦ã—ã€ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’強制ã—ãŸå ´åˆã§"
+"ã‚‚ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«è¦æ±‚ã«è¨¼æ˜Žã•ã‚Œã¦ã„ãªã„アーカイブã‹ã‚‰ã®ãƒ‘ッケージãŒå«ã¾ã‚Œã‚‹å ´"
+"åˆã«ã¯ <command>apt-get</command> ã®ã‚ˆã†ãªãƒ•ãƒ­ãƒ³ãƒˆã‚¨ãƒ³ãƒ‰ã¯æ˜Žç¤ºçš„ãªç¢ºèªã‚’è¦æ±‚"
+"ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"As a temporary exception &apt-get; (not &apt;!) raises warnings only if it "
+"encounters unauthenticated archives to give a slightly longer grace period "
+"on this backward compatibility effecting change. This exception will be "
+"removed in future releases and you can opt-out of this grace period by "
+"setting the configuration option <option>Binary::apt-get::Acquire::"
+"AllowInsecureRepositories</option> to <literal>false</literal> or <option>--"
+"no-allow-insecure-repositories</option> on the command line."
+msgstr ""
+"一時的ãªä¾‹å¤–ã¨ã—㦠&apt-get; (not &apt;!) ã¯ã“ã®å¾Œæ–¹äº’æ›æ€§ã«å½±éŸ¿ã®ã‚る変更ã«"
+"対応ã™ã‚‹ãŸã‚ã®å°‘ã—ã°ã‹ã‚Šé•·ã„猶予期間ã¨ã—ã¦ã€è¨¼æ˜Žã•ã‚Œã¦ã„ãªã„アーカイブã«ã¤ã„"
+"ã¦ã®ã¿è­¦å‘Šã—ã¾ã™ã€‚ã“ã®ä¾‹å¤–ã¯å°†æ¥ã®ãƒªãƒªãƒ¼ã‚¹ã§ã¯å‰Šé™¤ã•ã‚Œã€è¨­å®šã‚ªãƒ—ション "
+"<option>Binary::apt-get::Acquire::AllowInsecureRepositories</option> ã« "
+"<literal>false</literal> を設定ã™ã‚‹ã‹ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã§ <option>--no-allow-"
+"insecure-repositories</option> を指定ã™ã‚‹ã“ã¨ã§ã“ã®çŒ¶äºˆæœŸé–“を無効化ã™ã‚‹ã“ã¨ã‚‚"
+"ã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"You can force all APT clients to raise only warnings by setting the "
+"configuration option <option>Acquire::AllowInsecureRepositories</option> to "
+"<literal>true</literal>. Individual repositories can also be allowed to be "
+"insecure via the &sources-list; option <literal>allow-insecure=yes</"
+"literal>. Note that insecure repositories are strongly discouraged and all "
+"options to force apt to continue supporting them will eventually be "
+"removed. Users also have the <option>Trusted</option> option available to "
+"disable even the warnings, but be sure to understand the implications as "
+"detailed in &sources-list;."
+msgstr ""
+"設定オプション <option>Acquire::AllowInsecureRepositories</option> 㫠"
+"<literal>true</literal> を設定ã™ã‚‹ã¨ã©ã® APT クライアントã§ã‚‚警告ã ã‘を出ã™ã‚ˆ"
+"ã†ã«å¼·åˆ¶ã§ãã¾ã™ã€‚&sources-list; オプション <literal>allow-insecure=yes</"
+"literal> を使ã†ã¨å€‹ã€…ã®ãƒªãƒã‚¸ãƒˆãƒªã«ã¤ã„ã¦å®‰å…¨ã§ãªã„ã“ã¨ã‚’許å¯ã™ã‚‹ã‚ˆã†ã«ã‚‚ã§ã"
+"ã¾ã™ã€‚安全ã§ãªã„リãƒã‚¸ãƒˆãƒªã¯å…¨ã勧ã‚られるもã®ã§ã¯ãªãã€apt ã«ãã®ã‚µãƒãƒ¼ãƒˆç¶™"
+"続を強制ã•ã›ã‚‹ã‚ªãƒ—ションã¯å…¨ã¦æœ€çµ‚çš„ã«ã¯å‰Šé™¤ã•ã‚Œã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。"
+"ユーザå´ã§ã¯è­¦å‘Šã«ã¤ã„ã¦ã‚‚無効化ã™ã‚‹ <option>Trusted</option> オプションを利"
+"用ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ãŒã€&sources-list; ã§è¿°ã¹ã¦ã„るよã†ã«ã€ãã®å½±éŸ¿ã‚’å¿…ãšç†è§£"
+"ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"A repository which previously was authenticated but would loose this state "
+"in an <command>update</command> operation raises an error in all APT clients "
+"irrespective of the option to allow or forbid usage of insecure "
+"repositories. The error can be overcome by additionally setting "
+"<option>Acquire::AllowDowngradeToInsecureRepositories</option> to "
+"<literal>true</literal> or for Individual repositories with the &sources-"
+"list; option <literal>allow-downgrade-to-insecure=yes</literal>."
+msgstr ""
+"以å‰ã¯è¨¼æ˜Žã•ã‚Œã¦ã„ãŸã‘ã‚Œã©ã‚‚ <command>update</command> æ“作ã®çµæžœãã®åŠ¹åŠ›ãŒãª"
+"ããªã£ãŸãƒªãƒã‚¸ãƒˆãƒªã«ã¤ã„ã¦ã¯ã€å®‰å…¨ã§ãªã„リãƒã‚¸ãƒˆãƒªã®åˆ©ç”¨ã‚’許å¯ã‚ã‚‹ã„ã¯ç¦æ­¢ã™"
+"るオプションã«é–¢ã‚らãšã€ã©ã® APT クライアントã§ã‚‚エラーを出ã—ã¾ã™ã€‚追加㧠"
+"<option>Acquire::AllowDowngradeToInsecureRepositories</option> ã« "
+"<literal>true</literal> をセットã™ã‚‹ã‹ &sources-list; ã®ã‚ªãƒ—ション "
+"<literal>allow-downgrade-to-insecure=yes</literal> を個々ã®ãƒªãƒã‚¸ãƒˆãƒªã«è¨­å®šã™"
+"ã‚‹ã“ã¨ã§ã“ã®ã‚¨ãƒ©ãƒ¼ã‚’無視ã•ã›ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note: All APT-based package management front-ends like &apt-get;, &aptitude; "
+"and &synaptic; support this authentication feature, so this manpage uses "
+"<literal>APT</literal> to refer to them all for simplicity only."
+msgstr ""
+"注æ„: &apt-get;ã€&aptitude;ã€&synaptic; ã¨ã„ã£ãŸ APT ベースã®ãƒ‘ッケージ管ç†ãƒ•"
+"ロントエンドã¯å…¨ã¦ã“ã®æ–°ã—ã„証明機能をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ã“ã® man ページã§ã¯"
+"å˜ç´”化ã™ã‚‹ãŸã‚ã ã‘ã«ã€ãã®å…¨ã¦ã‚’å‚ç…§ã™ã‚‹ã®ã« <literal>APT</literal> を使ã£ã¦"
+"ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Trusted Repositories"
+msgstr "信頼済リãƒã‚¸ãƒˆãƒª"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"The chain of trust from an APT archive to the end user is made up of several "
+"steps. <command>apt-secure</command> is the last step in this chain; "
+"trusting an archive does not mean that you trust its packages not to contain "
+"malicious code, but means that you trust the archive maintainer. It's the "
+"archive maintainer's responsibility to ensure that the archive's integrity "
+"is preserved."
+msgstr ""
+"APT アーカイブã‹ã‚‰ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã¾ã§ã®ä¿¡é ¼ã®è¼ªã¯ã€ã„ãã¤ã‹ã®ã‚¹ãƒ†ãƒƒãƒ—ã§æ§‹æˆã•ã‚Œ"
+"ã¦ã„ã¾ã™ã€‚<command>apt-secure</command> ã¯ã€ã“ã®è¼ªã®æœ€å¾Œã®ã‚¹ãƒ†ãƒƒãƒ—ã§ã€ã€Œã‚¢ãƒ¼"
+"カイブを信頼ã™ã‚‹ã€ã¨ã„ã†ã“ã¨ã¯ã€ãƒ‘ッケージã«æ‚ªæ„ã®ã‚るコードãŒå«ã¾ã‚Œã¦ã„ãªã„"
+"ã“ã¨ã‚’ä¿¡é ¼ã™ã‚‹ã¨ã„ã†ã“ã¨ã§ã¯ãªãã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–メンテナを信頼ã™ã‚‹ã¨ã„ã†ã“ã¨ã‚’æ„"
+"味ã—ã¾ã™ã€‚ã“ã‚Œã¯ã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã®å®Œå…¨æ€§ãŒä¿ãŸã‚Œã¦ã„ã‚‹ã“ã¨ã‚’ä¿è¨¼ã™ã‚‹ã®ã¯ã€ã‚¢ãƒ¼ã‚«"
+"イブメンテナã®è²¬ä»»ã ã¨ã„ã†ã“ã¨ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"apt-secure does not review signatures at a package level. If you require "
+"tools to do this you should look at <command>debsig-verify</command> and "
+"<command>debsign</command> (provided in the debsig-verify and devscripts "
+"packages respectively)."
+msgstr ""
+"apt-secure ã¯ãƒ‘ッケージレベルã®ç½²å検証ã¯è¡Œã„ã¾ã›ã‚“。ãã®ã‚ˆã†ãªãƒ„ールãŒå¿…è¦ãª"
+"å ´åˆã¯ã€<command>debsig-verify</command> ã‚„ <command>debsign</command> "
+"(debsig-verify パッケージ㨠devscripts パッケージã§ãã‚Œãžã‚Œæä¾›ã•ã‚Œã¦ã„ã¾ã™) "
+"を確èªã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"The chain of trust in Debian starts (e.g.) when a maintainer uploads a new "
+"package or a new version of a package to the Debian archive. In order to "
+"become effective, this upload needs to be signed by a key contained in one "
+"of the Debian package maintainer keyrings (available in the debian-keyring "
+"package). Maintainers' keys are signed by other maintainers following pre-"
+"established procedures to ensure the identity of the key holder. Similar "
+"procedures exist in all Debian-based distributions."
+msgstr ""
+"Debian ã«ãŠã‘ã‚‹ä¿¡é ¼ã®è¼ªã¯ã€(例ãˆã°) æ–°ã—ã„パッケージやパッケージã®æ–°ãƒãƒ¼ã‚¸ãƒ§"
+"ンをã€ãƒ¡ãƒ³ãƒ†ãƒŠãŒ Debian アーカイブã«ã‚¢ãƒƒãƒ—ロードã™ã‚‹ã“ã¨ã‹ã‚‰å§‹ã¾ã‚Šã¾ã™ã€‚ã“ã‚Œ"
+"ãŒæœ‰åŠ¹ã«ãªã‚‹ã«ã¯ã€ã‚¢ãƒƒãƒ—ロードã®éš›ã«ã€Debian メンテナキーリング (debian-"
+"keyring パッケージã«åŽéŒ²) ã«ã‚るメンテナã®ã‚­ãƒ¼ã§ç½²åã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚メン"
+"テナã®ã‚­ãƒ¼ã¯ã€ã‚­ãƒ¼ã®æ‰€æœ‰è€…ã® ID を確ä¿ã™ã‚‹ãŸã‚ã€äº‹å‰ã«ç¢ºç«‹ã—ãŸæ‰‹ç¶šãã®å¾Œã§ã€"
+"ä»–ã®ãƒ¡ãƒ³ãƒ†ãƒŠã«ç½²åã•ã‚Œã¦ã„ã¾ã™ã€‚åŒæ§˜ã®æ‰‹é †ã¯ã€ã™ã¹ã¦ã® Debian ベースã®ãƒ‡ã‚£ã‚¹"
+"トリビューションã«å­˜åœ¨ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Once the uploaded package is verified and included in the archive, the "
+"maintainer signature is stripped off, and checksums of the package are "
+"computed and put in the Packages file. The checksums of all of the Packages "
+"files are then computed and put into the Release file. The Release file is "
+"then signed by the archive key for this &keyring-distro; release, and "
+"distributed alongside the packages and the Packages files on &keyring-"
+"distro; mirrors. The keys are in the &keyring-distro; archive keyring "
+"available in the &keyring-package; package."
+msgstr ""
+"アップロードã•ã‚ŒãŸãƒ‘ッケージãŒæ¤œè¨¼ã•ã‚Œã¦ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã«æ ¼ç´ã•ã‚Œã‚‹ã¨ã€ãƒ¡ãƒ³ãƒ†ãƒŠã®"
+"ç½²åã‚’å–り外ã—ã€ãƒ‘ッケージã®ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã‚’計算ã—ã¦ã€Packages ファイルã«æ ¼ç´ã—"
+"ã¾ã™ã€‚ãã®å¾Œã€å…¨ Packages ファイルã®ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã‚’計算ã—ã¦ã€Release ファイル"
+"ã«æ ¼ç´ã—ã¾ã™ã€‚Release ファイルã¯ã€ãã® &keyring-distro; リリースã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–"
+"キーã§ç½²åã•ã‚Œã€&keyring-distro; ミラーサイトã§ãƒ‘ッケージや Packages ファイル"
+"ã¨ã¨ã‚‚ã«é…布ã•ã‚Œã¾ã™ã€‚ã“ã®ã‚­ãƒ¼ã¯ã€<package>debian-archive-keyring</package> "
+"パッケージã«åŽéŒ²ã•ã‚Œã¦ã„ã‚‹ã€&keyring-distro; アーカイブキーリングã«å«ã¾ã‚Œã¾"
+"ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"End users can check the signature of the Release file, extract a checksum of "
+"a package from it and compare it with the checksum of the package they "
+"downloaded by hand - or rely on APT doing this automatically."
+msgstr ""
+"エンドユーザã¯èª°ã§ã‚‚ã€Release ファイルã®ç½²åã‚’ãƒã‚§ãƒƒã‚¯ã—ã€ãƒ‘ッケージã®ãƒã‚§ãƒƒ"
+"クサムを抽出ã—ã¦ã€æ‰‹ã§ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ãŸãƒ‘ッケージã®ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã¨æ¯”較ã§ãã¾"
+"ã™ã€‚ã¾ãŸã€APT ãŒè‡ªå‹•çš„ã«è¡Œã†ã®ã«ä»»ã›ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Notice that this is distinct from checking signatures on a per package "
+"basis. It is designed to prevent two possible attacks:"
+msgstr ""
+"以上ã¯ã€ãƒ‘ッケージã”ã¨ã®ç½²åãƒã‚§ãƒƒã‚¯ã¨ã¯é•ã†ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。以下ã®ã‚ˆ"
+"ã†ã«è€ƒãˆã‚‰ã‚Œã‚‹ 2 種類ã®æ”»æ’ƒã‚’防ãよã†è¨­è¨ˆã•ã‚Œã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<literal>Network \"man in the middle\" attacks</literal>. Without signature "
+"checking, malicious agents can introduce themselves into the package "
+"download process and provide malicious software either by controlling a "
+"network element (router, switch, etc.) or by redirecting traffic to a rogue "
+"server (through ARP or DNS spoofing attacks)."
+msgstr ""
+"<literal>ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ä¸­é–“者攻撃</literal>。署åã‚’ãƒã‚§ãƒƒã‚¯ã—ãªã„ã¨ã€æ‚ªæ„ã‚ã‚‹"
+"エージェントãŒãƒ‘ッケージダウンロードプロセスã«å‰²ã‚Šè¾¼ã‚“ã ã‚Šã€ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯æ§‹æˆ"
+"è¦ç´  (ルータã€ã‚¹ã‚¤ãƒƒãƒãªã©) ã®åˆ¶å¾¡ã‚„ã€æ‚ªæ¼¢ã‚µãƒ¼ãƒã¸ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒˆãƒ©ãƒ•ã‚£ãƒƒã‚¯"
+"ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆãªã© (ARP スプーフィング攻撃や DNS スプーフィング攻撃) ã§ã€æ‚ªæ„"
+"ã‚るソフトウェアを掴ã¾ã•ã‚ŒãŸã‚Šã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<literal>Mirror network compromise</literal>. Without signature checking, a "
+"malicious agent can compromise a mirror host and modify the files in it to "
+"propagate malicious software to all users downloading packages from that "
+"host."
+msgstr ""
+"<literal>ミラーãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯æ„ŸæŸ“</literal>。署åã‚’ãƒã‚§ãƒƒã‚¯ã—ãªã„ã¨ã€æ‚ªæ„ã‚ã‚‹"
+"エージェントãŒãƒŸãƒ©ãƒ¼ãƒ›ã‚¹ãƒˆã«æ„ŸæŸ“ã—ã€ã“ã®ãƒ›ã‚¹ãƒˆã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ãŸãƒ¦ãƒ¼ã‚¶ã™ã¹"
+"ã¦ã«ã€æ‚ªæ„ã‚るソフトウェアãŒä¼æ’­ã™ã‚‹ã‚ˆã†ã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’変更ã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"However, it does not defend against a compromise of the master server itself "
+"(which signs the packages) or against a compromise of the key used to sign "
+"the Release files. In any case, this mechanism can complement a per-package "
+"signature."
+msgstr ""
+"ã—ã‹ã—ã“ã‚Œã¯ã€(パッケージã«ç½²åã™ã‚‹) マスターサーãƒè‡ªä½“ã®ä¾µå®³ã‚„ã€Release ファ"
+"イルã«ç½²åã™ã‚‹ã®ã«ä½¿ç”¨ã—ãŸã‚­ãƒ¼ã®æ¼æ´©ã‚’防ã’ã¾ã›ã‚“。ã„ãšã‚Œã«ã›ã‚ˆã€ã“ã®æ©Ÿæ§‹ã¯"
+"パッケージã”ã¨ã®ç½²åを補完ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "User Configuration"
+msgstr "ユーザ設定"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"<command>apt-key</command> is the program that manages the list of keys used "
+"by APT to trust repositories. It can be used to add or remove keys as well "
+"as list the trusted keys. Limiting which key(s) are able to sign which "
+"archive is possible via the <option>Signed-By</option> in &sources-list;."
+msgstr ""
+"<command>apt-key</command> ã¯ã€ãƒªãƒã‚¸ãƒˆãƒªã‚’ä¿¡é ¼ã™ã‚‹ãŸã‚ã« APT ãŒä½¿ç”¨ã™ã‚‹ã‚­ãƒ¼"
+"リストを管ç†ã™ã‚‹ãƒ—ログラムã§ã™ã€‚ä¿¡é ¼ã•ã‚ŒãŸã‚­ãƒ¼ã®ãƒªã‚¹ãƒˆã«ã‚­ãƒ¼ã‚’追加ã¾ãŸã¯å‰Šé™¤"
+"ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚キーãŒç½²åã™ã‚‹ã“ã¨ãŒã§ãるアーカイブã¯ã€"
+"&sources-list; 中㮠<option>Signed-By</option> を介ã—ã¦åˆ¶é™å¯èƒ½ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so fiddling with "
+"<command>apt-key</command> is only needed if third-party repositories are "
+"added."
+msgstr ""
+"デフォルトã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã§ã¯ã€ã™ã§ã«ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ãƒªãƒã‚¸ãƒˆãƒªã‹ã‚‰ã‚»ã‚­ãƒ¥ã‚¢ã«ãƒ‘ッ"
+"ケージをå–å¾—ã™ã‚‹ãŸã‚ã«ã™ã¹ã¦ã®ã‚­ãƒ¼ãŒå«ã¾ã‚Œã¦ã„ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。ãã®"
+"ãŸã‚ã€ã‚µãƒ¼ãƒ‰ãƒ‘ーティã®ãƒªãƒã‚¸ãƒˆãƒªã‚’追加ã—ã¦ã„ã‚‹å ´åˆã¯ <command>apt-key</"
+"command> ã§æ“作ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"In order to add a new key you need to first download it (you should make "
+"sure you are using a trusted communication channel when retrieving it), add "
+"it with <command>apt-key</command> and then run <command>apt-get update</"
+"command> so that apt can download and verify the <filename>InRelease</"
+"filename> or <filename>Release.gpg</filename> files from the archives you "
+"have configured."
+msgstr ""
+"æ–°ã—ã„キーを追加ã™ã‚‹ãŸã‚ã«ã¯ã€ã¾ãšã‚­ãƒ¼ã‚’ダウンロードã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ (å–å¾—"
+"ã™ã‚‹éš›ã«ã¯ã€ä¿¡é ¼ã§ãる通信ãƒãƒ£ãƒãƒ«ã‚’使用ã™ã‚‹ã‚ˆã†ã€ç‰¹ã«ç•™æ„ã—ã¦ãã ã•ã„)。å–å¾—"
+"ã—ãŸã‚­ãƒ¼ã‚’ã€<command>apt-key</command> ã§è¿½åŠ ã—ã€<command>apt-get update</"
+"command> を実行ã—ã¦ãã ã•ã„。以上ã«ã‚ˆã‚Šã€apt ã¯è¨­å®šæ¸ˆã¿ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã‹ã‚‰ã€"
+"<filename>InRelease</filename> ファイルや <filename>Release.gpg</filename> "
+"ファイルをダウンロード・検証ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Archive Configuration"
+msgstr "アーカイブ設定"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"If you want to provide archive signatures in an archive under your "
+"maintenance you have to:"
+msgstr ""
+"ã‚ãªãŸãŒãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹ã—ã¦ã„るアーカイブã§ã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ç½²åã‚’æä¾›ã—ãŸã„å ´åˆã€ä»¥"
+"下ã®ã‚ˆã†ã«ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Create a toplevel Release file</emphasis>, if it does not exist "
+"already. You can do this by running <command>apt-ftparchive release</"
+"command> (provided in apt-utils)."
+msgstr ""
+"æ—¢ã«å­˜åœ¨ã—ã¦ã„ã‚‹ã®ã§ãªã‘ã‚Œã°ã€<emphasis>æœ€ä¸Šä½ Release ファイルを作æˆã—ã¦ãã "
+"ã•ã„</emphasis>。<command>apt-ftparchive release</command> (apt-utils ã§æ"
+"ä¾›) を実行ã™ã‚‹ã¨ã€ä½œæˆã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --"
+"clearsign -o InRelease Release</command> and <command>gpg -abs -o Release."
+"gpg Release</command>."
+msgstr ""
+"<emphasis>ç½²å</emphasis>ã—ã¾ã™ã€‚<command>gpg --clearsign -o InRelease "
+"Release</command> や <command>gpg -abs -o Release.gpg Release</command> を実"
+"è¡Œã—ã¦ã€ç½²åã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Publish the key fingerprint</emphasis>, so that your users will "
+"know what key they need to import in order to authenticate the files in the "
+"archive. It is best to ship your key in its own keyring package like "
+"&keyring-distro; does with &keyring-package; to be able to distribute "
+"updates and key transitions automatically later."
+msgstr ""
+"<emphasis>キーã®ãƒ•ã‚£ãƒ³ã‚¬ãƒ¼ãƒ—リントを公開</emphasis>ã—ã¾ã™ã€‚ã“ã‚Œã«ã‚ˆã‚Šã€ãƒ¦ãƒ¼ã‚¶"
+"ã¯ã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–内ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’èªè¨¼ã™ã‚‹ãŸã‚ã«ã‚¤ãƒ³ãƒãƒ¼ãƒˆã™ã‚‹å¿…è¦ãŒã‚るキーを知る"
+"ã§ã—ょã†ã€‚ã“ã‚Œã¯ã€ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューションã®ã‚¢ãƒƒãƒ—デートã¨ã‚­ãƒ¼ã®æ›´æ–°ã‚’後ã§è‡ªå‹•"
+"çš„ã«è¡Œã†ã“ã¨ãŒã§ãã‚‹ &keyring-package; を実行ã™ã‚‹ &keyring-distro; ã®ã‚ˆã†ãªç‹¬"
+"自ã®ã‚­ãƒ¼ãƒªãƒ³ã‚°ãƒ‘ッケージã§éµã‚’公開ã™ã‚‹ã®ãŒæœ€å–„ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Provide instructions on how to add your archive and key</"
+"emphasis>. If your users can't acquire your key securely the chain of trust "
+"described above is broken. How you can help users add your key depends on "
+"your archive and target audience ranging from having your keyring package "
+"included in another archive users already have configured (like the default "
+"repositories of their distribution) to leveraging the web of trust."
+msgstr ""
+"<emphasis>アーカイブã¨ã‚­ãƒ¼ã‚’追加ã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦èª¬æ˜Žã—ã¾ã™</emphasis>。ユーザ"
+"ãŒã‚»ã‚­ãƒ¥ã‚¢ã«ã‚­ãƒ¼ã‚’å–å¾—ã§ããªã„å ´åˆã¯ã€ä¸Šè¿°ã®ä¿¡é ¼ã®è¼ªãŒå£Šã‚Œã¦ã„ã¾ã™ã€‚ユーザã®"
+"キー追加を助ã‘ã‚‹ã“ã¨ãŒã§ãる方法ã¯ã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã¨ã™ã§ã«ä¿¡é ¼ã®ã‚¦ã‚§ãƒ–を活用ã™ã‚‹"
+"よã†ã« (ディストリビューションã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ãƒªãƒã‚¸ãƒˆãƒªã®ã‚ˆã†ã«) 設定ã—ã¦ã„ã‚‹"
+"別ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ユーザã«å«ã¾ã‚ŒãŸã‚ãªãŸã®ã‚­ãƒ¼ãƒªãƒ³ã‚°ãƒ‘ッケージをæŒã¤ã¾ã§ã¯ã€ã‚¢ãƒ¼"
+"カイブã¨å¯¾è±¡è€…ã«ä¾å­˜ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Whenever the contents of the archive change (new packages are added or "
+"removed) the archive maintainer has to follow the first two steps outlined "
+"above."
+msgstr ""
+"アーカイブã®å†…容ã«å¤‰åŒ–ãŒã‚ã‚‹å ´åˆ (æ–°ã—ã„パッケージã®è¿½åŠ ã‚„削除)ã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–メ"
+"ンテナã¯å‰è¿°ã®æœ€åˆã® 2 ステップã«å¾“ã‚ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+"&debsign;, &debsig-verify;, &gpg;"
+msgstr ""
+"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+"&debsign;, &debsig-verify;, &gpg;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"For more background information you might want to review the <ulink url="
+"\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
+"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
+"available in the harden-doc package) and the <ulink url=\"http://www."
+"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
+"ulink> by V. Alex Brennen."
+msgstr ""
+"詳細ãªèƒŒæ™¯æƒ…報を検証ã™ã‚‹ã®ãªã‚‰ã€Securing Debian Manual (harden-doc パッケージ"
+"ã«ã‚‚åŽéŒ²) ã® <ulink url=\"http://www.debian.org/doc/manuals/securing-debian-"
+"howto/ch7\">Debian Security Infrastructure</ulink> ç« ã‚„ã€V. Alex Brennen ã«ã‚ˆ"
+"ã‚‹ <ulink url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" "
+">Strong Distribution HOWTO</ulink> ã‚’ã”覧ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Manpage Authors"
+msgstr "マニュアルページ作者"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"This man-page is based on the work of Javier Fernández-Sanguino Peña, Isaac "
+"Jones, Colin Walters, Florian Weimer and Michael Vogt."
+msgstr ""
+"ã“ã®ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãƒšãƒ¼ã‚¸ã¯ Javier Fernández-Sanguino Peña, Isaac Jones, Colin "
+"Walters, Florian Weimer, Michael Vogt ã®ä½œæ¥­ã‚’å…ƒã«ã—ã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cdrom.8.xml
+msgid "APT CD-ROM management utility"
+msgstr "APT CD-ROM 管ç†ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<command>apt-cdrom</command> is used to add a new CD-ROM to APT's list of "
+"available sources. <command>apt-cdrom</command> takes care of determining "
+"the structure of the disc as well as correcting for several possible mis-"
+"burns and verifying the index files."
+msgstr ""
+"<command>apt-cdrom</command> ã¯åˆ©ç”¨å¯èƒ½ãªå–å¾—å…ƒã¨ã—ã¦ã€APT ã®ãƒªã‚¹ãƒˆã«æ–°ã—ã„ "
+"CD-ROM を追加ã™ã‚‹ã®ã«ä½¿ç”¨ã—ã¾ã™ã€‚<command>apt-cdrom</command> ã¯ã€ãƒ‡ã‚£ã‚¹ã‚¯ã®"
+"構造を測定ã—ã¾ã™ã€‚ã¾ãŸã€ç„¼ãæã˜ã‚’å¯èƒ½ãªé™ã‚Šè£œæ­£ã—ã€ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã®ç¢º"
+"èªã‚’è¡Œã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"It is necessary to use <command>apt-cdrom</command> to add CDs to the APT "
+"system; it cannot be done by hand. Furthermore each disc in a multi-CD set "
+"must be inserted and scanned separately to account for possible mis-burns."
+msgstr ""
+"APT システムã«æ‰‹ä½œæ¥­ã§ CD を追加ã™ã‚‹ã®ã¯é›£ã—ã„ãŸã‚ã€<command>apt-cdrom</"
+"command> ãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚ãã®ä¸Šã€è¤‡æ•°ã® CD ã®ãƒ‡ã‚£ã‚¹ã‚¯ã‚’ 1 æžšã¥ã¤ã€ç„¼ãæã˜"
+"を補正ã§ãã‚‹ã‹è©•ä¾¡ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<literal>add</literal> is used to add a new disc to the source list. It will "
+"unmount the CD-ROM device, prompt for a disc to be inserted and then proceed "
+"to scan it and copy the index files. If the disc does not have a proper "
+"<filename>.disk</filename> directory you will be prompted for a descriptive "
+"title."
+msgstr ""
+"<literal>add</literal> ã¯ã€æ–°ã—ã„ディスクをå–得元リストã«è¿½åŠ ã—ã¾ã™ã€‚CD-ROM "
+"デãƒã‚¤ã‚¹ã®ã‚¢ãƒ³ãƒžã‚¦ãƒ³ãƒˆã‚„ディスク挿入ã®ãƒ—ロンプト表示ã®å¾Œã«ã€ãƒ‡ã‚£ã‚¹ã‚¯ã®ã‚¹ã‚­ãƒ£"
+"ンã¨ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã®ã‚³ãƒ”ーを行ã„ã¾ã™ã€‚ディスクã«æ­£ã—ã„ <filename>."
+"disk</filename> ディレクトリãŒå­˜åœ¨ã—ãªã„å ´åˆã€ã‚¿ã‚¤ãƒˆãƒ«ã‚’入力ã™ã‚‹ã‚ˆã†ä¿ƒã—ã¾"
+"ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"APT uses a CD-ROM ID to track which disc is currently in the drive and "
+"maintains a database of these IDs in <filename>&statedir;/cdroms.list</"
+"filename>"
+msgstr ""
+"APT ã¯ã€ç¾åœ¨ãƒ‰ãƒ©ã‚¤ãƒ–ã«ã‚るディスクã®ãƒˆãƒ©ãƒƒã‚¯ã‹ã‚‰å–å¾—ã—ãŸã€CD-ROM ID を使用ã—"
+"ã¾ã™ã€‚ã¾ãŸãã® ID ã‚’ã€<filename>&statedir;/cdroms.list</filename> 内ã®ãƒ‡ãƒ¼ã‚¿"
+"ベースã§ç®¡ç†ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"A debugging tool to report the identity of the current disc as well as the "
+"stored file name"
+msgstr ""
+"æ ¼ç´ã•ã‚Œã¦ã„るファイルåã¨ç¾åœ¨ã®ãƒ‡ã‚£ã‚¹ã‚¯ãŒåŒä¸€ã‹ã©ã†ã‹ã‚’レãƒãƒ¼ãƒˆã™ã‚‹ã€ãƒ‡ãƒãƒƒ"
+"グツールã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Do not try to auto-detect the CD-ROM path. Usually combined with the "
+"<option>--cdrom</option> option. Configuration Item: <literal>Acquire::"
+"cdrom::AutoDetect</literal>."
+msgstr ""
+"CD-ROM パスã®è‡ªå‹•æ¤œå‡ºã‚’試行ã—ã¾ã›ã‚“。通常ã€<option>--cdrom</option> オプショ"
+"ンã¨çµ„ã¿åˆã‚ã›ã¦ä½¿ã„ã¾ã™ã€‚設定項目: <literal>Acquire::cdrom::AutoDetect</"
+"literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Mount point; specify the location to mount the CD-ROM. This mount point must "
+"be listed in <filename>/etc/fstab</filename> and properly configured. "
+"Configuration Item: <literal>Acquire::cdrom::mount</literal>."
+msgstr ""
+"マウントãƒã‚¤ãƒ³ãƒˆ - CD-ROM をマウントã™ã‚‹å ´æ‰€ã‚’指定ã—ã¾ã™ã€‚ã“ã®ãƒžã‚¦ãƒ³ãƒˆãƒã‚¤ãƒ³"
+"トã¯ã€<filename>/etc/fstab</filename> ã«æ­£ã—ã設定ã•ã‚Œã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
+"設定項目: <literal>Acquire::cdrom::mount</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Rename a disc; change the label of a disc or override the disc's given "
+"label. This option will cause <command>apt-cdrom</command> to prompt for a "
+"new label. Configuration Item: <literal>APT::CDROM::Rename</literal>."
+msgstr ""
+"ディスクã®åå‰å¤‰æ›´ - ディスクã®ãƒ©ãƒ™ãƒ«å¤‰æ›´ã‚„ã€æŒ‡å®šã—ãŸãƒ©ãƒ™ãƒ«ã§ã®ãƒ©ãƒ™ãƒ«ã®ä¸Šæ›¸ã"
+"ã‚’è¡Œã„ã¾ã™ã€‚ã“ã®ã‚ªãƒ—ションã«ã‚ˆã‚Šã€<command>apt-cdrom</command> ãŒæ–°ã—ã„ラベル"
+"を入力ã™ã‚‹ã‚ˆã†ä¿ƒã—ã¾ã™ã€‚設定項目: <literal>APT::CDROM::Rename</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"No mounting; prevent <command>apt-cdrom</command> from mounting and "
+"unmounting the mount point. Configuration Item: <literal>APT::CDROM::"
+"NoMount</literal>."
+msgstr ""
+"マウントãªã— - <command>apt-cdrom</command> ãŒã€ãƒžã‚¦ãƒ³ãƒˆãƒã‚¤ãƒ³ãƒˆã«ãƒžã‚¦ãƒ³ãƒˆãƒ»"
+"アンマウントã—ãªã„よã†ã«ã—ã¾ã™ã€‚設定項目: <literal>APT::CDROM::NoMount</"
+"literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Fast Copy; Assume the package files are valid and do not check every "
+"package. This option should be used only if <command>apt-cdrom</command> has "
+"been run on this disc before and did not detect any errors. Configuration "
+"Item: <literal>APT::CDROM::Fast</literal>."
+msgstr ""
+"高速コピー - パッケージファイルãŒå¦¥å½“ã§ã‚ã‚‹ã¨ä»®å®šã—ã€ãƒã‚§ãƒƒã‚¯ã‚’å…¨ãè¡Œã„ã¾ã›"
+"ん。ã“ã®ã‚ªãƒ—ションã¯ã€ã“ã®ãƒ‡ã‚£ã‚¹ã‚¯ã§ä»¥å‰ <command>apt-cdrom</command> ã‚’è¡Œã£"
+"ã¦ãŠã‚Šã€ã‚¨ãƒ©ãƒ¼ã‚’検出ã—ãªã‹ã£ãŸå ´åˆã®ã¿ä½¿ç”¨ã™ã¹ãã§ã™ã€‚設定項目: "
+"<literal>APT::CDROM::Fast</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Thorough Package Scan; This option may be needed with some old Debian "
+"1.1/1.2 discs that have Package files in strange places. It takes much "
+"longer to scan the CD but will pick them all up."
+msgstr ""
+"完全パッケージスキャン - å¤ã„ Debian 1.1/1.2 ã®ãƒ‡ã‚£ã‚¹ã‚¯ã¯ã€ãƒ‘ッケージファイル"
+"ãŒé•ã†å ´æ‰€ã«ã‚ã‚‹ãŸã‚ã€ã“ã®ã‚ªãƒ—ションを使ã†å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。CD をス"
+"キャンã™ã‚‹ã®ã«éžå¸¸ã«æ™‚é–“ãŒã‹ã‹ã‚Šã¾ã™ãŒã€å…¨ãƒ‘ッケージファイルを抽出ã™ã‚‹ã“ã¨ãŒ"
+"ã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"No Changes; Do not change the &sources-list; file and do not write index "
+"files. Everything is still checked however. Configuration Item: "
+"<literal>APT::CDROM::NoAct</literal>."
+msgstr ""
+"変更ãªã— - &sources-list; ファイルã®å¤‰æ›´ã‚„ã€ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã®æ›¸ãè¾¼ã¿ã‚’"
+"è¡Œã„ã¾ã›ã‚“。ã¨ã¯ã„ãˆã€ã™ã¹ã¦ã®ãƒã‚§ãƒƒã‚¯ã¯è¡Œã„ã¾ã™ã€‚設定項目: <literal>APT::"
+"CDROM::NoAct</literal>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid "&apt-conf;, &apt-get;, &sources-list;"
+msgstr "&apt-conf;, &apt-get;, &sources-list;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<command>apt-cdrom</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-cdrom</command> ã¯æ­£å¸¸çµ‚了時㫠0 ã‚’è¿”ã—ã¾ã™ã€‚エラー時ã«ã¯å進㮠"
+"100 ã‚’è¿”ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-config.8.xml
+msgid "APT Configuration Query program"
+msgstr "APT 設定å–得プログラム"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml
+msgid ""
+"<command>apt-config</command> is an internal program used by various "
+"portions of the APT suite to provide consistent configurability. It accesses "
+"the main configuration file <filename>/etc/apt/apt.conf</filename> in a "
+"manner that is easy to use for scripted applications."
+msgstr ""
+"<command>apt-config</command> ã¯ã€APT スイートã®æ§˜ã€…ãªæ‰€ã§ä¸€è²«ã—ãŸè¨­å®šã‚’è¡Œã†"
+"ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ã€å†…部プログラムã§ã™ã€‚スクリプトアプリケーションã§ä½¿ã„ã‚„ã™ã„æ–¹"
+"法ã§ã€ãƒ¡ã‚¤ãƒ³è¨­å®šãƒ•ã‚¡ã‚¤ãƒ« <filename>/etc/apt/apt.conf</filename> ã«ã‚¢ã‚¯ã‚»ã‚¹ã—"
+"ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"shell is used to access the configuration information from a shell script. "
+"It is given pairs of arguments, the first being a shell variable and the "
+"second the configuration value to query. As output it lists shell assignment "
+"commands for each value present. In a shell script it should be used as "
+"follows:"
+msgstr ""
+"shell ã¯ã€ã‚·ã‚§ãƒ«ã‚¹ã‚¯ãƒªãƒ—トã‹ã‚‰è¨­å®šæƒ…å ±ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã®ã«ä½¿ç”¨ã—ã¾ã™ã€‚引数ã¨ã—"
+"ã¦ã€ã¾ãšã‚·ã‚§ãƒ«å¤‰æ•°ã€æ¬¡ã«å–å¾—ã—ãŸã„設定値をペアã§ä¸Žãˆã¾ã™ã€‚出力ã¨ã—ã¦ã€ç¾åœ¨ã®"
+"値ã”ã¨ã®ã‚·ã‚§ãƒ«ä»£å…¥ã‚³ãƒžãƒ³ãƒ‰ã‚’列挙ã—ã¾ã™ã€‚シェルスクリプト内ã§ã¯ã€ä»¥ä¸‹ã®ã‚ˆã†ã«"
+"ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-config.8.xml
+#, no-wrap
+msgid ""
+"OPTS=\"-f\"\n"
+"RES=`apt-config shell OPTS MyApp::options`\n"
+"eval $RES\n"
+msgstr ""
+"OPTS=\"-f\"\n"
+"RES=`apt-config shell OPTS MyApp::options`\n"
+"eval $RES\n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"This will set the shell environment variable $OPTS to the value of MyApp::"
+"options with a default of <option>-f</option>."
+msgstr ""
+"ã“ã‚Œã¯ã€MyApp::options ã®å€¤ã‚’シェル環境変数 $OPTS ã«ã‚»ãƒƒãƒˆã—ã¾ã™ã€‚デフォルト"
+"値㯠<option>-f</option> ã¨ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"The configuration item may be postfixed with a /[fdbi]. f returns file "
+"names, d returns directories, b returns true or false and i returns an "
+"integer. Each of the returns is normalized and verified internally."
+msgstr ""
+"設定項目㯠/[fdbi] を後ã‚ã«ä»˜ã‘られã¾ã™ã€‚f ã¯ãƒ•ã‚¡ã‚¤ãƒ«åã‚’ã€d ã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª"
+"ã‚’ã€b 㯠true ã‹ false ã‚’ã€i ã¯æ•´æ•°ã‚’è¿”ã—ã¾ã™ã€‚返り値ã”ã¨ã«å†…部ã§æ­£è¦åŒ–ã¨æ¤œè¨¼"
+"ã‚’è¡Œã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid "Just show the contents of the configuration space."
+msgstr "設定箇所ã®å†…容を表示ã™ã‚‹ã ã‘ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"Include options which have an empty value. This is the default, so use --no-"
+"empty to remove them from the output."
+msgstr ""
+"値ãŒç©ºã®ã‚ªãƒ—ションをå«ã‚ã¾ã™ã€‚ã“ã‚Œã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ã™ã®ã§ã€å‡ºåŠ›ã‹ã‚‰å–り除ãã«ã¯ "
+"--no-empty ã¨ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-config.8.xml
+msgid "&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n"
+msgstr "&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"Defines the output of each config option. &percnt;t will be replaced with "
+"its individual name, &percnt;f with its full hierarchical name and &percnt;v "
+"with its value. Use uppercase letters and special characters in the value "
+"will be encoded to ensure that it can e.g. be safely used in a quoted-string "
+"as defined by RFC822. Additionally &percnt;n will be replaced by a newline, "
+"and &percnt;N by a tab. A &percnt; can be printed by using &percnt;&percnt;."
+msgstr ""
+"å„設定オプションã®å‡ºåŠ›ã‚’定義ã—ã¾ã™ã€‚&percnt;t ã¯ã‚ªãƒ—ションåã«ã€&percnt;f ã¯"
+"完全オプションåã«ã€&percnt;v ã¯ã‚ªãƒ—ションã®å€¤ã«ç½®æ›ã•ã‚Œã¾ã™ã€‚大文字や特殊文"
+"字を使用ã™ã‚‹å€¤ã¯ã€å®‰å…¨ã‚’ä¿è¨¼ã™ã‚‹ãŸã‚ã«ã€RFC822 ã§å®šç¾©ã•ã‚Œã¦ã„ã‚‹ quoted-"
+"string ã§ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ã•ã‚Œã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ã•ã‚‰ã«ã€&percnt;n ã¯æ”¹è¡Œã«ã€&percnt;"
+"N ã¯ã‚¿ãƒ–文字ã«ãªã‚Šã¾ã™ã€‚&percnt; を出力ã™ã‚‹ã«ã¯ã€&percnt;&percnt; ã¨ã—ã¦ãã "
+"ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml
+msgid "&apt-conf;"
+msgstr "&apt-conf;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml
+msgid ""
+"<command>apt-config</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-config</command> ã¯æ­£å¸¸çµ‚了時㫠0 ã‚’è¿”ã—ã¾ã™ã€‚エラー時ã«ã¯å進"
+"ã® 100 ã‚’è¿”ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refentryinfo><author><contrib>
+#: apt.conf.5.xml
+msgid "Initial documentation of Debug::*."
+msgstr "Debug::* ã«é–¢ã™ã‚‹æœ€åˆã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆ"
+
+#. type: Content of: <refentry><refentryinfo><author><email>
+#: apt.conf.5.xml
+msgid "dburrows@debian.org"
+msgstr "dburrows@debian.org"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml
+msgid "5"
+msgstr "5"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.conf.5.xml
+msgid "Configuration file for APT"
+msgstr "APT ã®è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<filename>/etc/apt/apt.conf</filename> is the main configuration file shared "
+"by all the tools in the APT suite of tools, though it is by no means the "
+"only place options can be set. The suite also shares a common command line "
+"parser to provide a uniform environment."
+msgstr ""
+"<filename>/etc/apt/apt.conf</filename> ã¯ã€APT スイートã®å…¨ãƒ„ールã§ä½¿ç”¨ã™ã‚‹ãƒ¡"
+"イン設定ファイルã§ã™ã€‚ã—ã‹ã—ã€é–“é•ã„ãªãオプションを設定ã—ã¦ãŠãã ã‘ã®å ´æ‰€ãª"
+"ã©ã§ã¯ã‚ã‚Šã¾ã›ã‚“。ãã®ãŸã‚ã€APT スイートã¯çµ±ä¸€ç’°å¢ƒã‚’æä¾›ã™ã‚‹ãŸã‚ã€å…±é€šã®ã‚³ãƒž"
+"ンドラインパーサを共有ã—ã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><orderedlist><para>
+#: apt.conf.5.xml
+msgid ""
+"When an APT tool starts up it will read the configuration files in the "
+"following order:"
+msgstr "APT ツールã®èµ·å‹•æ™‚ã«ã€è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’以下ã®é †ç•ªã§èª­ã¿è¾¼ã¿ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the file specified by the <envar>APT_CONFIG</envar> environment variable (if "
+"any)"
+msgstr "<envar>APT_CONFIG</envar> 環境変数ã§æŒ‡å®šã—ãŸãƒ•ã‚¡ã‚¤ãƒ« (存在ã™ã‚‹å ´åˆ)"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending "
+"order which have either no or \"<literal>conf</literal>\" as filename "
+"extension and which only contain alphanumeric, hyphen (-), underscore (_) "
+"and period (.) characters. Otherwise APT will print a notice that it has "
+"ignored a file, unless that file matches a pattern in the <literal>Dir::"
+"Ignore-Files-Silently</literal> configuration list - in which case it will "
+"be silently ignored."
+msgstr ""
+"<literal>Dir::Etc::Parts</literal> ã«ã‚ã‚‹ã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’英数字ã®æ˜‡é †ã«ãªã‚Š"
+"ã¾ã™ã€‚ファイルåã«ã¯æ‹¡å¼µå­ãŒãªã„ã‹ã€\"<literal>conf</literal>\" ã¨ãªã£ã¦ãŠ"
+"ã‚Šã€è‹±æ•°å­—ã€ãƒã‚¤ãƒ•ãƒ³ (-)ã€ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢ (_)ã€ãƒ”リオド (.) ã§æ§‹æˆã•ã‚Œã¦ã„ã¾"
+"ã™ã€‚ãã†ã§ãªã‘ã‚Œã°ã€<literal>Dir::Ignore-Files-Silently</literal> 設定リスト"
+"ã®ãƒ‘ターンã«ä¸€è‡´ã™ã‚‹ã‚‚ã®ä»¥å¤–ã«å¯¾ã—ã¦ã€ãƒ•ã‚¡ã‚¤ãƒ«ã‚’無視ã™ã‚‹ã¨ã„ã†æ³¨æ„ã‚’ APT ãŒå‡º"
+"力ã—ã¾ã™ã€‚一致ã™ã‚‹å ´åˆã¯é»™ã£ã¦ç„¡è¦–ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the main configuration file specified by <literal>Dir::Etc::main</literal>"
+msgstr "<literal>Dir::Etc::Main</literal> ã§æŒ‡å®šã•ã‚Œã‚‹ã€ãƒ¡ã‚¤ãƒ³è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"all options set in the binary specific configuration subtree are moved into "
+"the root of the tree."
+msgstr ""
+"ãƒã‚¤ãƒŠãƒªå›ºæœ‰ã®è¨­å®šã‚µãƒ–ツリーã«è¨­å®šã•ã‚ŒãŸã™ã¹ã¦ã®ã‚ªãƒ—ションã¯ã€ãƒ„リーã®ãƒ«ãƒ¼ãƒˆ"
+"ã«ç§»å‹•ã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the command line options are applied to override the configuration "
+"directives or to load even more configuration files."
+msgstr ""
+"コマンドラインオプションã«ã‚ˆã‚Šã€è¨­å®šãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–ã®ä¸Šæ›¸ãや設定ファイルã®è¿½"
+"加読ã¿è¾¼ã¿ãŒã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Syntax"
+msgstr "構文"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The configuration file is organized in a tree with options organized into "
+"functional groups. Option specification is given with a double colon "
+"notation; for instance <literal>APT::Get::Assume-Yes</literal> is an option "
+"within the APT tool group, for the Get tool. Options do not inherit from "
+"their parent groups."
+msgstr ""
+"設定ファイルã¯ã€æ©Ÿèƒ½ã‚°ãƒ«ãƒ¼ãƒ—ã”ã¨ã«ç³»çµ±ç«‹ã¦ã‚‰ã‚ŒãŸã‚ªãƒ—ションを木構造ã§è¡¨ã—ã¾"
+"ã™ã€‚オプションã®æŒ‡å®šã¯ã€2 ã¤ã®ã‚³ãƒ­ãƒ³ã§åŒºåˆ‡ã‚Šã¾ã™ã€‚例ãˆã° <literal>APT::Get::"
+"Assume-Yes</literal> ã¯ã€APT ツールグループ㮠Get ツール用オプションã§ã™ã€‚オ"
+"プションã¯ã€è¦ªã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰ã¯ç¶™æ‰¿ã—ã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Syntactically the configuration language is modeled after what the ISC tools "
+"such as bind and dhcp use. Lines starting with <literal>//</literal> are "
+"treated as comments (ignored), as well as all text between <literal>/*</"
+"literal> and <literal>*/</literal>, just like C/C++ comments. Each line is "
+"of the form <literal>APT::Get::Assume-Yes \"true\";</literal>. The "
+"quotation marks and trailing semicolon are required. The value must be on "
+"one line, and there is no kind of string concatenation. Values must not "
+"include backslashes or extra quotation marks. Option names are made up of "
+"alphanumeric characters and the characters \"/-:._+\". A new scope can be "
+"opened with curly braces, like this:"
+msgstr ""
+"設定言語ã®æ§‹æ–‡ã¯ã€bind ã‚„ dhcp ã®ã‚ˆã†ãª ISC ツールをモデルã«ã—ã¦ã„ã¾ã™ã€‚"
+"<literal>//</literal> ã§å§‹ã¾ã‚‹è¡Œã¯ã‚³ãƒ¡ãƒ³ãƒˆã¨ã—ã¦æ‰±ã‚ã‚Œã¾ã™ (無視)。åŒæ§˜ã« C/C"
+"++ ã®ã‚³ãƒ¡ãƒ³ãƒˆã®ã‚ˆã†ãª <literal>/*</literal> 㨠<literal>*/</literal> ã®é–“もコ"
+"メントã¨ã—ã¦æ‰±ã„ã¾ã™ã€‚ã„ãšã‚Œã®è¡Œã‚‚ã€<literal>APT::Get::Assume-Yes \"true\";</"
+"literal> ã®ã‚ˆã†ãªå½¢å¼ã§ã™ã€‚引用符ã¨è¡Œæœ«ã®ã‚»ãƒŸã‚³ãƒ­ãƒ³ã¯å¿…é ˆã§ã™ã€‚値ã¯1è¡Œã§ãªã‘"
+"ã‚Œã°ãªã‚‰ãšã€æ–‡å­—列çµåˆã¯ã‚ã‚Šã¾ã›ã‚“。値ã®ä¸­ã«ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã‚„余計ãªå¼•ç”¨ç¬¦ãŒ"
+"ã‚ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“。オプションåã¯ã€è‹±æ•°å­—㨠\"/-:._+\" ãŒä½¿ç”¨ã§ãã¾ã™ã€‚以下"
+"ã®ã‚ˆã†ã«æ³¢ã‚«ãƒƒã‚³ã‚’使ã†ã¨ã€æ–°ã—ã„スコープを開ãã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT {\n"
+" Get {\n"
+" Assume-Yes \"true\";\n"
+" Fix-Broken \"true\";\n"
+" };\n"
+"};\n"
+msgstr ""
+"APT {\n"
+" Get {\n"
+" Assume-Yes \"true\";\n"
+" Fix-Broken \"true\";\n"
+" };\n"
+"};\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"with newlines placed to make it more readable. Lists can be created by "
+"opening a scope and including a single string enclosed in quotes followed by "
+"a semicolon. Multiple entries can be included, separated by a semicolon."
+msgstr ""
+"ã¾ãŸé©å®œæ”¹è¡Œã™ã‚‹ã“ã¨ã§ã€ã‚ˆã‚Šèª­ã¿ã‚„ã™ããªã‚Šã¾ã™ã€‚リストã¯ã€é–‹ã„ãŸã‚¹ã‚³ãƒ¼ãƒ—ã€"
+"クォートã§å›²ã¾ã‚ŒãŸ 1 å˜èªžã€ãã—ã¦ã‚»ãƒŸã‚³ãƒ­ãƒ³ã¨ç¶šã‘ã‚‹ã“ã¨ã§ä½œæˆã§ãã¾ã™ã€‚セミコ"
+"ロンã§åŒºåˆ‡ã£ã¦ã€è¤‡æ•°ã®ã‚¨ãƒ³ãƒˆãƒªã‚’表ã›ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "DPkg::Pre-Install-Pkgs {\"/usr/sbin/dpkg-preconfigure --apt\";};\n"
+msgstr "DPkg::Pre-Install-Pkgs {\"/usr/sbin/dpkg-preconfigure --apt\";};\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"In general the sample configuration file &configureindex; is a good guide "
+"for how it should look."
+msgstr ""
+"&configureindex; ã¯ä¸€èˆ¬çš„ãªè¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã®ã‚µãƒ³ãƒ—ルã§ã™ã€‚ã©ã®ã‚ˆã†ã«è¨­å®šã™ã‚‹ã‹å‚"
+"考ã«ãªã‚‹ã§ã—ょã†ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Case is not significant in names of configuration items, so in the previous "
+"example you could use <literal>dpkg::pre-install-pkgs</literal>."
+msgstr ""
+"設定項目ã®åå‰ã«ã‚る文字ã®å¤§å°ã¯ã€é‡è¦ã§ã¯ã‚ã‚Šã¾ã›ã‚“。ãã®ãŸã‚ã€å‰è¿°ã®ä¾‹ã‚’ "
+"<literal>dpkg::pre-install-pkgs</literal> ã¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Names for the configuration items are optional if a list is defined as can "
+"be seen in the <literal>DPkg::Pre-Install-Pkgs</literal> example above. If "
+"you don't specify a name a new entry will simply add a new option to the "
+"list. If you specify a name you can override the option in the same way as "
+"any other option by reassigning a new value to the option."
+msgstr ""
+"å‰è¿°ã—㟠<literal>DPkg::Pre-Install-Pkgs</literal> ã®ä¾‹ã§è¦‹ã‚‰ã‚Œã‚‹ã‚ˆã†ã«ã€ãƒªã‚¹"
+"トを定義ã—ãŸå ´åˆã€è¨­å®šé …ç›®åã¯ã‚ªãƒ—ションã«ãªã‚Šã¾ã™ã€‚åå‰ã‚’指定ã—ãªã„å ´åˆã€æ–°"
+"ã—ã„エントリã¯ã€å˜ç´”ã«æ–°ã—ã„オプションをリストã«è¿½åŠ ã—ã¾ã™ã€‚åå‰ã‚’指定ã—ã¦åŒ"
+"様ã«ã™ã‚‹ã¨ã€ã‚らゆる他ã®é¸æŠžè‚¢ã‚’オプションã«å†å‰²ã‚Šå½“ã¦ã—ã€ã‚ªãƒ—ションを上書ã"
+"ã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Two special commands are defined: <literal>#include</literal> (which is "
+"deprecated and not supported by alternative implementations) and "
+"<literal>#clear</literal>. <literal>#include</literal> will include the "
+"given file, unless the filename ends in a slash, in which case the whole "
+"directory is included. <literal>#clear</literal> is used to erase a part of "
+"the configuration tree. The specified element and all its descendants are "
+"erased. (Note that these lines also need to end with a semicolon.)"
+msgstr ""
+"<literal>#include</literal> (ã“ã‚Œã¯å»ƒæ­¢äºˆå®šã§ã‚µãƒãƒ¼ãƒˆã—ãªã„ä»–ã®å®Ÿè£…ã‚‚ã‚ã‚Šã¾"
+"ã™) 㨠<literal>#clear</literal> ã® 2 ã¤ã®ç‰¹åˆ¥ãªã‚³ãƒžãƒ³ãƒ‰ãŒã‚ã‚Šã¾ã™ã€‚"
+"<literal>#include</literal> ã¯æŒ‡å®šã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’å–ã‚Šè¾¼ã¿ã¾ã™ã€‚ファイルåãŒã‚¹"
+"ラッシュã§çµ‚ã‚ã£ãŸå ´åˆã«ã¯ã€ãã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’ã™ã¹ã¦å–ã‚Šè¾¼ã¿ã¾ã™ã€‚"
+"<literal>#clear</literal> ã¯ã€è¨­å®šãƒ„リーã®ä¸€éƒ¨ã‚’削除ã™ã‚‹ã®ã«ä½¿ç”¨ã—ã¾ã™ã€‚指定"
+"ã—ãŸè¦ç´ ã¨ã€ãれ以下ã®è¦ç´ ã‚’削除ã—ã¾ã™ (ã“れらã®è¡Œã‚‚ã€ã‚»ãƒŸã‚³ãƒ­ãƒ³ã§çµ‚ã‚ã‚‹å¿…è¦"
+"ãŒã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„)。"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>#clear</literal> command is the only way to delete a list or a "
+"complete scope. Reopening a scope (or using the syntax described below with "
+"an appended <literal>::</literal>) will <emphasis>not</emphasis> override "
+"previously written entries. Options can only be overridden by addressing a "
+"new value to them - lists and scopes can't be overridden, only cleared."
+msgstr ""
+"<literal>#clear</literal> コマンドã¯ã€ãƒªã‚¹ãƒˆã‚„完全ãªã‚¹ã‚³ãƒ¼ãƒ—を削除ã™ã‚‹å”¯ä¸€ã®"
+"方法ã§ã™ã€‚スコープã®å†ã‚ªãƒ¼ãƒ—ン (や後述ã™ã‚‹ <literal>::</literal> スタイル)"
+"ã¯ã€ãã‚Œã¾ã§æ›¸ã„ãŸã‚¨ãƒ³ãƒˆãƒªã‚’<emphasis>上書ãã—ã¾ã›ã‚“</emphasis>。オプションã§"
+"ã¯æ–°ã—ã„値を与ãˆã¦ä¸Šæ›¸ãã™ã‚‹ã—ã‹ã‚ã‚Šã¾ã›ã‚“ãŒã€ãƒªã‚¹ãƒˆã‚„スコープã¯ä¸Šæ›¸ãã§ãã¾"
+"ã›ã‚“。クリアã•ã‚Œã‚‹ã ã‘ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"All of the APT tools take an -o option which allows an arbitrary "
+"configuration directive to be specified on the command line. The syntax is a "
+"full option name (<literal>APT::Get::Assume-Yes</literal> for instance) "
+"followed by an equals sign then the new value of the option. To append a new "
+"element to a list, add a trailing <literal>::</literal> to the name of the "
+"list. (As you might suspect, the scope syntax can't be used on the command "
+"line.)"
+msgstr ""
+"ã™ã¹ã¦ã® APT ツールã§ã¯ã€ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã§ä»»æ„ã®è¨­å®šãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–を指定ã§ã"
+"ã‚‹ -o オプションãŒä½¿ç”¨ã§ãã¾ã™ã€‚構文ã¯ã€å®Œå…¨ãªã‚ªãƒ—ションå (例: "
+"<literal>APT::Get::Assume-Yes</literal>) ã«ç¶šãç­‰å·ã€ãã®å¾Œã‚ªãƒ—ションã®æ–°ã—ã„"
+"値ã¨ãªã‚Šã¾ã™ã€‚リストåã«ç¶šã <literal>::</literal> を加ãˆã‚‹ã“ã¨ã§ã€ãƒªã‚¹ãƒˆã‚’追"
+"加ã§ãã¾ã™ (ç–‘å•ã«æ€ã‚ã‚ŒãŸã‚ˆã†ã«ã€ã‚¹ã‚³ãƒ¼ãƒ—構文ã¯ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã§ä½¿ç”¨ã§ãã¾ã›"
+"ん)。"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that appending items to a list using <literal>::</literal> only works "
+"for one item per line, and that you should not use it in combination with "
+"the scope syntax (which adds <literal>::</literal> implicitly). Using both "
+"syntaxes together will trigger a bug which some users unfortunately depend "
+"on: an option with the unusual name \"<literal>::</literal>\" which acts "
+"like every other option with a name. This introduces many problems; for one "
+"thing, users who write multiple lines in this <emphasis>wrong</emphasis> "
+"syntax in the hope of appending to a list will achieve the opposite, as only "
+"the last assignment for this option \"<literal>::</literal>\" will be used. "
+"Future versions of APT will raise errors and stop working if they encounter "
+"this misuse, so please correct such statements now while APT doesn't "
+"explicitly complain about them."
+msgstr ""
+"<literal>::</literal> を用ã„ãŸãƒªã‚¹ãƒˆã¸ã®é …目追加ã¯ã€1 行㧠1 é …ç›®ã®å ´åˆã«ã®ã¿"
+"使用ã§ãã€ã‚¹ã‚³ãƒ¼ãƒ—構文ã¨çµ„ã¿åˆã‚ã›ã‚‹ã¹ãã§ã¯ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„ (ス"
+"コープ構文ã«ã¯æš—黙㧠<literal>::</literal> ãŒè¿½åŠ ã•ã‚Œã¾ã™)。両方ã®æ§‹æ–‡ã‚’åŒæ™‚"
+"ã«ä½¿ç”¨ã™ã‚‹ã¨ã€ã€Œä»–ã®ã‚ªãƒ—ションã¨åŒæ§˜ã«åå‰ã¨å…±ã«å‹•ä½œã™ã‚‹ã€é€šå¸¸ã§ã¯ã‚ã‚Šãˆãªã„"
+"åå‰ \"<literal>::</literal>\" ã®ã‚ªãƒ—ションã§ã‚ã‚‹ã€ã¨ã„ã£ãŸã€(残念ãªã“ã¨ã«) "
+"複数ã®ãƒ¦ãƒ¼ã‚¶ã«æ¸¡ã‚‹ãƒã‚°ã®å¼•ã金ã«ãªã‚Šã¾ã™ã€‚ãŸãã•ã‚“ã®å•é¡Œã®ä¸­ã«ã¯ã€ãƒªã‚¹ãƒˆã«è¿½"
+"加ã—よã†ã¨<emphasis>誤ã£ãŸ</emphasis>構文ã§è¤‡æ•°è¡Œæ›¸ã„ãŸãƒ¦ãƒ¼ã‚¶ãŒã€ã“ã®ã‚ªãƒ—ショ"
+"ン \"<literal>::</literal>\" を最後ã«å‰²ã‚Šå½“ã¦ã‚ˆã†ã¨ã—ã¦ã€æ­£å対ã®çµæžœã‚’å¾—ã‚‹ã¨"
+"ã„ã†ã“ã¨ã‚‚å«ã¾ã‚Œã¾ã™ã€‚APT ã®æ¬¡æœŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ã€ã“ã®èª¤ç”¨ã‚’検出ã™ã‚‹ã¨ã€å‹•ä½œã‚’"
+"åœæ­¢ã—エラーを上ã’るよã†ã«ãªã‚Šã¾ã™ã€‚ãã®ãŸã‚ã€APT ãŒã“ã®ä»¶ã§æ˜Žç™½ã«ã‚¨ãƒ©ãƒ¼ã‚’å"
+"ã‹ãªã„é™ã‚Šã¯ã€è‡ªåˆ†ã§ãã®ã‚ˆã†ãªæ§‹æ–‡ã‚’修正ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "The APT Group"
+msgstr "APT グループ"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"This group of options controls general APT behavior as well as holding the "
+"options for all of the tools."
+msgstr ""
+"ã“ã®ã‚ªãƒ—ショングループã¯ã€ãƒ„ール全体ã«å½±éŸ¿ã®ã‚ã‚‹ã€ä¸€èˆ¬çš„㪠APT ã®æŒ¯ã‚‹èˆžã„を制"
+"御ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"System Architecture; sets the architecture to use when fetching files and "
+"parsing package lists. The internal default is the architecture apt was "
+"compiled for."
+msgstr ""
+"システムアーキテクãƒãƒ£ - ファイルをå–å¾—ã—ãŸã‚Šã€ãƒ‘ッケージリストを解æžã™ã‚‹ã¨ã"
+"ã«ä½¿ç”¨ã™ã‚‹ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã‚’セットã—ã¾ã™ã€‚内部ã§ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯ã€apt をコンパイ"
+"ルã—ãŸã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"All Architectures the system supports. For instance, CPUs implementing the "
+"<literal>amd64</literal> (also called <literal>x86-64</literal>) "
+"instruction set are also able to execute binaries compiled for the "
+"<literal>i386</literal> (<literal>x86</literal>) instruction set. This list "
+"is used when fetching files and parsing package lists. The initial default "
+"is always the system's native architecture (<literal>APT::Architecture</"
+"literal>), and foreign architectures are added to the default list when they "
+"are registered via <command>dpkg --add-architecture</command>."
+msgstr ""
+"システムãŒã‚µãƒãƒ¼ãƒˆã™ã‚‹ã€ã™ã¹ã¦ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã§ã™ã€‚例ãˆã°ã€<literal>amd64</"
+"literal> (<literal>x86-64</literal> ã¨ã‚‚呼ã°ã‚Œã¾ã™) 命令セットを実装ã—㟠CPU "
+"ã¯ã€<literal>i386</literal> (<literal>x86</literal>) 命令セット用ã«ã‚³ãƒ³ãƒ‘イル"
+"ã•ã‚ŒãŸãƒã‚¤ãƒŠãƒªã‚‚実行ã§ãã¾ã™ã€‚ã“ã®ãƒªã‚¹ãƒˆã¯ã€ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å–å¾—ã—パッケージリスト"
+"を解æžã™ã‚‹éš›ã«åˆ©ç”¨ã•ã‚Œã¾ã™ã€‚åˆæœŸã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã¯ã€å¸¸ã«ã‚·ã‚¹ãƒ†ãƒ ã®ãƒã‚¤ãƒ†ã‚£ãƒ–"
+"アーキテクãƒãƒ£ (<literal>APT::Architecture</literal>) ã§ã™ã€‚<command>dpkg --"
+"add-architecture</command> を用ã„ã¦ã€å¤–部アーキテクãƒãƒ£ã‚’デフォルトリストã«è¿½"
+"加ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines which compression formats are supported, how compression "
+"and decompression can be performed if support for this format isn't built "
+"into apt directly and a cost-value indicating how costly it is to compress "
+"something in this format. As an example the following configuration stanza "
+"would allow apt to download and uncompress as well as create and store files "
+"with the low-cost <literal>.reversed</literal> file extension which it will "
+"pass to the command <command>rev</command> without additional commandline "
+"parameters for compression and uncompression:"
+msgstr ""
+"ã“ã®è¨­å®šé …ç›®ã§ã¯ã©ã®åœ§ç¸®å½¢å¼ã‚’サãƒãƒ¼ãƒˆã™ã‚‹ã®ã‹ã€ãã®å½¢å¼ã®ã‚µãƒãƒ¼ãƒˆãŒ apt ã«ç›´"
+"接組ã¿è¾¼ã¾ã‚Œã¦ã„ãªã„å ´åˆã«åœ§ç¸®ã¨å±•é–‹ã‚’ã©ã®ã‚ˆã†ã«è¡Œãˆã°ã„ã„ã®ã‹ã€ãã‚Œã¨ã“ã®å½¢"
+"å¼ã§ä½•ã‹åœ§ç¸®ã™ã‚‹ã®ã«ã©ã‚Œãらã„コストãŒã‹ã‹ã‚‹ã®ã‹ã€ã¨ã„ã†å€¤ã‚’定義ã—ã¾ã™ã€‚1ã¤ã®"
+"例ã¨ã—ã¦ã€ä»¥ä¸‹ã®å†…容ã§ã¯æ‹¡å¼µå­ãŒ <literal>.reversed</literal> ã®ã‚³ã‚¹ãƒˆã®ä½Žã„"
+"ファイルã«ã¤ã„ã¦ã€ãƒ•ã‚¡ã‚¤ãƒ«ã®ä½œæˆã¨ä¿å­˜ã«åŠ ãˆã¦ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã¨å±•é–‹ã‚’ apt ã«è¨±å¯"
+"ã—ã€<command>rev</command> ã«ã‚ˆã‚‹åœ§ç¸®ã¨å±•é–‹ã®éš›ã«æ¸¡ã™ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ãƒ‘ラメータ"
+"を追加ã—ãªã„設定ã¨ãªã‚Šã¾ã™:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Compressor::rev {\n"
+"\tName \"rev\";\n"
+"\tExtension \".reversed\";\n"
+"\tBinary \"rev\";\n"
+"\tCompressArg {};\n"
+"\tUncompressArg {};\n"
+"\tCost \"10\";\n"
+"};\n"
+msgstr ""
+"APT::Compressor::rev {\n"
+"\tName \"rev\";\n"
+"\tExtension \".reversed\";\n"
+"\tBinary \"rev\";\n"
+"\tCompressArg {};\n"
+"\tUncompressArg {};\n"
+"\tCost \"10\";\n"
+"};\n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"List of all build profiles enabled for build-dependency resolution, without "
+"the \"<literal>profile.</literal>\" namespace prefix. By default this list "
+"is empty. The <envar>DEB_BUILD_PROFILES</envar> as used by &dpkg-"
+"buildpackage; overrides the list notation."
+msgstr ""
+"構築ä¾å­˜ã®è§£æ±ºã«ã‚ãŸã£ã¦æœ‰åŠ¹ã«ãªã£ã¦ã„るビルドプロファイルをåå‰ç©ºé–“ã®"
+"「<literal>profile.</literal>ã€æŽ¥é ­è¾žã‚’å–り除ã„ãŸã‚‚ã®å…¨ã¦ã®ä¸€è¦§ã§ã™ã€‚デフォル"
+"トã§ã¯ã“ã®ä¸€è¦§ã¯ç©ºã§ã™ã€‚&dpkg-buildpackage; ã§åˆ©ç”¨ã•ã‚Œã‚‹ "
+"<envar>DEB_BUILD_PROFILES</envar> ã¯ã“ã®ä¸€è¦§ã‚ˆã‚Šã‚‚優先ã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Default release to install packages from if more than one version is "
+"available. Contains release name, codename or release version. Examples: "
+"'stable', 'testing', 'unstable', '&debian-stable-codename;', '&debian-"
+"testing-codename;', '4.0', '5.0*'. See also &apt-preferences;."
+msgstr ""
+"ã²ã¨ã¤ä»¥ä¸Šã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã‚ã‚‹å ´åˆã«ã€ãƒ‘ッケージをインストールを行ã†ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆ"
+"リリースã§ã™ã€‚リリースåã‚„ã€ã‚³ãƒ¼ãƒ‰åã€ãƒªãƒªãƒ¼ã‚¹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã‚ã‚Šã¾ã™ã€‚例ãˆã° "
+"'stable', 'testing', 'unstable', '&debian-stable-codename;', '&debian-"
+"testing-codename;', '4.0', '5.0*' ã¨ãªã‚Šã¾ã™ã€‚&apt-preferences; ã‚‚å‚ç…§ã—ã¦ã"
+"ã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Ignore held packages; this global option causes the problem resolver to "
+"ignore held packages in its decision making."
+msgstr ""
+"ä¿ç•™ãƒ‘ッケージã®ç„¡è¦– - ã“ã®ã‚°ãƒ­ãƒ¼ãƒãƒ«ã‚ªãƒ—ションã¯ã€å•é¡Œè§£æ±ºå™¨ã«ä¿ç•™ã¨æŒ‡å®šã—ãŸ"
+"パッケージを無視ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Defaults to on. When turned on the autoclean feature will remove any "
+"packages which can no longer be downloaded from the cache. If turned off "
+"then packages that are locally installed are also excluded from cleaning - "
+"but note that APT provides no direct means to reinstall them."
+msgstr ""
+"デフォルトã§æœ‰åŠ¹ã§ã™ã€‚on ã®æ™‚ã€autoclean 機能ã¯ã€ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã§ããªããªã£ãŸ"
+"パッケージをã€ã™ã¹ã¦ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã€‚off ã®å ´åˆã€ãƒ­ãƒ¼ã‚«ãƒ«ã«ã‚¤ãƒ³ã‚¹"
+"トールã•ã‚Œã¦ã„るパッケージã¯ã€å‰Šé™¤å¯¾è±¡ã‹ã‚‰å¤–ã—ã¾ã™ã€‚ã—ã‹ã—〠APT ã¯ã‚­ãƒ£ãƒƒã‚·ãƒ¥"
+"ã‹ã‚‰å‰Šé™¤ã—ãŸãƒ‘ッケージã®å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ–¹æ³•ã‚’ã€ç›´æŽ¥æä¾›ã™ã‚‹ã‚ã‘ã§ã¯ãªã„ã“ã¨ã«"
+"注æ„ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Defaults to on, which will cause APT to install essential and important "
+"packages as soon as possible in an install/upgrade operation, in order to "
+"limit the effect of a failing &dpkg; call. If this option is disabled, APT "
+"treats an important package in the same way as an extra package: between the "
+"unpacking of the package A and its configuration there can be many other "
+"unpack or configuration calls for other unrelated packages B, C etc. If "
+"these cause the &dpkg; call to fail (e.g. because package B's maintainer "
+"scripts generate an error), this results in a system state in which package "
+"A is unpacked but unconfigured - so any package depending on A is now no "
+"longer guaranteed to work, as its dependency on A is no longer satisfied."
+msgstr ""
+"デフォルト㯠on ã§ã™ã€‚&dpkg; ã®å‘¼ã³å‡ºã—失敗ã®å½±éŸ¿ã‚’最å°é™ã«ã™ã‚‹ãŸã‚ã€ã‚¤ãƒ³ã‚¹"
+"トール・更新æ“作ã®ä¸­ã§ã€APT ã¯ä¸å¯æ¬ ãƒ‘ッケージやé‡è¦ãƒ‘ッケージをã€å¯èƒ½ãªé™ã‚Š"
+"æ—©ãインストールã™ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ã“ã®ã‚ªãƒ—ションを無効ã«ã™ã‚‹ã¨ã€ä»¥ä¸‹ã®ã‚ˆã†"
+"ã«ã€é‡è¦ãƒ‘ッケージを特別パッケージã¨åŒæ§˜ã«æ‰±ã†ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚パッケージ A ã®"
+"展開ã¨ãã®è¨­å®šã®é–“ã«ã€ãƒ‘ッケージ B ã‚„ C ãªã©ã®é–¢ä¿‚ãªã„ã€ãŸãã•ã‚“ã®ä»–ã®ãƒ‘ッ"
+"ケージã®å±•é–‹ã¨è¨­å®šãŒè¡Œãˆã¾ã™ã€‚&dpkg; ã®å‘¼ã³å‡ºã—ã«å¤±æ•—ã—ãŸå ´åˆ (例: パッケー"
+"ジ B ã®ãƒ¡ãƒ³ãƒ†ãƒŠã‚¹ã‚¯ãƒªãƒ—トã§ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿ)ã€ã‚·ã‚¹ãƒ†ãƒ ã®çŠ¶æ…‹ã¯ã€ãƒ‘ッケージ A ã¯å±•é–‹"
+"ã—ãŸãŒæœªè¨­å®šã«ãªã‚Šã¾ã™ã€‚ãã®ãŸã‚ã€A ã«ä¾å­˜ã—ãŸãƒ‘ッケージã®å‹•ä½œãŒä¿è¨¼ã•ã‚Œãªã"
+"ãªã‚Šã€A ã¸ã®ä¾å­˜é–¢ä¿‚ã¯ã€ã‚‚ã†æº€ãŸã›ã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The immediate configuration marker is also applied in the potentially "
+"problematic case of circular dependencies, since a dependency with the "
+"immediate flag is equivalent to a Pre-Dependency. In theory this allows APT "
+"to recognise a situation in which it is unable to perform immediate "
+"configuration, abort, and suggest to the user that the option should be "
+"temporarily deactivated in order to allow the operation to proceed. Note "
+"the use of the word \"theory\" here; in the real world this problem has "
+"rarely been encountered, in non-stable distribution versions, and was caused "
+"by wrong dependencies of the package in question or by a system in an "
+"already broken state; so you should not blindly disable this option, as the "
+"scenario mentioned above is not the only problem it can help to prevent in "
+"the first place."
+msgstr ""
+"å³æ™‚ (immediate) フラグã¯äº‹å‰ä¾å­˜é–¢ä¿‚ã¨ç­‰ä¾¡ãªãŸã‚ã€å³æ™‚設定マーカも潜在的ã«ã€"
+"循環ä¾å­˜é–¢ä¿‚ã®å•é¡Œã«å¯¾ã—ã¦é©ç”¨ã•ã‚Œã¾ã™ã€‚ç†è«–上 APT ã¯ã€å³æ™‚設定ä¸èƒ½ã¨èªè­˜ã—ã€"
+"中断ã—ã€æ“作を継続ã™ã‚‹ãŸã‚ã«ã“ã®ã‚ªãƒ—ションを一時的ã«ç„¡åŠ¹ã«ã™ã‚‹ã‚ˆã†æ案ã§ãã¾"
+"ã™ã€‚ã“ã“ã§è¨€ã†ã€Œç†è«–上ã€ã¨ã„ã†è¨€è‘‰ã«æ³¨æ„ã—ã¦ãã ã•ã„。ç¾å®Ÿä¸–ç•Œã§ã¯ã€å®‰å®šç‰ˆã§"
+"ã¯ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã‚‚ã€ã“ã®å•é¡Œã«ã¯ã»ã¨ã‚“ã©é­é‡ã—ã¦ã„ã¾ã›ã‚“ã—ã€å•é¡Œã®ãƒ‘ッケー"
+"ジã®ä¾å­˜é–¢ä¿‚ãŒèª¤ã£ã¦ã„ã‚‹ã‹ã€ã‚·ã‚¹ãƒ†ãƒ ã®çŠ¶æ…‹ãŒã™ã§ã«ç ´æã—ã¦ã„ã‚‹å ´åˆã«ç™ºç”Ÿã—ã¦"
+"ã„ã¾ã—ãŸã€‚ãã®ãŸã‚ã€ç›²ç›®çš„ã«ã“ã®ã‚ªãƒ—ションを無効ã«ã™ã‚‹ã¹ãã§ã¯ã‚ã‚Šã¾ã›ã‚“。å‰"
+"è¿°ã®ã‚·ãƒŠãƒªã‚ªã‚’解決ã™ã‚‹æ–¹æ³•ã®ã€1ã¤ã«ã—ã‹ã™ãŽãªã„ã®ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Before a big operation like <literal>dist-upgrade</literal> is run with this "
+"option disabled you should try to explicitly <literal>install</literal> the "
+"package APT is unable to configure immediately; but please make sure you "
+"also report your problem to your distribution and to the APT team with the "
+"buglink below, so they can work on improving or correcting the upgrade "
+"process."
+msgstr ""
+"ã“ã®ã‚ªãƒ—ションを無効ã«ã—㦠<literal>dist-upgrade</literal> ã®ã‚ˆã†ãªå¤§ããªæ“作"
+"を実行ã™ã‚‹å‰ã«ã€ãƒ‘ッケージ㫠<literal>install</literal> を明示ã—ã¦ã€å³æ™‚設定"
+"ãŒè¡Œã‚ã‚Œãªã„よã†ã«ã™ã‚‹ã¹ãã§ã™ã€‚ã§ã™ãŒã€å‹•ä½œã®æ”¹å–„ã¨ã‚¢ãƒƒãƒ—グレードプロセスã®"
+"修正ã®ãŸã‚ã€ä»¥ä¸‹ã®ãƒã‚°ãƒªãƒ³ã‚¯ã‹ã‚‰ã€å•é¡Œã‚’ディストリビューション㨠APT ãƒãƒ¼ãƒ ã«"
+"も報告ã—ã¦ã„ãŸã ããŸã„ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Never enable this option unless you <emphasis>really</emphasis> know what "
+"you are doing. It permits APT to temporarily remove an essential package to "
+"break a Conflicts/Conflicts or Conflicts/Pre-Depends loop between two "
+"essential packages. <emphasis>Such a loop should never exist and is a grave "
+"bug</emphasis>. This option will work if the essential packages are not "
+"<command>tar</command>, <command>gzip</command>, <command>libc</command>, "
+"<command>dpkg</command>, <command>dash</command> or anything that those "
+"packages depend on."
+msgstr ""
+"何をã—よã†ã¨ã—ã¦ã„ã‚‹ã®ã‹<emphasis>本当ã«</emphasis>判ã£ã¦ã„ã‚‹ã®ã§ãªã‘ã‚Œã°ã€çµ¶"
+"対ã«ã“ã®ã‚ªãƒ—ションを有効ã«ã—ãªã„ã§ãã ã•ã„。ä¸å¯æ¬  (essential) パッケージåŒå£«"
+"ã§ã€ç«¶åˆ (Conflicts) /競åˆã‚„競åˆ/事å‰ä¾å­˜ (Pre-Depend) ã®ãƒ«ãƒ¼ãƒ—ã«è½ã¡è¾¼ã‚“ã ã¨"
+"ãã«ã€ä¸å¯æ¬ ãƒ‘ッケージを一時的ã«å‰Šé™¤ã—ã¦ãƒ«ãƒ¼ãƒ—を抜ã‘られるよã†ã«ã—ã¾ã™ã€‚"
+"<emphasis>ãã‚“ãªãƒ«ãƒ¼ãƒ—ã¯ã‚ã‚Šå¾—ãªã„ã¯ãšã§ã€ã‚ã‚‹ã¨ã™ã‚Œã°é‡å¤§ãªãƒã‚°ã§ã™ã€‚</"
+"emphasis>ã“ã®ã‚ªãƒ—ションã¯ã€<command>tar</command>, <command>gzip</command>, "
+"<command>libc</command>, <command>dpkg</command>, <command>dash</command> ã¨"
+"ãれらãŒä¾å­˜ã—ã¦ã„るパッケージ以外ã®ä¸å¯æ¬ ãƒ‘ッケージã§å‹•ä½œã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"APT uses since version 0.7.26 a resizable memory mapped cache file to store "
+"the available information. <literal>Cache-Start</literal> acts as a hint of "
+"the size the cache will grow to, and is therefore the amount of memory APT "
+"will request at startup. The default value is 20971520 bytes (~20 MB). Note "
+"that this amount of space needs to be available for APT; otherwise it will "
+"likely fail ungracefully, so for memory restricted devices this value should "
+"be lowered while on systems with a lot of configured sources it should be "
+"increased. <literal>Cache-Grow</literal> defines in bytes with the default "
+"of 1048576 (~1 MB) how much the cache size will be increased in the event "
+"the space defined by <literal>Cache-Start</literal> is not enough. This "
+"value will be applied again and again until either the cache is big enough "
+"to store all information or the size of the cache reaches the <literal>Cache-"
+"Limit</literal>. The default of <literal>Cache-Limit</literal> is 0 which "
+"stands for no limit. If <literal>Cache-Grow</literal> is set to 0 the "
+"automatic growth of the cache is disabled."
+msgstr ""
+"APT ã¯ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 0.7.26 ã‹ã‚‰ã€åˆ©ç”¨ã§ãる情報を格ç´ã™ã‚‹ãŸã‚ã€ã‚µã‚¤ã‚ºå¯å¤‰ãªãƒ¡"
+"モリマップキャッシュファイルを使用ã—ã¾ã™ã€‚<literal>Cache-Start</literal> ã¯ã€"
+"キャッシュサイズãŒå¢—大ã—ã¦ã„ãヒントã¨ã—ã¦å‹•ä½œã—ã€å¾“ã£ã¦ APT ãŒèµ·å‹•æ™‚ã«è¦æ±‚ã™"
+"るメモリé‡ã§ã™ã€‚デフォルト値ã¯ã€20971520 ãƒã‚¤ãƒˆ (~20 MB) ã§ã™ã€‚ã“ã®é ˜åŸŸã®é‡"
+"ãŒã€APT ã«åˆ©ç”¨å¯èƒ½ã«ãªã£ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。ãã†ã§ãªã‘ã‚Œ"
+"ã°ã€ç„¡æ§˜ã«å¤±æ•—ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ãã®ãŸã‚ã€ãƒ¡ãƒ¢ãƒªã«åˆ¶é™ã®ã‚るデãƒã‚¤ã‚¹ã§ã€ãŸ"
+"ãã•ã‚“ã®ã‚½ãƒ¼ã‚¹ãŒè¨­å®šã•ã‚Œã€ãã‚ŒãŒå¢—加ã—ã¦ã„ãシステムã§ã¯ã€ã“ã®å€¤ã‚’より低ãã—"
+"ã¦ãŠãã¹ãã§ã™ã€‚<literal>Cache-Grow</literal> ã¯ã€<literal>Cache-Start</"
+"literal> ãŒè¶³ã‚Šãªããªã£ãŸã¨ã„ã†é ˜åŸŸå®šç¾©ã‚¤ãƒ™ãƒ³ãƒˆã«ã‚ˆã‚Šã€ã©ã®ç¨‹åº¦ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚µã‚¤"
+"ズを増加ã•ã›ã‚‹ã‹ã‚’ã€ãƒã‚¤ãƒˆæ•°ã§å®šç¾©ã—ã¾ã™ã€‚デフォルト㯠1048576 (~1 MB) ã§ã™ã€‚"
+"ã“ã®å€¤ã¯å…¨æƒ…報を格ç´ã§ãã‚‹é‡ã«ãªã‚‹ã‹ã€<literal>Cache-Limit</literal> ã«é”ã™ã‚‹"
+"ã¾ã§ã€ç¹°ã‚Šè¿”ã—é©ç”¨ã•ã‚Œã¾ã™ã€‚<literal>Cache-Limit</literal> ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯ 0 "
+"ã§ã€ç„¡åˆ¶é™ã§ã™ã€‚<literal>Cache-Grow</literal> ã« 0 をセットã™ã‚‹ã¨ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥"
+"ã®è‡ªå‹•å¢—加を無効ã«ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Defines which packages are considered essential build dependencies."
+msgstr "構築ä¾å­˜é–¢ä¿‚ã§ä¸å¯æ¬ ãªãƒ‘ッケージを定義ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Get subsection controls the &apt-get; tool; please see its documentation "
+"for more information about the options here."
+msgstr ""
+"Get サブセクション㯠&apt-get; ツールを制御ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ—ションã®è©³ç´°ã¯ "
+"&apt-get; ã®æ–‡æ›¸ã‚’å‚ç…§ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Cache subsection controls the &apt-cache; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"Cache サブセクション㯠&apt-cache; ツールを制御ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ—ションã®è©³ç´°"
+"㯠&apt-cache; ã®æ–‡æ›¸ã‚’å‚ç…§ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The CDROM subsection controls the &apt-cdrom; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"CDROM サブセクション㯠&apt-cdrom; ツールを制御ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ—ションã®è©³ç´°"
+"㯠&apt-cdrom; ã®æ–‡æ›¸ã‚’å‚ç…§ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "The Acquire Group"
+msgstr "Acquire グループ"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Acquire</literal> group of options controls the download of "
+"packages as well as the various \"acquire methods\" responsible for the "
+"download itself (see also &sources-list;)."
+msgstr ""
+"オプション㮠<literal>Acquire</literal> グループã¯ã€ãƒ‘ッケージã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰"
+"やダウンロードã«é–¢ã—ã¦è²¬ä»»ã‚’æŒã¤ã€æ§˜ã€…ãªã€Œå–å¾— (acquire) 方法〠を制御ã—ã¾ã™ "
+"(&sources-list; ã‚‚å‚ç…§)。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Security related option defaulting to true, as giving a Release file's "
+"validation an expiration date prevents replay attacks over a long timescale, "
+"and can also for example help users to identify mirrors that are no longer "
+"updated - but the feature depends on the correctness of the clock on the "
+"user system. Archive maintainers are encouraged to create Release files with "
+"the <literal>Valid-Until</literal> header, but if they don't or a stricter "
+"value is desired the <literal>Max-ValidTime</literal> option below can be "
+"used. The <option>Check-Valid-Until</option> option of &sources-list; "
+"entries should be preferred to disable the check selectively instead of "
+"using this global override."
+msgstr ""
+"セキュリティ関連ã®ã‚ªãƒ—ションã§ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯ true ã§ã™ã€‚Release ファイルã®æœ‰"
+"効期é™æ¤œè¨¼ã«ã‚ˆã‚Šã€é•·æœŸé–“ã®ãƒªãƒ—レイ攻撃を防ãŽã¾ã™ã€‚ã•ã‚‰ã«ã€ä¾‹ãˆã°ãƒ¦ãƒ¼ã‚¶ãŒã€ã‚‚"
+"ã†æ›´æ–°ã•ã‚Œãªã„ミラーサイトを識別ã™ã‚‹ã®ã‚’支æ´ã—ã¾ã™ã€‚ã—ã‹ã—ã“ã®æ©Ÿèƒ½ã¯ã€ãƒ¦ãƒ¼ã‚¶"
+"ã®ã‚·ã‚¹ãƒ†ãƒ æ™‚計ãŒæ­£ç¢ºã§ã‚ã‚‹ã“ã¨ã«ä¾å­˜ã—ã¦ã„ã¾ã™ã€‚アーカイブメンテナã¯ã€"
+"<literal>Valid-Until</literal> ヘッダãŒã‚ã‚‹ Release ファイルを作æˆã™ã‚‹ã‚ˆã†æŽ¨"
+"奨ã•ã‚Œã¦ã„ã¾ã™ãŒã€ã“ã®ãƒ˜ãƒƒãƒ€ã‚’付与ã—ãªã„ã€ã¾ãŸã¯ã‚ˆã‚ŠåŽ³å¯†ãªå€¤ãŒå¿…è¦ãªå ´åˆã€ä»¥"
+"下㮠<literal>Max-ValidTime</literal> オプションを使用ã§ãã¾ã™ã€‚&sources-"
+"list; エントリ㮠<option>Check-Valid-Until</option> オプションã¯ã€ã‚°ãƒ­ãƒ¼ãƒãƒ«"
+"オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã‚’使ã†ä»£ã‚ã‚Šã«é¸æŠžçš„ã«ãƒã‚§ãƒƒã‚¯ã‚’無効ã«ã™ã‚‹ã“ã¨ãŒå¥½ã¾ã—ã„ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Maximum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. If the Release file itself includes a "
+"<literal>Valid-Until</literal> header the earlier date of the two is used as "
+"the expiration date. The default value is <literal>0</literal> which stands "
+"for \"valid forever\". Archive specific settings can be made by appending "
+"the label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the <option>Valid-"
+"Until-Max</option> option there."
+msgstr ""
+"<filename>Release</filename> ファイルを作æˆã—ã¦ã‹ã‚‰ (<literal>Date</literal> "
+"ヘッダ)ã€æœ‰åŠ¹ã§ã‚ã‚‹ã¨ã¿ãªã›ã‚‹æœ€å¤§æ™‚é–“ (秒数) ã§ã™ã€‚Release ファイル自体㫠"
+"<literal>Valid-Until</literal> ヘッダãŒã‚ã‚‹å ´åˆã€ãã® 2 ã¤ã®ã†ã¡ã€ã‚ˆã‚Šæ—©ã„æ—¥"
+"付ãŒæœ‰åŠ¹æœŸé–“ã¨ã—ã¦ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚デフォルト値㯠<literal>0</literal> ã§ã€Œç„¡æœŸ"
+"é™ã€ã‚’表ã—ã¾ã™ã€‚オプションåã«ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã®ãƒ©ãƒ™ãƒ«ã‚’付与ã™ã‚‹ã“ã¨ã§ã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–"
+"固有ã®è¨­å®šã‚’作æˆã§ãã¾ã™ã€‚ã¾ãŸã¯ã€<option>Valid-Until-Max</option> オプション"
+"を使用ã—ã¦ç‰¹å®šã® &sources-list; エントリã§åŒã˜ã“ã¨ã‚’é”æˆã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Minimum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. Use this if you need to use a seldom updated "
+"(local) mirror of a more frequently updated archive with a <literal>Valid-"
+"Until</literal> header instead of completely disabling the expiration date "
+"checking. Archive specific settings can and should be used by appending the "
+"label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the <option>Valid-"
+"Until-Min</option> option there."
+msgstr ""
+"<filename>Release</filename> ファイルを作æˆã—ã¦ã‹ã‚‰ (<literal>Date</literal> "
+"ヘッダ)ã€æœ‰åŠ¹ã§ã‚ã‚‹ã¨ã¿ãªã›ã‚‹æœ€å°æ™‚é–“ (秒数) ã§ã™ã€‚<literal>Valid-Until</"
+"literal> ãŒã‚ã‚‹é »ç¹ã«æ›´æ–°ã•ã‚Œã‚‹ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã®ã€ã»ã¨ã‚“ã©æ›´æ–°ã•ã‚Œãªã„ (ローカル) "
+"ミラーを使用ã™ã‚‹å ´åˆã«ã€å®Œå…¨ã«æœ‰åŠ¹æœŸé™ãƒã‚§ãƒƒã‚¯ã‚’無効ã«ã™ã‚‹ä»£ã‚ã‚Šã«ä½¿ç”¨ã—ã¦ã"
+"ã ã•ã„。オプションåã«ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã®ãƒ©ãƒ™ãƒ«ã‚’付与ã™ã‚‹ã“ã¨ã§ã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–固有ã®è¨­"
+"定を作æˆã§ãã¾ã™ã€‚ã¾ãŸã¯ã€<option>Valid-Until-Min</option> オプションを使用ã—"
+"ã¦ç‰¹å®šã® &sources-list; エントリã§åŒã˜ã“ã¨ã‚’é”æˆã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Try to download deltas called <literal>PDiffs</literal> for indexes (like "
+"<filename>Packages</filename> files) instead of downloading whole ones. True "
+"by default. Preferably, this can be set for specific &sources-list; entries "
+"or index files by using the <option>PDiffs</option> option there."
+msgstr ""
+"(<filename>Packages</filename> ã®ã‚ˆã†ãª) インデックス全体をダウンロードã™ã‚‹ã®"
+"ã§ã¯ãªãã€<literal>PDiffs</literal> ã¨å‘¼ã°ã‚Œã‚‹å·®åˆ†ã‚’ダウンロードã—よã†ã¨ã—ã¾"
+"ã™ã€‚デフォルトã§ã¯ True ã§ã™ã€‚ã¾ãŸã¯ã€<option>PDiffs</option> オプションを使"
+"用ã—ã¦ç‰¹å®šã® &sources-list; エントリã¾ãŸã¯ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã§ã“れを設定ã§"
+"ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Two sub-options to limit the use of PDiffs are also available: "
+"<literal>FileLimit</literal> can be used to specify a maximum number of "
+"PDiff files should be downloaded to update a file. <literal>SizeLimit</"
+"literal> on the other hand is the maximum percentage of the size of all "
+"patches compared to the size of the targeted file. If one of these limits is "
+"exceeded the complete file is downloaded instead of the patches."
+msgstr ""
+"PDiffs ã®ä½¿ç”¨ã‚’制é™ã™ã‚‹ãµãŸã¤ã®ã‚µãƒ–オプションãŒã‚ã‚Šã¾ã™ã€‚<literal>FileLimit</"
+"literal> ã§ã¯ã€ãƒ•ã‚¡ã‚¤ãƒ«ã‚’æ›´æ–°ã™ã‚‹ã®ã«ã€PDiff ファイルをダウンロードã§ãる最大"
+"数を指定ã—ã¾ã™ã€‚一方ã€<literal>SizeLimit</literal> ã¯ã€å¯¾è±¡ãƒ•ã‚¡ã‚¤ãƒ«ã®ã‚µã‚¤ã‚ºã«"
+"対ã—ã¦ã€å…¨ãƒ‘ッãƒã‚µã‚¤ã‚ºã®æœ€å¤§ãƒ‘ーセンテージを指定ã—ã¾ã™ã€‚ã©ã¡ã‚‰ã®åˆ¶é™ã‚’超ãˆã¦"
+"ã‚‚ã€ãƒ‘ッãƒã‚’ダウンロードã™ã‚‹ä»£ã‚ã‚Šã«ã€å®Œå…¨ãªãƒ•ã‚¡ã‚¤ãƒ«ã‚’ダウンロードã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Try to download indexes via an URI constructed from a hashsum of the "
+"expected file rather than downloaded via a well-known stable filename. True "
+"by default, but automatically disabled if the source indicates no support "
+"for it. Usage can be forced with the special value \"force\". Preferably, "
+"this can be set for specific &sources-list; entries or index files by using "
+"the <option>By-Hash</option> option there."
+msgstr ""
+"(<filename>Packages</filename> ã®ã‚ˆã†ãª) インデックス全体をダウンロードã™ã‚‹ã®"
+"ã§ã¯ãªãã€<literal>PDiffs</literal> ã¨å‘¼ã°ã‚Œã‚‹å·®åˆ†ã‚’ダウンロードã—よã†ã¨ã—ã¾"
+"ã™ã€‚デフォルトã§ã¯ True ã§ã™ã€‚ã¾ãŸã¯ã€<option>By-Hash</option> オプションを使"
+"用ã—ã¦ç‰¹å®šã® &sources-list; エントリã¾ãŸã¯ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã§ã“れを設定ã§"
+"ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</"
+"literal> or <literal>access</literal> which determines how APT parallelizes "
+"outgoing connections. <literal>host</literal> means that one connection per "
+"target host will be opened, <literal>access</literal> means that one "
+"connection per URI type will be opened."
+msgstr ""
+"キューモード - <literal>Queue-Mode</literal> ã¯ã€APT ãŒã©ã®ã‚ˆã†ã«ä¸¦åˆ—接続を行"
+"ã†ã‹ã€<literal>host</literal> ã‹ <literal>access</literal> ã§æŒ‡å®šã§ãã¾ã™ã€‚"
+"<literal>host</literal> ã¯ã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãƒ›ã‚¹ãƒˆã”ã¨ã« 1 接続を開ãã¾ã™ã€‚"
+"<literal>access</literal> ã¯ã€URI タイプã”ã¨ã« 1 接続を開ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Number of retries to perform. If this is non-zero APT will retry failed "
+"files the given number of times."
+msgstr ""
+"リトライã®å›žæ•°ã‚’設定ã—ã¾ã™ã€‚0 ã§ãªã„å ´åˆã€APT ã¯å¤±æ•—ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«å¯¾ã—ã¦ã€ä¸Ž"
+"ãˆã‚‰ã‚ŒãŸå›žæ•°ã ã‘リトライを行ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Use symlinks for source archives. If set to true then source archives will "
+"be symlinked when possible instead of copying. True is the default."
+msgstr ""
+"ソースアーカイブã®ã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒªãƒ³ã‚¯ã‚’使用ã—ã¾ã™ã€‚true ãŒã‚»ãƒƒãƒˆã•ã‚Œã¦ã„ã‚‹ã¨"
+"ãã€å¯èƒ½ãªã‚‰ã‚³ãƒ”ーã®ä»£ã‚ã‚Šã«ã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒªãƒ³ã‚¯ã‚’張りã¾ã™ã€‚true ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§"
+"ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>http::Proxy</literal> sets the default proxy to use for HTTP URIs. "
+"It is in the standard form of <literal>http://[[user][:pass]@]host[:port]/</"
+"literal>. Per host proxies can also be specified by using the form "
+"<literal>http::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>http_proxy</envar> environment variable will "
+"be used."
+msgstr ""
+"<literal>http::Proxy</literal> ã«ã¯ã€HTTP URI ã§ä½¿ç”¨ã™ã‚‹ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒ—ロキシを"
+"設定ã—ã¾ã™ã€‚<literal>http://[[user][:pass]@]host[:port]/</literal> ã¨ã„ã†æ¨™æº–"
+"å½¢ã§è¡¨ã—ã¾ã™ã€‚ホストã”ã¨ã®ãƒ—ロキシをã€<literal>http::Proxy::&lt;host&gt;</"
+"literal> ã¨ã„ã†å½¢ã§æŒ‡å®šã§ãã¾ã™ã€‚ã“ã®æ™‚ã€ãƒ—ロキシを使用ã—ãªã„ã¨ã„ã†æ„味ã®ç‰¹æ®Š"
+"キーワード <literal>DIRECT</literal> も使用ã§ãã¾ã™ã€‚上記ã®è¨­å®šã‚’ãªã«ã‚‚指定ã—"
+"ãªã„ã¨ã€ç’°å¢ƒå¤‰æ•° <envar>http_proxy</envar> を使用ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Three settings are provided for cache control with HTTP/1.1 compliant proxy "
+"caches. <literal>No-Cache</literal> tells the proxy not to use its cached "
+"response under any circumstances. <literal>Max-Age</literal> sets the "
+"allowed maximum age (in seconds) of an index file in the cache of the "
+"proxy. <literal>No-Store</literal> specifies that the proxy should not "
+"store the requested archive files in its cache, which can be used to prevent "
+"the proxy from polluting its cache with (big) .deb files."
+msgstr ""
+"HTTP/1.1 準拠ã®ãƒ—ロキシキャッシュã®åˆ¶å¾¡ã«ã¤ã„㦠3 種類ã®è¨­å®šãŒã‚ã‚Šã¾ã™ã€‚"
+"<literal>No-Cache</literal> ã¯ãƒ—ロキシã«å¯¾ã—ã¦ã€ã„ã‹ãªã‚‹æ™‚もキャッシュを使用"
+"ã—ãªã„ã¨ä¼ãˆã¾ã™ã€‚<literal>Max-Age</literal> ã¯ã€ãƒ—ロキシã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã«ã‚るイ"
+"ンデックスファイルã®æœ€å¤§åˆ©ç”¨æœŸé–“ (秒) を設定ã—ã¾ã™ã€‚<literal>No-Store</"
+"literal> ã¯ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã—ãŸã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ファイルをã€ãƒ—ロキシãŒã‚­ãƒ£ãƒƒã‚·ãƒ¥ã«æ ¼ç´ã—"
+"ãªã„よã†ã«æŒ‡å®šã—ã¾ã™ã€‚ã“ã‚Œã«ã‚ˆã‚Š (大ããª) .deb ファイルã§ãƒ—ロキシã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥"
+"ãŒæ±šã‚Œã‚‹ã®ã‚’防ã’ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The option <literal>timeout</literal> sets the timeout timer used by the "
+"method; this value applies to the connection as well as the data timeout."
+msgstr ""
+"<literal>timeout</literal> オプションã¯ã€ã“ã®æ–¹æ³•ã§ã®ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã¾ã§ã®æ™‚é–“ã‚’"
+"設定ã—ã¾ã™ã€‚ã“ã‚Œã«ã¯ã€æŽ¥ç¶šã®ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã¨ãƒ‡ãƒ¼ã‚¿ã®ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆãŒå«ã¾ã‚Œã¦ã„ã¾"
+"ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e."
+"g. on high-latency connections. It specifies how many requests are sent in a "
+"pipeline. APT tries to detect and workaround misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the "
+"HTTP/1.1 specification pipelining can be disabled by setting the value to 0. "
+"It is enabled by default with the value 10."
+msgstr ""
+"<literal>Acquire::http::Pipeline-Depth</literal> ã®è¨­å®šã¯ã€ä¾‹ãˆã°ãƒ¬ã‚¤ãƒ†ãƒ³ã‚·ã®"
+"高ã„接続ã§æœ‰ç›Šãª HTTP パイプライン (RFC 2616 8.1.2.2 節) を有効ã«ã™ã‚‹ã®ã«ä½¿ç”¨"
+"ã§ãã¾ã™ã€‚APT ã¯ã€å®Ÿè¡Œæ™‚ã® Web サーãƒã‚„プロキシã®ä¸ä½œæ³•ãªæŒ¯ã‚‹èˆžã„ã®æ¤œå‡ºã¨å›žé¿"
+"策を試ã—ã¾ã™ã€‚ã—ã‹ã—ã€HTTP/1.1 仕様ã«æº–æ‹ ã—ã¦ã„ãªã„ã“ã¨ãŒã‚ã‹ã£ã¦ã„ã‚‹å ´åˆã¯ã€"
+"値を 0 ã«è¨­å®šã™ã‚‹ã“ã¨ã§ãƒ‘イプラインを無効ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã‚Œã¯ã€ãƒ‡ãƒ•ã‚©"
+"ルトã§å€¤ 10 ã§æœ‰åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::AllowRedirect</literal> controls whether APT will "
+"follow redirects, which is enabled by default."
+msgstr ""
+"<literal>Acquire::http::AllowRedirect</literal> 㯠APT ãŒãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã‚’ãŸã©ã‚‹"
+"ã‹ã©ã†ã‹ã‚’制御ã—ã¾ã™ã€‚デフォルトã§ã¯æœ‰åŠ¹ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</"
+"literal> which accepts integer values in kilobytes per second. The default "
+"value is 0 which deactivates the limit and tries to use all available "
+"bandwidth. Note that this option implicitly disables downloading from "
+"multiple servers at the same time."
+msgstr ""
+"使用ã™ã‚‹å¸¯åŸŸã‚’制é™ã™ã‚‹ã«ã¯ã€<literal>Acquire::http::Dl-Limit</literal> ã«ç§’ã‚"
+"ãŸã‚Šã®ã‚­ãƒ­ãƒã‚¤ãƒˆã§æ•´æ•°å€¤ã‚’与ãˆã¾ã™ã€‚デフォルト値㯠0 ã§ã€åˆ¶é™ã‚’解除ã—ã€ä½¿ç”¨ã§"
+"ãる帯域をã™ã¹ã¦ä½¿ãŠã†ã¨ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ—ションã¯æš—黙的ã«ã€åŒæ™‚ã«è¤‡æ•°ã®ã‚µãƒ¼ãƒ"
+"ã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ãªããªã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::User-Agent</literal> can be used to set a different "
+"User-Agent for the http download method as some proxies allow access for "
+"clients only if the client uses a known identifier."
+msgstr ""
+"クライアントãŒæ—¢çŸ¥ã®è­˜åˆ¥å­ã‚’使用ã™ã‚‹å ´åˆã«ã®ã¿ã€ãƒ—ロキシãŒã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã™ã‚‹"
+"å ´åˆã€<literal>Acquire::http::User-Agent</literal> を使用ã—ã¦ã€http ã§ãƒ€ã‚¦ãƒ³"
+"ロードã™ã‚‹ãŸã‚ã®ã€ç•°ãªã‚‹ User-Agent を設定ã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::Proxy-Auto-Detect</literal> can be used to specify "
+"an external command to discover the http proxy to use. The first and only "
+"parameter is an URI denoting the host to be contacted to allow for host-"
+"specific configuration. APT expects the command to output the proxy on "
+"stdout as a single line in the style <literal>http://proxy:port/</literal> "
+"or the word <literal>DIRECT</literal> if no proxy should be used. No output "
+"indicates that the generic proxy settings should be used. Note that auto-"
+"detection will not be used for a host if a host-specific proxy configuration "
+"is already set via <literal>Acquire::http::Proxy::<replaceable>HOST</"
+"replaceable></literal>. See the &squid-deb-proxy-client; package for an "
+"example implementation that uses avahi. This option takes precedence over "
+"the legacy option name <literal>ProxyAutoDetect</literal>."
+msgstr ""
+"<literal>Acquire::http::Proxy-Auto-Detect</literal> を使ã£ã¦åˆ©ç”¨ã™ã‚‹ http プ"
+"ロキシを検出ã™ã‚‹ãŸã‚ã®å¤–部コマンドを指定ã§ãã¾ã™ã€‚最åˆã§å”¯ä¸€ã®ãƒ‘ラメータã¯ãƒ›"
+"スト固有ã®è¨­å®šã‚’å¯èƒ½ã«ã™ã‚‹ãŸã‚ã«é€šä¿¡ã™ã‚‹å…ˆã®ãƒ›ã‚¹ãƒˆã‚’示ã™URIã§ã™ã€‚APT ã¯ã‚³ãƒžãƒ³"
+"ドãŒæ¨™æº–出力ã«1行㮠<literal>http://proxy:port/</literal> å½¢å¼ã§ãƒ—ロキシを出"
+"力ã€ã‚ã‚‹ã„ã¯ãƒ—ロキシを何も使ã‚ãªã„å ´åˆã«ã¯ <literal>DIRECT</literal> ã¨ã„ã†èªž"
+"を出力ã™ã‚‹ã“ã¨ã‚’期待ã—ã¦ã„ã¾ã™ã€‚出力ã—ãªã„å ´åˆã¯ä¸€èˆ¬ã®ãƒ—ロキシ設定を利用ã™ã‚‹"
+"ã“ã¨ã«ãªã‚Šã¾ã™ã€‚<literal>Acquire::http::Proxy::<replaceable>HOST</"
+"replaceable></literal> ã«ã‚ˆã£ã¦ãƒ›ã‚¹ãƒˆå›ºæœ‰ã®ãƒ—ロキシ設定ãŒã‚»ãƒƒãƒˆã•ã‚Œã¦ã„ã‚‹ã¨ã"
+"ã®ãƒ›ã‚¹ãƒˆã«ã¤ã„ã¦ã¯è‡ªå‹•æ¤œå‡ºãŒè¡Œã‚ã‚Œãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。avahi を利用ã™"
+"る実装例ã«ã¤ã„ã¦ã¯ &squid-deb-proxy-client; パッケージを見ã¦ãã ã•ã„。ã“ã®ã‚ª"
+"プションã¯å¤ã„ <literal>ProxyAutoDetect</literal> よりも優先ã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Cache-control</literal>, <literal>Timeout</literal>, "
+"<literal>AllowRedirect</literal>, <literal>Dl-Limit</literal> and "
+"<literal>proxy</literal> options work for HTTPS URIs in the same way as for "
+"the <literal>http</literal> method, and default to the same values if they "
+"are not explicitly set. The <literal>Pipeline-Depth</literal> option is not "
+"yet supported."
+msgstr ""
+"<literal>Cache-control</literal>, <literal>Timeout</literal>, "
+"<literal>AllowRedirect</literal>, <literal>Dl-Limit</literal>, "
+"<literal>proxy</literal> ã®å„オプションã¯ã€HTTPS URI ã§ã‚‚ <literal>http</"
+"literal> メソッドã¨åŒæ§˜ã«å‹•ä½œã—ã¾ã™ã€‚ã¾ãŸã€æ˜Žç¤ºçš„ã«å€¤ã‚’指定ã—ãªã„å ´åˆã®ãƒ‡ãƒ•ã‚©"
+"ルト値もåŒæ§˜ã§ã™ã€‚<literal>Pipeline-Depth</literal> オプションã¯ã¾ã ã‚µãƒãƒ¼ãƒˆ"
+"ã—ã¦ã„ã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>CaInfo</literal> suboption specifies place of file that holds info "
+"about trusted certificates. <literal>&lt;host&gt;::CaInfo</literal> is the "
+"corresponding per-host option. <literal>Verify-Peer</literal> boolean "
+"suboption determines whether or not the server's host certificate should be "
+"verified against trusted certificates. <literal>&lt;host&gt;::Verify-Peer</"
+"literal> is the corresponding per-host option. <literal>Verify-Host</"
+"literal> boolean suboption determines whether or not the server's hostname "
+"should be verified. <literal>&lt;host&gt;::Verify-Host</literal> is the "
+"corresponding per-host option. <literal>SslCert</literal> determines what "
+"certificate to use for client authentication. <literal>&lt;host&gt;::"
+"SslCert</literal> is the corresponding per-host option. <literal>SslKey</"
+"literal> determines what private key to use for client authentication. "
+"<literal>&lt;host&gt;::SslKey</literal> is the corresponding per-host "
+"option. <literal>SslForceVersion</literal> overrides default SSL version to "
+"use. It can contain either of the strings '<literal>TLSv1</literal>' or "
+"'<literal>SSLv3</literal>'. <literal>&lt;host&gt;::SslForceVersion</"
+"literal> is the corresponding per-host option."
+msgstr ""
+"<literal>CaInfo</literal> サブオプションã¯ã€ä¿¡é ¼æ¸ˆã¿è¨¼æ˜Žæ›¸æƒ…å ±ã®ä¿æŒå ´æ‰€ã‚’指"
+"定ã—ã¾ã™ã€‚<literal>&lt;host&gt;::CaInfo</literal> ã¯ã€åŒæ§˜ã®ãƒ›ã‚¹ãƒˆã”ã¨ã®ã‚ªãƒ—"
+"ションã§ã™ã€‚<literal>Verify-Peer</literal> 真å½å€¤ã‚µãƒ–オプションã¯ã€ä¿¡é ¼æ¸ˆã¿è¨¼"
+"明書ã«å¯¾ã—ã¦ã‚µãƒ¼ãƒã®ãƒ›ã‚¹ãƒˆè¨¼æ˜Žæ›¸ã‚’ã€æ¤œè¨¼ã™ã‚‹ã‹ã©ã†ã‹ã‚’決定ã—ã¾ã™ã€‚"
+"<literal>&lt;host&gt;::Verify-Peer</literal> ã¯ã€åŒæ§˜ã®ãƒ›ã‚¹ãƒˆã”ã¨ã®ã‚ªãƒ—ション"
+"ã§ã™ã€‚<literal>Verify-Host</literal> 真å½å€¤ã‚µãƒ–オプションã¯ã€ã‚µãƒ¼ãƒã®ãƒ›ã‚¹ãƒˆå"
+"を検証ã™ã‚‹ã‹ã©ã†ã‹ã‚’決定ã—ã¾ã™ã€‚<literal>&lt;host&gt;::Verify-Host</literal> "
+"ã¯ã€åŒæ§˜ã®ãƒ›ã‚¹ãƒˆã”ã¨ã®ã‚ªãƒ—ションã§ã™ã€‚<literal>SslCert</literal> ã¯ã€ã‚¯ãƒ©ã‚¤ã‚¢"
+"ントèªè¨¼ã«ä½¿ç”¨ã™ã‚‹è¨¼æ˜Žæ›¸ã‚’決定ã—ã¾ã™ã€‚<literal>&lt;host&gt;::SslCert</"
+"literal> ã¯ã€åŒæ§˜ã®ãƒ›ã‚¹ãƒˆã”ã¨ã®ã‚ªãƒ—ションã§ã™ã€‚<literal>SslKey</literal> ã¯ã€"
+"クライアントèªè¨¼ã«ä½¿ç”¨ã™ã‚‹ç§˜å¯†éµã‚’決定ã—ã¾ã™ã€‚<literal>&lt;host&gt;::SslKey</"
+"literal> ã¯ã€åŒæ§˜ã®ãƒ›ã‚¹ãƒˆã”ã¨ã®ã‚ªãƒ—ションã§ã™ã€‚<literal>SslForceVersion</"
+"literal> ã¯ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ä½¿ç”¨ã™ã‚‹ SSL ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’上書ãã—ã¾"
+"ã™ã€‚'<literal>TLSv1</literal>' ã‹ '<literal>SSLv3</literal>' ã¨ã„ã†æ–‡å­—列を指"
+"定ã§ãã¾ã™ã€‚<literal>&lt;host&gt;::SslForceVersion</literal> ã¯ã€åŒæ§˜ã®ãƒ›ã‚¹ãƒˆ"
+"ã”ã¨ã®ã‚ªãƒ—ションã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs. "
+"It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</"
+"literal>. Per host proxies can also be specified by using the form "
+"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
+"used. To use an FTP proxy you will have to set the <literal>ftp::ProxyLogin</"
+"literal> script in the configuration file. This entry specifies the commands "
+"to send to tell the proxy server what to connect to. Please see "
+"&configureindex; for an example of how to do this. The substitution "
+"variables representing the corresponding URI component are <literal>"
+"$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, <literal>"
+"$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, <literal>$(SITE)</"
+"literal> and <literal>$(SITE_PORT)</literal>."
+msgstr ""
+"<literal>ftp::Proxy</literal> ã¯ã€FTP URI を使用ã™ã‚‹éš›ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒ—ロキシを"
+"設定ã—ã¾ã™ã€‚<literal>ftp://[[user][:pass]@]host[:port]/</literal> ã¨ã„ã†æ¨™æº–"
+"å½¢ã§è¡¨ã—ã¾ã™ã€‚ホストã”ã¨ã®ãƒ—ロキシをã€<literal>ftp::Proxy::&lt;host&gt;</"
+"literal> ã¨ã„ã†å½¢ã§æŒ‡å®šã§ãã¾ã™ã€‚ã“ã®æ™‚ã€ãƒ—ロキシを使用ã—ãªã„ã¨ã„ã†æ„味ã®ç‰¹æ®Š"
+"キーワード <literal>DIRECT</literal> も使用ã§ãã¾ã™ã€‚上記ã®è¨­å®šã‚’ãªã«ã‚‚指定ã—"
+"ãªã„ã¨ã€ç’°å¢ƒå¤‰æ•° <envar>ftp_proxy</envar> を使用ã—ã¾ã™ã€‚FTP プロキシを使用ã™"
+"ã‚‹ã«ã¯ã€è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã« <literal>ftp::ProxyLogin</literal> スクリプトを設定ã™"
+"ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ã“ã®ã‚¨ãƒ³ãƒˆãƒªã«ã¯ã€æŽ¥ç¶šã™ã‚‹éš›ã«ãƒ—ロキシサーãƒã«é€ä¿¡ã™ã‚‹ã‚³ãƒž"
+"ンドを設定ã—ã¾ã™ã€‚ã©ã®ã‚ˆã†ã«ã™ã‚‹ã®ã‹ã¯ &configureindex; ã®ä¾‹ã‚’å‚ç…§ã—ã¦ãã ã•"
+"ã„。URI を構æˆã™ã‚‹ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã«å¯¾å¿œã™ã‚‹ç½®æ›å¤‰æ•°ã¯ã€<literal>"
+"$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, <literal>"
+"$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, <literal>$(SITE)</"
+"literal>, <literal>$(SITE_PORT)</literal> ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Several settings are provided to control passive mode. Generally it is safe "
+"to leave passive mode on; it works in nearly every environment. However, "
+"some situations require that passive mode be disabled and port mode FTP used "
+"instead. This can be done globally or for connections that go through a "
+"proxy or for a specific host (see the sample config file for examples)."
+msgstr ""
+"設定ã®ã„ãã¤ã‹ã¯ã€ãƒ‘ッシブモードを制御ã™ã‚‹ã‚‚ã®ã§ã™ã€‚一般的ã«ã€ãƒ‘ッシブモード"
+"ã®ã¾ã¾ã«ã—ã¦ãŠãæ–¹ãŒå®‰å…¨ã§ã€ã»ã¼ã©ã‚“ãªç’°å¢ƒã§ã‚‚動作ã—ã¾ã™ã€‚ã—ã‹ã—ã‚る状æ³ä¸‹ã§"
+"ã¯ã€ãƒ‘ッシブモードãŒç„¡åŠ¹ã®ãŸã‚ã€ä»£ã‚ã‚Šã«ãƒãƒ¼ãƒˆãƒ¢ãƒ¼ãƒ‰ FTP を使用ã™ã‚‹å¿…è¦ãŒã‚ã‚Š"
+"ã¾ã™ã€‚ã“ã®è¨­å®šã¯ã€ãƒ—ロキシを通る接続や特定ã®ãƒ›ã‚¹ãƒˆã¸ã®æŽ¥ç¶šå…¨èˆ¬ã«æœ‰åŠ¹ã§ã™ (設"
+"定例ã¯ã‚µãƒ³ãƒ—ル設定ファイルをå‚ç…§ã—ã¦ãã ã•ã„)。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
+"envar> environment variable to an HTTP URL - see the discussion of the http "
+"method above for syntax. You cannot set this in the configuration file and "
+"it is not recommended to use FTP over HTTP due to its low efficiency."
+msgstr ""
+"環境変数 <envar>ftp_proxy</envar> ã« HTTP URL を指定ã™ã‚‹ã¨ FTP over HTTP ã®ãƒ—"
+"ロキシãŒåˆ©ç”¨å¯èƒ½ã«ãªã‚Šã¾ã™ã€‚構文ã¯å‰è¿°ã® http ã«ã¤ã„ã¦ã®èª¬æ˜Žã‚’å‚ç…§ã—ã¦ãã ã•"
+"ã„。設定ファイルã®ä¸­ã§ã“れをセットã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。ã¾ãŸã€åŠ¹çŽ‡ãŒæ‚ªã„ãŸã‚ "
+"FTP over HTTP を使用ã™ã‚‹ã®ã¯æŽ¨å¥¨ã—ã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
+"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
+"false, which means these commands are only used if the control connection is "
+"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
+"that most FTP servers do not support RFC2428."
+msgstr ""
+"<literal>ForceExtended</literal> ã®è¨­å®šã¯ RFC2428 ã® <literal>EPSV</literal> "
+"コマンド㨠<literal>EPRT</literal> コマンドã®ä½¿ç”¨ã‚’制御ã—ã¾ã™ã€‚デフォルトã§"
+"㯠false ã§ã€ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ãŒ IPv6 ã®æ™‚ã«ã®ã¿ã€ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’使用ã™"
+"ã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã€‚ã“れを true ã«ã‚»ãƒƒãƒˆã™ã‚‹ã¨ã€IPv4 コãƒã‚¯ã‚·ãƒ§ãƒ³ã§ã‚‚ã€å¼·åˆ¶çš„ã«"
+"ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’使用ã—ã¾ã™ã€‚ã»ã¨ã‚“ã©ã® FTP サーãƒã¯ RFC2428 をサãƒãƒ¼ãƒˆã—ã¦ã„ãª"
+"ã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "/cdrom/::Mount \"foo\";"
+msgstr "/cdrom/::Mount \"foo\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"For URIs using the <literal>cdrom</literal> method, the only configurable "
+"option is the mount point, <literal>cdrom::Mount</literal>, which must be "
+"the mount point for the CD-ROM (or DVD, or whatever) drive as specified in "
+"<filename>/etc/fstab</filename>. It is possible to provide alternate mount "
+"and unmount commands if your mount point cannot be listed in the fstab. The "
+"syntax is to put <placeholder type=\"literallayout\" id=\"0\"/> within the "
+"<literal>cdrom</literal> block. It is important to have the trailing slash. "
+"Unmount commands can be specified using UMount."
+msgstr ""
+"<literal>cdrom</literal> メソッドを利用ã™ã‚‹ URI ã§ã¯ã€è¨­å®šã§ãるオプションã¯"
+"マウントãƒã‚¤ãƒ³ãƒˆã ã‘ã§ã™ã€‚<filename>/etc/fstab</filename> ã§è¨­å®šã•ã‚Œã¦ã„るよ"
+"ã†ã«ã€CD-ROM (ã¾ãŸã¯ DVD ãªã©) ドライブã®ãƒžã‚¦ãƒ³ãƒˆãƒã‚¤ãƒ³ãƒˆã‚’ <literal>cdrom::"
+"Mount</literal> ã«è¨­å®šã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。マウントãƒã‚¤ãƒ³ãƒˆãŒ fstab ã«è¨˜è¿°ã§"
+"ããªã„å ´åˆã€ã‹ã‚ã‚Šã«ãƒžã‚¦ãƒ³ãƒˆãƒ»ã‚¢ãƒ³ãƒžã‚¦ãƒ³ãƒˆã‚³ãƒžãƒ³ãƒ‰ã‚‚使用ã§ãã¾ã™ã€‚構文ã¯ã€"
+"<literal>cdrom</literal> ブロックを <placeholder type=\"literallayout\" id="
+"\"0\"/> ã®å½¢ã§è¨˜è¿°ã—ã¾ã™ã€‚スラッシュを後ã«ã¤ã‘ã‚‹ã®ãŒé‡è¦ã§ã™ã€‚アンマウントコ"
+"マンド㯠UMount ã§æŒ‡å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"For GPGV URIs the only configurable option is <literal>gpgv::Options</"
+"literal>, which passes additional parameters to gpgv."
+msgstr ""
+"GPGV URI 用ã®å”¯ä¸€ã®ã‚ªãƒ—ションã¯ã€gpgv ã«æ¸¡ã™è¿½åŠ ãƒ‘ラメータã®ã‚ªãƒ—ションã§ã‚"
+"ã‚‹ã€<literal>gpgv::Options</literal> ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";"
+msgstr "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"List of compression types which are understood by the acquire methods. "
+"Files like <filename>Packages</filename> can be available in various "
+"compression formats. By default the acquire methods can decompress and "
+"recompress many common formats like <command>xz</command> and <command>gzip</"
+"command>; with this scope the supported formats can be queried, modified as "
+"well as support for more formats added (see also <option>APT::Compressor</"
+"option>). The syntax for this is: <placeholder type=\"synopsis\" id=\"0\"/>"
+msgstr ""
+"acquire メソッドãŒç†è§£ã§ãã‚‹ã€åœ§ç¸®æ³•ã®ãƒªã‚¹ãƒˆã§ã™ã€‚<filename>Packages</"
+"filename> ã®ã‚ˆã†ãªãƒ•ã‚¡ã‚¤ãƒ«ã«ã¯ã•ã¾ã–ã¾ãªåœ§ç¸®å½¢å¼ãŒåˆ©ç”¨ã§ãã¾ã™ã€‚デフォルト㧠"
+"acquire メソッドã¯ã€<command>xz</command> ã‚„ <command>gzip</command> ç­‰ã®ä¸€èˆ¬"
+"çš„ãªå¤šãã®åœ§ç¸®å½¢å¼ã§å±•é–‹ã€å†åœ§ç¸®ã§ãã¾ã™ã€‚ã“ã®è¨­å®šé …ç›®ã§ã¯ã‚µãƒãƒ¼ãƒˆã™ã‚‹åœ§ç¸®å½¢"
+"å¼ã‚’å‚ç…§ã€å¤‰æ›´ã§ãã€ã‚µãƒãƒ¼ãƒˆã™ã‚‹åœ§ç¸®å½¢å¼ã‚’ã•ã‚‰ã«è¿½åŠ ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ (関連"
+"項目 <option>APT::Compressor</option>)。<placeholder type=\"synopsis\" id="
+"\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order:: \"gz\";"
+msgstr "Acquire::CompressionTypes::Order:: \"gz\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order { \"xz\"; \"gz\"; };"
+msgstr "Acquire::CompressionTypes::Order { \"xz\"; \"gz\"; };"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Also, the <literal>Order</literal> subgroup can be used to define in which "
+"order the acquire system will try to download the compressed files. The "
+"acquire system will try the first and proceed with the next compression type "
+"in this list on error, so to prefer one over the other type simply add the "
+"preferred type first - types not already added will be implicitly appended "
+"to the end of the list, so e.g. <placeholder type=\"synopsis\" id=\"0\"/> "
+"can be used to prefer <command>gzip</command> compressed files over all "
+"other compression formats. If <command>xz</command> should be preferred "
+"over <command>gzip</command> and <command>bzip2</command> the configure "
+"setting should look like this: <placeholder type=\"synopsis\" id=\"1\"/> It "
+"is not needed to add <literal>bz2</literal> to the list explicitly as it "
+"will be added automatically."
+msgstr ""
+"ã¾ãŸã€<literal>Order</literal> サブグループを使用ã—ã¦ã€å–得システムãŒã€åœ§ç¸®"
+"ファイルã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’試ã¿ã‚‹é †ç•ªã‚’定義ã§ãã¾ã™ã€‚å–得システムã¯å…ˆé ­ã®ã‚‚ã®ã‚’"
+"試行ã—ã€ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã™ã‚‹ã¨æ¬¡ã®åœ§ç¸®ã‚¿ã‚¤ãƒ—ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’開始ã—ã¾ã™ã€‚ãã®ãŸ"
+"ã‚ã€ã©ã‚Œã‹ã‚’ä»–ã®ã‚‚ã®ã‚ˆã‚Šå„ªå…ˆã—ãŸã„å ´åˆã€å˜ã«ãã®ã‚¿ã‚¤ãƒ—を先頭ã«è¿½åŠ ã—ã¦ãã ã•"
+"ã„。ã¾ã è¿½åŠ ã—ã¦ã„ãªã„タイプã¯ã€ãƒªã‚¹ãƒˆã®æœ€å¾Œã«è¿½åŠ ã•ã‚Œã¾ã™ã€‚ã¤ã¾ã‚Šã€"
+"<placeholder type=\"synopsis\" id=\"0\"/> ã¨ã™ã‚‹ã¨ã€<command>gzip</command> "
+"ã§åœ§ç¸®ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’ä»–ã®ã©ã‚Œã‚ˆã‚Šã‚‚優先的ã«ä½¿ç”¨ã—ã¾ã™ã€‚ã‚‚ã— <command>xz</"
+"command> ã‚’ <command>gzip</command> ã‚„ <command>bzip2</command> よりも優先ã™"
+"ã‚‹ã¹ããªã‚‰ã€è¨­å®šã‚’以下ã®ã‚ˆã†ã«ã—ã¦ãã ã•ã„。<placeholder type=\"synopsis\" "
+"id=\"1\"/> <literal>bz2</literal> ã¯è‡ªå‹•çš„ã«è¿½åŠ ã•ã‚Œã‚‹ãŸã‚ã€æ˜Žç¤ºã™ã‚‹å¿…è¦ã¯ã‚"
+"ã‚Šã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Dir::Bin::bzip2 \"/bin/bzip2\";"
+msgstr "Dir::Bin::bzip2 \"/bin/bzip2\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that the <literal>Dir::Bin::<replaceable>Methodname</replaceable></"
+"literal> will be checked at run time. If this option has been set and "
+"support for this format isn't directly built into apt, the method will only "
+"be used if this file exists; e.g. for the <literal>bzip2</literal> method "
+"(the inbuilt) setting is: <placeholder type=\"literallayout\" id=\"0\"/> "
+"Note also that list entries specified on the command line will be added at "
+"the end of the list specified in the configuration files, but before the "
+"default entries. To prefer a type in this case over the ones specified in "
+"the configuration files you can set the option direct - not in list style. "
+"This will not override the defined list; it will only prefix the list with "
+"this type."
+msgstr ""
+"実行時㫠<literal>Dir::Bin::<replaceable>Methodname</replaceable></literal> "
+"ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。ã“ã®ã‚ªãƒ—ションãŒè¨­å®šã•ã‚Œã¦ã„ã¦ãã®å½¢å¼"
+"ã®ã‚µãƒãƒ¼ãƒˆãŒ apt ã«ç›´æŽ¥çµ„ã¿è¾¼ã¾ã‚Œã¦ã„ãªã„å ´åˆã€ãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚ã‚‹å ´åˆã«ã€ã“ã®æ–¹æ³•"
+"ã—ã‹ä½¿ã‚ã‚Œãªããªã‚Šã¾ã™ã€‚例ãˆã°ã€bzip2 メソッド (内蔵) ã®è¨­å®šã¯ä»¥ä¸‹ã«ãªã‚Šã¾"
+"ã™ã€‚<placeholder type=\"literallayout\" id=\"0\"/> ã¾ãŸã€ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã«æŒ‡å®š"
+"ã—ãŸä¸€è¦§ã®ã‚¨ãƒ³ãƒˆãƒªã¯è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã«æŒ‡å®šã—ãŸã‚‚ã®ã®å¾Œã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‚¨ãƒ³ãƒˆãƒªã®å‰ã«"
+"追加ã•ã‚Œã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。ã“ã®å ´åˆã€è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã«æŒ‡å®šã—ãŸå†…容よりも"
+"å‰ã«æŒ‡å®šã™ã‚‹ã«ã¯ã€ã‚ªãƒ—ションを直接 (一覧スタイルã§ãªã) 指定ã—ã¦ãã ã•ã„。ã“"
+"ã‚Œã¯å®šç¾©ã•ã‚Œã¦ã„る一覧を上書ãã™ã‚‹ã®ã§ã¯ãªãã€ã“ã®ã‚¿ã‚¤ãƒ—を先頭ã«ä»˜åŠ ã™ã‚‹ã ã‘"
+"ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The special type <literal>uncompressed</literal> can be used to give "
+"uncompressed files a preference, but note that most archives don't provide "
+"uncompressed files so this is mostly only useable for local mirrors."
+msgstr ""
+"特殊ãªã‚¿ã‚¤ãƒ— <literal>uncompressed</literal> ã¯ã€éžåœ§ç¸®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’優先ã™ã‚‹ãŸã‚"
+"ã«ä½¿ç”¨ã§ãã¾ã™ãŒã€ã»ã¨ã‚“ã©ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã¯éžåœ§ç¸®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’æä¾›ã—ãªã„ãŸã‚ã€ã»ã¨"
+"ã‚“ã©ãƒ­ãƒ¼ã‚«ãƒ«ãƒŸãƒ©ãƒ¼ã§ã®ã¿æœ‰åŠ¹ã«ãªã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"When downloading <literal>gzip</literal> compressed indexes (Packages, "
+"Sources, or Translations), keep them gzip compressed locally instead of "
+"unpacking them. This saves quite a lot of disk space at the expense of more "
+"CPU requirements when building the local package caches. False by default."
+msgstr ""
+"<literal>gzip</literal> 圧縮インデックス (Packages, Sources, Translations) を"
+"ダウンロードã™ã‚‹éš›ã€ãƒ­ãƒ¼ã‚«ãƒ«ã§å±•é–‹ã›ãšã«ã€gzip ã§åœ§ç¸®ã—ãŸã¾ã¾ã«ã—ã¾ã™ã€‚ã“ã‚Œã«"
+"よりã€ã‹ãªã‚Šãƒ‡ã‚£ã‚¹ã‚¯é ˜åŸŸã‚’節約ã§ãã¾ã™ãŒã€ãƒ­ãƒ¼ã‚«ãƒ«ãƒ‘ッケージキャッシュを構築"
+"ã™ã‚‹éš›ã«ã€CPU ã®èƒ½åŠ›ã‚’余計ã«æ¶ˆè²»ã—ã¾ã™ã€‚デフォルトã§ã¯ false ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Languages subsection controls which <filename>Translation</filename> "
+"files are downloaded and in which order APT tries to display the description-"
+"translations. APT will try to display the first available description in the "
+"language which is listed first. Languages can be defined with their short or "
+"long language codes. Note that not all archives provide "
+"<filename>Translation</filename> files for every language - the long "
+"language codes are especially rare."
+msgstr ""
+"Languages サブセクションã¯ã€<filename>Translation</filename> ファイルをダウン"
+"ロードã—ã€APT ãŒèª¬æ˜Žã®ç¿»è¨³ã‚’表示ã—よã†ã¨ã™ã‚‹å ´åˆã®æŒ™å‹•ã‚’制御ã—ã¾ã™ã€‚APT ã¯ãƒª"
+"ストã®å…ˆé ­ã«ã‚る言語ã§ã€ã¾ãšæœ‰åŠ¹ãªèª¬æ˜Žã‚’表示ã—よã†ã¨ã—ã¾ã™ã€‚Languages 㯠短ã„"
+"å½¢å¼ã‚„é•·ã„å½¢å¼ã®è¨€èªžã‚³ãƒ¼ãƒ‰ã§ã€å®šç¾©ã§ãã¾ã™ã€‚ã™ã¹ã¦ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ãŒã€å…¨è¨€èªžã® "
+"<filename>Translation</filename> ファイルをã€æä¾›ã—ã¦ã„ã‚‹ã‚ã‘ã§ã¯ãªã„ã“ã¨ã«æ³¨"
+"æ„ã—ã¦ãã ã•ã„。長ã„言語コードã¯ç‰¹ã«è¦‹ã‹ã‘ã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };"
+msgstr "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The default list includes \"environment\" and \"en\". "
+"\"<literal>environment</literal>\" has a special meaning here: it will be "
+"replaced at runtime with the language codes extracted from the "
+"<literal>LC_MESSAGES</literal> environment variable. It will also ensure "
+"that these codes are not included twice in the list. If "
+"<literal>LC_MESSAGES</literal> is set to \"C\" only the "
+"<filename>Translation-en</filename> file (if available) will be used. To "
+"force APT to use no Translation file use the setting <literal>Acquire::"
+"Languages=none</literal>. \"<literal>none</literal>\" is another special "
+"meaning code which will stop the search for a suitable "
+"<filename>Translation</filename> file. This tells APT to download these "
+"translations too, without actually using them unless the environment "
+"specifies the languages. So the following example configuration will result "
+"in the order \"en, de\" in an English locale or \"de, en\" in a German one. "
+"Note that \"fr\" is downloaded, but not used unless APT is used in a French "
+"locale (where the order would be \"fr, de, en\"). <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+msgstr ""
+"デフォルトã®ãƒªã‚¹ãƒˆã«ã¯ \"environment\" 㨠\"en\" ãŒã‚ã‚Šã¾"
+"ã™ã€‚\"<literal>environment</literal>\" ã¯ã“ã“ã§ã¯ç‰¹æ®Šãªæ„味ãŒã‚ã‚Šã¾ã™ã€‚ã“ã‚Œã¯"
+"実行時ã«ã€<literal>LC_MESSAGES</literal> 環境変数ã‹ã‚‰å–å¾—ã—ãŸè¨€èªžã‚³ãƒ¼ãƒ‰ã«ç½®æ›"
+"ã•ã‚Œã¾ã™ã€‚ã¾ãŸã€ã“ã®ãƒªã‚¹ãƒˆã«ã¯ã€åŒã˜ã‚³ãƒ¼ãƒ‰ãŒ2度ç¾ã‚Œãªã„よã†ã«ç¢ºèªã—ã¦ãã ã•"
+"ã„。<literal>LC_MESSAGES</literal> ㌠\"C\" ã«è¨­å®šã•ã‚Œã¦ã„ã‚‹ã ã‘ã®å ´åˆã€"
+"<filename>Translation-en</filename> ファイルを (利用å¯èƒ½ã§ã‚ã‚Œã°) 使用ã—ã¾"
+"ã™ã€‚強制的㫠APT ㌠Translation ファイルを使用ã—ãªã„よã†ã«ã™ã‚‹ã«ã¯ã€"
+"<literal>Acquire::Languages=none</literal> ã¨è¨­å®šã—ã¦ãã ã•"
+"ã„。\"<literal>none</literal>\" ã¯ã‚‚ã†ã²ã¨ã¤ã®ç‰¹æ®Šãªæ„味をæŒã¤ã‚³ãƒ¼ãƒ‰ã§ã€é©åˆ‡"
+"㪠<filename>Translation</filename> ファイルã®æ¤œç´¢ã‚’中止ã—ã¾ã™ã€‚環境ã‹ã‚‰å®Ÿéš›"
+"ã®è¨€èªžã‚’指定ã•ã‚Œãªã‹ã£ãŸå ´åˆã€ã“ã®å€¤ã‚’用ã„㦠APT ã«ç¿»è¨³ã‚’ダウンロードã•ã›ã¾"
+"ã™ã€‚ãã®ãŸã‚ã€ä»¥ä¸‹ã®è¨­å®šä¾‹ã§ã¯ã€è‹±èªžãƒ­ã‚±ãƒ¼ãƒ«ã®å ´åˆ \"en, de\" ã®é †ã«ãªã‚Šã€ãƒ‰"
+"イツ語ロケールã®å ´åˆ \"de, en\" ã®é †ã«ãªã‚Šã¾ã™ã€‚\"fr\" ã¯ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã•ã‚Œã¾ã™"
+"ãŒã€ãƒ•ãƒ©ãƒ³ã‚¹èªžãƒ­ã‚±ãƒ¼ãƒ« (\"fr, de, en\" ã®é †ã«ãªã‚‹) ã§ãªã„ã¨ã€APT ãŒä½¿ç”¨ã—ãªã„"
+"ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Note: To prevent problems resulting from APT being executed in different "
+"environments (e.g. by different users or by other programs) all Translation "
+"files which are found in <filename>/var/lib/apt/lists/</filename> will be "
+"added to the end of the list (after an implicit \"<literal>none</literal>\")."
+msgstr ""
+"注æ„: ç•°ãªã‚‹ç’°å¢ƒ (例: ç•°ãªã‚‹ãƒ¦ãƒ¼ã‚¶ã‚„ä»–ã®ãƒ—ログラム) 㧠APT を実行ã—ãŸã“ã¨ã«ã‚ˆ"
+"ã‚‹å•é¡Œã‚’防ããŸã‚ã€<filename>/var/lib/apt/lists/</filename> ã«ã‚ã‚‹ã™ã¹ã¦ã® "
+"Translation ファイルをã€ãƒªã‚¹ãƒˆã®æœ€å¾Œ (暗黙㮠\"<literal>none</literal>\" ã®"
+"後) ã«è¿½åŠ ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "When downloading, force to use only the IPv4 protocol."
+msgstr "ダウンロード時㫠IPv4 プロトコルã ã‘を使ã†ã‚ˆã†ã«å¼·åˆ¶ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "When downloading, force to use only the IPv6 protocol."
+msgstr "ダウンロード時㫠IPv6 プロトコルã ã‘を使ã†ã‚ˆã†ã«å¼·åˆ¶ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The maximum file size of Release/Release.gpg/InRelease files. The default "
+"is 10MB."
+msgstr ""
+"Release/Release.gpg/InRelease ファイルã®æœ€å¤§ãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºã§ã™ã€‚デフォルト㯠"
+"10MB ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This option controls if apt will use the DNS SRV server record as specified "
+"in RFC 2782 to select an alternative server to connect to. The default is "
+"\"true\"."
+msgstr ""
+"apt ㌠接続ã™ã‚‹ãŸã‚ã®ä»£æ›¿ã‚µãƒ¼ãƒã‚’é¸æŠžã™ã‚‹ãŸã‚ã« RFC 2782 ã§æŒ‡å®šã•ã‚ŒãŸ DRS "
+"SRV サーãƒãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’使ã†å ´åˆã¯ã€ã“ã®ã‚ªãƒ—ションを制御ã—ã¾ã™ã€‚デフォルト㯠"
+"\"true\" ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow update operations to load data files from repositories without "
+"sufficient security information. The default value is \"<literal>false</"
+"literal>\". Concept, implications as well as alternatives are detailed in "
+"&apt-secure;."
+msgstr ""
+"å分ãªã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£æƒ…報をæä¾›ã—ã¦ã„ãªã„リãƒã‚¸ãƒˆãƒªã‹ã‚‰ã®ãƒ‡ãƒ¼ã‚¿ãƒ•ã‚¡ã‚¤ãƒ«èª­ã¿è¾¼ã¿"
+"ã‚’è¡Œã†æ›´æ–°æ“作を許å¯ã—ã¾ã™ã€‚デフォルトã¯ã€Œ<literal>false</literal>ã€ã§ã™ã€‚概"
+"念や影響ã€ä»£æ›¿æ‰‹æ®µã«ã¤ã„ã¦ã¯ &apt-secure; ã§èª¬æ˜Žã—ã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow update operations to load data files from repositories which provide "
+"security information, but these are deemed no longer cryptographically "
+"strong enough. The default value is \"<literal>false</literal>\". Concept, "
+"implications as well as alternatives are detailed in &apt-secure;."
+msgstr ""
+"セキュリティ情報をæä¾›ã—ã¦ã¯ã„ã‚‹ã‚‚ã®ã®æš—å·çš„ã«å分ã«å¼·ã„ã‚‚ã®ã¨ã¯è¦‹ãªã•ã‚Œãªã"
+"ãªã£ã¦ã„ã‚‹å ´åˆã«ã€ãã†ã„ã£ãŸãƒªãƒã‚¸ãƒˆãƒªã‹ã‚‰ã®ãƒ‡ãƒ¼ã‚¿ãƒ•ã‚¡ã‚¤ãƒ«èª­ã¿è¾¼ã¿ã‚’è¡Œã†æ›´æ–°"
+"æ“作を許å¯ã—ã¾ã™ã€‚デフォルトã¯ã€Œ<literal>false</literal>ã€ã§ã™ã€‚概念や影響ã€"
+"代替手段ã«ã¤ã„ã¦ã¯ &apt-secure; ã§èª¬æ˜Žã—ã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow that a repository that was previously gpg signed to become unsigned "
+"during an update operation. When there is no valid signature for a "
+"previously trusted repository apt will refuse the update. This option can be "
+"used to override this protection. You almost certainly never want to enable "
+"this. The default is <literal>false</literal>. Concept, implications as "
+"well as alternatives are detailed in &apt-secure;."
+msgstr ""
+"以å‰ã« GPG ç½²åã•ã‚ŒãŸãƒªãƒã‚¸ãƒˆãƒªãŒã€æ›´æ–°æ“作中ã«ç½²åãªã—ã«ã™ã‚‹ã“ã¨ã‚’許å¯ã—ã¾"
+"ã™ã€‚以å‰ã«ä¿¡é ¼ã•ã‚ŒãŸãƒªãƒã‚¸ãƒˆãƒªã®æœ‰åŠ¹ãªç½²åãŒå­˜åœ¨ã—ãªã„å ´åˆã€æ›´æ–°ã‚’æ‹’å¦ã—ã¾"
+"ã™ã€‚ã“ã®ã‚ªãƒ—ションã¯ã€ã“ã®ä¿è­·ã‚’無効ã«ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã»ã¼"
+"確実ã«ã€ã“れを有効ã«ã™ã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。デフォルト㯠<literal>false</"
+"literal> ã§ã™ã€‚概念や影響ã€ä»£æ›¿æ‰‹æ®µã«ã¤ã„ã¦ã¯ &apt-secure; ã§èª¬æ˜Žã—ã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.conf.5.xml
+msgid "scope"
+msgstr "スコープ"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Acquiring changelogs can only be done if an URI is known from where to get "
+"them. Preferable the Release file indicates this in a 'Changelogs' field. "
+"If this isn't available the Label/Origin field of the Release file is used "
+"to check if a <literal>Acquire::Changelogs::URI::Label::<replaceable>LABEL</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Origin::"
+"<replaceable>ORIGIN</replaceable></literal> option exists and if so this "
+"value is taken. The value in the Release file can be overridden with "
+"<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
+"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a "
+"normal URI to a text file, except that package specific data is replaced "
+"with the placeholder <literal>@CHANGEPATH@</literal>. The value for it is: "
+"1. if the package is from a component (e.g. <literal>main</literal>) this "
+"is the first part otherwise it is omitted, 2. the first letter of source "
+"package name, except if the source package name starts with '<literal>lib</"
+"literal>' in which case it will be the first four letters. 3. The complete "
+"source package name. 4. the complete name again and 5. the source version. "
+"The first (if present), second, third and fourth part are separated by a "
+"slash ('<literal>/</literal>') and between the fourth and fifth part is an "
+"underscore ('<literal>_</literal>'). The special value '<literal>no</"
+"literal>' is available for this option indicating that this source can't be "
+"used to acquire changelog files from. Another source will be tried if "
+"available in this case."
+msgstr ""
+"URI ã¯ã€ãれらをå–å¾—ã™ã‚‹å ´æ‰€ã‹ã‚‰çŸ¥ã‚‰ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€å¤‰æ›´å±¥æ­´ã®å–å¾—ã®ã¿è¡Œã†ã“"
+"ã¨ãŒã§ãã¾ã™ã€‚好ã¾ã—ã„リリースファイルã¯ã€ã€Œå¤‰æ›´å±¥æ­´ã€ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã§ã“ã®ã“ã¨ã‚’"
+"示ã—ã¾ã™ã€‚ã“ã‚ŒãŒåˆ©ç”¨ã§ããªã„å ´åˆã€<literal>Acquire::Changelogs::URI::Label::"
+"<replaceable>LABEL</replaceable></literal> ã¾ãŸã¯ <literal>Acquire::"
+"Changelogs::URI::Origin::<replaceable>ORIGIN</replaceable></literal> オプショ"
+"ンãŒå­˜åœ¨ã—ã€ãã—ã¦ã“ã®å€¤ãŒå–られã¦ã‚‹å ´åˆã¯ã€ãƒªãƒªãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã® Label/Origin "
+"フィールドãŒç¢ºèªã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚リリースファイル内ã®å€¤ã¯ã€"
+"<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> ã¾ãŸã¯ <literal>Acquire::Changelogs::URI::Override::"
+"Origin::<replaceable>ORIGIN</replaceable></literal> ã§ä¸Šæ›¸ãã§ãã¾ã™ã€‚ãã®"
+"パッケージ固有ã®ãƒ‡ãƒ¼ã‚¿ãŒ <literal>@CHANGEPATH@</literal> プレースホルダã«ç½®ã"
+"æ›ãˆã‚‰ã‚Œã¦ã„ã‚‹å ´åˆä»¥å¤–ã¯ã€å€¤ã¯ãƒ†ã‚­ã‚¹ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã¸ã®æ­£å¸¸ãª URI ã«ã™ã‚‹å¿…è¦ãŒã‚ã‚Š"
+"ã¾ã™ã€‚値ã¯æ¬¡ã®é€šã‚Šã§ã™: 1. パッケージãŒã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆ (例ãˆã°ã€"
+"<literal>main</literal>) ã‹ã‚‰ã®ã‚‚ã®ã§ã‚ã‚‹å ´åˆã€ãれ以外ã®å ´åˆã¯çœç•¥ã•ã‚Œã¦ã„ã‚‹"
+"最åˆã®éƒ¨åˆ†ã§ã™ã€2. ソースパッケージåã®æœ€åˆã®æ–‡å­—。ãŸã ã—ã€ã‚½ãƒ¼ã‚¹ãƒ‘ッケージå"
+"㌠'<literal>lib</literal>' ã§å§‹ã¾ã‚‹å ´åˆã‚’除ãã¾ã™ (ãã®å ´åˆã¯ 最åˆã® 4 文字"
+"ã«ãªã‚Šã¾ã™)。3. 完全ãªã‚½ãƒ¼ã‚¹ãƒ‘ッケージå。4. å†ã³å®Œå…¨ãªåå‰ãŠã‚ˆã³ 5. ソースã®"
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã€‚(存在ã™ã‚‹å ´åˆã¯) 最åˆã€ç¬¬äºŒã€ç¬¬ä¸‰ã€ç¬¬å››ã®éƒ¨åˆ†ã¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ "
+"('<literal>/</literal>') ã§åŒºåˆ‡ã‚‰ã‚Œã€ç¬¬å››ã¨ç¬¬äº”ã®éƒ¨åˆ†ã®é–“ã¯ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢ "
+"('<literal>_</literal>') ã§ã™ã€‚ã“ã®ã‚½ãƒ¼ã‚¹ã‹ã‚‰å¤‰æ›´å±¥æ­´ã‚’å–å¾—ã™ã‚‹ã“ã¨ãŒã§ããªã„"
+"ã“ã¨ã‚’示ã™ç‰¹åˆ¥ãªå€¤ '<literal>no</literal>' ãŒã“ã®ã‚ªãƒ—ションã§åˆ©ç”¨å¯èƒ½ã§ã™ã€‚ã“"
+"ã®å ´åˆã€å¯èƒ½ã§ã‚ã‚Œã°åˆ¥ã®ã‚½ãƒ¼ã‚¹ãŒè©¦è¡Œã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Binary specific configuration"
+msgstr "ãƒã‚¤ãƒŠãƒªãƒ¦ãƒ¼ã‚¶è¨­å®š"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Especially with the introduction of the <command>apt</command> binary it can "
+"be useful to set certain options only for a specific binary as even options "
+"which look like they would effect only a certain binary like <option>APT::"
+"Get::Show-Versions</option> effect <command>apt-get</command> as well as "
+"<command>apt</command>."
+msgstr ""
+"特ã«ã€<command>apt</command> ã®ãƒã‚¤ãƒŠãƒªã®å°Žå…¥ã§ã¯ã€<option>APT::Get::Show-"
+"Versions</option> ㌠<command>apt</command> ã¨åŒæ§˜ã« <command>apt-get</"
+"command> ã«åŠ¹æžœã‚’与ãˆã‚‹ã‚ˆã†ã«ã€ç‰¹å®šã®ãƒã‚¤ãƒŠãƒªã®ã¿ã«å½±éŸ¿ã‚’与ãˆã‚‹ã‚ˆã†ã«è¦‹ãˆã‚‹ã‚ª"
+"プションã§ã‚ã£ã¦ã‚‚ã€ç‰¹å®šã®ãƒã‚¤ãƒŠãƒªã®ãŸã‚ã«ç‰¹å®šã®ã‚ªãƒ—ションを設定ã™ã‚‹ã“ã¨ã¯æœ‰"
+"用ã§ã‚ã‚Šå¾—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Setting an option for a specific binary only can be achieved by setting the "
+"option inside the <option>Binary::<replaceable>specific-binary</"
+"replaceable></option> scope. Setting the option <option>APT::Get::Show-"
+"Versions</option> for the <command>apt</command> only can e.g. by done by "
+"setting <option>Binary::apt::APT::Get::Show-Versions</option> instead."
+msgstr ""
+"特定ã®ãƒã‚¤ãƒŠãƒªç”¨ã®ã‚ªãƒ—ション設定ã¯ã€<option>Binary::<replaceable>specific-"
+"binary</replaceable></option> スコープ内ã§ã‚ªãƒ—ションを設定ã—ã¦é”æˆã™ã‚‹ã“ã¨ãŒ"
+"ã§ãã¾ã™ã€‚ <command>apt</command> 用ã®<option>APT::Get::Show-Versions</"
+"option> オプションã®è¨­å®šã¯ã€ä¾‹ãˆã°ã€<option>Binary::apt::APT::Get::Show-"
+"Versions</option> 設定ã®ä»£ã‚ã‚Šã«å®Ÿè¡Œã•ã‚Œã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that as seen in the DESCRIPTION section further above you can't set "
+"binary-specific options on the commandline itself nor in configuration files "
+"loaded via the commandline."
+msgstr ""
+"ã•ã‚‰ã«ä¸Šè¨˜ã®èª¬æ˜Žã®ç¯€ã«è¦‹ã‚‰ã‚Œã‚‹ã‚ˆã†ã«ã€ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ä¸Šã®ã‚ªãƒ—ション自体ã¾ãŸã¯"
+"コマンドラインã‹ã‚‰ãƒ­ãƒ¼ãƒ‰ã•ã‚ŒãŸè¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ä¸­ã§ãƒã‚¤ãƒŠãƒªå›ºæœ‰ã®ã‚ªãƒ—ションを設定"
+"ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Directories"
+msgstr "ディレクトリ"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Dir::State</literal> section has directories that pertain to "
+"local state information. <literal>lists</literal> is the directory to place "
+"downloaded package lists in and <literal>status</literal> is the name of the "
+"&dpkg; status file. <literal>preferences</literal> is the name of the APT "
+"<filename>preferences</filename> file. <literal>Dir::State</literal> "
+"contains the default directory to prefix on all sub-items if they do not "
+"start with <filename>/</filename> or <filename>./</filename>."
+msgstr ""
+"<literal>Dir::State</literal> セクションã¯ã€ãƒ­ãƒ¼ã‚«ãƒ«çŠ¶æ…‹æƒ…å ±ã«é–¢ã™ã‚‹ãƒ‡ã‚£ãƒ¬ã‚¯"
+"トリをä¿æŒã—ã¾ã™ã€‚<literal>lists</literal> ã¯ã€ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ãŸãƒ‘ッケージ一覧"
+"ã‚’æ ¼ç´ã™ã‚‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã€<literal>status</literal> 㯠&dpkg; ã®çŠ¶æ…‹ãƒ•ã‚¡ã‚¤ãƒ«"
+"ã®åå‰ã‚’表ã—ã¾ã™ã€‚<literal>preferences</literal> 㯠APT ã® "
+"<filename>preferences</filename> ファイルã®åå‰ã§ã™ã€‚<literal>Dir::State</"
+"literal> ã«ã¯ã€<filename>/</filename> ã‚„ <filename>./</filename> ã§å§‹ã¾ã‚‰ãªã„"
+"サブアイテムã™ã¹ã¦ã«ã€å‰ã«ä»˜åŠ ã™ã‚‹ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’å«ã‚“ã§ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Dir::Cache</literal> contains locations pertaining to local cache "
+"information, such as the two package caches <literal>srcpkgcache</literal> "
+"and <literal>pkgcache</literal> as well as the location to place downloaded "
+"archives, <literal>Dir::Cache::archives</literal>. Generation of caches can "
+"be turned off by setting <literal>pkgcache</literal> or "
+"<literal>srcpkgcache</literal> to <literal>\"\"</literal>. This will slow "
+"down startup but save disk space. It is probably preferable to turn off the "
+"pkgcache rather than the srcpkgcache. Like <literal>Dir::State</literal> "
+"the default directory is contained in <literal>Dir::Cache</literal>"
+msgstr ""
+"<literal>Dir::Cache</literal> ã¯ã€ãƒ­ãƒ¼ã‚«ãƒ«ã‚­ãƒ£ãƒƒã‚·ãƒ¥æƒ…å ±ã«é–¢ã™ã‚‹å ´æ‰€ã‚’æ ¼ç´ã—"
+"ã¦ã„ã¾ã™ã€‚ã“ã‚Œã¯ã€ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰æ¸ˆã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã®å ´æ‰€ã‚’示㙠<literal>Dir::Cache::"
+"archives</literal> ã¨åŒæ§˜ã«ã€<literal>srcpkgcache</literal> 㨠"
+"<literal>pkgcache</literal> ã®ãƒ‘ッケージキャッシュã®å ´æ‰€ã«ãªã‚Šã¾ã™ã€‚"
+"<literal>pkgcache</literal> ã‚„ <literal>srcpkgcache</literal> ã« <literal>"
+"\"\"</literal> をセットã™ã‚‹ã“ã¨ã§ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã®ç”Ÿæˆã‚’無効ã«ã§ãã¾ã™ã€‚ã“ã‚Œã«ã‚ˆ"
+"り起動時ã«é…ããªã‚Šã¾ã™ãŒã€ãƒ‡ã‚£ã‚¹ã‚¯å®¹é‡ã‚’節約ã§ãã¾ã™ã€‚ãŠãらãã€srcpkgcache "
+"よりも pkgcache を無効ã«ã™ã‚‹ã“ã¨ãŒå¤šã„ã¨æ€ã„ã¾ã™ã€‚<literal>Dir::State</"
+"literal> ã¨åŒæ§˜ã€<literal>Dir::Cache</literal> ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’å«ã‚“"
+"ã§ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Dir::Etc</literal> contains the location of configuration files, "
+"<literal>sourcelist</literal> gives the location of the sourcelist and "
+"<literal>main</literal> is the default configuration file (setting has no "
+"effect, unless it is done from the config file specified by "
+"<envar>APT_CONFIG</envar>)."
+msgstr ""
+"<literal>Dir::Etc</literal> ã¯è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã®å ´æ‰€ã‚’æ ¼ç´ã—ã¦ã„ã¾ã™ã€‚"
+"<literal>sourcelist</literal> ã¯ã‚½ãƒ¼ã‚¹ãƒªã‚¹ãƒˆã®å ´æ‰€ã‚’示ã—ã€<literal>main</"
+"literal> ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã§ã™ã€‚(<envar>APT_CONFIG</envar> ã§è¨­å®š"
+"ファイルを指定ã•ã‚ŒãŸå ´åˆã®ã¿ã€ã“ã®è¨­å®šã®åŠ¹æžœãŒã‚ã‚Šã¾ã™)"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Dir::Parts</literal> setting reads in all the config fragments "
+"in lexical order from the directory specified. After this is done then the "
+"main config file is loaded."
+msgstr ""
+"<literal>Dir::Parts</literal> 設定ã¯ã€æŒ‡å®šã•ã‚ŒãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‹ã‚‰ã€å­—å¥å˜ä½ã®"
+"å…¨ã¦ã®è¨­å®šæ–­ç‰‡ã‚’読ã¿ã“ã¿ã¾ã™ã€‚ã“れを設定ã—ãŸå¾Œã«ã€ãƒ¡ã‚¤ãƒ³è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’ロード"
+"ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
+"Bin::Methods</literal> specifies the location of the method handlers and "
+"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
+"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
+"literal> <literal>dpkg-buildpackage</literal> and <literal>apt-cache</"
+"literal> specify the location of the respective programs."
+msgstr ""
+"ãƒã‚¤ãƒŠãƒªãƒ—ログラム㯠<literal>Dir::Bin</literal> ã§æŒ‡å®šã—ã¾ã™ã€‚<literal>Dir::"
+"Bin::Methods</literal> ã¯ãƒ¡ã‚½ãƒƒãƒ‰ãƒãƒ³ãƒ‰ãƒ©ã®å ´æ‰€ã‚’指定ã—ã€<literal>gzip</"
+"literal>, <literal>bzip2</literal>, <literal>lzma</literal>, <literal>dpkg</"
+"literal>, <literal>apt-get</literal> <literal>dpkg-source</literal> "
+"<literal>dpkg-buildpackage</literal>, <literal>apt-cache</literal> ã¯ãã‚Œãžã‚Œ"
+"プログラムã®å ´æ‰€ã‚’指定ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The configuration item <literal>RootDir</literal> has a special meaning. If "
+"set, all paths will be relative to <literal>RootDir</literal>, "
+"<emphasis>even paths that are specified absolutely</emphasis>. So, for "
+"instance, if <literal>RootDir</literal> is set to <filename>/tmp/staging</"
+"filename> and <literal>Dir::State::status</literal> is set to <filename>/var/"
+"lib/dpkg/status</filename>, then the status file will be looked up in "
+"<filename>/tmp/staging/var/lib/dpkg/status</filename>. If you want to "
+"prefix only relative paths, set <literal>Dir</literal> instead."
+msgstr ""
+"設定項目 <literal>RootDir</literal> ã¯ç‰¹åˆ¥ãªæ„味をæŒã¡ã¾ã™ã€‚設定ã•ã‚Œã¦ã„ã‚‹"
+"ã¨ã€ã™ã¹ã¦ã®ãƒ‘ス㯠<emphasis>絶対パスã¨ã—ã¦æŒ‡å®šã—ã¦ã‚‚</"
+"emphasis><literal>RootDir</literal> ã‹ã‚‰ã®ç›¸å¯¾ãƒ‘スã¨ãªã‚Šã¾ã™ã€‚ãã®ãŸã‚例ãˆ"
+"ã°ã€<literal>RootDir</literal> ㌠<filename>/tmp/staging</filename> ã«ã‚»ãƒƒãƒˆ"
+"ã•ã‚Œã¦ãŠã‚Šã€<literal>Dir::State::status</literal> ㌠<filename>/var/lib/dpkg/"
+"status</filename> ã«ã‚»ãƒƒãƒˆã•ã‚Œã¦ã„ã‚‹å ´åˆã€status ファイルを <filename>/tmp/"
+"staging/var/lib/dpkg/status</filename> ã‹ã‚‰æŽ¢ã—ã¾ã™ã€‚相対ãƒã‚¹ã®ã¿ã‚’プレフィッ"
+"クスã«ã—ãŸã„å ´åˆã¯ã€ä»£ã‚ã‚Šã« <literal>Dir</literal> を設定ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Ignore-Files-Silently</literal> list can be used to specify "
+"which files APT should silently ignore while parsing the files in the "
+"fragment directories. Per default a file which end with <literal>.disabled</"
+"literal>, <literal>~</literal>, <literal>.bak</literal> or <literal>.dpkg-[a-"
+"z]+</literal> is silently ignored. As seen in the last default value these "
+"patterns can use regular expression syntax."
+msgstr ""
+"<literal>Ignore-Files-Silently</literal> リストã¯ã€æ–­ç‰‡ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®è§£æžä¸­"
+"ã«ã€APT ãŒé»™ã£ã¦ç„¡è¦–ã‚’ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’指定ã—ã¾ã™ã€‚デフォルトã§ã¯ãã‚Œãžã‚Œã€"
+"<literal>.disabled</literal>, <literal>~</literal>, <literal>.bak</literal>, "
+"<literal>.dpkg-[a-z]+</literal> ã§çµ‚ã‚ã‚‹ã‚‚ã®ãŒã€é»™ã£ã¦ç„¡è¦–ã•ã‚Œã¾ã™ã€‚最後ã®ãƒ‡"
+"フォルト値を見れã°ã‚ã‹ã‚‹é€šã‚Šã€ã“ã®ãƒ‘ターンã«ã¯æ­£è¦è¡¨ç¾ã‚’使用ã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "APT in DSelect"
+msgstr "DSelect ã§ã® APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"When APT is used as a &dselect; method several configuration directives "
+"control the default behavior. These are in the <literal>DSelect</literal> "
+"section."
+msgstr ""
+"&dselect; メソッド㧠APT を使用ã™ã‚‹éš›ã€ã„ãã¤ã‹ã®è¨­å®šãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–ã§ãƒ‡ãƒ•ã‚©ãƒ«"
+"トã®å‹•ä½œã‚’制御ã—ã¾ã™ã€‚ã“れ㯠<literal>DSelect</literal> セクション以下ã«ã‚ã‚Š"
+"ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Cache Clean mode; this value may be one of <literal>always</literal>, "
+"<literal>prompt</literal>, <literal>auto</literal>, <literal>pre-auto</"
+"literal> and <literal>never</literal>. <literal>always</literal> and "
+"<literal>prompt</literal> will remove all packages from the cache after "
+"upgrading, <literal>prompt</literal> (the default) does so conditionally. "
+"<literal>auto</literal> removes only those packages which are no longer "
+"downloadable (replaced with a new version for instance). <literal>pre-auto</"
+"literal> performs this action before downloading new packages."
+msgstr ""
+"キャッシュクリーンモード - ã“ã®å€¤ã¯ <literal>always</literal>, "
+"<literal>prompt</literal>, <literal>auto</literal>, <literal>pre-auto</"
+"literal>, <literal>never</literal> ã®ã†ã¡ã²ã¨ã¤ã‚’å–ã‚Šã¾ã™ã€‚<literal>always</"
+"literal> 㨠<literal>prompt</literal> ã¯æ›´æ–°å¾Œã€å…¨ãƒ‘ッケージをキャッシュã‹ã‚‰"
+"削除ã—ã¾ã™ã€‚<literal>prompt</literal> (デフォルト) ã§ã¯æ¡ä»¶ä»˜ãã§å‰Šé™¤ã—ã¾ã™ã€‚"
+"<literal>auto</literal> ã¯ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸èƒ½ãƒ‘ッケージ (例ãˆã°æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ç½®"
+"ãæ›ãˆã‚‰ã‚ŒãŸã‚‚ã®) を削除ã—ã¾ã™ã€‚<literal>pre-auto</literal> ã¯ã“ã®å‹•ä½œã‚’ã€æ–°"
+"パッケージをダウンロードã™ã‚‹ç›´å‰ã«è¡Œã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the install phase."
+msgstr ""
+"ã“ã®å¤‰æ•°ã®å†…容ã¯ã€install 時ã®ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚ªãƒ—ションã¨åŒæ§˜ã« &apt-get; ã«æ¸¡"
+"ã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the update phase."
+msgstr ""
+"ã“ã®å¤‰æ•°ã®å†…容ã¯ã€update 時ã®ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚ªãƒ—ションã¨åŒæ§˜ã« &apt-get; ã«æ¸¡"
+"ã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"If true the [U]pdate operation in &dselect; will always prompt to continue. "
+"The default is to prompt only on error."
+msgstr ""
+"true ã®å ´åˆã€&dselect; ã® [U]pdate 実行時ã«ã€ç¶šè¡Œã®ãŸã‚ã®ãƒ—ロンプトを毎回表示"
+"ã—ã¾ã™ã€‚デフォルトã¯ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸå ´åˆã®ã¿ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "How APT calls &dpkg;"
+msgstr "APT ㌠&dpkg; を呼ã¶æ–¹æ³•"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Several configuration directives control how APT invokes &dpkg;. These are "
+"in the <literal>DPkg</literal> section."
+msgstr ""
+"ã„ãã¤ã‹ã®è¨­å®šé …目㧠APT ãŒã©ã®ã‚ˆã†ã« &dpkg; を呼ã³å‡ºã™ã‹ã‚’制御ã§ãã¾ã™ã€‚"
+"<literal>DPkg</literal> セクションã«ã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of options to pass to &dpkg;. The options must be specified "
+"using the list notation and each list item is passed as a single argument to "
+"&dpkg;."
+msgstr ""
+"&dpkg; ã«æ¸¡ã™ã‚ªãƒ—ションã®ãƒªã‚¹ãƒˆã§ã™ã€‚オプションã¯ã€ãƒªã‚¹ãƒˆè¨˜æ³•ã‚’使用ã—ã¦æŒ‡å®šã—"
+"ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。ã¾ãŸã€å„リストã¯å˜ä¸€ã®å¼•æ•°ã¨ã—㦠&dpkg; ã«æ¸¡ã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of shell commands to run before/after invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort."
+msgstr ""
+"&dpkg; を呼ã³å‡ºã™å‰å¾Œã§å®Ÿè¡Œã™ã‚‹ã‚·ã‚§ãƒ«ã‚³ãƒžãƒ³ãƒ‰ã®ãƒªã‚¹ãƒˆã§ã™ã€‚<literal>options</"
+"literal> ã®ã‚ˆã†ã«ãƒªã‚¹ãƒˆè¨˜æ³•ã§æŒ‡å®šã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。コマンド㯠<filename>/"
+"bin/sh</filename> を通ã—ã¦å‘¼ã³å‡ºã•ã‚Œã€ä½•ã‹å•é¡ŒãŒã‚れ㰠APT ãŒç•°å¸¸çµ‚了ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of shell commands to run before invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort. APT will pass the filenames of all .deb files it is "
+"going to install to the commands, one per line on the requested file "
+"descriptor, defaulting to standard input."
+msgstr ""
+"&dpkg; を呼ã³å‡ºã™å‰ã«å®Ÿè¡Œã™ã‚‹ã‚·ã‚§ãƒ«ã‚³ãƒžãƒ³ãƒ‰ã®ãƒªã‚¹ãƒˆã§ã™ã€‚<literal>options</"
+"literal> ã®ã‚ˆã†ã«ãƒªã‚¹ãƒˆè¨˜æ³•ã§æŒ‡å®šã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。コマンド㯠<filename>/"
+"bin/sh</filename> を通ã—ã¦å‘¼ã³å‡ºã•ã‚Œã€ä½•ã‹å•é¡ŒãŒã‚ã‚Œã°ã€APT ã¯ç•°å¸¸çµ‚了ã—ã¾"
+"ã™ã€‚APT ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—よã†ã¨ã™ã‚‹å…¨ .deb ファイルã®ãƒ•ã‚¡ã‚¤ãƒ«åã‚’ã€è¦æ±‚ã—ãŸ"
+"ファイルディスクリプタã«ã¤ã„ã¦1 è¡Œãšã¤ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ã¯ã‚³ãƒžãƒ³ãƒ‰ã®æ¨™æº–入力ã«é€"
+"ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Version 2 of this protocol sends more information through the requested file "
+"descriptor: a line with the text <literal>VERSION 2</literal>, the APT "
+"configuration space, and a list of package actions with filename and version "
+"information."
+msgstr ""
+"ã“ã®ãƒ—ロトコルã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2 ã¯ã€è¦æ±‚ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ãƒ‡ã‚£ã‚¹ã‚¯ãƒªãƒ—タを介ã—ã¦ã‚ˆã‚Š"
+"多ãã®æƒ…報をé€ä¿¡ã—ã¾ã™: テキスト <literal>VERSION 2</literal> ã®è¡Œã€APT 設定"
+"空間ã€ãƒ•ã‚¡ã‚¤ãƒ«åã¨ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報をæŒã¤ãƒ‘ッケージ処ç†ã®ãƒªã‚¹ãƒˆã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each configuration directive line has the form <literal>key=value</"
+"literal>. Special characters (equal signs, newlines, nonprintable "
+"characters, quotation marks, and percent signs in <literal>key</literal> and "
+"newlines, nonprintable characters, and percent signs in <literal>value</"
+"literal>) are %-encoded. Lists are represented by multiple <literal>key::"
+"=value</literal> lines with the same key. The configuration section ends "
+"with a blank line."
+msgstr ""
+"å„設定ディレクティブ行ã¯ã€<literal>key=value</literal> å½¢å¼ã§ã™ã€‚特殊文字 "
+"(<literal>key</literal> 中ã®ã‚¤ã‚³ãƒ¼ãƒ«è¨˜å·ã€æ”¹è¡Œã€éžå°å­—å¯èƒ½æ–‡å­—ã€å¼•ç”¨ç¬¦ã€ãŠã‚ˆ"
+"ã³ãƒ‘ーセント記å·ã€ãŠã‚ˆã³ <literal>value</literal> 中ã®æ”¹è¡Œã€éžå°å­—å¯èƒ½æ–‡å­—ã€"
+"ãŠã‚ˆã³ãƒ‘ーセント記å·) ã¯ã€% エンコードã•ã‚Œã¾ã™ã€‚リストã¯ã€åŒã˜ã‚­ãƒ¼ã‚’æŒã¤è¤‡æ•°"
+"ã®<literal>key::=value</literal> è¡Œã§è¡¨ã•ã‚Œã¾ã™ã€‚設定セクションã¯ã€ç©ºç™½è¡Œã§çµ‚"
+"ã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Package action lines consist of five fields in Version 2: package name "
+"(without architecture qualification even if foreign), old version, direction "
+"of version change (&lt; for upgrades, &gt; for downgrades, = for no change), "
+"new version, action. The version fields are \"-\" for no version at all (for "
+"example when installing a package for the first time; no version is treated "
+"as earlier than any real version, so that is an upgrade, indicated as "
+"<literal>- &lt; 1.23.4</literal>). The action field is \"**CONFIGURE**\" if "
+"the package is being configured, \"**REMOVE**\" if it is being removed, or "
+"the filename of a .deb file if it is being unpacked."
+msgstr ""
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2 ã§ã¯ãƒ‘ッケージアクション行㯠5 ã¤ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã§æ§‹æˆã•ã‚Œã¦ã„ã¾"
+"ã™: パッケージå (例ãˆå¤–国ã ã¨ã—ã¦ã‚‚アーキテクãƒãƒ£è³‡æ ¼ãªã—ã§)ã€æ—§ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã€"
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³å¤‰æ›´ã®æ–¹å‘ (&lt; アップグレードã€&gt; ダウングレードã€= 変化ãªã—)ã€"
+"æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã€å‡¦ç†ã€‚ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãªã—ã®å ´åˆã¯ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯ã™ã¹ã¦ \"-"
+"\" ã§ã™ (例ãˆã°ã€åˆã‚ã¦ãƒ‘ッケージをインストール時ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãªã—ã¯ã€ä»»æ„ã®å®Ÿ"
+"éš›ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚ˆã‚Šã‚‚å‰ã¨ã—ã¦æ‰±ã‚ã‚Œã¾ã™ã€‚ãã®ãŸã‚ã€<literal>- &lt; 1.23.4</"
+"literal>ã¯ã‚¢ãƒƒãƒ—グレードã¨ãªã‚Šã¾ã™)。パッケージãŒè¨­å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã®ã‚¢ã‚¯ã‚·ãƒ§"
+"ンフィールド㯠\"**CONFIGURE**\" ã§ã€å‰Šé™¤ã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ \"**REMOVE**\" ã€è§£"
+"å‡ã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ .deb ファイルã®ãƒ•ã‚¡ã‚¤ãƒ«åã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"In Version 3 after each version field follows the architecture of this "
+"version, which is \"-\" if there is no version, and a field showing the "
+"MultiArch type \"same\", \"foreign\", \"allowed\" or \"none\". Note that "
+"\"none\" is an incorrect typename which is just kept to remain compatible, "
+"it should be read as \"no\" and users are encouraged to support both."
+msgstr ""
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3 ã§ã¯ã€å„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®å¾Œã«ã€ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯"
+"ãƒãƒ£ãŒç¶šãã¾ã™ã€‚ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãªã—ã®å ´åˆã¯ \"-\" ã€ãã—㦠MultiArch åž‹ \"same"
+"\"ã€\"foreign\"ã€\"allowed\" ã¾ãŸã¯ \"none\" を示ã™ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã€‚\"none\" ã¯å˜"
+"ã«äº’æ›æ€§ã‚’維æŒã™ã‚‹ãŸã‚ã«æ®‹ã•ã‚ŒãŸã€èª¤ã£ãŸåž‹åã§ã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。ã"
+"ã‚Œã¯\"no\" ã¨èª­ã¾ã‚Œã‚‹ã¹ãã§ã€ãƒ¦ãƒ¼ã‚¶ã¯ä¸¡æ–¹ã‚’サãƒãƒ¼ãƒˆã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The version of the protocol to be used for the command "
+"<literal><replaceable>cmd</replaceable></literal> can be chosen by setting "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::Version</"
+"literal> accordingly, the default being version 1. If APT isn't supporting "
+"the requested version it will send the information in the highest version it "
+"has support for instead."
+msgstr ""
+"コマンド <literal><replaceable>cmd</replaceable></literal> ã§åˆ©ç”¨ã™ã‚‹ãƒ—ロトコ"
+"ルã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯ <literal>DPkg::Tools::options::<replaceable>cmd</"
+"replaceable>::Version</literal> ã®è¨­å®šã«ã‚ˆã‚Šé¸æŠžã§ãã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯ãƒãƒ¼ã‚¸ãƒ§ãƒ³ "
+"1 ã¨ãªã£ã¦ã„ã¾ã™ã€‚リクエストã—ãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ APT ãŒã‚µãƒãƒ¼ãƒˆã—ã¦ã„ãªã„å ´åˆã¯ã‚µ"
+"ãƒãƒ¼ãƒˆã—ã¦ã„る最大ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®æƒ…報を代ã‚ã‚Šã«é€ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The file descriptor to be used to send the information can be requested with "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::InfoFD</"
+"literal> which defaults to <literal>0</literal> for standard input and is "
+"available since version 0.9.11. Support for the option can be detected by "
+"looking for the environment variable <envar>APT_HOOK_INFO_FD</envar> which "
+"contains the number of the used file descriptor as a confirmation."
+msgstr ""
+"情報ã®é€ä¿¡ã«åˆ©ç”¨ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ãƒ‡ã‚£ã‚¹ã‚¯ãƒªãƒ—タ㯠<literal>DPkg::Tools::options::"
+"<replaceable>cmd</replaceable>::InfoFD</literal> ã«ã‚ˆã‚Šãƒªã‚¯ã‚¨ã‚¹ãƒˆã§ãã€ãƒ‡ãƒ•ã‚©"
+"ルト㯠<literal>0</literal> ã§æ¨™æº–入力を指定ã—ã¾ã™ã€‚ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 0.9.11 ã‹ã‚‰åˆ©"
+"用å¯èƒ½ã¨ãªã‚Šã¾ã—ãŸã€‚環境変数 <envar>APT_HOOK_INFO_FD</envar> を見るã“ã¨ã§ã“ã®"
+"オプションã«å¯¾å¿œã—ã¦ã„ã‚‹ã“ã¨ã‚’検出ã§ãã€ãã‚Œã«ã¯ç¢ºèªã¨ã—ã¦åˆ©ç”¨ã—ã¦ã„るファイ"
+"ルディスクリプタã®ç•ªå·ãŒåŽéŒ²ã•ã‚Œã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"APT chdirs to this directory before invoking &dpkg;, the default is "
+"<filename>/</filename>."
+msgstr ""
+"APT 㯠&dpkg; を呼ã³å‡ºã™å‰ã«ã“ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ç§»å‹•ã—ã¾ã™ã€‚デフォルト㯠"
+"<filename>/</filename> ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"These options are passed to &dpkg-buildpackage; when compiling packages; the "
+"default is to disable signing and produce all binaries."
+msgstr ""
+"ã“れらã®ã‚ªãƒ—ションã¯ã€ãƒ‘ッケージã®ã‚³ãƒ³ãƒ‘イル時㫠&dpkg-buildpackage; ã«æ¸¡ã•ã‚Œ"
+"ã¾ã™ã€‚デフォルトã§ã¯ç½²åを無効ã«ã—ã€å…¨ãƒã‚¤ãƒŠãƒªã‚’生æˆã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"If this option is set APT will call <command>dpkg --configure --pending</"
+"command> to let &dpkg; handle all required configurations and triggers. This "
+"option is activated by default, but deactivating it could be useful if you "
+"want to run APT multiple times in a row - e.g. in an installer. In this "
+"scenario you could deactivate this option in all but the last run."
+msgstr ""
+"ã“ã®ã‚ªãƒ—ションãŒã‚»ãƒƒãƒˆã•ã‚Œã‚‹ã¨ã€&dpkg; ã«ã™ã¹ã¦ã®å¿…è¦ãªè¨­å®šã¨ãƒˆãƒªã‚¬ã‚’扱ã‚ã›ã‚‹"
+"よã†ã«ã€APT 㯠<command>dpkg --configure --pending</command> を呼ã³å‡ºã—ã¾ã™ã€‚"
+"ã“ã®ã‚ªãƒ—ションã¯ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§æœ‰åŠ¹ã¨ãªã£ã¦ã„ã¾ã™ãŒã€APT を複数回連続ã—ã¦å®Ÿè¡Œ"
+"ã™ã‚‹å ´åˆ (インストーラãªã©) ã«ã¯ã€ç„¡åŠ¹ã«ã—ãŸã»ã†ãŒä¾¿åˆ©ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。ã“ã®ã‚·"
+"ナリオã§ã¯ã€æœ€å¾Œä»¥å¤–ã®ã™ã¹ã¦ã®å®Ÿè¡Œã§ã€ç„¡åŠ¹ã«ã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Periodic and Archives options"
+msgstr "Periodic オプション㨠Archives オプション"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups "
+"of options configure behavior of apt periodic updates, which is done by the "
+"<literal>/usr/lib/apt/apt.systemd.daily</literal> script. See the top of "
+"this script for the brief documentation of these options."
+msgstr ""
+"オプション㮠<literal>APT::Periodic</literal> グループ㨠<literal>APT::"
+"Archives</literal> グループã¯ã€<literal>/usr/lib/apt/apt.systemd.daily</"
+"literal> スクリプトを使用ã—ã¦ã€apt ã®å®šæœŸæ›´æ–°ã®æŒ™å‹•ã‚’設定ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ—ショ"
+"ンã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã¯ã€ã“ã®ã‚¹ã‚¯ãƒªãƒ—トã®å…ˆé ­ã‚’å‚ç…§ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Debug options"
+msgstr "デãƒãƒƒã‚°ã‚ªãƒ—ション"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Enabling options in the <literal>Debug::</literal> section will cause "
+"debugging information to be sent to the standard error stream of the program "
+"utilizing the <literal>apt</literal> libraries, or enable special program "
+"modes that are primarily useful for debugging the behavior of <literal>apt</"
+"literal>. Most of these options are not interesting to a normal user, but a "
+"few may be:"
+msgstr ""
+"<literal>Debug::</literal> セクションã®ã‚ªãƒ—ションを有効ã«ã™ã‚‹ã¨ã€"
+"<literal>apt</literal> ライブラリを利用ã™ã‚‹ãƒ—ログラムã®æ¨™æº–エラー出力ã«ã€ãƒ‡"
+"ãƒãƒƒã‚°æƒ…報をé€ã‚‹ã‚ˆã†ã«ãªã£ãŸã‚Šã€ä¸»ã« <literal>apt</literal> ã®æŒ™å‹•ã‚’デãƒãƒƒã‚°"
+"ã™ã‚‹ã®ã«ä¾¿åˆ©ãªã€ç‰¹æ®Šãƒ¢ãƒ¼ãƒ‰ã‚’有効ã«ã—ãŸã‚Šã§ãã¾ã™ã€‚普通ã®ãƒ¦ãƒ¼ã‚¶ã«ã¯ã€ã»ã¨ã‚“ã©"
+"ã®ã‚ªãƒ—ションã¯èˆˆå‘³ãŒãªã„ã§ã—ょã†ãŒã€ä»¥ä¸‹ã®ã‚‚ã®ã¯èˆˆå‘³ã‚’引ãã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::pkgProblemResolver</literal> enables output about the "
+"decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</"
+"literal>."
+msgstr ""
+"<literal>Debug::pkgProblemResolver</literal> ã¯ã€<literal>dist-upgrade, "
+"upgrade, install, remove, purge</literal> ã§è¡Œã‚ã‚ŒãŸåˆ¤æ–­ã«ã¤ã„ã¦ã®å‡ºåŠ›ã‚’有効"
+"ã«ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::NoLocking</literal> disables all file locking. This can be "
+"used to run some operations (for instance, <literal>apt-get -s install</"
+"literal>) as a non-root user."
+msgstr ""
+"<literal>Debug::NoLocking</literal> ã¯ãƒ•ã‚¡ã‚¤ãƒ«ãƒ­ãƒƒã‚¯ã‚’ã™ã¹ã¦ç„¡åŠ¹ã«ã—ã¾ã™ã€‚ã“"
+"ã‚Œã¯ã€éž root ユーザã¨ã—ã¦æ“作 (例ãˆã° <literal>apt-get -s install</"
+"literal>) ã‚’è¡Œã†å ´åˆã«ä½¿ç”¨ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each "
+"time that <literal>apt</literal> invokes &dpkg;."
+msgstr ""
+"<literal>Debug::pkgDPkgPM</literal> 㯠<literal>apt</literal> ãŒå®Ÿéš›ã« "
+"&dpkg; ã‚’èµ·å‹•ã™ã‚‹éš›ã®å„コマンドラインを表示ã—ã¾ã™ã€‚"
+
+#. TODO: provide a
+#. motivating example, except I haven't a clue why you'd want
+#. to do this.
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
+"in CD-ROM IDs."
+msgstr ""
+"<literal>Debug::IdentCdrom</literal> 㯠CD-ROM ID ã«ã‚ã‚‹ statfs データをå«ã‚"
+"ãªã„よã†ã«ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid "A full list of debugging options to apt follows."
+msgstr "以下㯠apt ã«å¯¾ã™ã‚‹ãƒ‡ãƒãƒƒã‚°ã‚ªãƒ—ションã®ã™ã¹ã¦ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information related to accessing <literal>cdrom://</literal> sources."
+msgstr ""
+"<literal>cdrom://</literal> ソースã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã«é–¢ã™ã‚‹æƒ…報を出力ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using FTP."
+msgstr "FTP を用ã„ãŸãƒ‘ッケージã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã«é–¢ã™ã‚‹æƒ…報を出力ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using HTTP."
+msgstr "HTTP を用ã„ãŸãƒ‘ッケージã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã«é–¢ã™ã‚‹æƒ…報を出力ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using HTTPS."
+msgstr "HTTPS を用ã„ãŸãƒ‘ッケージã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã«é–¢ã™ã‚‹æƒ…報を出力ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information related to verifying cryptographic signatures using "
+"<literal>gpg</literal>."
+msgstr ""
+"<literal>gpg</literal> を用ã„ãŸæš—å·ç½²åã®æ¤œè¨¼ã«é–¢ã™ã‚‹æƒ…報を出力ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information about the process of accessing collections of packages "
+"stored on CD-ROMs."
+msgstr ""
+"CD-ROM ã«ã‚るパッケージ集åˆã«å¯¾ã—ã¦ã€ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãƒ—ロセスã«ã¤ã„ã¦ã®æƒ…報を出力"
+"ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Describes the process of resolving build-dependencies in &apt-get;."
+msgstr "&apt-get; ã§ã®æ§‹ç¯‰ä¾å­˜é–¢ä¿‚解決ã®ãƒ—ロセスを説明ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output each cryptographic hash that is generated by the <literal>apt</"
+"literal> libraries."
+msgstr ""
+"<literal>apt</literal> ライブラリãŒç”Ÿæˆã—ãŸã€æš—å·åŒ–ãƒãƒƒã‚·ãƒ¥ã‚’出力ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Do not include information from <literal>statfs</literal>, namely the number "
+"of used and free blocks on the CD-ROM filesystem, when generating an ID for "
+"a CD-ROM."
+msgstr ""
+"CD-ROM ã® ID を生æˆã™ã‚‹éš›ã« <literal>statfs</literal> ã¨ã„ã†ã€CD-ROM ファイル"
+"システムã«ã‚る使用済・未使用ブロックã®æ•°ã‹ã‚‰ã®æƒ…報をå«ã‚ãªã„よã†ã«ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Disable all file locking. For instance, this will allow two instances of "
+"<quote><literal>apt-get update</literal></quote> to run at the same time."
+msgstr ""
+"ファイルã®ãƒ­ãƒƒã‚¯ã‚’ã™ã¹ã¦ç„¡åŠ¹ã«ã—ã¾ã™ã€‚例ãˆã°ã€åŒæ™‚ã«ãµãŸã¤ã® "
+"<quote><literal>apt-get update</literal></quote> を実行ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Log when items are added to or removed from the global download queue."
+msgstr ""
+"グローãƒãƒ«ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚­ãƒ¥ãƒ¼ã«å¯¾ã™ã‚‹é …ç›®ã®è¿½åŠ ãƒ»å‰Šé™¤ã®éš›ã«ãƒ­ã‚°ã‚’出力ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output status messages and errors related to verifying checksums and "
+"cryptographic signatures of downloaded files."
+msgstr ""
+"ダウンロードã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã®ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã‚„æš—å·ç½²åã®ç¢ºèªã«é–¢ã™ã‚‹ã€çŠ¶æ…‹ãƒ¡ãƒƒã‚»ãƒ¼"
+"ジやエラーを出力ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information about downloading and applying package index list diffs, "
+"and errors relating to package index list diffs."
+msgstr ""
+"パッケージインデックスリスト差分ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãƒ»é©ç”¨æ™‚ã®ã€æƒ…報やエラーを出力"
+"ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information related to patching apt package lists when downloading "
+"index diffs instead of full indices."
+msgstr ""
+"インデックス全体ã§ã¯ãªãインデックス差分ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã®éš›ã«ã€apt パッケージ"
+"リストã¸ã®ãƒ‘ッãƒé©ç”¨ã«é–¢ã™ã‚‹æƒ…報を出力ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Log all interactions with the sub-processes that actually perform downloads."
+msgstr ""
+"実際ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’è¡Œã†éš›ã®ã€ã‚µãƒ–プロセスã¨ã®ã‚„ã‚Šã¨ã‚Šã‚’ログã«å‡ºåŠ›ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Log events related to the automatically-installed status of packages and to "
+"the removal of unused packages."
+msgstr ""
+"パッケージã®è‡ªå‹•ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚„ã€ä¸è¦ãƒ‘ッケージã®å‰Šé™¤ã«é–¢ã™ã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã‚’ã€ãƒ­ã‚°"
+"ã«å‡ºåŠ›ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate debug messages describing which packages are being automatically "
+"installed to resolve dependencies. This corresponds to the initial auto-"
+"install pass performed in, e.g., <literal>apt-get install</literal>, and not "
+"to the full <literal>apt</literal> dependency resolver; see <literal>Debug::"
+"pkgProblemResolver</literal> for that."
+msgstr ""
+"ä¾å­˜é–¢ä¿‚解決ã®ãŸã‚ã«ã€ã©ã®ãƒ‘ッケージãŒè‡ªå‹•çš„ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚ŒãŸã‹ã®ãƒ‡ãƒãƒƒã‚°"
+"メッセージを生æˆã—ã¾ã™ã€‚ã“ã‚Œã¯å®Œå…¨ãª <literal>apt</literal> ä¾å­˜é–¢ä¿‚解決プロ"
+"グラム (<literal>Debug::pkgProblemResolver</literal> ã‚’å‚ç…§) ã§ã¯ãªãã€ä¾‹ãˆ"
+"ã° <literal>apt-get install</literal> ã§å®Ÿè¡Œã•ã‚ŒãŸã€åˆæœŸã®è‡ªå‹•ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«çµŒ"
+"è·¯ã«å¯¾å¿œã—ã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate debug messages describing which packages are marked as keep/install/"
+"remove while the ProblemResolver does his work. Each addition or deletion "
+"may trigger additional actions; they are shown indented two additional "
+"spaces under the original entry. The format for each line is "
+"<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c -"
+"&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> is "
+"the current version of the package, <literal>d.e.f</literal> is the version "
+"considered for installation and <literal>x.y.z</literal> is a newer version, "
+"but not considered for installation (because of a low pin score). The later "
+"two can be omitted if there is none or if it is the same as the installed "
+"version. <literal>section</literal> is the name of the section the package "
+"appears in."
+msgstr ""
+"ProblemResolver ãŒå‹•ä½œã™ã‚‹éš›ã«ã€ä¸€æ™‚ä¿ç•™ãƒ»ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãƒ»å‰Šé™¤ã¨ã—ã¦ãƒžãƒ¼ã‚¯ã•ã‚Œ"
+"ãŸãƒ‘ッケージã«é–¢ã™ã‚‹ã€ãƒ‡ãƒãƒƒã‚°ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’生æˆã—ã¾ã™ã€‚å„追加・削除ã¯è¿½åŠ ã‚¢ã‚¯"
+"ションã®ãƒˆãƒªã‚¬ã¨ãªã‚Šã€ã“れをオリジナルã®ã‚¨ãƒ³ãƒˆãƒªã®ä¸‹ã«ã€ç©ºç™½ 2 個ã§ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆ"
+"ã—ã¦è¡¨ç¤ºã—ã¾ã™ã€‚å„è¡Œã¯ã€<literal>MarkKeep</literal>, <literal>MarkDelete</"
+"literal>, <literal>MarkInstall</literal> ã¨ãªã‚Šã€<literal>package-name &lt;a."
+"b.c -&gt; d.e.f | x.y.z&gt; (section)</literal> ãŒç¶šãã¾ã™ã€‚ã“ã“ã§ã€"
+"<literal>a.b.c</literal> ã¯ã€ãã®ãƒ‘ッケージã®ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã€<literal>d.e."
+"f</literal>ã¯ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«äºˆå®šã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã€<literal>x.y.z</literal> ã¯ã‚ˆã‚Š"
+"æ–°ã—ã„ã‘ã‚Œã©ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«å¯¾è±¡å¤–ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ (pin ã®ã‚¹ã‚³ã‚¢ãŒä½Žã„ãŸã‚) ã§ã™ã€‚後"
+"ã®ãµãŸã¤ã¯ã€å­˜åœ¨ã—ãªã„ã€ãªã„ã—インストール中ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨åŒã˜å ´åˆã€çœç•¥ã•ã‚Œ"
+"ã¾ã™ã€‚<literal>section</literal> ã¯ãƒ‘ッケージãŒç¾ã‚Œã‚‹ã‚»ã‚¯ã‚·ãƒ§ãƒ³åã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"When invoking &dpkg;, output the precise command line with which it is being "
+"invoked, with arguments separated by a single space character."
+msgstr ""
+"&dpkg; 起動時ã«ã€èµ·å‹•ã—ãŸéš›ã®æ­£ç¢ºãªã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚’出力ã—ã¾ã™ã€‚引数ã¯ç©ºç™½ã§åŒº"
+"切られã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output all the data received from &dpkg; on the status file descriptor and "
+"any errors encountered while parsing it."
+msgstr ""
+"状態ファイルディスクリプタã«ã€&dpkg; ã‹ã‚‰å—ä¿¡ã—ãŸã™ã¹ã¦ã®ãƒ‡ãƒ¼ã‚¿ã¨ã€ãã®ãƒ‡ãƒ¼ã‚¿"
+"を解æžä¸­ã«ç™ºç”Ÿã—ãŸã‚¨ãƒ©ãƒ¼ã‚’出力ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate a trace of the algorithm that decides the order in which "
+"<literal>apt</literal> should pass packages to &dpkg;."
+msgstr ""
+"<literal>apt</literal> ㌠&dpkg; ã«ãƒ‘ッケージを渡ã™é †ç•ªã‚’決ã‚ã‚‹ã€ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ "
+"ã®ãƒˆãƒ¬ãƒ¼ã‚¹ã‚’生æˆã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output status messages tracing the steps performed when invoking &dpkg;."
+msgstr "&dpkg; を呼ã³å‡ºã™éš›ã«ã€å®Ÿè¡Œæ‰‹é †ã‚’追跡ã—ãŸçŠ¶æ…‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’出力ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Output the priority of each package list on startup."
+msgstr "起動時ã®å„パッケージã®å„ªå…ˆåº¦ã‚’表示ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Trace the execution of the dependency resolver (this applies only to what "
+"happens when a complex dependency problem is encountered)."
+msgstr ""
+"ä¾å­˜é–¢ä¿‚解決システムã®å®Ÿè¡Œå†…容を追跡ã—ã¾ã™ (ã“ã‚Œã¯è¤‡é›‘ãªä¾å­˜é–¢ä¿‚ã®å•é¡Œã«é­é‡"
+"ã—ãŸå ´åˆã«ã®ã¿ã€é©ç”¨ã•ã‚Œã¾ã™)。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Display a list of all installed packages with their calculated score used by "
+"the pkgProblemResolver. The description of the package is the same as "
+"described in <literal>Debug::pkgDepCache::Marker</literal>"
+msgstr ""
+"全インストール済ã¿ãƒ‘ッケージã®ã€pkgProblemResolver ãŒè¨ˆç®—ã—ãŸã‚¹ã‚³ã‚¢ã‚’一覧表示"
+"ã—ã¾ã™ã€‚パッケージã®èª¬æ˜Žã¯ã€<literal>Debug::pkgDepCache::Marker</literal> ã§"
+"説明ã—ãŸã‚‚ã®ã¨åŒã˜ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information about the vendors read from <filename>/etc/apt/vendors."
+"list</filename>."
+msgstr ""
+"<filename>/etc/apt/vendors.list</filename> ã‹ã‚‰èª­ã¿è¾¼ã‚“ã ã€ãƒ™ãƒ³ãƒ€ã®æƒ…報を出力"
+"ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Display the external commands that are called by apt hooks. This includes e."
+"g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"<literal>APT::Update::{Pre,Post}-Invoke</literal>."
+msgstr ""
+"aptã®ãƒ•ãƒƒã‚¯ã«ã‚ˆã‚Šå‘¼ã³å‡ºã•ã‚Œã‚‹å¤–部コマンドを表示ã—ã¾ã™ã€‚ã“ã‚Œã«ã¯ä¾‹ãˆã°ã€è¨­å®šã‚ª"
+"プション <literal>DPkg::{Pre,Post}-Invoke</literal> や <literal>APT::Update::"
+"{Pre,Post}-Invoke</literal> ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml apt-ftparchive.1.xml
+msgid "Examples"
+msgstr "サンプル"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"&configureindex; is a configuration file showing example values for all "
+"possible options."
+msgstr ""
+"&configureindex; ã¯ã€å…¨åˆ©ç”¨å¯èƒ½ã‚ªãƒ—ション値ã®ã‚µãƒ³ãƒ—ルをå‚ç…§ã§ãã‚‹ã€è¨­å®šãƒ•ã‚¡ã‚¤"
+"ルã®ã‚µãƒ³ãƒ—ルã§ã™ã€‚"
+
+#. ? reading apt.conf
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid "&apt-cache;, &apt-config;, &apt-preferences;."
+msgstr "&apt-cache;, &apt-config;, &apt-preferences;."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt_preferences.5.xml
+msgid "Preference control file for APT"
+msgstr "APT 用é¸æŠžåˆ¶å¾¡ãƒ•ã‚¡ã‚¤ãƒ«"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"The APT preferences file <filename>/etc/apt/preferences</filename> and the "
+"fragment files in the <filename>/etc/apt/preferences.d/</filename> folder "
+"can be used to control which versions of packages will be selected for "
+"installation."
+msgstr ""
+"APT プリファレンスファイル <filename>/etc/apt/preferences</filename> 㨠"
+"<filename>/etc/apt/preferences.d/</filename> フォルダã«ã‚る断片ファイルã¯ã€ã‚¤"
+"ンストールã™ã‚‹ãƒ‘ッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’制御ã™ã‚‹ã®ã«ä½¿ç”¨ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Several versions of a package may be available for installation when the "
+"&sources-list; file contains references to more than one distribution (for "
+"example, <literal>stable</literal> and <literal>testing</literal>). APT "
+"assigns a priority to each version that is available. Subject to dependency "
+"constraints, <command>apt-get</command> selects the version with the highest "
+"priority for installation. The APT preferences override the priorities that "
+"APT assigns to package versions by default, thus giving the user control "
+"over which one is selected for installation."
+msgstr ""
+"&sources-list; ファイルã«è¤‡æ•°ã®ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューション (<literal>stable</"
+"literal> 㨠<literal>testing</literal> ãªã©) ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¦ã€ãƒ‘ッケージã«å¯¾"
+"ã—複数ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã§ãã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ã“ã®ã¨ã APT ã¯ã€åˆ©ç”¨ã§"
+"ãã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã”ã¨ã«å„ªå…ˆåº¦ã‚’割り当ã¦ã¾ã™ã€‚ä¾å­˜é–¢ä¿‚è¦å‰‡ã‚’æ¡ä»¶ã¨ã—ã¦ã€"
+"<command>apt-get</command> ã¯ã€æœ€ã‚‚高ã„優先度をæŒã¤ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’インストールã™"
+"るよã†é¸æŠžã—ã¾ã™ã€‚APT プリファレンスファイルã¯ã€APT ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§å‰²ã‚Šå½“ã¦"
+"ãŸã€ãƒ‘ッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®å„ªå…ˆåº¦ã‚’上書ãã—ã¾ã™ã€‚ãã®çµæžœã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã‚‚"
+"ã®ã®é¸æŠžã‚’ã€ãƒ¦ãƒ¼ã‚¶ãŒé¸æŠžã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Several instances of the same version of a package may be available when the "
+"&sources-list; file contains references to more than one source. In this "
+"case <command>apt-get</command> downloads the instance listed earliest in "
+"the &sources-list; file. The APT preferences do not affect the choice of "
+"instance, only the choice of version."
+msgstr ""
+"&sources-list; ファイルã«è¤‡æ•°ã®å‚ç…§ãŒæ›¸ã‹ã‚Œã¦ã„ã‚‹å ´åˆã€ãƒ‘ッケージã®åŒã˜ãƒãƒ¼"
+"ジョンã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒè¤‡æ•°åˆ©ç”¨ã§ãã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ã“ã®å ´åˆã€<command>apt-"
+"get</command> 㯠&sources-list; ファイルã®åˆã‚ã®æ–¹ã«æŒ‡å®šã•ã‚Œã¦ã„ã‚‹ã¨ã“ã‚ã‹ã‚‰"
+"ダウンロードã—ã¾ã™ã€‚APT プリファレンスファイルã¯ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®é¸æŠžã«ã®ã¿å½±éŸ¿"
+"ã—ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®é¸æŠžã«ã¯å½±éŸ¿ã—ã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Preferences are a strong power in the hands of a system administrator but "
+"they can become also their biggest nightmare if used without care! APT will "
+"not question the preferences, so wrong settings can lead to uninstallable "
+"packages or wrong decisions while upgrading packages. Even more problems "
+"will arise if multiple distribution releases are mixed without a good "
+"understanding of the following paragraphs. Packages included in a specific "
+"release aren't tested in (and therefore don't always work as expected in) "
+"older or newer releases, or together with other packages from different "
+"releases. You have been warned."
+msgstr ""
+"プリファレンスファイルã¯ã€ã‚·ã‚¹ãƒ†ãƒ ç®¡ç†è€…ã®å¼·ã„力ã§ã™ãŒã€æ³¨æ„ã—ã¦ä½¿ã‚ãªã„ã¨å¤§"
+"ããªæ‚ªå¤¢ã«ã‚‚ãªã‚Šã¾ã™! APT ã¯ãƒ—リファレンスã«ã¤ã„ã¦å•ã„åˆã‚ã›ã‚‹ã“ã¨ã¯ã—ã¾ã›"
+"ん。ãã®ãŸã‚ã€è¨­å®šã‚’誤ã£ãŸã“ã¨ã«ã‚ˆã‚Šã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã§ããªã„パッケージã«èª˜å°Žã•"
+"ã‚ŒãŸã‚Šã€ãƒ‘ッケージã®ã‚¢ãƒƒãƒ—グレード中ã«èª¤ã£ãŸåˆ¤æ–­ã‚’ã—ãŸã‚Šã¨ã„ã†äº‹ãŒã‚ã‚Šãˆã¾"
+"ã™ã€‚以é™ã®æ®µè½ã®å†…容をよãç†è§£ã—ãªã„ã§ã€è¤‡æ•°ã®ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューションリリース"
+"ã‚’æ··ãœã¦ã—ã¾ã†ã¨ã€ã‚ˆã‚Šå¤šãã®å•é¡ŒãŒç™ºç”Ÿã™ã‚‹äº‹ã«ãªã‚Šã¾ã™ã€‚特定ã®ãƒªãƒªãƒ¼ã‚¹ã«å«ã¾"
+"れるパッケージã¯ã€å¤ã„/æ–°ã—ã„リリースやã€ç•°ãªã‚‹ãƒªãƒªãƒ¼ã‚¹ã‹ã‚‰æŒã£ã¦ããŸä»–ã®ãƒ‘ッ"
+"ケージã¨ã§ã¯ã€ãƒ†ã‚¹ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“ (ã—ã€äºˆæƒ³é€šã‚Šã«å¸¸ã«å‹•ä½œã™ã‚‹ã¨ã¯é™ã‚Šã¾ã›"
+"ã‚“)。以上ã€è­¦å‘Šã—ã¾ã—ãŸã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Note that the files in the <filename>/etc/apt/preferences.d</filename> "
+"directory are parsed in alphanumeric ascending order and need to obey the "
+"following naming convention: The files have either no or \"<literal>pref</"
+"literal>\" as filename extension and only contain alphanumeric, hyphen (-), "
+"underscore (_) and period (.) characters. Otherwise APT will print a notice "
+"that it has ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
+msgstr ""
+"<filename>/etc/apt/preferences.d</filename> ディレクトリã«ã‚るファイルã¯ã€è‹±"
+"æ•°å­—ã®æ˜‡é †ã§è§£æžã•ã‚Œã€ä»¥ä¸‹ã®å‘½åè¦ç´„ã«å¾“ã†å¿…è¦ãŒã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。"
+"ファイルåã®æ‹¡å¼µå­ã¯ãªã„ã‹ã€\"<literal>pref</literal>\" ã¨ãªã£ã¦ãŠã‚Šã€è‹±æ•°"
+"å­—ã€ãƒã‚¤ãƒ•ãƒ³ (-)ã€ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢ (_)ã€ãƒ”リオド (.) ã§ã§ãã¦ã„ã¾ã™ã€‚ãã†ã§ãªã‘"
+"ã‚Œã°ã€<literal>Dir::Ignore-Files-Silently</literal> 設定リストã®ãƒ‘ターンã«ä¸€"
+"致ã™ã‚‹ã‚‚ã®ä»¥å¤–ã«å¯¾ã—ã¦ã€ãƒ•ã‚¡ã‚¤ãƒ«ã‚’無視ã™ã‚‹ã¨ã„ã†æ³¨æ„ã‚’ APT ãŒå‡ºåŠ›ã—ã¾ã™ã€‚一致"
+"ã™ã‚‹å ´åˆã¯é»™ã£ã¦ç„¡è¦–ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "APT's Default Priority Assignments"
+msgstr "APT ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå„ªå…ˆåº¦ã®å‰²ã‚Šå½“ã¦"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "<command>apt-get install -t testing <replaceable>some-package</replaceable></command>\n"
+msgstr "<command>apt-get install -t testing <replaceable>some-package</replaceable></command>\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "APT::Default-Release \"stable\";\n"
+msgstr "APT::Default-Release \"stable\";\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If there is no preferences file or if there is no entry in the file that "
+"applies to a particular version then the priority assigned to that version "
+"is the priority of the distribution to which that version belongs. It is "
+"possible to single out a distribution, \"the target release\", which "
+"receives a higher priority than other distributions do by default. The "
+"target release can be set on the <command>apt-get</command> command line or "
+"in the APT configuration file <filename>/etc/apt/apt.conf</filename>. Note "
+"that this has precedence over any general priority you set in the <filename>/"
+"etc/apt/preferences</filename> file described later, but not over "
+"specifically pinned packages. For example, <placeholder type="
+"\"programlisting\" id=\"0\"/> <placeholder type=\"programlisting\" id=\"1\"/>"
+msgstr ""
+"プリファレンスファイルãŒãªã‹ã£ãŸã‚Šã€ãƒ—リファレンスファイルã«ç‰¹å®šã®ãƒ‘ッケージ"
+"を割り当ã¦ã‚‹ã‚¨ãƒ³ãƒˆãƒªãŒãªã„å ´åˆã€ãã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®å„ªå…ˆåº¦ã¯ã€ãã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒå±ž"
+"ã—ã¦ã„るディストリビューションã®å„ªå…ˆåº¦ã¨ãªã‚Šã¾ã™ã€‚デフォルトã§ä»–ã®ãƒ‡ã‚£ã‚¹ãƒˆãƒª"
+"ビューションより高ã„優先度をæŒã¤ã€ç‰¹å®šã®ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューションを「ターゲット"
+"リリースã€ã¨ã—ã¦ãŠã‘ã¾ã™ã€‚ターゲットリリースã¯ã€<command>apt-get</command> ã®"
+"コマンドラインやã€APT 設定ファイル <filename>/etc/apt/apt.conf</filename> ã§"
+"設定ã§ãã¾ã™ã€‚後述ã™ã‚‹ <filename>/etc/apt/preferences</filename> ファイルã§è¨­"
+"定ã—ãŸä¸€èˆ¬å„ªå…ˆåº¦ã‚ˆã‚Šã‚‚ã“ã‚Œã¯å„ªå…ˆã•ã‚Œã¾ã™ãŒã€pin æ­¢ã‚ã—ãŸãƒ‘ッケージã«ã¯åŠã°ãª"
+"ã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。例ãˆã°ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚<placeholder type="
+"\"programlisting\" id=\"0\"/> <placeholder type=\"programlisting\" id=\"1\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If the target release has been specified then APT uses the following "
+"algorithm to set the priorities of the versions of a package. Assign:"
+msgstr ""
+"ターゲットリリースãŒæŒ‡å®šã•ã‚Œã‚‹ã¨ã€APT ã¯ä»¥ä¸‹ã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã§ã€ãƒ‘ッケージã®"
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®å„ªå…ˆåº¦ã‚’設定ã—ã¾ã™ã€‚以下ã®ã‚ˆã†ã«å‰²ã‚Šå½“ã¦ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 1"
+msgstr "優先度 1"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"to the versions coming from archives which in their <filename>Release</"
+"filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</"
+"emphasis> as \"ButAutomaticUpgrades: yes\" like the Debian "
+"<literal>experimental</literal> archive."
+msgstr ""
+"Debian ã® <literal>experimental</literal> アーカイブã®ã‚ˆã†ã«ã€"
+"<filename>Release</filename> ファイル㫠\"NotAutomatic: yes\" ã¨ãƒžãƒ¼ã‚¯ã•"
+"ã‚Œã€\"ButAutomaticUpgrades: yes\" ã¨ãƒžãƒ¼ã‚¯ã•ã‚Œã¦<emphasis>ã„ãªã„</emphasis>"
+"アーカイブ由æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 100"
+msgstr "優先度 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"to the version that is already installed (if any) and to the versions coming "
+"from archives which in their <filename>Release</filename> files are marked "
+"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the Debian "
+"backports archive since <literal>squeeze-backports</literal>."
+msgstr ""
+"(ã‚‚ã—ã‚ã‚Œã°) æ—¢ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚„ã€<literal>squeeze-backports</"
+"literal> 以é™ã§ã‚ã‚‹ Debian ã®ãƒãƒƒã‚¯ãƒãƒ¼ãƒˆã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã®ã‚ˆã†ãªã€"
+"<filename>Release</filename> ファイル㫠\"NotAutomatic: yes\" ã‹ã¤ "
+"\"ButAutomaticUpgrades: yes\" ã¨ãƒžãƒ¼ã‚¯ã•ã‚Œã¦ã„るアーカイブ由æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 500"
+msgstr "優先度 500"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "to the versions that do not belong to the target release."
+msgstr "ターゲットリリースã«å±žã—ã¦ã„ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 990"
+msgstr "優先度 990"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "to the versions that belong to the target release."
+msgstr "ターゲットリリースã«å±žã™ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The highest of those priorities whose description matches the version is "
+"assigned to the version."
+msgstr ""
+"説明ãŒãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨ãƒžãƒƒãƒã—ã€å„ªå…ˆé †ä½ãŒæœ€ã‚‚高ã„ã‚‚ã®ãŒãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œ"
+"ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If the target release has not been specified then APT simply assigns "
+"priority 100 to all installed package versions and priority 500 to all "
+"uninstalled package versions, except versions coming from archives which in "
+"their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" "
+"- these versions get the priority 1 or priority 100 if it is additionally "
+"marked as \"ButAutomaticUpgrades: yes\"."
+msgstr ""
+"ターゲットリリースãŒæŒ‡å®šã•ã‚Œã¦ã„ãªã‘ã‚Œã°ã€APT ã¯å˜ç´”ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ã„ã‚‹"
+"パッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã¯å„ªå…ˆåº¦ 100 ã‚’ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ã„ãªã„パッケージã®"
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã¯å„ªå…ˆåº¦ 500 を割り当ã¦ã¾ã™ã€‚ãŸã ã—ã€<filename>Release</"
+"filename> ファイル㫠\"NotAutomatic: yes\" ã¨ãƒžãƒ¼ã‚¯ã•ã‚ŒãŸã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ç”±æ¥ã®ãƒãƒ¼"
+"ジョンã¯é•ã„ã¾ã™ã€‚ã“ã†ã„ã£ãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯å„ªå…ˆåº¦ 1 を割り当ã¦ã€ã•ã‚‰ã« "
+"\"ButAutomaticUpgrades: yes\" ã¨ãƒžãƒ¼ã‚¯ã•ã‚Œã¦ã„ã‚‹å ´åˆã«ã¯ã€å„ªå…ˆåº¦ 100 を割り当"
+"ã¦ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"APT then applies the following rules, listed in order of precedence, to "
+"determine which version of a package to install."
+msgstr ""
+"APT ã¯ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ãƒ‘ッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’決定ã™ã‚‹ãŸã‚ã«ã€ä»¥ä¸‹ã®ãƒ«ãƒ¼ãƒ«"
+"を上ã‹ã‚‰é †ç•ªã«é©ç”¨ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"Never downgrade unless the priority of an available version exceeds 1000. "
+"(\"Downgrading\" is installing a less recent version of a package in place "
+"of a more recent version. Note that none of APT's default priorities "
+"exceeds 1000; such high priorities can only be set in the preferences file. "
+"Note also that downgrading a package can be risky.)"
+msgstr ""
+"有効ãªãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®å„ªå…ˆåº¦ãŒ 1000 を越ãˆãªã„å ´åˆã€æ±ºã—ã¦ãƒ€ã‚¦ãƒ³ã‚°ãƒ¬ãƒ¼ãƒ‰ã—ã¾ã›"
+"ん。(「ダウングレードã€ã¯ã€ç¾åœ¨ã®ãƒ‘ッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚ˆã‚Šã‚‚ã€å°ã•ã„ãƒãƒ¼ã‚¸ãƒ§"
+"ンã®ã‚‚ã®ã‚’インストールã—ã¾ã™ã€‚APT ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå„ªå…ˆåº¦ãŒ 1000 を越ãˆãªã„ã“ã¨ã«"
+"注æ„ã—ã¦ãã ã•ã„。ãã®ã‚ˆã†ãªå„ªå…ˆåº¦ã¯ã€ãƒ—リファレンスファイルã§ã®ã¿è¨­å®šã§ãã¾"
+"ã™ã€‚ã¾ãŸã€ãƒ‘ッケージã®ãƒ€ã‚¦ãƒ³ã‚°ãƒ¬ãƒ¼ãƒ‰ã¯å±é™ºã§ã‚ã‚‹ã“ã¨ã«ã‚‚注æ„ã—ã¦ãã ã•ã„)"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "Install the highest priority version."
+msgstr "最も高ã„優先度ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’インストールã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"If two or more versions have the same priority, install the most recent one "
+"(that is, the one with the higher version number)."
+msgstr ""
+"åŒã˜å„ªå…ˆåº¦ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒè¤‡æ•°å­˜åœ¨ã™ã‚‹å ´åˆã€æœ€ã‚‚æ–°ã—ã„ã‚‚ã® (最もãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·"
+"ãŒé«˜ã„ã‚‚ã®) をインストールã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"If two or more versions have the same priority and version number but either "
+"the packages differ in some of their metadata or the <literal>--reinstall</"
+"literal> option is given, install the uninstalled one."
+msgstr ""
+"優先度・ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ãŒåŒã˜ã‚‚ã®ãŒè¤‡æ•°å­˜åœ¨ã—ã€ãã®ãƒ‘ッケージã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ãŒç•°"
+"ãªã‚‹ã‹ <literal>--reinstall</literal> オプションãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã‚‹å ´åˆã€ã‚¤ãƒ³ã‚¹"
+"トールã•ã‚Œã¦ã„ãªã„ã‚‚ã®ã‚’インストールã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"In a typical situation, the installed version of a package (priority 100) "
+"is not as recent as one of the versions available from the sources listed in "
+"the &sources-list; file (priority 500 or 990). Then the package will be "
+"upgraded when <command>apt-get install <replaceable>some-package</"
+"replaceable></command> or <command>apt-get upgrade</command> is executed."
+msgstr ""
+"よãã‚る状æ³ã¨ã—ã¦ã€ã‚るインストールã•ã‚Œã¦ã„るパッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ (優先度 "
+"100) ãŒã€&sources-list; ファイルã®ãƒªã‚¹ãƒˆã‹ã‚‰å¾—られるãƒãƒ¼ã‚¸ãƒ§ãƒ³ (優先度 500 "
+"ã‹ 990) よりも新ã—ããªã„ã¨ã„ã†ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ã“ã®å ´åˆã€<command>apt-get "
+"install <replaceable>some-package</replaceable></command> ã‚„ <command>apt-"
+"get upgrade</command> を実行ã™ã‚‹ã¨ãƒ‘ッケージãŒæ›´æ–°ã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"More rarely, the installed version of a package is <emphasis>more</emphasis> "
+"recent than any of the other available versions. The package will not be "
+"downgraded when <command>apt-get install <replaceable>some-package</"
+"replaceable></command> or <command>apt-get upgrade</command> is executed."
+msgstr ""
+"ã¾ã‚Œã«ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„るパッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã€<emphasis>ä»–ã®æœ‰åŠ¹ãª"
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚ˆã‚Šã‚‚</emphasis>æ–°ã—ã„å ´åˆãŒã‚ã‚Šã¾ã™ã€‚ã“ã®æ™‚ <command>apt-get "
+"install <replaceable>some-package</replaceable></command> ã‚„ <command>apt-"
+"get upgrade</command> を実行ã—ã¦ã‚‚ã€ãƒ€ã‚¦ãƒ³ã‚°ãƒ¬ãƒ¼ãƒ‰ã—ã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Sometimes the installed version of a package is more recent than the version "
+"belonging to the target release, but not as recent as a version belonging to "
+"some other distribution. Such a package will indeed be upgraded when "
+"<command>apt-get install <replaceable>some-package</replaceable></command> "
+"or <command>apt-get upgrade</command> is executed, because at least "
+"<emphasis>one</emphasis> of the available versions has a higher priority "
+"than the installed version."
+msgstr ""
+"時々ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ã„るパッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãƒªãƒªãƒ¼ã‚¹ã«å±žã™"
+"ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚ˆã‚Šã‚‚æ–°ã—ãã€ä»–ã®ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューションよりもå¤ã„å ´åˆãŒã‚ã‚Šã¾"
+"ã™ã€‚ãã®ã‚ˆã†ãªãƒ‘ッケージã«å¯¾ã—㦠<command>apt-get install <replaceable>some-"
+"package</replaceable></command> や <command>apt-get upgrade</command> を実行"
+"ã™ã‚‹ã¨ã€ãƒ‘ッケージã¯æ›´æ–°ã•ã‚Œã¾ã™ã€‚ã“ã®å ´åˆã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³"
+"よりもã€å°‘ãªãã¨ã‚‚<emphasis>ã²ã¨ã¤</emphasis>ã¯ã€é«˜ã„優先度をæŒã¤æœ‰åŠ¹ãªãƒ‘ッ"
+"ケージãŒã‚ã‚‹ã‹ã‚‰ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "The Effect of APT Preferences"
+msgstr "APT プリファレンスファイルã®åŠ¹æžœ"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The APT preferences file allows the system administrator to control the "
+"assignment of priorities. The file consists of one or more multi-line "
+"records separated by blank lines. Records can have one of two forms, a "
+"specific form and a general form."
+msgstr ""
+"APT プリファレンスファイルを使ã†ã¨ã€ã‚·ã‚¹ãƒ†ãƒ ç®¡ç†è€…ãŒå„ªå…ˆåº¦ã‚’割り当ã¦ã‚‰ã‚Œã‚‹ã‚ˆ"
+"ã†ã«ãªã‚Šã¾ã™ã€‚ファイルã¯ã€ç©ºç™½è¡Œã§åŒºåˆ‡ã‚‰ã‚ŒãŸã€è¤‡æ•°è¡Œã‹ã‚‰ãªã‚‹ãƒ¬ã‚³ãƒ¼ãƒ‰ã§æ§‹æˆã•"
+"ã‚Œã¦ã„ã¾ã™ã€‚レコードã¯ç‰¹å®šå½¢å¼ã‹ã€æ±Žç”¨å½¢å¼ã®ã©ã¡ã‚‰ã‹ã®å½¢å¼ã‚’ã¨ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The specific form assigns a priority (a \"Pin-Priority\") to one or more "
+"specified packages with a specified version or version range. For example, "
+"the following record assigns a high priority to all versions of the "
+"<filename>perl</filename> package whose version number begins with "
+"\"<literal>&good-perl;</literal>\". Multiple packages can be separated by "
+"spaces."
+msgstr ""
+"特定形å¼ã¯ã€å„ªå…ˆåº¦ (\"Pin-Priority\") ã‚’ã€æŒ‡å®šã—ãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç¯„囲"
+"ã®ã€æŒ‡å®šã—ãŸãƒ‘ッケージã«ã¤ã„ã¦å‰²ã‚Šå½“ã¦ã¾ã™ã€‚例ãˆã°ä»¥ä¸‹ã®ãƒ¬ã‚³ãƒ¼ãƒ‰ã¯ã€ãƒãƒ¼ã‚¸ãƒ§"
+"ン番å·ãŒ \"<literal>&good-perl;</literal>\" ã§å§‹ã¾ã‚‹ <filename>perl</"
+"filename> パッケージをã€é«˜ã„優先度ã«è¨­å®šã—ã¾ã™ã€‚空白ã§åŒºåˆ‡ã‚Šã€è¤‡æ•°ã®ãƒ‘ッケー"
+"ジを指定ã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The general form assigns a priority to all of the package versions in a "
+"given distribution (that is, to all the versions of packages that are listed "
+"in a certain <filename>Release</filename> file) or to all of the package "
+"versions coming from a particular Internet site, as identified by the site's "
+"fully qualified domain name."
+msgstr ""
+"汎用形å¼ã¯ã€ä¸Žãˆã‚‰ã‚ŒãŸãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューションã«ã‚ã‚‹ã€ã™ã¹ã¦ã®ãƒ‘ッケージ "
+"(<filename>Release</filename> ファイルã«åˆ—挙ã—ãŸãƒ‘ッケージ) ã®å„ªå…ˆåº¦ã‚„ã€FQDN"
+"ã§æŒ‡å®šã—ãŸã€ç‰¹å®šã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆã‚µã‚¤ãƒˆã‹ã‚‰å–å¾—ã™ã‚‹ãƒ‘ッケージã®å„ªå…ˆåº¦ã‚’割り当"
+"ã¦ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"This general-form entry in the APT preferences file applies only to groups "
+"of packages. For example, the following record assigns a high priority to "
+"all package versions available from the local site."
+msgstr ""
+"APT プリファレンスファイルã«æ›¸ã‹ã‚Œã¦ã„る汎用形å¼ã®ã‚¨ãƒ³ãƒˆãƒªã¯ã€ãƒ‘ッケージã®ã‚°"
+"ループã«ã¤ã„ã¦ã®ã¿é©ç”¨ã•ã‚Œã¾ã™ã€‚例ãˆã°ä»¥ä¸‹ã®ãƒ¬ã‚³ãƒ¼ãƒ‰ã¯ã€ãƒ­ãƒ¼ã‚«ãƒ«ã‚µã‚¤ãƒˆã«ã‚ã‚‹"
+"全パッケージã«ã¤ã„ã¦ã€é«˜ã„優先度を割り当ã¦ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A note of caution: the keyword used here is \"<literal>origin</literal>\" "
+"which can be used to match a hostname. The following record will assign a "
+"high priority to all versions available from the server identified by the "
+"hostname \"ftp.de.debian.org\""
+msgstr ""
+"注æ„: ã“ã“ã§ä½¿ã‚れるキーワードã¯ã€ãƒ›ã‚¹ãƒˆåã«ãƒžãƒƒãƒã™ã‚‹ã®ã«ä½¿ã‚れる "
+"\"<literal>origin</literal>\" ã§ã™ã€‚以下ã®ãƒ¬ã‚³ãƒ¼ãƒ‰ã¯ã€ãƒ›ã‚¹ãƒˆå㌠\"ftp.de."
+"debian.org\" ã§è­˜åˆ¥ã•ã‚Œã‚‹ã‚µãƒ¼ãƒç”±æ¥ã®ã™ã¹ã¦ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã€é«˜ã„優先度を割り当"
+"ã¦ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"This should <emphasis>not</emphasis> be confused with the Origin of a "
+"distribution as specified in a <filename>Release</filename> file. What "
+"follows the \"Origin:\" tag in a <filename>Release</filename> file is not an "
+"Internet address but an author or vendor name, such as \"Debian\" or \"Ximian"
+"\"."
+msgstr ""
+"<filename>Release</filename> ファイルã«æŒ‡å®šã•ã‚ŒãŸã‚ˆã†ãªã€ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューショ"
+"ン㮠Origin 㨠<emphasis>æ··åŒã—ãªã„</emphasis>よã†ã«ã—ã¦ãã ã•ã„。"
+"<filename>Release</filename> ファイルã«ã‚ã‚‹ \"Origin:\" ã‚¿ã‚°ã¯ã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒ"
+"トアドレスã§ã¯ãªãã€\"Debian\" ã‚„ \"Ximian\" ã¨ã„ã£ãŸä½œè€…やベンダåã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a low priority to all package versions "
+"belonging to any distribution whose Archive name is \"<literal>unstable</"
+"literal>\"."
+msgstr ""
+"以下ã®ãƒ¬ã‚³ãƒ¼ãƒ‰ã¯ã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–å㌠\"<literal>unstable</literal>\" ã¨ãªã£ã¦ã„ã‚‹"
+"ディストリビューションã«å±žã™ã‚‹ãƒ‘ッケージをã€ã™ã¹ã¦ä½Žã„優先度ã«å‰²ã‚Šå½“ã¦ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any distribution whose Codename is \"<literal>&debian-testing-"
+"codename;</literal>\"."
+msgstr ""
+"以下ã®ãƒ¬ã‚³ãƒ¼ãƒ‰ã¯ã€ã‚³ãƒ¼ãƒ‰å㌠\"<literal>&debian-testing-codename;</literal>"
+"\" ã¨ãªã£ã¦ã„るディストリビューションã«å±žã™ã‚‹ãƒ‘ッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ã€é«˜ã„優"
+"先度ã«å‰²ã‚Šå½“ã¦ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+msgstr ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any release whose Archive name is \"<literal>stable</literal>\" "
+"and whose release Version number is \"<literal>&debian-stable-version;</"
+"literal>\"."
+msgstr ""
+"以下ã®ãƒ¬ã‚³ãƒ¼ãƒ‰ã¯ã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–å㌠\"<literal>stable</literal>\" ã§ã€ãƒªãƒªãƒ¼ã‚¹"
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ãŒ \"<literal>&debian-stable-version;</literal>\" ã¨ãªã£ã¦ã„ã‚‹"
+"リリースã«å±žã™ã‚‹ãƒ‘ッケージをã€ã™ã¹ã¦é«˜ã„優先度ã«å‰²ã‚Šå½“ã¦ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The effect of the comma operator is similar to an \"and\" in logic: All "
+"conditions must be satisfied for the pin to match. There is one exception: "
+"For any type of condition (such as two \"a\" conditions), only the last such "
+"condition is checked."
+msgstr ""
+"コンマ演算å­ã®åŠ¹æžœã¯ \"and\" è«–ç†ã«ä¼¼ã¦ã„ã¾ã™: ピンãŒä¸€è‡´ã™ã‚‹ã‚ˆã†ã«ã™ã¹ã¦ã®æ¡"
+"件ãŒãƒ”ンãŒä¸€è‡´ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。一ã¤ã®ä¾‹å¤–ãŒã‚ã‚Šã¾ã™: æ¡ä»¶ã®ã„ãšã‚Œã‹ã®åž‹"
+"ã§ã¯ (例ãˆã°ã€äºŒã¤ã® \"a\" æ¡ä»¶)ã€ãŸã æœ€å¾Œã®æ¡ä»¶ã®ã¿ãŒãƒã‚§ãƒƒã‚¯ã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Regular expressions and &glob; syntax"
+msgstr "æ­£è¦è¡¨ç¾ã¨ &glob; 構文"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"APT also supports pinning by &glob; expressions, and regular expressions "
+"surrounded by slashes. For example, the following example assigns the "
+"priority 500 to all packages from experimental where the name starts with "
+"gnome (as a &glob;-like expression) or contains the word kde (as a POSIX "
+"extended regular expression surrounded by slashes)."
+msgstr ""
+"APT 㯠&glob; 表ç¾ã¨ã€ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã§å›²ã‚“ã æ­£è¦è¡¨ç¾ã«ã‚ˆã‚‹ pin もサãƒãƒ¼ãƒˆã—ã¦ã„ã¾"
+"ã™ã€‚例ãˆã°ä»¥ä¸‹ã®ä¾‹ã¯ã€gnome ã§å§‹ã¾ã‚‹ (&glob; 風表ç¾) ã‹ kde ã‚’å«ã‚€ (スラッ"
+"シュã§å›²ã‚“ã  POSIX ã®æ‹¡å¼µæ­£è¦è¡¨ç¾) åå‰ã®ã€experimental ç”±æ¥ã®ã™ã¹ã¦ã®ãƒ‘ッ"
+"ケージã«ã€å„ªå…ˆåº¦500を割り当ã¦ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+msgstr ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The rule for those expressions is that they can occur anywhere where a "
+"string can occur. Thus, the following pin assigns the priority 990 to all "
+"packages from a release starting with &ubuntu-codename;."
+msgstr ""
+"ã“ã®è¡¨ç¾ã®è¦å‰‡ã¯ã€æ–‡å­—ãŒç¾ã‚Œã†ã‚‹å ´æ‰€ãªã‚‰ã€ã©ã“ã§ã‚‚発生ã—ã†ã‚‹ã¨ã„ã†äº‹ã§ã™ã€‚ã—"
+"ãŸãŒã£ã¦ã€ä»¥ä¸‹ã® pin ã¯ã€&ubuntu-codename; ã§å§‹ã¾ã‚‹ãƒªãƒªãƒ¼ã‚¹ç”±æ¥ã®ã€ã™ã¹ã¦ã®"
+"パッケージã«ã€å„ªå…ˆåº¦ 990 を割り当ã¦ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+msgstr ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If a regular expression occurs in a <literal>Package</literal> field, the "
+"behavior is the same as if this regular expression were replaced with a list "
+"of all package names it matches. It is undecided whether this will change in "
+"the future; thus you should always list wild-card pins first, so later "
+"specific pins override it. The pattern \"<literal>*</literal>\" in a "
+"Package field is not considered a &glob; expression in itself."
+msgstr ""
+"<literal>Package</literal> フィールドも正è¦è¡¨ç¾ãŒç¾ã‚Œã‚‹å ´åˆã€æ­£è¦è¡¨ç¾ã‚’ã€ãƒžãƒƒ"
+"ãƒã™ã‚‹ã™ã¹ã¦ã®ãƒ‘ッケージåã®ãƒªã‚¹ãƒˆã«ç½®ãæ›ãˆãŸã‚‚ã®ã¨ã—ã¦ã€å‹•ä½œã—ã¾ã™ã€‚ã“ã‚Œã¯"
+"å°†æ¥å¤‰æ›´ã•ã‚Œã‚‹ã‹ã©ã†ã‹ã€ã¾ã æ±ºå®šã—ã¦ã„ã¾ã›ã‚“。ãã®ãŸã‚ã€ã¾ãšã¯ã˜ã‚ã«ãƒ¯ã‚¤ãƒ«ãƒ‰"
+"カード pin ã‚’ã€å¸¸ã«è¨˜è¿°ã™ã‚‹ã‚ˆã†ã«ã—ã¦ãã ã•ã„。ãã®å¾Œã«ç¶šã pin ã§ä¸Šæ›¸ãã•ã‚Œ"
+"ã¾ã™ã€‚Package フィールド㮠\"<literal>*</literal>\" パターンã¯ã€&glob; 表ç¾è‡ª"
+"体ã¨ã¯è¦‹ãªã•ã‚Œã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "How APT Interprets Priorities"
+msgstr "APT ãŒå„ªå…ˆåº¦ã«å‰²ã‚Šè¾¼ã‚€æ–¹æ³•"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Priorities (P) assigned in the APT preferences file must be positive or "
+"negative integers. They are interpreted as follows (roughly speaking):"
+msgstr ""
+"APT プリファレンスファイルã§å‰²ã‚Šå½“ã¦ãŸå„ªå…ˆåº¦ (P) ã¯ã€æ­£è² ã®æ•´æ•°ã§ãªãã¦ã¯ãªã‚Š"
+"ã¾ã›ã‚“。ã“れ㯠(ãŠãŠã–ã£ã±ã«ã„ã†ã¨) 以下ã®ã‚ˆã†ã«è§£é‡ˆã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P &gt;= 1000"
+msgstr "P &gt;= 1000"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed even if this constitutes a downgrade of the "
+"package"
+msgstr ""
+"パッケージãŒãƒ€ã‚¦ãƒ³ã‚°ãƒ¬ãƒ¼ãƒ‰ã—ã¦ã‚‚ã€ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ‘ッケージをインストール"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "990 &lt;= P &lt; 1000"
+msgstr "990 &lt;= P &lt; 1000"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed even if it does not come from the target "
+"release, unless the installed version is more recent"
+msgstr ""
+"インストールã•ã‚Œã¦ã„ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®æ–¹ãŒæ–°ã—ã„ã®ã§ãªã‘ã‚Œã°ã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãƒªãƒªãƒ¼ã‚¹"
+"ã«å«ã¾ã‚Œãªãã¦ã‚‚ã€ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ‘ッケージをインストール"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "500 &lt;= P &lt; 990"
+msgstr "500 &lt;= P &lt; 990"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to the target release or the installed version is more recent"
+msgstr ""
+"ターゲットリリースã«å±žã™ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã‚ã£ãŸã‚Šã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã‚‹ãƒãƒ¼"
+"ジョンã®æ–¹ãŒæ–°ã—ã„ã®ã§ãªã‘ã‚Œã°ã€ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ‘ッケージをインストール"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "100 &lt;= P &lt; 500"
+msgstr "100 &lt;= P &lt; 500"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to some other distribution or the installed version is more recent"
+msgstr ""
+"ä»–ã®ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューションã«å±žã™ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã‚ã£ãŸã‚Šã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„"
+"ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®æ–¹ãŒæ–°ã—ã„ã®ã§ãªã‘ã‚Œã°ã€ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ‘ッケージをインストー"
+"ル"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "0 &lt; P &lt; 100"
+msgstr "0 &lt; P &lt; 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed only if there is no installed version of "
+"the package"
+msgstr ""
+"ã“ã®ãƒ‘ッケージãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ãªã„å ´åˆã€ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ‘ッケージをイ"
+"ンストール"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P &lt; 0"
+msgstr "P &lt; 0"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "prevents the version from being installed"
+msgstr "ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ç¦æ­¢"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P = 0"
+msgstr "P = 0"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "has undefined behaviour, do not use it."
+msgstr "ã¯å‹•ä½œãŒæœªå®šç¾©ã§ã™ã€ä½¿ç”¨ã—ãªã„ã§ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The first specific-form record matching an available package version "
+"determines the priority of the package version. Failing that, the priority "
+"of the package is defined as the maximum of all priorities defined by "
+"generic-form records matching the version. Records defined using patterns "
+"in the Pin field other than \"*\" are treated like specific-form records."
+msgstr ""
+"利用å¯èƒ½ãªãƒ‘ッケージãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ä¸€è‡´ã™ã‚‹æœ€åˆã®ç‰¹å®šå½¢å¼ã®ãƒ¬ã‚³ãƒ¼ãƒ‰ãŒã€ãƒ‘ッケー"
+"ジãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®å„ªå…ˆåº¦ã‚’決定ã—ã¾ã™ã€‚ãã‚Œã«å¤±æ•—ã™ã‚‹ã¨ã€ãƒ‘ッケージãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®å„ª"
+"先度ã¯ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ä¸€è‡´ã™ã‚‹æ±Žç”¨å½¢å¼ã®ãƒ¬ã‚³ãƒ¼ãƒ‰ã§å®šç¾©ã•ã‚ŒãŸã™ã¹ã¦ã®å„ªå…ˆåº¦ã®æœ€"
+"大値ã¨ã—ã¦å®šç¾©ã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"For example, suppose the APT preferences file contains the three records "
+"presented earlier:"
+msgstr ""
+"例ãˆã°ã€APT プリファレンスファイルã®ä¸Šã®æ–¹ã«ã€ä»¥ä¸‹ã®ãƒ¬ã‚³ãƒ¼ãƒ‰ãŒæ›¸ã‹ã‚Œã¦ã„ã‚‹ã¨"
+"仮定ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid "Then:"
+msgstr "ã™ã‚‹ã¨ã€ä»¥ä¸‹ã®ã‚ˆã†ã«å‹•ä½œã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The most recent available version of the <literal>perl</literal> package "
+"will be installed, so long as that version's version number begins with "
+"\"<literal>&good-perl;</literal>\". If <emphasis>any</emphasis> &good-perl;"
+"* version of <literal>perl</literal> is available and the installed version "
+"is &bad-perl;*, then <literal>perl</literal> will be downgraded."
+msgstr ""
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ãŒ \"<literal>&good-perl;</literal>\" ã§å§‹ã¾ã£ã¦ã„ã‚Œã°ã€"
+"<literal>perl</literal> ã®æœ€æ–°ã®åˆ©ç”¨å¯èƒ½ãƒ‘ッケージãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¾ã™ã€‚"
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³ &good-perl;* ãŒåˆ©ç”¨å¯èƒ½ã§ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ &bad-perl;* ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•"
+"ã‚Œã¦ã„ã‚‹å ´åˆã€<literal>perl</literal> ã¯ãƒ€ã‚¦ãƒ³ã‚°ãƒ¬ãƒ¼ãƒ‰ã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A version of any package other than <literal>perl</literal> that is "
+"available from the local system has priority over other versions, even "
+"versions belonging to the target release."
+msgstr ""
+"ローカルシステムã§æœ‰åŠ¹ãªã€<literal>perl</literal> 以外ã®ã©ã‚“ãªãƒ‘ッケージã§"
+"ã‚‚ã€ä»–ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚ˆã‚Š (ãŸã¨ãˆã‚¿ãƒ¼ã‚²ãƒƒãƒˆãƒªãƒªãƒ¼ã‚¹ã«å±žã—ã¦ã„ã¦ã‚‚) 優先度ãŒé«˜ã"
+"ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A version of a package whose origin is not the local system but some other "
+"site listed in &sources-list; and which belongs to an <literal>unstable</"
+"literal> distribution is only installed if it is selected for installation "
+"and no version of the package is already installed."
+msgstr ""
+"ローカルシステムã«ã¯ãªãã¦ã‚‚ &sources-list; ã«åˆ—挙ã•ã‚ŒãŸã‚µã‚¤ãƒˆã«ã‚ã‚‹ãƒãƒ¼ã‚¸ãƒ§"
+"ンã§ã€<literal>unstable</literal> ディストリビューションã«å±žã—ã¦ã„るパッケー"
+"ジã¯ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã‚ˆã†é¸æŠžã•ã‚Œã€æ—¢ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒãª"
+"ã„å ´åˆã«ã®ã¿ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Determination of Package Version and Distribution Properties"
+msgstr "パッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューションプロパティã®æ±ºå®š"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The locations listed in the &sources-list; file should provide "
+"<filename>Packages</filename> and <filename>Release</filename> files to "
+"describe the packages available at that location."
+msgstr ""
+"&sources-list; ファイルã«åˆ—挙ã—ãŸå ´æ‰€ã§ã¯ã€ãã®å ´æ‰€ã§åˆ©ç”¨ã§ãるパッケージを記"
+"è¿°ã—ãŸã€<filename>Packages</filename> ファイルや <filename>Release</"
+"filename> ファイルをæä¾›ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The <filename>Packages</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable>/"
+"<replaceable>component</replaceable>/<replaceable>arch</replaceable></"
+"filename>: for example, <filename>.../dists/stable/main/binary-i386/"
+"Packages</filename>. It consists of a series of multi-line records, one for "
+"each package available in that directory. Only two lines in each record are "
+"relevant for setting APT priorities:"
+msgstr ""
+"<filename>Packages</filename> ファイルã¯é€šå¸¸ <filename>.../dists/"
+"<replaceable>dist-name</replaceable>/<replaceable>component</replaceable>/"
+"<replaceable>arch</replaceable></filename> ディレクトリã«ã‚ã‚Šã¾ã™ã€‚例ãˆã°ã€"
+"<filename>.../dists/stable/main/binary-i386/Packages</filename> ã§ã™ã€‚ã“ã‚Œ"
+"ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ã‚る利用å¯èƒ½ãƒ‘ッケージã”ã¨ã«ã€è¤‡æ•°è¡Œã®ãƒ¬ã‚³ãƒ¼ãƒ‰ã‹ã‚‰ã§ãã¦ã„"
+"ã¾ã™ã€‚APT 優先度ã®è¨­å®šã¯ã€ãƒ¬ã‚³ãƒ¼ãƒ‰ã”ã¨ã«ä»¥ä¸‹ã® 2 è¡Œã ã‘ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Package:</literal> line"
+msgstr "<literal>Package:</literal> 行"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "gives the package name"
+msgstr "パッケージå"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Version:</literal> line"
+msgstr "<literal>Version:</literal> 行"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "gives the version number for the named package"
+msgstr "ãã®åå‰ã®ãƒ‘ッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The <filename>Release</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable></filename>: for "
+"example, <filename>.../dists/stable/Release</filename>, or <filename>.../"
+"dists/&debian-stable-codename;/Release</filename>. It consists of a single "
+"multi-line record which applies to <emphasis>all</emphasis> of the packages "
+"in the directory tree below its parent. Unlike the <filename>Packages</"
+"filename> file, nearly all of the lines in a <filename>Release</filename> "
+"file are relevant for setting APT priorities:"
+msgstr ""
+"<filename>Release</filename> ファイルã¯ã€é€šå¸¸ <filename>.../dists/"
+"<replaceable>dist-name</replaceable></filename> ディレクトリã«ã‚ã‚Šã¾ã™ã€‚例ãˆ"
+"ã°ã€<filename>.../dists/stable/Release</filename> ã‚„ <filename>.../dists/"
+"&debian-stable-codename;/Release</filename> ã§ã™ã€‚ã“ã‚Œã¯ã€ã“ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªä»¥"
+"下ã«ã‚ã‚‹<emphasis>å…¨</emphasis>パッケージã«é©ç”¨ã™ã‚‹ã€è¤‡æ•°è¡Œã®ãƒ¬ã‚³ãƒ¼ãƒ‰ 1 ã¤ã‹"
+"らæˆã£ã¦ã„ã¾ã™ã€‚<filename>Packages</filename> ファイルã¨é•ã„ "
+"<filename>Release</filename> ファイルã¯ã€ä»¥ä¸‹ã®ã‚ˆã†ã«ã»ã¨ã‚“ã©ã®è¡ŒãŒ APT 優先"
+"度ã®è¨­å®šã«é–¢é€£ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line"
+msgstr "<literal>Archive:</literal> 行や <literal>Suite:</literal> 行"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the archive to which all the packages in the directory tree belong. "
+"For example, the line \"Archive: stable\" or \"Suite: stable\" specifies "
+"that all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file are in a <literal>stable</literal> "
+"archive. Specifying this value in the APT preferences file would require "
+"the line:"
+msgstr ""
+"ã“ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ„リーã«å±žã™ã‚‹å…¨ãƒ‘ッケージã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–åã§ã™ã€‚例ãˆ"
+"ã°ã€\"Archive: stable\" ã‚„ \"Suite: stable\" ã¨ã„ã†è¡Œã¯ã€<filename>Release</"
+"filename> ファイルã®è¦ªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ„リー以下ã«ã‚る全パッケージãŒã€"
+"<literal>stable</literal> アーカイブã ã¨æŒ‡å®šã—ã¾ã™ã€‚APT プリファレンスファイ"
+"ルã§ã“ã®å€¤ã‚’指定ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®è¡ŒãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release a=stable\n"
+msgstr "Pin: release a=stable\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Codename:</literal> line"
+msgstr "<literal>Codename:</literal> 行"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the codename to which all the packages in the directory tree belong. "
+"For example, the line \"Codename: &debian-testing-codename;\" specifies that "
+"all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file belong to a version named <literal>&debian-"
+"testing-codename;</literal>. Specifying this value in the APT preferences "
+"file would require the line:"
+msgstr ""
+"ã“ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ„リーã«å±žã™ã‚‹å…¨ãƒ‘ッケージã®ã‚³ãƒ¼ãƒ‰åã§ã™ã€‚ãŸã¨ãˆ"
+"ã°ã€\"Codename: &debian-testing-codename;\" ã¨ã„ã†è¡Œã¯ã€<filename>Release</"
+"filename> ファイルã®è¦ªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ„リー以下ã«ã‚る全パッケージãŒã€"
+"<literal>&debian-testing-codename;</literal> ã¨åå‰ã®ã¤ã„ãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã‚ã‚‹ã¨"
+"指定ã—ã¾ã™ã€‚APT プリファレンスファイルã§ã“ã®å€¤ã‚’指定ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®è¡ŒãŒå¿…è¦"
+"ã«ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release n=&debian-testing-codename;\n"
+msgstr "Pin: release n=&debian-testing-codename;\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the release version. For example, the packages in the tree might "
+"belong to Debian release version &debian-stable-version;. Note that there "
+"is normally no version number for the <literal>testing</literal> and "
+"<literal>unstable</literal> distributions because they have not been "
+"released yet. Specifying this in the APT preferences file would require one "
+"of the following lines."
+msgstr ""
+"リリースãƒãƒ¼ã‚¸ãƒ§ãƒ³åã§ã™ã€‚例ãˆã°ã€ã“ã®ãƒ„リーã®ãƒ‘ッケージãŒã€Debian リリース"
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³ &debian-stable-version; ã«å±žã™ã‚‹ã¨ã—ã¾ã™ã€‚通常 <literal>testing</"
+"literal> ディストリビューションや <literal>unstable</literal> ディストリ"
+"ビューションã«ã¯ã€ã¾ã ãƒªãƒªãƒ¼ã‚¹ã•ã‚Œã¦ã„ãªã„ã®ã§ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ãŒä»˜ãã¾ã›ã‚“。"
+"APT プリファレンスファイルã§ã“れを指定ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®è¡Œã®ã„ãšã‚Œã‹ãŒå¿…è¦ã«ãª"
+"ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+msgstr ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Component:</literal> line"
+msgstr "<literal>Component:</literal> 行"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the licensing component associated with the packages in the directory "
+"tree of the <filename>Release</filename> file. For example, the line "
+"\"Component: main\" specifies that all the packages in the directory tree "
+"are from the <literal>main</literal> component, which entails that they are "
+"licensed under terms listed in the Debian Free Software Guidelines. "
+"Specifying this component in the APT preferences file would require the line:"
+msgstr ""
+"<filename>Release</filename> ファイルã®ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ„リーã«ã‚るパッケージã®"
+"ライセンスコンãƒãƒ¼ãƒãƒ³ãƒˆåã§ã™ã€‚例ãˆã°ã€\"Component: main\" ã¨ã„ã†è¡Œã¯ã€ã“ã®"
+"ディレクトリ以下ã®å…¨ãƒ•ã‚¡ã‚¤ãƒ«ãŒã€<literal>main</literal> コンãƒãƒ¼ãƒãƒ³ãƒˆ "
+"(Debian フリーソフトウェアガイドラインã®å…ƒã§ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã•ã‚Œã¦ã„ã‚‹) ã§ã‚ã‚‹ã“ã¨"
+"を表ã—ã¾ã™ã€‚APT プリファレンスファイルã§ã“ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’指定ã™ã‚‹ã«ã¯ã€ä»¥"
+"下ã®è¡ŒãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release c=main\n"
+msgstr "Pin: release c=main\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Origin:</literal> line"
+msgstr "<literal>Origin:</literal> 行"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the originator of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is <literal>Debian</"
+"literal>. Specifying this origin in the APT preferences file would require "
+"the line:"
+msgstr ""
+"<filename>Release</filename> ファイルã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ„リーã«ã‚るパッケージã®æ"
+"供者åã§ã™ã€‚ã»ã¨ã‚“ã©å…±é€šã§ <literal>Debian</literal> ã§ã™ã€‚APT プリファレンス"
+"ファイルã§ã“ã®æ供者を指定ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®è¡ŒãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release o=Debian\n"
+msgstr "Pin: release o=Debian\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Label:</literal> line"
+msgstr "<literal>Label:</literal> 行"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the label of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is <literal>Debian</"
+"literal>. Specifying this label in the APT preferences file would require "
+"the line:"
+msgstr ""
+"<filename>Release</filename> ファイルã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ„リーã«ã‚るパッケージã®ãƒ©"
+"ベルåã§ã™ã€‚ã»ã¨ã‚“ã©å…±é€šã§ <literal>Debian</literal> ã§ã™ã€‚APT プリファレンス"
+"ファイルã§ã“ã®ãƒ©ãƒ™ãƒ«ã‚’指定ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®è¡ŒãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release l=Debian\n"
+msgstr "Pin: release l=Debian\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"All of the <filename>Packages</filename> and <filename>Release</filename> "
+"files retrieved from locations listed in the &sources-list; file are stored "
+"in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
+"named by the variable <literal>Dir::State::Lists</literal> in the "
+"<filename>apt.conf</filename> file. For example, the file <filename>debian."
+"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
+"contains the <filename>Release</filename> file retrieved from the site "
+"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
+"architecture files from the <literal>contrib</literal> component of the "
+"<literal>unstable</literal> distribution."
+msgstr ""
+"&sources-list; ファイルã«åˆ—挙ã•ã‚ŒãŸå ´æ‰€ã‹ã‚‰å–å¾—ã—㟠<filename>Packages</"
+"filename> ファイルや <filename>Release</filename> ファイルã¯ã™ã¹ã¦ã€"
+"<filename>/var/lib/apt/lists</filename> ディレクトリやã€<filename>apt.conf</"
+"filename> ファイル㮠<literal>Dir::State::Lists</literal> 変数ã§æŒ‡å®šã—ãŸå ´æ‰€"
+"ã«å–å¾—ã•ã‚Œã¾ã™ã€‚例ãˆã°ã€<filename>debian.lcs.mit."
+"edu_debian_dists_unstable_contrib_binary-i386_Release</filename> ファイルã¯ã€"
+"<literal>debian.lcs.mit.edu</literal> ã‹ã‚‰å–å¾—ã—ãŸã€<literal>unstable</"
+"literal> ディストリビューションã§ã€<literal>contrib</literal> コンãƒãƒ¼ãƒãƒ³ãƒˆ"
+"ãªã€<literal>binary-i386</literal> アーキテクãƒãƒ£ç”¨ã® <filename>Release</"
+"filename> ファイルをå«ã‚“ã§ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Optional Lines in an APT Preferences Record"
+msgstr "APT プリファレンスレコードã®ã‚ªãƒ—ション行"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Each record in the APT preferences file can optionally begin with one or "
+"more lines beginning with the word <literal>Explanation:</literal>. This "
+"provides a place for comments."
+msgstr ""
+"APT プリファレンスファイルã®ãƒ¬ã‚³ãƒ¼ãƒ‰ã”ã¨ã«ã€ä»»æ„㧠<literal>Explanation:</"
+"literal> ã§å§‹ã¾ã‚‹è¡Œã‚’æŒã¦ã¾ã™ã€‚ã“ã‚Œã¯ã€ã‚³ãƒ¡ãƒ³ãƒˆç”¨ã®å ´æ‰€ã‚’確ä¿ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking Stable"
+msgstr "安定版ã®è¿½è·¡"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated\n"
+"Explanation: package versions other than those in the stable distro\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Explanation: Uninstall or do not install any Debian-originated\n"
+"Explanation: package versions other than those in the stable distro\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"<literal>stable</literal> distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> "
+"distributions. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"以下㮠APT プリファレンスファイルã¯ã€<literal>stable</literal> ディストリ"
+"ビューションã«å±žã™ã‚‹å…¨ã¦ã®ãƒ‘ッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆ (500) より高ã„"
+"優先度を割り当ã¦ã€ä»–ã® <literal>Debian</literal> ディストリビューションã®ãƒ‘ッ"
+"ケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã¯ã€ä½Žãã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã§ããªã„よã†ãªå„ªå…ˆåº¦ã‚’割り当ã¦ã¾"
+"ã™ã€‚<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"apt-get install <replaceable>package-name</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+msgstr ""
+"apt-get install <replaceable>package-name</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>stable</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+"é©åˆ‡ãª &sources-list; ファイルã¨ä¸Šè¨˜ã®ãƒ—リファレンスファイルã«ã‚ˆã‚Šã€ä»¥ä¸‹ã®ã‚³"
+"マンドã®ã„ãšã‚Œã‹ã§æœ€æ–°ã® <literal>stable</literal> ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã‚¢ãƒƒãƒ—グレード"
+"ã§ãã¾ã™ã€‚<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/testing\n"
+msgstr "apt-get install <replaceable>package</replaceable>/testing\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>testing</literal> distribution; the package "
+"will not be upgraded again unless this command is given again. <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"以下ã®ã‚³ãƒžãƒ³ãƒ‰ã§ã€æŒ‡å®šã—ãŸãƒ‘ッケージを <literal>testing</literal> ディストリ"
+"ビューションã®æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã‚¢ãƒƒãƒ—グレードã—ã¾ã™ã€‚ã“ã®ãƒ‘ッケージã¯ã€å†åº¦ã“"
+"ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’発行ã—ãªã„ã¨ã‚¢ãƒƒãƒ—グレードã•ã‚Œã¾ã›ã‚“。<placeholder type="
+"\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking Testing or Unstable"
+msgstr "テスト版やä¸å®‰å®šç‰ˆã®è¿½è·¡"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a high priority "
+"to package versions from the <literal>testing</literal> distribution, a "
+"lower priority to package versions from the <literal>unstable</literal> "
+"distribution, and a prohibitively low priority to package versions from "
+"other <literal>Debian</literal> distributions. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+msgstr ""
+"以下㮠APT プリファレンスファイルã¯ã€<literal>testing</literal> ディストリ"
+"ビューションã®ãƒ‘ッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«é«˜ã„優先度を割り当ã¦ã€"
+"<literal>unstable</literal> ディストリビューションã®ãƒ‘ッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«"
+"ã¯ä½Žã„優先度を割り当ã¦ã¾ã™ã€‚ã¾ãŸä»–ã® <literal>Debian</literal> ディストリ"
+"ビューションã®ãƒ‘ッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã¯ã€ä½Žãã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã§ããªã„よã†ãªå„ª"
+"先度を割り当ã¦ã¾ã™ã€‚<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>testing</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+"é©åˆ‡ãª &sources-list; ファイルã¨ä¸Šè¨˜ã®ãƒ—リファレンスファイルã«ã‚ˆã‚Šã€ä»¥ä¸‹ã®ã‚³"
+"マンドã®ã„ãšã‚Œã‹ã§æœ€æ–°ã® <literal>testing</literal> ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã‚¢ãƒƒãƒ—グレー"
+"ドã§ãã¾ã™ã€‚<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/unstable\n"
+msgstr "apt-get install <replaceable>package</replaceable>/unstable\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>unstable</literal> distribution. "
+"Thereafter, <command>apt-get upgrade</command> will upgrade the package to "
+"the most recent <literal>testing</literal> version if that is more recent "
+"than the installed version, otherwise, to the most recent <literal>unstable</"
+"literal> version if that is more recent than the installed version. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"以下ã®ã‚³ãƒžãƒ³ãƒ‰ã§ã€æŒ‡å®šã—ãŸãƒ‘ッケージを <literal>unstable</literal> ディストリ"
+"ビューションã®æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã‚¢ãƒƒãƒ—グレードã—ã¾ã™ã€‚ãれ以é™ã€<command>apt-"
+"get upgrade</command> 㯠<literal>testing</literal> ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ‘ッケージãŒ"
+"æ›´æ–°ã•ã‚Œã¦ã„れ㰠<literal>testing</literal> ã®æœ€æ–°ç‰ˆã«ã€<literal>unstable</"
+"literal> ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ‘ッケージãŒæ›´æ–°ã•ã‚Œã¦ã„れ㰠<literal>unstable</"
+"literal> ã®æœ€æ–°ç‰ˆã«ã‚¢ãƒƒãƒ—グレードã—ã¾ã™ã€‚<placeholder type=\"programlisting"
+"\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking the evolution of a codename release"
+msgstr "コードåリリースã®é€²åŒ–ã®è¿½è·¡"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated package versions\n"
+"Explanation: other than those in the distribution codenamed with &debian-testing-codename; or sid\n"
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+"\n"
+"Explanation: Debian unstable is always codenamed with sid\n"
+"Package: *\n"
+"Pin: release n=sid\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Explanation: Uninstall or do not install any Debian-originated package versions\n"
+"Explanation: other than those in the distribution codenamed with &debian-testing-codename; or sid\n"
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+"\n"
+"Explanation: Debian unstable is always codenamed with sid\n"
+"Package: *\n"
+"Pin: release n=sid\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"specified codename of a distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> distributions, "
+"codenames and archives. Note that with this APT preference APT will follow "
+"the migration of a release from the archive <literal>testing</literal> to "
+"<literal>stable</literal> and later <literal>oldstable</literal>. If you "
+"want to follow for example the progress in <literal>testing</literal> "
+"notwithstanding the codename changes you should use the example "
+"configurations above. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"以下㮠APT プリファレンスファイルã¯ã€æŒ‡å®šã—ãŸã‚³ãƒ¼ãƒ‰åã®ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューション"
+"ã«å±žã™ã‚‹å…¨ã¦ã®ãƒ‘ッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆ (500) より高ã„優先度を割り"
+"当ã¦ã€ä»–ã® <literal>Debian</literal> ディストリビューションã€ã‚³ãƒ¼ãƒ‰åã€ã‚¢ãƒ¼ã‚«"
+"イブã®ãƒ‘ッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã¯ã€ä½Žãã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã§ããªã„よã†ãªå„ªå…ˆåº¦ã‚’割"
+"り当ã¦ã¾ã™ã€‚ã“ã® APT プリファレンスファイルã«ã‚ˆã‚Šã€APT 㯠<literal>testing</"
+"literal> アーカイブã‹ã‚‰ã€<literal>stable</literal> や最新㮠"
+"<literal>oldstable</literal> ã¸ç§»è¡Œã§ãã¾ã™ã€‚コードåã®å¤‰æ›´ã«é–¢ä¿‚ãªã "
+"<literal>testing</literal> を追跡ã—ãŸã„å ´åˆã¯ã€ä¸Šè¨˜ã®è¨­å®šä¾‹ã‚’使用ã™ã‚‹ã¹ãã§"
+"ã™ã€‚<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest version(s) in "
+"the release codenamed with <literal>&debian-testing-codename;</literal>. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"é©åˆ‡ãª &sources-list; ファイルã¨ä¸Šè¨˜ã®ãƒ—リファレンスファイルã«ã‚ˆã‚Šã€ä»¥ä¸‹ã®ã‚³"
+"マンドã®ã„ãšã‚Œã‹ã§ã€ãƒªãƒªãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰å㌠<literal>&debian-testing-codename;</"
+"literal> ã§ã‚る最新ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã‚¢ãƒƒãƒ—グレードã§ãã¾ã™ã€‚<placeholder type="
+"\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/sid\n"
+msgstr "apt-get install <replaceable>package</replaceable>/sid\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>sid</literal> distribution. Thereafter, "
+"<command>apt-get upgrade</command> will upgrade the package to the most "
+"recent <literal>&debian-testing-codename;</literal> version if that is more "
+"recent than the installed version, otherwise, to the most recent "
+"<literal>sid</literal> version if that is more recent than the installed "
+"version. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"以下ã®ã‚³ãƒžãƒ³ãƒ‰ã§ã€æŒ‡å®šã—ãŸãƒ‘ッケージを <literal>sid</literal> ディストリ"
+"ビューションã®æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã‚¢ãƒƒãƒ—グレードã—ã¾ã™ã€‚ãれ以é™ã€<command>apt-"
+"get upgrade</command> 㯠<literal>&debian-testing-codename;</literal> ãƒãƒ¼"
+"ジョンã®ãƒ‘ッケージãŒæ›´æ–°ã•ã‚Œã¦ã„れ㰠<literal>&debian-testing-codename;</"
+"literal> ã®æœ€æ–°ç‰ˆã«ã€<literal>sid</literal> ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ‘ッケージãŒæ›´æ–°ã•ã‚Œ"
+"ã¦ã„れ㰠<literal>sid</literal>ã®æœ€æ–°ç‰ˆã«ã‚¢ãƒƒãƒ—グレードã—ã¾ã™ã€‚<placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: sources.list.5.xml
+msgid "List of configured APT data sources"
+msgstr "APT ã®ãƒ‡ãƒ¼ã‚¿å–å¾—å…ƒã®è¨­å®šãƒªã‚¹ãƒˆ"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The source list <filename>/etc/apt/sources.list</filename> and the files "
+"contained in <filename>/etc/apt/sources.list.d/</filename> are designed to "
+"support any number of active sources and a variety of source media. The "
+"files list one source per line (one-line style) or contain multiline stanzas "
+"defining one or more sources per stanza (deb822 style), with the most "
+"preferred source listed first (in case a single version is available from "
+"more than one source). The information available from the configured sources "
+"is acquired by <command>apt-get update</command> (or by an equivalent "
+"command from another APT front-end)."
+msgstr ""
+"å–得元リスト <filename>/etc/apt/sources.list</filename> 㨠<filename>/etc/"
+"apt/sources.list.d/</filename> ã«å«ã¾ã‚Œã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€è¤‡æ•°ã®å–得元や様々ãªãƒ¡"
+"ディアをサãƒãƒ¼ãƒˆã™ã‚‹ã‚ˆã†è¨­è¨ˆã•ã‚Œã¦ã„ã¾ã™ã€‚ファイルã¯ã€1 è¡Œã«ä¸€ã¤ã®å–得元をリ"
+"ストã™ã‚‹ (1 行スタイル) ã‹ã¾ãŸã¯ã‚¹ã‚¿ãƒ³ã‚¶ã”ã¨ã«è¤‡æ•°ã®å–得元を定義ã—ã€(シングル"
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒè¤‡æ•°ã®å–å¾—å…ƒã‹ã‚‰å…¥æ‰‹å¯èƒ½ã§ã‚ã‚‹å ´åˆã«ã¯) 最も好ã¾ã—ã„å–得元を先頭"
+"ã«ç½®ã複数行ã®ã‚¹ã‚¿ãƒ³ã‚¶ (deb822 スタイル) ã‚’å«ã¿ã¾ã™ã€‚設定ã—ãŸå–å¾—å…ƒã‹ã‚‰åˆ©ç”¨å¯"
+"能ãªæƒ…å ±ã¯ã€<command>apt-get update</command> (ã‚„ã€ã»ã‹ã® APT フロントエンド"
+"ã®åŒç­‰ã®ã‚³ãƒžãƒ³ãƒ‰) ã§å–å¾—ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "sources.list.d"
+msgstr "sources.list.d"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The <filename>/etc/apt/sources.list.d</filename> directory provides a way to "
+"add sources.list entries in separate files. Two different file formats are "
+"allowed as described in the next two sections. Filenames need to have "
+"either the extension <filename>.list</filename> or <filename>.sources</"
+"filename> depending on the contained format. The filenames may only contain "
+"letters (a-z and A-Z), digits (0-9), underscore (_), hyphen (-) and period "
+"(.) characters. Otherwise APT will print a notice that it has ignored a "
+"file, unless that file matches a pattern in the <literal>Dir::Ignore-Files-"
+"Silently</literal> configuration list - in which case it will be silently "
+"ignored."
+msgstr ""
+"<filename>/etc/apt/sources.list.d</filename> ディレクトリã¯ã€åˆ¥ã€…ã®ãƒ•ã‚¡ã‚¤ãƒ«"
+"㧠source.list ã®ã‚¨ãƒ³ãƒˆãƒªã‚’追加ã™ã‚‹æ–¹æ³•ã‚’æä¾›ã—ã¾ã™ã€‚次ã®äºŒã¤ã®ç¯€ã§èª¬æ˜Žã™ã‚‹ã‚ˆ"
+"ã†ã«ã€äºŒã¤ã®ç•°ãªã‚‹ãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼ãŒè¨±å¯ã•ã‚Œã¦ã„ã¾ã™ã€‚ファイルåã¯ã€å«ã¾ã‚Œã¦ã„ã‚‹"
+"å½¢å¼ã«å¿œã˜ã¦ <filename>.list</filename> ã¾ãŸã¯ <filename>.sources</filename> "
+"ã®ã„ãšã‚Œã‹ã®æ‹¡å¼µå­ã‚’æŒã£ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ファイルåã¯ã€æ–‡å­— (a-z 㨠A-"
+"Z)ã€æ•°å­— (0-9)ã€ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢ (_)ã€ãƒã‚¤ãƒ•ãƒ³ (-)ã€ãƒ”リオド (.) ã®ã¿ã‚’å«ã‚€ã“ã¨"
+"ãŒã§ãã¾ã™ã€‚ãã†ã§ãªã‘ã‚Œã°ã€<literal>Dir::Ignore-Files-Silently</literal> 設"
+"定リストã®ãƒ‘ターンã«ä¸€è‡´ã™ã‚‹ã‚‚ã®ä»¥å¤–ã«å¯¾ã—ã¦ã€ãƒ•ã‚¡ã‚¤ãƒ«ã‚’無視ã™ã‚‹ã¨ã„ã†æ³¨æ„ã‚’ "
+"APT ãŒå‡ºåŠ›ã—ã¾ã™ã€‚一致ã™ã‚‹å ´åˆã¯é»™ã£ã¦ç„¡è¦–ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "One-Line-Style Format"
+msgstr "1 行スタイル形å¼"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Files in this format have the extension <filename>.list</filename>. Each "
+"line specifying a source starts with a type (e.g. <literal>deb-src</"
+"literal>) followed by options and arguments for this type. Individual "
+"entries cannot be continued onto a following line. Empty lines are ignored, "
+"and a <literal>#</literal> character anywhere on a line marks the remainder "
+"of that line as a comment. Consequently an entry can be disabled by "
+"commenting out the entire line. If options should be provided they are "
+"separated by spaces and all of them together are enclosed by square brackets "
+"(<literal>[]</literal>) included in the line after the type separated from "
+"it with a space. If an option allows multiple values these are separated "
+"from each other with a comma (<literal>,</literal>). An option name is "
+"separated from its value(s) by an equals sign (<literal>=</literal>). "
+"Multivalue options also have <literal>-=</literal> and <literal>+=</literal> "
+"as separators, which instead of replacing the default with the given "
+"value(s) modify the default value(s) to remove or include the given values."
+msgstr ""
+"ã“ã®å½¢å¼ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€<filename>.list</filename> æ‹¡å¼µå­ã‚’æŒã£ã¦ã„ã¾ã™ã€‚å–å¾—å…ƒ"
+"を指定ã™ã‚‹å„è¡Œã¯ã€ã“ã®åž‹ã®ã‚ªãƒ—ションã¨å¼•æ•°ãŒç¶šãåž‹ <literal>deb-src</"
+"literal> ã‹ã‚‰å§‹ã¾ã‚Šã¾ã™ã€‚個々ã®ã‚¨ãƒ³ãƒˆãƒªã¯ã€æ¬¡ã®è¡Œã«ç¶™ç¶šã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
+"空行ã¯ç„¡è¦–ã•ã‚Œã€è¡Œã®ä»»æ„ã®ä½ç½®ã® <literal>#</literal> 文字ã¯ã‚³ãƒ¡ãƒ³ãƒˆã¨ã—ã¦è¡Œ"
+"ã®æ®‹ã‚Šã®éƒ¨åˆ†ã‚’マークã—ã¾ã™ã€‚ã—ãŸãŒã£ã¦è¡Œå…¨ä½“をコメントアウトã™ã‚‹ã“ã¨ã«ã‚ˆã£"
+"ã¦ã€ã‚¨ãƒ³ãƒˆãƒªã‚’無効ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚オプションãŒæä¾›ã•ã‚Œã¦ã„ã‚‹å ´åˆã€ã‚¹"
+"ペースã§åŒºåˆ‡ã‚‰ã‚Œã€ã™ã¹ã¦è§’カッコ (<literal>[]</literal>) ã§å›²ã¾ã‚Œã¦ã„ã¦ã€è¡Œã®"
+"中ã§ã‚¹ãƒšãƒ¼ã‚¹ã§åŒºåˆ‡ã‚‰ã‚ŒãŸåž‹ã®å¾Œã‚ã«å«ã¾ã‚Œã¾ã™ã€‚複数ã®å€¤ãŒè¨±ã•ã‚Œã‚‹ã‚ªãƒ—ションã®"
+"å ´åˆã€ã‚«ãƒ³ãƒž (<literal>,</literal>) ã§åˆ†é›¢ã•ã‚Œã¦ã„ã¾ã™ã€‚オプションåã¯ã€ã‚¤"
+"ã‚³ãƒ¼ãƒ«è¨˜å· (<literal>=</literal>) ã§åˆ†é›¢ã•ã‚Œã¾ã™ã€‚複数値ã®ã‚ªãƒ—ションも "
+"<literal>-=</literal> ãŠã‚ˆã³ <literal>+=</literal> をセパレータã¨ã—ã¦æŒã¡ã€ãƒ‡"
+"フォルト値ã‹ã‚‰ä¸Žãˆã‚‰ã‚ŒãŸå€¤ã‚’削除ã™ã‚‹ã‹ã€ã¾ãŸã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã«ä¸Žãˆã‚‰ã‚ŒãŸå€¤ã‚’å«"
+"ã‚ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This is the traditional format and supported by all apt versions. Note that "
+"not all options as described below are supported by all apt versions. Note "
+"also that some older applications parsing this format on their own might not "
+"expect to encounter options as they were uncommon before the introduction of "
+"multi-architecture support."
+msgstr ""
+"ä¼çµ±çš„ãªå½¢å¼ã¨ã™ã¹ã¦ã® apt ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã™ã€‚下記ã®ã‚ˆã†ã«ã™"
+"ã¹ã¦ã®ã‚ªãƒ—ションãŒã™ã¹ã¦ã® apt ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã‚‹ã‚ã‘ã§ãªã„ã“ã¨"
+"ã«æ³¨æ„ã—ã¦ãã ã•ã„。ã„ãã¤ã‹ã®å¤ã„アプリケーションã¯ã€è‡ªåˆ†ã§ã“ã®å½¢å¼ã‚’パース"
+"ã™ã‚‹ã®ã§ã€ãƒžãƒ«ãƒã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã®ã‚µãƒãƒ¼ãƒˆã®å°Žå…¥å‰ã«ã¯çã—ã„オプションã«é­é‡ã™"
+"ã‚‹ã“ã¨ã‚’期待ã—ãªã„ã‹ã‚‚ã—ã‚Œãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "deb822-Style Format"
+msgstr "deb822 スタイル形å¼"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Files in this format have the extension <filename>.sources</filename>. The "
+"format is similar in syntax to other files used by Debian and its "
+"derivatives, such as the metadata files that apt will download from the "
+"configured sources or the <filename>debian/control</filename> file in a "
+"Debian source package. Individual entries are separated by an empty line; "
+"additional empty lines are ignored, and a <literal>#</literal> character at "
+"the start of the line marks the entire line as a comment. An entry can hence "
+"be disabled by commenting out each line belonging to the stanza, but it is "
+"usually easier to add the field \"Enabled: no\" to the stanza to disable the "
+"entry. Removing the field or setting it to yes reenables it. Options have "
+"the same syntax as every other field: A fieldname separated by a colon "
+"(<literal>:</literal>) and optionally spaces from its value(s). Note "
+"especially that multiple values are separated by spaces, not by commas as in "
+"the one-line format. Multivalue fields like <literal>Architectures</literal> "
+"also have <literal>Architectures-Add</literal> and <literal>Architectures-"
+"Remove</literal> to modify the default value rather than replacing it."
+msgstr ""
+"ã“ã®å½¢å¼ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€<filename>.sources</filename> æ‹¡å¼µå­ã‚’æŒã£ã¦ã„ã¾ã™ã€‚å½¢"
+"å¼ã¯ã€è¨­å®šã•ã‚ŒãŸå–å¾—å…ƒã¾ãŸã¯ Debian ソースパッケージ㮠debian/control ファイ"
+"ルã‹ã‚‰ apt ãŒãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã™ã‚‹ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ãƒ•ã‚¡ã‚¤ãƒ«ã®ã‚ˆã†ãªã€Debian ã¨ãã®æ´¾ç”Ÿã§"
+"使用ã•ã‚Œã‚‹ã»ã‹ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®æ§‹æ–‡ã¨ä¼¼ã¦ã„ã¾ã™ã€‚個々ã®ã‚¨ãƒ³ãƒˆãƒªã¯ç©ºè¡Œã§åˆ†é›¢ã•ã‚Œã¦"
+"ã„ã¾ã™: 追加ã®ç©ºè¡Œã¯ç„¡è¦–ã•ã‚Œã€è¡Œé ­ã® <literal>#</literal> 文字ã¯ã€ã‚³ãƒ¡ãƒ³ãƒˆã¨"
+"ã—ã¦è¡Œå…¨ä½“をマークã—ã¾ã™ã€‚エントリã¯ã€ã‚¹ã‚¿ãƒ³ã‚¶ã«å±žã™ã‚‹å„行をコメントアウトã—"
+"ã¦ç„¡åŠ¹ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ãŒã€é€šå¸¸ã¯ \"Enabled: no\" フィールドスタンザã«è¿½åŠ "
+"ã—ã¦ã‚¨ãƒ³ãƒˆãƒªã‚’無効ã«ã™ã‚‹æ–¹ãŒç°¡å˜ã§ã™ã€‚フィールドを削除ã™ã‚‹ã‹ã€ãã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰"
+"ã‚’ yes ã«è¨­å®šã™ã‚‹ã¨ã€å†ã³æœ‰åŠ¹ã«ã§ãã¾ã™ã€‚オプションã¯ã€ã»ã‹ã®ã™ã¹ã¦ã®ãƒ•ã‚£ãƒ¼ãƒ«"
+"ドã¨åŒã˜æ§‹æ–‡ã‚’æŒã£ã¦ã„ã¾ã™: フィールドåã¯ã‚³ãƒ­ãƒ³ (<literal>:</literal>) ã§åŒº"
+"切られã€å¿…è¦ã«å¿œã˜ã¦ãã®å€¤ã‹ã‚‰ç©ºç™½ã‚’空ã‘ã¾ã™ã€‚特ã«ã€1 行形å¼ã§ã¯ã€è¤‡æ•°ã®å€¤ã¯"
+"空白ã§åŒºåˆ‡ã‚‰ã‚Œã€ã‚³ãƒ³ãƒžã§ã¯ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。"
+"<literal>Architectures</literal> ã®ã‚ˆã†ãªè¤‡æ•°å€¤ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯ã€è¨­å®šã‚’ç½®ãæ›ãˆ"
+"ã‚‹ã®ã§ã¯ãªãã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã‚’変更ã™ã‚‹ <literal>Architectures-Add</literal> ãŠ"
+"よ㳠<literal>Architectures-Remove</literal> ã‚’æŒã£ã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This is a new format supported by apt itself since version 1.1. Previous "
+"versions ignore such files with a notice message as described earlier. It "
+"is intended to make this format gradually the default format, deprecating "
+"the previously described one-line-style format, as it is easier to create, "
+"extend and modify for humans and machines alike especially if a lot of "
+"sources and/or options are involved. Developers who are working with and/or "
+"parsing apt sources are highly encouraged to add support for this format and "
+"to contact the APT team to coordinate and share this work. Users can freely "
+"adopt this format already, but may encounter problems with software not "
+"supporting the format yet."
+msgstr ""
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.1 以é™ã® apt 自身ã«ã‚ˆã‚Šã‚µãƒãƒ¼ãƒˆã•ã‚Œã‚‹æ–°ã—ã„å½¢å¼ã§ã™ã€‚å‰è¿°ã®ã‚ˆã†"
+"ã«ä»¥å‰ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ã€é€šçŸ¥ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã§ãã®ã‚ˆã†ãªãƒ•ã‚¡ã‚¤ãƒ«ã‚’無視ã—ã¾ã™ã€‚多ã"
+"ã®ã‚½ãƒ¼ã‚¹ãŠã‚ˆã³/ã¾ãŸã¯ã‚ªãƒ—ションãŒé–¢ä¸Žã—ã¦ã„ã‚‹å ´åˆã¯ç‰¹ã«ã€äººé–“ã¨æ©Ÿæ¢°ã‚’å•ã‚ãšã€"
+"作æˆã€æ‹¡å¼µã€å¤‰æ›´ã‚’ç°¡å˜ã«ã™ã‚‹ãŸã‚ã«ã€å…ˆã«è¿°ã¹ãŸ 1 行スタイル形å¼ã‚’éžæŽ¨å¥¨ã«ã—ã€"
+"å¾ã€…ã«ã“ã®å½¢å¼ã‚’デフォルト形å¼ã«ã™ã‚‹ã“ã¨ãŒæ„図ã•ã‚Œã¦ã„ã¾ã™ã€‚apt ソースを作業"
+"ãŠã‚ˆã³/ã¾ãŸã¯ãƒ‘ースã—ã¦ã„る開発者ã¯ã€ã“ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã®ã‚µãƒãƒ¼ãƒˆã‚’追加ã™ã‚‹ã“ã¨"
+"ã¨ã€èª¿æ•´ã™ã‚‹ãŸã‚ã« APT ãƒãƒ¼ãƒ ã«é€£çµ¡ã™ã‚‹ã“ã¨ã€ã“ã®ä½œæ¥­ã‚’共有ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—"
+"ã¾ã™ã€‚ユーザã¯ã™ã§ã«è‡ªç”±ã«ã“ã®å½¢å¼ã‚’採用ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ãŒã€ã“ã®å½¢å¼ã‚’ã¾ã "
+"サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„ソフトウェアã§å•é¡ŒãŒç™ºç”Ÿã™ã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "The deb and deb-src Types: General Format"
+msgstr "deb ãŠã‚ˆã³ deb-src タイプ: 一般形å¼"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The <literal>deb</literal> type references a typical two-level Debian "
+"archive, <filename>distribution/component</filename>. The "
+"<literal>distribution</literal> is generally a suite name like "
+"<literal>stable</literal> or <literal>testing</literal> or a codename like "
+"<literal>&debian-stable-codename;</literal> or <literal>&debian-testing-"
+"codename;</literal> while component is one of <literal>main</literal>, "
+"<literal>contrib</literal> or <literal>non-free</literal>. The <literal>deb-"
+"src</literal> type references a Debian distribution's source code in the "
+"same form as the <literal>deb</literal> type. A <literal>deb-src</literal> "
+"line is required to fetch source indexes."
+msgstr ""
+"<literal>deb</literal> タイプã§ã¯å…¸åž‹çš„㪠2 段階㮠Debian アーカイブ "
+"<filename>distribution/component</filename> ã‚’å‚ç…§ã—ã¾ã™ã€‚"
+"<literal>distribution</literal> ã¯é€šå¸¸ <literal>stable</literal> ã‚„ "
+"<literal>testing</literal> ã¾ãŸã¯ <literal>&debian-stable-codename;</"
+"literal> ã‚„ <literal>&debian-testing-codename;</literal> ã®ã‚ˆã†ãªã‚³ãƒ¼ãƒ‰åã«ãª"
+"ã‚Šã¾ã™ã€‚component ã¯ã€<literal>main</literal>, <literal>contrib</literal>, "
+"<literal>non-free</literal> ã®ã©ã‚Œã‹ã§ã™ã€‚<literal>deb-src</literal> タイプã§"
+"ã¯ã€debian ディストリビューションã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’ã€<literal>deb</literal> ã‚¿"
+"イプã¨åŒã˜å½¢å¼ã§å‚ç…§ã—ã¾ã™ã€‚<literal>deb-src</literal> è¡Œã¯ã€ã‚½ãƒ¼ã‚¹ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯"
+"スをå–å¾—ã™ã‚‹ã®ã«å¿…è¦ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The format for two one-line-style entries using the <literal>deb</literal> "
+"and <literal>deb-src</literal> types is:"
+msgstr ""
+"<literal>deb</literal> ãŠã‚ˆã³ <literal>deb-src</literal> タイプã§ä½¿ç”¨ã™ã‚‹ 2 "
+"ã¤ã® 1 行スタイルã®ã‚¨ãƒ³ãƒˆãƒªã®å½¢å¼ã¯ã€ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã‚Šã¾ã™:"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]\n"
+"deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]"
+msgstr ""
+"deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]\n"
+"deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+" Types: deb deb-src\n"
+" URIs: uri\n"
+" Suites: suite\n"
+" Components: [component1] [component2] [...]\n"
+" option1: value1\n"
+" option2: value2\n"
+" "
+msgstr ""
+" Types: deb deb-src\n"
+" URIs: uri\n"
+" Suites: suite\n"
+" Components: [component1] [component2] [...]\n"
+" option1: value1\n"
+" option2: value2\n"
+" "
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Alternatively the equivalent entry in deb822 style looks like this: "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
+msgstr ""
+"ä»–ã« deb822 スタイルã§åŒç­‰ã®ã‚¨ãƒ³ãƒˆãƒªã‚‚サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™: <placeholder type="
+"\"literallayout\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The URI for the <literal>deb</literal> type must specify the base of the "
+"Debian distribution, from which APT will find the information it needs. "
+"<literal>suite</literal> can specify an exact path, in which case the "
+"components must be omitted and <literal>suite</literal> must end with a "
+"slash (<literal>/</literal>). This is useful for the case when only a "
+"particular sub-directory of the archive denoted by the URI is of interest. "
+"If <literal>suite</literal> does not specify an exact path, at least one "
+"<literal>component</literal> must be present."
+msgstr ""
+"<literal>deb</literal> タイプ㮠URI ã¯ã€APT ãŒå¿…è¦ãªæƒ…報を見ã¤ã‘られるよã†"
+"ã«ã€Debian ディストリビューションã®åŸºåº•ã‚’指定ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。<literal>"
+"スイート</literal>ã«ã¯æ­£ç¢ºãªãƒ‘スを指定ã§ãã¾ã™ã€‚ãã®å ´åˆã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’çœç•¥"
+"ã—ã€<literal>スイート</literal>ã¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ (<literal>/</literal>) ã§çµ‚ã‚らãª"
+"ãã¦ã¯ãªã‚Šã¾ã›ã‚“。ã“れ㯠URL ã§æŒ‡å®šã•ã‚ŒãŸã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã®ã€ç‰¹å®šã®ã‚µãƒ–ディレクトリ"
+"ã®ã¿ã«é–¢å¿ƒãŒã‚ã‚‹ã¨ãã«å½¹ã«ç«‹ã¡ã¾ã™ã€‚<literal>スイート</literal>ã«æ­£ç¢ºãªãƒ‘スを"
+"指定ã—ãªã„ã®ãªã‚‰ã€å°‘ãªãã¨ã‚‚一ã¤ã¯ <literal>コンãƒãƒ¼ãƒãƒ³ãƒˆ</literal> を指定ã—"
+"ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"<literal>suite</literal> may also contain a variable, <literal>$(ARCH)</"
+"literal> which expands to the Debian architecture (such as <literal>amd64</"
+"literal> or <literal>armel</literal>) used on the system. This permits "
+"architecture-independent <filename>sources.list</filename> files to be used. "
+"In general this is only of interest when specifying an exact path; "
+"<literal>APT</literal> will automatically generate a URI with the current "
+"architecture otherwise."
+msgstr ""
+"<literal>スイート</literal> ã¯ã€<literal>$(ARCH)</literal> 変数をå«ã‚€å ´åˆãŒã‚"
+"ã‚Šã¾ã™ã€‚<literal>$(ARCH)</literal> 変数ã¯ã€ã‚·ã‚¹ãƒ†ãƒ ã§ä½¿ç”¨ã—ã¦ã„ã‚‹ Debian アー"
+"キテクãƒãƒ£ (<literal>amd64</literal> ã‚„ <literal>armel</literal> ãªã©) ã«å±•é–‹"
+"ã•ã‚Œã¾ã™ã€‚ã“ã‚Œã«ã‚ˆã‚Šã€ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã«ä¾å­˜ã—ãªã„ <filename>sources.list</"
+"filename> ファイルを使用ã§ãã¾ã™ã€‚一般的ã«ã€ã“ã‚Œã¯æ­£ã—ã„パスを指定ã™ã‚‹ã¨ãã«"
+"æ°—ã«ã™ã‚‹ã ã‘ã§ã™ã€‚ãã†ã§ãªã„å ´åˆã¯ã€<literal>APT</literal> ã¯ç¾åœ¨ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯"
+"ãƒãƒ£ã§ URI を自動的ã«ç”Ÿæˆã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Especially in the one-line-style format since only one distribution can be "
+"specified per line it may be necessary to have multiple lines for the same "
+"URI, if a subset of all available distributions or components at that "
+"location is desired. APT will sort the URI list after it has generated a "
+"complete set internally, and will collapse multiple references to the same "
+"Internet host, for instance, into a single connection, so that it does not "
+"inefficiently establish a connection, close it, do something else, and then "
+"re-establish a connection to that same host. APT also parallelizes "
+"connections to different hosts to more effectively deal with sites with low "
+"bandwidth."
+msgstr ""
+"特㫠1 行スタイル形å¼ã§ã¯ 1 è¡Œã«ã¤ã 1 ã¤ã®ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューションã—ã‹æŒ‡å®šã§ã"
+"ãªã„ãŸã‚ã€åŒã˜ URI ã®è¡Œã‚’複数記述ã™ã‚‹ã“ã¨ã«ãªã‚‹ã§ã—ょã†ã€‚APT ã¯å†…部㧠URI リ"
+"ストを生æˆã—ã¦ã‹ã‚‰ã€ä¸¦ã¹æ›¿ãˆã¾ã™ã€‚ãã—ã¦ã€åŒã˜ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆãƒ›ã‚¹ãƒˆã«å¯¾ã—ã¦ã¯"
+"複数ã®å‚照をã¾ã¨ã‚ã¾ã™ã€‚例ãˆã° FTP 接続後ã€åˆ‡æ–­ã—ã¦ã‹ã‚‰ã¾ãŸåŒã˜ãƒ›ã‚¹ãƒˆã«å†æŽ¥ç¶š"
+"ã™ã‚‹ã¨ã„ã£ãŸåŠ¹çŽ‡ã®æ‚ªã„ã“ã¨ã‚’ã›ãšã«ã€1 接続ã«ã¾ã¨ã‚ã¾ã™ã€‚APT ã¯ã€å¸¯åŸŸã®ç‹­ã„サ"
+"イトを効率よã扱ã†ãŸã‚ç•°ãªã‚‹ãƒ›ã‚¹ãƒˆã¸ã¯æŽ¥ç¶šã‚’並行ã—ã¦è¡Œã†ã‚ˆã†ã«ã‚‚ã—ã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"It is important to list sources in order of preference, with the most "
+"preferred source listed first. Typically this will result in sorting by "
+"speed from fastest to slowest (CD-ROM followed by hosts on a local network, "
+"followed by distant Internet hosts, for example)."
+msgstr ""
+"最優先ã™ã‚‹å–得元を最åˆã«è¨˜è¿°ã™ã‚‹ã¨ã„ã†ã‚ˆã†ã«ã€å„ªå…ˆé †ã«å–得元を記述ã™ã‚‹ã®ã¯é‡"
+"è¦ã§ã™ã€‚一般的ã«ã¯ã€ã‚¹ãƒ”ードã®é€Ÿã„é †ã«ä¸¦ã¹ã‚‹ã“ã¨ã«ãªã‚‹ (例ãˆã°ã€CD-ROM ã«ç¶šã„"
+"ã¦ãƒ­ãƒ¼ã‚«ãƒ«ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã®ãƒ›ã‚¹ãƒˆã€ã•ã‚‰ã«ç¶šã„ã¦å½¼æ–¹ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆãƒ›ã‚¹ãƒˆ) ã§"
+"ã—ょã†ã€‚"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "&sourceslist-list-format;"
+msgstr "&sourceslist-list-format;"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "&sourceslist-sources-format;"
+msgstr "&sourceslist-sources-format;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"As an example, the sources for your distribution could look like this in one-"
+"line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or like "
+"this in deb822 style format: <placeholder type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+"例ã¨ã—ã¦ã€ã‚ãªãŸã®ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューション用ã®ã‚½ãƒ¼ã‚¹ã¯ã€1 行スタイル形å¼ã§æ¬¡ã®"
+"よã†ã«ãªã‚Šã¾ã™: <placeholder type=\"literallayout\" id=\"0\"/> ã¾ãŸã¯ deb822 "
+"スタイル形å¼ã§ã“ã®ã‚ˆã†ã«ãªã‚Šã¾ã™: <placeholder type=\"literallayout\" id="
+"\"1\"/>"
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "The deb and deb-src types: Options"
+msgstr "deb ãŠã‚ˆã³ deb-src タイプ: オプション"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Each source entry can have options specified to modify which source is "
+"accessed and how data is acquired from it. Format, syntax and names of the "
+"options vary between the one-line-style and deb822-style formats as "
+"described, but they both have the same options available. For simplicity we "
+"list the deb822 fieldname and provide the one-line name in brackets. "
+"Remember that besides setting multivalue options explicitly, there is also "
+"the option to modify them based on the default, but we aren't listing those "
+"names explicitly here. Unsupported options are silently ignored by all APT "
+"versions."
+msgstr ""
+"å„å–得元エントリã¯ã€ã‚¢ã‚¯ã‚»ã‚¹ã•ã‚Œã‚‹å–得元やå–å¾—ã•ã‚Œã‚‹ãƒ‡ãƒ¼ã‚¿ã‚’変更ã™ã‚‹ãŸã‚ã«æŒ‡"
+"定ã™ã‚‹ã‚ªãƒ—ションをæŒã¤ã“ã¨ãŒã§ãã¾ã™ã€‚オプションã®å½¢å¼ã€æ§‹æ–‡ã¨åå‰ã¯ã€è¨˜è¼‰ã•"
+"ã‚Œã¦ã„るよã†ã« 1 行スタイル㨠deb822 スタイルã®é–“ã§ç•°ãªã‚Šã¾ã™ãŒã€ã©ã¡ã‚‰ã‚‚åŒã˜"
+"オプションãŒç”¨æ„ã•ã‚Œã¦ã„ã¾ã™ã€‚ç°¡å˜ã«ã™ã‚‹ãŸã‚ã«ã€deb822 フィールドåを一覧表示"
+"ã—ã€ã‚«ãƒƒã‚³å†…ã« 1 è¡Œã®åå‰ã‚’æä¾›ã—ã¾ã™ã€‚明示的ã«è¤‡æ•°ã®å€¤ã‚’æŒã¤ã‚ªãƒ—ションを設定"
+"ã™ã‚‹ä»¥å¤–ã«ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‚’ベースã«å¤‰æ›´ã™ã‚‹ãŸã‚ã®ã‚ªãƒ—ションもã‚ã‚‹ã“ã¨ã‚’忘れãªã„"
+"ã§ãã ã•ã„。ã“ã“ã§ã¯æ˜Žç¤ºçš„ã«ãれらã®åå‰ã¯ãƒªã‚¹ãƒˆã—ã¦ã„ã¾ã›ã‚“。サãƒãƒ¼ãƒˆã•ã‚Œã¦"
+"ã„ãªã„オプションã¯ã€ã™ã¹ã¦ã® APT ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§é»™ã£ã¦ç„¡è¦–ã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Architectures</option> (<option>arch</option>) is a multivalue "
+"option defining for which architectures information should be downloaded. If "
+"this option isn't set the default is all architectures as defined by the "
+"<option>APT::Architectures</option> config option."
+msgstr ""
+"<option>Architectures</option> (<option>arch</option>) ã¯è¤‡æ•°ã®å€¤ã‚’æŒã¤ã‚ªãƒ—"
+"ションã§ã€ã©ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£æƒ…報をダウンロードã™ã‚‹ã‹æŒ‡å®šã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ—ショ"
+"ンを指定ã—ãªã„ã¨ã€<option>APT::Architectures</option> 設定オプションã«å®šç¾©ã—"
+"ã¦ã‚ã‚‹ã™ã¹ã¦ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã‚’ダウンロードã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Languages</option> (<option>lang</option>) is a multivalue option "
+"defining for which languages information such as translated package "
+"descriptions should be downloaded. If this option isn't set the default is "
+"all languages as defined by the <option>Acquire::Languages</option> config "
+"option."
+msgstr ""
+"<literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+"replaceable>,…</literal> ã«ã‚ˆã‚Šã€ã©ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£æƒ…報をダウンロードã™ã‚‹ã‹æŒ‡"
+"定ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ—ションを指定ã—ãªã„ã¨ã€<literal>APT::Architectures</"
+"literal> オプションã«å®šç¾©ã—ã¦ã‚る全アーキテクãƒãƒ£ã‚’ダウンロードã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Targets</option> (<option>target</option>) is a multivalue option "
+"defining which download targets apt will try to acquire from this source. If "
+"not specified, the default set is defined by the <option>Acquire::"
+"IndexTargets</option> configuration scope (targets are specified by their "
+"name in the <literal>Created-By</literal> field). Additionally, targets can "
+"be enabled or disabled by using the <literal>Identifier</literal> field as "
+"an option with a boolean value instead of using this multivalue option."
+msgstr ""
+"<option>Targets</option> (<option>target</option>) ã¯å€¤ã‚’複数å–るオプション"
+"ã§ã€apt ãŒãã®å–å¾—å…ƒã‹ã‚‰å–å¾—ã™ã‚‹ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰å¯¾è±¡ã‚’定義ã—ã¾ã™ã€‚指定ã—ãªã„å ´åˆ"
+"ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‚»ãƒƒãƒˆã¯è¨­å®šé …ç›® <option>Acquire::IndexTargets</option> ã§å®šç¾©ã•"
+"ã‚Œã¾ã™ (対象㯠<literal>Created-By</literal> ã®åå‰ã«ã‚ˆã‚ŠæŒ‡å®šã•ã‚Œã¾ã™)。ã¾"
+"ãŸã€è¤‡æ•°ã®å€¤ã‚’å–ã‚‹ã“ã®ã‚ªãƒ—ションã«ä»£ãˆã¦ã€çœŸå½å€¤ã‚’指定ã—㟠"
+"<literal>Identifier</literal> をオプションã¨ã—ã¦ä½¿ã†ã“ã¨ã§æœ‰åŠ¹åŒ–ã€ç„¡åŠ¹åŒ–ã§ã"
+"ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>PDiffs</option> (<option>pdiffs</option>) is a yes/no value which "
+"controls if APT should try to use PDiffs to update old indexes instead of "
+"downloading the new indexes entirely. The value of this option is ignored if "
+"the repository doesn't announce the availability of PDiffs. Defaults to the "
+"value of the option with the same name for a specific index file defined in "
+"the <option>Acquire::IndexTargets</option> scope, which itself defaults to "
+"the value of configuration option <option>Acquire::PDiffs</option> which "
+"defaults to <literal>yes</literal>."
+msgstr ""
+"<option>PDiffs</option> (<option>pdiffs</option>) ã¯ã€æ–°ã—ã„インデックスを完"
+"å…¨ã«ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã™ã‚‹ä»£ã‚ã‚Šã«ã€å¤ã„インデックスを更新ã™ã‚‹ãŸã‚ PDiffs を使用ã™"
+"ã‚‹ã‹ã©ã†ã‹ã‚’制御ã™ã‚‹ yes/no 値ã§ã™ã€‚レãƒã‚¸ãƒˆãƒªãŒ PDiffs ã®æ供を公開ã—ã¦ã„ãª"
+"ã„å ´åˆã¯ã€ã“ã®ã‚ªãƒ—ションã®å€¤ã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚<option>Acquire::IndexTargets</"
+"option> スコープ中ã«å®šç¾©ã•ã‚ŒãŸç‰¹å®šã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ç”¨ã®åŒã˜åå‰ã®ã‚ªãƒ—"
+"ション値ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã«ãªã‚Šã€è¨­å®šã‚ªãƒ—ション <option>Acquire::PDiffs</option> "
+"ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã¯ <literal>yes</literal> ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>By-Hash</option> (<option>by-hash</option>) can have the value "
+"<literal>yes</literal>, <literal>no</literal> or <literal>force</literal> "
+"and controls if APT should try to acquire indexes via a URI constructed from "
+"a hashsum of the expected file instead of using the well-known stable "
+"filename of the index. Using this can avoid hashsum mismatches, but requires "
+"a supporting mirror. A <literal>yes</literal> or <literal>no</literal> value "
+"activates/disables the use of this feature if this source indicates support "
+"for it, while <literal>force</literal> will enable the feature regardless of "
+"what the source indicates. Defaults to the value of the option of the same "
+"name for a specific index file defined in the <option>Acquire::IndexTargets</"
+"option> scope, which itself defaults to the value of configuration option "
+"<option>Acquire::By-Hash</option> which defaults to <literal>yes</literal>."
+msgstr ""
+"<option>By-Hash</option> (<option>by-hash</option>) ã¯ã€<literal>yes</"
+"literal>ã€<literal>no</literal> ã¾ãŸã¯ <literal>force</literal> ã®å€¤ã‚’æŒã¤ã“"
+"ã¨ãŒã§ãã¾ã™ã€‚ãã—ã¦ã€APT ãŒã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã®ã‚ˆã知られãŸå®‰å®šç‰ˆã®åå‰ã‚’使用ã™ã‚‹"
+"代ã‚ã‚Šã«ã€æœŸå¾…ã•ã‚Œã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã®ãƒãƒƒã‚·ãƒ¥å€¤ã‹ã‚‰æ§‹ç¯‰ã•ã‚ŒãŸ URI を経由ã—ã¦ã‚¤ãƒ³ãƒ‡ãƒƒ"
+"クスをå–å¾—ã™ã‚‹ã‹ã©ã†ã‹ã‚’制御ã—ã¾ã™ã€‚ã“れを使用ã™ã‚‹ã¨ã€ãƒãƒƒã‚·ãƒ¥å€¤ã®ä¸ä¸€è‡´ã‚’é¿"
+"ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ãŒã€ãƒŸãƒ©ãƒ¼ã®ã‚µãƒãƒ¼ãƒˆã‚’å¿…è¦ã¨ã—ã¾ã™ã€‚ã“ã®å–å¾—å…ƒãŒãã®ã‚µãƒãƒ¼"
+"トを示ã™å ´åˆã€<literal>yes</literal> ã¾ãŸã¯ <literal>no</literal> ã®å€¤ã¯ã€ã“"
+"ã®æ©Ÿèƒ½ã®ä½¿ç”¨ã‚’有効化/無効化ã—ã¾ã™ã€‚<literal>force</literal> ã¯å–å¾—å…ƒãŒç¤ºã™ã‚‚"
+"ã®ã«é–¢ä¿‚ãªãã€æ©Ÿèƒ½ã‚’有効ã«ã—ã¾ã™ã€‚<option>Acquire::IndexTargets</option> ス"
+"コープ中ã«å®šç¾©ã•ã‚ŒãŸç‰¹å®šã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ç”¨ã®åŒã˜åå‰ã®ã‚ªãƒ—ション値ãŒãƒ‡"
+"フォルトã«ãªã‚Šã€è¨­å®šã‚ªãƒ—ション <option>Acquire::By-Hash</option> ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆ"
+"値㯠<literal>yes</literal> ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Furthermore, there are options which if set affect <emphasis>all</emphasis> "
+"sources with the same URI and Suite, so they have to be set on all such "
+"entries and can not be varied between different components. APT will try to "
+"detect and error out on such anomalies."
+msgstr ""
+"ã•ã‚‰ã«ã€è¨­å®šãŒåŒã˜ URI ã¨ã‚¹ã‚¤ãƒ¼ãƒˆã®<emphasis>ã™ã¹ã¦</emphasis>ã®å–å¾—å…ƒã«å½±éŸ¿"
+"ã™ã‚‹å ´åˆã®ã‚ªãƒ—ションãŒã‚ã‚Šã€ã“ã®ã‚ˆã†ãªã™ã¹ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã«è¨­å®šã™ã‚‹å¿…è¦ãŒã‚ã‚Šã€"
+"ç•°ãªã‚‹è¦ç´ é–“ã§å¤‰åŒ–ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。APT ã¯ã“ã®ã‚ˆã†ãªç•°å¸¸ã‚’検出ã—ã¦ã‚¨ãƒ©ãƒ¼"
+"出力ã—よã†ã¨ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Allow-Insecure</option> (<option>allow-insecure</option>), "
+"<option>Allow-Weak</option> (<option>allow-weak</option>) and <option>Allow-"
+"Downgrade-To-Insecure</option> (<option>allow-downgrade-to-insecure</"
+"option>) are boolean values which all default to <literal>no</literal>. If "
+"set to <literal>yes</literal> they circumvent parts of &apt-secure; and "
+"should therefore not be used lightly!"
+msgstr ""
+"<option>Allow-Insecure</option> (<option>allow-insecure</option>), "
+"<option>Allow-Weak</option> (<option>allow-weak</option>), <option>Allow-"
+"Downgrade-To-Insecure</option> (<option>allow-downgrade-to-insecure</"
+"option>) ã¯çœŸå½å€¤ã§ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯ã©ã‚Œã‚‚ <literal>no</literal> ã¨ãªã£ã¦ã„ã¾ã™ã€‚"
+"<literal>yes</literal> をセットã™ã‚‹ã¨ &apt-secure; ã®éƒ¨åˆ†ã‚’迂回ã™ã‚‹ãŸã‚安易ã«"
+"有効化ã™ã¹ãã§ã¯ã‚ã‚Šã¾ã›ã‚“!"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Trusted</option> (<option>trusted</option>) is a tri-state value "
+"which defaults to APT deciding if a source is considered trusted or if "
+"warnings should be raised before e.g. packages are installed from this "
+"source. This option can be used to override that decision. The value "
+"<literal>yes</literal> tells APT always to consider this source as trusted, "
+"even if it doesn't pass authentication checks. It disables parts of &apt-"
+"secure;, and should therefore only be used in a local and trusted context "
+"(if at all) as otherwise security is breached. The value <literal>no</"
+"literal> does the opposite, causing the source to be handled as untrusted "
+"even if the authentication checks passed successfully. The default value "
+"can't be set explicitly."
+msgstr ""
+"<option>Trusted</option> (<option>trusted</option>) ã¯ã€APT ã®åˆ¤æ–­ã®ãƒ‡ãƒ•ã‚©ãƒ«"
+"トã®ãƒˆãƒ©ã‚¤ã‚¹ãƒ†ãƒ¼ãƒˆå€¤ã§ã€å–å¾—å…ƒãŒä¿¡é ¼ã§ãã‚‹ã€ä»¥å‰è­¦å‘ŠãŒç™ºç”Ÿã—㟠(例ãˆã°ã€ãƒ‘ッ"
+"ケージをã“ã®å–å¾—å…ƒã‹ã‚‰ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸã¨ãã«)ã€ä¿¡é ¼ã§ããªã„ã® 3 値ã§ã™ã€‚ã“ã®"
+"オプションã¯ã€APT ã®æ±ºå®šã‚’上書ãã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚値 "
+"<literal>yes</literal> ã¯ã€ãã‚ŒãŒèªè¨¼ãƒã‚§ãƒƒã‚¯ã«åˆæ ¼ã—ãªã„å ´åˆã§ã‚ã£ã¦ã‚‚ã€ã“ã®"
+"å–å¾—å…ƒãŒä¿¡é ¼ã§ãã‚‹ã¨è€ƒãˆã‚‰ã‚Œã‚‹ã“ã¨ã‚’常㫠APT ã«ä¼ãˆã¾ã™ã€‚&apt-secure; ã®ä¸€éƒ¨"
+"を無効ã«ã™ã‚‹ã®ã§ã€(ã™ã¹ã¦ã§ã‚ã‚Œã°) ローカルãŠã‚ˆã³ä¿¡é ¼ã•ã‚ŒãŸã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã§ã®ã¿"
+"使用ã™ã‚‹ã¹ãã§ã™ã€‚ãã†ã—ãªã‘ã‚Œã°ã€ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãŒç ´ã‚‰ã‚Œã¾ã™ã€‚値 <literal>no</"
+"literal> ã¯å対ã®ã“ã¨ã‚’è¡Œã„ã¾ã™ã€‚èªè¨¼ãƒã‚§ãƒƒã‚¯ã«åˆæ ¼ã—ãŸå ´åˆã§ã‚‚å–得元を信頼ã§"
+"ããªã„ã¨ã—ã¦æ‰±ã„ã¾ã™ã€‚デフォルト値ã¯æ˜Žç¤ºçš„ã«è¨­å®šã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Signed-By</option> (<option>signed-by</option>) is either an "
+"absolute path to a keyring file (has to be accessible and readable for the "
+"<literal>_apt</literal> user, so ensure everyone has read-permissions on the "
+"file) or one or more fingerprints of keys either in the <filename>trusted."
+"gpg</filename> keyring or in the keyrings in the <filename>trusted.gpg.d/</"
+"filename> directory (see <command>apt-key fingerprint</command>). If the "
+"option is set, only the key(s) in this keyring or only the keys with these "
+"fingerprints are used for the &apt-secure; verification of this repository. "
+"Defaults to the value of the option with the same name if set in the "
+"previously acquired <filename>Release</filename> file. Otherwise all keys "
+"in the trusted keyrings are considered valid signers for this repository."
+msgstr ""
+"<option>Signed-By</option> (<option>signed-by</option>) ã¯ã€(<literal>_apt</"
+"literal> ユーザãŒã‚¢ã‚¯ã‚»ã‚¹å¯èƒ½ã‹ã¤èª­ã¿å–ã‚Šå¯èƒ½ãªå¿…è¦ãŒã‚ã‚Šã€ã¤ã¾ã‚Šã™ã¹ã¦ã®ãƒ¦ãƒ¼"
+"ザãŒãƒ•ã‚¡ã‚¤ãƒ«ã®èª­ã¿å–り権é™ã‚’æŒã£ã¦ã„ã‚‹) キーリングファイルã¸ã®çµ¶å¯¾ãƒ‘スã€ã¾ãŸ"
+"㯠<filename>trusted.gpg</filename> キーリングや <filename>trusted.gpg.d/</"
+"filename> ディレクトリ中ã®ã‚­ãƒ¼ãƒªãƒ³ã‚°ã®ã©ã‚Œã‹ã«åŽéŒ²ã•ã‚Œã¦ã„るキーã®ãƒ•ã‚£ãƒ³ã‚¬ãƒ¼"
+"プリントã§ã™ (<command>apt-key fingerprint</command> ã‚’å‚ç…§)。オプションãŒè¨­"
+"定ã•ã‚Œã¦ã„ã‚‹å ´åˆã€ã‚­ãƒ¼ãƒªãƒ³ã‚°ä¸­ã®ã‚­ãƒ¼ã®ã¿ã¾ãŸã¯ã“ã®ãƒ•ã‚£ãƒ³ã‚¬ãƒ¼ãƒ—リントã®ã‚­ãƒ¼ã®"
+"ã¿ãŒã€ã“ã®ãƒªãƒã‚¸ãƒˆãƒªã® &apt-secure; 検証ã§ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚<filename>Release</"
+"filename> ファイルã§åŒåオプション㌠セットã•ã‚Œã¦ã„ã‚Œã°ãã®å€¤ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¨ãª"
+"ã‚Šã¾ã™ã€‚ãれ以外ã®å ´åˆã¯ã€ä¿¡é ¼ã§ãるキーリング内ã®ã™ã¹ã¦ã®ã‚­ãƒ¼ã¯ã€ã“ã®ãƒªãƒã‚¸"
+"トリã®æœ‰åŠ¹ãªç½²å者ã¨ã¿ãªã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Check-Valid-Until</option> (<option>check-valid-until</option>) is "
+"a yes/no value which controls if APT should try to detect replay attacks. A "
+"repository creator can declare a time until which the data provided in the "
+"repository should be considered valid, and if this time is reached, but no "
+"new data is provided, the data is considered expired and an error is "
+"raised. Besides increasing security, as a malicious attacker can't send old "
+"data forever to prevent a user from upgrading to a new version, this also "
+"helps users identify mirrors which are no longer updated. However, some "
+"repositories such as historic archives are not updated any more by design, "
+"so this check can be disabled by setting this option to <literal>no</"
+"literal>. Defaults to the value of configuration option <option>Acquire::"
+"Check-Valid-Until</option> which itself defaults to <literal>yes</literal>."
+msgstr ""
+"<option>Check-Valid-Until</option> (<option>check-valid-until</option>) ã¯ã€"
+"APT ãŒãƒªãƒ—レイ攻撃を検出ã™ã‚‹ã‹ã©ã†ã‹ã‚’制御ã™ã‚‹ yes/no 値ã§ã™ã€‚リãƒã‚¸ãƒˆãƒªã®ä½œ"
+"æˆè€…ã¯ã€ãƒªãƒã‚¸ãƒˆãƒªã«æä¾›ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãŒæœ‰åŠ¹ã¨ã¿ãªã•ã‚Œã‚‹æ™‚間を宣言ã™ã‚‹ã“ã¨ãŒã§"
+"ãã¾ã™ã€‚ãã—ã¦ã€ã“ã®æ™‚é–“ã«é”ã—ã¦ã„ã‚‹ãŒã€æ–°ã—ã„データãŒæä¾›ã•ã‚Œã¦ã„ãªã„å ´åˆã€"
+"データãŒæœŸé™åˆ‡ã‚Œã«ãªã£ãŸã¨ã¿ãªã•ã‚Œã€ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã™ã€‚セキュリティを高ã‚ã‚‹"
+"ã“ã¨ã«åŠ ãˆã¦ã€æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã‚¢ãƒƒãƒ—グレードã™ã‚‹ãƒ¦ãƒ¼ã‚¶ã‚’守るãŸã‚ã«ã€æ‚ªæ„ã®"
+"ã‚る攻撃者ãŒå¤ã„データを永é ã«é€ã‚Œãªã„よã†ã«ã™ã‚‹ã“ã¨ã§ã€é•·æœŸé–“æ›´æ–°ã•ã‚Œã¦ã„ãª"
+"ã„ミラーをユーザãŒç‰¹å®šã™ã‚‹ã®ã«å½¹ç«‹ã¡ã¾ã™ã€‚ã—ã‹ã—ãªãŒã‚‰ã€æ­´å²çš„アーカイブãª"
+"ã©ã€ã„ãã¤ã‹ã®ãƒªãƒã‚¸ãƒˆãƒªã¯ã€è¨­è¨ˆã«ã‚ˆã‚Šã“れ以上更新ã•ã‚Œãªã„ã®ã§ã€ã“ã®ã‚ªãƒ—ショ"
+"ンを <literal>no</literal> ã«è¨­å®šã™ã‚‹ã“ã¨ã§ã€ã“ã®ãƒã‚§ãƒƒã‚¯ã‚’無効ã«ã™ã‚‹ã“ã¨ãŒã§"
+"ãã¾ã™ã€‚設定オプション <option>Acquire::Check-Valid-Until</option> ã®å€¤ãŒãƒ‡"
+"フォルトã«ãªã‚Šã€ãã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯ <literal>yes</literal> ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Valid-Until-Min</option> (<option>valid-until-min</option>) and "
+"<option>Valid-Until-Max</option> (<option>valid-until-max</option>) can be "
+"used to raise or lower the time period in seconds in which the data from "
+"this repository is considered valid. -Max can be especially useful if the "
+"repository provides no Valid-Until field on its Release file to set your own "
+"value, while -Min can be used to increase the valid time on seldom updated "
+"(local) mirrors of a more frequently updated but less accessible archive "
+"(which is in the sources.list as well) instead of disabling the check "
+"entirely. Default to the value of the configuration options "
+"<option>Acquire::Min-ValidTime</option> and <option>Acquire::Max-ValidTime</"
+"option> which are both unset by default."
+msgstr ""
+"<option>Valid-Until-Min</option> (<option>valid-until-min</option>) ãŠã‚ˆã³ "
+"<option>Valid-Until-Max</option> (<option>valid-until-max</option>) ã¯ã€ã“ã®"
+"リãƒã‚¸ãƒˆãƒªã‹ã‚‰ã®ãƒ‡ãƒ¼ã‚¿ã®æœ‰åŠ¹æœŸé–“ (秒å˜ä½) を上ã’ãŸã‚Šä¸‹ã’ãŸã‚Šã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™"
+"ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚リãƒã‚¸ãƒˆãƒªãŒç‹¬è‡ªã®å€¤ã‚’設定ã™ã‚‹ãƒªãƒªãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã« Valid-"
+"Until フィールドãŒãªã„ã‚‚ã®ã‚’æä¾›ã™ã‚‹å ´åˆã€-Max ã¯ç‰¹ã«æœ‰ç”¨ã§ã™ã€‚-Min ã¯å®Œå…¨ã«"
+"ãƒã‚§ãƒƒã‚¯ã‚’無効ã«ã™ã‚‹ä»£ã‚ã‚Šã« (sources.list åŒæ§˜ã«ã‚ã‚‹) より頻ç¹ã«æ›´æ–°ãŒã‚るミ"
+"ラーã®ã€ã‚ã¾ã‚Šã‚¢ã‚¯ã‚»ã‚¹ã•ã‚Œãªã„アーカイブã®æœ‰åŠ¹æœŸé–“を増やã™ã“ã¨ãŒã§ãã¾ã™ã€‚設"
+"定オプション <option>Acquire::Min-ValidTime</option> ãŠã‚ˆã³ <option>Acquire::"
+"Max-ValidTime</option> ã®å€¤ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã«ãªã‚Šã€ãã®ä¸¡æ–¹ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã¯ "
+"unset ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "URI Specification"
+msgstr "URI ã®ä»•æ§˜"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "The currently recognized URI types are:"
+msgstr "ç¾åœ¨èªè­˜ã§ãã‚‹ URI タイプã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šã§ã™:"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The file scheme allows an arbitrary directory in the file system to be "
+"considered an archive. This is useful for NFS mounts and local mirrors or "
+"archives."
+msgstr ""
+"file スキームã¯ã€ã‚·ã‚¹ãƒ†ãƒ å†…ã®ä»»æ„ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’ã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã¨ã—ã¦æ‰±ãˆã‚‹ã‚ˆã†"
+"ã«ã—ã¾ã™ã€‚ã“れ㯠NFS マウントやローカルミラーã§ä¾¿åˆ©ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The cdrom scheme allows APT to use a local CD-ROM drive with media swapping. "
+"Use the &apt-cdrom; program to create cdrom entries in the source list."
+msgstr ""
+"cdrom スキームã¯ã€APT ãŒãƒ­ãƒ¼ã‚«ãƒ« CD-ROM ドライブをã€ãƒ¡ãƒ‡ã‚£ã‚¢äº¤æ›ã—ãªãŒã‚‰ä½¿ãˆ"
+"るよã†ã«ã—ã¾ã™ã€‚å–得元リスト㫠cdrom エントリを追加ã™ã‚‹ã«ã¯ã€&apt-cdrom; プロ"
+"グラムを使用ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The http scheme specifies an HTTP server for the archive. If an environment "
+"variable <envar>http_proxy</envar> is set with the format http://server:"
+"port/, the proxy server specified in <envar>http_proxy</envar> will be used. "
+"Users of authenticated HTTP/1.1 proxies may use a string of the format "
+"http://user:pass@server:port/. Note that this is an insecure method of "
+"authentication."
+msgstr ""
+"http スキームã¯ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã¨ã—ã¦ã€HTTP サーãƒã‚’指定ã—ã¾ã™ã€‚環境変数 "
+"<envar>http_proxy</envar> ãŒã€http://server:port/ ã¨è¨€ã£ãŸå½¢ã§æŒ‡å®šã•ã‚Œã¦ã„ã‚Œ"
+"ã°ã€<envar>http_proxy</envar> ã§æŒ‡å®šã—ãŸãƒ—ロキシサーãƒã‚’使用ã—ã¾ã™ã€‚ユーザèª"
+"証ãŒå¿…è¦ãª HTTP/1.1 プロキシã®å ´åˆã€http://user:pass@server:port/ ã¨ã„ã†å½¢ã§"
+"指定ã—ã¦ãã ã•ã„。ã“ã®èªè¨¼æ–¹æ³•ã¯å®‰å…¨ã§ã¯ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The ftp scheme specifies an FTP server for the archive. APT's FTP behavior "
+"is highly configurable; for more information see the &apt-conf; manual page. "
+"Please note that an FTP proxy can be specified by using the "
+"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
+"HTTP proxy (HTTP proxy servers often understand FTP URLs) using this "
+"environment variable and <emphasis>only</emphasis> this environment "
+"variable. Proxies using HTTP specified in the configuration file will be "
+"ignored."
+msgstr ""
+"ftp スキームã¯ã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã« FTP サーãƒã‚’指定ã—ã¾ã™ã€‚APT ã® FTP ã®æŒ¯ã‚‹èˆžã„"
+"ã¯ã€é«˜åº¦ã«è¨­å®šã§ãã¾ã™ã€‚詳細ã¯ã€&apt-conf; ã®ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãƒšãƒ¼ã‚¸ã‚’ã”覧ãã ã•ã„。"
+"FTP プロキシã¯ã€<envar>ftp_proxy</envar> 環境変数ã§æŒ‡å®šã™ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã "
+"ã•ã„。ã“ã®ç’°å¢ƒå¤‰æ•°ã€ã•ã‚‰ã«ã“ã®<emphasis>環境変数ã®ã¿</emphasis>を使用ã—ã¦ã€"
+"HTTP プロキシを使用ã§ãã¾ã™ (HTTP プロキシサーãƒã¯å¤§æŠµ FTP URL ã‚‚ç†è§£ã§ãã¾"
+"ã™)。設定ファイル㧠HTTP を利用ã™ã‚‹ãƒ—ロキシãŒæŒ‡å®šã—ã¦ã‚ã£ã¦ã‚‚ã€ç„¡è¦–ã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The copy scheme is identical to the file scheme except that packages are "
+"copied into the cache directory instead of used directly at their location. "
+"This is useful for people using removable media to copy files around with "
+"APT."
+msgstr ""
+"copy スキームã¯ã€file スキームã¨åŒæ§˜ã§ã™ãŒã€ãƒ‘ッケージをãã®å ´ã§ä½¿ç”¨ã›ãšã€"
+"キャッシュディレクトリã«ã‚³ãƒ”ーã™ã‚‹ã¨ã“ã‚ãŒé•ã„ã¾ã™ã€‚リムーãƒãƒ–ルメディアを使"
+"用ã—ã¦ã„ã¦ã€APT ã§ã‚³ãƒ”ーを行ã†å ´åˆã«ä¾¿åˆ©ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
+"the files as a given user. Prior configuration of rhosts or RSA keys is "
+"recommended. The standard <command>find</command> and <command>dd</command> "
+"commands are used to perform the file transfers from the remote host."
+msgstr ""
+"rsh/ssh メソッドã¯ã€ä¸Žãˆã‚‰ã‚ŒãŸãƒ¦ãƒ¼ã‚¶ã§ãƒªãƒ¢ãƒ¼ãƒˆãƒ›ã‚¹ãƒˆã«æŽ¥ç¶šã—ã€ãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¢ã‚¯"
+"セスã™ã‚‹ã®ã« rsh/ssh を使用ã—ã¾ã™ã€‚ã‚らã‹ã˜ã‚ rhosts ã‚„ RSA キーã®è¨­å®šã‚’ã—ã¦"
+"ãŠãã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚リモートホストã‹ã‚‰ã®ãƒ•ã‚¡ã‚¤ãƒ«è»¢é€ã«ã€æ¨™æº–ã® "
+"<command>find</command> コマンド㨠<command>dd</command> コマンドを使用ã—ã¾"
+"ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
+#: sources.list.5.xml
+msgid "adding more recognizable URI types"
+msgstr "ã•ã‚‰ã«èªè­˜ã§ãã‚‹ URI タイプã®è¿½åŠ "
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"APT can be extended with more methods shipped in other optional packages, "
+"which should follow the naming scheme <package>apt-transport-"
+"<replaceable>method</replaceable></package>. For instance, the APT team "
+"also maintains the package <package>apt-transport-https</package>, which "
+"provides access methods for HTTPS URIs with features similar to the http "
+"method. Methods for using e.g. debtorrent are also available - see &apt-"
+"transport-debtorrent;."
+msgstr ""
+"APT ã¯ä»–ã®è¿½åŠ ãƒ‘ッケージ (<package>apt-transport-<replaceable>method</"
+"replaceable></package> ã¨ã„ã†å‘½åè¦å‰‡) ã«ã‚ˆã‚Šã€ã‚ˆã‚Šå¤šãã®æ–¹æ³•ã‚’使ãˆã‚‹ã‚ˆã†æ‹¡å¼µ"
+"ã§ãã¾ã™ã€‚例ãˆã°ã€APT ãƒãƒ¼ãƒ ã¯ã€http メソッドã¨ä¼¼ãŸæ©Ÿèƒ½ã§ HTTPS URI ã§ã®ã‚¢ã‚¯"
+"セス方法をæä¾›ã™ã‚‹ <package>apt-transport-https</package> パッケージもä¿å®ˆã—"
+"ã¦ã„ã¾ã™ã€‚使用ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã«ã¯ã€ä¾‹ãˆã° debtorrent も利用ã§ãã¾ã™ã€‚&apt-"
+"transport-debtorrent; ã‚’å‚ç…§ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses the archive stored locally (or NFS mounted) at /home/apt/debian for "
+"stable/main, stable/contrib, and stable/non-free."
+msgstr ""
+"/home/apt/debian ã«æ ¼ç´ã•ã‚Œã¦ã„ã‚‹ stable/main, stable/contrib, stable/non-"
+"free 用ã®ãƒ­ãƒ¼ã‚«ãƒ« (ã¾ãŸã¯ NFS) アーカイブを使用ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb file:/home/apt/debian stable main contrib non-free"
+msgstr "deb file:/home/apt/debian stable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: stable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: stable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "As above, except this uses the unstable (development) distribution."
+msgstr "上記ã¨åŒæ§˜ã§ã™ãŒã€ä¸å®‰å®šç‰ˆ (開発版) を使用ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb file:/home/apt/debian unstable main contrib non-free"
+msgstr "deb file:/home/apt/debian unstable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "Sources specification for the above."
+msgstr "上記ã®ã‚½ãƒ¼ã‚¹ã®æŒ‡å®šã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb-src file:/home/apt/debian unstable main contrib non-free"
+msgstr "deb-src file:/home/apt/debian unstable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb-src\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb-src\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The first line gets package information for the architectures in "
+"<literal>APT::Architectures</literal> while the second always retrieves "
+"<literal>amd64</literal> and <literal>armel</literal>."
+msgstr ""
+"1 行目㯠<literal>APT::Architectures</literal> ã«ã‚るアーキテクãƒãƒ£ã®ãƒ‘ッケー"
+"ジ情報をå–å¾—ã—ã€2 行目ã¯å¸¸ã« <literal>amd64</literal> アーキテクãƒãƒ£ã¨ "
+"<literal>armel</literal> アーキテクãƒãƒ£ã®ãƒ‘ッケージ情報をå–å¾—ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main"
+msgstr ""
+"deb http://deb.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"\n"
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"Architectures: amd64 armel\n"
+msgstr ""
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"\n"
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"Architectures: amd64 armel\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to access the archive at archive.debian.org, and uses only the "
+"hamm/main area."
+msgstr ""
+"archive.debian.org ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã« HTTP アクセスã—ã€hamm/main ã®ã¿ã‚’使用ã—ã¾"
+"ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb http://archive.debian.org/debian-archive hamm main"
+msgstr "deb http://archive.debian.org/debian-archive hamm main"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://archive.debian.org/debian-archive\n"
+"Suites: hamm\n"
+"Components: main"
+msgstr ""
+"Types: deb\n"
+"URIs: http://archive.debian.org/debian-archive\n"
+"Suites: hamm\n"
+"Components: main"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the &debian-stable-codename;/contrib area."
+msgstr ""
+"ftp.debian.org ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã« FTP アクセスã—ã€debian ディレクトリ以下㮠"
+"&debian-stable-codename;/contrib ã®ã¿ã‚’使用ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: contrib"
+msgstr ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: contrib"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the unstable/contrib area. If this line appears as "
+"well as the one in the previous example in <filename>sources.list</filename> "
+"a single FTP session will be used for both resource lines."
+msgstr ""
+"ftp.debian.org ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã« FTP アクセスã—ã€debian ディレクトリ以下㮠"
+"unstable/contrib ã®ã¿ã‚’使用ã—ã¾ã™ã€‚<filename>sources.list</filename> ã«ä¸Šè¨˜ã‚µ"
+"ンプルã¨ä¸€ç·’ã«æŒ‡å®šã•ã‚ŒãŸå ´åˆã€ä¸¡æ–¹ã®ãƒªã‚½ãƒ¼ã‚¹è¡Œã«å¯¾å¿œã™ã‚‹ FTP セッションã¯ã²ã¨"
+"ã¤ã ã‘ã«ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian unstable contrib"
+msgstr "deb ftp://ftp.debian.org/debian unstable contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: unstable\n"
+"Components: contrib"
+msgstr ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: unstable\n"
+"Components: contrib"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+msgstr "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://ftp.tlh.debian.org/universe\n"
+"Suites: unstable/binary-$(ARCH)/"
+msgstr ""
+"Types: deb\n"
+"URIs: http://ftp.tlh.debian.org/universe\n"
+"Suites: unstable/binary-$(ARCH)/"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe "
+"directory, and uses only files found under <filename>unstable/binary-i386</"
+"filename> on i386 machines, <filename>unstable/binary-amd64</filename> on "
+"amd64, and so forth for other supported architectures. [Note this example "
+"only illustrates how to use the substitution variable; official debian "
+"archives are not structured like this] <placeholder type=\"literallayout\" "
+"id=\"0\"/> <placeholder type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+"ftp.tlh.debian.org ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã« HTTP アクセスã—ã€universe ディレクトリ以下"
+"を使用ã—ã¾ã™ã€‚ã¾ãŸã€i386 マシンã§ã¯ <filename>unstable/binary-i386</"
+"filename> 以下ã«ã‚るファイルã€amd64 マシンã§ã¯ <filename>unstable/binary-"
+"amd64</filename> 以下ã«ã‚るファイルã€ãã®ä»–サãƒãƒ¼ãƒˆã™ã‚‹ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã”ã¨ã®"
+"ファイルã®ã¿ä½¿ç”¨ã—ã¾ã™ã€‚[ã“ã®ã‚µãƒ³ãƒ—ルã¯å¤‰æ•°å±•é–‹ã®ä½¿ç”¨æ³•ã®èª¬æ˜Žã§ã—ã‹ãªã„ã“ã¨ã«"
+"注æ„ã—ã¦ãã ã•ã„ã€‚å…¬å¼ debian アーカイブã¯ã“ã®ã‚ˆã†ãªæ§‹é€ ã«ãªã£ã¦ã„ã¾ã›ã‚“] "
+"<placeholder type=\"literallayout\" id=\"0\"/> <placeholder type="
+"\"literallayout\" id=\"1\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to get binary packages as well as sources from the stable, testing "
+"and unstable suites and the components main and contrib."
+msgstr ""
+"安定版ã€ãƒ†ã‚¹ãƒˆç‰ˆã€ä¸å®‰å®šç‰ˆã‚¹ã‚¤ãƒ¼ãƒˆã‹ã‚‰ãƒã‚¤ãƒŠãƒªãƒ‘ッケージやソースã€ãŠã‚ˆã³main "
+"㨠contrib コンãƒãƒ¼ãƒãƒ³ãƒˆã‚’入手ã™ã‚‹ãŸã‚ HTTP を使用ã—ã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian stable main contrib\n"
+"deb-src http://deb.debian.org/debian stable main contrib\n"
+"deb http://deb.debian.org/debian testing main contrib\n"
+"deb-src http://deb.debian.org/debian testing main contrib\n"
+"deb http://deb.debian.org/debian unstable main contrib\n"
+"deb-src http://deb.debian.org/debian unstable main contrib"
+msgstr ""
+"deb http://deb.debian.org/debian stable main contrib\n"
+"deb-src http://deb.debian.org/debian stable main contrib\n"
+"deb http://deb.debian.org/debian testing main contrib\n"
+"deb-src http://deb.debian.org/debian testing main contrib\n"
+"deb http://deb.debian.org/debian unstable main contrib\n"
+"deb-src http://deb.debian.org/debian unstable main contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb deb-src\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: stable testing unstable\n"
+"Components: main contrib\n"
+msgstr ""
+"Types: deb deb-src\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: stable testing unstable\n"
+"Components: main contrib\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "&apt-get;, &apt-conf;, &apt-acquire-additional-files;"
+msgstr "&apt-get;, &apt-conf;, &apt-acquire-additional-files;"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt-extracttemplates.1.xml apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "1"
+msgstr "1"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-extracttemplates.1.xml
+msgid ""
+"Utility to extract <command>debconf</command> config and templates from "
+"Debian packages"
+msgstr ""
+"Debian パッケージã‹ã‚‰ <command>debconf</command> ã®è¨­å®šã¨ãƒ†ãƒ³ãƒ—レートを抽出ã™"
+"るユーティリティ"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"<command>apt-extracttemplates</command> will take one or more Debian package "
+"files as input and write out (to a temporary directory) all associated "
+"config scripts and template files. For each passed in package that contains "
+"config scripts and templates, one line of output will be generated in the "
+"format:"
+msgstr ""
+"<command>apt-extracttemplates</command> ã¯ã€å…¥åŠ›ã«è¤‡æ•°ã® Debian パッケージを"
+"ã¨ã‚Šã€é–¢é€£ã™ã‚‹è¨­å®šã‚¹ã‚¯ãƒªãƒ—トã¨ãƒ†ãƒ³ãƒ—レートファイルを (一時ディレクトリã«) 出"
+"力ã—ã¾ã™ã€‚設定スクリプト・テンプレートファイルをæŒã¤ã€æ¸¡ã•ã‚ŒãŸãƒ‘ッケージãã‚Œ"
+"ãžã‚Œã«å¯¾ã—ã€ä»¥ä¸‹ã®å½¢å¼ã§ 1 è¡Œãšã¤å‡ºåŠ›ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid "package version template-file config-script"
+msgstr "package version template-file config-script"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"template-file and config-script are written to the temporary directory "
+"specified by the <option>-t</option> or <option>--tempdir</option> "
+"(<literal>APT::ExtractTemplates::TempDir</literal>) directory, with "
+"filenames of the form <filename>package.template.XXXXXX</filename> and "
+"<filename>package.config.XXXXXX</filename>"
+msgstr ""
+"テンプレートファイルやã€è¨­å®šã‚¹ã‚¯ãƒªãƒ—トã¯ã€<option>-t</option> ã‚„ <option>--"
+"tempdir</option> ã§æŒ‡å®šã—ãŸä¸€æ™‚ディレクトリ (<literal>APT::ExtractTemplates::"
+"TempDir</literal>) ã«æ›¸ã出ã•ã‚Œã€ãƒ•ã‚¡ã‚¤ãƒ«åã¯ã€<filename>package.template."
+"XXXXXX</filename> ã‚„ <filename>package.config.XXXXXX</filename> ã¨ã„ã£ãŸå½¢ã«"
+"ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"Temporary directory in which to write extracted <command>debconf</command> "
+"template files and config scripts. Configuration Item: <literal>APT::"
+"ExtractTemplates::TempDir</literal>"
+msgstr ""
+"抽出ã—㟠<command>debconf</command> テンプレートファイルや設定スクリプトを書"
+"ã出ã™ä¸€æ™‚ディレクトリ。設定項目: <literal>APT::ExtractTemplates::TempDir</"
+"literal>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"<command>apt-extracttemplates</command> returns zero on normal operation, "
+"decimal 100 on error."
+msgstr ""
+"<command>apt-extracttemplates</command> ã¯æ­£å¸¸çµ‚了時㫠0 ã‚’è¿”ã—ã¾ã™ã€‚エラー時"
+"ã«ã¯å進㮠100 ã‚’è¿”ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-sortpkgs.1.xml
+msgid "Utility to sort package index files"
+msgstr "パッケージインデックスファイルã®ã‚½ãƒ¼ãƒˆãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"<command>apt-sortpkgs</command> will take an index file (source index or "
+"package index) and sort the records so that they are ordered by the package "
+"name. It will also sort the internal fields of each record according to the "
+"internal sorting rules."
+msgstr ""
+"<command>apt-sortpkgs</command> ã¯ã€ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãƒ•ã‚¡ã‚¤ãƒ« (ソースインデックス"
+"やパッケージインデックス) ã‹ã‚‰ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’ソートã—ã€ãƒ‘ッケージåé †ã«æ•´ãˆã¾ã™ã€‚"
+"ã¾ãŸã€å†…部ã®ã‚½ãƒ¼ãƒˆè¦å‰‡ã«å¾“ã£ã¦ã€å†…部フィールドã«ã¤ã„ã¦ã‚‚ソートを行ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"All output is sent to standard output; the input must be a seekable file."
+msgstr ""
+"出力ã¯ã™ã¹ã¦æ¨™æº–出力ã«é€ã‚‰ã‚Œã€å…¥åŠ›ã¯æ¤œç´¢ã§ãるファイルã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"Use source index field ordering. Configuration Item: <literal>APT::"
+"SortPkgs::Source</literal>."
+msgstr ""
+"ソースインデックスフィールド順ã«ä¸¦ã¹æ›¿ãˆã«ä½¿ç”¨ã—ã¾ã™ã€‚設定項目: "
+"<literal>APT::SortPkgs::Source</literal>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"<command>apt-sortpkgs</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+"<command>apt-sortpkgs</command> ã¯æ­£å¸¸çµ‚了時㫠0 ã‚’è¿”ã—ã¾ã™ã€‚エラー時ã«ã¯å進"
+"ã® 100 ã‚’è¿”ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-ftparchive.1.xml
+msgid "Utility to generate index files"
+msgstr "インデックスファイル生æˆãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> is the command line tool that generates "
+"the index files that APT uses to access a distribution source. The index "
+"files should be generated on the origin site based on the content of that "
+"site."
+msgstr ""
+"<command>apt-ftparchive</command> ã¯ã€APT ãŒå–å¾—å…ƒã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã®ã«å¿…è¦ãªã€"
+"インデックスファイルを生æˆã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ãƒ„ールã§ã™ã€‚インデックスファイル"
+"ã¯ã€å…ƒã®ã‚µã‚¤ãƒˆã®å†…容ã«åŸºã¥ã生æˆã•ã‚Œã‚‹ã¹ãã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> is a superset of the &dpkg-scanpackages; "
+"program, incorporating its entire functionality via the <literal>packages</"
+"literal> command. It also contains a contents file generator, "
+"<literal>contents</literal>, and an elaborate means to 'script' the "
+"generation process for a complete archive."
+msgstr ""
+"<command>apt-ftparchive</command> ã¯ã€&dpkg-scanpackages; プログラムã®ã‚¹ãƒ¼"
+"パーセットã§ã€<literal>packages</literal> コマンド経由ã§æ©Ÿèƒ½å…¨ä½“ã‚’å–り込んã§"
+"ã„ã¾ã™ã€‚ã¾ãŸã€contents ファイルジェãƒãƒ¬ãƒ¼ã‚¿ <literal>contents</literal> ã¨å®Œ"
+"å…¨ãªã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã®ç”Ÿæˆãƒ—ロセス「スクリプトã€ã§ã‚る綿密ãªæ‰‹æ®µã‚’å«ã‚“ã§ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Internally <command>apt-ftparchive</command> can make use of binary "
+"databases to cache the contents of a .deb file and it does not rely on any "
+"external programs aside from &gzip;. When doing a full generate it "
+"automatically performs file-change checks and builds the desired compressed "
+"output files."
+msgstr ""
+"本質的㫠<command>apt-ftparchive</command> ã¯ã€.deb ファイルã®å†…容をキャッ"
+"シュã™ã‚‹ã®ã«ãƒã‚¤ãƒŠãƒªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’使用ã§ãã¾ã™ã€‚ã¾ãŸã€&gzip; 以外ã®ã„ã‹ãªã‚‹å¤–"
+"部プログラムã«ã‚‚ä¾å­˜ã—ã¾ã›ã‚“。ã™ã¹ã¦ç”Ÿæˆã™ã‚‹éš›ã«ã¯ã€ãƒ•ã‚¡ã‚¤ãƒ«å¤‰æ›´ç‚¹ã®æ¤œå‡ºã¨å¸Œ"
+"望ã—ãŸåœ§ç¸®å‡ºåŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã®ä½œæˆã‚’自動的ã«å®Ÿè¡Œã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The packages command generates a package file from a directory tree. It "
+"takes the given directory and recursively searches it for .deb files, "
+"emitting a package record to stdout for each. This command is approximately "
+"equivalent to &dpkg-scanpackages;."
+msgstr ""
+"packages コマンドã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ„リーã‹ã‚‰ãƒ‘ッケージファイルを生æˆã—ã¾ã™ã€‚与"
+"ãˆã‚‰ã‚ŒãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‹ã‚‰å†å¸°æ¤œç´¢ã—ã€.deb ファイルをå–å¾—ã—ã¾ã™ã€‚ã¾ãŸãƒ‘ッケージ"
+"レコードを標準出力ã«ãã‚Œãžã‚Œå‡ºåŠ›ã—ã¾ã™ã€‚ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã¯ã€&dpkg-scanpackages; "
+"ã¨ã»ã¼åŒã˜ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The option <option>--db</option> can be used to specify a binary caching DB."
+msgstr "<option>--db</option> オプションã§ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥ DB を指定ã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>sources</literal> command generates a source index file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .dsc files, emitting a source record to stdout for each. This command is "
+"approximately equivalent to &dpkg-scansources;."
+msgstr ""
+"<literal>sources</literal> コマンドã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ„リーã‹ã‚‰ã‚½ãƒ¼ã‚¹ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯"
+"スファイルを生æˆã—ã¾ã™ã€‚与ãˆã‚‰ã‚ŒãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‹ã‚‰å†å¸°æ¤œç´¢ã—ã€.dsc ファイルを"
+"å–å¾—ã—ã¾ã™ã€‚ã¾ãŸã‚½ãƒ¼ã‚¹ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’標準出力ã«ãã‚Œãžã‚Œå‡ºåŠ›ã—ã¾ã™ã€‚ã“ã®ã‚³ãƒžãƒ³ãƒ‰"
+"ã¯ã€&dpkg-scansources; ã¨ã»ã¼åŒã˜ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"If an override file is specified then a source override file will be looked "
+"for with an extension of .src. The --source-override option can be used to "
+"change the source override file that will be used."
+msgstr ""
+"override ファイルを指定ã—ãŸå ´åˆã€src æ‹¡å¼µå­ãŒã¤ã„ãŸã‚½ãƒ¼ã‚¹ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ•ã‚¡ã‚¤"
+"ルを探ã—ã¾ã™ã€‚使用ã™ã‚‹ã‚½ãƒ¼ã‚¹ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚’変更ã™ã‚‹ã®ã«ã¯ã€--source-"
+"override オプションを使用ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>contents</literal> command generates a contents file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .deb files, and reads the file list from each file. It then sorts and "
+"writes to stdout the list of files matched to packages. Directories are not "
+"written to the output. If multiple packages own the same file then each "
+"package is separated by a comma in the output."
+msgstr ""
+"<literal>contents</literal> コマンドã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ„リーã‹ã‚‰ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ファ"
+"イルを生æˆã—ã¾ã™ã€‚与ãˆã‚‰ã‚ŒãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‹ã‚‰å†å¸°æ¤œç´¢ã—ã€.deb ファイルをå–å¾—ã—"
+"ã¾ã™ã€‚ã¾ãŸãƒ•ã‚¡ã‚¤ãƒ«ã”ã¨ã«ãƒ•ã‚¡ã‚¤ãƒ«ä¸€è¦§ã‚’読ã¿å–ã‚Šã¾ã™ã€‚ãã®å¾Œã€ãƒ‘ッケージã«å¯¾å¿œ"
+"ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ä¸€è¦§ã‚’標準出力ã«ã‚½ãƒ¼ãƒˆã—ã¦å‡ºåŠ›ã—ã¾ã™ã€‚ディレクトリã¯å‡ºåŠ›ã«å«ã¾ã‚Œ"
+"ã¾ã›ã‚“。複数ã®ãƒ‘ッケージãŒåŒã˜ãƒ•ã‚¡ã‚¤ãƒ«ã‚’æŒã¤å ´åˆã€ãƒ‘ッケージåをカンマ区切り"
+"ã§å‡ºåŠ›ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>release</literal> command generates a Release file from a "
+"directory tree. It recursively searches the given directory for uncompressed "
+"and compressed <filename>Packages</filename>, <filename>Sources</filename>, "
+"<filename>Contents</filename>, <filename>Components</filename> and "
+"<filename>icons</filename> files as well as <filename>Release</filename>, "
+"<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
+"default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>). "
+"Additional filename patterns can be added by listing them in <literal>APT::"
+"FTPArchive::Release::Patterns</literal>. It then writes to stdout a "
+"<filename>Release</filename> file containing (by default) an MD5, SHA1, "
+"SHA256 and SHA512 digest for each file."
+msgstr ""
+"<literal>release</literal> コマンドã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ„リーã‹ã‚‰ Release ファイ"
+"ルを生æˆã—ã¾ã™ã€‚与ãˆãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’å†å¸°çš„ã«æ¤œç´¢ã—ã€æœªåœ§ç¸®ã® "
+"<filename>Packages</filename>, <filename>Sources</filename>, "
+"<filename>Contents</filename>, <filename>Components</filename>, "
+"<filename>icons</filename> å„ファイルã€ãれ㫠<filename>Release</filename>, "
+"<filename>Index</filename>, <filename>md5sum.txt</filename> ファイルをデフォ"
+"ルト (<literal>APT::FTPArchive::Release::Default-Patterns</literal>) ã§æŽ¢ã—ã¾"
+"ã™ã€‚ã¾ãŸ <literal>APT::FTPArchive::Release::Patterns</literal> ã«åˆ—挙ã—ã¦ã€ã•"
+"らã«ãƒ•ã‚¡ã‚¤ãƒ«åã®ãƒ‘ターンを追加ã§ãã¾ã™ã€‚ãã®å¾Œã€(デフォルトã§) MD5, SHA1, "
+"SHA256 㨠SHA512 ã®å„ダイジェストをファイルã”ã¨ã«æ ¼ç´ã—㟠<filename>Release</"
+"filename> ファイルを標準出力ã«æ›¸ã出ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Values for the additional metadata fields in the Release file are taken from "
+"the corresponding variables under <literal>APT::FTPArchive::Release</"
+"literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The "
+"supported fields are <literal>Origin</literal>, <literal>Label</literal>, "
+"<literal>Suite</literal>, <literal>Version</literal>, <literal>Codename</"
+"literal>, <literal>Date</literal>, <literal>NotAutomatic</literal>, "
+"<literal>ButAutomaticUpgrades</literal>, <literal>Acquire-By-Hash</literal>, "
+"<literal>Valid-Until</literal>, <literal>Signed-By</literal>, "
+"<literal>Architectures</literal>, <literal>Components</literal> and "
+"<literal>Description</literal>."
+msgstr ""
+"Release ファイルã®è¿½åŠ ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®å€¤ã¯ã€<literal>APT::FTPArchive::"
+"Release</literal> 以下ã®ç›¸å½“ã™ã‚‹å€¤ (例: <literal>APT::FTPArchive::Release::"
+"Origin</literal>) ã‚’ã¨ã‚Šã¾ã™ã€‚サãƒãƒ¼ãƒˆã™ã‚‹ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯ã€<literal>Origin</"
+"literal>, <literal>Label</literal>, <literal>Suite</literal>, "
+"<literal>Version</literal>, <literal>Codename</literal>, <literal>Date</"
+"literal>, <literal>NotAutomatic</literal>, <literal>ButAutomaticUpgrades</"
+"literal>, <literal>Acquire-By-Hash</literal>, <literal>Valid-Until</"
+"literal>, <literal>Signed-By</literal>, <literal>Architectures</literal>, "
+"<literal>Components</literal>, <literal>Description</literal> ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>generate</literal> command is designed to be runnable from a "
+"cron script and builds indexes according to the given config file. The "
+"config language provides a flexible means of specifying which index files "
+"are built from which directories, as well as providing a simple means of "
+"maintaining the required settings."
+msgstr ""
+"<literal>generate</literal> コマンドã¯ã€cron スクリプトã‹ã‚‰å®Ÿè¡Œã§ãるよã†è¨­è¨ˆ"
+"ã•ã‚Œã¦ãŠã‚Šã€ä¸Žãˆã‚‰ã‚ŒãŸè¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã«å¾“ã£ã¦ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’生æˆã—ã¾ã™ã€‚設定言語"
+"ã¯ã€å¿…è¦ãªè¨­å®šã‚’維æŒã™ã‚‹ç°¡å˜ãªæ–¹æ³•ã‚’æä¾›ã™ã‚‹ã¨å…±ã«ã€ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ã©"
+"ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‹ã‚‰ä½œæˆã™ã‚‹ã‹ã‚’指定ã™ã‚‹ã€æŸ”軟ãªæ–¹æ³•ã‚’æä¾›ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>clean</literal> command tidies the databases used by the given "
+"configuration file by removing any records that are no longer necessary."
+msgstr ""
+"<literal>clean</literal> コマンドã¯ã€è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã§ä¸Žãˆã‚‰ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’ã€"
+"ã‚‚ã†å¿…è¦ãªã„レコードを削除ã—ã¦æ•´ç†ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Generate Configuration"
+msgstr "Generate 設定"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>generate</literal> command uses a configuration file to "
+"describe the archives that are going to be generated. It follows the typical "
+"ISC configuration format as seen in ISC tools like bind 8 and dhcpd. &apt-"
+"conf; contains a description of the syntax. Note that the generate "
+"configuration is parsed in sectional manner, but &apt-conf; is parsed in a "
+"tree manner. This only effects how the scope tag is handled."
+msgstr ""
+"<literal>generate</literal> コマンドã¯ã€ç”Ÿæˆã™ã‚‹ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã«é–¢ã™ã‚‹è¨˜è¿°ã‚’ã—ãŸ"
+"設定ファイルを使用ã—ã¾ã™ã€‚設定ファイルã¯ã€bind 8 ã‚„ dhcpd ã¨ã„ã£ãŸ ISC ツール"
+"ã«è¦‹ã‚‰ã‚Œã‚‹ã‚ˆã†ãªã€ISC 設定フォーマットã«å¾“ã„ã¾ã™ã€‚&apt-conf; ã«ã€æ§‹æ–‡ã®èª¬æ˜ŽãŒ"
+"ã‚ã‚Šã¾ã™ã€‚Generate 設定ã¯ã‚»ã‚¯ã‚·ãƒ§ãƒ³æ³•ã§è§£æžã—ã¾ã™ãŒã€&apt-conf; ã¯ãƒ„リー法ã§"
+"解æžã™ã‚‹ã®ã«æ³¨æ„ã—ã¦ãã ã•ã„。ã“ã‚Œã¯ã‚¹ã‚³ãƒ¼ãƒ—ã‚¿ã‚°ã®æ‰±ã„æ–¹ã«é•ã„ãŒã‚ã‚‹ã ã‘ã§"
+"ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The generate configuration has four separate sections, each described below."
+msgstr ""
+"generate 設定ã«ã¯ 4 個ã®ç‹¬ç«‹ã—ãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ãŒã‚ã‚Šã¾ã™ã€‚以下ãã‚Œãžã‚Œèª¬æ˜Žã—ã¾"
+"ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Dir</literal> Section"
+msgstr "<literal>Dir</literal> セクション"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Dir</literal> section defines the standard directories needed "
+"to locate the files required during the generation process. These "
+"directories are prepended certain relative paths defined in later sections "
+"to produce a complete an absolute path."
+msgstr ""
+"<literal>Dir</literal> セクションã¯ã€ç”Ÿæˆãƒ—ロセスã§å¿…è¦ãªãƒ•ã‚¡ã‚¤ãƒ«ã‚’é…ç½®ã™ã‚‹ãŸ"
+"ã‚ã«å¿…è¦ãªã€æ¨™æº–ディレクトリを定義ã—ã¾ã™ã€‚ã“ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¯ã€å®Œå…¨ãªçµ¶å¯¾ãƒ‘ス"
+"を生æˆã™ã‚‹ãŸã‚ã€å¾Œã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§å®šç¾©ã•ã‚Œã‚‹ç›¸å¯¾ãƒ‘スã®å‰ã«çµåˆã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the root of the FTP archive, in a standard Debian configuration "
+"this is the directory that contains the <filename>ls-LR</filename> and dist "
+"nodes."
+msgstr ""
+"FTP アーカイブã®ãƒ«ãƒ¼ãƒˆã‚’指定ã—ã¾ã™ã€‚標準的㪠Debian 設定ã§ã¯ã€ã“ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆ"
+"リã«ã¯ <filename>ls-LR</filename> 㨠dist ノードãŒã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the location of the override files."
+msgstr "オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã®å ´æ‰€ã‚’指定ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the location of the cache files."
+msgstr "キャッシュファイルã®å ´æ‰€ã‚’指定ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the location of the file list files, if the <literal>FileList</"
+"literal> setting is used below."
+msgstr ""
+"<literal>FileList</literal> 設定ãŒä»¥ä¸‹ã§ä½¿ç”¨ã•ã‚Œã¦ã„ã‚‹å ´åˆã€ãƒ•ã‚¡ã‚¤ãƒ«ãƒªã‚¹ãƒˆ"
+"ファイルã®å ´æ‰€ã‚’指定ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Default</literal> Section"
+msgstr "<literal>Default</literal> セクション"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Default</literal> section specifies default values, and "
+"settings that control the operation of the generator. Other sections may "
+"override these defaults with a per-section setting."
+msgstr ""
+"<literal>Default</literal> セクションã§ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã‚’指定ã—ã¾ã™ã€‚ã¾ãŸã€ç”Ÿæˆ"
+"器ã®å‹•ä½œã‚’制御ã™ã‚‹è¨­å®šã‚‚è¡Œã„ã¾ã™ã€‚ä»–ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€ã“ã“ã«ã‚るデフォルト値"
+"ã‚’ã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã”ã¨ã®è¨­å®šã§ä¸Šæ›¸ãã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default compression schemes to use for the package index files. It "
+"is a string that contains a space separated list of at least one of the "
+"compressors configured via the <option>APT::Compressor</option> "
+"configuration scope. The default for all compression schemes is '. gzip'."
+msgstr ""
+"パッケージインデックスファイルã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆåœ§ç¸®æ–¹æ³•ã‚’設定ã—ã¾ã™ã€‚設定項目 "
+"<option>APT::Compressor</option> ã«ã‚ˆã£ã¦è¨­å®šã—ãŸåœ§ç¸®å½¢å¼ã®æœ€ä½Ž1ã¤ãŒå…¥ã‚‹ã€ç©º"
+"白区切りã®æ–‡å­—列ã§ã™ã€‚圧縮方法ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯ã™ã¹ã¦ '. gzip' ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default list of file extensions that are package files. This "
+"defaults to '.deb'."
+msgstr ""
+"パッケージファイル拡張å­ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã‚’列挙ã—ã¾ã™ã€‚ã“ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã¯ '."
+"deb' ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Sources files."
+msgstr ""
+"<literal>Packages::Compress</literal> ã¨åŒæ§˜ã«ã€Sources ファイルã®åœ§ç¸®æ–¹æ³•ã‚’"
+"指定ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default list of file extensions that are source files. This "
+"defaults to '.dsc'."
+msgstr ""
+"ソースファイル拡張å­ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã‚’列挙ã—ã¾ã™ã€‚ã“ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã¯ '.dsc' ã§"
+"ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Contents files."
+msgstr ""
+"<literal>Packages::Compress</literal> ã¨åŒæ§˜ã«ã€Contents ファイルã®åœ§ç¸®æ–¹æ³•ã‚’"
+"指定ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Translation-en master file."
+msgstr ""
+"<literal>Packages::Compress</literal> ã¨åŒæ§˜ã«ã€Translation-en マスターファイ"
+"ルã®åœ§ç¸®ã‚’制御ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the number of kilobytes to delink (and replace with hard links) "
+"per run. This is used in conjunction with the per-section <literal>External-"
+"Links</literal> setting."
+msgstr ""
+"実行ã™ã‚‹ã”ã¨ã« delink (åŠã³ãƒãƒ¼ãƒ‰ãƒªãƒ³ã‚¯ã®ç½®ãæ›ãˆ) ã™ã‚‹é‡ã‚’ã€ã‚­ãƒ­ãƒã‚¤ãƒˆå˜ä½ã§"
+"指定ã—ã¾ã™ã€‚セクションã”ã¨ã® <literal>External-Links</literal> 設定ã¨åˆã‚ã›ã¦"
+"使ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the mode of all created index files. It defaults to 0644. All "
+"index files are set to this mode with no regard to the umask."
+msgstr ""
+"作æˆã—ãŸã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã®ãƒ¢ãƒ¼ãƒ‰ã‚’指定ã—ã¾ã™ã€‚デフォルト㯠0644 ã§ã™ã€‚å…¨"
+"インデックスファイルã¯ã€umask を無視ã—ã¦ã“ã®ãƒ¢ãƒ¼ãƒ‰ã‚’使用ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies whether long descriptions should be included in the "
+"<filename>Packages</filename> file or split out into a master "
+"<filename>Translation-en</filename> file."
+msgstr ""
+"é•·ã„説明文を <filename>Packages</filename> ファイルã«å«ã‚ã‚‹ã‹ã€ãƒžã‚¹ã‚¿ãƒ¼ "
+"<filename>Translation-en</filename> ファイルã«åˆ†å‰²ã™ã‚‹ã‹ã‚’指定ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>TreeDefault</literal> Section"
+msgstr "<literal>TreeDefault</literal> セクション"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets defaults specific to <literal>Tree</literal> sections. All of these "
+"variables are substitution variables and have the strings $(DIST), "
+"$(SECTION) and $(ARCH) replaced with their respective values."
+msgstr ""
+"特定㮠<literal>Tree</literal> セクションã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‚’設定ã—ã¾ã™ã€‚ã“れらã®å¤‰"
+"æ•°ã¯ã™ã¹ã¦ç½®æ›å¤‰æ•°ã§ã‚ã‚Šã€æ–‡å­—列 $(DIST), $(SECTION), $(ARCH) ã‚’ãã‚Œãžã‚Œã®å€¤"
+"ã«å±•é–‹ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the number of kilobytes of contents files that are generated each day. "
+"The contents files are round-robined so that over several days they will all "
+"be rebuilt."
+msgstr ""
+"日毎ã«ç”Ÿæˆã™ã‚‹ contents ファイルをキロãƒã‚¤ãƒˆå˜ä½ã§è¨­å®šã—ã¾ã™ã€‚contents ファイ"
+"ルをラウンドロビンã—ã€æ•°æ—¥çµŒã¤ã¨ã™ã¹ã¦å†ç”Ÿæˆã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Controls the number of days a contents file is allowed to be checked without "
+"changing. If this limit is passed the mtime of the contents file is updated. "
+"This case can occur if the package file is changed in such a way that does "
+"not result in a new contents file [override edit for instance]. A hold off "
+"is allowed in hopes that new .debs will be installed, requiring a new file "
+"anyhow. The default is 10, the units are in days."
+msgstr ""
+"変更ãŒãªã„ contents ファイルをãƒã‚§ãƒƒã‚¯ã™ã‚‹æ—¥æ•°ã‚’指定ã—ã¾ã™ã€‚ã“ã®åˆ¶é™ã‚’越ãˆãŸ "
+"contents ファイル㮠mtime ã‚’ã€æ›´æ–°ã—ã¾ã™ã€‚パッケージファイルãŒå¤‰æ›´ã•ã‚Œã¦ã‚‚ã€"
+"[例ãˆã°ä¸Šæ›¸ã編集ã§] contents ファイルãŒæ›´æ–°ã•ã‚Œãªã„よã†ãªå ´åˆã€ã“ã†ã„ã£ãŸã“"
+"ã¨ãŒç™ºç”Ÿã—ã¾ã™ã€‚æ–°ã—ã„ .deb ファイルをインストールã—ãŸã„å ´åˆã€ä¿ç•™ã‚’解除ã§"
+"ãã€å°‘ãªãã¨ã‚‚æ–°ã—ã„ファイルãŒå¿…è¦ã§ã™ã€‚デフォルト㯠10 ã§ã€å˜ä½ã¯æ—¥ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/"
+"$(SECTION)/binary-$(ARCH)/</filename>"
+msgstr ""
+".deb ディレクトリツリーã®å…ˆé ­ã‚’設定ã—ã¾ã™ã€‚デフォルト㯠<filename>$(DIST)/"
+"$(SECTION)/binary-$(ARCH)/</filename> ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the top of the source package directory tree. Defaults to <filename>"
+"$(DIST)/$(SECTION)/source/</filename>"
+msgstr ""
+"ソースパッケージディレクトリツリーã®å…ˆé ­ã‚’設定ã—ã¾ã™ã€‚デフォルト㯠<filename>"
+"$(DIST)/$(SECTION)/source/</filename> ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Packages file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"binary-$(ARCH)/Packages</filename>"
+msgstr ""
+"Packages ファイルã®å‡ºåŠ›å…ˆã‚’設定ã—ã¾ã™ã€‚デフォルト㯠<filename>$(DIST)/"
+"$(SECTION)/binary-$(ARCH)/Packages</filename> ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Sources file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"source/Sources</filename>"
+msgstr ""
+"Sources ファイルã®å‡ºåŠ›å…ˆã‚’設定ã—ã¾ã™ã€‚デフォルト㯠<filename>$(DIST)/"
+"$(SECTION)/source/Sources</filename> ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Translation-en master file with the long descriptions if "
+"they should be not included in the Packages file. Defaults to <filename>"
+"$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+msgstr ""
+"万一 Packages ファイルã«å«ã¾ã‚Œã¦ã„ãªã„å ´åˆã€é•·ã„説明文ãŒã‚ã‚‹ Translation-en "
+"マスターファイルã®å‡ºåŠ›å…ˆã‚’設定ã—ã¾ã™ã€‚デフォルトã¯ã€<filename>$(DIST)/"
+"$(SECTION)/i18n/Translation-en</filename> ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the path prefix that causes a symlink to be considered an internal link "
+"instead of an external link. Defaults to <filename>$(DIST)/$(SECTION)/</"
+"filename>"
+msgstr ""
+"外部リンクã§ã¯ãªãã€å†…部リンクã¨è¦‹ãªã™åˆ¤æ–­ææ–™ã¨ãªã‚‹ã€ãƒ‘スã®ãƒ—レフィックスを"
+"設定ã—ã¾ã™ã€‚デフォルトã¯ã€<filename>$(DIST)/$(SECTION)/</filename> ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Contents file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"Contents-$(ARCH)</filename>. If this setting causes multiple Packages files "
+"to map onto a single Contents file (as is the default) then <command>apt-"
+"ftparchive</command> will integrate those package files together "
+"automatically."
+msgstr ""
+"Contents ファイルã®å‡ºåŠ›å…ˆã‚’設定ã—ã¾ã™ã€‚デフォルトã¯ã€<filename>$(DIST)/"
+"$(SECTION)/Contents-$(ARCH)</filename> ã§ã™ã€‚複数㮠Packages ファイルをã²ã¨ã¤"
+"ã® Contents ファイルã«ã¾ã¨ã‚られる設定 (デフォルト) ã®å ´åˆã€<command>apt-"
+"ftparchive</command> ã¯è‡ªå‹•ã§ãƒ‘ッケージファイルをã¾ã¨ã‚ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets header file to prepend to the contents output."
+msgstr "contents ã®å‡ºåŠ›ã«ä»˜ã‘るヘッダファイルを設定ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the binary cache database to use for this section. Multiple sections "
+"can share the same database."
+msgstr ""
+"ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ä½¿ç”¨ã™ã‚‹ãƒã‚¤ãƒŠãƒªã‚­ãƒ£ãƒƒã‚·ãƒ¥ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’設定ã—ã¾ã™ã€‚複数ã®ã‚»"
+"クションã§åŒã˜ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’共有ã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies that instead of walking the directory tree, <command>apt-"
+"ftparchive</command> should read the list of files from the given file. "
+"Relative files names are prefixed with the archive directory."
+msgstr ""
+"ディレクトリツリーを走査ã™ã‚‹ä»£ã‚ã‚Šã«ã€<command>apt-ftparchive</command> ãŒèª­"
+"ã¿è¾¼ã‚€ãƒ•ã‚¡ã‚¤ãƒ«ä¸€è¦§ãƒ•ã‚¡ã‚¤ãƒ«ã‚’指定ã—ã¾ã™ã€‚相対ファイルåã¯ã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ディレク"
+"トリãŒå…ˆé ­ã«ã¤ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies that instead of walking the directory tree, <command>apt-"
+"ftparchive</command> should read the list of files from the given file. "
+"Relative files names are prefixed with the archive directory. This is used "
+"when processing source indexes."
+msgstr ""
+"ディレクトリツリーを走査ã™ã‚‹ä»£ã‚ã‚Šã«ã€<command>apt-ftparchive</command> ãŒèª­"
+"ã¿è¾¼ã‚€ãƒ•ã‚¡ã‚¤ãƒ«ä¸€è¦§ãƒ•ã‚¡ã‚¤ãƒ«ã‚’指定ã—ã¾ã™ã€‚相対ファイルåã¯ã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ディレク"
+"トリãŒå…ˆé ­ã«ã¤ãã¾ã™ã€‚ソースインデックスを処ç†ã™ã‚‹éš›ã«ä½¿ç”¨ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Tree</literal> Section"
+msgstr "<literal>Tree</literal> セクション"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Tree</literal> section defines a standard Debian file tree "
+"which consists of a base directory, then multiple sections in that base "
+"directory and finally multiple Architectures in each section. The exact "
+"pathing used is defined by the <literal>Directory</literal> substitution "
+"variable."
+msgstr ""
+"<literal>Tree</literal> セクションã§ã¯ã€ãƒ™ãƒ¼ã‚¹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‹ã‚‰ã®æ¨™æº– Debian "
+"ファイルツリーã€ãƒ™ãƒ¼ã‚¹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®è¤‡æ•°ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã€æœ€çµ‚çš„ã«ã¯ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã”"
+"ã¨ã®è¤‡æ•°ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã‚’定義ã—ã¾ã™ã€‚使用ã™ã‚‹æ­£ç¢ºãªãƒ‘スã¯ã€"
+"<literal>Directory</literal> 変数ã§å®šç¾©ã•ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Tree</literal> section takes a scope tag which sets the "
+"<literal>$(DIST)</literal> variable and defines the root of the tree (the "
+"path is prefixed by <literal>ArchiveDir</literal>). Typically this is a "
+"setting such as <filename>dists/&debian-stable-codename;</filename>."
+msgstr ""
+"<literal>Tree</literal> セクションã¯ã€<literal>$(DIST)</literal> 変数ã§è¨­å®šã•"
+"ã‚Œã¦ã„るスコープタグをã¨ã‚Šã€ãƒ„リーã®ãƒ«ãƒ¼ãƒˆ (<literal>ArchiveDir</literal>ãŒå…ˆ"
+"é ­ã«ã¤ãパス) を定義ã—ã¾ã™ã€‚通常ã€ã“ã®è¨­å®šã¯ <filename>dists/&debian-stable-"
+"codename;</filename> ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"All of the settings defined in the <literal>TreeDefault</literal> section "
+"can be used in a <literal>Tree</literal> section as well as three new "
+"variables."
+msgstr ""
+"<literal>TreeDefault</literal> セクションã§å®šç¾©ã•ã‚Œã‚‹è¨­å®šã¯ã™ã¹ã¦ã€3 個ã®æ–°ã—"
+"ã„変数ã¨åŒæ§˜ã«ã€<literal>Tree</literal> セクションã§ä½¿ç”¨ã§ãã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid ""
+"for i in Sections do \n"
+" for j in Architectures do\n"
+" Generate for DIST=scope SECTION=i ARCH=j\n"
+" "
+msgstr ""
+"for i in Sections do \n"
+" for j in Architectures do\n"
+" Generate for DIST=scope SECTION=i ARCH=j\n"
+" "
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"When processing a <literal>Tree</literal> section <command>apt-ftparchive</"
+"command> performs an operation similar to: <placeholder type=\"programlisting"
+"\" id=\"0\"/>"
+msgstr ""
+"<literal>Tree</literal> セクションを処ç†ã™ã‚‹éš›ã€<command>apt-ftparchive</"
+"command> ã¯ä»¥ä¸‹ã®ã‚ˆã†ãªæ“作を行ã„ã¾ã™ã€‚<placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is a space separated list of sections which appear under the "
+"distribution; typically this is something like <literal>main contrib non-"
+"free</literal>"
+msgstr ""
+"distribution 以下ã«ç¾ã‚Œã‚‹ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’ã€ç©ºç™½åŒºåˆ‡ã‚Šã§æŒ‡å®šã—ãŸãƒªã‚¹ãƒˆã§ã™ã€‚通常ã€"
+"<literal>main contrib non-free</literal> ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is a space separated list of all the architectures that appear under "
+"search section. The special architecture 'source' is used to indicate that "
+"this tree has a source archive. The architecture 'all' signals that "
+"architecture specific files like <filename>Packages</filename> should not "
+"include information about architecture <literal>all</literal> packages in "
+"all files as they will be available in a dedicated file."
+msgstr ""
+"検索部ã®ä¸‹ã«è¡¨ç¤ºã•ã‚Œã‚‹ã™ã¹ã¦ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã®ç©ºç™½åŒºåˆ‡ã‚Šãƒªã‚¹ãƒˆã§ã™ã€‚特別ãª"
+"アーキテクãƒãƒ£ã€Œsourceã€ã¯ã€ã“ã®ãƒ„リーãŒã‚½ãƒ¼ã‚¹ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã‚’æŒã£ã¦ã„ã‚‹ã“ã¨ã‚’示"
+"ã™ãŸã‚ã«ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚アーキテクãƒãƒ£ã€Œallã€ã¯ã€<filename>Packages</filename> "
+"ã®ã‚ˆã†ãªã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£å›ºæœ‰ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ä¸­ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ "
+"<literal>all</literal> パッケージã«é–¢ã™ã‚‹æƒ…報をå«ã¾ãšã€å°‚用ã®ãƒ•ã‚¡ã‚¤ãƒ«ã§åˆ©ç”¨ã§"
+"ãã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the binary override file. The override file contains section, priority "
+"and maintainer address information."
+msgstr ""
+"ãƒã‚¤ãƒŠãƒªã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚’設定ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¯ã€"
+"セクションã€å„ªå…ˆåº¦ã€ãƒ¡ãƒ³ãƒ†ãƒŠã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã„ã£ãŸæƒ…å ±ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the source override file. The override file contains section "
+"information."
+msgstr ""
+"ソースオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚’設定ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¯ã€ã‚»"
+"クションã®æƒ…å ±ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the binary extra override file."
+msgstr "ãƒã‚¤ãƒŠãƒªç‰¹åˆ¥ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚’設定ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the source extra override file."
+msgstr "ソース特別オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚’設定ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>BinDirectory</literal> Section"
+msgstr "<literal>BinDirectory</literal> セクション"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>bindirectory</literal> section defines a binary directory tree "
+"with no special structure. The scope tag specifies the location of the "
+"binary directory and the settings are similar to the <literal>Tree</literal> "
+"section with no substitution variables or <literal>Section</"
+"literal><literal>Architecture</literal> settings."
+msgstr ""
+"<literal>bindirectory</literal> セクションã§ã¯ã€ç‰¹æ®Šãªæ§‹é€ ã‚’æŒãŸãªã„ãƒã‚¤ãƒŠãƒª"
+"ディレクトリツリーを定義ã—ã¾ã™ã€‚スコープタグã¯ãƒã‚¤ãƒŠãƒªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®å ´æ‰€ã‚’指"
+"定ã—ã€è¨­å®šã¯å¤‰æ•°å±•é–‹ã®ãªã„ <literal>Tree</literal> セクションや "
+"<literal>Section</literal><literal>Architecture</literal> 設定ã«ä¼¼ã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the Packages file output."
+msgstr "Packages ファイルã®å‡ºåŠ›å…ˆã‚’設定ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the Sources file output. At least one of <literal>Packages</literal> or "
+"<literal>Sources</literal> is required."
+msgstr ""
+"Sources ファイルã®å‡ºåŠ›å…ˆã‚’設定ã—ã¾ã™ã€‚å°‘ãªãã¨ã‚‚ <literal>Packages</literal> "
+"ã‹ <literal>Sources</literal> ã®ã†ã¡ã€ã²ã¨ã¤ã¯å¿…è¦ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the Contents file output (optional)."
+msgstr "Contents ファイルã®å‡ºåŠ›å…ˆã‚’設定ã—ã¾ã™ (オプション)。"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the binary override file."
+msgstr "ãƒã‚¤ãƒŠãƒªã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚’設定ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the source override file."
+msgstr "ソースオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚’設定ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the cache DB."
+msgstr "キャッシュ DB を設定ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Appends a path to all the output paths."
+msgstr "全出力パスã«ä»˜åŠ ã™ã‚‹ãƒ‘ス。"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the file list file."
+msgstr "ファイル一覧ファイルを指定ã—ã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Binary Override File"
+msgstr "ãƒã‚¤ãƒŠãƒªã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The binary override file is fully compatible with &dpkg-scanpackages;. It "
+"contains four fields separated by spaces. The first field is the package "
+"name, the second is the priority to force that package to, the third is the "
+"section to force that package to and the final field is the maintainer "
+"permutation field."
+msgstr ""
+"ãƒã‚¤ãƒŠãƒªã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€&dpkg-scanpackages; ã¨å®Œå…¨ã«äº’æ›æ€§ãŒã‚ã‚Šã¾"
+"ã™ã€‚ã“ã“ã«ã¯ã€ç©ºç™½åŒºåˆ‡ã‚Šã§ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãŒ 4 個ã‚ã‚Šã¾ã™ã€‚先頭ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯ãƒ‘ッ"
+"ケージåã€2 番目ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯ãƒ‘ッケージã«å¼·åˆ¶ã™ã‚‹å„ªå…ˆåº¦ã€3 番目ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰"
+"ã¯ãƒ‘ッケージã«å¼·åˆ¶ã™ã‚‹ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã€æœ€å¾Œã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯ãƒ¡ãƒ³ãƒ†ãƒŠé †åˆ—フィールドã§"
+"ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "old [// oldn]* => new"
+msgstr "old [// oldn]* => new"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "new"
+msgstr "new"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The general form of the maintainer field is: <placeholder type="
+"\"literallayout\" id=\"0\"/> or simply, <placeholder type=\"literallayout\" "
+"id=\"1\"/> The first form allows a double-slash separated list of old email "
+"addresses to be specified. If any of those are found then new is substituted "
+"for the maintainer field. The second form unconditionally substitutes the "
+"maintainer field."
+msgstr ""
+"メンテナフィールドã®ä¸€èˆ¬çš„ãªå½¢ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚<placeholder type="
+"\"literallayout\" id=\"0\"/> ã¾ãŸå˜ç´”ã«ä»¥ä¸‹ã®ã‚ˆã†ã«ã‚‚ãªã‚Šã¾ã™ã€‚<placeholder "
+"type=\"literallayout\" id=\"1\"/>最åˆã®å½¢å¼ã¯ã€// ã§åŒºåˆ‡ã‚‰ã‚ŒãŸå¤ã„ email アド"
+"レスã®ãƒªã‚¹ãƒˆã‚’許å¯ã—ã¾ã™ã€‚ã“ã®å½¢å¼ãŒã‚ã‚‹å ´åˆã¯ã€ãƒ¡ãƒ³ãƒ†ãƒŠãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ãªã‚‹ã‚ˆã† "
+"new ã«ç½®æ›ã—ã¦ãã ã•ã„。2 番目ã®å½¢å¼ã¯ç„¡æ¡ä»¶ã«ãƒ¡ãƒ³ãƒ†ãƒŠãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ç½®æ›ã—ã¾"
+"ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Source Override File"
+msgstr "ソースオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The source override file is fully compatible with &dpkg-scansources;. It "
+"contains two fields separated by spaces. The first field is the source "
+"package name, the second is the section to assign it."
+msgstr ""
+"ソースオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€&dpkg-scansources; ã¨å®Œå…¨ã«äº’æ›æ€§ãŒã‚ã‚Šã¾ã™ã€‚"
+"ã“ã“ã«ã¯ã€ç©ºç™½åŒºåˆ‡ã‚Šã§ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãŒ 2 個ã‚ã‚Šã¾ã™ã€‚先頭ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯ã‚½ãƒ¼ã‚¹ãƒ‘ッ"
+"ケージåã€2 番目ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯å‰²ã‚Šå½“ã¦ã‚‹ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Extra Override File"
+msgstr "特別オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The extra override file allows any arbitrary tag to be added or replaced in "
+"the output. It has three columns, the first is the package, the second is "
+"the tag and the remainder of the line is the new value."
+msgstr ""
+"特別オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€å‡ºåŠ›ä¸­ã«ä»»æ„ã®ã‚¿ã‚°ã‚’追加・置æ›ã§ãるよã†ã«ã—ã¾"
+"ã™ã€‚3 列ã‹ã‚‰ãªã‚Šã€å…ˆé ­ã¯ãƒ‘ッケージã€2番目ã¯ã‚¿ã‚°ã€æ®‹ã‚Šã¯æ–°ã—ã„値ã§ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Generate the given checksum. These options default to on, when turned off "
+"the generated index files will not have the checksum fields where possible. "
+"Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</"
+"replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</"
+"replaceable>::<replaceable>Checksum</replaceable></literal> where "
+"<literal><replaceable>Index</replaceable></literal> can be "
+"<literal>Packages</literal>, <literal>Sources</literal> or <literal>Release</"
+"literal> and <literal><replaceable>Checksum</replaceable></literal> can be "
+"<literal>MD5</literal>, <literal>SHA1</literal>, <literal>SHA256</literal> "
+"or <literal>SHA512</literal>."
+msgstr ""
+"与ãˆãŸãƒã‚§ãƒƒã‚¯ã‚µãƒ ã‚’生æˆã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ—ションã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ on ã§ã™ã€‚off ã«"
+"ã™ã‚‹ã¨ç”Ÿæˆã—ãŸã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¯ checksum フィールドãŒå«ã¾ã‚Œã¾ã›ã‚“。設"
+"定項目: <literal>APT::FTPArchive::<replaceable>Checksum</replaceable></"
+"literal> 㨠<literal>APT::FTPArchive::<replaceable>Index</replaceable>::"
+"<replaceable>Checksum</replaceable></literal>。ã“ã“㧠"
+"<literal><replaceable>Index</replaceable></literal> 㯠<literal>Packages</"
+"literal>, <literal>Sources</literal>, <literal>Release</literal> ã«ãªã‚Šã¾ã™ã€‚"
+"<literal><replaceable>Checksum</replaceable></literal> 㯠<literal>MD5</"
+"literal>, <literal>SHA1</literal>, <literal>SHA256</literal> ã¾ãŸã¯ "
+"<literal>SHA512</literal> ã«ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Use a binary caching DB. This has no effect on the generate command. "
+"Configuration Item: <literal>APT::FTPArchive::DB</literal>."
+msgstr ""
+"ãƒã‚¤ãƒŠãƒªã‚­ãƒ£ãƒƒã‚·ãƒ¥ DB を使用ã—ã¾ã™ã€‚generate コマンドã«ã¯å½±éŸ¿ã—ã¾ã›ã‚“。設定項"
+"ç›®: <literal>APT::FTPArchive::DB</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+"é™ç²› - 進æ—表示をçœç•¥ã—ã€ãƒ­ã‚°ã‚’ã¨ã‚‹ã®ã«ä¾¿åˆ©ãªå‡ºåŠ›ã‚’è¡Œã„ã¾ã™ã€‚最大 2 ã¤ã¾ã§ q "
+"ã‚’é‡ã­ã‚‹ã“ã¨ã§ã‚ˆã‚Šé™ç²›ã«ã§ãã¾ã™ã€‚ã¾ãŸã€<option>-q=#</option> ã®ã‚ˆã†ã«é™ç²›ãƒ¬"
+"ベルを指定ã—ã¦ã€è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’上書ãã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚設定項目: "
+"<literal>quiet</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Perform Delinking. If the <literal>External-Links</literal> setting is used "
+"then this option actually enables delinking of the files. It defaults to on "
+"and can be turned off with <option>--no-delink</option>. Configuration "
+"Item: <literal>APT::FTPArchive::DeLinkAct</literal>."
+msgstr ""
+"Delink を実行ã—ã¾ã™ã€‚<literal>External-Links</literal> 設定を使用ã—ã¦ã„ã‚‹å ´"
+"åˆã€ã“ã®ã‚ªãƒ—ションã¯ãƒ•ã‚¡ã‚¤ãƒ«ã® delink を有効ã«ã—ã¾ã™ã€‚デフォルト㯠on ã§ã€"
+"off ã«ã™ã‚‹ã«ã¯ <option>--no-delink</option> ã¨ã—ã¦ãã ã•ã„。設定項目: "
+"<literal>APT::FTPArchive::DeLinkAct</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Perform contents generation. When this option is set and package indexes are "
+"being generated with a cache DB then the file listing will also be extracted "
+"and stored in the DB for later use. When using the generate command this "
+"option also allows the creation of any Contents files. The default is on. "
+"Configuration Item: <literal>APT::FTPArchive::Contents</literal>."
+msgstr ""
+"contents ã®ç”Ÿæˆã‚’è¡Œã„ã¾ã™ã€‚ã“ã®ã‚ªãƒ—ションを指定ã—ã€ãƒ‘ッケージインデックスを"
+"キャッシュ DB ã¨å…±ã«ç”Ÿæˆã™ã‚‹éš›ã€ãƒ•ã‚¡ã‚¤ãƒ«ãƒªã‚¹ãƒˆã‚’後ã§ä½¿ç”¨ã™ã‚‹ã‚ˆã†ã«ã€æŠ½å‡ºã— "
+"DB ã«æ ¼ç´ã—ã¾ã™ã€‚generate コマンドを使用ã™ã‚‹éš›ã€ã“ã®ã‚ªãƒ—ションã§ã„ãšã‚Œã® "
+"Contents ファイルも作æˆã§ãã¾ã™ã€‚デフォルト㯠on ã§ã™ã€‚設定項目: "
+"<literal>APT::FTPArchive::Contents</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Select the source override file to use with the <literal>sources</literal> "
+"command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</"
+"literal>."
+msgstr ""
+"<literal>sources</literal> コマンドã§ä½¿ç”¨ã™ã‚‹ã€ã‚½ãƒ¼ã‚¹ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚’"
+"é¸æŠžã—ã¾ã™ã€‚設定項目: <literal>APT::FTPArchive::SourceOverride</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Make the caching databases read only. Configuration Item: <literal>APT::"
+"FTPArchive::ReadOnlyDB</literal>."
+msgstr ""
+"キャッシュデータベースを読ã¿å–り専用ã«ã—ã¾ã™ã€‚設定項目: <literal>APT::"
+"FTPArchive::ReadOnlyDB</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Accept in the <literal>packages</literal> and <literal>contents</literal> "
+"commands only package files matching <literal>*_arch.deb</literal> or "
+"<literal>*_all.deb</literal> instead of all package files in the given "
+"path. Configuration Item: <literal>APT::FTPArchive::Architecture</literal>."
+msgstr ""
+"<literal>packages</literal> コマンドや <literal>contents</literal> コマンド"
+"ã§ã€ä¸ŽãˆãŸãƒ‘スã«ã‚ã‚‹ã™ã¹ã¦ã®ãƒ‘ッケージファイルã§ã¯ãªãã€<literal>*_arch.deb</"
+"literal> ã‚„ <literal>*_all.deb</literal> ã«ä¸€è‡´ã—ãŸãƒ‘ッケージファイルã®ã¿ã‚’å—"
+"ã‘付ã‘ã¾ã™ã€‚設定項目: <literal>APT::FTPArchive::Architecture</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"&apt-ftparchive; caches as much as possible of metadata in a cachedb. If "
+"packages are recompiled and/or republished with the same version again, this "
+"will lead to problems as the now outdated cached metadata like size and "
+"checksums will be used. With this option enabled this will no longer happen "
+"as it will be checked if the file was changed. Note that this option is set "
+"to \"<literal>false</literal>\" by default as it is not recommend to upload "
+"multiply versions/builds of a package with the same versionnumber, so in "
+"theory nobody will have these problems and therefore all these extra checks "
+"are useless."
+msgstr ""
+"&apt-ftparchive; 㯠cachedb ã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã«å¯èƒ½ãªé™ã‚Šã‚­ãƒ£ãƒƒã‚·ãƒ¥ã—ã¾ã™ã€‚パッ"
+"ケージをå†ã‚³ãƒ³ãƒ‘イルã—ã€ã¾ãŸåŒã˜ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§å†ç™ºè¡Œã•ã‚Œã‚‹ã¨ã€å¤ããªã£ã¦ã—ã¾ã£"
+"ãŸã‚­ãƒ£ãƒƒã‚·ãƒ¥ã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ (サイズやãƒã‚§ãƒƒã‚¯ã‚µãƒ ) ãŒä½¿ã‚ã‚Œã€ã“ã‚ŒãŒå•é¡Œã«ãªã‚‹ã“"
+"ã¨ãŒã‚ã‚Šã¾ã™ã€‚ã“ã®ã‚ªãƒ—ションを有効ã«ã™ã‚‹ã¨ã€ãƒ•ã‚¡ã‚¤ãƒ«ã‚’æ›´æ–°ã™ã‚‹ã¨ãƒã‚§ãƒƒã‚¯ãŒè¡Œ"
+"ã‚れるãŸã‚ã€å•é¡ŒãŒèµ·ã“らãªããªã‚Šã¾ã™ã€‚デフォルトã§ã¯ã€ã“ã®ã‚ªãƒ—ション㯠"
+"\"<literal>false</literal>\" ã«ã‚»ãƒƒãƒˆã•ã‚Œã¦ã„ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。ãƒãƒ¼"
+"ジョンやã€åŒã˜ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã®ãƒ‘ッケージã®ãƒ“ルドをã€å¢—ã‚„ã—ã¦ã‚¢ãƒƒãƒ—ロードã™ã‚‹"
+"ã®ã¯æŽ¨å¥¨ã—ãªã„ã‹ã‚‰ã§ã™ã€‚ãã®ãŸã‚ç†è«–上ã€èª°ã‚‚ãã®å•é¡Œã«è¡Œã会ã‚ãšã€ã™ã¹ã¦ã®è¿½"
+"加ãƒã‚§ãƒƒã‚¯ã«ã¯ã€æ„味ãŒã‚ã‚Šã¾ã›ã‚“。"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This configuration option defaults to \"<literal>true</literal>\" and should "
+"only be set to <literal>\"false\"</literal> if the Archive generated with "
+"&apt-ftparchive; also provides <filename>Translation</filename> files. Note "
+"that the <filename>Translation-en</filename> master file can only be created "
+"in the generate command."
+msgstr ""
+"ã“ã®è¨­å®šã‚ªãƒ—ションã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ \"<literal>true</literal>\" ã§ã€&apt-"
+"ftparchive; ãŒç”Ÿæˆã—ãŸã‚¢ãƒ¼ã‚«ã‚¤ãƒ–㌠<filename>Translation</filename> ファイル"
+"ã‚‚æä¾›ã™ã‚‹å ´åˆã«ã®ã¿ <literal>\"false\"</literal> ã«è¨­å®šã—ã¦ãã ã•ã„。"
+"<filename>Translation-en</filename> マスターファイル㯠generate コマンドã§ã®"
+"ã¿ç”Ÿæˆã§ãã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <refentry><refsect1><para><programlisting>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n"
+msgstr "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"To create a compressed Packages file for a directory containing binary "
+"packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"ãƒã‚¤ãƒŠãƒªãƒ‘ッケージ (.deb) ãŒã‚るディレクトリ㮠Packages ファイルを生æˆã™ã‚‹ã«"
+"ã¯ã€ä»¥ä¸‹ã®ã‚ˆã†ã«ã—ã¾ã™ã€‚<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+"<command>apt-ftparchive</command> ã¯æ­£å¸¸çµ‚了時㫠0 ã‚’è¿”ã—ã¾ã™ã€‚エラー時ã«ã¯å"
+"進㮠100 ã‚’è¿”ã—ã¾ã™ã€‚"
+
+#. type: Attribute 'lang' of: <book>
+#: guide.dbk offline.dbk
+msgid "en"
+msgstr "ja"
+
+#. type: Content of: <book><title>
+#: guide.dbk
+msgid "APT User's Guide"
+msgstr "APT ユーザガイド"
+
+#. type: Content of: <book><bookinfo><authorgroup><author><personname>
+#: guide.dbk offline.dbk
+msgid "Jason Gunthorpe"
+msgstr "Jason Gunthorpe"
+
+#. type: Content of: <book><bookinfo><authorgroup><author><email>
+#: guide.dbk offline.dbk
+msgid "jgg@debian.org"
+msgstr "jgg@debian.org"
+
+#. type: Content of: <book><bookinfo><releaseinfo>
+#: guide.dbk offline.dbk
+msgid "Version &apt-product-version;"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ &apt-product-version;"
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: guide.dbk
+#, fuzzy
+#| msgid ""
+#| "This document provides an overview of how to use the the APT package "
+#| "manager."
+msgid ""
+"This document provides an overview of how to use the APT package manager."
+msgstr "本文書㯠APT パッケージマãƒãƒ¼ã‚¸ãƒ£ã®ä½¿ã„æ–¹ã®æ¦‚è¦ã‚’æä¾›ã—ã¾ã™ã€‚"
+
+#. type: Content of: <book><bookinfo>
+#: guide.dbk
+msgid ""
+"<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+"<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>"
+
+#. type: Content of: <book><bookinfo><legalnotice><title>
+#: guide.dbk offline.dbk
+msgid "License Notice"
+msgstr "ライセンスã«ã¤ã„ã¦"
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk offline.dbk
+msgid ""
+"\"APT\" and this document are free software; you can redistribute them and/"
+"or modify them under the terms of the GNU General Public License as "
+"published by the Free Software Foundation; either version 2 of the License, "
+"or (at your option) any later version."
+msgstr ""
+"\"APT\" and this document are free software; you can redistribute them and/"
+"or modify them under the terms of the GNU General Public License as "
+"published by the Free Software Foundation; either version 2 of the License, "
+"or (at your option) any later version."
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk offline.dbk
+msgid ""
+"For more details, on Debian systems, see the file /usr/share/common-licenses/"
+"GPL for the full license."
+msgstr ""
+"For more details, on Debian systems, see the file /usr/share/common-licenses/"
+"GPL for the full license."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "General"
+msgstr "全般"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The APT package currently contains two sections, the APT <command>dselect</"
+"command> method and the <command>apt-get</command> command line user "
+"interface. Both provide a way to install and remove packages as well as "
+"download new packages from the Internet."
+msgstr ""
+"APT パッケージã¯ç¾åœ¨ã€APT <command>dselect</command> メソッド㨠<command>apt-"
+"get</command> コマンドラインユーザインターフェイスã®2ã¤ã‚’åŽéŒ²ã—ã¦ã„ã¾ã™ã€‚両方"
+"ã¨ã‚‚インターãƒãƒƒãƒˆã‹ã‚‰æ–°ã—ã„パッケージをダウンロードã™ã‚‹ã®ã¨åŒæ§˜ã€ãƒ‘ッケージ"
+"をインストールã€å‰Šé™¤ã™ã‚‹æ–¹æ³•ã‚’æä¾›ã—ã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Anatomy of the Package System"
+msgstr "パッケージシステムã®æ§‹é€ "
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The Debian packaging system has a large amount of information associated "
+"with each package to help assure that it integrates cleanly and easily into "
+"the system. The most prominent of its features is the dependency system."
+msgstr ""
+"Debian パッケージシステムã«ã¯å„パッケージã«é–¢é€£ã™ã‚‹è†¨å¤§ãªæƒ…å ±ãŒã‚ã‚Šã€ã‚·ã‚¹ãƒ†ãƒ "
+"ã«æ‰‹éš›è‰¯ãç°¡å˜ã«çµ±åˆã™ã‚‹ã“ã¨ã‚’支æ´ã—ã¾ã™ã€‚ãã®æœ€ã‚‚é‡è¦ãªæ©Ÿèƒ½ã¯ä¾å­˜ã‚·ã‚¹ãƒ†ãƒ ã§"
+"ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The dependency system allows individual programs to make use of shared "
+"elements in the system such as libraries. It simplifies placing infrequently "
+"used portions of a program in separate packages to reduce the number of "
+"things the average user is required to install. Also, it allows for choices "
+"in mail transport agents, X servers and so on."
+msgstr ""
+"ä¾å­˜ã‚·ã‚¹ãƒ†ãƒ ã«ã‚ˆã‚Šã€ã‚·ã‚¹ãƒ†ãƒ ã«ã‚るライブラリ等ã®å…±æœ‰è¦ç´ ã‚’個々ã®ãƒ—ログラムを"
+"使ãˆã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ç°¡å˜ã«è¨€ã†ã¨ã€ãƒ—ログラムã®ã†ã¡ã¾ã‚Œã«åˆ©ç”¨ã•ã‚Œã‚‹éƒ¨åˆ†ã‚’別"
+"個ã®ãƒ‘ッケージã«é…ç½®ã—ã¦ã€å¹³å‡çš„ユーザãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’å¿…è¦ã¨ã™ã‚‹ã‚‚ã®ã®æ•°ã‚’減"
+"らã—ã¾ã™ã€‚ã¾ãŸã€ãƒ¡ãƒ¼ãƒ«è»¢é€ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆã‚„ X サーãƒç­‰ã®é¸æŠžãŒã§ãるよã†ã«ã‚‚ãªã‚Š"
+"ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The first step to understanding the dependency system is to grasp the "
+"concept of a simple dependency. The meaning of a simple dependency is that a "
+"package requires another package to be installed at the same time to work "
+"properly."
+msgstr ""
+"ä¾å­˜ã‚·ã‚¹ãƒ†ãƒ ã®ç†è§£ã¯ã¾ãšå˜ç´”ãªä¾å­˜ã®æ¦‚念を把æ¡ã™ã‚‹ã“ã¨ã‹ã‚‰å§‹ã¾ã‚Šã¾ã™ã€‚å˜ç´”ãª"
+"ä¾å­˜ã¨ã„ã†ã®ã¯ã€ã‚るパッケージãŒé©åˆ‡ã«æ©Ÿèƒ½ã™ã‚‹ãŸã‚ã«ã¯åˆ¥ã®ãƒ‘ッケージãŒåŒæ™‚ã«"
+"インストールã•ã‚Œã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã€‚"
+
+# Translator's NOTE: maybe s/GPGP/GPG/?
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"For instance, mailcrypt is an emacs extension that aids in encrypting email "
+"with GPG. Without GPGP installed mailcrypt is useless, so mailcrypt has a "
+"simple dependency on GPG. Also, because it is an emacs extension it has a "
+"simple dependency on emacs, without emacs it is completely useless."
+msgstr ""
+"例ãˆã° mailcrypt 㯠emacs ã‚’æ‹¡å¼µã™ã‚‹ãƒ—ログラムã§ã€GPG ã«ã‚ˆã‚‹ãƒ¡ãƒ¼ãƒ«ã®æš—å·åŒ–ã‚’"
+"支æ´ã—ã¾ã™ã€‚GPGP ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ãªã‘れ㰠mailcrypt ã¯å½¹ã«ç«‹ãŸãªã„ã®ã§ "
+"mailcrypt ã«ã¯ GPG ã«å˜ç´”ã«ä¾å­˜ã—ã¦ã„ã¾ã™ã€‚ã¾ãŸã€ã“れ㯠emacs ã®æ‹¡å¼µãªã®ã§ "
+"emacs ã«å˜ç´”ã«ä¾å­˜ã—ã€emacs ãŒãªã„ã¨ä½•ã®å½¹ã«ã‚‚ç«‹ã¡ã¾ã›ã‚“。"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The other important dependency to understand is a conflicting dependency. It "
+"means that a package, when installed with another package, will not work and "
+"may possibly be extremely harmful to the system. As an example consider a "
+"mail transport agent such as sendmail, exim or qmail. It is not possible to "
+"have two mail transport agents installed because both need to listen to the "
+"network to receive mail. Attempting to install two will seriously damage the "
+"system so all mail transport agents have a conflicting dependency with all "
+"other mail transport agents."
+msgstr ""
+"ç†è§£ã—ã¦ãŠã‹ãªã„ã¨ã„ã‘ãªã„ã‚‚ã†ä¸€ã¤ã®é‡è¦ãªä¾å­˜ã«ç«¶åˆã™ã‚‹ä¾å­˜ãŒã‚ã‚Šã¾ã™ã€‚ã“ã‚Œ"
+"ã¯ã‚るパッケージãŒåˆ¥ã®ãƒ‘ッケージã¨åŒæ™‚ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã‚‹ã¨æ©Ÿèƒ½ã›ãšã€ã‚·"
+"ステムã«ã¨ã£ã¦ã²ã©ã有害ãªã“ã¨ã‚‚ã‚ã‚Šã¾ã™ã€‚例ã¨ã—㦠sendmail ã‚„ eximã€qmail ç­‰"
+"ã®ãƒ¡ãƒ¼ãƒ«è»¢é€ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆã§è€ƒãˆã¦ã¿ã¾ã—ょã†ã€‚メール転é€ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆã¯ã©ã‚Œã‚‚"
+"メールをå—ã‘å–ã‚‹ã®ã«ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚’å¾…ã¡å—ã‘ã‚‹å¿…è¦ãŒã‚ã‚‹ãŸã‚ã€2ã¤ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™"
+"ã‚‹ã“ã¨ã¯ä¸å¯èƒ½ã§ã™ã€‚複数インストールã™ã‚‹ã¨ã‚·ã‚¹ãƒ†ãƒ ã«é‡å¤§ãªè¢«å®³ã‚’与ãˆã‚‹å¯èƒ½æ€§"
+"ãŒã‚ã‚‹ãŸã‚ã€ãƒ¡ãƒ¼ãƒ«è»¢é€ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆã¯ã©ã‚Œã‚‚ä»–ã®ã‚らゆるメール転é€ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆ"
+"ã¨ç«¶åˆä¾å­˜ã¨ãªã£ã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"As an added complication there is the possibility for a package to pretend "
+"to be another package. Consider that exim and sendmail for many intents are "
+"identical, they both deliver mail and understand a common interface. Hence, "
+"the package system has a way for them to declare that they are both mail-"
+"transport-agents. So, exim and sendmail both declare that they provide a "
+"mail-transport-agent and other packages that need a mail transport agent "
+"depend on mail-transport-agent. This can add a great deal of confusion when "
+"trying to manually fix packages."
+msgstr ""
+"複雑ãªä¾‹ã¨ã—ã¦ã¯ã€åˆ¥ã®ãƒ‘ッケージã®ã‚ˆã†ã«è£…ã†ãƒ‘ッケージãŒã‚ã‚Šã¾ã™ã€‚exim 㨠"
+"sendmail ã«ã¤ã„ã¦è¦‹ã¦ã¿ã‚‹ã¨ã€ãã®å¤šãã®ç›®çš„ã¯åŒä¸€ã§ã€ä¸¡æ–¹ã¨ã‚‚メールをé…é€ã—ã€"
+"一般的インターフェイスを解釈ã—ã¾ã™ã€‚ãã“ã§ã€ãƒ‘ッケージシステムã«ã¯ã©ã¡ã‚‰ã‚‚ "
+"mail-transport-agents ã ã¨å®£è¨€ã™ã‚‹æ–¹æ³•ãŒã‚ã‚Šã¾ã™ã€‚ãã†ã—㦠exim 㨠sendmail "
+"ã¯ä¸¡æ–¹ã¨ã‚‚ mail-transport-agent ã‚’æä¾›ã™ã‚‹ã¨å®£è¨€ã—ã€ä»–ã®ãƒ¡ãƒ¼ãƒ«è»¢é€ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³"
+"トを必è¦ã¨ã™ã‚‹ãƒ‘ッケージ㯠mail-transport-agent ã«ä¾å­˜ã—ã¾ã™ã€‚手作業ã«ã‚ˆã‚Š"
+"パッケージを修正ã—よã†ã¨ã—ãŸã¨ãã«å¤šå¤§ãªæ··ä¹±ãŒç”Ÿã¾ã‚Œã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"At any given time a single dependency may be met by packages that are "
+"already installed or it may not be. APT attempts to help resolve dependency "
+"issues by providing a number of automatic algorithms that help in selecting "
+"packages for installation."
+msgstr ""
+"æ—¢ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã‚‹ã€ã‚ã‚‹ã„ã¯ã•ã‚Œã¦ã„ãªã„パッケージã«ã¤ã„ã¦ã€1ã¤ã®ä¾å­˜"
+"ãŒç”Ÿã¾ã‚Œã‚‹å¯èƒ½æ€§ã¯å¸¸ã«ã‚ã‚Šã¾ã™ã€‚APT ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ãƒ‘ッケージã®é¸æŠžã‚’支æ´"
+"ã™ã‚‹è‡ªå‹•åŒ–ã§ã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã‚’ã„ãã¤ã‹æä¾›ã™ã‚‹ã“ã¨ã§ä¾å­˜å•é¡Œã®è§£æ±ºæ”¯æ´ã«åŠªã‚ã¾"
+"ã™ã€‚"
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "apt-get"
+msgstr "apt-get"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"<command>apt-get</command> provides a simple way to install packages from "
+"the command line. Unlike <command>dpkg</command>, <command>apt-get</command> "
+"does not understand .deb files, it works with the package's proper name and "
+"can only install .deb archives from a <emphasis>Source</emphasis>."
+msgstr ""
+"<command>apt-get</command> ã¯ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‹ã‚‰ãƒ‘ッケージをインストールã™ã‚‹ç°¡"
+"å˜ãªæ–¹æ³•ã‚’æä¾›ã—ã¾ã™ã€‚<command>dpkg</command> ã¨ã¯ç•°ãªã‚Šã€<command>apt-get</"
+"command> 㯠.deb ファイルを解釈ã›ãšã€é€£æºã™ã‚‹ã®ã¯ãƒ‘ッケージ特有ã®åå‰ã§ã€ã‚¤ãƒ³"
+"ストールã§ãã‚‹ã®ã¯<emphasis>ソース</emphasis>ã«ã‚ã‚‹ .deb アーカイブã ã‘ã§ã™ã€‚"
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk
+msgid ""
+"If you are using an http proxy server you must set the http_proxy "
+"environment variable first, see sources.list(5)"
+msgstr ""
+"http プロキシサーãƒã‚’使ã£ã¦ã„ã‚‹å ´åˆã¯ã¾ãš http_proxy 環境変数をセットã™ã‚‹å¿…è¦"
+"ãŒã‚ã‚Šã¾ã™ã€‚sources.list(5) を見ã¦ãã ã•ã„"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The first <placeholder type=\"footnote\" id=\"0\"/> thing that should be "
+"done before using <command>apt-get</command> is to fetch the package lists "
+"from the <emphasis>Sources</emphasis> so that it knows what packages are "
+"available. This is done with <literal>apt-get update</literal>. For instance,"
+msgstr ""
+"<command>apt-get</command> を使ã†å‰ã«ã¾ãšã‚„ã‚‹ã¹ãã“ã¨ã¯<placeholder type="
+"\"footnote\" id=\"0\"/>パッケージ一覧を<emphasis>ソース</emphasis>ã‹ã‚‰å–å¾—ã™"
+"ã‚‹ã“ã¨ã§ã€ãã‚Œã«ã‚ˆã‚Šåˆ©ç”¨ã§ãるパッケージãŒã‚ã‹ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ã“ã‚Œã«ã¯ "
+"<literal>apt-get update</literal> を実行ã—ã¾ã™ã€‚例ãˆã°"
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+"# apt-get update\n"
+"å–å¾— http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"å–å¾— http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"パッケージリストを読ã¿è¾¼ã‚“ã§ã„ã¾ã™... 完了\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid "Once updated there are several commands that can be used:"
+msgstr "更新後ã¯è¤‡æ•°ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’使ãˆã¾ã™:"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "upgrade"
+msgstr "upgrade"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Upgrade will attempt to gently upgrade the whole system. Upgrade will never "
+"install a new package or remove an existing package, nor will it ever "
+"upgrade a package that might cause some other package to break. This can be "
+"used daily to relatively safely upgrade the system. Upgrade will list all of "
+"the packages that it could not upgrade, this usually means that they depend "
+"on new packages or conflict with some other package. <command>dselect</"
+"command> or <literal>apt-get install</literal> can be used to force these "
+"packages to install."
+msgstr ""
+"upgrade ã‚’è¡Œã†ã¨ã‚·ã‚¹ãƒ†ãƒ å…¨ä½“ã‚’ç©ã‚„ã‹ã«ã‚¢ãƒƒãƒ—グレードã—ã¾ã™ã€‚アップグレードã§"
+"ã¯æ–°ã—ã„パッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚„既存ã®ãƒ‘ッケージã®å‰Šé™¤ã€ã‚¢ãƒƒãƒ—グレードã™ã‚‹"
+"ã¨ä»–ã®ãƒ‘ッケージを破壊ã™ã‚‹å¯èƒ½æ€§ã®ã‚ã‚‹å ´åˆã®ãã®ãƒ‘ッケージã®ã‚¢ãƒƒãƒ—グレードã¯"
+"è¡Œã„ã¾ã›ã‚“。ã“ã‚Œã¯æ¯Žæ—¥å®Ÿè¡Œã—ã¦ã‚·ã‚¹ãƒ†ãƒ ã‚’比較的安全ã«ã‚¢ãƒƒãƒ—グレードã§ãã¾ã™ã€‚"
+"upgrade ã‚’è¡Œã†ã¨ã‚¢ãƒƒãƒ—グレードã§ããªã„パッケージãŒã‚ã‚‹å ´åˆã«ãã®ä¸€è¦§ã‚’表示ã—"
+"ã¾ã™ã€‚ã“ã‚Œã¯é€šå¸¸æ–°ã—ã„パッケージã«ä¾å­˜ã—ã¦ã„ã‚‹ã‹ä»–ã®ãƒ‘ッケージã¨ç«¶åˆã—ã¦ã„ã‚‹"
+"ã¨ã„ã†ã“ã¨ã«ãªã‚Šã¾ã™ã€‚<command>dselect</command> ã‚„ <literal>apt-get "
+"install</literal> を使ã†ã¨ãã†ã„ã£ãŸãƒ‘ッケージを強制的ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã§ãã¾"
+"ã™ã€‚"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "install"
+msgstr "install"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Install is used to install packages by name. The package is automatically "
+"fetched and installed. This can be useful if you already know the name of "
+"the package to install and do not want to go into a GUI to select it. Any "
+"number of packages may be passed to install, they will all be fetched. "
+"Install automatically attempts to resolve dependency problems with the "
+"listed packages and will print a summary and ask for confirmation if "
+"anything other than its arguments are changed."
+msgstr ""
+"install を使ã£ã¦ãƒ‘ッケージをåå‰ã«ã‚ˆã‚Šã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¾ã™ã€‚パッケージã¯è‡ªå‹•çš„"
+"ã«å–å¾—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¾ã™ã€‚ã“ã‚Œã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ãƒ‘ッケージã®åå‰ãŒæ—¢ã«ã‚"
+"ã‹ã£ã¦ã„㦠GUI を使ã£ã¦é¸æŠžã—ãŸããªã„å ´åˆã«æœ‰ç”¨ã§ã™ã€‚インストールã™ã‚‹ãƒ‘ッケー"
+"ジã¯ã„ãらã§ã‚‚指定ã§ãã€å…¨ã¦å–å¾—ã•ã‚Œã¾ã™ã€‚install ã§ã¯å¯¾è±¡ãƒ‘ッケージ一覧ã‹ã‚‰"
+"自動的ã«ä¾å­˜å•é¡Œã®è§£æ±ºã«åŠªã‚ã¦ã¾ã¨ã‚ã‚’æ示ã—ã€æŒ‡ç¤ºä»¥å¤–ã®å¤‰æ›´ãŒã‚ã‚‹å ´åˆã¯ç¢ºèª"
+"を促ã—ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "dist-upgrade"
+msgstr "dist-upgrade"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Dist-upgrade is a complete upgrader designed to simplify upgrading between "
+"releases of Debian. It uses a sophisticated algorithm to determine the best "
+"set of packages to install, upgrade and remove to get as much of the system "
+"to the newest release. In some situations it may be desired to use dist-"
+"upgrade rather than spend the time manually resolving dependencies in "
+"<command>dselect</command>. Once dist-upgrade has completed then "
+"<command>dselect</command> can be used to install any packages that may have "
+"been left out."
+msgstr ""
+"dist-upgrade ã¯å®Œå…¨ãªã‚¢ãƒƒãƒ—グレードを行ã†ã‚ˆã†ã«è¨­è¨ˆã•ã‚Œã¦ã„ã¦ã€Debian ã®ãƒª"
+"リース間ã®ã‚¢ãƒƒãƒ—グレードをå˜ç´”化ã—ã¾ã™ã€‚æ´—ç·´ã•ã‚ŒãŸã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã‚’使ã£ã¦ã€ã‚·ã‚¹"
+"テムをã§ãã‚‹ã ã‘最新ã®ãƒªãƒªãƒ¼ã‚¹ã«ã™ã‚‹ãŸã‚ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã€ã‚¢ãƒƒãƒ—グレードã€å‰Šé™¤"
+"ã™ã‚‹æœ€å–„ã®ãƒ‘ッケージ群を決定ã—ã¾ã™ã€‚状æ³ã«ã‚ˆã£ã¦ã¯ <command>dselect</"
+"command> ã§æ‰‹ä½œæ¥­ã«ã‚ˆã‚Šæ™‚間を掛ã‘ã¦ä¾å­˜ã‚’解決ã™ã‚‹ã‚ˆã‚Šã‚‚ dist-upgrade を使ã†æ–¹"
+"ãŒå¸Œæœ›ã«ã¯åˆã†ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。dist-upgrade 完了後㯠<command>dselect</"
+"command> を使ã£ã¦ã€æ®‹ã£ã¦ã„るパッケージãŒã‚ã‚Œã°ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã§ãã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"It is important to closely look at what dist-upgrade is going to do, its "
+"decisions may sometimes be quite surprising."
+msgstr ""
+"dist-upgrade ãŒå®Ÿè¡Œã™ã‚‹å†…容をよã観察ã™ã‚‹ã®ã¯é‡è¦ã§ã™ã€‚ã‹ãªã‚Šé©šãよã†ãªåˆ¤æ–­ãŒ"
+"ãªã•ã‚Œã‚‹ã“ã¨ã‚‚ã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"<command>apt-get</command> has several command line options that are "
+"detailed in its man page, <citerefentry><refentrytitle>apt-get</"
+"refentrytitle><manvolnum>8</manvolnum></citerefentry>. The most useful "
+"option is <literal>-d</literal> which does not install the fetched files. If "
+"the system has to download a large number of package it would be undesired "
+"to start installing them in case something goes wrong. When <literal>-d</"
+"literal> is used the downloaded archives can be installed by simply running "
+"the command that caused them to be downloaded again without <literal>-d</"
+"literal>."
+msgstr ""
+"<command>apt-get</command> ã«ã¯ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚ªãƒ—ションãŒè¤‡æ•°ã‚ã‚Šã€man ページ"
+"ã® <citerefentry><refentrytitle>apt-get</refentrytitle><manvolnum>8</"
+"manvolnum></citerefentry> ã§è©³ç´°ã«èª¬æ˜Žã•ã‚Œã¦ã„ã¾ã™ã€‚最も有用ãªã‚ªãƒ—ションã¯å–"
+"å¾—ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’インストールã—ãªã„ <literal>-d</literal> ã§ã™ã€‚システムãŒå¤§é‡"
+"ã®ãƒ‘ッケージをダウンロードã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆã€ä½•ã‹ã†ã¾ãã„ã‹ãªã‹ã£ãŸã¨ãã«ã‚¤"
+"ンストールを開始ã™ã‚‹ã®ã¯æœ›ã¾ã—ãã¯ãªã„ã§ã—ょã†ã€‚<literal>-d</literal> を指定"
+"ã™ã‚‹ã¨ã€ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ãŸã¨ãã®ã‚³ãƒžãƒ³ãƒ‰ã‚’å˜ç´”ã«å†ã³ã€<literal>-d</literal> ã‚’"
+"付ã‘ãšã«å®Ÿè¡Œã™ã‚‹ã“ã¨ã§ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ãŸã‚¢ãƒ¼ã‚«ã‚¤ãƒ–をインストールã§ãã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "DSelect"
+msgstr "DSelect"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The APT <command>dselect</command> method provides the complete APT system "
+"with the <command>dselect</command> package selection GUI. <command>dselect</"
+"command> is used to select the packages to be installed or removed and APT "
+"actually installs them."
+msgstr ""
+"APT 㮠<command>dselect</command> メソッド㯠<command>dselect</command> パッ"
+"ケージé¸æŠž GUI を使ã£ãŸå®Œå…¨ãª APT システムをæä¾›ã—ã¾ã™ã€‚インストールや削除ã™"
+"るパッケージã®é¸æŠžã«ã¯ <command>dselect</command> を使ã„ã€å®Ÿéš›ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«"
+"㯠APT ãŒè¡Œã„ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"To enable the APT method you need to select [A]ccess in <command>dselect</"
+"command> and then choose the APT method. You will be prompted for a set of "
+"<emphasis>Sources</emphasis> which are places to fetch archives from. These "
+"can be remote Internet sites, local Debian mirrors or CD-ROMs. Each source "
+"can provide a fragment of the total Debian archive, APT will automatically "
+"combine them to form a complete set of packages. If you have a CD-ROM then "
+"it is a good idea to specify it first and then specify a mirror so that you "
+"have access to the latest bug fixes. APT will automatically use packages on "
+"your CD-ROM before downloading from the Internet."
+msgstr ""
+"APT メソッドを有効ã«ã™ã‚‹ã«ã¯ã€<command>dselect</command> ã§ã‚¢ã‚¯ã‚»ã‚¹(a) ã‚’é¸æŠž"
+"ã—ã€ãã‚Œã‹ã‚‰ APT メソッドをé¸æŠžã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ãã†ã™ã‚‹ã¨ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã®å–å¾—"
+"å…ˆã®å ´æ‰€ã¨ãªã‚‹<emphasis>ソース</emphasis>群をèžã‹ã‚Œã¾ã™ã€‚ã“ã‚Œã«ã¯ãƒªãƒ¢ãƒ¼ãƒˆã®ã‚¤"
+"ンターãƒãƒƒãƒˆã‚µã‚¤ãƒˆã‚„ローカル㮠Debian ミラーã€CD-ROM を指定ã§ãã¾ã™ã€‚å„ソース"
+"㧠Debian アーカイブ全体ã®ã†ã¡ã®ä¸€éƒ¨ã‚’æä¾›ã§ãã€APT ã¯è‡ªå‹•çš„ã«çµ„ã¿åˆã‚ã›ã¦"
+"パッケージ群一å¼ã‚’構æˆã—ã¾ã™ã€‚CD-ROM ãŒã‚ã‚‹å ´åˆã¯ã¾ãšãれを指定ã—ã€ãã‚Œã‹ã‚‰ãƒŸ"
+"ラーを指定ã™ã‚‹ã®ãŒè‰¯ã„方法ã§ã€ãã†ã™ã‚‹ã“ã¨ã§æœ€æ–°ã®ãƒã‚°ä¿®æ­£ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãるよ"
+"ã†ã«ãªã‚Šã¾ã™ã€‚APT ã¯ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã™ã‚‹å‰ã« CD-ROM ã«ã‚るパッ"
+"ケージを自動的ã«åˆ©ç”¨ã—ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Set up a list of distribution source locations\n"
+"\n"
+" Please give the base URL of the debian distribution.\n"
+" The access schemes I know about are: http file\n"
+"\n"
+" For example:\n"
+" file:/mnt/debian,\n"
+" ftp://ftp.debian.org/debian,\n"
+" http://ftp.de.debian.org/debian,\n"
+"\n"
+"\n"
+" URL [http://llug.sep.bnl.gov/debian]:\n"
+msgstr ""
+" ディストリビューションソースä½ç½®ä¸€è¦§ã®æº–å‚™\n"
+"\n"
+" Debian ディストリビューションã®åŸºåº• URL を指定ã—ã¦ãã ã•ã„。\n"
+" èªè­˜ã§ãるアクセス方法: http file\n"
+"\n"
+" 例:\n"
+" file:/mnt/debian,\n"
+" ftp://ftp.debian.org/debian,\n"
+" http://ftp.de.debian.org/debian,\n"
+"\n"
+"\n"
+" URL [http://llug.sep.bnl.gov/debian]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The <emphasis>Sources</emphasis> setup starts by asking for the base of the "
+"Debian archive, defaulting to a HTTP mirror. Next it asks for the "
+"distribution to get."
+msgstr ""
+"<emphasis>ソース</emphasis>ã®æº–å‚™ã¯åŸºç¤Žã¨ãªã‚‹ Debian アーカイブã®è³ªå•ã‹ã‚‰å§‹ã¾"
+"ã‚Šã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯ HTTP ミラーã¨ãªã£ã¦ã„ã¾ã™ã€‚ãã®æ¬¡ã¯å–å¾—ã™ã‚‹ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ュー"
+"ションを質å•ã—ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Please give the distribution tag to get or a path to the\n"
+" package file ending in a /. The distribution\n"
+" tags are typically something like: stable unstable testing non-US\n"
+"\n"
+" Distribution [stable]:\n"
+msgstr ""
+" å–å¾—ã™ã‚‹ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューションã®ã‚¿ã‚°ã‚„パッケージファイルã¸ã®ãƒ‘スを\n"
+" / ã§çµ‚ãˆã‚‹å½¢å¼ã§æŒ‡å®šã—ã¦ãã ã•ã„。ディストリビューションã®ã‚¿ã‚°ã«ã¯\n"
+" 以下ã®ã‚ˆã†ãªã‚‚ã®ãŒã‚ã‚Šã¾ã™: stable unstable testing non-US\n"
+"\n"
+" ディストリビューション [stable]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The distribution refers to the Debian version in the archive, "
+"<emphasis>stable</emphasis> refers to the latest released version and "
+"<emphasis>unstable</emphasis> refers to the developmental version. "
+"<emphasis>non-US</emphasis> is only available on some mirrors and refers to "
+"packages that contain encryption technology or other things that cannot be "
+"exported from the United States. Importing these packages into the US is "
+"legal however."
+msgstr ""
+"ディストリビューションã¯ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–中㮠Debian ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’å‚ç…§ã—ã€"
+"<emphasis>stable</emphasis> ã¯æœ€æ–°ã®ãƒªãƒªãƒ¼ã‚¹ç‰ˆã‚’ã€<emphasis>unstable</"
+"emphasis> ã¯é–‹ç™ºç‰ˆã‚’å‚ç…§ã—ã¾ã™ã€‚<emphasis>non-US</emphasis> ã¯ä¸€éƒ¨ã®ãƒŸãƒ©ãƒ¼ã§"
+"ã®ã¿åˆ©ç”¨å¯èƒ½ã§ã€åˆè¡†å›½ã‹ã‚‰ã®è¼¸å‡ºãŒã§ããªã„æš—å·åŒ–技術ãã®ä»–ã®ã‚‚ã®ã‚’åŽéŒ²ã™ã‚‹"
+"パッケージをå‚ç…§ã—ã¾ã™ã€‚ãŸã ã—ã“ã†ã„ã£ãŸãƒ‘ッケージã®åˆè¡†å›½ã¸ã®è¼¸å…¥ã¯åˆæ³•ã§"
+"ã™ã€‚"
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Please give the components to get\n"
+" The components are typically something like: main contrib non-free\n"
+"\n"
+" Components [main contrib non-free]:\n"
+msgstr ""
+" å–å¾—ã™ã‚‹ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’指定ã—ã¦ãã ã•ã„\n"
+" コンãƒãƒ¼ãƒãƒ³ãƒˆã«ã¯ä»¥ä¸‹ã®ã‚ˆã†ãªã‚‚ã®ãŒã‚ã‚Šã¾ã™: main contrib non-free\n"
+"\n"
+" コンãƒãƒ¼ãƒãƒ³ãƒˆ [main contrib non-free]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The components list refers to the list of sub distributions to fetch. The "
+"distribution is split up based on software licenses, main being DFSG free "
+"packages while contrib and non-free contain things that have various "
+"restrictions placed on their use and distribution."
+msgstr ""
+"コンãƒãƒ¼ãƒãƒ³ãƒˆä¸€è¦§ã¯å–å¾—ã™ã‚‹ã‚µãƒ–ディストリビューションã®ä¸€è¦§ã‚’å‚ç…§ã—ã¾ã™ã€‚ã“"
+"ã®ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューションã¯ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã‚’基ã«ã—ã¦åˆ†ã‘られã¦ã„ã¾"
+"ã™ã€‚main ã«ã‚ã‚‹ã®ã¯ DFSG フリーã®ãƒ‘ッケージã§ã™ãŒ contrib ã‚„ non-free ã«ã¯åˆ©"
+"用目的やé…布形態ã«æ§˜ã€…ãªåˆ¶é™ã‚’課ã›ã‚‰ã‚Œã¦ã„ã‚‹ã‚‚ã®ãŒåŽéŒ²ã•ã‚Œã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Any number of sources can be added, the setup script will continue to prompt "
+"until you have specified all that you want."
+msgstr ""
+"ソースã¯ã„ãらã§ã‚‚追加ã§ãã¾ã™ã€‚準備スクリプトã¯å¿…è¦ãªã‚½ãƒ¼ã‚¹ã‚’å…¨ã¦æŒ‡å®šã™ã‚‹ã¾"
+"ã§èžã続ã‘ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Before starting to use <command>dselect</command> it is necessary to update "
+"the available list by selecting [U]pdate from the menu. This is a superset "
+"of <literal>apt-get update</literal> that makes the fetched information "
+"available to <command>dselect</command>. [U]pdate must be performed even if "
+"<literal>apt-get update</literal> has been run before."
+msgstr ""
+"<command>dselect</command> を使ã†å‰ã«ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‹ã‚‰æ›´æ–°(u)ã‚’é¸æŠžã—ã¦åˆ©ç”¨å¯èƒ½ãª"
+"パッケージ一覧を更新ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ã“れ㯠<literal>apt-get update</"
+"literal> ã®ä¸Šä½é›†åˆã§ã€å–å¾—ã—ãŸæƒ…報を <command>dselect</command> ã‹ã‚‰åˆ©ç”¨ã§ã"
+"るよã†ã«ã—ã¾ã™ã€‚以å‰ã« <literal>apt-get update</literal> を実行ã—ã¦ã„ã¦ã‚‚æ›´æ–°"
+"(u)を実行ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"You can then go on and make your selections using [S]elect and then perform "
+"the installation using [I]nstall. When using the APT method the [C]onfig and "
+"[R]emove commands have no meaning, the [I]nstall command performs both of "
+"them together."
+msgstr ""
+"ãã®å¾Œã¯é¸æŠž(s)を使ã£ã¦é¸æŠžã—ã€å°Žå…¥(i)を使ã£ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¾ã™ã€‚APT メソッ"
+"ドを使ã£ã¦ã„ã‚‹å ´åˆã¯è¨­å®š(c)や削除(r)コマンドã«æ„味ã¯ãªãã€å°Žå…¥(i)コマンドãŒã"
+"ã®ä¸¡æ–¹ã‚’実行ã—ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"By default APT will automatically remove the package (.deb) files once they "
+"have been successfully installed. To change this behavior place "
+"<literal>Dselect::clean \"prompt\";</literal> in /etc/apt/apt.conf."
+msgstr ""
+"デフォルト㧠APT ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«æˆåŠŸã—ãŸãƒ‘ッケージ (.deb) ファイルを自動的ã«"
+"削除ã—ã¾ã™ã€‚ã“ã®æŒ™å‹•ã‚’変更ã™ã‚‹ã«ã¯ /etc/apt/apt.conf 中㫠<literal>Dselect::"
+"clean \"prompt\";</literal> ã¨è¨˜è¿°ã—ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "The Interface"
+msgstr "インターフェース"
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk
+msgid ""
+"The <command>dselect</command> method actually is a set of wrapper scripts "
+"to <command>apt-get</command>. The method actually provides more "
+"functionality than is present in <command>apt-get</command> alone."
+msgstr ""
+"<command>dselect</command> メソッドã¯å®Ÿéš›ã« <command>apt-get</command> ã«å¯¾ã™"
+"るラッパースクリプト群ã§ã™ã€‚ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã§ã¯ <command>apt-get</command> å˜ä½“"
+"ã«å­˜åœ¨ã—ã¦ã„る以上ã®æ©Ÿèƒ½ã‚’実際ã«æä¾›ã—ã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Both that APT <command>dselect</command> method and <command>apt-get</"
+"command> share the same interface. It is a simple system that generally "
+"tells you what it will do and then goes and does it. <placeholder type="
+"\"footnote\" id=\"0\"/> After printing out a summary of what will happen APT "
+"then will print out some informative status messages so that you can "
+"estimate how far along it is and how much is left to do."
+msgstr ""
+"APT ã® <command>dselect</command> メソッド㨠<command>apt-get</command> ã¯å…±"
+"ã«åŒä¸€ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã‚’共有ã—ã¦ã„ã¾ã™ã€‚通常ã¯è¡Œã†å†…容を告知ã—ã¦å®Ÿè¡Œã™ã‚‹ç°¡"
+"å˜ãªã‚·ã‚¹ãƒ†ãƒ ã§ã™ã€‚<placeholder type=\"footnote\" id=\"0\"/> 実行内容ã®ã¾ã¨ã‚"
+"を告知ã—ãŸå¾Œ APT ãŒå‚考ã«ãªã‚‹çŠ¶æ…‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ã„ãらã‹è¡¨ç¤ºã™ã‚‹ãŸã‚ã€ã©ã‚Œãらã„"
+"進んã§ã„ã‚‹ã®ã‹ã€ã‚ã‚‹ã„ã¯æ®‹ã‚Šä½œæ¥­ãŒã©ã‚Œãらã„ã‚ã‚‹ã®ã‹è¦‹ç©ã‚‚ã‚‹ã“ã¨ãŒã§ãるよã†"
+"ã«ãªã£ã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Startup"
+msgstr "スタートアップ"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Before all operations except update, APT performs a number of actions to "
+"prepare its internal state. It also does some checks of the system's state. "
+"At any time these operations can be performed by running <literal>apt-get "
+"check</literal>."
+msgstr ""
+"update 以外ã®ã‚らゆるæ“作ã§ã€APT ã¯ã„ãã¤ã‹å‡¦ç†ã‚’è¡Œã„内部状態を準備ã—ã¾ã™ã€‚ã¾"
+"ãŸã€ã‚·ã‚¹ãƒ†ãƒ ã®çŠ¶æ…‹ã«ã¤ã„ã¦ã‚‚ã„ãらã‹ç¢ºèªã—ã¾ã™ã€‚ã“ã®å‡¦ç†ã¯ <literal>apt-get "
+"check</literal> ã«ã‚ˆã‚Šã„ã¤ã§ã‚‚実行ã§ãã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+"# apt-get check\n"
+"パッケージリストを読ã¿è¾¼ã‚“ã§ã„ã¾ã™... 完了\n"
+"ä¾å­˜é–¢ä¿‚ツリーを作æˆã—ã¦ã„ã¾ã™\n"
+"状態情報を読ã¿å–ã£ã¦ã„ã¾ã™... 完了\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The first thing it does is read all the package files into memory. APT uses "
+"a caching scheme so this operation will be faster the second time it is run. "
+"If some of the package files are not found then they will be ignored and a "
+"warning will be printed when apt-get exits."
+msgstr ""
+"ã“ã‚ŒãŒæœ€åˆã«è¡Œã†ã®ã¯ãƒ‘ッケージファイルを全ã¦ãƒ¡ãƒ¢ãƒªã«èª­ã¿è¾¼ã‚€ã“ã¨ã§ã™ã€‚APT ã¯"
+"キャッシュを使ã†ã‚ˆã†ã«ãªã£ã¦ã„ã‚‹ã®ã§ã€ã“ã®å‡¦ç†ã¯æ¬¡ã«å®Ÿè¡Œã™ã‚‹ã¨ãã«ã¯æ—©ã終ã‚"
+"ã‚Šã¾ã™ã€‚見ã¤ã‘られãªã„パッケージファイルãŒã‚ã‚‹å ´åˆã¯ç„¡è¦–ã•ã‚Œã€apt-get 終了時"
+"ã«æ³¨æ„を表示ã—ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The final operation performs a detailed analysis of the system's "
+"dependencies. It checks every dependency of every installed or unpacked "
+"package and considers if it is OK. Should this find a problem then a report "
+"will be printed out and <command>apt-get</command> will refuse to run."
+msgstr ""
+"最後ã®å‡¦ç†ã¯ã‚·ã‚¹ãƒ†ãƒ ã®ä¾å­˜é–¢ä¿‚ã®è©³ç´°ãªåˆ†æžã§ã™ã€‚インストールã€ã‚ã‚‹ã„ã¯å±•é–‹ã•"
+"ã‚ŒãŸãƒ‘ッケージã®ä¾å­˜é–¢ä¿‚ã‚’å…¨ã¦ç¢ºèªã—ã€å•é¡Œãªã„ã‹åˆ¤æ–­ã—ã¾ã™ã€‚å•é¡ŒãŒè¦‹ã¤ã‹ã£ãŸ"
+"å ´åˆã¯å ±å‘Šã—ã€<command>apt-get</command> ã®å®Ÿè¡Œã‚’æ‹’å¦ã—ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+"You might want to run 'apt --fix-broken install' to correct these.\n"
+"Sorry, but the following packages have unmet dependencies:\n"
+" 9fonts: Depends: xlib6g but it is not installed\n"
+" uucp: Depends: mailx but it is not installed\n"
+" blast: Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" adduser: Depends: perl-base but it is not installed\n"
+" aumix: Depends: libgpmg1 but it is not installed\n"
+" debiandoc-sgml: Depends: sgml-base but it is not installed\n"
+" bash-builtins: Depends: bash (&gt;= 2.01) but 2.0-3 is installed\n"
+" cthugha: Depends: svgalibg1 but it is not installed\n"
+" Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" libreadlineg2: Conflicts:libreadline2 (&lt;&lt; 2.1-2.1)\n"
+msgstr ""
+"# apt-get check\n"
+"パッケージリストを読ã¿è¾¼ã‚“ã§ã„ã¾ã™... 完了\n"
+"ä¾å­˜é–¢ä¿‚ツリーを作æˆã—ã¦ã„ã¾ã™\n"
+"状態情報を読ã¿å–ã£ã¦ã„ã¾ã™... 完了\n"
+"ã“れらを直ã™ãŸã‚ã«ã¯ 'apt --fix-broken install' を実行ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。\n"
+"下ã®ãƒ‘ッケージã«ã¯æº€ãŸã›ãªã„ä¾å­˜é–¢ä¿‚ãŒã‚ã‚Šã¾ã™:\n"
+" 9fonts: ä¾å­˜: xlib6g ã—ã‹ã—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
+" uucp: ä¾å­˜: mailx ã—ã‹ã—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
+" blast: ä¾å­˜: xlib6g (&gt;= 3.3-5) ã—ã‹ã—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
+" adduser: ä¾å­˜: perl-base ã—ã‹ã—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
+" aumix: ä¾å­˜: libgpmg1 ã—ã‹ã—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
+" debiandoc-sgml: ä¾å­˜: sgml-base ã—ã‹ã—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
+" bash-builtins: ä¾å­˜: bash (&gt;= 2.01) ã—ã‹ã—ã€2.0-3 ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã™\n"
+" cthugha: ä¾å­˜: svgalibg1 ã—ã‹ã—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
+" ä¾å­˜: xlib6g (&gt;= 3.3-5) ã—ã‹ã—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
+" libreadlineg2: 競åˆ:libreadline2 (&lt;&lt; 2.1-2.1)\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"In this example the system has many problems, including a serious problem "
+"with libreadlineg2. For each package that has unmet dependencies a line is "
+"printed out indicating the package with the problem and the dependencies "
+"that are unmet. A short explanation of why the package has a dependency "
+"problem is also included."
+msgstr ""
+"ã“ã®ä¾‹ã§ã¯ã‚·ã‚¹ãƒ†ãƒ ã« libreadlineg2 ã«é–¢ã™ã‚‹é‡å¤§ãªå•é¡Œã‚’å«ã‚ã¦å¤šæ•°ã®å•é¡ŒãŒã‚ã‚Š"
+"ã¾ã™ã€‚未解決ã®ä¾å­˜é–¢ä¿‚ãŒã‚ã‚Œã°å„パッケージã”ã¨ã«ãã®ãƒ‘ッケージã«å•é¡ŒãŒã‚ã‚‹ã“"
+"ã¨ã‚’示ã—ã€ä½µã›ã¦æœªè§£æ±ºã®ä¾å­˜é–¢ä¿‚ã‚’1è¡Œã§å‡ºåŠ›ã—ã¾ã™ã€‚ãã®ãƒ‘ッケージã®ä¾å­˜å•é¡Œã®"
+"ç†ç”±ã«ã¤ã„ã¦ç°¡æ½”ãªèª¬æ˜Žã‚‚æ·»ãˆã‚‰ã‚Œã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><para><footnote><para>
+#: guide.dbk
+msgid ""
+"APT however considers all known dependencies and attempts to prevent broken "
+"packages"
+msgstr ""
+"APT ã¯ãã‚Œã§ã‚‚既知ã®ä¾å­˜é–¢ä¿‚ã‚’å…¨ã¦æ¤œè¨Žã—ã€ãƒ‘ッケージãŒå£Šã‚ŒãŸçŠ¶æ…‹ã¨ãªã‚‹ã“ã¨ã‚’"
+"回é¿ã—よã†ã¨ã—ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"There are two ways a system can get into a broken state like this. The first "
+"is caused by <command>dpkg</command> missing some subtle relationships "
+"between packages when performing upgrades. <placeholder type=\"footnote\" id="
+"\"0\"/>. The second is if a package installation fails during an operation. "
+"In this situation a package may have been unpacked without its dependents "
+"being installed."
+msgstr ""
+"システムãŒã“ã®ã‚ˆã†ã«å£Šã‚ŒãŸçŠ¶æ…‹ã¨ãªã‚‹åŽŸå› ã¯2ã¤ã‚ã‚Šã¾ã™ã€‚1ã¤ç›®ã¯ã‚¢ãƒƒãƒ—グレード"
+"実行時ã«ãƒ‘ッケージ間ã®é›£è§£ãªä¾å­˜é–¢ä¿‚ã‚’ <command>dpkg</command> ãŒã„ãらã‹æ¬ ã„"
+"ã¦ã„ã‚‹ã“ã¨ã«ã‚ˆã‚Šã¾ã™ã€‚<placeholder type=\"footnote\" id=\"0\"/>2ã¤ç›®ã¯ãƒ‘ッ"
+"ケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«å‡¦ç†ä¸­ã«ä½•ã‹å¤±æ•—ã—ãŸå ´åˆã§ã™ã€‚ã“ã®çŠ¶æ³ã§ã¯ä¾å­˜ã™ã‚‹ãƒ‘ッ"
+"ケージãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œãªã„ã¾ã¾ãƒ‘ッケージãŒå±•é–‹ã•ã‚Œã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The second situation is much less serious than the first because APT places "
+"certain constraints on the order that packages are installed. In both cases "
+"supplying the <literal>-f</literal> option to <command>apt-get</command> "
+"will cause APT to deduce a possible solution to the problem and then "
+"continue on. The APT <command>dselect</command> method always supplies the "
+"<literal>-f</literal> option to allow for easy continuation of failed "
+"maintainer scripts."
+msgstr ""
+"APT ãŒãƒ‘ッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«é †åºã«ç‰¹å®šã®åˆ¶ç´„を設ã‘ã¦ã„ã‚‹ã“ã¨ã«ã‚ˆã‚Š2ã¤ç›®ã®çŠ¶"
+"æ³ã¯1ã¤ç›®ã®çŠ¶æ³ã¨æ¯”ã¹ã¦é‡å¤§ã§ã™ã‚‰ãªããªã‚Šã¾ã™ã€‚ã©ã¡ã‚‰ã®å ´åˆã§ã‚‚ <command>apt-"
+"get</command> ã« <literal>-f</literal> オプションを指定ã™ã‚‹ã“ã¨ã§ APT ã¯è§£æ±º"
+"方法を推測ã—ã€å‡¦ç†ã‚’続ã‘ã¾ã™ã€‚APT <command>dselect</command> メソッドã§ã¯å¸¸"
+"ã« <literal>-f</literal> オプションを有効ã«ã—ã¦ã€ãƒ¡ãƒ³ãƒ†ãƒŠã‚¹ã‚¯ãƒªãƒ—トã§ã®å•é¡ŒãŒ"
+"èµ·ããŸå ´åˆã§ã‚‚ç°¡å˜ã«å‡¦ç†ã‚’継続ã§ãるよã†ã«ã—ã¦ã„ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"However, if the <literal>-f</literal> option is used to correct a seriously "
+"broken system caused by the first case then it is possible that it will "
+"either fail immediately or the installation sequence will fail. In either "
+"case it is necessary to manually use dpkg (possibly with forcing options) to "
+"correct the situation enough to allow APT to proceed."
+msgstr ""
+"ã—ã‹ã—ã€1ã¤ç›®ã®çŠ¶æ³ã«ã‚ˆã‚Šé‡å¤§ãªå£Šã‚Œæ–¹ã«ãªã£ã¦ã„るシステムã®ä¿®æ­£ã« <literal>-"
+"f</literal> オプションを使ã£ãŸå ´åˆã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«ã™ãã«å¤±æ•—ã€ã‚ã‚‹ã„ã¯ã‚¤ãƒ³ã‚¹"
+"トール順åºãŒãŠã‹ã—ããªã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ã©ã¡ã‚‰ã®å ´åˆã‚‚ã€APT ãŒå‡¦ç†ã‚’å分ã«"
+"進ã‚られるã¨ã“ã‚ã¾ã§æ‰‹ä½œæ¥­ã«ã‚ˆã‚Š dpkg を使ã£ã¦ (æらã強制ã™ã‚‹ã‚ªãƒ—ションを指"
+"定ã—ã¦) 状æ³ã‚’修正ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "The Status Report"
+msgstr "状態レãƒãƒ¼ãƒˆ"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Before proceeding <command>apt-get</command> will present a report on what "
+"will happen. Generally the report reflects the type of operation being "
+"performed but there are several common elements. In all cases the lists "
+"reflect the final state of things, taking into account the <literal>-f</"
+"literal> option and any other relevant activities to the command being "
+"executed."
+msgstr ""
+"処ç†ã‚’続ã‘ã‚‹å‰ã« <command>apt-get</command> ã¯å®Ÿè¡Œã—よã†ã¨ã™ã‚‹å‡¦ç†ã«ã¤ã„ã¦å ±"
+"å‘Šã—ã¾ã™ã€‚通常ã“ã®å ±å‘Šã¯å®Ÿè¡Œã•ã‚Œã‚‹æ“作ã®ç¨®é¡žã‚’å映ã—ãŸã‚‚ã®ã«ãªã‚Šã¾ã™ãŒã€ä¸€èˆ¬"
+"çš„è¦ç´ ãŒã„ãã¤ã‹ã‚ã‚Šã¾ã™ã€‚ã©ã®å ´åˆã§ã‚‚ã“ã®å‡¦ç†ä¸€è¦§ã¯æœ€çµ‚çš„ãªçŠ¶æ…‹ã‚’示ã—ã€"
+"<literal>-f</literal> オプションãã®ä»–ã®å®Ÿè¡Œã•ã‚Œã‚‹ã‚³ãƒžãƒ³ãƒ‰ã«é–¢é€£ã™ã‚‹å‹•ä½œã‚’考"
+"æ…®ã—ãŸã‚‚ã®ã¨ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Extra Package list"
+msgstr "追加パッケージリスト"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following extra packages will be installed:\n"
+" libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl\n"
+" mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base\n"
+" bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy\n"
+" squake pgp-i python-base debmake ldso perl libreadlineg2\n"
+" ssh\n"
+msgstr ""
+"以下ã®ç‰¹åˆ¥ãƒ‘ッケージãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¾ã™:\n"
+" libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl\n"
+" mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base\n"
+" bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy\n"
+" squake pgp-i python-base debmake ldso perl libreadlineg2\n"
+" ssh\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The Extra Package list shows all of the packages that will be installed or "
+"upgraded in excess of the ones mentioned on the command line. It is only "
+"generated for an <literal>install</literal> command. The listed packages are "
+"often the result of an Auto Install."
+msgstr ""
+"追加パッケージリストã¯ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã§æŒ‡ç¤ºã—ãŸä»¥å¤–ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚„アップグ"
+"レードã•ã‚Œã‚‹ãƒ‘ッケージを全ã¦è¡¨ç¤ºã—ã¾ã™ã€‚ã“れ㯠<literal>install</literal> コ"
+"マンドã®å ´åˆã«ã®ã¿ç”Ÿæˆã•ã‚Œã¾ã™ã€‚一覧ã«æŒ™ã’られるパッケージã¯è‡ªå‹•ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«"
+"ã®çµæžœã«ã‚ˆã‚‹å ´åˆãŒå¤šããªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Packages to Remove"
+msgstr "削除ã™ã‚‹ãƒ‘ッケージ"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following packages will be REMOVED:\n"
+" xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix\n"
+" xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel\n"
+" xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid\n"
+" nas xpilot xfig\n"
+msgstr ""
+"以下ã®ãƒ‘ッケージã¯ã€Œå‰Šé™¤ã€ã•ã‚Œã¾ã™:\n"
+"The following packages will be REMOVED:\n"
+" xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix\n"
+" xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel\n"
+" xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid\n"
+" nas xpilot xfig\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The Packages to Remove list shows all of the packages that will be removed "
+"from the system. It can be shown for any of the operations and should be "
+"given a careful inspection to ensure nothing important is to be taken off. "
+"The <literal>-f</literal> option is especially good at generating packages "
+"to remove so extreme care should be used in that case. The list may contain "
+"packages that are going to be removed because they are only partially "
+"installed, possibly due to an aborted installation."
+msgstr ""
+"削除ã™ã‚‹ãƒ‘ッケージリストã¯ã‚·ã‚¹ãƒ†ãƒ ã‹ã‚‰å‰Šé™¤ã•ã‚Œã‚‹ãƒ‘ッケージを全ã¦è¡¨ç¤ºã—ã¾ã™ã€‚"
+"ã“ã‚Œã¯ã©ã®æ“作ã§ã‚‚èµ·ãã‚‹ã‚‚ã®ã§ã€é‡è¦ãªã‚‚ã®ãŒå¤±ã‚れるã“ã¨ã®ãªã„よã†ã«æ³¨æ„æ·±ã"
+"確èªã™ã¹ãã§ã™ã€‚<literal>-f</literal> オプションを使ã£ãŸå ´åˆã¯ãƒ‘ッケージã®å‰Š"
+"除を伴ã†ã“ã¨ãŒç‰¹ã«å¤šãã€ãã®ãŸã‚ã“ã®ã‚ªãƒ—ションを指定ã—ãŸå ´åˆã¯ç‰¹ã«æ³¨æ„を払ã†"
+"よã†ã«ã—ã¦ãã ã•ã„。ã“ã®ä¸€è¦§ã«ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã®ä¸­æ­¢ç­‰ã«ã‚ˆã‚Šä¸€éƒ¨ã ã‘ãŒã‚¤ãƒ³ã‚¹"
+"トールã•ã‚Œã¦ã„ã‚‹ãŸã‚ã«å‰Šé™¤ã•ã‚Œã‚‹ãƒ‘ッケージãŒå«ã¾ã‚Œã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The New Packages list"
+msgstr "æ–°è¦ãƒ‘ッケージリスト"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following NEW packages will installed:\n"
+" zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base\n"
+msgstr ""
+"以下ã®ãƒ‘ッケージãŒæ–°ãŸã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¾ã™:\n"
+" zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The New Packages list is simply a reminder of what will happen. The packages "
+"listed are not presently installed in the system but will be when APT is "
+"done."
+msgstr ""
+"æ–°è¦ãƒ‘ッケージリストã§ã¯å˜ç´”ã«ã“ã‚Œã‹ã‚‰èµ·ãã‚‹ã“ã¨ã‚’å†é€šçŸ¥ã—ã¾ã™ã€‚ã“ã®ãƒ‘ッケー"
+"ジ一覧ã¯ç¾åœ¨ã‚·ã‚¹ãƒ†ãƒ ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ãŠã‚‰ãšã€APT 処ç†å¾Œã«ã¯å­˜åœ¨ã™ã‚‹ã“ã¨ã«"
+"ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Kept Back list"
+msgstr "一時固定リスト"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following packages have been kept back\n"
+" compface man-db tetex-base msql libpaper svgalib1\n"
+" gs snmp arena lynx xpat2 groff xscreensaver\n"
+msgstr ""
+"以下ã®ãƒ‘ッケージã¯ä¿ç•™ã•ã‚Œã¾ã™\n"
+" compface man-db tetex-base msql libpaper svgalib1\n"
+" gs snmp arena lynx xpat2 groff xscreensaver\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Whenever the whole system is being upgraded there is the possibility that "
+"new versions of packages cannot be installed because they require new things "
+"or conflict with already installed things. In this case the package will "
+"appear in the Kept Back list. The best way to convince packages listed there "
+"to install is with <literal>apt-get install</literal> or by using "
+"<command>dselect</command> to resolve their problems."
+msgstr ""
+"システム全体をアップグレードã™ã‚‹å ´åˆã€æ–°ã—ã„パッケージãŒå¿…è¦ã§ã‚ã£ãŸã‚Šæ—¢ã«ã‚¤"
+"ンストールã•ã‚Œã¦ã„るパッケージã¨ç«¶åˆã™ã‚‹ãŸã‚ã«ãƒ‘ッケージã®æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒ"
+"インストールã§ããªã„ã¨ã„ã†ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ã“ã®å ´åˆã€ãã®ãƒ‘ッケージã¯ä¸€æ™‚固定"
+"リストã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ã“ã®ä¸€è¦§ã«æŒ™ã’られãŸãƒ‘ッケージをインストールã™ã‚‹æœ€å–„ã®"
+"方法㯠<literal>apt-get install</literal> ã¾ãŸã¯ <command>dselect</command> "
+"を使ã£ã¦ãã®å•é¡Œã‚’解決ã™ã‚‹ã“ã¨ã§ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "Held Packages warning"
+msgstr "ä¿ç•™ãƒ‘ッケージã®è­¦å‘Š"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following held packages will be changed:\n"
+" cvs\n"
+msgstr ""
+"以下ã®å¤‰æ›´ç¦æ­¢ãƒ‘ッケージã¯å¤‰æ›´ã•ã‚Œã¾ã™:\n"
+" cvs\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Sometimes you can ask APT to install a package that is on hold, in such a "
+"case it prints out a warning that the held package is going to be changed. "
+"This should only happen during dist-upgrade or install."
+msgstr ""
+"ä¿ç•™ã¨ãªã£ã¦ã„るパッケージをインストールã™ã‚‹ã‚ˆã†ã« APT ã«æŒ‡ç¤ºã™ã‚‹ã“ã¨ã‚‚ã§ãã¾"
+"ã™ã€‚ãã®éš›ã€ä¿ç•™ã¨ãªã£ã¦ã„るパッケージを変更ã™ã‚‹ã“ã¨ã‚’警告ã—ã¾ã™ã€‚ã“れ㯠"
+"dist-upgrade ã¾ãŸã¯ install を指示ã—ãŸã¨ãã«ã—ã‹èµ·ããªã„ã¯ãšã§ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "Final summary"
+msgstr "最後ã®ã¾ã¨ã‚"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Finally, APT will print out a summary of all the changes that will occur."
+msgstr "最後ã«ã€APT ã¯ç™ºç”Ÿã™ã‚‹å…¨å¤‰æ›´ã®ã¾ã¨ã‚を表示ã—ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"206 packages upgraded, 8 newly installed, 23 to remove and 51 not upgraded.\n"
+"12 packages not fully installed or removed.\n"
+"Need to get 65.7M/66.7M of archives. After unpacking 26.5M will be used.\n"
+msgstr ""
+"アップグレード: 206 個ã€æ–°è¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«: 8 個ã€å‰Šé™¤: 23 個ã€ä¿ç•™: 51 個。\n"
+"12 個ã®ãƒ‘ッケージãŒå®Œå…¨ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¾ãŸã¯å‰Šé™¤ã•ã‚Œã¦ã„ã¾ã›ã‚“。\n"
+"66.7MB 中 65.7MB ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã‚’å–å¾—ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚\n"
+"ã“ã®æ“作後ã«è¿½åŠ ã§ 26.5MB ã®ãƒ‡ã‚£ã‚¹ã‚¯å®¹é‡ãŒæ¶ˆè²»ã•ã‚Œã¾ã™ã€‚\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The first line of the summary simply is a reduced version of all of the "
+"lists and includes the number of upgrades - that is packages already "
+"installed that have new versions available. The second line indicates the "
+"number of poorly configured packages, possibly the result of an aborted "
+"installation. The final line shows the space requirements that the "
+"installation needs. The first pair of numbers refer to the size of the "
+"archive files. The first number indicates the number of bytes that must be "
+"fetched from remote locations and the second indicates the total size of all "
+"the archives required. The next number indicates the size difference between "
+"the presently installed packages and the newly installed packages. It is "
+"roughly equivalent to the space required in /usr after everything is done. "
+"If a large number of packages are being removed then the value may indicate "
+"the amount of space that will be freed."
+msgstr ""
+"ã¾ã¨ã‚ã®1行目ã¯å˜ç´”ã«ä¸€è¦§ã‚’å…¨ã¦çŸ­ãã¾ã¨ã‚ãŸã‚‚ã®ã§ã€ã‚¢ãƒƒãƒ—グレードã•ã‚Œã‚‹ (æ—¢ã«"
+"インストールã•ã‚Œã¦ã„ã¦æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨å¯èƒ½ãª) パッケージã®æ•°ã«ã¤ã„ã¦ã‚‚"
+"示ã—ã¾ã™ã€‚2行目ã¯è¨­å®šãŒå®Œäº†ã—ã¦ã„ãªã„パッケージã®æ•°ã‚’示ã—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’中止"
+"ã—ãŸå ´åˆã«ã“ã‚Œã«é›†è¨ˆã•ã‚Œã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚最終行ã¯ãã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã§å¿…è¦ã¨ãª"
+"る容é‡ã®è¦ä»¶ã‚’示ã—ã¾ã™ã€‚最åˆã®æ•°å€¤ã®çµ„ã¯ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ファイルã®ã‚µã‚¤ã‚ºã‚’示ã—ã¾"
+"ã™ã€‚ã“ã®1ã¤ç›®ã®æ•°å€¤ã¯ãƒªãƒ¢ãƒ¼ãƒˆã‹ã‚‰å–å¾—ã—ã¦ãã‚‹å¿…è¦ã®ã‚ã‚‹ãƒã‚¤ãƒˆæ•°ã€2ã¤ç›®ã¯å¿…è¦"
+"ã¨ãªã‚‹å…¨ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã®åˆè¨ˆã‚µã‚¤ã‚ºã‚’示ã—ã¾ã™ã€‚次ã®æ•°å€¤ã¯ç¾åœ¨ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„"
+"るパッケージã¨æ–°ã—ãインストールã—ãŸãƒ‘ッケージã®ã‚µã‚¤ã‚ºã®é•ã„を示ã—ã¾ã™ã€‚ã“ã‚Œ"
+"ã¯å‡¦ç†ãŒå…¨ã¦çµ‚ã‚ã£ãŸå¾Œã« /usr ã§æ¶ˆè²»ã•ã‚Œã‚‹å®¹é‡ã«ã»ã¼ç›¸å½“ã—ã¾ã™ã€‚パッケージを"
+"大é‡ã«å‰Šé™¤ã™ã‚‹å ´åˆã¯è§£æ”¾ã•ã‚Œã‚‹å®¹é‡ã‚’示ã™ã“ã¨ã‚‚ã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Some other reports can be generated by using the -u option to show packages "
+"to upgrade, they are similar to the previous examples."
+msgstr ""
+"ä»–ã®å ±å‘Šã¨ã—ã¦ã€-u オプションを使ã†ã¨ã‚¢ãƒƒãƒ—グレードã•ã‚Œã‚‹ãƒ‘ッケージを表示ã—ã¾"
+"ã™ã€‚ã“ã‚Œã¯å‰ã«ç¤ºã—ãŸä¾‹ã¨ä¼¼ãŸã‚‚ã®ã§ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "The Status Display"
+msgstr "状態表示"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"During the download of archives and package files APT prints out a series of "
+"status messages."
+msgstr ""
+"アーカイブやパッケージファイルã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­ã€APT ã¯çŠ¶æ…‹ã‚’示ã™ä¸€é€£ã®ãƒ¡ãƒƒ"
+"セージを表示ã—ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+"11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
+msgstr ""
+"# apt-get update\n"
+"å–å¾—:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"å–å¾—:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"ヒット http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+"å–å¾—:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"å–å¾—:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+"11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The lines starting with <emphasis>Get</emphasis> are printed out when APT "
+"begins to fetch a file while the last line indicates the progress of the "
+"download. The first percent value on the progress line indicates the total "
+"percent done of all files. Unfortunately since the size of the Package files "
+"is unknown <literal>apt-get update</literal> estimates the percent done "
+"which causes some inaccuracies."
+msgstr ""
+"APT ãŒãƒ•ã‚¡ã‚¤ãƒ«ã®å–得を開始ã™ã‚‹ã¨ã€æœ€çµ‚è¡Œã§ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã®é€²æ—状æ³ã‚’示ã—ã¤ã¤"
+"<emphasis>å–å¾—</emphasis>ã§å§‹ã¾ã‚‹è¡ŒãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚進æ—ã®æœ€åˆã®ãƒ‘ーセント値ã¯"
+"全ファイルã«å¯¾ã™ã‚‹å–得済ã¿ã®å…¨ä½“ã§ã®å‰²åˆã‚’示ã—ã¾ã™ã€‚残念ãªãŒã‚‰ãƒ‘ッケージファ"
+"イルã®ã‚µã‚¤ã‚ºã¯ä¸æ˜Žãªã®ã§ <literal>apt-get update</literal> ã¯ä¸æ­£ç¢ºãªäºˆæ¸¬ã‚’è¡Œ"
+"ã†å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The next section of the status line is repeated once for each download "
+"thread and indicates the operation being performed and some useful "
+"information about what is happening. Sometimes this section will simply read "
+"<emphasis>Forking</emphasis> which means the OS is loading the download "
+"module. The first word after the [ is the fetch number as shown on the "
+"history lines. The next word is the short form name of the object being "
+"downloaded. For archives it will contain the name of the package that is "
+"being fetched."
+msgstr ""
+"状態を示ã™è¡Œã®æ¬¡ã®ç¯€ã¯å„ダウンロードスレッドã”ã¨ã«1度ãšã¤ç¹°ã‚Šè¿”ã•ã‚Œã€é€²è¡Œä¸­ã®"
+"æ“作や処ç†ã«ã¤ã„ã¦ã®æœ‰ç”¨ãªæƒ…報をã„ãらã‹ç¤ºã—ã¾ã™ã€‚ã“ã®ç¯€ã¯å˜ç´”ã« "
+"<emphasis>Forking</emphasis> ã¨ãªã£ã¦ã„ã‚‹ã“ã¨ã‚‚ã‚ã‚Šã€ãã®å ´åˆã¯ OS ãŒãƒ€ã‚¦ãƒ³"
+"ロード用ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’読ã¿è¾¼ã‚“ã§ã„ã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚[ ã®å¾Œã®æœ€åˆã®èªžã¯å±¥æ­´ã«"
+"表示ã•ã‚Œã¦ã„ã‚‹å–得番å·ã§ã™ã€‚ãã®æ¬¡ã®èªžã¯ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰å¯¾è±¡ã®åå‰ã®çŸ­ç¸®å½¢ã§ã™ã€‚"
+"アーカイブã®å ´åˆã¯å–得中ã®ãƒ‘ッケージã®åå‰ãŒå…¥ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Inside of the single quote is an informative string indicating the progress "
+"of the negotiation phase of the download. Typically it progresses from "
+"<emphasis>Connecting</emphasis> to <emphasis>Waiting for file</emphasis> to "
+"<emphasis>Downloading</emphasis> or <emphasis>Resuming</emphasis>. The final "
+"value is the number of bytes downloaded from the remote site. Once the "
+"download begins this is represented as <literal>102/10.2k</literal> "
+"indicating that 102 bytes have been fetched and 10.2 kilobytes is expected. "
+"The total size is always shown in 4 figure notation to preserve space. After "
+"the size display is a percent meter for the file itself. The second last "
+"element is the instantaneous average speed. This values is updated every 5 "
+"seconds and reflects the rate of data transfer for that period. Finally is "
+"shown the estimated transfer time. This is updated regularly and reflects "
+"the time to complete everything at the shown transfer rate."
+msgstr ""
+"å˜ä¸€å¼•ç”¨ç¬¦å†…ã¯ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã®ã‚„ã‚Šã¨ã‚Šã®é€²æ—を示ã™æœ‰ç›Šãªæ–‡å­—列ã§ã™ã€‚標準的ã«ã¯"
+"<emphasis>...ã¸æŽ¥ç¶šã—ã¦ã„ã¾ã™</emphasis>ã‹ã‚‰<emphasis>ファイルを待ã£ã¦ã„ã¾ã™"
+"</emphasis>ã¸ã€ãã‚Œã‹ã‚‰<emphasis>...をダウンロードã—ã¦ã„ã¾ã™</emphasis>ã¾ãŸã¯"
+"<emphasis>...ã‚’å†é–‹ã—ã¦ã„ã¾ã™</emphasis>ã¸ã¨é€²ã¿ã¾ã™ã€‚最後ã®å€¤ã¯ãƒªãƒ¢ãƒ¼ãƒˆã‚µã‚¤"
+"トã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ãŸãƒã‚¤ãƒˆæ•°ã§ã™ã€‚ダウンロードãŒå§‹ã¾ã‚‹ã¨ã“れ㯠"
+"<literal>102/10.2k</literal> ã®ã‚ˆã†ã«è¡¨ç¤ºã•ã‚Œã€ã“ã®å ´åˆ10.2キロãƒã‚¤ãƒˆã®ã†ã¡"
+"102ãƒã‚¤ãƒˆãŒå–得済ã¿ã§ã‚ã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚åˆè¨ˆã‚µã‚¤ã‚ºã¯å¸¸ã«4ケタã§è¡¨ç¤ºã•ã‚Œã€è¡¨"
+"示空間をä¿ã¤ã‚ˆã†ã«ãªã£ã¦ã„ã¾ã™ã€‚サイズ表示ã®å¾Œã¯ãã®ãƒ•ã‚¡ã‚¤ãƒ«è‡ªä½“ã®é€²æ—状æ³ã‚’"
+"百分率ã§ç¤ºã—ãŸã‚‚ã®ã§ã™ã€‚ãã®2ã¤å¾Œã¯çž¬é–“çš„ãªå¹³å‡é€Ÿåº¦ã§ã™ã€‚ã“ã®å€¤ã¯5秒ã”ã¨ã«æ›´"
+"æ–°ã•ã‚Œã€ãã®é–“ã®ãƒ‡ãƒ¼ã‚¿è»¢é€é€Ÿåº¦ã‚’å映ã—ã¾ã™ã€‚最後ã¯æŽ¨å®šè»¢é€æ™‚間を表示ã—ã¦ã„ã¾"
+"ã™ã€‚ã“ã‚Œã¯å®šæœŸçš„ã«æ›´æ–°ã•ã‚Œã€è¡¨ç¤ºã—ã¦ã„る転é€é€Ÿåº¦ã§å…¨ã¦å®Œäº†ã™ã‚‹æ™‚間を表示ã—ã¾"
+"ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The status display updates every half second to provide a constant feedback "
+"on the download progress while the Get lines scroll back whenever a new file "
+"is started. Since the status display is constantly updated it is unsuitable "
+"for logging to a file, use the <literal>-q</literal> option to remove the "
+"status display."
+msgstr ""
+"状態表示ã¯0.5秒ã”ã¨ã«æ›´æ–°ã—ã¦ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã®é€²æ—状æ³ã‚’絶ãˆãšé€šçŸ¥ã—ã€å–å¾—è¡Œã¯æ–°"
+"ã—ã„ファイルã®å‡¦ç†ãŒå§‹ã¾ã‚‹ãŸã³ã«æµã‚Œã¦ã„ãã¾ã™ã€‚状態表示ã¯çµ¶ãˆãšæ›´æ–°ã•ã‚Œã‚‹ãŸ"
+"ã‚ファイルã¸ã®è¨˜éŒ²ã«ã¯é©ã—ã¾ã›ã‚“。<literal>-q</literal> オプションを使ã†ã¨çŠ¶"
+"態を表示ã—ãªã„よã†ã«ã§ãã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Dpkg"
+msgstr "Dpkg"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"APT uses <command>dpkg</command> for installing the archives and will switch "
+"over to the <command>dpkg</command> interface once downloading is completed. "
+"<command>dpkg</command> will also ask a number of questions as it processes "
+"the packages and the packages themselves may also ask several questions. "
+"Before each question there is usually a description of what it is asking and "
+"the questions are too varied to discuss completely here."
+msgstr ""
+"APT ã¯ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã« <command>dpkg</command> を使ã„ã€ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰"
+"ã®å®Œäº†å¾Œã¯ <command>dpkg</command> インターフェイスã«åˆ‡ã‚Šæ›¿ã‚ã‚Šã¾ã™ã€‚"
+"<command>dpkg</command> もパッケージã®å‡¦ç†ä¸­ã«ã„ãã¤ã‹è³ªå•ã—ã€ãƒ‘ッケージ自体"
+"も複数質å•ã™ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。通常ãã‚Œãžã‚Œã®è³ªå•ã®å‰ã«ãã‚ŒãŒä½•ã‚’èžã„ã¦ã„ã‚‹ã®"
+"ã‹èª¬æ˜Žã—ã¾ã™ã€‚ãã®è³ªå•ã®å†…容ã¯å¤šå²ã«ã‚ãŸã‚‹ã‚‚ã®ã§ã‚ã‚Šã€ã“ã“ã§èª¬æ˜Žã§ãã‚‹ã‚‚ã®ã§"
+"ã¯å…¨ãã‚ã‚Šã¾ã›ã‚“。"
+
+#. type: Content of: <book><title>
+#: offline.dbk
+msgid "Using APT Offline"
+msgstr "オフラインã§ã® APT ã®ä½¿ç”¨æ³•"
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: offline.dbk
+msgid ""
+"This document describes how to use APT in a non-networked environment, "
+"specifically a 'sneaker-net' approach for performing upgrades."
+msgstr ""
+"ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã¯ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãŒãªã„環境ã§ã® APT ã®ä½¿ç”¨æ–¹æ³•ã‚’説明ã—ã¦ã„ã¾ã™ã€‚"
+"具体的ã«ã¯ã€ã‚¢ãƒƒãƒ—グレード時ã®ã€Œã‚¹ãƒ‹ãƒ¼ã‚«ãƒ¼ãƒãƒƒãƒˆã€ã‚¢ãƒ—ローãƒã§ã™ã€‚"
+
+#. type: Content of: <book><bookinfo>
+#: offline.dbk
+msgid ""
+"<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+"<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright>"
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Introduction"
+msgstr "ã¯ã˜ã‚ã«"
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "Overview"
+msgstr "概è¦"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Normally APT requires direct access to a Debian archive, either from a local "
+"media or through a network. Another common complaint is that a Debian "
+"machine is on a slow link, such as a modem and another machine has a very "
+"fast connection but they are physically distant."
+msgstr ""
+"通常 APT 㯠Debian アーカイブã«ã€ãƒ­ãƒ¼ã‚«ãƒ«ãƒ¡ãƒ‡ã‚£ã‚¢ã‹ã‚‰ã€ã‚ã‚‹ã„ã¯ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯çµŒ"
+"ç”±ã§ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ã§ãã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ä»–ã«ã‚ˆãã‚る苦情ã¨ã—ã¦ã¯ã‚ã‚‹ Debian マ"
+"シンã®æŽ¥ç¶šãŒãƒ¢ãƒ‡ãƒ ç­‰ã®ãŸã‚ã«ä½Žé€Ÿã§ã€åˆ¥ã®ãƒžã‚·ãƒ³ã«ã¯éžå¸¸ã«é«˜é€ŸãªæŽ¥ç¶šãŒã‚ã‚‹ã‘ã‚Œ"
+"ã©ã‚‚物ç†çš„ã«é ã„ã€ã¨ã„ã£ãŸã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The solution to this is to use large removable media such as a Zip disc or a "
+"SuperDisk disc. These discs are not large enough to store the entire Debian "
+"archive but can easily fit a subset large enough for most users. The idea is "
+"to use APT to generate a list of packages that are required and then fetch "
+"them onto the disc using another machine with good connectivity. It is even "
+"possible to use another Debian machine with APT or to use a completely "
+"different OS and a download tool like wget. Let <emphasis>remote host</"
+"emphasis> mean the machine downloading the packages, and <emphasis>target "
+"host</emphasis> the one with bad or no connection."
+msgstr ""
+"ã“ã‚Œã«å¯¾ã™ã‚‹è§£æ³•ã¨ã—ã¦ã¯ Zip ã‚„ SuperDisk ディスクã¨ã„ã£ãŸå¤§å®¹é‡è„±ç€å¯èƒ½ãƒ¡"
+"ディアを使ã„ã¾ã™ã€‚ã“ã†ã„ã£ãŸãƒ‡ã‚£ã‚¹ã‚¯ã¯ Debian アーカイブ全体を格ç´ã™ã‚‹ã«ã¯å"
+"分ã¨ã¯è¨€ãˆãªã„容é‡ã§ã™ãŒã»ã¨ã‚“ã©ã®ãƒ¦ãƒ¼ã‚¶ã«ã¨ã£ã¦å¿…è¦ãªãã®ä¸€éƒ¨ã‚’åŽã‚ã‚‹ã«ã¯å"
+"分余裕ãŒã‚ã‚Šã¾ã™ã€‚ãã®è€ƒãˆæ–¹ã¯ APT を使ã£ã¦å¿…è¦ãªãƒ‘ッケージã®ä¸€è¦§ã‚’生æˆã—ã€æŽ¥"
+"続状態ã®è‰¯å¥½ãªåˆ¥ã®ãƒžã‚·ãƒ³ã‚’使ã£ã¦ãã®ãƒ‡ã‚£ã‚¹ã‚¯ä¸Šã«å–å¾—ã—ã¾ã™ã€‚APT を使ãˆã‚‹åˆ¥ã® "
+"Debian マシンやã€å®Œå…¨ã«ç•°ãªã‚‹ OS 㧠wget ã®ã‚ˆã†ãªãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãƒ„ールを使ã†ã“ã¨"
+"ã‚‚å¯èƒ½ã§ã™ã€‚<emphasis>リモートホスト</emphasis>ã¯ãƒ‘ッケージをダウンロードã™ã‚‹"
+"マシンã€<emphasis>対象ホスト</emphasis>ã¯æŽ¥ç¶šãŒãªã„ã‚ã‚‹ã„ã¯è‰¯ããªã„マシンã ã¨"
+"考ãˆã¦ãã ã•ã„。"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"This is achieved by creatively manipulating the APT configuration file. The "
+"essential premise to tell APT to look on a disc for it's archive files. Note "
+"that the disc should be formatted with a filesystem that can handle long "
+"file names such as ext2, fat32 or vfat."
+msgstr ""
+"ã“れ㯠APT 設定ファイルを独創的ã«æ“作ã™ã‚‹ã“ã¨ã§å®Ÿç¾ã§ãã¾ã™ã€‚ã‚るディスクを "
+"APT ãŒæ¤œç´¢ã™ã‚‹ã‚ˆã†ã«ã™ã‚‹ãŸã‚ã«å¿…é ˆã¨ãªã‚‹å‰ææ¡ä»¶ã¯ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ファイルã§ã™ã€‚ã"
+"ã®ãƒ‡ã‚£ã‚¹ã‚¯ã¯é•·ã„ファイルåを扱ãˆã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã‚·ã‚¹ãƒ†ãƒ ã€ä¾‹ãˆã° ext2 ã‚„ fat32ã€"
+"vfat ã§ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Using APT on both machines"
+msgstr "両方ã®ãƒžã‚·ãƒ³ã§ã® APT ã®ä½¿ç”¨æ³•"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"APT being available on both machines gives the simplest configuration. The "
+"basic idea is to place a copy of the status file on the disc and use the "
+"remote machine to fetch the latest package files and decide which packages "
+"to download. The disk directory structure should look like:"
+msgstr ""
+"APT を両方ã®ãƒžã‚·ãƒ³ã§åˆ©ç”¨ã§ãるよã†ã«ã™ã‚‹æœ€ã‚‚å˜ç´”ãªè¨­å®šã‚’考ãˆã¾ã™ã€‚基本的ãªè€ƒ"
+"ãˆæ–¹ã¯ status ファイルã®ã‚³ãƒ”ーをãã®ãƒ‡ã‚£ã‚¹ã‚¯ã«ç½®ã„ã¦æœ€æ–°ã®ãƒ‘ッケージファイル"
+"ã®å–得やダウンロードã™ã‚‹ãƒ‘ッケージã®æ±ºå®šã«ã¯ãƒªãƒ¢ãƒ¼ãƒˆãƒžã‚·ãƒ³ã‚’使ã„ã¾ã™ã€‚ãã®"
+"ディスクã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªæ§‹é€ ã¯æ¬¡ã®ã‚ˆã†ã«ãªã‚Šã¾ã™:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" /disc/\n"
+" archives/\n"
+" partial/\n"
+" lists/\n"
+" partial/\n"
+" status\n"
+" sources.list\n"
+" apt.conf\n"
+msgstr ""
+" /disc/\n"
+" archives/\n"
+" partial/\n"
+" lists/\n"
+" partial/\n"
+" status\n"
+" sources.list\n"
+" apt.conf\n"
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "The configuration file"
+msgstr "設定ファイル"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The configuration file should tell APT to store its files on the disc and to "
+"use the configuration files on the disc as well. The sources.list should "
+"contain the proper sites that you wish to use from the remote machine, and "
+"the status file should be a copy of <emphasis>/var/lib/dpkg/status</"
+"emphasis> from the <emphasis>target host</emphasis>. Please note, if you are "
+"using a local archive you must use copy URIs, the syntax is identical to "
+"file URIs."
+msgstr ""
+"設定ファイルã§ã¯ APT ãŒç®¡ç†ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ãã®ãƒ‡ã‚£ã‚¹ã‚¯ã«ä¿å­˜ã—ã€ãã®ãƒ‡ã‚£ã‚¹ã‚¯ä¸Šã®è¨­"
+"定ファイルをåŒæ§˜ã«åˆ©ç”¨ã™ã‚‹ã‚ˆã†ã«æŒ‡ç¤ºã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚sources.list ã§ã¯ãƒª"
+"モートマシンã‹ã‚‰åˆ©ç”¨ã™ã‚‹é©åˆ‡ãªã‚µã‚¤ãƒˆã‚’指定ã—ã€status ファイルã¯<emphasis>対象"
+"ホスト</emphasis>ã® <emphasis>/var/lib/dpkg/status</emphasis> をコピーã—ãŸã‚‚"
+"ã®ã‚’利用ã—ã¾ã™ã€‚ローカルアーカイブを使ã£ã¦ã„ã‚‹å ´åˆã¯ãã® URI を利用ã—ãªã„ã¨ã„"
+"ã‘ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。書å¼ã¯ãƒ•ã‚¡ã‚¤ãƒ«ã® URI ã¨åŒä¸€ã§ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"<emphasis>apt.conf</emphasis> must contain the necessary information to make "
+"APT use the disc:"
+msgstr ""
+"<emphasis>apt.conf</emphasis> ã«ã¯ APT ãŒãã®ãƒ‡ã‚£ã‚¹ã‚¯ã‚’使ã†ã‚ˆã†ã«ã™ã‚‹ã®ã«å¿…è¦"
+"ãªæƒ…報を記述ã—ãªã„ã¨ã„ã‘ã¾ã›ã‚“:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" APT\n"
+" {\n"
+" /* This is not necessary if the two machines are the same arch, it tells\n"
+" the remote APT what architecture the target machine is */\n"
+" Architecture \"i386\";\n"
+"\n"
+" Get::Download-Only \"true\";\n"
+" };\n"
+"\n"
+" Dir\n"
+" {\n"
+" /* Use the disc for state information and redirect the status file from\n"
+" the /var/lib/dpkg default */\n"
+" State \"/disc/\";\n"
+" State::status \"status\";\n"
+"\n"
+" // Binary caches will be stored locally\n"
+" Cache::archives \"/disc/archives/\";\n"
+" Cache \"/tmp/\";\n"
+"\n"
+" // Location of the source list.\n"
+" Etc \"/disc/\";\n"
+" };\n"
+msgstr ""
+" APT\n"
+" {\n"
+" /* This is not necessary if the two machines are the same arch, it tells\n"
+" the remote APT what architecture the target machine is */\n"
+" Architecture \"i386\";\n"
+"\n"
+" Get::Download-Only \"true\";\n"
+" };\n"
+"\n"
+" Dir\n"
+" {\n"
+" /* Use the disc for state information and redirect the status file from\n"
+" the /var/lib/dpkg default */\n"
+" State \"/disc/\";\n"
+" State::status \"status\";\n"
+"\n"
+" // Binary caches will be stored locally\n"
+" Cache::archives \"/disc/archives/\";\n"
+" Cache \"/tmp/\";\n"
+"\n"
+" // Location of the source list.\n"
+" Etc \"/disc/\";\n"
+" };\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"More details can be seen by examining the apt.conf man page and the sample "
+"configuration file in <emphasis>/usr/share/doc/apt/examples/apt.conf</"
+"emphasis>."
+msgstr ""
+"apt.conf 㮠man ページや <emphasis>/usr/share/doc/apt/examples/apt.conf</"
+"emphasis> ã«ã‚る見本ã®è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’調ã¹ã‚‹ã¨ã•ã‚‰ãªã‚‹è©³ç´°ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"On the target machine the first thing to do is mount the disc and copy "
+"<emphasis>/var/lib/dpkg/status</emphasis> to it. You will also need to "
+"create the directories outlined in the Overview, <emphasis>archives/partial/"
+"</emphasis> and <emphasis>lists/partial/</emphasis>. Then take the disc to "
+"the remote machine and configure the sources.list. On the remote machine "
+"execute the following:"
+msgstr ""
+"対象ã®ãƒžã‚·ãƒ³ã§ã¾ãšè¡Œã†ã“ã¨ã¯ãƒ‡ã‚£ã‚¹ã‚¯ã‚’マウントã—ã¦ãã®ãƒ‡ã‚£ã‚¹ã‚¯ã« <emphasis>/"
+"var/lib/dpkg/status</emphasis> をコピーã™ã‚‹ã“ã¨ã§ã™ã€‚概è¦ã«ã¾ã¨ã‚られã¦ã„るよ"
+"ã†ã«ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª <emphasis>archives/partial/</emphasis> åŠã³ "
+"<emphasis>lists/partial/</emphasis> を作æˆã™ã‚‹å¿…è¦ã‚‚ã‚ã‚‹ã§ã—ょã†ã€‚ãã‚Œã‹ã‚‰"
+"ディスクをリモートマシンã«ç§»å‹•ã—㦠sources.list を設定ã—ã¾ã™ã€‚リモートマシン"
+"ã§ã¯ä»¥ä¸‹ã®æ‰‹é †ã‚’実行ã—ã¾ã™:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get update\n"
+" [ APT fetches the package files ]\n"
+" # apt-get dist-upgrade\n"
+" [ APT fetches all the packages needed to upgrade the target machine ]\n"
+msgstr ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get update\n"
+" [ package ファイルを APT ãŒå–å¾—ã—ã¾ã™ ]\n"
+" # apt-get dist-upgrade\n"
+" [ 対象マシンをアップグレードã™ã‚‹ã®ã«å¿…è¦ãªãƒ‘ッケージをã€APT ãŒå–å¾—ã—ã¾ã™ ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The dist-upgrade command can be replaced with any other standard APT "
+"commands, particularly dselect-upgrade. You can even use an APT front end "
+"such as <emphasis>dselect</emphasis>. However this presents a problem in "
+"communicating your selections back to the local computer."
+msgstr ""
+"dist-upgrade コマンドã¯ä»–ã®ä»»æ„ã®æ¨™æº–的㪠APT コマンドã€ç‰¹ã« dselect-upgrade "
+"ã«ç½®ãæ›ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚<emphasis>dselect</emphasis> 等㮠APT フロントエ"
+"ンドを使ã†ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ã—ã‹ã—ã€ãã‚Œã«ã¯é¸æŠžã—ãŸã¨ãã«ãƒ­ãƒ¼ã‚«ãƒ«ã‚³ãƒ³ãƒ”ュータ"
+"ã¨ã‚„ã‚Šã¨ã‚Šã—ã¦ã—ã¾ã†ã¨ã„ã†å•é¡ŒãŒã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Now the disc contains all of the index files and archives needed to upgrade "
+"the target machine. Take the disc back and run:"
+msgstr ""
+"ã“ã‚Œã§ã€å¯¾è±¡ã®ãƒžã‚·ãƒ³ã‚’アップグレードã™ã‚‹ã®ã«å¿…è¦ãªç´¢å¼•ãƒ•ã‚¡ã‚¤ãƒ«ã¨ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ãŒ"
+"å…¨ã¦ã“ã®ãƒ‡ã‚£ã‚¹ã‚¯ã«åŽéŒ²ã•ã‚ŒãŸã¨ã„ã†ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ディスクを戻ã—ã¦å®Ÿè¡Œã—ã¾ã™:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get check\n"
+" [ APT generates a local copy of the cache files ]\n"
+" # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
+" [ Or any other APT command ]\n"
+msgstr ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get check\n"
+" [ キャッシュファイルã®ãƒ­ãƒ¼ã‚«ãƒ«ã‚³ãƒ”ーを生æˆã—ã¾ã™ ]\n"
+" # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
+" [ ã‚‚ã—ãã¯ãã®ä»–ã® APT コマンド ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"It is necessary for proper function to re-specify the status file to be the "
+"local one. This is very important!"
+msgstr ""
+"é©åˆ‡ã«æ©Ÿèƒ½ã™ã‚‹ãŸã‚ã«ã¯ãƒ­ãƒ¼ã‚«ãƒ«ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ status ファイルã«å†æŒ‡å®šã™ã‚‹å¿…è¦ãŒ"
+"ã‚ã‚Šã¾ã™ã€‚ã“ã‚Œã¯éžå¸¸ã«é‡è¦ã§ã™!"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"If you are using dselect you can do the very risky operation of copying disc/"
+"status to /var/lib/dpkg/status so that any selections you made on the remote "
+"machine are updated. I highly recommend that people only make selections on "
+"the local machine - but this may not always be possible. DO NOT copy the "
+"status file if dpkg or APT have been run in the mean time!!"
+msgstr ""
+"dselect を使ã£ã¦ã„ã‚‹å ´åˆã€disc/status ã¯ãƒªãƒ¢ãƒ¼ãƒˆãƒžã‚·ãƒ³ã§ä½•ã‹é¸æŠžã™ã‚‹ã¨æ›´æ–°ã•"
+"れるãŸã‚ /var/lib/dpkg/status ã«ã‚³ãƒ”ーã™ã‚‹ã®ã¯éžå¸¸ã«å±é™ºã§ã™ã€‚é¸æŠžã¯ãƒ­ãƒ¼ã‚«ãƒ«"
+"マシンã§ã®ã¿è¡Œã†ã“ã¨ã‚’å¼·ã勧ã‚ã¾ã™ - ã—ã‹ã—ã“ã‚Œã¯å¸¸ã«å¯èƒ½ã ã¨ã¯é™ã‚Šã¾ã›ã‚“。"
+"dpkg ã‚„ APT を実行ã—ã¦ã„る間㯠status ファイルをコピー *ã—ãªã„ã§ãã ã•ã„* !!"
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Using APT and wget"
+msgstr "APT 㨠wget ã®ä½¿ç”¨"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"<emphasis>wget</emphasis> is a popular and portable download tool that can "
+"run on nearly any machine. Unlike the method above this requires that the "
+"Debian machine already has a list of available packages."
+msgstr ""
+"<emphasis>wget</emphasis> ã¯äººæ°—ã®ã‚る移æ¤æ€§ã®é«˜ã„ダウンロードツールã§ã€ã»ã¼"
+"ã‚らゆるマシンã§å®Ÿè¡Œã§ãã¾ã™ã€‚上記ã®æ–¹æ³•ã¨ã¯ç•°ãªã‚Šã€ã“ã‚Œã«ã¯åˆ©ç”¨å¯èƒ½ãªãƒ‘ッ"
+"ケージã®ä¸€è¦§ã‚’ Debian マシンã§ç”¨æ„ã—ã¦ãŠãå¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The basic idea is to create a disc that has only the archive files "
+"downloaded from the remote site. This is done by using the --print-uris "
+"option to apt-get and then preparing a wget script to actually fetch the "
+"packages."
+msgstr ""
+"基本的ãªè€ƒãˆæ–¹ã¯ã€ãƒªãƒ¢ãƒ¼ãƒˆã‚µã‚¤ãƒˆã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ãŸã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ファイルã ã‘ã‚’"
+"åŽéŒ²ã—ãŸãƒ‡ã‚£ã‚¹ã‚¯ã‚’作æˆã™ã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã€‚ã“れ㯠apt-get ã« --print-uris オプ"
+"ションを使ã£ã¦è¡Œã„ã€ãã‚Œã‹ã‚‰ wget スクリプトを準備ã—ã¦å®Ÿéš›ã«ãƒ‘ッケージをå–å¾—"
+"ã—ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "Operation"
+msgstr "æ“作"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Unlike the previous technique no special configuration files are required. "
+"We merely use the standard APT commands to generate the file list."
+msgstr ""
+"å‰ã®æŠ€ã¨ã¯ç•°ãªã‚Šã€ç‰¹åˆ¥ãªè¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’å¿…è¦ã¨ã—ã¾ã›ã‚“。標準的㪠APT コマンドを"
+"å˜ç´”ã«ä½¿ã£ã¦ãƒ•ã‚¡ã‚¤ãƒ«ä¸€è¦§ã‚’生æˆã—ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # apt-get dist-upgrade\n"
+" [ Press no when prompted, make sure you are happy with the actions ]\n"
+" # apt-get -qq --print-uris dist-upgrade &gt; uris\n"
+" # awk '{print \"wget -O \" $2 \" \" $1}' &lt; uris &gt; /disc/wget-script\n"
+msgstr ""
+" # apt-get dist-upgrade\n"
+" [ å•ã„åˆã‚ã›ã«ã¯ no を回答ã—ã€æ„図ã—ãªã„動作を起ã“ã™ã“ã¨ã®ãªã„よã†ã« ]\n"
+" # apt-get -qq --print-uris dist-upgrade &gt; uris\n"
+" # awk '{print \"wget -O \" $2 \" \" $1}' &lt; uris &gt; /disc/wget-script\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Any command other than dist-upgrade could be used here, including dselect-"
+"upgrade."
+msgstr ""
+"dselect-upgrade ã‚’å«ã‚ã€ã“ã“ã§ã¯ dist-upgrade 以外ã®ä»»æ„ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’使ãˆã¾"
+"ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The /disc/wget-script file will now contain a list of wget commands to "
+"execute in order to fetch the necessary archives. This script should be run "
+"with the current directory as the disc's mount point so as to save the "
+"output on the disc."
+msgstr ""
+"/disc/wget-script ファイルã«ã¯ã€å¿…è¦ãªã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã‚’å–å¾—ã™ã‚‹ãŸã‚ã«å®Ÿè¡Œã™ã‚‹ "
+"wget コマンドã®ä¸€è¦§ã‚’åŽéŒ²ã™ã‚‹ã‚ˆã†ã«ãªã£ã¦ã„ã¾ã™ã€‚ディスク上ã®å‡ºåŠ›ã‚’減らã™ãŸ"
+"ã‚ã€ã“ã®ã‚¹ã‚¯ãƒªãƒ—トã¯ç¾åœ¨ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’ãã®ãƒ‡ã‚£ã‚¹ã‚¯ã®ãƒžã‚¦ãƒ³ãƒˆãƒã‚¤ãƒ³ãƒˆã¨ã—ã¦"
+"実行ã™ã‚‹ã‚ˆã†ã«ã—ã¦ãã ã•ã„。"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid "The remote machine would do something like"
+msgstr "リモートマシンã§ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ã—ã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # cd /disc\n"
+" # sh -x ./wget-script\n"
+" [ wait.. ]\n"
+msgstr ""
+" # cd /disc\n"
+" # sh -x ./wget-script\n"
+" [ ãŠå¾…ã¡ãã ã•ã„... ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Once the archives are downloaded and the disc returned to the Debian machine "
+"installation can proceed using,"
+msgstr ""
+"アーカイブã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãŒçµ‚ã‚ã£ã¦ãƒ‡ã‚£ã‚¹ã‚¯ãŒ Debian マシンã«è¿”ã£ã¦ãã‚‹ã¨ã‚¤ãƒ³"
+"ストールを続ã‘られるよã†ã«ãªã‚Šã¾ã™ã€‚"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
+msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid "Which will use the already fetched archives on the disc."
+msgstr "ã“ã‚Œã§ã€ãƒ‡ã‚£ã‚¹ã‚¯ã«ã‚ã‚‹å–得済ã¿ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–を使用ã™ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚"
diff --git a/doc/po/nl.po b/doc/po/nl.po
new file mode 100644
index 000000000..fead991a3
--- /dev/null
+++ b/doc/po/nl.po
@@ -0,0 +1,12036 @@
+# Translation of apt-doc to Dutch
+# This file is distributed under the same license as the apt-doc package.
+# Frans Spiesschaert <Frans.Spiesschaert@yucom.be>, 2015, 2016, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt-doc 1.4~beta4-nl\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-06-01 10:51+0200\n"
+"PO-Revision-Date: 2017-01-19 17:53+0100\n"
+"Last-Translator: Frans Spiesschaert <Frans.Spiesschaert@yucom.be>\n"
+"Language-Team: Debian Dutch l10n Team <debian-l10n-dutch@lists.debian.org>\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Gtranslator 2.91.6\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY apt-author.team \"\n"
+" <author>\n"
+" <othername>APT team</othername>\n"
+" <contrib></contrib>\n"
+" </author>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY apt-author.team \"\n"
+" <author>\n"
+" <othername>APT-team</othername>\n"
+" <contrib></contrib>\n"
+" </author>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY apt-qapage \"\n"
+"\t<para>\n"
+"\t\t<ulink url='http://packages.qa.debian.org/a/apt.html'>QA Page</ulink>\n"
+"\t</para>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY apt-qapage \"\n"
+"\t<para>\n"
+"\t\t<ulink url='http://packages.qa.debian.org/a/apt.html'>QA-Pagina</ulink>\n"
+"\t</para>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Boiler plate Bug reporting section -->\n"
+"<!ENTITY manbugs \"\n"
+" <refsect1><title>Bugs</title>\n"
+" <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+" If you wish to report a bug in APT, please see\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
+" &reportbug; command.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+"<!-- Boiler plate Bug reporting section -->\n"
+"<!ENTITY manbugs \"\n"
+" <refsect1><title>Bugs</title>\n"
+" <para><ulink url='http://bugs.debian.org/src:apt'>APT bugpagina</ulink>.\n"
+" Indien u een bug in APT wilt rapporteren, raadpleeg dan\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</filename> of het\n"
+" &reportbug; commando.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Boiler plate Author section -->\n"
+"<!ENTITY manauthor \"\n"
+" <refsect1><title>Author</title>\n"
+" <para>APT was written by the APT team <email>apt@packages.debian.org</email>.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+"<!-- Boiler plate Author section -->\n"
+"<!ENTITY manauthor \"\n"
+" <refsect1><title>Auteur</title>\n"
+" <para>APT werd geschreven door het APT-team <email>apt@packages.debian.org</email>.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-commonoptions \"\n"
+" <varlistentry><term><option>-h</option></term>\n"
+" <term><option>--help</option></term>\n"
+" <listitem><para>Show a short usage summary.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-commonoptions \"\n"
+" <varlistentry><term><option>-h</option></term>\n"
+" <term><option>--help</option></term>\n"
+" <listitem><para>Een korte samenvatting van het gebruik weergeven.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-v</option></term>\n"
+" <term><option>--version</option></term>\n"
+" <listitem><para>Show the program version.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-v</option></term>\n"
+" <term><option>--version</option></term>\n"
+" <listitem><para>Het versienummer van het programma weergeven.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-c</option></term>\n"
+" <term><option>--config-file</option></term>\n"
+" <listitem><para>Configuration File; Specify a configuration file to use. \n"
+" The program will read the default configuration file and then this \n"
+" configuration file. If configuration settings need to be set before the\n"
+" default configuration files are parsed specify a file with the <envar>APT_CONFIG</envar>\n"
+" environment variable. See &apt-conf; for syntax information.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-c</option></term>\n"
+" <term><option>--config-file</option></term>\n"
+" <listitem><para>Configuratiebestand; Een te gebruiken configuratiebestand opgeven. \n"
+" Het programma zal het standaard configuratiebestand inlezen en nadien\n"
+" dit configuratiebestand. Als configuratie-instellingen opgegeven moeten\n"
+" worden vooraleer de standaard configuratiebestanden verwerkt worden,\n"
+" geef dan een bestand op met de omgevingsvariabele <envar>APT_CONFIG</envar>.\n"
+" Raadpleeg &apt-conf; voor informatie over de syntaxis.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-o</option></term>\n"
+" <term><option>--option</option></term>\n"
+" <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
+" configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
+" <option>-o</option> and <option>--option</option> can be used multiple\n"
+" times to set different options.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-o</option></term>\n"
+" <term><option>--option</option></term>\n"
+" <listitem><para>Een configuratieoptie instellen; Dit stelt een\n"
+" willekeurige configuratieoptie in. De syntaxis is <option>-o Foo::Bar=bar</option>.\n"
+" <option>-o</option> en <option>--option</option> kunnen meermaals\n"
+" gebruikt worden om verschillende opties in te stellen.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-cmdblurb \"\n"
+" <para>All command line options may be set using the configuration file, the\n"
+" descriptions indicate the configuration option to set. For boolean\n"
+" options you can override the config file by using something like \n"
+" <option>-f-</option>,<option>--no-f</option>, <option>-f=no</option>\n"
+" or several other variations.\n"
+" </para>\n"
+"\">\n"
+msgstr ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-cmdblurb \"\n"
+" <para>Alle commandoregelopties kunnen via het configuratiebestand ingesteld\n"
+" worden. de omschrijving geeft de in te stellen configuratieoptie\n"
+" op. Bij booleaanse opties kunt u instellingen uit het \n"
+" configuratiebestand overschrijven door iets te gebruiken als <option>-f-</option>,\n"
+" <option>--no-f</option>, <option>-f=no</option> en meerdere andere variaties.\n"
+" </para>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-aptconf \"\n"
+" <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>\n"
+" <listitem><para>APT configuration file.\n"
+" Configuration Item: <literal>Dir::Etc::Main</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-aptconf \"\n"
+" <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>\n"
+" <listitem><para>Configuratiebestand voor APT.\n"
+" Configuratie-item: <literal>Dir::Etc::Main</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
+" <listitem><para>APT configuration file fragments.\n"
+" Configuration Item: <literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
+" <listitem><para>Configuratiebestandsfragmenten voor APT.\n"
+" Configuratie-item: <literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-cachearchives \"\n"
+" <varlistentry><term><filename>&cachedir;/archives/</filename></term>\n"
+" <listitem><para>Storage area for retrieved package files.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-cachearchives \"\n"
+" <varlistentry><term><filename>&cachedir;/archives/</filename></term>\n"
+" <listitem><para>Opslaggebied voor opgehaalde pakketbestanden.\n"
+" Configuratie-item: <literal>Dir::Cache::Archives</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>\n"
+" <listitem><para>Storage area for package files in transit.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>\n"
+" <listitem><para>Opslaggebied voor pakketbestanden tijdens het ophalen.\n"
+" Configuratie-item: <literal>Dir::Cache::Archives</literal> (<filename>partial</filename> zal impliciet toegevoegd worden)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-preferences \"\n"
+" <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
+" <listitem><para>Version preferences file.\n"
+" This is where you would specify &quot;pinning&quot;,\n"
+" i.e. a preference to get certain packages\n"
+" from a separate source\n"
+" or from a different version of a distribution.\n"
+" Configuration Item: <literal>Dir::Etc::Preferences</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-preferences \"\n"
+" <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
+" <listitem><para>Bestand met versievoorkeuren.\n"
+" Dit is waar u &quot;pinning&quot; kunt opgeven.\n"
+" Dit is een voorkeur voor het ophalen van bepaalde pakketten\n"
+" uit een aparte pakketbron\n"
+" of uit een andere versie van een distributie.\n"
+" Configuratie-item: <literal>Dir::Etc::Preferences</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>\n"
+" <listitem><para>File fragments for the version preferences.\n"
+" Configuration Item: <literal>Dir::Etc::PreferencesParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>\n"
+" <listitem><para>Bestandsfragmenten met versievoorkeuren.\n"
+" Configuratie-item: <literal>Dir::Etc::PreferencesParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-sourceslist \"\n"
+" <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+" <listitem><para>Locations to fetch packages from.\n"
+" Configuration Item: <literal>Dir::Etc::SourceList</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-sourceslist \"\n"
+" <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+" <listitem><para>Locaties waarvandaan pakketten opgehaald moeten worden.\n"
+" Configuratie-item: <literal>Dir::Etc::SourceList</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
+" <listitem><para>File fragments for locations to fetch packages from.\n"
+" Configuration Item: <literal>Dir::Etc::SourceParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
+" <listitem><para>Bestandsfragmenten met locaties\n"
+" waarvandaan pakketten opgehaald moeten worden.\n"
+" Configuratie-item: <literal>Dir::Etc::SourceParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-statelists \"\n"
+" <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
+" <listitem><para>Storage area for state information for each package resource specified in\n"
+" &sources-list;\n"
+" Configuration Item: <literal>Dir::State::Lists</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-statelists \"\n"
+" <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
+" <listitem><para>Opslaggebied voor statusinformatie over elke pakketbron vermeld in\n"
+" &sources-list;\n"
+" Configuratie-item: <literal>Dir::State::Lists</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>\n"
+" <listitem><para>Storage area for state information in transit.\n"
+" Configuration Item: <literal>Dir::State::Lists</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>\n"
+" <listitem><para>Opslaggebied voor statusinformatie tijdens het ophalen.\n"
+" Configuratie-item: <literal>Dir::State::Lists</literal> (<filename>partial</filename> zal impliciet toegevoegd worden)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-trustedgpg \"\n"
+" <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
+" <listitem><para>Keyring of local trusted keys, new keys will be added here.\n"
+" Configuration Item: <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-trustedgpg \"\n"
+" <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
+" <listitem><para>Sleutelbos met lokaal vertrouwde sleutels.\n"
+" Nieuwe sleutels worden hier toegevoegd.\n"
+" Configuratie-item: <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
+" <listitem><para>File fragments for the trusted keys, additional keyrings can\n"
+" be stored here (by other packages or the administrator).\n"
+" Configuration Item <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
+" <listitem><para>Bestandsfragmenten met vertrouwde sleutels. \n"
+" Bijkomende sleutelbossen kunnen hier opgeslagen worden \n"
+" (door andere pakketten of de systeembeheerder).\n"
+" Configuratie-item <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-extended_states \"\n"
+" <varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>\n"
+" <listitem><para>Status list of auto-installed packages.\n"
+" Configuration Item: <literal>Dir::State::extended_states</literal>.\n"
+" </para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY file-extended_states \"\n"
+" <varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>\n"
+" <listitem><para>Statuslijst van automatisch geïnstalleerde pakketten.\n"
+" Configuratie-item: <literal>Dir::State::extended_states</literal>.\n"
+" </para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is the section header for the following paragraphs - comparable\n"
+" to the other headers like NAME and DESCRIPTION and should therefore be uppercase. -->\n"
+"<!ENTITY translation-title \"TRANSLATION\">\n"
+msgstr ""
+"<!-- TRANSLATOR: This is the section header for the following paragraphs - comparable\n"
+" to the other headers like NAME and DESCRIPTION and should therefore be uppercase. -->\n"
+"<!ENTITY translation-title \"VERTALING\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is a placeholder. You should write here who has contributed\n"
+" to the translation in the past, who is responsible now and maybe further information\n"
+" specially related to your translation. -->\n"
+"<!ENTITY translation-holder \"\n"
+" The english translation was done by John Doe <email>john@doe.org</email> in 2009,\n"
+" 2010 and Daniela Acme <email>daniela@acme.us</email> in 2010 together with the\n"
+" Debian Dummy l10n Team <email>debian-l10n-dummy@lists.debian.org</email>.\n"
+"\">\n"
+msgstr ""
+"<!-- TRANSLATOR: This is a placeholder. You should write here who has contributed\n"
+" to the translation in the past, who is responsible now and maybe further information\n"
+" specially related to your translation. -->\n"
+"<!ENTITY translation-holder \"\n"
+" De Nederlandse vertaling werd in 2015 gemaakt door Frans Spiesschaert\n"
+" <email>Frans.Spiesschaert@yucom.be</email>, in samenwerking met het\n"
+" Debian Dutch l10n Team <email>debian-l10n-dutch@lists.debian.org</email>.\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: As a translation is allowed to have 20% of untranslated/fuzzy strings\n"
+" in a shipped manpage newer/modified paragraphs will maybe appear in english in\n"
+" the generated manpage. This sentence is therefore here to tell the reader that this\n"
+" is not a mistake by the translator - obviously the target is that at least for stable\n"
+" releases this sentence is not needed. :) -->\n"
+"<!ENTITY translation-english \"\n"
+" Note that this translated document may contain untranslated parts.\n"
+" This is done on purpose, to avoid losing content when the\n"
+" translation is lagging behind the original content.\n"
+"\">\n"
+msgstr ""
+"<!-- TRANSLATOR: As a translation is allowed to have 20% of untranslated/fuzzy strings\n"
+" in a shipped manpage newer/modified paragraphs will maybe appear in english in\n"
+" the generated manpage. This sentence is therefore here to tell the reader that this\n"
+" is not a mistake by the translator - obviously the target is that at least for stable\n"
+" releases this sentence is not needed. :) -->\n"
+"<!ENTITY translation-english \"\n"
+" Merk op dat de vertaling van dit document nog onvertaalde delen kan \n"
+" bevatten. Dit is intentioneel om te vermijden dat inhoud verloren zou \n"
+" gaan door een vertaling die achterop loopt op het origineel.\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
+"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
+"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string "
+"\"configuratietekenreeks\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -c=config_file e.g. -c=./apt.conf --> <!ENTITY "
+"synopsis-config-file \"config_file\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -c=config_file e.g. -c=./apt.conf --> <!ENTITY "
+"synopsis-config-file \"configuratiebestand\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
+"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"\"target_release\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
+"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release \"doelrelease"
+"\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -a=architecture e.g. -a=armel --> <!ENTITY "
+"synopsis-architecture \"architecture\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -a=architecture e.g. -a=armel --> <!ENTITY "
+"synopsis-architecture \"architectuur\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-get install pkg e.g. apt-get install awesome "
+"--> <!ENTITY synopsis-pkg \"pkg\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-get install pkg e.g. apt-get install awesome "
+"--> <!ENTITY synopsis-pkg \"pakket\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in pkg=pkg_version_number e.g. apt=0.8.15 --> <!"
+"ENTITY synopsis-pkg-ver-number \"pkg_version_number\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in pkg=pkg_version_number e.g. apt=0.8.15 --> <!"
+"ENTITY synopsis-pkg-ver-number \"pakketversienummer\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache pkgnames prefix e.g. apt-cache "
+"pkgnames apt --> <!ENTITY synopsis-prefix \"prefix\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-cache pkgnames prefix e.g. apt-cache "
+"pkgnames apt --> <!ENTITY synopsis-prefix \"prefix\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache search regex e.g. apt-cache search "
+"awesome --> <!ENTITY synopsis-regex \"regex\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-cache search regex e.g. apt-cache search "
+"awesome --> <!ENTITY synopsis-regex \"reguliere_expressie\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
+"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
+"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cd-aankoppelpunt\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates -t=temporary_directory e.g. "
+"apt-extracttemplates -t=/tmp --> <!ENTITY synopsis-tmp-directory "
+"\"temporary_directory\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates -t=temporary_directory e.g. "
+"apt-extracttemplates -t=/tmp --> <!ENTITY synopsis-tmp-directory "
+"\"tijdelijke_map\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates filename --> <!ENTITY "
+"synopsis-filename \"filename\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates filename --> <!ENTITY "
+"synopsis-filename \"bestandsnaam\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-path \"path\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-path \"pad\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-override "
+"\"override-file\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-override "
+"\"override-bestand\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-pathprefix "
+"\"pathprefix\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-pathprefix "
+"\"padprefix\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"generate section --> <!ENTITY synopsis-section \"section\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"generate section --> <!ENTITY synopsis-section \"sectie\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+"473041FA --> <!ENTITY synopsis-keyid \"sleutel-ID\">"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+msgid "8"
+msgstr "8"
+
+#. type: Content of: <refentry><refmeta><refmiscinfo>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "APT"
+msgstr "APT"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.8.xml
+msgid "command-line interface"
+msgstr "commandoregelinterface"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "Description"
+msgstr "Omschrijving"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"<command>apt</command> provides a high-level commandline interface for the "
+"package management system. It is intended as an end user interface and "
+"enables some options better suited for interactive usage by default compared "
+"to more specialized APT tools like &apt-get; and &apt-cache;."
+msgstr ""
+"<command>apt</command> biedt een hogere commandoregelinterface voor het "
+"systeem van pakketbeheer. Het is bedoeld als een interface voor de "
+"eindgebruiker en standaard gebruikt het sommige opties op een manier die, "
+"vergeleken met meer gespecialiseerde APT-hulpmiddelen zoals &apt-get; en "
+"&apt-cache;, beter aangepast is aan interactief gebruik."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"Much like <command>apt</command> itself, its manpage is intended as an end "
+"user interface and as such only mentions the most used commands and options "
+"partly to not duplicate information in multiple places and partly to avoid "
+"overwhelming readers with a cornucopia of options and details."
+msgstr ""
+"Ook de man-pagina is, in grote mate gelijk <command>apt</command> zelf, "
+"bedoeld als een interface voor de eindgebruiker. In die hoedanigheid "
+"vermeldt ze enkel de meest gebruikte commando's en opties. Deels is dit om "
+"niet op verschillende plaatsen met dezelfde informatie te komen en deels om "
+"te vermijden dat de lezer overstelpt zou worden door een overvloed aan "
+"opties en details."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(&apt-get;)"
+msgstr "(&apt-get;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>update</option> is used to download package information from all "
+"configured sources. Other commands operate on this data to e.g. perform "
+"package upgrades or search in and display details about all packages "
+"available for installation."
+msgstr ""
+"<option>update</option> wordt gebruikt om pakketinformatie op te halen "
+"vanuit alle ingestelde pakketbronnen. Andere commando's werken met deze "
+"gegevens om bijvoorbeeld opwaarderingen van pakketten uit te voeren of om "
+"informatie op te zoeken en weer te geven over alle pakketten die beschikbaar "
+"zijn voor installatie."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>upgrade</option> is used to install available upgrades of all "
+"packages currently installed on the system from the sources configured via "
+"&sources-list;. New packages will be installed if required to satisfy "
+"dependencies, but existing packages will never be removed. If an upgrade for "
+"a package requires the remove of an installed package the upgrade for this "
+"package isn't performed."
+msgstr ""
+"<literal>upgrade</literal> wordt gebruikt om voor alle pakketten die "
+"momenteel op het systeem geïnstalleerd zijn, de opwaarderingen te "
+"installeren die beschikbaar zijn in de pakketbronnen die in het bestand "
+"&sources-list; geconfigureerd werden. Nieuwe pakketten zullen geïnstalleerd "
+"worden als dat noodzakelijk is om aan vereisten te voldoen, maar "
+"geïnstalleerde pakketten zullen nooit verwijderd worden. Indien de "
+"opwaardering van een pakket vereist dat een geïnstalleerd pakket verwijderd "
+"wordt, zal de opwaardering voor dat pakket niet uitgevoerd worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>full-upgrade</literal> performs the function of upgrade but will "
+"remove currently installed packages if this is needed to upgrade the system "
+"as a whole."
+msgstr ""
+"<literal>full-upgrade</literal> vervult de functie van upgrade, maar zal ook "
+"momenteel geïnstalleerde pakketten verwijderen als dat nodig is om het "
+"systeem volledig op te waarderen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml apt-key.8.xml
+msgid ","
+msgstr ","
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Performs the requested action on one or more packages specified via &regex;, "
+"&glob; or exact match. The requested action can be overridden for specific "
+"packages by append a plus (+) to the package name to install this package or "
+"a minus (-) to remove it."
+msgstr ""
+"Voert de gevraagde actie uit op een of meer pakketten die opgegeven werden "
+"aan de hand van een &regex;, een &glob; (expansie) of een exacte pakketnaam. "
+"De gevraagde actie kan voor een specifiek pakket gewijzigd worden door aan "
+"de naam van dat pakket een plusteken (+) toe te voegen als dat pakket "
+"geïnstalleerd moet worden of een minteken (-) als het verwijderd moet worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals (=) and the version of the package "
+"to select. Alternatively the version from a specific release can be selected "
+"by following the package name with a forward slash (/) and codename (&debian-"
+"stable-codename;, &debian-testing-codename;, sid …) or suite name (stable, "
+"testing, unstable). This will also select versions from this release for "
+"dependencies of this package if needed to satisfy the request."
+msgstr ""
+"Een specifieke versie van een pakket kiezen voor installatie kan door de "
+"pakketnaam te laten volgen door een gelijkheidsteken (=) en de te selecteren "
+"versie van het pakket. Anderzijds kan de versie uit een specifieke "
+"distributie geselecteerd worden door de pakketnaam te laten volgen door een "
+"slash en de codenaam &debian-stable-codename;, &debian-testing-codename;, "
+"sid …) of de suitenaam ervan (stable, testing, unstable). Als om aan dit "
+"verzoek te kunnen voldoen, vereisten geïnstalleerd moeten worden, zullen de "
+"daarvoor geselecteerde versies ook uit deze release afkomstig zijn."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Removing a package removes all packaged data, but leaves usually small "
+"(modified) user configuration files behind, in case the remove was an "
+"accident. Just issuing an installation request for the accidentally removed "
+"package will restore its function as before in that case. On the other hand "
+"you can get rid of these leftovers by calling <command>purge</command> even "
+"on already removed packages. Note that this does not affect any data or "
+"configuration stored in your home directory."
+msgstr ""
+"Bij het verwijderen van een pakket worden alle verpakte gegevens verwijderd, "
+"maar de meestal kleine (aangepaste) gebruikersconfiguratiebestanden worden "
+"op het systeem achtergelaten voor het geval de verwijdering per ongeluk "
+"plaats vond. In dat geval volstaat het om een installatieverzoek uit te "
+"vaardigen voor het per ongeluk verwijderde pakket om zijn vroegere "
+"functionaliteit te herstellen. Daarentegen kunt u van deze restanten afraken "
+"door het commando <command>purge</command> te gebruiken, zelfs bij reeds "
+"verwijderde pakketten. Merk op dat dit geen enkele invloed heeft op "
+"eventuele gegevens of configuratie-instellingen die in uw thuismap "
+"opgeslagen zijn."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed as dependencies changed or the package(s) needing them "
+"were removed in the meantime."
+msgstr ""
+"<literal>autoremove</literal> wordt gebruikt om pakketten te verwijderen die "
+"automatisch geïnstalleerd werden om te voldoen aan de vereisten van andere "
+"pakketten en nu niet langer nodig zijn omdat de vereisten veranderden of "
+"omdat de pakketten die van die pakketten afhankelijk waren intussen "
+"verwijderd werden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"You should check that the list does not include applications you have grown "
+"to like even though they were once installed just as a dependency of another "
+"package. You can mark such a package as manually installed by using &apt-"
+"mark;. Packages which you have installed explicitly via <command>install</"
+"command> are also never proposed for automatic removal."
+msgstr ""
+"U zou moeten nagaan of de lijst geen toepassingen bevat die u leren "
+"waarderen heeft, ook al waren ze ooit enkel geïnstalleerd als een vereiste "
+"voor een ander pakket. Een dergelijk pakket kunt u als handmatig "
+"geïnstalleerd markeren met &apt-mark;. Voor pakketten die u expliciet via "
+"<command>install</command> geïnstalleerd heeft, zal ook nooit voorgesteld "
+"worden om ze automatisch te verwijderderen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(&apt-cache;)"
+msgstr "(&apt-cache;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>search</option> can be used to search for the given &regex; term(s) "
+"in the list of available packages and display matches. This can e.g. be "
+"useful if you are looking for packages having a specific feature. If you "
+"are looking for a package including a specific file try &apt-file;."
+msgstr ""
+"<option>search</option> kan gebruikt worden om in de lijst van beschikbare "
+"pakketten te zoeken naar de opgegeven &regex;-term(en) en de gevonden "
+"overeenkomsten te tonen. Dit kan bijvoorbeeld nuttig zijn als u op zoek bent "
+"naar pakketten met een specifieke functionaliteit. Indien u op zoek bent "
+"naar een pakket dat een specifiek bestand bevat, gebruikt u best &apt-file;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Show information about the given package(s) including its dependencies, "
+"installation and download size, sources the package is available from, the "
+"description of the packages content and much more. It can e.g. be helpful to "
+"look at this information before allowing &apt; to remove a package or while "
+"searching for new packages to install."
+msgstr ""
+"Toont informatie over het/de opgegeven pakket(ten), onder meer welke zijn "
+"vereisten zijn, de installatie- en downloadgrootte, de broncode waarvan het "
+"pakket afkomstig is, de beschrijving van de inhoud van het pakket en nog "
+"veel meer. Het kan bijvoorbeeld nuttig zijn om die informatie te bekijken "
+"vooraleer u &apt; toestaat om een pakket te verwijderen of bij het zoeken "
+"naar nieuw te installeren pakketten."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(work-in-progress)"
+msgstr "(werk-in-uitvoering)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>list</option> is somewhat similar to <command>dpkg-query --list</"
+"command> in that it can display a list of packages satisfying certain "
+"criteria. It supports &glob; patterns for matching package names as well as "
+"options to list installed (<option>--installed</option>), upgradeable "
+"(<option>--upgradeable</option>) or all available (<option>--all-versions</"
+"option>) versions."
+msgstr ""
+"<literal>list</literal> is min of meer vergelijkbaar met <command>dpkg-query "
+"--list</command> in die zin dat het een lijst van pakketten kan weergeven "
+"die aan bepaalde criteria beantwoorden. Het kent het gebruik van "
+"expansiepatronen (&glob; patterns) voor het vergelijken van pakketnamen en "
+"het ondersteunt opties om geïnstalleerde (<option>--installed</option>), "
+"opwaardeerbare (<option>--upgradable</option>) of alle beschikbare "
+"(<option>--all-versions</option>) versies weer te geven."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>edit-sources</literal> lets you edit your &sources-list; files in "
+"your preferred texteditor while also providing basic sanity checks."
+msgstr ""
+"<literal>edit-sources</literal> laat u toe uw &sources-list;-bestanden te "
+"bewerken met de teksteditor van uw voorkeur terwijl het ook basale "
+"foutcontroles uitvoert."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml
+msgid "Script Usage and Differences from Other APT Tools"
+msgstr "Het gebruik in scripts en verschillen met ander APT-gereedschap"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"The &apt; commandline is designed as an end-user tool and it may change "
+"behavior between versions. While it tries not to break backward "
+"compatibility this is not guaranteed either if a change seems beneficial for "
+"interactive use."
+msgstr ""
+"Het commandoregelprogramma &apt; werd ontworpen als een instrument voor de "
+"eindgebruiker en het is mogelijk dat het gedrag ervan verschilt naargelang "
+"de versie van het programma. Hoewel ernaar gestreefd wordt om de neerwaartse "
+"compatibiliteit niet te verbreken, wordt ze ook niet gegarandeerd als blijkt "
+"dat een aanpassing gunstig is voor interactief gebruik."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"All features of &apt; are available in dedicated APT tools like &apt-get; "
+"and &apt-cache; as well. &apt; just changes the default value of some "
+"options (see &apt-conf; and specifically the Binary scope). So you should "
+"prefer using these commands (potentially with some additional options "
+"enabled) in your scripts as they keep backward compatibility as much as "
+"possible."
+msgstr ""
+"Alle functionaliteit van &apt; is ook beschikbaar via toepassingsspecifiek "
+"APT-gereedschap zoals &apt-get; en &apt-cache;. &apt; wijzigt enkel de "
+"standaardwaarde van sommige opties (zie &apt-conf; en in het bijzonder het "
+"binaire toepassingsgebied). U zou er daarom de voorkeur aan moeten geven om "
+"in uw scripts deze commando's (met eventueel een aantal bijkomende opties) "
+"te gebruiken omdat die zoveel als mogelijk achterwaarts compatibel gehouden "
+"worden."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "See Also"
+msgstr "Zie ook"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
+"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+msgstr ""
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, De APT "
+"Gebruikershandleiding in &guidesdir;, &apt-preferences;, de APT Howto."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-cdrom.8.xml
+#: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml
+msgid "Diagnostics"
+msgstr "Diagnostiek"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"<command>apt</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+"<command>apt</command> geeft de terugkeerwaarde nul bij een normaal verlopen "
+"operatie, het decimaal getal 100 in geval van een fout."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-get.8.xml
+msgid "APT package handling utility -- command-line interface"
+msgstr ""
+"APT gereedschap voor het behandelen van pakketten -- commandoregelinterface"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"<command>apt-get</command> is the command-line tool for handling packages, "
+"and may be considered the user's \"back-end\" to other tools using the APT "
+"library. Several \"front-end\" interfaces exist, such as &aptitude;, "
+"&synaptic; and &wajig;."
+msgstr ""
+"<command>apt-get</command> is het gereedschap voor de commandoregel voor het "
+"behandelen van pakketten. Het kan door de gebruiker beschouwd worden als "
+"zijn \"backend\" (het basisinstrument) voor andere gereedschappen die "
+"gebruik maken van de bibliotheek van APT. Er bestaan verschillende \"front-"
+"end\" interfaces, zoals &aptitude;, &synaptic; en &wajig;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml apt-cache.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt-ftparchive.1.xml
+msgid ""
+"Unless the <option>-h</option>, or <option>--help</option> option is given, "
+"one of the commands below must be present."
+msgstr ""
+"Tenzij de optie <option>-h</option>, of <option>--help</option> opgegeven "
+"werd, moet een van de onderstaande commando's gebruikt worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>update</literal> is used to resynchronize the package index files "
+"from their sources. The indexes of available packages are fetched from the "
+"location(s) specified in <filename>/etc/apt/sources.list</filename>. For "
+"example, when using a Debian archive, this command retrieves and scans the "
+"<filename>Packages.gz</filename> files, so that information about new and "
+"updated packages is available. An <literal>update</literal> should always be "
+"performed before an <literal>upgrade</literal> or <literal>dist-upgrade</"
+"literal>. Please be aware that the overall progress meter will be incorrect "
+"as the size of the package files cannot be known in advance."
+msgstr ""
+"<literal>update</literal> wordt gebruikt om de indexbestanden van "
+"beschikbare pakketten terug te synchroniseren met hun pakketbronnen. De "
+"indexen worden opgehaald van de locatie(s) die in <filename>/etc/apt/sources."
+"list</filename> opgegeven werden. Indien bijvoorbeeld een Debian-archief "
+"gebruikt wordt, zal dit commando de bestanden <filename>Packages.gz</"
+"filename> ophalen en doorzoeken zodat de informatie over nieuwe en "
+"bijgewerkte pakketten beschikbaar wordt. Een <literal>update</literal> moet "
+"altijd uitgevoerd worden voor een <literal>upgrade</literal> of een "
+"<literal>dist-upgrade</literal>. U moet er rekening mee houden dat de "
+"globale voortgangsindicator niet betrouwbaar is, aangezien de grootte van de "
+"pakketbestanden vooraf niet gekend is."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>upgrade</literal> is used to install the newest versions of all "
+"packages currently installed on the system from the sources enumerated in "
+"<filename>/etc/apt/sources.list</filename>. Packages currently installed "
+"with new versions available are retrieved and upgraded; under no "
+"circumstances are currently installed packages removed, or packages not "
+"already installed retrieved and installed. New versions of currently "
+"installed packages that cannot be upgraded without changing the install "
+"status of another package will be left at their current version. An "
+"<literal>update</literal> must be performed first so that <command>apt-get</"
+"command> knows that new versions of packages are available."
+msgstr ""
+"<literal>upgrade</literal> wordt gebruikt om vanaf de pakketbronnen die in "
+"het bestand <filename>/etc/apt/sources.list</filename> vermeld worden, de "
+"recentste versies te installeren van alle pakketten die momenteel op het "
+"systeem geïnstalleerd zijn. Pakketten waarvan een recentere versie "
+"beschikbaar is, worden opgehaald en bijgewerkt. Onder geen beding worden "
+"pakketten die momenteel geïnstalleerd zijn, verwijderd of worden pakketten "
+"die nog niet geïnstalleerd zijn, opgehaald en geïnstalleerd. Recentere "
+"versies van pakketten die momenteel geïnstalleerd zijn en die niet "
+"bijgewerkt kunnen worden zonder de installatiestatus van een ander pakket te "
+"wijzigen, zullen op hun huidige versie behouden blijven. Vooraf moet een "
+"<literal>update</literal> uitgevoerd worden, zodat <command>apt-get</"
+"command> weet dat er nieuwere versies van pakketten beschikbaar zijn."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>dist-upgrade</literal> in addition to performing the function of "
+"<literal>upgrade</literal>, also intelligently handles changing dependencies "
+"with new versions of packages; <command>apt-get</command> has a \"smart\" "
+"conflict resolution system, and it will attempt to upgrade the most "
+"important packages at the expense of less important ones if necessary. The "
+"<literal>dist-upgrade</literal> command may therefore remove some packages. "
+"The <filename>/etc/apt/sources.list</filename> file contains a list of "
+"locations from which to retrieve desired package files. See also &apt-"
+"preferences; for a mechanism for overriding the general settings for "
+"individual packages."
+msgstr ""
+"<literal>dist-upgrade</literal> vervult niet enkel de functie van "
+"<literal>upgrade</literal>, maar handelt bovendien op een intelligente "
+"manier vereisten af die bij de nieuwere pakketversies veranderd zijn. "
+"<command>apt-get</command> beschikt over een \"slim\" systeem van "
+"conflictoplossing en zal proberen om de belangrijkste pakketten op te "
+"waarderen, eventueel, mocht dat nodig blijken, ten koste van minder "
+"belangrijke. Het kan daarom gebeuren dat het commando <literal>dist-upgrade</"
+"literal> sommige pakketten verwijdert. Het bestand <filename>/etc/apt/"
+"sources.list</filename> bevat een lijst met locaties waarvandaan de gewenste "
+"pakketten opgehaald kunnen worden. Zie ook &apt-preferences; voor een "
+"mechanisme dat toelaat om voor individuele pakketten de algemene "
+"instellingen te overschrijven."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>dselect-upgrade</literal> is used in conjunction with the "
+"traditional Debian packaging front-end, &dselect;. <literal>dselect-upgrade</"
+"literal> follows the changes made by &dselect; to the <literal>Status</"
+"literal> field of available packages, and performs the actions necessary to "
+"realize that state (for instance, the removal of old and the installation of "
+"new packages)."
+msgstr ""
+"<literal>dselect-upgrade</literal> wordt gebruikt in combinatie met "
+"&dselect;, het traditionele front-end van Debian voor pakketbeheer. "
+"<literal>dselect-upgrade</literal> volgt de veranderingen op die &dselect; "
+"aanbrengt in het <literal>Status</literal>-veld van de beschikbare pakketten "
+"en voert de acties uit die nodig zijn om die status waar te maken "
+"(bijvoorbeeld het verwijderen van oude en het installeren van nieuwe "
+"pakketten)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>install</literal> is followed by one or more packages desired for "
+"installation or upgrading. Each package is a package name, not a fully "
+"qualified filename (for instance, in a Debian system, <package>apt-utils</"
+"package> would be the argument provided, not <filename>apt-utils_&apt-"
+"product-version;_amd64.deb</filename>). All packages required by the "
+"package(s) specified for installation will also be retrieved and installed. "
+"The <filename>/etc/apt/sources.list</filename> file is used to locate the "
+"desired packages. If a hyphen is appended to the package name (with no "
+"intervening space), the identified package will be removed if it is "
+"installed. Similarly a plus sign can be used to designate a package to "
+"install. These latter features may be used to override decisions made by apt-"
+"get's conflict resolution system."
+msgstr ""
+"<literal>install</literal> wordt gevolgd door een of meer pakketten die men "
+"wenst te installeren of op te waarderen. Elk pakket wordt aangeduid met de "
+"pakketnaam, niet met zijn volledige unieke bestandsnaam (in een Debian "
+"systeem bijvoorbeeld zal <package>apt-utils</package> het argument zijn dat "
+"opgegeven wordt en niet <filename>apt-utils_&apt-product-version;_amd64.deb</"
+"filename>). Alle pakketten die door het/de opgegeven te installeren "
+"pakket(ten) vereist worden, zullen eveneens opgehaald en geïnstalleerd "
+"worden. Het bestand <filename>/etc/apt/sources.list</filename> wordt "
+"gebruikt om de gewenste pakketten te vinden. Indien aan het eind van een "
+"pakketnaam een koppelteken (zonder spatie ertussenin) geplaatst wordt, zal "
+"het opgegeven pakket verwijderd worden indien het geïnstalleerd is. Net zo "
+"kan een plus-teken gebruikt worden om op te geven dat een pakket "
+"geïnstalleerd moet worden. Deze laatstgenoemde werkwijzen kunnen gebruikt "
+"worden om beslissingen te overschrijven die door het "
+"conflictoplossingssysteem van apt-get genomen worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals and the version of the package to "
+"select. This will cause that version to be located and selected for install. "
+"Alternatively a specific distribution can be selected by following the "
+"package name with a slash and the version of the distribution or the Archive "
+"name (stable, testing, unstable)."
+msgstr ""
+"Een specifieke versie van een pakket kiezen voor installatie kan door de "
+"pakketnaam te laten volgen door een gelijkheidsteken en de te selecteren "
+"versie van het pakket. Dit zorgt ervoor dat die versie wordt opgezocht en "
+"voor installatie geselecteerd wordt. Eveneens kan een specifieke distributie "
+"geselecteerd worden door de pakketnaam te laten volgen door een slash en de "
+"versie van de distributie of de archiefnaam ervan (stable, testing, "
+"unstable)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Both of the version selection mechanisms can downgrade packages and must be "
+"used with care."
+msgstr ""
+"Beide versieselectiemechanismes kunnen pakketten degraderen en moeten met "
+"zorg gebruikt worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This is also the target to use if you want to upgrade one or more already-"
+"installed packages without upgrading every package you have on your system. "
+"Unlike the \"upgrade\" target, which installs the newest version of all "
+"currently installed packages, \"install\" will install the newest version of "
+"only the package(s) specified. Simply provide the name of the package(s) "
+"you wish to upgrade, and if a newer version is available, it (and its "
+"dependencies, as described above) will be downloaded and installed."
+msgstr ""
+"Dit is ook de aangewezen werkwijze indien u een of meer reeds geïnstalleerde "
+"pakketten wilt opwaarderen zonder alle op het systeem aanwezige pakketten op "
+"te waarderen. In tegenstelling tot het commando \"upgrade\", dat de "
+"recentste versie installeert van alle op het systeem aanwezige pakketten, "
+"zal \"install\" enkel de recentste versie installeren van het/de opgegeven "
+"pakket(ten). Geef gewoon de naam op van het/de pakket(ten) dat/die u wenst "
+"op te waarderen en, indien er een recentere versie beschikbaar is, zal die "
+"(samen met zijn vereisten, zoals hiervoor uitgelegd werd) gedownload en "
+"geïnstalleerd worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Finally, the &apt-preferences; mechanism allows you to create an alternative "
+"installation policy for individual packages."
+msgstr ""
+"Tot slot stelt het mechanisme &apt-preferences; u in staat om voor "
+"individuele pakketten een ander installatiebeleid te creëren."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If no package matches the given expression and the expression contains one "
+"of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and "
+"it is applied to all package names in the database. Any matches are then "
+"installed (or removed). Note that matching is done by substring so 'lo.*' "
+"matches 'how-lo' and 'lowest'. If this is undesired, anchor the regular "
+"expression with a '^' or '$' character, or create a more specific regular "
+"expression."
+msgstr ""
+"Indien geen enkel pakket overeenkomt met de opgegeven expressie en de "
+"expressie een '.', '?' of '*' bevat, dan wordt aangenomen dat het om een "
+"POSIX reguliere expressie gaat en wordt die toegepast op alle pakketnamen "
+"uit de database. Elke overeenkomst wordt dan geïnstalleerd (of verwijderd). "
+"Merk op dat het zoeken naar een overeenkomst gebeurt per deeltekenreeks, "
+"zodat 'lo.*' zowel met 'how-lo' als met 'lowest' een overeenkomst oplevert. "
+"Indien dit niet wenselijk is, veranker de reguliere expressie dan met behulp "
+"van het teken '^' of '$' of maak de reguliere expressie specifieker."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>remove</literal> is identical to <literal>install</literal> except "
+"that packages are removed instead of installed. Note that removing a package "
+"leaves its configuration files on the system. If a plus sign is appended to "
+"the package name (with no intervening space), the identified package will be "
+"installed instead of removed."
+msgstr ""
+"<literal>remove</literal> is identiek aan <literal>install</literal> behalve "
+"dat pakketten ermee verwijderd in plaats van geïnstalleerd worden. Merk op "
+"dat het verwijderen van een pakket de configuratiebestanden ervan op het "
+"systeem laat staan. Indien een plus-teken aan de pakketnaam toegevoegd wordt "
+"(zonder spatie ertussenin), zal het opgegeven pakket geïnstalleerd in plaats "
+"van verwijderd worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>purge</literal> is identical to <literal>remove</literal> except "
+"that packages are removed and purged (any configuration files are deleted "
+"too)."
+msgstr ""
+"<literal>purge</literal> is identiek aan <literal>remove</literal> behalve "
+"dat pakketten verwijderd en gewist worden (ook eventuele "
+"configuratiebestanden worden verwijderd)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>source</literal> causes <command>apt-get</command> to fetch source "
+"packages. APT will examine the available packages to decide which source "
+"package to fetch. It will then find and download into the current directory "
+"the newest available version of that source package while respecting the "
+"default release, set with the option <literal>APT::Default-Release</"
+"literal>, the <option>-t</option> option or per package with the "
+"<literal>pkg/release</literal> syntax, if possible."
+msgstr ""
+"<literal>source</literal> doet <command>apt-get</command> bronpakketten "
+"ophalen. APT zal de beschikbare pakketten doorzoeken om uit te maken welk "
+"bronpakket opgehaald moet worden. Het zal de meest recente beschikbare "
+"versie van dat bronpakket opzoeken, ophalen en in de huidige map plaatsen. "
+"Het respecteert daarbij waar mogelijk de standaarduitgave, ingesteld met de "
+"optie <literal>APT::Default-Release</literal>, de optie <option>-t</option> "
+"of opgegeven per pakket via de syntaxis <literal>pkg/release</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Source packages are tracked separately from binary packages via <literal>deb-"
+"src</literal> lines in the &sources-list; file. This means that you will "
+"need to add such a line for each repository you want to get sources from; "
+"otherwise you will probably get either the wrong (too old/too new) source "
+"versions or none at all."
+msgstr ""
+"De opvolging van bronpakketten gebeurt afzonderlijk, los van de binaire "
+"pakketten, via <literal>deb-src</literal>-regels in het bestand &sources-"
+"list;. Dit betekent dat u een dergelijke regel moet toevoegen per pakketbron "
+"waarvan u bronpakketten wilt ophalen. Anders zult u wellicht de verkeerde "
+"versie (te oud/te recent) van het bronpakket krijgen of helemaal geen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If the <option>--compile</option> option is specified then the package will "
+"be compiled to a binary .deb using <command>dpkg-buildpackage</command> for "
+"the architecture as defined by the <command>--host-architecture</command> "
+"option. If <option>--download-only</option> is specified then the source "
+"package will not be unpacked."
+msgstr ""
+"Indien de optie <option>--compile</option> opgegeven werd, zal het pakket "
+"tot een binair .deb-bestand gecompileerd worden met behulp van de opdracht "
+"<command>dpkg-buildpackage</command> en dit voor de architectuur die met de "
+"optie <command>--host-architecture</command> opgegeven werd. Als de optie "
+"<option>--download-only</option> opgegeven werd, zal het bronpakket niet "
+"uitgepakt worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"A specific source version can be retrieved by postfixing the source name "
+"with an equals and then the version to fetch, similar to the mechanism used "
+"for the package files. This enables exact matching of the source package "
+"name and version, implicitly enabling the <literal>APT::Get::Only-Source</"
+"literal> option."
+msgstr ""
+"Een specifieke versie van de broncode kunt u ophalen door de naam van het "
+"bronpakket te laten volgen door een gelijkheidsteken en de op te halen "
+"versie. Dit mechanisme is gelijkaardig aan datgene wat voor pakketbestanden "
+"gebruikt wordt. Dit maakt het mogelijk een exacte overeenkomst met de naam "
+"en het versienummer van het bronpakket te gebruiken, wat neerkomt op het "
+"impliciet aanzetten van de optie <literal>APT::Get::Only-Source</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Note that source packages are not installed and tracked in the "
+"<command>dpkg</command> database like binary packages; they are simply "
+"downloaded to the current directory, like source tarballs."
+msgstr ""
+"Merk op dat in tegenstelling tot binaire pakketten, bronpakketten niet "
+"opgenomen en opgevolgd worden in de database van <command>dpkg</command>. Ze "
+"worden gewoon opgehaald en in de huidige map geplaatst, zoals tar-archieven "
+"van broncode."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>build-dep</literal> causes apt-get to install/remove packages in an "
+"attempt to satisfy the build dependencies for a source package. By default "
+"the dependencies are satisfied to build the package natively. If desired a "
+"host-architecture can be specified with the <option>--host-architecture</"
+"option> option instead."
+msgstr ""
+"<literal>build-dep</literal> doet apt-get pakketten installeren/verwijderen "
+"i een poging om te voldoen aan de vereisten voor het bouwen van een "
+"bronpakket. Standaard wordt voldaan aan de vereisten voor het bouwen van het "
+"pakket voor de architectuur van het systeem. In de plaats daarvan kan "
+"desgewenst een architectuur gespecificeerd worden met de optie <option>--"
+"host-architecture</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>check</literal> is a diagnostic tool; it updates the package cache "
+"and checks for broken dependencies."
+msgstr ""
+"<literal>check</literal> is een diagnostisch gereedschap; het werkt de "
+"pakketcache bij en controleert op defecte vereisten."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>download</literal> will download the given binary package into the "
+"current directory."
+msgstr ""
+"<literal>download</literal> zal het opgegeven binaire pakket ophalen en in "
+"de huidige map plaatsen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>clean</literal> clears out the local repository of retrieved "
+"package files. It removes everything but the lock file from "
+"<filename>&cachedir;/archives/</filename> and <filename>&cachedir;/archives/"
+"partial/</filename>."
+msgstr ""
+"<literal>clean</literal> ruimt de lokale opslagplaats voor opgehaalde "
+"pakketbestanden op. Op het vergrendelingsbestand na ruimt het in "
+"<filename>&cachedir;/archives/</filename> en <filename>&cachedir;/archives/"
+"partial/</filename> alles op."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "(and the"
+msgstr "(en de"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias since 1.1)"
+msgstr "alias sinds 1.1)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Like <literal>clean</literal>, <literal>autoclean</literal> clears out the "
+"local repository of retrieved package files. The difference is that it only "
+"removes package files that can no longer be downloaded, and are largely "
+"useless. This allows a cache to be maintained over a long period without it "
+"growing out of control. The configuration option <literal>APT::Clean-"
+"Installed</literal> will prevent installed packages from being erased if it "
+"is set to off."
+msgstr ""
+"Net als <literal>clean</literal> ruimt <literal>autoclean</literal> de "
+"lokale opslagplaats voor opgehaalde pakketbestanden op. Het verschil is dat "
+"het enkel pakketbestanden opruimt die niet langer opgehaald kunnen worden en "
+"goeddeels waardeloos zijn. Dit laat toe om gedurende een lange tijd een "
+"cache bij te houden zonder dat die onbeheersbaar wordt. Door het uitzetten "
+"van de configuratieoptie <literal>APT::Clean-Installed</literal> kan het "
+"opruimen van pakketbestanden van geïnstalleerde pakketten verhinderd worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed."
+msgstr ""
+"<literal>autoremove</literal> wordt gebruikt om pakketten te verwijderen die "
+"automatisch geïnstalleerd werden om te voldoen aan de vereisten van andere "
+"pakketten en nu niet langer nodig zijn."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>changelog</literal> tries to download the changelog of a package "
+"and displays it through <command>sensible-pager</command>. By default it "
+"displays the changelog for the version that is installed. However, you can "
+"specify the same options as for the <option>install</option> command."
+msgstr ""
+"<literal>changelog</literal> tracht het changelog-bestand (logbestand met "
+"veranderingen) van een pakket op te halen en geeft dit weer via het commando "
+"<command>sensible-pager</command>. Standaard wordt het logbestand met "
+"wijzigingen weergegeven voor de geïnstalleerde versie. U kunt evenwel "
+"dezelfde opties opgeven als bij het commando <option>install</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Displays by default a deb822 formatted listing of information about all data "
+"files (aka index targets) <command>apt-get update</command> would download. "
+"Supports a <option>--format</option> option to modify the output format as "
+"well as accepts lines of the default output to filter the records by. The "
+"command is mainly used as an interface for external tools working with APT "
+"to get information as well as filenames for downloaded files so they can use "
+"them as well instead of downloading them again on their own. Detailed "
+"documentation is omitted here and can instead be found in the file &apt-"
+"acquire-additional-files; shipped by the <package>apt-doc</package> package."
+msgstr ""
+"Geeft standaard een volgens deb822 ingedeelde lijst weer met informatie over "
+"alle gegevensbestanden (ook soms indexbestanden of indexdoelen genoemd) die "
+"<command>apt-get update</command> zou downloaden. Ondersteunt de optie "
+"<option>--format</option> voor het aanpassen van de indeling van de uitvoer "
+"en accepteert ook regels uit de standaarduitvoer om er de gegevens mee te "
+"filteren. Het commando wordt hoofdzakelijk gebruikt als een interface voor "
+"extern gereedschap dat APT gebruikt om informatie te verkrijgen evenals de "
+"namen van opgehaalde bestanden, zodat ook dat gereedschap er gebruik van kan "
+"maken in plaats van ze ook zelf weer op te halen. Meer gedetailleerde "
+"documentatie wordt hier niet gegeven, maar is daarentegen wel te vinden in "
+"het bestand &apt-acquire-additional-files; dat te vinden is in het pakket "
+"<package>apt-doc</package>."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml apt-cache.8.xml apt-config.8.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "options"
+msgstr "opties"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not consider recommended packages as a dependency for installing. "
+"Configuration Item: <literal>APT::Install-Recommends</literal>."
+msgstr ""
+"Aanbevolen pakketten niet als te installeren vereisten beschouwen. "
+"Configuratie-item: <literal>APT::Install-Recommends</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Consider suggested packages as a dependency for installing. Configuration "
+"Item: <literal>APT::Install-Suggests</literal>."
+msgstr ""
+"Voorgestelde pakketten als te installeren vereisten beschouwen. Configuratie-"
+"item: <literal>APT::Install-Suggests</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Download only; package files are only retrieved, not unpacked or installed. "
+"Configuration Item: <literal>APT::Get::Download-Only</literal>."
+msgstr ""
+"Enkel downloaden; pakketbestanden worden enkel opgehaald, niet uitgepakt of "
+"geïnstalleerd. Configuratie-item: <literal>APT::Get::Download-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Fix; attempt to correct a system with broken dependencies in place. This "
+"option, when used with install/remove, can omit any packages to permit APT "
+"to deduce a likely solution. If packages are specified, these have to "
+"completely correct the problem. The option is sometimes necessary when "
+"running APT for the first time; APT itself does not allow broken package "
+"dependencies to exist on a system. It is possible that a system's dependency "
+"structure can be so corrupt as to require manual intervention (which usually "
+"means using <command>dpkg --remove</command> to eliminate some of the "
+"offending packages). Use of this option together with <option>-m</option> "
+"may produce an error in some situations. Configuration Item: <literal>APT::"
+"Get::Fix-Broken</literal>."
+msgstr ""
+"Herstellen; proberen een systeem met defecte vereisten te repareren. Als "
+"deze optie gebruikt wordt samen met install/remove, kan ze elk pakket "
+"overslaan om APT toe te laten tot een aannemelijke oplossing te komen. "
+"Indien pakketten opgegeven worden, moeten die het probleem volledig "
+"repareren. Soms is deze optie nodig wanneer APT voor de eerste keer "
+"uitgevoerd wordt. APT zelf laat niet toe dat op een systeem defecte "
+"pakketvereisten voorkomen. Het is mogelijk dat de vereistenstructuur van een "
+"systeem dermate defect is dat een manuele interventie noodzakelijk is "
+"(hetgeen meestal betekent dat <command>dpkg --remove</command> moet gebruikt "
+"worden om sommige problematische pakketten uit de weg te ruimen). Het "
+"gebruik van deze optie samen met <option>-m</option> kan in sommige "
+"omstandigheden een fout opleveren. Configuratie-item: <literal>APT::Get::Fix-"
+"Broken</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore missing packages; if packages cannot be retrieved or fail the "
+"integrity check after retrieval (corrupted package files), hold back those "
+"packages and handle the result. Use of this option together with <option>-f</"
+"option> may produce an error in some situations. If a package is selected "
+"for installation (particularly if it is mentioned on the command line) and "
+"it could not be downloaded then it will be silently held back. "
+"Configuration Item: <literal>APT::Get::Fix-Missing</literal>."
+msgstr ""
+"Ontbrekende pakketten negeren; indien pakketten niet opgehaald kunnen worden "
+"of indien na het ophalen de integriteitstoets mislukt (beschadigde "
+"pakketbestanden), behoud dan de geïnstalleerde versie van deze pakketten en "
+"ga om met het resultaat. Het gebruik van deze optie samen met <option>-f</"
+"option> kan in sommige situaties tot een fout leiden. Indien een pakket voor "
+"installatie geselecteerd werd (in het bijzonder wanneer het aan de "
+"commandoregel vermeld werd) en het niet opgehaald kon worden, dan zal het "
+"stilzwijgend op zijn huidige versie behouden blijven. Configuratie-item: "
+"<literal>APT::Get::Fix-Missing</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Disables downloading of packages. This is best used with <option>--ignore-"
+"missing</option> to force APT to use only the .debs it has already "
+"downloaded. Configuration Item: <literal>APT::Get::Download</literal>."
+msgstr ""
+"Schakelt het downloaden van pakketten uit. Dit wordt best gebruikt samen met "
+"<option>--ignore-missing</option> om APT te verplichten enkel .debs te "
+"gebruiken die het al gedownload heeft. Configuratie-item: <literal>APT::Get::"
+"Download</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Note that quiet level 2 implies <option>-y</option>; you should never "
+"use -qq without a no-action modifier such as -d, --print-uris or -s as APT "
+"may decide to do something you did not expect. Configuration Item: "
+"<literal>quiet</literal>."
+msgstr ""
+"Stil; produceert uitvoer, geschikt voor een logboekbestand. "
+"Voortgangsindicatoren worden overgeslagen. Meer q's, met een maximum van 2, "
+"maken de uitvoer beknopter. U kunt ook <option>-q=#</option> gebruiken om "
+"het niveau van beknopte uitvoer in te stellen en de waarde uit het "
+"configuratiebestand te overschrijven. Merk op dat beknopte uitvoer van het "
+"niveau 2 de optie <option>-y</option> impliceert; u zou nooit -qq zonder een "
+"optie van het type niets doen, zoals -d, --print-uris of -s, moeten "
+"gebruiken, omdat APT kan beslissen iets te gaan doen waaraan u zich niet "
+"verwachtte. Configuratie-item: <literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"No action; perform a simulation of events that would occur based on the "
+"current system state but do not actually change the system. Locking will be "
+"disabled (<option>Debug::NoLocking</option>) so the system state could "
+"change while <command>apt-get</command> is running. Simulations can also be "
+"executed by non-root users which might not have read access to all apt "
+"configuration distorting the simulation. A notice expressing this warning "
+"is also shown by default for non-root users (<option>APT::Get::Show-User-"
+"Simulation-Note</option>). Configuration Item: <literal>APT::Get::Simulate</"
+"literal>."
+msgstr ""
+"Geen actie; voer een simulatie uit van de gebeurtenissen die zich zouden "
+"voordoen op basis van de actuele toestand van het systeem, maar voer geen "
+"effectieve wijzigingen aan het systeem door. Vergrendeling wordt "
+"uitgeschakeld (<option>Debug::NoLocking</option>), zodat de toestand van het "
+"systeem eventueel zou kunnen wijzigen terwijl <command>apt-get</command> "
+"bezig is. Ook een niet-systeembeheerder (non-root) kan simulaties uitvoeren "
+"en als die geen leestoegang heeft tot alle configuraties van apt, kan dit de "
+"simulatie vertekenen. Niet-systeembeheerders krijgen standaard ook een "
+"opmerking te zien waarin deze waarschuwing gegeven wordt (<option>APT::Get::"
+"Show-User-Simulation-Note</option>). Configuratie-item: <literal>APT::Get::"
+"Simulate</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Simulated runs print out a series of lines, each representing a "
+"<command>dpkg</command> operation: configure (<literal>Conf</literal>), "
+"remove (<literal>Remv</literal>) or unpack (<literal>Inst</literal>). "
+"Square brackets indicate broken packages, and empty square brackets indicate "
+"breaks that are of no consequence (rare)."
+msgstr ""
+"Als men een simulatie uitvoert, worden een aantal regels weergegeven, "
+"waarbij elke regel een operatie van <command>dpkg</command> "
+"vertegenwoordigt: configureren (<literal>Conf</literal>), verwijderen "
+"(<literal>Remv</literal>) of uitpakken (<literal>Inst</literal>). Rechte "
+"haakjes duiden op defecte pakketten en lege rechte haakjes duiden op "
+"defecten zonder gevolgen (komt zelden voor)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Automatic yes to prompts; assume \"yes\" as answer to all prompts and run "
+"non-interactively. If an undesirable situation, such as changing a held "
+"package, trying to install a unauthenticated package or removing an "
+"essential package occurs then <literal>apt-get</literal> will abort. "
+"Configuration Item: <literal>APT::Get::Assume-Yes</literal>."
+msgstr ""
+"Een automatisch ja op vragen; ga uit van een ja-antwoord op alle vragen en "
+"voer de operatie niet-interactief uit. Indien er zich een niet-wenselijke "
+"situatie voordoet, zoals het wijzigen van een op zijn huidige versie "
+"vastgehouden pakket, een poging om een niet-geauthenticeerd pakket te "
+"installeren of het verwijderen van een essentieel pakket, zal <literal>apt-"
+"get</literal> afgebroken worden. Configuratie-item: <literal>APT::Get::"
+"Assume-Yes</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Automatic \"no\" to all prompts. Configuration Item: <literal>APT::Get::"
+"Assume-No</literal>."
+msgstr ""
+"Een automatisch \"neen\" op alle vragen. Configuratie-item: <literal>APT::"
+"Get::Assume-No</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not show a list of all packages that are to be upgraded. Configuration "
+"Item: <literal>APT::Get::Show-Upgraded</literal>."
+msgstr ""
+"Geef geen lijst weer van alle pakketten die opgewaardeerd zullen worden. "
+"Configuratie-item: <literal>APT::Get::Show-Upgraded</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Show full versions for upgraded and installed packages. Configuration Item: "
+"<literal>APT::Get::Show-Versions</literal>."
+msgstr ""
+"Geef het volledige versienummer weer van opgewaardeerde en geïnstalleerde "
+"pakketten. Configuratie-item: <literal>APT::Get::Show-Versions</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the architecture packages are built for by <command>apt-"
+"get source --compile</command> and how cross-builddependencies are "
+"satisfied. By default is it not set which means that the host architecture "
+"is the same as the build architecture (which is defined by <literal>APT::"
+"Architecture</literal>). Configuration Item: <literal>APT::Get::Host-"
+"Architecture</literal>."
+msgstr ""
+"Deze optie regelt voor welke architectuur pakketten gebouwd worden met de "
+"opdracht <command>apt-get source --compile</command> en hoe aan kruiselingse "
+"bouwvereisten voldaan wordt. Standaard staat dit niet ingesteld hetgeen "
+"betekent dat de computer waarop het pakket gebouwd wordt dezelfde "
+"architectuur heeft als die waarvoor het gebouwd wordt (hetgeen ingesteld "
+"wordt met <literal>APT::Architecture</literal>). Configuratie-item: "
+"<literal>APT::Get::Host-Architecture</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the activated build profiles for which a source package "
+"is built by <command>apt-get source --compile</command> and how build "
+"dependencies are satisfied. By default no build profile is active. More "
+"than one build profile can be activated at a time by concatenating them with "
+"a comma. Configuration Item: <literal>APT::Build-Profiles</literal>."
+msgstr ""
+"Deze optie regelt het activeren van bouwprofielen waarvoor een bronpakket "
+"gebouwd wordt met <command>apt-get source --compile</command>. Ze regelt ook "
+"hoe voldaan wordt aan de bouwvereisten. Standaard is geen enkel bouwprofiel "
+"actief. Er kan meer dan een bouwprofiel tegelijk geactiveerd worden door ze "
+"gescheiden door en komma samen te voegen. Configuratie-item: <literal>APT::"
+"Build-Profiles</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Compile source packages after downloading them. Configuration Item: "
+"<literal>APT::Get::Compile</literal>."
+msgstr ""
+"Bronpakketten na het downloaden compileren. Configuratie-item: <literal>APT::"
+"Get::Compile</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore package holds; this causes <command>apt-get</command> to ignore a "
+"hold placed on a package. This may be useful in conjunction with "
+"<literal>dist-upgrade</literal> to override a large number of undesired "
+"holds. Configuration Item: <literal>APT::Ignore-Hold</literal>."
+msgstr ""
+"Instructies dat pakketten op hun huidige versie behouden moeten blijven, "
+"negeren; dit zorgt ervoor dat <command>apt-get</command> de bij een pakket "
+"horende instructie 'behouden op de huidige versie' negeert. Dit kan nuttig "
+"zijn in combinatie met <literal>dist-upgrade</literal> om een groot aantal "
+"onwenselijke instructies van het type 'behouden op de huidige versie' te "
+"overschrijven. Configuratie-item: <literal>APT::Ignore-Hold</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Allow installing new packages when used in conjunction with "
+"<literal>upgrade</literal>. This is useful if the update of a installed "
+"package requires new dependencies to be installed. Instead of holding the "
+"package back <literal>upgrade</literal> will upgrade the package and install "
+"the new dependencies. Note that <literal>upgrade</literal> with this option "
+"will never remove packages, only allow adding new ones. Configuration Item: "
+"<literal>APT::Get::Upgrade-Allow-New</literal>."
+msgstr ""
+"Toelaten dat nieuwe pakketten geïnstalleerd worden als dit gebruikt wordt in "
+"combinatie met <literal>upgrade</literal>. Dit is nuttig als het voor het "
+"bijwerken van een geïnstalleerd pakket nodig is om nieuwe vereisten te "
+"installeren. In plaats van het pakket op de huidige versie vast te houden, "
+"zal <literal>upgrade</literal> het pakket opwaarderen en de nieuwe vereisten "
+"installeren. Merk op dat <literal>upgrade</literal> met deze optie nooit "
+"pakketten zal verwijderen. Enkel nieuwe toevoegen is dan toegestaan. "
+"Configuratie-item: <literal>APT::Get::Upgrade-Allow-New</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not upgrade packages; when used in conjunction with <literal>install</"
+"literal>, <literal>no-upgrade</literal> will prevent packages on the command "
+"line from being upgraded if they are already installed. Configuration Item: "
+"<literal>APT::Get::Upgrade</literal>."
+msgstr ""
+"Geen pakketten opwaarderen; als <literal>no-upgrade</literal> aan de "
+"commandoregel gebruikt wordt in combinatie met <literal>install</literal>, "
+"zal dat verhinderen dat reeds geïnstalleerde pakketten opgewaardeerd worden. "
+"Configuratie-item: <literal>APT::Get::Upgrade</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not install new packages; when used in conjunction with <literal>install</"
+"literal>, <literal>only-upgrade</literal> will install upgrades for already "
+"installed packages only and ignore requests to install new packages. "
+"Configuration Item: <literal>APT::Get::Only-Upgrade</literal>."
+msgstr ""
+"Geen nieuwe pakketten installeren; wanneer <literal>only-upgrade</literal> "
+"gebruikt wordt in combinatie met <literal>install</literal>, zal het enkel "
+"voor reeds geïnstalleerde pakketten opwaarderingen installeren en verzoeken "
+"om nieuwe pakketten te installeren negeren. Configuratie-item: <literal>APT::"
+"Get::Only-Upgrade</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This is a dangerous option that will cause apt to continue without prompting "
+"if it is doing downgrades. It should not be used except in very special "
+"situations. Using it can potentially destroy your system! Configuration "
+"Item: <literal>APT::Get::allow-downgrades</literal>. Introduced in APT 1.1."
+msgstr ""
+"Dit is een gevaarlijke optie die er voor zorgt dat apt zonder vragen "
+"voortgaat als het degradaties doorvoert. U zou dit niet moeten gebruiken "
+"behalve in zeer bijzondere situaties. Dit gebruiken kan mogelijkerwijs tot "
+"de vernietiging van uw systeem leiden! Configuratie-item: <literal>APT::Get::"
+"allow-downgrades</literal>. Geïntroduceerd in APT 1.1."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is removing essentials. It should not be used except "
+"in very special situations. Using it can potentially destroy your system! "
+"Configuration Item: <literal>APT::Get::allow-remove-essential</literal>. "
+"Introduced in APT 1.1."
+msgstr ""
+"Een ja doordrukken; dit is een gevaarlijke optie die er voor zorgt dat apt "
+"zonder vragen voortgaat als het essentiële pakketten verwijdert. U zou dit "
+"niet moeten gebruiken behalve in zeer bijzondere situaties. Dit gebruiken "
+"kan mogelijkerwijs tot de vernietiging van uw systeem leiden! Configuratie-"
+"item: <literal>APT::Get::allow-remove-essential</literal>. Geïntroduceerd in "
+"APT 1.1."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is changing held packages. It should not be used "
+"except in very special situations. Using it can potentially destroy your "
+"system! Configuration Item: <literal>APT::Get::allow-change-held-packages</"
+"literal>. Introduced in APT 1.1."
+msgstr ""
+"Een ja doordrukken; dit is een gevaarlijke optie die er voor zorgt dat apt "
+"zonder vragen voortgaat als het te handhaven pakketten wijzigt. U zou dit "
+"niet moeten gebruiken behalve in zeer bijzondere situaties. Dit gebruiken "
+"kan mogelijkerwijs tot de vernietiging van uw systeem leiden! Configuratie-"
+"item: <literal>APT::Get::allow-change-held-packages</literal>. "
+"Geïntroduceerd in APT 1.1."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is doing something potentially harmful. It should "
+"not be used except in very special situations. Using <literal>force-yes</"
+"literal> can potentially destroy your system! Configuration Item: "
+"<literal>APT::Get::force-yes</literal>. This is deprecated and replaced by "
+"<option>--allow-downgrades</option>, <option>--allow-remove-essential</"
+"option>, <option>--allow-change-held-packages</option> in 1.1."
+msgstr ""
+"Een ja doordrukken; dit is een gevaarlijke optie die er voor zorgt dat apt "
+"zonder vragen voortgaat als het iets doet dat schadelijk kan zijn. U zou dit "
+"niet moeten gebruiken behalve in zeer bijzondere situaties. Het gebruik van "
+"<literal>force-yes</literal> kan mogelijkerwijs tot de vernietiging van uw "
+"systeem leiden! Configuratie-item: <literal>APT::Get::force-yes</literal>. "
+"Deze optie is verouderd en werd in 1.1 vervangen door <option>--allow-"
+"downgrades</option>, <option>--allow-remove-essential</option>, <option>--"
+"allow-change-held-packages</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Instead of fetching the files to install their URIs are printed. Each URI "
+"will have the path, the destination file name, the size and the expected MD5 "
+"hash. Note that the file name to write to will not always match the file "
+"name on the remote site! This also works with the <literal>source</literal> "
+"and <literal>update</literal> commands. When used with the <literal>update</"
+"literal> command the MD5 and size are not included, and it is up to the user "
+"to decompress any compressed files. Configuration Item: <literal>APT::Get::"
+"Print-URIs</literal>."
+msgstr ""
+"In plaats van pakketten op te halen om ze te installeren wordt hun URI "
+"weergegeven. Elke URI bevat het pad en de naam van het doelbestand, zijn "
+"grootte en de verwachte MD5-frommel. Merk op dat de naam van het bestand "
+"waarnaartoe geschreven wordt niet steeds overeenkomt met de bestandsnaam op "
+"de externe site! Dit werkt ook met de commando's <literal>source</literal> "
+"en <literal>update</literal>. Bij gebruik in combinatie met het commando "
+"<literal>update</literal> zijn de MD5-frommel en de grootte niet inbegrepen "
+"en het is aan de gebruiker om eventuele gecomprimeerde bestanden uit te "
+"pakken. Configuratie-item: <literal>APT::Get::Print-URIs</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Use purge instead of remove for anything that would be removed. An asterisk "
+"(\"*\") will be displayed next to packages which are scheduled to be purged. "
+"<option>remove --purge</option> is equivalent to the <option>purge</option> "
+"command. Configuration Item: <literal>APT::Get::Purge</literal>."
+msgstr ""
+"Purge gebruiken in plaats van remove voor alles wat verwijderd zou worden. "
+"Er zal een sterretje (\"*\") staan naast de pakketten die ingepland staan om "
+"opgeruimd te worden. <option>remove --purge</option> is het equivalent van "
+"het commando <option>purge</option>. Configuratie-item: <literal>APT::Get::"
+"Purge</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Re-install packages that are already installed and at the newest version. "
+"Configuration Item: <literal>APT::Get::ReInstall</literal>."
+msgstr ""
+"Pakketten die reeds met hun nieuwste versie geïnstalleerd zijn opnieuw "
+"installeren. Configuratie-item: <literal>APT::Get::ReInstall</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option is on by default; use <literal>--no-list-cleanup</literal> to "
+"turn it off. When it is on, <command>apt-get</command> will automatically "
+"manage the contents of <filename>&statedir;/lists</filename> to ensure that "
+"obsolete files are erased. The only reason to turn it off is if you "
+"frequently change your sources list. Configuration Item: <literal>APT::Get::"
+"List-Cleanup</literal>."
+msgstr ""
+"Deze optie is standaard aangezet; gebruik <literal>--no-list-cleanup</"
+"literal> om ze uit te zetten. Indien ze geactiveerd is, zal <command>apt-"
+"get</command> automatisch de inhoud van <filename>&statedir;/lists</"
+"filename> beheren om te garanderen dat in onbruik geraakte bestanden "
+"verwijderd worden. De enige reden waarom u dit zou uitzetten is wanneer u "
+"vaak het bestand sources.list wijzigt. Configuratie-item: <literal>APT::Get::"
+"List-Cleanup</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the default input to the policy engine; it creates a "
+"default pin at priority 990 using the specified release string. This "
+"overrides the general settings in <filename>/etc/apt/preferences</"
+"filename>. Specifically pinned packages are not affected by the value of "
+"this option. In short, this option lets you have simple control over which "
+"distribution packages will be retrieved from. Some common examples might be "
+"<option>-t '2.1*'</option>, <option>-t unstable</option> or <option>-t sid</"
+"option>. Configuration Item: <literal>APT::Default-Release</literal>; see "
+"also the &apt-preferences; manual page."
+msgstr ""
+"Deze optie regelt de standaard invoer voor het aansturen van de "
+"beleidsvoering; ze stelt een standaard pinwaarde in op 990 voor de opgegeven "
+"release. Dit overschrijft de algemene instellingen uit <filename>/etc/apt/"
+"preferences</filename>. De waarde van deze optie heeft geen invloed op "
+"pakketten met een eigen pinwaarde. Kort samengevat laat deze optie u toe om "
+"op een eenvoudige wijze controle te houden over uit welke distributie "
+"pakketten opgehaald worden. Enkele gebruikelijke voorbeelden zijn <option>-t "
+"'2.1*'</option>, <option>-t unstable</option> en <option>-t sid</option>. "
+"Configuratie-item: <literal>APT::Default-Release</literal>; raadpleeg ook de "
+"man-pagina van &apt-preferences;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only perform operations that are 'trivial'. Logically this can be considered "
+"related to <option>--assume-yes</option>; where <option>--assume-yes</"
+"option> will answer yes to any prompt, <option>--trivial-only</option> will "
+"answer no. Configuration Item: <literal>APT::Get::Trivial-Only</literal>."
+msgstr ""
+"Voer enkel 'banale' operaties uit. Logisch gezien kan men dit beschouwen als "
+"gerelateerd aan <option>--assume-yes</option>. Waar <option>--assume-yes</"
+"option> op elke vraag ja antwoordt, zal <option>--trivial-only</option> nee "
+"antwoorden. Configuratie-item: <literal>APT::Get::Trivial-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If any packages are to be removed apt-get immediately aborts without "
+"prompting. Configuration Item: <literal>APT::Get::Remove</literal>."
+msgstr ""
+"Indien een of ander pakket verwijderd zou moeten worden, zal apt-get "
+"onmiddellijk afgebroken worden zonder een vraag te stellen. Configuratie-"
+"item: <literal>APT::Get::Remove</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If the command is either <literal>install</literal> or <literal>remove</"
+"literal>, then this option acts like running the <literal>autoremove</"
+"literal> command, removing unused dependency packages. Configuration Item: "
+"<literal>APT::Get::AutomaticRemove</literal>."
+msgstr ""
+"Indien het gegeven commando <literal>install</literal> of <literal>remove</"
+"literal> is, dan zal deze optie functioneren zoals wanneer de opdracht "
+"<literal>autoremove</literal> wordt uitgevoerd en zullen pakketten die niet "
+"langer door andere vereist worden, verwijderd worden. Configuratie-item: "
+"<literal>APT::Get::AutomaticRemove</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only has meaning for the <literal>source</literal> and <literal>build-dep</"
+"literal> commands. Indicates that the given source names are not to be "
+"mapped through the binary table. This means that if this option is "
+"specified, these commands will only accept source package names as "
+"arguments, rather than accepting binary package names and looking up the "
+"corresponding source package. Configuration Item: <literal>APT::Get::Only-"
+"Source</literal>."
+msgstr ""
+"Is enkel betekenisvol voor de commando's <literal>source</literal> en "
+"<literal>build-dep</literal>. Geeft aan dat voor de opgegeven namen van "
+"bronpakketten niet naar een overeenkomst gezocht moet worden via de tabel "
+"met binaire pakketten. Dit houdt in dat indien deze optie opgegeven werd, "
+"deze commando's enkel de naam van bronpakketten als argument zullen "
+"aanvaarden en niet de naam van een binair pakket om nadien het "
+"overeenkomstige bronpakket te gaan opzoeken. Configuratie-item: "
+"<literal>APT::Get::Only-Source</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Download only the diff, dsc, or tar file of a source archive. Configuration "
+"Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</"
+"literal>, and <literal>APT::Get::Tar-Only</literal>."
+msgstr ""
+"Enkel het diff-, dsc- of tar-bestand van een bronarchief downloaden. "
+"Configuratie-item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::"
+"Get::Dsc-Only</literal>, en <literal>APT::Get::Tar-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only process architecture-dependent build-dependencies. Configuration Item: "
+"<literal>APT::Get::Arch-Only</literal>."
+msgstr ""
+"Enkel architectuurafhankelijke bouwvereisten verwerken. Configuratie-item: "
+"<literal>APT::Get::Arch-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only process architecture-independent build-dependencies. Configuration "
+"Item: <literal>APT::Get::Indep-Only</literal>."
+msgstr ""
+"Enkel architectuur-onafhankelijke bouwvereisten verwerken. Configuratie-"
+"item: <literal>APT::Get::Indep-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore if packages can't be authenticated and don't prompt about it. This "
+"can be useful while working with local repositories, but is a huge security "
+"risk if data authenticity isn't ensured in another way by the user itself. "
+"The usage of the <option>Trusted</option> option for &sources-list; entries "
+"should usually be preferred over this global override. Configuration Item: "
+"<literal>APT::Get::AllowUnauthenticated</literal>."
+msgstr ""
+"Negeer dat pakketten niet geauthenticeerd kunnen worden en stel er geen "
+"vragen over. Dit kan nuttig zijn als met lokale pakketbronnen gewerkt wordt, "
+"maar het houdt een enorm veiligheidsrisico in als de authenticiteit van de "
+"gegevens niet op een andere manier door de gebruiker zelf verzekerd wordt. "
+"Het gebruik van de optie <option>Trusted</option> voor regels uit &sources-"
+"list; valt gewoonlijk te verkiezen boven deze globale vervanging. "
+"Configuratie-item: <literal>APT::Get::AllowUnauthenticated</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Forbid the update command to acquire unverifiable data from configured "
+"sources. APT will fail at the update command for repositories without valid "
+"cryptographically signatures. See also &apt-secure; for details on the "
+"concept and the implications. Configuration Item: <literal>Acquire::"
+"AllowInsecureRepositories</literal>."
+msgstr ""
+"Sta het commando update niet toe om niet-verifieerbare gegevens op te halen "
+"uit geconfigureerde pakketbronnen. Het commando update van APT zal mislukken "
+"bij pakketbronnen zonder geldige cryptografische ondertekening. Zie ook &apt-"
+"secure; voor meer informatie over het concept en de implicaties. "
+"Configuratie-item: <literal>Acquire::AllowInsecureRepositories</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Show user friendly progress information in the terminal window when packages "
+"are installed, upgraded or removed. For a machine parsable version of this "
+"data see README.progress-reporting in the apt doc directory. Configuration "
+"Items: <literal>Dpkg::Progress</literal> and <literal>Dpkg::Progress-Fancy</"
+"literal>."
+msgstr ""
+"Bij het installeren, opwaarderen of verwijderen van pakketten "
+"gebruikersvriendelijke voortgangsinformatie in het terminalvenster "
+"weergeven. Voor een door een machine te lezen versie van deze gegevens kunt "
+"u README.progress-reporting raadplegen in apt's doc-map. Configuratie-item: "
+"<literal>Dpkg::Progress</literal> en <literal>Dpkg::Progress-Fancy</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. See <option>--with-source</option> description in &apt-"
+"cache; for further details."
+msgstr ""
+"Voegt het opgegeven bestand toe als een metadatabron. Kan herhaald worden om "
+"meerdere bestanden toe te voegen. Zie voor verdere details de beschrijving "
+"van de optie <option>--with-source</option> in &apt-cache;."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml
+msgid "Files"
+msgstr "Bestanden"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
+"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
+"APT Howto."
+msgstr ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
+"&apt-secure;, De gebruikershandleiding voor APT in &guidesdir;, &apt-"
+"preferences;, de Howto voor APT."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"<command>apt-get</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+"<command>apt-get</command> geeft de terugkeerwaarde nul bij een normaal "
+"verlopen operatie, het decimaal getal 100 in geval van een fout."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cache.8.xml
+msgid "query the APT cache"
+msgstr "zoeken in de cache van APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid ""
+"<command>apt-cache</command> performs a variety of operations on APT's "
+"package cache. <command>apt-cache</command> does not manipulate the state of "
+"the system but does provide operations to search and generate interesting "
+"output from the package metadata. The metadata is acquired and updated via "
+"the 'update' command of e.g. <command>apt-get</command>, so that it can be "
+"outdated if the last update is too long ago, but in exchange <command>apt-"
+"cache</command> works independently of the availability of the configured "
+"sources (e.g. offline)."
+msgstr ""
+"<command>apt-cache</command> voert verschillende operaties uit op de "
+"pakketcache van APT. <command>apt-cache</command> wijzigt de toestand van "
+"het systeem niet, maar voorziet in operaties die de metadata van een pakket "
+"doorzoeken en er interessante uitvoer mee genereren. De metadata worden "
+"verkregen en bijgewerkt via het commando 'update' van bijvoorbeeld "
+"<command>apt-get</command>, waardoor ze verouderd kunnen zijn als de laatste "
+"update te lang geleden is. Maar daartegenover staat dat de werking van "
+"<command>apt-cache</command> niet afhankelijk is van de beschikbaarheid van "
+"de geconfigureerde pakketbronnen (bijv. offline)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>gencaches</literal> creates APT's package cache. This is done "
+"implicitly by all commands needing this cache if it is missing or outdated."
+msgstr ""
+"<literal>gencaches</literal> maakt de pakketcache van APT aan. Als die "
+"ontbreekt of verouderd is, wordt dit commando impliciet uitgevoerd door alle "
+"commando's die deze cache nodig hebben."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml
+msgid "&synopsis-pkg;"
+msgstr "&synopsis-pkg;"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>showpkg</literal> displays information about the packages listed on "
+"the command line. Remaining arguments are package names. The available "
+"versions and reverse dependencies of each package listed are listed, as well "
+"as forward dependencies for each version. Forward (normal) dependencies are "
+"those packages upon which the package in question depends; reverse "
+"dependencies are those packages that depend upon the package in question. "
+"Thus, forward dependencies must be satisfied for a package, but reverse "
+"dependencies need not be. For instance, <command>apt-cache showpkg "
+"libreadline2</command> would produce output similar to the following:"
+msgstr ""
+"<literal>showpkg</literal> geeft informatie weer over de aan de "
+"commandoregel opgesomde pakketten. De overige argumenten zijn pakketnamen. "
+"De beschikbare versies en achterwaartse vereisten van ieder opgesomd pakket "
+"worden weergegeven, evenals de voorwaartse vereisten voor elke versie. "
+"Voorwaartse (normaal) vereisten zijn die pakketten waarvan het pakket in "
+"kwestie afhankelijk is. Achterwaartse vereisten zijn die pakketten die "
+"afhankelijk zijn van het pakket in kwestie. Dus, aan de voorwaartse "
+"vereisten van een pakket moet voldaan worden, aan de achterwaartse vereisten "
+"niet. Bijvoorbeeld, <command>apt-cache showpkg libreadline2</command> zal "
+"uitvoer genereren in de zin van:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-cache.8.xml
+#, no-wrap
+msgid ""
+"Package: libreadline2\n"
+"Versions: 2.1-12(/var/state/apt/lists/foo_Packages),\n"
+"Reverse Depends: \n"
+" libreadlineg2,libreadline2\n"
+" libreadline2-altdev,libreadline2\n"
+"Dependencies:\n"
+"2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))\n"
+"Provides:\n"
+"2.1-12 - \n"
+"Reverse Provides: \n"
+msgstr ""
+"Package: libreadline2\n"
+"Versions: 2.1-12(/var/state/apt/lists/foo_Packages),\n"
+"Reverse Depends: \n"
+" libreadlineg2,libreadline2\n"
+" libreadline2-altdev,libreadline2\n"
+"Dependencies:\n"
+"2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))\n"
+"Provides:\n"
+"2.1-12 - \n"
+"Reverse Provides: \n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Thus it may be seen that libreadline2, version 2.1-12, depends on libc5 and "
+"ncurses3.0 which must be installed for libreadline2 to work. In turn, "
+"libreadlineg2 and libreadline2-altdev depend on libreadline2. If "
+"libreadline2 is installed, libc5 and ncurses3.0 (and ldso) must also be "
+"installed; libreadlineg2 and libreadline2-altdev do not have to be "
+"installed. For the specific meaning of the remainder of the output it is "
+"best to consult the apt source code."
+msgstr ""
+"Hier is dus te zien dat libreadline2, versie 2.1-12, afhankelijk is van "
+"libc5 en ncurses3.0 die geïnstalleerd moeten zijn opdat libreadline2 zou "
+"werken. Op hun beurt zijn libreadlineg2 en libreadline2-altdev afhankelijk "
+"van libreadline2. Indien libreadline2 geïnstalleerd wordt, moeten ook libc5 "
+"en ncurses3.0 (en ldso) geïnstalleerd zijn; libreadlineg2 en libreadline2-"
+"altdev moeten niet geïnstalleerd worden. Om de exacte betekenis van de rest "
+"van de uitvoer te kennen, raadpleegt u best de broncode van apt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>stats</literal> displays some statistics about the cache. No "
+"further arguments are expected. Statistics reported are:"
+msgstr ""
+"<literal>stats</literal> geeft enkele statistieken weer over de cache. Er "
+"worden geen andere argumenten verwacht. De weergegeven statistieken zijn:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total package names</literal> is the number of package names found "
+"in the cache."
+msgstr ""
+"<literal>Total package names</literal> is het aantal pakketnamen dat in de "
+"cache gevonden werd."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Normal packages</literal> is the number of regular, ordinary "
+"package names; these are packages that bear a one-to-one correspondence "
+"between their names and the names used by other packages for them in "
+"dependencies. The majority of packages fall into this category."
+msgstr ""
+"<literal>Normal packages</literal> is het aantal reguliere, gewone "
+"pakketnamen; dit zijn pakketten met een één-op-één relatie tussen hun naam "
+"en de naam waarmee andere pakketten naar hen verwijzen om een vereiste aan "
+"te geven. De meerderheid van de pakketten valt in deze categorie."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Pure virtual packages</literal> is the number of packages that "
+"exist only as a virtual package name; that is, packages only \"provide\" the "
+"virtual package name, and no package actually uses the name. For instance, "
+"\"mail-transport-agent\" in the Debian system is a pure virtual package; "
+"several packages provide \"mail-transport-agent\", but there is no package "
+"named \"mail-transport-agent\"."
+msgstr ""
+"<literal>Pure virtual packages</literal> is het aantal pakketten dat enkel "
+"bestaat als een virtuele pakketnaam. Dit houdt in dat pakketten enkel "
+"\"voorzien in\" de virtuele pakketnaam en dat geen enkel pakket echt die "
+"naam gebruikt. Bijvoorbeeld, \"mail-transport-agent\" is in het Debian "
+"systeem een zuiver virtueel pakket. Verschillende pakketten voorzien in "
+"\"mail-transport-agent\", maar er is geen enkel pakket dat de naam \"mail-"
+"transport-agent\" draagt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Single virtual packages</literal> is the number of packages with "
+"only one package providing a particular virtual package. For example, in the "
+"Debian system, \"X11-text-viewer\" is a virtual package, but only one "
+"package, xless, provides \"X11-text-viewer\"."
+msgstr ""
+"<literal>Single virtual packages</literal> is het aantal virtuele pakketten "
+"waarvoor slechts een pakket in dat specifieke virtuele pakket voorziet. In "
+"het Debian systeem is bijvoorbeeld \"X11-text-viewer\" een virtueel pakket, "
+"maar slechts een pakket, xless, voorziet in \"X11-text-viewer\"."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Mixed virtual packages</literal> is the number of packages that "
+"either provide a particular virtual package or have the virtual package name "
+"as the package name. For instance, in the Debian system, \"debconf\" is both "
+"an actual package, and provided by the debconf-tiny package."
+msgstr ""
+"<literal>Mixed virtual packages</literal> is het aantal pakketten dat ofwel "
+"voorziet in een specifiek virtueel pakket of als pakketnaam de naam van het "
+"virtueel pakket draagt. In het Debian systeem is \"debconf\" bijvoorbeeld "
+"tegelijk een echt pakket en tevens wordt er in voorzien door het pakket "
+"debconf-tiny."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Missing</literal> is the number of package names that were "
+"referenced in a dependency but were not provided by any package. Missing "
+"packages may be an evidence if a full distribution is not accessed, or if a "
+"package (real or virtual) has been dropped from the distribution. Usually "
+"they are referenced from Conflicts or Breaks statements."
+msgstr ""
+"<literal>Missing</literal> is het aantal pakketnamen waarnaar verwezen wordt "
+"in een vereiste, maar waarin door geen enkel pakket voorzien wordt. "
+"Ontbrekende pakketten kunnen opduiken wanneer men geen toegang heeft tot een "
+"volledige distributie of indien een pakket (reëel of virtueel) verwijderd "
+"werd uit de distributie. Gewoonlijk wordt ernaar verwezen in een Conflicts "
+"of een Breaks declaratie."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total distinct</literal> versions is the number of package versions "
+"found in the cache. If more than one distribution is being accessed (for "
+"instance, \"stable\" and \"unstable\"), this value can be considerably "
+"larger than the number of total package names."
+msgstr ""
+"<literal>Total distinct</literal> versies is het aantal pakketversies dat in "
+"de cache aangetroffen wordt. Indien er gebruik gemaakt wordt van meer dan "
+"een distributie (bijvoorbeeld \"stable\" en \"unstable\"), dan kan deze "
+"waarde aanzienlijk groter zijn dan het totale aantal pakketnamen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total dependencies</literal> is the number of dependency "
+"relationships claimed by all of the packages in the cache."
+msgstr ""
+"<literal>Total dependencies</literal> is het totaal aantal vereistenrelaties "
+"die alle pakketten die zich in de cache bevinden, samen opvragen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>showsrc</literal> displays all the source package records that "
+"match the given package names. All versions are shown, as well as all "
+"records that declare the name to be a binary package. Use <option>--only-"
+"source</option> to display only source package names."
+msgstr ""
+"<literal>showsrc</literal> geeft alle fiches van bronpakketten weer die "
+"overeenkomen met de opgegeven pakketnamen. Alle versies worden weergegeven "
+"evenals alle fiches van binaire pakketten die met de naam overeenkomen. "
+"Gebruik <option>--only-source</option> om louter bronpakketten weer te geven."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dump</literal> shows a short listing of every package in the cache. "
+"It is primarily for debugging."
+msgstr ""
+"<literal>dump</literal> geeft een beknopte lijst weer van alle pakketten uit "
+"de cache. Dit is in de eerste plaats bedoeld om te debuggen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dumpavail</literal> prints out an available list to stdout. This is "
+"suitable for use with &dpkg; and is used by the &dselect; method."
+msgstr ""
+"<literal>dumpavail</literal> geeft op stdout een lijst van beschikbare "
+"pakketten weer. Dit is geschikt om gebruikt te worden met &dpkg; en ook de "
+"meethode &dselect; maakt er gebruik van."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>unmet</literal> displays a summary of all unmet dependencies in the "
+"package cache."
+msgstr ""
+"<literal>unmet</literal> geeft een samenvatting van alle vereisten waaraan "
+"in de pakketcache niet voldaan wordt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>show</literal> performs a function similar to <command>dpkg --print-"
+"avail</command>; it displays the package records for the named packages."
+msgstr ""
+"<literal>show</literal> vervult een functie die vergelijkbaar is met "
+"<command>dpkg --print-avail</command>. Het geeft de pakketsteekkaarten weer "
+"van de genoemde pakketten."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml
+msgid "&synopsis-regex;"
+msgstr "&synopsis-regex;"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>search</literal> performs a full text search on all available "
+"package lists for the POSIX regex pattern given, see &regex;. It searches "
+"the package names and the descriptions for an occurrence of the regular "
+"expression and prints out the package name and the short description, "
+"including virtual package names. If <option>--full</option> is given then "
+"output identical to <literal>show</literal> is produced for each matched "
+"package, and if <option>--names-only</option> is given then the long "
+"description is not searched, only the package name and provided packages are."
+msgstr ""
+"<literal>search</literal> doorzoekt de volledige inhoud van alle beschikbare "
+"pakketlijsten aan de hand van de opgegeven POSIX reguliere expressie; zie "
+"&regex;. Het zoekt in de pakketnamen en de beschrijvingen of de reguliere "
+"expressie erin aangetroffen wordt en geeft de pakketnaam en de beknopte "
+"beschrijving weer, met inbegrip van de pakketnamen van virtuele pakketten. "
+"Indien <option>--full</option> opgegeven werd, dan wordt voor elk "
+"overeenkomstig pakket een uitvoer geproduceerd die identiek is aan die van "
+"<literal>show</literal>. En indien <option>--names-only</option> werd "
+"opgegeven, dan wordt niet in de uitgebreide omschrijving gezocht, maar wordt "
+"enkel de pakketnaam en de pakketten waarin voorzien wordt doorzocht."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Separate arguments can be used to specify multiple search patterns that are "
+"and'ed together."
+msgstr ""
+"Men kan afzonderlijke argumenten opgeven om verschillende zoekpatronen te "
+"specificeren, waarop dan een logische en toegepast wordt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>depends</literal> shows a listing of each dependency a package has "
+"and all the possible other packages that can fulfill that dependency."
+msgstr ""
+"<literal>depends</literal> geeft een lijst weer van alle vereisten van een "
+"pakket en alle mogelijke andere pakketten die aan deze vereisten tegemoet "
+"kunnen komen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>rdepends</literal> shows a listing of each reverse dependency a "
+"package has."
+msgstr ""
+"<literal>rdepends</literal> geeft de lijst van alle achterwaartse vereisten "
+"van een pakket weer."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml
+msgid "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+msgstr "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"This command prints the name of each package APT knows. The optional "
+"argument is a prefix match to filter the name list. The output is suitable "
+"for use in a shell tab complete function and the output is generated "
+"extremely quickly. This command is best used with the <option>--generate</"
+"option> option."
+msgstr ""
+"Dit commando geeft de naam weer van elk pakket dat door APT gekend is. Een "
+"prefix om de lijst van pakketnamen te filteren kan als optioneel argument "
+"gegeven worden. De uitvoer is geschikt om gebruikt te worden met de shell-"
+"functie Tab-aanvulling en ze wordt extreem snel gegenereerd. Dit commando "
+"wordt best gebruikt met de optie <option>--generate</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Note that a package which APT knows of is not necessarily available to "
+"download, installable or installed, e.g. virtual packages are also listed in "
+"the generated list."
+msgstr ""
+"Merk op dat een pakket waarvan APT weet heeft niet noodzakelijk gedownload "
+"of geïnstalleerd kan worden of geïnstalleerd is. Virtuele pakketten worden "
+"bijvoorbeeld ook opgenomen in de gegenereerde lijst."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dotty</literal> takes a list of packages on the command line and "
+"generates output suitable for use by dotty from the <ulink url=\"http://www."
+"research.att.com/sw/tools/graphviz/\">GraphViz</ulink> package. The result "
+"will be a set of nodes and edges representing the relationships between the "
+"packages. By default the given packages will trace out all dependent "
+"packages; this can produce a very large graph. To limit the output to only "
+"the packages listed on the command line, set the <literal>APT::Cache::"
+"GivenOnly</literal> option."
+msgstr ""
+"<literal>dotty</literal> pikt op de commandoregel een lijst pakketten op en "
+"genereert uitvoer die geschikt is om gebruikt te worden door dotty uit het "
+"pakket <ulink url=\"http://www.research.att.com/sw/tools/graphviz/"
+"\">GraphViz</ulink>. Het resultaat is een geheel van knooppunten en gebogen "
+"lijnen die de relaties tussen pakketten voorstellen. Standaard trekken de "
+"als argument opgegeven pakketten al hun vereisten na, hetgeen een zeer "
+"uitgebreide grafiek kan opleveren. Om de uitvoer te beperken tot die "
+"pakketten die expliciet opgegeven werden aan de commandoregel, stelt men de "
+"optie <literal>APT::Cache::GivenOnly</literal> in."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"The resulting nodes will have several shapes; normal packages are boxes, "
+"pure virtual packages are triangles, mixed virtual packages are diamonds, "
+"missing packages are hexagons. Orange boxes mean recursion was stopped (leaf "
+"packages), blue lines are pre-depends, green lines are conflicts."
+msgstr ""
+"De knooppunten in het weergegeven resultaat kunnen verschillende vormen "
+"aannemen: gewone pakketten worden als een vierkant voorgesteld, zuivere "
+"virtuele pakketten als een driehoek, gemengde virtuele pakketten als "
+"diamanten en ontbrekende pakketten als een zeshoek. Een vierkant met een "
+"oranje kleur stelt het einde van een recursiviteit voor (leaf package - "
+"eindpakket). Blauwe lijnen stellen een voorafgaandelijke vereiste voor en "
+"groene lijnen symboliseren conflicten."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid "Caution, dotty cannot graph larger sets of packages."
+msgstr ""
+"Opgelet, dotty kan geen grafiek maken van een uitgebreide set pakketten."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"The same as <literal>dotty</literal>, only for xvcg from the <ulink url="
+"\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</ulink>."
+msgstr ""
+"Hetzelfde als <literal>dotty</literal>, maar dan voor xvcg uit het <ulink "
+"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG "
+"gereedschap</ulink>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml
+msgid "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+msgstr "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>policy</literal> is meant to help debug issues relating to the "
+"preferences file. With no arguments it will print out the priorities of each "
+"source. Otherwise it prints out detailed information about the priority "
+"selection of the named package."
+msgstr ""
+"<literal>policy</literal> is bedoeld om te helpen bij het debuggen van "
+"problemen die verband houden met het bestand preferences. Zonder argumenten "
+"zal het de prioriteiten van elke pakketbron weergeven. Anders zal het voor "
+"het opgegeven pakket gedetailleerde informatie over de prioriteitskeuze "
+"weergeven."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>apt-cache</literal>'s <literal>madison</literal> command attempts "
+"to mimic the output format and a subset of the functionality of the Debian "
+"archive management tool, <literal>madison</literal>. It displays available "
+"versions of a package in a tabular format. Unlike the original "
+"<literal>madison</literal>, it can only display information for the "
+"architecture for which APT has retrieved package lists (<literal>APT::"
+"Architecture</literal>)."
+msgstr ""
+"Het commando <literal>madison</literal> van <literal>apt-cache</literal> "
+"tracht het uitvoerformaat en een deel van de functionaliteit na te bootsen "
+"van <literal>madison</literal>, het Debian gereedschap voor archiefbeheer. "
+"Het geeft de beschikbare versies van een pakket weer in een tabelformaat. In "
+"tegenstelling tot het originele <literal>madison</literal>, kan het enkel "
+"informatie weergeven betreffende de architectuur waarvoor APT pakketlijsten "
+"opgehaald heeft (<literal>APT::Architecture</literal>)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Select the file to store the package cache. The package cache is the primary "
+"cache used by all operations. Configuration Item: <literal>Dir::Cache::"
+"pkgcache</literal>."
+msgstr ""
+"Het bestand waarin de pakketcache opgeslagen wordt kiezen. De pakketcache is "
+"de primaire cache die door alle operaties aangesproken wordt. Configuratie-"
+"item: <literal>Dir::Cache::pkgcache</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Select the file to store the source cache. The source is used only by "
+"<literal>gencaches</literal> and it stores a parsed version of the package "
+"information from remote sources. When building the package cache the source "
+"cache is used to avoid reparsing all of the package files. Configuration "
+"Item: <literal>Dir::Cache::srcpkgcache</literal>."
+msgstr ""
+"Het bestand kiezen waarin de broncache opgeslagen wordt. Deze broncache "
+"wordt enkel door <literal>gencaches</literal> gebruikt en het bevat een "
+"verwerkte versie van de pakketinformatie afkomstig van externe bronnen. "
+"Wanneer de pakketcache opgebouwd wordt, wordt gebruik gemaakt van de "
+"broncache om te vermijden dat alle pakketbestanden opnieuw verwerkt moeten "
+"worden. Configuratie-item: <literal>Dir::Cache::srcpkgcache</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quietness up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quietness level, overriding the "
+"configuration file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+"Stille modus. Door het weglaten van voortgangsindicatoren genereert het "
+"uitvoer die geschikt is voor logbestanden. Meer q's, met een maximum van 2, "
+"leveren een hogere mate van beknopte uitvoer op. U kunt ook <option>-q=#</"
+"option> gebruiken om de mate van gereduceerde uitvoer in te stellen en zo de "
+"instelling uit het configuratiebestand overschrijven. Configuratie-item: "
+"<literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print only important dependencies; for use with <literal>unmet</literal> and "
+"<literal>depends</literal>. Causes only Depends and Pre-Depends relations to "
+"be printed. Configuration Item: <literal>APT::Cache::Important</literal>."
+msgstr ""
+"Enkel belangrijke vereisten weergeven. Is bedoeld voor gebruik met "
+"<literal>unmet</literal> en <literal>depends</literal>. Maakt dat enkel de "
+"relaties Depends en Pre-Depends weergegeven worden. Configuratie-item: "
+"<literal>APT::Cache::Important</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Per default the <command>depends</command> and <command>rdepends</command> "
+"print all dependencies. This can be tweaked with these flags which will omit "
+"the specified dependency type. Configuration Item: <literal>APT::Cache::"
+"Show<replaceable>DependencyType</replaceable></literal> e.g. <literal>APT::"
+"Cache::ShowRecommends</literal>."
+msgstr ""
+"Standaard geven de opdrachten <literal>depends</literal> en "
+"<literal>rdepends</literal> alle vereisten weer. Met deze opties kan dit "
+"aangepast worden, waardoor het opgegeven vereistentype weggelaten wordt. "
+"Configuratie-item: <literal>APT::Cache::Show<replaceable>DependencyType</"
+"replaceable></literal>, bijvoorbeeld <literal>APT::Cache::ShowRecommends</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Per default <command>depends</command> and <command>rdepends</command> print "
+"only dependencies explicitly expressed in the metadata. With this flag it "
+"will also show dependencies implicitly added based on the encountered data. "
+"A <literal>Conflicts: foo</literal> e.g. expresses implicitly that this "
+"package also conflicts with the package foo from any other architecture. "
+"Configuration Item: <literal>APT::Cache::ShowImplicit</literal>."
+msgstr ""
+"Standaard geven <literal>depends</literal> en <literal>rdepends</literal> "
+"enkel die vereisten weer die expliciet in de metadata vermeld worden. Met "
+"deze optie worden ook vereisten getoond die impliciet toegevoegd worden op "
+"basis van de gevonden gegevens. Bijvoorbeeld een <literal>Conflicts: foo</"
+"literal> houdt impliciet in dat dit pakket ook tegenstrijdig is met het "
+"pakket foo uit om het even welke andere architectuur. Configuratie-item: "
+"<literal>APT::Cache::ShowImplicit</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print full package records when searching. Configuration Item: "
+"<literal>APT::Cache::ShowFull</literal>."
+msgstr ""
+"Bij zoekbewerkingen de volledige steekkaart van pakketten weergeven. "
+"Configuratie-item: <literal>APT::Cache::ShowFull</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print full records for all available versions. This is the default; to turn "
+"it off, use <option>--no-all-versions</option>. If <option>--no-all-"
+"versions</option> is specified, only the candidate version will be displayed "
+"(the one which would be selected for installation). This option is only "
+"applicable to the <literal>show</literal> command. Configuration Item: "
+"<literal>APT::Cache::AllVersions</literal>."
+msgstr ""
+"De volledige steekkaart van alle beschikbare versies weergeven. Dit is de "
+"standaard. Om dit uit te schakelen moet u <option>--no-all-versions</option> "
+"gebruiken. Indien <option>--no-all-versions</option> werd opgegeven, zal "
+"enkel de informatie over het pakket dat kandidaat voor installatie is, "
+"getoond worden. Deze optie is enkel op het commando <literal>show</literal> "
+"van toepassing. Configuratie-item: <literal>APT::Cache::AllVersions</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Perform automatic package cache regeneration, rather than use the cache as "
+"it is. This is the default; to turn it off, use <option>--no-generate</"
+"option>. Configuration Item: <literal>APT::Cache::Generate</literal>."
+msgstr ""
+"Automatisch een nieuwe pakketcache genereren, eerder dan de bestaande "
+"pakketcache te gebruiken. Dit is de standaard. Om dit uit te schakelen moet "
+"u <option>--no-generate</option> gebruiken. Configuratie-item: <literal>APT::"
+"Cache::Generate</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Only search on the package and provided package names, not the long "
+"descriptions. Configuration Item: <literal>APT::Cache::NamesOnly</literal>."
+msgstr ""
+"Enkel zoeken in de pakketnamen en in de pakketnamen waarin voorzien wordt en "
+"niet in de uitgebreide beschrijvingen. Configuratie-item: <literal>APT::"
+"Cache::NamesOnly</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Make <literal>pkgnames</literal> print all names, including virtual packages "
+"and missing dependencies. Configuration Item: <literal>APT::Cache::"
+"AllNames</literal>."
+msgstr ""
+"<literal>pkgnames</literal> alle namen laten weergeven, inclusief virtuele "
+"pakketten en ontbrekende vereisten. Configuratie-item: <literal>APT::Cache::"
+"AllNames</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Make <literal>depends</literal> and <literal>rdepends</literal> recursive so "
+"that all packages mentioned are printed once. Configuration Item: "
+"<literal>APT::Cache::RecurseDepends</literal>."
+msgstr ""
+"<literal>depends</literal> en <literal>rdepends</literal> recursief laten "
+"werken, zodat alle vermelde pakketten eenmaal weergegeven worden. "
+"Configuratie-item: <literal>APT::Cache::RecurseDepends</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Limit the output of <literal>depends</literal> and <literal>rdepends</"
+"literal> to packages which are currently installed. Configuration Item: "
+"<literal>APT::Cache::Installed</literal>."
+msgstr ""
+"De uitvoer van <literal>depends</literal> en <literal>rdepends</literal> "
+"beperken tot pakketten die momenteel geïnstalleerd zijn. Configuratie-item: "
+"<literal>APT::Cache::Installed</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. Supported are currently <literal>*.deb</literal>, "
+"<literal>*.dsc</literal>, <literal>*.changes</literal>, <literal>Sources</"
+"literal> and <literal>Packages</literal> files as well as source package "
+"directories. Files are matched based on their name only, not their content!"
+msgstr ""
+"Voegt het opgegeven bestand toe als een bron voor metadata. Kan herhaald "
+"worden om meerdere bestanden toe te voegen. Momenteel worden de bestanden "
+"<literal>*.deb</literal>, <literal>*.dsc</literal>, <literal>*.changes</"
+"literal>, <literal>Sources</literal> en <literal>Packages</literal> "
+"ondersteund evenals mappen van broncodepakketten. Overeenstemmende bestanden "
+"worden enkel op basis van hun naam gevonden, niet op basis van hun inhoud!"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Sources</literal> and <literal>Packages</literal> can be compressed "
+"in any format apt supports as long as they have the correct extension. If "
+"you need to store multiple of these files in one directory you can prefix a "
+"name of your choice with the last character being an underscore "
+"(\"<literal>_</literal>\"). Example: my.example_Packages.xz"
+msgstr ""
+"Bestanden <literal>Sources</literal> en <literal>Packages</literal> mogen "
+"gecomprimeerd worden in elk formaat dat door apt ondersteund wordt, zolang "
+"ze de correcte extensie hebben. Indien u in één map meerdere van deze "
+"bestanden moet opslaan, kunt u aan de naam een voorvoegsel naar keuze "
+"toevoegen met als laatste letter een liggend streepje (\"<literal>_</literal>"
+"\"). Bijvoorbeeld: mijn.voorbeeld_Packages.xz"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Note that these sources are treated as trusted (see &apt-secure;). "
+"Configuration Item: <literal>APT::Sources::With</literal>."
+msgstr ""
+"Merk op dat deze bronnen beschouwd worden als te vertrouwen (zie &apt-"
+"secure;). Configuratie-item: <literal>APT::Sources::With</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid "&apt-conf;, &sources-list;, &apt-get;"
+msgstr "&apt-conf;, &sources-list;, &apt-get;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid ""
+"<command>apt-cache</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-cache</command> geeft de terugkeerwaarde nul bij een normaal "
+"verlopen operatie, het decimaal getal 100 in geval van een fout."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-key.8.xml
+msgid "APT key management utility"
+msgstr "Hulpprogramma voor het beheer van de sleutels van APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"<command>apt-key</command> is used to manage the list of keys used by apt to "
+"authenticate packages. Packages which have been authenticated using these "
+"keys will be considered trusted."
+msgstr ""
+"<command>apt-key</command> wordt gebruikt om de lijst van sleutels te "
+"beheren die door apt gebruikt worden om pakketten te authenticeren. "
+"Pakketten die met deze sleutels geauthenticeerd werden, worden als "
+"betrouwbaar beschouwd."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Note that if usage of <command>apt-key</command> is desired the additional "
+"installation of the GNU Privacy Guard suite (packaged in <package>gnupg</"
+"package>) is required. For this reason alone the programmatic usage "
+"(especially in package maintainerscripts!) is strongly discouraged. Further "
+"more the output format of all commands is undefined and can and does change "
+"whenever the underlying commands change. <command>apt-key</command> will try "
+"to detect such usage and generates warnings on stderr in these cases."
+msgstr ""
+"Merk op dat als het gebruik van het commando <command>apt-key</command> "
+"gewenst is, dan ook de installatie van de GNU Privacy Guard suite (verpakt "
+"in het pakket <package>gnupg</package>) vereist is. Enkel omwille daarvan al "
+"wordt het gebruik ervan in programma's (zeker in scripts voor "
+"pakketonderhoud) sterk afgeraden. Daarenboven wordt de indeling van de "
+"uitvoer van alle commando's onvoorspelbaar en kan die wijzigen telkens "
+"wanneer de achterliggende commando's wijzigen. <command>apt-key</command> "
+"zal een dergelijk gebruik trachten te detecteren en geeft in dergelijke "
+"gevallen waarschuwingen op de standaard foutuitvoer."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml
+msgid "Supported keyring files"
+msgstr "Ondersteunde sleutelbosbestanden"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
+"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
+"the keybox database format introduced in newer &gpg; versions as default for "
+"keyring files. Binary keyring files intended to be used with any apt version "
+"should therefore always be created with <command>gpg --export</command>."
+msgstr ""
+"apt-key ondersteunt enkel de binaire indeling van OpenPGP (ook gekend als "
+"\"GPG key public ring\") bij bestanden met de extensie \"<literal>gpg</"
+"literal>\" en niet de database-indeling keybox (sleutelkistje) die in "
+"recentere &gpg;-versies als standaard gebruikt wordt voor "
+"sleutelbosbestanden. Binaire sleutelbosbestanden die met om het even welke "
+"versie van apt gebruikt moeten kunnen worden, moeten daarom steeds "
+"aangemaakt worden met het commando <command>gpg --export</command>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Alternatively, if all systems which should be using the created keyring have "
+"at least apt version >= 1.4 installed, you can use the ASCII armored format "
+"with the \"<literal>asc</literal>\" extension instead which can be created "
+"with <command>gpg --armor --export</command>."
+msgstr ""
+"In het andere geval, als op alle systemen die de aangemaakte sleutelbos "
+"moeten gebruiken, minstens een versie van apt >= 1.4 geïnstalleerd is, kunt "
+"u wel de ASCII-armor indeling met de extensie \"<literal>asc</literal>\" "
+"gebruiken die met het commando <command>gpg --armor --export</command> "
+"gecreëerd kan worden."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml
+msgid "Commands"
+msgstr "Commando's"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Add a new key to the list of trusted keys. The key is read from the "
+"filename given with the parameter &synopsis-param-filename; or if the "
+"filename is <literal>-</literal> from standard input."
+msgstr ""
+"Een nieuwe sleutel toevoegen aan de lijst van betrouwbare sleutels. De "
+"sleutel wordt gelezen uit het bestand waarvan de naam met de parameter "
+"&synopsis-param-filename; opgegeven werd of uit de standaardinvoer als de "
+"bestandsnaam <literal>-</literal> is."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"It is critical that keys added manually via <command>apt-key</command> are "
+"verified to belong to the owner of the repositories they claim to be for "
+"otherwise the &apt-secure; infrastructure is completely undermined."
+msgstr ""
+"Het is van cruciaal belang dat bij sleutels die handmatig toegevoegd worden "
+"via <command>apt-key</command>, geverifieerd wordt of de bewering dat ze "
+"toebehoren aan de eigenaar van de pakketbronnen, wel degelijk met de "
+"werkelijkheid overeenkomt, anders wordt de &apt-secure;-infrastructuur "
+"volledig ondermijnd."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
+"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
+"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
+"\"<literal>asc</literal>\" as file extension."
+msgstr ""
+"<emphasis>Opmerking</emphasis>: In plaats van dit commando te gebruiken zou "
+"u een sleutelbos rechtstreeks in de map <filename>/etc/apt/trusted.gpg.d/</"
+"filename> moeten plaatsen met een descriptieve naam en ofwel \"<literal>gpg</"
+"literal>\" of \"<literal>asc</literal>\" als bestandsextensie."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Remove a key from the list of trusted keys."
+msgstr "Een sleutel verwijderen uit de lijst van betrouwbare sleutels."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Output the key &synopsis-param-keyid; to standard output."
+msgstr "De sleutel &synopsis-param-keyid; via de standaarduitvoer weergeven."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Output all trusted keys to standard output."
+msgstr "Alle betrouwbare sleutels op de standaarduitvoer weergeven."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "List trusted keys with fingerprints."
+msgstr "Som betrouwbare sleutels op met hun vingerafdruk."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
+"e.g. download key from keyservers directly into the trusted set of keys. "
+"Note that there are <emphasis>no</emphasis> checks performed, so it is easy "
+"to completely undermine the &apt-secure; infrastructure if used without care."
+msgstr ""
+"Geef geavanceerde opties mee met gpg. Met <command>adv --recv-key</command> "
+"kunt u bijvoorbeeld een sleutel rechtstreeks van een sleutelserver naar de "
+"set van betrouwbare sleutels downloaden. Merk op dat er <emphasis>geen</"
+"emphasis> controles uitgevoerd worden. Daarom kan dit gemakkelijk de &apt-"
+"secure;-infrastructuur volledig ondermijnen als het onzorgvuldig gebruikt "
+"wordt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-key.8.xml
+msgid "(deprecated)"
+msgstr "(verouderd)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Update the local keyring with the archive keyring and remove from the local "
+"keyring the archive keys which are no longer valid. The archive keyring is "
+"shipped in the <literal>archive-keyring</literal> package of your "
+"distribution, e.g. the &keyring-package; package in &keyring-distro;."
+msgstr ""
+"De lokale sleutelbos bijwerken met de sleutelbos van het archief en de "
+"archiefsleutels die niet langer geldig zijn verwijderen uit de lokale "
+"sleutelbos. De sleutelbos van het archief bevindt zich in het pakket "
+"<literal>archive-keyring</literal> van uw distributie, bijvoorbeeld het "
+"pakket &keyring-package; in &keyring-distro;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Note that a distribution does not need to and in fact should not use this "
+"command any longer and instead ship keyring files in the <filename>/etc/apt/"
+"trusted.gpg.d/</filename> directory directly as this avoids a dependency on "
+"<package>gnupg</package> and it is easier to manage keys by simply adding "
+"and removing files for maintainers and users alike."
+msgstr ""
+"Merk op dat een distributie dit commando niet langer hoeft en ook niet zou "
+"mogen gebruiken. In plaats daarvan moeten rechtstreeks sleutelbosbestanden "
+"meegeleverd worden in de map <filename>/etc/apt/trusted.gpg.d/</filename>. "
+"Dit voorkomt dat het pakket <package>gnupg</package> een vereiste is, en "
+"zowel voor pakketonderhouders als voor gebruikers is het makkelijker om "
+"sleutels te beheren door eenvoudigweg bestanden toe te voegen of te "
+"verwijderen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Perform an update working similarly to the <command>update</command> command "
+"above, but get the archive keyring from a URI instead and validate it "
+"against a master key. This requires an installed &wget; and an APT build "
+"configured to have a server to fetch from and a master keyring to validate. "
+"APT in Debian does not support this command, relying on <command>update</"
+"command> instead, but Ubuntu's APT does."
+msgstr ""
+"Een bijwerking uitvoeren zoals hiervoor met het commando <command>update</"
+"command>, maar in plaats daarvan de sleutelbos van het archief ophalen vanaf "
+"een URI en die valideren tegenover een hoofdsleutel. Dit veronderstelt dat "
+"&wget; geïnstalleerd is en vereist een versie van APT die gebouwd werd met "
+"de nodige instellingen om de sleutel van een server te kunnen ophalen en een "
+"hoofdsleutelbos om de validering te kunnen uitvoeren. APT in Debian "
+"ondersteunt dit commando niet en steunt in de plaats daarvan op "
+"<command>update</command>, maar APT in Ubuntu wel."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml
+msgid "Options"
+msgstr "Opties"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Note that options need to be defined before the commands described in the "
+"previous section."
+msgstr ""
+"Merk op dat opties opgegeven moeten worden voor de commando's die in de "
+"vorige sectie behandeld werden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"With this option it is possible to specify a particular keyring file the "
+"command should operate on. The default is that a command is executed on the "
+"<filename>trusted.gpg</filename> file as well as on all parts in the "
+"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</"
+"filename> is the primary keyring which means that e.g. new keys are added to "
+"this one."
+msgstr ""
+"Met deze optie kunt u een specifiek sleutelbosbestand opgeven waarmee het "
+"commando moet werken. Standaard wordt een commando uitgevoerd op het bestand "
+"<filename>trusted.gpg</filename> en op alle onderdelen uit de map "
+"<filename>trusted.gpg.d</filename>, hoewel <filename>trusted.gpg</filename> "
+"de primaire sleutelbos is, wat betekent dat bijvoorbeeld alle nieuwe "
+"sleutels daar toegevoegd worden."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid "&apt-get;, &apt-secure;"
+msgstr "&apt-get;, &apt-secure;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-mark.8.xml
+msgid "show, set and unset various settings for a package"
+msgstr ""
+"toon verschillende instellingen van een pakket, stel ze in of maak ze "
+"ongedaan"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"<command>apt-mark</command> can be used as a unified front-end to set "
+"various settings for a package, such as marking a package as being "
+"automatically/manually installed or changing <command>dpkg</command> "
+"selections such as hold, install, deinstall and purge which are respected e."
+"g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
+"command>."
+msgstr ""
+"<command>apt-mark</command> kan gebruikt worden als een geïntegreerd "
+"frontend waarmee verschillende instellingen van een pakket ingesteld kunnen "
+"worden, zoals een pakket als automatisch/handmatig geïnstalleerd markeren of "
+"wijzigingen aanbrengen aan <command>dpkg</command>-selecties zoals "
+"handhaven, installeren, verwijderen, wissen, welke bijvoorbeeld door "
+"<command>apt-get dselect-upgrade</command> en <command>aptitude</command> "
+"gerespecteerd worden."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Automatically and Manually Installed Packages"
+msgstr "Automatisch en handmatig geïnstalleerde pakketten"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"When you request that a package is installed, and as a result other packages "
+"are installed to satisfy its dependencies, the dependencies are marked as "
+"being automatically installed, while the package you installed explicitly is "
+"marked as manually installed. Once an automatically installed package is no "
+"longer depended on by any manually installed package it is considered no "
+"longer needed and e.g. <command>apt-get</command> or <command>aptitude</"
+"command> will at least suggest removing them."
+msgstr ""
+"Indien u vraagt dat een pakket geïnstalleerd wordt en er worden als gevolg "
+"daarvan andere pakketten geïnstalleerd om aan de vereisten te voldoen, dan "
+"worden die laatste pakketten gemarkeerd als automatisch geïnstalleerd, "
+"terwijl het pakket dat u expliciet installeerde als handmatig geïnstalleerd "
+"gemarkeerd wordt. Wanneer een automatisch geïnstalleerd pakket door geen "
+"enkel handmatig geïnstalleerd pakket meer vereist wordt, zal het als niet "
+"langer noodzakelijk beschouwd worden en bijvoorbeeld <command>apt-get</"
+"command> of <command>aptitude</command> zullen op zijn minst voorstellen om "
+"het te verwijderen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>auto</literal> is used to mark a package as being automatically "
+"installed, which will cause the package to be removed when no more manually "
+"installed packages depend on this package."
+msgstr ""
+"<literal>auto</literal> wordt gebruikt om een pakket als automatisch "
+"geïnstalleerd te markeren. Dit zal tot gevolg hebben dat dit pakket "
+"verwijderd wordt als er geen handmatig geïnstalleerde pakketten meer zijn "
+"die dat pakket nodig hebben."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>manual</literal> is used to mark a package as being manually "
+"installed, which will prevent the package from being automatically removed "
+"if no other packages depend on it."
+msgstr ""
+"<literal>manual</literal> wordt gebruikt om een pakket als handmatig "
+"geïnstalleerd te markeren. Dit zal voorkomen dat het pakket automatisch "
+"wordt verwijderd als geen andere pakketten ervan afhankelijk zijn."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showauto</literal> is used to print a list of automatically "
+"installed packages with each package on a new line. All automatically "
+"installed packages will be listed if no package is given. If packages are "
+"given only those which are automatically installed will be shown."
+msgstr ""
+"<literal>showauto</literal> wordt gebruikt om een lijst weer te geven van "
+"automatisch geïnstalleerde pakketten, waarbij elk pakket op een nieuwe regel "
+"staat. Als geen pakket opgegeven wordt, zullen alle automatisch "
+"geïnstalleerde pakketten weergegeven worden. Indien wel pakketten opgegeven "
+"worden, zullen enkel die pakketten weergegeven worden die automatisch "
+"geïnstalleerd werden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showmanual</literal> can be used in the same way as "
+"<literal>showauto</literal> except that it will print a list of manually "
+"installed packages instead."
+msgstr ""
+"<literal>showmanual</literal> kan op dezelfde manier als <literal>showauto</"
+"literal> gebruikt worden, behalve dat in dit geval een lijst van manueel "
+"geïnstalleerde pakketten weergegeven zal worden."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"Read/Write package stats from the filename given with the parameter "
+"&synopsis-param-filename; instead of from the default location, which is "
+"<filename>extended_status</filename> in the directory defined by the "
+"Configuration Item: <literal>Dir::State</literal>."
+msgstr ""
+"De status van een pakket lezen van/schrijven naar het bestand waarvan de "
+"naam opgegeven werd met de parameter &synopsis-param-filename; en geen "
+"gebruik maken van de standaardlocatie die <filename>extended_status</"
+"filename> is in de map die vermeld wordt in het configuratie-item: "
+"<literal>Dir::State</literal>."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Prevent Changes for a Package"
+msgstr "Voorkomen dat een pakket gewijzigd wordt"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>hold</literal> is used to mark a package as held back, which will "
+"prevent the package from being automatically installed, upgraded or removed."
+msgstr ""
+"<literal>hold</literal> wordt gebruikt om een pakket als te handhaven te "
+"markeren. Dit zal voorkomen dat het pakket automatisch geïnstalleerd, "
+"opgewaardeerd of verwijderd wordt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>unhold</literal> is used to cancel a previously set hold on a "
+"package to allow all actions again."
+msgstr ""
+"<literal>unhold</literal> wordt gebruikt om een eerder ingestelde status "
+"tegengehouden ongedaan te maken, zodat opnieuw alle acties toegelaten zijn."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showhold</literal> is used to print a list of packages on hold in "
+"the same way as for the other show commands."
+msgstr ""
+"<literal>showhold</literal> wordt gebruikt om op dezelfde manier als voor de "
+"andere show-opdrachten een lijst weer te geven van pakketten die "
+"tegengehouden worden."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Schedule Packages for Install, Remove and Purge"
+msgstr "Het installeren, verwijderen en wissen van pakketten inplannen"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"Some front-ends like <command>apt-get dselect-upgrade</command> can be used "
+"to apply previously scheduled changes to the install state of packages. Such "
+"changes can be scheduled with the <option>install</option>, <option>remove</"
+"option> (also known as <option>deinstall</option>) and <option>purge</"
+"option> commands. Packages with a specific selection can be displayed with "
+"<option>showinstall</option>, <option>showremove</option> and "
+"<option>showpurge</option> respectively. More information about these so "
+"called dpkg selections can be found in &dpkg;."
+msgstr ""
+"Sommige frontends zoals <command>apt-get dselect-upgrade</command> kunnen "
+"gebruikt worden om eerder geplande wijzigingen aan de installatiestatus van "
+"pakketten toe te passen. Deze wijzigingen kunnen ingepland worden met de "
+"commando's <option>install</option>, <option>remove</option> (ook gekend als "
+"<option>deinstall</option>) en <option>purge</option>. Pakketten met een "
+"specifieke selectie kunnen respectievelijk met <option>showinstall</option>, "
+"<option>showremove</option> en <option>showpurge</option> weergegeven "
+"worden. Meer informatie over deze zogenaamde dpkg-selecties vindt u in "
+"&dpkg;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"<command>apt-mark</command> returns zero on normal operation, non-zero on "
+"error."
+msgstr ""
+"<command>apt-mark</command> geeft de terugkeerwaarde nul bij een normaal "
+"verlopen operatie, niet-nul in geval van een fout."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-secure.8.xml
+msgid "Archive authentication support for APT"
+msgstr "Ondersteuning in APT voor de authenticatie van archieven"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Starting with version 0.6, <command>APT</command> contains code that does "
+"signature checking of the Release file for all repositories. This ensures "
+"that data like packages in the archive can't be modified by people who have "
+"no access to the Release file signing key. Starting with version 1.1 "
+"<command>APT</command> requires repositories to provide recent "
+"authentication information for unimpeded usage of the repository."
+msgstr ""
+"Met ingang van versie 0.6 bevat <command>APT</command> code die voor alle "
+"pakketbronnen de ondertekening controleert van het bestand Release. Dit "
+"geeft de garantie dat gegevens, zoals pakketten, uit het archief niet "
+"gewijzigd kunnen worden door mensen die geen toegang hebben tot de sleutel "
+"waarmee het bestand Release ondertekend wordt. Met ingang van versie 1.1 "
+"vereist <command>APT</command> dat pakketbronnen recente authenticatie-"
+"informatie verstrekken om die pakketbron ongehinderd te kunnen gebruiken."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"If an archive has an unsigned Release file or no Release file at all current "
+"APT versions will refuse to download data from them by default in "
+"<command>update</command> operations and even if forced to download front-"
+"ends like &apt-get; will require explicit confirmation if an installation "
+"request includes a package from such an unauthenticated archive."
+msgstr ""
+"Indien een archief een niet-ondertekend Release-bestand of helemaal geen "
+"Release-bestand heeft, zullen alle hedendaagse versies van APT bij "
+"<command>update</command>-operaties standaard weigeren om er gegevens van op "
+"te halen. En zelfs als ze tot ophalen verplicht worden, zullen frontends, "
+"zoals &apt-get;, om een expliciete bevestiging vragen als bij een "
+"installatieverzoek een pakket uit een dergelijk niet-geauthenticeerd archief "
+"betrokken is."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"As a temporary exception &apt-get; (not &apt;!) raises warnings only if it "
+"encounters unauthenticated archives to give a slightly longer grace period "
+"on this backward compatibility effecting change. This exception will be "
+"removed in future releases and you can opt-out of this grace period by "
+"setting the configuration option <option>Binary::apt-get::Acquire::"
+"AllowInsecureRepositories</option> to <literal>false</literal> or <option>--"
+"no-allow-insecure-repositories</option> on the command line."
+msgstr ""
+"Bij wijze van tijdelijke uitzondering geeft &apt-get; (niet &apt;!) enkel "
+"waarschuwingen als het niet-geauthenticeerde archieven tegenkomt om zo deze "
+"wijziging die de compatibiliteit aantast, enigszins langer uit te stellen. "
+"Deze uitzondering zal uit toekomstige uitgaven verwijderd worden en u kunt "
+"nu reeds kiezen om geen gebruik te maken van dit uitstel door de "
+"configuratie-optie <option>Binary::apt-get::Acquire::"
+"AllowInsecureRepositories</option> op <literal>false</literal> in te stellen "
+"of door aan de commandoregel de optie <option>--no-allow-insecure-"
+"repositories</option> te gebruiken."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"You can force all APT clients to raise only warnings by setting the "
+"configuration option <option>Acquire::AllowInsecureRepositories</option> to "
+"<literal>true</literal>. Individual repositories can also be allowed to be "
+"insecure via the &sources-list; option <literal>allow-insecure=yes</"
+"literal>. Note that insecure repositories are strongly discouraged and all "
+"options to force apt to continue supporting them will eventually be "
+"removed. Users also have the <option>Trusted</option> option available to "
+"disable even the warnings, but be sure to understand the implications as "
+"detailed in &sources-list;."
+msgstr ""
+"U kunt alle APT-clients verplichten om enkel waarschuwingen te geven door de "
+"configuratie-optie <option>Acquire::AllowInsecureRepositories</option> op "
+"<literal>true</literal> in te stellen. U kunt ook individuele pakketbronnen "
+"toelaten om onveilig te zijn via de optie <literal>allow-insecure=yes</"
+"literal> in &sources-list;. Merk op dat onveilige pakketbronnen ten "
+"stelligste afgeraden worden en dat alle opties die apt verplichten om deze "
+"te blijven ondersteunen, uiteindelijk verwijderd zullen worden. Gebruikers "
+"beschikken ook over de optie <option>Trusted</option>, waardoor zelfs de "
+"waarschuwingen onderdrukt worden, maar u moet zeker zijn dat u de "
+"implicaties ervan begrijpt die uitgelegd worden in &sources-list;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"A repository which previously was authenticated but would loose this state "
+"in an <command>update</command> operation raises an error in all APT clients "
+"irrespective of the option to allow or forbid usage of insecure "
+"repositories. The error can be overcome by additionally setting "
+"<option>Acquire::AllowDowngradeToInsecureRepositories</option> to "
+"<literal>true</literal> or for Individual repositories with the &sources-"
+"list; option <literal>allow-downgrade-to-insecure=yes</literal>."
+msgstr ""
+"Een pakketbron die zijn eerdere authenticatie-status zou kwijt spelen zal in "
+"geval van een <command>update</command>-operatie bij alle APT-clients een "
+"foutmelding opleveren, ongeacht het feit of een optie het gebruik van "
+"onveilige pakketbronnen toestaat of verbiedt. Een dergelijke fout kan "
+"voorkomen worden door bijkomend de optie <option>Acquire::"
+"AllowDowngradeToInsecureRepositories</option> op <literal>true</literal> in "
+"te stellen of voor individuele pakketbronnen door de optie <literal>allow-"
+"downgrade-to-insecure=yes</literal> te gebruiken in &sources-list;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note: All APT-based package management front-ends like &apt-get;, &aptitude; "
+"and &synaptic; support this authentication feature, so this manpage uses "
+"<literal>APT</literal> to refer to them all for simplicity only."
+msgstr ""
+"Opmerking: Alle op APT gebaseerde front-ends voor pakketbeheer, zoals &apt-"
+"get;, &aptitude; en &synaptic;, ondersteunen deze "
+"authenticatiefunctionaliteit. Het is enkel om het eenvoudig te houden dat "
+"deze man-pagina van <literal>APT</literal> gebruikt wordt om die "
+"functionaliteit aan ze allemaal toe te schrijven."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Trusted Repositories"
+msgstr "Betrouwbare pakketarchieven"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"The chain of trust from an APT archive to the end user is made up of several "
+"steps. <command>apt-secure</command> is the last step in this chain; "
+"trusting an archive does not mean that you trust its packages not to contain "
+"malicious code, but means that you trust the archive maintainer. It's the "
+"archive maintainer's responsibility to ensure that the archive's integrity "
+"is preserved."
+msgstr ""
+"De vertrouwensketen vanaf een APT-archief tot de eindgebruiker, bestaat uit "
+"verschillende schakels. <command>apt-secure</command> is de laatste schakel "
+"in die keten. Een archief vertrouwen betekent niet dat u er op vertrouwt dat "
+"zijn pakketten geen kwaadwillige code bevatten, maar betekent wel dat u de "
+"beheerder van het archief vertrouwt. Het behoort tot de verantwoordelijkheid "
+"van de archiefbeheerder om er voor te zorgen dat de integriteit van het "
+"archief gevrijwaard blijft."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"apt-secure does not review signatures at a package level. If you require "
+"tools to do this you should look at <command>debsig-verify</command> and "
+"<command>debsign</command> (provided in the debsig-verify and devscripts "
+"packages respectively)."
+msgstr ""
+"apt-secure controleert geen handtekeningen op pakketniveau. Indien u "
+"gereedschap nodig heeft om dit te doen, moet u uitkijken naar "
+"<command>debsig-verify</command> en <command>debsign</command> (die "
+"respectievelijk in de pakketten debsig-verify en devscripts te vinden zijn)."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"The chain of trust in Debian starts (e.g.) when a maintainer uploads a new "
+"package or a new version of a package to the Debian archive. In order to "
+"become effective, this upload needs to be signed by a key contained in one "
+"of the Debian package maintainer keyrings (available in the debian-keyring "
+"package). Maintainers' keys are signed by other maintainers following pre-"
+"established procedures to ensure the identity of the key holder. Similar "
+"procedures exist in all Debian-based distributions."
+msgstr ""
+"De vertrouwensketen in Debian begint (bijvoorbeeld) wanneer een "
+"pakketonderhouder een nieuw pakket of een nieuwe versie ervan naar het "
+"Debian archief uploadt. Om effectief te worden moet deze upload ondertekend "
+"worden met een sleutel uit de sleutelbos van de pakketonderhouders van "
+"Debian (te vinden in het pakket debian-keyring). De sleutels van "
+"onderhouders worden door andere onderhouders ondertekend. Daarbij worden "
+"vaststaande procedures gevolgd om de identiteit van de sleuteleigenaar te "
+"kunnen garanderen. Vergelijkbare procedures worden in alle op Debian "
+"gebaseerde distributies gehanteerd."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Once the uploaded package is verified and included in the archive, the "
+"maintainer signature is stripped off, and checksums of the package are "
+"computed and put in the Packages file. The checksums of all of the Packages "
+"files are then computed and put into the Release file. The Release file is "
+"then signed by the archive key for this &keyring-distro; release, and "
+"distributed alongside the packages and the Packages files on &keyring-"
+"distro; mirrors. The keys are in the &keyring-distro; archive keyring "
+"available in the &keyring-package; package."
+msgstr ""
+"Nadat het geüpload pakket geverifieerd werd en toegevoegd aan het archief, "
+"wordt de handtekening van de onderhouder verwijderd en wordt de controlesom "
+"voor dat pakket berekend en in het bestand Packages opgeslagen. Daarna wordt "
+"voor alle Packages-bestanden de controlesom berekend en opgeslagen in het "
+"bestand Release. Daarna wordt het bestand Release ondertekend door de "
+"archiefsleutel voor deze &keyring-distro; release en verdeeld met de "
+"pakketten en de Packages-bestanden naar de &keyring-distro;-spiegelservers. "
+"De sleutels bevinden zich in de sleutelbos van het &keyring-distro;-archief "
+"die te vinden is in het pakket &keyring-package;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"End users can check the signature of the Release file, extract a checksum of "
+"a package from it and compare it with the checksum of the package they "
+"downloaded by hand - or rely on APT doing this automatically."
+msgstr ""
+"Eindgebruikers kunnen de ondertekening van het bestand Release controleren, "
+"er de controlesom voor een pakket uithalen en die vergelijken met de "
+"controlesom van het pakket dat ze handmatig gedownload hebben - of "
+"vertrouwen op APT die dit automatisch doet."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Notice that this is distinct from checking signatures on a per package "
+"basis. It is designed to prevent two possible attacks:"
+msgstr ""
+"Merk op dat dit niet hetzelfde is als een controle van handtekeningen op het "
+"niveau van individuele pakketten. Deze werkwijze is ontworpen om twee "
+"mogelijke aanvallen te voorkomen:"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<literal>Network \"man in the middle\" attacks</literal>. Without signature "
+"checking, malicious agents can introduce themselves into the package "
+"download process and provide malicious software either by controlling a "
+"network element (router, switch, etc.) or by redirecting traffic to a rogue "
+"server (through ARP or DNS spoofing attacks)."
+msgstr ""
+"<literal>Netwerkaanval van het type \"man-in-the-middle\"</literal>. Zonder "
+"de controle van de ondertekening kunnen kwaadwillige personen binnendringen "
+"in het proces van het downloaden van pakketten en kwaadaardige software "
+"verspreiden. Dit kunnen ze doen via het verwerven van controle over een "
+"element van het netwerk (router, switch, enz.) of via het omleiden van "
+"trafiek naar een kwaadaardige server (via ARP of aanvallen van DNS-spoofing)."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<literal>Mirror network compromise</literal>. Without signature checking, a "
+"malicious agent can compromise a mirror host and modify the files in it to "
+"propagate malicious software to all users downloading packages from that "
+"host."
+msgstr ""
+"<literal>Gecompromitteerd spiegelservernetwerk</literal>. Zonder de controle "
+"van handtekeningen kan een kwaadwillige persoon een spiegelserver "
+"binnendringen en de bestanden die er zich op bevinden wijzigen, om op die "
+"manier kwaadaardige software te verspreiden naar alle gebruikers die "
+"pakketten van die server downloaden."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"However, it does not defend against a compromise of the master server itself "
+"(which signs the packages) or against a compromise of the key used to sign "
+"the Release files. In any case, this mechanism can complement a per-package "
+"signature."
+msgstr ""
+"Ze biedt evenwel geen bescherming tegen een aanval gericht tegen de "
+"hoofdserver van Debian (die de pakketten ondertekent) of tegen een aanval "
+"gericht tegen de sleutel die gebruikt wordt om de Release-bestanden te "
+"ondertekenen. In elk geval biedt dit mechanisme wel een aanvulling op een "
+"ondertekening op pakketniveau."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "User Configuration"
+msgstr "Configuratie op gebruikersniveau"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"<command>apt-key</command> is the program that manages the list of keys used "
+"by APT to trust repositories. It can be used to add or remove keys as well "
+"as list the trusted keys. Limiting which key(s) are able to sign which "
+"archive is possible via the <option>Signed-By</option> in &sources-list;."
+msgstr ""
+"<command>apt-key</command> is het programma dat de sleutelcatalogus beheert "
+"die door APT gebruikt wordt om pakketbronnen te vertrouwen. Het kan gebruikt "
+"worden om sleutels toe te voegen en te verwijderen en de lijst met "
+"vertrouwde sleutels weer te geven. Het is mogelijk om te begrenzen welke "
+"sleutel(s) welk archief kunnen ondertekenen via de optie <option>Signed-By</"
+"option> in &sources-list;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so fiddling with "
+"<command>apt-key</command> is only needed if third-party repositories are "
+"added."
+msgstr ""
+"Merk op dat een standaardinstallatie reeds alle nodige sleutels bevat om op "
+"een veilige manier pakketten op te halen uit de standaard pakketbronnen. Met "
+"<command>apt-key</command> knoeien is dus enkel nodig als pakketbronnen van "
+"derden toegevoegd worden."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"In order to add a new key you need to first download it (you should make "
+"sure you are using a trusted communication channel when retrieving it), add "
+"it with <command>apt-key</command> and then run <command>apt-get update</"
+"command> so that apt can download and verify the <filename>InRelease</"
+"filename> or <filename>Release.gpg</filename> files from the archives you "
+"have configured."
+msgstr ""
+"Om een nieuwe sleutel toe te voegen, moet u hem eerst downloaden (u moet "
+"zich ervan vergewissen dat u bij het ophalen ervan gebruik maakt van een "
+"betrouwbaar communicatiekanaal). Daarna voegt u hem toe met <command>apt-"
+"key</command> en vervolgens voert u de opdracht <command>apt-get update</"
+"command> uit, zodat apt het bestand <filename>InRelease</filename> of "
+"<filename>Release.gpg</filename> uit de door u geconfigureerde archieven kan "
+"ophalen en verifiëren."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Archive Configuration"
+msgstr "Configuratie op archiefniveau"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"If you want to provide archive signatures in an archive under your "
+"maintenance you have to:"
+msgstr ""
+"Indien u voor een door u onderhouden archief in een ondertekening van het "
+"archief wilt voorzien, moet u het volgende doen:"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Create a toplevel Release file</emphasis>, if it does not exist "
+"already. You can do this by running <command>apt-ftparchive release</"
+"command> (provided in apt-utils)."
+msgstr ""
+"<emphasis>Maak een Release-bestand aan voor het hoofdniveau</emphasis> als "
+"dit nog niet bestaat. U kunt dit doen met de opdracht <command>apt-"
+"ftparchive release</command> (uit het pakket apt-utils)."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --"
+"clearsign -o InRelease Release</command> and <command>gpg -abs -o Release."
+"gpg Release</command>."
+msgstr ""
+"<emphasis>Onderteken het</emphasis>. U doet dit door het uitvoeren van de "
+"commando's <command>gpg --clearsign -o InRelease Release</command> en "
+"<command>gpg -abs -o Release.gpg Release</command>."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Publish the key fingerprint</emphasis>, so that your users will "
+"know what key they need to import in order to authenticate the files in the "
+"archive. It is best to ship your key in its own keyring package like "
+"&keyring-distro; does with &keyring-package; to be able to distribute "
+"updates and key transitions automatically later."
+msgstr ""
+"<emphasis>Maak de vingerafdruk van de sleutel openbaar</emphasis>, zodat uw "
+"gebruikers weten welke sleutel ze moeten importeren om de bestanden uit het "
+"archief te authenticeren. U doet er best aan uw sleutel te verspreiden via "
+"een eigen sleutelbospakket, zoals &keyring-distro; doet met &keyring-"
+"package;. Op die manier kunnen later updates en transities van sleutels "
+"automatisch gedistribueerd worden."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Provide instructions on how to add your archive and key</"
+"emphasis>. If your users can't acquire your key securely the chain of trust "
+"described above is broken. How you can help users add your key depends on "
+"your archive and target audience ranging from having your keyring package "
+"included in another archive users already have configured (like the default "
+"repositories of their distribution) to leveraging the web of trust."
+msgstr ""
+"<emphasis>Geef de nodige instructies voor het toevoegen van uw archief en uw "
+"sleutel</emphasis>. Indien uw gebruikers niet op een veilige manier uw "
+"sleutel kunnen bekomen, wordt de hierboven beschreven vertrouwensketen "
+"verbroken. Hoe u gebruikers kunt helpen om uw sleutel toe te voegen, hangt "
+"af van uw archief en het doelpubliek. Dit kan gaan van het toevoegen van uw "
+"sleutelbospakket aan een ander archief dat de gebruikers reeds "
+"geconfigureerd hebben (zoals de standaard pakketbronnen van hun distributie) "
+"tot het gebruik maken van het web van vertrouwen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Whenever the contents of the archive change (new packages are added or "
+"removed) the archive maintainer has to follow the first two steps outlined "
+"above."
+msgstr ""
+"Telkens de inhoud van het archief wijzigt (als nieuwe pakketten toegevoegd "
+"of verwijderd worden) moet de archiefverantwoordelijke de hierboven "
+"beschreven eerste twee stappen hernemen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+"&debsign;, &debsig-verify;, &gpg;"
+msgstr ""
+"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+"&debsign;, &debsig-verify;, &gpg;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"For more background information you might want to review the <ulink url="
+"\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
+"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
+"available in the harden-doc package) and the <ulink url=\"http://www."
+"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
+"ulink> by V. Alex Brennen."
+msgstr ""
+"Voor bijkomende achtergrondinformatie kunt u het hoofdstuk raadplegen over "
+"de beveiligingsinfrastructuur van Debian, <ulink url=\"https://www.debian."
+"org/doc/manuals/securing-debian-howto/ch7\">Debian Security Infrastructure</"
+"ulink>, uit de Securing Debian Manual (ook te vinden in het pakket harden-"
+"doc), alsook de <ulink url=\"http://www.cryptnet.net/fdp/crypto/"
+"strong_distro.html\" >Strong Distribution HOWTO</ulink> door V. Alex Brennen."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Manpage Authors"
+msgstr "Auteurs van de man-pagina"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"This man-page is based on the work of Javier Fernández-Sanguino Peña, Isaac "
+"Jones, Colin Walters, Florian Weimer and Michael Vogt."
+msgstr ""
+"Deze man-pagina is gebaseerd op het werk van Javier Fernández-Sanguino Peña, "
+"Isaac Jones, Colin Walters, Florian Weimer en Michael Vogt."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cdrom.8.xml
+msgid "APT CD-ROM management utility"
+msgstr "Hulpprogramma van APT voor CD-beheer"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<command>apt-cdrom</command> is used to add a new CD-ROM to APT's list of "
+"available sources. <command>apt-cdrom</command> takes care of determining "
+"the structure of the disc as well as correcting for several possible mis-"
+"burns and verifying the index files."
+msgstr ""
+"<command>apt-cdrom</command> wordt gebruikt om een nieuwe CD toe te voegen "
+"aan de lijst van beschikbare bronnen voor APT. <command>apt-cdrom</command> "
+"draagt zorg voor het achterhalen van de structuur van de schijf, voor het "
+"uitvoeren van correcties voor verschillende mogelijke fouten tijdens het "
+"branden en voor de controle van de indexbestanden."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"It is necessary to use <command>apt-cdrom</command> to add CDs to the APT "
+"system; it cannot be done by hand. Furthermore each disc in a multi-CD set "
+"must be inserted and scanned separately to account for possible mis-burns."
+msgstr ""
+"Voor het toevoegen van CD's aan het systeem van APT is het gebruik van "
+"<command>apt-cdrom</command> noodzakelijk. U kunt dit niet handmatig "
+"uitvoeren. Bovendien moet iedere CD uit een set schijven afzonderlijk "
+"ingevoerd worden en onderzocht op mogelijke fouten bij het branden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<literal>add</literal> is used to add a new disc to the source list. It will "
+"unmount the CD-ROM device, prompt for a disc to be inserted and then proceed "
+"to scan it and copy the index files. If the disc does not have a proper "
+"<filename>.disk</filename> directory you will be prompted for a descriptive "
+"title."
+msgstr ""
+"<literal>add</literal> wordt gebruikt om een nieuwe schijf aan de "
+"pakketbronnen toe te voegen. Het zal het CD-station ontkoppelen, vragen om "
+"een schijf in te voeren, die schijf controleren en de indexbestanden "
+"kopiëren. Indien de schijf geen passende map <filename>.disk</filename> "
+"bevat, zal u om een beschrijvende titel gevraagd worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"APT uses a CD-ROM ID to track which disc is currently in the drive and "
+"maintains a database of these IDs in <filename>&statedir;/cdroms.list</"
+"filename>"
+msgstr ""
+"APT maakt per schijf gebruik van een ID om vast te stellen welke CD zich "
+"momenteel in het station bevindt en houdt een database van deze ID's bij in "
+"<filename>&statedir;/cdroms.list</filename>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"A debugging tool to report the identity of the current disc as well as the "
+"stored file name"
+msgstr ""
+"Een debug-gereedschap dat rapporteert over de identiteit van de huidige "
+"schijf en de naam van het opgeslagen bestand."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Do not try to auto-detect the CD-ROM path. Usually combined with the "
+"<option>--cdrom</option> option. Configuration Item: <literal>Acquire::"
+"cdrom::AutoDetect</literal>."
+msgstr ""
+"Niet automatisch het CD-pad trachten te achterhalen. Meestal wordt dit "
+"gecombineerd met de optie <option>--cdrom</option>. Configuratie-item: "
+"<literal>Acquire::cdrom::AutoDetect</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Mount point; specify the location to mount the CD-ROM. This mount point must "
+"be listed in <filename>/etc/fstab</filename> and properly configured. "
+"Configuration Item: <literal>Acquire::cdrom::mount</literal>."
+msgstr ""
+"Aankoppelpunt; de locatie waar de CD aangekoppeld moet worden opgeven. Dit "
+"aankoppelpunt moet in <filename>/etc/fstab</filename> vermeld worden en "
+"correct geconfigureerd zijn. Configuratie-item: <literal>Acquire::cdrom::"
+"mount</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Rename a disc; change the label of a disc or override the disc's given "
+"label. This option will cause <command>apt-cdrom</command> to prompt for a "
+"new label. Configuration Item: <literal>APT::CDROM::Rename</literal>."
+msgstr ""
+"Een schijf hernoemen; de naam van een schijf wijzigen of de aan een schijf "
+"gegeven naam overschrijven. Deze optie doet <command>apt-cdrom</command> om "
+"een nieuwe naam vragen. Configuratie-item: <literal>APT::CDROM::Rename</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"No mounting; prevent <command>apt-cdrom</command> from mounting and "
+"unmounting the mount point. Configuration Item: <literal>APT::CDROM::"
+"NoMount</literal>."
+msgstr ""
+"Niet aankoppelen; <command>apt-cdrom</command> verhinderen om het "
+"aankoppelpunt aan en af te koppelen. Configuratie-item: <literal>APT::CDROM::"
+"NoMount</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Fast Copy; Assume the package files are valid and do not check every "
+"package. This option should be used only if <command>apt-cdrom</command> has "
+"been run on this disc before and did not detect any errors. Configuration "
+"Item: <literal>APT::CDROM::Fast</literal>."
+msgstr ""
+"Snel kopiëren; Aannemen dat de pakketbestanden geldig zijn en niet elk "
+"pakket controleren. Deze optie mag enkel gebruikt worden als op deze schijf "
+"vooraf <command>apt-cdrom</command> uitgevoerd werd en er geen fouten "
+"gevonden werden. Configuratie-item: <literal>APT::CDROM::Fast</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Thorough Package Scan; This option may be needed with some old Debian "
+"1.1/1.2 discs that have Package files in strange places. It takes much "
+"longer to scan the CD but will pick them all up."
+msgstr ""
+"Grondig naar Package speuren; Deze optie kan noodzakelijk zijn bij sommige "
+"oude schijven die Debian 1.1/1.2 bevatten en waarbij de Package-bestanden "
+"zich op ongewone plaatsen bevinden. Het vraagt veel meer tijd om de CD te "
+"doorzoeken, maar de bestanden zullen allemaal gevonden worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"No Changes; Do not change the &sources-list; file and do not write index "
+"files. Everything is still checked however. Configuration Item: "
+"<literal>APT::CDROM::NoAct</literal>."
+msgstr ""
+"Geen wijzigingen. Het bestand &sources-list; niet veranderen en geen "
+"indexbestanden wegschrijven. Niettemin wordt alles wel gecontroleerd. "
+"Configuratie-item: <literal>APT::CDROM::NoAct</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid "&apt-conf;, &apt-get;, &sources-list;"
+msgstr "&apt-conf;, &apt-get;, &sources-list;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<command>apt-cdrom</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-cdrom</command> geeft de terugkeerwaarde nul bij een normaal "
+"verlopen operatie, het decimaal getal 100 in geval van een fout."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-config.8.xml
+msgid "APT Configuration Query program"
+msgstr "Programma om de configuratie van APT op te vragen"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml
+msgid ""
+"<command>apt-config</command> is an internal program used by various "
+"portions of the APT suite to provide consistent configurability. It accesses "
+"the main configuration file <filename>/etc/apt/apt.conf</filename> in a "
+"manner that is easy to use for scripted applications."
+msgstr ""
+"<command>apt-config</command> is een intern programma dat door verschillende "
+"onderdelen van de APT-suite gebruikt wordt om op een consistente wijze "
+"configuratiemogelijkheden te bieden. Het maakt gebruik van het "
+"hoofdconfiguratiebestand <filename>/etc/apt/apt.conf</filename> op een "
+"manier die scripts toelaat om er handig gebruik van te maken."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"shell is used to access the configuration information from a shell script. "
+"It is given pairs of arguments, the first being a shell variable and the "
+"second the configuration value to query. As output it lists shell assignment "
+"commands for each value present. In a shell script it should be used as "
+"follows:"
+msgstr ""
+"Men gebruikt shell om in een shell-script configuratie-informatie op te "
+"vragen. Argumenten worden in paren opgegeven. Het eerste argument is een "
+"shell-variabele en het tweede de configuratiewaarde waarnaar gezocht moet "
+"worden. De uitvoer bestaat uit een lijst shell-opdrachten waarin elke "
+"gevonden waarde aan een variabele toegekend wordt. In een shell-script moet "
+"het als volgt gebruikt worden:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-config.8.xml
+#, no-wrap
+msgid ""
+"OPTS=\"-f\"\n"
+"RES=`apt-config shell OPTS MyApp::options`\n"
+"eval $RES\n"
+msgstr ""
+"OPTS=\"-f\"\n"
+"RES=`apt-config shell OPTS MyApp::options`\n"
+"eval $RES\n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"This will set the shell environment variable $OPTS to the value of MyApp::"
+"options with a default of <option>-f</option>."
+msgstr ""
+"Dit zal aan de shell-omgevingsvariabele $OPTS de waarde toekennen van MyApp::"
+"options met een standaard van <option>-f</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"The configuration item may be postfixed with a /[fdbi]. f returns file "
+"names, d returns directories, b returns true or false and i returns an "
+"integer. Each of the returns is normalized and verified internally."
+msgstr ""
+"Achter het configuratie-item mag een /[fdbi] staan. f levert een "
+"bestandsnaam op, d een map, b geeft de terugkeerwaarde true of false en i "
+"geeft een geheel getal als terugkeerwaarde. Elke terugkeerwaarde wordt "
+"intern genormaliseerd en gecontroleerd."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid "Just show the contents of the configuration space."
+msgstr "Enkel de inhoud van de configuratieruimte weergeven."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"Include options which have an empty value. This is the default, so use --no-"
+"empty to remove them from the output."
+msgstr ""
+"Opties met een lege waarde opnemen. Dit is de standaard. Gebruik dus --no-"
+"empty om ze uit de uitvoer te verwijderen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-config.8.xml
+msgid "&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n"
+msgstr "&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"Defines the output of each config option. &percnt;t will be replaced with "
+"its individual name, &percnt;f with its full hierarchical name and &percnt;v "
+"with its value. Use uppercase letters and special characters in the value "
+"will be encoded to ensure that it can e.g. be safely used in a quoted-string "
+"as defined by RFC822. Additionally &percnt;n will be replaced by a newline, "
+"and &percnt;N by a tab. A &percnt; can be printed by using &percnt;&percnt;."
+msgstr ""
+"Definieert de uitvoer van elke configuratie-optie. &percnt;t wordt vervangen "
+"door zijn eigen naam, &percnt;f door zijn volledige hiërarchische naam en "
+"&percnt;v door zijn waarde. Gebruik hoofdletters, en als in de waarde "
+"speciale tekens voorkomen, worden ze gecodeerd om er voor te zorgen dat die "
+"waarde bijvoorbeeld veilig gebruikt kan worden in een tekenreeks binnen "
+"aanhalingstekens zoals bepaald door RFC822. Voorts zal &percnt;n vervangen "
+"worden door een nieuwe regel en &percnt;N door een TAB. Om een &percnt; weer "
+"te geven gebruikt men &percnt;&percnt;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml
+msgid "&apt-conf;"
+msgstr "&apt-conf;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml
+msgid ""
+"<command>apt-config</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-config</command> geeft de terugkeerwaarde nul bij een normaal "
+"verlopen operatie, het decimaal getal 100 in geval van een fout."
+
+#. type: Content of: <refentry><refentryinfo><author><contrib>
+#: apt.conf.5.xml
+msgid "Initial documentation of Debug::*."
+msgstr "Initiële documentatie bij Debug::*."
+
+#. type: Content of: <refentry><refentryinfo><author><email>
+#: apt.conf.5.xml
+msgid "dburrows@debian.org"
+msgstr "dburrows@debian.org"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml
+msgid "5"
+msgstr "5"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.conf.5.xml
+msgid "Configuration file for APT"
+msgstr "Configuratiebestand van APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<filename>/etc/apt/apt.conf</filename> is the main configuration file shared "
+"by all the tools in the APT suite of tools, though it is by no means the "
+"only place options can be set. The suite also shares a common command line "
+"parser to provide a uniform environment."
+msgstr ""
+"<filename>/etc/apt/apt.conf</filename> is het hoofdconfiguratiebestand dat "
+"gebruikt wordt door alle gereedschappen uit de gereedschappensuite van APT, "
+"maar het is bijlange na niet de enige plaats waar opties ingesteld kunnen "
+"worden. De suite gebruikt ook een gemeenschappelijke parser voor de "
+"commandoregel om zo een uniforme omgeving aan te bieden."
+
+#. type: Content of: <refentry><refsect1><orderedlist><para>
+#: apt.conf.5.xml
+msgid ""
+"When an APT tool starts up it will read the configuration files in the "
+"following order:"
+msgstr ""
+"Als een gereedschap van APT opstart, zal het de configuratiebestanden in de "
+"volgende volgorde lezen:"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the file specified by the <envar>APT_CONFIG</envar> environment variable (if "
+"any)"
+msgstr ""
+"het bestand dat in de omgevingsvariabele <envar>APT_CONFIG</envar> "
+"gespecificeerd wordt (voor zover dit het geval is)"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending "
+"order which have either no or \"<literal>conf</literal>\" as filename "
+"extension and which only contain alphanumeric, hyphen (-), underscore (_) "
+"and period (.) characters. Otherwise APT will print a notice that it has "
+"ignored a file, unless that file matches a pattern in the <literal>Dir::"
+"Ignore-Files-Silently</literal> configuration list - in which case it will "
+"be silently ignored."
+msgstr ""
+"alle bestanden uit <literal>Dir::Etc::Parts</literal> in oplopende "
+"alfabetische volgorde die ofwel geen extensie of \"<literal>conf</literal>\" "
+"als extensie van de bestandsnaam hebben en waarvan de inhoud enkel "
+"alfanumerieke tekens, koppeltekens (-), laag liggende streepjes (_) en "
+"punten (.) bevat. Anders zal APT melding maken van het feit dat het een "
+"bestand genegeerd heeft, tenzij dat bestand overeenkomt met een patroon uit "
+"de configuratielijst <literal>Dir::Ignore-Files-Silently</literal>. In dat "
+"laatste geval zal het bestand stilzwijgend genegeerd worden."
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the main configuration file specified by <literal>Dir::Etc::main</literal>"
+msgstr ""
+"het hoofdconfiguratiebestand zoals bepaald door <literal>Dir::Etc::main</"
+"literal>"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"all options set in the binary specific configuration subtree are moved into "
+"the root of the tree."
+msgstr ""
+"alle opties die in de subboom met binairspecifieke configuraties ingesteld "
+"waren, worden verplaatst naar het basisniveau van de boomstructuur."
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the command line options are applied to override the configuration "
+"directives or to load even more configuration files."
+msgstr ""
+"de opties die aan de commandoregel ingegeven werden om de "
+"configuratierichtlijnen te overschrijven of om nog meer "
+"configuratiebestanden in te lezen."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Syntax"
+msgstr "Syntaxis"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The configuration file is organized in a tree with options organized into "
+"functional groups. Option specification is given with a double colon "
+"notation; for instance <literal>APT::Get::Assume-Yes</literal> is an option "
+"within the APT tool group, for the Get tool. Options do not inherit from "
+"their parent groups."
+msgstr ""
+"Het configuratiebestand is opgevat als een boom met opties die gegroepeerd "
+"worden in functionele groepen. De notatie van optiespecificaties gebeurt aan "
+"de hand van dubbele dubbelpunten. <literal>APT::Get::Assume-Yes</literal> "
+"bijvoorbeeld, is een optie binnen de gereedschapsgroep APT voor het "
+"gereedschap Get. Opties worden niet overgeërfd van oudergroepen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Syntactically the configuration language is modeled after what the ISC tools "
+"such as bind and dhcp use. Lines starting with <literal>//</literal> are "
+"treated as comments (ignored), as well as all text between <literal>/*</"
+"literal> and <literal>*/</literal>, just like C/C++ comments. Each line is "
+"of the form <literal>APT::Get::Assume-Yes \"true\";</literal>. The "
+"quotation marks and trailing semicolon are required. The value must be on "
+"one line, and there is no kind of string concatenation. Values must not "
+"include backslashes or extra quotation marks. Option names are made up of "
+"alphanumeric characters and the characters \"/-:._+\". A new scope can be "
+"opened with curly braces, like this:"
+msgstr ""
+"Op het vlak van de syntaxis volgt de configuratietaal het model dat gebruikt "
+"wordt door gereedschappen als bind en dhcp. Regels die beginnen met "
+"<literal>//</literal> worden als commentaar behandeld (genegeerd) evenals "
+"alle tekst tussen <literal>/*</literal> en <literal>*/</literal> naar het "
+"voorbeeld van commentaar in C/C++. Elke regel heeft de vorm <literal>APT::"
+"Get::Assume-Yes \"true\";</literal>. De aanhalingstekens en de afsluitende "
+"puntkomma zijn nodig. De waarde moet op een regel staan en er wordt geen "
+"vorm van aaneenschakeling van tekenreeksen toegepast. Waarden mogen geen "
+"backslashes of extra aanhalingstekens bevatten. Optienamen worden gevormd "
+"met behulp van alfanumerieke lettertekens en de tekens \"/-:._+\". Een nieuw "
+"bereik wordt geopend met een accolade, op de volgende manier:"
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT {\n"
+" Get {\n"
+" Assume-Yes \"true\";\n"
+" Fix-Broken \"true\";\n"
+" };\n"
+"};\n"
+msgstr ""
+"APT {\n"
+" Get {\n"
+" Assume-Yes \"true\";\n"
+" Fix-Broken \"true\";\n"
+" };\n"
+"};\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"with newlines placed to make it more readable. Lists can be created by "
+"opening a scope and including a single string enclosed in quotes followed by "
+"a semicolon. Multiple entries can be included, separated by a semicolon."
+msgstr ""
+"en er worden regeleinden gebruikt om de leesbaarheid te verbeteren. Men kan "
+"een lijst aanmaken door een bereik te openen dat een enkele tekenreeks bevat "
+"die tussen aanhalingstekens staat en die gevolgd wordt door een puntkomma. "
+"Men kan meerdere items opnemen die van elkaar gescheiden worden door een "
+"puntkomma."
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "DPkg::Pre-Install-Pkgs {\"/usr/sbin/dpkg-preconfigure --apt\";};\n"
+msgstr "DPkg::Pre-Install-Pkgs {\"/usr/sbin/dpkg-preconfigure --apt\";};\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"In general the sample configuration file &configureindex; is a good guide "
+"for how it should look."
+msgstr ""
+"In het algemeen vormt het voorbeeldconfiguratiebestand &configureindex; een "
+"goede richtlijn voor hoe een configuratiebestand er moet uitzien."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Case is not significant in names of configuration items, so in the previous "
+"example you could use <literal>dpkg::pre-install-pkgs</literal>."
+msgstr ""
+"In de namen van configuratie-items speelt het gebruik van hoofd- of kleine "
+"letters geen rol. In het voorgaande voorbeeld zou u dus ook <literal>dpkg::"
+"pre-install-pkgs</literal> kunnen gebruiken."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Names for the configuration items are optional if a list is defined as can "
+"be seen in the <literal>DPkg::Pre-Install-Pkgs</literal> example above. If "
+"you don't specify a name a new entry will simply add a new option to the "
+"list. If you specify a name you can override the option in the same way as "
+"any other option by reassigning a new value to the option."
+msgstr ""
+"Als een lijst gedefinieerd wordt zijn namen voor configuratie-items "
+"optioneel, zoals hierboven in het voorbeeld <literal>DPkg::Pre-Install-Pkgs</"
+"literal> te zien is. Indien u geen naam opgeeft, zal een nieuw item gewoon "
+"een nieuwe optie toevoegen aan de lijst. Indien u wel een naam opgeeft kunt "
+"u de optie op dezelfde wijze overschrijven als om het even welke andere "
+"optie door aan de optie een nieuwe waarde toe te kennen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Two special commands are defined: <literal>#include</literal> (which is "
+"deprecated and not supported by alternative implementations) and "
+"<literal>#clear</literal>. <literal>#include</literal> will include the "
+"given file, unless the filename ends in a slash, in which case the whole "
+"directory is included. <literal>#clear</literal> is used to erase a part of "
+"the configuration tree. The specified element and all its descendants are "
+"erased. (Note that these lines also need to end with a semicolon.)"
+msgstr ""
+"Er werden twee bijzondere commando's gedefinieerd: <literal>#include</"
+"literal> (dat afgeraden wordt en niet ondersteund wordt door alternatieve "
+"toepassingen) en <literal>#clear</literal>. <literal>#include</literal> "
+"voegt het opgegeven bestand in, tenzij de bestandsnaam op een slash eindigt. "
+"In dat laatste geval wordt de hele map ingevoegd. <literal>#clear</literal> "
+"wordt gebruikt om een gedeelte van de configuratieboom te wissen. Het "
+"opgegeven element en alle eronder vallende elementen worden verwijderd. "
+"(Merk op dat ook deze regels op een puntkomma moeten eindigen)."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>#clear</literal> command is the only way to delete a list or a "
+"complete scope. Reopening a scope (or using the syntax described below with "
+"an appended <literal>::</literal>) will <emphasis>not</emphasis> override "
+"previously written entries. Options can only be overridden by addressing a "
+"new value to them - lists and scopes can't be overridden, only cleared."
+msgstr ""
+"Het commando <literal>#clear</literal> is de enige manier om een lijst of "
+"een volledig bereik te wissen. Een bereik heropenen (of de hierna beschreven "
+"syntaxis met een toegevoegde <literal>::</literal> gebruiken) zal eerder "
+"ingevoerde items <emphasis>niet</emphasis> overschrijven. Opties kunnen "
+"enkel overschreven worden door hen een nieuwe waarde te geven - lijsten en "
+"bereiken kunnen niet overschreven worden, enkel gewist."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"All of the APT tools take an -o option which allows an arbitrary "
+"configuration directive to be specified on the command line. The syntax is a "
+"full option name (<literal>APT::Get::Assume-Yes</literal> for instance) "
+"followed by an equals sign then the new value of the option. To append a new "
+"element to a list, add a trailing <literal>::</literal> to the name of the "
+"list. (As you might suspect, the scope syntax can't be used on the command "
+"line.)"
+msgstr ""
+"Alle APT-gereedschap kan overweg met de optie -o die toelaat om aan de "
+"commandoregel een willekeurige configuratierichtlijn op te geven. De "
+"syntaxis is een volledige optienaam (bijvoorbeeld <literal>APT::Get::Assume-"
+"Yes</literal>) gevolgd door een gelijkheidsteken en vervolgens de nieuwe "
+"waarde voor de optie. Om een nieuw element aan een lijst toe te voegen, "
+"voegt u aan het eind van de lijstnaam een <literal>::</literal>. (Zoals u "
+"wellicht vermoedde, kan aan de commandoregel de bereik-syntaxis niet "
+"gebruikt worden.)"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that appending items to a list using <literal>::</literal> only works "
+"for one item per line, and that you should not use it in combination with "
+"the scope syntax (which adds <literal>::</literal> implicitly). Using both "
+"syntaxes together will trigger a bug which some users unfortunately depend "
+"on: an option with the unusual name \"<literal>::</literal>\" which acts "
+"like every other option with a name. This introduces many problems; for one "
+"thing, users who write multiple lines in this <emphasis>wrong</emphasis> "
+"syntax in the hope of appending to a list will achieve the opposite, as only "
+"the last assignment for this option \"<literal>::</literal>\" will be used. "
+"Future versions of APT will raise errors and stop working if they encounter "
+"this misuse, so please correct such statements now while APT doesn't "
+"explicitly complain about them."
+msgstr ""
+"Merk op dat het toevoegen van een item aan een lijst met <literal>::</"
+"literal> enkel werkt met een item per regel en dat u dit niet moet gebruiken "
+"in combinatie met de bereik-syntaxis (die impliciet <literal>::</literal> "
+"toevoegt). Beide syntactische vormen combineren lokt een fout uit waarop "
+"sommige gebruikers ongelukkiglijk zullen voortbouwen: een optie met de "
+"ongewone naam \"<literal>::</literal>\" maar die zich voorts gedraagt als "
+"elke andere optie die een naam heeft. Dit veroorzaakt veel problemen. "
+"Vooreerst zullen gebruikers die meerdere regels in deze <emphasis>verkeerde</"
+"emphasis> syntaxis schrijven in de hoop ze aan een lijst toe te voegen, het "
+"tegenovergestelde bereiken, aangezien enkel de laatste waardetoekenning aan "
+"deze optie \"<literal>::</literal>\" gebruikt zal worden. Toekomstige "
+"versies van APT zullen foutmeldingen geven en ophouden met werken als ze dit "
+"foutieve gebruik tegenkomen. Gelieve voorlopig dergelijke opdrachten te "
+"corrigeren, vermits APT zich er niet expliciet over beklaagt."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "The APT Group"
+msgstr "De APT-groep"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"This group of options controls general APT behavior as well as holding the "
+"options for all of the tools."
+msgstr ""
+"Deze groep opties regelt het algemeen gedrag van APT en bevat ook de opties "
+"die alle gereedschappen gemeen hebben."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"System Architecture; sets the architecture to use when fetching files and "
+"parsing package lists. The internal default is the architecture apt was "
+"compiled for."
+msgstr ""
+"Systeemarchitectuur; stelt de te gebruiken architectuur in bij het ophalen "
+"van bestanden en het verwerken van pakketlijsten. De interne standaard is "
+"die architectuur waarvoor apt gecompileerd werd."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"All Architectures the system supports. For instance, CPUs implementing the "
+"<literal>amd64</literal> (also called <literal>x86-64</literal>) "
+"instruction set are also able to execute binaries compiled for the "
+"<literal>i386</literal> (<literal>x86</literal>) instruction set. This list "
+"is used when fetching files and parsing package lists. The initial default "
+"is always the system's native architecture (<literal>APT::Architecture</"
+"literal>), and foreign architectures are added to the default list when they "
+"are registered via <command>dpkg --add-architecture</command>."
+msgstr ""
+"Alle door het systeem ondersteunde architecturen. Bijvoorbeeld zijn CPU's "
+"die de instructieset <literal>amd64</literal> (ook <literal>x86-64</literal> "
+"genoemd) gebruiken, ook in staat om programma's uit te voeren die "
+"gecompileerd werden voor de instructieset <literal>i386</literal> "
+"(<literal>x86</literal>). Deze lijst wordt gebruikt bij het ophalen van "
+"bestanden en het verwerken van pakketlijsten. De initiële standaard is "
+"altijd de systeemeigen architectuur (<literal>APT::Architecture</literal>) "
+"en vreemde architecturen worden aan de standaardlijst toegevoegd wanneer ze "
+"geregistreerd worden via het commando <command>dpkg --add-architecture</"
+"command>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines which compression formats are supported, how compression "
+"and decompression can be performed if support for this format isn't built "
+"into apt directly and a cost-value indicating how costly it is to compress "
+"something in this format. As an example the following configuration stanza "
+"would allow apt to download and uncompress as well as create and store files "
+"with the low-cost <literal>.reversed</literal> file extension which it will "
+"pass to the command <command>rev</command> without additional commandline "
+"parameters for compression and uncompression:"
+msgstr ""
+"Dit bereik definieert welke compressieformaten ondersteund worden, hoe "
+"compressie en decompressie uitgevoerd kunnen worden indien de ondersteuning "
+"voor dit formaat niet rechtstreeks ingebouwd is in apt en het definieert een "
+"kostwaarde die aangeeft hoe duur het is om iets in dit formaat te "
+"comprimeren. De volgende configuratiestanza laat bij wijze van voorbeeld apt "
+"toe om bestanden met de goedkope bestandsextensie <literal>.reversed</"
+"literal> zowel te downloaden en te decomprimeren als aan te maken en op te "
+"slaan, waarbij apt voor het comprimeren en decomprimeren het commando "
+"<command>rev</command> zal gebruiken zonder bijkomende "
+"commandoregelparameters:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Compressor::rev {\n"
+"\tName \"rev\";\n"
+"\tExtension \".reversed\";\n"
+"\tBinary \"rev\";\n"
+"\tCompressArg {};\n"
+"\tUncompressArg {};\n"
+"\tCost \"10\";\n"
+"};\n"
+msgstr ""
+"APT::Compressor::rev {\n"
+"\tName \"rev\";\n"
+"\tExtension \".reversed\";\n"
+"\tBinary \"rev\";\n"
+"\tCompressArg {};\n"
+"\tUncompressArg {};\n"
+"\tCost \"10\";\n"
+"};\n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"List of all build profiles enabled for build-dependency resolution, without "
+"the \"<literal>profile.</literal>\" namespace prefix. By default this list "
+"is empty. The <envar>DEB_BUILD_PROFILES</envar> as used by &dpkg-"
+"buildpackage; overrides the list notation."
+msgstr ""
+"Lijst met alle bouwprofielen die gebruikt worden bij het oplossen van de "
+"bouwvereisten met weglating van het naamruimte-prefix \"<literal>profile.</"
+"literal>\". Standaard is deze lijst leeg. <envar>DEB_BUILD_PROFILES</envar>, "
+"zoals het door &dpkg-buildpackage; gebruikt wordt, overschrijft de "
+"lijstnotatie."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Default release to install packages from if more than one version is "
+"available. Contains release name, codename or release version. Examples: "
+"'stable', 'testing', 'unstable', '&debian-stable-codename;', '&debian-"
+"testing-codename;', '4.0', '5.0*'. See also &apt-preferences;."
+msgstr ""
+"De release waarvandaan pakketten standaard geïnstalleerd moeten worden als "
+"er meer dan een versie van beschikbaar is. Bevat releasenaam, codenaam of "
+"releaseversie. Voorbeelden: 'stable', 'testing', 'unstable', '&debian-stable-"
+"codename;', '&debian-testing-codename;', '4.0', '5.0*'. Zie ook &apt-"
+"preferences;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Ignore held packages; this global option causes the problem resolver to "
+"ignore held packages in its decision making."
+msgstr ""
+"Tegengehouden pakketten negeren. Deze globale optie doet de probleemoplosser "
+"tegengehouden pakketten negeren bij zijn besluitvorming."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Defaults to on. When turned on the autoclean feature will remove any "
+"packages which can no longer be downloaded from the cache. If turned off "
+"then packages that are locally installed are also excluded from cleaning - "
+"but note that APT provides no direct means to reinstall them."
+msgstr ""
+"Staat standaard aan. Wanneer de functie autoclean (automatisch opruimen) aan "
+"staat, zal ze automatisch alle pakketten verwijderen die niet langer "
+"gedownload kunnen worden uit de cache. Als ze uitgezet staat, zullen ook "
+"pakketten die lokaal geïnstalleerd werden, niet opgeruimd worden - maar merk "
+"wel op dat APT geen rechtstreeks middel ter beschikking stelt om een "
+"dergelijk pakket opnieuw te installeren."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Defaults to on, which will cause APT to install essential and important "
+"packages as soon as possible in an install/upgrade operation, in order to "
+"limit the effect of a failing &dpkg; call. If this option is disabled, APT "
+"treats an important package in the same way as an extra package: between the "
+"unpacking of the package A and its configuration there can be many other "
+"unpack or configuration calls for other unrelated packages B, C etc. If "
+"these cause the &dpkg; call to fail (e.g. because package B's maintainer "
+"scripts generate an error), this results in a system state in which package "
+"A is unpacked but unconfigured - so any package depending on A is now no "
+"longer guaranteed to work, as its dependency on A is no longer satisfied."
+msgstr ""
+"Staat standaard aan, hetgeen APT ertoe aanzet om bij een installatie/"
+"opwaarderingsoperatie essentiële en belangrijke pakketten zo snel mogelijk "
+"te installeren om zo het effect van een falende aanroep van &dpkg; te "
+"beperken. Indien deze optie uitgezet werd, behandelt APT een belangrijk "
+"pakket op dezelfde manier als een extra pakket: tussen het uitpakken van "
+"pakket A en de configuratie ervan kunnen er vele andere uitpak- en "
+"configuratieoperaties uitgevoerd worden voor andere niet-verwante pakketten "
+"B, C, enz. Indien een van deze operaties\n"
+" een mislukte aanroep van &dpkg; uitlokt (bijvoorbeeld omdat een script van "
+"de pakketonderhouder van pakket B een fout produceert), zal dit een "
+"systeemtoestand opleveren waarbij pakket A uitgepakt maar niet "
+"geconfigureerd is, waardoor er geen garantie meer bestaat dat alle pakketten "
+"die van A afhangen, nog langer zullen werken, aangezien aan die "
+"afhankelijkheid niet langer voldaan wordt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The immediate configuration marker is also applied in the potentially "
+"problematic case of circular dependencies, since a dependency with the "
+"immediate flag is equivalent to a Pre-Dependency. In theory this allows APT "
+"to recognise a situation in which it is unable to perform immediate "
+"configuration, abort, and suggest to the user that the option should be "
+"temporarily deactivated in order to allow the operation to proceed. Note "
+"the use of the word \"theory\" here; in the real world this problem has "
+"rarely been encountered, in non-stable distribution versions, and was caused "
+"by wrong dependencies of the package in question or by a system in an "
+"already broken state; so you should not blindly disable this option, as the "
+"scenario mentioned above is not the only problem it can help to prevent in "
+"the first place."
+msgstr ""
+"Een markering voor onmiddellijke configuratie wordt ook toegepast in het "
+"potentieel problematische geval van circulaire afhankelijkheden, aangezien "
+"een vereiste met de vlag 'er onmiddellijk aan voldoen' het equivalent is van "
+"een voorvereiste. In theorie laat dit APT toe om een situatie te herkennen "
+"waarin het geen onmiddellijke configuratie kan uitvoeren, zijn werkzaamheden "
+"in dat geval af te breken en de gebruiker voor te stellen om de optie "
+"tijdelijk uit te zetten zodat de operatie voortgezet kan worden. Noteer dat "
+"hier het woord \"theorie\" gebruikt werd. In het echte leven heeft men een "
+"dergelijk probleem slechts zelden ervaren en dan was het omdat in een niet-"
+"stabiele versie van de distributie het pakket in kwestie foutieve vereisten "
+"had of omdat het systeem zich reeds in een beschadigde toestand bevond. U "
+"zou deze optie dus niet blindweg mogen uitschakelen, omdat het hierboven "
+"beschreven scenario niet het enige probleem is dat deze optie in eerste "
+"instantie kan helpen voorkomen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Before a big operation like <literal>dist-upgrade</literal> is run with this "
+"option disabled you should try to explicitly <literal>install</literal> the "
+"package APT is unable to configure immediately; but please make sure you "
+"also report your problem to your distribution and to the APT team with the "
+"buglink below, so they can work on improving or correcting the upgrade "
+"process."
+msgstr ""
+"Voor u, met deze optie uitgezet, een grote operatie zoals <literal>dist-"
+"upgrade</literal> uitvoert, zou u het pakket dat APT niet onmiddellijk kan "
+"configureren, expliciet moeten proberen te installeren met <literal>install</"
+"literal>. Maar zorg er ook zeker voor om uw probleem te rapporteren aan uw "
+"distributie en aan het APT-team met de onderstaande buglink. Zo kunnen zij "
+"werken aan het verbeteren of het corrigeren van de opwaarderingsprocedure."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Never enable this option unless you <emphasis>really</emphasis> know what "
+"you are doing. It permits APT to temporarily remove an essential package to "
+"break a Conflicts/Conflicts or Conflicts/Pre-Depends loop between two "
+"essential packages. <emphasis>Such a loop should never exist and is a grave "
+"bug</emphasis>. This option will work if the essential packages are not "
+"<command>tar</command>, <command>gzip</command>, <command>libc</command>, "
+"<command>dpkg</command>, <command>dash</command> or anything that those "
+"packages depend on."
+msgstr ""
+"Zet deze optie nooit aan tenzij u <emphasis>echt</emphasis> weet wat u doet. "
+"Ze laat APT toe om tijdelijk een essentieel pakket te verwijderen om een lus "
+"van Conflicts/Conflicts of Conflicts/Pre-Depends tussen twee essentiële "
+"pakketten te doorbreken. <emphasis>Een dergelijke lus zou nooit mogen "
+"voorkomen en is een zorgwekkende bug</emphasis>. Deze optie zal werken als "
+"die essentiële pakketten niet <command>tar</command>, <command>gzip</"
+"command>, <command>libc</command>, <command>dpkg</command>, <command>dash</"
+"command> zijn of iets waarvan deze pakketten afhankelijk zijn."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"APT uses since version 0.7.26 a resizable memory mapped cache file to store "
+"the available information. <literal>Cache-Start</literal> acts as a hint of "
+"the size the cache will grow to, and is therefore the amount of memory APT "
+"will request at startup. The default value is 20971520 bytes (~20 MB). Note "
+"that this amount of space needs to be available for APT; otherwise it will "
+"likely fail ungracefully, so for memory restricted devices this value should "
+"be lowered while on systems with a lot of configured sources it should be "
+"increased. <literal>Cache-Grow</literal> defines in bytes with the default "
+"of 1048576 (~1 MB) how much the cache size will be increased in the event "
+"the space defined by <literal>Cache-Start</literal> is not enough. This "
+"value will be applied again and again until either the cache is big enough "
+"to store all information or the size of the cache reaches the <literal>Cache-"
+"Limit</literal>. The default of <literal>Cache-Limit</literal> is 0 which "
+"stands for no limit. If <literal>Cache-Grow</literal> is set to 0 the "
+"automatic growth of the cache is disabled."
+msgstr ""
+"Sinds versie 0.7.26 gebruikt APT een in het geheugen geladen cachebestand "
+"van variabele grootte waarin de informatie over beschikbare bestanden "
+"opgeslagen ligt. <literal>Cache-Start</literal> werkt als een hint voor de "
+"grootte die de cache uiteindelijk zal aannemen en is daarom de hoeveelheid "
+"geheugen die APT bij het opstarten zal aanvragen. De standaardwaarde is "
+"20971520 bytes (~20 MB). Merk op dat dit volume geheugenruimte beschikbaar "
+"moet zijn voor APT, anders zal het wellicht op een onelegante wijze falen. "
+"Voor apparaten met beperkt geheugen zou deze waarde dus verlaagd moeten "
+"worden, terwijl ze verhoogd zou moeten worden op systemen met veel "
+"geconfigureerde pakketbronnen. <literal>Cache-Grow</literal> geeft aan, in "
+"bytes met een standaard van 1048576 (~1 MB), hoeveel de cachegrootte "
+"uitgebreid zal worden in het geval de ruimte gedefinieerd door "
+"<literal>Cache-Start</literal> niet volstaat. Steeds weer zal dit bijkomend "
+"geheugenvolume toegevoegd worden totdat uiteindelijk de cachegrootte "
+"uitgebreid genoeg is om alle informatie in op te slaan of totdat de "
+"<literal>Cache-Limit</literal> bereikt wordt. De standaardinstelling voor "
+"<literal>Cache-Limit</literal> is 0, hetgeen staat voor geen limiet. Indien "
+"<literal>Cache-Grow</literal> ingesteld wordt op 0, wordt de automatische "
+"uitbreiding van de cache uitgeschakeld."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Defines which packages are considered essential build dependencies."
+msgstr "Bepaalt welke pakketten beschouwd worden als essentiële bouwvereisten."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Get subsection controls the &apt-get; tool; please see its documentation "
+"for more information about the options here."
+msgstr ""
+"De onderafdeling Get regelt het gereedschap &apt-get; raadpleeg de "
+"documentatie daarover voor meer informatie over de opties in kwestie."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Cache subsection controls the &apt-cache; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"De onderafdeling Cache regelt het gereedschap &apt-cache; raadpleeg de "
+"documentatie daarover voor meer informatie over de opties in kwestie."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The CDROM subsection controls the &apt-cdrom; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"De onderafdeling CDROM regelt het gereedschap &apt-cdrom; raadpleeg de "
+"documentatie daarover voor meer informatie over de opties in kwestie."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "The Acquire Group"
+msgstr "De Acquire-groep"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Acquire</literal> group of options controls the download of "
+"packages as well as the various \"acquire methods\" responsible for the "
+"download itself (see also &sources-list;)."
+msgstr ""
+"De opties die tot de groep <literal>Acquire</literal> behoren, regelen het "
+"downloaden van pakketten evenals de verschillende ophaalmethodes (\"acquire "
+"methods\") die verantwoordelijk zijn voor het downloaden zelf (zie ook "
+"&sources-list;)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Security related option defaulting to true, as giving a Release file's "
+"validation an expiration date prevents replay attacks over a long timescale, "
+"and can also for example help users to identify mirrors that are no longer "
+"updated - but the feature depends on the correctness of the clock on the "
+"user system. Archive maintainers are encouraged to create Release files with "
+"the <literal>Valid-Until</literal> header, but if they don't or a stricter "
+"value is desired the <literal>Max-ValidTime</literal> option below can be "
+"used. The <option>Check-Valid-Until</option> option of &sources-list; "
+"entries should be preferred to disable the check selectively instead of "
+"using this global override."
+msgstr ""
+"Deze met beveiliging verband houdende optie staat standaard ingesteld op "
+"waar (true), aangezien het plaatsen van een vervaldatum op de validering van "
+"een Release-bestand langdurige zogenaamde replay-aanvallen kan voorkomen. Ze "
+"kan gebruikers ook helpen om spiegelservers te identificeren die niet langer "
+"bijgewerkt worden, al is deze functionaliteit afhankelijk van een juist "
+"werkende klok op het systeem van de gebruiker. Onderhouders van archieven "
+"worden aangemoedigd om Release-bestanden aan te maken met een koptekst "
+"<literal>Valid-Until</literal>, maar als ze dat niet doen of indien er een "
+"striktere waarde nodig is, kan de onderstaande optie <literal>Max-ValidTime</"
+"literal> gebruikt worden. In plaats van deze globale vervanging zou bij "
+"voorkeur de optie <option>Check-Valid-Until</option> voor regels in &sources-"
+"list; gebruikt moeten worden om de toets op een selectieve manier uit te "
+"zetten."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Maximum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. If the Release file itself includes a "
+"<literal>Valid-Until</literal> header the earlier date of the two is used as "
+"the expiration date. The default value is <literal>0</literal> which stands "
+"for \"valid forever\". Archive specific settings can be made by appending "
+"the label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the <option>Valid-"
+"Until-Max</option> option there."
+msgstr ""
+"Maximum tijd (in seconden) na het tijdstip waarop het <filename>Release</"
+"filename>-bestand aangemaakt werd (zoals vermeld in de koptekst "
+"<literal>Date</literal>), dat het als geldig beschouwd moet worden. Indien "
+"het Release-bestand zelf een koptekst <literal>Valid-Until</literal> bevat "
+"wordt de meest recente van beide data als vervaldatum genomen. De "
+"standaardwaarde is <literal>0</literal> hetgeen staat voor \"onbeperkt geldig"
+"\". Archiefspecifieke instellingen kunnen aangemaakt worden door de naam van "
+"het archief toe te voegen aan de optienaam. Hetzelfde effect kan voor "
+"specifieke regels uit &sources-list; bereikt worden door daar de optie "
+"<option>Valid-Until-Max</option> te gebruiken, wat bij voorkeur gedaan zou "
+"moeten worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Minimum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. Use this if you need to use a seldom updated "
+"(local) mirror of a more frequently updated archive with a <literal>Valid-"
+"Until</literal> header instead of completely disabling the expiration date "
+"checking. Archive specific settings can and should be used by appending the "
+"label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the <option>Valid-"
+"Until-Min</option> option there."
+msgstr ""
+"Minimum tijd (in seconden) na het tijdstip waarop het <filename>Release</"
+"filename>-bestand aangemaakt werd (zoals vermeld in de koptekst "
+"<literal>Date</literal>), dat het als geldig beschouwd moet worden. Gebruik "
+"dit indien u beroep moet doen op een zelden bijgewerkte (lokale) "
+"spiegelserver van een vaker bijgewerkt archief met een koptekst "
+"<literal>Valid-Until</literal>. Dit is te verkiezen boven het volledig "
+"uitschakelen van de controle van de vervaldatum. Archiefspecifieke "
+"instellingen kunnen en zouden moeten gebruikt worden door de naam van het "
+"archief toe te voegen aan de optienaam. Hetzelfde effect kan voor specifieke "
+"regels uit &sources-list; bereikt worden door daar de optie <option>Valid-"
+"Until-Min</option> te gebruiken, wat bij voorkeur gedaan zou moeten worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Try to download deltas called <literal>PDiffs</literal> for indexes (like "
+"<filename>Packages</filename> files) instead of downloading whole ones. True "
+"by default. Preferably, this can be set for specific &sources-list; entries "
+"or index files by using the <option>PDiffs</option> option there."
+msgstr ""
+"Tracht de wijzigingen aan indexen (zoals de bestanden <filename>Packages</"
+"filename>), <literal>PDiffs</literal> genaamd, op te halen in plaats van de "
+"volledige bestanden. Standaard ingesteld op waar. Dit kan voor specifieke "
+"regels in &sources-list; of specifieke indexbestanden ingesteld worden door "
+"daar de optie <option>PDiffs</option> te gebruiken, wat bij voorkeur gedaan "
+"zou moeten worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Two sub-options to limit the use of PDiffs are also available: "
+"<literal>FileLimit</literal> can be used to specify a maximum number of "
+"PDiff files should be downloaded to update a file. <literal>SizeLimit</"
+"literal> on the other hand is the maximum percentage of the size of all "
+"patches compared to the size of the targeted file. If one of these limits is "
+"exceeded the complete file is downloaded instead of the patches."
+msgstr ""
+"Er zijn ook twee subopties beschikbaar om het gebruik van PDiffs te "
+"beperken: <literal>FileLimit</literal> kan gebruikt worden om het maximum "
+"aantal PDiff-bestanden op te geven die gedownload zouden mogen worden om een "
+"bestand bij te werken. <literal>SizeLimit</literal> van zijn kant geeft aan "
+"hoe groot het percentage van alle patches samen mag zijn vergeleken met de "
+"grootte van het bestand waarop ze betrekking hebben. Indien een van beide "
+"limieten overschreden wordt, wordt het ganse bestand gedownload in plaats "
+"van de patches."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Try to download indexes via an URI constructed from a hashsum of the "
+"expected file rather than downloaded via a well-known stable filename. True "
+"by default, but automatically disabled if the source indicates no support "
+"for it. Usage can be forced with the special value \"force\". Preferably, "
+"this can be set for specific &sources-list; entries or index files by using "
+"the <option>By-Hash</option> option there."
+msgstr ""
+"Tracht indexen te downloaden via een URI die opgebouwd wordt op basis van de "
+"frommelcontrolesom van het verwachte bestand, eerder dan via een welbekende "
+"stabiele bestandsnaam. Dit staat standaard ingesteld op waar (true), maar "
+"als de pakketbron aangeeft dat dit niet ondersteund wordt, wordt het "
+"automatisch uitgeschakeld. Het gebruik ervan kan verplicht worden met de "
+"bijzondere waarde \"force\". Dit kan voor specifieke regels in &sources-"
+"list; of specifieke indexbestanden ingesteld worden door daar de optie "
+"<option>By-Hash</option> te gebruiken, wat bij voorkeur gedaan zou moeten "
+"worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</"
+"literal> or <literal>access</literal> which determines how APT parallelizes "
+"outgoing connections. <literal>host</literal> means that one connection per "
+"target host will be opened, <literal>access</literal> means that one "
+"connection per URI type will be opened."
+msgstr ""
+"Wachtrijmodus; <literal>Queue-Mode</literal> kan ofwel <literal>host</"
+"literal> ofwel <literal>access</literal> zijn en bepaalt hoe APT de "
+"parallellisatie van uitgaande verbindingen organiseert. <literal>host</"
+"literal> betekent dat een verbinding per doelcomputer geopend wordt, "
+"<literal>access</literal> wil zeggen dat een verbinding per URI-type geopend "
+"wordt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Number of retries to perform. If this is non-zero APT will retry failed "
+"files the given number of times."
+msgstr ""
+"Aantal uit te voeren pogingen. Indien dit niet nul is, zal APT bij een "
+"mislukte poging het opgegeven aantal nieuwe pogingen doen om een bestand op "
+"te halen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Use symlinks for source archives. If set to true then source archives will "
+"be symlinked when possible instead of copying. True is the default."
+msgstr ""
+"Gebruik symbolische koppelingen voor bronarchieven. Indien dit op true "
+"(waar) ingesteld staat, zal geen kopie van een bronarchief gemaakt worden "
+"als een symbolische koppeling mogelijk is. Waar is de standaardinstelling."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>http::Proxy</literal> sets the default proxy to use for HTTP URIs. "
+"It is in the standard form of <literal>http://[[user][:pass]@]host[:port]/</"
+"literal>. Per host proxies can also be specified by using the form "
+"<literal>http::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>http_proxy</envar> environment variable will "
+"be used."
+msgstr ""
+"<literal>http::Proxy</literal> stelt de te gebruiken standaard-proxy in voor "
+"URI's van het type HTTP. De standaardvorm ervan is <literal>http://[[user][:"
+"pass]@]host[:port]/</literal>. Proxy's kunnen ook per computer ingesteld "
+"worden volgens het schema <literal>http::Proxy::&lt;host&gt;</literal>, "
+"waarbij het bijzondere trefwoord <literal>DIRECT</literal> betekent dat geen "
+"proxy's gebruikt worden. Indien geen van de bovenstaande instellingen "
+"opgegeven werd, zal de omgevingsvariabele <envar>http_proxy</envar> gebruikt "
+"worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Three settings are provided for cache control with HTTP/1.1 compliant proxy "
+"caches. <literal>No-Cache</literal> tells the proxy not to use its cached "
+"response under any circumstances. <literal>Max-Age</literal> sets the "
+"allowed maximum age (in seconds) of an index file in the cache of the "
+"proxy. <literal>No-Store</literal> specifies that the proxy should not "
+"store the requested archive files in its cache, which can be used to prevent "
+"the proxy from polluting its cache with (big) .deb files."
+msgstr ""
+"Er staan drie configuratieopties ter beschikking om HTTP/1.1-compatibele "
+"proxy-caches te beheren. <literal>No-Cache</literal> zegt de proxy om in "
+"geen geval gebruik te maken van het in zijn cache beschikbare antwoord. "
+"<literal>Max-Age</literal> stelt de maximum toegelaten leeftijd (in "
+"seconden) in van een indexbestand in de cache van de proxy. <literal>No-"
+"Store</literal> geeft aan dat de proxy de opgevraagde archiefbestanden niet "
+"in zijn cache moet opslaan. Zo kan men voorkomen dat de cache van de proxy "
+"vervuild raakt met (grote) .deb-bestanden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The option <literal>timeout</literal> sets the timeout timer used by the "
+"method; this value applies to the connection as well as the data timeout."
+msgstr ""
+"De optie <literal>timeout</literal> stelt de tijdslimiet in die gehanteerd "
+"moet worden door de timer die door deze methode gebruikt wordt. Deze waarde "
+"is zowel van toepassing op de tijdslimiet van de verbinding als op die van "
+"de data-overdracht."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e."
+"g. on high-latency connections. It specifies how many requests are sent in a "
+"pipeline. APT tries to detect and workaround misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the "
+"HTTP/1.1 specification pipelining can be disabled by setting the value to 0. "
+"It is enabled by default with the value 10."
+msgstr ""
+"De instelling <literal>Acquire::http::Pipeline-Depth</literal> kan gebruikt "
+"worden om de techniek van HTTP pipelining (RFC 2616 sectie 8.1.2.2) toe te "
+"passen. Die kan bijvoorbeeld nuttig zijn bij verbindingen met een hoge "
+"vertraging (high-latency connections). APT tracht tijdens het uitvoeren van "
+"de bewerking webservers en proxy's die zich niet correct gedragen, te "
+"ontdekken en te omzeilen, maar als u weet dat de uwe niet conform de "
+"HTTP/1.1 specificatie is, kan het werken met een pijplijn uitgezet worden "
+"door de waarde op 0 te zetten. Standaard is dit geactiveerd met de waarde 10."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::AllowRedirect</literal> controls whether APT will "
+"follow redirects, which is enabled by default."
+msgstr ""
+"<literal>Acquire::http::AllowRedirect</literal> regelt of APT eventuele "
+"omleidingen volgt. Standaard staat dit aan."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</"
+"literal> which accepts integer values in kilobytes per second. The default "
+"value is 0 which deactivates the limit and tries to use all available "
+"bandwidth. Note that this option implicitly disables downloading from "
+"multiple servers at the same time."
+msgstr ""
+"De gebruikte bandbreedte kan beperkt worden via <literal>Acquire::http::Dl-"
+"Limit</literal> dat in gehele getallen uitgedrukte waarden in kilobytes per "
+"seconde accepteert. De standaardwaarde is 0 waardoor er geen limiet "
+"ingesteld wordt en er geprobeerd wordt om alle beschikbare bandbreedte te "
+"gebruiken. Merk op dat deze optie impliciet het gelijktijdig downloaden "
+"vanaf meerdere servers uitschakelt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::User-Agent</literal> can be used to set a different "
+"User-Agent for the http download method as some proxies allow access for "
+"clients only if the client uses a known identifier."
+msgstr ""
+"<literal>Acquire::http::User-Agent</literal> kan gebruikt worden om voor "
+"User-Agent een andere waarde in te stellen om bij de http-downloadmethode te "
+"gebruiken. Sommige proxy's verlenen een cliënt enkel toegang als die een "
+"gekende identificatie gebruikt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::Proxy-Auto-Detect</literal> can be used to specify "
+"an external command to discover the http proxy to use. The first and only "
+"parameter is an URI denoting the host to be contacted to allow for host-"
+"specific configuration. APT expects the command to output the proxy on "
+"stdout as a single line in the style <literal>http://proxy:port/</literal> "
+"or the word <literal>DIRECT</literal> if no proxy should be used. No output "
+"indicates that the generic proxy settings should be used. Note that auto-"
+"detection will not be used for a host if a host-specific proxy configuration "
+"is already set via <literal>Acquire::http::Proxy::<replaceable>HOST</"
+"replaceable></literal>. See the &squid-deb-proxy-client; package for an "
+"example implementation that uses avahi. This option takes precedence over "
+"the legacy option name <literal>ProxyAutoDetect</literal>."
+msgstr ""
+"<literal>Acquire::http::Proxy-Auto-Detect</literal> kan gebruikt worden om "
+"een extern commando op te geven om de te gebruiken http-proxy te vinden. De "
+"eerste en enige parameter is een URI die aangeeft met welke computer contact "
+"gemaakt moet worden om computerspecifieke configuratie te kunnen gebruiken. "
+"APT verwacht dat het commando de proxy op de standaarduitvoer op één enkele "
+"regel weergeeft volgens het schema <literal>http://proxy:port/</literal> of "
+"anders het woord <literal>DIRECT</literal> in het geval geen proxy gebruikt "
+"moet worden. Geen uitvoer geeft aan dat de generieke proxy-instellingen "
+"gebruikt moeten worden. Merk op dat geen autodetectie gebruikt zal worden "
+"voor een computer indien reeds een computerspecifieke proxyconfiguratie "
+"ingesteld werd via <literal>Acquire::http::Proxy::<replaceable>HOST</"
+"replaceable></literal>. Raadpleeg het pakket &squid-deb-proxy-client; voor "
+"een voorbeeldtoepassing waarin avahi gebruikt wordt. Deze optie heeft "
+"voorrang op de verouderde optienaam <literal>ProxyAutoDetect</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Cache-control</literal>, <literal>Timeout</literal>, "
+"<literal>AllowRedirect</literal>, <literal>Dl-Limit</literal> and "
+"<literal>proxy</literal> options work for HTTPS URIs in the same way as for "
+"the <literal>http</literal> method, and default to the same values if they "
+"are not explicitly set. The <literal>Pipeline-Depth</literal> option is not "
+"yet supported."
+msgstr ""
+"De opties <literal>Cache-control</literal>, <literal>Timeout</literal>, "
+"<literal>AllowRedirect</literal>, <literal>Dl-Limit</literal> en "
+"<literal>proxy</literal> werken op dezelfde manier voor URI's van het type "
+"HTTPS als voor de <literal>http</literal>-methode en hebben dezelfde "
+"standaardwaarden als ze niet expliciet ingesteld werden. De optie "
+"<literal>Pipeline-Depth</literal> wordt momenteel nog niet ondersteund."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>CaInfo</literal> suboption specifies place of file that holds info "
+"about trusted certificates. <literal>&lt;host&gt;::CaInfo</literal> is the "
+"corresponding per-host option. <literal>Verify-Peer</literal> boolean "
+"suboption determines whether or not the server's host certificate should be "
+"verified against trusted certificates. <literal>&lt;host&gt;::Verify-Peer</"
+"literal> is the corresponding per-host option. <literal>Verify-Host</"
+"literal> boolean suboption determines whether or not the server's hostname "
+"should be verified. <literal>&lt;host&gt;::Verify-Host</literal> is the "
+"corresponding per-host option. <literal>SslCert</literal> determines what "
+"certificate to use for client authentication. <literal>&lt;host&gt;::"
+"SslCert</literal> is the corresponding per-host option. <literal>SslKey</"
+"literal> determines what private key to use for client authentication. "
+"<literal>&lt;host&gt;::SslKey</literal> is the corresponding per-host "
+"option. <literal>SslForceVersion</literal> overrides default SSL version to "
+"use. It can contain either of the strings '<literal>TLSv1</literal>' or "
+"'<literal>SSLv3</literal>'. <literal>&lt;host&gt;::SslForceVersion</"
+"literal> is the corresponding per-host option."
+msgstr ""
+"De suboptie <literal>CaInfo</literal> specificeert de plaats waar het "
+"bestand zich bevindt dat informatie bevat over vertrouwde certificaten. "
+"<literal>&lt;host&gt;::CaInfo</literal> is de overeenkomstige optie voor een "
+"specifieke computer. De booleaanse suboptie <literal>Verify-Peer</literal> "
+"bepaalt of het computercertificaat van de server al dan niet geverifieerd "
+"moet worden tegenover de vertrouwde certificaten. <literal>&lt;host&gt;::"
+"Verify-Peer</literal> is de overeenkomstige optie voor een specifieke "
+"computer. De booleaanse suboptie <literal>Verify-Host</literal> bepaalt of "
+"de computernaam van de server wel of niet geverifieerd moet worden. "
+"<literal>&lt;host&gt;::Verify-Host</literal> is de overeenkomstige optie "
+"voor een specifieke computer. <literal>SslCert</literal> bepaalt welk "
+"certificaat gebruikt moet worden voor de authenticatie van de cliënt. "
+"<literal>&lt;host&gt;::SslCert</literal> is de overeenkomstige optie voor "
+"een specifieke computer. <literal>SslKey</literal> bepaalt welke "
+"privésleutel gebruikt moet worden voor de authenticatie van de cliënt. "
+"<literal>&lt;host&gt;::SslKey</literal> is de overeenkomstige optie voor een "
+"specifieke computer. <literal>SslForceVersion</literal> overschrijft de "
+"standaardinstelling voor de te gebruiken versie van SSL. Het kan ofwel "
+"'<literal>TLSv1</literal>' of '<literal>SSLv3</literal>' als tekenreeks "
+"bevatten. <literal>&lt;host&gt;::SslForceVersion</literal> is de "
+"overeenkomstige optie voor een specifieke computer."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs. "
+"It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</"
+"literal>. Per host proxies can also be specified by using the form "
+"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
+"used. To use an FTP proxy you will have to set the <literal>ftp::ProxyLogin</"
+"literal> script in the configuration file. This entry specifies the commands "
+"to send to tell the proxy server what to connect to. Please see "
+"&configureindex; for an example of how to do this. The substitution "
+"variables representing the corresponding URI component are <literal>"
+"$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, <literal>"
+"$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, <literal>$(SITE)</"
+"literal> and <literal>$(SITE_PORT)</literal>."
+msgstr ""
+"<literal>ftp::Proxy</literal> stelt de te gebruiken standaard-proxy in voor "
+"URI's van het type FTP. De standaardvorm ervan is <literal>ftp://[[user][:"
+"pass]@]host[:port]/</literal>. Proxy's kunnen ook per computer ingesteld "
+"worden volgens het schema <literal>ftp::Proxy::&lt;host&gt;</literal>, "
+"waarbij het bijzondere trefwoord <literal>DIRECT</literal> betekent dat geen "
+"proxy's gebruikt worden. Indien geen van de bovenstaande instellingen "
+"opgegeven werd, zal de omgevingsvariabele <envar>ftp_proxy</envar> gebruikt "
+"worden. Om een FTP-proxy te gebruiken zult u het script <literal>ftp::"
+"ProxyLogin</literal> in het configuratiebestand moeten instellen. Dit item "
+"omschrijft de te verzenden commando's die de proxy-server moeten laten weten "
+"waarmee hij een verbinding moet maken. Raadpleeg &configureindex; voor een "
+"voorbeeld van hoe dit moet gedaan worden. De substitutievariabelen die de "
+"overeenkomstige URI-component vertegenwoordigen, zijn <literal>"
+"$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, <literal>"
+"$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, <literal>$(SITE)</"
+"literal> en <literal>$(SITE_PORT)</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Several settings are provided to control passive mode. Generally it is safe "
+"to leave passive mode on; it works in nearly every environment. However, "
+"some situations require that passive mode be disabled and port mode FTP used "
+"instead. This can be done globally or for connections that go through a "
+"proxy or for a specific host (see the sample config file for examples)."
+msgstr ""
+"Meerdere instellingen zijn beschikbaar om de passieve modus te controleren. "
+"Over het algemeen is het veilig om de passieve modus aan te laten staan. Hij "
+"werkt in praktisch elke omgeving. Toch vereisen sommige situaties het "
+"uitschakelen van de passieve modus en het gebruik in de plaats daarvan van "
+"FTP in poortmodus. Dit kan globaal gebeuren of voor verbindingen die langs "
+"een proxy passeren of voor een specifieke computer. (raadpleeg voor "
+"voorbeelden het voorbeeldconfiguratiebestand)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
+"envar> environment variable to an HTTP URL - see the discussion of the http "
+"method above for syntax. You cannot set this in the configuration file and "
+"it is not recommended to use FTP over HTTP due to its low efficiency."
+msgstr ""
+"Het is mogelijk om proxy voor FTP over HTTP te laten verlopen door de "
+"omgevingsvariabele <envar>ftp_proxy</envar> in te stellen op een URL van het "
+"type HTTP - zie de eerdere bespreking van de http-methode voor de syntaxis. "
+"U kunt dit niet in het configuratiebestand instellen en het gebruik van FTP "
+"over HTTP wordt niet aangeraden omwille van zijn geringe efficiëntie."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
+"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
+"false, which means these commands are only used if the control connection is "
+"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
+"that most FTP servers do not support RFC2428."
+msgstr ""
+"De instelling <literal>ForceExtended</literal> regelt het gebruik van de "
+"RFC2428 commando's <literal>EPSV</literal> en <literal>EPRT</literal>. "
+"Standaard staat ze uitgeschakeld (ingesteld op false), hetgeen betekent dat "
+"deze commando's enkel gebruikt worden indien de controleverbinding van het "
+"type IPv6 is. Deze instelling aanzetten (instellen op true) verplicht het "
+"gebruik van deze commando's zelfs bij verbindingen van het type IPv4. Merk "
+"op dat de meeste FTP-servers RFC2428 niet ondersteunen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "/cdrom/::Mount \"foo\";"
+msgstr "/cdrom/::Mount \"foo\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"For URIs using the <literal>cdrom</literal> method, the only configurable "
+"option is the mount point, <literal>cdrom::Mount</literal>, which must be "
+"the mount point for the CD-ROM (or DVD, or whatever) drive as specified in "
+"<filename>/etc/fstab</filename>. It is possible to provide alternate mount "
+"and unmount commands if your mount point cannot be listed in the fstab. The "
+"syntax is to put <placeholder type=\"literallayout\" id=\"0\"/> within the "
+"<literal>cdrom</literal> block. It is important to have the trailing slash. "
+"Unmount commands can be specified using UMount."
+msgstr ""
+"Voor URI's die de methode <literal>cdrom</literal> gebruiken is het "
+"aankoppelpunt, <literal>cdrom::Mount</literal>, de enige optie die "
+"geconfigureerd kan worden. Dit moet het aankoppelpunt voor het CD-station "
+"(of DVD-station of wat dan ook) zijn zoals vermeld in <filename>/etc/fstab</"
+"filename>. Het is mogelijk om te voorzien in vervangende commando's voor de "
+"aankoppelings- en afkoppelingsoperaties als het niet mogelijk is om het "
+"aankoppelpunt in fstab op te nemen. De syntaxis is om <placeholder type="
+"\"literallayout\" id=\"0\"/> binnen het <literal>cdrom</literal>-blok te "
+"plaatsen. Het is belangrijk dat ook de nakomende slash gebruikt wordt. "
+"Afkoppelingsopdrachten kunnen opgegeven worden door UMount te gebruiken."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"For GPGV URIs the only configurable option is <literal>gpgv::Options</"
+"literal>, which passes additional parameters to gpgv."
+msgstr ""
+"Voor URI's van het type GPGV is de enige optie die geconfigureerd kan worden "
+"<literal>gpgv::Options</literal>. Ze geeft bijkomende parameters door aan "
+"gpgv."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";"
+msgstr "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"List of compression types which are understood by the acquire methods. "
+"Files like <filename>Packages</filename> can be available in various "
+"compression formats. By default the acquire methods can decompress and "
+"recompress many common formats like <command>xz</command> and <command>gzip</"
+"command>; with this scope the supported formats can be queried, modified as "
+"well as support for more formats added (see also <option>APT::Compressor</"
+"option>). The syntax for this is: <placeholder type=\"synopsis\" id=\"0\"/>"
+msgstr ""
+"Lijst van compressietypes die door de methodes voor het ophalen van "
+"pakketten begrepen worden. Bestanden zoals <filename>Packages</filename> "
+"kunnen in verschillende compressieformaten beschikbaar zijn. Standaard "
+"kunnen de ophaalmethodes veel gebruikelijke formaten zoals <command>xz</"
+"command> en <command>gzip</command> decomprimeren en opnieuw comprimeren. "
+"Met dit bereik kunnen de ondersteunde formaten doorzocht worden, kunnen er "
+"wijzigingen in aangebracht worden en kan ondersteuning voor nog andere "
+"formaten toegevoegd worden (zie ook <option>APT::Compressor</option>). De "
+"syntaxis hiervoor is: <placeholder type=\"synopsis\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order:: \"gz\";"
+msgstr "Acquire::CompressionTypes::Order:: \"gz\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order { \"xz\"; \"gz\"; };"
+msgstr "Acquire::CompressionTypes::Order { \"xz\"; \"gz\"; };"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Also, the <literal>Order</literal> subgroup can be used to define in which "
+"order the acquire system will try to download the compressed files. The "
+"acquire system will try the first and proceed with the next compression type "
+"in this list on error, so to prefer one over the other type simply add the "
+"preferred type first - types not already added will be implicitly appended "
+"to the end of the list, so e.g. <placeholder type=\"synopsis\" id=\"0\"/> "
+"can be used to prefer <command>gzip</command> compressed files over all "
+"other compression formats. If <command>xz</command> should be preferred "
+"over <command>gzip</command> and <command>bzip2</command> the configure "
+"setting should look like this: <placeholder type=\"synopsis\" id=\"1\"/> It "
+"is not needed to add <literal>bz2</literal> to the list explicitly as it "
+"will be added automatically."
+msgstr ""
+"Voorts kan de subgroep <literal>Order</literal> gebruikt worden om te "
+"bepalen in welke volgorde het ophaalsysteem de gecomprimeerde bestanden zal "
+"trachten te downloaden. Eerst zal het ophaalsysteem het eerste "
+"compressietype proberen en als dat mislukt het volgende uit deze lijst. Om "
+"dus een type boven een ander te laten verkiezen moet u het gewoon vooraan in "
+"de lijst plaatsen. Nog niet vermelde standaardtypes zullen impliciet aan het "
+"einde van de lijst toegevoegd worden. Zo kan bijvoorbeeld <placeholder type="
+"\"synopsis\" id=\"0\"/> gebruikt worden om met <command>gzip</command> "
+"gecomprimeerde bestanden te verkiezen boven alle andere formaten. Indien "
+"<command>xz</command> moet verkozen worden boven <command>gzip</command> en "
+"<command>bzip2</command>, moet de configuratie-instelling er als volgt "
+"uitzien: <placeholder type=\"synopsis\" id=\"1\"/>. Het is onnodig om "
+"<literal>bz2</literal> expliciet aan de lijst toe te voegen, aangezien het "
+"er automatisch aan toegevoegd zal worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Dir::Bin::bzip2 \"/bin/bzip2\";"
+msgstr "Dir::Bin::bzip2 \"/bin/bzip2\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that the <literal>Dir::Bin::<replaceable>Methodname</replaceable></"
+"literal> will be checked at run time. If this option has been set and "
+"support for this format isn't directly built into apt, the method will only "
+"be used if this file exists; e.g. for the <literal>bzip2</literal> method "
+"(the inbuilt) setting is: <placeholder type=\"literallayout\" id=\"0\"/> "
+"Note also that list entries specified on the command line will be added at "
+"the end of the list specified in the configuration files, but before the "
+"default entries. To prefer a type in this case over the ones specified in "
+"the configuration files you can set the option direct - not in list style. "
+"This will not override the defined list; it will only prefix the list with "
+"this type."
+msgstr ""
+"Merk op dat op het ogenblik van uitvoering gekeken zal worden naar "
+"<literal>Dir::Bin::<replaceable>Naam-van-de-Methode</replaceable></literal>. "
+"Indien deze optie ingesteld werd en ondersteuning voor dit formaat niet "
+"rechtstreeks ingebouwd is in apt, zal de methode enkel gebruikt worden "
+"indien dat bestand bestaat. Voor de methode <literal>bzip2</literal> "
+"bijvoorbeeld, is de (ingebouwde) instelling: <placeholder type="
+"\"literallayout\" id=\"0\"/>. Merk ook op dat de lijstitems die aan de "
+"commandoregel opgegeven worden, toegevoegd zullen worden achteraan de lijst "
+"die in de configuratiebestanden vermeld wordt, maar voorafgaand aan de "
+"standaarditems. Om in dit geval een type boven die uit de "
+"configuratiebestanden te verkiezen, kunt u de optie rechtstreeks instellen - "
+"niet in de lijstopmaak. Dit zal de gedefinieerde lijst niet opheffen. Het "
+"zal de lijst enkel laten beginnen met dat type."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The special type <literal>uncompressed</literal> can be used to give "
+"uncompressed files a preference, but note that most archives don't provide "
+"uncompressed files so this is mostly only useable for local mirrors."
+msgstr ""
+"Het bijzondere type <literal>uncompressed</literal> kan gebruikt worden om "
+"voorrang te geven aan niet-gecomprimeerde bestanden. Maar u dient te weten "
+"dat de meeste archieven geen niet-gecomprimeerde bestanden aanbieden, zodat "
+"dit type grotendeels enkel bruikbaar is voor lokale spiegelservers."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"When downloading <literal>gzip</literal> compressed indexes (Packages, "
+"Sources, or Translations), keep them gzip compressed locally instead of "
+"unpacking them. This saves quite a lot of disk space at the expense of more "
+"CPU requirements when building the local package caches. False by default."
+msgstr ""
+"Indexen (Packages, Sources, of Translations) die met <literal>gzip</literal> "
+"gecomprimeerd werden en die u downloadt, laat u best in gecomprimeerde vorm "
+"op de lokale computer staan in plaats van ze uit te pakken. Dit spaart heel "
+"wat schijfruimte, zij het ten koste van een intensiever CPU-gebruik tijdens "
+"het opbouwen van de lokale pakketcaches. Standaard staat dit uit."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Languages subsection controls which <filename>Translation</filename> "
+"files are downloaded and in which order APT tries to display the description-"
+"translations. APT will try to display the first available description in the "
+"language which is listed first. Languages can be defined with their short or "
+"long language codes. Note that not all archives provide "
+"<filename>Translation</filename> files for every language - the long "
+"language codes are especially rare."
+msgstr ""
+"De subsectie Languages regelt welke <filename>Translation</filename>-"
+"bestanden gedownload worden en in welke volgorde APT probeert de vertaalde "
+"beschrijvingen weer te geven. APT zal proberen de eerste beschikbare "
+"beschrijving weer te geven in de eerst vermelde taal. Talen kunnen "
+"gedefinieerd worden aan de hand van een korte of een lange taalcode. Merk op "
+"dat niet elk archief voor elke taal een <filename>Translation</filename>-"
+"bestand aanbiedt - zeker de lange taalcodes zijn zeldzaam."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };"
+msgstr "Acquire::Languages { \"environment\"; \"nl\"; \"de\"; \"en\"; \"none\"; \"fr\"; };"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The default list includes \"environment\" and \"en\". "
+"\"<literal>environment</literal>\" has a special meaning here: it will be "
+"replaced at runtime with the language codes extracted from the "
+"<literal>LC_MESSAGES</literal> environment variable. It will also ensure "
+"that these codes are not included twice in the list. If "
+"<literal>LC_MESSAGES</literal> is set to \"C\" only the "
+"<filename>Translation-en</filename> file (if available) will be used. To "
+"force APT to use no Translation file use the setting <literal>Acquire::"
+"Languages=none</literal>. \"<literal>none</literal>\" is another special "
+"meaning code which will stop the search for a suitable "
+"<filename>Translation</filename> file. This tells APT to download these "
+"translations too, without actually using them unless the environment "
+"specifies the languages. So the following example configuration will result "
+"in the order \"en, de\" in an English locale or \"de, en\" in a German one. "
+"Note that \"fr\" is downloaded, but not used unless APT is used in a French "
+"locale (where the order would be \"fr, de, en\"). <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+msgstr ""
+"De lijst bevat standaard \"environment\" en \"en\". \"<literal>environment</"
+"literal>\" heeft hier een speciale betekenis: op het moment van uitvoering "
+"zal het vervangen worden door de taalcodes die afgeleid worden uit de "
+"omgevingsvariabele <literal>LC_MESSAGES</literal>. Het zorgt er ook voor dat "
+"deze niet tweemaal voorkomen in de lijst. Als <literal>LC_MESSAGES</literal> "
+"op \"C\" ingesteld staat, wordt enkel het bestand <filename>Translation-en</"
+"filename> (als het beschikbaar is) gebruikt.Om APT te dwingen geen "
+"Translation-bestand te gebruiken, moet u de instelling <literal>Acquire::"
+"Languages=none</literal> gebruiken. Ook de code \"<literal>none</literal>\" "
+"is er een met een speciale betekenis. Ze zorgt ervoor dat niet verder "
+"gezocht wordt naar een passend <filename>Translation</filename>-bestand. Ze "
+"vertelt APT ook om die vertalingen wel te downloaden zonder ze effectief te "
+"gebruiken tenzij er in de omgeving talen gespecificeerd worden. Het volgende "
+"voorbeeld zal dus in de context van een Engelse lokalisatie resulteren in de "
+"volgorde \"en, de\" en in een Duitse lokalisatie in \"de, en\". Merk op dat "
+"\"fr\" wel gedownload wordt, maar niet gebruikt tenzij APT in de context van "
+"een Franse lokalisatie gebruikt wordt (in dat geval zou de volgorde \"fr, "
+"de, en\" zijn). <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Note: To prevent problems resulting from APT being executed in different "
+"environments (e.g. by different users or by other programs) all Translation "
+"files which are found in <filename>/var/lib/apt/lists/</filename> will be "
+"added to the end of the list (after an implicit \"<literal>none</literal>\")."
+msgstr ""
+"Noot: om te voorkomen dat er problemen zouden ontstaan door het feit dat APT "
+"uitgevoerd wordt in verschillende omgevingen (bijvoorbeeld door "
+"verschillende gebruikers of door andere programma's) zullen alle Translation-"
+"bestanden die te vinden zijn in <filename>/var/lib/apt/lists/</filename> "
+"toegevoegd worden aan het eind van de lijst (na een impliciet "
+"\"<literal>none</literal>\")."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "When downloading, force to use only the IPv4 protocol."
+msgstr ""
+"Afdwingen dat enkel het IPv4-protocol gebruikt wordt bij het downloaden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "When downloading, force to use only the IPv6 protocol."
+msgstr ""
+"Afdwingen dat enkel het IPv6-protocol gebruikt wordt bij het downloaden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The maximum file size of Release/Release.gpg/InRelease files. The default "
+"is 10MB."
+msgstr ""
+"De maximale bestandsgrootte van de bestanden Release/Release.gpg/InRelease. "
+"Standaard is dat 10MB."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This option controls if apt will use the DNS SRV server record as specified "
+"in RFC 2782 to select an alternative server to connect to. The default is "
+"\"true\"."
+msgstr ""
+"Deze optie regelt of apt de DNS SRV server record zoals dat in RFC 2782 "
+"gespecificeerd wordt, zal gebruiken om een alternatieve server te selecteren "
+"om mee te verbinden. Standaard is dit \"true\" (aangezet)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow update operations to load data files from repositories without "
+"sufficient security information. The default value is \"<literal>false</"
+"literal>\". Concept, implications as well as alternatives are detailed in "
+"&apt-secure;."
+msgstr ""
+"Aan update-operaties de toestemming geven om data-bestanden op te halen van "
+"pakketbronnen zonder afdoende beveiligingsinformatie. De standaardwaarde is "
+"\"<literal>false</literal>\". Concept, implicaties en alternatieven worden "
+"uiteengezet in &apt-secure;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow update operations to load data files from repositories which provide "
+"security information, but these are deemed no longer cryptographically "
+"strong enough. The default value is \"<literal>false</literal>\". Concept, "
+"implications as well as alternatives are detailed in &apt-secure;."
+msgstr ""
+"Aan update-operaties de toestemming geven om data-bestanden op te halen van "
+"pakketbronnen die beveiligingsinformatie leveren, maar waarvan de "
+"cryptografie niet langer als voldoende krachtig beschouwd wordt. De "
+"standaardwaarde is \"<literal>false</literal>\". Concept, implicaties en "
+"alternatieven worden uiteengezet in &apt-secure;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow that a repository that was previously gpg signed to become unsigned "
+"during an update operation. When there is no valid signature for a "
+"previously trusted repository apt will refuse the update. This option can be "
+"used to override this protection. You almost certainly never want to enable "
+"this. The default is <literal>false</literal>. Concept, implications as "
+"well as alternatives are detailed in &apt-secure;."
+msgstr ""
+"Toelaten dat een pakketbron die voorheen een gpg-ondertekening had, tijdens "
+"een update-bewerking niet langer ondertekend is. Als een pakketbron die "
+"vroeger betrouwbaar was, geen geldige ondertekening meer heeft, zal apt de "
+"update-bewerking weigeren uit te voeren. Deze optie kan gebruikt worden om "
+"die beveiliging op te heffen. Bijna zeker zult u deze optie nooit willen "
+"activeren. Standaard is ze ingesteld op <literal>false</literal>. Concept, "
+"implicaties en alternatieven worden uiteengezet in &apt-secure;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.conf.5.xml
+msgid "scope"
+msgstr "bereik"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Acquiring changelogs can only be done if an URI is known from where to get "
+"them. Preferable the Release file indicates this in a 'Changelogs' field. "
+"If this isn't available the Label/Origin field of the Release file is used "
+"to check if a <literal>Acquire::Changelogs::URI::Label::<replaceable>LABEL</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Origin::"
+"<replaceable>ORIGIN</replaceable></literal> option exists and if so this "
+"value is taken. The value in the Release file can be overridden with "
+"<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
+"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a "
+"normal URI to a text file, except that package specific data is replaced "
+"with the placeholder <literal>@CHANGEPATH@</literal>. The value for it is: "
+"1. if the package is from a component (e.g. <literal>main</literal>) this "
+"is the first part otherwise it is omitted, 2. the first letter of source "
+"package name, except if the source package name starts with '<literal>lib</"
+"literal>' in which case it will be the first four letters. 3. The complete "
+"source package name. 4. the complete name again and 5. the source version. "
+"The first (if present), second, third and fourth part are separated by a "
+"slash ('<literal>/</literal>') and between the fourth and fifth part is an "
+"underscore ('<literal>_</literal>'). The special value '<literal>no</"
+"literal>' is available for this option indicating that this source can't be "
+"used to acquire changelog files from. Another source will be tried if "
+"available in this case."
+msgstr ""
+"Het ophalen van changelogs (bestanden met de registratie van aangebrachte "
+"wijzigingen) kan enkel gebeuren als er een URI gekend is waar ze opgehaald "
+"kunnen worden. Bij voorkeur vermeldt het bestand Release dit in het veld "
+"'Changelogs'. Indien er geen dergelijk veld is, wordt het veld Label/Origin "
+"van het Release-bestand gebruikt om na te gaan of er een optie "
+"<literal>Acquire::Changelogs::URI::Label::<replaceable>LABEL</replaceable></"
+"literal> of <literal>Acquire::Changelogs::URI::Origin::<replaceable>ORIGINE</"
+"replaceable></literal> bestaat en als dat het geval is, wordt die waarde "
+"gebruikt. De waarde in het Release-bestand kan vervangen worden door "
+"<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> of <literal>Acquire::Changelogs::URI::Override::"
+"Origin::<replaceable>ORIGINE</replaceable></literal>. De waarde ervan zou "
+"een normale URI naar een tekstbestand moeten zijn, behalve dat de "
+"pakketspecifieke gegevens vervangen worden door de plaatshouder "
+"<literal>@CHANGEPATH@</literal>. De waarde daarvan is: 1. als het pakket uit "
+"een onderdeel afkomstig is (bijv. <literal>main</literal>), vormt dit het "
+"eerste deel, anders wordt het weggelaten, 2. de eerste letter van de "
+"pakketnaam van het bronpakket, behalve als de naam van het bronpakket begint "
+"met '<literal>lib</literal>'. In dat laatste geval zullen het de eerste vier "
+"letters zijn. 3. De volledige naam van het bronpakket. 4. nogmaals de "
+"volledige naam en 5. de versie van de broncode. Het eerste (in voorkomend "
+"geval), tweede, derde en vierde deel worden gescheiden door een slash "
+"('<literal>/</literal>') en tussen het het vierde en het vijfde deel staat "
+"een laag liggend streepje ('<literal>_</literal>'). De speciale waarde "
+"'<literal>no</literal>' kan gebruikt worden voor deze optie om aan te geven "
+"dat deze bron niet gebruikt kan worden om er changelog-bestanden op te "
+"halen. In dat geval zal een andere bron geprobeerd worden als die er is."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Binary specific configuration"
+msgstr "Programmaspecifieke configuratie"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Especially with the introduction of the <command>apt</command> binary it can "
+"be useful to set certain options only for a specific binary as even options "
+"which look like they would effect only a certain binary like <option>APT::"
+"Get::Show-Versions</option> effect <command>apt-get</command> as well as "
+"<command>apt</command>."
+msgstr ""
+"In het bijzonder omwille van de introductie van het binaire programma "
+"<command>apt</command>, kan het zinvol zijn om bepaalde opties enkel voor "
+"een specifiek programma in te stellen. Want zelfs opties die eruit zien "
+"alsof ze enkel betrekking hebben op een bepaald programma, zoals "
+"<option>APT::Get::Show-Versions</option>, hebben zowel uitwerking op "
+"<command>apt-get</command> als op <command>apt</command>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Setting an option for a specific binary only can be achieved by setting the "
+"option inside the <option>Binary::<replaceable>specific-binary</"
+"replaceable></option> scope. Setting the option <option>APT::Get::Show-"
+"Versions</option> for the <command>apt</command> only can e.g. by done by "
+"setting <option>Binary::apt::APT::Get::Show-Versions</option> instead."
+msgstr ""
+"Een optie enkel instellen voor een specifiek programma kan gerealiseerd "
+"worden door die optie in te stellen binnen het bereik <option>Binary::"
+"<replaceable>specifiek-programma</replaceable></option>. De optie "
+"<option>APT::Get::Show-Versions</option> enkel voor <command>apt</command> "
+"instellen, kan bijvoorbeeld gebeuren door in plaats daarvan <option>Binary::"
+"apt::APT::Get::Show-Versions</option> in te stellen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that as seen in the DESCRIPTION section further above you can't set "
+"binary-specific options on the commandline itself nor in configuration files "
+"loaded via the commandline."
+msgstr ""
+"Merk op dat, zoals we hogerop in het onderdeel BESCHRIJVING zagen, u geen "
+"programmaspecifieke opties kunt instellen aan de commandoregel zelf en ook "
+"niet in configuratiebestanden die via de commandoregel ingelezen worden."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Directories"
+msgstr "Mappen"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Dir::State</literal> section has directories that pertain to "
+"local state information. <literal>lists</literal> is the directory to place "
+"downloaded package lists in and <literal>status</literal> is the name of the "
+"&dpkg; status file. <literal>preferences</literal> is the name of the APT "
+"<filename>preferences</filename> file. <literal>Dir::State</literal> "
+"contains the default directory to prefix on all sub-items if they do not "
+"start with <filename>/</filename> or <filename>./</filename>."
+msgstr ""
+"De sectie <literal>Dir::State</literal> bevat mappen die de lokale "
+"statusinformatie aanbelangen. <literal>lists</literal> is de map waarin de "
+"opgehaalde pakketlijsten geplaatst moeten worden en <literal>status</"
+"literal> is de naam van het statusbestand van &dpkg;. <literal>preferences</"
+"literal> is de naam van het <filename>preferences</filename>-bestand van "
+"APT. <literal>Dir::State</literal> bevat de standaardmap die als prefix "
+"gebruikt moet worden bij alle subitems die niet beginnen met <filename>/</"
+"filename> of <filename>./</filename>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Dir::Cache</literal> contains locations pertaining to local cache "
+"information, such as the two package caches <literal>srcpkgcache</literal> "
+"and <literal>pkgcache</literal> as well as the location to place downloaded "
+"archives, <literal>Dir::Cache::archives</literal>. Generation of caches can "
+"be turned off by setting <literal>pkgcache</literal> or "
+"<literal>srcpkgcache</literal> to <literal>\"\"</literal>. This will slow "
+"down startup but save disk space. It is probably preferable to turn off the "
+"pkgcache rather than the srcpkgcache. Like <literal>Dir::State</literal> "
+"the default directory is contained in <literal>Dir::Cache</literal>"
+msgstr ""
+"<literal>Dir::Cache</literal> bevat locaties die de lokale cache-informatie "
+"aanbelangen, zoals de twee pakketcaches <literal>srcpkgcache</literal> en "
+"<literal>pkgcache</literal>, alsook de plaats waarin opgehaalde archieven "
+"geplaatst worden, <literal>Dir::Cache::archives</literal>. Het aanmaken van "
+"caches kan uitgezet worden door <literal>pkgcache</literal> of "
+"<literal>srcpkgcache</literal> in te stellen op <literal>\"\"</literal>. Dit "
+"zal het opstarten vertragen, maar schijfruimte besparen. Het valt wellicht "
+"te verkiezen de pkgcache uit te zetten eerder dan de srcpkgcache. Net zoals "
+"dit het geval is bij <literal>Dir::State</literal> ligt de standaardmap "
+"vervat in <literal>Dir::Cache</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Dir::Etc</literal> contains the location of configuration files, "
+"<literal>sourcelist</literal> gives the location of the sourcelist and "
+"<literal>main</literal> is the default configuration file (setting has no "
+"effect, unless it is done from the config file specified by "
+"<envar>APT_CONFIG</envar>)."
+msgstr ""
+"<literal>Dir::Etc</literal> bevat de locatie van configuratiebestanden. "
+"<literal>sourcelist</literal> geeft de locatie aan van de lijst met "
+"pakketbronnen en <literal>main</literal> is het standaard "
+"configuratiebestand (een instelling die geen uitwerking heeft, tenzij ze "
+"staat in het configuratiebestand dat door <envar>APT_CONFIG</envar>) "
+"gespecificeerd wordt."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Dir::Parts</literal> setting reads in all the config fragments "
+"in lexical order from the directory specified. After this is done then the "
+"main config file is loaded."
+msgstr ""
+"De instelling <literal>Dir::Parts</literal> leest in lexicale volgorde alle "
+"configuratiefragmenten uit de opgegeven map in. Nadien wordt het "
+"hoofdconfiguratiebestand geladen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
+"Bin::Methods</literal> specifies the location of the method handlers and "
+"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
+"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
+"literal> <literal>dpkg-buildpackage</literal> and <literal>apt-cache</"
+"literal> specify the location of the respective programs."
+msgstr ""
+"Naar binaire programma's wordt verwezen door <literal>Dir::Bin</literal>. "
+"<literal>Dir::Bin::Methods</literal> geeft de locatie op van de "
+"methodeverwerkers en <literal>gzip</literal>, <literal>bzip2</literal>, "
+"<literal>lzma</literal>, <literal>dpkg</literal>, <literal>apt-get</literal> "
+"<literal>dpkg-source</literal> <literal>dpkg-buildpackage</literal> and "
+"<literal>apt-cache</literal> geven de locatie van de respectieve programma's "
+"op."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The configuration item <literal>RootDir</literal> has a special meaning. If "
+"set, all paths will be relative to <literal>RootDir</literal>, "
+"<emphasis>even paths that are specified absolutely</emphasis>. So, for "
+"instance, if <literal>RootDir</literal> is set to <filename>/tmp/staging</"
+"filename> and <literal>Dir::State::status</literal> is set to <filename>/var/"
+"lib/dpkg/status</filename>, then the status file will be looked up in "
+"<filename>/tmp/staging/var/lib/dpkg/status</filename>. If you want to "
+"prefix only relative paths, set <literal>Dir</literal> instead."
+msgstr ""
+"Het configuratie-item <literal>RootDir</literal> heeft een speciale "
+"betekenis. Als het ingesteld werd, zullen alle paden relatief zijn ten "
+"opzichte van <literal>RootDir</literal>, <emphasis>zelfs paden die absoluut "
+"gespecificeerd werden</emphasis>. Dus als bijvoorbeeld <literal>RootDir</"
+"literal> ingesteld staat op <filename>/tmp/staging</filename> en "
+"<literal>Dir::State::status</literal> op <filename>/var/lib/dpkg/status</"
+"filename>, dan zal naar het statusbestand gezocht worden in <filename>/tmp/"
+"staging/var/lib/dpkg/status</filename>. Indien u enkel een voorvoegsel voor "
+"relatieve paden wilt instellen, gebruikt u eerder <literal>Dir</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Ignore-Files-Silently</literal> list can be used to specify "
+"which files APT should silently ignore while parsing the files in the "
+"fragment directories. Per default a file which end with <literal>.disabled</"
+"literal>, <literal>~</literal>, <literal>.bak</literal> or <literal>.dpkg-[a-"
+"z]+</literal> is silently ignored. As seen in the last default value these "
+"patterns can use regular expression syntax."
+msgstr ""
+"De lijst <literal>Ignore-Files-Silently</literal> kan gebruikt worden om op "
+"te geven welke bestanden APT stilzwijgend moet negeren bij het verwerken van "
+"de fragmenten uit de mappen die fragmenten bevatten. Standaard worden "
+"bestanden die eindigen op <literal>.disabled</literal>, <literal>~</"
+"literal>, <literal>.bak</literal> of <literal>.dpkg-[a-z]+</literal> "
+"stilzwijgend genegeerd. Zoals bij de laatste standaardwaarde vastgesteld kan "
+"worden, kunnen deze patronen gebruik maken van de syntaxis voor reguliere "
+"expressies."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "APT in DSelect"
+msgstr "APT in DSelect"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"When APT is used as a &dselect; method several configuration directives "
+"control the default behavior. These are in the <literal>DSelect</literal> "
+"section."
+msgstr ""
+"Als APT gebruikt wordt als een methode van &dselect; sturen verschillende "
+"configuratierichtlijnen het standaardgedrag aan. Deze zijn te vinden in de "
+"sectie <literal>DSelect</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Cache Clean mode; this value may be one of <literal>always</literal>, "
+"<literal>prompt</literal>, <literal>auto</literal>, <literal>pre-auto</"
+"literal> and <literal>never</literal>. <literal>always</literal> and "
+"<literal>prompt</literal> will remove all packages from the cache after "
+"upgrading, <literal>prompt</literal> (the default) does so conditionally. "
+"<literal>auto</literal> removes only those packages which are no longer "
+"downloadable (replaced with a new version for instance). <literal>pre-auto</"
+"literal> performs this action before downloading new packages."
+msgstr ""
+"Modus voor het opschonen van de cache; deze kan een van de volgende waarden "
+"zijn: <literal>always</literal>, <literal>prompt</literal>, <literal>auto</"
+"literal>, <literal>pre-auto</literal> en <literal>never</literal>. "
+"<literal>always</literal> en <literal>prompt</literal> verwijderen na het "
+"opwaarderen alle pakketten uit de cache, <literal>prompt</literal> (de "
+"standaardwaarde) doet dit voorwaardelijk. <literal>auto</literal> "
+"verwijdert enkel die pakketten die niet langer gedownload kunnen worden "
+"(bijvoorbeeld omdat ze door een nieuwe versie vervangen zijn). <literal>pre-"
+"auto</literal> voert deze actie uit vooraleer nieuwe pakketten gedownload "
+"worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the install phase."
+msgstr ""
+"De inhoud van deze variabele wordt in de vorm van commandoregelopties "
+"doorgegeven aan &apt-get; als dit commando in de installatiefase uitgevoerd "
+"wordt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the update phase."
+msgstr ""
+"De inhoud van deze variabele wordt in de vorm van commandoregelopties "
+"doorgegeven aan &apt-get; als dit commando in de fase van bijwerken "
+"uitgevoerd wordt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"If true the [U]pdate operation in &dselect; will always prompt to continue. "
+"The default is to prompt only on error."
+msgstr ""
+"Indien ingesteld op true (waar) zal de operatie [U]pdate in &dselect; altijd "
+"om bevestiging vragen vooraleer voort te gaan. De standaardinstelling is om "
+"enkel in geval van een fout om invoer te vragen."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "How APT calls &dpkg;"
+msgstr "Hoe APT &dpkg; aanroept"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Several configuration directives control how APT invokes &dpkg;. These are "
+"in the <literal>DPkg</literal> section."
+msgstr ""
+"Verschillende configuratierichtlijnen regelen de manier waarop APT &dpkg; "
+"aanroept. Deze zijn te vinden in de sectie <literal>DPkg</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of options to pass to &dpkg;. The options must be specified "
+"using the list notation and each list item is passed as a single argument to "
+"&dpkg;."
+msgstr ""
+"Dit is een lijst van aan &dpkg; door te geven opties. De lijstnotatie moet "
+"gebruikt worden om de opties op te geven en elk lijstitem wordt als een "
+"apart argument aan &dpkg; doorgegeven."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of shell commands to run before/after invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort."
+msgstr ""
+"Dit is een lijst van shell-opdrachten die voor/na het aanroepen van &dpkg; "
+"uitgevoerd moeten worden. Zoals dit het geval is bij <literal>options</"
+"literal> moet de lijstnotatie gebruikt worden. De commando's worden in "
+"volgorde gestart met behulp van <filename>/bin/sh</filename>. Indien er een "
+"mislukt, dan breekt APT af."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of shell commands to run before invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort. APT will pass the filenames of all .deb files it is "
+"going to install to the commands, one per line on the requested file "
+"descriptor, defaulting to standard input."
+msgstr ""
+"Dit is een lijst van shell-opdrachten die voor het aanroepen van &dpkg; "
+"uitgevoerd moeten worden. Zoals dit het geval is bij <literal>options</"
+"literal> moet de lijstnotatie gebruikt worden. De commando's worden in "
+"volgorde gestart met behulp van <filename>/bin/sh</filename>. Indien er een "
+"mislukt, dan breekt APT af. APT zal de bestandsnaam van elk .deb-bestand dat "
+"het gaat installeren doorgeven aan de commando's. Dit gebeurt met een naam "
+"per regel op de gevraagde bestandsindicator, die standaard ingesteld staat "
+"op standaardinvoer."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Version 2 of this protocol sends more information through the requested file "
+"descriptor: a line with the text <literal>VERSION 2</literal>, the APT "
+"configuration space, and a list of package actions with filename and version "
+"information."
+msgstr ""
+"Versie 2 van dit protocol stuurt meer informatie naar de gevraagde "
+"bestandsindicator: een regel met de tekst <literal>VERSION 2</literal>, de "
+"configuratieruimte voor APT en een lijst van pakketacties met informatie "
+"over bestandsnaam en versie."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each configuration directive line has the form <literal>key=value</"
+"literal>. Special characters (equal signs, newlines, nonprintable "
+"characters, quotation marks, and percent signs in <literal>key</literal> and "
+"newlines, nonprintable characters, and percent signs in <literal>value</"
+"literal>) are %-encoded. Lists are represented by multiple <literal>key::"
+"=value</literal> lines with the same key. The configuration section ends "
+"with a blank line."
+msgstr ""
+"Elke regel met een configuratierichtlijn heeft de vorm <literal>key=value</"
+"literal> (sleutel=waarde). Bijzondere tekens (gelijkheidstekens, "
+"regeleinden, niet-afdrukbare tekens, aanhalingstekens en percenttekens in "
+"<literal>key</literal> en regeleinden, niet-afdrukbare tekens en "
+"percenttekens in <literal>value</literal>) worden met % gecodeerd. Lijsten "
+"worden voorgesteld door meerdere <literal>key::=value</literal> (sleutel::"
+"=waarde) regels met eenzelfde sleutel. De configuratiesectie eindigt met een "
+"lege regel."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Package action lines consist of five fields in Version 2: package name "
+"(without architecture qualification even if foreign), old version, direction "
+"of version change (&lt; for upgrades, &gt; for downgrades, = for no change), "
+"new version, action. The version fields are \"-\" for no version at all (for "
+"example when installing a package for the first time; no version is treated "
+"as earlier than any real version, so that is an upgrade, indicated as "
+"<literal>- &lt; 1.23.4</literal>). The action field is \"**CONFIGURE**\" if "
+"the package is being configured, \"**REMOVE**\" if it is being removed, or "
+"the filename of a .deb file if it is being unpacked."
+msgstr ""
+"In Versie 2 bestaan regels in verband met een pakketactie uit vijf velden: "
+"pakketnaam (zonder architectuuropgave, zelfs indien niet-systeemeigen), oude "
+"versie, richting van de versiewijziging (&lt; voor opwaarderingen, &gt; voor "
+"degradaties, = voor geen wijziging), nieuwe versie, actie. De versievelden "
+"zijn \"-\" voor helemaal geen versie (bijvoorbeeld wanneer een pakket voor "
+"het eerst geïnstalleerd wordt; geen versie wordt behandeld als ouder dan "
+"gelijk welke echte versie, waardoor het een opwaardering betreft, aangeduid "
+"als <literal>- &lt; 1.23.4</literal>). Het actieveld is \"**CONFIGURE**\" "
+"als het pakket geconfigureerd gaat worden, \"**REMOVE**\" als het verwijderd "
+"gaat worden of de bestandsnaam van een .deb-bestand als het uitgepakt gaat "
+"worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"In Version 3 after each version field follows the architecture of this "
+"version, which is \"-\" if there is no version, and a field showing the "
+"MultiArch type \"same\", \"foreign\", \"allowed\" or \"none\". Note that "
+"\"none\" is an incorrect typename which is just kept to remain compatible, "
+"it should be read as \"no\" and users are encouraged to support both."
+msgstr ""
+"In Versie 3 volgt na elk versieveld de architectuur van die versie, hetgeen "
+"\"-\" is voor geen versie, en een veld met de aanduiding van het MultiArch-"
+"type (multiarchitectuurtype) \"same\" (zelfde), \"foreign\" (niet-"
+"systeemeigen), \"allowed\" (toegestaan) of \"none\" (geen). Merk op dat "
+"\"none\" een incorrecte typenaam is die om redenen van compatibiliteit "
+"behouden werd. Het moet als \"no\" geïnteerpreteerd worden en gebruikers "
+"worden aangemoedigd om beide te ondersteunen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The version of the protocol to be used for the command "
+"<literal><replaceable>cmd</replaceable></literal> can be chosen by setting "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::Version</"
+"literal> accordingly, the default being version 1. If APT isn't supporting "
+"the requested version it will send the information in the highest version it "
+"has support for instead."
+msgstr ""
+"De protocolversie die voor het commando <literal><replaceable>cmd</"
+"replaceable></literal> gebruikt moet worden, kan gekozen worden door "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::Version</"
+"literal> dienovereenkomstig in te stellen. Standaard is dit versie 1. Indien "
+"APT de gevraagde versie niet ondersteunt, zal het in de plaats daarvan de "
+"informatie weergeven volgens het protocol van de hoogste ondersteunde versie."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The file descriptor to be used to send the information can be requested with "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::InfoFD</"
+"literal> which defaults to <literal>0</literal> for standard input and is "
+"available since version 0.9.11. Support for the option can be detected by "
+"looking for the environment variable <envar>APT_HOOK_INFO_FD</envar> which "
+"contains the number of the used file descriptor as a confirmation."
+msgstr ""
+"De bestandsindicator die gebruikt moet worden om de informatie door te "
+"sturen kan aangevraagd worden met <literal>DPkg::Tools::options::"
+"<replaceable>cmd</replaceable>::InfoFD</literal>. Dit staat standaard op "
+"<literal>0</literal> ingesteld, wat staat voor de standaardinvoer. Deze "
+"functionaliteit is beschikbaar sinds versie 0.9.11. Men kan nagaan of deze "
+"optie ondersteund wordt door te kijken naar de omgevingsvariabele "
+"<envar>APT_HOOK_INFO_FD</envar> die ter confirmatie het cijfer bevat dat "
+"staat voor de gebruikte bestandsindicator."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"APT chdirs to this directory before invoking &dpkg;, the default is "
+"<filename>/</filename>."
+msgstr ""
+"APT gaat naar deze map vooraleer &dpkg; aan te roepen. Standaard is dit "
+"<filename>/</filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"These options are passed to &dpkg-buildpackage; when compiling packages; the "
+"default is to disable signing and produce all binaries."
+msgstr ""
+"Deze opties worden doorgegeven aan &dpkg-buildpackage; bij het compileren "
+"van pakketten. Het standaardgedrag is om ondertekening uit te zetten en alle "
+"binaire bestanden te produceren."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"If this option is set APT will call <command>dpkg --configure --pending</"
+"command> to let &dpkg; handle all required configurations and triggers. This "
+"option is activated by default, but deactivating it could be useful if you "
+"want to run APT multiple times in a row - e.g. in an installer. In this "
+"scenario you could deactivate this option in all but the last run."
+msgstr ""
+"Indien deze optie ingesteld staat zal APT <command>dpkg --configure --"
+"pending</command> aanroepen om &dpkg; alle nodige configuraties en triggers "
+"te laten afhandelen. Standaard staat deze optie automatisch aan. Maar ze "
+"uitzetten kan nuttig zijn indien u APT meerdere keren op rij wenst uit te "
+"voeren - bijvoorbeeld in een installatieprogramma. In een dergelijk scenario "
+"kunt u deze optie uitschakelen voor alle keren dat APT uitgevoerd wordt, "
+"behalve voor de laatste keer."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Periodic and Archives options"
+msgstr "De opties Periodic en Archives"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups "
+"of options configure behavior of apt periodic updates, which is done by the "
+"<literal>/usr/lib/apt/apt.systemd.daily</literal> script. See the top of "
+"this script for the brief documentation of these options."
+msgstr ""
+"De optiegroepen <literal>APT::Periodic</literal> en <literal>APT::Archives</"
+"literal> configureren het gedrag van de periodieke bijwerkingen die door apt "
+"uitgevoerd worden en die door het script <literal>/usr/lib/apt/apt.systemd."
+"daily</literal> uitgelokt worden. Raadpleeg het begin van dit script voor "
+"een beknopte documentatie over deze opties."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Debug options"
+msgstr "Debugopties"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Enabling options in the <literal>Debug::</literal> section will cause "
+"debugging information to be sent to the standard error stream of the program "
+"utilizing the <literal>apt</literal> libraries, or enable special program "
+"modes that are primarily useful for debugging the behavior of <literal>apt</"
+"literal>. Most of these options are not interesting to a normal user, but a "
+"few may be:"
+msgstr ""
+"Als opties in de sectie <literal>Debug::</literal> geactiveerd worden, heeft "
+"dit tot gevolg dat er met behulp van de bibliotheken van <literal>apt</"
+"literal> debug-informatie gestuurd wordt naar de standaardstroom voor "
+"foutmeldingen van het programma in kwestie, of dat bijzondere modi van dat "
+"programma aangezet worden die vooral nuttig zijn om het gedrag van apt te "
+"debuggen. De meeste van deze opties zijn niet interessant voor een gewone "
+"gebruiker. Slechts enkele kunnen dat wel zijn:"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::pkgProblemResolver</literal> enables output about the "
+"decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</"
+"literal>."
+msgstr ""
+"<literal>Debug::pkgProblemResolver</literal> levert uitvoer op over de "
+"beslissingen die genomen werden door <literal>dist-upgrade, upgrade, "
+"install, remove, purge</literal>."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::NoLocking</literal> disables all file locking. This can be "
+"used to run some operations (for instance, <literal>apt-get -s install</"
+"literal>) as a non-root user."
+msgstr ""
+"<literal>Debug::NoLocking</literal> schakelt elke vorm van "
+"bestandsvergrendeling uit. Dit kan bruikbaar zijn voor het uitvoeren van "
+"sommige operaties (bijvoorbeeld <literal>apt-get -s install</literal>) als "
+"niet-systeembeheerder."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each "
+"time that <literal>apt</literal> invokes &dpkg;."
+msgstr ""
+"<literal>Debug::pkgDPkgPM</literal> geeft de werkelijke commandoregel weer "
+"telkens <literal>apt</literal> &dpkg; aanroept."
+
+#. TODO: provide a
+#. motivating example, except I haven't a clue why you'd want
+#. to do this.
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
+"in CD-ROM IDs."
+msgstr ""
+"<literal>Debug::IdentCdrom</literal> schakelt het opnemen van statfs-"
+"gegevens in de ID's van CD's uit."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid "A full list of debugging options to apt follows."
+msgstr "Hieronder volgt een volledige lijst van de debug-opties van apt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information related to accessing <literal>cdrom://</literal> sources."
+msgstr ""
+"Weergeven van informatie in verband met het benaderen van pakketbronnen van "
+"het type <literal>cdrom://</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using FTP."
+msgstr ""
+"Weergeven van informatie in verband met het downloaden van pakketten met "
+"behulp van FTP."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using HTTP."
+msgstr ""
+"Weergeven van informatie in verband met het downloaden van pakketten met "
+"behulp van HTTP."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using HTTPS."
+msgstr ""
+"Weergeven van informatie in verband met het downloaden van pakketten met "
+"behulp van HTTPS."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information related to verifying cryptographic signatures using "
+"<literal>gpg</literal>."
+msgstr ""
+"Weergeven van informatie in verband met het verifiëren van cryptografische "
+"handtekeningen met behulp van <literal>gpg</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information about the process of accessing collections of packages "
+"stored on CD-ROMs."
+msgstr ""
+"Informatie tonen over het proces van benaderen van verzamelingen pakketten "
+"op CD's."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Describes the process of resolving build-dependencies in &apt-get;."
+msgstr ""
+"Beschrijft het proces van het oplossen van bouwvereisten door &apt-get;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output each cryptographic hash that is generated by the <literal>apt</"
+"literal> libraries."
+msgstr ""
+"Iedere cryptografische frommel weergeven die door de bibliotheken van "
+"<literal>apt</literal> aangemaakt wordt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Do not include information from <literal>statfs</literal>, namely the number "
+"of used and free blocks on the CD-ROM filesystem, when generating an ID for "
+"a CD-ROM."
+msgstr ""
+"Bij het aanmaken van een ID voor een CD geen informatie toevoegen die "
+"afkomstig is van <literal>statfs</literal>, namelijk het aantal gebruikte en "
+"vrije blokken op het bestandssysteem van de CD."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Disable all file locking. For instance, this will allow two instances of "
+"<quote><literal>apt-get update</literal></quote> to run at the same time."
+msgstr ""
+"Elke vorm van bestandsvergrendeling uitzetten. Dit maakt het bijvoorbeeld "
+"mogelijk om gelijktijdig twee processen van het type <quote><literal>apt-get "
+"update</literal></quote> uit te voeren."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Log when items are added to or removed from the global download queue."
+msgstr ""
+"In een logbestand opschrijven wanneer items toegevoegd worden aan of "
+"verwijderd uit de algemene download-wachtrij."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output status messages and errors related to verifying checksums and "
+"cryptographic signatures of downloaded files."
+msgstr ""
+"Statusberichten en fouten weergeven die verband houden met het controleren "
+"van de controlesom en de cryptografische handtekening van gedownloade "
+"bestanden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information about downloading and applying package index list diffs, "
+"and errors relating to package index list diffs."
+msgstr ""
+"Informatie weergeven over het downloaden en verwerken van de diff's "
+"(bestanden die de aangebrachte wijzigingen bijhouden) voor de "
+"pakketindexbestanden en over fouten die daarmee verband houden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information related to patching apt package lists when downloading "
+"index diffs instead of full indices."
+msgstr ""
+"Informatie weergeven in verband met het patchen van de pakketlijsten van apt "
+"wanneer niet de volledige indexbestanden maar enkel de diff's (aangebrachte "
+"wijzigingen) gedownload worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Log all interactions with the sub-processes that actually perform downloads."
+msgstr ""
+"Alle interacties met de sub-processen die het downloaden werkelijk "
+"uitvoeren, neerschrijven in een logbestand."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Log events related to the automatically-installed status of packages and to "
+"the removal of unused packages."
+msgstr ""
+"Gebeurtenissen in een logbestand opschrijven die verband houden met de "
+"status van pakketten die automatisch geïnstalleerd werden en met het "
+"verwijderen van niet-gebruikte pakketten."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate debug messages describing which packages are being automatically "
+"installed to resolve dependencies. This corresponds to the initial auto-"
+"install pass performed in, e.g., <literal>apt-get install</literal>, and not "
+"to the full <literal>apt</literal> dependency resolver; see <literal>Debug::"
+"pkgProblemResolver</literal> for that."
+msgstr ""
+"Debug-berichten genereren waarin beschreven wordt welke pakketten "
+"automatisch geïnstalleerd worden om aan vereisten te voldoen. Dit komt "
+"overeen met de initiële doorloop van het type auto-install die bijvoorbeeld "
+"door <literal>apt-get install</literal> uitgevoerd wordt. Het komt niet "
+"overeen met het volledige systeem van apt voor het oplossen van "
+"vereistenproblemen. Raadpleeg in dat verband <literal>Debug::"
+"pkgProblemResolver</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate debug messages describing which packages are marked as keep/install/"
+"remove while the ProblemResolver does his work. Each addition or deletion "
+"may trigger additional actions; they are shown indented two additional "
+"spaces under the original entry. The format for each line is "
+"<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c -"
+"&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> is "
+"the current version of the package, <literal>d.e.f</literal> is the version "
+"considered for installation and <literal>x.y.z</literal> is a newer version, "
+"but not considered for installation (because of a low pin score). The later "
+"two can be omitted if there is none or if it is the same as the installed "
+"version. <literal>section</literal> is the name of the section the package "
+"appears in."
+msgstr ""
+"Debug-berichten genereren waarin beschreven wordt welke pakketten een "
+"markering krijgen van het type keep/install/remove (vasthouden/installeren/"
+"verwijderen) terwijl de ProblemResolver (probleemoplosser) zijn werk "
+"verricht. Elke toevoeging of verwijdering kan bijkomende acties uitlokken en "
+"die worden onder het originele item weergegeven met een insprong van twee "
+"extra spaties. Het formaat van elke regel is <literal>MarkKeep</literal>, "
+"<literal>MarkDelete</literal> of <literal>MarkInstall</literal> gevolgd door "
+"<literal>pakketnaam &lt;a.b.c -&gt; d.e.f | x.y.z&gt; (sectie)</literal>, "
+"waarbij <literal>a.b.c</literal> de huidige versie van het pakket is, "
+"<literal>d.e.f</literal> de versie is waarvan de installatie overwogen wordt "
+"en <literal>x.y.z</literal> een recentere versie wiens installatie (omwille "
+"van een lagere pin-score) echter niet overwogen wordt. Die beide laatste "
+"kunnen weggelaten worden als ze niet bestaan of als ze dezelfde versie "
+"hebben als de geïnstalleerde versie. <literal>section</literal> is de naam "
+"van de sectie waarin het pakket zich bevindt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"When invoking &dpkg;, output the precise command line with which it is being "
+"invoked, with arguments separated by a single space character."
+msgstr ""
+"Als &dpkg; aangeroepen wordt, weergeven wat de exacte commandoregel is "
+"waarmee het aangeroepen wordt, waarbij de argumenten door een enkele spatie "
+"van elkaar gescheiden worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output all the data received from &dpkg; on the status file descriptor and "
+"any errors encountered while parsing it."
+msgstr ""
+"Alle gegevens die van &dpkg; verkregen worden over de "
+"statusbestandsindicator en alle fouten die zich voordoen bij het ontleden "
+"ervan weergeven."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate a trace of the algorithm that decides the order in which "
+"<literal>apt</literal> should pass packages to &dpkg;."
+msgstr ""
+"Een opvolging doen van het algoritme dat beslist over de volgorde waarin "
+"<literal>apt</literal> pakketten zou moeten doorgeven aan &dpkg;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output status messages tracing the steps performed when invoking &dpkg;."
+msgstr ""
+"Statusberichten tonen bij het volgen van de stappen die bij het aanroepen "
+"van &dpkg; gezet worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Output the priority of each package list on startup."
+msgstr "De prioriteit weergeven van elke pakketlijst bij het opstarten."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Trace the execution of the dependency resolver (this applies only to what "
+"happens when a complex dependency problem is encountered)."
+msgstr ""
+"Het uitvoeren van het oplossen van vereistenproblemen volgen (dit is enkel "
+"van toepassing op wat gebeurt als zich een complex vereistenprobleem "
+"voordoet)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Display a list of all installed packages with their calculated score used by "
+"the pkgProblemResolver. The description of the package is the same as "
+"described in <literal>Debug::pkgDepCache::Marker</literal>"
+msgstr ""
+"Een lijst weergeven van alle geïnstalleerde pakketten met hun berekende "
+"scores zoals die door de pkgProblemResolver gebruikt worden. De "
+"pakketbeschrijving is identiek aan wat in <literal>Debug::pkgDepCache::"
+"Marker</literal> beschreven werd."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information about the vendors read from <filename>/etc/apt/vendors."
+"list</filename>."
+msgstr ""
+"Informatie weergeven over de leveranciers die in <filename>/etc/apt/vendors."
+"list</filename> vermeld worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Display the external commands that are called by apt hooks. This includes e."
+"g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"<literal>APT::Update::{Pre,Post}-Invoke</literal>."
+msgstr ""
+"De externe commando's tonen die aangeroepen worden door apt-uitbreidingen. "
+"Dit houdt bijvoorbeeld de configuratieopties <literal>DPkg::{Pre,Post}-"
+"Invoke</literal> of <literal>APT::Update::{Pre,Post}-Invoke</literal> in."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml apt-ftparchive.1.xml
+msgid "Examples"
+msgstr "Voorbeelden"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"&configureindex; is a configuration file showing example values for all "
+"possible options."
+msgstr ""
+"&configureindex; is een configuratiebestand dat voorbeeldwaarden toont voor "
+"alle mogelijke opties."
+
+#. ? reading apt.conf
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid "&apt-cache;, &apt-config;, &apt-preferences;."
+msgstr "&apt-cache;, &apt-config;, &apt-preferences;."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt_preferences.5.xml
+msgid "Preference control file for APT"
+msgstr "Bestand om de voorkeursinstellingen voor APT te beheren"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"The APT preferences file <filename>/etc/apt/preferences</filename> and the "
+"fragment files in the <filename>/etc/apt/preferences.d/</filename> folder "
+"can be used to control which versions of packages will be selected for "
+"installation."
+msgstr ""
+"Het bestand met de voorkeursinstellingen voor APT, <filename>/etc/apt/"
+"preferences</filename>, en de bestandsfragmenten uit de map <filename>/etc/"
+"apt/preferences.d/</filename> kunnen gebruikt worden om in te stellen welke "
+"versie van een pakket voor installatie geselecteerd zal worden."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Several versions of a package may be available for installation when the "
+"&sources-list; file contains references to more than one distribution (for "
+"example, <literal>stable</literal> and <literal>testing</literal>). APT "
+"assigns a priority to each version that is available. Subject to dependency "
+"constraints, <command>apt-get</command> selects the version with the highest "
+"priority for installation. The APT preferences override the priorities that "
+"APT assigns to package versions by default, thus giving the user control "
+"over which one is selected for installation."
+msgstr ""
+"Indien het bestand &sources-list; verwijzingen bevat naar meer dan een "
+"uitgave (bijvoorbeeld <literal>stable</literal> en <literal>testing</"
+"literal>), dan kunnen meerdere versies van eenzelfde pakket beschikbaar zijn "
+"voor installatie. APT kent aan elke beschikbare versie een prioriteit toe. "
+"Rekening houdend met eventuele beperkingen ten gevolge van vereisten, zal "
+"<command>apt-get</command> de versie met de grootste prioriteit uitkiezen "
+"voor installatie. De voorkeursinstellingen voor APT overschrijven de "
+"prioriteiten die APT standaard aan pakketversies toekent, waardoor de "
+"gebruiker controle verwerft over welk pakket voor installatie uitgekozen "
+"wordt."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Several instances of the same version of a package may be available when the "
+"&sources-list; file contains references to more than one source. In this "
+"case <command>apt-get</command> downloads the instance listed earliest in "
+"the &sources-list; file. The APT preferences do not affect the choice of "
+"instance, only the choice of version."
+msgstr ""
+"Meerdere exemplaren van eenzelfde versie kunnen beschikbaar zijn indien het "
+"bestand &sources-list; verwijzingen bevat naar meer dan een pakketbron. In "
+"dat geval zal <command>apt-get</command> het exemplaar downloaden dat eerst "
+"vermeld wordt in het bestand &sources-list; De APT-voorkeuren hebben geen "
+"invloed op de keuze van het exemplaar, enkel op de versiekeuze."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Preferences are a strong power in the hands of a system administrator but "
+"they can become also their biggest nightmare if used without care! APT will "
+"not question the preferences, so wrong settings can lead to uninstallable "
+"packages or wrong decisions while upgrading packages. Even more problems "
+"will arise if multiple distribution releases are mixed without a good "
+"understanding of the following paragraphs. Packages included in a specific "
+"release aren't tested in (and therefore don't always work as expected in) "
+"older or newer releases, or together with other packages from different "
+"releases. You have been warned."
+msgstr ""
+"Voorkeuren leggen veel macht in de handen van een systeembeheerder, maar ze "
+"kunnen ook tot zijn grootste nachtmerrie uitgroeien als er niet zorgvuldig "
+"mee omgesprongen wordt! APT zal de voorkeuren niet in vraag stellen. "
+"Daardoor kunnen foute instellingen leiden tot niet-installeerbare pakketten "
+"of tot het nemen van foute beslissingen bij het opwaarderen van pakketten. "
+"Nog meer problemen kunnen ontstaan als verschillende uitgaven door elkaar "
+"gebruikt worden zonder een goed begrip van de volgende paragrafen. Pakketten "
+"uit een specifieke uitgave worden niet uitgetest voor (en werken daarom niet "
+"altijd als verwacht in) eerdere of latere uitgaves of samen met andere "
+"pakketten uit verschillende uitgaves. U bent gewaarschuwd."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Note that the files in the <filename>/etc/apt/preferences.d</filename> "
+"directory are parsed in alphanumeric ascending order and need to obey the "
+"following naming convention: The files have either no or \"<literal>pref</"
+"literal>\" as filename extension and only contain alphanumeric, hyphen (-), "
+"underscore (_) and period (.) characters. Otherwise APT will print a notice "
+"that it has ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
+msgstr ""
+"Noteer dat de bestanden uit de map <filename>/etc/apt/preferences.d</"
+"filename> in oplopende alfanumerieke volgorde ontleed worden en dat hun naam "
+"aan de volgende conventie moet beantwoorden: de bestanden hebben ofwel geen "
+"bestandsnaamextensie ofwel is dat \"<literal>pref</literal>\" en ze bevatten "
+"enkel alfanumerieke tekens, koppeltekens (-), lage streepjes (_) en punten "
+"(.). In het andere geval zal APT melding maken van het feit dat het een "
+"bestand overgeslagen heeft, tenzij dat bestand overeenkomt met een patroon "
+"uit de configuratielijst <literal>Dir::Ignore-Files-Silently</literal>. In "
+"dat laatste geval zal het stilzwijgend overgeslagen worden."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "APT's Default Priority Assignments"
+msgstr "Door APT standaard toegekende prioriteiten"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "<command>apt-get install -t testing <replaceable>some-package</replaceable></command>\n"
+msgstr "<command>apt-get install -t testing <replaceable>een-bepaald-pakket</replaceable></command>\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "APT::Default-Release \"stable\";\n"
+msgstr "APT::Default-Release \"stable\";\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If there is no preferences file or if there is no entry in the file that "
+"applies to a particular version then the priority assigned to that version "
+"is the priority of the distribution to which that version belongs. It is "
+"possible to single out a distribution, \"the target release\", which "
+"receives a higher priority than other distributions do by default. The "
+"target release can be set on the <command>apt-get</command> command line or "
+"in the APT configuration file <filename>/etc/apt/apt.conf</filename>. Note "
+"that this has precedence over any general priority you set in the <filename>/"
+"etc/apt/preferences</filename> file described later, but not over "
+"specifically pinned packages. For example, <placeholder type="
+"\"programlisting\" id=\"0\"/> <placeholder type=\"programlisting\" id=\"1\"/>"
+msgstr ""
+"Indien het bestand preferences niet bestaat of indien het geen item bevat "
+"dat op een specifieke versie betrekking heeft, dan wordt aan die versie de "
+"prioriteit toegekend van de uitgave waartoe die versie behoort. Men kan een "
+"bepaalde uitgave uitkiezen als \"the target release\" (de doelrelease), die "
+"dan een hogere prioriteit krijgt dan standaard aan andere uitgaven gegeven "
+"wordt. De doelrelease kan aan de commandoregel van <command>apt-get</"
+"command> ingesteld worden of in <filename>/etc/apt/apt.conf</filename>, het "
+"configuratiebestand van APT. Merk op dat deze instelling voorrang heeft op "
+"gelijk welke algemene prioriteitsinstelling die u vastlegt in het bestand "
+"<filename>/etc/apt/preferences</filename> waarover we het later hebben, maar "
+"geen voorrang op specifieke gepinde pakketten. Bijvoorbeeld <placeholder "
+"type=\"programlisting\" id=\"0\"/> <placeholder type=\"programlisting\" id="
+"\"1\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If the target release has been specified then APT uses the following "
+"algorithm to set the priorities of the versions of a package. Assign:"
+msgstr ""
+"Indien de doelrelease opgegeven werd, dan gebruikt APT het volgende "
+"algoritme om de prioriteiten van de versies van een pakket te bepalen. Het "
+"toekennen van:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 1"
+msgstr "prioriteit 1"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"to the versions coming from archives which in their <filename>Release</"
+"filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</"
+"emphasis> as \"ButAutomaticUpgrades: yes\" like the Debian "
+"<literal>experimental</literal> archive."
+msgstr ""
+"aan de versies die afkomstig zijn uit archieven die volgens hun "
+"<filename>Release</filename>-bestanden gemarkeerd staan als \"NotAutomatic: "
+"yes\" maar <emphasis>niet</emphasis> als \"ButAutomaticUpgrades: yes\", "
+"zoals bijvoorbeeld het Debian-archief <literal>experimental</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 100"
+msgstr "prioriteit 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"to the version that is already installed (if any) and to the versions coming "
+"from archives which in their <filename>Release</filename> files are marked "
+"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the Debian "
+"backports archive since <literal>squeeze-backports</literal>."
+msgstr ""
+"aan de reeds geïnstalleerde versie (als er een is) en aan de versies die "
+"afkomstig zijn van archieven die volgens hun <filename>Release</filename>-"
+"bestanden gemarkeerd staan als \"NotAutomatic: yes\" en "
+"\"ButAutomaticUpgrades: yes\", zoals bijvoorbeeld het Debian-archief "
+"backports sinds <literal>squeeze-backports</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 500"
+msgstr "prioriteit 500"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "to the versions that do not belong to the target release."
+msgstr "aan de versies die niet behoren tot de doelrelease."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 990"
+msgstr "prioriteit 990"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "to the versions that belong to the target release."
+msgstr "aan de versies die behoren tot de doelrelease."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The highest of those priorities whose description matches the version is "
+"assigned to the version."
+msgstr ""
+"De hoogste van deze prioriteiten waarvan de beschrijving overeenkomt met de "
+"versie wordt aan die versie toegekend."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If the target release has not been specified then APT simply assigns "
+"priority 100 to all installed package versions and priority 500 to all "
+"uninstalled package versions, except versions coming from archives which in "
+"their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" "
+"- these versions get the priority 1 or priority 100 if it is additionally "
+"marked as \"ButAutomaticUpgrades: yes\"."
+msgstr ""
+"Indien er geen doelrelease opgegeven werd, dan kent APT gewoonweg prioriteit "
+"100 toe aan alle geïnstalleerde pakketversies en prioriteit 500 aan alle "
+"niet-geïnstalleerde pakketversies, behalve aan versies die afkomstig zijn "
+"uit archieven die volgens hun <filename>Release</filename>-bestanden "
+"gemarkeerd staan als \"NotAutomatic: yes\" - deze versies krijgen de "
+"prioriteit 1 of de prioriteit 100 als ze bovendien ook gemarkeerd staan als "
+"\"ButAutomaticUpgrades: yes\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"APT then applies the following rules, listed in order of precedence, to "
+"determine which version of a package to install."
+msgstr ""
+"Om uit te maken welke versie van een pakket geïnstalleerd moet worden, past "
+"APT dan de volgende regels toe, vermeld in volgorde van prioriteit."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"Never downgrade unless the priority of an available version exceeds 1000. "
+"(\"Downgrading\" is installing a less recent version of a package in place "
+"of a more recent version. Note that none of APT's default priorities "
+"exceeds 1000; such high priorities can only be set in the preferences file. "
+"Note also that downgrading a package can be risky.)"
+msgstr ""
+"Nooit een degradatie uitvoeren tenzij de prioriteit van een beschikbaar "
+"pakket groter is dan 1000. (\"Degraderen\" (downgrading) betekent het "
+"installeren van een minder recente versie van een pakket ter vervanging van "
+"een recentere versie. Noteer dat geen enkele van de standaardprioriteiten "
+"die APT gebruikt, groter dan 1000 is. Dergelijke hoge prioriteiten kunnen "
+"enkel in het bestand preferences ingesteld worden. Merk ook op dat het "
+"degraderen van een pakket riskant kan zijn.)"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "Install the highest priority version."
+msgstr "De versie met de hoogste prioriteit installeren."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"If two or more versions have the same priority, install the most recent one "
+"(that is, the one with the higher version number)."
+msgstr ""
+"Indien twee of meer versies eenzelfde prioriteit hebben, het meest recente "
+"installeren (dat is die met het hoogste versienummer)."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"If two or more versions have the same priority and version number but either "
+"the packages differ in some of their metadata or the <literal>--reinstall</"
+"literal> option is given, install the uninstalled one."
+msgstr ""
+"De niet-geïnstalleerde versie installeren indien twee of meer versies "
+"eenzelfde prioriteit en hetzelfde versienummer hebben maar er op het gebied "
+"van de metadata toch een onderling verschil is, of indien de optie "
+"<literal>--reinstall</literal> gebruikt werd."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"In a typical situation, the installed version of a package (priority 100) "
+"is not as recent as one of the versions available from the sources listed in "
+"the &sources-list; file (priority 500 or 990). Then the package will be "
+"upgraded when <command>apt-get install <replaceable>some-package</"
+"replaceable></command> or <command>apt-get upgrade</command> is executed."
+msgstr ""
+"In een gewone situatie is de geïnstalleerde versie van een pakket "
+"(prioriteit 100) minder recent dan een van de versies die beschikbaar is in "
+"een pakketbron die in het bestand &sources-list; vermeld wordt (prioriteit "
+"500 of 990). In dat geval zal het pakket opgewaardeerd worden als de "
+"opdracht <command>apt-get install <replaceable>een-bepaald-pakket</"
+"replaceable></command> of <command>apt-get upgrade</command> uitgevoerd "
+"wordt."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"More rarely, the installed version of a package is <emphasis>more</emphasis> "
+"recent than any of the other available versions. The package will not be "
+"downgraded when <command>apt-get install <replaceable>some-package</"
+"replaceable></command> or <command>apt-get upgrade</command> is executed."
+msgstr ""
+"Een minder vaak voorkomende situatie is die waarbij de geïnstalleerde versie "
+"van een pakket <emphasis>recenter</emphasis> is dan welke andere beschikbare "
+"versie ook. Bij het uitvoeren van de opdracht apt-get install "
+"<command><replaceable>een-bepaald-pakket</replaceable></command> of "
+"<command>apt-get upgrade</command> zal het pakket dan niet gedegradeerd "
+"worden."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Sometimes the installed version of a package is more recent than the version "
+"belonging to the target release, but not as recent as a version belonging to "
+"some other distribution. Such a package will indeed be upgraded when "
+"<command>apt-get install <replaceable>some-package</replaceable></command> "
+"or <command>apt-get upgrade</command> is executed, because at least "
+"<emphasis>one</emphasis> of the available versions has a higher priority "
+"than the installed version."
+msgstr ""
+"Soms is de geïnstalleerde versie van een pakket recenter dan de versie van "
+"de doelrelease, maar niet zo recent als een versie van een andere "
+"distributie. Zo een pakket zal wel degelijk opgewaardeerd worden als "
+"<command>apt-get install <replaceable>een-bepaald-pakket</replaceable></"
+"command> of <command>apt-get upgrade</command> uitgevoerd wordt, omdat "
+"minstens <emphasis>een</emphasis> van de beschikbare versies een hogere "
+"prioriteit heeft dan de geïnstalleerde versie."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "The Effect of APT Preferences"
+msgstr "Het effect van de voorkeursinstellingen voor APT"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The APT preferences file allows the system administrator to control the "
+"assignment of priorities. The file consists of one or more multi-line "
+"records separated by blank lines. Records can have one of two forms, a "
+"specific form and a general form."
+msgstr ""
+"Het APT-bestand preferences laat de systeembeheerder toe het toekennen van "
+"prioriteiten te regelen. Het bestand bestaat uit een of meer structuren die "
+"uit meerdere regels bestaan en van elkaar gescheiden worden door lege "
+"regels. De structuren kunnen een van de twee volgende vormen aannemen: een "
+"specifieke vorm of een algemene vorm."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The specific form assigns a priority (a \"Pin-Priority\") to one or more "
+"specified packages with a specified version or version range. For example, "
+"the following record assigns a high priority to all versions of the "
+"<filename>perl</filename> package whose version number begins with "
+"\"<literal>&good-perl;</literal>\". Multiple packages can be separated by "
+"spaces."
+msgstr ""
+"De specifieke vorm kent een prioriteit (een \"Pin-Priority\") toe aan een of "
+"meer opgegeven pakketten met een specifieke versie of binnen een "
+"versiebereik. De volgende structuur geeft bijvoorbeeld een hoge prioriteit "
+"aan alle versies van het pakket <filename>perl</filename> waarvan het "
+"versienummer begint met \"<literal>&good-perl;</literal>\". Meerdere "
+"pakketten kunnen van elkaar gescheiden worden met spaties."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The general form assigns a priority to all of the package versions in a "
+"given distribution (that is, to all the versions of packages that are listed "
+"in a certain <filename>Release</filename> file) or to all of the package "
+"versions coming from a particular Internet site, as identified by the site's "
+"fully qualified domain name."
+msgstr ""
+"De algemene vorm kent een prioriteit toe aan alle pakketversies in een "
+"bepaalde distributie (dit betekent alle versies van pakketten die vermeld "
+"worden in een bepaald <filename>Release</filename>-bestand) of aan alle "
+"pakketversies die afkomstig zijn van een bepaalde internetsite, zoals "
+"aangegeven door de unieke volledige domeinnaam (fully qualified domain name) "
+"van de site."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"This general-form entry in the APT preferences file applies only to groups "
+"of packages. For example, the following record assigns a high priority to "
+"all package versions available from the local site."
+msgstr ""
+"Zo een item in het preferences-bestand van APT dat aan de algemene vorm "
+"beantwoordt, is enkel op groepen pakketten van toepassing. De volgende "
+"structuur kent bijvoorbeeld een hoge prioriteit toe aan alle pakketversies "
+"die op de lokale site beschikbaar zijn."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A note of caution: the keyword used here is \"<literal>origin</literal>\" "
+"which can be used to match a hostname. The following record will assign a "
+"high priority to all versions available from the server identified by the "
+"hostname \"ftp.de.debian.org\""
+msgstr ""
+"Een aanmaning tot voorzichtigheid: het gebruikte trefwoord hier is "
+"\"<literal>origin</literal>\" dat gebruikt kan worden om een computernaam te "
+"vergelijken. De volgende structuur kent een hoge prioriteit toe aan alle "
+"versies die te verkrijgen zijn op de server die met de computernaam \"ftp.de."
+"debian.org\" geïdentificeerd wordt."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"This should <emphasis>not</emphasis> be confused with the Origin of a "
+"distribution as specified in a <filename>Release</filename> file. What "
+"follows the \"Origin:\" tag in a <filename>Release</filename> file is not an "
+"Internet address but an author or vendor name, such as \"Debian\" or \"Ximian"
+"\"."
+msgstr ""
+"Men mag dit <emphasis>niet</emphasis> verwarren met de oorsprong (Origin) "
+"van een distributie zoals die in een <filename>Release</filename>-bestand "
+"vermeld wordt. Wat in een <filename>Release</filename>-bestand op het label "
+"\"Origin:\" volgt is geen internetadres, maar een auteur of de naam van een "
+"leverancier, zoals \"Debian\" of \"Ximian\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a low priority to all package versions "
+"belonging to any distribution whose Archive name is \"<literal>unstable</"
+"literal>\"."
+msgstr ""
+"De volgende structuur kent een lage prioriteit toe aan alle pakketversies "
+"die behoren tot gelijk welke distributie die \"<literal>unstable</literal>\" "
+"als archiefnaam heeft."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any distribution whose Codename is \"<literal>&debian-testing-"
+"codename;</literal>\"."
+msgstr ""
+"De volgende structuur kent een hoge prioriteit toe aan alle pakketversies "
+"die behoren tot om het even welke distributie met de codenaam "
+"\"<literal>&debian-testing-codename;</literal>\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+msgstr ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any release whose Archive name is \"<literal>stable</literal>\" "
+"and whose release Version number is \"<literal>&debian-stable-version;</"
+"literal>\"."
+msgstr ""
+"De volgende structuur kent een hoge prioriteit toe aan alle pakketversies "
+"die behoren tot om het even welke uitgave die \"<literal>stable</literal>\" "
+"als archiefnaam heeft en die \"<literal>&debian-stable-version;</literal>\" "
+"als releaseversienummer heeft."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The effect of the comma operator is similar to an \"and\" in logic: All "
+"conditions must be satisfied for the pin to match. There is one exception: "
+"For any type of condition (such as two \"a\" conditions), only the last such "
+"condition is checked."
+msgstr ""
+"Het effect van de kommaoperator is vergelijkbaar met een \"en\" in de "
+"logica: aan alle voorwaarden moet voldaan zijn opdat er een overeenkomst zou "
+"zijn met de pin. Er is één uitzondering: voor om het even welk type "
+"voorwaarde (zoals twee \"a\"-voorwaarden) geldt dat enkel de laatste "
+"dergelijke voorwaarde getoetst wordt."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Regular expressions and &glob; syntax"
+msgstr "Reguliere expressies en &glob; syntaxis"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"APT also supports pinning by &glob; expressions, and regular expressions "
+"surrounded by slashes. For example, the following example assigns the "
+"priority 500 to all packages from experimental where the name starts with "
+"gnome (as a &glob;-like expression) or contains the word kde (as a POSIX "
+"extended regular expression surrounded by slashes)."
+msgstr ""
+"APT ondersteunt bij het pinnen ook het gebruik van &glob;-expressies, en "
+"reguliere expressies die door slashes ingesloten worden. Het volgende "
+"voorbeeld geeft prioriteit 500 aan alle pakketten uit experimental waarvan "
+"de naam begint met gnome (als een &glob;-achtige expressie) of het woord kde "
+"(als een in slashes ingesloten POSIX uitgebreide reguliere expressie) bevat."
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+msgstr ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The rule for those expressions is that they can occur anywhere where a "
+"string can occur. Thus, the following pin assigns the priority 990 to all "
+"packages from a release starting with &ubuntu-codename;."
+msgstr ""
+"De regel voor deze expressies is dat ze overal kunnen voorkomen waar een "
+"tekenreeks kan voorkomen. De volgende pin kent dus een prioriteit 990 toe "
+"aan alle pakketten van een uitgave die begint met &ubuntu-codename;."
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+msgstr ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If a regular expression occurs in a <literal>Package</literal> field, the "
+"behavior is the same as if this regular expression were replaced with a list "
+"of all package names it matches. It is undecided whether this will change in "
+"the future; thus you should always list wild-card pins first, so later "
+"specific pins override it. The pattern \"<literal>*</literal>\" in a "
+"Package field is not considered a &glob; expression in itself."
+msgstr ""
+"Indien een reguliere expressie voorkomt in een <literal>Package</literal>-"
+"veld, dan lokt dit hetzelfde gedrag uit als wanneer deze reguliere expressie "
+"vervangen zou worden door een lijst met alle pakketnamen die ermee "
+"overeenkomen. Het is nog niet beslist of dit in de toekomst anders zal "
+"worden. U moet dus altijd jokertekenpins eerst plaatsen, zodat latere "
+"specifieke pins die kunnen overschrijven. Het patroon \"<literal>*</literal>"
+"\" in een Package-veld wordt op zichzelf niet als een &glob;-expressie "
+"beschouwd."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "How APT Interprets Priorities"
+msgstr "Hoe APT prioriteiten interpreteert"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Priorities (P) assigned in the APT preferences file must be positive or "
+"negative integers. They are interpreted as follows (roughly speaking):"
+msgstr ""
+"Prioriteiten (P) die in het preferences-bestand van APT toegekend worden, "
+"moeten positieve of negatieve gehele getallen zijn. Zij worden (grof "
+"geschetst) als volgt geïnterpreteerd:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P &gt;= 1000"
+msgstr "P &gt;= 1000"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed even if this constitutes a downgrade of the "
+"package"
+msgstr ""
+"heeft de installatie van een versie tot gevolg ook al houdt dit een "
+"degradatie van het pakket in"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "990 &lt;= P &lt; 1000"
+msgstr "990 &lt;= P &lt; 1000"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed even if it does not come from the target "
+"release, unless the installed version is more recent"
+msgstr ""
+"heeft de installatie van een versie tot gevolg ook al is ze niet van de "
+"doelrelease afkomstig, tenzij de geïnstalleerde versie recenter is"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "500 &lt;= P &lt; 990"
+msgstr "500 &lt;= P &lt; 990"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to the target release or the installed version is more recent"
+msgstr ""
+"heeft de installatie van een versie tot gevolg tenzij er een versie uit de "
+"doelrelease beschikbaar is of de geïnstalleerde versie recenter is"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "100 &lt;= P &lt; 500"
+msgstr "100 &lt;= P &lt; 500"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to some other distribution or the installed version is more recent"
+msgstr ""
+"heeft de installatie van een versie tot gevolg tenzij er een versie uit een "
+"andere distributie beschikbaar is of de geïnstalleerde versie recenter is"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "0 &lt; P &lt; 100"
+msgstr "0 &lt; P &lt; 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed only if there is no installed version of "
+"the package"
+msgstr ""
+"heeft de installatie van een versie tot gevolg enkel en alleen als er geen "
+"versie van het pakket geïnstalleerd is"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P &lt; 0"
+msgstr "P &lt; 0 "
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "prevents the version from being installed"
+msgstr "voorkomt dat de versie geïnstalleerd wordt"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P = 0"
+msgstr "P = 0"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "has undefined behaviour, do not use it."
+msgstr "heeft ongedefinieerd gedrag; niet te gebruiken."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The first specific-form record matching an available package version "
+"determines the priority of the package version. Failing that, the priority "
+"of the package is defined as the maximum of all priorities defined by "
+"generic-form records matching the version. Records defined using patterns "
+"in the Pin field other than \"*\" are treated like specific-form records."
+msgstr ""
+"Het eerste record van specifieke aard dat een overeenkomst oplevert met een "
+"beschikbare pakketversie, bepaalt de prioriteit van die pakketversie. Bij "
+"gebrek daaraan wordt de prioriteit van het pakket vastgelegd op het maximum "
+"van al de prioriteiten die gedefinieerd worden door records van algemene "
+"aard waarmee die versie een overeenkomst oplevert. Records die bij middel "
+"van andere patronen dan \"*\" in het Pin-veld gedefinieerd worden, worden "
+"behandeld als records van specifieke aard."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"For example, suppose the APT preferences file contains the three records "
+"presented earlier:"
+msgstr ""
+"Veronderstel bijvoorbeeld dat het APT-bestand preferences de drie structuren "
+"bevat die we eerder bespraken:"
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid "Then:"
+msgstr "Dan is dit het gevolg:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The most recent available version of the <literal>perl</literal> package "
+"will be installed, so long as that version's version number begins with "
+"\"<literal>&good-perl;</literal>\". If <emphasis>any</emphasis> &good-perl;"
+"* version of <literal>perl</literal> is available and the installed version "
+"is &bad-perl;*, then <literal>perl</literal> will be downgraded."
+msgstr ""
+"De meest recente beschikbare versie van het pakket <literal>perl</literal> "
+"zal geïnstalleerd worden, zolang het versienummer van die versie begint met "
+"\"<literal>&good-perl;</literal>\". Indien er <emphasis>een of andere</"
+"emphasis> &good-perl;* versie van <literal>perl</literal> beschikbaar is en "
+"de geïnstalleerde versie is &bad-perl;*, dan zal <literal>perl</literal> "
+"gedegradeerd worden."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A version of any package other than <literal>perl</literal> that is "
+"available from the local system has priority over other versions, even "
+"versions belonging to the target release."
+msgstr ""
+"Een versie van om het even welk ander pakket dan <literal>perl</literal> dat "
+"vanaf het lokale systeem beschikbaar is, heeft prioriteit over andere "
+"versies, zelfs versies uit de doelrelease."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A version of a package whose origin is not the local system but some other "
+"site listed in &sources-list; and which belongs to an <literal>unstable</"
+"literal> distribution is only installed if it is selected for installation "
+"and no version of the package is already installed."
+msgstr ""
+"Een versie van een pakket waarvan de origine niet het lokale systeem is, "
+"maar een andere site die in &sources-list; vermeld wordt, en die tot een "
+"<literal>unstable</literal> distributie behoort, wordt enkel geïnstalleerd "
+"als het geselecteerd werd om geïnstalleerd te worden en er niet reeds een "
+"versie van het pakket geïnstalleerd is."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Determination of Package Version and Distribution Properties"
+msgstr "Het vaststellen van pakketversie en distributie-eigenschappen"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The locations listed in the &sources-list; file should provide "
+"<filename>Packages</filename> and <filename>Release</filename> files to "
+"describe the packages available at that location."
+msgstr ""
+"De locaties die in het bestand &sources-list; vermeld worden, moeten de "
+"bestanden <filename>Packages</filename> en <filename>Release</filename> "
+"aanbieden om de pakketten te beschrijven die op die locatie ter beschikking "
+"staan."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The <filename>Packages</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable>/"
+"<replaceable>component</replaceable>/<replaceable>arch</replaceable></"
+"filename>: for example, <filename>.../dists/stable/main/binary-i386/"
+"Packages</filename>. It consists of a series of multi-line records, one for "
+"each package available in that directory. Only two lines in each record are "
+"relevant for setting APT priorities:"
+msgstr ""
+"Het bestand <filename>Packages</filename> bevindt zich normaal in de map "
+"<filename>.../dists/<replaceable>distributienaam</replaceable>/"
+"<replaceable>component</replaceable>/<replaceable>architectuur</"
+"replaceable></filename>, bijvoorbeeld <filename>.../dists/stable/main/binary-"
+"i386/Packages</filename>. Het bevat een reeks structuren, die uit meerdere "
+"regels bestaan, een per pakket dat in die map beschikbaar is. In elke "
+"structuur zijn slechts twee regels relevant voor het instellen van APT-"
+"prioriteiten:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Package:</literal> line"
+msgstr "de regel <literal>Package:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "gives the package name"
+msgstr "vermeldt de pakketnaam"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Version:</literal> line"
+msgstr "de regel <literal>Version:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "gives the version number for the named package"
+msgstr "vermeldt het versienummer van het genoemde pakket"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The <filename>Release</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable></filename>: for "
+"example, <filename>.../dists/stable/Release</filename>, or <filename>.../"
+"dists/&debian-stable-codename;/Release</filename>. It consists of a single "
+"multi-line record which applies to <emphasis>all</emphasis> of the packages "
+"in the directory tree below its parent. Unlike the <filename>Packages</"
+"filename> file, nearly all of the lines in a <filename>Release</filename> "
+"file are relevant for setting APT priorities:"
+msgstr ""
+"Het bestand <filename>Release</filename> bevindt zich normaal in de map "
+"<filename>.../dists/<replaceable>distributienaam</replaceable></filename>, "
+"bijvoorbeeld <filename>.../dists/stable/Release</filename>, of "
+"<filename>.../dists/&debian-stable-codename;/Release</filename>. Het bevat "
+"een enkele structuur bestaande uit meerdere regels, die van toepassing is op "
+"<emphasis>alle</emphasis> pakketten uit de volledige mappenboom die zich "
+"onder diens bovenliggende map bevindt. In tegenstelling tot wat het geval is "
+"voor het bestand <filename>Packages</filename>, zijn praktisch alle regels "
+"uit een <filename>Release</filename>-bestand relevant voor het instellen van "
+"de APT-prioriteiten:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line"
+msgstr ""
+"de regel <literal>Archive:</literal> of de regel <literal>Suite:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the archive to which all the packages in the directory tree belong. "
+"For example, the line \"Archive: stable\" or \"Suite: stable\" specifies "
+"that all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file are in a <literal>stable</literal> "
+"archive. Specifying this value in the APT preferences file would require "
+"the line:"
+msgstr ""
+"benoemt het archief waartoe alle pakketten uit de mappenboom behoren. "
+"Bijvoorbeeld de regel \"Archive: stable\" of \"Suite: stable\" geeft aan dat "
+"alle pakketten uit de mappenboom die zich onder de bovenliggende map van het "
+"bestand <filename>Release</filename> bevindt, deel uitmaken van een "
+"<literal>stable</literal> archief. Om deze waarde op te geven in het APT-"
+"bestand preferences is de volgende regel nodig:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release a=stable\n"
+msgstr "Pin: release a=stable\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Codename:</literal> line"
+msgstr "de regel <literal>Codename:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the codename to which all the packages in the directory tree belong. "
+"For example, the line \"Codename: &debian-testing-codename;\" specifies that "
+"all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file belong to a version named <literal>&debian-"
+"testing-codename;</literal>. Specifying this value in the APT preferences "
+"file would require the line:"
+msgstr ""
+"benoemt de codenaam waartoe alle pakketten in de mappenboom behoren. De "
+"regel \"Codename: &debian-testing-codename;\" geeft bijvoorbeeld aan dat "
+"alle pakketten uit de mappenboom die zich onder de bovenliggende map van het "
+"<filename>Release</filename>-bestand bevindt, tot een versie behoren die de "
+"naam <literal>&debian-testing-codename;</literal> draagt. Om deze waarde op "
+"te geven in het APT-bestand preferences is de volgende regel nodig:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release n=&debian-testing-codename;\n"
+msgstr "Pin: release n=&debian-testing-codename;\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the release version. For example, the packages in the tree might "
+"belong to Debian release version &debian-stable-version;. Note that there "
+"is normally no version number for the <literal>testing</literal> and "
+"<literal>unstable</literal> distributions because they have not been "
+"released yet. Specifying this in the APT preferences file would require one "
+"of the following lines."
+msgstr ""
+"benoemt de releaseversie. De pakketten uit de boomstructuur zouden "
+"bijvoorbeeld kunnen komen uit de Debian releaseversie &debian-stable-"
+"version;. Merk op dat er normaal geen versienummer bestaat voor de "
+"distributies <literal>testing</literal> en <literal>unstable</literal> omdat "
+"ze nog niet uitgegeven werden. Om dit op te geven in het APT-bestand "
+"preferences is een van de volgende regels nodig."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+msgstr ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Component:</literal> line"
+msgstr "de regel <literal>Component:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the licensing component associated with the packages in the directory "
+"tree of the <filename>Release</filename> file. For example, the line "
+"\"Component: main\" specifies that all the packages in the directory tree "
+"are from the <literal>main</literal> component, which entails that they are "
+"licensed under terms listed in the Debian Free Software Guidelines. "
+"Specifying this component in the APT preferences file would require the line:"
+msgstr ""
+"benoemt de licentiecomponent van de pakketten uit de mappenboom van het "
+"<filename>Release</filename>-bestand. De lijn \"Component: main\" "
+"bijvoorbeeld geeft aan dat alle pakketten uit de mappenboom behoren tot de "
+"component <literal>main</literal>, hetgeen inhoudt dat hun licentie in "
+"overeenstemming is met de Vrije Softwarerichtlijnen van Debian. Om deze "
+"component op te geven in het APT-bestand preferences is de volgende regel "
+"nodig:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release c=main\n"
+msgstr "Pin: release c=main\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Origin:</literal> line"
+msgstr "de regel <literal>Origin:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the originator of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is <literal>Debian</"
+"literal>. Specifying this origin in the APT preferences file would require "
+"the line:"
+msgstr ""
+"benoemt de maker van de pakketten uit de mappenboom van het "
+"<filename>Release</filename>-bestand. Meest gebruikelijk is dat "
+"<literal>Debian</literal>. Om deze oorsprong op te geven in het APT-bestand "
+"preferences is de volgende regel nodig:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release o=Debian\n"
+msgstr "Pin: release o=Debian\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Label:</literal> line"
+msgstr "de regel <literal>Label:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the label of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is <literal>Debian</"
+"literal>. Specifying this label in the APT preferences file would require "
+"the line:"
+msgstr ""
+"benoemt het etiket van de pakketten uit de mappenboom van het "
+"<filename>Release</filename>-bestand. Meest gebruikelijk is dat "
+"<literal>Debian</literal>. Om dit etiket op te geven in het APT-bestand "
+"preferences is de volgende regel nodig:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release l=Debian\n"
+msgstr "Pin: release l=Debian\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"All of the <filename>Packages</filename> and <filename>Release</filename> "
+"files retrieved from locations listed in the &sources-list; file are stored "
+"in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
+"named by the variable <literal>Dir::State::Lists</literal> in the "
+"<filename>apt.conf</filename> file. For example, the file <filename>debian."
+"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
+"contains the <filename>Release</filename> file retrieved from the site "
+"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
+"architecture files from the <literal>contrib</literal> component of the "
+"<literal>unstable</literal> distribution."
+msgstr ""
+"Alle <filename>Packages</filename>- en <filename>Release</filename>-"
+"bestanden die opgehaald worden van locaties die in het bestand &sources-"
+"list; vermeld staan, worden opgeslagen in de map <filename>/var/lib/apt/"
+"lists</filename> of in het bestand dat in het bestand <filename>apt.conf</"
+"filename> door de variabele <literal>Dir::State::Lists</literal> genoemd "
+"wordt. Het bestand <filename>debian.lcs.mit."
+"edu_debian_dists_unstable_contrib_binary-i386_Release</filename> bevat "
+"bijvoorbeeld het <filename>Release</filename>-bestand dat opgehaald werd van "
+"de site <literal>debian.lcs.mit.edu</literal> en dat betrekking heeft op "
+"bestanden voor de architectuur <literal>binary-i386</literal> uit de "
+"component <literal>contrib</literal> van de distributie <literal>unstable</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Optional Lines in an APT Preferences Record"
+msgstr ""
+"Facultatieve regels van een structuur in het bestand preferences van APT"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Each record in the APT preferences file can optionally begin with one or "
+"more lines beginning with the word <literal>Explanation:</literal>. This "
+"provides a place for comments."
+msgstr ""
+"In het APT-bestand preferences kan elke structuur facultatief beginnen met "
+"een of meer regels waarvan het eerste woord <literal>Explanation:</literal> "
+"is. Zo wordt ruimte gemaakt voor commentaar."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking Stable"
+msgstr "De distributie Stable volgen"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated\n"
+"Explanation: package versions other than those in the stable distro\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Explanation: Installeer geen van Debian afkomstige pakketten met andere\n"
+"Explanation: versies dan die uit de distributie stable of verwijder ze anders\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"<literal>stable</literal> distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> "
+"distributions. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Het volgende preferences-bestand van APT doet APT een hogere prioriteit dan "
+"standaard (500) toekennen aan alle pakketversies die tot een "
+"<literal>stable</literal>-distributie behoren en een buitensporig lage "
+"prioriteit aan pakketversies die tot andere <literal>Debian</literal>-"
+"distributies behoren. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"apt-get install <replaceable>package-name</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+msgstr ""
+"apt-get install <replaceable>pakketnaam</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>stable</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+"Met een passend bestand &sources-list; en het bovenstaande preferences-"
+"bestand, zal elk van de volgende commando's APT ertoe aanzetten om op te "
+"waarderen naar de nieuwste versie(s) uit <literal>stable</literal>. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/testing\n"
+msgstr "apt-get install <replaceable>pakket</replaceable>/testing\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>testing</literal> distribution; the package "
+"will not be upgraded again unless this command is given again. <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Het volgende commando zal APT ertoe aanzetten om het opgegeven pakket op te "
+"waarderen naar de allernieuwste versie uit de distributie <literal>testing</"
+"literal>. Het pakket zal niet opnieuw opgewaardeerd worden tenzij die "
+"opdracht terug gegeven wordt. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking Testing or Unstable"
+msgstr "Testing of Unstable volgen"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a high priority "
+"to package versions from the <literal>testing</literal> distribution, a "
+"lower priority to package versions from the <literal>unstable</literal> "
+"distribution, and a prohibitively low priority to package versions from "
+"other <literal>Debian</literal> distributions. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Het volgende preferences-bestand van APT doet APT een hoge prioriteit "
+"toekennen aan pakketversies uit de distributie <literal>testing</literal>, "
+"een lagere prioriteit aan pakketversies uit de distributie "
+"<literal>unstable</literal> en een buitensporig lage prioriteit aan "
+"pakketversies die tot andere <literal>Debian</literal>-distributies behoren. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>testing</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+"Met een passend bestand &sources-list; en het bovenstaande preferences-"
+"bestand, zal elk van de volgende commando's APT ertoe aanzetten om op te "
+"waarderen naar de nieuwste versie(s) uit <literal>testing</literal>. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/unstable\n"
+msgstr "apt-get install <replaceable>pakket</replaceable>/unstable\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>unstable</literal> distribution. "
+"Thereafter, <command>apt-get upgrade</command> will upgrade the package to "
+"the most recent <literal>testing</literal> version if that is more recent "
+"than the installed version, otherwise, to the most recent <literal>unstable</"
+"literal> version if that is more recent than the installed version. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Het volgende commando zal APT ertoe aanzetten om het opgegeven pakket op te "
+"waarderen naar de allernieuwste versie uit de distributie <literal>unstable</"
+"literal>. Nadien zal <command>apt-get upgrade</command> het pakket "
+"opwaarderen naar de nieuwste versie uit <literal>testing</literal> als die "
+"recenter is dan de geïnstalleerde versie en anders naar de nieuwste versie "
+"uit <literal>unstable</literal> als die recenter is dan de geïnstalleerde "
+"versie. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking the evolution of a codename release"
+msgstr "De evolutie van een uitgave volgen aan de hand van zijn codenaam"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated package versions\n"
+"Explanation: other than those in the distribution codenamed with &debian-testing-codename; or sid\n"
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+"\n"
+"Explanation: Debian unstable is always codenamed with sid\n"
+"Package: *\n"
+"Pin: release n=sid\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Explanation: Installeer geen van Debian afkomstige pakketversies behalve \n"
+"Explanation: die uit de distributie met codenaam &debian-testing-codename; of sid\n"
+"Explanation: of verwijder ze in het andere geval\n"
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+"\n"
+"Explanation: Debian unstable heeft steeds de codenaam sid\n"
+"Package: *\n"
+"Pin: release n=sid\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"specified codename of a distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> distributions, "
+"codenames and archives. Note that with this APT preference APT will follow "
+"the migration of a release from the archive <literal>testing</literal> to "
+"<literal>stable</literal> and later <literal>oldstable</literal>. If you "
+"want to follow for example the progress in <literal>testing</literal> "
+"notwithstanding the codename changes you should use the example "
+"configurations above. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Het volgende preferences-bestand van APT doet APT een hogere prioriteit dan "
+"standaard (500) toekennen aan alle pakketversies die tot een distributie met "
+"de opgegeven codenaam behoren en een buitensporig lage prioriteit aan "
+"pakketversies die tot andere <literal>Debian</literal>-distributies, -"
+"codenamen en -archieven behoren. Merk op dat met deze APT-voorkeur APT de "
+"overgang van een release zal volgen vanuit het archief <literal>testing</"
+"literal> naar <literal>stable</literal> en later <literal>oldstable</"
+"literal>. Indien u bijvoorbeeld de voortgang in <literal>testing</literal> "
+"wilt volgen ongeacht de veranderende codenaam, dan moet u de hierboven "
+"gegeven configuratievoorbeelden gebruiken. <placeholder type=\"programlisting"
+"\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest version(s) in "
+"the release codenamed with <literal>&debian-testing-codename;</literal>. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Met een passend bestand &sources-list; en het bovenstaande preferences-"
+"bestand, zal elk van de volgende commando's APT ertoe aanzetten om op te "
+"waarderen naar de nieuwste versie(s) uit de release met de codenaam "
+"<literal>&debian-testing-codename;</literal>. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/sid\n"
+msgstr "apt-get install <replaceable>pakket</replaceable>/sid\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>sid</literal> distribution. Thereafter, "
+"<command>apt-get upgrade</command> will upgrade the package to the most "
+"recent <literal>&debian-testing-codename;</literal> version if that is more "
+"recent than the installed version, otherwise, to the most recent "
+"<literal>sid</literal> version if that is more recent than the installed "
+"version. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Het volgende commando zal APT ertoe bewegen om het opgegeven pakket op te "
+"waarderen naar de nieuwste versie uit de distributie <literal>sid</literal>. "
+"Nadien zal de opdracht <command>apt-get upgrade</command> het pakket "
+"opwaarderen naar de meest recente versie uit <literal>&debian-testing-"
+"codename;</literal> indien dat een meer recente versie is dan die welke "
+"geïnstalleerd is of anders naar de meest recente versie uit <literal>sid</"
+"literal> indien dat een meer recente versie is dan die welke geïnstalleerd "
+"is. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: sources.list.5.xml
+msgid "List of configured APT data sources"
+msgstr "Lijst met geconfigureerde gegevensbronnen van APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The source list <filename>/etc/apt/sources.list</filename> and the files "
+"contained in <filename>/etc/apt/sources.list.d/</filename> are designed to "
+"support any number of active sources and a variety of source media. The "
+"files list one source per line (one-line style) or contain multiline stanzas "
+"defining one or more sources per stanza (deb822 style), with the most "
+"preferred source listed first (in case a single version is available from "
+"more than one source). The information available from the configured sources "
+"is acquired by <command>apt-get update</command> (or by an equivalent "
+"command from another APT front-end)."
+msgstr ""
+"De pakketbronnenlijst <filename>/etc/apt/sources.list</filename> en de "
+"bestanden die in <filename>/etc/apt/sources.list.d/</filename> te vinden "
+"zijn, werden ontwikkeld om gelijk welk aantal actieve bronnen en een "
+"variatie aan bronmedia te ondersteunen. In de bestanden wordt elke "
+"pakketbron op een aparte regel vermeld (de één-regelstijl) of ze bevatten "
+"uit meerdere regels bestaande elementen die per element een of meer "
+"pakketbronnen definiëren (de deb822 stijl), waarbij de meest wenselijke "
+"pakketbron eerst komt (voor het geval een bepaalde versie in meer dan één "
+"pakketbron te vinden is). De op deze geconfigureerde pakketbronnen "
+"beschikbare informatie wordt opgevraagd met <command>apt-get update</"
+"command> (of met een equivalent commando van een ander front-end voor APT)."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "sources.list.d"
+msgstr "sources.list.d"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The <filename>/etc/apt/sources.list.d</filename> directory provides a way to "
+"add sources.list entries in separate files. Two different file formats are "
+"allowed as described in the next two sections. Filenames need to have "
+"either the extension <filename>.list</filename> or <filename>.sources</"
+"filename> depending on the contained format. The filenames may only contain "
+"letters (a-z and A-Z), digits (0-9), underscore (_), hyphen (-) and period "
+"(.) characters. Otherwise APT will print a notice that it has ignored a "
+"file, unless that file matches a pattern in the <literal>Dir::Ignore-Files-"
+"Silently</literal> configuration list - in which case it will be silently "
+"ignored."
+msgstr ""
+"De map <filename>/etc/apt/sources.list.d</filename> biedt de mogelijkheid om "
+"items voor sources.list in afzonderlijke bestanden toe te voegen. Zoals "
+"beschreven wordt in de volgende twee secties, zijn twee verschillende "
+"bestandsindelingen toegelaten. Bestandsnamen moeten eindigen op <filename>."
+"list</filename> of <filename>.sources</filename>, afhankelijk van welke "
+"indeling ze bevatten. De bestandsnamen mogen enkel letters (a-z en A-Z), "
+"cijfers (0-9), lage streepjes (_), koppeltekens (-) en punten (.) bevatten. "
+"Is dit niet het geval, dan zal APT melden dat het een bestand overgeslagen "
+"heeft, tenzij dat bestand beantwoordt aan een patroon uit de "
+"configuratielijst <literal>Dir::Ignore-Files-Silently</literal> - in dat "
+"geval zal het stilzwijgend overgeslagen worden."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "One-Line-Style Format"
+msgstr "Indeling in één-regelstijl"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Files in this format have the extension <filename>.list</filename>. Each "
+"line specifying a source starts with a type (e.g. <literal>deb-src</"
+"literal>) followed by options and arguments for this type. Individual "
+"entries cannot be continued onto a following line. Empty lines are ignored, "
+"and a <literal>#</literal> character anywhere on a line marks the remainder "
+"of that line as a comment. Consequently an entry can be disabled by "
+"commenting out the entire line. If options should be provided they are "
+"separated by spaces and all of them together are enclosed by square brackets "
+"(<literal>[]</literal>) included in the line after the type separated from "
+"it with a space. If an option allows multiple values these are separated "
+"from each other with a comma (<literal>,</literal>). An option name is "
+"separated from its value(s) by an equals sign (<literal>=</literal>). "
+"Multivalue options also have <literal>-=</literal> and <literal>+=</literal> "
+"as separators, which instead of replacing the default with the given "
+"value(s) modify the default value(s) to remove or include the given values."
+msgstr ""
+"Bestanden met deze indeling hebben de extensie <filename>.list</filename>. "
+"Iedere regel die een pakketbron specificeert, begint met het type (bijv. "
+"<literal>deb-src</literal>), gevolgd door opties en argumenten voor dat "
+"type. Een individueel item mag niet tot op een volgende regel doorlopen. "
+"Lege regels worden overgeslagen en het teken <literal>#</literal> ergens op "
+"een regel geeft aan dat de rest van die regel commentaar bevat. Als gevolg "
+"daarvan kan een item gedeactiveerd worden door de hele regel uit te "
+"commentariëren. Indien er opties opgegeven moeten worden, worden ze van "
+"elkaar gescheiden door komma's en allemaal samen worden ze tussen rechte "
+"haakjes (<literal>[]</literal>) op de regel geplaatst na het type en daarvan "
+"gescheiden door een komma. Indien een optie meerdere waarden mag hebben, dan "
+"worden ze met een komma (<literal>,</literal>) van elkaar gescheiden. De "
+"naam van een optie wordt van zijn waarde(n) gescheiden met een "
+"gelijkheidsteken (<literal>=</literal>). Multi-waarde opties hebben ook "
+"<literal>-=</literal> en <literal>+=</literal> als scheidingstekens. In "
+"plaats van de standaardwaarde(n) te vervangen door de opgegeven waarde(n), "
+"wijzigen zij de standaardwaarde(n) door er de opgegeven waarden uit te "
+"verwijderen of eraan toe te voegen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This is the traditional format and supported by all apt versions. Note that "
+"not all options as described below are supported by all apt versions. Note "
+"also that some older applications parsing this format on their own might not "
+"expect to encounter options as they were uncommon before the introduction of "
+"multi-architecture support."
+msgstr ""
+"Dit is de traditionele indeling die door alle versies van apt ondersteund "
+"wordt. Merk op dat niet alle opties die hieronder beschreven worden door "
+"alle versies van apt ondersteund worden. Merk ook op dat sommige oudere "
+"toepassingen die zelfstandig deze indeling ontleden wellicht geen opties "
+"zullen verwachten, aangezien die ongebruikelijk waren voor de invoering van "
+"multi-architectuurondersteuning."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "deb822-Style Format"
+msgstr "Indeling in deb822-stijl"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Files in this format have the extension <filename>.sources</filename>. The "
+"format is similar in syntax to other files used by Debian and its "
+"derivatives, such as the metadata files that apt will download from the "
+"configured sources or the <filename>debian/control</filename> file in a "
+"Debian source package. Individual entries are separated by an empty line; "
+"additional empty lines are ignored, and a <literal>#</literal> character at "
+"the start of the line marks the entire line as a comment. An entry can hence "
+"be disabled by commenting out each line belonging to the stanza, but it is "
+"usually easier to add the field \"Enabled: no\" to the stanza to disable the "
+"entry. Removing the field or setting it to yes reenables it. Options have "
+"the same syntax as every other field: A fieldname separated by a colon "
+"(<literal>:</literal>) and optionally spaces from its value(s). Note "
+"especially that multiple values are separated by spaces, not by commas as in "
+"the one-line format. Multivalue fields like <literal>Architectures</literal> "
+"also have <literal>Architectures-Add</literal> and <literal>Architectures-"
+"Remove</literal> to modify the default value rather than replacing it."
+msgstr ""
+"Bestanden met deze indeling hebben de extensie <filename>.sources</"
+"filename>. Op het gebied van de syntaxis is de indeling gelijkaardig aan "
+"andere bestanden die door Debian en zijn derivaten gebruikt worden, zoals de "
+"metadatabestanden die apt ophaalt bij de geconfigureerde pakketbronnen of "
+"het bestand <filename>debian/control</filename> in een Debian "
+"broncodebestand. Individuele items worden van elkaar gescheiden door een "
+"witregel. Bijkomende witregels worden genegeerd en het teken <literal>#</"
+"literal> aan het begin van een regel markeert de volledige regel als "
+"commentaar. Een item kan dus gedeactiveerd worden door elke regel die "
+"onderdeel is van dat item, uit te commentariëren. Maar meestal is het "
+"eenvoudiger om het item te deactiveren door er het veld \"Enabled: no\" aan "
+"toe te voegen. Dat veld verwijderen of het instellen op yes, activeert het "
+"item opnieuw. Opties gebruiken dezelfde syntaxis als elk ander veld: een "
+"veldnaam gescheiden van zijn waarde(n) door een dubbele punt (<literal>:</"
+"literal>) en optionele spaties. Bijzonder opmerkenswaardig is dat meerdere "
+"waarden onderling gescheiden worden door spaties en niet door komma's, zoals "
+"het geval is bij de één-regelindeling. Multi-waarde velden, zoals "
+"<literal>Architectures</literal>, kennen ook <literal>Architectures-Add</"
+"literal> en <literal>Architectures-Remove</literal> om de standaardwaarde te "
+"wijzigen eerder dan ze te vervangen."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This is a new format supported by apt itself since version 1.1. Previous "
+"versions ignore such files with a notice message as described earlier. It "
+"is intended to make this format gradually the default format, deprecating "
+"the previously described one-line-style format, as it is easier to create, "
+"extend and modify for humans and machines alike especially if a lot of "
+"sources and/or options are involved. Developers who are working with and/or "
+"parsing apt sources are highly encouraged to add support for this format and "
+"to contact the APT team to coordinate and share this work. Users can freely "
+"adopt this format already, but may encounter problems with software not "
+"supporting the format yet."
+msgstr ""
+"Dit is een nieuwe indeling die door apt zelf ondersteund wordt sinds versie "
+"1.1. Eerdere versies negeren dergelijke bestanden met een "
+"kennisgevingsbericht zoals eerder beschreven. Het is de bedoeling dat deze "
+"indeling gaandeweg de standaardindeling wordt en dat de eerder beschreven "
+"één-regelstijl uitgefaseerd wordt, vermits het zowel voor mensen als voor "
+"machines makkelijker is om in deze nieuwe indeling items aan te maken, uit "
+"te breiden en te wijzigen, in het bijzonder als er een heleboel "
+"pakketbronnen en/of opties in het spel zijn. Ontwikkelaars die met "
+"pakketbronnen van apt werken en/of ze ontleden worden sterk aangemoedigd om "
+"ondersteuning voor deze indeling toe te voegen en om met het APT-team "
+"contact te nemen om dit werk te coördineren en met elkaar te delen. "
+"Gebruikers kunnen nu reeds ongehinderd op deze indeling overschakelen, maar "
+"kunnen eventueel problemen ondervinden met software die deze nieuwe indeling "
+"nog niet ondersteunt."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "The deb and deb-src Types: General Format"
+msgstr "De types deb en deb-src: algemene indeling"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The <literal>deb</literal> type references a typical two-level Debian "
+"archive, <filename>distribution/component</filename>. The "
+"<literal>distribution</literal> is generally a suite name like "
+"<literal>stable</literal> or <literal>testing</literal> or a codename like "
+"<literal>&debian-stable-codename;</literal> or <literal>&debian-testing-"
+"codename;</literal> while component is one of <literal>main</literal>, "
+"<literal>contrib</literal> or <literal>non-free</literal>. The <literal>deb-"
+"src</literal> type references a Debian distribution's source code in the "
+"same form as the <literal>deb</literal> type. A <literal>deb-src</literal> "
+"line is required to fetch source indexes."
+msgstr ""
+"Het type <literal>deb</literal> verwijst naar een typisch Debian-archief met "
+"twee niveaus, <filename>distributie/component</filename>. De "
+"<literal>distributie</literal> is over het algemeen de naam van een suite "
+"zoals <literal>stable</literal> of <literal>testing</literal> of een "
+"codenaam zoals <literal>&debian-stable-codename;</literal> of "
+"<literal>&debian-testing-codename;</literal>, terwijl component een van de "
+"volgende kan zijn: <literal>main</literal>, <literal>contrib</literal> of "
+"<literal>non-free</literal>. Het type <literal>deb-src</literal> verwijst in "
+"dezelfde vorm als het type <literal>deb</literal> naar de broncode van een "
+"Debian distributie. Om bronnenindexen te kunnen ophalen is een <literal>deb-"
+"src</literal>-regel noodzakelijk."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The format for two one-line-style entries using the <literal>deb</literal> "
+"and <literal>deb-src</literal> types is:"
+msgstr ""
+"De indeling van twee items in de één-regelstijl met de types <literal>deb</"
+"literal> en <literal>deb-src</literal>, ziet er zo uit:"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]\n"
+"deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]"
+msgstr ""
+"deb [ optie1=waarde1 optie2=waarde2 ] uri suite [component1] [component2] [...]\n"
+"deb-src [ optie1=waarde1 optie2=waarde2 ] uri suite [component1] [component2] [...]"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+" Types: deb deb-src\n"
+" URIs: uri\n"
+" Suites: suite\n"
+" Components: [component1] [component2] [...]\n"
+" option1: value1\n"
+" option2: value2\n"
+" "
+msgstr ""
+" Types: deb deb-src\n"
+" URIs: uri\n"
+" Suites: suite\n"
+" Components: [component1] [component2] [...]\n"
+" optie1: waarde1\n"
+" optie2: waarde2\n"
+" "
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Alternatively the equivalent entry in deb822 style looks like this: "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
+msgstr ""
+"Anderzijds ziet het equivalent van dit item in deb822-stijl er als volgt "
+"uit: <placeholder type=\"literallayout\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The URI for the <literal>deb</literal> type must specify the base of the "
+"Debian distribution, from which APT will find the information it needs. "
+"<literal>suite</literal> can specify an exact path, in which case the "
+"components must be omitted and <literal>suite</literal> must end with a "
+"slash (<literal>/</literal>). This is useful for the case when only a "
+"particular sub-directory of the archive denoted by the URI is of interest. "
+"If <literal>suite</literal> does not specify an exact path, at least one "
+"<literal>component</literal> must be present."
+msgstr ""
+"De URI voor het type <literal>deb</literal> moet de basis vermelden van de "
+"Debian distributie waar APT de benodigde informatie kan vinden. "
+"<literal>suite</literal> kan een exact pad opgeven en in dat geval moeten de "
+"componenten weggelaten worden en moet <literal>suite</literal> eindigen op "
+"een slash (<literal>/</literal>). Dit is nuttig in een geval waarbij enkel "
+"een specifieke sub-sectie van het archief dat door de URI aangeduid wordt, "
+"van belang is. Indien <literal>suite</literal> geen exact pad opgeeft, moet "
+"minstens één <literal>component</literal> vermeld worden."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"<literal>suite</literal> may also contain a variable, <literal>$(ARCH)</"
+"literal> which expands to the Debian architecture (such as <literal>amd64</"
+"literal> or <literal>armel</literal>) used on the system. This permits "
+"architecture-independent <filename>sources.list</filename> files to be used. "
+"In general this is only of interest when specifying an exact path; "
+"<literal>APT</literal> will automatically generate a URI with the current "
+"architecture otherwise."
+msgstr ""
+"<literal>suite</literal> kan ook een variabele, <literal>$(ARCH)</literal>, "
+"bevatten, die omgezet wordt naar de Debian architectuur (zoals "
+"<literal>amd64</literal> of <literal>armel</literal>) die op het systeem in "
+"gebruik is. Dit laat toe om archtectuuronafhankelijke <filename>sources."
+"list</filename>-bestanden te gebruiken. Over het algemeen is dit enkel van "
+"belang wanneer een exact pad opgegeven wordt. Anders zal <literal>APT</"
+"literal> automatisch een URI genereren met de huidige architectuur."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Especially in the one-line-style format since only one distribution can be "
+"specified per line it may be necessary to have multiple lines for the same "
+"URI, if a subset of all available distributions or components at that "
+"location is desired. APT will sort the URI list after it has generated a "
+"complete set internally, and will collapse multiple references to the same "
+"Internet host, for instance, into a single connection, so that it does not "
+"inefficiently establish a connection, close it, do something else, and then "
+"re-establish a connection to that same host. APT also parallelizes "
+"connections to different hosts to more effectively deal with sites with low "
+"bandwidth."
+msgstr ""
+"Als uit een bepaalde locatie een subset van alle beschikbare distributies of "
+"componenten gewenst wordt, kan het bij het hanteren van de één-regelstijl "
+"nodig zijn om meerdere regels voor dezelfde URI te gebruiken, aangezien er "
+"per regel slechts één distributie opgegeven kan worden. Nadat APT intern een "
+"complete set gegenereerd heeft, zal het de URI-lijst sorteren en "
+"bijvoorbeeld meerdere verwijzingen naar eenzelfde computer op het internet, "
+"samenbundelen in eenzelfde verbinding. Dit is om niet op een inefficiënte "
+"manier te werk te gaan door een FTP-verbinding tot stand te brengen, die te "
+"sluiten, iets anders te doen en vervolgens opnieuw een verbinding te moeten "
+"maken met dezelfde computer. APT zet ook parallelle verbindingen op met "
+"verschillende computers om effectiever om te gaan met sites met een geringe "
+"bandbreedte."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"It is important to list sources in order of preference, with the most "
+"preferred source listed first. Typically this will result in sorting by "
+"speed from fastest to slowest (CD-ROM followed by hosts on a local network, "
+"followed by distant Internet hosts, for example)."
+msgstr ""
+"Het is belangrijk om pakketbronnen in volgorde van voorkeur te vermelden met "
+"de grootste voorkeur eerst. Een typisch gebruik is een ordening volgens "
+"snelheid van snelst naar traagst (bijvoorbeeld een CD gevolgd door computers "
+"op een lokaal netwerk en tenslotte afgelegen internetcomputers)."
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "&sourceslist-list-format;"
+msgstr "&sourceslist-list-format;"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "&sourceslist-sources-format;"
+msgstr "&sourceslist-sources-format;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"As an example, the sources for your distribution could look like this in one-"
+"line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or like "
+"this in deb822 style format: <placeholder type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+"Bij wijze van voorbeeld zouden de pakketbronnen voor uw distributie er als "
+"volgt kunnen uitzien met de indeling in de één-regelstijl: <placeholder type="
+"\"literallayout\" id=\"0\"/> en als volgt met de indeling in de deb822-"
+"stijl: <placeholder type=\"literallayout\" id=\"1\"/>"
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "The deb and deb-src types: Options"
+msgstr "De types deb en deb-src: opties"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Each source entry can have options specified to modify which source is "
+"accessed and how data is acquired from it. Format, syntax and names of the "
+"options vary between the one-line-style and deb822-style formats as "
+"described, but they both have the same options available. For simplicity we "
+"list the deb822 fieldname and provide the one-line name in brackets. "
+"Remember that besides setting multivalue options explicitly, there is also "
+"the option to modify them based on the default, but we aren't listing those "
+"names explicitly here. Unsupported options are silently ignored by all APT "
+"versions."
+msgstr ""
+"Bij elk pakketbronitem kunnen opties opgegeven worden om aan te passen welke "
+"bron gebruikt wordt en op welke manier er gegevens van opgehaald worden. "
+"Indeling, syntaxis en namen van de opties variëren naargelang het een één-"
+"regelstijl of een deb822-stijl betreft, zoals eerder beschreven, maar met "
+"beide stijlen kunnen dezelfde opties gebruikt worden. Om het eenvoudig te "
+"houden vermelden we hier de veldnaam voor de deb822-stijl en geven we de "
+"naam voor de één-regelstijl er tussen haakjes bij. Onthoud dat u multi-"
+"waarde opties expliciet kunt vermelden, maar dat u daarnaast over de optie "
+"beschikt om ze aan te passen uitgaande van hun standaardwaarde. Maar hier "
+"geven we hun namen expliciet weer. Niet-ondersteunde opties worden door alle "
+"versies van APT geruisloos genegeerd."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Architectures</option> (<option>arch</option>) is a multivalue "
+"option defining for which architectures information should be downloaded. If "
+"this option isn't set the default is all architectures as defined by the "
+"<option>APT::Architectures</option> config option."
+msgstr ""
+"<option>Architectures</option> (<option>arch</option>) is een multi-waarde "
+"optie waarmee opgegeven wordt voor welke architecturen er informatie "
+"opgehaald moet worden. Indien deze optie niet ingesteld werd, geldt als "
+"standaard alle architecturen die in de configuratieoptie <literal>APT::"
+"Architectures</literal> gedefinieerd zijn."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Languages</option> (<option>lang</option>) is a multivalue option "
+"defining for which languages information such as translated package "
+"descriptions should be downloaded. If this option isn't set the default is "
+"all languages as defined by the <option>Acquire::Languages</option> config "
+"option."
+msgstr ""
+"<option>Languages</option> (<option>lang</option>) is een multi-waarde optie "
+"waarmee opgegeven wordt voor welke talen er informatie, zoals vertaalde "
+"pakketbeschrijvingen, opgehaald moet worden. Indien deze optie niet "
+"ingesteld werd, geldt als standaard alle talen die in de configuratieoptie "
+"<literal>Acquire::Languages</literal> gedefinieerd zijn."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Targets</option> (<option>target</option>) is a multivalue option "
+"defining which download targets apt will try to acquire from this source. If "
+"not specified, the default set is defined by the <option>Acquire::"
+"IndexTargets</option> configuration scope (targets are specified by their "
+"name in the <literal>Created-By</literal> field). Additionally, targets can "
+"be enabled or disabled by using the <literal>Identifier</literal> field as "
+"an option with a boolean value instead of using this multivalue option."
+msgstr ""
+"<option>Targets</option> (<option>target</option>) is een multi-waarde optie "
+"waarmee opgegeven wordt welke downloadtargets apt uit deze pakketbron zal "
+"trachten op te halen. Indien deze optie niet gespecificeerd werd, wordt de "
+"standaardset gedefinieerd door het configuratiebereik <option>Acquire::"
+"IndexTargets</option> (targets worden aan de hand van hun naam gepreciseerd "
+"in het veld <literal>Created-By</literal>). Daarenboven kunnen specifieke "
+"targets geactiveerd of gedeactiveerd worden door het veld "
+"<literal>Identifier</literal> als een optie met een booleaanse waarde te "
+"gebruiken in plaats van op deze multi-waarde optie beroep te doen."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>PDiffs</option> (<option>pdiffs</option>) is a yes/no value which "
+"controls if APT should try to use PDiffs to update old indexes instead of "
+"downloading the new indexes entirely. The value of this option is ignored if "
+"the repository doesn't announce the availability of PDiffs. Defaults to the "
+"value of the option with the same name for a specific index file defined in "
+"the <option>Acquire::IndexTargets</option> scope, which itself defaults to "
+"the value of configuration option <option>Acquire::PDiffs</option> which "
+"defaults to <literal>yes</literal>."
+msgstr ""
+"<option>PDiffs</option> (<option>pdiffs</option>) is een yes/no (ja/nee) "
+"waarde die regelt of APT moet proberen om PDiffs op te halen om oude indexen "
+"bij te werken in plaats van de volledige nieuwe indexen te downloaden. De "
+"waarde van deze optie wordt genegeerd als de pakketbron niet aangeeft dat er "
+"PDiffs beschikbaar zijn. Standaard is dit de waarde van de optie met "
+"eenzelfde naam voor een specifiek indexbestand, zoals gedefinieerd in het "
+"bereik <option>Acquire::IndexTargets</option>, dat zelf als standaard de "
+"waarde krijgt van de configuratieoptie <option>Acquire::PDiffs</option>, die "
+"op zijn beurt standaard op <literal>yes</literal> ingesteld staat."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>By-Hash</option> (<option>by-hash</option>) can have the value "
+"<literal>yes</literal>, <literal>no</literal> or <literal>force</literal> "
+"and controls if APT should try to acquire indexes via a URI constructed from "
+"a hashsum of the expected file instead of using the well-known stable "
+"filename of the index. Using this can avoid hashsum mismatches, but requires "
+"a supporting mirror. A <literal>yes</literal> or <literal>no</literal> value "
+"activates/disables the use of this feature if this source indicates support "
+"for it, while <literal>force</literal> will enable the feature regardless of "
+"what the source indicates. Defaults to the value of the option of the same "
+"name for a specific index file defined in the <option>Acquire::IndexTargets</"
+"option> scope, which itself defaults to the value of configuration option "
+"<option>Acquire::By-Hash</option> which defaults to <literal>yes</literal>."
+msgstr ""
+"<option>By-Hash</option> (<option>by-hash</option>) kan als waarde hebben "
+"<literal>yes</literal>, <literal>no</literal> of <literal>force</literal> en "
+"regelt of APT moet proberen de indexen te bekomen via een URI die "
+"geconstrueerd wordt op basis van de hash-som van het verwachte bestand, in "
+"plaats van de welbekende stabiele bestandsnaam van het indexbestand te "
+"gebruiken. Dit gebruiken kan een discrepantie tussen hash-sommen voorkomen, "
+"maar het vereist wel een spiegelserver die dit ondersteunt. De waarde "
+"<literal>yes</literal> activeert en <literal>no</literal> deactiveert het "
+"gebruik van deze functionaliteit in het geval de pakketbron aangeeft dit te "
+"ondersteunen, terwijl <literal>force</literal> deze functionaliteit "
+"activeert, ongeacht wat de pakketbron aangeeft. Standaard is dit de waarde "
+"van de optie met eenzelfde naam voor een specifiek indexbestand, zoals "
+"gedefinieerd in het bereik <option>Acquire::IndexTargets</option>, dat zelf "
+"als standaard de waarde krijgt van de configuratieoptie <option>Acquire::By-"
+"Hash</option>, die op zijn beurt standaard op <literal>yes</literal> "
+"ingesteld staat."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Furthermore, there are options which if set affect <emphasis>all</emphasis> "
+"sources with the same URI and Suite, so they have to be set on all such "
+"entries and can not be varied between different components. APT will try to "
+"detect and error out on such anomalies."
+msgstr ""
+"Daarnaast zijn er opties die, als ze ingesteld worden, betrekking hebben op "
+"<emphasis>alle</emphasis> pakketbronnen met dezelfde URI en Suite, waardoor "
+"ze ingesteld moeten worden voor alle soortgelijke items en er niet "
+"gevarieerd kan worden tussen verschillende componenten. Als er zich "
+"dergelijke anomalieën manifesteren, zal APT ze proberen te ontdekken en "
+"verbeteren."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Allow-Insecure</option> (<option>allow-insecure</option>), "
+"<option>Allow-Weak</option> (<option>allow-weak</option>) and <option>Allow-"
+"Downgrade-To-Insecure</option> (<option>allow-downgrade-to-insecure</"
+"option>) are boolean values which all default to <literal>no</literal>. If "
+"set to <literal>yes</literal> they circumvent parts of &apt-secure; and "
+"should therefore not be used lightly!"
+msgstr ""
+"<option>Allow-Insecure</option> (<option>allow-insecure</option>), "
+"<option>Allow-Weak</option> (<option>allow-weak</option>) en <option>Allow-"
+"Downgrade-To-Insecure</option> (<option>allow-downgrade-to-insecure</"
+"option>) zijn booleaanse waarden die allemaal standaard de waarde "
+"<literal>no</literal> hebben. Indien ze op <literal>yes</literal> ingesteld "
+"worden, omzeilen ze delen van &apt-secure; en daarom zouden ze niet "
+"lichtzinnig gebruikt moeten worden!"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Trusted</option> (<option>trusted</option>) is a tri-state value "
+"which defaults to APT deciding if a source is considered trusted or if "
+"warnings should be raised before e.g. packages are installed from this "
+"source. This option can be used to override that decision. The value "
+"<literal>yes</literal> tells APT always to consider this source as trusted, "
+"even if it doesn't pass authentication checks. It disables parts of &apt-"
+"secure;, and should therefore only be used in a local and trusted context "
+"(if at all) as otherwise security is breached. The value <literal>no</"
+"literal> does the opposite, causing the source to be handled as untrusted "
+"even if the authentication checks passed successfully. The default value "
+"can't be set explicitly."
+msgstr ""
+"<option>Trusted</option> (<option>trusted</option>) is een drie-status "
+"waarde die als standaardgedrag heeft dat APT uitmaakt of een pakketbron als "
+"betrouwbaar aanzien wordt, dan wel of er een waarschuwing getoond moet "
+"worden vooraleer bijvoorbeeld pakketten van die pakketbron geïnstalleerd "
+"worden. Deze optie kan gebruikt worden om die beslissing te omzeilen. De "
+"waarde <literal>yes</literal> zegt APT om die pakketbron steeds als "
+"betrouwbaar te beschouwen, zelfs als ze niet slaagt bij "
+"authenticatietoetsen. Ze schakelt delen van &apt-secure; uit en zou daarom "
+"enkel gebruikt mogen worden in een lokale en betrouwbare context (als men ze "
+"hoe dan ook al zou gebruiken), aangezien anders de beveiliging verbroken "
+"wordt. De waarde <literal>no</literal> doet het tegenovergestelde en zorgt "
+"ervoor dat een pakketbron behandeld wordt als onbetrouwbaar, zelfs al was ze "
+"succesvol bij de authenticatietoetsen. De standaardwaarde kan niet expliciet "
+"ingesteld worden."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Signed-By</option> (<option>signed-by</option>) is either an "
+"absolute path to a keyring file (has to be accessible and readable for the "
+"<literal>_apt</literal> user, so ensure everyone has read-permissions on the "
+"file) or one or more fingerprints of keys either in the <filename>trusted."
+"gpg</filename> keyring or in the keyrings in the <filename>trusted.gpg.d/</"
+"filename> directory (see <command>apt-key fingerprint</command>). If the "
+"option is set, only the key(s) in this keyring or only the keys with these "
+"fingerprints are used for the &apt-secure; verification of this repository. "
+"Defaults to the value of the option with the same name if set in the "
+"previously acquired <filename>Release</filename> file. Otherwise all keys "
+"in the trusted keyrings are considered valid signers for this repository."
+msgstr ""
+"<option>Signed-By</option> (<option>signed-by</option>) is ofwel een "
+"absoluut pad naar een sleutelbosbestand (moet toegankelijk zijn voor en te "
+"lezen door gebruiker <literal>_apt</literal>; zorg er dus voor dat iedereen "
+"leesrechten heeft voor het bestand), ofwel een of meer vingerafdrukken van "
+"sleutels uit de sleutelbos <filename>trusted.gpg</filename> of uit de "
+"sleutelbossen in de map <filename>trusted.gpg.d/</filename> (zie "
+"<command>apt-key fingerprint</command>). Indien de optie ingesteld werd, "
+"worden enkel de sleutel(s) uit die sleutelbos of enkel de sleutels met deze "
+"vingerafdrukken gebruikt voor de verificatie van die pakketbron door &apt-"
+"secure;. Heeft standaard de waarde van de optie met dezelfde naam indien die "
+"ingesteld staat in het vooraf opgehaalde bestand <filename>Release</"
+"filename>. Anders worden alle sleutels uit de betrouwbare sleutelbossen als "
+"geldige ondertekenaars van deze pakketbron aanzien."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Check-Valid-Until</option> (<option>check-valid-until</option>) is "
+"a yes/no value which controls if APT should try to detect replay attacks. A "
+"repository creator can declare a time until which the data provided in the "
+"repository should be considered valid, and if this time is reached, but no "
+"new data is provided, the data is considered expired and an error is "
+"raised. Besides increasing security, as a malicious attacker can't send old "
+"data forever to prevent a user from upgrading to a new version, this also "
+"helps users identify mirrors which are no longer updated. However, some "
+"repositories such as historic archives are not updated any more by design, "
+"so this check can be disabled by setting this option to <literal>no</"
+"literal>. Defaults to the value of configuration option <option>Acquire::"
+"Check-Valid-Until</option> which itself defaults to <literal>yes</literal>."
+msgstr ""
+"<option>Check-Valid-Until</option> (<option>check-valid-until</option>) is "
+"een yes/no (ja/nee) waarde die regelt of APT moet proberen om replay-"
+"aanvallen te ontdekken. De maker van een pakketbron kan een tijdstip bepalen "
+"tot wanneer de gegevens die door de pakketbron ter beschikking gesteld "
+"worden, als geldig beschouwd mogen worden. Als dat tijdstip aangebroken is "
+"en er geen nieuwe gegevens ter beschikking gesteld werden, zullen de "
+"gegevens als vervallen beschouwd worden en er zal een foutmelding gegeven "
+"worden. Dit verhoogt niet enkel de veiligheid, aangezien een aanvaller met "
+"kwade bedoelingen niet eeuwig oude gegevens kan blijven versturen om op die "
+"manier een gebruiker van een opwaardering af te houden, het helpt gebruikers "
+"ook om spiegelservers die niet langer bijgewerkt worden te detecteren. "
+"Sommige pakketbronnen, zoals historische archieven, worden evenwel met opzet "
+"niet langer bijgewerkt en om die reden kan deze toets uitgezet worden door "
+"deze optie op <literal>no</literal> in te stellen. Als standaard geldt de "
+"waarde van de configuratieoptie <option>Acquire::Check-Valid-Until</option>, "
+"die op haar beurt <literal>yes</literal> als standaard heeft."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Valid-Until-Min</option> (<option>valid-until-min</option>) and "
+"<option>Valid-Until-Max</option> (<option>valid-until-max</option>) can be "
+"used to raise or lower the time period in seconds in which the data from "
+"this repository is considered valid. -Max can be especially useful if the "
+"repository provides no Valid-Until field on its Release file to set your own "
+"value, while -Min can be used to increase the valid time on seldom updated "
+"(local) mirrors of a more frequently updated but less accessible archive "
+"(which is in the sources.list as well) instead of disabling the check "
+"entirely. Default to the value of the configuration options "
+"<option>Acquire::Min-ValidTime</option> and <option>Acquire::Max-ValidTime</"
+"option> which are both unset by default."
+msgstr ""
+"<option>Valid-Until-Min</option> (<option>valid-until-min</option>) en "
+"<option>Valid-Until-Max</option> (<option>valid-until-max</option>) kunnen "
+"gebruikt worden om, uitgedrukt in seconden, de periode tot wanneer gegevens "
+"van deze pakketbron als geldig beschouwd mogen worden, te verlengen of te "
+"verkorten. -Max kan vooral nuttig zijn om uw eigen waarde in te stellen in "
+"het geval van een pakketbron met een Release-bestand waarin het veld Valid-"
+"Until ontbreekt, terwijl -Min gebruikt kan worden om de geldigheidsduur te "
+"verlengen van een zelden opgewaardeerde (lokale) spiegelserver van een vaker "
+"bijgewerkt, maar moeilijker toegankelijk archief (dat ook vermeld staat in "
+"sources.list). Op die manier hoeft men deze toets niet volledig uit te "
+"schakelen. Als standaard geldt de waarde van de configuratieopties "
+"<option>Acquire::Min-ValidTime</option> en <option>Acquire::Max-ValidTime</"
+"option>, die beide standaard niet ingesteld zijn."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "URI Specification"
+msgstr "URI-specificatie"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "The currently recognized URI types are:"
+msgstr "De momenteel herkende URI-types zijn:"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The file scheme allows an arbitrary directory in the file system to be "
+"considered an archive. This is useful for NFS mounts and local mirrors or "
+"archives."
+msgstr ""
+"De methode file laat toe om gelijk welke map uit het bestandssysteem als een "
+"archief te beschouwen. Dit is nuttig voor aankoppelingen via NFS, voor "
+"lokale spiegelservers en lokale archieven."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The cdrom scheme allows APT to use a local CD-ROM drive with media swapping. "
+"Use the &apt-cdrom; program to create cdrom entries in the source list."
+msgstr ""
+"De methode cdrom laat APT toe om met meerdere CD's in een lokaal CD-station "
+"te werken. Gebruik het programma &apt-cdrom; om regels met CD-pakketbronnen "
+"aan te maken in de lijst met pakketbronnen."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The http scheme specifies an HTTP server for the archive. If an environment "
+"variable <envar>http_proxy</envar> is set with the format http://server:"
+"port/, the proxy server specified in <envar>http_proxy</envar> will be used. "
+"Users of authenticated HTTP/1.1 proxies may use a string of the format "
+"http://user:pass@server:port/. Note that this is an insecure method of "
+"authentication."
+msgstr ""
+"De methode http specificeert een HTTP-server voor het archief. Indien een "
+"omgevingsvariabele <envar>http_proxy</envar> bestaat in het formaat http://"
+"server:port/, dan zal de in <envar>http_proxy</envar> opgegeven proxy-server "
+"gebruikt worden. Gebruikers van een geauthenticeerde HTTP/1.1 proxy kunnen "
+"een tekenreeks gebruiken volgens het formaat http://user:pass@server:port/. "
+"Merk op dat dit geen veilige authenticatiemethode is."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The ftp scheme specifies an FTP server for the archive. APT's FTP behavior "
+"is highly configurable; for more information see the &apt-conf; manual page. "
+"Please note that an FTP proxy can be specified by using the "
+"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
+"HTTP proxy (HTTP proxy servers often understand FTP URLs) using this "
+"environment variable and <emphasis>only</emphasis> this environment "
+"variable. Proxies using HTTP specified in the configuration file will be "
+"ignored."
+msgstr ""
+"De methode ftp specificeert een FTP-server voor het archief. Het FTP-gedrag "
+"van APT kan in belangrijke mate geconfigureerd worden. Zie voor meer "
+"informatie de man-pagina &apt-conf;. Noteer dat een FTP-proxy opgegeven kan "
+"worden met de omgevingsvariabele <envar>ftp_proxy</envar>. Met deze "
+"omgevingsvariabele en <emphasis>enkel</emphasis> daarmee kan ook een HTTP-"
+"proxy opgegeven worden (HTTP proxyservers kunnen vaak omgaan met FTP-URL's). "
+"Proxy's die HTTP gebruiken en in het configuratiebestand vermeld staan "
+"worden genegeerd."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The copy scheme is identical to the file scheme except that packages are "
+"copied into the cache directory instead of used directly at their location. "
+"This is useful for people using removable media to copy files around with "
+"APT."
+msgstr ""
+"De methode copy is identiek aan de methode file behalve dat pakketten "
+"gekopieerd worden naar de cache-map in plaats van ze rechtstreeks op hun "
+"locatie te gebruiken. Dit is nuttig voor gebruikers van verwijderbare media "
+"om met behulp van APT bestanden te kopiëren."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
+"the files as a given user. Prior configuration of rhosts or RSA keys is "
+"recommended. The standard <command>find</command> and <command>dd</command> "
+"commands are used to perform the file transfers from the remote host."
+msgstr ""
+"De methode rsh/ssh maakt gebruik van RSH/SSH om een verbinding met een "
+"externe computer te maken en als een welbepaalde gebruiker toegang te "
+"krijgen tot de bestanden. Voorafgaandelijke configuratie van rhosts of RSA-"
+"sleutels wordt aanbevolen. De standaardcommando's <command>find</command> en "
+"<command>dd</command> worden gebruikt om de overdracht van bestanden van de "
+"externe computer uit te voeren."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
+#: sources.list.5.xml
+msgid "adding more recognizable URI types"
+msgstr "nog andere herkenbare URI-types toevoegen"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"APT can be extended with more methods shipped in other optional packages, "
+"which should follow the naming scheme <package>apt-transport-"
+"<replaceable>method</replaceable></package>. For instance, the APT team "
+"also maintains the package <package>apt-transport-https</package>, which "
+"provides access methods for HTTPS URIs with features similar to the http "
+"method. Methods for using e.g. debtorrent are also available - see &apt-"
+"transport-debtorrent;."
+msgstr ""
+"APT kan uitgebreid worden met extra methodes die door andere optionele "
+"pakketten ter beschikking gesteld worden en die moeten voldoen aan het "
+"naamgevingsschema <package>apt-transport-<replaceable>methode</replaceable></"
+"package>. Het APT-team onderhoudt bijvoorbeeld ook het pakket <package>apt-"
+"transport-https</package>, dat methodes aanbiedt om toegang te krijgen tot "
+"HTTPS URI's met dezelfde functionaliteit als bij de http-methode. Er zijn "
+"ook methodes beschikbaar om bijvoorbeeld van debtorrent gebruik te maken - "
+"zie &apt-transport-debtorrent;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses the archive stored locally (or NFS mounted) at /home/apt/debian for "
+"stable/main, stable/contrib, and stable/non-free."
+msgstr ""
+"Gebruikt het lokaal opgeslagen (of via NFS aangekoppelde) archief in /home/"
+"apt/debian voor stable/main, stable/contrib, en stable/non-free."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb file:/home/apt/debian stable main contrib non-free"
+msgstr "deb file:/home/apt/debian stable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: stable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: stable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "As above, except this uses the unstable (development) distribution."
+msgstr ""
+"Zoals hierboven, behalve dat hier de distributie unstable (distributie in "
+"ontwikkeling) gebruikt wordt."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb file:/home/apt/debian unstable main contrib non-free"
+msgstr "deb file:/home/apt/debian unstable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "Sources specification for the above."
+msgstr "Specificatie voor de bronbestanden van het voorgaande."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb-src file:/home/apt/debian unstable main contrib non-free"
+msgstr "deb-src file:/home/apt/debian unstable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb-src\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb-src\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The first line gets package information for the architectures in "
+"<literal>APT::Architectures</literal> while the second always retrieves "
+"<literal>amd64</literal> and <literal>armel</literal>."
+msgstr ""
+"De eerste regel haalt pakketinformatie op voor de architecturen uit "
+"<literal>APT::Architectures</literal> terwijl de tweede steeds "
+"<literal>amd64</literal> en <literal>armel</literal> ophaalt."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main"
+msgstr ""
+"deb http://deb.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"\n"
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"Architectures: amd64 armel\n"
+msgstr ""
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"\n"
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"Architectures: amd64 armel\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to access the archive at archive.debian.org, and uses only the "
+"hamm/main area."
+msgstr ""
+"Gebruikt HTTP om toegang te krijgen tot het archief van archive.debian.org "
+"en gebruikt daar enkel het gebied hamm/main."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb http://archive.debian.org/debian-archive hamm main"
+msgstr "deb http://archive.debian.org/debian-archive hamm main"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://archive.debian.org/debian-archive\n"
+"Suites: hamm\n"
+"Components: main"
+msgstr ""
+"Types: deb\n"
+"URIs: http://archive.debian.org/debian-archive\n"
+"Suites: hamm\n"
+"Components: main"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the &debian-stable-codename;/contrib area."
+msgstr ""
+"Gebruikt FTP om toegang te krijgen tot het archief op ftp.debian.org onder "
+"de map debian en gebruikt er enkel het gebied &debian-stable-codename;/"
+"contrib."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: contrib"
+msgstr ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: contrib"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the unstable/contrib area. If this line appears as "
+"well as the one in the previous example in <filename>sources.list</filename> "
+"a single FTP session will be used for both resource lines."
+msgstr ""
+"Gebruikt FTP om toegang te krijgen tot het archief op ftp.debian.org onder "
+"de map debian en gebruikt er enkel het gebied unstable/contrib. Indien deze "
+"regel en die uit het voorgaande voorbeeld allebei voorkomen in "
+"<filename>sources.list</filename> zal een enkele FTP-verbinding gebruikt "
+"worden voor beide regels met pakketbronnen."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian unstable contrib"
+msgstr "deb ftp://ftp.debian.org/debian unstable contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: unstable\n"
+"Components: contrib"
+msgstr ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: unstable\n"
+"Components: contrib"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+msgstr "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://ftp.tlh.debian.org/universe\n"
+"Suites: unstable/binary-$(ARCH)/"
+msgstr ""
+"Types: deb\n"
+"URIs: http://ftp.tlh.debian.org/universe\n"
+"Suites: unstable/binary-$(ARCH)/"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe "
+"directory, and uses only files found under <filename>unstable/binary-i386</"
+"filename> on i386 machines, <filename>unstable/binary-amd64</filename> on "
+"amd64, and so forth for other supported architectures. [Note this example "
+"only illustrates how to use the substitution variable; official debian "
+"archives are not structured like this] <placeholder type=\"literallayout\" "
+"id=\"0\"/> <placeholder type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+"Gebruikt HTTP om toegang te krijgen tot het archief op ftp.tlh.debian.org "
+"onder de map universe en gebruikt op i386-computers enkel bestanden die te "
+"vinden zijn onder <filename>unstable/binary-i386</filename> en op amd64-"
+"computers bestanden onder <filename>unstable/binary-amd64</filename> en zo "
+"verder voor andere ondersteunde architecturen. [Merk op dat dit voorbeeld "
+"enkel toont hoe de substitutievariabele moet gebruikt worden; officiële "
+"debian-archieven worden niet op die manier georganiseerd] <placeholder type="
+"\"literallayout\" id=\"0\"/> <placeholder type=\"literallayout\" id=\"1\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to get binary packages as well as sources from the stable, testing "
+"and unstable suites and the components main and contrib."
+msgstr ""
+"Gebruikt HTTP om binaire pakketten en broncode uit de suites stable, testing "
+"en unstable en uit de componenten main en contrib op te halen."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian stable main contrib\n"
+"deb-src http://deb.debian.org/debian stable main contrib\n"
+"deb http://deb.debian.org/debian testing main contrib\n"
+"deb-src http://deb.debian.org/debian testing main contrib\n"
+"deb http://deb.debian.org/debian unstable main contrib\n"
+"deb-src http://deb.debian.org/debian unstable main contrib"
+msgstr ""
+"deb http://deb.debian.org/debian stable main contrib\n"
+"deb-src http://deb.debian.org/debian stable main contrib\n"
+"deb http://deb.debian.org/debian testing main contrib\n"
+"deb-src http://deb.debian.org/debian testing main contrib\n"
+"deb http://deb.debian.org/debian unstable main contrib\n"
+"deb-src http://deb.debian.org/debian unstable main contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb deb-src\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: stable testing unstable\n"
+"Components: main contrib\n"
+msgstr ""
+"Types: deb deb-src\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: stable testing unstable\n"
+"Components: main contrib\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "&apt-get;, &apt-conf;, &apt-acquire-additional-files;"
+msgstr "&apt-get;, &apt-conf;, &apt-acquire-additional-files;"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt-extracttemplates.1.xml apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "1"
+msgstr "1"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-extracttemplates.1.xml
+msgid ""
+"Utility to extract <command>debconf</command> config and templates from "
+"Debian packages"
+msgstr ""
+"Hulpprogramma om configuratie-informatie en sjablonen voor <command>debconf</"
+"command> uit Debian-pakketten te extraheren"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"<command>apt-extracttemplates</command> will take one or more Debian package "
+"files as input and write out (to a temporary directory) all associated "
+"config scripts and template files. For each passed in package that contains "
+"config scripts and templates, one line of output will be generated in the "
+"format:"
+msgstr ""
+"<command>apt-extracttemplates</command> gebruikt een of meer pakketbestanden "
+"van Debian als invoer en schrijft (naar een tijdelijke map) alle ermee "
+"verband houdende configuratiescripts en sjabloonbestanden weg. Voor elk "
+"verwerkt pakket dat configuratiescripts en sjablonen bevat wordt een regel "
+"met uitvoer aangemaakt volgens de indeling:"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid "package version template-file config-script"
+msgstr "pakketversie sjabloonbestand configuratiescript"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"template-file and config-script are written to the temporary directory "
+"specified by the <option>-t</option> or <option>--tempdir</option> "
+"(<literal>APT::ExtractTemplates::TempDir</literal>) directory, with "
+"filenames of the form <filename>package.template.XXXXXX</filename> and "
+"<filename>package.config.XXXXXX</filename>"
+msgstr ""
+"sjabloonbestand en configuratiescript worden opgeslagen in de tijdelijke map "
+"die opgegeven werd met de optie <option>-t</option> of <option>--tempdir</"
+"option> (<literal>APT::ExtractTemplates::TempDir</literal>) in bestandsnamen "
+"met de vorm <filename>package.template.XXXXXX</filename> en "
+"<filename>package.config.XXXXXX</filename>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"Temporary directory in which to write extracted <command>debconf</command> "
+"template files and config scripts. Configuration Item: <literal>APT::"
+"ExtractTemplates::TempDir</literal>"
+msgstr ""
+"Tijdelijke map om er geëxtraheerde sjabloonbestanden en configuratiescripts "
+"voor <command>debconf</command> in op te slaan. Configuratie-item: "
+"<literal>APT::ExtractTemplates::TempDir</literal>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"<command>apt-extracttemplates</command> returns zero on normal operation, "
+"decimal 100 on error."
+msgstr ""
+"<command>apt-extracttemplates</command> geeft de terugkeerwaarde nul bij een "
+"normaal verlopen operatie, het decimaal getal 100 in geval van een fout."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-sortpkgs.1.xml
+msgid "Utility to sort package index files"
+msgstr "Hulpprogramma om pakketindexbestanden te sorteren"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"<command>apt-sortpkgs</command> will take an index file (source index or "
+"package index) and sort the records so that they are ordered by the package "
+"name. It will also sort the internal fields of each record according to the "
+"internal sorting rules."
+msgstr ""
+"<command>apt-sortpkgs</command> neemt een indexbestand (broncode-index of "
+"pakketindex) en sorteert de records zodat ze volgens pakketnaam geordend "
+"worden. Het sorteert ook de interne velden van elk record volgens de interne "
+"sorteerregels."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"All output is sent to standard output; the input must be a seekable file."
+msgstr ""
+"Alle uitvoer wordt naar de standaarduitvoer geschreven. De invoer moet een "
+"bestand zijn dat doorzocht kan worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"Use source index field ordering. Configuration Item: <literal>APT::"
+"SortPkgs::Source</literal>."
+msgstr ""
+"Veldordening gebruiken bij een broncode-index. Configuratie-item: "
+"<literal>APT::SortPkgs::Source</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"<command>apt-sortpkgs</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+"<command>apt-sortpkgs</command> geeft de terugkeerwaarde nul bij een normaal "
+"verlopen operatie, het decimaal getal 100 in geval van een fout."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-ftparchive.1.xml
+msgid "Utility to generate index files"
+msgstr "Hulpprogramma om indexbestanden te maken"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> is the command line tool that generates "
+"the index files that APT uses to access a distribution source. The index "
+"files should be generated on the origin site based on the content of that "
+"site."
+msgstr ""
+"<command>apt-ftparchive</command> is een gereedschap voor de commandoregel "
+"dat de indexbestanden maakt die APT gebruikt om toegang te hebben tot een "
+"distributiebron. De indexbestanden moeten aangemaakt worden op de site van "
+"oorsprong en gebaseerd zijn op de inhoud van die site."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> is a superset of the &dpkg-scanpackages; "
+"program, incorporating its entire functionality via the <literal>packages</"
+"literal> command. It also contains a contents file generator, "
+"<literal>contents</literal>, and an elaborate means to 'script' the "
+"generation process for a complete archive."
+msgstr ""
+"<command>apt-ftparchive</command> is een uitbreiding van het programma &dpkg-"
+"scanpackages; dat diens volledige functionaliteit incorporeert via het "
+"commando <literal>packages</literal>. Het bevat ook een programma, "
+"<literal>contents</literal>, voor het aanmaken van contents-bestanden en "
+"degelijk ontwikkelde middelen om dit aanmaakproces voor een volledig archief "
+"door een script te laten uitvoeren."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Internally <command>apt-ftparchive</command> can make use of binary "
+"databases to cache the contents of a .deb file and it does not rely on any "
+"external programs aside from &gzip;. When doing a full generate it "
+"automatically performs file-change checks and builds the desired compressed "
+"output files."
+msgstr ""
+"<command>apt-ftparchive</command> kan uit zichzelf gebruik maken van binaire "
+"databases om de inhoud van een .deb-bestand te bufferen en het is van geen "
+"enkel extern programma afhankelijk met uitzondering van &gzip;. Wanneer een "
+"volledige aanmaak gebeurt, zal het automatisch een controle uitvoeren op "
+"gewijzigde bestanden en de gewenste gecomprimeerde uitvoerbestanden bouwen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The packages command generates a package file from a directory tree. It "
+"takes the given directory and recursively searches it for .deb files, "
+"emitting a package record to stdout for each. This command is approximately "
+"equivalent to &dpkg-scanpackages;."
+msgstr ""
+"Het commando packages maakt vertrekkend vanuit een mappenboom een package-"
+"bestand aan. Het begint bij de opgegeven map en doorzoekt de onderliggende "
+"mappen op de aanwezigheid van .deb-bestanden en schrijft voor elk ervan een "
+"pakketfiche weg naar de standaarduitvoer. Dit commando is bij benadering "
+"analoog aan &dpkg-scanpackages;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The option <option>--db</option> can be used to specify a binary caching DB."
+msgstr ""
+"De optie <option>--db</option> kan gebruikt worden om een bufferende binaire "
+"database op te geven."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>sources</literal> command generates a source index file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .dsc files, emitting a source record to stdout for each. This command is "
+"approximately equivalent to &dpkg-scansources;."
+msgstr ""
+"Het commando <literal>sources</literal> maakt vertrekkend vanuit een "
+"mappenboom een indexbestand over broncodebestanden aan. Het begint bij de "
+"opgegeven map en doorzoekt de onderliggende mappen op de aanwezigheid van ."
+"dsc-bestanden en schrijft voor elk ervan een broncodebestandsfiche weg naar "
+"de standaarduitvoer. Dit commando is bij benadering analoog aan &dpkg-"
+"scansources;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"If an override file is specified then a source override file will be looked "
+"for with an extension of .src. The --source-override option can be used to "
+"change the source override file that will be used."
+msgstr ""
+"Indien een override-bestand opgegeven werd, zal gezocht worden naar een "
+"broncode-override-bestand met de extensie .src. De optie --source-override "
+"kan gebruikt worden om op te geven dat een ander broncode-override-bestand "
+"gebruikt zal worden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>contents</literal> command generates a contents file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .deb files, and reads the file list from each file. It then sorts and "
+"writes to stdout the list of files matched to packages. Directories are not "
+"written to the output. If multiple packages own the same file then each "
+"package is separated by a comma in the output."
+msgstr ""
+"Het commando <literal>contents</literal> maakt voor een mappenboom een "
+"contents-bestand aan. Het begint bij de opgegeven map en doorzoekt de "
+"onderliggende mappen op de aanwezigheid van .deb-bestanden en leest van elk "
+"bestand de bestandenlijst. Daarna sorteert het de lijst van bestanden en "
+"schrijft die gekoppeld aan een pakket weg naar de standaarduitvoer. Mappen "
+"worden niet naar standaarduitvoer geschreven. Indien hetzelfde bestand aan "
+"meerdere pakketten toebehoort, worden in de uitvoer de pakketten door een "
+"komma gescheiden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>release</literal> command generates a Release file from a "
+"directory tree. It recursively searches the given directory for uncompressed "
+"and compressed <filename>Packages</filename>, <filename>Sources</filename>, "
+"<filename>Contents</filename>, <filename>Components</filename> and "
+"<filename>icons</filename> files as well as <filename>Release</filename>, "
+"<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
+"default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>). "
+"Additional filename patterns can be added by listing them in <literal>APT::"
+"FTPArchive::Release::Patterns</literal>. It then writes to stdout a "
+"<filename>Release</filename> file containing (by default) an MD5, SHA1, "
+"SHA256 and SHA512 digest for each file."
+msgstr ""
+"Het commando <literal>release</literal> maakt voor een mappenboom een "
+"Release-bestand aan. Het begint bij de opgegeven map en zoekt daar en in de "
+"onderliggende mappen standaard naar niet-gecomprimeerde en gecomprimeerde "
+"<filename>Packages</filename>-, <filename>Sources</filename>, "
+"<filename>Contents</filename>, <filename>Components</filename> en "
+"<filename>icons</filename>-bestanden, alsook naar <filename>Release</"
+"filename>-, <filename>Index</filename>- en <filename>md5sum.txt</filename>-"
+"bestanden. (<literal>APT::FTPArchive::Release::Default-Patterns</literal>). "
+"Bijkomende bestandsnaampatronen kunnen toegevoegd worden door ze op te "
+"sommen in<literal>APT::FTPArchive::Release::Patterns</literal>. Het commando "
+"schrijft vervolgens naar de standaarduitvoer een<filename>Release</filename>-"
+"bestand dat (standaard) voor elk bestand een MD5-, SHA1-, SHA256 en SHA512-"
+"verzameling bevat."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Values for the additional metadata fields in the Release file are taken from "
+"the corresponding variables under <literal>APT::FTPArchive::Release</"
+"literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The "
+"supported fields are <literal>Origin</literal>, <literal>Label</literal>, "
+"<literal>Suite</literal>, <literal>Version</literal>, <literal>Codename</"
+"literal>, <literal>Date</literal>, <literal>NotAutomatic</literal>, "
+"<literal>ButAutomaticUpgrades</literal>, <literal>Acquire-By-Hash</literal>, "
+"<literal>Valid-Until</literal>, <literal>Signed-By</literal>, "
+"<literal>Architectures</literal>, <literal>Components</literal> and "
+"<literal>Description</literal>."
+msgstr ""
+"De waarden voor de bijkomende velden met metagegevens in het Release-bestand "
+"worden ontleend aan de overeenkomstige variabelen uit <literal>APT::"
+"FTPArchive::Release</literal>, bijvoorbeeld <literal>APT::FTPArchive::"
+"Release::Origin</literal>. De ondersteunde velden zijn: <literal>Origin</"
+"literal>, <literal>Label</literal>, <literal>Suite</literal>, "
+"<literal>Version</literal>, <literal>Codename</literal>, <literal>Date</"
+"literal>, <literal>NotAutomatic</literal>, <literal>ButAutomaticUpgrades</"
+"literal>, <literal>Acquire-By-Hash</literal>, <literal>Valid-Until</"
+"literal>, <literal>Signed-By</literal>, <literal>Architectures</literal>, "
+"<literal>Components</literal> en <literal>Description</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>generate</literal> command is designed to be runnable from a "
+"cron script and builds indexes according to the given config file. The "
+"config language provides a flexible means of specifying which index files "
+"are built from which directories, as well as providing a simple means of "
+"maintaining the required settings."
+msgstr ""
+"Het commando <literal>generate</literal> werd ontworpen voor gebruik in een "
+"cron-script en bouwt indexen volgens het opgegeven configuratiebestand. De "
+"configuratietaal voorziet in een flexibel instrument om op te geven welke "
+"indexbestanden over welke mappen gemaakt moeten worden en ze voorziet ook in "
+"een eenvoudig instrument voor het onderhoud van de vereiste instellingen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>clean</literal> command tidies the databases used by the given "
+"configuration file by removing any records that are no longer necessary."
+msgstr ""
+"Het commando <literal>clean</literal> schoont de door het opgegeven "
+"configuratiebestand gebruikte gegevensbestanden op door er de niet langer "
+"gebruikte fiches uit te verwijderen."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Generate Configuration"
+msgstr "De configuratie van het generate-commando"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>generate</literal> command uses a configuration file to "
+"describe the archives that are going to be generated. It follows the typical "
+"ISC configuration format as seen in ISC tools like bind 8 and dhcpd. &apt-"
+"conf; contains a description of the syntax. Note that the generate "
+"configuration is parsed in sectional manner, but &apt-conf; is parsed in a "
+"tree manner. This only effects how the scope tag is handled."
+msgstr ""
+"Het commando <literal>generate</literal> gebruikt een configuratiebestand "
+"met de beschrijving van de archieven die gegenereerd moeten worden. Het "
+"gebruikt het typische ISC configuratieformaat dat men aantreft in ISC-"
+"gereedschap zoals bind 8 en dhcpd. &apt-conf; bevat een beschrijving van de "
+"syntaxis. Noteer dat de configuratie van generate per sectie ontleed wordt, "
+"maar dat &apt-conf; per boom ontleed wordt. Dit heeft enkel invloed op de "
+"manier waarop met het bereiklabel omgesprongen wordt."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The generate configuration has four separate sections, each described below."
+msgstr ""
+"De configuratie van generate bevat vier aparte secties die hierna besproken "
+"worden."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Dir</literal> Section"
+msgstr "De sectie <literal>Dir</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Dir</literal> section defines the standard directories needed "
+"to locate the files required during the generation process. These "
+"directories are prepended certain relative paths defined in later sections "
+"to produce a complete an absolute path."
+msgstr ""
+"De sectie <literal>Dir</literal> definieert de standaardmappen waarin men de "
+"bestanden kan lokaliseren die nodig zijn tijdens het maakproces. Deze mappen "
+"worden voorafgegaan door bepaalde relatieve paden die in de volgende secties "
+"gedefinieerd worden om zo een volledig en absoluut pad te bekomen."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the root of the FTP archive, in a standard Debian configuration "
+"this is the directory that contains the <filename>ls-LR</filename> and dist "
+"nodes."
+msgstr ""
+"Geeft de basismap van het FTP-archief op. In een standaardconfiguratie van "
+"Debian is dat de map die de nodes <filename>ls-LR</filename> en dist "
+"bevatten."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the location of the override files."
+msgstr "Geeft de locatie van de override-bestanden op."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the location of the cache files."
+msgstr "Geeft de locatie van de cachebestanden op."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the location of the file list files, if the <literal>FileList</"
+"literal> setting is used below."
+msgstr ""
+"Geeft de locatie van de bestandenlijst-bestanden op, indien de instelling "
+"<literal>FileList</literal> hieronder gebruikt wordt."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Default</literal> Section"
+msgstr "De sectie <literal>Default</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Default</literal> section specifies default values, and "
+"settings that control the operation of the generator. Other sections may "
+"override these defaults with a per-section setting."
+msgstr ""
+"De sectie <literal>Default</literal> geeft standaardwaarden en instellingen "
+"op die de werking van de generator besturen. Andere secties kunnen deze "
+"standaardwaarden overschrijven met een sectiegebonden instelling."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default compression schemes to use for the package index files. It "
+"is a string that contains a space separated list of at least one of the "
+"compressors configured via the <option>APT::Compressor</option> "
+"configuration scope. The default for all compression schemes is '. gzip'."
+msgstr ""
+"Stelt het standaard compressieschema in dat voor de pakketindexbestanden "
+"gebruikt wordt. Het is een tekenreeks die bestaat uit een door spaties "
+"gescheiden lijst van minstens een van de compressieprogramma's die via het "
+"configuratiebereik <option>APT::Compressor</option> geconfigureerd zijn. "
+"Voor alle compressieschema's is de standaardinstelling '. gzip'."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default list of file extensions that are package files. This "
+"defaults to '.deb'."
+msgstr ""
+"Stelt in wat de lijst is van bestandsextensies die er standaard op wijzen "
+"dat het pakketbestanden betreft. Dit is standaard ingesteld op '.deb'."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Sources files."
+msgstr ""
+"Dit is gelijkaardig aan <literal>Packages::Compress</literal>, behalve dat "
+"het de compressie van de Sources-bestanden regelt."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default list of file extensions that are source files. This "
+"defaults to '.dsc'."
+msgstr ""
+"Stelt in wat de lijst is van bestandsextensies die er standaard op wijzen "
+"dat het broncodebestanden betreft. Dit is standaard ingesteld op '.dsc'."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Contents files."
+msgstr ""
+"Dit is gelijkaardig aan <literal>Packages::Compress</literal>, behalve dat "
+"het de compressie van de Contents-bestanden regelt."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Translation-en master file."
+msgstr ""
+"Dit is gelijkaardig aan <literal>Packages::Compress</literal>, behalve dat "
+"het de compressie van het Translation-en hoofdbestand regelt."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the number of kilobytes to delink (and replace with hard links) "
+"per run. This is used in conjunction with the per-section <literal>External-"
+"Links</literal> setting."
+msgstr ""
+"Geeft het aantal kilobytes op dat per doorloop ontkoppeld (en vervangen door "
+"harde koppelingen) moet worden. Dit wordt gebruikt in samenhang met de "
+"sectiegebonden instelling <literal>External-Links</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the mode of all created index files. It defaults to 0644. All "
+"index files are set to this mode with no regard to the umask."
+msgstr ""
+"Stelt de modus in van alle aangemaakte indexbestanden. Standaard is dit "
+"ingesteld op 0644. Alle indexbestanden worden op deze modus ingesteld "
+"ongeacht het umask."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies whether long descriptions should be included in the "
+"<filename>Packages</filename> file or split out into a master "
+"<filename>Translation-en</filename> file."
+msgstr ""
+"Stelt in of de gedetailleerde beschrijvingen moeten opgenomen worden in het "
+"<filename>Packages</filename>-bestand of afgesplitst en in een "
+"<filename>Translation-en</filename> hoofdbestand moeten geplaatst worden."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>TreeDefault</literal> Section"
+msgstr "De sectie <literal>TreeDefault</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets defaults specific to <literal>Tree</literal> sections. All of these "
+"variables are substitution variables and have the strings $(DIST), "
+"$(SECTION) and $(ARCH) replaced with their respective values."
+msgstr ""
+"Stelt standaarden in die specifiek zijn voor de secties <literal>Tree</"
+"literal>. Al deze variabelen zijn substitutievariabelen waarbij de "
+"tekenreeksen $(DIST), $(SECTION) en $(ARCH) vervangen worden door hun "
+"respectieve waarden."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the number of kilobytes of contents files that are generated each day. "
+"The contents files are round-robined so that over several days they will all "
+"be rebuilt."
+msgstr ""
+"Stelt in voor welk aantal kilobytes er iedere dag contents-bestanden "
+"gegenereerd worden. Contents-bestanden komen een na een aan de beurt, zodat "
+"ze over een periode van een aantal dagen allemaal opnieuw gebouwd worden."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Controls the number of days a contents file is allowed to be checked without "
+"changing. If this limit is passed the mtime of the contents file is updated. "
+"This case can occur if the package file is changed in such a way that does "
+"not result in a new contents file [override edit for instance]. A hold off "
+"is allowed in hopes that new .debs will be installed, requiring a new file "
+"anyhow. The default is 10, the units are in days."
+msgstr ""
+"Regelt het aantal dagen dat een contents-bestand mag gebruikt worden zonder "
+"dat het gewijzigd werd. Indien die limiet overschreden wordt, zal het mtime "
+"van het contents-bestand bijgewerkt worden. Een dergelijke situatie kan zich "
+"voordoen als het pakketbestand op zo een manier gewijzigd wordt dat het niet "
+"resulteert in een nieuw contents-bestand [bijvoorbeeld een wijziging aan "
+"override]. Uitstel is toegelaten als gehoopt mag worden dat nieuwe .deb-"
+"bestanden geïnstalleerd zullen worden wat hoe dan ook een nieuw contents-"
+"bestand vereist. De standaard is 10, waarbij de eenheden in dagen uitgedrukt "
+"worden."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/"
+"$(SECTION)/binary-$(ARCH)/</filename>"
+msgstr ""
+"Stelt de basis van de .deb-mappenboom in. Standaard is dat <filename>$(DIST)/"
+"$(SECTION)/binary-$(ARCH)/</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the top of the source package directory tree. Defaults to <filename>"
+"$(DIST)/$(SECTION)/source/</filename>"
+msgstr ""
+"Stelt de basis in van de mappenboom van broncodepakketten. Standaard is dat "
+"<filename>$(DIST)/$(SECTION)/source/</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Packages file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"binary-$(ARCH)/Packages</filename>"
+msgstr ""
+"Stelt in waar het Packages-bestand geschreven wordt. Standaard is dat "
+"<filename>$(DIST)/$(SECTION)/binary-$(ARCH)/Packages</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Sources file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"source/Sources</filename>"
+msgstr ""
+"Stelt in waar het Sources-bestand geschreven wordt. Standaard is dat "
+"<filename>$(DIST)/$(SECTION)/source/Sources</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Translation-en master file with the long descriptions if "
+"they should be not included in the Packages file. Defaults to <filename>"
+"$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+msgstr ""
+"Stelt in waar het hoofdbestand Translation-en geschreven wordt met daarin de "
+"uitgebreide beschrijvingen in het geval die niet in het bestand Packages "
+"opgenomen werden. De standaard is <filename>$(DIST)/$(SECTION)/i18n/"
+"Translation-en</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the path prefix that causes a symlink to be considered an internal link "
+"instead of an external link. Defaults to <filename>$(DIST)/$(SECTION)/</"
+"filename>"
+msgstr ""
+"Stelt het pad-prefix in dat regelt wanneer een symbolische koppeling als een "
+"interne en niet als een externe koppeling beschouwd moet worden. De "
+"standaard is <filename>$(DIST)/$(SECTION)/</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Contents file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"Contents-$(ARCH)</filename>. If this setting causes multiple Packages files "
+"to map onto a single Contents file (as is the default) then <command>apt-"
+"ftparchive</command> will integrate those package files together "
+"automatically."
+msgstr ""
+"Stelt in waar het Contents-bestand geschreven wordt. De standaard is "
+"<filename>$(DIST)/$(SECTION)/Contents-$(ARCH)</filename>. Indien deze "
+"instelling ertoe leidt dat meerdere Packages-bestanden horen bij een enkel "
+"Contents-bestand (wat standaard het geval is), dan zal <command>apt-"
+"ftparchive</command> deze pakketbestanden automatisch tot een geheel "
+"integreren."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets header file to prepend to the contents output."
+msgstr ""
+"Stelt het koptekstbestand in dat aan het begin van het aangemaakte contents-"
+"bestand moet komen."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the binary cache database to use for this section. Multiple sections "
+"can share the same database."
+msgstr ""
+"Stelt de binaire database in om als cache te dienen voor deze sectie. "
+"Meerdere secties kunnen gebruik maken van dezelfde database."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies that instead of walking the directory tree, <command>apt-"
+"ftparchive</command> should read the list of files from the given file. "
+"Relative files names are prefixed with the archive directory."
+msgstr ""
+"Stelt in dat <command>apt-ftparchive</command> de lijst van bestanden moet "
+"halen uit het opgegeven bestand en niet moet opmaken aan de hand van het "
+"doorlopen van de mappenboom. De archiefmap wordt als prefix aan relatieve "
+"bestandsnamen toegevoegd."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies that instead of walking the directory tree, <command>apt-"
+"ftparchive</command> should read the list of files from the given file. "
+"Relative files names are prefixed with the archive directory. This is used "
+"when processing source indexes."
+msgstr ""
+"Stelt in dat <command>apt-ftparchive</command> de lijst van bestanden moet "
+"halen uit het opgegeven bestand en niet moet opmaken aan de hand van het "
+"doorlopen van de mappenboom. De archiefmap wordt als prefix aan relatieve "
+"bestandsnamen toegevoegd. Dit wordt gebruikt bij het verwerken van broncode-"
+"indexen."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Tree</literal> Section"
+msgstr "De sectie <literal>Tree</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Tree</literal> section defines a standard Debian file tree "
+"which consists of a base directory, then multiple sections in that base "
+"directory and finally multiple Architectures in each section. The exact "
+"pathing used is defined by the <literal>Directory</literal> substitution "
+"variable."
+msgstr ""
+"De sectie <literal>Tree</literal> definieert een standaard bestandsboom voor "
+"Debian die bestaat uit een basismap met daarin dan meerdere secties en "
+"binnen elke sessie tenslotte meerdere architecturen. Het exacte pad dat "
+"gebruikt wordt, wordt gedefinieerd door de substitutievariabele "
+"<literal>Directory</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Tree</literal> section takes a scope tag which sets the "
+"<literal>$(DIST)</literal> variable and defines the root of the tree (the "
+"path is prefixed by <literal>ArchiveDir</literal>). Typically this is a "
+"setting such as <filename>dists/&debian-stable-codename;</filename>."
+msgstr ""
+"De sectie <literal>Tree</literal> werkt met een bereiklabel dat de variabele "
+"<literal>$(DIST)</literal> instelt en de basis van de boomstructuur "
+"definieert (vooraan aan het pad wordt <literal>ArchiveDir</literal> "
+"toegevoegd). Doorgaans is dat een instelling zoals <filename>dists/&debian-"
+"stable-codename;</filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"All of the settings defined in the <literal>TreeDefault</literal> section "
+"can be used in a <literal>Tree</literal> section as well as three new "
+"variables."
+msgstr ""
+"Alle in de sectie <literal>TreeDefault</literal> gedefinieerde instellingen "
+"kunnen ook in een <literal>Tree</literal>-sectie gebruikt worden evenals "
+"drie nieuwe variabelen."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid ""
+"for i in Sections do \n"
+" for j in Architectures do\n"
+" Generate for DIST=scope SECTION=i ARCH=j\n"
+" "
+msgstr ""
+"for i in Sections do \n"
+" for j in Architectures do\n"
+" Generate for DIST=scope SECTION=i ARCH=j\n"
+" "
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"When processing a <literal>Tree</literal> section <command>apt-ftparchive</"
+"command> performs an operation similar to: <placeholder type=\"programlisting"
+"\" id=\"0\"/>"
+msgstr ""
+"Als <command>apt-ftparchive</command> een <literal>Tree</literal>-sectie "
+"verwerkt, voert het een operatie uit die vergelijkbaar is met: <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is a space separated list of sections which appear under the "
+"distribution; typically this is something like <literal>main contrib non-"
+"free</literal>"
+msgstr ""
+"Dit is een door spaties gescheiden lijst van secties die onder de "
+"distributie te vinden zijn. Doorgaans is dat iets zoals <literal>main "
+"contrib non-free</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is a space separated list of all the architectures that appear under "
+"search section. The special architecture 'source' is used to indicate that "
+"this tree has a source archive. The architecture 'all' signals that "
+"architecture specific files like <filename>Packages</filename> should not "
+"include information about architecture <literal>all</literal> packages in "
+"all files as they will be available in a dedicated file."
+msgstr ""
+"Dit is een met spaties gescheiden lijst van alle architecturen die voorkomen "
+"onder de sectie waarin gezocht wordt. De bijzondere architectuur 'source' "
+"wordt gebruikt om aan te geven dat deze boomstructuur een archief met "
+"broncode bevat. De architectuur 'all' signaleert dat architectuurspecifieke "
+"bestanden zoals <filename>Packages</filename>, niet telkens in elk bestand "
+"informatie moeten opnemen over pakketten van het architectuurtype "
+"<literal>all</literal>, aangezien die te vinden is in een specifiek bestand."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the binary override file. The override file contains section, priority "
+"and maintainer address information."
+msgstr ""
+"Stelt het binaire override-bestand in. Het override-bestand bevat informatie "
+"over sectie, prioriteit en het adres van de onderhouder."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the source override file. The override file contains section "
+"information."
+msgstr ""
+"Stelt het override-bestand van de broncode in. Het override-bestand bevat "
+"informatie over de sectie."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the binary extra override file."
+msgstr "Stelt het binaire extra override-bestand in."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the source extra override file."
+msgstr "Stelt het extra override-bestand van de broncode in."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>BinDirectory</literal> Section"
+msgstr "De sectie <literal>BinDirectory</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>bindirectory</literal> section defines a binary directory tree "
+"with no special structure. The scope tag specifies the location of the "
+"binary directory and the settings are similar to the <literal>Tree</literal> "
+"section with no substitution variables or <literal>Section</"
+"literal><literal>Architecture</literal> settings."
+msgstr ""
+"De sectie <literal>bindirectory</literal> definieert een binaire mappenboom "
+"zonder bijzondere structuur. Het bereiklabel specificeert de locatie van de "
+"binaire map en de instellingen zijn gelijkaardig aan die van de sectie "
+"<literal>Tree</literal> zonder substitutievariabelen of instellingen van het "
+"type <literal>Section</literal><literal>Architecture</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the Packages file output."
+msgstr "Stelt in waar het Packages-bestand aangemaakt wordt."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the Sources file output. At least one of <literal>Packages</literal> or "
+"<literal>Sources</literal> is required."
+msgstr ""
+"Stelt in waar het Sources-bestand aangemaakt wordt. Er is minstens een "
+"bestand <literal>Packages</literal> of <literal>Sources</literal> vereist."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the Contents file output (optional)."
+msgstr "Stelt in waar het Contents-bestand aangemaakt wordt (optioneel)."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the binary override file."
+msgstr "Stelt het binaire override-bestand in."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the source override file."
+msgstr "Stelt het override-bestand voor de broncode in."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the cache DB."
+msgstr "Stelt de cache database in."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Appends a path to all the output paths."
+msgstr "Voegt een pad toe aan al de paden van de uitvoer."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the file list file."
+msgstr "Specificeert het bestand met de bestandslijst."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Binary Override File"
+msgstr "Het binaire override-bestand"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The binary override file is fully compatible with &dpkg-scanpackages;. It "
+"contains four fields separated by spaces. The first field is the package "
+"name, the second is the priority to force that package to, the third is the "
+"section to force that package to and the final field is the maintainer "
+"permutation field."
+msgstr ""
+"Het binaire override-bestand is volledig compatibel met &dpkg-scanpackages;. "
+"Het bevat vier door spaties gescheiden velden. Het eerste veld bevat de "
+"pakketnaam, het tweede bevat de prioriteit die aan dat pakket gegeven moet "
+"worden, het derde bevat de sectie waarin dat pakket geplaatst moet worden en "
+"het laatste veld is voorbehouden voor het opgeven van een vervangende "
+"onderhouder."
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "old [// oldn]* => new"
+msgstr "oude [// ouden]* => nieuwe"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "new"
+msgstr "nieuwe"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The general form of the maintainer field is: <placeholder type="
+"\"literallayout\" id=\"0\"/> or simply, <placeholder type=\"literallayout\" "
+"id=\"1\"/> The first form allows a double-slash separated list of old email "
+"addresses to be specified. If any of those are found then new is substituted "
+"for the maintainer field. The second form unconditionally substitutes the "
+"maintainer field."
+msgstr ""
+"De algemene vorm van het onderhouder-veld is: <placeholder type="
+"\"literallayout\" id=\"0\"/>, of gewoon <placeholder type=\"literallayout\" "
+"id=\"1\"/> De eerste vorm laat toe om een lijst van oude e-mailadressen, van "
+"elkaar gescheiden door een dubbele slash, op te geven. Indien een ervan "
+"aangetroffen wordt, dan zal nieuw als de nieuwe waarde voor het onderhouder-"
+"veld gebruikt worden. De tweede vorm vervangt onvoorwaardelijk de inhoud van "
+"het onderhouder-veld."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Source Override File"
+msgstr "Het override-bestand voor broncode"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The source override file is fully compatible with &dpkg-scansources;. It "
+"contains two fields separated by spaces. The first field is the source "
+"package name, the second is the section to assign it."
+msgstr ""
+"Het override-bestand voor broncode is volledig compatibel met &dpkg-"
+"scansources;. Het bestaat uit twee velden die van elkaar gescheiden worden "
+"door een spatie. Het eerste veld bevat de naam van het broncodepakket en het "
+"tweede de sectie waartoe het moet behoren."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Extra Override File"
+msgstr "Het extra override-bestand"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The extra override file allows any arbitrary tag to be added or replaced in "
+"the output. It has three columns, the first is the package, the second is "
+"the tag and the remainder of the line is the new value."
+msgstr ""
+"Het extra override-bestand maakt het mogelijk om gelijk welk arbitrair label "
+"toe te voegen of te vervangen in de uitvoer. Het bestaat uit drie kolommen. "
+"In de eerste staat het pakket vermeld, in de tweede het label en de rest van "
+"de regel bevat de nieuwe waarde die eraan toegekend wordt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Generate the given checksum. These options default to on, when turned off "
+"the generated index files will not have the checksum fields where possible. "
+"Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</"
+"replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</"
+"replaceable>::<replaceable>Checksum</replaceable></literal> where "
+"<literal><replaceable>Index</replaceable></literal> can be "
+"<literal>Packages</literal>, <literal>Sources</literal> or <literal>Release</"
+"literal> and <literal><replaceable>Checksum</replaceable></literal> can be "
+"<literal>MD5</literal>, <literal>SHA1</literal>, <literal>SHA256</literal> "
+"or <literal>SHA512</literal>."
+msgstr ""
+"De vermelde controlesom genereren. Standaard staan deze opties aan. Indien "
+"ze uitgezet worden, dan zal het aangemaakte indexbestand zo mogelijk geen "
+"velden voor de controlesom bevatten. Configuratie-items: <literal>APT::"
+"FTPArchive::<replaceable>Checksum</replaceable></literal> en <literal>APT::"
+"FTPArchive::<replaceable>Index</replaceable>::<replaceable>Checksum</"
+"replaceable></literal> waarbij <literal><replaceable>Index</replaceable></"
+"literal> kan bestaan uit <literal>Packages</literal>, <literal>Sources</"
+"literal> of <literal>Release</literal> en <literal><replaceable>Checksum</"
+"replaceable></literal> kan bestaan uit <literal>MD5</literal>, "
+"<literal>SHA1</literal>, <literal>SHA256</literal> of <literal>SHA512</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Use a binary caching DB. This has no effect on the generate command. "
+"Configuration Item: <literal>APT::FTPArchive::DB</literal>."
+msgstr ""
+"Een bufferende binaire database gebruiken. Dit heeft geen invloed op het "
+"commando generate. Configuratie-item: <literal>APT::FTPArchive::DB</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+"Stille modus. Door het weglaten van de voortgangsindicatie produceert dit "
+"uitvoer die geschikt is om opgeslagen te worden in een logbestand. Meer q's, "
+"met een maximum van 2, resulteren in een verhoogde stille modus. U kunt ook "
+"<option>-q=#</option> gebruiken om het niveau van de stille modus in te "
+"stellen en op die manier het configuratiebestand te overschrijven. "
+"Configuratie-item: <literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Perform Delinking. If the <literal>External-Links</literal> setting is used "
+"then this option actually enables delinking of the files. It defaults to on "
+"and can be turned off with <option>--no-delink</option>. Configuration "
+"Item: <literal>APT::FTPArchive::DeLinkAct</literal>."
+msgstr ""
+"Ontkoppelingen uitvoeren. Indien de instelling <literal>External-Links</"
+"literal> gebruikt wordt, dan maakt deze optie het eigenlijk mogelijk om de "
+"bestanden te ontkoppelen. Standaard staat dit aangezet en het kan uitgezet "
+"worden met <option>--no-delink</option>. Configuratie-item: <literal>APT::"
+"FTPArchive::DeLinkAct</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Perform contents generation. When this option is set and package indexes are "
+"being generated with a cache DB then the file listing will also be extracted "
+"and stored in the DB for later use. When using the generate command this "
+"option also allows the creation of any Contents files. The default is on. "
+"Configuration Item: <literal>APT::FTPArchive::Contents</literal>."
+msgstr ""
+"Het aanmaken van het contents-bestand uitvoeren. Indien deze optie aangezet "
+"wordt en de pakketindexen gegenereerd worden met een bufferende database, "
+"dan zal ook de bestandslijst geëxtraheerd worden en voor later gebruik in de "
+"database opgeslagen worden. Als het commando generate gebruikt wordt, laat "
+"deze optie ook toe om Contents-bestanden aan te maken. Standaard staat dit "
+"aangezet. Configuratie-item: <literal>APT::FTPArchive::Contents</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Select the source override file to use with the <literal>sources</literal> "
+"command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</"
+"literal>."
+msgstr ""
+"Het override-bestand voor broncode selecteren om met het commando "
+"<literal>sources</literal> te gebruiken. Configuratie-item: <literal>APT::"
+"FTPArchive::SourceOverride</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Make the caching databases read only. Configuration Item: <literal>APT::"
+"FTPArchive::ReadOnlyDB</literal>."
+msgstr ""
+"De bufferende databases alleen lezen maken. Configuration Item: "
+"<literal>APT::FTPArchive::ReadOnlyDB</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Accept in the <literal>packages</literal> and <literal>contents</literal> "
+"commands only package files matching <literal>*_arch.deb</literal> or "
+"<literal>*_all.deb</literal> instead of all package files in the given "
+"path. Configuration Item: <literal>APT::FTPArchive::Architecture</literal>."
+msgstr ""
+"Voor de commando's <literal>packages</literal> en <literal>contents</"
+"literal> enkel pakketbestanden toelaten die overeenkomen met <literal>*_arch."
+"deb</literal> of <literal>*_all.deb</literal> in plaats van alle "
+"pakketbestanden in het opgegeven pad. Configuratie-item: <literal>APT::"
+"FTPArchive::Architecture</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"&apt-ftparchive; caches as much as possible of metadata in a cachedb. If "
+"packages are recompiled and/or republished with the same version again, this "
+"will lead to problems as the now outdated cached metadata like size and "
+"checksums will be used. With this option enabled this will no longer happen "
+"as it will be checked if the file was changed. Note that this option is set "
+"to \"<literal>false</literal>\" by default as it is not recommend to upload "
+"multiply versions/builds of a package with the same versionnumber, so in "
+"theory nobody will have these problems and therefore all these extra checks "
+"are useless."
+msgstr ""
+"&apt-ftparchive; buffert zoveel mogelijk metadata in een bufferende "
+"database. Indien er pakketten opnieuw gebouwd en/of uitgebracht worden met "
+"dezelfde versie, zal dit tot problemen leiden, aangezien de dan verouderde "
+"maar in de buffer aanwezige metadata, zoals grootte en controlesommen, "
+"gebruikt zullen worden. Indien deze optie aangezet wordt, zal dit niet meer "
+"gebeuren, vermits gecontroleerd zal worden of het bestand gewijzigd werd. "
+"Noteer dat deze optie standaard ingesteld staat op \"<literal>false</literal>"
+"\" (uit), omdat het niet aangewezen is om meerdere versies/bouwversies van "
+"een pakket met hetzelfde versienummer te uploaden. In theorie zal dus "
+"niemand met deze problemen geconfronteerd worden en daarom zijn al deze "
+"extra controles nutteloos."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This configuration option defaults to \"<literal>true</literal>\" and should "
+"only be set to <literal>\"false\"</literal> if the Archive generated with "
+"&apt-ftparchive; also provides <filename>Translation</filename> files. Note "
+"that the <filename>Translation-en</filename> master file can only be created "
+"in the generate command."
+msgstr ""
+"Deze configuratieoptie staat standaard ingesteld op \"<literal>true</literal>"
+"\" (aan) en zou enkel moeten ingesteld worden op <literal>\"false\"</"
+"literal> (uit) indien het archief dat met &apt-ftparchive; gegenereerd wordt "
+"ook <filename>Translation</filename>-bestanden bevat. Merk op dat het "
+"hoofdbestand <filename>Translation-en</filename> enkel aangemaakt kan worden "
+"via het commando generate."
+
+#. type: Content of: <refentry><refsect1><para><programlisting>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n"
+msgstr "<command>apt-ftparchive</command> pakketten <replaceable>map</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"To create a compressed Packages file for a directory containing binary "
+"packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Om voor een map met binaire pakketten (.deb) een gecomprimeerd Packages-"
+"bestand aan te maken: <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+"<command>apt-ftparchive</command> geeft de terugkeerwaarde nul bij een "
+"normaal verlopen operatie, het decimaal getal 100 in geval van een fout."
+
+#. type: Attribute 'lang' of: <book>
+#: guide.dbk offline.dbk
+msgid "en"
+msgstr "nl"
+
+#. type: Content of: <book><title>
+#: guide.dbk
+msgid "APT User's Guide"
+msgstr "Gebruikershandleiding voor APT"
+
+#. type: Content of: <book><bookinfo><authorgroup><author><personname>
+#: guide.dbk offline.dbk
+msgid "Jason Gunthorpe"
+msgstr "Jason Gunthorpe"
+
+#. type: Content of: <book><bookinfo><authorgroup><author><email>
+#: guide.dbk offline.dbk
+msgid "jgg@debian.org"
+msgstr "jgg@debian.org"
+
+#. type: Content of: <book><bookinfo><releaseinfo>
+#: guide.dbk offline.dbk
+msgid "Version &apt-product-version;"
+msgstr "Versie &apt-product-version;"
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: guide.dbk
+msgid ""
+"This document provides an overview of how to use the APT package manager."
+msgstr ""
+"Dit document geeft een overzicht van het gebruik van de pakketmanager APT."
+
+#. type: Content of: <book><bookinfo>
+#: guide.dbk
+msgid ""
+"<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+"<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>"
+
+#. type: Content of: <book><bookinfo><legalnotice><title>
+#: guide.dbk offline.dbk
+msgid "License Notice"
+msgstr "Toelichting bij de licentie"
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk offline.dbk
+msgid ""
+"\"APT\" and this document are free software; you can redistribute them and/"
+"or modify them under the terms of the GNU General Public License as "
+"published by the Free Software Foundation; either version 2 of the License, "
+"or (at your option) any later version."
+msgstr ""
+"\"APT\" en dit document zijn vrije software. U kunt ze verspreiden en/of ze "
+"aanpassen overeenkomstig de bepalingen van de GNU General Public License, "
+"versie 2 of (volgens uw keuze) iedere latere versie, zoals die door de Free "
+"Software Foundation gepubliceerd werd. "
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk offline.dbk
+msgid ""
+"For more details, on Debian systems, see the file /usr/share/common-licenses/"
+"GPL for the full license."
+msgstr ""
+"Meer details en de volledige licentie vindt u op Debian-systemen in het "
+"bestand /usr/share/common-licenses/GPL."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "General"
+msgstr "Algemeen"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The APT package currently contains two sections, the APT <command>dselect</"
+"command> method and the <command>apt-get</command> command line user "
+"interface. Both provide a way to install and remove packages as well as "
+"download new packages from the Internet."
+msgstr ""
+"Momenteel bevat het APT-pakket twee secties, de <command>dselect</command>-"
+"methode van APT en het commandoregelprogramma <command>apt-get</command>. "
+"Beide bieden een manier om pakketten te installeren en te verwijderen en "
+"nieuwe pakketten via het internet op te halen."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Anatomy of the Package System"
+msgstr "Anatomie van het pakketsysteem"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The Debian packaging system has a large amount of information associated "
+"with each package to help assure that it integrates cleanly and easily into "
+"the system. The most prominent of its features is the dependency system."
+msgstr ""
+"Het pakketsysteem van Debian maakt gebruik van een grote hoeveelheid aan "
+"informatie over elk pakket om te helpen verzekeren dat het eenvoudig en "
+"netjes in het systeem ingepast kan worden. Het meest prominente aspect van "
+"zijn functionaliteit is het vereistensysteem."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The dependency system allows individual programs to make use of shared "
+"elements in the system such as libraries. It simplifies placing infrequently "
+"used portions of a program in separate packages to reduce the number of "
+"things the average user is required to install. Also, it allows for choices "
+"in mail transport agents, X servers and so on."
+msgstr ""
+"Het vereistensysteem laat individuele programma's toe om gebruik te maken "
+"van gemeenschappelijke elementen uit het systeem, zoals bibliotheken. Het "
+"vereenvoudigt het onderbrengen van weinig gebruikte aspecten van een "
+"programma in aparte pakketten om het aantal zaken dat een gewone gebruiker "
+"moet installeren, te beperken. Het laat ook toe te kiezen uit verschillende "
+"mailservers (mail transport agents), X-servers, enz."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The first step to understanding the dependency system is to grasp the "
+"concept of a simple dependency. The meaning of a simple dependency is that a "
+"package requires another package to be installed at the same time to work "
+"properly."
+msgstr ""
+"Een eerste stap in het begrijpen van het vereistensysteem is het concept van "
+"een eenvoudige vereiste vatten. Een eenvoudige vereiste houdt in dat een "
+"pakket om behoorlijk te kunnen functioneren, vereist dat een ander pakket "
+"gelijktijdig geïnstalleerd wordt."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"For instance, mailcrypt is an emacs extension that aids in encrypting email "
+"with GPG. Without GPGP installed mailcrypt is useless, so mailcrypt has a "
+"simple dependency on GPG. Also, because it is an emacs extension it has a "
+"simple dependency on emacs, without emacs it is completely useless."
+msgstr ""
+"Bijvoorbeeld, mailcrypt is een emacs-uitbreiding die helpt bij het "
+"versleutelen van e-mail met GPG. Zonder dat GPG geïnstalleerd is, is "
+"mailcrypt nutteloos. Dus is mailcrypt afhankelijk van GPG (en is GPG een "
+"vereiste voor mailcrypt). Omdat mailcrypt een uitbreiding van emacs is, is "
+"het bovendien ook daarvan afhankelijk. Zonder emacs is het gewoon "
+"onbruikbaar."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The other important dependency to understand is a conflicting dependency. It "
+"means that a package, when installed with another package, will not work and "
+"may possibly be extremely harmful to the system. As an example consider a "
+"mail transport agent such as sendmail, exim or qmail. It is not possible to "
+"have two mail transport agents installed because both need to listen to the "
+"network to receive mail. Attempting to install two will seriously damage the "
+"system so all mail transport agents have a conflicting dependency with all "
+"other mail transport agents."
+msgstr ""
+"Een andere belangrijke afhankelijkheid die u goed moet begrijpen is een "
+"conflicterende afhankelijkheid. Dit houdt in dat een pakket, mocht het "
+"tegelijk met een ander pakket geïnstalleerd zijn, niet zal werken en "
+"misschien zelfs heel schadelijk voor het systeem kan zijn. Neem bijvoorbeeld "
+"een mail transport agent (mailserver) zoals sendmail, exim of qmail. Het is "
+"niet mogelijk om er twee van te installeren, omdat ze allemaal op het "
+"netwerk moeten luisteren om mail te ontvangen. Mocht men er toch twee "
+"proberen te installeren, dan zou het systeem ernstig beschadigd raken en om "
+"die reden hebben alle mail transport agents een conflictafhankelijkheid "
+"tegenover alle andere mail transport agents."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"As an added complication there is the possibility for a package to pretend "
+"to be another package. Consider that exim and sendmail for many intents are "
+"identical, they both deliver mail and understand a common interface. Hence, "
+"the package system has a way for them to declare that they are both mail-"
+"transport-agents. So, exim and sendmail both declare that they provide a "
+"mail-transport-agent and other packages that need a mail transport agent "
+"depend on mail-transport-agent. This can add a great deal of confusion when "
+"trying to manually fix packages."
+msgstr ""
+"Een bijkomende complicatie is dat de mogelijkheid bestaat dat een pakket "
+"zich als een ander pakket voordoet. Bedenk dat exim en sendmail voor vele "
+"doeleinden identiek zijn: allebei bezorgen ze e-mail en allebei kunnen ze "
+"overweg met een gemeenschappelijke interface. Daarom voorziet het "
+"pakketsysteem voor hen in de mogelijkheid om te verklaren dat ze allebei "
+"mail-transport-agents zijn. Dus verklaren exim en sendmail allebei dat ze "
+"een mail-transport-agent aanbieden. En andere pakketten die een mail "
+"transport agent nodig hebben, hebben mail-transport-agent als vereiste. Bij "
+"het manueel proberen repareren van pakketten kan dit tot heel wat verwarring "
+"leiden."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"At any given time a single dependency may be met by packages that are "
+"already installed or it may not be. APT attempts to help resolve dependency "
+"issues by providing a number of automatic algorithms that help in selecting "
+"packages for installation."
+msgstr ""
+"Aan een eenvoudige vereiste kan op elk moment al dan niet voldaan worden "
+"door pakketten die reeds geïnstalleerd zijn. APT probeert te helpen bij het "
+"oplossen van vereistenproblemen door een aantal automatische algoritmes aan "
+"te bieden die helpen bij het selecteren van te installeren pakketten."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "apt-get"
+msgstr "apt-get"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"<command>apt-get</command> provides a simple way to install packages from "
+"the command line. Unlike <command>dpkg</command>, <command>apt-get</command> "
+"does not understand .deb files, it works with the package's proper name and "
+"can only install .deb archives from a <emphasis>Source</emphasis>."
+msgstr ""
+"<command>apt-get</command> biedt een eenvoudige manier om aan de "
+"commandoregel pakketten te installeren. Anders dan <command>dpkg</command> "
+"beheerst <command>apt-get</command> niet het behandelen van .deb-bestanden. "
+"Het werkt met de eigenlijke naam van het pakket en kan enkel .deb-archieven "
+"installeren vanuit een <emphasis>Source</emphasis> (pakketbron)."
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk
+msgid ""
+"If you are using an http proxy server you must set the http_proxy "
+"environment variable first, see sources.list(5)"
+msgstr ""
+"Indien u van een http proxy-server gebruik maakt, moet u eerst de "
+"omgevingsvariabele http_proxy instellen; zie sources.list(5)"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The first <placeholder type=\"footnote\" id=\"0\"/> thing that should be "
+"done before using <command>apt-get</command> is to fetch the package lists "
+"from the <emphasis>Sources</emphasis> so that it knows what packages are "
+"available. This is done with <literal>apt-get update</literal>. For instance,"
+msgstr ""
+"Het eerste <placeholder type=\"footnote\" id=\"0\"/> wat men moet doen "
+"vooraleer <command>apt-get</command> te gebruiken, is de pakketlijst ophalen "
+"uit de <emphasis>Sources</emphasis> (pakketbronnen), zodat het op de hoogte "
+"is van de beschikbare pakketten. Dit doet men met <literal>apt-get update</"
+"literal>. Bijvoorbeeld:"
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+"# apt-get update\n"
+"Ophalen van http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Ophalen van http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Pakketlijsten worden ingelezen... Klaar\n"
+"Boom van vereisten wordt opgebouwd... Klaar\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid "Once updated there are several commands that can be used:"
+msgstr ""
+"Na het bijwerken van de pakketlijst kunnen verschillende commando's gebruikt "
+"worden."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "upgrade"
+msgstr "upgrade"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Upgrade will attempt to gently upgrade the whole system. Upgrade will never "
+"install a new package or remove an existing package, nor will it ever "
+"upgrade a package that might cause some other package to break. This can be "
+"used daily to relatively safely upgrade the system. Upgrade will list all of "
+"the packages that it could not upgrade, this usually means that they depend "
+"on new packages or conflict with some other package. <command>dselect</"
+"command> or <literal>apt-get install</literal> can be used to force these "
+"packages to install."
+msgstr ""
+"Upgrade zal proberen om op een gematigde manier het hele systeem bij te "
+"werken. Upgrade zal nooit een nieuw pakket installeren of een bestaand "
+"pakket verwijderen en het zal ook nooit een pakket bijwerken dat een ander "
+"pakket onbruikbaar zou kunnen maken. Dit commando kan dagelijks gebruikt "
+"worden om het systeem veilig bij te werken. Upgrade zal alle pakketten die "
+"het niet kon bijwerken vermelden. Gewoonlijk betekent dit dat zij "
+"afhankelijk zijn van nieuwe pakketten of conflicteren met een ander pakket. "
+"Men kan <command>dselect</command> of <literal>apt-get install</literal> "
+"gebruiken om de installatie van deze pakketten af te dwingen."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "install"
+msgstr "install"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Install is used to install packages by name. The package is automatically "
+"fetched and installed. This can be useful if you already know the name of "
+"the package to install and do not want to go into a GUI to select it. Any "
+"number of packages may be passed to install, they will all be fetched. "
+"Install automatically attempts to resolve dependency problems with the "
+"listed packages and will print a summary and ask for confirmation if "
+"anything other than its arguments are changed."
+msgstr ""
+"Install wordt gebruikt om bij naam genoemde pakketten te installeren. Het "
+"pakket wordt automatisch opgehaald en geïnstalleerd. Dit kan nuttig zijn als "
+"u reeds de naam van het te installeren pakket kent en geen GUI wenst te "
+"gebruiken om het te kiezen. Gelijk welk aantal pakketten kan voor "
+"installatie opgegeven worden. Ze zullen allemaal opgehaald worden. Install "
+"zal automatisch proberen om een oplossing te vinden voor de "
+"vereistenproblemen die zich met de opgegeven pakketten stellen, het zal er "
+"een samenvatting van weergeven en om bevestiging vragen indien er nog andere "
+"wijzigingen door te voeren zijn dan de opgegeven argumenten."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "dist-upgrade"
+msgstr "dist-upgrade"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Dist-upgrade is a complete upgrader designed to simplify upgrading between "
+"releases of Debian. It uses a sophisticated algorithm to determine the best "
+"set of packages to install, upgrade and remove to get as much of the system "
+"to the newest release. In some situations it may be desired to use dist-"
+"upgrade rather than spend the time manually resolving dependencies in "
+"<command>dselect</command>. Once dist-upgrade has completed then "
+"<command>dselect</command> can be used to install any packages that may have "
+"been left out."
+msgstr ""
+"Dist-upgrade voert een volledige opwaardering uit en is ontworpen om de "
+"opwaardering tussen verschillende uitgaves van Debian te vergemakkelijken. "
+"Het maakt gebruik van een gesofisticeerd algoritme om de beste combinatie "
+"van pakketten te vinden die geïnstalleerd, opgewaardeerd en verwijderd "
+"moeten worden om op die manier een zo groot mogelijk deel van het systeem op "
+"het niveau van de meest recente uitgave te krijgen. In sommige "
+"omstandigheden kan het aangewezen zijn dist-upgrade te gebruiken in plaats "
+"van zelf tijd te investeren in het manueel oplossen in <command>dselect</"
+"command> van vereistenproblemen. Nadat dist-upgrade zijn operatie beëindigd "
+"heeft, kan men dan <command>dselect</command> gebruiken om eventuele "
+"pakketten die achterwege gelaten werden, te installeren."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"It is important to closely look at what dist-upgrade is going to do, its "
+"decisions may sometimes be quite surprising."
+msgstr ""
+"Het is van belang om van nabij te onderzoeken wat dist-upgrade van plan is "
+"te doen. Zijn keuzes kunnen soms redelijk verrassend zijn."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"<command>apt-get</command> has several command line options that are "
+"detailed in its man page, <citerefentry><refentrytitle>apt-get</"
+"refentrytitle><manvolnum>8</manvolnum></citerefentry>. The most useful "
+"option is <literal>-d</literal> which does not install the fetched files. If "
+"the system has to download a large number of package it would be undesired "
+"to start installing them in case something goes wrong. When <literal>-d</"
+"literal> is used the downloaded archives can be installed by simply running "
+"the command that caused them to be downloaded again without <literal>-d</"
+"literal>."
+msgstr ""
+"Er kunnen met <command>apt-get</command> verschillende commandoregelopties "
+"gebruikt worden die beschreven worden in de man-pagina "
+"<citerefentry><refentrytitle>apt-get</refentrytitle><manvolnum>8</"
+"manvolnum></citerefentry>. De meest bruikbare optie is <literal>-d</literal> "
+"dat de opgehaalde bestanden niet installeert. Indien het systeem een groot "
+"aantal pakketten moet downloaden en er zou iets fout gegaan zijn, dan zou "
+"het onwenselijk zijn dat er met hun installatie begonnen wordt. Als de optie "
+"<literal>-d</literal> gebruikt werd, kan men de opgehaalde archieven "
+"beginnen installeren door gewoon het commando waarmee men ze opgehaald heeft "
+"opnieuw uit te voeren, maar dan zonder de optie <literal>-d</literal>."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "DSelect"
+msgstr "DSelect"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The APT <command>dselect</command> method provides the complete APT system "
+"with the <command>dselect</command> package selection GUI. <command>dselect</"
+"command> is used to select the packages to be installed or removed and APT "
+"actually installs them."
+msgstr ""
+"De APT-methode <command>dselect</command> stelt aan het volledige APT "
+"systeem het GUI <command>dselect</command> ter beschikking voor de selectie "
+"van pakketten. <command>dselect</command> wordt gebruikt om de te "
+"installeren of te verwijderen pakketten te selecteren en APT voert de "
+"eigenlijke operatie uit."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"To enable the APT method you need to select [A]ccess in <command>dselect</"
+"command> and then choose the APT method. You will be prompted for a set of "
+"<emphasis>Sources</emphasis> which are places to fetch archives from. These "
+"can be remote Internet sites, local Debian mirrors or CD-ROMs. Each source "
+"can provide a fragment of the total Debian archive, APT will automatically "
+"combine them to form a complete set of packages. If you have a CD-ROM then "
+"it is a good idea to specify it first and then specify a mirror so that you "
+"have access to the latest bug fixes. APT will automatically use packages on "
+"your CD-ROM before downloading from the Internet."
+msgstr ""
+"Om de APT-methode te activeren moet u in <command>dselect</command> "
+"[T]oegang ([A]ccess) selecteren en dan voor de APT-methode kiezen. Er wordt "
+"dan om een stel <emphasis>Sources</emphasis> (pakketbronnen) gevraagd. Dat "
+"zijn plaatsen waarvandaan archieven opgehaald kunnen worden. Dat kunnen "
+"externe internetsites zijn, lokale spiegelservers van Debian of CD's. Elke "
+"bron kan een fragment van het volledige archief van Debian aanbieden en APT "
+"zal ze automatisch combineren om een volledige set van pakketten samen te "
+"stellen. Indien u een CD gebruikt is het goed om die eerst te vermelden en "
+"daarna een spiegelserver waardoor u ook toegang krijgt tot de meest recente "
+"reparaties van bugs. APT zal automatisch eerst de pakketten van uw CD "
+"gebruiken vooraleer pakketten van het internet te downloaden."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Set up a list of distribution source locations\n"
+"\n"
+" Please give the base URL of the debian distribution.\n"
+" The access schemes I know about are: http file\n"
+"\n"
+" For example:\n"
+" file:/mnt/debian,\n"
+" ftp://ftp.debian.org/debian,\n"
+" http://ftp.de.debian.org/debian,\n"
+"\n"
+"\n"
+" URL [http://llug.sep.bnl.gov/debian]:\n"
+msgstr ""
+" Een lijst van locaties met pakketbronnen voor de distributie instellen\n"
+"\n"
+" Voer het basis-URL van de debian distributie in.\n"
+" Toegangsmethodes waarmee ik kan werken zijn: http file\n"
+"\n"
+" Bijvoorbeeld:\n"
+" file:/mnt/debian,\n"
+" ftp://ftp.debian.org/debian,\n"
+" http://ftp.de.debian.org/debian,\n"
+"\n"
+"\n"
+" URL [http://llug.sep.bnl.gov/debian]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The <emphasis>Sources</emphasis> setup starts by asking for the base of the "
+"Debian archive, defaulting to a HTTP mirror. Next it asks for the "
+"distribution to get."
+msgstr ""
+"Het instellen van de <emphasis>Sources</emphasis> (pakketbronnen) begint met "
+"een vraag naar de basis van het Debian archief, wat standaard een HTTP-"
+"spiegelserver is. Nadien wordt gevraagd welke distributie opgehaald moet "
+"worden."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Please give the distribution tag to get or a path to the\n"
+" package file ending in a /. The distribution\n"
+" tags are typically something like: stable unstable testing non-US\n"
+"\n"
+" Distribution [stable]:\n"
+msgstr ""
+" Voer het label van de op te halen distributie in of een pad\n"
+" naar het pakketbestand dat eindig op een /. Een label van een\n"
+" distributie is typisch iets in de zin van : stable unstable testing non-US\n"
+"\n"
+" Distributie [stable]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The distribution refers to the Debian version in the archive, "
+"<emphasis>stable</emphasis> refers to the latest released version and "
+"<emphasis>unstable</emphasis> refers to the developmental version. "
+"<emphasis>non-US</emphasis> is only available on some mirrors and refers to "
+"packages that contain encryption technology or other things that cannot be "
+"exported from the United States. Importing these packages into the US is "
+"legal however."
+msgstr ""
+"De distributie verwijst naar de versie van Debian in het archief. "
+"<emphasis>stable</emphasis> verwijst naar de recentste uitgebrachte versie "
+"en <emphasis>unstable</emphasis> verwijst naar de versie die ontwikkeld "
+"wordt. <emphasis>non-US</emphasis> is enkel op sommige spiegelservers "
+"beschikbaar en verwijst naar pakketten die encryptietechnologie gebruiken of "
+"andere zaken waarvan de uitvoer uit de Verenigde Staten niet toegelaten is. "
+"Deze pakketten invoeren in de Verenigde Staten is echter wel legaal."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Please give the components to get\n"
+" The components are typically something like: main contrib non-free\n"
+"\n"
+" Components [main contrib non-free]:\n"
+msgstr ""
+" Voer de op te halen componenten in\n"
+" Componenten zijn typisch iets zoals: main contrib non-free\n"
+"\n"
+" Componenten [main contrib non-free]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The components list refers to the list of sub distributions to fetch. The "
+"distribution is split up based on software licenses, main being DFSG free "
+"packages while contrib and non-free contain things that have various "
+"restrictions placed on their use and distribution."
+msgstr ""
+"De lijst met componenten verwijst naar een lijst van sub-distributies die "
+"opgehaald moeten worden. De distributie is onderverdeeld op basis van "
+"softwarelicenties. Daarbij bevat main pakketten die vrij zijn volgens de "
+"DFSG (vrije software richtlijnen van Debian), terwijl pakketten in contrib "
+"en non-free zaken bevatten met restricties op het vlak van gebruik of "
+"verspreiding."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Any number of sources can be added, the setup script will continue to prompt "
+"until you have specified all that you want."
+msgstr ""
+"Gelijk welk aantal pakketbronnen kan opgegeven worden. Het script dat het "
+"instellen ervan begeleidt, zal vragen blijven stellen totdat u alles wat u "
+"wenste ingegeven hebt."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Before starting to use <command>dselect</command> it is necessary to update "
+"the available list by selecting [U]pdate from the menu. This is a superset "
+"of <literal>apt-get update</literal> that makes the fetched information "
+"available to <command>dselect</command>. [U]pdate must be performed even if "
+"<literal>apt-get update</literal> has been run before."
+msgstr ""
+"Vooraleer met het gebruik van <command>dselect</command> te beginnen moet u "
+"de lijst van beschikbare pakketten bijwerken door in het menu te kiezen voor "
+"[B]ijwerken ([U]pdate). Dit is een uitbreiding van <literal>apt-get update</"
+"literal> die de opgehaalde informatie aan <command>dselect</command> "
+"doorgeeft. [B]ijwerken ([U]pdate) moet uitgevoerd worden, zelfs indien "
+"voordien <literal>apt-get update</literal> uitgevoerd werd."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"You can then go on and make your selections using [S]elect and then perform "
+"the installation using [I]nstall. When using the APT method the [C]onfig and "
+"[R]emove commands have no meaning, the [I]nstall command performs both of "
+"them together."
+msgstr ""
+"U kunt dan voortdoen en uw selectie maken met [S]electeer ([S]elect) en "
+"vervolgens de installatie uitvoeren met [I]nstalleren ([I]nstall). Indien u "
+"de APT-methode gebruikt zijn de commando's [C]onfigureer ([C]onfig) en "
+"[V]erwijder ([R]emove) overbodig. Het commando [I]nstalleren ([I]nstall) "
+"voert ze allemaal samen uit."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"By default APT will automatically remove the package (.deb) files once they "
+"have been successfully installed. To change this behavior place "
+"<literal>Dselect::clean \"prompt\";</literal> in /etc/apt/apt.conf."
+msgstr ""
+"Standaard verwijdert APT automatisch de opgehaalde pakketbestanden (.deb) "
+"nadat ze succesvol geïnstalleerd werden. Om dit gedrag aan te passen moet u "
+"<literal>Dselect::clean \"prompt\";</literal> plaatsen in /etc/apt/apt.conf."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "The Interface"
+msgstr "De interface"
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk
+msgid ""
+"The <command>dselect</command> method actually is a set of wrapper scripts "
+"to <command>apt-get</command>. The method actually provides more "
+"functionality than is present in <command>apt-get</command> alone."
+msgstr ""
+"De <command>dselect</command>-methode is eigenlijk een geheel van scripts "
+"die rondom <command>apt-get</command> gebouwd werden. De methode biedt "
+"eigenlijk meer functionaliteit dan aanwezig is in <command>apt-get</command> "
+"alleen."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Both that APT <command>dselect</command> method and <command>apt-get</"
+"command> share the same interface. It is a simple system that generally "
+"tells you what it will do and then goes and does it. <placeholder type="
+"\"footnote\" id=\"0\"/> After printing out a summary of what will happen APT "
+"then will print out some informative status messages so that you can "
+"estimate how far along it is and how much is left to do."
+msgstr ""
+"Zowel de <command>dselect</command>-methode van APT als <command>apt-get</"
+"command> maken gebruik van dezelfde interface. Het is een eenvoudig systeem "
+"dat u in het algemeen zegt wat het van plan is te doen en dan voor de "
+"uitvoering ervan gaat. <placeholder type=\"footnote\" id=\"0\"/> Nadat het "
+"een samenvatting gegeven heeft van wat er zal gebeuren, zal APT een aantal "
+"informatieve statusberichten weergeven, waardoor u kunt inschatten hoe ver "
+"het gevorderd is en hoeveel werk er nog te verrichten is."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Startup"
+msgstr "Opstarten"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Before all operations except update, APT performs a number of actions to "
+"prepare its internal state. It also does some checks of the system's state. "
+"At any time these operations can be performed by running <literal>apt-get "
+"check</literal>."
+msgstr ""
+"Alvorens met een operatie te beginnen, behalve bij update, voert APT een "
+"aantal acties uit om zijn interne status klaar te maken. Het voert ook een "
+"aantal controles uit op de status van het systeem. Op om het even welk "
+"moment kunnen deze operaties uitgevoerd worden door het commando "
+"<literal>apt-get check</literal> uit te voeren."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+"# apt-get check\n"
+"Pakketlijsten worden ingelezen... Klaar (Reading Package Lists... Done)\n"
+"Boom van vereisten wordt opgebouwd... Klaar (Building Dependency Tree... Done)\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The first thing it does is read all the package files into memory. APT uses "
+"a caching scheme so this operation will be faster the second time it is run. "
+"If some of the package files are not found then they will be ignored and a "
+"warning will be printed when apt-get exits."
+msgstr ""
+"Het eerste wat het doet is alle pakketbestanden in het geheugen laden. APT "
+"maakt gebruik van een bufferingsschema, waardoor de operatie sneller zal "
+"verlopen bij een tweede uitvoering. Indien sommige pakketbestanden niet "
+"gevonden worden, zullen ze overgeslagen worden en er zal een waarschuwing "
+"gegeven worden bij het afsluiten van apt-get."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The final operation performs a detailed analysis of the system's "
+"dependencies. It checks every dependency of every installed or unpacked "
+"package and considers if it is OK. Should this find a problem then a report "
+"will be printed out and <command>apt-get</command> will refuse to run."
+msgstr ""
+"De laatste operatie voert een gedetailleerde analyse uit van de "
+"vereistenboom op het systeem. Het voert een controle uit van elke vereiste "
+"van elk geïnstalleerd of uitgepakt pakket en gaat na of die OK is. Mocht "
+"daarbij een probleem ontdekt worden, dan zal een rapport weergegeven worden "
+"en <command>apt-get</command> zal de operatie niet voortzetten."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+"You might want to run 'apt --fix-broken install' to correct these.\n"
+"Sorry, but the following packages have unmet dependencies:\n"
+" 9fonts: Depends: xlib6g but it is not installed\n"
+" uucp: Depends: mailx but it is not installed\n"
+" blast: Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" adduser: Depends: perl-base but it is not installed\n"
+" aumix: Depends: libgpmg1 but it is not installed\n"
+" debiandoc-sgml: Depends: sgml-base but it is not installed\n"
+" bash-builtins: Depends: bash (&gt;= 2.01) but 2.0-3 is installed\n"
+" cthugha: Depends: svgalibg1 but it is not installed\n"
+" Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" libreadlineg2: Conflicts:libreadline2 (&lt;&lt; 2.1-2.1)\n"
+msgstr ""
+"# apt-get check\n"
+"Pakketlijsten worden ingelezen... Klaar\n"
+"Boom van vereisten wordt opgebouwd... Klaar\n"
+"U zou 'apt --fix-broken install' kunnen uitvoeren om dit te repareren.\n"
+"Sorry, maar de volgende pakketten hebben niet-voldane vereisten:\n"
+" 9fonts: Vereist: xlib6g maar dit is niet geïnstalleerd\n"
+" uucp: Vereist: mailx maar dit is niet geïnstalleerd\n"
+" blast: Vereist: xlib6g (&gt;= 3.3-5) maar dit is niet geïnstalleerd\n"
+" adduser: Vereist: perl-base maar dit is niet geïnstalleerd\n"
+" aumix: Vereist: libgpmg1 maar dit is niet geïnstalleerd\n"
+" debiandoc-sgml: Vereist: sgml-base maar dit is niet geïnstalleerd\n"
+" bash-builtins: Vereist: bash (&gt;= 2.01) maar 2.0-3 is geïnstalleerd\n"
+" cthugha: Vereist: svgalibg1 maar dit is niet geïnstalleerd\n"
+" Vereist: xlib6g (&gt;= 3.3-5) maar dit is niet geïnstalleerd\n"
+" libreadlineg2: Conflicteert met:libreadline2 (&lt;&lt; 2.1-2.1)\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"In this example the system has many problems, including a serious problem "
+"with libreadlineg2. For each package that has unmet dependencies a line is "
+"printed out indicating the package with the problem and the dependencies "
+"that are unmet. A short explanation of why the package has a dependency "
+"problem is also included."
+msgstr ""
+"Het systeem uit dit voorbeeld kampt met veel problemen, inclusief een "
+"ernstig probleem met libreadlineg2. Voor elk pakket met onvoldane vereisten "
+"wordt een regel weergegeven met een aanduiding van het pakket dat met het "
+"probleem geconfronteerd wordt en de vereisten waaraan niet voldaan zijn. Ook "
+"een korte verklaring waarom het pakket een vereistenprobleem heeft wordt "
+"toegevoegd."
+
+#. type: Content of: <book><chapter><section><para><footnote><para>
+#: guide.dbk
+msgid ""
+"APT however considers all known dependencies and attempts to prevent broken "
+"packages"
+msgstr ""
+"APT neemt evenwel alle gekende vereisten in overweging en probeert het "
+"ontstaan van defecte pakketten te voorkomen."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"There are two ways a system can get into a broken state like this. The first "
+"is caused by <command>dpkg</command> missing some subtle relationships "
+"between packages when performing upgrades. <placeholder type=\"footnote\" id="
+"\"0\"/>. The second is if a package installation fails during an operation. "
+"In this situation a package may have been unpacked without its dependents "
+"being installed."
+msgstr ""
+"Een systeem kan op twee manieren terechtkomen in een dergelijke defecte "
+"staat. Een eerste oorzaak kan <command>dpkg</command> zijn aan wie sommige "
+"subtiele onderlinge relaties tussen pakketten ontgaan zijn bij het uitvoeren "
+"van opwaarderingen. <placeholder type=\"footnote\" id=\"0\"/>. Een tweede "
+"oorzaak is het mislukken van de operatie in de loop van de installatie van "
+"een pakket. In een dergelijk geval kan een pakket uitgepakt zijn zonder dat "
+"zijn vereisten geïnstalleerd werden."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The second situation is much less serious than the first because APT places "
+"certain constraints on the order that packages are installed. In both cases "
+"supplying the <literal>-f</literal> option to <command>apt-get</command> "
+"will cause APT to deduce a possible solution to the problem and then "
+"continue on. The APT <command>dselect</command> method always supplies the "
+"<literal>-f</literal> option to allow for easy continuation of failed "
+"maintainer scripts."
+msgstr ""
+"De tweede situatie is veel minder ernstig dan de eerste omdat APT sommige "
+"beperkingen instelt op de volgorde waarin pakketten geïnstalleerd worden. In "
+"beide gevallen zal het toevoegen van de optie <literal>-f</literal> aan het "
+"commando <command>apt-get</command> APT ertoe aanzetten om een mogelijke "
+"oplossing voor het probleem te zoeken en om dan voort te gaan. De "
+"<command>dselect</command>-methode van APT voegt steeds de optie <literal>-"
+"f</literal> toe om bij het mislukken van een script van de pakketonderhouder "
+"toch een vlotte voortgang te hebben."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"However, if the <literal>-f</literal> option is used to correct a seriously "
+"broken system caused by the first case then it is possible that it will "
+"either fail immediately or the installation sequence will fail. In either "
+"case it is necessary to manually use dpkg (possibly with forcing options) to "
+"correct the situation enough to allow APT to proceed."
+msgstr ""
+"Nochtans, als de optie <literal>-f</literal> gebruikt wordt voor het "
+"herstellen van een ernstig defect systeem ten gevolge van de eerste oorzaak, "
+"dan kan het gebeuren dat het commando ofwel onmiddellijk faalt of dat het in "
+"de loop van de installatiesequentie tot een mislukking komt. In beide "
+"gevallen zal het nodig zijn om manueel gebruik te maken van dpkg (wellicht "
+"met forceeropties) om de situatie in voldoende mate te corrigeren zodat APT "
+"in staat is voort te gaan."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "The Status Report"
+msgstr "Het statusrapport"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Before proceeding <command>apt-get</command> will present a report on what "
+"will happen. Generally the report reflects the type of operation being "
+"performed but there are several common elements. In all cases the lists "
+"reflect the final state of things, taking into account the <literal>-f</"
+"literal> option and any other relevant activities to the command being "
+"executed."
+msgstr ""
+"Vooraleer het voortgaat zal <command>apt-get</command> een rapport tonen "
+"over wat er te gebeuren staat. In het algemeen geeft het rapport het type "
+"operatie weer dat uitgevoerd zal worden, maar dit bevat veel "
+"gemeenschappelijke elementen. In alle gevallen reflecteren de lijsten de "
+"eindstand van zaken, rekening houdend met de optie <literal>-f</literal> en "
+"alle andere mogelijke activiteiten die relevant zijn voor het uit te voeren "
+"commando."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Extra Package list"
+msgstr "De lijst met extra pakketten"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following extra packages will be installed:\n"
+" libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl\n"
+" mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base\n"
+" bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy\n"
+" squake pgp-i python-base debmake ldso perl libreadlineg2\n"
+" ssh\n"
+msgstr ""
+"De volgende extra pakketten zullen geïnstalleerd worden:\n"
+"(The following extra packages will be installed:)\n"
+" libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl\n"
+" mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base\n"
+" bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy\n"
+" squake pgp-i python-base debmake ldso perl libreadlineg2\n"
+" ssh\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The Extra Package list shows all of the packages that will be installed or "
+"upgraded in excess of the ones mentioned on the command line. It is only "
+"generated for an <literal>install</literal> command. The listed packages are "
+"often the result of an Auto Install."
+msgstr ""
+"De lijst met extra pakketten geeft alle pakketten weer die geïnstalleerd of "
+"opgewaardeerd zullen worden bovenop degene die aan de commandoregel "
+"opgegeven werden. Die lijst wordt enkel aangemaakt voor een "
+"<literal>install</literal> commando. De weergegeven pakketten zijn vaak het "
+"resultaat van een automatische installatie."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Packages to Remove"
+msgstr "De te verwijderen pakketten"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following packages will be REMOVED:\n"
+" xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix\n"
+" xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel\n"
+" xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid\n"
+" nas xpilot xfig\n"
+msgstr ""
+"De volgende pakketten zullen VERWIJDERD worden:\n"
+"(The following packages will be REMOVED:)\n"
+" xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix\n"
+" xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel\n"
+" xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid\n"
+" nas xpilot xfig\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The Packages to Remove list shows all of the packages that will be removed "
+"from the system. It can be shown for any of the operations and should be "
+"given a careful inspection to ensure nothing important is to be taken off. "
+"The <literal>-f</literal> option is especially good at generating packages "
+"to remove so extreme care should be used in that case. The list may contain "
+"packages that are going to be removed because they are only partially "
+"installed, possibly due to an aborted installation."
+msgstr ""
+"De lijst met te verwijderen pakketten geeft alle pakketten weer die van het "
+"systeem verwijderd zullen worden. Ze kan bij elk van de operaties getoond "
+"worden en zou zorgvuldig nagekeken moeten worden om zich ervan te "
+"vergewissen dat niets belangrijks weggenomen zal worden. Zeker de optie "
+"<literal>-f</literal> lokt vaak het verwijderen van pakketten uit en in dat "
+"geval is extra zorgvuldigheid zeker aangewezen. De lijst kan pakketten "
+"bevatten die verwijderd zullen worden omdat ze slechts ten dele "
+"geïnstalleerd werden, mogelijks ten gevolge van een afgebroken installatie."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The New Packages list"
+msgstr "De lijst nieuw te installeren pakketten"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following NEW packages will installed:\n"
+" zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base\n"
+msgstr ""
+"De volgende NIEUWE pakketten zullen geïnstalleerd worden:\n"
+"(The following NEW packages will installed:)\n"
+" zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The New Packages list is simply a reminder of what will happen. The packages "
+"listed are not presently installed in the system but will be when APT is "
+"done."
+msgstr ""
+"De lijst met nieuwe pakketten is enkel een geheugensteun voor wat er gaat "
+"gebeuren. De vermelde pakketten worden nu nog niet op het systeem "
+"geïnstalleerd, maar dat zal gebeuren als APT uitgevoerd wordt."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Kept Back list"
+msgstr "De lijst van tegengehouden pakketten"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following packages have been kept back\n"
+" compface man-db tetex-base msql libpaper svgalib1\n"
+" gs snmp arena lynx xpat2 groff xscreensaver\n"
+msgstr ""
+"De volgende pakketten werden tegengehouden\n"
+"(The following packages have been kept back)\n"
+" compface man-db tetex-base msql libpaper svgalib1\n"
+" gs snmp arena lynx xpat2 groff xscreensaver\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Whenever the whole system is being upgraded there is the possibility that "
+"new versions of packages cannot be installed because they require new things "
+"or conflict with already installed things. In this case the package will "
+"appear in the Kept Back list. The best way to convince packages listed there "
+"to install is with <literal>apt-get install</literal> or by using "
+"<command>dselect</command> to resolve their problems."
+msgstr ""
+"Telkens het hele systeem opgewaardeerd wordt, bestaat de kans dat nieuwe "
+"versies van pakketten niet geïnstalleerd kunnen worden omdat ze nieuwe zaken "
+"vereisen of conflicteren met reeds geïnstalleerde zaken. In dat geval zal "
+"dat pakket vermeld worden in de lijst van tegengehouden pakketten. De beste "
+"manier om de daar vermelde pakketten te overtuigen om zich te laten "
+"installeren is <literal>apt-get install</literal> te gebruiken of "
+"<command>dselect</command> te gebruiken om hen een oplossing voor de "
+"problemen te laten vinden."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "Held Packages warning"
+msgstr "Waarschuwing over tegengehouden pakketten"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following held packages will be changed:\n"
+" cvs\n"
+msgstr ""
+"De volgende tegengehouden pakketten zullen gewijzigd worden:\n"
+"(The following held packages will be changed:)\n"
+" cvs\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Sometimes you can ask APT to install a package that is on hold, in such a "
+"case it prints out a warning that the held package is going to be changed. "
+"This should only happen during dist-upgrade or install."
+msgstr ""
+"Soms kan het gebeuren dat u APT vraagt om een als tegengehouden gemarkeerd "
+"pakket te installeren. In dat geval geeft het een waarschuwing dat het "
+"tegengehouden pakket gewijzigd zal worden. Dit zou enkel mogen voorkomen bij "
+"een dist-upgrade of een install."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "Final summary"
+msgstr "Afsluitende samenvatting"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Finally, APT will print out a summary of all the changes that will occur."
+msgstr ""
+"Tenslotte zal APT een samenvatting weergeven van alle wijzigingen die "
+"aangebracht zullen worden."
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"206 packages upgraded, 8 newly installed, 23 to remove and 51 not upgraded.\n"
+"12 packages not fully installed or removed.\n"
+"Need to get 65.7M/66.7M of archives. After unpacking 26.5M will be used.\n"
+msgstr ""
+"206 pakketten opgewaardeerd, 8 nieuw geïnstalleerd, 23 te verwijderen en 51 niet opgewaardeerd.\n"
+"12 pakketten niet volledig geïnstalleerd of verwijderd.\n"
+"Moet 65.7M/66.7M archieven ophalen. Na uitpakken zal 26.5M gebruikt worden.\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The first line of the summary simply is a reduced version of all of the "
+"lists and includes the number of upgrades - that is packages already "
+"installed that have new versions available. The second line indicates the "
+"number of poorly configured packages, possibly the result of an aborted "
+"installation. The final line shows the space requirements that the "
+"installation needs. The first pair of numbers refer to the size of the "
+"archive files. The first number indicates the number of bytes that must be "
+"fetched from remote locations and the second indicates the total size of all "
+"the archives required. The next number indicates the size difference between "
+"the presently installed packages and the newly installed packages. It is "
+"roughly equivalent to the space required in /usr after everything is done. "
+"If a large number of packages are being removed then the value may indicate "
+"the amount of space that will be freed."
+msgstr ""
+"De eerste regel van de samenvatting is gewoon een beknopte versie van alle "
+"lijsten en bevat het aantal opwaarderingen - dat zijn reeds geïnstalleerde "
+"pakketten waarvoor nieuwere versies beschikbaar zin. De tweede regel toont "
+"het aantal slecht geconfigureerde pakketten, mogelijks het gevolg van een "
+"afgebroken installatie. De laatste regel toont de opslagruimte die door de "
+"installatie gebruikt zal worden. Het eerste paar getallen verwijst naar de "
+"grootte van de archiefbestanden. Het eerste getal geeft het aantal bytes op "
+"dat van externe locaties opgehaald moet worden en het tweede geeft de "
+"gezamenlijke omvang van alle benodigde archieven op. Het volgende getal "
+"geeft het verschil in grootte op tussen de actueel geïnstalleerde pakketten "
+"en de nieuwe situatie. Grofweg is dit vergelijkbaar met de benodigde ruimte "
+"in /usr nadat alles achter de rug is. Indien een groot aantal pakketten "
+"verwijderd wordt, kan de opgegeven waarde verwijzen naar de ruimte die vrij "
+"zal komen."
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Some other reports can be generated by using the -u option to show packages "
+"to upgrade, they are similar to the previous examples."
+msgstr ""
+"Door de optie -u te gebruiken kan men rapporten laten opmaken over de op te "
+"waarderen pakketten. Deze rapporten zijn vergelijkbaar met de vorige "
+"voorbeelden."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "The Status Display"
+msgstr "De statusweergave"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"During the download of archives and package files APT prints out a series of "
+"status messages."
+msgstr ""
+"Tijdens het downloaden van archieven en pakketbestanden geeft APT een aantal "
+"statusberichten weer."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+"11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
+msgstr ""
+"# apt-get update\n"
+"Ophalen:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Ophalen:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Geraakt http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+"Ophalen:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Ophalen:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+"11% [5 testing/non-free `Wachten op bestand' 0/32.1k 0%] 2203b/s 1m52s\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The lines starting with <emphasis>Get</emphasis> are printed out when APT "
+"begins to fetch a file while the last line indicates the progress of the "
+"download. The first percent value on the progress line indicates the total "
+"percent done of all files. Unfortunately since the size of the Package files "
+"is unknown <literal>apt-get update</literal> estimates the percent done "
+"which causes some inaccuracies."
+msgstr ""
+"Regels die beginnen met <emphasis>Ophalen</emphasis> worden weergegeven "
+"wanneer APT een bestand begint op te halen, terwijl de laatste regel de "
+"voortgang van de download aangeeft. Het eerste percentage op de "
+"voortgangsregel verwijst naar het totale percentage van alle bestanden samen "
+"dat afgewerkt is. Aangezien de grootte van de Packages-bestanden niet bekend "
+"is, maakt <literal>apt-get update</literal> een schatting van het reeds "
+"afgewerkte percentage, maar die is jammer genoeg in een zekere mate "
+"inaccuraat."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The next section of the status line is repeated once for each download "
+"thread and indicates the operation being performed and some useful "
+"information about what is happening. Sometimes this section will simply read "
+"<emphasis>Forking</emphasis> which means the OS is loading the download "
+"module. The first word after the [ is the fetch number as shown on the "
+"history lines. The next word is the short form name of the object being "
+"downloaded. For archives it will contain the name of the package that is "
+"being fetched."
+msgstr ""
+"De volgende sectie van de statusregel wordt voor elke downloadtaak herhaald "
+"en geeft de operatie die uitgevoerd wordt weer evenals wat nuttige "
+"informatie over wat er aan het gebeuren is. Soms zal die sectie gewoon "
+"<emphasis>Forking</emphasis> bevatten, wat er op wijst dat het OS de "
+"downloadmodule aan het laden is. Het eerste woord na het [ is het volgnummer "
+"van de ophaaltaak zoals dat op de voortgangsregels getoond wordt. Het "
+"volgende woord is de verkorte vorm van de naam van het object dat opgehaald "
+"wordt. Als het archieven betreft, zal het de naam van het pakket dat "
+"opgehaald wordt bevatten."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Inside of the single quote is an informative string indicating the progress "
+"of the negotiation phase of the download. Typically it progresses from "
+"<emphasis>Connecting</emphasis> to <emphasis>Waiting for file</emphasis> to "
+"<emphasis>Downloading</emphasis> or <emphasis>Resuming</emphasis>. The final "
+"value is the number of bytes downloaded from the remote site. Once the "
+"download begins this is represented as <literal>102/10.2k</literal> "
+"indicating that 102 bytes have been fetched and 10.2 kilobytes is expected. "
+"The total size is always shown in 4 figure notation to preserve space. After "
+"the size display is a percent meter for the file itself. The second last "
+"element is the instantaneous average speed. This values is updated every 5 "
+"seconds and reflects the rate of data transfer for that period. Finally is "
+"shown the estimated transfer time. This is updated regularly and reflects "
+"the time to complete everything at the shown transfer rate."
+msgstr ""
+"Tussen de enkelvoudige aanhalingstekens staat een informatieve tekst die de "
+"voortgang weergeeft van de onderhandelingsfase van de download. Gewoonlijk "
+"evolueert dat van <emphasis>Aan het verbinden</emphasis> over <emphasis>Aan "
+"het wachten op bestand</emphasis> naar <emphasis>Aan het downloaden</"
+"emphasis> of <emphasis>Aan het hervatten</emphasis>. De laatste waarde geeft "
+"het aantal bytes weer dat opgehaald werd van de externe site. Als het proces "
+"van downloaden begonnen is, wordt dit weergegeven als <literal>102/10.2k</"
+"literal>, hetgeen betekent dat er reeds 102 bytes opgehaald werden van een "
+"verwacht totaal van 10.2 kilobytes. De weergave van de volledige grootte "
+"wordt steeds getoond in een 4-cijfernotatie om plaats te sparen. Na de "
+"weergave van de grootte komt het reeds opgehaalde percentage van het "
+"bestand. Het voorlaatste element geeft de huidige gemiddelde snelheid op. "
+"Deze waarde wordt elke 5 seconden ververst en geeft de snelheid van de "
+"gegevensoverdracht voor die periode weer. Tenslotte wordt de verwachte duur "
+"van de gegevensoverdracht weergegeven. Dit wordt regelmatig ververst en "
+"weerspiegelt de tijd die nodig is om alles af te werken aan het getoonde "
+"tempo van gegevensoverdracht."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The status display updates every half second to provide a constant feedback "
+"on the download progress while the Get lines scroll back whenever a new file "
+"is started. Since the status display is constantly updated it is unsuitable "
+"for logging to a file, use the <literal>-q</literal> option to remove the "
+"status display."
+msgstr ""
+"De statusweergave wordt iedere halve seconde ververst en geeft zo een "
+"constante feedback over het downloadproces terwijl de Ophalen-regels naar "
+"boven scrollen telkens er met een nieuw bestand wordt begonnen. Vermits de "
+"statusweergave permanent ververst wordt, is dit niet geschikt om in een "
+"logbestand opgeslagen te worden. Gebruik de optie <literal>-q</literal> om "
+"de statusweergave te onderdrukken."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Dpkg"
+msgstr "Dpkg"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"APT uses <command>dpkg</command> for installing the archives and will switch "
+"over to the <command>dpkg</command> interface once downloading is completed. "
+"<command>dpkg</command> will also ask a number of questions as it processes "
+"the packages and the packages themselves may also ask several questions. "
+"Before each question there is usually a description of what it is asking and "
+"the questions are too varied to discuss completely here."
+msgstr ""
+"APT gebruikt <command>dpkg</command> om de archieven te installeren en "
+"schakelt na het voltooien van het downloaden over op de interface "
+"<command>dpkg</command>. Tijdens het verwerken van de pakketten zal "
+"<command>dpkg</command> een aantal vragen stellen en ook de pakketten zelf "
+"kunnen verschillende vragen stellen. Aan elke vraag gaat er gewoonlijk een "
+"beschrijving vooraf van waarover de vraag gaat. De vragen zijn dermate "
+"gevarieerd dat het niet mogelijk is om ze hier volledig te behandelen."
+
+#. type: Content of: <book><title>
+#: offline.dbk
+msgid "Using APT Offline"
+msgstr "APT offline gebruiken"
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: offline.dbk
+msgid ""
+"This document describes how to use APT in a non-networked environment, "
+"specifically a 'sneaker-net' approach for performing upgrades."
+msgstr ""
+"Dit document beschrijft hoe APT te gebruiken in een netwerkloze omgeving. "
+"Het behandelt in het bijzonder de zogenaamde 'sneaker-net'-benadering voor "
+"het uitvoeren van opwaarderingen (De sneakernet-aanpak gebruikt fysieke "
+"media in plaats van het netwerk)."
+
+#. type: Content of: <book><bookinfo>
+#: offline.dbk
+msgid ""
+"<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+"<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright>"
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Introduction"
+msgstr "Inleiding"
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "Overview"
+msgstr "Overzicht"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Normally APT requires direct access to a Debian archive, either from a local "
+"media or through a network. Another common complaint is that a Debian "
+"machine is on a slow link, such as a modem and another machine has a very "
+"fast connection but they are physically distant."
+msgstr ""
+"Normaal heeft APT rechtstreeks toegang tot een Debian archief nodig, ofwel "
+"op lokale media ofwel via een netwerk. Ook keert regelmatig de klacht terug "
+"dat een bepaalde Debiancomputer over een trage verbinding, zoals een modem, "
+"beschikt, terwijl er een andere computer met een zeer snelle verbinding "
+"beschikbaar is, die echter fysiek op een afstand van elkaar staan."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The solution to this is to use large removable media such as a Zip disc or a "
+"SuperDisk disc. These discs are not large enough to store the entire Debian "
+"archive but can easily fit a subset large enough for most users. The idea is "
+"to use APT to generate a list of packages that are required and then fetch "
+"them onto the disc using another machine with good connectivity. It is even "
+"possible to use another Debian machine with APT or to use a completely "
+"different OS and a download tool like wget. Let <emphasis>remote host</"
+"emphasis> mean the machine downloading the packages, and <emphasis>target "
+"host</emphasis> the one with bad or no connection."
+msgstr ""
+"Een oplossing hiervoor is gebruik maken van grote verwijderbare media, zoals "
+"een Zip-schijf of een SuperDisc-schijf. Dergelijke schijven zijn onvoldoende "
+"groot om een volledig Debian archief te bevatten, maar ze kunnen er met "
+"gemak een subset van bevatten die voor de meeste gebruikers voldoende groot "
+"is. Het concept is om APT te gebruiken om een lijst van pakketten samen te "
+"stellen die men nodig heeft en die dan op te halen met een computer met een "
+"goede verbinding en ze op de schijf te plaatsen. Het is zelfs mogelijk om "
+"een andere Debian-computer met APT te gebruiken of een computer met een "
+"volledig ander OS en een download-hulpmiddel zoals wget. Laten we aannemen "
+"dat <emphasis>'externe-computer'</emphasis> de computer is die de pakketten "
+"downloadt en <emphasis>'computer-in-kwestie'</emphasis> degene met een "
+"slechte of geen verbinding."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"This is achieved by creatively manipulating the APT configuration file. The "
+"essential premise to tell APT to look on a disc for it's archive files. Note "
+"that the disc should be formatted with a filesystem that can handle long "
+"file names such as ext2, fat32 or vfat."
+msgstr ""
+"Dit wordt gerealiseerd door op een creatieve manier het configuratiebestand "
+"van APT te manipuleren. De essentiële aanname is dat APT gezegd wordt om op "
+"een schijf te zoeken naar de archiefbestanden die het nodig heeft. Merk op "
+"dat de schijf geformatteerd moet zijn voor een bestandssysteem dat overweg "
+"kan met lange bestandsnamen, zoals ext2, fat32 of vfat."
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Using APT on both machines"
+msgstr "Op beide computers APT gebruiken"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"APT being available on both machines gives the simplest configuration. The "
+"basic idea is to place a copy of the status file on the disc and use the "
+"remote machine to fetch the latest package files and decide which packages "
+"to download. The disk directory structure should look like:"
+msgstr ""
+"Indien APT op beide computers aanwezig is, is de configuratie het "
+"makkelijkst. Het basisconcept bestaat erin om een kopie van het "
+"statusbestand op de schijf te plaatsen en 'externe-computer' te gebruiken om "
+"de meest recente pakketbestanden op te halen en uit te laten maken welke "
+"bestanden gedownload moeten worden. De mappenstructuur op de schijf moet er "
+"zo uitzien:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" /disc/\n"
+" archives/\n"
+" partial/\n"
+" lists/\n"
+" partial/\n"
+" status\n"
+" sources.list\n"
+" apt.conf\n"
+msgstr ""
+" /disc/\n"
+" archives/\n"
+" partial/\n"
+" lists/\n"
+" partial/\n"
+" status\n"
+" sources.list\n"
+" apt.conf\n"
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "The configuration file"
+msgstr "Het configuratiebestand"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The configuration file should tell APT to store its files on the disc and to "
+"use the configuration files on the disc as well. The sources.list should "
+"contain the proper sites that you wish to use from the remote machine, and "
+"the status file should be a copy of <emphasis>/var/lib/dpkg/status</"
+"emphasis> from the <emphasis>target host</emphasis>. Please note, if you are "
+"using a local archive you must use copy URIs, the syntax is identical to "
+"file URIs."
+msgstr ""
+"Het configuratiebestand moet APT opdragen om zijn bestanden op de schijf op "
+"te slaan en om ook de configuratiebestanden op de schijf te gebruiken. In "
+"het bestand sources.list moeten de eigenlijke sites vermeld staan die u "
+"vanaf 'externe-computer' wenst te gebruiken en het statusbestand moet een "
+"kopie zijn van <emphasis>/var/lib/dpkg/status</emphasis> op 'computer-in-"
+"kwestie'. Noteer dat indien u van een lokaal archief gebruik maakt, u URI's "
+"van het type copy moet gebruiken, waarvan de syntaxis identiek is aan die "
+"van URI's van het type file."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"<emphasis>apt.conf</emphasis> must contain the necessary information to make "
+"APT use the disc:"
+msgstr ""
+"<emphasis>apt.conf</emphasis> moet de informatie bevatten die nodig is om "
+"APT de schijf te doen gebruiken:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" APT\n"
+" {\n"
+" /* This is not necessary if the two machines are the same arch, it tells\n"
+" the remote APT what architecture the target machine is */\n"
+" Architecture \"i386\";\n"
+"\n"
+" Get::Download-Only \"true\";\n"
+" };\n"
+"\n"
+" Dir\n"
+" {\n"
+" /* Use the disc for state information and redirect the status file from\n"
+" the /var/lib/dpkg default */\n"
+" State \"/disc/\";\n"
+" State::status \"status\";\n"
+"\n"
+" // Binary caches will be stored locally\n"
+" Cache::archives \"/disc/archives/\";\n"
+" Cache \"/tmp/\";\n"
+"\n"
+" // Location of the source list.\n"
+" Etc \"/disc/\";\n"
+" };\n"
+msgstr ""
+" APT\n"
+" {\n"
+" /* Dit is niet noodzakelijk als de twee computers dezelfde architectuur\n"
+" hebben. Het vertelt APT van 'externe-computer' welke architectuur\n"
+" 'computer-in-kwestie' heeft */\n"
+" Architecture \"i386\";\n"
+"\n"
+" Get::Download-Only \"true\";\n"
+" };\n"
+"\n"
+" Dir\n"
+" {\n"
+" /* Gebruik maken van de schijf voor statusinformatie en het statusbestand\n"
+" omleiden van /var/lib/dpkg wat de standaardlocatie ervan is */\n"
+" State \"/disc/\";\n"
+" State::status \"status\";\n"
+"\n"
+" // Binaire caches zullen lokaal opgeslagen worden\n"
+" Cache::archives \"/disc/archives/\";\n"
+" Cache \"/tmp/\";\n"
+"\n"
+" // Locatie van de lijst met pakketbronnen.\n"
+" Etc \"/disc/\";\n"
+" };\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"More details can be seen by examining the apt.conf man page and the sample "
+"configuration file in <emphasis>/usr/share/doc/apt/examples/apt.conf</"
+"emphasis>."
+msgstr ""
+"U krijgt meer details als u de man-pagina apt.conf raadpleegt en het "
+"voorbeeldconfiguratiebestand in <emphasis>/usr/share/doc/apt/examples/apt."
+"conf</emphasis>."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"On the target machine the first thing to do is mount the disc and copy "
+"<emphasis>/var/lib/dpkg/status</emphasis> to it. You will also need to "
+"create the directories outlined in the Overview, <emphasis>archives/partial/"
+"</emphasis> and <emphasis>lists/partial/</emphasis>. Then take the disc to "
+"the remote machine and configure the sources.list. On the remote machine "
+"execute the following:"
+msgstr ""
+"Het eerste wat moet gebeuren is op 'computer-in-kwestie' de schijf "
+"aankoppelen en <emphasis>/var/lib/dpkg/status</emphasis> er naartoe "
+"kopiëren. U zult ook de mappen moeten aanmaken die in het overzicht "
+"beschreven werden, <emphasis>archives/partial/</emphasis> en <emphasis>lists/"
+"partial/</emphasis>. Neem vervolgens de schijf mee naar 'externe-computer' "
+"en configureer het bestand sources.list. Voer op 'externe-computer' de "
+"volgende opdracht uit:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get update\n"
+" [ APT fetches the package files ]\n"
+" # apt-get dist-upgrade\n"
+" [ APT fetches all the packages needed to upgrade the target machine ]\n"
+msgstr ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get update\n"
+" [ APT haalt de bestanden Packages op ]\n"
+" # apt-get dist-upgrade\n"
+" [ APT haalt alle pakketbestanden op die nodig zijn om 'computer-in-kwestie' op te waarderen ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The dist-upgrade command can be replaced with any other standard APT "
+"commands, particularly dselect-upgrade. You can even use an APT front end "
+"such as <emphasis>dselect</emphasis>. However this presents a problem in "
+"communicating your selections back to the local computer."
+msgstr ""
+"Het commando dist-upgrade kan door om het even welk ander standaard commando "
+"van APT vervangen worden, in het bijzonder dselect-upgrade. U kunt zelfs een "
+"front-end voor APT gebruiken, zoals <emphasis>dselect</emphasis>. Dit stelt "
+"wel een probleem bij het opnieuw communiceren van de selecties naar "
+"'computer-in-kwestie'."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Now the disc contains all of the index files and archives needed to upgrade "
+"the target machine. Take the disc back and run:"
+msgstr ""
+"Nu bevat de schijf alle indexbestanden en archieven die nodig zijn om "
+"'computer-in-kwestie' op te waarderen. Neem de schijf terug mee en voer het "
+"volgende uit:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get check\n"
+" [ APT generates a local copy of the cache files ]\n"
+" # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
+" [ Or any other APT command ]\n"
+msgstr ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get check\n"
+" [ APT maakt een lokale kopie van de cachebestanden aan ]\n"
+" # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
+" [ Of elk ander APT commando ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"It is necessary for proper function to re-specify the status file to be the "
+"local one. This is very important!"
+msgstr ""
+"Met het oog op een goede werking is het nodig om opnieuw op te geven dat het "
+"statusbestand terug het lokale moet zijn. Dit is zeer belangrijk!"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"If you are using dselect you can do the very risky operation of copying disc/"
+"status to /var/lib/dpkg/status so that any selections you made on the remote "
+"machine are updated. I highly recommend that people only make selections on "
+"the local machine - but this may not always be possible. DO NOT copy the "
+"status file if dpkg or APT have been run in the mean time!!"
+msgstr ""
+"Indien u dselect gebruikt, kunt u de zeer riskante operatie uitvoeren om "
+"disc/status naar /var/lib/dpkg/status te kopiëren, waardoor alle selecties "
+"die u op 'externe-computer' uitvoerde, bijgewerkt worden. Ik raad mensen ten "
+"stelligste aan enkel selecties uit te voeren op de lokale computer - maar "
+"het kan zijn dat dit niet altijd mogelijk is. Kopieer het statusbestand NIET "
+"indien APT of dpkg ondertussen uitgevoerd werden!!"
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Using APT and wget"
+msgstr "APT en wget gebruiken"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"<emphasis>wget</emphasis> is a popular and portable download tool that can "
+"run on nearly any machine. Unlike the method above this requires that the "
+"Debian machine already has a list of available packages."
+msgstr ""
+"<emphasis>wget</emphasis> is een populair en overdraagbaar gereedschap dat "
+"bijna op elke computer gebruikt kan worden. In tegenstelling tot de "
+"voorgaande methode vereist dit wel dat de Debian-computer reeds een lijst "
+"van beschikbare pakketten heeft."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The basic idea is to create a disc that has only the archive files "
+"downloaded from the remote site. This is done by using the --print-uris "
+"option to apt-get and then preparing a wget script to actually fetch the "
+"packages."
+msgstr ""
+"Het basisconcept is om een schijf te maken waarop enkel de archiefbestanden "
+"gedownload worden vanaf de externe site. Dit gebeurt door het gebruik van de "
+"optie --print-uris van apt-get, waarna een script voor wget gemaakt wordt "
+"waarmee het eigenlijke ophalen van de pakketten uitgevoerd wordt."
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "Operation"
+msgstr "Werking"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Unlike the previous technique no special configuration files are required. "
+"We merely use the standard APT commands to generate the file list."
+msgstr ""
+"In tegenstelling tot de vorige techniek zijn hier geen bijzondere "
+"configuratiebestanden nodig. We maken hoofdzakelijk gebruik van de standaard "
+"commando's van APT om de bestandslijst te genereren."
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # apt-get dist-upgrade\n"
+" [ Press no when prompted, make sure you are happy with the actions ]\n"
+" # apt-get -qq --print-uris dist-upgrade &gt; uris\n"
+" # awk '{print \"wget -O \" $2 \" \" $1}' &lt; uris &gt; /disc/wget-script\n"
+msgstr ""
+" # apt-get dist-upgrade\n"
+" [ Antwoord nee op de vraag, vergewis u ervan dat u akkoord gaat met de acties ]\n"
+" # apt-get -qq --print-uris dist-upgrade &gt; uris\n"
+" # awk '{print \"wget -O \" $2 \" \" $1}' &lt; uris &gt; /disc/wget-script\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Any command other than dist-upgrade could be used here, including dselect-"
+"upgrade."
+msgstr ""
+"Ook om het even welk ander commando dan dist-upgrade kon hier gebruikt "
+"worden, met inbegrip van dselect-upgrade."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The /disc/wget-script file will now contain a list of wget commands to "
+"execute in order to fetch the necessary archives. This script should be run "
+"with the current directory as the disc's mount point so as to save the "
+"output on the disc."
+msgstr ""
+"Het bestand /disc/wget-script zal nu een lijst van wget-commando's bevatten "
+"die uitgevoerd moeten worden om de benodigde archieven op te halen. Dit "
+"script moet uitgevoerd worden terwijl de actieve map gebruikt wordt als "
+"aankoppelpunt voor de schijf, waardoor de uitvoer op de schijf opgeslagen "
+"zal worden."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid "The remote machine would do something like"
+msgstr ""
+"Op 'externe-computer' wordt dan iets in de zin van het volgende gedaan:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # cd /disc\n"
+" # sh -x ./wget-script\n"
+" [ wait.. ]\n"
+msgstr ""
+" # cd /disc\n"
+" # sh -x ./wget-script\n"
+" [ wachten.. ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Once the archives are downloaded and the disc returned to the Debian machine "
+"installation can proceed using,"
+msgstr ""
+"Nadat de archieven gedownload werden en de schijf terug meegenomen werd naar "
+"de Debian-computer, kan de installatie voortgezet worden met"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
+msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid "Which will use the already fetched archives on the disc."
+msgstr ""
+"En dit zal gebruik maken van de reeds opgehaalde archieven op de schijf."
+
+#~ msgid "dpkg trigger usage (and related options)"
+#~ msgstr "het gebruik van triggers door dpkg (en gerelateerde opties)"
+
+#~ msgid ""
+#~ "APT can call &dpkg; in such a way as to let it make aggressive use of "
+#~ "triggers over multiple calls of &dpkg;. Without further options &dpkg; "
+#~ "will use triggers once each time it runs. Activating these options can "
+#~ "therefore decrease the time needed to perform the install or upgrade. "
+#~ "Note that it is intended to activate these options per default in the "
+#~ "future, but as it drastically changes the way APT calls &dpkg; it needs a "
+#~ "lot more testing. <emphasis>These options are therefore currently "
+#~ "experimental and should not be used in production environments.</"
+#~ "emphasis> It also breaks progress reporting such that all front-ends will "
+#~ "currently stay around half (or more) of the time in the 100% state while "
+#~ "it actually configures all packages."
+#~ msgstr ""
+#~ "APT kan &dpkg; zodanig aanroepen dat het op een agressieve manier gebruik "
+#~ "maakt van triggers in de loop van de verschillende stappen waarin &dpkg; "
+#~ "aangeroepen wordt. Zonder extra opties zal &dpkg; een keer gebruik maken "
+#~ "van triggers tijdens iedere uitvoering. Het activeren van deze opties kan "
+#~ "daarom de tijd beperken die nodig is voor het uitvoeren van een "
+#~ "installatie of een opwaardering. Merk op dat het de bedoeling is om deze "
+#~ "opties in de toekomst standaard te activeren, maar aangezien het op een "
+#~ "drastische manier ingrijpt op de manier waarop APT &dpkg; aanroept, is "
+#~ "grondiger testen noodzakelijk. <emphasis>Deze opties worden daarom "
+#~ "momenteel als experimenteel beschouwd en worden best niet in "
+#~ "productieomgevingen gebruikt.</emphasis> Ook de voortgangsindicatie wordt "
+#~ "erdoor ontregeld, met als gevolg dat die bij alle front-ends momenteel "
+#~ "ongeveer de helft van de tijd (of langer) op 100% voltooid blijft staan, "
+#~ "terwijl ondertussen de configuratie van alle pakketten aan de gang is."
+
+#~ msgid ""
+#~ "DPkg::NoTriggers \"true\";\n"
+#~ "PackageManager::Configure \"smart\";\n"
+#~ "DPkg::ConfigurePending \"true\";\n"
+#~ "DPkg::TriggersPending \"true\";"
+#~ msgstr ""
+#~ "DPkg::NoTriggers \"true\";\n"
+#~ "PackageManager::Configure \"smart\";\n"
+#~ "DPkg::ConfigurePending \"true\";\n"
+#~ "DPkg::TriggersPending \"true\";"
+
+#~ msgid ""
+#~ "Note that it is not guaranteed that APT will support these options or "
+#~ "that these options will not cause (big) trouble in the future. If you "
+#~ "have understand the current risks and problems with these options, but "
+#~ "are brave enough to help testing them, create a new configuration file "
+#~ "and test a combination of options. Please report any bugs, problems and "
+#~ "improvements you encounter and make sure to note which options you have "
+#~ "used in your reports. Asking &dpkg; for help could also be useful for "
+#~ "debugging proposes, see e.g. <command>dpkg --audit</command>. A defensive "
+#~ "option combination would be <placeholder type=\"literallayout\" id=\"0\"/>"
+#~ msgstr ""
+#~ "Merk op dat er geen garantie bestaat dat APT deze opties zal blijven "
+#~ "ondersteunen of dat ze in de toekomst geen (grote) problemen zullen "
+#~ "veroorzaken. Indien u een goed begrip heeft van de actuele risico's en "
+#~ "problemen met deze opties, maar moedig genoeg bent om ze te helpen "
+#~ "testen, maakt u best een nieuw configuratiebestand aan om een combinatie "
+#~ "van opties te testen. Gelieve bugs, problemen en verbeteringen die u bent "
+#~ "tegengekomen te rapporteren en vergeet in uw rapport zeker niet te "
+#~ "vermelden welke opties u gebruikte. Ook &dpkg; om hulp vragen kan nuttig "
+#~ "zijn met het oog op het opsporen van problemen, zie bijvoorbeeld "
+#~ "<command>dpkg --audit</command>. Een defensieve combinatie van opties zou "
+#~ "<placeholder type=\"literallayout\" id=\"0\"/> zijn."
+
+#~ msgid ""
+#~ "Add the no triggers flag to all &dpkg; calls (except the ConfigurePending "
+#~ "call). See &dpkg; if you are interested in what this actually means. In "
+#~ "short: &dpkg; will not run the triggers when this flag is present unless "
+#~ "it is explicitly called to do so in an extra call. Note that this option "
+#~ "exists (undocumented) also in older APT versions with a slightly "
+#~ "different meaning: Previously these option only append --no-triggers to "
+#~ "the configure calls to &dpkg; - now APT will also add this flag to the "
+#~ "unpack and remove calls."
+#~ msgstr ""
+#~ "De vlag \"geen triggers\" toevoegen aan alle aanroepen van &dpkg; "
+#~ "(behalve voor de aanroep ConfigurePending). Raadpleeg &dpkg; indien u "
+#~ "geïnteresseerd bent in wat dit daadwerkelijk betekent. In het kort: als "
+#~ "deze vlag aanwezig is, zal &dpkg; de triggers niet uitvoeren tenzij het "
+#~ "in een extra aanroep expliciet opgedragen wordt dat wel te doen. Merk op "
+#~ "dat deze optie in een lichtjes andere betekenis (ongedocumenteerd) ook in "
+#~ "oudere versies van APT aanwezig is: vroeger voegde deze optie enkel --no-"
+#~ "triggers toe aan de configure-aanroep van &dpkg; - nu voegt APT deze vlag "
+#~ "ook toe aan de aanroepen unpack en remove."
+
+#~ msgid ""
+#~ "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" "
+#~ "and \"<literal>no</literal>\". The default value is \"<literal>all</"
+#~ "literal>\", which causes APT to configure all packages. The "
+#~ "\"<literal>smart</literal>\" way is to configure only packages which need "
+#~ "to be configured before another package can be unpacked (Pre-Depends), "
+#~ "and let the rest be configured by &dpkg; with a call generated by the "
+#~ "ConfigurePending option (see below). On the other hand, \"<literal>no</"
+#~ "literal>\" will not configure anything, and totally relies on &dpkg; for "
+#~ "configuration (which at the moment will fail if a Pre-Depends is "
+#~ "encountered). Setting this option to any value other than <literal>all</"
+#~ "literal> will implicitly also activate the next option by default, as "
+#~ "otherwise the system could end in an unconfigured and potentially "
+#~ "unbootable state."
+#~ msgstr ""
+#~ "Geldige waarden zijn \"<literal>all</literal>\", \"<literal>smart</"
+#~ "literal>\" en \"<literal>no</literal>\". De standaardwaarde is "
+#~ "\"<literal>all</literal>\", die APT ertoe aanzet om alle pakketten te "
+#~ "configureren. De \"<literal>smart</literal>\"-manier bestaat erin om "
+#~ "enkel die pakketten te configureren die geconfigureerd moeten zijn "
+#~ "vooraleer een ander pakket uitgepakt kan worden (Pre-Depends "
+#~ "(voorvereisten)) en de configuratie van de andere pakketten over te laten "
+#~ "aan &dpkg; tijdens een door de optie ConfigurePending geïnitieerde "
+#~ "aanroep (zie later). Anderzijds zal \"<literal>no</literal>\" helemaal "
+#~ "niets configureren en volledig op &dpkg; vertrouwen voor de configuratie "
+#~ "(hetgeen momenteel zal mislukken als er een Pre-Depends opduikt). Deze "
+#~ "optie instellen op iets anders dan <literal>all</literal> zal standaard "
+#~ "impliciet ook de volgende optie activeren. Anders bestaat het gevaar dat "
+#~ "het systeem in een niet-geconfigureerde en niet op te starten toestand "
+#~ "achterblijft."
+
+#~ msgid ""
+#~ "Useful for the <literal>smart</literal> configuration as a package which "
+#~ "has pending triggers is not considered as <literal>installed</literal>, "
+#~ "and &dpkg; treats them as <literal>unpacked</literal> currently which is "
+#~ "a showstopper for Pre-Dependencies (see debbugs #526774). Note that this "
+#~ "will process all triggers, not only the triggers needed to configure this "
+#~ "package."
+#~ msgstr ""
+#~ "Nuttig voor de configuratie-instelling <literal>smart</literal>, vermits "
+#~ "een pakket met wachtende triggers niet als <literal>installed</literal> "
+#~ "(geïnstalleerd) beschouwd wordt en &dpkg; een dergelijk pakket momenteel "
+#~ "als <literal>unpacked</literal> (niet uitgepakt) behandelt, hetgeen een "
+#~ "hinderpaal is bij voorvereisten (zie Debian bug #526774). Merk op dat dit "
+#~ "alle triggers verwerkt, niet enkel de triggers die nodig zijn om dit "
+#~ "pakket te configureren."
+
+#~ msgid ""
+#~ "OrderList::Score {\n"
+#~ "\tDelete 500;\n"
+#~ "\tEssential 200;\n"
+#~ "\tImmediate 10;\n"
+#~ "\tPreDepends 50;\n"
+#~ "};"
+#~ msgstr ""
+#~ "OrderList::Score {\n"
+#~ "\tDelete 500;\n"
+#~ "\tEssential 200;\n"
+#~ "\tImmediate 10;\n"
+#~ "\tPreDepends 50;\n"
+#~ "};"
+
+#~ msgid ""
+#~ "Essential packages (and their dependencies) should be configured "
+#~ "immediately after unpacking. It is a good idea to do this quite early in "
+#~ "the upgrade process as these configure calls also currently require "
+#~ "<literal>DPkg::TriggersPending</literal> which will run quite a few "
+#~ "triggers (which may not be needed). Essentials get per default a high "
+#~ "score but the immediate flag is relatively low (a package which has a Pre-"
+#~ "Depends is rated higher). These option and the others in the same group "
+#~ "can be used to change the scoring. The following example shows the "
+#~ "settings with their default values. <placeholder type=\"literallayout\" "
+#~ "id=\"0\"/>"
+#~ msgstr ""
+#~ "Essentiële pakketten (en de pakketten waarvan zij afhankelijk zijn) "
+#~ "zouden onmiddellijk geconfigureerd moeten worden nadat ze uitgepakt zijn. "
+#~ "Het wordt aanbevolen om dit vrij vroeg in het opwaarderingsproces te doen "
+#~ "aangezien deze configure-aanroepen momenteel ook <literal>DPkg::"
+#~ "TriggersPending</literal> uitlokken, waardoor behoorlijk wat triggers "
+#~ "afgehandeld kunnen worden (wat misschien niet nodig is). Essentiële "
+#~ "pakketten krijgen per definitie een hoge score maar de vlag immediate "
+#~ "heeft een relatief lage score (een pakket met een voorvereiste krijgt een "
+#~ "hogere score). Deze optie en de andere uit dezelfde groep kunnen gebruikt "
+#~ "worden om de score aan te passen. Het volgende voorbeeld toont de "
+#~ "instellingen met hun standaardwaarden. <placeholder type=\"literallayout"
+#~ "\" id=\"0\"/>"
+
+#~ msgid "List fingerprints of trusted keys."
+#~ msgstr "De vingerafdrukken van de betrouwbare sleutels weergeven."
+
+#~ msgid "<filename>/etc/apt/trustdb.gpg</filename>"
+#~ msgstr "<filename>/etc/apt/trustdb.gpg</filename>"
+
+#~ msgid "Local trust database of archive keys."
+#~ msgstr "Lokale database van betrouwbare archiefsleutels."
+
+#~ msgid "&keyring-filename;"
+#~ msgstr "&keyring-filename;"
+
+#~ msgid "Keyring of &keyring-distro; archive trusted keys."
+#~ msgstr ""
+#~ "Sleutelbos met betrouwbare sleutels van het archief &keyring-distro;."
+
+#~ msgid "&keyring-removed-filename;"
+#~ msgstr "&keyring-removed-filename;"
+
+#~ msgid "Keyring of &keyring-distro; archive removed trusted keys."
+#~ msgstr ""
+#~ "Sleutelbos met uit het archief &keyring-distro; verwijderde betrouwbare "
+#~ "sleutels."
+
+#~ msgid ""
+#~ "In the future APT will refuse to work with unauthenticated repositories "
+#~ "by default until support for them is removed entirely. Users have the "
+#~ "option to opt-in to this behavior already by setting the configuration "
+#~ "option <option>Acquire::AllowInsecureRepositories</option> to "
+#~ "<literal>false</literal>."
+#~ msgstr ""
+#~ "In de toekomst zal APT standaard weigeren om met niet-geauthenticeerde "
+#~ "pakketbronnen te werken totdat die helemaal niet meer ondersteund zullen "
+#~ "worden. Gebruikers hebben de mogelijkheid om nu reeds voor dit gedrag te "
+#~ "kiezen door de configuratieoptie <option>Acquire::"
+#~ "AllowInsecureRepositories</option> in te stellen op <literal>false</"
+#~ "literal>."
+
+#~ msgid ""
+#~ "Allow the update operation to load data files from a repository without a "
+#~ "trusted signature. If enabled this option no data files will be loaded "
+#~ "and the update operation fails with a error for this source. The default "
+#~ "is false for backward compatibility. This will be changed in the future."
+#~ msgstr ""
+#~ "De bewerking update toelaten om databestanden op te halen van een "
+#~ "pakketbron zonder een betrouwbare ondertekening. Indien deze optie "
+#~ "geactiveerd is, zullen geen databestanden opgehaald worden en zal de "
+#~ "update-bewerking voor deze pakketbron mislukken met een foutmelding. "
+#~ "Omwille van achterwaartse compatibiliteit is de standaard false "
+#~ "(uitgezet). In de toekomst zal dit veranderen."
+
+#~ msgid "&apt-get;, &apt-conf;"
+#~ msgstr "&apt-get;, &apt-conf;"
+
+#~ msgid ""
+#~ "<command>apt</command> (Advanced Package Tool) is the command-line tool "
+#~ "for handling packages. It provides a commandline interface for the "
+#~ "package management of the system. See also &apt-get; and &apt-cache; for "
+#~ "more low-level command options."
+#~ msgstr ""
+#~ "<command>apt</command> (Advanced Package Tool - geavanceerd "
+#~ "pakketgereedschap) is gereedschap om aan de commandoregel pakketten te "
+#~ "behandelen. Het biedt een commandoregelinterface voor het pakketbeheer "
+#~ "van het systeem. Raadpleeg ook &apt-get; en &apt-cache; voor bijkomende "
+#~ "basale commando-opties."
+
+#~ msgid ""
+#~ "<literal>search</literal> searches for the given term(s) and display "
+#~ "matching packages."
+#~ msgstr ""
+#~ "<literal>search</literal> zoekt naar de opgegeven term(en) en geeft de "
+#~ "ermee overeenkomende pakketten weer."
+
+#~ msgid ""
+#~ "<literal>show</literal> shows the package information for the given "
+#~ "package(s)."
+#~ msgstr ""
+#~ "<literal>show</literal> geeft over het/de opgegeven pakket(ten) "
+#~ "pakketinformatie weer."
+
+#~ msgid ""
+#~ "<literal>install</literal> is followed by one or more package names "
+#~ "desired for installation or upgrading."
+#~ msgstr ""
+#~ "<literal>install</literal> wordt gevolgd door een of meer pakketnamen die "
+#~ "men wenst te installeren of op te waarderen."
+
+#~ msgid ""
+#~ "<literal>update</literal> is used to resynchronize the package index "
+#~ "files from their sources."
+#~ msgstr ""
+#~ "<literal>update</literal> wordt gebruikt om de indexbestanden met "
+#~ "beschikbare pakketten terug te synchroniseren met hun pakketbronnen."
+
+#~ msgid "Script usage"
+#~ msgstr "Gebruik van scripts"
+
+#~ msgid "Differences to &apt-get;"
+#~ msgstr "Verschillen met &apt-get;"
+
+#~ msgid ""
+#~ "The <command>apt</command> command is meant to be pleasant for end users "
+#~ "and does not need to be backward compatible like &apt-get;. Therefore "
+#~ "some options are different:"
+#~ msgstr ""
+#~ "Het commando <command>apt</command> is bedoeld om prettig aan te voelen "
+#~ "voor eindgebruikers en moet niet neerwaarts compatibel zijn zoals &apt-"
+#~ "get;. Daarom zijn sommige opties verschillend:"
+
+#~ msgid "The option <literal>DPkg::Progress-Fancy</literal> is enabled."
+#~ msgstr "De optie <literal>DPkg::Progress-Fancy</literal> is geactiveerd."
+
+#~ msgid "The option <literal>APT::Color</literal> is enabled."
+#~ msgstr "De optie <literal>APT::Color</literal> is geactiveerd."
+
+#~ msgid ""
+#~ "A new <literal>list</literal> command is available similar to "
+#~ "<literal>dpkg --list</literal>."
+#~ msgstr ""
+#~ "Een nieuw commando <literal>list</literal> staat ter beschikking, "
+#~ "vergelijkbaar met <literal>dpkg --list</literal>."
+
+#~ msgid ""
+#~ "The option <literal>upgrade</literal> has <literal>--with-new-pkgs</"
+#~ "literal> enabled by default."
+#~ msgstr ""
+#~ "Bij de optie <literal>upgrade</literal> is <literal>--with-new-pkgs</"
+#~ "literal> standaard geactiveerd."
+
+#~ msgid ""
+#~ "No action; perform a simulation of events that would occur but do not "
+#~ "actually change the system. Configuration Item: <literal>APT::Get::"
+#~ "Simulate</literal>."
+#~ msgstr ""
+#~ "Niets doen; het uitvoeren van een simulatie van de operaties die zouden "
+#~ "plaats vinden, maar zonder wijzigingen aan het systeem aan te brengen. "
+#~ "Configuratie-item: <literal>APT::Get::Simulate</literal>."
+
+#~ msgid ""
+#~ "Simulated runs performed as a user will automatically deactivate locking "
+#~ "(<literal>Debug::NoLocking</literal>), and if the option <literal>APT::"
+#~ "Get::Show-User-Simulation-Note</literal> is set (as it is by default) a "
+#~ "notice will also be displayed indicating that this is only a simulation. "
+#~ "Runs performed as root do not trigger either NoLocking or the notice - "
+#~ "superusers should know what they are doing without further warnings from "
+#~ "<literal>apt-get</literal>."
+#~ msgstr ""
+#~ "Als men als gewone gebruiker een simulatie uitvoert, wordt vergrendeling "
+#~ "automatisch uitgeschakeld (<literal>Debug::NoLocking</literal>), en "
+#~ "indien de optie <literal>APT::Get::Show-User-Simulation-Note</literal> "
+#~ "ingesteld staat (wat standaard het geval is), zal er ook een mededeling "
+#~ "getoond worden dat het hier slechts om een simulatie gaat. Door de "
+#~ "systeembeheerder uitgevoerd, lokt deze operatie geen NoLocking "
+#~ "(vergrendeling uitzetten) en geen mededeling uit - systeembeheerders "
+#~ "zouden moeten weten wat ze doen zonder verdere waarschuwingen vanwege "
+#~ "<literal>apt-get</literal>."
+
+#~ msgid ""
+#~ "Ignore if packages can't be authenticated and don't prompt about it. "
+#~ "This is useful for tools like pbuilder. Configuration Item: "
+#~ "<literal>APT::Get::AllowUnauthenticated</literal>."
+#~ msgstr ""
+#~ "Het feit dat pakketten niet geauthenticeerd kunnen worden, negeren en er "
+#~ "geen vragen bij stellen. Dit is nuttig voor gereedschap zoals pbuilder. "
+#~ "Configuratie-item: <literal>APT::Get::AllowUnauthenticated</literal>."
+
+#~ msgid ""
+#~ "Pass advanced options to gpg. With adv --recv-key you can download the "
+#~ "public key."
+#~ msgstr ""
+#~ "Geavanceerde opties doorgeven aan gpg. Met de opdracht adv --recv-key "
+#~ "kunt u de publieke sleutel downloaden."
+
+#~ msgid "mark/unmark a package as being automatically-installed"
+#~ msgstr "Een pakket aan/uitvinken als automatisch geïnstalleerd"
+
+#~ msgid ""
+#~ "<command>apt-mark</command> will change whether a package has been marked "
+#~ "as being automatically installed."
+#~ msgstr ""
+#~ "Met <command>apt-mark</command> kunt u een pakket markeren als "
+#~ "automatisch geïnstalleerd of niet."
+
+#~ msgid ""
+#~ "<literal>hold</literal> is used to mark a package as held back, which "
+#~ "will prevent the package from being automatically installed, upgraded or "
+#~ "removed. The command is only a wrapper around <command>dpkg --set-"
+#~ "selections</command> and the state is therefore maintained by &dpkg; and "
+#~ "not affected by the <option>--file</option> option."
+#~ msgstr ""
+#~ "<literal>hold</literal> wordt gebruikt om een pakket als tegengehouden te "
+#~ "markeren. Dit voorkomt dat het pakket automatisch geïnstalleerd, "
+#~ "opgewaardeerd of verwijderd wordt. Het commando is slechts een wikkel "
+#~ "rond <command>dpkg --set-selections</command> en om die reden wordt de "
+#~ "status bijgehouden door &dpkg; en niet beïnvloed door de optie <option>--"
+#~ "file</option>."
+
+#~ msgid ""
+#~ "If a package comes from a archive without a signature, or with a "
+#~ "signature that apt does not have a key for, that package is considered "
+#~ "untrusted, and installing it will result in a big warning. <command>apt-"
+#~ "get</command> will currently only warn for unsigned archives; future "
+#~ "releases might force all sources to be verified before downloading "
+#~ "packages from them."
+#~ msgstr ""
+#~ "Indien een pakket afkomstig is van een archief zonder ondertekening of "
+#~ "met een ondertekening waarvoor apt geen sleutel heeft, dan wordt dat "
+#~ "pakket als onbetrouwbaar beschouwd. De installatie ervan zal een forse "
+#~ "waarschuwing uitlokken. Momenteel zal <command>apt-get</command> enkel "
+#~ "waarschuwen bij niet-ondertekende archieven. Bij toekomstige uitgaven kan "
+#~ "het zijn dat een verificatie van de pakketbronnen verplicht gesteld wordt "
+#~ "vooraleer er pakketten van opgehaald worden."
+
+#~ msgid ""
+#~ "Version 2 of this protocol dumps more information, including the protocol "
+#~ "version, the APT configuration space and the packages, files and versions "
+#~ "being changed. Version 3 adds the architecture and <literal>MultiArch</"
+#~ "literal> flag to each version being dumped."
+#~ msgstr ""
+#~ "Versie 2 van dit protocol geeft meer informatie weer, onder meer de "
+#~ "protocolversie, de configuratieruimte van APT en de pakketten, bestanden "
+#~ "en versies die gewijzigd worden. Versie 3 voegt aan iedere weergegeven "
+#~ "versie de architectuur toe en de <literal>MultiArch</literal>-vlag."
+
+#~ msgid ""
+#~ "to the versions that are not installed and do not belong to the target "
+#~ "release."
+#~ msgstr ""
+#~ "aan de versies die niet geïnstalleerd zijn en niet behoren tot de "
+#~ "streefrelease."
+
+#~ msgid ""
+#~ "Each line specifying a source starts with type (e.g. <literal>deb-src</"
+#~ "literal>) followed by options and arguments for this type. Individual "
+#~ "entries cannot be continued onto a following line. Empty lines are "
+#~ "ignored, and a <literal>#</literal> character anywhere on a line marks "
+#~ "the remainder of that line as a comment."
+#~ msgstr ""
+#~ "Elke regel waarin een pakketbron beschreven wordt, begint met het type "
+#~ "bron (bijv. <literal>deb-src</literal>), gevolgd door opties en "
+#~ "argumenten voor dat type. Een individueel item kan niet voortlopen op een "
+#~ "volgende regel. Lege regels worden overgeslagen en het teken <literal>#</"
+#~ "literal> ergens op de regel geeft aan dat het vervolg van die regel "
+#~ "commentaar is."
+
+#~ msgid "deb [ options ] uri suite [component1] [component2] [...]"
+#~ msgstr "deb [ opties ] URI suite [component1] [component2] [...]"
+
+#~ msgid ""
+#~ " Types: deb deb-src\n"
+#~ " URIs: http://example.com\n"
+#~ " Suites: stable testing\n"
+#~ " Sections: component1 component2\n"
+#~ " Description: short\n"
+#~ " long long long\n"
+#~ " [option1]: [option1-value]\n"
+#~ "\n"
+#~ " Types: deb\n"
+#~ " URIs: http://another.example.com\n"
+#~ " Suites: experimental\n"
+#~ " Sections: component1 component2\n"
+#~ " Enabled: no\n"
+#~ " Description: short\n"
+#~ " long long long\n"
+#~ " [option1]: [option1-value]\n"
+#~ " "
+#~ msgstr ""
+#~ " Types: deb deb-src\n"
+#~ " URIs: http://example.com\n"
+#~ " Suites: stable testing\n"
+#~ " Sections: component1 component2\n"
+#~ " Description: kort\n"
+#~ " lang lang lang\n"
+#~ " [optie1]: [waarde-van-optie1]\n"
+#~ "\n"
+#~ " Types: deb\n"
+#~ " URIs: http://another.example.com\n"
+#~ " Suites: experimental\n"
+#~ " Sections: component1 component2\n"
+#~ " Enabled: no\n"
+#~ " Description: kort\n"
+#~ " lang lang lang\n"
+#~ " [optie1]: [waarde-van-optie1]\n"
+#~ " "
+
+#~ msgid ""
+#~ "<literal>options</literal> is always optional and needs to be surrounded "
+#~ "by square brackets. It can consist of multiple settings in the form "
+#~ "<literal><replaceable>setting</replaceable>=<replaceable>value</"
+#~ "replaceable></literal>. Multiple settings are separated by spaces. The "
+#~ "following settings are supported by APT (note however that unsupported "
+#~ "settings will be ignored silently):"
+#~ msgstr ""
+#~ "<literal>opties</literal> zijn steeds facultatief en moeten binnen "
+#~ "vierkante haakjes staan. Ze kunnen bestaan uit verschillende instellingen "
+#~ "in de vorm van <literal><replaceable>instelling</"
+#~ "replaceable>=<replaceable>waarde</replaceable></literal>. De volgende "
+#~ "instellingen worden ondersteund door APT (weet wel dat niet-ondersteunde "
+#~ "instellingen stilzwijgend genegeerd zullen worden):"
+
+#~ msgid ""
+#~ "<literal>arch+=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#~ "replaceable>,…</literal> and <literal>arch-=<replaceable>arch1</"
+#~ "replaceable>,<replaceable>arch2</replaceable>,…</literal> which can be "
+#~ "used to add/remove architectures from the set which will be downloaded."
+#~ msgstr ""
+#~ "<literal>arch+=<replaceable>architectuur1</replaceable>,"
+#~ "<replaceable>architectuur2</replaceable>,…</literal> en <literal>arch-"
+#~ "=<replaceable>architectuur1</replaceable>,<replaceable>architectuur2</"
+#~ "replaceable>,…</literal> hetgeen gebruikt kan worden om architecturen toe "
+#~ "te voegen aan/te verwijderen uit de set architecturen waarvoor gedownload "
+#~ "moet worden."
+
+#~ msgid ""
+#~ "<literal>trusted=yes</literal> can be set to indicate that packages from "
+#~ "this source are always authenticated even if the <filename>Release</"
+#~ "filename> file is not signed or the signature can't be checked. This "
+#~ "disables parts of &apt-secure; and should therefore only be used in a "
+#~ "local and trusted context. <literal>trusted=no</literal> is the opposite "
+#~ "which handles even correctly authenticated sources as not authenticated."
+#~ msgstr ""
+#~ "<literal>trusted=yes</literal> kan opgegeven worden om aan te geven dat "
+#~ "pakketten uit die pakketbron steeds geauthenticeerd zijn, zelfs al is het "
+#~ "<filename>Release</filename>-bestand niet ondertekend of kan de "
+#~ "handtekening niet gecontroleerd worden. Dit schakelt onderdelen van &apt-"
+#~ "secure; uit en zou daarom enkel gebruikt mogen worden in een lokale en "
+#~ "betrouwbare context. <literal>trusted=no</literal> is het tegengestelde "
+#~ "en behandelt ook correct geauthenticeerde pakketbronnen als niet-"
+#~ "geauthenticeerd."
+
+#~ msgid "Some examples:"
+#~ msgstr "Enkele voorbeelden:"
+
+#~ msgid ""
+#~ "deb http://ftp.debian.org/debian &debian-stable-codename; main contrib "
+#~ "non-free\n"
+#~ "deb http://security.debian.org/ &debian-stable-codename;/updates main "
+#~ "contrib non-free\n"
+#~ " "
+#~ msgstr ""
+#~ "deb http://ftp.debian.org/debian &debian-stable-codename; main contrib "
+#~ "non-free\n"
+#~ "deb http://security.debian.org/ &debian-stable-codename;/updates main "
+#~ "contrib non-free\n"
+#~ " "
+
+#~ msgid ""
+#~ "This is a space separated list of all the architectures that appear under "
+#~ "search section. The special architecture 'source' is used to indicate "
+#~ "that this tree has a source archive."
+#~ msgstr ""
+#~ "Dit is een door spaties gescheiden lijst van alle architecturen die te "
+#~ "vinden zijn onder elke sectie. De bijzondere architectuur 'source' wordt "
+#~ "gebruikt om aan te geven dat zich in die boom een broncodearchief bevindt."
diff --git a/doc/po/pl.po b/doc/po/pl.po
new file mode 100644
index 000000000..d588fa8ec
--- /dev/null
+++ b/doc/po/pl.po
@@ -0,0 +1,10774 @@
+# Translation of apt package man pages
+# Copyright (C) 2004 Krzysztof Fiertek <akfedux@megapolis.pl>
+# Copyright (C) 2000-2004, 2010, 2012 Robert Luberda <robert@debian.org>
+# This file is distributed under the same license as the apt package.
+#
+# Translators:
+#
+# Krzysztof Fiertek <akfedux@megapolis.pl>, 2004.
+# Robert Luberda <robert@debian.org> 2000-2004, 2010, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt-doc 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-06-01 10:51+0200\n"
+"PO-Revision-Date: 2014-07-04 02:13+0200\n"
+"Last-Translator: Robert Luberda <robert@debian.org>\n"
+"Language-Team: Polish <manpages-pl-list@lists.sourceforge.net>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.4\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY apt-author.team \"\n"
+" <author>\n"
+" <othername>APT team</othername>\n"
+" <contrib></contrib>\n"
+" </author>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY apt-author.team \"\n"
+" <author>\n"
+" <othername>zespół APT</othername>\n"
+" <contrib></contrib>\n"
+" </author>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY apt-qapage \"\n"
+"\t<para>\n"
+"\t\t<ulink url='http://packages.qa.debian.org/a/apt.html'>QA Page</ulink>\n"
+"\t</para>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY apt-qapage \"\n"
+"\t<para>\n"
+"\t\t<ulink url='http://packages.qa.debian.org/a/apt.html'>Strona QA</ulink>\n"
+"\t</para>\n"
+"\">\n"
+
+#
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Boiler plate Bug reporting section -->\n"
+"<!ENTITY manbugs \"\n"
+" <refsect1><title>Bugs</title>\n"
+" <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+" If you wish to report a bug in APT, please see\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
+" &reportbug; command.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+"<!-- Boiler plate Bug reporting section -->\n"
+"<!ENTITY manbugs \"\n"
+" <refsect1><title>Bugs</title>\n"
+" <para><ulink url='http://bugs.debian.org/src:apt'>Strona błędów APT</ulink>. \n"
+" Aby zgłosić błąd w APT, proszę przeczytać\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</filename> lub opis polecenia\n"
+" &reportbug;.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Boiler plate Author section -->\n"
+"<!ENTITY manauthor \"\n"
+" <refsect1><title>Author</title>\n"
+" <para>APT was written by the APT team <email>apt@packages.debian.org</email>.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+"<!-- Boiler plate Author section -->\n"
+"<!ENTITY manauthor \"\n"
+" <refsect1><title>Autor</title>\n"
+" <para>APT zostało napisane przez zespół APT <email>apt@packages.debian.org</email>.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-commonoptions \"\n"
+" <varlistentry><term><option>-h</option></term>\n"
+" <term><option>--help</option></term>\n"
+" <listitem><para>Show a short usage summary.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-commonoptions \"\n"
+" <varlistentry><term><option>-h</option></term>\n"
+" <term><option>--help</option></term>\n"
+" <listitem><para>Wyświetla krótkie informacje o użyciu.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-v</option></term>\n"
+" <term><option>--version</option></term>\n"
+" <listitem><para>Show the program version.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-v</option></term>\n"
+" <term><option>--version</option></term>\n"
+" <listitem><para>Wyświetla wersję programu.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-c</option></term>\n"
+" <term><option>--config-file</option></term>\n"
+" <listitem><para>Configuration File; Specify a configuration file to use. \n"
+" The program will read the default configuration file and then this \n"
+" configuration file. If configuration settings need to be set before the\n"
+" default configuration files are parsed specify a file with the <envar>APT_CONFIG</envar>\n"
+" environment variable. See &apt-conf; for syntax information.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-c</option></term>\n"
+" <term><option>--config-file</option></term>\n"
+" <listitem><para>Plik konfiguracyjny. Podaje plik konfiguracyjny do użycia.\n"
+" Program najpierw przeczyta swój domyślny plik konfiguracyjny, a następnie plik podany jako argument tej opcji. Jeśli jest potrzeba ustawienia opcji konfiguracji zanim domyślny plik konfiguracyjny zostanie przetworzony, należy podać plik do użycia w zmiennej środowiskowej <envar>APT_CONFIG</envar>.\n"
+" Informacje o składni pliku można znaleźć w &apt-conf;.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-o</option></term>\n"
+" <term><option>--option</option></term>\n"
+" <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
+" configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
+" <option>-o</option> and <option>--option</option> can be used multiple\n"
+" times to set different options.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-o</option></term>\n"
+" <term><option>--option</option></term>\n"
+" <listitem><para>Ustawia opcję konfiguracji. Pozwala ustawić dowolną\n"
+" opcję konfiguracji. Składnia jest następująca: <option>-o Foo::Bar=bar</option>.\n"
+" <option>-o</option> i <option>--option</option> można podać wielokrotnie - \n"
+" do ustawiania różnych opcji.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-cmdblurb \"\n"
+" <para>All command line options may be set using the configuration file, the\n"
+" descriptions indicate the configuration option to set. For boolean\n"
+" options you can override the config file by using something like \n"
+" <option>-f-</option>,<option>--no-f</option>, <option>-f=no</option>\n"
+" or several other variations.\n"
+" </para>\n"
+"\">\n"
+msgstr ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-cmdblurb \"\n"
+"<para>Wszystkie opcje linii poleceń mogą być ustawione w pliku konfiguracyjnym.\n"
+" Poniższe opisy wskazują, którą opcję w pliku konfiguracyjnym należy ustawić.\n"
+" W przypadku opcji logicznych, można unieważnić ustawienia pliku konfiguracyjnego,\n"
+" używając <option>-f-</option>, <option>--no-f</option>, <option>-f=no</option>\n"
+" albo czegoÅ› podobnego.\n"
+" </para>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-aptconf \"\n"
+" <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>\n"
+" <listitem><para>APT configuration file.\n"
+" Configuration Item: <literal>Dir::Etc::Main</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-aptconf \"\n"
+" <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>\n"
+" <listitem><para>Plik konfiguracyjny APT.\n"
+" Pozycja w pliku konfiguracyjnym: <literal>Dir::Etc::Main</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
+" <listitem><para>APT configuration file fragments.\n"
+" Configuration Item: <literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
+" <listitem><para>Części pliku konfiguracyjnego.\n"
+" Pozycja w pliku konfiguracyjnym: <literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-cachearchives \"\n"
+" <varlistentry><term><filename>&cachedir;/archives/</filename></term>\n"
+" <listitem><para>Storage area for retrieved package files.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-cachearchives \"\n"
+" <varlistentry><term><filename>&cachedir;/archives/</filename></term>\n"
+" <listitem><para>Składnica pobranych plików pakietów.\n"
+" Pozycja w pliku konfiguracyjnym: <literal>Dir::Cache::Archives</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>\n"
+" <listitem><para>Storage area for package files in transit.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>\n"
+" <listitem><para>Składnica obecnie pobieranych plików pakietów.\n"
+" Pozycja w pliki konfiguracyjnym: <literal>Dir::Cache::Archives</literal> (<filename>partial</filename> zostanie dodane automatycznie)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-preferences \"\n"
+" <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
+" <listitem><para>Version preferences file.\n"
+" This is where you would specify &quot;pinning&quot;,\n"
+" i.e. a preference to get certain packages\n"
+" from a separate source\n"
+" or from a different version of a distribution.\n"
+" Configuration Item: <literal>Dir::Etc::Preferences</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-preferences \"\n"
+" <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
+" <listitem><para>Plik zawierajÄ…cy preferencje wyboru wersji.\n"
+" Jest to miejsce, w którym określa się tzw. &quot;pinning&quot;,\n"
+" tj. preferencje, skąd brać pewne pakiety -\n"
+" z innego źródła,\n"
+" z innej dystrybucji lub o innej wersji.\n"
+" Pozycja w pliku konfiguracyjnym:<literal>Dir::Etc::Preferences</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>\n"
+" <listitem><para>File fragments for the version preferences.\n"
+" Configuration Item: <literal>Dir::Etc::PreferencesParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>\n"
+" <listitem><para>Części pliku preferencji wyboru wersji.\n"
+" Pozycja w pliku konfiguracyjnym: <literal>Dir::Etc::PreferencesParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-sourceslist \"\n"
+" <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+" <listitem><para>Locations to fetch packages from.\n"
+" Configuration Item: <literal>Dir::Etc::SourceList</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-sourceslist \"\n"
+" <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+" <listitem><para>Lokalizacje, z których będą ściągane pakiety.\n"
+" Pozycja w pliku konfiguracyjnym: <literal>Dir::Etc::SourceList</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
+" <listitem><para>File fragments for locations to fetch packages from.\n"
+" Configuration Item: <literal>Dir::Etc::SourceParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
+" <listitem><para>Części pliku zawierającego lokalizacje, z której są pobierane pakiety.\n"
+" Pozycja w pliku konfiguracyjnym: <literal>Dir::Etc::SourceParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-statelists \"\n"
+" <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
+" <listitem><para>Storage area for state information for each package resource specified in\n"
+" &sources-list;\n"
+" Configuration Item: <literal>Dir::State::Lists</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-statelists \"\n"
+" <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
+" <listitem><para>Składnica zawierająca informacje o każdym zasobie pakietów podanym w\n"
+" &sources-list;\n"
+" Pozycja w pliku konfiguracyjnym: <literal>Dir::State::Lists</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>\n"
+" <listitem><para>Storage area for state information in transit.\n"
+" Configuration Item: <literal>Dir::State::Lists</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>\n"
+" <listitem><para>Składnica obecnie pobieranych informacji o stanie pakietów.\n"
+" Pozycja w pliku konfiguracyjnym: <literal>Dir::State::Lists</literal> (<filename>partial</filename> zostanie dodane automatycznie)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-trustedgpg \"\n"
+" <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
+" <listitem><para>Keyring of local trusted keys, new keys will be added here.\n"
+" Configuration Item: <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-trustedgpg \"\n"
+" <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
+" <listitem><para>Składnica lokalnych zaufanych kluczy gpg; będą tu dodawane nowe klucze.\n"
+" Pozycja w pliku konfiguracyjnym: <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
+" <listitem><para>File fragments for the trusted keys, additional keyrings can\n"
+" be stored here (by other packages or the administrator).\n"
+" Configuration Item <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
+" <listitem><para>Fragmenty plików zawierających zaufane klucze gpg, można tu składować\n"
+" dodatkowe klucze (dodane przez administratora bądź inne pakiety).\n"
+" Pozycja w pliku konfiguracyjnym: <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-extended_states \"\n"
+" <varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>\n"
+" <listitem><para>Status list of auto-installed packages.\n"
+" Configuration Item: <literal>Dir::State::extended_states</literal>.\n"
+" </para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY file-extended_states \"\n"
+" <varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>\n"
+" <listitem><para>Lista stanów pakietów zainstalowanych automatycznie.\n"
+" Pozycja w pliku konfiguracyjnym: <literal>Dir::State::extended_states</literal>.\n"
+" </para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is the section header for the following paragraphs - comparable\n"
+" to the other headers like NAME and DESCRIPTION and should therefore be uppercase. -->\n"
+"<!ENTITY translation-title \"TRANSLATION\">\n"
+msgstr "<!ENTITY translation-title \"TÅUMACZENIE\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is a placeholder. You should write here who has contributed\n"
+" to the translation in the past, who is responsible now and maybe further information\n"
+" specially related to your translation. -->\n"
+"<!ENTITY translation-holder \"\n"
+" The english translation was done by John Doe <email>john@doe.org</email> in 2009,\n"
+" 2010 and Daniela Acme <email>daniela@acme.us</email> in 2010 together with the\n"
+" Debian Dummy l10n Team <email>debian-l10n-dummy@lists.debian.org</email>.\n"
+"\">\n"
+msgstr ""
+"<!ENTITY translation-holder \"\n"
+" Tłumaczenie stron podręcznika: Robert Luberda <email>robert@debian.org</email>, 2000-2012.\n"
+" TÅ‚umaczenie przewodnika offline: Krzysztof Fiertek <email>akfedux@megapolis.pl</email>, 2004\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: As a translation is allowed to have 20% of untranslated/fuzzy strings\n"
+" in a shipped manpage newer/modified paragraphs will maybe appear in english in\n"
+" the generated manpage. This sentence is therefore here to tell the reader that this\n"
+" is not a mistake by the translator - obviously the target is that at least for stable\n"
+" releases this sentence is not needed. :) -->\n"
+"<!ENTITY translation-english \"\n"
+" Note that this translated document may contain untranslated parts.\n"
+" This is done on purpose, to avoid losing content when the\n"
+" translation is lagging behind the original content.\n"
+"\">\n"
+msgstr ""
+"<!ENTITY translation-english \"\n"
+" Proszę zauważyć, że przetłumaczony dokument może zawierać fragmenty nieprzetłumaczone.\n"
+" Ma to na celu uniknięcie utracenia istotnych informacji, w przypadkach gdy\n"
+" oryginał zostanie zaktualizowany, a tłumaczenie - nie.\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
+"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
+"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"opcja_konfiguracji"
+"\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -c=config_file e.g. -c=./apt.conf --> <!ENTITY "
+"synopsis-config-file \"config_file\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -c=config_file e.g. -c=./apt.conf --> <!ENTITY "
+"synopsis-config-file \"plik_konfiguracyjny\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
+"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"\"target_release\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
+"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"\"wydanie_docelowe\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -a=architecture e.g. -a=armel --> <!ENTITY "
+"synopsis-architecture \"architecture\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in -a=architecture e.g. -a=armel --> <!ENTITY "
+"synopsis-architecture \"architektura\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-get install pkg e.g. apt-get install awesome "
+"--> <!ENTITY synopsis-pkg \"pkg\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-get install pkg e.g. apt-get install awesome "
+"--> <!ENTITY synopsis-pkg \"pakiet\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in pkg=pkg_version_number e.g. apt=0.8.15 --> <!"
+"ENTITY synopsis-pkg-ver-number \"pkg_version_number\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in pkg=pkg_version_number e.g. apt=0.8.15 --> <!"
+"ENTITY synopsis-pkg-ver-number \"nr_wersji_pakietu\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache pkgnames prefix e.g. apt-cache "
+"pkgnames apt --> <!ENTITY synopsis-prefix \"prefix\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-cache pkgnames prefix e.g. apt-cache "
+"pkgnames apt --> <!ENTITY synopsis-prefix \"prefiks\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache search regex e.g. apt-cache search "
+"awesome --> <!ENTITY synopsis-regex \"regex\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-cache search regex e.g. apt-cache search "
+"awesome --> <!ENTITY synopsis-regex \"wyr_regularne\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
+"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
+"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"pkt_montowania_cdromu\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates -t=temporary_directory e.g. "
+"apt-extracttemplates -t=/tmp --> <!ENTITY synopsis-tmp-directory "
+"\"temporary_directory\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates -t=temporary_directory e.g. "
+"apt-extracttemplates -t=/tmp --> <!ENTITY synopsis-tmp-directory "
+"\"katalog_tymczasowy\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates filename --> <!ENTITY "
+"synopsis-filename \"filename\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates filename --> <!ENTITY "
+"synopsis-filename \"nazwa_pliku\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-path \"path\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-path \"ścieżka"
+"\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-override "
+"\"override-file\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-override "
+"\"plik_nadpisań\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-pathprefix "
+"\"pathprefix\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-pathprefix "
+"\"preifks_ścieżki\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"generate section --> <!ENTITY synopsis-section \"section\">"
+msgstr ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"generate section --> <!ENTITY synopsis-section \"sekcja\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
+msgstr ""
+"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+"473041FA --> <!ENTITY synopsis-keyid \"id_klucza\">"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+msgid "8"
+msgstr "8"
+
+#. type: Content of: <refentry><refmeta><refmiscinfo>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "APT"
+msgstr "APT"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.8.xml
+msgid "command-line interface"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "Description"
+msgstr "Opis"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"<command>apt</command> provides a high-level commandline interface for the "
+"package management system. It is intended as an end user interface and "
+"enables some options better suited for interactive usage by default compared "
+"to more specialized APT tools like &apt-get; and &apt-cache;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"Much like <command>apt</command> itself, its manpage is intended as an end "
+"user interface and as such only mentions the most used commands and options "
+"partly to not duplicate information in multiple places and partly to avoid "
+"overwhelming readers with a cornucopia of options and details."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+#, fuzzy
+#| msgid "apt-get"
+msgid "(&apt-get;)"
+msgstr "apt-get"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>update</option> is used to download package information from all "
+"configured sources. Other commands operate on this data to e.g. perform "
+"package upgrades or search in and display details about all packages "
+"available for installation."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>upgrade</option> is used to install available upgrades of all "
+"packages currently installed on the system from the sources configured via "
+"&sources-list;. New packages will be installed if required to satisfy "
+"dependencies, but existing packages will never be removed. If an upgrade for "
+"a package requires the remove of an installed package the upgrade for this "
+"package isn't performed."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>full-upgrade</literal> performs the function of upgrade but will "
+"remove currently installed packages if this is needed to upgrade the system "
+"as a whole."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml apt-key.8.xml
+msgid ","
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Performs the requested action on one or more packages specified via &regex;, "
+"&glob; or exact match. The requested action can be overridden for specific "
+"packages by append a plus (+) to the package name to install this package or "
+"a minus (-) to remove it."
+msgstr ""
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+#, fuzzy
+#| msgid ""
+#| "A specific version of a package can be selected for installation by "
+#| "following the package name with an equals and the version of the package "
+#| "to select. This will cause that version to be located and selected for "
+#| "install. Alternatively a specific distribution can be selected by "
+#| "following the package name with a slash and the version of the "
+#| "distribution or the Archive name (stable, testing, unstable)."
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals (=) and the version of the package "
+"to select. Alternatively the version from a specific release can be selected "
+"by following the package name with a forward slash (/) and codename (&debian-"
+"stable-codename;, &debian-testing-codename;, sid …) or suite name (stable, "
+"testing, unstable). This will also select versions from this release for "
+"dependencies of this package if needed to satisfy the request."
+msgstr ""
+"Konkretna wersja pakietu może być wybrana do zainstalowania przez "
+"umieszczenie po nazwie pakietu znaku równości, a za nim wybranej wersji "
+"pakietu. Podana wersja zostanie wyszukana i wybrana do zainstalowania. "
+"Również konkretna dystrybucja może być wybrana przez umieszczenie po nazwie "
+"pakietu znaku ukośnika, po którym następuje wersja dystrybucji bądź nazwa "
+"archiwum (stable, testing, unstable)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Removing a package removes all packaged data, but leaves usually small "
+"(modified) user configuration files behind, in case the remove was an "
+"accident. Just issuing an installation request for the accidentally removed "
+"package will restore its function as before in that case. On the other hand "
+"you can get rid of these leftovers by calling <command>purge</command> even "
+"on already removed packages. Note that this does not affect any data or "
+"configuration stored in your home directory."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>autoremove</literal> is used to remove packages that were "
+#| "automatically installed to satisfy dependencies for other packages and "
+#| "are now no longer needed."
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed as dependencies changed or the package(s) needing them "
+"were removed in the meantime."
+msgstr ""
+"<literal>autoremove</literal> jest używane do usuwania pakietów, które "
+"zostały zainstalowane automatycznie, żeby rozwiązać zależności w innych "
+"pakietach, i nie są już potrzebne."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"You should check that the list does not include applications you have grown "
+"to like even though they were once installed just as a dependency of another "
+"package. You can mark such a package as manually installed by using &apt-"
+"mark;. Packages which you have installed explicitly via <command>install</"
+"command> are also never proposed for automatic removal."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+#, fuzzy
+#| msgid "&apt-conf;"
+msgid "(&apt-cache;)"
+msgstr "&apt-conf;"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>search</option> can be used to search for the given &regex; term(s) "
+"in the list of available packages and display matches. This can e.g. be "
+"useful if you are looking for packages having a specific feature. If you "
+"are looking for a package including a specific file try &apt-file;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Show information about the given package(s) including its dependencies, "
+"installation and download size, sources the package is available from, the "
+"description of the packages content and much more. It can e.g. be helpful to "
+"look at this information before allowing &apt; to remove a package or while "
+"searching for new packages to install."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(work-in-progress)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>list</option> is somewhat similar to <command>dpkg-query --list</"
+"command> in that it can display a list of packages satisfying certain "
+"criteria. It supports &glob; patterns for matching package names as well as "
+"options to list installed (<option>--installed</option>), upgradeable "
+"(<option>--upgradeable</option>) or all available (<option>--all-versions</"
+"option>) versions."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>edit-sources</literal> lets you edit your &sources-list; files in "
+"your preferred texteditor while also providing basic sanity checks."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml
+msgid "Script Usage and Differences from Other APT Tools"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"The &apt; commandline is designed as an end-user tool and it may change "
+"behavior between versions. While it tries not to break backward "
+"compatibility this is not guaranteed either if a change seems beneficial for "
+"interactive use."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"All features of &apt; are available in dedicated APT tools like &apt-get; "
+"and &apt-cache; as well. &apt; just changes the default value of some "
+"options (see &apt-conf; and specifically the Binary scope). So you should "
+"prefer using these commands (potentially with some additional options "
+"enabled) in your scripts as they keep backward compatibility as much as "
+"possible."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "See Also"
+msgstr "Zobacz także"
+
+#
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+#, fuzzy
+#| msgid ""
+#| "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, "
+#| "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, &apt-"
+#| "preferences;, the APT Howto."
+msgid ""
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
+"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+msgstr ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, "
+"&apt-config;, &apt-secure;, Przewodnik APT dla użytkowników w &guidesdir;, "
+"&apt-preferences;, APT Howto."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-cdrom.8.xml
+#: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml
+msgid "Diagnostics"
+msgstr "Diagnostyka"
+
+#
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+#, fuzzy
+#| msgid ""
+#| "<command>apt-get</command> returns zero on normal operation, decimal 100 "
+#| "on error."
+msgid ""
+"<command>apt</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+"<command>apt-get</command> zwraca zero, gdy zakończyło się pomyślnie, 100 - "
+"w przypadku błędu."
+
+#
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-get.8.xml
+msgid "APT package handling utility -- command-line interface"
+msgstr "Narzędzie zarządzania pakietami APT -- interfejs linii poleceń"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "<command>apt-get</command> is the command-line tool for handling "
+#| "packages, and may be considered the user's \"back-end\" to other tools "
+#| "using the APT library. Several \"front-end\" interfaces exist, such as "
+#| "&dselect;, &aptitude;, &synaptic; and &wajig;."
+msgid ""
+"<command>apt-get</command> is the command-line tool for handling packages, "
+"and may be considered the user's \"back-end\" to other tools using the APT "
+"library. Several \"front-end\" interfaces exist, such as &aptitude;, "
+"&synaptic; and &wajig;."
+msgstr ""
+"<command>apt-get</command> jest narzędziem do zarządzania pakietami "
+"działającym z linii poleceń, które może być uznane za wewnętrzne narzędzie "
+"innych programów używających biblioteki APT. Istnieje wiele interfejsów "
+"użytkownika, takich jak &dselect;, &aptitude;, &synaptic; oraz &wajig;."
+
+#
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml apt-cache.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt-ftparchive.1.xml
+msgid ""
+"Unless the <option>-h</option>, or <option>--help</option> option is given, "
+"one of the commands below must be present."
+msgstr ""
+"Jedno z poniższych poleceń musi być użyte, chyba że została podana opcja "
+"<option>-h</option> albo <option>--help</option>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>update</literal> is used to resynchronize the package index files "
+"from their sources. The indexes of available packages are fetched from the "
+"location(s) specified in <filename>/etc/apt/sources.list</filename>. For "
+"example, when using a Debian archive, this command retrieves and scans the "
+"<filename>Packages.gz</filename> files, so that information about new and "
+"updated packages is available. An <literal>update</literal> should always be "
+"performed before an <literal>upgrade</literal> or <literal>dist-upgrade</"
+"literal>. Please be aware that the overall progress meter will be incorrect "
+"as the size of the package files cannot be known in advance."
+msgstr ""
+"<literal>update</literal> jest używane do zsynchronizowania zawartości "
+"plików indeksu pakietów z ich źródłami. Lista dostępnych pakietów jest "
+"pobierana z lokalizacji określonych w pliku <filename>/etc/apt/sources.list</"
+"filename>. Na przykład, gdy używane jest archiwum Debiana, to polecenie "
+"pobiera i przegląda pliki <filename>Packages.gz</filename>, tak żeby "
+"udostępnić informacje o nowych i uaktualnionych pakietach. Polecenie "
+"<literal>update</literal> powinno być użyte zawsze przed <literal>upgrade</"
+"literal> lub <literal>dist-upgrade</literal>. Należy zauważyć, że licznik "
+"całkowitego postępu operacji jest błędny, ponieważ rozmiar plików "
+"<filename>Packages.gz</filename> nie jest wcześniej znany."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>upgrade</literal> is used to install the newest versions of all "
+"packages currently installed on the system from the sources enumerated in "
+"<filename>/etc/apt/sources.list</filename>. Packages currently installed "
+"with new versions available are retrieved and upgraded; under no "
+"circumstances are currently installed packages removed, or packages not "
+"already installed retrieved and installed. New versions of currently "
+"installed packages that cannot be upgraded without changing the install "
+"status of another package will be left at their current version. An "
+"<literal>update</literal> must be performed first so that <command>apt-get</"
+"command> knows that new versions of packages are available."
+msgstr ""
+"<literal>upgrade</literal> instaluje najnowsze wersje wszystkich pakietów, "
+"obecnie zainstalowanych w systemie, na podstawie źródeł wymienionych w pliku "
+"<filename>/etc/apt/sources.list</filename>. Zainstalowane pakiety, których "
+"nowsza wersja jest dostępna, są ściągane i uaktualniane; w żadnym wypadku "
+"podanie tej opcji nie spowoduje usunięcia zainstalowanego pakietu czy "
+"zainstalowania nowego pakietu, wcześniej nie zainstalowanego. Pakiety, "
+"których nowa wersja wymaga zmiany statusu (np. zainstalowania bądź "
+"usunięcia) innego pakietu, będą pozostawione bez zmian. Aby <command>apt-"
+"get</command> wiedział, że są dostępne nowe wersje pakietów, należy "
+"wcześniej wykonać <literal>update</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>dist-upgrade</literal> in addition to performing the function of "
+"<literal>upgrade</literal>, also intelligently handles changing dependencies "
+"with new versions of packages; <command>apt-get</command> has a \"smart\" "
+"conflict resolution system, and it will attempt to upgrade the most "
+"important packages at the expense of less important ones if necessary. The "
+"<literal>dist-upgrade</literal> command may therefore remove some packages. "
+"The <filename>/etc/apt/sources.list</filename> file contains a list of "
+"locations from which to retrieve desired package files. See also &apt-"
+"preferences; for a mechanism for overriding the general settings for "
+"individual packages."
+msgstr ""
+"<literal>dist-upgrade</literal> wykonuje to samo, co <literal>upgrade</"
+"literal>, jednakże w inteligentny sposób wykrywa zmiany zależności w nowych "
+"wersjach pakietów. <command>apt-get</command> ma wbudowany \"sprytny\" "
+"system rozwiązywania konfliktów i jeśli będzie to potrzebne, podejmie próbę "
+"zaktualizowania najważniejszych pakietów, kosztem tych mniej ważnych. Tak "
+"więc <literal>dist-upgrade</literal> może usunąć niektóre pakiety.Plik "
+"<filename>/etc/apt/sources.list</filename> zawiera listę adresów, z których "
+"będą pobierane żądane pakiety. Zobacz również do &apt-preferences; - "
+"znajduje się tam opis mechanizmu nadpisywania globalnych ustawień dla "
+"poszczególnych pakietów."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>dselect-upgrade</literal> is used in conjunction with the "
+"traditional Debian packaging front-end, &dselect;. <literal>dselect-upgrade</"
+"literal> follows the changes made by &dselect; to the <literal>Status</"
+"literal> field of available packages, and performs the actions necessary to "
+"realize that state (for instance, the removal of old and the installation of "
+"new packages)."
+msgstr ""
+"<literal>dselect-upgrade</literal> jest używane w połączeniu z programem "
+"&dselect;, tradycyjnym narzędziem do zarządzania pakietami w systemie "
+"Debian. <literal>dselect-upgrade</literal> uwzględnia zmiany zrobione "
+"programem &dselect; w polu <literal>Status</literal> pliku zawierajÄ…cego "
+"informacje o dostępnych pakietach i wykonuje akcje potrzebne do "
+"zrealizowania tych zmian (na przykład: usunięcie starych pakietów i dodanie "
+"nowych)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>install</literal> is followed by one or more packages desired for "
+"installation or upgrading. Each package is a package name, not a fully "
+"qualified filename (for instance, in a Debian system, <package>apt-utils</"
+"package> would be the argument provided, not <filename>apt-utils_&apt-"
+"product-version;_amd64.deb</filename>). All packages required by the "
+"package(s) specified for installation will also be retrieved and installed. "
+"The <filename>/etc/apt/sources.list</filename> file is used to locate the "
+"desired packages. If a hyphen is appended to the package name (with no "
+"intervening space), the identified package will be removed if it is "
+"installed. Similarly a plus sign can be used to designate a package to "
+"install. These latter features may be used to override decisions made by apt-"
+"get's conflict resolution system."
+msgstr ""
+"Po <literal>install</literal> musi występować nazwa jednego lub więcej "
+"pakietów przeznaczonych do zainstalowania. Każdy argument jest nazwą "
+"pakietu, a nie pełną nazwą pliku, w którym się znajduje (na przykład w "
+"systemie Debian, tym argumentem byłoby <package>apt-utils</package>, a nie "
+"<literal>apt-utils_&apt-product-version;_amd64.deb</literal>). Wszystkie "
+"pakiety, które są potrzebne do zainstalowania żądanego pakietu (lub żądanych "
+"pakietów), będą także ściągnięte i zainstalowane. Plik <filename>/etc/apt/"
+"sources.list</filename> zawiera listę adresów, z których będą pobierane "
+"żądane pakiety. Jeżeli po nazwie pakietu pojawi się minus (bez spacji "
+"pomiędzy minusem a nazwą pakietu), to ten pakiet zostanie usunięty, o ile "
+"oczywiście jest zainstalowany. Podobnie znak plusa może być użyty w celu "
+"zainstalowania pakietu. Ta ostatnia właściwość może być użyta do nadpisania "
+"decyzji podjętych przez system rozwiązywania konfliktów programu apt-get."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals and the version of the package to "
+"select. This will cause that version to be located and selected for install. "
+"Alternatively a specific distribution can be selected by following the "
+"package name with a slash and the version of the distribution or the Archive "
+"name (stable, testing, unstable)."
+msgstr ""
+"Konkretna wersja pakietu może być wybrana do zainstalowania przez "
+"umieszczenie po nazwie pakietu znaku równości, a za nim wybranej wersji "
+"pakietu. Podana wersja zostanie wyszukana i wybrana do zainstalowania. "
+"Również konkretna dystrybucja może być wybrana przez umieszczenie po nazwie "
+"pakietu znaku ukośnika, po którym następuje wersja dystrybucji bądź nazwa "
+"archiwum (stable, testing, unstable)."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Both of the version selection mechanisms can downgrade packages and must be "
+"used with care."
+msgstr ""
+"Oba mechanizmy wyboru pakietów mogą zainstalować wcześniejsze wersje "
+"pakietów niż są już zainstalowane w systemie, dlatego muszą być używane "
+"ostrożnie."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This is also the target to use if you want to upgrade one or more already-"
+"installed packages without upgrading every package you have on your system. "
+"Unlike the \"upgrade\" target, which installs the newest version of all "
+"currently installed packages, \"install\" will install the newest version of "
+"only the package(s) specified. Simply provide the name of the package(s) "
+"you wish to upgrade, and if a newer version is available, it (and its "
+"dependencies, as described above) will be downloaded and installed."
+msgstr ""
+"Jest to także akcja, której należy użyć, aby zaktualizować jeden lub więcej "
+"spośród pakietów już zainstalowanych, bez aktualizowania wszystkich "
+"pozostałych pakietów. W przeciwieństwie do polecenia \"upgrade\", które "
+"instaluje najnowsze wersje wszystkich obecnie zainstalowanych pakietów, "
+"\"install\" zainstaluje najnowsze wersje pakietu (pakietów) podanego "
+"(podanych) w linii poleceń. Wystarczy podać nazwę pakietu (pakietów) do "
+"zaktualizowania i jeśli nowsze wersje są dostępna, to zostaną pobrane i "
+"zainstalowane (łączne z zależnościami, tak jak to opisano powyżej)."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Finally, the &apt-preferences; mechanism allows you to create an alternative "
+"installation policy for individual packages."
+msgstr ""
+"W końcu, mechanizm &apt-preferences; pozwala określić alternatywny sposób "
+"instalacji poszczególnych pakietów."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If no package matches the given expression and the expression contains one "
+"of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and "
+"it is applied to all package names in the database. Any matches are then "
+"installed (or removed). Note that matching is done by substring so 'lo.*' "
+"matches 'how-lo' and 'lowest'. If this is undesired, anchor the regular "
+"expression with a '^' or '$' character, or create a more specific regular "
+"expression."
+msgstr ""
+"Jeżeli żaden pakiet nie pasuje do podanego wyrażenia, a to wyrażenie zawiera "
+"jeden z następujących znaków: \".\", \"?\" albo \"*\", to zakłada się, że "
+"jest to wyrażenie regularne zgodne z POSIX-em i jest ono stosowane do "
+"wszystkich nazw pakietów w bazie. Pakiety, których nazwy pasują do tego "
+"wyrażenia regularnego, są instalowane (bądź usuwane). Należy zwrócić uwagę "
+"na to, że dopasowywany jest podciąg, tak więc \"lo*\" pasuje zarówno do "
+"\"how-lo\", jak i do \"lowest\". Jeśli jest to niepożądane, można określić "
+"początek lub koniec dopasowania wyrażenia regularnego, używając znaków \"^| "
+"lub \"$\", można też stworzyć bardziej specyficzne wyrażenie regularne."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>remove</literal> is identical to <literal>install</literal> except "
+"that packages are removed instead of installed. Note that removing a package "
+"leaves its configuration files on the system. If a plus sign is appended to "
+"the package name (with no intervening space), the identified package will be "
+"installed instead of removed."
+msgstr ""
+"<literal>remove</literal> odpowiada poleceniu <literal>install</literal> z "
+"tą różnicą, że pakiety są usuwane, a nie instalowane. Jeżeli nazwa pakietu "
+"zostanie poprzedzona znakiem plusa (bez rozdzielajÄ…cej spacji), wskazany "
+"pakiet zostanie zainstalowany zamiast zostać usunięty."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>purge</literal> is identical to <literal>remove</literal> except "
+"that packages are removed and purged (any configuration files are deleted "
+"too)."
+msgstr ""
+"<literal>purge</literal> działa tak, jak <literal>remove</literal>, z tą "
+"różnicą, że pakiety są po usunięciu czyszczone (czyli usuwane są również "
+"wszystkie pliki konfiguracyjne)."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>source</literal> causes <command>apt-get</command> to fetch source "
+"packages. APT will examine the available packages to decide which source "
+"package to fetch. It will then find and download into the current directory "
+"the newest available version of that source package while respecting the "
+"default release, set with the option <literal>APT::Default-Release</"
+"literal>, the <option>-t</option> option or per package with the "
+"<literal>pkg/release</literal> syntax, if possible."
+msgstr ""
+"<literal>source</literal> powoduje, że <command>apt-get</command> ściąga "
+"pakiety ze źródłami. APT na podstawie listy dostępnych pakietów decyduje, "
+"który pakiet źródłowy ściągnąć. Następnie szuka najnowszej dostępnej wersji "
+"pakietu źródłowego i pobiera ją do bieżącego katalogu. Jeśli jest to "
+"możliwe, to APT bierze pod uwagę domyślne wydanie, ustawione w <literal>APT::"
+"Default-Release</literal> w pliku konfiguracyjnym albo określone w opcji "
+"<option>-t</option>, albo podane przy użyciu składni <literal>pakiet/"
+"wydanie</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Source packages are tracked separately from binary packages via <literal>deb-"
+"src</literal> lines in the &sources-list; file. This means that you will "
+"need to add such a line for each repository you want to get sources from; "
+"otherwise you will probably get either the wrong (too old/too new) source "
+"versions or none at all."
+msgstr ""
+"Pakiety źródłowe są znajdowane inaczej niż pakiety binarne: przez linie "
+"<literal>deb-src</literal> w pliku &sources-list;. Oznacza to, że w pliku "
+"tym należy umieścić taką linię dla każdego repozytorium, z którego będą "
+"pobierane źródła. W przeciwnym wypadku albo może zostać pobrana niepoprawna "
+"(zbyt stara lub zbyt nowa) wersja pakietu źródłowego, albo może nie być "
+"możliwe pobranie jakiejkolwiek wersji pakietu."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If the <option>--compile</option> option is specified then the package will "
+"be compiled to a binary .deb using <command>dpkg-buildpackage</command> for "
+"the architecture as defined by the <command>--host-architecture</command> "
+"option. If <option>--download-only</option> is specified then the source "
+"package will not be unpacked."
+msgstr ""
+"Jeżeli podano opcję <option>--compile</option>, to pakiet źródłowy zostanie "
+"skompilowany do pakietu binarnego .deb za pomocÄ… programu <command>dpkg-"
+"buildpackage</command> dla architektury podanej w opcji <command>--host-"
+"architecture</command>. Podanie opcji <option>--download-only</option> "
+"spowoduje natomiast, że pakiet źródłowy nie zostanie rozpakowany."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"A specific source version can be retrieved by postfixing the source name "
+"with an equals and then the version to fetch, similar to the mechanism used "
+"for the package files. This enables exact matching of the source package "
+"name and version, implicitly enabling the <literal>APT::Get::Only-Source</"
+"literal> option."
+msgstr ""
+"Konkretną wersję pakietu źródłowego można ściągnąć, umieszczając po nazwie "
+"pakietu źródłowego znak równości, a za nim numer wersji do ściągnięcia. "
+"Działa tu taki sam mechanizm jak w przypadku pakietów binarnych. Włączone "
+"zostaje dokładne dopasowywanie nazw i wersji pakietów źródłowych i pośrednio "
+"włączona zostaje opcja <literal>APT::Get::Only-Source</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Note that source packages are not installed and tracked in the "
+"<command>dpkg</command> database like binary packages; they are simply "
+"downloaded to the current directory, like source tarballs."
+msgstr ""
+"Proszę zauważyć, że w odróżnieniu od pakietów binarnych, pakiety źródłowe "
+"nie są instalowane i zapamiętywane w bazie danych <command>dpkg</command>, "
+"ale są po prostu pobierane do bieżącego katalogu jako archiwa programu "
+"<command>tar</command>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>build-dep</literal> causes apt-get to install/remove packages in an "
+"attempt to satisfy the build dependencies for a source package. By default "
+"the dependencies are satisfied to build the package natively. If desired a "
+"host-architecture can be specified with the <option>--host-architecture</"
+"option> option instead."
+msgstr ""
+"<literal>build-dep</literal> powoduje, że apt-get zainstaluje/usunie pakiety "
+"tak, żeby spełnić zależności wymagane do zbudowania danego pakietu "
+"źródłowego."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>check</literal> is a diagnostic tool; it updates the package cache "
+"and checks for broken dependencies."
+msgstr ""
+"<literal>check</literal> jest poleceniem diagnostycznym, które odświeża "
+"bufor (cache) pakietów i szuka zepsutych pakietów."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>download</literal> will download the given binary package into the "
+"current directory."
+msgstr ""
+"<literal>download</literal> pobierze podane pakiety binarne do bieżącego "
+"katalogu. "
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>clean</literal> clears out the local repository of retrieved "
+#| "package files. It removes everything but the lock file from "
+#| "<filename>&cachedir;/archives/</filename> and <filename>&cachedir;/"
+#| "archives/partial/</filename>. When APT is used as a &dselect; method, "
+#| "<literal>clean</literal> is run automatically. Those who do not use "
+#| "dselect will likely want to run <literal>apt-get clean</literal> from "
+#| "time to time to free up disk space."
+msgid ""
+"<literal>clean</literal> clears out the local repository of retrieved "
+"package files. It removes everything but the lock file from "
+"<filename>&cachedir;/archives/</filename> and <filename>&cachedir;/archives/"
+"partial/</filename>."
+msgstr ""
+"<literal>clean</literal> czyści lokalne repozytorium ściągniętych plików z "
+"pakietami. Usuwa wszystko z wyjÄ…tkiem pliku blokady <filename>&cachedir;/"
+"archives/</filename> oraz katalogu <filename>&cachedir;/archives/partial/</"
+"filename>. Gdy APT jest używane jako metoda programu &dselect;, "
+"<literal>clean</literal> jest uruchamiane automatycznie. Osoby nie używające "
+"dselect, powinny od czasu do czasu uruchamiać <literal>apt-get clean</"
+"literal>, aby zwolnić trochę miejsca na dysku."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "(and the"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias since 1.1)"
+msgstr ""
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Like <literal>clean</literal>, <literal>autoclean</literal> clears out the "
+"local repository of retrieved package files. The difference is that it only "
+"removes package files that can no longer be downloaded, and are largely "
+"useless. This allows a cache to be maintained over a long period without it "
+"growing out of control. The configuration option <literal>APT::Clean-"
+"Installed</literal> will prevent installed packages from being erased if it "
+"is set to off."
+msgstr ""
+"Podobnie jak <literal>clean</literal>, <literal>autoclean</literal> czyści "
+"lokalne repozytorium pobranych plików z pakietami. Różnica jest taka, że "
+"<literal>autoclean</literal> usuwa tylko te pliki pakietów, które już nie "
+"mogą być ściągnięte i w większości są bezużyteczne. Pozwala to na "
+"utrzymywanie bufora (cache'a) przed długi czas i na uniknięcie "
+"niekontrolowanego jego wzrostu. Wyłączenie opcji konfiguracyjnej "
+"<literal>APT::Clean-Installed</literal> zapobiegnie usuwaniu plików "
+"zawierajÄ…cych zainstalowane pakiety."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed."
+msgstr ""
+"<literal>autoremove</literal> jest używane do usuwania pakietów, które "
+"zostały zainstalowane automatycznie, żeby rozwiązać zależności w innych "
+"pakietach, i nie są już potrzebne."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>changelog</literal> downloads a package changelog and displays "
+#| "it through <command>sensible-pager</command>. The server name and base "
+#| "directory is defined in the <literal>APT::Changelogs::Server</literal> "
+#| "variable (e.g. <ulink url=\"http://packages.debian.org/changelogs"
+#| "\">packages.debian.org/changelogs</ulink> for Debian or <ulink url="
+#| "\"http://changelogs.ubuntu.com/changelogs\">changelogs.ubuntu.com/"
+#| "changelogs</ulink> for Ubuntu). By default it displays the changelog for "
+#| "the version that is installed. However, you can specify the same options "
+#| "as for the <option>install</option> command."
+msgid ""
+"<literal>changelog</literal> tries to download the changelog of a package "
+"and displays it through <command>sensible-pager</command>. By default it "
+"displays the changelog for the version that is installed. However, you can "
+"specify the same options as for the <option>install</option> command."
+msgstr ""
+"<literal>changelog</literal> pobiera dziennik zmian pakietu i wyświetla go, "
+"używając polecenia <command>sensible-pager</command>. Nazwa serwera i "
+"katalog bazowy jest definiowany w zmiennej <literal>APT::Changelogs::Server</"
+"literal> (np. <ulink url=\"http://packages.debian.org/changelogs\">packages."
+"debian.org/changelogs</ulink> dla Debiana lub <ulink url=\"http://changelogs."
+"ubuntu.com/changelogs\">changelogs.ubuntu.com/changelogs</ulink> dla "
+"Ubuntu). Domyślnie wyświetlany jest dziennik zmian wersji, która już jest "
+"zainstalowana. Jednakże można to zmienić, używając takich samych opcji, jak "
+"te dla polecenia <option>install</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Displays by default a deb822 formatted listing of information about all data "
+"files (aka index targets) <command>apt-get update</command> would download. "
+"Supports a <option>--format</option> option to modify the output format as "
+"well as accepts lines of the default output to filter the records by. The "
+"command is mainly used as an interface for external tools working with APT "
+"to get information as well as filenames for downloaded files so they can use "
+"them as well instead of downloading them again on their own. Detailed "
+"documentation is omitted here and can instead be found in the file &apt-"
+"acquire-additional-files; shipped by the <package>apt-doc</package> package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml apt-cache.8.xml apt-config.8.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "options"
+msgstr "opcje"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not consider recommended packages as a dependency for installing. "
+"Configuration Item: <literal>APT::Install-Recommends</literal>."
+msgstr ""
+"Nie rozpatruje rekomendowanych pakietów jako zależności do instalacji. "
+"Pozycja w pliku konfiguracyjnym: <literal>APT::Install-Recommends</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Consider suggested packages as a dependency for installing. Configuration "
+"Item: <literal>APT::Install-Suggests</literal>."
+msgstr ""
+"Uznaje sugerowane pakiety za zależności do instalacji. Pozycja w pliku "
+"konfiguracyjnym: <literal>APT::Install-Suggests</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Download only; package files are only retrieved, not unpacked or installed. "
+"Configuration Item: <literal>APT::Get::Download-Only</literal>."
+msgstr ""
+"Tylko pobieranie; pliki z pakietami są tylko ściągane, ale nie rozpakowywane "
+"czy instalowane. Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
+"Download-Only</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Fix; attempt to correct a system with broken dependencies in place. This "
+#| "option, when used with install/remove, can omit any packages to permit "
+#| "APT to deduce a likely solution. If packages are specified, these have to "
+#| "completely correct the problem. The option is sometimes necessary when "
+#| "running APT for the first time; APT itself does not allow broken package "
+#| "dependencies to exist on a system. It is possible that a system's "
+#| "dependency structure can be so corrupt as to require manual intervention "
+#| "(which usually means using &dselect; or <command>dpkg --remove</command> "
+#| "to eliminate some of the offending packages). Use of this option together "
+#| "with <option>-m</option> may produce an error in some situations. "
+#| "Configuration Item: <literal>APT::Get::Fix-Broken</literal>."
+msgid ""
+"Fix; attempt to correct a system with broken dependencies in place. This "
+"option, when used with install/remove, can omit any packages to permit APT "
+"to deduce a likely solution. If packages are specified, these have to "
+"completely correct the problem. The option is sometimes necessary when "
+"running APT for the first time; APT itself does not allow broken package "
+"dependencies to exist on a system. It is possible that a system's dependency "
+"structure can be so corrupt as to require manual intervention (which usually "
+"means using <command>dpkg --remove</command> to eliminate some of the "
+"offending packages). Use of this option together with <option>-m</option> "
+"may produce an error in some situations. Configuration Item: <literal>APT::"
+"Get::Fix-Broken</literal>."
+msgstr ""
+"Popraw; podejmuje próbę poprawienia zepsutych zależności. Używanie tej opcji "
+"z install/remove może spowodować pominięcie któregokolwiek z pakietów "
+"podanych w linii poleceń, co pozwoli programowi APT znaleźć właściwe "
+"rozwiÄ…zanie problemu. Ta opcja jest czasami potrzebna przy pierwszym "
+"uruchomieniu APT, który nie pozwala, aby w systemie istniały zepsute "
+"zależności. Jest również prawdopodobne, że systemowa struktura zależności "
+"może być tak zepsuta, że będzie wymagała ręcznej naprawy (co zazwyczaj "
+"oznacza użycie &dselect; lub <command>dpkg --remove</command>w celu "
+"usunięcia niektórych naruszonych pakietów). W pewnych sytuacjach użycie tej "
+"opcji łącznie z <option>-m</option> może spowodować błąd. Pozycja w pliku "
+"konfiguracyjnym: <literal>APT::Get::Fix-Broken</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore missing packages; if packages cannot be retrieved or fail the "
+"integrity check after retrieval (corrupted package files), hold back those "
+"packages and handle the result. Use of this option together with <option>-f</"
+"option> may produce an error in some situations. If a package is selected "
+"for installation (particularly if it is mentioned on the command line) and "
+"it could not be downloaded then it will be silently held back. "
+"Configuration Item: <literal>APT::Get::Fix-Missing</literal>."
+msgstr ""
+"Ignoruj brakujące pakiety. Pakiety, które nie mogą być pobrane lub nie "
+"powiedzie się test spójności pakietu po jego pobraniu (plik z pakietem jest "
+"uszkodzony), zostają wstrzymane. W pewnych sytuacjach użycie tej opcji "
+"łącznie z <option>-f</option> może spowodować błąd. Pakiet, który jest "
+"wybrany do instalacji (w szczególności jest on wymieniony w linii poleceń), "
+"ale nie może zostać pobrany, zostanie pominięty. Pozycja w pliku "
+"konfiguracyjnym: <literal>APT::Get::Fix-Missing</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Disables downloading of packages. This is best used with <option>--ignore-"
+"missing</option> to force APT to use only the .debs it has already "
+"downloaded. Configuration Item: <literal>APT::Get::Download</literal>."
+msgstr ""
+"Wyłącza pobierania pakietów. Najlepiej stosować z <option>--ignore-missing</"
+"option>, aby wymusić na APT używanie tylko tych plików .deb, które zostały "
+"wcześniej ściągnięte. Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
+"Download</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Note that quiet level 2 implies <option>-y</option>; you should never "
+"use -qq without a no-action modifier such as -d, --print-uris or -s as APT "
+"may decide to do something you did not expect. Configuration Item: "
+"<literal>quiet</literal>."
+msgstr ""
+"Cichy; wypisuje tylko informacje potrzebne do logowania, opuszczajÄ…c "
+"wskaźniki postępu. Więcej znaków q spowoduje jeszcze bardziej ciche wyjście, "
+"maksimum jest 2. Można także ustawić poziom cichości za pomocą <option>-q=#</"
+"option>, nadpisując tym samym opcję z pliku konfiguracyjnego. Należy "
+"zauważyć, że poziom cichości równy 2 implikuje <option>-y</option>, dlatego -"
+"qq nigdy nie powinno być używane bez opcji typu -d, --print-uris lub -s, "
+"gdyż APT może zadecydować o zrobieniu czegoś, czego użytkownik się nie "
+"spodziewa. Pozycja w pliku konfiguracyjnym: <literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"No action; perform a simulation of events that would occur based on the "
+"current system state but do not actually change the system. Locking will be "
+"disabled (<option>Debug::NoLocking</option>) so the system state could "
+"change while <command>apt-get</command> is running. Simulations can also be "
+"executed by non-root users which might not have read access to all apt "
+"configuration distorting the simulation. A notice expressing this warning "
+"is also shown by default for non-root users (<option>APT::Get::Show-User-"
+"Simulation-Note</option>). Configuration Item: <literal>APT::Get::Simulate</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Simulated runs print out a series of lines, each representing a "
+"<command>dpkg</command> operation: configure (<literal>Conf</literal>), "
+"remove (<literal>Remv</literal>) or unpack (<literal>Inst</literal>). "
+"Square brackets indicate broken packages, and empty square brackets indicate "
+"breaks that are of no consequence (rare)."
+msgstr ""
+"Symulacja uruchomienia, powodująca wypisanie serii linii, z których każda "
+"reprezentuje operacjÄ™ programu <command>dpkg</command>: konfigurowanie "
+"(<literal>Conf</literal>), usunięcie (<literal>Remv</literal>) lub "
+"rozpakowanie (<literal>Inst</literal>). Nawiasy kwadratowe oznaczajÄ… zepsute "
+"pakiety, przy czym puste nawiasy kwadratowe oznaczają, że przyczyna zepsucia "
+"pakietu nie jest znana (rzadkość)."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Automatic yes to prompts; assume \"yes\" as answer to all prompts and run "
+"non-interactively. If an undesirable situation, such as changing a held "
+"package, trying to install a unauthenticated package or removing an "
+"essential package occurs then <literal>apt-get</literal> will abort. "
+"Configuration Item: <literal>APT::Get::Assume-Yes</literal>."
+msgstr ""
+"Automatycznie odpowiada \"tak\" na pytania. Zakładając odpowiedź \"tak\" na "
+"wszelkie pytania, uruchamia się w trybie nieinteraktywnym. Jeśli wystąpi "
+"jakaś niepożądana sytuacja, na przykład zmiana wstrzymanego pakietu lub "
+"usunięcie pakietu mającego status Essential, <literal>apt-get</literal> "
+"przerwie działanie. Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
+"Assume-Yes</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Automatic \"no\" to all prompts. Configuration Item: <literal>APT::Get::"
+"Assume-No</literal>."
+msgstr ""
+"Automatycznie odpowiada \"nie\" na wszystkie zapytania. Pozycja w pliku "
+"konfiguracyjnym: <literal>APT::Get::Assume-No</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Show upgraded packages; print out a list of all packages that are to be "
+#| "upgraded. Configuration Item: <literal>APT::Get::Show-Upgraded</literal>."
+msgid ""
+"Do not show a list of all packages that are to be upgraded. Configuration "
+"Item: <literal>APT::Get::Show-Upgraded</literal>."
+msgstr ""
+"Pokazuje uaktualnione pakiety. Wypisuje listę wszystkich pakietów, które "
+"będą uaktualnione. Pozycja w pliku konfiguracyjnym: <literal>APT::Get::Show-"
+"Upgraded</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Show full versions for upgraded and installed packages. Configuration Item: "
+"<literal>APT::Get::Show-Versions</literal>."
+msgstr ""
+"Wyświetla pełne wersje aktualizowanych pakietów Pozycja w pliku "
+"konfiguracyjnym: <literal>APT::Get::Show-Versions</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "This option controls the architecture packages are built for by "
+#| "<command>apt-get source --compile</command> and how cross-"
+#| "builddependencies are satisfied. By default is it not set which means "
+#| "that the host architecture is the same as the build architecture (which "
+#| "is defined by <literal>APT::Architecture</literal>). Configuration Item: "
+#| "<literal>APT::Get::Host-Architecture</literal>"
+msgid ""
+"This option controls the architecture packages are built for by <command>apt-"
+"get source --compile</command> and how cross-builddependencies are "
+"satisfied. By default is it not set which means that the host architecture "
+"is the same as the build architecture (which is defined by <literal>APT::"
+"Architecture</literal>). Configuration Item: <literal>APT::Get::Host-"
+"Architecture</literal>."
+msgstr ""
+"Za pomocą tej opcji można określić architekturę pakietów budowanych przez "
+"<command>apt-get source --compile</command> i sposób, w jaki są spełniane "
+"międzyarchitekturowe zależności czasu budowania. Domyślnie nie jest "
+"ustawiona, co oznacza, że architektura budowanych pakietów jest taka sama "
+"jak architektura bieżącego komputera (definiowana przez <literal>APT::"
+"Architecture</literal>). Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
+"Host-Architecture</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "This option controls the architecture packages are built for by "
+#| "<command>apt-get source --compile</command> and how cross-"
+#| "builddependencies are satisfied. By default is it not set which means "
+#| "that the host architecture is the same as the build architecture (which "
+#| "is defined by <literal>APT::Architecture</literal>). Configuration Item: "
+#| "<literal>APT::Get::Host-Architecture</literal>"
+msgid ""
+"This option controls the activated build profiles for which a source package "
+"is built by <command>apt-get source --compile</command> and how build "
+"dependencies are satisfied. By default no build profile is active. More "
+"than one build profile can be activated at a time by concatenating them with "
+"a comma. Configuration Item: <literal>APT::Build-Profiles</literal>."
+msgstr ""
+"Za pomocą tej opcji można określić architekturę pakietów budowanych przez "
+"<command>apt-get source --compile</command> i sposób, w jaki są spełniane "
+"międzyarchitekturowe zależności czasu budowania. Domyślnie nie jest "
+"ustawiona, co oznacza, że architektura budowanych pakietów jest taka sama "
+"jak architektura bieżącego komputera (definiowana przez <literal>APT::"
+"Architecture</literal>). Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
+"Host-Architecture</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Compile source packages after downloading them. Configuration Item: "
+"<literal>APT::Get::Compile</literal>."
+msgstr ""
+"Skompiluj pakiety źródłowe po ich ściągnięciu. Pozycja w pliku "
+"konfiguracyjnym: <literal>APT::Get::Compile</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore package holds; this causes <command>apt-get</command> to ignore a "
+"hold placed on a package. This may be useful in conjunction with "
+"<literal>dist-upgrade</literal> to override a large number of undesired "
+"holds. Configuration Item: <literal>APT::Ignore-Hold</literal>."
+msgstr ""
+"Ignoruje status hold (wstrzymany) pakietów. Ta opcja powoduje, że "
+"<command>apt-get</command> zignoruje status hold pakietów. Może to być "
+"użyteczne w połączeniu z <literal>dist-upgrade</literal> do unieważnienia "
+"dużej liczby niepożądanych wstrzymań. Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Ignore-Hold</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Allow installing new packages when used in conjunction with "
+"<literal>upgrade</literal>. This is useful if the update of a installed "
+"package requires new dependencies to be installed. Instead of holding the "
+"package back <literal>upgrade</literal> will upgrade the package and install "
+"the new dependencies. Note that <literal>upgrade</literal> with this option "
+"will never remove packages, only allow adding new ones. Configuration Item: "
+"<literal>APT::Get::Upgrade-Allow-New</literal>."
+msgstr ""
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not upgrade packages; when used in conjunction with <literal>install</"
+"literal>, <literal>no-upgrade</literal> will prevent packages on the command "
+"line from being upgraded if they are already installed. Configuration Item: "
+"<literal>APT::Get::Upgrade</literal>."
+msgstr ""
+"Nie aktualizuje pakietów. Użyte w połączeniu z <literal>install</literal>, "
+"<literal>no-upgrade</literal> spowoduje, że pakiety, które są już "
+"zainstalowane, nie zostanÄ… zaktualizowane. Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Get::Upgrade</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not install new packages; when used in conjunction with <literal>install</"
+"literal>, <literal>only-upgrade</literal> will install upgrades for already "
+"installed packages only and ignore requests to install new packages. "
+"Configuration Item: <literal>APT::Get::Only-Upgrade</literal>."
+msgstr ""
+"Nie instaluje nowych pakietów. Użyte w połączeniu z <literal>install</"
+"literal>, <literal>only-upgrade</literal> spowoduje zaktualizowanie pakietów "
+"już zainstalowanych i zignorowanie żądań instalowania nowych pakietów. "
+"Pozycja w pliku konfiguracyjnym: <literal>APT::Get::Only-Upgrade</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Force yes; this is a dangerous option that will cause apt to continue "
+#| "without prompting if it is doing something potentially harmful. It should "
+#| "not be used except in very special situations. Using <literal>force-yes</"
+#| "literal> can potentially destroy your system! Configuration Item: "
+#| "<literal>APT::Get::force-yes</literal>."
+msgid ""
+"This is a dangerous option that will cause apt to continue without prompting "
+"if it is doing downgrades. It should not be used except in very special "
+"situations. Using it can potentially destroy your system! Configuration "
+"Item: <literal>APT::Get::allow-downgrades</literal>. Introduced in APT 1.1."
+msgstr ""
+"Wymuszenie. Jest to niebezpieczna opcja, która powoduje, że apt-get "
+"kontynuuje swoje działanie bez żadnej interakcji z użytkownikiem, nawet "
+"jeśli robi coś, co może być szkodliwe. Nie powinna być używana, z wyjątkiem "
+"bardzo szczególnych sytuacji. Używanie <literal>force-yes</literal> może "
+"zniszczyć Twój system! Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
+"force-yes</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Force yes; this is a dangerous option that will cause apt to continue "
+#| "without prompting if it is doing something potentially harmful. It should "
+#| "not be used except in very special situations. Using <literal>force-yes</"
+#| "literal> can potentially destroy your system! Configuration Item: "
+#| "<literal>APT::Get::force-yes</literal>."
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is removing essentials. It should not be used except "
+"in very special situations. Using it can potentially destroy your system! "
+"Configuration Item: <literal>APT::Get::allow-remove-essential</literal>. "
+"Introduced in APT 1.1."
+msgstr ""
+"Wymuszenie. Jest to niebezpieczna opcja, która powoduje, że apt-get "
+"kontynuuje swoje działanie bez żadnej interakcji z użytkownikiem, nawet "
+"jeśli robi coś, co może być szkodliwe. Nie powinna być używana, z wyjątkiem "
+"bardzo szczególnych sytuacji. Używanie <literal>force-yes</literal> może "
+"zniszczyć Twój system! Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
+"force-yes</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Force yes; this is a dangerous option that will cause apt to continue "
+#| "without prompting if it is doing something potentially harmful. It should "
+#| "not be used except in very special situations. Using <literal>force-yes</"
+#| "literal> can potentially destroy your system! Configuration Item: "
+#| "<literal>APT::Get::force-yes</literal>."
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is changing held packages. It should not be used "
+"except in very special situations. Using it can potentially destroy your "
+"system! Configuration Item: <literal>APT::Get::allow-change-held-packages</"
+"literal>. Introduced in APT 1.1."
+msgstr ""
+"Wymuszenie. Jest to niebezpieczna opcja, która powoduje, że apt-get "
+"kontynuuje swoje działanie bez żadnej interakcji z użytkownikiem, nawet "
+"jeśli robi coś, co może być szkodliwe. Nie powinna być używana, z wyjątkiem "
+"bardzo szczególnych sytuacji. Używanie <literal>force-yes</literal> może "
+"zniszczyć Twój system! Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
+"force-yes</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Force yes; this is a dangerous option that will cause apt to continue "
+#| "without prompting if it is doing something potentially harmful. It should "
+#| "not be used except in very special situations. Using <literal>force-yes</"
+#| "literal> can potentially destroy your system! Configuration Item: "
+#| "<literal>APT::Get::force-yes</literal>."
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is doing something potentially harmful. It should "
+"not be used except in very special situations. Using <literal>force-yes</"
+"literal> can potentially destroy your system! Configuration Item: "
+"<literal>APT::Get::force-yes</literal>. This is deprecated and replaced by "
+"<option>--allow-downgrades</option>, <option>--allow-remove-essential</"
+"option>, <option>--allow-change-held-packages</option> in 1.1."
+msgstr ""
+"Wymuszenie. Jest to niebezpieczna opcja, która powoduje, że apt-get "
+"kontynuuje swoje działanie bez żadnej interakcji z użytkownikiem, nawet "
+"jeśli robi coś, co może być szkodliwe. Nie powinna być używana, z wyjątkiem "
+"bardzo szczególnych sytuacji. Używanie <literal>force-yes</literal> może "
+"zniszczyć Twój system! Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
+"force-yes</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Instead of fetching the files to install their URIs are printed. Each URI "
+"will have the path, the destination file name, the size and the expected MD5 "
+"hash. Note that the file name to write to will not always match the file "
+"name on the remote site! This also works with the <literal>source</literal> "
+"and <literal>update</literal> commands. When used with the <literal>update</"
+"literal> command the MD5 and size are not included, and it is up to the user "
+"to decompress any compressed files. Configuration Item: <literal>APT::Get::"
+"Print-URIs</literal>."
+msgstr ""
+"Nie ściąga pakietów do zainstalowania, tylko wypisuje ich URI. Każdy URI "
+"składa się z lokalizacji, nazwy pliku przeznaczenia, rozmiaru oraz "
+"oczekiwanej sumy kontrolnej MD5. Należy zauważyć, że nazwa pliku "
+"przeznaczenia nie musi być taka sama jak nazwa zdalnego pliku! Działa to "
+"także z poleceniami <literal>source</literal> i <literal>update</literal>. "
+"Używane z poleceniem <literal>update</literal>, nie wypisuje sum MD5 i "
+"rozmiaru, a także w gestii użytkownika leży wtedy rozpakowywanie spakowanych "
+"plików. Pozycja w pliku konfiguracyjnym: <literal>APT::Get::Print-URIs</"
+"literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Use purge instead of remove for anything that would be removed. An asterisk "
+"(\"*\") will be displayed next to packages which are scheduled to be purged. "
+"<option>remove --purge</option> is equivalent to the <option>purge</option> "
+"command. Configuration Item: <literal>APT::Get::Purge</literal>."
+msgstr ""
+"Używa polecenia purge (wyczyść), zamiast remove (usuń) dla wszystkiego, co "
+"miałoby zostać usunięte. Obok pakietów, które są przeznaczone do "
+"wyczyszczenia, wyświetlana jest gwiazdka (\"*\"). <option>remove --purge</"
+"option> jest odpowiednikiem polecenia <option>purge</option>. Pozycja w "
+"pliku konfiguracyjnym: <literal>APT::Get::Purge</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Re-install packages that are already installed and at the newest version. "
+"Configuration Item: <literal>APT::Get::ReInstall</literal>."
+msgstr ""
+"Ponownie instaluje pakiety, których najnowsza wersja już jest zainstalowana "
+"Pozycja w pliku konfiguracyjnym: <literal>APT::Get::ReInstall</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option is on by default; use <literal>--no-list-cleanup</literal> to "
+"turn it off. When it is on, <command>apt-get</command> will automatically "
+"manage the contents of <filename>&statedir;/lists</filename> to ensure that "
+"obsolete files are erased. The only reason to turn it off is if you "
+"frequently change your sources list. Configuration Item: <literal>APT::Get::"
+"List-Cleanup</literal>."
+msgstr ""
+"Ta opcja jest domyślnie włączona, można ją wyłączyć używając <literal>--no-"
+"list-cleanup</literal>. Jeżeli jest włączona, <command>apt-get</command> "
+"będzie automatycznie zarządzał zawartością <filename>&statedir;/lists</"
+"filename>,tak aby przestarzałe pliki były usuwane. Jedynym powodem dla jej "
+"wyłączenia mogłyby być częste zmiany w sources.list. Pozycja w pliku "
+"konfiguracyjnym: <literal>APT::Get::List-Cleanup</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the default input to the policy engine; it creates a "
+"default pin at priority 990 using the specified release string. This "
+"overrides the general settings in <filename>/etc/apt/preferences</"
+"filename>. Specifically pinned packages are not affected by the value of "
+"this option. In short, this option lets you have simple control over which "
+"distribution packages will be retrieved from. Some common examples might be "
+"<option>-t '2.1*'</option>, <option>-t unstable</option> or <option>-t sid</"
+"option>. Configuration Item: <literal>APT::Default-Release</literal>; see "
+"also the &apt-preferences; manual page."
+msgstr ""
+"Ta opcja tworzy domyślny pin o priorytecie 990, używając podanego łańcucha "
+"znaków oznaczającego wersję dystrybucji. Nadpisuje to ogólne ustawienia z "
+"pliku <filename>/etc/apt/preferences</filename>. Opcja nie zmienia pinu "
+"pakietów, które mają własne (szczegółowe) ustawienia w powyższym pliku "
+"preferencji. W skrócie - ta opcja pozwala pozwala na prostą kontrolę, z "
+"których dystrybucji będą pobierane pakiety. Przykłady: <option>-t '2.1*'</"
+"option>, <option>-t unstable</option> lub <option>-t sid</option> Pozycja w "
+"pliku konfiguracyjnym: <literal>APT::Default-Release</literal>; zobacz także "
+"stronę podręcznika &apt-preferences;."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only perform operations that are 'trivial'. Logically this can be considered "
+"related to <option>--assume-yes</option>; where <option>--assume-yes</"
+"option> will answer yes to any prompt, <option>--trivial-only</option> will "
+"answer no. Configuration Item: <literal>APT::Get::Trivial-Only</literal>."
+msgstr ""
+"Wykonuje tylko \"banalne\" (ang. \"trivial\") operacje. Tę opcję można "
+"porównać z <option>--assume-yes</option>, ale tam gdzie <option>--assume-"
+"yes</option> odpowiedziałoby \"tak\" na pytanie, <option>--trivial-only</"
+"option> odpowie \"nie\". Pozycja w pliku konfiguracyjnym: <literal>APT::"
+"Get::Trivial-Only</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If any packages are to be removed apt-get immediately aborts without "
+"prompting. Configuration Item: <literal>APT::Get::Remove</literal>."
+msgstr ""
+"Jeżeli jakikolwiek pakiet miałby zostać usunięty, apt-get natychmiast kończy "
+"działanie. Pozycja w pliku konfiguracyjnym: <literal>APT::Get::Remove</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If the command is either <literal>install</literal> or <literal>remove</"
+"literal>, then this option acts like running the <literal>autoremove</"
+"literal> command, removing unused dependency packages. Configuration Item: "
+"<literal>APT::Get::AutomaticRemove</literal>."
+msgstr ""
+"Jeżeli polecenie to albo <literal>install</literal>, albo <literal>remove</"
+"literal>, to ta opcja działa tak, jak uruchomienie polecenia "
+"<literal>autoremove</literal> i usuwa pakiety mające nieużywane już "
+"zależności. Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
+"AutomaticRemove</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only has meaning for the <literal>source</literal> and <literal>build-dep</"
+"literal> commands. Indicates that the given source names are not to be "
+"mapped through the binary table. This means that if this option is "
+"specified, these commands will only accept source package names as "
+"arguments, rather than accepting binary package names and looking up the "
+"corresponding source package. Configuration Item: <literal>APT::Get::Only-"
+"Source</literal>."
+msgstr ""
+"Ma znaczenie tylko dla poleceń <literal>source</literal> i <literal>build-"
+"dep</literal>. Wskazuje na to, że podane nazwy pakietów źródłowych nie "
+"powinny być mapowane w tabeli pakietów binarnych. Oznacza to, że gdy podano "
+"tę opcję, to powyższe polecenia zaakceptują tylko nazwy pakietów źródłowych."
+"Nie będą akceptować nazw pakietów binarnych ani wyszukiwać odpowiadających "
+"im pakietów źródłowych. Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
+"Only-Source</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Download only the diff, dsc, or tar file of a source archive. Configuration "
+"Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</"
+"literal>, and <literal>APT::Get::Tar-Only</literal>."
+msgstr ""
+"Ściągnij tylko plik diff, dsc albo tar pakietu źródłowego. Pozycje w pliku "
+"konfiguracyjnym: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::"
+"Dsc-Only</literal> oraz <literal>APT::Get::Tar-Only</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only process architecture-dependent build-dependencies. Configuration Item: "
+"<literal>APT::Get::Arch-Only</literal>."
+msgstr ""
+"Przetwarza tylko te pakiety z zależnościami wymaganymi do zbudowania pakietu "
+"ze źródeł (build-dependencies), które są zależnie od architektury "
+"komputera. Pozycja w pliku konfiguracyjnym: <literal>APT::Get::Arch-Only</"
+"literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Only process architecture-dependent build-dependencies. Configuration "
+#| "Item: <literal>APT::Get::Arch-Only</literal>."
+msgid ""
+"Only process architecture-independent build-dependencies. Configuration "
+"Item: <literal>APT::Get::Indep-Only</literal>."
+msgstr ""
+"Przetwarza tylko te pakiety z zależnościami wymaganymi do zbudowania pakietu "
+"ze źródeł (build-dependencies), które są zależnie od architektury "
+"komputera. Pozycja w pliku konfiguracyjnym: <literal>APT::Get::Arch-Only</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore if packages can't be authenticated and don't prompt about it. This "
+"can be useful while working with local repositories, but is a huge security "
+"risk if data authenticity isn't ensured in another way by the user itself. "
+"The usage of the <option>Trusted</option> option for &sources-list; entries "
+"should usually be preferred over this global override. Configuration Item: "
+"<literal>APT::Get::AllowUnauthenticated</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Forbid the update command to acquire unverifiable data from configured "
+"sources. APT will fail at the update command for repositories without valid "
+"cryptographically signatures. See also &apt-secure; for details on the "
+"concept and the implications. Configuration Item: <literal>Acquire::"
+"AllowInsecureRepositories</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Show user friendly progress information in the terminal window when packages "
+"are installed, upgraded or removed. For a machine parsable version of this "
+"data see README.progress-reporting in the apt doc directory. Configuration "
+"Items: <literal>Dpkg::Progress</literal> and <literal>Dpkg::Progress-Fancy</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. See <option>--with-source</option> description in &apt-"
+"cache; for further details."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml
+msgid "Files"
+msgstr "Pliki"
+
+#
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, "
+#| "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, &apt-"
+#| "preferences;, the APT Howto."
+msgid ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
+"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
+"APT Howto."
+msgstr ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, "
+"&apt-config;, &apt-secure;, Przewodnik APT dla użytkowników w &guidesdir;, "
+"&apt-preferences;, APT Howto."
+
+#
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"<command>apt-get</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+"<command>apt-get</command> zwraca zero, gdy zakończyło się pomyślnie, 100 - "
+"w przypadku błędu."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cache.8.xml
+msgid "query the APT cache"
+msgstr "odpytanie bufora APT"
+
+#
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "<command>apt-cache</command> performs a variety of operations on APT's "
+#| "package cache. <command>apt-cache</command> does not manipulate the state "
+#| "of the system but does provide operations to search and generate "
+#| "interesting output from the package metadata."
+msgid ""
+"<command>apt-cache</command> performs a variety of operations on APT's "
+"package cache. <command>apt-cache</command> does not manipulate the state of "
+"the system but does provide operations to search and generate interesting "
+"output from the package metadata. The metadata is acquired and updated via "
+"the 'update' command of e.g. <command>apt-get</command>, so that it can be "
+"outdated if the last update is too long ago, but in exchange <command>apt-"
+"cache</command> works independently of the availability of the configured "
+"sources (e.g. offline)."
+msgstr ""
+"<command>apt-cache</command> wykonuje różnorodne operacje na buforze (cache) "
+"pakietów programu APT. <command>apt-cache</command> nie zmienia stanu "
+"systemu, ale dostarcza mechanizmów przeszukiwania metadanych pakietów i "
+"generowania interesującego wyjścia."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>gencaches</literal> creates APT's package cache. This is done "
+"implicitly by all commands needing this cache if it is missing or outdated."
+msgstr ""
+"<literal>gencaches</literal> tworzy bufor (cache) APT pakietów. Wywoływane "
+"jest automatycznie przez wszystkie polecenia potrzebujące bufora, jeśli nie "
+"istnieje lub jest przestarzały."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml
+msgid "&synopsis-pkg;"
+msgstr "&synopsis-pkg;"
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>showpkg</literal> displays information about the packages listed on "
+"the command line. Remaining arguments are package names. The available "
+"versions and reverse dependencies of each package listed are listed, as well "
+"as forward dependencies for each version. Forward (normal) dependencies are "
+"those packages upon which the package in question depends; reverse "
+"dependencies are those packages that depend upon the package in question. "
+"Thus, forward dependencies must be satisfied for a package, but reverse "
+"dependencies need not be. For instance, <command>apt-cache showpkg "
+"libreadline2</command> would produce output similar to the following:"
+msgstr ""
+"<literal>showpkg</literal> wyświetla informacje na temat pakietów podanych w "
+"linii poleceń. Pozostałymi argumentami są nazwy pakietów. Wyświetlane są "
+"dostępne wersje oraz odwrotne zależności każdego z podanych pakietów, jak "
+"również zwykłe zależności dla każdej z wersji Normalne (zwykłe) zależności "
+"to są pakiety, od których dany pakiet zależy, odwrotne zależności stanowią "
+"te pakiety, które zależą od danego pakietu. Tak więc, pakiet musi spełniać "
+"normalne zależności, ale odwrotnych zależności - nie musi. Na przykład, "
+"<command>apt-cache showpkg libreadline2</command> wypisze wyjście podobne do "
+"poniższego:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-cache.8.xml
+#, no-wrap
+msgid ""
+"Package: libreadline2\n"
+"Versions: 2.1-12(/var/state/apt/lists/foo_Packages),\n"
+"Reverse Depends: \n"
+" libreadlineg2,libreadline2\n"
+" libreadline2-altdev,libreadline2\n"
+"Dependencies:\n"
+"2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))\n"
+"Provides:\n"
+"2.1-12 - \n"
+"Reverse Provides: \n"
+msgstr ""
+"Package: libreadline2\n"
+"Versions: 2.1-12(/var/state/apt/lists/foo_Packages),\n"
+"Reverse Depends: \n"
+" libreadlineg2,libreadline2\n"
+" libreadline2-altdev,libreadline2\n"
+"Dependencies:\n"
+"2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))\n"
+"Provides:\n"
+"2.1-12 - \n"
+"Reverse Provides: \n"
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Thus it may be seen that libreadline2, version 2.1-12, depends on libc5 and "
+"ncurses3.0 which must be installed for libreadline2 to work. In turn, "
+"libreadlineg2 and libreadline2-altdev depend on libreadline2. If "
+"libreadline2 is installed, libc5 and ncurses3.0 (and ldso) must also be "
+"installed; libreadlineg2 and libreadline2-altdev do not have to be "
+"installed. For the specific meaning of the remainder of the output it is "
+"best to consult the apt source code."
+msgstr ""
+"Jak widać libreadline2 w wersji 2.1-12 zależy od libc5 i ncurses3.0, które "
+"muszą być zainstalowane, aby libreadline2 działała. Z kolei libreadlineg2 i "
+"libreadline2-altdev zależą od libreadline2. Jeżeli libreadline2 jest "
+"zainstalowany, to libc5 i ncurses3.0 (i ldso) muszą być także zainstalowane; "
+"natomiast libreadlineg2 oraz libreadline2-altdev nie muszą być "
+"zainstalowane. W celu zrozumienia, co oznaczają pozostałe linie, najlepiej "
+"przejrzeć kod źródłowy programu apt."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>stats</literal> displays some statistics about the cache. No "
+"further arguments are expected. Statistics reported are:"
+msgstr ""
+"<literal>stats</literal> wyświetla statystyki dotyczące bufora pakietów. "
+"Nie wymaga żadnych argumentów. Wypisywane są następujące statystyki:"
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total package names</literal> is the number of package names found "
+"in the cache."
+msgstr ""
+"<literal>Całkowita liczba nazw pakietów (Total package names)</literal> - "
+"liczba nazw pakietów znajdujących się w buforze."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Normal packages</literal> is the number of regular, ordinary "
+"package names; these are packages that bear a one-to-one correspondence "
+"between their names and the names used by other packages for them in "
+"dependencies. The majority of packages fall into this category."
+msgstr ""
+"<literal>Zwykłe pakiety (Normal packages)</literal> jest to liczba zwykłych, "
+"regularnych nazw pakietów; są to pakiety, dla których istnieje relacja "
+"\"jeden do jednego\" między ich nazwami a nazwami używanymi przez inne "
+"pakiety jako zależności. Większość pakietów należy do tej kategorii."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Pure virtual packages</literal> is the number of packages that "
+"exist only as a virtual package name; that is, packages only \"provide\" the "
+"virtual package name, and no package actually uses the name. For instance, "
+"\"mail-transport-agent\" in the Debian system is a pure virtual package; "
+"several packages provide \"mail-transport-agent\", but there is no package "
+"named \"mail-transport-agent\"."
+msgstr ""
+"<literal>Czyste pakiety wirtualne (Pure virtual packages)</literal> określa "
+"liczbę pakietów, które istnieją tylko jako nazwa pakietu wirtualnego; to "
+"jest pewne pakiety \"dostarczają\" tej nazwy wirtualnej, ale żaden pakiet "
+"nie używa tej nazwy. Na przykład \"mail-transport-agent\" w systemie Debian "
+"jest czystym pakietem wirtualnym; kilka pakietów dostarcza \"mail-transport-"
+"agenta\", ale żaden pakiet nie nazywa się \"mail-transport-agent\"."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Single virtual packages</literal> is the number of packages with "
+"only one package providing a particular virtual package. For example, in the "
+"Debian system, \"X11-text-viewer\" is a virtual package, but only one "
+"package, xless, provides \"X11-text-viewer\"."
+msgstr ""
+"<literal>Pojedyncze pakiety wirtualne (Single virtual packages)</literal> - "
+"liczba pakietów, dla których istnieje tylko jeden pakiet, który dostarcza "
+"danego pakietu wirtualnego. Na przykład, w systemie Debian \"X11-text-viewer"
+"\" jest pakietem wirtualnym, ale tylko jeden pakiet, mianowicie \"xless\","
+"dostarcza \"X11-text-viewer\"."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Mixed virtual packages</literal> is the number of packages that "
+"either provide a particular virtual package or have the virtual package name "
+"as the package name. For instance, in the Debian system, \"debconf\" is both "
+"an actual package, and provided by the debconf-tiny package."
+msgstr ""
+"<literal>Mieszane pakiety wirtualne (Mixed virtual packages)</literal> - "
+"liczba pakietów, które albo dostarczają poszczególnych pakietów wirtualnych, "
+"albo nazywają się tak, jak nazwa pakietu wirtualnego. Na przykład w "
+"systemie Debian \"debconf\" jest zarówno zwykłym pakietem, jak i jest "
+"pakietem dostarczanym przez pakiet \"debconf-tiny\"."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Missing</literal> is the number of package names that were "
+"referenced in a dependency but were not provided by any package. Missing "
+"packages may be an evidence if a full distribution is not accessed, or if a "
+"package (real or virtual) has been dropped from the distribution. Usually "
+"they are referenced from Conflicts or Breaks statements."
+msgstr ""
+"<literal>Brakujące (Missing)</literal> jest liczbą nazw pakietów, do których "
+"odnoszą się jakieś zależności, ale które nie są spełnione przez żaden z "
+"dostępnych pakietów. Brakujące pakiety mogą być dowodem, że nie ma dostępu "
+"do całej dystrybucji albo że pakiet (rzeczywisty lub wirtualny) został "
+"usunięty z dystrybucji. Zazwyczaj odniesienia takie znajdują się w "
+"zależnościach typu \"Conflicts\" lub \"Breaks\"."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>Total distinct</literal> versions is the number of package "
+#| "versions found in the cache; this value is therefore at least equal to "
+#| "the number of total package names. If more than one distribution is being "
+#| "accessed (for instance, \"stable\" and \"unstable\"), this value can be "
+#| "considerably larger than the number of total package names."
+msgid ""
+"<literal>Total distinct</literal> versions is the number of package versions "
+"found in the cache. If more than one distribution is being accessed (for "
+"instance, \"stable\" and \"unstable\"), this value can be considerably "
+"larger than the number of total package names."
+msgstr ""
+"<literal>Całkowita liczba różnych wersji (Total distinct versions)</literal> "
+"jest to liczba wersji pakietów znajdujących się w buforze, tak więc ta "
+"wartość jest co najmniej równa liczbie wszystkich nazw pakietów. Jeżeli "
+"pobierane są pakiety z więcej niż jednej dystrybucji (na przykład zarówno ze "
+"\"stable\", jak i z \"unstable\"), wartość ta może być znacznie większa niż "
+"liczba wszystkich nazw pakietów."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total dependencies</literal> is the number of dependency "
+"relationships claimed by all of the packages in the cache."
+msgstr ""
+"<literal>Całkowite zależności (Total dependencies)</literal> to liczba "
+"więzów zależności wymaganych przez wszystkie pakiety w buforze."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>showsrc</literal> displays all the source package records that "
+#| "match the given package names. All versions are shown, as well as all "
+#| "records that declare the name to be a binary package."
+msgid ""
+"<literal>showsrc</literal> displays all the source package records that "
+"match the given package names. All versions are shown, as well as all "
+"records that declare the name to be a binary package. Use <option>--only-"
+"source</option> to display only source package names."
+msgstr ""
+"<literal>showsrc</literal> wyświetla wszystkie pakiety źródłowe, które "
+"odpowiadają podanym nazwom pakietów. Wyświetlone zostaną wszystkie wersje "
+"tych pakietów oraz pakiety, których podana nazwa odpowiada nazwie pakietu "
+"binarnego."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dump</literal> shows a short listing of every package in the cache. "
+"It is primarily for debugging."
+msgstr ""
+"<literal>dump</literal> pokazuje krótką listę wszystkich pakietów w buforze. "
+"Jest używany głównie w celu odpluskwiania."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dumpavail</literal> prints out an available list to stdout. This is "
+"suitable for use with &dpkg; and is used by the &dselect; method."
+msgstr ""
+"<literal>dumpavail</literal> wypisuje na standardowe wyjście (stdout) listę "
+"dostępnych pakietów. Jest to polecenie odpowiednie do użycia z programem "
+"&dpkg; i jest używane w metodzie &dselect; tego programu."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>unmet</literal> displays a summary of all unmet dependencies in the "
+"package cache."
+msgstr ""
+"<literal>unmet</literal> pokazuje podsumowanie wszystkich niespełnionych "
+"zależności w buforze pakietów"
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>show</literal> performs a function similar to <command>dpkg --print-"
+"avail</command>; it displays the package records for the named packages."
+msgstr ""
+"<literal>show</literal> spełnia funkcje podobne do <command>dpkg --print-"
+"avail</command>; pokazuje szczegółowe informacje o podanych pakietach."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml
+msgid "&synopsis-regex;"
+msgstr "&synopsis-regex;"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>search</literal> performs a full text search on all available "
+#| "package lists for the POSIX regex pattern given, see &regex;. It "
+#| "searches the package names and the descriptions for an occurrence of the "
+#| "regular expression and prints out the package name and the short "
+#| "description, including virtual package names. If <option>--full</option> "
+#| "is given then output identical to <literal>show</literal> is produced for "
+#| "each matched package, and if <option>--names-only</option> is given then "
+#| "the long description is not searched, only the package name is."
+msgid ""
+"<literal>search</literal> performs a full text search on all available "
+"package lists for the POSIX regex pattern given, see &regex;. It searches "
+"the package names and the descriptions for an occurrence of the regular "
+"expression and prints out the package name and the short description, "
+"including virtual package names. If <option>--full</option> is given then "
+"output identical to <literal>show</literal> is produced for each matched "
+"package, and if <option>--names-only</option> is given then the long "
+"description is not searched, only the package name and provided packages are."
+msgstr ""
+"<literal>search</literal> wykonuje pełne wyszukiwanie podanego wzorca "
+"będącego wyrażeniem regularnym POSIX (patrz &regex;) we wszystkich "
+"dostępnych listach pakietów. Przeszukuje nazwy pakietów (w tym pakietów "
+"wirtualnych) i ich szczegółowe (długie) opisy, szukając w nich podanego "
+"wyrażenia regularnego i wypisuje nazwę pakietu i jego krótki opis. Jeżeli "
+"podana jest opcja <option>--full</option>, to wtedy dla każdego znalezionego "
+"pakietu informacje na wyjściu są podobne do tego, co pokazuje polecenie "
+"<literal>show</literal>. Jeżeli podano opcję <option>--names-only</option>, "
+"to są przeszukiwane tylko nazwy pakietów, bez ich długich opisów."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Separate arguments can be used to specify multiple search patterns that are "
+"and'ed together."
+msgstr ""
+"Oddzielne argumenty mogą być używane do podania kilku wzorców, które będą "
+"traktowane jakby były połączone spójnikiem logicznym \"i\"."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>depends</literal> shows a listing of each dependency a package has "
+"and all the possible other packages that can fulfill that dependency."
+msgstr ""
+"<literal>depends</literal> wyświetla listę wszystkich zależności danego "
+"pakietu i wszystkie możliwe pakiety, które mogą spełnić te zależności."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>rdepends</literal> shows a listing of each reverse dependency a "
+"package has."
+msgstr ""
+"<literal>rdepends</literal> pokazuje listę wszystkich odwrotnych zależności "
+"danego pakietu."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml
+msgid "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+msgstr "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"This command prints the name of each package APT knows. The optional "
+"argument is a prefix match to filter the name list. The output is suitable "
+"for use in a shell tab complete function and the output is generated "
+"extremely quickly. This command is best used with the <option>--generate</"
+"option> option."
+msgstr ""
+"To polecenie wyświetla nazwy wszystkich pakietów znanych systemowi APT. "
+"Opcjonalnym argumentem jest przedrostek nazwy pakietów. Wynik jest "
+"odpowiedni do użycia z funkcją powłoki (shella) uzupełniania nazw za pomocą "
+"klawisza tabulacji i jest wypisywany bardzo szybko. Tego polecenia najlepiej "
+"używać z opcją <option>--generate</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Note that a package which APT knows of is not necessarily available to "
+"download, installable or installed, e.g. virtual packages are also listed in "
+"the generated list."
+msgstr ""
+"Proszę zauważyć, że to, iż pakiet jest znany systemowi APT, niekoniecznie "
+"oznacza, że jest dostępny do pobrania i zainstalowania albo zainstalowany. "
+"Może być np. pakietem wirtualnym, które także są wypisane w wygenerowanej "
+"liście."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dotty</literal> takes a list of packages on the command line and "
+"generates output suitable for use by dotty from the <ulink url=\"http://www."
+"research.att.com/sw/tools/graphviz/\">GraphViz</ulink> package. The result "
+"will be a set of nodes and edges representing the relationships between the "
+"packages. By default the given packages will trace out all dependent "
+"packages; this can produce a very large graph. To limit the output to only "
+"the packages listed on the command line, set the <literal>APT::Cache::"
+"GivenOnly</literal> option."
+msgstr ""
+"<literal>dotty</literal> bierze jako argument listę pakietów i generuje "
+"wyjście odpowiednie dla programu dotty z pakietu <ulink url=\"http://www."
+"research.att.com/sw/tools/graphviz/\">GraphViz</ulink>. Wynikiem będzie "
+"zbiór wierzchołków i krawędzi reprezentujących powiązania między pakietami. "
+"Domyślnie podane pakiety wyśledzą wszystkie pakiety zależne. Może to "
+"spowodować wypisanie bardzo dużego grafu. Aby wypisać powiązania tylko "
+"pomiędzy pakietami podanymi w linii poleceń, należy użyć opcji <literal>APT::"
+"Cache::GivenOnly</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"The resulting nodes will have several shapes; normal packages are boxes, "
+"pure virtual packages are triangles, mixed virtual packages are diamonds, "
+"missing packages are hexagons. Orange boxes mean recursion was stopped (leaf "
+"packages), blue lines are pre-depends, green lines are conflicts."
+msgstr ""
+"Wynikowe wierzchołki będą miały różnorakie kształty: zwykłe pakiety są "
+"prostokątami, czyste pakiety wirtualne to trójkąty, mieszane pakiety "
+"wirtualne są rombami, sześciokąty oznaczają brakujące pakiety . Pomarańczowe "
+"prostokąty oznaczają koniec rekurencji (liście), niebieskie linie to pre-"
+"zależności, linie zielone to konflikty."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid "Caution, dotty cannot graph larger sets of packages."
+msgstr "Uwaga: dotty nie potrafi narysować większego zbioru pakietów."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"The same as <literal>dotty</literal>, only for xvcg from the <ulink url="
+"\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</ulink>."
+msgstr ""
+"Robi to samo, co <literal>dotty</literal>, tylko dla xvcg z <ulink url="
+"\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">narzędzia VCG</"
+"ulink>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml
+msgid "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+msgstr "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>policy</literal> is meant to help debug issues relating to the "
+"preferences file. With no arguments it will print out the priorities of each "
+"source. Otherwise it prints out detailed information about the priority "
+"selection of the named package."
+msgstr ""
+"<literal>policy</literal> jest pomyślane w celu debugowania zagadnień "
+"związanych z plikiem preferencji. Jeżeli nie podano żadnych opcji, wypisane "
+"zostaną informacje o priorytecie każdego źródła. W przeciwnym wypadku, "
+"wypisuje szczegółowe informacje o priorytecie danego pakietu."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>apt-cache</literal>'s <literal>madison</literal> command attempts "
+"to mimic the output format and a subset of the functionality of the Debian "
+"archive management tool, <literal>madison</literal>. It displays available "
+"versions of a package in a tabular format. Unlike the original "
+"<literal>madison</literal>, it can only display information for the "
+"architecture for which APT has retrieved package lists (<literal>APT::"
+"Architecture</literal>)."
+msgstr ""
+"polecenie <literal>madison</literal> z <literal>apt-cache</literal> próbuje "
+"naśladować format wyjścia i część funkcjonalności programu <literal>madison</"
+"literal> - narzędzia zarządzania archiwum Debiana. Wyświetla dostępne wersje "
+"pakietów w formacie tabeli. W przeciwieństwie do oryginału, może wyświetlić "
+"informacje tylko dla tych architektur, dla których APT pobrało listy "
+"pakietów (<literal>APT::Architecture</literal>)."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Select the file to store the package cache. The package cache is the primary "
+"cache used by all operations. Configuration Item: <literal>Dir::Cache::"
+"pkgcache</literal>."
+msgstr ""
+"Podaje nazwę pliku to przechowywania bufora pakietów, który jest podstawowym "
+"buforem używanym we wszystkich operacjach. Pozycja w pliku konfiguracyjnym: "
+"<literal>Dir::Cache::pkgcache</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Select the file to store the source cache. The source is used only by "
+"<literal>gencaches</literal> and it stores a parsed version of the package "
+"information from remote sources. When building the package cache the source "
+"cache is used to avoid reparsing all of the package files. Configuration "
+"Item: <literal>Dir::Cache::srcpkgcache</literal>."
+msgstr ""
+"Podaje nazwę pliku to przechowywania bufora źródeł. Jest używany tylko przez "
+"akcjÄ™ <literal>gencaches</literal> i przechowuje sparsowanÄ… wersjÄ™ "
+"informacji o pakietach pobraną ze zdalnych źródeł. Podczas budowania bufora "
+"pakietów, bufor źródeł jest używany w celu uniknięcia ponownego parsowania "
+"wszystkich plików pakietów. Pozycja w pliku konfiguracyjnym: <literal>Dir::"
+"Cache::srcpkgcache</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quietness up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quietness level, overriding the "
+"configuration file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+"Cichy; wypisuje tylko informacje potrzebne do logowania, opuszczajÄ…c "
+"wskaźniki postępu. Więcej znaków q spowoduje jeszcze bardziej ciche wyjście, "
+"maksimum jest 2. Można także ustawić poziom cichości za pomocą <option>-q=#</"
+"option>,nadpisujÄ…c tym samym opcjÄ™ z pliku konfiguracyjnego. Pozycja w "
+"pliku konfiguracyjnym: <literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print only important dependencies; for use with <literal>unmet</literal> and "
+"<literal>depends</literal>. Causes only Depends and Pre-Depends relations to "
+"be printed. Configuration Item: <literal>APT::Cache::Important</literal>."
+msgstr ""
+"Wyświetla tylko ważne zależności; do używania z akcjami <literal>unmet</"
+"literal> o <literal>depends</literal>. Powoduje wypisanie tylko zależności "
+"typu Depends i Pre-Depends. Pozycja w pliku konfiguracyjnym: <literal>APT::"
+"Cache::Important</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "Per default the <literal>depends</literal> and <literal>rdepends</"
+#| "literal> print all dependencies. This can be tweaked with these flags "
+#| "which will omit the specified dependency type. Configuration Item: "
+#| "<literal>APT::Cache::Show<replaceable>DependencyType</replaceable></"
+#| "literal> e.g. <literal>APT::Cache::ShowRecommends</literal>."
+msgid ""
+"Per default the <command>depends</command> and <command>rdepends</command> "
+"print all dependencies. This can be tweaked with these flags which will omit "
+"the specified dependency type. Configuration Item: <literal>APT::Cache::"
+"Show<replaceable>DependencyType</replaceable></literal> e.g. <literal>APT::"
+"Cache::ShowRecommends</literal>."
+msgstr ""
+"Domyślnie <literal>depends</literal> i <literal>rdepends</literal> wypisują "
+"wszystkie zależności. Można to zmienić, używając tych flag, które spowodują "
+"pominięcie podanych typów zależności. Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Cache::Show<replaceable>TypZależności</replaceable></literal>, "
+"na przykład <literal>APT::Cache::ShowRecommends</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Per default <command>depends</command> and <command>rdepends</command> print "
+"only dependencies explicitly expressed in the metadata. With this flag it "
+"will also show dependencies implicitly added based on the encountered data. "
+"A <literal>Conflicts: foo</literal> e.g. expresses implicitly that this "
+"package also conflicts with the package foo from any other architecture. "
+"Configuration Item: <literal>APT::Cache::ShowImplicit</literal>."
+msgstr ""
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print full package records when searching. Configuration Item: "
+"<literal>APT::Cache::ShowFull</literal>."
+msgstr ""
+"Podczas szukania wypisuj pełną informację o pakiecie. Pozycja w pliku "
+"konfiguracyjnym: <literal>APT::Cache::ShowFull</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print full records for all available versions. This is the default; to turn "
+"it off, use <option>--no-all-versions</option>. If <option>--no-all-"
+"versions</option> is specified, only the candidate version will be displayed "
+"(the one which would be selected for installation). This option is only "
+"applicable to the <literal>show</literal> command. Configuration Item: "
+"<literal>APT::Cache::AllVersions</literal>."
+msgstr ""
+"Akcja show wypisuje wszystkie rekordy dla wszystkich dostępnych wersji. Jest "
+"to opcja domyślna, aby ją wyłączyć, proszę użyć <option>--no-all-versions</"
+"option>. Jeżeli podano <option>--no-all-versions</option>, to będzie "
+"wyświetlana tylko wersja-kandydat (czyli ta, która byłaby wybrana do "
+"instalacji). Ta opcja ma znaczenie tylko dla polecenia <literal>show</"
+"literal>. Pozycja w pliku konfiguracyjnym: <literal>APT::Cache::AllVersions</"
+"literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Perform automatic package cache regeneration, rather than use the cache as "
+"it is. This is the default; to turn it off, use <option>--no-generate</"
+"option>. Configuration Item: <literal>APT::Cache::Generate</literal>."
+msgstr ""
+"Automatycznie odbudowuje bufor pakietów, zamiast używać istniejącego "
+"bufora. Ta opcja jest domyślnie włączona, aby ją wyłączyć, należy użyć "
+"<option>--no-generate</option>. Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Cache::Generate</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "Only search on the package names, not the long descriptions. "
+#| "Configuration Item: <literal>APT::Cache::NamesOnly</literal>."
+msgid ""
+"Only search on the package and provided package names, not the long "
+"descriptions. Configuration Item: <literal>APT::Cache::NamesOnly</literal>."
+msgstr ""
+"Przeszukaj tylko nazwy pakietów, pomijając szczegółowe opisy. Pozycja w "
+"pliku konfiguracyjnym: <literal>APT::Cache::NamesOnly</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Make <literal>pkgnames</literal> print all names, including virtual packages "
+"and missing dependencies. Configuration Item: <literal>APT::Cache::"
+"AllNames</literal>."
+msgstr ""
+"Powoduje, że akcja <literal>pkgnames</literal> wypisze nazwy wszystkich "
+"pakietów, łącznie z pakietami wirtualnymi oraz pakietami mającymi brakujące "
+"zależności. Pozycja w pliku konfiguracyjnym: <literal>APT::Cache::AllNames</"
+"literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Make <literal>depends</literal> and <literal>rdepends</literal> recursive so "
+"that all packages mentioned are printed once. Configuration Item: "
+"<literal>APT::Cache::RecurseDepends</literal>."
+msgstr ""
+"Powoduje, że zależności w poleceniach <literal>depends</literal> i "
+"<literal>rdepends</literal> będą zależnościami rekurencyjnymi, tak że "
+"wszystkie wymienione pakiety zostanÄ… wypisane tylko raz. Pozycja w pliku "
+"konfiguracyjnym: <literal>APT::Cache::RecurseDepends</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Limit the output of <literal>depends</literal> and <literal>rdepends</"
+"literal> to packages which are currently installed. Configuration Item: "
+"<literal>APT::Cache::Installed</literal>."
+msgstr ""
+"Ogranicza wyjście poleceń <literal>depends</literal> i <literal>rdepends</"
+"literal> tylko do pakietów, które są obecnie zainstalowane. Pozycja w pliku "
+"konfiguracyjnym: <literal>APT::Cache::Installed</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. Supported are currently <literal>*.deb</literal>, "
+"<literal>*.dsc</literal>, <literal>*.changes</literal>, <literal>Sources</"
+"literal> and <literal>Packages</literal> files as well as source package "
+"directories. Files are matched based on their name only, not their content!"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Sources</literal> and <literal>Packages</literal> can be compressed "
+"in any format apt supports as long as they have the correct extension. If "
+"you need to store multiple of these files in one directory you can prefix a "
+"name of your choice with the last character being an underscore "
+"(\"<literal>_</literal>\"). Example: my.example_Packages.xz"
+msgstr ""
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "Use source index field ordering. Configuration Item: <literal>APT::"
+#| "SortPkgs::Source</literal>."
+msgid ""
+"Note that these sources are treated as trusted (see &apt-secure;). "
+"Configuration Item: <literal>APT::Sources::With</literal>."
+msgstr ""
+"Używa kolejności pól indeksu pliku Source. Pozycja w pliku konfiguracji: "
+"<literal>APT::SortPkgs::Source</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid "&apt-conf;, &sources-list;, &apt-get;"
+msgstr "&apt-conf;, &sources-list;, &apt-get;"
+
+#
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid ""
+"<command>apt-cache</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-cache</command> zwraca zero, gdy zakończyło się pomyślnie, 100 "
+"- w przypadku błędu."
+
+#
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-key.8.xml
+msgid "APT key management utility"
+msgstr "Narzędzie zarządzanie kluczami APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"<command>apt-key</command> is used to manage the list of keys used by apt to "
+"authenticate packages. Packages which have been authenticated using these "
+"keys will be considered trusted."
+msgstr ""
+"<command>apt-key</command> jest używane do zarządzania listami kluczy "
+"używanych przez APT do sprawdzania autentyczności pakietów. Pakiety, których "
+"autentyczność została sprawdzona przy użyciu tych kluczy, są uznawane za "
+"zaufane."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Note that if usage of <command>apt-key</command> is desired the additional "
+"installation of the GNU Privacy Guard suite (packaged in <package>gnupg</"
+"package>) is required. For this reason alone the programmatic usage "
+"(especially in package maintainerscripts!) is strongly discouraged. Further "
+"more the output format of all commands is undefined and can and does change "
+"whenever the underlying commands change. <command>apt-key</command> will try "
+"to detect such usage and generates warnings on stderr in these cases."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml
+msgid "Supported keyring files"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
+"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
+"the keybox database format introduced in newer &gpg; versions as default for "
+"keyring files. Binary keyring files intended to be used with any apt version "
+"should therefore always be created with <command>gpg --export</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Alternatively, if all systems which should be using the created keyring have "
+"at least apt version >= 1.4 installed, you can use the ASCII armored format "
+"with the \"<literal>asc</literal>\" extension instead which can be created "
+"with <command>gpg --armor --export</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml
+msgid "Commands"
+msgstr "Polecenia"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Add a new key to the list of trusted keys. The key is read from the "
+"filename given with the parameter &synopsis-param-filename; or if the "
+"filename is <literal>-</literal> from standard input."
+msgstr ""
+"Dodaje nowy klucz do listy zaufanych kluczy. Klucz jest czytany z pliku "
+"podanego jako parametr &synopsis-param-filename; lub ze standardowego "
+"wejścia, jeśli zamiast nazwy pliku podano <literal>-</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"It is critical that keys added manually via <command>apt-key</command> are "
+"verified to belong to the owner of the repositories they claim to be for "
+"otherwise the &apt-secure; infrastructure is completely undermined."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
+"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
+"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
+"\"<literal>asc</literal>\" as file extension."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Remove a key from the list of trusted keys."
+msgstr "Usuwa klucz z listy zaufanych kluczy."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Output the key &synopsis-param-keyid; to standard output."
+msgstr "Wyświetla klucz &synopsis-param-keyid; na standardowym wyjściu."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Output all trusted keys to standard output."
+msgstr "Wypisuje na standardowe wyjście wszystkie zaufane klucze."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+#, fuzzy
+#| msgid "List trusted keys."
+msgid "List trusted keys with fingerprints."
+msgstr "Wyświetla listę zaufanych kluczy."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
+"e.g. download key from keyservers directly into the trusted set of keys. "
+"Note that there are <emphasis>no</emphasis> checks performed, so it is easy "
+"to completely undermine the &apt-secure; infrastructure if used without care."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-key.8.xml
+msgid "(deprecated)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Update the local keyring with the archive keyring and remove from the local "
+"keyring the archive keys which are no longer valid. The archive keyring is "
+"shipped in the <literal>archive-keyring</literal> package of your "
+"distribution, e.g. the &keyring-package; package in &keyring-distro;."
+msgstr ""
+"Aktualizuje lokalną składnicę kluczy używając składnicy kluczy archiwum i "
+"usuwa z lokalnej składnicy niepoprawne klucze archiwum. Składnica kluczy "
+"archiwum jest dostarczana przez pakiet <literal>archive-keyring</literal> "
+"Twojej dystrybucji, np. pakiet &keyring-package; w systemach &keyring-"
+"distro;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Note that a distribution does not need to and in fact should not use this "
+"command any longer and instead ship keyring files in the <filename>/etc/apt/"
+"trusted.gpg.d/</filename> directory directly as this avoids a dependency on "
+"<package>gnupg</package> and it is easier to manage keys by simply adding "
+"and removing files for maintainers and users alike."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Perform an update working similarly to the <command>update</command> command "
+"above, but get the archive keyring from a URI instead and validate it "
+"against a master key. This requires an installed &wget; and an APT build "
+"configured to have a server to fetch from and a master keyring to validate. "
+"APT in Debian does not support this command, relying on <command>update</"
+"command> instead, but Ubuntu's APT does."
+msgstr ""
+"Aktualizuje składnicę kluczy, działając podobnie do powyższego polecenia "
+"<command>update</command>, z tą różnicą, że pobiera składnicę kluczy "
+"archiwum z URI i waliduje go względem klucza głównego. Wymaga "
+"zainstalowanego programu &wget; oraz podanego (podczas budowania APT) "
+"serwera, z którego główny klucz będzie pobrany. APT w Debianie nie obsługuje "
+"tego polecenia i opiera siÄ™ zamiast niego na poleceniu <command>update</"
+"command>, ale APT w Ubuntu je obsługuje."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml
+msgid "Options"
+msgstr "Opcje"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Note that options need to be defined before the commands described in the "
+"previous section."
+msgstr ""
+"Proszę zauważyć, że poniższe opcje muszą być podane przed poleceniami "
+"opisanymi w poprzednim rozdziale."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"With this option it is possible to specify a particular keyring file the "
+"command should operate on. The default is that a command is executed on the "
+"<filename>trusted.gpg</filename> file as well as on all parts in the "
+"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</"
+"filename> is the primary keyring which means that e.g. new keys are added to "
+"this one."
+msgstr ""
+"Opcja pozwala na podanie pliku składnicy kluczy publicznych używanego w "
+"programie. Domyślnie program używa pliku <filename>trusted.gpg</filename> "
+"oraz wszystkich plików częściowych w katalogu <filename>trusted.gpg.d</"
+"filename>. <filename>trusted.gpg</filename> jest jednakże podstawową "
+"składnicą kluczy, co oznacza na przykład to, że nowe klucze będą dodawane "
+"właśnie tam."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid "&apt-get;, &apt-secure;"
+msgstr "&apt-get;, &apt-secure;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-mark.8.xml
+msgid "show, set and unset various settings for a package"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"<command>apt-mark</command> can be used as a unified front-end to set "
+"various settings for a package, such as marking a package as being "
+"automatically/manually installed or changing <command>dpkg</command> "
+"selections such as hold, install, deinstall and purge which are respected e."
+"g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
+"command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Automatically and Manually Installed Packages"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+#, fuzzy
+#| msgid ""
+#| "When you request that a package is installed, and as a result other "
+#| "packages are installed to satisfy its dependencies, the dependencies are "
+#| "marked as being automatically installed. Once these automatically "
+#| "installed packages are no longer depended on by any manually installed "
+#| "packages, they will be removed by e.g. <command>apt-get</command> or "
+#| "<command>aptitude</command>."
+msgid ""
+"When you request that a package is installed, and as a result other packages "
+"are installed to satisfy its dependencies, the dependencies are marked as "
+"being automatically installed, while the package you installed explicitly is "
+"marked as manually installed. Once an automatically installed package is no "
+"longer depended on by any manually installed package it is considered no "
+"longer needed and e.g. <command>apt-get</command> or <command>aptitude</"
+"command> will at least suggest removing them."
+msgstr ""
+"Kiedy użytkownik zażąda zainstalowania pakietu, to zazwyczaj instalowane są "
+"również inne pakiety, zależące od żądanego pakietu. Te zależne pakiety są "
+"oznaczane jako zainstalowane automatycznie. Kiedy takie automatycznie "
+"zainstalowane pakiety nie są już potrzebne (czyli żaden inny pakiet od nich "
+"nie zależy), zostaną usunięte na przykład przez <command>apt-get</command> "
+"lub <command>aptitude</command>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>auto</literal> is used to mark a package as being automatically "
+"installed, which will cause the package to be removed when no more manually "
+"installed packages depend on this package."
+msgstr ""
+"<literal>auto</literal> jest używane do zaznaczania pakietu jako "
+"zainstalowanego automatycznie, co spowoduje jego usunięcie, w sytuacji gdy "
+"żaden inny ręcznie zainstalowany pakiet nie będzie od niego zależał."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>manual</literal> is used to mark a package as being manually "
+"installed, which will prevent the package from being automatically removed "
+"if no other packages depend on it."
+msgstr ""
+"<literal>manual</literal> jest używane do zaznaczania pakietu jako "
+"zainstalowanego ręcznie, co go uchroni przed automatycznym usunięciem, w "
+"sytuacji gdy żaden inny pakiet nie będzie od niego zależał."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showauto</literal> is used to print a list of automatically "
+"installed packages with each package on a new line. All automatically "
+"installed packages will be listed if no package is given. If packages are "
+"given only those which are automatically installed will be shown."
+msgstr ""
+"<literal>showauto</literal> jest używane do wypisania listy wszystkich "
+"pakietów zainstalowanych automatycznie. Każdy pakiet jest wypisywany w "
+"osobnej linii. Jeśli nie podano żadnej nazwy pakietu, to zostaną wypisane "
+"wszystkie zainstalowane automatycznie pakiety. Jeśli podano nazwy pakietów, "
+"to zostaną wypisane tylko te z nich, które są automatycznie zainstalowane."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showmanual</literal> can be used in the same way as "
+"<literal>showauto</literal> except that it will print a list of manually "
+"installed packages instead."
+msgstr ""
+"<literal>showmanual</literal> może zostać użyte w dokładnie taki sam sposób, "
+"jak <literal>showauto</literal> z tym wyjątkiem, że wypisze listę ręcznie "
+"zainstalowanych pakietów."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"Read/Write package stats from the filename given with the parameter "
+"&synopsis-param-filename; instead of from the default location, which is "
+"<filename>extended_status</filename> in the directory defined by the "
+"Configuration Item: <literal>Dir::State</literal>."
+msgstr ""
+"Informacje o stanie pakietów są czytane z (lub zapisywane do) pliku "
+"przekazanego w parametrze &synopsis-param-filename; zamiast z pliku "
+"domyślnego, którym jest <filename>extended_status</filename> w katalogu "
+"określonym w pliku konfiguracyjnym w pozycji<literal>Dir::State</literal>."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Prevent Changes for a Package"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>manual</literal> is used to mark a package as being manually "
+#| "installed, which will prevent the package from being automatically "
+#| "removed if no other packages depend on it."
+msgid ""
+"<literal>hold</literal> is used to mark a package as held back, which will "
+"prevent the package from being automatically installed, upgraded or removed."
+msgstr ""
+"<literal>manual</literal> jest używane do zaznaczania pakietu jako "
+"zainstalowanego ręcznie, co go uchroni przed automatycznym usunięciem, w "
+"sytuacji gdy żaden inny pakiet nie będzie od niego zależał."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>unhold</literal> is used to cancel a previously set hold on a "
+"package to allow all actions again."
+msgstr ""
+"<literal>unhold</literal> jest używane do usunięcia stanu wstrzymania "
+"pakietu ustawionego poprzednio i pozwolenia na wykonywanie wszystkich akcji "
+"na tym pakiecie."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showhold</literal> is used to print a list of packages on hold in "
+"the same way as for the other show commands."
+msgstr ""
+"<literal>showhold</literal> jest używane do wypisania listy wszystkich "
+"pakietów wstrzymanych, w taki sam sposób jak pozostałe polecenia \"show\"."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Schedule Packages for Install, Remove and Purge"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"Some front-ends like <command>apt-get dselect-upgrade</command> can be used "
+"to apply previously scheduled changes to the install state of packages. Such "
+"changes can be scheduled with the <option>install</option>, <option>remove</"
+"option> (also known as <option>deinstall</option>) and <option>purge</"
+"option> commands. Packages with a specific selection can be displayed with "
+"<option>showinstall</option>, <option>showremove</option> and "
+"<option>showpurge</option> respectively. More information about these so "
+"called dpkg selections can be found in &dpkg;."
+msgstr ""
+
+#
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"<command>apt-mark</command> returns zero on normal operation, non-zero on "
+"error."
+msgstr ""
+"<command>apt-mark</command> zwraca zero, gdy zakończyło się pomyślnie, "
+"wartość niezerową - w przypadku błędu."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-secure.8.xml
+msgid "Archive authentication support for APT"
+msgstr "Wsparcie APT dla autentykacji archiwum."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "Starting with version 0.6, <command>apt</command> contains code that does "
+#| "signature checking of the Release file for all archives. This ensures "
+#| "that packages in the archive can't be modified by people who have no "
+#| "access to the Release file signing key."
+msgid ""
+"Starting with version 0.6, <command>APT</command> contains code that does "
+"signature checking of the Release file for all repositories. This ensures "
+"that data like packages in the archive can't be modified by people who have "
+"no access to the Release file signing key. Starting with version 1.1 "
+"<command>APT</command> requires repositories to provide recent "
+"authentication information for unimpeded usage of the repository."
+msgstr ""
+"PoczÄ…wszy od wersji 0.6 <command>apt</command> zawiera kod sprawdzajÄ…cy "
+"sygnatury plików \"Release\" wszystkich archiwów. Zapewnia to, że pakiety w "
+"archiwum nie mogą być zmieniane przez ludzi nie mających dostępu do klucza "
+"używanego do podpisywania plików \"Release\"."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"If an archive has an unsigned Release file or no Release file at all current "
+"APT versions will refuse to download data from them by default in "
+"<command>update</command> operations and even if forced to download front-"
+"ends like &apt-get; will require explicit confirmation if an installation "
+"request includes a package from such an unauthenticated archive."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"As a temporary exception &apt-get; (not &apt;!) raises warnings only if it "
+"encounters unauthenticated archives to give a slightly longer grace period "
+"on this backward compatibility effecting change. This exception will be "
+"removed in future releases and you can opt-out of this grace period by "
+"setting the configuration option <option>Binary::apt-get::Acquire::"
+"AllowInsecureRepositories</option> to <literal>false</literal> or <option>--"
+"no-allow-insecure-repositories</option> on the command line."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"You can force all APT clients to raise only warnings by setting the "
+"configuration option <option>Acquire::AllowInsecureRepositories</option> to "
+"<literal>true</literal>. Individual repositories can also be allowed to be "
+"insecure via the &sources-list; option <literal>allow-insecure=yes</"
+"literal>. Note that insecure repositories are strongly discouraged and all "
+"options to force apt to continue supporting them will eventually be "
+"removed. Users also have the <option>Trusted</option> option available to "
+"disable even the warnings, but be sure to understand the implications as "
+"detailed in &sources-list;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"A repository which previously was authenticated but would loose this state "
+"in an <command>update</command> operation raises an error in all APT clients "
+"irrespective of the option to allow or forbid usage of insecure "
+"repositories. The error can be overcome by additionally setting "
+"<option>Acquire::AllowDowngradeToInsecureRepositories</option> to "
+"<literal>true</literal> or for Individual repositories with the &sources-"
+"list; option <literal>allow-downgrade-to-insecure=yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "The package front-ends &apt-get;, &aptitude; and &synaptic; support this "
+#| "new authentication feature."
+msgid ""
+"Note: All APT-based package management front-ends like &apt-get;, &aptitude; "
+"and &synaptic; support this authentication feature, so this manpage uses "
+"<literal>APT</literal> to refer to them all for simplicity only."
+msgstr ""
+"Nakładki na APT typu &apt-get;, &aptitude; i &synaptic; obsługują ten nowy "
+"sposób autoryzacji pakietów."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid "Trusted archives"
+msgid "Trusted Repositories"
+msgstr "Zaufane archiwa"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "The chain of trust from an apt archive to the end user is made up of "
+#| "several steps. <command>apt-secure</command> is the last step in this "
+#| "chain; trusting an archive does not mean that you trust its packages not "
+#| "to contain malicious code, but means that you trust the archive "
+#| "maintainer. It's the archive maintainer's responsibility to ensure that "
+#| "the archive's integrity is preserved."
+msgid ""
+"The chain of trust from an APT archive to the end user is made up of several "
+"steps. <command>apt-secure</command> is the last step in this chain; "
+"trusting an archive does not mean that you trust its packages not to contain "
+"malicious code, but means that you trust the archive maintainer. It's the "
+"archive maintainer's responsibility to ensure that the archive's integrity "
+"is preserved."
+msgstr ""
+"ÅaÅ„cuch zaufania prowadzÄ…cy z archiwum APT do użytkownika koÅ„cowego skÅ‚ada "
+"się z kilku różnych kroków. <command>apt-secure</command> jest ostatnim z "
+"nich. Ufanie archiwum nie oznacza, że pakiety z tego archiwum nie zawierają "
+"złośliwego kodu, ale oznacza ufanie opiekunowi archiwum. Obowiązkiem "
+"opiekuna archiwum jest zapewnienie poprawności integralności archiwum."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"apt-secure does not review signatures at a package level. If you require "
+"tools to do this you should look at <command>debsig-verify</command> and "
+"<command>debsign</command> (provided in the debsig-verify and devscripts "
+"packages respectively)."
+msgstr ""
+"apt-secure nie sprawdza sygnatur na poziomie pakietów. Aby sprawdzać te "
+"rzeczy, powinno się przyjrzeć poleceniom <command>debsig-verify</command> i "
+"<command>debsign</command> (dostarczanych odpowiednio w pakietach debsig-"
+"verify i devscripts)."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "The chain of trust in Debian starts when a maintainer uploads a new "
+#| "package or a new version of a package to the Debian archive. In order to "
+#| "become effective, this upload needs to be signed by a key contained in "
+#| "the Debian Maintainers keyring (available in the debian-keyring package). "
+#| "Maintainers' keys are signed by other maintainers following pre-"
+#| "established procedures to ensure the identity of the key holder."
+msgid ""
+"The chain of trust in Debian starts (e.g.) when a maintainer uploads a new "
+"package or a new version of a package to the Debian archive. In order to "
+"become effective, this upload needs to be signed by a key contained in one "
+"of the Debian package maintainer keyrings (available in the debian-keyring "
+"package). Maintainers' keys are signed by other maintainers following pre-"
+"established procedures to ensure the identity of the key holder. Similar "
+"procedures exist in all Debian-based distributions."
+msgstr ""
+"ÅaÅ„cuch zaufania w Debianie zaczyna siÄ™ od wgrania nowego pakietu lub nowej "
+"wersji pakietu przez jego opiekuna do archiwum Debiana. Dostarczony przez "
+"opiekuna pakiet musi być podpisany przez klucz opiekuna znajdujący się w "
+"składnicy kluczy opiekunów Debiana (dostępnej w pakiecie debian-keyring). "
+"Klucze opiekunów są podpisane przez innych opiekunów, tak jak wymagają tego "
+"odpowiednie procedury używane w Debianie do identyfikacji posiadacza klucza."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Once the uploaded package is verified and included in the archive, the "
+"maintainer signature is stripped off, and checksums of the package are "
+"computed and put in the Packages file. The checksums of all of the Packages "
+"files are then computed and put into the Release file. The Release file is "
+"then signed by the archive key for this &keyring-distro; release, and "
+"distributed alongside the packages and the Packages files on &keyring-"
+"distro; mirrors. The keys are in the &keyring-distro; archive keyring "
+"available in the &keyring-package; package."
+msgstr ""
+"Po tym jak dostarczony przez opiekuna pakiet zostanie zweryfikowany i "
+"dołączony do archiwum, sygnatura opiekuna jest usuwana, a sumy kontrolne "
+"pakietu sÄ… wyliczane i umieszczane w pliku Packages. Sumy kontrolne "
+"wszystkich plików Packages są następnie wyliczane i umieszczane w pliku "
+"Release. Plik Release jest następnie podpisywany przy użyciu klucza archiwum "
+"tego wydania dystrybucji &keyring-distro; i dystrybuowany wraz z pakietami i "
+"plikami Packages przez serwery lustrzane &keyring-distro;. Klucze archiwum "
+"znajdują się w składnicy kluczy &keyring-distro; dostępnej w pakiecie "
+"&keyring-package;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"End users can check the signature of the Release file, extract a checksum of "
+"a package from it and compare it with the checksum of the package they "
+"downloaded by hand - or rely on APT doing this automatically."
+msgstr ""
+"Użytkownicy końcowi mogą sprawdzić sygnaturę pliku Release, wydobyć z niego "
+"sumę kontrolną MD5 pakietu i porównać ją z sumą kontrolną MD5 pobranego "
+"pakietu. Mogą też polegać na tym, że APT zrobi to automatycznie."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Notice that this is distinct from checking signatures on a per package "
+"basis. It is designed to prevent two possible attacks:"
+msgstr ""
+"Proszę zauważyć, że jest to czym innym niż sprawdzanie sygnatur "
+"poszczególnych pakietów. Zostało to zaprojektowane tak, aby uchronić przed "
+"dwoma możliwymi typami ataków:"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<literal>Network \"man in the middle\" attacks</literal>. Without signature "
+"checking, malicious agents can introduce themselves into the package "
+"download process and provide malicious software either by controlling a "
+"network element (router, switch, etc.) or by redirecting traffic to a rogue "
+"server (through ARP or DNS spoofing attacks)."
+msgstr ""
+"<literal>Ataki sieciowe \"człowiek pośrodku\" (ang. \"man in the middle\")</"
+"literal>. Jeżeli sygnatury nie są sprawdzane, to ktoś złośliwy może "
+"wprowadzić siebie w proces pobierania pakietów i dostarczyć złośliwe "
+"oprogramowanie albo przez przejęcie kontroli elementu infrastruktury "
+"sieciowej (router, przełącznik itp.), albo przez przekierowanie ruchu do "
+"fałszywego serwera (przez rozsyłanie fałszywych pakietów ARP lub DNS, ang. "
+"\"ARP (DNS) spoofing\")."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<literal>Mirror network compromise</literal>. Without signature checking, a "
+"malicious agent can compromise a mirror host and modify the files in it to "
+"propagate malicious software to all users downloading packages from that "
+"host."
+msgstr ""
+"<literal>Złamanie zabezpieczeń sieci serwerów lustrzanych (ang. \"mirror "
+"network compromise\")</literal>. Jeśli sygnatury nie są sprawdzane, to ktoś "
+"złośliwy może włamać się na serwer lustrzany, zmodyfikować tam pliki, co "
+"spowodowałoby udostępnienie złośliwego oprogramowania wszystkim użytkownikom "
+"pobierajÄ…cym pakiety z tego serwera."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "However, it does not defend against a compromise of the Debian master "
+#| "server itself (which signs the packages) or against a compromise of the "
+#| "key used to sign the Release files. In any case, this mechanism can "
+#| "complement a per-package signature."
+msgid ""
+"However, it does not defend against a compromise of the master server itself "
+"(which signs the packages) or against a compromise of the key used to sign "
+"the Release files. In any case, this mechanism can complement a per-package "
+"signature."
+msgstr ""
+"Jednakże nie chroni przed złamaniem zabezpieczeń głównego serwera Debiana "
+"(używanego do podpisywania pakietów) lub złamaniem zabezpieczeń klucza "
+"używanego do podpisywania plików Release. Mechanizm ten stanowi uzupełnienie "
+"dla sprawdzania sygnatur poszczególnych pakietów."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid "User configuration"
+msgid "User Configuration"
+msgstr "Konfiguracja użytkownika"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "<command>apt-key</command> is the program that manages the list of keys "
+#| "used by apt. It can be used to add or remove keys, although an "
+#| "installation of this release will automatically contain the default "
+#| "Debian archive signing keys used in the Debian package repositories."
+msgid ""
+"<command>apt-key</command> is the program that manages the list of keys used "
+"by APT to trust repositories. It can be used to add or remove keys as well "
+"as list the trusted keys. Limiting which key(s) are able to sign which "
+"archive is possible via the <option>Signed-By</option> in &sources-list;."
+msgstr ""
+"<command>apt-key</command> jest programem służącym do zarządzania listą "
+"kluczy używanych przez APT. Można go użyć do dodania lub usunięcia klucza, "
+"chociaż zainstalowanie bieżącego wydania automatycznie dostarczy domyślny "
+"klucz używany w repozytoriach pakietów Debiana do podpisywania archiwów "
+"Debiana."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so fiddling with "
+"<command>apt-key</command> is only needed if third-party repositories are "
+"added."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"In order to add a new key you need to first download it (you should make "
+"sure you are using a trusted communication channel when retrieving it), add "
+"it with <command>apt-key</command> and then run <command>apt-get update</"
+"command> so that apt can download and verify the <filename>InRelease</"
+"filename> or <filename>Release.gpg</filename> files from the archives you "
+"have configured."
+msgstr ""
+"Aby dodać nowy klucz, należy go najpierw pobrać (używając zaufanego kanału "
+"komunikacji podczas pobierania), dodać go poleceniem <command>apt-key</"
+"command> oraz uruchomić <command>apt-get update</command>, tak żeby APT "
+"mogło pobrać i zweryfikować pliki <filename>InRelease</filename> lub "
+"<filename>Release.gpg</filename> ze skonfigurowanych archiwów."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid "Archive configuration"
+msgid "Archive Configuration"
+msgstr "Konfiguracja archiwum"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"If you want to provide archive signatures in an archive under your "
+"maintenance you have to:"
+msgstr "Aby dołączyć sygnatury do archiwum, którym się opiekujesz, należy:"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Create a toplevel Release file</emphasis>, if it does not exist "
+"already. You can do this by running <command>apt-ftparchive release</"
+"command> (provided in apt-utils)."
+msgstr ""
+"<emphasis>Utworzyć plik Release w katalogu najwyższego poziomu</emphasis>, "
+"jeśli jeszcze nie istnieje. Można to zrobić używając <command>apt-ftparchive "
+"release</command> (dostarczanego w pakiecie apt-utils)."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --"
+"clearsign -o InRelease Release</command> and <command>gpg -abs -o Release."
+"gpg Release</command>."
+msgstr ""
+"<emphasis>Podpisać go</emphasis>. Można to zrobić za pomocą poleceń "
+"<command>gpg --clearsign -o InRelease Release</command> i <command>gpg -abs -"
+"o Release.gpg Release</command>."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "<emphasis>Publish the key fingerprint</emphasis>, that way your users "
+#| "will know what key they need to import in order to authenticate the files "
+#| "in the archive."
+msgid ""
+"<emphasis>Publish the key fingerprint</emphasis>, so that your users will "
+"know what key they need to import in order to authenticate the files in the "
+"archive. It is best to ship your key in its own keyring package like "
+"&keyring-distro; does with &keyring-package; to be able to distribute "
+"updates and key transitions automatically later."
+msgstr ""
+"<emphasis>Opublikować odcisk klucza (ang. \"key fingerprint\")</emphasis>, "
+"tak żeby użytkownicy wiedzieli, który klucz zaimportować, żeby móc "
+"autoryzować plików w archiwum."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Provide instructions on how to add your archive and key</"
+"emphasis>. If your users can't acquire your key securely the chain of trust "
+"described above is broken. How you can help users add your key depends on "
+"your archive and target audience ranging from having your keyring package "
+"included in another archive users already have configured (like the default "
+"repositories of their distribution) to leveraging the web of trust."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Whenever the contents of the archive change (new packages are added or "
+"removed) the archive maintainer has to follow the first two steps outlined "
+"above."
+msgstr ""
+"Po każdej zmianie zawartości archiwum (dodaniu lub usunięciu pakietów), "
+"opiekun archiwum musi wykonać pierwsze dwa z wymienionych powyżej kroków."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+"&debsign;, &debsig-verify;, &gpg;"
+msgstr ""
+"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+"&debsign;, &debsig-verify;, &gpg;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "For more background information you might want to review the <ulink url="
+#| "\"http://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
+#| "Security Infrastructure</ulink> chapter of the Securing Debian Manual "
+#| "(available also in the harden-doc package) and the <ulink url=\"http://"
+#| "www.cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution "
+#| "HOWTO</ulink> by V. Alex Brennen."
+msgid ""
+"For more background information you might want to review the <ulink url="
+"\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
+"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
+"available in the harden-doc package) and the <ulink url=\"http://www."
+"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
+"ulink> by V. Alex Brennen."
+msgstr ""
+"Więcej informacji można znaleźć w rozdziale \"<ulink url=\"http://www.debian."
+"org/doc/manuals/securing-debian-howto/ch7\">Debian Security Infrastructure</"
+"ulink>\" podręcznika \"Securing Debian Manual\" i w dokumencie \"<ulink url="
+"\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" >Strong "
+"Distribution HOWTO</ulink>\" napisanym przez V. Alexa Brennena."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Manpage Authors"
+msgstr "Autorzy strony podręcznika"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"This man-page is based on the work of Javier Fernández-Sanguino Peña, Isaac "
+"Jones, Colin Walters, Florian Weimer and Michael Vogt."
+msgstr ""
+"Ta strona podręcznika jest oparta na pracy następujących osób: Javier "
+"Fernández-Sanguino Peña, Isaac Jones, Colin Walters, Florian Weimer i "
+"Michael Vogt."
+
+#
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cdrom.8.xml
+msgid "APT CD-ROM management utility"
+msgstr "Narzędzie APT do zarządzania źródłami typu CD-ROM"
+
+#
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<command>apt-cdrom</command> is used to add a new CD-ROM to APT's list of "
+"available sources. <command>apt-cdrom</command> takes care of determining "
+"the structure of the disc as well as correcting for several possible mis-"
+"burns and verifying the index files."
+msgstr ""
+"<command>apt-cdrom</command> jest używany w celu dodania nowego CD-ROM-u do "
+"listy dostępnych źródeł programu APT. <command>apt-cdrom</command> określa "
+"strukturę dysku, poprawia ewentualne błędy powstałe podczas produkcji CD-ROM-"
+"u i weryfikuje pliki indeksów."
+
+#
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"It is necessary to use <command>apt-cdrom</command> to add CDs to the APT "
+"system; it cannot be done by hand. Furthermore each disc in a multi-CD set "
+"must be inserted and scanned separately to account for possible mis-burns."
+msgstr ""
+"Dodanie nowych CD do systemu APT nie może być zrobione ręcznie, tak więc "
+"używanie <command>apt-cdrom</command> jest konieczne. Co więcej, każdy dysk "
+"w wielodyskowym archiwum musi być włożony i zeskanowany oddzielnie."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<literal>add</literal> is used to add a new disc to the source list. It will "
+"unmount the CD-ROM device, prompt for a disc to be inserted and then proceed "
+"to scan it and copy the index files. If the disc does not have a proper "
+"<filename>.disk</filename> directory you will be prompted for a descriptive "
+"title."
+msgstr ""
+"<literal>add</literal> jest używane do dodania nowego dysku do listy źródeł. "
+"Odmontuje urządzenie CD-ROM, poprosi o włożenie dysku, a następnie zeskanuje "
+"go i skopiuje pliki indeksu. Jeżeli dysk nie ma właściwego katalogu "
+"<filename>.disk</filename>, użytkownik zostanie poproszony o podanie opisu "
+"dysku."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"APT uses a CD-ROM ID to track which disc is currently in the drive and "
+"maintains a database of these IDs in <filename>&statedir;/cdroms.list</"
+"filename>"
+msgstr ""
+"APT używa identyfikatora CD-ROM-u do określenia, który dysk obecnie znajduje "
+"się w napędzie, oraz przechowuje bazę tych identyfikatorów w pliku "
+"<filename>&statedir;/cdroms.list</filename>"
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"A debugging tool to report the identity of the current disc as well as the "
+"stored file name"
+msgstr ""
+"Narzędzie debugujące, wyświetlające identyfikator włożonego dysku oraz nazwę "
+"pliku, w którym jest przechowywany."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+#, fuzzy
+#| msgid ""
+#| "Mount point; specify the location to mount the CD-ROM. This mount point "
+#| "must be listed in <filename>/etc/fstab</filename> and properly "
+#| "configured. Configuration Item: <literal>Acquire::cdrom::mount</literal>."
+msgid ""
+"Do not try to auto-detect the CD-ROM path. Usually combined with the "
+"<option>--cdrom</option> option. Configuration Item: <literal>Acquire::"
+"cdrom::AutoDetect</literal>."
+msgstr ""
+"Punkt montowania. Podaje lokalizację katalogu, w którym będzie zamontowany "
+"CD-ROM. Musi istnieć odpowiednia konfiguracja dla tego punktu montowania w "
+"pliku <filename>/etc/fstab</filename>. Pozycja w pliku konfiguracyjnym: "
+"<literal>Acquire::cdrom::mount</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Mount point; specify the location to mount the CD-ROM. This mount point must "
+"be listed in <filename>/etc/fstab</filename> and properly configured. "
+"Configuration Item: <literal>Acquire::cdrom::mount</literal>."
+msgstr ""
+"Punkt montowania. Podaje lokalizację katalogu, w którym będzie zamontowany "
+"CD-ROM. Musi istnieć odpowiednia konfiguracja dla tego punktu montowania w "
+"pliku <filename>/etc/fstab</filename>. Pozycja w pliku konfiguracyjnym: "
+"<literal>Acquire::cdrom::mount</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Rename a disc; change the label of a disc or override the disc's given "
+"label. This option will cause <command>apt-cdrom</command> to prompt for a "
+"new label. Configuration Item: <literal>APT::CDROM::Rename</literal>."
+msgstr ""
+"Przemianuj dysk. Zmienia etykietę dysku lub unieważnia etykietę wcześniej "
+"daną dyskowi. Podanie tej opcji spowoduje, że <command>apt-cdrom</command> "
+"spyta siÄ™ o nowÄ… etykietÄ™. Pozycja w pliku konfiguracyjnym: <literal>APT::"
+"CDROM::Rename</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"No mounting; prevent <command>apt-cdrom</command> from mounting and "
+"unmounting the mount point. Configuration Item: <literal>APT::CDROM::"
+"NoMount</literal>."
+msgstr ""
+"Nie montuj. Uniemożliwia programowi <command>apt-cdrom</command> montowanie "
+"i odmontowywanie CDROM-u. Pozycja w pliku konfiguracyjnym: <literal>APT::"
+"CDROM::NoMount</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Fast Copy; Assume the package files are valid and do not check every "
+"package. This option should be used only if <command>apt-cdrom</command> has "
+"been run on this disc before and did not detect any errors. Configuration "
+"Item: <literal>APT::CDROM::Fast</literal>."
+msgstr ""
+"Szybkie kopiowanie. Zakłada, że pliki z pakietami są poprawne i nie sprawdza "
+"każdego pakietu. Ta opcja powinna być używana tylko wtedy, jeżeli "
+"<command>apt-cdrom</command> był już uruchomiony na danym dysku i nie wykrył "
+"na nim żadnych błędów. Pozycja w pliku konfiguracyjnym: <literal>APT::"
+"CDROM::Fast</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Thorough Package Scan; This option may be needed with some old Debian "
+"1.1/1.2 discs that have Package files in strange places. It takes much "
+"longer to scan the CD but will pick them all up."
+msgstr ""
+"Gruntowne przeglądanie pakietów. Ta opcja może być potrzebna do indeksowania "
+"starych dysków z Debianem 1.1/1.2, w których pliki Package były umieszczone "
+"w dziwnych miejscach. Indeksowanie całego CD zabiera więcej czasu, ale "
+"znajdzie wszystkie takie pliki."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"No Changes; Do not change the &sources-list; file and do not write index "
+"files. Everything is still checked however. Configuration Item: "
+"<literal>APT::CDROM::NoAct</literal>."
+msgstr ""
+"Bez zmian. Nie zmienia pliku &sources-list; i nie zapisuje pików "
+"indeksowych. Jednakże nadal wszystko jest sprawdzane. Pozycja w pliku "
+"konfiguracyjnym: <literal>APT::CDROM::NoAct</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid "&apt-conf;, &apt-get;, &sources-list;"
+msgstr "&apt-conf;, &apt-get;, &sources-list;"
+
+#
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<command>apt-cdrom</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-cdrom</command> zwraca zero, gdy zakończyło się pomyślnie, 100 "
+"- w przypadku błędu."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-config.8.xml
+msgid "APT Configuration Query program"
+msgstr "Program odpytywania konfiguracji APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml
+msgid ""
+"<command>apt-config</command> is an internal program used by various "
+"portions of the APT suite to provide consistent configurability. It accesses "
+"the main configuration file <filename>/etc/apt/apt.conf</filename> in a "
+"manner that is easy to use for scripted applications."
+msgstr ""
+"<command>apt-config</command> jest wewnętrznym programem używanym przez "
+"różne części pakietu APT w celu zapewnienia spójności konfiguracji. Uzyskuje "
+"dostęp do głównego pliku konfiguracyjnego <filename>/etc/apt/apt.conf</"
+"filename> w sposób łatwy do użycia w programach skryptowych."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"shell is used to access the configuration information from a shell script. "
+"It is given pairs of arguments, the first being a shell variable and the "
+"second the configuration value to query. As output it lists shell assignment "
+"commands for each value present. In a shell script it should be used as "
+"follows:"
+msgstr ""
+"shell pozwala skryptom powłoki na uzyskanie informacji o konfiguracji. "
+"Wymaga podania pary argumentów: pierwszym z nich jest zmienna powłoki, a "
+"drugim nazwa zmiennej konfiguracyjnej do odczytania. Wyjściem jest lista "
+"przypisań zmiennych powłoki dla każdej odczytanej wartości konfiguracji. "
+"Przykład użycia w skrypcie powłoki:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-config.8.xml
+#, no-wrap
+msgid ""
+"OPTS=\"-f\"\n"
+"RES=`apt-config shell OPTS MyApp::options`\n"
+"eval $RES\n"
+msgstr ""
+"OPTS=\"-f\"\n"
+"RES=`apt-config shell OPTS MojaAplikacja::opcje`\n"
+"eval $RES\n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"This will set the shell environment variable $OPTS to the value of MyApp::"
+"options with a default of <option>-f</option>."
+msgstr ""
+"Powyższe ustawi wartość zmiennej środowiskowej powłoki $OPTS na wartość "
+"zmiennej MojaAplikacja::opcje, z domyślną wartością <option>-f</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"The configuration item may be postfixed with a /[fdbi]. f returns file "
+"names, d returns directories, b returns true or false and i returns an "
+"integer. Each of the returns is normalized and verified internally."
+msgstr ""
+"Do zmienna konfiguracji można dołączyć /[fbdi]. f zwraca nazwy plików, d - "
+"katalogi, b - true lub false, a i - liczbę. Każda ze zwracanych wartości "
+"jest ujednolicana i weryfikowana."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid "Just show the contents of the configuration space."
+msgstr "Wyświetla zawartość przestrzeni konfiguracji."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"Include options which have an empty value. This is the default, so use --no-"
+"empty to remove them from the output."
+msgstr ""
+"Dołącza opcje mające pustą wartość. Jest to zachowanie domyślne, prosimy "
+"użyć <literal>--no-empty</literal>, aby usunąć takie opcje z wyjścia."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-config.8.xml
+msgid "&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n"
+msgstr "&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"Defines the output of each config option. &percnt;t will be replaced with "
+"its individual name, &percnt;f with its full hierarchical name and &percnt;v "
+"with its value. Use uppercase letters and special characters in the value "
+"will be encoded to ensure that it can e.g. be safely used in a quoted-string "
+"as defined by RFC822. Additionally &percnt;n will be replaced by a newline, "
+"and &percnt;N by a tab. A &percnt; can be printed by using &percnt;&percnt;."
+msgstr ""
+"Definiuje wyjście każdej opcji konfiguracji. &percnt;t zostanie zastąpiony "
+"indywidualną nazwą znacznika, &percnt;f - pełną nazwą hierarchiczną opcji, a "
+"&percnt;v - wartością opcji. Jeśli użyje się dużych liter, to znaki "
+"specjalne występujące w wartości zostaną zakodowane, w taki sposób, żeby "
+"można ich było bezpiecznie użyć wewnątrz łańcuchów typu \"quoted-string\" "
+"definiowanych przez RFC822. Dodatkowo &percnt;n będzie zastąpiony przez znak "
+"nowej linii, a &percnt;N przez znak tabulacji. Znak &percnt; można uzyskać, "
+"używając &percnt;&percnt;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml
+msgid "&apt-conf;"
+msgstr "&apt-conf;"
+
+#
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml
+msgid ""
+"<command>apt-config</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-config</command> zwraca zero, gdy zakończyło się pomyślnie, 100 "
+"- w przypadku błędu."
+
+#. type: Content of: <refentry><refentryinfo><author><contrib>
+#: apt.conf.5.xml
+msgid "Initial documentation of Debug::*."
+msgstr "Wstępna dokumentacja hierarchii Debug::*."
+
+#. type: Content of: <refentry><refentryinfo><author><email>
+#: apt.conf.5.xml
+msgid "dburrows@debian.org"
+msgstr "dburrows@debian.org"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml
+msgid "5"
+msgstr "5"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.conf.5.xml
+msgid "Configuration file for APT"
+msgstr "Plik konfiguracyjny dla APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<filename>/etc/apt/apt.conf</filename> is the main configuration file shared "
+"by all the tools in the APT suite of tools, though it is by no means the "
+"only place options can be set. The suite also shares a common command line "
+"parser to provide a uniform environment."
+msgstr ""
+"<filename>/etc/apt/apt.conf</filename> jest głównym plikiem konfiguracyjnym "
+"dzielonym przez wszystkie narzędzia pakietu APT. Nie jest jednak jedynym "
+"miejscem, w którym mogą być zmieniane opcje konfiguracji. Wszystkie "
+"narzędzia używają także wspólnego parsera linii poleceń, zapewniając "
+"jednolite środowisko pracy."
+
+#. type: Content of: <refentry><refsect1><orderedlist><para>
+#: apt.conf.5.xml
+msgid ""
+"When an APT tool starts up it will read the configuration files in the "
+"following order:"
+msgstr ""
+"Kiedy narzędzie APT rozpoczyna działanie, czyta pliki konfiguracyjne w "
+"następującym porządku:"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the file specified by the <envar>APT_CONFIG</envar> environment variable (if "
+"any)"
+msgstr ""
+"plik podany w zmiennej środowiskowej <envar>APT_CONFIG</envar> (jeśli jest "
+"ustawiona)."
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending "
+"order which have either no or \"<literal>conf</literal>\" as filename "
+"extension and which only contain alphanumeric, hyphen (-), underscore (_) "
+"and period (.) characters. Otherwise APT will print a notice that it has "
+"ignored a file, unless that file matches a pattern in the <literal>Dir::"
+"Ignore-Files-Silently</literal> configuration list - in which case it will "
+"be silently ignored."
+msgstr ""
+"wszystkie pliki w <literal>Dir::Etc::Parts</literal> w rosnÄ…cym porzÄ…dku "
+"alfanumerycznym, których nazwy nie mają rozszerzenia lub mają rozszerzenie "
+"\"<literal>conf</literal>\" i składają się tylko ze znaków alfanumerycznych, "
+"myślników (-), podkreśleń (_) i kropek (.). W przeciwnym wypadku APT "
+"wyświetli informacje o zignorowaniu pliku, o ile nazwa tego pliku pasuje do "
+"wzorca skonfigurowanego w opcji <literal>Dir::Ignore-Files-Silently</"
+"literal>, w którym to przypadku plik zostanie zignorowany bez wypisywania "
+"żadnych informacji."
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the main configuration file specified by <literal>Dir::Etc::main</literal>"
+msgstr ""
+"główny plik konfiguracyjny określony przez <literal>Dir::Etc::main</literal>."
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"all options set in the binary specific configuration subtree are moved into "
+"the root of the tree."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the command line options are applied to override the configuration "
+"directives or to load even more configuration files."
+msgstr ""
+"opcje linii poleceń są stosowane do nadpisania dyrektyw konfiguracji lub do "
+"załadowania kolejnych plików konfiguracyjnych."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Syntax"
+msgstr "Składnia"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The configuration file is organized in a tree with options organized into "
+"functional groups. Option specification is given with a double colon "
+"notation; for instance <literal>APT::Get::Assume-Yes</literal> is an option "
+"within the APT tool group, for the Get tool. Options do not inherit from "
+"their parent groups."
+msgstr ""
+"Plik konfiguracyjny jest zorganizowany jako struktura drzewiasta z opcjami "
+"podzielonymi według grup funkcjonalności. Specyfikacja opcji jest podawana w "
+"notacji podwójnych dwukropków, na przykład <literal>APT::Get::Assume-Yes</"
+"literal> jest opcją narzędzia Get w grupie narzędzi APT . Opcje nie "
+"dziedziczą ustawień od swoich przodków."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Syntactically the configuration language is modeled after what the ISC tools "
+"such as bind and dhcp use. Lines starting with <literal>//</literal> are "
+"treated as comments (ignored), as well as all text between <literal>/*</"
+"literal> and <literal>*/</literal>, just like C/C++ comments. Each line is "
+"of the form <literal>APT::Get::Assume-Yes \"true\";</literal>. The "
+"quotation marks and trailing semicolon are required. The value must be on "
+"one line, and there is no kind of string concatenation. Values must not "
+"include backslashes or extra quotation marks. Option names are made up of "
+"alphanumeric characters and the characters \"/-:._+\". A new scope can be "
+"opened with curly braces, like this:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT {\n"
+" Get {\n"
+" Assume-Yes \"true\";\n"
+" Fix-Broken \"true\";\n"
+" };\n"
+"};\n"
+msgstr ""
+"APT {\n"
+" Get {\n"
+" Assume-Yes \"true\";\n"
+" Fix-Broken \"true\";\n"
+" };\n"
+"};\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"with newlines placed to make it more readable. Lists can be created by "
+"opening a scope and including a single string enclosed in quotes followed by "
+"a semicolon. Multiple entries can be included, separated by a semicolon."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "DPkg::Pre-Install-Pkgs {\"/usr/sbin/dpkg-preconfigure --apt\";};\n"
+msgstr "DPkg::Pre-Install-Pkgs {\"/usr/sbin/dpkg-preconfigure --apt\";};\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"In general the sample configuration file &configureindex; is a good guide "
+"for how it should look."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Case is not significant in names of configuration items, so in the previous "
+"example you could use <literal>dpkg::pre-install-pkgs</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Names for the configuration items are optional if a list is defined as can "
+"be seen in the <literal>DPkg::Pre-Install-Pkgs</literal> example above. If "
+"you don't specify a name a new entry will simply add a new option to the "
+"list. If you specify a name you can override the option in the same way as "
+"any other option by reassigning a new value to the option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Two special commands are defined: <literal>#include</literal> (which is "
+"deprecated and not supported by alternative implementations) and "
+"<literal>#clear</literal>. <literal>#include</literal> will include the "
+"given file, unless the filename ends in a slash, in which case the whole "
+"directory is included. <literal>#clear</literal> is used to erase a part of "
+"the configuration tree. The specified element and all its descendants are "
+"erased. (Note that these lines also need to end with a semicolon.)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>#clear</literal> command is the only way to delete a list or a "
+"complete scope. Reopening a scope (or using the syntax described below with "
+"an appended <literal>::</literal>) will <emphasis>not</emphasis> override "
+"previously written entries. Options can only be overridden by addressing a "
+"new value to them - lists and scopes can't be overridden, only cleared."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"All of the APT tools take an -o option which allows an arbitrary "
+"configuration directive to be specified on the command line. The syntax is a "
+"full option name (<literal>APT::Get::Assume-Yes</literal> for instance) "
+"followed by an equals sign then the new value of the option. To append a new "
+"element to a list, add a trailing <literal>::</literal> to the name of the "
+"list. (As you might suspect, the scope syntax can't be used on the command "
+"line.)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that appending items to a list using <literal>::</literal> only works "
+"for one item per line, and that you should not use it in combination with "
+"the scope syntax (which adds <literal>::</literal> implicitly). Using both "
+"syntaxes together will trigger a bug which some users unfortunately depend "
+"on: an option with the unusual name \"<literal>::</literal>\" which acts "
+"like every other option with a name. This introduces many problems; for one "
+"thing, users who write multiple lines in this <emphasis>wrong</emphasis> "
+"syntax in the hope of appending to a list will achieve the opposite, as only "
+"the last assignment for this option \"<literal>::</literal>\" will be used. "
+"Future versions of APT will raise errors and stop working if they encounter "
+"this misuse, so please correct such statements now while APT doesn't "
+"explicitly complain about them."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "The APT Group"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"This group of options controls general APT behavior as well as holding the "
+"options for all of the tools."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"System Architecture; sets the architecture to use when fetching files and "
+"parsing package lists. The internal default is the architecture apt was "
+"compiled for."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"All Architectures the system supports. For instance, CPUs implementing the "
+"<literal>amd64</literal> (also called <literal>x86-64</literal>) "
+"instruction set are also able to execute binaries compiled for the "
+"<literal>i386</literal> (<literal>x86</literal>) instruction set. This list "
+"is used when fetching files and parsing package lists. The initial default "
+"is always the system's native architecture (<literal>APT::Architecture</"
+"literal>), and foreign architectures are added to the default list when they "
+"are registered via <command>dpkg --add-architecture</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines which compression formats are supported, how compression "
+"and decompression can be performed if support for this format isn't built "
+"into apt directly and a cost-value indicating how costly it is to compress "
+"something in this format. As an example the following configuration stanza "
+"would allow apt to download and uncompress as well as create and store files "
+"with the low-cost <literal>.reversed</literal> file extension which it will "
+"pass to the command <command>rev</command> without additional commandline "
+"parameters for compression and uncompression:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Compressor::rev {\n"
+"\tName \"rev\";\n"
+"\tExtension \".reversed\";\n"
+"\tBinary \"rev\";\n"
+"\tCompressArg {};\n"
+"\tUncompressArg {};\n"
+"\tCost \"10\";\n"
+"};\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"List of all build profiles enabled for build-dependency resolution, without "
+"the \"<literal>profile.</literal>\" namespace prefix. By default this list "
+"is empty. The <envar>DEB_BUILD_PROFILES</envar> as used by &dpkg-"
+"buildpackage; overrides the list notation."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Default release to install packages from if more than one version is "
+"available. Contains release name, codename or release version. Examples: "
+"'stable', 'testing', 'unstable', '&debian-stable-codename;', '&debian-"
+"testing-codename;', '4.0', '5.0*'. See also &apt-preferences;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Ignore held packages; this global option causes the problem resolver to "
+"ignore held packages in its decision making."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Defaults to on. When turned on the autoclean feature will remove any "
+"packages which can no longer be downloaded from the cache. If turned off "
+"then packages that are locally installed are also excluded from cleaning - "
+"but note that APT provides no direct means to reinstall them."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Defaults to on, which will cause APT to install essential and important "
+"packages as soon as possible in an install/upgrade operation, in order to "
+"limit the effect of a failing &dpkg; call. If this option is disabled, APT "
+"treats an important package in the same way as an extra package: between the "
+"unpacking of the package A and its configuration there can be many other "
+"unpack or configuration calls for other unrelated packages B, C etc. If "
+"these cause the &dpkg; call to fail (e.g. because package B's maintainer "
+"scripts generate an error), this results in a system state in which package "
+"A is unpacked but unconfigured - so any package depending on A is now no "
+"longer guaranteed to work, as its dependency on A is no longer satisfied."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The immediate configuration marker is also applied in the potentially "
+"problematic case of circular dependencies, since a dependency with the "
+"immediate flag is equivalent to a Pre-Dependency. In theory this allows APT "
+"to recognise a situation in which it is unable to perform immediate "
+"configuration, abort, and suggest to the user that the option should be "
+"temporarily deactivated in order to allow the operation to proceed. Note "
+"the use of the word \"theory\" here; in the real world this problem has "
+"rarely been encountered, in non-stable distribution versions, and was caused "
+"by wrong dependencies of the package in question or by a system in an "
+"already broken state; so you should not blindly disable this option, as the "
+"scenario mentioned above is not the only problem it can help to prevent in "
+"the first place."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Before a big operation like <literal>dist-upgrade</literal> is run with this "
+"option disabled you should try to explicitly <literal>install</literal> the "
+"package APT is unable to configure immediately; but please make sure you "
+"also report your problem to your distribution and to the APT team with the "
+"buglink below, so they can work on improving or correcting the upgrade "
+"process."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Never enable this option unless you <emphasis>really</emphasis> know what "
+"you are doing. It permits APT to temporarily remove an essential package to "
+"break a Conflicts/Conflicts or Conflicts/Pre-Depends loop between two "
+"essential packages. <emphasis>Such a loop should never exist and is a grave "
+"bug</emphasis>. This option will work if the essential packages are not "
+"<command>tar</command>, <command>gzip</command>, <command>libc</command>, "
+"<command>dpkg</command>, <command>dash</command> or anything that those "
+"packages depend on."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"APT uses since version 0.7.26 a resizable memory mapped cache file to store "
+"the available information. <literal>Cache-Start</literal> acts as a hint of "
+"the size the cache will grow to, and is therefore the amount of memory APT "
+"will request at startup. The default value is 20971520 bytes (~20 MB). Note "
+"that this amount of space needs to be available for APT; otherwise it will "
+"likely fail ungracefully, so for memory restricted devices this value should "
+"be lowered while on systems with a lot of configured sources it should be "
+"increased. <literal>Cache-Grow</literal> defines in bytes with the default "
+"of 1048576 (~1 MB) how much the cache size will be increased in the event "
+"the space defined by <literal>Cache-Start</literal> is not enough. This "
+"value will be applied again and again until either the cache is big enough "
+"to store all information or the size of the cache reaches the <literal>Cache-"
+"Limit</literal>. The default of <literal>Cache-Limit</literal> is 0 which "
+"stands for no limit. If <literal>Cache-Grow</literal> is set to 0 the "
+"automatic growth of the cache is disabled."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Defines which packages are considered essential build dependencies."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Get subsection controls the &apt-get; tool; please see its documentation "
+"for more information about the options here."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Cache subsection controls the &apt-cache; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The CDROM subsection controls the &apt-cdrom; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "The Acquire Group"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Acquire</literal> group of options controls the download of "
+"packages as well as the various \"acquire methods\" responsible for the "
+"download itself (see also &sources-list;)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Security related option defaulting to true, as giving a Release file's "
+"validation an expiration date prevents replay attacks over a long timescale, "
+"and can also for example help users to identify mirrors that are no longer "
+"updated - but the feature depends on the correctness of the clock on the "
+"user system. Archive maintainers are encouraged to create Release files with "
+"the <literal>Valid-Until</literal> header, but if they don't or a stricter "
+"value is desired the <literal>Max-ValidTime</literal> option below can be "
+"used. The <option>Check-Valid-Until</option> option of &sources-list; "
+"entries should be preferred to disable the check selectively instead of "
+"using this global override."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Maximum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. If the Release file itself includes a "
+"<literal>Valid-Until</literal> header the earlier date of the two is used as "
+"the expiration date. The default value is <literal>0</literal> which stands "
+"for \"valid forever\". Archive specific settings can be made by appending "
+"the label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the <option>Valid-"
+"Until-Max</option> option there."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Minimum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. Use this if you need to use a seldom updated "
+"(local) mirror of a more frequently updated archive with a <literal>Valid-"
+"Until</literal> header instead of completely disabling the expiration date "
+"checking. Archive specific settings can and should be used by appending the "
+"label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the <option>Valid-"
+"Until-Min</option> option there."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Try to download deltas called <literal>PDiffs</literal> for indexes (like "
+"<filename>Packages</filename> files) instead of downloading whole ones. True "
+"by default. Preferably, this can be set for specific &sources-list; entries "
+"or index files by using the <option>PDiffs</option> option there."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Two sub-options to limit the use of PDiffs are also available: "
+"<literal>FileLimit</literal> can be used to specify a maximum number of "
+"PDiff files should be downloaded to update a file. <literal>SizeLimit</"
+"literal> on the other hand is the maximum percentage of the size of all "
+"patches compared to the size of the targeted file. If one of these limits is "
+"exceeded the complete file is downloaded instead of the patches."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Try to download indexes via an URI constructed from a hashsum of the "
+"expected file rather than downloaded via a well-known stable filename. True "
+"by default, but automatically disabled if the source indicates no support "
+"for it. Usage can be forced with the special value \"force\". Preferably, "
+"this can be set for specific &sources-list; entries or index files by using "
+"the <option>By-Hash</option> option there."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</"
+"literal> or <literal>access</literal> which determines how APT parallelizes "
+"outgoing connections. <literal>host</literal> means that one connection per "
+"target host will be opened, <literal>access</literal> means that one "
+"connection per URI type will be opened."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Number of retries to perform. If this is non-zero APT will retry failed "
+"files the given number of times."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Use symlinks for source archives. If set to true then source archives will "
+"be symlinked when possible instead of copying. True is the default."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>http::Proxy</literal> sets the default proxy to use for HTTP URIs. "
+"It is in the standard form of <literal>http://[[user][:pass]@]host[:port]/</"
+"literal>. Per host proxies can also be specified by using the form "
+"<literal>http::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>http_proxy</envar> environment variable will "
+"be used."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Three settings are provided for cache control with HTTP/1.1 compliant proxy "
+"caches. <literal>No-Cache</literal> tells the proxy not to use its cached "
+"response under any circumstances. <literal>Max-Age</literal> sets the "
+"allowed maximum age (in seconds) of an index file in the cache of the "
+"proxy. <literal>No-Store</literal> specifies that the proxy should not "
+"store the requested archive files in its cache, which can be used to prevent "
+"the proxy from polluting its cache with (big) .deb files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The option <literal>timeout</literal> sets the timeout timer used by the "
+"method; this value applies to the connection as well as the data timeout."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e."
+"g. on high-latency connections. It specifies how many requests are sent in a "
+"pipeline. APT tries to detect and workaround misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the "
+"HTTP/1.1 specification pipelining can be disabled by setting the value to 0. "
+"It is enabled by default with the value 10."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::AllowRedirect</literal> controls whether APT will "
+"follow redirects, which is enabled by default."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</"
+"literal> which accepts integer values in kilobytes per second. The default "
+"value is 0 which deactivates the limit and tries to use all available "
+"bandwidth. Note that this option implicitly disables downloading from "
+"multiple servers at the same time."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::User-Agent</literal> can be used to set a different "
+"User-Agent for the http download method as some proxies allow access for "
+"clients only if the client uses a known identifier."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::Proxy-Auto-Detect</literal> can be used to specify "
+"an external command to discover the http proxy to use. The first and only "
+"parameter is an URI denoting the host to be contacted to allow for host-"
+"specific configuration. APT expects the command to output the proxy on "
+"stdout as a single line in the style <literal>http://proxy:port/</literal> "
+"or the word <literal>DIRECT</literal> if no proxy should be used. No output "
+"indicates that the generic proxy settings should be used. Note that auto-"
+"detection will not be used for a host if a host-specific proxy configuration "
+"is already set via <literal>Acquire::http::Proxy::<replaceable>HOST</"
+"replaceable></literal>. See the &squid-deb-proxy-client; package for an "
+"example implementation that uses avahi. This option takes precedence over "
+"the legacy option name <literal>ProxyAutoDetect</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Cache-control</literal>, <literal>Timeout</literal>, "
+"<literal>AllowRedirect</literal>, <literal>Dl-Limit</literal> and "
+"<literal>proxy</literal> options work for HTTPS URIs in the same way as for "
+"the <literal>http</literal> method, and default to the same values if they "
+"are not explicitly set. The <literal>Pipeline-Depth</literal> option is not "
+"yet supported."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>CaInfo</literal> suboption specifies place of file that holds info "
+"about trusted certificates. <literal>&lt;host&gt;::CaInfo</literal> is the "
+"corresponding per-host option. <literal>Verify-Peer</literal> boolean "
+"suboption determines whether or not the server's host certificate should be "
+"verified against trusted certificates. <literal>&lt;host&gt;::Verify-Peer</"
+"literal> is the corresponding per-host option. <literal>Verify-Host</"
+"literal> boolean suboption determines whether or not the server's hostname "
+"should be verified. <literal>&lt;host&gt;::Verify-Host</literal> is the "
+"corresponding per-host option. <literal>SslCert</literal> determines what "
+"certificate to use for client authentication. <literal>&lt;host&gt;::"
+"SslCert</literal> is the corresponding per-host option. <literal>SslKey</"
+"literal> determines what private key to use for client authentication. "
+"<literal>&lt;host&gt;::SslKey</literal> is the corresponding per-host "
+"option. <literal>SslForceVersion</literal> overrides default SSL version to "
+"use. It can contain either of the strings '<literal>TLSv1</literal>' or "
+"'<literal>SSLv3</literal>'. <literal>&lt;host&gt;::SslForceVersion</"
+"literal> is the corresponding per-host option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs. "
+"It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</"
+"literal>. Per host proxies can also be specified by using the form "
+"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
+"used. To use an FTP proxy you will have to set the <literal>ftp::ProxyLogin</"
+"literal> script in the configuration file. This entry specifies the commands "
+"to send to tell the proxy server what to connect to. Please see "
+"&configureindex; for an example of how to do this. The substitution "
+"variables representing the corresponding URI component are <literal>"
+"$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, <literal>"
+"$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, <literal>$(SITE)</"
+"literal> and <literal>$(SITE_PORT)</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Several settings are provided to control passive mode. Generally it is safe "
+"to leave passive mode on; it works in nearly every environment. However, "
+"some situations require that passive mode be disabled and port mode FTP used "
+"instead. This can be done globally or for connections that go through a "
+"proxy or for a specific host (see the sample config file for examples)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
+"envar> environment variable to an HTTP URL - see the discussion of the http "
+"method above for syntax. You cannot set this in the configuration file and "
+"it is not recommended to use FTP over HTTP due to its low efficiency."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
+"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
+"false, which means these commands are only used if the control connection is "
+"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
+"that most FTP servers do not support RFC2428."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "/cdrom/::Mount \"foo\";"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"For URIs using the <literal>cdrom</literal> method, the only configurable "
+"option is the mount point, <literal>cdrom::Mount</literal>, which must be "
+"the mount point for the CD-ROM (or DVD, or whatever) drive as specified in "
+"<filename>/etc/fstab</filename>. It is possible to provide alternate mount "
+"and unmount commands if your mount point cannot be listed in the fstab. The "
+"syntax is to put <placeholder type=\"literallayout\" id=\"0\"/> within the "
+"<literal>cdrom</literal> block. It is important to have the trailing slash. "
+"Unmount commands can be specified using UMount."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"For GPGV URIs the only configurable option is <literal>gpgv::Options</"
+"literal>, which passes additional parameters to gpgv."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"List of compression types which are understood by the acquire methods. "
+"Files like <filename>Packages</filename> can be available in various "
+"compression formats. By default the acquire methods can decompress and "
+"recompress many common formats like <command>xz</command> and <command>gzip</"
+"command>; with this scope the supported formats can be queried, modified as "
+"well as support for more formats added (see also <option>APT::Compressor</"
+"option>). The syntax for this is: <placeholder type=\"synopsis\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order:: \"gz\";"
+msgstr "Acquire::CompressionTypes::Order:: \"gz\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, fuzzy, no-wrap
+#| msgid "Acquire::CompressionTypes::Order { \"lzma\"; \"gz\"; };"
+msgid "Acquire::CompressionTypes::Order { \"xz\"; \"gz\"; };"
+msgstr "Acquire::CompressionTypes::Order { \"lzma\"; \"gz\"; };"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Also, the <literal>Order</literal> subgroup can be used to define in which "
+"order the acquire system will try to download the compressed files. The "
+"acquire system will try the first and proceed with the next compression type "
+"in this list on error, so to prefer one over the other type simply add the "
+"preferred type first - types not already added will be implicitly appended "
+"to the end of the list, so e.g. <placeholder type=\"synopsis\" id=\"0\"/> "
+"can be used to prefer <command>gzip</command> compressed files over all "
+"other compression formats. If <command>xz</command> should be preferred "
+"over <command>gzip</command> and <command>bzip2</command> the configure "
+"setting should look like this: <placeholder type=\"synopsis\" id=\"1\"/> It "
+"is not needed to add <literal>bz2</literal> to the list explicitly as it "
+"will be added automatically."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Dir::Bin::bzip2 \"/bin/bzip2\";"
+msgstr "Dir::Bin::bzip2 \"/bin/bzip2\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that the <literal>Dir::Bin::<replaceable>Methodname</replaceable></"
+"literal> will be checked at run time. If this option has been set and "
+"support for this format isn't directly built into apt, the method will only "
+"be used if this file exists; e.g. for the <literal>bzip2</literal> method "
+"(the inbuilt) setting is: <placeholder type=\"literallayout\" id=\"0\"/> "
+"Note also that list entries specified on the command line will be added at "
+"the end of the list specified in the configuration files, but before the "
+"default entries. To prefer a type in this case over the ones specified in "
+"the configuration files you can set the option direct - not in list style. "
+"This will not override the defined list; it will only prefix the list with "
+"this type."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The special type <literal>uncompressed</literal> can be used to give "
+"uncompressed files a preference, but note that most archives don't provide "
+"uncompressed files so this is mostly only useable for local mirrors."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"When downloading <literal>gzip</literal> compressed indexes (Packages, "
+"Sources, or Translations), keep them gzip compressed locally instead of "
+"unpacking them. This saves quite a lot of disk space at the expense of more "
+"CPU requirements when building the local package caches. False by default."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Languages subsection controls which <filename>Translation</filename> "
+"files are downloaded and in which order APT tries to display the description-"
+"translations. APT will try to display the first available description in the "
+"language which is listed first. Languages can be defined with their short or "
+"long language codes. Note that not all archives provide "
+"<filename>Translation</filename> files for every language - the long "
+"language codes are especially rare."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The default list includes \"environment\" and \"en\". "
+"\"<literal>environment</literal>\" has a special meaning here: it will be "
+"replaced at runtime with the language codes extracted from the "
+"<literal>LC_MESSAGES</literal> environment variable. It will also ensure "
+"that these codes are not included twice in the list. If "
+"<literal>LC_MESSAGES</literal> is set to \"C\" only the "
+"<filename>Translation-en</filename> file (if available) will be used. To "
+"force APT to use no Translation file use the setting <literal>Acquire::"
+"Languages=none</literal>. \"<literal>none</literal>\" is another special "
+"meaning code which will stop the search for a suitable "
+"<filename>Translation</filename> file. This tells APT to download these "
+"translations too, without actually using them unless the environment "
+"specifies the languages. So the following example configuration will result "
+"in the order \"en, de\" in an English locale or \"de, en\" in a German one. "
+"Note that \"fr\" is downloaded, but not used unless APT is used in a French "
+"locale (where the order would be \"fr, de, en\"). <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Note: To prevent problems resulting from APT being executed in different "
+"environments (e.g. by different users or by other programs) all Translation "
+"files which are found in <filename>/var/lib/apt/lists/</filename> will be "
+"added to the end of the list (after an implicit \"<literal>none</literal>\")."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "When downloading, force to use only the IPv4 protocol."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "When downloading, force to use only the IPv6 protocol."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The maximum file size of Release/Release.gpg/InRelease files. The default "
+"is 10MB."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This option controls if apt will use the DNS SRV server record as specified "
+"in RFC 2782 to select an alternative server to connect to. The default is "
+"\"true\"."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow update operations to load data files from repositories without "
+"sufficient security information. The default value is \"<literal>false</"
+"literal>\". Concept, implications as well as alternatives are detailed in "
+"&apt-secure;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow update operations to load data files from repositories which provide "
+"security information, but these are deemed no longer cryptographically "
+"strong enough. The default value is \"<literal>false</literal>\". Concept, "
+"implications as well as alternatives are detailed in &apt-secure;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow that a repository that was previously gpg signed to become unsigned "
+"during an update operation. When there is no valid signature for a "
+"previously trusted repository apt will refuse the update. This option can be "
+"used to override this protection. You almost certainly never want to enable "
+"this. The default is <literal>false</literal>. Concept, implications as "
+"well as alternatives are detailed in &apt-secure;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.conf.5.xml
+msgid "scope"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Acquiring changelogs can only be done if an URI is known from where to get "
+"them. Preferable the Release file indicates this in a 'Changelogs' field. "
+"If this isn't available the Label/Origin field of the Release file is used "
+"to check if a <literal>Acquire::Changelogs::URI::Label::<replaceable>LABEL</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Origin::"
+"<replaceable>ORIGIN</replaceable></literal> option exists and if so this "
+"value is taken. The value in the Release file can be overridden with "
+"<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
+"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a "
+"normal URI to a text file, except that package specific data is replaced "
+"with the placeholder <literal>@CHANGEPATH@</literal>. The value for it is: "
+"1. if the package is from a component (e.g. <literal>main</literal>) this "
+"is the first part otherwise it is omitted, 2. the first letter of source "
+"package name, except if the source package name starts with '<literal>lib</"
+"literal>' in which case it will be the first four letters. 3. The complete "
+"source package name. 4. the complete name again and 5. the source version. "
+"The first (if present), second, third and fourth part are separated by a "
+"slash ('<literal>/</literal>') and between the fourth and fifth part is an "
+"underscore ('<literal>_</literal>'). The special value '<literal>no</"
+"literal>' is available for this option indicating that this source can't be "
+"used to acquire changelog files from. Another source will be tried if "
+"available in this case."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid "User configuration"
+msgid "Binary specific configuration"
+msgstr "Konfiguracja użytkownika"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Especially with the introduction of the <command>apt</command> binary it can "
+"be useful to set certain options only for a specific binary as even options "
+"which look like they would effect only a certain binary like <option>APT::"
+"Get::Show-Versions</option> effect <command>apt-get</command> as well as "
+"<command>apt</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Setting an option for a specific binary only can be achieved by setting the "
+"option inside the <option>Binary::<replaceable>specific-binary</"
+"replaceable></option> scope. Setting the option <option>APT::Get::Show-"
+"Versions</option> for the <command>apt</command> only can e.g. by done by "
+"setting <option>Binary::apt::APT::Get::Show-Versions</option> instead."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that as seen in the DESCRIPTION section further above you can't set "
+"binary-specific options on the commandline itself nor in configuration files "
+"loaded via the commandline."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Directories"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Dir::State</literal> section has directories that pertain to "
+"local state information. <literal>lists</literal> is the directory to place "
+"downloaded package lists in and <literal>status</literal> is the name of the "
+"&dpkg; status file. <literal>preferences</literal> is the name of the APT "
+"<filename>preferences</filename> file. <literal>Dir::State</literal> "
+"contains the default directory to prefix on all sub-items if they do not "
+"start with <filename>/</filename> or <filename>./</filename>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Dir::Cache</literal> contains locations pertaining to local cache "
+"information, such as the two package caches <literal>srcpkgcache</literal> "
+"and <literal>pkgcache</literal> as well as the location to place downloaded "
+"archives, <literal>Dir::Cache::archives</literal>. Generation of caches can "
+"be turned off by setting <literal>pkgcache</literal> or "
+"<literal>srcpkgcache</literal> to <literal>\"\"</literal>. This will slow "
+"down startup but save disk space. It is probably preferable to turn off the "
+"pkgcache rather than the srcpkgcache. Like <literal>Dir::State</literal> "
+"the default directory is contained in <literal>Dir::Cache</literal>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Dir::Etc</literal> contains the location of configuration files, "
+"<literal>sourcelist</literal> gives the location of the sourcelist and "
+"<literal>main</literal> is the default configuration file (setting has no "
+"effect, unless it is done from the config file specified by "
+"<envar>APT_CONFIG</envar>)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Dir::Parts</literal> setting reads in all the config fragments "
+"in lexical order from the directory specified. After this is done then the "
+"main config file is loaded."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
+"Bin::Methods</literal> specifies the location of the method handlers and "
+"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
+"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
+"literal> <literal>dpkg-buildpackage</literal> and <literal>apt-cache</"
+"literal> specify the location of the respective programs."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The configuration item <literal>RootDir</literal> has a special meaning. If "
+"set, all paths will be relative to <literal>RootDir</literal>, "
+"<emphasis>even paths that are specified absolutely</emphasis>. So, for "
+"instance, if <literal>RootDir</literal> is set to <filename>/tmp/staging</"
+"filename> and <literal>Dir::State::status</literal> is set to <filename>/var/"
+"lib/dpkg/status</filename>, then the status file will be looked up in "
+"<filename>/tmp/staging/var/lib/dpkg/status</filename>. If you want to "
+"prefix only relative paths, set <literal>Dir</literal> instead."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Ignore-Files-Silently</literal> list can be used to specify "
+"which files APT should silently ignore while parsing the files in the "
+"fragment directories. Per default a file which end with <literal>.disabled</"
+"literal>, <literal>~</literal>, <literal>.bak</literal> or <literal>.dpkg-[a-"
+"z]+</literal> is silently ignored. As seen in the last default value these "
+"patterns can use regular expression syntax."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "APT in DSelect"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"When APT is used as a &dselect; method several configuration directives "
+"control the default behavior. These are in the <literal>DSelect</literal> "
+"section."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Cache Clean mode; this value may be one of <literal>always</literal>, "
+"<literal>prompt</literal>, <literal>auto</literal>, <literal>pre-auto</"
+"literal> and <literal>never</literal>. <literal>always</literal> and "
+"<literal>prompt</literal> will remove all packages from the cache after "
+"upgrading, <literal>prompt</literal> (the default) does so conditionally. "
+"<literal>auto</literal> removes only those packages which are no longer "
+"downloadable (replaced with a new version for instance). <literal>pre-auto</"
+"literal> performs this action before downloading new packages."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the install phase."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the update phase."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"If true the [U]pdate operation in &dselect; will always prompt to continue. "
+"The default is to prompt only on error."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "How APT calls &dpkg;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Several configuration directives control how APT invokes &dpkg;. These are "
+"in the <literal>DPkg</literal> section."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of options to pass to &dpkg;. The options must be specified "
+"using the list notation and each list item is passed as a single argument to "
+"&dpkg;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of shell commands to run before/after invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of shell commands to run before invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort. APT will pass the filenames of all .deb files it is "
+"going to install to the commands, one per line on the requested file "
+"descriptor, defaulting to standard input."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Version 2 of this protocol sends more information through the requested file "
+"descriptor: a line with the text <literal>VERSION 2</literal>, the APT "
+"configuration space, and a list of package actions with filename and version "
+"information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each configuration directive line has the form <literal>key=value</"
+"literal>. Special characters (equal signs, newlines, nonprintable "
+"characters, quotation marks, and percent signs in <literal>key</literal> and "
+"newlines, nonprintable characters, and percent signs in <literal>value</"
+"literal>) are %-encoded. Lists are represented by multiple <literal>key::"
+"=value</literal> lines with the same key. The configuration section ends "
+"with a blank line."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Package action lines consist of five fields in Version 2: package name "
+"(without architecture qualification even if foreign), old version, direction "
+"of version change (&lt; for upgrades, &gt; for downgrades, = for no change), "
+"new version, action. The version fields are \"-\" for no version at all (for "
+"example when installing a package for the first time; no version is treated "
+"as earlier than any real version, so that is an upgrade, indicated as "
+"<literal>- &lt; 1.23.4</literal>). The action field is \"**CONFIGURE**\" if "
+"the package is being configured, \"**REMOVE**\" if it is being removed, or "
+"the filename of a .deb file if it is being unpacked."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"In Version 3 after each version field follows the architecture of this "
+"version, which is \"-\" if there is no version, and a field showing the "
+"MultiArch type \"same\", \"foreign\", \"allowed\" or \"none\". Note that "
+"\"none\" is an incorrect typename which is just kept to remain compatible, "
+"it should be read as \"no\" and users are encouraged to support both."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The version of the protocol to be used for the command "
+"<literal><replaceable>cmd</replaceable></literal> can be chosen by setting "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::Version</"
+"literal> accordingly, the default being version 1. If APT isn't supporting "
+"the requested version it will send the information in the highest version it "
+"has support for instead."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The file descriptor to be used to send the information can be requested with "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::InfoFD</"
+"literal> which defaults to <literal>0</literal> for standard input and is "
+"available since version 0.9.11. Support for the option can be detected by "
+"looking for the environment variable <envar>APT_HOOK_INFO_FD</envar> which "
+"contains the number of the used file descriptor as a confirmation."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"APT chdirs to this directory before invoking &dpkg;, the default is "
+"<filename>/</filename>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"These options are passed to &dpkg-buildpackage; when compiling packages; the "
+"default is to disable signing and produce all binaries."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"If this option is set APT will call <command>dpkg --configure --pending</"
+"command> to let &dpkg; handle all required configurations and triggers. This "
+"option is activated by default, but deactivating it could be useful if you "
+"want to run APT multiple times in a row - e.g. in an installer. In this "
+"scenario you could deactivate this option in all but the last run."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Periodic and Archives options"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups "
+"of options configure behavior of apt periodic updates, which is done by the "
+"<literal>/usr/lib/apt/apt.systemd.daily</literal> script. See the top of "
+"this script for the brief documentation of these options."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+#, fuzzy
+msgid "Debug options"
+msgstr "opcje"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Enabling options in the <literal>Debug::</literal> section will cause "
+"debugging information to be sent to the standard error stream of the program "
+"utilizing the <literal>apt</literal> libraries, or enable special program "
+"modes that are primarily useful for debugging the behavior of <literal>apt</"
+"literal>. Most of these options are not interesting to a normal user, but a "
+"few may be:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::pkgProblemResolver</literal> enables output about the "
+"decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::NoLocking</literal> disables all file locking. This can be "
+"used to run some operations (for instance, <literal>apt-get -s install</"
+"literal>) as a non-root user."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each "
+"time that <literal>apt</literal> invokes &dpkg;."
+msgstr ""
+
+#. TODO: provide a
+#. motivating example, except I haven't a clue why you'd want
+#. to do this.
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+msgid ""
+"<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
+"in CD-ROM IDs."
+msgstr ""
+"<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
+"in CDROM IDs."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid "A full list of debugging options to apt follows."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information related to accessing <literal>cdrom://</literal> sources."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using FTP."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using HTTP."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using HTTPS."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information related to verifying cryptographic signatures using "
+"<literal>gpg</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information about the process of accessing collections of packages "
+"stored on CD-ROMs."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Describes the process of resolving build-dependencies in &apt-get;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output each cryptographic hash that is generated by the <literal>apt</"
+"literal> libraries."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Do not include information from <literal>statfs</literal>, namely the number "
+"of used and free blocks on the CD-ROM filesystem, when generating an ID for "
+"a CD-ROM."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Disable all file locking. For instance, this will allow two instances of "
+"<quote><literal>apt-get update</literal></quote> to run at the same time."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Log when items are added to or removed from the global download queue."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output status messages and errors related to verifying checksums and "
+"cryptographic signatures of downloaded files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information about downloading and applying package index list diffs, "
+"and errors relating to package index list diffs."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information related to patching apt package lists when downloading "
+"index diffs instead of full indices."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Log all interactions with the sub-processes that actually perform downloads."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Log events related to the automatically-installed status of packages and to "
+"the removal of unused packages."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate debug messages describing which packages are being automatically "
+"installed to resolve dependencies. This corresponds to the initial auto-"
+"install pass performed in, e.g., <literal>apt-get install</literal>, and not "
+"to the full <literal>apt</literal> dependency resolver; see <literal>Debug::"
+"pkgProblemResolver</literal> for that."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate debug messages describing which packages are marked as keep/install/"
+"remove while the ProblemResolver does his work. Each addition or deletion "
+"may trigger additional actions; they are shown indented two additional "
+"spaces under the original entry. The format for each line is "
+"<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c -"
+"&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> is "
+"the current version of the package, <literal>d.e.f</literal> is the version "
+"considered for installation and <literal>x.y.z</literal> is a newer version, "
+"but not considered for installation (because of a low pin score). The later "
+"two can be omitted if there is none or if it is the same as the installed "
+"version. <literal>section</literal> is the name of the section the package "
+"appears in."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"When invoking &dpkg;, output the precise command line with which it is being "
+"invoked, with arguments separated by a single space character."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output all the data received from &dpkg; on the status file descriptor and "
+"any errors encountered while parsing it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate a trace of the algorithm that decides the order in which "
+"<literal>apt</literal> should pass packages to &dpkg;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output status messages tracing the steps performed when invoking &dpkg;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Output the priority of each package list on startup."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Trace the execution of the dependency resolver (this applies only to what "
+"happens when a complex dependency problem is encountered)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Display a list of all installed packages with their calculated score used by "
+"the pkgProblemResolver. The description of the package is the same as "
+"described in <literal>Debug::pkgDepCache::Marker</literal>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information about the vendors read from <filename>/etc/apt/vendors."
+"list</filename>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Display the external commands that are called by apt hooks. This includes e."
+"g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"<literal>APT::Update::{Pre,Post}-Invoke</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml apt-ftparchive.1.xml
+msgid "Examples"
+msgstr "Przykłady"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"&configureindex; is a configuration file showing example values for all "
+"possible options."
+msgstr ""
+
+#. ? reading apt.conf
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid "&apt-cache;, &apt-config;, &apt-preferences;."
+msgstr "&apt-cache;, &apt-config;, &apt-preferences;."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt_preferences.5.xml
+msgid "Preference control file for APT"
+msgstr "Plik kontrolny preferencji APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"The APT preferences file <filename>/etc/apt/preferences</filename> and the "
+"fragment files in the <filename>/etc/apt/preferences.d/</filename> folder "
+"can be used to control which versions of packages will be selected for "
+"installation."
+msgstr ""
+"Plik preferencji APT <filename>/etc/apt/preferences</filename> i pliki "
+"częściowe w katalogu <filename>/etc/apt/preferences.d/</filename> są używane "
+"do określania wersji pakietów wybieranych do instalacji."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Several versions of a package may be available for installation when the "
+"&sources-list; file contains references to more than one distribution (for "
+"example, <literal>stable</literal> and <literal>testing</literal>). APT "
+"assigns a priority to each version that is available. Subject to dependency "
+"constraints, <command>apt-get</command> selects the version with the highest "
+"priority for installation. The APT preferences override the priorities that "
+"APT assigns to package versions by default, thus giving the user control "
+"over which one is selected for installation."
+msgstr ""
+"Jeżeli plik &sources-list; zawiera odniesienia do więcej niż jednej "
+"dystrybucji (na przykład <literal>stable</literal> i <literal>testing</"
+"literal>), to do zainstalowania może być dostępnych kilka wersji tego "
+"samego pakietu. APT nadaje priorytet każdej z dostępnych wersji. "
+"<command>apt-get</command> wybiera do zainstalowania wersję o najwyższym "
+"priorytecie (jeśli zależności pakietu pozwalają na jego zainstalowanie). "
+"Preferencje APT nadpisują domyślne priorytety ustawiane wersjom pakietów, "
+"pozwalając użytkownikowi kontrolować, które wersje pakietów są wybierane do "
+"zainstalowania."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Several instances of the same version of a package may be available when the "
+"&sources-list; file contains references to more than one source. In this "
+"case <command>apt-get</command> downloads the instance listed earliest in "
+"the &sources-list; file. The APT preferences do not affect the choice of "
+"instance, only the choice of version."
+msgstr ""
+"Może być dostępnych kilka instancji tej samej wersji pakietu, jeśli plik "
+"&sources-list; zawiera odwołania do więcej niż jednego źródła. W takim "
+"wypadku <command>apt-get</command> pobierze instancję ze źródła wymienionego "
+"najwcześniej w pliku &sources-list;. Preferencje APT nie mają wpływu na "
+"wybór instancji, ale na wybór wersji."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Preferences are a strong power in the hands of a system administrator but "
+"they can become also their biggest nightmare if used without care! APT will "
+"not question the preferences, so wrong settings can lead to uninstallable "
+"packages or wrong decisions while upgrading packages. Even more problems "
+"will arise if multiple distribution releases are mixed without a good "
+"understanding of the following paragraphs. Packages included in a specific "
+"release aren't tested in (and therefore don't always work as expected in) "
+"older or newer releases, or together with other packages from different "
+"releases. You have been warned."
+msgstr ""
+"Preferencje są mocnym narzędziem w rękach administratora systemu, ale mogą "
+"stać się też jego największym koszmarem, jeśli zostaną nieostrożnie użyte! "
+"APT nie podważa preferencji, tak więc błędne ustawienia spowodują "
+"pojawienie się nieinstalowalnych pakietów lub podejmowanie przez APT "
+"niepoprawnych decyzji podczas aktualizacji pakietów. Mogą wystąpić jeszcze "
+"większe problemy, gdy w pliku preferencji APT zostanie skonfigurowanych "
+"wiele wydań dystrybucji bez zrozumienia zawartości kolejnych rozdziałów tej "
+"strony. Pakiety dołączone do określonego wydania nie są testowane w "
+"połączeniu z pakietami z innych (starszych lub nowszych) wydań, więc w "
+"takich sytuacjach nie zawsze działają, tak jakby się tego od nich "
+"oczekiwało. Ostrzegamy!"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Note that the files in the <filename>/etc/apt/preferences.d</filename> "
+"directory are parsed in alphanumeric ascending order and need to obey the "
+"following naming convention: The files have either no or \"<literal>pref</"
+"literal>\" as filename extension and only contain alphanumeric, hyphen (-), "
+"underscore (_) and period (.) characters. Otherwise APT will print a notice "
+"that it has ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
+msgstr ""
+"Proszę zauważyć, że pliki w katalogu <filename>/etc/apt/preferences.d</"
+"filename> są przetwarzane w rosnącym porządku alfanumerycznym. Należy "
+"również przestrzegać następującej konwencji: pliki albo nie powinny mieć "
+"żadnego rozszerzenia, albo rozszerzeniem powinno być \"<literal>pref</"
+"literal>\", a ich nazwy powinny zawierać tylko i wyłącznie znaki "
+"alfanumeryczne oraz myślniki (\"-\"), podkreślenia (\"_\") i kropki (\".\"). "
+"W przeciwnym wypadku APT zignoruje plik o niepoprawnej nazwie i jeśli nazwa "
+"pliku nie pasuje do wzorca podanego w liście zmiennych konfiguracji "
+"<literal>Dir::Ignore-Files-Silently</literal>, to wypisze odpowiedni "
+"komunikat."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "APT's Default Priority Assignments"
+msgstr "Domyślne przypisania priorytetów APT"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "<command>apt-get install -t testing <replaceable>some-package</replaceable></command>\n"
+msgstr "<command>apt-get install -t testing <replaceable>jakiÅ›-pakiet</replaceable></command>\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "APT::Default-Release \"stable\";\n"
+msgstr "APT::Default-Release \"stable\";\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If there is no preferences file or if there is no entry in the file that "
+"applies to a particular version then the priority assigned to that version "
+"is the priority of the distribution to which that version belongs. It is "
+"possible to single out a distribution, \"the target release\", which "
+"receives a higher priority than other distributions do by default. The "
+"target release can be set on the <command>apt-get</command> command line or "
+"in the APT configuration file <filename>/etc/apt/apt.conf</filename>. Note "
+"that this has precedence over any general priority you set in the <filename>/"
+"etc/apt/preferences</filename> file described later, but not over "
+"specifically pinned packages. For example, <placeholder type="
+"\"programlisting\" id=\"0\"/> <placeholder type=\"programlisting\" id=\"1\"/>"
+msgstr ""
+"Jeśli plik preferencji nie istnieje lub nie zawiera wpisu pasującego do "
+"pewnej wersji, to priorytetem przypisanym do tej wersji jest priorytet "
+"dystrybucji, do której wersja należy. Jest możliwe wybranie jednej "
+"dystrybucji, tak zwanego \"wydania docelowego\", która otrzyma priorytet "
+"wyższy niż priorytet domyślnie przypisywany innym dystrybucjom. To wydanie "
+"docelowe można ustawić w linii poleceń <command>apt-get</command> lub w "
+"pliku konfiguracyjnym APT <filename>/etc/apt/apt.conf</filename>. ProszÄ™ "
+"zauważyć, że wydanie docelowe nadpisuje jakikolwiek ogólny priorytet "
+"ustawiony w opisanym poniżej pliku <filename>/etc/apt/preferences</"
+"filename>, ale nie nadpisuje priorytetów szczegółowych przypisanych do "
+"poszczególnych pakietów. Na przykład <placeholder type=\"programlisting\" id="
+"\"0\"/> <placeholder type=\"programlisting\" id=\"1\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If the target release has been specified then APT uses the following "
+"algorithm to set the priorities of the versions of a package. Assign:"
+msgstr ""
+"Jeśli wydanie docelowe zostało podane, to APT używa następującego algorytmu "
+"do ustawiania priorytetów wersjom pakietu. Przypisuje:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 1"
+msgstr "priorytet 1"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"to the versions coming from archives which in their <filename>Release</"
+"filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</"
+"emphasis> as \"ButAutomaticUpgrades: yes\" like the Debian "
+"<literal>experimental</literal> archive."
+msgstr ""
+"wersjom pochodzącym z archiwów, których pliki <filename>Release</filename> "
+"majÄ… wpis \"NotAutomatic: yes\" i <emphasis>nie majÄ…</emphasis> wpisu "
+"\"ButAutomaticUpgrades: yes\". Przykładem takiego archiwum jest archiwum "
+"<literal>experimental</literal> Debiana."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 100"
+msgstr "priorytet 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"to the version that is already installed (if any) and to the versions coming "
+"from archives which in their <filename>Release</filename> files are marked "
+"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the Debian "
+"backports archive since <literal>squeeze-backports</literal>."
+msgstr ""
+"wersji, która jest już zainstalowana (o ile jakaś jest) i wersjom "
+"pochodzącym z archiwów, które w swoich plikach <filename>Release</filename> "
+"majÄ… wpisy \"NotAutomatic: yes\" i \"ButAutomaticUpgrades: yes\", tak jak to "
+"robią archiwa backport-ów Debiana począwszy od <literal>squeeze-backports</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 500"
+msgstr "priorytet 500"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+#| msgid ""
+#| "to the versions that are not installed and belong to the target release."
+msgid "to the versions that do not belong to the target release."
+msgstr "wersjom niezainstalowanym i należącym do wydania docelowego."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 990"
+msgstr "priorytet 990"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+#| msgid ""
+#| "to the versions that are not installed and belong to the target release."
+msgid "to the versions that belong to the target release."
+msgstr "wersjom niezainstalowanym i należącym do wydania docelowego."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The highest of those priorities whose description matches the version is "
+"assigned to the version."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If the target release has not been specified then APT simply assigns "
+"priority 100 to all installed package versions and priority 500 to all "
+"uninstalled package versions, except versions coming from archives which in "
+"their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" "
+"- these versions get the priority 1 or priority 100 if it is additionally "
+"marked as \"ButAutomaticUpgrades: yes\"."
+msgstr ""
+"Jeśli nie określono wydania docelowego, to APT przypisuje priorytet 100 "
+"wszystkim zainstalowanym wersjom pakietów oraz priorytet 500 wszystkim "
+"niezainstalowanym wersjom pakietów, z wyjątkiem wersji pochodzących z "
+"archiwów, których pliki <filename>Release</filename> są oznaczone jako "
+"\"NotAutomatic: yes\" - takie wersje otrzymujÄ… priorytet 1 lub priorytet "
+"100, jeśli dodatkowo są oznaczone jako \"ButAutomaticUpgrades: yes\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"APT then applies the following rules, listed in order of precedence, to "
+"determine which version of a package to install."
+msgstr ""
+"APT, do określenia, którą wersję pakietu należy zainstalować, stosuje wtedy "
+"następujące reguły wymienione w kolejności, w jakiej są stosowane."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"Never downgrade unless the priority of an available version exceeds 1000. "
+"(\"Downgrading\" is installing a less recent version of a package in place "
+"of a more recent version. Note that none of APT's default priorities "
+"exceeds 1000; such high priorities can only be set in the preferences file. "
+"Note also that downgrading a package can be risky.)"
+msgstr ""
+"Nigdy nie zastępuje pakietu jego wcześniejszą wersją (tzw. \"downgrading\"), "
+"chyba że priorytet tej wcześniejszej, dostępnej wersji przekracza 1000. "
+"(Należy zauważyć, że żaden z domyślnych priorytetów APT nie przekracza 1000; "
+"tak wysokie priorytety mogą być ustawiane tylko w pliku konfiguracyjnym. "
+"Instalowanie wcześniejszych wersji pakietów może być ryzykowną operacją)."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "Install the highest priority version."
+msgstr "Instaluje wersję o najwyższym priorytecie."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"If two or more versions have the same priority, install the most recent one "
+"(that is, the one with the higher version number)."
+msgstr ""
+"Jeśli dwie lub więcej wersji ma ten sam priorytet, to zainstalowana zostanie "
+"wersja nowsza (czyli z większym numerem wersji)."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"If two or more versions have the same priority and version number but either "
+"the packages differ in some of their metadata or the <literal>--reinstall</"
+"literal> option is given, install the uninstalled one."
+msgstr ""
+"Jeśli dwie lub więcej wersji ma ten sam priorytet i numer wersji ale albo "
+"pakiety różnią się niektórymi metadanymi, albo użyto opcji <literal>--"
+"reinstall</literal>, to zainstalowany zostanie pakiet jeszcze "
+"niezainstalowany."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"In a typical situation, the installed version of a package (priority 100) "
+"is not as recent as one of the versions available from the sources listed in "
+"the &sources-list; file (priority 500 or 990). Then the package will be "
+"upgraded when <command>apt-get install <replaceable>some-package</"
+"replaceable></command> or <command>apt-get upgrade</command> is executed."
+msgstr ""
+"W typowej sytuacji zainstalowana wersja pakietu (priorytet 100) jest starsza "
+"od którejś z wersji dostępnych ze źródeł wymienionych w pliku &sources-list; "
+"(priorytet 500 lub 999). W takim wypadku polecenia <command>apt-get install "
+"<replaceable>jakiÅ›-pakiet</replaceable></command> lub <command>apt-get "
+"upgrade</command> zaktualizujÄ… ten pakiet."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"More rarely, the installed version of a package is <emphasis>more</emphasis> "
+"recent than any of the other available versions. The package will not be "
+"downgraded when <command>apt-get install <replaceable>some-package</"
+"replaceable></command> or <command>apt-get upgrade</command> is executed."
+msgstr ""
+"Rzadziej, ale się zdarza, że zainstalowana wersja pakietu jest "
+"<emphasis>nowsza</emphasis> niż jakakolwiek inna dostępna wersja. Polecenia "
+"<command>apt-get install <replaceable>jakiÅ›-pakiet</replaceable></command> i "
+"<command>apt-get upgrade</command> nie zastąpią takiego pakietu wcześniejszą "
+"wersjÄ…."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Sometimes the installed version of a package is more recent than the version "
+"belonging to the target release, but not as recent as a version belonging to "
+"some other distribution. Such a package will indeed be upgraded when "
+"<command>apt-get install <replaceable>some-package</replaceable></command> "
+"or <command>apt-get upgrade</command> is executed, because at least "
+"<emphasis>one</emphasis> of the available versions has a higher priority "
+"than the installed version."
+msgstr ""
+"Czasami zainstalowana wersja pakietu jest nowsza niż wersja należąca do "
+"wydania docelowego, ale nie tak nowa jak wersja należąca do innej "
+"dystrybucji. Polecenia <command>apt-get install <replaceable>jakiÅ›-pakiet</"
+"replaceable></command> oraz <command>apt-get upgrade</command> zaktualizujÄ… "
+"taki pakiet, ponieważ przynajmniej <emphasis>jedna</emphasis> z dostępnych "
+"wersji ma większy priorytet niż wersja zainstalowana."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "The Effect of APT Preferences"
+msgstr "Efekt stosowania preferencji APT"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The APT preferences file allows the system administrator to control the "
+"assignment of priorities. The file consists of one or more multi-line "
+"records separated by blank lines. Records can have one of two forms, a "
+"specific form and a general form."
+msgstr ""
+"Plik preferencji APT pozwala administratorowi systemu na kontrolowanie "
+"przypisań priorytetów. Plik składa się z jednego lub większej liczby "
+"wieloliniowych rekordów rozdzielonych pustymi liniami. Rekordy mogą "
+"przyjmować jedną z dwóch postaci: szczegółową i ogólną."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The specific form assigns a priority (a \"Pin-Priority\") to one or more "
+"specified packages with a specified version or version range. For example, "
+"the following record assigns a high priority to all versions of the "
+"<filename>perl</filename> package whose version number begins with "
+"\"<literal>&good-perl;</literal>\". Multiple packages can be separated by "
+"spaces."
+msgstr ""
+"Postać szczegółowa przypisuje priorytet (\"Pin-Priority\") do jednego lub "
+"większej liczby podanych pakietów i podanych wersji lub zakresów wersji. Na "
+"przykład następujący rekord ustawia wysoki priorytet wszystkim wersjom "
+"pakietu <filename>perl</filename>, których numer wersji zaczyna się od "
+"\"<literal>&good-perl;</literal>\". Można podać wiele nazw pakietów, "
+"rozdzielajÄ…c je od siebie spacjami."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The general form assigns a priority to all of the package versions in a "
+"given distribution (that is, to all the versions of packages that are listed "
+"in a certain <filename>Release</filename> file) or to all of the package "
+"versions coming from a particular Internet site, as identified by the site's "
+"fully qualified domain name."
+msgstr ""
+"Postać ogólna przypisuje priorytet wszystkim wersjom pakietów w podanej "
+"dystrybucji (to jest wszystkim wersjom pakietów wymienionych w pewnym pliku "
+"<filename>Release</filename>) lub wszystkim wersjom pakietów pochodzących ze "
+"strony internetowej identyfikowanej przez pełną nazwę domenową strony."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"This general-form entry in the APT preferences file applies only to groups "
+"of packages. For example, the following record assigns a high priority to "
+"all package versions available from the local site."
+msgstr ""
+"Ten wpis w postaci ogólnej w pliku preferencji APT ma zastosowanie tylko do "
+"grup pakietów. Na przykład następujący rekord przypisuje wysoki priorytet "
+"wszystkim wersjom pakietów dostępnych na lokalnym komputerze."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A note of caution: the keyword used here is \"<literal>origin</literal>\" "
+"which can be used to match a hostname. The following record will assign a "
+"high priority to all versions available from the server identified by the "
+"hostname \"ftp.de.debian.org\""
+msgstr ""
+"Uwaga: słowem kluczowym używanym tutaj jest \"<literal>origin</literal>\", "
+"które może zostać użyte do dopasowania nazwy komputera. Następujący rekord "
+"ustawi wysoki priorytet wszystkim wersjom dostępnym na serwerze "
+"identyfikowanym przez nazwÄ™ komputera \"ftp.de.debian.org\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"This should <emphasis>not</emphasis> be confused with the Origin of a "
+"distribution as specified in a <filename>Release</filename> file. What "
+"follows the \"Origin:\" tag in a <filename>Release</filename> file is not an "
+"Internet address but an author or vendor name, such as \"Debian\" or \"Ximian"
+"\"."
+msgstr ""
+"<emphasis>Nie</emphasis> należy tego mylić z polem <literal>Origin</literal> "
+"podanym w pliku <filename>Release</filename>. Wartością pola "
+"<literal>Origin</literal> w pliku <filename>Release</filename> jest nie "
+"adres internetowy, ale nazwa autora lub dystrybutora, taka jak \"Debian\" "
+"lub \"Ximian\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a low priority to all package versions "
+"belonging to any distribution whose Archive name is \"<literal>unstable</"
+"literal>\"."
+msgstr ""
+"Następujący rekord przypisuje niski priorytet wszystkim wersjom pakietów "
+"należących do jakiejkolwiek dystrybucji, której nazwą archiwum jest "
+"\"<literal>unstable</literal>\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any distribution whose Codename is \"<literal>&debian-testing-"
+"codename;</literal>\"."
+msgstr ""
+"Następujący rekord przypisuje niski priorytet wszystkim wersjom pakietów "
+"należących do jakiejkolwiek dystrybucji, której nazwą kodową jest "
+"\"<literal>&debian-testing-codename;</literal>\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+msgstr ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any release whose Archive name is \"<literal>stable</literal>\" "
+"and whose release Version number is \"<literal>&debian-stable-version;</"
+"literal>\"."
+msgstr ""
+"Następujący rekord przypisuje wysoki priorytet wszystkim wersjom pakietów "
+"należącym do jakiegokolwiek wydania, którego pole <literal>Archive</literal> "
+"(zawierające nazwę archiwum) jest równe \"<literal>stable</literal>\", a "
+"pole <literal>Version</literal> (numer wersji wydania) wynosi "
+"\"<literal>&debian-stable-version;</literal>\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The effect of the comma operator is similar to an \"and\" in logic: All "
+"conditions must be satisfied for the pin to match. There is one exception: "
+"For any type of condition (such as two \"a\" conditions), only the last such "
+"condition is checked."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Regular expressions and &glob; syntax"
+msgstr "Składnia wyrażeń regularnych i &glob;"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"APT also supports pinning by &glob; expressions, and regular expressions "
+"surrounded by slashes. For example, the following example assigns the "
+"priority 500 to all packages from experimental where the name starts with "
+"gnome (as a &glob;-like expression) or contains the word kde (as a POSIX "
+"extended regular expression surrounded by slashes)."
+msgstr ""
+"APT także wspiera dopasowywanie przy użyciu wzorców &glob; i wyrażeń "
+"regularnych otoczonych znakami /. Następujący przykład ustawia priorytet 500 "
+"wszystkim pakietom z dystrybucji <literal>experimental</literal>, których "
+"nazwa zaczyna siÄ™ od <literal>gnome</literal> (jako wzorzec &glob;) lub "
+"zawiera słowo <literal>kde</literal> (jako rozszerzone wyrażenie regularne "
+"POSIX otoczone ukośnikami)."
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+msgstr ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The rule for those expressions is that they can occur anywhere where a "
+"string can occur. Thus, the following pin assigns the priority 990 to all "
+"packages from a release starting with &ubuntu-codename;."
+msgstr ""
+"Wyrażenia te mogą wystąpić wszędzie, gdzie tylko może wystąpić łańcuch "
+"znaków. Dlatego następujący przykład przypisuje priorytet 990 wszystkim "
+"pakietom z wydania o nazwie zaczynajÄ…cej siÄ™ od &ubuntu-codename;."
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+msgstr ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If a regular expression occurs in a <literal>Package</literal> field, the "
+"behavior is the same as if this regular expression were replaced with a list "
+"of all package names it matches. It is undecided whether this will change in "
+"the future; thus you should always list wild-card pins first, so later "
+"specific pins override it. The pattern \"<literal>*</literal>\" in a "
+"Package field is not considered a &glob; expression in itself."
+msgstr ""
+"Jeśli wyrażenie regularne występuje w polu <literal>Package</literal>, to "
+"zachowanie jest takie samo, jakby to wyrażenie regularne zostało zastąpione "
+"listą wszystkich pakietów, których nazwy pasują do tego wyrażenia "
+"regularnego. Nie wiadomo jeszcze, czy to się nie zmieni w przyszłości, "
+"dlatego powinno się zawsze umieszczać preferencje zawierające wzorce "
+"pakietów na początku, tak żeby mogły zostać nadpisane przez preferencje "
+"dotyczące specyficznych pakietów. Wzorzec \"<literal>*</literal>\" w polu "
+"<literal>Package</literal> nie jest uznawany za wyrażenie &glob;."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "How APT Interprets Priorities"
+msgstr "Jak APT interpretuje priorytety"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Priorities (P) assigned in the APT preferences file must be positive or "
+"negative integers. They are interpreted as follows (roughly speaking):"
+msgstr ""
+"Priorytety (P) przypisane w pliku preferencji APT muszą być liczbami "
+"całkowitymi dodatnimi lub ujemnymi. Są interpretowane następująco (ogólnie "
+"rzecz biorÄ…c):"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P &gt;= 1000"
+msgstr "P &gt;= 1000"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed even if this constitutes a downgrade of the "
+"package"
+msgstr ""
+"powoduje, że wersja zostanie zainstalowana, nawet jeśli oznacza to "
+"zastąpienie pakietu jego wcześniejszą wersją."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "990 &lt;= P &lt; 1000"
+msgstr "990 &lt;= P &lt; 1000"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed even if it does not come from the target "
+"release, unless the installed version is more recent"
+msgstr ""
+"powoduje, że wersja zostanie zainstalowana, nawet jeśli nie pochodzi z "
+"wydania docelowego, chyba że zainstalowana wersja jest nowsza."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "500 &lt;= P &lt; 990"
+msgstr "500 &lt;= P &lt; 990"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to the target release or the installed version is more recent"
+msgstr ""
+"powoduje, że wersja zostanie zainstalowana, jeśli nie ma żadnej dostępnej "
+"wersji należącej do wydania docelowego lub gdy nowsza wersja już jest "
+"zainstalowana."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "100 &lt;= P &lt; 500"
+msgstr "100 &lt;= P &lt; 500"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to some other distribution or the installed version is more recent"
+msgstr ""
+"powoduje, że wersja zostanie zainstalowana, o ile nie jest dostępna wersja "
+"należąca do innej dystrybucji lub nowsza wersja jest zainstalowana"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "0 &lt; P &lt; 100"
+msgstr "0 &lt; P &lt; 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed only if there is no installed version of "
+"the package"
+msgstr ""
+"powoduje, że wersja zostanie zainstalowana tylko wtedy, jeżeli żadna wersja "
+"pakietu nie jest jeszcze zainstalowana"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P &lt; 0"
+msgstr "P &lt; 0"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "prevents the version from being installed"
+msgstr "zapobiega instalowaniu wersji"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P = 0"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "has undefined behaviour, do not use it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+#| msgid ""
+#| "If any specific-form records match an available package version then the "
+#| "first such record determines the priority of the package version. "
+#| "Failing that, if any general-form records match an available package "
+#| "version then the first such record determines the priority of the package "
+#| "version."
+msgid ""
+"The first specific-form record matching an available package version "
+"determines the priority of the package version. Failing that, the priority "
+"of the package is defined as the maximum of all priorities defined by "
+"generic-form records matching the version. Records defined using patterns "
+"in the Pin field other than \"*\" are treated like specific-form records."
+msgstr ""
+"Jeśli jakiekolwiek rekordy w postaci szczegółowej pasują do dostępnej wersji "
+"pakietu, to priorytet tej wersji jest określany na podstawie pierwszego z "
+"takich rekordów. W przeciwnym razie, jeśli jakiekolwiek rekordy w postaci "
+"ogólnej pasują do dostępnej wersji pakietu, to priorytet tej wersji jest "
+"określany na podstawie pierwszego z takich rekordów."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"For example, suppose the APT preferences file contains the three records "
+"presented earlier:"
+msgstr ""
+"Na przykład, załóżmy, że plik preferencji APT zawiera trzy pokazane "
+"wcześniej rekordy:"
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid "Then:"
+msgstr "Wtedy:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The most recent available version of the <literal>perl</literal> package "
+"will be installed, so long as that version's version number begins with "
+"\"<literal>&good-perl;</literal>\". If <emphasis>any</emphasis> &good-perl;"
+"* version of <literal>perl</literal> is available and the installed version "
+"is &bad-perl;*, then <literal>perl</literal> will be downgraded."
+msgstr ""
+"Zostanie zainstalowana najnowsza dostępna wersja pakietu <literal>perl</"
+"literal>, jeśli tylko numer tej wersji zaczyna się od \"<literal>&good-perl;"
+"</literal>\". Jeśli <emphasis>jakakolwiek</emphasis> wersja &good-perl;* "
+"jest dostępna, ale zainstalowana jest już wersja &bad-perl;*, to pakiet "
+"<literal>perl</literal> zostanie zastąpiony tą dostępną wcześniejszą wersją "
+"&good-perl;*."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A version of any package other than <literal>perl</literal> that is "
+"available from the local system has priority over other versions, even "
+"versions belonging to the target release."
+msgstr ""
+"Wersja jakiegokolwiek pakietu innego niż <literal>perl</literal> dostępna na "
+"lokalnym systemie ma wyższy priorytet niż jakakolwiek inna wersja tego "
+"pakietu, włączając w to wersję należącą do wydania docelowego."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A version of a package whose origin is not the local system but some other "
+"site listed in &sources-list; and which belongs to an <literal>unstable</"
+"literal> distribution is only installed if it is selected for installation "
+"and no version of the package is already installed."
+msgstr ""
+"Wersja pakietu pochodzÄ…ca nie z lokalnego systemu, ale z jakiegoÅ› innego "
+"źródła wymienionego w &sources-list; i należąca do dystrybucji "
+"<literal>unstable</literal> będzie zainstalowana tylko wtedy, gdy zostanie "
+"wybrana (przez użytkownika) do instalacji i żadna inna wersja tego pakietu "
+"nie jest jeszcze zainstalowana."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Determination of Package Version and Distribution Properties"
+msgstr "Określanie wersji pakietu i właściwości dystrybucji"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The locations listed in the &sources-list; file should provide "
+"<filename>Packages</filename> and <filename>Release</filename> files to "
+"describe the packages available at that location."
+msgstr ""
+"Lokalizacje wymienione w pliku &sources-list; powinny zawierać pliki "
+"<filename>Packages</filename> i <filename>Release</filename> opisujÄ…ce "
+"pakiety dostępne w danej lokalizacji."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The <filename>Packages</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable>/"
+"<replaceable>component</replaceable>/<replaceable>arch</replaceable></"
+"filename>: for example, <filename>.../dists/stable/main/binary-i386/"
+"Packages</filename>. It consists of a series of multi-line records, one for "
+"each package available in that directory. Only two lines in each record are "
+"relevant for setting APT priorities:"
+msgstr ""
+"Plik <filename>Packages</filename> zazwyczaj znajduje siÄ™ w "
+"katalogu<filename>.../dists/<replaceable>nazwa-dystrybucji</replaceable>/"
+"<replaceable>komponent</replaceable>/<replaceable>architektura</"
+"replaceable></filename>: na przykład <filename>.../dists/stable/main/binary-"
+"i386/Packages</filename>. Składa się z serii wieloliniowych rekordów, po "
+"jednym na każdy pakiet dostępny w tym katalogu. Podczas ustawiania "
+"priorytetów APT bierze pod uwagę tylko dwie linie z każdego rekordu:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Package:</literal> line"
+msgstr "linia <literal>Package:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "gives the package name"
+msgstr "podaje nazwÄ™ pakietu"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Version:</literal> line"
+msgstr "linia <literal>Version:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "gives the version number for the named package"
+msgstr "podaje numer wersji danego pakietu"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The <filename>Release</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable></filename>: for "
+"example, <filename>.../dists/stable/Release</filename>, or <filename>.../"
+"dists/&debian-stable-codename;/Release</filename>. It consists of a single "
+"multi-line record which applies to <emphasis>all</emphasis> of the packages "
+"in the directory tree below its parent. Unlike the <filename>Packages</"
+"filename> file, nearly all of the lines in a <filename>Release</filename> "
+"file are relevant for setting APT priorities:"
+msgstr ""
+"Plik <filename>Release</filename> znajduje siÄ™ zazwyczaj w "
+"katalogu<filename>.../dists/<replaceable>nazwa-dystrybucji</replaceable></"
+"filename>: na przykład <filename>.../dists/stable/Release</filename> lub "
+"<filename>.../dists/&debian-stable-codename;/Release</filename>. Składa się "
+"z jednego wieloliniowego rekordu, który odnosi się do <emphasis>wszystkich</"
+"emphasis> pakietów znajdujących się w drzewie katalogów o korzeniu w "
+"katalogu, w którym znajduje się opisywany plik. W przeciwieństwie do pliku "
+"<filename>Packages</filename>, prawie wszystkie linie z pliku "
+"<filename>Release</filename> sÄ… brane pod uwagÄ™ podczas ustawiania "
+"priorytetów APT:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line"
+msgstr "linia <literal>Archive:</literal> lub <literal>Suite:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the archive to which all the packages in the directory tree belong. "
+"For example, the line \"Archive: stable\" or \"Suite: stable\" specifies "
+"that all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file are in a <literal>stable</literal> "
+"archive. Specifying this value in the APT preferences file would require "
+"the line:"
+msgstr ""
+"nazywa archiwum, do którego należą wszystkie pakiety znajdujące się w "
+"drzewie katalogów. Na przykład linia \"Archive: stable\" lub \"Suite: stable"
+"\" mówi, że wszystkie pakiety w drzewie katalogów poniżej katalogu "
+"nadrzędnego pliku <filename>Release</filename> należą do archiwum "
+"<literal>stable</literal>. Wartość tę można podać w pliku preferencji APT w "
+"następujący sposób:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release a=stable\n"
+msgstr "Pin: release a=stable\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Codename:</literal> line"
+msgstr "linia <literal>Codename:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the codename to which all the packages in the directory tree belong. "
+"For example, the line \"Codename: &debian-testing-codename;\" specifies that "
+"all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file belong to a version named <literal>&debian-"
+"testing-codename;</literal>. Specifying this value in the APT preferences "
+"file would require the line:"
+msgstr ""
+"nazwa kodowa dystrybucji, do której należą wszystkie pakiety w drzewie "
+"katalogów. Na przykład linia \"Codename: &debian-testing-codename;\" mówi, "
+"że wszystkie pakiety w drzewie katalogów poniżej katalogu nadrzędnego pliku "
+"<filename>Release</filename> należą do wersji nazwanej <literal>&debian-"
+"testing-codename;</literal>. Wartość tę można podać w pliku preferencji APT "
+"w następujący sposób:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release n=&debian-testing-codename;\n"
+msgstr "Pin: release n=&debian-testing-codename;\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the release version. For example, the packages in the tree might "
+"belong to Debian release version &debian-stable-version;. Note that there "
+"is normally no version number for the <literal>testing</literal> and "
+"<literal>unstable</literal> distributions because they have not been "
+"released yet. Specifying this in the APT preferences file would require one "
+"of the following lines."
+msgstr ""
+"określa wersję wydania. Na przykład pakiety w drzewie katalogów mogłyby "
+"należeć do wersji &debian-stable-version; dystrybucji Debiana. Proszę "
+"zauważyć, że zazwyczaj dystrybucje <literal>testing</literal> i "
+"<literal>unstable</literal> nie mają przypisanego numeru wersji, ponieważ "
+"nie są one oficjalnie wydawane. Wersję wydania można podać w pliku "
+"preferencji APT w następujący sposób:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+msgstr ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Component:</literal> line"
+msgstr "linia <literal>Component:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the licensing component associated with the packages in the directory "
+"tree of the <filename>Release</filename> file. For example, the line "
+"\"Component: main\" specifies that all the packages in the directory tree "
+"are from the <literal>main</literal> component, which entails that they are "
+"licensed under terms listed in the Debian Free Software Guidelines. "
+"Specifying this component in the APT preferences file would require the line:"
+msgstr ""
+"określa komponent licencji powiązany z pakietami w drzewie katalogów pliku "
+"<filename>Release</filename>. Na przykład linia \"Component: main\" mówi, że "
+"wszystkie pakiety w drzewie katalogów pochodzą z komponentu <literal>main</"
+"literal>, co oznacza, że wszystkie są licencjonowane w 100% zgodnie z "
+"\"Wytycznymi Debiana dotyczÄ…cymi Wolnego Oprogramowania\" (\"Debian Free "
+"Software Guidelines\"). Komponent można podać w pliku preferencji APT w "
+"następujący sposób:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release c=main\n"
+msgstr "Pin: release c=main\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Origin:</literal> line"
+msgstr "linia <literal>Origin:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the originator of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is <literal>Debian</"
+"literal>. Specifying this origin in the APT preferences file would require "
+"the line:"
+msgstr ""
+"określa twórcę pakietów w drzewie katalogów pliku <filename>Release</"
+"filename>. Najczęściej jest to <literal>Debian</literal>. Twórcę pakietów "
+"można podać w pliku preferencji APT w następujący sposób:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release o=Debian\n"
+msgstr "Pin: release o=Debian\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Label:</literal> line"
+msgstr "linia <literal>Label:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the label of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is <literal>Debian</"
+"literal>. Specifying this label in the APT preferences file would require "
+"the line:"
+msgstr ""
+"określa etykietę pakietów w drzewie katalogów pliku <filename>Release</"
+"filename>. Najczęściej jest to <literal>Debian</literal>. Etykietę tę można "
+"podać w pliku preferencji APT w następujący sposób:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release l=Debian\n"
+msgstr "Pin: release l=Debian\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"All of the <filename>Packages</filename> and <filename>Release</filename> "
+"files retrieved from locations listed in the &sources-list; file are stored "
+"in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
+"named by the variable <literal>Dir::State::Lists</literal> in the "
+"<filename>apt.conf</filename> file. For example, the file <filename>debian."
+"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
+"contains the <filename>Release</filename> file retrieved from the site "
+"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
+"architecture files from the <literal>contrib</literal> component of the "
+"<literal>unstable</literal> distribution."
+msgstr ""
+"Wszystkie pliki <filename>Packages</filename> i <filename>Release</filename> "
+"pobierane z lokalizacji podanych w pliku &sources-list; sÄ… przechowywane w "
+"katalogu <filename>/var/lib/apt/lists</filename> lub w pliku o nazwie "
+"będącej wartością zmiennej <literal>Dir::State::Lists</literal> z pliku "
+"<filename>apt.conf</filename>. Na przykład plik o nazwie <filename>debian."
+"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
+"zawiera plik <filename>Release</filename> pobrany z komputera "
+"<literal>debian.lcs.mit.edu</literal> dla plików komponentu "
+"<literal>contrib</literal> architektury <literal>binary-i386</literal> "
+"dystrybucji <literal>unstable</literal> ."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Optional Lines in an APT Preferences Record"
+msgstr "Opcjonalne linie w rekordzie preferencji APT"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Each record in the APT preferences file can optionally begin with one or "
+"more lines beginning with the word <literal>Explanation:</literal>. This "
+"provides a place for comments."
+msgstr ""
+"Każdy rekord w pliku preferencji APT może opcjonalnie zaczynać się od jednej "
+"lub większej liczby linii zaczynających się od wyrazu <literal>Explanation:</"
+"literal> (tj. objaśnienie). Pozwala to na dodawanie komentarzy do rekordów."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking Stable"
+msgstr "Åšledzenie dystrybucji stabilnej"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated\n"
+"Explanation: package versions other than those in the stable distro\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Explanation: Odinstaluj lub nie instaluj wersji pakietów pochodzących z Debiana\n"
+"Explanation: innych niż te w dystrybucji stabilnej\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"<literal>stable</literal> distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> "
+"distributions. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Następujący plik preferencji APT spowoduje przypisanie priorytetu większego "
+"niż domyślny (500) wszystkim wersjom pakietu należącym do dystrybucji "
+"<literal>stable</literal> i zakazująco niskiego priorytetu wersjom pakietów "
+"należącym do innych dystrybucji <literal>Debian</literal>a. <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"apt-get install <replaceable>package-name</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+msgstr ""
+"apt-get install <replaceable>nazwa-pakietu</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>stable</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+"Z odpowiednim plikiem &sources-list; i z powyższym plikiem preferencji, "
+"każde z następujących poleceń spowoduje, że APT zaktualizuje pakiety do "
+"najnowszych wersji z dystrybucji <literal>stable </literal>.<placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/testing\n"
+msgstr "apt-get install <replaceable>pakiet</replaceable>/testing\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>testing</literal> distribution; the package "
+"will not be upgraded again unless this command is given again. <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Następujące polecenie spowoduje, że APT zaktualizuje podany pakiet do "
+"najnowszej wersji z dystrybucji <literal>testing</literal>. Pakiet nie "
+"będzie aktualizowany do czasu ponownego wydania tego samego polecenia. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking Testing or Unstable"
+msgstr "Åšledzenie dystrybucji testowej lub niestabilnej"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a high priority "
+"to package versions from the <literal>testing</literal> distribution, a "
+"lower priority to package versions from the <literal>unstable</literal> "
+"distribution, and a prohibitively low priority to package versions from "
+"other <literal>Debian</literal> distributions. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Następujący plik preferencji APT spowoduje przypisanie wysokiego priorytetu "
+"wersjom pakietów z dystrybucji <literal>testing</literal>, niskiego "
+"priorytetu wersjom pakietów z dystrybucji <literal>unstable</literal> oraz "
+"zakazująco niskiego priorytetu wersjom pakietów należącym do innych "
+"dystrybucji <literal>Debian</literal>a. <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>testing</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+"Z odpowiednim plikiem &sources-list; i z powyższym plikiem preferencji, "
+"każde z następujących poleceń spowoduje, że APT zaktualizuje pakiety do "
+"najnowszych wersji z dystrybucji <literal>testing</literal>.<placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/unstable\n"
+msgstr "apt-get install <replaceable>pakiet</replaceable>/unstable\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>unstable</literal> distribution. "
+"Thereafter, <command>apt-get upgrade</command> will upgrade the package to "
+"the most recent <literal>testing</literal> version if that is more recent "
+"than the installed version, otherwise, to the most recent <literal>unstable</"
+"literal> version if that is more recent than the installed version. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Następujące polecenie spowoduje, że APT zaktualizuje podany pakiet do "
+"najnowszej wersji z dystrybucji <literal>unstable</literal>. Od tej pory "
+"<command>apt-get upgrade</command> będzie aktualizował pakiet do najnowszej "
+"wersji z dystrybucji <literal>testing</literal>, jeśli ta wersja będzie "
+"nowsza od wersji zainstalowanej, lub w przeciwnym wypadku - do najnowszej "
+"wersji z dystrybucji <literal>unstable</literal>, jeśli ta wersja będzie "
+"nowsza od wersji zainstalowanej. <placeholder type=\"programlisting\" id="
+"\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking the evolution of a codename release"
+msgstr "Åšledzenie ewolucji wydania o danej nazwie kodowej"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated package versions\n"
+"Explanation: other than those in the distribution codenamed with &debian-testing-codename; or sid\n"
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+"\n"
+"Explanation: Debian unstable is always codenamed with sid\n"
+"Package: *\n"
+"Pin: release n=sid\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Explanation: Odinstaluj lub nie instaluj wersji pakietów pochodzących z Debiana\n"
+"Explanation: innych niż te w dystrybucji &debian-testing-codename; lub sid\n"
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+"\n"
+"Explanation: Debian unstable jest zawsze nazwany sid\n"
+"Package: *\n"
+"Pin: release n=sid\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"specified codename of a distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> distributions, "
+"codenames and archives. Note that with this APT preference APT will follow "
+"the migration of a release from the archive <literal>testing</literal> to "
+"<literal>stable</literal> and later <literal>oldstable</literal>. If you "
+"want to follow for example the progress in <literal>testing</literal> "
+"notwithstanding the codename changes you should use the example "
+"configurations above. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Następujący plik preferencji APT spowoduje przypisanie priorytetu większego "
+"niż domyślny (500) wszystkim wersjom pakietu należącym do dystrybucji o "
+"podanej nazwie kodowej oraz zakazująco niskiego priorytetu wersjom pakietów "
+"należącym do innych dystrybucji <literal>Debian</literal>a, nazw kodowych i "
+"archiwów. Proszę zauważyć, że z tym plikiem preferencji APT będzie śledziło "
+"migracjÄ™ wydania z archiwum <literal>testing</literal> przez "
+"<literal>stable</literal> aż do <literal>oldstable</literal>. Aby śledzić "
+"postępy na przykład w dystrybucji <literal>testing</literal> niezależnie od "
+"nazwy kodowej tej dystrybucji, należy użyć jednej z zaprezentowanych "
+"powyżej przykładowych konfiguracji. <placeholder type=\"programlisting\" id="
+"\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest version(s) in "
+"the release codenamed with <literal>&debian-testing-codename;</literal>. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Z odpowiednim plikiem &sources-list; i z powyższym plikiem preferencji, "
+"każde z następujących poleceń spowoduje, że APT zaktualizuje pakiety do "
+"najnowszych wersji z wydania nazwanego <literal>&debian-testing-codename;</"
+"literal>. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/sid\n"
+msgstr "apt-get install <replaceable>pakiet</replaceable>/sid\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>sid</literal> distribution. Thereafter, "
+"<command>apt-get upgrade</command> will upgrade the package to the most "
+"recent <literal>&debian-testing-codename;</literal> version if that is more "
+"recent than the installed version, otherwise, to the most recent "
+"<literal>sid</literal> version if that is more recent than the installed "
+"version. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Następujące polecenie spowoduje, że APT zaktualizuje podany pakiet do "
+"najnowszej wersji z dystrybucji <literal>sid</literal>. Od tej pory "
+"<command>apt-get upgrade</command> będzie aktualizował pakiet do najnowszej "
+"wersji z dystrybucji <literal>&debian-testing-codename;</literal>, jeśli ta "
+"wersja będzie nowsza od wersji zainstalowanej, lub w przeciwnym wypadku - do "
+"najnowszej wersji z dystrybucji <literal>sid</literal>, jeśli ta wersja "
+"będzie nowsza od wersji zainstalowanej. <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: sources.list.5.xml
+msgid "List of configured APT data sources"
+msgstr "Lista skonfigurowanych źródeł danych APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "The source list <filename>/etc/apt/sources.list</filename> is designed to "
+#| "support any number of active sources and a variety of source media. The "
+#| "file lists one source per line, with the most preferred source listed "
+#| "first. The information available from the configured sources is acquired "
+#| "by <command>apt-get update</command> (or by an equivalent command from "
+#| "another APT front-end)."
+msgid ""
+"The source list <filename>/etc/apt/sources.list</filename> and the files "
+"contained in <filename>/etc/apt/sources.list.d/</filename> are designed to "
+"support any number of active sources and a variety of source media. The "
+"files list one source per line (one-line style) or contain multiline stanzas "
+"defining one or more sources per stanza (deb822 style), with the most "
+"preferred source listed first (in case a single version is available from "
+"more than one source). The information available from the configured sources "
+"is acquired by <command>apt-get update</command> (or by an equivalent "
+"command from another APT front-end)."
+msgstr ""
+"Plik źródeł <filename>/etc/apt/sources.list</filename> został zaprojektowany "
+"tak, by obsłużyć dowolną liczbę aktywnych źródeł i różne nośniki źródeł. W "
+"każdej linii jest wymienione jedno źródło, linie są posortowane według "
+"preferencji źródeł, te najbardziej preferowane wymienione są na początku "
+"pliku. Informacje dostępne w skonfigurowanych źródłach są pobierane przez "
+"<command>apt-get update</command> (lub przez podobne polecenie innego "
+"programu użytkowego będącego interfejsem do systemu APT)."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "sources.list.d"
+msgstr "sources.list.d"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "The <filename>/etc/apt/sources.list.d</filename> directory provides a way "
+#| "to add sources.list entries in separate files. The format is the same as "
+#| "for the regular <filename>sources.list</filename> file. File names need "
+#| "to end with <filename>.list</filename> and may only contain letters (a-z "
+#| "and A-Z), digits (0-9), underscore (_), hyphen (-) and period (.) "
+#| "characters. Otherwise APT will print a notice that it has ignored a "
+#| "file, unless that file matches a pattern in the <literal>Dir::Ignore-"
+#| "Files-Silently</literal> configuration list - in which case it will be "
+#| "silently ignored."
+msgid ""
+"The <filename>/etc/apt/sources.list.d</filename> directory provides a way to "
+"add sources.list entries in separate files. Two different file formats are "
+"allowed as described in the next two sections. Filenames need to have "
+"either the extension <filename>.list</filename> or <filename>.sources</"
+"filename> depending on the contained format. The filenames may only contain "
+"letters (a-z and A-Z), digits (0-9), underscore (_), hyphen (-) and period "
+"(.) characters. Otherwise APT will print a notice that it has ignored a "
+"file, unless that file matches a pattern in the <literal>Dir::Ignore-Files-"
+"Silently</literal> configuration list - in which case it will be silently "
+"ignored."
+msgstr ""
+"Katalog <filename>/etc/apt/sources.list.d</filename> umożliwia podzielenie "
+"pliku źródeł na osobne pliki. Format jest dokładnie taki sam, jak w "
+"przypadku zwykłego pliku <filename>sources.list</filename>. Nazwy plików w "
+"tym katalogu muszą się kończyć rozszerzeniem <filename>.list</filename> i "
+"mogą składać się tylko z liter (a-z i A-Z), cyfr (0-9), znaku podkreślenia "
+"(\"_\"), pauzy (\"-\") i kropki (\".\"). W przeciwnym wypadku APT zignoruje "
+"taki plik i jeśli nazwa pliku nie pasuje do wzorca podanego w liście "
+"zmiennych konfiguracji <literal>Dir::Ignore-Files-Silently</literal>, to "
+"wypisze odpowiedni komunikat."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "One-Line-Style Format"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Files in this format have the extension <filename>.list</filename>. Each "
+"line specifying a source starts with a type (e.g. <literal>deb-src</"
+"literal>) followed by options and arguments for this type. Individual "
+"entries cannot be continued onto a following line. Empty lines are ignored, "
+"and a <literal>#</literal> character anywhere on a line marks the remainder "
+"of that line as a comment. Consequently an entry can be disabled by "
+"commenting out the entire line. If options should be provided they are "
+"separated by spaces and all of them together are enclosed by square brackets "
+"(<literal>[]</literal>) included in the line after the type separated from "
+"it with a space. If an option allows multiple values these are separated "
+"from each other with a comma (<literal>,</literal>). An option name is "
+"separated from its value(s) by an equals sign (<literal>=</literal>). "
+"Multivalue options also have <literal>-=</literal> and <literal>+=</literal> "
+"as separators, which instead of replacing the default with the given "
+"value(s) modify the default value(s) to remove or include the given values."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This is the traditional format and supported by all apt versions. Note that "
+"not all options as described below are supported by all apt versions. Note "
+"also that some older applications parsing this format on their own might not "
+"expect to encounter options as they were uncommon before the introduction of "
+"multi-architecture support."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "deb822-Style Format"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Files in this format have the extension <filename>.sources</filename>. The "
+"format is similar in syntax to other files used by Debian and its "
+"derivatives, such as the metadata files that apt will download from the "
+"configured sources or the <filename>debian/control</filename> file in a "
+"Debian source package. Individual entries are separated by an empty line; "
+"additional empty lines are ignored, and a <literal>#</literal> character at "
+"the start of the line marks the entire line as a comment. An entry can hence "
+"be disabled by commenting out each line belonging to the stanza, but it is "
+"usually easier to add the field \"Enabled: no\" to the stanza to disable the "
+"entry. Removing the field or setting it to yes reenables it. Options have "
+"the same syntax as every other field: A fieldname separated by a colon "
+"(<literal>:</literal>) and optionally spaces from its value(s). Note "
+"especially that multiple values are separated by spaces, not by commas as in "
+"the one-line format. Multivalue fields like <literal>Architectures</literal> "
+"also have <literal>Architectures-Add</literal> and <literal>Architectures-"
+"Remove</literal> to modify the default value rather than replacing it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This is a new format supported by apt itself since version 1.1. Previous "
+"versions ignore such files with a notice message as described earlier. It "
+"is intended to make this format gradually the default format, deprecating "
+"the previously described one-line-style format, as it is easier to create, "
+"extend and modify for humans and machines alike especially if a lot of "
+"sources and/or options are involved. Developers who are working with and/or "
+"parsing apt sources are highly encouraged to add support for this format and "
+"to contact the APT team to coordinate and share this work. Users can freely "
+"adopt this format already, but may encounter problems with software not "
+"supporting the format yet."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid "The deb and deb-src types"
+msgid "The deb and deb-src Types: General Format"
+msgstr "Typy deb i deb-src"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "The <literal>deb</literal> type references a typical two-level Debian "
+#| "archive, <filename>distribution/component</filename>. The "
+#| "<literal>distribution</literal> is generally an archive name like "
+#| "<literal>stable</literal> or <literal>testing</literal> or a codename "
+#| "like <literal>&debian-stable-codename;</literal> or <literal>&debian-"
+#| "testing-codename;</literal> while component is one of <literal>main</"
+#| "literal>, <literal>contrib</literal> or <literal>non-free</literal>. The "
+#| "<literal>deb-src</literal> type references a Debian distribution's source "
+#| "code in the same form as the <literal>deb</literal> type. A <literal>deb-"
+#| "src</literal> line is required to fetch source indexes."
+msgid ""
+"The <literal>deb</literal> type references a typical two-level Debian "
+"archive, <filename>distribution/component</filename>. The "
+"<literal>distribution</literal> is generally a suite name like "
+"<literal>stable</literal> or <literal>testing</literal> or a codename like "
+"<literal>&debian-stable-codename;</literal> or <literal>&debian-testing-"
+"codename;</literal> while component is one of <literal>main</literal>, "
+"<literal>contrib</literal> or <literal>non-free</literal>. The <literal>deb-"
+"src</literal> type references a Debian distribution's source code in the "
+"same form as the <literal>deb</literal> type. A <literal>deb-src</literal> "
+"line is required to fetch source indexes."
+msgstr ""
+"Typ <literal>deb</literal> opisuje typowe dwupoziomowe archiwum Debiana: "
+"<filename>dystrybucja/komponent</filename>. Zazwyczaj <literal>dystrybucja</"
+"literal> jest nazwÄ… archiwum, takÄ… jak: <literal>stable</literal> lub "
+"<literal>testing</literal>, albo nazwÄ… kodowÄ…, takÄ… jak: <literal>&debian-"
+"stable-codename;</literal> lub <literal>&debian-testing-codename;</literal>, "
+"a <filename>komponent</filename> jest jednym z: <literal>main</literal>, "
+"<literal>contrib</literal> lub <literal>non-free</literal>. Typ <literal>deb-"
+"src</literal> opisuje lokalizacje kodów źródłowych dystrybucji Debiana i "
+"używa takiego samego formatu jak typ <literal>deb</literal>. Linia "
+"<literal>deb-src</literal> jest wymagana do pobierania indeksów kodów "
+"źródłowych."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "The format for a <filename>sources.list</filename> entry using the "
+#| "<literal>deb</literal> and <literal>deb-src</literal> types is:"
+msgid ""
+"The format for two one-line-style entries using the <literal>deb</literal> "
+"and <literal>deb-src</literal> types is:"
+msgstr ""
+"Formaty wpisu w <filename>sources.list</filename> używającego typów "
+"<literal>deb</literal> i <literal>deb-src</literal> jest następujący:"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]\n"
+"deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+" Types: deb deb-src\n"
+" URIs: uri\n"
+" Suites: suite\n"
+" Components: [component1] [component2] [...]\n"
+" option1: value1\n"
+" option2: value2\n"
+" "
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Alternatively the equivalent entry in deb822 style looks like this: "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "The URI for the <literal>deb</literal> type must specify the base of the "
+#| "Debian distribution, from which APT will find the information it needs. "
+#| "<literal>distribution</literal> can specify an exact path, in which case "
+#| "the components must be omitted and <literal>distribution</literal> must "
+#| "end with a slash (<literal>/</literal>). This is useful for the case when "
+#| "only a particular sub-section of the archive denoted by the URI is of "
+#| "interest. If <literal>distribution</literal> does not specify an exact "
+#| "path, at least one <literal>component</literal> must be present."
+msgid ""
+"The URI for the <literal>deb</literal> type must specify the base of the "
+"Debian distribution, from which APT will find the information it needs. "
+"<literal>suite</literal> can specify an exact path, in which case the "
+"components must be omitted and <literal>suite</literal> must end with a "
+"slash (<literal>/</literal>). This is useful for the case when only a "
+"particular sub-directory of the archive denoted by the URI is of interest. "
+"If <literal>suite</literal> does not specify an exact path, at least one "
+"<literal>component</literal> must be present."
+msgstr ""
+"URI typu <literal>deb</literal> musi podawać bazową lokalizację dystrybucji "
+"Debiana, w której APT znajdzie potrzebne informacje. <literal>Dystrybucja</"
+"literal> może być dokładną ścieżką - w takim przypadku komponenty trzeba "
+"pominąć, a <literal>dystrybucja</literal> musi się kończyć znakiem ukośnika "
+"(\"<literal>/</literal>\"). Jest to użyteczne, gdy interesuje nas szczególna "
+"pod-sekcja archiwum, podana jako URI. Jeśli <literal>dystrybucja</literal> "
+"nie podaje dokładnej ścieżki, to musi być obecny przynajmniej jeden "
+"<literal>komponent</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>distribution</literal> may also contain a variable, <literal>"
+#| "$(ARCH)</literal> which expands to the Debian architecture (such as "
+#| "<literal>amd64</literal> or <literal>armel</literal>) used on the system. "
+#| "This permits architecture-independent <filename>sources.list</filename> "
+#| "files to be used. In general this is only of interest when specifying an "
+#| "exact path, <literal>APT</literal> will automatically generate a URI with "
+#| "the current architecture otherwise."
+msgid ""
+"<literal>suite</literal> may also contain a variable, <literal>$(ARCH)</"
+"literal> which expands to the Debian architecture (such as <literal>amd64</"
+"literal> or <literal>armel</literal>) used on the system. This permits "
+"architecture-independent <filename>sources.list</filename> files to be used. "
+"In general this is only of interest when specifying an exact path; "
+"<literal>APT</literal> will automatically generate a URI with the current "
+"architecture otherwise."
+msgstr ""
+"<literal>Dystrybucja</literal> może zawierać także zmienną <literal>$(ARCH)</"
+"literal>, która zostanie rozwinięta do architektury Debiana (takiej jak "
+"<literal>amd64</literal> lub <literal>armel</literal>) używanej w systemie. "
+"Pozwala to na używanie plików <filename>sources.list</filename> niezależnych "
+"od architektury. W ogólności jest to interesujące tylko wtedy, gdy podaje "
+"się dokładną ścieżkę, w innym przypadku <literal>APT</literal> automatycznie "
+"wygeneruje URI zawierający bieżącą architekturę."
+
+#
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "Since only one distribution can be specified per line it may be necessary "
+#| "to have multiple lines for the same URI, if a subset of all available "
+#| "distributions or components at that location is desired. APT will sort "
+#| "the URI list after it has generated a complete set internally, and will "
+#| "collapse multiple references to the same Internet host, for instance, "
+#| "into a single connection, so that it does not inefficiently establish an "
+#| "FTP connection, close it, do something else, and then re-establish a "
+#| "connection to that same host. This feature is useful for accessing busy "
+#| "FTP sites with limits on the number of simultaneous anonymous users. APT "
+#| "also parallelizes connections to different hosts to more effectively deal "
+#| "with sites with low bandwidth."
+msgid ""
+"Especially in the one-line-style format since only one distribution can be "
+"specified per line it may be necessary to have multiple lines for the same "
+"URI, if a subset of all available distributions or components at that "
+"location is desired. APT will sort the URI list after it has generated a "
+"complete set internally, and will collapse multiple references to the same "
+"Internet host, for instance, into a single connection, so that it does not "
+"inefficiently establish a connection, close it, do something else, and then "
+"re-establish a connection to that same host. APT also parallelizes "
+"connections to different hosts to more effectively deal with sites with low "
+"bandwidth."
+msgstr ""
+"Ponieważ w pojedynczej linii można podać tylko jedną dystrybucję, może być "
+"potrzebne wymienienie tego samego URI w wielu liniach, jeżeli pożądany jest "
+"podzbiór wszystkich dostępnych dystrybucji lub komponentów w danej "
+"lokalizacji. APT wewnętrznie posortuje listę URI po wygenerowaniu "
+"kompletnego zbioru i użyje pojedynczego połączenia do pobrania wszystkich "
+"odniesień do tego samego zdalnego komputera, tak żeby niepotrzebnie nie "
+"nawiązywać połączenia FTP, zamykać go, robić cokolwiek innego, a potem "
+"ponownie łączyć się do tego samego zasobu. Ta cecha jest użyteczna do "
+"uzyskiwania dostępu do obciążonych serwerów FTP ograniczających liczbę "
+"jednoczesnych anonimowych połączeń. APT tworzy równoległe połączenia do "
+"różnych komputerów, tak żeby efektywnie radzić sobie z komputerami w "
+"sieciach o niskiej przepustowości łączy."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"It is important to list sources in order of preference, with the most "
+"preferred source listed first. Typically this will result in sorting by "
+"speed from fastest to slowest (CD-ROM followed by hosts on a local network, "
+"followed by distant Internet hosts, for example)."
+msgstr ""
+"Ważne jest, aby źródła pakietów były wymienione w kolejności preferencji "
+"użytkownika, zaczynając od tego najbardziej preferowanego. Zazwyczaj "
+"wynikiem tego będzie sortowanie od najszybszego do najwolniejszego (na "
+"przykład CD-ROM przed komputerami w lokalnej sieci przed odległymi "
+"komputerami w Internecie)."
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "&sourceslist-list-format;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "&sourceslist-sources-format;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"As an example, the sources for your distribution could look like this in one-"
+"line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or like "
+"this in deb822 style format: <placeholder type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid "The deb and deb-src types"
+msgid "The deb and deb-src types: Options"
+msgstr "Typy deb i deb-src"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Each source entry can have options specified to modify which source is "
+"accessed and how data is acquired from it. Format, syntax and names of the "
+"options vary between the one-line-style and deb822-style formats as "
+"described, but they both have the same options available. For simplicity we "
+"list the deb822 fieldname and provide the one-line name in brackets. "
+"Remember that besides setting multivalue options explicitly, there is also "
+"the option to modify them based on the default, but we aren't listing those "
+"names explicitly here. Unsupported options are silently ignored by all APT "
+"versions."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#| "replaceable>,…</literal> can be used to specify for which architectures "
+#| "information should be downloaded. If this option is not set all "
+#| "architectures defined by the <literal>APT::Architectures</literal> option "
+#| "will be downloaded."
+msgid ""
+"<option>Architectures</option> (<option>arch</option>) is a multivalue "
+"option defining for which architectures information should be downloaded. If "
+"this option isn't set the default is all architectures as defined by the "
+"<option>APT::Architectures</option> config option."
+msgstr ""
+"<literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+"replaceable>,…</literal> może zostać użyte do podania architektur, dla "
+"których będą pobierane informacje o pakietach. Jeśli ta opcja nie jest "
+"ustawiona, będą pobierane informacje dla wszystkich architektur określonych "
+"w opcji konfiguracji <literal>APT::Architectures</literal>."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#| "replaceable>,…</literal> can be used to specify for which architectures "
+#| "information should be downloaded. If this option is not set all "
+#| "architectures defined by the <literal>APT::Architectures</literal> option "
+#| "will be downloaded."
+msgid ""
+"<option>Languages</option> (<option>lang</option>) is a multivalue option "
+"defining for which languages information such as translated package "
+"descriptions should be downloaded. If this option isn't set the default is "
+"all languages as defined by the <option>Acquire::Languages</option> config "
+"option."
+msgstr ""
+"<literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+"replaceable>,…</literal> może zostać użyte do podania architektur, dla "
+"których będą pobierane informacje o pakietach. Jeśli ta opcja nie jest "
+"ustawiona, będą pobierane informacje dla wszystkich architektur określonych "
+"w opcji konfiguracji <literal>APT::Architectures</literal>."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Targets</option> (<option>target</option>) is a multivalue option "
+"defining which download targets apt will try to acquire from this source. If "
+"not specified, the default set is defined by the <option>Acquire::"
+"IndexTargets</option> configuration scope (targets are specified by their "
+"name in the <literal>Created-By</literal> field). Additionally, targets can "
+"be enabled or disabled by using the <literal>Identifier</literal> field as "
+"an option with a boolean value instead of using this multivalue option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>PDiffs</option> (<option>pdiffs</option>) is a yes/no value which "
+"controls if APT should try to use PDiffs to update old indexes instead of "
+"downloading the new indexes entirely. The value of this option is ignored if "
+"the repository doesn't announce the availability of PDiffs. Defaults to the "
+"value of the option with the same name for a specific index file defined in "
+"the <option>Acquire::IndexTargets</option> scope, which itself defaults to "
+"the value of configuration option <option>Acquire::PDiffs</option> which "
+"defaults to <literal>yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>By-Hash</option> (<option>by-hash</option>) can have the value "
+"<literal>yes</literal>, <literal>no</literal> or <literal>force</literal> "
+"and controls if APT should try to acquire indexes via a URI constructed from "
+"a hashsum of the expected file instead of using the well-known stable "
+"filename of the index. Using this can avoid hashsum mismatches, but requires "
+"a supporting mirror. A <literal>yes</literal> or <literal>no</literal> value "
+"activates/disables the use of this feature if this source indicates support "
+"for it, while <literal>force</literal> will enable the feature regardless of "
+"what the source indicates. Defaults to the value of the option of the same "
+"name for a specific index file defined in the <option>Acquire::IndexTargets</"
+"option> scope, which itself defaults to the value of configuration option "
+"<option>Acquire::By-Hash</option> which defaults to <literal>yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Furthermore, there are options which if set affect <emphasis>all</emphasis> "
+"sources with the same URI and Suite, so they have to be set on all such "
+"entries and can not be varied between different components. APT will try to "
+"detect and error out on such anomalies."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Allow-Insecure</option> (<option>allow-insecure</option>), "
+"<option>Allow-Weak</option> (<option>allow-weak</option>) and <option>Allow-"
+"Downgrade-To-Insecure</option> (<option>allow-downgrade-to-insecure</"
+"option>) are boolean values which all default to <literal>no</literal>. If "
+"set to <literal>yes</literal> they circumvent parts of &apt-secure; and "
+"should therefore not be used lightly!"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Trusted</option> (<option>trusted</option>) is a tri-state value "
+"which defaults to APT deciding if a source is considered trusted or if "
+"warnings should be raised before e.g. packages are installed from this "
+"source. This option can be used to override that decision. The value "
+"<literal>yes</literal> tells APT always to consider this source as trusted, "
+"even if it doesn't pass authentication checks. It disables parts of &apt-"
+"secure;, and should therefore only be used in a local and trusted context "
+"(if at all) as otherwise security is breached. The value <literal>no</"
+"literal> does the opposite, causing the source to be handled as untrusted "
+"even if the authentication checks passed successfully. The default value "
+"can't be set explicitly."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Signed-By</option> (<option>signed-by</option>) is either an "
+"absolute path to a keyring file (has to be accessible and readable for the "
+"<literal>_apt</literal> user, so ensure everyone has read-permissions on the "
+"file) or one or more fingerprints of keys either in the <filename>trusted."
+"gpg</filename> keyring or in the keyrings in the <filename>trusted.gpg.d/</"
+"filename> directory (see <command>apt-key fingerprint</command>). If the "
+"option is set, only the key(s) in this keyring or only the keys with these "
+"fingerprints are used for the &apt-secure; verification of this repository. "
+"Defaults to the value of the option with the same name if set in the "
+"previously acquired <filename>Release</filename> file. Otherwise all keys "
+"in the trusted keyrings are considered valid signers for this repository."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Check-Valid-Until</option> (<option>check-valid-until</option>) is "
+"a yes/no value which controls if APT should try to detect replay attacks. A "
+"repository creator can declare a time until which the data provided in the "
+"repository should be considered valid, and if this time is reached, but no "
+"new data is provided, the data is considered expired and an error is "
+"raised. Besides increasing security, as a malicious attacker can't send old "
+"data forever to prevent a user from upgrading to a new version, this also "
+"helps users identify mirrors which are no longer updated. However, some "
+"repositories such as historic archives are not updated any more by design, "
+"so this check can be disabled by setting this option to <literal>no</"
+"literal>. Defaults to the value of configuration option <option>Acquire::"
+"Check-Valid-Until</option> which itself defaults to <literal>yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Valid-Until-Min</option> (<option>valid-until-min</option>) and "
+"<option>Valid-Until-Max</option> (<option>valid-until-max</option>) can be "
+"used to raise or lower the time period in seconds in which the data from "
+"this repository is considered valid. -Max can be especially useful if the "
+"repository provides no Valid-Until field on its Release file to set your own "
+"value, while -Min can be used to increase the valid time on seldom updated "
+"(local) mirrors of a more frequently updated but less accessible archive "
+"(which is in the sources.list as well) instead of disabling the check "
+"entirely. Default to the value of the configuration options "
+"<option>Acquire::Min-ValidTime</option> and <option>Acquire::Max-ValidTime</"
+"option> which are both unset by default."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid "URI specification"
+msgid "URI Specification"
+msgstr "Określanie URI"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "The currently recognized URI types are:"
+msgstr "Obecnie rozpoznawane są następujące typy URI:"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The file scheme allows an arbitrary directory in the file system to be "
+"considered an archive. This is useful for NFS mounts and local mirrors or "
+"archives."
+msgstr ""
+"Schemat file pozwala używać jako archiwum dowolnego katalogu w systemie "
+"plików. Jest użyteczny dla katalogów montowanych przez NFS i lokalnych kopii "
+"archiwów."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The cdrom scheme allows APT to use a local CD-ROM drive with media swapping. "
+"Use the &apt-cdrom; program to create cdrom entries in the source list."
+msgstr ""
+"Schemat cdrom pozwala APT na użycie lokalnego dysku CD-ROM ze zmianą dysków. "
+"Prosimy używać programu &apt-cdrom; do dodawania takich wpisów w sources."
+"list."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The http scheme specifies an HTTP server for the archive. If an environment "
+"variable <envar>http_proxy</envar> is set with the format http://server:"
+"port/, the proxy server specified in <envar>http_proxy</envar> will be used. "
+"Users of authenticated HTTP/1.1 proxies may use a string of the format "
+"http://user:pass@server:port/. Note that this is an insecure method of "
+"authentication."
+msgstr ""
+"Schemat http opisuje serwer archiwum HTTP. Jeśli ustawiono zmienną "
+"środowiskową <envar>http_proxy</envar> w formacie http://serwer:port/, to "
+"APT użyje serwera proxy określonego w tej zmiennej. Użytkownicy serwerów "
+"proxy wymagających autoryzacji mogą ustawić tę zmienną na http://użytkownik:"
+"hasło@serwer:port/. Proszę zauważyć, że taki sposób autoryzacji nie jest "
+"bezpieczny."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The ftp scheme specifies an FTP server for the archive. APT's FTP behavior "
+"is highly configurable; for more information see the &apt-conf; manual page. "
+"Please note that an FTP proxy can be specified by using the "
+"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
+"HTTP proxy (HTTP proxy servers often understand FTP URLs) using this "
+"environment variable and <emphasis>only</emphasis> this environment "
+"variable. Proxies using HTTP specified in the configuration file will be "
+"ignored."
+msgstr ""
+"Schemat ftp opisuje serwer FTP archiwum. Zachowanie modułu FTP można "
+"dowolnie konfigurować, szczegóły można znaleźć na stronie podręcznika &apt-"
+"conf;. Proszę zauważyć, że można podać serwer proxy FTP, używając zmiennej "
+"środowiskowej <envar>ftp_proxy</envar>. Możliwe jest podanie serwera proxy "
+"HTTP (które to serwery często rozumieją lokalizacje zasobów FTP), używając "
+"tej i <emphasis>tylko</emphasis> tej zmiennej środowiskowej. Podane w pliku "
+"konfiguracyjnym serwery proxy używające HTTP zostaną zignorowane."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The copy scheme is identical to the file scheme except that packages are "
+"copied into the cache directory instead of used directly at their location. "
+"This is useful for people using removable media to copy files around with "
+"APT."
+msgstr ""
+"Schemat copy jest identyczny ze schematem file, z tym wyjątkiem, że pakiety "
+"nie są używane bezpośrednio z podanej lokalizacji, tylko są kopiowane do "
+"katalogu bufora. Jest to użyteczne w przypadku używania nośnika przenośnego "
+"do skopiowania plików przy użyciu APT."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
+"the files as a given user. Prior configuration of rhosts or RSA keys is "
+"recommended. The standard <command>find</command> and <command>dd</command> "
+"commands are used to perform the file transfers from the remote host."
+msgstr ""
+"Metoda rsh/ssh uruchamia RSH/SSH do połączenia się ze zdalnym komputerem i "
+"uzyskania dostępu do plików jako podany użytkownik. Dobrym pomysłem jest "
+"wcześniejsze przygotowanie kluczy RSA lub dostępu rhosts. APT używa "
+"standardowych poleceń <command>find</command> i <command>dd</command> do "
+"przetransferowania plików ze zdalnego komputera."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
+#: sources.list.5.xml
+msgid "adding more recognizable URI types"
+msgstr "dodawanie innych rozpoznawanych typów URI"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"APT can be extended with more methods shipped in other optional packages, "
+"which should follow the naming scheme <package>apt-transport-"
+"<replaceable>method</replaceable></package>. For instance, the APT team "
+"also maintains the package <package>apt-transport-https</package>, which "
+"provides access methods for HTTPS URIs with features similar to the http "
+"method. Methods for using e.g. debtorrent are also available - see &apt-"
+"transport-debtorrent;."
+msgstr ""
+"APT może być rozszerzone o więcej metod, pochodzących z innych opcjonalnych "
+"pakietów, które powinny się nazywać <package>apt-transport-"
+"<replaceable>metoda</replaceable></package>. Na przykład zespół APT opiekuje "
+"siÄ™ pakietem <package>apt-transport-https</package>, dostarczajÄ…cym metody "
+"dostępu dla URI typu HTTPS, działającej podobnie do metody HTTP. Dostępne są "
+"również inne metody pozwalające na przykład używać debtorrenta, proszę "
+"zobaczyć &apt-transport-debtorrent;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "Uses the archive stored locally (or NFS mounted) at /home/jason/debian "
+#| "for stable/main, stable/contrib, and stable/non-free."
+msgid ""
+"Uses the archive stored locally (or NFS mounted) at /home/apt/debian for "
+"stable/main, stable/contrib, and stable/non-free."
+msgstr ""
+"Użycie archiwum lokalnego (lub montowanego przez NFS) w katalogu /home/jason/"
+"debian dla zasobów stable/main, stable/contrib i stable/non-free."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, fuzzy, no-wrap
+#| msgid "deb file:/home/jason/debian stable main contrib non-free"
+msgid "deb file:/home/apt/debian stable main contrib non-free"
+msgstr "deb file:/home/jason/debian stable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, fuzzy, no-wrap
+#| msgid "deb file:/home/jason/debian stable main contrib non-free"
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: stable\n"
+"Components: main contrib non-free"
+msgstr "deb file:/home/jason/debian stable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "As above, except this uses the unstable (development) distribution."
+msgstr ""
+"Jak wyżej, z tą różnicą że używa dystrybucji niestabilnej (deweloperskiej)."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, fuzzy, no-wrap
+#| msgid "deb file:/home/jason/debian unstable main contrib non-free"
+msgid "deb file:/home/apt/debian unstable main contrib non-free"
+msgstr "deb file:/home/jason/debian unstable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, fuzzy, no-wrap
+#| msgid "deb file:/home/jason/debian unstable main contrib non-free"
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr "deb file:/home/jason/debian unstable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid "Source line for the above"
+msgid "Sources specification for the above."
+msgstr "Linie źródeł dla powyższego przykładu"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, fuzzy, no-wrap
+#| msgid "deb-src file:/home/jason/debian unstable main contrib non-free"
+msgid "deb-src file:/home/apt/debian unstable main contrib non-free"
+msgstr "deb-src file:/home/jason/debian unstable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, fuzzy, no-wrap
+#| msgid "deb-src file:/home/jason/debian unstable main contrib non-free"
+msgid ""
+"Types: deb-src\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr "deb-src file:/home/jason/debian unstable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The first line gets package information for the architectures in "
+"<literal>APT::Architectures</literal> while the second always retrieves "
+"<literal>amd64</literal> and <literal>armel</literal>."
+msgstr ""
+"Pierwsza linia pobiera informacje o pakiecie dla architektur w <literal>APT::"
+"Architectures</literal> , podczas gdy druga zawsze pobiera <literal>amd64</"
+"literal> i <literal>armel</literal>."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, fuzzy, no-wrap
+#| msgid ""
+#| "deb http://ftp.debian.org/debian &debian-stable-codename; main\n"
+#| "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main"
+msgid ""
+"deb http://deb.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main"
+msgstr ""
+"deb http://ftp.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, fuzzy, no-wrap
+#| msgid ""
+#| "deb http://ftp.debian.org/debian &debian-stable-codename; main\n"
+#| "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main"
+msgid ""
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"\n"
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"Architectures: amd64 armel\n"
+msgstr ""
+"deb http://ftp.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to access the archive at archive.debian.org, and uses only the "
+"hamm/main area."
+msgstr ""
+"Użycie HTTP do uzyskania dostępu do archiwum na komputerze archive.debian."
+"org i dystrybucji hamm/main."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb http://archive.debian.org/debian-archive hamm main"
+msgstr "deb http://archive.debian.org/debian-archive hamm main"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, fuzzy, no-wrap
+#| msgid "deb http://archive.debian.org/debian-archive hamm main"
+msgid ""
+"Types: deb\n"
+"URIs: http://archive.debian.org/debian-archive\n"
+"Suites: hamm\n"
+"Components: main"
+msgstr "deb http://archive.debian.org/debian-archive hamm main"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the &debian-stable-codename;/contrib area."
+msgstr ""
+"Użycie FTP do uzyskania dostępu do archiwum na komputerze ftp.debian.org w "
+"katalogu debian i używa tylko dystrybucji &debian-stable-codename;/contrib."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, fuzzy, no-wrap
+#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: contrib"
+msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the unstable/contrib area. If this line appears as "
+"well as the one in the previous example in <filename>sources.list</filename> "
+"a single FTP session will be used for both resource lines."
+msgstr ""
+"Użycie FTP do uzyskania dostępu do archiwum na komputerze ftp.debian.org, "
+"dystrybucji unstable/contrib. Jeśli poniższa linia wystąpi razem z linią z "
+"poprzedniego przykładu w tym samym pliku <filename>sources.list</filename>, "
+"to pojedyncza sesja FTP będzie użyta w celu uzyskania dostępu do obu zasobów."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian unstable contrib"
+msgstr "deb ftp://ftp.debian.org/debian unstable contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, fuzzy, no-wrap
+#| msgid "deb ftp://ftp.debian.org/debian unstable contrib"
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: unstable\n"
+"Components: contrib"
+msgstr "deb ftp://ftp.debian.org/debian unstable contrib"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+msgstr "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, fuzzy, no-wrap
+#| msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+msgid ""
+"Types: deb\n"
+"URIs: http://ftp.tlh.debian.org/universe\n"
+"Suites: unstable/binary-$(ARCH)/"
+msgstr "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe "
+#| "directory, and uses only files found under <filename>unstable/binary-"
+#| "i386</filename> on i386 machines, <filename>unstable/binary-amd64</"
+#| "filename> on amd64, and so forth for other supported architectures. [Note "
+#| "this example only illustrates how to use the substitution variable; "
+#| "official debian archives are not structured like this] <placeholder type="
+#| "\"literallayout\" id=\"0\"/>"
+msgid ""
+"Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe "
+"directory, and uses only files found under <filename>unstable/binary-i386</"
+"filename> on i386 machines, <filename>unstable/binary-amd64</filename> on "
+"amd64, and so forth for other supported architectures. [Note this example "
+"only illustrates how to use the substitution variable; official debian "
+"archives are not structured like this] <placeholder type=\"literallayout\" "
+"id=\"0\"/> <placeholder type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+"Użycie HTTP do uzyskania dostępu do archiwum na komputerze ftp.tlh.debian."
+"org, w katalogu universe. Dla komputerów i386 używa tylko plików "
+"znalezionych w podkatalogu <filename>unstable/binary-i386</filename>, a dla "
+"komputerów amd64 - <filename>unstable/binary-amd64</filename> i tak dalej "
+"dla innych obsługiwanych architektur. (Uwaga: ten przykład jest tylko "
+"ilustracją, jak używać zmiennych podstawienia, oficjalne archiwum Debiana "
+"nie zawiera takiej struktury). <placeholder type=\"literallayout\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to get binary packages as well as sources from the stable, testing "
+"and unstable suites and the components main and contrib."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian stable main contrib\n"
+"deb-src http://deb.debian.org/debian stable main contrib\n"
+"deb http://deb.debian.org/debian testing main contrib\n"
+"deb-src http://deb.debian.org/debian testing main contrib\n"
+"deb http://deb.debian.org/debian unstable main contrib\n"
+"deb-src http://deb.debian.org/debian unstable main contrib"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb deb-src\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: stable testing unstable\n"
+"Components: main contrib\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid "&apt-cache;, &apt-config;, &apt-preferences;."
+msgid "&apt-get;, &apt-conf;, &apt-acquire-additional-files;"
+msgstr "&apt-cache;, &apt-config;, &apt-preferences;."
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt-extracttemplates.1.xml apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "1"
+msgstr "1"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-extracttemplates.1.xml
+msgid ""
+"Utility to extract <command>debconf</command> config and templates from "
+"Debian packages"
+msgstr ""
+"Narzędzie wyciągające z pakietów Debiana skrypty konfiguracyjne i szablony "
+"<command>debconf</command>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"<command>apt-extracttemplates</command> will take one or more Debian package "
+"files as input and write out (to a temporary directory) all associated "
+"config scripts and template files. For each passed in package that contains "
+"config scripts and templates, one line of output will be generated in the "
+"format:"
+msgstr ""
+"<command>apt-extracttemplates</command> pobiera jeden lub więcej pakietów "
+"Debiana i zapisuje (w katalogu tymczasowym) wszystkie skojarzone z nimi "
+"skrypty konfiguracyjne i pliki szablonów. Dla każdego pakietu zawierającego "
+"te skrypty i szablony, zostanie wypisana linia w następującym formacie:"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid "package version template-file config-script"
+msgstr "pakiet wersja plik-template skrypt-config"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"template-file and config-script are written to the temporary directory "
+"specified by the <option>-t</option> or <option>--tempdir</option> "
+"(<literal>APT::ExtractTemplates::TempDir</literal>) directory, with "
+"filenames of the form <filename>package.template.XXXXXX</filename> and "
+"<filename>package.config.XXXXXX</filename>"
+msgstr ""
+"plik-template i skrypt-config sÄ… zapisywane w katalogu tymczasowym podanym "
+"jako argument opcji <option>-t</option> lub <option>--tempdir</option> "
+"(<literal>APT::ExtractTemplates::TempDir</literal>). Nazwy tych plików są w "
+"postaci <filename>pakiet.template.XXXXXX</filename> oraz <filename>pakiet."
+"config.XXXXXX</filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"Temporary directory in which to write extracted <command>debconf</command> "
+"template files and config scripts. Configuration Item: <literal>APT::"
+"ExtractTemplates::TempDir</literal>"
+msgstr ""
+"Katalog tymczasowy, w którym zapisywane będą wyciągnięte szablony "
+"<command>debconf</command> i pliki konfiguracyjne. Pozycja w pliku "
+"konfiguracyjnym: <literal>APT::ExtractTemplates::TempDir</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"<command>apt-extracttemplates</command> returns zero on normal operation, "
+"decimal 100 on error."
+msgstr ""
+"<command>apt-extracttemplates</command> zwraca zero, gdy zakończyło się "
+"pomyślnie, 100 - w przypadku błędu."
+
+#
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-sortpkgs.1.xml
+msgid "Utility to sort package index files"
+msgstr "Narzędzie użytkowe do sortowania plików indeksu"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"<command>apt-sortpkgs</command> will take an index file (source index or "
+"package index) and sort the records so that they are ordered by the package "
+"name. It will also sort the internal fields of each record according to the "
+"internal sorting rules."
+msgstr ""
+"<command>apt-sortpkgs</command> bierze plik indeksu (Source lub Packages) i "
+"sortuje rekordy po nazwie pakietu. Posortuje także pola w każdym rekordzie, "
+"zgodnie z wewnętrznymi zasadami sortowania."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"All output is sent to standard output; the input must be a seekable file."
+msgstr ""
+"Wyjście programu jest wypisywane na standardowe wyjście, wejście musi "
+"pochodzić z pliku."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"Use source index field ordering. Configuration Item: <literal>APT::"
+"SortPkgs::Source</literal>."
+msgstr ""
+"Używa kolejności pól indeksu pliku Source. Pozycja w pliku konfiguracji: "
+"<literal>APT::SortPkgs::Source</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"<command>apt-sortpkgs</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+"<command>apt-sortpkgs</command> zwraca zero, gdy zakończyło się pomyślnie, "
+"100 - w przypadku błędu."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-ftparchive.1.xml
+msgid "Utility to generate index files"
+msgstr "Narzędzie użytkowe do generowania plików indeksu"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> is the command line tool that generates "
+"the index files that APT uses to access a distribution source. The index "
+"files should be generated on the origin site based on the content of that "
+"site."
+msgstr ""
+"<command>apt-ftparchive</command> jest narzędziem linii poleceń generującym "
+"pliki indeksowe używane przez APT do uzyskania dostępu do źródeł "
+"dystrybucji. Pliki indeksowe powinny być generowane na he origin site based "
+"on the content of that site."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> is a superset of the &dpkg-scanpackages; "
+"program, incorporating its entire functionality via the <literal>packages</"
+"literal> command. It also contains a contents file generator, "
+"<literal>contents</literal>, and an elaborate means to 'script' the "
+"generation process for a complete archive."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Internally <command>apt-ftparchive</command> can make use of binary "
+"databases to cache the contents of a .deb file and it does not rely on any "
+"external programs aside from &gzip;. When doing a full generate it "
+"automatically performs file-change checks and builds the desired compressed "
+"output files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The packages command generates a package file from a directory tree. It "
+"takes the given directory and recursively searches it for .deb files, "
+"emitting a package record to stdout for each. This command is approximately "
+"equivalent to &dpkg-scanpackages;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The option <option>--db</option> can be used to specify a binary caching DB."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>sources</literal> command generates a source index file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .dsc files, emitting a source record to stdout for each. This command is "
+"approximately equivalent to &dpkg-scansources;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"If an override file is specified then a source override file will be looked "
+"for with an extension of .src. The --source-override option can be used to "
+"change the source override file that will be used."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>contents</literal> command generates a contents file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .deb files, and reads the file list from each file. It then sorts and "
+"writes to stdout the list of files matched to packages. Directories are not "
+"written to the output. If multiple packages own the same file then each "
+"package is separated by a comma in the output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>release</literal> command generates a Release file from a "
+"directory tree. It recursively searches the given directory for uncompressed "
+"and compressed <filename>Packages</filename>, <filename>Sources</filename>, "
+"<filename>Contents</filename>, <filename>Components</filename> and "
+"<filename>icons</filename> files as well as <filename>Release</filename>, "
+"<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
+"default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>). "
+"Additional filename patterns can be added by listing them in <literal>APT::"
+"FTPArchive::Release::Patterns</literal>. It then writes to stdout a "
+"<filename>Release</filename> file containing (by default) an MD5, SHA1, "
+"SHA256 and SHA512 digest for each file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Values for the additional metadata fields in the Release file are taken from "
+"the corresponding variables under <literal>APT::FTPArchive::Release</"
+"literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The "
+"supported fields are <literal>Origin</literal>, <literal>Label</literal>, "
+"<literal>Suite</literal>, <literal>Version</literal>, <literal>Codename</"
+"literal>, <literal>Date</literal>, <literal>NotAutomatic</literal>, "
+"<literal>ButAutomaticUpgrades</literal>, <literal>Acquire-By-Hash</literal>, "
+"<literal>Valid-Until</literal>, <literal>Signed-By</literal>, "
+"<literal>Architectures</literal>, <literal>Components</literal> and "
+"<literal>Description</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>generate</literal> command is designed to be runnable from a "
+"cron script and builds indexes according to the given config file. The "
+"config language provides a flexible means of specifying which index files "
+"are built from which directories, as well as providing a simple means of "
+"maintaining the required settings."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>clean</literal> command tidies the databases used by the given "
+"configuration file by removing any records that are no longer necessary."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+#, fuzzy
+msgid "The Generate Configuration"
+msgstr "Plik konfiguracyjny"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>generate</literal> command uses a configuration file to "
+"describe the archives that are going to be generated. It follows the typical "
+"ISC configuration format as seen in ISC tools like bind 8 and dhcpd. &apt-"
+"conf; contains a description of the syntax. Note that the generate "
+"configuration is parsed in sectional manner, but &apt-conf; is parsed in a "
+"tree manner. This only effects how the scope tag is handled."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The generate configuration has four separate sections, each described below."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+#, fuzzy
+#| msgid "the <literal>Origin:</literal> line"
+msgid "<literal>Dir</literal> Section"
+msgstr "linia <literal>Origin:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Dir</literal> section defines the standard directories needed "
+"to locate the files required during the generation process. These "
+"directories are prepended certain relative paths defined in later sections "
+"to produce a complete an absolute path."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the root of the FTP archive, in a standard Debian configuration "
+"this is the directory that contains the <filename>ls-LR</filename> and dist "
+"nodes."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the location of the override files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the location of the cache files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the location of the file list files, if the <literal>FileList</"
+"literal> setting is used below."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+#, fuzzy
+#| msgid "the <literal>Label:</literal> line"
+msgid "<literal>Default</literal> Section"
+msgstr "linia <literal>Label:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Default</literal> section specifies default values, and "
+"settings that control the operation of the generator. Other sections may "
+"override these defaults with a per-section setting."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default compression schemes to use for the package index files. It "
+"is a string that contains a space separated list of at least one of the "
+"compressors configured via the <option>APT::Compressor</option> "
+"configuration scope. The default for all compression schemes is '. gzip'."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default list of file extensions that are package files. This "
+"defaults to '.deb'."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Sources files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default list of file extensions that are source files. This "
+"defaults to '.dsc'."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Contents files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Translation-en master file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the number of kilobytes to delink (and replace with hard links) "
+"per run. This is used in conjunction with the per-section <literal>External-"
+"Links</literal> setting."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the mode of all created index files. It defaults to 0644. All "
+"index files are set to this mode with no regard to the umask."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies whether long descriptions should be included in the "
+"<filename>Packages</filename> file or split out into a master "
+"<filename>Translation-en</filename> file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+#, fuzzy
+#| msgid "the <literal>Label:</literal> line"
+msgid "<literal>TreeDefault</literal> Section"
+msgstr "linia <literal>Label:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets defaults specific to <literal>Tree</literal> sections. All of these "
+"variables are substitution variables and have the strings $(DIST), "
+"$(SECTION) and $(ARCH) replaced with their respective values."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the number of kilobytes of contents files that are generated each day. "
+"The contents files are round-robined so that over several days they will all "
+"be rebuilt."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Controls the number of days a contents file is allowed to be checked without "
+"changing. If this limit is passed the mtime of the contents file is updated. "
+"This case can occur if the package file is changed in such a way that does "
+"not result in a new contents file [override edit for instance]. A hold off "
+"is allowed in hopes that new .debs will be installed, requiring a new file "
+"anyhow. The default is 10, the units are in days."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/"
+"$(SECTION)/binary-$(ARCH)/</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the top of the source package directory tree. Defaults to <filename>"
+"$(DIST)/$(SECTION)/source/</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Packages file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"binary-$(ARCH)/Packages</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Sources file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"source/Sources</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Translation-en master file with the long descriptions if "
+"they should be not included in the Packages file. Defaults to <filename>"
+"$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the path prefix that causes a symlink to be considered an internal link "
+"instead of an external link. Defaults to <filename>$(DIST)/$(SECTION)/</"
+"filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Contents file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"Contents-$(ARCH)</filename>. If this setting causes multiple Packages files "
+"to map onto a single Contents file (as is the default) then <command>apt-"
+"ftparchive</command> will integrate those package files together "
+"automatically."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets header file to prepend to the contents output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the binary cache database to use for this section. Multiple sections "
+"can share the same database."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies that instead of walking the directory tree, <command>apt-"
+"ftparchive</command> should read the list of files from the given file. "
+"Relative files names are prefixed with the archive directory."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies that instead of walking the directory tree, <command>apt-"
+"ftparchive</command> should read the list of files from the given file. "
+"Relative files names are prefixed with the archive directory. This is used "
+"when processing source indexes."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+#, fuzzy
+#| msgid "the <literal>Label:</literal> line"
+msgid "<literal>Tree</literal> Section"
+msgstr "linia <literal>Label:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Tree</literal> section defines a standard Debian file tree "
+"which consists of a base directory, then multiple sections in that base "
+"directory and finally multiple Architectures in each section. The exact "
+"pathing used is defined by the <literal>Directory</literal> substitution "
+"variable."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Tree</literal> section takes a scope tag which sets the "
+"<literal>$(DIST)</literal> variable and defines the root of the tree (the "
+"path is prefixed by <literal>ArchiveDir</literal>). Typically this is a "
+"setting such as <filename>dists/&debian-stable-codename;</filename>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"All of the settings defined in the <literal>TreeDefault</literal> section "
+"can be used in a <literal>Tree</literal> section as well as three new "
+"variables."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid ""
+"for i in Sections do \n"
+" for j in Architectures do\n"
+" Generate for DIST=scope SECTION=i ARCH=j\n"
+" "
+msgstr ""
+"for i in Sections do \n"
+" for j in Architectures do\n"
+" Generate for DIST=scope SECTION=i ARCH=j\n"
+" "
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"When processing a <literal>Tree</literal> section <command>apt-ftparchive</"
+"command> performs an operation similar to: <placeholder type=\"programlisting"
+"\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is a space separated list of sections which appear under the "
+"distribution; typically this is something like <literal>main contrib non-"
+"free</literal>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is a space separated list of all the architectures that appear under "
+"search section. The special architecture 'source' is used to indicate that "
+"this tree has a source archive. The architecture 'all' signals that "
+"architecture specific files like <filename>Packages</filename> should not "
+"include information about architecture <literal>all</literal> packages in "
+"all files as they will be available in a dedicated file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the binary override file. The override file contains section, priority "
+"and maintainer address information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the source override file. The override file contains section "
+"information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the binary extra override file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the source extra override file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+#, fuzzy
+#| msgid "the <literal>Component:</literal> line"
+msgid "<literal>BinDirectory</literal> Section"
+msgstr "linia <literal>Component:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>bindirectory</literal> section defines a binary directory tree "
+"with no special structure. The scope tag specifies the location of the "
+"binary directory and the settings are similar to the <literal>Tree</literal> "
+"section with no substitution variables or <literal>Section</"
+"literal><literal>Architecture</literal> settings."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the Packages file output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the Sources file output. At least one of <literal>Packages</literal> or "
+"<literal>Sources</literal> is required."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the Contents file output (optional)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the binary override file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the source override file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the cache DB."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Appends a path to all the output paths."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the file list file."
+msgstr "Określa plik zawierający listę plików."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+#, fuzzy
+msgid "The Binary Override File"
+msgstr "Wprowadzenie"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The binary override file is fully compatible with &dpkg-scanpackages;. It "
+"contains four fields separated by spaces. The first field is the package "
+"name, the second is the priority to force that package to, the third is the "
+"section to force that package to and the final field is the maintainer "
+"permutation field."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "old [// oldn]* => new"
+msgstr "old [// oldn]* => new"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "new"
+msgstr "new"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The general form of the maintainer field is: <placeholder type="
+"\"literallayout\" id=\"0\"/> or simply, <placeholder type=\"literallayout\" "
+"id=\"1\"/> The first form allows a double-slash separated list of old email "
+"addresses to be specified. If any of those are found then new is substituted "
+"for the maintainer field. The second form unconditionally substitutes the "
+"maintainer field."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+#, fuzzy
+msgid "The Source Override File"
+msgstr "Wprowadzenie"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The source override file is fully compatible with &dpkg-scansources;. It "
+"contains two fields separated by spaces. The first field is the source "
+"package name, the second is the section to assign it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Extra Override File"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The extra override file allows any arbitrary tag to be added or replaced in "
+"the output. It has three columns, the first is the package, the second is "
+"the tag and the remainder of the line is the new value."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Generate the given checksum. These options default to on, when turned off "
+"the generated index files will not have the checksum fields where possible. "
+"Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</"
+"replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</"
+"replaceable>::<replaceable>Checksum</replaceable></literal> where "
+"<literal><replaceable>Index</replaceable></literal> can be "
+"<literal>Packages</literal>, <literal>Sources</literal> or <literal>Release</"
+"literal> and <literal><replaceable>Checksum</replaceable></literal> can be "
+"<literal>MD5</literal>, <literal>SHA1</literal>, <literal>SHA256</literal> "
+"or <literal>SHA512</literal>."
+msgstr ""
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+#, fuzzy
+msgid ""
+"Use a binary caching DB. This has no effect on the generate command. "
+"Configuration Item: <literal>APT::FTPArchive::DB</literal>."
+msgstr ""
+"Przeszukaj tylko nazwy pakietów, pomijając szczegółowe opisy. Pozycja w "
+"pliku konfiguracyjnym: <literal>APT::Cache::NamesOnly</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+"Cichy; wypisuje tylko informacje potrzebne do logowania, opuszczajÄ…c "
+"wskaźniki postępu. Więcej znaków q spowoduje jeszcze bardziej ciche wyjście, "
+"maksimum jest 2. Można także ustawić poziom cichości za pomocą <option>-q=#</"
+"option>, nadpisujÄ…c tym samym opcjÄ™ z pliku konfiguracyjnego. Pozycja w "
+"pliku konfiguracyjnym: <literal>quiet</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+#, fuzzy
+msgid ""
+"Perform Delinking. If the <literal>External-Links</literal> setting is used "
+"then this option actually enables delinking of the files. It defaults to on "
+"and can be turned off with <option>--no-delink</option>. Configuration "
+"Item: <literal>APT::FTPArchive::DeLinkAct</literal>."
+msgstr ""
+"Automatycznie odbudowuje bufor pakietów, zamiast używać istniejącego "
+"bufora. Ta opcja jest domyślnie włączona, aby ją wyłączyć, należy użyć "
+"<option>--no-generate</option>. Pozycja w pliku konfiguracyjnym: "
+"<literal>APT::Cache::Generate</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Perform contents generation. When this option is set and package indexes are "
+"being generated with a cache DB then the file listing will also be extracted "
+"and stored in the DB for later use. When using the generate command this "
+"option also allows the creation of any Contents files. The default is on. "
+"Configuration Item: <literal>APT::FTPArchive::Contents</literal>."
+msgstr ""
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+#, fuzzy
+msgid ""
+"Select the source override file to use with the <literal>sources</literal> "
+"command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</"
+"literal>."
+msgstr ""
+"Ogranicza wyjście poleceń <literal>depends</literal> i <literal>rdepends</"
+"literal> tylko do pakietów, które są obecnie zainstalowane. Pozycja w pliku "
+"konfiguracyjnym: <literal>APT::Cache::Installed</literal>."
+
+#
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+#, fuzzy
+msgid ""
+"Make the caching databases read only. Configuration Item: <literal>APT::"
+"FTPArchive::ReadOnlyDB</literal>."
+msgstr ""
+"Przeszukaj tylko nazwy pakietów, pomijając szczegółowe opisy. Pozycja w "
+"pliku konfiguracyjnym: <literal>APT::Cache::NamesOnly</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+#, fuzzy
+#| msgid ""
+#| "If the command is either <literal>install</literal> or <literal>remove</"
+#| "literal>, then this option acts like running <literal>autoremove</"
+#| "literal> command, removing the unused dependency packages. Configuration "
+#| "Item: <literal>APT::Get::AutomaticRemove</literal>."
+msgid ""
+"Accept in the <literal>packages</literal> and <literal>contents</literal> "
+"commands only package files matching <literal>*_arch.deb</literal> or "
+"<literal>*_all.deb</literal> instead of all package files in the given "
+"path. Configuration Item: <literal>APT::FTPArchive::Architecture</literal>."
+msgstr ""
+"Jeżeli polecenie to albo <literal>install</literal>, albo <literal>remove</"
+"literal>, to ta opcja działa tak, jak uruchomienie polecenia "
+"<literal>autoremove</literal> i usuwa pakiety mające nieużywane już "
+"zależności. Pozycja w pliku konfiguracyjnym: <literal>APT::Get::"
+"AutomaticRemove</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"&apt-ftparchive; caches as much as possible of metadata in a cachedb. If "
+"packages are recompiled and/or republished with the same version again, this "
+"will lead to problems as the now outdated cached metadata like size and "
+"checksums will be used. With this option enabled this will no longer happen "
+"as it will be checked if the file was changed. Note that this option is set "
+"to \"<literal>false</literal>\" by default as it is not recommend to upload "
+"multiply versions/builds of a package with the same versionnumber, so in "
+"theory nobody will have these problems and therefore all these extra checks "
+"are useless."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This configuration option defaults to \"<literal>true</literal>\" and should "
+"only be set to <literal>\"false\"</literal> if the Archive generated with "
+"&apt-ftparchive; also provides <filename>Translation</filename> files. Note "
+"that the <filename>Translation-en</filename> master file can only be created "
+"in the generate command."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><programlisting>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n"
+msgstr "<command>apt-ftparchive</command> packages <replaceable>katalog</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"To create a compressed Packages file for a directory containing binary "
+"packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+
+#
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+"<command>apt-ftparchive</command> zwraca zero, gdy zakończyło się pomyślnie, "
+"100 - w przypadku błędu."
+
+#. type: Attribute 'lang' of: <book>
+#: guide.dbk offline.dbk
+msgid "en"
+msgstr "pl"
+
+#. type: Content of: <book><title>
+#: guide.dbk
+msgid "APT User's Guide"
+msgstr "Podręcznik użytkownika APT"
+
+#. type: Content of: <book><bookinfo><authorgroup><author><personname>
+#: guide.dbk offline.dbk
+msgid "Jason Gunthorpe"
+msgstr "Jason Gunthorpe"
+
+#. type: Content of: <book><bookinfo><authorgroup><author><email>
+#: guide.dbk offline.dbk
+msgid "jgg@debian.org"
+msgstr "jgg@debian.org"
+
+#. type: Content of: <book><bookinfo><releaseinfo>
+#: guide.dbk offline.dbk
+msgid "Version &apt-product-version;"
+msgstr ""
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: guide.dbk
+msgid ""
+"This document provides an overview of how to use the APT package manager."
+msgstr "Dokument zawiera opis używania menadżera pakietów APT."
+
+#. type: Content of: <book><bookinfo>
+#: guide.dbk
+msgid ""
+"<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+"<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>"
+
+#. type: Content of: <book><bookinfo><legalnotice><title>
+#: guide.dbk offline.dbk
+msgid "License Notice"
+msgstr ""
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk offline.dbk
+msgid ""
+"\"APT\" and this document are free software; you can redistribute them and/"
+"or modify them under the terms of the GNU General Public License as "
+"published by the Free Software Foundation; either version 2 of the License, "
+"or (at your option) any later version."
+msgstr ""
+"\"APT\" i ten dokument są oprogramowaniem wolnodostępnym, które można "
+"rozpowszechniać oraz zmieniać zgodnie z postanowieniami drugiej albo (wedle "
+"uznania) dowolnej późniejszej wersji \"Ogólnej Licencji Publicznej GNU"
+"\" (GNU General Public License) publikowanej przez \"FundacjÄ™ Wolnego "
+"Oprogramowania (Free Software Foundation)."
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk offline.dbk
+msgid ""
+"For more details, on Debian systems, see the file /usr/share/common-licenses/"
+"GPL for the full license."
+msgstr ""
+"Więcej szczegółów można uzyskać, przeglądając plik zawierający pełen tekst "
+"licencji (w systemach Debian jest to plik /usr/share/common-licenses/GPL)."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "General"
+msgstr "Ogólne"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The APT package currently contains two sections, the APT <command>dselect</"
+"command> method and the <command>apt-get</command> command line user "
+"interface. Both provide a way to install and remove packages as well as "
+"download new packages from the Internet."
+msgstr ""
+"Pakiet APT składa się z dwóch części: z metody APT programu "
+"<command>dselect</command> oraz z programu <command>apt-get</command> "
+"będącego interfejsem linii poleceń. Obie części pozwalają na instalowanie i "
+"usuwanie pakietów oraz na pobieranie nowych pakietów z Internetu."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Anatomy of the Package System"
+msgstr "Budowa systemu pakietów"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The Debian packaging system has a large amount of information associated "
+"with each package to help assure that it integrates cleanly and easily into "
+"the system. The most prominent of its features is the dependency system."
+msgstr ""
+"System pakietów Debiana zawiera sporą ilość informacji skojarzonych z każdym "
+"pakietem, zapewniających integralność pakietów w systemie. Najbardziej "
+"widoczną cechą systemu pakietów jest system zależności."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The dependency system allows individual programs to make use of shared "
+"elements in the system such as libraries. It simplifies placing infrequently "
+"used portions of a program in separate packages to reduce the number of "
+"things the average user is required to install. Also, it allows for choices "
+"in mail transport agents, X servers and so on."
+msgstr ""
+"System zależności pozwala poszczególnym programom używać wspólnych elementów "
+"systemu, takich jak biblioteki. Upraszcza także umieszczanie rzadko "
+"używanych części programów w oddzielnych pakietach, tak aby zmniejszyć "
+"liczbę pakietów instalowanych przez przeciętnego użytkownika. Pozwala także "
+"wybierać programy odpowiedzialne za dostarczanie poczty, serwery X-ów itp."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The first step to understanding the dependency system is to grasp the "
+"concept of a simple dependency. The meaning of a simple dependency is that a "
+"package requires another package to be installed at the same time to work "
+"properly."
+msgstr ""
+"Pierwszym krokiem potrzebnym do zrozumienia systemu zależności jest "
+"zrozumienie koncepcji prostej zależności. Prosta zależność oznacza, że dany "
+"pakiet do poprawnego działania wymaga zainstalowania innego pakietu."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"For instance, mailcrypt is an emacs extension that aids in encrypting email "
+"with GPG. Without GPGP installed mailcrypt is useless, so mailcrypt has a "
+"simple dependency on GPG. Also, because it is an emacs extension it has a "
+"simple dependency on emacs, without emacs it is completely useless."
+msgstr ""
+"Na przykład mailcrypt jest rozszerzeniem edytora emacs, umożliwiającym "
+"szyfrowanie e-maili za pomocÄ… programu GPG. Bez zainstalowanego pakietu GPG, "
+"mailcrypt jest bezużyteczny, dlatego mailcrypt zawiera prostą zależność od "
+"GPG. Ma także prostą zależność od pakietu emacs, ponieważ jest rozszerzeniem "
+"emacsa, więc i bez emacsa jest równie bezużyteczny."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The other important dependency to understand is a conflicting dependency. It "
+"means that a package, when installed with another package, will not work and "
+"may possibly be extremely harmful to the system. As an example consider a "
+"mail transport agent such as sendmail, exim or qmail. It is not possible to "
+"have two mail transport agents installed because both need to listen to the "
+"network to receive mail. Attempting to install two will seriously damage the "
+"system so all mail transport agents have a conflicting dependency with all "
+"other mail transport agents."
+msgstr ""
+"Inną ważną zależnością, którą należy zrozumieć, jest konflikt. Oznacza to, "
+"że dany pakiet może nie działać albo może być szkodliwy dla systemu, jeżeli "
+"razem z nim jest zainstalowany inny pakiet. Jako przykład rozważmy program "
+"odpowiedzialny za dostarczanie poczty (ang. \"mail transport agent\") taki "
+"jak sendmail, exim lub qmail. Nie jest możliwe jednoczesne zainstalowanie "
+"dwóch takich programów, ponieważ oba musiałyby nasłuchiwać na tym samym "
+"porcie sieciowym, żeby odebrać e-maile. Próba zainstalowanie obu poważnie "
+"uszkodzi system. Dlatego też wszystkie programy obsługi dostarczania poczty "
+"są w konflikcie ze wszystkimi innymi programami obsługującymi dostarczanie "
+"poczty."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"As an added complication there is the possibility for a package to pretend "
+"to be another package. Consider that exim and sendmail for many intents are "
+"identical, they both deliver mail and understand a common interface. Hence, "
+"the package system has a way for them to declare that they are both mail-"
+"transport-agents. So, exim and sendmail both declare that they provide a "
+"mail-transport-agent and other packages that need a mail transport agent "
+"depend on mail-transport-agent. This can add a great deal of confusion when "
+"trying to manually fix packages."
+msgstr ""
+"Dodatkową komplikacją jest możliwość, że dany pakiet może udawać inny "
+"pakiet. Proszę rozważyć jako przykład, że exim i sendmail praktycznie rzecz "
+"biorąc są identyczne - oba dostarczają pocztę, oba mają wspólny interfejs. "
+"Dlatego też system pakietów daje im możliwość zadeklarowania, że oba są "
+"programami obsługującymi dostarczanie poczty.Tak więc zarówno exim, jak i "
+"sendmail deklarują, że dostarczają pakiet o nazwie mail-transport-agent, od "
+"którego mogą zależeć pakiety, wymagające do swojego działania programu "
+"obsługi poczty. Może to być bardzo mylące podczas próby ręcznego naprawiania "
+"zależności pakietów."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"At any given time a single dependency may be met by packages that are "
+"already installed or it may not be. APT attempts to help resolve dependency "
+"issues by providing a number of automatic algorithms that help in selecting "
+"packages for installation."
+msgstr ""
+"W dowolnym czasie pojedyncza zależność może być lub nie być spełniona przez "
+"obecnie zainstalowane pakiety. ATP próbuje rozwiązać zależności używając "
+"pewnej liczby algorytmów pomagających w wyborze pakietów do zainstalowania."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "apt-get"
+msgstr "apt-get"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"<command>apt-get</command> provides a simple way to install packages from "
+"the command line. Unlike <command>dpkg</command>, <command>apt-get</command> "
+"does not understand .deb files, it works with the package's proper name and "
+"can only install .deb archives from a <emphasis>Source</emphasis>."
+msgstr ""
+"<command>apt-get</command> dostarcza prostego sposobu na zainstalowanie "
+"pakietów z linii poleceń. W przeciwieństwie do <command>dpkg</command>, "
+"<command>apt-get</command> nie posługuje się nazwami plików \".deb\", lecz "
+"używa nazw pakietów i może zainstalować tylko archiwa \".deb\" ze "
+"skonfigurowanych <emphasis>źródeł</emphasis>."
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk
+msgid ""
+"If you are using an http proxy server you must set the http_proxy "
+"environment variable first, see sources.list(5)"
+msgstr ""
+"Aby używać serwera proxy, należy najpierw ustawić zmienną środowiskową "
+"http_proxy, proszę przeczytać sources.list(5)"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The first <placeholder type=\"footnote\" id=\"0\"/> thing that should be "
+"done before using <command>apt-get</command> is to fetch the package lists "
+"from the <emphasis>Sources</emphasis> so that it knows what packages are "
+"available. This is done with <literal>apt-get update</literal>. For instance,"
+msgstr ""
+"Pierwszą rzeczą <placeholder type=\"footnote\" id=\"0\"/>, którą należy "
+"zrobić przed użyciem <command>apt-get</command> jest pobranie listy pakietów "
+"(ze <emphasis>źródeł</emphasis> wymienionych w pliku sources.list(5)), tak "
+"żeby APT wiedział, jakie pakiety są dostępne. Robi się to za pomocą "
+"polecenia <literal>apt-get update</literal>. Na przykład:"
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+"# apt-get update\n"
+"Pob: http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Pob: http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Czytanie list pakietów... Gotowe\n"
+"Budowanie drzewa zależności... Gotowe\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid "Once updated there are several commands that can be used:"
+msgstr "Po zaktualizowaniu można użyć następnych poleceń:"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "upgrade"
+msgstr "upgrade"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Upgrade will attempt to gently upgrade the whole system. Upgrade will never "
+"install a new package or remove an existing package, nor will it ever "
+"upgrade a package that might cause some other package to break. This can be "
+"used daily to relatively safely upgrade the system. Upgrade will list all of "
+"the packages that it could not upgrade, this usually means that they depend "
+"on new packages or conflict with some other package. <command>dselect</"
+"command> or <literal>apt-get install</literal> can be used to force these "
+"packages to install."
+msgstr ""
+"Upgrade spróbuje delikatnie zaktualizować cały system. Upgrade nigdy nie "
+"zainstaluje nowego pakietu ani nie usunie istniejącego pakiety, ani też nie "
+"zaktualizuje pakietu do wersji powodującej, że inny pakiet przestanie "
+"działać. Można używać tego polecenia codziennie do w miarę bezpiecznych "
+"aktualizacji systemu. Upgrade wypisze listę pakietów, których nie potrafił "
+"zaktualizować, co zazwyczaj oznacza, że zależą one od nowych pakietów lub są "
+"w konflikcie z innymi pakietami. Można wymusić instalację takich pakietów, "
+"używając do tego <command>dselect</command> lub <literal>apt-get install</"
+"literal>."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "install"
+msgstr "install"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Install is used to install packages by name. The package is automatically "
+"fetched and installed. This can be useful if you already know the name of "
+"the package to install and do not want to go into a GUI to select it. Any "
+"number of packages may be passed to install, they will all be fetched. "
+"Install automatically attempts to resolve dependency problems with the "
+"listed packages and will print a summary and ask for confirmation if "
+"anything other than its arguments are changed."
+msgstr ""
+"Install jest używane do instalowania pakietów przez podanie ich nazwy. "
+"Pakiet jest automatycznie pobierany i instalowany. Może być to użyteczne, "
+"gdy już zna się nazwę pakietu do zainstalowania i nie chce się uruchamiać "
+"graficznego interfejsu wyboru pakietów. Można podać dowolną liczbę nazw "
+"pakietów do zainstalowania - wszystkie będą pobrane. Install próbuje "
+"automatycznie rozwiązać problemy z zależnościami w podanych pakietach, "
+"wypisze podsumowanie i poprosi o potwierdzenie, jeśli zamierza zmienić "
+"cokolwiek innego niż pakiety podane jako jego argumenty."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "dist-upgrade"
+msgstr "dist-upgrade"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Dist-upgrade is a complete upgrader designed to simplify upgrading between "
+"releases of Debian. It uses a sophisticated algorithm to determine the best "
+"set of packages to install, upgrade and remove to get as much of the system "
+"to the newest release. In some situations it may be desired to use dist-"
+"upgrade rather than spend the time manually resolving dependencies in "
+"<command>dselect</command>. Once dist-upgrade has completed then "
+"<command>dselect</command> can be used to install any packages that may have "
+"been left out."
+msgstr ""
+"Dist-upgrade powoduje całkowitą aktualizację systemu i jest zaprojektowany "
+"do uproszczenia aktualizacji z jednego wydania Debiana do kolejnego. Używa "
+"wyrafinowanych algorytmów do określenia najlepszego zbioru pakietów do "
+"zainstalowania, aktualizacji lub usunięcia, tak aby zaktualizować jak "
+"najwięcej pakietów w systemie do nowszego wydania. W niektórych sytuacjach, "
+"może być prościej użyć dist-upgrade niż ręcznie rozwiązywać zależności w "
+"programie <command>dselect</command>. Kiedy dist-upgrade zakończy działanie, "
+"można użyć programu <command>dselect</command> do zainstalowania pominiętych "
+"pakietów."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"It is important to closely look at what dist-upgrade is going to do, its "
+"decisions may sometimes be quite surprising."
+msgstr ""
+"Jest ważne, aby dokładnie przyjrzeć się temu, co dist-upgrade zamierza "
+"zrobić, gdyż jego decyzje mogą czasami zdumiewać."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"<command>apt-get</command> has several command line options that are "
+"detailed in its man page, <citerefentry><refentrytitle>apt-get</"
+"refentrytitle><manvolnum>8</manvolnum></citerefentry>. The most useful "
+"option is <literal>-d</literal> which does not install the fetched files. If "
+"the system has to download a large number of package it would be undesired "
+"to start installing them in case something goes wrong. When <literal>-d</"
+"literal> is used the downloaded archives can be installed by simply running "
+"the command that caused them to be downloaded again without <literal>-d</"
+"literal>."
+msgstr ""
+"Zachowanie programu <command>apt-get</command> można kontrolować za pomocą "
+"opcji linii poleceń szczegółowo opisanych w stronie podręcznika ekranowego "
+"<citerefentry><refentrytitle>apt-get</refentrytitle><manvolnum>8</"
+"manvolnum></citerefentry>. Najbardziej użyteczną z nich jest <literal>-d</"
+"literal>, która nie instaluje pobranych plików. Jeśli system musi pobrać "
+"dużą liczbę pakietów, instalowanie ich może być niepożądane, jeśli coś "
+"pójdzie nie tak. Jeśli użyto <literal>-d</literal>, to pobrane archiwa można "
+"zainstalować, ponownie uruchamiając polecenie, które spowodowało ich "
+"pobranie, tym razem bez opcji <literal>-d</literal>."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "DSelect"
+msgstr "DSelect"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The APT <command>dselect</command> method provides the complete APT system "
+"with the <command>dselect</command> package selection GUI. <command>dselect</"
+"command> is used to select the packages to be installed or removed and APT "
+"actually installs them."
+msgstr ""
+"Metoda APT <command>dselect</command> dostarcza kompletnego systemu APT w "
+"interfejsie użytkownika programu wyboru pakietów <command>dselect</command>. "
+"<command>dselect</command> może być użyty do wybrania pakietów "
+"przeznaczonych do zainstalowania lub usunięcia, a APT zainstaluje lub usunie "
+"te pakiety."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"To enable the APT method you need to select [A]ccess in <command>dselect</"
+"command> and then choose the APT method. You will be prompted for a set of "
+"<emphasis>Sources</emphasis> which are places to fetch archives from. These "
+"can be remote Internet sites, local Debian mirrors or CD-ROMs. Each source "
+"can provide a fragment of the total Debian archive, APT will automatically "
+"combine them to form a complete set of packages. If you have a CD-ROM then "
+"it is a good idea to specify it first and then specify a mirror so that you "
+"have access to the latest bug fixes. APT will automatically use packages on "
+"your CD-ROM before downloading from the Internet."
+msgstr ""
+"Aby włączyć metodę APT należy wybrać opcję \"[A] Dostęp\" w programie "
+"<command>dselect</command> , a następnie wybrać metodę APT. Użytkownik "
+"zostanie poproszony o skonfigurowanie listy <emphasis>źródeł</emphasis>, "
+"będących lokalizacjami, z których będą pobierane pakiety. Mogą być to strony "
+"internetowe, lokalne serwery lustrzane Debiana lub CD-ROM-y. Każde źródło "
+"może dostarczać tylko fragmentu pełnego archiwum Debiana, a APT "
+"automatycznie połączy je w kompletny zbiór pakietów. Jeśli używany jest CD-"
+"ROM, to dobrym pomysłem jest podanie najpierw jego, a potem podanie mirrorów "
+"umożliwiających dostęp do najnowszych wersji pakietów zawierających poprawki "
+"błędów. APT automatycznie użyje pakietów z CD-ROM-u zanim zacznie pobierać "
+"pakiety z Internetu."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Set up a list of distribution source locations\n"
+"\n"
+" Please give the base URL of the debian distribution.\n"
+" The access schemes I know about are: http file\n"
+"\n"
+" For example:\n"
+" file:/mnt/debian,\n"
+" ftp://ftp.debian.org/debian,\n"
+" http://ftp.de.debian.org/debian,\n"
+"\n"
+"\n"
+" URL [http://llug.sep.bnl.gov/debian]:\n"
+msgstr ""
+" Ustawianie listy źródłowych lokalizacji dystrybucji\n"
+"\n"
+" Proszę podać bazowy URL dystrybucji Debiana.\n"
+" Obsługiwane schematy połączeń to: http ftp file\n"
+"\n"
+" Przykłady:\n"
+" file:/mnt/debian,\n"
+" ftp://ftp.debian.org/debian,\n"
+" http://ftp.pl.debian.org/debian,\n"
+"\n"
+"\n"
+" URL [http://llug.sep.bnl.gov/debian]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The <emphasis>Sources</emphasis> setup starts by asking for the base of the "
+"Debian archive, defaulting to a HTTP mirror. Next it asks for the "
+"distribution to get."
+msgstr ""
+"Ustawianie źródeł zaczyna się od pytania o bazową lokalizację Debiana. "
+"Domyślną wartością jest mirror HTTP. Następnie użytkownik jest pytany o "
+"dystrybucjÄ™ do pobrania."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Please give the distribution tag to get or a path to the\n"
+" package file ending in a /. The distribution\n"
+" tags are typically something like: stable unstable testing non-US\n"
+"\n"
+" Distribution [stable]:\n"
+msgstr ""
+" Proszę podać znacznik dystrybucji do pobrania lub ścieżkę do pliku\n"
+" pakietów kończącą się znakiem \"/\". Zazwyczaj znacznikiem dystrybucji\n"
+" jest coÅ› w rodzaju: stable unstable testing non-US\n"
+"\n"
+" Dystrybucja [stable]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The distribution refers to the Debian version in the archive, "
+"<emphasis>stable</emphasis> refers to the latest released version and "
+"<emphasis>unstable</emphasis> refers to the developmental version. "
+"<emphasis>non-US</emphasis> is only available on some mirrors and refers to "
+"packages that contain encryption technology or other things that cannot be "
+"exported from the United States. Importing these packages into the US is "
+"legal however."
+msgstr ""
+"Dystrybucja odnosi siÄ™ do wersji Debiana: <emphasis>stable</"
+"emphasis>(stabilna) to najnowsza wydana wersja, a <emphasis>unstable</"
+"emphasis> (niestabilna) to wersja rozwojowa. <emphasis>non-US</emphasis> "
+"jest dostępna tylko na wybranych serwerach lustrzanych i zawiera pakiety, "
+"które wykorzystują technologie szyfrowania danych lub inne rzeczy, które nie "
+"mogą być eksportowane z serwerów umieszczonych w Stanach Zjednoczonych. "
+"Importowanie tych pakietów do Stanów Zjednoczonych jest jednakże legalne."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Please give the components to get\n"
+" The components are typically something like: main contrib non-free\n"
+"\n"
+" Components [main contrib non-free]:\n"
+msgstr ""
+" Proszę podać komponenty do pobrania\n"
+" Zazwyczaj komponentem jest coÅ› w rodzaju: main contrib non-free\n"
+"\n"
+" Komponenty [main contrib non-free]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The components list refers to the list of sub distributions to fetch. The "
+"distribution is split up based on software licenses, main being DFSG free "
+"packages while contrib and non-free contain things that have various "
+"restrictions placed on their use and distribution."
+msgstr ""
+"Lista komponentów jest listą pod-dystrybucji do pobrania. Dystrybucja jest "
+"podzielona ze względu na licencje oprogramowania: main (główna) zawiera "
+"pakiety zgodne z DFSG (\"Wytycznymi Debiana w sprawie Wolnego Oprogramowania"
+"\"),contrib i non-free zawierają pakiety, które zawierają restrykcje "
+"związane z ich używaniem lub rozpowszechnianiem."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Any number of sources can be added, the setup script will continue to prompt "
+"until you have specified all that you want."
+msgstr ""
+"Można dodać dowolną liczbę źródeł. Skrypt konfigurujący będzie kontynuował "
+"odpytywanie użytkownika dopóty, dopóki nie poda wszystkich źródeł, które "
+"chciał skonfigurować."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Before starting to use <command>dselect</command> it is necessary to update "
+"the available list by selecting [U]pdate from the menu. This is a superset "
+"of <literal>apt-get update</literal> that makes the fetched information "
+"available to <command>dselect</command>. [U]pdate must be performed even if "
+"<literal>apt-get update</literal> has been run before."
+msgstr ""
+"Przed rozpoczęciem używania programu <command>dselect</command> należy w "
+"menu tego programu wybrać \"[U] Aktualizacja\", abyzaktualizować listę "
+"dostępnych pakietów. To polecenie jest nadzbiorem polecenia <literal>apt-get "
+"update</literal>, zapewniającym programowi <command>dselect</command> dostęp "
+"do pobranych informacji o pakietach. \"[U] Aktualizacja\" musi być wykonana, "
+"nawet jeśli wcześniej uruchomiono <literal>apt-get update</literal>."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"You can then go on and make your selections using [S]elect and then perform "
+"the installation using [I]nstall. When using the APT method the [C]onfig and "
+"[R]emove commands have no meaning, the [I]nstall command performs both of "
+"them together."
+msgstr ""
+"Następnie można wybrać pakiety do zainstalowania, używając opcji \"[S] Wybór"
+"\", a potem zainstalować te pakiety opcją \"[I] Instalacja\". Używanie "
+"metody APT czyni opcje \"[C] Konfiguracja\" i \"[R] Usuwanie\" "
+"bezużytecznymi, gdyż \"[I] Instalacja\" przeprowadza również te dwie "
+"operacje."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"By default APT will automatically remove the package (.deb) files once they "
+"have been successfully installed. To change this behavior place "
+"<literal>Dselect::clean \"prompt\";</literal> in /etc/apt/apt.conf."
+msgstr ""
+"Domyślnie APT automatycznie usunie pliki pakietów (.deb), gdy tylko zostaną "
+"zainstalowane. Aby zmienić to zachowanie, proszę umieścić <literal>Dselect::"
+"clean \"prompt\";</literal> w /etc/apt/apt.conf."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "The Interface"
+msgstr "Interfejs"
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk
+msgid ""
+"The <command>dselect</command> method actually is a set of wrapper scripts "
+"to <command>apt-get</command>. The method actually provides more "
+"functionality than is present in <command>apt-get</command> alone."
+msgstr ""
+"Metoda programu <command>dselect</command> jest tak naprawdÄ™ zbiorem "
+"skryptów wywołujących <command>apt-get</command>. Metoda ta ma jednakże "
+"większą funkcjonalność niż sam program <command>apt-get</command>."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Both that APT <command>dselect</command> method and <command>apt-get</"
+"command> share the same interface. It is a simple system that generally "
+"tells you what it will do and then goes and does it. <placeholder type="
+"\"footnote\" id=\"0\"/> After printing out a summary of what will happen APT "
+"then will print out some informative status messages so that you can "
+"estimate how far along it is and how much is left to do."
+msgstr ""
+"Metoda APT programu <command>dselect</command> i program <command>apt-get</"
+"command> dzielą wspólny interfejs. Jest to prosty system, który najpierw "
+"informuje użytkownika, co będzie zrobione, a następnie to robi. <placeholder "
+"type=\"footnote\" id=\"0\"/> Po wyświetleniu podsumowania informującego o "
+"tym, co będzie zrobione, APT wyświetla komunikaty dotyczące postępu "
+"przeprowadzanych operacji, tak żeby można było oszacować czas pozostały do "
+"ich zakończenia."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Startup"
+msgstr "Uruchamianie"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Before all operations except update, APT performs a number of actions to "
+"prepare its internal state. It also does some checks of the system's state. "
+"At any time these operations can be performed by running <literal>apt-get "
+"check</literal>."
+msgstr ""
+"Przed każdą operacją, z wyjątkiem update, APT przeprowadza pewne akcje "
+"przygotowujące wewnętrzny stan. Sprawdza również stan systemu. Te same "
+"operacje można przeprowadzić w dowolnej chwili, uruchamiając <literal>apt-"
+"get check</literal>."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+"# apt-get check\n"
+"Czytanie list pakietów... Gotowe\n"
+"Budowanie drzewa zależności... Gotowe\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The first thing it does is read all the package files into memory. APT uses "
+"a caching scheme so this operation will be faster the second time it is run. "
+"If some of the package files are not found then they will be ignored and a "
+"warning will be printed when apt-get exits."
+msgstr ""
+"Pierwszą rzeczą, którą robi, jest wczytanie wszystkich plików pakietów do "
+"pamięci. APT używa buforowania, tak żeby przyspieszyć tę operację przy "
+"następnym uruchomieniu. Jeśli nie znajdzie niektórych plików pakietów, to "
+"wypisze ostrzeżenie, a te pakiety zignoruje."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The final operation performs a detailed analysis of the system's "
+"dependencies. It checks every dependency of every installed or unpacked "
+"package and considers if it is OK. Should this find a problem then a report "
+"will be printed out and <command>apt-get</command> will refuse to run."
+msgstr ""
+"Końcową operacją jest szczegółowa analiza zależności w systemie. Sprawdzana "
+"jest każda zależność każdego pakietu zainstalowanego lub rozpakowanego. W "
+"razie wykrycia problemów z zależnościami <command>apt-get</command> wypisze "
+"odpowiedni komunikat i odmówi dalszego działania."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+"You might want to run 'apt --fix-broken install' to correct these.\n"
+"Sorry, but the following packages have unmet dependencies:\n"
+" 9fonts: Depends: xlib6g but it is not installed\n"
+" uucp: Depends: mailx but it is not installed\n"
+" blast: Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" adduser: Depends: perl-base but it is not installed\n"
+" aumix: Depends: libgpmg1 but it is not installed\n"
+" debiandoc-sgml: Depends: sgml-base but it is not installed\n"
+" bash-builtins: Depends: bash (&gt;= 2.01) but 2.0-3 is installed\n"
+" cthugha: Depends: svgalibg1 but it is not installed\n"
+" Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" libreadlineg2: Conflicts:libreadline2 (&lt;&lt; 2.1-2.1)\n"
+msgstr ""
+"# apt-get check\n"
+"Czytanie list pakietów... Gotowe\n"
+"Budowanie drzewa zależności... Gotowe\n"
+"Należy uruchomić \"apt --fix-broken install\", aby je naprawić.\n"
+"Następujące pakiety mają niespełnione zależności:\n"
+" 9fonts: Wymaga: xlib6g ale nie jest zainstalowany\n"
+" uucp: Wymaga: mailx ale nie jest zainstalowany\n"
+" blast: Wymaga: xlib6g (&gt;= 3.3-5) ale nie jest zainstalowany\n"
+" adduser: Wymaga: perl-base ale nie jest zainstalowany\n"
+" aumix: Wymaga: libgpmg1 but ale nie jest zainstalowany\n"
+" debiandoc-sgml: Wymaga: sgml-base ale nie jest zainstalowany\n"
+" bash-builtins: Wymaga: bash (&gt;= 2.01) but 2.0-3 is installed\n"
+" cthugha: Wymaga: svgalibg1 but it is not installed\n"
+" Wymaga: xlib6g (&gt;= 3.3-5) ale nie jest zainstalowany\n"
+" libreadlineg2: Jest w konflikcie z: libreadline2 (&lt;&lt; 2.1-2.1)\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"In this example the system has many problems, including a serious problem "
+"with libreadlineg2. For each package that has unmet dependencies a line is "
+"printed out indicating the package with the problem and the dependencies "
+"that are unmet. A short explanation of why the package has a dependency "
+"problem is also included."
+msgstr ""
+"Powyższy przykład przedstawia system mający wiele problemów, włączając to "
+"poważny problem z libreadlineg2. Każdy pakiet mający niespełnione zależności "
+"jest wypisywany w osobnej linii razem z niespełnionymi zależnościami. Podane "
+"jest również krótkie wyjaśnienie dotyczące przyczyny problemu."
+
+#. type: Content of: <book><chapter><section><para><footnote><para>
+#: guide.dbk
+msgid ""
+"APT however considers all known dependencies and attempts to prevent broken "
+"packages"
+msgstr ""
+"APT rozważa wszystkie znane zależności i próbuje nie dopuścić do zepsucia "
+"pakietów."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"There are two ways a system can get into a broken state like this. The first "
+"is caused by <command>dpkg</command> missing some subtle relationships "
+"between packages when performing upgrades. <placeholder type=\"footnote\" id="
+"\"0\"/>. The second is if a package installation fails during an operation. "
+"In this situation a package may have been unpacked without its dependents "
+"being installed."
+msgstr ""
+"Są dwie przyczyny, z których powodu system może być zepsuty w powyższy "
+"sposób. Pierwszą jest to, że <command>dpkg</command> podczas aktualizacji "
+"systemu nie zauważył jakiejś subtelnej relacji między pakietami<placeholder "
+"type=\"footnote\" id=\"0\"/>. Drugą przyczyną jest wystąpienie błędu w "
+"czasie instalowania pakietu. W takim przypadku pakiet może być rozpakowany, "
+"mimo że pakiety od niego zależące nie są zainstalowane."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The second situation is much less serious than the first because APT places "
+"certain constraints on the order that packages are installed. In both cases "
+"supplying the <literal>-f</literal> option to <command>apt-get</command> "
+"will cause APT to deduce a possible solution to the problem and then "
+"continue on. The APT <command>dselect</command> method always supplies the "
+"<literal>-f</literal> option to allow for easy continuation of failed "
+"maintainer scripts."
+msgstr ""
+"Druga przyczyna jest o wiele mniej poważna niż pierwsza, ponieważ APT "
+"wymusza pewne więzy integralności dotyczące kolejności instalowania "
+"pakietów. W obu przypadkach przekazanie programowi <command>apt-get</"
+"command> opcji <literal>-f</literal> wymusi na APT znalezienie rozwiÄ…zania "
+"umożliwiającego mu kontynuowanie działania. Metoda APT programu "
+"<command>dselect</command> zawsze przekazuje opcjÄ™ <literal>-f</literal>, "
+"aby móc kontynuować po wystąpieniu błędu w skryptach opiekunów pakietów."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"However, if the <literal>-f</literal> option is used to correct a seriously "
+"broken system caused by the first case then it is possible that it will "
+"either fail immediately or the installation sequence will fail. In either "
+"case it is necessary to manually use dpkg (possibly with forcing options) to "
+"correct the situation enough to allow APT to proceed."
+msgstr ""
+"Jednak gdy opcja <literal>-f</literal> jest używana do poprawienia "
+"zależności w poważnie uszkodzonym systemie (pierwsza z opisanych wyżej "
+"przyczyn), możliwe jest że albo od razu zwróci błąd, albo nie powiedzie się "
+"sekwencja instalowania pakietów. W obu przypadkach należy poprawić "
+"zależności ręcznie, używając do tego dpkg (być może przekazując mu opcje "
+"wymuszające \"--force-...\"), w takim stopniu, aby umożliwić działanie "
+"systemowi APT."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "The Status Report"
+msgstr "Raport stanu"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Before proceeding <command>apt-get</command> will present a report on what "
+"will happen. Generally the report reflects the type of operation being "
+"performed but there are several common elements. In all cases the lists "
+"reflect the final state of things, taking into account the <literal>-f</"
+"literal> option and any other relevant activities to the command being "
+"executed."
+msgstr ""
+"Przed rozpoczęciem przetwarzania <command>apt-get</command> wyświetli raport "
+"zawierający informacje o tym, co będzie zrobione. W ogólności raport ten "
+"zależy od typu wykonywanej operacji, jednakże występuje w nim kilka "
+"elementów wspólnych dla wszystkich typów. We wszystkich wypadkach "
+"wyświetlane są informacje o końcowym stanie, brana jest pod uwagę opcja "
+"<literal>-f</literal>, a także wszystkie istotne działania wykonywanego "
+"polecenia."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Extra Package list"
+msgstr "Lista dodatkowych pakietów"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following extra packages will be installed:\n"
+" libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl\n"
+" mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base\n"
+" bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy\n"
+" squake pgp-i python-base debmake ldso perl libreadlineg2\n"
+" ssh\n"
+msgstr ""
+"Zostaną zainstalowane następujące dodatkowe pakiety:\n"
+" libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl\n"
+" mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base\n"
+" bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy\n"
+" squake pgp-i python-base debmake ldso perl libreadlineg2\n"
+" ssh\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The Extra Package list shows all of the packages that will be installed or "
+"upgraded in excess of the ones mentioned on the command line. It is only "
+"generated for an <literal>install</literal> command. The listed packages are "
+"often the result of an Auto Install."
+msgstr ""
+"Lista dodatkowych pakietów wyświetla wszystkie pakiety, które będą "
+"zainstalowane lub zaktualizowane oprócz tych wymienionych w linii poleceń. "
+"Jest generowana tylko dla polecenia <literal>install</literal>. Wymienione "
+"pakiety są najczęściej wynikiem automatycznej instalacji."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Packages to Remove"
+msgstr "Pakiety przeznaczone do usunięcia"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following packages will be REMOVED:\n"
+" xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix\n"
+" xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel\n"
+" xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid\n"
+" nas xpilot xfig\n"
+msgstr ""
+"Następujące pakiety zostaną USUNIĘTE:\n"
+" xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix\n"
+" xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel\n"
+" xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid\n"
+" nas xpilot xfig\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The Packages to Remove list shows all of the packages that will be removed "
+"from the system. It can be shown for any of the operations and should be "
+"given a careful inspection to ensure nothing important is to be taken off. "
+"The <literal>-f</literal> option is especially good at generating packages "
+"to remove so extreme care should be used in that case. The list may contain "
+"packages that are going to be removed because they are only partially "
+"installed, possibly due to an aborted installation."
+msgstr ""
+"Lista pakietów przeznaczonych do usunięcia wyświetla wszystkie pakiety, "
+"które zostaną usunięte z systemu. Może być pokazana dla każdej operacji i "
+"powinna być szczegółowo przeanalizowana, aby zapewnić, że żaden istotny "
+"pakiet nie będzie usunięty. W szczególności opcja <literal>-f</literal> może "
+"wygenerować sporo pakietów do usunięcia, także w przypadku jej użycia należy "
+"szczególnie dokładnie przeanalizować wyświetlany raport. Lista może zawierać "
+"pakiety usuwane z powodu ich tylko częściowego zainstalowania, wynikającego "
+"być może z przerwania wcześniejszej instalacji."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The New Packages list"
+msgstr "Lista nowych pakietów"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following NEW packages will installed:\n"
+" zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base\n"
+msgstr ""
+"Zostaną zainstalowane następujące NOWE pakiety:\n"
+" zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The New Packages list is simply a reminder of what will happen. The packages "
+"listed are not presently installed in the system but will be when APT is "
+"done."
+msgstr ""
+"Lista nowych pakietów to proste przypomnienie o tym, co się stanie. Wypisane "
+"pakiety nie są obecnie zainstalowane w systemie, ale będą, kiedy APT skończy "
+"działanie."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Kept Back list"
+msgstr "Lista zatrzymanych pakietów"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following packages have been kept back\n"
+" compface man-db tetex-base msql libpaper svgalib1\n"
+" gs snmp arena lynx xpat2 groff xscreensaver\n"
+msgstr ""
+"Następujące pakiety zostały zatrzymane:\n"
+" compface man-db tetex-base msql libpaper svgalib1\n"
+" gs snmp arena lynx xpat2 groff xscreensaver\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Whenever the whole system is being upgraded there is the possibility that "
+"new versions of packages cannot be installed because they require new things "
+"or conflict with already installed things. In this case the package will "
+"appear in the Kept Back list. The best way to convince packages listed there "
+"to install is with <literal>apt-get install</literal> or by using "
+"<command>dselect</command> to resolve their problems."
+msgstr ""
+"Jeśli aktualizowany jest cały system, to jest możliwe, że nowe wersje "
+"pakietów nie będą mogły być zainstalowane, ponieważ wymagają nowych pakietów "
+"lub są w konflikcie z już zainstalowanymi pakietami. W takim wypadku pakiet "
+"pojawi się na liście pakietów zatrzymanych. Najlepszym sposobem na "
+"zainstalowanie takich pakietów jest użycie <literal>apt-get install</"
+"literal> lub rozwiązanie problemów z zależnościami za pomocą programu "
+"<command>dselect</command>."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "Held Packages warning"
+msgstr "Ostrzeżenie o zmianie zatrzymanych pakietów"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following held packages will be changed:\n"
+" cvs\n"
+msgstr ""
+"Zostaną zmienione następujące zatrzymane pakiety:\n"
+" cvs\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Sometimes you can ask APT to install a package that is on hold, in such a "
+"case it prints out a warning that the held package is going to be changed. "
+"This should only happen during dist-upgrade or install."
+msgstr ""
+"Czasami można poprosić APT o zainstalowanie pakietu, który jest zatrzymany. "
+"W takim przypadku wypisywane jest ostrzeżenie o zmianie zatrzymanego "
+"pakietu. Może się to zdarzyć tylko podczas dist-upgrade lub install."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "Final summary"
+msgstr "Podsumowanie"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Finally, APT will print out a summary of all the changes that will occur."
+msgstr ""
+"APT zakończy raport podsumowaniem wszystkich zmian, które przeprowadzi."
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"206 packages upgraded, 8 newly installed, 23 to remove and 51 not upgraded.\n"
+"12 packages not fully installed or removed.\n"
+"Need to get 65.7M/66.7M of archives. After unpacking 26.5M will be used.\n"
+msgstr ""
+"206 aktualizowanych, 8 nowo instalowanych, 25 usuwanych i 51 nieaktualizowanych.\n"
+"12 nie w pełni zainstalowanych lub usuniętych.\n"
+"Konieczne pobranie 65.7M/66.7M archiwów. Po rozpakowaniu zostanie użyte 26.5M.\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The first line of the summary simply is a reduced version of all of the "
+"lists and includes the number of upgrades - that is packages already "
+"installed that have new versions available. The second line indicates the "
+"number of poorly configured packages, possibly the result of an aborted "
+"installation. The final line shows the space requirements that the "
+"installation needs. The first pair of numbers refer to the size of the "
+"archive files. The first number indicates the number of bytes that must be "
+"fetched from remote locations and the second indicates the total size of all "
+"the archives required. The next number indicates the size difference between "
+"the presently installed packages and the newly installed packages. It is "
+"roughly equivalent to the space required in /usr after everything is done. "
+"If a large number of packages are being removed then the value may indicate "
+"the amount of space that will be freed."
+msgstr ""
+"Pierwsza linia podsumowania jest uproszczoną wersją powyższych list i "
+"zawiera liczbę aktualizacji - to jest pakietów już zainstalowanych, których "
+"nowsze wersje są dostępne. W drugiej linii wyświetlono liczbę nie do końca "
+"skonfigurowanych pakietów, prawdopodobnie w wyniku przerwania poprzedniej "
+"instalacji. Ostatnia linia zawiera dane dotyczÄ…ce miejsca na dysku. Pierwsza "
+"para liczb odnosi się do rozmiaru plików archiwum: pierwsza liczba oznacza "
+"liczbę bajtów, które muszą zostać pobrane ze zdalnych serwerów, a druga - "
+"całkowity rozmiar wszystkich żądanych archiwów. Kolejna liczba oznacza "
+"różnicę rozmiarów pomiędzy obecnie zainstalowanymi pakietami, a nowo "
+"instalowanymi pakietami. W przybliżeniu odpowiada przestrzeni dysku, która "
+"będzie zajęta w /usr po zakończeniu instalacji. Wartość ta może wskazywać na "
+"zwolnienie miejsca na dysku, jeśli usuwana jest duża liczba pakietów."
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Some other reports can be generated by using the -u option to show packages "
+"to upgrade, they are similar to the previous examples."
+msgstr ""
+"Używając opcji -u, można wygenerować raport pokazujący pakiety przeznaczone "
+"do aktualizacji, podobny do tego pokazanego w poprzednim przykładzie."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "The Status Display"
+msgstr "Wyświetlanie stanu przetwarzania"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"During the download of archives and package files APT prints out a series of "
+"status messages."
+msgstr ""
+"Podczas pobierania archiwów i plików pakietów APT wyświetla serię "
+"komunikatów o stanie."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+"11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
+msgstr ""
+"# apt-get update\n"
+"Pob:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Pob:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Traf http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+"Pob:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Pob:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+"11% [5 testing/non-free `Oczekiwane na nagłówki' 0/32.1k 0%] 2203b/s 1m52s\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The lines starting with <emphasis>Get</emphasis> are printed out when APT "
+"begins to fetch a file while the last line indicates the progress of the "
+"download. The first percent value on the progress line indicates the total "
+"percent done of all files. Unfortunately since the size of the Package files "
+"is unknown <literal>apt-get update</literal> estimates the percent done "
+"which causes some inaccuracies."
+msgstr ""
+"Linie zaczynajÄ…ce siÄ™ od <emphasis>Pob:</emphasis> sÄ… wypisywane, kiedy APT "
+"zaczyna pobierać plik, a ostatnia linia oznacza postęp pobierania. Pierwsza "
+"wartość podana w procentach określa całkowity procent pobierania wszystkich "
+"plików. Niestety rozmiar plików Package nie jest znany, tak więc "
+"<literal>apt-get update</literal> estymuje procent wykonanego pobierania, co "
+"powoduje pewne nieścisłości."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The next section of the status line is repeated once for each download "
+"thread and indicates the operation being performed and some useful "
+"information about what is happening. Sometimes this section will simply read "
+"<emphasis>Forking</emphasis> which means the OS is loading the download "
+"module. The first word after the [ is the fetch number as shown on the "
+"history lines. The next word is the short form name of the object being "
+"downloaded. For archives it will contain the name of the package that is "
+"being fetched."
+msgstr ""
+"Następna sekcja linii statusu powtarza się dla każdego wątku pobierania, "
+"oznacza przeprowadzanie operacji i podaje kilka użytecznych informacji na "
+"temat tego, co siÄ™ dzieje. Czasem sekcja ta zawiera komunikat "
+"<emphasis>Tworzenie procesu potomnego</emphasis>, co oznacza, że system "
+"operacyjny ładuje moduł pobierania. Pierwszym słowem po znaku \"[\" jest "
+"liczba pobrań, dokładnie taka jaka jest pokazana liczba linii historii "
+"pobrań. Następnie w skróconej formie wyświetlana jest nazwa pobieranego "
+"obiektu. W przypadku archiwów nazwa ta będzie zawierać nazwę pobieranego "
+"pakietu."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Inside of the single quote is an informative string indicating the progress "
+"of the negotiation phase of the download. Typically it progresses from "
+"<emphasis>Connecting</emphasis> to <emphasis>Waiting for file</emphasis> to "
+"<emphasis>Downloading</emphasis> or <emphasis>Resuming</emphasis>. The final "
+"value is the number of bytes downloaded from the remote site. Once the "
+"download begins this is represented as <literal>102/10.2k</literal> "
+"indicating that 102 bytes have been fetched and 10.2 kilobytes is expected. "
+"The total size is always shown in 4 figure notation to preserve space. After "
+"the size display is a percent meter for the file itself. The second last "
+"element is the instantaneous average speed. This values is updated every 5 "
+"seconds and reflects the rate of data transfer for that period. Finally is "
+"shown the estimated transfer time. This is updated regularly and reflects "
+"the time to complete everything at the shown transfer rate."
+msgstr ""
+"W pojedynczych cudzysłowach podawany jest komunikat wskazujący na postęp "
+"tworzenia połączenia pobierania danych. Zazwyczaj postęp ten jest sekwencją "
+"zdarzeń od <emphasis>Podłączanie</emphasis> przez <emphasis>Oczekiwanie na "
+"nagłówki</emphasis> do <emphasis>Pobieranie</emphasis> lub "
+"<emphasis>Wznawianie</emphasis>. Końcową wartością jest liczba bajtów "
+"pobranych ze zdalnego serwera. Kiedy tylko pobieranie siÄ™ rozpocznie, "
+"wartość ta jest wyświetlana jw formacie typu <literal>102/10.2k</literal>, "
+"co oznacza, że pobrano 102 bajty, a oczekuje się jeszcze pobrania 10.2 "
+"kilobajtów. Aby zaoszczędzić miejsce, całkowity rozmiar jest zawsze "
+"wyświetlany jako w postaci 4-znakowej. Po rozmiarze następuje procentowy "
+"wskaźnik postępu pobierania danego pliku. Przedostatnim elementem jest "
+"bieżąca średnia prędkość pobierania, która jest aktualizowane co każde 5 "
+"sekund i odzwierciedla tempo pobierania w tym okresie. W końcu wyświetlany "
+"jest estymowany czas pobierania, regularnie aktualizowany i "
+"odzwierciedlający czas pozostały do zakończenia pobierania przy założeniu "
+"utrzymania siÄ™ pokazanego tempa pobierania."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The status display updates every half second to provide a constant feedback "
+"on the download progress while the Get lines scroll back whenever a new file "
+"is started. Since the status display is constantly updated it is unsuitable "
+"for logging to a file, use the <literal>-q</literal> option to remove the "
+"status display."
+msgstr ""
+"Linia stanu jest aktualizowana co każde pół sekundy, aby na bieżąco "
+"informować użytkownika o postępie pobierania, podczas gdy linie \"Pob:\" są "
+"przesuwane w dół, gdy tylko zacznie się pobieranie nowego pliku. Ponieważ "
+"linia stanu jest ciągle zmieniana, wyjście programu nie jest odpowiednie do "
+"przekierowania do pliku. Aby usunąć linie stanu, należy użyć opcji <literal>-"
+"q</literal>."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Dpkg"
+msgstr "Dpkg"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"APT uses <command>dpkg</command> for installing the archives and will switch "
+"over to the <command>dpkg</command> interface once downloading is completed. "
+"<command>dpkg</command> will also ask a number of questions as it processes "
+"the packages and the packages themselves may also ask several questions. "
+"Before each question there is usually a description of what it is asking and "
+"the questions are too varied to discuss completely here."
+msgstr ""
+"APT używa programu <command>dpkg</command> do instalowania archiwów i "
+"przełączy się do interfejsu <command>dpkg</command>, gdy tylko zakończy "
+"pobieranie plików. <command>dpkg</command> może również zadawać pytania "
+"podczas przetwarzania pakietów, a same pakiety także mogą zadawać pytania. "
+"Każde pytanie zazwyczaj jest poprzedzone opisem, a same pytania są zbyt "
+"zróżnicowane, by je tutaj opisać."
+
+#. type: Content of: <book><title>
+#: offline.dbk
+msgid "Using APT Offline"
+msgstr "Używanie APT w trybie offline"
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: offline.dbk
+msgid ""
+"This document describes how to use APT in a non-networked environment, "
+"specifically a 'sneaker-net' approach for performing upgrades."
+msgstr ""
+"Dokument ten opisuje używanie programu APT w środowiskach pozbawionych "
+"dostępu, do sieci, a w szczególności metodę pozwalającą na przeprowadzanie "
+"aktualizacji systemu."
+
+#. type: Content of: <book><bookinfo>
+#: offline.dbk
+msgid ""
+"<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Introduction"
+msgstr "Wstęp"
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "Overview"
+msgstr "Wprowadzenie"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Normally APT requires direct access to a Debian archive, either from a local "
+"media or through a network. Another common complaint is that a Debian "
+"machine is on a slow link, such as a modem and another machine has a very "
+"fast connection but they are physically distant."
+msgstr ""
+"Zazwyczaj APT wymaga bezpośredniego dostępu do archiwów Debiana przez sieć "
+"lokalną albo przez sieć internetową. Kolejną niedogodnością może być fakt, "
+"że nasz komputer, który pracuje na powolnym łączu takim jak modem, jest "
+"znacznie oddalony od innego komputera z szybkim Å‚Ä…czem."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The solution to this is to use large removable media such as a Zip disc or a "
+"SuperDisk disc. These discs are not large enough to store the entire Debian "
+"archive but can easily fit a subset large enough for most users. The idea is "
+"to use APT to generate a list of packages that are required and then fetch "
+"them onto the disc using another machine with good connectivity. It is even "
+"possible to use another Debian machine with APT or to use a completely "
+"different OS and a download tool like wget. Let <emphasis>remote host</"
+"emphasis> mean the machine downloading the packages, and <emphasis>target "
+"host</emphasis> the one with bad or no connection."
+msgstr ""
+"Rozwiązaniem tego problemu jest użycie pojemnych przenośnych nośników takich "
+"jak dyskietka Zip lub dysk SuperDisk. Nośniki te nie są wystarczająco "
+"pojemne, by zgromadzić kompletne archiwum Debiana, ale można śmiało "
+"dopasować podzbiór dużego archiwum wystarczający dla większości "
+"użytkowników. Pomysł polega na tym, by użyć programu APT do wygenerowania "
+"listy pakietów, które są wymagane, a następnie pobraniu ich na dysk, "
+"używając innego komputera z właściwą zwartością. Jest nawet możliwe, by użyć "
+"innego komputera z Debianem z zainstalowanym programem APT lub zupełnie "
+"innym systemem operacyjnym i programem narzędziowym do pobierania plików "
+"takim jak wget."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+#, fuzzy
+#| msgid ""
+#| "This is achieved by creatively manipulating the APT configuration file. "
+#| "The essential premise to tell APT to look on a disc for it's archive "
+#| "files. Note that the disc should be formated with a filesystem that can "
+#| "handle long file names such as ext2, fat32 or vfat."
+msgid ""
+"This is achieved by creatively manipulating the APT configuration file. The "
+"essential premise to tell APT to look on a disc for it's archive files. Note "
+"that the disc should be formatted with a filesystem that can handle long "
+"file names such as ext2, fat32 or vfat."
+msgstr ""
+"Osiągane jest to przez twórcze manipulowanie plikiem konfiguracyjnym "
+"programu APT. Rzeczą niezbędną jest poinformowanie programu APT, aby "
+"wskazywał na dysk z plikami archiwum. Należy zauważyć, że dysk powinien być "
+"sformatowany do obsługi systemu plików pozwalającego posługiwać się długimi "
+"nazwami plików (np. ext2, fat32 albo vfat)."
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Using APT on both machines"
+msgstr "Używanie programu APT na obu komputerach"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"APT being available on both machines gives the simplest configuration. The "
+"basic idea is to place a copy of the status file on the disc and use the "
+"remote machine to fetch the latest package files and decide which packages "
+"to download. The disk directory structure should look like:"
+msgstr ""
+"APT dostępny na obu komputerach daje najprostszą kombinację. Zasadniczym "
+"pomysłem tej metody jest umieszczenie kopii pliku status na dysku i użycie "
+"odległego komputera, aby uzyskać najnowsze pliki pakietów i zdecydować, "
+"które pakiety trzeba pobrać. Struktura katalogów na dysku powinna wyglądać "
+"następująco:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" /disc/\n"
+" archives/\n"
+" partial/\n"
+" lists/\n"
+" partial/\n"
+" status\n"
+" sources.list\n"
+" apt.conf\n"
+msgstr ""
+" /disc/\n"
+" archives/\n"
+" partial/\n"
+" lists/\n"
+" partial/\n"
+" status\n"
+" sources.list\n"
+" apt.conf\n"
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "The configuration file"
+msgstr "Plik konfiguracyjny"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The configuration file should tell APT to store its files on the disc and to "
+"use the configuration files on the disc as well. The sources.list should "
+"contain the proper sites that you wish to use from the remote machine, and "
+"the status file should be a copy of <emphasis>/var/lib/dpkg/status</"
+"emphasis> from the <emphasis>target host</emphasis>. Please note, if you are "
+"using a local archive you must use copy URIs, the syntax is identical to "
+"file URIs."
+msgstr ""
+"Plik konfiguracyjny powinien informować program APT, aby przechowywał swoje "
+"pliki na dysku, a także używał plików konfiguracyjnych z dysku. Plik sources."
+"list powinien zawierać prawidłowe odnośniki, których należy użyć na zdalnym "
+"komputerze, a plik status powinien być kopią <emphasis>/var/lib/dpkg/status</"
+"emphasis>. Należy zauważyć, że podczas używania lokalnego archiwum trzeba "
+"użyć tych samych odnośników o identycznej składni."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"<emphasis>apt.conf</emphasis> must contain the necessary information to make "
+"APT use the disc:"
+msgstr ""
+"<emphasis>apt.conf</emphasis> musi zawierać niezbędne wpisy, by APT "
+"korzystał z dysku:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" APT\n"
+" {\n"
+" /* This is not necessary if the two machines are the same arch, it tells\n"
+" the remote APT what architecture the target machine is */\n"
+" Architecture \"i386\";\n"
+"\n"
+" Get::Download-Only \"true\";\n"
+" };\n"
+"\n"
+" Dir\n"
+" {\n"
+" /* Use the disc for state information and redirect the status file from\n"
+" the /var/lib/dpkg default */\n"
+" State \"/disc/\";\n"
+" State::status \"status\";\n"
+"\n"
+" // Binary caches will be stored locally\n"
+" Cache::archives \"/disc/archives/\";\n"
+" Cache \"/tmp/\";\n"
+"\n"
+" // Location of the source list.\n"
+" Etc \"/disc/\";\n"
+" };\n"
+msgstr ""
+" APT\n"
+" {\n"
+" /* Wpis nie jest wymagany, jeśli oba komputery mają tę samą architekturę;\n"
+" podaje architekturę naszego komputera programowi APT na odległym komputerze */\n"
+" Architecture \"i386\";\n"
+"\n"
+" Get::Download-Only \"true\";\n"
+" };\n"
+"\n"
+" Dir\n"
+" {\n"
+" /* Używaj katalogu disc na informacje stanu i przekieruj plik status\n"
+" z domyślnego /var/lib/dpkg */\n"
+" State \"/disc/\";\n"
+" State::status \"status\";\n"
+"\n"
+" // Katalog lokalnie przechowywanych pakietów binarnych\n"
+" Cache::archives \"/disc/archives/\";\n"
+" Cache \"/tmp/\";\n"
+"\n"
+" // Lokalizacja pliku sources.list.\n"
+" Etc \"/disc\";\n"
+" };\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"More details can be seen by examining the apt.conf man page and the sample "
+"configuration file in <emphasis>/usr/share/doc/apt/examples/apt.conf</"
+"emphasis>."
+msgstr ""
+"Więcej szczegółów można zobaczyć w stronie podręcznika apt.conf i w "
+"przykładowym pliku konfiguracyjnym <emphasis>/usr/share/doc/apt/examples/apt."
+"conf</emphasis>."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"On the target machine the first thing to do is mount the disc and copy "
+"<emphasis>/var/lib/dpkg/status</emphasis> to it. You will also need to "
+"create the directories outlined in the Overview, <emphasis>archives/partial/"
+"</emphasis> and <emphasis>lists/partial/</emphasis>. Then take the disc to "
+"the remote machine and configure the sources.list. On the remote machine "
+"execute the following:"
+msgstr ""
+"Pierwszą rzeczą, jaką należy zrobić na oddalonym komputerze z Debianem to "
+"zamontować dysk i przekopiować na niego plik <emphasis>/var/lib/dpkg/status</"
+"emphasis>. Trzeba także utworzyć strukturę katalogów przedstawioną we "
+"\"Wprowadzeniu\": <emphasis>archives/partial/</emphasis> i <emphasis>lists/"
+"partial/</emphasis>. Następnie należy przenieść dysk do oddalonego komputera "
+"z szybkim łączem i skonfigurować plik sources.list. Na oddalonym komputerze "
+"wykonujemy kolejno:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get update\n"
+" [ APT fetches the package files ]\n"
+" # apt-get dist-upgrade\n"
+" [ APT fetches all the packages needed to upgrade the target machine ]\n"
+msgstr ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get update\n"
+" [ APT aktualizuje ustawienia ]\n"
+" # apt-get dist-upgrade\n"
+" [ APT pobiera wszystkie pakiety potrzebne do aktualizacji Twojego systemu ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The dist-upgrade command can be replaced with any other standard APT "
+"commands, particularly dselect-upgrade. You can even use an APT front end "
+"such as <emphasis>dselect</emphasis>. However this presents a problem in "
+"communicating your selections back to the local computer."
+msgstr ""
+"Polecenie dist-upgrade można zastąpić każdym innym podstawowym poleceniem "
+"APT, w szczególności dselect-upgrade. Można nawet użyć APT jako metody "
+"dostępu dla <emphasis>dselect</emphasis>. Jednak stworzy to problem w "
+"przeniesieniu Twoich operacji wyborów z powrotem na lokalny komputer."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Now the disc contains all of the index files and archives needed to upgrade "
+"the target machine. Take the disc back and run:"
+msgstr ""
+"W tej chwili katalog disc zawiera wszystkie pliki indeksowe oraz archiwa "
+"niezbędne do aktualizacji maszyny z Debianem. Bierzemy dysk z powrotem do "
+"siebie i wpisujemy:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get check\n"
+" [ APT generates a local copy of the cache files ]\n"
+" # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
+" [ Or any other APT command ]\n"
+msgstr ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get check\n"
+" [ APT tworzy lokalną kopię plików cache ]\n"
+" # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
+" [ Może też być inne polecenie programu APT ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"It is necessary for proper function to re-specify the status file to be the "
+"local one. This is very important!"
+msgstr ""
+"Do prawidłowego działania koniecznie należy podać plik status z lokalnej "
+"maszyny. To jest bardzo ważne!"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"If you are using dselect you can do the very risky operation of copying disc/"
+"status to /var/lib/dpkg/status so that any selections you made on the remote "
+"machine are updated. I highly recommend that people only make selections on "
+"the local machine - but this may not always be possible. DO NOT copy the "
+"status file if dpkg or APT have been run in the mean time!!"
+msgstr ""
+"Jeśli używasz dselect, możesz wykonać bardzo ryzykowną operację skopiowania "
+"disc/status do /var/lib/dpkg/status, tak że wszystkie zmiany, których "
+"dokonałeś na odległym komputerze, będą przeniesione. Mocno zalecam, aby "
+"dokonywać doboru pakietów tylko na lokalnym komputerze, ale nie zawsze jest "
+"to możliwe. NIE podmieniaj pliku status, jeśli dpkg lub APT były uruchamiane "
+"w międzyczasie!"
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Using APT and wget"
+msgstr "Używanie programów APT i wget"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"<emphasis>wget</emphasis> is a popular and portable download tool that can "
+"run on nearly any machine. Unlike the method above this requires that the "
+"Debian machine already has a list of available packages."
+msgstr ""
+"<emphasis>wget</emphasis> jest popularnym i przenośnym programem "
+"narzędziowym pobierania plików, który działa prawie na każdym komputerze. W "
+"przeciwieństwie do metody opisanej powyżej ta wymaga, aby na lokalnym "
+"komputerze była aktualna lista dostępnych pakietów."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The basic idea is to create a disc that has only the archive files "
+"downloaded from the remote site. This is done by using the --print-uris "
+"option to apt-get and then preparing a wget script to actually fetch the "
+"packages."
+msgstr ""
+"Należy stworzyć katalog disc tylko na pakiety do pobrania z innego "
+"komputera. Użyta zostanie do tego opcja --print-uris programu apt-get, a "
+"następnie przygotujemy skrypt dla programu wget, który pobierze właściwe "
+"pakiety."
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "Operation"
+msgstr "Kolejne kroki"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Unlike the previous technique no special configuration files are required. "
+"We merely use the standard APT commands to generate the file list."
+msgstr ""
+"W odróżnieniu od poprzedniej metody działania ta nie wymaga specjalnych "
+"plików konfiguracyjnych. Używamy jedynie podstawowych poleceń APT, by "
+"wygenerować listę plików."
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # apt-get dist-upgrade\n"
+" [ Press no when prompted, make sure you are happy with the actions ]\n"
+" # apt-get -qq --print-uris dist-upgrade &gt; uris\n"
+" # awk '{print \"wget -O \" $2 \" \" $1}' &lt; uris &gt; /disc/wget-script\n"
+msgstr ""
+" # apt-get dist-upgrade \n"
+" [ Wybierz \"no\" po znaku zachęty, upewnij się, czy to właściwy wybór ]\n"
+" # apt-get -qq --print-uris dist-upgrade &gt; uris\n"
+" # awk '{print \"wget -O \" $2 \" \" $1}' &lt; uris &gt; /disc/wget-script\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Any command other than dist-upgrade could be used here, including dselect-"
+"upgrade."
+msgstr ""
+"Można tu użyć także polecenia innego niż dist-upgrade, na przykład dselect-"
+"upgrade."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The /disc/wget-script file will now contain a list of wget commands to "
+"execute in order to fetch the necessary archives. This script should be run "
+"with the current directory as the disc's mount point so as to save the "
+"output on the disc."
+msgstr ""
+"Plik skryptu /disc/wget-script będzie teraz zawierać listę wywołań programu "
+"wget, niezbędnych do pobrania potrzebnych archiwów. Skrypt ten należy "
+"uruchomić w bieżącym katalogu o punkcie montowania disc, tak aby zapisywał "
+"dane na tym dysku."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid "The remote machine would do something like"
+msgstr "Na oddalonym komputerze należy wykonać coś takiego"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # cd /disc\n"
+" # sh -x ./wget-script\n"
+" [ wait.. ]\n"
+msgstr ""
+" # cd /disc\n"
+" # sh -x ./wget-script\n"
+" [ czekaj.. ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Once the archives are downloaded and the disc returned to the Debian machine "
+"installation can proceed using,"
+msgstr ""
+"Gdy archiwa zostaną pobrane i dysk wróci do komputera z Debianem, "
+"instalowanie można prowadzić dalej poleceniem:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
+msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid "Which will use the already fetched archives on the disc."
+msgstr "Które użyje pobranych uprzednio archiwów z dysku."
+
+#~ msgid ""
+#~ "DPkg::NoTriggers \"true\";\n"
+#~ "PackageManager::Configure \"smart\";\n"
+#~ "DPkg::ConfigurePending \"true\";\n"
+#~ "DPkg::TriggersPending \"true\";"
+#~ msgstr ""
+#~ "DPkg::NoTriggers \"true\";\n"
+#~ "PackageManager::Configure \"smart\";\n"
+#~ "DPkg::ConfigurePending \"true\";\n"
+#~ "DPkg::TriggersPending \"true\";"
+
+#~ msgid ""
+#~ "OrderList::Score {\n"
+#~ "\tDelete 500;\n"
+#~ "\tEssential 200;\n"
+#~ "\tImmediate 10;\n"
+#~ "\tPreDepends 50;\n"
+#~ "};"
+#~ msgstr ""
+#~ "OrderList::Score {\n"
+#~ "\tDelete 500;\n"
+#~ "\tEssential 200;\n"
+#~ "\tImmediate 10;\n"
+#~ "\tPreDepends 50;\n"
+#~ "};"
+
+#~ msgid "List fingerprints of trusted keys."
+#~ msgstr "Wyświetla listę odcisków zaufanych kluczy."
+
+#~ msgid "<filename>/etc/apt/trustdb.gpg</filename>"
+#~ msgstr "<filename>/etc/apt/trustdb.gpg</filename>"
+
+#~ msgid "Local trust database of archive keys."
+#~ msgstr "Lokalna składnica zaufanych kluczy archiwum."
+
+#~ msgid "&keyring-filename;"
+#~ msgstr "&keyring-filename;"
+
+#~ msgid "Keyring of &keyring-distro; archive trusted keys."
+#~ msgstr "Składnica zaufanych kluczy archiwum &keyring-distro;."
+
+#~ msgid "&keyring-removed-filename;"
+#~ msgstr "&keyring-removed-filename;"
+
+#~ msgid "Keyring of &keyring-distro; archive removed trusted keys."
+#~ msgstr "Składnica usuniętych zaufanych kluczy archiwum &keyring-distro;."
+
+#, fuzzy
+#~| msgid "&apt-cache; &apt-conf;"
+#~ msgid "&apt-get;, &apt-conf;"
+#~ msgstr "&apt-cache;, &apt-conf;"
+
+#
+#, fuzzy
+#~| msgid ""
+#~| "<literal>rdepends</literal> shows a listing of each reverse dependency a "
+#~| "package has."
+#~ msgid ""
+#~ "<literal>show</literal> shows the package information for the given "
+#~ "package(s)."
+#~ msgstr ""
+#~ "<literal>rdepends</literal> pokazuje listÄ™ wszystkich odwrotnych "
+#~ "zależności danego pakietu."
+
+#, fuzzy
+#~| msgid ""
+#~| "<literal>showhold</literal> is used to print a list of packages on hold "
+#~| "in the same way as for the other show commands."
+#~ msgid ""
+#~ "<literal>update</literal> is used to resynchronize the package index "
+#~ "files from their sources."
+#~ msgstr ""
+#~ "<literal>showhold</literal> jest używane do wypisania listy wszystkich "
+#~ "pakietów wstrzymanych, w taki sam sposób jak pozostałe polecenia \"show\"."
+
+#, fuzzy
+#~| msgid "the <literal>Package:</literal> line"
+#~ msgid "The option <literal>DPkg::Progress-Fancy</literal> is enabled."
+#~ msgstr "linia <literal>Package:</literal>"
+
+#, fuzzy
+#~| msgid "the <literal>Component:</literal> line"
+#~ msgid "The option <literal>APT::Color</literal> is enabled."
+#~ msgstr "linia <literal>Component:</literal>"
+
+#, fuzzy
+#~| msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line"
+#~ msgid ""
+#~ "The option <literal>upgrade</literal> has <literal>--with-new-pkgs</"
+#~ "literal> enabled by default."
+#~ msgstr "linia <literal>Archive:</literal> lub <literal>Suite:</literal>"
+
+#~ msgid ""
+#~ "Pass advanced options to gpg. With adv --recv-key you can download the "
+#~ "public key."
+#~ msgstr ""
+#~ "Przekazuje zaawansowane opcje do gpg. Na przykład adv --recv-key "
+#~ "umożliwia pobranie klucza publicznego."
+
+#~ msgid "mark/unmark a package as being automatically-installed"
+#~ msgstr "Zaznaczanie/odznaczanie pakietu jako zainstalowanego automatycznie."
+
+#~ msgid ""
+#~ "<command>apt-mark</command> will change whether a package has been marked "
+#~ "as being automatically installed."
+#~ msgstr ""
+#~ "<command>apt-mark</command> zmienia flagę mówiącą o tym, czy pakiet był "
+#~ "zainstalowany automatycznie."
+
+#~ msgid ""
+#~ "<literal>hold</literal> is used to mark a package as held back, which "
+#~ "will prevent the package from being automatically installed, upgraded or "
+#~ "removed. The command is only a wrapper around <command>dpkg --set-"
+#~ "selections</command> and the state is therefore maintained by &dpkg; and "
+#~ "not affected by the <option>--file</option> option."
+#~ msgstr ""
+#~ "<literal>hold</literal> jest używane do wstrzymania pakietu, co zabroni "
+#~ "automatycznego instalowania, aktualizowania lub usuwania pakietu. "
+#~ "Polecenie jest nakładką na <command>dpkg --set-selections</command>, stan "
+#~ "pakietu jest zarzÄ…dzany przez &dpkg;, a opcja <option>--file</option> nie "
+#~ "wpływa na działanie tego polecenia."
+
+#~ msgid ""
+#~ "If a package comes from a archive without a signature, or with a "
+#~ "signature that apt does not have a key for, that package is considered "
+#~ "untrusted, and installing it will result in a big warning. <command>apt-"
+#~ "get</command> will currently only warn for unsigned archives; future "
+#~ "releases might force all sources to be verified before downloading "
+#~ "packages from them."
+#~ msgstr ""
+#~ "Jeśli pakiet pochodzi z archiwum niemającego sygnatury lub mającego "
+#~ "sygnaturę, dla której APT nie ma klucza, to pakiet taki jest uznawany za "
+#~ "niezaufany, a podczas jego instalacji zostanie wypisane ostrzeżenie. "
+#~ "Obecnie <command>apt-get</command> tylko wypisuje ostrzeżenia o "
+#~ "niepodpisanych archiwach, przyszłe wydania mogą wymuszać, by wszystkie "
+#~ "źródła były zweryfikowane, zanim w ogóle APT spróbuje z nich pobrać "
+#~ "pakiety."
+
+#
+#~ msgid ""
+#~ "No action; perform a simulation of events that would occur but do not "
+#~ "actually change the system. Configuration Item: <literal>APT::Get::"
+#~ "Simulate</literal>."
+#~ msgstr ""
+#~ "Brak akcji; wykonuje symulację zdarzeń, które mogłyby się przytrafić, ale "
+#~ "nic nie zmienia w systemie. Pozycja w pliku konfiguracyjnym: "
+#~ "<literal>APT::Get::Simulate</literal>."
+
+#~ msgid ""
+#~ "Simulated runs performed as a user will automatically deactivate locking "
+#~ "(<literal>Debug::NoLocking</literal>), and if the option <literal>APT::"
+#~ "Get::Show-User-Simulation-Note</literal> is set (as it is by default) a "
+#~ "notice will also be displayed indicating that this is only a simulation. "
+#~ "Runs performed as root do not trigger either NoLocking or the notice - "
+#~ "superusers should know what they are doing without further warnings from "
+#~ "<literal>apt-get</literal>."
+#~ msgstr ""
+#~ "Symulowane uruchomienia przeprowadzane przez przez zwykłego użytkownika "
+#~ "automatycznie wyłączą blokady (<literal>Debug::NoLocking</literal>). "
+#~ "Jeżeli jest ustawiona opcja <literal>APT::Get::Show-User-Simulation-Note</"
+#~ "literal> (a domyślnie jest ona ustawiona), to zostanie wyświetlona "
+#~ "informacja o tym, że to jest tylko symulacja. Symulacje przeprowadzane "
+#~ "przez administratora systemu nie powodują wyłączenia blokad ani nie "
+#~ "pokazują informacji - administratorzy powinni wiedzieć, co robią, bez "
+#~ "dodatkowych ostrzeżeń ze strony <literal>apt-get</literal>."
+
+#~ msgid ""
+#~ "Ignore if packages can't be authenticated and don't prompt about it. "
+#~ "This is useful for tools like pbuilder. Configuration Item: "
+#~ "<literal>APT::Get::AllowUnauthenticated</literal>."
+#~ msgstr ""
+#~ "Ignorowanie sytuacji, w których nie powiedzie się autentykacja pakietów i "
+#~ "nieostrzeganie o tym. Jest to użyteczne dla programów typu pbuilder. "
+#~ "Pozycja w pliku konfiguracyjnym: <literal>APT::Get::AllowUnauthenticated</"
+#~ "literal>."
+
+#~ msgid ""
+#~ "to the versions that are not installed and do not belong to the target "
+#~ "release."
+#~ msgstr "wersjom niezainstalowanym i nienależącym do wydania docelowego."
+
+#~ msgid ""
+#~ "Each line specifying a source starts with type (e.g. <literal>deb-src</"
+#~ "literal>) followed by options and arguments for this type. Individual "
+#~ "entries cannot be continued onto a following line. Empty lines are "
+#~ "ignored, and a <literal>#</literal> character anywhere on a line marks "
+#~ "the remainder of that line as a comment."
+#~ msgstr ""
+#~ "Każda linia określająca źródło rozpoczyna się od typu (np. <literal>deb-"
+#~ "src</literal>), po którym następują opcje i argumenty dla tego typu. "
+#~ "Wpisy nie mogą być kontynuowane w nowych liniach. Puste linie są "
+#~ "ignorowane, a znak \"<literal>#</literal> \" występujący gdziekolwiek w "
+#~ "linii oznacza, że dalsza część linii stanowi komentarz."
+
+#, fuzzy
+#~| msgid "deb [ options ] uri distribution [component1] [component2] [...]"
+#~ msgid "deb [ options ] uri suite [component1] [component2] [...]"
+#~ msgstr "deb [ opcje ] uri dystrybucja [komponent1] [komponent2] [...]"
+
+#~ msgid ""
+#~ "<literal>options</literal> is always optional and needs to be surrounded "
+#~ "by square brackets. It can consist of multiple settings in the form "
+#~ "<literal><replaceable>setting</replaceable>=<replaceable>value</"
+#~ "replaceable></literal>. Multiple settings are separated by spaces. The "
+#~ "following settings are supported by APT (note however that unsupported "
+#~ "settings will be ignored silently):"
+#~ msgstr ""
+#~ "<literal>opcje</literal> nigdy nie są wymagane i powinny być otoczone "
+#~ "przez nawiasy kwadratowe. Mogą się składać z wielu ustawień w formacie "
+#~ "<literal><replaceable>ustawienie</replaceable>=<replaceable>wartość</"
+#~ "replaceable></literal> oddzielonych od siebie znakami spacji. APT "
+#~ "obsługuje następujące ustawienia (a ustawienia nieobsługiwane są "
+#~ "ignorowane bez wypisywania żadnego ostrzeżenia):"
+
+#, fuzzy
+#~| msgid ""
+#~| "<literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#~| "replaceable>,…</literal> can be used to specify for which architectures "
+#~| "information should be downloaded. If this option is not set all "
+#~| "architectures defined by the <literal>APT::Architectures</literal> "
+#~| "option will be downloaded."
+#~ msgid ""
+#~ "<literal>arch+=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#~ "replaceable>,…</literal> and <literal>arch-=<replaceable>arch1</"
+#~ "replaceable>,<replaceable>arch2</replaceable>,…</literal> which can be "
+#~ "used to add/remove architectures from the set which will be downloaded."
+#~ msgstr ""
+#~ "<literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#~ "replaceable>,…</literal> może zostać użyte do podania architektur, dla "
+#~ "których będą pobierane informacje o pakietach. Jeśli ta opcja nie jest "
+#~ "ustawiona, będą pobierane informacje dla wszystkich architektur "
+#~ "określonych w opcji konfiguracji <literal>APT::Architectures</literal>."
+
+#~ msgid ""
+#~ "<literal>trusted=yes</literal> can be set to indicate that packages from "
+#~ "this source are always authenticated even if the <filename>Release</"
+#~ "filename> file is not signed or the signature can't be checked. This "
+#~ "disables parts of &apt-secure; and should therefore only be used in a "
+#~ "local and trusted context. <literal>trusted=no</literal> is the opposite "
+#~ "which handles even correctly authenticated sources as not authenticated."
+#~ msgstr ""
+#~ "<literal>trusted=yes</literal> może być użyte do wskazania, że pakiety z "
+#~ "tego źródła są zawsze zautentykowane, nawet jeśli plik <filename>Release</"
+#~ "filename> nie jest podpisany lub nie można sprawdzić podpisu. Wyłącza to "
+#~ "częściowo &apt-secure; i dlatego powinno być używane tylko dla źródeł "
+#~ "lokalnych i zaufanych. Przeciwieństwem tej opcji jest "
+#~ "<literal>trusted=no</literal>, która obsługuje nawet poprawnie "
+#~ "zautentykowane źródła jako niezautentykowane."
+
+#~ msgid "Some examples:"
+#~ msgstr "Kilka przykładów:"
+
+#~ msgid ""
+#~ "deb http://ftp.debian.org/debian &debian-stable-codename; main contrib "
+#~ "non-free\n"
+#~ "deb http://security.debian.org/ &debian-stable-codename;/updates main "
+#~ "contrib non-free\n"
+#~ " "
+#~ msgstr ""
+#~ "deb http://ftp.debian.org/debian &debian-stable-codename; main contrib "
+#~ "non-free\n"
+#~ "deb http://security.debian.org/ &debian-stable-codename;/updates main "
+#~ "contrib non-free\n"
+#~ " "
+
+#~ msgid "apt"
+#~ msgstr "apt"
+
+#~ msgid "16 June 1998"
+#~ msgstr "16 czerwca 1998"
+
+#~ msgid "Debian"
+#~ msgstr "Debian"
+
+#~ msgid "NAME"
+#~ msgstr "NAZWA"
+
+#~ msgid "apt - Advanced Package Tool"
+#~ msgstr "apt - Zaawansowane narzędzie zarządzania pakietami"
+
+#~ msgid "SYNOPSIS"
+#~ msgstr "SKÅADNIA"
+
+#~ msgid "B<apt>"
+#~ msgstr "B<apt>"
+
+#~ msgid "DESCRIPTION"
+#~ msgstr "OPIS"
+
+#, fuzzy
+#~| msgid ""
+#~| "APT is a management system for software packages. For normal day to day "
+#~| "package management there are several front-ends available, such as "
+#~| "B<aptitude>(8) for the command line or B<synaptic>(8) for the X Window "
+#~| "System. Some options are only implemented in B<apt-get>(8) though."
+#~ msgid ""
+#~ "For normal day to day package management there are several front-ends "
+#~ "available, such as B<aptitude>(8) for the command line or "
+#~ "B<synaptic>(8) for the X Window System. Some options are only "
+#~ "implemented in B<apt-get>(8) though."
+#~ msgstr ""
+#~ "APT jest systemem zarzÄ…dzania pakietami oprogramowania. Jest kilka "
+#~ "nakładek przydatnych do codziennego zarządzania pakietami, takich jak "
+#~ "B<aptitude>(8), działające w linii poleceń, lub B<synaptic>(8), "
+#~ "wymagający środowiska X Window. Niemniej jednak niektóre opcje są "
+#~ "dostępne tylko w B<apt-get>(8)."
+
+#~ msgid "SEE ALSO"
+#~ msgstr "ZOBACZ TAKŻE"
+
+#, fuzzy
+#~| msgid ""
+#~| "B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources.list>(5), "
+#~| "B<apt_preferences>(5), B<apt-secure>(8)"
+#~ msgid ""
+#~ "B<apt>(8), B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources."
+#~ "list>(5), B<apt_preferences>(5), B<apt-secure>(8)"
+#~ msgstr ""
+#~ "B<apt-cache>(8), B<apt-get>(8), B<apt.conf>(5), B<sources.list>(5), "
+#~ "B<apt_preferences>(5), B<apt-secure>(8)"
+
+#~ msgid "DIAGNOSTICS"
+#~ msgstr "DIAGNOSTYKA"
+
+#~ msgid "apt returns zero on normal operation, decimal 100 on error."
+#~ msgstr ""
+#~ "apt zwraca zero, jeżeli zakończyło się pomyślnie, 100 dziesiętnie w "
+#~ "przypadku błędu."
+
+#~ msgid "BUGS"
+#~ msgstr "BÅĘDY"
+
+#~ msgid "This manpage isn't even started."
+#~ msgstr "Ta strona podręcznika nie jest nawet zaczęta."
+
+#~ msgid ""
+#~ "See E<lt>http://bugs.debian.org/aptE<gt>. If you wish to report a bug in "
+#~ "B<apt>, please see I</usr/share/doc/debian/bug-reporting.txt> or the "
+#~ "B<reportbug>(1) command."
+#~ msgstr ""
+#~ "Patrz E<lt>http://bugs.debian.org/aptE<gt>. Aby wysłać zgłoszenie o "
+#~ "błędzie w programie B<apt>, przeczytaj I</usr/share/doc/debian/bug-"
+#~ "reporting.txt> lub użyj polecenia B<reportbug>(1)."
+
+#~ msgid "AUTHOR"
+#~ msgstr "AUTOR"
+
+#~ msgid "apt was written by the APT team E<lt>apt@packages.debian.orgE<gt>."
+#~ msgstr ""
+#~ "apt zostało napisane przez zespół APT E<lt>apt@packages.debian.orgE<gt>."
+
+#~ msgid "Package resource list for APT"
+#~ msgstr "Lista zasobów pakietów dla APT"
+
+#~ msgid ""
+#~ "The package resource list is used to locate archives of the package "
+#~ "distribution system in use on the system. At this time, this manual page "
+#~ "documents only the packaging system used by the Debian system. This "
+#~ "control file is <filename>/etc/apt/sources.list</filename>."
+#~ msgstr ""
+#~ "Lista zasobów pakietów jest używana do zlokalizowania archiwów pakietów "
+#~ "używanego systemu dystrybucji pakietów. Obecnie ta strona podręcznika "
+#~ "opisuje tylko system pakietów używany w systemie Debian. Plikiem "
+#~ "kontrolnym jest <filename>/etc/apt/sources.list</filename>."
+
+#~ msgid ""
+#~ "The source list is designed to support any number of active sources and a "
+#~ "variety of source media. The file lists one source per line, with the "
+#~ "most preferred source listed first. The format of each line is: "
+#~ "<literal>type uri args</literal> The first item, <literal>type</literal> "
+#~ "determines the format for <literal>args</literal>. <literal>uri</literal> "
+#~ "is a Universal Resource Identifier (URI), which is a superset of the more "
+#~ "specific and well-known Universal Resource Locator, or URL. The rest of "
+#~ "the line can be marked as a comment by using a #."
+#~ msgstr ""
+#~ "Listę źródeł zaprojektowano tak, aby obsługiwała dowolną liczbę aktywnych "
+#~ "źródeł i różnorodne lokalizacje źródeł. Każde źródło jest wymienione w "
+#~ "osobnej linii, zaczynając od źródeł najbardziej preferowanych. Format "
+#~ "każdej linii jest następujący: <literal>typ uri argumenty</literal>. "
+#~ "Pierwsza pozycja, <literal>typ</literal>, wyznacza format "
+#~ "<literal>argumentów</literal>. <literal>uri</literal> jest uniwersalnym "
+#~ "identyfikatorem zasobu (ang. Universal Resource Identifier - URI), który "
+#~ "jest nadzbiorem dobrze znanego uniwersalnego lokalizatora zasobu (ang. "
+#~ "Universal Resource Locator - URL). Pozostała część linii może być "
+#~ "komentarzem, jeśli zaczyna się od znaku \"#\"."
+
+#~ msgid ""
+#~ "<literal>gencaches</literal> performs the same operation as <command>apt-"
+#~ "get check</command>. It builds the source and package caches from the "
+#~ "sources in &sources-list; and from <filename>/var/lib/dpkg/status</"
+#~ "filename>."
+#~ msgstr ""
+#~ "<literal>gencaches</literal> wykonuje te same operacje, co <command>apt-"
+#~ "get check</command>. Buduje bufor pakietów oraz źródeł pakietów na "
+#~ "podstawie źródeł wymienionych w &sources-list; oraz pliku <filename>/var/"
+#~ "lib/dpkg/status</filename>."
+
+#~ msgid ""
+#~ "Unless the <option>-h</option>, or <option>--help</option> option is "
+#~ "given one of the commands below must be present. <placeholder type="
+#~ "\"variablelist\" id=\"0\"/>"
+#~ msgstr ""
+#~ "Jedno z poniższych poleceń musi być użyte, chyba że została podana opcja "
+#~ "<option>-h</option> lub <option>--help</option>. <placeholder type="
+#~ "\"variablelist\" id=\"0\"/>"
+
+#~ msgid "APT package handling utility -- cache manipulator"
+#~ msgstr "Narzędzie zarządzania pakietami APT -- manipulator bufora"
+
+#~ msgid "add <replaceable>file(s)</replaceable>"
+#~ msgstr "add <replaceable>plik(i)</replaceable>"
+
+#~ msgid ""
+#~ "<literal>add</literal> adds the named package index files to the package "
+#~ "cache. This is for debugging only."
+#~ msgstr ""
+#~ "<literal>add</literal> dodaje pliki zawierające indeks nazw pakietów do "
+#~ "bufora. Ta opcja jest przydatna głównie w celu odpluskwiania."
+
+#~ msgid "Also install recommended packages."
+#~ msgstr "Instaluje również rekomendowane pakiety."
+
+#~ msgid "Do not install recommended packages."
+#~ msgstr "Nie instaluje rekomendowanych pakietów."
+
+#~ msgid ""
+#~ "Uses HTTP to access the archive at nonus.debian.org, under the debian-non-"
+#~ "US directory."
+#~ msgstr ""
+#~ "Użycie HTTP do uzyskania dostępu do archiwum na komputerze nonus.debian."
+#~ "org, w katalogu debian-non-US."
+
+#~ msgid ""
+#~ "Status list of auto-installed packages. Configuration Item: "
+#~ "<literal>Dir::State</literal> sets the path to the "
+#~ "<filename>extended_states</filename> file."
+#~ msgstr ""
+#~ "Lista stanów pakietów zainstalowanych automatycznie. Pozycja w pliku "
+#~ "konfiguracyjnym: <literal>Dir::State</literal> ustawia ścieżkę do pliku "
+#~ "o nazwie <filename>extended_states</filename>."
diff --git a/doc/po/pt.po b/doc/po/pt.po
new file mode 100644
index 000000000..704b02b84
--- /dev/null
+++ b/doc/po/pt.po
@@ -0,0 +1,11568 @@
+# Translation of apt manpages to Portuguese
+# Copyright (C) 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the apt package.
+#
+# Américo Monteiro <a_monteiro@gmx.com>, 2009 - 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt-doc 1.0.7\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-06-01 10:51+0200\n"
+"PO-Revision-Date: 2014-08-29 00:34+0100\n"
+"Last-Translator: Américo Monteiro <a_monteiro@gmx.com>\n"
+"Language-Team: Portuguese <traduz@debianpt.org>\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY apt-author.team \"\n"
+" <author>\n"
+" <othername>APT team</othername>\n"
+" <contrib></contrib>\n"
+" </author>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY apt-author.team \"\n"
+" <author>\n"
+" <othername>Equipa do APT</othername>\n"
+" <contrib></contrib>\n"
+" </author>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY apt-qapage \"\n"
+"\t<para>\n"
+"\t\t<ulink url='http://packages.qa.debian.org/a/apt.html'>QA Page</ulink>\n"
+"\t</para>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY apt-qapage \"\n"
+"\t<para>\n"
+"\t\t<ulink url='http://packages.qa.debian.org/a/apt.html'>QA Page</ulink>\n"
+"\t</para>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Boiler plate Bug reporting section -->\n"
+"<!ENTITY manbugs \"\n"
+" <refsect1><title>Bugs</title>\n"
+" <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+" If you wish to report a bug in APT, please see\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
+" &reportbug; command.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+"<!-- Boiler plate Bug reporting section -->\n"
+"<!ENTITY manbugs \"\n"
+" <refsect1><title>Bugs</title>\n"
+" <para><ulink url='http://bugs.debian.org/src:apt'>página de bugs do APT</ulink>. \n"
+" Se deseja reportar um bug no APT, por favor veja\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</filename> ou o\n"
+" comando &reportbug;.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Boiler plate Author section -->\n"
+"<!ENTITY manauthor \"\n"
+" <refsect1><title>Author</title>\n"
+" <para>APT was written by the APT team <email>apt@packages.debian.org</email>.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+"<!-- Boiler plate Author section -->\n"
+"<!ENTITY manauthor \"\n"
+" <refsect1><title>Autor</title>\n"
+" <para>APT foi escrito pela equipa do APT <email>apt@packages.debian.org</email>.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-commonoptions \"\n"
+" <varlistentry><term><option>-h</option></term>\n"
+" <term><option>--help</option></term>\n"
+" <listitem><para>Show a short usage summary.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-commonoptions \"\n"
+" <varlistentry><term><option>-h</option></term>\n"
+" <term><option>--help</option></term>\n"
+" <listitem><para>Mostra um sumário curto da utilização.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-v</option></term>\n"
+" <term><option>--version</option></term>\n"
+" <listitem><para>Show the program version.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-v</option></term>\n"
+" <term><option>--version</option></term>\n"
+" <listitem><para>Mostra a versão do programa.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-c</option></term>\n"
+" <term><option>--config-file</option></term>\n"
+" <listitem><para>Configuration File; Specify a configuration file to use. \n"
+" The program will read the default configuration file and then this \n"
+" configuration file. If configuration settings need to be set before the\n"
+" default configuration files are parsed specify a file with the <envar>APT_CONFIG</envar>\n"
+" environment variable. See &apt-conf; for syntax information.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-c</option></term>\n"
+" <term><option>--config-file</option></term>\n"
+" <listitem><para>Ficheiro de Configuração; Especifica o ficheiro de \n"
+" configuração a usar. \n"
+" O programa irá ler o ficheiro de configuração predefinido e depois este \n"
+" ficheiro de configuração. Se as definições de configuração precisarem de \n"
+" ser definidas antes, os ficheiros de configuração predefinidos são \n"
+" analisados especificando um ficheiro com a variável de ambiente \n"
+" <envar>APT_CONFIG</envar>. Veja &apt-conf; para informação de sintaxe.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-o</option></term>\n"
+" <term><option>--option</option></term>\n"
+" <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
+" configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
+" <option>-o</option> and <option>--option</option> can be used multiple\n"
+" times to set different options.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry>\n"
+" <term><option>-o</option></term>\n"
+" <term><option>--option</option></term>\n"
+" <listitem><para>Define uma Opção de Configuração; Isto irá definir uma opção\n"
+" de configuração arbitrária. A sintaxe é <option>-o Foo::Bar=bar</option>.\n"
+" <option>-o</option> e <option>--option</option> podem ser usadas várias\n"
+" vezes para definir opções diferentes.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-cmdblurb \"\n"
+" <para>All command line options may be set using the configuration file, the\n"
+" descriptions indicate the configuration option to set. For boolean\n"
+" options you can override the config file by using something like \n"
+" <option>-f-</option>,<option>--no-f</option>, <option>-f=no</option>\n"
+" or several other variations.\n"
+" </para>\n"
+"\">\n"
+msgstr ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-cmdblurb \"\n"
+" <para>Todas as opções de linha de comandos podem ser definidas usando o ficheiro de configuração, as\n"
+" descrições indicam a opção de configuração a definir. Para opções\n"
+" booleanas você pode sobre por o ficheiro de configuração usando algo como \n"
+" <option>-f-</option>,<option>--no-f</option>, <option>-f=no</option>\n"
+" ou várias outras variantes.\n"
+" </para>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-aptconf \"\n"
+" <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>\n"
+" <listitem><para>APT configuration file.\n"
+" Configuration Item: <literal>Dir::Etc::Main</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-aptconf \"\n"
+" <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>\n"
+" <listitem><para>Ficheiro de configuração do APT.\n"
+" Item de Configuração: <literal>Dir::Etc::Main</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
+" <listitem><para>APT configuration file fragments.\n"
+" Configuration Item: <literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
+" <listitem><para>Ficheiros de configuração fragmentados do APT.\n"
+" Item de Configuração: <literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-cachearchives \"\n"
+" <varlistentry><term><filename>&cachedir;/archives/</filename></term>\n"
+" <listitem><para>Storage area for retrieved package files.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-cachearchives \"\n"
+" <varlistentry><term><filename>&cachedir;/archives/</filename></term>\n"
+" <listitem><para>Ãrea de armazenamento para ficheiros de pacotes obtidos.\n"
+" Item de Configuração: <literal>Dir::Cache::Archives</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>\n"
+" <listitem><para>Storage area for package files in transit.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>\n"
+" <listitem><para>Ãrea de armazenamento para ficheiros de pacotes em curso.\n"
+" Item de Configuração: <literal>Dir::Cache::Archives</literal> será implicitamente acrescentado (<filename>partial</filename>)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-preferences \"\n"
+" <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
+" <listitem><para>Version preferences file.\n"
+" This is where you would specify &quot;pinning&quot;,\n"
+" i.e. a preference to get certain packages\n"
+" from a separate source\n"
+" or from a different version of a distribution.\n"
+" Configuration Item: <literal>Dir::Etc::Preferences</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-preferences \"\n"
+" <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
+" <listitem><para>Ficheiro de preferências de versão.\n"
+" Isto é onde você deve especificar &quot;pinning&quot;,\n"
+" isto é, uma preferência para obter certos pacotes\n"
+" A partir de uma fonte separada\n"
+" ou a partir duma versão diferente de uma distribuição.\n"
+" Item de Configuração: <literal>Dir::Etc::Preferences</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>\n"
+" <listitem><para>File fragments for the version preferences.\n"
+" Configuration Item: <literal>Dir::Etc::PreferencesParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>\n"
+" <listitem><para>Ficheiros fragmentados para as preferências de versão.\n"
+" Item de Configuração: <literal>Dir::Etc::PreferencesParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-sourceslist \"\n"
+" <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+" <listitem><para>Locations to fetch packages from.\n"
+" Configuration Item: <literal>Dir::Etc::SourceList</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-sourceslist \"\n"
+" <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+" <listitem><para>Localizações de onde obter pacotes.\n"
+" Item de Configuração: <literal>Dir::Etc::SourceList</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
+" <listitem><para>File fragments for locations to fetch packages from.\n"
+" Configuration Item: <literal>Dir::Etc::SourceParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
+" <listitem><para>Ficheiros fragmentados para localizações de onde obter pacotes.\n"
+" Item de Configuração: <literal>Dir::Etc::SourceParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-statelists \"\n"
+" <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
+" <listitem><para>Storage area for state information for each package resource specified in\n"
+" &sources-list;\n"
+" Configuration Item: <literal>Dir::State::Lists</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-statelists \"\n"
+" <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
+" <listitem><para>Ãrea de armazenamento para informação de estado para cada recurso de pacote especificado em\n"
+" &sources-list;\n"
+" Tem de Configuração: <literal>Dir::State::Lists</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>\n"
+" <listitem><para>Storage area for state information in transit.\n"
+" Configuration Item: <literal>Dir::State::Lists</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>\n"
+" <listitem><para>Ãrea de armazenamento para informação de estado em trânsito.\n"
+" Item de Configuração: <literal>Dir::State::Lists</literal> será implicitamente acrescentado (<filename>partial</filename>)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-trustedgpg \"\n"
+" <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
+" <listitem><para>Keyring of local trusted keys, new keys will be added here.\n"
+" Configuration Item: <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+"<!ENTITY file-trustedgpg \"\n"
+" <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
+" <listitem><para>Chaveiro de chaves de confiança locais, as novas chaves serão adicionadas aqui.\n"
+" Item de Configuração: <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
+" <listitem><para>File fragments for the trusted keys, additional keyrings can\n"
+" be stored here (by other packages or the administrator).\n"
+" Configuration Item <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+" <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
+" <listitem><para>Fragmentos de ficheiro para as chaves de confiança, chaveiros adicionais podem\n"
+" ser armazenados aqui (por outros pacotes ou pelo administrador).\n"
+" Item de Configuração <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-extended_states \"\n"
+" <varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>\n"
+" <listitem><para>Status list of auto-installed packages.\n"
+" Configuration Item: <literal>Dir::State::extended_states</literal>.\n"
+" </para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+"<!ENTITY file-extended_states \"\n"
+" <varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>\n"
+" <listitem><para>Lista de estado de pacotes auto-instalados.\n"
+" Item de Configuração: <literal>Dir::State::extended_states</literal>.\n"
+" </para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is the section header for the following paragraphs - comparable\n"
+" to the other headers like NAME and DESCRIPTION and should therefore be uppercase. -->\n"
+"<!ENTITY translation-title \"TRANSLATION\">\n"
+msgstr ""
+"<!-- TRANSLATOR: This is the section header for the following paragraphs - comparable\n"
+" to the other headers like NAME and DESCRIPTION and should therefore be uppercase. -->\n"
+"<!ENTITY translation-title \"TRADUÇÂO\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is a placeholder. You should write here who has contributed\n"
+" to the translation in the past, who is responsible now and maybe further information\n"
+" specially related to your translation. -->\n"
+"<!ENTITY translation-holder \"\n"
+" The english translation was done by John Doe <email>john@doe.org</email> in 2009,\n"
+" 2010 and Daniela Acme <email>daniela@acme.us</email> in 2010 together with the\n"
+" Debian Dummy l10n Team <email>debian-l10n-dummy@lists.debian.org</email>.\n"
+"\">\n"
+msgstr ""
+"<!ENTITY translation-holder \"\n"
+" A tradução Portuguesa foi feita por Américo Monteiro <email>a_monteiro@netcabo.pt</email> de 2009 a 2012.\n"
+" A tradução foi revista pela equipa de traduções portuguesas da Debian <email>traduz@debianpt.org</email>.\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: As a translation is allowed to have 20% of untranslated/fuzzy strings\n"
+" in a shipped manpage newer/modified paragraphs will maybe appear in english in\n"
+" the generated manpage. This sentence is therefore here to tell the reader that this\n"
+" is not a mistake by the translator - obviously the target is that at least for stable\n"
+" releases this sentence is not needed. :) -->\n"
+"<!ENTITY translation-english \"\n"
+" Note that this translated document may contain untranslated parts.\n"
+" This is done on purpose, to avoid losing content when the\n"
+" translation is lagging behind the original content.\n"
+"\">\n"
+msgstr ""
+"<!-- TRANSLATOR: É permitido que uma tradução tenha 20% de strings não traduzidas/aproximadas\n"
+" num manual publicado os parágrafos novos/modificados irão talvez aparecer em inglês\n"
+" no manual gerado. Isto está aqui para dizer ao leitor que isto não\n"
+" é um erro do tradutor - obviamente o objectivo é que pelo menos para as versões estáveis\n"
+" esta declaração não é necessária. :) -->\n"
+"<!ENTITY translation-english \"\n"
+" Note que este documento traduzido pode conter partes não traduzidas.\n"
+" Isto é feito propositadamente, para evitar perdas de conteúdo quando a\n"
+" tradução está atrasada relativamente ao conteúdo original.\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
+"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+msgstr ""
+"<!-- TRANSLATOR: usado como -o=config_string ex. -o=Debug::"
+"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -c=config_file e.g. -c=./apt.conf --> <!ENTITY "
+"synopsis-config-file \"config_file\">"
+msgstr ""
+"<!-- TRANSLATOR: usado como -c=config_file ex. -c=./apt.conf --> <!ENTITY "
+"synopsis-config-file \"ficheiro_de_configuração\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
+"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"\"target_release\">"
+msgstr ""
+"<!-- TRANSLATOR: usado como -t=target_release ou pkg/target_release ex. -"
+"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release \"lançamento-"
+"alvo\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -a=architecture e.g. -a=armel --> <!ENTITY "
+"synopsis-architecture \"architecture\">"
+msgstr ""
+"<!-- TRANSLATOR: usado como -a=architecture ex. -a=armel --> <!ENTITY "
+"synopsis-architecture \"arquitectura\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-get install pkg e.g. apt-get install awesome "
+"--> <!ENTITY synopsis-pkg \"pkg\">"
+msgstr ""
+"<!-- TRANSLATOR: usado como apt-get install pkg ex. apt-get install awesome "
+"--> <!ENTITY synopsis-pkg \"pkg\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in pkg=pkg_version_number e.g. apt=0.8.15 --> <!"
+"ENTITY synopsis-pkg-ver-number \"pkg_version_number\">"
+msgstr ""
+"<!-- TRANSLATOR: usado como pkg=pkg_version_number ex. apt=0.8.15 --> <!"
+"ENTITY synopsis-pkg-ver-number \"número_de_versão_do_pacote\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache pkgnames prefix e.g. apt-cache "
+"pkgnames apt --> <!ENTITY synopsis-prefix \"prefix\">"
+msgstr ""
+"<!-- TRANSLATOR: usado como apt-cache pkgnames prefix ex. apt-cache pkgnames "
+"apt --> <!ENTITY synopsis-prefix \"prefixo\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache search regex e.g. apt-cache search "
+"awesome --> <!ENTITY synopsis-regex \"regex\">"
+msgstr ""
+"<!-- TRANSLATOR: usado como apt-cache search regex ex. apt-cache search "
+"awesome --> <!ENTITY synopsis-regex \"regex\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
+"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+msgstr ""
+"<!-- TRANSLATOR: usado como apt-cdrom -d=cdrom_mount_point ex. apt-cdrom -d=/"
+"media/cdrom --> <!ENTITY synopsis-cdrom-mount \"ponto_de_montagem-do_cdrom\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates -t=temporary_directory e.g. "
+"apt-extracttemplates -t=/tmp --> <!ENTITY synopsis-tmp-directory "
+"\"temporary_directory\">"
+msgstr ""
+"<!-- TRANSLATOR: usado como apt-extracttemplates -t=temporary_directory ex. "
+"apt-extracttemplates -t=/tmp --> <!ENTITY synopsis-tmp-directory "
+"\"directório_temporário\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates filename --> <!ENTITY "
+"synopsis-filename \"filename\">"
+msgstr ""
+"<!-- TRANSLATOR: usado como apt-extracttemplates filename --> <!ENTITY "
+"synopsis-filename \"nome_do_ficheiro\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-path \"path\">"
+msgstr ""
+"<!-- TRANSLATOR: usado como parâmetro para apt-ftparchive ex. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-path \"caminho"
+"\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-override "
+"\"override-file\">"
+msgstr ""
+"<!-- TRANSLATOR: usado como parâmetro para apt-ftparchive ex. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-override "
+"\"ficheiro_de_sobreposição\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-pathprefix "
+"\"pathprefix\">"
+msgstr ""
+"<!-- TRANSLATOR: usado como parâmetro para apt-ftparchive ex. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-pathprefix "
+"\"prefixo_de_caminho\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"generate section --> <!ENTITY synopsis-section \"section\">"
+msgstr ""
+"<!-- TRANSLATOR: usado como parâmetro para apt-ftparchive ex. apt-ftparchive "
+"generate section --> <!ENTITY synopsis-section \"secção\">"
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
+msgstr ""
+"<!-- TRANSLATOR: usado como id de chave de exportação do apt-key ex. apt-key "
+"export 473041FA --> <!ENTITY synopsis-keyid \"id_de_chave\">"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+msgid "8"
+msgstr "8"
+
+#. type: Content of: <refentry><refmeta><refmiscinfo>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "APT"
+msgstr "APT"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.8.xml
+msgid "command-line interface"
+msgstr "interface de linha de comandos"
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "Description"
+msgstr "Descrição"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"<command>apt</command> provides a high-level commandline interface for the "
+"package management system. It is intended as an end user interface and "
+"enables some options better suited for interactive usage by default compared "
+"to more specialized APT tools like &apt-get; and &apt-cache;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"Much like <command>apt</command> itself, its manpage is intended as an end "
+"user interface and as such only mentions the most used commands and options "
+"partly to not duplicate information in multiple places and partly to avoid "
+"overwhelming readers with a cornucopia of options and details."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(&apt-get;)"
+msgstr "(&apt-get;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>update</option> is used to download package information from all "
+"configured sources. Other commands operate on this data to e.g. perform "
+"package upgrades or search in and display details about all packages "
+"available for installation."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>upgrade</literal> is used to install the newest versions of all "
+#| "packages currently installed on the system from the sources enumerated in "
+#| "<filename>/etc/apt/sources.list</filename>. New packages will be "
+#| "installed, but existing packages will never be removed."
+msgid ""
+"<option>upgrade</option> is used to install available upgrades of all "
+"packages currently installed on the system from the sources configured via "
+"&sources-list;. New packages will be installed if required to satisfy "
+"dependencies, but existing packages will never be removed. If an upgrade for "
+"a package requires the remove of an installed package the upgrade for this "
+"package isn't performed."
+msgstr ""
+"<literal>upgrade</literal> é usado para instalar as versões mais recentes de "
+"todos os pacotes actualmente instalados no sistema a partir das fontes "
+"enumeradas em <filename>/etc/apt/sources.list</filename>. Serão instalados "
+"novos pacotes, mas pacotes existentes nunca serão removidos."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>full-upgrade</literal> performs the function of upgrade but may "
+#| "also remove installed packages if that is required in order to resolve a "
+#| "package conflict."
+msgid ""
+"<literal>full-upgrade</literal> performs the function of upgrade but will "
+"remove currently installed packages if this is needed to upgrade the system "
+"as a whole."
+msgstr ""
+"<literal>full-upgrade</literal> executa a função de upgrade mas pode também "
+"remover pacotes instalados se tal for necessário de modo a resolver um "
+"conflito de pacotes."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml apt-key.8.xml
+msgid ","
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Performs the requested action on one or more packages specified via &regex;, "
+"&glob; or exact match. The requested action can be overridden for specific "
+"packages by append a plus (+) to the package name to install this package or "
+"a minus (-) to remove it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+#, fuzzy
+#| msgid ""
+#| "A specific version of a package can be selected for installation by "
+#| "following the package name with an equals and the version of the package "
+#| "to select. This will cause that version to be located and selected for "
+#| "install. Alternatively a specific distribution can be selected by "
+#| "following the package name with a slash and the version of the "
+#| "distribution or the Archive name (stable, testing, unstable)."
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals (=) and the version of the package "
+"to select. Alternatively the version from a specific release can be selected "
+"by following the package name with a forward slash (/) and codename (&debian-"
+"stable-codename;, &debian-testing-codename;, sid …) or suite name (stable, "
+"testing, unstable). This will also select versions from this release for "
+"dependencies of this package if needed to satisfy the request."
+msgstr ""
+"Pode ser seleccionada para instalação uma versão específica de um pacote ao "
+"continuar o nome do pacote com um igual (=) e a versão do pacote a "
+"seleccionar. Isto irá fazer com que essa versão seja localizada e "
+"seleccionada para instalação. Alternativamente pode ser seleccionada uma "
+"distribuição específica ao continuar o nome do pacote com uma slash (/) e a "
+"versão da distribuição ou o nome de Arquivo (stable, testing, unstable)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Removing a package removes all packaged data, but leaves usually small "
+"(modified) user configuration files behind, in case the remove was an "
+"accident. Just issuing an installation request for the accidentally removed "
+"package will restore its function as before in that case. On the other hand "
+"you can get rid of these leftovers by calling <command>purge</command> even "
+"on already removed packages. Note that this does not affect any data or "
+"configuration stored in your home directory."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>autoremove</literal> is used to remove packages that were "
+#| "automatically installed to satisfy dependencies for other packages and "
+#| "are now no longer needed."
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed as dependencies changed or the package(s) needing them "
+"were removed in the meantime."
+msgstr ""
+"<literal>autoremove</literal> é usado para remover pacotes que foram "
+"instalados automaticamente para satisfazer dependências de outros pacotes e "
+"que já não são necessários."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"You should check that the list does not include applications you have grown "
+"to like even though they were once installed just as a dependency of another "
+"package. You can mark such a package as manually installed by using &apt-"
+"mark;. Packages which you have installed explicitly via <command>install</"
+"command> are also never proposed for automatic removal."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(&apt-cache;)"
+msgstr "(&apt-conf;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>search</option> can be used to search for the given &regex; term(s) "
+"in the list of available packages and display matches. This can e.g. be "
+"useful if you are looking for packages having a specific feature. If you "
+"are looking for a package including a specific file try &apt-file;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Show information about the given package(s) including its dependencies, "
+"installation and download size, sources the package is available from, the "
+"description of the packages content and much more. It can e.g. be helpful to "
+"look at this information before allowing &apt; to remove a package or while "
+"searching for new packages to install."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(work-in-progress)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>list</literal> is used to display a list of packages. It "
+#| "supports shell pattern for matching package names and the following "
+#| "options: <option>--installed</option>, <option>--upgradable</option>, "
+#| "<option>--upgradeable</option>, <option>--all-versions</option> are "
+#| "supported."
+msgid ""
+"<option>list</option> is somewhat similar to <command>dpkg-query --list</"
+"command> in that it can display a list of packages satisfying certain "
+"criteria. It supports &glob; patterns for matching package names as well as "
+"options to list installed (<option>--installed</option>), upgradeable "
+"(<option>--upgradeable</option>) or all available (<option>--all-versions</"
+"option>) versions."
+msgstr ""
+"<literal>list</literal> é usado para mostrar uma lista de pacotes. Suporta "
+"padrões da shell para corresponder aos nomes de pacotes e são suportadas as "
+"seguintes opções <option>--installed</option>, <option>--upgradable</"
+"option>, <option>--all-versions</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>edit-sources</literal> lets you edit your sources.list file and "
+#| "provides basic sanity checks."
+msgid ""
+"<literal>edit-sources</literal> lets you edit your &sources-list; files in "
+"your preferred texteditor while also providing basic sanity checks."
+msgstr ""
+"<literal>edit-sources</literal> permite-lhe editar o seu ficheiro sources."
+"list e disponibiliza verificações de sanidade básicas."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml
+msgid "Script Usage and Differences from Other APT Tools"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+#, fuzzy
+#| msgid ""
+#| "The &apt; commandline is designed as a end-user tool and it may change "
+#| "the output between versions. While it tries to not break backward "
+#| "compatibility there is no guarantee for it either. All features of &apt; "
+#| "are available in &apt-cache; and &apt-get; via APT options. Please prefer "
+#| "using these commands in your scripts."
+msgid ""
+"The &apt; commandline is designed as an end-user tool and it may change "
+"behavior between versions. While it tries not to break backward "
+"compatibility this is not guaranteed either if a change seems beneficial for "
+"interactive use."
+msgstr ""
+"A linha de comandos do &apt; foi desenhada como ferramenta de utilizador "
+"final e pode variar os textos mostrados entre versões. Apesar de tentar não "
+"perder a compatibilidade com versões anteriores, não há garantia disso. "
+"Todas as funcionalidades do &apt; estão disponíveis em &apt-cache; e &apt-"
+"get; via opções do APT. Por favor dê preferência a usar estes comandos nos "
+"seus scripts."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"All features of &apt; are available in dedicated APT tools like &apt-get; "
+"and &apt-cache; as well. &apt; just changes the default value of some "
+"options (see &apt-conf; and specifically the Binary scope). So you should "
+"prefer using these commands (potentially with some additional options "
+"enabled) in your scripts as they keep backward compatibility as much as "
+"possible."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "See Also"
+msgstr "Veja também"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
+"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+msgstr ""
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, O guia de "
+"utilizadores do The APT em &guidesdir;, &apt-preferences;, o Howto do APT."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-cdrom.8.xml
+#: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml
+msgid "Diagnostics"
+msgstr "Diagnóstico"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"<command>apt</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+"<command>apt</command> devolve zero na operação normal, 100 decimal em erro."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-get.8.xml
+msgid "APT package handling utility -- command-line interface"
+msgstr ""
+"Utilitário de manuseamento de pacotes do APT -- interface de linha de "
+"comandos"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"<command>apt-get</command> is the command-line tool for handling packages, "
+"and may be considered the user's \"back-end\" to other tools using the APT "
+"library. Several \"front-end\" interfaces exist, such as &aptitude;, "
+"&synaptic; and &wajig;."
+msgstr ""
+"<command>apt-get</command> é a ferramenta de linha de comandos para lidar "
+"com pacotes, e pode ser considerada o \"back-end\" dos utilizadores para "
+"outras ferramentas que usam a biblioteca APT. Existem várias interfaces "
+"\"front-end\" como o &aptitude;, &synaptic; e &wajig;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml apt-cache.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt-ftparchive.1.xml
+msgid ""
+"Unless the <option>-h</option>, or <option>--help</option> option is given, "
+"one of the commands below must be present."
+msgstr ""
+"A menos que a opção <option>-h</option>, ou <option>--help</option> seja "
+"fornecida, um dos comandos abaixo têm que estar presentes."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>update</literal> is used to resynchronize the package index files "
+"from their sources. The indexes of available packages are fetched from the "
+"location(s) specified in <filename>/etc/apt/sources.list</filename>. For "
+"example, when using a Debian archive, this command retrieves and scans the "
+"<filename>Packages.gz</filename> files, so that information about new and "
+"updated packages is available. An <literal>update</literal> should always be "
+"performed before an <literal>upgrade</literal> or <literal>dist-upgrade</"
+"literal>. Please be aware that the overall progress meter will be incorrect "
+"as the size of the package files cannot be known in advance."
+msgstr ""
+"<literal>update</literal> é usado para re-sincronizar os ficheiros de "
+"índices de pacotes a partir das suas fontes. Os índices dos pacotes "
+"disponíveis são obtidos a partir das localizações em <filename>/etc/apt/"
+"sources.list</filename>. Por exemplo, quando se usa um arquivo Debian, este "
+"comando recolhe e analisa os ficheiros <filename>Packages.gz</filename> para "
+"que a informação sobre pacotes novos e actualizados fique disponível. Um "
+"<literal>update</literal> deve ser sempre executado antes de um "
+"<literal>upgrade</literal> ou <literal>dist-upgrade</literal>. Por favor "
+"note que a medição do processo total ira estar incorrecta pois o tamanho dos "
+"ficheiros de pacotes não pode ser conhecido com antecedência."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>upgrade</literal> is used to install the newest versions of all "
+"packages currently installed on the system from the sources enumerated in "
+"<filename>/etc/apt/sources.list</filename>. Packages currently installed "
+"with new versions available are retrieved and upgraded; under no "
+"circumstances are currently installed packages removed, or packages not "
+"already installed retrieved and installed. New versions of currently "
+"installed packages that cannot be upgraded without changing the install "
+"status of another package will be left at their current version. An "
+"<literal>update</literal> must be performed first so that <command>apt-get</"
+"command> knows that new versions of packages are available."
+msgstr ""
+"<literal>upgrade</literal> é usado para instalar as versões mais recentes de "
+"todos os pacotes presentemente instalados no sistema a partir das fontes "
+"enumeradas em <filename>/etc/apt/sources.list</filename>. Os pacotes "
+"presentemente instalados com versões novas são obtidos e instalados; em "
+"nenhumas circunstâncias os pacotes presentemente instalados serão removidos, "
+"nem pacotes já instalados serão obtidos e instalados.Os pacotes "
+"presentemente instalados com novas versões e que não possam ser actualizados "
+"sem alterarem o estado da instalação de outro pacote serão deixados na "
+"versão presente. Deve ser executado primeiro um <literal>update</literal> "
+"para que o <command>apt-get</command> fique a saber que estão disponíveis "
+"novas versões de pacotes."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>dist-upgrade</literal> in addition to performing the function of "
+"<literal>upgrade</literal>, also intelligently handles changing dependencies "
+"with new versions of packages; <command>apt-get</command> has a \"smart\" "
+"conflict resolution system, and it will attempt to upgrade the most "
+"important packages at the expense of less important ones if necessary. The "
+"<literal>dist-upgrade</literal> command may therefore remove some packages. "
+"The <filename>/etc/apt/sources.list</filename> file contains a list of "
+"locations from which to retrieve desired package files. See also &apt-"
+"preferences; for a mechanism for overriding the general settings for "
+"individual packages."
+msgstr ""
+"<literal>dist-upgrade</literal> adicionalmente a executar a função do "
+"<literal>upgrade</literal>, também lida inteligentemente com as alterações "
+"de dependências com as novas versões de pacotes; o <command>apt-get</"
+"command> tem um sistema de resolução de conflitos 'inteligente', que irá "
+"tentar actualizar os pacotes mais importantes a custo dos pacotes menos "
+"importantes, caso necessário. Portanto, o comando <literal>dist-upgrade</"
+"literal> pode remover alguns pacotes. O ficheiro <filename>/etc/apt/sources."
+"list</filename> contém uma lista de localizações de onde obter os ficheiros "
+"de pacotes desejados. Veja também &apt-preferences; para um mecanismo para "
+"sobrepor as definições gerais em pacotes individuais."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>dselect-upgrade</literal> is used in conjunction with the "
+"traditional Debian packaging front-end, &dselect;. <literal>dselect-upgrade</"
+"literal> follows the changes made by &dselect; to the <literal>Status</"
+"literal> field of available packages, and performs the actions necessary to "
+"realize that state (for instance, the removal of old and the installation of "
+"new packages)."
+msgstr ""
+"<literal>dselect-upgrade</literal> é usado em conjunto com o front-end de "
+"pacotes Debian tradicional, &dselect;. <literal>dselect-upgrade</literal> "
+"segue as alterações feitas pelo &dselect; ao campo <literal>Status</literal> "
+"dos pacotes disponíveis, e executa as acções necessárias para realizar esse "
+"estado (por exemplo, a remoção de pacotes antigos e a instalação de novos)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>install</literal> is followed by one or more packages desired for "
+"installation or upgrading. Each package is a package name, not a fully "
+"qualified filename (for instance, in a Debian system, <package>apt-utils</"
+"package> would be the argument provided, not <filename>apt-utils_&apt-"
+"product-version;_amd64.deb</filename>). All packages required by the "
+"package(s) specified for installation will also be retrieved and installed. "
+"The <filename>/etc/apt/sources.list</filename> file is used to locate the "
+"desired packages. If a hyphen is appended to the package name (with no "
+"intervening space), the identified package will be removed if it is "
+"installed. Similarly a plus sign can be used to designate a package to "
+"install. These latter features may be used to override decisions made by apt-"
+"get's conflict resolution system."
+msgstr ""
+"<literal>install</literal> é seguido por um ou mais pacotes desejados para "
+"instalação ou actualização. Cada pacote é um nome de pacote, não um nome de "
+"ficheiro completamente qualificado (por exemplo, num sistema Debian GNU/"
+"Linux, <package>apt-utils</package> seria o argumento fornecido e não "
+"<filename>apt-utils_&apt-product-version;_amd64.deb</filename>). Todos os "
+"pacotes necessários pelos pacotes especificados para instalação irão também "
+"ser obtidos e instalados. O ficheiro <filename>/etc/apt/sources.list</"
+"filename> é usado para localizar os pacotes desejados. Se for acrescentado "
+"um sinal menos (-) ao nome do pacote (sem nenhum espaço a separar), o pacote "
+"identificado irá ser removido se estiver instalado. À semelhança, um sinal "
+"mais (+) pode ser usado para designar um pacote a instalar. Estas últimas "
+"funcionalidades podem ser usadas para sobrepor decisões feitas pelo sistema "
+"de resolução de conflitos do apt-get."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals and the version of the package to "
+"select. This will cause that version to be located and selected for install. "
+"Alternatively a specific distribution can be selected by following the "
+"package name with a slash and the version of the distribution or the Archive "
+"name (stable, testing, unstable)."
+msgstr ""
+"Pode ser seleccionada para instalação uma versão específica de um pacote ao "
+"continuar o nome do pacote com um igual (=) e a versão do pacote a "
+"seleccionar. Isto irá fazer com que essa versão seja localizada e "
+"seleccionada para instalação. Alternativamente pode ser seleccionada uma "
+"distribuição específica ao continuar o nome do pacote com uma slash (/) e a "
+"versão da distribuição ou o nome de Arquivo (stable, testing, unstable)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Both of the version selection mechanisms can downgrade packages and must be "
+"used with care."
+msgstr ""
+"Ambos os mecanismos de selecção de versão podem regredir pacotes (downgrade) "
+"e devem ser usados com cuidado."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This is also the target to use if you want to upgrade one or more already-"
+"installed packages without upgrading every package you have on your system. "
+"Unlike the \"upgrade\" target, which installs the newest version of all "
+"currently installed packages, \"install\" will install the newest version of "
+"only the package(s) specified. Simply provide the name of the package(s) "
+"you wish to upgrade, and if a newer version is available, it (and its "
+"dependencies, as described above) will be downloaded and installed."
+msgstr ""
+"Este é também o objectivo a usar se deseja actualizar um ou mais pacotes já "
+"instalados sem actualizar todos os pacotes que tem no seu sistema. Ao "
+"contrário do objectivo \"upgrade\", o qual instala as versões mais recentes "
+"de todos os pacotes presentemente instalados, o \"install\" irá instalar a "
+"versão mais recente apenas dos pacotes especificados. Simplesmente forneça o "
+"nome do(s) pacote(s) que deseja actualizar, e se estiver disponível uma nova "
+"versão, ela ( e as suas dependências, como descrito em cima) serão "
+"descarregadas e instaladas."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Finally, the &apt-preferences; mechanism allows you to create an alternative "
+"installation policy for individual packages."
+msgstr ""
+"Finalmente, o mecanismo &apt-preferences; permite-lhe criar uma política de "
+"instalação alternativa para pacotes individuais."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If no package matches the given expression and the expression contains one "
+"of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and "
+"it is applied to all package names in the database. Any matches are then "
+"installed (or removed). Note that matching is done by substring so 'lo.*' "
+"matches 'how-lo' and 'lowest'. If this is undesired, anchor the regular "
+"expression with a '^' or '$' character, or create a more specific regular "
+"expression."
+msgstr ""
+"Se nenhum pacote coincidir com a expressão fornecida e a expressão conter um "
+"de '.', '?' ou '*' então é assumido ser uma expressão regular POSIX, e é "
+"aplicada a todos os nomes de pacotes da base de dados. Quaisquer "
+"correspondências são então instaladas (ou removidas). Note que a "
+"correspondência é feita por substring, portanto 'lo.*' corresponde a 'how-"
+"lo' e 'lowest'. Se isto for indesejável, ancore a expressão regular com a "
+"caractere '^' ou '$', para criar uma expressão regular mais específica."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>remove</literal> is identical to <literal>install</literal> except "
+"that packages are removed instead of installed. Note that removing a package "
+"leaves its configuration files on the system. If a plus sign is appended to "
+"the package name (with no intervening space), the identified package will be "
+"installed instead of removed."
+msgstr ""
+"<literal>remove</literal> é idêntico a <literal>install</literal> à "
+"excepção que os pacotes são removidos em vez de instalados. Note que remover "
+"um pacote deixa os seus ficheiros de configuração no sistema. Se um sinal "
+"mais (+) for acrescentado ao nome do pacote (sem nenhum espaço a separar), o "
+"pacote identificado será instalado em vez de removido."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>purge</literal> is identical to <literal>remove</literal> except "
+"that packages are removed and purged (any configuration files are deleted "
+"too)."
+msgstr ""
+"<literal>purge</literal> é idêntico ao <literal>remove</literal> com a "
+"excepção que os pacotes são removidos e purgados (quaisquer ficheiros de "
+"configuração são também apagados)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>source</literal> causes <command>apt-get</command> to fetch source "
+"packages. APT will examine the available packages to decide which source "
+"package to fetch. It will then find and download into the current directory "
+"the newest available version of that source package while respecting the "
+"default release, set with the option <literal>APT::Default-Release</"
+"literal>, the <option>-t</option> option or per package with the "
+"<literal>pkg/release</literal> syntax, if possible."
+msgstr ""
+"<literal>source</literal> faz com que o <command>apt-get</command> procure "
+"pacotes fonte. O APT irá examinar os pacotes disponíveis para decidir qual "
+"pacote fonte obter. Irá então encontrar e descarregar para o directório "
+"actual a versão disponível mais recente desse pacote fonte enquanto respeita "
+"o lançamento predefinido, definido com a opção <literal>APT::Default-"
+"Release</literal>, a opção <option>-t</option> ou por pacote com a sintaxe "
+"<literal>pkg/release</literal>, se possível."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Source packages are tracked separately from binary packages via <literal>deb-"
+"src</literal> lines in the &sources-list; file. This means that you will "
+"need to add such a line for each repository you want to get sources from; "
+"otherwise you will probably get either the wrong (too old/too new) source "
+"versions or none at all."
+msgstr ""
+"Os pacotes fonte são acompanhados em separado dos pacotes binários via "
+"linhas <literal>deb- src</literal> no ficheiro &sources-list;. Isto quer "
+"dizer que você precisa de adicionar uma dessas linhas para cada repositório "
+"de onde deseja obter fontes; caso contrário, irá provavelmente obter versões "
+"de fonte erradas (muito antigas/muito novas) ou mesmo nenhuma."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If the <option>--compile</option> option is specified then the package will "
+"be compiled to a binary .deb using <command>dpkg-buildpackage</command> for "
+"the architecture as defined by the <command>--host-architecture</command> "
+"option. If <option>--download-only</option> is specified then the source "
+"package will not be unpacked."
+msgstr ""
+"Se for especificada a opção <option>--compile</option> então o pacote irá "
+"ser compilado para um binário .deb usando <command>dpkg-buildpackage</"
+"command> para a arquitectura definida pela opção <command>--host-"
+"architecture</command>. Se for especificado <option>--download-only</option> "
+"então o pacote fonte não será desempacotado."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"A specific source version can be retrieved by postfixing the source name "
+"with an equals and then the version to fetch, similar to the mechanism used "
+"for the package files. This enables exact matching of the source package "
+"name and version, implicitly enabling the <literal>APT::Get::Only-Source</"
+"literal> option."
+msgstr ""
+"Uma versão fonte específica pode ser obtida ao pós-fixar o nome da fonte com "
+"um igual (=) e depois a versão a procurar, semelhante ao mecanismo usado "
+"para os ficheiros de pacotes. Isto activa a correspondência exacta do pacote "
+"fonte, nome e versão, activando implicitamente a opção <literal>APT::Get::"
+"Only-Source</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Note that source packages are not installed and tracked in the "
+"<command>dpkg</command> database like binary packages; they are simply "
+"downloaded to the current directory, like source tarballs."
+msgstr ""
+"Note que os pacotes fonte não são instalados e acompanhados na base de dados "
+"do <command>dpkg</command> como os pacotes binários; eles são simplesmente "
+"descarregados para o directório actual, como tarballs fonte."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>build-dep</literal> causes apt-get to install/remove packages in an "
+"attempt to satisfy the build dependencies for a source package. By default "
+"the dependencies are satisfied to build the package natively. If desired a "
+"host-architecture can be specified with the <option>--host-architecture</"
+"option> option instead."
+msgstr ""
+"<literal>build-dep</literal> faz o apt-get instalar/remover pacotes numa "
+"tentativa de satisfazer dependências de compilação para um pacote fonte. Por "
+"predefinição, as dependências são satisfeitas para compilar o pacote "
+"nativamente. Se desejado, em vez disso, pode ser especificada uma "
+"arquitectura-anfitriã com a opção <option>--host-architecture</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>check</literal> is a diagnostic tool; it updates the package cache "
+"and checks for broken dependencies."
+msgstr ""
+"<literal>check</literal> é uma ferramenta de diagnóstico; actualiza a cache "
+"de pacotes e verifica por dependências quebradas."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>download</literal> will download the given binary package into the "
+"current directory."
+msgstr ""
+"<literal>download</literal> irá descarregar o pacote binário dado para o "
+"directório actual."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>clean</literal> clears out the local repository of retrieved "
+"package files. It removes everything but the lock file from "
+"<filename>&cachedir;/archives/</filename> and <filename>&cachedir;/archives/"
+"partial/</filename>."
+msgstr ""
+"<literal>clean</literal> limpa o repositório local dos ficheiros de pacotes "
+"obtidos. Remove tudo excepto o ficheiro lock de <filename>&cachedir;/"
+"archives/</filename> e <filename>&cachedir;/archives/partial/</filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "(and the"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias since 1.1)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Like <literal>clean</literal>, <literal>autoclean</literal> clears out the "
+"local repository of retrieved package files. The difference is that it only "
+"removes package files that can no longer be downloaded, and are largely "
+"useless. This allows a cache to be maintained over a long period without it "
+"growing out of control. The configuration option <literal>APT::Clean-"
+"Installed</literal> will prevent installed packages from being erased if it "
+"is set to off."
+msgstr ""
+"Tal como o <literal>clean</literal>, <literal>autoclean</literal> limpa o "
+"repositório local de ficheiros de pacotes obtidos. A diferença é que apenas "
+"remove ficheiros de pacotes que já não podem ser mais descarregados, e são "
+"na maioria dos casos inúteis. Isto permite a manutenção de uma cache durante "
+"um longo período sem que ela cresça descontroladamente. A opção de "
+"configuração <literal>APT::Clean-Installed</literal> irá prevenir que "
+"pacotes instalados sejam apagados se estiver definida para 'off'."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed."
+msgstr ""
+"<literal>autoremove</literal> é usado para remover pacotes que foram "
+"instalados automaticamente para satisfazer dependências de outros pacotes e "
+"que já não são necessários."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>changelog</literal> downloads a package changelog and displays "
+#| "it through <command>sensible-pager</command>. The server name and base "
+#| "directory is defined in the <literal>APT::Changelogs::Server</literal> "
+#| "variable (e.g. <ulink url=\"http://packages.debian.org/changelogs"
+#| "\">packages.debian.org/changelogs</ulink> for Debian or <ulink url="
+#| "\"http://changelogs.ubuntu.com/changelogs\">changelogs.ubuntu.com/"
+#| "changelogs</ulink> for Ubuntu). By default it displays the changelog for "
+#| "the version that is installed. However, you can specify the same options "
+#| "as for the <option>install</option> command."
+msgid ""
+"<literal>changelog</literal> tries to download the changelog of a package "
+"and displays it through <command>sensible-pager</command>. By default it "
+"displays the changelog for the version that is installed. However, you can "
+"specify the same options as for the <option>install</option> command."
+msgstr ""
+"<literal>changelog</literal> descarrega o registo de alterações de um pacote "
+"e mostra-o através do <command>sensible-pager</command>. O nome do servidor "
+"e directório base são definidos na variável <literal>APT::Changelogs::"
+"Server</literal> (ex. <ulink url=\"http://packages.debian.org/changelogs"
+"\">packages.debian.org/changelogs</ulink> para Debian ou <ulink url=\"http://"
+"changelogs.ubuntu.com/changelogs\">changelogs.ubuntu.com/changelogs</ulink> "
+"para Ubuntu). Por predefinição mostra o registo de alterações da versão que "
+"está instalada. No entanto, você pode especificar as mesmas opções que são "
+"para o comando <option>install</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Displays by default a deb822 formatted listing of information about all data "
+"files (aka index targets) <command>apt-get update</command> would download. "
+"Supports a <option>--format</option> option to modify the output format as "
+"well as accepts lines of the default output to filter the records by. The "
+"command is mainly used as an interface for external tools working with APT "
+"to get information as well as filenames for downloaded files so they can use "
+"them as well instead of downloading them again on their own. Detailed "
+"documentation is omitted here and can instead be found in the file &apt-"
+"acquire-additional-files; shipped by the <package>apt-doc</package> package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml apt-cache.8.xml apt-config.8.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "options"
+msgstr "opções"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not consider recommended packages as a dependency for installing. "
+"Configuration Item: <literal>APT::Install-Recommends</literal>."
+msgstr ""
+"Não considera pacotes recomendados como dependências para instalação. Item "
+"de Configuração: <literal>APT::Install-Recommends</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Consider suggested packages as a dependency for installing. Configuration "
+"Item: <literal>APT::Install-Suggests</literal>."
+msgstr ""
+"Considera pacotes sugeridos como uma dependência para instalação. Item de "
+"Configuração: <literal>APT::Install-Suggests</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Download only; package files are only retrieved, not unpacked or installed. "
+"Configuration Item: <literal>APT::Get::Download-Only</literal>."
+msgstr ""
+"Apenas descarrega; os ficheiros pacotes são apenas obtidos, não são "
+"desempacotados nem instalados. Item de Configuração: <literal>APT::Get::"
+"Download-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Fix; attempt to correct a system with broken dependencies in place. This "
+"option, when used with install/remove, can omit any packages to permit APT "
+"to deduce a likely solution. If packages are specified, these have to "
+"completely correct the problem. The option is sometimes necessary when "
+"running APT for the first time; APT itself does not allow broken package "
+"dependencies to exist on a system. It is possible that a system's dependency "
+"structure can be so corrupt as to require manual intervention (which usually "
+"means using <command>dpkg --remove</command> to eliminate some of the "
+"offending packages). Use of this option together with <option>-m</option> "
+"may produce an error in some situations. Configuration Item: <literal>APT::"
+"Get::Fix-Broken</literal>."
+msgstr ""
+"Corrige; tenta corrigir um sistema com dependências quebradas no lugar. Esta "
+"opção, quando usada com install/remove, pode omitir quaisquer pacotes para "
+"permitir ao APT deduzir uma solução provável. Se forem especificados "
+"pacotes, este têm de corrigir completamente o problema. A opção é por vezes "
+"necessária quando se corre o APT pela primeira vez. O próprio APT não "
+"permite que existam num sistema dependências de pacotes quebradas. É "
+"possível que uma estrutura de dependências de um sistema esteja tão "
+"corrompida ao ponto de requerer intervenção manual (o que normalmente "
+"significa usar o <command>dpkg --remove</command> para eliminar alguns dos "
+"pacotes ofensivos). O uso desta opção juntamente com <option>-m</option> "
+"pode produzir um erro em algumas situações. Item de Configuração: "
+"<literal>APT::Get::Fix-Broken</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore missing packages; if packages cannot be retrieved or fail the "
+"integrity check after retrieval (corrupted package files), hold back those "
+"packages and handle the result. Use of this option together with <option>-f</"
+"option> may produce an error in some situations. If a package is selected "
+"for installation (particularly if it is mentioned on the command line) and "
+"it could not be downloaded then it will be silently held back. "
+"Configuration Item: <literal>APT::Get::Fix-Missing</literal>."
+msgstr ""
+"Ignora pacotes em falta; Se pacotes não podem ser obtidos ou falham a "
+"verificação de integridade após obtenção (ficheiros de pacotes corrompidos), "
+"retêm esses pacotes e manuseia o resultado. Usar esta opção em conjunto com "
+"<option>-f</option> pode produzir erros em algumas situações. Se um pacote "
+"for seleccionado para instalação (particularmente se for mencionado na linha "
+"de comandos) e não pode ser descarregado estão será retido em silêncio. Item "
+"de Configuração: <literal>APT::Get::Fix-Missing</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Disables downloading of packages. This is best used with <option>--ignore-"
+"missing</option> to force APT to use only the .debs it has already "
+"downloaded. Configuration Item: <literal>APT::Get::Download</literal>."
+msgstr ""
+"Desactiva a descarga de pacotes. Isto é melhor ser usado com <option>--"
+"ignore-missing</option> para forçar o APT a usar os .debs que já foram "
+"descarregados. Item de Configuração: <literal>APT::Get::Download</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Note that quiet level 2 implies <option>-y</option>; you should never "
+"use -qq without a no-action modifier such as -d, --print-uris or -s as APT "
+"may decide to do something you did not expect. Configuration Item: "
+"<literal>quiet</literal>."
+msgstr ""
+"Silencioso; produz saída apropriada para registar em log, omitindo "
+"indicadores de progresso. Mais q's irá resultar em mais silêncio até o "
+"máximo de 2. Você também pode usar <option>-q=#</option> para definir o "
+"nível de silêncio, sobrepondo o ficheiro de configuração. Note que o "
+"silêncio nível 2 implica <option>-y</option>, você nunca deve usar -qq sem "
+"um modificador de 'nenhuma acção' tal como -d, --print-uris ou -s pois o APT "
+"pode decidir fazer algo que você não esperava. Item de Configuração: "
+"<literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"No action; perform a simulation of events that would occur based on the "
+"current system state but do not actually change the system. Locking will be "
+"disabled (<option>Debug::NoLocking</option>) so the system state could "
+"change while <command>apt-get</command> is running. Simulations can also be "
+"executed by non-root users which might not have read access to all apt "
+"configuration distorting the simulation. A notice expressing this warning "
+"is also shown by default for non-root users (<option>APT::Get::Show-User-"
+"Simulation-Note</option>). Configuration Item: <literal>APT::Get::Simulate</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Simulated runs print out a series of lines, each representing a "
+"<command>dpkg</command> operation: configure (<literal>Conf</literal>), "
+"remove (<literal>Remv</literal>) or unpack (<literal>Inst</literal>). "
+"Square brackets indicate broken packages, and empty square brackets indicate "
+"breaks that are of no consequence (rare)."
+msgstr ""
+"As simulações escrevem uma série de linhas cada uma representando uma "
+"operação do <command>dpkg</command>: configurar (<literal>Conf</literal>), "
+"remover (<literal>Remv</literal>) ou desempacotar (<literal>Inst</literal>). "
+"Parêntesis rectos ([]) indicam pacotes quebrados e parêntesis rectos vazios "
+"indicam quebras que não têm consequência (raro)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Automatic yes to prompts; assume \"yes\" as answer to all prompts and run "
+"non-interactively. If an undesirable situation, such as changing a held "
+"package, trying to install a unauthenticated package or removing an "
+"essential package occurs then <literal>apt-get</literal> will abort. "
+"Configuration Item: <literal>APT::Get::Assume-Yes</literal>."
+msgstr ""
+"Responde sim automaticamente aos avisos; assume \"yes\" como resposta a "
+"todos os avisos e corre não-interactivamente. Se uma situação indesejável "
+"ocorrer, tal como alterar um pacote retido, tentar instalar um pacote não "
+"autenticado ou remover um pacote essencial, então o <literal>apt-get</"
+"literal> irá abortar. Item de Configuração: <literal>APT::Get::Assume-Yes</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Automatic \"no\" to all prompts. Configuration Item: <literal>APT::Get::"
+"Assume-No</literal>."
+msgstr ""
+"Resposta \"Não\" automática a todos os avisos. Item de Configuração: "
+"<literal>APT::Get::Assume-No</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Show upgraded packages; print out a list of all packages that are to be "
+#| "upgraded. Configuration Item: <literal>APT::Get::Show-Upgraded</literal>."
+msgid ""
+"Do not show a list of all packages that are to be upgraded. Configuration "
+"Item: <literal>APT::Get::Show-Upgraded</literal>."
+msgstr ""
+"Mostra pacotes actualizados; Escreve uma lista de todos os pacotes que estão "
+"prestes a ser actualizados. Item de Configuração: <literal>APT::Get::Show-"
+"Upgraded</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Show full versions for upgraded and installed packages. Configuration Item: "
+"<literal>APT::Get::Show-Versions</literal>."
+msgstr ""
+"Mostra as versões completas para pacotes actualizados e instalados. Item de "
+"Configuração: <literal>APT::Get::Show-Versions</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the architecture packages are built for by <command>apt-"
+"get source --compile</command> and how cross-builddependencies are "
+"satisfied. By default is it not set which means that the host architecture "
+"is the same as the build architecture (which is defined by <literal>APT::"
+"Architecture</literal>). Configuration Item: <literal>APT::Get::Host-"
+"Architecture</literal>."
+msgstr ""
+"Esta opção controla a arquitectura para que os pacotes são compilados pelo "
+"<command>apt-get source --compile</command> e como as dependências cruzadas "
+"de compilação são satisfeitas. Por predefinição não está activa o que "
+"significa que a arquitectura anfitriã é a mesma que a arquitectura de "
+"compilação (a qual é definida por <literal>APT::Architecture</literal>). "
+"item de Configuração: <literal>APT::Get::Host-Architecture</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the activated build profiles for which a source package "
+"is built by <command>apt-get source --compile</command> and how build "
+"dependencies are satisfied. By default no build profile is active. More "
+"than one build profile can be activated at a time by concatenating them with "
+"a comma. Configuration Item: <literal>APT::Build-Profiles</literal>."
+msgstr ""
+"Esta opção controla perfis de compilação activados pelos quais um pacote "
+"fonte é compilado por <command>apt-get source --compile</command> e como as "
+"dependências de compilação são satisfeitas. Por predefinição, nenhum perfil "
+"de compilação está activo. Podem ser activados ao mesmo tempo mais do que um "
+"perfil de compilação ao concatená-los com uma vírgula. Item de configuração: "
+"<literal>APT::Build-Profiles</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Compile source packages after downloading them. Configuration Item: "
+"<literal>APT::Get::Compile</literal>."
+msgstr ""
+"Compila pacotes fonte após os descarregar. Item de Configuração: "
+"<literal>APT::Get::Compile</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore package holds; this causes <command>apt-get</command> to ignore a "
+"hold placed on a package. This may be useful in conjunction with "
+"<literal>dist-upgrade</literal> to override a large number of undesired "
+"holds. Configuration Item: <literal>APT::Ignore-Hold</literal>."
+msgstr ""
+"Ignora pacotes retidos; Isto faz com que o <command>apt-get</command> ignore "
+"a retenção de um pacote. Isto pode ser útil em conjunto com <literal>dist-"
+"upgrade</literal> para sobrepor um grande número de retenções não desejadas. "
+"Item de Configuração: <literal>APT::Ignore-Hold</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Allow installing new packages when used in conjunction with "
+"<literal>upgrade</literal>. This is useful if the update of a installed "
+"package requires new dependencies to be installed. Instead of holding the "
+"package back <literal>upgrade</literal> will upgrade the package and install "
+"the new dependencies. Note that <literal>upgrade</literal> with this option "
+"will never remove packages, only allow adding new ones. Configuration Item: "
+"<literal>APT::Get::Upgrade-Allow-New</literal>."
+msgstr ""
+"Permite a instalação de novos pacotes quando usado em conjunto com "
+"<literal>upgrade</literal>. Isto é útil se a actualização de um pacote "
+"instalado requerer que sejam instaladas novas dependências. Em vez de reter "
+"o pacote, o <literal>upgrade</literal>irá actualizar o pacote e instalar as "
+"novas dependências. Note que <literal>upgrade</literal> com esta opção nunca "
+"irá remover pacotes, apenas permitir adicionar novos. Item de configuração: "
+"<literal>APT::Get::Upgrade-Allow-New</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not upgrade packages; when used in conjunction with <literal>install</"
+"literal>, <literal>no-upgrade</literal> will prevent packages on the command "
+"line from being upgraded if they are already installed. Configuration Item: "
+"<literal>APT::Get::Upgrade</literal>."
+msgstr ""
+"Não actualiza pacotes; Quando usado em conjunto com <literal>install</"
+"literal>, o <literal>no-upgrade</literal> irá prevenir que pacotes sejam "
+"actualizados na linha de comandos se estes já estiverem instalados. Item de "
+"Configuração: <literal>APT::Get::Upgrade</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not install new packages; when used in conjunction with <literal>install</"
+"literal>, <literal>only-upgrade</literal> will install upgrades for already "
+"installed packages only and ignore requests to install new packages. "
+"Configuration Item: <literal>APT::Get::Only-Upgrade</literal>."
+msgstr ""
+"Não instala pacotes novos; quando usado em conjunto com <literal>install</"
+"literal>, <literal>only-upgrade</literal> irá instalar apenas actualizações "
+"para pacotes já instalados e ignorar pedidos para instalar novos pacotes. "
+"Item de Configuração: <literal>APT::Get::Only-Upgrade</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Force yes; this is a dangerous option that will cause apt to continue "
+#| "without prompting if it is doing something potentially harmful. It should "
+#| "not be used except in very special situations. Using <literal>force-yes</"
+#| "literal> can potentially destroy your system! Configuration Item: "
+#| "<literal>APT::Get::force-yes</literal>."
+msgid ""
+"This is a dangerous option that will cause apt to continue without prompting "
+"if it is doing downgrades. It should not be used except in very special "
+"situations. Using it can potentially destroy your system! Configuration "
+"Item: <literal>APT::Get::allow-downgrades</literal>. Introduced in APT 1.1."
+msgstr ""
+"Força o sim; Esta é uma opção perigosa que irá fazer com que o apt continue "
+"sem avisar quando está a fazer algo potencialmente prejudicial. Não deve ser "
+"usado excepto em situações muito especiais. Usar o <literal>force-yes</"
+"literal> pode destruir potencialmente o seu sistema! Item de Configuração: "
+"<literal>APT::Get::force-yes</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Force yes; this is a dangerous option that will cause apt to continue "
+#| "without prompting if it is doing something potentially harmful. It should "
+#| "not be used except in very special situations. Using <literal>force-yes</"
+#| "literal> can potentially destroy your system! Configuration Item: "
+#| "<literal>APT::Get::force-yes</literal>."
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is removing essentials. It should not be used except "
+"in very special situations. Using it can potentially destroy your system! "
+"Configuration Item: <literal>APT::Get::allow-remove-essential</literal>. "
+"Introduced in APT 1.1."
+msgstr ""
+"Força o sim; Esta é uma opção perigosa que irá fazer com que o apt continue "
+"sem avisar quando está a fazer algo potencialmente prejudicial. Não deve ser "
+"usado excepto em situações muito especiais. Usar o <literal>force-yes</"
+"literal> pode destruir potencialmente o seu sistema! Item de Configuração: "
+"<literal>APT::Get::force-yes</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Force yes; this is a dangerous option that will cause apt to continue "
+#| "without prompting if it is doing something potentially harmful. It should "
+#| "not be used except in very special situations. Using <literal>force-yes</"
+#| "literal> can potentially destroy your system! Configuration Item: "
+#| "<literal>APT::Get::force-yes</literal>."
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is changing held packages. It should not be used "
+"except in very special situations. Using it can potentially destroy your "
+"system! Configuration Item: <literal>APT::Get::allow-change-held-packages</"
+"literal>. Introduced in APT 1.1."
+msgstr ""
+"Força o sim; Esta é uma opção perigosa que irá fazer com que o apt continue "
+"sem avisar quando está a fazer algo potencialmente prejudicial. Não deve ser "
+"usado excepto em situações muito especiais. Usar o <literal>force-yes</"
+"literal> pode destruir potencialmente o seu sistema! Item de Configuração: "
+"<literal>APT::Get::force-yes</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Force yes; this is a dangerous option that will cause apt to continue "
+#| "without prompting if it is doing something potentially harmful. It should "
+#| "not be used except in very special situations. Using <literal>force-yes</"
+#| "literal> can potentially destroy your system! Configuration Item: "
+#| "<literal>APT::Get::force-yes</literal>."
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is doing something potentially harmful. It should "
+"not be used except in very special situations. Using <literal>force-yes</"
+"literal> can potentially destroy your system! Configuration Item: "
+"<literal>APT::Get::force-yes</literal>. This is deprecated and replaced by "
+"<option>--allow-downgrades</option>, <option>--allow-remove-essential</"
+"option>, <option>--allow-change-held-packages</option> in 1.1."
+msgstr ""
+"Força o sim; Esta é uma opção perigosa que irá fazer com que o apt continue "
+"sem avisar quando está a fazer algo potencialmente prejudicial. Não deve ser "
+"usado excepto em situações muito especiais. Usar o <literal>force-yes</"
+"literal> pode destruir potencialmente o seu sistema! Item de Configuração: "
+"<literal>APT::Get::force-yes</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Instead of fetching the files to install their URIs are printed. Each URI "
+"will have the path, the destination file name, the size and the expected MD5 "
+"hash. Note that the file name to write to will not always match the file "
+"name on the remote site! This also works with the <literal>source</literal> "
+"and <literal>update</literal> commands. When used with the <literal>update</"
+"literal> command the MD5 and size are not included, and it is up to the user "
+"to decompress any compressed files. Configuration Item: <literal>APT::Get::"
+"Print-URIs</literal>."
+msgstr ""
+"Ao invés de ir buscar os ficheiros para instalar, escreve os seus URIs. Cada "
+"URI irá ter o caminho, o nome de ficheiro de destino, o tamanho e o hash MD5 "
+"esperado. Note que o nome de ficheiro a escrever nem sempre irá condizer com "
+"o nome do ficheiro no site remoto! Isto também funciona com os comandos "
+"<literal>source</literal> e <literal>update</literal>. Quando usado com o "
+"comando <literal>update</literal> o MD5 e o tamanho não são incluídos, e "
+"cabe ao utilizador descomprimir quaisquer ficheiros comprimidos. Item de "
+"Configuração: <literal>APT::Get::Print-URIs</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Use purge instead of remove for anything that would be removed. An asterisk "
+"(\"*\") will be displayed next to packages which are scheduled to be purged. "
+"<option>remove --purge</option> is equivalent to the <option>purge</option> "
+"command. Configuration Item: <literal>APT::Get::Purge</literal>."
+msgstr ""
+"Usa purgar em vez de remoção para tudo o que seja removido. Um asterisco (\"*"
+"\") será mostrado junto dos pacotes que estão agendados para serem purgados. "
+"<option>remove --purge</option> é equivalente ao comando <option>purge</"
+"option>. Item de Configuração: <literal>APT::Get::Purge</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Re-install packages that are already installed and at the newest version. "
+"Configuration Item: <literal>APT::Get::ReInstall</literal>."
+msgstr ""
+"Re-instala pacotes que já estão instalados e na versão mais recente. Item de "
+"Configuração: <literal>APT::Get::ReInstall</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option is on by default; use <literal>--no-list-cleanup</literal> to "
+"turn it off. When it is on, <command>apt-get</command> will automatically "
+"manage the contents of <filename>&statedir;/lists</filename> to ensure that "
+"obsolete files are erased. The only reason to turn it off is if you "
+"frequently change your sources list. Configuration Item: <literal>APT::Get::"
+"List-Cleanup</literal>."
+msgstr ""
+"Esta opção está ligada por predefinição; use <literal>--no-list-cleanup</"
+"literal> para a desligar. Quando ligada o <command>apt-get</command> irá "
+"gerir automaticamente os conteúdos de <filename>&statedir;/lists</filename> "
+"para assegurar que os ficheiros obsoletos são apagados. A única razão para "
+"desligar isto é no caso de você alterar frequentemente a sua lista de "
+"fontes. Item de Configuração: <literal>APT::Get::List-Cleanup</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the default input to the policy engine; it creates a "
+"default pin at priority 990 using the specified release string. This "
+"overrides the general settings in <filename>/etc/apt/preferences</"
+"filename>. Specifically pinned packages are not affected by the value of "
+"this option. In short, this option lets you have simple control over which "
+"distribution packages will be retrieved from. Some common examples might be "
+"<option>-t '2.1*'</option>, <option>-t unstable</option> or <option>-t sid</"
+"option>. Configuration Item: <literal>APT::Default-Release</literal>; see "
+"also the &apt-preferences; manual page."
+msgstr ""
+"Esta opção controla a entrada predefinida para o motor de políticas, cria um "
+"pin predefinido na prioridade 990 usando a string de lançamento "
+"especificada. Isto sobrepõe as definições gerais em <filename>/etc/apt/"
+"preferences</filename>. Os pacotes com pin específico não são afectados pelo "
+"valor desta opção. Em resumo, esta opção permite-lhe ter controlo simples "
+"sobre de qual distribuição os pacotes serão obtidos. Alguns exemplos comuns "
+"podem ser <option>-t '2.1*'</option>, <option>-t unstable</option> ou "
+"<option>-t sid</option>. Item de Configuração: <literal>APT::Default-"
+"Release</literal>; veja também o manual &apt-preferences;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only perform operations that are 'trivial'. Logically this can be considered "
+"related to <option>--assume-yes</option>; where <option>--assume-yes</"
+"option> will answer yes to any prompt, <option>--trivial-only</option> will "
+"answer no. Configuration Item: <literal>APT::Get::Trivial-Only</literal>."
+msgstr ""
+"Apenas executa operações 'triviais'. Na lógica isto pode ser considerado "
+"relacionado ao <option>--assume-yes</option>, onde <option>--assume-yes</"
+"option> irá responder 'sim' a todos os avisos, <option>--trivial-only</"
+"option> irá responder 'não'. Item de Configuração: <literal>APT::Get::"
+"Trivial-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If any packages are to be removed apt-get immediately aborts without "
+"prompting. Configuration Item: <literal>APT::Get::Remove</literal>."
+msgstr ""
+"Se quaisquer pacotes estiverem para ser removidos, o apt-get aborta "
+"imediatamente sem aviso. Item de Configuração: <literal>APT::Get::Remove</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If the command is either <literal>install</literal> or <literal>remove</"
+"literal>, then this option acts like running the <literal>autoremove</"
+"literal> command, removing unused dependency packages. Configuration Item: "
+"<literal>APT::Get::AutomaticRemove</literal>."
+msgstr ""
+"Se o comando for <literal>install</literal> ou <literal>remove</literal>, "
+"então esta opção age como se corresse o comando <literal>autoremove</"
+"literal>, removendo os pacotes de dependências não utilizados. Item de "
+"Configuração: <literal>APT::Get::AutomaticRemove</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only has meaning for the <literal>source</literal> and <literal>build-dep</"
+"literal> commands. Indicates that the given source names are not to be "
+"mapped through the binary table. This means that if this option is "
+"specified, these commands will only accept source package names as "
+"arguments, rather than accepting binary package names and looking up the "
+"corresponding source package. Configuration Item: <literal>APT::Get::Only-"
+"Source</literal>."
+msgstr ""
+"Apenas tem significado para os comandos <literal>source</literal> e "
+"<literal>build-dep</literal>. Indica que os nomes de fontes fornecidos não "
+"são para serem mapeados através da tabela de binários. Isto quer dizer que "
+"se esta opção for especificada, estes comandos apenas irão aceitar nomes de "
+"pacotes fonte como argumentos, em vez de aceitarem nomes de pacotes binários "
+"e procurar o pacote fonte correspondente. Item de Configuração: "
+"<literal>APT::Get::Only-Source</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Download only the diff, dsc, or tar file of a source archive. Configuration "
+"Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</"
+"literal>, and <literal>APT::Get::Tar-Only</literal>."
+msgstr ""
+"Descarrega apenas o ficheiro diff, dsc, ou tar de um pacote fonte. Item de "
+"Configuração: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-"
+"Only</literal>, e <literal>APT::Get::Tar-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only process architecture-dependent build-dependencies. Configuration Item: "
+"<literal>APT::Get::Arch-Only</literal>."
+msgstr ""
+"Apenas processa dependências de compilação dependentes da arquitectura. Item "
+"de Configuração: <literal>APT::Get::Arch-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+#, fuzzy
+#| msgid ""
+#| "Only process architecture-dependent build-dependencies. Configuration "
+#| "Item: <literal>APT::Get::Arch-Only</literal>."
+msgid ""
+"Only process architecture-independent build-dependencies. Configuration "
+"Item: <literal>APT::Get::Indep-Only</literal>."
+msgstr ""
+"Apenas processa dependências de compilação dependentes da arquitectura. Item "
+"de Configuração: <literal>APT::Get::Arch-Only</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore if packages can't be authenticated and don't prompt about it. This "
+"can be useful while working with local repositories, but is a huge security "
+"risk if data authenticity isn't ensured in another way by the user itself. "
+"The usage of the <option>Trusted</option> option for &sources-list; entries "
+"should usually be preferred over this global override. Configuration Item: "
+"<literal>APT::Get::AllowUnauthenticated</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Forbid the update command to acquire unverifiable data from configured "
+"sources. APT will fail at the update command for repositories without valid "
+"cryptographically signatures. See also &apt-secure; for details on the "
+"concept and the implications. Configuration Item: <literal>Acquire::"
+"AllowInsecureRepositories</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Show user friendly progress information in the terminal window when packages "
+"are installed, upgraded or removed. For a machine parsable version of this "
+"data see README.progress-reporting in the apt doc directory. Configuration "
+"Items: <literal>Dpkg::Progress</literal> and <literal>Dpkg::Progress-Fancy</"
+"literal>."
+msgstr ""
+"Mostra informação de progresso compreensível para o utilizador na janela de "
+"terminal quando os pacotes são instalados, actualizados ou removidos. Para "
+"uma versão \"analisável por máquina\" destes dados veja o README.progress-"
+"reporting no directório doc do apt. Item de Configuração: <literal>Dpkg::"
+"Progress</literal> e <literal>Dpkg::Progress-Fancy</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. See <option>--with-source</option> description in &apt-"
+"cache; for further details."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml
+msgid "Files"
+msgstr "Ficheiros"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
+"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
+"APT Howto."
+msgstr ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
+"&apt-secure;, O guia de utilizadores do The APT em &guidesdir;, &apt-"
+"preferences;, o Howto do APT."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"<command>apt-get</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+"<command>apt-get</command> devolve zero na operação normal, 100 decimal em "
+"erro."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cache.8.xml
+msgid "query the APT cache"
+msgstr "pesquisa a cache do APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "<command>apt-cache</command> performs a variety of operations on APT's "
+#| "package cache. <command>apt-cache</command> does not manipulate the state "
+#| "of the system but does provide operations to search and generate "
+#| "interesting output from the package metadata."
+msgid ""
+"<command>apt-cache</command> performs a variety of operations on APT's "
+"package cache. <command>apt-cache</command> does not manipulate the state of "
+"the system but does provide operations to search and generate interesting "
+"output from the package metadata. The metadata is acquired and updated via "
+"the 'update' command of e.g. <command>apt-get</command>, so that it can be "
+"outdated if the last update is too long ago, but in exchange <command>apt-"
+"cache</command> works independently of the availability of the configured "
+"sources (e.g. offline)."
+msgstr ""
+"<command>apt-cache</command> executa uma variedade de operações na cache de "
+"pacotes do APT. <command>apt-cache</command> não manipula o estado do "
+"sistema mas fornece operações para procurar e gerar resultados interessantes "
+"a partir dos metadados do pacote."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>gencaches</literal> creates APT's package cache. This is done "
+"implicitly by all commands needing this cache if it is missing or outdated."
+msgstr ""
+"<literal>gencaches</literal> cria a cache de pacotes do APT. Isto é feito "
+"implicitamente por todos os comandos que precisam desta cache se esta "
+"estiver em falta ou desactualizada."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml
+msgid "&synopsis-pkg;"
+msgstr "&synopsis-pkg;"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>showpkg</literal> displays information about the packages listed on "
+"the command line. Remaining arguments are package names. The available "
+"versions and reverse dependencies of each package listed are listed, as well "
+"as forward dependencies for each version. Forward (normal) dependencies are "
+"those packages upon which the package in question depends; reverse "
+"dependencies are those packages that depend upon the package in question. "
+"Thus, forward dependencies must be satisfied for a package, but reverse "
+"dependencies need not be. For instance, <command>apt-cache showpkg "
+"libreadline2</command> would produce output similar to the following:"
+msgstr ""
+"<literal>showpkg</literal> mostra informação acerca dos pacotes listados na "
+"linha de comandos. Os argumentos restantes são nomes de pacotes. São "
+"listadas as versões disponíveis e dependências reversas de cada pacote "
+"listado, assim como as dependências dianteiras de cada versão. Dependências "
+"dianteiras (normais) são aqueles pacotes de que o pacote em questão depende; "
+"dependências reversas são aqueles pacotes que dependem do pacote em questão. "
+"Assim, as dependências dianteiras de um pacote têm de ser satisfeitas, mas "
+"as dependências reversas não precisam de ser. Por exemplo, <command>apt-"
+"cache showpkg libreadline2</command> deverá produzir resultados semelhantes "
+"ao seguinte:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-cache.8.xml
+#, no-wrap
+msgid ""
+"Package: libreadline2\n"
+"Versions: 2.1-12(/var/state/apt/lists/foo_Packages),\n"
+"Reverse Depends: \n"
+" libreadlineg2,libreadline2\n"
+" libreadline2-altdev,libreadline2\n"
+"Dependencies:\n"
+"2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))\n"
+"Provides:\n"
+"2.1-12 - \n"
+"Reverse Provides: \n"
+msgstr ""
+"Pacote: libreadline2\n"
+"Versões: 2.1-12(/var/state/apt/lists/foo_Packages),\n"
+"Dependências Reversas Depends: \n"
+" libreadlineg2,libreadline2\n"
+" libreadline2-altdev,libreadline2\n"
+"Dependências:\n"
+"2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))\n"
+"Fornecimentos:\n"
+"2.1-12 - \n"
+"Fornecimentos Reversos: \n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Thus it may be seen that libreadline2, version 2.1-12, depends on libc5 and "
+"ncurses3.0 which must be installed for libreadline2 to work. In turn, "
+"libreadlineg2 and libreadline2-altdev depend on libreadline2. If "
+"libreadline2 is installed, libc5 and ncurses3.0 (and ldso) must also be "
+"installed; libreadlineg2 and libreadline2-altdev do not have to be "
+"installed. For the specific meaning of the remainder of the output it is "
+"best to consult the apt source code."
+msgstr ""
+"Assim pode-se ver que libreadline2, versão 2.1-12, depende de libc5 e "
+"ncurses3.0 que têm que ser instalados para que libreadline2 funcione. Por "
+"sua vez, libreadlineg2 e libreadline2-altdev dependem de libreadline2. Se "
+"libreadline2 for instalado, libc5 e ncurses3.0 (e ldso) também têm que ser "
+"instalados; libreadlineg2 e libreadline2-altdev não precisam de ser "
+"instalados. Para o significado específico do lembrete da saída é melhor "
+"consultar o código fonte do apt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>stats</literal> displays some statistics about the cache. No "
+"further arguments are expected. Statistics reported are:"
+msgstr ""
+"<literal>stats</literal> mostra algumas estatísticas acerca da cache. Não "
+"são esperados mais argumentos. As estatísticas reportadas são:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total package names</literal> is the number of package names found "
+"in the cache."
+msgstr ""
+"<literal>Total package names</literal> é o número de nomes de pacotes "
+"encontrados na cache."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Normal packages</literal> is the number of regular, ordinary "
+"package names; these are packages that bear a one-to-one correspondence "
+"between their names and the names used by other packages for them in "
+"dependencies. The majority of packages fall into this category."
+msgstr ""
+"<literal>Normal packages</literal> é o número de nomes de pacotes regulares "
+"e ordinários; estes são pacotes que têm uma correspondência de um-para-um "
+"entre os seus nomes e os nomes usados por outros pacotes para eles nas "
+"dependências. A maioria dos pacotes caem nesta categoria."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Pure virtual packages</literal> is the number of packages that "
+"exist only as a virtual package name; that is, packages only \"provide\" the "
+"virtual package name, and no package actually uses the name. For instance, "
+"\"mail-transport-agent\" in the Debian system is a pure virtual package; "
+"several packages provide \"mail-transport-agent\", but there is no package "
+"named \"mail-transport-agent\"."
+msgstr ""
+"<literal>Pure virtual packages</literal> é o número de pacotes que existem "
+"apenas como nome de pacote virtual; isto é, os pacotes apenas "
+"\"disponibilizam\" o nome do pacote virtual, e nenhum pacote usa realmente o "
+"nome. Por exemplo, \"mail-transport-agent\" no sistema Debian é um pacote "
+"puramente virtual; vários pacotes disponibilizam \"mail-transport-agent\", "
+"mas não existe um existe um pacote chamado \"mail-transport-agent\"."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Single virtual packages</literal> is the number of packages with "
+"only one package providing a particular virtual package. For example, in the "
+"Debian system, \"X11-text-viewer\" is a virtual package, but only one "
+"package, xless, provides \"X11-text-viewer\"."
+msgstr ""
+"<literal>Single virtual packages</literal> é o número de pacotes com apenas "
+"um pacote a disponibilizar um pacote virtual particular. Por exemplo, no "
+"sistema Debian, \"X11-text-viewer\" é um pacote virtual, mas apenas um "
+"pacote, xless, disponibiliza \"X11-text-viewer\"."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Mixed virtual packages</literal> is the number of packages that "
+"either provide a particular virtual package or have the virtual package name "
+"as the package name. For instance, in the Debian system, \"debconf\" is both "
+"an actual package, and provided by the debconf-tiny package."
+msgstr ""
+"<literal>Mixed virtual packages</literal> é o número de pacotes que ou "
+"disponibilizam um pacote virtual particular ou têm o nome de pacote virtual "
+"como o nome de pacote. Por exemplo, no sistema Debian, \"debconf\" é tanto "
+"um pacote real, como também disponibilizado pelo pacote debconf-tiny."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Missing</literal> is the number of package names that were "
+"referenced in a dependency but were not provided by any package. Missing "
+"packages may be an evidence if a full distribution is not accessed, or if a "
+"package (real or virtual) has been dropped from the distribution. Usually "
+"they are referenced from Conflicts or Breaks statements."
+msgstr ""
+"<literal>Missing</literal> é o número de nomes de pacotes que são "
+"referenciados numa dependência mas não foram disponibilizados por nenhum "
+"pacote. Os pacotes em falta podem ser uma evidência de que não se está a "
+"aceder ao total de uma distribuição, ou que um pacote (real ou virtual) foi "
+"removido da distribuição. Normalmente são referenciados a partir de "
+"declarações de Conflitos ou Breaks."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>Total distinct</literal> versions is the number of package "
+#| "versions found in the cache; this value is therefore at least equal to "
+#| "the number of total package names. If more than one distribution is being "
+#| "accessed (for instance, \"stable\" and \"unstable\"), this value can be "
+#| "considerably larger than the number of total package names."
+msgid ""
+"<literal>Total distinct</literal> versions is the number of package versions "
+"found in the cache. If more than one distribution is being accessed (for "
+"instance, \"stable\" and \"unstable\"), this value can be considerably "
+"larger than the number of total package names."
+msgstr ""
+"<literal>Total distinct versions</literal> é o número de versões de pacotes "
+"encontrados na cache; este valor é portanto pelo menos igual ao número do "
+"total de nomes de pacotes. Se for acedida a mais do que uma distribuição "
+"(por exemplo \"stable\" e \"unstable\"), este valor pode ser "
+"consideravelmente maior que o número do total de nomes de pacotes."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total dependencies</literal> is the number of dependency "
+"relationships claimed by all of the packages in the cache."
+msgstr ""
+"<literal>Total dependencies</literal> é o número de relacionamentos com "
+"dependências reivindicadas por todos os pacotes na cache."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>showsrc</literal> displays all the source package records that "
+#| "match the given package names. All versions are shown, as well as all "
+#| "records that declare the name to be a binary package."
+msgid ""
+"<literal>showsrc</literal> displays all the source package records that "
+"match the given package names. All versions are shown, as well as all "
+"records that declare the name to be a binary package. Use <option>--only-"
+"source</option> to display only source package names."
+msgstr ""
+"<literal>showsrc</literal> mostra todos os registos de pacotes fonte que "
+"correspondem aos nomes de pacotes fornecidos. Todas as versões são "
+"mostradas, assim como todos os registos que declaram o nome como sendo um "
+"pacote binário."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dump</literal> shows a short listing of every package in the cache. "
+"It is primarily for debugging."
+msgstr ""
+"<literal>dump</literal> mostra uma listagem curta de todos os pacotes na "
+"cache. É principalmente para depuração."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dumpavail</literal> prints out an available list to stdout. This is "
+"suitable for use with &dpkg; and is used by the &dselect; method."
+msgstr ""
+"<literal>dumpavail</literal> escreve uma lista de disponibilidades no "
+"stdout. Isto é apropriado para usar com o &dpkg; e é usado pelo método "
+"&dselect;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>unmet</literal> displays a summary of all unmet dependencies in the "
+"package cache."
+msgstr ""
+"<literal>unmet</literal> mostra um sumário de todas as dependências "
+"insatisfeitas na cache do pacote."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>show</literal> performs a function similar to <command>dpkg --print-"
+"avail</command>; it displays the package records for the named packages."
+msgstr ""
+"<literal>show</literal> executa uma função semelhante ao <command>dpkg --"
+"print-avail</command>; mostra os registos do pacote para os pacotes nomeados."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml
+msgid "&synopsis-regex;"
+msgstr "&synopsis-regex;"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>search</literal> performs a full text search on all available "
+#| "package lists for the POSIX regex pattern given, see &regex;. It "
+#| "searches the package names and the descriptions for an occurrence of the "
+#| "regular expression and prints out the package name and the short "
+#| "description, including virtual package names. If <option>--full</option> "
+#| "is given then output identical to <literal>show</literal> is produced for "
+#| "each matched package, and if <option>--names-only</option> is given then "
+#| "the long description is not searched, only the package name is."
+msgid ""
+"<literal>search</literal> performs a full text search on all available "
+"package lists for the POSIX regex pattern given, see &regex;. It searches "
+"the package names and the descriptions for an occurrence of the regular "
+"expression and prints out the package name and the short description, "
+"including virtual package names. If <option>--full</option> is given then "
+"output identical to <literal>show</literal> is produced for each matched "
+"package, and if <option>--names-only</option> is given then the long "
+"description is not searched, only the package name and provided packages are."
+msgstr ""
+"<literal>search</literal> executa uma busca de texto completo em todas as "
+"listas de pacotes disponíveis para o padrão POSIX regex fornecido, veja "
+"&regex;. Procura nos nomes de pacotes e nas descrições por uma ocorrência da "
+"expressão regular e escreve o nome do pacote e a descrição curta, incluindo "
+"nomes de pacotes virtuais. Se for fornecido <option>--full</option> então "
+"são produzidos resultados idênticos ao <literal>show</literal> para cada "
+"pacote correspondente, e se for fornecido <option>--names-only</option> "
+"então não há procura na descrição longa, apenas no nome do pacote."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Separate arguments can be used to specify multiple search patterns that are "
+"and'ed together."
+msgstr ""
+"Podem ser usados argumentos separados para especificar múltiplos padrões de "
+"busca os quais são lidados em conjunto."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>depends</literal> shows a listing of each dependency a package has "
+"and all the possible other packages that can fulfill that dependency."
+msgstr ""
+"<literal>depends</literal> mostra uma listagem de cada dependência que um "
+"pacote tem e todos os outros pacotes possíveis que podem satisfazer essa "
+"dependência."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>rdepends</literal> shows a listing of each reverse dependency a "
+"package has."
+msgstr ""
+"<literal>rdepends</literal> mostra uma listagem de cada dependência reversa "
+"que um pacote tem."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml
+msgid "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+msgstr "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"This command prints the name of each package APT knows. The optional "
+"argument is a prefix match to filter the name list. The output is suitable "
+"for use in a shell tab complete function and the output is generated "
+"extremely quickly. This command is best used with the <option>--generate</"
+"option> option."
+msgstr ""
+"Este comando escreve o nome de cada pacote que o APT conhece. O argumento "
+"opcional é um prefixo de correspondência para filtrar a lista de nomes. O "
+"resultado é apropriado para usar numa função completa de consola e o "
+"resultado é gerado com extrema rapidez. Este comando fica melhor usado com a "
+"opção <option>--generate</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Note that a package which APT knows of is not necessarily available to "
+"download, installable or installed, e.g. virtual packages are also listed in "
+"the generated list."
+msgstr ""
+"Note que um pacote que o APT conheça não está necessariamente disponível "
+"para download, instalável ou instalado, por exemplo, os pacotes virtuais "
+"também são listados na lista gerada."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dotty</literal> takes a list of packages on the command line and "
+"generates output suitable for use by dotty from the <ulink url=\"http://www."
+"research.att.com/sw/tools/graphviz/\">GraphViz</ulink> package. The result "
+"will be a set of nodes and edges representing the relationships between the "
+"packages. By default the given packages will trace out all dependent "
+"packages; this can produce a very large graph. To limit the output to only "
+"the packages listed on the command line, set the <literal>APT::Cache::"
+"GivenOnly</literal> option."
+msgstr ""
+"<literal>dotty</literal> recebe uma lista de pacotes na linha de comandos e "
+"gera resultados apropriados para uso pelo dotty do pacote <ulink url="
+"\"http://www.research.att.com/sw/tools/graphviz/\">GraphViz</ulink>. O "
+"resultado será um conjunto de nós e orlas que representam os relacionamentos "
+"entre os pacotes. Por predefinição, os pacotes fornecidos irão seguir todos "
+"os pacotes dependentes; isto pode produzir um gráfico muito grande. Para "
+"limitar os resultados apenas aos pacotes listados na linha de comandos, "
+"defina a opção <literal>APT::Cache::GivenOnly</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"The resulting nodes will have several shapes; normal packages are boxes, "
+"pure virtual packages are triangles, mixed virtual packages are diamonds, "
+"missing packages are hexagons. Orange boxes mean recursion was stopped (leaf "
+"packages), blue lines are pre-depends, green lines are conflicts."
+msgstr ""
+"Os nós resultantes irão ter várias formas; pacotes normais são caixas, "
+"pacotes virtuais puros são triângulos, pacotes virtuais de mistura são "
+"diamantes, pacotes desaparecidos são hexágonos. Caixas cor de laranja "
+"significam que a recursão parou (pacotes leaf), linhas azuis são pré-"
+"dependências, linhas verdes são conflitos."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid "Caution, dotty cannot graph larger sets of packages."
+msgstr ""
+"Atenção, o dotty não consegue fazer gráficos com grandes conjuntos de "
+"pacotes."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"The same as <literal>dotty</literal>, only for xvcg from the <ulink url="
+"\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</ulink>."
+msgstr ""
+"O mesmo que <literal>dotty</literal>, apenas para xvcg a partir de <ulink "
+"url=\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">Ferramenta "
+"VCG</ulink>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml
+msgid "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+msgstr "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>policy</literal> is meant to help debug issues relating to the "
+"preferences file. With no arguments it will print out the priorities of each "
+"source. Otherwise it prints out detailed information about the priority "
+"selection of the named package."
+msgstr ""
+"<literal>policy</literal> destina-se a ajudar a depurar problemas "
+"relacionados com o ficheiro de preferências. Sem argumentos irá escrever as "
+"propriedades de cada fonte. Caso contrário escreve informação detalhada "
+"acerca da selecção de prioridade do pacote nomeado."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>apt-cache</literal>'s <literal>madison</literal> command attempts "
+"to mimic the output format and a subset of the functionality of the Debian "
+"archive management tool, <literal>madison</literal>. It displays available "
+"versions of a package in a tabular format. Unlike the original "
+"<literal>madison</literal>, it can only display information for the "
+"architecture for which APT has retrieved package lists (<literal>APT::"
+"Architecture</literal>)."
+msgstr ""
+"O comando <literal>madison</literal> do <literal>apt-cache</literal> tenta "
+"imitar o formato de saída e um subconjunto das funcionalidades da ferramenta "
+"<literal>madison</literal> de gestão de pacotes da Debian. Mostra versões "
+"disponíveis de um pacote num formato tabular. Ao contrário do "
+"<literal>madison</literal> original, apenas pode mostrar informação para a "
+"arquitectura que o APT recolheu listas de pacotes (<literal>APT::"
+"Architecture</literal>)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Select the file to store the package cache. The package cache is the primary "
+"cache used by all operations. Configuration Item: <literal>Dir::Cache::"
+"pkgcache</literal>."
+msgstr ""
+"Selecciona o ficheiro para armazenar a cache do pacote. A cache do pacote é "
+"a cache principal usada por todas as operações. Item de Configuração: "
+"<literal>Dir::Cache::pkgcache</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Select the file to store the source cache. The source is used only by "
+"<literal>gencaches</literal> and it stores a parsed version of the package "
+"information from remote sources. When building the package cache the source "
+"cache is used to avoid reparsing all of the package files. Configuration "
+"Item: <literal>Dir::Cache::srcpkgcache</literal>."
+msgstr ""
+"Selecciona o ficheiro para armazenar a cache de fonte. A fonte é usada "
+"apenas pelo <literal>gencaches</literal> e armazena uma versão analisada da "
+"informação do pacote a partir de fontes remotas. Ao construir a cache de "
+"pacote é usada a cache fonte para evitar reanalisar todos os ficheiros do "
+"pacote. Item de Configuração: <literal>Dir::Cache::srcpkgcache</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quietness up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quietness level, overriding the "
+"configuration file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+"Quiet; produz resultados apropriados para registar em logs, omitindo os "
+"indicadores de progresso. Mais q's irão produzir mais serenidade até um "
+"máximo de 2. Você também pode usar <option>-q=#</option> para definir o "
+"nível de serenidade, sobrepondo o ficheiro de configuração. Item de "
+"Configuração: <literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print only important dependencies; for use with <literal>unmet</literal> and "
+"<literal>depends</literal>. Causes only Depends and Pre-Depends relations to "
+"be printed. Configuration Item: <literal>APT::Cache::Important</literal>."
+msgstr ""
+"Escreve apenas dependências importantes; para usar com <literal>unmet</"
+"literal> e <literal>depends</literal>. Separa apenas relações de Depends e "
+"Pre-Depends para serem escritas. Item de Configuração: <literal>APT::Cache::"
+"Important</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "Per default the <literal>depends</literal> and <literal>rdepends</"
+#| "literal> print all dependencies. This can be tweaked with these flags "
+#| "which will omit the specified dependency type. Configuration Item: "
+#| "<literal>APT::Cache::Show<replaceable>DependencyType</replaceable></"
+#| "literal> e.g. <literal>APT::Cache::ShowRecommends</literal>."
+msgid ""
+"Per default the <command>depends</command> and <command>rdepends</command> "
+"print all dependencies. This can be tweaked with these flags which will omit "
+"the specified dependency type. Configuration Item: <literal>APT::Cache::"
+"Show<replaceable>DependencyType</replaceable></literal> e.g. <literal>APT::"
+"Cache::ShowRecommends</literal>."
+msgstr ""
+"Por predefinição o <literal>depends</literal> e <literal>rdepends</literal> "
+"escrevem todas as dependências. Isto pode ser \"afinado\" com estas "
+"bandeiras que irão omitir o tipo de dependência especificado. Item de "
+"Configuração: <literal>APT::Cache::Show<replaceable>DependencyType</"
+"replaceable></literal> ex. <literal>APT::Cache::ShowRecommends</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Per default <command>depends</command> and <command>rdepends</command> print "
+"only dependencies explicitly expressed in the metadata. With this flag it "
+"will also show dependencies implicitly added based on the encountered data. "
+"A <literal>Conflicts: foo</literal> e.g. expresses implicitly that this "
+"package also conflicts with the package foo from any other architecture. "
+"Configuration Item: <literal>APT::Cache::ShowImplicit</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print full package records when searching. Configuration Item: "
+"<literal>APT::Cache::ShowFull</literal>."
+msgstr ""
+"Escreve registos de pacote completos quando procura. Item de Configuração: "
+"<literal>APT::Cache::ShowFull</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print full records for all available versions. This is the default; to turn "
+"it off, use <option>--no-all-versions</option>. If <option>--no-all-"
+"versions</option> is specified, only the candidate version will be displayed "
+"(the one which would be selected for installation). This option is only "
+"applicable to the <literal>show</literal> command. Configuration Item: "
+"<literal>APT::Cache::AllVersions</literal>."
+msgstr ""
+"Escreve registos completos para todas as versões disponíveis. Isto é a "
+"predefinição; para a desligar, use <option>--no-all-versions</option>. Se "
+"<option>--no-all-versions</option> for especificada, apenas a versão "
+"candidata será mostrada (aquela que seria seleccionada para instalação). "
+"Esta opção é aplicável apenas ao comando <literal>show</literal>. Item de "
+"Configuração: <literal>APT::Cache::AllVersions</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Perform automatic package cache regeneration, rather than use the cache as "
+"it is. This is the default; to turn it off, use <option>--no-generate</"
+"option>. Configuration Item: <literal>APT::Cache::Generate</literal>."
+msgstr ""
+"Executa regeneração automática da cache de pacote, em vez de usar a cache "
+"como está. Isto é a predefinição; para a desligar, use <option>--no-"
+"generate</option>. Item de Configuração: <literal>APT::Cache::Generate</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "Only search on the package names, not the long descriptions. "
+#| "Configuration Item: <literal>APT::Cache::NamesOnly</literal>."
+msgid ""
+"Only search on the package and provided package names, not the long "
+"descriptions. Configuration Item: <literal>APT::Cache::NamesOnly</literal>."
+msgstr ""
+"Apenas procura nos nomes dos pacotes, e não nas descrições longas. Item de "
+"Configuração: <literal>APT::Cache::NamesOnly</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Make <literal>pkgnames</literal> print all names, including virtual packages "
+"and missing dependencies. Configuration Item: <literal>APT::Cache::"
+"AllNames</literal>."
+msgstr ""
+"Faz com que o <literal>pkgnames</literal> escreva todos os nomes, incluindo "
+"pacotes virtuais e dependências em falta. Item de configuração: "
+"<literal>APT::Cache::AllNames</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Make <literal>depends</literal> and <literal>rdepends</literal> recursive so "
+"that all packages mentioned are printed once. Configuration Item: "
+"<literal>APT::Cache::RecurseDepends</literal>."
+msgstr ""
+"Torna <literal>depends</literal> e <literal>rdepends</literal> recursivo "
+"para que todos os pacotes mencionados sejam escritos uma vez. Item de "
+"Configuração <literal>APT::Cache::RecurseDepends</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Limit the output of <literal>depends</literal> and <literal>rdepends</"
+"literal> to packages which are currently installed. Configuration Item: "
+"<literal>APT::Cache::Installed</literal>."
+msgstr ""
+"Limita a saída de <literal>depends</literal> e <literal>rdepends</literal> "
+"aos pacotes que estão actualmente instalados. Item de Configuração: "
+"<literal>APT::Cache::Installed</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. Supported are currently <literal>*.deb</literal>, "
+"<literal>*.dsc</literal>, <literal>*.changes</literal>, <literal>Sources</"
+"literal> and <literal>Packages</literal> files as well as source package "
+"directories. Files are matched based on their name only, not their content!"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Sources</literal> and <literal>Packages</literal> can be compressed "
+"in any format apt supports as long as they have the correct extension. If "
+"you need to store multiple of these files in one directory you can prefix a "
+"name of your choice with the last character being an underscore "
+"(\"<literal>_</literal>\"). Example: my.example_Packages.xz"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+#, fuzzy
+#| msgid ""
+#| "Use source index field ordering. Configuration Item: <literal>APT::"
+#| "SortPkgs::Source</literal>."
+msgid ""
+"Note that these sources are treated as trusted (see &apt-secure;). "
+"Configuration Item: <literal>APT::Sources::With</literal>."
+msgstr ""
+"Usa ordenação de campo de índice Source. Item de Configuração: <literal>APT::"
+"SortPkgs::Source</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid "&apt-conf;, &sources-list;, &apt-get;"
+msgstr "&apt-conf;, &sources-list;, &apt-get;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid ""
+"<command>apt-cache</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-cache</command> devolve zero em operação normal, 100 decimal em "
+"erro."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-key.8.xml
+msgid "APT key management utility"
+msgstr "Utilitário de gestão de chaves do APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"<command>apt-key</command> is used to manage the list of keys used by apt to "
+"authenticate packages. Packages which have been authenticated using these "
+"keys will be considered trusted."
+msgstr ""
+"<command>apt-key</command> é usado para gerir uma lista de chaves usadas "
+"pelo apt para autenticar pacotes. Os pacotes que foram autenticados com "
+"estas chaves serão considerados de confiança."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Note that if usage of <command>apt-key</command> is desired the additional "
+"installation of the GNU Privacy Guard suite (packaged in <package>gnupg</"
+"package>) is required. For this reason alone the programmatic usage "
+"(especially in package maintainerscripts!) is strongly discouraged. Further "
+"more the output format of all commands is undefined and can and does change "
+"whenever the underlying commands change. <command>apt-key</command> will try "
+"to detect such usage and generates warnings on stderr in these cases."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml
+msgid "Supported keyring files"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
+"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
+"the keybox database format introduced in newer &gpg; versions as default for "
+"keyring files. Binary keyring files intended to be used with any apt version "
+"should therefore always be created with <command>gpg --export</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Alternatively, if all systems which should be using the created keyring have "
+"at least apt version >= 1.4 installed, you can use the ASCII armored format "
+"with the \"<literal>asc</literal>\" extension instead which can be created "
+"with <command>gpg --armor --export</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml
+msgid "Commands"
+msgstr "Comandos"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Add a new key to the list of trusted keys. The key is read from the "
+"filename given with the parameter &synopsis-param-filename; or if the "
+"filename is <literal>-</literal> from standard input."
+msgstr ""
+"Adiciona uma chave nova à lista de chaves de confiança. A chave é lida a "
+"partir do nome de ficheiro dado com o parâmetro &synopsis-param-filename; ou "
+"se o nome do ficheiro for <literal>-</literal> a partir da entrada standard."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"It is critical that keys added manually via <command>apt-key</command> are "
+"verified to belong to the owner of the repositories they claim to be for "
+"otherwise the &apt-secure; infrastructure is completely undermined."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
+"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
+"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
+"\"<literal>asc</literal>\" as file extension."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Remove a key from the list of trusted keys."
+msgstr "Remove uma chave da lista de chaves de confiança."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Output the key &synopsis-param-keyid; to standard output."
+msgstr "Escreve o &synopsis-param-keyid; da chave na saída standard."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Output all trusted keys to standard output."
+msgstr "Escreve todas as chaves de confiança na saída standard."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+#, fuzzy
+#| msgid "List trusted keys."
+msgid "List trusted keys with fingerprints."
+msgstr "Lista as chaves de confiança."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
+"e.g. download key from keyservers directly into the trusted set of keys. "
+"Note that there are <emphasis>no</emphasis> checks performed, so it is easy "
+"to completely undermine the &apt-secure; infrastructure if used without care."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-key.8.xml
+msgid "(deprecated)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Update the local keyring with the archive keyring and remove from the local "
+"keyring the archive keys which are no longer valid. The archive keyring is "
+"shipped in the <literal>archive-keyring</literal> package of your "
+"distribution, e.g. the &keyring-package; package in &keyring-distro;."
+msgstr ""
+"Actualiza o chaveiro local com o chaveiro do arquivo e remove do chaveiro "
+"local as chaves de arquivo que já não são válidas. O chaveiro do arquivo é "
+"submetido no pacote <literal>archive-keyring</literal> da sua distribuição, "
+"por exemplo o pacote &keyring-package; em &keyring-distro;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Note that a distribution does not need to and in fact should not use this "
+"command any longer and instead ship keyring files in the <filename>/etc/apt/"
+"trusted.gpg.d/</filename> directory directly as this avoids a dependency on "
+"<package>gnupg</package> and it is easier to manage keys by simply adding "
+"and removing files for maintainers and users alike."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Perform an update working similarly to the <command>update</command> command "
+"above, but get the archive keyring from a URI instead and validate it "
+"against a master key. This requires an installed &wget; and an APT build "
+"configured to have a server to fetch from and a master keyring to validate. "
+"APT in Debian does not support this command, relying on <command>update</"
+"command> instead, but Ubuntu's APT does."
+msgstr ""
+"Executa uma actualização que funciona de modo semelhante ao comando "
+"<command>update</command> em cima, mas obtém o chaveiro do arquivo a partir "
+"de um URI e valida-o com uma chave mestra. Isto requer um &wget; instalado e "
+"uma compilação de APT configurada para ter um servidor de onde obter e um "
+"chaveiro mestre para validação. O APT em Debian não suporta este comando, "
+"confiando em vez disso no <command>update</command>, mas o APT do Ubuntu fá-"
+"lo."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml
+msgid "Options"
+msgstr "Opções"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Note that options need to be defined before the commands described in the "
+"previous section."
+msgstr ""
+"Note que as opções precisam ser definidas antes dos comandos descritos na "
+"secção prévia."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"With this option it is possible to specify a particular keyring file the "
+"command should operate on. The default is that a command is executed on the "
+"<filename>trusted.gpg</filename> file as well as on all parts in the "
+"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</"
+"filename> is the primary keyring which means that e.g. new keys are added to "
+"this one."
+msgstr ""
+"Com esta opção é possível especificar um ficheiro de chaveiro específico com "
+"o qual o comando deve operar. A predefinição é que um comando é executado no "
+"ficheiro <filename>trusted.gpg</filename> assim como em todas as partes do "
+"directório <filename>trusted.gpg.d</filename>, assim <filename>trusted.gpg</"
+"filename> é o chaveiro principal o que significa que, por exemplo, as novas "
+"chaves são adicionadas a este."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid "&apt-get;, &apt-secure;"
+msgstr "&apt-get;, &apt-secure;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-mark.8.xml
+msgid "show, set and unset various settings for a package"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"<command>apt-mark</command> can be used as a unified front-end to set "
+"various settings for a package, such as marking a package as being "
+"automatically/manually installed or changing <command>dpkg</command> "
+"selections such as hold, install, deinstall and purge which are respected e."
+"g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
+"command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Automatically and Manually Installed Packages"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+#, fuzzy
+#| msgid ""
+#| "When you request that a package is installed, and as a result other "
+#| "packages are installed to satisfy its dependencies, the dependencies are "
+#| "marked as being automatically installed. Once these automatically "
+#| "installed packages are no longer depended on by any manually installed "
+#| "packages, they will be removed by e.g. <command>apt-get</command> or "
+#| "<command>aptitude</command>."
+msgid ""
+"When you request that a package is installed, and as a result other packages "
+"are installed to satisfy its dependencies, the dependencies are marked as "
+"being automatically installed, while the package you installed explicitly is "
+"marked as manually installed. Once an automatically installed package is no "
+"longer depended on by any manually installed package it is considered no "
+"longer needed and e.g. <command>apt-get</command> or <command>aptitude</"
+"command> will at least suggest removing them."
+msgstr ""
+"Quando você pede que um pacote seja instalado, e como resultado outros "
+"pacotes são instalados para satisfazer as suas dependências, as dependências "
+"são marcadas como sendo instaladas automaticamente. Uma vez que estes "
+"pacotes instalados automaticamente não sejam mais necessários por nenhum "
+"pacote instalado manualmente, eles serão removidos pelo <command>apt-get</"
+"command> ou <command>aptitude</command> (exemplos)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>auto</literal> is used to mark a package as being automatically "
+"installed, which will cause the package to be removed when no more manually "
+"installed packages depend on this package."
+msgstr ""
+"<literal>auto</literal> é usado para marcar um pacote como sendo instalado "
+"automaticamente, o que irá causar a remoção do pacote quando mais nenhum "
+"pacote instalado manualmente depender deste pacote."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>manual</literal> is used to mark a package as being manually "
+"installed, which will prevent the package from being automatically removed "
+"if no other packages depend on it."
+msgstr ""
+"<literal>manual</literal> é usado para marcar um pacote como sendo instalado "
+"manualmente, o que irá prevenir que o pacote seja removido automaticamente "
+"se nenhum outro pacote depender dele."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showauto</literal> is used to print a list of automatically "
+"installed packages with each package on a new line. All automatically "
+"installed packages will be listed if no package is given. If packages are "
+"given only those which are automatically installed will be shown."
+msgstr ""
+"<literal>showauto</literal> é usado para escrever uma lista dos pacotes "
+"instalados automaticamente com cada pacote numa linha nova. Serão listados "
+"todos os pacotes instalados automaticamente se não for dado um pacote. Se "
+"forem dados pacotes então só serão mostrados aqueles que foram instalados "
+"automaticamente."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showmanual</literal> can be used in the same way as "
+"<literal>showauto</literal> except that it will print a list of manually "
+"installed packages instead."
+msgstr ""
+"<literal>showmanual</literal> pode ser usado do mesmo modo que o "
+"<literal>showauto</literal>, excepto que irá escrever uma lista dos pacotes "
+"instalados manualmente."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"Read/Write package stats from the filename given with the parameter "
+"&synopsis-param-filename; instead of from the default location, which is "
+"<filename>extended_status</filename> in the directory defined by the "
+"Configuration Item: <literal>Dir::State</literal>."
+msgstr ""
+"Lê/Escreve o estado de pacote a partir do nome de ficheiro dado com o "
+"parâmetro &synopsis-param-filename; em vez de o fazer a partir da "
+"localização predefinida, a qual é <filename>extended_status</filename> no "
+"directório definido pelo Item de Configuração: <literal>Dir::State</literal>."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Prevent Changes for a Package"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>manual</literal> is used to mark a package as being manually "
+#| "installed, which will prevent the package from being automatically "
+#| "removed if no other packages depend on it."
+msgid ""
+"<literal>hold</literal> is used to mark a package as held back, which will "
+"prevent the package from being automatically installed, upgraded or removed."
+msgstr ""
+"<literal>manual</literal> é usado para marcar um pacote como sendo instalado "
+"manualmente, o que irá prevenir que o pacote seja removido automaticamente "
+"se nenhum outro pacote depender dele."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>unhold</literal> is used to cancel a previously set hold on a "
+"package to allow all actions again."
+msgstr ""
+"<literal>unhold</literal> é usado para cancelar um \"hold\" previamente "
+"definido num pacote para permitir de novo todas as acções."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showhold</literal> is used to print a list of packages on hold in "
+"the same way as for the other show commands."
+msgstr ""
+"<literal>showhold</literal> é usado para escrever uma lista dos pacotes em "
+"retenção do mesmo modo que os outros comandos show."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Schedule Packages for Install, Remove and Purge"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"Some front-ends like <command>apt-get dselect-upgrade</command> can be used "
+"to apply previously scheduled changes to the install state of packages. Such "
+"changes can be scheduled with the <option>install</option>, <option>remove</"
+"option> (also known as <option>deinstall</option>) and <option>purge</"
+"option> commands. Packages with a specific selection can be displayed with "
+"<option>showinstall</option>, <option>showremove</option> and "
+"<option>showpurge</option> respectively. More information about these so "
+"called dpkg selections can be found in &dpkg;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"<command>apt-mark</command> returns zero on normal operation, non-zero on "
+"error."
+msgstr ""
+"<command>apt-mark</command> devolve zero na operação normal, 100 decimal em "
+"erro."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-secure.8.xml
+msgid "Archive authentication support for APT"
+msgstr "Suporte de autenticação de arquivos para o APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "Starting with version 0.6, <command>apt</command> contains code that does "
+#| "signature checking of the Release file for all archives. This ensures "
+#| "that packages in the archive can't be modified by people who have no "
+#| "access to the Release file signing key."
+msgid ""
+"Starting with version 0.6, <command>APT</command> contains code that does "
+"signature checking of the Release file for all repositories. This ensures "
+"that data like packages in the archive can't be modified by people who have "
+"no access to the Release file signing key. Starting with version 1.1 "
+"<command>APT</command> requires repositories to provide recent "
+"authentication information for unimpeded usage of the repository."
+msgstr ""
+"A partir da versão 0.6, o <command>apt</command> contém código que faz "
+"verificação de assinaturas do ficheiro Release para todos os arquivos. Isto "
+"assegura que os pacotes no arquivo não podem ser modificados por pessoas que "
+"não têm acesso à chave de assinatura do ficheiro Release."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"If an archive has an unsigned Release file or no Release file at all current "
+"APT versions will refuse to download data from them by default in "
+"<command>update</command> operations and even if forced to download front-"
+"ends like &apt-get; will require explicit confirmation if an installation "
+"request includes a package from such an unauthenticated archive."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"As a temporary exception &apt-get; (not &apt;!) raises warnings only if it "
+"encounters unauthenticated archives to give a slightly longer grace period "
+"on this backward compatibility effecting change. This exception will be "
+"removed in future releases and you can opt-out of this grace period by "
+"setting the configuration option <option>Binary::apt-get::Acquire::"
+"AllowInsecureRepositories</option> to <literal>false</literal> or <option>--"
+"no-allow-insecure-repositories</option> on the command line."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"You can force all APT clients to raise only warnings by setting the "
+"configuration option <option>Acquire::AllowInsecureRepositories</option> to "
+"<literal>true</literal>. Individual repositories can also be allowed to be "
+"insecure via the &sources-list; option <literal>allow-insecure=yes</"
+"literal>. Note that insecure repositories are strongly discouraged and all "
+"options to force apt to continue supporting them will eventually be "
+"removed. Users also have the <option>Trusted</option> option available to "
+"disable even the warnings, but be sure to understand the implications as "
+"detailed in &sources-list;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"A repository which previously was authenticated but would loose this state "
+"in an <command>update</command> operation raises an error in all APT clients "
+"irrespective of the option to allow or forbid usage of insecure "
+"repositories. The error can be overcome by additionally setting "
+"<option>Acquire::AllowDowngradeToInsecureRepositories</option> to "
+"<literal>true</literal> or for Individual repositories with the &sources-"
+"list; option <literal>allow-downgrade-to-insecure=yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "The package front-ends &apt-get;, &aptitude; and &synaptic; support this "
+#| "new authentication feature."
+msgid ""
+"Note: All APT-based package management front-ends like &apt-get;, &aptitude; "
+"and &synaptic; support this authentication feature, so this manpage uses "
+"<literal>APT</literal> to refer to them all for simplicity only."
+msgstr ""
+"Os front-ends de pacotes &apt-get;, &aptitude; e &synaptic; suportam esta "
+"nova funcionalidade de autenticação."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid "Trusted archives"
+msgid "Trusted Repositories"
+msgstr "Arquivos de confiança"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "The chain of trust from an apt archive to the end user is made up of "
+#| "several steps. <command>apt-secure</command> is the last step in this "
+#| "chain; trusting an archive does not mean that you trust its packages not "
+#| "to contain malicious code, but means that you trust the archive "
+#| "maintainer. It's the archive maintainer's responsibility to ensure that "
+#| "the archive's integrity is preserved."
+msgid ""
+"The chain of trust from an APT archive to the end user is made up of several "
+"steps. <command>apt-secure</command> is the last step in this chain; "
+"trusting an archive does not mean that you trust its packages not to contain "
+"malicious code, but means that you trust the archive maintainer. It's the "
+"archive maintainer's responsibility to ensure that the archive's integrity "
+"is preserved."
+msgstr ""
+"A corrente de confiança desde um arquivo apt até ao utilizador final é feita "
+"em diferentes passos. O <command>apt-secure</command> é o último passo nesta "
+"corrente, confiar num arquivo não quer dizer que os pacotes em que confia "
+"não possam conter código malicioso, mas que dizer que você confia no "
+"responsável do arquivo. É da responsabilidade do responsável do arquivo "
+"assegurar que a integridade do arquivo está correcta."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"apt-secure does not review signatures at a package level. If you require "
+"tools to do this you should look at <command>debsig-verify</command> and "
+"<command>debsign</command> (provided in the debsig-verify and devscripts "
+"packages respectively)."
+msgstr ""
+"O apt-secure não revê as assinaturas ao nível do pacote. Se você necessita "
+"de ferramentas que o façam deve procurar pelo <command>debsig-verify</"
+"command> e <command>debsign</command> (disponibilizados nos pacotes debsig-"
+"verify e devscripts respectivamente)."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "The chain of trust in Debian starts when a maintainer uploads a new "
+#| "package or a new version of a package to the Debian archive. In order to "
+#| "become effective, this upload needs to be signed by a key contained in "
+#| "the Debian Maintainers keyring (available in the debian-keyring package). "
+#| "Maintainers' keys are signed by other maintainers following pre-"
+#| "established procedures to ensure the identity of the key holder."
+msgid ""
+"The chain of trust in Debian starts (e.g.) when a maintainer uploads a new "
+"package or a new version of a package to the Debian archive. In order to "
+"become effective, this upload needs to be signed by a key contained in one "
+"of the Debian package maintainer keyrings (available in the debian-keyring "
+"package). Maintainers' keys are signed by other maintainers following pre-"
+"established procedures to ensure the identity of the key holder. Similar "
+"procedures exist in all Debian-based distributions."
+msgstr ""
+"A corrente de confiança em Debian começa quando o responsável faz o upload "
+"de um novo pacote ou de uma nova versão de um pacote para o arquivo Debian. "
+"De modo a se tornar efectivo, este upload precisa de ser assinado por uma "
+"chave de um responsável dentro do chaveiro de responsáveis da Debian "
+"(disponível no pacote debian-keyring). As chaves dos responsáveis são "
+"assinadas por outros responsáveis seguindo procedimentos pré-estabelecidos "
+"para assegurar a identidade do dono da chave."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Once the uploaded package is verified and included in the archive, the "
+"maintainer signature is stripped off, and checksums of the package are "
+"computed and put in the Packages file. The checksums of all of the Packages "
+"files are then computed and put into the Release file. The Release file is "
+"then signed by the archive key for this &keyring-distro; release, and "
+"distributed alongside the packages and the Packages files on &keyring-"
+"distro; mirrors. The keys are in the &keyring-distro; archive keyring "
+"available in the &keyring-package; package."
+msgstr ""
+"Assim que o pacote submetido é verificado e incluído no arquivo, a "
+"assinatura do responsável é despojada, são computados sumários de "
+"verificação do pacote e colocado no ficheiro Packages. Os sumários de "
+"verificação de todos os ficheiros Packages são então computados e colocados "
+"no ficheiro Release. O ficheiro Release é então assinado pela chave de "
+"arquivo para este lançamento de &keyring-distro;, e distribuído juntamente "
+"com os pacotes e os ficheiros Packages em mirrors de &keyring-distro;. As "
+"chaves estão no chaveiro do arquivo &keyring-distro; no pacote &keyring-"
+"package;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"End users can check the signature of the Release file, extract a checksum of "
+"a package from it and compare it with the checksum of the package they "
+"downloaded by hand - or rely on APT doing this automatically."
+msgstr ""
+"Os utilizadores finais podem verificar a assinatura do ficheiro Release, "
+"extrair um sumario de verificação de um pacote a partir dele e compará-lo "
+"com o sumario de verificação do pacote que descarregaram manualmente - ou "
+"confiar no APT que faz isto automaticamente."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Notice that this is distinct from checking signatures on a per package "
+"basis. It is designed to prevent two possible attacks:"
+msgstr ""
+"Note que isto é diferente de verificar assinaturas por cada pacote. É "
+"desenhado para prevenir dois ataques possíveis:"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<literal>Network \"man in the middle\" attacks</literal>. Without signature "
+"checking, malicious agents can introduce themselves into the package "
+"download process and provide malicious software either by controlling a "
+"network element (router, switch, etc.) or by redirecting traffic to a rogue "
+"server (through ARP or DNS spoofing attacks)."
+msgstr ""
+"<literal>Ataques de rede \"man in the middle\"</literal>. Sem verificação de "
+"assinatura, um agente malicioso pode introduzir-se ele próprio no processo "
+"de descarga de pacotes e disponibilizar software malicioso seja ao controlar "
+"um elemento de rede (router, switch, etc.) ou ao redireccionar tráfego para "
+"um servidor impostor (através de ataques de fraude de ARP ou DNS)."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<literal>Mirror network compromise</literal>. Without signature checking, a "
+"malicious agent can compromise a mirror host and modify the files in it to "
+"propagate malicious software to all users downloading packages from that "
+"host."
+msgstr ""
+"<literal>Mirror network compromise</literal>. Sem verificação de assinatura, "
+"um agente malicioso pode comprometer uma máquina mirror e modificar os "
+"ficheiros dele para propagar software malicioso a todos os utilizadores que "
+"descarregam pacotes a partir dessa máquina."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "However, it does not defend against a compromise of the Debian master "
+#| "server itself (which signs the packages) or against a compromise of the "
+#| "key used to sign the Release files. In any case, this mechanism can "
+#| "complement a per-package signature."
+msgid ""
+"However, it does not defend against a compromise of the master server itself "
+"(which signs the packages) or against a compromise of the key used to sign "
+"the Release files. In any case, this mechanism can complement a per-package "
+"signature."
+msgstr ""
+"No entanto, isto não defende contra um compromisso do próprio servidor "
+"mestre da Debian (o qual assina os pacotes) ou contra um compromisso da "
+"chave usada para assinar os ficheiros Release. Em qualquer caso, este "
+"mecanismo pode complementar uma assinatura por-pacote."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "User Configuration"
+msgstr "Configuração do utilizador"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "<command>apt-key</command> is the program that manages the list of keys "
+#| "used by apt. It can be used to add or remove keys, although an "
+#| "installation of this release will automatically contain the default "
+#| "Debian archive signing keys used in the Debian package repositories."
+msgid ""
+"<command>apt-key</command> is the program that manages the list of keys used "
+"by APT to trust repositories. It can be used to add or remove keys as well "
+"as list the trusted keys. Limiting which key(s) are able to sign which "
+"archive is possible via the <option>Signed-By</option> in &sources-list;."
+msgstr ""
+"<command>apt-key</command> é o programa que gere a lista de chaves usada "
+"pelo apt. Pode ser usado para adicionar ou remover chaves apesar de uma "
+"instalação deste lançamento ir automaticamente disponibilizar as chaves de "
+"assinaturas predefinidas de arquivo Debian usadas nos repositórios de "
+"pacotes Debian."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so fiddling with "
+"<command>apt-key</command> is only needed if third-party repositories are "
+"added."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"In order to add a new key you need to first download it (you should make "
+"sure you are using a trusted communication channel when retrieving it), add "
+"it with <command>apt-key</command> and then run <command>apt-get update</"
+"command> so that apt can download and verify the <filename>InRelease</"
+"filename> or <filename>Release.gpg</filename> files from the archives you "
+"have configured."
+msgstr ""
+"De modo a adicionar uma chave nova você precisa primeiro de descarregá-la "
+"(você deve certificar-se que está a usar um canal de comunicação de "
+"confiança quando a obtém), adicioná-la com <command>apt-key</command> e "
+"depois correr <command>apt-get update</command> para que o apt possa "
+"descarregar e verificar os ficheiros <filename>InRelease</filename> ou "
+"<filename>Release.gpg</filename> dos arquivos que você configurou."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Archive Configuration"
+msgstr "Configuração de arquivos"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"If you want to provide archive signatures in an archive under your "
+"maintenance you have to:"
+msgstr ""
+"Se você deseja fornecer assinaturas de arquivo a um arquivo sob sua "
+"manutenção, você tem que:"
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Create a toplevel Release file</emphasis>, if it does not exist "
+"already. You can do this by running <command>apt-ftparchive release</"
+"command> (provided in apt-utils)."
+msgstr ""
+"<emphasis>Criar um ficheiro Release de nível de topo</emphasis>, se este já "
+"não existir. Você pode fazer isto ao correr <command>apt-ftparchive release</"
+"command> (disponibilizado no apt-utils)."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --"
+"clearsign -o InRelease Release</command> and <command>gpg -abs -o Release."
+"gpg Release</command>."
+msgstr ""
+"<emphasis>Assiná-lo</emphasis>. Você pode fazer isso ao correr <command>gpg "
+"--clearsign -o InRelease Release</command> e <command>gpg -abs -o Release."
+"gpg Release</command>."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+#, fuzzy
+#| msgid ""
+#| "<emphasis>Publish the key fingerprint</emphasis>, that way your users "
+#| "will know what key they need to import in order to authenticate the files "
+#| "in the archive."
+msgid ""
+"<emphasis>Publish the key fingerprint</emphasis>, so that your users will "
+"know what key they need to import in order to authenticate the files in the "
+"archive. It is best to ship your key in its own keyring package like "
+"&keyring-distro; does with &keyring-package; to be able to distribute "
+"updates and key transitions automatically later."
+msgstr ""
+"<emphasis>Publicar a impressão digital da chave</emphasis>, deste modo os "
+"seus utilizadores irão saber que chave precisam de importar de modo a "
+"autenticar os ficheiros no arquivo."
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Provide instructions on how to add your archive and key</"
+"emphasis>. If your users can't acquire your key securely the chain of trust "
+"described above is broken. How you can help users add your key depends on "
+"your archive and target audience ranging from having your keyring package "
+"included in another archive users already have configured (like the default "
+"repositories of their distribution) to leveraging the web of trust."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Whenever the contents of the archive change (new packages are added or "
+"removed) the archive maintainer has to follow the first two steps outlined "
+"above."
+msgstr ""
+"Sempre que o conteúdo do arquivo mude (são adicionados novos pacotes ou "
+"removidos), o responsável do arquivo tem que seguir os primeiros dois passos "
+"previamente delineados."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+"&debsign;, &debsig-verify;, &gpg;"
+msgstr ""
+"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+"&debsign;, &debsig-verify;, &gpg;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"For more background information you might want to review the <ulink url="
+"\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
+"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
+"available in the harden-doc package) and the <ulink url=\"http://www."
+"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
+"ulink> by V. Alex Brennen."
+msgstr ""
+"Para mais informação de fundo você deve querer reler a <ulink url=\"https://"
+"www.debian.org/doc/manuals/securing-debian-howto/ch7\">Infraestrutura de "
+"Segurança da Debian</ulink> no capítulo do Manual Debian de Segurança "
+"(disponível também no pacote harden-doc) e o <ulink url=\"http://www."
+"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
+"ulink> de V. Alex Brennen."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Manpage Authors"
+msgstr "Autores do manual"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"This man-page is based on the work of Javier Fernández-Sanguino Peña, Isaac "
+"Jones, Colin Walters, Florian Weimer and Michael Vogt."
+msgstr ""
+"Este manual é baseado no trabalho de Javier Fernández-Sanguino Peña, Isaac "
+"Jones, Colin Walters, Florian Weimer e Michael Vogt."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cdrom.8.xml
+msgid "APT CD-ROM management utility"
+msgstr "Utilitário de gestão de CD-ROM do APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<command>apt-cdrom</command> is used to add a new CD-ROM to APT's list of "
+"available sources. <command>apt-cdrom</command> takes care of determining "
+"the structure of the disc as well as correcting for several possible mis-"
+"burns and verifying the index files."
+msgstr ""
+"O <command>apt-cdrom</command> é usado para adicionar um novo CD-ROM à lista "
+"de fontes disponíveis do APT. O <command>apt-cdrom</command> encarrega-se de "
+"determinar a estrutura do disco assim como corrigir várias falhas possíveis "
+"e verificar os ficheiros de índice."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"It is necessary to use <command>apt-cdrom</command> to add CDs to the APT "
+"system; it cannot be done by hand. Furthermore each disc in a multi-CD set "
+"must be inserted and scanned separately to account for possible mis-burns."
+msgstr ""
+"É necessário usar o <command>apt-cdrom</command> para adicionar CDs ao "
+"sistema APT, não pode ser feito manualmente. Mais, cada disco de um conjunto "
+"de vários discos tem que ser inserido e sondado separadamente para ter em "
+"conta possíveis falhas."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<literal>add</literal> is used to add a new disc to the source list. It will "
+"unmount the CD-ROM device, prompt for a disc to be inserted and then proceed "
+"to scan it and copy the index files. If the disc does not have a proper "
+"<filename>.disk</filename> directory you will be prompted for a descriptive "
+"title."
+msgstr ""
+"<literal>add</literal> é usado para adicionar um novo disco à lista de "
+"fontes. Irá desmontar o dispositivo CD-ROM, pedir que seja inserido um disco "
+"e depois prosseguir com a sua sondagem e cópia dos ficheiros índice. Se o "
+"disco não possuir um directório <filename>.disk</filename> apropriado, ser-"
+"lhe-à pedido um título descritivo."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"APT uses a CD-ROM ID to track which disc is currently in the drive and "
+"maintains a database of these IDs in <filename>&statedir;/cdroms.list</"
+"filename>"
+msgstr ""
+"O APT usa um ID de CD-ROM para acompanhar qual disco está actualmente na "
+"drive e mantêm uma base de dados desses IDs em <filename>&statedir;/cdroms."
+"list</filename>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"A debugging tool to report the identity of the current disc as well as the "
+"stored file name"
+msgstr ""
+"Uma ferramenta de depuração para reportar a identificação do disco actual "
+"assim como o nome de ficheiro armazenado"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Do not try to auto-detect the CD-ROM path. Usually combined with the "
+"<option>--cdrom</option> option. Configuration Item: <literal>Acquire::"
+"cdrom::AutoDetect</literal>."
+msgstr ""
+"Não tente a auto-detecção do caminho do CD-ROM. Normalmente combinada com a "
+"opção <option>--cdrom</option>. Item de Configuração: <literal>Acquire::"
+"cdrom::AutoDetect</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Mount point; specify the location to mount the CD-ROM. This mount point must "
+"be listed in <filename>/etc/fstab</filename> and properly configured. "
+"Configuration Item: <literal>Acquire::cdrom::mount</literal>."
+msgstr ""
+"Ponto de Montagem; especifica a localização para montar o cdrom. Este ponto "
+"de montagem deve estar listado em <filename>/etc/fstab</filename> e "
+"configurado apropriadamente. Item de configuração: <literal>Acquire::cdrom::"
+"mount</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Rename a disc; change the label of a disc or override the disc's given "
+"label. This option will cause <command>apt-cdrom</command> to prompt for a "
+"new label. Configuration Item: <literal>APT::CDROM::Rename</literal>."
+msgstr ""
+"Renomear um disco; muda a etiqueta de um disco ou sobrepõe a etiqueta "
+"fornecida do disco. Esta opção irá fazer com que o <command>apt-cdrom</"
+"command> pergunte por uma nova etiqueta. Item de configuração: <literal>APT::"
+"CDROM::Rename</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"No mounting; prevent <command>apt-cdrom</command> from mounting and "
+"unmounting the mount point. Configuration Item: <literal>APT::CDROM::"
+"NoMount</literal>."
+msgstr ""
+"Nenhuma montagem; impede o <command>apt-cdrom</command> de montar e "
+"desmontar o ponto de montagem. Item de configuração: <literal>APT::CDROM::"
+"NoMount</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Fast Copy; Assume the package files are valid and do not check every "
+"package. This option should be used only if <command>apt-cdrom</command> has "
+"been run on this disc before and did not detect any errors. Configuration "
+"Item: <literal>APT::CDROM::Fast</literal>."
+msgstr ""
+"Copia rápida; Assume que os ficheiros do pacote são válidos e não verifica "
+"cada pacote. Este opção só deve ser usada se o <command>apt-cdrom</command> "
+"já foi corrido com este disco e não detectou nenhum erro. Item de "
+"configuração: <literal>APT::CDROM::Fast</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Thorough Package Scan; This option may be needed with some old Debian "
+"1.1/1.2 discs that have Package files in strange places. It takes much "
+"longer to scan the CD but will pick them all up."
+msgstr ""
+"Sondagem de pacote exaustiva; Esta opção pode ser necessária com alguns "
+"discos Debian antigos 1.1/1.2 que têm ficheiros de pacotes em lugares "
+"estranhos. Demora muito mais tempo a sondar o CD mas irá apanhá-los a todos."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"No Changes; Do not change the &sources-list; file and do not write index "
+"files. Everything is still checked however. Configuration Item: "
+"<literal>APT::CDROM::NoAct</literal>."
+msgstr ""
+"Nenhuma alteração; Não altera o ficheiro &sources-list; e não escreve "
+"ficheiros índice. No entanto, tudo continua a ser verificado. Item de "
+"configuração: <literal>APT::CDROM::NoAct</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid "&apt-conf;, &apt-get;, &sources-list;"
+msgstr "&apt-conf;, &apt-get;, &sources-list;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<command>apt-cdrom</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-cdrom</command> devolve zero em operação normal, 100 decimal em "
+"erro."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-config.8.xml
+msgid "APT Configuration Query program"
+msgstr "Programa de Consulta de Configuração do APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml
+msgid ""
+"<command>apt-config</command> is an internal program used by various "
+"portions of the APT suite to provide consistent configurability. It accesses "
+"the main configuration file <filename>/etc/apt/apt.conf</filename> in a "
+"manner that is easy to use for scripted applications."
+msgstr ""
+"<command>apt-config</command> é um programa interno usado por várias partes "
+"da suite APT para fornecer uma configurabilidade consistente. Acede ao "
+"ficheiro de configuração principal <filename>/etc/apt/apt.conf</filename> de "
+"um modo que é fácil de usar para aplicações em script."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"shell is used to access the configuration information from a shell script. "
+"It is given pairs of arguments, the first being a shell variable and the "
+"second the configuration value to query. As output it lists shell assignment "
+"commands for each value present. In a shell script it should be used as "
+"follows:"
+msgstr ""
+"shell é usado para aceder à informação de configuração a partir de um script "
+"shell. É fornecido pares de argumentos, sendo o primeiro uma variável de "
+"shell e o segundo o valor de configuração a consultar. Como resultado cria "
+"uma lista de comandos atribuídos a shell para cada valor presente. Num "
+"script shell deverá ser usado como se segue:"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-config.8.xml
+#, no-wrap
+msgid ""
+"OPTS=\"-f\"\n"
+"RES=`apt-config shell OPTS MyApp::options`\n"
+"eval $RES\n"
+msgstr ""
+"OPTS=\"-f\"\n"
+"RES=`apt-config shell OPTS MyApp::options`\n"
+"eval $RES\n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"This will set the shell environment variable $OPTS to the value of MyApp::"
+"options with a default of <option>-f</option>."
+msgstr ""
+"Isto irá definir a variável de ambiente shell $OPTS ao valor de MyApp::"
+"options com uma predefinição de <option>-f</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"The configuration item may be postfixed with a /[fdbi]. f returns file "
+"names, d returns directories, b returns true or false and i returns an "
+"integer. Each of the returns is normalized and verified internally."
+msgstr ""
+"O item de configuração pode ser pós-fixado com um /[fdbi]. f devolve nomes "
+"de ficheiros, d devolve directórios, b devolve verdadeiro ou falso e i "
+"devolve um número inteiro. Cada um dos valores devolvidos é normalizado e "
+"verificado internamente."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid "Just show the contents of the configuration space."
+msgstr "Apenas mostra o conteúdo do espaço de configuração."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"Include options which have an empty value. This is the default, so use --no-"
+"empty to remove them from the output."
+msgstr ""
+"Inclui opções que têm um valor vazio. Isto é a predefinição, então use --no-"
+"empty para removê-las dos resultados."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-config.8.xml
+msgid "&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n"
+msgstr "&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"Defines the output of each config option. &percnt;t will be replaced with "
+"its individual name, &percnt;f with its full hierarchical name and &percnt;v "
+"with its value. Use uppercase letters and special characters in the value "
+"will be encoded to ensure that it can e.g. be safely used in a quoted-string "
+"as defined by RFC822. Additionally &percnt;n will be replaced by a newline, "
+"and &percnt;N by a tab. A &percnt; can be printed by using &percnt;&percnt;."
+msgstr ""
+"Define a saída de cada opção de configuração. &percnt;t irá ser substituído "
+"com o seu nome individual, &percnt;f com o seu nome hierárquico e &percnt;v "
+"com o seu valor. O uso de letras maiúsculas e caracteres especiais no valor "
+"será codificado para assegurar que pode, por exemplo, ser usado em segurança "
+"numa string citada como definido por RFC822. Adicionalmente &percnt;n será "
+"substituído por uma nova linha, e &percnt;N por um separador. Um &percnt; "
+"pode ser escrito ao usar &percnt;&percnt;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml
+msgid "&apt-conf;"
+msgstr "&apt-conf;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml
+msgid ""
+"<command>apt-config</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+"<command>apt-config</command> devolve zero em operação normal, 100 decimal "
+"em erro."
+
+#. type: Content of: <refentry><refentryinfo><author><contrib>
+#: apt.conf.5.xml
+msgid "Initial documentation of Debug::*."
+msgstr "Documentação inicial do Debug::*."
+
+#. type: Content of: <refentry><refentryinfo><author><email>
+#: apt.conf.5.xml
+msgid "dburrows@debian.org"
+msgstr "dburrows@debian.org"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml
+msgid "5"
+msgstr "5"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.conf.5.xml
+msgid "Configuration file for APT"
+msgstr "Ficheiro de configuração para o APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<filename>/etc/apt/apt.conf</filename> is the main configuration file shared "
+"by all the tools in the APT suite of tools, though it is by no means the "
+"only place options can be set. The suite also shares a common command line "
+"parser to provide a uniform environment."
+msgstr ""
+"<filename>/etc/apt/apt.conf</filename> é o ficheiro de configuração "
+"principal partilhado por todas as ferramentas na suite de ferramentas do "
+"APT, no entanto não é de maneira nenhuma o único local onde se pode definir "
+"opções. A suite também partilha um analisador comum de linha de comandos "
+"para disponibilizar um ambiente uniforme."
+
+#. type: Content of: <refentry><refsect1><orderedlist><para>
+#: apt.conf.5.xml
+msgid ""
+"When an APT tool starts up it will read the configuration files in the "
+"following order:"
+msgstr ""
+"Quando a ferramenta APT arranca irá ler os ficheiros de configuração pela "
+"seguinte ordem:"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the file specified by the <envar>APT_CONFIG</envar> environment variable (if "
+"any)"
+msgstr ""
+"o ficheiro especificado pela variável de ambiente <envar>APT_CONFIG</envar> "
+"(se existir)"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending "
+"order which have either no or \"<literal>conf</literal>\" as filename "
+"extension and which only contain alphanumeric, hyphen (-), underscore (_) "
+"and period (.) characters. Otherwise APT will print a notice that it has "
+"ignored a file, unless that file matches a pattern in the <literal>Dir::"
+"Ignore-Files-Silently</literal> configuration list - in which case it will "
+"be silently ignored."
+msgstr ""
+"todos os ficheiros em <literal>Dir::Etc::Parts</literal> em ordem ascendente "
+"alfa-numérica não têm extensão ou têm \"<literal>conf</literal>\" como "
+"extensão do nome de ficheiro e que apenas contêm caracteres alfa-numéricos, "
+"traços (-), underscores (_) e pontos (.). Caso contrário o APT irá escrever "
+"um aviso de que ignorou um ficheiro, a menos que o ficheiro corresponda a um "
+"padrão na lista de configuração de <literal>Dir::Ignore-Files-Silently</"
+"literal> - que então nesse caso será ignorado em silêncio."
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the main configuration file specified by <literal>Dir::Etc::main</literal>"
+msgstr ""
+"o ficheiro de configuração principal especificado por <literal>Dir::Etc::"
+"main</literal>"
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"all options set in the binary specific configuration subtree are moved into "
+"the root of the tree."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the command line options are applied to override the configuration "
+"directives or to load even more configuration files."
+msgstr ""
+"as opções de linha de comandos são aplicadas para sobrepor as directivas de "
+"configuração ou para carregar mais ficheiros de configuração."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Syntax"
+msgstr "Sintaxe"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The configuration file is organized in a tree with options organized into "
+"functional groups. Option specification is given with a double colon "
+"notation; for instance <literal>APT::Get::Assume-Yes</literal> is an option "
+"within the APT tool group, for the Get tool. Options do not inherit from "
+"their parent groups."
+msgstr ""
+"O ficheiro de configuração é organizado numa árvore com as opções "
+"organizadas em grupos de funcionamento. A especificação das opções é dada "
+"com um sinal de dois pontos duplo , por exemplo <literal>APT::Get::Assume-"
+"Yes</literal> é uma opção dentro do grupo de ferramentas do APT, para a "
+"ferramenta Get. A opções não herdam dos seus grupos parentes."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Syntactically the configuration language is modeled after what the ISC tools "
+"such as bind and dhcp use. Lines starting with <literal>//</literal> are "
+"treated as comments (ignored), as well as all text between <literal>/*</"
+"literal> and <literal>*/</literal>, just like C/C++ comments. Each line is "
+"of the form <literal>APT::Get::Assume-Yes \"true\";</literal>. The "
+"quotation marks and trailing semicolon are required. The value must be on "
+"one line, and there is no kind of string concatenation. Values must not "
+"include backslashes or extra quotation marks. Option names are made up of "
+"alphanumeric characters and the characters \"/-:._+\". A new scope can be "
+"opened with curly braces, like this:"
+msgstr ""
+"Sintácticamente a linguagem de configuração é modelada após o que as "
+"ferramentas ISC usam, como o bind e o dhcp. As linhas que começam com "
+"<literal>//</literal> são tratadas como comentários (ignoradas), assim como "
+"todo o texto entre <literal>/*</literal> e <literal>*/</literal>, tal como "
+"os comentários de C/C++. Cada linha é do formato <literal>APT::Get::Assume-"
+"Yes \"true\";</literal>. As aspas e o ponto-e-vírgula final são necessários. "
+"O valor deve estar em uma linha, e não existe nenhum tipo de concatenação de "
+"string. Os valores não podem incluir barras invertidas ou aspas extras. Os "
+"nomes das opções são feitos de caracteres alfa-numéricos e os caracteres "
+"\"/-:._+\". Um novo scope pode ser aberto com chavetas, assim:"
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT {\n"
+" Get {\n"
+" Assume-Yes \"true\";\n"
+" Fix-Broken \"true\";\n"
+" };\n"
+"};\n"
+msgstr ""
+"APT {\n"
+" Get {\n"
+" Assume-Yes \"true\";\n"
+" Fix-Broken \"true\";\n"
+" };\n"
+"};\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"with newlines placed to make it more readable. Lists can be created by "
+"opening a scope and including a single string enclosed in quotes followed by "
+"a semicolon. Multiple entries can be included, separated by a semicolon."
+msgstr ""
+"com novas linhas colocadas para o tornar mais legível. As listas podem ser "
+"criadas ao abrir um scope e incluindo uma string única entre aspas seguida "
+"por um ponto e vírgula. Podem ser incluídas múltiplas entradas, separadas "
+"por um ponto e vírgula (;)."
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "DPkg::Pre-Install-Pkgs {\"/usr/sbin/dpkg-preconfigure --apt\";};\n"
+msgstr "DPkg::Pre-Install-Pkgs {\"/usr/sbin/dpkg-preconfigure --apt\";};\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"In general the sample configuration file &configureindex; is a good guide "
+"for how it should look."
+msgstr ""
+"Em geral o exemplo de ficheiro de configuração &configureindex; é um bom "
+"guia de como deve ficar."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Case is not significant in names of configuration items, so in the previous "
+"example you could use <literal>dpkg::pre-install-pkgs</literal>."
+msgstr ""
+"Maiúsculas e minúsculas não são significativas nos nomes dos items de "
+"configuração, portanto no exemplo prévio você poderia usar <literal>dpkg::"
+"pre-install-pkgs</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Names for the configuration items are optional if a list is defined as can "
+"be seen in the <literal>DPkg::Pre-Install-Pkgs</literal> example above. If "
+"you don't specify a name a new entry will simply add a new option to the "
+"list. If you specify a name you can override the option in the same way as "
+"any other option by reassigning a new value to the option."
+msgstr ""
+"Os nomes dos items de configuração são opcionais se uma lista for definida "
+"com pode ser vista no exemplo <literal>DPkg::Pre-Install-Pkgs</literal> "
+"acima. Se você não especificar um nome, uma nova entrada irá simplesmente "
+"adicionar uma nova opção à lista. Se você especificar um nome, você pode "
+"sobrepor a opção como qualquer outra opção ao re-atribuir um novo valor à "
+"opção."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Two special commands are defined: <literal>#include</literal> (which is "
+"deprecated and not supported by alternative implementations) and "
+"<literal>#clear</literal>. <literal>#include</literal> will include the "
+"given file, unless the filename ends in a slash, in which case the whole "
+"directory is included. <literal>#clear</literal> is used to erase a part of "
+"the configuration tree. The specified element and all its descendants are "
+"erased. (Note that these lines also need to end with a semicolon.)"
+msgstr ""
+"Estão definidos dois comandos especiais, <literal>#include</literal> (a qual "
+"está obsoleto e não é suportado por implementações alternativas) e "
+"<literal>#clear</literal>: <literal>#include</literal> irá incluir o "
+"ficheiro fornecido, a menos que o nome do ficheiro termine numa barra (/), "
+"que no caso todo o directório é incluído. <literal>#clear</literal> é usado "
+"para apagar uma parte da árvore de configuração. O elemento especificado e "
+"os seus descendentes são apagados. (Note que estas linhas também precisam de "
+"acabar com um 'ponto e vírgula' (;) .)"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>#clear</literal> command is the only way to delete a list or a "
+"complete scope. Reopening a scope (or using the syntax described below with "
+"an appended <literal>::</literal>) will <emphasis>not</emphasis> override "
+"previously written entries. Options can only be overridden by addressing a "
+"new value to them - lists and scopes can't be overridden, only cleared."
+msgstr ""
+"O comando <literal>#clear</literal> é a única maneira de apagar uma lista ou "
+"um scope completo. Reabrindo um scope (ou usando a sintaxe descrita em baixo "
+"com um <literal>::</literal> acrescentado) <emphasis>não</emphasis> irá "
+"sobrepor entradas escritas anteriormente. As opções podem apenas ser "
+"sobrepostas ao atribuir um novo valor a elas - listas e scopes não podem ser "
+"sobrepostos, apenas limpos."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"All of the APT tools take an -o option which allows an arbitrary "
+"configuration directive to be specified on the command line. The syntax is a "
+"full option name (<literal>APT::Get::Assume-Yes</literal> for instance) "
+"followed by an equals sign then the new value of the option. To append a new "
+"element to a list, add a trailing <literal>::</literal> to the name of the "
+"list. (As you might suspect, the scope syntax can't be used on the command "
+"line.)"
+msgstr ""
+"Todas as ferramentas do APT recebem uma opção -o que permite uma directiva "
+"de configuração arbitrária para ser especificada na linha de comandos. A "
+"sintaxe é um nome de opção completo (<literal>APT::Get::Assume-Yes</literal> "
+"por exemplo) seguido por um igual (=) e depois o valor da opção. Para "
+"acrescentar um novo elemento a uma lista, adicione um <literal>::</literal> "
+"ao final do nome da lista. (Como deve suspeitar, a sintaxe de scope não pode "
+"ser usada na linha de comandos.)"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that appending items to a list using <literal>::</literal> only works "
+"for one item per line, and that you should not use it in combination with "
+"the scope syntax (which adds <literal>::</literal> implicitly). Using both "
+"syntaxes together will trigger a bug which some users unfortunately depend "
+"on: an option with the unusual name \"<literal>::</literal>\" which acts "
+"like every other option with a name. This introduces many problems; for one "
+"thing, users who write multiple lines in this <emphasis>wrong</emphasis> "
+"syntax in the hope of appending to a list will achieve the opposite, as only "
+"the last assignment for this option \"<literal>::</literal>\" will be used. "
+"Future versions of APT will raise errors and stop working if they encounter "
+"this misuse, so please correct such statements now while APT doesn't "
+"explicitly complain about them."
+msgstr ""
+"Note que acrescentar itens a uma lista usando <literal>::</literal> só "
+"funciona para um item por linha, e que não o deverá usar em combinação com a "
+"sintaxe scope (a qual adiciona <literal>::</literal> implicitamente). Usar "
+"ambas as sintaxes juntamente irá disparar um bug de que infelizmente alguns "
+"utilizadores dependem: uma opção com o nome pouco usual \"<literal>::</"
+"literal>\" o qual actua como qualquer outra opção com um nome. Isto introduz "
+"muitos problemas: por um lado, os utilizadores que escrevem múltiplas linhas "
+"nesta sintaxe <emphasis>errada</emphasis> na esperança de acrescentarem numa "
+"lista irão obter o oposto, pois apenas será usada a última atribuição para "
+"esta opção \"<literal>::</literal>\". Versões futuras do APT irão dar erros "
+"e parar de funcionar se encontrarem esta má utilização, portanto, por favor, "
+"corrija tais declarações agora enquanto o APT ainda não se queixa "
+"explicitamente delas."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "The APT Group"
+msgstr "O Grupo APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"This group of options controls general APT behavior as well as holding the "
+"options for all of the tools."
+msgstr ""
+"Este grupo de opções controla o comportamento geral do APT assim como mantém "
+"as opções para todas as ferramentas."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"System Architecture; sets the architecture to use when fetching files and "
+"parsing package lists. The internal default is the architecture apt was "
+"compiled for."
+msgstr ""
+"System Architecture; define a arquitectura a usar quando procura ficheiros e "
+"analisa listas de pacotes. A predefinição interna é a arquitectura para a "
+"qual o APT foi compilado."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"All Architectures the system supports. For instance, CPUs implementing the "
+"<literal>amd64</literal> (also called <literal>x86-64</literal>) "
+"instruction set are also able to execute binaries compiled for the "
+"<literal>i386</literal> (<literal>x86</literal>) instruction set. This list "
+"is used when fetching files and parsing package lists. The initial default "
+"is always the system's native architecture (<literal>APT::Architecture</"
+"literal>), and foreign architectures are added to the default list when they "
+"are registered via <command>dpkg --add-architecture</command>."
+msgstr ""
+"Todas as arquitecturas que o sistema suporta. Por exemplo, CPUs que "
+"implementam o conjunto de instruções <literal>amd64</literal> (também "
+"chamada <literal>x86-64</literal>) são também capazes de executar binários "
+"compilados para o conjunto de instruções <literal>i386</literal> "
+"(<literal>x86</literal>). Esta lista é usada quando se busca ficheiros e "
+"analisa listas de pacotes. A predefinição inicial é sempre a arquitectura "
+"nativa do sistema (<literal>APT::Architecture</literal>), e as arquitecturas "
+"alienígenas são adicionadas à lista predefinida quando são registadas via "
+"<command>dpkg --add-architecture</command>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines which compression formats are supported, how compression "
+"and decompression can be performed if support for this format isn't built "
+"into apt directly and a cost-value indicating how costly it is to compress "
+"something in this format. As an example the following configuration stanza "
+"would allow apt to download and uncompress as well as create and store files "
+"with the low-cost <literal>.reversed</literal> file extension which it will "
+"pass to the command <command>rev</command> without additional commandline "
+"parameters for compression and uncompression:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Compressor::rev {\n"
+"\tName \"rev\";\n"
+"\tExtension \".reversed\";\n"
+"\tBinary \"rev\";\n"
+"\tCompressArg {};\n"
+"\tUncompressArg {};\n"
+"\tCost \"10\";\n"
+"};\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"List of all build profiles enabled for build-dependency resolution, without "
+"the \"<literal>profile.</literal>\" namespace prefix. By default this list "
+"is empty. The <envar>DEB_BUILD_PROFILES</envar> as used by &dpkg-"
+"buildpackage; overrides the list notation."
+msgstr ""
+"Lista todos os perfis de compilação activos para resolução de dependências "
+"de compilação, sem o prefixo \"<literal>profile.</literal>\" no espaço do "
+"nome. Por predefinição esta lista está vazia. O <envar>DEB_BUILD_PROFILES</"
+"envar> usado pelo &dpkg-buildpackage; sobrepõe a notação da lista."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Default release to install packages from if more than one version is "
+"available. Contains release name, codename or release version. Examples: "
+"'stable', 'testing', 'unstable', '&debian-stable-codename;', '&debian-"
+"testing-codename;', '4.0', '5.0*'. See also &apt-preferences;."
+msgstr ""
+"Lançamento predefinido de onde instalar pacotes se existir mais de uma "
+"versão disponível. Contém o nome do lançamento, nome de código ou versão de "
+"lançamento. Exemplos: 'stable', 'testing', 'unstable', '&debian-stable-"
+"codename;', '&debian-testing-codename;', '4.0', '5.0*'. Veja também &apt-"
+"preferences;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Ignore held packages; this global option causes the problem resolver to "
+"ignore held packages in its decision making."
+msgstr ""
+"Ignore Held packages; Esta opção global faz com que ao resolver problemas, "
+"os pacotes segurados sejam ignorados na sua decisão de marcação."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Defaults to on. When turned on the autoclean feature will remove any "
+"packages which can no longer be downloaded from the cache. If turned off "
+"then packages that are locally installed are also excluded from cleaning - "
+"but note that APT provides no direct means to reinstall them."
+msgstr ""
+"A predefinição é ligada. Quando ligada, a funcionalidade autoclean irá "
+"remover quaisquer pacotes que já não possam ser descarregados a partir da "
+"cache. Se desligada, então os pacotes que estão instalados localmente são "
+"também excluídos da limpeza - mas note que o APT não disponibiliza um meio "
+"directo de os reinstalar."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Defaults to on, which will cause APT to install essential and important "
+"packages as soon as possible in an install/upgrade operation, in order to "
+"limit the effect of a failing &dpkg; call. If this option is disabled, APT "
+"treats an important package in the same way as an extra package: between the "
+"unpacking of the package A and its configuration there can be many other "
+"unpack or configuration calls for other unrelated packages B, C etc. If "
+"these cause the &dpkg; call to fail (e.g. because package B's maintainer "
+"scripts generate an error), this results in a system state in which package "
+"A is unpacked but unconfigured - so any package depending on A is now no "
+"longer guaranteed to work, as its dependency on A is no longer satisfied."
+msgstr ""
+"A predefinição é ligada, o que irá fazer com que o APT instale pacotes "
+"essenciais e importantes assim que possível numa operação de instalação/"
+"actualização, de modo a limitar o efeito de uma chamada ao &dpkg; falhada. "
+"Se esta opção for desactivada, o APT trata um pacote importante do mesmo "
+"modo que um pacote extra: entre o desempacotamento do pacote A e a sua "
+"configuração podem existir muitas outras chamadas de desempacotamento ou "
+"configuração para outros pacotes B, C, etc não relacionados. Se eles "
+"causarem a falha da chamada do &dpkg; (ex. porque os scripts do maintainer "
+"do pacote B geram um erro), isto resulta num estado do sistema em que o "
+"pacote A fica desempacotado mas não configurado - então não fica garantido o "
+"funcionamento de qualquer pacote que dependa de A, porque a sua dependência "
+"de A não está mais satisfeita."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The immediate configuration marker is also applied in the potentially "
+"problematic case of circular dependencies, since a dependency with the "
+"immediate flag is equivalent to a Pre-Dependency. In theory this allows APT "
+"to recognise a situation in which it is unable to perform immediate "
+"configuration, abort, and suggest to the user that the option should be "
+"temporarily deactivated in order to allow the operation to proceed. Note "
+"the use of the word \"theory\" here; in the real world this problem has "
+"rarely been encountered, in non-stable distribution versions, and was caused "
+"by wrong dependencies of the package in question or by a system in an "
+"already broken state; so you should not blindly disable this option, as the "
+"scenario mentioned above is not the only problem it can help to prevent in "
+"the first place."
+msgstr ""
+"O marcador de configuração imediata também é aplicado no caso potencialmente "
+"problemático de dependências circulares, pois uma dependência com a bandeira "
+"de imediato é equivalente a uma Pré-Dependência. Em teoria isto permite ao "
+"APT reconhecer uma situação na qual está incapaz de executar configuração "
+"imediata, abortar, e sugerir ao utilizador que a opção deverá ser "
+"desactivada temporariamente de modo a permitir que a operação prossiga. Note "
+"o uso da palavra \"teoria\" aqui; no mundo real este problema tem sido "
+"raramente encontrado, em versões não-estável da distribuição, e foram "
+"causados por dependências erradas do pacote em questão ou por um sistema já "
+"no estado corrompido; portanto você não deve desactivar esta opção às cegas. "
+"porque em primeiro lugar o cenário mencionado em cima não é o único problema "
+"que pode ajudar a prevenir."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Before a big operation like <literal>dist-upgrade</literal> is run with this "
+"option disabled you should try to explicitly <literal>install</literal> the "
+"package APT is unable to configure immediately; but please make sure you "
+"also report your problem to your distribution and to the APT team with the "
+"buglink below, so they can work on improving or correcting the upgrade "
+"process."
+msgstr ""
+"Antes de uma grande operação como <literal>dist-upgrade</literal> ser "
+"executada com esta opção desactivada você deve tentar explicitamente um "
+"<literal>install</literal> ao pacote que o APT não é capaz de configurar "
+"imediatamente; mas por favor certifique-se que também reporta o seu problema "
+"à sua distribuição e á equipa do APT com o link de bug em baixo, para que "
+"eles possa trabalhar em melhorar ou corrigir o processo de actualização."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Never enable this option unless you <emphasis>really</emphasis> know what "
+"you are doing. It permits APT to temporarily remove an essential package to "
+"break a Conflicts/Conflicts or Conflicts/Pre-Depends loop between two "
+"essential packages. <emphasis>Such a loop should never exist and is a grave "
+"bug</emphasis>. This option will work if the essential packages are not "
+"<command>tar</command>, <command>gzip</command>, <command>libc</command>, "
+"<command>dpkg</command>, <command>dash</command> or anything that those "
+"packages depend on."
+msgstr ""
+"Nunca active esta opção a menos que <emphasis>realmente</emphasis> saiba o "
+"que está a fazer. Ela permite que o APT remova temporariamente um pacote "
+"essencial para quebrar um ciclo infinito de Conflito/Conflito ou Conflito/"
+"Pré-Dependência entre dois pacotes essenciais. <emphasis>Tal ciclo nunca "
+"deveria existir e é um bug grave.</emphasis>. Esta opção irá funcionar se os "
+"pacotes essenciais não forem <command>tar</command>, <command>gzip</"
+"command>, <command>libc</command>, <command>dpkg</command>, <command>dash</"
+"command> ou nada de que esses pacotes dependam."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"APT uses since version 0.7.26 a resizable memory mapped cache file to store "
+"the available information. <literal>Cache-Start</literal> acts as a hint of "
+"the size the cache will grow to, and is therefore the amount of memory APT "
+"will request at startup. The default value is 20971520 bytes (~20 MB). Note "
+"that this amount of space needs to be available for APT; otherwise it will "
+"likely fail ungracefully, so for memory restricted devices this value should "
+"be lowered while on systems with a lot of configured sources it should be "
+"increased. <literal>Cache-Grow</literal> defines in bytes with the default "
+"of 1048576 (~1 MB) how much the cache size will be increased in the event "
+"the space defined by <literal>Cache-Start</literal> is not enough. This "
+"value will be applied again and again until either the cache is big enough "
+"to store all information or the size of the cache reaches the <literal>Cache-"
+"Limit</literal>. The default of <literal>Cache-Limit</literal> is 0 which "
+"stands for no limit. If <literal>Cache-Grow</literal> is set to 0 the "
+"automatic growth of the cache is disabled."
+msgstr ""
+"O APT usa desde a versão 0.7.26 um ficheiro de cache com mapa de memória de "
+"tamanho ajustável para armazenar a informação disponível. <literal>Cache-"
+"Start</literal> actua como uma dica do tamanho que a cache irá crescer, e é "
+"por isso a quantidade de memória que o APT irá requerer no arranque. O valor "
+"predefinido é 20971520 bytes (~20 MB). Note que esta quantidade de espaço "
+"precisa estar disponível para o APT; caso contrário ele irá com certeza "
+"falhar, portanto para dispositivos com pouca memória este valor deve ser "
+"diminuído enquanto que em sistemas com muitas fontes configuradas este deve "
+"ser aumentado. <literal>Cache-Grow</literal> define em bytes com a "
+"predefinição de 1048576 (~1 MB) em quanto o tamanho da Cache será aumentado "
+"no caso do espaço definido por <literal>Cache-Start</literal> não ser "
+"suficiente. Este valor será aplicado várias vezes até que a cache seja "
+"suficientemente grande para armazenar toda a informação ou que o tamanho da "
+"cache alcance o <literal>Cache-Limit</literal>. O valor predefinido de "
+"<literal>Cache-Limit</literal> é 0 o que significa nenhum limite. Se "
+"<literal>Cache-Grow</literal> for definido para 0, o crescimento automático "
+"da cache é desactivado."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Defines which packages are considered essential build dependencies."
+msgstr ""
+"Define quais pacotes são considerados dependências essenciais de compilação."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Get subsection controls the &apt-get; tool; please see its documentation "
+"for more information about the options here."
+msgstr ""
+"A subsecção Get controla a ferramenta &apt-get;, por favor veja a sua "
+"documentação para mais informação acerca das opções daqui."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Cache subsection controls the &apt-cache; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"A subsecção Cache controla a ferramenta &apt-cache;, por favor veja a sua "
+"documentação para mais informação acerca das opções daqui."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The CDROM subsection controls the &apt-cdrom; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+"A subsecção CDROM controla a ferramenta &apt-cdrom;, por favor veja a sua "
+"documentação para mais informação acerca das opções de aqui."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "The Acquire Group"
+msgstr "O Grupo Acquire"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Acquire</literal> group of options controls the download of "
+"packages as well as the various \"acquire methods\" responsible for the "
+"download itself (see also &sources-list;)."
+msgstr ""
+"O grupo de opções <literal>Acquire</literal> controla a descarga de pacotes "
+"assim como os vários \"métodos de obtenção\" responsáveis pela própria "
+"descarga (veja também &sources-list;)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Security related option defaulting to true, as giving a Release file's "
+#| "validation an expiration date prevents replay attacks over a long "
+#| "timescale, and can also for example help users to identify mirrors that "
+#| "are no longer updated - but the feature depends on the correctness of the "
+#| "clock on the user system. Archive maintainers are encouraged to create "
+#| "Release files with the <literal>Valid-Until</literal> header, but if they "
+#| "don't or a stricter value is desired the <literal>Max-ValidTime</literal> "
+#| "option below can be used."
+msgid ""
+"Security related option defaulting to true, as giving a Release file's "
+"validation an expiration date prevents replay attacks over a long timescale, "
+"and can also for example help users to identify mirrors that are no longer "
+"updated - but the feature depends on the correctness of the clock on the "
+"user system. Archive maintainers are encouraged to create Release files with "
+"the <literal>Valid-Until</literal> header, but if they don't or a stricter "
+"value is desired the <literal>Max-ValidTime</literal> option below can be "
+"used. The <option>Check-Valid-Until</option> option of &sources-list; "
+"entries should be preferred to disable the check selectively instead of "
+"using this global override."
+msgstr ""
+"Opção relacionada com segurança com predefinição a 'verdadeiro', como dar a "
+"um ficheiros Release uma data de expiração previne ataques repetidos durante "
+"longo tempo e pode, por exemplo, ajudar os utilizadores a identificar "
+"mirrors que não são actualizados à muito tempo - mas a funcionalidade "
+"depende da precisão de hora no sistema do utilizador. Os responsáveis do "
+"arquivo são encorajados a criar ficheiros Release com o cabeçalho "
+"<literal>Valid-Until</literal>, mas se não o fizerem ou se preferir-se um "
+"valor mais rigoroso pode-se usar a opção <literal>Max-ValidTime</literal> "
+"seguinte."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Maximum time (in seconds) after its creation (as indicated by the "
+#| "<literal>Date</literal> header) that the <filename>Release</filename> "
+#| "file should be considered valid. If the Release file itself includes a "
+#| "<literal>Valid-Until</literal> header the earlier date of the two is used "
+#| "as the expiration date. The default value is <literal>0</literal> which "
+#| "stands for \"valid forever\". Archive specific settings can be made by "
+#| "appending the label of the archive to the option name."
+msgid ""
+"Maximum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. If the Release file itself includes a "
+"<literal>Valid-Until</literal> header the earlier date of the two is used as "
+"the expiration date. The default value is <literal>0</literal> which stands "
+"for \"valid forever\". Archive specific settings can be made by appending "
+"the label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the <option>Valid-"
+"Until-Max</option> option there."
+msgstr ""
+"O tempo máximo (em segundos) após a sua criação (como indicado pelo "
+"cabeçalho <literal>Date</literal>) que o ficheiro <filename>Release</"
+"filename> deve ser considerado como válido. Se o próprio ficheiro Release "
+"incluir um cabeçalho <literal>Valid-Until</literal> é usada como data de "
+"expiração a data que expira mais cedo. O valor predefinido é <literal>0</"
+"literal> o que significa \"válido para sempre\". Podem ser criadas "
+"definições específicas de arquivo ao acrescentar a etiqueta do arquivo ao "
+"nome da opção."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Minimum time (in seconds) after its creation (as indicated by the "
+#| "<literal>Date</literal> header) that the <filename>Release</filename> "
+#| "file should be considered valid. Use this if you need to use a seldom "
+#| "updated (local) mirror of a more frequently updated archive with a "
+#| "<literal>Valid-Until</literal> header instead of completely disabling the "
+#| "expiration date checking. Archive specific settings can and should be "
+#| "used by appending the label of the archive to the option name."
+msgid ""
+"Minimum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. Use this if you need to use a seldom updated "
+"(local) mirror of a more frequently updated archive with a <literal>Valid-"
+"Until</literal> header instead of completely disabling the expiration date "
+"checking. Archive specific settings can and should be used by appending the "
+"label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the <option>Valid-"
+"Until-Min</option> option there."
+msgstr ""
+"O tempo mínimo (em segundos) após a sua criação (como indicado no cabeçalho "
+"<literal>Date</literal>) que o ficheiro <filename>Release</filename> deve "
+"ser considerado como válido. Utilize isto se você necessitar de usar um "
+"mirror raramente actualizado (local) de um arquivo actualizado mais "
+"frequentemente com um cabeçalho <literal>Valid-Until</literal> em vez de "
+"desactivar completamente a verificação de data de expiração. Podem e devem "
+"ser usadas definições especificas do arquivo ao acrescentar a etiqueta do "
+"arquivo ao nome da opção."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Try to download deltas called <literal>PDiffs</literal> for indexes (like "
+#| "<filename>Packages</filename> files) instead of downloading whole ones. "
+#| "True by default."
+msgid ""
+"Try to download deltas called <literal>PDiffs</literal> for indexes (like "
+"<filename>Packages</filename> files) instead of downloading whole ones. True "
+"by default. Preferably, this can be set for specific &sources-list; entries "
+"or index files by using the <option>PDiffs</option> option there."
+msgstr ""
+"Tenta descarregar deltas chamados <literal>PDiffs</literal> para índices "
+"(como os ficheiros <filename>Packages</filename>) em vez de os descarregar "
+"por inteiro. Verdadeiro por predefinição."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Two sub-options to limit the use of PDiffs are also available: "
+"<literal>FileLimit</literal> can be used to specify a maximum number of "
+"PDiff files should be downloaded to update a file. <literal>SizeLimit</"
+"literal> on the other hand is the maximum percentage of the size of all "
+"patches compared to the size of the targeted file. If one of these limits is "
+"exceeded the complete file is downloaded instead of the patches."
+msgstr ""
+"Estão também disponíveis duas sub-opções para limitar o uso de PDiffs: "
+"<literal>FileLimit</literal> pode ser usada para especificar um número "
+"máximo de ficheiros PDiff que devem ser descarregados para actualizar um "
+"ficheiro. Por outro lado <literal>SizeLimit</literal> é a percentagem máxima "
+"do tamanho de todas as patches comparadas com o tamanho do ficheiro de "
+"destino. Se um destes limites for excedido, é descarregado o ficheiro "
+"completo em vez das patches."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Try to download deltas called <literal>PDiffs</literal> for indexes (like "
+#| "<filename>Packages</filename> files) instead of downloading whole ones. "
+#| "True by default."
+msgid ""
+"Try to download indexes via an URI constructed from a hashsum of the "
+"expected file rather than downloaded via a well-known stable filename. True "
+"by default, but automatically disabled if the source indicates no support "
+"for it. Usage can be forced with the special value \"force\". Preferably, "
+"this can be set for specific &sources-list; entries or index files by using "
+"the <option>By-Hash</option> option there."
+msgstr ""
+"Tenta descarregar deltas chamados <literal>PDiffs</literal> para índices "
+"(como os ficheiros <filename>Packages</filename>) em vez de os descarregar "
+"por inteiro. Verdadeiro por predefinição."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</"
+"literal> or <literal>access</literal> which determines how APT parallelizes "
+"outgoing connections. <literal>host</literal> means that one connection per "
+"target host will be opened, <literal>access</literal> means that one "
+"connection per URI type will be opened."
+msgstr ""
+"Modo de fila; <literal>Queue-Mode</literal> pode ser um de <literal>host</"
+"literal> ou <literal>access</literal> que determina como o APT paraleliza "
+"ligações de saída. <literal>host</literal> significa que será aberta uma "
+"ligação por máquina destino, <literal>access</literal> significa que será "
+"aberta uma ligação por tipo de URI."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Number of retries to perform. If this is non-zero APT will retry failed "
+"files the given number of times."
+msgstr ""
+"Número de tentativas a executar. Se isto for diferente de zero o APT irá "
+"tentar, no número fornecido de vezes, obter ficheiros falhados."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Use symlinks for source archives. If set to true then source archives will "
+"be symlinked when possible instead of copying. True is the default."
+msgstr ""
+"Usa links simbólicos para arquivos fonte. Se definido para verdadeiro, então "
+"os arquivos fonte serão links simbólicos, quando possível, em vez de cópias. "
+"A predefinição é verdadeiro."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>http::Proxy</literal> sets the default proxy to use for HTTP URIs. "
+"It is in the standard form of <literal>http://[[user][:pass]@]host[:port]/</"
+"literal>. Per host proxies can also be specified by using the form "
+"<literal>http::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>http_proxy</envar> environment variable will "
+"be used."
+msgstr ""
+"<literal>http::Proxy</literal> define o proxy http predefinido a usar para "
+"URIs de HTTP. Está no formato standard de <literal>http://[[user][:"
+"pass]@]host[:port]/</literal>. Também podem ser especificados proxies por "
+"máquina ao usar o formato <literal>http::Proxy::&lt;host&gt;</literal> com a "
+"palavra chave especial <literal>DIRECT</literal> que significa não usar "
+"proxies. Se nenhuma das definições acima for especificada, será usada a "
+"variável de ambiente <envar>http_proxy</envar>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Three settings are provided for cache control with HTTP/1.1 compliant proxy "
+"caches. <literal>No-Cache</literal> tells the proxy not to use its cached "
+"response under any circumstances. <literal>Max-Age</literal> sets the "
+"allowed maximum age (in seconds) of an index file in the cache of the "
+"proxy. <literal>No-Store</literal> specifies that the proxy should not "
+"store the requested archive files in its cache, which can be used to prevent "
+"the proxy from polluting its cache with (big) .deb files."
+msgstr ""
+"São disponibilizadas três definições para controle de cache como caches de "
+"proxy compatíveis com HTTP/1.1. <literal>No-Cache</literal> diz ao proxy "
+"para não usar a sua resposta em cache sob nenhumas circunstâncias, "
+"<literal>Max-Age</literal> define a idade máxima permitida (em segundos) de "
+"um ficheiro índice na cache do proxy. <literal>No-Store</literal> especifica "
+"que o proxy não deve armazenar os ficheiros de arquivo pedidos na sua cache, "
+"o que pode ser usado para prevenir que o proxy polua a sua cache com "
+"(grandes) ficheiros .deb."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The option <literal>timeout</literal> sets the timeout timer used by the "
+"method; this value applies to the connection as well as the data timeout."
+msgstr ""
+"A opção <literal>timeout</literal> define o tempo limite usado por este "
+"método, este valor aplica-se à ligação assim como os tempos de limite de "
+"dados."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used "
+#| "to enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be "
+#| "beneficial e.g. on high-latency connections. It specifies how many "
+#| "requests are sent in a pipeline. Previous APT versions had a default of "
+#| "10 for this setting, but the default value is now 0 (= disabled) to avoid "
+#| "problems with the ever-growing amount of webservers and proxies which "
+#| "choose to not conform to the HTTP/1.1 specification."
+msgid ""
+"The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e."
+"g. on high-latency connections. It specifies how many requests are sent in a "
+"pipeline. APT tries to detect and workaround misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the "
+"HTTP/1.1 specification pipelining can be disabled by setting the value to 0. "
+"It is enabled by default with the value 10."
+msgstr ""
+"A definição <literal>Acquire::http::Pipeline-Depth</literal> pode ser usada "
+"para activar o 'pipelining' de HTTP (RFC 2616 secção 8.1.2.2) a qual pode "
+"ser benéfica por exemplo em ligações de alta latência. Especifica quantos "
+"pedidos são enviados num pipeline. As versões anteriores do APT tinham uma "
+"predefinição de 10 para esta definição, mas o valor predefinido agora é 0 (= "
+"desactivado) para evitar problemas com a quantidade crescente de servidores "
+"web e proxies que escolheram não respeitar a especificação HTTP/1.1."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::AllowRedirect</literal> controls whether APT will "
+"follow redirects, which is enabled by default."
+msgstr ""
+"<literal>Acquire::http::AllowRedirect</literal> controla se o APT irá seguir "
+"os redireccionamentos, o que está activo por predefinição."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</"
+"literal> which accepts integer values in kilobytes per second. The default "
+"value is 0 which deactivates the limit and tries to use all available "
+"bandwidth. Note that this option implicitly disables downloading from "
+"multiple servers at the same time."
+msgstr ""
+"A largura de banda usada pode ser limitada com <literal>Acquire::http::Dl-"
+"Limit</literal> que aceita valores inteiros em kilobytes por segundo. O "
+"valor predefinido é 0 que desactiva o limite e tenta usar toda a largura de "
+"banda disponível. Note que esta opção implicitamente desactiva a descarga a "
+"partir de múltiplos servidores ao mesmo tempo."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::User-Agent</literal> can be used to set a different "
+"User-Agent for the http download method as some proxies allow access for "
+"clients only if the client uses a known identifier."
+msgstr ""
+"<literal>Acquire::http::User-Agent</literal> pode ser usado para definir um "
+"Utilizador-Agente diferente para o método de download por http, porque "
+"alguns proxies apenas permitem acesso a clientes se o cliente usar um "
+"identificador conhecido."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>Acquire::http::Proxy-Auto-Detect</literal> can be used to "
+#| "specify an external command to discover the http proxy to use. Apt "
+#| "expects the command to output the proxy on stdout in the style "
+#| "<literal>http://proxy:port/</literal>. This will override the generic "
+#| "<literal>Acquire::http::Proxy</literal> but not any specific host proxy "
+#| "configuration set via <literal>Acquire::http::Proxy::$HOST</literal>. "
+#| "See the &squid-deb-proxy-client; package for an example implementation "
+#| "that uses avahi. This option takes precedence over the legacy option name "
+#| "<literal>ProxyAutoDetect</literal>."
+msgid ""
+"<literal>Acquire::http::Proxy-Auto-Detect</literal> can be used to specify "
+"an external command to discover the http proxy to use. The first and only "
+"parameter is an URI denoting the host to be contacted to allow for host-"
+"specific configuration. APT expects the command to output the proxy on "
+"stdout as a single line in the style <literal>http://proxy:port/</literal> "
+"or the word <literal>DIRECT</literal> if no proxy should be used. No output "
+"indicates that the generic proxy settings should be used. Note that auto-"
+"detection will not be used for a host if a host-specific proxy configuration "
+"is already set via <literal>Acquire::http::Proxy::<replaceable>HOST</"
+"replaceable></literal>. See the &squid-deb-proxy-client; package for an "
+"example implementation that uses avahi. This option takes precedence over "
+"the legacy option name <literal>ProxyAutoDetect</literal>."
+msgstr ""
+"<literal>Acquire::http::Proxy-Auto-Detect</literal> pode ser usado para "
+"especificar um comando externo para descobrir o proxy http a usar. O apt "
+"espera que o comando forneça o resultado do proxy no stdout ao estilo "
+"<literal>http://proxy:port/</literal>. Isto irá sobrepor o <literal>Acquire::"
+"http::Proxy</literal> genérico mas não qualquer configuração especifica da "
+"máquina proxy definida via <literal>Acquire::http::Proxy::$HOST</literal>. "
+"Veja o pacote &squid-deb-proxy-client; para um exemplo de implementação que "
+"usa avahi. Esta opção toma precedência sobre o nome de opção antigo "
+"<literal>ProxyAutoDetect</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Cache-control</literal>, <literal>Timeout</literal>, "
+"<literal>AllowRedirect</literal>, <literal>Dl-Limit</literal> and "
+"<literal>proxy</literal> options work for HTTPS URIs in the same way as for "
+"the <literal>http</literal> method, and default to the same values if they "
+"are not explicitly set. The <literal>Pipeline-Depth</literal> option is not "
+"yet supported."
+msgstr ""
+"As opções <literal>Cache-control</literal>, <literal>Timeout</literal>, "
+"<literal>AllowRedirect</literal>, <literal>Dl-Limit</literal> e "
+"<literal>proxy</literal> funcionam para URIs HTTPS do mesmo modo que para o "
+"método <literal>http</literal>, e tem por predefinição os mesmos valores se "
+"estes não forem definidos especificamente A opção <literal>Pipeline-Depth</"
+"literal> ainda não é suportada."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>CaInfo</literal> suboption specifies place of file that holds info "
+"about trusted certificates. <literal>&lt;host&gt;::CaInfo</literal> is the "
+"corresponding per-host option. <literal>Verify-Peer</literal> boolean "
+"suboption determines whether or not the server's host certificate should be "
+"verified against trusted certificates. <literal>&lt;host&gt;::Verify-Peer</"
+"literal> is the corresponding per-host option. <literal>Verify-Host</"
+"literal> boolean suboption determines whether or not the server's hostname "
+"should be verified. <literal>&lt;host&gt;::Verify-Host</literal> is the "
+"corresponding per-host option. <literal>SslCert</literal> determines what "
+"certificate to use for client authentication. <literal>&lt;host&gt;::"
+"SslCert</literal> is the corresponding per-host option. <literal>SslKey</"
+"literal> determines what private key to use for client authentication. "
+"<literal>&lt;host&gt;::SslKey</literal> is the corresponding per-host "
+"option. <literal>SslForceVersion</literal> overrides default SSL version to "
+"use. It can contain either of the strings '<literal>TLSv1</literal>' or "
+"'<literal>SSLv3</literal>'. <literal>&lt;host&gt;::SslForceVersion</"
+"literal> is the corresponding per-host option."
+msgstr ""
+"A sub-opção <literal>CaInfo</literal> especifica o lugar do ficheiro que "
+"contém informação acerca de certificados de confiança. <literal>&lt;"
+"host&gt;::CaInfo</literal> é a opção 'por máquina' correspondente. A sub-"
+"opção booleana <literal>Verify-Peer</literal> determina se o certificado da "
+"máquina anfitriã deve ou não ser verificado com certificados de confiança. "
+"<literal>&lt;host&gt;::Verify-Peer</literal> é a opção 'por máquina' "
+"correspondente. A sub-opção booleana <literal>Verify-Host</literal> "
+"determina se o nome da máquina servidora deve ao não ser verificado. "
+"<literal>&lt;host&gt;::Verify-Host</literal> é a opção 'por máquina' "
+"correspondente. <literal>SslCert</literal> determina qual certificado a usar "
+"para autenticação de clientes. <literal>&lt;host&gt;::SslCert</literal> é a "
+"opção 'por máquina' correspondente. <literal>SslKey</literal> determina qual "
+"a chave privada a usar para autenticação de clientes. <literal>&lt;host&gt;::"
+"SslKey</literal> é a opção 'por máquina' correspondente. "
+"<literal>SslForceVersion</literal> sobrepõe a versão SSL predefinida a usar. "
+"Pode conter qualquer uma das strings 'TLSv1' ou 'SSLv3'. <literal>&lt;"
+"host&gt;::SslForceVersion</literal> é a opção 'por máquina' correspondente."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs. "
+"It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</"
+"literal>. Per host proxies can also be specified by using the form "
+"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
+"used. To use an FTP proxy you will have to set the <literal>ftp::ProxyLogin</"
+"literal> script in the configuration file. This entry specifies the commands "
+"to send to tell the proxy server what to connect to. Please see "
+"&configureindex; for an example of how to do this. The substitution "
+"variables representing the corresponding URI component are <literal>"
+"$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, <literal>"
+"$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, <literal>$(SITE)</"
+"literal> and <literal>$(SITE_PORT)</literal>."
+msgstr ""
+"<literal>ftp::Proxy</literal> define o proxy predefinido a usar para URIs "
+"FTP. Está no formato standard de <literal>ftp://[[user][:pass]@]host[:port]/"
+"</literal>. Os proxies por máquina podem também ser especificados ao usar o "
+"formato <literal>ftp::Proxy::&lt;host&gt;</literal> com a palavra chave "
+"especial <literal>DIRECT</literal> que significa não usar nenhum proxy. Se "
+"nenhuma das definições acima for especificada, será usada a variável de "
+"ambiente <envar>ftp_proxy</envar>. Para usar um proxy FTP você tem que "
+"definir o script <literal>ftp::ProxyLogin</literal> no ficheiro de "
+"configuração. Esta entrada especifica os comandos a enviar para dizer ao "
+"servidor proxy ao que se ligar. Por favor veja &configureindex; para um "
+"exemplo de como fazer isto. As variáveis de substituição que representam o "
+"componente URI correspondente são <literal>$(PROXY_USER)</literal> <literal>"
+"$(PROXY_PASS)</literal> <literal>$(SITE_USER)</literal> <literal>"
+"$(SITE_PASS)</literal> <literal>$(SITE)</literal> e <literal>$(SITE_PORT)</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Several settings are provided to control passive mode. Generally it is safe "
+"to leave passive mode on; it works in nearly every environment. However, "
+"some situations require that passive mode be disabled and port mode FTP used "
+"instead. This can be done globally or for connections that go through a "
+"proxy or for a specific host (see the sample config file for examples)."
+msgstr ""
+"São disponibilizadas várias definições para controlar o modo passivo. "
+"Geralmente é seguro deixar o modo passivo ligado, funciona em quase todos "
+"ambientes. No entanto algumas situações requerem que o modo passivo seja "
+"desactivado e em vez disso usar o modo port ftp. Isto pode ser feito "
+"globalmente ou para ligações que passam por um proxy ou para uma máquina "
+"específica (veja a amostra de ficheiro de configuração para exemplos)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
+"envar> environment variable to an HTTP URL - see the discussion of the http "
+"method above for syntax. You cannot set this in the configuration file and "
+"it is not recommended to use FTP over HTTP due to its low efficiency."
+msgstr ""
+"É possível usar proxy FTP sobre HTTP ao definir a variável de ambiente "
+"<envar>ftp_proxy</envar> para um URL HTTP - veja a discussão do método http "
+"em cima para a sintaxe. Você não pode definir isto no ficheiro de "
+"configuração e não é recomendado usar FTP sobre HTTP devido à sua baixa "
+"eficiência."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
+"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
+"false, which means these commands are only used if the control connection is "
+"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
+"that most FTP servers do not support RFC2428."
+msgstr ""
+"A definição <literal>ForceExtended</literal> controla o uso de comandos "
+"RFC2428 <literal>EPSV</literal> e <literal>EPRT</literal>. A predefinição é "
+"falso, o que significa que estes comandos apenas são usados se a ligação de "
+"controle for IPv6. Definir isto para verdadeiro força o seu uso mesmo em "
+"ligações IPv4. Note que a maioria dos servidores FTP não suporta RFC2428."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "/cdrom/::Mount \"foo\";"
+msgstr "/cdrom/::Mount \"foo\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"For URIs using the <literal>cdrom</literal> method, the only configurable "
+"option is the mount point, <literal>cdrom::Mount</literal>, which must be "
+"the mount point for the CD-ROM (or DVD, or whatever) drive as specified in "
+"<filename>/etc/fstab</filename>. It is possible to provide alternate mount "
+"and unmount commands if your mount point cannot be listed in the fstab. The "
+"syntax is to put <placeholder type=\"literallayout\" id=\"0\"/> within the "
+"<literal>cdrom</literal> block. It is important to have the trailing slash. "
+"Unmount commands can be specified using UMount."
+msgstr ""
+"Para URIs que usam o método <literal>cdrom</literal>, a única opção "
+"configurável é ponto de montagem, <literal>cdrom::Mount</literal>, o qual "
+"deve ser o ponto de montagem para o leitor de CD-ROM (ou DVD, etc.) como "
+"especificado em <filename>/etc/fstab</filename>.É possível fornecer comandos "
+"de montar e desmontar alternativos se o seu ponto de montagem não puder ser "
+"listado na fstab. A sintaxe é colocar <placeholder type=\"literallayout\" "
+"id=\"0\"/> dentro do bloco <literal>cdrom</literal>. É importante ter a "
+"barra final. Comandos para desmontar podem ser especificados usando o UMount."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"For GPGV URIs the only configurable option is <literal>gpgv::Options</"
+"literal>, which passes additional parameters to gpgv."
+msgstr ""
+"Para URIs de GPGV a única opção configurável é <literal>gpgv::Options</"
+"literal>, a qual passa parâmetros adicionais ao gpgv."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";"
+msgstr "Acquire::CompressionTypes::<replaceable>Extensão de Ficheiro</replaceable> \"<replaceable>Nome de método</replaceable>\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "List of compression types which are understood by the acquire methods. "
+#| "Files like <filename>Packages</filename> can be available in various "
+#| "compression formats. By default the acquire methods can decompress "
+#| "<command>bzip2</command>, <command>lzma</command> and <command>gzip</"
+#| "command> compressed files; with this setting more formats can be added on "
+#| "the fly or the used method can be changed. The syntax for this is: "
+#| "<placeholder type=\"synopsis\" id=\"0\"/>"
+msgid ""
+"List of compression types which are understood by the acquire methods. "
+"Files like <filename>Packages</filename> can be available in various "
+"compression formats. By default the acquire methods can decompress and "
+"recompress many common formats like <command>xz</command> and <command>gzip</"
+"command>; with this scope the supported formats can be queried, modified as "
+"well as support for more formats added (see also <option>APT::Compressor</"
+"option>). The syntax for this is: <placeholder type=\"synopsis\" id=\"0\"/>"
+msgstr ""
+"Lista dos tipos de compressão que são compreendidos pelos métodos de "
+"aquisição. Ficheiros como <filename>Packages</filename> podem estar "
+"disponíveis em vários formatos de compressão. Por predefinição os métodos de "
+"aquisição podem descomprimir ficheiros comprimidos em <command>bzip2</"
+"command>, <command>lzma</command> e <command>gzip</command>, mais formatos "
+"podem ser adicionados na hora com esta definição ou o método usado pode ser "
+"alterado. A sintaxe para isto é: <placeholder type=\"synopsis\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order:: \"gz\";"
+msgstr "Acquire::CompressionTypes::Order:: \"gz\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order { \"xz\"; \"gz\"; };"
+msgstr "Acquire::CompressionTypes::Order { \"xz\"; \"gz\"; };"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Also, the <literal>Order</literal> subgroup can be used to define in "
+#| "which order the acquire system will try to download the compressed files. "
+#| "The acquire system will try the first and proceed with the next "
+#| "compression type in this list on error, so to prefer one over the other "
+#| "type simply add the preferred type first - default types not already "
+#| "added will be implicitly appended to the end of the list, so e.g. "
+#| "<placeholder type=\"synopsis\" id=\"0\"/> can be used to prefer "
+#| "<command>gzip</command> compressed files over <command>bzip2</command> "
+#| "and <command>lzma</command>. If <command>lzma</command> should be "
+#| "preferred over <command>gzip</command> and <command>bzip2</command> the "
+#| "configure setting should look like this: <placeholder type=\"synopsis\" "
+#| "id=\"1\"/> It is not needed to add <literal>bz2</literal> to the list "
+#| "explicitly as it will be added automatically."
+msgid ""
+"Also, the <literal>Order</literal> subgroup can be used to define in which "
+"order the acquire system will try to download the compressed files. The "
+"acquire system will try the first and proceed with the next compression type "
+"in this list on error, so to prefer one over the other type simply add the "
+"preferred type first - types not already added will be implicitly appended "
+"to the end of the list, so e.g. <placeholder type=\"synopsis\" id=\"0\"/> "
+"can be used to prefer <command>gzip</command> compressed files over all "
+"other compression formats. If <command>xz</command> should be preferred "
+"over <command>gzip</command> and <command>bzip2</command> the configure "
+"setting should look like this: <placeholder type=\"synopsis\" id=\"1\"/> It "
+"is not needed to add <literal>bz2</literal> to the list explicitly as it "
+"will be added automatically."
+msgstr ""
+"Também o subgrupo <literal>Order</literal> pode ser usado para definir em "
+"que ordem o sistema de aquisição irá tentar descarregar os ficheiros "
+"comprimidos. O sistema de aquisição irá tentar com o primeiro e prosseguir "
+"com o próximo tipo de compressão na lista em caso de erro, portanto para "
+"preferir um sobre outro tipo, simplesmente adicione o tipo preferido em "
+"primeiro lugar - tipos predefinidos não já adicionados serão acrescentados "
+"implicitamente ao fim da lista, então, ex. <placeholder type=\"synopsis\" id="
+"\"0\"/> pode ser usado para preferir ficheiros comprimidos em <command>gzip</"
+"command> sobre <command>bzip2</command> e <command>lzma</command>. Se o "
+"<command>lzma</command> deve ser preferido sobre <command>gzip</command> e "
+"<command>bzip2</command> a definição de configuração deverá parecer-se com "
+"isto: <placeholder type=\"synopsis\" id=\"1\"/>. Não é necessário adicionar "
+"explicitamente <literal>bz2</literal> à lista pois isso será adicionado "
+"automaticamente."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Dir::Bin::bzip2 \"/bin/bzip2\";"
+msgstr "Dir::Bin::bzip2 \"/bin/bzip2\";"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Note that the <literal>Dir::Bin::<replaceable>Methodname</replaceable></"
+#| "literal> will be checked at run time. If this option has been set, the "
+#| "method will only be used if this file exists; e.g. for the "
+#| "<literal>bzip2</literal> method (the inbuilt) setting is: <placeholder "
+#| "type=\"literallayout\" id=\"0\"/> Note also that list entries specified "
+#| "on the command line will be added at the end of the list specified in the "
+#| "configuration files, but before the default entries. To prefer a type in "
+#| "this case over the ones specified in the configuration files you can set "
+#| "the option direct - not in list style. This will not override the "
+#| "defined list; it will only prefix the list with this type."
+msgid ""
+"Note that the <literal>Dir::Bin::<replaceable>Methodname</replaceable></"
+"literal> will be checked at run time. If this option has been set and "
+"support for this format isn't directly built into apt, the method will only "
+"be used if this file exists; e.g. for the <literal>bzip2</literal> method "
+"(the inbuilt) setting is: <placeholder type=\"literallayout\" id=\"0\"/> "
+"Note also that list entries specified on the command line will be added at "
+"the end of the list specified in the configuration files, but before the "
+"default entries. To prefer a type in this case over the ones specified in "
+"the configuration files you can set the option direct - not in list style. "
+"This will not override the defined list; it will only prefix the list with "
+"this type."
+msgstr ""
+"Note que o <literal>Dir::Bin::<replaceable>nome de método</replaceable></"
+"literal> será verificado em tempo de execução. Se esta definição estiver "
+"definida, o método apenas será usado se este ficheiro existir; ex. para o "
+"método <literal>bzip2</literal> (o embutido) a definição é: <placeholder "
+"type=\"literallayout\" id=\"0\"/>. Note também que as entradas na lista "
+"especificadas na linha de comandos serão adicionadas no fim da lista "
+"especificada nos ficheiros de configuração, mas antes das entradas "
+"predefinidas. Para preferir um tipo neste caso sobre aqueles especificados "
+"nos ficheiros de configuração você pode definir a opção directamente - não "
+"em estilo de lista. Isto não irá sobrepor a lista definida, irá apenas "
+"prefixar a lista com este tipo."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The special type <literal>uncompressed</literal> can be used to give "
+"uncompressed files a preference, but note that most archives don't provide "
+"uncompressed files so this is mostly only useable for local mirrors."
+msgstr ""
+"O tipo especial <literal>uncompressed</literal> pode ser usado para dar "
+"preferência a ficheiros não comprimidos, mas note que a maioria dos arquivos "
+"não disponibiliza ficheiros não comprimidos, portanto isto é usado "
+"maioritariamente apenas para mirrors locais."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"When downloading <literal>gzip</literal> compressed indexes (Packages, "
+"Sources, or Translations), keep them gzip compressed locally instead of "
+"unpacking them. This saves quite a lot of disk space at the expense of more "
+"CPU requirements when building the local package caches. False by default."
+msgstr ""
+"Quando descarrega índices comprimidos em <literal>gzip</literal> (Pacotes, "
+"Fontes ou Traduções), mantêm-os localmente comprimidos em gzip em vez de os "
+"desempacotar. Isto poupa imenso espaço no disco à custa de mais pedidos à "
+"CPU quando constrói as caches de pacotes locais. Falso por predefinição."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Languages subsection controls which <filename>Translation</filename> "
+"files are downloaded and in which order APT tries to display the description-"
+"translations. APT will try to display the first available description in the "
+"language which is listed first. Languages can be defined with their short or "
+"long language codes. Note that not all archives provide "
+"<filename>Translation</filename> files for every language - the long "
+"language codes are especially rare."
+msgstr ""
+"A subsecção Languages controla quais ficheiros <filename>Translation</"
+"filename> são descarregados e em que ordem o APT tenta mostrar as traduções "
+"das descrições. O APT irá tentar mostrar a primeira descrição disponível "
+"para a linguagem que está listada em primeiro. As linguagens podem ser "
+"definidas com os seus códigos de linguagem curtos ou longos. Note que nem "
+"todos os arquivos disponibilizam ficheiros <filename>Translation</filename> "
+"para todas as linguagens - os códigos de linguagem longos são "
+"especialmenteraros."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };"
+msgstr "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The default list includes \"environment\" and \"en\". "
+"\"<literal>environment</literal>\" has a special meaning here: it will be "
+"replaced at runtime with the language codes extracted from the "
+"<literal>LC_MESSAGES</literal> environment variable. It will also ensure "
+"that these codes are not included twice in the list. If "
+"<literal>LC_MESSAGES</literal> is set to \"C\" only the "
+"<filename>Translation-en</filename> file (if available) will be used. To "
+"force APT to use no Translation file use the setting <literal>Acquire::"
+"Languages=none</literal>. \"<literal>none</literal>\" is another special "
+"meaning code which will stop the search for a suitable "
+"<filename>Translation</filename> file. This tells APT to download these "
+"translations too, without actually using them unless the environment "
+"specifies the languages. So the following example configuration will result "
+"in the order \"en, de\" in an English locale or \"de, en\" in a German one. "
+"Note that \"fr\" is downloaded, but not used unless APT is used in a French "
+"locale (where the order would be \"fr, de, en\"). <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+msgstr ""
+"A lista predefinida inclui \"environment\" e \"en\". \"<literal>environment</"
+"literal>\" tem um significado especial aqui: será substituída em tempo de "
+"execução por códigos de linguagem extraídos a partir da variável de ambiente "
+"<literal>LC_MESSAGES</literal>. Também irá assegurar que estes códigos não "
+"são incluídos duas vezes na lista. Se <literal>LC_MESSAGES</literal> estiver "
+"definida para \"C\" apenas o ficheiro <filename>Translation-en</filename> "
+"será usado (se disponível). Para forçar o apt a não usar nenhum ficheiro de "
+"tradução use a definição <literal>Acquire::Languages=none</literal>. "
+"\"<literal>none</literal>\" é outro código de significado especial que irá "
+"parar a procura por um ficheiro <filename>Translation</filename> apropriado. "
+"Isto diz ao APT para também descarregar estes ficheiros sem realmente os "
+"usar a menos que o ambiente especifique as linguagens. Portanto o seguinte "
+"exemplo de configuração irá resultar na ordem \"en, de\" num ambiente em "
+"Inglês e \"de, en\" num ambiente em Alemão. Note que o \"fr\" é "
+"descarregado, mas não é usado a menos que o APT seja usado num ambiente em "
+"Francês (onde a ordem deveria ser \"fr, de, en\". <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Note: To prevent problems resulting from APT being executed in different "
+"environments (e.g. by different users or by other programs) all Translation "
+"files which are found in <filename>/var/lib/apt/lists/</filename> will be "
+"added to the end of the list (after an implicit \"<literal>none</literal>\")."
+msgstr ""
+"Nota: Para prevenir problemas resultantes do APT ser executado em ambientes "
+"diferentes (ex. por diferentes utilizadores ou por outros programas) todos "
+"os ficheiros de Tradução que se encontram em <filename>/var/lib/apt/lists/</"
+"filename> serão adicionados ao final da lista (após um \"<literal>none</"
+"literal>\" implícito)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "When downloading, force to use only the IPv4 protocol."
+msgstr "Ao descarregar, força o uso exclusivo do protocolo IPv4."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "When downloading, force to use only the IPv6 protocol."
+msgstr "Ao descarregar, força o uso exclusivo do protocolo IPv6."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The maximum file size of Release/Release.gpg/InRelease files. The default "
+"is 10MB."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This option controls if apt will use the DNS SRV server record as specified "
+"in RFC 2782 to select an alternative server to connect to. The default is "
+"\"true\"."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow update operations to load data files from repositories without "
+"sufficient security information. The default value is \"<literal>false</"
+"literal>\". Concept, implications as well as alternatives are detailed in "
+"&apt-secure;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow update operations to load data files from repositories which provide "
+"security information, but these are deemed no longer cryptographically "
+"strong enough. The default value is \"<literal>false</literal>\". Concept, "
+"implications as well as alternatives are detailed in &apt-secure;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow that a repository that was previously gpg signed to become unsigned "
+"during an update operation. When there is no valid signature for a "
+"previously trusted repository apt will refuse the update. This option can be "
+"used to override this protection. You almost certainly never want to enable "
+"this. The default is <literal>false</literal>. Concept, implications as "
+"well as alternatives are detailed in &apt-secure;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.conf.5.xml
+msgid "scope"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Acquiring changelogs can only be done if an URI is known from where to get "
+"them. Preferable the Release file indicates this in a 'Changelogs' field. "
+"If this isn't available the Label/Origin field of the Release file is used "
+"to check if a <literal>Acquire::Changelogs::URI::Label::<replaceable>LABEL</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Origin::"
+"<replaceable>ORIGIN</replaceable></literal> option exists and if so this "
+"value is taken. The value in the Release file can be overridden with "
+"<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
+"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a "
+"normal URI to a text file, except that package specific data is replaced "
+"with the placeholder <literal>@CHANGEPATH@</literal>. The value for it is: "
+"1. if the package is from a component (e.g. <literal>main</literal>) this "
+"is the first part otherwise it is omitted, 2. the first letter of source "
+"package name, except if the source package name starts with '<literal>lib</"
+"literal>' in which case it will be the first four letters. 3. The complete "
+"source package name. 4. the complete name again and 5. the source version. "
+"The first (if present), second, third and fourth part are separated by a "
+"slash ('<literal>/</literal>') and between the fourth and fifth part is an "
+"underscore ('<literal>_</literal>'). The special value '<literal>no</"
+"literal>' is available for this option indicating that this source can't be "
+"used to acquire changelog files from. Another source will be tried if "
+"available in this case."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid "User configuration"
+msgid "Binary specific configuration"
+msgstr "Configuração do utilizador"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Especially with the introduction of the <command>apt</command> binary it can "
+"be useful to set certain options only for a specific binary as even options "
+"which look like they would effect only a certain binary like <option>APT::"
+"Get::Show-Versions</option> effect <command>apt-get</command> as well as "
+"<command>apt</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Setting an option for a specific binary only can be achieved by setting the "
+"option inside the <option>Binary::<replaceable>specific-binary</"
+"replaceable></option> scope. Setting the option <option>APT::Get::Show-"
+"Versions</option> for the <command>apt</command> only can e.g. by done by "
+"setting <option>Binary::apt::APT::Get::Show-Versions</option> instead."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that as seen in the DESCRIPTION section further above you can't set "
+"binary-specific options on the commandline itself nor in configuration files "
+"loaded via the commandline."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Directories"
+msgstr "Directórios"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Dir::State</literal> section has directories that pertain to "
+"local state information. <literal>lists</literal> is the directory to place "
+"downloaded package lists in and <literal>status</literal> is the name of the "
+"&dpkg; status file. <literal>preferences</literal> is the name of the APT "
+"<filename>preferences</filename> file. <literal>Dir::State</literal> "
+"contains the default directory to prefix on all sub-items if they do not "
+"start with <filename>/</filename> or <filename>./</filename>."
+msgstr ""
+"A secção <literal>Dir::State</literal> tem directórios que pertencem à "
+"informação de estado local. <literal>lists</literal> é o directório para "
+"colocar listas de pacotes descarregadas e <literal>status</literal> é o nome "
+"do ficheiro de estado do &dpkg;. <literal>preferences</literal> é o nome do "
+"ficheiro <filename>preferences</filename> do APT. <literal>Dir::State</"
+"literal> contém o directório predefinido para pré-fixar em todos os sub-"
+"items que não começam com <filename>/</filename> ou <filename>./</filename>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Dir::Cache</literal> contains locations pertaining to local cache "
+"information, such as the two package caches <literal>srcpkgcache</literal> "
+"and <literal>pkgcache</literal> as well as the location to place downloaded "
+"archives, <literal>Dir::Cache::archives</literal>. Generation of caches can "
+"be turned off by setting <literal>pkgcache</literal> or "
+"<literal>srcpkgcache</literal> to <literal>\"\"</literal>. This will slow "
+"down startup but save disk space. It is probably preferable to turn off the "
+"pkgcache rather than the srcpkgcache. Like <literal>Dir::State</literal> "
+"the default directory is contained in <literal>Dir::Cache</literal>"
+msgstr ""
+"<literal>Dir::Cache</literal> contém localizações pertencentes a informação "
+"da cache local, como as caches de dois pacotes <literal>srcpkgcache</"
+"literal> e <literal>pkgcache</literal> assim como a localização onde colocar "
+"arquivos descarregados, <literal>Dir::Cache::archives</literal>. A geração "
+"de caches pode ser desligada ao definir <literal>pkgcache</literal> ou "
+"<literal>srcpkgcache</literal> para <literal>\"\"</literal>. Isto irá "
+"abrandar o arranque mas poupar espaço em disco. Provavelmente é preferível "
+"desligar o pkgcache em vez do srcpkgcache. Tal como <literal>Dir::State</"
+"literal> o directório predefinido é contido em <literal>Dir::Cache</literal>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Dir::Etc</literal> contains the location of configuration files, "
+"<literal>sourcelist</literal> gives the location of the sourcelist and "
+"<literal>main</literal> is the default configuration file (setting has no "
+"effect, unless it is done from the config file specified by "
+"<envar>APT_CONFIG</envar>)."
+msgstr ""
+"<literal>Dir::Etc</literal> contém a localização dos ficheiros de "
+"configuração, <literal>sourcelist</literal> fornece a localização da "
+"sourcelist e <literal>main</literal> é o ficheiro da configuração "
+"predefinida (definição não tem efeito, a menos que seja feita a partir do "
+"ficheiro de configuração especificado por <envar>APT_CONFIG</envar>)."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Dir::Parts</literal> setting reads in all the config fragments "
+"in lexical order from the directory specified. After this is done then the "
+"main config file is loaded."
+msgstr ""
+"A definição <literal>Dir::Parts</literal> lê todos os fragmentos de "
+"configuração em ordem léxica a partir do directório especificado. Após isto "
+"estar feito então é carregado o ficheiro de configuração principal."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
+"Bin::Methods</literal> specifies the location of the method handlers and "
+"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
+"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
+"literal> <literal>dpkg-buildpackage</literal> and <literal>apt-cache</"
+"literal> specify the location of the respective programs."
+msgstr ""
+"Programas binários são apontados por <literal>Dir::Bin</literal>. "
+"<literal>Dir::Bin::Methods</literal> especifica a localização dos "
+"manipuladores do método e de <literal>gzip</literal>, <literal>bzip2</"
+"literal>, <literal>lzma</literal>, <literal>dpkg</literal>, <literal>apt-"
+"get</literal> <literal>dpkg-source</literal> <literal>dpkg-buildpackage</"
+"literal> e <literal>apt-cache</literal> especifica a localização dos "
+"respectivos programas."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "The configuration item <literal>RootDir</literal> has a special meaning. "
+#| "If set, all paths in <literal>Dir::</literal> will be relative to "
+#| "<literal>RootDir</literal>, <emphasis>even paths that are specified "
+#| "absolutely</emphasis>. So, for instance, if <literal>RootDir</literal> "
+#| "is set to <filename>/tmp/staging</filename> and <literal>Dir::State::"
+#| "status</literal> is set to <filename>/var/lib/dpkg/status</filename>, "
+#| "then the status file will be looked up in <filename>/tmp/staging/var/lib/"
+#| "dpkg/status</filename>."
+msgid ""
+"The configuration item <literal>RootDir</literal> has a special meaning. If "
+"set, all paths will be relative to <literal>RootDir</literal>, "
+"<emphasis>even paths that are specified absolutely</emphasis>. So, for "
+"instance, if <literal>RootDir</literal> is set to <filename>/tmp/staging</"
+"filename> and <literal>Dir::State::status</literal> is set to <filename>/var/"
+"lib/dpkg/status</filename>, then the status file will be looked up in "
+"<filename>/tmp/staging/var/lib/dpkg/status</filename>. If you want to "
+"prefix only relative paths, set <literal>Dir</literal> instead."
+msgstr ""
+"O item de configuração <literal>RootDir</literal> tem um significado "
+"especial. Se definido, todos os caminhos em <literal>Dir::</literal> serão "
+"relativos a <literal>RootDir</literal>, <emphasis>mesmo caminhos que estão "
+"absolutamente especificados</emphasis>. Então, por exemplo, se "
+"<literal>RootDir</literal> estiver definido para <filename>/tmp/staging</"
+"filename> e <literal>Dir::State::status</literal> estiver definido para "
+"<filename>/var/lib/dpkg/status</filename>, então o ficheiro status será "
+"procurado em <filename>/tmp/staging/var/lib/dpkg/status</filename>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Ignore-Files-Silently</literal> list can be used to specify "
+"which files APT should silently ignore while parsing the files in the "
+"fragment directories. Per default a file which end with <literal>.disabled</"
+"literal>, <literal>~</literal>, <literal>.bak</literal> or <literal>.dpkg-[a-"
+"z]+</literal> is silently ignored. As seen in the last default value these "
+"patterns can use regular expression syntax."
+msgstr ""
+"A lista <literal>Ignore-Files-Silently</literal> pode ser usada para "
+"especificar quais os ficheiros que o APT deve ignorar em silêncio enquanto "
+"analisa os ficheiros nos directórios de fragmento. Por predefinição que "
+"termine com <literal>.disabled</literal>, <literal>~</literal>, <literal>."
+"bak</literal> ou <literal>.dpkg-[a-z]+</literal> é ignorado em silêncio. "
+"Como visto no último valor predefinido, estes padrões podem usar sintaxe de "
+"expressão regular."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "APT in DSelect"
+msgstr "APT em DSelect"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"When APT is used as a &dselect; method several configuration directives "
+"control the default behavior. These are in the <literal>DSelect</literal> "
+"section."
+msgstr ""
+"Quando o APT é usado com um método &dselect;, várias directivas de "
+"configuração controlam o comportamento predefinido. Estas estão na secção "
+"<literal>DSelect</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Cache Clean mode; this value may be one of <literal>always</literal>, "
+"<literal>prompt</literal>, <literal>auto</literal>, <literal>pre-auto</"
+"literal> and <literal>never</literal>. <literal>always</literal> and "
+"<literal>prompt</literal> will remove all packages from the cache after "
+"upgrading, <literal>prompt</literal> (the default) does so conditionally. "
+"<literal>auto</literal> removes only those packages which are no longer "
+"downloadable (replaced with a new version for instance). <literal>pre-auto</"
+"literal> performs this action before downloading new packages."
+msgstr ""
+"Modo Cache Clean: este valor deve ser um de <literal>always</literal>, "
+"<literal>prompt</literal>, <literal>auto</literal>, <literal>pre-auto</"
+"literal> e <literal>never</literal>. <literal>always</literal> e "
+"<literal>prompt</literal> irão remover todos os pacotes da cache após a "
+"actualização, <literal>prompt</literal> (a predefinição) fá-lo "
+"condicionalmente. <literal>auto</literal> apenas aqueles pacotes que já não "
+"podem ser descarregados (por exemplo, substituídos por uma nova versão). "
+"<literal>pre-auto</literal> executa esta acção antes de descarregar novos "
+"pacotes."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the install phase."
+msgstr ""
+"O conteúdo desta variável é passado ao &apt-get; como opções de linha de "
+"comandos quando é corrido para a fase de instalação."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the update phase."
+msgstr ""
+"O conteúdo desta variável é passado ao &apt-get; como opções de linha de "
+"comandos quando é executado para a fase de actualização."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"If true the [U]pdate operation in &dselect; will always prompt to continue. "
+"The default is to prompt only on error."
+msgstr ""
+"Se for verdadeira a operação [U]pdate no &dselect; irá sempre avisar para "
+"continuar. A predefinição é avisar apenas em caso de erro."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "How APT calls &dpkg;"
+msgstr "Como o APT chama o &dpkg;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Several configuration directives control how APT invokes &dpkg;. These are "
+"in the <literal>DPkg</literal> section."
+msgstr ""
+"Várias directivas de configuração controlam como o APT invoca o invokes "
+"&dpkg;. Estas estão na secção <literal>DPkg</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of options to pass to &dpkg;. The options must be specified "
+"using the list notation and each list item is passed as a single argument to "
+"&dpkg;."
+msgstr ""
+"Isto é uma lista de opções para passar ao &dpkg;. As opções têm de ser "
+"especificadas usando a notação de lista e cada item da lista é passado como "
+"um argumento único ao &dpkg;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of shell commands to run before/after invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort."
+msgstr ""
+"Isto é uma lista de comandos shell para executar antes/após invocar o "
+"&dpkg;. Tal como as <literal>opções</literal> isto tem que ser especificado "
+"em notação listada. Os comandos são invocados em ordem usando <filename>/"
+"bin/sh</filename>, caso algum deles falhe, o APT irá abortar."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of shell commands to run before invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort. APT will pass the filenames of all .deb files it is "
+"going to install to the commands, one per line on the requested file "
+"descriptor, defaulting to standard input."
+msgstr ""
+"Isto é uma lista de comandos shell para executar antes de invocar o &dpkg;. "
+"Tal como as <literal>opções</literal> isto tem que ser especificado em "
+"notação listada. Os comandos são invocados em ordem usando <filename>/bin/"
+"sh</filename>, caso algum deles falhe, o APT irá abortar. O APT irá passar "
+"para os comandos os nomes de ficheiros de todos os ficheiros .deb que vai "
+"instalar, um por cada linha no descritor de ficheiro requisitado, usando por "
+"predefinição a entrada standard."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Version 2 of this protocol sends more information through the requested file "
+"descriptor: a line with the text <literal>VERSION 2</literal>, the APT "
+"configuration space, and a list of package actions with filename and version "
+"information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each configuration directive line has the form <literal>key=value</"
+"literal>. Special characters (equal signs, newlines, nonprintable "
+"characters, quotation marks, and percent signs in <literal>key</literal> and "
+"newlines, nonprintable characters, and percent signs in <literal>value</"
+"literal>) are %-encoded. Lists are represented by multiple <literal>key::"
+"=value</literal> lines with the same key. The configuration section ends "
+"with a blank line."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Package action lines consist of five fields in Version 2: package name "
+"(without architecture qualification even if foreign), old version, direction "
+"of version change (&lt; for upgrades, &gt; for downgrades, = for no change), "
+"new version, action. The version fields are \"-\" for no version at all (for "
+"example when installing a package for the first time; no version is treated "
+"as earlier than any real version, so that is an upgrade, indicated as "
+"<literal>- &lt; 1.23.4</literal>). The action field is \"**CONFIGURE**\" if "
+"the package is being configured, \"**REMOVE**\" if it is being removed, or "
+"the filename of a .deb file if it is being unpacked."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"In Version 3 after each version field follows the architecture of this "
+"version, which is \"-\" if there is no version, and a field showing the "
+"MultiArch type \"same\", \"foreign\", \"allowed\" or \"none\". Note that "
+"\"none\" is an incorrect typename which is just kept to remain compatible, "
+"it should be read as \"no\" and users are encouraged to support both."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The version of the protocol to be used for the command "
+"<literal><replaceable>cmd</replaceable></literal> can be chosen by setting "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::Version</"
+"literal> accordingly, the default being version 1. If APT isn't supporting "
+"the requested version it will send the information in the highest version it "
+"has support for instead."
+msgstr ""
+"A versão do protocolo a ser usado para o comando <literal><replaceable>cmd</"
+"replaceable></literal> pode ser escolhida ao definir <literal>DPkg::Tools::"
+"options::<replaceable>cmd</replaceable>::Version</literal> correctamente, "
+"sendo a predefinição a versão 1. Se o APT não suportar a versão requisitada "
+"irá então enviar a informação na versão mais alta que suporta."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The file descriptor to be used to send the information can be requested with "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::InfoFD</"
+"literal> which defaults to <literal>0</literal> for standard input and is "
+"available since version 0.9.11. Support for the option can be detected by "
+"looking for the environment variable <envar>APT_HOOK_INFO_FD</envar> which "
+"contains the number of the used file descriptor as a confirmation."
+msgstr ""
+"O descritor de ficheiro a ser usado para enviar a informação pode ser "
+"requisitado com <literal>DPkg::Tools::options::<replaceable>cmd</"
+"replaceable>::InfoFD</literal> o qual usa <literal>0</literal> por "
+"predefinição para a saída standard e está disponível desde a versão 0.9.11. "
+"como confirmação pode ser detectado o suporte para a opção ao observar a "
+"variável de ambiente <envar>APT_HOOK_INFO_FD</envar> que contém o número do "
+"descritor de ficheiro usado."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"APT chdirs to this directory before invoking &dpkg;, the default is "
+"<filename>/</filename>."
+msgstr ""
+"O APT muda para este directório (chdir) antes de invocar o &dpkg;, a "
+"predefinição é <filename>/</filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"These options are passed to &dpkg-buildpackage; when compiling packages; the "
+"default is to disable signing and produce all binaries."
+msgstr ""
+"Estas opções são passadas ao &dpkg-buildpackage; quando compila pacotes, a "
+"predefinição é desactivar a assinatura e produzir todos os binários."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "If this option is set APT will call <command>dpkg --configure --pending</"
+#| "command> to let &dpkg; handle all required configurations and triggers. "
+#| "This option is activated automatically per default if the previous option "
+#| "is not set to <literal>all</literal>, but deactivating it could be useful "
+#| "if you want to run APT multiple times in a row - e.g. in an installer. In "
+#| "these sceneries you could deactivate this option in all but the last run."
+msgid ""
+"If this option is set APT will call <command>dpkg --configure --pending</"
+"command> to let &dpkg; handle all required configurations and triggers. This "
+"option is activated by default, but deactivating it could be useful if you "
+"want to run APT multiple times in a row - e.g. in an installer. In this "
+"scenario you could deactivate this option in all but the last run."
+msgstr ""
+"Se esta opção for definida, o APT irá chamar <command>dpkg --configure --"
+"pending</command> para permitir ao &dpkg; lidar como todas as configurações "
+"e triggers requisitados. Esta opção é activada automaticamente por "
+"predefinição se a opção anterior não for definida para <literal>all</"
+"literal>, mas desactivá-la pode ser útil se deseja correr o APT múltiplas "
+"vezes numa fila - ex. numa instalação. Nestes cenários você pode desactivar "
+"esta opção em todas excepto na última execução."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Periodic and Archives options"
+msgstr "Opções Periodic e Archives"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups "
+"of options configure behavior of apt periodic updates, which is done by the "
+"<literal>/usr/lib/apt/apt.systemd.daily</literal> script. See the top of "
+"this script for the brief documentation of these options."
+msgstr ""
+"Os grupos de opções <literal>APT::Periodic</literal> e <literal>APT::"
+"Archives</literal> configuram o comportamento das actualizações periódicas "
+"do APT, o que é feito pelo script <literal>/usr/lib/apt/apt.systemd.daily</"
+"literal>. Veja o cabeçalho deste script para uma breve documentação das suas "
+"opções."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Debug options"
+msgstr "Opções de depuração"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Enabling options in the <literal>Debug::</literal> section will cause "
+"debugging information to be sent to the standard error stream of the program "
+"utilizing the <literal>apt</literal> libraries, or enable special program "
+"modes that are primarily useful for debugging the behavior of <literal>apt</"
+"literal>. Most of these options are not interesting to a normal user, but a "
+"few may be:"
+msgstr ""
+"Activar opções na secção <literal>Debug::</literal> irá causar o envio de "
+"informação de depuração para o fluxo de erros standard do programa "
+"utilizando as bibliotecas do <literal>apt</literal>, ou activar modos "
+"especiais do programa que são principalmente úteis para depurar o "
+"comportamento do <literal>apt</literal>. A maioria destas opções não têm "
+"interesse para o utilizador normal, mas algumas podem ter:"
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::pkgProblemResolver</literal> enables output about the "
+"decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</"
+"literal>."
+msgstr ""
+"<literal>Debug::pkgProblemResolver</literal> activa mensagens na saída "
+"acerca das decisões tomadas por <literal>dist-upgrade, upgrade, install, "
+"remove, purge</literal>."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::NoLocking</literal> disables all file locking. This can be "
+"used to run some operations (for instance, <literal>apt-get -s install</"
+"literal>) as a non-root user."
+msgstr ""
+"<literal>Debug::NoLocking</literal> desactiva o bloqueio de todos os "
+"ficheiros. Isto pode ser usado para executar algumas operações (por exemplo, "
+"<literal>apt-get -s install</literal>) como um utilizador não root."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each "
+"time that <literal>apt</literal> invokes &dpkg;."
+msgstr ""
+"<literal>Debug::pkgDPkgPM</literal> escreve a linha de comandos actual de "
+"cada vez que o <literal>apt</literal> invoca o &dpkg;."
+
+#. TODO: provide a
+#. motivating example, except I haven't a clue why you'd want
+#. to do this.
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
+"in CD-ROM IDs."
+msgstr ""
+"<literal>Debug::IdentCdrom</literal> desactiva a inclusão de dados statfs em "
+"IDs de CD-ROM."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid "A full list of debugging options to apt follows."
+msgstr "Segue-se uma lista completa de opções de depuração para o apt."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information related to accessing <literal>cdrom://</literal> sources."
+msgstr ""
+"Escreve informação relacionada com o acesso a fontes de <literal>cdrom://</"
+"literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using FTP."
+msgstr ""
+"Escreve informação relacionada com o descarregamento de pacotes usando FTP."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using HTTP."
+msgstr ""
+"Escreve informação relacionada com o descarregamento de pacotes usando HTTP."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using HTTPS."
+msgstr ""
+"Escreve informação relacionada com o descarregamento de pacotes usando HTTPS."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information related to verifying cryptographic signatures using "
+"<literal>gpg</literal>."
+msgstr ""
+"Escreve informação relacionada com a verificação de assinaturas "
+"criptográficas usando <literal>gpg</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information about the process of accessing collections of packages "
+"stored on CD-ROMs."
+msgstr ""
+"Escreve informação acerca do processo de aceder a colecções de pacotes "
+"armazenados em CD-ROMs."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Describes the process of resolving build-dependencies in &apt-get;."
+msgstr ""
+"Descreve os processos de resolver dependências de compilação no &apt-get;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output each cryptographic hash that is generated by the <literal>apt</"
+"literal> libraries."
+msgstr ""
+"Escreve cada hash criptográfico que é gerado pelas bibliotecas do "
+"<literal>apt</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Do not include information from <literal>statfs</literal>, namely the number "
+"of used and free blocks on the CD-ROM filesystem, when generating an ID for "
+"a CD-ROM."
+msgstr ""
+"Não inclui informação de <literal>statfs</literal>, nomeadamente o número de "
+"blocos usados e livres no sistema de ficheiros do CD-ROM, quando gera um ID "
+"para um CD-ROM."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Disable all file locking. For instance, this will allow two instances of "
+"<quote><literal>apt-get update</literal></quote> to run at the same time."
+msgstr ""
+"Desactiva o bloqueio de todos os ficheiros. Por exemplo, isto irá permitir o "
+"funcionamento de duas instâncias do <quote><literal>apt-get update</"
+"literal></quote> ao mesmo tempo."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Log when items are added to or removed from the global download queue."
+msgstr ""
+"Regista no log quando os items são adicionados ou removidos da fila de "
+"download global."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output status messages and errors related to verifying checksums and "
+"cryptographic signatures of downloaded files."
+msgstr ""
+"Escreve mensagens de estado e erros relacionados com a verificação de "
+"checksums e assinaturas criptográficas dos ficheiros descarregados."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information about downloading and applying package index list diffs, "
+"and errors relating to package index list diffs."
+msgstr ""
+"Escreve informação acerca do download e aplicação de diffs de lista de "
+"índice do pacote, e erros relacionados com as diffs de lista de índice do "
+"pacote."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information related to patching apt package lists when downloading "
+"index diffs instead of full indices."
+msgstr ""
+"Escreve informação relacionada com a aplicação de patch na lista de pacotes "
+"do apt quando se descarrega diffs de índice em vez de índices completos."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Log all interactions with the sub-processes that actually perform downloads."
+msgstr ""
+"Regista todas as interacções com os sub-processos que realmente executam os "
+"downloads."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Log events related to the automatically-installed status of packages and to "
+"the removal of unused packages."
+msgstr ""
+"Regista no log eventos relacionados com o estado instalado-automaticamente "
+"de pacotes e com a remoção de pacotes não utilizados."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate debug messages describing which packages are being automatically "
+"installed to resolve dependencies. This corresponds to the initial auto-"
+"install pass performed in, e.g., <literal>apt-get install</literal>, and not "
+"to the full <literal>apt</literal> dependency resolver; see <literal>Debug::"
+"pkgProblemResolver</literal> for that."
+msgstr ""
+"Gera mensagens de depuração descrevendo quais pacotes estão a ser instalados "
+"automaticamente para resolver dependências. Isto corresponde ao passo de "
+"instalação-automática inicial executado em, ex, <literal>apt-get install</"
+"literal>, e não ao resolvedor de dependências total do <literal>apt</"
+"literal>; veja <literal>Debug::pkgProblemResolver</literal> para isso."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate debug messages describing which packages are marked as keep/install/"
+"remove while the ProblemResolver does his work. Each addition or deletion "
+"may trigger additional actions; they are shown indented two additional "
+"spaces under the original entry. The format for each line is "
+"<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c -"
+"&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> is "
+"the current version of the package, <literal>d.e.f</literal> is the version "
+"considered for installation and <literal>x.y.z</literal> is a newer version, "
+"but not considered for installation (because of a low pin score). The later "
+"two can be omitted if there is none or if it is the same as the installed "
+"version. <literal>section</literal> is the name of the section the package "
+"appears in."
+msgstr ""
+"Gera mensagens de depuração descrevendo qual pacote está marcado como manter/"
+"instalar/remover enquanto o \"solucionador-de-problemas\" faz o seu "
+"trabalho. Cada adição ou remoção pode activar acções adicionais; elas são "
+"mostradas indentadas dois espaços adicionais sob da entrada original. O "
+"formato de cada linha é <literal>MarkKeep</literal>, <literal>MarkDelete</"
+"literal> ou <literal>MarkInstall</literal> seguido por <literal>package-name "
+"&lt;a.b.c -&gt; d.e.f | x.y.z&gt; (secção)</literal> onde <literal>a.b.c</"
+"literal> é a versão actual do pacote, <literal>d.e.f</literal> é a versão "
+"considerada para instalação e <literal>x.y.z</literal> é a versão mais "
+"recente, mas não considerada para instalação (devido a baixa pontuação). Os "
+"dois últimos podem ser omitidos se não existir nenhum ou for a mesma versão "
+"que aquela instalada. <literal>section</literal> é o nome da secção onde o "
+"pacote aparece."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"When invoking &dpkg;, output the precise command line with which it is being "
+"invoked, with arguments separated by a single space character."
+msgstr ""
+"Ao invocar o &dpkg;, escreve com precisão a linha de comandos com a qual "
+"está a ser invocado, com argumentos separados por um caractere de espaço "
+"único."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output all the data received from &dpkg; on the status file descriptor and "
+"any errors encountered while parsing it."
+msgstr ""
+"Escreve todos os dados recebidos do &dpkg; no descritor de ficheiro de "
+"estado e quaisquer erros encontrados enquanto os analisa."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate a trace of the algorithm that decides the order in which "
+"<literal>apt</literal> should pass packages to &dpkg;."
+msgstr ""
+"Gera um rastro do algoritmo que decide a ordem na qual o <literal>apt</"
+"literal> deve passar os pacotes ao &dpkg;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output status messages tracing the steps performed when invoking &dpkg;."
+msgstr ""
+"Escreve mensagens de estado seguindo os passos executados quando invoca o "
+"&dpkg;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Output the priority of each package list on startup."
+msgstr "Escreve a prioridade da cada lista de pacote no arranque."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Trace the execution of the dependency resolver (this applies only to what "
+"happens when a complex dependency problem is encountered)."
+msgstr ""
+"Rastreia a execução do resolvedor de dependências (isto só se aplica ao que "
+"acontece quando é encontrado um problema de dependências complexo)."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Display a list of all installed packages with their calculated score used by "
+"the pkgProblemResolver. The description of the package is the same as "
+"described in <literal>Debug::pkgDepCache::Marker</literal>"
+msgstr ""
+"Mostra uma lista de todos os pacotes instalados com as suas pontuações "
+"calculadas usadas pelo pkgProblemResolver. A descrição do do pacote é a "
+"mesma que é descrita em <literal>Debug::pkgDepCache::Marker</literal>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information about the vendors read from <filename>/etc/apt/vendors."
+"list</filename>."
+msgstr ""
+"Escreve informação acerca dos fornecedores lida de <filename>/etc/apt/"
+"vendors.list</filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Display the external commands that are called by apt hooks. This includes e."
+"g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"<literal>APT::Update::{Pre,Post}-Invoke</literal>."
+msgstr ""
+"Mostra os comandos externos que são chamados por hooks do apt. Isto inclui "
+"por exemplo as opções de configuração <literal>DPkg::{Pre,Post}-Invoke</"
+"literal> ou <literal>APT::Update::{Pre,Post}-Invoke</literal>."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml apt-ftparchive.1.xml
+msgid "Examples"
+msgstr "Exemplos"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"&configureindex; is a configuration file showing example values for all "
+"possible options."
+msgstr ""
+"&configureindex; é um ficheiro de configuração que mostra valores exemplo "
+"para todas as opções possíveis."
+
+#. ? reading apt.conf
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid "&apt-cache;, &apt-config;, &apt-preferences;."
+msgstr "&apt-cache;, &apt-config;, &apt-preferences;."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt_preferences.5.xml
+msgid "Preference control file for APT"
+msgstr "Ficheiro de controle de preferências para o APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"The APT preferences file <filename>/etc/apt/preferences</filename> and the "
+"fragment files in the <filename>/etc/apt/preferences.d/</filename> folder "
+"can be used to control which versions of packages will be selected for "
+"installation."
+msgstr ""
+"O ficheiro de preferências do APT <filename>/etc/apt/preferences</filename> "
+"e os ficheiros fragmentados no directório <filename>/etc/apt/preferences.d/</"
+"filename> podem ser usados para controlar quais as versões de pacotes irão "
+"ser seleccionadas para instalação."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Several versions of a package may be available for installation when the "
+"&sources-list; file contains references to more than one distribution (for "
+"example, <literal>stable</literal> and <literal>testing</literal>). APT "
+"assigns a priority to each version that is available. Subject to dependency "
+"constraints, <command>apt-get</command> selects the version with the highest "
+"priority for installation. The APT preferences override the priorities that "
+"APT assigns to package versions by default, thus giving the user control "
+"over which one is selected for installation."
+msgstr ""
+"Várias versões de um pacote podem estar disponíveis para instalação quando o "
+"ficheiro &sources-list; contém referências a mais do que uma distribuição "
+"(por exemplo, <literal>stable</literal> e <literal>testing</literal>). O APT "
+"atribui uma prioridade a cada versão que está disponível. Sujeito a "
+"constrangimentos de dependências, o <command>apt-get</command> selecciona a "
+"versão com a prioridade mais alta para instalação. As preferências do APT "
+"sobrepõem as prioridades que o APT atribui às versões de pacotes por "
+"predefinição, assim dando controle ao utilizador sobre qual é seleccionado "
+"para instalação."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Several instances of the same version of a package may be available when the "
+"&sources-list; file contains references to more than one source. In this "
+"case <command>apt-get</command> downloads the instance listed earliest in "
+"the &sources-list; file. The APT preferences do not affect the choice of "
+"instance, only the choice of version."
+msgstr ""
+"Podem estar disponíveis várias instâncias da mesma versão de um pacote "
+"quando o ficheiro &sources-list; contém referências a mais do que uma fonte. "
+"Neste caso o <command>apt-get</command> descarrega a instância listada mais "
+"cedo no ficheiro &sources-list;. As preferências do APT não afectam a "
+"escolha da instância, apenas a escolha da versão."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Preferences are a strong power in the hands of a system administrator but "
+"they can become also their biggest nightmare if used without care! APT will "
+"not question the preferences, so wrong settings can lead to uninstallable "
+"packages or wrong decisions while upgrading packages. Even more problems "
+"will arise if multiple distribution releases are mixed without a good "
+"understanding of the following paragraphs. Packages included in a specific "
+"release aren't tested in (and therefore don't always work as expected in) "
+"older or newer releases, or together with other packages from different "
+"releases. You have been warned."
+msgstr ""
+"As preferências são um poder forte nas mãos de um administrador de sistemas "
+"mas também se podem tornar no seu maior pesadelo se forem usadas sem "
+"cuidado! O APT não irá questionar as preferências, portanto as definições "
+"erradas irão acabar em pacotes não instaláveis ou decisões erradas ao "
+"actualizar pacotes. Irão surgir ainda mais problemas se forem misturadas "
+"múltiplas distribuições sem o perfeito entendimento dos parágrafos "
+"seguintes. Os pacotes incluídos num lançamento específico não são testados e "
+"por isso nem sempre funcionam como esperado nos lançamentos mais antigos ou "
+"recentes ou em conjunto com outros pacotes de lançamentos diferentes. Você "
+"foi avisado."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Note that the files in the <filename>/etc/apt/preferences.d</filename> "
+"directory are parsed in alphanumeric ascending order and need to obey the "
+"following naming convention: The files have either no or \"<literal>pref</"
+"literal>\" as filename extension and only contain alphanumeric, hyphen (-), "
+"underscore (_) and period (.) characters. Otherwise APT will print a notice "
+"that it has ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
+msgstr ""
+"Note que os ficheiros no directório <filename>/etc/apt/preferences.d</"
+"filename> são analisados em ordem alfanumérica ascendente e precisam "
+"obedecer à convenção de nomes seguinte: Os ficheiros ou não têm extensão ou "
+"têm \"<literal>pref</literal>\" na extensão do nome de ficheiro e apenas "
+"contêm caracteres alfanuméricos, traço (-), underscore (_) e ponto (.). Caso "
+"contrário o APT irá escrever um aviso de que ignorou um ficheiro, a menos "
+"que esse ficheiro corresponda a um padrão da lista de configuração "
+"<literal>Dir::Ignore-Files-Silently</literal> - e neste caso será ignorado "
+"em silêncio."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "APT's Default Priority Assignments"
+msgstr "Atribuições de Prioridade Predefinidas do APT"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "<command>apt-get install -t testing <replaceable>some-package</replaceable></command>\n"
+msgstr "<command>apt-get install -t testing <replaceable>algum-pacote</replaceable></command>\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "APT::Default-Release \"stable\";\n"
+msgstr "APT::Default-Release \"stable\";\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If there is no preferences file or if there is no entry in the file that "
+"applies to a particular version then the priority assigned to that version "
+"is the priority of the distribution to which that version belongs. It is "
+"possible to single out a distribution, \"the target release\", which "
+"receives a higher priority than other distributions do by default. The "
+"target release can be set on the <command>apt-get</command> command line or "
+"in the APT configuration file <filename>/etc/apt/apt.conf</filename>. Note "
+"that this has precedence over any general priority you set in the <filename>/"
+"etc/apt/preferences</filename> file described later, but not over "
+"specifically pinned packages. For example, <placeholder type="
+"\"programlisting\" id=\"0\"/> <placeholder type=\"programlisting\" id=\"1\"/>"
+msgstr ""
+"Senão existir um ficheiro de preferências ou se não existe uma entrada no "
+"ficheiro que se aplique a uma versão particular então a prioridade atribuída "
+"a essa versão é a prioridade da distribuição à qual essa versão pertence. É "
+"possível definir uma distribuição singular, \"o lançamento de destino\", a "
+"qual recebe uma prioridade mais alta que as outras distribuições por "
+"predefinição. O lançamento de destino pode ser definido na linha de comandos "
+"do <command>apt-get</command> ou no ficheiro de configuração do APT "
+"<filename>/etc/apt/apt.conf</filename>. Note que isto tem precedências sobre "
+"qualquer prioridade geral que possa definir no ficheiro <filename>/etc/apt/"
+"preferences</filename> descrito mais tarde, mas não sobre pacotes "
+"especificamente imobilizados. Por exemplo, <placeholder type=\"programlisting"
+"\" id=\"0\"/> <placeholder type=\"programlisting\" id=\"1\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If the target release has been specified then APT uses the following "
+"algorithm to set the priorities of the versions of a package. Assign:"
+msgstr ""
+"Se o lançamento destinado foi especificado, então o APT usa o seguinte "
+"algoritmo para definir as prioridades das versões de um pacote. Atribuir:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 1"
+msgstr "priority 1"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"to the versions coming from archives which in their <filename>Release</"
+"filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</"
+"emphasis> as \"ButAutomaticUpgrades: yes\" like the Debian "
+"<literal>experimental</literal> archive."
+msgstr ""
+"para as versões vindas de arquivos cujos ficheiros <filename>Release</"
+"filename> estejam marcados como \"NotAutomatic: yes\" mas <emphasis>não</"
+"emphasis> como \"ButAutomaticUpgrades: yes\" como o arquivo "
+"<literal>experimental</literal> da Debian."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 100"
+msgstr "priority 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"to the version that is already installed (if any) and to the versions coming "
+"from archives which in their <filename>Release</filename> files are marked "
+"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the Debian "
+"backports archive since <literal>squeeze-backports</literal>."
+msgstr ""
+"para a versão que já está instalada (se alguma) e para as versões vindas de "
+"arquivos cujos ficheiros <filename>Release</filename> estejam marcados como "
+"\"NotAutomatic: yes\" e \"ButAutomaticUpgrades: yes\" como o arquivo "
+"backports da Debian desde <literal>squeeze-backports</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 500"
+msgstr "priority 500"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+#| msgid ""
+#| "to the versions that are not installed and belong to the target release."
+msgid "to the versions that do not belong to the target release."
+msgstr ""
+"para as versões que não estão instaladas e pertencem ao lançamento destinado."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "priority 990"
+msgstr "priority 990"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+#| msgid ""
+#| "to the versions that are not installed and belong to the target release."
+msgid "to the versions that belong to the target release."
+msgstr ""
+"para as versões que não estão instaladas e pertencem ao lançamento destinado."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The highest of those priorities whose description matches the version is "
+"assigned to the version."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If the target release has not been specified then APT simply assigns "
+"priority 100 to all installed package versions and priority 500 to all "
+"uninstalled package versions, except versions coming from archives which in "
+"their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" "
+"- these versions get the priority 1 or priority 100 if it is additionally "
+"marked as \"ButAutomaticUpgrades: yes\"."
+msgstr ""
+"Se o lançamento de destino não foi especificado, então o APT simplesmente "
+"atribui prioridade 100 a todas as versões de pacotes instalados e prioridade "
+"500 e todas as versões de pacotes não instalados, à excepção de versões que "
+"venham de arquivos cujos ficheiros <filename>Release</filename> estejam "
+"marcados como \"NotAutomatic: yes\" - estas versões ficam com prioridade 1 "
+"ou prioridade 100 se for marcado adicionalmente como \"ButAutomaticUpgrades: "
+"yes\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"APT then applies the following rules, listed in order of precedence, to "
+"determine which version of a package to install."
+msgstr ""
+"O APT então aplica as seguintes regras, listadas em ordem de precedência, "
+"para determinar qual versão de um pacote deve instalar."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"Never downgrade unless the priority of an available version exceeds 1000. "
+"(\"Downgrading\" is installing a less recent version of a package in place "
+"of a more recent version. Note that none of APT's default priorities "
+"exceeds 1000; such high priorities can only be set in the preferences file. "
+"Note also that downgrading a package can be risky.)"
+msgstr ""
+"Nunca faz downgrade a menos que uma versão disponível exceda 1000. "
+"(\"Downgrading\" é instalar uma versão menos recente de um pacote no lugar "
+"de uma versão mais recente. Note que nenhuma das prioridades predefinidas do "
+"APT excede 1000; tais altas prioridades só podem ser definidas no ficheiro "
+"de preferências. Note também que fazer o downgrade a um pacote pode ser "
+"arriscado.)"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "Install the highest priority version."
+msgstr "Instala a versão de prioridade mais alta."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"If two or more versions have the same priority, install the most recent one "
+"(that is, the one with the higher version number)."
+msgstr ""
+"Se duas ou mais versões tiverem a mesma prioridade, instala a mais recente "
+"(isto é, aquela com o número de versão mais alto)."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"If two or more versions have the same priority and version number but either "
+"the packages differ in some of their metadata or the <literal>--reinstall</"
+"literal> option is given, install the uninstalled one."
+msgstr ""
+"Se duas ou mais versões têm a mesma prioridade e o mesmo número de versão "
+"mas ou os pacotes diferem em alguns dos seus metadados ou a opção <literal>--"
+"reinstall</literal> é fornecida, instala a que foi desinstalada."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"In a typical situation, the installed version of a package (priority 100) "
+"is not as recent as one of the versions available from the sources listed in "
+"the &sources-list; file (priority 500 or 990). Then the package will be "
+"upgraded when <command>apt-get install <replaceable>some-package</"
+"replaceable></command> or <command>apt-get upgrade</command> is executed."
+msgstr ""
+"Numa situação típica, a versão instalada de um pacote (prioridade 100) não é "
+"tão recente como uma das versões disponíveis nas fontes listadas no ficheiro "
+"&sources-list; (prioridade 500 ou 990). Então o pacote será actualizado "
+"quando for executado <command>apt-get install <replaceable>algum-pacote</"
+"replaceable></command> ou <command>apt-get upgrade</command>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"More rarely, the installed version of a package is <emphasis>more</emphasis> "
+"recent than any of the other available versions. The package will not be "
+"downgraded when <command>apt-get install <replaceable>some-package</"
+"replaceable></command> or <command>apt-get upgrade</command> is executed."
+msgstr ""
+"Mais raramente, a versão instalada de um pacote é <emphasis>mais</emphasis> "
+"recente que qualquer das outras versões disponíveis. O pacote não será "
+"regredido para uma versão inferior quando for executado <command>apt-get "
+"install <replaceable>algum-pacote</replaceable></command> ou <command>apt-"
+"get upgrade</command>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Sometimes the installed version of a package is more recent than the version "
+"belonging to the target release, but not as recent as a version belonging to "
+"some other distribution. Such a package will indeed be upgraded when "
+"<command>apt-get install <replaceable>some-package</replaceable></command> "
+"or <command>apt-get upgrade</command> is executed, because at least "
+"<emphasis>one</emphasis> of the available versions has a higher priority "
+"than the installed version."
+msgstr ""
+"Por vezes a versão instalada de um pacote é mais recente que a versão "
+"pertencente ao lançamento de destino, mas não tão recente que uma versão "
+"pertencente a alguma outra distribuição. Tal pacote será de facto "
+"actualizado quando for executado <command>apt-get install <replaceable>algum-"
+"pacote</replaceable></command> ou <command>apt-get upgrade</command>, porque "
+"pelo menos <emphasis>uma</emphasis> das versões disponíveis tem uma "
+"prioridade mais alta que a versão instalada."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "The Effect of APT Preferences"
+msgstr "O Efeito das Preferências do APT"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The APT preferences file allows the system administrator to control the "
+"assignment of priorities. The file consists of one or more multi-line "
+"records separated by blank lines. Records can have one of two forms, a "
+"specific form and a general form."
+msgstr ""
+"O ficheiro de preferências do APT permite ao administrador do sistema "
+"controlar a atribuição de prioridades. O ficheiro consiste em um ou mais "
+"registos de multi-linhas separados por linhas vazias. Os registos podem ter "
+"um ou dois formatos, um formato específico e um formato geral."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The specific form assigns a priority (a \"Pin-Priority\") to one or more "
+"specified packages with a specified version or version range. For example, "
+"the following record assigns a high priority to all versions of the "
+"<filename>perl</filename> package whose version number begins with "
+"\"<literal>&good-perl;</literal>\". Multiple packages can be separated by "
+"spaces."
+msgstr ""
+"O formato específico atribui um prioridade (um \"Pin-Priority\") a um ou "
+"mais pacotes específicos e versão específica ou série de versões. Por "
+"exemplo, o seguinte registo atribui uma alta prioridade a todas as versões "
+"do pacote <filename>perl</filename> cujo número de versão começa com "
+"\"<literal>&good-perl;</literal>\". Múltiplos pacotes podem ser separados "
+"por espaços."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The general form assigns a priority to all of the package versions in a "
+"given distribution (that is, to all the versions of packages that are listed "
+"in a certain <filename>Release</filename> file) or to all of the package "
+"versions coming from a particular Internet site, as identified by the site's "
+"fully qualified domain name."
+msgstr ""
+"O formato geral atribui uma prioridade a todas as versões de pacotes numa "
+"dada distribuição (isto é, a todas as versões de pacotes que estão listados "
+"num certo ficheiro <filename>Release</filename>) ou a todas as versões de "
+"pacotes vindos de um site de Internet particular, como identificado pelo "
+"nome de domínio totalmente qualificado do site."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"This general-form entry in the APT preferences file applies only to groups "
+"of packages. For example, the following record assigns a high priority to "
+"all package versions available from the local site."
+msgstr ""
+"Esta entrada general-form no ficheiro de preferências do APT aplica-se "
+"apenas a grupos de pacotes. Por exemplo, o seguinte registo atribui uma alta "
+"prioridade a todas as versões de pacotes disponíveis a partir de um site "
+"local."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A note of caution: the keyword used here is \"<literal>origin</literal>\" "
+"which can be used to match a hostname. The following record will assign a "
+"high priority to all versions available from the server identified by the "
+"hostname \"ftp.de.debian.org\""
+msgstr ""
+"Uma nota de atenção: a palavra chave usada aqui é \"<literal>origin</literal>"
+"\" que pode ser usada para corresponder a um nome de máquina. O seguinte "
+"registo irá atribuir uma alta prioridade a todas as versões disponíveis do "
+"servidor identificadas pelo nome de máquina \"ftp.de.debian.org\""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"This should <emphasis>not</emphasis> be confused with the Origin of a "
+"distribution as specified in a <filename>Release</filename> file. What "
+"follows the \"Origin:\" tag in a <filename>Release</filename> file is not an "
+"Internet address but an author or vendor name, such as \"Debian\" or \"Ximian"
+"\"."
+msgstr ""
+"Isto <emphasis>não</emphasis> deve ser confundido com a Origem de uma "
+"distribuição como especificada num ficheiro <filename>Release</filename>. O "
+"que representa a etiqueta \"Origin:\" num ficheiro <filename>Release</"
+"filename> não é um endereço de Internet mas um nome de autor ou marca, tal "
+"como \"Debian\" ou \"Ximian\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a low priority to all package versions "
+"belonging to any distribution whose Archive name is \"<literal>unstable</"
+"literal>\"."
+msgstr ""
+"O seguinte registo atribui uma baixa prioridade a todas as versões de "
+"pacotes pertencentes a qualquer distribuição cujo nome de Arquivo é "
+"\"<literal>unstable</literal>\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any distribution whose Codename is \"<literal>&debian-testing-"
+"codename;</literal>\"."
+msgstr ""
+"O seguinte registo atribui uma alta prioridade a todas as versões de pacotes "
+"pertencentes a qualquer distribuição cujo nome de código é "
+"\"<literal>&debian-testing-codename;</literal>\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+msgstr ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any release whose Archive name is \"<literal>stable</literal>\" "
+"and whose release Version number is \"<literal>&debian-stable-version;</"
+"literal>\"."
+msgstr ""
+"O seguinte registo atribui alta prioridade a todas as versões de pacotes "
+"pertencentes a qualquer lançamento cujo nome de Arquivo é \"<literal>stable</"
+"literal>\" e cujo número de Versão de lançamento é \"<literal>&debian-stable-"
+"version;</literal>\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The effect of the comma operator is similar to an \"and\" in logic: All "
+"conditions must be satisfied for the pin to match. There is one exception: "
+"For any type of condition (such as two \"a\" conditions), only the last such "
+"condition is checked."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Regular expressions and &glob; syntax"
+msgstr "Expressões regulares e sintaxe &glob;"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"APT also supports pinning by &glob; expressions, and regular expressions "
+"surrounded by slashes. For example, the following example assigns the "
+"priority 500 to all packages from experimental where the name starts with "
+"gnome (as a &glob;-like expression) or contains the word kde (as a POSIX "
+"extended regular expression surrounded by slashes)."
+msgstr ""
+"O APT também suporta \"pinning\" por expressões &glob;, e expressões "
+"regulares rodeadas por barras. Por exemplo, o seguinte designa a prioridade "
+"de 500 a todos os pacotes de experimental onde o nome começa com gnome (como "
+"uma expressão tipo &glob;) ou contém a palavra kde (como uma expressão "
+"regular extensa do POSIX rodeada de barras)."
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+msgstr ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The rule for those expressions is that they can occur anywhere where a "
+"string can occur. Thus, the following pin assigns the priority 990 to all "
+"packages from a release starting with &ubuntu-codename;."
+msgstr ""
+"A regra para essas expressões é que elas podem ocorrer em qualquer sítio "
+"onde uma string pode ocorrer. Assim, o seguinte pin designa a prioridade 990 "
+"a todos os pacotes de um lançamento que começa com &ubuntu-codename;."
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+msgstr ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If a regular expression occurs in a <literal>Package</literal> field, the "
+"behavior is the same as if this regular expression were replaced with a list "
+"of all package names it matches. It is undecided whether this will change in "
+"the future; thus you should always list wild-card pins first, so later "
+"specific pins override it. The pattern \"<literal>*</literal>\" in a "
+"Package field is not considered a &glob; expression in itself."
+msgstr ""
+"Se ocorrer uma expressão regular num campo <literal>Package</literal>, o "
+"comportamento é o mesmo como se esta expressão regular fosse substituída por "
+"uma lista de todos os nomes de pacotes a que ela coincide. No entanto não "
+"está decidido se isto irá mudar no futuro; assim você deve sempre listar os "
+"pins \"wild-card\" primeiro, para que depois os pins específicos os "
+"sobreporem. O padrão \"<literal>*</literal>\" num campo Package não é "
+"considerado uma expressão &glob; em si próprio."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "How APT Interprets Priorities"
+msgstr "Como o APT Interpreta as Prioridades"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Priorities (P) assigned in the APT preferences file must be positive or "
+"negative integers. They are interpreted as follows (roughly speaking):"
+msgstr ""
+"As prioridades (P) atribuídas no ficheiro de preferências do APT têm de ser "
+"inteiros positivos ou negativos. Elas são interpretadas como o seguinte "
+"(falando grosso):"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P &gt;= 1000"
+msgstr "P &gt;= 1000"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed even if this constitutes a downgrade of the "
+"package"
+msgstr ""
+"provoca que uma versão seja instalada mesmo que isso constitua uma redução "
+"na versão do pacote (downgrade)"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "990 &lt;= P &lt; 1000"
+msgstr "990 &lt;= P &lt; 1000"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed even if it does not come from the target "
+"release, unless the installed version is more recent"
+msgstr ""
+"provoca que uma versão seja instalada mesmo que não venha do lançamento de "
+"destino, a menos que a versão instalada seja mais recente"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "500 &lt;= P &lt; 990"
+msgstr "500 &lt;= P &lt; 990"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to the target release or the installed version is more recent"
+msgstr ""
+"provoca que uma versão seja instalada a menos que exista uma versão "
+"disponível pertencente ao lançamento de destino ou se a versão instalada é "
+"mais recente"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "100 &lt;= P &lt; 500"
+msgstr "100 &lt;= P &lt; 500"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to some other distribution or the installed version is more recent"
+msgstr ""
+"provoca que uma versão seja instalada a menos que exista uma versão "
+"disponível pertencente a outra distribuição ou se a versão instalada é mais "
+"recente"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "0 &lt; P &lt; 100"
+msgstr "0 &lt; P &lt; 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"causes a version to be installed only if there is no installed version of "
+"the package"
+msgstr ""
+"provoca que uma versão seja instalada apenas se não existir nenhuma versão "
+"instalada do pacote"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P &lt; 0"
+msgstr "P &lt; 0"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "prevents the version from being installed"
+msgstr "previne a instalação da versão"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P = 0"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "has undefined behaviour, do not use it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+#| msgid ""
+#| "If any specific-form records match an available package version then the "
+#| "first such record determines the priority of the package version. "
+#| "Failing that, if any general-form records match an available package "
+#| "version then the first such record determines the priority of the package "
+#| "version."
+msgid ""
+"The first specific-form record matching an available package version "
+"determines the priority of the package version. Failing that, the priority "
+"of the package is defined as the maximum of all priorities defined by "
+"generic-form records matching the version. Records defined using patterns "
+"in the Pin field other than \"*\" are treated like specific-form records."
+msgstr ""
+"Se quaisquer registos de formato específico corresponder a uma versão de "
+"pacote disponível então o primeiro tal registo determina a prioridade da "
+"versão do pacote. Falhando isso, se quaisquer registos em formato geral "
+"corresponder a uma versão de pacote disponível então o primeiro tal registo "
+"determina a prioridade da versão de pacote."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"For example, suppose the APT preferences file contains the three records "
+"presented earlier:"
+msgstr ""
+"Por exemplo, suponha que o ficheiro de preferências do APT contém os três "
+"registos apresentados atrás:"
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid "Then:"
+msgstr "Então:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"The most recent available version of the <literal>perl</literal> package "
+"will be installed, so long as that version's version number begins with "
+"\"<literal>&good-perl;</literal>\". If <emphasis>any</emphasis> &good-perl;"
+"* version of <literal>perl</literal> is available and the installed version "
+"is &bad-perl;*, then <literal>perl</literal> will be downgraded."
+msgstr ""
+"Será instalada a versão mais recente disponível do pacote <literal>perl</"
+"literal>, desde que o número da versão comece com \"<literal>&good-perl;</"
+"literal>\". Se <emphasis>qualquer</emphasis> versão &good-perl;* do "
+"<literal>perl</literal> estiver disponível e a versão instalada for &bad-"
+"perl;*, então será feito um downgrade ao <literal>perl</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A version of any package other than <literal>perl</literal> that is "
+"available from the local system has priority over other versions, even "
+"versions belonging to the target release."
+msgstr ""
+"Uma versão de qualquer pacote que não seja o <literal>perl</literal> e que "
+"esteja disponível a partir do sistema local tem prioridade sobre outras "
+"versões, mesmo versões que pertencem ao lançamento de destino."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A version of a package whose origin is not the local system but some other "
+"site listed in &sources-list; and which belongs to an <literal>unstable</"
+"literal> distribution is only installed if it is selected for installation "
+"and no version of the package is already installed."
+msgstr ""
+"Uma versão de um pacote cuja origem não é o sistema local mas qualquer outro "
+"site listado em &sources-list; e o qual pertence a uma distribuição "
+"<literal>unstable</literal> apenas é instalado se for seleccionado para "
+"instalação e se nenhuma versão do pacote já estiver instalada."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Determination of Package Version and Distribution Properties"
+msgstr "Determinação da Versão do Pacote e Propriedades da Distribuição"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The locations listed in the &sources-list; file should provide "
+"<filename>Packages</filename> and <filename>Release</filename> files to "
+"describe the packages available at that location."
+msgstr ""
+"As localizações listadas no ficheiro &sources-list; devem fornecer os "
+"ficheiros <filename>Packages</filename> e <filename>Release</filename> para "
+"descrever os pacotes disponíveis nessa localização."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The <filename>Packages</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable>/"
+"<replaceable>component</replaceable>/<replaceable>arch</replaceable></"
+"filename>: for example, <filename>.../dists/stable/main/binary-i386/"
+"Packages</filename>. It consists of a series of multi-line records, one for "
+"each package available in that directory. Only two lines in each record are "
+"relevant for setting APT priorities:"
+msgstr ""
+"O ficheiro <filename>Packages</filename> é normalmente encontrado no "
+"directório <filename>.../dists/<replaceable>nome-da-distribuição</"
+"replaceable>/<replaceable>componente</replaceable>/"
+"<replaceable>arquitectura</replaceable></filename>: por exemplo, "
+"<filename>.../dists/stable/main/binary-i386/Packages</filename>. Consiste "
+"numa série de registos de várias linhas, um para cada pacote disponível "
+"nesse directório. Apenas duas linhas em cada registo são relevantes para "
+"definir prioridades do APT:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Package:</literal> line"
+msgstr "a linha <literal>Package:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "gives the package name"
+msgstr "fornece o nome do pacote"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Version:</literal> line"
+msgstr "a linha <literal>Version:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "gives the version number for the named package"
+msgstr "fornece o número de versão do pacote nomeado"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The <filename>Release</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable></filename>: for "
+"example, <filename>.../dists/stable/Release</filename>, or <filename>.../"
+"dists/&debian-stable-codename;/Release</filename>. It consists of a single "
+"multi-line record which applies to <emphasis>all</emphasis> of the packages "
+"in the directory tree below its parent. Unlike the <filename>Packages</"
+"filename> file, nearly all of the lines in a <filename>Release</filename> "
+"file are relevant for setting APT priorities:"
+msgstr ""
+"O ficheiro <filename>Release</filename> fica normalmente no directório "
+"<filename>.../dists/<replaceable>nome da distribuição</replaceable></"
+"filename>: por exemplo, <filename>.../dists/stable/Release</filename>, ou "
+"<filename>.../dists/&debian-stable-codename;/Release</filename>. Consiste "
+"num único registo de várias linhas que se aplica a <emphasis>todos</"
+"emphasis> os pacotes na árvore de directórios sob o seu pai. Ao contrário do "
+"ficheiro <filename>Packages</filename>, quase todas as linhas num ficheiro "
+"<filename>Release</filename> são relevantes para definir as prioridades do "
+"APT:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line"
+msgstr "a linha <literal>Archive:</literal> ou <literal>Suite:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the archive to which all the packages in the directory tree belong. "
+"For example, the line \"Archive: stable\" or \"Suite: stable\" specifies "
+"that all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file are in a <literal>stable</literal> "
+"archive. Specifying this value in the APT preferences file would require "
+"the line:"
+msgstr ""
+"nomeia o arquivo ao qual pertencem todos os pacotes na árvore de "
+"directórios. Por exemplo, a linha \"Archive: stable\" ou \"Suite: stable\" "
+"especifica que todos os pacotes na árvore de directórios abaixo do pai do "
+"ficheiro <filename>Release</filename> estão num arquivo <literal>stable</"
+"literal>. Especificar este valor no ficheiro de preferências do APT irá "
+"requerer a linha:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release a=stable\n"
+msgstr "Pin: release a=stable\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Codename:</literal> line"
+msgstr "a linha <literal>Codename:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the codename to which all the packages in the directory tree belong. "
+"For example, the line \"Codename: &debian-testing-codename;\" specifies that "
+"all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file belong to a version named <literal>&debian-"
+"testing-codename;</literal>. Specifying this value in the APT preferences "
+"file would require the line:"
+msgstr ""
+"nomeia o nome de código a qual todos os pacotes na árvore de directórios "
+"pertencem. Por exemplo, a linha \"Codename: &debian-testing-codename;\" "
+"especifica que todos os pacotes na árvore de directórios abaixo do pai do "
+"ficheiro <filename>Release</filename> pertencem a uma versão chamada "
+"<literal>&debian-testing-codename;</literal>. Especificar este valor no "
+"ficheiro de preferências do APT requer a linha:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release n=&debian-testing-codename;\n"
+msgstr "Pin: release n=&debian-testing-codename;\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the release version. For example, the packages in the tree might "
+"belong to Debian release version &debian-stable-version;. Note that there "
+"is normally no version number for the <literal>testing</literal> and "
+"<literal>unstable</literal> distributions because they have not been "
+"released yet. Specifying this in the APT preferences file would require one "
+"of the following lines."
+msgstr ""
+"nomeia a versão de lançamento. Por exemplo, os pacotes na árvore podem "
+"pertencer ao lançamento de Debian versão &debian-stable-version;. Note que "
+"não há normalmente um número de versão para as distribuições "
+"<literal>testing</literal> e <literal>unstable</literal>. porque ainda não "
+"foram lançadas. Especificar isto no ficheiro de preferências do APT irá "
+"requerer uma das seguintes linhas:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+msgstr ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Component:</literal> line"
+msgstr "a linha <literal>Component:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the licensing component associated with the packages in the directory "
+"tree of the <filename>Release</filename> file. For example, the line "
+"\"Component: main\" specifies that all the packages in the directory tree "
+"are from the <literal>main</literal> component, which entails that they are "
+"licensed under terms listed in the Debian Free Software Guidelines. "
+"Specifying this component in the APT preferences file would require the line:"
+msgstr ""
+"nomeia o componente de licenciamento associado com os pacotes na árvore de "
+"directórios do ficheiro <filename>Release</filename>. Por exemplo, a linha "
+"\"Component: main\" especifica que todos os pacotes na árvore de directórios "
+"são do componente <literal>main</literal>, o que implica que estão "
+"licenciados sob os termos listados em Debian Free Software Guidelines. "
+"Especificar este componente no ficheiro de preferências do APT irá requerer "
+"a linha:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release c=main\n"
+msgstr "Pin: release c=main\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Origin:</literal> line"
+msgstr "a linha <literal>Origin:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the originator of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is <literal>Debian</"
+"literal>. Specifying this origin in the APT preferences file would require "
+"the line:"
+msgstr ""
+"nomeia a originador dos pacotes na árvore de directórios do ficheiro "
+"<filename>Release</filename>. Geralmente, isto é <literal>Debian</literal>. "
+"Especificar esta etiqueta no ficheiro de preferências do APT irá requerer a "
+"linha:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release o=Debian\n"
+msgstr "Pin: release o=Debian\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "the <literal>Label:</literal> line"
+msgstr "a linha <literal>Label:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"names the label of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is <literal>Debian</"
+"literal>. Specifying this label in the APT preferences file would require "
+"the line:"
+msgstr ""
+"nomeia a etiqueta dos pacotes na árvore de directórios do ficheiro "
+"<filename>Release</filename>. Geralmente, isto é <literal>Debian</literal>. "
+"Especificar esta etiqueta no ficheiro de preferências do APT irá requerer a "
+"linha:"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release l=Debian\n"
+msgstr "Pin: release l=Debian\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"All of the <filename>Packages</filename> and <filename>Release</filename> "
+"files retrieved from locations listed in the &sources-list; file are stored "
+"in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
+"named by the variable <literal>Dir::State::Lists</literal> in the "
+"<filename>apt.conf</filename> file. For example, the file <filename>debian."
+"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
+"contains the <filename>Release</filename> file retrieved from the site "
+"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
+"architecture files from the <literal>contrib</literal> component of the "
+"<literal>unstable</literal> distribution."
+msgstr ""
+"Todos os ficheiros <filename>Packages</filename> e <filename>Release</"
+"filename> obtidos das localizações listadas no ficheiro &sources-list; são "
+"armazenados no directório <filename>/var/lib/apt/lists</filename>, ou no "
+"ficheiro nomeado pela variável <literal>Dir::State::Lists</literal> no "
+"ficheiro <filename>apt.conf</filename>. Por exemplo, o ficheiro "
+"<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-"
+"i386_Release</filename> contém o ficheiro <filename>Release</filename> "
+"obtido do site <literal>debian.lcs.mit.edu</literal> para ficheiros da "
+"arquitectura <literal>binary-i386</literal> do componente <literal>contrib</"
+"literal> da distribuição <literal>unstable</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Optional Lines in an APT Preferences Record"
+msgstr "Linhas Opcionais num Registo de Preferências do APT"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"Each record in the APT preferences file can optionally begin with one or "
+"more lines beginning with the word <literal>Explanation:</literal>. This "
+"provides a place for comments."
+msgstr ""
+"Cada registo no ficheiro de preferências do APT por começar opcionalmente "
+"com uma ou mais linhas começadas com a palavra <literal>Explanation:</"
+"literal>. Isto disponibiliza um espaço para comentários."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking Stable"
+msgstr "Acompanhando Stable"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated\n"
+"Explanation: package versions other than those in the stable distro\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Explicação: Desinstala ou não instala quaisquer versões de pacotes originais\n"
+"Explicação: Debian para além daquelas da distribuição stable\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"<literal>stable</literal> distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> "
+"distributions. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"O seguinte ficheiro de preferências do APT irá fazer com que o APT atribua "
+"uma prioridade mais alta que o predefinido (500) a todos as versões de "
+"pacotes que pertencem a uma distribuição <literal>stable</literal> e uma "
+"prioridade proibitivamente baixa a versões de pacotes pertencentes a outras "
+"distribuições <literal>Debian</literal>. <placeholder type=\"programlisting"
+"\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"apt-get install <replaceable>package-name</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+msgstr ""
+"apt-get install <replaceable>nome-do-pacote</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>stable</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+"Com um ficheiro &sources-list; apropriado e o ficheiro de preferências "
+"acima, qualquer dos seguintes comandos irá fazer com que o APT actualize "
+"para as versões <literal>stable</literal> mais recentes. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/testing\n"
+msgstr "apt-get install <replaceable>pacote</replaceable>/testing\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>testing</literal> distribution; the package "
+"will not be upgraded again unless this command is given again. <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"O seguinte comandos irá fazer com que o APT actualize o pacote especificado "
+"para a versão mais recente da distribuição <literal>testing</literal>; o "
+"pacote não será actualizado de novo a menos que seja executado este comando "
+"outra vez. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking Testing or Unstable"
+msgstr "Acompanhando Testing ou Unstable"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a high priority "
+"to package versions from the <literal>testing</literal> distribution, a "
+"lower priority to package versions from the <literal>unstable</literal> "
+"distribution, and a prohibitively low priority to package versions from "
+"other <literal>Debian</literal> distributions. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+msgstr ""
+"O seguinte ficheiro de preferências do APT irá fazer com que o APT atribua "
+"uma prioridade alta a versões de pacotes da distribuição <literal>testing</"
+"literal>, uma prioridade mais baixa a versões de pacotes da distribuição "
+"<literal>unstable</literal>, e uma prioridade proibitivamente baixa a "
+"versões de pacotes de outras distribuições <literal>Debian</literal>. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>testing</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+"Com um ficheiro &sources-list; apropriado e o ficheiro de preferências "
+"acima, qualquer dos seguintes comandos irá fazer com que o APT actualize "
+"para as versões <literal>testing</literal> mais recentes. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/unstable\n"
+msgstr "apt-get install <replaceable>pacote</replaceable>/unstable\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>unstable</literal> distribution. "
+"Thereafter, <command>apt-get upgrade</command> will upgrade the package to "
+"the most recent <literal>testing</literal> version if that is more recent "
+"than the installed version, otherwise, to the most recent <literal>unstable</"
+"literal> version if that is more recent than the installed version. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"O comando seguinte irá fazer com que o APT actualize o pacote especificado "
+"para a versão mais recente da distribuição <literal>unstable</literal>. "
+"Posteriormente, o <command>apt-get upgrade</command> irá actualizar o pacote "
+"para a versão <literal>testing</literal> mais recente se essa for mais "
+"recente que a versão instalada, caso contrário, para a versão "
+"<literal>unstable</literal> mais recente se essa for mais recente que a "
+"versão instalada. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking the evolution of a codename release"
+msgstr "Acompanhando a evolução de um nome de código de lançamento"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated package versions\n"
+"Explanation: other than those in the distribution codenamed with &debian-testing-codename; or sid\n"
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+"\n"
+"Explanation: Debian unstable is always codenamed with sid\n"
+"Package: *\n"
+"Pin: release n=sid\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Explicação: Desinstala ou não instala nenhumas versões de pacotes originais Debian\n"
+"Explicação: para além daquelas da distribuição com nome de código &debian-testing-codename; ou sid\n"
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+"\n"
+"Explicação: Debian unstable tem sempre o nome de código sid\n"
+"Package: *\n"
+"Pin: release a=sid\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"specified codename of a distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> distributions, "
+"codenames and archives. Note that with this APT preference APT will follow "
+"the migration of a release from the archive <literal>testing</literal> to "
+"<literal>stable</literal> and later <literal>oldstable</literal>. If you "
+"want to follow for example the progress in <literal>testing</literal> "
+"notwithstanding the codename changes you should use the example "
+"configurations above. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"O seguinte ficheiro de preferências do APT irá fazer com que o APT atribua "
+"uma prioridade mais alta que a predefinida (500) a todas as versões de "
+"pacotes pertencentes a um nome de código especificado de uma distribuição "
+"com uma prioridade proibitivamente baixa a versões de pacotes pertencentes a "
+"outras distribuições, nomes de código ou arquivos <literal>Debian</literal>. "
+"Note que com estas preferências o APT irá seguir a migração de um lançamento "
+"a partir do arquivo <literal>testing</literal> para <literal>stable</"
+"literal> e mais tarde <literal>oldstable</literal>. Se você que seguir por "
+"exemplo o progresso em <literal>testing</literal> não obstante as alterações "
+"do nome de código, você deve usar as configurações exemplo acima. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest version(s) in "
+"the release codenamed with <literal>&debian-testing-codename;</literal>. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Com um ficheiro &sources-list; apropriado e o ficheiro de preferências "
+"acima, qualquer dos seguintes comandos fará com que o APT actualize para a "
+"versão mais recente no lançamento com nome de código <literal>&debian-"
+"testing-codename;</literal>. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/sid\n"
+msgstr "apt-get install <replaceable>pacote</replaceable>/sid\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>sid</literal> distribution. Thereafter, "
+"<command>apt-get upgrade</command> will upgrade the package to the most "
+"recent <literal>&debian-testing-codename;</literal> version if that is more "
+"recent than the installed version, otherwise, to the most recent "
+"<literal>sid</literal> version if that is more recent than the installed "
+"version. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"O seguinte comando irá fazer com que o APT actualize o pacote especificado "
+"para a versão mais recente da distribuição <literal>sid</literal>. "
+"Posteriormente, <command>apt-get upgrade</command> irá actualizar o pacote "
+"para a versão <literal>&debian-testing-codename;</literal> mais recente se "
+"essa for mais recente que a versão instalada, caso contrário, para a versão "
+"<literal>sid</literal> mais recente se essa for mais recente que a versão "
+"instalada. <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: sources.list.5.xml
+msgid "List of configured APT data sources"
+msgstr "Lista das fontes de dados APT configuradas"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "The source list <filename>/etc/apt/sources.list</filename> is designed to "
+#| "support any number of active sources and a variety of source media. The "
+#| "file lists one source per line, with the most preferred source listed "
+#| "first. The information available from the configured sources is acquired "
+#| "by <command>apt-get update</command> (or by an equivalent command from "
+#| "another APT front-end)."
+msgid ""
+"The source list <filename>/etc/apt/sources.list</filename> and the files "
+"contained in <filename>/etc/apt/sources.list.d/</filename> are designed to "
+"support any number of active sources and a variety of source media. The "
+"files list one source per line (one-line style) or contain multiline stanzas "
+"defining one or more sources per stanza (deb822 style), with the most "
+"preferred source listed first (in case a single version is available from "
+"more than one source). The information available from the configured sources "
+"is acquired by <command>apt-get update</command> (or by an equivalent "
+"command from another APT front-end)."
+msgstr ""
+"A lista de fontes <filename>/etc/apt/sources.list</filename> está desenhada "
+"a suportar qualquer número de fontes activas e uma variedade de meios de "
+"fontes. O ficheiro lista uma fonte por cada linha, com as fontes mais "
+"preferidas listadas primeiro. A informação disponível a partir das fontes "
+"configuradas é obtida pelo <command>apt-get update</command> (ou por um "
+"comando equivalente de outra interface \"front-end\" do APT)."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "sources.list.d"
+msgstr "sources.list.d"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "The <filename>/etc/apt/sources.list.d</filename> directory provides a way "
+#| "to add sources.list entries in separate files. The format is the same as "
+#| "for the regular <filename>sources.list</filename> file. File names need "
+#| "to end with <filename>.list</filename> and may only contain letters (a-z "
+#| "and A-Z), digits (0-9), underscore (_), hyphen (-) and period (.) "
+#| "characters. Otherwise APT will print a notice that it has ignored a "
+#| "file, unless that file matches a pattern in the <literal>Dir::Ignore-"
+#| "Files-Silently</literal> configuration list - in which case it will be "
+#| "silently ignored."
+msgid ""
+"The <filename>/etc/apt/sources.list.d</filename> directory provides a way to "
+"add sources.list entries in separate files. Two different file formats are "
+"allowed as described in the next two sections. Filenames need to have "
+"either the extension <filename>.list</filename> or <filename>.sources</"
+"filename> depending on the contained format. The filenames may only contain "
+"letters (a-z and A-Z), digits (0-9), underscore (_), hyphen (-) and period "
+"(.) characters. Otherwise APT will print a notice that it has ignored a "
+"file, unless that file matches a pattern in the <literal>Dir::Ignore-Files-"
+"Silently</literal> configuration list - in which case it will be silently "
+"ignored."
+msgstr ""
+"O directório <filename>/etc/apt/sources.list.d</filename> disponibiliza um "
+"modo de adicionar entradas na sources.list em ficheiros separados. O formato "
+"é o mesmo que para o ficheiro <filename>sources.list</filename> regular. Os "
+"nomes de ficheiros precisam acabar com <filename>.list</filename> e apenas "
+"podem conter letras (a-z e A-Z), dígitos (0-9), e os caracteres underscore "
+"(_), menos (-) e ponto (.). De outro modo o APT irá escrever um aviso de que "
+"ignorou um ficheiro, a menos que esse ficheiro coincida com um padrão na "
+"lista de configuração <literal>Dir::Ignore-Files-Silently</literal> - que "
+"neste caso serão ignorados em silêncio."
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "One-Line-Style Format"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Files in this format have the extension <filename>.list</filename>. Each "
+"line specifying a source starts with a type (e.g. <literal>deb-src</"
+"literal>) followed by options and arguments for this type. Individual "
+"entries cannot be continued onto a following line. Empty lines are ignored, "
+"and a <literal>#</literal> character anywhere on a line marks the remainder "
+"of that line as a comment. Consequently an entry can be disabled by "
+"commenting out the entire line. If options should be provided they are "
+"separated by spaces and all of them together are enclosed by square brackets "
+"(<literal>[]</literal>) included in the line after the type separated from "
+"it with a space. If an option allows multiple values these are separated "
+"from each other with a comma (<literal>,</literal>). An option name is "
+"separated from its value(s) by an equals sign (<literal>=</literal>). "
+"Multivalue options also have <literal>-=</literal> and <literal>+=</literal> "
+"as separators, which instead of replacing the default with the given "
+"value(s) modify the default value(s) to remove or include the given values."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This is the traditional format and supported by all apt versions. Note that "
+"not all options as described below are supported by all apt versions. Note "
+"also that some older applications parsing this format on their own might not "
+"expect to encounter options as they were uncommon before the introduction of "
+"multi-architecture support."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "deb822-Style Format"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Files in this format have the extension <filename>.sources</filename>. The "
+"format is similar in syntax to other files used by Debian and its "
+"derivatives, such as the metadata files that apt will download from the "
+"configured sources or the <filename>debian/control</filename> file in a "
+"Debian source package. Individual entries are separated by an empty line; "
+"additional empty lines are ignored, and a <literal>#</literal> character at "
+"the start of the line marks the entire line as a comment. An entry can hence "
+"be disabled by commenting out each line belonging to the stanza, but it is "
+"usually easier to add the field \"Enabled: no\" to the stanza to disable the "
+"entry. Removing the field or setting it to yes reenables it. Options have "
+"the same syntax as every other field: A fieldname separated by a colon "
+"(<literal>:</literal>) and optionally spaces from its value(s). Note "
+"especially that multiple values are separated by spaces, not by commas as in "
+"the one-line format. Multivalue fields like <literal>Architectures</literal> "
+"also have <literal>Architectures-Add</literal> and <literal>Architectures-"
+"Remove</literal> to modify the default value rather than replacing it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This is a new format supported by apt itself since version 1.1. Previous "
+"versions ignore such files with a notice message as described earlier. It "
+"is intended to make this format gradually the default format, deprecating "
+"the previously described one-line-style format, as it is easier to create, "
+"extend and modify for humans and machines alike especially if a lot of "
+"sources and/or options are involved. Developers who are working with and/or "
+"parsing apt sources are highly encouraged to add support for this format and "
+"to contact the APT team to coordinate and share this work. Users can freely "
+"adopt this format already, but may encounter problems with software not "
+"supporting the format yet."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid "The deb and deb-src types"
+msgid "The deb and deb-src Types: General Format"
+msgstr "Os tipos deb e deb-src"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "The <literal>deb</literal> type references a typical two-level Debian "
+#| "archive, <filename>distribution/component</filename>. The "
+#| "<literal>distribution</literal> is generally an archive name like "
+#| "<literal>stable</literal> or <literal>testing</literal> or a codename "
+#| "like <literal>&debian-stable-codename;</literal> or <literal>&debian-"
+#| "testing-codename;</literal> while component is one of <literal>main</"
+#| "literal>, <literal>contrib</literal> or <literal>non-free</literal>. The "
+#| "<literal>deb-src</literal> type references a Debian distribution's source "
+#| "code in the same form as the <literal>deb</literal> type. A <literal>deb-"
+#| "src</literal> line is required to fetch source indexes."
+msgid ""
+"The <literal>deb</literal> type references a typical two-level Debian "
+"archive, <filename>distribution/component</filename>. The "
+"<literal>distribution</literal> is generally a suite name like "
+"<literal>stable</literal> or <literal>testing</literal> or a codename like "
+"<literal>&debian-stable-codename;</literal> or <literal>&debian-testing-"
+"codename;</literal> while component is one of <literal>main</literal>, "
+"<literal>contrib</literal> or <literal>non-free</literal>. The <literal>deb-"
+"src</literal> type references a Debian distribution's source code in the "
+"same form as the <literal>deb</literal> type. A <literal>deb-src</literal> "
+"line is required to fetch source indexes."
+msgstr ""
+"O tipo <literal>deb</literal> descreve um arquivo Debian típico de dois "
+"níveis, <filename>distribution/component</filename>. A "
+"<literal>distribution</literal> é geralmente um nome de arquivo como "
+"<literal>stable</literal> ou <literal>testing</literal> ou um nome de código "
+"como <literal>&debian-stable-codename;</literal> ou <literal>&debian-testing-"
+"codename;</literal> enquanto que componente é um de <literal>main</literal>, "
+"<literal>contrib</literal> ou <literal>non-free</literal>. O tipo "
+"<literal>deb-src</literal> faz referência a um código fonte de distribuição "
+"Debian no mesmo formato que o tipo <literal>deb</literal>. É necessária uma "
+"linha <literal>deb-src</literal> para obter índices das fontes."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "The format for a <filename>sources.list</filename> entry using the "
+#| "<literal>deb</literal> and <literal>deb-src</literal> types is:"
+msgid ""
+"The format for two one-line-style entries using the <literal>deb</literal> "
+"and <literal>deb-src</literal> types is:"
+msgstr ""
+"O formato para uma entrada na <filename>sources.list</filename> usando os "
+"tipos <literal>deb</literal> e <literal>deb-src</literal> é:"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]\n"
+"deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+" Types: deb deb-src\n"
+" URIs: uri\n"
+" Suites: suite\n"
+" Components: [component1] [component2] [...]\n"
+" option1: value1\n"
+" option2: value2\n"
+" "
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "Alternatively a rfc822 style format is also supported: <placeholder type="
+#| "\"literallayout\" id=\"0\"/>"
+msgid ""
+"Alternatively the equivalent entry in deb822 style looks like this: "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
+msgstr ""
+"Em alternativa, é também suportado um formato estilo rfc822: <placeholder "
+"type=\"literallayout\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "The URI for the <literal>deb</literal> type must specify the base of the "
+#| "Debian distribution, from which APT will find the information it needs. "
+#| "<literal>suite</literal> can specify an exact path, in which case the "
+#| "components must be omitted and <literal>suite</literal> must end with a "
+#| "slash (<literal>/</literal>). This is useful for the case when only a "
+#| "particular sub-section of the archive denoted by the URI is of interest. "
+#| "If <literal>suite</literal> does not specify an exact path, at least one "
+#| "<literal>component</literal> must be present."
+msgid ""
+"The URI for the <literal>deb</literal> type must specify the base of the "
+"Debian distribution, from which APT will find the information it needs. "
+"<literal>suite</literal> can specify an exact path, in which case the "
+"components must be omitted and <literal>suite</literal> must end with a "
+"slash (<literal>/</literal>). This is useful for the case when only a "
+"particular sub-directory of the archive denoted by the URI is of interest. "
+"If <literal>suite</literal> does not specify an exact path, at least one "
+"<literal>component</literal> must be present."
+msgstr ""
+"O URI para o tipo <literal>deb</literal> tem de especificar a base da "
+"distribuição Debian, a partir do qual o APT irá encontrar a informação que "
+"precisa. <literal>suite</literal> pode especificar um caminho exacto, que no "
+"caso os componente têm de ser omitidos e <literal>suite</literal> deve "
+"terminar com uma barra (<literal>/</literal>). Isto é útil para o caso de "
+"apenas ser de interesse uma sub-secção particular do arquivo denotado pelo "
+"URI. Se <literal>suite</literal> não especificar um caminho exacto, pelo "
+"menos um <literal>component</literal> tem de estar presente."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>suite</literal> may also contain a variable, <literal>$(ARCH)</"
+#| "literal> which expands to the Debian architecture (such as "
+#| "<literal>amd64</literal> or <literal>armel</literal>) used on the system. "
+#| "This permits architecture-independent <filename>sources.list</filename> "
+#| "files to be used. In general this is only of interest when specifying an "
+#| "exact path, <literal>APT</literal> will automatically generate a URI with "
+#| "the current architecture otherwise."
+msgid ""
+"<literal>suite</literal> may also contain a variable, <literal>$(ARCH)</"
+"literal> which expands to the Debian architecture (such as <literal>amd64</"
+"literal> or <literal>armel</literal>) used on the system. This permits "
+"architecture-independent <filename>sources.list</filename> files to be used. "
+"In general this is only of interest when specifying an exact path; "
+"<literal>APT</literal> will automatically generate a URI with the current "
+"architecture otherwise."
+msgstr ""
+"<literal>suite</literal> também pode conter uma variável. <literal>$(ARCH)</"
+"literal> a qual se expande à arquitectura Debian (tal como <literal>amd64</"
+"literal> ou <literal>armel</literal>) usada no sistema. Isto permite que "
+"seja usados ficheiros <filename>sources.list</filename> independentes da "
+"arquitectura. Em geral, isto é apenas de interesse quando se especifica um "
+"caminho exacto. De outro modo o <literal>APT</literal> irá gerar "
+"automaticamente um URI com a arquitectura actual."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "In the traditional style sources.list format since only one distribution "
+#| "can be specified per line it may be necessary to have multiple lines for "
+#| "the same URI, if a subset of all available distributions or components at "
+#| "that location is desired. APT will sort the URI list after it has "
+#| "generated a complete set internally, and will collapse multiple "
+#| "references to the same Internet host, for instance, into a single "
+#| "connection, so that it does not inefficiently establish an FTP "
+#| "connection, close it, do something else, and then re-establish a "
+#| "connection to that same host. This feature is useful for accessing busy "
+#| "FTP sites with limits on the number of simultaneous anonymous users. APT "
+#| "also parallelizes connections to different hosts to more effectively deal "
+#| "with sites with low bandwidth."
+msgid ""
+"Especially in the one-line-style format since only one distribution can be "
+"specified per line it may be necessary to have multiple lines for the same "
+"URI, if a subset of all available distributions or components at that "
+"location is desired. APT will sort the URI list after it has generated a "
+"complete set internally, and will collapse multiple references to the same "
+"Internet host, for instance, into a single connection, so that it does not "
+"inefficiently establish a connection, close it, do something else, and then "
+"re-establish a connection to that same host. APT also parallelizes "
+"connections to different hosts to more effectively deal with sites with low "
+"bandwidth."
+msgstr ""
+"No estilo tradicional, o formato do sources.list, como apenas pode ser "
+"especificada por linha uma distribuição, pode ser necessário ter várias "
+"linhas para o mesmo URI, se só for desejado um sub-conjunto de todas as "
+"distribuições e componentes dessa localização. O APT irá ordenar a lista de "
+"URI após ter gerado internamente um conjunto completo, e irá desabar as "
+"várias referências à mesma máquina na Internet, por exemplo, numa única "
+"ligação, para que não estabeleça uma ligação FTP ineficiente, a feche, faça "
+"outra coisa, e depois volte a estabelecer ligação à mesma máquina. Esta "
+"funcionalidade é útil para aceder a sites FTP ocupados que limitam o número "
+"de utilizadores anónimos em simultâneo. O APT também paraleliza ligações a "
+"máquinas diferentes para lidar mais eficientemente com sites com largura de "
+"banda baixa."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"It is important to list sources in order of preference, with the most "
+"preferred source listed first. Typically this will result in sorting by "
+"speed from fastest to slowest (CD-ROM followed by hosts on a local network, "
+"followed by distant Internet hosts, for example)."
+msgstr ""
+"É importante listar as fontes por ordem de preferência, com a fonte mais "
+"preferida listada em primeiro lugar. Tipicamente isto irá resultar numa "
+"ordenação por velocidades desde o mais rápido até ao mais lento (CD-ROM "
+"seguido por máquinas numa rede local, seguido por máquinas distantes na "
+"Internet, por exemplo)."
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "&sourceslist-list-format;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "&sourceslist-sources-format;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"As an example, the sources for your distribution could look like this in one-"
+"line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or like "
+"this in deb822 style format: <placeholder type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid "The deb and deb-src types"
+msgid "The deb and deb-src types: Options"
+msgstr "Os tipos deb e deb-src"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Each source entry can have options specified to modify which source is "
+"accessed and how data is acquired from it. Format, syntax and names of the "
+"options vary between the one-line-style and deb822-style formats as "
+"described, but they both have the same options available. For simplicity we "
+"list the deb822 fieldname and provide the one-line name in brackets. "
+"Remember that besides setting multivalue options explicitly, there is also "
+"the option to modify them based on the default, but we aren't listing those "
+"names explicitly here. Unsupported options are silently ignored by all APT "
+"versions."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#| "replaceable>,…</literal> can be used to specify for which architectures "
+#| "information should be downloaded. If this option is not set all "
+#| "architectures defined by the <literal>APT::Architectures</literal> option "
+#| "will be downloaded."
+msgid ""
+"<option>Architectures</option> (<option>arch</option>) is a multivalue "
+"option defining for which architectures information should be downloaded. If "
+"this option isn't set the default is all architectures as defined by the "
+"<option>APT::Architectures</option> config option."
+msgstr ""
+"<literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+"replaceable>,…</literal> pode ser usado para especificar para quais "
+"arquitecturas deve ser descarregada a informação. Se esta opção não estiver "
+"definida, serão descarregadas todas as arquitecturas definidas pela opção "
+"<literal>APT::Architectures</literal>."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "<literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#| "replaceable>,…</literal> can be used to specify for which architectures "
+#| "information should be downloaded. If this option is not set all "
+#| "architectures defined by the <literal>APT::Architectures</literal> option "
+#| "will be downloaded."
+msgid ""
+"<option>Languages</option> (<option>lang</option>) is a multivalue option "
+"defining for which languages information such as translated package "
+"descriptions should be downloaded. If this option isn't set the default is "
+"all languages as defined by the <option>Acquire::Languages</option> config "
+"option."
+msgstr ""
+"<literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+"replaceable>,…</literal> pode ser usado para especificar para quais "
+"arquitecturas deve ser descarregada a informação. Se esta opção não estiver "
+"definida, serão descarregadas todas as arquitecturas definidas pela opção "
+"<literal>APT::Architectures</literal>."
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Targets</option> (<option>target</option>) is a multivalue option "
+"defining which download targets apt will try to acquire from this source. If "
+"not specified, the default set is defined by the <option>Acquire::"
+"IndexTargets</option> configuration scope (targets are specified by their "
+"name in the <literal>Created-By</literal> field). Additionally, targets can "
+"be enabled or disabled by using the <literal>Identifier</literal> field as "
+"an option with a boolean value instead of using this multivalue option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>PDiffs</option> (<option>pdiffs</option>) is a yes/no value which "
+"controls if APT should try to use PDiffs to update old indexes instead of "
+"downloading the new indexes entirely. The value of this option is ignored if "
+"the repository doesn't announce the availability of PDiffs. Defaults to the "
+"value of the option with the same name for a specific index file defined in "
+"the <option>Acquire::IndexTargets</option> scope, which itself defaults to "
+"the value of configuration option <option>Acquire::PDiffs</option> which "
+"defaults to <literal>yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>By-Hash</option> (<option>by-hash</option>) can have the value "
+"<literal>yes</literal>, <literal>no</literal> or <literal>force</literal> "
+"and controls if APT should try to acquire indexes via a URI constructed from "
+"a hashsum of the expected file instead of using the well-known stable "
+"filename of the index. Using this can avoid hashsum mismatches, but requires "
+"a supporting mirror. A <literal>yes</literal> or <literal>no</literal> value "
+"activates/disables the use of this feature if this source indicates support "
+"for it, while <literal>force</literal> will enable the feature regardless of "
+"what the source indicates. Defaults to the value of the option of the same "
+"name for a specific index file defined in the <option>Acquire::IndexTargets</"
+"option> scope, which itself defaults to the value of configuration option "
+"<option>Acquire::By-Hash</option> which defaults to <literal>yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Furthermore, there are options which if set affect <emphasis>all</emphasis> "
+"sources with the same URI and Suite, so they have to be set on all such "
+"entries and can not be varied between different components. APT will try to "
+"detect and error out on such anomalies."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Allow-Insecure</option> (<option>allow-insecure</option>), "
+"<option>Allow-Weak</option> (<option>allow-weak</option>) and <option>Allow-"
+"Downgrade-To-Insecure</option> (<option>allow-downgrade-to-insecure</"
+"option>) are boolean values which all default to <literal>no</literal>. If "
+"set to <literal>yes</literal> they circumvent parts of &apt-secure; and "
+"should therefore not be used lightly!"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Trusted</option> (<option>trusted</option>) is a tri-state value "
+"which defaults to APT deciding if a source is considered trusted or if "
+"warnings should be raised before e.g. packages are installed from this "
+"source. This option can be used to override that decision. The value "
+"<literal>yes</literal> tells APT always to consider this source as trusted, "
+"even if it doesn't pass authentication checks. It disables parts of &apt-"
+"secure;, and should therefore only be used in a local and trusted context "
+"(if at all) as otherwise security is breached. The value <literal>no</"
+"literal> does the opposite, causing the source to be handled as untrusted "
+"even if the authentication checks passed successfully. The default value "
+"can't be set explicitly."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Signed-By</option> (<option>signed-by</option>) is either an "
+"absolute path to a keyring file (has to be accessible and readable for the "
+"<literal>_apt</literal> user, so ensure everyone has read-permissions on the "
+"file) or one or more fingerprints of keys either in the <filename>trusted."
+"gpg</filename> keyring or in the keyrings in the <filename>trusted.gpg.d/</"
+"filename> directory (see <command>apt-key fingerprint</command>). If the "
+"option is set, only the key(s) in this keyring or only the keys with these "
+"fingerprints are used for the &apt-secure; verification of this repository. "
+"Defaults to the value of the option with the same name if set in the "
+"previously acquired <filename>Release</filename> file. Otherwise all keys "
+"in the trusted keyrings are considered valid signers for this repository."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Check-Valid-Until</option> (<option>check-valid-until</option>) is "
+"a yes/no value which controls if APT should try to detect replay attacks. A "
+"repository creator can declare a time until which the data provided in the "
+"repository should be considered valid, and if this time is reached, but no "
+"new data is provided, the data is considered expired and an error is "
+"raised. Besides increasing security, as a malicious attacker can't send old "
+"data forever to prevent a user from upgrading to a new version, this also "
+"helps users identify mirrors which are no longer updated. However, some "
+"repositories such as historic archives are not updated any more by design, "
+"so this check can be disabled by setting this option to <literal>no</"
+"literal>. Defaults to the value of configuration option <option>Acquire::"
+"Check-Valid-Until</option> which itself defaults to <literal>yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Valid-Until-Min</option> (<option>valid-until-min</option>) and "
+"<option>Valid-Until-Max</option> (<option>valid-until-max</option>) can be "
+"used to raise or lower the time period in seconds in which the data from "
+"this repository is considered valid. -Max can be especially useful if the "
+"repository provides no Valid-Until field on its Release file to set your own "
+"value, while -Min can be used to increase the valid time on seldom updated "
+"(local) mirrors of a more frequently updated but less accessible archive "
+"(which is in the sources.list as well) instead of disabling the check "
+"entirely. Default to the value of the configuration options "
+"<option>Acquire::Min-ValidTime</option> and <option>Acquire::Max-ValidTime</"
+"option> which are both unset by default."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "URI Specification"
+msgstr "Especificação da URI"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "The currently recognized URI types are:"
+msgstr "Os tipos de URI actualmente reconhecidos são:"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The file scheme allows an arbitrary directory in the file system to be "
+"considered an archive. This is useful for NFS mounts and local mirrors or "
+"archives."
+msgstr ""
+"O esquema file permite que um directório arbitrário do sistema de ficheiros "
+"seja considerado um arquivo. Isto é útil para montagens NFS e mirrors ou "
+"arquivos locais."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The cdrom scheme allows APT to use a local CD-ROM drive with media swapping. "
+"Use the &apt-cdrom; program to create cdrom entries in the source list."
+msgstr ""
+"O esquema cdrom permite ao APT usar uma drive de CD-ROM local com mudança de "
+"media. Use o programa &apt-cdrom; para criar entradas cdrom na lista de "
+"fontes."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The http scheme specifies an HTTP server for the archive. If an environment "
+"variable <envar>http_proxy</envar> is set with the format http://server:"
+"port/, the proxy server specified in <envar>http_proxy</envar> will be used. "
+"Users of authenticated HTTP/1.1 proxies may use a string of the format "
+"http://user:pass@server:port/. Note that this is an insecure method of "
+"authentication."
+msgstr ""
+"O esquema http especifica um servidor HTTP para o arquivo. Se uma variável "
+"de ambiente <envar>http_proxy</envar> estiver definida com o formato http://"
+"server:port/, será usado o servidor proxy especificado em <envar>http_proxy</"
+"envar>. Os utilizadores de proxies HTTP/1.1 autenticados pode usar uma "
+"string do formato http://user:pass@server:port/. Note que este não é um "
+"método de autenticação seguro."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The ftp scheme specifies an FTP server for the archive. APT's FTP behavior "
+"is highly configurable; for more information see the &apt-conf; manual page. "
+"Please note that an FTP proxy can be specified by using the "
+"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
+"HTTP proxy (HTTP proxy servers often understand FTP URLs) using this "
+"environment variable and <emphasis>only</emphasis> this environment "
+"variable. Proxies using HTTP specified in the configuration file will be "
+"ignored."
+msgstr ""
+"O esquema ftp especifica um servidor FTP para o arquivo. O comportamento FTP "
+"do APT é altamente configurável; para mais informação veja o manual do &apt-"
+"conf;. Por favor note que pode ser especificado um proxy FTP ao usar a "
+"variável de ambiente <envar>ftp_proxy</envar>. É possível especifica um "
+"proxy HTTP (os servidores proxy HTTP geralmente compreendem URLs de FTP) "
+"usando esta variável de ambiente e <emphasis>apenas</emphasis> esta variável "
+"de ambiente. Os proxies que usam HTTP especificados no ficheiro de "
+"configuração serão ignorados."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The copy scheme is identical to the file scheme except that packages are "
+"copied into the cache directory instead of used directly at their location. "
+"This is useful for people using removable media to copy files around with "
+"APT."
+msgstr ""
+"O esquema copy é idêntico ao esquema file com a excepção que os pacotes são "
+"copiados para o directório cache em vez serem usados directamente da sua "
+"localização. Isto é útil para quem use um meio amovível para copiar "
+"ficheiros com o APT."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
+"the files as a given user. Prior configuration of rhosts or RSA keys is "
+"recommended. The standard <command>find</command> and <command>dd</command> "
+"commands are used to perform the file transfers from the remote host."
+msgstr ""
+"O método rsh/ssh invoca RSH/SSH a ligar a uma máquina remota e aceder a "
+"ficheiros como um dado utilizador. É recomendada a configuração prévia de "
+"rhosts ou chaves RSA. Os comandos standard <command>find</command> e "
+"<command>dd</command> são usados para executar as transferências de "
+"ficheiros a partir da máquina remota."
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
+#: sources.list.5.xml
+msgid "adding more recognizable URI types"
+msgstr "adicionando mais tipos de URI reconhecíveis"
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"APT can be extended with more methods shipped in other optional packages, "
+"which should follow the naming scheme <package>apt-transport-"
+"<replaceable>method</replaceable></package>. For instance, the APT team "
+"also maintains the package <package>apt-transport-https</package>, which "
+"provides access methods for HTTPS URIs with features similar to the http "
+"method. Methods for using e.g. debtorrent are also available - see &apt-"
+"transport-debtorrent;."
+msgstr ""
+"O APT pode ser estendido com mais métodos lançados em outros pacotes "
+"opcionais, que devem seguir o esquema de nomeação <literal>apt-transport-"
+"<replaceable>método</replaceable></literal>. Por exemplo, a equipa do APT "
+"também mantém o pacote <package>apt-transport-https</package>, o qual "
+"disponibiliza métodos de acesso para URIs HTTPS com funcionalidades "
+"semelhantes ao método http. Estão também disponíveis métodos para usar por "
+"exemplo o debtorrent - veja &apt-transport-debtorrent;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses the archive stored locally (or NFS mounted) at /home/apt/debian for "
+"stable/main, stable/contrib, and stable/non-free."
+msgstr ""
+"Usa o arquivo armazenado localmente (ou montagem NFS) em /home/apt/debian "
+"para stable/main, stable/contrib, e stable/non-free."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb file:/home/apt/debian stable main contrib non-free"
+msgstr "deb file:/home/apt/debian stable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: stable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: stable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "As above, except this uses the unstable (development) distribution."
+msgstr ""
+"Como em cima, excepto que usa a distribuição unstable (de desenvolvimento)."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb file:/home/apt/debian unstable main contrib non-free"
+msgstr "deb file:/home/apt/debian unstable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid "Source line for the above"
+msgid "Sources specification for the above."
+msgstr "Linha de fonte para o referido acima"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb-src file:/home/apt/debian unstable main contrib non-free"
+msgstr "deb-src file:/home/apt/debian unstable main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb-src\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr ""
+"Types: deb-src\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The first line gets package information for the architectures in "
+"<literal>APT::Architectures</literal> while the second always retrieves "
+"<literal>amd64</literal> and <literal>armel</literal>."
+msgstr ""
+"A primeira linha obtém a informação do pacote para a arquitectura em "
+"<literal>APT::Architectures</literal> enquanto a segunda obtém sempre "
+"<literal>amd64</literal> e <literal>armel</literal>."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main"
+msgstr ""
+"deb http://deb.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"\n"
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"Architectures: amd64 armel\n"
+msgstr ""
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"\n"
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"Architectures: amd64 armel\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to access the archive at archive.debian.org, and uses only the "
+"hamm/main area."
+msgstr ""
+"Usa HTTP para aceder ao arquivo em archive.debian.org, e usa apenas a área "
+"hamm/main."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb http://archive.debian.org/debian-archive hamm main"
+msgstr "deb http://archive.debian.org/debian-archive hamm main"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://archive.debian.org/debian-archive\n"
+"Suites: hamm\n"
+"Components: main"
+msgstr ""
+"Types: deb\n"
+"URIs: http://archive.debian.org/debian-archive\n"
+"Suites: hamm\n"
+"Components: main"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the &debian-stable-codename;/contrib area."
+msgstr ""
+"Usa FTP para aceder ao arquivo em ftp.debian.org, sob o directório debian, e "
+"usa apenas a área &debian-stable-codename;/contrib."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: contrib"
+msgstr ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: contrib"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the unstable/contrib area. If this line appears as "
+"well as the one in the previous example in <filename>sources.list</filename> "
+"a single FTP session will be used for both resource lines."
+msgstr ""
+"Usa FTP para aceder ao arquivo em ftp.debian.org, sob o directório debian, e "
+"usa apenas a área unstable/contrib. Se esta linha aparecer também como "
+"aquela no exemplo anterior em <filename>sources.list</filename> será usada "
+"uma única sessão FTP para ambas linhas de recurso."
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian unstable contrib"
+msgstr "deb ftp://ftp.debian.org/debian unstable contrib"
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: unstable\n"
+"Components: contrib"
+msgstr ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: unstable\n"
+"Components: contrib"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+msgstr "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://ftp.tlh.debian.org/universe\n"
+"Suites: unstable/binary-$(ARCH)/"
+msgstr ""
+"Types: deb\n"
+"URIs: http://ftp.tlh.debian.org/universe\n"
+"Suites: unstable/binary-$(ARCH)/"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+#, fuzzy
+#| msgid ""
+#| "Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe "
+#| "directory, and uses only files found under <filename>unstable/binary-"
+#| "i386</filename> on i386 machines, <filename>unstable/binary-amd64</"
+#| "filename> on amd64, and so forth for other supported architectures. [Note "
+#| "this example only illustrates how to use the substitution variable; "
+#| "official debian archives are not structured like this] <placeholder type="
+#| "\"literallayout\" id=\"0\"/>"
+msgid ""
+"Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe "
+"directory, and uses only files found under <filename>unstable/binary-i386</"
+"filename> on i386 machines, <filename>unstable/binary-amd64</filename> on "
+"amd64, and so forth for other supported architectures. [Note this example "
+"only illustrates how to use the substitution variable; official debian "
+"archives are not structured like this] <placeholder type=\"literallayout\" "
+"id=\"0\"/> <placeholder type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+"Usa HTTP para aceder ao arquivo em ftp.tlh.debian.org, sob o directório "
+"universe, e usa apenas os ficheiros encontrados sob <filename>unstable/"
+"binary-i386</filename> em máquinas i386, <filename>unstable/binary-amd64</"
+"filename> em amd64, e assim por diante para outras arquitecturas suportadas. "
+"[Note que este exemplo apenas mostra como usar a variável de substituição; "
+"os arquivos oficiais debian não estão estruturados assim] <placeholder type="
+"\"literallayout\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to get binary packages as well as sources from the stable, testing "
+"and unstable suites and the components main and contrib."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian stable main contrib\n"
+"deb-src http://deb.debian.org/debian stable main contrib\n"
+"deb http://deb.debian.org/debian testing main contrib\n"
+"deb-src http://deb.debian.org/debian testing main contrib\n"
+"deb http://deb.debian.org/debian unstable main contrib\n"
+"deb-src http://deb.debian.org/debian unstable main contrib"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb deb-src\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: stable testing unstable\n"
+"Components: main contrib\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "&apt-get;, &apt-conf;, &apt-acquire-additional-files;"
+msgstr "&apt-get;, &apt-conf;, &apt-acquire-additional-files;"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt-extracttemplates.1.xml apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "1"
+msgstr "1"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-extracttemplates.1.xml
+msgid ""
+"Utility to extract <command>debconf</command> config and templates from "
+"Debian packages"
+msgstr ""
+"Utilitário para extrair configurações e modelos <command>debconf</command> a "
+"partir de pacotes Debian"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"<command>apt-extracttemplates</command> will take one or more Debian package "
+"files as input and write out (to a temporary directory) all associated "
+"config scripts and template files. For each passed in package that contains "
+"config scripts and templates, one line of output will be generated in the "
+"format:"
+msgstr ""
+"<command>apt-extracttemplates</command> irá receber um ou mais ficheiros de "
+"pacotes Debian na sua entrada e escrever (para um directório temporário) "
+"todos os scripts de configuração associados e ficheiros de modelo. Por cada "
+"pacote passado por ele que contenha scripts de configuração e modelos, será "
+"gerada uma linha no formato:"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid "package version template-file config-script"
+msgstr "pacote versão ficheiro-modelo script-de-configuração"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"template-file and config-script are written to the temporary directory "
+"specified by the <option>-t</option> or <option>--tempdir</option> "
+"(<literal>APT::ExtractTemplates::TempDir</literal>) directory, with "
+"filenames of the form <filename>package.template.XXXXXX</filename> and "
+"<filename>package.config.XXXXXX</filename>"
+msgstr ""
+"ficheiro-modelo e script-de-configuração são escritos num directório "
+"temporário especificado por <option>-t</option> ou <option>--tempdir</"
+"option> (<literal>APT::ExtractTemplates::TempDir</literal>) directório, com "
+"nomes de ficheiros no formato <filename>pacote.modelo.XXXXXX</filename> e "
+"<filename>pacote.configuração.XXXXXX</filename>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"Temporary directory in which to write extracted <command>debconf</command> "
+"template files and config scripts. Configuration Item: <literal>APT::"
+"ExtractTemplates::TempDir</literal>"
+msgstr ""
+"Directório temporário para onde escrever ficheiros <command>debconf</"
+"command> modelo extraídos e scripts de configuração. Item de Configuração: "
+"<literal>APT::ExtractTemplates::TempDir</literal>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"<command>apt-extracttemplates</command> returns zero on normal operation, "
+"decimal 100 on error."
+msgstr ""
+"<command>apt-extracttemplates</command> devolve zero na operação normal, 100 "
+"decimal em erro."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-sortpkgs.1.xml
+msgid "Utility to sort package index files"
+msgstr "Utilitário para organizar ficheiros índice de pacotes"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"<command>apt-sortpkgs</command> will take an index file (source index or "
+"package index) and sort the records so that they are ordered by the package "
+"name. It will also sort the internal fields of each record according to the "
+"internal sorting rules."
+msgstr ""
+"<command>apt-sortpkgs</command> irá pegar num ficheiro índice (índice de "
+"fontes ou índice de pacotes) e organizar os registos para que fiquem "
+"ordenados pelo nome do pacote. Também organiza os campos internos de cada "
+"registo de acordo com as regras de organização internas."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"All output is sent to standard output; the input must be a seekable file."
+msgstr ""
+"Todas as saídas são enviadas para a saída standard, a entrada tem de ser um "
+"ficheiro pesquisável."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"Use source index field ordering. Configuration Item: <literal>APT::"
+"SortPkgs::Source</literal>."
+msgstr ""
+"Usa ordenação de campo de índice Source. Item de Configuração: <literal>APT::"
+"SortPkgs::Source</literal>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"<command>apt-sortpkgs</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+"<command>apt-sortpkgs</command> devolve zero na operação normal, 100 decimal "
+"em erro."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-ftparchive.1.xml
+msgid "Utility to generate index files"
+msgstr "Utilitário para gerar ficheiros de índice"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> is the command line tool that generates "
+"the index files that APT uses to access a distribution source. The index "
+"files should be generated on the origin site based on the content of that "
+"site."
+msgstr ""
+"<command>apt-ftparchive</command> é a ferramenta de linha de comandos que "
+"cria os ficheiros índice que o APT usa para aceder a uma fonte de "
+"distribuição. Os ficheiros índice devem ser gerados no site de origem "
+"baseados no conteúdo desse site."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> is a superset of the &dpkg-scanpackages; "
+"program, incorporating its entire functionality via the <literal>packages</"
+"literal> command. It also contains a contents file generator, "
+"<literal>contents</literal>, and an elaborate means to 'script' the "
+"generation process for a complete archive."
+msgstr ""
+"<command>apt-ftparchive</command> é um super conjunto do programa &dpkg-"
+"scanpackages;, incorporando todas as suas funcionalidades através do comando "
+"<literal>packages</literal>. Também contém um gerador de ficheiro de "
+"conteúdos, <literal>contents</literal>, e um meio elaborado de colocar em "
+"script o processo de geração para um arquivo completo."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Internally <command>apt-ftparchive</command> can make use of binary "
+"databases to cache the contents of a .deb file and it does not rely on any "
+"external programs aside from &gzip;. When doing a full generate it "
+"automatically performs file-change checks and builds the desired compressed "
+"output files."
+msgstr ""
+"Internamente o <command>apt-ftparchive</command> pode fazer uso de bases de "
+"dados binárias para por em cache os conteúdos de um ficheiro .deb e não "
+"precisa de nenhum programa externo à excepção do &gzip;. Quando faz uma "
+"geração completa, executa automaticamente verificações de alterações de "
+"ficheiros e constrói os ficheiros comprimidos desejados."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The packages command generates a package file from a directory tree. It "
+"takes the given directory and recursively searches it for .deb files, "
+"emitting a package record to stdout for each. This command is approximately "
+"equivalent to &dpkg-scanpackages;."
+msgstr ""
+"O comando packages gera um ficheiro pacote a partir duma árvore de "
+"directórios. Recebe um dado directório e procura recursivamente por "
+"ficheiros .deb, emitindo um registo de pacote para o stdout por cada um. "
+"Este comando é aproximadamente equivalente ao &dpkg-scanpackages;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The option <option>--db</option> can be used to specify a binary caching DB."
+msgstr ""
+"A opção <option>--db</option> pode ser usada para especificar uma base de "
+"dados de cache binária."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>sources</literal> command generates a source index file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .dsc files, emitting a source record to stdout for each. This command is "
+"approximately equivalent to &dpkg-scansources;."
+msgstr ""
+"O comando <literal>sources</literal> gera um índice de fonte a partir duma "
+"árvore de directórios. Recebe um dado directório e procura recursivamente "
+"por ficheiros .dsc, emitindo um registo de fonte para o stdout por cada um. "
+"Este comando é aproximadamente equivalente ao &dpkg-scansources;."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"If an override file is specified then a source override file will be looked "
+"for with an extension of .src. The --source-override option can be used to "
+"change the source override file that will be used."
+msgstr ""
+"Se for especificado um ficheiro de sobreposição então será procurado um "
+"ficheiro de sobreposição de fonte com uma extensão de .src. A opção --"
+"source-override pode ser usada para alterar o ficheiro de sobreposição de "
+"fonte que irá ser usado."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>contents</literal> command generates a contents file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .deb files, and reads the file list from each file. It then sorts and "
+"writes to stdout the list of files matched to packages. Directories are not "
+"written to the output. If multiple packages own the same file then each "
+"package is separated by a comma in the output."
+msgstr ""
+"O comando<literal>contents</literal> gera um ficheiro de conteúdos a partir "
+"duma árvore de directórios. Recebe um dado directório e procura "
+"recursivamente por ficheiros .deb, e lê a lista de ficheiros de cada "
+"ficheiro. Então organiza e escreve para o stdout a lista de ficheiros "
+"correspondente a pacotes. Os directórios não são escritos no saída. Se "
+"múltiplos pacotes possuírem o mesmo ficheiro então cada pacote é separado "
+"por uma vírgula na saída."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+#, fuzzy
+#| msgid ""
+#| "The <literal>release</literal> command generates a Release file from a "
+#| "directory tree. It recursively searches the given directory for "
+#| "uncompressed <filename>Packages</filename> and <filename>Sources</"
+#| "filename> files and ones compressed with <command>gzip</command>, "
+#| "<command>bzip2</command> or <command>lzma</command> as well as "
+#| "<filename>Release</filename> and <filename>md5sum.txt</filename> files by "
+#| "default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>). "
+#| "Additional filename patterns can be added by listing them in "
+#| "<literal>APT::FTPArchive::Release::Patterns</literal>. It then writes to "
+#| "stdout a <filename>Release</filename> file containing an MD5, SHA1 and "
+#| "SHA256 digest for each file."
+msgid ""
+"The <literal>release</literal> command generates a Release file from a "
+"directory tree. It recursively searches the given directory for uncompressed "
+"and compressed <filename>Packages</filename>, <filename>Sources</filename>, "
+"<filename>Contents</filename>, <filename>Components</filename> and "
+"<filename>icons</filename> files as well as <filename>Release</filename>, "
+"<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
+"default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>). "
+"Additional filename patterns can be added by listing them in <literal>APT::"
+"FTPArchive::Release::Patterns</literal>. It then writes to stdout a "
+"<filename>Release</filename> file containing (by default) an MD5, SHA1, "
+"SHA256 and SHA512 digest for each file."
+msgstr ""
+"O comando <literal>release</literal> gera um ficheiro Release a partir de "
+"uma árvore de directórios. Por predefinição, procura recursivamente no "
+"directório fornecido por ficheiros <filename>Packages</filename> e "
+"<filename>Sources</filename> não comprimidos e outros comprimidos com "
+"<command>gzip</command>, <command>bzip2</command> ou <command>lzma</command> "
+"assim como ficheiros <filename>Release</filename> e <filename>md5sum.txt</"
+"filename> (<literal>APT::FTPArchive::Release::Default-Patterns</literal>). "
+"Depois escreve para o stdout um ficheiro <filename>Release</filename> que "
+"contém um resultado de MD5, SHA1 e SHA256 para cada ficheiro."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Values for the additional metadata fields in the Release file are taken from "
+"the corresponding variables under <literal>APT::FTPArchive::Release</"
+"literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The "
+"supported fields are <literal>Origin</literal>, <literal>Label</literal>, "
+"<literal>Suite</literal>, <literal>Version</literal>, <literal>Codename</"
+"literal>, <literal>Date</literal>, <literal>NotAutomatic</literal>, "
+"<literal>ButAutomaticUpgrades</literal>, <literal>Acquire-By-Hash</literal>, "
+"<literal>Valid-Until</literal>, <literal>Signed-By</literal>, "
+"<literal>Architectures</literal>, <literal>Components</literal> and "
+"<literal>Description</literal>."
+msgstr ""
+"Valores para os campos de metadados adicionais no ficheiro Release são "
+"tomados a partir das variáveis correspondentes sob <literal>APT::FTPArchive::"
+"Release</literal>, ex. <literal>APT::FTPArchive::Release::Origin</literal>. "
+"Os campos suportados são: <literal>Origin</literal>, <literal>Label</"
+"literal>, <literal>Suite</literal>, <literal>Version</literal>, "
+"<literal>Codename</literal>, <literal>Date</literal>, <literal>NotAutomatic</"
+"literal>, <literal>ButAutomaticUpgrades</literal>, <literal>Acquire-By-Hash</"
+"literal>, <literal>Valid-Until</literal>, <literal>Signed-By</literal>, "
+"<literal>Architectures</literal>, <literal>Components</literal>, "
+"<literal>Description</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>generate</literal> command is designed to be runnable from a "
+"cron script and builds indexes according to the given config file. The "
+"config language provides a flexible means of specifying which index files "
+"are built from which directories, as well as providing a simple means of "
+"maintaining the required settings."
+msgstr ""
+"O comando <literal>generate</literal> é desenhado para ser executado a "
+"partir dum script cron e constrói índices de acordo com o ficheiro de "
+"configuração fornecido. A linguagem de configuração disponibiliza um meio "
+"flexível de de especificar quais ficheiros índice são construídos a partir "
+"de quais directórios, assim como disponibilizar um meio simples de manter as "
+"definições requeridas."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>clean</literal> command tidies the databases used by the given "
+"configuration file by removing any records that are no longer necessary."
+msgstr ""
+"O comando <literal>clean</literal> arruma as bases de dados usadas pelo "
+"ficheiro de configuração fornecido ao remover quaisquer registos que já não "
+"são necessários."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Generate Configuration"
+msgstr "A Configuração do Generate"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>generate</literal> command uses a configuration file to "
+"describe the archives that are going to be generated. It follows the typical "
+"ISC configuration format as seen in ISC tools like bind 8 and dhcpd. &apt-"
+"conf; contains a description of the syntax. Note that the generate "
+"configuration is parsed in sectional manner, but &apt-conf; is parsed in a "
+"tree manner. This only effects how the scope tag is handled."
+msgstr ""
+"O comando <literal>generate</literal> usa um ficheiro de configuração para "
+"descrever os arquivos que vão ser gerados. Segue o formato típico de "
+"configuração ISC como visto em ferramentas ISC como o bind 8 e dhcpd. &apt-"
+"conf; contém uma descrição da sintaxe. Note que a configuração gerada é "
+"analisada de maneira seccional, mas o &apt-conf; é analisado numa maneira de "
+"árvore. Isto apenas afecta o modo de como a etiqueta scope é manuseada."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The generate configuration has four separate sections, each described below."
+msgstr ""
+"A configuração do generate tem 4 secções separadas, cada uma descrita mais "
+"abaixo."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Dir</literal> Section"
+msgstr "Secção <literal>Dir</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Dir</literal> section defines the standard directories needed "
+"to locate the files required during the generation process. These "
+"directories are prepended certain relative paths defined in later sections "
+"to produce a complete an absolute path."
+msgstr ""
+"A secção <literal>Dir</literal> define os directórios standard necessários "
+"para localizar os ficheiros requisitados durante o processo de geração. "
+"Estes directórios precedem a certos caminhos relativos definidos em secções "
+"posteriores para produzir um caminho completo e absoluto."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the root of the FTP archive, in a standard Debian configuration "
+"this is the directory that contains the <filename>ls-LR</filename> and dist "
+"nodes."
+msgstr ""
+"Especifica a raiz do arquivo FTP, numa configuração Debian standard este é o "
+"directório que contém o <filename>ls-LR</filename> e nós da distribuição."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the location of the override files."
+msgstr "Especifica a localização dos ficheiros de sobrepor."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the location of the cache files."
+msgstr "Especifica a localização dos ficheiros de cache"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the location of the file list files, if the <literal>FileList</"
+"literal> setting is used below."
+msgstr ""
+"Especifica a localização dos ficheiros de listas de ficheiros, se a "
+"definição <literal>FileList</literal> for usada mais abaixo."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Default</literal> Section"
+msgstr "Secção <literal>Default</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Default</literal> section specifies default values, and "
+"settings that control the operation of the generator. Other sections may "
+"override these defaults with a per-section setting."
+msgstr ""
+"A secção <literal>Default</literal> especifica valores predefinidos, e "
+"definições que controlam a operação do gerador. Outras secções podem "
+"sobrepor estas predefinições em uma definição por-secção."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+#, fuzzy
+#| msgid ""
+#| "Sets the default compression schemes to use for the package index files. "
+#| "It is a string that contains a space separated list of at least one of: "
+#| "'.' (no compression), 'gzip' and 'bzip2'. The default for all compression "
+#| "schemes is '. gzip'."
+msgid ""
+"Sets the default compression schemes to use for the package index files. It "
+"is a string that contains a space separated list of at least one of the "
+"compressors configured via the <option>APT::Compressor</option> "
+"configuration scope. The default for all compression schemes is '. gzip'."
+msgstr ""
+"Define os esquemas de compressão predefinidos a usar para os ficheiros de "
+"índice Package. É uma string que contém uma lista separada por espaços de "
+"pelo menos um de: '.' (nenhuma compressão), 'gzip' and 'bzip2'. A "
+"predefinição para todos os esquemas de compressão é '. gzip'."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default list of file extensions that are package files. This "
+"defaults to '.deb'."
+msgstr ""
+"Define a lista predefinida das extensões de ficheiros que são ficheiros "
+"pacote. A predefinição é '.deb'."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Sources files."
+msgstr ""
+"Isto é semelhante a <literal>Packages::Compress</literal> excepto que "
+"controla a compressão para os ficheiros das Fontes."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default list of file extensions that are source files. This "
+"defaults to '.dsc'."
+msgstr ""
+"Define a lista predefinida das extensões de ficheiros que são ficheiros de "
+"fontes. A predefinição é '.dsc'."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Contents files."
+msgstr ""
+"Isto é semelhante a <literal>Packages::Compress</literal> excepto que "
+"controla a compressão para os ficheiros de Conteúdos."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Translation-en master file."
+msgstr ""
+"Isto é semelhante a <literal>Packages::Compress</literal> excepto que "
+"controla a compressão para o ficheiro mestre Translation-en."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the number of kilobytes to delink (and replace with hard links) "
+"per run. This is used in conjunction with the per-section <literal>External-"
+"Links</literal> setting."
+msgstr ""
+"Especifica o número de kilobytes para delink (e substitui com hard links) "
+"por execução. Isto é usado em conjunto com a definição <literal>External-"
+"Links</literal> por secção."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the mode of all created index files. It defaults to 0644. All "
+"index files are set to this mode with no regard to the umask."
+msgstr ""
+"Especifica o modo de todos os ficheiros índice criados. A predefinição é "
+"0644. Todos os ficheiros índice são definidos para este modo "
+"independentemente do umask."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies whether long descriptions should be included in the "
+"<filename>Packages</filename> file or split out into a master "
+"<filename>Translation-en</filename> file."
+msgstr ""
+"Define se as descrições longas devem ser incluídas no ficheiro "
+"<filename>Packages</filename> ou divididas em um ficheiro "
+"<filename>Translation-en</filename> mestre."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>TreeDefault</literal> Section"
+msgstr "Secção <literal>TreeDefault</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets defaults specific to <literal>Tree</literal> sections. All of these "
+"variables are substitution variables and have the strings $(DIST), "
+"$(SECTION) and $(ARCH) replaced with their respective values."
+msgstr ""
+"Define predefinições específicas para as secções <literal>Tree</literal>. "
+"Todas estas variáveis são variáveis de substituição e têm as strings "
+"$(DIST), $(SECTION) e $(ARCH) substituídas pelos seus respectivos valores."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the number of kilobytes of contents files that are generated each day. "
+"The contents files are round-robined so that over several days they will all "
+"be rebuilt."
+msgstr ""
+"Define o número de kilobytes dos ficheiros de conteúdo que são gerados a "
+"cada dia. Os ficheiros de conteúdo são re-circulados para que ao fim de "
+"alguns dias todos sejam reconstruídos."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Controls the number of days a contents file is allowed to be checked without "
+"changing. If this limit is passed the mtime of the contents file is updated. "
+"This case can occur if the package file is changed in such a way that does "
+"not result in a new contents file [override edit for instance]. A hold off "
+"is allowed in hopes that new .debs will be installed, requiring a new file "
+"anyhow. The default is 10, the units are in days."
+msgstr ""
+"Controla o número de dias que se permite a um ficheiro de conteúdo ser "
+"verificado sem alteração. Se este limite for ultrapassado o mtime do "
+"ficheiro de conteúdo é actualizado. Este caso pode ocorrer se o ficheiro de "
+"pacote é alterado num modo que não resulta num novo ficheiro de conteúdo "
+"[por exemplo uma edição de sobreposição]. É permitido um soltar na esperança "
+"que novos .debs sejam instalados, requerendo um novo ficheiro de qualquer "
+"modo. A predefinição é 10, as unidades são em dias."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/"
+"$(SECTION)/binary-$(ARCH)/</filename>"
+msgstr ""
+"Define o topo da árvore de directórios .deb. A predefinição é <filename>"
+"$(DIST)/$(SECTION)/binary-$(ARCH)/</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the top of the source package directory tree. Defaults to <filename>"
+"$(DIST)/$(SECTION)/source/</filename>"
+msgstr ""
+"Define o topo da árvore de directórios de pacotes fonte. A predefinição é "
+"<filename>$(DIST)/$(SECTION)/source/</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Packages file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"binary-$(ARCH)/Packages</filename>"
+msgstr ""
+"Define o ficheiro Packages de saída. A predefinição é <filename>$(DIST)/"
+"$(SECTION)/binary-$(ARCH)/Packages</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Sources file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"source/Sources</filename>"
+msgstr ""
+"Define o ficheiro Sources de saída. A predefinição é <filename>$(DIST)/"
+"$(SECTION)/source/Sources</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Translation-en master file with the long descriptions if "
+"they should be not included in the Packages file. Defaults to <filename>"
+"$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+msgstr ""
+"Define se o ficheiro mestre Translation-en de saída com as descrições longas "
+"não deve ser incluído no ficheiro Packages. A predefinição é <filename>"
+"$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the path prefix that causes a symlink to be considered an internal link "
+"instead of an external link. Defaults to <filename>$(DIST)/$(SECTION)/</"
+"filename>"
+msgstr ""
+"Define o prefixo de caminho que causa que um symlink seja considerado um "
+"link interno em vez de um link externo. A predefinição é <filename>$(DIST)/"
+"$(SECTION)/</filename>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Contents file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"Contents-$(ARCH)</filename>. If this setting causes multiple Packages files "
+"to map onto a single Contents file (as is the default) then <command>apt-"
+"ftparchive</command> will integrate those package files together "
+"automatically."
+msgstr ""
+"Define a saída do ficheiro Contents. A predefinição é <filename>$(DIST)/"
+"Contents-$(ARCH)</filename>. Se esta definição causar múltiplos ficheiros "
+"Packages para mapear em um único ficheiro Contents (tal como a predefinição) "
+"então o <command>apt-ftparchive</command> irá automaticamente integrar esses "
+"ficheiros pacotes todos juntos."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets header file to prepend to the contents output."
+msgstr "Define o ficheiro cabeçalho para prefixar a saída de conteúdos."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the binary cache database to use for this section. Multiple sections "
+"can share the same database."
+msgstr ""
+"Define a base de dados de cache binária a usar para esta secção. Múltiplas "
+"secções podem partilhar a mesma base de dados."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies that instead of walking the directory tree, <command>apt-"
+"ftparchive</command> should read the list of files from the given file. "
+"Relative files names are prefixed with the archive directory."
+msgstr ""
+"Especifica que em vez de navegar na árvore de directórios, o <command>apt-"
+"ftparchive</command> deverá ler a lista de ficheiros a partir do ficheiro "
+"fornecido. Nomes de ficheiros relativos são prefixados com o directório de "
+"arquivo."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies that instead of walking the directory tree, <command>apt-"
+"ftparchive</command> should read the list of files from the given file. "
+"Relative files names are prefixed with the archive directory. This is used "
+"when processing source indexes."
+msgstr ""
+"Especifica que em vez de navegar na árvore de directórios, o <command>apt-"
+"ftparchive</command> deverá ler a lista de ficheiros a partir do ficheiro "
+"fornecido. Nomes de ficheiros relativos são prefixados com o directório de "
+"arquivo. Isto é usado quando se processa índices de fonte."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>Tree</literal> Section"
+msgstr "Secção <literal>Tree</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Tree</literal> section defines a standard Debian file tree "
+"which consists of a base directory, then multiple sections in that base "
+"directory and finally multiple Architectures in each section. The exact "
+"pathing used is defined by the <literal>Directory</literal> substitution "
+"variable."
+msgstr ""
+"A secção <literal>Tree</literal> define uma árvore de ficheiros Debian "
+"standard que consiste de um directório base, depois múltiplas secções nesse "
+"directório base e finalmente múltiplas Arquitecturas em cada secção. O "
+"caminho exacto usado é definido pela variável de substituição "
+"<literal>Directory</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Tree</literal> section takes a scope tag which sets the "
+"<literal>$(DIST)</literal> variable and defines the root of the tree (the "
+"path is prefixed by <literal>ArchiveDir</literal>). Typically this is a "
+"setting such as <filename>dists/&debian-stable-codename;</filename>."
+msgstr ""
+"A secção <literal>Tree</literal> recebe uma etiqueta scope que define a "
+"variável <literal>$(DIST)</literal> e define a raiz da árvore (o caminho é "
+"prefixado por <literal>ArchiveDir</literal>). Tipicamente esta é uma "
+"definição tal como <filename>dists/&debian-stable-codename;</filename>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"All of the settings defined in the <literal>TreeDefault</literal> section "
+"can be used in a <literal>Tree</literal> section as well as three new "
+"variables."
+msgstr ""
+"Todas as definições definidas na secção <literal>TreeDefault</literal> podem "
+"ser usadas na secção <literal>Tree</literal> assim como as novas três "
+"variáveis."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid ""
+"for i in Sections do \n"
+" for j in Architectures do\n"
+" Generate for DIST=scope SECTION=i ARCH=j\n"
+" "
+msgstr ""
+"for i in Sections do \n"
+" for j in Architectures do\n"
+" Generate for DIST=scope SECTION=i ARCH=j\n"
+" "
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"When processing a <literal>Tree</literal> section <command>apt-ftparchive</"
+"command> performs an operation similar to: <placeholder type=\"programlisting"
+"\" id=\"0\"/>"
+msgstr ""
+"Quando processa uma secção <literal>Tree</literal>, o <command>apt-"
+"ftparchive</command> executa uma operação semelhante a: <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is a space separated list of sections which appear under the "
+"distribution; typically this is something like <literal>main contrib non-"
+"free</literal>"
+msgstr ""
+"Isto é uma lista de secções separada por espaços que aparece sob a "
+"distribuição, tipicamente isto é algo como <literal>main contrib non-free</"
+"literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is a space separated list of all the architectures that appear under "
+"search section. The special architecture 'source' is used to indicate that "
+"this tree has a source archive. The architecture 'all' signals that "
+"architecture specific files like <filename>Packages</filename> should not "
+"include information about architecture <literal>all</literal> packages in "
+"all files as they will be available in a dedicated file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the binary override file. The override file contains section, priority "
+"and maintainer address information."
+msgstr ""
+"Define o ficheiro de sobreposição binário. O ficheiro de sobreposição "
+"informação de secção, prioridade e endereço do responsável."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the source override file. The override file contains section "
+"information."
+msgstr ""
+"Define o ficheiro de sobreposição fonte. O ficheiro de sobreposição "
+"informação de secção."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the binary extra override file."
+msgstr "Define o ficheiro de sobreposição extra binário."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the source extra override file."
+msgstr "Define o ficheiro de sobreposição extra fonte."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+msgid "<literal>BinDirectory</literal> Section"
+msgstr "Secção <literal>BinDirectory</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>bindirectory</literal> section defines a binary directory tree "
+"with no special structure. The scope tag specifies the location of the "
+"binary directory and the settings are similar to the <literal>Tree</literal> "
+"section with no substitution variables or <literal>Section</"
+"literal><literal>Architecture</literal> settings."
+msgstr ""
+"A secção <literal>bindirectory</literal> define uma árvore de directórios "
+"binários sem nenhuma estrutura especial. A etiqueta scope especifica a "
+"localização do directório binário e as definições são semelhantes às da "
+"secção <literal>Tree</literal> sem nenhumas variáveis de substituição ou "
+"definições <literal>Section</literal><literal>Architecture</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the Packages file output."
+msgstr "Define a saída do ficheiro Packages."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the Sources file output. At least one of <literal>Packages</literal> or "
+"<literal>Sources</literal> is required."
+msgstr ""
+"Define a saída do ficheiro Sources. É necessário pelo menos um de "
+"<literal>Packages</literal> ou <literal>Sources</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the Contents file output (optional)."
+msgstr "Define a saída do ficheiro Contents (opcional)"
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the binary override file."
+msgstr "Define o ficheiro de sobreposição binário."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the source override file."
+msgstr "Define o ficheiro de sobreposição fonte."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the cache DB."
+msgstr "Define a base de dados de cache."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Appends a path to all the output paths."
+msgstr "Acrescenta um caminho a todos os caminhos de saída."
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the file list file."
+msgstr "Especifica o ficheiro de lista de ficheiros."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Binary Override File"
+msgstr "O Ficheiro Binary Override"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The binary override file is fully compatible with &dpkg-scanpackages;. It "
+"contains four fields separated by spaces. The first field is the package "
+"name, the second is the priority to force that package to, the third is the "
+"section to force that package to and the final field is the maintainer "
+"permutation field."
+msgstr ""
+"O ficheiro de sobreposição binário é totalmente compatível com &dpkg-"
+"scanpackages;. Contém 4 campos separados por espaços. O primeiro campo é o "
+"nome do pacote, o segundo é a prioridade a qual forçar esse pacote, o "
+"terceiro é a secção onde forçar esse pacote e o último campo é o campo de "
+"permutação do responsável."
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "old [// oldn]* => new"
+msgstr "old [// oldn]* => new"
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "new"
+msgstr "new"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The general form of the maintainer field is: <placeholder type="
+"\"literallayout\" id=\"0\"/> or simply, <placeholder type=\"literallayout\" "
+"id=\"1\"/> The first form allows a double-slash separated list of old email "
+"addresses to be specified. If any of those are found then new is substituted "
+"for the maintainer field. The second form unconditionally substitutes the "
+"maintainer field."
+msgstr ""
+"O formato geral do campo do responsável é: <placeholder type=\"literallayout"
+"\" id=\"0\"/> ou simplesmente, <placeholder type=\"literallayout\" id=\"1\"/"
+">. O primeiro formato permite uma lista separada por um duplo slash (//) de "
+"antigos endereços e email a serem especificados. Se nenhum destes for "
+"encontrado então 'new' é substituído para o campo do responsável. O segundo "
+"formato substitui incondicionalmente o campo do responsável."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Source Override File"
+msgstr "O Ficheiro Source Override"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The source override file is fully compatible with &dpkg-scansources;. It "
+"contains two fields separated by spaces. The first field is the source "
+"package name, the second is the section to assign it."
+msgstr ""
+"O ficheiro de sobreposição de fonte é totalmente compatível com &dpkg-"
+"scansources;. Contém dois campos separados por espaços. O primeiro campo é o "
+"nome de pacote fonte, o segundo é a secção onde o atribuir."
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Extra Override File"
+msgstr "O Ficheiro Extra Override"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The extra override file allows any arbitrary tag to be added or replaced in "
+"the output. It has three columns, the first is the package, the second is "
+"the tag and the remainder of the line is the new value."
+msgstr ""
+"O ficheiro de sobreposição extra permite que qualquer etiqueta arbitrária "
+"seja adicionada ou substituída na saída. Tem 3 colunas, a primeira é o "
+"pacote, a segunda é a etiqueta e restante da linha é o novo valor."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Generate the given checksum. These options default to on, when turned off "
+"the generated index files will not have the checksum fields where possible. "
+"Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</"
+"replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</"
+"replaceable>::<replaceable>Checksum</replaceable></literal> where "
+"<literal><replaceable>Index</replaceable></literal> can be "
+"<literal>Packages</literal>, <literal>Sources</literal> or <literal>Release</"
+"literal> and <literal><replaceable>Checksum</replaceable></literal> can be "
+"<literal>MD5</literal>, <literal>SHA1</literal>, <literal>SHA256</literal> "
+"or <literal>SHA512</literal>."
+msgstr ""
+"Gera o sumário de verificação dado. Estas opções usam a predefinição de "
+"ligadas, quando são desligadas os ficheiros de índice gerados não terão os "
+"campos de sumário de verificação onde tal for possível Items de "
+"Configuração: <literal>APT::FTPArchive::<replaceable>Checksum</replaceable></"
+"literal> e <literal>APT::FTPArchive::<replaceable>Index</replaceable>::"
+"<replaceable>Checksum</replaceable></literal> onde "
+"<literal><replaceable>Index</replaceable></literal> pode ser "
+"<literal>Packages</literal>, <literal>Sources</literal> ou <literal>Release</"
+"literal> e o <literal><replaceable>Checksum</replaceable></literal> pode ser "
+"<literal>MD5</literal>, <literal>SHA1</literal>, <literal>SHA256</literal> "
+"ou <literal>SHA512</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Use a binary caching DB. This has no effect on the generate command. "
+"Configuration Item: <literal>APT::FTPArchive::DB</literal>."
+msgstr ""
+"Usa uma base de dados de cache binária. Isto não tem efeito no comando "
+"generate. Item de configuração: <literal>APT::FTPArchive::DB</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+"Silencioso; produz saída apropriada para registar em logs, omitindo "
+"indicadores de progresso. Mais q's irão produzir mais silencio até um máximo "
+"de 2. Você também pode usar <option>-q=#</option> para definir o nível de "
+"silêncio, sobrepondo o ficheiro de configuração. Item de Configuração: "
+"<literal>quiet</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Perform Delinking. If the <literal>External-Links</literal> setting is used "
+"then this option actually enables delinking of the files. It defaults to on "
+"and can be turned off with <option>--no-delink</option>. Configuration "
+"Item: <literal>APT::FTPArchive::DeLinkAct</literal>."
+msgstr ""
+"Executa Dissociação. Se é usada a definição <literal>External-Links</"
+"literal> então esta opção activa a dissociação dos ficheiros. A sua "
+"predefinição é ligada e e pode ser desligada com <option>--no-delink</"
+"option>. Item de Configuração: <literal>APT::FTPArchive::DeLinkAct</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Perform contents generation. When this option is set and package indexes are "
+"being generated with a cache DB then the file listing will also be extracted "
+"and stored in the DB for later use. When using the generate command this "
+"option also allows the creation of any Contents files. The default is on. "
+"Configuration Item: <literal>APT::FTPArchive::Contents</literal>."
+msgstr ""
+"Executa a geração de conteúdos. Quando esta opção está definida e os índices "
+"de pacotes são gerados com um base de dados cache então a listagem de "
+"ficheiros também será extraída e guardada na base de dados para utilização "
+"posterior. Quando se usa o comando generate, esta opção também permite a "
+"criação de quaisquer ficheiros de Conteúdos. A predefinição é ligado. Item "
+"de Configuração: <literal>APT::FTPArchive::Contents</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Select the source override file to use with the <literal>sources</literal> "
+"command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</"
+"literal>."
+msgstr ""
+"Selecciona o ficheiro de sobreposição de fonte a usar com o comando "
+"<literal>sources</literal>. Item de Configuração: <literal>APT::FTPArchive::"
+"SourceOverride</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Make the caching databases read only. Configuration Item: <literal>APT::"
+"FTPArchive::ReadOnlyDB</literal>."
+msgstr ""
+"Torna as bases de dados de cache apenas de leitura. Item de Configuração: "
+"<literal>APT::FTPArchive::ReadOnlyDB</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Accept in the <literal>packages</literal> and <literal>contents</literal> "
+"commands only package files matching <literal>*_arch.deb</literal> or "
+"<literal>*_all.deb</literal> instead of all package files in the given "
+"path. Configuration Item: <literal>APT::FTPArchive::Architecture</literal>."
+msgstr ""
+"Aceita nos comandos <literal>packages</literal> e <literal>contents</"
+"literal> apenas ficheiros de pacotes que condizem com <literal>*_arch.deb</"
+"literal> ou <literal>*_all.deb</literal> em vez de todos os ficheiros de "
+"pacotes presentes no caminho fornecido. Item de Configuração: <literal>APT::"
+"FTPArchive::Architecture</literal>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"&apt-ftparchive; caches as much as possible of metadata in a cachedb. If "
+"packages are recompiled and/or republished with the same version again, this "
+"will lead to problems as the now outdated cached metadata like size and "
+"checksums will be used. With this option enabled this will no longer happen "
+"as it will be checked if the file was changed. Note that this option is set "
+"to \"<literal>false</literal>\" by default as it is not recommend to upload "
+"multiply versions/builds of a package with the same versionnumber, so in "
+"theory nobody will have these problems and therefore all these extra checks "
+"are useless."
+msgstr ""
+"&apt-ftparchive; põe em cache o máximo possível de metadados numa base de "
+"dados de cache. Se os pacotes forem recompilados e/ou republicados de novo "
+"com a mesma versão, irá originar problemas porque serão usados os metadados "
+"desactualizados em cache como o tamanho e sumários de verificação. Com esta "
+"opção activa isto não irá mais acontecer porque será verificado se o "
+"ficheiro foi alterado. Note que esta opção vem regulada para "
+"\"<literal>false</literal>\" por predefinição pois não é recomendado "
+"disponibilizar múltiplas versões/compilações de um pacote com o mesmo número "
+"de versão, portanto em teoria ninguém irá ter estes problemas e então todas "
+"as verificações extras serão desnecessárias."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This configuration option defaults to \"<literal>true</literal>\" and should "
+"only be set to <literal>\"false\"</literal> if the Archive generated with "
+"&apt-ftparchive; also provides <filename>Translation</filename> files. Note "
+"that the <filename>Translation-en</filename> master file can only be created "
+"in the generate command."
+msgstr ""
+"Esta opção de configuração tem a predefinição de \"<literal>true</literal>\" "
+"e deve apenas ser definida para <literal>\"false\"</literal> se o Arquivo "
+"gerado com &apt-ftparchive; também disponibilizar ficheiros "
+"<filename>Translation</filename>. Note que o ficheiro mestre "
+"<filename>Translation-en</filename> só pode ser criado no comando generate."
+
+#. type: Content of: <refentry><refsect1><para><programlisting>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n"
+msgstr "<command>apt-ftparchive</command> pacotes <replaceable>directório</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"To create a compressed Packages file for a directory containing binary "
+"packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Para criar um ficheiro Packages comprimido para um directório que contém "
+"pacotes binários (.deb): <placeholder type=\"programlisting\" id=\"0\"/>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+"<command>apt-ftparchive</command> devolve zero na operação normal, 100 "
+"decimal em erro."
+
+#. type: Attribute 'lang' of: <book>
+#: guide.dbk offline.dbk
+msgid "en"
+msgstr "pt"
+
+#. type: Content of: <book><title>
+#: guide.dbk
+msgid "APT User's Guide"
+msgstr "Guia de Utilizador do APT"
+
+#. type: Content of: <book><bookinfo><authorgroup><author><personname>
+#: guide.dbk offline.dbk
+msgid "Jason Gunthorpe"
+msgstr "Jason Gunthorpe"
+
+#. type: Content of: <book><bookinfo><authorgroup><author><email>
+#: guide.dbk offline.dbk
+msgid "jgg@debian.org"
+msgstr "jgg@debian.org"
+
+#. type: Content of: <book><bookinfo><releaseinfo>
+#: guide.dbk offline.dbk
+msgid "Version &apt-product-version;"
+msgstr "Versão &apt-product-version;"
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: guide.dbk
+msgid ""
+"This document provides an overview of how to use the APT package manager."
+msgstr ""
+"Este documento disponibiliza uma visão geral de como usar o gestor de "
+"pacotes APT."
+
+#. type: Content of: <book><bookinfo>
+#: guide.dbk
+msgid ""
+"<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+"<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>"
+
+#. type: Content of: <book><bookinfo><legalnotice><title>
+#: guide.dbk offline.dbk
+msgid "License Notice"
+msgstr "Aviso de Licença"
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk offline.dbk
+msgid ""
+"\"APT\" and this document are free software; you can redistribute them and/"
+"or modify them under the terms of the GNU General Public License as "
+"published by the Free Software Foundation; either version 2 of the License, "
+"or (at your option) any later version."
+msgstr ""
+"\"APT\" e este documento são software livre; você pode distribuí-lo e/ou "
+"modificá-lo sob os termos da GNU General Public License como publicada pela "
+"Free Software Foundation; seja na versão 2 da Licença, ou (por sua opção) "
+"qualquer versão posterior."
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk offline.dbk
+msgid ""
+"For more details, on Debian systems, see the file /usr/share/common-licenses/"
+"GPL for the full license."
+msgstr ""
+"Para mais detalhes em sistemas Debian, veja o ficheiro /usr/share/common-"
+"licenses/GPL para a licença completa."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "General"
+msgstr "Geral"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The APT package currently contains two sections, the APT <command>dselect</"
+"command> method and the <command>apt-get</command> command line user "
+"interface. Both provide a way to install and remove packages as well as "
+"download new packages from the Internet."
+msgstr ""
+"O pacote APT contém actualmente duas secções, o método <command>dselect</"
+"command> do APT e a interface de utilizador de linha de comandos "
+"<command>apt-get</command>. Ambos disponibilizam uma maneira de instalar e "
+"remover pacotes assim como descarregar novos pacotes da Internet."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Anatomy of the Package System"
+msgstr "Anatomia do Sistema de Pacotes"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The Debian packaging system has a large amount of information associated "
+"with each package to help assure that it integrates cleanly and easily into "
+"the system. The most prominent of its features is the dependency system."
+msgstr ""
+"O sistema de pacotes Debian tem uma grande quantidade de informação "
+"associada a cada pacote para ajudar a assegurar que este se integra de modo "
+"limpo e fácil no sistema. A mais proeminente das suas funcionalidades é o "
+"sistema de dependências."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The dependency system allows individual programs to make use of shared "
+"elements in the system such as libraries. It simplifies placing infrequently "
+"used portions of a program in separate packages to reduce the number of "
+"things the average user is required to install. Also, it allows for choices "
+"in mail transport agents, X servers and so on."
+msgstr ""
+"O sistema de dependências permite a programas individuais fazerem uso de "
+"elementos partilhados no sistema tais como as bibliotecas. Facilita a "
+"colocação de porções de um programa usadas raramente em pacotes separados "
+"para reduzir o número de coisas que é necessário instalar ao utilizador "
+"médio. Também permite opções em agentes de transporte de mail, servidores X "
+"e mais."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The first step to understanding the dependency system is to grasp the "
+"concept of a simple dependency. The meaning of a simple dependency is that a "
+"package requires another package to be installed at the same time to work "
+"properly."
+msgstr ""
+"O primeiro passo para compreender o sistema de dependências é pegar no "
+"conceito de uma dependência simples. O significado de uma dependência "
+"simples é que um pacote requer outro pacote seja instalado ao mesmo tempo "
+"para funcionar correctamente."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"For instance, mailcrypt is an emacs extension that aids in encrypting email "
+"with GPG. Without GPGP installed mailcrypt is useless, so mailcrypt has a "
+"simple dependency on GPG. Also, because it is an emacs extension it has a "
+"simple dependency on emacs, without emacs it is completely useless."
+msgstr ""
+"Por exemplo, mailcrypt é uma extensão do emacs que ajuda a encriptar mail "
+"com GPG. Sem o GPGP instalado o mailcrypt é inútil, então o mailcrypt tem "
+"uma dependência simples do GPG. Também, porque é uma extensão do emacs, tem "
+"uma dependência simples do emacs, e sem o emacs é completamente inútil."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The other important dependency to understand is a conflicting dependency. It "
+"means that a package, when installed with another package, will not work and "
+"may possibly be extremely harmful to the system. As an example consider a "
+"mail transport agent such as sendmail, exim or qmail. It is not possible to "
+"have two mail transport agents installed because both need to listen to the "
+"network to receive mail. Attempting to install two will seriously damage the "
+"system so all mail transport agents have a conflicting dependency with all "
+"other mail transport agents."
+msgstr ""
+"A outra dependência importante a compreender é a dependência de conflito. "
+"Significa que um pacote, quando instalado com outro pacote, não irá "
+"funcionar e pode ser extremamente prejudicial para o sistema. Como exemplo "
+"considere um agente de transporte de mail como o sendmail, exim ou qmail. "
+"Não é possível ter dois agentes de transporte de mail instalados porque "
+"ambos precisam de escutar na rede para receberem mail. Tentar instalar dois "
+"irá danificar seriamente o sistema, por isso todos os agentes de transporte "
+"de mail têm uma dependência de conflito com todos os outros agentes de "
+"transporte de mail."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"As an added complication there is the possibility for a package to pretend "
+"to be another package. Consider that exim and sendmail for many intents are "
+"identical, they both deliver mail and understand a common interface. Hence, "
+"the package system has a way for them to declare that they are both mail-"
+"transport-agents. So, exim and sendmail both declare that they provide a "
+"mail-transport-agent and other packages that need a mail transport agent "
+"depend on mail-transport-agent. This can add a great deal of confusion when "
+"trying to manually fix packages."
+msgstr ""
+"Como uma complicação adicional existe a possibilidade de um pacote fingir "
+"ser outro pacote. Considere que exim e sendmail para muitas intenções são "
+"idênticos, ambos entregam mail e compreendem uma interface comum. Por isso, "
+"o sistema de pacotes tem um modo para eles declararem que são ambos mail-"
+"transport-agents. Portanto, ambos exim e sendmail declaram que "
+"disponibilizam um mail-transport-agent e outros pacotes que precisam de um "
+"agente de transporte de mail dependem de um mail-transport-agent. Isto pode "
+"adicionar uma grande confusão quando se tenta corrigir pacotes manualmente."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"At any given time a single dependency may be met by packages that are "
+"already installed or it may not be. APT attempts to help resolve dependency "
+"issues by providing a number of automatic algorithms that help in selecting "
+"packages for installation."
+msgstr ""
+"Em qualquer altura uma única dependência pode ser satisfeita por pacotes que "
+"já estão instalados ou podem não estar. O APT tenta ajudar a resolver "
+"problemas com dependências ao disponibilizar um número de algoritmos "
+"automáticos que ajudam a seleccionar os pacotes para instalação."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "apt-get"
+msgstr "apt-get"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"<command>apt-get</command> provides a simple way to install packages from "
+"the command line. Unlike <command>dpkg</command>, <command>apt-get</command> "
+"does not understand .deb files, it works with the package's proper name and "
+"can only install .deb archives from a <emphasis>Source</emphasis>."
+msgstr ""
+"<command>apt-get</command> fornece uma maneira simples de instalar pacotes a "
+"partir da linha de comandos. Ao contrário do <command>dpkg</command>, o "
+"<command>apt-get</command> não compreende os ficheiros .deb, funciona com o "
+"nome próprio do pacote e apenas pode instalar arquivos .deb a partir de uma "
+"<emphasis>Source</emphasis>."
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk
+msgid ""
+"If you are using an http proxy server you must set the http_proxy "
+"environment variable first, see sources.list(5)"
+msgstr ""
+"se você está a usar um servidor proxy http você tem que definir a variável "
+"de ambiente http_proxy primeiro, veja sources.list(5)"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The first <placeholder type=\"footnote\" id=\"0\"/> thing that should be "
+"done before using <command>apt-get</command> is to fetch the package lists "
+"from the <emphasis>Sources</emphasis> so that it knows what packages are "
+"available. This is done with <literal>apt-get update</literal>. For instance,"
+msgstr ""
+"O primeira <placeholder type=\"footnote\" id=\"0\"/> coisa que deve ser "
+"feita antes de usar <command>apt-get</command> é obter as listas de pacotes "
+"a partir das <emphasis>Sources</emphasis> para que ele saiba que pacotes "
+"estão disponíveis. Isto é feito com <literal>apt-get update</literal>. Por "
+"exemplo,"
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+"# apt-get update\n"
+"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid "Once updated there are several commands that can be used:"
+msgstr "Uma vez actualizado existem vários comandos que podem ser usados:"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "upgrade"
+msgstr "upgrade"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Upgrade will attempt to gently upgrade the whole system. Upgrade will never "
+"install a new package or remove an existing package, nor will it ever "
+"upgrade a package that might cause some other package to break. This can be "
+"used daily to relatively safely upgrade the system. Upgrade will list all of "
+"the packages that it could not upgrade, this usually means that they depend "
+"on new packages or conflict with some other package. <command>dselect</"
+"command> or <literal>apt-get install</literal> can be used to force these "
+"packages to install."
+msgstr ""
+"Upgrade irá tentar actualizar gentilmente todo o sistema. Upgrade nunca irá "
+"instalar um pacote novo ou remover um pacote existente, nem nunca irá "
+"actualizar um pacote que possa causar a quebra de outro pacote. Isto pode "
+"ser usado diariamente para actualizar o sistema com relativa segurança. "
+"Upgrade ira listar todos os pacotes que não pode actualizar, isto geralmente "
+"significa que eles dependem de novos pacotes ou entram em conflito com algum "
+"outro pacote. <command>dselect</command> ou <literal>apt-get install</"
+"literal> podem ser usados para forçar estes pacotes a instalar."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "install"
+msgstr "install"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Install is used to install packages by name. The package is automatically "
+"fetched and installed. This can be useful if you already know the name of "
+"the package to install and do not want to go into a GUI to select it. Any "
+"number of packages may be passed to install, they will all be fetched. "
+"Install automatically attempts to resolve dependency problems with the "
+"listed packages and will print a summary and ask for confirmation if "
+"anything other than its arguments are changed."
+msgstr ""
+"Install é usado para instalar pacotes pelo nome. O pacote é obtido "
+"automaticamente e instalado. Isto pode ser útil se você já conhecer o nome "
+"do pacote a instalar e não quer ir para uma GUI para o seleccionar. Podem "
+"ser passados qualquer número de pacotes para instalar, todos eles serão "
+"obtidos. Install tenta automaticamente resolver problemas de dependências "
+"com os pacotes listados e irá escrever um sumário e pedir confirmação se "
+"algo mais que os seus argumentos serão alterados."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "dist-upgrade"
+msgstr "dist-upgrade"
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Dist-upgrade is a complete upgrader designed to simplify upgrading between "
+"releases of Debian. It uses a sophisticated algorithm to determine the best "
+"set of packages to install, upgrade and remove to get as much of the system "
+"to the newest release. In some situations it may be desired to use dist-"
+"upgrade rather than spend the time manually resolving dependencies in "
+"<command>dselect</command>. Once dist-upgrade has completed then "
+"<command>dselect</command> can be used to install any packages that may have "
+"been left out."
+msgstr ""
+"Dist-upgrade é um actualizador completo desenhado para simplificar a "
+"actualização entre lançamentos da Debian. Usa um algoritmo sofisticado para "
+"determinar o melhor conjunto de pacotes a instalar, actualizar ou remover "
+"para obter o máximo do sistema para o novo lançamento. Em algumas situações "
+"pode ser desejável usar o dist-upgrade em vez de passar o tempo a resolver "
+"dependências manualmente no <command>dselect</command>. Assim que o dist-"
+"upgrade tiver terminado então pode ser usado o <command>dselect</command> "
+"para instalar quaisquer pacotes que tenham ficado de fora."
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"It is important to closely look at what dist-upgrade is going to do, its "
+"decisions may sometimes be quite surprising."
+msgstr ""
+"É importante observar de perto o que o dist-upgrade vai fazer, as suas "
+"decisões podem por vezes ser bastante surpreendentes."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"<command>apt-get</command> has several command line options that are "
+"detailed in its man page, <citerefentry><refentrytitle>apt-get</"
+"refentrytitle><manvolnum>8</manvolnum></citerefentry>. The most useful "
+"option is <literal>-d</literal> which does not install the fetched files. If "
+"the system has to download a large number of package it would be undesired "
+"to start installing them in case something goes wrong. When <literal>-d</"
+"literal> is used the downloaded archives can be installed by simply running "
+"the command that caused them to be downloaded again without <literal>-d</"
+"literal>."
+msgstr ""
+"<command>apt-get</command> tem várias opções de linha de comandos que estão "
+"detalhados no seu manual, <citerefentry><refentrytitle>apt-get</"
+"refentrytitle><manvolnum>8</manvolnum></citerefentry>. A opção mais útil é "
+"<literal>-d</literal> que não instala os pacotes obtidos, Se o sistema tiver "
+"que descarregar um grande número de pacotes seria indesejável começar a "
+"instalá-los no caso de algo correr mal. Quando se usa <literal>-d</literal> "
+"os arquivos descarregados podem ser instalados simplesmente ao correr de "
+"novo comando que s descarregou mas sem o <literal>-d</literal>."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "DSelect"
+msgstr "DSelect"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The APT <command>dselect</command> method provides the complete APT system "
+"with the <command>dselect</command> package selection GUI. <command>dselect</"
+"command> is used to select the packages to be installed or removed and APT "
+"actually installs them."
+msgstr ""
+"O método <command>dselect</command> do APT disponibiliza o sistema APT "
+"completo com a GUI de selecção de pacotes <command>dselect</command>. O "
+"<command>dselect</command> é usado para seleccionar os pacotes a serem "
+"instalados ou removidos e o APT instala-os."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"To enable the APT method you need to select [A]ccess in <command>dselect</"
+"command> and then choose the APT method. You will be prompted for a set of "
+"<emphasis>Sources</emphasis> which are places to fetch archives from. These "
+"can be remote Internet sites, local Debian mirrors or CD-ROMs. Each source "
+"can provide a fragment of the total Debian archive, APT will automatically "
+"combine them to form a complete set of packages. If you have a CD-ROM then "
+"it is a good idea to specify it first and then specify a mirror so that you "
+"have access to the latest bug fixes. APT will automatically use packages on "
+"your CD-ROM before downloading from the Internet."
+msgstr ""
+"Para activar o método APT você precisa de seleccionar [A]ccess no "
+"<command>dselect</command> e depois escolher o método APT. Ser-lhe-à "
+"perguntado por um conjunto de <emphasis>Sources</emphasis> que são os "
+"lugares de onde obter os arquivos. Estes podem ser sites remotos da "
+"Internet, mirrors Debian locais ou CD-ROMs. Cada source pode disponibilizar "
+"um fragmento do arquivo Debian total. O APT irá automaticamente combiná-los "
+"para formar um conjunto completo de pacotes. Se tem um CD-ROM, então é boa "
+"ideia especificá-lo em primeiro lugar e depois especificar um mirror para "
+"ter acesso às correcções de bugs mais recentes. O APT irá automaticamente "
+"usar os pacotes no seu CD-ROM antes de descarregar da Internet."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Set up a list of distribution source locations\n"
+"\n"
+" Please give the base URL of the debian distribution.\n"
+" The access schemes I know about are: http file\n"
+"\n"
+" For example:\n"
+" file:/mnt/debian,\n"
+" ftp://ftp.debian.org/debian,\n"
+" http://ftp.de.debian.org/debian,\n"
+"\n"
+"\n"
+" URL [http://llug.sep.bnl.gov/debian]:\n"
+msgstr ""
+" Configurar uma lista de localizações fonte da distribuição\n"
+"\n"
+" Por favor forneça o URL base da distribuição Debian.\n"
+" Os esquemas de acesso que conheço são: http file\n"
+"\n"
+" Por exemplo:\n"
+" file:/mnt/debian,\n"
+" ftp://ftp.debian.org/debian,\n"
+" http://ftp.de.debian.org/debian,\n"
+"\n"
+"\n"
+" URL [http://llug.sep.bnl.gov/debian]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The <emphasis>Sources</emphasis> setup starts by asking for the base of the "
+"Debian archive, defaulting to a HTTP mirror. Next it asks for the "
+"distribution to get."
+msgstr ""
+"A configuração de <emphasis>Sources</emphasis> começa por perguntar pela "
+"base do arquivo Debian, usando por predefinição um mirror HTTP. Depois "
+"pergunta qual a distribuição a obter."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Please give the distribution tag to get or a path to the\n"
+" package file ending in a /. The distribution\n"
+" tags are typically something like: stable unstable testing non-US\n"
+"\n"
+" Distribution [stable]:\n"
+msgstr ""
+" Por favor forneça a etiqueta da distribuição a obter ou um caminho para o\n"
+" ficheiro package terminando com um /. As etiquetas da\n"
+" distribuição são tipicamente algo como: stable unstable testing non-US\n"
+"\n"
+" Distribution [stable]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The distribution refers to the Debian version in the archive, "
+"<emphasis>stable</emphasis> refers to the latest released version and "
+"<emphasis>unstable</emphasis> refers to the developmental version. "
+"<emphasis>non-US</emphasis> is only available on some mirrors and refers to "
+"packages that contain encryption technology or other things that cannot be "
+"exported from the United States. Importing these packages into the US is "
+"legal however."
+msgstr ""
+"A distribuição refere-se à versão Debian no arquivo, <emphasis>stable</"
+"emphasis> refere-se à última versão lançada e <emphasis>unstable</emphasis> "
+"refere-se à versão de desenvolvimento. <emphasis>non-US</emphasis> apenas "
+"está disponível em alguns mirrors e refere-se a pacotes que contém "
+"tecnologia de encriptação ou outras coisas que não podem ser exportadas dos "
+"Estados Unidos. No entanto importar estes pacotes para os US é legal."
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Please give the components to get\n"
+" The components are typically something like: main contrib non-free\n"
+"\n"
+" Components [main contrib non-free]:\n"
+msgstr ""
+" Por favor forneça os componentes a obter\n"
+" Tipicamente os componentes são algo como: main contrib non-free\n"
+"\n"
+" Componentes [main contrib non-free]:\n"
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The components list refers to the list of sub distributions to fetch. The "
+"distribution is split up based on software licenses, main being DFSG free "
+"packages while contrib and non-free contain things that have various "
+"restrictions placed on their use and distribution."
+msgstr ""
+"A lista de componentes refere-se à lista das sub-distribuições a obter. A "
+"distribuição é dividida baseando-se nas licenças do software, sendo main "
+"pacotes livres DFSG enquanto contrib e non-free contêm coisas que têm várias "
+"restrições colocadas no seu uso e distribuição."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Any number of sources can be added, the setup script will continue to prompt "
+"until you have specified all that you want."
+msgstr ""
+"Pode ser adicionado qualquer número de fontes, o script de configuração irá "
+"continuar a perguntar-lhe até que tenha especificado todas as que deseja."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Before starting to use <command>dselect</command> it is necessary to update "
+"the available list by selecting [U]pdate from the menu. This is a superset "
+"of <literal>apt-get update</literal> that makes the fetched information "
+"available to <command>dselect</command>. [U]pdate must be performed even if "
+"<literal>apt-get update</literal> has been run before."
+msgstr ""
+"Antes de começar a usar o <command>dselect</command> é necessário actualizar "
+"a lista disponível ao seleccionar [U]pdate no menu. Isto é um super-conjunto "
+"do <literal>apt-get update</literal> que torna a informação obtida "
+"disponível ao <command>dselect</command>. Deve ser executado o [U]pdate "
+"mesmo que tenha sido feito <literal>apt-get update</literal> antes."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"You can then go on and make your selections using [S]elect and then perform "
+"the installation using [I]nstall. When using the APT method the [C]onfig and "
+"[R]emove commands have no meaning, the [I]nstall command performs both of "
+"them together."
+msgstr ""
+"Você pode depois fazer as suas selecções usando [S]elect e depois executar a "
+"instalação usando [I]nstall. Quando se usa o método APT os comandos [C]onfig "
+"e [R]emove não fazem sentido, o comando [I]nstall executa ambos juntamente."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"By default APT will automatically remove the package (.deb) files once they "
+"have been successfully installed. To change this behavior place "
+"<literal>Dselect::clean \"prompt\";</literal> in /etc/apt/apt.conf."
+msgstr ""
+"Por predefinição o APT irá automaticamente remover o ficheiro de pacote (."
+"deb) assim que ele tenha sido instalado com sucesso. Para alterar este "
+"comportamento coloque <literal>Dselect::clean \"prompt\";</literal> em /etc/"
+"apt/apt.conf."
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "The Interface"
+msgstr "A Interface"
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk
+msgid ""
+"The <command>dselect</command> method actually is a set of wrapper scripts "
+"to <command>apt-get</command>. The method actually provides more "
+"functionality than is present in <command>apt-get</command> alone."
+msgstr ""
+"O método <command>dselect</command> na verdade é um conjunto de scripts "
+"wrapper para o <command>apt-get</command>. O método disponibiliza mais "
+"funcionalidades que aquelas presentes no <command>apt-get</command> sozinho."
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Both that APT <command>dselect</command> method and <command>apt-get</"
+"command> share the same interface. It is a simple system that generally "
+"tells you what it will do and then goes and does it. <placeholder type="
+"\"footnote\" id=\"0\"/> After printing out a summary of what will happen APT "
+"then will print out some informative status messages so that you can "
+"estimate how far along it is and how much is left to do."
+msgstr ""
+"Ambos método <command>dselect</command> do APT e <command>apt-get</command> "
+"partilham a mesma interface. É um sistema simples que geralmente lhe diz o "
+"que vai fazer e depois fá-lo. <placeholder type=\"footnote\" id=\"0\"/> Após "
+"escrever um sumário do que vai acontecer, o APT depois irá escrever algumas "
+"mensagens de estado informativo para que você possa estimar o progresso e "
+"quanto falta fazer."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Startup"
+msgstr "Arranque"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Before all operations except update, APT performs a number of actions to "
+"prepare its internal state. It also does some checks of the system's state. "
+"At any time these operations can be performed by running <literal>apt-get "
+"check</literal>."
+msgstr ""
+"Antes de todas as operações, excepto a update, o APT executa um número de "
+"acções para preparar o seu estado interno. Também faz algumas verificações "
+"do estado do sistema. A qualquer altura estas operações pode ser executadas "
+"correndo <literal>apt-get check</literal>."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The first thing it does is read all the package files into memory. APT uses "
+"a caching scheme so this operation will be faster the second time it is run. "
+"If some of the package files are not found then they will be ignored and a "
+"warning will be printed when apt-get exits."
+msgstr ""
+"A primeira coisa que faz é ler todos os ficheiros de pacotes para a memória. "
+"O APT usa um esquema de cache para que esta operação seja mais rápida na "
+"segunda vez que é executada. Se alguns dos ficheiros de pacotes não forem "
+"encontrados serão ignorados e será mostrado um aviso quando o apt-get "
+"terminar."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The final operation performs a detailed analysis of the system's "
+"dependencies. It checks every dependency of every installed or unpacked "
+"package and considers if it is OK. Should this find a problem then a report "
+"will be printed out and <command>apt-get</command> will refuse to run."
+msgstr ""
+"A operação final executa uma análise detalhada das dependências do sistema. "
+"Verifica cada dependência de cada pacote instalado ou desempacotado e "
+"considera se está OK. Caso isto encontre um problema, então é escrito um "
+"relatório e o <command>apt-get</command> recusa-se a funcionar."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+"You might want to run 'apt --fix-broken install' to correct these.\n"
+"Sorry, but the following packages have unmet dependencies:\n"
+" 9fonts: Depends: xlib6g but it is not installed\n"
+" uucp: Depends: mailx but it is not installed\n"
+" blast: Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" adduser: Depends: perl-base but it is not installed\n"
+" aumix: Depends: libgpmg1 but it is not installed\n"
+" debiandoc-sgml: Depends: sgml-base but it is not installed\n"
+" bash-builtins: Depends: bash (&gt;= 2.01) but 2.0-3 is installed\n"
+" cthugha: Depends: svgalibg1 but it is not installed\n"
+" Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" libreadlineg2: Conflicts:libreadline2 (&lt;&lt; 2.1-2.1)\n"
+msgstr ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+"You might want to run 'apt --fix-broken install' to correct these.\n"
+"Sorry, but the following packages have unmet dependencies:\n"
+" 9fonts: Depends: xlib6g but it is not installed\n"
+" uucp: Depends: mailx but it is not installed\n"
+" blast: Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" adduser: Depends: perl-base but it is not installed\n"
+" aumix: Depends: libgpmg1 but it is not installed\n"
+" debiandoc-sgml: Depends: sgml-base but it is not installed\n"
+" bash-builtins: Depends: bash (&gt;= 2.01) but 2.0-3 is installed\n"
+" cthugha: Depends: svgalibg1 but it is not installed\n"
+" Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" libreadlineg2: Conflicts:libreadline2 (&lt;&lt; 2.1-2.1)\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"In this example the system has many problems, including a serious problem "
+"with libreadlineg2. For each package that has unmet dependencies a line is "
+"printed out indicating the package with the problem and the dependencies "
+"that are unmet. A short explanation of why the package has a dependency "
+"problem is also included."
+msgstr ""
+"Neste exemplo o sistema tem muitos problemas, incluindo um sério problema "
+"com libreadlineg2. Para cada pacote que tem dependências não satisfeitas, é "
+"escrita uma linha indicando o pacote com o problema e as dependências que "
+"não estão satisfeitas. É também incluída uma explicação curta de porquê o "
+"pacote tem um problema de dependência."
+
+#. type: Content of: <book><chapter><section><para><footnote><para>
+#: guide.dbk
+msgid ""
+"APT however considers all known dependencies and attempts to prevent broken "
+"packages"
+msgstr ""
+"No entanto o APT considera todas as dependências conhecidas e tenta prevenir "
+"pacotes quebrados"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"There are two ways a system can get into a broken state like this. The first "
+"is caused by <command>dpkg</command> missing some subtle relationships "
+"between packages when performing upgrades. <placeholder type=\"footnote\" id="
+"\"0\"/>. The second is if a package installation fails during an operation. "
+"In this situation a package may have been unpacked without its dependents "
+"being installed."
+msgstr ""
+"Existem duas maneiras de um sistema entrar num estado de quebra como este. A "
+"primeira é causada pelo <command>dpkg</command> que não vê algumas relações "
+"subtis entre pacotes quando executa actualizações. <placeholder type="
+"\"footnote\" id=\"0\"/>. A segunda é se uma instalação de pacote falha "
+"durante uma operação. Nesta situação um pacote pode ter sido desempacotado "
+"sem que as suas dependências tenham sido instaladas."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The second situation is much less serious than the first because APT places "
+"certain constraints on the order that packages are installed. In both cases "
+"supplying the <literal>-f</literal> option to <command>apt-get</command> "
+"will cause APT to deduce a possible solution to the problem and then "
+"continue on. The APT <command>dselect</command> method always supplies the "
+"<literal>-f</literal> option to allow for easy continuation of failed "
+"maintainer scripts."
+msgstr ""
+"A segunda situação é muito menos séria que a primeira porque o APT coloca "
+"certos constrangimentos na ordem que os pacotes são instalados. Em ambos os "
+"casos, fornecer a opção <literal>-f</literal> ao <command>apt-get</command> "
+"irá fazer com que o APT deduza uma solução possível para o problema e depois "
+"continue. O método <command>dselect</command> do APT fornece sempre a opção "
+"<literal>-f</literal> para permitir uma continuação fácil de scripts do "
+"responsável com falhas."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"However, if the <literal>-f</literal> option is used to correct a seriously "
+"broken system caused by the first case then it is possible that it will "
+"either fail immediately or the installation sequence will fail. In either "
+"case it is necessary to manually use dpkg (possibly with forcing options) to "
+"correct the situation enough to allow APT to proceed."
+msgstr ""
+"No entanto, se for usada a opção <literal>-f</literal> para corrigir um "
+"sistema seriamente quebrado causado pelo primeiro caso, então é possível que "
+"ou falhe imediatamente ou falhe na sequência de instalação. Em qualquer dos "
+"casos é necessário usar o dpkg manualmente (possivelmente com opções de "
+"forçar) para corrigir a situação o suficiente para permitir ao APT continuar."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "The Status Report"
+msgstr "O Relatório de Estado"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Before proceeding <command>apt-get</command> will present a report on what "
+"will happen. Generally the report reflects the type of operation being "
+"performed but there are several common elements. In all cases the lists "
+"reflect the final state of things, taking into account the <literal>-f</"
+"literal> option and any other relevant activities to the command being "
+"executed."
+msgstr ""
+"Antes de prosseguir, o <command>apt-get</command> irá apresentar um "
+"relatório do que irá acontecer. Geralmente o relatório reflecte o tipo de "
+"operações a ser executadas mas há vários elementos comuns. Em todos os casos "
+"a lista reflecte o estado final das coisas, tendo em conta a opção <literal>-"
+"f</literal> e quaisquer outras actividades relevantes ao comando que vai ser "
+"executado."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Extra Package list"
+msgstr "A lista de Pacotes Extra"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following extra packages will be installed:\n"
+" libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl\n"
+" mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base\n"
+" bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy\n"
+" squake pgp-i python-base debmake ldso perl libreadlineg2\n"
+" ssh\n"
+msgstr ""
+"Os seguinte pacotes extra serão instalados:\n"
+" libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl\n"
+" mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base\n"
+" bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy\n"
+" squake pgp-i python-base debmake ldso perl libreadlineg2\n"
+" ssh\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The Extra Package list shows all of the packages that will be installed or "
+"upgraded in excess of the ones mentioned on the command line. It is only "
+"generated for an <literal>install</literal> command. The listed packages are "
+"often the result of an Auto Install."
+msgstr ""
+"A lista de Pacotes Extra mostra todos os pacotes que irão ser instalados ou "
+"actualizados em excesso daqueles mencionados na linha de comandos. É apenas "
+"gerada para um comando <literal>install</literal>. Os pacotes listados são "
+"geralmente o resultado de uma Auto instalação."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Packages to Remove"
+msgstr "Os Pacotes para Remover"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following packages will be REMOVED:\n"
+" xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix\n"
+" xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel\n"
+" xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid\n"
+" nas xpilot xfig\n"
+msgstr ""
+"Os seguintes pacotes irão ser REMOVIDOS:\n"
+" xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix\n"
+" xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel\n"
+" xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid\n"
+" nas xpilot xfig\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The Packages to Remove list shows all of the packages that will be removed "
+"from the system. It can be shown for any of the operations and should be "
+"given a careful inspection to ensure nothing important is to be taken off. "
+"The <literal>-f</literal> option is especially good at generating packages "
+"to remove so extreme care should be used in that case. The list may contain "
+"packages that are going to be removed because they are only partially "
+"installed, possibly due to an aborted installation."
+msgstr ""
+"A lista Pacotes para Remover mostra todos os pacotes que irão ser removidos "
+"do sistema. Pode ser mostrada para qualquer das operações e deve ser-lhe "
+"dada uma inspecção cuidadosa para assegurar que nada de importante vai ser "
+"removido. A opção <literal>-f</literal> é especialmente boa a gerar pacotes "
+"para remover, portanto neste caso deve-se usar cuidados extremos. A lista "
+"pode conter pacotes que vão ser removidos porque estão apenas parcialmente "
+"instalados, possivelmente devido a uma instalação abortada."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The New Packages list"
+msgstr "A lista de Novos Pacotes"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following NEW packages will installed:\n"
+" zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base\n"
+msgstr ""
+"Os seguintes pacotes NOVOS irão ser instalados:\n"
+" zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The New Packages list is simply a reminder of what will happen. The packages "
+"listed are not presently installed in the system but will be when APT is "
+"done."
+msgstr ""
+"A lista de Novos Pacotes é simplesmente um lembrete do que vai acontecer. Os "
+"pacotes listados não estão instalados presentemente no sistema mas irão "
+"estar quando o APT terminar."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Kept Back list"
+msgstr "A lista Kept Back"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following packages have been kept back\n"
+" compface man-db tetex-base msql libpaper svgalib1\n"
+" gs snmp arena lynx xpat2 groff xscreensaver\n"
+msgstr ""
+"Os seguintes pacotes formam mantidos na versão antiga\n"
+" compface man-db tetex-base msql libpaper svgalib1\n"
+" gs snmp arena lynx xpat2 groff xscreensaver\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Whenever the whole system is being upgraded there is the possibility that "
+"new versions of packages cannot be installed because they require new things "
+"or conflict with already installed things. In this case the package will "
+"appear in the Kept Back list. The best way to convince packages listed there "
+"to install is with <literal>apt-get install</literal> or by using "
+"<command>dselect</command> to resolve their problems."
+msgstr ""
+"Sempre que todo o sistema é actualizado existe a possibilidade que novas "
+"versões de pacotes não possam ser instaladas porque requerem coisas novas ou "
+"entram em conflito com coisas já instaladas. Nestes casos o pacote irá "
+"aparecer na lista Kept Back. A melhor maneira de convencer os pacotes "
+"listados aqui a instalarem é com o <literal>apt-get install</literal> ou "
+"usando o <command>dselect</command> para resolver os seus problemas."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "Held Packages warning"
+msgstr "Aviso de Pacotes Mantidos"
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following held packages will be changed:\n"
+" cvs\n"
+msgstr ""
+"Os seguintes pacotes mantidos irão ser alterados:\n"
+" cvs\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Sometimes you can ask APT to install a package that is on hold, in such a "
+"case it prints out a warning that the held package is going to be changed. "
+"This should only happen during dist-upgrade or install."
+msgstr ""
+"Por vezes você pode pedir ao APT para instalar um pacote que está retido, "
+"nestes casos ele mostra um aviso que o pacote retido vai ser alterado. Isto "
+"apenas deve acontecer durante um dist-upgrade ou install."
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "Final summary"
+msgstr "Sumário final"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Finally, APT will print out a summary of all the changes that will occur."
+msgstr ""
+"Finalmente, o APT irá escrever um sumário de todas as alterações que irão "
+"acontecer."
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"206 packages upgraded, 8 newly installed, 23 to remove and 51 not upgraded.\n"
+"12 packages not fully installed or removed.\n"
+"Need to get 65.7M/66.7M of archives. After unpacking 26.5M will be used.\n"
+msgstr ""
+"206 pacotes actualizados, 8 instalados de novo, 23 para remover e 51 não actualizados.\n"
+"12 pacotes não totalmente instalados ou removidos.\n"
+"É necessário obter 65.7M/66.7M de arquivos. Após desempacotamento será usado 26.5M.\n"
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The first line of the summary simply is a reduced version of all of the "
+"lists and includes the number of upgrades - that is packages already "
+"installed that have new versions available. The second line indicates the "
+"number of poorly configured packages, possibly the result of an aborted "
+"installation. The final line shows the space requirements that the "
+"installation needs. The first pair of numbers refer to the size of the "
+"archive files. The first number indicates the number of bytes that must be "
+"fetched from remote locations and the second indicates the total size of all "
+"the archives required. The next number indicates the size difference between "
+"the presently installed packages and the newly installed packages. It is "
+"roughly equivalent to the space required in /usr after everything is done. "
+"If a large number of packages are being removed then the value may indicate "
+"the amount of space that will be freed."
+msgstr ""
+"A primeira linha do sumário é simplesmente uma versão reduzida de todas as "
+"listas e inclui o número de actualizações - que é os pacotes já instalados "
+"que têm novas versões disponíveis. A segunda linha indica o número de "
+"pacotes mal configurados, possivelmente o resultado de uma instalação "
+"abortada. A linha final mostra os requisitos de espaço que a instalação "
+"precisa. O primeiro par de número refere-se ao tamanho dos ficheiros de "
+"arquivos. O primeiro número indica o número de bytes que precisam ser "
+"obtidos a partir das localizações remotas e o segundo indica o tamanho total "
+"do todos os arquivos necessários. O número seguinte indica a diferença de "
+"tamanho entre os pacotes presentemente instalados e os pacotes instalados de "
+"fresco. É aproximadamente equivalente ao espaço requerido em /usr após tudo "
+"estar feito. Se forem removidos um grande número de pacotes então o valor "
+"pode indicar a quantidade de espaço que irá ser libertado."
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Some other reports can be generated by using the -u option to show packages "
+"to upgrade, they are similar to the previous examples."
+msgstr ""
+"Outros relatórios podem ser gerados ao usar a opção -u para mostrar os "
+"pacotes a actualizar, e são semelhantes aos exemplos prévios."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "The Status Display"
+msgstr "O Mostrador de Estado"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"During the download of archives and package files APT prints out a series of "
+"status messages."
+msgstr ""
+"Durante a descarga dos arquivos e ficheiros de pacotes, o APT escreve uma "
+"série de mensagens de estado."
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+"11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
+msgstr ""
+"# apt-get update\n"
+"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+"11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The lines starting with <emphasis>Get</emphasis> are printed out when APT "
+"begins to fetch a file while the last line indicates the progress of the "
+"download. The first percent value on the progress line indicates the total "
+"percent done of all files. Unfortunately since the size of the Package files "
+"is unknown <literal>apt-get update</literal> estimates the percent done "
+"which causes some inaccuracies."
+msgstr ""
+"A linhas iniciadas com <emphasis>Get</emphasis> são escritas quando o APT "
+"começa a obter um ficheiro enquanto a última linha indica o progresso da "
+"descarga. O primeiro valor percentual na linha de progresso indica a "
+"percentagem total completa de todos os ficheiros. Infelizmente como o "
+"tamanho dos ficheiros de Pacotes é desconhecido o <literal>apt-get update</"
+"literal> estima a percentagem de pronto o que causa algumas imprecisões."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The next section of the status line is repeated once for each download "
+"thread and indicates the operation being performed and some useful "
+"information about what is happening. Sometimes this section will simply read "
+"<emphasis>Forking</emphasis> which means the OS is loading the download "
+"module. The first word after the [ is the fetch number as shown on the "
+"history lines. The next word is the short form name of the object being "
+"downloaded. For archives it will contain the name of the package that is "
+"being fetched."
+msgstr ""
+"A secção seguinte da linha de estado é repetida para cada processo de "
+"descarga e indica a operação a ser executada e alguma informação útil acerca "
+"do que está a acontecer. Por vezes esta secção irá simplesmente ler "
+"<emphasis>Forking</emphasis> o que representa que o SO está a carregar o "
+"módulo de download. A primeira palavra após o [ é o número de obtenção como "
+"mostrado nas linhas de histórico. A palavra seguinte é o nome em formato "
+"curto do objecto a ser descarregado. Para os arquivos irá conter o nome do "
+"pacote que está a ser descarregado."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Inside of the single quote is an informative string indicating the progress "
+"of the negotiation phase of the download. Typically it progresses from "
+"<emphasis>Connecting</emphasis> to <emphasis>Waiting for file</emphasis> to "
+"<emphasis>Downloading</emphasis> or <emphasis>Resuming</emphasis>. The final "
+"value is the number of bytes downloaded from the remote site. Once the "
+"download begins this is represented as <literal>102/10.2k</literal> "
+"indicating that 102 bytes have been fetched and 10.2 kilobytes is expected. "
+"The total size is always shown in 4 figure notation to preserve space. After "
+"the size display is a percent meter for the file itself. The second last "
+"element is the instantaneous average speed. This values is updated every 5 "
+"seconds and reflects the rate of data transfer for that period. Finally is "
+"shown the estimated transfer time. This is updated regularly and reflects "
+"the time to complete everything at the shown transfer rate."
+msgstr ""
+"Dentro da única citação está uma string de informação que indica o progresso "
+"da fase de negociação do download. Progride tipicamente de <emphasis>A "
+"Ligar</emphasis> para <emphasis>À espera do ficheiro</emphasis> para "
+"<emphasis>A descarregar</emphasis> ou <emphasis>A resumir</emphasis>. O "
+"valor final é o número de bytes descarregados a partir do site remoto. Uma "
+"vez começado a descarga isto é representado como <literal>102/10.2k</"
+"literal> indicando que 102 bytes foram obtidos e são esperados "
+"10.2kilobytes. O tamanho total é sempre representado numa anotação de 4 "
+"figuras para preservar espaço. Após a amostragem do tamanho está um medidor "
+"de percentagem para o próprio ficheiro. O segundo último elemento é a "
+"velocidade média instantânea. Estes valores são actualizados a cada 5 "
+"segundos e reflectem a taxa de dados transferidos para esse período. "
+"Finalmente é mostrado o tempo estimado de transferência. Isto é actualizado "
+"regularmente e reflecte o tempo para completar tudo ao ritmo de "
+"transferência mostrado."
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The status display updates every half second to provide a constant feedback "
+"on the download progress while the Get lines scroll back whenever a new file "
+"is started. Since the status display is constantly updated it is unsuitable "
+"for logging to a file, use the <literal>-q</literal> option to remove the "
+"status display."
+msgstr ""
+"O mostrador de estado actualiza-se a cada meio segundo para disponibilizar "
+"uma informação de retorno constante do progresso de descarga enquanto as "
+"linhas Get deslocam-se para trás sempre que uma nova linha é iniciada. Como "
+"o mostrador de estado é constantemente actualizado não é apropriado para "
+"registar num ficheiro, use a opção <literal>-q</literal> para remover o "
+"mostrador de estado."
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Dpkg"
+msgstr "Dpkg"
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"APT uses <command>dpkg</command> for installing the archives and will switch "
+"over to the <command>dpkg</command> interface once downloading is completed. "
+"<command>dpkg</command> will also ask a number of questions as it processes "
+"the packages and the packages themselves may also ask several questions. "
+"Before each question there is usually a description of what it is asking and "
+"the questions are too varied to discuss completely here."
+msgstr ""
+"O APT usa o <command>dpkg</command> para instalar os arquivos e irá mudar "
+"para a interface do <command>dpkg</command> assim que a descarga estiver "
+"completa. O <command>dpkg</command> irá também fazer um número de perguntas "
+"conforme vai processando os pacotes e os próprios pacotes podem também fazer "
+"várias questões. Antes de cada pergunta há geralmente uma descrição do que "
+"se está a perguntar e as perguntas são demasiado variadas para serem "
+"discutidas aqui."
+
+#. type: Content of: <book><title>
+#: offline.dbk
+msgid "Using APT Offline"
+msgstr "Usando o APT Offline"
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: offline.dbk
+msgid ""
+"This document describes how to use APT in a non-networked environment, "
+"specifically a 'sneaker-net' approach for performing upgrades."
+msgstr ""
+"Este documento descreve como usar o APT num ambiente sem rede, "
+"especificamente uma aproximação 'sneaker-net' para executar actualizações."
+
+#. type: Content of: <book><bookinfo>
+#: offline.dbk
+msgid ""
+"<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+"<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright>"
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Introduction"
+msgstr "Introdução"
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "Overview"
+msgstr "Visão geral"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Normally APT requires direct access to a Debian archive, either from a local "
+"media or through a network. Another common complaint is that a Debian "
+"machine is on a slow link, such as a modem and another machine has a very "
+"fast connection but they are physically distant."
+msgstr ""
+"Normalmente o APT requer acesso directo a um arquivo Debian, seja duma media "
+"local ou através de rede. Outra queixa comum e que uma máquina Debian está "
+"numa ligação lenta, como um modem e outra máquina tem uma ligação muito "
+"rápida mas estão fisicamente distantes."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The solution to this is to use large removable media such as a Zip disc or a "
+"SuperDisk disc. These discs are not large enough to store the entire Debian "
+"archive but can easily fit a subset large enough for most users. The idea is "
+"to use APT to generate a list of packages that are required and then fetch "
+"them onto the disc using another machine with good connectivity. It is even "
+"possible to use another Debian machine with APT or to use a completely "
+"different OS and a download tool like wget. Let <emphasis>remote host</"
+"emphasis> mean the machine downloading the packages, and <emphasis>target "
+"host</emphasis> the one with bad or no connection."
+msgstr ""
+"A solução para isto é usar grandes médias amovíveis como um disco Zip ou um "
+"disco SuperDisk. Estes discos não são suficientemente grandes para armazenar "
+"o arquivo Debian inteiro mas podem facilmente conter um subconjunto "
+"suficientemente grande para a maioria dos utilizadores. A ideia é usar o APT "
+"para gerar uma lista de pacotes que são necessários e depois obter-los para "
+"o disco usando outra máquina com boa ligação. É até possível usar outra "
+"máquina Debian com APT ou usar um SO completamente diferente e uma "
+"ferramenta de download como o wget. Deixe <emphasis>remote host</emphasis> "
+"representar a máquina que descarrega os pacotes, e <emphasis>target host</"
+"emphasis> aquela com má ou nenhuma ligação."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"This is achieved by creatively manipulating the APT configuration file. The "
+"essential premise to tell APT to look on a disc for it's archive files. Note "
+"that the disc should be formatted with a filesystem that can handle long "
+"file names such as ext2, fat32 or vfat."
+msgstr ""
+"Isto é conseguido ao manipular criativamente o ficheiro de configuração do "
+"APT. A premissa essencial para dizer ao APT para procurar num disco pelos "
+"seus ficheiros de arquivo. Note que o disco deve estar formatado com um "
+"sistema de ficheiros que saiba lidar com nomes de ficheiros longos como o "
+"ext2, fat32 ou vfat."
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Using APT on both machines"
+msgstr "Usando o APT em ambas máquinas"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"APT being available on both machines gives the simplest configuration. The "
+"basic idea is to place a copy of the status file on the disc and use the "
+"remote machine to fetch the latest package files and decide which packages "
+"to download. The disk directory structure should look like:"
+msgstr ""
+"Estando o APT disponível em ambas máquinas dá a configuração mais simples. A "
+"ideia básica é colocar uma cópia do ficheiro de estado no disco e usar a "
+"máquina remota para obter os ficheiros de pacotes mais recentes e decidir "
+"quais pacotes descarregar. A estrutura de directórios do disco deverá "
+"parecer-se com:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" /disc/\n"
+" archives/\n"
+" partial/\n"
+" lists/\n"
+" partial/\n"
+" status\n"
+" sources.list\n"
+" apt.conf\n"
+msgstr ""
+" /disc/\n"
+" archives/\n"
+" partial/\n"
+" lists/\n"
+" partial/\n"
+" status\n"
+" sources.list\n"
+" apt.conf\n"
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "The configuration file"
+msgstr "O ficheiro de configuração"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The configuration file should tell APT to store its files on the disc and to "
+"use the configuration files on the disc as well. The sources.list should "
+"contain the proper sites that you wish to use from the remote machine, and "
+"the status file should be a copy of <emphasis>/var/lib/dpkg/status</"
+"emphasis> from the <emphasis>target host</emphasis>. Please note, if you are "
+"using a local archive you must use copy URIs, the syntax is identical to "
+"file URIs."
+msgstr ""
+"O ficheiro de configuração deve dizer ao APT para armazenar os seus ficheiro "
+"no disco e usar os ficheiros de configuração do disco também. O sources.list "
+"deve conter os sites apropriados que deseja usar a partir da máquina remota, "
+"e o ficheiro de estado deve ser uma cópia de <emphasis>/var/lib/dpkg/status</"
+"emphasis> a partir do <emphasis>target host</emphasis>. Por favor note, se "
+"está a usar um arquivo local você deve usar copy URIs, a sintaxe é idêntica "
+"a file URIs."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"<emphasis>apt.conf</emphasis> must contain the necessary information to make "
+"APT use the disc:"
+msgstr ""
+"<emphasis>apt.conf</emphasis> tem de conter a informação necessária para "
+"fazer o APT usar o disco:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" APT\n"
+" {\n"
+" /* This is not necessary if the two machines are the same arch, it tells\n"
+" the remote APT what architecture the target machine is */\n"
+" Architecture \"i386\";\n"
+"\n"
+" Get::Download-Only \"true\";\n"
+" };\n"
+"\n"
+" Dir\n"
+" {\n"
+" /* Use the disc for state information and redirect the status file from\n"
+" the /var/lib/dpkg default */\n"
+" State \"/disc/\";\n"
+" State::status \"status\";\n"
+"\n"
+" // Binary caches will be stored locally\n"
+" Cache::archives \"/disc/archives/\";\n"
+" Cache \"/tmp/\";\n"
+"\n"
+" // Location of the source list.\n"
+" Etc \"/disc/\";\n"
+" };\n"
+msgstr ""
+" APT\n"
+" {\n"
+" /* Isto não é necessário se as duas máquinas forem da mesma arquitectura, diz\n"
+" ao APT remoto que arquitectura tem a máquina de destino */\n"
+" Architecture \"i386\";\n"
+"\n"
+" Get::Download-Only \"true\";\n"
+" };\n"
+"\n"
+" Dir\n"
+" {\n"
+" /* Usa o disco para informação de estado e redirecciona o ficheiro de estado a partir de\n"
+" the /var/lib/dpkg default */\n"
+" State \"/disc/\";\n"
+" State::status \"status\";\n"
+"\n"
+" // Caches binárias serão armazenadas localmente\n"
+" Cache::archives \"/disc/archives/\";\n"
+" Cache \"/tmp/\";\n"
+"\n"
+" // Localização da lista de fontes.\n"
+" Etc \"/disc/\";\n"
+" };\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"More details can be seen by examining the apt.conf man page and the sample "
+"configuration file in <emphasis>/usr/share/doc/apt/examples/apt.conf</"
+"emphasis>."
+msgstr ""
+"Mais detalhes podem ser vistos ao examinar o manual do apt.conf e o exemplo "
+"de ficheiro de configuração em <emphasis>/usr/share/doc/apt/examples/apt."
+"conf</emphasis>."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"On the target machine the first thing to do is mount the disc and copy "
+"<emphasis>/var/lib/dpkg/status</emphasis> to it. You will also need to "
+"create the directories outlined in the Overview, <emphasis>archives/partial/"
+"</emphasis> and <emphasis>lists/partial/</emphasis>. Then take the disc to "
+"the remote machine and configure the sources.list. On the remote machine "
+"execute the following:"
+msgstr ""
+"Na máquina de destino a primeira coisa a fazer é montar o disco e copiar "
+"<emphasis>/var/lib/dpkg/status</emphasis> para ele. Você também precisa de "
+"criar os directórios delineados na Visão Geral, <emphasis>archives/partial/</"
+"emphasis> e <emphasis>lists/partial/</emphasis>. Depois leve o disco até à "
+"máquina remota e configure o sources.list. Na máquina remota execute o "
+"seguinte:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get update\n"
+" [ APT fetches the package files ]\n"
+" # apt-get dist-upgrade\n"
+" [ APT fetches all the packages needed to upgrade the target machine ]\n"
+msgstr ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get update\n"
+" [ APT obtém os ficheiros de pacotes ]\n"
+" # apt-get dist-upgrade\n"
+" [ APT obtém todos os pacotes necessários para actualizar a máquina de destino ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The dist-upgrade command can be replaced with any other standard APT "
+"commands, particularly dselect-upgrade. You can even use an APT front end "
+"such as <emphasis>dselect</emphasis>. However this presents a problem in "
+"communicating your selections back to the local computer."
+msgstr ""
+"O comando dist-upgrade pode ser substituído por qualquer outro comando APT "
+"standard, particularmente dselect-upgrade. Você até pode usar um front-end "
+"do APT como o <emphasis>dselect</emphasis>. No entanto isto apresenta um "
+"problema ao comunicar as suas selecções de volta ao computador local."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Now the disc contains all of the index files and archives needed to upgrade "
+"the target machine. Take the disc back and run:"
+msgstr ""
+"Agora o disco contém todos os ficheiros de índice e os arquivos necessários "
+"para actualizar a máquina de destino. Devolva o disco e corra:"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get check\n"
+" [ APT generates a local copy of the cache files ]\n"
+" # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
+" [ Or any other APT command ]\n"
+msgstr ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get check\n"
+" [ APT gera uma cópia local dos ficheiros de cache ]\n"
+" # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
+" [ Ou qualquer outro comando APT ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"It is necessary for proper function to re-specify the status file to be the "
+"local one. This is very important!"
+msgstr ""
+"Para uma função apropriada é necessário re-especificar que o ficheiro de "
+"estado seja o ficheiro local. Isto é muito importante!"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"If you are using dselect you can do the very risky operation of copying disc/"
+"status to /var/lib/dpkg/status so that any selections you made on the remote "
+"machine are updated. I highly recommend that people only make selections on "
+"the local machine - but this may not always be possible. DO NOT copy the "
+"status file if dpkg or APT have been run in the mean time!!"
+msgstr ""
+"Se está a usar dselect você pode fazer a operação muito arriscada de copiar "
+"disc/status para /var/lib/dpkg/status para que quaisquer selecções que faça "
+"na máquina remota sejam actualizadas. Eu recomendo altamente que as pessoas "
+"apenas façam selecções na máquina local - mas isto pode nem sempre ser "
+"possível. NÃO copie o ficheiro de estado se entretanto correu o dpkg ou o "
+"APT!!"
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Using APT and wget"
+msgstr "Usando APT e wget"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"<emphasis>wget</emphasis> is a popular and portable download tool that can "
+"run on nearly any machine. Unlike the method above this requires that the "
+"Debian machine already has a list of available packages."
+msgstr ""
+"<emphasis>wget</emphasis> é uma ferramenta popular e portável de download "
+"que pode correr praticamente em qualquer máquina. Ao contrário do método "
+"acima, este requer que a máquina Debian já tenha uma lista de pacotes "
+"disponíveis."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The basic idea is to create a disc that has only the archive files "
+"downloaded from the remote site. This is done by using the --print-uris "
+"option to apt-get and then preparing a wget script to actually fetch the "
+"packages."
+msgstr ""
+"A ideia básica é criar um disco que tem apenas os ficheiros de arquivo "
+"descarregados do site remoto. Isto é feito ao usar a opção --print-uris no "
+"apt-get e depois preparar um script wget para realmente ir buscar os pacotes."
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "Operation"
+msgstr "Operação"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Unlike the previous technique no special configuration files are required. "
+"We merely use the standard APT commands to generate the file list."
+msgstr ""
+"Ao contrário da técnica anterior, não são necessários ficheiros de "
+"configuração especiais. Nós usamos meramente os comandos standard do APT "
+"para gerar a lista de ficheiros."
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # apt-get dist-upgrade\n"
+" [ Press no when prompted, make sure you are happy with the actions ]\n"
+" # apt-get -qq --print-uris dist-upgrade &gt; uris\n"
+" # awk '{print \"wget -O \" $2 \" \" $1}' &lt; uris &gt; /disc/wget-script\n"
+msgstr ""
+" # apt-get dist-upgrade \n"
+" [ Escolha não quando perguntado, certifique-se que está contente com as acções ]\n"
+" # apt-get -qq --print-uris dist-upgrade &gt; uris\n"
+" # awk '{print \"wget -O \" $2 \" \" $1}' &lt; uris &gt; /disc/wget-script\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Any command other than dist-upgrade could be used here, including dselect-"
+"upgrade."
+msgstr ""
+"Qualquer comando além do dist-upgrade pode ser usado aqui, incluindo dselect-"
+"upgrade."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The /disc/wget-script file will now contain a list of wget commands to "
+"execute in order to fetch the necessary archives. This script should be run "
+"with the current directory as the disc's mount point so as to save the "
+"output on the disc."
+msgstr ""
+"O ficheiro /disc/wget-script irá agora conter uma lista de comandos do wget "
+"para executar de modo a obter os arquivos necessários. Este script deve ser "
+"corrido com o directório actual sendo o ponto de montagem do disco para que "
+"grave os resultados no disco."
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid "The remote machine would do something like"
+msgstr "A máquina remota deverá fazer algo como"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # cd /disc\n"
+" # sh -x ./wget-script\n"
+" [ wait.. ]\n"
+msgstr ""
+" # cd /disc\n"
+" # sh -x ./wget-script\n"
+" [ wait.. ]\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Once the archives are downloaded and the disc returned to the Debian machine "
+"installation can proceed using,"
+msgstr ""
+"Após os arquivos serem descarregados e o disco retornado à máquina Debian, a "
+"instalação pode prosseguir usando,"
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
+msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid "Which will use the already fetched archives on the disc."
+msgstr "O qual irá usar os arquivos já obtidos e que estão no disco."
+
+#~ msgid "dpkg trigger usage (and related options)"
+#~ msgstr "Utilização trigger do dpkg (e opções relacionadas)"
+
+#~ msgid ""
+#~ "APT can call &dpkg; in such a way as to let it make aggressive use of "
+#~ "triggers over multiple calls of &dpkg;. Without further options &dpkg; "
+#~ "will use triggers once each time it runs. Activating these options can "
+#~ "therefore decrease the time needed to perform the install or upgrade. "
+#~ "Note that it is intended to activate these options per default in the "
+#~ "future, but as it drastically changes the way APT calls &dpkg; it needs a "
+#~ "lot more testing. <emphasis>These options are therefore currently "
+#~ "experimental and should not be used in production environments.</"
+#~ "emphasis> It also breaks progress reporting such that all front-ends will "
+#~ "currently stay around half (or more) of the time in the 100% state while "
+#~ "it actually configures all packages."
+#~ msgstr ""
+#~ "O APT pode chamar o &dpkg; num tal modo que o deixa fazer uso agressivo "
+#~ "dos triggers sobre múltiplas chamadas do &dpkg;. Sem mais opções o &dpkg; "
+#~ "irá usar triggers uma vez por cada vez que corre. Activando estas opções "
+#~ "pode portanto diminuir o tempo necessário para executar a instalação ou "
+#~ "actualização. Note que é intenção futura activar estas opções por "
+#~ "predefinição, mas como muda drasticamente a maneira como o APT chama o "
+#~ "&dpkg;, precisa de muitos mais testes. <emphasis>Estas opções são "
+#~ "portanto presentemente experimentais e não deve ser usadas em ambientes "
+#~ "produtivos.</emphasis> Também interrompe o relatório de progresso de modo "
+#~ "que todos os front-ends irão permanecer a cerca de metade (ou mais) do "
+#~ "tempo no estado de 100% enquanto na realidade está a configurar todos os "
+#~ "pacotes."
+
+#~ msgid ""
+#~ "DPkg::NoTriggers \"true\";\n"
+#~ "PackageManager::Configure \"smart\";\n"
+#~ "DPkg::ConfigurePending \"true\";\n"
+#~ "DPkg::TriggersPending \"true\";"
+#~ msgstr ""
+#~ "DPkg::NoTriggers \"true\";\n"
+#~ "PackageManager::Configure \"smart\";\n"
+#~ "DPkg::ConfigurePending \"true\";\n"
+#~ "DPkg::TriggersPending \"true\";"
+
+#~ msgid ""
+#~ "Note that it is not guaranteed that APT will support these options or "
+#~ "that these options will not cause (big) trouble in the future. If you "
+#~ "have understand the current risks and problems with these options, but "
+#~ "are brave enough to help testing them, create a new configuration file "
+#~ "and test a combination of options. Please report any bugs, problems and "
+#~ "improvements you encounter and make sure to note which options you have "
+#~ "used in your reports. Asking &dpkg; for help could also be useful for "
+#~ "debugging proposes, see e.g. <command>dpkg --audit</command>. A defensive "
+#~ "option combination would be <placeholder type=\"literallayout\" id=\"0\"/>"
+#~ msgstr ""
+#~ "Note que não é garantido que o APT irá suportar estas opções ou que estas "
+#~ "opções não irão causar (grandes) problemas no futuro. Se você compreendeu "
+#~ "os riscos e problemas actuais com estas opções, mas tem coragem "
+#~ "suficiente para ajudar a testá-la, crie um novo ficheiro de configuração "
+#~ "e teste uma combinação de opções. Por favor reporte quaisquer bugs, "
+#~ "problemas e melhoramentos que encontre e certifique-se de anotar nos seus "
+#~ "relatórios quais as opções que usou. Pedir ajuda ao &dpkg; também pode "
+#~ "ser útil para propósitos de depuração, veja ex. <command>dpkg --audit</"
+#~ "command>. Uma combinação de opções defensiva seria <placeholder type="
+#~ "\"literallayout\" id=\"0\"/>"
+
+#~ msgid ""
+#~ "Add the no triggers flag to all &dpkg; calls (except the ConfigurePending "
+#~ "call). See &dpkg; if you are interested in what this actually means. In "
+#~ "short: &dpkg; will not run the triggers when this flag is present unless "
+#~ "it is explicitly called to do so in an extra call. Note that this option "
+#~ "exists (undocumented) also in older APT versions with a slightly "
+#~ "different meaning: Previously these option only append --no-triggers to "
+#~ "the configure calls to &dpkg; - now APT will also add this flag to the "
+#~ "unpack and remove calls."
+#~ msgstr ""
+#~ "Adiciona a bandeira 'no triggers' a todas as chamadas do &dpkg; (excepto "
+#~ "a chamada ConfigurePending). Veja &dpkg; se está interessado no que isto "
+#~ "realmente representa. Em resumo: o &dpkg; não irá correr os triggers "
+#~ "quando esta bandeira está presente a menos que seja explicitamente "
+#~ "chamado a fazê-lo numa chamada extra. Note que esta opção existe (não "
+#~ "documentada) também em versões mais antigas do APT com um significado "
+#~ "ligeiramente diferente: Anteriormente esta opção apenas acrescentava --no-"
+#~ "triggers às chamadas configure para o &dpkg; - agora o APT irá adicionar "
+#~ "esta bandeira também às chamadas unpack e remove."
+
+#~ msgid ""
+#~ "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" "
+#~ "and \"<literal>no</literal>\". The default value is \"<literal>all</"
+#~ "literal>\", which causes APT to configure all packages. The "
+#~ "\"<literal>smart</literal>\" way is to configure only packages which need "
+#~ "to be configured before another package can be unpacked (Pre-Depends), "
+#~ "and let the rest be configured by &dpkg; with a call generated by the "
+#~ "ConfigurePending option (see below). On the other hand, \"<literal>no</"
+#~ "literal>\" will not configure anything, and totally relies on &dpkg; for "
+#~ "configuration (which at the moment will fail if a Pre-Depends is "
+#~ "encountered). Setting this option to any value other than <literal>all</"
+#~ "literal> will implicitly also activate the next option by default, as "
+#~ "otherwise the system could end in an unconfigured and potentially "
+#~ "unbootable state."
+#~ msgstr ""
+#~ "Valores válidos são \"<literal>all</literal>\", \"<literal>smart</literal>"
+#~ "\" e \"<literal>no</literal>\". O valor predefinido é \"<literal>all</"
+#~ "literal>\" que faz com que o APT configure todos os pacotes. O modo "
+#~ "\"<literal>smart</literal>\" serve para configurar apenas pacotes que "
+#~ "precisam de ser configurados antes que outro pacote possa ser "
+#~ "desempacotado (pré-dependências) e o resto configurado pelo &dpkg; com "
+#~ "uma chamada gerada pela opção ConfigurePending (veja em baixo). Por outro "
+#~ "lado, \"<literal>no</literal>\" não irá configurar nada e confiar no "
+#~ "&dpkg; para configurações (o que de momento irá falhar se encontrar uma "
+#~ "pré-dependência). Definir esta opção para qualquer valor que diferente de "
+#~ "<literal>all</literal> irá também implicitamente activar a próxima opção "
+#~ "predefinida caso contrário o sistema poderia acabar num estado não "
+#~ "configurado onde potencialmente poderia não arrancar."
+
+#~ msgid ""
+#~ "Useful for the <literal>smart</literal> configuration as a package which "
+#~ "has pending triggers is not considered as <literal>installed</literal>, "
+#~ "and &dpkg; treats them as <literal>unpacked</literal> currently which is "
+#~ "a showstopper for Pre-Dependencies (see debbugs #526774). Note that this "
+#~ "will process all triggers, not only the triggers needed to configure this "
+#~ "package."
+#~ msgstr ""
+#~ "Útil para configuração <literal>smart</literal>, pois um pacote que tenha "
+#~ "triggers pendentes não é considerado como <literal>installed</literal> e "
+#~ "o &dpkg; trata-o como actualmente <literal>unpacked</literal> o que é um "
+#~ "modo de lidar com pré-dependências (veja debbugs #526774). Note que isto "
+#~ "irá processar todos os triggers, e não apenas os triggers necessários "
+#~ "para configurar este pacote."
+
+#~ msgid ""
+#~ "OrderList::Score {\n"
+#~ "\tDelete 500;\n"
+#~ "\tEssential 200;\n"
+#~ "\tImmediate 10;\n"
+#~ "\tPreDepends 50;\n"
+#~ "};"
+#~ msgstr ""
+#~ "OrderList::Score {\n"
+#~ "\tDelete 500;\n"
+#~ "\tEssential 200;\n"
+#~ "\tImmediate 10;\n"
+#~ "\tPreDepends 50;\n"
+#~ "};"
+
+#~ msgid ""
+#~ "Essential packages (and their dependencies) should be configured "
+#~ "immediately after unpacking. It is a good idea to do this quite early in "
+#~ "the upgrade process as these configure calls also currently require "
+#~ "<literal>DPkg::TriggersPending</literal> which will run quite a few "
+#~ "triggers (which may not be needed). Essentials get per default a high "
+#~ "score but the immediate flag is relatively low (a package which has a Pre-"
+#~ "Depends is rated higher). These option and the others in the same group "
+#~ "can be used to change the scoring. The following example shows the "
+#~ "settings with their default values. <placeholder type=\"literallayout\" "
+#~ "id=\"0\"/>"
+#~ msgstr ""
+#~ "Os pacotes essenciais ( e as suas dependências) deve ser configurados "
+#~ "imediatamente após a descompactação. Será uma boa ideia fazer isto bem "
+#~ "cedo no processo de actualização pois estas chamadas de configuração "
+#~ "também requerem actualmente <literal>DPkg::TriggersPending</literal> o "
+#~ "que irá correr alguns triggers (que talvez não sejam necessários). Os "
+#~ "essenciais obtêm por predefinição uma pontuação alta mas a bandeira "
+#~ "'imediato' é relativamente baixa (um pacote que tenha uma pré-dependência "
+#~ "tem pontuação mais alta). Esta opção e as outras no mesmo grupo podem ser "
+#~ "usadas para alterar a pontuação. O exemplo seguinte mostra as definições "
+#~ "que são valores predefinidos. <placeholder type=\"literallayout\" id="
+#~ "\"0\"/>"
+
+#~ msgid "List fingerprints of trusted keys."
+#~ msgstr "Lista as fingerprints das chaves de confiança."
+
+#~ msgid "<filename>/etc/apt/trustdb.gpg</filename>"
+#~ msgstr "<filename>/etc/apt/trustdb.gpg</filename>"
+
+#~ msgid "Local trust database of archive keys."
+#~ msgstr "Base de dados local de confiança de chaves de arquivos."
+
+#~ msgid "&keyring-filename;"
+#~ msgstr "&keyring-filename;"
+
+#~ msgid "Keyring of &keyring-distro; archive trusted keys."
+#~ msgstr "Chaveiro das chaves de confiança dos arquivos &keyring-distro;."
+
+#~ msgid "&keyring-removed-filename;"
+#~ msgstr "&keyring-removed-filename;"
+
+#~ msgid "Keyring of &keyring-distro; archive removed trusted keys."
+#~ msgstr ""
+#~ "Chaveiro das chaves de confiança removidas dos arquivos &keyring-distro;."
+
+#, fuzzy
+#~| msgid "&apt-cache; &apt-conf;"
+#~ msgid "&apt-get;, &apt-conf;"
+#~ msgstr "&apt-cache; &apt-conf;"
+
+#~ msgid ""
+#~ "This is a space separated list of all the architectures that appear under "
+#~ "search section. The special architecture 'source' is used to indicate "
+#~ "that this tree has a source archive."
+#~ msgstr ""
+#~ "Isto é uma lista separada por espaços de todas as arquitecturas que "
+#~ "aparecem sob a secção de buscas. A arquitectura especial 'source' é usada "
+#~ "para indicar que esta árvore tem um arquivo fonte."
+
+#~ msgid ""
+#~ "<command>apt</command> (Advanced Package Tool) is the command-line tool "
+#~ "for handling packages. It provides a commandline interface for the "
+#~ "package management of the system. See also &apt-get; and &apt-cache; for "
+#~ "more low-level command options."
+#~ msgstr ""
+#~ "<command>apt</command> (Advanced Package Tool) é uma ferramenta de linha "
+#~ "de comandos para manuseamento de pacotes. Disponibiliza uma interface de "
+#~ "linha de comandos para a gestão de pacotes do sistema. Veja também &apt-"
+#~ "get; e &apt-cache; para mais opções de baixo nível dos comandos."
+
+#~ msgid ""
+#~ "<literal>search</literal> searches for the given term(s) and display "
+#~ "matching packages."
+#~ msgstr ""
+#~ "<literal>search</literal> procura por termo(s) determinado(s) e mostra os "
+#~ "pacotes correspondentes."
+
+#~ msgid ""
+#~ "<literal>show</literal> shows the package information for the given "
+#~ "package(s)."
+#~ msgstr ""
+#~ "<literal>show</literal> mostra a informação do pacote para o(s) pacote(s) "
+#~ "determinado(s)."
+
+#~ msgid ""
+#~ "<literal>install</literal> is followed by one or more package names "
+#~ "desired for installation or upgrading."
+#~ msgstr ""
+#~ "<literal>install</literal> é seguido por um ou mais nomes de pacotes que "
+#~ "se deseja instalar ou actualizar."
+
+#~ msgid ""
+#~ "<literal>update</literal> is used to resynchronize the package index "
+#~ "files from their sources."
+#~ msgstr ""
+#~ "<literal>update</literal> é usado para re-sincronizar o índice dos "
+#~ "pacotes a partir das suas fontes."
+
+#~ msgid "Script usage"
+#~ msgstr "Utilização de script"
+
+#~ msgid "Differences to &apt-get;"
+#~ msgstr "Diferenças para o &apt-get;"
+
+#~ msgid ""
+#~ "The <command>apt</command> command is meant to be pleasant for end users "
+#~ "and does not need to be backward compatible like &apt-get;. Therefore "
+#~ "some options are different:"
+#~ msgstr ""
+#~ "O comando <command>apt</command> destina-se a ser agradável para os "
+#~ "utilizadores finais e não precisa de ser compatível com as versões "
+#~ "anteriores como o &apt-get;. Por isso algumas opções são diferentes."
+
+#~ msgid "The option <literal>DPkg::Progress-Fancy</literal> is enabled."
+#~ msgstr "A opção <literal>DPkg::Progress-Fancy</literal> está activada."
+
+#~ msgid "The option <literal>APT::Color</literal> is enabled."
+#~ msgstr "A opção <literal>APT::Color</literal> está activada."
+
+#~ msgid ""
+#~ "A new <literal>list</literal> command is available similar to "
+#~ "<literal>dpkg --list</literal>."
+#~ msgstr ""
+#~ "Está disponível um novo comando <literal>list</literal> de modo "
+#~ "semelhante a <literal>dpkg --list</literal>."
+
+#~ msgid ""
+#~ "The option <literal>upgrade</literal> has <literal>--with-new-pkgs</"
+#~ "literal> enabled by default."
+#~ msgstr ""
+#~ "A opção <literal>upgrade</literal> tem <literal>--with-new-pkgs</literal> "
+#~ "activado por predefinição."
+
+#~ msgid ""
+#~ "Pass advanced options to gpg. With adv --recv-key you can download the "
+#~ "public key."
+#~ msgstr ""
+#~ "Passa opções avançadas ao gpg. Com adv --recv-key você pode descarregar a "
+#~ "chave pública."
+
+#~ msgid "mark/unmark a package as being automatically-installed"
+#~ msgstr "marca/desmarca um pacote como sendo instalado automaticamente"
+
+#~ msgid ""
+#~ "<command>apt-mark</command> will change whether a package has been marked "
+#~ "as being automatically installed."
+#~ msgstr ""
+#~ "<command>apt-mark</command> irá modificar se um pacote foi marcado como "
+#~ "sendo instalado automaticamente."
+
+#~ msgid ""
+#~ "<literal>hold</literal> is used to mark a package as held back, which "
+#~ "will prevent the package from being automatically installed, upgraded or "
+#~ "removed. The command is only a wrapper around <command>dpkg --set-"
+#~ "selections</command> and the state is therefore maintained by &dpkg; and "
+#~ "not affected by the <option>--file</option> option."
+#~ msgstr ""
+#~ "<literal>hold</literal> é usado para marcar um pacote como retido, o que "
+#~ "vai prevenir que o pacote seja automaticamente instalado, actualizado ou "
+#~ "removido. O comando é apenas um invólucro em redor de <command>dpkg --set-"
+#~ "selections</command> e o estado é assim mantido pelo &dpkg; e não é "
+#~ "afectado pela opção <option>--file</option>."
+
+#~ msgid ""
+#~ "If a package comes from a archive without a signature, or with a "
+#~ "signature that apt does not have a key for, that package is considered "
+#~ "untrusted, and installing it will result in a big warning. <command>apt-"
+#~ "get</command> will currently only warn for unsigned archives; future "
+#~ "releases might force all sources to be verified before downloading "
+#~ "packages from them."
+#~ msgstr ""
+#~ "Se um pacote vem dum arquivo sem assinatura ou com uma assinatura para a "
+#~ "qual o apt não tem a chave, esse pacote é considerado 'não sendo de "
+#~ "confiança' e instalá-lo irá resultar num grande aviso. Actualmente o "
+#~ "<command>apt-get</command> irá avisar apenas de arquivos não assinados, "
+#~ "lançamentos futuros poderão vir a forçar que todas as fontes sejam "
+#~ "verificadas antes de descarregar pacotes delas."
+
+#~ msgid ""
+#~ "No action; perform a simulation of events that would occur but do not "
+#~ "actually change the system. Configuration Item: <literal>APT::Get::"
+#~ "Simulate</literal>."
+#~ msgstr ""
+#~ "Nenhuma acção; executa uma simulação dos eventos que irão ocorrer mas na "
+#~ "realidade não altera o sistema. Item de Configuração: <literal>APT::Get::"
+#~ "Simulate</literal>."
+
+#~ msgid ""
+#~ "Simulated runs performed as a user will automatically deactivate locking "
+#~ "(<literal>Debug::NoLocking</literal>), and if the option <literal>APT::"
+#~ "Get::Show-User-Simulation-Note</literal> is set (as it is by default) a "
+#~ "notice will also be displayed indicating that this is only a simulation. "
+#~ "Runs performed as root do not trigger either NoLocking or the notice - "
+#~ "superusers should know what they are doing without further warnings from "
+#~ "<literal>apt-get</literal>."
+#~ msgstr ""
+#~ "As simulações executadas como um utilizador irão desactivar "
+#~ "automaticamente o bloqueio (<literal>Debug::NoLocking</literal>), e se a "
+#~ "opção <literal>APT::Get::Show-User-Simulation-Note</literal> estiver "
+#~ "definida (como está por predefinição) será também mostrado um aviso "
+#~ "indicando que é apenas uma simulação. As execuções executadas pelo root "
+#~ "não accionam nem o NoLocking nem o aviso - os super-utilizadores devem "
+#~ "saber o que estão a fazer sem mais avisos do <literal>apt-get</literal>."
+
+#~ msgid ""
+#~ "Ignore if packages can't be authenticated and don't prompt about it. "
+#~ "This is useful for tools like pbuilder. Configuration Item: "
+#~ "<literal>APT::Get::AllowUnauthenticated</literal>."
+#~ msgstr ""
+#~ "Ignora se os pacotes não podem ser autenticados e não avisa sobre isso. "
+#~ "Isto é útil para ferramentas como o pbuilder. Item de Configuração: "
+#~ "<literal>APT::Get::AllowUnauthenticated</literal>."
+
+#~ msgid ""
+#~ "Version 2 of this protocol dumps more information, including the protocol "
+#~ "version, the APT configuration space and the packages, files and versions "
+#~ "being changed. Version 3 adds the architecture and <literal>MultiArch</"
+#~ "literal> flag to each version being dumped."
+#~ msgstr ""
+#~ "A versão 2 deste protocolo despeja mais informação, incluindo a versão de "
+#~ "protocolo, o espaço de configuração do APT e os pacotes, ficheiros e "
+#~ "versões que foram alteradas. A versão 3 adiciona a arquitectura e a "
+#~ "bandeira <literal>MultiArch</literal> a cada versão a ser despejada."
+
+#~ msgid ""
+#~ "to the versions that are not installed and do not belong to the target "
+#~ "release."
+#~ msgstr ""
+#~ "para as versões que não estão instaladas e não pertencem ao lançamento "
+#~ "destinado."
+
+#~ msgid ""
+#~ "Each line specifying a source starts with type (e.g. <literal>deb-src</"
+#~ "literal>) followed by options and arguments for this type. Individual "
+#~ "entries cannot be continued onto a following line. Empty lines are "
+#~ "ignored, and a <literal>#</literal> character anywhere on a line marks "
+#~ "the remainder of that line as a comment."
+#~ msgstr ""
+#~ "Cada linha que especifica uma fonte começa com o tipo (ex. <literal>deb-"
+#~ "src</literal>) seguido das opções e argumentos para esse tipo. As "
+#~ "entradas individuais não podem ser continuadas para a linha seguinte. As "
+#~ "linhas vazias são ignoradas, e um caracter <literal>#</literal> em "
+#~ "qualquer ponto numa linha marca o restante dessa linha como um comentário."
+
+#~ msgid "deb [ options ] uri suite [component1] [component2] [...]"
+#~ msgstr "deb [ opções ] uri suite [componente1] [componente2] [...]"
+
+#~ msgid ""
+#~ " Types: deb deb-src\n"
+#~ " URIs: http://example.com\n"
+#~ " Suites: stable testing\n"
+#~ " Sections: component1 component2\n"
+#~ " Description: short\n"
+#~ " long long long\n"
+#~ " [option1]: [option1-value]\n"
+#~ "\n"
+#~ " Types: deb\n"
+#~ " URIs: http://another.example.com\n"
+#~ " Suites: experimental\n"
+#~ " Sections: component1 component2\n"
+#~ " Enabled: no\n"
+#~ " Description: short\n"
+#~ " long long long\n"
+#~ " [option1]: [option1-value]\n"
+#~ " "
+#~ msgstr ""
+#~ " Tipos: deb deb-src\n"
+#~ " URIs: http://exemplo.com\n"
+#~ " Suites: stable testing\n"
+#~ " Secções: component1 component2\n"
+#~ " Descrição: curta\n"
+#~ " longa longa longa\n"
+#~ " [opção1]: [opção1-valor]\n"
+#~ "\n"
+#~ " Tipos: deb\n"
+#~ " URIs: http://outro.exemlo.com\n"
+#~ " Suites: experimental\n"
+#~ " Secções: component1 component2\n"
+#~ " Activo: não\n"
+#~ " Descrição: curta\n"
+#~ " longa longa longa\n"
+#~ " [opção1]: [opção1-valor]\n"
+#~ " "
+
+#~ msgid ""
+#~ "<literal>options</literal> is always optional and needs to be surrounded "
+#~ "by square brackets. It can consist of multiple settings in the form "
+#~ "<literal><replaceable>setting</replaceable>=<replaceable>value</"
+#~ "replaceable></literal>. Multiple settings are separated by spaces. The "
+#~ "following settings are supported by APT (note however that unsupported "
+#~ "settings will be ignored silently):"
+#~ msgstr ""
+#~ "<literal>options</literal> é sempre opcional e precisa de ser rodeado por "
+#~ "parênteses rectos. Pode consistir um múltiplas definições no formato "
+#~ "<literal><replaceable>setting</replaceable>=<replaceable>value</"
+#~ "replaceable></literal>. As múltiplas definições são separadas por "
+#~ "espaços. As seguinte definições são suportadas pelo APT (no entanto note "
+#~ "que as definições não suportadas serão ignoradas em silêncio):"
+
+#~ msgid ""
+#~ "<literal>arch+=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#~ "replaceable>,…</literal> and <literal>arch-=<replaceable>arch1</"
+#~ "replaceable>,<replaceable>arch2</replaceable>,…</literal> which can be "
+#~ "used to add/remove architectures from the set which will be downloaded."
+#~ msgstr ""
+#~ "<literal>arch+=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#~ "replaceable>,…</literal> e <literal>arch-=<replaceable>arch1</"
+#~ "replaceable>,<replaceable>arch2</replaceable>,…</literal> que podem ser "
+#~ "usadas para adicionar/remover arquitecturas do conjunto que será "
+#~ "descarregado."
+
+#~ msgid ""
+#~ "<literal>trusted=yes</literal> can be set to indicate that packages from "
+#~ "this source are always authenticated even if the <filename>Release</"
+#~ "filename> file is not signed or the signature can't be checked. This "
+#~ "disables parts of &apt-secure; and should therefore only be used in a "
+#~ "local and trusted context. <literal>trusted=no</literal> is the opposite "
+#~ "which handles even correctly authenticated sources as not authenticated."
+#~ msgstr ""
+#~ "<literal>trusted=yes</literal> pode ser definido para indicar que os "
+#~ "pacotes desta fonte são sempre autênticos mesmo que o ficheiro "
+#~ "<filename>Release</filename> não esteja assinado ou a assinatura não "
+#~ "possa ser verificada. Isto desactiva partes do &apt-secure; e deve por "
+#~ "isso ser usado apenas num contexto local e de confiança. "
+#~ "<literal>trusted=no</literal> é o oposto que lida com fontes mesmo "
+#~ "actualmente autenticadas como não sendo autênticas."
+
+#~ msgid "Some examples:"
+#~ msgstr "Alguns exemplos:"
+
+#~ msgid ""
+#~ "deb http://ftp.debian.org/debian &debian-stable-codename; main contrib "
+#~ "non-free\n"
+#~ "deb http://security.debian.org/ &debian-stable-codename;/updates main "
+#~ "contrib non-free\n"
+#~ " "
+#~ msgstr ""
+#~ "deb http://ftp.debian.org/debian &debian-stable-codename; main contrib "
+#~ "non-free\n"
+#~ "deb http://security.debian.org/ &debian-stable-codename;/updates main "
+#~ "contrib non-free\n"
+#~ " "
diff --git a/doc/po/pt_BR.po b/doc/po/pt_BR.po
new file mode 100644
index 000000000..82ac7ff97
--- /dev/null
+++ b/doc/po/pt_BR.po
@@ -0,0 +1,8392 @@
+# Translation of apt package man pages
+# Copyright (C) YEAR André Luís Lopes <andrelop@debian.org>
+# This file is distributed under the same license as the apt package.
+#
+# Translators:
+# André Luís Lopes <andrelop@ig.com.br>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt-doc 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-06-01 10:51+0200\n"
+"PO-Revision-Date: 2004-09-20 17:02+0000\n"
+"Last-Translator: André Luís Lopes <andrelop@debian.org>\n"
+"Language-Team: <debian-l10n-portuguese@lists.debian.org>\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY apt-author.team \"\n"
+" <author>\n"
+" <othername>APT team</othername>\n"
+" <contrib></contrib>\n"
+" </author>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY apt-qapage \"\n"
+"\t<para>\n"
+"\t\t<ulink url='http://packages.qa.debian.org/a/apt.html'>QA Page</ulink>\n"
+"\t</para>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, fuzzy, no-wrap
+msgid ""
+"<!-- Boiler plate Bug reporting section -->\n"
+"<!ENTITY manbugs \"\n"
+" <refsect1><title>Bugs</title>\n"
+" <para><ulink url='http://bugs.debian.org/src:apt'>APT bug page</ulink>.\n"
+" If you wish to report a bug in APT, please see\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</filename> or the\n"
+" &reportbug; command.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+"\n"
+" <RefSect1><Title>Bugs</>\n"
+" <para>\n"
+" Consulte a <ulink url='http://bugs.debian.org/apt'>página de bugs do APT</>.\n"
+" Caso você queira relatar um bug no APT, por favor consulte o arquivo\n"
+" <filename>/usr/share/doc/debian/bug-reporting.txt</> ou o comando &reportbug;.\n"
+" </RefSect1>\n"
+
+#. type: Plain text
+#: apt.ent
+#, fuzzy, no-wrap
+msgid ""
+"<!-- Boiler plate Author section -->\n"
+"<!ENTITY manauthor \"\n"
+" <refsect1><title>Author</title>\n"
+" <para>APT was written by the APT team <email>apt@packages.debian.org</email>.\n"
+" </para>\n"
+" </refsect1>\n"
+"\">\n"
+msgstr ""
+"\n"
+" <RefSect1><Title>Author</>\n"
+" <para>\n"
+" O APT foi escrito pela equipe APT <email>apt@packages.debian.org</>.\n"
+" </RefSect1>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-commonoptions \"\n"
+" <varlistentry><term><option>-h</option></term>\n"
+" <term><option>--help</option></term>\n"
+" <listitem><para>Show a short usage summary.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-v</option></term>\n"
+" <term><option>--version</option></term>\n"
+" <listitem><para>Show the program version.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-c</option></term>\n"
+" <term><option>--config-file</option></term>\n"
+" <listitem><para>Configuration File; Specify a configuration file to use. \n"
+" The program will read the default configuration file and then this \n"
+" configuration file. If configuration settings need to be set before the\n"
+" default configuration files are parsed specify a file with the <envar>APT_CONFIG</envar>\n"
+" environment variable. See &apt-conf; for syntax information.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry>\n"
+" <term><option>-o</option></term>\n"
+" <term><option>--option</option></term>\n"
+" <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
+" configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
+" <option>-o</option> and <option>--option</option> can be used multiple\n"
+" times to set different options.\n"
+" </para>\n"
+" </listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, fuzzy, no-wrap
+msgid ""
+"<!-- Should be used within the option section of the text to\n"
+" put in the blurb about -h, -v, -c and -o -->\n"
+"<!ENTITY apt-cmdblurb \"\n"
+" <para>All command line options may be set using the configuration file, the\n"
+" descriptions indicate the configuration option to set. For boolean\n"
+" options you can override the config file by using something like \n"
+" <option>-f-</option>,<option>--no-f</option>, <option>-f=no</option>\n"
+" or several other variations.\n"
+" </para>\n"
+"\">\n"
+msgstr ""
+"\n"
+" <para>\n"
+" Todas as opções de linha de comando podem ser definidas usando o\n"
+" arquivo de configuração, as descrições indicam a opção de configuração\n"
+" a ser definida. Para opções booleanas você pode sobrepor o arquivo de\n"
+" configuração usando algo como <option/-f-/,<option/--no-f/,\n"
+" <option/-f=no/ ou diversas outras variantes.\n"
+" </para>\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-aptconf \"\n"
+" <varlistentry><term><filename>/etc/apt/apt.conf</filename></term>\n"
+" <listitem><para>APT configuration file.\n"
+" Configuration Item: <literal>Dir::Etc::Main</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/apt.conf.d/</filename></term>\n"
+" <listitem><para>APT configuration file fragments.\n"
+" Configuration Item: <literal>Dir::Etc::Parts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-cachearchives \"\n"
+" <varlistentry><term><filename>&cachedir;/archives/</filename></term>\n"
+" <listitem><para>Storage area for retrieved package files.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>\n"
+" <listitem><para>Storage area for package files in transit.\n"
+" Configuration Item: <literal>Dir::Cache::Archives</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-preferences \"\n"
+" <varlistentry><term><filename>/etc/apt/preferences</filename></term>\n"
+" <listitem><para>Version preferences file.\n"
+" This is where you would specify &quot;pinning&quot;,\n"
+" i.e. a preference to get certain packages\n"
+" from a separate source\n"
+" or from a different version of a distribution.\n"
+" Configuration Item: <literal>Dir::Etc::Preferences</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/preferences.d/</filename></term>\n"
+" <listitem><para>File fragments for the version preferences.\n"
+" Configuration Item: <literal>Dir::Etc::PreferencesParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-sourceslist \"\n"
+" <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+" <listitem><para>Locations to fetch packages from.\n"
+" Configuration Item: <literal>Dir::Etc::SourceList</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
+" <listitem><para>File fragments for locations to fetch packages from.\n"
+" Configuration Item: <literal>Dir::Etc::SourceParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-statelists \"\n"
+" <varlistentry><term><filename>&statedir;/lists/</filename></term>\n"
+" <listitem><para>Storage area for state information for each package resource specified in\n"
+" &sources-list;\n"
+" Configuration Item: <literal>Dir::State::Lists</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>\n"
+" <listitem><para>Storage area for state information in transit.\n"
+" Configuration Item: <literal>Dir::State::Lists</literal> (<filename>partial</filename> will be implicitly appended)</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-trustedgpg \"\n"
+" <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
+" <listitem><para>Keyring of local trusted keys, new keys will be added here.\n"
+" Configuration Item: <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+" <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
+" <listitem><para>File fragments for the trusted keys, additional keyrings can\n"
+" be stored here (by other packages or the administrator).\n"
+" Configuration Item <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!ENTITY file-extended_states \"\n"
+" <varlistentry><term><filename>/var/lib/apt/extended_states</filename></term>\n"
+" <listitem><para>Status list of auto-installed packages.\n"
+" Configuration Item: <literal>Dir::State::extended_states</literal>.\n"
+" </para></listitem>\n"
+" </varlistentry>\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is the section header for the following paragraphs - comparable\n"
+" to the other headers like NAME and DESCRIPTION and should therefore be uppercase. -->\n"
+"<!ENTITY translation-title \"TRANSLATION\">\n"
+msgstr "<!ENTITY translation-title \"TRADUÇÃO\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: This is a placeholder. You should write here who has contributed\n"
+" to the translation in the past, who is responsible now and maybe further information\n"
+" specially related to your translation. -->\n"
+"<!ENTITY translation-holder \"\n"
+" The english translation was done by John Doe <email>john@doe.org</email> in 2009,\n"
+" 2010 and Daniela Acme <email>daniela@acme.us</email> in 2010 together with the\n"
+" Debian Dummy l10n Team <email>debian-l10n-dummy@lists.debian.org</email>.\n"
+"\">\n"
+msgstr ""
+"<!ENTITY translation-holder \"\n"
+" Esta página de manual foi traduzida para o Português do Brasil por\n"
+" André Luís Lopes <email>andrelop@ig.com.br</email>.\n"
+"\">\n"
+
+#. type: Plain text
+#: apt.ent
+#, no-wrap
+msgid ""
+"<!-- TRANSLATOR: As a translation is allowed to have 20% of untranslated/fuzzy strings\n"
+" in a shipped manpage newer/modified paragraphs will maybe appear in english in\n"
+" the generated manpage. This sentence is therefore here to tell the reader that this\n"
+" is not a mistake by the translator - obviously the target is that at least for stable\n"
+" releases this sentence is not needed. :) -->\n"
+"<!ENTITY translation-english \"\n"
+" Note that this translated document may contain untranslated parts.\n"
+" This is done on purpose, to avoid losing content when the\n"
+" translation is lagging behind the original content.\n"
+"\">\n"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -o=config_string e.g. -o=Debug::"
+"pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"config_string\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -c=config_file e.g. -c=./apt.conf --> <!ENTITY "
+"synopsis-config-file \"config_file\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. -"
+"t=squeeze apt/experimental --> <!ENTITY synopsis-target-release "
+"\"target_release\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in -a=architecture e.g. -a=armel --> <!ENTITY "
+"synopsis-architecture \"architecture\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-get install pkg e.g. apt-get install awesome "
+"--> <!ENTITY synopsis-pkg \"pkg\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in pkg=pkg_version_number e.g. apt=0.8.15 --> <!"
+"ENTITY synopsis-pkg-ver-number \"pkg_version_number\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache pkgnames prefix e.g. apt-cache "
+"pkgnames apt --> <!ENTITY synopsis-prefix \"prefix\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cache search regex e.g. apt-cache search "
+"awesome --> <!ENTITY synopsis-regex \"regex\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-cdrom -d=cdrom_mount_point e.g. apt-cdrom -"
+"d=/media/cdrom --> <!ENTITY synopsis-cdrom-mount \"cdrom_mount_point\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates -t=temporary_directory e.g. "
+"apt-extracttemplates -t=/tmp --> <!ENTITY synopsis-tmp-directory "
+"\"temporary_directory\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-extracttemplates filename --> <!ENTITY "
+"synopsis-filename \"filename\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-path \"path\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-override "
+"\"override-file\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"packages path override-file pathprefix --> <!ENTITY synopsis-pathprefix "
+"\"pathprefix\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as parameter for apt-ftparchive e.g. apt-ftparchive "
+"generate section --> <!ENTITY synopsis-section \"section\">"
+msgstr ""
+
+#. type: Plain text
+#: apt.ent
+msgid ""
+"<!-- TRANSLATOR: used as in apt-key export keyid e.g. apt-key export "
+"473041FA --> <!ENTITY synopsis-keyid \"keyid\">"
+msgstr ""
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml
+msgid "8"
+msgstr ""
+
+#. type: Content of: <refentry><refmeta><refmiscinfo>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "APT"
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.8.xml
+msgid "command-line interface"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+#, fuzzy
+msgid "Description"
+msgstr "Descrição"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"<command>apt</command> provides a high-level commandline interface for the "
+"package management system. It is intended as an end user interface and "
+"enables some options better suited for interactive usage by default compared "
+"to more specialized APT tools like &apt-get; and &apt-cache;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"Much like <command>apt</command> itself, its manpage is intended as an end "
+"user interface and as such only mentions the most used commands and options "
+"partly to not duplicate information in multiple places and partly to avoid "
+"overwhelming readers with a cornucopia of options and details."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(&apt-get;)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>update</option> is used to download package information from all "
+"configured sources. Other commands operate on this data to e.g. perform "
+"package upgrades or search in and display details about all packages "
+"available for installation."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>upgrade</option> is used to install available upgrades of all "
+"packages currently installed on the system from the sources configured via "
+"&sources-list;. New packages will be installed if required to satisfy "
+"dependencies, but existing packages will never be removed. If an upgrade for "
+"a package requires the remove of an installed package the upgrade for this "
+"package isn't performed."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>full-upgrade</literal> performs the function of upgrade but will "
+"remove currently installed packages if this is needed to upgrade the system "
+"as a whole."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml apt-key.8.xml
+msgid ","
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Performs the requested action on one or more packages specified via &regex;, "
+"&glob; or exact match. The requested action can be overridden for specific "
+"packages by append a plus (+) to the package name to install this package or "
+"a minus (-) to remove it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals (=) and the version of the package "
+"to select. Alternatively the version from a specific release can be selected "
+"by following the package name with a forward slash (/) and codename (&debian-"
+"stable-codename;, &debian-testing-codename;, sid …) or suite name (stable, "
+"testing, unstable). This will also select versions from this release for "
+"dependencies of this package if needed to satisfy the request."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Removing a package removes all packaged data, but leaves usually small "
+"(modified) user configuration files behind, in case the remove was an "
+"accident. Just issuing an installation request for the accidentally removed "
+"package will restore its function as before in that case. On the other hand "
+"you can get rid of these leftovers by calling <command>purge</command> even "
+"on already removed packages. Note that this does not affect any data or "
+"configuration stored in your home directory."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed as dependencies changed or the package(s) needing them "
+"were removed in the meantime."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"You should check that the list does not include applications you have grown "
+"to like even though they were once installed just as a dependency of another "
+"package. You can mark such a package as manually installed by using &apt-"
+"mark;. Packages which you have installed explicitly via <command>install</"
+"command> are also never proposed for automatic removal."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(&apt-cache;)"
+msgstr "(&apt-cache;)"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>search</option> can be used to search for the given &regex; term(s) "
+"in the list of available packages and display matches. This can e.g. be "
+"useful if you are looking for packages having a specific feature. If you "
+"are looking for a package including a specific file try &apt-file;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"Show information about the given package(s) including its dependencies, "
+"installation and download size, sources the package is available from, the "
+"description of the packages content and much more. It can e.g. be helpful to "
+"look at this information before allowing &apt; to remove a package or while "
+"searching for new packages to install."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.8.xml
+msgid "(work-in-progress)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<option>list</option> is somewhat similar to <command>dpkg-query --list</"
+"command> in that it can display a list of packages satisfying certain "
+"criteria. It supports &glob; patterns for matching package names as well as "
+"options to list installed (<option>--installed</option>), upgradeable "
+"(<option>--upgradeable</option>) or all available (<option>--all-versions</"
+"option>) versions."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.8.xml
+msgid ""
+"<literal>edit-sources</literal> lets you edit your &sources-list; files in "
+"your preferred texteditor while also providing basic sanity checks."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml
+msgid "Script Usage and Differences from Other APT Tools"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"The &apt; commandline is designed as an end-user tool and it may change "
+"behavior between versions. While it tries not to break backward "
+"compatibility this is not guaranteed either if a change seems beneficial for "
+"interactive use."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"All features of &apt; are available in dedicated APT tools like &apt-get; "
+"and &apt-cache; as well. &apt; just changes the default value of some "
+"options (see &apt-conf; and specifically the Binary scope). So you should "
+"prefer using these commands (potentially with some additional options "
+"enabled) in your scripts as they keep backward compatibility as much as "
+"possible."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml
+#: apt-secure.8.xml apt-cdrom.8.xml apt-config.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml sources.list.5.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+#, fuzzy
+msgid "See Also"
+msgstr "Consulte também"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"&apt-get;, &apt-cache;, &sources-list;, &apt-conf;, &apt-config;, The APT "
+"User's guide in &guidesdir;, &apt-preferences;, the APT Howto."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-cdrom.8.xml
+#: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml
+msgid "Diagnostics"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.8.xml
+msgid ""
+"<command>apt</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-get.8.xml
+msgid "APT package handling utility -- command-line interface"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"<command>apt-get</command> is the command-line tool for handling packages, "
+"and may be considered the user's \"back-end\" to other tools using the APT "
+"library. Several \"front-end\" interfaces exist, such as &aptitude;, "
+"&synaptic; and &wajig;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml apt-cache.8.xml apt-cdrom.8.xml apt-config.8.xml
+#: apt-ftparchive.1.xml
+msgid ""
+"Unless the <option>-h</option>, or <option>--help</option> option is given, "
+"one of the commands below must be present."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>update</literal> is used to resynchronize the package index files "
+"from their sources. The indexes of available packages are fetched from the "
+"location(s) specified in <filename>/etc/apt/sources.list</filename>. For "
+"example, when using a Debian archive, this command retrieves and scans the "
+"<filename>Packages.gz</filename> files, so that information about new and "
+"updated packages is available. An <literal>update</literal> should always be "
+"performed before an <literal>upgrade</literal> or <literal>dist-upgrade</"
+"literal>. Please be aware that the overall progress meter will be incorrect "
+"as the size of the package files cannot be known in advance."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>upgrade</literal> is used to install the newest versions of all "
+"packages currently installed on the system from the sources enumerated in "
+"<filename>/etc/apt/sources.list</filename>. Packages currently installed "
+"with new versions available are retrieved and upgraded; under no "
+"circumstances are currently installed packages removed, or packages not "
+"already installed retrieved and installed. New versions of currently "
+"installed packages that cannot be upgraded without changing the install "
+"status of another package will be left at their current version. An "
+"<literal>update</literal> must be performed first so that <command>apt-get</"
+"command> knows that new versions of packages are available."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>dist-upgrade</literal> in addition to performing the function of "
+"<literal>upgrade</literal>, also intelligently handles changing dependencies "
+"with new versions of packages; <command>apt-get</command> has a \"smart\" "
+"conflict resolution system, and it will attempt to upgrade the most "
+"important packages at the expense of less important ones if necessary. The "
+"<literal>dist-upgrade</literal> command may therefore remove some packages. "
+"The <filename>/etc/apt/sources.list</filename> file contains a list of "
+"locations from which to retrieve desired package files. See also &apt-"
+"preferences; for a mechanism for overriding the general settings for "
+"individual packages."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>dselect-upgrade</literal> is used in conjunction with the "
+"traditional Debian packaging front-end, &dselect;. <literal>dselect-upgrade</"
+"literal> follows the changes made by &dselect; to the <literal>Status</"
+"literal> field of available packages, and performs the actions necessary to "
+"realize that state (for instance, the removal of old and the installation of "
+"new packages)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>install</literal> is followed by one or more packages desired for "
+"installation or upgrading. Each package is a package name, not a fully "
+"qualified filename (for instance, in a Debian system, <package>apt-utils</"
+"package> would be the argument provided, not <filename>apt-utils_&apt-"
+"product-version;_amd64.deb</filename>). All packages required by the "
+"package(s) specified for installation will also be retrieved and installed. "
+"The <filename>/etc/apt/sources.list</filename> file is used to locate the "
+"desired packages. If a hyphen is appended to the package name (with no "
+"intervening space), the identified package will be removed if it is "
+"installed. Similarly a plus sign can be used to designate a package to "
+"install. These latter features may be used to override decisions made by apt-"
+"get's conflict resolution system."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"A specific version of a package can be selected for installation by "
+"following the package name with an equals and the version of the package to "
+"select. This will cause that version to be located and selected for install. "
+"Alternatively a specific distribution can be selected by following the "
+"package name with a slash and the version of the distribution or the Archive "
+"name (stable, testing, unstable)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Both of the version selection mechanisms can downgrade packages and must be "
+"used with care."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This is also the target to use if you want to upgrade one or more already-"
+"installed packages without upgrading every package you have on your system. "
+"Unlike the \"upgrade\" target, which installs the newest version of all "
+"currently installed packages, \"install\" will install the newest version of "
+"only the package(s) specified. Simply provide the name of the package(s) "
+"you wish to upgrade, and if a newer version is available, it (and its "
+"dependencies, as described above) will be downloaded and installed."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Finally, the &apt-preferences; mechanism allows you to create an alternative "
+"installation policy for individual packages."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If no package matches the given expression and the expression contains one "
+"of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and "
+"it is applied to all package names in the database. Any matches are then "
+"installed (or removed). Note that matching is done by substring so 'lo.*' "
+"matches 'how-lo' and 'lowest'. If this is undesired, anchor the regular "
+"expression with a '^' or '$' character, or create a more specific regular "
+"expression."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>remove</literal> is identical to <literal>install</literal> except "
+"that packages are removed instead of installed. Note that removing a package "
+"leaves its configuration files on the system. If a plus sign is appended to "
+"the package name (with no intervening space), the identified package will be "
+"installed instead of removed."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>purge</literal> is identical to <literal>remove</literal> except "
+"that packages are removed and purged (any configuration files are deleted "
+"too)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>source</literal> causes <command>apt-get</command> to fetch source "
+"packages. APT will examine the available packages to decide which source "
+"package to fetch. It will then find and download into the current directory "
+"the newest available version of that source package while respecting the "
+"default release, set with the option <literal>APT::Default-Release</"
+"literal>, the <option>-t</option> option or per package with the "
+"<literal>pkg/release</literal> syntax, if possible."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Source packages are tracked separately from binary packages via <literal>deb-"
+"src</literal> lines in the &sources-list; file. This means that you will "
+"need to add such a line for each repository you want to get sources from; "
+"otherwise you will probably get either the wrong (too old/too new) source "
+"versions or none at all."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If the <option>--compile</option> option is specified then the package will "
+"be compiled to a binary .deb using <command>dpkg-buildpackage</command> for "
+"the architecture as defined by the <command>--host-architecture</command> "
+"option. If <option>--download-only</option> is specified then the source "
+"package will not be unpacked."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"A specific source version can be retrieved by postfixing the source name "
+"with an equals and then the version to fetch, similar to the mechanism used "
+"for the package files. This enables exact matching of the source package "
+"name and version, implicitly enabling the <literal>APT::Get::Only-Source</"
+"literal> option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Note that source packages are not installed and tracked in the "
+"<command>dpkg</command> database like binary packages; they are simply "
+"downloaded to the current directory, like source tarballs."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>build-dep</literal> causes apt-get to install/remove packages in an "
+"attempt to satisfy the build dependencies for a source package. By default "
+"the dependencies are satisfied to build the package natively. If desired a "
+"host-architecture can be specified with the <option>--host-architecture</"
+"option> option instead."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>check</literal> is a diagnostic tool; it updates the package cache "
+"and checks for broken dependencies."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>download</literal> will download the given binary package into the "
+"current directory."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>clean</literal> clears out the local repository of retrieved "
+"package files. It removes everything but the lock file from "
+"<filename>&cachedir;/archives/</filename> and <filename>&cachedir;/archives/"
+"partial/</filename>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "(and the"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-get.8.xml
+msgid "alias since 1.1)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Like <literal>clean</literal>, <literal>autoclean</literal> clears out the "
+"local repository of retrieved package files. The difference is that it only "
+"removes package files that can no longer be downloaded, and are largely "
+"useless. This allows a cache to be maintained over a long period without it "
+"growing out of control. The configuration option <literal>APT::Clean-"
+"Installed</literal> will prevent installed packages from being erased if it "
+"is set to off."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>autoremove</literal> is used to remove packages that were "
+"automatically installed to satisfy dependencies for other packages and are "
+"now no longer needed."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"<literal>changelog</literal> tries to download the changelog of a package "
+"and displays it through <command>sensible-pager</command>. By default it "
+"displays the changelog for the version that is installed. However, you can "
+"specify the same options as for the <option>install</option> command."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Displays by default a deb822 formatted listing of information about all data "
+"files (aka index targets) <command>apt-get update</command> would download. "
+"Supports a <option>--format</option> option to modify the output format as "
+"well as accepts lines of the default output to filter the records by. The "
+"command is mainly used as an interface for external tools working with APT "
+"to get information as well as filenames for downloaded files so they can use "
+"them as well instead of downloading them again on their own. Detailed "
+"documentation is omitted here and can instead be found in the file &apt-"
+"acquire-additional-files; shipped by the <package>apt-doc</package> package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml apt-cache.8.xml apt-config.8.xml apt-extracttemplates.1.xml
+#: apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "options"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not consider recommended packages as a dependency for installing. "
+"Configuration Item: <literal>APT::Install-Recommends</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Consider suggested packages as a dependency for installing. Configuration "
+"Item: <literal>APT::Install-Suggests</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Download only; package files are only retrieved, not unpacked or installed. "
+"Configuration Item: <literal>APT::Get::Download-Only</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Fix; attempt to correct a system with broken dependencies in place. This "
+"option, when used with install/remove, can omit any packages to permit APT "
+"to deduce a likely solution. If packages are specified, these have to "
+"completely correct the problem. The option is sometimes necessary when "
+"running APT for the first time; APT itself does not allow broken package "
+"dependencies to exist on a system. It is possible that a system's dependency "
+"structure can be so corrupt as to require manual intervention (which usually "
+"means using <command>dpkg --remove</command> to eliminate some of the "
+"offending packages). Use of this option together with <option>-m</option> "
+"may produce an error in some situations. Configuration Item: <literal>APT::"
+"Get::Fix-Broken</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore missing packages; if packages cannot be retrieved or fail the "
+"integrity check after retrieval (corrupted package files), hold back those "
+"packages and handle the result. Use of this option together with <option>-f</"
+"option> may produce an error in some situations. If a package is selected "
+"for installation (particularly if it is mentioned on the command line) and "
+"it could not be downloaded then it will be silently held back. "
+"Configuration Item: <literal>APT::Get::Fix-Missing</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Disables downloading of packages. This is best used with <option>--ignore-"
+"missing</option> to force APT to use only the .debs it has already "
+"downloaded. Configuration Item: <literal>APT::Get::Download</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Note that quiet level 2 implies <option>-y</option>; you should never "
+"use -qq without a no-action modifier such as -d, --print-uris or -s as APT "
+"may decide to do something you did not expect. Configuration Item: "
+"<literal>quiet</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"No action; perform a simulation of events that would occur based on the "
+"current system state but do not actually change the system. Locking will be "
+"disabled (<option>Debug::NoLocking</option>) so the system state could "
+"change while <command>apt-get</command> is running. Simulations can also be "
+"executed by non-root users which might not have read access to all apt "
+"configuration distorting the simulation. A notice expressing this warning "
+"is also shown by default for non-root users (<option>APT::Get::Show-User-"
+"Simulation-Note</option>). Configuration Item: <literal>APT::Get::Simulate</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Simulated runs print out a series of lines, each representing a "
+"<command>dpkg</command> operation: configure (<literal>Conf</literal>), "
+"remove (<literal>Remv</literal>) or unpack (<literal>Inst</literal>). "
+"Square brackets indicate broken packages, and empty square brackets indicate "
+"breaks that are of no consequence (rare)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Automatic yes to prompts; assume \"yes\" as answer to all prompts and run "
+"non-interactively. If an undesirable situation, such as changing a held "
+"package, trying to install a unauthenticated package or removing an "
+"essential package occurs then <literal>apt-get</literal> will abort. "
+"Configuration Item: <literal>APT::Get::Assume-Yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Automatic \"no\" to all prompts. Configuration Item: <literal>APT::Get::"
+"Assume-No</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not show a list of all packages that are to be upgraded. Configuration "
+"Item: <literal>APT::Get::Show-Upgraded</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Show full versions for upgraded and installed packages. Configuration Item: "
+"<literal>APT::Get::Show-Versions</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the architecture packages are built for by <command>apt-"
+"get source --compile</command> and how cross-builddependencies are "
+"satisfied. By default is it not set which means that the host architecture "
+"is the same as the build architecture (which is defined by <literal>APT::"
+"Architecture</literal>). Configuration Item: <literal>APT::Get::Host-"
+"Architecture</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the activated build profiles for which a source package "
+"is built by <command>apt-get source --compile</command> and how build "
+"dependencies are satisfied. By default no build profile is active. More "
+"than one build profile can be activated at a time by concatenating them with "
+"a comma. Configuration Item: <literal>APT::Build-Profiles</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Compile source packages after downloading them. Configuration Item: "
+"<literal>APT::Get::Compile</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore package holds; this causes <command>apt-get</command> to ignore a "
+"hold placed on a package. This may be useful in conjunction with "
+"<literal>dist-upgrade</literal> to override a large number of undesired "
+"holds. Configuration Item: <literal>APT::Ignore-Hold</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Allow installing new packages when used in conjunction with "
+"<literal>upgrade</literal>. This is useful if the update of a installed "
+"package requires new dependencies to be installed. Instead of holding the "
+"package back <literal>upgrade</literal> will upgrade the package and install "
+"the new dependencies. Note that <literal>upgrade</literal> with this option "
+"will never remove packages, only allow adding new ones. Configuration Item: "
+"<literal>APT::Get::Upgrade-Allow-New</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not upgrade packages; when used in conjunction with <literal>install</"
+"literal>, <literal>no-upgrade</literal> will prevent packages on the command "
+"line from being upgraded if they are already installed. Configuration Item: "
+"<literal>APT::Get::Upgrade</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Do not install new packages; when used in conjunction with <literal>install</"
+"literal>, <literal>only-upgrade</literal> will install upgrades for already "
+"installed packages only and ignore requests to install new packages. "
+"Configuration Item: <literal>APT::Get::Only-Upgrade</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This is a dangerous option that will cause apt to continue without prompting "
+"if it is doing downgrades. It should not be used except in very special "
+"situations. Using it can potentially destroy your system! Configuration "
+"Item: <literal>APT::Get::allow-downgrades</literal>. Introduced in APT 1.1."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is removing essentials. It should not be used except "
+"in very special situations. Using it can potentially destroy your system! "
+"Configuration Item: <literal>APT::Get::allow-remove-essential</literal>. "
+"Introduced in APT 1.1."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is changing held packages. It should not be used "
+"except in very special situations. Using it can potentially destroy your "
+"system! Configuration Item: <literal>APT::Get::allow-change-held-packages</"
+"literal>. Introduced in APT 1.1."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Force yes; this is a dangerous option that will cause apt to continue "
+"without prompting if it is doing something potentially harmful. It should "
+"not be used except in very special situations. Using <literal>force-yes</"
+"literal> can potentially destroy your system! Configuration Item: "
+"<literal>APT::Get::force-yes</literal>. This is deprecated and replaced by "
+"<option>--allow-downgrades</option>, <option>--allow-remove-essential</"
+"option>, <option>--allow-change-held-packages</option> in 1.1."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Instead of fetching the files to install their URIs are printed. Each URI "
+"will have the path, the destination file name, the size and the expected MD5 "
+"hash. Note that the file name to write to will not always match the file "
+"name on the remote site! This also works with the <literal>source</literal> "
+"and <literal>update</literal> commands. When used with the <literal>update</"
+"literal> command the MD5 and size are not included, and it is up to the user "
+"to decompress any compressed files. Configuration Item: <literal>APT::Get::"
+"Print-URIs</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Use purge instead of remove for anything that would be removed. An asterisk "
+"(\"*\") will be displayed next to packages which are scheduled to be purged. "
+"<option>remove --purge</option> is equivalent to the <option>purge</option> "
+"command. Configuration Item: <literal>APT::Get::Purge</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Re-install packages that are already installed and at the newest version. "
+"Configuration Item: <literal>APT::Get::ReInstall</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option is on by default; use <literal>--no-list-cleanup</literal> to "
+"turn it off. When it is on, <command>apt-get</command> will automatically "
+"manage the contents of <filename>&statedir;/lists</filename> to ensure that "
+"obsolete files are erased. The only reason to turn it off is if you "
+"frequently change your sources list. Configuration Item: <literal>APT::Get::"
+"List-Cleanup</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"This option controls the default input to the policy engine; it creates a "
+"default pin at priority 990 using the specified release string. This "
+"overrides the general settings in <filename>/etc/apt/preferences</"
+"filename>. Specifically pinned packages are not affected by the value of "
+"this option. In short, this option lets you have simple control over which "
+"distribution packages will be retrieved from. Some common examples might be "
+"<option>-t '2.1*'</option>, <option>-t unstable</option> or <option>-t sid</"
+"option>. Configuration Item: <literal>APT::Default-Release</literal>; see "
+"also the &apt-preferences; manual page."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only perform operations that are 'trivial'. Logically this can be considered "
+"related to <option>--assume-yes</option>; where <option>--assume-yes</"
+"option> will answer yes to any prompt, <option>--trivial-only</option> will "
+"answer no. Configuration Item: <literal>APT::Get::Trivial-Only</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If any packages are to be removed apt-get immediately aborts without "
+"prompting. Configuration Item: <literal>APT::Get::Remove</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"If the command is either <literal>install</literal> or <literal>remove</"
+"literal>, then this option acts like running the <literal>autoremove</"
+"literal> command, removing unused dependency packages. Configuration Item: "
+"<literal>APT::Get::AutomaticRemove</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only has meaning for the <literal>source</literal> and <literal>build-dep</"
+"literal> commands. Indicates that the given source names are not to be "
+"mapped through the binary table. This means that if this option is "
+"specified, these commands will only accept source package names as "
+"arguments, rather than accepting binary package names and looking up the "
+"corresponding source package. Configuration Item: <literal>APT::Get::Only-"
+"Source</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Download only the diff, dsc, or tar file of a source archive. Configuration "
+"Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</"
+"literal>, and <literal>APT::Get::Tar-Only</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only process architecture-dependent build-dependencies. Configuration Item: "
+"<literal>APT::Get::Arch-Only</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Only process architecture-independent build-dependencies. Configuration "
+"Item: <literal>APT::Get::Indep-Only</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Ignore if packages can't be authenticated and don't prompt about it. This "
+"can be useful while working with local repositories, but is a huge security "
+"risk if data authenticity isn't ensured in another way by the user itself. "
+"The usage of the <option>Trusted</option> option for &sources-list; entries "
+"should usually be preferred over this global override. Configuration Item: "
+"<literal>APT::Get::AllowUnauthenticated</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Forbid the update command to acquire unverifiable data from configured "
+"sources. APT will fail at the update command for repositories without valid "
+"cryptographically signatures. See also &apt-secure; for details on the "
+"concept and the implications. Configuration Item: <literal>Acquire::"
+"AllowInsecureRepositories</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Show user friendly progress information in the terminal window when packages "
+"are installed, upgraded or removed. For a machine parsable version of this "
+"data see README.progress-reporting in the apt doc directory. Configuration "
+"Items: <literal>Dpkg::Progress</literal> and <literal>Dpkg::Progress-Fancy</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-get.8.xml
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. See <option>--with-source</option> description in &apt-"
+"cache; for further details."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-get.8.xml apt-cache.8.xml apt-key.8.xml apt-mark.8.xml apt.conf.5.xml
+#: apt_preferences.5.xml
+msgid "Files"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, "
+"&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the "
+"APT Howto."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-get.8.xml
+msgid ""
+"<command>apt-get</command> returns zero on normal operation, decimal 100 on "
+"error."
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cache.8.xml
+msgid "query the APT cache"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid ""
+"<command>apt-cache</command> performs a variety of operations on APT's "
+"package cache. <command>apt-cache</command> does not manipulate the state of "
+"the system but does provide operations to search and generate interesting "
+"output from the package metadata. The metadata is acquired and updated via "
+"the 'update' command of e.g. <command>apt-get</command>, so that it can be "
+"outdated if the last update is too long ago, but in exchange <command>apt-"
+"cache</command> works independently of the availability of the configured "
+"sources (e.g. offline)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>gencaches</literal> creates APT's package cache. This is done "
+"implicitly by all commands needing this cache if it is missing or outdated."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml
+msgid "&synopsis-pkg;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>showpkg</literal> displays information about the packages listed on "
+"the command line. Remaining arguments are package names. The available "
+"versions and reverse dependencies of each package listed are listed, as well "
+"as forward dependencies for each version. Forward (normal) dependencies are "
+"those packages upon which the package in question depends; reverse "
+"dependencies are those packages that depend upon the package in question. "
+"Thus, forward dependencies must be satisfied for a package, but reverse "
+"dependencies need not be. For instance, <command>apt-cache showpkg "
+"libreadline2</command> would produce output similar to the following:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-cache.8.xml
+#, no-wrap
+msgid ""
+"Package: libreadline2\n"
+"Versions: 2.1-12(/var/state/apt/lists/foo_Packages),\n"
+"Reverse Depends: \n"
+" libreadlineg2,libreadline2\n"
+" libreadline2-altdev,libreadline2\n"
+"Dependencies:\n"
+"2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))\n"
+"Provides:\n"
+"2.1-12 - \n"
+"Reverse Provides: \n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Thus it may be seen that libreadline2, version 2.1-12, depends on libc5 and "
+"ncurses3.0 which must be installed for libreadline2 to work. In turn, "
+"libreadlineg2 and libreadline2-altdev depend on libreadline2. If "
+"libreadline2 is installed, libc5 and ncurses3.0 (and ldso) must also be "
+"installed; libreadlineg2 and libreadline2-altdev do not have to be "
+"installed. For the specific meaning of the remainder of the output it is "
+"best to consult the apt source code."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>stats</literal> displays some statistics about the cache. No "
+"further arguments are expected. Statistics reported are:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total package names</literal> is the number of package names found "
+"in the cache."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Normal packages</literal> is the number of regular, ordinary "
+"package names; these are packages that bear a one-to-one correspondence "
+"between their names and the names used by other packages for them in "
+"dependencies. The majority of packages fall into this category."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Pure virtual packages</literal> is the number of packages that "
+"exist only as a virtual package name; that is, packages only \"provide\" the "
+"virtual package name, and no package actually uses the name. For instance, "
+"\"mail-transport-agent\" in the Debian system is a pure virtual package; "
+"several packages provide \"mail-transport-agent\", but there is no package "
+"named \"mail-transport-agent\"."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Single virtual packages</literal> is the number of packages with "
+"only one package providing a particular virtual package. For example, in the "
+"Debian system, \"X11-text-viewer\" is a virtual package, but only one "
+"package, xless, provides \"X11-text-viewer\"."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Mixed virtual packages</literal> is the number of packages that "
+"either provide a particular virtual package or have the virtual package name "
+"as the package name. For instance, in the Debian system, \"debconf\" is both "
+"an actual package, and provided by the debconf-tiny package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Missing</literal> is the number of package names that were "
+"referenced in a dependency but were not provided by any package. Missing "
+"packages may be an evidence if a full distribution is not accessed, or if a "
+"package (real or virtual) has been dropped from the distribution. Usually "
+"they are referenced from Conflicts or Breaks statements."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total distinct</literal> versions is the number of package versions "
+"found in the cache. If more than one distribution is being accessed (for "
+"instance, \"stable\" and \"unstable\"), this value can be considerably "
+"larger than the number of total package names."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><itemizedlist><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Total dependencies</literal> is the number of dependency "
+"relationships claimed by all of the packages in the cache."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>showsrc</literal> displays all the source package records that "
+"match the given package names. All versions are shown, as well as all "
+"records that declare the name to be a binary package. Use <option>--only-"
+"source</option> to display only source package names."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dump</literal> shows a short listing of every package in the cache. "
+"It is primarily for debugging."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dumpavail</literal> prints out an available list to stdout. This is "
+"suitable for use with &dpkg; and is used by the &dselect; method."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>unmet</literal> displays a summary of all unmet dependencies in the "
+"package cache."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>show</literal> performs a function similar to <command>dpkg --print-"
+"avail</command>; it displays the package records for the named packages."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-cache.8.xml
+msgid "&synopsis-regex;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>search</literal> performs a full text search on all available "
+"package lists for the POSIX regex pattern given, see &regex;. It searches "
+"the package names and the descriptions for an occurrence of the regular "
+"expression and prints out the package name and the short description, "
+"including virtual package names. If <option>--full</option> is given then "
+"output identical to <literal>show</literal> is produced for each matched "
+"package, and if <option>--names-only</option> is given then the long "
+"description is not searched, only the package name and provided packages are."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Separate arguments can be used to specify multiple search patterns that are "
+"and'ed together."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>depends</literal> shows a listing of each dependency a package has "
+"and all the possible other packages that can fulfill that dependency."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>rdepends</literal> shows a listing of each reverse dependency a "
+"package has."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml
+msgid "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+msgstr "<optional><replaceable>&synopsis-prefix;</replaceable></optional>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"This command prints the name of each package APT knows. The optional "
+"argument is a prefix match to filter the name list. The output is suitable "
+"for use in a shell tab complete function and the output is generated "
+"extremely quickly. This command is best used with the <option>--generate</"
+"option> option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Note that a package which APT knows of is not necessarily available to "
+"download, installable or installed, e.g. virtual packages are also listed in "
+"the generated list."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>dotty</literal> takes a list of packages on the command line and "
+"generates output suitable for use by dotty from the <ulink url=\"http://www."
+"research.att.com/sw/tools/graphviz/\">GraphViz</ulink> package. The result "
+"will be a set of nodes and edges representing the relationships between the "
+"packages. By default the given packages will trace out all dependent "
+"packages; this can produce a very large graph. To limit the output to only "
+"the packages listed on the command line, set the <literal>APT::Cache::"
+"GivenOnly</literal> option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"The resulting nodes will have several shapes; normal packages are boxes, "
+"pure virtual packages are triangles, mixed virtual packages are diamonds, "
+"missing packages are hexagons. Orange boxes mean recursion was stopped (leaf "
+"packages), blue lines are pre-depends, green lines are conflicts."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid "Caution, dotty cannot graph larger sets of packages."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"The same as <literal>dotty</literal>, only for xvcg from the <ulink url="
+"\"http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html\">VCG tool</ulink>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-cache.8.xml
+msgid "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+msgstr "<optional><replaceable>&synopsis-pkg;</replaceable>…</optional>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>policy</literal> is meant to help debug issues relating to the "
+"preferences file. With no arguments it will print out the priorities of each "
+"source. Otherwise it prints out detailed information about the priority "
+"selection of the named package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>apt-cache</literal>'s <literal>madison</literal> command attempts "
+"to mimic the output format and a subset of the functionality of the Debian "
+"archive management tool, <literal>madison</literal>. It displays available "
+"versions of a package in a tabular format. Unlike the original "
+"<literal>madison</literal>, it can only display information for the "
+"architecture for which APT has retrieved package lists (<literal>APT::"
+"Architecture</literal>)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Select the file to store the package cache. The package cache is the primary "
+"cache used by all operations. Configuration Item: <literal>Dir::Cache::"
+"pkgcache</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Select the file to store the source cache. The source is used only by "
+"<literal>gencaches</literal> and it stores a parsed version of the package "
+"information from remote sources. When building the package cache the source "
+"cache is used to avoid reparsing all of the package files. Configuration "
+"Item: <literal>Dir::Cache::srcpkgcache</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quietness up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quietness level, overriding the "
+"configuration file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print only important dependencies; for use with <literal>unmet</literal> and "
+"<literal>depends</literal>. Causes only Depends and Pre-Depends relations to "
+"be printed. Configuration Item: <literal>APT::Cache::Important</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Per default the <command>depends</command> and <command>rdepends</command> "
+"print all dependencies. This can be tweaked with these flags which will omit "
+"the specified dependency type. Configuration Item: <literal>APT::Cache::"
+"Show<replaceable>DependencyType</replaceable></literal> e.g. <literal>APT::"
+"Cache::ShowRecommends</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Per default <command>depends</command> and <command>rdepends</command> print "
+"only dependencies explicitly expressed in the metadata. With this flag it "
+"will also show dependencies implicitly added based on the encountered data. "
+"A <literal>Conflicts: foo</literal> e.g. expresses implicitly that this "
+"package also conflicts with the package foo from any other architecture. "
+"Configuration Item: <literal>APT::Cache::ShowImplicit</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print full package records when searching. Configuration Item: "
+"<literal>APT::Cache::ShowFull</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Print full records for all available versions. This is the default; to turn "
+"it off, use <option>--no-all-versions</option>. If <option>--no-all-"
+"versions</option> is specified, only the candidate version will be displayed "
+"(the one which would be selected for installation). This option is only "
+"applicable to the <literal>show</literal> command. Configuration Item: "
+"<literal>APT::Cache::AllVersions</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Perform automatic package cache regeneration, rather than use the cache as "
+"it is. This is the default; to turn it off, use <option>--no-generate</"
+"option>. Configuration Item: <literal>APT::Cache::Generate</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Only search on the package and provided package names, not the long "
+"descriptions. Configuration Item: <literal>APT::Cache::NamesOnly</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Make <literal>pkgnames</literal> print all names, including virtual packages "
+"and missing dependencies. Configuration Item: <literal>APT::Cache::"
+"AllNames</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Make <literal>depends</literal> and <literal>rdepends</literal> recursive so "
+"that all packages mentioned are printed once. Configuration Item: "
+"<literal>APT::Cache::RecurseDepends</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Limit the output of <literal>depends</literal> and <literal>rdepends</"
+"literal> to packages which are currently installed. Configuration Item: "
+"<literal>APT::Cache::Installed</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Adds the given file as a source for metadata. Can be repeated to add "
+"multiple files. Supported are currently <literal>*.deb</literal>, "
+"<literal>*.dsc</literal>, <literal>*.changes</literal>, <literal>Sources</"
+"literal> and <literal>Packages</literal> files as well as source package "
+"directories. Files are matched based on their name only, not their content!"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"<literal>Sources</literal> and <literal>Packages</literal> can be compressed "
+"in any format apt supports as long as they have the correct extension. If "
+"you need to store multiple of these files in one directory you can prefix a "
+"name of your choice with the last character being an underscore "
+"(\"<literal>_</literal>\"). Example: my.example_Packages.xz"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cache.8.xml
+msgid ""
+"Note that these sources are treated as trusted (see &apt-secure;). "
+"Configuration Item: <literal>APT::Sources::With</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid "&apt-conf;, &sources-list;, &apt-get;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cache.8.xml
+msgid ""
+"<command>apt-cache</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-key.8.xml
+msgid "APT key management utility"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"<command>apt-key</command> is used to manage the list of keys used by apt to "
+"authenticate packages. Packages which have been authenticated using these "
+"keys will be considered trusted."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Note that if usage of <command>apt-key</command> is desired the additional "
+"installation of the GNU Privacy Guard suite (packaged in <package>gnupg</"
+"package>) is required. For this reason alone the programmatic usage "
+"(especially in package maintainerscripts!) is strongly discouraged. Further "
+"more the output format of all commands is undefined and can and does change "
+"whenever the underlying commands change. <command>apt-key</command> will try "
+"to detect such usage and generates warnings on stderr in these cases."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml
+msgid "Supported keyring files"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"apt-key supports only the binary OpenPGP format (also known as \"GPG key "
+"public ring\") in files with the \"<literal>gpg</literal>\" extension, not "
+"the keybox database format introduced in newer &gpg; versions as default for "
+"keyring files. Binary keyring files intended to be used with any apt version "
+"should therefore always be created with <command>gpg --export</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Alternatively, if all systems which should be using the created keyring have "
+"at least apt version >= 1.4 installed, you can use the ASCII armored format "
+"with the \"<literal>asc</literal>\" extension instead which can be created "
+"with <command>gpg --armor --export</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml
+msgid "Commands"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Add a new key to the list of trusted keys. The key is read from the "
+"filename given with the parameter &synopsis-param-filename; or if the "
+"filename is <literal>-</literal> from standard input."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"It is critical that keys added manually via <command>apt-key</command> are "
+"verified to belong to the owner of the repositories they claim to be for "
+"otherwise the &apt-secure; infrastructure is completely undermined."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"<emphasis>Note</emphasis>: Instead of using this command a keyring should be "
+"placed directly in the <filename>/etc/apt/trusted.gpg.d/</filename> "
+"directory with a descriptive name and either \"<literal>gpg</literal>\" or "
+"\"<literal>asc</literal>\" as file extension."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Remove a key from the list of trusted keys."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Output the key &synopsis-param-keyid; to standard output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "Output all trusted keys to standard output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid "List trusted keys with fingerprints."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Pass advanced options to gpg. With <command>adv --recv-key</command> you can "
+"e.g. download key from keyservers directly into the trusted set of keys. "
+"Note that there are <emphasis>no</emphasis> checks performed, so it is easy "
+"to completely undermine the &apt-secure; infrastructure if used without care."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt-key.8.xml
+msgid "(deprecated)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Update the local keyring with the archive keyring and remove from the local "
+"keyring the archive keys which are no longer valid. The archive keyring is "
+"shipped in the <literal>archive-keyring</literal> package of your "
+"distribution, e.g. the &keyring-package; package in &keyring-distro;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Note that a distribution does not need to and in fact should not use this "
+"command any longer and instead ship keyring files in the <filename>/etc/apt/"
+"trusted.gpg.d/</filename> directory directly as this avoids a dependency on "
+"<package>gnupg</package> and it is easier to manage keys by simply adding "
+"and removing files for maintainers and users alike."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"Perform an update working similarly to the <command>update</command> command "
+"above, but get the archive keyring from a URI instead and validate it "
+"against a master key. This requires an installed &wget; and an APT build "
+"configured to have a server to fetch from and a master keyring to validate. "
+"APT in Debian does not support this command, relying on <command>update</"
+"command> instead, but Ubuntu's APT does."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-key.8.xml apt-mark.8.xml apt-cdrom.8.xml
+msgid "Options"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid ""
+"Note that options need to be defined before the commands described in the "
+"previous section."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-key.8.xml
+msgid ""
+"With this option it is possible to specify a particular keyring file the "
+"command should operate on. The default is that a command is executed on the "
+"<filename>trusted.gpg</filename> file as well as on all parts in the "
+"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</"
+"filename> is the primary keyring which means that e.g. new keys are added to "
+"this one."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-key.8.xml
+msgid "&apt-get;, &apt-secure;"
+msgstr "&apt-get;, &apt-secure;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-mark.8.xml
+msgid "show, set and unset various settings for a package"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"<command>apt-mark</command> can be used as a unified front-end to set "
+"various settings for a package, such as marking a package as being "
+"automatically/manually installed or changing <command>dpkg</command> "
+"selections such as hold, install, deinstall and purge which are respected e."
+"g. by <command>apt-get dselect-upgrade</command> or <command>aptitude</"
+"command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Automatically and Manually Installed Packages"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"When you request that a package is installed, and as a result other packages "
+"are installed to satisfy its dependencies, the dependencies are marked as "
+"being automatically installed, while the package you installed explicitly is "
+"marked as manually installed. Once an automatically installed package is no "
+"longer depended on by any manually installed package it is considered no "
+"longer needed and e.g. <command>apt-get</command> or <command>aptitude</"
+"command> will at least suggest removing them."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>auto</literal> is used to mark a package as being automatically "
+"installed, which will cause the package to be removed when no more manually "
+"installed packages depend on this package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>manual</literal> is used to mark a package as being manually "
+"installed, which will prevent the package from being automatically removed "
+"if no other packages depend on it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showauto</literal> is used to print a list of automatically "
+"installed packages with each package on a new line. All automatically "
+"installed packages will be listed if no package is given. If packages are "
+"given only those which are automatically installed will be shown."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showmanual</literal> can be used in the same way as "
+"<literal>showauto</literal> except that it will print a list of manually "
+"installed packages instead."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"Read/Write package stats from the filename given with the parameter "
+"&synopsis-param-filename; instead of from the default location, which is "
+"<filename>extended_status</filename> in the directory defined by the "
+"Configuration Item: <literal>Dir::State</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Prevent Changes for a Package"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>hold</literal> is used to mark a package as held back, which will "
+"prevent the package from being automatically installed, upgraded or removed."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>unhold</literal> is used to cancel a previously set hold on a "
+"package to allow all actions again."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-mark.8.xml
+msgid ""
+"<literal>showhold</literal> is used to print a list of packages on hold in "
+"the same way as for the other show commands."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-mark.8.xml
+msgid "Schedule Packages for Install, Remove and Purge"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"Some front-ends like <command>apt-get dselect-upgrade</command> can be used "
+"to apply previously scheduled changes to the install state of packages. Such "
+"changes can be scheduled with the <option>install</option>, <option>remove</"
+"option> (also known as <option>deinstall</option>) and <option>purge</"
+"option> commands. Packages with a specific selection can be displayed with "
+"<option>showinstall</option>, <option>showremove</option> and "
+"<option>showpurge</option> respectively. More information about these so "
+"called dpkg selections can be found in &dpkg;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-mark.8.xml
+msgid ""
+"<command>apt-mark</command> returns zero on normal operation, non-zero on "
+"error."
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-secure.8.xml
+msgid "Archive authentication support for APT"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Starting with version 0.6, <command>APT</command> contains code that does "
+"signature checking of the Release file for all repositories. This ensures "
+"that data like packages in the archive can't be modified by people who have "
+"no access to the Release file signing key. Starting with version 1.1 "
+"<command>APT</command> requires repositories to provide recent "
+"authentication information for unimpeded usage of the repository."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"If an archive has an unsigned Release file or no Release file at all current "
+"APT versions will refuse to download data from them by default in "
+"<command>update</command> operations and even if forced to download front-"
+"ends like &apt-get; will require explicit confirmation if an installation "
+"request includes a package from such an unauthenticated archive."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"As a temporary exception &apt-get; (not &apt;!) raises warnings only if it "
+"encounters unauthenticated archives to give a slightly longer grace period "
+"on this backward compatibility effecting change. This exception will be "
+"removed in future releases and you can opt-out of this grace period by "
+"setting the configuration option <option>Binary::apt-get::Acquire::"
+"AllowInsecureRepositories</option> to <literal>false</literal> or <option>--"
+"no-allow-insecure-repositories</option> on the command line."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"You can force all APT clients to raise only warnings by setting the "
+"configuration option <option>Acquire::AllowInsecureRepositories</option> to "
+"<literal>true</literal>. Individual repositories can also be allowed to be "
+"insecure via the &sources-list; option <literal>allow-insecure=yes</"
+"literal>. Note that insecure repositories are strongly discouraged and all "
+"options to force apt to continue supporting them will eventually be "
+"removed. Users also have the <option>Trusted</option> option available to "
+"disable even the warnings, but be sure to understand the implications as "
+"detailed in &sources-list;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"A repository which previously was authenticated but would loose this state "
+"in an <command>update</command> operation raises an error in all APT clients "
+"irrespective of the option to allow or forbid usage of insecure "
+"repositories. The error can be overcome by additionally setting "
+"<option>Acquire::AllowDowngradeToInsecureRepositories</option> to "
+"<literal>true</literal> or for Individual repositories with the &sources-"
+"list; option <literal>allow-downgrade-to-insecure=yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note: All APT-based package management front-ends like &apt-get;, &aptitude; "
+"and &synaptic; support this authentication feature, so this manpage uses "
+"<literal>APT</literal> to refer to them all for simplicity only."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Trusted Repositories"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"The chain of trust from an APT archive to the end user is made up of several "
+"steps. <command>apt-secure</command> is the last step in this chain; "
+"trusting an archive does not mean that you trust its packages not to contain "
+"malicious code, but means that you trust the archive maintainer. It's the "
+"archive maintainer's responsibility to ensure that the archive's integrity "
+"is preserved."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"apt-secure does not review signatures at a package level. If you require "
+"tools to do this you should look at <command>debsig-verify</command> and "
+"<command>debsign</command> (provided in the debsig-verify and devscripts "
+"packages respectively)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"The chain of trust in Debian starts (e.g.) when a maintainer uploads a new "
+"package or a new version of a package to the Debian archive. In order to "
+"become effective, this upload needs to be signed by a key contained in one "
+"of the Debian package maintainer keyrings (available in the debian-keyring "
+"package). Maintainers' keys are signed by other maintainers following pre-"
+"established procedures to ensure the identity of the key holder. Similar "
+"procedures exist in all Debian-based distributions."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Once the uploaded package is verified and included in the archive, the "
+"maintainer signature is stripped off, and checksums of the package are "
+"computed and put in the Packages file. The checksums of all of the Packages "
+"files are then computed and put into the Release file. The Release file is "
+"then signed by the archive key for this &keyring-distro; release, and "
+"distributed alongside the packages and the Packages files on &keyring-"
+"distro; mirrors. The keys are in the &keyring-distro; archive keyring "
+"available in the &keyring-package; package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"End users can check the signature of the Release file, extract a checksum of "
+"a package from it and compare it with the checksum of the package they "
+"downloaded by hand - or rely on APT doing this automatically."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Notice that this is distinct from checking signatures on a per package "
+"basis. It is designed to prevent two possible attacks:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<literal>Network \"man in the middle\" attacks</literal>. Without signature "
+"checking, malicious agents can introduce themselves into the package "
+"download process and provide malicious software either by controlling a "
+"network element (router, switch, etc.) or by redirecting traffic to a rogue "
+"server (through ARP or DNS spoofing attacks)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<literal>Mirror network compromise</literal>. Without signature checking, a "
+"malicious agent can compromise a mirror host and modify the files in it to "
+"propagate malicious software to all users downloading packages from that "
+"host."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"However, it does not defend against a compromise of the master server itself "
+"(which signs the packages) or against a compromise of the key used to sign "
+"the Release files. In any case, this mechanism can complement a per-package "
+"signature."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "User Configuration"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"<command>apt-key</command> is the program that manages the list of keys used "
+"by APT to trust repositories. It can be used to add or remove keys as well "
+"as list the trusted keys. Limiting which key(s) are able to sign which "
+"archive is possible via the <option>Signed-By</option> in &sources-list;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Note that a default installation already contains all keys to securely "
+"acquire packages from the default repositories, so fiddling with "
+"<command>apt-key</command> is only needed if third-party repositories are "
+"added."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"In order to add a new key you need to first download it (you should make "
+"sure you are using a trusted communication channel when retrieving it), add "
+"it with <command>apt-key</command> and then run <command>apt-get update</"
+"command> so that apt can download and verify the <filename>InRelease</"
+"filename> or <filename>Release.gpg</filename> files from the archives you "
+"have configured."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Archive Configuration"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"If you want to provide archive signatures in an archive under your "
+"maintenance you have to:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Create a toplevel Release file</emphasis>, if it does not exist "
+"already. You can do this by running <command>apt-ftparchive release</"
+"command> (provided in apt-utils)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --"
+"clearsign -o InRelease Release</command> and <command>gpg -abs -o Release."
+"gpg Release</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Publish the key fingerprint</emphasis>, so that your users will "
+"know what key they need to import in order to authenticate the files in the "
+"archive. It is best to ship your key in its own keyring package like "
+"&keyring-distro; does with &keyring-package; to be able to distribute "
+"updates and key transitions automatically later."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><itemizedlist><listitem><para>
+#: apt-secure.8.xml
+msgid ""
+"<emphasis>Provide instructions on how to add your archive and key</"
+"emphasis>. If your users can't acquire your key securely the chain of trust "
+"described above is broken. How you can help users add your key depends on "
+"your archive and target audience ranging from having your keyring package "
+"included in another archive users already have configured (like the default "
+"repositories of their distribution) to leveraging the web of trust."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"Whenever the contents of the archive change (new packages are added or "
+"removed) the archive maintainer has to follow the first two steps outlined "
+"above."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, "
+"&debsign;, &debsig-verify;, &gpg;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"For more background information you might want to review the <ulink url="
+"\"https://www.debian.org/doc/manuals/securing-debian-howto/ch7\">Debian "
+"Security Infrastructure</ulink> chapter of the Securing Debian Manual (also "
+"available in the harden-doc package) and the <ulink url=\"http://www."
+"cryptnet.net/fdp/crypto/strong_distro.html\" >Strong Distribution HOWTO</"
+"ulink> by V. Alex Brennen."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-secure.8.xml
+msgid "Manpage Authors"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-secure.8.xml
+msgid ""
+"This man-page is based on the work of Javier Fernández-Sanguino Peña, Isaac "
+"Jones, Colin Walters, Florian Weimer and Michael Vogt."
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-cdrom.8.xml
+msgid "APT CD-ROM management utility"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<command>apt-cdrom</command> is used to add a new CD-ROM to APT's list of "
+"available sources. <command>apt-cdrom</command> takes care of determining "
+"the structure of the disc as well as correcting for several possible mis-"
+"burns and verifying the index files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"It is necessary to use <command>apt-cdrom</command> to add CDs to the APT "
+"system; it cannot be done by hand. Furthermore each disc in a multi-CD set "
+"must be inserted and scanned separately to account for possible mis-burns."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<literal>add</literal> is used to add a new disc to the source list. It will "
+"unmount the CD-ROM device, prompt for a disc to be inserted and then proceed "
+"to scan it and copy the index files. If the disc does not have a proper "
+"<filename>.disk</filename> directory you will be prompted for a descriptive "
+"title."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"APT uses a CD-ROM ID to track which disc is currently in the drive and "
+"maintains a database of these IDs in <filename>&statedir;/cdroms.list</"
+"filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"A debugging tool to report the identity of the current disc as well as the "
+"stored file name"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Do not try to auto-detect the CD-ROM path. Usually combined with the "
+"<option>--cdrom</option> option. Configuration Item: <literal>Acquire::"
+"cdrom::AutoDetect</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Mount point; specify the location to mount the CD-ROM. This mount point must "
+"be listed in <filename>/etc/fstab</filename> and properly configured. "
+"Configuration Item: <literal>Acquire::cdrom::mount</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Rename a disc; change the label of a disc or override the disc's given "
+"label. This option will cause <command>apt-cdrom</command> to prompt for a "
+"new label. Configuration Item: <literal>APT::CDROM::Rename</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"No mounting; prevent <command>apt-cdrom</command> from mounting and "
+"unmounting the mount point. Configuration Item: <literal>APT::CDROM::"
+"NoMount</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Fast Copy; Assume the package files are valid and do not check every "
+"package. This option should be used only if <command>apt-cdrom</command> has "
+"been run on this disc before and did not detect any errors. Configuration "
+"Item: <literal>APT::CDROM::Fast</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"Thorough Package Scan; This option may be needed with some old Debian "
+"1.1/1.2 discs that have Package files in strange places. It takes much "
+"longer to scan the CD but will pick them all up."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-cdrom.8.xml
+msgid ""
+"No Changes; Do not change the &sources-list; file and do not write index "
+"files. Everything is still checked however. Configuration Item: "
+"<literal>APT::CDROM::NoAct</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid "&apt-conf;, &apt-get;, &sources-list;"
+msgstr "&apt-conf;, &apt-get;, &sources-list;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-cdrom.8.xml
+msgid ""
+"<command>apt-cdrom</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-config.8.xml
+msgid "APT Configuration Query program"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml
+msgid ""
+"<command>apt-config</command> is an internal program used by various "
+"portions of the APT suite to provide consistent configurability. It accesses "
+"the main configuration file <filename>/etc/apt/apt.conf</filename> in a "
+"manner that is easy to use for scripted applications."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"shell is used to access the configuration information from a shell script. "
+"It is given pairs of arguments, the first being a shell variable and the "
+"second the configuration value to query. As output it lists shell assignment "
+"commands for each value present. In a shell script it should be used as "
+"follows:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
+#: apt-config.8.xml
+#, no-wrap
+msgid ""
+"OPTS=\"-f\"\n"
+"RES=`apt-config shell OPTS MyApp::options`\n"
+"eval $RES\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"This will set the shell environment variable $OPTS to the value of MyApp::"
+"options with a default of <option>-f</option>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"The configuration item may be postfixed with a /[fdbi]. f returns file "
+"names, d returns directories, b returns true or false and i returns an "
+"integer. Each of the returns is normalized and verified internally."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid "Just show the contents of the configuration space."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"Include options which have an empty value. This is the default, so use --no-"
+"empty to remove them from the output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable>
+#: apt-config.8.xml
+msgid "&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-config.8.xml
+msgid ""
+"Defines the output of each config option. &percnt;t will be replaced with "
+"its individual name, &percnt;f with its full hierarchical name and &percnt;v "
+"with its value. Use uppercase letters and special characters in the value "
+"will be encoded to ensure that it can e.g. be safely used in a quoted-string "
+"as defined by RFC822. Additionally &percnt;n will be replaced by a newline, "
+"and &percnt;N by a tab. A &percnt; can be printed by using &percnt;&percnt;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml
+#: apt-ftparchive.1.xml
+msgid "&apt-conf;"
+msgstr "&apt-conf;"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-config.8.xml
+msgid ""
+"<command>apt-config</command> returns zero on normal operation, decimal 100 "
+"on error."
+msgstr ""
+
+#. type: Content of: <refentry><refentryinfo><author><contrib>
+#: apt.conf.5.xml
+msgid "Initial documentation of Debug::*."
+msgstr ""
+
+#. type: Content of: <refentry><refentryinfo><author><email>
+#: apt.conf.5.xml
+msgid "dburrows@debian.org"
+msgstr ""
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml
+msgid "5"
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt.conf.5.xml
+msgid "Configuration file for APT"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<filename>/etc/apt/apt.conf</filename> is the main configuration file shared "
+"by all the tools in the APT suite of tools, though it is by no means the "
+"only place options can be set. The suite also shares a common command line "
+"parser to provide a uniform environment."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><orderedlist><para>
+#: apt.conf.5.xml
+msgid ""
+"When an APT tool starts up it will read the configuration files in the "
+"following order:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the file specified by the <envar>APT_CONFIG</envar> environment variable (if "
+"any)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending "
+"order which have either no or \"<literal>conf</literal>\" as filename "
+"extension and which only contain alphanumeric, hyphen (-), underscore (_) "
+"and period (.) characters. Otherwise APT will print a notice that it has "
+"ignored a file, unless that file matches a pattern in the <literal>Dir::"
+"Ignore-Files-Silently</literal> configuration list - in which case it will "
+"be silently ignored."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the main configuration file specified by <literal>Dir::Etc::main</literal>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"all options set in the binary specific configuration subtree are moved into "
+"the root of the tree."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"the command line options are applied to override the configuration "
+"directives or to load even more configuration files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Syntax"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The configuration file is organized in a tree with options organized into "
+"functional groups. Option specification is given with a double colon "
+"notation; for instance <literal>APT::Get::Assume-Yes</literal> is an option "
+"within the APT tool group, for the Get tool. Options do not inherit from "
+"their parent groups."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Syntactically the configuration language is modeled after what the ISC tools "
+"such as bind and dhcp use. Lines starting with <literal>//</literal> are "
+"treated as comments (ignored), as well as all text between <literal>/*</"
+"literal> and <literal>*/</literal>, just like C/C++ comments. Each line is "
+"of the form <literal>APT::Get::Assume-Yes \"true\";</literal>. The "
+"quotation marks and trailing semicolon are required. The value must be on "
+"one line, and there is no kind of string concatenation. Values must not "
+"include backslashes or extra quotation marks. Option names are made up of "
+"alphanumeric characters and the characters \"/-:._+\". A new scope can be "
+"opened with curly braces, like this:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT {\n"
+" Get {\n"
+" Assume-Yes \"true\";\n"
+" Fix-Broken \"true\";\n"
+" };\n"
+"};\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"with newlines placed to make it more readable. Lists can be created by "
+"opening a scope and including a single string enclosed in quotes followed by "
+"a semicolon. Multiple entries can be included, separated by a semicolon."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "DPkg::Pre-Install-Pkgs {\"/usr/sbin/dpkg-preconfigure --apt\";};\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"In general the sample configuration file &configureindex; is a good guide "
+"for how it should look."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Case is not significant in names of configuration items, so in the previous "
+"example you could use <literal>dpkg::pre-install-pkgs</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Names for the configuration items are optional if a list is defined as can "
+"be seen in the <literal>DPkg::Pre-Install-Pkgs</literal> example above. If "
+"you don't specify a name a new entry will simply add a new option to the "
+"list. If you specify a name you can override the option in the same way as "
+"any other option by reassigning a new value to the option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Two special commands are defined: <literal>#include</literal> (which is "
+"deprecated and not supported by alternative implementations) and "
+"<literal>#clear</literal>. <literal>#include</literal> will include the "
+"given file, unless the filename ends in a slash, in which case the whole "
+"directory is included. <literal>#clear</literal> is used to erase a part of "
+"the configuration tree. The specified element and all its descendants are "
+"erased. (Note that these lines also need to end with a semicolon.)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>#clear</literal> command is the only way to delete a list or a "
+"complete scope. Reopening a scope (or using the syntax described below with "
+"an appended <literal>::</literal>) will <emphasis>not</emphasis> override "
+"previously written entries. Options can only be overridden by addressing a "
+"new value to them - lists and scopes can't be overridden, only cleared."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"All of the APT tools take an -o option which allows an arbitrary "
+"configuration directive to be specified on the command line. The syntax is a "
+"full option name (<literal>APT::Get::Assume-Yes</literal> for instance) "
+"followed by an equals sign then the new value of the option. To append a new "
+"element to a list, add a trailing <literal>::</literal> to the name of the "
+"list. (As you might suspect, the scope syntax can't be used on the command "
+"line.)"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that appending items to a list using <literal>::</literal> only works "
+"for one item per line, and that you should not use it in combination with "
+"the scope syntax (which adds <literal>::</literal> implicitly). Using both "
+"syntaxes together will trigger a bug which some users unfortunately depend "
+"on: an option with the unusual name \"<literal>::</literal>\" which acts "
+"like every other option with a name. This introduces many problems; for one "
+"thing, users who write multiple lines in this <emphasis>wrong</emphasis> "
+"syntax in the hope of appending to a list will achieve the opposite, as only "
+"the last assignment for this option \"<literal>::</literal>\" will be used. "
+"Future versions of APT will raise errors and stop working if they encounter "
+"this misuse, so please correct such statements now while APT doesn't "
+"explicitly complain about them."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "The APT Group"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"This group of options controls general APT behavior as well as holding the "
+"options for all of the tools."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"System Architecture; sets the architecture to use when fetching files and "
+"parsing package lists. The internal default is the architecture apt was "
+"compiled for."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"All Architectures the system supports. For instance, CPUs implementing the "
+"<literal>amd64</literal> (also called <literal>x86-64</literal>) "
+"instruction set are also able to execute binaries compiled for the "
+"<literal>i386</literal> (<literal>x86</literal>) instruction set. This list "
+"is used when fetching files and parsing package lists. The initial default "
+"is always the system's native architecture (<literal>APT::Architecture</"
+"literal>), and foreign architectures are added to the default list when they "
+"are registered via <command>dpkg --add-architecture</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This scope defines which compression formats are supported, how compression "
+"and decompression can be performed if support for this format isn't built "
+"into apt directly and a cost-value indicating how costly it is to compress "
+"something in this format. As an example the following configuration stanza "
+"would allow apt to download and uncompress as well as create and store files "
+"with the low-cost <literal>.reversed</literal> file extension which it will "
+"pass to the command <command>rev</command> without additional commandline "
+"parameters for compression and uncompression:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><informalexample><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid ""
+"APT::Compressor::rev {\n"
+"\tName \"rev\";\n"
+"\tExtension \".reversed\";\n"
+"\tBinary \"rev\";\n"
+"\tCompressArg {};\n"
+"\tUncompressArg {};\n"
+"\tCost \"10\";\n"
+"};\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"List of all build profiles enabled for build-dependency resolution, without "
+"the \"<literal>profile.</literal>\" namespace prefix. By default this list "
+"is empty. The <envar>DEB_BUILD_PROFILES</envar> as used by &dpkg-"
+"buildpackage; overrides the list notation."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Default release to install packages from if more than one version is "
+"available. Contains release name, codename or release version. Examples: "
+"'stable', 'testing', 'unstable', '&debian-stable-codename;', '&debian-"
+"testing-codename;', '4.0', '5.0*'. See also &apt-preferences;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Ignore held packages; this global option causes the problem resolver to "
+"ignore held packages in its decision making."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Defaults to on. When turned on the autoclean feature will remove any "
+"packages which can no longer be downloaded from the cache. If turned off "
+"then packages that are locally installed are also excluded from cleaning - "
+"but note that APT provides no direct means to reinstall them."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Defaults to on, which will cause APT to install essential and important "
+"packages as soon as possible in an install/upgrade operation, in order to "
+"limit the effect of a failing &dpkg; call. If this option is disabled, APT "
+"treats an important package in the same way as an extra package: between the "
+"unpacking of the package A and its configuration there can be many other "
+"unpack or configuration calls for other unrelated packages B, C etc. If "
+"these cause the &dpkg; call to fail (e.g. because package B's maintainer "
+"scripts generate an error), this results in a system state in which package "
+"A is unpacked but unconfigured - so any package depending on A is now no "
+"longer guaranteed to work, as its dependency on A is no longer satisfied."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The immediate configuration marker is also applied in the potentially "
+"problematic case of circular dependencies, since a dependency with the "
+"immediate flag is equivalent to a Pre-Dependency. In theory this allows APT "
+"to recognise a situation in which it is unable to perform immediate "
+"configuration, abort, and suggest to the user that the option should be "
+"temporarily deactivated in order to allow the operation to proceed. Note "
+"the use of the word \"theory\" here; in the real world this problem has "
+"rarely been encountered, in non-stable distribution versions, and was caused "
+"by wrong dependencies of the package in question or by a system in an "
+"already broken state; so you should not blindly disable this option, as the "
+"scenario mentioned above is not the only problem it can help to prevent in "
+"the first place."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Before a big operation like <literal>dist-upgrade</literal> is run with this "
+"option disabled you should try to explicitly <literal>install</literal> the "
+"package APT is unable to configure immediately; but please make sure you "
+"also report your problem to your distribution and to the APT team with the "
+"buglink below, so they can work on improving or correcting the upgrade "
+"process."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Never enable this option unless you <emphasis>really</emphasis> know what "
+"you are doing. It permits APT to temporarily remove an essential package to "
+"break a Conflicts/Conflicts or Conflicts/Pre-Depends loop between two "
+"essential packages. <emphasis>Such a loop should never exist and is a grave "
+"bug</emphasis>. This option will work if the essential packages are not "
+"<command>tar</command>, <command>gzip</command>, <command>libc</command>, "
+"<command>dpkg</command>, <command>dash</command> or anything that those "
+"packages depend on."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"APT uses since version 0.7.26 a resizable memory mapped cache file to store "
+"the available information. <literal>Cache-Start</literal> acts as a hint of "
+"the size the cache will grow to, and is therefore the amount of memory APT "
+"will request at startup. The default value is 20971520 bytes (~20 MB). Note "
+"that this amount of space needs to be available for APT; otherwise it will "
+"likely fail ungracefully, so for memory restricted devices this value should "
+"be lowered while on systems with a lot of configured sources it should be "
+"increased. <literal>Cache-Grow</literal> defines in bytes with the default "
+"of 1048576 (~1 MB) how much the cache size will be increased in the event "
+"the space defined by <literal>Cache-Start</literal> is not enough. This "
+"value will be applied again and again until either the cache is big enough "
+"to store all information or the size of the cache reaches the <literal>Cache-"
+"Limit</literal>. The default of <literal>Cache-Limit</literal> is 0 which "
+"stands for no limit. If <literal>Cache-Grow</literal> is set to 0 the "
+"automatic growth of the cache is disabled."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Defines which packages are considered essential build dependencies."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Get subsection controls the &apt-get; tool; please see its documentation "
+"for more information about the options here."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Cache subsection controls the &apt-cache; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The CDROM subsection controls the &apt-cdrom; tool; please see its "
+"documentation for more information about the options here."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "The Acquire Group"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Acquire</literal> group of options controls the download of "
+"packages as well as the various \"acquire methods\" responsible for the "
+"download itself (see also &sources-list;)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Security related option defaulting to true, as giving a Release file's "
+"validation an expiration date prevents replay attacks over a long timescale, "
+"and can also for example help users to identify mirrors that are no longer "
+"updated - but the feature depends on the correctness of the clock on the "
+"user system. Archive maintainers are encouraged to create Release files with "
+"the <literal>Valid-Until</literal> header, but if they don't or a stricter "
+"value is desired the <literal>Max-ValidTime</literal> option below can be "
+"used. The <option>Check-Valid-Until</option> option of &sources-list; "
+"entries should be preferred to disable the check selectively instead of "
+"using this global override."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Maximum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. If the Release file itself includes a "
+"<literal>Valid-Until</literal> header the earlier date of the two is used as "
+"the expiration date. The default value is <literal>0</literal> which stands "
+"for \"valid forever\". Archive specific settings can be made by appending "
+"the label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the <option>Valid-"
+"Until-Max</option> option there."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Minimum time (in seconds) after its creation (as indicated by the "
+"<literal>Date</literal> header) that the <filename>Release</filename> file "
+"should be considered valid. Use this if you need to use a seldom updated "
+"(local) mirror of a more frequently updated archive with a <literal>Valid-"
+"Until</literal> header instead of completely disabling the expiration date "
+"checking. Archive specific settings can and should be used by appending the "
+"label of the archive to the option name. Preferably, the same can be "
+"achieved for specific &sources-list; entries by using the <option>Valid-"
+"Until-Min</option> option there."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Try to download deltas called <literal>PDiffs</literal> for indexes (like "
+"<filename>Packages</filename> files) instead of downloading whole ones. True "
+"by default. Preferably, this can be set for specific &sources-list; entries "
+"or index files by using the <option>PDiffs</option> option there."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Two sub-options to limit the use of PDiffs are also available: "
+"<literal>FileLimit</literal> can be used to specify a maximum number of "
+"PDiff files should be downloaded to update a file. <literal>SizeLimit</"
+"literal> on the other hand is the maximum percentage of the size of all "
+"patches compared to the size of the targeted file. If one of these limits is "
+"exceeded the complete file is downloaded instead of the patches."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Try to download indexes via an URI constructed from a hashsum of the "
+"expected file rather than downloaded via a well-known stable filename. True "
+"by default, but automatically disabled if the source indicates no support "
+"for it. Usage can be forced with the special value \"force\". Preferably, "
+"this can be set for specific &sources-list; entries or index files by using "
+"the <option>By-Hash</option> option there."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</"
+"literal> or <literal>access</literal> which determines how APT parallelizes "
+"outgoing connections. <literal>host</literal> means that one connection per "
+"target host will be opened, <literal>access</literal> means that one "
+"connection per URI type will be opened."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Number of retries to perform. If this is non-zero APT will retry failed "
+"files the given number of times."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Use symlinks for source archives. If set to true then source archives will "
+"be symlinked when possible instead of copying. True is the default."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>http::Proxy</literal> sets the default proxy to use for HTTP URIs. "
+"It is in the standard form of <literal>http://[[user][:pass]@]host[:port]/</"
+"literal>. Per host proxies can also be specified by using the form "
+"<literal>http::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>http_proxy</envar> environment variable will "
+"be used."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Three settings are provided for cache control with HTTP/1.1 compliant proxy "
+"caches. <literal>No-Cache</literal> tells the proxy not to use its cached "
+"response under any circumstances. <literal>Max-Age</literal> sets the "
+"allowed maximum age (in seconds) of an index file in the cache of the "
+"proxy. <literal>No-Store</literal> specifies that the proxy should not "
+"store the requested archive files in its cache, which can be used to prevent "
+"the proxy from polluting its cache with (big) .deb files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The option <literal>timeout</literal> sets the timeout timer used by the "
+"method; this value applies to the connection as well as the data timeout."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to "
+"enable HTTP pipelining (RFC 2616 section 8.1.2.2) which can be beneficial e."
+"g. on high-latency connections. It specifies how many requests are sent in a "
+"pipeline. APT tries to detect and workaround misbehaving webservers and "
+"proxies at runtime, but if you know that yours does not conform to the "
+"HTTP/1.1 specification pipelining can be disabled by setting the value to 0. "
+"It is enabled by default with the value 10."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::AllowRedirect</literal> controls whether APT will "
+"follow redirects, which is enabled by default."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</"
+"literal> which accepts integer values in kilobytes per second. The default "
+"value is 0 which deactivates the limit and tries to use all available "
+"bandwidth. Note that this option implicitly disables downloading from "
+"multiple servers at the same time."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::User-Agent</literal> can be used to set a different "
+"User-Agent for the http download method as some proxies allow access for "
+"clients only if the client uses a known identifier."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Acquire::http::Proxy-Auto-Detect</literal> can be used to specify "
+"an external command to discover the http proxy to use. The first and only "
+"parameter is an URI denoting the host to be contacted to allow for host-"
+"specific configuration. APT expects the command to output the proxy on "
+"stdout as a single line in the style <literal>http://proxy:port/</literal> "
+"or the word <literal>DIRECT</literal> if no proxy should be used. No output "
+"indicates that the generic proxy settings should be used. Note that auto-"
+"detection will not be used for a host if a host-specific proxy configuration "
+"is already set via <literal>Acquire::http::Proxy::<replaceable>HOST</"
+"replaceable></literal>. See the &squid-deb-proxy-client; package for an "
+"example implementation that uses avahi. This option takes precedence over "
+"the legacy option name <literal>ProxyAutoDetect</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Cache-control</literal>, <literal>Timeout</literal>, "
+"<literal>AllowRedirect</literal>, <literal>Dl-Limit</literal> and "
+"<literal>proxy</literal> options work for HTTPS URIs in the same way as for "
+"the <literal>http</literal> method, and default to the same values if they "
+"are not explicitly set. The <literal>Pipeline-Depth</literal> option is not "
+"yet supported."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>CaInfo</literal> suboption specifies place of file that holds info "
+"about trusted certificates. <literal>&lt;host&gt;::CaInfo</literal> is the "
+"corresponding per-host option. <literal>Verify-Peer</literal> boolean "
+"suboption determines whether or not the server's host certificate should be "
+"verified against trusted certificates. <literal>&lt;host&gt;::Verify-Peer</"
+"literal> is the corresponding per-host option. <literal>Verify-Host</"
+"literal> boolean suboption determines whether or not the server's hostname "
+"should be verified. <literal>&lt;host&gt;::Verify-Host</literal> is the "
+"corresponding per-host option. <literal>SslCert</literal> determines what "
+"certificate to use for client authentication. <literal>&lt;host&gt;::"
+"SslCert</literal> is the corresponding per-host option. <literal>SslKey</"
+"literal> determines what private key to use for client authentication. "
+"<literal>&lt;host&gt;::SslKey</literal> is the corresponding per-host "
+"option. <literal>SslForceVersion</literal> overrides default SSL version to "
+"use. It can contain either of the strings '<literal>TLSv1</literal>' or "
+"'<literal>SSLv3</literal>'. <literal>&lt;host&gt;::SslForceVersion</"
+"literal> is the corresponding per-host option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>ftp::Proxy</literal> sets the default proxy to use for FTP URIs. "
+"It is in the standard form of <literal>ftp://[[user][:pass]@]host[:port]/</"
+"literal>. Per host proxies can also be specified by using the form "
+"<literal>ftp::Proxy::&lt;host&gt;</literal> with the special keyword "
+"<literal>DIRECT</literal> meaning to use no proxies. If no one of the above "
+"settings is specified, <envar>ftp_proxy</envar> environment variable will be "
+"used. To use an FTP proxy you will have to set the <literal>ftp::ProxyLogin</"
+"literal> script in the configuration file. This entry specifies the commands "
+"to send to tell the proxy server what to connect to. Please see "
+"&configureindex; for an example of how to do this. The substitution "
+"variables representing the corresponding URI component are <literal>"
+"$(PROXY_USER)</literal>, <literal>$(PROXY_PASS)</literal>, <literal>"
+"$(SITE_USER)</literal>, <literal>$(SITE_PASS)</literal>, <literal>$(SITE)</"
+"literal> and <literal>$(SITE_PORT)</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Several settings are provided to control passive mode. Generally it is safe "
+"to leave passive mode on; it works in nearly every environment. However, "
+"some situations require that passive mode be disabled and port mode FTP used "
+"instead. This can be done globally or for connections that go through a "
+"proxy or for a specific host (see the sample config file for examples)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</"
+"envar> environment variable to an HTTP URL - see the discussion of the http "
+"method above for syntax. You cannot set this in the configuration file and "
+"it is not recommended to use FTP over HTTP due to its low efficiency."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The setting <literal>ForceExtended</literal> controls the use of RFC2428 "
+"<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is "
+"false, which means these commands are only used if the control connection is "
+"IPv6. Setting this to true forces their use even on IPv4 connections. Note "
+"that most FTP servers do not support RFC2428."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "/cdrom/::Mount \"foo\";"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"For URIs using the <literal>cdrom</literal> method, the only configurable "
+"option is the mount point, <literal>cdrom::Mount</literal>, which must be "
+"the mount point for the CD-ROM (or DVD, or whatever) drive as specified in "
+"<filename>/etc/fstab</filename>. It is possible to provide alternate mount "
+"and unmount commands if your mount point cannot be listed in the fstab. The "
+"syntax is to put <placeholder type=\"literallayout\" id=\"0\"/> within the "
+"<literal>cdrom</literal> block. It is important to have the trailing slash. "
+"Unmount commands can be specified using UMount."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"For GPGV URIs the only configurable option is <literal>gpgv::Options</"
+"literal>, which passes additional parameters to gpgv."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"List of compression types which are understood by the acquire methods. "
+"Files like <filename>Packages</filename> can be available in various "
+"compression formats. By default the acquire methods can decompress and "
+"recompress many common formats like <command>xz</command> and <command>gzip</"
+"command>; with this scope the supported formats can be queried, modified as "
+"well as support for more formats added (see also <option>APT::Compressor</"
+"option>). The syntax for this is: <placeholder type=\"synopsis\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order:: \"gz\";"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::CompressionTypes::Order { \"xz\"; \"gz\"; };"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Also, the <literal>Order</literal> subgroup can be used to define in which "
+"order the acquire system will try to download the compressed files. The "
+"acquire system will try the first and proceed with the next compression type "
+"in this list on error, so to prefer one over the other type simply add the "
+"preferred type first - types not already added will be implicitly appended "
+"to the end of the list, so e.g. <placeholder type=\"synopsis\" id=\"0\"/> "
+"can be used to prefer <command>gzip</command> compressed files over all "
+"other compression formats. If <command>xz</command> should be preferred "
+"over <command>gzip</command> and <command>bzip2</command> the configure "
+"setting should look like this: <placeholder type=\"synopsis\" id=\"1\"/> It "
+"is not needed to add <literal>bz2</literal> to the list explicitly as it "
+"will be added automatically."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Dir::Bin::bzip2 \"/bin/bzip2\";"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that the <literal>Dir::Bin::<replaceable>Methodname</replaceable></"
+"literal> will be checked at run time. If this option has been set and "
+"support for this format isn't directly built into apt, the method will only "
+"be used if this file exists; e.g. for the <literal>bzip2</literal> method "
+"(the inbuilt) setting is: <placeholder type=\"literallayout\" id=\"0\"/> "
+"Note also that list entries specified on the command line will be added at "
+"the end of the list specified in the configuration files, but before the "
+"default entries. To prefer a type in this case over the ones specified in "
+"the configuration files you can set the option direct - not in list style. "
+"This will not override the defined list; it will only prefix the list with "
+"this type."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The special type <literal>uncompressed</literal> can be used to give "
+"uncompressed files a preference, but note that most archives don't provide "
+"uncompressed files so this is mostly only useable for local mirrors."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"When downloading <literal>gzip</literal> compressed indexes (Packages, "
+"Sources, or Translations), keep them gzip compressed locally instead of "
+"unpacking them. This saves quite a lot of disk space at the expense of more "
+"CPU requirements when building the local package caches. False by default."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The Languages subsection controls which <filename>Translation</filename> "
+"files are downloaded and in which order APT tries to display the description-"
+"translations. APT will try to display the first available description in the "
+"language which is listed first. Languages can be defined with their short or "
+"long language codes. Note that not all archives provide "
+"<filename>Translation</filename> files for every language - the long "
+"language codes are especially rare."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><programlisting>
+#: apt.conf.5.xml
+#, no-wrap
+msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The default list includes \"environment\" and \"en\". "
+"\"<literal>environment</literal>\" has a special meaning here: it will be "
+"replaced at runtime with the language codes extracted from the "
+"<literal>LC_MESSAGES</literal> environment variable. It will also ensure "
+"that these codes are not included twice in the list. If "
+"<literal>LC_MESSAGES</literal> is set to \"C\" only the "
+"<filename>Translation-en</filename> file (if available) will be used. To "
+"force APT to use no Translation file use the setting <literal>Acquire::"
+"Languages=none</literal>. \"<literal>none</literal>\" is another special "
+"meaning code which will stop the search for a suitable "
+"<filename>Translation</filename> file. This tells APT to download these "
+"translations too, without actually using them unless the environment "
+"specifies the languages. So the following example configuration will result "
+"in the order \"en, de\" in an English locale or \"de, en\" in a German one. "
+"Note that \"fr\" is downloaded, but not used unless APT is used in a French "
+"locale (where the order would be \"fr, de, en\"). <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Note: To prevent problems resulting from APT being executed in different "
+"environments (e.g. by different users or by other programs) all Translation "
+"files which are found in <filename>/var/lib/apt/lists/</filename> will be "
+"added to the end of the list (after an implicit \"<literal>none</literal>\")."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "When downloading, force to use only the IPv4 protocol."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "When downloading, force to use only the IPv6 protocol."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The maximum file size of Release/Release.gpg/InRelease files. The default "
+"is 10MB."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This option controls if apt will use the DNS SRV server record as specified "
+"in RFC 2782 to select an alternative server to connect to. The default is "
+"\"true\"."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow update operations to load data files from repositories without "
+"sufficient security information. The default value is \"<literal>false</"
+"literal>\". Concept, implications as well as alternatives are detailed in "
+"&apt-secure;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow update operations to load data files from repositories which provide "
+"security information, but these are deemed no longer cryptographically "
+"strong enough. The default value is \"<literal>false</literal>\". Concept, "
+"implications as well as alternatives are detailed in &apt-secure;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Allow that a repository that was previously gpg signed to become unsigned "
+"during an update operation. When there is no valid signature for a "
+"previously trusted repository apt will refuse the update. This option can be "
+"used to override this protection. You almost certainly never want to enable "
+"this. The default is <literal>false</literal>. Concept, implications as "
+"well as alternatives are detailed in &apt-secure;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: apt.conf.5.xml
+msgid "scope"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Acquiring changelogs can only be done if an URI is known from where to get "
+"them. Preferable the Release file indicates this in a 'Changelogs' field. "
+"If this isn't available the Label/Origin field of the Release file is used "
+"to check if a <literal>Acquire::Changelogs::URI::Label::<replaceable>LABEL</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Origin::"
+"<replaceable>ORIGIN</replaceable></literal> option exists and if so this "
+"value is taken. The value in the Release file can be overridden with "
+"<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</"
+"replaceable></literal> or <literal>Acquire::Changelogs::URI::Override::"
+"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a "
+"normal URI to a text file, except that package specific data is replaced "
+"with the placeholder <literal>@CHANGEPATH@</literal>. The value for it is: "
+"1. if the package is from a component (e.g. <literal>main</literal>) this "
+"is the first part otherwise it is omitted, 2. the first letter of source "
+"package name, except if the source package name starts with '<literal>lib</"
+"literal>' in which case it will be the first four letters. 3. The complete "
+"source package name. 4. the complete name again and 5. the source version. "
+"The first (if present), second, third and fourth part are separated by a "
+"slash ('<literal>/</literal>') and between the fourth and fifth part is an "
+"underscore ('<literal>_</literal>'). The special value '<literal>no</"
+"literal>' is available for this option indicating that this source can't be "
+"used to acquire changelog files from. Another source will be tried if "
+"available in this case."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Binary specific configuration"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Especially with the introduction of the <command>apt</command> binary it can "
+"be useful to set certain options only for a specific binary as even options "
+"which look like they would effect only a certain binary like <option>APT::"
+"Get::Show-Versions</option> effect <command>apt-get</command> as well as "
+"<command>apt</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Setting an option for a specific binary only can be achieved by setting the "
+"option inside the <option>Binary::<replaceable>specific-binary</"
+"replaceable></option> scope. Setting the option <option>APT::Get::Show-"
+"Versions</option> for the <command>apt</command> only can e.g. by done by "
+"setting <option>Binary::apt::APT::Get::Show-Versions</option> instead."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Note that as seen in the DESCRIPTION section further above you can't set "
+"binary-specific options on the commandline itself nor in configuration files "
+"loaded via the commandline."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Directories"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Dir::State</literal> section has directories that pertain to "
+"local state information. <literal>lists</literal> is the directory to place "
+"downloaded package lists in and <literal>status</literal> is the name of the "
+"&dpkg; status file. <literal>preferences</literal> is the name of the APT "
+"<filename>preferences</filename> file. <literal>Dir::State</literal> "
+"contains the default directory to prefix on all sub-items if they do not "
+"start with <filename>/</filename> or <filename>./</filename>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Dir::Cache</literal> contains locations pertaining to local cache "
+"information, such as the two package caches <literal>srcpkgcache</literal> "
+"and <literal>pkgcache</literal> as well as the location to place downloaded "
+"archives, <literal>Dir::Cache::archives</literal>. Generation of caches can "
+"be turned off by setting <literal>pkgcache</literal> or "
+"<literal>srcpkgcache</literal> to <literal>\"\"</literal>. This will slow "
+"down startup but save disk space. It is probably preferable to turn off the "
+"pkgcache rather than the srcpkgcache. Like <literal>Dir::State</literal> "
+"the default directory is contained in <literal>Dir::Cache</literal>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Dir::Etc</literal> contains the location of configuration files, "
+"<literal>sourcelist</literal> gives the location of the sourcelist and "
+"<literal>main</literal> is the default configuration file (setting has no "
+"effect, unless it is done from the config file specified by "
+"<envar>APT_CONFIG</envar>)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Dir::Parts</literal> setting reads in all the config fragments "
+"in lexical order from the directory specified. After this is done then the "
+"main config file is loaded."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
+"Bin::Methods</literal> specifies the location of the method handlers and "
+"<literal>gzip</literal>, <literal>bzip2</literal>, <literal>lzma</literal>, "
+"<literal>dpkg</literal>, <literal>apt-get</literal> <literal>dpkg-source</"
+"literal> <literal>dpkg-buildpackage</literal> and <literal>apt-cache</"
+"literal> specify the location of the respective programs."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The configuration item <literal>RootDir</literal> has a special meaning. If "
+"set, all paths will be relative to <literal>RootDir</literal>, "
+"<emphasis>even paths that are specified absolutely</emphasis>. So, for "
+"instance, if <literal>RootDir</literal> is set to <filename>/tmp/staging</"
+"filename> and <literal>Dir::State::status</literal> is set to <filename>/var/"
+"lib/dpkg/status</filename>, then the status file will be looked up in "
+"<filename>/tmp/staging/var/lib/dpkg/status</filename>. If you want to "
+"prefix only relative paths, set <literal>Dir</literal> instead."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"The <literal>Ignore-Files-Silently</literal> list can be used to specify "
+"which files APT should silently ignore while parsing the files in the "
+"fragment directories. Per default a file which end with <literal>.disabled</"
+"literal>, <literal>~</literal>, <literal>.bak</literal> or <literal>.dpkg-[a-"
+"z]+</literal> is silently ignored. As seen in the last default value these "
+"patterns can use regular expression syntax."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "APT in DSelect"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"When APT is used as a &dselect; method several configuration directives "
+"control the default behavior. These are in the <literal>DSelect</literal> "
+"section."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Cache Clean mode; this value may be one of <literal>always</literal>, "
+"<literal>prompt</literal>, <literal>auto</literal>, <literal>pre-auto</"
+"literal> and <literal>never</literal>. <literal>always</literal> and "
+"<literal>prompt</literal> will remove all packages from the cache after "
+"upgrading, <literal>prompt</literal> (the default) does so conditionally. "
+"<literal>auto</literal> removes only those packages which are no longer "
+"downloadable (replaced with a new version for instance). <literal>pre-auto</"
+"literal> performs this action before downloading new packages."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the install phase."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The contents of this variable are passed to &apt-get; as command line "
+"options when it is run for the update phase."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"If true the [U]pdate operation in &dselect; will always prompt to continue. "
+"The default is to prompt only on error."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "How APT calls &dpkg;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Several configuration directives control how APT invokes &dpkg;. These are "
+"in the <literal>DPkg</literal> section."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of options to pass to &dpkg;. The options must be specified "
+"using the list notation and each list item is passed as a single argument to "
+"&dpkg;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of shell commands to run before/after invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"This is a list of shell commands to run before invoking &dpkg;. Like "
+"<literal>options</literal> this must be specified in list notation. The "
+"commands are invoked in order using <filename>/bin/sh</filename>; should any "
+"fail APT will abort. APT will pass the filenames of all .deb files it is "
+"going to install to the commands, one per line on the requested file "
+"descriptor, defaulting to standard input."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Version 2 of this protocol sends more information through the requested file "
+"descriptor: a line with the text <literal>VERSION 2</literal>, the APT "
+"configuration space, and a list of package actions with filename and version "
+"information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Each configuration directive line has the form <literal>key=value</"
+"literal>. Special characters (equal signs, newlines, nonprintable "
+"characters, quotation marks, and percent signs in <literal>key</literal> and "
+"newlines, nonprintable characters, and percent signs in <literal>value</"
+"literal>) are %-encoded. Lists are represented by multiple <literal>key::"
+"=value</literal> lines with the same key. The configuration section ends "
+"with a blank line."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Package action lines consist of five fields in Version 2: package name "
+"(without architecture qualification even if foreign), old version, direction "
+"of version change (&lt; for upgrades, &gt; for downgrades, = for no change), "
+"new version, action. The version fields are \"-\" for no version at all (for "
+"example when installing a package for the first time; no version is treated "
+"as earlier than any real version, so that is an upgrade, indicated as "
+"<literal>- &lt; 1.23.4</literal>). The action field is \"**CONFIGURE**\" if "
+"the package is being configured, \"**REMOVE**\" if it is being removed, or "
+"the filename of a .deb file if it is being unpacked."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"In Version 3 after each version field follows the architecture of this "
+"version, which is \"-\" if there is no version, and a field showing the "
+"MultiArch type \"same\", \"foreign\", \"allowed\" or \"none\". Note that "
+"\"none\" is an incorrect typename which is just kept to remain compatible, "
+"it should be read as \"no\" and users are encouraged to support both."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The version of the protocol to be used for the command "
+"<literal><replaceable>cmd</replaceable></literal> can be chosen by setting "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::Version</"
+"literal> accordingly, the default being version 1. If APT isn't supporting "
+"the requested version it will send the information in the highest version it "
+"has support for instead."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"The file descriptor to be used to send the information can be requested with "
+"<literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::InfoFD</"
+"literal> which defaults to <literal>0</literal> for standard input and is "
+"available since version 0.9.11. Support for the option can be detected by "
+"looking for the environment variable <envar>APT_HOOK_INFO_FD</envar> which "
+"contains the number of the used file descriptor as a confirmation."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"APT chdirs to this directory before invoking &dpkg;, the default is "
+"<filename>/</filename>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"These options are passed to &dpkg-buildpackage; when compiling packages; the "
+"default is to disable signing and produce all binaries."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"If this option is set APT will call <command>dpkg --configure --pending</"
+"command> to let &dpkg; handle all required configurations and triggers. This "
+"option is activated by default, but deactivating it could be useful if you "
+"want to run APT multiple times in a row - e.g. in an installer. In this "
+"scenario you could deactivate this option in all but the last run."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Periodic and Archives options"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups "
+"of options configure behavior of apt periodic updates, which is done by the "
+"<literal>/usr/lib/apt/apt.systemd.daily</literal> script. See the top of "
+"this script for the brief documentation of these options."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml
+msgid "Debug options"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"Enabling options in the <literal>Debug::</literal> section will cause "
+"debugging information to be sent to the standard error stream of the program "
+"utilizing the <literal>apt</literal> libraries, or enable special program "
+"modes that are primarily useful for debugging the behavior of <literal>apt</"
+"literal>. Most of these options are not interesting to a normal user, but a "
+"few may be:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::pkgProblemResolver</literal> enables output about the "
+"decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::NoLocking</literal> disables all file locking. This can be "
+"used to run some operations (for instance, <literal>apt-get -s install</"
+"literal>) as a non-root user."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each "
+"time that <literal>apt</literal> invokes &dpkg;."
+msgstr ""
+
+#. TODO: provide a
+#. motivating example, except I haven't a clue why you'd want
+#. to do this.
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
+"in CD-ROM IDs."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid "A full list of debugging options to apt follows."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information related to accessing <literal>cdrom://</literal> sources."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using FTP."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using HTTP."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Print information related to downloading packages using HTTPS."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information related to verifying cryptographic signatures using "
+"<literal>gpg</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information about the process of accessing collections of packages "
+"stored on CD-ROMs."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Describes the process of resolving build-dependencies in &apt-get;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output each cryptographic hash that is generated by the <literal>apt</"
+"literal> libraries."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Do not include information from <literal>statfs</literal>, namely the number "
+"of used and free blocks on the CD-ROM filesystem, when generating an ID for "
+"a CD-ROM."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Disable all file locking. For instance, this will allow two instances of "
+"<quote><literal>apt-get update</literal></quote> to run at the same time."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Log when items are added to or removed from the global download queue."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output status messages and errors related to verifying checksums and "
+"cryptographic signatures of downloaded files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information about downloading and applying package index list diffs, "
+"and errors relating to package index list diffs."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output information related to patching apt package lists when downloading "
+"index diffs instead of full indices."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Log all interactions with the sub-processes that actually perform downloads."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Log events related to the automatically-installed status of packages and to "
+"the removal of unused packages."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate debug messages describing which packages are being automatically "
+"installed to resolve dependencies. This corresponds to the initial auto-"
+"install pass performed in, e.g., <literal>apt-get install</literal>, and not "
+"to the full <literal>apt</literal> dependency resolver; see <literal>Debug::"
+"pkgProblemResolver</literal> for that."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate debug messages describing which packages are marked as keep/install/"
+"remove while the ProblemResolver does his work. Each addition or deletion "
+"may trigger additional actions; they are shown indented two additional "
+"spaces under the original entry. The format for each line is "
+"<literal>MarkKeep</literal>, <literal>MarkDelete</literal> or "
+"<literal>MarkInstall</literal> followed by <literal>package-name &lt;a.b.c -"
+"&gt; d.e.f | x.y.z&gt; (section)</literal> where <literal>a.b.c</literal> is "
+"the current version of the package, <literal>d.e.f</literal> is the version "
+"considered for installation and <literal>x.y.z</literal> is a newer version, "
+"but not considered for installation (because of a low pin score). The later "
+"two can be omitted if there is none or if it is the same as the installed "
+"version. <literal>section</literal> is the name of the section the package "
+"appears in."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"When invoking &dpkg;, output the precise command line with which it is being "
+"invoked, with arguments separated by a single space character."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output all the data received from &dpkg; on the status file descriptor and "
+"any errors encountered while parsing it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Generate a trace of the algorithm that decides the order in which "
+"<literal>apt</literal> should pass packages to &dpkg;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Output status messages tracing the steps performed when invoking &dpkg;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid "Output the priority of each package list on startup."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Trace the execution of the dependency resolver (this applies only to what "
+"happens when a complex dependency problem is encountered)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Display a list of all installed packages with their calculated score used by "
+"the pkgProblemResolver. The description of the package is the same as "
+"described in <literal>Debug::pkgDepCache::Marker</literal>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Print information about the vendors read from <filename>/etc/apt/vendors."
+"list</filename>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml
+msgid ""
+"Display the external commands that are called by apt hooks. This includes e."
+"g. the config options <literal>DPkg::{Pre,Post}-Invoke</literal> or "
+"<literal>APT::Update::{Pre,Post}-Invoke</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt.conf.5.xml apt_preferences.5.xml sources.list.5.xml apt-ftparchive.1.xml
+msgid "Examples"
+msgstr "Exemplos"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid ""
+"&configureindex; is a configuration file showing example values for all "
+"possible options."
+msgstr ""
+
+#. ? reading apt.conf
+#. type: Content of: <refentry><refsect1><para>
+#: apt.conf.5.xml
+msgid "&apt-cache;, &apt-config;, &apt-preferences;."
+msgstr "&apt-cache;, &apt-config;, &apt-preferences;."
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "Preference control file for APT"
+msgstr "Arquivo de controle de preferências para o APT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"The APT preferences file <filename>/etc/apt/preferences</filename> and the "
+"fragment files in the <filename>/etc/apt/preferences.d/</filename> folder "
+"can be used to control which versions of packages will be selected for "
+"installation."
+msgstr ""
+"O arquivo de preferências do APT <filename>/etc/apt/preferences</filename> "
+"pode ser usado para controlar quais versões de pacotes serão selecionadas "
+"para instalação."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"Several versions of a package may be available for installation when the "
+"&sources-list; file contains references to more than one distribution (for "
+"example, <literal>stable</literal> and <literal>testing</literal>). APT "
+"assigns a priority to each version that is available. Subject to dependency "
+"constraints, <command>apt-get</command> selects the version with the highest "
+"priority for installation. The APT preferences override the priorities that "
+"APT assigns to package versions by default, thus giving the user control "
+"over which one is selected for installation."
+msgstr ""
+"Diversas versões de um pacote podem estar disponíveis para instalação quando "
+"o arquivo &sources-list; contém referências para mais de uma distribuição "
+"(por exemplo, <literal>stable</literal> e <literal>testing</literal>). O APT "
+"atribui uma prioridade para cada versão que esteja disponível. Sujeito a "
+"obstáculos de dependências, o <command>apt-get</command> seleciona para "
+"instalação a versão com a maior prioridade. O arquivo de preferências do APT "
+"sobrepoe as prioridades que o APT atribui a cada versão de pacote por "
+"padrão, dando assim ao usuário controle sobre qual versão do pacote é "
+"selecionada para instalação."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"Several instances of the same version of a package may be available when the "
+"&sources-list; file contains references to more than one source. In this "
+"case <command>apt-get</command> downloads the instance listed earliest in "
+"the &sources-list; file. The APT preferences do not affect the choice of "
+"instance, only the choice of version."
+msgstr ""
+"Diversas instâncias da mesma versão de um pacote pode estar disponíveis "
+"quando o arquivo &sources-list; contém referências a mais de uma fonte. "
+"Nesse caso, o <command>apt-get</command> faz o download da instância listada "
+"antes no arquivo &sources-list; . O arquivo de preferências do APT não afeta "
+"a escolha da instância."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Preferences are a strong power in the hands of a system administrator but "
+"they can become also their biggest nightmare if used without care! APT will "
+"not question the preferences, so wrong settings can lead to uninstallable "
+"packages or wrong decisions while upgrading packages. Even more problems "
+"will arise if multiple distribution releases are mixed without a good "
+"understanding of the following paragraphs. Packages included in a specific "
+"release aren't tested in (and therefore don't always work as expected in) "
+"older or newer releases, or together with other packages from different "
+"releases. You have been warned."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid ""
+"Note that the files in the <filename>/etc/apt/preferences.d</filename> "
+"directory are parsed in alphanumeric ascending order and need to obey the "
+"following naming convention: The files have either no or \"<literal>pref</"
+"literal>\" as filename extension and only contain alphanumeric, hyphen (-), "
+"underscore (_) and period (.) characters. Otherwise APT will print a notice "
+"that it has ignored a file, unless that file matches a pattern in the "
+"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in which "
+"case it will be silently ignored."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "APT's Default Priority Assignments"
+msgstr "Atribuições de Prioridade Padrão do APT"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, fuzzy, no-wrap
+msgid "<command>apt-get install -t testing <replaceable>some-package</replaceable></command>\n"
+msgstr ""
+"<programlisting>\n"
+"<command>apt-get install -t testing <replaceable>algum-pacote</replaceable></command>\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "APT::Default-Release \"stable\";\n"
+msgstr "APT::Default-Release \"stable\";\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"If there is no preferences file or if there is no entry in the file that "
+"applies to a particular version then the priority assigned to that version "
+"is the priority of the distribution to which that version belongs. It is "
+"possible to single out a distribution, \"the target release\", which "
+"receives a higher priority than other distributions do by default. The "
+"target release can be set on the <command>apt-get</command> command line or "
+"in the APT configuration file <filename>/etc/apt/apt.conf</filename>. Note "
+"that this has precedence over any general priority you set in the <filename>/"
+"etc/apt/preferences</filename> file described later, but not over "
+"specifically pinned packages. For example, <placeholder type="
+"\"programlisting\" id=\"0\"/> <placeholder type=\"programlisting\" id=\"1\"/>"
+msgstr ""
+"Caso não exista um arquivo de preferências ou caso não exista uma entrada no "
+"arquivo que se aplique a uma instância em particular, a prioridade atribuída "
+"a essa instância é a prioridade da distribuição para a qual a instância "
+"pertence. É possível selecionar uma distribuição, conhecida como \"a versão "
+"alvo\" (the target release), que recebe uma prioridade maior do que as "
+"outras distribuições. A versão alvo pode ser definida na linha de comando do "
+"<command>apt-get</command> ou no arquivo de configuração do APT <filename>/"
+"etc/apt/apt.conf</filename>. Por exemplo,"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"If the target release has been specified then APT uses the following "
+"algorithm to set the priorities of the versions of a package. Assign:"
+msgstr ""
+"Caso uma versão alvo tenha sido especificada o APT usará o seguinte "
+"algoritmo para definir as prioridades das instâncias de um pacote. "
+"Atribuirá :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "priority 1"
+msgstr "prioridade 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"to the versions coming from archives which in their <filename>Release</"
+"filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</"
+"emphasis> as \"ButAutomaticUpgrades: yes\" like the Debian "
+"<literal>experimental</literal> archive."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "priority 100"
+msgstr "prioridade 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"to the version that is already installed (if any) and to the versions coming "
+"from archives which in their <filename>Release</filename> files are marked "
+"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the Debian "
+"backports archive since <literal>squeeze-backports</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "priority 500"
+msgstr "prioridade 500"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "to the versions that do not belong to the target release."
+msgstr ""
+"para as instâncias que não estejam instaladas e pertençam a versão alvo."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "priority 990"
+msgstr "prioridade 990"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "to the versions that belong to the target release."
+msgstr ""
+"para as instâncias que não estejam instaladas e pertençam a versão alvo."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The highest of those priorities whose description matches the version is "
+"assigned to the version."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"If the target release has not been specified then APT simply assigns "
+"priority 100 to all installed package versions and priority 500 to all "
+"uninstalled package versions, except versions coming from archives which in "
+"their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" "
+"- these versions get the priority 1 or priority 100 if it is additionally "
+"marked as \"ButAutomaticUpgrades: yes\"."
+msgstr ""
+"Caso nenhuma versão alvo tenha sido especificada, o APT simplesmente irá "
+"atribuir a prioridade 100 para todas as instâncias de pacotes instaladas e a "
+"prioridade 500 para todas as instâncias de pacotes não instaladas."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"APT then applies the following rules, listed in order of precedence, to "
+"determine which version of a package to install."
+msgstr ""
+"O APT aplica as regras a seguir, listadas em ordem de precedência, para "
+"determinar qual instância de um pacote instalar."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"Never downgrade unless the priority of an available version exceeds 1000. "
+"(\"Downgrading\" is installing a less recent version of a package in place "
+"of a more recent version. Note that none of APT's default priorities "
+"exceeds 1000; such high priorities can only be set in the preferences file. "
+"Note also that downgrading a package can be risky.)"
+msgstr ""
+"Nunca faz um downgrade a menos que a prioridade de uma instância disponível "
+"exceda 1000. (Fazer um \"downgrade\" é instalar uma versão menos recente de "
+"um pacote no lugar de uma versão mais recente. Note que nenhuma das "
+"prioridades padrão do APT excede 1000; prioridades altas como essa podem ser "
+"definidas somente no arquivo de preferências. Note também que fazer um "
+"\"downgrade\" pode ser arriscado.)"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "Install the highest priority version."
+msgstr "Instala a instância de prioridade mais alta."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"If two or more versions have the same priority, install the most recent one "
+"(that is, the one with the higher version number)."
+msgstr ""
+"Caso duas ou mais instâncias possuam a mesma prioridade, instala a instância "
+"mais recente (ou seja, aquela com o maior número de versão)."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"If two or more versions have the same priority and version number but either "
+"the packages differ in some of their metadata or the <literal>--reinstall</"
+"literal> option is given, install the uninstalled one."
+msgstr ""
+"Caso duas ou mais instâncias possuam a mesma prioridade e número de versão "
+"mas os pacotes sejam diferentes em alguns de seus metadados ou a opção "
+"<literal>--reinstall</literal> seja fornecida, instala aquela desinstalada."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"In a typical situation, the installed version of a package (priority 100) "
+"is not as recent as one of the versions available from the sources listed in "
+"the &sources-list; file (priority 500 or 990). Then the package will be "
+"upgraded when <command>apt-get install <replaceable>some-package</"
+"replaceable></command> or <command>apt-get upgrade</command> is executed."
+msgstr ""
+"Em uma situação típica, a instância instalada de um pacote (prioridade 100) "
+"não é tão recente quanto uma das versões disponíveis nas fontes listadas no "
+"arquivo &sources-list; (prioridade 500 ou 990). Então o pacote será "
+"atualizado quando os comandos <command>apt-get install <replaceable>algum-"
+"pacote</replaceable></command> ou <command>apt-get dist-upgrade</command> "
+"forem executados."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"More rarely, the installed version of a package is <emphasis>more</emphasis> "
+"recent than any of the other available versions. The package will not be "
+"downgraded when <command>apt-get install <replaceable>some-package</"
+"replaceable></command> or <command>apt-get upgrade</command> is executed."
+msgstr ""
+"Mais raramente, a versão instalada de um pacote é <emphasis>mais</emphasis> "
+"recente do que qualquer uma das outras versões disponíveis. O dowgrade do "
+"pacote não será feito quando os comandos <command>apt-get install "
+"<replaceable>algum-pacote</replaceable></command> ou <command>apt-get "
+"upgrade</command> forem executados."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"Sometimes the installed version of a package is more recent than the version "
+"belonging to the target release, but not as recent as a version belonging to "
+"some other distribution. Such a package will indeed be upgraded when "
+"<command>apt-get install <replaceable>some-package</replaceable></command> "
+"or <command>apt-get upgrade</command> is executed, because at least "
+"<emphasis>one</emphasis> of the available versions has a higher priority "
+"than the installed version."
+msgstr ""
+"Algumas vezes a versão instalada de um pacote é mais recente que a versão "
+"que pertence a versão alvo, mas não tão recente quanto a versão que pertence "
+"a alguma outra distribuição. Um pacote como esse será na verdade atualizado "
+"quando os comandos <command>apt-get install <replaceable>algum-pacote</"
+"replaceable></command> ou <command>apt-get upgrade</command> forem "
+"executados, devido a pelo menos <emphasis>uma</emphasis> das versões "
+"disponíveis possuir uma prioridade maior do que a versão instalada."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "The Effect of APT Preferences"
+msgstr "O Efeito das Preferências do APT"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"The APT preferences file allows the system administrator to control the "
+"assignment of priorities. The file consists of one or more multi-line "
+"records separated by blank lines. Records can have one of two forms, a "
+"specific form and a general form."
+msgstr ""
+"O arquivo de preferências do APT permite ao administrador do sistema "
+"personalizar prioridades. O arquivo consiste de um ou mais registros de "
+"múltiplas linhas separados por linhas em branco. Registros podem possuir uma "
+"das duas formas, uma forma específica e uma forma geral."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"The specific form assigns a priority (a \"Pin-Priority\") to one or more "
+"specified packages with a specified version or version range. For example, "
+"the following record assigns a high priority to all versions of the "
+"<filename>perl</filename> package whose version number begins with "
+"\"<literal>&good-perl;</literal>\". Multiple packages can be separated by "
+"spaces."
+msgstr ""
+"A forma específica atribui uma uma prioridade (uma \"Pin-Priority\") para um "
+"pacote e versão ou faixa de versão especificados. Por exemplo, o registro a "
+"seguir atribui uma prioridade alta para todas as versões do pacote "
+"<filename>perl</filename> os quais tenham seus números de versão iniciando "
+"com \"<literal>5.8</literal>\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"The general form assigns a priority to all of the package versions in a "
+"given distribution (that is, to all the versions of packages that are listed "
+"in a certain <filename>Release</filename> file) or to all of the package "
+"versions coming from a particular Internet site, as identified by the site's "
+"fully qualified domain name."
+msgstr ""
+"O forma geral atribui uma prioridade para todas as versões de pacotes em uma "
+"dada distribuição (isto é, para toda as versões de pacotes que estejam em um "
+"certo arquivo <filename>Release</filename>) ou para todas as versões de "
+"pacotes que provenientes de um site Internet em particular, como "
+"identificado pelo nome de domínio totalmente qualificado do site Internet."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"This general-form entry in the APT preferences file applies only to groups "
+"of packages. For example, the following record assigns a high priority to "
+"all package versions available from the local site."
+msgstr ""
+"Essa entrada de forma geral no arquivo de preferências do APT aplica-se "
+"somente a grupos de pacotes. Por exemplo, o registro a seguir faz com que o "
+"APT atribua uma prioridade alta para todas as versões de pacotes disponíveis "
+"no site local."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+msgid ""
+"A note of caution: the keyword used here is \"<literal>origin</literal>\" "
+"which can be used to match a hostname. The following record will assign a "
+"high priority to all versions available from the server identified by the "
+"hostname \"ftp.de.debian.org\""
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+msgstr ""
+"Package: *\n"
+"Pin: origin \"ftp.de.debian.org\"\n"
+"Pin-Priority: 999\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"This should <emphasis>not</emphasis> be confused with the Origin of a "
+"distribution as specified in a <filename>Release</filename> file. What "
+"follows the \"Origin:\" tag in a <filename>Release</filename> file is not an "
+"Internet address but an author or vendor name, such as \"Debian\" or \"Ximian"
+"\"."
+msgstr ""
+"Uma nota de aviso : a palavra-chave usada aqui é \"<literal>origin</literal>"
+"\". Esta palavra não deve ser confundida com a origem (\"Origin:\") de uma "
+"distribuição como especificado em um arquivo <filename>Release</filename>. O "
+"que segue a tag \"Origin:\" em um arquivo <filename>Release</filename> não é "
+"um endereço de site Internet mas sim nome de autor ou distribuidor (vendor), "
+"como \"Debian\" ou \"Ximian\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"The following record assigns a low priority to all package versions "
+"belonging to any distribution whose Archive name is \"<literal>unstable</"
+"literal>\"."
+msgstr ""
+"O registro a seguir atribui uma prioridade baixa para todas as versões de "
+"pacote que pertençam a qualquer distribuição cujo nome do Repositório seja "
+"\"<literal>unstable</literal>\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 50\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any distribution whose Codename is \"<literal>&debian-testing-"
+"codename;</literal>\"."
+msgstr ""
+"O registro a seguir atribui uma prioridade baixa para todas as versões de "
+"pacote que pertençam a qualquer distribuição cujo nome do Repositório seja "
+"\"<literal>unstable</literal>\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+msgstr ""
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"The following record assigns a high priority to all package versions "
+"belonging to any release whose Archive name is \"<literal>stable</literal>\" "
+"and whose release Version number is \"<literal>&debian-stable-version;</"
+"literal>\"."
+msgstr ""
+"O registro a seguir atribui uma prioridade alta para todas as versões de "
+"pacotes que pertençam a qualquer versão cujo nome do Repositório seja "
+"\"<literal>stable</literal>\" e cujo número de versão seja \"<literal>3.0</"
+"literal>\"."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin-Priority: 500\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The effect of the comma operator is similar to an \"and\" in logic: All "
+"conditions must be satisfied for the pin to match. There is one exception: "
+"For any type of condition (such as two \"a\" conditions), only the last such "
+"condition is checked."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Regular expressions and &glob; syntax"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"APT also supports pinning by &glob; expressions, and regular expressions "
+"surrounded by slashes. For example, the following example assigns the "
+"priority 500 to all packages from experimental where the name starts with "
+"gnome (as a &glob;-like expression) or contains the word kde (as a POSIX "
+"extended regular expression surrounded by slashes)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+msgstr ""
+"Package: gnome* /kde/\n"
+"Pin: release a=experimental\n"
+"Pin-Priority: 500\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The rule for those expressions is that they can occur anywhere where a "
+"string can occur. Thus, the following pin assigns the priority 990 to all "
+"packages from a release starting with &ubuntu-codename;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+msgstr ""
+"Package: *\n"
+"Pin: release n=&ubuntu-codename;*\n"
+"Pin-Priority: 990\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"If a regular expression occurs in a <literal>Package</literal> field, the "
+"behavior is the same as if this regular expression were replaced with a list "
+"of all package names it matches. It is undecided whether this will change in "
+"the future; thus you should always list wild-card pins first, so later "
+"specific pins override it. The pattern \"<literal>*</literal>\" in a "
+"Package field is not considered a &glob; expression in itself."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "How APT Interprets Priorities"
+msgstr "Como o APT Interpreta Prioridades"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"Priorities (P) assigned in the APT preferences file must be positive or "
+"negative integers. They are interpreted as follows (roughly speaking):"
+msgstr ""
+"Prioridades (P) atribuídas no arquivo de preferências do APT devem ser "
+"números inteiros positivos ou negativos. Eles são interpretados como a "
+"seguir (a grosso modo):"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P &gt;= 1000"
+msgstr "P &gt;= 1000"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"causes a version to be installed even if this constitutes a downgrade of the "
+"package"
+msgstr ""
+"faz com que uma instância seja instalada mesmo caso isso constitua um "
+"dowgrade do pacote"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "990 &lt;= P &lt; 1000"
+msgstr "990 &lt;= P &lt; 1000"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"causes a version to be installed even if it does not come from the target "
+"release, unless the installed version is more recent"
+msgstr ""
+"faz com que uma versão seja instalada mesmo caso a mesma não venha de uma "
+"versão alvo, a menos que a versão instalada seja mais recente"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "500 &lt;= P &lt; 990"
+msgstr "500 &lt;= P &lt; 990"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to the target release or the installed version is more recent"
+msgstr ""
+"faz com que uma versão seja instalada a menos que exista uma versão "
+"disponível pertencente a versão alvo ou a versão instalada seja mais recente"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "100 &lt;= P &lt; 500"
+msgstr "100 &lt;= P &lt; 500"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"causes a version to be installed unless there is a version available "
+"belonging to some other distribution or the installed version is more recent"
+msgstr ""
+"faz com que uma versão seja instalada a menos que exista uma versão "
+"disponível pertencente a alguma outra distribuição ou a versão instalada "
+"seja mais recente"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "0 &lt; P &lt; 100"
+msgstr "0 &lt; P &lt; 100"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"causes a version to be installed only if there is no installed version of "
+"the package"
+msgstr ""
+"faz com que uma versão seja instalada somente caso não exista uma versão "
+"instalada do pacote"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P &lt; 0"
+msgstr "P &lt; 0"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "prevents the version from being installed"
+msgstr "impede a versão de ser instalada"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+msgid "P = 0"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+msgid "has undefined behaviour, do not use it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"The first specific-form record matching an available package version "
+"determines the priority of the package version. Failing that, the priority "
+"of the package is defined as the maximum of all priorities defined by "
+"generic-form records matching the version. Records defined using patterns "
+"in the Pin field other than \"*\" are treated like specific-form records."
+msgstr ""
+"Caso um dos registro de forma específica descritos acima case (match) com "
+"uma versão disponível do pacote então o primeiro desses registros "
+"encontrados determinará a prioridade da versão do pacote. Na falha desse "
+"cenário, caso quaisquer registros de forma genérica casem (match) com uma "
+"versão do pacote disponível então o primeiro desses registros encontrado "
+"determinará a prioridade da versão do pacote."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"For example, suppose the APT preferences file contains the three records "
+"presented earlier:"
+msgstr ""
+"Por exemplo, suponha que o arquivo de preferências do APT contenha os três "
+"registros apresentados anteriormente :"
+
+#. type: Content of: <refentry><refsect1><refsect2><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+msgstr ""
+"Package: perl\n"
+"Pin: version &good-perl;*\n"
+"Pin-Priority: 1001\n"
+"\n"
+"Package: *\n"
+"Pin: origin \"\"\n"
+"Pin-Priority: 999\n"
+"\n"
+"Package: *\n"
+"Pin: release unstable\n"
+"Pin-Priority: 50\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid "Then:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"The most recent available version of the <literal>perl</literal> package "
+"will be installed, so long as that version's version number begins with "
+"\"<literal>&good-perl;</literal>\". If <emphasis>any</emphasis> &good-perl;"
+"* version of <literal>perl</literal> is available and the installed version "
+"is &bad-perl;*, then <literal>perl</literal> will be downgraded."
+msgstr ""
+"A versão mais recente disponível do pacote <literal>perl</literal> será "
+"instalado, contanto que esse número de versão da versão inicie com "
+"\"<literal>5.8</literal>\". Caso <emphasis>qualquer</emphasis> versão 5.8* "
+"de <literal>perl</literal> esteja disponível e a versão instalada seja 5.9*, "
+"será feito um downgrade do <literal>perl</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"A version of any package other than <literal>perl</literal> that is "
+"available from the local system has priority over other versions, even "
+"versions belonging to the target release."
+msgstr ""
+"Uma versão de qualquer pacote diferente de <literal>perl</literal> que "
+"esteja disponível no sistema local possui prioridade sobre outras versões, "
+"mesmo versões pertencentes a versão alvo."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"A version of a package whose origin is not the local system but some other "
+"site listed in &sources-list; and which belongs to an <literal>unstable</"
+"literal> distribution is only installed if it is selected for installation "
+"and no version of the package is already installed."
+msgstr ""
+"Uma versão de um pacote cuja origem não seja o sistema local mas sim algum "
+"outro site listado no arquivo &sources-list; e que pertença a uma "
+"distribuição <literal>unstable</literal> é instalada somente caso a mesma "
+"seja selecionada para instalação e nenhuma versão do pacote já esteja "
+"instalada."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "Determination of Package Version and Distribution Properties"
+msgstr "Determinação da Versão do Pacote e Propriedades da Distribuição"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"The locations listed in the &sources-list; file should provide "
+"<filename>Packages</filename> and <filename>Release</filename> files to "
+"describe the packages available at that location."
+msgstr ""
+"As localidades listadas em um arquivo &sources-list; devem fornecer arquivos "
+"<filename>Packages</filename> e <filename>Release</filename> para descrever "
+"os pacotes disponíveis nessas localidades."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"The <filename>Packages</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable>/"
+"<replaceable>component</replaceable>/<replaceable>arch</replaceable></"
+"filename>: for example, <filename>.../dists/stable/main/binary-i386/"
+"Packages</filename>. It consists of a series of multi-line records, one for "
+"each package available in that directory. Only two lines in each record are "
+"relevant for setting APT priorities:"
+msgstr ""
+"O arquivo <filename>Packages</filename> é normalmente encontrado no "
+"diretório <filename>.../dists/<replaceable>nome-distribuição</replaceable>/"
+"<replaceable>componente</replaceable>/<replaceable>arquitetura</"
+"replaceable></filename> : por exemplo, <filename>.../dists/stable/main/"
+"binary-i386/Packages</filename>. O arquivo consiste de uma série de "
+"registros de múltiplas linhas, uma para cada pacote disponível no diretório. "
+"Somente duas linhas em cada registro são relevantes para definir prioridades "
+"do APT :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "the <literal>Package:</literal> line"
+msgstr "a linha <literal>Package:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "gives the package name"
+msgstr "informa o nome do pacote"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "the <literal>Version:</literal> line"
+msgstr "a linha <literal>Version:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "gives the version number for the named package"
+msgstr "informa o número de versão do pacote"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"The <filename>Release</filename> file is normally found in the directory "
+"<filename>.../dists/<replaceable>dist-name</replaceable></filename>: for "
+"example, <filename>.../dists/stable/Release</filename>, or <filename>.../"
+"dists/&debian-stable-codename;/Release</filename>. It consists of a single "
+"multi-line record which applies to <emphasis>all</emphasis> of the packages "
+"in the directory tree below its parent. Unlike the <filename>Packages</"
+"filename> file, nearly all of the lines in a <filename>Release</filename> "
+"file are relevant for setting APT priorities:"
+msgstr ""
+"O arquivo <filename>Release</filename> é normalmente encontrado no diretório "
+"<filename>.../dists/<replaceable>nome-distribuição</replaceable></"
+"filename> : por exemplo, <filename>.../dists/stable/Release</filename>, ou "
+"<filename>.../dists/woody/Release</filename>. O arquivo consiste de um "
+"registro de múltiplas linhas o qual se aplica a <emphasis>todos</emphasis> "
+"os pacotes na àrvore de diretórios abaixo de seu diretório pai. Diferente do "
+"arquivo <filename>Packages</filename>, quase todas as linhas em um arquivo "
+"<filename>Release</filename> são relevantes para a definição de prioridades "
+"do APT :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line"
+msgstr "a linha <literal>Archive:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"names the archive to which all the packages in the directory tree belong. "
+"For example, the line \"Archive: stable\" or \"Suite: stable\" specifies "
+"that all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file are in a <literal>stable</literal> "
+"archive. Specifying this value in the APT preferences file would require "
+"the line:"
+msgstr ""
+"dá nome ao repositório para o qual todos os pacotes na àrvore de diretório "
+"pertencem. Por exemplo, a linha \"Archive: stable\" especifica que todos os "
+"pacotes na àrvore de diretório abaixo do diretório pai do arquivo "
+"<filename>Release</filename> estão no respositório <literal>stable</"
+"literal>. Especificar esse valor no arquivo de preferências do APT iria "
+"requerer a linha :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release a=stable\n"
+msgstr "Pin: release a=stable\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "the <literal>Codename:</literal> line"
+msgstr "a linha <literal>Component:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"names the codename to which all the packages in the directory tree belong. "
+"For example, the line \"Codename: &debian-testing-codename;\" specifies that "
+"all of the packages in the directory tree below the parent of the "
+"<filename>Release</filename> file belong to a version named <literal>&debian-"
+"testing-codename;</literal>. Specifying this value in the APT preferences "
+"file would require the line:"
+msgstr ""
+"dá nome ao repositório para o qual todos os pacotes na àrvore de diretório "
+"pertencem. Por exemplo, a linha \"Archive: stable\" especifica que todos os "
+"pacotes na àrvore de diretório abaixo do diretório pai do arquivo "
+"<filename>Release</filename> estão no respositório <literal>stable</"
+"literal>. Especificar esse valor no arquivo de preferências do APT iria "
+"requerer a linha :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release n=&debian-testing-codename;\n"
+msgstr "Pin: release n=&debian-testing-codename;\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"names the release version. For example, the packages in the tree might "
+"belong to Debian release version &debian-stable-version;. Note that there "
+"is normally no version number for the <literal>testing</literal> and "
+"<literal>unstable</literal> distributions because they have not been "
+"released yet. Specifying this in the APT preferences file would require one "
+"of the following lines."
+msgstr ""
+"dá nome a versão da distribuição. Por exemplo, os pacote na àrvore podem "
+"pertencer a distribuição Debian versão 3.0. Note que normalmente não existe "
+"número de versão para as distribuições <literal>testing</literal> e "
+"<literal>unstable</literal> devido as mesmas não terem sido lançadas ainda. "
+"Especificar isso no arquivo de preferências do APT iria requerer uma das "
+"linhas a seguir."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+msgstr ""
+"Pin: release v=&debian-stable-version;\n"
+"Pin: release a=stable, v=&debian-stable-version;\n"
+"Pin: release &debian-stable-version;\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "the <literal>Component:</literal> line"
+msgstr "a linha <literal>Component:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"names the licensing component associated with the packages in the directory "
+"tree of the <filename>Release</filename> file. For example, the line "
+"\"Component: main\" specifies that all the packages in the directory tree "
+"are from the <literal>main</literal> component, which entails that they are "
+"licensed under terms listed in the Debian Free Software Guidelines. "
+"Specifying this component in the APT preferences file would require the line:"
+msgstr ""
+"dá nome ao componente de licenciamento associado com os pacotes na àrvore de "
+"diretório do arquivo <filename>Release</filename>. Por exemplo, a linha "
+"\"Component: main\" especifica que todos os pacotes na àrvore de diretório "
+"são do componente <literal>main</literal>, o que significa que as mesmas "
+"estão licenciadas sob os termos da Linhas Guias Debian para o Software Livre "
+"(a DFSG). Especificar esse componente no arquivo de preferências do APT iria "
+"requerer a linha :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release c=main\n"
+msgstr "Pin: release c=main\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "the <literal>Origin:</literal> line"
+msgstr "a linha <literal>Origin:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"names the originator of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is <literal>Debian</"
+"literal>. Specifying this origin in the APT preferences file would require "
+"the line:"
+msgstr ""
+"dá nome ao produtor dos pacotes na àrvore de diretório do arquivo "
+"<filename>Release</filename>. O mais comum é esse valor ser <literal>Debian</"
+"literal>. Especificar essa origem no arquivo de preferências do APT iria "
+"requerer a linha :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, fuzzy, no-wrap
+msgid "Pin: release o=Debian\n"
+msgstr "Pin: release o=Debian\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "the <literal>Label:</literal> line"
+msgstr "a linha <literal>Label:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"names the label of the packages in the directory tree of the "
+"<filename>Release</filename> file. Most commonly, this is <literal>Debian</"
+"literal>. Specifying this label in the APT preferences file would require "
+"the line:"
+msgstr ""
+"dá nome ao rótulo (label) dos pacotes na árvore de diretório. O mais comum é "
+"esse valor ser <literal>Debian</literal>. Especificar esse rótulo (label) no "
+"arquivo de preferências do APT iria requerer a linha :"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "Pin: release l=Debian\n"
+msgstr "Pin: release l=Debian\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"All of the <filename>Packages</filename> and <filename>Release</filename> "
+"files retrieved from locations listed in the &sources-list; file are stored "
+"in the directory <filename>/var/lib/apt/lists</filename>, or in the file "
+"named by the variable <literal>Dir::State::Lists</literal> in the "
+"<filename>apt.conf</filename> file. For example, the file <filename>debian."
+"lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> "
+"contains the <filename>Release</filename> file retrieved from the site "
+"<literal>debian.lcs.mit.edu</literal> for <literal>binary-i386</literal> "
+"architecture files from the <literal>contrib</literal> component of the "
+"<literal>unstable</literal> distribution."
+msgstr ""
+"Todos os arquivos <filename>Packages</filename> e <filename>Release</"
+"filename> obtidos das localidades listadas no arquivo &sources-list; são "
+"mantidos no diretório <filename>/var/lib/apt/lists</filename> ou no arquivo "
+"indicado pela variável <literal>Dir::State::Lists</literal> no arquivo "
+"<filename>apt.conf</filename>. Por exemplo, o arquivo <filename>debian.lcs."
+"mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename> contém "
+"o arquivo <filename>Release</filename> obtido do site <literal>debian.lcs."
+"mit.edu</literal> para a arquitetura <literal>binary-i386</literal>, "
+"arquivos do componente <literal>contrib</literal> da distribuição "
+"<literal>unstable</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "Optional Lines in an APT Preferences Record"
+msgstr "Linhas Opcionais em um Registro de Preferências do APT"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"Each record in the APT preferences file can optionally begin with one or "
+"more lines beginning with the word <literal>Explanation:</literal>. This "
+"provides a place for comments."
+msgstr ""
+"Cada registro em um arquivo de preferências do APT pode opcionalmente "
+"iniciar com uma ou mais linhas iniciadas com a palavra <literal>Explanation:"
+"</literal>. Isto oferece um local para inserir comentários."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "Tracking Stable"
+msgstr "Acompanhando a Stable"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, fuzzy, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated\n"
+"Explanation: package versions other than those in the stable distro\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"<programlisting>\n"
+"Explanation: Desinstala ou não instala nenhuma versão de pacote originada\n"
+"Explanation: do Debian a não ser aquelas na distribuição stable\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"<literal>stable</literal> distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> "
+"distributions. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"O arquivo de preferências do APT a seguir fará com que o APT atribua uma "
+"prioridade maior do que a prioridade padrão (500) para todas as versões de "
+"pacotes pertencentes a distribuição <literal>stable</literal> e uma "
+"prioridade proibitivamente baixa para versões de pacotes pertencentes a "
+"outras distribuições <literal>Debian</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, fuzzy, no-wrap
+msgid ""
+"apt-get install <replaceable>package-name</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+msgstr ""
+"<programlisting>\n"
+"apt-get install <replaceable>nome-pacote</replaceable>\n"
+"apt-get upgrade\n"
+"apt-get dist-upgrade\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>stable</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+"Com um arquivo &sources-list; apropriado e o arquivo de preferências acima, "
+"quaisquer um dos comandos a seguir farão com que o APT atualize para a(s) "
+"ulítma(s) versão(ôes) <literal>stable</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, fuzzy, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/testing\n"
+msgstr ""
+"<programlisting>\n"
+"apt-get install <replaceable>pacote</replaceable>/testing\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>testing</literal> distribution; the package "
+"will not be upgraded again unless this command is given again. <placeholder "
+"type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"O comando a seguir fará com que o APT atualize o pacote especificado para a "
+"última versão da distribuição <literal>testing</literal>; o pacote não serpa "
+"atualizado novamente a menos que esse comando seja executado novamente."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid "Tracking Testing or Unstable"
+msgstr "Acompanhando a Testing"
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"Package: *\n"
+"Pin: release a=testing\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release a=unstable\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"The following APT preferences file will cause APT to assign a high priority "
+"to package versions from the <literal>testing</literal> distribution, a "
+"lower priority to package versions from the <literal>unstable</literal> "
+"distribution, and a prohibitively low priority to package versions from "
+"other <literal>Debian</literal> distributions. <placeholder type="
+"\"programlisting\" id=\"0\"/>"
+msgstr ""
+"O arquivo de preferências do APT a seguir fará com que o APT atribua uma "
+"prioridade maior para versões de pacote da distribuição <literal>testing</"
+"literal>, uma prioridade menor para versões de pacotes da distribuição "
+"<literal>unstable</literal> e uma prioridade proibitivamente baixa para "
+"versões de pacotes de outras distribuições <literal>Debian</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest "
+"<literal>testing</literal> version(s). <placeholder type=\"programlisting\" "
+"id=\"0\"/>"
+msgstr ""
+"Com um arquivo &sources-list; adequado e o arquivo de preferências do APT "
+"acima, quaisquer dos comandos a seguir farão com que o APT atualize para "
+"a(s) última(s) versão(ões) <literal>testing</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/unstable\n"
+msgstr "apt-get install <replaceable>pacote</replaceable>/unstable\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>unstable</literal> distribution. "
+"Thereafter, <command>apt-get upgrade</command> will upgrade the package to "
+"the most recent <literal>testing</literal> version if that is more recent "
+"than the installed version, otherwise, to the most recent <literal>unstable</"
+"literal> version if that is more recent than the installed version. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"O comando a seguir fará com que o APT atualize o pacote especificado para a "
+"última versão da distribuição <literal>unstable</literal>. Assim, o comando "
+"<command>apt-get upgrade</command> irá atualizar o pacote para a versão "
+"<literal>testing</literal> mais recente caso essa versão seja mais recente "
+"que a versão instalada, caso não seja, o pacote será atualizado para a "
+"versão <literal>unstable</literal> mais recente caso a mesma seja mais "
+"recente que a versão instalada."
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt_preferences.5.xml
+msgid "Tracking the evolution of a codename release"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, fuzzy, no-wrap
+msgid ""
+"Explanation: Uninstall or do not install any Debian-originated package versions\n"
+"Explanation: other than those in the distribution codenamed with &debian-testing-codename; or sid\n"
+"Package: *\n"
+"Pin: release n=&debian-testing-codename;\n"
+"Pin-Priority: 900\n"
+"\n"
+"Explanation: Debian unstable is always codenamed with sid\n"
+"Package: *\n"
+"Pin: release n=sid\n"
+"Pin-Priority: 800\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+msgstr ""
+"<programlisting>\n"
+"Explanation: Desinstala ou não instala nenhuma versão de pacote originada\n"
+"Explanation: do Debian a não ser aquelas na distribuição stable\n"
+"Package: *\n"
+"Pin: release a=stable\n"
+"Pin-Priority: 900\n"
+"\n"
+"Package: *\n"
+"Pin: release o=Debian\n"
+"Pin-Priority: -10\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+msgid ""
+"The following APT preferences file will cause APT to assign a priority "
+"higher than the default (500) to all package versions belonging to a "
+"specified codename of a distribution and a prohibitively low priority to "
+"package versions belonging to other <literal>Debian</literal> distributions, "
+"codenames and archives. Note that with this APT preference APT will follow "
+"the migration of a release from the archive <literal>testing</literal> to "
+"<literal>stable</literal> and later <literal>oldstable</literal>. If you "
+"want to follow for example the progress in <literal>testing</literal> "
+"notwithstanding the codename changes you should use the example "
+"configurations above. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"With a suitable &sources-list; file and the above preferences file, any of "
+"the following commands will cause APT to upgrade to the latest version(s) in "
+"the release codenamed with <literal>&debian-testing-codename;</literal>. "
+"<placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"Com um arquivo &sources-list; apropriado e o arquivo de preferências acima, "
+"quaisquer um dos comandos a seguir farão com que o APT atualize para a(s) "
+"ulítma(s) versão(ôes) <literal>stable</literal>."
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt_preferences.5.xml
+#, no-wrap
+msgid "apt-get install <replaceable>package</replaceable>/sid\n"
+msgstr "apt-get install <replaceable>pacote</replaceable>/sid\n"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt_preferences.5.xml
+#, fuzzy
+msgid ""
+"The following command will cause APT to upgrade the specified package to the "
+"latest version from the <literal>sid</literal> distribution. Thereafter, "
+"<command>apt-get upgrade</command> will upgrade the package to the most "
+"recent <literal>&debian-testing-codename;</literal> version if that is more "
+"recent than the installed version, otherwise, to the most recent "
+"<literal>sid</literal> version if that is more recent than the installed "
+"version. <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+"O comando a seguir fará com que o APT atualize o pacote especificado para a "
+"última versão da distribuição <literal>unstable</literal>. Assim, o comando "
+"<command>apt-get upgrade</command> irá atualizar o pacote para a versão "
+"<literal>testing</literal> mais recente caso essa versão seja mais recente "
+"que a versão instalada, caso não seja, o pacote será atualizado para a "
+"versão <literal>unstable</literal> mais recente caso a mesma seja mais "
+"recente que a versão instalada."
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt_preferences.5.xml
+msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: sources.list.5.xml
+msgid "List of configured APT data sources"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The source list <filename>/etc/apt/sources.list</filename> and the files "
+"contained in <filename>/etc/apt/sources.list.d/</filename> are designed to "
+"support any number of active sources and a variety of source media. The "
+"files list one source per line (one-line style) or contain multiline stanzas "
+"defining one or more sources per stanza (deb822 style), with the most "
+"preferred source listed first (in case a single version is available from "
+"more than one source). The information available from the configured sources "
+"is acquired by <command>apt-get update</command> (or by an equivalent "
+"command from another APT front-end)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "sources.list.d"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The <filename>/etc/apt/sources.list.d</filename> directory provides a way to "
+"add sources.list entries in separate files. Two different file formats are "
+"allowed as described in the next two sections. Filenames need to have "
+"either the extension <filename>.list</filename> or <filename>.sources</"
+"filename> depending on the contained format. The filenames may only contain "
+"letters (a-z and A-Z), digits (0-9), underscore (_), hyphen (-) and period "
+"(.) characters. Otherwise APT will print a notice that it has ignored a "
+"file, unless that file matches a pattern in the <literal>Dir::Ignore-Files-"
+"Silently</literal> configuration list - in which case it will be silently "
+"ignored."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "One-Line-Style Format"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Files in this format have the extension <filename>.list</filename>. Each "
+"line specifying a source starts with a type (e.g. <literal>deb-src</"
+"literal>) followed by options and arguments for this type. Individual "
+"entries cannot be continued onto a following line. Empty lines are ignored, "
+"and a <literal>#</literal> character anywhere on a line marks the remainder "
+"of that line as a comment. Consequently an entry can be disabled by "
+"commenting out the entire line. If options should be provided they are "
+"separated by spaces and all of them together are enclosed by square brackets "
+"(<literal>[]</literal>) included in the line after the type separated from "
+"it with a space. If an option allows multiple values these are separated "
+"from each other with a comma (<literal>,</literal>). An option name is "
+"separated from its value(s) by an equals sign (<literal>=</literal>). "
+"Multivalue options also have <literal>-=</literal> and <literal>+=</literal> "
+"as separators, which instead of replacing the default with the given "
+"value(s) modify the default value(s) to remove or include the given values."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This is the traditional format and supported by all apt versions. Note that "
+"not all options as described below are supported by all apt versions. Note "
+"also that some older applications parsing this format on their own might not "
+"expect to encounter options as they were uncommon before the introduction of "
+"multi-architecture support."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "deb822-Style Format"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Files in this format have the extension <filename>.sources</filename>. The "
+"format is similar in syntax to other files used by Debian and its "
+"derivatives, such as the metadata files that apt will download from the "
+"configured sources or the <filename>debian/control</filename> file in a "
+"Debian source package. Individual entries are separated by an empty line; "
+"additional empty lines are ignored, and a <literal>#</literal> character at "
+"the start of the line marks the entire line as a comment. An entry can hence "
+"be disabled by commenting out each line belonging to the stanza, but it is "
+"usually easier to add the field \"Enabled: no\" to the stanza to disable the "
+"entry. Removing the field or setting it to yes reenables it. Options have "
+"the same syntax as every other field: A fieldname separated by a colon "
+"(<literal>:</literal>) and optionally spaces from its value(s). Note "
+"especially that multiple values are separated by spaces, not by commas as in "
+"the one-line format. Multivalue fields like <literal>Architectures</literal> "
+"also have <literal>Architectures-Add</literal> and <literal>Architectures-"
+"Remove</literal> to modify the default value rather than replacing it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"This is a new format supported by apt itself since version 1.1. Previous "
+"versions ignore such files with a notice message as described earlier. It "
+"is intended to make this format gradually the default format, deprecating "
+"the previously described one-line-style format, as it is easier to create, "
+"extend and modify for humans and machines alike especially if a lot of "
+"sources and/or options are involved. Developers who are working with and/or "
+"parsing apt sources are highly encouraged to add support for this format and "
+"to contact the APT team to coordinate and share this work. Users can freely "
+"adopt this format already, but may encounter problems with software not "
+"supporting the format yet."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "The deb and deb-src Types: General Format"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The <literal>deb</literal> type references a typical two-level Debian "
+"archive, <filename>distribution/component</filename>. The "
+"<literal>distribution</literal> is generally a suite name like "
+"<literal>stable</literal> or <literal>testing</literal> or a codename like "
+"<literal>&debian-stable-codename;</literal> or <literal>&debian-testing-"
+"codename;</literal> while component is one of <literal>main</literal>, "
+"<literal>contrib</literal> or <literal>non-free</literal>. The <literal>deb-"
+"src</literal> type references a Debian distribution's source code in the "
+"same form as the <literal>deb</literal> type. A <literal>deb-src</literal> "
+"line is required to fetch source indexes."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The format for two one-line-style entries using the <literal>deb</literal> "
+"and <literal>deb-src</literal> types is:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]\n"
+"deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+" Types: deb deb-src\n"
+" URIs: uri\n"
+" Suites: suite\n"
+" Components: [component1] [component2] [...]\n"
+" option1: value1\n"
+" option2: value2\n"
+" "
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Alternatively the equivalent entry in deb822 style looks like this: "
+"<placeholder type=\"literallayout\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The URI for the <literal>deb</literal> type must specify the base of the "
+"Debian distribution, from which APT will find the information it needs. "
+"<literal>suite</literal> can specify an exact path, in which case the "
+"components must be omitted and <literal>suite</literal> must end with a "
+"slash (<literal>/</literal>). This is useful for the case when only a "
+"particular sub-directory of the archive denoted by the URI is of interest. "
+"If <literal>suite</literal> does not specify an exact path, at least one "
+"<literal>component</literal> must be present."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"<literal>suite</literal> may also contain a variable, <literal>$(ARCH)</"
+"literal> which expands to the Debian architecture (such as <literal>amd64</"
+"literal> or <literal>armel</literal>) used on the system. This permits "
+"architecture-independent <filename>sources.list</filename> files to be used. "
+"In general this is only of interest when specifying an exact path; "
+"<literal>APT</literal> will automatically generate a URI with the current "
+"architecture otherwise."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Especially in the one-line-style format since only one distribution can be "
+"specified per line it may be necessary to have multiple lines for the same "
+"URI, if a subset of all available distributions or components at that "
+"location is desired. APT will sort the URI list after it has generated a "
+"complete set internally, and will collapse multiple references to the same "
+"Internet host, for instance, into a single connection, so that it does not "
+"inefficiently establish a connection, close it, do something else, and then "
+"re-establish a connection to that same host. APT also parallelizes "
+"connections to different hosts to more effectively deal with sites with low "
+"bandwidth."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"It is important to list sources in order of preference, with the most "
+"preferred source listed first. Typically this will result in sorting by "
+"speed from fastest to slowest (CD-ROM followed by hosts on a local network, "
+"followed by distant Internet hosts, for example)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "&sourceslist-list-format;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "&sourceslist-sources-format;"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"As an example, the sources for your distribution could look like this in one-"
+"line-style format: <placeholder type=\"literallayout\" id=\"0\"/> or like "
+"this in deb822 style format: <placeholder type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "The deb and deb-src types: Options"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Each source entry can have options specified to modify which source is "
+"accessed and how data is acquired from it. Format, syntax and names of the "
+"options vary between the one-line-style and deb822-style formats as "
+"described, but they both have the same options available. For simplicity we "
+"list the deb822 fieldname and provide the one-line name in brackets. "
+"Remember that besides setting multivalue options explicitly, there is also "
+"the option to modify them based on the default, but we aren't listing those "
+"names explicitly here. Unsupported options are silently ignored by all APT "
+"versions."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Architectures</option> (<option>arch</option>) is a multivalue "
+"option defining for which architectures information should be downloaded. If "
+"this option isn't set the default is all architectures as defined by the "
+"<option>APT::Architectures</option> config option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Languages</option> (<option>lang</option>) is a multivalue option "
+"defining for which languages information such as translated package "
+"descriptions should be downloaded. If this option isn't set the default is "
+"all languages as defined by the <option>Acquire::Languages</option> config "
+"option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Targets</option> (<option>target</option>) is a multivalue option "
+"defining which download targets apt will try to acquire from this source. If "
+"not specified, the default set is defined by the <option>Acquire::"
+"IndexTargets</option> configuration scope (targets are specified by their "
+"name in the <literal>Created-By</literal> field). Additionally, targets can "
+"be enabled or disabled by using the <literal>Identifier</literal> field as "
+"an option with a boolean value instead of using this multivalue option."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>PDiffs</option> (<option>pdiffs</option>) is a yes/no value which "
+"controls if APT should try to use PDiffs to update old indexes instead of "
+"downloading the new indexes entirely. The value of this option is ignored if "
+"the repository doesn't announce the availability of PDiffs. Defaults to the "
+"value of the option with the same name for a specific index file defined in "
+"the <option>Acquire::IndexTargets</option> scope, which itself defaults to "
+"the value of configuration option <option>Acquire::PDiffs</option> which "
+"defaults to <literal>yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>By-Hash</option> (<option>by-hash</option>) can have the value "
+"<literal>yes</literal>, <literal>no</literal> or <literal>force</literal> "
+"and controls if APT should try to acquire indexes via a URI constructed from "
+"a hashsum of the expected file instead of using the well-known stable "
+"filename of the index. Using this can avoid hashsum mismatches, but requires "
+"a supporting mirror. A <literal>yes</literal> or <literal>no</literal> value "
+"activates/disables the use of this feature if this source indicates support "
+"for it, while <literal>force</literal> will enable the feature regardless of "
+"what the source indicates. Defaults to the value of the option of the same "
+"name for a specific index file defined in the <option>Acquire::IndexTargets</"
+"option> scope, which itself defaults to the value of configuration option "
+"<option>Acquire::By-Hash</option> which defaults to <literal>yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Furthermore, there are options which if set affect <emphasis>all</emphasis> "
+"sources with the same URI and Suite, so they have to be set on all such "
+"entries and can not be varied between different components. APT will try to "
+"detect and error out on such anomalies."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Allow-Insecure</option> (<option>allow-insecure</option>), "
+"<option>Allow-Weak</option> (<option>allow-weak</option>) and <option>Allow-"
+"Downgrade-To-Insecure</option> (<option>allow-downgrade-to-insecure</"
+"option>) are boolean values which all default to <literal>no</literal>. If "
+"set to <literal>yes</literal> they circumvent parts of &apt-secure; and "
+"should therefore not be used lightly!"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Trusted</option> (<option>trusted</option>) is a tri-state value "
+"which defaults to APT deciding if a source is considered trusted or if "
+"warnings should be raised before e.g. packages are installed from this "
+"source. This option can be used to override that decision. The value "
+"<literal>yes</literal> tells APT always to consider this source as trusted, "
+"even if it doesn't pass authentication checks. It disables parts of &apt-"
+"secure;, and should therefore only be used in a local and trusted context "
+"(if at all) as otherwise security is breached. The value <literal>no</"
+"literal> does the opposite, causing the source to be handled as untrusted "
+"even if the authentication checks passed successfully. The default value "
+"can't be set explicitly."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Signed-By</option> (<option>signed-by</option>) is either an "
+"absolute path to a keyring file (has to be accessible and readable for the "
+"<literal>_apt</literal> user, so ensure everyone has read-permissions on the "
+"file) or one or more fingerprints of keys either in the <filename>trusted."
+"gpg</filename> keyring or in the keyrings in the <filename>trusted.gpg.d/</"
+"filename> directory (see <command>apt-key fingerprint</command>). If the "
+"option is set, only the key(s) in this keyring or only the keys with these "
+"fingerprints are used for the &apt-secure; verification of this repository. "
+"Defaults to the value of the option with the same name if set in the "
+"previously acquired <filename>Release</filename> file. Otherwise all keys "
+"in the trusted keyrings are considered valid signers for this repository."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Check-Valid-Until</option> (<option>check-valid-until</option>) is "
+"a yes/no value which controls if APT should try to detect replay attacks. A "
+"repository creator can declare a time until which the data provided in the "
+"repository should be considered valid, and if this time is reached, but no "
+"new data is provided, the data is considered expired and an error is "
+"raised. Besides increasing security, as a malicious attacker can't send old "
+"data forever to prevent a user from upgrading to a new version, this also "
+"helps users identify mirrors which are no longer updated. However, some "
+"repositories such as historic archives are not updated any more by design, "
+"so this check can be disabled by setting this option to <literal>no</"
+"literal>. Defaults to the value of configuration option <option>Acquire::"
+"Check-Valid-Until</option> which itself defaults to <literal>yes</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"<option>Valid-Until-Min</option> (<option>valid-until-min</option>) and "
+"<option>Valid-Until-Max</option> (<option>valid-until-max</option>) can be "
+"used to raise or lower the time period in seconds in which the data from "
+"this repository is considered valid. -Max can be especially useful if the "
+"repository provides no Valid-Until field on its Release file to set your own "
+"value, while -Min can be used to increase the valid time on seldom updated "
+"(local) mirrors of a more frequently updated but less accessible archive "
+"(which is in the sources.list as well) instead of disabling the check "
+"entirely. Default to the value of the configuration options "
+"<option>Acquire::Min-ValidTime</option> and <option>Acquire::Max-ValidTime</"
+"option> which are both unset by default."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: sources.list.5.xml
+msgid "URI Specification"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "The currently recognized URI types are:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The file scheme allows an arbitrary directory in the file system to be "
+"considered an archive. This is useful for NFS mounts and local mirrors or "
+"archives."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The cdrom scheme allows APT to use a local CD-ROM drive with media swapping. "
+"Use the &apt-cdrom; program to create cdrom entries in the source list."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The http scheme specifies an HTTP server for the archive. If an environment "
+"variable <envar>http_proxy</envar> is set with the format http://server:"
+"port/, the proxy server specified in <envar>http_proxy</envar> will be used. "
+"Users of authenticated HTTP/1.1 proxies may use a string of the format "
+"http://user:pass@server:port/. Note that this is an insecure method of "
+"authentication."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The ftp scheme specifies an FTP server for the archive. APT's FTP behavior "
+"is highly configurable; for more information see the &apt-conf; manual page. "
+"Please note that an FTP proxy can be specified by using the "
+"<envar>ftp_proxy</envar> environment variable. It is possible to specify an "
+"HTTP proxy (HTTP proxy servers often understand FTP URLs) using this "
+"environment variable and <emphasis>only</emphasis> this environment "
+"variable. Proxies using HTTP specified in the configuration file will be "
+"ignored."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The copy scheme is identical to the file scheme except that packages are "
+"copied into the cache directory instead of used directly at their location. "
+"This is useful for people using removable media to copy files around with "
+"APT."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"The rsh/ssh method invokes RSH/SSH to connect to a remote host and access "
+"the files as a given user. Prior configuration of rhosts or RSA keys is "
+"recommended. The standard <command>find</command> and <command>dd</command> "
+"commands are used to perform the file transfers from the remote host."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
+#: sources.list.5.xml
+msgid "adding more recognizable URI types"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
+#: sources.list.5.xml
+msgid ""
+"APT can be extended with more methods shipped in other optional packages, "
+"which should follow the naming scheme <package>apt-transport-"
+"<replaceable>method</replaceable></package>. For instance, the APT team "
+"also maintains the package <package>apt-transport-https</package>, which "
+"provides access methods for HTTPS URIs with features similar to the http "
+"method. Methods for using e.g. debtorrent are also available - see &apt-"
+"transport-debtorrent;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses the archive stored locally (or NFS mounted) at /home/apt/debian for "
+"stable/main, stable/contrib, and stable/non-free."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb file:/home/apt/debian stable main contrib non-free"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: stable\n"
+"Components: main contrib non-free"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "As above, except this uses the unstable (development) distribution."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb file:/home/apt/debian unstable main contrib non-free"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "Sources specification for the above."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb-src file:/home/apt/debian unstable main contrib non-free"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb-src\n"
+"URIs: file:/home/apt/debian\n"
+"Suites: unstable\n"
+"Components: main contrib non-free"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"The first line gets package information for the architectures in "
+"<literal>APT::Architectures</literal> while the second always retrieves "
+"<literal>amd64</literal> and <literal>armel</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian &debian-stable-codename; main\n"
+"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"\n"
+"Types: deb\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: main\n"
+"Architectures: amd64 armel\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to access the archive at archive.debian.org, and uses only the "
+"hamm/main area."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb http://archive.debian.org/debian-archive hamm main"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://archive.debian.org/debian-archive\n"
+"Suites: hamm\n"
+"Components: main"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the &debian-stable-codename;/contrib area."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: &debian-stable-codename;\n"
+"Components: contrib"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses FTP to access the archive at ftp.debian.org, under the debian "
+"directory, and uses only the unstable/contrib area. If this line appears as "
+"well as the one in the previous example in <filename>sources.list</filename> "
+"a single FTP session will be used for both resource lines."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb ftp://ftp.debian.org/debian unstable contrib"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: ftp://ftp.debian.org/debian\n"
+"Suites: unstable\n"
+"Components: contrib"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb\n"
+"URIs: http://ftp.tlh.debian.org/universe\n"
+"Suites: unstable/binary-$(ARCH)/"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe "
+"directory, and uses only files found under <filename>unstable/binary-i386</"
+"filename> on i386 machines, <filename>unstable/binary-amd64</filename> on "
+"amd64, and so forth for other supported architectures. [Note this example "
+"only illustrates how to use the substitution variable; official debian "
+"archives are not structured like this] <placeholder type=\"literallayout\" "
+"id=\"0\"/> <placeholder type=\"literallayout\" id=\"1\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid ""
+"Uses HTTP to get binary packages as well as sources from the stable, testing "
+"and unstable suites and the components main and contrib."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"deb http://deb.debian.org/debian stable main contrib\n"
+"deb-src http://deb.debian.org/debian stable main contrib\n"
+"deb http://deb.debian.org/debian testing main contrib\n"
+"deb-src http://deb.debian.org/debian testing main contrib\n"
+"deb http://deb.debian.org/debian unstable main contrib\n"
+"deb-src http://deb.debian.org/debian unstable main contrib"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><literallayout>
+#: sources.list.5.xml
+#, no-wrap
+msgid ""
+"Types: deb deb-src\n"
+"URIs: http://deb.debian.org/debian\n"
+"Suites: stable testing unstable\n"
+"Components: main contrib\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: sources.list.5.xml
+msgid "&apt-get;, &apt-conf;, &apt-acquire-additional-files;"
+msgstr "&apt-get;, &apt-conf;, &apt-acquire-additional-files;"
+
+#. type: Content of: <refentry><refmeta><manvolnum>
+#: apt-extracttemplates.1.xml apt-sortpkgs.1.xml apt-ftparchive.1.xml
+msgid "1"
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-extracttemplates.1.xml
+msgid ""
+"Utility to extract <command>debconf</command> config and templates from "
+"Debian packages"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"<command>apt-extracttemplates</command> will take one or more Debian package "
+"files as input and write out (to a temporary directory) all associated "
+"config scripts and template files. For each passed in package that contains "
+"config scripts and templates, one line of output will be generated in the "
+"format:"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid "package version template-file config-script"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"template-file and config-script are written to the temporary directory "
+"specified by the <option>-t</option> or <option>--tempdir</option> "
+"(<literal>APT::ExtractTemplates::TempDir</literal>) directory, with "
+"filenames of the form <filename>package.template.XXXXXX</filename> and "
+"<filename>package.config.XXXXXX</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"Temporary directory in which to write extracted <command>debconf</command> "
+"template files and config scripts. Configuration Item: <literal>APT::"
+"ExtractTemplates::TempDir</literal>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-extracttemplates.1.xml
+msgid ""
+"<command>apt-extracttemplates</command> returns zero on normal operation, "
+"decimal 100 on error."
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-sortpkgs.1.xml
+msgid "Utility to sort package index files"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"<command>apt-sortpkgs</command> will take an index file (source index or "
+"package index) and sort the records so that they are ordered by the package "
+"name. It will also sort the internal fields of each record according to the "
+"internal sorting rules."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"All output is sent to standard output; the input must be a seekable file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"Use source index field ordering. Configuration Item: <literal>APT::"
+"SortPkgs::Source</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-sortpkgs.1.xml
+msgid ""
+"<command>apt-sortpkgs</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: apt-ftparchive.1.xml
+msgid "Utility to generate index files"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> is the command line tool that generates "
+"the index files that APT uses to access a distribution source. The index "
+"files should be generated on the origin site based on the content of that "
+"site."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> is a superset of the &dpkg-scanpackages; "
+"program, incorporating its entire functionality via the <literal>packages</"
+"literal> command. It also contains a contents file generator, "
+"<literal>contents</literal>, and an elaborate means to 'script' the "
+"generation process for a complete archive."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Internally <command>apt-ftparchive</command> can make use of binary "
+"databases to cache the contents of a .deb file and it does not rely on any "
+"external programs aside from &gzip;. When doing a full generate it "
+"automatically performs file-change checks and builds the desired compressed "
+"output files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The packages command generates a package file from a directory tree. It "
+"takes the given directory and recursively searches it for .deb files, "
+"emitting a package record to stdout for each. This command is approximately "
+"equivalent to &dpkg-scanpackages;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The option <option>--db</option> can be used to specify a binary caching DB."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>sources</literal> command generates a source index file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .dsc files, emitting a source record to stdout for each. This command is "
+"approximately equivalent to &dpkg-scansources;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"If an override file is specified then a source override file will be looked "
+"for with an extension of .src. The --source-override option can be used to "
+"change the source override file that will be used."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>contents</literal> command generates a contents file from a "
+"directory tree. It takes the given directory and recursively searches it "
+"for .deb files, and reads the file list from each file. It then sorts and "
+"writes to stdout the list of files matched to packages. Directories are not "
+"written to the output. If multiple packages own the same file then each "
+"package is separated by a comma in the output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>release</literal> command generates a Release file from a "
+"directory tree. It recursively searches the given directory for uncompressed "
+"and compressed <filename>Packages</filename>, <filename>Sources</filename>, "
+"<filename>Contents</filename>, <filename>Components</filename> and "
+"<filename>icons</filename> files as well as <filename>Release</filename>, "
+"<filename>Index</filename> and <filename>md5sum.txt</filename> files by "
+"default (<literal>APT::FTPArchive::Release::Default-Patterns</literal>). "
+"Additional filename patterns can be added by listing them in <literal>APT::"
+"FTPArchive::Release::Patterns</literal>. It then writes to stdout a "
+"<filename>Release</filename> file containing (by default) an MD5, SHA1, "
+"SHA256 and SHA512 digest for each file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Values for the additional metadata fields in the Release file are taken from "
+"the corresponding variables under <literal>APT::FTPArchive::Release</"
+"literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The "
+"supported fields are <literal>Origin</literal>, <literal>Label</literal>, "
+"<literal>Suite</literal>, <literal>Version</literal>, <literal>Codename</"
+"literal>, <literal>Date</literal>, <literal>NotAutomatic</literal>, "
+"<literal>ButAutomaticUpgrades</literal>, <literal>Acquire-By-Hash</literal>, "
+"<literal>Valid-Until</literal>, <literal>Signed-By</literal>, "
+"<literal>Architectures</literal>, <literal>Components</literal> and "
+"<literal>Description</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>generate</literal> command is designed to be runnable from a "
+"cron script and builds indexes according to the given config file. The "
+"config language provides a flexible means of specifying which index files "
+"are built from which directories, as well as providing a simple means of "
+"maintaining the required settings."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>clean</literal> command tidies the databases used by the given "
+"configuration file by removing any records that are no longer necessary."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Generate Configuration"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>generate</literal> command uses a configuration file to "
+"describe the archives that are going to be generated. It follows the typical "
+"ISC configuration format as seen in ISC tools like bind 8 and dhcpd. &apt-"
+"conf; contains a description of the syntax. Note that the generate "
+"configuration is parsed in sectional manner, but &apt-conf; is parsed in a "
+"tree manner. This only effects how the scope tag is handled."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The generate configuration has four separate sections, each described below."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+#, fuzzy
+msgid "<literal>Dir</literal> Section"
+msgstr "a linha <literal>Origin:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Dir</literal> section defines the standard directories needed "
+"to locate the files required during the generation process. These "
+"directories are prepended certain relative paths defined in later sections "
+"to produce a complete an absolute path."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the root of the FTP archive, in a standard Debian configuration "
+"this is the directory that contains the <filename>ls-LR</filename> and dist "
+"nodes."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the location of the override files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the location of the cache files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the location of the file list files, if the <literal>FileList</"
+"literal> setting is used below."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+#, fuzzy
+msgid "<literal>Default</literal> Section"
+msgstr "a linha <literal>Label:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Default</literal> section specifies default values, and "
+"settings that control the operation of the generator. Other sections may "
+"override these defaults with a per-section setting."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default compression schemes to use for the package index files. It "
+"is a string that contains a space separated list of at least one of the "
+"compressors configured via the <option>APT::Compressor</option> "
+"configuration scope. The default for all compression schemes is '. gzip'."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default list of file extensions that are package files. This "
+"defaults to '.deb'."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Sources files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the default list of file extensions that are source files. This "
+"defaults to '.dsc'."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Contents files."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is similar to <literal>Packages::Compress</literal> except that it "
+"controls the compression for the Translation-en master file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the number of kilobytes to delink (and replace with hard links) "
+"per run. This is used in conjunction with the per-section <literal>External-"
+"Links</literal> setting."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies the mode of all created index files. It defaults to 0644. All "
+"index files are set to this mode with no regard to the umask."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies whether long descriptions should be included in the "
+"<filename>Packages</filename> file or split out into a master "
+"<filename>Translation-en</filename> file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+#, fuzzy
+msgid "<literal>TreeDefault</literal> Section"
+msgstr "a linha <literal>Label:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets defaults specific to <literal>Tree</literal> sections. All of these "
+"variables are substitution variables and have the strings $(DIST), "
+"$(SECTION) and $(ARCH) replaced with their respective values."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the number of kilobytes of contents files that are generated each day. "
+"The contents files are round-robined so that over several days they will all "
+"be rebuilt."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Controls the number of days a contents file is allowed to be checked without "
+"changing. If this limit is passed the mtime of the contents file is updated. "
+"This case can occur if the package file is changed in such a way that does "
+"not result in a new contents file [override edit for instance]. A hold off "
+"is allowed in hopes that new .debs will be installed, requiring a new file "
+"anyhow. The default is 10, the units are in days."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/"
+"$(SECTION)/binary-$(ARCH)/</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the top of the source package directory tree. Defaults to <filename>"
+"$(DIST)/$(SECTION)/source/</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Packages file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"binary-$(ARCH)/Packages</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Sources file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"source/Sources</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Translation-en master file with the long descriptions if "
+"they should be not included in the Packages file. Defaults to <filename>"
+"$(DIST)/$(SECTION)/i18n/Translation-en</filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the path prefix that causes a symlink to be considered an internal link "
+"instead of an external link. Defaults to <filename>$(DIST)/$(SECTION)/</"
+"filename>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the output Contents file. Defaults to <filename>$(DIST)/$(SECTION)/"
+"Contents-$(ARCH)</filename>. If this setting causes multiple Packages files "
+"to map onto a single Contents file (as is the default) then <command>apt-"
+"ftparchive</command> will integrate those package files together "
+"automatically."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets header file to prepend to the contents output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the binary cache database to use for this section. Multiple sections "
+"can share the same database."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies that instead of walking the directory tree, <command>apt-"
+"ftparchive</command> should read the list of files from the given file. "
+"Relative files names are prefixed with the archive directory."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Specifies that instead of walking the directory tree, <command>apt-"
+"ftparchive</command> should read the list of files from the given file. "
+"Relative files names are prefixed with the archive directory. This is used "
+"when processing source indexes."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+#, fuzzy
+msgid "<literal>Tree</literal> Section"
+msgstr "a linha <literal>Label:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Tree</literal> section defines a standard Debian file tree "
+"which consists of a base directory, then multiple sections in that base "
+"directory and finally multiple Architectures in each section. The exact "
+"pathing used is defined by the <literal>Directory</literal> substitution "
+"variable."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>Tree</literal> section takes a scope tag which sets the "
+"<literal>$(DIST)</literal> variable and defines the root of the tree (the "
+"path is prefixed by <literal>ArchiveDir</literal>). Typically this is a "
+"setting such as <filename>dists/&debian-stable-codename;</filename>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"All of the settings defined in the <literal>TreeDefault</literal> section "
+"can be used in a <literal>Tree</literal> section as well as three new "
+"variables."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid ""
+"for i in Sections do \n"
+" for j in Architectures do\n"
+" Generate for DIST=scope SECTION=i ARCH=j\n"
+" "
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"When processing a <literal>Tree</literal> section <command>apt-ftparchive</"
+"command> performs an operation similar to: <placeholder type=\"programlisting"
+"\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is a space separated list of sections which appear under the "
+"distribution; typically this is something like <literal>main contrib non-"
+"free</literal>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This is a space separated list of all the architectures that appear under "
+"search section. The special architecture 'source' is used to indicate that "
+"this tree has a source archive. The architecture 'all' signals that "
+"architecture specific files like <filename>Packages</filename> should not "
+"include information about architecture <literal>all</literal> packages in "
+"all files as they will be available in a dedicated file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the binary override file. The override file contains section, priority "
+"and maintainer address information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the source override file. The override file contains section "
+"information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the binary extra override file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the source extra override file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><title>
+#: apt-ftparchive.1.xml
+#, fuzzy
+msgid "<literal>BinDirectory</literal> Section"
+msgstr "a linha <literal>Component:</literal>"
+
+#. type: Content of: <refentry><refsect1><refsect2><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The <literal>bindirectory</literal> section defines a binary directory tree "
+"with no special structure. The scope tag specifies the location of the "
+"binary directory and the settings are similar to the <literal>Tree</literal> "
+"section with no substitution variables or <literal>Section</"
+"literal><literal>Architecture</literal> settings."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the Packages file output."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Sets the Sources file output. At least one of <literal>Packages</literal> or "
+"<literal>Sources</literal> is required."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the Contents file output (optional)."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the binary override file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the source override file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Sets the cache DB."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Appends a path to all the output paths."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid "Specifies the file list file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Binary Override File"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The binary override file is fully compatible with &dpkg-scanpackages;. It "
+"contains four fields separated by spaces. The first field is the package "
+"name, the second is the priority to force that package to, the third is the "
+"section to force that package to and the final field is the maintainer "
+"permutation field."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "old [// oldn]* => new"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><literallayout>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "new"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The general form of the maintainer field is: <placeholder type="
+"\"literallayout\" id=\"0\"/> or simply, <placeholder type=\"literallayout\" "
+"id=\"1\"/> The first form allows a double-slash separated list of old email "
+"addresses to be specified. If any of those are found then new is substituted "
+"for the maintainer field. The second form unconditionally substitutes the "
+"maintainer field."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Source Override File"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The source override file is fully compatible with &dpkg-scansources;. It "
+"contains two fields separated by spaces. The first field is the source "
+"package name, the second is the section to assign it."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: apt-ftparchive.1.xml
+msgid "The Extra Override File"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"The extra override file allows any arbitrary tag to be added or replaced in "
+"the output. It has three columns, the first is the package, the second is "
+"the tag and the remainder of the line is the new value."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Generate the given checksum. These options default to on, when turned off "
+"the generated index files will not have the checksum fields where possible. "
+"Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</"
+"replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</"
+"replaceable>::<replaceable>Checksum</replaceable></literal> where "
+"<literal><replaceable>Index</replaceable></literal> can be "
+"<literal>Packages</literal>, <literal>Sources</literal> or <literal>Release</"
+"literal> and <literal><replaceable>Checksum</replaceable></literal> can be "
+"<literal>MD5</literal>, <literal>SHA1</literal>, <literal>SHA256</literal> "
+"or <literal>SHA512</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Use a binary caching DB. This has no effect on the generate command. "
+"Configuration Item: <literal>APT::FTPArchive::DB</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Quiet; produces output suitable for logging, omitting progress indicators. "
+"More q's will produce more quiet up to a maximum of 2. You can also use "
+"<option>-q=#</option> to set the quiet level, overriding the configuration "
+"file. Configuration Item: <literal>quiet</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Perform Delinking. If the <literal>External-Links</literal> setting is used "
+"then this option actually enables delinking of the files. It defaults to on "
+"and can be turned off with <option>--no-delink</option>. Configuration "
+"Item: <literal>APT::FTPArchive::DeLinkAct</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Perform contents generation. When this option is set and package indexes are "
+"being generated with a cache DB then the file listing will also be extracted "
+"and stored in the DB for later use. When using the generate command this "
+"option also allows the creation of any Contents files. The default is on. "
+"Configuration Item: <literal>APT::FTPArchive::Contents</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Select the source override file to use with the <literal>sources</literal> "
+"command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Make the caching databases read only. Configuration Item: <literal>APT::"
+"FTPArchive::ReadOnlyDB</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"Accept in the <literal>packages</literal> and <literal>contents</literal> "
+"commands only package files matching <literal>*_arch.deb</literal> or "
+"<literal>*_all.deb</literal> instead of all package files in the given "
+"path. Configuration Item: <literal>APT::FTPArchive::Architecture</literal>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"&apt-ftparchive; caches as much as possible of metadata in a cachedb. If "
+"packages are recompiled and/or republished with the same version again, this "
+"will lead to problems as the now outdated cached metadata like size and "
+"checksums will be used. With this option enabled this will no longer happen "
+"as it will be checked if the file was changed. Note that this option is set "
+"to \"<literal>false</literal>\" by default as it is not recommend to upload "
+"multiply versions/builds of a package with the same versionnumber, so in "
+"theory nobody will have these problems and therefore all these extra checks "
+"are useless."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"This configuration option defaults to \"<literal>true</literal>\" and should "
+"only be set to <literal>\"false\"</literal> if the Archive generated with "
+"&apt-ftparchive; also provides <filename>Translation</filename> files. Note "
+"that the <filename>Translation-en</filename> master file can only be created "
+"in the generate command."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para><programlisting>
+#: apt-ftparchive.1.xml
+#, no-wrap
+msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"To create a compressed Packages file for a directory containing binary "
+"packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: apt-ftparchive.1.xml
+msgid ""
+"<command>apt-ftparchive</command> returns zero on normal operation, decimal "
+"100 on error."
+msgstr ""
+
+#. type: Attribute 'lang' of: <book>
+#: guide.dbk offline.dbk
+msgid "en"
+msgstr ""
+
+#. type: Content of: <book><title>
+#: guide.dbk
+msgid "APT User's Guide"
+msgstr ""
+
+#. type: Content of: <book><bookinfo><authorgroup><author><personname>
+#: guide.dbk offline.dbk
+msgid "Jason Gunthorpe"
+msgstr ""
+
+#. type: Content of: <book><bookinfo><authorgroup><author><email>
+#: guide.dbk offline.dbk
+msgid "jgg@debian.org"
+msgstr ""
+
+#. type: Content of: <book><bookinfo><releaseinfo>
+#: guide.dbk offline.dbk
+msgid "Version &apt-product-version;"
+msgstr ""
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: guide.dbk
+msgid ""
+"This document provides an overview of how to use the APT package manager."
+msgstr ""
+
+#. type: Content of: <book><bookinfo>
+#: guide.dbk
+msgid ""
+"<copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+
+#. type: Content of: <book><bookinfo><legalnotice><title>
+#: guide.dbk offline.dbk
+msgid "License Notice"
+msgstr ""
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk offline.dbk
+msgid ""
+"\"APT\" and this document are free software; you can redistribute them and/"
+"or modify them under the terms of the GNU General Public License as "
+"published by the Free Software Foundation; either version 2 of the License, "
+"or (at your option) any later version."
+msgstr ""
+
+#. type: Content of: <book><bookinfo><legalnotice><para>
+#: guide.dbk offline.dbk
+msgid ""
+"For more details, on Debian systems, see the file /usr/share/common-licenses/"
+"GPL for the full license."
+msgstr ""
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "General"
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The APT package currently contains two sections, the APT <command>dselect</"
+"command> method and the <command>apt-get</command> command line user "
+"interface. Both provide a way to install and remove packages as well as "
+"download new packages from the Internet."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Anatomy of the Package System"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The Debian packaging system has a large amount of information associated "
+"with each package to help assure that it integrates cleanly and easily into "
+"the system. The most prominent of its features is the dependency system."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The dependency system allows individual programs to make use of shared "
+"elements in the system such as libraries. It simplifies placing infrequently "
+"used portions of a program in separate packages to reduce the number of "
+"things the average user is required to install. Also, it allows for choices "
+"in mail transport agents, X servers and so on."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The first step to understanding the dependency system is to grasp the "
+"concept of a simple dependency. The meaning of a simple dependency is that a "
+"package requires another package to be installed at the same time to work "
+"properly."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"For instance, mailcrypt is an emacs extension that aids in encrypting email "
+"with GPG. Without GPGP installed mailcrypt is useless, so mailcrypt has a "
+"simple dependency on GPG. Also, because it is an emacs extension it has a "
+"simple dependency on emacs, without emacs it is completely useless."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The other important dependency to understand is a conflicting dependency. It "
+"means that a package, when installed with another package, will not work and "
+"may possibly be extremely harmful to the system. As an example consider a "
+"mail transport agent such as sendmail, exim or qmail. It is not possible to "
+"have two mail transport agents installed because both need to listen to the "
+"network to receive mail. Attempting to install two will seriously damage the "
+"system so all mail transport agents have a conflicting dependency with all "
+"other mail transport agents."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"As an added complication there is the possibility for a package to pretend "
+"to be another package. Consider that exim and sendmail for many intents are "
+"identical, they both deliver mail and understand a common interface. Hence, "
+"the package system has a way for them to declare that they are both mail-"
+"transport-agents. So, exim and sendmail both declare that they provide a "
+"mail-transport-agent and other packages that need a mail transport agent "
+"depend on mail-transport-agent. This can add a great deal of confusion when "
+"trying to manually fix packages."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"At any given time a single dependency may be met by packages that are "
+"already installed or it may not be. APT attempts to help resolve dependency "
+"issues by providing a number of automatic algorithms that help in selecting "
+"packages for installation."
+msgstr ""
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "apt-get"
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"<command>apt-get</command> provides a simple way to install packages from "
+"the command line. Unlike <command>dpkg</command>, <command>apt-get</command> "
+"does not understand .deb files, it works with the package's proper name and "
+"can only install .deb archives from a <emphasis>Source</emphasis>."
+msgstr ""
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk
+msgid ""
+"If you are using an http proxy server you must set the http_proxy "
+"environment variable first, see sources.list(5)"
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The first <placeholder type=\"footnote\" id=\"0\"/> thing that should be "
+"done before using <command>apt-get</command> is to fetch the package lists "
+"from the <emphasis>Sources</emphasis> so that it knows what packages are "
+"available. This is done with <literal>apt-get update</literal>. For instance,"
+msgstr ""
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
+"Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid "Once updated there are several commands that can be used:"
+msgstr ""
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "upgrade"
+msgstr ""
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Upgrade will attempt to gently upgrade the whole system. Upgrade will never "
+"install a new package or remove an existing package, nor will it ever "
+"upgrade a package that might cause some other package to break. This can be "
+"used daily to relatively safely upgrade the system. Upgrade will list all of "
+"the packages that it could not upgrade, this usually means that they depend "
+"on new packages or conflict with some other package. <command>dselect</"
+"command> or <literal>apt-get install</literal> can be used to force these "
+"packages to install."
+msgstr ""
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "install"
+msgstr ""
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Install is used to install packages by name. The package is automatically "
+"fetched and installed. This can be useful if you already know the name of "
+"the package to install and do not want to go into a GUI to select it. Any "
+"number of packages may be passed to install, they will all be fetched. "
+"Install automatically attempts to resolve dependency problems with the "
+"listed packages and will print a summary and ask for confirmation if "
+"anything other than its arguments are changed."
+msgstr ""
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><term>
+#: guide.dbk
+msgid "dist-upgrade"
+msgstr ""
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"Dist-upgrade is a complete upgrader designed to simplify upgrading between "
+"releases of Debian. It uses a sophisticated algorithm to determine the best "
+"set of packages to install, upgrade and remove to get as much of the system "
+"to the newest release. In some situations it may be desired to use dist-"
+"upgrade rather than spend the time manually resolving dependencies in "
+"<command>dselect</command>. Once dist-upgrade has completed then "
+"<command>dselect</command> can be used to install any packages that may have "
+"been left out."
+msgstr ""
+
+#. type: Content of: <book><chapter><variablelist><varlistentry><listitem><para>
+#: guide.dbk
+msgid ""
+"It is important to closely look at what dist-upgrade is going to do, its "
+"decisions may sometimes be quite surprising."
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"<command>apt-get</command> has several command line options that are "
+"detailed in its man page, <citerefentry><refentrytitle>apt-get</"
+"refentrytitle><manvolnum>8</manvolnum></citerefentry>. The most useful "
+"option is <literal>-d</literal> which does not install the fetched files. If "
+"the system has to download a large number of package it would be undesired "
+"to start installing them in case something goes wrong. When <literal>-d</"
+"literal> is used the downloaded archives can be installed by simply running "
+"the command that caused them to be downloaded again without <literal>-d</"
+"literal>."
+msgstr ""
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "DSelect"
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The APT <command>dselect</command> method provides the complete APT system "
+"with the <command>dselect</command> package selection GUI. <command>dselect</"
+"command> is used to select the packages to be installed or removed and APT "
+"actually installs them."
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"To enable the APT method you need to select [A]ccess in <command>dselect</"
+"command> and then choose the APT method. You will be prompted for a set of "
+"<emphasis>Sources</emphasis> which are places to fetch archives from. These "
+"can be remote Internet sites, local Debian mirrors or CD-ROMs. Each source "
+"can provide a fragment of the total Debian archive, APT will automatically "
+"combine them to form a complete set of packages. If you have a CD-ROM then "
+"it is a good idea to specify it first and then specify a mirror so that you "
+"have access to the latest bug fixes. APT will automatically use packages on "
+"your CD-ROM before downloading from the Internet."
+msgstr ""
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Set up a list of distribution source locations\n"
+"\n"
+" Please give the base URL of the debian distribution.\n"
+" The access schemes I know about are: http file\n"
+"\n"
+" For example:\n"
+" file:/mnt/debian,\n"
+" ftp://ftp.debian.org/debian,\n"
+" http://ftp.de.debian.org/debian,\n"
+"\n"
+"\n"
+" URL [http://llug.sep.bnl.gov/debian]:\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The <emphasis>Sources</emphasis> setup starts by asking for the base of the "
+"Debian archive, defaulting to a HTTP mirror. Next it asks for the "
+"distribution to get."
+msgstr ""
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Please give the distribution tag to get or a path to the\n"
+" package file ending in a /. The distribution\n"
+" tags are typically something like: stable unstable testing non-US\n"
+"\n"
+" Distribution [stable]:\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The distribution refers to the Debian version in the archive, "
+"<emphasis>stable</emphasis> refers to the latest released version and "
+"<emphasis>unstable</emphasis> refers to the developmental version. "
+"<emphasis>non-US</emphasis> is only available on some mirrors and refers to "
+"packages that contain encryption technology or other things that cannot be "
+"exported from the United States. Importing these packages into the US is "
+"legal however."
+msgstr ""
+
+#. type: Content of: <book><chapter><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+" Please give the components to get\n"
+" The components are typically something like: main contrib non-free\n"
+"\n"
+" Components [main contrib non-free]:\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"The components list refers to the list of sub distributions to fetch. The "
+"distribution is split up based on software licenses, main being DFSG free "
+"packages while contrib and non-free contain things that have various "
+"restrictions placed on their use and distribution."
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Any number of sources can be added, the setup script will continue to prompt "
+"until you have specified all that you want."
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Before starting to use <command>dselect</command> it is necessary to update "
+"the available list by selecting [U]pdate from the menu. This is a superset "
+"of <literal>apt-get update</literal> that makes the fetched information "
+"available to <command>dselect</command>. [U]pdate must be performed even if "
+"<literal>apt-get update</literal> has been run before."
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"You can then go on and make your selections using [S]elect and then perform "
+"the installation using [I]nstall. When using the APT method the [C]onfig and "
+"[R]emove commands have no meaning, the [I]nstall command performs both of "
+"them together."
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"By default APT will automatically remove the package (.deb) files once they "
+"have been successfully installed. To change this behavior place "
+"<literal>Dselect::clean \"prompt\";</literal> in /etc/apt/apt.conf."
+msgstr ""
+
+#. type: Content of: <book><chapter><title>
+#: guide.dbk
+msgid "The Interface"
+msgstr ""
+
+#. type: Content of: <book><chapter><para><footnote><para>
+#: guide.dbk
+msgid ""
+"The <command>dselect</command> method actually is a set of wrapper scripts "
+"to <command>apt-get</command>. The method actually provides more "
+"functionality than is present in <command>apt-get</command> alone."
+msgstr ""
+
+#. type: Content of: <book><chapter><para>
+#: guide.dbk
+msgid ""
+"Both that APT <command>dselect</command> method and <command>apt-get</"
+"command> share the same interface. It is a simple system that generally "
+"tells you what it will do and then goes and does it. <placeholder type="
+"\"footnote\" id=\"0\"/> After printing out a summary of what will happen APT "
+"then will print out some informative status messages so that you can "
+"estimate how far along it is and how much is left to do."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Startup"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Before all operations except update, APT performs a number of actions to "
+"prepare its internal state. It also does some checks of the system's state. "
+"At any time these operations can be performed by running <literal>apt-get "
+"check</literal>."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The first thing it does is read all the package files into memory. APT uses "
+"a caching scheme so this operation will be faster the second time it is run. "
+"If some of the package files are not found then they will be ignored and a "
+"warning will be printed when apt-get exits."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The final operation performs a detailed analysis of the system's "
+"dependencies. It checks every dependency of every installed or unpacked "
+"package and considers if it is OK. Should this find a problem then a report "
+"will be printed out and <command>apt-get</command> will refuse to run."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get check\n"
+"Reading Package Lists... Done\n"
+"Building Dependency Tree... Done\n"
+"You might want to run 'apt --fix-broken install' to correct these.\n"
+"Sorry, but the following packages have unmet dependencies:\n"
+" 9fonts: Depends: xlib6g but it is not installed\n"
+" uucp: Depends: mailx but it is not installed\n"
+" blast: Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" adduser: Depends: perl-base but it is not installed\n"
+" aumix: Depends: libgpmg1 but it is not installed\n"
+" debiandoc-sgml: Depends: sgml-base but it is not installed\n"
+" bash-builtins: Depends: bash (&gt;= 2.01) but 2.0-3 is installed\n"
+" cthugha: Depends: svgalibg1 but it is not installed\n"
+" Depends: xlib6g (&gt;= 3.3-5) but it is not installed\n"
+" libreadlineg2: Conflicts:libreadline2 (&lt;&lt; 2.1-2.1)\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"In this example the system has many problems, including a serious problem "
+"with libreadlineg2. For each package that has unmet dependencies a line is "
+"printed out indicating the package with the problem and the dependencies "
+"that are unmet. A short explanation of why the package has a dependency "
+"problem is also included."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para><footnote><para>
+#: guide.dbk
+msgid ""
+"APT however considers all known dependencies and attempts to prevent broken "
+"packages"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"There are two ways a system can get into a broken state like this. The first "
+"is caused by <command>dpkg</command> missing some subtle relationships "
+"between packages when performing upgrades. <placeholder type=\"footnote\" id="
+"\"0\"/>. The second is if a package installation fails during an operation. "
+"In this situation a package may have been unpacked without its dependents "
+"being installed."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The second situation is much less serious than the first because APT places "
+"certain constraints on the order that packages are installed. In both cases "
+"supplying the <literal>-f</literal> option to <command>apt-get</command> "
+"will cause APT to deduce a possible solution to the problem and then "
+"continue on. The APT <command>dselect</command> method always supplies the "
+"<literal>-f</literal> option to allow for easy continuation of failed "
+"maintainer scripts."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"However, if the <literal>-f</literal> option is used to correct a seriously "
+"broken system caused by the first case then it is possible that it will "
+"either fail immediately or the installation sequence will fail. In either "
+"case it is necessary to manually use dpkg (possibly with forcing options) to "
+"correct the situation enough to allow APT to proceed."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "The Status Report"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Before proceeding <command>apt-get</command> will present a report on what "
+"will happen. Generally the report reflects the type of operation being "
+"performed but there are several common elements. In all cases the lists "
+"reflect the final state of things, taking into account the <literal>-f</"
+"literal> option and any other relevant activities to the command being "
+"executed."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Extra Package list"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following extra packages will be installed:\n"
+" libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl\n"
+" mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base\n"
+" bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy\n"
+" squake pgp-i python-base debmake ldso perl libreadlineg2\n"
+" ssh\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The Extra Package list shows all of the packages that will be installed or "
+"upgraded in excess of the ones mentioned on the command line. It is only "
+"generated for an <literal>install</literal> command. The listed packages are "
+"often the result of an Auto Install."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Packages to Remove"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following packages will be REMOVED:\n"
+" xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix\n"
+" xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel\n"
+" xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid\n"
+" nas xpilot xfig\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The Packages to Remove list shows all of the packages that will be removed "
+"from the system. It can be shown for any of the operations and should be "
+"given a careful inspection to ensure nothing important is to be taken off. "
+"The <literal>-f</literal> option is especially good at generating packages "
+"to remove so extreme care should be used in that case. The list may contain "
+"packages that are going to be removed because they are only partially "
+"installed, possibly due to an aborted installation."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The New Packages list"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following NEW packages will installed:\n"
+" zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The New Packages list is simply a reminder of what will happen. The packages "
+"listed are not presently installed in the system but will be when APT is "
+"done."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "The Kept Back list"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following packages have been kept back\n"
+" compface man-db tetex-base msql libpaper svgalib1\n"
+" gs snmp arena lynx xpat2 groff xscreensaver\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Whenever the whole system is being upgraded there is the possibility that "
+"new versions of packages cannot be installed because they require new things "
+"or conflict with already installed things. In this case the package will "
+"appear in the Kept Back list. The best way to convince packages listed there "
+"to install is with <literal>apt-get install</literal> or by using "
+"<command>dselect</command> to resolve their problems."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "Held Packages warning"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"The following held packages will be changed:\n"
+" cvs\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Sometimes you can ask APT to install a package that is on hold, in such a "
+"case it prints out a warning that the held package is going to be changed. "
+"This should only happen during dist-upgrade or install."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><title>
+#: guide.dbk
+msgid "Final summary"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Finally, APT will print out a summary of all the changes that will occur."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"206 packages upgraded, 8 newly installed, 23 to remove and 51 not upgraded.\n"
+"12 packages not fully installed or removed.\n"
+"Need to get 65.7M/66.7M of archives. After unpacking 26.5M will be used.\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"The first line of the summary simply is a reduced version of all of the "
+"lists and includes the number of upgrades - that is packages already "
+"installed that have new versions available. The second line indicates the "
+"number of poorly configured packages, possibly the result of an aborted "
+"installation. The final line shows the space requirements that the "
+"installation needs. The first pair of numbers refer to the size of the "
+"archive files. The first number indicates the number of bytes that must be "
+"fetched from remote locations and the second indicates the total size of all "
+"the archives required. The next number indicates the size difference between "
+"the presently installed packages and the newly installed packages. It is "
+"roughly equivalent to the space required in /usr after everything is done. "
+"If a large number of packages are being removed then the value may indicate "
+"the amount of space that will be freed."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><section><para>
+#: guide.dbk
+msgid ""
+"Some other reports can be generated by using the -u option to show packages "
+"to upgrade, they are similar to the previous examples."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "The Status Display"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"During the download of archives and package files APT prints out a series of "
+"status messages."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: guide.dbk
+#, no-wrap
+msgid ""
+"# apt-get update\n"
+"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n"
+"Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
+"Hit http://llug.sep.bnl.gov/debian/ testing/main Packages\n"
+"Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages\n"
+"Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages\n"
+"11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The lines starting with <emphasis>Get</emphasis> are printed out when APT "
+"begins to fetch a file while the last line indicates the progress of the "
+"download. The first percent value on the progress line indicates the total "
+"percent done of all files. Unfortunately since the size of the Package files "
+"is unknown <literal>apt-get update</literal> estimates the percent done "
+"which causes some inaccuracies."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The next section of the status line is repeated once for each download "
+"thread and indicates the operation being performed and some useful "
+"information about what is happening. Sometimes this section will simply read "
+"<emphasis>Forking</emphasis> which means the OS is loading the download "
+"module. The first word after the [ is the fetch number as shown on the "
+"history lines. The next word is the short form name of the object being "
+"downloaded. For archives it will contain the name of the package that is "
+"being fetched."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"Inside of the single quote is an informative string indicating the progress "
+"of the negotiation phase of the download. Typically it progresses from "
+"<emphasis>Connecting</emphasis> to <emphasis>Waiting for file</emphasis> to "
+"<emphasis>Downloading</emphasis> or <emphasis>Resuming</emphasis>. The final "
+"value is the number of bytes downloaded from the remote site. Once the "
+"download begins this is represented as <literal>102/10.2k</literal> "
+"indicating that 102 bytes have been fetched and 10.2 kilobytes is expected. "
+"The total size is always shown in 4 figure notation to preserve space. After "
+"the size display is a percent meter for the file itself. The second last "
+"element is the instantaneous average speed. This values is updated every 5 "
+"seconds and reflects the rate of data transfer for that period. Finally is "
+"shown the estimated transfer time. This is updated regularly and reflects "
+"the time to complete everything at the shown transfer rate."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"The status display updates every half second to provide a constant feedback "
+"on the download progress while the Get lines scroll back whenever a new file "
+"is started. Since the status display is constantly updated it is unsuitable "
+"for logging to a file, use the <literal>-q</literal> option to remove the "
+"status display."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><title>
+#: guide.dbk
+msgid "Dpkg"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: guide.dbk
+msgid ""
+"APT uses <command>dpkg</command> for installing the archives and will switch "
+"over to the <command>dpkg</command> interface once downloading is completed. "
+"<command>dpkg</command> will also ask a number of questions as it processes "
+"the packages and the packages themselves may also ask several questions. "
+"Before each question there is usually a description of what it is asking and "
+"the questions are too varied to discuss completely here."
+msgstr ""
+
+#. type: Content of: <book><title>
+#: offline.dbk
+msgid "Using APT Offline"
+msgstr ""
+
+#. type: Content of: <book><bookinfo><abstract><para>
+#: offline.dbk
+msgid ""
+"This document describes how to use APT in a non-networked environment, "
+"specifically a 'sneaker-net' approach for performing upgrades."
+msgstr ""
+
+#. type: Content of: <book><bookinfo>
+#: offline.dbk
+msgid ""
+"<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright>"
+msgstr ""
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Introduction"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "Overview"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Normally APT requires direct access to a Debian archive, either from a local "
+"media or through a network. Another common complaint is that a Debian "
+"machine is on a slow link, such as a modem and another machine has a very "
+"fast connection but they are physically distant."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The solution to this is to use large removable media such as a Zip disc or a "
+"SuperDisk disc. These discs are not large enough to store the entire Debian "
+"archive but can easily fit a subset large enough for most users. The idea is "
+"to use APT to generate a list of packages that are required and then fetch "
+"them onto the disc using another machine with good connectivity. It is even "
+"possible to use another Debian machine with APT or to use a completely "
+"different OS and a download tool like wget. Let <emphasis>remote host</"
+"emphasis> mean the machine downloading the packages, and <emphasis>target "
+"host</emphasis> the one with bad or no connection."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"This is achieved by creatively manipulating the APT configuration file. The "
+"essential premise to tell APT to look on a disc for it's archive files. Note "
+"that the disc should be formatted with a filesystem that can handle long "
+"file names such as ext2, fat32 or vfat."
+msgstr ""
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Using APT on both machines"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"APT being available on both machines gives the simplest configuration. The "
+"basic idea is to place a copy of the status file on the disc and use the "
+"remote machine to fetch the latest package files and decide which packages "
+"to download. The disk directory structure should look like:"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" /disc/\n"
+" archives/\n"
+" partial/\n"
+" lists/\n"
+" partial/\n"
+" status\n"
+" sources.list\n"
+" apt.conf\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+msgid "The configuration file"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The configuration file should tell APT to store its files on the disc and to "
+"use the configuration files on the disc as well. The sources.list should "
+"contain the proper sites that you wish to use from the remote machine, and "
+"the status file should be a copy of <emphasis>/var/lib/dpkg/status</"
+"emphasis> from the <emphasis>target host</emphasis>. Please note, if you are "
+"using a local archive you must use copy URIs, the syntax is identical to "
+"file URIs."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"<emphasis>apt.conf</emphasis> must contain the necessary information to make "
+"APT use the disc:"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" APT\n"
+" {\n"
+" /* This is not necessary if the two machines are the same arch, it tells\n"
+" the remote APT what architecture the target machine is */\n"
+" Architecture \"i386\";\n"
+"\n"
+" Get::Download-Only \"true\";\n"
+" };\n"
+"\n"
+" Dir\n"
+" {\n"
+" /* Use the disc for state information and redirect the status file from\n"
+" the /var/lib/dpkg default */\n"
+" State \"/disc/\";\n"
+" State::status \"status\";\n"
+"\n"
+" // Binary caches will be stored locally\n"
+" Cache::archives \"/disc/archives/\";\n"
+" Cache \"/tmp/\";\n"
+"\n"
+" // Location of the source list.\n"
+" Etc \"/disc/\";\n"
+" };\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"More details can be seen by examining the apt.conf man page and the sample "
+"configuration file in <emphasis>/usr/share/doc/apt/examples/apt.conf</"
+"emphasis>."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"On the target machine the first thing to do is mount the disc and copy "
+"<emphasis>/var/lib/dpkg/status</emphasis> to it. You will also need to "
+"create the directories outlined in the Overview, <emphasis>archives/partial/"
+"</emphasis> and <emphasis>lists/partial/</emphasis>. Then take the disc to "
+"the remote machine and configure the sources.list. On the remote machine "
+"execute the following:"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get update\n"
+" [ APT fetches the package files ]\n"
+" # apt-get dist-upgrade\n"
+" [ APT fetches all the packages needed to upgrade the target machine ]\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The dist-upgrade command can be replaced with any other standard APT "
+"commands, particularly dselect-upgrade. You can even use an APT front end "
+"such as <emphasis>dselect</emphasis>. However this presents a problem in "
+"communicating your selections back to the local computer."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Now the disc contains all of the index files and archives needed to upgrade "
+"the target machine. Take the disc back and run:"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # export APT_CONFIG=\"/disc/apt.conf\"\n"
+" # apt-get check\n"
+" [ APT generates a local copy of the cache files ]\n"
+" # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade\n"
+" [ Or any other APT command ]\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"It is necessary for proper function to re-specify the status file to be the "
+"local one. This is very important!"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"If you are using dselect you can do the very risky operation of copying disc/"
+"status to /var/lib/dpkg/status so that any selections you made on the remote "
+"machine are updated. I highly recommend that people only make selections on "
+"the local machine - but this may not always be possible. DO NOT copy the "
+"status file if dpkg or APT have been run in the mean time!!"
+msgstr ""
+
+#. type: Content of: <book><chapter><title>
+#: offline.dbk
+msgid "Using APT and wget"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"<emphasis>wget</emphasis> is a popular and portable download tool that can "
+"run on nearly any machine. Unlike the method above this requires that the "
+"Debian machine already has a list of available packages."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The basic idea is to create a disc that has only the archive files "
+"downloaded from the remote site. This is done by using the --print-uris "
+"option to apt-get and then preparing a wget script to actually fetch the "
+"packages."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><title>
+#: offline.dbk
+#, fuzzy
+msgid "Operation"
+msgstr "Descrição"
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Unlike the previous technique no special configuration files are required. "
+"We merely use the standard APT commands to generate the file list."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # apt-get dist-upgrade\n"
+" [ Press no when prompted, make sure you are happy with the actions ]\n"
+" # apt-get -qq --print-uris dist-upgrade &gt; uris\n"
+" # awk '{print \"wget -O \" $2 \" \" $1}' &lt; uris &gt; /disc/wget-script\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Any command other than dist-upgrade could be used here, including dselect-"
+"upgrade."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"The /disc/wget-script file will now contain a list of wget commands to "
+"execute in order to fetch the necessary archives. This script should be run "
+"with the current directory as the disc's mount point so as to save the "
+"output on the disc."
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid "The remote machine would do something like"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid ""
+" # cd /disc\n"
+" # sh -x ./wget-script\n"
+" [ wait.. ]\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid ""
+"Once the archives are downloaded and the disc returned to the Debian machine "
+"installation can proceed using,"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><screen>
+#: offline.dbk
+#, no-wrap
+msgid " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n"
+msgstr ""
+
+#. type: Content of: <book><chapter><section><para>
+#: offline.dbk
+msgid "Which will use the already fetched archives on the disc."
+msgstr ""
+
+#, fuzzy
+#~ msgid "<filename>/etc/apt/trustdb.gpg</filename>"
+#~ msgstr "<filename>/etc/apt.conf</>"
+
+#, fuzzy
+#~ msgid "&apt-get;, &apt-conf;"
+#~ msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+
+#, fuzzy
+#~ msgid "The option <literal>DPkg::Progress-Fancy</literal> is enabled."
+#~ msgstr "a linha <literal>Package:</literal>"
+
+#, fuzzy
+#~ msgid "The option <literal>APT::Color</literal> is enabled."
+#~ msgstr "a linha <literal>Component:</literal>"
+
+#, fuzzy
+#~ msgid ""
+#~ "The option <literal>upgrade</literal> has <literal>--with-new-pkgs</"
+#~ "literal> enabled by default."
+#~ msgstr "a linha <literal>Archive:</literal>"
+
+#, fuzzy
+#~ msgid ""
+#~ "to the versions that are not installed and do not belong to the target "
+#~ "release."
+#~ msgstr ""
+#~ "para as instâncias que não estã instaladas e que não pertencem a versão "
+#~ "alvo."
+
+#, fuzzy
+#~ msgid "Some examples:"
+#~ msgstr "Exemplos"
+
+#, fuzzy
+#~ msgid ""
+#~ "See E<lt>http://bugs.debian.org/aptE<gt>. If you wish to report a bug in "
+#~ "B<apt>, please see I</usr/share/doc/debian/bug-reporting.txt> or the "
+#~ "B<reportbug>(1) command."
+#~ msgstr ""
+#~ "\n"
+#~ " <RefSect1><Title>Bugs</>\n"
+#~ " <para>\n"
+#~ " Consulte a <ulink url='http://bugs.debian.org/apt'>página de bugs do "
+#~ "APT</>.\n"
+#~ " Caso você queira relatar um bug no APT, por favor consulte o arquivo\n"
+#~ " <filename>/usr/share/doc/debian/bug-reporting.txt</> ou o comando "
+#~ "&reportbug;.\n"
+#~ " </RefSect1>\n"
+
+#, fuzzy
+#~ msgid "apt was written by the APT team E<lt>apt@packages.debian.orgE<gt>."
+#~ msgstr ""
+#~ "\n"
+#~ " <RefSect1><Title>Author</>\n"
+#~ " <para>\n"
+#~ " O APT foi escrito pela equipe APT <email>apt@packages.debian.org</>.\n"
+#~ " </RefSect1>\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Package: *\n"
+#~ "Pin: release n=karmic*\n"
+#~ "Pin-Priority: 990\n"
+#~ msgstr ""
+#~ "<programlisting>\n"
+#~ "Package: *\n"
+#~ "Pin: release a=unstable\n"
+#~ "Pin-Priority: 50\n"
+
+#, fuzzy
+#~ msgid "Dir Section"
+#~ msgstr "Descrição"
+
+#, fuzzy
+#~ msgid "<replaceable>&synopsis-filename;</replaceable>"
+#~ msgstr ""
+#~ "<programlisting>\n"
+#~ "apt-get install <replaceable>pacote</replaceable>/testing\n"
+
+#, fuzzy
+#~ msgid "&apt-get;,&aptitude;,&apt-conf;"
+#~ msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+
+#, fuzzy
+#~ msgid "&file-preferences;"
+#~ msgstr "apt_preferences"
+
+#, fuzzy
+#~ msgid "&apt-author.team; &apt-email; &apt-product;"
+#~ msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<!-- Boiler plate docinfo section -->\n"
+#~ "<!ENTITY apt-docinfo \"\n"
+#~ " <refentryinfo>\n"
+#~ " <address><email>apt@packages.debian.org</email></address>\n"
+#~ " <author>\n"
+#~ " <firstname>Jason</firstname> <surname>Gunthorpe</surname>\n"
+#~ " <contrib></contrib>\n"
+#~ " </author>\n"
+#~ " <copyright><year>1998-2001</year> <holder>Jason Gunthorpe</holder></"
+#~ "copyright>\n"
+#~ " <date>28 October 2008</date>\n"
+#~ " <productname>Linux</productname>\n"
+#~ " </refentryinfo>\n"
+#~ "\">\n"
+#~ msgstr ""
+#~ "\n"
+#~ " <docinfo>\n"
+#~ " <address><email>apt@packages.debian.org</></address>\n"
+#~ " <author><firstname>Jason</> <surname>Gunthorpe</></>\n"
+#~ " <copyright><year>1998-2001</> <holder>Jason Gunthorpe</></>\n"
+#~ " <date>12 Março 2001</>\n"
+#~ " </docinfo>\n"
+
+#, fuzzy
+#~ msgid "to the version that is already installed (if any)."
+#~ msgstr "para a instância que já esteja instalada (caso exista)."
+
+#, fuzzy
+#~ msgid ""
+#~ "The <literal>Pin-Priority:</literal> line in each APT preferences record "
+#~ "is optional. If omitted, APT assigns a priority of 1 less than the last "
+#~ "value specified on a line beginning with <literal>Pin-Priority: "
+#~ "release ...</literal>."
+#~ msgstr ""
+#~ "A linha <literal>Pin-Priority:</literal> em cada registro de preferências "
+#~ "do APT é opcional. Caso omitida, o APT atribuirá uma prioridade de 1 "
+#~ "menos o último valor especificado em uma linha iniciando com <literal>Pin-"
+#~ "Priority: release ...</literal>."
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " <VarListEntry><term><option/-h/</><term><option/--help/</>\n"
+#~ " <ListItem><Para>\n"
+#~ " Show a short usage summary.\n"
+#~ " </VarListEntry>\n"
+#~ " \n"
+#~ " <VarListEntry><term><option/-v/</><term><option/--version/</>\n"
+#~ " <ListItem><Para>\n"
+#~ " Show the program version.\n"
+#~ " </VarListEntry>\n"
+#~ "\n"
+#~ " <VarListEntry><term><option/-c/</><term><option/--config-file/</>\n"
+#~ " <ListItem><Para>\n"
+#~ " Configuration File; Specify a configuration file to use. \n"
+#~ " The program will read the default configuration file and then this \n"
+#~ " configuration file. See &apt-conf; for syntax information. \n"
+#~ " </VarListEntry>\n"
+#~ " \n"
+#~ " <VarListEntry><term><option/-o/</><term><option/--option/</>\n"
+#~ " <ListItem><Para>\n"
+#~ " Set a Configuration Option; This will set an arbitary "
+#~ "configuration \n"
+#~ " option. The syntax is <option>-o Foo::Bar=bar</>.\n"
+#~ " </VarListEntry>\n"
+#~ msgstr ""
+#~ "\n"
+#~ " <VarListEntry><term><option/-h/</><term><option/--help/</>\n"
+#~ " <ListItem><Para>\n"
+#~ " Exibe um pequeno resumo de uso.\n"
+#~ " </VarListEntry>\n"
+#~ " \n"
+#~ " <VarListEntry><term><option/-v/</><term><option/--version/</>\n"
+#~ " <ListItem><Para>\n"
+#~ " Exibe a versão do programa.\n"
+#~ " </VarListEntry>\n"
+#~ "\n"
+#~ " <VarListEntry><term><option/-c/</><term><option/--config-file/</>\n"
+#~ " <ListItem><Para>\n"
+#~ " Arquivo de Configuração; Especifica um arquivo de configuração\n"
+#~ " a ser usado. O programa irá ler o arquivo de configuração padrão\n"
+#~ " e então este arquivo de configuração. Consulte &apt-conf; para\n"
+#~ " informação de sintaxe. \n"
+#~ " </VarListEntry>\n"
+#~ " \n"
+#~ " <VarListEntry><term><option/-o/</><term><option/--option/</>\n"
+#~ " <ListItem><Para>\n"
+#~ " Defie uma Opção de Configuração; Esta opção irá definir uma opção\n"
+#~ " de configuração arbitrária. A sintaxe é <option>-o Foo::Bar=bar</>.\n"
+#~ " </VarListEntry>\n"
+
+#, fuzzy
+#~ msgid "</programlisting> Then:"
+#~ msgstr "</programlisting> Então :"
diff --git a/doc/po4a.conf b/doc/po4a.conf
new file mode 100644
index 000000000..636cac9b9
--- /dev/null
+++ b/doc/po4a.conf
@@ -0,0 +1,44 @@
+# location of pot and po
+[po_directory] po
+
+# Entities need to be present, even if not translated
+[po4a_alias:entity] text opt:"-k 0"
+[po4a_alias:manpage] docbook opt:"\
+ -o untranslated='<term><option> <refname> <refentrytitle> <date> <refentryinfo> <phrase> <variablelist> <term><command>' \
+ -o break='<term><option> <term><command>' \
+ -o nodefault='<option> <refname> <refentrytitle> <date> <refentryinfo> <phrase> <variablelist> <command>' \
+ -o inline='<para><option> <refentrytitle> <para><command> <programlisting><command> <refentrytitle><command> <refpurpose><command>' \
+ -o translated='<para><command> <programlisting><command> <refentrytitle><command> <refpurpose><command>'"
+
+# define source file and translated file (one file per line)
+[type: entity] apt.ent $lang:$lang/apt.ent
+[type: manpage] apt.8.xml $lang:$lang/apt.$lang.8.xml add_$lang:xml.add
+[type: manpage] apt-get.8.xml $lang:$lang/apt-get.$lang.8.xml add_$lang:xml.add
+[type: manpage] apt-cache.8.xml $lang:$lang/apt-cache.$lang.8.xml add_$lang:xml.add
+[type: manpage] apt-key.8.xml $lang:$lang/apt-key.$lang.8.xml add_$lang:xml.add
+[type: manpage] apt-mark.8.xml $lang:$lang/apt-mark.$lang.8.xml add_$lang:xml.add
+[type: manpage] apt-secure.8.xml $lang:$lang/apt-secure.$lang.8.xml add_$lang:xml.add
+[type: manpage] apt-cdrom.8.xml $lang:$lang/apt-cdrom.$lang.8.xml add_$lang:xml.add
+[type: manpage] apt-config.8.xml $lang:$lang/apt-config.$lang.8.xml add_$lang:xml.add
+[type: manpage] apt.conf.5.xml $lang:$lang/apt.conf.$lang.5.xml add_$lang:xml.add
+[type: manpage] apt_preferences.5.xml $lang:$lang/apt_preferences.$lang.5.xml add_$lang:xml.add
+[type: manpage] sources.list.5.xml $lang:$lang/sources.list.$lang.5.xml add_$lang:xml.add
+[type: manpage] apt-extracttemplates.1.xml $lang:$lang/apt-extracttemplates.$lang.1.xml add_$lang:xml.add
+[type: manpage] apt-sortpkgs.1.xml $lang:$lang/apt-sortpkgs.$lang.1.xml add_$lang:xml.add
+[type: manpage] apt-ftparchive.1.xml $lang:$lang/apt-ftparchive.$lang.1.xml add_$lang:xml.add
+
+[type: docbook] guide.dbk $lang:$lang/guide.$lang.dbk
+# add_$lang::$lang/addendum/docbook_$lang.add
+[type: docbook] offline.dbk $lang:$lang/offline.$lang.dbk
+# add_$lang::$lang/addendum/docbook_$lang.add
+#[type: docbook] cache.dbk $lang:$lang/cache.$lang.dbk \
+# add_$lang::$lang/addendum/docbook_$lang.add
+#[type: docbook] design.dbk $lang:$lang/design.$lang.dbk\
+# add_$lang::$lang/addendum/docbook_$lang.add
+#[type: docbook] dpkg-tech.dbk $lang:$lang/dpkg-tech.$lang.dbk\
+# add_$lang::$lang/addendum/docbook_$lang.add
+#[type: docbook] files.dbk $lang:$lang/files.$lang.dbk\
+# add_$lang::$lang/addendum/docbook_$lang.add
+#[type: docbook] method.dbk $lang:$lang/method.$lang.dbk\
+# add_$lang::$lang/addendum/docbook_$lang.add
+
diff --git a/doc/sources.list.5.xml b/doc/sources.list.5.xml
new file mode 100644
index 000000000..dd057eb32
--- /dev/null
+++ b/doc/sources.list.5.xml
@@ -0,0 +1,519 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
+]>
+
+<refentry>
+
+ <refentryinfo>
+ &apt-author.jgunthorpe;
+ &apt-author.team;
+ &apt-email;
+ &apt-product;
+ <!-- The last update date -->
+ <date>2016-11-25T00:00:00Z</date>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>sources.list</refentrytitle>
+ <manvolnum>5</manvolnum>
+ <refmiscinfo class="manual">APT</refmiscinfo>
+ </refmeta>
+
+ <!-- Man page title -->
+ <refnamediv>
+ <refname>sources.list</refname>
+ <refpurpose>List of configured APT data sources</refpurpose>
+ </refnamediv>
+
+ <refsect1><title>Description</title>
+ <para>
+ The source list <filename>/etc/apt/sources.list</filename> and the
+ files contained in <filename>/etc/apt/sources.list.d/</filename> are
+ designed to support any number of active sources and a variety of source
+ media. The files list one source per line (one-line style) or contain multiline
+ stanzas defining one or more sources per stanza (deb822 style), with the
+ most preferred source listed first (in case a single version is
+ available from more than one source). The information available from the
+ configured sources is acquired by <command>apt-get update</command> (or
+ by an equivalent command from another APT front-end).
+ </para>
+ </refsect1>
+
+ <refsect1><title>sources.list.d</title>
+ <para>The <filename>/etc/apt/sources.list.d</filename> directory provides
+ a way to add sources.list entries in separate files.
+ Two different file formats are allowed as described in the next two sections.
+ Filenames need to have either the extension <filename>.list</filename> or
+ <filename>.sources</filename> depending on the contained format.
+ The filenames may only contain letters (a-z and A-Z),
+ digits (0-9), underscore (_), hyphen (-) and period (.) characters.
+ Otherwise APT will print a notice that it has ignored a file, unless that
+ file matches a pattern in the <literal>Dir::Ignore-Files-Silently</literal>
+ configuration list - in which case it will be silently ignored.</para>
+ </refsect1>
+
+ <refsect1><title>One-Line-Style Format</title>
+ <para>
+ Files in this format have the extension <filename>.list</filename>.
+ Each line specifying a source starts with a type (e.g. <literal>deb-src</literal>)
+ followed by options and arguments for this type.
+
+ Individual entries cannot be continued onto a following line. Empty lines
+ are ignored, and a <literal>#</literal> character anywhere on a line marks
+ the remainder of that line as a comment. Consequently an entry can be
+ disabled by commenting out the entire line.
+
+ If options should be provided they are separated by spaces and all of
+ them together are enclosed by square brackets (<literal>[]</literal>)
+ included in the line after the type separated from it with a space.
+ If an option allows multiple values these are separated from each other
+ with a comma (<literal>,</literal>). An option name is separated from its
+ value(s) by an equals sign (<literal>=</literal>). Multivalue options also
+ have <literal>-=</literal> and <literal>+=</literal> as separators, which
+ instead of replacing the default with the given value(s) modify the default
+ value(s) to remove or include the given values.
+ </para><para>
+ This is the traditional format and supported by all apt versions.
+ Note that not all options as described below are supported by all apt versions.
+ Note also that some older applications parsing this format on their own might not
+ expect to encounter options as they were uncommon before the introduction of
+ multi-architecture support.
+ </para>
+ </refsect1>
+
+ <refsect1><title>deb822-Style Format</title>
+ <para>
+ Files in this format have the extension <filename>.sources</filename>.
+ The format is similar in syntax to other files used by Debian and its
+ derivatives, such as the metadata files that apt will download from the configured
+ sources or the <filename>debian/control</filename> file in a Debian source package.
+
+ Individual entries are separated by an empty line; additional empty
+ lines are ignored, and a <literal>#</literal> character at the start of
+ the line marks the entire line as a comment. An entry can hence be
+ disabled by commenting out each line belonging to the stanza, but it is
+ usually easier to add the field "Enabled: no" to the stanza to disable
+ the entry. Removing the field or setting it to yes reenables it.
+
+ Options have the same syntax as every other field: A fieldname separated by
+ a colon (<literal>:</literal>) and optionally spaces from its value(s).
+ Note especially that multiple values are separated by spaces, not by
+ commas as in the one-line format. Multivalue fields like <literal>Architectures</literal>
+ also have <literal>Architectures-Add</literal> and <literal>Architectures-Remove</literal>
+ to modify the default value rather than replacing it.
+ </para><para>
+ This is a new format supported by apt itself since version 1.1. Previous
+ versions ignore such files with a notice message as described earlier.
+ It is intended to make this format gradually the default format,
+ deprecating the previously described one-line-style format, as it is
+ easier to create, extend and modify for humans and machines alike
+ especially if a lot of sources and/or options are involved.
+
+ Developers who are working with and/or parsing apt sources are highly
+ encouraged to add support for this format and to contact the APT team
+ to coordinate and share this work. Users can freely adopt this format
+ already, but may encounter problems with software not supporting
+ the format yet.
+ </para>
+ </refsect1>
+
+ <refsect1><title>The deb and deb-src Types: General Format</title>
+ <para>The <literal>deb</literal> type references a typical two-level Debian
+ archive, <filename>distribution/component</filename>. The
+ <literal>distribution</literal> is generally a suite name like
+ <literal>stable</literal> or <literal>testing</literal> or a codename like
+ <literal>&debian-stable-codename;</literal> or <literal>&debian-testing-codename;</literal>
+ while component is one of <literal>main</literal>, <literal>contrib</literal> or
+ <literal>non-free</literal>. The
+ <literal>deb-src</literal> type references a Debian distribution's source
+ code in the same form as the <literal>deb</literal> type.
+ A <literal>deb-src</literal> line is required to fetch source indexes.</para>
+
+ <para>The format for two one-line-style entries using the
+ <literal>deb</literal> and <literal>deb-src</literal> types is:</para>
+
+ <literallayout>deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]
+deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]</literallayout>
+
+ <para>Alternatively the equivalent entry in deb822 style looks like this:
+ <literallayout>
+ Types: deb deb-src
+ URIs: uri
+ Suites: suite
+ Components: [component1] [component2] [...]
+ option1: value1
+ option2: value2
+ </literallayout>
+ </para>
+
+ <para>The URI for the <literal>deb</literal> type must specify the base of the
+ Debian distribution, from which APT will find the information it needs.
+ <literal>suite</literal> can specify an exact path, in which case the
+ components must be omitted and <literal>suite</literal> must end with
+ a slash (<literal>/</literal>). This is useful for the case when only a
+ particular sub-directory of the archive denoted by the URI is of interest.
+ If <literal>suite</literal> does not specify an exact path, at least
+ one <literal>component</literal> must be present.</para>
+
+ <para><literal>suite</literal> may also contain a variable,
+ <literal>$(ARCH)</literal>
+ which expands to the Debian architecture (such as <literal>amd64</literal> or
+ <literal>armel</literal>) used on the system. This permits architecture-independent
+ <filename>sources.list</filename> files to be used. In general this is only
+ of interest when specifying an exact path; <literal>APT</literal> will
+ automatically generate a URI with the current architecture otherwise.</para>
+
+ <para>Especially in the one-line-style format since only one distribution
+ can be specified per line it may be necessary to have multiple lines for
+ the same URI, if a subset of all available distributions or components at
+ that location is desired. APT will sort the URI list after it has
+ generated a complete set internally, and will collapse multiple
+ references to the same Internet host, for instance, into a single
+ connection, so that it does not inefficiently establish a
+ connection, close it, do something else, and then re-establish a
+ connection to that same host. APT also parallelizes connections to
+ different hosts to more effectively deal with sites with low
+ bandwidth.</para>
+
+ <para>It is important to list sources in order of preference, with the most
+ preferred source listed first. Typically this will result in sorting
+ by speed from fastest to slowest (CD-ROM followed by hosts on a local
+ network, followed by distant Internet hosts, for example).</para>
+
+ <para>As an example, the sources for your distribution could look like this
+ in one-line-style format:
+ <literallayout>&sourceslist-list-format;</literallayout> or like this in
+ deb822 style format:
+ <literallayout>&sourceslist-sources-format;</literallayout></para>
+ </refsect1>
+
+ <refsect1><title>The deb and deb-src types: Options</title>
+ <para>Each source entry can have options specified to modify which source
+ is accessed and how data is acquired from it. Format, syntax and names
+ of the options vary between the one-line-style and deb822-style formats
+ as described, but they both have the same options available. For simplicity
+ we list the deb822 fieldname and provide the one-line name in brackets.
+ Remember that besides setting multivalue options explicitly, there is also
+ the option to modify them based on the default, but we aren't listing those
+ names explicitly here. Unsupported options are silently ignored by all
+ APT versions.
+
+ <itemizedlist>
+ <listitem><para><option>Architectures</option>
+ (<option>arch</option>) is a multivalue option defining for
+ which architectures information should be downloaded. If this
+ option isn't set the default is all architectures as defined by
+ the <option>APT::Architectures</option> config option.
+ </para></listitem>
+
+ <listitem><para><option>Languages</option>
+ (<option>lang</option>) is a multivalue option defining for
+ which languages information such as translated package
+ descriptions should be downloaded. If this option isn't set
+ the default is all languages as defined by the
+ <option>Acquire::Languages</option> config option.
+ </para></listitem>
+
+ <listitem><para><option>Targets</option>
+ (<option>target</option>) is a multivalue option defining
+ which download targets apt will try to acquire from this
+ source. If not specified, the default set is defined by the
+ <option>Acquire::IndexTargets</option> configuration scope
+ (targets are specified by their name in the
+ <literal>Created-By</literal> field).
+ Additionally, targets can be enabled or disabled by using the
+ <literal>Identifier</literal> field as an option with a boolean
+ value instead of using this multivalue option.
+ </para></listitem>
+
+ <listitem><para><option>PDiffs</option> (<option>pdiffs</option>)
+ is a yes/no value which controls if APT should try to use PDiffs
+ to update old indexes instead of downloading the new indexes
+ entirely. The value of this option is ignored if the repository
+ doesn't announce the availability of PDiffs. Defaults to the
+ value of the option with the same name for a specific index file
+ defined in the <option>Acquire::IndexTargets</option> scope,
+ which itself defaults to the value of configuration option
+ <option>Acquire::PDiffs</option> which defaults to
+ <literal>yes</literal>.
+ </para></listitem>
+
+ <listitem><para><option>By-Hash</option> (<option>by-hash</option>)
+ can have the value <literal>yes</literal>, <literal>no</literal>
+ or <literal>force</literal> and controls if APT should try to
+ acquire indexes via a URI constructed from a hashsum of the
+ expected file instead of using the well-known stable filename
+ of the index. Using this can avoid hashsum mismatches, but
+ requires a supporting mirror. A <literal>yes</literal> or
+ <literal>no</literal> value activates/disables the use of this
+ feature if this source indicates support for it, while
+ <literal>force</literal> will enable the feature regardless of
+ what the source indicates. Defaults to the value of the option
+ of the same name for a specific index file defined in the
+ <option>Acquire::IndexTargets</option> scope, which itself
+ defaults to the value of configuration option
+ <option>Acquire::By-Hash</option> which defaults to
+ <literal>yes</literal>.
+ </para></listitem>
+
+ </itemizedlist>
+
+ Furthermore, there are options which if set affect
+ <emphasis>all</emphasis> sources with the same URI and Suite, so they
+ have to be set on all such entries and can not be varied between
+ different components. APT will try to detect and error out on such
+ anomalies.
+
+ <itemizedlist>
+ <listitem><para><option>Allow-Insecure</option> (<option>allow-insecure</option>),
+ <option>Allow-Weak</option> (<option>allow-weak</option>) and
+ <option>Allow-Downgrade-To-Insecure</option> (<option>allow-downgrade-to-insecure</option>)
+ are boolean values which all default to <literal>no</literal>.
+ If set to <literal>yes</literal> they circumvent parts of &apt-secure;
+ and should therefore not be used lightly!
+ </para></listitem>
+
+ <listitem><para><option>Trusted</option> (<option>trusted</option>)
+ is a tri-state value which defaults to APT deciding if a source
+ is considered trusted or if warnings should be raised before e.g.
+ packages are installed from this source. This option can be used
+ to override that decision. The value <literal>yes</literal> tells APT
+ always to consider this source as trusted, even if it doesn't pass
+ authentication checks. It disables parts of &apt-secure;, and should
+ therefore only be used in a local and trusted context (if at all) as
+ otherwise security is breached. The value <literal>no</literal> does
+ the opposite, causing the source to be handled as untrusted even if
+ the authentication checks passed successfully. The default value can't
+ be set explicitly.
+ </para></listitem>
+
+ <listitem><para><option>Signed-By</option> (<option>signed-by</option>)
+ is either an absolute path to a keyring file (has to be
+ accessible and readable for the <literal>_apt</literal> user,
+ so ensure everyone has read-permissions on the file) or one or
+ more fingerprints of keys either in the
+ <filename>trusted.gpg</filename> keyring or in the
+ keyrings in the <filename>trusted.gpg.d/</filename> directory
+ (see <command>apt-key fingerprint</command>). If the option is
+ set, only the key(s) in this keyring or only the keys with these
+ fingerprints are used for the &apt-secure; verification of this
+ repository. Defaults to the value of the option with the same name
+ if set in the previously acquired <filename>Release</filename> file.
+ Otherwise all keys in the trusted keyrings are considered valid
+ signers for this repository.
+ </para></listitem>
+
+ <listitem><para><option>Check-Valid-Until</option> (<option>check-valid-until</option>)
+ is a yes/no value which controls if APT should try to detect
+ replay attacks. A repository creator can declare a time until
+ which the data provided in the repository should be considered valid,
+ and if this time is reached, but no new data is provided, the data
+ is considered expired and an error is raised. Besides
+ increasing security, as a malicious attacker can't send old data
+ forever to prevent a user from upgrading to a new version,
+ this also helps users identify mirrors which are no longer
+ updated. However, some repositories such as historic archives
+ are not updated any more by design, so this check can be
+ disabled by setting this option to <literal>no</literal>.
+ Defaults to the value of configuration option
+ <option>Acquire::Check-Valid-Until</option> which itself
+ defaults to <literal>yes</literal>.
+ </para></listitem>
+
+ <listitem><para><option>Valid-Until-Min</option>
+ (<option>valid-until-min</option>) and
+ <option>Valid-Until-Max</option>
+ (<option>valid-until-max</option>) can be used to raise or
+ lower the time period in seconds in which the data from this
+ repository is considered valid. -Max can be especially useful
+ if the repository provides no Valid-Until field on its Release
+ file to set your own value, while -Min can be used to increase
+ the valid time on seldom updated (local) mirrors of a more
+ frequently updated but less accessible archive (which is in the
+ sources.list as well) instead of disabling the check entirely.
+ Default to the value of the configuration options
+ <option>Acquire::Min-ValidTime</option> and
+ <option>Acquire::Max-ValidTime</option> which are both unset by
+ default.
+ </para></listitem>
+
+ </itemizedlist>
+
+ </para>
+ </refsect1>
+
+ <refsect1><title>URI Specification</title>
+
+ <para>The currently recognized URI types are:
+ <variablelist>
+ <varlistentry><term><command>file</command></term>
+ <listitem><para>
+ The file scheme allows an arbitrary directory in the file system to be
+ considered an archive. This is useful for NFS mounts and local mirrors or
+ archives.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><command>cdrom</command></term>
+ <listitem><para>
+ The cdrom scheme allows APT to use a local CD-ROM drive with media
+ swapping. Use the &apt-cdrom; program to create cdrom entries in the
+ source list.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><command>http</command></term>
+ <listitem><para>
+ The http scheme specifies an HTTP server for the archive. If an environment
+ variable <envar>http_proxy</envar> is set with the format
+ http://server:port/, the proxy server specified in
+ <envar>http_proxy</envar> will be used. Users of authenticated
+ HTTP/1.1 proxies may use a string of the format
+ http://user:pass@server:port/.
+ Note that this is an insecure method of authentication.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><command>ftp</command></term>
+ <listitem><para>
+ The ftp scheme specifies an FTP server for the archive. APT's FTP behavior
+ is highly configurable; for more information see the
+ &apt-conf; manual page. Please note that an FTP proxy can be specified
+ by using the <envar>ftp_proxy</envar> environment variable. It is possible
+ to specify an HTTP proxy (HTTP proxy servers often understand FTP URLs)
+ using this environment variable and <emphasis>only</emphasis> this
+ environment variable. Proxies using HTTP specified in
+ the configuration file will be ignored.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><command>copy</command></term>
+ <listitem><para>
+ The copy scheme is identical to the file scheme except that packages are
+ copied into the cache directory instead of used directly at their location.
+ This is useful for people using removable media to copy files around with APT.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><command>rsh</command></term><term><command>ssh</command></term>
+ <listitem><para>
+ The rsh/ssh method invokes RSH/SSH to connect to a remote host and
+ access the files as a given user. Prior configuration of rhosts or RSA keys
+ is recommended. The standard <command>find</command> and <command>dd</command>
+ commands are used to perform the file transfers from the remote host.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term>adding more recognizable URI types</term>
+ <listitem><para>
+ APT can be extended with more methods shipped in other optional packages, which should
+ follow the naming scheme <package>apt-transport-<replaceable>method</replaceable></package>.
+ For instance, the APT team also maintains the package <package>apt-transport-https</package>,
+ which provides access methods for HTTPS URIs with features similar to the http method.
+ Methods for using e.g. debtorrent are also available - see &apt-transport-debtorrent;.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ </refsect1>
+
+ <refsect1><title>Examples</title>
+ <para>Uses the archive stored locally (or NFS mounted) at /home/apt/debian
+ for stable/main, stable/contrib, and stable/non-free.</para>
+ <literallayout>deb file:/home/apt/debian stable main contrib non-free</literallayout>
+ <literallayout>Types: deb
+URIs: file:/home/apt/debian
+Suites: stable
+Components: main contrib non-free</literallayout>
+
+ <para>As above, except this uses the unstable (development) distribution.</para>
+ <literallayout>deb file:/home/apt/debian unstable main contrib non-free</literallayout>
+ <literallayout>Types: deb
+URIs: file:/home/apt/debian
+Suites: unstable
+Components: main contrib non-free</literallayout>
+
+ <para>Sources specification for the above.</para>
+ <literallayout>deb-src file:/home/apt/debian unstable main contrib non-free</literallayout>
+ <literallayout>Types: deb-src
+URIs: file:/home/apt/debian
+Suites: unstable
+Components: main contrib non-free</literallayout>
+
+ <para>The first line gets package information for the architectures in <literal>APT::Architectures</literal>
+ while the second always retrieves <literal>amd64</literal> and <literal>armel</literal>.</para>
+ <literallayout>deb http://deb.debian.org/debian &debian-stable-codename; main
+deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main</literallayout>
+ <literallayout>Types: deb
+URIs: http://deb.debian.org/debian
+Suites: &debian-stable-codename;
+Components: main
+
+Types: deb
+URIs: http://deb.debian.org/debian
+Suites: &debian-stable-codename;
+Components: main
+Architectures: amd64 armel
+</literallayout>
+
+ <para>Uses HTTP to access the archive at archive.debian.org, and uses only
+ the hamm/main area.</para>
+ <literallayout>deb http://archive.debian.org/debian-archive hamm main</literallayout>
+ <literallayout>Types: deb
+URIs: http://archive.debian.org/debian-archive
+Suites: hamm
+Components: main</literallayout>
+
+ <para>Uses FTP to access the archive at ftp.debian.org, under the debian
+ directory, and uses only the &debian-stable-codename;/contrib area.</para>
+ <literallayout>deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib</literallayout>
+ <literallayout>Types: deb
+URIs: ftp://ftp.debian.org/debian
+Suites: &debian-stable-codename;
+Components: contrib</literallayout>
+
+ <para>Uses FTP to access the archive at ftp.debian.org, under the debian
+ directory, and uses only the unstable/contrib area. If this line appears as
+ well as the one in the previous example in <filename>sources.list</filename>
+ a single FTP session will be used for both resource lines.</para>
+ <literallayout>deb ftp://ftp.debian.org/debian unstable contrib</literallayout>
+ <literallayout>Types: deb
+URIs: ftp://ftp.debian.org/debian
+Suites: unstable
+Components: contrib</literallayout>
+
+ <para>Uses HTTP to access the archive at ftp.tlh.debian.org, under the
+ universe directory, and uses only files found under
+ <filename>unstable/binary-i386</filename> on i386 machines,
+ <filename>unstable/binary-amd64</filename> on amd64, and so
+ forth for other supported architectures. [Note this example only
+ illustrates how to use the substitution variable; official debian
+ archives are not structured like this]
+ <literallayout>deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/</literallayout>
+ <literallayout>Types: deb
+URIs: http://ftp.tlh.debian.org/universe
+Suites: unstable/binary-$(ARCH)/</literallayout>
+ </para>
+
+ <para>Uses HTTP to get binary packages as well as sources from the stable, testing and unstable
+ suites and the components main and contrib.</para>
+ <literallayout>deb http://deb.debian.org/debian stable main contrib
+deb-src http://deb.debian.org/debian stable main contrib
+deb http://deb.debian.org/debian testing main contrib
+deb-src http://deb.debian.org/debian testing main contrib
+deb http://deb.debian.org/debian unstable main contrib
+deb-src http://deb.debian.org/debian unstable main contrib</literallayout>
+ <literallayout>Types: deb deb-src
+URIs: http://deb.debian.org/debian
+Suites: stable testing unstable
+Components: main contrib
+</literallayout>
+
+ </refsect1>
+
+ <refsect1><title>See Also</title>
+ <para>&apt-get;, &apt-conf;, &apt-acquire-additional-files;</para>
+ </refsect1>
+
+ &manbugs;
+
+</refentry>
diff --git a/doc/style.txt b/doc/style.txt
new file mode 100644
index 000000000..cd5f8b677
--- /dev/null
+++ b/doc/style.txt
@@ -0,0 +1,75 @@
+Acronyms
+~~~~~~~~
+* dpkg is a 'word' the first d may be upper case - Dpkg
+* APT is a proper Acronym, all upper case please.
+
+Pkg - A Package
+Ver - A version
+
+Indenting, Comments, Etc
+~~~~~~~~~~~~~~~~~~~~~~~~
+Would make Linus cry :P However it is what I prefer. 3 space indent,
+8 space tab all braces on separate lines, function return on the same line
+as the function, cases aligned with their code. The 'indent' options for
+this style are:
+ indent -bl -bli0 -di1 -i3 -nsc -ts8 -npcs -npsl
+
+Each file gets a block at the top that should describe what the file does,
+basically a summary of purpose along with any special notes and
+attributions. The }}} and {{{ are folding marks if you have a folding
+editor such as jed, the function separators are intended to give
+a visual separate between functions for easier browsing of the larger files,
+or indexed folding if you have such an editor.
+
+Each file should have 1 or 0 primary include files, that include
+file must always be the first include file included by the .cc. G++
+#pragma interface/implementation is used, as well as anti-include-twice
+#ifdefs.
+
+Include files, since there are so many, get their own subdirectory off
+the include search path, this is used consistently throughout all the code.
+#include "" should never be used for a global exported header file, only
+local ones.
+
+C++ Features
+~~~~~~~~~~~~
+Due to the legacy compiler heritage, exceptions, RTTI and name spaces are
+not used. Templates are used *sparingly* since G++ has traditionally had
+very weak support for them, this includes STL templates.
+
+Namespaces will probably be put in the code sometime after G++ 3, which will
+be a huge re-org again to make sanity, the majority of all nested things
+will go away.
+
+The C++ standard library's non parameterized types (string is included in
+this) are used freely when appropriate.
+
+The new C++ #include <iostream> (note the lack of a .h) is used for the
+standard library, but not for my code.
+
+Arguments and Ownership
+~~~~~~~~~~~~~~~~~~~~~~~
+[much of the code follows this now]
+These guidelines should be followed except in two cases.. the first
+is where it makes no sense, such as in a casting operator and the second is to
+retain API compatibility (this should be rare, since a change in the input
+almost always designates a change in ownership rules).
+
+ * Pass by value or pass by reference should borrow the object from the
+ caller
+ * Pass by non-const reference may be used to indicate a OUT type variable
+ * Pass by pointer (except in the case where the pointer is really an array)
+ should be used when the object will be retained or ownership will be
+ transferred. Ownership transference should be rare and noted by a comment.
+ * Standard C things (FILE * etc) should be left as is.
+
+ * Return by references should indicate a borrowed object
+ * Return by pointer (except arrays) should indicate ownership is
+ transferred. Return by pointer should not be used unless ownership is
+ transferred.
+ * Return by pointer to variable indicates ownership transfer unless the
+ pointer is an 'input' parameter (designated generally by an =0,
+ indicating a default of 'none')
+
+Non-ownership transferring arrays/lists should probably return an iterator
+typedef or references..
diff --git a/doc/xml.add b/doc/xml.add
new file mode 100644
index 000000000..9311c052f
--- /dev/null
+++ b/doc/xml.add
@@ -0,0 +1,5 @@
+PO4A-HEADER:mode=after;position=manbugs;beginboundary=^</refentry>
+ <refsect1><title>&translation-title;</title>
+ <para>&translation-holder;</para>
+ <para>&translation-english;</para>
+ </refsect1>
diff --git a/dselect/CMakeLists.txt b/dselect/CMakeLists.txt
new file mode 100644
index 000000000..804306e72
--- /dev/null
+++ b/dselect/CMakeLists.txt
@@ -0,0 +1,4 @@
+install(PROGRAMS install setup update
+ DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/dpkg/methods/apt)
+install(FILES desc.apt names
+ DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/dpkg/methods/apt)
diff --git a/dselect/desc.apt b/dselect/desc.apt
new file mode 100644
index 000000000..5601919ac
--- /dev/null
+++ b/dselect/desc.apt
@@ -0,0 +1,9 @@
+The APT installation method encompasses most other installation methods
+under the umbrella of the new Package Acquisition code. This method allows
+installation from locations in the filesystem, ftp and http URLs, supports
+full installation ordering and dependency checking as well as multiple
+sources. See the man pages apt-get(8) and sources.list(5)
+
+HTTP proxies can be used by setting http_proxy="http://proxy:port/" before
+running DSelect. FTP proxies require special configuration detailed in
+the apt.conf(5) man page (see /usr/share/doc/apt/examples/apt.conf)
diff --git a/dselect/install b/dselect/install
new file mode 100755
index 000000000..75f0c0fc4
--- /dev/null
+++ b/dselect/install
@@ -0,0 +1,111 @@
+#!/bin/bash
+
+# Set the textdomain for the translations using $"..."
+TEXTDOMAIN="apt"
+
+# Get the configuration from /etc/apt/apt.conf
+CLEAN="prompt"
+OPTS=""
+DSELECT_UPGRADE_OPTS="-f"
+APTGET="/usr/bin/apt-get"
+DPKG="/usr/bin/dpkg"
+DPKG_OPTS="--admindir=$1"
+APT_OPT0="-oDir::State::status=$1/status"
+APT_OPT1="-oDPkg::Options::=$DPKG_OPTS"
+set -e
+RES=$(apt-config shell CLEAN DSelect::Clean OPTS DSelect::Options \
+ DPKG Dir::Bin::dpkg/f APTGET Dir::Bin::apt-get/f \
+ ARCHIVES Dir::Cache::Archives/d \
+ WAIT DSelect::WaitAfterDownload/b \
+ CHECKDIR DSelect::CheckDir/b)
+eval $RES
+set +e
+
+# Yes/No Prompter
+yesno() {
+# $1 = prompt
+# $2 = default(y)
+ local ans def defp
+ if [ "$2" ];then
+ case $2 in
+ Y|y) defp="[Y/n]" def=y;;
+ N|n) defp="[y/N]" def=n;;
+ *) echo $"Bad default setting!" 1>&2; exit 1;;
+ esac
+ else
+ defp="[y/N]" def=n
+ fi
+ while :;do
+ echo -n "$1 $defp " 1>&3
+ read ans
+ case $ans in
+ Y|y|N|n) break;;
+ "") ans=$def;break;;
+ esac
+ echo
+ done
+ echo $ans | tr YN yn
+}
+
+if [ "$WAIT" = "true" ]; then
+ $APTGET $DSELECT_UPGRADE_OPTS $OPTS "$APT_OPT0" "$APT_OPT1" -d dselect-upgrade
+ echo $"Press [Enter] to continue." && read RES
+ $APTGET $DSELECT_UPGRADE_OPTS $OPTS "$APT_OPT0" "$APT_OPT1" dselect-upgrade
+ RES=$?
+else
+ $APTGET $DSELECT_UPGRADE_OPTS $OPTS "$APT_OPT0" "$APT_OPT1" dselect-upgrade
+ RES=$?
+fi
+
+# 1 means the user choose no at the prompt
+if [ $RES -eq 1 ]; then
+ exit 0
+fi
+
+# Finished OK
+if [ $RES -eq 0 ]; then
+
+ if [ $(ls $ARCHIVES $ARCHIVES/partial | grep -E -v "^lock$|^partial$" | wc -l) \
+ -eq 0 ]; then
+ exit 0
+ fi
+
+ NEWLS=$(ls -ld $ARCHIVES)
+ if [ "$CHECKDIR" = "true" ]; then
+ if [ "$OLDLS" = "$NEWLS" ]; then
+ exit 0
+ fi
+ fi
+
+ # Check the cleaning mode
+ case $(echo $CLEAN | tr '[:upper:]' '[:lower:]') in
+ auto)
+ $APTGET "$APT_OPT0" "$APT_OPT1" autoclean &&
+ echo $"Press [Enter] to continue." && read RES && exit 0;
+ ;;
+ always)
+ $APTGET "$APT_OPT0" "$APT_OPT1" clean &&
+ echo $"Press [Enter] to continue." && read RES && exit 0;
+ ;;
+ prompt)
+ exec 3>&1
+ echo -n $"Do you want to erase any previously downloaded .deb files?"
+ if [ $(yesno "" y) = y ]; then
+ $APTGET "$APT_OPT0" "$APT_OPT1" clean &&
+ echo $"Press [Enter] to continue." && read RES && exit 0;
+ fi
+ ;;
+ *)
+ ;;
+ esac
+else
+ echo $"Some errors occurred while unpacking. Packages that were installed"
+ echo $"will be configured. This may result in duplicate errors"
+ echo $"or errors caused by missing dependencies. This is OK, only the errors"
+ echo $"above this message are important. Please fix them and run [I]nstall again"
+ echo $"Press [Enter] to continue."
+ read RES && $DPKG "$DPKG_OPTS" --configure -a
+ exit 100
+fi
+
+exit $?
diff --git a/dselect/names b/dselect/names
new file mode 100644
index 000000000..8daa53782
--- /dev/null
+++ b/dselect/names
@@ -0,0 +1 @@
+70 apt APT Acquisition [file,http,ftp]
diff --git a/dselect/setup b/dselect/setup
new file mode 100755
index 000000000..8689d2388
--- /dev/null
+++ b/dselect/setup
@@ -0,0 +1,286 @@
+#!/usr/bin/perl -w
+# -*- Mode: Perl -*-
+# setup.pl ---
+# Author : Manoj Srivastava ( srivasta@tiamat.datasync.com )
+# Created On : Wed Mar 4 15:11:47 1998
+# Created On Node : tiamat.datasync.com
+# Last Modified By : Manoj Srivastava
+# Last Modified On : Tue May 19 11:25:32 1998
+# Last Machine Used: tiamat.datasync.com
+# Update Count : 87
+# Status : Unknown, Use with caution!
+# HISTORY :
+# Description :
+# This file is designed to go into /usr/lib/apt/methods/setup
+#
+
+#use strict;
+#use diagnostics;
+#printf STDERR "DEBUG: Arguments $ARGV[0];$ARGV[1];$ARGV[2];\n";
+
+
+# Handle the arguments
+my $vardir=$ARGV[0];
+my $method=$ARGV[1];
+my $option=$ARGV[2];
+my $config_file = '/etc/apt/sources.list';
+
+my $boldon=`setterm -bold on`;
+my $boldoff=`setterm -bold off`;
+
+my @known_types = ('deb');
+my @known_access = ('http', 'ftp', 'file');
+my @typical_distributions = ('stable', 'unstable', 'testing', 'non-US');
+my @typical_components = ('main', 'contrib', 'non-free');
+
+my %known_access = map {($_,$_)} @known_access;
+my %typical_distributions = map {($_,$_)} @typical_distributions;
+
+# Read the config file, creating source records
+sub read_config {
+ my %params = @_;
+ my @Config = ();
+
+ die "Required parameter Filename Missing" unless
+ $params{'Filename'};
+
+ open (CONFIG, "$params{'Filename'}") ||
+ die "Could not open $params{'Filename'}: $!";
+ while (<CONFIG>) {
+ chomp;
+ my $rec = {};
+ my ($type, $urn, $distribution, $components) =
+ m/^\s*(\S+)\s+(\S+)\s+(\S+)\s*(?:\s+(\S.*))?$/o;
+ $rec->{'Type'} = $type;
+ $rec->{'URN'} = $urn;
+ $rec->{'Distribution'} = $distribution;
+ $rec->{'Components'} = $components;
+ push @Config, $rec;
+ }
+ close(CONFIG);
+
+ return @Config;
+}
+
+# write the config file; writing out the current set of source records
+sub write_config {
+ my %params = @_;
+ my $rec;
+ my %Seen = ();
+
+ die "Required parameter Filename Missing" unless
+ $params{'Filename'};
+ die "Required parameter Config Missing" unless
+ $params{'Config'};
+
+ open (CONFIG, ">$params{'Filename'}") ||
+ die "Could not open $params{'Filename'} for writing: $!";
+ for $rec (@{$params{'Config'}}) {
+ my $line = "$rec->{'Type'} $rec->{'URN'} $rec->{'Distribution'} ";
+ $line .= "$rec->{'Components'}" if $rec->{'Components'};
+ $line .= "\n";
+ print CONFIG $line unless $Seen{$line}++;
+ }
+ close(CONFIG);
+}
+
+# write the config file; writing out the current set of source records
+sub print_config {
+ my %params = @_;
+ my $rec;
+ my %Seen = ();
+
+ die "Required parameter Config Missing" unless
+ $params{'Config'};
+
+ for $rec (@{$params{'Config'}}) {
+ next unless $rec;
+
+ my $line = "$rec->{'Type'} " if $rec->{'Type'};
+ $line .= "$rec->{'URN'} " if $rec->{'URN'};
+ $line .= "$rec->{'Distribution'} " if $rec->{'Distribution'};
+ $line .= "$rec->{'Components'}" if $rec->{'Components'};
+ $line .= "\n";
+ print $line unless $Seen{$line}++;
+ }
+}
+
+# Ask for and add a source record
+sub get_source {
+ my %params = @_;
+ my $rec = {};
+ my $answer;
+ my ($type, $urn, $distribution, $components);
+
+ if ($params{'Default'}) {
+ ($type, $urn, $distribution, $components) =
+ $params{'Default'} =~ m/^\s*(\S+)\s+(\S+)\s+(\S+)\s+(\S.*)$/o;
+ }
+
+ $type = 'deb';
+ $urn = "http://http.us.debian.org/debian" unless $urn;
+ $distribution = "stable" unless $distribution;
+ $components = "main contrib non-free" unless $components;
+
+
+ $rec->{'Type'} = 'deb';
+ $| = 1;
+
+ my $done = 0;
+
+ while (!$done) {
+ print "\n";
+ print "$boldon URL [$urn]: $boldoff";
+
+ $answer=<STDIN>;
+ chomp ($answer);
+ $answer =~ s/\s*//og;
+
+ if ($answer =~ /^\s*$/o) {
+ $rec->{'URN'} = $urn;
+ last;
+ }
+ else {
+ my ($scheme) = $answer =~ /^\s*([^:]+):/o;
+ if (! defined $known_access{$scheme}) {
+ print "Unknown access scheme $scheme in $answer\n";
+ print " The available access methods known to me are\n";
+ print join (' ', @known_access), "\n";
+ print "\n";
+ }
+ else {
+ $rec->{'URN'} = $answer;
+ last;
+ }
+ }
+ }
+
+ print "\n";
+
+ print " Please give the distribution tag to get or a path to the\n";
+ print " package file ending in a /. The distribution\n";
+ print " tags are typically something like:$boldon ";
+ print join(' ', @typical_distributions), "$boldoff\n";
+ print "\n";
+ print "$boldon Distribution [$distribution]:$boldoff ";
+ $answer=<STDIN>;
+ chomp ($answer);
+ $answer =~ s/\s*//og;
+
+ if ($answer =~ /^\s*$/o) {
+ $rec->{'Distribution'} = $distribution;
+ $rec->{'Components'} = &get_components($components);
+ }
+ elsif ($answer =~ m|/$|o) {
+ $rec->{'Distribution'} = "$answer";
+ $rec->{'Components'} = "";
+ }
+ else {
+ # A distribution tag, eh?
+ warn "$answer does not seem to be a typical distribution tag\n"
+ unless defined $typical_distributions{$answer};
+
+ $rec->{'Distribution'} = "$answer";
+ $rec->{'Components'} = &get_components($components);
+ }
+
+ return $rec;
+}
+
+sub get_components {
+ my $default = shift;
+ my $answer;
+
+ print "\n";
+ print " Please give the components to get\n";
+ print " The components are typically something like:$boldon ";
+ print join(' ', @typical_components), "$boldoff\n";
+ print "\n";
+ print "$boldon Components [$default]:$boldoff ";
+ $answer=<STDIN>;
+ chomp ($answer);
+ $answer =~ s/\s+/ /og;
+
+ if ($answer =~ /^\s*$/o) {
+ return $default;
+ }
+ else {
+ return $answer;
+ }
+}
+
+sub get_sources {
+ my @Config = ();
+ my $done = 0;
+
+ my @Oldconfig = ();
+
+ if (-e $config_file) {
+ @Oldconfig = &read_config('Filename' => $config_file)
+ }
+
+ print "\t$boldon Set up a list of distribution source locations $boldoff \n";
+ print "\n";
+
+ print " Please give the base URL of the debian distribution.\n";
+ print " The access schemes I know about are:$boldon ";
+ print join (' ', @known_access), "$boldoff\n";
+# print " The mirror scheme is special that it does not specify the\n";
+# print " location of a debian archive but specifies the location\n";
+# print " of a list of mirrors to use to access the archive.\n";
+ print "\n";
+ print " For example:\n";
+ print " file:/mnt/debian,\n";
+ print " ftp://ftp.debian.org/debian,\n";
+ print " http://ftp.de.debian.org/debian,\n";
+# print " and the special mirror scheme,\n";
+# print " mirror:http://www.debian.org/archivemirrors \n";
+ print "\n";
+
+ my $index = 0;
+ while (!$done) {
+ if ($Oldconfig[$index]) {
+ push (@Config, &get_source('Default' => $Oldconfig[$index++]));
+ }
+ else {
+ push (@Config, &get_source());
+ }
+ print "\n";
+ print "$boldon Would you like to add another source?[y/N]$boldoff ";
+ my $answer = <STDIN>;
+ chomp ($answer);
+ $answer =~ s/\s+/ /og;
+ if ($answer =~ /^\s*$/o) {
+ last;
+ }
+ elsif ($answer !~ m/\s*y/io) {
+ last;
+ }
+ }
+
+ return @Config;
+}
+
+sub main {
+ if (-e $config_file) {
+ my @Oldconfig = &read_config('Filename' => $config_file);
+
+ print "$boldon I see you already have a source list.$boldoff\n";
+ print "-" x 72, "\n";
+ &print_config('Config' => \@Oldconfig);
+ print "-" x 72, "\n";
+ print "$boldon Do you wish to overwrite it? [y/N]$boldoff ";
+ my $answer = <STDIN>;
+ chomp ($answer);
+ $answer =~ s/\s+/ /og;
+ exit 0 unless $answer =~ m/\s*y/io;
+ }
+ # OK. They want to be here.
+ my @Config = &get_sources();
+ #&print_config('Config' => \@Config);
+ &write_config('Config' => \@Config, 'Filename' => $config_file);
+}
+
+&main();
+
+
diff --git a/dselect/update b/dselect/update
new file mode 100755
index 000000000..0ab317ee4
--- /dev/null
+++ b/dselect/update
@@ -0,0 +1,48 @@
+#!/bin/bash
+set -e
+
+# Set the textdomain for the translations using $"..."
+TEXTDOMAIN="apt"
+
+# Get the configuration from /etc/apt/apt.conf
+CLEAN="prompt"
+OPTS=""
+APTGET="/usr/bin/apt-get"
+APTCACHE="/usr/bin/apt-cache"
+DPKG="/usr/bin/dpkg"
+DPKG_OPTS="--admindir=$1"
+APT_OPT0="-oDir::State::status=$1/status"
+APT_OPT1="-oDPkg::Options::=$DPKG_OPTS"
+CACHEDIR="/var/cache/apt"
+PROMPT="false"
+RES=`apt-config shell CLEAN DSelect::Clean OPTS DSelect::UpdateOptions \
+ DPKG Dir::Bin::dpkg/f APTGET Dir::Bin::apt-get/f \
+ APTCACHE Dir::Bin::apt-cache/f CACHEDIR Dir::Cache/d \
+ PROMPT DSelect::PromptAfterUpdate/b`
+eval $RES
+
+# It looks slightly ugly to have a double / in the dpkg output
+CACHEDIR=`echo $CACHEDIR | sed -e "s|/$||"`
+
+STATUS=1
+if $APTGET $OPTS "$APT_OPT0" "$APT_OPT1" update
+then
+ echo $"Merging available information"
+ rm -f $CACHEDIR/available
+ $APTCACHE dumpavail > $CACHEDIR/available
+ $DPKG "$DPKG_OPTS" --update-avail $CACHEDIR/available
+ rm -f $CACHEDIR/available
+
+ case "$CLEAN" in
+ Pre-Auto|PreAuto|pre-auto)
+ $APTGET "$APT_OPT0" "$APT_OPT1" autoclean;;
+ esac
+
+ STATUS=0
+fi
+
+if [ x$PROMPT = "xtrue" ]; then
+ echo $"Press [Enter] to continue." && read RES;
+fi
+
+exit $STATUS
diff --git a/ftparchive/CMakeLists.txt b/ftparchive/CMakeLists.txt
new file mode 100644
index 000000000..bbd2848c1
--- /dev/null
+++ b/ftparchive/CMakeLists.txt
@@ -0,0 +1,13 @@
+include_directories(${BERKELEY_DB_INCLUDE_DIRS})
+# Definition of the C++ files used to build the program - note that this
+# is expanded at CMake time, so you have to rerun cmake if you add or remove
+# a file (you can just run cmake . in the build directory)
+file(GLOB_RECURSE source "*.cc")
+add_executable(apt-ftparchive ${source})
+
+# Link the executables against the libraries
+target_include_directories(apt-ftparchive PRIVATE ${BERKELEY_DB_INCLUDE_DIRS})
+target_link_libraries(apt-ftparchive apt-inst apt-pkg apt-private ${BERKELEY_DB_LIBRARIES})
+
+# Install the executables
+install(TARGETS apt-ftparchive RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
diff --git a/ftparchive/apt-ftparchive.cc b/ftparchive/apt-ftparchive.cc
new file mode 100644
index 000000000..ab6f48d61
--- /dev/null
+++ b/ftparchive/apt-ftparchive.cc
@@ -0,0 +1,1057 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: apt-ftparchive.cc,v 1.8.2.3 2004/01/02 22:01:48 mdz Exp $
+/* ######################################################################
+
+ apt-ftparchive - Efficient work-alike for dpkg-scanpackages
+
+ Let contents be disabled from the conf
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/init.h>
+#include <apt-pkg/fileutl.h>
+
+#include <apt-private/private-cmndline.h>
+#include <apt-private/private-output.h>
+#include <apt-private/private-main.h>
+
+#include <algorithm>
+#include <climits>
+#include <sys/time.h>
+#include <locale.h>
+#include <stdio.h>
+#include <sys/stat.h>
+#include <time.h>
+#include <functional>
+#include <iostream>
+#include <string>
+#include <vector>
+
+#include "cachedb.h"
+#include "override.h"
+#include "apt-ftparchive.h"
+#include "multicompress.h"
+#include "writer.h"
+
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+unsigned Quiet = 0;
+
+// struct PackageMap - List of all package files in the config file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+struct PackageMap
+{
+ // General Stuff
+ string BaseDir;
+ string InternalPrefix;
+ string FLFile;
+ string PkgExt;
+ string SrcExt;
+
+ // Stuff for the Package File
+ string PkgFile;
+ string BinCacheDB;
+ string SrcCacheDB;
+ string BinOverride;
+ string ExtraOverride;
+
+ // We generate for this given arch
+ string Arch;
+ bool IncludeArchAll;
+
+ // Stuff for the Source File
+ string SrcFile;
+ string SrcOverride;
+ string SrcExtraOverride;
+
+ // Translation master file
+ bool LongDesc;
+ TranslationWriter *TransWriter;
+
+ // Contents
+ string Contents;
+ string ContentsHead;
+
+ // Random things
+ string Tag;
+ string PkgCompress;
+ string CntCompress;
+ string SrcCompress;
+ string PathPrefix;
+ unsigned int DeLinkLimit;
+ mode_t Permissions;
+
+ bool ContentsDone;
+ bool PkgDone;
+ bool SrcDone;
+ time_t ContentsMTime;
+
+ struct ContentsCompare : public binary_function<PackageMap,PackageMap,bool>
+ {
+ inline bool operator() (const PackageMap &x,const PackageMap &y)
+ {return x.ContentsMTime < y.ContentsMTime;};
+ };
+
+ struct DBCompare : public binary_function<PackageMap,PackageMap,bool>
+ {
+ inline bool operator() (const PackageMap &x,const PackageMap &y)
+ {return x.BinCacheDB < y.BinCacheDB;};
+ };
+
+ struct SrcDBCompare : public binary_function<PackageMap,PackageMap,bool>
+ {
+ inline bool operator() (const PackageMap &x,const PackageMap &y)
+ {return x.SrcCacheDB < y.SrcCacheDB;};
+ };
+
+ void GetGeneral(Configuration &Setup,Configuration &Block);
+ bool GenPackages(Configuration &Setup,struct CacheDB::Stats &Stats);
+ bool GenSources(Configuration &Setup,struct CacheDB::Stats &Stats);
+ bool GenContents(Configuration &Setup,
+ vector<PackageMap>::iterator Begin,
+ vector<PackageMap>::iterator End,
+ unsigned long &Left);
+
+ PackageMap() : IncludeArchAll(true), LongDesc(true), TransWriter(NULL),
+ DeLinkLimit(0), Permissions(1), ContentsDone(false),
+ PkgDone(false), SrcDone(false), ContentsMTime(0) {};
+};
+ /*}}}*/
+
+// PackageMap::GetGeneral - Common per-section definitions /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void PackageMap::GetGeneral(Configuration &Setup,Configuration &Block)
+{
+ PathPrefix = Block.Find("PathPrefix");
+
+ if (Block.FindB("External-Links",true) == false)
+ DeLinkLimit = Setup.FindI("Default::DeLinkLimit", std::numeric_limits<unsigned int>::max());
+ else
+ DeLinkLimit = 0;
+
+ PkgCompress = Block.Find("Packages::Compress",
+ Setup.Find("Default::Packages::Compress",". gzip").c_str());
+ CntCompress = Block.Find("Contents::Compress",
+ Setup.Find("Default::Contents::Compress",". gzip").c_str());
+ SrcCompress = Block.Find("Sources::Compress",
+ Setup.Find("Default::Sources::Compress",". gzip").c_str());
+
+ SrcExt = Block.Find("Sources::Extensions",
+ Setup.Find("Default::Sources::Extensions",".dsc").c_str());
+ PkgExt = Block.Find("Packages::Extensions",
+ Setup.Find("Default::Packages::Extensions",".deb").c_str());
+
+ Permissions = Setup.FindI("Default::FileMode",0644);
+
+ if (FLFile.empty() == false)
+ FLFile = flCombine(Setup.Find("Dir::FileListDir"),FLFile);
+
+ if (Contents == " ")
+ Contents= string();
+}
+ /*}}}*/
+// PackageMap::GenPackages - Actually generate a Package file /*{{{*/
+// ---------------------------------------------------------------------
+/* This generates the Package File described by this object. */
+bool PackageMap::GenPackages(Configuration &Setup,struct CacheDB::Stats &Stats)
+{
+ if (PkgFile.empty() == true)
+ return true;
+
+ string ArchiveDir = Setup.FindDir("Dir::ArchiveDir");
+ string OverrideDir = Setup.FindDir("Dir::OverrideDir");
+ string CacheDir = Setup.FindDir("Dir::CacheDir");
+
+ struct timeval StartTime;
+ gettimeofday(&StartTime,0);
+
+ PkgDone = true;
+
+ // Create a package writer object.
+ MultiCompress Comp(flCombine(ArchiveDir,PkgFile),
+ PkgCompress,Permissions);
+ PackagesWriter Packages(&Comp.Input, TransWriter, flCombine(CacheDir,BinCacheDB),
+ flCombine(OverrideDir,BinOverride),
+ flCombine(OverrideDir,ExtraOverride),
+ Arch, IncludeArchAll);
+ if (PkgExt.empty() == false && Packages.SetExts(PkgExt) == false)
+ return _error->Error(_("Package extension list is too long"));
+ if (_error->PendingError() == true)
+ return _error->Error(_("Error processing directory %s"),BaseDir.c_str());
+
+ Packages.PathPrefix = PathPrefix;
+ Packages.DirStrip = ArchiveDir;
+ Packages.InternalPrefix = flCombine(ArchiveDir,InternalPrefix);
+
+ Packages.LongDescription = LongDesc;
+
+ Packages.Stats.DeLinkBytes = Stats.DeLinkBytes;
+ Packages.DeLinkLimit = DeLinkLimit;
+
+ if (_error->PendingError() == true)
+ return _error->Error(_("Error processing directory %s"),BaseDir.c_str());
+
+ c0out << ' ' << BaseDir << ":" << flush;
+
+ // Do recursive directory searching
+ if (FLFile.empty() == true)
+ {
+ if (Packages.RecursiveScan(flCombine(ArchiveDir,BaseDir)) == false)
+ return false;
+ }
+ else
+ {
+ if (Packages.LoadFileList(ArchiveDir,FLFile) == false)
+ return false;
+ }
+
+ Packages.Output = 0; // Just in case
+
+ // Finish compressing
+ unsigned long long Size;
+ if (Comp.Finalize(Size) == false)
+ {
+ c0out << endl;
+ return _error->Error(_("Error processing directory %s"),BaseDir.c_str());
+ }
+
+ if (Size != 0)
+ c0out << " New "
+ << SizeToStr(Size) << "B ";
+ else
+ c0out << ' ';
+
+ struct timeval NewTime;
+ gettimeofday(&NewTime,0);
+ double Delta = NewTime.tv_sec - StartTime.tv_sec +
+ (NewTime.tv_usec - StartTime.tv_usec)/1000000.0;
+
+ c0out << Packages.Stats.Packages << " files " <<
+/* SizeToStr(Packages.Stats.MD5Bytes) << "B/" << */
+ SizeToStr(Packages.Stats.Bytes) << "B " <<
+ TimeToStr((long)Delta) << endl;
+
+ if(_config->FindB("APT::FTPArchive::ShowCacheMisses", false) == true)
+ c0out << " Misses in Cache: " << Packages.Stats.Misses<< endl;
+
+ Stats.Add(Packages.Stats);
+ Stats.DeLinkBytes = Packages.Stats.DeLinkBytes;
+
+ return !_error->PendingError();
+}
+
+ /*}}}*/
+// PackageMap::GenSources - Actually generate a Source file /*{{{*/
+// ---------------------------------------------------------------------
+/* This generates the Sources File described by this object. */
+bool PackageMap::GenSources(Configuration &Setup,struct CacheDB::Stats &Stats)
+{
+ if (SrcFile.empty() == true)
+ return true;
+
+ string ArchiveDir = Setup.FindDir("Dir::ArchiveDir");
+ string OverrideDir = Setup.FindDir("Dir::OverrideDir");
+ string CacheDir = Setup.FindDir("Dir::CacheDir");
+
+ struct timeval StartTime;
+ gettimeofday(&StartTime,0);
+
+ SrcDone = true;
+
+ // Create a package writer object.
+ MultiCompress Comp(flCombine(ArchiveDir,SrcFile),
+ SrcCompress,Permissions);
+ SourcesWriter Sources(&Comp.Input, flCombine(CacheDir, SrcCacheDB),
+ flCombine(OverrideDir,BinOverride),
+ flCombine(OverrideDir,SrcOverride),
+ flCombine(OverrideDir,SrcExtraOverride));
+ if (SrcExt.empty() == false && Sources.SetExts(SrcExt) == false)
+ return _error->Error(_("Source extension list is too long"));
+ if (_error->PendingError() == true)
+ return _error->Error(_("Error processing directory %s"),BaseDir.c_str());
+
+ Sources.PathPrefix = PathPrefix;
+ Sources.DirStrip = ArchiveDir;
+ Sources.InternalPrefix = flCombine(ArchiveDir,InternalPrefix);
+
+ Sources.DeLinkLimit = DeLinkLimit;
+ Sources.Stats.DeLinkBytes = Stats.DeLinkBytes;
+
+ if (_error->PendingError() == true)
+ return _error->Error(_("Error processing directory %s"),BaseDir.c_str());
+
+ c0out << ' ' << BaseDir << ":" << flush;
+
+ // Do recursive directory searching
+ if (FLFile.empty() == true)
+ {
+ if (Sources.RecursiveScan(flCombine(ArchiveDir,BaseDir))== false)
+ return false;
+ }
+ else
+ {
+ if (Sources.LoadFileList(ArchiveDir,FLFile) == false)
+ return false;
+ }
+ Sources.Output = 0; // Just in case
+
+ // Finish compressing
+ unsigned long long Size;
+ if (Comp.Finalize(Size) == false)
+ {
+ c0out << endl;
+ return _error->Error(_("Error processing directory %s"),BaseDir.c_str());
+ }
+
+ if (Size != 0)
+ c0out << " New "
+ << SizeToStr(Size) << "B ";
+ else
+ c0out << ' ';
+
+ struct timeval NewTime;
+ gettimeofday(&NewTime,0);
+ double Delta = NewTime.tv_sec - StartTime.tv_sec +
+ (NewTime.tv_usec - StartTime.tv_usec)/1000000.0;
+
+ c0out << Sources.Stats.Packages << " pkgs in " <<
+ TimeToStr((long)Delta) << endl;
+
+ if(_config->FindB("APT::FTPArchive::ShowCacheMisses", false) == true)
+ c0out << " Misses in Cache: " << Sources.Stats.Misses << endl;
+
+ Stats.Add(Sources.Stats);
+ Stats.DeLinkBytes = Sources.Stats.DeLinkBytes;
+
+ return !_error->PendingError();
+}
+ /*}}}*/
+// PackageMap::GenContents - Actually generate a Contents file /*{{{*/
+// ---------------------------------------------------------------------
+/* This generates the contents file partially described by this object.
+ It searches the given iterator range for other package files that map
+ into this contents file and includes their data as well when building. */
+bool PackageMap::GenContents(Configuration &Setup,
+ vector<PackageMap>::iterator Begin,
+ vector<PackageMap>::iterator End,
+ unsigned long &Left)
+{
+ if (Contents.empty() == true)
+ return true;
+
+ if (Left == 0)
+ return true;
+
+ string ArchiveDir = Setup.FindDir("Dir::ArchiveDir");
+ string CacheDir = Setup.FindDir("Dir::CacheDir");
+ string OverrideDir = Setup.FindDir("Dir::OverrideDir");
+
+ struct timeval StartTime;
+ gettimeofday(&StartTime,0);
+
+ // Create a package writer object.
+ MultiCompress Comp(flCombine(ArchiveDir,this->Contents),
+ CntCompress,Permissions);
+ Comp.UpdateMTime = Setup.FindI("Default::ContentsAge",10)*24*60*60;
+ ContentsWriter Contents(&Comp.Input, "", Arch, IncludeArchAll);
+ if (PkgExt.empty() == false && Contents.SetExts(PkgExt) == false)
+ return _error->Error(_("Package extension list is too long"));
+ if (_error->PendingError() == true)
+ return false;
+
+ if (_error->PendingError() == true)
+ return false;
+
+ // Write the header out.
+ if (ContentsHead.empty() == false)
+ {
+ FileFd Head(flCombine(OverrideDir,ContentsHead),FileFd::ReadOnly);
+ if (_error->PendingError() == true)
+ return false;
+
+ unsigned long long Size = Head.Size();
+ unsigned char Buf[4096];
+ while (Size != 0)
+ {
+ unsigned long long ToRead = Size;
+ if (Size > sizeof(Buf))
+ ToRead = sizeof(Buf);
+
+ if (Head.Read(Buf,ToRead) == false)
+ return false;
+
+ if (Comp.Input.Write(Buf, ToRead) == false)
+ return _error->Errno("fwrite",_("Error writing header to contents file"));
+
+ Size -= ToRead;
+ }
+ }
+
+ /* Go over all the package file records and parse all the package
+ files associated with this contents file into one great big honking
+ memory structure, then dump the sorted version */
+ c0out << ' ' << this->Contents << ":" << flush;
+ for (vector<PackageMap>::iterator I = Begin; I != End; ++I)
+ {
+ if (I->Contents != this->Contents)
+ continue;
+
+ Contents.Prefix = ArchiveDir;
+ Contents.ReadyDB(flCombine(CacheDir,I->BinCacheDB));
+ Contents.ReadFromPkgs(flCombine(ArchiveDir,I->PkgFile),
+ I->PkgCompress);
+
+ I->ContentsDone = true;
+ }
+
+ Contents.Finish();
+
+ // Finish compressing
+ unsigned long long Size;
+ if (Comp.Finalize(Size) == false || _error->PendingError() == true)
+ {
+ c0out << endl;
+ return _error->Error(_("Error processing contents %s"),
+ this->Contents.c_str());
+ }
+
+ if (Size != 0)
+ {
+ c0out << " New " << SizeToStr(Size) << "B ";
+ if (Left > Size)
+ Left -= Size;
+ else
+ Left = 0;
+ }
+ else
+ c0out << ' ';
+
+ struct timeval NewTime;
+ gettimeofday(&NewTime,0);
+ double Delta = NewTime.tv_sec - StartTime.tv_sec +
+ (NewTime.tv_usec - StartTime.tv_usec)/1000000.0;
+
+ if(_config->FindB("APT::FTPArchive::ShowCacheMisses", false) == true)
+ c0out << " Misses in Cache: " << Contents.Stats.Misses<< endl;
+
+ c0out << Contents.Stats.Packages << " files " <<
+ SizeToStr(Contents.Stats.Bytes) << "B " <<
+ TimeToStr((long)Delta) << endl;
+
+ return true;
+}
+ /*}}}*/
+
+// LoadTree - Load a 'tree' section from the Generate Config /*{{{*/
+// ---------------------------------------------------------------------
+/* This populates the PkgList with all the possible permutations of the
+ section/arch lists. */
+static void LoadTree(vector<PackageMap> &PkgList, std::vector<TranslationWriter*> &TransList, Configuration &Setup)
+{
+ // Load the defaults
+ string DDir = Setup.Find("TreeDefault::Directory",
+ "$(DIST)/$(SECTION)/binary-$(ARCH)/");
+ string DSDir = Setup.Find("TreeDefault::SrcDirectory",
+ "$(DIST)/$(SECTION)/source/");
+ string DPkg = Setup.Find("TreeDefault::Packages",
+ "$(DIST)/$(SECTION)/binary-$(ARCH)/Packages");
+ string DTrans = Setup.Find("TreeDefault::Translation",
+ "$(DIST)/$(SECTION)/i18n/Translation-en");
+ string DIPrfx = Setup.Find("TreeDefault::InternalPrefix",
+ "$(DIST)/$(SECTION)/");
+ string DContents = Setup.Find("TreeDefault::Contents",
+ "$(DIST)/$(SECTION)/Contents-$(ARCH)");
+ string DContentsH = Setup.Find("TreeDefault::Contents::Header","");
+ string DBCache = Setup.Find("TreeDefault::BinCacheDB",
+ "packages-$(ARCH).db");
+ string SrcDBCache = Setup.Find("TreeDefault::SrcCacheDB",
+ "sources-$(SECTION).db");
+ string DSources = Setup.Find("TreeDefault::Sources",
+ "$(DIST)/$(SECTION)/source/Sources");
+ string DFLFile = Setup.Find("TreeDefault::FileList", "");
+ string DSFLFile = Setup.Find("TreeDefault::SourceFileList", "");
+
+ mode_t const Permissions = Setup.FindI("Default::FileMode",0644);
+
+ bool const LongDescription = Setup.FindB("Default::LongDescription",
+ _config->FindB("APT::FTPArchive::LongDescription", true));
+ string const TranslationCompress = Setup.Find("Default::Translation::Compress",". gzip").c_str();
+ bool const ConfIncludeArchAllExists = _config->Exists("APT::FTPArchive::IncludeArchitectureAll");
+ bool const ConfIncludeArchAll = _config->FindB("APT::FTPArchive::IncludeArchitectureAll", true);
+
+ // Process 'tree' type sections
+ const Configuration::Item *Top = Setup.Tree("tree");
+ for (Top = (Top == 0?0:Top->Child); Top != 0;)
+ {
+ Configuration Block(Top);
+ string Dist = Top->Tag;
+
+ // Parse the sections
+ string Tmp = Block.Find("Sections");
+ const char *Sections = Tmp.c_str();
+ string Section;
+ while (ParseQuoteWord(Sections,Section) == true)
+ {
+ struct SubstVar Vars[] = {{"$(DIST)",&Dist},
+ {"$(SECTION)",&Section},
+ {"$(ARCH)",nullptr},
+ {nullptr, nullptr}};
+ mode_t const Perms = Block.FindI("FileMode", Permissions);
+ bool const LongDesc = Block.FindB("LongDescription", LongDescription);
+ TranslationWriter *TransWriter = nullptr;
+
+ std::string Tmp2 = Block.Find("Architectures");
+ std::transform(Tmp2.begin(), Tmp2.end(), Tmp2.begin(), ::tolower);
+ std::vector<std::string> const Archs = VectorizeString(Tmp2, ' ');
+ bool IncludeArchAll;
+ if (ConfIncludeArchAllExists == true)
+ IncludeArchAll = ConfIncludeArchAll;
+ else
+ IncludeArchAll = std::find(Archs.begin(), Archs.end(), "all") == Archs.end();
+ for (auto const& Arch: Archs)
+ {
+ if (Arch.empty()) continue;
+ Vars[2].Contents = &Arch;
+ PackageMap Itm;
+ Itm.Permissions = Perms;
+ Itm.BinOverride = SubstVar(Block.Find("BinOverride"),Vars);
+ Itm.InternalPrefix = SubstVar(Block.Find("InternalPrefix",DIPrfx.c_str()),Vars);
+
+ if (Arch == "source")
+ {
+ Itm.SrcOverride = SubstVar(Block.Find("SrcOverride"),Vars);
+ Itm.BaseDir = SubstVar(Block.Find("SrcDirectory",DSDir.c_str()),Vars);
+ Itm.SrcFile = SubstVar(Block.Find("Sources",DSources.c_str()),Vars);
+ Itm.Tag = SubstVar("$(DIST)/$(SECTION)/source",Vars);
+ Itm.FLFile = SubstVar(Block.Find("SourceFileList",DSFLFile.c_str()),Vars);
+ Itm.SrcExtraOverride = SubstVar(Block.Find("SrcExtraOverride"),Vars);
+ Itm.SrcCacheDB = SubstVar(Block.Find("SrcCacheDB",SrcDBCache.c_str()),Vars);
+ }
+ else
+ {
+ Itm.BinCacheDB = SubstVar(Block.Find("BinCacheDB",DBCache.c_str()),Vars);
+ Itm.BaseDir = SubstVar(Block.Find("Directory",DDir.c_str()),Vars);
+ Itm.PkgFile = SubstVar(Block.Find("Packages",DPkg.c_str()),Vars);
+ Itm.Tag = SubstVar("$(DIST)/$(SECTION)/$(ARCH)",Vars);
+ Itm.Arch = Arch;
+ Itm.IncludeArchAll = IncludeArchAll;
+ Itm.LongDesc = LongDesc;
+ if (TransWriter == NULL && DTrans.empty() == false && LongDesc == false && DTrans != "/dev/null")
+ {
+ string const TranslationFile = flCombine(Setup.FindDir("Dir::ArchiveDir"),
+ SubstVar(Block.Find("Translation", DTrans.c_str()), Vars));
+ string const TransCompress = Block.Find("Translation::Compress", TranslationCompress);
+ TransWriter = new TranslationWriter(TranslationFile, TransCompress, Perms);
+ TransList.push_back(TransWriter);
+ }
+ Itm.TransWriter = TransWriter;
+ Itm.Contents = SubstVar(Block.Find("Contents",DContents.c_str()),Vars);
+ Itm.ContentsHead = SubstVar(Block.Find("Contents::Header",DContentsH.c_str()),Vars);
+ Itm.FLFile = SubstVar(Block.Find("FileList",DFLFile.c_str()),Vars);
+ Itm.ExtraOverride = SubstVar(Block.Find("ExtraOverride"),Vars);
+ }
+
+ Itm.GetGeneral(Setup,Block);
+ PkgList.push_back(Itm);
+ }
+ }
+
+ Top = Top->Next;
+ }
+}
+ /*}}}*/
+static void UnloadTree(std::vector<TranslationWriter*> const &Trans) /*{{{*/
+{
+ for (std::vector<TranslationWriter*>::const_reverse_iterator T = Trans.rbegin(); T != Trans.rend(); ++T)
+ delete *T;
+}
+ /*}}}*/
+// LoadBinDir - Load a 'bindirectory' section from the Generate Config /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static void LoadBinDir(vector<PackageMap> &PkgList,Configuration &Setup)
+{
+ mode_t const Permissions = Setup.FindI("Default::FileMode",0644);
+
+ // Process 'bindirectory' type sections
+ const Configuration::Item *Top = Setup.Tree("bindirectory");
+ for (Top = (Top == 0?0:Top->Child); Top != 0;)
+ {
+ Configuration Block(Top);
+
+ PackageMap Itm;
+ Itm.PkgFile = Block.Find("Packages");
+ Itm.SrcFile = Block.Find("Sources");
+ Itm.BinCacheDB = Block.Find("BinCacheDB");
+ Itm.SrcCacheDB = Block.Find("SrcCacheDB");
+ Itm.BinOverride = Block.Find("BinOverride");
+ Itm.ExtraOverride = Block.Find("ExtraOverride");
+ Itm.SrcExtraOverride = Block.Find("SrcExtraOverride");
+ Itm.SrcOverride = Block.Find("SrcOverride");
+ Itm.BaseDir = Top->Tag;
+ Itm.FLFile = Block.Find("FileList");
+ Itm.InternalPrefix = Block.Find("InternalPrefix",Top->Tag.c_str());
+ Itm.Contents = Block.Find("Contents");
+ Itm.ContentsHead = Block.Find("Contents::Header");
+ Itm.Permissions = Block.FindI("FileMode", Permissions);
+
+ Itm.GetGeneral(Setup,Block);
+ PkgList.push_back(Itm);
+
+ Top = Top->Next;
+ }
+}
+ /*}}}*/
+
+static bool ShowHelp(CommandLine &) /*{{{*/
+{
+ std::cout <<
+ _("Usage: apt-ftparchive [options] command\n"
+ "Commands: packages binarypath [overridefile [pathprefix]]\n"
+ " sources srcpath [overridefile [pathprefix]]\n"
+ " contents path\n"
+ " release path\n"
+ " generate config [groups]\n"
+ " clean config\n"
+ "\n"
+ "apt-ftparchive generates index files for Debian archives. It supports\n"
+ "many styles of generation from fully automated to functional replacements\n"
+ "for dpkg-scanpackages and dpkg-scansources\n"
+ "\n"
+ "apt-ftparchive generates Package files from a tree of .debs. The\n"
+ "Package file contains the contents of all the control fields from\n"
+ "each package as well as the MD5 hash and filesize. An override file\n"
+ "is supported to force the value of Priority and Section.\n"
+ "\n"
+ "Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+ "The --source-override option can be used to specify a src override file\n"
+ "\n"
+ "The 'packages' and 'sources' command should be run in the root of the\n"
+ "tree. BinaryPath should point to the base of the recursive search and \n"
+ "override file should contain the override flags. Pathprefix is\n"
+ "appended to the filename fields if present. Example usage from the \n"
+ "Debian archive:\n"
+ " apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+ " dists/potato/main/binary-i386/Packages\n"
+ "\n"
+ "Options:\n"
+ " -h This help text\n"
+ " --md5 Control MD5 generation\n"
+ " -s=? Source override file\n"
+ " -q Quiet\n"
+ " -d=? Select the optional caching database\n"
+ " --no-delink Enable delinking debug mode\n"
+ " --contents Control contents file generation\n"
+ " -c=? Read this configuration file\n"
+ " -o=? Set an arbitrary configuration option") << endl;
+ return true;
+}
+ /*}}}*/
+// SimpleGenPackages - Generate a Packages file for a directory tree /*{{{*/
+// ---------------------------------------------------------------------
+/* This emulates dpkg-scanpackages's command line interface. 'mostly' */
+static bool SimpleGenPackages(CommandLine &CmdL)
+{
+ if (CmdL.FileSize() < 2)
+ return ShowHelp(CmdL);
+
+ string Override;
+ if (CmdL.FileSize() >= 3)
+ Override = CmdL.FileList[2];
+
+ // Create a package writer object.
+ PackagesWriter Packages(NULL, NULL, _config->Find("APT::FTPArchive::DB"),
+ Override, "", _config->Find("APT::FTPArchive::Architecture"),
+ _config->FindB("APT::FTPArchive::IncludeArchitectureAll", true));
+ if (_error->PendingError() == true)
+ return false;
+
+ if (CmdL.FileSize() >= 4)
+ Packages.PathPrefix = CmdL.FileList[3];
+
+ // Do recursive directory searching
+ if (Packages.RecursiveScan(CmdL.FileList[1]) == false)
+ return false;
+
+ // Give some stats if asked for
+ if(_config->FindB("APT::FTPArchive::ShowCacheMisses", false) == true)
+ c0out << " Misses in Cache: " << Packages.Stats.Misses<< endl;
+
+ return true;
+}
+ /*}}}*/
+// SimpleGenContents - Generate a Contents listing /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static bool SimpleGenContents(CommandLine &CmdL)
+{
+ if (CmdL.FileSize() < 2)
+ return ShowHelp(CmdL);
+
+ // Create a package writer object.
+ ContentsWriter Contents(NULL, _config->Find("APT::FTPArchive::DB"), _config->Find("APT::FTPArchive::Architecture"));
+ if (_error->PendingError() == true)
+ return false;
+
+ // Do recursive directory searching
+ if (Contents.RecursiveScan(CmdL.FileList[1]) == false)
+ return false;
+
+ Contents.Finish();
+
+ return true;
+}
+ /*}}}*/
+// SimpleGenSources - Generate a Sources file for a directory tree /*{{{*/
+// ---------------------------------------------------------------------
+/* This emulates dpkg-scanpackages's command line interface. 'mostly' */
+static bool SimpleGenSources(CommandLine &CmdL)
+{
+ if (CmdL.FileSize() < 2)
+ return ShowHelp(CmdL);
+
+ string Override;
+ if (CmdL.FileSize() >= 3)
+ Override = CmdL.FileList[2];
+
+ string SOverride;
+ if (Override.empty() == false)
+ SOverride = Override + ".src";
+
+ SOverride = _config->Find("APT::FTPArchive::SourceOverride",
+ SOverride.c_str());
+
+ // Create a package writer object.
+ SourcesWriter Sources(NULL, _config->Find("APT::FTPArchive::DB"),Override,SOverride);
+ if (_error->PendingError() == true)
+ return false;
+
+ if (CmdL.FileSize() >= 4)
+ Sources.PathPrefix = CmdL.FileList[3];
+
+ // Do recursive directory searching
+ if (Sources.RecursiveScan(CmdL.FileList[1]) == false)
+ return false;
+
+ // Give some stats if asked for
+ if(_config->FindB("APT::FTPArchive::ShowCacheMisses", false) == true)
+ c0out << " Misses in Cache: " << Sources.Stats.Misses<< endl;
+
+ return true;
+}
+ /*}}}*/
+// SimpleGenRelease - Generate a Release file for a directory tree /*{{{*/
+// ---------------------------------------------------------------------
+static bool SimpleGenRelease(CommandLine &CmdL)
+{
+ if (CmdL.FileSize() < 2)
+ return ShowHelp(CmdL);
+
+ string Dir = CmdL.FileList[1];
+
+ ReleaseWriter Release(NULL, "");
+ Release.DirStrip = Dir;
+
+ if (_error->PendingError() == true)
+ return false;
+
+ if (Release.RecursiveScan(Dir) == false)
+ return false;
+
+ Release.Finish();
+
+ return true;
+}
+
+ /*}}}*/
+// DoGeneratePackagesAndSources - Helper for Generate /*{{{*/
+// ---------------------------------------------------------------------
+static bool DoGeneratePackagesAndSources(Configuration &Setup,
+ vector<PackageMap> &PkgList,
+ struct CacheDB::Stats &SrcStats,
+ struct CacheDB::Stats &Stats,
+ CommandLine &CmdL)
+{
+ if (CmdL.FileSize() <= 2)
+ {
+ for (vector<PackageMap>::iterator I = PkgList.begin(); I != PkgList.end(); ++I)
+ if (I->GenPackages(Setup,Stats) == false)
+ _error->DumpErrors();
+ for (vector<PackageMap>::iterator I = PkgList.begin(); I != PkgList.end(); ++I)
+ if (I->GenSources(Setup,SrcStats) == false)
+ _error->DumpErrors();
+ }
+ else
+ {
+ // Make a choice list out of the package list..
+ RxChoiceList *List = new RxChoiceList[2*PkgList.size()+1];
+ RxChoiceList *End = List;
+ for (vector<PackageMap>::iterator I = PkgList.begin(); I != PkgList.end(); ++I)
+ {
+ End->UserData = &(*I);
+ End->Str = I->BaseDir.c_str();
+ End++;
+
+ End->UserData = &(*I);
+ End->Str = I->Tag.c_str();
+ End++;
+ }
+ End->Str = 0;
+
+ // Regex it
+ if (RegexChoice(List,CmdL.FileList + 2,CmdL.FileList + CmdL.FileSize()) == 0)
+ {
+ delete [] List;
+ return _error->Error(_("No selections matched"));
+ }
+ _error->DumpErrors();
+
+ // Do the generation for Packages
+ for (End = List; End->Str != 0; ++End)
+ {
+ if (End->Hit == false)
+ continue;
+
+ PackageMap * const I = static_cast<PackageMap *>(End->UserData);
+ if (I->PkgDone == true)
+ continue;
+ if (I->GenPackages(Setup,Stats) == false)
+ _error->DumpErrors();
+ }
+
+ // Do the generation for Sources
+ for (End = List; End->Str != 0; ++End)
+ {
+ if (End->Hit == false)
+ continue;
+
+ PackageMap * const I = static_cast<PackageMap *>(End->UserData);
+ if (I->SrcDone == true)
+ continue;
+ if (I->GenSources(Setup,SrcStats) == false)
+ _error->DumpErrors();
+ }
+
+ delete [] List;
+ }
+ return true;
+}
+
+ /*}}}*/
+// DoGenerateContents - Helper for Generate to generate the Contents /*{{{*/
+// ---------------------------------------------------------------------
+static bool DoGenerateContents(Configuration &Setup,
+ vector<PackageMap> &PkgList,
+ CommandLine &CmdL)
+{
+ c1out << "Packages done, Starting contents." << endl;
+
+ // Sort the contents file list by date
+ string ArchiveDir = Setup.FindDir("Dir::ArchiveDir");
+ for (vector<PackageMap>::iterator I = PkgList.begin(); I != PkgList.end(); ++I)
+ {
+ struct stat A;
+ if (MultiCompress::GetStat(flCombine(ArchiveDir,I->Contents),
+ I->CntCompress,A) == false)
+ time(&I->ContentsMTime);
+ else
+ I->ContentsMTime = A.st_mtime;
+ }
+ stable_sort(PkgList.begin(),PkgList.end(),PackageMap::ContentsCompare());
+
+ /* Now for Contents.. The process here is to do a make-like dependency
+ check. Each contents file is verified to be newer than the package files
+ that describe the debs it indexes. Since the package files contain
+ hashes of the .debs this means they have not changed either so the
+ contents must be up to date. */
+ unsigned long MaxContentsChange = Setup.FindI("Default::MaxContentsChange",
+ std::numeric_limits<unsigned int>::max())*1024;
+ for (vector<PackageMap>::iterator I = PkgList.begin(); I != PkgList.end(); ++I)
+ {
+ // This record is not relevant
+ if (I->ContentsDone == true ||
+ I->Contents.empty() == true)
+ continue;
+
+ // Do not do everything if the user specified sections.
+ if (CmdL.FileSize() > 2 && I->PkgDone == false)
+ continue;
+
+ struct stat A,B;
+ if (MultiCompress::GetStat(flCombine(ArchiveDir,I->Contents),I->CntCompress,A) == true)
+ {
+ if (MultiCompress::GetStat(flCombine(ArchiveDir,I->PkgFile),I->PkgCompress,B) == false)
+ {
+ _error->Warning(_("Some files are missing in the package file group `%s'"),I->PkgFile.c_str());
+ continue;
+ }
+
+ if (A.st_mtime > B.st_mtime)
+ continue;
+ }
+
+ if (I->GenContents(Setup,PkgList.begin(),PkgList.end(),
+ MaxContentsChange) == false)
+ _error->DumpErrors();
+
+ // Hit the limit?
+ if (MaxContentsChange == 0)
+ {
+ c1out << "Hit contents update byte limit" << endl;
+ break;
+ }
+ }
+
+ return true;
+}
+
+ /*}}}*/
+// Generate - Full generate, using a config file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static bool Generate(CommandLine &CmdL)
+{
+ struct CacheDB::Stats SrcStats;
+ if (CmdL.FileSize() < 2)
+ return ShowHelp(CmdL);
+
+ struct timeval StartTime;
+ gettimeofday(&StartTime,0);
+ struct CacheDB::Stats Stats;
+
+ // Read the configuration file.
+ Configuration Setup;
+ if (ReadConfigFile(Setup,CmdL.FileList[1],true) == false)
+ return false;
+
+ vector<PackageMap> PkgList;
+ std::vector<TranslationWriter*> TransList;
+ LoadTree(PkgList, TransList, Setup);
+ LoadBinDir(PkgList,Setup);
+
+ // Sort by cache DB to improve IO locality.
+ stable_sort(PkgList.begin(),PkgList.end(),PackageMap::DBCompare());
+ stable_sort(PkgList.begin(),PkgList.end(),PackageMap::SrcDBCompare());
+
+ // Generate packages
+ if (_config->FindB("APT::FTPArchive::ContentsOnly", false) == false)
+ {
+ if(DoGeneratePackagesAndSources(Setup, PkgList, SrcStats, Stats, CmdL) == false)
+ {
+ UnloadTree(TransList);
+ return false;
+ }
+ } else {
+ c1out << "Skipping Packages/Sources generation" << endl;
+ }
+
+ // do Contents if needed
+ if (_config->FindB("APT::FTPArchive::Contents", true) == true)
+ if (DoGenerateContents(Setup, PkgList, CmdL) == false)
+ {
+ UnloadTree(TransList);
+ return false;
+ }
+
+ struct timeval NewTime;
+ gettimeofday(&NewTime,0);
+ double Delta = NewTime.tv_sec - StartTime.tv_sec +
+ (NewTime.tv_usec - StartTime.tv_usec)/1000000.0;
+ c1out << "Done. " << SizeToStr(Stats.Bytes) << "B in " << Stats.Packages
+ << " archives. Took " << TimeToStr((long)Delta) << endl;
+
+ UnloadTree(TransList);
+ return true;
+}
+
+ /*}}}*/
+// Clean - Clean out the databases /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static bool Clean(CommandLine &CmdL)
+{
+ if (CmdL.FileSize() != 2)
+ return ShowHelp(CmdL);
+
+ // Read the configuration file.
+ Configuration Setup;
+ if (ReadConfigFile(Setup,CmdL.FileList[1],true) == false)
+ return false;
+ // we don't need translation creation here
+ Setup.Set("TreeDefault::Translation", "/dev/null");
+
+ vector<PackageMap> PkgList;
+ std::vector<TranslationWriter*> TransList;
+ LoadTree(PkgList, TransList, Setup);
+ LoadBinDir(PkgList,Setup);
+
+ // Sort by cache DB to improve IO locality.
+ stable_sort(PkgList.begin(),PkgList.end(),PackageMap::DBCompare());
+ stable_sort(PkgList.begin(),PkgList.end(),PackageMap::SrcDBCompare());
+
+ string CacheDir = Setup.FindDir("Dir::CacheDir");
+
+ for (vector<PackageMap>::iterator I = PkgList.begin(); I != PkgList.end(); )
+ {
+ if(I->BinCacheDB != "")
+ c0out << I->BinCacheDB << endl;
+ if(I->SrcCacheDB != "")
+ c0out << I->SrcCacheDB << endl;
+ CacheDB DB(flCombine(CacheDir,I->BinCacheDB));
+ CacheDB DB_SRC(flCombine(CacheDir,I->SrcCacheDB));
+ if (DB.Clean() == false)
+ _error->DumpErrors();
+ if (DB_SRC.Clean() == false)
+ _error->DumpErrors();
+
+ string CacheDB = I->BinCacheDB;
+ string SrcCacheDB = I->SrcCacheDB;
+ while(I != PkgList.end() &&
+ I->BinCacheDB == CacheDB &&
+ I->SrcCacheDB == SrcCacheDB)
+ ++I;
+ }
+
+
+ return true;
+}
+ /*}}}*/
+
+static std::vector<aptDispatchWithHelp> GetCommands() /*{{{*/
+{
+ return {
+ {"packages",&SimpleGenPackages, nullptr},
+ {"contents",&SimpleGenContents, nullptr},
+ {"sources",&SimpleGenSources, nullptr},
+ {"release",&SimpleGenRelease, nullptr},
+ {"generate",&Generate, nullptr},
+ {"clean",&Clean, nullptr},
+ {nullptr, nullptr, nullptr}
+ };
+}
+ /*}}}*/
+int main(int argc, const char *argv[]) /*{{{*/
+{
+ // Parse the command line and initialize the package library
+ CommandLine CmdL;
+ auto const Cmds = ParseCommandLine(CmdL, APT_CMD::APT_FTPARCHIVE, &_config, NULL, argc, argv, ShowHelp, &GetCommands);
+
+ _config->CndSet("quiet",0);
+ Quiet = _config->FindI("quiet",0);
+ InitOutput(clog.rdbuf());
+
+ return DispatchCommandLine(CmdL, Cmds);
+}
+ /*}}}*/
diff --git a/ftparchive/apt-ftparchive.h b/ftparchive/apt-ftparchive.h
new file mode 100644
index 000000000..240cf9ba7
--- /dev/null
+++ b/ftparchive/apt-ftparchive.h
@@ -0,0 +1,28 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: apt-ftparchive.h,v 1.3 2001/05/29 03:51:37 jgg Exp $
+/* ######################################################################
+
+ Writer
+
+ The file writer classes. These write various types of output, sources,
+ packages and contents.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef APT_FTPARCHIVE_H
+#define APT_FTPARCHIVE_H
+
+
+#include <fstream>
+
+using std::ostream;
+using std::ofstream;
+
+extern ostream c0out;
+extern ostream c1out;
+extern ostream c2out;
+extern ofstream devnull;
+extern unsigned Quiet;
+
+#endif
diff --git a/ftparchive/byhash.cc b/ftparchive/byhash.cc
new file mode 100644
index 000000000..354d089c3
--- /dev/null
+++ b/ftparchive/byhash.cc
@@ -0,0 +1,61 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ ByHash
+
+ ByHash helper functions
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include<algorithm>
+#include<string>
+
+#include <unistd.h>
+#include <sys/stat.h>
+
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/hashes.h>
+#include "byhash.h"
+
+// Delete all files in a directory except the most recent N ones
+void DeleteAllButMostRecent(std::string dir, int KeepFiles)
+{
+ struct Cmp {
+ bool operator() (const std::string& lhs, const std::string& rhs) {
+ struct stat buf_l, buf_r;
+ stat(lhs.c_str(), &buf_l);
+ stat(rhs.c_str(), &buf_r);
+ if (buf_l.st_mtim.tv_sec == buf_r.st_mtim.tv_sec)
+ return buf_l.st_mtim.tv_nsec < buf_r.st_mtim.tv_nsec;
+ return buf_l.st_mtim.tv_sec < buf_r.st_mtim.tv_sec;
+ }
+ };
+
+ if (!DirectoryExists(dir))
+ return;
+
+ auto files = GetListOfFilesInDir(dir, false);
+ std::sort(files.begin(), files.end(), Cmp());
+
+ for (auto I=files.begin(); I<files.end()-KeepFiles; ++I)
+ RemoveFile("DeleteAllButMostRecent", *I);
+}
+
+// Takes a input filename (e.g. binary-i386/Packages) and a hashstring
+// of the Input data and transforms it into a suitable by-hash filename
+std::string GenByHashFilename(std::string ByHashOutputFile, HashString const &h)
+{
+ std::string const ByHash = "/by-hash/" + h.HashType() + "/" + h.HashValue();
+ size_t trailing_slash = ByHashOutputFile.find_last_of("/");
+ if (trailing_slash == std::string::npos)
+ trailing_slash = 0;
+ ByHashOutputFile = ByHashOutputFile.replace(
+ trailing_slash,
+ ByHashOutputFile.substr(trailing_slash+1).size()+1,
+ ByHash);
+ return ByHashOutputFile;
+}
diff --git a/ftparchive/byhash.h b/ftparchive/byhash.h
new file mode 100644
index 000000000..9fbb479a7
--- /dev/null
+++ b/ftparchive/byhash.h
@@ -0,0 +1,25 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ ByHash
+
+ ByHash helper functions
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef BYHASH_H
+#define BYHASH_H
+
+#include <string>
+
+class HashString;
+
+// Delete all files in "dir" except for the number specified in "KeepFiles"
+// that are the most recent ones
+void DeleteAllButMostRecent(std::string dir, int KeepFiles);
+
+// takes a regular input filename
+std::string GenByHashFilename(std::string Input, HashString const &h);
+
+#endif
diff --git a/ftparchive/cachedb.cc b/ftparchive/cachedb.cc
new file mode 100644
index 000000000..868029abd
--- /dev/null
+++ b/ftparchive/cachedb.cc
@@ -0,0 +1,583 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: cachedb.cc,v 1.7 2004/05/08 19:41:01 mdz Exp $
+/* ######################################################################
+
+ CacheDB
+
+ Simple uniform interface to a cache database.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/md5.h>
+#include <apt-pkg/sha1.h>
+#include <apt-pkg/sha2.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/debfile.h>
+#include <apt-pkg/gpgv.h>
+#include <apt-pkg/hashes.h>
+
+#include <netinet/in.h> // htonl, etc
+#include <ctype.h>
+#include <stddef.h>
+#include <sys/stat.h>
+#include <strings.h>
+
+#include "cachedb.h"
+
+#include <apti18n.h>
+ /*}}}*/
+
+CacheDB::CacheDB(std::string const &DB)
+ : Dbp(0), Fd(NULL), DebFile(0)
+{
+ TmpKey[0]='\0';
+ ReadyDB(DB);
+}
+
+CacheDB::~CacheDB()
+{
+ ReadyDB();
+ delete DebFile;
+ CloseFile();
+}
+
+// CacheDB::ReadyDB - Ready the DB2 /*{{{*/
+// ---------------------------------------------------------------------
+/* This opens the DB2 file for caching package information */
+bool CacheDB::ReadyDB(std::string const &DB)
+{
+ int err;
+
+ ReadOnly = _config->FindB("APT::FTPArchive::ReadOnlyDB",false);
+
+ // Close the old DB
+ if (Dbp != 0)
+ Dbp->close(Dbp,0);
+
+ /* Check if the DB was disabled while running and deal with a
+ corrupted DB */
+ if (DBFailed() == true)
+ {
+ _error->Warning(_("DB was corrupted, file renamed to %s.old"),DBFile.c_str());
+ rename(DBFile.c_str(),(DBFile+".old").c_str());
+ }
+
+ DBLoaded = false;
+ Dbp = 0;
+ DBFile = std::string();
+
+ if (DB.empty())
+ return true;
+
+ db_create(&Dbp, NULL, 0);
+ if ((err = Dbp->open(Dbp, NULL, DB.c_str(), NULL, DB_BTREE,
+ (ReadOnly?DB_RDONLY:DB_CREATE),
+ 0644)) != 0)
+ {
+ if (err == DB_OLD_VERSION)
+ {
+ _error->Warning(_("DB is old, attempting to upgrade %s"),DBFile.c_str());
+ err = Dbp->upgrade(Dbp, DB.c_str(), 0);
+ if (!err)
+ err = Dbp->open(Dbp, NULL, DB.c_str(), NULL, DB_HASH,
+ (ReadOnly?DB_RDONLY:DB_CREATE), 0644);
+
+ }
+ // the database format has changed from DB_HASH to DB_BTREE in
+ // apt 0.6.44
+ if (err == EINVAL)
+ {
+ _error->Error(_("DB format is invalid. If you upgraded from an older version of apt, please remove and re-create the database."));
+ }
+ if (err)
+ {
+ Dbp = 0;
+ return _error->Error(_("Unable to open DB file %s: %s"),DB.c_str(), db_strerror(err));
+ }
+ }
+
+ DBFile = DB;
+ DBLoaded = true;
+ return true;
+}
+ /*}}}*/
+// CacheDB::OpenFile - Open the file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool CacheDB::OpenFile()
+{
+ // always close existing file first
+ CloseFile();
+
+ // open a new file
+ Fd = new FileFd(FileName,FileFd::ReadOnly);
+ if (_error->PendingError() == true)
+ {
+ CloseFile();
+ return false;
+ }
+ return true;
+}
+ /*}}}*/
+// CacheDB::CloseFile - Close the file /*{{{*/
+void CacheDB::CloseFile()
+{
+ if(Fd != NULL)
+ {
+ delete Fd;
+ Fd = NULL;
+ }
+}
+ /*}}}*/
+// CacheDB::OpenDebFile - Open a debfile /*{{{*/
+bool CacheDB::OpenDebFile()
+{
+ // always close existing file first
+ CloseDebFile();
+
+ // first open the fd, then pass it to the debDebFile
+ if(OpenFile() == false)
+ return false;
+ DebFile = new debDebFile(*Fd);
+ if (_error->PendingError() == true)
+ return false;
+ return true;
+}
+ /*}}}*/
+// CacheDB::CloseDebFile - Close a debfile again /*{{{*/
+void CacheDB::CloseDebFile()
+{
+ CloseFile();
+
+ if(DebFile != NULL)
+ {
+ delete DebFile;
+ DebFile = NULL;
+ }
+}
+ /*}}}*/
+// CacheDB::GetFileStat - Get stats from the file /*{{{*/
+// ---------------------------------------------------------------------
+/* This gets the size from the database if it's there. If we need
+ * to look at the file, also get the mtime from the file. */
+bool CacheDB::GetFileStat(bool const &doStat)
+{
+ if ((CurStat.Flags & FlSize) == FlSize && doStat == false)
+ return true;
+
+ /* Get it from the file. */
+ if (OpenFile() == false)
+ return false;
+
+ // Stat the file
+ struct stat St;
+ if (fstat(Fd->Fd(),&St) != 0)
+ {
+ CloseFile();
+ return _error->Errno("fstat",
+ _("Failed to stat %s"),FileName.c_str());
+ }
+ CurStat.FileSize = St.st_size;
+ CurStat.mtime = htonl(St.st_mtime);
+ CurStat.Flags |= FlSize;
+
+ return true;
+}
+ /*}}}*/
+// CacheDB::GetCurStatCompatOldFormat /*{{{*/
+// ---------------------------------------------------------------------
+/* Read the old (32bit FileSize) StateStore format from disk */
+bool CacheDB::GetCurStatCompatOldFormat()
+{
+ InitQueryStats();
+ Data.data = &CurStatOldFormat;
+ Data.flags = DB_DBT_USERMEM;
+ Data.ulen = sizeof(CurStatOldFormat);
+ if (Get() == false)
+ {
+ CurStat.Flags = 0;
+ } else {
+ CurStat.Flags = CurStatOldFormat.Flags;
+ CurStat.mtime = CurStatOldFormat.mtime;
+ CurStat.FileSize = CurStatOldFormat.FileSize;
+ memcpy(CurStat.MD5, CurStatOldFormat.MD5, sizeof(CurStat.MD5));
+ memcpy(CurStat.SHA1, CurStatOldFormat.SHA1, sizeof(CurStat.SHA1));
+ memcpy(CurStat.SHA256, CurStatOldFormat.SHA256, sizeof(CurStat.SHA256));
+ }
+ return true;
+}
+ /*}}}*/
+// CacheDB::GetCurStatCompatOldFormat /*{{{*/
+// ---------------------------------------------------------------------
+/* Read the new (64bit FileSize) StateStore format from disk */
+bool CacheDB::GetCurStatCompatNewFormat()
+{
+ InitQueryStats();
+ Data.data = &CurStat;
+ Data.flags = DB_DBT_USERMEM;
+ Data.ulen = sizeof(CurStat);
+ if (Get() == false)
+ {
+ CurStat.Flags = 0;
+ }
+ return true;
+}
+ /*}}}*/
+// CacheDB::GetCurStat - Set the CurStat variable. /*{{{*/
+// ---------------------------------------------------------------------
+/* Sets the CurStat variable. Either to 0 if no database is used
+ * or to the value in the database if one is used */
+bool CacheDB::GetCurStat()
+{
+ memset(&CurStat,0,sizeof(CurStat));
+
+ if (DBLoaded)
+ {
+ // do a first query to just get the size of the data on disk
+ InitQueryStats();
+ Data.data = &CurStat;
+ Data.flags = DB_DBT_USERMEM;
+ Data.ulen = 0;
+ Get();
+
+ if (Data.size == 0)
+ {
+ // nothing needs to be done, we just have not data for this deb
+ }
+ // check if the record is written in the old format (32bit filesize)
+ else if(Data.size == sizeof(CurStatOldFormat))
+ {
+ GetCurStatCompatOldFormat();
+ }
+ else if(Data.size == sizeof(CurStat))
+ {
+ GetCurStatCompatNewFormat();
+ } else {
+ return _error->Error("Cache record size mismatch (%ul)", Data.size);
+ }
+
+ CurStat.Flags = ntohl(CurStat.Flags);
+ CurStat.FileSize = ntohl(CurStat.FileSize);
+ }
+ return true;
+}
+ /*}}}*/
+// CacheDB::GetFileInfo - Get all the info about the file /*{{{*/
+// ---------------------------------------------------------------------
+bool CacheDB::GetFileInfo(std::string const &FileName, bool const &DoControl, bool const &DoContents,
+ bool const &GenContentsOnly, bool const DoSource, unsigned int const DoHashes,
+ bool const &checkMtime)
+{
+ this->FileName = FileName;
+
+ if (GetCurStat() == false)
+ return false;
+ OldStat = CurStat;
+
+ if (GetFileStat(checkMtime) == false)
+ return false;
+
+ /* if mtime changed, update CurStat from disk */
+ if (checkMtime == true && OldStat.mtime != CurStat.mtime)
+ CurStat.Flags = FlSize;
+
+ Stats.Bytes += CurStat.FileSize;
+ ++Stats.Packages;
+
+ if ((DoControl && LoadControl() == false)
+ || (DoContents && LoadContents(GenContentsOnly) == false)
+ || (DoSource && LoadSource() == false)
+ || (DoHashes != 0 && GetHashes(false, DoHashes) == false)
+ )
+ {
+ return false;
+ }
+
+ return true;
+}
+ /*}}}*/
+bool CacheDB::LoadSource() /*{{{*/
+{
+ // Try to read the control information out of the DB.
+ if ((CurStat.Flags & FlSource) == FlSource)
+ {
+ // Lookup the control information
+ InitQuerySource();
+ if (Get() == true && Dsc.TakeDsc(Data.data, Data.size) == true)
+ {
+ return true;
+ }
+ CurStat.Flags &= ~FlSource;
+ }
+ if (OpenFile() == false)
+ return false;
+
+ Stats.Misses++;
+ if (Dsc.Read(FileName) == false)
+ return false;
+
+ if (Dsc.Length == 0)
+ return _error->Error(_("Failed to read .dsc"));
+
+ // Write back the control information
+ InitQuerySource();
+ if (Put(Dsc.Data.c_str(), Dsc.Length) == true)
+ CurStat.Flags |= FlSource;
+
+ return true;
+}
+ /*}}}*/
+// CacheDB::LoadControl - Load Control information /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool CacheDB::LoadControl()
+{
+ // Try to read the control information out of the DB.
+ if ((CurStat.Flags & FlControl) == FlControl)
+ {
+ // Lookup the control information
+ InitQueryControl();
+ if (Get() == true && Control.TakeControl(Data.data,Data.size) == true)
+ return true;
+ CurStat.Flags &= ~FlControl;
+ }
+
+ if(OpenDebFile() == false)
+ return false;
+
+ Stats.Misses++;
+ if (Control.Read(*DebFile) == false)
+ return false;
+
+ if (Control.Control == 0)
+ return _error->Error(_("Archive has no control record"));
+
+ // Write back the control information
+ InitQueryControl();
+ if (Put(Control.Control,Control.Length) == true)
+ CurStat.Flags |= FlControl;
+ return true;
+}
+ /*}}}*/
+// CacheDB::LoadContents - Load the File Listing /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool CacheDB::LoadContents(bool const &GenOnly)
+{
+ // Try to read the control information out of the DB.
+ if ((CurStat.Flags & FlContents) == FlContents)
+ {
+ if (GenOnly == true)
+ return true;
+
+ // Lookup the contents information
+ InitQueryContent();
+ if (Get() == true)
+ {
+ if (Contents.TakeContents(Data.data,Data.size) == true)
+ return true;
+ }
+
+ CurStat.Flags &= ~FlContents;
+ }
+
+ if(OpenDebFile() == false)
+ return false;
+
+ Stats.Misses++;
+ if (Contents.Read(*DebFile) == false)
+ return false;
+
+ // Write back the control information
+ InitQueryContent();
+ if (Put(Contents.Data,Contents.CurSize) == true)
+ CurStat.Flags |= FlContents;
+ return true;
+}
+ /*}}}*/
+// CacheDB::GetHashes - Get the hashs /*{{{*/
+static std::string bytes2hex(uint8_t *bytes, size_t length) {
+ char buf[3];
+ std::string space;
+
+ space.reserve(length*2 + 1);
+ for (size_t i = 0; i < length; i++) {
+ snprintf(buf, sizeof(buf), "%02x", bytes[i]);
+ space.append(buf);
+ }
+ return space;
+}
+
+static inline unsigned char xdig2num(char const &dig) {
+ if (isdigit(dig)) return dig - '0';
+ if ('a' <= dig && dig <= 'f') return dig - 'a' + 10;
+ if ('A' <= dig && dig <= 'F') return dig - 'A' + 10;
+ return 0;
+}
+
+static void hex2bytes(uint8_t *bytes, const char *hex, int length) {
+ while (length-- > 0) {
+ *bytes = 0;
+ if (isxdigit(hex[0]) && isxdigit(hex[1])) {
+ *bytes = xdig2num(hex[0]) * 16 + xdig2num(hex[1]);
+ hex += 2;
+ }
+ bytes++;
+ }
+}
+bool CacheDB::GetHashes(bool const GenOnly, unsigned int const DoHashes)
+{
+ unsigned int notCachedHashes = 0;
+ if ((CurStat.Flags & FlMD5) != FlMD5)
+ {
+ notCachedHashes = notCachedHashes | Hashes::MD5SUM;
+ }
+ if ((CurStat.Flags & FlSHA1) != FlSHA1)
+ {
+ notCachedHashes = notCachedHashes | Hashes::SHA1SUM;
+ }
+ if ((CurStat.Flags & FlSHA256) != FlSHA256)
+ {
+ notCachedHashes = notCachedHashes | Hashes::SHA256SUM;
+ }
+ if ((CurStat.Flags & FlSHA512) != FlSHA512)
+ {
+ notCachedHashes = notCachedHashes | Hashes::SHA512SUM;
+ }
+ unsigned int FlHashes = DoHashes & notCachedHashes;
+ HashesList.clear();
+
+ if (FlHashes != 0)
+ {
+ if (OpenFile() == false)
+ return false;
+
+ Hashes hashes(FlHashes);
+ if (Fd->Seek(0) == false || hashes.AddFD(*Fd, CurStat.FileSize) == false)
+ return false;
+
+ HashStringList hl = hashes.GetHashStringList();
+ for (HashStringList::const_iterator hs = hl.begin(); hs != hl.end(); ++hs)
+ {
+ HashesList.push_back(*hs);
+ if (strcasecmp(hs->HashType().c_str(), "SHA512") == 0)
+ {
+ Stats.SHA512Bytes += CurStat.FileSize;
+ hex2bytes(CurStat.SHA512, hs->HashValue().data(), sizeof(CurStat.SHA512));
+ CurStat.Flags |= FlSHA512;
+ }
+ else if (strcasecmp(hs->HashType().c_str(), "SHA256") == 0)
+ {
+ Stats.SHA256Bytes += CurStat.FileSize;
+ hex2bytes(CurStat.SHA256, hs->HashValue().data(), sizeof(CurStat.SHA256));
+ CurStat.Flags |= FlSHA256;
+ }
+ else if (strcasecmp(hs->HashType().c_str(), "SHA1") == 0)
+ {
+ Stats.SHA1Bytes += CurStat.FileSize;
+ hex2bytes(CurStat.SHA1, hs->HashValue().data(), sizeof(CurStat.SHA1));
+ CurStat.Flags |= FlSHA1;
+ }
+ else if (strcasecmp(hs->HashType().c_str(), "MD5Sum") == 0)
+ {
+ Stats.MD5Bytes += CurStat.FileSize;
+ hex2bytes(CurStat.MD5, hs->HashValue().data(), sizeof(CurStat.MD5));
+ CurStat.Flags |= FlMD5;
+ }
+ else if (strcasecmp(hs->HashType().c_str(), "Checksum-FileSize") == 0)
+ {
+ // we store it in a different field already
+ }
+ else
+ return _error->Error("Got unknown unrequested hashtype %s", hs->HashType().c_str());
+ }
+ }
+ if (GenOnly == true)
+ return true;
+
+ bool ret = true;
+#define PUSH_BACK_HASH(FLAG, TYPE, VALUE) \
+ if ((CurStat.Flags & FLAG) == FLAG) \
+ ret &= HashesList.push_back(HashString(TYPE, bytes2hex(VALUE, sizeof(VALUE))));
+ PUSH_BACK_HASH(FlMD5, "MD5Sum", CurStat.MD5);
+ PUSH_BACK_HASH(FlSHA1, "SHA1", CurStat.SHA1);
+ PUSH_BACK_HASH(FlSHA256, "SHA256", CurStat.SHA256);
+ PUSH_BACK_HASH(FlSHA512, "SHA512", CurStat.SHA512);
+ return ret;
+}
+ /*}}}*/
+// CacheDB::Finish - Write back the cache structure /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool CacheDB::Finish()
+{
+ // Optimize away some writes.
+ if (CurStat.Flags == OldStat.Flags &&
+ CurStat.mtime == OldStat.mtime)
+ return true;
+
+ // Write the stat information
+ CurStat.Flags = htonl(CurStat.Flags);
+ CurStat.FileSize = htonl(CurStat.FileSize);
+ InitQueryStats();
+ Put(&CurStat,sizeof(CurStat));
+ CurStat.Flags = ntohl(CurStat.Flags);
+ CurStat.FileSize = ntohl(CurStat.FileSize);
+
+ return true;
+}
+ /*}}}*/
+// CacheDB::Clean - Clean the Database /*{{{*/
+// ---------------------------------------------------------------------
+/* Tidy the database by removing files that no longer exist at all. */
+bool CacheDB::Clean()
+{
+ if (DBLoaded == false)
+ return true;
+
+ /* I'm not sure what VERSION_MINOR should be here.. 2.4.14 certainly
+ needs the lower one and 2.7.7 needs the upper.. */
+ DBC *Cursor;
+ if ((errno = Dbp->cursor(Dbp, NULL, &Cursor, 0)) != 0)
+ return _error->Error(_("Unable to get a cursor"));
+
+ DBT Key;
+ DBT Data;
+ memset(&Key,0,sizeof(Key));
+ memset(&Data,0,sizeof(Data));
+ while ((errno = Cursor->c_get(Cursor,&Key,&Data,DB_NEXT)) == 0)
+ {
+ const char *Colon = (char*)memrchr(Key.data, ':', Key.size);
+ if (Colon)
+ {
+ if (stringcmp(Colon + 1, (char *)Key.data+Key.size,"st") == 0 ||
+ stringcmp(Colon + 1, (char *)Key.data+Key.size,"cl") == 0 ||
+ stringcmp(Colon + 1, (char *)Key.data+Key.size,"cs") == 0 ||
+ stringcmp(Colon + 1, (char *)Key.data+Key.size,"cn") == 0)
+ {
+ std::string FileName = std::string((const char *)Key.data,Colon);
+ if (FileExists(FileName) == true) {
+ continue;
+ }
+ }
+ }
+ Cursor->c_del(Cursor,0);
+ }
+ int res = Dbp->compact(Dbp, NULL, NULL, NULL, NULL, DB_FREE_SPACE, NULL);
+ if (res < 0)
+ _error->Warning("compact failed with result %i", res);
+
+ if(_config->FindB("Debug::APT::FTPArchive::Clean", false) == true)
+ Dbp->stat_print(Dbp, 0);
+
+
+ return true;
+}
+ /*}}}*/
diff --git a/ftparchive/cachedb.h b/ftparchive/cachedb.h
new file mode 100644
index 000000000..417c25a9f
--- /dev/null
+++ b/ftparchive/cachedb.h
@@ -0,0 +1,196 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: cachedb.h,v 1.4 2004/05/08 19:41:01 mdz Exp $
+/* ######################################################################
+
+ CacheDB
+
+ Simple uniform interface to a cache database.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef CACHEDB_H
+#define CACHEDB_H
+
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/debfile.h>
+
+#include <db.h>
+#include <errno.h>
+#include <string>
+#include <string.h>
+#include <stdint.h>
+#include <stdio.h>
+
+#include "contents.h"
+#include "sources.h"
+
+class FileFd;
+
+
+class CacheDB
+{
+ protected:
+
+ // Database state/access
+ DBT Key;
+ DBT Data;
+ char TmpKey[600];
+ DB *Dbp;
+ bool DBLoaded;
+ bool ReadOnly;
+ std::string DBFile;
+
+ // Generate a key for the DB of a given type
+ void _InitQuery(const char *Type)
+ {
+ memset(&Key,0,sizeof(Key));
+ memset(&Data,0,sizeof(Data));
+ Key.data = TmpKey;
+ Key.size = snprintf(TmpKey,sizeof(TmpKey),"%s:%s",FileName.c_str(), Type);
+ }
+
+ void InitQueryStats() {
+ _InitQuery("st");
+ }
+ void InitQuerySource() {
+ _InitQuery("cs");
+ }
+ void InitQueryControl() {
+ _InitQuery("cl");
+ }
+ void InitQueryContent() {
+ _InitQuery("cn");
+ }
+
+ inline bool Get()
+ {
+ return Dbp->get(Dbp,0,&Key,&Data,0) == 0;
+ };
+ inline bool Put(const void *In,unsigned long const &Length)
+ {
+ if (ReadOnly == true)
+ return true;
+ Data.size = Length;
+ Data.data = (void *)In;
+ if (DBLoaded == true && (errno = Dbp->put(Dbp,0,&Key,&Data,0)) != 0)
+ {
+ DBLoaded = false;
+ return false;
+ }
+ return true;
+ }
+ bool OpenFile();
+ void CloseFile();
+
+ bool OpenDebFile();
+ void CloseDebFile();
+
+ // GetCurStat needs some compat code, see lp #1274466)
+ bool GetCurStatCompatOldFormat();
+ bool GetCurStatCompatNewFormat();
+ bool GetCurStat();
+
+ bool GetFileStat(bool const &doStat = false);
+ bool LoadControl();
+ bool LoadContents(bool const &GenOnly);
+ bool LoadSource();
+ bool GetHashes(bool const GenOnly, unsigned int const DoHashes);
+
+ // Stat info stored in the DB, Fixed types since it is written to disk.
+ enum FlagList {FlControl = (1<<0),FlMD5=(1<<1),FlContents=(1<<2),
+ FlSize=(1<<3), FlSHA1=(1<<4), FlSHA256=(1<<5),
+ FlSHA512=(1<<6), FlSource=(1<<7)
+ };
+
+ // the on-disk format changed (FileSize increased to 64bit) in
+ // commit 650faab0 which will lead to corruption with old caches
+ struct StatStoreOldFormat
+ {
+ uint32_t Flags;
+ uint32_t mtime;
+ uint32_t FileSize;
+ uint8_t MD5[16];
+ uint8_t SHA1[20];
+ uint8_t SHA256[32];
+ } CurStatOldFormat;
+
+ // WARNING: this struct is read/written to the DB so do not change the
+ // layout of the fields (see lp #1274466), only append to it
+ struct StatStore
+ {
+ uint32_t Flags;
+ uint32_t mtime;
+ uint64_t FileSize;
+ uint8_t MD5[16];
+ uint8_t SHA1[20];
+ uint8_t SHA256[32];
+ uint8_t SHA512[64];
+ } CurStat;
+ struct StatStore OldStat;
+
+ // 'set' state
+ std::string FileName;
+ FileFd *Fd;
+ debDebFile *DebFile;
+
+ public:
+
+ // Data collection helpers
+ debDebFile::MemControlExtract Control;
+ ContentsExtract Contents;
+ DscExtract Dsc;
+ HashStringList HashesList;
+
+ // Runtime statistics
+ struct Stats
+ {
+ double Bytes;
+ double MD5Bytes;
+ double SHA1Bytes;
+ double SHA256Bytes;
+ double SHA512Bytes;
+ unsigned long Packages;
+ unsigned long Misses;
+ unsigned long long DeLinkBytes;
+
+ inline void Add(const Stats &S) {
+ Bytes += S.Bytes;
+ MD5Bytes += S.MD5Bytes;
+ SHA1Bytes += S.SHA1Bytes;
+ SHA256Bytes += S.SHA256Bytes;
+ SHA512Bytes += S.SHA512Bytes;
+ Packages += S.Packages;
+ Misses += S.Misses;
+ DeLinkBytes += S.DeLinkBytes;
+ };
+ Stats() : Bytes(0), MD5Bytes(0), SHA1Bytes(0), SHA256Bytes(0),
+ SHA512Bytes(0),Packages(0), Misses(0), DeLinkBytes(0) {};
+ } Stats;
+
+ bool ReadyDB(std::string const &DB = "");
+ inline bool DBFailed() {return Dbp != 0 && DBLoaded == false;};
+ inline bool Loaded() {return DBLoaded == true;};
+
+ inline unsigned long long GetFileSize(void) {return CurStat.FileSize;}
+
+ bool SetFile(std::string const &FileName,struct stat St,FileFd *Fd);
+
+ // terrible old overloaded interface
+ bool GetFileInfo(std::string const &FileName,
+ bool const &DoControl,
+ bool const &DoContents,
+ bool const &GenContentsOnly,
+ bool const DoSource,
+ unsigned int const DoHashes,
+ bool const &checkMtime = false);
+
+ bool Finish();
+
+ bool Clean();
+
+ explicit CacheDB(std::string const &DB);
+ ~CacheDB();
+};
+
+#endif
diff --git a/ftparchive/contents.cc b/ftparchive/contents.cc
new file mode 100644
index 000000000..ae8a7e991
--- /dev/null
+++ b/ftparchive/contents.cc
@@ -0,0 +1,410 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: contents.cc,v 1.4 2003/02/10 07:34:41 doogie Exp $
+/* ######################################################################
+
+ contents - Archive contents generator
+
+ The GenContents class is a back end for an archive contents generator.
+ It takes a list of per-deb file name and merges it into a memory
+ database of all previous output. This database is stored as a set
+ of binary trees linked across directories to form a tree of all files+dirs
+ given to it. The tree will also be sorted as it is built up thus
+ removing the massive sort time overhead.
+
+ By breaking all the pathnames into components and storing them
+ separately a space saving is realized by not duplicating the string
+ over and over again. Ultimately this saving is sacrificed to storage of
+ the tree structure itself but the tree structure yields a speed gain
+ in the sorting and processing. Ultimately it takes about 5 seconds to
+ do 141000 nodes and about 5 meg of ram.
+
+ The tree looks something like:
+
+ usr/
+ / \ / libslang
+ bin/ lib/ --> libc6
+ / \ \ libfoo
+ games/ sbin/
+
+ The ---> is the DirDown link
+
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/debfile.h>
+#include <apt-pkg/dirstream.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "contents.h"
+
+#include <apti18n.h>
+ /*}}}*/
+
+// GenContents::~GenContents - Free allocated memory /*{{{*/
+// ---------------------------------------------------------------------
+/* Since all our allocations are static big-block allocations all that is
+ needed is to free all of them. */
+GenContents::~GenContents()
+{
+ while (BlockList != 0)
+ {
+ BigBlock *Old = BlockList;
+ BlockList = Old->Next;
+ free(Old->Block);
+ delete Old;
+ }
+}
+ /*}}}*/
+// GenContents::Mystrdup - Custom strdup /*{{{*/
+// ---------------------------------------------------------------------
+/* This strdup also uses a large block allocator to eliminate glibc
+ overhead */
+char *GenContents::Mystrdup(const char *From)
+{
+ unsigned int Len = strlen(From) + 1;
+ if (StrLeft <= Len)
+ {
+ StrLeft = 4096*10;
+ StrPool = (char *)malloc(StrLeft);
+
+ BigBlock *Block = new BigBlock;
+ Block->Block = StrPool;
+ Block->Next = BlockList;
+ BlockList = Block;
+ }
+
+ memcpy(StrPool,From,Len);
+ StrLeft -= Len;
+
+ char *Res = StrPool;
+ StrPool += Len;
+ return Res;
+}
+ /*}}}*/
+// GenContents::Node::operator new - Big block allocator /*{{{*/
+// ---------------------------------------------------------------------
+/* This eliminates glibc's malloc overhead by allocating large blocks and
+ having a continuous set of Nodes. This takes about 8 bytes off each nodes
+ space needs. Freeing is not supported. */
+void *GenContents::Node::operator new(size_t Amount,GenContents *Owner)
+{
+ if (Owner->NodeLeft == 0)
+ {
+ Owner->NodeLeft = 10000;
+ Owner->NodePool = static_cast<Node *>(malloc(Amount*Owner->NodeLeft));
+ BigBlock *Block = new BigBlock;
+ Block->Block = Owner->NodePool;
+ Block->Next = Owner->BlockList;
+ Owner->BlockList = Block;
+ }
+
+ Owner->NodeLeft--;
+ return Owner->NodePool++;
+}
+ /*}}}*/
+// GenContents::Grab - Grab a new node representing Name under Top /*{{{*/
+// ---------------------------------------------------------------------
+/* This grabs a new node representing the pathname component Name under
+ the node Top. The node is given the name Package. It is assumed that Name
+ is inside of top. If a duplicate already entered name is found then
+ a note is made on the Dup list and the previous in-tree node is returned. */
+GenContents::Node *GenContents::Grab(GenContents::Node *Top,const char *Name,
+ const char *Package)
+{
+ /* We drop down to the next dir level each call. This simplifies
+ the calling routine */
+ if (Top->DirDown == 0)
+ {
+ Node *Item = new(this) Node;
+ Item->Path = Mystrdup(Name);
+ Item->Package = Package;
+ Top->DirDown = Item;
+ return Item;
+ }
+ Top = Top->DirDown;
+
+ int Res;
+ while (1)
+ {
+ Res = strcmp(Name,Top->Path);
+
+ // Collision!
+ if (Res == 0)
+ {
+ // See if this is the same package (multi-version dup)
+ if (Top->Package == Package ||
+ strcasecmp(Top->Package,Package) == 0)
+ return Top;
+
+ // Look for an already existing Dup
+ for (Node *I = Top->Dups; I != 0; I = I->Dups)
+ if (I->Package == Package ||
+ strcasecmp(I->Package,Package) == 0)
+ return Top;
+
+ // Add the dup in
+ Node *Item = new(this) Node;
+ Item->Path = Top->Path;
+ Item->Package = Package;
+ Item->Dups = Top->Dups;
+ Top->Dups = Item;
+ return Top;
+ }
+
+ // Continue to traverse the tree
+ if (Res < 0)
+ {
+ if (Top->BTreeLeft == 0)
+ break;
+ Top = Top->BTreeLeft;
+ }
+ else
+ {
+ if (Top->BTreeRight == 0)
+ break;
+ Top = Top->BTreeRight;
+ }
+ }
+
+ // The item was not found in the tree
+ Node *Item = new(this) Node;
+ Item->Path = Mystrdup(Name);
+ Item->Package = Package;
+
+ // Link it into the tree
+ if (Res < 0)
+ {
+ Item->BTreeLeft = Top->BTreeLeft;
+ Top->BTreeLeft = Item;
+ }
+ else
+ {
+ Item->BTreeRight = Top->BTreeRight;
+ Top->BTreeRight = Item;
+ }
+
+ return Item;
+}
+ /*}}}*/
+// GenContents::Add - Add a path to the tree /*{{{*/
+// ---------------------------------------------------------------------
+/* This takes a full pathname and adds it into the tree. We split the
+ pathname into directory fragments adding each one as we go. Technically
+ in output from tar this should result in hitting previous items. */
+void GenContents::Add(const char *Dir,const char *Package)
+{
+ Node *Root = &this->Root;
+
+ // Drop leading slashes
+ while (*Dir == '/' && *Dir != 0)
+ Dir++;
+
+ // Run over the string and grab out each bit up to and including a /
+ const char *Start = Dir;
+ const char *I = Dir;
+ while (*I != 0)
+ {
+ if (*I != '/' || I - Start <= 1)
+ {
+ I++;
+ continue;
+ }
+ I++;
+
+ // Copy the path fragment over
+ char Tmp[1024];
+ strncpy(Tmp,Start,I - Start);
+ Tmp[I - Start] = 0;
+
+ // Grab a node for it
+ Root = Grab(Root,Tmp,Package);
+
+ Start = I;
+ }
+
+ // The final component if it does not have a trailing /
+ if (I - Start >= 1)
+ Grab(Root,Start,Package);
+}
+ /*}}}*/
+// GenContents::WriteSpace - Write a given number of white space chars /*{{{*/
+// ---------------------------------------------------------------------
+/* We mod 8 it and write tabs where possible. */
+void GenContents::WriteSpace(std::string &out, size_t Current, size_t Target)
+{
+ if (Target <= Current)
+ Target = Current + 1;
+
+ /* Now we write tabs so long as the next tab stop would not pass
+ the target */
+ for (; (Current/8 + 1)*8 < Target; Current = (Current/8 + 1)*8)
+ out.append("\t");
+
+ // Fill the last bit with spaces
+ for (; Current < Target; Current++)
+ out.append(" ");
+}
+ /*}}}*/
+// GenContents::Print - Display the tree /*{{{*/
+// ---------------------------------------------------------------------
+/* This is the final result function. It takes the tree and recursively
+ calls itself and runs over each section of the tree printing out
+ the pathname and the hit packages. We use Buf to build the pathname
+ summed over all the directory parents of this node. */
+void GenContents::Print(FileFd &Out)
+{
+ char Buffer[1024];
+ Buffer[0] = 0;
+ DoPrint(Out,&Root,Buffer);
+}
+void GenContents::DoPrint(FileFd &Out,GenContents::Node *Top, char *Buf)
+{
+ if (Top == 0)
+ return;
+
+ // Go left
+ DoPrint(Out,Top->BTreeLeft,Buf);
+
+ // Print the current dir location and then descend to lower dirs
+ char *OldEnd = Buf + strlen(Buf);
+ if (Top->Path != 0)
+ {
+ strcat(Buf,Top->Path);
+
+ // Do not show the item if it is a directory with dups
+ if (Top->Path[strlen(Top->Path)-1] != '/' /*|| Top->Dups == 0*/)
+ {
+ std::string out = Buf;
+ WriteSpace(out, out.length(), 60);
+ for (Node *I = Top; I != 0; I = I->Dups)
+ {
+ if (I != Top)
+ out.append(",");
+ out.append(I->Package);
+ }
+ out.append("\n");
+ Out.Write(out.c_str(), out.length());
+ }
+ }
+
+ // Go along the directory link
+ DoPrint(Out,Top->DirDown,Buf);
+ *OldEnd = 0;
+
+ // Go right
+ DoPrint(Out,Top->BTreeRight,Buf);
+}
+ /*}}}*/
+// ContentsExtract Constructor /*{{{*/
+ContentsExtract::ContentsExtract()
+ : Data(0), MaxSize(0), CurSize(0)
+{
+}
+ /*}}}*/
+// ContentsExtract Destructor /*{{{*/
+ContentsExtract::~ContentsExtract()
+{
+ free(Data);
+}
+ /*}}}*/
+// ContentsExtract::Read - Read the archive /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool ContentsExtract::Read(debDebFile &Deb)
+{
+ Reset();
+ return Deb.ExtractArchive(*this);
+}
+ /*}}}*/
+// ContentsExtract::DoItem - Extract an item /*{{{*/
+// ---------------------------------------------------------------------
+/* This just tacks the name onto the end of our memory buffer */
+bool ContentsExtract::DoItem(Item &Itm, int &/*Fd*/)
+{
+ unsigned long Len = strlen(Itm.Name);
+
+ // Strip leading ./'s
+ if (Itm.Name[0] == '.' && Itm.Name[1] == '/')
+ {
+ // == './'
+ if (Len == 2)
+ return true;
+
+ Len -= 2;
+ Itm.Name += 2;
+ }
+
+ // Allocate more storage for the string list
+ if (CurSize + Len + 2 >= MaxSize || Data == 0)
+ {
+ if (MaxSize == 0)
+ MaxSize = 512*1024/2;
+ char *NewData = (char *)realloc(Data,MaxSize*2);
+ if (NewData == 0)
+ return _error->Error(_("realloc - Failed to allocate memory"));
+ Data = NewData;
+ MaxSize *= 2;
+ }
+
+ strcpy(Data+CurSize,Itm.Name);
+ CurSize += Len + 1;
+ return true;
+}
+ /*}}}*/
+// ContentsExtract::TakeContents - Load the contents data /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool ContentsExtract::TakeContents(const void *NewData,unsigned long long Length)
+{
+ if (Length == 0)
+ {
+ CurSize = 0;
+ return true;
+ }
+
+ // Allocate more storage for the string list
+ if (Length + 2 >= MaxSize || Data == 0)
+ {
+ if (MaxSize == 0)
+ MaxSize = 512*1024/2;
+ while (MaxSize*2 <= Length)
+ MaxSize *= 2;
+
+ char *NewData = (char *)realloc(Data,MaxSize*2);
+ if (NewData == 0)
+ return _error->Error(_("realloc - Failed to allocate memory"));
+ Data = NewData;
+ MaxSize *= 2;
+ }
+ memcpy(Data,NewData,Length);
+ CurSize = Length;
+
+ return Data[CurSize-1] == 0;
+}
+ /*}}}*/
+// ContentsExtract::Add - Read the contents data into the sorter /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void ContentsExtract::Add(GenContents &Contents,std::string const &Package)
+{
+ const char *Start = Data;
+ char *Pkg = Contents.Mystrdup(Package.c_str());
+ for (const char *I = Data; I < Data + CurSize; I++)
+ {
+ if (*I == 0)
+ {
+ Contents.Add(Start,Pkg);
+ Start = ++I;
+ }
+ }
+}
+ /*}}}*/
diff --git a/ftparchive/contents.h b/ftparchive/contents.h
new file mode 100644
index 000000000..bc691d473
--- /dev/null
+++ b/ftparchive/contents.h
@@ -0,0 +1,93 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: contents.h,v 1.2 2001/02/20 07:03:18 jgg Exp $
+/* ######################################################################
+
+ contents - Contents of archive things.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef CONTENTS_H
+#define CONTENTS_H
+
+#include <apt-pkg/dirstream.h>
+
+#include <stddef.h>
+#include <stdio.h>
+#include <string>
+
+class debDebFile;
+class FileFd;
+
+class GenContents
+{
+ struct Node
+ {
+ // Binary Tree links
+ Node *BTreeLeft;
+ Node *BTreeRight;
+ Node *DirDown;
+ Node *Dups;
+ const char *Path;
+ const char *Package;
+
+ void *operator new(size_t Amount,GenContents *Owner);
+ void operator delete(void *) {};
+
+ Node() : BTreeLeft(0), BTreeRight(0), DirDown(0), Dups(0),
+ Path(0), Package(0) {};
+ };
+ friend struct Node;
+
+ struct BigBlock
+ {
+ void *Block;
+ BigBlock *Next;
+ };
+
+ Node Root;
+
+ // Big block allocation pools
+ BigBlock *BlockList;
+ char *StrPool;
+ unsigned long StrLeft;
+ Node *NodePool;
+ unsigned long NodeLeft;
+
+ Node *Grab(Node *Top,const char *Name,const char *Package);
+ void WriteSpace(std::string &out, size_t Current, size_t Target);
+ void DoPrint(FileFd &Out,Node *Top, char *Buf);
+
+ public:
+
+ char *Mystrdup(const char *From);
+ void Add(const char *Dir,const char *Package);
+ void Print(FileFd &Out);
+
+ GenContents() : BlockList(0), StrPool(0), StrLeft(0),
+ NodePool(0), NodeLeft(0) {};
+ ~GenContents();
+};
+
+class ContentsExtract : public pkgDirStream
+{
+ public:
+
+ // The Data Block
+ char *Data;
+ unsigned long long MaxSize;
+ unsigned long long CurSize;
+ void AddData(const char *Text);
+
+ bool Read(debDebFile &Deb);
+
+ virtual bool DoItem(Item &Itm,int &Fd) APT_OVERRIDE;
+ void Reset() {CurSize = 0;};
+ bool TakeContents(const void *Data,unsigned long long Length);
+ void Add(GenContents &Contents,std::string const &Package);
+
+ ContentsExtract();
+ virtual ~ContentsExtract();
+};
+
+#endif
diff --git a/ftparchive/multicompress.cc b/ftparchive/multicompress.cc
new file mode 100644
index 000000000..3ffc5266e
--- /dev/null
+++ b/ftparchive/multicompress.cc
@@ -0,0 +1,377 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: multicompress.cc,v 1.4 2003/02/10 07:34:41 doogie Exp $
+/* ######################################################################
+
+ MultiCompressor
+
+ This class is very complicated in order to optimize for the common
+ case of its use, writing a large set of compressed files that are
+ different from the old set. It spawns off compressors in parallel
+ to maximize compression throughput and has a separate task managing
+ the data going into the compressors.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/md5.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/hashsum_template.h>
+
+#include <ctype.h>
+#include <vector>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <unistd.h>
+
+#include "multicompress.h"
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+
+// MultiCompress::MultiCompress - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* Setup the file outputs, compression modes and fork the writer child */
+MultiCompress::MultiCompress(string const &Output,string const &Compress,
+ mode_t const &Permissions,bool const &Write) :
+ Permissions(Permissions)
+{
+ Outputs = 0;
+ Outputter = -1;
+ UpdateMTime = 0;
+
+ /* Parse the compression string, a space separated lists of compresison
+ types */
+ string::const_iterator I = Compress.begin();
+ for (; I != Compress.end();)
+ {
+ for (; I != Compress.end() && isspace(*I); ++I);
+
+ // Grab a word
+ string::const_iterator Start = I;
+ for (; I != Compress.end() && !isspace(*I); ++I);
+
+ // Find the matching compressor
+ std::vector<APT::Configuration::Compressor> Compressors = APT::Configuration::getCompressors();
+ std::vector<APT::Configuration::Compressor>::const_iterator Comp = Compressors.begin();
+ for (; Comp != Compressors.end(); ++Comp)
+ if (stringcmp(Start,I,Comp->Name.c_str()) == 0)
+ break;
+
+ // Hmm.. unknown.
+ if (Comp == Compressors.end())
+ {
+ _error->Warning(_("Unknown compression algorithm '%s'"),string(Start,I).c_str());
+ continue;
+ }
+
+ // Create and link in a new output
+ Files *NewOut = new Files;
+ NewOut->Next = Outputs;
+ Outputs = NewOut;
+ NewOut->CompressProg = *Comp;
+ NewOut->Output = Output+Comp->Extension;
+
+ struct stat St;
+ if (stat(NewOut->Output.c_str(),&St) == 0)
+ NewOut->OldMTime = St.st_mtime;
+ else
+ NewOut->OldMTime = 0;
+ }
+
+ if (Write == false)
+ return;
+
+ /* Open all the temp files now so we can report any errors. File is
+ made unreable to prevent people from touching it during creating. */
+ for (Files *I = Outputs; I != 0; I = I->Next)
+ I->TmpFile.Open(I->Output + ".new", FileFd::WriteOnly | FileFd::Create | FileFd::Empty, FileFd::Extension, 0600);
+ if (_error->PendingError() == true)
+ return;
+
+ if (Outputs == 0)
+ {
+ _error->Error(_("Compressed output %s needs a compression set"),Output.c_str());
+ return;
+ }
+
+ Start();
+}
+ /*}}}*/
+// MultiCompress::~MultiCompress - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* Just erase the file linked list. */
+MultiCompress::~MultiCompress()
+{
+ Die();
+
+ for (; Outputs != 0;)
+ {
+ Files *Tmp = Outputs->Next;
+ delete Outputs;
+ Outputs = Tmp;
+ }
+}
+ /*}}}*/
+// MultiCompress::GetStat - Get stat information for compressed files /*{{{*/
+// ---------------------------------------------------------------------
+/* This checks each compressed file to make sure it exists and returns
+ stat information for a random file from the collection. False means
+ one or more of the files is missing. */
+bool MultiCompress::GetStat(string const &Output,string const &Compress,struct stat &St)
+{
+ /* Parse the compression string, a space separated lists of compresison
+ types */
+ string::const_iterator I = Compress.begin();
+ bool DidStat = false;
+ for (; I != Compress.end();)
+ {
+ for (; I != Compress.end() && isspace(*I); ++I);
+
+ // Grab a word
+ string::const_iterator Start = I;
+ for (; I != Compress.end() && !isspace(*I); ++I);
+
+ // Find the matching compressor
+ std::vector<APT::Configuration::Compressor> Compressors = APT::Configuration::getCompressors();
+ std::vector<APT::Configuration::Compressor>::const_iterator Comp = Compressors.begin();
+ for (; Comp != Compressors.end(); ++Comp)
+ if (stringcmp(Start,I,Comp->Name.c_str()) == 0)
+ break;
+
+ // Hmm.. unknown.
+ if (Comp == Compressors.end())
+ continue;
+
+ string Name = Output+Comp->Extension;
+ if (stat(Name.c_str(),&St) != 0)
+ return false;
+ DidStat = true;
+ }
+ return DidStat;
+}
+ /*}}}*/
+// MultiCompress::Start - Start up the writer child /*{{{*/
+// ---------------------------------------------------------------------
+/* Fork a child and setup the communication pipe. */
+bool MultiCompress::Start()
+{
+ // Create a data pipe
+ int Pipe[2] = {-1,-1};
+ if (pipe(Pipe) != 0)
+ return _error->Errno("pipe",_("Failed to create IPC pipe to subprocess"));
+ for (int I = 0; I != 2; I++)
+ SetCloseExec(Pipe[I],true);
+
+ // The child..
+ Outputter = fork();
+ if (Outputter == 0)
+ {
+ close(Pipe[1]);
+ Child(Pipe[0]);
+ if (_error->PendingError() == true)
+ {
+ _error->DumpErrors();
+ _exit(100);
+ }
+ _exit(0);
+ };
+
+ close(Pipe[0]);
+ if (Input.OpenDescriptor(Pipe[1], FileFd::WriteOnly, true) == false)
+ return false;
+
+ if (Outputter == -1)
+ return _error->Errno("fork",_("Failed to fork"));
+ return true;
+}
+ /*}}}*/
+// MultiCompress::Die - Clean up the writer /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool MultiCompress::Die()
+{
+ if (Input.IsOpen() == false)
+ return true;
+
+ Input.Close();
+ bool Res = ExecWait(Outputter,_("Compress child"),false);
+ Outputter = -1;
+ return Res;
+}
+ /*}}}*/
+// MultiCompress::Finalize - Finish up writing /*{{{*/
+// ---------------------------------------------------------------------
+/* This is only necessary for statistics reporting. */
+bool MultiCompress::Finalize(unsigned long long &OutSize)
+{
+ OutSize = 0;
+ if (Input.IsOpen() == false || Die() == false)
+ return false;
+
+ time_t Now;
+ time(&Now);
+
+ // Check the mtimes to see if the files were replaced.
+ bool Changed = false;
+ for (Files *I = Outputs; I != 0; I = I->Next)
+ {
+ struct stat St;
+ if (stat(I->Output.c_str(),&St) != 0)
+ return _error->Error(_("Internal error, failed to create %s"),
+ I->Output.c_str());
+
+ if (I->OldMTime != St.st_mtime)
+ Changed = true;
+ else
+ {
+ // Update the mtime if necessary
+ if (UpdateMTime > 0 &&
+ (Now - St.st_mtime > (signed)UpdateMTime || St.st_mtime > Now))
+ {
+ utimes(I->Output.c_str(), NULL);
+ Changed = true;
+ }
+ }
+
+ // Force the file permissions
+ if (St.st_mode != Permissions)
+ chmod(I->Output.c_str(),Permissions);
+
+ OutSize += St.st_size;
+ }
+
+ if (Changed == false)
+ OutSize = 0;
+
+ return true;
+}
+ /*}}}*/
+// MultiCompress::OpenOld - Open an old file /*{{{*/
+// ---------------------------------------------------------------------
+/* This opens one of the original output files, possibly decompressing it. */
+bool MultiCompress::OpenOld(FileFd &Fd)
+{
+ Files *Best = Outputs;
+ for (Files *I = Outputs; I != 0; I = I->Next)
+ if (Best->CompressProg.Cost > I->CompressProg.Cost)
+ Best = I;
+
+ // Open the file
+ return Fd.Open(Best->Output, FileFd::ReadOnly, FileFd::Extension);
+}
+ /*}}}*/
+// MultiCompress::Child - The writer child /*{{{*/
+// ---------------------------------------------------------------------
+/* The child process forks a bunch of compression children and takes
+ input on FD and passes it to all the compressor child. On the way it
+ computes the MD5 of the raw data. After this the raw data in the
+ original files is compared to see if this data is new. If the data
+ is new then the temp files are renamed, otherwise they are erased. */
+bool MultiCompress::Child(int const &FD)
+{
+ /* Okay, now we just feed data from FD to all the other FDs. Also
+ stash a hash of the data to use later. */
+ SetNonBlock(FD,false);
+ unsigned char Buffer[32*1024];
+ unsigned long long FileSize = 0;
+ MD5Summation MD5;
+ while (1)
+ {
+ WaitFd(FD,false);
+ int Res = read(FD,Buffer,sizeof(Buffer));
+ if (Res == 0)
+ break;
+ if (Res < 0)
+ continue;
+
+ MD5.Add(Buffer,Res);
+ FileSize += Res;
+ for (Files *I = Outputs; I != 0; I = I->Next)
+ {
+ if (I->TmpFile.Write(Buffer, Res) == false)
+ {
+ _error->Errno("write",_("IO to subprocess/file failed"));
+ break;
+ }
+ }
+ }
+
+ if (_error->PendingError() == true)
+ return false;
+
+ /* Now we have to copy the files over, or erase them if they
+ have not changed. First find the cheapest decompressor */
+ bool Missing = false;
+ for (Files *I = Outputs; I != 0; I = I->Next)
+ {
+ if (I->OldMTime == 0)
+ {
+ Missing = true;
+ break;
+ }
+ }
+
+ // Check the MD5 of the lowest cost entity.
+ while (Missing == false)
+ {
+ FileFd CompFd;
+ if (OpenOld(CompFd) == false)
+ {
+ _error->Discard();
+ break;
+ }
+
+ // Compute the hash
+ MD5Summation OldMD5;
+ unsigned long long NewFileSize = 0;
+ while (1)
+ {
+ unsigned long long Res = 0;
+ if (CompFd.Read(Buffer,sizeof(Buffer), &Res) == false)
+ return _error->Errno("read",_("Failed to read while computing MD5"));
+ if (Res == 0)
+ break;
+ NewFileSize += Res;
+ OldMD5.Add(Buffer,Res);
+ }
+ CompFd.Close();
+
+ // Check the hash
+ if (OldMD5.Result() == MD5.Result() &&
+ FileSize == NewFileSize)
+ {
+ for (Files *I = Outputs; I != 0; I = I->Next)
+ {
+ I->TmpFile.Close();
+ RemoveFile("MultiCompress::Child", I->TmpFile.Name());
+ }
+ return !_error->PendingError();
+ }
+ break;
+ }
+
+ // Finalize
+ for (Files *I = Outputs; I != 0; I = I->Next)
+ {
+ // Set the correct file modes
+ chmod(I->TmpFile.Name().c_str(),Permissions);
+
+ if (rename(I->TmpFile.Name().c_str(),I->Output.c_str()) != 0)
+ _error->Errno("rename",_("Failed to rename %s to %s"),
+ I->TmpFile.Name().c_str(),I->Output.c_str());
+ I->TmpFile.Close();
+ }
+
+ return !_error->PendingError();
+}
+ /*}}}*/
+
diff --git a/ftparchive/multicompress.h b/ftparchive/multicompress.h
new file mode 100644
index 000000000..161716b86
--- /dev/null
+++ b/ftparchive/multicompress.h
@@ -0,0 +1,63 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: multicompress.h,v 1.2 2001/02/20 07:03:18 jgg Exp $
+/* ######################################################################
+
+ MultiCompressor
+
+ Multiple output class. Takes a single FILE* and writes it simultaneously
+ to many compressed files. Then checks if the resulting output is
+ different from any previous output and overwrites the old files. Care is
+ taken to ensure that the new files are not generally readable while they
+ are being written.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef MULTICOMPRESS_H
+#define MULTICOMPRESS_H
+
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/aptconfiguration.h>
+
+#include <string>
+#include <stdio.h>
+#include <sys/types.h>
+#include <time.h>
+
+class MultiCompress
+{
+ // An output file
+ struct Files
+ {
+ std::string Output;
+ APT::Configuration::Compressor CompressProg;
+ Files *Next;
+ FileFd TmpFile;
+ pid_t CompressProc;
+ time_t OldMTime;
+ };
+
+ Files *Outputs;
+ pid_t Outputter;
+ mode_t Permissions;
+
+ bool Child(int const &Fd);
+ bool Start();
+ bool Die();
+
+ public:
+
+ // The FD to write to for compression.
+ FileFd Input;
+ unsigned long UpdateMTime;
+
+ bool Finalize(unsigned long long &OutSize);
+ bool OpenOld(FileFd &Fd);
+ static bool GetStat(std::string const &Output,std::string const &Compress,struct stat &St);
+
+ MultiCompress(std::string const &Output,std::string const &Compress,
+ mode_t const &Permissions, bool const &Write = true);
+ ~MultiCompress();
+};
+
+#endif
diff --git a/ftparchive/override.cc b/ftparchive/override.cc
new file mode 100644
index 000000000..8a0c5bab1
--- /dev/null
+++ b/ftparchive/override.cc
@@ -0,0 +1,289 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: override.cc,v 1.4 2003/02/10 07:34:41 doogie Exp $
+/* ######################################################################
+
+ Override
+
+ Store the override file.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/error.h>
+
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <utility>
+
+#include "override.h"
+
+#include <apti18n.h>
+ /*}}}*/
+
+// Override::ReadOverride - Read the override file /*{{{*/
+// ---------------------------------------------------------------------
+/* This parses the override file and reads it into the map */
+bool Override::ReadOverride(string const &File,bool const &Source)
+{
+ if (File.empty() == true)
+ return true;
+
+ FILE *F = fopen(File.c_str(),"r");
+ if (F == 0)
+ return _error->Errno("fopen",_("Unable to open %s"),File.c_str());
+
+ char Line[1000];
+ unsigned long long Counter = 0;
+ while (fgets(Line,sizeof(Line),F) != 0)
+ {
+ Counter++;
+ Item Itm;
+
+ // Silence
+ for (char *I = Line; *I != 0; I++)
+ if (*I == '#')
+ *I = 0;
+
+ // Strip space leading up to the package name, skip blank lines
+ char *Pkg = Line;
+ for (; isspace(*Pkg) && *Pkg != 0;Pkg++);
+ if (*Pkg == 0)
+ continue;
+
+#define APT_FIND_NEXT_FIELD \
+ for (End++; isspace(*End) != 0 && *End != 0; ++End) \
+ /* skip spaces */ ; \
+ Start = End; \
+ for (; isspace(*End) == 0 && *End != 0; ++End) \
+ /* find end of word */ ;
+
+#define APT_WARNING_MALFORMED_LINE(FIELD) \
+ if (*End == 0) \
+ { \
+ _error->Warning(_("Malformed override %s line %llu (%s)"),File.c_str(), \
+ Counter, FIELD ); \
+ continue; \
+ } \
+ *End = 0;
+
+ // Find the package and zero..
+ char *Start;
+ char *End = Pkg;
+ for (; isspace(*End) == 0 && *End != 0; End++);
+ APT_WARNING_MALFORMED_LINE("pkgname");
+
+ APT_FIND_NEXT_FIELD;
+
+ // Find the priority
+ if (Source == false)
+ {
+ APT_WARNING_MALFORMED_LINE("priority");
+ Itm.Priority = Start;
+
+ APT_FIND_NEXT_FIELD;
+ }
+
+ // Find the Section
+ APT_WARNING_MALFORMED_LINE("section");
+ Itm.FieldOverride["Section"] = Start;
+
+ // Source override files only have the two columns
+ if (Source == true)
+ {
+ Mapping[Pkg] = Itm;
+ continue;
+ }
+
+ // Find the =>
+ for (End++; isspace(*End) != 0 && *End != 0; End++);
+ if (*End != 0)
+ {
+ Start = End;
+ for (; *End != 0 && (End[0] != '=' || End[1] != '>'); End++);
+ if (*End == 0 || strlen(End) < 4)
+ {
+ Itm.OldMaint = "*";
+ Itm.NewMaint = _strstrip(Start);
+ }
+ else
+ {
+ *End = 0;
+ Itm.OldMaint = _strstrip(Start);
+
+ End += 3;
+ Itm.NewMaint = _strstrip(End);
+ }
+ }
+
+ Mapping[Pkg] = Itm;
+ }
+
+ if (ferror(F))
+ _error->Errno("fgets",_("Failed to read the override file %s"),File.c_str());
+ fclose(F);
+ return true;
+}
+ /*}}}*/
+// Override::ReadExtraOverride - Read the extra override file /*{{{*/
+// ---------------------------------------------------------------------
+/* This parses the extra override file and reads it into the map */
+bool Override::ReadExtraOverride(string const &File,bool const &/*Source*/)
+{
+ if (File.empty() == true)
+ return true;
+
+ FILE *F = fopen(File.c_str(),"r");
+ if (F == 0)
+ return _error->Errno("fopen",_("Unable to open %s"),File.c_str());
+
+ char Line[1000];
+ unsigned long long Counter = 0;
+ while (fgets(Line,sizeof(Line),F) != 0)
+ {
+ Counter++;
+
+ // Silence
+ for (char *I = Line; *I != 0; I++)
+ if (*I == '#')
+ *I = 0;
+
+ // Strip space leading up to the package name, skip blank lines
+ char *Pkg = Line;
+ for (; isspace(*Pkg) && *Pkg != 0;Pkg++);
+ if (Pkg == 0)
+ continue;
+
+ // Find the package and zero..
+ char *End = Pkg;
+ for (; isspace(*End) == 0 && *End != 0; End++);
+ if (*End == 0)
+ {
+ _error->Warning(_("Malformed override %s line %llu #1"),File.c_str(),
+ Counter);
+ continue;
+ }
+ *End = 0;
+
+ // Find the field
+ for (End++; isspace(*End) != 0 && *End != 0; End++);
+ char *Field = End;
+ for (; isspace(*End) == 0 && *End != 0; End++);
+ if (*End == 0)
+ {
+ _error->Warning(_("Malformed override %s line %llu #2"),File.c_str(),
+ Counter);
+ continue;
+ }
+ *End = 0;
+
+ // Find the field value
+ for (End++; isspace(*End) != 0 && *End != 0; End++);
+ char *Value = End;
+ for (; *End != 0; End++);
+ for (; isspace(*(End-1)) && End > Value; End--);
+ if (End == Value)
+ {
+ _error->Warning(_("Malformed override %s line %llu #3"),File.c_str(),
+ Counter);
+ continue;
+ }
+ *End = 0;
+
+ Mapping[Pkg].FieldOverride[Field] = Value;
+ }
+
+ if (ferror(F))
+ _error->Errno("fgets",_("Failed to read the override file %s"),File.c_str());
+ fclose(F);
+ return true;
+}
+ /*}}}*/
+
+// Override::GetItem - Get a architecture specific item /*{{{*/
+// ---------------------------------------------------------------------
+/* Returns a override item for the given package and the given architecture.
+ * Treats "all" special
+ */
+Override::Item* Override::GetItem(string const &Package, string const &Architecture)
+{
+ map<string,Item>::const_iterator I = Mapping.find(Package);
+ map<string,Item>::iterator J = Mapping.find(Package + "/" + Architecture);
+
+ if (I == Mapping.end() && J == Mapping.end())
+ {
+ return 0;
+ }
+
+ Item *result = new Item;
+ if (I == Mapping.end()) *result = J->second;
+ else
+ {
+ *result = I->second;
+ if (J != Mapping.end())
+ {
+ Item *R = &J->second;
+ if (R->Priority != "") result->Priority = R->Priority;
+ if (R->OldMaint != "") result->OldMaint = R->OldMaint;
+ if (R->NewMaint != "") result->NewMaint = R->NewMaint;
+ for (map<string,string>::const_iterator foI = R->FieldOverride.begin();
+ foI != R->FieldOverride.end(); ++foI)
+ {
+ result->FieldOverride[foI->first] = foI->second;
+ }
+ }
+ }
+ return result;
+}
+
+
+// Override::Item::SwapMaint - Swap the maintainer field if necessary /*{{{*/
+// ---------------------------------------------------------------------
+/* Returns the new maintainer string after evaluating the rewriting rule. If
+ there is a rule but it does not match then the empty string is returned,
+ also if there was no rewrite rule the empty string is returned. Failed
+ indicates if there was some kind of problem while rewriting. */
+string Override::Item::SwapMaint(string const &Orig,bool &Failed)
+{
+ Failed = false;
+
+ // Degenerate case..
+ if (NewMaint.empty() == true)
+ return OldMaint;
+
+ if (OldMaint == "*")
+ return NewMaint;
+
+ /* James: ancient, eliminate it, however it is still being used in the main
+ override file. Thus it persists.*/
+#if 1
+ // Break OldMaint up into little bits on double slash boundaries.
+ string::const_iterator End = OldMaint.begin();
+ while (1)
+ {
+ string::const_iterator Start = End;
+ for (; End < OldMaint.end() &&
+ (End + 3 >= OldMaint.end() || End[0] != ' ' ||
+ End[1] != '/' || End[2] != '/'); ++End);
+ if (stringcasecmp(Start,End,Orig.begin(),Orig.end()) == 0)
+ return NewMaint;
+
+ if (End >= OldMaint.end())
+ break;
+
+ // Skip the divider and white space
+ for (; End < OldMaint.end() && (*End == '/' || *End == ' '); ++End);
+ }
+#else
+ if (stringcasecmp(OldMaint.begin(),OldMaint.end(),Orig.begin(),Orig.end()) == 0)
+ return NewMaint;
+#endif
+
+ Failed = true;
+ return string();
+}
+ /*}}}*/
diff --git a/ftparchive/override.h b/ftparchive/override.h
new file mode 100644
index 000000000..c5cacc2b4
--- /dev/null
+++ b/ftparchive/override.h
@@ -0,0 +1,51 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: override.h,v 1.4 2001/06/26 02:50:27 jgg Exp $
+/* ######################################################################
+
+ Override
+
+ Store the override file.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef OVERRIDE_H
+#define OVERRIDE_H
+
+
+
+#include <map>
+#include <string>
+
+using std::string;
+using std::map;
+
+class Override
+{
+ public:
+
+ struct Item
+ {
+ string Priority;
+ string OldMaint;
+ string NewMaint;
+
+ map<string,string> FieldOverride;
+ string SwapMaint(string const &Orig,bool &Failed);
+ ~Item() {};
+ };
+
+ map<string,Item> Mapping;
+
+ inline Item *GetItem(string const &Package)
+ {
+ return GetItem(Package, "");
+ }
+ Item *GetItem(string const &Package, string const &Architecture);
+
+ bool ReadOverride(string const &File,bool const &Source = false);
+ bool ReadExtraOverride(string const &File,bool const &Source = false);
+};
+
+#endif
+
diff --git a/ftparchive/sources.cc b/ftparchive/sources.cc
new file mode 100644
index 000000000..ab976b490
--- /dev/null
+++ b/ftparchive/sources.cc
@@ -0,0 +1,60 @@
+#include <string>
+#include <sstream>
+
+// for memcpy
+#include <cstring>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/gpgv.h>
+
+#include "sources.h"
+
+bool DscExtract::TakeDsc(const void *newData, unsigned long long newSize)
+{
+ if (newSize == 0)
+ {
+ // adding two newlines 'off record' for pkgTagSection.Scan() calls
+ Data = "\n\n";
+ Length = 0;
+ return true;
+ }
+
+ Data = std::string((const char*)newData, newSize);
+ // adding two newlines 'off record' for pkgTagSection.Scan() calls
+ Data.append("\n\n");
+ Length = newSize;
+
+ return true;
+}
+
+bool DscExtract::Read(std::string FileName)
+{
+ Data.clear();
+ Length = 0;
+
+ FileFd F;
+ if (OpenMaybeClearSignedFile(FileName, F) == false)
+ return false;
+
+ IsClearSigned = (FileName != F.Name());
+
+ std::ostringstream data;
+ char buffer[1024];
+ do {
+ unsigned long long actual = 0;
+ if (F.Read(buffer, sizeof(buffer)-1, &actual) == false)
+ return _error->Errno("read", "Failed to read dsc file %s", FileName.c_str());
+ if (actual == 0)
+ break;
+ Length += actual;
+ buffer[actual] = '\0';
+ data << buffer;
+ } while(true);
+
+ // adding two newlines 'off record' for pkgTagSection.Scan() calls
+ data << "\n\n";
+ Data = data.str();
+ return true;
+}
+
+
diff --git a/ftparchive/sources.h b/ftparchive/sources.h
new file mode 100644
index 000000000..a125ec6a4
--- /dev/null
+++ b/ftparchive/sources.h
@@ -0,0 +1,24 @@
+#ifndef SOURCES_H
+#define SOURCES_H
+
+#include <apt-pkg/tagfile.h>
+
+#include <string>
+
+class DscExtract
+{
+ public:
+ std::string Data;
+ pkgTagSection Section;
+ unsigned long long Length;
+ bool IsClearSigned;
+
+ bool TakeDsc(const void *Data, unsigned long long Size);
+ bool Read(std::string FileName);
+
+ DscExtract() : Length(0), IsClearSigned(false) {};
+ ~DscExtract() {};
+};
+
+
+#endif
diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc
new file mode 100644
index 000000000..cac1d943d
--- /dev/null
+++ b/ftparchive/writer.cc
@@ -0,0 +1,1188 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: writer.cc,v 1.14 2004/03/24 01:40:43 mdz Exp $
+/* ######################################################################
+
+ Writer
+
+ The file writer classes. These write various types of output, sources,
+ packages and contents.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/deblistparser.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/gpgv.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/md5.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/debfile.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/sha1.h>
+#include <apt-pkg/sha2.h>
+#include <apt-pkg/tagfile.h>
+
+#include <ctype.h>
+#include <fnmatch.h>
+#include <ftw.h>
+#include <locale.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <ctime>
+#include <iostream>
+#include <iomanip>
+#include <sstream>
+#include <memory>
+#include <utility>
+#include <algorithm>
+
+#include "apt-ftparchive.h"
+#include "writer.h"
+#include "cachedb.h"
+#include "multicompress.h"
+#include "byhash.h"
+
+#include <apti18n.h>
+ /*}}}*/
+using namespace std;
+FTWScanner *FTWScanner::Owner;
+
+// ConfigToDoHashes - which hashes to generate /*{{{*/
+static void SingleConfigToDoHashes(unsigned int &DoHashes, std::string const &Conf, unsigned int const Flag)
+{
+ if (_config->FindB(Conf, (DoHashes & Flag) == Flag) == true)
+ DoHashes |= Flag;
+ else
+ DoHashes &= ~Flag;
+}
+static void ConfigToDoHashes(unsigned int &DoHashes, std::string const &Conf)
+{
+ SingleConfigToDoHashes(DoHashes, Conf + "::MD5", Hashes::MD5SUM);
+ SingleConfigToDoHashes(DoHashes, Conf + "::SHA1", Hashes::SHA1SUM);
+ SingleConfigToDoHashes(DoHashes, Conf + "::SHA256", Hashes::SHA256SUM);
+ SingleConfigToDoHashes(DoHashes, Conf + "::SHA512", Hashes::SHA512SUM);
+}
+ /*}}}*/
+
+// FTWScanner::FTWScanner - Constructor /*{{{*/
+FTWScanner::FTWScanner(FileFd * const GivenOutput, string const &Arch, bool const IncludeArchAll)
+ : Arch(Arch), IncludeArchAll(IncludeArchAll), DoHashes(~0)
+{
+ if (GivenOutput == NULL)
+ {
+ Output = new FileFd;
+ OwnsOutput = true;
+ Output->OpenDescriptor(STDOUT_FILENO, FileFd::WriteOnly, false);
+ }
+ else
+ {
+ Output = GivenOutput;
+ OwnsOutput = false;
+ }
+ ErrorPrinted = false;
+ NoLinkAct = !_config->FindB("APT::FTPArchive::DeLinkAct",true);
+ ConfigToDoHashes(DoHashes, "APT::FTPArchive");
+}
+ /*}}}*/
+FTWScanner::~FTWScanner()
+{
+ if (Output != NULL && OwnsOutput)
+ delete Output;
+}
+// FTWScanner::Scanner - FTW Scanner /*{{{*/
+// ---------------------------------------------------------------------
+/* This is the FTW scanner, it processes each directory element in the
+ directory tree. */
+int FTWScanner::ScannerFTW(const char *File,const struct stat * /*sb*/,int Flag)
+{
+ if (Flag == FTW_DNR)
+ {
+ Owner->NewLine(1);
+ ioprintf(c1out, _("W: Unable to read directory %s\n"), File);
+ }
+ if (Flag == FTW_NS)
+ {
+ Owner->NewLine(1);
+ ioprintf(c1out, _("W: Unable to stat %s\n"), File);
+ }
+ if (Flag != FTW_F)
+ return 0;
+
+ return ScannerFile(File, true);
+}
+ /*}}}*/
+// FTWScanner::ScannerFile - File Scanner /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+int FTWScanner::ScannerFile(const char *File, bool const &ReadLink)
+{
+ const char *LastComponent = strrchr(File, '/');
+ char *RealPath = NULL;
+
+ if (LastComponent == NULL)
+ LastComponent = File;
+ else
+ LastComponent++;
+
+ vector<string>::const_iterator I;
+ for(I = Owner->Patterns.begin(); I != Owner->Patterns.end(); ++I)
+ {
+ if (fnmatch((*I).c_str(), LastComponent, 0) == 0)
+ break;
+ }
+ if (I == Owner->Patterns.end())
+ return 0;
+
+ /* Process it. If the file is a link then resolve it into an absolute
+ name.. This works best if the directory components the scanner are
+ given are not links themselves. */
+ char Jnk[2];
+ Owner->OriginalPath = File;
+ if (ReadLink &&
+ readlink(File,Jnk,sizeof(Jnk)) != -1 &&
+ (RealPath = realpath(File,NULL)) != 0)
+ {
+ Owner->DoPackage(RealPath);
+ free(RealPath);
+ }
+ else
+ Owner->DoPackage(File);
+
+ if (_error->empty() == false)
+ {
+ // Print any errors or warnings found
+ string Err;
+ bool SeenPath = false;
+ while (_error->empty() == false)
+ {
+ Owner->NewLine(1);
+
+ bool const Type = _error->PopMessage(Err);
+ if (Type == true)
+ cerr << _("E: ") << Err << endl;
+ else
+ cerr << _("W: ") << Err << endl;
+
+ if (Err.find(File) != string::npos)
+ SeenPath = true;
+ }
+
+ if (SeenPath == false)
+ cerr << _("E: Errors apply to file ") << "'" << File << "'" << endl;
+ return 0;
+ }
+
+ return 0;
+}
+ /*}}}*/
+// FTWScanner::RecursiveScan - Just scan a directory tree /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool FTWScanner::RecursiveScan(string const &Dir)
+{
+ char *RealPath = NULL;
+ /* If noprefix is set then jam the scan root in, so we don't generate
+ link followed paths out of control */
+ if (InternalPrefix.empty() == true)
+ {
+ if ((RealPath = realpath(Dir.c_str(),NULL)) == 0)
+ return _error->Errno("realpath",_("Failed to resolve %s"),Dir.c_str());
+ InternalPrefix = RealPath;
+ free(RealPath);
+ }
+
+ // Do recursive directory searching
+ Owner = this;
+ int const Res = ftw(Dir.c_str(),ScannerFTW,30);
+
+ // Error treewalking?
+ if (Res != 0)
+ {
+ if (_error->PendingError() == false)
+ _error->Errno("ftw",_("Tree walking failed"));
+ return false;
+ }
+
+ return true;
+}
+ /*}}}*/
+// FTWScanner::LoadFileList - Load the file list from a file /*{{{*/
+// ---------------------------------------------------------------------
+/* This is an alternative to using FTW to locate files, it reads the list
+ of files from another file. */
+bool FTWScanner::LoadFileList(string const &Dir, string const &File)
+{
+ char *RealPath = NULL;
+ /* If noprefix is set then jam the scan root in, so we don't generate
+ link followed paths out of control */
+ if (InternalPrefix.empty() == true)
+ {
+ if ((RealPath = realpath(Dir.c_str(),NULL)) == 0)
+ return _error->Errno("realpath",_("Failed to resolve %s"),Dir.c_str());
+ InternalPrefix = RealPath;
+ free(RealPath);
+ }
+
+ Owner = this;
+ FILE *List = fopen(File.c_str(),"r");
+ if (List == 0)
+ return _error->Errno("fopen",_("Failed to open %s"),File.c_str());
+
+ /* We are a tad tricky here.. We prefix the buffer with the directory
+ name, that way if we need a full path with just use line.. Sneaky and
+ fully evil. */
+ char Line[1000];
+ char *FileStart;
+ if (Dir.empty() == true || Dir.end()[-1] != '/')
+ FileStart = Line + snprintf(Line,sizeof(Line),"%s/",Dir.c_str());
+ else
+ FileStart = Line + snprintf(Line,sizeof(Line),"%s",Dir.c_str());
+ while (fgets(FileStart,sizeof(Line) - (FileStart - Line),List) != 0)
+ {
+ char *FileName = _strstrip(FileStart);
+ if (FileName[0] == 0)
+ continue;
+
+ if (FileName[0] != '/')
+ {
+ if (FileName != FileStart)
+ memmove(FileStart,FileName,strlen(FileStart));
+ FileName = Line;
+ }
+
+#if 0
+ struct stat St;
+ int Flag = FTW_F;
+ if (stat(FileName,&St) != 0)
+ Flag = FTW_NS;
+#endif
+
+ if (ScannerFile(FileName, false) != 0)
+ break;
+ }
+
+ fclose(List);
+ return true;
+}
+ /*}}}*/
+// FTWScanner::Delink - Delink symlinks /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool FTWScanner::Delink(string &FileName,const char *OriginalPath,
+ unsigned long long &DeLinkBytes,
+ unsigned long long const &FileSize)
+{
+ // See if this isn't an internaly prefix'd file name.
+ if (InternalPrefix.empty() == false &&
+ InternalPrefix.length() < FileName.length() &&
+ stringcmp(FileName.begin(),FileName.begin() + InternalPrefix.length(),
+ InternalPrefix.begin(),InternalPrefix.end()) != 0)
+ {
+ if (DeLinkLimit != 0 && DeLinkBytes/1024 < DeLinkLimit)
+ {
+ // Tidy up the display
+ if (DeLinkBytes == 0)
+ cout << endl;
+
+ NewLine(1);
+ ioprintf(c1out, _(" DeLink %s [%s]\n"), (OriginalPath + InternalPrefix.length()),
+ SizeToStr(FileSize).c_str());
+ c1out << flush;
+
+ if (NoLinkAct == false)
+ {
+ char OldLink[400];
+ if (readlink(OriginalPath,OldLink,sizeof(OldLink)) == -1)
+ _error->Errno("readlink",_("Failed to readlink %s"),OriginalPath);
+ else
+ {
+ if (RemoveFile("FTWScanner::Delink", OriginalPath))
+ {
+ if (link(FileName.c_str(),OriginalPath) != 0)
+ {
+ // Panic! Restore the symlink
+ if (symlink(OldLink,OriginalPath) != 0)
+ _error->Errno("symlink", "failed to restore symlink");
+ return _error->Errno("link",_("*** Failed to link %s to %s"),
+ FileName.c_str(),
+ OriginalPath);
+ }
+ }
+ }
+ }
+
+ DeLinkBytes += FileSize;
+ if (DeLinkBytes/1024 >= DeLinkLimit)
+ ioprintf(c1out, _(" DeLink limit of %sB hit.\n"), SizeToStr(DeLinkBytes).c_str());
+ }
+
+ FileName = OriginalPath;
+ }
+
+ return true;
+}
+ /*}}}*/
+// FTWScanner::SetExts - Set extensions to support /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool FTWScanner::SetExts(string const &Vals)
+{
+ ClearPatterns();
+ string::size_type Start = 0;
+ while (Start <= Vals.length()-1)
+ {
+ string::size_type const Space = Vals.find(' ',Start);
+ string::size_type const Length = ((Space == string::npos) ? Vals.length() : Space) - Start;
+ if ( Arch.empty() == false )
+ {
+ AddPattern(string("*_") + Arch + Vals.substr(Start, Length));
+ if (IncludeArchAll == true && Arch != "all")
+ AddPattern(string("*_all") + Vals.substr(Start, Length));
+ }
+ else
+ AddPattern(string("*") + Vals.substr(Start, Length));
+
+ Start += Length + 1;
+ }
+
+ return true;
+}
+ /*}}}*/
+
+// PackagesWriter::PackagesWriter - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+PackagesWriter::PackagesWriter(FileFd * const GivenOutput, TranslationWriter * const transWriter,
+ string const &DB,string const &Overrides,string const &ExtOverrides,
+ string const &Arch, bool const IncludeArchAll) :
+ FTWScanner(GivenOutput, Arch, IncludeArchAll), Db(DB), Stats(Db.Stats), TransWriter(transWriter)
+{
+ SetExts(".deb .ddeb .udeb");
+ DeLinkLimit = 0;
+
+ // Process the command line options
+ ConfigToDoHashes(DoHashes, "APT::FTPArchive::Packages");
+ DoAlwaysStat = _config->FindB("APT::FTPArchive::AlwaysStat", false);
+ DoContents = _config->FindB("APT::FTPArchive::Contents",true);
+ NoOverride = _config->FindB("APT::FTPArchive::NoOverrideMsg",false);
+ LongDescription = _config->FindB("APT::FTPArchive::LongDescription",true);
+
+ if (Db.Loaded() == false)
+ DoContents = false;
+
+ // Read the override file
+ if (Overrides.empty() == false && Over.ReadOverride(Overrides) == false)
+ return;
+ else
+ NoOverride = true;
+
+ if (ExtOverrides.empty() == false)
+ Over.ReadExtraOverride(ExtOverrides);
+
+ _error->DumpErrors();
+}
+ /*}}}*/
+// PackagesWriter::DoPackage - Process a single package /*{{{*/
+// ---------------------------------------------------------------------
+/* This method takes a package and gets its control information and
+ MD5, SHA1 and SHA256 then writes out a control record with the proper fields
+ rewritten and the path/size/hash appended. */
+bool PackagesWriter::DoPackage(string FileName)
+{
+ // Pull all the data we need form the DB
+ if (Db.GetFileInfo(FileName,
+ true, /* DoControl */
+ DoContents,
+ true, /* GenContentsOnly */
+ false, /* DoSource */
+ DoHashes, DoAlwaysStat) == false)
+ {
+ return false;
+ }
+
+ unsigned long long FileSize = Db.GetFileSize();
+ if (Delink(FileName,OriginalPath,Stats.DeLinkBytes,FileSize) == false)
+ return false;
+
+ // Lookup the override information
+ pkgTagSection &Tags = Db.Control.Section;
+ string Package = Tags.FindS("Package");
+ string Architecture;
+ // if we generate a Packages file for a given arch, we use it to
+ // look for overrides. if we run in "simple" mode without the
+ // "Architecures" variable in the config we use the architecure value
+ // from the deb file
+ if(Arch != "")
+ Architecture = Arch;
+ else
+ Architecture = Tags.FindS("Architecture");
+ unique_ptr<Override::Item> OverItem(Over.GetItem(Package,Architecture));
+
+ if (Package.empty() == true)
+ return _error->Error(_("Archive had no package field"));
+
+ // If we need to do any rewriting of the header do it now..
+ if (OverItem.get() == 0)
+ {
+ if (NoOverride == false)
+ {
+ NewLine(1);
+ ioprintf(c1out, _(" %s has no override entry\n"), Package.c_str());
+ }
+
+ OverItem = unique_ptr<Override::Item>(new Override::Item);
+ OverItem->FieldOverride["Section"] = Tags.FindS("Section");
+ OverItem->Priority = Tags.FindS("Priority");
+ }
+
+ // Strip the DirStrip prefix from the FileName and add the PathPrefix
+ string NewFileName;
+ if (DirStrip.empty() == false &&
+ FileName.length() > DirStrip.length() &&
+ stringcmp(FileName.begin(),FileName.begin() + DirStrip.length(),
+ DirStrip.begin(),DirStrip.end()) == 0)
+ NewFileName = string(FileName.begin() + DirStrip.length(),FileName.end());
+ else
+ NewFileName = FileName;
+ if (PathPrefix.empty() == false)
+ NewFileName = flCombine(PathPrefix,NewFileName);
+
+ /* Configuration says we don't want to include the long Description
+ in the package file - instead we want to ship a separated file */
+ string desc;
+ if (LongDescription == false) {
+ desc = Tags.FindS("Description").append("\n");
+ OverItem->FieldOverride["Description"] = desc.substr(0, desc.find('\n')).c_str();
+ }
+
+ // This lists all the changes to the fields we are going to make.
+ std::vector<pkgTagSection::Tag> Changes;
+
+ std::string Size;
+ strprintf(Size, "%llu", (unsigned long long) FileSize);
+ Changes.push_back(pkgTagSection::Tag::Rewrite("Size", Size));
+
+ for (HashStringList::const_iterator hs = Db.HashesList.begin(); hs != Db.HashesList.end(); ++hs)
+ {
+ if (hs->HashType() == "MD5Sum")
+ Changes.push_back(pkgTagSection::Tag::Rewrite("MD5sum", hs->HashValue()));
+ else if (hs->HashType() == "Checksum-FileSize")
+ continue;
+ else
+ Changes.push_back(pkgTagSection::Tag::Rewrite(hs->HashType(), hs->HashValue()));
+ }
+ Changes.push_back(pkgTagSection::Tag::Rewrite("Filename", NewFileName));
+ Changes.push_back(pkgTagSection::Tag::Rewrite("Priority", OverItem->Priority));
+ Changes.push_back(pkgTagSection::Tag::Remove("Status"));
+ Changes.push_back(pkgTagSection::Tag::Remove("Optional"));
+
+ string DescriptionMd5;
+ if (LongDescription == false) {
+ MD5Summation descmd5;
+ descmd5.Add(desc.c_str());
+ DescriptionMd5 = descmd5.Result().Value();
+ Changes.push_back(pkgTagSection::Tag::Rewrite("Description-md5", DescriptionMd5));
+ if (TransWriter != NULL)
+ TransWriter->DoPackage(Package, desc, DescriptionMd5);
+ }
+
+ // Rewrite the maintainer field if necessary
+ bool MaintFailed;
+ string NewMaint = OverItem->SwapMaint(Tags.FindS("Maintainer"),MaintFailed);
+ if (MaintFailed == true)
+ {
+ if (NoOverride == false)
+ {
+ NewLine(1);
+ ioprintf(c1out, _(" %s maintainer is %s not %s\n"),
+ Package.c_str(), Tags.FindS("Maintainer").c_str(), OverItem->OldMaint.c_str());
+ }
+ }
+
+ if (NewMaint.empty() == false)
+ Changes.push_back(pkgTagSection::Tag::Rewrite("Maintainer", NewMaint));
+
+ /* Get rid of the Optional tag. This is an ugly, ugly, ugly hack that
+ dpkg-scanpackages does. Well sort of. dpkg-scanpackages just does renaming
+ but dpkg does this append bit. So we do the append bit, at least that way the
+ status file and package file will remain similar. There are other transforms
+ but optional is the only legacy one still in use for some lazy reason. */
+ string OptionalStr = Tags.FindS("Optional");
+ if (OptionalStr.empty() == false)
+ {
+ if (Tags.FindS("Suggests").empty() == false)
+ OptionalStr = Tags.FindS("Suggests") + ", " + OptionalStr;
+ Changes.push_back(pkgTagSection::Tag::Rewrite("Suggests", OptionalStr));
+ }
+
+ for (map<string,string>::const_iterator I = OverItem->FieldOverride.begin();
+ I != OverItem->FieldOverride.end(); ++I)
+ Changes.push_back(pkgTagSection::Tag::Rewrite(I->first, I->second));
+
+ // Rewrite and store the fields.
+ if (Tags.Write(*Output, TFRewritePackageOrder, Changes) == false ||
+ Output->Write("\n", 1) == false)
+ return false;
+
+ return Db.Finish();
+}
+ /*}}}*/
+PackagesWriter::~PackagesWriter() /*{{{*/
+{
+}
+ /*}}}*/
+
+// TranslationWriter::TranslationWriter - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* Create a Translation-Master file for this Packages file */
+TranslationWriter::TranslationWriter(string const &File, string const &TransCompress,
+ mode_t const &Permissions) : Comp(NULL), Output(NULL)
+{
+ if (File.empty() == true)
+ return;
+
+ Comp = new MultiCompress(File, TransCompress, Permissions);
+ Output = &Comp->Input;
+}
+ /*}}}*/
+// TranslationWriter::DoPackage - Process a single package /*{{{*/
+// ---------------------------------------------------------------------
+/* Create a Translation-Master file for this Packages file */
+bool TranslationWriter::DoPackage(string const &Pkg, string const &Desc,
+ string const &MD5)
+{
+ if (Output == NULL)
+ return true;
+
+ // Different archs can include different versions and therefore
+ // different descriptions - so we need to check for both name and md5.
+ string const Record = Pkg + ":" + MD5;
+
+ if (Included.find(Record) != Included.end())
+ return true;
+
+ std::string out;
+ strprintf(out, "Package: %s\nDescription-md5: %s\nDescription-en: %s\n",
+ Pkg.c_str(), MD5.c_str(), Desc.c_str());
+ Output->Write(out.c_str(), out.length());
+
+ Included.insert(Record);
+ return true;
+}
+ /*}}}*/
+// TranslationWriter::~TranslationWriter - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+TranslationWriter::~TranslationWriter()
+{
+ if (Comp != NULL)
+ delete Comp;
+}
+ /*}}}*/
+
+// SourcesWriter::SourcesWriter - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+SourcesWriter::SourcesWriter(FileFd * const GivenOutput, string const &DB, string const &BOverrides,string const &SOverrides,
+ string const &ExtOverrides) :
+ FTWScanner(GivenOutput), Db(DB), Stats(Db.Stats)
+{
+ AddPattern("*.dsc");
+ DeLinkLimit = 0;
+ Buffer = 0;
+ BufSize = 0;
+
+ // Process the command line options
+ ConfigToDoHashes(DoHashes, "APT::FTPArchive::Sources");
+ NoOverride = _config->FindB("APT::FTPArchive::NoOverrideMsg",false);
+ DoAlwaysStat = _config->FindB("APT::FTPArchive::AlwaysStat", false);
+
+ // Read the override file
+ if (BOverrides.empty() == false && BOver.ReadOverride(BOverrides) == false)
+ return;
+ else
+ NoOverride = true;
+
+ // WTF?? The logic above: if we can't read binary overrides, don't even try
+ // reading source overrides. if we can read binary overrides, then say there
+ // are no overrides. THIS MAKES NO SENSE! -- ajt@d.o, 2006/02/28
+
+ if (ExtOverrides.empty() == false)
+ SOver.ReadExtraOverride(ExtOverrides);
+
+ if (SOverrides.empty() == false && FileExists(SOverrides) == true)
+ SOver.ReadOverride(SOverrides,true);
+}
+ /*}}}*/
+// SourcesWriter::DoPackage - Process a single package /*{{{*/
+static std::string getDscHash(unsigned int const DoHashes,
+ Hashes::SupportedHashes const DoIt, pkgTagSection &Tags, char const * const FieldName,
+ HashString const * const Hash, unsigned long long Size, std::string const &FileName)
+{
+ if ((DoHashes & DoIt) != DoIt || Tags.Exists(FieldName) == false || Hash == NULL)
+ return "";
+ std::ostringstream out;
+ out << "\n " << Hash->HashValue() << " " << std::to_string(Size) << " " << FileName
+ << "\n " << Tags.FindS(FieldName);
+ return out.str();
+}
+bool SourcesWriter::DoPackage(string FileName)
+{
+ // Pull all the data we need form the DB
+ if (Db.GetFileInfo(FileName,
+ false, /* DoControl */
+ false, /* DoContents */
+ false, /* GenContentsOnly */
+ true, /* DoSource */
+ DoHashes, DoAlwaysStat) == false)
+ {
+ return false;
+ }
+
+ // we need to perform a "write" here (this is what finish is doing)
+ // because the call to Db.GetFileInfo() in the loop will change
+ // the "db cursor"
+ Db.Finish();
+
+ pkgTagSection Tags;
+ if (Tags.Scan(Db.Dsc.Data.c_str(), Db.Dsc.Data.length()) == false)
+ return _error->Error("Could not find a record in the DSC '%s'",FileName.c_str());
+
+ if (Tags.Exists("Source") == false)
+ return _error->Error("Could not find a Source entry in the DSC '%s'",FileName.c_str());
+ Tags.Trim();
+
+ // Lookup the override information, finding first the best priority.
+ string BestPrio;
+ string Bins = Tags.FindS("Binary");
+ char Buffer[Bins.length() + 1];
+ unique_ptr<Override::Item> OverItem(nullptr);
+ if (Bins.empty() == false)
+ {
+ strcpy(Buffer,Bins.c_str());
+
+ // Ignore too-long errors.
+ char *BinList[400];
+ TokSplitString(',',Buffer,BinList,sizeof(BinList)/sizeof(BinList[0]));
+
+ // Look at all the binaries
+ unsigned char BestPrioV = pkgCache::State::Extra;
+ for (unsigned I = 0; BinList[I] != 0; I++)
+ {
+ unique_ptr<Override::Item> Itm(BOver.GetItem(BinList[I]));
+ if (Itm.get() == 0)
+ continue;
+
+ unsigned char NewPrioV = debListParser::GetPrio(Itm->Priority);
+ if (NewPrioV < BestPrioV || BestPrio.empty() == true)
+ {
+ BestPrioV = NewPrioV;
+ BestPrio = Itm->Priority;
+ }
+
+ if (OverItem.get() == 0)
+ OverItem = std::move(Itm);
+ }
+ }
+
+ // If we need to do any rewriting of the header do it now..
+ if (OverItem.get() == 0)
+ {
+ if (NoOverride == false)
+ {
+ NewLine(1);
+ ioprintf(c1out, _(" %s has no override entry\n"), Tags.FindS("Source").c_str());
+ }
+
+ OverItem.reset(new Override::Item);
+ }
+
+ struct stat St;
+ if (stat(FileName.c_str(), &St) != 0)
+ return _error->Errno("fstat","Failed to stat %s",FileName.c_str());
+
+ unique_ptr<Override::Item> SOverItem(SOver.GetItem(Tags.FindS("Source")));
+ // const unique_ptr<Override::Item> autoSOverItem(SOverItem);
+ if (SOverItem.get() == 0)
+ {
+ ioprintf(c1out, _(" %s has no source override entry\n"), Tags.FindS("Source").c_str());
+ SOverItem = unique_ptr<Override::Item>(BOver.GetItem(Tags.FindS("Source")));
+ if (SOverItem.get() == 0)
+ {
+ ioprintf(c1out, _(" %s has no binary override entry either\n"), Tags.FindS("Source").c_str());
+ SOverItem = unique_ptr<Override::Item>(new Override::Item);
+ *SOverItem = *OverItem;
+ }
+ }
+
+ // Add the dsc to the files hash list
+ string const strippedName = flNotDir(FileName);
+ std::string const Files = getDscHash(DoHashes, Hashes::MD5SUM, Tags, "Files", Db.HashesList.find("MD5Sum"), St.st_size, strippedName);
+ std::string ChecksumsSha1 = getDscHash(DoHashes, Hashes::SHA1SUM, Tags, "Checksums-Sha1", Db.HashesList.find("SHA1"), St.st_size, strippedName);
+ std::string ChecksumsSha256 = getDscHash(DoHashes, Hashes::SHA256SUM, Tags, "Checksums-Sha256", Db.HashesList.find("SHA256"), St.st_size, strippedName);
+ std::string ChecksumsSha512 = getDscHash(DoHashes, Hashes::SHA512SUM, Tags, "Checksums-Sha512", Db.HashesList.find("SHA512"), St.st_size, strippedName);
+
+ // Strip the DirStrip prefix from the FileName and add the PathPrefix
+ string NewFileName;
+ if (DirStrip.empty() == false &&
+ FileName.length() > DirStrip.length() &&
+ stringcmp(DirStrip,OriginalPath,OriginalPath + DirStrip.length()) == 0)
+ NewFileName = string(OriginalPath + DirStrip.length());
+ else
+ NewFileName = OriginalPath;
+ if (PathPrefix.empty() == false)
+ NewFileName = flCombine(PathPrefix,NewFileName);
+
+ string Directory = flNotFile(OriginalPath);
+ string Package = Tags.FindS("Source");
+
+ // Perform operation over all of the files
+ string ParseJnk;
+ const char *C = Files.c_str();
+ char *RealPath = NULL;
+ for (;isspace(*C); C++);
+ while (*C != 0)
+ {
+ // Parse each of the elements
+ if (ParseQuoteWord(C,ParseJnk) == false ||
+ ParseQuoteWord(C,ParseJnk) == false ||
+ ParseQuoteWord(C,ParseJnk) == false)
+ return _error->Error("Error parsing file record");
+
+ string OriginalPath = Directory + ParseJnk;
+
+ // Add missing hashes to source files
+ if (((DoHashes & Hashes::SHA1SUM) == Hashes::SHA1SUM && !Tags.Exists("Checksums-Sha1")) ||
+ ((DoHashes & Hashes::SHA256SUM) == Hashes::SHA256SUM && !Tags.Exists("Checksums-Sha256")) ||
+ ((DoHashes & Hashes::SHA512SUM) == Hashes::SHA512SUM && !Tags.Exists("Checksums-Sha512")))
+ {
+ if (Db.GetFileInfo(OriginalPath,
+ false, /* DoControl */
+ false, /* DoContents */
+ false, /* GenContentsOnly */
+ false, /* DoSource */
+ DoHashes,
+ DoAlwaysStat) == false)
+ {
+ return _error->Error("Error getting file info");
+ }
+
+ for (HashStringList::const_iterator hs = Db.HashesList.begin(); hs != Db.HashesList.end(); ++hs)
+ {
+ if (hs->HashType() == "MD5Sum" || hs->HashType() == "Checksum-FileSize")
+ continue;
+ char const * fieldname;
+ std::string * out;
+ if (hs->HashType() == "SHA1")
+ {
+ fieldname = "Checksums-Sha1";
+ out = &ChecksumsSha1;
+ }
+ else if (hs->HashType() == "SHA256")
+ {
+ fieldname = "Checksums-Sha256";
+ out = &ChecksumsSha256;
+ }
+ else if (hs->HashType() == "SHA512")
+ {
+ fieldname = "Checksums-Sha512";
+ out = &ChecksumsSha512;
+ }
+ else
+ {
+ _error->Warning("Ignoring unknown Checksumtype %s in SourcesWriter::DoPackages", hs->HashType().c_str());
+ continue;
+ }
+ if (Tags.Exists(fieldname) == true)
+ continue;
+ std::ostringstream streamout;
+ streamout << "\n " << hs->HashValue() << " " << std::to_string(Db.GetFileSize()) << " " << ParseJnk;
+ out->append(streamout.str());
+ }
+
+ // write back the GetFileInfo() stats data
+ Db.Finish();
+ }
+
+ // Perform the delinking operation
+ char Jnk[2];
+
+ if (readlink(OriginalPath.c_str(),Jnk,sizeof(Jnk)) != -1 &&
+ (RealPath = realpath(OriginalPath.c_str(),NULL)) != 0)
+ {
+ string RP = RealPath;
+ free(RealPath);
+ if (Delink(RP,OriginalPath.c_str(),Stats.DeLinkBytes,St.st_size) == false)
+ return false;
+ }
+ }
+
+ Directory = flNotFile(NewFileName);
+ if (Directory.length() > 2)
+ Directory.erase(Directory.end()-1);
+
+ // This lists all the changes to the fields we are going to make.
+ // (5 hardcoded + checksums + maintainer + end marker)
+ std::vector<pkgTagSection::Tag> Changes;
+
+ Changes.push_back(pkgTagSection::Tag::Remove("Source"));
+ Changes.push_back(pkgTagSection::Tag::Rewrite("Package", Package));
+ if (Files.empty() == false)
+ Changes.push_back(pkgTagSection::Tag::Rewrite("Files", Files));
+ if (ChecksumsSha1.empty() == false)
+ Changes.push_back(pkgTagSection::Tag::Rewrite("Checksums-Sha1", ChecksumsSha1));
+ if (ChecksumsSha256.empty() == false)
+ Changes.push_back(pkgTagSection::Tag::Rewrite("Checksums-Sha256", ChecksumsSha256));
+ if (ChecksumsSha512.empty() == false)
+ Changes.push_back(pkgTagSection::Tag::Rewrite("Checksums-Sha512", ChecksumsSha512));
+ if (Directory != "./")
+ Changes.push_back(pkgTagSection::Tag::Rewrite("Directory", Directory));
+ Changes.push_back(pkgTagSection::Tag::Rewrite("Priority", BestPrio));
+ Changes.push_back(pkgTagSection::Tag::Remove("Status"));
+
+ // Rewrite the maintainer field if necessary
+ bool MaintFailed;
+ string NewMaint = OverItem->SwapMaint(Tags.FindS("Maintainer"), MaintFailed);
+ if (MaintFailed == true)
+ {
+ if (NoOverride == false)
+ {
+ NewLine(1);
+ ioprintf(c1out, _(" %s maintainer is %s not %s\n"), Package.c_str(),
+ Tags.FindS("Maintainer").c_str(), OverItem->OldMaint.c_str());
+ }
+ }
+ if (NewMaint.empty() == false)
+ Changes.push_back(pkgTagSection::Tag::Rewrite("Maintainer", NewMaint.c_str()));
+
+ for (map<string,string>::const_iterator I = SOverItem->FieldOverride.begin();
+ I != SOverItem->FieldOverride.end(); ++I)
+ Changes.push_back(pkgTagSection::Tag::Rewrite(I->first, I->second));
+
+ // Rewrite and store the fields.
+ if (Tags.Write(*Output, TFRewriteSourceOrder, Changes) == false ||
+ Output->Write("\n", 1) == false)
+ return false;
+
+ Stats.Packages++;
+
+ return true;
+}
+ /*}}}*/
+
+// ContentsWriter::ContentsWriter - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+ContentsWriter::ContentsWriter(FileFd * const GivenOutput, string const &DB,
+ string const &Arch, bool const IncludeArchAll) :
+ FTWScanner(GivenOutput, Arch, IncludeArchAll), Db(DB), Stats(Db.Stats)
+
+{
+ SetExts(".deb");
+}
+ /*}}}*/
+// ContentsWriter::DoPackage - Process a single package /*{{{*/
+// ---------------------------------------------------------------------
+/* If Package is the empty string the control record will be parsed to
+ determine what the package name is. */
+bool ContentsWriter::DoPackage(string FileName, string Package)
+{
+ if (!Db.GetFileInfo(FileName,
+ Package.empty(), /* DoControl */
+ true, /* DoContents */
+ false, /* GenContentsOnly */
+ false, /* DoSource */
+ 0, /* DoHashes */
+ false /* checkMtime */))
+ {
+ return false;
+ }
+
+ // Parse the package name
+ if (Package.empty() == true)
+ {
+ Package = Db.Control.Section.FindS("Package");
+ }
+
+ Db.Contents.Add(Gen,Package);
+
+ return Db.Finish();
+}
+ /*}}}*/
+// ContentsWriter::ReadFromPkgs - Read from a packages file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool ContentsWriter::ReadFromPkgs(string const &PkgFile,string const &PkgCompress)
+{
+ MultiCompress Pkgs(PkgFile,PkgCompress,0,false);
+ if (_error->PendingError() == true)
+ return false;
+
+ // Open the package file
+ FileFd Fd;
+ if (Pkgs.OpenOld(Fd) == false)
+ return false;
+
+ pkgTagFile Tags(&Fd);
+ if (_error->PendingError() == true)
+ return false;
+
+ // Parse.
+ pkgTagSection Section;
+ while (Tags.Step(Section) == true)
+ {
+ string File = flCombine(Prefix,Section.FindS("FileName"));
+ string Package = Section.FindS("Section");
+ if (Package.empty() == false && Package.end()[-1] != '/')
+ {
+ Package += '/';
+ Package += Section.FindS("Package");
+ }
+ else
+ Package += Section.FindS("Package");
+
+ DoPackage(File,Package);
+ if (_error->empty() == false)
+ {
+ _error->Error("Errors apply to file '%s'",File.c_str());
+ _error->DumpErrors();
+ }
+ }
+
+ // Tidy the compressor
+ Fd.Close();
+
+ return true;
+}
+
+ /*}}}*/
+
+// ReleaseWriter::ReleaseWriter - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+static std::string formatUTCDateTime(time_t const now)
+{
+ bool const NumericTimezone = _config->FindB("APT::FTPArchive::Release::NumericTimezone", true);
+ // TimeRFC1123 uses GMT to satisfy HTTP/1.1
+ std::string datetime = TimeRFC1123(now, NumericTimezone);
+ if (NumericTimezone == false)
+ {
+ auto const lastspace = datetime.rfind(' ');
+ if (likely(lastspace != std::string::npos))
+ datetime.replace(lastspace + 1, 3, "UTC");
+ }
+ return datetime;
+}
+ReleaseWriter::ReleaseWriter(FileFd * const GivenOutput, string const &/*DB*/) : FTWScanner(GivenOutput)
+{
+ if (_config->FindB("APT::FTPArchive::Release::Default-Patterns", true) == true)
+ {
+ AddPattern("Packages");
+ AddPattern("Packages.*");
+ AddPattern("Translation-*");
+ AddPattern("Sources");
+ AddPattern("Sources.*");
+ AddPattern("Release");
+ AddPattern("Contents-*");
+ AddPattern("Index");
+ AddPattern("Index.*");
+ AddPattern("icons-*.tar");
+ AddPattern("icons-*.tar.*");
+ AddPattern("Components-*.yml");
+ AddPattern("Components-*.yml.*");
+ AddPattern("md5sum.txt");
+ }
+ AddPatterns(_config->FindVector("APT::FTPArchive::Release::Patterns"));
+
+ time_t const now = time(NULL);
+ time_t const validuntil = now + _config->FindI("APT::FTPArchive::Release::ValidTime", 0);
+
+ map<string,bool> BoolFields;
+ map<string,string> Fields;
+ Fields["Origin"] = "";
+ Fields["Label"] = "";
+ Fields["Suite"] = "";
+ Fields["Version"] = "";
+ Fields["Codename"] = "";
+ Fields["Date"] = formatUTCDateTime(now);
+ if (validuntil != now)
+ Fields["Valid-Until"] = formatUTCDateTime(validuntil);
+ Fields["Architectures"] = "";
+ Fields["Components"] = "";
+ Fields["Description"] = "";
+ Fields["Signed-By"] = "";
+ BoolFields["Acquire-By-Hash"] = _config->FindB("APT::FTPArchive::DoByHash", false);
+ BoolFields["NotAutomatic"] = false;
+ BoolFields["ButAutomaticUpgrades"] = false;
+
+ // Read configuration for string fields, but don't output them
+ for (auto &&I : Fields)
+ {
+ string Config = string("APT::FTPArchive::Release::") + I.first;
+ I.second = _config->Find(Config, I.second);
+ }
+
+ // Read configuration for bool fields, and add them to Fields if true
+ for (auto &&I : BoolFields)
+ {
+ string Config = string("APT::FTPArchive::Release::") + I.first;
+ I.second = _config->FindB(Config, I.second);
+ if (I.second)
+ Fields[I.first] = "yes";
+ }
+
+ // All configuration read and stored in Fields; output
+ for (auto &&I : Fields)
+ {
+ if (I.second.empty())
+ continue;
+ std::string const out = I.first + ": " + I.second + "\n";
+ Output->Write(out.c_str(), out.length());
+ }
+
+ ConfigToDoHashes(DoHashes, "APT::FTPArchive::Release");
+}
+ /*}}}*/
+// ReleaseWriter::DoPackage - Process a single package /*{{{*/
+// ---------------------------------------------------------------------
+bool ReleaseWriter::DoPackage(string FileName)
+{
+ // Strip the DirStrip prefix from the FileName and add the PathPrefix
+ string NewFileName;
+ if (DirStrip.empty() == false &&
+ FileName.length() > DirStrip.length() &&
+ stringcmp(FileName.begin(),FileName.begin() + DirStrip.length(),
+ DirStrip.begin(),DirStrip.end()) == 0)
+ {
+ NewFileName = string(FileName.begin() + DirStrip.length(),FileName.end());
+ while (NewFileName[0] == '/')
+ NewFileName = string(NewFileName.begin() + 1,NewFileName.end());
+ }
+ else
+ NewFileName = FileName;
+
+ if (PathPrefix.empty() == false)
+ NewFileName = flCombine(PathPrefix,NewFileName);
+
+ FileFd fd(FileName, FileFd::ReadOnly);
+
+ if (!fd.IsOpen())
+ {
+ return false;
+ }
+
+ CheckSums[NewFileName].size = fd.Size();
+
+ Hashes hs(DoHashes);
+ hs.AddFD(fd);
+ CheckSums[NewFileName].Hashes = hs.GetHashStringList();
+ fd.Close();
+
+ // FIXME: wrong layer in the code(?)
+ // FIXME2: symlink instead of create a copy
+ if (_config->FindB("APT::FTPArchive::DoByHash", false) == true)
+ {
+ std::string Input = FileName;
+ HashStringList hsl = hs.GetHashStringList();
+ for(HashStringList::const_iterator h = hsl.begin();
+ h != hsl.end(); ++h)
+ {
+ if (!h->usable())
+ continue;
+ if (flNotDir(FileName) == "Release" || flNotDir(FileName) == "InRelease")
+ continue;
+
+ std::string ByHashOutputFile = GenByHashFilename(Input, *h);
+ std::string ByHashOutputDir = flNotFile(ByHashOutputFile);
+ if(!CreateDirectory(flNotFile(Input), ByHashOutputDir))
+ return _error->Warning("can not create dir %s", flNotFile(ByHashOutputFile).c_str());
+
+ // write new hashes
+ FileFd In(Input, FileFd::ReadOnly);
+ FileFd Out(ByHashOutputFile, FileFd::WriteEmpty);
+ if(!CopyFile(In, Out))
+ return _error->Warning("failed to copy %s %s", Input.c_str(), ByHashOutputFile.c_str());
+ }
+ }
+
+ return true;
+}
+
+ /*}}}*/
+// ReleaseWriter::Finish - Output the checksums /*{{{*/
+// ---------------------------------------------------------------------
+static void printChecksumTypeRecord(FileFd &Output, char const * const Type, map<string, ReleaseWriter::CheckSum> const &CheckSums)
+{
+ {
+ std::string out;
+ strprintf(out, "%s:\n", Type);
+ Output.Write(out.c_str(), out.length());
+ }
+ for(map<string,ReleaseWriter::CheckSum>::const_iterator I = CheckSums.begin();
+ I != CheckSums.end(); ++I)
+ {
+ HashString const * const hs = I->second.Hashes.find(Type);
+ if (hs == NULL)
+ continue;
+ std::string out;
+ strprintf(out, " %s %16llu %s\n",
+ hs->HashValue().c_str(),
+ (*I).second.size,
+ (*I).first.c_str());
+ Output.Write(out.c_str(), out.length());
+ }
+}
+void ReleaseWriter::Finish()
+{
+ if ((DoHashes & Hashes::MD5SUM) == Hashes::MD5SUM)
+ printChecksumTypeRecord(*Output, "MD5Sum", CheckSums);
+ if ((DoHashes & Hashes::SHA1SUM) == Hashes::SHA1SUM)
+ printChecksumTypeRecord(*Output, "SHA1", CheckSums);
+ if ((DoHashes & Hashes::SHA256SUM) == Hashes::SHA256SUM)
+ printChecksumTypeRecord(*Output, "SHA256", CheckSums);
+ if ((DoHashes & Hashes::SHA512SUM) == Hashes::SHA512SUM)
+ printChecksumTypeRecord(*Output, "SHA512", CheckSums);
+
+ // go by-hash cleanup
+ map<string,ReleaseWriter::CheckSum>::const_iterator prev = CheckSums.begin();
+ if (_config->FindB("APT::FTPArchive::DoByHash", false) == true)
+ {
+ for(map<string,ReleaseWriter::CheckSum>::const_iterator I = CheckSums.begin();
+ I != CheckSums.end(); ++I)
+ {
+ if (I->first == "Release" || I->first == "InRelease")
+ continue;
+
+ // keep iterating until we find a new subdir
+ if(flNotFile(I->first) == flNotFile(prev->first))
+ continue;
+
+ // clean that subdir up
+ int keepFiles = _config->FindI("APT::FTPArchive::By-Hash-Keep", 3);
+ // calculate how many compressors are used (the amount of files
+ // in that subdir generated for this run)
+ keepFiles *= std::distance(prev, I);
+ prev = I;
+
+ HashStringList hsl = prev->second.Hashes;
+ for(HashStringList::const_iterator h = hsl.begin();
+ h != hsl.end(); ++h)
+ {
+
+ if (!h->usable())
+ continue;
+
+ std::string RealFilename = DirStrip+"/"+prev->first;
+ std::string ByHashOutputFile = GenByHashFilename(RealFilename, *h);
+ DeleteAllButMostRecent(flNotFile(ByHashOutputFile), keepFiles);
+ }
+ }
+ }
+}
diff --git a/ftparchive/writer.h b/ftparchive/writer.h
new file mode 100644
index 000000000..ea4c66da4
--- /dev/null
+++ b/ftparchive/writer.h
@@ -0,0 +1,206 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: writer.h,v 1.4.2.2 2003/12/26 22:55:43 mdz Exp $
+/* ######################################################################
+
+ Writer
+
+ The file writer classes. These write various types of output, sources,
+ packages and contents.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef WRITER_H
+#define WRITER_H
+
+#include <apt-pkg/hashes.h>
+
+#include <string>
+#include <stdio.h>
+#include <iostream>
+#include <vector>
+#include <map>
+#include <set>
+#include <stdlib.h>
+#include <sys/types.h>
+
+#include "contents.h"
+#include "cachedb.h"
+#include "override.h"
+#include "apt-ftparchive.h"
+
+using std::string;
+using std::cout;
+using std::endl;
+using std::vector;
+using std::map;
+
+class FTWScanner
+{
+ protected:
+ vector<string> Patterns;
+ string Arch;
+ bool IncludeArchAll;
+ const char *OriginalPath;
+ bool ErrorPrinted;
+
+ // Stuff for the delinker
+ bool NoLinkAct;
+
+ static FTWScanner *Owner;
+ static int ScannerFTW(const char *File,const struct stat *sb,int Flag);
+ static int ScannerFile(const char *File, bool const &ReadLink);
+
+ bool Delink(string &FileName,const char *OriginalPath,
+ unsigned long long &Bytes,unsigned long long const &FileSize);
+
+ inline void NewLine(unsigned const &Priority)
+ {
+ if (ErrorPrinted == false && Quiet <= Priority)
+ {
+ c1out << endl;
+ ErrorPrinted = true;
+ }
+ }
+
+ public:
+ FileFd *Output;
+ bool OwnsOutput;
+ unsigned int DoHashes;
+
+ unsigned long DeLinkLimit;
+ string InternalPrefix;
+
+ virtual bool DoPackage(string FileName) = 0;
+ bool RecursiveScan(string const &Dir);
+ bool LoadFileList(string const &BaseDir,string const &File);
+ void ClearPatterns() { Patterns.clear(); };
+ void AddPattern(string const &Pattern) { Patterns.push_back(Pattern); };
+ void AddPattern(char const *Pattern) { Patterns.push_back(Pattern); };
+ void AddPatterns(std::vector<std::string> const &patterns) { Patterns.insert(Patterns.end(), patterns.begin(), patterns.end()); };
+ bool SetExts(string const &Vals);
+
+ FTWScanner(FileFd * const Output, string const &Arch = string(), bool const IncludeArchAll = true);
+ virtual ~FTWScanner();
+};
+
+class MultiCompress;
+
+class TranslationWriter
+{
+ MultiCompress *Comp;
+ std::set<string> Included;
+ FileFd *Output;
+
+ public:
+ bool DoPackage(string const &Pkg, string const &Desc, string const &MD5);
+
+ TranslationWriter(string const &File, string const &TransCompress, mode_t const &Permissions);
+ ~TranslationWriter();
+};
+
+class PackagesWriter : public FTWScanner
+{
+ Override Over;
+ CacheDB Db;
+
+ public:
+
+ // Some flags
+ bool DoAlwaysStat;
+ bool NoOverride;
+ bool DoContents;
+ bool LongDescription;
+
+ // General options
+ string PathPrefix;
+ string DirStrip;
+ struct CacheDB::Stats &Stats;
+ TranslationWriter * const TransWriter;
+
+ inline bool ReadOverride(string const &File) {return Over.ReadOverride(File);};
+ inline bool ReadExtraOverride(string const &File)
+ {return Over.ReadExtraOverride(File);};
+ virtual bool DoPackage(string FileName) APT_OVERRIDE;
+
+ PackagesWriter(FileFd * const Output, TranslationWriter * const TransWriter, string const &DB,
+ string const &Overrides,
+ string const &ExtOverrides = "",
+ string const &Arch = "",
+ bool const IncludeArchAll = true);
+ virtual ~PackagesWriter();
+};
+
+class ContentsWriter : public FTWScanner
+{
+ CacheDB Db;
+
+ GenContents Gen;
+
+ public:
+
+ // General options
+ struct CacheDB::Stats &Stats;
+ string Prefix;
+
+ bool DoPackage(string FileName,string Package);
+ virtual bool DoPackage(string FileName) APT_OVERRIDE
+ {return DoPackage(FileName,string());};
+ bool ReadFromPkgs(string const &PkgFile,string const &PkgCompress);
+
+ void Finish() {Gen.Print(*Output);};
+ inline bool ReadyDB(string const &DB) {return Db.ReadyDB(DB);};
+
+ ContentsWriter(FileFd * const Output, string const &DB, string const &Arch = string(),
+ bool const IncludeArchAll = true);
+ virtual ~ContentsWriter() {};
+};
+
+class SourcesWriter : public FTWScanner
+{
+ CacheDB Db;
+ Override BOver;
+ Override SOver;
+ char *Buffer;
+ unsigned long long BufSize;
+
+ public:
+
+ bool NoOverride;
+ bool DoAlwaysStat;
+
+ // General options
+ string PathPrefix;
+ string DirStrip;
+ struct CacheDB::Stats &Stats;
+
+ virtual bool DoPackage(string FileName) APT_OVERRIDE;
+
+ SourcesWriter(FileFd * const Output, string const &DB,string const &BOverrides,string const &SOverrides,
+ string const &ExtOverrides=string());
+ virtual ~SourcesWriter() {free(Buffer);};
+};
+
+class ReleaseWriter : public FTWScanner
+{
+public:
+ ReleaseWriter(FileFd * const Output, string const &DB);
+ virtual bool DoPackage(string FileName) APT_OVERRIDE;
+ void Finish();
+
+ // General options
+ string PathPrefix;
+ string DirStrip;
+
+ struct CheckSum
+ {
+ HashStringList Hashes;
+ // Limited by FileFd::Size()
+ unsigned long long size;
+ ~CheckSum() {};
+ };
+protected:
+ map<string,struct CheckSum> CheckSums;
+};
+
+#endif
diff --git a/methods/CMakeLists.txt b/methods/CMakeLists.txt
new file mode 100644
index 000000000..a74c2ce07
--- /dev/null
+++ b/methods/CMakeLists.txt
@@ -0,0 +1,35 @@
+# Create the executable targets
+add_executable(file file.cc)
+add_executable(copy copy.cc)
+add_executable(store store.cc)
+add_executable(gpgv gpgv.cc)
+add_executable(cdrom cdrom.cc)
+add_executable(http http.cc http_main.cc rfc2553emu.cc connect.cc basehttp.cc)
+add_executable(mirror mirror.cc http.cc rfc2553emu.cc connect.cc basehttp.cc)
+add_executable(https https.cc basehttp.cc)
+add_executable(ftp ftp.cc rfc2553emu.cc connect.cc)
+add_executable(rred rred.cc)
+add_executable(rsh rsh.cc)
+
+# Add target-specific header directories
+target_include_directories(https PRIVATE ${CURL_INCLUDE_DIRS})
+
+# Link the executables against the libraries
+target_link_libraries(file apt-pkg)
+target_link_libraries(copy apt-pkg)
+target_link_libraries(store apt-pkg)
+target_link_libraries(gpgv apt-pkg)
+target_link_libraries(cdrom apt-pkg)
+target_link_libraries(http apt-pkg)
+target_link_libraries(mirror apt-pkg ${RESOLV_LIBRARIES})
+target_link_libraries(https apt-pkg ${CURL_LIBRARIES})
+target_link_libraries(ftp apt-pkg)
+target_link_libraries(rred apt-pkg)
+target_link_libraries(rsh apt-pkg)
+
+# Install the library
+install(TARGETS file copy store gpgv cdrom http https ftp rred rsh mirror
+ RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/apt/methods)
+
+add_slaves(${CMAKE_INSTALL_LIBEXECDIR}/apt/methods store gzip lzma bzip2 xz)
+add_slaves(${CMAKE_INSTALL_LIBEXECDIR}/apt/methods rsh ssh)
diff --git a/methods/aptmethod.h b/methods/aptmethod.h
new file mode 100644
index 000000000..04c4fa99b
--- /dev/null
+++ b/methods/aptmethod.h
@@ -0,0 +1,151 @@
+#ifndef APT_APTMETHOD_H
+#define APT_APTMETHOD_H
+
+#include <apt-pkg/acquire-method.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+
+#include <algorithm>
+#include <locale>
+#include <string>
+#include <vector>
+
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <apti18n.h>
+
+static bool hasDoubleColon(std::string const &n)
+{
+ return n.find("::") != std::string::npos;
+}
+
+class aptMethod : public pkgAcqMethod
+{
+protected:
+ std::string const Binary;
+
+public:
+ virtual bool Configuration(std::string Message) APT_OVERRIDE
+ {
+ if (pkgAcqMethod::Configuration(Message) == false)
+ return false;
+
+ std::string const conf = std::string("Binary::") + Binary;
+ _config->MoveSubTree(conf.c_str(), NULL);
+
+ DropPrivsOrDie();
+
+ return true;
+ }
+
+ bool CalculateHashes(FetchItem const * const Itm, FetchResult &Res) const APT_NONNULL(2)
+ {
+ Hashes Hash(Itm->ExpectedHashes);
+ FileFd Fd;
+ if (Fd.Open(Res.Filename, FileFd::ReadOnly) == false || Hash.AddFD(Fd) == false)
+ return false;
+ Res.TakeHashes(Hash);
+ return true;
+ }
+
+ void Warning(const char *Format,...)
+ {
+ va_list args;
+ va_start(args,Format);
+ PrintStatus("104 Warning", Format, args);
+ va_end(args);
+ }
+
+ std::vector<std::string> methodNames;
+ void setPostfixForMethodNames(char const * const postfix) APT_NONNULL(2)
+ {
+ methodNames.erase(std::remove_if(methodNames.begin(), methodNames.end(), hasDoubleColon), methodNames.end());
+ decltype(methodNames) toAdd;
+ for (auto && name: methodNames)
+ toAdd.emplace_back(name + "::" + postfix);
+ std::move(toAdd.begin(), toAdd.end(), std::back_inserter(methodNames));
+ }
+ bool DebugEnabled() const
+ {
+ if (methodNames.empty())
+ return false;
+ auto const sni = std::find_if_not(methodNames.crbegin(), methodNames.crend(), hasDoubleColon);
+ if (unlikely(sni == methodNames.crend()))
+ return false;
+ auto const ln = methodNames[methodNames.size() - 1];
+ // worst case: all three are the same
+ std::string confln, confsn, confpn;
+ strprintf(confln, "Debug::Acquire::%s", ln.c_str());
+ strprintf(confsn, "Debug::Acquire::%s", sni->c_str());
+ auto const pni = sni->substr(0, sni->find('+'));
+ strprintf(confpn, "Debug::Acquire::%s", pni.c_str());
+ return _config->FindB(confln,_config->FindB(confsn, _config->FindB(confpn, false)));
+ }
+ std::string ConfigFind(char const * const postfix, std::string const &defValue) const APT_NONNULL(2)
+ {
+ for (auto name = methodNames.rbegin(); name != methodNames.rend(); ++name)
+ {
+ std::string conf;
+ strprintf(conf, "Acquire::%s::%s", name->c_str(), postfix);
+ auto const value = _config->Find(conf);
+ if (value.empty() == false)
+ return value;
+ }
+ return defValue;
+ }
+ std::string ConfigFind(std::string const &postfix, std::string const &defValue) const
+ {
+ return ConfigFind(postfix.c_str(), defValue);
+ }
+ bool ConfigFindB(char const * const postfix, bool const defValue) const APT_NONNULL(2)
+ {
+ return StringToBool(ConfigFind(postfix, defValue ? "yes" : "no"), defValue);
+ }
+ int ConfigFindI(char const * const postfix, int const defValue) const APT_NONNULL(2)
+ {
+ char *End;
+ std::string const value = ConfigFind(postfix, "");
+ auto const Res = strtol(value.c_str(), &End, 0);
+ if (value.c_str() == End)
+ return defValue;
+ return Res;
+ }
+
+ bool TransferModificationTimes(char const * const From, char const * const To, time_t &LastModified) APT_NONNULL(2, 3)
+ {
+ if (strcmp(To, "/dev/null") == 0)
+ return true;
+
+ struct stat Buf2;
+ if (lstat(To, &Buf2) != 0 || S_ISLNK(Buf2.st_mode))
+ return true;
+
+ struct stat Buf;
+ if (stat(From, &Buf) != 0)
+ return _error->Errno("stat",_("Failed to stat"));
+
+ // we don't use utimensat here for compatibility reasons: #738567
+ struct timeval times[2];
+ times[0].tv_sec = Buf.st_atime;
+ LastModified = times[1].tv_sec = Buf.st_mtime;
+ times[0].tv_usec = times[1].tv_usec = 0;
+ if (utimes(To, times) != 0)
+ return _error->Errno("utimes",_("Failed to set modification time"));
+ return true;
+ }
+
+ aptMethod(std::string &&Binary, char const * const Ver, unsigned long const Flags) APT_NONNULL(3) :
+ pkgAcqMethod(Ver, Flags), Binary(Binary), methodNames({Binary})
+ {
+ try {
+ std::locale::global(std::locale(""));
+ } catch (...) {
+ setlocale(LC_ALL, "");
+ }
+ }
+};
+
+#endif
diff --git a/methods/basehttp.cc b/methods/basehttp.cc
new file mode 100644
index 000000000..d7d9bccd0
--- /dev/null
+++ b/methods/basehttp.cc
@@ -0,0 +1,829 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ HTTP and HTTPS share a lot of common code and these classes are
+ exactly the dumping ground for this common code
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+
+#include <ctype.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <time.h>
+#include <unistd.h>
+#include <iostream>
+#include <limits>
+#include <map>
+#include <string>
+#include <vector>
+
+#include "basehttp.h"
+
+#include <apti18n.h>
+ /*}}}*/
+using namespace std;
+
+string BaseHttpMethod::FailFile;
+int BaseHttpMethod::FailFd = -1;
+time_t BaseHttpMethod::FailTime = 0;
+
+// ServerState::RunHeaders - Get the headers before the data /*{{{*/
+// ---------------------------------------------------------------------
+/* Returns 0 if things are OK, 1 if an IO error occurred and 2 if a header
+ parse error occurred */
+ServerState::RunHeadersResult ServerState::RunHeaders(RequestState &Req,
+ const std::string &Uri)
+{
+ Owner->Status(_("Waiting for headers"));
+ do
+ {
+ string Data;
+ if (ReadHeaderLines(Data) == false)
+ continue;
+
+ if (Owner->Debug == true)
+ clog << "Answer for: " << Uri << endl << Data;
+
+ for (string::const_iterator I = Data.begin(); I < Data.end(); ++I)
+ {
+ string::const_iterator J = I;
+ for (; J != Data.end() && *J != '\n' && *J != '\r'; ++J);
+ if (Req.HeaderLine(string(I,J)) == false)
+ return RUN_HEADERS_PARSE_ERROR;
+ I = J;
+ }
+
+ // 100 Continue is a Nop...
+ if (Req.Result == 100)
+ continue;
+
+ // Tidy up the connection persistence state.
+ if (Req.Encoding == RequestState::Closes && Req.HaveContent == true)
+ Persistent = false;
+
+ return RUN_HEADERS_OK;
+ }
+ while (LoadNextResponse(false, Req) == true);
+
+ return RUN_HEADERS_IO_ERROR;
+}
+ /*}}}*/
+bool RequestState::HeaderLine(string const &Line) /*{{{*/
+{
+ if (Line.empty() == true)
+ return true;
+
+ if (Line.size() > 4 && stringcasecmp(Line.data(), Line.data()+4, "HTTP") == 0)
+ {
+ // Evil servers return no version
+ if (Line[4] == '/')
+ {
+ int const elements = sscanf(Line.c_str(),"HTTP/%3u.%3u %3u%359[^\n]",&Major,&Minor,&Result,Code);
+ if (elements == 3)
+ {
+ Code[0] = '\0';
+ if (Owner != NULL && Owner->Debug == true)
+ clog << "HTTP server doesn't give Reason-Phrase for " << std::to_string(Result) << std::endl;
+ }
+ else if (elements != 4)
+ return _error->Error(_("The HTTP server sent an invalid reply header"));
+ }
+ else
+ {
+ Major = 0;
+ Minor = 9;
+ if (sscanf(Line.c_str(),"HTTP %3u%359[^\n]",&Result,Code) != 2)
+ return _error->Error(_("The HTTP server sent an invalid reply header"));
+ }
+
+ /* Check the HTTP response header to get the default persistence
+ state. */
+ if (Major < 1)
+ Server->Persistent = false;
+ else
+ {
+ if (Major == 1 && Minor == 0)
+ {
+ Server->Persistent = false;
+ }
+ else
+ {
+ Server->Persistent = true;
+ if (Server->PipelineAllowed)
+ Server->Pipeline = true;
+ }
+ }
+
+ return true;
+ }
+
+ // Blah, some servers use "connection:closes", evil.
+ // and some even send empty header fields…
+ string::size_type Pos = Line.find(':');
+ if (Pos == string::npos)
+ return _error->Error(_("Bad header line"));
+ ++Pos;
+
+ // Parse off any trailing spaces between the : and the next word.
+ string::size_type Pos2 = Pos;
+ while (Pos2 < Line.length() && isspace_ascii(Line[Pos2]) != 0)
+ Pos2++;
+
+ string const Tag(Line,0,Pos);
+ string const Val(Line,Pos2);
+
+ if (stringcasecmp(Tag,"Content-Length:") == 0)
+ {
+ if (Encoding == Closes)
+ Encoding = Stream;
+ HaveContent = true;
+
+ unsigned long long * DownloadSizePtr = &DownloadSize;
+ if (Result == 416 || (Result >= 300 && Result < 400))
+ DownloadSizePtr = &JunkSize;
+
+ *DownloadSizePtr = strtoull(Val.c_str(), NULL, 10);
+ if (*DownloadSizePtr >= std::numeric_limits<unsigned long long>::max())
+ return _error->Errno("HeaderLine", _("The HTTP server sent an invalid Content-Length header"));
+ else if (*DownloadSizePtr == 0)
+ HaveContent = false;
+
+ // On partial content (206) the Content-Length less than the real
+ // size, so do not set it here but leave that to the Content-Range
+ // header instead
+ if(Result != 206 && TotalFileSize == 0)
+ TotalFileSize = DownloadSize;
+
+ return true;
+ }
+
+ if (stringcasecmp(Tag,"Content-Type:") == 0)
+ {
+ HaveContent = true;
+ return true;
+ }
+
+ // The Content-Range field only has a meaning in HTTP/1.1 for the
+ // 206 (Partial Content) and 416 (Range Not Satisfiable) responses
+ // according to RFC7233 "Range Requests", §4.2, so only consider it
+ // for such responses.
+ if ((Result == 416 || Result == 206) && stringcasecmp(Tag,"Content-Range:") == 0)
+ {
+ HaveContent = true;
+
+ // §14.16 says 'byte-range-resp-spec' should be a '*' in case of 416
+ if (Result == 416 && sscanf(Val.c_str(), "bytes */%llu",&TotalFileSize) == 1)
+ ; // we got the expected filesize which is all we wanted
+ else if (sscanf(Val.c_str(),"bytes %llu-%*u/%llu",&StartPos,&TotalFileSize) != 2)
+ return _error->Error(_("The HTTP server sent an invalid Content-Range header"));
+ if ((unsigned long long)StartPos > TotalFileSize)
+ return _error->Error(_("This HTTP server has broken range support"));
+
+ // figure out what we will download
+ DownloadSize = TotalFileSize - StartPos;
+ return true;
+ }
+
+ if (stringcasecmp(Tag,"Transfer-Encoding:") == 0)
+ {
+ HaveContent = true;
+ if (stringcasecmp(Val,"chunked") == 0)
+ Encoding = Chunked;
+ return true;
+ }
+
+ if (stringcasecmp(Tag,"Connection:") == 0)
+ {
+ if (stringcasecmp(Val,"close") == 0)
+ {
+ Server->Persistent = false;
+ Server->Pipeline = false;
+ /* Some servers send error pages (as they are dynamically generated)
+ for simplicity via a connection close instead of e.g. chunked,
+ so assuming an always closing server only if we get a file + close */
+ if (Result >= 200 && Result < 300)
+ Server->PipelineAllowed = false;
+ }
+ else if (stringcasecmp(Val,"keep-alive") == 0)
+ Server->Persistent = true;
+ return true;
+ }
+
+ if (stringcasecmp(Tag,"Last-Modified:") == 0)
+ {
+ if (RFC1123StrToTime(Val.c_str(), Date) == false)
+ return _error->Error(_("Unknown date format"));
+ return true;
+ }
+
+ if (stringcasecmp(Tag,"Location:") == 0)
+ {
+ Location = Val;
+ return true;
+ }
+
+ if (stringcasecmp(Tag, "Accept-Ranges:") == 0)
+ {
+ std::string ranges = ',' + Val + ',';
+ ranges.erase(std::remove(ranges.begin(), ranges.end(), ' '), ranges.end());
+ if (ranges.find(",bytes,") == std::string::npos)
+ Server->RangesAllowed = false;
+ return true;
+ }
+
+ return true;
+}
+ /*}}}*/
+// ServerState::ServerState - Constructor /*{{{*/
+ServerState::ServerState(URI Srv, BaseHttpMethod *Owner) :
+ ServerName(Srv), TimeOut(120), Owner(Owner)
+{
+ Reset();
+}
+ /*}}}*/
+bool RequestState::AddPartialFileToHashes(FileFd &File) /*{{{*/
+{
+ File.Truncate(StartPos);
+ return Server->GetHashes()->AddFD(File, StartPos);
+}
+ /*}}}*/
+void ServerState::Reset() /*{{{*/
+{
+ Persistent = false;
+ Pipeline = false;
+ PipelineAllowed = true;
+ RangesAllowed = true;
+}
+ /*}}}*/
+
+// BaseHttpMethod::DealWithHeaders - Handle the retrieved header data /*{{{*/
+// ---------------------------------------------------------------------
+/* We look at the header data we got back from the server and decide what
+ to do. Returns DealWithHeadersResult (see http.h for details).
+ */
+BaseHttpMethod::DealWithHeadersResult
+BaseHttpMethod::DealWithHeaders(FetchResult &Res, RequestState &Req)
+{
+ // Not Modified
+ if (Req.Result == 304)
+ {
+ RemoveFile("server", Queue->DestFile);
+ Res.IMSHit = true;
+ Res.LastModified = Queue->LastModified;
+ Res.Size = 0;
+ return IMS_HIT;
+ }
+
+ /* Redirect
+ *
+ * Note that it is only OK for us to treat all redirection the same
+ * because we *always* use GET, not other HTTP methods. There are
+ * three redirection codes for which it is not appropriate that we
+ * redirect. Pass on those codes so the error handling kicks in.
+ */
+ if (AllowRedirect
+ && (Req.Result > 300 && Req.Result < 400)
+ && (Req.Result != 300 // Multiple Choices
+ && Req.Result != 304 // Not Modified
+ && Req.Result != 306)) // (Not part of HTTP/1.1, reserved)
+ {
+ if (Req.Location.empty() == true)
+ ;
+ else if (Req.Location[0] == '/' && Queue->Uri.empty() == false)
+ {
+ URI Uri = Queue->Uri;
+ if (Uri.Host.empty() == false)
+ NextURI = URI::SiteOnly(Uri);
+ else
+ NextURI.clear();
+ NextURI.append(DeQuoteString(Req.Location));
+ if (Queue->Uri == NextURI)
+ {
+ SetFailReason("RedirectionLoop");
+ _error->Error("Redirection loop encountered");
+ if (Req.HaveContent == true)
+ return ERROR_WITH_CONTENT_PAGE;
+ return ERROR_UNRECOVERABLE;
+ }
+ return TRY_AGAIN_OR_REDIRECT;
+ }
+ else
+ {
+ NextURI = DeQuoteString(Req.Location);
+ URI tmpURI = NextURI;
+ if (tmpURI.Access.find('+') != std::string::npos)
+ {
+ _error->Error("Server tried to trick us into using a specific implementation: %s", tmpURI.Access.c_str());
+ if (Req.HaveContent == true)
+ return ERROR_WITH_CONTENT_PAGE;
+ return ERROR_UNRECOVERABLE;
+ }
+ URI Uri = Queue->Uri;
+ if (Binary.find('+') != std::string::npos)
+ {
+ auto base = Binary.substr(0, Binary.find('+'));
+ if (base != tmpURI.Access)
+ {
+ tmpURI.Access = base + '+' + tmpURI.Access;
+ if (tmpURI.Access == Binary)
+ {
+ std::string tmpAccess = Uri.Access;
+ std::swap(tmpURI.Access, Uri.Access);
+ NextURI = tmpURI;
+ std::swap(tmpURI.Access, Uri.Access);
+ }
+ else
+ NextURI = tmpURI;
+ }
+ }
+ if (Queue->Uri == NextURI)
+ {
+ SetFailReason("RedirectionLoop");
+ _error->Error("Redirection loop encountered");
+ if (Req.HaveContent == true)
+ return ERROR_WITH_CONTENT_PAGE;
+ return ERROR_UNRECOVERABLE;
+ }
+ Uri.Access = Binary;
+ // same protocol redirects are okay
+ if (tmpURI.Access == Uri.Access)
+ return TRY_AGAIN_OR_REDIRECT;
+ // as well as http to https
+ else if ((Uri.Access == "http" || Uri.Access == "https+http") && tmpURI.Access == "https")
+ return TRY_AGAIN_OR_REDIRECT;
+ else
+ {
+ auto const tmpplus = tmpURI.Access.find('+');
+ if (tmpplus != std::string::npos && tmpURI.Access.substr(tmpplus + 1) == "https")
+ {
+ auto const uriplus = Uri.Access.find('+');
+ if (uriplus == std::string::npos)
+ {
+ if (Uri.Access == tmpURI.Access.substr(0, tmpplus)) // foo -> foo+https
+ return TRY_AGAIN_OR_REDIRECT;
+ }
+ else if (Uri.Access.substr(uriplus + 1) == "http" &&
+ Uri.Access.substr(0, uriplus) == tmpURI.Access.substr(0, tmpplus)) // foo+http -> foo+https
+ return TRY_AGAIN_OR_REDIRECT;
+ }
+ }
+ _error->Error("Redirection from %s to '%s' is forbidden", Uri.Access.c_str(), NextURI.c_str());
+ }
+ /* else pass through for error message */
+ }
+ // retry after an invalid range response without partial data
+ else if (Req.Result == 416)
+ {
+ struct stat SBuf;
+ if (stat(Queue->DestFile.c_str(),&SBuf) >= 0 && SBuf.st_size > 0)
+ {
+ bool partialHit = false;
+ if (Queue->ExpectedHashes.usable() == true)
+ {
+ Hashes resultHashes(Queue->ExpectedHashes);
+ FileFd file(Queue->DestFile, FileFd::ReadOnly);
+ Req.TotalFileSize = file.FileSize();
+ Req.Date = file.ModificationTime();
+ resultHashes.AddFD(file);
+ HashStringList const hashList = resultHashes.GetHashStringList();
+ partialHit = (Queue->ExpectedHashes == hashList);
+ }
+ else if ((unsigned long long)SBuf.st_size == Req.TotalFileSize)
+ partialHit = true;
+ if (partialHit == true)
+ {
+ // the file is completely downloaded, but was not moved
+ if (Req.HaveContent == true)
+ {
+ // nuke the sent error page
+ Server->RunDataToDevNull(Req);
+ Req.HaveContent = false;
+ }
+ Req.StartPos = Req.TotalFileSize;
+ Req.Result = 200;
+ }
+ else if (RemoveFile("server", Queue->DestFile))
+ {
+ NextURI = Queue->Uri;
+ return TRY_AGAIN_OR_REDIRECT;
+ }
+ }
+ }
+
+ /* We have a reply we don't handle. This should indicate a perm server
+ failure */
+ if (Req.Result < 200 || Req.Result >= 300)
+ {
+ if (_error->PendingError() == false)
+ {
+ std::string err;
+ strprintf(err, "HttpError%u", Req.Result);
+ SetFailReason(err);
+ _error->Error("%u %s", Req.Result, Req.Code);
+ }
+ if (Req.HaveContent == true)
+ return ERROR_WITH_CONTENT_PAGE;
+ return ERROR_UNRECOVERABLE;
+ }
+
+ // This is some sort of 2xx 'data follows' reply
+ Res.LastModified = Req.Date;
+ Res.Size = Req.TotalFileSize;
+ return FILE_IS_OPEN;
+}
+ /*}}}*/
+// BaseHttpMethod::SigTerm - Handle a fatal signal /*{{{*/
+// ---------------------------------------------------------------------
+/* This closes and timestamps the open file. This is necessary to get
+ resume behavior on user abort */
+void BaseHttpMethod::SigTerm(int)
+{
+ if (FailFd == -1)
+ _exit(100);
+
+ struct timeval times[2];
+ times[0].tv_sec = FailTime;
+ times[1].tv_sec = FailTime;
+ times[0].tv_usec = times[1].tv_usec = 0;
+ utimes(FailFile.c_str(), times);
+ close(FailFd);
+
+ _exit(100);
+}
+ /*}}}*/
+// BaseHttpMethod::Fetch - Fetch an item /*{{{*/
+// ---------------------------------------------------------------------
+/* This adds an item to the pipeline. We keep the pipeline at a fixed
+ depth. */
+bool BaseHttpMethod::Fetch(FetchItem *)
+{
+ if (Server == nullptr || QueueBack == nullptr)
+ return true;
+
+ // If pipelining is disabled, we only queue 1 request
+ auto const AllowedDepth = Server->Pipeline ? PipelineDepth : 0;
+ // how deep is our pipeline currently?
+ decltype(PipelineDepth) CurrentDepth = 0;
+ for (FetchItem const *I = Queue; I != QueueBack; I = I->Next)
+ ++CurrentDepth;
+ if (CurrentDepth > AllowedDepth)
+ return true;
+
+ do {
+ // Make sure we stick with the same server
+ if (Server->Comp(QueueBack->Uri) == false)
+ break;
+
+ bool const UsableHashes = QueueBack->ExpectedHashes.usable();
+ // if we have no hashes, do at most one such request
+ // as we can't fixup pipeling misbehaviors otherwise
+ if (CurrentDepth != 0 && UsableHashes == false)
+ break;
+
+ if (UsableHashes && FileExists(QueueBack->DestFile))
+ {
+ FileFd partial(QueueBack->DestFile, FileFd::ReadOnly);
+ Hashes wehave(QueueBack->ExpectedHashes);
+ if (QueueBack->ExpectedHashes.FileSize() == partial.FileSize())
+ {
+ if (wehave.AddFD(partial) &&
+ wehave.GetHashStringList() == QueueBack->ExpectedHashes)
+ {
+ FetchResult Res;
+ Res.Filename = QueueBack->DestFile;
+ Res.ResumePoint = QueueBack->ExpectedHashes.FileSize();
+ URIStart(Res);
+ // move item to the start of the queue as URIDone will
+ // always dequeued the first item in the queue
+ if (Queue != QueueBack)
+ {
+ FetchItem *Prev = Queue;
+ for (; Prev->Next != QueueBack; Prev = Prev->Next)
+ /* look for the previous queue item */;
+ Prev->Next = QueueBack->Next;
+ QueueBack->Next = Queue;
+ Queue = QueueBack;
+ QueueBack = Prev->Next;
+ }
+ Res.TakeHashes(wehave);
+ URIDone(Res);
+ continue;
+ }
+ else
+ RemoveFile("Fetch-Partial", QueueBack->DestFile);
+ }
+ }
+ auto const Tmp = QueueBack;
+ QueueBack = QueueBack->Next;
+ SendReq(Tmp);
+ ++CurrentDepth;
+ } while (CurrentDepth <= AllowedDepth && QueueBack != nullptr);
+
+ return true;
+}
+ /*}}}*/
+// BaseHttpMethod::Loop - Main loop /*{{{*/
+int BaseHttpMethod::Loop()
+{
+ signal(SIGTERM,SigTerm);
+ signal(SIGINT,SigTerm);
+
+ Server = 0;
+
+ int FailCounter = 0;
+ while (1)
+ {
+ // We have no commands, wait for some to arrive
+ if (Queue == 0)
+ {
+ if (WaitFd(STDIN_FILENO) == false)
+ return 0;
+ }
+
+ /* Run messages, we can accept 0 (no message) if we didn't
+ do a WaitFd above.. Otherwise the FD is closed. */
+ int Result = Run(true);
+ if (Result != -1 && (Result != 0 || Queue == 0))
+ {
+ if(FailReason.empty() == false ||
+ ConfigFindB("DependOnSTDIN", true) == true)
+ return 100;
+ else
+ return 0;
+ }
+
+ if (Queue == 0)
+ continue;
+
+ // Connect to the server
+ if (Server == 0 || Server->Comp(Queue->Uri) == false)
+ {
+ Server = CreateServerState(Queue->Uri);
+ setPostfixForMethodNames(::URI(Queue->Uri).Host.c_str());
+ AllowRedirect = ConfigFindB("AllowRedirect", true);
+ PipelineDepth = ConfigFindI("Pipeline-Depth", 10);
+ Debug = DebugEnabled();
+ }
+
+ /* If the server has explicitly said this is the last connection
+ then we pre-emptively shut down the pipeline and tear down
+ the connection. This will speed up HTTP/1.0 servers a tad
+ since we don't have to wait for the close sequence to
+ complete */
+ if (Server->Persistent == false)
+ Server->Close();
+
+ // Reset the pipeline
+ if (Server->IsOpen() == false)
+ QueueBack = Queue;
+
+ // Connect to the host
+ if (Server->Open() == false)
+ {
+ Fail(true);
+ Server = nullptr;
+ continue;
+ }
+
+ // Fill the pipeline.
+ Fetch(0);
+
+ RequestState Req(this, Server.get());
+ // Fetch the next URL header data from the server.
+ switch (Server->RunHeaders(Req, Queue->Uri))
+ {
+ case ServerState::RUN_HEADERS_OK:
+ break;
+
+ // The header data is bad
+ case ServerState::RUN_HEADERS_PARSE_ERROR:
+ {
+ _error->Error(_("Bad header data"));
+ Fail(true);
+ Server->Close();
+ RotateDNS();
+ continue;
+ }
+
+ // The server closed a connection during the header get..
+ default:
+ case ServerState::RUN_HEADERS_IO_ERROR:
+ {
+ FailCounter++;
+ _error->Discard();
+ Server->Close();
+ Server->Pipeline = false;
+ Server->PipelineAllowed = false;
+
+ if (FailCounter >= 2)
+ {
+ Fail(_("Connection failed"),true);
+ FailCounter = 0;
+ }
+
+ RotateDNS();
+ continue;
+ }
+ };
+
+ // Decide what to do.
+ FetchResult Res;
+ Res.Filename = Queue->DestFile;
+ switch (DealWithHeaders(Res, Req))
+ {
+ // Ok, the file is Open
+ case FILE_IS_OPEN:
+ {
+ URIStart(Res);
+
+ // Run the data
+ bool Result = true;
+
+ // ensure we don't fetch too much
+ // we could do "Server->MaximumSize = Queue->MaximumSize" here
+ // but that would break the clever pipeline messup detection
+ // so instead we use the size of the biggest item in the queue
+ Req.MaximumSize = FindMaximumObjectSizeInQueue();
+
+ if (Req.HaveContent)
+ Result = Server->RunData(Req);
+
+ /* If the server is sending back sizeless responses then fill in
+ the size now */
+ if (Res.Size == 0)
+ Res.Size = Req.File.Size();
+
+ // Close the file, destroy the FD object and timestamp it
+ FailFd = -1;
+ Req.File.Close();
+
+ // Timestamp
+ struct timeval times[2];
+ times[0].tv_sec = times[1].tv_sec = Req.Date;
+ times[0].tv_usec = times[1].tv_usec = 0;
+ utimes(Queue->DestFile.c_str(), times);
+
+ // Send status to APT
+ if (Result == true)
+ {
+ Hashes * const resultHashes = Server->GetHashes();
+ HashStringList const hashList = resultHashes->GetHashStringList();
+ if (PipelineDepth != 0 && Queue->ExpectedHashes.usable() == true && Queue->ExpectedHashes != hashList)
+ {
+ // we did not get the expected hash… mhhh:
+ // could it be that server/proxy messed up pipelining?
+ FetchItem * BeforeI = Queue;
+ for (FetchItem *I = Queue->Next; I != 0 && I != QueueBack; I = I->Next)
+ {
+ if (I->ExpectedHashes.usable() == true && I->ExpectedHashes == hashList)
+ {
+ // yes, he did! Disable pipelining and rewrite queue
+ if (Server->Pipeline == true)
+ {
+ Warning(_("Automatically disabled %s due to incorrect response from server/proxy. (man 5 apt.conf)"), "Acquire::http::Pipeline-Depth");
+ Server->Pipeline = false;
+ Server->PipelineAllowed = false;
+ // we keep the PipelineDepth value so that the rest of the queue can be fixed up as well
+ }
+ Rename(Res.Filename, I->DestFile);
+ Res.Filename = I->DestFile;
+ BeforeI->Next = I->Next;
+ I->Next = Queue;
+ Queue = I;
+ break;
+ }
+ BeforeI = I;
+ }
+ }
+ Res.TakeHashes(*resultHashes);
+ URIDone(Res);
+ }
+ else
+ {
+ if (Server->IsOpen() == false)
+ {
+ FailCounter++;
+ _error->Discard();
+ Server->Close();
+
+ if (FailCounter >= 2)
+ {
+ Fail(_("Connection failed"),true);
+ FailCounter = 0;
+ }
+
+ QueueBack = Queue;
+ }
+ else
+ {
+ Server->Close();
+ Fail(true);
+ }
+ }
+ break;
+ }
+
+ // IMS hit
+ case IMS_HIT:
+ {
+ URIDone(Res);
+ break;
+ }
+
+ // Hard server error, not found or something
+ case ERROR_UNRECOVERABLE:
+ {
+ Fail();
+ break;
+ }
+
+ // Hard internal error, kill the connection and fail
+ case ERROR_NOT_FROM_SERVER:
+ {
+ Fail();
+ RotateDNS();
+ Server->Close();
+ break;
+ }
+
+ // We need to flush the data, the header is like a 404 w/ error text
+ case ERROR_WITH_CONTENT_PAGE:
+ {
+ Server->RunDataToDevNull(Req);
+ Fail();
+ break;
+ }
+
+ // Try again with a new URL
+ case TRY_AGAIN_OR_REDIRECT:
+ {
+ // Clear rest of response if there is content
+ if (Req.HaveContent)
+ Server->RunDataToDevNull(Req);
+ Redirect(NextURI);
+ break;
+ }
+
+ default:
+ Fail(_("Internal error"));
+ break;
+ }
+
+ FailCounter = 0;
+ }
+
+ return 0;
+}
+ /*}}}*/
+unsigned long long BaseHttpMethod::FindMaximumObjectSizeInQueue() const /*{{{*/
+{
+ unsigned long long MaxSizeInQueue = 0;
+ for (FetchItem *I = Queue; I != 0 && I != QueueBack; I = I->Next)
+ MaxSizeInQueue = std::max(MaxSizeInQueue, I->MaximumSize);
+ return MaxSizeInQueue;
+}
+ /*}}}*/
+BaseHttpMethod::BaseHttpMethod(std::string &&Binary, char const * const Ver,unsigned long const Flags) :/*{{{*/
+ aptMethod(std::move(Binary), Ver, Flags), Server(nullptr), PipelineDepth(10),
+ AllowRedirect(false), Debug(false)
+{
+}
+ /*}}}*/
+bool BaseHttpMethod::Configuration(std::string Message) /*{{{*/
+{
+ if (aptMethod::Configuration(Message) == false)
+ return false;
+
+ _config->CndSet("Acquire::tor::Proxy",
+ "socks5h://apt-transport-tor@localhost:9050");
+ return true;
+}
+ /*}}}*/
+bool BaseHttpMethod::AddProxyAuth(URI &Proxy, URI const &Server) const /*{{{*/
+{
+ if (std::find(methodNames.begin(), methodNames.end(), "tor") != methodNames.end() &&
+ Proxy.User == "apt-transport-tor" && Proxy.Password.empty())
+ {
+ std::string pass = Server.Host;
+ pass.erase(std::remove_if(pass.begin(), pass.end(), [](char const c) { return std::isalnum(c) == 0; }), pass.end());
+ if (pass.length() > 255)
+ Proxy.Password = pass.substr(0, 255);
+ else
+ Proxy.Password = std::move(pass);
+ }
+ // FIXME: should we support auth.conf for proxies?
+ return true;
+}
+ /*}}}*/
diff --git a/methods/basehttp.h b/methods/basehttp.h
new file mode 100644
index 000000000..41a9a4306
--- /dev/null
+++ b/methods/basehttp.h
@@ -0,0 +1,173 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Classes dealing with the abstraction of talking to a end via a text
+ protocol like HTTP (which is used by the http and https methods)
+
+ ##################################################################### */
+ /*}}}*/
+
+#ifndef APT_SERVER_H
+#define APT_SERVER_H
+
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/fileutl.h>
+#include "aptmethod.h"
+
+#include <time.h>
+#include <iostream>
+#include <string>
+#include <memory>
+
+using std::cout;
+using std::endl;
+
+class Hashes;
+class BaseHttpMethod;
+struct ServerState;
+
+struct RequestState
+{
+ unsigned int Major = 0;
+ unsigned int Minor = 0;
+ unsigned int Result = 0;
+ char Code[360];
+
+ // total size of the usable content (aka: the file)
+ unsigned long long TotalFileSize = 0;
+ // size we actually download (can be smaller than Size if we have partial content)
+ unsigned long long DownloadSize = 0;
+ // size of junk content (aka: server error pages)
+ unsigned long long JunkSize = 0;
+ // The start of the data (for partial content)
+ unsigned long long StartPos = 0;
+
+ unsigned long long MaximumSize = 0;
+
+ time_t Date;
+ bool HaveContent = false;
+ enum {Chunked,Stream,Closes} Encoding = Closes;
+ enum {Header, Data} State = Header;
+ std::string Location;
+
+ FileFd File;
+
+ BaseHttpMethod * const Owner;
+ ServerState * const Server;
+
+ bool HeaderLine(std::string const &Line);
+ bool AddPartialFileToHashes(FileFd &File);
+
+ RequestState(BaseHttpMethod * const Owner, ServerState * const Server) :
+ Owner(Owner), Server(Server) { time(&Date); }
+};
+
+struct ServerState
+{
+ bool Persistent;
+ bool PipelineAllowed;
+ bool RangesAllowed;
+
+ bool Pipeline;
+ URI ServerName;
+ URI Proxy;
+ unsigned long TimeOut;
+
+ protected:
+ BaseHttpMethod *Owner;
+
+ virtual bool ReadHeaderLines(std::string &Data) = 0;
+ virtual bool LoadNextResponse(bool const ToFile, RequestState &Req) = 0;
+
+ public:
+
+ /** \brief Result of the header acquire */
+ enum RunHeadersResult {
+ /** \brief Header ok */
+ RUN_HEADERS_OK,
+ /** \brief IO error while retrieving */
+ RUN_HEADERS_IO_ERROR,
+ /** \brief Parse error after retrieving */
+ RUN_HEADERS_PARSE_ERROR
+ };
+ /** \brief Get the headers before the data */
+ RunHeadersResult RunHeaders(RequestState &Req, const std::string &Uri);
+
+ bool Comp(URI Other) const {return Other.Host == ServerName.Host && Other.Port == ServerName.Port;};
+ virtual void Reset();
+ virtual bool WriteResponse(std::string const &Data) = 0;
+
+ /** \brief Transfer the data from the socket */
+ virtual bool RunData(RequestState &Req) = 0;
+ virtual bool RunDataToDevNull(RequestState &Req) = 0;
+
+ virtual bool Open() = 0;
+ virtual bool IsOpen() = 0;
+ virtual bool Close() = 0;
+ virtual bool InitHashes(HashStringList const &ExpectedHashes) = 0;
+ virtual bool Die(RequestState &Req) = 0;
+ virtual bool Flush(FileFd * const File) = 0;
+ virtual bool Go(bool ToFile, RequestState &Req) = 0;
+ virtual Hashes * GetHashes() = 0;
+
+ ServerState(URI Srv, BaseHttpMethod *Owner);
+ virtual ~ServerState() {};
+};
+
+class BaseHttpMethod : public aptMethod
+{
+ protected:
+ virtual bool Fetch(FetchItem *) APT_OVERRIDE;
+
+ std::unique_ptr<ServerState> Server;
+ std::string NextURI;
+
+ unsigned long PipelineDepth;
+ bool AllowRedirect;
+
+ // Find the biggest item in the fetch queue for the checking of the maximum
+ // size
+ unsigned long long FindMaximumObjectSizeInQueue() const APT_PURE;
+
+ public:
+ bool Debug;
+
+ /** \brief Result of the header parsing */
+ enum DealWithHeadersResult {
+ /** \brief The file is open and ready */
+ FILE_IS_OPEN,
+ /** \brief We got a IMS hit, the file has not changed */
+ IMS_HIT,
+ /** \brief The server reported a unrecoverable error */
+ ERROR_UNRECOVERABLE,
+ /** \brief The server reported a error with a error content page */
+ ERROR_WITH_CONTENT_PAGE,
+ /** \brief An error on the client side */
+ ERROR_NOT_FROM_SERVER,
+ /** \brief A redirect or retry request */
+ TRY_AGAIN_OR_REDIRECT
+ };
+ /** \brief Handle the retrieved header data */
+ virtual DealWithHeadersResult DealWithHeaders(FetchResult &Res, RequestState &Req);
+
+ // In the event of a fatal signal this file will be closed and timestamped.
+ static std::string FailFile;
+ static int FailFd;
+ static time_t FailTime;
+ static APT_NORETURN void SigTerm(int);
+
+ int Loop();
+
+ virtual void SendReq(FetchItem *Itm) = 0;
+ virtual std::unique_ptr<ServerState> CreateServerState(URI const &uri) = 0;
+ virtual void RotateDNS() = 0;
+ virtual bool Configuration(std::string Message) APT_OVERRIDE;
+
+ bool AddProxyAuth(URI &Proxy, URI const &Server) const;
+
+ BaseHttpMethod(std::string &&Binary, char const * const Ver,unsigned long const Flags);
+ virtual ~BaseHttpMethod() {};
+};
+
+#endif
diff --git a/methods/cdrom.cc b/methods/cdrom.cc
new file mode 100644
index 000000000..87a58e948
--- /dev/null
+++ b/methods/cdrom.cc
@@ -0,0 +1,285 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: cdrom.cc,v 1.20.2.1 2004/01/16 18:58:50 mdz Exp $
+/* ######################################################################
+
+ CDROM URI method for APT
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/cdrom.h>
+#include <apt-pkg/cdromutl.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/hashes.h>
+
+#include "aptmethod.h"
+
+#include <string>
+#include <vector>
+#include <sys/stat.h>
+
+#include <iostream>
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+class CDROMMethod : public aptMethod
+{
+ bool DatabaseLoaded;
+ bool Debug;
+
+ ::Configuration Database;
+ string CurrentID;
+ string CDROM;
+ bool MountedByApt;
+ pkgUdevCdromDevices UdevCdroms;
+
+ bool IsCorrectCD(URI want, string MountPath, string& NewID);
+ bool AutoDetectAndMount(const URI, string &NewID);
+ virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE;
+ string GetID(string Name);
+ virtual void Exit() APT_OVERRIDE;
+
+ public:
+
+ CDROMMethod();
+};
+
+// CDROMMethod::CDROMethod - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+CDROMMethod::CDROMMethod() : aptMethod("cdrom", "1.0",SingleInstance | LocalOnly |
+ SendConfig | NeedsCleanup |
+ Removable),
+ DatabaseLoaded(false),
+ Debug(false),
+ MountedByApt(false)
+{
+ UdevCdroms.Dlopen();
+}
+ /*}}}*/
+// CDROMMethod::Exit - Unmount the disc if necessary /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void CDROMMethod::Exit()
+{
+ if (MountedByApt == true)
+ UnmountCdrom(CDROM);
+}
+ /*}}}*/
+// CDROMMethod::GetID - Search the database for a matching string /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+string CDROMMethod::GetID(string Name)
+{
+ // Search for an ID
+ const Configuration::Item *Top = Database.Tree("CD");
+ if (Top != 0)
+ Top = Top->Child;
+
+ for (; Top != 0;)
+ {
+ if (Top->Value == Name)
+ return Top->Tag;
+
+ Top = Top->Next;
+ }
+ return string();
+}
+ /*}}}*/
+// CDROMMethod::AutoDetectAndMount /*{{{*/
+// ---------------------------------------------------------------------
+/* Modifies class varaiable CDROM to the mountpoint */
+bool CDROMMethod::AutoDetectAndMount(const URI Get, string &NewID)
+{
+ vector<struct CdromDevice> v = UdevCdroms.Scan();
+
+ // first check if its mounted somewhere already
+ for (unsigned int i=0; i < v.size(); i++)
+ {
+ if (v[i].Mounted)
+ {
+ if (Debug)
+ clog << "Checking mounted cdrom device " << v[i].DeviceName << endl;
+ if (IsCorrectCD(Get, v[i].MountPath, NewID))
+ {
+ CDROM = v[i].MountPath;
+ return true;
+ }
+ }
+ }
+
+ // we are not supposed to mount, exit
+ if (_config->FindB("APT::CDROM::NoMount",false) == true)
+ return false;
+
+ // check if we have the mount point
+ string AptMountPoint = _config->FindDir("Dir::Media::MountPath");
+ if (!FileExists(AptMountPoint))
+ mkdir(AptMountPoint.c_str(), 0750);
+
+ // now try mounting
+ for (unsigned int i=0; i < v.size(); i++)
+ {
+ if (!v[i].Mounted)
+ {
+ if(MountCdrom(AptMountPoint, v[i].DeviceName))
+ {
+ if (IsCorrectCD(Get, AptMountPoint, NewID))
+ {
+ MountedByApt = true;
+ CDROM = AptMountPoint;
+ return true;
+ } else {
+ UnmountCdrom(AptMountPoint);
+ }
+ }
+ }
+ }
+
+ return false;
+}
+ /*}}}*/
+// CDROMMethod::IsCorrectCD /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool CDROMMethod::IsCorrectCD(URI want, string MountPath, string& NewID)
+{
+ for (unsigned int Version = 2; Version != 0; Version--)
+ {
+ if (IdentCdrom(MountPath,NewID,Version) == false)
+ return false;
+
+ if (Debug)
+ clog << "ID " << Version << " " << NewID << endl;
+
+ // A hit
+ if (Database.Find("CD::" + NewID) == want.Host)
+ return true;
+ }
+
+ return false;
+}
+ /*}}}*/
+// CDROMMethod::Fetch - Fetch a file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool CDROMMethod::Fetch(FetchItem *Itm)
+{
+ FetchResult Res;
+
+ URI Get = Itm->Uri;
+ string File = Get.Path;
+ Debug = DebugEnabled();
+
+ if (Debug)
+ clog << "CDROMMethod::Fetch " << Itm->Uri << endl;
+
+ /* All IMS queries are returned as a hit, CDROMs are readonly so
+ time stamps never change */
+ if (Itm->LastModified != 0)
+ {
+ Res.LastModified = Itm->LastModified;
+ Res.IMSHit = true;
+ Res.Filename = Itm->DestFile;
+ URIDone(Res);
+ return true;
+ }
+
+ // Load the database
+ if (DatabaseLoaded == false)
+ {
+ // Read the database
+ string DFile = _config->FindFile("Dir::State::cdroms");
+ if (FileExists(DFile) == true)
+ {
+ if (ReadConfigFile(Database,DFile) == false)
+ return _error->Error(_("Unable to read the cdrom database %s"),
+ DFile.c_str());
+ }
+ DatabaseLoaded = true;
+ }
+
+ // All non IMS queries for package files fail.
+ if (Itm->IndexFile == true || GetID(Get.Host).empty() == true)
+ {
+ Fail(_("Please use apt-cdrom to make this CD-ROM recognized by APT."
+ " apt-get update cannot be used to add new CD-ROMs"));
+ return true;
+ }
+
+ // We already have a CD inserted, but it is the wrong one
+ if (CurrentID.empty() == false &&
+ CurrentID != "FAIL" &&
+ Database.Find("CD::" + CurrentID) != Get.Host)
+ {
+ Fail(_("Wrong CD-ROM"),true);
+ return true;
+ }
+
+ bool const AutoDetect = ConfigFindB("AutoDetect", true);
+ CDROM = _config->FindDir("Acquire::cdrom::mount");
+ if (Debug)
+ clog << "Looking for CDROM at " << CDROM << endl;
+
+ if (CDROM[0] == '.')
+ CDROM= SafeGetCWD() + '/' + CDROM;
+
+ string NewID;
+ while (CurrentID.empty() == true)
+ {
+ if (AutoDetect)
+ AutoDetectAndMount(Get, NewID);
+
+ if(!IsMounted(CDROM))
+ MountedByApt = MountCdrom(CDROM);
+
+ if (IsCorrectCD(Get, CDROM, NewID))
+ break;
+
+ // I suppose this should prompt somehow?
+ if (_config->FindB("APT::CDROM::NoMount",false) == false &&
+ UnmountCdrom(CDROM) == false)
+ return _error->Error(_("Unable to unmount the CD-ROM in %s, it may still be in use."),
+ CDROM.c_str());
+ if (MediaFail(Get.Host,CDROM) == false)
+ {
+ CurrentID = "FAIL";
+ return _error->Error(_("Disk not found."));
+ }
+ }
+
+ // Found a CD
+ Res.Filename = CDROM + File;
+ struct stat Buf;
+ if (stat(Res.Filename.c_str(),&Buf) != 0)
+ return _error->Error(_("File not found"));
+
+ URIStart(Res);
+ if (NewID.empty() == false)
+ CurrentID = NewID;
+ Res.LastModified = Buf.st_mtime;
+ Res.Size = Buf.st_size;
+
+ Hashes Hash(Itm->ExpectedHashes);
+ FileFd Fd(Res.Filename, FileFd::ReadOnly);
+ Hash.AddFD(Fd);
+ Res.TakeHashes(Hash);
+
+ URIDone(Res);
+ return true;
+}
+ /*}}}*/
+
+int main()
+{
+ _config->CndSet("Binary::cdrom::Debug::NoDropPrivs", true);
+ return CDROMMethod().Run();
+}
diff --git a/methods/connect.cc b/methods/connect.cc
new file mode 100644
index 000000000..f6fb14769
--- /dev/null
+++ b/methods/connect.cc
@@ -0,0 +1,342 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: connect.cc,v 1.10.2.1 2004/01/16 18:58:50 mdz Exp $
+/* ######################################################################
+
+ Connect - Replacement connect call
+
+ This was originally authored by Jason Gunthorpe <jgg@debian.org>
+ and is placed in the Public Domain, do with it what you will.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/acquire-method.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/srvrec.h>
+
+#include <stdio.h>
+#include <errno.h>
+#include <unistd.h>
+#include <sstream>
+#include <string.h>
+#include<set>
+#include<string>
+
+// Internet stuff
+#include <netinet/in.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+
+#include "connect.h"
+#include "rfc2553emu.h"
+#include <apti18n.h>
+ /*}}}*/
+
+static std::string LastHost;
+static int LastPort = 0;
+static struct addrinfo *LastHostAddr = 0;
+static struct addrinfo *LastUsed = 0;
+
+static std::vector<SrvRec> SrvRecords;
+
+// Set of IP/hostnames that we timed out before or couldn't resolve
+static std::set<std::string> bad_addr;
+
+// RotateDNS - Select a new server from a DNS rotation /*{{{*/
+// ---------------------------------------------------------------------
+/* This is called during certain errors in order to recover by selecting a
+ new server */
+void RotateDNS()
+{
+ if (LastUsed != 0 && LastUsed->ai_next != 0)
+ LastUsed = LastUsed->ai_next;
+ else
+ LastUsed = LastHostAddr;
+}
+ /*}}}*/
+static bool ConnectionAllowed(char const * const Service, std::string const &Host)/*{{{*/
+{
+ if (unlikely(Host.empty())) // the only legal empty host (RFC2782 '.' target) is detected by caller
+ return false;
+ if (APT::String::Endswith(Host, ".onion") && _config->FindB("Acquire::BlockDotOnion", true))
+ {
+ // TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+ _error->Error(_("Direct connection to %s domains is blocked by default."), ".onion");
+ if (strcmp(Service, "http") == 0)
+ _error->Error(_("If you meant to use Tor remember to use %s instead of %s."), "tor+http", "http");
+ return false;
+ }
+ return true;
+}
+ /*}}}*/
+// DoConnect - Attempt a connect operation /*{{{*/
+// ---------------------------------------------------------------------
+/* This helper function attempts a connection to a single address. */
+static bool DoConnect(struct addrinfo *Addr,std::string const &Host,
+ unsigned long TimeOut,int &Fd,pkgAcqMethod *Owner)
+{
+ // Show a status indicator
+ char Name[NI_MAXHOST];
+ char Service[NI_MAXSERV];
+
+ Name[0] = 0;
+ Service[0] = 0;
+ getnameinfo(Addr->ai_addr,Addr->ai_addrlen,
+ Name,sizeof(Name),Service,sizeof(Service),
+ NI_NUMERICHOST|NI_NUMERICSERV);
+ Owner->Status(_("Connecting to %s (%s)"),Host.c_str(),Name);
+
+ // if that addr did timeout before, we do not try it again
+ if(bad_addr.find(std::string(Name)) != bad_addr.end())
+ return false;
+
+ /* If this is an IP rotation store the IP we are using.. If something goes
+ wrong this will get tacked onto the end of the error message */
+ if (LastHostAddr->ai_next != 0)
+ {
+ std::stringstream ss;
+ ioprintf(ss, _("[IP: %s %s]"),Name,Service);
+ Owner->SetIP(ss.str());
+ }
+
+ // Get a socket
+ if ((Fd = socket(Addr->ai_family,Addr->ai_socktype,
+ Addr->ai_protocol)) < 0)
+ return _error->Errno("socket",_("Could not create a socket for %s (f=%u t=%u p=%u)"),
+ Name,Addr->ai_family,Addr->ai_socktype,Addr->ai_protocol);
+
+ SetNonBlock(Fd,true);
+ if (connect(Fd,Addr->ai_addr,Addr->ai_addrlen) < 0 &&
+ errno != EINPROGRESS)
+ return _error->Errno("connect",_("Cannot initiate the connection "
+ "to %s:%s (%s)."),Host.c_str(),Service,Name);
+
+ /* This implements a timeout for connect by opening the connection
+ nonblocking */
+ if (WaitFd(Fd,true,TimeOut) == false) {
+ bad_addr.insert(bad_addr.begin(), std::string(Name));
+ Owner->SetFailReason("Timeout");
+ return _error->Error(_("Could not connect to %s:%s (%s), "
+ "connection timed out"),Host.c_str(),Service,Name);
+ }
+
+ // Check the socket for an error condition
+ unsigned int Err;
+ unsigned int Len = sizeof(Err);
+ if (getsockopt(Fd,SOL_SOCKET,SO_ERROR,&Err,&Len) != 0)
+ return _error->Errno("getsockopt",_("Failed"));
+
+ if (Err != 0)
+ {
+ errno = Err;
+ if(errno == ECONNREFUSED)
+ Owner->SetFailReason("ConnectionRefused");
+ else if (errno == ETIMEDOUT)
+ Owner->SetFailReason("ConnectionTimedOut");
+ bad_addr.insert(bad_addr.begin(), std::string(Name));
+ return _error->Errno("connect",_("Could not connect to %s:%s (%s)."),Host.c_str(),
+ Service,Name);
+ }
+
+ return true;
+}
+ /*}}}*/
+// Connect to a given Hostname /*{{{*/
+static bool ConnectToHostname(std::string const &Host, int const Port,
+ const char * const Service, int DefPort, int &Fd,
+ unsigned long const TimeOut, pkgAcqMethod * const Owner)
+{
+ if (ConnectionAllowed(Service, Host) == false)
+ return false;
+ // Convert the port name/number
+ char ServStr[300];
+ if (Port != 0)
+ snprintf(ServStr,sizeof(ServStr),"%i", Port);
+ else
+ snprintf(ServStr,sizeof(ServStr),"%s", Service);
+
+ /* We used a cached address record.. Yes this is against the spec but
+ the way we have setup our rotating dns suggests that this is more
+ sensible */
+ if (LastHost != Host || LastPort != Port)
+ {
+ Owner->Status(_("Connecting to %s"),Host.c_str());
+
+ // Free the old address structure
+ if (LastHostAddr != 0)
+ {
+ freeaddrinfo(LastHostAddr);
+ LastHostAddr = 0;
+ LastUsed = 0;
+ }
+
+ // We only understand SOCK_STREAM sockets.
+ struct addrinfo Hints;
+ memset(&Hints,0,sizeof(Hints));
+ Hints.ai_socktype = SOCK_STREAM;
+ Hints.ai_flags = 0;
+#ifdef AI_IDN
+ if (_config->FindB("Acquire::Connect::IDN", true) == true)
+ Hints.ai_flags |= AI_IDN;
+#endif
+ // see getaddrinfo(3): only return address if system has such a address configured
+ // useful if system is ipv4 only, to not get ipv6, but that fails if the system has
+ // no address configured: e.g. offline and trying to connect to localhost.
+ if (_config->FindB("Acquire::Connect::AddrConfig", true) == true)
+ Hints.ai_flags |= AI_ADDRCONFIG;
+ Hints.ai_protocol = 0;
+
+ if(_config->FindB("Acquire::ForceIPv4", false) == true)
+ Hints.ai_family = AF_INET;
+ else if(_config->FindB("Acquire::ForceIPv6", false) == true)
+ Hints.ai_family = AF_INET6;
+ else
+ Hints.ai_family = AF_UNSPEC;
+
+ // if we couldn't resolve the host before, we don't try now
+ if(bad_addr.find(Host) != bad_addr.end())
+ return _error->Error(_("Could not resolve '%s'"),Host.c_str());
+
+ // Resolve both the host and service simultaneously
+ while (1)
+ {
+ int Res;
+ if ((Res = getaddrinfo(Host.c_str(),ServStr,&Hints,&LastHostAddr)) != 0 ||
+ LastHostAddr == 0)
+ {
+ if (Res == EAI_NONAME || Res == EAI_SERVICE)
+ {
+ if (DefPort != 0)
+ {
+ snprintf(ServStr, sizeof(ServStr), "%i", DefPort);
+ DefPort = 0;
+ continue;
+ }
+ bad_addr.insert(bad_addr.begin(), Host);
+ Owner->SetFailReason("ResolveFailure");
+ return _error->Error(_("Could not resolve '%s'"),Host.c_str());
+ }
+
+ if (Res == EAI_AGAIN)
+ {
+ Owner->SetFailReason("TmpResolveFailure");
+ return _error->Error(_("Temporary failure resolving '%s'"),
+ Host.c_str());
+ }
+ if (Res == EAI_SYSTEM)
+ return _error->Errno("getaddrinfo", _("System error resolving '%s:%s'"),
+ Host.c_str(),ServStr);
+ return _error->Error(_("Something wicked happened resolving '%s:%s' (%i - %s)"),
+ Host.c_str(),ServStr,Res,gai_strerror(Res));
+ }
+ break;
+ }
+
+ LastHost = Host;
+ LastPort = Port;
+ }
+
+ // When we have an IP rotation stay with the last IP.
+ struct addrinfo *CurHost = LastHostAddr;
+ if (LastUsed != 0)
+ CurHost = LastUsed;
+
+ while (CurHost != 0)
+ {
+ if (DoConnect(CurHost,Host,TimeOut,Fd,Owner) == true)
+ {
+ LastUsed = CurHost;
+ return true;
+ }
+ close(Fd);
+ Fd = -1;
+
+ // Ignore UNIX domain sockets
+ do
+ {
+ CurHost = CurHost->ai_next;
+ }
+ while (CurHost != 0 && CurHost->ai_family == AF_UNIX);
+
+ /* If we reached the end of the search list then wrap around to the
+ start */
+ if (CurHost == 0 && LastUsed != 0)
+ CurHost = LastHostAddr;
+
+ // Reached the end of the search cycle
+ if (CurHost == LastUsed)
+ break;
+
+ if (CurHost != 0)
+ _error->Discard();
+ }
+
+ if (_error->PendingError() == true)
+ return false;
+ return _error->Error(_("Unable to connect to %s:%s:"),Host.c_str(),ServStr);
+}
+ /*}}}*/
+// Connect - Connect to a server /*{{{*/
+// ---------------------------------------------------------------------
+/* Performs a connection to the server (including SRV record lookup) */
+bool Connect(std::string Host,int Port,const char *Service,
+ int DefPort,int &Fd,
+ unsigned long TimeOut,pkgAcqMethod *Owner)
+{
+ if (_error->PendingError() == true)
+ return false;
+
+ if (ConnectionAllowed(Service, Host) == false)
+ return false;
+
+ if(LastHost != Host || LastPort != Port)
+ {
+ SrvRecords.clear();
+ if (_config->FindB("Acquire::EnableSrvRecords", true) == true)
+ {
+ GetSrvRecords(Host, DefPort, SrvRecords);
+ // RFC2782 defines that a lonely '.' target is an abort reason
+ if (SrvRecords.size() == 1 && SrvRecords[0].target.empty())
+ return _error->Error("SRV records for %s indicate that "
+ "%s service is not available at this domain", Host.c_str(), Service);
+ }
+ }
+
+ size_t stackSize = 0;
+ // try to connect in the priority order of the srv records
+ std::string initialHost{std::move(Host)};
+ while(SrvRecords.empty() == false)
+ {
+ _error->PushToStack();
+ ++stackSize;
+ // PopFromSrvRecs will also remove the server
+ Host = PopFromSrvRecs(SrvRecords).target;
+ auto const ret = ConnectToHostname(Host, Port, Service, DefPort, Fd, TimeOut, Owner);
+ if (ret)
+ {
+ while(stackSize--)
+ _error->RevertToStack();
+ return true;
+ }
+ }
+ Host = std::move(initialHost);
+
+ // we have no (good) SrvRecords for this host, connect right away
+ _error->PushToStack();
+ ++stackSize;
+ auto const ret = ConnectToHostname(Host, Port, Service, DefPort, Fd,
+ TimeOut, Owner);
+ while(stackSize--)
+ if (ret)
+ _error->RevertToStack();
+ else
+ _error->MergeWithStack();
+ return ret;
+}
diff --git a/methods/connect.h b/methods/connect.h
new file mode 100644
index 000000000..bbe1bb35d
--- /dev/null
+++ b/methods/connect.h
@@ -0,0 +1,21 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: connect.h,v 1.3 2001/02/20 07:03:18 jgg Exp $
+/* ######################################################################
+
+ Connect - Replacement connect call
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef CONNECT_H
+#define CONNECT_H
+
+#include <string>
+
+class pkgAcqMethod;
+
+bool Connect(std::string To,int Port,const char *Service,int DefPort,
+ int &Fd,unsigned long TimeOut,pkgAcqMethod *Owner);
+void RotateDNS();
+
+#endif
diff --git a/methods/copy.cc b/methods/copy.cc
new file mode 100644
index 000000000..810fc2f38
--- /dev/null
+++ b/methods/copy.cc
@@ -0,0 +1,93 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: copy.cc,v 1.7.2.1 2004/01/16 18:58:50 mdz Exp $
+/* ######################################################################
+
+ Copy URI - This method takes a uri like a file: uri and copies it
+ to the destination file.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/configuration.h>
+#include "aptmethod.h"
+
+#include <string>
+#include <sys/stat.h>
+#include <sys/time.h>
+
+#include <apti18n.h>
+ /*}}}*/
+
+class CopyMethod : public aptMethod
+{
+ virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE;
+
+ public:
+
+ CopyMethod() : aptMethod("copy", "1.0",SingleInstance | SendConfig) {};
+};
+
+// CopyMethod::Fetch - Fetch a file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool CopyMethod::Fetch(FetchItem *Itm)
+{
+ // this ensures that relative paths work in copy
+ std::string const File = Itm->Uri.substr(Itm->Uri.find(':')+1);
+
+ // Stat the file and send a start message
+ struct stat Buf;
+ if (stat(File.c_str(),&Buf) != 0)
+ return _error->Errno("stat",_("Failed to stat"));
+
+ // Forumulate a result and send a start message
+ FetchResult Res;
+ Res.Size = Buf.st_size;
+ Res.Filename = Itm->DestFile;
+ Res.LastModified = Buf.st_mtime;
+ Res.IMSHit = false;
+ URIStart(Res);
+
+ // just calc the hashes if the source and destination are identical
+ if (File == Itm->DestFile || Itm->DestFile == "/dev/null")
+ {
+ CalculateHashes(Itm, Res);
+ URIDone(Res);
+ return true;
+ }
+
+ // See if the file exists
+ FileFd From(File,FileFd::ReadOnly);
+ FileFd To(Itm->DestFile,FileFd::WriteAtomic);
+ To.EraseOnFailure();
+
+ // Copy the file
+ if (CopyFile(From,To) == false)
+ {
+ To.OpFail();
+ return false;
+ }
+
+ From.Close();
+ To.Close();
+
+ if (TransferModificationTimes(File.c_str(), Res.Filename.c_str(), Res.LastModified) == false)
+ return false;
+
+ CalculateHashes(Itm, Res);
+ URIDone(Res);
+ return true;
+}
+ /*}}}*/
+
+int main()
+{
+ return CopyMethod().Run();
+}
diff --git a/methods/file.cc b/methods/file.cc
new file mode 100644
index 000000000..5cbf1924e
--- /dev/null
+++ b/methods/file.cc
@@ -0,0 +1,132 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: file.cc,v 1.9.2.1 2004/01/16 18:58:50 mdz Exp $
+/* ######################################################################
+
+ File URI method for APT
+
+ This simply checks that the file specified exists, if so the relevant
+ information is returned. If a .gz filename is specified then the file
+ name with .gz removed will also be checked and information about it
+ will be returned in Alt-*
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+#include "aptmethod.h"
+
+#include <string>
+#include <sys/stat.h>
+
+#include <apti18n.h>
+ /*}}}*/
+
+class FileMethod : public aptMethod
+{
+ virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE;
+
+ public:
+ FileMethod() : aptMethod("file", "1.0", SingleInstance | SendConfig | LocalOnly) {};
+};
+
+// FileMethod::Fetch - Fetch a file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool FileMethod::Fetch(FetchItem *Itm)
+{
+ URI Get = Itm->Uri;
+ std::string File = Get.Path;
+ FetchResult Res;
+ if (Get.Host.empty() == false)
+ return _error->Error(_("Invalid URI, local URIS must not start with //"));
+
+ struct stat Buf;
+ // deal with destination files which might linger around
+ if (lstat(Itm->DestFile.c_str(), &Buf) == 0)
+ {
+ if ((Buf.st_mode & S_IFREG) != 0)
+ {
+ if (Itm->LastModified == Buf.st_mtime && Itm->LastModified != 0)
+ {
+ HashStringList const hsl = Itm->ExpectedHashes;
+ if (Itm->ExpectedHashes.VerifyFile(File))
+ {
+ Res.Filename = Itm->DestFile;
+ Res.IMSHit = true;
+ }
+ }
+ }
+ }
+ if (Res.IMSHit != true)
+ RemoveFile("file", Itm->DestFile);
+
+ int olderrno = 0;
+ // See if the file exists
+ if (stat(File.c_str(),&Buf) == 0)
+ {
+ Res.Size = Buf.st_size;
+ Res.Filename = File;
+ Res.LastModified = Buf.st_mtime;
+ Res.IMSHit = false;
+ if (Itm->LastModified == Buf.st_mtime && Itm->LastModified != 0)
+ {
+ unsigned long long const filesize = Itm->ExpectedHashes.FileSize();
+ if (filesize != 0 && filesize == Res.Size)
+ Res.IMSHit = true;
+ }
+
+ CalculateHashes(Itm, Res);
+ }
+ else
+ olderrno = errno;
+ if (Res.IMSHit == false)
+ URIStart(Res);
+
+ // See if the uncompressed file exists and reuse it
+ FetchResult AltRes;
+ AltRes.Filename.clear();
+ std::vector<std::string> extensions = APT::Configuration::getCompressorExtensions();
+ for (std::vector<std::string>::const_iterator ext = extensions.begin(); ext != extensions.end(); ++ext)
+ {
+ if (APT::String::Endswith(File, *ext) == true)
+ {
+ std::string const unfile = File.substr(0, File.length() - ext->length());
+ if (stat(unfile.c_str(),&Buf) == 0)
+ {
+ AltRes.Size = Buf.st_size;
+ AltRes.Filename = unfile;
+ AltRes.LastModified = Buf.st_mtime;
+ AltRes.IMSHit = false;
+ if (Itm->LastModified == Buf.st_mtime && Itm->LastModified != 0)
+ AltRes.IMSHit = true;
+ break;
+ }
+ // no break here as we could have situations similar to '.gz' vs '.tar.gz' here
+ }
+ }
+
+ if (AltRes.Filename.empty() == false)
+ URIDone(Res,&AltRes);
+ else if (Res.Filename.empty() == false)
+ URIDone(Res);
+ else
+ {
+ errno = olderrno;
+ return _error->Errno(File.c_str(), _("File not found"));
+ }
+
+ return true;
+}
+ /*}}}*/
+
+int main()
+{
+ return FileMethod().Run();
+}
diff --git a/methods/ftp.cc b/methods/ftp.cc
new file mode 100644
index 000000000..d789637a8
--- /dev/null
+++ b/methods/ftp.cc
@@ -0,0 +1,1154 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: ftp.cc,v 1.31.2.1 2004/01/16 18:58:50 mdz Exp $
+/* ######################################################################
+
+ FTP Acquire Method - This is the FTP acquire method for APT.
+
+ This is a very simple implementation that does not try to optimize
+ at all. Commands are sent synchronously with the FTP server (as the
+ rfc recommends, but it is not really necessary..) and no tricks are
+ done to speed things along.
+
+ RFC 2428 describes the IPv6 FTP behavior
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/netrc.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/strutl.h>
+
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <unistd.h>
+#include <signal.h>
+#include <stdio.h>
+#include <errno.h>
+#include <stdarg.h>
+#include <iostream>
+
+// Internet stuff
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+
+#include "rfc2553emu.h"
+#include "connect.h"
+#include "ftp.h"
+
+#include <apti18n.h>
+ /*}}}*/
+
+using namespace std;
+
+/* This table is for the EPRT and EPSV commands, it maps the OS address
+ family to the IETF address families */
+struct AFMap
+{
+ unsigned long Family;
+ unsigned long IETFFamily;
+};
+
+#ifndef AF_INET6
+struct AFMap AFMap[] = {{AF_INET,1},{0, 0}};
+#else
+struct AFMap AFMap[] = {{AF_INET,1},{AF_INET6,2},{0, 0}};
+#endif
+
+unsigned long TimeOut = 120;
+URI Proxy;
+string FtpMethod::FailFile;
+int FtpMethod::FailFd = -1;
+time_t FtpMethod::FailTime = 0;
+
+// FTPConn::FTPConn - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+FTPConn::FTPConn(URI Srv) : Len(0), ServerFd(-1), DataFd(-1),
+ DataListenFd(-1), ServerName(Srv),
+ ForceExtended(false), TryPassive(true),
+ PeerAddrLen(0), ServerAddrLen(0)
+{
+ Debug = _config->FindB("Debug::Acquire::Ftp",false);
+ PasvAddr = 0;
+ Buffer[0] = '\0';
+}
+ /*}}}*/
+// FTPConn::~FTPConn - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+FTPConn::~FTPConn()
+{
+ Close();
+}
+ /*}}}*/
+// FTPConn::Close - Close down the connection /*{{{*/
+// ---------------------------------------------------------------------
+/* Just tear down the socket and data socket */
+void FTPConn::Close()
+{
+ close(ServerFd);
+ ServerFd = -1;
+ close(DataFd);
+ DataFd = -1;
+ close(DataListenFd);
+ DataListenFd = -1;
+
+ if (PasvAddr != 0)
+ freeaddrinfo(PasvAddr);
+ PasvAddr = 0;
+}
+ /*}}}*/
+// FTPConn::Open - Open a new connection /*{{{*/
+// ---------------------------------------------------------------------
+/* Connect to the server using a non-blocking connection and perform a
+ login. */
+bool FTPConn::Open(pkgAcqMethod *Owner)
+{
+ // Use the already open connection if possible.
+ if (ServerFd != -1)
+ return true;
+
+ Close();
+
+ // Determine the proxy setting
+ string SpecificProxy = _config->Find("Acquire::ftp::Proxy::" + ServerName.Host);
+ if (!SpecificProxy.empty())
+ {
+ if (SpecificProxy == "DIRECT")
+ Proxy = "";
+ else
+ Proxy = SpecificProxy;
+ }
+ else
+ {
+ string DefProxy = _config->Find("Acquire::ftp::Proxy");
+ if (!DefProxy.empty())
+ {
+ Proxy = DefProxy;
+ }
+ else
+ {
+ char* result = getenv("ftp_proxy");
+ Proxy = result ? result : "";
+ }
+ }
+
+ // Parse no_proxy, a , separated list of domains
+ if (getenv("no_proxy") != 0)
+ {
+ if (CheckDomainList(ServerName.Host,getenv("no_proxy")) == true)
+ Proxy = "";
+ }
+
+ // Determine what host and port to use based on the proxy settings
+ int Port = 0;
+ string Host;
+ if (Proxy.empty() == true)
+ {
+ if (ServerName.Port != 0)
+ Port = ServerName.Port;
+ Host = ServerName.Host;
+ }
+ else
+ {
+ if (Proxy.Port != 0)
+ Port = Proxy.Port;
+ Host = Proxy.Host;
+ }
+
+ /* Connect to the remote server. Since FTP is connection oriented we
+ want to make sure we get a new server every time we reconnect */
+ RotateDNS();
+ if (Connect(Host,Port,"ftp",21,ServerFd,TimeOut,Owner) == false)
+ return false;
+
+ // Login must be before getpeername otherwise dante won't work.
+ Owner->Status(_("Logging in"));
+ bool Res = Login();
+
+ // Get the remote server's address
+ PeerAddrLen = sizeof(PeerAddr);
+ if (getpeername(ServerFd,(sockaddr *)&PeerAddr,&PeerAddrLen) != 0)
+ return _error->Errno("getpeername",_("Unable to determine the peer name"));
+
+ // Get the local machine's address
+ ServerAddrLen = sizeof(ServerAddr);
+ if (getsockname(ServerFd,(sockaddr *)&ServerAddr,&ServerAddrLen) != 0)
+ return _error->Errno("getsockname",_("Unable to determine the local name"));
+
+ return Res;
+}
+ /*}}}*/
+// FTPConn::Login - Login to the remote server /*{{{*/
+// ---------------------------------------------------------------------
+/* This performs both normal login and proxy login using a simples script
+ stored in the config file. */
+bool FTPConn::Login()
+{
+ unsigned int Tag;
+ string Msg;
+
+ // Setup the variables needed for authentication
+ string User = "anonymous";
+ string Pass = "apt_get_ftp_2.1@debian.linux.user";
+
+ // Fill in the user/pass
+ if (ServerName.User.empty() == false)
+ User = ServerName.User;
+ if (ServerName.Password.empty() == false)
+ Pass = ServerName.Password;
+
+ // Perform simple login
+ if (Proxy.empty() == true)
+ {
+ // Read the initial response
+ if (ReadResp(Tag,Msg) == false)
+ return false;
+ if (Tag >= 400)
+ return _error->Error(_("The server refused the connection and said: %s"),Msg.c_str());
+
+ // Send the user
+ if (WriteMsg(Tag,Msg,"USER %s",User.c_str()) == false)
+ return false;
+ if (Tag >= 400)
+ return _error->Error(_("USER failed, server said: %s"),Msg.c_str());
+
+ if (Tag == 331) { // 331 User name okay, need password.
+ // Send the Password
+ if (WriteMsg(Tag,Msg,"PASS %s",Pass.c_str()) == false)
+ return false;
+ if (Tag >= 400)
+ return _error->Error(_("PASS failed, server said: %s"),Msg.c_str());
+ }
+
+ // Enter passive mode
+ if (_config->Exists("Acquire::FTP::Passive::" + ServerName.Host) == true)
+ TryPassive = _config->FindB("Acquire::FTP::Passive::" + ServerName.Host,true);
+ else
+ TryPassive = _config->FindB("Acquire::FTP::Passive",true);
+ }
+ else
+ {
+ // Read the initial response
+ if (ReadResp(Tag,Msg) == false)
+ return false;
+ if (Tag >= 400)
+ return _error->Error(_("The server refused the connection and said: %s"),Msg.c_str());
+
+ // Perform proxy script execution
+ Configuration::Item const *Opts = _config->Tree("Acquire::ftp::ProxyLogin");
+ if (Opts == 0 || Opts->Child == 0)
+ return _error->Error(_("A proxy server was specified but no login "
+ "script, Acquire::ftp::ProxyLogin is empty."));
+ Opts = Opts->Child;
+
+ // Iterate over the entire login script
+ for (; Opts != 0; Opts = Opts->Next)
+ {
+ if (Opts->Value.empty() == true)
+ continue;
+
+ // Substitute the variables into the command
+ string Tmp = Opts->Value;
+ Tmp = SubstVar(Tmp,"$(PROXY_USER)",Proxy.User);
+ Tmp = SubstVar(Tmp,"$(PROXY_PASS)",Proxy.Password);
+ Tmp = SubstVar(Tmp,"$(SITE_USER)",User);
+ Tmp = SubstVar(Tmp,"$(SITE_PASS)",Pass);
+ if (ServerName.Port != 0)
+ {
+ std::string SitePort;
+ strprintf(SitePort, "%u", ServerName.Port);
+ Tmp = SubstVar(Tmp,"$(SITE_PORT)", SitePort);
+ }
+ else
+ Tmp = SubstVar(Tmp,"$(SITE_PORT)", "21");
+ Tmp = SubstVar(Tmp,"$(SITE)",ServerName.Host);
+
+ // Send the command
+ if (WriteMsg(Tag,Msg,"%s",Tmp.c_str()) == false)
+ return false;
+ if (Tag >= 400)
+ return _error->Error(_("Login script command '%s' failed, server said: %s"),Tmp.c_str(),Msg.c_str());
+ }
+
+ // Enter passive mode
+ TryPassive = false;
+ if (_config->Exists("Acquire::FTP::Passive::" + ServerName.Host) == true)
+ TryPassive = _config->FindB("Acquire::FTP::Passive::" + ServerName.Host,true);
+ else
+ {
+ if (_config->Exists("Acquire::FTP::Proxy::Passive") == true)
+ TryPassive = _config->FindB("Acquire::FTP::Proxy::Passive",true);
+ else
+ TryPassive = _config->FindB("Acquire::FTP::Passive",true);
+ }
+ }
+
+ // Force the use of extended commands
+ if (_config->Exists("Acquire::FTP::ForceExtended::" + ServerName.Host) == true)
+ ForceExtended = _config->FindB("Acquire::FTP::ForceExtended::" + ServerName.Host,true);
+ else
+ ForceExtended = _config->FindB("Acquire::FTP::ForceExtended",false);
+
+ // Binary mode
+ if (WriteMsg(Tag,Msg,"TYPE I") == false)
+ return false;
+ if (Tag >= 400)
+ return _error->Error(_("TYPE failed, server said: %s"),Msg.c_str());
+
+ return true;
+}
+ /*}}}*/
+// FTPConn::ReadLine - Read a line from the server /*{{{*/
+// ---------------------------------------------------------------------
+/* This performs a very simple buffered read. */
+bool FTPConn::ReadLine(string &Text)
+{
+ if (ServerFd == -1)
+ return false;
+
+ // Suck in a line
+ while (Len < sizeof(Buffer))
+ {
+ // Scan the buffer for a new line
+ for (unsigned int I = 0; I != Len; I++)
+ {
+ // Escape some special chars
+ if (Buffer[I] == 0)
+ Buffer[I] = '?';
+
+ // End of line?
+ if (Buffer[I] != '\n')
+ continue;
+
+ I++;
+ Text = string(Buffer,I);
+ memmove(Buffer,Buffer+I,Len - I);
+ Len -= I;
+ return true;
+ }
+
+ // Wait for some data..
+ if (WaitFd(ServerFd,false,TimeOut) == false)
+ {
+ Close();
+ return _error->Error(_("Connection timeout"));
+ }
+
+ // Suck it back
+ int Res = read(ServerFd,Buffer + Len,sizeof(Buffer) - Len);
+ if (Res == 0)
+ _error->Error(_("Server closed the connection"));
+ if (Res <= 0)
+ {
+ _error->Errno("read",_("Read error"));
+ Close();
+ return false;
+ }
+ Len += Res;
+ }
+
+ return _error->Error(_("A response overflowed the buffer."));
+}
+ /*}}}*/
+// FTPConn::ReadResp - Read a full response from the server /*{{{*/
+// ---------------------------------------------------------------------
+/* This reads a reply code from the server, it handles both p */
+bool FTPConn::ReadResp(unsigned int &Ret,string &Text)
+{
+ // Grab the first line of the response
+ string Msg;
+ if (ReadLine(Msg) == false)
+ return false;
+
+ // Get the ID code
+ char *End;
+ Ret = strtol(Msg.c_str(),&End,10);
+ if (End - Msg.c_str() != 3)
+ return _error->Error(_("Protocol corruption"));
+
+ // All done ?
+ Text = Msg.c_str()+4;
+ if (*End == ' ')
+ {
+ if (Debug == true)
+ cerr << "<- '" << QuoteString(Text,"") << "'" << endl;
+ return true;
+ }
+
+ if (*End != '-')
+ return _error->Error(_("Protocol corruption"));
+
+ /* Okay, here we do the continued message trick. This is foolish, but
+ proftpd follows the protocol as specified and wu-ftpd doesn't, so
+ we filter. I wonder how many clients break if you use proftpd and
+ put a '- in the 3rd spot in the message? */
+ char Leader[4];
+ strncpy(Leader,Msg.c_str(),3);
+ Leader[3] = 0;
+ while (ReadLine(Msg) == true)
+ {
+ // Short, it must be using RFC continuation..
+ if (Msg.length() < 4)
+ {
+ Text += Msg;
+ continue;
+ }
+
+ // Oops, finished
+ if (strncmp(Msg.c_str(),Leader,3) == 0 && Msg[3] == ' ')
+ {
+ Text += Msg.c_str()+4;
+ break;
+ }
+
+ // This message has the wu-ftpd style reply code prefixed
+ if (strncmp(Msg.c_str(),Leader,3) == 0 && Msg[3] == '-')
+ {
+ Text += Msg.c_str()+4;
+ continue;
+ }
+
+ // Must be RFC style prefixing
+ Text += Msg;
+ }
+
+ if (Debug == true && _error->PendingError() == false)
+ cerr << "<- '" << QuoteString(Text,"") << "'" << endl;
+
+ return !_error->PendingError();
+}
+ /*}}}*/
+// FTPConn::WriteMsg - Send a message to the server /*{{{*/
+// ---------------------------------------------------------------------
+/* Simple printf like function.. */
+bool FTPConn::WriteMsg(unsigned int &Ret,string &Text,const char *Fmt,...)
+{
+ va_list args;
+ va_start(args,Fmt);
+
+ // sprintf the description
+ char S[400];
+ vsnprintf(S,sizeof(S) - 4,Fmt,args);
+ strcat(S,"\r\n");
+ va_end(args);
+
+ if (Debug == true)
+ cerr << "-> '" << QuoteString(S,"") << "'" << endl;
+
+ // Send it off
+ unsigned long Len = strlen(S);
+ unsigned long Start = 0;
+ while (Len != 0)
+ {
+ if (WaitFd(ServerFd,true,TimeOut) == false)
+ {
+ Close();
+ return _error->Error(_("Connection timeout"));
+ }
+
+ int Res = write(ServerFd,S + Start,Len);
+ if (Res <= 0)
+ {
+ _error->Errno("write",_("Write error"));
+ Close();
+ return false;
+ }
+
+ Len -= Res;
+ Start += Res;
+ }
+
+ return ReadResp(Ret,Text);
+}
+ /*}}}*/
+// FTPConn::GoPasv - Enter Passive mode /*{{{*/
+// ---------------------------------------------------------------------
+/* Try to enter passive mode, the return code does not indicate if passive
+ mode could or could not be established, only if there was a fatal error.
+ We have to enter passive mode every time we make a data connection :| */
+bool FTPConn::GoPasv()
+{
+ /* The PASV command only works on IPv4 sockets, even though it could
+ in theory suppory IPv6 via an all zeros reply */
+ if (((struct sockaddr *)&PeerAddr)->sa_family != AF_INET ||
+ ForceExtended == true)
+ return ExtGoPasv();
+
+ if (PasvAddr != 0)
+ freeaddrinfo(PasvAddr);
+ PasvAddr = 0;
+
+ // Try to enable pasv mode
+ unsigned int Tag;
+ string Msg;
+ if (WriteMsg(Tag,Msg,"PASV") == false)
+ return false;
+
+ // Unsupported function
+ string::size_type Pos = Msg.find('(');
+ if (Tag >= 400)
+ return true;
+
+ //wu-2.6.2(1) ftp server, returns
+ //227 Entering Passive Mode 193,219,28,140,150,111
+ //without parentheses, let's try to cope with it.
+ //wget(1) and ftp(1) can.
+ if (Pos == string::npos)
+ Pos = Msg.rfind(' ');
+ else
+ ++Pos;
+
+ // Still unsupported function
+ if (Pos == string::npos)
+ return true;
+
+ // Scan it
+ unsigned a0,a1,a2,a3,p0,p1;
+ if (sscanf(Msg.c_str() + Pos,"%u,%u,%u,%u,%u,%u",&a0,&a1,&a2,&a3,&p0,&p1) != 6)
+ return true;
+
+ /* Some evil servers return 0 to mean their addr. We can actually speak
+ to these servers natively using IPv6 */
+ if (a0 == 0 && a1 == 0 && a2 == 0 && a3 == 0)
+ {
+ // Get the IP in text form
+ char Name[NI_MAXHOST];
+ char Service[NI_MAXSERV];
+ getnameinfo((struct sockaddr *)&PeerAddr,PeerAddrLen,
+ Name,sizeof(Name),Service,sizeof(Service),
+ NI_NUMERICHOST|NI_NUMERICSERV);
+
+ struct addrinfo Hints;
+ memset(&Hints,0,sizeof(Hints));
+ Hints.ai_socktype = SOCK_STREAM;
+ Hints.ai_family = ((struct sockaddr *)&PeerAddr)->sa_family;
+ Hints.ai_flags |= AI_NUMERICHOST;
+
+ // Get a new passive address.
+ char Port[100];
+ snprintf(Port,sizeof(Port),"%u",(p0 << 8) + p1);
+ if (getaddrinfo(Name,Port,&Hints,&PasvAddr) != 0)
+ return true;
+ return true;
+ }
+
+ struct addrinfo Hints;
+ memset(&Hints,0,sizeof(Hints));
+ Hints.ai_socktype = SOCK_STREAM;
+ Hints.ai_family = AF_INET;
+ Hints.ai_flags |= AI_NUMERICHOST;
+
+ // Get a new passive address.
+ char Port[100];
+ snprintf(Port,sizeof(Port),"%u",(p0 << 8) + p1);
+ char Name[100];
+ snprintf(Name,sizeof(Name),"%u.%u.%u.%u",a0,a1,a2,a3);
+ if (getaddrinfo(Name,Port,&Hints,&PasvAddr) != 0)
+ return true;
+ return true;
+}
+ /*}}}*/
+// FTPConn::ExtGoPasv - Enter Extended Passive mode /*{{{*/
+// ---------------------------------------------------------------------
+/* Try to enter extended passive mode. See GoPasv above and RFC 2428 */
+bool FTPConn::ExtGoPasv()
+{
+ if (PasvAddr != 0)
+ freeaddrinfo(PasvAddr);
+ PasvAddr = 0;
+
+ // Try to enable pasv mode
+ unsigned int Tag;
+ string Msg;
+ if (WriteMsg(Tag,Msg,"EPSV") == false)
+ return false;
+
+ // Unsupported function
+ string::size_type Pos = Msg.find('(');
+ if (Tag >= 400 || Pos == string::npos)
+ return true;
+
+ // Scan it
+ string::const_iterator List[4];
+ unsigned Count = 0;
+ Pos++;
+ for (string::const_iterator I = Msg.begin() + Pos; I < Msg.end(); ++I)
+ {
+ if (*I != Msg[Pos])
+ continue;
+ if (Count >= 4)
+ return true;
+ List[Count++] = I;
+ }
+ if (Count != 4)
+ return true;
+
+ // Break it up ..
+ unsigned long Proto = 0;
+ unsigned long Port = 0;
+ string IP;
+ IP = string(List[1]+1,List[2]);
+ Port = atoi(string(List[2]+1,List[3]).c_str());
+ if (IP.empty() == false)
+ Proto = atoi(string(List[0]+1,List[1]).c_str());
+
+ if (Port == 0)
+ return false;
+
+ // String version of the port
+ char PStr[100];
+ snprintf(PStr,sizeof(PStr),"%lu",Port);
+
+ // Get the IP in text form
+ struct addrinfo Hints;
+ memset(&Hints,0,sizeof(Hints));
+ Hints.ai_socktype = SOCK_STREAM;
+ Hints.ai_flags |= AI_NUMERICHOST;
+
+ /* The RFC defined case, connect to the old IP/protocol using the
+ new port. */
+ if (IP.empty() == true)
+ {
+ // Get the IP in text form
+ char Name[NI_MAXHOST];
+ char Service[NI_MAXSERV];
+ getnameinfo((struct sockaddr *)&PeerAddr,PeerAddrLen,
+ Name,sizeof(Name),Service,sizeof(Service),
+ NI_NUMERICHOST|NI_NUMERICSERV);
+ IP = Name;
+ Hints.ai_family = ((struct sockaddr *)&PeerAddr)->sa_family;
+ }
+ else
+ {
+ // Get the family..
+ Hints.ai_family = 0;
+ for (unsigned J = 0; AFMap[J].Family != 0; J++)
+ if (AFMap[J].IETFFamily == Proto)
+ Hints.ai_family = AFMap[J].Family;
+ if (Hints.ai_family == 0)
+ return true;
+ }
+
+ // Get a new passive address.
+ if (getaddrinfo(IP.c_str(),PStr,&Hints,&PasvAddr) != 0)
+ return true;
+
+ return true;
+}
+ /*}}}*/
+// FTPConn::Size - Return the size of a file /*{{{*/
+// ---------------------------------------------------------------------
+/* Grab the file size from the server, 0 means no size or empty file */
+bool FTPConn::Size(const char *Path,unsigned long long &Size)
+{
+ // Query the size
+ unsigned int Tag;
+ string Msg;
+ Size = 0;
+ if (WriteMsg(Tag,Msg,"SIZE %s",Path) == false)
+ return false;
+
+ char *End;
+ Size = strtoull(Msg.c_str(),&End,10);
+ if (Tag >= 400 || End == Msg.c_str())
+ Size = 0;
+ return true;
+}
+ /*}}}*/
+// FTPConn::ModTime - Return the modification time of the file /*{{{*/
+// ---------------------------------------------------------------------
+/* Like Size no error is returned if the command is not supported. If the
+ command fails then time is set to the current time of day to fool
+ date checks. */
+bool FTPConn::ModTime(const char *Path, time_t &Time)
+{
+ Time = time(&Time);
+
+ // Query the mod time
+ unsigned int Tag;
+ string Msg;
+ if (WriteMsg(Tag,Msg,"MDTM %s",Path) == false)
+ return false;
+ if (Tag >= 400 || Msg.empty() == true || isdigit(Msg[0]) == 0)
+ return true;
+
+ // Parse it
+ return FTPMDTMStrToTime(Msg.c_str(), Time);
+}
+ /*}}}*/
+// FTPConn::CreateDataFd - Get a data connection /*{{{*/
+// ---------------------------------------------------------------------
+/* Create the data connection. Call FinalizeDataFd after this though.. */
+bool FTPConn::CreateDataFd()
+{
+ close(DataFd);
+ DataFd = -1;
+
+ // Attempt to enter passive mode.
+ if (TryPassive == true)
+ {
+ if (GoPasv() == false)
+ return false;
+
+ // Oops, didn't work out, don't bother trying again.
+ if (PasvAddr == 0)
+ TryPassive = false;
+ }
+
+ // Passive mode?
+ if (PasvAddr != 0)
+ {
+ // Get a socket
+ if ((DataFd = socket(PasvAddr->ai_family,PasvAddr->ai_socktype,
+ PasvAddr->ai_protocol)) < 0)
+ return _error->Errno("socket",_("Could not create a socket"));
+
+ // Connect to the server
+ SetNonBlock(DataFd,true);
+ if (connect(DataFd,PasvAddr->ai_addr,PasvAddr->ai_addrlen) < 0 &&
+ errno != EINPROGRESS)
+ return _error->Errno("socket",_("Could not create a socket"));
+
+ /* This implements a timeout for connect by opening the connection
+ nonblocking */
+ if (WaitFd(DataFd,true,TimeOut) == false)
+ return _error->Error(_("Could not connect data socket, connection timed out"));
+ unsigned int Err;
+ unsigned int Len = sizeof(Err);
+ if (getsockopt(DataFd,SOL_SOCKET,SO_ERROR,&Err,&Len) != 0)
+ return _error->Errno("getsockopt",_("Failed"));
+ if (Err != 0)
+ return _error->Error(_("Could not connect passive socket."));
+
+ return true;
+ }
+
+ // Port mode :<
+ close(DataListenFd);
+ DataListenFd = -1;
+
+ // Get the information for a listening socket.
+ struct addrinfo *BindAddr = NULL;
+ struct addrinfo Hints;
+ memset(&Hints,0,sizeof(Hints));
+ Hints.ai_socktype = SOCK_STREAM;
+ Hints.ai_flags |= AI_PASSIVE;
+ Hints.ai_family = ((struct sockaddr *)&ServerAddr)->sa_family;
+ if (getaddrinfo(0,"0",&Hints,&BindAddr) != 0 || BindAddr == NULL)
+ return _error->Error(_("getaddrinfo was unable to get a listening socket"));
+
+ // Construct the socket
+ if ((DataListenFd = socket(BindAddr->ai_family,BindAddr->ai_socktype,
+ BindAddr->ai_protocol)) < 0)
+ {
+ freeaddrinfo(BindAddr);
+ return _error->Errno("socket",_("Could not create a socket"));
+ }
+
+ // Bind and listen
+ if (::bind(DataListenFd,BindAddr->ai_addr,BindAddr->ai_addrlen) < 0)
+ {
+ freeaddrinfo(BindAddr);
+ return _error->Errno("bind",_("Could not bind a socket"));
+ }
+ freeaddrinfo(BindAddr);
+ if (listen(DataListenFd,1) < 0)
+ return _error->Errno("listen",_("Could not listen on the socket"));
+ SetNonBlock(DataListenFd,true);
+
+ // Determine the name to send to the remote
+ struct sockaddr_storage Addr;
+ socklen_t AddrLen = sizeof(Addr);
+ if (getsockname(DataListenFd,(sockaddr *)&Addr,&AddrLen) < 0)
+ return _error->Errno("getsockname",_("Could not determine the socket's name"));
+
+
+ // Reverse the address. We need the server address and the data port.
+ char Name[NI_MAXHOST];
+ char Service[NI_MAXSERV];
+ char Service2[NI_MAXSERV];
+ getnameinfo((struct sockaddr *)&Addr,AddrLen,
+ Name,sizeof(Name),Service,sizeof(Service),
+ NI_NUMERICHOST|NI_NUMERICSERV);
+ getnameinfo((struct sockaddr *)&ServerAddr,ServerAddrLen,
+ Name,sizeof(Name),Service2,sizeof(Service2),
+ NI_NUMERICHOST|NI_NUMERICSERV);
+
+ // Send off an IPv4 address in the old port format
+ if (((struct sockaddr *)&Addr)->sa_family == AF_INET &&
+ ForceExtended == false)
+ {
+ // Convert the dots in the quad into commas
+ for (char *I = Name; *I != 0; I++)
+ if (*I == '.')
+ *I = ',';
+ unsigned long Port = atoi(Service);
+
+ // Send the port command
+ unsigned int Tag;
+ string Msg;
+ if (WriteMsg(Tag,Msg,"PORT %s,%d,%d",
+ Name,
+ (int)(Port >> 8) & 0xff, (int)(Port & 0xff)) == false)
+ return false;
+ if (Tag >= 400)
+ return _error->Error(_("Unable to send PORT command"));
+ return true;
+ }
+
+ // Construct an EPRT command
+ unsigned Proto = 0;
+ for (unsigned J = 0; AFMap[J].Family != 0; J++)
+ if (AFMap[J].Family == ((struct sockaddr *)&Addr)->sa_family)
+ Proto = AFMap[J].IETFFamily;
+ if (Proto == 0)
+ return _error->Error(_("Unknown address family %u (AF_*)"),
+ ((struct sockaddr *)&Addr)->sa_family);
+
+ // Send the EPRT command
+ unsigned int Tag;
+ string Msg;
+ if (WriteMsg(Tag,Msg,"EPRT |%u|%s|%s|",Proto,Name,Service) == false)
+ return false;
+ if (Tag >= 400)
+ return _error->Error(_("EPRT failed, server said: %s"),Msg.c_str());
+ return true;
+}
+ /*}}}*/
+// FTPConn::Finalize - Complete the Data connection /*{{{*/
+// ---------------------------------------------------------------------
+/* If the connection is in port mode this waits for the other end to hook
+ up to us. */
+bool FTPConn::Finalize()
+{
+ // Passive mode? Do nothing
+ if (PasvAddr != 0)
+ return true;
+
+ // Close any old socket..
+ close(DataFd);
+ DataFd = -1;
+
+ // Wait for someone to connect..
+ if (WaitFd(DataListenFd,false,TimeOut) == false)
+ return _error->Error(_("Data socket connect timed out"));
+
+ // Accept the connection
+ struct sockaddr_in Addr;
+ socklen_t Len = sizeof(Addr);
+ DataFd = accept(DataListenFd,(struct sockaddr *)&Addr,&Len);
+ if (DataFd < 0)
+ return _error->Errno("accept",_("Unable to accept connection"));
+
+ close(DataListenFd);
+ DataListenFd = -1;
+
+ return true;
+}
+ /*}}}*/
+// FTPConn::Get - Get a file /*{{{*/
+// ---------------------------------------------------------------------
+/* This opens a data connection, sends REST and RETR and then
+ transfers the file over. */
+bool FTPConn::Get(const char *Path,FileFd &To,unsigned long long Resume,
+ Hashes &Hash,bool &Missing, unsigned long long MaximumSize,
+ pkgAcqMethod *Owner)
+{
+ Missing = false;
+ if (CreateDataFd() == false)
+ return false;
+
+ unsigned int Tag;
+ string Msg;
+ if (Resume != 0)
+ {
+ if (WriteMsg(Tag,Msg,"REST %u",Resume) == false)
+ return false;
+ if (Tag >= 400)
+ Resume = 0;
+ }
+
+ if (To.Truncate(Resume) == false)
+ return false;
+
+ if (To.Seek(0) == false)
+ return false;
+
+ if (Resume != 0)
+ {
+ if (Hash.AddFD(To,Resume) == false)
+ {
+ _error->Errno("read",_("Problem hashing file"));
+ return false;
+ }
+ }
+
+ // Send the get command
+ if (WriteMsg(Tag,Msg,"RETR %s",Path) == false)
+ return false;
+
+ if (Tag >= 400)
+ {
+ if (Tag == 550)
+ Missing = true;
+ return _error->Error(_("Unable to fetch file, server said '%s'"),Msg.c_str());
+ }
+
+ // Finish off the data connection
+ if (Finalize() == false)
+ return false;
+
+ // Copy loop
+ unsigned char Buffer[4096];
+ while (1)
+ {
+ // Wait for some data..
+ if (WaitFd(DataFd,false,TimeOut) == false)
+ {
+ Close();
+ return _error->Error(_("Data socket timed out"));
+ }
+
+ // Read the data..
+ int Res = read(DataFd,Buffer,sizeof(Buffer));
+ if (Res == 0)
+ break;
+ if (Res < 0)
+ {
+ if (errno == EAGAIN)
+ continue;
+ break;
+ }
+
+ Hash.Add(Buffer,Res);
+ if (To.Write(Buffer,Res) == false)
+ {
+ Close();
+ return false;
+ }
+
+ if (MaximumSize > 0 && To.Tell() > MaximumSize)
+ {
+ Owner->SetFailReason("MaximumSizeExceeded");
+ return _error->Error("Writing more data than expected (%llu > %llu)",
+ To.Tell(), MaximumSize);
+ }
+ }
+
+ // All done
+ close(DataFd);
+ DataFd = -1;
+
+ // Read the closing message from the server
+ if (ReadResp(Tag,Msg) == false)
+ return false;
+ if (Tag >= 400)
+ return _error->Error(_("Data transfer failed, server said '%s'"),Msg.c_str());
+ return true;
+}
+ /*}}}*/
+
+// FtpMethod::FtpMethod - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+FtpMethod::FtpMethod() : aptMethod("ftp","1.0",SendConfig)
+{
+ signal(SIGTERM,SigTerm);
+ signal(SIGINT,SigTerm);
+
+ Server = 0;
+ FailFd = -1;
+}
+ /*}}}*/
+// FtpMethod::SigTerm - Handle a fatal signal /*{{{*/
+// ---------------------------------------------------------------------
+/* This closes and timestamps the open file. This is necessary to get
+ resume behavior on user abort */
+void FtpMethod::SigTerm(int)
+{
+ if (FailFd == -1)
+ _exit(100);
+
+ // Timestamp
+ struct timeval times[2];
+ times[0].tv_sec = FailTime;
+ times[1].tv_sec = FailTime;
+ times[0].tv_usec = times[1].tv_usec = 0;
+ utimes(FailFile.c_str(), times);
+
+ close(FailFd);
+
+ _exit(100);
+}
+ /*}}}*/
+// FtpMethod::Configuration - Handle a configuration message /*{{{*/
+// ---------------------------------------------------------------------
+/* We stash the desired pipeline depth */
+bool FtpMethod::Configuration(string Message)
+{
+ if (aptMethod::Configuration(Message) == false)
+ return false;
+
+ TimeOut = _config->FindI("Acquire::Ftp::Timeout",TimeOut);
+
+ return true;
+}
+ /*}}}*/
+// FtpMethod::Fetch - Fetch a file /*{{{*/
+// ---------------------------------------------------------------------
+/* Fetch a single file, called by the base class.. */
+bool FtpMethod::Fetch(FetchItem *Itm)
+{
+ URI Get = Itm->Uri;
+ const char *File = Get.Path.c_str();
+ FetchResult Res;
+ Res.Filename = Itm->DestFile;
+ Res.IMSHit = false;
+
+ maybe_add_auth (Get, _config->FindFile("Dir::Etc::netrc"));
+
+ // Connect to the server
+ if (Server == 0 || Server->Comp(Get) == false)
+ {
+ delete Server;
+ Server = new FTPConn(Get);
+ }
+
+ // Could not connect is a transient error..
+ if (Server->Open(this) == false)
+ {
+ Server->Close();
+ Fail(true);
+ return true;
+ }
+
+ // Get the files information
+ Status(_("Query"));
+ unsigned long long Size;
+ if (Server->Size(File,Size) == false ||
+ Server->ModTime(File,FailTime) == false)
+ {
+ Fail(true);
+ return true;
+ }
+ Res.Size = Size;
+
+ // See if it is an IMS hit
+ if (Itm->LastModified == FailTime)
+ {
+ Res.Size = 0;
+ Res.IMSHit = true;
+ URIDone(Res);
+ return true;
+ }
+
+ // See if the file exists
+ struct stat Buf;
+ if (stat(Itm->DestFile.c_str(),&Buf) == 0)
+ {
+ if (Size == (unsigned long long)Buf.st_size && FailTime == Buf.st_mtime)
+ {
+ Res.Size = Buf.st_size;
+ Res.LastModified = Buf.st_mtime;
+ Res.ResumePoint = Buf.st_size;
+ URIDone(Res);
+ return true;
+ }
+
+ // Resume?
+ if (FailTime == Buf.st_mtime && Size > (unsigned long long)Buf.st_size)
+ Res.ResumePoint = Buf.st_size;
+ }
+
+ // Open the file
+ Hashes Hash(Itm->ExpectedHashes);
+ {
+ FileFd Fd(Itm->DestFile,FileFd::WriteAny);
+ if (_error->PendingError() == true)
+ return false;
+
+ URIStart(Res);
+
+ FailFile = Itm->DestFile;
+ FailFile.c_str(); // Make sure we don't do a malloc in the signal handler
+ FailFd = Fd.Fd();
+
+ bool Missing;
+ if (Server->Get(File,Fd,Res.ResumePoint,Hash,Missing,Itm->MaximumSize,this) == false)
+ {
+ Fd.Close();
+
+ // Timestamp
+ struct timeval times[2];
+ times[0].tv_sec = FailTime;
+ times[1].tv_sec = FailTime;
+ times[0].tv_usec = times[1].tv_usec = 0;
+ utimes(FailFile.c_str(), times);
+
+ // If the file is missing we hard fail and delete the destfile
+ // otherwise transient fail
+ if (Missing == true) {
+ RemoveFile("ftp", FailFile);
+ return false;
+ }
+ Fail(true);
+ return true;
+ }
+
+ Res.Size = Fd.Size();
+
+ // Timestamp
+ struct timeval times[2];
+ times[0].tv_sec = FailTime;
+ times[1].tv_sec = FailTime;
+ times[0].tv_usec = times[1].tv_usec = 0;
+ utimes(Fd.Name().c_str(), times);
+ FailFd = -1;
+ }
+
+ Res.LastModified = FailTime;
+ Res.TakeHashes(Hash);
+
+ URIDone(Res);
+
+ return true;
+}
+ /*}}}*/
+
+int main(int, const char *argv[])
+{
+ /* See if we should be come the http client - we do this for http
+ proxy urls */
+ if (getenv("ftp_proxy") != 0)
+ {
+ URI Proxy = string(getenv("ftp_proxy"));
+
+ // Run the HTTP method
+ if (Proxy.Access == "http")
+ {
+ // Copy over the environment setting
+ char S[300];
+ snprintf(S,sizeof(S),"http_proxy=%s",getenv("ftp_proxy"));
+ putenv(S);
+ putenv((char *)"no_proxy=");
+
+ // Run the http method
+ string Path = flNotFile(argv[0]) + "http";
+ execl(Path.c_str(),Path.c_str(),(char *)NULL);
+ cerr << _("Unable to invoke ") << Path << endl;
+ exit(100);
+ }
+ }
+ return FtpMethod().Run();
+}
diff --git a/methods/ftp.h b/methods/ftp.h
new file mode 100644
index 000000000..6a12475a0
--- /dev/null
+++ b/methods/ftp.h
@@ -0,0 +1,91 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/// $Id: ftp.h,v 1.4 2001/03/06 07:15:29 jgg Exp $
+// $Id: ftp.h,v 1.4 2001/03/06 07:15:29 jgg Exp $
+/* ######################################################################
+
+ FTP Acquire Method - This is the FTP acquire method for APT.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef APT_FTP_H
+#define APT_FTP_H
+
+#include <apt-pkg/strutl.h>
+#include "aptmethod.h"
+
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <time.h>
+#include <string>
+
+class FTPConn
+{
+ char Buffer[1024*10];
+ unsigned long Len;
+ int ServerFd;
+ int DataFd;
+ int DataListenFd;
+ URI ServerName;
+ bool ForceExtended;
+ bool TryPassive;
+ bool Debug;
+
+ struct addrinfo *PasvAddr;
+
+ // Generic Peer Address
+ struct sockaddr_storage PeerAddr;
+ socklen_t PeerAddrLen;
+
+ // Generic Server Address (us)
+ struct sockaddr_storage ServerAddr;
+ socklen_t ServerAddrLen;
+
+ // Private helper functions
+ bool ReadLine(std::string &Text);
+ bool Login();
+ bool CreateDataFd();
+ bool Finalize();
+
+ public:
+
+ bool Comp(URI Other) {return Other.Host == ServerName.Host && Other.Port == ServerName.Port && Other.User == ServerName.User && Other.Password == ServerName.Password; };
+
+ // Raw connection IO
+ bool ReadResp(unsigned int &Ret,std::string &Text);
+ bool WriteMsg(unsigned int &Ret,std::string &Text,const char *Fmt,...);
+
+ // Connection control
+ bool Open(pkgAcqMethod *Owner);
+ void Close();
+ bool GoPasv();
+ bool ExtGoPasv();
+
+ // Query
+ bool Size(const char *Path,unsigned long long &Size);
+ bool ModTime(const char *Path, time_t &Time);
+ bool Get(const char *Path,FileFd &To,unsigned long long Resume,
+ Hashes &MD5,bool &Missing, unsigned long long MaximumSize,
+ pkgAcqMethod *Owner);
+
+ explicit FTPConn(URI Srv);
+ ~FTPConn();
+};
+
+class FtpMethod : public aptMethod
+{
+ virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE;
+ virtual bool Configuration(std::string Message) APT_OVERRIDE;
+
+ FTPConn *Server;
+
+ static std::string FailFile;
+ static int FailFd;
+ static time_t FailTime;
+ static APT_NORETURN void SigTerm(int);
+
+ public:
+
+ FtpMethod();
+};
+
+#endif
diff --git a/methods/gpgv.cc b/methods/gpgv.cc
new file mode 100644
index 000000000..51c268d02
--- /dev/null
+++ b/methods/gpgv.cc
@@ -0,0 +1,452 @@
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/gpgv.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/fileutl.h>
+#include "aptmethod.h"
+
+#include <ctype.h>
+#include <errno.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+#include <array>
+#include <algorithm>
+#include <sstream>
+#include <iterator>
+#include <iostream>
+#include <string>
+#include <vector>
+
+#include <apti18n.h>
+
+using std::string;
+using std::vector;
+
+#define GNUPGPREFIX "[GNUPG:]"
+#define GNUPGBADSIG "[GNUPG:] BADSIG"
+#define GNUPGERRSIG "[GNUPG:] ERRSIG"
+#define GNUPGNOPUBKEY "[GNUPG:] NO_PUBKEY"
+#define GNUPGVALIDSIG "[GNUPG:] VALIDSIG"
+#define GNUPGGOODSIG "[GNUPG:] GOODSIG"
+#define GNUPGEXPKEYSIG "[GNUPG:] EXPKEYSIG"
+#define GNUPGEXPSIG "[GNUPG:] EXPSIG"
+#define GNUPGREVKEYSIG "[GNUPG:] REVKEYSIG"
+#define GNUPGNODATA "[GNUPG:] NODATA"
+#define APTKEYWARNING "[APTKEY:] WARNING"
+#define APTKEYERROR "[APTKEY:] ERROR"
+
+struct Digest {
+ enum class State {
+ Untrusted,
+ Weak,
+ Trusted,
+ } state;
+ char name[32];
+
+ State getState() const {
+ std::string optionUntrusted;
+ std::string optionWeak;
+ strprintf(optionUntrusted, "APT::Hashes::%s::Untrusted", name);
+ strprintf(optionWeak, "APT::Hashes::%s::Weak", name);
+ if (_config->FindB(optionUntrusted, false) == true)
+ return State::Untrusted;
+ if (_config->FindB(optionWeak, false) == true)
+ return State::Weak;
+
+ return state;
+ }
+};
+
+static constexpr Digest Digests[] = {
+ {Digest::State::Untrusted, "Invalid digest"},
+ {Digest::State::Untrusted, "MD5"},
+ {Digest::State::Untrusted, "SHA1"},
+ {Digest::State::Untrusted, "RIPE-MD/160"},
+ {Digest::State::Trusted, "Reserved digest"},
+ {Digest::State::Trusted, "Reserved digest"},
+ {Digest::State::Trusted, "Reserved digest"},
+ {Digest::State::Trusted, "Reserved digest"},
+ {Digest::State::Trusted, "SHA256"},
+ {Digest::State::Trusted, "SHA384"},
+ {Digest::State::Trusted, "SHA512"},
+ {Digest::State::Trusted, "SHA224"},
+};
+
+static Digest FindDigest(std::string const & Digest)
+{
+ int id = atoi(Digest.c_str());
+ if (id >= 0 && static_cast<unsigned>(id) < _count(Digests)) {
+ return Digests[id];
+ } else {
+ return Digests[0];
+ }
+}
+
+struct Signer {
+ std::string key;
+ std::string note;
+};
+static bool IsTheSameKey(std::string const &validsig, std::string const &goodsig) {
+ // VALIDSIG reports a keyid (40 = 24 + 16), GOODSIG is a longid (16) only
+ return validsig.compare(24, 16, goodsig, strlen("GOODSIG "), 16) == 0;
+}
+
+class GPGVMethod : public aptMethod
+{
+ private:
+ string VerifyGetSigners(const char *file, const char *outfile,
+ std::string const &key,
+ vector<string> &GoodSigners,
+ vector<string> &BadSigners,
+ vector<string> &WorthlessSigners,
+ vector<Signer> &SoonWorthlessSigners,
+ vector<string> &NoPubKeySigners);
+ protected:
+ virtual bool URIAcquire(std::string const &Message, FetchItem *Itm) APT_OVERRIDE;
+ public:
+ GPGVMethod() : aptMethod("gpgv","1.0",SingleInstance | SendConfig) {};
+};
+static void PushEntryWithKeyID(std::vector<std::string> &Signers, char * const buffer, bool const Debug)
+{
+ char * const msg = buffer + sizeof(GNUPGPREFIX);
+ char *p = msg;
+ // skip the message
+ while (*p && !isspace(*p))
+ ++p;
+ // skip the separator whitespace
+ ++p;
+ // skip the hexdigit fingerprint
+ while (*p && isxdigit(*p))
+ ++p;
+ // cut the rest from the message
+ *p = '\0';
+ if (Debug == true)
+ std::clog << "Got " << msg << " !" << std::endl;
+ Signers.push_back(msg);
+}
+static void PushEntryWithUID(std::vector<std::string> &Signers, char * const buffer, bool const Debug)
+{
+ std::string msg = buffer + sizeof(GNUPGPREFIX);
+ auto const nuke = msg.find_last_not_of("\n\t\r");
+ if (nuke != std::string::npos)
+ msg.erase(nuke + 1);
+ if (Debug == true)
+ std::clog << "Got " << msg << " !" << std::endl;
+ Signers.push_back(msg);
+}
+string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
+ std::string const &key,
+ vector<string> &GoodSigners,
+ vector<string> &BadSigners,
+ vector<string> &WorthlessSigners,
+ vector<Signer> &SoonWorthlessSigners,
+ vector<string> &NoPubKeySigners)
+{
+ bool const Debug = DebugEnabled();
+
+ if (Debug == true)
+ std::clog << "inside VerifyGetSigners" << std::endl;
+
+ int fd[2];
+ bool const keyIsID = (key.empty() == false && key[0] != '/');
+
+ if (pipe(fd) < 0)
+ return "Couldn't create pipe";
+
+ pid_t pid = fork();
+ if (pid < 0)
+ return string("Couldn't spawn new process") + strerror(errno);
+ else if (pid == 0)
+ ExecGPGV(outfile, file, 3, fd, (keyIsID ? "" : key));
+ close(fd[1]);
+
+ FILE *pipein = fdopen(fd[0], "r");
+
+ // Loop over the output of apt-key (which really is gnupg), and check the signatures.
+ std::vector<std::string> ValidSigners;
+ std::vector<std::string> ErrSigners;
+ size_t buffersize = 0;
+ char *buffer = NULL;
+ bool gotNODATA = false;
+ while (1)
+ {
+ if (getline(&buffer, &buffersize, pipein) == -1)
+ break;
+ if (Debug == true)
+ std::clog << "Read: " << buffer << std::endl;
+
+ // Push the data into three separate vectors, which
+ // we later concatenate. They're kept separate so
+ // if we improve the apt method communication stuff later
+ // it will be better.
+ if (strncmp(buffer, GNUPGBADSIG, sizeof(GNUPGBADSIG)-1) == 0)
+ PushEntryWithUID(BadSigners, buffer, Debug);
+ else if (strncmp(buffer, GNUPGERRSIG, sizeof(GNUPGERRSIG)-1) == 0)
+ PushEntryWithKeyID(ErrSigners, buffer, Debug);
+ else if (strncmp(buffer, GNUPGNOPUBKEY, sizeof(GNUPGNOPUBKEY)-1) == 0)
+ {
+ PushEntryWithKeyID(NoPubKeySigners, buffer, Debug);
+ ErrSigners.erase(std::remove_if(ErrSigners.begin(), ErrSigners.end(), [&](std::string const &errsig) {
+ return errsig.compare(strlen("ERRSIG "), 16, buffer, sizeof(GNUPGNOPUBKEY), 16) == 0; }), ErrSigners.end());
+ }
+ else if (strncmp(buffer, GNUPGNODATA, sizeof(GNUPGNODATA)-1) == 0)
+ gotNODATA = true;
+ else if (strncmp(buffer, GNUPGEXPKEYSIG, sizeof(GNUPGEXPKEYSIG)-1) == 0)
+ PushEntryWithUID(WorthlessSigners, buffer, Debug);
+ else if (strncmp(buffer, GNUPGEXPSIG, sizeof(GNUPGEXPSIG)-1) == 0)
+ PushEntryWithUID(WorthlessSigners, buffer, Debug);
+ else if (strncmp(buffer, GNUPGREVKEYSIG, sizeof(GNUPGREVKEYSIG)-1) == 0)
+ PushEntryWithUID(WorthlessSigners, buffer, Debug);
+ else if (strncmp(buffer, GNUPGGOODSIG, sizeof(GNUPGGOODSIG)-1) == 0)
+ PushEntryWithKeyID(GoodSigners, buffer, Debug);
+ else if (strncmp(buffer, GNUPGVALIDSIG, sizeof(GNUPGVALIDSIG)-1) == 0)
+ {
+ std::istringstream iss(buffer + sizeof(GNUPGVALIDSIG));
+ vector<string> tokens{std::istream_iterator<string>{iss},
+ std::istream_iterator<string>{}};
+ auto const sig = tokens[0];
+ // Reject weak digest algorithms
+ Digest digest = FindDigest(tokens[7]);
+ switch (digest.getState()) {
+ case Digest::State::Weak:
+ // Treat them like an expired key: For that a message about expiry
+ // is emitted, a VALIDSIG, but no GOODSIG.
+ SoonWorthlessSigners.push_back({sig, digest.name});
+ if (Debug == true)
+ std::clog << "Got weak VALIDSIG, key ID: " << sig << std::endl;
+ break;
+ case Digest::State::Untrusted:
+ // Treat them like an expired key: For that a message about expiry
+ // is emitted, a VALIDSIG, but no GOODSIG.
+ WorthlessSigners.push_back(sig);
+ GoodSigners.erase(std::remove_if(GoodSigners.begin(), GoodSigners.end(), [&](std::string const &goodsig) {
+ return IsTheSameKey(sig, goodsig); }), GoodSigners.end());
+ if (Debug == true)
+ std::clog << "Got untrusted VALIDSIG, key ID: " << sig << std::endl;
+ break;
+
+ case Digest::State::Trusted:
+ if (Debug == true)
+ std::clog << "Got trusted VALIDSIG, key ID: " << sig << std::endl;
+ break;
+ }
+
+ ValidSigners.push_back(sig);
+ }
+ else if (strncmp(buffer, APTKEYWARNING, sizeof(APTKEYWARNING)-1) == 0)
+ Warning("%s", buffer + sizeof(APTKEYWARNING));
+ else if (strncmp(buffer, APTKEYERROR, sizeof(APTKEYERROR)-1) == 0)
+ _error->Error("%s", buffer + sizeof(APTKEYERROR));
+ }
+ fclose(pipein);
+ free(buffer);
+ std::move(ErrSigners.begin(), ErrSigners.end(), std::back_inserter(WorthlessSigners));
+
+ // apt-key has a --keyid parameter, but this requires gpg, so we call it without it
+ // and instead check after the fact which keyids where used for verification
+ if (keyIsID == true)
+ {
+ if (Debug == true)
+ std::clog << "GoodSigs needs to be limited to keyid " << key << std::endl;
+ bool foundGood = false;
+ for (auto const &k: VectorizeString(key, ','))
+ {
+ if (std::find(ValidSigners.begin(), ValidSigners.end(), k) == ValidSigners.end())
+ continue;
+ // we look for GOODSIG here as well as an expired sig is a valid sig as well (but not a good one)
+ std::string const goodfingerprint = "GOODSIG " + k;
+ std::string const goodlongkeyid = "GOODSIG " + k.substr(24, 16);
+ foundGood = std::find(GoodSigners.begin(), GoodSigners.end(), goodfingerprint) != GoodSigners.end();
+ if (Debug == true)
+ std::clog << "Key " << k << " is valid sig, is " << goodfingerprint << " also a good one? " << (foundGood ? "yes" : "no") << std::endl;
+ std::string goodsig;
+ if (foundGood == false)
+ {
+ foundGood = std::find(GoodSigners.begin(), GoodSigners.end(), goodlongkeyid) != GoodSigners.end();
+ if (Debug == true)
+ std::clog << "Key " << k << " is valid sig, is " << goodlongkeyid << " also a good one? " << (foundGood ? "yes" : "no") << std::endl;
+ goodsig = goodlongkeyid;
+ }
+ else
+ goodsig = goodfingerprint;
+ if (foundGood == false)
+ continue;
+ std::copy(GoodSigners.begin(), GoodSigners.end(), std::back_insert_iterator<std::vector<std::string> >(NoPubKeySigners));
+ GoodSigners.clear();
+ GoodSigners.push_back(goodsig);
+ NoPubKeySigners.erase(
+ std::remove(NoPubKeySigners.begin(),
+ std::remove(NoPubKeySigners.begin(), NoPubKeySigners.end(), goodfingerprint),
+ goodlongkeyid),
+ NoPubKeySigners.end()
+ );
+ break;
+ }
+ if (foundGood == false)
+ {
+ std::copy(GoodSigners.begin(), GoodSigners.end(), std::back_insert_iterator<std::vector<std::string> >(NoPubKeySigners));
+ GoodSigners.clear();
+ }
+ }
+
+ int status;
+ waitpid(pid, &status, 0);
+ if (Debug == true)
+ {
+ ioprintf(std::clog, "gpgv exited with status %i\n", WEXITSTATUS(status));
+ }
+
+ if (Debug)
+ {
+ std::cerr << "Summary:" << std::endl << " Good: ";
+ std::copy(GoodSigners.begin(), GoodSigners.end(), std::ostream_iterator<std::string>(std::cerr, ", "));
+ std::cerr << std::endl << " Bad: ";
+ std::copy(BadSigners.begin(), BadSigners.end(), std::ostream_iterator<std::string>(std::cerr, ", "));
+ std::cerr << std::endl << " Worthless: ";
+ std::copy(WorthlessSigners.begin(), WorthlessSigners.end(), std::ostream_iterator<std::string>(std::cerr, ", "));
+ std::cerr << std::endl << " SoonWorthless: ";
+ std::for_each(SoonWorthlessSigners.begin(), SoonWorthlessSigners.end(), [](Signer const &sig) { std::cerr << sig.key << ", "; });
+ std::cerr << std::endl << " NoPubKey: ";
+ std::copy(NoPubKeySigners.begin(), NoPubKeySigners.end(), std::ostream_iterator<std::string>(std::cerr, ", "));
+ std::cerr << std::endl << " NODATA: " << (gotNODATA ? "yes" : "no") << std::endl;
+ }
+
+ if (WEXITSTATUS(status) == 112)
+ {
+ // acquire system checks for "NODATA" to generate GPG errors (the others are only warnings)
+ std::string errmsg;
+ //TRANSLATORS: %s is a single techy word like 'NODATA'
+ strprintf(errmsg, _("Clearsigned file isn't valid, got '%s' (does the network require authentication?)"), "NODATA");
+ return errmsg;
+ }
+ else if (gotNODATA)
+ {
+ // acquire system checks for "NODATA" to generate GPG errors (the others are only warnings)
+ std::string errmsg;
+ //TRANSLATORS: %s is a single techy word like 'NODATA'
+ strprintf(errmsg, _("Signed file isn't valid, got '%s' (does the network require authentication?)"), "NODATA");
+ return errmsg;
+ }
+ else if (WEXITSTATUS(status) == 0)
+ {
+ if (keyIsID)
+ {
+ // gpgv will report success, but we want to enforce a certain keyring
+ // so if we haven't found the key the valid we found is in fact invalid
+ if (GoodSigners.empty())
+ return _("At least one invalid signature was encountered.");
+ }
+ else
+ {
+ if (GoodSigners.empty())
+ return _("Internal error: Good signature, but could not determine key fingerprint?!");
+ }
+ return "";
+ }
+ else if (WEXITSTATUS(status) == 1)
+ return _("At least one invalid signature was encountered.");
+ else if (WEXITSTATUS(status) == 111)
+ return _("Could not execute 'apt-key' to verify signature (is gnupg installed?)");
+ else
+ return _("Unknown error executing apt-key");
+}
+
+bool GPGVMethod::URIAcquire(std::string const &Message, FetchItem *Itm)
+{
+ URI const Get = Itm->Uri;
+ string const Path = Get.Host + Get.Path; // To account for relative paths
+ std::string const key = LookupTag(Message, "Signed-By");
+ vector<string> GoodSigners;
+ vector<string> BadSigners;
+ // a worthless signature is a expired or revoked one
+ vector<string> WorthlessSigners;
+ vector<Signer> SoonWorthlessSigners;
+ vector<string> NoPubKeySigners;
+
+ FetchResult Res;
+ Res.Filename = Itm->DestFile;
+ URIStart(Res);
+
+ // Run apt-key on file, extract contents and get the key ID of the signer
+ string const msg = VerifyGetSigners(Path.c_str(), Itm->DestFile.c_str(), key,
+ GoodSigners, BadSigners, WorthlessSigners,
+ SoonWorthlessSigners, NoPubKeySigners);
+ if (_error->PendingError())
+ return false;
+
+ // Check if all good signers are soon worthless and warn in that case
+ if (std::all_of(GoodSigners.begin(), GoodSigners.end(), [&](std::string const &good) {
+ return std::any_of(SoonWorthlessSigners.begin(), SoonWorthlessSigners.end(), [&](Signer const &weak) {
+ return IsTheSameKey(weak.key, good);
+ });
+ }))
+ {
+ for (auto const & Signer : SoonWorthlessSigners)
+ // TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+ Warning(_("Signature by key %s uses weak digest algorithm (%s)"), Signer.key.c_str(), Signer.note.c_str());
+ }
+
+ if (GoodSigners.empty() || !BadSigners.empty() || !NoPubKeySigners.empty())
+ {
+ string errmsg;
+ // In this case, something bad probably happened, so we just go
+ // with what the other method gave us for an error message.
+ if (BadSigners.empty() && WorthlessSigners.empty() && NoPubKeySigners.empty())
+ errmsg = msg;
+ else
+ {
+ if (!BadSigners.empty())
+ {
+ errmsg += _("The following signatures were invalid:\n");
+ for (vector<string>::iterator I = BadSigners.begin();
+ I != BadSigners.end(); ++I)
+ errmsg += (*I + "\n");
+ }
+ if (!WorthlessSigners.empty())
+ {
+ errmsg += _("The following signatures were invalid:\n");
+ for (vector<string>::iterator I = WorthlessSigners.begin();
+ I != WorthlessSigners.end(); ++I)
+ errmsg += (*I + "\n");
+ }
+ if (!NoPubKeySigners.empty())
+ {
+ errmsg += _("The following signatures couldn't be verified because the public key is not available:\n");
+ for (vector<string>::iterator I = NoPubKeySigners.begin();
+ I != NoPubKeySigners.end(); ++I)
+ errmsg += (*I + "\n");
+ }
+ }
+ // this is only fatal if we have no good sigs or if we have at
+ // least one bad signature. good signatures and NoPubKey signatures
+ // happen easily when a file is signed with multiple signatures
+ if(GoodSigners.empty() or !BadSigners.empty())
+ return _error->Error("%s", errmsg.c_str());
+ }
+
+ // Just pass the raw output up, because passing it as a real data
+ // structure is too difficult with the method stuff. We keep it
+ // as three separate vectors for future extensibility.
+ Res.GPGVOutput = GoodSigners;
+ std::move(BadSigners.begin(), BadSigners.end(), std::back_inserter(Res.GPGVOutput));
+ std::move(NoPubKeySigners.begin(), NoPubKeySigners.end(), std::back_inserter(Res.GPGVOutput));
+ URIDone(Res);
+
+ if (DebugEnabled())
+ std::clog << "apt-key succeeded\n";
+
+ return true;
+}
+
+
+int main()
+{
+ return GPGVMethod().Run();
+}
diff --git a/methods/http.cc b/methods/http.cc
new file mode 100644
index 000000000..9f5959548
--- /dev/null
+++ b/methods/http.cc
@@ -0,0 +1,1014 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: http.cc,v 1.59 2004/05/08 19:42:35 mdz Exp $
+/* ######################################################################
+
+ HTTP Acquire Method - This is the HTTP acquire method for APT.
+
+ It uses HTTP/1.1 and many of the fancy options there-in, such as
+ pipelining, range, if-range and so on.
+
+ It is based on a doubly buffered select loop. A groupe of requests are
+ fed into a single output buffer that is constantly fed out the
+ socket. This provides ideal pipelining as in many cases all of the
+ requests will fit into a single packet. The input socket is buffered
+ the same way and fed into the fd for the file (may be a pipe in future).
+
+ This double buffering provides fairly substantial transfer rates,
+ compared to wget the http method is about 4% faster. Most importantly,
+ when HTTP is compared with FTP as a protocol the speed difference is
+ huge. In tests over the internet from two sites to llug (via ATM) this
+ program got 230k/s sustained http transfer rates. FTP on the other
+ hand topped out at 170k/s. That combined with the time to setup the
+ FTP connection makes HTTP a vastly superior protocol.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/netrc.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/proxy.h>
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <sys/select.h>
+#include <cstring>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <errno.h>
+#include <arpa/inet.h>
+#include <iostream>
+#include <sstream>
+
+#include "config.h"
+#include "connect.h"
+#include "http.h"
+
+#include <apti18n.h>
+ /*}}}*/
+using namespace std;
+
+unsigned long long CircleBuf::BwReadLimit=0;
+unsigned long long CircleBuf::BwTickReadData=0;
+struct timeval CircleBuf::BwReadTick={0,0};
+const unsigned int CircleBuf::BW_HZ=10;
+
+// CircleBuf::CircleBuf - Circular input buffer /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+CircleBuf::CircleBuf(HttpMethod const * const Owner, unsigned long long Size)
+ : Size(Size), Hash(NULL), TotalWriten(0)
+{
+ Buf = new unsigned char[Size];
+ Reset();
+
+ CircleBuf::BwReadLimit = Owner->ConfigFindI("Dl-Limit", 0) * 1024;
+}
+ /*}}}*/
+// CircleBuf::Reset - Reset to the default state /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void CircleBuf::Reset()
+{
+ InP = 0;
+ OutP = 0;
+ StrPos = 0;
+ TotalWriten = 0;
+ MaxGet = (unsigned long long)-1;
+ OutQueue = string();
+ if (Hash != NULL)
+ {
+ delete Hash;
+ Hash = NULL;
+ }
+}
+ /*}}}*/
+// CircleBuf::Read - Read from a FD into the circular buffer /*{{{*/
+// ---------------------------------------------------------------------
+/* This fills up the buffer with as much data as is in the FD, assuming it
+ is non-blocking.. */
+bool CircleBuf::Read(int Fd)
+{
+ while (1)
+ {
+ // Woops, buffer is full
+ if (InP - OutP == Size)
+ return true;
+
+ // what's left to read in this tick
+ unsigned long long const BwReadMax = CircleBuf::BwReadLimit/BW_HZ;
+
+ if(CircleBuf::BwReadLimit) {
+ struct timeval now;
+ gettimeofday(&now,0);
+
+ unsigned long long d = (now.tv_sec-CircleBuf::BwReadTick.tv_sec)*1000000 +
+ now.tv_usec-CircleBuf::BwReadTick.tv_usec;
+ if(d > 1000000/BW_HZ) {
+ CircleBuf::BwReadTick = now;
+ CircleBuf::BwTickReadData = 0;
+ }
+
+ if(CircleBuf::BwTickReadData >= BwReadMax) {
+ usleep(1000000/BW_HZ);
+ return true;
+ }
+ }
+
+ // Write the buffer segment
+ ssize_t Res;
+ if(CircleBuf::BwReadLimit) {
+ Res = read(Fd,Buf + (InP%Size),
+ BwReadMax > LeftRead() ? LeftRead() : BwReadMax);
+ } else
+ Res = read(Fd,Buf + (InP%Size),LeftRead());
+
+ if(Res > 0 && BwReadLimit > 0)
+ CircleBuf::BwTickReadData += Res;
+
+ if (Res == 0)
+ return false;
+ if (Res < 0)
+ {
+ if (errno == EAGAIN)
+ return true;
+ return false;
+ }
+
+ if (InP == 0)
+ gettimeofday(&Start,0);
+ InP += Res;
+ }
+}
+ /*}}}*/
+// CircleBuf::Read - Put the string into the buffer /*{{{*/
+// ---------------------------------------------------------------------
+/* This will hold the string in and fill the buffer with it as it empties */
+bool CircleBuf::Read(string const &Data)
+{
+ OutQueue.append(Data);
+ FillOut();
+ return true;
+}
+ /*}}}*/
+// CircleBuf::FillOut - Fill the buffer from the output queue /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void CircleBuf::FillOut()
+{
+ if (OutQueue.empty() == true)
+ return;
+ while (1)
+ {
+ // Woops, buffer is full
+ if (InP - OutP == Size)
+ return;
+
+ // Write the buffer segment
+ unsigned long long Sz = LeftRead();
+ if (OutQueue.length() - StrPos < Sz)
+ Sz = OutQueue.length() - StrPos;
+ memcpy(Buf + (InP%Size),OutQueue.c_str() + StrPos,Sz);
+
+ // Advance
+ StrPos += Sz;
+ InP += Sz;
+ if (OutQueue.length() == StrPos)
+ {
+ StrPos = 0;
+ OutQueue = "";
+ return;
+ }
+ }
+}
+ /*}}}*/
+// CircleBuf::Write - Write from the buffer into a FD /*{{{*/
+// ---------------------------------------------------------------------
+/* This empties the buffer into the FD. */
+bool CircleBuf::Write(int Fd)
+{
+ while (1)
+ {
+ FillOut();
+
+ // Woops, buffer is empty
+ if (OutP == InP)
+ return true;
+
+ if (OutP == MaxGet)
+ return true;
+
+ // Write the buffer segment
+ ssize_t Res;
+ Res = write(Fd,Buf + (OutP%Size),LeftWrite());
+
+ if (Res == 0)
+ return false;
+ if (Res < 0)
+ {
+ if (errno == EAGAIN)
+ return true;
+
+ return false;
+ }
+
+ TotalWriten += Res;
+
+ if (Hash != NULL)
+ Hash->Add(Buf + (OutP%Size),Res);
+
+ OutP += Res;
+ }
+}
+ /*}}}*/
+// CircleBuf::WriteTillEl - Write from the buffer to a string /*{{{*/
+// ---------------------------------------------------------------------
+/* This copies till the first empty line */
+bool CircleBuf::WriteTillEl(string &Data,bool Single)
+{
+ // We cheat and assume it is unneeded to have more than one buffer load
+ for (unsigned long long I = OutP; I < InP; I++)
+ {
+ if (Buf[I%Size] != '\n')
+ continue;
+ ++I;
+
+ if (Single == false)
+ {
+ if (I < InP && Buf[I%Size] == '\r')
+ ++I;
+ if (I >= InP || Buf[I%Size] != '\n')
+ continue;
+ ++I;
+ }
+
+ Data = "";
+ while (OutP < I)
+ {
+ unsigned long long Sz = LeftWrite();
+ if (Sz == 0)
+ return false;
+ if (I - OutP < Sz)
+ Sz = I - OutP;
+ Data += string((char *)(Buf + (OutP%Size)),Sz);
+ OutP += Sz;
+ }
+ return true;
+ }
+ return false;
+}
+ /*}}}*/
+// CircleBuf::Stats - Print out stats information /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void CircleBuf::Stats()
+{
+ if (InP == 0)
+ return;
+
+ struct timeval Stop;
+ gettimeofday(&Stop,0);
+/* float Diff = Stop.tv_sec - Start.tv_sec +
+ (float)(Stop.tv_usec - Start.tv_usec)/1000000;
+ clog << "Got " << InP << " in " << Diff << " at " << InP/Diff << endl;*/
+}
+ /*}}}*/
+CircleBuf::~CircleBuf()
+{
+ delete [] Buf;
+ delete Hash;
+}
+
+// HttpServerState::HttpServerState - Constructor /*{{{*/
+HttpServerState::HttpServerState(URI Srv,HttpMethod *Owner) : ServerState(Srv, Owner), In(Owner, 64*1024), Out(Owner, 4*1024)
+{
+ TimeOut = Owner->ConfigFindI("Timeout", TimeOut);
+ Reset();
+}
+ /*}}}*/
+// HttpServerState::Open - Open a connection to the server /*{{{*/
+// ---------------------------------------------------------------------
+/* This opens a connection to the server. */
+static bool TalkToSocksProxy(int const ServerFd, std::string const &Proxy,
+ char const * const type, bool const ReadWrite, uint8_t * const ToFrom,
+ unsigned int const Size, unsigned int const Timeout)
+{
+ if (WaitFd(ServerFd, ReadWrite, Timeout) == false)
+ return _error->Error("Waiting for the SOCKS proxy %s to %s timed out", URI::SiteOnly(Proxy).c_str(), type);
+ if (ReadWrite == false)
+ {
+ if (FileFd::Read(ServerFd, ToFrom, Size) == false)
+ return _error->Error("Reading the %s from SOCKS proxy %s failed", type, URI::SiteOnly(Proxy).c_str());
+ }
+ else
+ {
+ if (FileFd::Write(ServerFd, ToFrom, Size) == false)
+ return _error->Error("Writing the %s to SOCKS proxy %s failed", type, URI::SiteOnly(Proxy).c_str());
+ }
+ return true;
+}
+bool HttpServerState::Open()
+{
+ // Use the already open connection if possible.
+ if (ServerFd != -1)
+ return true;
+
+ Close();
+ In.Reset();
+ Out.Reset();
+ Persistent = true;
+
+ // Determine the proxy setting
+ AutoDetectProxy(ServerName);
+ string SpecificProxy = Owner->ConfigFind("Proxy::" + ServerName.Host, "");
+ if (!SpecificProxy.empty())
+ {
+ if (SpecificProxy == "DIRECT")
+ Proxy = "";
+ else
+ Proxy = SpecificProxy;
+ }
+ else
+ {
+ string DefProxy = Owner->ConfigFind("Proxy", "");
+ if (!DefProxy.empty())
+ {
+ Proxy = DefProxy;
+ }
+ else
+ {
+ char* result = getenv("http_proxy");
+ Proxy = result ? result : "";
+ }
+ }
+
+ // Parse no_proxy, a , separated list of domains
+ if (getenv("no_proxy") != 0)
+ {
+ if (CheckDomainList(ServerName.Host,getenv("no_proxy")) == true)
+ Proxy = "";
+ }
+
+ if (Proxy.empty() == false)
+ Owner->AddProxyAuth(Proxy, ServerName);
+
+ if (Proxy.Access == "socks5h")
+ {
+ if (Connect(Proxy.Host, Proxy.Port, "socks", 1080, ServerFd, TimeOut, Owner) == false)
+ return false;
+
+ /* We implement a very basic SOCKS5 client here complying mostly to RFC1928 expect
+ * for not offering GSSAPI auth which is a must (we only do no or user/pass auth).
+ * We also expect the SOCKS5 server to do hostname lookup (aka socks5h) */
+ std::string const ProxyInfo = URI::SiteOnly(Proxy);
+ Owner->Status(_("Connecting to %s (%s)"),"SOCKS5h proxy",ProxyInfo.c_str());
+ auto const Timeout = Owner->ConfigFindI("TimeOut", 120);
+ #define APT_WriteOrFail(TYPE, DATA, LENGTH) if (TalkToSocksProxy(ServerFd, ProxyInfo, TYPE, true, DATA, LENGTH, Timeout) == false) return false
+ #define APT_ReadOrFail(TYPE, DATA, LENGTH) if (TalkToSocksProxy(ServerFd, ProxyInfo, TYPE, false, DATA, LENGTH, Timeout) == false) return false
+ if (ServerName.Host.length() > 255)
+ return _error->Error("Can't use SOCKS5h as hostname %s is too long!", ServerName.Host.c_str());
+ if (Proxy.User.length() > 255 || Proxy.Password.length() > 255)
+ return _error->Error("Can't use user&pass auth as they are too long (%lu and %lu) for the SOCKS5!", Proxy.User.length(), Proxy.Password.length());
+ if (Proxy.User.empty())
+ {
+ uint8_t greeting[] = { 0x05, 0x01, 0x00 };
+ APT_WriteOrFail("greet-1", greeting, sizeof(greeting));
+ }
+ else
+ {
+ uint8_t greeting[] = { 0x05, 0x02, 0x00, 0x02 };
+ APT_WriteOrFail("greet-2", greeting, sizeof(greeting));
+ }
+ uint8_t greeting[2];
+ APT_ReadOrFail("greet back", greeting, sizeof(greeting));
+ if (greeting[0] != 0x05)
+ return _error->Error("SOCKS proxy %s greets back with wrong version: %d", ProxyInfo.c_str(), greeting[0]);
+ if (greeting[1] == 0x00)
+ ; // no auth has no method-dependent sub-negotiations
+ else if (greeting[1] == 0x02)
+ {
+ if (Proxy.User.empty())
+ return _error->Error("SOCKS proxy %s negotiated user&pass auth, but we had not offered it!", ProxyInfo.c_str());
+ // user&pass auth sub-negotiations are defined by RFC1929
+ std::vector<uint8_t> auth = {{ 0x01, static_cast<uint8_t>(Proxy.User.length()) }};
+ std::copy(Proxy.User.begin(), Proxy.User.end(), std::back_inserter(auth));
+ auth.push_back(static_cast<uint8_t>(Proxy.Password.length()));
+ std::copy(Proxy.Password.begin(), Proxy.Password.end(), std::back_inserter(auth));
+ APT_WriteOrFail("user&pass auth", auth.data(), auth.size());
+ uint8_t authstatus[2];
+ APT_ReadOrFail("auth report", authstatus, sizeof(authstatus));
+ if (authstatus[0] != 0x01)
+ return _error->Error("SOCKS proxy %s auth status response with wrong version: %d", ProxyInfo.c_str(), authstatus[0]);
+ if (authstatus[1] != 0x00)
+ return _error->Error("SOCKS proxy %s reported authorization failure: username or password incorrect? (%d)", ProxyInfo.c_str(), authstatus[1]);
+ }
+ else
+ return _error->Error("SOCKS proxy %s greets back having not found a common authorization method: %d", ProxyInfo.c_str(), greeting[1]);
+ union { uint16_t * i; uint8_t * b; } portu;
+ uint16_t port = htons(static_cast<uint16_t>(ServerName.Port == 0 ? 80 : ServerName.Port));
+ portu.i = &port;
+ std::vector<uint8_t> request = {{ 0x05, 0x01, 0x00, 0x03, static_cast<uint8_t>(ServerName.Host.length()) }};
+ std::copy(ServerName.Host.begin(), ServerName.Host.end(), std::back_inserter(request));
+ request.push_back(portu.b[0]);
+ request.push_back(portu.b[1]);
+ APT_WriteOrFail("request", request.data(), request.size());
+ uint8_t response[4];
+ APT_ReadOrFail("first part of response", response, sizeof(response));
+ if (response[0] != 0x05)
+ return _error->Error("SOCKS proxy %s response with wrong version: %d", ProxyInfo.c_str(), response[0]);
+ if (response[2] != 0x00)
+ return _error->Error("SOCKS proxy %s has unexpected non-zero reserved field value: %d", ProxyInfo.c_str(), response[2]);
+ std::string bindaddr;
+ if (response[3] == 0x01) // IPv4 address
+ {
+ uint8_t ip4port[6];
+ APT_ReadOrFail("IPv4+Port of response", ip4port, sizeof(ip4port));
+ portu.b[0] = ip4port[4];
+ portu.b[1] = ip4port[5];
+ port = ntohs(*portu.i);
+ strprintf(bindaddr, "%d.%d.%d.%d:%d", ip4port[0], ip4port[1], ip4port[2], ip4port[3], port);
+ }
+ else if (response[3] == 0x03) // hostname
+ {
+ uint8_t namelength;
+ APT_ReadOrFail("hostname length of response", &namelength, 1);
+ uint8_t hostname[namelength + 2];
+ APT_ReadOrFail("hostname of response", hostname, sizeof(hostname));
+ portu.b[0] = hostname[namelength];
+ portu.b[1] = hostname[namelength + 1];
+ port = ntohs(*portu.i);
+ hostname[namelength] = '\0';
+ strprintf(bindaddr, "%s:%d", hostname, port);
+ }
+ else if (response[3] == 0x04) // IPv6 address
+ {
+ uint8_t ip6port[18];
+ APT_ReadOrFail("IPv6+port of response", ip6port, sizeof(ip6port));
+ portu.b[0] = ip6port[16];
+ portu.b[1] = ip6port[17];
+ port = ntohs(*portu.i);
+ strprintf(bindaddr, "[%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]:%d",
+ ip6port[0], ip6port[1], ip6port[2], ip6port[3], ip6port[4], ip6port[5], ip6port[6], ip6port[7],
+ ip6port[8], ip6port[9], ip6port[10], ip6port[11], ip6port[12], ip6port[13], ip6port[14], ip6port[15],
+ port);
+ }
+ else
+ return _error->Error("SOCKS proxy %s destination address is of unknown type: %d",
+ ProxyInfo.c_str(), response[3]);
+ if (response[1] != 0x00)
+ {
+ char const * errstr = nullptr;
+ auto errcode = response[1];
+ // Tor error reporting can be a bit arcane, lets try to detect & fix it up
+ if (bindaddr == "0.0.0.0:0")
+ {
+ auto const lastdot = ServerName.Host.rfind('.');
+ if (lastdot == std::string::npos || ServerName.Host.substr(lastdot) != ".onion")
+ ;
+ else if (errcode == 0x01)
+ {
+ auto const prevdot = ServerName.Host.rfind('.', lastdot - 1);
+ if (lastdot == 16 && prevdot == std::string::npos)
+ ; // valid .onion address
+ else if (prevdot != std::string::npos && (lastdot - prevdot) == 17)
+ ; // valid .onion address with subdomain(s)
+ else
+ {
+ errstr = "Invalid hostname: onion service name must be 16 characters long";
+ Owner->SetFailReason("SOCKS");
+ }
+ }
+ // in all likelihood the service is either down or the address has
+ // a typo and so "Host unreachable" is the better understood error
+ // compared to the technically correct "TLL expired".
+ else if (errcode == 0x06)
+ errcode = 0x04;
+ }
+ if (errstr == nullptr)
+ {
+ switch (errcode)
+ {
+ case 0x01: errstr = "general SOCKS server failure"; Owner->SetFailReason("SOCKS"); break;
+ case 0x02: errstr = "connection not allowed by ruleset"; Owner->SetFailReason("SOCKS"); break;
+ case 0x03: errstr = "Network unreachable"; Owner->SetFailReason("ConnectionTimedOut"); break;
+ case 0x04: errstr = "Host unreachable"; Owner->SetFailReason("ConnectionTimedOut"); break;
+ case 0x05: errstr = "Connection refused"; Owner->SetFailReason("ConnectionRefused"); break;
+ case 0x06: errstr = "TTL expired"; Owner->SetFailReason("Timeout"); break;
+ case 0x07: errstr = "Command not supported"; Owner->SetFailReason("SOCKS"); break;
+ case 0x08: errstr = "Address type not supported"; Owner->SetFailReason("SOCKS"); break;
+ default: errstr = "Unknown error"; Owner->SetFailReason("SOCKS"); break;
+ }
+ }
+ return _error->Error("SOCKS proxy %s could not connect to %s (%s) due to: %s (%d)",
+ ProxyInfo.c_str(), ServerName.Host.c_str(), bindaddr.c_str(), errstr, response[1]);
+ }
+ else if (Owner->DebugEnabled())
+ ioprintf(std::clog, "http: SOCKS proxy %s connection established to %s (%s)\n",
+ ProxyInfo.c_str(), ServerName.Host.c_str(), bindaddr.c_str());
+
+ if (WaitFd(ServerFd, true, Timeout) == false)
+ return _error->Error("SOCKS proxy %s reported connection to %s (%s), but timed out",
+ ProxyInfo.c_str(), ServerName.Host.c_str(), bindaddr.c_str());
+ #undef APT_ReadOrFail
+ #undef APT_WriteOrFail
+ }
+ else
+ {
+ // Determine what host and port to use based on the proxy settings
+ int Port = 0;
+ string Host;
+ if (Proxy.empty() == true || Proxy.Host.empty() == true)
+ {
+ if (ServerName.Port != 0)
+ Port = ServerName.Port;
+ Host = ServerName.Host;
+ }
+ else if (Proxy.Access != "http")
+ return _error->Error("Unsupported proxy configured: %s", URI::SiteOnly(Proxy).c_str());
+ else
+ {
+ if (Proxy.Port != 0)
+ Port = Proxy.Port;
+ Host = Proxy.Host;
+ }
+ return Connect(Host,Port,"http",80,ServerFd,TimeOut,Owner);
+ }
+ return true;
+}
+ /*}}}*/
+// HttpServerState::Close - Close a connection to the server /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool HttpServerState::Close()
+{
+ close(ServerFd);
+ ServerFd = -1;
+ return true;
+}
+ /*}}}*/
+// HttpServerState::RunData - Transfer the data from the socket /*{{{*/
+bool HttpServerState::RunData(RequestState &Req)
+{
+ Req.State = RequestState::Data;
+
+ // Chunked transfer encoding is fun..
+ if (Req.Encoding == RequestState::Chunked)
+ {
+ while (1)
+ {
+ // Grab the block size
+ bool Last = true;
+ string Data;
+ In.Limit(-1);
+ do
+ {
+ if (In.WriteTillEl(Data,true) == true)
+ break;
+ }
+ while ((Last = Go(false, Req)) == true);
+
+ if (Last == false)
+ return false;
+
+ // See if we are done
+ unsigned long long Len = strtoull(Data.c_str(),0,16);
+ if (Len == 0)
+ {
+ In.Limit(-1);
+
+ // We have to remove the entity trailer
+ Last = true;
+ do
+ {
+ if (In.WriteTillEl(Data,true) == true && Data.length() <= 2)
+ break;
+ }
+ while ((Last = Go(false, Req)) == true);
+ if (Last == false)
+ return false;
+ return !_error->PendingError();
+ }
+
+ // Transfer the block
+ In.Limit(Len);
+ while (Go(true, Req) == true)
+ if (In.IsLimit() == true)
+ break;
+
+ // Error
+ if (In.IsLimit() == false)
+ return false;
+
+ // The server sends an extra new line before the next block specifier..
+ In.Limit(-1);
+ Last = true;
+ do
+ {
+ if (In.WriteTillEl(Data,true) == true)
+ break;
+ }
+ while ((Last = Go(false, Req)) == true);
+ if (Last == false)
+ return false;
+ }
+ }
+ else
+ {
+ /* Closes encoding is used when the server did not specify a size, the
+ loss of the connection means we are done */
+ if (Req.JunkSize != 0)
+ In.Limit(Req.JunkSize);
+ else if (Req.DownloadSize != 0)
+ In.Limit(Req.DownloadSize);
+ else if (Persistent == false)
+ In.Limit(-1);
+
+ // Just transfer the whole block.
+ do
+ {
+ if (In.IsLimit() == false)
+ continue;
+
+ In.Limit(-1);
+ return !_error->PendingError();
+ }
+ while (Go(true, Req) == true);
+ }
+
+ return Flush(&Req.File) && !_error->PendingError();
+}
+ /*}}}*/
+bool HttpServerState::RunDataToDevNull(RequestState &Req) /*{{{*/
+{
+ // no need to clean up if we discard the connection anyhow
+ if (Persistent == false)
+ return true;
+ Req.File.Open("/dev/null", FileFd::WriteOnly);
+ return RunData(Req);
+}
+ /*}}}*/
+bool HttpServerState::ReadHeaderLines(std::string &Data) /*{{{*/
+{
+ return In.WriteTillEl(Data);
+}
+ /*}}}*/
+bool HttpServerState::LoadNextResponse(bool const ToFile, RequestState &Req)/*{{{*/
+{
+ return Go(ToFile, Req);
+}
+ /*}}}*/
+bool HttpServerState::WriteResponse(const std::string &Data) /*{{{*/
+{
+ return Out.Read(Data);
+}
+ /*}}}*/
+APT_PURE bool HttpServerState::IsOpen() /*{{{*/
+{
+ return (ServerFd != -1);
+}
+ /*}}}*/
+bool HttpServerState::InitHashes(HashStringList const &ExpectedHashes) /*{{{*/
+{
+ delete In.Hash;
+ In.Hash = new Hashes(ExpectedHashes);
+ return true;
+}
+ /*}}}*/
+void HttpServerState::Reset() /*{{{*/
+{
+ ServerState::Reset();
+ ServerFd = -1;
+}
+ /*}}}*/
+
+APT_PURE Hashes * HttpServerState::GetHashes() /*{{{*/
+{
+ return In.Hash;
+}
+ /*}}}*/
+// HttpServerState::Die - The server has closed the connection. /*{{{*/
+bool HttpServerState::Die(RequestState &Req)
+{
+ unsigned int LErrno = errno;
+
+ // Dump the buffer to the file
+ if (Req.State == RequestState::Data)
+ {
+ if (Req.File.IsOpen() == false)
+ return true;
+ // on GNU/kFreeBSD, apt dies on /dev/null because non-blocking
+ // can't be set
+ if (Req.File.Name() != "/dev/null")
+ SetNonBlock(Req.File.Fd(),false);
+ while (In.WriteSpace() == true)
+ {
+ if (In.Write(Req.File.Fd()) == false)
+ return _error->Errno("write",_("Error writing to the file"));
+
+ // Done
+ if (In.IsLimit() == true)
+ return true;
+ }
+ }
+
+ // See if this is because the server finished the data stream
+ if (In.IsLimit() == false && Req.State != RequestState::Header &&
+ Persistent == true)
+ {
+ Close();
+ if (LErrno == 0)
+ return _error->Error(_("Error reading from server. Remote end closed connection"));
+ errno = LErrno;
+ return _error->Errno("read",_("Error reading from server"));
+ }
+ else
+ {
+ In.Limit(-1);
+
+ // Nothing left in the buffer
+ if (In.WriteSpace() == false)
+ return false;
+
+ // We may have got multiple responses back in one packet..
+ Close();
+ return true;
+ }
+
+ return false;
+}
+ /*}}}*/
+// HttpServerState::Flush - Dump the buffer into the file /*{{{*/
+// ---------------------------------------------------------------------
+/* This takes the current input buffer from the Server FD and writes it
+ into the file */
+bool HttpServerState::Flush(FileFd * const File)
+{
+ if (File != nullptr)
+ {
+ // on GNU/kFreeBSD, apt dies on /dev/null because non-blocking
+ // can't be set
+ if (File->Name() != "/dev/null")
+ SetNonBlock(File->Fd(),false);
+ if (In.WriteSpace() == false)
+ return true;
+
+ while (In.WriteSpace() == true)
+ {
+ if (In.Write(File->Fd()) == false)
+ return _error->Errno("write",_("Error writing to file"));
+ if (In.IsLimit() == true)
+ return true;
+ }
+
+ if (In.IsLimit() == true || Persistent == false)
+ return true;
+ }
+ return false;
+}
+ /*}}}*/
+// HttpServerState::Go - Run a single loop /*{{{*/
+// ---------------------------------------------------------------------
+/* This runs the select loop over the server FDs, Output file FDs and
+ stdin. */
+bool HttpServerState::Go(bool ToFile, RequestState &Req)
+{
+ // Server has closed the connection
+ if (ServerFd == -1 && (In.WriteSpace() == false ||
+ ToFile == false))
+ return false;
+
+ fd_set rfds,wfds;
+ FD_ZERO(&rfds);
+ FD_ZERO(&wfds);
+
+ /* Add the server. We only send more requests if the connection will
+ be persisting */
+ if (Out.WriteSpace() == true && ServerFd != -1
+ && Persistent == true)
+ FD_SET(ServerFd,&wfds);
+ if (In.ReadSpace() == true && ServerFd != -1)
+ FD_SET(ServerFd,&rfds);
+
+ // Add the file
+ int FileFD = -1;
+ if (Req.File.IsOpen())
+ FileFD = Req.File.Fd();
+
+ if (In.WriteSpace() == true && ToFile == true && FileFD != -1)
+ FD_SET(FileFD,&wfds);
+
+ // Add stdin
+ if (Owner->ConfigFindB("DependOnSTDIN", true) == true)
+ FD_SET(STDIN_FILENO,&rfds);
+
+ // Figure out the max fd
+ int MaxFd = FileFD;
+ if (MaxFd < ServerFd)
+ MaxFd = ServerFd;
+
+ // Select
+ struct timeval tv;
+ tv.tv_sec = TimeOut;
+ tv.tv_usec = 0;
+ int Res = 0;
+ if ((Res = select(MaxFd+1,&rfds,&wfds,0,&tv)) < 0)
+ {
+ if (errno == EINTR)
+ return true;
+ return _error->Errno("select",_("Select failed"));
+ }
+
+ if (Res == 0)
+ {
+ _error->Error(_("Connection timed out"));
+ return Die(Req);
+ }
+
+ // Handle server IO
+ if (ServerFd != -1 && FD_ISSET(ServerFd,&rfds))
+ {
+ errno = 0;
+ if (In.Read(ServerFd) == false)
+ return Die(Req);
+ }
+
+ if (ServerFd != -1 && FD_ISSET(ServerFd,&wfds))
+ {
+ errno = 0;
+ if (Out.Write(ServerFd) == false)
+ return Die(Req);
+ }
+
+ // Send data to the file
+ if (FileFD != -1 && FD_ISSET(FileFD,&wfds))
+ {
+ if (In.Write(FileFD) == false)
+ return _error->Errno("write",_("Error writing to output file"));
+ }
+
+ if (Req.MaximumSize > 0 && Req.File.IsOpen() && Req.File.Failed() == false && Req.File.Tell() > Req.MaximumSize)
+ {
+ Owner->SetFailReason("MaximumSizeExceeded");
+ return _error->Error("Writing more data than expected (%llu > %llu)",
+ Req.File.Tell(), Req.MaximumSize);
+ }
+
+ // Handle commands from APT
+ if (FD_ISSET(STDIN_FILENO,&rfds))
+ {
+ if (Owner->Run(true) != -1)
+ exit(100);
+ }
+
+ return true;
+}
+ /*}}}*/
+
+// HttpMethod::SendReq - Send the HTTP request /*{{{*/
+// ---------------------------------------------------------------------
+/* This places the http request in the outbound buffer */
+void HttpMethod::SendReq(FetchItem *Itm)
+{
+ URI Uri = Itm->Uri;
+ {
+ auto const plus = Binary.find('+');
+ if (plus != std::string::npos)
+ Uri.Access = Binary.substr(plus + 1);
+ }
+
+ // The HTTP server expects a hostname with a trailing :port
+ std::stringstream Req;
+ string ProperHost;
+
+ if (Uri.Host.find(':') != string::npos)
+ ProperHost = '[' + Uri.Host + ']';
+ else
+ ProperHost = Uri.Host;
+
+ /* RFC 2616 §5.1.2 requires absolute URIs for requests to proxies,
+ but while its a must for all servers to accept absolute URIs,
+ it is assumed clients will sent an absolute path for non-proxies */
+ std::string requesturi;
+ if (Server->Proxy.Access != "http" || Server->Proxy.empty() == true || Server->Proxy.Host.empty())
+ requesturi = Uri.Path;
+ else
+ requesturi = Uri;
+
+ // The "+" is encoded as a workaround for a amazon S3 bug
+ // see LP bugs #1003633 and #1086997.
+ requesturi = QuoteString(requesturi, "+~ ");
+
+ /* Build the request. No keep-alive is included as it is the default
+ in 1.1, can cause problems with proxies, and we are an HTTP/1.1
+ client anyway.
+ C.f. https://tools.ietf.org/wg/httpbis/trac/ticket/158 */
+ Req << "GET " << requesturi << " HTTP/1.1\r\n";
+ if (Uri.Port != 0)
+ Req << "Host: " << ProperHost << ":" << std::to_string(Uri.Port) << "\r\n";
+ else
+ Req << "Host: " << ProperHost << "\r\n";
+
+ // generate a cache control header (if needed)
+ if (ConfigFindB("No-Cache",false) == true)
+ Req << "Cache-Control: no-cache\r\n"
+ << "Pragma: no-cache\r\n";
+ else if (Itm->IndexFile == true)
+ Req << "Cache-Control: max-age=" << std::to_string(ConfigFindI("Max-Age", 0)) << "\r\n";
+ else if (ConfigFindB("No-Store", false) == true)
+ Req << "Cache-Control: no-store\r\n";
+
+ // If we ask for uncompressed files servers might respond with content-
+ // negotiation which lets us end up with compressed files we do not support,
+ // see 657029, 657560 and co, so if we have no extension on the request
+ // ask for text only. As a sidenote: If there is nothing to negotate servers
+ // seem to be nice and ignore it.
+ if (ConfigFindB("SendAccept", true) == true)
+ {
+ size_t const filepos = Itm->Uri.find_last_of('/');
+ string const file = Itm->Uri.substr(filepos + 1);
+ if (flExtension(file) == file)
+ Req << "Accept: text/*\r\n";
+ }
+
+ // Check for a partial file and send if-queries accordingly
+ struct stat SBuf;
+ if (Server->RangesAllowed && stat(Itm->DestFile.c_str(),&SBuf) >= 0 && SBuf.st_size > 0)
+ Req << "Range: bytes=" << std::to_string(SBuf.st_size) << "-\r\n"
+ << "If-Range: " << TimeRFC1123(SBuf.st_mtime, false) << "\r\n";
+ else if (Itm->LastModified != 0)
+ Req << "If-Modified-Since: " << TimeRFC1123(Itm->LastModified, false).c_str() << "\r\n";
+
+ if (Server->Proxy.Access == "http" &&
+ (Server->Proxy.User.empty() == false || Server->Proxy.Password.empty() == false))
+ Req << "Proxy-Authorization: Basic "
+ << Base64Encode(Server->Proxy.User + ":" + Server->Proxy.Password) << "\r\n";
+
+ maybe_add_auth (Uri, _config->FindFile("Dir::Etc::netrc"));
+ if (Uri.User.empty() == false || Uri.Password.empty() == false)
+ Req << "Authorization: Basic "
+ << Base64Encode(Uri.User + ":" + Uri.Password) << "\r\n";
+
+ Req << "User-Agent: " << ConfigFind("User-Agent",
+ "Debian APT-HTTP/1.3 (" PACKAGE_VERSION ")") << "\r\n";
+
+ Req << "\r\n";
+
+ if (Debug == true)
+ cerr << Req.str() << endl;
+
+ Server->WriteResponse(Req.str());
+}
+ /*}}}*/
+std::unique_ptr<ServerState> HttpMethod::CreateServerState(URI const &uri)/*{{{*/
+{
+ return std::unique_ptr<ServerState>(new HttpServerState(uri, this));
+}
+ /*}}}*/
+void HttpMethod::RotateDNS() /*{{{*/
+{
+ ::RotateDNS();
+}
+ /*}}}*/
+BaseHttpMethod::DealWithHeadersResult HttpMethod::DealWithHeaders(FetchResult &Res, RequestState &Req)/*{{{*/
+{
+ auto ret = BaseHttpMethod::DealWithHeaders(Res, Req);
+ if (ret != BaseHttpMethod::FILE_IS_OPEN)
+ return ret;
+ if (Req.File.Open(Queue->DestFile, FileFd::WriteAny) == false)
+ return ERROR_NOT_FROM_SERVER;
+
+ FailFile = Queue->DestFile;
+ FailFile.c_str(); // Make sure we don't do a malloc in the signal handler
+ FailFd = Req.File.Fd();
+ FailTime = Req.Date;
+
+ if (Server->InitHashes(Queue->ExpectedHashes) == false || Req.AddPartialFileToHashes(Req.File) == false)
+ {
+ _error->Errno("read",_("Problem hashing file"));
+ return ERROR_NOT_FROM_SERVER;
+ }
+ if (Req.StartPos > 0)
+ Res.ResumePoint = Req.StartPos;
+
+ SetNonBlock(Req.File.Fd(),true);
+ return FILE_IS_OPEN;
+}
+ /*}}}*/
+HttpMethod::HttpMethod(std::string &&pProg) : BaseHttpMethod(pProg.c_str(), "1.2", Pipeline | SendConfig)/*{{{*/
+{
+ auto addName = std::inserter(methodNames, methodNames.begin());
+ if (Binary != "http")
+ addName = "http";
+ auto const plus = Binary.find('+');
+ if (plus != std::string::npos)
+ addName = Binary.substr(0, plus);
+}
+ /*}}}*/
diff --git a/methods/http.h b/methods/http.h
new file mode 100644
index 000000000..c79a6454e
--- /dev/null
+++ b/methods/http.h
@@ -0,0 +1,142 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/// $Id: http.h,v 1.12 2002/04/18 05:09:38 jgg Exp $
+// $Id: http.h,v 1.12 2002/04/18 05:09:38 jgg Exp $
+/* ######################################################################
+
+ HTTP Acquire Method - This is the HTTP acquire method for APT.
+
+ ##################################################################### */
+ /*}}}*/
+
+#ifndef APT_HTTP_H
+#define APT_HTTP_H
+
+#include <apt-pkg/strutl.h>
+
+#include <string>
+#include <sys/time.h>
+#include <iostream>
+
+#include "basehttp.h"
+
+using std::cout;
+using std::endl;
+
+class FileFd;
+class HttpMethod;
+class Hashes;
+
+class CircleBuf
+{
+ unsigned char *Buf;
+ unsigned long long Size;
+ unsigned long long InP;
+ unsigned long long OutP;
+ std::string OutQueue;
+ unsigned long long StrPos;
+ unsigned long long MaxGet;
+ struct timeval Start;
+
+ static unsigned long long BwReadLimit;
+ static unsigned long long BwTickReadData;
+ static struct timeval BwReadTick;
+ static const unsigned int BW_HZ;
+
+ unsigned long long LeftRead() const
+ {
+ unsigned long long Sz = Size - (InP - OutP);
+ if (Sz > Size - (InP%Size))
+ Sz = Size - (InP%Size);
+ return Sz;
+ }
+ unsigned long long LeftWrite() const
+ {
+ unsigned long long Sz = InP - OutP;
+ if (InP > MaxGet)
+ Sz = MaxGet - OutP;
+ if (Sz > Size - (OutP%Size))
+ Sz = Size - (OutP%Size);
+ return Sz;
+ }
+ void FillOut();
+
+ public:
+ Hashes *Hash;
+ // total amount of data that got written so far
+ unsigned long long TotalWriten;
+
+ // Read data in
+ bool Read(int Fd);
+ bool Read(std::string const &Data);
+
+ // Write data out
+ bool Write(int Fd);
+ bool WriteTillEl(std::string &Data,bool Single = false);
+
+ // Control the write limit
+ void Limit(long long Max) {if (Max == -1) MaxGet = 0-1; else MaxGet = OutP + Max;}
+ bool IsLimit() const {return MaxGet == OutP;};
+ void Print() const {cout << MaxGet << ',' << OutP << endl;};
+
+ // Test for free space in the buffer
+ bool ReadSpace() const {return Size - (InP - OutP) > 0;};
+ bool WriteSpace() const {return InP - OutP > 0;};
+
+ void Reset();
+ // Dump everything
+ void Stats();
+
+ CircleBuf(HttpMethod const * const Owner, unsigned long long Size);
+ ~CircleBuf();
+};
+
+struct HttpServerState: public ServerState
+{
+ // This is the connection itself. Output is data FROM the server
+ CircleBuf In;
+ CircleBuf Out;
+ int ServerFd;
+
+ protected:
+ virtual bool ReadHeaderLines(std::string &Data) APT_OVERRIDE;
+ virtual bool LoadNextResponse(bool const ToFile, RequestState &Req) APT_OVERRIDE;
+ virtual bool WriteResponse(std::string const &Data) APT_OVERRIDE;
+
+ public:
+ virtual void Reset() APT_OVERRIDE;
+
+ virtual bool RunData(RequestState &Req) APT_OVERRIDE;
+ virtual bool RunDataToDevNull(RequestState &Req) APT_OVERRIDE;
+
+ virtual bool Open() APT_OVERRIDE;
+ virtual bool IsOpen() APT_OVERRIDE;
+ virtual bool Close() APT_OVERRIDE;
+ virtual bool InitHashes(HashStringList const &ExpectedHashes) APT_OVERRIDE;
+ virtual Hashes * GetHashes() APT_OVERRIDE;
+ virtual bool Die(RequestState &Req) APT_OVERRIDE;
+ virtual bool Flush(FileFd * const File) APT_OVERRIDE;
+ virtual bool Go(bool ToFile, RequestState &Req) APT_OVERRIDE;
+
+ HttpServerState(URI Srv, HttpMethod *Owner);
+ virtual ~HttpServerState() {Close();};
+};
+
+class HttpMethod : public BaseHttpMethod
+{
+ public:
+ virtual void SendReq(FetchItem *Itm) APT_OVERRIDE;
+
+ virtual std::unique_ptr<ServerState> CreateServerState(URI const &uri) APT_OVERRIDE;
+ virtual void RotateDNS() APT_OVERRIDE;
+ virtual DealWithHeadersResult DealWithHeaders(FetchResult &Res, RequestState &Req) APT_OVERRIDE;
+
+ protected:
+ std::string AutoDetectProxyCmd;
+
+ public:
+ friend struct HttpServerState;
+
+ explicit HttpMethod(std::string &&pProg);
+};
+
+#endif
diff --git a/methods/http_main.cc b/methods/http_main.cc
new file mode 100644
index 000000000..1e56044b7
--- /dev/null
+++ b/methods/http_main.cc
@@ -0,0 +1,17 @@
+#include <config.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/error.h>
+#include <signal.h>
+
+#include "http.h"
+
+int main(int, const char *argv[])
+{
+ // ignore SIGPIPE, this can happen on write() if the socket
+ // closes the connection (this is dealt with via ServerDie())
+ signal(SIGPIPE, SIG_IGN);
+ std::string Binary = flNotDir(argv[0]);
+ if (Binary.find('+') == std::string::npos && Binary != "http")
+ Binary.append("+http");
+ return HttpMethod(std::move(Binary)).Loop();
+}
diff --git a/methods/https.cc b/methods/https.cc
new file mode 100644
index 000000000..d71ef0bf0
--- /dev/null
+++ b/methods/https.cc
@@ -0,0 +1,548 @@
+//-*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: http.cc,v 1.59 2004/05/08 19:42:35 mdz Exp $
+/* ######################################################################
+
+ HTTPS Acquire Method - This is the HTTPS acquire method for APT.
+
+ It uses libcurl
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/netrc.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/macros.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/proxy.h>
+
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <stdlib.h>
+
+#include <array>
+#include <iostream>
+#include <sstream>
+
+
+#include "https.h"
+
+#include <apti18n.h>
+ /*}}}*/
+using namespace std;
+
+struct APT_HIDDEN CURLUserPointer {
+ HttpsMethod * const https;
+ HttpsMethod::FetchResult * const Res;
+ HttpsMethod::FetchItem const * const Itm;
+ RequestState * const Req;
+ CURLUserPointer(HttpsMethod * const https, HttpsMethod::FetchResult * const Res,
+ HttpsMethod::FetchItem const * const Itm, RequestState * const Req) : https(https), Res(Res), Itm(Itm), Req(Req) {}
+};
+
+size_t
+HttpsMethod::parse_header(void *buffer, size_t size, size_t nmemb, void *userp)
+{
+ size_t len = size * nmemb;
+ CURLUserPointer *me = static_cast<CURLUserPointer *>(userp);
+ std::string line((char*) buffer, len);
+ for (--len; len > 0; --len)
+ if (isspace_ascii(line[len]) == 0)
+ {
+ ++len;
+ break;
+ }
+ line.erase(len);
+
+ if (line.empty() == true)
+ {
+ if (me->Req->File.Open(me->Itm->DestFile, FileFd::WriteAny) == false)
+ return ERROR_NOT_FROM_SERVER;
+
+ me->Req->JunkSize = 0;
+ if (me->Req->Result != 416 && me->Req->StartPos != 0)
+ ;
+ else if (me->Req->Result == 416)
+ {
+ bool partialHit = false;
+ if (me->Itm->ExpectedHashes.usable() == true)
+ {
+ Hashes resultHashes(me->Itm->ExpectedHashes);
+ FileFd file(me->Itm->DestFile, FileFd::ReadOnly);
+ me->Req->TotalFileSize = file.FileSize();
+ me->Req->Date = file.ModificationTime();
+ resultHashes.AddFD(file);
+ HashStringList const hashList = resultHashes.GetHashStringList();
+ partialHit = (me->Itm->ExpectedHashes == hashList);
+ }
+ else if (me->Req->Result == 416 && me->Req->TotalFileSize == me->Req->File.FileSize())
+ partialHit = true;
+
+ if (partialHit == true)
+ {
+ me->Req->Result = 200;
+ me->Req->StartPos = me->Req->TotalFileSize;
+ // the actual size is not important for https as curl will deal with it
+ // by itself and e.g. doesn't bother us with transport-encoding…
+ me->Req->JunkSize = std::numeric_limits<unsigned long long>::max();
+ }
+ else
+ me->Req->StartPos = 0;
+ }
+ else
+ me->Req->StartPos = 0;
+
+ me->Res->LastModified = me->Req->Date;
+ me->Res->Size = me->Req->TotalFileSize;
+ me->Res->ResumePoint = me->Req->StartPos;
+
+ // we expect valid data, so tell our caller we get the file now
+ if (me->Req->Result >= 200 && me->Req->Result < 300)
+ {
+ if (me->Res->Size != 0 && me->Res->Size > me->Res->ResumePoint)
+ me->https->URIStart(*me->Res);
+ if (me->Req->AddPartialFileToHashes(me->Req->File) == false)
+ return 0;
+ }
+ else
+ me->Req->JunkSize = std::numeric_limits<decltype(me->Req->JunkSize)>::max();
+ }
+ else if (me->Req->HeaderLine(line) == false)
+ return 0;
+
+ return size*nmemb;
+}
+
+size_t
+HttpsMethod::write_data(void *buffer, size_t size, size_t nmemb, void *userp)
+{
+ CURLUserPointer *me = static_cast<CURLUserPointer *>(userp);
+ size_t buffer_size = size * nmemb;
+ // we don't need to count the junk here, just drop anything we get as
+ // we don't always know how long it would be, e.g. in chunked encoding.
+ if (me->Req->JunkSize != 0)
+ return buffer_size;
+
+ if(me->Req->File.Write(buffer, buffer_size) != true)
+ return 0;
+
+ if(me->https->Queue->MaximumSize > 0)
+ {
+ unsigned long long const TotalWritten = me->Req->File.Tell();
+ if (TotalWritten > me->https->Queue->MaximumSize)
+ {
+ me->https->SetFailReason("MaximumSizeExceeded");
+ _error->Error("Writing more data than expected (%llu > %llu)",
+ TotalWritten, me->https->Queue->MaximumSize);
+ return 0;
+ }
+ }
+
+ if (me->https->Server->GetHashes()->Add((unsigned char const * const)buffer, buffer_size) == false)
+ return 0;
+
+ return buffer_size;
+}
+
+// HttpsServerState::HttpsServerState - Constructor /*{{{*/
+HttpsServerState::HttpsServerState(URI Srv,HttpsMethod * Owner) : ServerState(Srv, Owner), Hash(NULL)
+{
+ TimeOut = Owner->ConfigFindI("Timeout", TimeOut);
+ Reset();
+}
+ /*}}}*/
+bool HttpsServerState::InitHashes(HashStringList const &ExpectedHashes) /*{{{*/
+{
+ delete Hash;
+ Hash = new Hashes(ExpectedHashes);
+ return true;
+}
+ /*}}}*/
+APT_PURE Hashes * HttpsServerState::GetHashes() /*{{{*/
+{
+ return Hash;
+}
+ /*}}}*/
+
+bool HttpsMethod::SetupProxy() /*{{{*/
+{
+ URI ServerName = Queue->Uri;
+
+ // Determine the proxy setting
+ AutoDetectProxy(ServerName);
+
+ // Curl should never read proxy settings from the environment, as
+ // we determine which proxy to use. Do this for consistency among
+ // methods and prevent an environment variable overriding a
+ // no-proxy ("DIRECT") setting in apt.conf.
+ curl_easy_setopt(curl, CURLOPT_PROXY, "");
+
+ // Determine the proxy setting - try https first, fallback to http and use env at last
+ string UseProxy = ConfigFind("Proxy::" + ServerName.Host, "");
+ if (UseProxy.empty() == true)
+ UseProxy = ConfigFind("Proxy", "");
+ // User wants to use NO proxy, so nothing to setup
+ if (UseProxy == "DIRECT")
+ return true;
+
+ // Parse no_proxy, a comma (,) separated list of domains we don't want to use
+ // a proxy for so we stop right here if it is in the list
+ if (getenv("no_proxy") != 0 && CheckDomainList(ServerName.Host,getenv("no_proxy")) == true)
+ return true;
+
+ if (UseProxy.empty() == true)
+ {
+ const char* result = nullptr;
+ if (std::find(methodNames.begin(), methodNames.end(), "https") != methodNames.end())
+ result = getenv("https_proxy");
+ // FIXME: Fall back to http_proxy is to remain compatible with
+ // existing setups and behaviour of apt.conf. This should be
+ // deprecated in the future (including apt.conf). Most other
+ // programs do not fall back to http proxy settings and neither
+ // should Apt.
+ if (result == nullptr && std::find(methodNames.begin(), methodNames.end(), "http") != methodNames.end())
+ result = getenv("http_proxy");
+ UseProxy = result == nullptr ? "" : result;
+ }
+
+ // Determine what host and port to use based on the proxy settings
+ if (UseProxy.empty() == false)
+ {
+ Proxy = UseProxy;
+ AddProxyAuth(Proxy, ServerName);
+
+ if (Proxy.Access == "socks5h")
+ curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
+ else if (Proxy.Access == "socks5")
+ curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
+ else if (Proxy.Access == "socks4a")
+ curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4A);
+ else if (Proxy.Access == "socks")
+ curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
+ else if (Proxy.Access == "http" || Proxy.Access == "https")
+ curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
+ else
+ return false;
+
+ if (Proxy.Port != 1)
+ curl_easy_setopt(curl, CURLOPT_PROXYPORT, Proxy.Port);
+ curl_easy_setopt(curl, CURLOPT_PROXY, Proxy.Host.c_str());
+ if (Proxy.User.empty() == false || Proxy.Password.empty() == false)
+ {
+ curl_easy_setopt(curl, CURLOPT_PROXYUSERNAME, Proxy.User.c_str());
+ curl_easy_setopt(curl, CURLOPT_PROXYPASSWORD, Proxy.Password.c_str());
+ }
+ }
+ return true;
+} /*}}}*/
+// HttpsMethod::Fetch - Fetch an item /*{{{*/
+// ---------------------------------------------------------------------
+/* This adds an item to the pipeline. We keep the pipeline at a fixed
+ depth. */
+bool HttpsMethod::Fetch(FetchItem *Itm)
+{
+ struct stat SBuf;
+ struct curl_slist *headers=NULL;
+ char curl_errorstr[CURL_ERROR_SIZE];
+ URI Uri = Itm->Uri;
+ setPostfixForMethodNames(Uri.Host.c_str());
+ AllowRedirect = ConfigFindB("AllowRedirect", true);
+ Debug = DebugEnabled();
+
+ // TODO:
+ // - http::Pipeline-Depth
+ // - error checking/reporting
+ // - more debug options? (CURLOPT_DEBUGFUNCTION?)
+ {
+ auto const plus = Binary.find('+');
+ if (plus != std::string::npos)
+ Uri.Access = Binary.substr(plus + 1);
+ }
+
+ curl_easy_reset(curl);
+ if (SetupProxy() == false)
+ return _error->Error("Unsupported proxy configured: %s", URI::SiteOnly(Proxy).c_str());
+
+ maybe_add_auth (Uri, _config->FindFile("Dir::Etc::netrc"));
+ if (Server == nullptr || Server->Comp(Itm->Uri) == false)
+ Server = CreateServerState(Itm->Uri);
+
+ // The "+" is encoded as a workaround for a amazon S3 bug
+ // see LP bugs #1003633 and #1086997. (taken from http method)
+ Uri.Path = QuoteString(Uri.Path, "+~ ");
+
+ FetchResult Res;
+ RequestState Req(this, Server.get());
+ CURLUserPointer userp(this, &Res, Itm, &Req);
+ // callbacks
+ curl_easy_setopt(curl, CURLOPT_URL, static_cast<string>(Uri).c_str());
+ curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, parse_header);
+ curl_easy_setopt(curl, CURLOPT_WRITEHEADER, &userp);
+ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
+ curl_easy_setopt(curl, CURLOPT_WRITEDATA, &userp);
+ // options
+ curl_easy_setopt(curl, CURLOPT_NOPROGRESS, true);
+ curl_easy_setopt(curl, CURLOPT_FILETIME, true);
+ curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 0);
+
+ if (std::find(methodNames.begin(), methodNames.end(), "https") != methodNames.end())
+ {
+ curl_easy_setopt(curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS);
+ curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTPS);
+
+ // File containing the list of trusted CA.
+ std::string const cainfo = ConfigFind("CaInfo", "");
+ if(cainfo.empty() == false)
+ curl_easy_setopt(curl, CURLOPT_CAINFO, cainfo.c_str());
+ // Check server certificate against previous CA list ...
+ curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, ConfigFindB("Verify-Peer", true) ? 1 : 0);
+ // ... and hostname against cert CN or subjectAltName
+ curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, ConfigFindB("Verify-Host", true) ? 2 : 0);
+ // Also enforce issuer of server certificate using its cert
+ std::string const issuercert = ConfigFind("IssuerCert", "");
+ if(issuercert.empty() == false)
+ curl_easy_setopt(curl, CURLOPT_ISSUERCERT, issuercert.c_str());
+ // For client authentication, certificate file ...
+ std::string const pem = ConfigFind("SslCert", "");
+ if(pem.empty() == false)
+ curl_easy_setopt(curl, CURLOPT_SSLCERT, pem.c_str());
+ // ... and associated key.
+ std::string const key = ConfigFind("SslKey", "");
+ if(key.empty() == false)
+ curl_easy_setopt(curl, CURLOPT_SSLKEY, key.c_str());
+ // Allow forcing SSL version to SSLv3 or TLSv1
+ long final_version = CURL_SSLVERSION_DEFAULT;
+ std::string const sslversion = ConfigFind("SslForceVersion", "");
+ if(sslversion == "TLSv1")
+ final_version = CURL_SSLVERSION_TLSv1;
+ else if(sslversion == "TLSv1.0")
+ final_version = CURL_SSLVERSION_TLSv1_0;
+ else if(sslversion == "TLSv1.1")
+ final_version = CURL_SSLVERSION_TLSv1_1;
+ else if(sslversion == "TLSv1.2")
+ final_version = CURL_SSLVERSION_TLSv1_2;
+ else if(sslversion == "SSLv3")
+ final_version = CURL_SSLVERSION_SSLv3;
+ curl_easy_setopt(curl, CURLOPT_SSLVERSION, final_version);
+ // CRL file
+ std::string const crlfile = ConfigFind("CrlFile", "");
+ if(crlfile.empty() == false)
+ curl_easy_setopt(curl, CURLOPT_CRLFILE, crlfile.c_str());
+ }
+ else
+ {
+ curl_easy_setopt(curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTP);
+ curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP);
+ }
+ // cache-control
+ if(ConfigFindB("No-Cache", false) == false)
+ {
+ // cache enabled
+ if (ConfigFindB("No-Store", false) == true)
+ headers = curl_slist_append(headers,"Cache-Control: no-store");
+ std::string ss;
+ strprintf(ss, "Cache-Control: max-age=%u", ConfigFindI("Max-Age", 0));
+ headers = curl_slist_append(headers, ss.c_str());
+ } else {
+ // cache disabled by user
+ headers = curl_slist_append(headers, "Cache-Control: no-cache");
+ headers = curl_slist_append(headers, "Pragma: no-cache");
+ }
+ curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
+ // speed limit
+ int const dlLimit = ConfigFindI("Dl-Limit", 0) * 1024;
+ if (dlLimit > 0)
+ curl_easy_setopt(curl, CURLOPT_MAX_RECV_SPEED_LARGE, dlLimit);
+
+ // set header
+ curl_easy_setopt(curl, CURLOPT_USERAGENT, ConfigFind("User-Agent", "Debian APT-CURL/1.0 (" PACKAGE_VERSION ")").c_str());
+
+ // set timeout
+ int const timeout = ConfigFindI("Timeout", 120);
+ curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, timeout);
+ //set really low lowspeed timeout (see #497983)
+ curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, DL_MIN_SPEED);
+ curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, timeout);
+
+ if(_config->FindB("Acquire::ForceIPv4", false) == true)
+ curl_easy_setopt(curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
+ else if(_config->FindB("Acquire::ForceIPv6", false) == true)
+ curl_easy_setopt(curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V6);
+
+ // debug
+ if (Debug == true)
+ curl_easy_setopt(curl, CURLOPT_VERBOSE, true);
+
+ // error handling
+ curl_errorstr[0] = '\0';
+ curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_errorstr);
+
+ // If we ask for uncompressed files servers might respond with content-
+ // negotiation which lets us end up with compressed files we do not support,
+ // see 657029, 657560 and co, so if we have no extension on the request
+ // ask for text only. As a sidenote: If there is nothing to negotate servers
+ // seem to be nice and ignore it.
+ if (ConfigFindB("SendAccept", true))
+ {
+ size_t const filepos = Itm->Uri.find_last_of('/');
+ string const file = Itm->Uri.substr(filepos + 1);
+ if (flExtension(file) == file)
+ headers = curl_slist_append(headers, "Accept: text/*");
+ }
+
+ // if we have the file send an if-range query with a range header
+ if (Server->RangesAllowed && stat(Itm->DestFile.c_str(),&SBuf) >= 0 && SBuf.st_size > 0)
+ {
+ std::string Buf;
+ strprintf(Buf, "Range: bytes=%lli-", (long long) SBuf.st_size);
+ headers = curl_slist_append(headers, Buf.c_str());
+ strprintf(Buf, "If-Range: %s", TimeRFC1123(SBuf.st_mtime, false).c_str());
+ headers = curl_slist_append(headers, Buf.c_str());
+ }
+ else if(Itm->LastModified > 0)
+ {
+ curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
+ curl_easy_setopt(curl, CURLOPT_TIMEVALUE, Itm->LastModified);
+ }
+
+ if (Server->InitHashes(Itm->ExpectedHashes) == false)
+ return false;
+
+ // keep apt updated
+ Res.Filename = Itm->DestFile;
+
+ // get it!
+ CURLcode success = curl_easy_perform(curl);
+
+ // If the server returns 200 OK but the If-Modified-Since condition is not
+ // met, CURLINFO_CONDITION_UNMET will be set to 1
+ long curl_condition_unmet = 0;
+ curl_easy_getinfo(curl, CURLINFO_CONDITION_UNMET, &curl_condition_unmet);
+ if (curl_condition_unmet == 1)
+ Req.Result = 304;
+
+ Req.File.Close();
+ curl_slist_free_all(headers);
+
+ // cleanup
+ if (success != CURLE_OK)
+ {
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wswitch"
+ switch (success)
+ {
+ case CURLE_COULDNT_RESOLVE_PROXY:
+ case CURLE_COULDNT_RESOLVE_HOST:
+ SetFailReason("ResolveFailure");
+ break;
+ case CURLE_COULDNT_CONNECT:
+ SetFailReason("ConnectionRefused");
+ break;
+ case CURLE_OPERATION_TIMEDOUT:
+ SetFailReason("Timeout");
+ break;
+ }
+#pragma GCC diagnostic pop
+ // only take curls technical errors if we haven't our own
+ // (e.g. for the maximum size limit we have and curls can be confusing)
+ if (_error->PendingError() == false)
+ _error->Error("%s", curl_errorstr);
+ else
+ _error->Warning("curl: %s", curl_errorstr);
+ return false;
+ }
+
+ switch (DealWithHeaders(Res, Req))
+ {
+ case BaseHttpMethod::IMS_HIT:
+ URIDone(Res);
+ break;
+
+ case BaseHttpMethod::ERROR_WITH_CONTENT_PAGE:
+ // unlink, no need keep 401/404 page content in partial/
+ RemoveFile(Binary.c_str(), Req.File.Name());
+ case BaseHttpMethod::ERROR_UNRECOVERABLE:
+ case BaseHttpMethod::ERROR_NOT_FROM_SERVER:
+ return false;
+
+ case BaseHttpMethod::TRY_AGAIN_OR_REDIRECT:
+ Redirect(NextURI);
+ break;
+
+ case BaseHttpMethod::FILE_IS_OPEN:
+ struct stat resultStat;
+ if (unlikely(stat(Req.File.Name().c_str(), &resultStat) != 0))
+ {
+ _error->Errno("stat", "Unable to access file %s", Req.File.Name().c_str());
+ return false;
+ }
+ Res.Size = resultStat.st_size;
+
+ // Timestamp
+ curl_easy_getinfo(curl, CURLINFO_FILETIME, &Res.LastModified);
+ if (Res.LastModified != -1)
+ {
+ struct timeval times[2];
+ times[0].tv_sec = Res.LastModified;
+ times[1].tv_sec = Res.LastModified;
+ times[0].tv_usec = times[1].tv_usec = 0;
+ utimes(Req.File.Name().c_str(), times);
+ }
+ else
+ Res.LastModified = resultStat.st_mtime;
+
+ // take hashes
+ Res.TakeHashes(*(Server->GetHashes()));
+
+ // keep apt updated
+ URIDone(Res);
+ break;
+ }
+ return true;
+}
+ /*}}}*/
+std::unique_ptr<ServerState> HttpsMethod::CreateServerState(URI const &uri)/*{{{*/
+{
+ return std::unique_ptr<ServerState>(new HttpsServerState(uri, this));
+}
+ /*}}}*/
+HttpsMethod::HttpsMethod(std::string &&pProg) : BaseHttpMethod(std::move(pProg),"1.2",Pipeline | SendConfig)/*{{{*/
+{
+ auto addName = std::inserter(methodNames, methodNames.begin());
+ addName = "http";
+ auto const plus = Binary.find('+');
+ if (plus != std::string::npos)
+ {
+ addName = Binary.substr(plus + 1);
+ auto base = Binary.substr(0, plus);
+ if (base != "https")
+ addName = base;
+ }
+ if (std::find(methodNames.begin(), methodNames.end(), "https") != methodNames.end())
+ curl_global_init(CURL_GLOBAL_SSL);
+ else
+ curl_global_init(CURL_GLOBAL_NOTHING);
+ curl = curl_easy_init();
+}
+ /*}}}*/
+HttpsMethod::~HttpsMethod() /*{{{*/
+{
+ curl_easy_cleanup(curl);
+}
+ /*}}}*/
+int main(int, const char *argv[]) /*{{{*/
+{
+ std::string Binary = flNotDir(argv[0]);
+ if (Binary.find('+') == std::string::npos && Binary != "https")
+ Binary.append("+https");
+ return HttpsMethod(std::move(Binary)).Run();
+}
+ /*}}}*/
diff --git a/methods/https.h b/methods/https.h
new file mode 100644
index 000000000..fbbf34501
--- /dev/null
+++ b/methods/https.h
@@ -0,0 +1,88 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/// $Id: http.h,v 1.12 2002/04/18 05:09:38 jgg Exp $
+// $Id: http.h,v 1.12 2002/04/18 05:09:38 jgg Exp $
+/* ######################################################################
+
+ HTTP Acquire Method - This is the HTTP acquire method for APT.
+
+ ##################################################################### */
+ /*}}}*/
+
+#ifndef APT_HTTPS_H
+#define APT_HTTPS_H
+
+#include <curl/curl.h>
+#include <iostream>
+#include <stddef.h>
+#include <string>
+#include <memory>
+
+#include "basehttp.h"
+
+using std::cout;
+using std::endl;
+
+class Hashes;
+class HttpsMethod;
+class FileFd;
+
+class HttpsServerState : public ServerState
+{
+ Hashes * Hash;
+
+ protected:
+ virtual bool ReadHeaderLines(std::string &/*Data*/) APT_OVERRIDE { return false; }
+ virtual bool LoadNextResponse(bool const /*ToFile*/, RequestState &/*Req*/) APT_OVERRIDE { return false; }
+
+ public:
+ virtual bool WriteResponse(std::string const &/*Data*/) APT_OVERRIDE { return false; }
+
+ /** \brief Transfer the data from the socket */
+ virtual bool RunData(RequestState &) APT_OVERRIDE { return false; }
+ virtual bool RunDataToDevNull(RequestState &) APT_OVERRIDE { return false; }
+
+ virtual bool Open() APT_OVERRIDE { return false; }
+ virtual bool IsOpen() APT_OVERRIDE { return false; }
+ virtual bool Close() APT_OVERRIDE { return false; }
+ virtual bool InitHashes(HashStringList const &ExpectedHashes) APT_OVERRIDE;
+ virtual Hashes * GetHashes() APT_OVERRIDE;
+ virtual bool Die(RequestState &/*Req*/) APT_OVERRIDE { return false; }
+ virtual bool Flush(FileFd * const /*File*/) APT_OVERRIDE { return false; }
+ virtual bool Go(bool /*ToFile*/, RequestState &/*Req*/) APT_OVERRIDE { return false; }
+
+ HttpsServerState(URI Srv, HttpsMethod *Owner);
+ virtual ~HttpsServerState() {Close();};
+};
+
+class HttpsMethod : public BaseHttpMethod
+{
+ // minimum speed in bytes/se that triggers download timeout handling
+ static const int DL_MIN_SPEED = 10;
+
+ virtual bool Fetch(FetchItem *) APT_OVERRIDE;
+
+ static size_t parse_header(void *buffer, size_t size, size_t nmemb, void *userp);
+ static size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp);
+ static int progress_callback(void *clientp, double dltotal, double dlnow,
+ double ultotal, double ulnow);
+ bool SetupProxy();
+ CURL *curl;
+
+ // Used by BaseHttpMethods unused by https
+ virtual void SendReq(FetchItem *) APT_OVERRIDE { exit(42); }
+ virtual void RotateDNS() APT_OVERRIDE { exit(42); }
+
+ public:
+
+ virtual std::unique_ptr<ServerState> CreateServerState(URI const &uri) APT_OVERRIDE;
+ using pkgAcqMethod::FetchResult;
+ using pkgAcqMethod::FetchItem;
+
+ explicit HttpsMethod(std::string &&pProg);
+ virtual ~HttpsMethod();
+};
+
+#include <apt-pkg/strutl.h>
+URI Proxy;
+
+#endif
diff --git a/methods/mirror.cc b/methods/mirror.cc
new file mode 100644
index 000000000..71faaf591
--- /dev/null
+++ b/methods/mirror.cc
@@ -0,0 +1,470 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: mirror.cc,v 1.59 2004/05/08 19:42:35 mdz Exp $
+/* ######################################################################
+
+ Mirror Acquire Method - This is the Mirror acquire method for APT.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/acquire-item.h>
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/metaindex.h>
+#include <apt-pkg/strutl.h>
+
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <algorithm>
+#include <iostream>
+#include <fstream>
+#include <sys/stat.h>
+#include <sys/utsname.h>
+#include <dirent.h>
+
+using namespace std;
+
+#include<sstream>
+
+#include "mirror.h"
+#include "http.h"
+#include <apti18n.h>
+ /*}}}*/
+
+/* Done:
+ * - works with http (only!)
+ * - always picks the first mirror from the list
+ * - call out to problem reporting script
+ * - supports "deb mirror://host/path/to/mirror-list/// dist component"
+ * - uses pkgAcqMethod::FailReason() to have a string representation
+ * of the failure that is also send to LP
+ *
+ * TODO:
+ * - deal with running as non-root because we can't write to the lists
+ dir then -> use the cached mirror file
+ * - better method to download than having a pkgAcquire interface here
+ * and better error handling there!
+ * - support more than http
+ * - testing :)
+ */
+
+MirrorMethod::MirrorMethod()
+ : HttpMethod("mirror"), DownloadedMirrorFile(false), Debug(false)
+{
+}
+
+// HttpMethod::Configuration - Handle a configuration message /*{{{*/
+// ---------------------------------------------------------------------
+/* We stash the desired pipeline depth */
+bool MirrorMethod::Configuration(string Message)
+{
+ if (pkgAcqMethod::Configuration(Message) == false)
+ return false;
+ Debug = DebugEnabled();
+
+ return true;
+}
+ /*}}}*/
+
+// clean the mirrors dir based on ttl information
+bool MirrorMethod::Clean(string Dir)
+{
+ vector<metaIndex *>::const_iterator I;
+
+ if(Debug)
+ clog << "MirrorMethod::Clean(): " << Dir << endl;
+
+ if(Dir == "/")
+ return _error->Error("will not clean: '/'");
+
+ // read sources.list
+ pkgSourceList list;
+ list.ReadMainList();
+
+ DIR *D = opendir(Dir.c_str());
+ if (D == 0)
+ return _error->Errno("opendir",_("Unable to read %s"),Dir.c_str());
+
+ string StartDir = SafeGetCWD();
+ if (chdir(Dir.c_str()) != 0)
+ {
+ closedir(D);
+ return _error->Errno("chdir",_("Unable to change to %s"),Dir.c_str());
+ }
+
+ for (struct dirent *Dir = readdir(D); Dir != 0; Dir = readdir(D))
+ {
+ // Skip some files..
+ if (strcmp(Dir->d_name,"lock") == 0 ||
+ strcmp(Dir->d_name,"partial") == 0 ||
+ strcmp(Dir->d_name,"lost+found") == 0 ||
+ strcmp(Dir->d_name,".") == 0 ||
+ strcmp(Dir->d_name,"..") == 0)
+ continue;
+
+ // see if we have that uri
+ for(I=list.begin(); I != list.end(); ++I)
+ {
+ string uri = (*I)->GetURI();
+ if(uri.compare(0, strlen("mirror://"), "mirror://") != 0)
+ continue;
+ string BaseUri = uri.substr(0,uri.size()-1);
+ if (URItoFileName(BaseUri) == Dir->d_name)
+ break;
+ }
+ // nothing found, nuke it
+ if (I == list.end())
+ RemoveFile("mirror", Dir->d_name);
+ }
+
+ closedir(D);
+ if (chdir(StartDir.c_str()) != 0)
+ return _error->Errno("chdir",_("Unable to change to %s"),StartDir.c_str());
+ return true;
+}
+
+
+bool MirrorMethod::DownloadMirrorFile(string /*mirror_uri_str*/)
+{
+ // not that great to use pkgAcquire here, but we do not have
+ // any other way right now
+ string fetch = BaseUri;
+ fetch.replace(0,strlen("mirror://"),"http://");
+
+#if 0 // no need for this, the getArchitectures() will also include the main
+ // arch
+ // append main architecture
+ fetch += "?arch=" + _config->Find("Apt::Architecture");
+#endif
+
+ // append all architectures
+ std::vector<std::string> vec = APT::Configuration::getArchitectures();
+ for (std::vector<std::string>::const_iterator I = vec.begin();
+ I != vec.end(); ++I)
+ if (I == vec.begin())
+ fetch += "?arch=" + (*I);
+ else
+ fetch += "&arch=" + (*I);
+
+ // append the dist as a query string
+ if (Dist != "")
+ fetch += "&dist=" + Dist;
+
+ if(Debug)
+ clog << "MirrorMethod::DownloadMirrorFile(): '" << fetch << "'"
+ << " to " << MirrorFile << endl;
+
+ pkgAcquire Fetcher;
+ new pkgAcqFile(&Fetcher, fetch, "", 0, "", "", "", MirrorFile);
+ bool res = (Fetcher.Run() == pkgAcquire::Continue);
+ if(res) {
+ DownloadedMirrorFile = true;
+ chmod(MirrorFile.c_str(), 0644);
+ }
+ Fetcher.Shutdown();
+
+ if(Debug)
+ clog << "MirrorMethod::DownloadMirrorFile() success: " << res << endl;
+
+ return res;
+}
+
+// Randomizes the lines in the mirror file, this is used so that
+// we spread the load on the mirrors evenly
+bool MirrorMethod::RandomizeMirrorFile(string mirror_file)
+{
+ vector<string> content;
+ string line;
+
+ if (!FileExists(mirror_file))
+ return false;
+
+ // read
+ ifstream in(mirror_file.c_str());
+ while ( !in.eof() ) {
+ getline(in, line);
+ content.push_back(line);
+ }
+
+ // we want the file to be random for each different machine, but also
+ // "stable" on the same machine. this is to avoid running into out-of-sync
+ // issues (i.e. Release/Release.gpg different on each mirror)
+ struct utsname buf;
+ int seed=1;
+ if(uname(&buf) == 0) {
+ for(int i=0,seed=1; buf.nodename[i] != 0; ++i) {
+ seed = seed * 31 + buf.nodename[i];
+ }
+ }
+ srand( seed );
+ random_shuffle(content.begin(), content.end());
+
+ // write
+ ofstream out(mirror_file.c_str());
+ while ( !content.empty()) {
+ line = content.back();
+ content.pop_back();
+ out << line << "\n";
+ }
+
+ return true;
+}
+
+/* convert a the Queue->Uri back to the mirror base uri and look
+ * at all mirrors we have for this, this is needed as queue->uri
+ * may point to different mirrors (if TryNextMirror() was run)
+ */
+void MirrorMethod::CurrentQueueUriToMirror()
+{
+ // already in mirror:// style so nothing to do
+ if(Queue->Uri.find("mirror://") == 0)
+ return;
+
+ // find current mirror and select next one
+ for (vector<string>::const_iterator mirror = AllMirrors.begin();
+ mirror != AllMirrors.end(); ++mirror)
+ {
+ if (Queue->Uri.find(*mirror) == 0)
+ {
+ Queue->Uri.replace(0, mirror->length(), BaseUri);
+ return;
+ }
+ }
+ _error->Error("Internal error: Failed to convert %s back to %s",
+ Queue->Uri.c_str(), BaseUri.c_str());
+}
+
+bool MirrorMethod::TryNextMirror()
+{
+ // find current mirror and select next one
+ for (vector<string>::const_iterator mirror = AllMirrors.begin();
+ mirror != AllMirrors.end(); ++mirror)
+ {
+ if (Queue->Uri.find(*mirror) != 0)
+ continue;
+
+ vector<string>::const_iterator nextmirror = mirror + 1;
+ if (nextmirror == AllMirrors.end())
+ break;
+ Queue->Uri.replace(0, mirror->length(), *nextmirror);
+ if (Debug)
+ clog << "TryNextMirror: " << Queue->Uri << endl;
+
+ // inform parent
+ UsedMirror = *nextmirror;
+ Log("Switching mirror");
+ return true;
+ }
+
+ if (Debug)
+ clog << "TryNextMirror could not find another mirror to try" << endl;
+
+ return false;
+}
+
+bool MirrorMethod::InitMirrors()
+{
+ // if we do not have a MirrorFile, fallback
+ if(!FileExists(MirrorFile))
+ {
+ // FIXME: fallback to a default mirror here instead
+ // and provide a config option to define that default
+ return _error->Error(_("No mirror file '%s' found "), MirrorFile.c_str());
+ }
+
+ if (access(MirrorFile.c_str(), R_OK) != 0)
+ {
+ // FIXME: fallback to a default mirror here instead
+ // and provide a config option to define that default
+ return _error->Error(_("Can not read mirror file '%s'"), MirrorFile.c_str());
+ }
+
+ // FIXME: make the mirror selection more clever, do not
+ // just use the first one!
+ // BUT: we can not make this random, the mirror has to be
+ // stable across session, because otherwise we can
+ // get into sync issues (got indexfiles from mirror A,
+ // but packages from mirror B - one might be out of date etc)
+ ifstream in(MirrorFile.c_str());
+ string s;
+ while (!in.eof())
+ {
+ getline(in, s);
+
+ // ignore lines that start with #
+ if (s.find("#") == 0)
+ continue;
+ // ignore empty lines
+ if (s.size() == 0)
+ continue;
+ // ignore non http lines
+ if (s.compare(0, strlen("http://"), "http://") != 0)
+ continue;
+
+ AllMirrors.push_back(s);
+ }
+ if (AllMirrors.empty()) {
+ return _error->Error(_("No entry found in mirror file '%s'"), MirrorFile.c_str());
+ }
+ Mirror = AllMirrors[0];
+ UsedMirror = Mirror;
+ return true;
+}
+
+string MirrorMethod::GetMirrorFileName(string mirror_uri_str)
+{
+ /*
+ - a mirror_uri_str looks like this:
+ mirror://people.ubuntu.com/~mvo/apt/mirror/mirrors/dists/feisty/Release.gpg
+
+ - the matching source.list entry
+ deb mirror://people.ubuntu.com/~mvo/apt/mirror/mirrors feisty main
+
+ - we actually want to go after:
+ http://people.ubuntu.com/~mvo/apt/mirror/mirrors
+
+ And we need to save the BaseUri for later:
+ - mirror://people.ubuntu.com/~mvo/apt/mirror/mirrors
+
+ FIXME: what if we have two similar prefixes?
+ mirror://people.ubuntu.com/~mvo/mirror
+ mirror://people.ubuntu.com/~mvo/mirror2
+ then mirror_uri_str looks like:
+ mirror://people.ubuntu.com/~mvo/apt/mirror/dists/feisty/Release.gpg
+ mirror://people.ubuntu.com/~mvo/apt/mirror2/dists/feisty/Release.gpg
+ we search sources.list and find:
+ mirror://people.ubuntu.com/~mvo/apt/mirror
+ in both cases! So we need to apply some domain knowledge here :( and
+ check for /dists/ or /Release.gpg as suffixes
+ */
+ string name;
+ if(Debug)
+ std::cerr << "GetMirrorFileName: " << mirror_uri_str << std::endl;
+
+ // read sources.list and find match
+ vector<metaIndex *>::const_iterator I;
+ pkgSourceList list;
+ list.ReadMainList();
+ for(I=list.begin(); I != list.end(); ++I)
+ {
+ string uristr = (*I)->GetURI();
+ if(Debug)
+ std::cerr << "Checking: " << uristr << std::endl;
+ if(uristr.substr(0,strlen("mirror://")) != string("mirror://"))
+ continue;
+ // find matching uri in sources.list
+ if(mirror_uri_str.substr(0,uristr.size()) == uristr)
+ {
+ if(Debug)
+ std::cerr << "found BaseURI: " << uristr << std::endl;
+ BaseUri = uristr.substr(0,uristr.size()-1);
+ Dist = (*I)->GetDist();
+ }
+ }
+ // get new file
+ name = _config->FindDir("Dir::State::mirrors") + URItoFileName(BaseUri);
+
+ if(Debug)
+ {
+ cerr << "base-uri: " << BaseUri << endl;
+ cerr << "mirror-file: " << name << endl;
+ }
+ return name;
+}
+
+// MirrorMethod::Fetch - Fetch an item /*{{{*/
+// ---------------------------------------------------------------------
+/* This adds an item to the pipeline. We keep the pipeline at a fixed
+ depth. */
+bool MirrorMethod::Fetch(FetchItem *Itm)
+{
+ if(Debug)
+ clog << "MirrorMethod::Fetch()" << endl;
+
+ // the http method uses Fetch(0) as a way to update the pipeline,
+ // just let it do its work in this case - Fetch() with a valid
+ // Itm will always run before the first Fetch(0)
+ if(Itm == NULL)
+ return HttpMethod::Fetch(Itm);
+
+ // if we don't have the name of the mirror file on disk yet,
+ // calculate it now (can be derived from the uri)
+ if(MirrorFile.empty())
+ MirrorFile = GetMirrorFileName(Itm->Uri);
+
+ // download mirror file once (if we are after index files)
+ if(Itm->IndexFile && !DownloadedMirrorFile)
+ {
+ Clean(_config->FindDir("Dir::State::mirrors"));
+ if (DownloadMirrorFile(Itm->Uri))
+ RandomizeMirrorFile(MirrorFile);
+ }
+
+ if(AllMirrors.empty()) {
+ if(!InitMirrors()) {
+ // no valid mirror selected, something went wrong downloading
+ // from the master mirror site most likely and there is
+ // no old mirror file availalbe
+ return false;
+ }
+ }
+
+ if(Itm->Uri.find("mirror://") != string::npos)
+ Itm->Uri.replace(0,BaseUri.size(), Mirror);
+
+ if(Debug)
+ clog << "Fetch: " << Itm->Uri << endl << endl;
+
+ // now run the real fetcher
+ return HttpMethod::Fetch(Itm);
+}
+
+void MirrorMethod::Fail(string Err,bool Transient)
+{
+ // FIXME: TryNextMirror is not ideal for indexfile as we may
+ // run into auth issues
+
+ if (Debug)
+ clog << "Failure to get " << Queue->Uri << endl;
+
+ // try the next mirror on fail (if its not a expected failure,
+ // e.g. translations are ok to ignore)
+ if (!Queue->FailIgnore && TryNextMirror())
+ return;
+
+ // all mirrors failed, so bail out
+ string s;
+ strprintf(s, _("[Mirror: %s]"), Mirror.c_str());
+ SetIP(s);
+
+ CurrentQueueUriToMirror();
+ pkgAcqMethod::Fail(Err, Transient);
+}
+
+void MirrorMethod::URIStart(FetchResult &Res)
+{
+ CurrentQueueUriToMirror();
+ pkgAcqMethod::URIStart(Res);
+}
+
+void MirrorMethod::URIDone(FetchResult &Res,FetchResult *Alt)
+{
+ CurrentQueueUriToMirror();
+ pkgAcqMethod::URIDone(Res, Alt);
+}
+
+
+int main()
+{
+ return MirrorMethod().Loop();
+}
+
+
diff --git a/methods/mirror.h b/methods/mirror.h
new file mode 100644
index 000000000..6ebe08e6b
--- /dev/null
+++ b/methods/mirror.h
@@ -0,0 +1,57 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ MIRROR Acquire Method - This is the MIRROR acquire method for APT.
+
+ ##################################################################### */
+ /*}}}*/
+
+#ifndef APT_MIRROR_H
+#define APT_MIRROR_H
+
+#include <iostream>
+#include <string>
+#include <vector>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+
+#include "http.h"
+
+class MirrorMethod : public HttpMethod
+{
+ FetchResult Res;
+ // we simply transform between BaseUri and Mirror
+ std::string BaseUri; // the original mirror://... url
+ std::string Mirror; // the selected mirror uri (http://...)
+ std::vector<std::string> AllMirrors; // all available mirrors
+ std::string MirrorFile; // the file that contains the list of mirrors
+ bool DownloadedMirrorFile; // already downloaded this session
+ std::string Dist; // the target distrubtion (e.g. sid, oneiric)
+
+ bool Debug;
+
+ protected:
+ bool DownloadMirrorFile(std::string uri);
+ bool RandomizeMirrorFile(std::string file);
+ std::string GetMirrorFileName(std::string uri);
+ bool InitMirrors();
+ bool TryNextMirror();
+ void CurrentQueueUriToMirror();
+ bool Clean(std::string dir);
+
+ // we need to overwrite those to transform the url back
+ virtual void Fail(std::string Why, bool Transient = false) APT_OVERRIDE;
+ virtual void URIStart(FetchResult &Res) APT_OVERRIDE;
+ virtual void URIDone(FetchResult &Res,FetchResult *Alt = 0) APT_OVERRIDE;
+ virtual bool Configuration(std::string Message) APT_OVERRIDE;
+
+ public:
+ MirrorMethod();
+ virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE;
+};
+
+
+#endif
diff --git a/methods/rfc2553emu.cc b/methods/rfc2553emu.cc
new file mode 100644
index 000000000..372882769
--- /dev/null
+++ b/methods/rfc2553emu.cc
@@ -0,0 +1,245 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: rfc2553emu.cc,v 1.8 2001/02/20 07:03:18 jgg Exp $
+/* ######################################################################
+
+ RFC 2553 Emulation - Provides emulation for RFC 2553 getaddrinfo,
+ freeaddrinfo and getnameinfo
+
+ This is really C code, it just has a .cc extensions to play nicer with
+ the rest of APT.
+
+ Originally written by Jason Gunthorpe <jgg@debian.org> and placed into
+ the Public Domain, do with it what you will.
+
+ ##################################################################### */
+ /*}}}*/
+#include <config.h>
+
+#include <stdlib.h>
+#include <arpa/inet.h>
+#include <netinet/in.h>
+#include <string.h>
+#include <stdio.h>
+#include "rfc2553emu.h"
+
+#ifndef HAVE_GETADDRINFO
+// getaddrinfo - Resolve a hostname /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+int getaddrinfo(const char *nodename, const char *servname,
+ const struct addrinfo *hints,
+ struct addrinfo **res)
+{
+ struct addrinfo **Result = res;
+ hostent *Addr;
+ unsigned int Port;
+ int Proto;
+ const char *End;
+ char **CurAddr;
+
+ // Try to convert the service as a number
+ Port = htons(strtol(servname,(char **)&End,0));
+ Proto = SOCK_STREAM;
+
+ if (hints != 0 && hints->ai_socktype != 0)
+ Proto = hints->ai_socktype;
+
+ // Not a number, must be a name.
+ if (End != servname + strlen(servname))
+ {
+ struct servent *Srv = 0;
+
+ // Do a lookup in the service database
+ if (hints == 0 || hints->ai_socktype == SOCK_STREAM)
+ Srv = getservbyname(servname,"tcp");
+ if (hints != 0 && hints->ai_socktype == SOCK_DGRAM)
+ Srv = getservbyname(servname,"udp");
+ if (Srv == 0)
+ return EAI_NONAME;
+
+ // Get the right protocol
+ Port = Srv->s_port;
+ if (strcmp(Srv->s_proto,"tcp") == 0)
+ Proto = SOCK_STREAM;
+ else
+ {
+ if (strcmp(Srv->s_proto,"udp") == 0)
+ Proto = SOCK_DGRAM;
+ else
+ return EAI_NONAME;
+ }
+
+ if (hints != 0 && hints->ai_socktype != Proto &&
+ hints->ai_socktype != 0)
+ return EAI_SERVICE;
+ }
+
+ // Hostname lookup, only if this is not a listening socket
+ if (hints != 0 && (hints->ai_flags & AI_PASSIVE) != AI_PASSIVE)
+ {
+ Addr = gethostbyname(nodename);
+ if (Addr == 0)
+ {
+ if (h_errno == TRY_AGAIN)
+ return EAI_AGAIN;
+ if (h_errno == NO_RECOVERY)
+ return EAI_FAIL;
+ return EAI_NONAME;
+ }
+
+ // No A records
+ if (Addr->h_addr_list[0] == 0)
+ return EAI_NONAME;
+
+ CurAddr = Addr->h_addr_list;
+ }
+ else
+ CurAddr = (char **)&End; // Fake!
+
+ // Start constructing the linked list
+ *res = 0;
+ for (; *CurAddr != 0; CurAddr++)
+ {
+ // New result structure
+ *Result = (struct addrinfo *)calloc(sizeof(**Result),1);
+ if (*Result == 0)
+ {
+ freeaddrinfo(*res);
+ return EAI_MEMORY;
+ }
+ if (*res == 0)
+ *res = *Result;
+
+ (*Result)->ai_family = AF_INET;
+ (*Result)->ai_socktype = Proto;
+
+ // If we have the IPPROTO defines we can set the protocol field
+ #ifdef IPPROTO_TCP
+ if (Proto == SOCK_STREAM)
+ (*Result)->ai_protocol = IPPROTO_TCP;
+ if (Proto == SOCK_DGRAM)
+ (*Result)->ai_protocol = IPPROTO_UDP;
+ #endif
+
+ // Allocate space for the address
+ (*Result)->ai_addrlen = sizeof(struct sockaddr_in);
+ (*Result)->ai_addr = (struct sockaddr *)calloc(sizeof(sockaddr_in),1);
+ if ((*Result)->ai_addr == 0)
+ {
+ freeaddrinfo(*res);
+ return EAI_MEMORY;
+ }
+
+ // Set the address
+ ((struct sockaddr_in *)(*Result)->ai_addr)->sin_family = AF_INET;
+ ((struct sockaddr_in *)(*Result)->ai_addr)->sin_port = Port;
+
+ if (hints != 0 && (hints->ai_flags & AI_PASSIVE) != AI_PASSIVE)
+ ((struct sockaddr_in *)(*Result)->ai_addr)->sin_addr = *(in_addr *)(*CurAddr);
+ else
+ {
+ // Already zerod by calloc.
+ break;
+ }
+
+ Result = &(*Result)->ai_next;
+ }
+
+ return 0;
+}
+ /*}}}*/
+// freeaddrinfo - Free the result of getaddrinfo /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void freeaddrinfo(struct addrinfo *ai)
+{
+ while (ai != 0)
+ {
+ free(ai->ai_addr);
+ ai = ai->ai_next;
+ free(ai);
+ }
+}
+ /*}}}*/
+#endif // HAVE_GETADDRINFO
+
+#ifndef HAVE_GETNAMEINFO
+// getnameinfo - Convert a sockaddr to a string /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+int getnameinfo(const struct sockaddr *sa, socklen_t salen,
+ char *host, size_t hostlen,
+ char *serv, size_t servlen,
+ int flags)
+{
+ struct sockaddr_in *sin = (struct sockaddr_in *)sa;
+
+ // This routine only supports internet addresses
+ if (sa->sa_family != AF_INET)
+ return EAI_ADDRFAMILY;
+
+ if (host != 0)
+ {
+ // Try to resolve the hostname
+ if ((flags & NI_NUMERICHOST) != NI_NUMERICHOST)
+ {
+ struct hostent *Ent = gethostbyaddr((char *)&sin->sin_addr,sizeof(sin->sin_addr),
+ AF_INET);
+ if (Ent != 0)
+ strncpy(host,Ent->h_name,hostlen);
+ else
+ {
+ if ((flags & NI_NAMEREQD) == NI_NAMEREQD)
+ {
+ if (h_errno == TRY_AGAIN)
+ return EAI_AGAIN;
+ if (h_errno == NO_RECOVERY)
+ return EAI_FAIL;
+ return EAI_NONAME;
+ }
+
+ flags |= NI_NUMERICHOST;
+ }
+ }
+
+ // Resolve as a plain numberic
+ if ((flags & NI_NUMERICHOST) == NI_NUMERICHOST)
+ {
+ strncpy(host,inet_ntoa(sin->sin_addr),hostlen);
+ }
+ }
+
+ if (serv != 0)
+ {
+ // Try to resolve the hostname
+ if ((flags & NI_NUMERICSERV) != NI_NUMERICSERV)
+ {
+ struct servent *Ent;
+ if ((flags & NI_DATAGRAM) == NI_DATAGRAM)
+ Ent = getservbyport(ntohs(sin->sin_port),"udp");
+ else
+ Ent = getservbyport(ntohs(sin->sin_port),"tcp");
+
+ if (Ent != 0)
+ strncpy(serv,Ent->s_name,servlen);
+ else
+ {
+ if ((flags & NI_NAMEREQD) == NI_NAMEREQD)
+ return EAI_NONAME;
+
+ flags |= NI_NUMERICSERV;
+ }
+ }
+
+ // Resolve as a plain numberic
+ if ((flags & NI_NUMERICSERV) == NI_NUMERICSERV)
+ {
+ snprintf(serv,servlen,"%u",ntohs(sin->sin_port));
+ }
+ }
+
+ return 0;
+}
+ /*}}}*/
+#endif // HAVE_GETNAMEINFO
diff --git a/methods/rfc2553emu.h b/methods/rfc2553emu.h
new file mode 100644
index 000000000..ad7ddf48a
--- /dev/null
+++ b/methods/rfc2553emu.h
@@ -0,0 +1,113 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: rfc2553emu.h,v 1.4 2000/06/18 06:04:45 jgg Exp $
+/* ######################################################################
+
+ RFC 2553 Emulation - Provides emulation for RFC 2553 getaddrinfo,
+ freeaddrinfo and getnameinfo
+
+ These functions are necessary to write portable protocol independent
+ networking. They transparently support IPv4, IPv6 and probably many
+ other protocols too. This implementation is needed when the host does
+ not support these standards. It implements a simple wrapper that
+ basically supports only IPv4.
+
+ Perfect emulation is not provided, but it is passable..
+
+ Originally written by Jason Gunthorpe <jgg@debian.org> and placed into
+ the Public Domain, do with it what you will.
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef RFC2553EMU_H
+#define RFC2553EMU_H
+
+#include <netdb.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+
+// Autosense getaddrinfo
+#if defined(AI_PASSIVE) && defined(EAI_NONAME)
+#define HAVE_GETADDRINFO
+#endif
+
+// Autosense getnameinfo
+#if defined(NI_NUMERICHOST)
+#define HAVE_GETNAMEINFO
+#endif
+
+// getaddrinfo support?
+#ifndef HAVE_GETADDRINFO
+ // Renamed to advoid type clashing.. (for debugging)
+ struct addrinfo_emu
+ {
+ int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */
+ int ai_family; /* PF_xxx */
+ int ai_socktype; /* SOCK_xxx */
+ int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
+ size_t ai_addrlen; /* length of ai_addr */
+ char *ai_canonname; /* canonical name for nodename */
+ struct sockaddr *ai_addr; /* binary address */
+ struct addrinfo_emu *ai_next; /* next structure in linked list */
+ };
+ #define addrinfo addrinfo_emu
+
+ int getaddrinfo(const char *nodename, const char *servname,
+ const struct addrinfo *hints,
+ struct addrinfo **res);
+ void freeaddrinfo(struct addrinfo *ai);
+
+ #ifndef AI_PASSIVE
+ #define AI_PASSIVE (1<<1)
+ #endif
+
+ #ifndef EAI_NONAME
+ #define EAI_NONAME -1
+ #define EAI_AGAIN -2
+ #define EAI_FAIL -3
+ #define EAI_NODATA -4
+ #define EAI_FAMILY -5
+ #define EAI_SOCKTYPE -6
+ #define EAI_SERVICE -7
+ #define EAI_ADDRFAMILY -8
+ #define EAI_SYSTEM -10
+ #define EAI_MEMORY -11
+ #endif
+
+ /* If we don't have getaddrinfo then we probably don't have
+ sockaddr_storage either (same RFC) so we definitely will not be
+ doing any IPv6 stuff. Do not use the members of this structure to
+ retain portability, cast to a sockaddr. */
+ #define sockaddr_storage sockaddr_in
+#endif
+
+// getnameinfo support (glibc2.0 has getaddrinfo only)
+#ifndef HAVE_GETNAMEINFO
+
+ int getnameinfo(const struct sockaddr *sa, socklen_t salen,
+ char *host, size_t hostlen,
+ char *serv, size_t servlen,
+ int flags);
+
+ #ifndef NI_MAXHOST
+ #define NI_MAXHOST 1025
+ #define NI_MAXSERV 32
+ #endif
+
+ #ifndef NI_NUMERICHOST
+ #define NI_NUMERICHOST (1<<0)
+ #define NI_NUMERICSERV (1<<1)
+// #define NI_NOFQDN (1<<2)
+ #define NI_NAMEREQD (1<<3)
+ #define NI_DATAGRAM (1<<4)
+ #endif
+
+ #define sockaddr_storage sockaddr_in
+#endif
+
+// Glibc 2.0.7 misses this one
+#ifndef AI_NUMERICHOST
+#define AI_NUMERICHOST 0
+#endif
+
+#endif
diff --git a/methods/rred.cc b/methods/rred.cc
new file mode 100644
index 000000000..2e5008d46
--- /dev/null
+++ b/methods/rred.cc
@@ -0,0 +1,785 @@
+// Copyright (c) 2014 Anthony Towns
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+
+#include <config.h>
+
+#include <apt-pkg/init.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/configuration.h>
+#include "aptmethod.h"
+
+#include <stddef.h>
+#include <iostream>
+#include <string>
+#include <list>
+#include <vector>
+
+#include <assert.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+
+#include <apti18n.h>
+
+#define BLOCK_SIZE (512*1024)
+
+class MemBlock {
+ char *start;
+ size_t size;
+ char *free;
+ MemBlock *next;
+
+ explicit MemBlock(size_t size) : size(size), next(NULL)
+ {
+ free = start = new char[size];
+ }
+
+ size_t avail(void) { return size - (free - start); }
+
+ public:
+
+ MemBlock(void) {
+ free = start = new char[BLOCK_SIZE];
+ size = BLOCK_SIZE;
+ next = NULL;
+ }
+
+ ~MemBlock() {
+ delete [] start;
+ delete next;
+ }
+
+ void clear(void) {
+ free = start;
+ if (next)
+ next->clear();
+ }
+
+ char *add_easy(char *src, size_t len, char *last)
+ {
+ if (last) {
+ for (MemBlock *k = this; k; k = k->next) {
+ if (k->free == last) {
+ if (len <= k->avail()) {
+ char *n = k->add(src, len);
+ assert(last == n);
+ if (last == n)
+ return NULL;
+ return n;
+ } else {
+ break;
+ }
+ } else if (last >= start && last < free) {
+ break;
+ }
+ }
+ }
+ return add(src, len);
+ }
+
+ char *add(char *src, size_t len) {
+ if (len > avail()) {
+ if (!next) {
+ if (len > BLOCK_SIZE) {
+ next = new MemBlock(len);
+ } else {
+ next = new MemBlock;
+ }
+ }
+ return next->add(src, len);
+ }
+ char *dst = free;
+ free += len;
+ memcpy(dst, src, len);
+ return dst;
+ }
+};
+
+struct Change {
+ /* Ordering:
+ *
+ * 1. write out <offset> lines unchanged
+ * 2. skip <del_cnt> lines from source
+ * 3. write out <add_cnt> lines (<add>/<add_len>)
+ */
+ size_t offset;
+ size_t del_cnt;
+ size_t add_cnt; /* lines */
+ size_t add_len; /* bytes */
+ char *add;
+
+ explicit Change(size_t off)
+ {
+ offset = off;
+ del_cnt = add_cnt = add_len = 0;
+ add = NULL;
+ }
+
+ /* actually, don't write <lines> lines from <add> */
+ void skip_lines(size_t lines)
+ {
+ while (lines > 0) {
+ char *s = (char*) memchr(add, '\n', add_len);
+ assert(s != NULL);
+ s++;
+ add_len -= (s - add);
+ add_cnt--;
+ lines--;
+ if (add_len == 0) {
+ add = NULL;
+ assert(add_cnt == 0);
+ assert(lines == 0);
+ } else {
+ add = s;
+ assert(add_cnt > 0);
+ }
+ }
+ }
+};
+
+class FileChanges {
+ std::list<struct Change> changes;
+ std::list<struct Change>::iterator where;
+ size_t pos; // line number is as far left of iterator as possible
+
+ bool pos_is_okay(void) const
+ {
+#ifdef POSDEBUG
+ size_t cpos = 0;
+ std::list<struct Change>::const_iterator x;
+ for (x = changes.begin(); x != where; ++x) {
+ assert(x != changes.end());
+ cpos += x->offset + x->add_cnt;
+ }
+ return cpos == pos;
+#else
+ return true;
+#endif
+ }
+
+ public:
+ FileChanges() {
+ where = changes.end();
+ pos = 0;
+ }
+
+ std::list<struct Change>::iterator begin(void) { return changes.begin(); }
+ std::list<struct Change>::iterator end(void) { return changes.end(); }
+
+ std::list<struct Change>::reverse_iterator rbegin(void) { return changes.rbegin(); }
+ std::list<struct Change>::reverse_iterator rend(void) { return changes.rend(); }
+
+ void add_change(Change c) {
+ assert(pos_is_okay());
+ go_to_change_for(c.offset);
+ assert(pos + where->offset == c.offset);
+ if (c.del_cnt > 0)
+ delete_lines(c.del_cnt);
+ assert(pos + where->offset == c.offset);
+ if (c.add_len > 0) {
+ assert(pos_is_okay());
+ if (where->add_len > 0)
+ new_change();
+ assert(where->add_len == 0 && where->add_cnt == 0);
+
+ where->add_len = c.add_len;
+ where->add_cnt = c.add_cnt;
+ where->add = c.add;
+ }
+ assert(pos_is_okay());
+ merge();
+ assert(pos_is_okay());
+ }
+
+ private:
+ void merge(void)
+ {
+ while (where->offset == 0 && where != changes.begin()) {
+ left();
+ }
+ std::list<struct Change>::iterator next = where;
+ ++next;
+
+ while (next != changes.end() && next->offset == 0) {
+ where->del_cnt += next->del_cnt;
+ next->del_cnt = 0;
+ if (next->add == NULL) {
+ next = changes.erase(next);
+ } else if (where->add == NULL) {
+ where->add = next->add;
+ where->add_len = next->add_len;
+ where->add_cnt = next->add_cnt;
+ next = changes.erase(next);
+ } else {
+ ++next;
+ }
+ }
+ }
+
+ void go_to_change_for(size_t line)
+ {
+ while(where != changes.end()) {
+ if (line < pos) {
+ left();
+ continue;
+ }
+ if (pos + where->offset + where->add_cnt <= line) {
+ right();
+ continue;
+ }
+ // line is somewhere in this slot
+ if (line < pos + where->offset) {
+ break;
+ } else if (line == pos + where->offset) {
+ return;
+ } else {
+ split(line - pos);
+ right();
+ return;
+ }
+ }
+ /* it goes before this patch */
+ insert(line-pos);
+ }
+
+ void new_change(void) { insert(where->offset); }
+
+ void insert(size_t offset)
+ {
+ assert(pos_is_okay());
+ assert(where == changes.end() || offset <= where->offset);
+ if (where != changes.end())
+ where->offset -= offset;
+ changes.insert(where, Change(offset));
+ --where;
+ assert(pos_is_okay());
+ }
+
+ void split(size_t offset)
+ {
+ assert(pos_is_okay());
+
+ assert(where->offset < offset);
+ assert(offset < where->offset + where->add_cnt);
+
+ size_t keep_lines = offset - where->offset;
+
+ Change before(*where);
+
+ where->del_cnt = 0;
+ where->offset = 0;
+ where->skip_lines(keep_lines);
+
+ before.add_cnt = keep_lines;
+ before.add_len -= where->add_len;
+
+ changes.insert(where, before);
+ --where;
+ assert(pos_is_okay());
+ }
+
+ void delete_lines(size_t cnt)
+ {
+ std::list<struct Change>::iterator x = where;
+ assert(pos_is_okay());
+ while (cnt > 0)
+ {
+ size_t del;
+ del = x->add_cnt;
+ if (del > cnt)
+ del = cnt;
+ x->skip_lines(del);
+ cnt -= del;
+
+ ++x;
+ if (x == changes.end()) {
+ del = cnt;
+ } else {
+ del = x->offset;
+ if (del > cnt)
+ del = cnt;
+ x->offset -= del;
+ }
+ where->del_cnt += del;
+ cnt -= del;
+ }
+ assert(pos_is_okay());
+ }
+
+ void left(void) {
+ assert(pos_is_okay());
+ --where;
+ pos -= where->offset + where->add_cnt;
+ assert(pos_is_okay());
+ }
+
+ void right(void) {
+ assert(pos_is_okay());
+ pos += where->offset + where->add_cnt;
+ ++where;
+ assert(pos_is_okay());
+ }
+};
+
+class Patch {
+ FileChanges filechanges;
+ MemBlock add_text;
+
+ static bool retry_fwrite(char *b, size_t l, FileFd &f, Hashes * const start_hash, Hashes * const end_hash = nullptr) APT_NONNULL(1)
+ {
+ if (f.Write(b, l) == false)
+ return false;
+ if (start_hash)
+ start_hash->Add((unsigned char*)b, l);
+ if (end_hash)
+ end_hash->Add((unsigned char*)b, l);
+ return true;
+ }
+
+ static void dump_rest(FileFd &o, FileFd &i,
+ Hashes * const start_hash, Hashes * const end_hash)
+ {
+ char buffer[BLOCK_SIZE];
+ unsigned long long l = 0;
+ while (i.Read(buffer, sizeof(buffer), &l)) {
+ if (l ==0 || !retry_fwrite(buffer, l, o, start_hash, end_hash))
+ break;
+ }
+ }
+
+ static void dump_lines(FileFd &o, FileFd &i, size_t n,
+ Hashes * const start_hash, Hashes * const end_hash)
+ {
+ char buffer[BLOCK_SIZE];
+ while (n > 0) {
+ if (i.ReadLine(buffer, sizeof(buffer)) == NULL)
+ buffer[0] = '\0';
+ size_t const l = strlen(buffer);
+ if (l == 0 || buffer[l-1] == '\n')
+ n--;
+ retry_fwrite(buffer, l, o, start_hash, end_hash);
+ }
+ }
+
+ static void skip_lines(FileFd &i, int n, Hashes * const start_hash)
+ {
+ char buffer[BLOCK_SIZE];
+ while (n > 0) {
+ if (i.ReadLine(buffer, sizeof(buffer)) == NULL)
+ buffer[0] = '\0';
+ size_t const l = strlen(buffer);
+ if (l == 0 || buffer[l-1] == '\n')
+ n--;
+ if (start_hash)
+ start_hash->Add((unsigned char*)buffer, l);
+ }
+ }
+
+ static void dump_mem(FileFd &o, char *p, size_t s, Hashes *hash) APT_NONNULL(2) {
+ retry_fwrite(p, s, o, nullptr, hash);
+ }
+
+ public:
+
+ bool read_diff(FileFd &f, Hashes * const h)
+ {
+ char buffer[BLOCK_SIZE];
+ bool cmdwanted = true;
+
+ Change ch(std::numeric_limits<size_t>::max());
+ if (f.ReadLine(buffer, sizeof(buffer)) == NULL)
+ return _error->Error("Reading first line of patchfile %s failed", f.Name().c_str());
+ do {
+ if (h != NULL)
+ h->Add(buffer);
+ if (cmdwanted) {
+ char *m, *c;
+ size_t s, e;
+ errno = 0;
+ s = strtoul(buffer, &m, 10);
+ if (unlikely(m == buffer || s == std::numeric_limits<unsigned long>::max() || errno != 0))
+ return _error->Error("Parsing patchfile %s failed: Expected an effected line start", f.Name().c_str());
+ else if (*m == ',') {
+ ++m;
+ e = strtol(m, &c, 10);
+ if (unlikely(m == c || e == std::numeric_limits<unsigned long>::max() || errno != 0))
+ return _error->Error("Parsing patchfile %s failed: Expected an effected line end", f.Name().c_str());
+ if (unlikely(e < s))
+ return _error->Error("Parsing patchfile %s failed: Effected lines end %lu is before start %lu", f.Name().c_str(), e, s);
+ } else {
+ e = s;
+ c = m;
+ }
+ if (s > ch.offset)
+ return _error->Error("Parsing patchfile %s failed: Effected line is after previous effected line", f.Name().c_str());
+ switch(*c) {
+ case 'a':
+ cmdwanted = false;
+ ch.add = NULL;
+ ch.add_cnt = 0;
+ ch.add_len = 0;
+ ch.offset = s;
+ ch.del_cnt = 0;
+ break;
+ case 'c':
+ if (unlikely(s == 0))
+ return _error->Error("Parsing patchfile %s failed: Change command can't effect line zero", f.Name().c_str());
+ cmdwanted = false;
+ ch.add = NULL;
+ ch.add_cnt = 0;
+ ch.add_len = 0;
+ ch.offset = s - 1;
+ ch.del_cnt = e - s + 1;
+ break;
+ case 'd':
+ if (unlikely(s == 0))
+ return _error->Error("Parsing patchfile %s failed: Delete command can't effect line zero", f.Name().c_str());
+ ch.offset = s - 1;
+ ch.del_cnt = e - s + 1;
+ ch.add = NULL;
+ ch.add_cnt = 0;
+ ch.add_len = 0;
+ filechanges.add_change(ch);
+ break;
+ default:
+ return _error->Error("Parsing patchfile %s failed: Unknown command", f.Name().c_str());
+ }
+ } else { /* !cmdwanted */
+ if (strcmp(buffer, ".\n") == 0) {
+ cmdwanted = true;
+ filechanges.add_change(ch);
+ } else {
+ char *last = NULL;
+ char *add;
+ size_t l;
+ if (ch.add)
+ last = ch.add + ch.add_len;
+ l = strlen(buffer);
+ add = add_text.add_easy(buffer, l, last);
+ if (!add) {
+ ch.add_len += l;
+ ch.add_cnt++;
+ } else {
+ if (ch.add) {
+ filechanges.add_change(ch);
+ ch.del_cnt = 0;
+ }
+ ch.offset += ch.add_cnt;
+ ch.add = add;
+ ch.add_len = l;
+ ch.add_cnt = 1;
+ }
+ }
+ }
+ } while(f.ReadLine(buffer, sizeof(buffer)));
+ return true;
+ }
+
+ void write_diff(FileFd &f)
+ {
+ unsigned long long line = 0;
+ std::list<struct Change>::reverse_iterator ch;
+ for (ch = filechanges.rbegin(); ch != filechanges.rend(); ++ch) {
+ line += ch->offset + ch->del_cnt;
+ }
+
+ for (ch = filechanges.rbegin(); ch != filechanges.rend(); ++ch) {
+ std::list<struct Change>::reverse_iterator mg_i, mg_e = ch;
+ while (ch->del_cnt == 0 && ch->offset == 0)
+ {
+ ++ch;
+ if (unlikely(ch == filechanges.rend()))
+ return;
+ }
+ line -= ch->del_cnt;
+ std::string buf;
+ if (ch->add_cnt > 0) {
+ if (ch->del_cnt == 0) {
+ strprintf(buf, "%llua\n", line);
+ } else if (ch->del_cnt == 1) {
+ strprintf(buf, "%lluc\n", line+1);
+ } else {
+ strprintf(buf, "%llu,%lluc\n", line+1, line+ch->del_cnt);
+ }
+ f.Write(buf.c_str(), buf.length());
+
+ mg_i = ch;
+ do {
+ dump_mem(f, mg_i->add, mg_i->add_len, NULL);
+ } while (mg_i-- != mg_e);
+
+ buf = ".\n";
+ f.Write(buf.c_str(), buf.length());
+ } else if (ch->del_cnt == 1) {
+ strprintf(buf, "%llud\n", line+1);
+ f.Write(buf.c_str(), buf.length());
+ } else if (ch->del_cnt > 1) {
+ strprintf(buf, "%llu,%llud\n", line+1, line+ch->del_cnt);
+ f.Write(buf.c_str(), buf.length());
+ }
+ line -= ch->offset;
+ }
+ }
+
+ void apply_against_file(FileFd &out, FileFd &in,
+ Hashes * const start_hash = nullptr, Hashes * const end_hash = nullptr)
+ {
+ std::list<struct Change>::iterator ch;
+ for (ch = filechanges.begin(); ch != filechanges.end(); ++ch) {
+ dump_lines(out, in, ch->offset, start_hash, end_hash);
+ skip_lines(in, ch->del_cnt, start_hash);
+ if (ch->add_len != 0)
+ dump_mem(out, ch->add, ch->add_len, end_hash);
+ }
+ dump_rest(out, in, start_hash, end_hash);
+ out.Flush();
+ }
+};
+
+class RredMethod : public aptMethod {
+ private:
+ bool Debug;
+
+ struct PDiffFile {
+ std::string FileName;
+ HashStringList ExpectedHashes;
+ PDiffFile(std::string const &FileName, HashStringList const &ExpectedHashes) :
+ FileName(FileName), ExpectedHashes(ExpectedHashes) {}
+ };
+
+ HashStringList ReadExpectedHashesForPatch(unsigned int const patch, std::string const &Message)
+ {
+ HashStringList ExpectedHashes;
+ for (char const * const * type = HashString::SupportedHashes(); *type != NULL; ++type)
+ {
+ std::string tagname;
+ strprintf(tagname, "Patch-%d-%s-Hash", patch, *type);
+ std::string const hashsum = LookupTag(Message, tagname.c_str());
+ if (hashsum.empty() == false)
+ ExpectedHashes.push_back(HashString(*type, hashsum));
+ }
+ return ExpectedHashes;
+ }
+
+ protected:
+ virtual bool URIAcquire(std::string const &Message, FetchItem *Itm) APT_OVERRIDE {
+ Debug = DebugEnabled();
+ URI Get = Itm->Uri;
+ std::string Path = Get.Host + Get.Path; // rred:/path - no host
+
+ FetchResult Res;
+ Res.Filename = Itm->DestFile;
+ if (Itm->Uri.empty())
+ {
+ Path = Itm->DestFile;
+ Itm->DestFile.append(".result");
+ } else
+ URIStart(Res);
+
+ std::vector<PDiffFile> patchfiles;
+ Patch patch;
+
+ HashStringList StartHashes;
+ for (char const * const * type = HashString::SupportedHashes(); *type != nullptr; ++type)
+ {
+ std::string tagname;
+ strprintf(tagname, "Start-%s-Hash", *type);
+ std::string const hashsum = LookupTag(Message, tagname.c_str());
+ if (hashsum.empty() == false)
+ StartHashes.push_back(HashString(*type, hashsum));
+ }
+
+ if (FileExists(Path + ".ed") == true)
+ {
+ HashStringList const ExpectedHashes = ReadExpectedHashesForPatch(0, Message);
+ std::string const FileName = Path + ".ed";
+ if (ExpectedHashes.usable() == false)
+ return _error->Error("No hashes found for uncompressed patch: %s", FileName.c_str());
+ patchfiles.push_back(PDiffFile(FileName, ExpectedHashes));
+ }
+ else
+ {
+ _error->PushToStack();
+ std::vector<std::string> patches = GetListOfFilesInDir(flNotFile(Path), "gz", true, false);
+ _error->RevertToStack();
+
+ std::string const baseName = Path + ".ed.";
+ unsigned int seen_patches = 0;
+ for (std::vector<std::string>::const_iterator p = patches.begin();
+ p != patches.end(); ++p)
+ {
+ if (p->compare(0, baseName.length(), baseName) == 0)
+ {
+ HashStringList const ExpectedHashes = ReadExpectedHashesForPatch(seen_patches, Message);
+ if (ExpectedHashes.usable() == false)
+ return _error->Error("No hashes found for uncompressed patch %d: %s", seen_patches, p->c_str());
+ patchfiles.push_back(PDiffFile(*p, ExpectedHashes));
+ ++seen_patches;
+ }
+ }
+ }
+
+ std::string patch_name;
+ for (std::vector<PDiffFile>::iterator I = patchfiles.begin();
+ I != patchfiles.end();
+ ++I)
+ {
+ patch_name = I->FileName;
+ if (Debug == true)
+ std::clog << "Patching " << Path << " with " << patch_name
+ << std::endl;
+
+ FileFd p;
+ Hashes patch_hash(I->ExpectedHashes);
+ // all patches are compressed, even if the name doesn't reflect it
+ if (p.Open(patch_name, FileFd::ReadOnly, FileFd::Gzip) == false ||
+ patch.read_diff(p, &patch_hash) == false)
+ {
+ _error->DumpErrors(std::cerr, GlobalError::DEBUG, false);
+ return false;
+ }
+ p.Close();
+ HashStringList const hsl = patch_hash.GetHashStringList();
+ if (hsl != I->ExpectedHashes)
+ return _error->Error("Hash Sum mismatch for uncompressed patch %s", patch_name.c_str());
+ }
+
+ if (Debug == true)
+ std::clog << "Applying patches against " << Path
+ << " and writing results to " << Itm->DestFile
+ << std::endl;
+
+ FileFd inp, out;
+ if (inp.Open(Path, FileFd::ReadOnly, FileFd::Extension) == false)
+ {
+ if (Debug == true)
+ std::clog << "FAILED to open inp " << Path << std::endl;
+ return _error->Error("Failed to open inp %s", Path.c_str());
+ }
+ if (out.Open(Itm->DestFile, FileFd::WriteOnly | FileFd::Create | FileFd::Empty | FileFd::BufferedWrite, FileFd::Extension) == false)
+ {
+ if (Debug == true)
+ std::clog << "FAILED to open out " << Itm->DestFile << std::endl;
+ return _error->Error("Failed to open out %s", Itm->DestFile.c_str());
+ }
+
+ Hashes end_hash(Itm->ExpectedHashes);
+ if (StartHashes.usable())
+ {
+ Hashes start_hash(StartHashes);
+ patch.apply_against_file(out, inp, &start_hash, &end_hash);
+ if (start_hash.GetHashStringList() != StartHashes)
+ _error->Error("The input file hadn't the expected hash!");
+ }
+ else
+ patch.apply_against_file(out, inp, nullptr, &end_hash);
+
+ out.Close();
+ inp.Close();
+
+ if (_error->PendingError() == true) {
+ if (Debug == true)
+ std::clog << "FAILED to read or write files" << std::endl;
+ return false;
+ }
+
+ if (Debug == true) {
+ std::clog << "rred: finished file patching of " << Path << "." << std::endl;
+ }
+
+ struct stat bufbase, bufpatch;
+ if (stat(Path.c_str(), &bufbase) != 0 ||
+ stat(patch_name.c_str(), &bufpatch) != 0)
+ return _error->Errno("stat", _("Failed to stat %s"), Path.c_str());
+
+ struct timeval times[2];
+ times[0].tv_sec = bufbase.st_atime;
+ times[1].tv_sec = bufpatch.st_mtime;
+ times[0].tv_usec = times[1].tv_usec = 0;
+ if (utimes(Itm->DestFile.c_str(), times) != 0)
+ return _error->Errno("utimes",_("Failed to set modification time"));
+
+ if (stat(Itm->DestFile.c_str(), &bufbase) != 0)
+ return _error->Errno("stat", _("Failed to stat %s"), Itm->DestFile.c_str());
+
+ Res.LastModified = bufbase.st_mtime;
+ Res.Size = bufbase.st_size;
+ Res.TakeHashes(end_hash);
+ URIDone(Res);
+
+ return true;
+ }
+
+ public:
+ RredMethod() : aptMethod("rred", "2.0", SendConfig), Debug(false) {}
+};
+
+int main(int argc, char **argv)
+{
+ int i;
+ bool just_diff = true;
+ bool test = false;
+ Patch patch;
+
+ if (argc <= 1) {
+ return RredMethod().Run();
+ }
+
+ // Usage: rred -t input output diff ...
+ if (argc > 1 && strcmp(argv[1], "-t") == 0) {
+ // Read config files so we see compressors.
+ pkgInitConfig(*_config);
+ just_diff = false;
+ test = true;
+ i = 4;
+ } else if (argc > 1 && strcmp(argv[1], "-f") == 0) {
+ just_diff = false;
+ i = 2;
+ } else {
+ i = 1;
+ }
+
+ for (; i < argc; i++) {
+ FileFd p;
+ if (p.Open(argv[i], FileFd::ReadOnly) == false) {
+ _error->DumpErrors(std::cerr);
+ exit(1);
+ }
+ if (patch.read_diff(p, NULL) == false)
+ {
+ _error->DumpErrors(std::cerr);
+ exit(2);
+ }
+ }
+
+ if (test) {
+ FileFd out, inp;
+ std::cerr << "Patching " << argv[2] << " into " << argv[3] << "\n";
+ inp.Open(argv[2], FileFd::ReadOnly,FileFd::Extension);
+ out.Open(argv[3], FileFd::WriteOnly | FileFd::Create | FileFd::Empty | FileFd::BufferedWrite, FileFd::Extension);
+ patch.apply_against_file(out, inp);
+ out.Close();
+ } else if (just_diff) {
+ FileFd out;
+ out.OpenDescriptor(STDOUT_FILENO, FileFd::WriteOnly | FileFd::Create);
+ patch.write_diff(out);
+ out.Close();
+ } else {
+ FileFd out, inp;
+ out.OpenDescriptor(STDOUT_FILENO, FileFd::WriteOnly | FileFd::Create | FileFd::BufferedWrite);
+ inp.OpenDescriptor(STDIN_FILENO, FileFd::ReadOnly);
+ patch.apply_against_file(out, inp);
+ out.Close();
+ }
+ return 0;
+}
diff --git a/methods/rsh.cc b/methods/rsh.cc
new file mode 100644
index 000000000..7b8af6f9b
--- /dev/null
+++ b/methods/rsh.cc
@@ -0,0 +1,548 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: rsh.cc,v 1.6.2.1 2004/01/16 18:58:50 mdz Exp $
+/* ######################################################################
+
+ RSH method - Transfer files via rsh compatible program
+
+ Written by Ben Collins <bcollins@debian.org>, Copyright (c) 2000
+ Licensed under the GNU General Public License v2 [no exception clauses]
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/strutl.h>
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <unistd.h>
+#include <signal.h>
+#include <stdio.h>
+#include <errno.h>
+#include <stdarg.h>
+#include "rsh.h"
+
+#include <apti18n.h>
+ /*}}}*/
+
+unsigned long TimeOut = 120;
+Configuration::Item const *RshOptions = 0;
+time_t RSHMethod::FailTime = 0;
+std::string RSHMethod::FailFile;
+int RSHMethod::FailFd = -1;
+
+// RSHConn::RSHConn - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+RSHConn::RSHConn(std::string const &pProg, URI Srv) : Len(0), WriteFd(-1), ReadFd(-1),
+ ServerName(Srv), Prog(pProg), Process(-1) {
+ Buffer[0] = '\0';
+}
+ /*}}}*/
+// RSHConn::RSHConn - Destructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+RSHConn::~RSHConn()
+{
+ Close();
+}
+ /*}}}*/
+// RSHConn::Close - Forcibly terminate the connection /*{{{*/
+// ---------------------------------------------------------------------
+/* Often this is called when things have gone wrong to indicate that the
+ connection is no longer usable. */
+void RSHConn::Close()
+{
+ if (Process == -1)
+ return;
+
+ close(WriteFd);
+ close(ReadFd);
+ kill(Process,SIGINT);
+ ExecWait(Process,"",true);
+ WriteFd = -1;
+ ReadFd = -1;
+ Process = -1;
+}
+ /*}}}*/
+// RSHConn::Open - Connect to a host /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool RSHConn::Open()
+{
+ // Use the already open connection if possible.
+ if (Process != -1)
+ return true;
+
+ if (Connect(ServerName.Host,ServerName.Port,ServerName.User) == false)
+ return false;
+
+ return true;
+}
+ /*}}}*/
+// RSHConn::Connect - Fire up rsh and connect /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool RSHConn::Connect(std::string Host, unsigned int Port, std::string User)
+{
+ char *PortStr = NULL;
+ if (Port != 0)
+ {
+ if (asprintf (&PortStr, "%d", Port) == -1 || PortStr == NULL)
+ return _error->Errno("asprintf", _("Failed"));
+ }
+
+ // Create the pipes
+ int Pipes[4] = {-1,-1,-1,-1};
+ if (pipe(Pipes) != 0 || pipe(Pipes+2) != 0)
+ {
+ _error->Errno("pipe",_("Failed to create IPC pipe to subprocess"));
+ for (int I = 0; I != 4; I++)
+ close(Pipes[I]);
+ return false;
+ }
+ for (int I = 0; I != 4; I++)
+ SetCloseExec(Pipes[I],true);
+
+ Process = ExecFork();
+
+ // The child
+ if (Process == 0)
+ {
+ const char *Args[400];
+ unsigned int i = 0;
+
+ dup2(Pipes[1],STDOUT_FILENO);
+ dup2(Pipes[2],STDIN_FILENO);
+
+ // Probably should do
+ // dup2(open("/dev/null",O_RDONLY),STDERR_FILENO);
+
+ Args[i++] = Prog.c_str();
+
+ // Insert user-supplied command line options
+ Configuration::Item const *Opts = RshOptions;
+ if (Opts != 0)
+ {
+ Opts = Opts->Child;
+ for (; Opts != 0; Opts = Opts->Next)
+ {
+ if (Opts->Value.empty() == true)
+ continue;
+ Args[i++] = Opts->Value.c_str();
+ }
+ }
+
+ if (User.empty() == false) {
+ Args[i++] = "-l";
+ Args[i++] = User.c_str();
+ }
+ if (PortStr != NULL) {
+ Args[i++] = "-p";
+ Args[i++] = PortStr;
+ }
+ if (Host.empty() == false) {
+ Args[i++] = Host.c_str();
+ }
+ Args[i++] = "/bin/sh";
+ Args[i] = 0;
+ execvp(Args[0],(char **)Args);
+ exit(100);
+ }
+
+ if (PortStr != NULL)
+ free(PortStr);
+
+ ReadFd = Pipes[0];
+ WriteFd = Pipes[3];
+ SetNonBlock(Pipes[0],true);
+ SetNonBlock(Pipes[3],true);
+ close(Pipes[1]);
+ close(Pipes[2]);
+
+ return true;
+}
+bool RSHConn::Connect(std::string Host, std::string User)
+{
+ return Connect(Host, 0, User);
+}
+ /*}}}*/
+// RSHConn::ReadLine - Very simple buffered read with timeout /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool RSHConn::ReadLine(std::string &Text)
+{
+ if (Process == -1 || ReadFd == -1)
+ return false;
+
+ // Suck in a line
+ while (Len < sizeof(Buffer))
+ {
+ // Scan the buffer for a new line
+ for (unsigned int I = 0; I != Len; I++)
+ {
+ // Escape some special chars
+ if (Buffer[I] == 0)
+ Buffer[I] = '?';
+
+ // End of line?
+ if (Buffer[I] != '\n')
+ continue;
+
+ I++;
+ Text = std::string(Buffer,I);
+ memmove(Buffer,Buffer+I,Len - I);
+ Len -= I;
+ return true;
+ }
+
+ // Wait for some data..
+ if (WaitFd(ReadFd,false,TimeOut) == false)
+ {
+ Close();
+ return _error->Error(_("Connection timeout"));
+ }
+
+ // Suck it back
+ int Res = read(ReadFd,Buffer + Len,sizeof(Buffer) - Len);
+ if (Res <= 0)
+ {
+ _error->Errno("read",_("Read error"));
+ Close();
+ return false;
+ }
+ Len += Res;
+ }
+
+ return _error->Error(_("A response overflowed the buffer."));
+}
+ /*}}}*/
+// RSHConn::WriteMsg - Send a message with optional remote sync. /*{{{*/
+// ---------------------------------------------------------------------
+/* The remote sync flag appends a || echo which will insert blank line
+ once the command completes. */
+bool RSHConn::WriteMsg(std::string &Text,bool Sync,const char *Fmt,...)
+{
+ va_list args;
+ va_start(args,Fmt);
+
+ // sprintf into a buffer
+ char Tmp[1024];
+ vsnprintf(Tmp,sizeof(Tmp),Fmt,args);
+ va_end(args);
+
+ // concat to create the real msg
+ std::string Msg;
+ if (Sync == true)
+ Msg = std::string(Tmp) + " 2> /dev/null || echo\n";
+ else
+ Msg = std::string(Tmp) + " 2> /dev/null\n";
+
+ // Send it off
+ const char *S = Msg.c_str();
+ unsigned long Len = strlen(S);
+ unsigned long Start = 0;
+ while (Len != 0)
+ {
+ if (WaitFd(WriteFd,true,TimeOut) == false)
+ {
+
+ Close();
+ return _error->Error(_("Connection timeout"));
+ }
+
+ int Res = write(WriteFd,S + Start,Len);
+ if (Res <= 0)
+ {
+ _error->Errno("write",_("Write error"));
+ Close();
+ return false;
+ }
+
+ Len -= Res;
+ Start += Res;
+ }
+
+ if (Sync == true)
+ return ReadLine(Text);
+ return true;
+}
+ /*}}}*/
+// RSHConn::Size - Return the size of the file /*{{{*/
+// ---------------------------------------------------------------------
+/* Right now for successful transfer the file size must be known in
+ advance. */
+bool RSHConn::Size(const char *Path,unsigned long long &Size)
+{
+ // Query the size
+ std::string Msg;
+ Size = 0;
+
+ if (WriteMsg(Msg,true,"find %s -follow -printf '%%s\\n'",Path) == false)
+ return false;
+
+ // FIXME: Sense if the bad reply is due to a File Not Found.
+
+ char *End;
+ Size = strtoull(Msg.c_str(),&End,10);
+ if (End == Msg.c_str())
+ return _error->Error(_("File not found"));
+ return true;
+}
+ /*}}}*/
+// RSHConn::ModTime - Get the modification time in UTC /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool RSHConn::ModTime(const char *Path, time_t &Time)
+{
+ Time = time(&Time);
+ // Query the mod time
+ std::string Msg;
+
+ if (WriteMsg(Msg,true,"TZ=UTC find %s -follow -printf '%%TY%%Tm%%Td%%TH%%TM%%TS\\n'",Path) == false)
+ return false;
+
+ // Parse it
+ return FTPMDTMStrToTime(Msg.c_str(), Time);
+}
+ /*}}}*/
+// RSHConn::Get - Get a file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool RSHConn::Get(const char *Path,FileFd &To,unsigned long long Resume,
+ Hashes &Hash,bool &Missing, unsigned long long Size)
+{
+ Missing = false;
+
+ // Round to a 2048 byte block
+ Resume = Resume - (Resume % 2048);
+
+ if (To.Truncate(Resume) == false)
+ return false;
+ if (To.Seek(0) == false)
+ return false;
+
+ if (Resume != 0) {
+ if (Hash.AddFD(To,Resume) == false) {
+ _error->Errno("read",_("Problem hashing file"));
+ return false;
+ }
+ }
+
+ // FIXME: Detect file-not openable type errors.
+ std::string Jnk;
+ if (WriteMsg(Jnk,false,"dd if=%s bs=2048 skip=%u", Path, Resume / 2048) == false)
+ return false;
+
+ // Copy loop
+ unsigned long long MyLen = Resume;
+ unsigned char Buffer[4096];
+ while (MyLen < Size)
+ {
+ // Wait for some data..
+ if (WaitFd(ReadFd,false,TimeOut) == false)
+ {
+ Close();
+ return _error->Error(_("Data socket timed out"));
+ }
+
+ // Read the data..
+ int Res = read(ReadFd,Buffer,sizeof(Buffer));
+ if (Res == 0)
+ {
+ Close();
+ return _error->Error(_("Connection closed prematurely"));
+ }
+
+ if (Res < 0)
+ {
+ if (errno == EAGAIN)
+ continue;
+ break;
+ }
+ MyLen += Res;
+
+ Hash.Add(Buffer,Res);
+ if (To.Write(Buffer,Res) == false)
+ {
+ Close();
+ return false;
+ }
+ }
+
+ return true;
+}
+ /*}}}*/
+
+// RSHMethod::RSHMethod - Constructor /*{{{*/
+RSHMethod::RSHMethod(std::string &&pProg) : aptMethod(std::move(pProg),"1.0",SendConfig)
+{
+ signal(SIGTERM,SigTerm);
+ signal(SIGINT,SigTerm);
+ Server = 0;
+ FailFd = -1;
+}
+ /*}}}*/
+// RSHMethod::Configuration - Handle a configuration message /*{{{*/
+// ---------------------------------------------------------------------
+bool RSHMethod::Configuration(std::string Message)
+{
+ // enabling privilege dropping for this method requires configuration…
+ // … which is otherwise lifted straight from root, so use it by default.
+ _config->Set(std::string("Binary::") + Binary + "::APT::Sandbox::User", "");
+
+ if (aptMethod::Configuration(Message) == false)
+ return false;
+
+ std::string const timeconf = std::string("Acquire::") + Binary + "::Timeout";
+ TimeOut = _config->FindI(timeconf, TimeOut);
+ std::string const optsconf = std::string("Acquire::") + Binary + "::Options";
+ RshOptions = _config->Tree(optsconf.c_str());
+
+ return true;
+}
+ /*}}}*/
+// RSHMethod::SigTerm - Clean up and timestamp the files on exit /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void RSHMethod::SigTerm(int)
+{
+ if (FailFd == -1)
+ _exit(100);
+
+ // Transfer the modification times
+ struct timeval times[2];
+ times[0].tv_sec = FailTime;
+ times[1].tv_sec = FailTime;
+ times[0].tv_usec = times[1].tv_usec = 0;
+ utimes(FailFile.c_str(), times);
+ close(FailFd);
+
+ _exit(100);
+}
+ /*}}}*/
+// RSHMethod::Fetch - Fetch a URI /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool RSHMethod::Fetch(FetchItem *Itm)
+{
+ URI Get = Itm->Uri;
+ const char *File = Get.Path.c_str();
+ FetchResult Res;
+ Res.Filename = Itm->DestFile;
+ Res.IMSHit = false;
+
+ // Connect to the server
+ if (Server == 0 || Server->Comp(Get) == false) {
+ delete Server;
+ Server = new RSHConn(Binary, Get);
+ }
+
+ // Could not connect is a transient error..
+ if (Server->Open() == false) {
+ Server->Close();
+ Fail(true);
+ return true;
+ }
+
+ // We say this mainly because the pause here is for the
+ // ssh connection that is still going
+ Status(_("Connecting to %s"), Get.Host.c_str());
+
+ // Get the files information
+ unsigned long long Size;
+ if (Server->Size(File,Size) == false ||
+ Server->ModTime(File,FailTime) == false)
+ {
+ //Fail(true);
+ //_error->Error(_("File not found")); // Will be handled by Size
+ return false;
+ }
+ Res.Size = Size;
+
+ // See if it is an IMS hit
+ if (Itm->LastModified == FailTime) {
+ Res.Size = 0;
+ Res.IMSHit = true;
+ URIDone(Res);
+ return true;
+ }
+
+ // See if the file exists
+ struct stat Buf;
+ if (stat(Itm->DestFile.c_str(),&Buf) == 0) {
+ if (Size == (unsigned long long)Buf.st_size && FailTime == Buf.st_mtime) {
+ Res.Size = Buf.st_size;
+ Res.LastModified = Buf.st_mtime;
+ Res.ResumePoint = Buf.st_size;
+ URIDone(Res);
+ return true;
+ }
+
+ // Resume?
+ if (FailTime == Buf.st_mtime && Size > (unsigned long long)Buf.st_size)
+ Res.ResumePoint = Buf.st_size;
+ }
+
+ // Open the file
+ Hashes Hash(Itm->ExpectedHashes);
+ {
+ FileFd Fd(Itm->DestFile,FileFd::WriteAny);
+ if (_error->PendingError() == true)
+ return false;
+
+ URIStart(Res);
+
+ FailFile = Itm->DestFile;
+ FailFile.c_str(); // Make sure we don't do a malloc in the signal handler
+ FailFd = Fd.Fd();
+
+ bool Missing;
+ if (Server->Get(File,Fd,Res.ResumePoint,Hash,Missing,Res.Size) == false)
+ {
+ Fd.Close();
+
+ // Timestamp
+ struct timeval times[2];
+ times[0].tv_sec = FailTime;
+ times[1].tv_sec = FailTime;
+ times[0].tv_usec = times[1].tv_usec = 0;
+ utimes(FailFile.c_str(), times);
+
+ // If the file is missing we hard fail otherwise transient fail
+ if (Missing == true)
+ return false;
+ Fail(true);
+ return true;
+ }
+
+ Res.Size = Fd.Size();
+ struct timeval times[2];
+ times[0].tv_sec = FailTime;
+ times[1].tv_sec = FailTime;
+ times[0].tv_usec = times[1].tv_usec = 0;
+ utimes(Fd.Name().c_str(), times);
+ FailFd = -1;
+ }
+
+ Res.LastModified = FailTime;
+ Res.TakeHashes(Hash);
+
+ URIDone(Res);
+
+ return true;
+}
+ /*}}}*/
+
+int main(int, const char *argv[])
+{
+ return RSHMethod(flNotDir(argv[0])).Run();
+}
diff --git a/methods/rsh.h b/methods/rsh.h
new file mode 100644
index 000000000..dee4ad647
--- /dev/null
+++ b/methods/rsh.h
@@ -0,0 +1,76 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/// $Id: rsh.h,v 1.4 2002/11/09 23:33:26 doogie Exp $
+// $Id: rsh.h,v 1.4 2002/11/09 23:33:26 doogie Exp $
+/* ######################################################################
+
+ RSH method - Transfer files via rsh compatible program
+
+ ##################################################################### */
+ /*}}}*/
+#ifndef APT_RSH_H
+#define APT_RSH_H
+
+#include <string>
+#include <time.h>
+
+#include <apt-pkg/strutl.h>
+
+class Hashes;
+class FileFd;
+
+class RSHConn
+{
+ char Buffer[1024*10];
+ unsigned long Len;
+ int WriteFd;
+ int ReadFd;
+ URI ServerName;
+ std::string const Prog;
+
+ // Private helper functions
+ bool ReadLine(std::string &Text);
+
+ public:
+
+ pid_t Process;
+
+ // Raw connection IO
+ bool WriteMsg(std::string &Text,bool Sync,const char *Fmt,...);
+ bool Connect(std::string Host, std::string User);
+ bool Connect(std::string Host, unsigned int Port, std::string User);
+ bool Comp(URI Other) const {return Other.Host == ServerName.Host && Other.Port == ServerName.Port;};
+
+ // Connection control
+ bool Open();
+ void Close();
+
+ // Query
+ bool Size(const char *Path,unsigned long long &Size);
+ bool ModTime(const char *Path, time_t &Time);
+ bool Get(const char *Path,FileFd &To,unsigned long long Resume,
+ Hashes &Hash,bool &Missing, unsigned long long Size);
+
+ RSHConn(std::string const &Prog, URI Srv);
+ ~RSHConn();
+};
+
+#include "aptmethod.h"
+
+class RSHMethod : public aptMethod
+{
+ virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE;
+ virtual bool Configuration(std::string Message) APT_OVERRIDE;
+
+ RSHConn *Server;
+
+ static std::string FailFile;
+ static int FailFd;
+ static time_t FailTime;
+ static APT_NORETURN void SigTerm(int);
+
+ public:
+
+ explicit RSHMethod(std::string &&Prog);
+};
+
+#endif
diff --git a/methods/store.cc b/methods/store.cc
new file mode 100644
index 000000000..1faaa4fb4
--- /dev/null
+++ b/methods/store.cc
@@ -0,0 +1,146 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Store method - Takes a file URI and stores its content (for which it will
+ calculate the hashes) in the given destination. The input file will be
+ extracted based on its file extension (or with the given compressor if
+ called with one of the compatible symlinks) and potentially recompressed
+ based on the file extension of the destination filename.
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/aptconfiguration.h>
+#include "aptmethod.h"
+
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <string>
+#include <vector>
+
+#include <apti18n.h>
+ /*}}}*/
+
+class StoreMethod : public aptMethod
+{
+ virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE;
+
+ public:
+
+ explicit StoreMethod(std::string &&pProg) : aptMethod(std::move(pProg),"1.2",SingleInstance | SendConfig)
+ {
+ if (Binary != "store")
+ methodNames.insert(methodNames.begin(), "store");
+ }
+};
+
+static bool OpenFileWithCompressorByName(FileFd &fileFd, std::string const &Filename, unsigned int const Mode, std::string const &Name)
+{
+ if (Name == "store")
+ return fileFd.Open(Filename, Mode, FileFd::Extension);
+
+ std::vector<APT::Configuration::Compressor> const compressors = APT::Configuration::getCompressors();
+ std::vector<APT::Configuration::Compressor>::const_iterator compressor = compressors.begin();
+ for (; compressor != compressors.end(); ++compressor)
+ if (compressor->Name == Name)
+ break;
+ if (compressor == compressors.end())
+ return _error->Error("Extraction of file %s requires unknown compressor %s", Filename.c_str(), Name.c_str());
+ return fileFd.Open(Filename, Mode, *compressor);
+}
+
+
+ /*}}}*/
+bool StoreMethod::Fetch(FetchItem *Itm) /*{{{*/
+{
+ URI Get = Itm->Uri;
+ std::string Path = Get.Host + Get.Path; // To account for relative paths
+
+ FetchResult Res;
+ Res.Filename = Itm->DestFile;
+ URIStart(Res);
+
+ // Open the source and destination files
+ FileFd From;
+ if (_config->FindB("Method::Compress", false) == false)
+ {
+ if (OpenFileWithCompressorByName(From, Path, FileFd::ReadOnly, Binary) == false)
+ return false;
+ if(From.IsCompressed() && From.FileSize() == 0)
+ return _error->Error(_("Empty files can't be valid archives"));
+ }
+ else
+ From.Open(Path, FileFd::ReadOnly, FileFd::Extension);
+ if (From.IsOpen() == false || From.Failed() == true)
+ return false;
+
+ FileFd To;
+ if (Itm->DestFile != "/dev/null" && Itm->DestFile != Path)
+ {
+ if (_config->FindB("Method::Compress", false) == false)
+ To.Open(Itm->DestFile, FileFd::WriteOnly | FileFd::Create | FileFd::Atomic, FileFd::Extension);
+ else if (OpenFileWithCompressorByName(To, Itm->DestFile, FileFd::WriteOnly | FileFd::Create | FileFd::Empty, Binary) == false)
+ return false;
+
+ if (To.IsOpen() == false || To.Failed() == true)
+ return false;
+ To.EraseOnFailure();
+ }
+
+ // Read data from source, generate checksums and write
+ Hashes Hash(Itm->ExpectedHashes);
+ bool Failed = false;
+ Res.Size = 0;
+ while (1)
+ {
+ unsigned char Buffer[4*1024];
+ unsigned long long Count = 0;
+
+ if (!From.Read(Buffer,sizeof(Buffer),&Count))
+ {
+ if (To.IsOpen())
+ To.OpFail();
+ return false;
+ }
+ if (Count == 0)
+ break;
+ Res.Size += Count;
+
+ Hash.Add(Buffer,Count);
+ if (To.IsOpen() && To.Write(Buffer,Count) == false)
+ {
+ Failed = true;
+ break;
+ }
+ }
+
+ From.Close();
+ To.Close();
+
+ if (Failed == true)
+ return false;
+
+ if (TransferModificationTimes(Path.c_str(), Itm->DestFile.c_str(), Res.LastModified) == false)
+ return false;
+
+ // Return a Done response
+ Res.TakeHashes(Hash);
+
+ URIDone(Res);
+ return true;
+}
+ /*}}}*/
+
+int main(int, char *argv[])
+{
+ return StoreMethod(flNotDir(argv[0])).Run();
+}
diff --git a/mirror-failure.py b/mirror-failure.py
new file mode 100644
index 000000000..e7d2bbf54
--- /dev/null
+++ b/mirror-failure.py
@@ -0,0 +1,23 @@
+# File: cgihttpserver-example-1.py
+
+import CGIHTTPServer
+import BaseHTTPServer
+
+class Handler(CGIHTTPServer.CGIHTTPRequestHandler):
+ #cgi_directories = ["/cgi"]
+ def do_POST(self):
+ print "do_POST"
+ #print self.command
+ #print self.path
+ #print self.headers
+ print self.client_address
+ data = self.rfile.read(int(self.headers["content-length"]))
+ print data
+ self.wfile.write("200 Ok\n");
+
+PORT = 8000
+
+httpd = BaseHTTPServer.HTTPServer(("", PORT), Handler)
+print "serving at port", PORT
+httpd.serve_forever()
+
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
new file mode 100644
index 000000000..258c9b050
--- /dev/null
+++ b/po/CMakeLists.txt
@@ -0,0 +1,52 @@
+include(Translations)
+
+set(languages_excluded
+ he ## disabled by translator request #313283
+)
+
+apt_add_translation_domain(
+ DOMAIN libapt-pkg${APT_PKG_MAJOR}
+ TARGETS apt-pkg
+ EXCLUDE_LANGUAGES ${languages_excluded}
+)
+
+apt_add_translation_domain(
+ DOMAIN apt
+ TARGETS apt apt-cache apt-get apt-config apt-cdrom apt-helper apt-mark
+ apt-private
+ # Methods
+ file copy store gpgv cdrom http https ftp rred rsh mirror
+ SCRIPTS ../dselect/install ../dselect/update
+ EXCLUDE_LANGUAGES ${languages_excluded}
+)
+
+apt_add_translation_domain(
+ DOMAIN apt-utils
+ TARGETS apt-sortpkgs
+ apt-extracttemplates
+ apt-internal-solver
+ apt-dump-solver
+ apt-internal-planner
+ apt-ftparchive
+ EXCLUDE_LANGUAGES ${languages_excluded}
+)
+
+apt_add_translation_domain(
+ DOMAIN libapt-inst${APT_INST_MAJOR}
+ TARGETS apt-inst
+ EXCLUDE_LANGUAGES ${languages_excluded}
+)
+
+apt_add_update_po(
+ TEMPLATE
+ apt-all
+ DOMAINS
+ libapt-pkg${APT_PKG_MAJOR}
+ libapt-inst${APT_INST_MAJOR}
+ apt
+ apt-utils
+ EXCLUDE_LANGUAGES
+ ${languages_excluded}
+)
+
+apt_add_po_statistics("${languages_excluded}")
diff --git a/po/apt-all.pot b/po/apt-all.pot
new file mode 100644
index 000000000..b9169ee9a
--- /dev/null
+++ b/po/apt-all.pot
@@ -0,0 +1,3552 @@
+# SOME DESCRIPTIVE TITLE.
+# This file is put in the public domain.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.4.6\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-06-01 10:51+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr ""
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr ""
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr ""
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr ""
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr ""
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr ""
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr ""
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr ""
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr ""
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr ""
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr ""
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr ""
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr ""
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr ""
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr ""
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr ""
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr ""
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr ""
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr ""
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr ""
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr ""
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr ""
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is not signed."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid "Signature error"
+msgstr ""
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr ""
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr ""
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr ""
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr ""
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr ""
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr ""
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr ""
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr ""
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr ""
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr ""
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to mkstemp %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... %u%%"
+msgstr ""
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr ""
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr ""
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr ""
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr ""
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Can not write log (%s)"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr ""
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr ""
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr ""
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr ""
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr ""
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr ""
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr ""
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr ""
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr ""
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr ""
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr ""
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr ""
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr ""
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr ""
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr ""
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr ""
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+msgid " [Installed]"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr ""
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr ""
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr ""
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr ""
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr ""
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr ""
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr ""
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr ""
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr ""
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr ""
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr ""
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr ""
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr ""
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr ""
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[installed,local]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[installed,automatic]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[installed]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr ""
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr ""
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr ""
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr ""
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr ""
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr ""
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr ""
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr ""
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr ""
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr ""
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "apt-cache stats does not take any arguments"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr ""
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr ""
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr ""
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr ""
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Must specify at least one pair url/filename"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+
+#: cmdline/apt-internal-solver.cc
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "search in package descriptions"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+msgid "install packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "remove packages"
+msgstr ""
+
+#. system wide stuff
+#: cmdline/apt.cc
+msgid "update list of available packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+msgid "edit the source information file"
+msgstr ""
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr ""
+
+#: dselect/install dselect/update
+msgid "Press [Enter] to continue."
+msgstr ""
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr ""
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr ""
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr ""
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+
+#: dselect/update
+msgid "Merging available information"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr ""
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr ""
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr ""
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr ""
+
+#: ftparchive/cachedb.cc
+msgid "Failed to read .dsc"
+msgstr ""
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr ""
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr ""
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr ""
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr ""
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr ""
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr ""
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr ""
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr ""
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr ""
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr ""
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr ""
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr ""
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr ""
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr ""
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr ""
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr ""
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr ""
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr ""
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr ""
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr ""
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr ""
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr ""
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr ""
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr ""
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr ""
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr ""
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr ""
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr ""
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr ""
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr ""
+
+#: methods/mirror.cc
+#, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr ""
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr ""
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr ""
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr ""
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
diff --git a/po/ar.po b/po/ar.po
new file mode 100644
index 000000000..a6498fa6c
--- /dev/null
+++ b/po/ar.po
@@ -0,0 +1,3761 @@
+# translation of apt_po.po to Arabic
+# This file is put in the public domain.
+#
+# Ossama M. Khayat <okhayat@yahoo.com>, 2005, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2006-10-20 21:28+0300\n"
+"Last-Translator: Ossama M. Khayat <okhayat@yahoo.com>\n"
+"Language-Team: Arabic <support@arabeyes.org>\n"
+"Language: ar\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Arabic\n"
+"X-Poedit-Country: Lebanon\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "توقيع الأرشي٠غير صالح"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+#, fuzzy, c-format
+msgid "Invalid archive member header %s"
+msgstr "توقيع الأرشي٠غير صالح"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "الأرشي٠قصير جداً"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Ùشلت قراءة ترويسات الأرشيÙ"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "تعذر العثور على الحزمة %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "أرشي٠Ùاسد"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Ùشل تحقّق Checksum لمل٠TarØŒ الأرشي٠Ùاسد"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr ""
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr ""
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "خطأ داخلي، تعذر العثور على العضو %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr ""
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Ùشلت كتابة المل٠%s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Ùشل إغلاق المل٠%s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "المسار %s طويل جداً"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Ùكّ تحزيم %s أكثر من مرّة"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr ""
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr ""
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr ""
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Ùشل تغيير اسم %s إلى %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr ""
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr ""
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "المسار طويل جداً"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr ""
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "تعذرت قراءة %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr ""
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr ""
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr ""
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr ""
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "خطأ داخلي ÙÙŠ AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr ""
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr ""
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "مل٠تهيئة Ù…Ùزدوج %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "المسار %s طويل جداً"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "المسار %s طويل جداً"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "المسار %s طويل جداً"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "المسار %s طويل جداً"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "المسار %s طويل جداً"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Hash Sum mismatch"
+msgstr "MD5Sum غير متطابقة"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "Ùشل إعادة التسمية ØŒ %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "الحجم غير متطابق"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "عمليّة غير صالحة %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "خطأ ÙÙŠ الكتابة"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "الاتصال بـ%s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "الرجاء إدخال القرص المÙسمّى '%s' ÙÙŠ السوّاقة '%s' وضغط Ù…Ùتاح الإدخال."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Unable to lock directory %s"
+msgstr "تعذر Ù‚ÙÙ„ دليل القائمة"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "نظام الحزم '%s' غير مدعوم"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr ""
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr ""
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr ""
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "قد يساعدك تنÙيذ الأمر apt-get update ÙÙŠ تصحيح هذه المشاكل"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "تعذرت قراءة قائمة المصادر."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "تعذر العثور على الإصدارة '%s' للحزمة '%s'"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "تعذر العثور على النسخة '%s' للحزمة '%s'"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find task '%s'"
+msgstr "تعذر العثور على الحزمة %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "تعذر العثور على الحزمة %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "تعذر العثور على الحزمة %s"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "تعذر العثور على الحزمة %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "ÙÙƒ تركيب القرص المدمج...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "بانتظار القرص...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "تركيب القرص...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "جاري التعرÙ..."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "هذا الاسم غير صالح، حاول مجدداً.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"هذا القرص مسمى: \n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "نسخ قوائم الحزم..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "كتابة لائحة المصادر الجديدة\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr ""
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr ""
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr ""
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "خيار سطر الأمر '%c' [من %s] مجهول."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "خيار سطر الأمر %s غير Ù…Ùهوم"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "الخيار %s يتطلّب Ù…Ùعطى."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "الخيار '%s' طويل جداً"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "عمليّة غير صالحة %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "اختصار نوع مجهول: '%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Ùتح مل٠التهيئة %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem unlinking the file %s"
+msgstr "مشكلة ÙÙŠ إغلاق الملÙ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr ""
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "خطأ ÙÙŠ القراءة"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "خطأ ÙÙŠ الكتابة"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "مشكلة ÙÙŠ إغلاق الملÙ"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Ùشل إغلاق المل٠%s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the file %s"
+msgstr "مشكلة ÙÙŠ إغلاق الملÙ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "مشكلة ÙÙŠ مزامنة الملÙ"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "مشكلة ÙÙŠ مزامنة الملÙ"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "تعذر إنشاء %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "تعذرت الكتابة إلى %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "تعذر التغيير إلى %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to close mmap"
+msgstr "تعذر Ùتح %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to synchronize mmap"
+msgstr "تعذر إرسال الأمر PORT"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Failed to truncate file"
+msgstr "Ùشلت كتابة المل٠%s"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... خطأ!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... تمّ"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... تمّ"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "تعذر العثور على التحديد %s"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Unable to parse Release file %s"
+msgstr "تعذر Ùتح مل٠قاعدة البيانات %s: %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "No sections in Release file %s"
+msgstr "لاحظ، تحديد %s بدلاً من %s\n"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "لاحظ، تحديد %s بدلاً من %s\n"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, fuzzy, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "تعذر Ù‚ÙÙ„ دليل القائمة"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr ""
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Installing %s"
+msgstr "تم تثبيت %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "تهيئة %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "إزالة %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removing %s"
+msgstr "تمت إزالة %s بالكامل"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "تم تثبيت %s"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, fuzzy, c-format
+msgid "Could not open file '%s'"
+msgstr "Ùشل إغلاق المل٠%s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "تحضير %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Ùتح %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "التحضير لتهيئة %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "التحضير لإزالة %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "تم إزالة %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "التحضير لإزالة %s بالكامل"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "تمت إزالة %s بالكامل"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "تعذرت الكتابة إلى %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+#, fuzzy
+msgid "Reading state information"
+msgstr "دمج المعلومات المتوÙرة"
+
+#: apt-pkg/depcache.cc
+#, fuzzy, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Ùشل Ùتح %s"
+
+#: apt-pkg/depcache.cc
+#, fuzzy, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Ùشلت كتابة المل٠%s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, fuzzy, c-format
+msgid "Hash mismatch for: %s"
+msgstr "MD5Sum غير متطابقة"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "نظام الحزم '%s' غير مدعوم"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr ""
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "Ùشل إغلاق المل٠%s"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "يعتمد"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "يعتمد مسبقاً"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "يستحسن"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "يعارض"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "يقترح"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "يستبدل"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "ÙŠÙلغي"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "مهم"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "مطلوب"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "قياسي"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "إضاÙÙŠ"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "اختياري"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr ""
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "حدث خطأ أثناء معالجة %s (NewVersion1)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "قراءة قوائم الحزم"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr ""
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr ""
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Ùتح %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr ""
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Ùشل إحضار %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "حساب الترقية"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "جلب:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "تجاهل:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "خطأ:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "جلب %sب ÙÙŠ %s (%sب/Ø«)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [يعمل]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"تغيير الوسط: الرجاء إدخال القرص المÙسمّى\n"
+" '%s'\n"
+"ÙÙŠ السوّاقة '%s' وضغط Ù…Ùتاح الإدخال\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "تصحيح المعتمدات..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " Ùشل."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "لم يمكن تصحيح المعتمدات"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "لم يمكن تقليص مجموعة الترقية"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " تم"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "قد ترغب بتنÙيذ الأمر 'apt --fix-broken install' لتصحيح هذه."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Ù…Ùعتمدات غير مستوÙاة. جرب 'apt --fix-broken install' بدون أسماء حزم (أو حدّد "
+"حلاً)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "لاحظ، تحديد %s بسبب صيغة regex '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "لاحظ، تحديد %s بسبب صيغة regex '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "لاحظ، تحديد %s بسبب صيغة regex '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "الحزمة %s وهميّة وتوÙّرها:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [Ù…Ùثبّتة]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "يجب اختيار واحدة بالتحديد لتثبيتها."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "على أيّ Ùإن الحزم التالية تحلّ مكانها:"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "الحزمة %s ليس لها مرشح تثبيت"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr ""
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "الحزمة %s غير Ù…Ùثبّتة، لذلك لن تÙزال\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "الحزمة %s غير Ù…Ùثبّتة، لذلك لن تÙزال\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "لاحظ، تحديد %s بدلاً من %s\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "لم ÙŠÙعثر على أية حزم"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "تحذير: تعذرت المصادقة على الحزم التالية!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "تم غض النظر عن تحذير المصادقة.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "تعذرت المصادقة على بعض الحزم"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "تثبيت هذه الحزم دون التحقق منها؟"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "هناك مشاكل وتم استخدام -y دون --force-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "تعذر حساب المساحة الحرة ÙÙŠ %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "ليس هناك مساحة كاÙية ÙÙŠ %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "تعذر Ù‚ÙŽÙْل دليل التنزيل"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "قد تساعد المعلومات التالية ÙÙŠ حل المشكلة:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "حزم معطوبة"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"تعذر إحضار بعض الأرشيÙØŒ ربما يمكنك محاولة تنÙيذ apt-get update أو إضاÙØ© --"
+"fix-missingØŸ"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "خطأ داخلي، تم طلب InstallPackages مع وجود حزم معطوبة!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "حزم بحاجة للإزالة لكن الإزالة Ù…Ùعطّلة."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "هناك مشاكل وتم استخدام -y دون --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "هناك مشاكل وتم استخدام -y دون --force-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "خطأ داخلي، لم تنته عملية الترتيب"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr "يا للغرابة... لم تتطابق الأحجام، الرجاء مراسلة apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "بحاجة إلى جلب %sب/%sب من الأرشيÙ.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "بحاجة إلى جلب %sب من الأرشيÙ.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "بعد الاستخراج %sب من المساحة الإضاÙيّة سيتمّ استخدامها.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "بعد الاستخراج %sب من المساحة ستÙرّغ.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr ""
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "نعم، اÙعل ما أقوله!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"أنت على وشك أن تقوم بشيء ضارّ جداً\n"
+"كي تستمر اكتب العبارة '%s'\n"
+" ØŸ] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "إجهاض."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "هل تريد الاستمرار؟"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Ùشل تنزيل بعض الملÙات"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "اكتمل التنزيل ÙˆÙÙŠ وضع التنزيل Ùقط"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing وتبديل الأوساط غير مدعومة حالياً"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "تعذر تصحيح الحزم المÙقودة."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "إجهاض التثبيت."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "خطأ داخلي، عطب AllUpgrade بعض الأشياء"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "سيتم تثبيت الحزم الجديدة التالية:"
+msgstr[1] "سيتم تثبيت الحزم الجديدة التالية:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "سيتم تثبيت الحزم الجديدة التالية:"
+msgstr[1] "سيتم تثبيت الحزم الجديدة التالية:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "سيتم تثبيت الحزم الإضاÙيّة التالية:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "الحزم المقترحة:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "الحزم المستحسنة:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "تخطّي %s، حيث أنها مثبتة ولم يتمّ تعيين الترقية.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr "تخطّي %s، حيث أنها مثبتة ولم يتمّ تعيين الترقية.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "إعادة تثبيت %s غير ممكنة، حيث أنّه لا يمكن تنزيلها.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s هي النسخة الأحدث.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to manually installed.\n"
+msgstr "إلا أنه سيتم تثبيت %s"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "النسخة المحددة %s (%s) للإصدارة %s\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "النسخة المحددة %s (%s) للإصدارة %s\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Ù…Ùثبّتة]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [Ù…Ùثبّتة]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [Ù…Ùثبّتة]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [Ù…Ùثبّتة]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "إلا أن %s مثبت"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "إلا أنه سيتم تثبيت %s"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "إلا أنه غير قابل للتثبيت"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "إلا أنها حزمة وهمية"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "إلا أنه لن يتم تثبيتها"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "إلا أنها غير مثبتة"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " أو"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "سيتم تثبيت الحزم الجديدة التالية:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "سيتم إزالة الحزم التالية:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "سيتم الإبقاء على الحزم التالية:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "ستتم ترقية الحزم التالية:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "سيتم تثبيط الحزم التالية:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "سيتم تغيير الحزم المبقاة التالية:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (بسبب %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"تحذير: ستتم إزالة الحزم الأساسية التالية.\n"
+"لا يجب أن تقوم بهذا إلى إن كنت تعر٠تماماً ما تقوم به!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu سيتم ترقيتها، %lu مثبتة حديثاً، "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu أعيد تثبيتها، "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu مثبطة، "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu لإزالتها و %lu لم يتم ترقيتها.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu غير مثبتة بالكامل أو مزالة.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[Y/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[y/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "Y"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+#, fuzzy
+msgid "You must give at least one search pattern"
+msgstr "يجب أن تعطي صيغة واحدة بالضبط"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr ""
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "ملÙات الحزم:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "الحزم المÙدبّسة:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Ù…Ùثبّت:"
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " مرشّح: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(لاشيء)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " جدول النسخ:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "تعذر العثور على الحزمة %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "تعذر العثور على الحزمة %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "تعذر العثور على الحزمة %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "يجب تحديد حزمة واحدة على الأقل لجلب مصدرها"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "تعذر العثور على مصدر الحزمة %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "تخطي المل٠'%s' المنزل مسبقاً\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "يجب جلب %sب/%sب من الأرشيÙات المصدرية.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "يجب جلب %sب من الأرشيÙات المصدريّة.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "إحضار المصدر %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Ùشل إحضار بعض الأرشيÙات."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "أمر ÙÙƒ الحزمة '%s' Ùشل.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "أمر البناء '%s' Ùشل.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr ""
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Ùشل تغيير اسم %s إلى %s"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "الحزمة %s النسخة %s لها معتمد غير مستوÙÙ‰:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "لا يقبل الأمر update أية Ù…Ùعطيات"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "لا يقبل الأمر update أية Ù…Ùعطيات"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "أسماء الحزم الكلية :"
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total package structures: "
+msgstr "أسماء الحزم الكلية :"
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " الحزم العادية:"
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr "الحزمة الوهمية تماماً:"
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " الحزمة الوهمية المÙردة:"
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " الحزم الوهمية المختلطة:"
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Ù…Ùقودة:"
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "مجموع النسخ الÙريدة:"
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total distinct descriptions: "
+msgstr "مجموع النسخ الÙريدة:"
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "مجموع المعتمدات:"
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "مجموع علاقات النسخ/الملÙات:"
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total Desc/File relations: "
+msgstr "مجموع علاقات النسخ/الملÙات:"
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "مجموع علاقات النسخ/الملÙات:"
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "مجموع المساحة المحسوب حسابها:"
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "الرجاء كتابة اسم لهذا القرص، مثال 'Debian 2.1r1 Disk 1'"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "الرجاء إدخال قرص ÙÙŠ السواقة وضغط الزر enter"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Ùشل تغيير اسم %s إلى %s"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "كرر هذه العملية لباقي الأقراص المدمجة ÙÙŠ المجموعة."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "تعذر الحصول على نسخة debconf. هل هي مثبتة؟"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "تعذر العثور على الحزمة %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "إلا أنه سيتم تثبيت %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "الوحدات المدعومة:"
+
+#: cmdline/apt-get.cc
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid "Retrieve new lists of packages"
+msgstr "إلا أنه سيتم تثبيت %s"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr ""
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid "Remove packages"
+msgstr "حزم معطوبة"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr ""
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+#, fuzzy
+msgid "Remove automatically all unused packages"
+msgstr "إلا أنه سيتم تثبيت %s"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr ""
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid "Download source archives"
+msgstr "يجب جلب %sب من الأرشيÙات المصدريّة.\n"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "يجب تحديد حزمة واحدة على الأقل لجلب مصدرها"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+
+#: cmdline/apt-internal-solver.cc
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "إلا أنها غير مثبتة"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "إلا أنه سيتم تثبيت %s"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "إلا أنه سيتم تثبيت %s"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s هي النسخة الأحدث.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s هي النسخة الأحدث.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "إلا أنه سيتم تثبيت %s"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Ùشل Ùتح %s"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "إلا أنه سيتم تثبيت %s"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "سيتم تثبيت الحزم الجديدة التالية:"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "إلا أنه سيتم تثبيت %s"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "إلا أنه سيتم تثبيت %s"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "سجل حزمة مجهول!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "قراءة قوائم الحزم"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "الحزم المÙدبّسة:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "حزم معطوبة"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "إلا أنه سيتم تثبيت %s"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "دمج المعلومات المتوÙرة"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "إعداد اÙتراضيّ سيّء!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "اضغط Ù…Ùتاح الإدخال للاستمرار."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr ""
+
+#: dselect/install
+#, fuzzy
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "حدثت بعض الأخطاء أثناء ÙÙƒ الحزمة. سأقوم بتهيئة "
+
+#: dselect/install
+#, fuzzy
+msgid "will be configured. This may result in duplicate errors"
+msgstr "الحزم التي تم تثبيتها. قد يتسبب هذا بظهر أخطاء متكررة"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "أو أخطاء سبّبتها المÙعتمدات المÙقودة. لا بأس بهذا، Ùقط الأخطاء"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr "أعلى هذه الرسالة مهمّة. الرجاء تصحيحها وتشغيل التثبيت مجدداً"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "دمج المعلومات المتوÙرة"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "قائمة توسيعات الحزمة طويلة جداً"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "خطأ ÙÙŠ معالجة الدليل %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "قائمة توسيعات المصدر طويلة جداً"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "خطأ ÙÙŠ كتابة الترويسة إلى مل٠المحتويات"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "خطأ ÙÙŠ معالجة المحتويات %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "لم تÙطابق أية تحديدات"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "بعض الملÙات Ù…Ùقودة ÙÙŠ مجموعة مل٠الحزمة `%s'"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "قاعدة البيانات كانت Ùاسدة، Ùتم تغيير اسمها إلى %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "قاعدة البيانات قديمة، محاولة ترقية %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "تعذر Ùتح مل٠قاعدة البيانات %s: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "تعذرت إزالة %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr ""
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr ""
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Ùشل تعيين الذاكرة"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr ""
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "خطأ داخلي، تعذر إنشاء %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "تعذر Ùتح %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "W: تعذرت قراءة الدليل %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "W: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr ""
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Ùشل Ùتح %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Ùشل ربط %s بـ%s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "بانتظار الترويسات"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "أرسل خادم http ترويسة ردّ غير صالحة"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "سطر ترويسة سيء"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "أرسل خادم http ترويسة طول محتويات (ÙContent-Length) غير صالحة"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "أرسل خادم http ترويسة مدى محتويات (ÙContent-Range) غير صالحة"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "خادم http له دعم مدى معطوب"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "نسق تاريخ مجهول"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "بيانات ترويسة سيئة"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Ùشل الاتصال"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "خطأ داخلي"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "تعذرت قراءة قاعدة بيانات القرص المدمج %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"الرجاء استخدام apt-cdrom لتعري٠APT بهذا القرص المدمج. لا يمكن استخدام apt-"
+"get update لإضاÙØ© أقراص مدمجة جديدة."
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "القرص المدمج الخطأ"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "تعذر Ùكّ القرص المدمج من %sØŒ إذ قد يكون لا يزال قيد الاستخدام."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "لم ÙŠÙعثر على القرص."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "لم ÙŠÙعثر على الملÙ"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "الاتصال بـ%s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "تعذر تمهيد الاتصال بـ%s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "تعذر الاتصال بـ%s:%s (%s)، انتهى وقت الاتصال"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Ùشل"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "تعذر الاتصال بـ%s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "الاتصال بـ%s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr ""
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "تعذر الاتصال بـ%s %s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Ùشيل تنÙيذ stat"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr ""
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "تسجيل الدخول"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "رÙض الخادم اتصالنا بالرد: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "Ùشل USERØŒ ردّ الخادم: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "Ùشل PASSØŒ ردّ الخادم: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"تم تحديد خادم بروكسي ولكن دون نص تسجيل دخول برمجي، Acquire::ftp::ProxyLogin "
+"Ùارغ."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Ùشل أمر نص تسجيل الدخول البرمجي '%s'ØŒ ردّ الخادم: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "Ùشل TYPEØŒ ردّ الخادم: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "انتهى وقت الاتصال"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "أغلق الخادم الاتصال"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr ""
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "تعذر إرسال الأمر PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "Ùشل EPRTØŒ ردّ الخادم: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "تعذر قبول الاتصال"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "تعذر إحضار الملÙØŒ ردّ الخادم '%s'"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Ùشل نقل البيانات، ردّ الخادم '%s'"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "استعلام"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr ""
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr ""
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr ""
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "خطأ ÙÙŠ الكتابة إلى الملÙ"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "خطأ ÙÙŠ القراءة من الخادم. أقÙÙ„ الطر٠الآخر الاتصال"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "خطأ ÙÙŠ القراءة من الخادم"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "خطأ ÙÙŠ الكتابة إلى الملÙ"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Ùشل التحديد"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "انتهى وقت الاتصال"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "خطأ ÙÙŠ الكتابة إلى مل٠المÙخرجات"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Ùشل إغلاق المل٠%s"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Ùشل إغلاق المل٠%s"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr ""
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Ùشل تعيين وقت التعديل"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr ""
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Ù…Ùعتمدات غير مستوÙاة. حاول استخدام --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr "قد ترغب بتشغيل 'apt --fix-broken install' لتصحيح هذه:"
+
+#~ msgid "(not found)"
+#~ msgstr "(غير موجود)"
+
+#~ msgid "Failed to fetch %s %s\n"
+#~ msgstr "Ùشل إحضار %s %s\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "المسار %s طويل جداً"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "يجب تحديد حزمة واحدة على الأقل لجلب مصدرها"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Ùشل تنÙيذ gzip"
+
+#, fuzzy
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s لـ%s %s Ù…Ùجمّع على %s %s\n"
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "تعذر Ùتح مل٠قاعدة البيانات %s: %s"
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "ليس هناك مساحة كاÙية ÙÙŠ %s"
+
+#~ msgid "Done"
+#~ msgstr "تمّ"
+
+#, fuzzy
+#~ msgid "No keyring installed in %s."
+#~ msgstr "إجهاض التثبيت."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "خطأ داخلي، عطب AllUpgrade بعض الأشياء"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s ليس حزمة DEB صالحة."
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5Sum غير متطابقة"
+
+#, fuzzy
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Ùتح مل٠التهيئة %s"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Ùشل تغيير دليل الإدارة إلى %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "خطأ داخلي أثناء الحصول على اسم الحزمة"
+
+#~ msgid "Reading file listing"
+#~ msgstr "قراءة سرد الملÙات"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Ùشلت قراءة مل٠القائمة %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "خطأ داخلي أثناء الحصول على node"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "تعذر التغيير إلى %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Ùشل العثور على مل٠تحكّم صالح"
+
+#, fuzzy
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Ùشل إغلاق المل٠%s"
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "حدث خطأ أثناء معالجة %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "حدث خطأ أثناء معالجة %s (UserPackage1)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "حدث خطأ أثناء معالجة %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "حدث خطأ أثناء معالجة %s (UserPackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "حدث خطأ أثناء معالجة %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "حدث خطأ أثناء معالجة %s (NewVersion1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "حدث خطأ أثناء معالجة %s (UsePackage3)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "حدث خطأ أثناء معالجة %s (NewFileVer1)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "خطأ داخلي، تعذر العثور على العضو"
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "حدث خطأ أثناء معالجة %s (NewVersion2)"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#, fuzzy
+#~ msgid "Processing triggers for %s"
+#~ msgstr "خطأ ÙÙŠ معالجة الدليل %s"
+
+#, fuzzy
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "السطر %d طويل جداً (أقصاه %d)"
+
+#, fuzzy
+#~ msgid "Line %d too long (max %d)"
+#~ msgstr "السطر %d طويل جداً (أقصاه %d)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc1)"
+#~ msgstr "حدث خطأ أثناء معالجة %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc2)"
+#~ msgstr "حدث خطأ أثناء معالجة %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "openpty failed\n"
+#~ msgstr "Ùشل التحديد"
+
+#~ msgid "File date has changed %s"
+#~ msgstr "تغير تاريخ المل٠%s"
diff --git a/po/ast.po b/po/ast.po
new file mode 100644
index 000000000..f0b5e37c6
--- /dev/null
+++ b/po/ast.po
@@ -0,0 +1,4238 @@
+# iñigo varela <ivarela@softastur.org>, 2010.
+# maacub <maacub@gmail.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 0.7.18\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2010-10-02 23:35+0100\n"
+"Last-Translator: Iñigo Varela <ivarela@softastur.org>\n"
+"Language-Team: Asturian (ast)\n"
+"Language: ast\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Virtaal 0.5.2\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Robla del ficheru inválida"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Fallu al lleer la testera de miembru del ficheru"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Testera de miembru del archivu %s inválida"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Testera de miembru del ficheru inválida"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "El ficheru ye perpequeñu"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Falló al lleer les testeres del ficheru"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Nun puede alcontrase'l rexistru d'autenticación pa: %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Ficheru tollíu"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Falló la suma de control de tar, ficheru tollíu"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Testera del TAR triba %u desconocida, miembru %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Esti nun ye un ficheru DEB válidu, falta'l miembru '%s'"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Error internu, nun se pue atopar el miembru %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Ficheru de control inanalizable"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Falló la escritura nel ficheru %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Falló al pesllar el ficheru %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "La trayeutoria %s ye enforma llarga"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Desempaquetando %s más d'una vegada"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "El direutorio %s ta desviáu"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "El paquete ta tentando escribir nel oxetivu desviáu %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "La trayeutoria de desviación ye enforma llarga"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Nun pudo lleese %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Nun pudo renomase %s como %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "El direutoriu %s ta reemplazándose por un non-direutoriu"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Fallu al atopar el nodu nel so bote d'enllaz"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "La trayeutoria ye perllarga"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Sobreescribiendo concordancia del paquete ensin versión pa %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "El ficheru %s/%s sobreescribe al que ta nel paquete %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Nun ye a lleer %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Nun ye a lleer %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "Llamóse a DropNode nun nodu que ta entá enllazáu"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "¡Fallu al atopar l'elementu enllazáu!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Falló al allugar una desvíu"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Fallu internu en AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Intentando sobrescribir un desvíu, %s -> %s and %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Doble suma de desvíu %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Ficheru de configuración duplicáu %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "El direutorio %s ta desviáu"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "El direutorio %s ta desviáu"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "El direutorio %s ta desviáu"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "El direutorio %s ta desviáu"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "El direutorio %s ta desviáu"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Nun pudo lleese l'enllaz %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "La suma hash nun concasa"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "falló'l cambiu de nome, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "El tamañu nun concasa"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "Operación incorreuta: %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Fallu d'escritura"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"Hebo un fallu durante la verificación de la robla. El repositoriu nun ta "
+"anováu y va usase un ficheru índiz. Fallu GPG: %s: %s\n"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "Fallu GPG: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Conflictu de distribución: %s (esperábase %s pero obtúvose %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Nun pudo alcontrase un ficheru pal paquete %s. Esto puede significar que "
+"necesites iguar manualmente esti paquete (por faltar una arquitectura)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"Los ficheros d'indiz de paquetes tan corrompíos. Nun hai campu Filename: pal "
+"paquete %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Coneutando a %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Nun pudo alncontrase'l controlador de métodu %s."
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "Comprueba qu'el paquete 'dpkg-dev' ta instaláu.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "El métodu %s nun entamó correchamente"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "Por favor, introduz el discu '%s' nel preséu '%s' y calca Intro."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Falta'l direutoriu de llistes %spartial."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Falta'l direutoriu d'archivos %spartial."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "Nun pudo bloquiase'l direutoriu %s"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "La triba de ficheru d'indiz '%s' nun ta sofitada"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Nun se pudo cambiar a %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Descargando ficheru %li de %li (falten %s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Descargando ficheru %li de %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"El paquete %s necesita reinstalase, pero nun s'alcuentra un archivu pa el."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Error, pkgProblemResolver::Resolve xeneró frañadures, esto puede ser pola "
+"mor de paquetes reteníos."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "Nun pueden iguase los problemes; tienes paquetes frañaos reteníos."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+"Nun pudieron analizase o abrise les llistes de paquetes o el ficheru d'estáu."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Has d'executar apt-get update pa iguar estos problemes"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Nun pudo lleese la llista de fontes."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Error de compilación d'espresión regular - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Nun s'alcontró la distribución '%s' pa '%s'"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Nun s'alcontró la versión '%s' pa '%s'"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Nun pudo alcontrase la xera '%s'"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Nun pudo alcontrase dengún paquete por regex '%s'"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Nun pudo alcontrase dengún paquete por regex '%s'"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Nun pue alcontrase'l paquete %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+"Nun pueden seleicionase versiones pal paquete'%s' como puramente virtual"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"Nun puede seleicionase la versión más nueva pal paquete'%s' como puramente "
+"virtual"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+"Nun puede seleicionase versión candidata pal paquete %s que nun tien "
+"candidata"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"Nun puede seleicionase versión instalada pal paquete %s que nun ta instalada"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"Nun puede seleicionase l'instalador o versión candidata pal paquete '%s' "
+"como non tien nengún d'ellos"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Llinia %u enforma llarga na llista d'oríxenes %s."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Desmontando'l CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Usando el puntu de montaxe de CD-ROM %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Esperando'l discu...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Montando'l CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Identificando... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Etiqueta guardada: %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Buscando nel discu ficheros d'índices...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Atopáu %zu indices de paquete, %zu indices de fonte, %zu indices de torna y "
+"%zu firmes\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Nun s'alcuentra dengún paquete de ficheros, seique nun ye un Discu Debian o "
+"hai una arquiteutura inválida?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Atopóse la etiqueta: '%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Esi nun ye un nome válidu; inténtalo otra vuelta.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Esti discu llámase: \n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Copiando les llistes de paquetes..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Escribiendo llista nueva d'oríxenes\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Les entraes de la llista d'oríxenes pa esti discu son:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Nun pudo lleese %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Nun puede algamase información del puntu de montaxe %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Nun se pudo montar el CD-ROM"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "La opción de llinia d'ordes '%c' [de %s] ye desconocida."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Nun s'entiende la opción %s de la llinia d'ordes"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "La opción %s de la llinia d'ordes nun ye un valor booleanu"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "La opción %s necesita un argumentu."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "Opción %s: L'axuste del elementu de configuración ha tener un =<val>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "La opción %s pide un argumentu enteru, non '%s'"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Opción '%s' enforma llarga"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "El sentíu %s nun s'entiende, prueba con braeru o falsu."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Operación incorreuta: %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Triba d'abreviatura que nun se reconoz: «%c»"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Abriendo ficheros de configuración %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Fallu de sintaxis %s:%u: Nun hai un nome al entamu del bloque."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Fallu de sintaxis %s:%u: Marca mal formada"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Fallu de sintaxis %s:%u: Puxarra extra dempués del valor"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"Error de sintaxis %s:%u: Les directives pueden facese sólo nel nivel cimeru"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Fallu de sintaxis %s:%u: Demasiaes inclusiones añeraes"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Fallu de sintaxis %s:%u: Incluyendo dende equí"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Error de sintaxis %s:%u: La directiva '%s' nun ta sofitada"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Fallu de sintaxis %s:%u: Directiva llimpia requier un tres opciones como "
+"argumentos"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Fallu de sintaxis %s:%u: Puxarra extra al final del ficheru"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Hai problemes desvenceyando'l ficheru %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Nun ta usándose bloquéu pal ficheru de bloquéu de sólo llectura %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Nun puede abrise'l ficheru de bloquéu %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Nun ta usándose bloquéu pal ficheru de bloquéu %s montáu per nfs"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Nun se pudo torgar %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Esperaba %s pero nun taba ellí"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "El subprocesu %s recibió un fallu de segmentación."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "El subprocesu %s recibió una señal %u."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "El subprocesu %s devolvió un códigu d'error (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "El subprocesu %s terminó de manera inesperada"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Fallu de llectura"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Fallu d'escritura"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Problemes zarrando'l ficheru gzip %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Nun pudo criase'l soprocesu IPC"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Nun pudo executase'l compresor "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Nun se pudo abrir el ficheru %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Nun pudo abrise un ficheru descriptor %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "lleíos, entá tenía de lleer %lu pero nun queda nada"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "escritos, entá tenía d'escribir %lu pero nun pudo facerse"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Problemes zarrando'l ficheru %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Hai problemes al renomar el ficheru %s a %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Hai problemes al sincronizar el ficheru"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Nun ye a lleer %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Nun se pue escribir en %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Nun se puede facer mmap d'un ficheru baleru"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Nun se pudo facer mmap de %lu bytes"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Nun pudo duplicase'l ficheru descriptor %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "Nun pudo zarrase mmap"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "Nun se pudo sincronizase mmap "
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Nun se pudo facer mmap de %lu bytes"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Falló al francer el ficheru"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"Dynamic MMap escosó l'espaciu. Por favor aumenta'l tamañu de APT::Cache-"
+"Start. El valor actual ye : %lu. (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"Nun pudó incrementase'l tamañu de MMap col llímite de %lu bytes ya torgáu"
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Nun pudó incrementase'l tamañu de MMap ya que crecer automáticamente ta "
+"desactivao pol usuariu."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... ¡Fallu!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Fecho"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... Fecho"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%lid %lih %limin %lis"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%lih %limin %lis"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%limin %lis"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%lis"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Escoyeta %s que nun s'atopa"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Nun se pudo parchear el ficheru release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Ensin seiciones nel ficheru release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Ensin entrada Hash nel ficheru release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Entrada inválida pa '%s' nel ficheru release %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Nun se pudo tratar el ficheru de paquetes %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"Nun pudó bloquease'l direutoriu d'alministración (%s), ¿hai otru procesu "
+"usándolu?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Nun pudo bloquiase'l direutoriu d'alministración (%s), ¿yes root?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"dpkg interrumpióse, tienes qu'executar manualmente '%s' pa iguar el "
+"problema. "
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Non bloquiáu"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "Instalando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Configurando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Desinstalando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "Desinstalóse dafechu %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "Anotando desaniciáu de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Executando activador de post-instalación de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "%s instaláu"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Falta'l direutoriu '%s'."
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "Nun pudo abrise'l ficheru '%s'"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Preparando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Desempaquetando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Preparándose pa configurar %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Preparándose pa desinstalar %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "%s desinstaláu"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Preparándose pa desinstalar dafechu %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "Desinstalóse dafechu %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "Nun se pue escribir en %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr "Ensin informe escritu d'apport porque MaxReports llegó dafechu"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "problemes de dependencies - déxase ensin configurar"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Ensin informe escritu d'apport porque'l mensax de fallu indica un fallu que "
+"siguió dende un fallu previu"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Ensin informe escritu d'apport porque'l mensax de fallu indica un fallu de "
+"discu llenu"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Ensin informe escritu d'apport porque'l mensax de fallu indica un fallu de "
+"memoria"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Ensin informe escritu d'apport porque'l mensax de fallu indica un fallu de "
+"discu llenu"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"Ensin informe escritu d'apport porque'l mensax de fallu indica un fallu E/S "
+"dpkg"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Creando árbol de dependencies"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Versiones candidates"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Xeneración de dependencies"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Lleendo información d'estáu"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Nun se pudo abrir el ficheru d'estáu %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Falló la escritura del ficheru temporal d'estáu %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "%i rexistros escritos.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "%i rexistros escritos con %i ficheros de menos.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "%i rexistros escritos con %i ficheros mal empareyaos\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"Escribiéronse %i rexistros con %i ficheros perdíos y %i ficheros que nun "
+"concasen\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "Nun puede alcontrase'l rexistru d'autenticación pa: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "El hash nun concasa pa: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "El sistema d'empaquetáu '%s' nun ta sofitáu"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Nun pudo determinase una triba de sistema d'empaquetáu afayadiza"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "Executando dpkt"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"Nun pudó facese la configuración inmediatamente en '%s'. Por favor, mira man "
+"5 apt.conf embaxo APT::Immediate-Configure for details. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "Nun pudo abrise'l ficheru '%s'"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Esta execución d'instalación va requerir desaniciar temporalmente'l paquete "
+"esencial %s por un cote de Conflictos/Pre-Dependencies. Esto normalmente ye "
+"malo, pero si daveres quies facelo, activa la opción APT::Force-LoopBreak."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Caché de paquetes balera."
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "El ficheru de caché de paquetes ta tollíu"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "El ficheru de caché de paquetes ye una versión incompatible"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Esti APT nun soporta'l sistema de versiones '%s'"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "La caché de paquetes creóse pa una arquitectura estremada"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "El ficheru de caché de paquetes ta tollíu"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Depende de"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Predepende de"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Suxer"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "En conflictu con"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Recomienda"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Sustituye a"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Ruempe"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Aumenta"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Fai obsoletu a"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "importante"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "requeríu"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "estándar"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "extra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "opcional"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "La caché tien un sistema de versiones incompatible"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Hebo un error al procesar %s (FindPkg)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"Coime, perpasaste'l númberu de nomes de paquete qu'esti APT ye a remanar."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Vaya, perpasaste'l númberu de versiones coles que puede esti APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Coime, perpasaste'l númberu de descripciones qu'esti APT ye a remanar."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "Vaya, perpasaste'l númberu de dependencies coles que puede esti APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Lleendo llista de paquetes"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Fallu de E/S al grabar caché d'oríxenes"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "La triba de ficheru d'indiz '%s' nun ta sofitada"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr ""
+"Rexistru inválidu nel ficheru de preferencies %s, nun hai cabecera Paquete"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Nun s'entiende'l tipu de pin %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Nun hai prioridá (o ye cero) conseñada pa pin"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Saltu mal formáu %s llinia %lu #1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Abriendo %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Llinia %u mal formada na llista d'oríxenes %s (triba)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Triba '%s' desconocida na llinia %u de la llista d'oríxenes %s"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Llinia %u mal formada na llista d'oríxenes %s (triba)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Triba '%s' desconocida na llinia %u de la llista d'oríxenes %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Has de poner delles URIs 'fonte' nel ficheru sources.list"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Falló algamar %s %s"
+
+#: apt-pkg/update.cc
+#, fuzzy
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Nun pudieron descargase dellos ficheros d'índiz; inoráronse o usáronse los "
+"antiguos nel so llugar."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calculando l'anovamientu"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Oxe:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Des:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr ""
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Descargaos %sB en %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Tresnando]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Cambeu de mediu: Por favor meti'l discu etiquetáu\n"
+" '%s'\n"
+"na unidá '%s' y calca Intro\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Iguando dependencies..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " falló."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Nun pudieron iguase les dependencies"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Nun pue amenorgase'l conxuntu d'actualización"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Fecho"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "Habríes d'executar 'apt --fix-broken install' para igualo."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Dependencies ensin cubrir. Tenta 'apt --fix-broken install' ensin paquetes "
+"(o conseña una solución)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Nota, escoyendo '%s' pa la xera '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Nota, escoyendo '%s' pa regex '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Nota, escoyendo '%s' pa regex '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "El paquete %s ye un paquete virtual ufríu por:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [Instaláu]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [Nun ye versión candidata]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Has d'escoyer esplícitamente unu pa instalar."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"El paquete %s nun ta disponible, otru paquete refierse a él.\n"
+"Esto puede significar que falta el paquete, ta arrumbáu, o sólo\n"
+"ta disponible dende otra fonte\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Sicasí, los siguientes paquetes reemplacenlu:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "El paquete '%s' nun tien candidatu pa instalación"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Los paquetes virtuales como '%s' nun pueden desaniciase\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "El paquete %s nun ta instalau, nun va desaniciase\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "El paquete %s nun ta instalau, nun va desaniciase\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Nota, escoyendo %s nel llugar de %s\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Esti APT tien Poderes de Super Vaca."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Nun s'alcontraron paquetes"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "AVISU: ¡Nun pudieron autenticase los siguientes paquetes!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Avisu d'autenticación saltáu.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Dellos paquetes nun pudieron autenticase"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "¿Instalar esos paquetes ensin verificación?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Hai problemes y utilizose -y ensin --force-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Nun pue determinase l'espaciu llibre de %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Nun tienes espaciu libre bastante en %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Nun pue bloquiase'l direutoriu de descarga"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Dellos paquetes nun pudieron instalase. Esto puede significar que\n"
+"conseñaste una situación imposible o, si tas usando la distribución\n"
+"inestable, que dellos paquetes necesarios nun se crearon o que\n"
+"s'allugaron fuera d'Incoming."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "La siguiente información pue aidar a resolver la situación:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Paquetes frañaos"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Nun pudieron algamase dellos archivos, ¿seique executando apt-get update o "
+"tentando --fix-missing?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Error internu, ¡InstallPackages llamose con paquetes frañaos!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Fai falta desaniciar los paquetes pero desaniciar ta torgáu."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Hai problemes y utilizose -y ensin --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Hai problemes y utilizose -y ensin --force-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Error internu, ordenar nun finó"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Que raro... Los tamaños nun concasen, escribe a apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Hai que descargar %sB/%sB d'archivos.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Hai que descargar %sB d'archivos.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "Tres d'esta operación, van usase %sB d'espaciu de discu adicional.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Tres d'esta operación, van lliberase %sB d'espaciu de discu.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "Conseñose Trivial Only pero ésta nun ye una operación trivial."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Sí, ¡facer lo que digo!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Tas a piques de facer daqué potencialmente dañible.\n"
+"Pa continuar escribe la frase '%s'\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Encaboxar."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "¿Quies continuar?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Dellos ficheros nun pudieron descargase"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Descarga completa y en mou de sólo descarga"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing y cambéu de mediu nun ta sofitao actualmente"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Nun pudieron iguase los paquetes que falten."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Encaboxando la instalación."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"El siguiente paquete desapareció del sistema como\n"
+"tolos ficheros fueron sobroescritos por otros paquetes:"
+msgstr[1] ""
+"Los siguientes paquetes desaparecieron del sistema como\n"
+"tolos ficheros fueron sobroescritos por otros paquetes:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Nota: Esto faise automáticamente y baxo demanda por dpkg."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "Suponse que nun vamos esborrar coses; nun pue entamase AutoRemover"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Hmm, paez que AutoRemover destruyó daqué, lo que nun tendría\n"
+"por qué pasar. Por favor, unvía un informe de fallu escontra apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Error internu, AutoRemover rompió coses"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "El siguiente paquete instalóse mou automáticu y yá nun se necesita:"
+msgstr[1] ""
+"Los siguientes paquetes instaláronse de manera automática y ya nun se "
+"necesiten:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "El paquete %lu instalóse de mou automáticu y yá nun se necesita.\n"
+msgstr[1] ""
+"Los paquetes %lu instaláronse de manera automática y ya nun se necesiten\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Usa '%s' pa desinstalalos."
+msgstr[1] "Usa '%s' pa desinstalalos."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Instalaránse los siguientes paquetes extra:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Paquetes afalaos:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Paquetes encamentaos"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "Saltando %s, ya ta instalau y la actualización nun ta activada.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr "Saltando %s, nun ta instaláu y namái se requieren anovamientos.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "La reinstalación de %s nun ye dable, nun pue descargase.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s yá ta na versión más nueva.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s axustáu como instaláu manualmente.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Esbillada la versión %s (%s) pa %s\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Esbillada la versión %s (%s) pa %s\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"NOTA: ¡Esto sólo ye una simulación!\n"
+" %s necesita privilexos de root pa la execución real.\n"
+" ¡Ten tamién en cuenta que'l bloquéu ta desactiváu,\n"
+" asina que nun dependen de la pertinencia de la verdadera situación "
+"actual!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Instaláu]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [Instaláu]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [Instaláu]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [Instaláu]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "pero %s ta instaláu"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "pero %s ta pa instalar"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "pero nun ye instalable"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "pero ye un paquete virtual"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "pero nun va instalase"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "pero nun ta instaláu"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " o"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Los siguientes paquetes nun cumplen dependencies:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Van instalase los siguientes paquetes NUEVOS:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Los siguientes paquetes van DESANICIASE:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Los siguientes paquetes tan reteníos:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Los siguientes paquetes van actualizase:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Los siguientes paquetes van DESACTUALIZASE:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Van camudase los siguientes paquetes reteníos:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (por %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"AVISU: Los siguientes paquetes esenciales van desaniciase.\n"
+"¡Esto NUN hai que facelo si nun sabes esautamente lo que faes!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu actualizaos, %lu nuevos instalaos, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu reinstalaos, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu desactualizaos, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu para desaniciar y %lu nun actualizaos.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu nun instalaos dafechu o desaniciaos.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[S/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[s/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "S"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "Has de dar polo menos un patrón de gueta"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "El ficheru de paquetes %s nun ta sincronizáu."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Ficheros de paquete:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+"La caché nun ta sincronizada, nun puede facese x-ref a un ficheru de paquete"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Paquetes na chincheta:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Instaláu: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Candidatu: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(dengún)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Tabla de versiones:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Nun pudo alcontrase dengún paquete por regex '%s'"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Nun pudo alcontrase dengún paquete por regex '%s'"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Nun pudo alcontrase dengún paquete por regex '%s'"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Tomando '%s' como paquetes d'oríxenes en llugar de '%s'\n"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "Inorar versión non disponible de '%s' del paquete '%s'"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Has de conseñar polo menos un paquete p'algamar so fonte"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Nun pudo alcontrase un paquete fonte pa %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"AVISU: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Por favor, usa:\n"
+"bzr get %s\n"
+"pa baxar los caberos anovamientos (posiblemente tovía nun sacaos) pal "
+"paquete.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Saltando'l ficheru yá descargáu '%s'\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Hai falta descargar %sB/%sB d'archivos fonte.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Hai falta descargar %sB d'archivos fonte.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Fonte descargada %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Falló la descarga de dellos archivos."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Saltando'l desempaquetáu de la fonte yá desempaquetada en %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Falló la orde de desempaquetáu '%s'.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Comprueba qu'el paquete 'dpkg-dev' ta instaláu.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Falló la orde build '%s'.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Nun pudo algamase información de dependencies de construcción pa %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s nun tien dependencies de construcción.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Hai que conseñar polo menos un paquete pa verificar les dependencies de "
+"construcción"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Fallu al procesar les dependencies de construcción"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Fallu al procesar les dependencies de construcción"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Nun pudo renomase %s como %s"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "El paquete %s versión %s nun cumple una dependencia:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "La orde update nun lleva argumentos"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "La orde update nun lleva argumentos"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Total de nomes de paquetes: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Total de cadarmes de paquetes: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Paquetes normales: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Paquetes virtuales puros: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Paquetes virtuales cenciellos: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Paquetes virtuales amestaos: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Falten: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Versiones distintes en total: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Descripciones distintes en total: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Dependencies totales: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Rellaciones versión/ficheru en total: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Rellaciones descripción/ficheru en total: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Mapes de provisiones en total: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Cadenes globalizaes en total: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Espaciu ociosu en total: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Informe del total d'espaciu: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Amuesa los rexistros de fonte"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Restola na llista de paquetes por el patrón d'una espresión regular"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Amuesa la información de dependencies en bruto d'un paquete"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Amuesa la información de dependencies inverses d'un paquete"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Amuesa un rexistru lleíble pal paquete"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Llista los nomes de tolos paquetes nel sistema"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Amuesa los axustes de les normes"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Da-y un nome a esti discu, como 'Debian 5.0.3 Discu 1'"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Inxerta un discu nel preséu y calca intro"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Falló al montar '%s' a '%s'"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Repite'l procesu colos demás CDs del conxuntu."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Argumentos non empareyaos"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Usu: apt-config [opciones] orde\n"
+"\n"
+"apt-config ye una ferramienta pa lleer el ficheru de configuración d'APT.\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Usu: apt-extracttemplates ficheru1 [ficheru2 ...]\n"
+"\n"
+"apt-extracttemplates ye un preséu pa sacar información de\n"
+"configuración y plantíes de paquetes de debian.\n"
+"\n"
+"Opciones:\n"
+"-h Esti testu d'aida.\n"
+"-t Define'l direutoriu temporal\n"
+"-c=? Llei esti ficheru de configuración\n"
+"-o=? Afita una opción de configuración arbitraria, p. ej. -o dir::cache=/"
+"tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Nun se pue alcontrar la versión de debconf. ¿Ta instaláu debconf?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Nun pudo alcontrase'l paquete %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s axustáu como instaláu automáticamente.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Error internu, l'iguador de problemes frañó coses"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Módulos sofitaos:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Usu: apt-get [opciones] comandu\n"
+" apt-get [opciones] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [opciones] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get ye una interface de llínia de comandos simple pa baxar ya\n"
+"instalar paquetes. L'usu más frecuente de comandos ye p'anovar\n"
+"ya instalar.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Algamar nueva llista de paquetes"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Facer una anovación"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Instalar nuevos paquetes (pkg ye libc6 non libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Desaniciar paquetes"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Quitar y desaniciar paquetes"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Desaniciar automáticamente tolos paquetes non usaos"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Actualización de la distribución, ver apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Siguir seleiciones dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Configurar dependencies pa los paquetes fonte"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Esborrar los ficheros de ficheros baxaos"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Esborrar ficheros de ficheros vieyos baxaos"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Verificar que nun hai dependencies frayaes"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Baxar fonte del ficheru"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "Has de conseñar polo menos un paquete p'algamar so fonte"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Usu: apt-extracttemplates ficheru1 [ficheru2 ...]\n"
+"\n"
+"apt-extracttemplates ye un preséu pa sacar información de\n"
+"configuración y plantíes de paquetes de debian.\n"
+"\n"
+"Opciones:\n"
+"-h Esti testu d'aida.\n"
+"-t Define'l direutoriu temporal\n"
+"-c=? Llei esti ficheru de configuración\n"
+"-o=? Afita una opción de configuración arbitraria, p. ej. -o dir::cache=/"
+"tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Usu: apt-extracttemplates ficheru1 [ficheru2 ...]\n"
+"\n"
+"apt-extracttemplates ye un preséu pa sacar información de\n"
+"configuración y plantíes de paquetes de debian.\n"
+"\n"
+"Opciones:\n"
+"-h Esti testu d'aida.\n"
+"-t Define'l direutoriu temporal\n"
+"-c=? Llei esti ficheru de configuración\n"
+"-o=? Afita una opción de configuración arbitraria, p. ej. -o dir::cache=/"
+"tmp\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "pero nun ta instaláu"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s axustáu como instaláu manualmente.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s axustáu como instaláu automáticamente.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s yá ta na versión más nueva.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s yá ta na versión más nueva.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "%s axustáu como instaláu manualmente.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Nun pudo abrise %s"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "%s axustáu como instaláu automáticamente.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "Comprueba qu'el paquete 'dpkg-dev' ta instaláu.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "%s axustáu como instaláu automáticamente.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "%s axustáu como instaláu manualmente.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "¡Rexistru de paquetes desconocíu!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "Lleendo llista de paquetes"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "Paquetes na chincheta:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Paquetes frañaos"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "%s axustáu como instaláu manualmente.\n"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "Lleendo información d'estáu"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "¡Mal axuste por omisión!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Calca Intro pa continuar."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "¿Quies desaniciar los ficheros .deb descargaos previamente?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr ""
+"Ocurrieron dellos errores al desempaquetar. Los paquetes que s'instalaron "
+"configurarse'l"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "van configurase. Esto pue causar errores duplicaos"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"o fallos causaos por dependencies que nun tán. Esto ta BIEN, sólo los fallos"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"enriba d'esti mensaxe son importante. Por favor, íguales y executa [I]nstall "
+"otra vuelta"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Fusionando información disponible"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "La llista d'estensión de paquetes ye enforma llarga"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Error al procesar el direutoriu %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "La llista d'estensión de fontes ye enforma llarga"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Error al escribir la cabecera al ficheru de conteníos"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Error al procesar conteníos %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Uso: apt-ftparchive [escoyetes] orde\n"
+"Ordes: packages camin-binariu [ficheru-disvíos [prefixu-camin]]\n"
+" sources camin-fonte [ficheru-disvíos [prefixu-camin]]\n"
+" contents camin\n"
+" release camin\n"
+" generate config [grupos]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive xenera índices p'archivos de Debian. Sofita dellos\n"
+"estilos de xeneración de reemplazos pa dpkg-scanpackages y\n"
+"dpkg-scansources, dende los automatizáos dafechu a los funcionales .\n"
+"\n"
+"apt-ftparchive xenera ficheros Package d'un árbol de .debs. El ficheru\n"
+"Package tien los conteníos de tolos campos de control de cada paquete,\n"
+"neto que la suma MD5 y el tamañu del ficheru. Puede usase un ficheru\n"
+"de disvíos pa forzar el valor de Priority y Section.\n"
+"\n"
+"De mou asemeyáu, apt-ftparchive xenera ficheros Sources pa un árbol\n"
+"de .dscs. Puede utilizase la opción --source-override pa conseñar un\n"
+"ficheru de disvíu de fonte.\n"
+"\n"
+"Les ordes «packages» y «sources» han d'executase na raiz de l'árbol.\n"
+"BinaryPath tien qu'apuntar a la base de la gueta recursiva, y el ficheru\n"
+"de disvíos tien que contener les marques de los disvíos. El prefixu de\n"
+"camín, si esiste, améstase a los campos de nome de ficheru. Darréu,\n"
+"un exemplu d'usu basáu nos archivos de Debian:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Escoyetes:\n"
+" -h Esti testu d'aida\n"
+" --md5 Xenerar control MD5 \n"
+" -s=? Ficheru de desvíu de fontes\n"
+" -q Sele\n"
+" -d=? Seleiciona la base de datos de caché opcional \n"
+" --no-delink Activa'l mou de depuración de desenllaces\n"
+" --contents Xenerar ficheru de conteníos de control\n"
+" -c=? Lleer esti ficheru de configuración\n"
+" -o=? Afita una escoyeta de configuración propia"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Nun concasó denguna seleición"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Falten dellos ficheros nel grupu de ficheros de paquete `%s'"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "La BD corrompiose, ficheru renomáu como %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "La DB ye antigua, tentando actualizar %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"El formatu de la base de datos nun ye válidu. Si anovaste dende una versión "
+"anterior d'apt, desanicia y recrea la base de datos."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Nun pudo abrise'l ficheru de BD %s: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Nun pudo lleese l'enllaz %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "L'archivu nun tien rexistru de control"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Nun pudo algamase un cursor"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Nun pudo allugase memoria"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Algoritmu de compresión desconocíu '%s'"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "La salida comprimida %s necesita un xuegu de compresión"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Falló criar un tubu IPC al soprocesu"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Nun pudo biforcase"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Comprimir fíu"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Error internu, nun pudo criase %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Fallu na ES al soprocesu/ficheru"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Nun pudo lleese al computar MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Nun pudo abrise %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Saltu mal formáu %s llinia %lu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Nun pudo lleese'l ficheru de saltos %s"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Saltu mal formáu %s llinia %lu #1"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Saltu mal formáu %s llinia %lu #2"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Saltu mal formáu %s llinia %lu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "A: Nun pudo lleese'l direutoriu %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "A: Nun pudo lleese %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "A: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: Errores aplicables al ficheru "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Nun pudo resolvese %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Falló'l percorríu pol árbol"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Nun pudo abrise %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " Desenllazar %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Falló enllazar enllazr %s a %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " Alcanzose'l llímite of %sB de desenllaz.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "L'archivu nun tien el campu paquetes"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s nun tien la entrada saltos\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " el curiador de %s ye %s y non %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s nun tien la entrada saltos de fonte\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s tampoco nun tiene una entrada binaria de saltos\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Esperando les testeres"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "El sirvidor HTTP mandó una testera incorreuta de rempuesta"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Fallu na llinia testera"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "El sirvidor HTTP mandó una testera incorreuta de Content-Length"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "El sirvidor HTTP mandó una testera incorreuta de Content-Range"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Esti sirvidor HTTP tien rotu'l soporte d'alcance"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Formatu de data desconocíu"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Datos de testera incorreutos"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Fallo la conexón"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Fallu internu"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Nun se pudo lleer la base datos %s del CD-ROM"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Por favor usa apt-cdrom pa facer qu'APT reconoza esti CD. apt-get update nun "
+"se puede usar p'amestar CDs nuevos"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "CD-ROM malu"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Nun se pudo desmontar el CD-ROM de %s; puede que se tea usando entá."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Nun s'atopa'l discu."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Nun s'atopa'l ficheru."
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Coneutando a %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Nun se pudo crear un socket pa %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Nun se pudo coneutar a %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Nun se pudo coneutar a %s:%s (%s); expiró'l tiempu de conexón"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Falló"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Nun se pudo coneutar a %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Coneutando a %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Nun se pudo resolver '%s'"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Fallu temporal al resolver '%s'"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Daqué raro asocedió resolviendo '%s:%s' (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Daqué raro asocedió resolviendo '%s:%s' (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Nun pudo coneutase a %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Falló al lleer"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "URI malu, los URIS llocales nun pueden entamar por //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Entrando"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Nun se pudo determinar el nome del par"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Nun se pudo determinar el nome llocal"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "El sirvidor refugó la conexón, y dixo: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "L'usuariu (USER) falló; el sirvidor dixo: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "La contraseña (PASS) falló; el sirvidor dixo: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Especificóse un sirvidor proxy pero non un script d'entrada, Acquire::ftp::"
+"ProxyLogin ta baleru."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Falló la orde '%s' del guión d'entrada; el sirvidor dixo: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "La triba (TYPE) falló; el sirvidor dixo: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Gandió'l tiempu de conexón"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "El sirvidor zarró la conexón"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Una rempuesta revirtió'l buffer."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Corrupción del protocolu"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Nun se pudo crear un socket"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Nun se pudo coneutar el zócalu de datos; gandió'l tiempu de conexón"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Nun se pudo coneutar un socket pasivu."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo nun pudo obtener un zócalu oyente"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Nun se pudo enllazar con un socket"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Nun se pudo escuchar nel socket"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Nun se pudo determinar el nome del socket"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Nun se pudo mandar la orde PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Direición de familia %u desconocida (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT falló; el sirvidor dixo: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Gandió'l tiempu de conexón col zócalu de datos"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Nun se pudo aceptar la conexón"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Hebo un problema al xenerar el hash del ficheru"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Nun se pudo descargar el ficheru; el sirvidor dixo '%s'"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Gandió'l tiempu del zócalu de datos"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Falló la tresferencia de datos; el sirvidor dixo '%s'"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Consulta"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Nun se pudo invocar "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Atopóse polo menos una robla mala."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Fallu internu: Robla bona, pero nun se pudo determinar la so buelga dixital?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Nun pudo executase 'apt-key' pa verificar la robla (¿ta instaláu gnupg?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Fallu desconocíu al executar apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Les siguientes robles nun valieron:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Les robles siguientes nun pudieron verificase porque la to llave pública nun "
+"ta a mano:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Fallu al escribir nel ficheru"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Fallu al lleer nel sirvidor. El llau remotu zarró la conexón."
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Fallu al lleer nel sirvidor"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Fallu al escribir nel ficheru"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Falló la escoyeta"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Gandió'l tiempu de conexón"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Fallu al escribir nel ficheru de salida"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Nun s'alcontró ficheru espeyu '%s'"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Nun s'alcontró ficheru espeyu '%s'"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Nun s'alcontró ficheru espeyu '%s'"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Espeyu: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Nun se pudo afitar la hora de modificación"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Conexón encaboxada prematuramente"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Dependencies incumplíes. Téntalo usando --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr "Habríes d'executar 'apt --fix-broken install' para iguar estos:"
+
+#~ msgid "(not found)"
+#~ msgstr "(nun s'alcontró)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Chincheta de paquetes: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr ""
+#~ "Nun hai clave pública denguna disponible pa les IDs de clave darréu:\n"
+
+#~ msgid "Failed to fetch %s %s\n"
+#~ msgstr "Falló algamar %s %s\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "El direutorio %s ta desviáu"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "La dependencia %s en %s nun puede satisfacese porque nun se puede atopar "
+#~ "el paquete %s"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "La dependencia %s en %s nun puede satisfacese porque nun se puede atopar "
+#~ "el paquete %s"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Nun se pudo satisfacer la dependencia %s pa %s: El paquete instaláu %s ye "
+#~ "enforma nuevu"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "La dependencia %s en %s nun puede satisfacese porque denguna versión "
+#~ "disponible del paquete %s satisfaz los requisitos de versión"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "La dependencia %s en %s nun puede satisfacese porque nun se puede atopar "
+#~ "el paquete %s"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Fallu pa satisfacer la dependencia %s pa %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Les dependencies de construcción de %s nun pudieron satisfacese."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Problema al desenllazar %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Nun pudo desenllazase %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Usu: apt-cache [opciones] orde\n"
+#~ " apt-cache [opciones] show paq1 [paq2 ...]\n"
+#~ "\n"
+#~ "apt-cache ye una ferramienta de baxu nivel usada pa remanar\n"
+#~ "ficheros de caché binarios d'APT y consultar información d'ellos\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Opciones:\n"
+#~ " -h Esti testu d'aida.\n"
+#~ " -p=? La cache de paquetes.\n"
+#~ " -s=? La cache de fontes.\n"
+#~ " -q Desactiva l'indicador de progresu.\n"
+#~ " -i Amuesa sólo les dependencies importantes de la orde incumplida.\n"
+#~ " -c=? Lleer esti ficheru de configuración\n"
+#~ " -o=? Conseña una opción de configuración arbitraria, ex -o dir::cache=/"
+#~ "tmp\n"
+#~ "Ver les páxines del manual apt-cache(8) y apt.conf(5) pa más "
+#~ "información.\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Opciones:\n"
+#~ " -h Esti testu d'aida.\n"
+#~ " -c=? Llee esti ficheru de configuración\n"
+#~ " -o=? Conseña una opción de configuración arbitraria, p. ex.\n"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Usu: apt-sortpkgs [opciones] ficheru1 [ficheru2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs ye un preséu cenciellu pa tresnar ficheros de paquetes.\n"
+#~ "La opción -s úsase pa indicar qué triba de ficheru ye.\n"
+#~ "\n"
+#~ "Opciones:\n"
+#~ "-h Esti testu d'aida.\n"
+#~ "-s Usa ordenamientu de ficheros fonte\n"
+#~ "-c=? Llei esti ficheru de configuración\n"
+#~ "-o=? Afita una opción de configuración arbitraria, p. ej. -o dir::\n"
+#~ "cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Falló el procesu fíu"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Has de conseñar polo menos un paquete p'algamar so fonte"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Fallu al crear les tuberíes"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Fallu al executar gzip "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s pa %s compiláu en %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Nun pudo criase FICHERU*"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Llinia %lu mal formada na llista d'oríxenes %s (analís d'URI)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "Llinia %lu mal formada na llista d'oríxe %s ([opción] nun parcheable)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr ""
+#~ "Llinia %lu mal formada na llista d'oríxenes %s ([option] enforma curtia)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr ""
+#~ "Llinia %lu mal formada na llista d'oríxenes %s ([%s] nun ye una "
+#~ "asignación)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr ""
+#~ "Llinia %lu mal formada na llista d'oríxenes %s ([%s] nun tien clave)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "Llinia %lu mal formada na llista d'oríxenes %s ([%s] clave %s nun tien "
+#~ "valor)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Llinia %lu mal formada na llista d'oríxenes %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Llinia %lu mal formada na llista d'oríxenes %s (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Llinia %lu mal formada na llista d'oríxenes %s (analís d'URI)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "Llinia %lu mal formada na llista d'oríxenes %s (dist absoluta)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "Llinia %lu mal formada na llista d'oríxenes %s (analís de dist)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr ""
+#~ "Al procesar dependencies de ficheros nun s'alcontró el paquete %s %s"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Nun se puede lleer la llista de paquetes d'oríxenes %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Recoyendo ficheros qu'apurren"
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Nun se pudo parchear el ficheru release %s"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "El bloque de fornidor %s nun contién una buelga dixital"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Espaciu de dependencies de versión en total: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Nun hai espaciu llibre bastante en %s"
+
+#~ msgid "Done"
+#~ msgstr "Fecho"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "L'aniellu de claves nun s'instaló en %s."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Error internu, AllUpgrade rompió coses"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s nun ye un paquete DEB válidu."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Usando el puntu de montaxe de CD-ROM %s\n"
+#~ "Montando el CD-ROM\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Nun pudo parchease %s con mmap y col usu de la operación de ficheru - el "
+#~ "parche parez corruptu."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Nun pudo parchease %s con mmap (pero nun ye un fallu especificu de mmap) "
+#~ "- el parche parez corruptu."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr "Inorar release destín non disponible '%s' pal paquete '%s'"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Esti nun ye un ficheru DEB válidu, falta'l miembru '%s', '%s' o '%s'"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "La suma MD5 nun concasa"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Nun pudo alcontrase un ficheru pal paquete %s. Esto puede significar que "
+#~ "necesites iguar manualmente esti paquete"
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Nun puede escribise nel rexistru, falló openpty() (¿/dev/pts nun ta "
+#~ "montáu?)\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Saltando'l ficheru non esistente %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Nun ye a desaniciar %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Nun ye a crear %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Nun ye a lleer %s"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr ""
+#~ "Los direutorios info y temp tienen de tar nel mesmu sistema de ficheros"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Fallu al camudar al direutoriu d'alministración %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Fallu internu al obtener un Nome de Paquete"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Lleendo llistáu de ficheros"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Nun pude abrir el ficheru de llista '%sinfo/%s'. ¡Si nun yes a "
+#~ "restablecer esti ficheru entós crea ún baleru y darréu reinstala la mesma "
+#~ "versión del paquete!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Fallu al lleer el ficheru de llista %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Fallu internu al obtener un nodu"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Fallu al abrir el ficheru de desviación %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "El ficheru de desviación ta tollíu"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Llinia inválida nel ficheru de desviación: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Fallu internu al amestar una desviación"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "El caché del paquete tien d'entamase primero"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Fallu al atopar un paquete: Testera, desplazamientu %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Estaya mala del ConfFile nel ficheru d'estñau. Desplazamientu %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Fallu al lleer Md5. Desplazamientu %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Nun fui a camudar a %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Nun fui a atopar un ficheru de control válidu"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Nun se pudo abrir una tubería pa %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Fallu de llectura dende'l procesu %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Obtúvose una sola llinia de testera penriba de %u carauteres"
+
+#~ msgid "Note: This is done automatic and on purpose by dpkg."
+#~ msgstr "Nota: Esto faise automáticamente y baxo demanda por dpkg."
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Saltu mal formáu %s llinia %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Saltu mal formáu %s llinia %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Saltu mal formáu %s llinia %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "descompresor"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "lleíos, entá tenía de lleer %lu pero nun queda nada"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "escritos, entá tenía d'escribir %lu pero nun pudo facerse"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "Nun pudó facese la configuración inmediatamente nel desempaquetáu '%s'. "
+#~ "Por favor, mira man 5 apt.conf embaxo APT::Immediate-Configure for "
+#~ "details."
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Hebo un error al procesar %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Hebo un error al procesar %s (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Hebo un error al procesar %s (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Hebo un error al procesar %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Hebo un error al procesar %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Hebo un error al procesar %s (NewVersion%d)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Hebo un error al procesar %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Hebo un error al procesar %s (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Hebo un error al procesar %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Hebo un error al procesar %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Fallu internu, nun fui a atopar el miembru"
+
+#~ msgid "Internal error, group '%s' has no installable pseudo package"
+#~ msgstr "Fallu internu, grupu '%s' nun tien paquete pseudo instalable"
+
+#~ msgid "Release file expired, ignoring %s (invalid since %s)"
+#~ msgstr "El ficheru release espiró, inorando %s (nun válidu dende %s)"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr ""
+#~ "E: Llista d'argumentos d'Acquire::gpgv::Options demasiao llarga. Colando."
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "Hebo un error al procesar %s (NewVersion2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "Llinia %u mal formada na llista d'oríxenes %s (id del proveedor)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "Nun se pudo acceder al aniellu de claves '%s'"
+
+#~ msgid "Could not patch file"
+#~ msgstr "Nun fui quien a parchiar el ficheru"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "No source package '%s' picking '%s' instead\n"
+#~ msgstr "Nenguna fonte de paquetes'% s' esbillada '% s' ehí\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "Procesando disparadores pa %s"
diff --git a/po/bg.po b/po/bg.po
new file mode 100644
index 000000000..2bba14258
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,4347 @@
+# translation of apt-all.pot to Bulgarian
+# Bulgarian translation of apt.
+# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the apt package.
+#
+# Yavor Doganov <yavor@doganov.org>, 2006.
+# Damyan Ivanov <dmn@debian.org>, 2008, 2009, 2010, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 0.7.21\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2012-06-25 17:23+0300\n"
+"Last-Translator: Damyan Ivanov <dmn@debian.org>\n"
+"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
+"Language: bg\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Ðевалиден Ð¿Ð¾Ð´Ð¿Ð¸Ñ Ð½Ð° архива"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Грешка при четене на заглавната чаÑÑ‚ на елемента на архива"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Ðевалидна заглавна чаÑÑ‚ %s на елемента на архива"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Ðевалидна заглавна чаÑÑ‚ на елемента на архива"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Ðрхивът е твърде кратък"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "ÐеуÑпех при четенето на заглавните чаÑти на архива"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Ðе е намерен oторизационен Ð·Ð°Ð¿Ð¸Ñ Ð·Ð°: %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Развален архив"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "ÐевÑрна контролна Ñума на tar, развален архив"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Ðепозната заглавна чаÑÑ‚ на TAR тип %u, елемент %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Това не е валиден DEB архив, липÑва елемент „%s“"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Вътрешна грешка, неуÑпех при намирането на ÑÑŠÑтавна чаÑÑ‚ %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Контролен файл, невъзможен за анализ"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "ÐеуÑпех при Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° файл %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "ÐеуÑпех при затварÑнето на файл %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "ПътÑÑ‚ %s е твърде дълъг"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Разпакетиране на %s повече от веднъж"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "ДиректориÑта %s е отклонена"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Пакетът Ñе опитва да пише в целта за отклонение %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "ПътÑÑ‚ за отклонение е твърде дълъг"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Грешка при получаването на атрибути за %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "ÐеуÑпех при преименуването на %s на %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "ДиректориÑта %s Ñе Ð·Ð°Ð¼ÐµÐ½Ñ Ñ Ð½Ðµ-директориÑ"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "ÐеуÑпех при намирането на възел в Ð½ÐµÐ³Ð¾Ð²Ð¸Ñ Ñ…ÐµÑˆ"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "ПътÑÑ‚ е твърде дълъг"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Файловете Ñе заменÑÑ‚ ÑÑŠÑ Ñъдържанието на пакета %s без верÑиÑ"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Файл %s/%s Ð·Ð°Ð¼ÐµÐ½Ñ Ñ‚Ð¾Ð·Ð¸ в пакет %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "ÐеуÑпех при четенето на %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "ÐеуÑпех при получаването на атрибути за %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "Извикан е DropNode за вÑе още използван възел"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Грешка при намирането на хеш-елемента!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "ÐеуÑпех при уÑтановÑване на отклонението"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Вътрешна грешка в AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Опит за изменение на отклонение, %s -> %s и %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Двойно добавÑне на отклонение %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Дублиран конфигурационен файл %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "ДиректориÑта %s е отклонена"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "ДиректориÑта %s е отклонена"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "ДиректориÑта %s е отклонена"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "ДиректориÑта %s е отклонена"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "ДиректориÑта %s е отклонена"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "ÐеуÑпех при прочитането на връзка %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "ÐеÑъответÑтвие на контролната Ñума"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "преименуването Ñе провали, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "ÐеÑъответÑтвие на размера"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "Ðевалидна Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Грешка при запиÑ"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"Грешка при проверка на Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñ. Хранилището не е обновено и ще Ñе "
+"използват Ñтарите индекÑни файлове. Грешка от GPG: %s: %s\n"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "Грешка от GPG: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"Ðе може да Ñе открие елемент „%s“ във файла Release (объркан ред в sources."
+"list или повреден файл)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"Файлът ÑÑŠÑ Ñлужебна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° „%s“ е оÑтарÑл (валиден до %s). ÐÑма да Ñе "
+"прилагат обновÑÐ²Ð°Ð½Ð¸Ñ Ð¾Ñ‚ това хранилище."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Конфликт в диÑтрибуциÑта: %s (очаквана: %s, намерена: %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"ÐеуÑпех при намирането на файл за пакет %s. Това може да означава, че Ñ‚Ñ€Ñбва "
+"ръчно да оправите този пакет (поради пропуÑната архитектура)."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr "Ðе е открит източник, от който да Ñе изтегли верÑÐ¸Ñ â€ž%s“ на „%s“"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"ИндекÑните файлове на пакета Ñа повредени. ÐÑма поле Filename: за пакет %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Журнал на промените в %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "ÐеуÑпех при намирането на драйвер за метод %s."
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "Проверете дали имате инÑталиран пакета „dpkg-dev“.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Методът %s не Ñтартира правилно"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "Сложете диÑка, озаглавен „%s“ в уÑтройÑтво „%s“ и натиÑнете „Enter“."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "ДиректориÑта ÑÑŠÑ ÑпиÑъци %spartial липÑва."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "ДиректориÑта за архиви %spartial липÑва."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "ÐеуÑпех при заключване на директориÑта %s"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "Ðе Ñе поддържа индекÑен файл от типа „%s“"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "ÐеуÑпех при преминаването в %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "ИзтеглÑне на файл %li от %li (оÑтават %s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "ИзтеглÑне на файл %li от %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"Пакетът %s Ñ‚Ñ€Ñбва да бъде преинÑталиран, но не може да Ñе намери архив за "
+"него."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Грешка, pkgProblemResolver::Resolve генерира повреди, това може да е "
+"причинено от задържани пакети."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr ""
+"ÐеуÑпех при коригирането на проблемите, имате задържани Ñчупени пакети."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+"СпиÑъците Ñ Ð¿Ð°ÐºÐµÑ‚Ð¸ или файлът за ÑÑŠÑтоÑние не можаха да бъдат анализирани "
+"или отворени."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr ""
+"Може да иÑкате да изпълните „apt-get update“, за да коригирате тези проблеми"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "СпиÑъкът Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ не можа да бъде прочетен."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Грешка при компилирането на регулÑÑ€Ð½Ð¸Ñ Ð¸Ð·Ñ€Ð°Ð· - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Ðе е намерено издание „%s“ на „%s“"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Ðе е намерена верÑÐ¸Ñ â€ž%s“ на „%s“"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "ÐеуÑпех при намиране на задача „%s“"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Ðе Ñа намерен пакети, отговарÑщ на регулÑÑ€Ð½Ð¸Ñ Ð¸Ð·Ñ€Ð°Ð· „%s“"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Ðе Ñа намерен пакети, отговарÑщ на регулÑÑ€Ð½Ð¸Ñ Ð¸Ð·Ñ€Ð°Ð· „%s“"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Пакетът %s не може да бъде намерен"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr "Ðе е възможно избиране на верÑÐ¸Ñ Ð·Ð° пакета „%s“ понеже е виртуален"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"Ðе е възможно избиране на на поÑледната верÑÐ¸Ñ Ð·Ð° пакета „%s“, защото е "
+"виртуален"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+"Ðе е възможно избиране на кандидат-верÑÐ¸Ñ Ð·Ð° пакета „%s“, защото нÑма "
+"подходÑщ кандидати"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"Ðе е възможно избиране на инÑталирана верÑÐ¸Ñ Ð½Ð° пакета „%s“, защото не е "
+"инÑталиран"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"Ðе е възможно избиране на инÑталирана или кандидат верÑÐ¸Ñ Ð·Ð° пакета „%s“ "
+"понеже той нÑма нито едната"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Ред %u в ÑпиÑъка Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ %s е твърде дълъг."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Демонтиране на CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Използване на точка за монтиране на CD-ROM %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Чакане за диÑк...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Монтиране на CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Идентифициране..."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Запазен етикет: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Сканиране на диÑка за индекÑни файлове...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Ðамерени Ñа %zu индекÑа на пакети, %zu индекÑа на пакети Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код, %zu "
+"индекÑа Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ и %zu подпиÑа.\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Ðе Ñа намерени файлове Ñ Ð¿Ð°ÐºÐµÑ‚Ð¸. Мое би диÑкът не е Ñ Ð”ÐµÐ±Ð¸Ð°Ð½ или е за "
+"погрешна компютърна архитектура."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Ðамерен е етикет „%s“\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Това не е валидно име, опитайте отново.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Ðаименование на този диÑк: \n"
+"„%s“\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Копиране на ÑпиÑъците Ñ Ð¿Ð°ÐºÐµÑ‚Ð¸..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Запазване на Ð½Ð¾Ð²Ð¸Ñ ÑпиÑък Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "ЗапиÑите в ÑпиÑъка Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ за този диÑк Ñа:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "ÐеуÑпех при получаването на атрибути на %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "ÐеуÑпех при намирането на атрибутите на точка за монтиране %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "ÐеуÑпех при намирането на атрибутите на cdrom"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "ÐеизвеÑтна Ð¾Ð¿Ñ†Ð¸Ñ Ð·Ð° команден ред „%c“ [от %s]."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "ОпциÑта за команден ред %s не е разпозната"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "ОпциÑта за команден ред %s не е булева"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "ÐžÐ¿Ñ†Ð¸Ñ %s изиÑква аргумент."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "ÐžÐ¿Ñ†Ð¸Ñ %s: Значението Ñ‚Ñ€Ñбва да има =<val>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "ÐžÐ¿Ñ†Ð¸Ñ %s изиÑква аргумент цÑло чиÑло, не „%s“"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "ÐžÐ¿Ñ†Ð¸Ñ â€ž%s“ е твърде дълга"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "СмиÑълът %s не е ÑÑен, опитайте true или false."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Ðевалидна Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "ÐеизвеÑтен тип на абревиатура: „%c“"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "ОтварÑне на конфигурационен файл %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Синтактична грешка %s:%u: Ð’ началото на блока нÑма име."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Синтактична грешка %s:%u: Лошо форматиран таг"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Синтактична грешка %s:%u: Излишни Ñимволи Ñлед ÑтойноÑтта"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"Синтактична грешка %s:%u: Директиви могат да Ñе задават Ñамо в най-горното "
+"ниво"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Синтактична грешка %s:%u: Твърде много вложени „include“"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Синтактична грешка %s:%u: Извикан „include“ оттук"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Синтактична грешка %s:%u: Ðеподдържана директива „%s“"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Синтактична грешка %s:%u: директивата clear изиÑква аргумент дърво от опции"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Синтактична грешка %s:%u: Излишни Ñимволи в ÐºÑ€Ð°Ñ Ð½Ð° файла"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Проблем при изтриване на файла %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr ""
+"Ðе Ñе използва заключване за файл за заключване %s, който е Ñамо за четене"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "ÐеуÑпех при отварÑнето на файл за заключване %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr ""
+"Ðе Ñе използва заключване за файл за заключване %s, който е монтиран по NFS"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "ÐеуÑпех при доÑтъпа до заключване %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr "Ðе може да Ñе Ñъздаде ÑпиÑък от файлове, защото „%s“ не е директориÑ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr "ПропуÑкане на „%s“ в директориÑта „%s“, понеже не е обикновен файл"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr "ПропуÑкане на файла „%s“ в директориÑта „%s“, понеже нÑма разширение"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"ПропуÑкане на файла „%s“ в директориÑта „%s“, понеже разширението му е грешно"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Изчака Ñе завършването на %s, но той не беше пуÑнат"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Ðарушение на защитата на паметта (segmentation fault) в подпроцеÑа %s."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Под-процеÑÑŠÑ‚ %s получи Ñигнал %u."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "ПодпроцеÑÑŠÑ‚ %s върна код за грешка (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "ПодпроцеÑÑŠÑ‚ %s завърши неочаквано"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Грешка при четене"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Грешка при запиÑ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Проблем при затварÑне на компреÑираниÑÑ‚ файл %s (gzip)"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "ÐеуÑпех при Ñъздаването на Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ IPC"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "ÐеуÑпех при изпълнението на компреÑиращата програма "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "ÐеуÑпех при отварÑнето на файла %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "ÐеуÑпех при отварÑнето на файлов манипулатор %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr ""
+"грешка при четене, вÑе още има %llu за четене, но нÑма нито един оÑтанал"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "грешка при запиÑ, вÑе още име %llu за запиÑ, но не уÑпÑ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Проблем при затварÑне на файла %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Проблем при преименуване на файла %s на %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Проблем при Ñинхронизиране на файла"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "ÐеуÑпех при получаването на атрибути за %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "ÐеуÑпех при запиÑа на %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Ðевъзможно е да Ñе прехвърли в паметта празен файл"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "ÐеуÑпех при прехвърлÑнето в паметта на %llu байта"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "ÐеуÑпех при дублиране на файлов манипулатор %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "ÐеуÑпех при затварÑне на mmap"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "ÐеуÑпех при Ñинхронизирането на mmap"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "ÐеуÑпех при прехвърлÑнето в паметта на %lu байта"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "ÐеуÑпех при отрÑзване на ÐºÑ€Ð°Ñ Ð½Ð° файла"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"ÐедоÑтатъчна памет за MMap. Увеличете ÑтойноÑтта на променливата APT::Cache-"
+"Start. Текуща ÑтойноÑÑ‚: %lu (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"ÐеуÑпех при увеличаване на паметта за MMap. ДоÑтигнато е текущото "
+"ограничение от %lu байта."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"ÐеуÑпех при увеличаване на паметта за MMap. Ðвтоматичното увеличаване е "
+"забранено от потребителÑ."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Грешка!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Готово"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... Готово"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%liд %liч %liм %liÑ"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%liч %liм %liÑ"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%liм %liÑ"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%liÑ"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Изборът %s не е намерен"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "ÐеуÑпех при анализиране на файл Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Във файла Release %s липÑват раздели"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Във файла Release %s липÑва контролна Ñума"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Ðеправилна ÑтойноÑÑ‚ за „%s“ във файла Release %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "ÐеуÑпех при анализирането на пакетен файл %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"ÐеуÑпех при заключване на админиÑтративната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (%s). Може би Ñе "
+"използва от друг процеÑ?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr ""
+"ÐеуÑпех при заключване на админиÑтративната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (%s). Може би липÑват "
+"админиÑтративни права?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"ПроцеÑÑŠÑ‚ dpkg е беше прекъÑнат. Проблемът Ñ‚Ñ€Ñбва да Ñе коригира чрез ръчно "
+"изпълнение на „%s“."
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Без заключване"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "ИнÑталиране на %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Конфигуриране на %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Премахване на %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "Окончателно премахване на %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "ОтбелÑзване на изчезването на %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Изпълнение на тригер Ñлед инÑталиране %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "%s е инÑталиран"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "ДиректориÑта „%s“ липÑва"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "ÐеуÑпех при отварÑне на файла „%s“"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "ПодготвÑне на %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Разпакетиране на %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "ПодготвÑне на %s за конфигуриране"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "ПодготвÑне за премахване на %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "%s е премахнат"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Подготовка за пълно премахване на %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "%s е напълно премахнат"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "ÐеуÑпех при запиÑа на %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "ОперациÑта е прекъÑната"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+"Поради доÑтигане на макÑÐ¸Ð¼Ð°Ð»Ð½Ð¸Ñ Ð±Ñ€Ð¾Ð¹ доклади (MaxReports) не е запиÑан нов "
+"доклад за завиÑимоÑтите."
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "отлагане на наÑтройката поради неудовлетворени завиÑимоÑти"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Доклад за завиÑимоÑтите не е запиÑан защото Ñъобщението за грешка е породено "
+"от друга грешка."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Доклад за завиÑимоÑтите не е запиÑан защото грешката е причинена от "
+"недоÑтатъчно диÑково проÑтранÑтво"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Доклад за завиÑимоÑтите не е запиÑан защото грешката е причинена от "
+"недоÑтатъчна оперативна памет"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Доклад за завиÑимоÑтите не е запиÑан защото грешката е причинена от "
+"недоÑтатъчно диÑково проÑтранÑтво"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"Доклад за завиÑимоÑтите не е запиÑан поради входно-изходна грешка Ñ dpkg"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Изграждане на дървото ÑÑŠÑ Ð·Ð°Ð²Ð¸ÑимоÑти"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "ВерÑии кандидати"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Генериране на завиÑимоÑти"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Четене на информациÑта за ÑÑŠÑтоÑнието"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "ÐеуÑпех при отварÑнето на StateFile %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "ÐеуÑпех при Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° временен StateFile %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "Изпращане на Ñценарий към програмата за удовлетворÑване на завиÑимоÑти"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "Изпращане на заÑвка към програмата за удовлетворÑване на завиÑимоÑти"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "Подготовка за приемане на решение"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+"Външната програма за удовлетворÑване на завиÑимоÑти Ñе провали без да изведе "
+"Ñъобщение за грешка"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "ИзпълнÑване на външна програма за удовлетворÑване на завиÑимоÑти"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Execute external planner"
+msgstr "ИзпълнÑване на външна програма за удовлетворÑване на завиÑимоÑти"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send request to planner"
+msgstr "Изпращане на заÑвка към програмата за удовлетворÑване на завиÑимоÑти"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send scenario to planner"
+msgstr "Изпращане на Ñценарий към програмата за удовлетворÑване на завиÑимоÑти"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "External planner failed without a proper error message"
+msgstr ""
+"Външната програма за удовлетворÑване на завиÑимоÑти Ñе провали без да изведе "
+"Ñъобщение за грешка"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "ЗапиÑани Ñа %i запиÑа.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "ЗапиÑани Ñа %i запиÑа Ñ %i липÑващи файла.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "ЗапиÑани Ñа %i запиÑа Ñ %i неÑъответÑтващи файла\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "ЗапиÑани Ñа %i запиÑа Ñ %i липÑващи и %i неÑъответÑтващи файла\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "Ðе е намерен oторизационен Ð·Ð°Ð¿Ð¸Ñ Ð·Ð°: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "ÐеÑъответÑтвие на контролната Ñума за: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Пакетната ÑиÑтема „%s“ не е поддържана"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "ÐеуÑпех при определÑнето на подходÑща пакетна ÑиÑтема"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "ИзпълнÑване на dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"ÐеуÑпех при незабавната наÑтройка на „%s“. За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð²Ð¸Ð¶Ñ‚Ðµ "
+"информациÑта за APT::Immediate-Configure в „man 5 apt.conf“. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "ÐеуÑпех при конфигуриране на „%s“. "
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Ð’ ÑледÑтвие на циклични завиÑимоÑти от типа „В конфликт Ñ/Предварително "
+"завиÑи от“, за да Ñе продължи инÑталациÑта Ñ‚Ñ€Ñбва да Ñе премахне Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¸Ñ "
+"пакет %s. Това чеÑто е лошо, но ако наиÑтина иÑкате да го направите, "
+"активирайте опциÑта APT::Force-LoopBreak."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Празен кеш на пакети"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Файлът за кеш на пакети е повреден"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Файлът за кеш на пакети е неÑъвмеÑтима верÑиÑ"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Тази верÑÐ¸Ñ Ð½Ð° APT не поддържа ÑиÑтема за верÑии „%s“"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Кешът на пакети е бил направен за различна архитектура"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Файлът за кеш на пакети е повреден, твърде малък е"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "ЗавиÑи от"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Предварително завиÑи от"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Предлага Ñе"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Ð’ конфликт Ñ"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Препоръчва Ñе"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "ЗаменÑ"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Чупи"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "ПодобрÑва"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Изважда от употреба"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "важен"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "изиÑкван"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "Ñтандартен"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "допълнителен"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "незадължителен"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Кешът има неÑъвмеÑтима ÑиÑтема за верÑии"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Възникна грешка при обработката на %s (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"Еха, надхвърлихте Ð±Ñ€Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð° на пакети, на който е ÑпоÑобна тази верÑÐ¸Ñ Ð½Ð° "
+"APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Еха, надхвърлихте Ð±Ñ€Ð¾Ñ Ð²ÐµÑ€Ñии, на който е ÑпоÑобна тази верÑÐ¸Ñ Ð½Ð° APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+"Еха, надхвърлихте Ð±Ñ€Ð¾Ñ Ð¾Ð¿Ð¸ÑаниÑ, на който е ÑпоÑобна тази верÑÐ¸Ñ Ð½Ð° APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+"Еха, надхвърлихте Ð±Ñ€Ð¾Ñ Ð·Ð°Ð²Ð¸ÑимоÑти, на който е ÑпоÑобна тази верÑÐ¸Ñ Ð½Ð° APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Четене на ÑпиÑъците Ñ Ð¿Ð°ÐºÐµÑ‚Ð¸"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Входно/изходна грешка при запазването на кеша на пакети Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Ðе Ñе поддържа индекÑен файл от типа „%s“"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"СтойноÑтта „%s“ на APT::Default-Release не е правилна, понеже в източниците "
+"нÑма такова издание"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Ðевалиден Ð·Ð°Ð¿Ð¸Ñ Ð²ÑŠÐ² файла Ñ Ð½Ð°Ñтройки %s, липÑва заглавна чаÑÑ‚ Package"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "ÐеизвеÑтен тип за отбиване %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "ÐÑма указан приоритет (или е нула) на отбиването"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Ðеправилно форматиран override %s, ред %llu #1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "ОтварÑне на %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Лошо форматиран ред %u в ÑпиÑъка Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ %s (тип)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Типът „%s“ на ред %u в ÑпиÑъка Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ %s е неизвеÑтен."
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Лошо форматиран ред %u в ÑпиÑъка Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ %s (тип)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Типът „%s“ на ред %u в ÑпиÑъка Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ %s е неизвеÑтен."
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "ТрÑбва да добавите адреÑи-URI от тип „source“ в sources.list"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "ÐеуÑпех при изтеглÑнето на %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"ÐÑкои индекÑни файлове не можаха да бъдат изтеглени. Те Ñа пренебрегнати или "
+"Ñа използвани по-Ñтари."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "ИзчиÑлÑване на актуализациÑта"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Поп:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Изт:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Игн:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Грш:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Изтеглени %sB за %s (%sB/Ñек)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Ð’ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð° работа]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"СмÑна на ноÑител: Ñложете диÑка Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚\n"
+" „%s“\n"
+"в уÑтройÑтвото „%s“ и натиÑнете „Enter“\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Коригиране на завиÑимоÑтите..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " пропадна."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "ÐеуÑпех при коригирането на завиÑимоÑтите"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "ÐеуÑпех при минимизирането на набора актуализации"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Готово"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+"Възможно е да изпълните „apt --fix-broken install“, за да коригирате тези "
+"неизправноÑти."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Ðеудовлетворени завиÑимоÑти. Опитайте „apt --fix-broken install“ без пакети "
+"(или укажете разрешение)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Избиране на %s за задача „%s“\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Избиране на %s за регулÑрен израз „%s“\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Избиране на %s за регулÑрен израз „%s“\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Пакетът %s е виртуален пакет, оÑигурен от:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [ИнÑталиран]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [верÑиÑта не е кандидат]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "ТрÑбва изрично да изберете един за инÑталиране."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Пакетът %s не е наличен, но е в ÑпиÑъка ÑÑŠÑ Ð·Ð°Ð²Ð¸ÑимоÑти на друг пакет.\n"
+"Това може да означава, че пакета липÑва, оÑтарÑл е, или е доÑтъпен\n"
+"Ñамо от друг източник\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Обаче Ñледните пакети го замеÑтват:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Пакетът „%s“ нÑма кандидат за инÑталиране"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Виртуални пакети като „%s“ не могат да Ñе премахват\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"Пакетът „%s“ не е инÑталиран, така че не е премахнат. Може би имахте предвид "
+"„%s“?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Пакетът „%s“ не е инÑталиран, така че не е премахнат\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Избиране на „%s“ вмеÑто „%s“\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Това APT има Върховни Сили."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "ÐÑма намерени пакети"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "ПРЕДУПРЕЖДЕÐИЕ: Следните пакети не могат да бъдат удоÑтоверени!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Предупреждението за удоÑтоверÑването е пренебрегнато.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "ÐÑкои пакети не можаха да бъдат удоÑтоверени"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "ИнÑталиране на тези пакети без проверка?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Има проблеми и „-y“ е използвано без „--force-yes“"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "ÐеуÑпех при определÑнето на Ñвободното проÑтранÑтво в %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "ÐÑмате доÑтатъчно Ñвободно проÑтранÑтво в %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "ÐеуÑпех при заключването на директориÑта за изтеглÑне"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"ÐÑкои пакети не можаха да бъдат инÑталирани. Това може да означава,\n"
+"че Ñте изиÑкали невъзможна ÑÐ¸Ñ‚ÑƒÐ°Ñ†Ð¸Ñ Ð¸Ð»Ð¸ ако използвате неÑтабилната\n"
+"диÑтрибуциÑ, че нÑкои необходими пакети още не Ñа Ñъздадени или пък\n"
+"Ñа били премеÑтени от Incoming."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr ""
+"Следната Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð¶Ðµ да помогне за намиране на изход от ÑитуациÑта:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Счупени пакети"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"ÐеуÑпех при изтеглÑнето на нÑкои архиви, може да изпълните „apt-get update“ "
+"или да опитате Ñ â€ž--fix-missing“?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Вътрешна грешка, „InstallPackages“ е предизвикано при Ñчупени пакети!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "ТрÑбва да бъдат премахнати пакети, но премахването е изключено."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Има проблеми и „-y“ е използвано без „--force-yes“"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Има проблеми и „-y“ е използвано без „--force-yes“"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Вътрешна грешка, „Ordering“ не завърши"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Странно... Размерите не Ñъвпадат, изпратете е-поща на apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Ðеобходимо е да Ñе изтеглÑÑ‚ %sB/%sB архиви.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Ðеобходимо е да Ñе изтеглÑÑ‚ %sB архиви.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr ""
+"След тази Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ‰Ðµ бъде използвано %sB допълнително диÑково "
+"проÑтранÑтво.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "След тази Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ‰Ðµ бъде оÑвободено %sB диÑково проÑтранÑтво.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "Указано е „Trivial Only“, но това не е тривиална операциÑ."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Да, прави каквото казвам!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Ðа път Ñте да направите нещо потенциално опаÑно.\n"
+"За да продължите, въведете фразата „%s“\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "ПрекъÑване."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "ИÑкате ли да продължите?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "ÐÑкои файлове не можаха да бъдат изтеглени"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "ИзтеглÑнето завърши в режим Ñамо на изтеглÑне"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "„--fix-missing“ и превключване на ноÑители не Ñе поддържа вÑе още"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "ÐеуÑпех при коригирането на липÑващите пакети."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "ПрекъÑване на инÑталирането."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"СледниÑÑ‚ пакет е отÑтранен от ÑиÑтемата поради препокриване на вÑичките му "
+"файлове от други пакети:"
+msgstr[1] ""
+"Следните пакети Ñа отÑтранени от ÑиÑтемата поради препокриване на вÑичките "
+"им файлове от други пакети:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Това Ñе прави автоматично от dpkg."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "Ðе би Ñ‚Ñ€Ñбвало да Ñе изтрива. AutoRemover нÑма да бъде Ñтартиран"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Хм, изглежда AutoRemover Ñкапа нещо, а това не би Ñ‚Ñ€Ñбвало\n"
+"да Ñе Ñлучва. Съобщете за грешка в пакета apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Вътрешна грешка, AutoRemover Ñчупи нещо в ÑиÑтемата"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "СледниÑÑ‚ пакет е бил инÑталиран автоматично и вече не е необходим:"
+msgstr[1] ""
+"Следните пакети Ñа били инÑталирани автоматично и вече не Ñа необходими:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "%lu пакет е бил инÑталиран автоматично и вече не е необходим:\n"
+msgstr[1] ""
+"%lu пакета Ñа били инÑталирани автоматично и вече не Ñа необходими:\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Използвайте „%s“ за да го премахнете."
+msgstr[1] "Използвайте „%s“ за да ги премахнете."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Следните допълнителни пакети ще бъдат инÑталирани:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Предложени пакети:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Препоръчвани пакети:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "ПропуÑкане на %s, вече е инÑталиран и не е маркиран за актуализациÑ.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"ПропуÑкане на %s, който не е инÑталиран при заÑвени Ñамо обновÑваниÑ.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "ПреинÑталациÑта на %s не е възможна, не може да бъде изтеглен.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s вече е най-новата верÑиÑ.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s е отбелÑзан като ръчно инÑталиран.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Избрана е верÑÐ¸Ñ %s (%s) за %s\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Избрана е верÑÐ¸Ñ â€ž%s“ (%s) за „%s“ заради „%s“\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"Забележка: това е Ñамо ÑимулациÑ!\n"
+" %s има нужда от админиÑтративни права за да работи.\n"
+" Заключването е деактивирано, така че не разчитайте\n"
+" на повтарÑемоÑÑ‚ в реална ÑитуациÑ.\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [ИнÑталиран]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [ИнÑталиран]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [ИнÑталиран]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [ИнÑталиран]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "но е инÑталиран %s"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "но ще бъде инÑталиран %s"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "но той не може да бъде инÑталиран"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "но той е виртуален пакет"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "но той нÑма да бъде инÑталиран"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "но той не е инÑталиран"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " или"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Следните пакети имат неудовлетворени завиÑимоÑти:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Следните ÐОВИ пакети ще бъдат инÑталирани:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Следните пакети ще бъдат ПРЕМÐÐ¥ÐÐТИ:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Следните пакети нÑма да бъдат променени:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Следните пакети ще бъдат актуализирани:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Следните пакети ще бъдат ВЪРÐÐТИ КЪМ ПО-СТÐРРВЕРСИЯ:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Следните задържани пакети ще бъдат променени:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (поради %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"ПРЕДУПРЕЖДЕÐИЕ: Следните необходими пакети ще бъдат премахнати.\n"
+"Това ÐЕ би Ñ‚Ñ€Ñбвало да Ñтава оÑвен ако знаете точно какво правите!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu актуализирани, %lu нови инÑталирани, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu преинÑталирани, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu върнати към по-Ñтара верÑиÑ, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu за премахване и %lu без промÑна.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu не Ñа напълно инÑталирани или премахнати.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[Y/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[y/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "Y"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "ТрÑбва да въведете поне един шаблон за Ñ‚ÑŠÑ€Ñене"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "ПакетниÑÑ‚ файл %s не е Ñинхронизиран."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Пакетни файлове:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+"Кешът не е Ñинхронизиран, не може да Ñе изпълни „x-ref“ на пакетен файл"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Отбити пакети:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " ИнÑталирана: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Кандидат: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(нÑма)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Таблица Ñ Ð²ÐµÑ€Ñиите:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Ðе Ñа намерен пакети, отговарÑщ на регулÑÑ€Ð½Ð¸Ñ Ð¸Ð·Ñ€Ð°Ð· „%s“"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Ðе Ñа намерен пакети, отговарÑщ на регулÑÑ€Ð½Ð¸Ñ Ð¸Ð·Ñ€Ð°Ð· „%s“"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Ðе Ñа намерен пакети, отговарÑщ на регулÑÑ€Ð½Ð¸Ñ Ð¸Ð·Ñ€Ð°Ð· „%s“"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Използване на пакет източник „%s“ вмеÑто „%s“\n"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "Игнориране на неÑъщеÑтвуваща верÑÐ¸Ñ â€ž%s“ на пакета „%s“"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "ТрÑбва да укажете поне един пакет за изтеглÑне на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ð¼Ñƒ код"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "ÐеуÑпех при намирането на изходен код на пакет %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"Пакетирането на „%s“ Ñе разработва в ÑиÑтема за контрол на верÑиите „%s“ на "
+"адреÑ:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Използвайте:\n"
+"%s\n"
+"за да изтеглите поÑледните промени в пакета (евентуално в Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð° "
+"разработка).\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "ПропуÑкане на вече Ð¸Ð·Ñ‚ÐµÐ³Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Ðеобходимо е да Ñе изтеглÑÑ‚ %sB/%sB архиви изходен код.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Ðеобходимо е да Ñе изтеглÑÑ‚ %sB архиви изходен код.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "ИзтеглÑне на изходен код %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "ÐеуÑпех при изтеглÑнето на нÑкои архиви."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr ""
+"ПропуÑкане на разпакетирането на вече Ñ€Ð°Ð·Ð¿Ð°ÐºÐµÑ‚Ð¸Ñ€Ð°Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код в %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Командата за разпакетиране „%s“ пропадна.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Проверете дали имате инÑталиран пакета „dpkg-dev“.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Командата за компилиране „%s“ пропадна.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr ""
+"ÐеуÑпех при получаването на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° завиÑимоÑтите за компилиране на %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s нÑма завиÑимоÑти за компилиране.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"ТрÑбва да укажете поне един пакет за проверка на завиÑимоÑти за компилиране"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"ЛипÑва Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° архитектурата %s. Прегледайте информациÑта за APT::"
+"Architectures в apt.conf(5)."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "ÐеуÑпех при обработката на завиÑимоÑтите за компилиране"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "ÐеуÑпех при обработката на завиÑимоÑтите за компилиране"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "ÐеуÑпех при преименуването на %s на %s"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Пакетът %s верÑÐ¸Ñ %s има неудовлетворена завиÑимоÑÑ‚:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Командата „update“ не възприема аргументи"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "Командата „update“ не възприема аргументи"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Общо имена на пакети : "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Общо пакетни Ñтруктури: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Ðормални пакети: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " ЧиÑти виртуални пакети: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Единични виртуални пакети: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " СмеÑени виртуални пакети: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " ЛипÑващи: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Общо уникални верÑии: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Общо уникални опиÑаниÑ: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Общо завиÑимоÑти: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Общо Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ð²ÐµÑ€ÑиÑ/файл: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Общо Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ð¾Ð¿Ð¸Ñание/файл: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Общо Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ â€žÐžÑигурÑва“: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Общо разгърнати низове: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Общо празно проÑтранÑтво: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Общо отчетено проÑтранÑтво: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr "Тази командата е оÑтарÑла. Използвайте „apt-mark showauto“ вмеÑто неÑ."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Показване на запиÑите за пакети Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "ТърÑене в ÑпиÑъка Ñ Ð¿Ð°ÐºÐµÑ‚Ð¸ за регулÑрен израз"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Ðеобработена Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° завиÑимоÑтите на даден пакет"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° обратните завиÑимоÑти на даден пакет"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Показване на запиÑа за пакет"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на вÑички пакети, за които има информациÑ"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Показване на наÑтройките на политиката"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Укажете име за този диÑк, например „Debian 5.0.3 Disk1“"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Сложете диÑк в уÑтройÑтвото и натиÑнете „Enter“"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "ÐеуÑпех при монтиране на %s на %s"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Повторете този Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° оÑтаналите диÑкове от комплекта."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Ðргументите не Ñа по двойки"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Употреба: apt-config [опции] команда\n"
+"\n"
+"apt-config е опроÑтен инÑтрумент за четене на ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» на APT\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Употреба: apt-extracttemplates файл1 [файл2 ...]\n"
+"\n"
+"apt-extracttemplates е инÑтрумент за извличане на конфигурационна "
+"информациÑ\n"
+"и шаблони от дебианÑки пакети\n"
+"\n"
+"Опции:\n"
+" -h Този помощен текÑÑ‚.\n"
+" -t ÐаÑтройване на временна директориÑ\n"
+" -c=? Четене на този конфигурационен файл.\n"
+" -o=? ÐаÑтройване на произволна конфигурационна опциÑ, Ñ‚.е. -o dir::cache=/"
+"tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Ðе може да Ñе извлече верÑиÑта на debconf. Debconf инÑталиран ли е?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "ÐеуÑпех при намирането на пакет %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s е отбелÑзан като автоматично инÑталиран.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Тази команда е оÑтарÑла. ВмеÑто Ð½ÐµÑ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð¹Ñ‚Ðµ „apt-mark auto“ и „apt-mark "
+"manual“."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Вътрешна грешка, „problem resolver“ Ñчупи нещо в ÑиÑтемата"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Поддържани модули:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Употреба: apt-get [опции] команда\n"
+" apt-get [опции] install|remove пакет1 [пакет2 ...]\n"
+" apt-get [опции] source пакет1 [пакет2 ...]\n"
+"\n"
+"apt-get е опроÑтен Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð·Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´ за изтеглÑне и\n"
+"инÑталиране на пакети. Ðай-чеÑто използваните команди Ñа „update“\n"
+"и „install“.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "ИзтеглÑне на нови ÑпиÑъци Ñ Ð¿Ð°ÐºÐµÑ‚Ð¸"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "ОбновÑване на ÑиÑтемата"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "ИнÑталиране на нови пакети (пакет е libc6, а не libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Премахване на пакети"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Премахване на пакети, включително файловете им Ñ Ð½Ð°Ñтройки"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Ðвтоматично премахване на вÑички неизползвани пакети"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "ОбновÑване на диÑтрибуциÑта, вж. apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Следване на избора на dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Конфигуриране на завиÑимоÑтите за компилиране на пакети от изходен код"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Изтриване на изтеглените файлове"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Изтриване на Ñтари изтеглени файлове"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Проверка за неудовлетворени завиÑимоÑти"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "ИзтеглÑне на изходен код на пакети"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "ИзтеглÑне на двоичен пакет в текущата директориÑ"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "ИзтеглÑне и показване на журнала Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ð¸ в даден пакет"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "ТрÑбва да укажете поне един пакет за изтеглÑне на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ð¼Ñƒ код"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Употреба: apt-internal-solver\n"
+"\n"
+"apt-internal-solver е Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ ÐºÑŠÐ¼ Ð²Ð³Ñ€Ð°Ð´ÐµÐ½Ð¸Ñ Ð² APT механизъм за "
+"удовлетворÑване на завиÑимоÑти\n"
+"\n"
+"Опции:\n"
+" -h Този помощен текÑÑ‚\n"
+" -q Изход, подходÑщ за журнал — без индикатор на напредъка\n"
+" -c=? Указване на файл Ñ Ð½Ð°Ñтройки\n"
+" -o=? Указване на произволна наÑтройка, напр. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Употреба: apt-internal-solver\n"
+"\n"
+"apt-internal-solver е Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ ÐºÑŠÐ¼ Ð²Ð³Ñ€Ð°Ð´ÐµÐ½Ð¸Ñ Ð² APT механизъм за "
+"удовлетворÑване на завиÑимоÑти\n"
+"\n"
+"Опции:\n"
+" -h Този помощен текÑÑ‚\n"
+" -q Изход, подходÑщ за журнал — без индикатор на напредъка\n"
+" -c=? Указване на файл Ñ Ð½Ð°Ñтройки\n"
+" -o=? Указване на произволна наÑтройка, напр. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "Пакетът „%s“ не може да бъде маркиран, защото не е инÑталиран.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "Пакетът „%s“ вече е отбелÑзан като ръчно инÑталиран.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "Пакетът „%s“ вече е отбелÑзан като автоматично инÑталиран.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "Пакетът „%s“ вече е задуржан.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "Пакетът „%s“ вече е задържан.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "ÐеуÑпех при изпълнÑване на dpkg. Имате ли админиÑтративни права?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "Пакетът „%s“ е задържан.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "ОтмÑна на задържането на пакета „%s“.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"Употреба: apt-mark [опции] {auto|manual} пкт1 [пкт2 …]\n"
+"\n"
+"apt-mark предоÑÑ‚Ð°Ð²Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ÐµÐ½ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð·Ð° маркиране на пакети\n"
+"като инÑталирани ръчно или автоматично. Предлага Ñе и показване\n"
+"на текущата маркировка.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "Маркиране на пакети като инÑталирани автоматично"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "Маркиране на пакети като инÑталирани ръчно"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Ðепознат Ð·Ð°Ð¿Ð¸Ñ Ð·Ð° пакет!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "Четене на ÑпиÑъците Ñ Ð¿Ð°ÐºÐµÑ‚Ð¸"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "Отбити пакети:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Счупени пакети"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "но той е виртуален пакет"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "Четене на информациÑта за ÑÑŠÑтоÑнието"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Лоша Ñтандартна наÑтройка!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "ÐатиÑнете „Enter“, за да продължите."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Желаете ли да изтриете изтеглените пакетни файлове?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "Възникнаха нÑкои грешки при разпакетирането. инÑталираните пакети"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "ще бъдат конфигурирани. Това може да доведе до дублирани грешки"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"или грешки, причинени от липÑващи завиÑимоÑти. Това е нормално, Ñамо грешките"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"над това Ñъобщение за важни. Коригирайте ги и изпълнете [I]nstall наново"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "СмеÑване на наличната информациÑ"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "СпиÑъкът Ñ Ñ€Ð°Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½Ð° пакети и твърде дълъг"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Грешка при обработката на Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "СпиÑъкът Ñ Ñ€Ð°Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½Ð° източници е твърде дълъг"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Грешка при запазването на заглавната чаÑÑ‚ във файла ÑÑŠÑ Ñъдържание"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Грешка при обработката на Ñъдържание %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Употреба: apt-ftparchive [опции] команда\n"
+"Команди: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents път\n"
+" release път\n"
+" generate config [групи]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive генерира индекÑни файлове за архиви на Дебиан. Поддържа\n"
+"много Ñтилове на генериране от напълно автоматично до функционални\n"
+"замени на dpkg-scanpackages и dpkg-scansources.\n"
+"\n"
+"apt-ftparchive генерира „Package“ файлове от дърво Ñ .deb файлове. Файлът\n"
+"„Package“ предÑтавлÑва Ñъдържанието на вÑички контролни полета на вÑеки\n"
+"пакет, както и MD5 хеш и размер на файла. СтойноÑтите на полетата \n"
+"„Priority“ и „Section“ могат да бъдат изменени Ñ Ñ„Ð°Ð¹Ð» „override“.\n"
+"\n"
+"По подобен начин apt-ftparchive генерира „Sources“ файлове от дърво Ñ .dsc \n"
+"файлове. ОпциÑта --source-override може да Ñе използва за указване на файл\n"
+"„override“ за пакети Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код.\n"
+"\n"
+"Командите „packages“ и „sources“ Ñ‚Ñ€Ñбва да Ñе изпълнÑват в корена на "
+"дървото.\n"
+"BinaryPath Ñ‚Ñ€Ñбва да Ñочи към оÑновата, където започва рекурÑивното Ñ‚ÑŠÑ€Ñене "
+"и\n"
+"файла „override“ Ñ‚Ñ€Ñбва да Ñъдържа вÑички флагове за преназначаване. "
+"Pathprefix\n"
+"Ñе Ð¿Ñ€Ð¸Ð±Ð°Ð²Ñ ÐºÑŠÐ¼ полетата на файловите имена, ако ÑъщеÑтвува. Пример за "
+"употреба\n"
+"от архива на Дебиан:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Опции:\n"
+" -h Този помощен текÑÑ‚.\n"
+" --md5 Управление на генерирането на MD5.\n"
+" -s=? Файл „override“ за пакети Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код.\n"
+" -q Без показване на ÑъобщениÑ.\n"
+" -d=? Избор на допълнителна база от данни за кеширане.\n"
+" --no-delink Включване на режим за премахване на връзки.\n"
+" --contents Управление на генерирането на файлове ÑÑŠÑ Ñъдържание.\n"
+" -c=? Четене на този конфигурационен файл.\n"
+" -o=? ÐаÑтройване на произволна конфигурационна опциÑ"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "ÐÑма ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð½Ð° избора"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "ЛипÑват нÑкои файлове от групата Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸ пакети „%s“"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "БД е повредена, файлът е преименуван на %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "БД е Ñтара, опит за актуализиране на %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Ðевалиден формат на БД. Ðко Ñте обновили от по-Ñтара верÑÐ¸Ñ Ð½Ð° apt, "
+"премахнете базата от данни и Ñ Ñъздайте наново."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "ÐеуÑпех при отварÑнето на файл %s от БД: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "ÐеуÑпех при прочитането на връзка %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Ð’ архива нÑма поле „control“"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "ÐеуÑпех при получаването на курÑор"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - ÐеуÑпех при заделÑнето на памет"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Ðепознат алгоритъм за компреÑÐ¸Ñ â€ž%s“"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "КомпреÑираниÑÑ‚ изход %s изиÑква наÑтройка за компреÑирането"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "ÐеуÑпех при Ñъздаването на IPC pipe към подпроцеÑа"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "ÐеуÑпех при пуÑкането на подпроцеÑ"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "ПроцеÑ-потомък за компреÑиране"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Вътрешна грешка, неуÑпех при Ñъздаването на %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Ð’/И към подпроцеÑа/файла пропадна"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "ÐеуÑпех при четене докато Ñе изчиÑлÑва MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "ÐеуÑпех при отварÑнето на %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Ðеправилно форматиран override %s, ред %llu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "ÐеуÑпех при четенето на override файл %s"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Ðеправилно форматиран override %s, ред %llu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Ðеправилно форматиран override %s, ред %llu #2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Ðеправилно форматиран override %s, ред %llu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "W: ÐеуÑпех при четенето на Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "W: ÐеуÑпех при четенето на %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "W: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: Грешките Ñе отнаÑÑÑ‚ за файла "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "ÐеуÑпех при превръщането на %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "ÐеуÑпех при обхода на дървото"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "ÐеуÑпех при отварÑнето на %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr "DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** ÐеуÑпех при Ñъздаването на връзка %s към %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr "Превишен лимит на DeLink от %sB.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Ðрхивът нÑма поле „package“"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s нÑма Ð·Ð°Ð¿Ð¸Ñ â€žoverride“\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " Ð¿Ð¾Ð´Ð´ÑŠÑ€Ð¶Ð°Ñ‰Ð¸Ñ Ð¿Ð°ÐºÐµÑ‚Ð° %s е %s, а не %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s нÑма Ð·Ð°Ð¿Ð¸Ñ â€žsource override“\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s нÑма Ñъщо и Ð·Ð°Ð¿Ð¸Ñ â€žbinary override“\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Чакане на заглавни чаÑти"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "HTTP Ñървърът изпрати невалидна заглавна чаÑÑ‚ като отговор"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Ðевалиден ред на заглавна чаÑÑ‚"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "HTTP Ñървърът изпрати невалидна заглавна чаÑÑ‚ „Content-Length“"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "HTTP Ñървърът изпрати невалидна заглавна чаÑÑ‚ „Content-Range“"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "HTTP Ñървърът нÑма поддръжка за прехвърлÑне на фрагменти на файлове"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "ÐеизвеÑтен формат на дата"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Ðевалидни данни на заглавната чаÑÑ‚"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "ÐеуÑпех при Ñвързването"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Вътрешна грешка"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "ÐеуÑпех при четенето на базата %s ÑÑŠÑ CD-ROM"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Използвайте „apt-cdrom“, за да може този CD-ROM да Ñе разпознава от APT. "
+"„apt-get update“ не може да Ñе използва за добавÑне на нови диÑкове"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Грешен CD-ROM"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "ÐеуÑпех при демонтирането на CD-ROM в %s, може вÑе още да Ñе използва."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "ДиÑкът не е намерен."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Файлът не е намерен"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Свързване Ñ %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "ÐеуÑпех при Ñъздаването на гнездо за %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Ðе може да Ñе започне Ñвързване Ñ %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "ÐеуÑпех при Ñвързване Ñ %s:%s (%s), допуÑтимото време изтече"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "ÐеуÑпех"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "ÐеуÑпех при Ñвързване Ñ %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Свързване Ñ %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "ÐеуÑпех при намирането на IP адреÑа на „%s“"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Временен неуÑпех при намирането на IP адреÑа на „%s“"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Ðещо лошо Ñе Ñлучи при намирането на IP адреÑа на „%s:%s“ (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Ðещо лошо Ñе Ñлучи при намирането на IP адреÑа на „%s:%s“ (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "ÐеуÑпех при Ñвързване Ñ %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "ÐеуÑпех при получаването на атрибути"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Ðевалиден адреÑ-URI, локалните адреÑи-URI не Ñ‚Ñ€Ñбва да започват Ñ â€ž//“"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Влизане"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "ÐеуÑпех при уÑтановÑването на името на Ð¾Ñ‚Ð´Ð°Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ñървър"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "ÐеуÑпех при уÑтановÑването на локалното име"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Сървърът отказа Ñвързване и Ñъобщи: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER Ñе провали, Ñървърът Ñъобщи: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS Ñе провали, Ñървърът Ñъобщи: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Беше указан Ñървър-поÑредник, но нÑма Ñкрипт за влизане, Acquire::ftp::"
+"ProxyLogin е празен."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Командата „%s“ на Ñкрипта за влизане Ñе провали, Ñървърът Ñъобщи: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE Ñе провали, Ñървърът Ñъобщи: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "ДопуÑтимото време за Ñвързването изтече"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Сървърът разпадна връзката"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Отговорът препълни буфера."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Развален протокол"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "ÐеуÑпех при Ñъздаването на гнездо"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr ""
+"ÐеуÑпех при Ñвързването на гнездо за данни, допуÑтимото време за Ñвързване "
+"изтече"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "ÐеуÑпех при Ñвързването на паÑивно гнездо."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo не уÑÐ¿Ñ Ð´Ð° Ñе добере до Ñлушащо гнездо"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "ÐеуÑпех при Ñвързването на гнездо"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "ÐеуÑпех при Ñлушането на гнездото"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "ÐеуÑпех при определÑнето на името на гнездото"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "ÐеуÑпех при изпращането на командата PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "ÐеизвеÑтно ÑемейÑтво адреÑи %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT Ñе провали, Ñървърът Ñъобщи: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Времето за уÑтановÑване на връзка Ñ Ð³Ð½ÐµÐ·Ð´Ð¾ за данни изтече"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Ðевъзможно е да Ñе приеме Ñвързването"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Проблем при хеширане на файла"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "ÐеуÑпех при изтеглÑнето на файла, Ñървърът Ñъобщи „%s“"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Времето за връзка Ñ Ð³Ð½ÐµÐ·Ð´Ð¾ за данни изтече"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "ÐеуÑпех при прехвърлÑнето на данни, Ñървърът Ñъобщи: „%s“"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Запитване"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "ÐеуÑпех при извикването на "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Ðамерен е поне един невалиден подпиÑ."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Вътрешна грешка: Валиден подпиÑ, но не може да Ñе провери отпечатъка на "
+"ключа?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"ÐеуÑпех при изпълнение на „apt-key“ за проверка на подпиÑа (инÑталиран ли е "
+"gnupg?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "ÐеизвеÑтна грешка при изпълнението на apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Следните подпиÑи Ñа невалидни:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Следните подпиÑи не можаха да бъдат проверени, защото Ð¿ÑƒÐ±Ð»Ð¸Ñ‡Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡ не е "
+"наличен:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Грешка при запиÑа на файла"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Грешка при четене от Ñървъра. ОтдалечениÑÑ‚ Ñървър прекъÑна връзката"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Грешка при четене от Ñървъра"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Грешка при запиÑа на файл"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "ÐеуÑпех на избора"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "ДопуÑтимото време за Ñвързване изтече"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Грешка при запиÑа на изходен файл"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Файлът „%s“ на Ð¾Ð³Ð»ÐµÐ´Ð°Ð»Ð½Ð¸Ñ Ñървър не е намерен "
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Грешка при четене файла „%s“ от Ð¾Ð³Ð»ÐµÐ´Ð°Ð»Ð½Ð¸Ñ Ñървър"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Грешка при четене файла „%s“ от Ð¾Ð³Ð»ÐµÐ´Ð°Ð»Ð½Ð¸Ñ Ñървър"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Огледален Ñървър: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "ÐеуÑпех при задаването на време на промÑна"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Връзката прекъÑна преждевременно"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "Празни файлове не могат да бъдат валидни архиви"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Ðеудовлетворени завиÑимоÑти. Опитайте Ñ â€ž--fix-broken“."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Възможно е да изпълните „apt --fix-broken install“, за да коригирате:"
+
+#~ msgid "(not found)"
+#~ msgstr "(не Ñа намерени)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Отбиване на пакета: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr ""
+#~ "ÐÑма налични публични ключове за Ñледните идентификатори на ключове:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "ДиректориÑта %s е отклонена"
+
+#~ msgid "Failed to fetch %s %s\n"
+#~ msgstr "ÐеуÑпех при изтеглÑнето на %s %s\n"
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "ЗавиÑимоÑÑ‚ %s за пакета %s не може да бъде удовлетворена, %s не Ñе "
+#~ "позволÑва за пакети „%s“"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "ЗавиÑимоÑÑ‚ %s за пакета %s не може да бъде удовлетворена, понеже пакета "
+#~ "%s не може да бъде намерен"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "ÐеуÑпех при удовлетворÑването на завиÑимоÑÑ‚ %s за пакета %s: "
+#~ "ИнÑталираниÑÑ‚ пакет %s е твърде нов"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "ЗавиÑимоÑÑ‚ %s за пакета %s не може да бъде удовлетворена, понеже верÑиÑта "
+#~ "кандидат на пакета %s не може да удовлетвори изиÑкването за верÑиÑ"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "ЗавиÑимоÑÑ‚ %s за пакета %s не може да бъде удовлетворена, понеже пакета "
+#~ "%s нÑма подходÑщи верÑии"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "ÐеуÑпех при удовлетворÑването на завиÑимоÑÑ‚ %s за пакета %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr ""
+#~ "ЗавиÑимоÑтите за компилиране на %s не можаха да бъдат удовлетворени."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "ÐеуÑпех при премахването на връзка на %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "ÐеуÑпех при премахването на връзка %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Употреба: apt-cache [опции] команда\n"
+#~ " apt-cache [опции] show пакет1 [пакет2 ...]\n"
+#~ "\n"
+#~ "apt-cache е инÑтрумент на ниÑко ниво за извличане на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚\n"
+#~ "двоичните кеш файлове на APT\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Опции:\n"
+#~ " -h Този помощен текÑÑ‚.\n"
+#~ " -p=? Кешът за пакети.\n"
+#~ " -s=? Кешът за пакети Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код.\n"
+#~ " -q Премахване на индикатора за напредък.\n"
+#~ " -i Показване Ñамо на важни завиÑимоÑти при командата „unmet“.\n"
+#~ " -c=? Указване на файл Ñ Ð½Ð°Ñтройки.\n"
+#~ " -o=? ÐаÑтройване на произволна конфигурационна опциÑ, например -o dir::"
+#~ "cache=/tmp\n"
+#~ "За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð²Ð¸Ð¶Ñ‚Ðµ наръчниците apt-cache(8) и apt.conf(5).\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "Опции:\n"
+#~ " -h Тази помощна информациÑ\n"
+#~ " -q Изход без Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° напредъка, подходÑщ за ÑъхранÑване\n"
+#~ " -qq Без изход, оÑвен при грешки\n"
+#~ " -s СимулациÑ. Само Ñе извежда какво би било направено\n"
+#~ " -f Четене/Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° информациÑта за маркировката от ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»\n"
+#~ " -c=? Указване на файл Ñ Ð½Ð°Ñтройки\n"
+#~ " -o=? Указване на произволна наÑтройка, напр. -o dir::cache=/tmp\n"
+#~ "За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¿Ñ€ÐµÐ³Ð»ÐµÐ´Ð°Ð¹Ñ‚Ðµ ръководÑтвата apt-mark(8) и apt.conf(5)."
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Опции:\n"
+#~ " -h Този помощен текÑÑ‚.\n"
+#~ " -c=? Четене на този конфигурационен файл.\n"
+#~ " -o=? ÐаÑтройване на произволна конфигурационна опциÑ, Ñ‚.е. -o dir::"
+#~ "cache=/tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "Опции:\n"
+#~ " -h Тази помощна информациÑ\n"
+#~ " -q Изход без Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° напредъка, подходÑщ за ÑъхранÑване\n"
+#~ " -qq Без изход, оÑвен при грешки\n"
+#~ " -s СимулациÑ. Само Ñе извежда какво би било направено\n"
+#~ " -f Четене/Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° информациÑта за маркировката от ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»\n"
+#~ " -c=? Указване на файл Ñ Ð½Ð°Ñтройки\n"
+#~ " -o=? Указване на произволна наÑтройка, напр. -o dir::cache=/tmp\n"
+#~ "За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¿Ñ€ÐµÐ³Ð»ÐµÐ´Ð°Ð¹Ñ‚Ðµ ръководÑтвата apt-mark(8) и apt.conf(5)."
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Употреба: apt-sortpkgs [опции] файл1 [файл2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs е опроÑтен инÑтрумент за Ñортиране на пакетни файлове. "
+#~ "ОпциÑта\n"
+#~ "„-s“ Ñе използва, за да покаже типа на файла.\n"
+#~ "\n"
+#~ "Опции:\n"
+#~ " -h Този помощен текÑÑ‚.\n"
+#~ " -s Използване на Ñортиране по изходен код.\n"
+#~ " -c=? Четене на този конфигурационен файл.\n"
+#~ " -o=? ÐаÑтройване на произволна конфигурационна опциÑ, Ñ‚.е. -o dir::"
+#~ "cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "ПроцеÑÑŠÑ‚-потомък пропадна"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "ТрÑбва да укажете поне един пакет за изтеглÑне на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ð¼Ñƒ код"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "ÐеуÑпех при Ñъздаването на програмни канали"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "ÐеуÑпех при изпълнението на gzip"
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s за %s компилиран на %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "ÐеуÑпех при Ñъздаването на FILE*"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr ""
+#~ "Лошо форматиран ред %lu в ÑпиÑъка Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ %s (анализ на адреÑ-URI)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "Лошо форматиран ред %lu в ÑпиÑъка Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ %s (неразбираема [опциÑ])"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr ""
+#~ "Лошо форматиран ред %lu в ÑпиÑъка Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ %s (твърде кратка [опциÑ])"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr ""
+#~ "Лошо форматиран ред %lu в ÑпиÑъка Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ %s ([%s] не е приÑвоÑване)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr ""
+#~ "Лошо форматиран ред %lu в ÑпиÑъка Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ %s (липÑва ключ в [%s])"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "Лошо форматиран ред %lu в ÑпиÑъка Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ %s ([%s] ключът %s нÑма "
+#~ "ÑтойноÑÑ‚)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Лошо форматиран ред %lu в ÑпиÑъка Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ %s (адреÑ-URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Лошо форматиран ред %lu в ÑпиÑъка Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ %s (диÑтрибуциÑ)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr ""
+#~ "Лошо форматиран ред %lu в ÑпиÑъка Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ %s (анализ на адреÑ-URI)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr ""
+#~ "Лошо форматиран ред %lu в ÑпиÑъка Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ %s (неограничена "
+#~ "диÑтрибуциÑ)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr ""
+#~ "Лошо форматиран ред %lu в ÑпиÑъка Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ %s (анализ на диÑтрибуциÑ)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr ""
+#~ "Пакетът %s %s не беше открит при обработката на файла ÑÑŠÑ Ð·Ð°Ð²Ð¸ÑимоÑти"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr ""
+#~ "ÐеуÑпех при получаването на атрибути на ÑпиÑъка Ñ Ð¿Ð°ÐºÐµÑ‚Ð¸ Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Събиране на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° „ОÑигурÑва“"
+
+#, fuzzy
+#~ msgid "Does not start with a cleartext signature"
+#~ msgstr "Файлът %s не започва Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° подпиÑване в обикновен текÑÑ‚."
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Ðе е открита контролна Ñума за „%s“ във файла Release"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Блокът на Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»Ñ %s не Ñъдържа отпечатък"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Общо проÑтранÑтво за завиÑимоÑти по верÑии: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "ÐÑмате доÑтатъчно Ñвободно проÑтранÑтво в %s"
+
+#~ msgid "Done"
+#~ msgstr "Готово"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Ð’ %s нÑма инÑталиран ключодържател."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Вътрешна грешка, „AllUpgrade“ Ñчупи нещо в ÑиÑтемата"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s не е валиден DEB пакет."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Използване на точка за монтиране на CD-ROM %s\n"
+#~ "Монтиране на CD-ROM\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "ÐеуÑпех при закърпване на %s Ñ mmap и операции Ñ Ñ„Ð°Ð¹Ð» – кръпката изглежда "
+#~ "повредена."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "ÐеуÑпех при закърпване на %s Ñ mmap (без грешка, Ñпецифична за mmap) – "
+#~ "кръпката изглежда повредена."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr "Игнориране на неÑъщеÑтвуващо издание „%s“ на пакета „%s“"
+
+#~ msgid "Downloading %s %s"
+#~ msgstr "ИзтеглÑне на %s %s"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr "Това не е валиден DEB архив, нÑма елемент „%s“, „%s“ или „%s“"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "ÐеÑъответÑтвие на контролна Ñума MD5"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "ÐеуÑпех при намирането на файл за пакет %s. Това може да означава, че "
+#~ "Ñ‚Ñ€Ñбва ръчно да оправите този пакет."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "ÐеуÑпех при Ð·Ð°Ð¿Ð¸Ñ Ð² журнала, openpty() Ñе провали (дали /dev/pts е "
+#~ "монтирана?)\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "ПропуÑкане на неÑъщеÑтвуващ файл %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "ÐеуÑпех при премахването на %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "ÐеуÑпех при Ñъздаването на %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "ÐеуÑпех при получаването на атрибути %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr ""
+#~ "Директориите info и temp Ñ‚Ñ€Ñбва да бъдат на една и Ñъща файлова ÑиÑтема"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "ÐеуÑпех при преминаването в админиÑтраторÑката Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Вътрешна грешка при получаването на името на пакета"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Четене на ÑпиÑъка на файловете"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "ÐеуÑпех при отварÑнето на ÑпиÑъка Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ „%sinfo/%s“. Ðко не може да "
+#~ "възÑтановите този файл, запишете го като празен и веднага преинÑталирайте "
+#~ "Ñъщата верÑÐ¸Ñ Ð½Ð° пакета!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "ÐеуÑпех при четенето на ÑпиÑъка Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Вътрешна грешка при получаването на възел"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "ÐеуÑпех при отварÑнето на файл Ñ Ð¾Ñ‚ÐºÐ»Ð¾Ð½ÐµÐ½Ð¸Ñ %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Файлът Ñ Ð¾Ñ‚ÐºÐ»Ð¾Ð½ÐµÐ½Ð¸Ñ Ðµ повреден"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Ðеправилен ред във файла Ñ Ð¾Ñ‚ÐºÐ»Ð¾Ð½ÐµÐ½Ð¸Ñ: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Вътрешна грешка при добавÑнето на отклонение"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Първо Ñ‚Ñ€Ñбва да Ñе инициализира кеша Ñ Ð¿Ð°ÐºÐµÑ‚Ð¸"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "ÐеуÑпех при намирането на заглавна чаÑÑ‚ „Package:“, измеÑтване %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Ðеправилна ÑÐµÐºÑ†Ð¸Ñ â€žConfFile“ във файла за ÑÑŠÑтоÑние. ИзмеÑтване %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Грешка при анализирането на MD5. ИзмеÑтване %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "ÐеуÑпех при преминаването в %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "ÐеуÑпех при намирането на валиден контролен файл"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "ÐеуÑпех при отварÑнето на програмен канал за %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Грешка при четене от Ð¿Ñ€Ð¾Ñ†ÐµÑ %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Получен е един ред на заглавна чаÑÑ‚ Ñ Ð½Ð°Ð´ %u Ñимвола"
+
+#~ msgid "Note: This is done automatic and on purpose by dpkg."
+#~ msgstr "Това Ñе прави автоматично от dpkg."
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Ðеправилно форматиран override %s, ред %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Ðеправилно форматиран override %s, ред %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Ðеправилно форматиран override %s, ред %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "декомпреÑираща програма"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr ""
+#~ "грешка при четене, вÑе още има %lu за четене, но нÑма нито един оÑтанал"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "грешка при запиÑ, вÑе още име %lu за запиÑ, но не уÑпÑ"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "ÐеуÑпех при незабавна наÑтройка на разпакетиран „%s“. За повече "
+#~ "Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¾Ñ‡ÐµÑ‚ÐµÑ‚Ðµ за APT::Immediate-Configure в „man 5 apt.conf“."
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Възникна грешка при обработката на %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Възникна грешка при обработката на %s (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Възникна грешка при обработката на %s (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Възникна грешка при обработката на %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Възникна грешка при обработката на %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Грешка при обработка на %s (NewVersion%d)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Възникна грешка при обработката на %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Възникна грешка при обработката на %s (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Възникна грешка при обработката на %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Възникна грешка при обработката на %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Вътрешна грешка, не може да Ñе открие елемент"
+
+#~ msgid "Internal error, group '%s' has no installable pseudo package"
+#~ msgstr ""
+#~ "Вътрешна грешка, групата „%s“ нÑма пÑевдо-пакет, подходÑщ за инÑталиране"
+
+#~ msgid "Release file expired, ignoring %s (invalid since %s)"
+#~ msgstr ""
+#~ "Файлът %s вече не е валиден и ще бъде игнориран. (изтекъл е преди %s)"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr ""
+#~ "E: СпиÑъкът Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¸ от Acquire::gpgv::Options е твърде дълъг. "
+#~ "Завършване на работа."
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "Възникна грешка при обработката на %s (NewVersion2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr ""
+#~ "Лошо форматиран ред %u в ÑпиÑъка Ñ Ð¸Ð·Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ†Ð¸ %s (идентификатор на "
+#~ "производител)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "ÐеуÑпех при доÑтъпа до набор на ключове: „%s“"
+
+#~ msgid "Could not patch file"
+#~ msgstr "ÐеуÑпех при закърпване на файла"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "Обработка на тригерите на %s"
+
+#~ msgid "Dynamic MMap ran out of room"
+#~ msgstr "ÐедоÑтатъчен реÑÑƒÑ€Ñ Ð¿Ñ€Ð¸ налагане на файл в паметта"
diff --git a/po/bs.po b/po/bs.po
new file mode 100644
index 000000000..3f8bb87f1
--- /dev/null
+++ b/po/bs.po
@@ -0,0 +1,3643 @@
+# APT - Advanced Package Transfer
+# This file is put in the public domain.
+# Safir Šećerović <sapphire@linux.org.ba>, 2004
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 0.5.26\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2004-05-06 15:25+0100\n"
+"Last-Translator: Safir Šećerović <sapphire@linux.org.ba>\n"
+"Language-Team: Bosnian <lokal@lugbih.org>\n"
+"Language: bs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Arhiva je prekratka"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr ""
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Ne mogu otvoriti %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Oštećena arhiva"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Provjera Tar kontrolnog zbira nije uspjela, arhiva oštećena"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr ""
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr ""
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr ""
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr ""
+
+#: apt-inst/dirstream.cc
+#, fuzzy, c-format
+msgid "Failed to write file %s"
+msgstr "Ne mogu ukloniti %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr ""
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr ""
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr ""
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr ""
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr ""
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Putanja je preduga"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr ""
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Ne mogu Äitati %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr ""
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr ""
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr ""
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr ""
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr ""
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr ""
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr ""
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is not signed."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Greška pri pisanju"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Unable to lock directory %s"
+msgstr "Ne mogu kreirati %s"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr ""
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Retrieving file %li of %li"
+msgstr "ÄŒitam spisak datoteke"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr ""
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr ""
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr ""
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Ne mogu otvoriti %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Ne mogu otvoriti %s"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Ne mogu pronaći paket %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, fuzzy
+msgid "Unmounting CD-ROM...\n"
+msgstr "Pogrešan CD"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, fuzzy
+msgid "Waiting for disc...\n"
+msgstr "ÄŒekam na zaglavlja"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, fuzzy
+msgid "Copying package lists..."
+msgstr "ÄŒitam spiskove paketa"
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr ""
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr ""
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr ""
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr ""
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "GreÅ¡ka pri Äitanju"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Greška pri pisanju"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Ne mogu otvoriti %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the file %s"
+msgstr "Ne mogu ukloniti %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Ne mogu kreirati %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Ne mogu zapisati na %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to close mmap"
+msgstr "Ne mogu kreirati %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to synchronize mmap"
+msgstr "Ne mogu kreirati %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Failed to truncate file"
+msgstr "Ne mogu ukloniti %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... %u%%"
+msgstr ""
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Ne mogu otvoriti DB datoteku %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr ""
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr ""
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr ""
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Installing %s"
+msgstr " Instalirano:"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Configuring %s"
+msgstr "Povezujem se sa %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Removing %s"
+msgstr "Otvaram %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removing %s"
+msgstr "Ne mogu ukloniti %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Installed %s"
+msgstr " Instalirano:"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, fuzzy, c-format
+msgid "Could not open file '%s'"
+msgstr "Ne mogu otvoriti %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Preparing %s"
+msgstr "Otvaram %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Unpacking %s"
+msgstr "Otvaram %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Removed %s"
+msgstr "PreporuÄuje"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removed %s"
+msgstr "Ne mogu ukloniti %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "Ne mogu zapisati na %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Gradim stablo zavisnosti"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Verzije kandidata"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Stvaranje zavisnosti"
+
+#: apt-pkg/depcache.cc
+#, fuzzy
+msgid "Reading state information"
+msgstr "Sastavljam dostupne informacije"
+
+#: apt-pkg/depcache.cc
+#, fuzzy, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Ne mogu otvoriti %s"
+
+#: apt-pkg/depcache.cc
+#, fuzzy, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Ne mogu ukloniti %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr ""
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr ""
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr ""
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "Ne mogu otvoriti %s"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Zavisi"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Unaprijed zavisi"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Predlaže"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "Conflicts"
+msgstr "Sukobljava se sa"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "PreporuÄuje"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Zamjenjuje"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Zastarijeva"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "važno"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "zahtijevano"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "standardno"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "extra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "opcionalno"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr ""
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "ÄŒitam spiskove paketa"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr ""
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr ""
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Otvaram %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr ""
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, fuzzy, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Ne mogu otvoriti %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "RaÄunam nadogradnju"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr ""
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr ""
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr ""
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Ispravljam zavisnosti..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr ""
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Ne mogu ispraviti zavisnosti"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr ""
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Urađeno"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "ali je virtuelni paket"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr "[Instalirano]"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Not candidate version]"
+msgstr "Verzije kandidata"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Međutim, slijedeći paketi ga zamjenjuju:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr ""
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Paketi nisu pronađeni"
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "Slijedeći paketi će biti nadograđeni:"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr ""
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr ""
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr ""
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr ""
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr ""
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr ""
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Oštećeni paketi"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr ""
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Da, uradi kako kažem!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Odustani."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Da li želite nastaviti?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr ""
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Odustajem od instalacije."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "Slijedeći NOVI paketi će biti instalirani:"
+msgstr[1] "Slijedeći NOVI paketi će biti instalirani:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "Slijedeći NOVI paketi će biti instalirani:"
+msgstr[1] "Slijedeći NOVI paketi će biti instalirani:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Slijedeći dodatni paketi će biti instalirani:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Predloženi paketi:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "PreporuÄeni paketi:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr ""
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr ""
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to manually installed.\n"
+msgstr "ali se %s treba instalirati"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr ""
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr "[Instalirano]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr "[Instalirano]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr "[Instalirano]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr "[Instalirano]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "ali je %s instaliran"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "ali se %s treba instalirati"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "ali se ne može instalirati"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "ali je virtuelni paket"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "ali se neće instalirati"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "ali nije instaliran"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " ili"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Slijedeći NOVI paketi će biti instalirani:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Slijedeći paketi će biti UKLONJENI:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "The following packages have been kept back:"
+msgstr "Slijedeći paketi su zadržani:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Slijedeći paketi će biti nadograđeni:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr ""
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr ""
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr ""
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr ""
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr ""
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr ""
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Datoteke paketa:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr ""
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Instalirano:"
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr ""
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr ""
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Ne mogu otvoriti %s"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Paket %s verzije %s ima nezadovoljenu zavisnost:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "apt-cache stats does not take any arguments"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Ukupno naziva paketa:"
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total package structures: "
+msgstr "Ukupno naziva paketa:"
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Normalni paketi:"
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " ÄŒisto virtuelni paketi:"
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " PojedinaÄni virutuelni paketi:"
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Miješani virtuelni paketi:"
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Nedostajući:"
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Ukupno razliÄitih verzija:"
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total distinct descriptions: "
+msgstr "Ukupno razliÄitih verzija:"
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Ukupno zavisnosti:"
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Ukupno Verzija/Datoteka odnosa:"
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total Desc/File relations: "
+msgstr "Ukupno Verzija/Datoteka odnosa:"
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Ne mogu otvoriti %s"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Argumenti nisu u parovima"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Upotreba: apt-config [opcije] naredba\n"
+"\n"
+"apt-config je jednostavni alat za Äitanje APT konfiguracijske datoteke\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr ""
+"Ne mogu odrediti verziju debconf programa. Da li je debconf instaliran?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr ""
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "ali se %s treba instalirati"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Podržani moduli:"
+
+#: cmdline/apt-get.cc
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid "Retrieve new lists of packages"
+msgstr "ali se %s treba instalirati"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr ""
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid "Remove packages"
+msgstr "Oštećeni paketi"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr ""
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+#, fuzzy
+msgid "Remove automatically all unused packages"
+msgstr "ali se %s treba instalirati"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Must specify at least one pair url/filename"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+
+#: cmdline/apt-internal-solver.cc
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "ali nije instaliran"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "ali se %s treba instalirati"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "ali se %s treba instalirati"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "ali se %s treba instalirati"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Ne mogu otvoriti %s"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "ali se %s treba instalirati"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "Slijedeći NOVI paketi će biti instalirani:"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "ali se %s treba instalirati"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "ali se %s treba instalirati"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Nepoznat zapis paketa\""
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "ÄŒitam spiskove paketa"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr " PojedinaÄni virutuelni paketi:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Oštećeni paketi"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "ali se %s treba instalirati"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "Sastavljam dostupne informacije"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Loša podrazumjevana postavka!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Pritisnite enter za nastavak."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr ""
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr ""
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr ""
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Sastavljam dostupne informacije"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr ""
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "DB je bila oštećena, datoteka preimenovana u %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "DB je stara, pokušavam nadogradnju %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+
+#: ftparchive/cachedb.cc
+#, fuzzy, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Ne mogu otvoriti DB datoteku %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Ne mogu ukloniti %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Arhiva nema kontrolnog zapisa"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr ""
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr ""
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr ""
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr ""
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr ""
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr ""
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Ne mogu otvoriti %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "ÄŒekam na zaglavlja"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Nepoznat oblik datuma"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Povezivanje neuspješno"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Unutrašnja greška"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr ""
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+
+#: methods/cdrom.cc
+#, fuzzy
+msgid "Wrong CD-ROM"
+msgstr "Pogrešan CD"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Ne mogu demontirati CD-ROM na %s, moguće je da se još uvijek koristi."
+
+#: methods/cdrom.cc
+#, fuzzy
+msgid "Disk not found."
+msgstr "Datoteka nije pronađena"
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Datoteka nije pronađena"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr ""
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Neuspješno"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr ""
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Povezujem se sa %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr ""
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Ne mogu se povezati sa %s %s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr ""
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr ""
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Prijavljujem se"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Server je zatvorio vezu"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr ""
+
+#: methods/ftp.cc
+#, fuzzy
+msgid "Protocol corruption"
+msgstr "Oštećenje protokola"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr ""
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr ""
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr ""
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr ""
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr ""
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr ""
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr ""
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+#, fuzzy
+msgid "The following signatures were invalid:\n"
+msgstr "Slijedeći dodatni paketi će biti instalirani:"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr ""
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr ""
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Ne mogu otvoriti %s"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Ne mogu otvoriti %s"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr ""
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr ""
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr ""
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Nezadovoljene zavisnosti. Pokušajte koristeći --fix-broken."
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Opcije:\n"
+#~ " -h Ovaj tekst pomoći.\n"
+#~ " -c=? ProÄitaj ovu konfiguracijsku datoteku\n"
+#~ " -o=? Podesi odgovarajuću konfiguracijsku opciju, npr. -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Ne mogu izvršiti gzip"
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Ne mogu otvoriti DB datoteku %s"
+
+#~ msgid "Done"
+#~ msgstr "Urađeno"
+
+#, fuzzy
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Odustajem od instalacije."
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s nije ispravan DEB paket."
+
+#~ msgid "Reading file listing"
+#~ msgstr "ÄŒitam spisak datoteke"
+
+#, fuzzy
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Ne mogu otvoriti %s"
+
+#, fuzzy
+#~ msgid "openpty failed\n"
+#~ msgstr "Povezivanje neuspješno"
+
+#~ msgid "File date has changed %s"
+#~ msgstr "Datum datoteke je promijenjen %s"
diff --git a/po/ca.po b/po/ca.po
new file mode 100644
index 000000000..ad1a63a3c
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,3914 @@
+# Catalan translation of APT.
+# Copyright © 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2011, 2012 Software in the Public Interest, Inc.
+# Antoni Bella Perez <bella5@teleline.es>, 2002, 2003.
+# Matt Bonner <mateubonet@yahoo.com>, 2003.
+# Jordi Mallach <jordi@debian.org>, 2004, 2005, 2006, 2008, 2009, 2011, 2012.
+# Agustí Grau <fletxa@gmail.com>, 2010.
+# Oriol Debian <oriol.debian@gmail.com>, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.4~beta1\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2016-12-05 21:09+0100\n"
+"Last-Translator: Oriol Debian <oriol.debian@gmail.com>\n"
+"Language-Team: Catalan <debian-l10n-catalan@lists.debian.org>\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 2.0\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Signatura de l'arxiu no vàlida"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "S'ha produït un error en llegir la capçalera del membre de l'arxiu"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "La capçalera %s del membre de l'arxiu no és vàlida"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "La capçalera del membre de l'arxiu no és vàlida"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "L'arxiu és massa petit"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Ha fallat la lectura de les capçaleres de l'arxiu"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "No s'ha pogut trobar cap compressor configurat per: «%s»"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Arxiu corromput"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "La suma de comprovació de tar ha fallat, arxiu corromput"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Capçalera TAR desconeguda del tipus %u, membre %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Aquest no és un arxiu DEB vàlid, falta el membre «%s»"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Error intern, no s'ha pogut localitzar al membre %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "El fitxer de control no es pot analitzar"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "No s'ha pogut escriure el fitxer %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Ha fallat el tancament del fitxer %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "La ruta %s és massa llarga"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "S'està desempaquetant %s més d'una vegada"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "El directori %s està desviat"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "El paquet està intentant escriure en l'objectiu desviat %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "La ruta de desviació és massa llarga"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "No es pot determinar l'estat de %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "No s'ha pogut canviar el nom de %s a %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "El directori %s està sent reemplaçat per un no-directori"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "No s'ha trobat el node dins de la taula"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "La ruta és massa llarga"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "S'està sobreescrivint el corresponent paquet sense versió per a %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "El fitxer %s/%s sobreescriu al que està en el paquet %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "No es pot llegir %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "No es pot veure l'estat de %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode crida a un node que encara està enllaçat"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "No s'ha trobat l'element disseminat!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "No s'ha pogut assignar la desviació"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "S'ha produït un error intern en AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "S'està intentant sobreescriure una desviació, %s -> %s i %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Afegit doble d'una desviació %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Fitxer de conf. duplicat %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+"No es pot actualitzar d'un repositori com aquest de forma segura i per tant "
+"està desactivat per omissió."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+"Les dades d'un repositori com aquest no es poden autenticar i per tant el "
+"seu ús és potencialment perillós."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+"Miri la pàgina de manual apt-secure(8) per veure els detalls sobre la "
+"creació de repositoris i la configuració d'usuaris."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "El directori «%s» ja no està signat."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "El directori «%s» ja no té fitxer de publicació «Release»."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+"Normalment no està permès, però s'ha donat l'opció «Acquire::"
+"AllowDowngradeToInsecureRepositories» per anul·lar-ho."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is not signed."
+msgstr "El repositori «%s» no està signat."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "El repositori «%s» ja no té fitxer de publicació «Release»."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "El repositori «%s» només proporciona informació de seguretat feble."
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "No s'ha pogut llegir l'enllaç %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "La suma resum no concorda"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+"La informació disponible és insuficient per realitzar la baixada de manera "
+"segura"
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "no s'ha pogut canviar el nom, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "La mida no concorda"
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr "El format de fitxer no és vàlid"
+
+#: apt-pkg/acquire-item.cc
+msgid "Signature error"
+msgstr "Hi ha hagut un error en la signatura"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+"El fitxer signat en clar no és vàlid, s'ha obtingut «%s». Comprovi si la "
+"xarxa requereix autenticació."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"S'ha produït un error durant la verificació de la signatura. El repositori "
+"no està actualitzat i s'emprarà el fitxer d'índex anterior. Error del GPG: "
+"%s: %s"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "S'ha produït un error amb el GPG: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+"S'omet l'ús del fitxer configurat «%s» ja que el repositori «%s» no admet "
+"l'arquitectura «%s»"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"No s'ha trobat l'entrada «%s» esperada, al fitxer Release (entrada errònia "
+"al sources.list o fitxer malformat)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+"S'omet l'adquisició del fitxer configurat «%s» ja que el repositori «%s» "
+"només proporciona informació de seguretat feble per fer-ho"
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"El fitxer Release per a %s ha caducat (invàlid des de %s). Les "
+"actualitzacions per a aquest dipòsit no s'aplicaran."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Distribució en conflicte: %s (s'esperava %s però s'ha obtingut %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"No ha estat possible localitzar un fitxer pel paquet %s. Això podria "
+"significar que haureu d'arreglar aquest paquet manualment (segons "
+"arquitectura)."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr "No es troba una font per baixar la versió «%s» de «%s»"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"L'índex dels fitxers en el paquet està corromput. El fitxer no existeix: "
+"camp per al paquet %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "El registre de canvis no està disponible per a %s=%s"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr "El mètode «%s» està desactivat explícitament per la configuració."
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr "Si vol usar Tor recordi d'usar «%s» en lloc de «%s»"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "No s'ha pogut trobar el mètode de control %s."
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr "Està instal·lat el paquet %s?"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "El mètode %s no s'ha iniciat correctament"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+"Inseriu el disc amb l'etiqueta: «%s» en la unitat «%s» i premeu [Intro]."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Falta el directori de llistes %spartial."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Falta el directori d'arxius %spartial."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "No es pot blocar el directori %s"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+"No existeix l'usuari d'entorn segur «%s», no es poden ignorar els privilegis"
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+#| msgid ""
+#| "Can't drop privileges for downloading as file '%s' couldn't be accessed "
+#| "by user '%s'."
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+"No es poden ignorar els privilegis per descarregar mentre no es pugui "
+"accedir a «%s» amb l'usuari «%s»."
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr "No està suportada la neteja de «%s» "
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "No es pot canviar a %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "S'està obtenint el fitxer %li de %li (falten %s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "S'està obtenint el fitxer %li de %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"El paquet %s necessita ser reinstal·lat, però no se li pot trobar un arxiu."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Error, pkgProblemResolver::Resolve ha generat pauses, això pot haver estat "
+"causat per paquets retinguts."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr ""
+"No es poden corregir els problemes, teniu paquets retinguts que estan "
+"trencats."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+"No s'han pogut analitzar o obrir les llistes de paquets o el fitxer d'estat."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr ""
+"Potser voldreu executar apt-get update per a corregir aquests problemes"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "No s'ha pogut llegir la llista de les fonts."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "S'ha produït un error de compilació de l'expressió regular - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "No s'ha trobat la versió puntual «%s» per a «%s»"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "No s'ha trobat la versió «%s» per a «%s»"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "No s'ha pogut trobar la tasca «%s»"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "No s'ha pogut trobar el paquet a través de l'expressió regular «%s»"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "No s'ha pogut trobar cap paquet a través de l'expressió regular «%s»"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "No s'ha trobat el paquet %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+"No s'han pogut seleccionar les versions del paquet «%s» ja que és purament "
+"virtual"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"No s'ha pogut seleccionar la versió més nova del paquet «%s» ja que és "
+"purament virtual"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+"No s'ha pogut seleccionar la versió candidata del paquet %s ja que no té "
+"candidata"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"No s'ha pogut seleccionar la versió instal·lada del paquet %s ja que no està "
+"instal·lada"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"No s'han pogut seleccionar la versió instal·lada ni la candidata del paquet "
+"«%s» ja que no estan disponibles cap de les dues"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "La línia %u és massa llarga en la llista de fonts %s."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "S'està desmuntant el CD-ROM…\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "S'està utilitzant el punt de muntatge de CD-ROM %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "S'està esperant al disc…\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "S'està muntant el CD-ROM…\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "S'està identificant…"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "S'ha emmagatzemat l'etiqueta: %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "S'està analitzant el disc per a fitxers d'índex…\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"S'han trobat %zu índexos de paquets, %zu índexos de fonts, %zu índex de "
+"traduccions i %zu signatures\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"No s'ha trobat cap fitxer de paquets, potser no és un disc de Debian o la "
+"arquitectura és incorrecta?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "S'ha trobat l'etiqueta «%s»\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Aquest no és un nom vàlid, torneu-ho a provar.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"El disc es diu:\n"
+"«%s»\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "S'estan copiant les llistes de paquets…"
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "S'està escrivint una nova llista de fonts\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Les entrades de la llista de fonts per a aquest disc són:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "No es pot veure l'estat de %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "No es pot obtenir informació del punt de muntatge %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "No s'ha pogut fer «stat» del cdrom"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr ""
+"No s'admet l'opció de la línia d'ordres «%c» [de %s] en combinació amb "
+"altres opcions"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr ""
+"No s'admet l'opció de la línia d'ordres %s en combinació amb altres opcions"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "No és lògica l'opció de la línia d'ordres %s"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "L'opció de la línia d'ordres %s precisa un paràmetre."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "Opció %s: Paràmetre de configuració ha de ser en la forma =<val>"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "L'opció %s precisa un paràmetre numèric, no '%s'"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "L'opció '%s' és massa llarga"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "El sentit %s no s'entén, proveu «true» (vertader) o «false» (fals)."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Operació no vàlida %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Abreujament de tipus no reconegut: «%c»"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "S'està obrint el fitxer de configuració %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Error sintàctic %s:%u: No comença el camp amb un nom."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Error sintàctic %s:%u: Etiqueta malformada"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Error sintàctic %s:%u Text extra després del valor"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "Error sintàctic %s:%u: Es permeten directrius només al nivell més alt"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Error sintàctic %s:%u: Hi ha masses fitxers include niats"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Error sintàctic %s:%u: Inclòs des d'aquí"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Error sintàctic %s:%u: Directriu no suportada «%s»"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Error sintàctic %s:%u: la directiva clear requereix un arbre d'opcions com a "
+"argument"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Error sintàctic %s:%u: Text extra al final del fitxer"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Ha hagut un problema en desenllaçar el fitxer %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr ""
+"No s'empren bloquejos per a llegir el fitxer de blocat de sols lectura %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "No es pot resoldre el fitxer de blocat %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "No s'empren bloquejos per al fitxer de blocat %s de muntar nfs"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "No s'ha pogut blocar %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr "No es pot crear la llista de fitxers perquè «%s» no és un directori"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr "S'està descartant «%s» al directori «%s» perquè no és un fitxer normal"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+"S'està descartant «%s» al directori «%s» perquè no té extensió del nom de "
+"fitxer"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"S'està descartant «%s» al directori «%s» perquè té una extensió del nom de "
+"fitxer invàlida"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Esperava %s però no hi era"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "El sub-procés %s ha rebut una violació de segment."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "El sub-procés %s ha rebut un senyal %u."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "El sub-procés %s ha retornat un codi d'error (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "El sub-procés %s ha sortit inesperadament"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Error de lectura"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Error d'escriptura"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Ha hagut un problema en tancar el fitxer gzip %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr "Fi de fitxer no esperat"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "No s'ha pogut crear el subprocés IPC"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "No s'ha pogut executar el compressor "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "No s'ha pogut obrir el fitxer %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "No s'ha pogut obrir el descriptor del fitxer %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "llegits, falten %llu per llegir, però no queda res"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "escrits, falten %llu per escriure però no s'ha pogut"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Ha hagut un problema en tancar el fitxer %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Ha hagut un problema en reanomenar el fitxer %s a %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Ha hagut un problema en sincronitzar el fitxer"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to mkstemp %s"
+msgstr "No es pot crear el fitxer temporal %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "No es pot escriure en %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "No es pot transferir un fitxer buit a memòria"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "No s'ha pogut crear un mapa de memòria de %llu octets"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "No s'ha pogut duplicar el descriptor del fitxer %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "No es pot tancar el mmap"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "No es pot sincronitzar el mmap"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "No s'ha pogut crear un mapa de memòria de %lu octets"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "No s'ha pogut truncar el fitxer %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"No hi ha espai per al «Dynamic MMap». Incrementeu la mida d'APT::Cache-"
+"Start. Valor actual: %lu. (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"No s'ha pogut incrementar la mida del MMap ja que el limit de %lu bytes ja "
+"s'ha superat."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"No s'ha pogut incrementar la mida del MMap ja que el creixement automàtic "
+"està deshabilitat per l'usuari."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s… Error!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s… Fet"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr "…"
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s… %u%%"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%lid %lih %limin %lis"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%lih %limin %lis"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%limin %lis"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%lis"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "No s'ha trobat la selecció %s"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr "L'objectiu %s vol obtenir el mateix fitxer (%s) que %s de l'origen %s"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr "L'objectiu %s (%s) està configurat diverses vegades en %s i %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "No es pot analitzar el fitxer Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "No hi ha seccions al fitxer Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "No hi ha una entrada Hash al fitxer Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+"No existeix una entrada Resum «Hash» en l'arxiu «Release» %s que es "
+"considera suficientment fort per raons de seguretat"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "El camp «%s» al fitxer Release %s és invàlid"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+"S'han establert valors en conflicte per a l'opció %s segons l'origen %s %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+"S'han establert valors no vàlids per a l'opció %s segons l'origen %s %s (%s)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+"S'han establert valors en conflicte per a l'opció %s segons l'origen %s %s: "
+"%s != %s"
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "No es pot analitzar el fitxer del paquet %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"No s'ha pogut bloquejar el directori d'administració (%s), hi ha cap altre "
+"procés utilitzant-lo?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "No es pot blocar el directori d'administració (%s), sou root?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"S'ha interromput el dpkg, hauríeu d'executar manualment «%s» per a corregir "
+"el problema."
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "No blocat"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "S'està instal·lant %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "S'està configurant el paquet %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "S'està suprimint el paquet %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "S'ha suprimit completament %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "S'està anotant la desaparició de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "S'està executant l'activador de postinstal·lació %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "S'ha instal·lat el paquet %s"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Manca el directori «%s»"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "No s'ha pogut obrir el fitxer «%s»"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "S'està preparant el paquet %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "S'està desempaquetant %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "S'està preparant per a configurar el paquet %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "S'està preparant per a la supressió del paquet %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "S'ha suprimit el paquet %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "S'està preparant per a suprimir completament el paquet %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "S'ha suprimit completament el paquet %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Can not write log (%s)"
+msgstr "No es pot escriure en el fitxer de registre (%s)"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr "Comprovi que «/dev/pts» està muntat"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "S'ha interromput l'operació abans que pogués finalitzar"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr "No s'ha escrit cap informe perquè ja s'ha superat MaxReports"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "S'han produït problemes de depències, es deixa sense configurar"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"No s'ha escrit cap informe perquè el missatge d'error indica que és un error "
+"de seguiment de una fallida anterior."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"No s'ha escrit cap informe perquè el missatge d'error indica una fallida per "
+"disc ple"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"No s'ha escrit cap informe perquè el missatge d'error indica una fallida per "
+"falta de memòria"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"No s'ha escrit cap informe perquè el missatge d'error indica una fallida en "
+"el sistema local"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"No s'ha escrit cap informe perquè el missatge d'error indica d'una fallida "
+"d'E/S del dpkg"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "S'està construint l'arbre de dependències"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Versions candidates"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Dependències que genera"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "S'està llegint la informació de l'estat"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "No s'ha pogut obrir el fitxer d'estat %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "No s'ha pogut escriure el fitxer d'estat temporal %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "Envia l'escenari al resoledor"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "Envia la petició al resoledor"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "Prepara per a rebre una solució"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr "El resoledor extern ha fallat sense un missatge d'error adient"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "Executa un resoledor extern"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr "Executa un planificador extern"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr "Envia la petició al planificador"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr "Envia l'escenari al planificador"
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr "El planificador extern ha fallat sense un missatge d'error adient"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "S'han escrit %i registres.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "S'han escrit %i registres, on falten %i fitxers.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "S'han escrit %i registres, on hi ha %i fitxers no coincidents\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"S'han escrit %i registres, on falten %i fitxers i hi ha %i fitxers no "
+"coincidents\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "No s'ha pogut trobar el registre d'autenticatió per a: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "El resum no coincideix per a: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "El sistema d'empaquetament «%s» no està suportat"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "No es pot determinar un tipus de sistema d'empaquetament adequat."
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr "Progrés: [%3i%%]"
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "S'està executant dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"No s'ha pogut realitzar la configuració immediata de «%s». Vegeu man 5 apt."
+"conf, sota APT::Immediate-Configure per a més detalls. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "No s'ha pogut configurar «%s»."
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Aquesta instal·lació requereix suprimir temporalment el paquet essencial %s "
+"per qüestió d'un bucle de Conflictes/Pre-dependències. Això sol ser una cosa "
+"dolenta, però si realment desitgeu fer-la, activeu l'opció APT::Force-"
+"LoopBreak."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Memòria cau de paquets és buida"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "El fitxer de memòria cau de paquets està corromput"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "El fitxer de memòria cau de paquets és una versió incompatible"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Aquest APT no suporta el sistema de versions «%s»"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr ""
+"La memòria cau de paquets fou creada per a una arquitectura diferent: %s "
+"contra %s"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr ""
+"El fitxer de memòria cau de paquets està corromput, té un resum «hash» "
+"incorrecte"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Depèn"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Predepèn"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Suggereix"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Entra en conflicte"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Recomana"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Reemplaça"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Trenca"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Millora"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Fa obsolet"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "important"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "requerit"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "estàndard"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "extra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "opcional"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "La memòria cau té un sistema de versions incompatible"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "S'ha produït un error en processar %s (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"Uau, heu excedit el nombre de paquets que aquest APT és capaç de gestionar."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr ""
+"Uau, heu excedit el nombre de versions que aquest APT és capaç de gestionar."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+"Uau, heu excedit el nombre de descripcions que aquest APT és capaç de "
+"gestionar. "
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+"Uau, heu excedit el nombre de dependències que aquest APT és capaç de "
+"gestionar."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "S'està llegint la llista de paquets"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Error d'E/S en desar la memòria cau de la font"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "El tipus de fitxer índex «%s» no està suportat"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"El valor «%s» és invàlid per a APT:Default-Release donat que aquest "
+"llançament no és disponible a les fonts"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Registre no vàlid al fitxer de preferències %s, paquet sense capçalera"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "No s'ha entès el pin de tipus %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+"%s: El valor %s està fora del rang de les prioritats de pin vàlid (%d a %d)"
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "No hi ha prioritat especificada per al pin (o és zero)"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "L'entrada %u està mal formada en %s en el fitxer %s (%s)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "S'està obrint %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "La línia %u és malformada en la llista de fonts %s (tipus)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "El tipus «%s» no és conegut en la línia %u de la llista de fonts %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "La línia %u està mal formada en la llista de fonts %s (tipus)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Es desconeix el tipus «%s» en la línia %u de la llista de fonts %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr "S'ha subministrat el fitxer no admès %s en la línia d'ordres"
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Heu de posar algunes URI 'font' en el vostre sources.list"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr "No s'ha pogut convertir %s a sencer: fora de rang"
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "No s'ha pogut obtenir %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Alguns índex no s'han pogut baixar. S'han descartat, o en el seu lloc s'han "
+"emprat els antics."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "S'està calculant l'actualització"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Obj:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Bai:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Ign:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Err:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "S'ha baixat %sB en %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Treballant]"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Canvi de medi: inseriu el disc amb l'etiqueta\n"
+" «%s»\n"
+"en la unitat «%s» i premeu [Intro]\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "S'estan corregint les dependències…"
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " ha fallat."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "No es poden corregir les dependències"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "No es pot minimitzar el joc de versions revisades"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Fet"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "Potser voldreu executar «apt --fix-broken install» per a corregir-ho."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Dependències insatisfetes. Proveu amb «apt --fix-broken install» sense "
+"paquets (o especifiqueu una solució)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr "Ordenant"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Nota: s'està seleccionant «%s» per a la tasca «%s»\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr ""
+"Tingues en compte que s'està seleccionant «%s» per a l'expressió regular "
+"genèrica «%s»\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Nota: s'està seleccionant «%s» per a l'expressió regular «%s»\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "El paquet %s és un paquet virtual proveït per:\n"
+
+#: apt-private/private-cacheset.cc
+msgid " [Installed]"
+msgstr " [Instal·lat]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr "[Versió no candidata]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Necessiteu seleccionar-ne un explícitament per a instal·lar-lo."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"El paquet %s no té versió disponible, però un altre paquet\n"
+"en fa referència. Això normalment vol dir que el paquet falta,\n"
+"s'ha tornat obsolet o només és disponible des d'una altra font.\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Tot i que els següents paquets el reemplacen:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "El paquet «%s» no té candidat d'instal·lació"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Els paquets virtuals com «%s» no es poden suprimir\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"El paquet «%s» no està instal·lat, així doncs no es suprimirà. Volíeu dir "
+"«%s»?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "El paquet «%s» no està instal·lat, així doncs no es suprimirà\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Nota: s'està seleccionant «%s» en lloc de «%s»\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr "Ordres més utilitzades:"
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr "Vegi %s per a més informació sobre les ordres disponibles."
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+"Les opcions i sintaxi de configuració es detallen en apt.conf(5).\n"
+"Pot trobar informació sobre com configurar les fonts en sources.list(5).\n"
+"Les eleccions de versió i de paquets es poden expressar per mitjà de "
+"apt_preferences(5).\n"
+"Els detalls de la seguretat estan disponibles en apt-secure(8).\n"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Aquest APT té superpoders bovins."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr "Aquest Ajudant d'APT té poders de Super Plor."
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "No s'han trobat paquets"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "AVÃS: No es poden autenticar els següents paquets!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "S'ha descartat l'avís d'autenticació.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "No s'ha pogut autenticar alguns paquets"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Voleu instal·lar aquests paquets sense verificar-los?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+"--force-yes està en desús, en el seu lloc utilitzi una de les opcions que "
+"comencen per --allow."
+
+#: apt-private/private-download.cc
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr ""
+"Hi ha paquets sense autenticació i s'ha emprat -y sense --allow-"
+"unauthenticated (permetre no autenticats)"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "No s'ha pogut determinar l'espai lliure en %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "No teniu prou espai lliure en %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "No és possible blocar el directori de descàrrega"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"No s'han pogut instal·lar alguns paquets. Això pot ser degut a que heu\n"
+"demanat una situació impossible o que esteu emprant la distribució\n"
+"«unstable» i alguns paquets requerits encara no han estat creats o bé\n"
+"encara no els hi han introduït des d'«Incoming»."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "La informació següent pot ajudar-vos a resoldre la situació:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Paquets trencats"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"No es poden baixar alguns arxius, proveu a executar apt-get update o "
+"intenteu-ho amb --fix-missing."
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr ""
+"S'ha produït un error intern, s'ha cridat a InstallPackages amb paquets "
+"trencats!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr ""
+"Els paquets necessiten ser suprimits però s'ha inhabilitat la supressió."
+
+#: apt-private/private-install.cc
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr ""
+"S'han eliminats paquets essencials i s'ha usat -y sense --allow-remove-"
+"essencial (permetre eliminar essencials)"
+
+#: apt-private/private-install.cc
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr ""
+"Els paquets s'han revertit i s'ha usat -y sense --allow-downgrades (permetre "
+"revertir)."
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+"Es van canviar els paquets retinguts i es va utilitzar -y sense --allow-"
+"change-held-packages."
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "S'ha produït un error intern, l'ordenació no ha acabat"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Què estrany… les mides no coincideixen, informeu a apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "S'ha d'obtenir %sB/%sB d'arxius.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "S'ha d'obtenir %sB d'arxius.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr ""
+"Després d'aquesta operació s'empraran %sB d'espai en disc addicional.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Després d'aquesta operació s'alliberaran %sB d'espai en disc.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "S'ha especificat «Trivial Only» però aquesta operació no és trivial."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Sí, fes el que et dic!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Esteu a punt de fer quelcom potencialment nociu.\n"
+"Per continuar escriviu la frase «%s»\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Avortat."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Voleu continuar?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Alguns fitxers no s'han pogut baixar"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Baixada completa i en mode de només baixada"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing i els medi intercanviables actualment no estan suportats"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "No es poden corregir els paquets que falten."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "S'està avortant la instal·lació."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"El següent paquet ha desaparegut del vostre sistema ja\n"
+"que tots els fitxers s'han sobreescrit per altres paquets:"
+msgstr[1] ""
+"El següents paquets han desaparegut del vostre sistema ja\n"
+"que tots els fitxers s'han sobreescrit per altres paquets:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Nota: Això ho fa el dpkg automàticament i a propòsit."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+"Es suposa que no hauriem de suprimir coses, no es pot iniciar el supressor "
+"automàtic"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Sembla que el supressor automàtic ha destruït alguna cosa que no deuria. Si "
+"us plau, envieu un informe d'error per a l'apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "S'ha produït un error intern, el supressor automàtic ha trencat coses"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"El paquet següent s'ha instal·lat automàticament i ja no serà necessari:"
+msgstr[1] ""
+"El paquets següents s'han instal·lat automàticament i ja no serà necessaris:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] ""
+"El paquet %lu es va instal·lar automàticament i ja no és necessari:\n"
+msgstr[1] ""
+"Els paquets %lu es van instal·lar automàticament i ja no són necessaris:\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Empreu «%s» per a suprimir-lo."
+msgstr[1] "Empreu «%s» per a suprimir-los."
+
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "S'instal·laran els següents paquets extres:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Paquets suggerits:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Paquets recomanats:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+"S'està ometent %s, ja està instal·lat i l'actualització no està establerta.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"S'està ometent '%s', no està instal·lat i només es demana l'actualització.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "No es possible la reinstal·lació del paquet %s, no es pot baixar.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s ja està en la versió més recent (%s).\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "S'ha marcat %s com instal·lat manualment.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Versió seleccionada «%s» (%s) per a «%s»\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Versió seleccionada «%s» (%s) per a «%s» degut a «%s»\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr "Llistant"
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] "Hi ha %i versió addicional. Utilitzi l'opció «-a» per veure-les"
+msgstr[1] "Hi han %i versions addicionals. Utilitzi l'opció «-a» per veure-les"
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"Nota: Això només és una simulació!\n"
+" L'%s necessita privilegis de root per a l'execució real.\n"
+" Tingueu en ment que el bloqueig està desactivat,\n"
+" per tant, no es depèn de la situació actual real.\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr "desconegut"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr "[Instal·lat, actualitzable a: %s]"
+
+#: apt-private/private-output.cc
+msgid "[installed,local]"
+msgstr "[instal·lat,local]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr "[instal·lat, auto-eliminable]"
+
+#: apt-private/private-output.cc
+msgid "[installed,automatic]"
+msgstr "[instal·lat,automàtic]"
+
+#: apt-private/private-output.cc
+msgid "[installed]"
+msgstr "[instal·lat]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr "[actualitzable des de: %s]"
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr "[configuració-residual]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "però està instal·lat %s"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "però s'instal·larà %s"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "però no és instal·lable"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "però és un paquet virtual"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "però no serà instal·lat"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "però no està instal·lat"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " o"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Els següents paquets tenen dependències sense satisfer:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "S'instal·laran els paquets NOUS següents:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Es SUPRIMIRAN els paquets següents:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "S'han mantingut els paquets següents:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "S'actualitzaran els paquets següents:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Es DESACTUALITZARAN els paquets següents:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Es canviaran els paquets retinguts següents:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (per %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"AVÃS: Es suprimiran els paquets essencials següents.\n"
+"Això NO s'ha de fer a menys que sapigueu exactament el que esteu fent!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu actualitzats, %lu nous a instal·lar, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu reinstal·lats, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu desactualitzats, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu a suprimir i %lu no actualitzats.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu no instal·lats o suprimits completament.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[S/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[s/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "S"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "Heu de donar com a mínim un patró de cerca"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr "Buscar en tot el text"
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "El fitxer %s del paquet està desincronitzat."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] "Hi ha %i registre addicional. Utilitzi l'opció «-a» per veure'l."
+msgstr[1] ""
+"Hi han %i registres addicionals. Utilitzi l'opció «-a» per veure'ls."
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr "no és un paquet real (virtual)"
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Fitxers de paquets:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+"Memòria cau no sincronitzada, no es pot fer x-ref a un fitxer del paquet"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Paquets etiquetats:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr "%s -> %s amb prioritat %d\n"
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Instal·lat: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Candidat: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(cap)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Taula de versió:"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "No s'ha pogut trobar el paquet per l'arquitectura «%s»"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "No s'ha pogut trobar el paquet «%s» amb versió «%s»"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "No s'ha pogut trobar el paquet «%s» amb publicació «%s»"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "S'està agafant «%s» com a paquet font en lloc de '%s'\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "No s'ha pogut trobar la versió «%s» del paquet «%s»"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Haureu d'especificar un paquet de codi font per a baixar"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "No es pot trobar un paquet de fonts per a %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"Avís: L'empaquetat de «%s» és mantingut amb el sistema de control de\n"
+"versions «%s» a:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Empreu:\n"
+"%s\n"
+"per obtenir les últimes actualitzacions (possiblement no publicades) del "
+"paquet.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "S'està ometent el fitxer ja baixat «%s»\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Es necessita baixar %sB/%sB d'arxius font.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Es necessita baixar %sB d'arxius font.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Obtén el font %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "No s'ha pogut baixar alguns arxius."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr ""
+"S'està ometent el desempaquetament de les fonts que ja ho estan en %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "L'ordre de desempaquetar «%s» ha fallat.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Comproveu si el paquet «dpkgdev» està instal·lat.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "L'ordre de construir «%s» ha fallat.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr ""
+"No es pot obtenir informació sobre les dependències de construcció per a %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s no té dependències de construcció.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"S'ha d'especificar un paquet per a verificar les dependències de construcció "
+"per a"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"No hi ha informació d'arquitectura disponible per a %s. Vegeu apt.conf(5) "
+"APT::Architectures per a configurar-ho"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+"Tingues en compte que s'està utilitzant «%s» per obtenir les dependències de "
+"compilació\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr ""
+"Tingues en compte que s'està fent servir el fitxer «%s» per obtenir les "
+"dependències de construcció\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "No es poden processar les dependències de construcció"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "No s'ha pogut analitzar %s. Vol tornar-lo a editar? "
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr "El fitxer «%s» ha canviat, executi «apt-get update»."
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "El paquet %s versió %s té una dependència sense satisfer:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "L'ordre update no pren arguments"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+"Es pot actualitzar %i paquet. Executi «apt list --upgradable» per veure'l.\n"
+msgstr[1] ""
+"Es poden actualitzar %i paquets. Executi «apt list --upgradable» per "
+"veure'ls.\n"
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr "Tots els paquets estan actualitzats."
+
+#: cmdline/apt-cache.cc
+msgid "apt-cache stats does not take any arguments"
+msgstr "apt-cache stats no pren cap argument"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Nombre total de paquets: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Nombre total d'estructures de paquets: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Paquets normals: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Paquets virtuals purs: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Paquets virtuals únics: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Paquets virtuals mixtes: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Falten: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Nombre total de versions diferents: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Nombre total de descripcions diferents: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Nombre total de dependències: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Nombre total de relacions versió/fitxer: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Nombre total de relacions descripció/fitxer: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Nombre total dels mapes aportats: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Nombre total de cadenes globals: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Nombre total de l'espai desaprofitat: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Nombre total de l'espai atribuït a: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+"Aquesta ordre és desaconsellada. Empreu «apt-mark showauto» en el seu lloc."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+"Forma d'ús: apt-cache [opcions] ordre\n"
+" apt-cache [opcions] show paq1 [paq2 ...]\n"
+"\n"
+"apt-cache sol·licita i mostra la informació disponible sobre els paquets\n"
+"instal·lats i els instal·lables. Funciona exclusivament amb les dades "
+"obtingudes\n"
+"en la memòria cau local mitjançant l'ordre «update», p.ex. «apt-get». Per "
+"tant, \n"
+"la informació mostrada pot estar desactualitzada si l'última actualització\n"
+"es va fer fa molt, però a canvi apt-cache funciona independentment de la\n"
+"disponibilitat de les fonts configurades (p.ex., sense connexió).\n"
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Mostra un registre d'un paquet font"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Cerca en la llista de paquets per un patró d'expressió regular"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Mostra informació de dependències (en cru) d'un paquet"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Mostra informació de dependències inverses d'un paquet"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Mostra un registre llegible pel paquet"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Llista els noms de tots els paquets del sistema"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Mostra la configuració de política"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Doneu un nom per a aquest disc, com per exemple «Debian 5.0.3 Disc 1»"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Inseriu un disc en la unitat i premeu [Intro]"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "No s'ha pogut muntar «%s» a «%s»"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+"No s'ha pogut detectar cap CD-ROM automàticament o mitjançant el punt de "
+"muntatge predeterminat.\n"
+"Pot intentar l'opció --cdrom per establir el punt de muntatge del CD-ROM.\n"
+"Vegi «man apt-cdrom» para més informació sobre l'autodetecció i el punt de "
+"muntatge del CD-ROM."
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Repetiu aquest procés per a la resta de CD del vostre joc."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+"Forma d'ús: apt-cdrom [opcions] ordre\n"
+"\n"
+"apt-cdrom s'utilitza per afegir CDROM's, memòries flaix USB i altres tipus "
+"de\n"
+"mitjans desmuntables com a orígens de paquets a APT. El punt de muntatge i "
+"la \n"
+"informació sobre el dispositiu s'obtenen de apt.conf(5), udev(7) i "
+"fstab(5).\n"
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Els arguments no són en parells"
+
+#: cmdline/apt-config.cc
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Forma d'ús: apt-config [opcions] ordre\n"
+"\n"
+"apt-config és una interfície per configurar les opcions usades per \n"
+"totes les eines APT, destinada principalment a la depuració i \n"
+"les seqüències d'intèrpret d'ordres.\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+"obtenir valors de configuració mitjançant l'avaluació de l'intèrpret d'ordres"
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr "mostrar la configuració activa establerta"
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+"Forma d'ús: apt-dump-solver\n"
+"\n"
+"apt-dump-solver és una interfície per emmagatzemar un escenari EDSP en un "
+"fitxer i opcionalment enviar-lo a un altre resolutor.\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Forma d'ús: apt-extracttemplates fitxer1 [fitxer2 ...]\n"
+"\n"
+"apt-extracttemplates és una eina per a extreure informació dels \n"
+"fitxers de configuració i plantilla dels paquets debian.\n"
+"L'usa bàsicament debconf(1) per fer preguntes sobre la configuració\n"
+"abans d'instal·lar els paquets\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "No es pot determinar la versió de debconf. Està instal·lat debconf?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "No s'ha pogut trobar el paquet %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "S'ha marcat %s com instal·lat automàticament.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Aquesta ordre és desaconsellada. Empreu «apt-mark auto» i «apt-mark manual» "
+"en el seu lloc."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr ""
+"S'ha produït un error intern, el solucionador de problemes ha trencat coses"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Mòduls suportats:"
+
+#: cmdline/apt-get.cc
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Forma d'ús: apt-get [opcions] ordre\n"
+" apt-get [opcions] install|remove paq1 [paq2 …]\n"
+" apt-get [opcions] source paq1 [paq2 …]\n"
+"\n"
+"apt-get és una interfície de línia d'ordres per baixar paquets\n"
+"i obtenir-ne informació d'orígens segurs. També per instal·lació,\n"
+"actualització i eliminació de paquets conjuntament amb les seves\n"
+"dependències.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Obtén llistes noves dels paquets"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Realitza una actualització"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Instal·la nous paquets (el paquet és libc6, no libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Suprimeix paquets"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Suprimeix i purga paquets"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Suprimeix automàticament tots els paquets en desús"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Actualitza la distribució, vegeu apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Segueix les seleccions del dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Configura dependències de construcció pels paquets font"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Suprimeix els fitxers d'arxiu baixats"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Suprimeix els fitxers d'arxiu antics baixats"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Verifica que no hi hagi dependències trencades"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Baixa arxius font"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "Baixa el paquet binari al directori actual"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "Baixa i mostra el registre de canvis del paquet"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr "Es necessita un URL com a argument"
+
+#: cmdline/apt-helper.cc
+msgid "Must specify at least one pair url/filename"
+msgstr "Haureu d'especificar com a mínim un parell de url/nom_de_fitxer"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr "Ha fallat la baixada"
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr "Ha fallat GetSrvRec per %s"
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+"Forma d'ús: apt-helper [opcions] ordre\n"
+" apt-helper [opcions] fitxer-cat fitxer ...\n"
+" apt-helper [opcions] fitxer-descarrega uri ruta-destí\n"
+"\n"
+"apt-helper reuneix un conjunt d'ordres perquè s'utilitzin en seqüències\n"
+"d'intèrpret d'ordres. Per exemple la mateixa configuració de proxy \n"
+"o el mateix sistema que APT.\n"
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr "descarrega la uri proporcionada a la ruta de destinació"
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr "buscar un registre SRV (per exemple, _http._tcp.ftp.debian.org)"
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr "concatenar fitxers, amb descompressió automàtica"
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr "detecta el servidor intermediari usant apt.conf"
+
+#: cmdline/apt-internal-planner.cc
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Forma d'ús: apt-internal-planner\n"
+"\n"
+"apt-internal-planner és una interfície per usar el planificador\n"
+"intern actual d'instal·lació. Tant per la família APT com per una\n"
+"externa, per depuració i d'altres.\n"
+
+#: cmdline/apt-internal-solver.cc
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Forma d'ús: apt-internal-solver\n"
+"\n"
+"apt-internal-solver és una interfície per usar el resolutor\n"
+"intern actual. Tant per la família APT com per una externa, \n"
+"per depuració i d'altres.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "%s no es pot marcar perquè no està instal·lat.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s ja estava marcat com instal·lat manualment.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s ja estava marcat com instal·lat automàticament.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s ja estava retingut.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s ja estava no retingut.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "L'execució del dpkg ha fallat. Sou root?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "S'ha marcat %s com retingut.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "S'ha cancel·lat la marca de retenció en %s.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr "Seleccionat %s per purgar.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr "Seleccionat %s per eliminar.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr "Seleccionat %s per instal·lar.\n"
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"Forma d'ús: apt-mark [opcions] {auto|manual} paq1 [paq2 ...]\n"
+"\n"
+"apt-mark és una senzilla interfície de línia d'ordres per marcar paquets\n"
+"com instal·lables tant manualment com automàticament. També es pot utilitzar "
+"per\n"
+"manipular els estats de selecció de paquets de dpkg(1) i per llistar\n"
+"tots els paquets amb o sense una marca determinada.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "Marca els paquets proporcionats com instal·lables automàticament"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "Marca els paquets proporcionats com instal·lables manualment"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr "Marca el paquet com retingut"
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr "Desmarca un paquet marcat com retingut"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr "Mostra la llista dels paquets instal·lats automàticament"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr "Mostra la llista dels paquets instal·lats manualment"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr "Mostra la llista dels paquets retinguts"
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Registre del paquet desconegut!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+"Forma d'ús: apt-sortpkgs [opcions] fitxer1 [fitxer2 ...]\n"
+"\n"
+"apt-sortpkgs és una senzilla eina per ordenar els fitxers\n"
+"d'informació dels paquets. De forma predeterminada, ordena a través\n"
+"de la informació del paquet binari, però es pot utilitzar l'opció\n"
+"-s per ordenar a través del l'origen.\n"
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+"Forma d'ús: apt [opcions] ordre\n"
+"\n"
+"apt és un gestor de paquets de línia d'ordres que proporciona ordres\n"
+"per a la cerca i gestió així com la sol·licitud d'informació sobre\n"
+"els paquets. Proporciona la mateixa funcionalitat que les eines\n"
+"APT especialitzades, com apt-get i apt-cache, però permet opcions \n"
+"més apropiades per a un ús interactiu de forma predeterminada.\n"
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr "llista els paquets segons els noms"
+
+#: cmdline/apt.cc
+msgid "search in package descriptions"
+msgstr "cerca en les descripcions dels paquets"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr "mostra detalls del paquet"
+
+#. package stuff
+#: cmdline/apt.cc
+msgid "install packages"
+msgstr "instal·la paquets"
+
+#: cmdline/apt.cc
+msgid "remove packages"
+msgstr "elimina paquets"
+
+#. system wide stuff
+#: cmdline/apt.cc
+msgid "update list of available packages"
+msgstr "actualitza la llista dels paquets disponibles"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr "actualitza el sistema instal·lant/actualitzant paquets"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr "actualitza el sistema eliminant/instal·lant/actualitzant paquets"
+
+#. misc
+#: cmdline/apt.cc
+msgid "edit the source information file"
+msgstr "edita el fitxer d'informació d'origen"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Paràmetre per defecte incorrecte!"
+
+#: dselect/install dselect/update
+msgid "Press [Enter] to continue."
+msgstr "Premeu [Intro] per a continuar."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Voleu suprimir els paquets .deb baixats prèviament?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr ""
+"S'han produït alguns errors en desempaquetar. Els paquets que s'han "
+"instal·lat"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "seran configurats. Això pot provocar errors duplicats"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"o errors causats per dependències sense satisfer. Això està bé, només els "
+"errors"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"anteriors a aquest missatge són importants. Corregiu-los i torneu a executar "
+"[I]nstal·la una altra vegada"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "S'està fusionant la informació disponible"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "La llista de les extensions dels paquets és massa llarga"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "S'ha produït un error en processar el directori %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "La llista d'extensions de les fonts és massa llarga"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "S'ha produït un error en escriure la capçalera al fitxer de continguts"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "S'ha produït un error en processar el fitxer de continguts %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Forma d'ús: apt-ftparchive [opcions] ordre\n"
+"Ordres: packages camí_binaris [fitxer_substitucions prefix_camí]]\n"
+" sources camí_fonts [fitxer_substitucions [prefix_camí]]\n"
+" contents camí\n"
+" release camí\n"
+" generate config [grups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive genera fitxers d'índex per als arxius de Debian.\n"
+"Gestiona molts estils per a generar-los, des dels completament automàtics\n"
+"als substituts funcionals per dpkg-scanpackages i dpkg-scansources.\n"
+"\n"
+"apt-ftparchive genera fitxers Package des d'un arbre de .deb. El\n"
+"fitxer Package conté tots els camps de control de cada paquet així com\n"
+"la suma MD5 i la mida del fitxer. Es suporten els fitxers de substitució\n"
+"per a forçar el valor de Prioritat i Secció.\n"
+"\n"
+"D'un mode semblant, apt-ftparchive genera fitxers Sources des d'un arbre\n"
+"de .dsc. Es pot utilitzar l'opció --source-override per a especificar un\n"
+"fitxer de substitucions de src.\n"
+"\n"
+"L'ordre «packages» i «sources» hauria d'executar-se en l'arrel de\n"
+"l'arbre. CamíBinaris hauria de ser el punt base de la recerca recursiva\n"
+"i el fitxer de substitucions hauria de contenir senyaladors de substitució.\n"
+"Prefixcamí s'afegeix als camps del nom de fitxer si està present.\n"
+"Exemple d'ús a l'arxiu de Debian:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Opcions:\n"
+" -h Aquest text d'ajuda\n"
+" --md5 Generació del control MD5\n"
+" -s=? Fitxer de substitucions per a fonts\n"
+" -q Silenciós\n"
+" -d=? Selecciona la base de dades de memòria cau opcional\n"
+" --no-delink Habilita el mode de depuració delink\n"
+" --contents Genera el fitxer amb els continguts de control\n"
+" -c=? Llegeix aquest fitxer de configuració\n"
+" -o=? Estableix una opció de configuració arbitrària"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "No s'ha trobat cap selecció"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "No es troben alguns fitxers dins del grup de fitxers del paquet `%s'"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "La base de dades està corrompuda, fitxer renomenat a %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "La BD és vella, s'està intentant actualitzar %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"El format de la base de dades és invàlid. Si heu actualitzat des d'una "
+"versió més antiga de l'apt, suprimiu i torneu a crear la base de dades."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "No es pot obrir el fitxer de DB %s: %s"
+
+#: ftparchive/cachedb.cc
+msgid "Failed to read .dsc"
+msgstr "No s'ha pogut llegir el fitxer .dsc"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Arxiu sense registre de control"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "No es pot aconseguir un cursor"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - No s'ha pogut assignar espai en memòria"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Algorisme de compressió desconegut '%s'"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "La sortida comprimida %s necessita un joc de compressió"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "No s'ha pogut crear el conducte IPC al subprocés"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "No s'ha pogut bifurcar"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Comprimeix el fil"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "S'ha produït un error intern, no s'ha pogut crear %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Ha fallat l'E/S del subprocés sobre el fitxer"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "No s'ha pogut llegir mentre es calculava la suma MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "No es pot obrir %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Hi ha una sobreescriptura mal formada %s en la línia %llu (%s)"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "No s'ha pogut llegir la línia predominant del fitxer %s"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Línia predominant %s malformada %llu núm 1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Línia predominant %s malformada %llu núm 2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Línia predominant %s malformada %llu núm 3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "A: No es pot llegir el directori %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "A: No es pot veure l'estat %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "A: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: Els errors s'apliquen al fitxer "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "No s'ha pogut resoldre %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "L'arbre està fallant"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "No s'ha pogut obrir %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** No s'ha pogut enllaçar %s a %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " DeLink s'ha arribat al límit de %sB.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Arxiu sense el camp paquet"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s no té una entrada dominant\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " el mantenidor de %s és %s, no %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s no té una entrada dominant de font\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s no té una entrada dominant de binari\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "S'estan esperant les capçaleres"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "El servidor HTTP ha enviat una capçalera de resposta no vàlida"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Línia de capçalera incorrecta"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "El servidor HTTP ha enviat una capçalera de Content-Length no vàlida"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "El servidor HTTP ha enviat una capçalera de Content-Range no vàlida"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Aquest servidor HTTP té el suport d'abast trencat"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Format de la data desconegut"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Capçalera de dades no vàlida"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Ha fallat la connexió"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+"S'ha desactivat automàticament %s a causa d'una resposta incorrecta del "
+"servidor o del servidor intermedi. (man 5 apt.conf)"
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Error intern"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "No es pot llegir la base de dades del cdrom %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Si us plau, useu apt-cdrom per a que aquest CD sigui reconegut per APT. No "
+"pot emprar-se apt-get update per afegir-ne de nous"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "CD erroni"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "No es pot muntar el CD-ROM en %s, potser estigui encara en ús."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "No s'ha trobat el disc"
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Fitxer no trobat"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr "Les connexions directes als dominis %s estan bloquejades per defecte."
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "S'està connectant amb %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "No s'ha pogut crear un sòcol per a %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "No es pot iniciar la connexió amb %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "No s'ha pogut connectar amb %s:%s (%s), temps de connexió excedit"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Ha fallat"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "No s'ha pogut connectar amb %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "S'està connectant amb %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "No s'ha pogut resoldre «%s»"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "S'ha produït un error temporal en resoldre «%s»"
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Hi ha hagut un error de sistema en resoldre «%s:%s»"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Ha passat alguna cosa estranya en resoldre «%s:%s» (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "No es pot connectar amb %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "L'estat ha fallat"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "URI no vàlid, els URI locals no han de començar per //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "S'està accedint a"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "No es pot determinar el nom de la màquina distant"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "No es pot determinar el nom local"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "El servidor ha rebutjat la nostra connexió i ha dit: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER ha fallat, el servidor ha dit: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS ha fallat, el servidor ha dit: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"S'ha especificat un servidor intermediari però no un script d'accés, "
+"Acquire::ftp::ProxyLogin està buit."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "L'ordre «%s» del guió d'accés ha fallat, el servidor ha dit: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE ha fallat, el servidor ha dit: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Temps de connexió finalitzat"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "El servidor ha tancat la connexió"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Una resposta ha desbordat la memòria intermèdia."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Protocol corromput"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "No s'ha pogut crear un sòcol"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "No s'ha pogut connectar amb el sòcol de dades, connexió finalitzada"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "No s'ha pogut connectar amb el sòcol passiu."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "gettaddrinfo no es pot obtenir un sòcol que escolte"
+
+# abastar? huh? jm
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "No s'ha pogut vincular a un connector"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "No s'ha pogut escoltar sobre el sòcol"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "No s'ha pogut determinar el nom del sòcol"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "No es pot enviar l'ordre PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "La família d'adreces %u és desconeguda (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT ha fallat, el servidor ha dit: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "S'ha esgotat el temps de connexió al sòcol de dades"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "No es pot acceptar la connexió"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Problema escollint el fitxer"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "No és possible obtenir el fitxer, el servidor ha dit '%s'"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "S'ha esgotat el temps d'espera per al sòcol de dades"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Ha fallat la transferència de dades, el servidor ha dit '%s'"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Consulta"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "No es pot invocar"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+"El fitxer signat en clar no és vàlid, s'ha obtingut «%s». Comprovi si la "
+"xarxa requereix autenticació."
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "S'ha trobat almenys una signatura invàlida."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Error intern: La signatura és correcta, però no s'ha pogut determinar "
+"l'empremta digital de la clau!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"No s'ha pogut executar el «apt-key» per a verificar la signatura (està "
+"instal·lat el gnupg?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "S'ha produït un error desconegut en executar el apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr "La signatura per la clau %s usa un algoritme de repte dèbil (%s)"
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Les signatures següents són invàlides:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Les signatures següents no s'han pogut verificar perquè la clau pública no "
+"està disponible:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "S'ha produït un error en escriure al fitxer"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr ""
+"S'ha produït un error en llegir, el servidor remot ha tancat la connexió"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "S'ha produït un error en llegir des del servidor"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "S'ha produït un error en escriure al fitxer"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Ha fallat la selecció"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Connexió finalitzada"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "S'ha produït un error en escriure al fitxer de sortida"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "No s'ha trobat el fitxer rèplica «%s»"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "No es pot llegir el fitxer rèplica «%s»"
+
+#: methods/mirror.cc
+#, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "No s'ha trobat l'entrada en el fitxer de rèplica «%s»"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Rèplica: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "No s'ha pogut establir el temps de modificació"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "La connexió s'ha tancat prematurament"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "Els fitxers buits no poden ser arxius vàlids"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Dependències sense satisfer. Proveu-ho emprant --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr "Potser voldreu executar «apt --fix-broken install» per corregir-ho:"
diff --git a/po/cs.po b/po/cs.po
new file mode 100644
index 000000000..5a6807d6a
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,4359 @@
+# Czech translation of APT
+# This file is put in the public domain.
+# Miroslav Kure <kurem@debian.cz>, 2004-2017.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.4.2\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2017-05-06 11:08+0200\n"
+"Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
+"Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n>=2 && n<=4 ? 1 : 2;\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Neplatný podpis archivu"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Chyba pÅ™i Ätení záhlaví prvku archivu"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Neplatné záhlaví prvku archivu %s"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Neplatné záhlaví prvku archivu"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Archiv je příliš krátký"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Chyba pÅ™i Ätení hlaviÄek archivu"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Nelze najít zadaný komprimaÄní program „%s“"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Porušený archiv"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Kontrolní souÄet taru selhal, archiv je poÅ¡kozený"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Neznámá hlaviÄka TARu typ %u, Älen %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Toto není platný DEB archiv, chybí Äást „%s“"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "VnitÅ™ní chyba, nelze najít Äást %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Nezpracovatelný kontrolní soubor"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Selhal zápis souboru %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Selhalo zavření souboru %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Cesta %s je příliš dlouhá"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "%s se rozbaluje vícekrát"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "Adresář %s je odkloněn"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Balík se pokouší zapisovat do diverzního cíle %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Diverzní cesta je příliš dlouhá"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Nelze vyhodnotit %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Selhalo přejmenování %s na %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "Adresář %s bude nahrazen neadresářem"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Nelze nalézt uzel v jeho hashovacím kbelíku"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Cesta je příliš dlouhá"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Přepsat vyhovující balík bez udání verze pro %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Soubor %s/%s přepisuje ten z balíku %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Nelze Äíst %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Nelze vyhodnotit %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "Pokus o uvolnění uzlu (DropNode) na stále propojeném uzlu"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Nelze lokalizovat hashovací prvek!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Nelze alokovat diverzi"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Vnitřní chyba při AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Pokus o přepsání diverze, %s -> %s a %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Dvojí přidání diverze %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Duplicitní konfiguraÄní soubor %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+"Aktualizaci z takového repositáře nelze provést zabezpeÄenÄ› a je proto "
+"implicitně zakázána."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+"Data z takového repositáře nelze ověřit a proto je jejich použití "
+"potenciálnÄ› nebezpeÄné."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+"Podrobnosti o vytváření a nastavení repositářů naleznete v manuálové "
+"stránce apt-secure(8)."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Repositář „%s“ již není podepsán."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Repositář „%s“ již neobsahuje soubor Release."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+"Toto není běžně povoleno, ale bylo to vynuceno volbou Acquire::"
+"AllowDowngradeToInsecureRepositories."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Repositář „%s“ není podepsán."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Repositář „%s“ neobsahuje soubor Release."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "Repositář „%s“ nabízí pouze slabé zabezpeÄení."
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Nelze pÅ™eÄíst link %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Neshoda kontrolních souÄtů"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr "Neexisuje dostatek informací pro bezpeÄné stažení"
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "přejmenování selhalo, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Velikosti nesouhlasí"
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr "Neplatná formát souboru"
+
+#: apt-pkg/acquire-item.cc
+msgid "Signature error"
+msgstr "Chyba podpisu"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+"Podepsaný soubor není platný, obdrženo „%s“ (vyžaduje přístup na síť "
+"ověření?)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"Při ověřování podpisů se objevila chyba. Repositář není aktualizovaný, tudíž "
+"se použijí předchozí indexové soubory. Chyba GPG: %s: %s"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "Chyba GPG: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+"Přeskakuje se stažení souboru „%s“, protože repositář „%s“ nepodporuje "
+"architekturu „%s“"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"V souboru Release nelze najít oÄekávanou položku „%s“ (chybný sources.list "
+"nebo porušený soubor)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+"Přeskakuje se stažení souboru „%s“, protože repositář „%s“ o něm poskytuje "
+"pouze slabé bezpeÄnostní informace"
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"Soubor Release pro %s již expiroval (neplatný od %s). Aktualizace z tohoto "
+"repositáře se nepoužijí."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Konfliktní distribuce: %s (oÄekáváno %s, obdrženo %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Nebylo možné nalézt soubor s balíkem %s. To by mohlo znamenat, že tento "
+"balík je tÅ™eba opravit ruÄnÄ› (kvůli chybÄ›jící architektuÅ™e)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr "Nelze najít zdroj pro stažení verze „%s“ balíku „%s“"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"Indexové soubory balíku jsou narušeny. Chybí pole Filename: u balíku %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Seznam změn pro %s=%s není dostupný"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr "Metoda „%s“ je v nastavení explicitně zakázána."
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr "Jestliže jste chtěli použít Tor, použijte %s namísto %s."
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "OvladaÄ metody %s nemohl být nalezen."
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr "Je balík %s nainstalován?"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Metoda %s nebyla spuštěna správně"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "Vložte prosím disk nazvaný „%s“ do mechaniky „%s“ a stiskněte [Enter]."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Adresář seznamů %spartial chybí."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Archivní adresář %spartial chybí."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "Nelze uzamknout adresář %s"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr "V systému neexistuje omezený uživatel „%s“, nelze se zbavit oprávnění"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+"Stažení probíhá nechráněně pod uživatelem root, jelikož soubor „%s“ nebyl "
+"přístupný uživateli „%s“."
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr "VyÄiÅ¡tÄ›ní %s není podporováno"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Nelze přejít do %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Stahuje se soubor %li z %li (zbývá %s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Stahuje se soubor %li z %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr "Balík %s je potřeba přeinstalovat, ale nemohu pro něj nalézt archiv."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Chyba, pkgProblemResolver::Resolve vytváří poruchy, to může být způsobeno "
+"podrženými balíky."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "Nelze opravit problémy, některé balíky držíte v porouchaném stavu."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+"Seznamy balíků nebo stavový soubor nemohly být zpracovány nebo otevřeny."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Pro nápravu těchto problémů můžete zkusit spustit apt-get update"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Nelze pÅ™eÄíst seznam zdrojů."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Chyba při kompilaci regulárního výrazu - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Vydání „%s“ pro „%s“ nebylo nalezeno"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Verze „%s“ pro „%s“ nebyla nalezena"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Nelze najít úlohu „%s“"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Nelze najít balík vyhovující regulárnímu výrazu „%s“"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Nelze najít balík vyhovující masce „%s“"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Nelze najít balík %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr "Nelze vybrat verze balíku „%s“, protože je ÄistÄ› virtuální"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr "Nelze vybrat nejnovÄ›jší verzi balíku „%s“, protože je ÄistÄ› virtuální"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr "Nelze vybrat kandidátskou verzi balíku %s, protože žádnou nemá"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr "Nelze vybrat nainstalované verze balíku %s, protože není nainstalován"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"Nelze vybrat nainstalovanou ani kandidátskou verzi balíku „%s“, protože "
+"žádné takové verze nemá"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Řádek %u v seznamu zdrojů %s je příliš dlouhý."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Odpojuje se CD-ROM…\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Používá se přípojný bod %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Čeká se na disk…\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Připojuje se CD-ROM…\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Rozpoznává se… "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Uložený název: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Na disku se hledají indexové soubory…\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Nalezeny indexy balíků (%zu), indexy zdrojů (%zu), indexy popisů (%zu) a "
+"podpisy (%zu)\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Nenalezeny žádné balíky. Možná to není disk s Debianem, nebo je pro jinou "
+"architekturu?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Nalezený název: „%s“\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Nejedná se o platné jméno, zkuste to znovu.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Tento disk se nazývá: \n"
+"„%s“\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Kopírují se seznamy balíků…"
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Zapisuje se nový seznam balíků\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Seznamy zdrojů na tomto disku jsou:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Nebylo možno vyhodnotit %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Nelze vyhodnotit přípojný bod %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Nezdařilo se vyhodnotit cdrom"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr ""
+"Parametr příkazové řádky „%c“ [z %s] nedává v kombinaci s ostatními "
+"parametry smysl."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr ""
+"Parametr příkazové řádky %s nedává v kombinaci s ostatními parametry smysl."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Parametr příkazové řádky %s není pravdivostní hodnota"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Volba %s vyžaduje argument."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "Parametr %s: Zadání konfiguraÄní položky musí obsahovat =<hodn>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Volba %s vyžaduje jako argument celé Äíslo (integer), ne „%s“"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Volba „%s“ je příliš dlouhá"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "Nechápu význam %s, zkuste true nebo false."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Neplatná operace %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Nerozpoznaná zkratka typu: „%c“"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Otevírá se konfiguraÄní soubor %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Syntaktická chyba %s:%u: Blok nezaÄíná jménem."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Syntaktická chyba %s:%u: Zkomolená znaÄka"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Syntaktická chyba %s:%u: Za hodnotou následuje zbyteÄné smetí"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"Syntaktická chyba %s:%u: Direktivy je možné provádět pouze na nejvyšší úrovni"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Syntaktická chyba %s:%u: Příliš mnoho vnořených propojení (include)"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Syntaktická chyba %s:%u: Zahrnuto odtud"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Syntaktická chyba %s:%u: Nepodporovaná direktiva „%s“"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Syntaktická chyba %s:%u: Direktiva clear vyžaduje jako argument strom "
+"možností"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Syntaktická chyba %s:%u: Na konci souboru je zbyteÄné smetí"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Problém při odstraňování souboru %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Nepoužívá se zamykání pro zámkový soubor %s, který je pouze pro Ätení"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Nešlo otevřít zámkový soubor %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Nepoužívá se zamykání pro zámkový soubor %s připojený přes nfs"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Nelze získat zámek %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr "Seznam souborů nelze vytvořit, jelikož „%s“ není adresář"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr "Ignoruji „%s“ v adresáři „%s“, jelikož to není obyÄejný soubor"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr "Ignoruji soubor „%s“ v adresáři „%s“, jelikož nemá příponu"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr "Ignoruji soubor „%s“ v adresáři „%s“, jelikož má neplatnou příponu"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "ÄŒekali jsme na %s, ale nebyl tam"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Podproces %s obdržel chybu segmentace."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Podproces %s obdržel signál %u."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Podproces %s vrátil chybový kód (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Podproces %s neoÄekávanÄ› skonÄil"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Chyba Ätení"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Chyba zápisu"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Problém při zavírání gzip souboru %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr "NeoÄekávaný konec souboru"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Nelze vytvořit podproces IPC"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Nezdařilo se spustit kompresor "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Nelze otevřít soubor %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Nelze otevřít popisovaÄ souboru %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "Ätení, stále se má pÅ™eÄíst %llu, ale už nic nezbývá"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "zápis, stále se má zapsat %llu, ale nejde to"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Problém při zavírání souboru %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Problém při přejmenování souboru %s na %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Problém při synchronizování souboru"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Nelze zavolat mkstemp %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Nelze zapsat do %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Nelze provést mmap prázdného souboru"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Nešlo mmapovat %llu bajtů"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Nelze duplikovat popisovaÄ souboru %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "Nelze zavřít mmap"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "Nelze synchronizovat mmap"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Nešlo mmapovat %lu bajtů"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Nelze zmenšit soubor"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"Dynamickému MMapu došlo místo. Zvyšte prosím hodnotu APT::Cache-Start. "
+"SouÄasná hodnota: %lu. (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr "Nelze zvýšit velikost MMapu, protože limit %lu bajtů již byl dosažen."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Nelze zvýšit velikost MMapu, protože automatické zvětšování bylo uživatelem "
+"zakázáno."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s… Chyba!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s… Hotovo"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr "…"
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s… %u%%"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%lid %lih %limin %lis"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%lih %limin %lis"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%limin %lis"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%lis"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Výběr %s nenalezen"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr "Cíl %s chce stáhnout stejný soubor (%s) jako %s ze zdroje %s"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr "Cíl %s (%s) je nastaven vícekrát v %s a %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Nelze zpracovat Release soubor %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Release soubor %s neobsahuje žádné sekce"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Release soubor %s neobsahuje Hash záznam"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+"Release soubor %s neobsahuje Hash záznam, který by byl pro bezpeÄnost "
+"považován za dostateÄnÄ› silný"
+
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Neplatná položka „%s“ v Release souboru %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr "Pro volbu %s byly nastaveny kolidující hodnoty zdroje %s %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr "Pro volbu %s byla nastavena kolidující hodnota zdroje %s %s (%s)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr "Pro volbu %s byly nastaveny kolidující hodnoty zdroje %s %s: %s != %s"
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Nelze zpracovat soubor %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr "Nelze uzamknout administraÄní adresář (%s). Používá jej jiný proces?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Nelze uzamknout administraÄní adresář (%s). Jste root?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr "dpkg byl pÅ™eruÅ¡en, pro nápravu problému musíte ruÄnÄ› spustit „%s“."
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Není uzamÄen"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "Instaluje se %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Nastavuje se %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Odstraňuje se %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "Kompletně se odstraňuje %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "ZnaÄím si zmizení %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "SpouÅ¡tí se poinstalaÄní spouÅ¡tÄ›Ä %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "Nainstalován %s"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Adresář „%s“ chybí"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "Nelze otevřít soubor „%s“"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Připravuje se %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Rozbaluje se %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Připravuje se nastavení %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Připravuje se odstranění %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "Odstraněn %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Připravuje se úplné odstranění %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "Kompletně odstraněn %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Can not write log (%s)"
+msgstr "Nelze zapsat log (%s)"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr "Je /dev/pts připojeno?"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "Operace byla pÅ™eruÅ¡ena dříve, než mohla skonÄit"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+"Žádné apport hlášení nebylo vytvořeno, protože již byl dosažen MaxReports"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "problémy se závislostmi - ponechávám nezkonfigurované"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Žádné apport hlášení nebylo vytvoÅ™eno, protože chybová hláška naznaÄuje, že "
+"se jedná o chybu způsobenou předchozí chybou."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Žádné apport hlášení nebylo vytvoÅ™eno, protože chybová hláška naznaÄuje, že "
+"je chyba způsobena zcela zaplněným diskem."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Žádné apport hlášení nebylo vytvoÅ™eno, protože chybová hláška naznaÄuje, že "
+"je chyba způsobena zcela zaplněnou pamětí."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Žádné apport hlášení nebylo vytvoÅ™eno, protože chybová hláška naznaÄuje, že "
+"je chyba na lokálním systému."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"Žádné apport hlášení nebylo vytvoÅ™eno, protože chybová hláška naznaÄuje V/V "
+"chybu dpkg."
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Vytváří se strom závislostí"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Kandidátské verze"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Generování závislostí"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "NaÄítají se stavové informace"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Nelze otevřít stavový soubor %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Nelze zapsat doÄasný stavový soubor %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "Scénář odeslán řešiteli"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "Požadavek odeslán řešiteli"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "Příprava na obdržení řešení"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr "Externí řešitel selhal, aniž by zanechal rozumnou chybovou hlášku"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "Spuštění externího řešitele"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr "SpuÅ¡tÄ›ní externího plánovaÄe"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr "Požadavek odeslán plánovaÄi"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr "Scénář odeslán plánovaÄi"
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr "Externí plánovaÄ selhal, aniž by zanechal rozumnou chybovou hlášku"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "Zapsáno %i záznamů.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "Zapsáno %i záznamů s chybějícími soubory (%i).\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "Zapsáno %i záznamů s nesouhlasícími soubory (%i).\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "Zapsáno %i záznamů s chybějícími (%i) a nesouhlasícími (%i) soubory.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "Nelze najít autentizaÄní záznam pro: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Neshoda kontrolních souÄtů pro: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "BalíÄkovací systém „%s“ není podporován"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Nebylo možno urÄit vhodný typ balíÄkovacího systému"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr "Postup: [%3i%%]"
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "Spouští se dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"Nelze spustit okamžitou konfiguraci balíku „%s“. Podrobnosti naleznete v man "
+"5 apt.conf v Äásti APT::Immediate-Configure. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "Nelze nastavit „%s“."
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Tento bÄ›h instalace si vyžádá doÄasné odstranÄ›ní nezbytného balíku %s kvůli "
+"smyÄce v Conflicts/Pre-Depends. To je Äasto Å¡patné, ale pokud to skuteÄnÄ› "
+"chcete udělat, aktivujte možnost APT::Force-LoopBreak."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Cache balíků je prázdná"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Cache soubor balíků je poškozen"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Cache soubor balíků má nekompatibilní verzi"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Tato APT nepodporuje systém pro správu verzí „%s“"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Cache balíků byla vytvořena pro jinou architekturu: %s vs %s"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Cache soubor balíků je poÅ¡kozen, kontrolní souÄet nesouhlasí"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Závisí na"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Předzávisí na"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Navrhuje"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Koliduje s"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "DoporuÄuje"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Nahrazuje"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Porušuje"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Rozšiřuje"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Zastarává"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "důležitý"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "vyžadovaný"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "standardní"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "extra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "volitelný"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Cache má nekompatibilní systém správy verzí"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Chyba při zpracování %s (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "Wow, pÅ™ekroÄili jste poÄet jmen balíků, které tato APT umí zpracovat."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Wow, pÅ™ekroÄili jste poÄet verzí, které tato APT umí zpracovat."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Wow, pÅ™ekroÄili jste poÄet popisů, které tato APT umí zpracovat."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "Wow, pÅ™ekroÄili jste poÄet závislostí, které tato APT umí zpracovat."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "NaÄítají se seznamy balíků"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Chyba IO při ukládání zdrojové cache"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Indexový typ souboru „%s“ není podporován"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"Hodnota „%s“ není v APT::Default-Release platná, protože toto vydání není "
+"dostupné v sources.list"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Neplatný záznam v souboru preferencí %s, chybí hlaviÄka Package"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Nerozumím vypíchnutí typu %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr "%s: Hodnota %s leží mimo rozsah platných priorit (%d až %d)"
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Pro vypíchnutí nebyla zadána žádná (nebo nulová) priorita"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Zkomolený řádek %u v %s souboru %s (%s)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Otevírá se %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Zkomolený řádek %u v seznamu zdrojů %s (typ)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Typ „%s“ na řádce %u v seznamu zdrojů %s není známý"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Zkomolená Äást %u v seznamu zdrojů %s (typ)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Typ „%s“ v Äásti %u v seznamu zdrojů %s není známý"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr "Zadán nepodporovaný soubor %s"
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Do sources.list musíte zadat „zdrojové“ URI"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr "Nelze pÅ™evést %s na celé Äíslo: mimo rozsah"
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Selhalo stažení %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Některé indexové soubory se nepodařilo stáhnout. Jsou ignorovány, nebo jsou "
+"použity starší verze."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "PropoÄítává se aktualizace"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Mám:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Stahuje se:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Ign:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Err:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Staženo %sB za %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Pracuji]"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Výměna média: vložte prosím disk nazvaný\n"
+" „%s“\n"
+"do mechaniky „%s“ a stiskněte [Enter]\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Opravují se závislosti…"
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " selhalo."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Nelze opravit závislosti"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Nelze minimalizovat sadu pro aktualizaci"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Hotovo"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "Pro opravení můžete spustit „apt --fix-broken install“."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Nesplněné závislosti. Zkuste spustit „apt --fix-broken install“ bez balíků "
+"(nebo navrhněte řešení)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr "Řadí se"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Pozn: vybírám „%s“ pro úlohu „%s“\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Pozn: vybírám „%s“ pro masku „%s“\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Pozn: vybírám „%s“ pro regulární výraz „%s“\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Balík %s je virtuální balík poskytovaný:\n"
+
+#: apt-private/private-cacheset.cc
+msgid " [Installed]"
+msgstr " [Nainstalovaný]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [Není kandidátská verze]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Měli byste explicitně vybrat jeden k instalaci."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Balík %s není dostupný, ale jiný balík se na něj odkazuje.\n"
+"To může znamenat že balík chybí, byl zastarán, nebo je dostupný\n"
+"pouze z jiného zdroje\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Nicméně následující balíky jej nahrazují:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Balík „%s“ nemá kandidáta pro instalaci"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Virtuální balíky jako „%s“ nemohou být odstraněny\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"Balík „%s“ není nainstalován, nelze tedy odstranit. Mysleli jste „%s“?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Balík „%s“ není nainstalován, nelze tedy odstranit\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Pozn: Vybírám „%s“ místo „%s“\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr "Nejpoužívanější příkazy:"
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr "Více informací o dostupných příkazech naleznete v %s."
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+"KonfiguraÄní volby a syntaxe jsou popsány v apt.conf(5).\n"
+"Informace o nastavení zdrojů se nachází v sources.list(5).\n"
+"Výběr balíků a verzí je možno vyjádřit pomocí apt_preferences(5).\n"
+"Podrobnosti o zabezpeÄení jsou dostupné v apt-secure(8).\n"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Tato APT má schopnosti svaté krávy."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr "Tento APT pomocník má schopnosti svatého Äehokoliv."
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Nebyly nalezeny žádné balíky"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "VAROVÃNÃ: Následující balíky nemohou být autentizovány!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "AutentizaÄní varování potlaÄeno.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Některé balíky nemohly být autentizovány"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Instalovat tyto balíky bez ověření?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+"--force-yes je zastaralé, použijte nÄ›kterou z voleb zaÄínajících --allow."
+
+#: apt-private/private-download.cc
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr ""
+"Vyskytly se neověřené balíky a -y bylo použito bez --allow-unauthenticated."
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Nelze urÄit volné místo v %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "V %s nemáte dostatek volného místa."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Nelze zamknout adresář pro stahování"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Některé balíky nemohly být instalovány. To může znamenat, že požadujete\n"
+"nemožnou situaci, nebo, pokud používáte nestabilní distribuci, že\n"
+"vyžadované balíky ještě nebyly vytvořeny nebo přesunuty z Příchozí fronty."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Následující informace vám mohou pomoci vyřešit tuto situaci:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Poškozené balíky"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Nelze stáhnout některé archivy. Možná spusťte apt-get update nebo zkuste --"
+"fix-missing?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Vnitřní chyba, InstallPackages byl zavolán s porušenými balíky!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Balík je potřeba odstranit ale funkce Odstranit je vypnuta."
+
+#: apt-private/private-install.cc
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr ""
+"Nezbytné balíky byly odstraněny a -y bylo použito bez --allow-remove-"
+"essential."
+
+#: apt-private/private-install.cc
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Balíky byly degradovány a -y bylo použito bez --allow-downgrades."
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+"Podržené balíky byly změněny a -y bylo použito bez --allow-change-held-"
+"packages."
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Vnitřní chyba, třídění nedoběhlo do konce"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Jak podivné… velikosti nesouhlasí, ohlaste to na apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Nutno stáhnout %sB/%sB archivů.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Nutno stáhnout %sB archivů.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "Po této operaci bude na disku použito dalších %sB.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Po této operaci bude na disku uvolněno %sB.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "Udáno „pouze triviální“, ovšem toto není triviální operace."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Ano, udělej to tak, jak říkám!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Chystáte se vykonat něco potenciálně škodlivého.\n"
+"Pro pokraÄování opiÅ¡te frázi „%s“\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Přerušeno."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Chcete pokraÄovat?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Některé soubory nemohly být staženy"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Stahování dokonÄeno v režimu pouze stáhnout"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing a výměna média nejsou momentálně podporovány"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Nelze opravit chybějící balíky."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Instalace se přerušuje."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"Následující balík z tohoto systému zmizel, protože\n"
+"všechny jeho soubory byly přepsány jinými balíky:"
+msgstr[1] ""
+"Následující balíky z tohoto systému zmizely, protože\n"
+"všechny jejich soubory byly přepsány jinými balíky:"
+msgstr[2] ""
+"Následující balíky z tohoto systému zmizely, protože\n"
+"všechny jejich soubory byly přepsány jinými balíky:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Poznámka: Toto má svůj důvod a děje se automaticky v dpkg."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "Neměli bychom mazat věci, nelze spustit AutoRemover"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Hmm, zdá se, že AutoRemover zniÄil nÄ›co, co nemÄ›l.\n"
+"Nahlaste prosím chybu v apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Vnitřní chyba, AutoRemover pokazil věci"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "Následující balík byl nainstalován automaticky a již není potřeba:"
+msgstr[1] ""
+"Následující balíky byly nainstalovány automaticky a již nejsou potřeba:"
+msgstr[2] ""
+"Následující balíky byly nainstalovány automaticky a již nejsou potřeba:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "%lu balík byl nainstalován automaticky a již není potřeba.\n"
+msgstr[1] "%lu balíky byly nainstalovány automaticky a již nejsou potřeba.\n"
+msgstr[2] "%lu balíků bylo nainstalováno automaticky a již nejsou potřeba.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Pro jeho odstranění použijte „%s“."
+msgstr[1] "Pro jejich odstranění použijte „%s“."
+msgstr[2] "Pro jejich odstranění použijte „%s“."
+
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "Následující dodateÄné balíky budou instalovány:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Navrhované balíky:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "DoporuÄované balíky:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "%s bude pÅ™eskoÄen, protože je již nainstalován.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"%s bude pÅ™eskoÄen, protože není nainstalován a vyžadovány jsou pouze "
+"aktualizace.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "Přeinstalace %s není možná, protože nelze stáhnout.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s je již nejnovější verze (%s).\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s nastaven jako instalovaný ruÄnÄ›.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Vybraná verze „%s“ (%s) pro „%s“\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Vybraná verze „%s“ (%s) pro „%s“ kvůli „%s“\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr "Vypisuje se"
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] "Existuje %i další verze. Zobrazíte ji pÅ™epínaÄem „-a“."
+msgstr[1] "Existují %i další verze. Zobrazíte je pÅ™epínaÄem „-a“."
+msgstr[2] "Existuje %i dalších verzí. Zobrazíte je pÅ™epínaÄem „-a“."
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"INFO: Toto je pouze simulace!\n"
+" %s vyžaduje pro skuteÄný bÄ›h rootovská oprávnÄ›ní.\n"
+" Mějte také na paměti, že je vypnuto zamykání, tudíž\n"
+" tyto výsledky nemusí mít s realitou nic spoleÄného!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr "neznámá"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr "[instalovaný,aktualizovatelný na: %s]"
+
+#: apt-private/private-output.cc
+msgid "[installed,local]"
+msgstr "[instalovaný,lokální]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr "[instalovaný,automaticky-odstranitelný]"
+
+#: apt-private/private-output.cc
+msgid "[installed,automatic]"
+msgstr "[instalovaný,automaticky]"
+
+#: apt-private/private-output.cc
+msgid "[installed]"
+msgstr "[instalovaný]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr "[aktualizovatelný z: %s]"
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr "[zbytkové-konfiguraÄní-coubory]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "ale %s je nainstalován"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "ale %s se bude instalovat"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "ale nedá se nainstalovat"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "ale je to virtuální balík"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "ale nebude se instalovat"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "ale není nainstalovaný"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " nebo"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Následující balíky mají nesplněné závislosti:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Následující NOVÉ balíky budou nainstalovány:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Následující balíky budou ODSTRANĚNY:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Následující balíky jsou podrženy v aktuální verzi:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Následující balíky budou aktualizovány:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Následující balíky budou DEGRADOVÃNY:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Následující podržené balíky budou změněny:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (kvůli %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"VAROVÃNÃ: Následující nezbytné balíky budou odstranÄ›ny.\n"
+"Pokud přesně nevíte, co děláte, NEDĚLEJTE to!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu aktualizováno, %lu nově instalováno, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu přeinstalováno, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu degradováno, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu k odstranění a %lu neaktualizováno.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu instalováno nebo odstranÄ›no pouze ÄásteÄnÄ›.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[Y/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[y/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "Y"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "Musíte zadat alespoň jeden vyhledávací vzor"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr "Fulltextové hledání"
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Soubor balíku %s je špatně synchronizovaný."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] "Existuje %i další záznam. Zobrazíte jej pÅ™epínaÄem „-a“."
+msgstr[1] "Existují %i další záznamy. Zobrazíte je pÅ™epínaÄem „-a“."
+msgstr[2] "Existuje %i dalších záznamů. Zobrazíte je pÅ™epínaÄem „-a“."
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr "není skuteÄný balík (virtuální)"
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Soubory balíku:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "Cache není synchronizovaná, nelze se odkázat na soubor balíku"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Vypíchnuté balíky:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr "%s -> %s s prioritou %d\n"
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Instalovaná verze: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Kandidát: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(žádná)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Tabulka verzí:"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Nelze najít balík pro architekturu „%s“"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Nelze najít balík „%s“ s verzí „%s“"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Nelze najít balík „%s“ z vydání „%s“"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Vybírám „%s“ jako zdrojový balík místo „%s“\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "Nelze najít verzi „%s“ balíku „%s“"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Musíte zadat aspoň jeden balík, pro který se stáhnou zdrojové texty"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Nelze najít zdrojový balík pro %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"INFO: Balík „%s“ je spravován v systému pro správu verzí „%s“ na:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Pro stažení nejnovějších (možná dosud nevydaných) aktualizací balíku prosím "
+"použijte:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Přeskakuje se dříve stažený soubor „%s“\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Nutno stáhnout %sB/%sB zdrojových archivů.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Nutno stáhnout %sB zdrojových archivů.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Stažení zdroje %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Stažení některých archivů selhalo."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Přeskakuje se rozbalení již rozbaleného zdroje v %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Příkaz pro rozbalení „%s“ selhal.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Zkontrolujte, zda je nainstalován balík „dpkg-dev“.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Příkaz pro sestavení „%s“ selhal.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Nelze získat závislosti pro sestavení %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s nemá žádné závislosti pro sestavení.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Musíte zadat alespoň jeden balík, pro který budou kontrolovány závislosti "
+"pro sestavení"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"O architektuÅ™e %s nejsou známy žádné informace. Pro nastavení si pÅ™eÄtÄ›te "
+"Äást APT::Architectures v manuálové stránce apt.conf(5)"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr "Pro získání závislostí pro sestavení se používá adresář „%s“\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Pro získání závislostí pro sestavení se používá soubor „%s“\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Chyba při zpracování závislostí pro sestavení"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Nepodařilo se zpracovat %s. Zkusit znovu upravit?"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr "Soubor „%s“ se změnil, spusťte prosím „apt-get update“."
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Balík %s verze %s má nesplněné závislosti:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Příkaz update neakceptuje žádné argumenty"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+"%i balík může být aktualizován. Zobrazíte jej „apt list --upgradable“.\n"
+msgstr[1] ""
+"%i balíky mohou být aktualizovány. Zobrazíte je „apt list --upgradable“.\n"
+msgstr[2] ""
+"%i balíků může být aktualizováno. Zobrazíte je „apt list --upgradable“.\n"
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr "Všechny balíky jsou aktuální."
+
+#: cmdline/apt-cache.cc
+msgid "apt-cache stats does not take any arguments"
+msgstr "apt-cache stats neakceptuje žádné argumenty"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Celkem názvů balíků: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Celkem struktur balíků: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Normálních balíků: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Čistě virtuálních balíků: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Jednoduchých virtuálních balíků: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Smíšených virtuálních balíků: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Chybějících: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Celkem různých verzí: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Celkem různých popisů: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Celkem závislostí: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Celkem vztahů ver/soubor: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Celkem vztahů popis/soubor: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Celkem poskytnutých mapování: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Celkem globovaných řetězců: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Celkem jalového místa: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Celkem přiřazeného místa: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr "Tento příkaz je zastaralý, použijte místo něj „apt-mark showauto“."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+"Použití: apt-cache [volby] příkaz\n"
+" apt-cache [volby] show balík1 [balík2 …]\n"
+"\n"
+"apt-cache dotazuje a zobrazuje dostupné informace o instalovaných\n"
+"a instalovatelných balících. Pracuje pouze s lokálními daty získanými\n"
+"příkazem „update“ např. programu apt-get. Zobrazené informace tedy\n"
+"mohou být zastaralé (pokud poslední aktualizace proběhla dávněji),\n"
+"ale zato apt-cache pracuje nezávisle na dostupnosti nastavených\n"
+"zdrojů (např. offline).\n"
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Zobrazí zdrojové záznamy"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "V seznamu balíků hledá regulární výraz"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Zobrazí závislosti balíku"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Zobrazí reverzní závislosti balíku"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Zobrazí informace o balíku"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Vypíše jména všech balíků v systému"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Zobrazí nastavenou politiku"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Zadejte prosím název tohoto média, např. „Debian 5.0.3 Disk 1“"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Vložte prosím médium do mechaniky a stiskněte [Enter]"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Selhalo připojení „%s“ na „%s“"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+"Na výchozím přípojném bodu nebylo rozpoznáno/nalezeno žádné CD-ROM.\n"
+"Můžete zkusit zadat přípojný bod CD-ROM volbou --cdrom.\n"
+"Více o rozpoznávání CD-ROM a přípojných bodech naleznete v „man apt-cdrom“."
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Tento proces opakujte pro všechna zbývající média."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+"Použití: apt-cdrom [volby] příkaz\n"
+"\n"
+"apt-cdrom se používá pro pÅ™idání CD, USB klíÄenek a jiných\n"
+"vyjímatelných médií jako zdrojů pro APT. Přípojný bod a informace\n"
+"o zařízení se získává z apt.conf(5), udev(7) a fstab(5).\n"
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Argumenty nejsou v párech"
+
+#: cmdline/apt-config.cc
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Použití: apt-config [volby] příkaz\n"
+"\n"
+"apt-config je jednoduchý nástroj pro nastavení voleb používaných všemi\n"
+"nástroji rodiny APT. Převážně je zamýšlen pro ladění a skriptování.\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr "získá nastavení přes shellové vyhodnocování"
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr "zobrazí aktuálně platné nastavení"
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+"Použití: apt-dump-solver\n"
+"\n"
+"apt-dump-solver slouží pro uložení EDSP scénáře do\n"
+"souboru a případnému přeposlání jinému řešiteli.\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Použití: apt-extracttemplates soubor1 [soubor2 …]\n"
+"\n"
+"apt-extracttemplates umí z balíků vytáhnout konfiguraÄní skripty\n"
+"a šablony. Využívá ho hlavně debconf(1) pro zobrazení některých\n"
+"otázek ještě před samotnou instalací balíků.\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Nelze urÄit verzi programu debconf. Je debconf nainstalován?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Nelze najít balík %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s nastaven jako instalovaný automaticky.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Tento příkaz je zastaralý, použijte místo něj „apt-mark auto“ a „apt-mark "
+"manual“."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Vnitřní chyba, řešitel problémů pokazil věci"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Podporované moduly:"
+
+#: cmdline/apt-get.cc
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Použití: apt-get [volby] příkaz\n"
+" apt-get [volby] install|remove balík1 [balík2 …]\n"
+" apt-get [volby] source balík1 [balík2 …]\n"
+"\n"
+"apt-get je řádkové rozhraní pro stahování balíků a informací o nich\n"
+"z ověřených zdrojů a pro instalaci, aktualizaci a odstranění balíků\n"
+"vÄetnÄ› jejich závislostí.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Získá seznam nových balíků"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Provede aktualizaci"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Instaluje nové balíky (balík je libc6, ne libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Odstraní balíky"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Odstraní balíky vÄetnÄ› konfiguraÄních souborů"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "automaticky odstraní nepoužívané balíky"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Aktualizace distribuce, viz apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Řídí se podle výběru v dselectu"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Pro zdrojové balíky nastaví build-dependencies"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Smaže stažené archivy"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Smaže staré stažené archivy"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Ověří, zda se nevyskytují porušené závislosti"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Stáhne zdrojové archivy"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "Stáhne binární balík to aktuálního adresáře"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "Stáhne a zobrazí seznam změn daného balíku"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr "Jako argument vyžaduje jedno URL"
+
+#: cmdline/apt-helper.cc
+msgid "Must specify at least one pair url/filename"
+msgstr "Musíte zadat aspoň jeden pár url/jméno souboru"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr "Stažení selhalo"
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr "GetSrvRec %s selhalo"
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+"Použití: apt-helper [volby] příkaz\n"
+" apt-helper [volby] cat-file soubor\n"
+" apt-helper [volby] download-file uri cílová_cesta\n"
+"\n"
+"apt-helper zaobaluje nejrůznější příkazy pro shellové skripty,\n"
+"např. aby použily stejné nastavení proxy nebo způsob stahování,\n"
+"jako by použila APT.\n"
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr "stáhne zadané uri do cílové cesty"
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr "vyhledá SRV záznam (např. _http._tcp.ftp.debian.org)"
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr "spojí soubory, automaticky je rozbalí"
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr "detekuje proxy pomocí apt.conf"
+
+#: cmdline/apt-internal-planner.cc
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Použití: apt-internal-planner\n"
+"\n"
+"apt-internal-planner je rozhraní k aktuálnímu internímu plánovaÄi\n"
+"instalací, aby se dal použít jako externí nástroj, např. pro ladění.\n"
+
+#: cmdline/apt-internal-solver.cc
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Použití: apt-internal-solver\n"
+"\n"
+"apt-internal-solver je rozhraní k aktuálnímu internímu řešiteli\n"
+"závislostí, aby se dal použít jako externí nástroj, např. pro ladění.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "%s nemůže být oznaÄen, protože není nainstalovaný.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s již byl nastaven jako instalovaný ruÄnÄ›.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s již byl nastaven jako instalovaný automaticky.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s již byl podržen v aktuální verzi.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s již nebyl držen v aktuální verzi.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "Spuštění dpkg selhalo. Jste root?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "%s bude podržen v aktuální verzi.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Podržení balíku %s v aktuální verzi bylo zrušeno.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr "%s byl vybrán pro odstranÄ›ní vÄetnÄ› konfguraÄních souborů.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr "%s byl vybrán pro odstranění.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr "%s byl vybrán pro instalaci.\n"
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"Použití: apt-mark [volby] {auto|manual} balík1 [balík2 …]\n"
+"\n"
+"apt-mark je jednoduché řádkové rozhraní pro oznaÄování balíků jako\n"
+"instalovaných ruÄnÄ› nebo automaticky. Také umí manipulovat s dpkg(1)\n"
+"stavem balíků a vypsat vÅ¡echny balíky s/bez konkrétního oznaÄení.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "OznaÄí dané balíky jako instalované automaticky"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "OznaÄí dané balíky jako instalované ruÄnÄ›"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr "OznaÄí balík jako podržený v aktuální verzi"
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr "Zruší podržení balíku v aktuální verzi"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr "Vypíše seznam balíků instalovaných automaticky"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr "Vypíše seznam balíků instalovaných ruÄnÄ›"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr "Vypíše seznam podržených balíků"
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Neznámý záznam o balíku!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+"Použtí: apt-sortpkgs [volby] soubor1 [soubor2 …]\n"
+"\n"
+"apt-sortpkgs je jednoduchý nástroj pro setřídění souborů Packages.\n"
+"Standardně řadí dle binárních balíků, ale volbou -s je možno\n"
+"přepnout na řazení dle zdrojových balíků.\n"
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+"Použití: apt [volby] příkaz\n"
+"\n"
+"apt je řádkový správce balíků a poskytuje příkazy pro jejich hledání,\n"
+"správu a také pro zjišťování informací o balících.\n"
+"Poskytuje stejnou funkcionalitu jako specializované APT nástroje typu\n"
+"apt-get a apt-cache, ale je lépe nastaven pro interaktivní použití.\n"
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr "vypíše balíky podle jmen"
+
+#: cmdline/apt.cc
+msgid "search in package descriptions"
+msgstr "hledá v popisech balíků"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr "zobrazí podrobnosti balíku"
+
+#. package stuff
+#: cmdline/apt.cc
+msgid "install packages"
+msgstr "nainstaluje balíky"
+
+#: cmdline/apt.cc
+msgid "remove packages"
+msgstr "odstraní balíky"
+
+#. system wide stuff
+#: cmdline/apt.cc
+msgid "update list of available packages"
+msgstr "aktualizuje seznam dostupných balíků"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr "aktualizuje systém instalací/aktualizací balíků"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr "aktualizuje systém instalací/aktualizací/odstraněním balíků"
+
+#. misc
+#: cmdline/apt.cc
+msgid "edit the source information file"
+msgstr "upraví soubor se zdroji balíků"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Chybné standardní nastavení!"
+
+#: dselect/install dselect/update
+msgid "Press [Enter] to continue."
+msgstr "Pro pokraÄování stisknÄ›te [Enter]."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Chcete smazat všechny dříve stažené .deb soubory?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "Během rozbalování se vyskytly chyby. Balíky, které se nainstalovaly"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "budou zkonfigurovány. To může způsobit duplicitní chybové hlášky"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "o nesplněných závislostech. To je v pořádku, důležité jsou pouze"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr "chyby nad touto hláškou. Opravte je a poté znovu spusťte [I]nstalovat"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "SluÄují se dostupné informace"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Seznam rozšíření balíku je příliš dlouhý"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Chyba zpracování adresáře %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Seznam zdrojových rozšíření je příliš dlouhý"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Chyba pÅ™i zapisování hlaviÄky do souboru"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Chyba při zpracovávání obsahu %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Použití: apt-ftparchive [volby] příkaz\n"
+"Příkazy: packages binárnícesta [souboroverride [prefixcesty]]\n"
+" sources zdrojovácesta [souboroverride [prefixcesty]]\n"
+" contents cesta\n"
+" release cesta\n"
+" generate konfiguraÄnísoubor [skupiny]\n"
+" clean konfiguraÄnísoubor\n"
+"\n"
+"apt-ftparchive generuje indexové soubory debianích archivů. Podporuje\n"
+"nÄ›kolik režimů vytváření - od plnÄ› automatického až po funkÄní ekvivalent\n"
+"příkazů dpkg-scanpackages a dpkg-scansources.\n"
+"\n"
+"apt-ftparchive vytvoří ze stromu .deb souborů soubory Packages. Soubor\n"
+"Packages obsahuje kromě všech kontrolních polí každého balíku také jeho\n"
+"velikost a MD5 souÄet. Podporován je také soubor override, kterým můžete \n"
+"vynutit hodnoty polí Priority a Section.\n"
+"\n"
+"Podobně umí apt-ftparchive vygenerovat ze stromu souborů .dsc soubory\n"
+"Sources. Volbou --source-override můžete zadat zdrojový soubor override.\n"
+"\n"
+"Příkazy „packages“ a „sources“ by se měly spouštět z kořene stromu.\n"
+"BinárníCesta by mÄ›la ukazovat na zaÄátek rekurzivního hledání a soubor \n"
+"override by měl obsahovat příznaky pro přepis. PrefixCesty, pokud je\n"
+"přítomen, je přidán do polí Filename.\n"
+"Reálný příklad na archivu Debianu:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Volby:\n"
+" -h Tato nápověda\n"
+" --md5 Vygeneruje kontrolní MD5\n"
+" -s=? Zdrojový soubor override\n"
+" -q Tichý režim\n"
+" -d=? Vybere volitelnou databázi pro vyrovnávací paměť\n"
+" --no-delink Povolí ladicí režim\n"
+" --contents Vygeneruje soubor Contents\n"
+" -c=? NaÄte tento konfiguraÄní soubor\n"
+" -o=? Nastaví libovolnou volbu"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Žádný výběr nevyhověl"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Některé soubory chybí v balíkovém souboru skupiny %s"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "DB je porušená, soubor přejmenován na %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "DB je stará, zkouším aktualizovat %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Formát databáze je neplatný. Pokud jste přešli ze starší verze apt, databázi "
+"prosím odstraňte a poté ji znovu vytvořte."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Nelze otevřít DB soubor %s: %s"
+
+#: ftparchive/cachedb.cc
+msgid "Failed to read .dsc"
+msgstr "Nelze pÅ™eÄíst .dsc"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Archiv nemá kontrolní záznam"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Nelze získat kurzor"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Selhal pokus o přidělení paměti"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Neznámý kompresní algoritmus „%s“"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Komprimovaný výstup %s potřebuje kompresní sadu"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Selhalo vytvoření meziprocesové roury k podprocesu"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Volání fork() se nezdařilo"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Komprimovat potomka"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Interní chyba, nezdařilo se vytvořit %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "V/V operace s podprocesem/souborem selhala"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Chyba Ätení pÅ™i výpoÄtu MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Nelze otevřít %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Zkomolený override soubor %s, řádek %llu (%s)"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "NezdaÅ™ilo se pÅ™eÄíst override soubor %s"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Zkomolený override soubor %s, řádek %llu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Zkomolený override soubor %s, řádek %llu #2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Zkomolený override soubor %s, řádek %llu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "W: Nelze Äíst adresář %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "W: Nelze vyhodnotit %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "W: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: Chyby se týkají souboru "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Chyba při zjišťování %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Průchod stromem selhal"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Nelze otevřít %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr "Odlinkování %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Nezdařilo se slinkovat %s s %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " Odlinkovací limit %sB dosažen.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Archiv nemá pole Package"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s nemá žádnou položku pro override\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " správce %s je %s, ne %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s nemá žádnou zdrojovou položku pro override\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s nemá ani žádnou binární položku pro override\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "ÄŒeká se na hlaviÄky"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "Http server poslal neplatnou hlaviÄku odpovÄ›di"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Chybná hlaviÄka"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "Http server poslal neplatnou hlaviÄku Content-Length"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "Http server poslal neplatnou hlaviÄku Content-Range"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Tento HTTP server má porouchanou podporu rozsahů"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Neznámý formát data"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Špatné datové záhlaví"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Spojení selhalo"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+"Automaticky zakázáno %s kvůli chybné odpovědi od serveru/proxy. (man 5 apt."
+"conf)"
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Vnitřní chyba"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Nelze Äíst databázi na cdrom %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Pro přidání CD do APTu použijte apt-cdrom. apt-get update nelze využít pro "
+"přidávání nových CD."
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Chybné CD"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Nelze odpojit CD-ROM v %s - možná se stále používá."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Disk nebyl nalezen."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Soubor nebyl nalezen"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr "Přímé spojení k doménám %s je implicitně blokováno."
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Připojování k %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Nelze vytvořit socket pro %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Nelze navázat spojení na %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Nelze se pÅ™ipojit k %s:%s (%s), Äas spojení vyprÅ¡el"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Selhalo"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Nelze se připojit k %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Připojování k %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Nelze přeložit „%s“"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "DoÄasné selhání pÅ™i zjiÅ¡Å¥ování „%s“"
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Systémová chyba při překladu „%s:%s“"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Něco hodně ošklivého se přihodilo při překladu „%s:%s“ (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Nelze se připojit k %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Selhalo vyhodnocení"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Neplatné URI, lokální URI nesmí zaÄínat na //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Přihlašování"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Nelze urÄit jméno druhé strany"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Nelze urÄit lokální jméno"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Server zamítl naše spojení a řekl: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER selhal, server řekl: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS selhal, server řekl: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Byl zadán proxy server, ale ne přihlašovací skript. Acquire::ftp::ProxyLogin "
+"je prázdný."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Příkaz „%s“ přihlašovacího skriptu selhal, server řekl: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE selhal, server řekl: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Čas spojení vypršel"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Server uzavřel spojení"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "OdpovÄ›Ä pÅ™eplnila buffer."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Porušení protokolu"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Nelze vytvořit socket"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Nelze pÅ™ipojit datový socket, Äas spojení vyprÅ¡el"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Nelze připojit pasivní socket."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo nezískal naslouchající socket"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Nelze navázat socket"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Nelze naslouchat na socketu"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Nelze urÄit jméno socketu"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Nelze odeslat příkaz PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Neznámá rodina adres %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT selhal, server řekl: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Spojení datového socketu vypršelo"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Nelze přijmout spojení"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Problém s kontrolním souÄtem souboru"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Nelze stáhnout soubor, server řekl „%s“"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Datový socket vypršel"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Přenos dat selhal, server řekl „%s“"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Dotaz"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Nelze vyvolat "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+"Podepsaný soubor není platný, obdrženo „%s“ (vyžaduje přístup na síť "
+"ověření?)"
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Byl zaznamenán nejméně jeden neplatný podpis. "
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr "VnitÅ™ní chyba: Dobrý podpis, ale nelze zjistit otisk klíÄe?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr "Nelze spustit „apt-key“ pro ověření podpisu (je gnupg nainstalováno?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Neznámá chyba při spouštění apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr "Podpis klíÄem %s používá slabý algoritmus (%s)"
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Následující podpisy jsou neplatné:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Následující podpisy nemohly být ověřeny, protože není dostupný veřejný "
+"klíÄ:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Chyba zápisu do souboru"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Chyba Ätení ze serveru. Druhá strana zavÅ™ela spojení"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Chyba Ätení ze serveru"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Chyba zápisu do souboru"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Výběr selhal"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Čas spojení vypršel"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Chyba zápisu do výstupního souboru"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Soubor se zrcadly „%s“ nebyl nalezen "
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Nelze Äíst soubor se zrcadly „%s“"
+
+#: methods/mirror.cc
+#, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "V souboru se zrcadly „%s“ nebyl nalezen žádný záznam"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Zrcadlo: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Nelze nastavit Äas modifikace"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Spojení bylo pÅ™edÄasnÄ› ukonÄeno"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "Prázdné soubory nejsou platnými archivy"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Nesplněné závislosti. Zkuste použít --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Pro opravení následujících můžete spustit „apt --fix-broken install“:"
+
+#~ msgid "(not found)"
+#~ msgstr "(nenalezeno)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Vypíchnutý balík: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "K následujícím ID klíÄů není dostupný veÅ™ejný klíÄ:\n"
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "závislost %s pro %s nemůže být splněna, protože %s není na balících „%s“ "
+#~ "dovolena"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "závislost %s pro %s nemůže být splněna, protože balík %s nebyl nalezen"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Selhalo splnění závislosti %s pro %s: Instalovaný balík %s je příliš nový"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "závislost %s pro %s nemůže být splněna, protože kandidátská verze balíku "
+#~ "%s nesplňuje požadavek na verzi"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "závislost %s pro %s nemůže být splněna, protože balík %s nemá "
+#~ "kandidátskou verzi"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Selhalo splnění závislosti %s pro %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Závislosti pro sestavení %s nemohly být splněny."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Problém s odlinkováním %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Nelze odlinkovat %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Použití: apt-cache [volby] příkaz\n"
+#~ " apt-cache [volby] show balík1 [balík2 …]\n"
+#~ "\n"
+#~ "apt-cache je nízkoúrovňový nástroj pro získávání informací o balících.\n"
+
+#~ msgid "Commands:"
+#~ msgstr "Příkazy:"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Volby:\n"
+#~ " -h Tato nápověda.\n"
+#~ " -p=? Vyrovnávací paměť balíků.\n"
+#~ " -s=? Vyrovnávací paměť zdrojů.\n"
+#~ " -q Nezobrazí indikátor postupu.\n"
+#~ " -i U příkazu unmet zobrazí pouze důležité závislosti.\n"
+#~ " -c=? NaÄte daný konfiguraÄní soubor\n"
+#~ " -o=? Nastaví libovolnou volbu, např. -o dir::cache=/tmp\n"
+#~ "Více informací viz manuálové stránky apt-cache(8) a apt.conf(5).\n"
+
+#~ msgid ""
+#~ "Usage: apt [options] command\n"
+#~ "\n"
+#~ "CLI for apt.\n"
+#~ msgstr ""
+#~ "Použití: apt [volby] příkaz\n"
+#~ "\n"
+#~ "Řádkové rozhraní pro apt.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "Volby:\n"
+#~ " -h Tato nápověda.\n"
+#~ " -q Nezobrazí indikátor postupu - vhodné pro záznam\n"
+#~ " -qq Nezobrazí nic než chyby\n"
+#~ " -s Pouze simuluje prováděné akce\n"
+#~ " -f PÅ™eÄte/zapíše ruÄní/automatické znaÄky z/do daného souboru\n"
+#~ " -c=? NaÄte daný konfiguraÄní soubor\n"
+#~ " -o=? Nastaví libovolnou volbu, např. -o dir::cache=/tmp\n"
+#~ "Více informací viz manuálové stránky apt-mark(8) a apt.conf(5)."
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Volby:\n"
+#~ " -h Tato nápověda.\n"
+#~ " -c=? NaÄte tento konfiguraÄní soubor\n"
+#~ " -o=? Nastaví libovolnou volbu, např. -o dir::cache=/tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "Volby:\n"
+#~ " -h Tato nápověda.\n"
+#~ " -q Nezobrazí indikátor postupu - vhodné pro záznam\n"
+#~ " -qq Nezobrazí nic než chyby\n"
+#~ " -s Pouze simuluje prováděné akce\n"
+#~ " -f PÅ™eÄte/zapíše ruÄní/automatické znaÄky z/do daného souboru\n"
+#~ " -c=? NaÄte daný konfiguraÄní soubor\n"
+#~ " -o=? Nastaví libovolnou volbu, např. -o dir::cache=/tmp\n"
+#~ "Více informací viz manuálové stránky apt-mark(8) a apt.conf(5)."
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Použití: apt-sortpkgs [volby] soubor1 [soubor2 …]\n"
+#~ "\n"
+#~ "apt-sortpkgs je jednoduchý nástroj pro setřídění souborů Packages.\n"
+#~ "Volbou -s volíte typ souboru.\n"
+#~ "\n"
+#~ "Volby:\n"
+#~ " -h Tato nápověda\n"
+#~ " -s Setřídí zdrojový soubor\n"
+#~ " -c=? NaÄte tento konfiguraÄní soubor\n"
+#~ " -o=? Nastaví libovolnou volbu, např. -o dir::cache=/tmp\n"
+
+#~ msgid "Use --allow-insecure-repositories to force the update"
+#~ msgstr "Pro vynucení aktualizace použijte --allow-insecure-repositories"
+
+#~ msgid ""
+#~ "The data from '%s' is not signed. Packages from that repository can not "
+#~ "be authenticated."
+#~ msgstr ""
+#~ "Data z „%s“ nejsou podepsaná. Balíky z tohoto repositáře nemohou být "
+#~ "ověřeny."
+
+#~ msgid ""
+#~ "The repository '%s' does not have a Release file. This is deprecated, "
+#~ "please contact the owner of the repository."
+#~ msgstr ""
+#~ "Repositář „%s“ neobsahuje soubor Release. To již není podporováno, "
+#~ "kontaktujte prosím správce repositáře."
+
+#~ msgid "Child process failed"
+#~ msgstr "Synovský proces selhal"
+
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Musíte zadat aspoň jeden SRV záznam"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Selhalo vytvoření roury"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Selhalo spuštění gzipu "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s pro %s zkompilován na %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Selhalo vytvoření FILE*"
+
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Zkomolená Äást %u v seznamu zdrojů %s (zpracování URI)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr "Zkomolený řádek %lu v seznamu zdrojů %s (nezpracovatelná [volba])"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "Zkomolený řádek %lu v seznamu zdrojů %s (příliš krátká [volba])"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "Zkomolený řádek %lu v seznamu zdrojů %s ([%s] není přiřazení)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "Zkomolený řádek %lu v seznamu zdrojů %s ([%s] nemá klíÄ)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr "Zkomolený řádek %lu v seznamu zdrojů %s ([%s] klÃ­Ä %s nemá hodnotu)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Zkomolený řádek %lu v seznamu zdrojů %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Zkomolený řádek %lu v seznamu zdrojů %s (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Zkomolený řádek %lu v seznamu zdrojů %s (zpracování URI)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "Zkomolený řádek %lu v seznamu zdrojů %s (absolutní dist)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "Zkomolený řádek %lu v seznamu zdrojů %s (zpracování dist)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "Při zpracování závislostí nebyl nalezen balík %s %s"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Nešlo vyhodnotit seznam zdrojových balíků %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Collecting File poskytuje"
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "V souboru Release nelze najít kontrolní souÄet „%s“"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Blok výrobce %s neobsahuje otisk klíÄe"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Celkem místa závislých verzí: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Na %s nemáte dostatek volného místa"
+
+#~ msgid "Done"
+#~ msgstr "Hotovo"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "V %s není nainstalována žádná klíÄenka."
+
+#~ msgid "Is stdout a terminal?"
+#~ msgstr "Je standardní výstup terminál?"
+
+#~ msgid "ioctl(TIOCGWINSZ) failed"
+#~ msgstr "volání ioctl(TIOCGWINSZ) selhalo"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s není platný DEB balík."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Používám přípojný bod %s\n"
+#~ "Připojuji CD-ROM\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Nelze záplatovat %s pomocí mmapu a souborových operací - zdá se, že je "
+#~ "záplata porušená."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Nelze záplatovat %s pomocí mmapu (ovšem žádná chyba specifická pro mmap "
+#~ "nebyla zaznamenána) - zdá se, že je záplata porušená."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr "Ignoruje se nedostupné vydání „%s“ balíku „%s“"
+
+#~ msgid "Downloading %s %s"
+#~ msgstr "Stahuje se %s %s"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr "Toto není platný DEB archiv, neobsahuje Äást „%s“, „%s“ ani „%s“"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "Neshoda MD5 souÄtů"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Nebylo možné nalézt soubor s balíkem %s. Asi budete muset tento balík "
+#~ "opravit ruÄnÄ›."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Nelze zapsat log, volání openpty() selhalo (/dev/pts není připojen?)\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Přeskakuji neexistující soubor %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Selhalo odstranění %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Nelze vytvořit %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Selhalo vyhodnocení %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr "Adresáře info a temp musí být na stejném souborovém systému"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Nepodařilo se změnit na admin adresář %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Vnitřní chyba při získávání jména balíku"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Čtu výpis souborů"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Selhalo otevření souboru seznamů „%sinfo/%s“. Pokud nemůžete tento soubor "
+#~ "obnovit, vytvořte jej nový prázdný a ihned znovu nainstalujte tu samou "
+#~ "verzi balíku!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Chyba pÅ™i Ätení souboru se seznamy %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Vnitřní chyba při získávání uzlu"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Selhalo otevření souboru s diverzemi %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Diverzní soubor je porušen"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Neplatná řádka v diverzním souboru: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Vnitřní chyba při přidávání diverze"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Cache balíků se musí nejprve inicializovat"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Chyba pÅ™i hledání Balíku: HlaviÄka, offset %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Špatná sekce ConfFile ve stavovém souboru na pozici %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Chyba při zpracování MD5. Offset %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Nelze přejít do %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Nelze najít platný kontrolní soubor"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Nelze otevřít rouru pro %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Chyba Ätení z procesu %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Získal jsem jednu řádku hlaviÄky pÅ™es %u znaků"
+
+#~ msgid "Note: This is done automatic and on purpose by dpkg."
+#~ msgstr "Poznámka: Toto má svůj důvod a děje se automaticky v dpkg."
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Zkomolený soubor %s, řádek %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Zkomolený soubor %s, řádek %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Zkomolený soubor %s, řádek %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "dekompresor"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "Ätení, stále mám k pÅ™eÄtení %lu, ale už nic nezbývá"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "zápis, stále mám %lu k zápisu, ale nejde to"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "Nelze spustit okamžitou konfiguraci již rozbaleného balíku „%s“. "
+#~ "Podrobnosti naleznete v man 5 apt.conf v Äásti APT::Immediate-Configure."
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Při zpracování %s se objevila chyba (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Při zpracování %s se objevila chyba (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Při zpracování %s se objevila chyba (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Při zpracování %s se objevila chyba (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Při zpracování %s se objevila chyba (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Při zpracování %s se objevila chyba (NewVersion%d)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Při zpracování %s se objevila chyba (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Při zpracování %s se objevila chyba (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Chyba při zpracování %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Při zpracování %s se objevila chyba (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "VnitÅ™ní chyba, nemohu nalézt Älen"
+
+#~ msgid "Internal error, group '%s' has no installable pseudo package"
+#~ msgstr "Interní chyba, skupina „%s“ nemá instalovatelný pseudobalík"
+
+#~ msgid "Release file expired, ignoring %s (invalid since %s)"
+#~ msgstr "Souboru Release vypršela platnost, ignoruji %s (neplatný již %s)"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr ""
+#~ "E: Seznam argumentů Acquire::gpgv::Options je příliÅ¡ dlouhý. KonÄím."
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "Při zpracování %s se objevila chyba (NewVersion2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "Zkomolený řádek %u v seznamu zdrojů %s (id výrobce)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "Nelze pÅ™istoupit ke klíÄence: „%s“"
+
+#~ msgid "Could not patch file"
+#~ msgstr "Nelze záplatovat soubor"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "Zpracovávám spouÅ¡tÄ›Äe pro %s"
+
+#~ msgid "Dynamic MMap ran out of room"
+#~ msgstr "Dynamickému MMapu došlo místo"
+
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "Protože jste požádali pouze o jednoduchou operaci, je téměř jisté, že\n"
+#~ "balík není instalovatelný a měl byste o tom zaslat hlášení o chybě\n"
+#~ "(bug report)."
+
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "Řádek %d je příliš dlouhý (max %lu)"
+
+#~ msgid "Line %d too long (max %d)"
+#~ msgstr "Řádek %d je příliš dlouhý (max %d)"
+
+#~ msgid "Error occured while processing %s (NewFileDesc1)"
+#~ msgstr "Při zpracování %s se objevila chyba (NewFileDesc1)"
+
+#~ msgid "Error occured while processing %s (NewFileDesc2)"
+#~ msgstr "Při zpracování %s se objevila chyba (NewFileDesc2)"
+
+#~ msgid "Stored label: %s \n"
+#~ msgstr "Uložený název: %s \n"
+
+#~ msgid ""
+#~ "Found %i package indexes, %i source indexes, %i translation indexes and "
+#~ "%i signatures\n"
+#~ msgstr ""
+#~ "Nalezl jsem indexy balíků (%i), indexy zdrojů (%i), indexy překladů (%i) "
+#~ "a podpisy (%i)\n"
+
+#~ msgid "File date has changed %s"
+#~ msgstr "Datum souboru se změnil %s"
+
+#~ msgid "Reading file list"
+#~ msgstr "Čtu seznam souborů"
+
+#~ msgid "Could not execute "
+#~ msgstr "Nelze spustit "
+
+#~ msgid "Preparing for remove with config %s"
+#~ msgstr "PÅ™ipravuji odstranÄ›ní %s vÄetnÄ› konfiguraÄních souborů"
+
+#~ msgid "Removed with config %s"
+#~ msgstr "OdstranÄ›n %s vÄetnÄ› konfiguraÄního souboru"
diff --git a/po/cy.po b/po/cy.po
new file mode 100644
index 000000000..72f5307ea
--- /dev/null
+++ b/po/cy.po
@@ -0,0 +1,4273 @@
+# APT yn Gymraeg: APT in Welsh.
+# This file is under the same licence as APT itself.
+# Dafydd Harries <daf@muse.19inch.net>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2005-06-06 13:46+0100\n"
+"Last-Translator: Dafydd Harries <daf@muse.19inch.net>\n"
+"Language-Team: Welsh <cy@pengwyn.linux.org.uk>\n"
+"Language: cy\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Llofnod archif annilys"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Gwall wrth ddarllen pennawd aelod archif"
+
+#: apt-inst/contrib/arfile.cc
+#, fuzzy, c-format
+msgid "Invalid archive member header %s"
+msgstr "Pennawd aelod archif annilys"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Pennawd aelod archif annilys"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Mae'r archif yn rhy fyr"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Methwyd darllen pennawdau'r archif"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Methwyd canfod pecyn %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Archif llygredig"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Methodd swm gwirio Tar, archif llygredig"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Math pennawd TAR anhysbys %u, aelod %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Nid yw hyn yn archif DEB dilys, aelod '%s' ar goll"
+
+#: apt-inst/deb/debfile.cc
+#, fuzzy, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Gwall Mewnol, methwyd lleoli aelod %s"
+
+#: apt-inst/deb/debfile.cc
+#, fuzzy
+msgid "Unparsable control file"
+msgstr "Ffeil rheoli ni ellir ei ramadegu"
+
+#: apt-inst/dirstream.cc
+#, fuzzy, c-format
+msgid "Failed to write file %s"
+msgstr "Methwyd ysgrifennu ffeil %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Methwyd cau ffeil %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Mae'r llwybr %s yn rhy hir"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Yn dadbacio %s mwy nag unwaith"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "Mae'r cyfeiriadur %s wedi ei ddargyfeirio"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Mae'r pecyn yn ceisio ysgrifennu i'r targed dargyfeiriad %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Mae llwybr y dargyfeiriad yn rhy hir"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Methodd stat() o %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Methwyd ailenwi %s at %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr ""
+"Mae'r cyfeiriadur %s yn cael ei amnewid efo rhywbeth nid cyfeiriadur ydyw"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Methwyd lleoli nôd yn ei fwced stwnsh"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Mae'r llwybr yn rhy hir"
+
+# FIXME: wtf?
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Cyfatebiad pecyn trosysgrifo gyda dim fersiwn am %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Mae'r ffeil %s/%s yn trosysgrifo'r un yn y pecyn %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Ni ellir darllen %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Ni ellir gwneud stat() o %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "Galwyd DropNode ar nôd sydd o hyd wedi ei gysylltu"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Methyd lleoli yr elfen <hash>!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Methwyd neilltuo dargyfeiriad"
+
+#: apt-inst/filelist.cc
+#, fuzzy
+msgid "Internal error in AddDiversion"
+msgstr "Gwall Mewnol yn AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Yn ceisio trosysgrifo dargyfeiriad, %s -> %s a %s/%s"
+
+# FIXME: "the"
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Ychwanegiad dwbl o'r dargyfeiriad %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Ffeil cyfluniad dyblyg %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Mae'r cyfeiriadur %s wedi ei ddargyfeirio"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Mae'r cyfeiriadur %s wedi ei ddargyfeirio"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Mae'r cyfeiriadur %s wedi ei ddargyfeirio"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Mae'r cyfeiriadur %s wedi ei ddargyfeirio"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "Mae'r cyfeiriadur %s wedi ei ddargyfeirio"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Methwyd darllen y cyswllt %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Hash Sum mismatch"
+msgstr "Camgyfatebiaeth swm MD5"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "methwyd ailenwi, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Camgyfatebiaeth maint"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "Gweithred annilys %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Gwall ysgrifennu"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr ""
+
+# FIXME: case
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Methais i leoli ffeila r gyfer y pecyn %s. Fa all hyn olygu bod rhaid i chi "
+"drwsio'r pecyn hyn a law. (Oherwydd pensaerniaeth coll.)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"Mae'r ffeiliau mynegai pecyn yn llygr. Dim maes Filename: gan y pecyn %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Yn cysylltu i %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Methwyd canfod y gyrrydd dull %s."
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Ni gychwynodd y dull %s yn gywir"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+"Newid Cyfrwng: Os gwelwch yn dda, rhowch y disg a'r label\n"
+" '%s'\n"
+"yn y gyrriant '%s' a gwasgwch Enter\n"
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "List directory %spartial is missing."
+msgstr "Mae'r cyfeiriadur rhestrau %spartial ar goll."
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Mae'r cyfeiriadur archif %spartial ar goll."
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Unable to lock directory %s"
+msgstr "Ni ellir cloi'r cyfeiriadur rhestr"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "Ni chynhelir y math ffeil mynegai '%s'"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Ni ellir newid i %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Yn Darllen Rhestr Ffeiliau"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"Mae angen ailsefydlu'r pecyn %s, ond dydw i ddim yn gallu canfod archif ar "
+"ei gyfer."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Gwall: Cynhyrchodd pkgProblemResolver::Resolve doriadau. Fe all hyn fod wedi "
+"ei achosi gan pecynnau wedi eu dal."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr ""
+"Ni ellir cywiro'r problemau gan eich bod chi wedi dal pecynnau torredig."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "Methwyd agor neu ramadegu'r ffeil rhestrau neu statws."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Efallai hoffech rhedege apt-get update er mwyn cywiro'r problemau hyn."
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Methwyd darllen y rhestr ffynhonellau."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Gwall crynhoi patrwm - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Ni chanfuwyd y rhyddhad '%s' o '%s'"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Ni chanfuwyd y fersiwn '%s' o '%s' "
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Methwyd canfod pecyn %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Methwyd canfod pecyn %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Methwyd canfod pecyn %s"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Ni ellir lleoli'r pecyn %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Llinell %u yn rhy hir yn y rhestr ffynhonell %s."
+
+#: apt-pkg/cdrom.cc
+#, fuzzy
+msgid "Unmounting CD-ROM...\n"
+msgstr "CD Anghywir"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, fuzzy
+msgid "Waiting for disc...\n"
+msgstr "Yn aros am benawdau"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, fuzzy
+msgid "Copying package lists..."
+msgstr "Yn Darllen Rhestrau Pecynnau"
+
+#: apt-pkg/cdrom.cc
+#, fuzzy
+msgid "Writing new source list\n"
+msgstr "Llinell %u yn rhy hir yn y rhestr ffynhonell %s."
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr ""
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Ni ellir gwneud stat() o %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Ni ellir gwneud stat() o'r pwynt clymu %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Methwyd gwneud stat() o'r CD-ROM"
+
+# FIXME
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Ni adnabyddir yr opsiwn llinell orchymyn '%c' (o %s)."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Ni adnabyddir yr opsiwn llinell orchymyn %s"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Nid yw'r opsiwn llinell orchymyn %s yn fŵleaidd"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Mae'r opsiwn %s yn mynnu ymresymiad."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "Opsiwn %s: Rhaid i benodiad eitem cyfluniad gael =<gwerth>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Mae'r opsiwn %s yn mynnu ymresymiad cyfanrif, nid '%s'"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Opsiwn '%s' yn rhy hir"
+
+# FIXME: 'Sense'?
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "Ni ddeallir %s, ceiswich ddefnyddio 'true' neu 'false'."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Gweithred annilys %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Talgryniad math anhysbys: '%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Yn agor y ffeil cyfluniad %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Gwall cystrawen %s:%u: Mae bloc yn cychwyn efo dim enw."
+
+# FIXME
+#: apt-pkg/contrib/configuration.cc
+#, fuzzy, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Gwall cystrawen %s:%u: Tag wedi camffurfio"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Gwall cystrawen %s:%u: Sbwriel ychwanegol ar ôl y gwerth"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"Gwall cystrawen %s:%u: Ceir defnyddio cyfarwyddyd ar y lefel dop yn unig"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Gwall cystrawen %s:%u: Gormod o gynhwysion nythol"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Gwall cystrawen %s:%u: Cynhwyswyd o fan hyn"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Gwall cystrawen %s:%u: Cyfarwyddyd ni gynhelir '%s'"
+
+#: apt-pkg/contrib/configuration.cc
+#, fuzzy, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Gwall cystrawen %s:%u: Ceir defnyddio cyfarwyddyd ar y lefel dop yn unig"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Gwall cystrawen %s:%u: Sbwriel ychwanegol ar ddiwedd y ffeil"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Gwall wrth dadgysylltu'r ffeil"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Ddim yn cloi'r ffeil clo darllen-yn-unig %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Methwyd agor y ffeil clo %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Ddim yn cloi'r ffeil clo ar NFS %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Methwyd cael y clo %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, fuzzy, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Arhoswyd am %s ond nid oedd e yna"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Derbyniodd is-broses %s wall segmentu."
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Derbyniodd is-broses %s wall segmentu."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Dychwelodd is-broses %s gôd gwall (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Gorffenodd is-broses %s yn annisgwyl"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Gwall darllen"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Gwall ysgrifennu"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Gwall wrth gau'r ffeil"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Methwyd creu isbroses IPC"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Methwyd gweithredu cywasgydd "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Methwyd agor ffeil %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Methwyd agor pibell ar gyfer %s"
+
+# FIXME
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "o hyd %lu i ddarllen ond dim ar ôl"
+
+# FIXME
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "o hyd %lu i ysgrifennu ond methwyd"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the file %s"
+msgstr "Gwall wrth gau'r ffeil"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Gwall wrth gyfamseru'r ffeil"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Gwall wrth gyfamseru'r ffeil"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Ni ellir gwneud stat() o %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Ni ellir ysgrifennu i %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Ni ellir defnyddio mmap() ar ffeil gwag"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Methwyd gwneud mmap() efo %lu beit"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Methwyd agor pibell ar gyfer %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to close mmap"
+msgstr "Ni ellir agor %s"
+
+# FIXME
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to synchronize mmap"
+msgstr "Methwyd gweithredu "
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Methwyd gwneud mmap() efo %lu beit"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Failed to truncate file"
+msgstr "Methwyd ysgrifennu ffeil %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Gwall!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Wedi Gorffen"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... Wedi Gorffen"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Ni chanfuwyd y dewis %s"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+# FIXME: number?
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Ni ellir gramadegu ffeil becynnau %s (1)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "No sections in Release file %s"
+msgstr "Sylwer, yn dewis %s yn hytrach na %s\n"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Llinell annilys yn y ffeil dargyfeirio: %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Ni ellir gramadegu ffeil becynnau %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, fuzzy, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Ni ellir cloi'r cyfeiriadur rhestr"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr ""
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Installing %s"
+msgstr " Wedi Sefydlu: "
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Configuring %s"
+msgstr "Yn cysylltu i %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Removing %s"
+msgstr "Yn agor %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removing %s"
+msgstr "Methwyd dileu %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Installed %s"
+msgstr " Wedi Sefydlu: "
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Directory '%s' missing"
+msgstr "Mae'r cyfeiriadur rhestrau %spartial ar goll."
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, fuzzy, c-format
+msgid "Could not open file '%s'"
+msgstr "Methwyd agor ffeil %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Preparing %s"
+msgstr "Yn agor %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Unpacking %s"
+msgstr "Yn agor %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Preparing to configure %s"
+msgstr "Yn agor y ffeil cyfluniad %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Removed %s"
+msgstr "Argymell"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Yn agor y ffeil cyfluniad %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removed %s"
+msgstr "Methwyd dileu %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "Ni ellir ysgrifennu i %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+#, fuzzy
+msgid "Building dependency tree"
+msgstr "Yn Aideladu Coeden Dibyniaeth"
+
+#: apt-pkg/depcache.cc
+#, fuzzy
+msgid "Candidate versions"
+msgstr "Fersiynau Posib"
+
+#: apt-pkg/depcache.cc
+#, fuzzy
+msgid "Dependency generation"
+msgstr "Cynhyrchaid Dibyniaeth"
+
+#: apt-pkg/depcache.cc
+#, fuzzy
+msgid "Reading state information"
+msgstr "Yn cyfuno manylion Ar Gael"
+
+#: apt-pkg/depcache.cc
+#, fuzzy, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Methwyd agor %s"
+
+#: apt-pkg/depcache.cc
+#, fuzzy, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Methwyd ysgrifennu ffeil %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, fuzzy, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Camgyfatebiaeth swm MD5"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Ni chynhelir y system pecynnu '%s'"
+
+#: apt-pkg/init.cc
+#, fuzzy
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Ni ellir canfod math system addas"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "Methwyd agor ffeil %s"
+
+# FIXME: %s may have an arbirrary length
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Bydd y rhediad sefydlu hwn yn gorfodi tynnu'r pecyn angenrheidiol %s "
+"oherwydd lŵp gwrthdaro/cynddibynu. Mae hyn yn aml yn wael, ond os ydych wir "
+"eisiau ei wneud ef, gweithredwch yr opsiwn APT::Force-LoopBreak."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Storfa pecyn gwag"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Mae'r ffeil storfa pecyn yn llygredig"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Mae'r ffeil storfa pecyn yn fersiwn anghyflawn"
+
+# FIXME: capitalisation?
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Nid yw'r APT yma yn cefnogi'r system fersiwn '%s'"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Adeiladwyd y storfa pecyn ar gyfer pernsaerniaeth gwahanol"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Mae'r ffeil storfa pecyn yn llygredig"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Dibynnu"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "CynDdibynnu"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Awgrymu"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Gwrthdaro"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Argymell"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Amnewid"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Darfodi"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "pwysig"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "angenrheidiol"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "safonnol"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "ychwanegol"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "opsiynnol"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Mae can y storfa system fersiwn anghyfaddas"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Digwyddod gwall wrth brosesu %s (FindPkg)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"Jiw, rhagoroch chi'r nifer o enwau pecyn mae'r APT hwn yn gallu ei drin."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Jiw, rhagoroch chi'r nifer o fersiynau mae'r APT hwn yn gallu ei drin."
+
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Jiw, rhagoroch chi'r nifer o fersiynau mae'r APT hwn yn gallu ei drin."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+"Jiw, rhagoroch chi'r nifer o ddibyniaethau mae'r APT hwn yn gallu ei drin."
+
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy
+msgid "Reading package lists"
+msgstr "Yn Darllen Rhestrau Pecynnau"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Gwall M/A wrth gadw'r storfa ffynhonell"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Ni chynhelir y math ffeil mynegai '%s'"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+# FIXME: literal
+#: apt-pkg/policy.cc
+#, fuzzy, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Cofnod annilys yn y ffeil hoffterau, dim pennawd 'Package'"
+
+# FIXME: tense
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Methwyd daeall y math pin %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Dim blaenoriath (neu sero) wedi ei benodi ar gyfer pin"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Gwrthwneud camffurfiol %s llinell %lu #1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Yn agor %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Llinell camffurfiol %u yn y rhestr ffynhonell %s (math)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Mae'r math '%s' yn anhysbys ar linell %u yn y rhestr ffynhonell %s"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Llinell camffurfiol %u yn y rhestr ffynhonell %s (math)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Mae'r math '%s' yn anhysbys ar linell %u yn y rhestr ffynhonell %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+# FIXME: ...file
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Rhaid i chi rhoi rhai URI 'source' yn eich ffeil sources.list"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Methwyd cyrchu %s %s"
+
+#: apt-pkg/update.cc
+#, fuzzy
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Methwodd rhai ffeiliau mynegai lawrlwytho: maent wedi eu anwybyddu, neu hen "
+"rai eu defnyddio yn lle."
+
+#: apt-pkg/upgrade.cc
+#, fuzzy
+msgid "Calculating upgrade"
+msgstr "Yn Cyfrifo'r Uwchraddiad"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Presennol:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Cyrchu:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Anwybyddu:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Gwall:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Cyrchwyd %sB yn %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Gweithio]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Newid Cyfrwng: Os gwelwch yn dda, rhowch y disg a'r label\n"
+" '%s'\n"
+"yn y gyrriant '%s' a gwasgwch Enter\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Yn cywiro dibyniaethau..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " wedi methu."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Ni ellir cywiro dibyniaethau"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Ni ellir bychanu y set uwchraddio"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Wedi Gorffen"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+"Efallai hoffech rhedeg 'apt --fix-broken install' er mwyn cywiro'r rhain."
+
+# FIXME
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Dibyniaethau heb eu bodloni. Ceisiwch rhedeg 'apt --fix-broken install' efo "
+"dim pecyn (neu penodwch ddatrys)"
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Sylwer, yn dewis %s ar gyfer y patrwm '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Sylwer, yn dewis %s ar gyfer y patrwm '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Sylwer, yn dewis %s ar gyfer y patrwm '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Mae'r pecyn %s yn becyn rhithwir a ddarparir gan:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [Sefydliwyd]"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Not candidate version]"
+msgstr "Fersiynau Posib"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Dylech ddewis un yn benodol i'w sefydlu."
+
+# FIXME: punctuation
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Does dim fersiwn gan y pecyn %s, ond mae'n bodoli yn y cronfa data.\n"
+"Mae hyn fel arfer yn golygu y crybwyllwyd y pecyn mewn dibyniaeth ond heb\n"
+"gael ei uwchlwytho, cafodd ei ddarfod neu nid yw ar gael drwy gynnwys y\n"
+"ffeil sources.list.\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Fodd bynnag, mae'r pecynnau canlynol yn cymryd ei le:"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Does dim ymgeisydd sefydlu gan y pecyn %s"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr ""
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "Nid yw'r pecyn %s wedi ei sefydlu, felly ni chaif ei dynnu\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Nid yw'r pecyn %s wedi ei sefydlu, felly ni chaif ei dynnu\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Sylwer, yn dewis %s yn hytrach na %s\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Mae gan yr APT hwn bŵerau buwch hudol."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Canfuwyd dim pecyn"
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "RHYBUDD: Ni ellir dilysu'r pecynnau canlynol yn ddiogel!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid "Some packages could not be authenticated"
+msgstr "RHYBUDD: Ni ellir dilysu'r pecynnau canlynol yn ddiogel!"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr ""
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Mae problemau a defnyddwyd -y heb --force-yes"
+
+#: apt-private/private-download.cc
+#, fuzzy, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Does dim digon o le rhydd yn %s gennych"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Does dim digon o le rhydd gennych yn %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Ni ellir cloi'r cyfeiriadur lawrlwytho"
+
+# FIXME: needs commas
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Methwyd sefydlu rhai pecynnau. Gall hyn olygu eich bod chi wedi gofyn\n"
+"am sefyllfa amhosib neu, os ydych chi'n defnyddio'r dosraniad\n"
+"ansefydlog, fod rhai pecynnau angenrheidiol heb gael eu creu eto neu\n"
+"heb gael eu symud allan o Incoming."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Gall y wybodaeth canlynol gynorthwyo'n datrys y sefyllfa:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Pecynnau wedi torri"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Ni ellir cyrchu rhai archifau, efallai dylwch rhedeg apt-get update, neu "
+"geidio defnyddio --fix-missing?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Rhaid tynnu pecynnau on mae Tynnu wedi ei analluogi."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Mae problemau a defnyddwyd -y heb --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Mae problemau a defnyddwyd -y heb --force-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Internal error, Ordering didn't finish"
+msgstr "Gwall Mewnol wrth ychwanegu dargyfeiriad"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Mae angeyn cyrchu %sB/%sB o archifau.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Mae angen cyrchu %sB o archifau.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "Ar ôl dadbacio defnyddir %sB o ofod disg ychwanegol.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Ar ôl dadbactio caiff %sB o ofod disg ei rhyddhau.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "Penodwyd Syml Yn Unig ond nid yw hyn yn weithred syml."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Ie, gwna fel rydw i'n dweud!"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Rydych ar fin gwneud rhywbeth a all fod yn niweidiol\n"
+"Er mwyn mynd ymlaen, teipiwch y frawddeg '%s'\n"
+" ?]"
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Erthylu."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Ydych chi eisiau mynd ymlaen?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Methodd rhai ffeiliau lawrlwytho"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Lawrlwytho yn gyflawn ac yn y modd lawrlwytho'n unig"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "Ni chynhelir cyfnewid cyfrwng efo --fix-missing ar hyn o bryd"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Ni ellir cywiro pecynnau ar goll."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Aborting install."
+msgstr "Yn Erthylu'r Sefydliad."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Gwall Mewnol, torrodd AllUpgrade bethau"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "Caiff y pecynnau NEWYDD canlynol eu sefydlu:"
+msgstr[1] "Caiff y pecynnau NEWYDD canlynol eu sefydlu:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "Caiff y pecynnau NEWYDD canlynol eu sefydlu:"
+msgstr[1] "Caiff y pecynnau NEWYDD canlynol eu sefydlu:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Caiff y pecynnau canlynol ychwanegol eu sefydlu:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Pecynnau a awgrymmir:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Pecynnau a argymhellir:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "Yn hepgor %s, mae wedi ei sefydlu a nid yw uwchraddio wedi ei osod.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr "Yn hepgor %s, mae wedi ei sefydlu a nid yw uwchraddio wedi ei osod.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "Nid yw ailsefydlu %s yn bosib, gan ni ellir ei lawrlwytho.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "Mae %s y fersiwn mwyaf newydd eisioes.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to manually installed.\n"
+msgstr "ond mae %s yn mynd i gael ei sefydlu"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Dewiswyd fersiwn %s (%s) ar gyfer %s\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Dewiswyd fersiwn %s (%s) ar gyfer %s\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Sefydliwyd]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [Sefydliwyd]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [Sefydliwyd]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [Sefydliwyd]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "ond mae %s wedi ei sefydlu"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "ond mae %s yn mynd i gael ei sefydlu"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "ond ni ellir ei sefydlu"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "ond mae'n becyn rhithwir"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "ond nid yw'n mynd i gael ei sefydlu"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "ond nid yw wedi ei sefydlu"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " neu"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Mae gan y pecynnau canlynol ddibyniaethau heb eu bodloni:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Caiff y pecynnau NEWYDD canlynol eu sefydlu:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Caiff y pecynnau canlynol eu TYNNU:"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "The following packages have been kept back:"
+msgstr "Mae'r pecynnau canlynol wedi eu dal yn ôl"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "The following packages will be upgraded:"
+msgstr "Caiff y pecynnau canlynol eu uwchraddio"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Caiff y pecynnau canlynol eu ISRADDIO"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Caiff y pecynnau wedi eu dal canlynol eu newid:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (oherwydd %s)"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"RHYBUDD: Caiff y pecynnau hanfodol canlynol eu tynnu\n"
+"NI DDYLIR gwneud hyn os nad ydych chi'n gwybod yn union beth rydych chi'n\n"
+"ei wneud!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu wedi uwchraddio, %lu newydd eu sefydlu, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu wedi ailsefydlu, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu wedi eu israddio, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu i'w tynnu a %lu heb eu uwchraddio.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu heb eu sefydlu na tynnu'n gyflawn.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr ""
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr ""
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "I"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+#, fuzzy
+msgid "You must give at least one search pattern"
+msgstr "Rhaid i chi ddarparu un patrwm yn union"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Nid yw'r ffeil pecyn %s yn gydamseredig."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+#, fuzzy
+msgid "Package files:"
+msgstr "Ffeiliau Pecynnau:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "Nid yw'r storfa yn gydamserol, ni ellir croesgyfeirio ffeil pecym"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+#, fuzzy
+msgid "Pinned packages:"
+msgstr "Pecynnau wedi eu Pinio:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Wedi Sefydlu: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Ymgeisydd: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(dim)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+#, fuzzy
+msgid " Version table:"
+msgstr " Tabl Fersiynnau:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Methwyd canfod pecyn %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Methwyd canfod pecyn %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Methwyd canfod pecyn %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Methwyd stat() o'r rhestr pecyn ffynhonell %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Rhaid penodi o leiaf un pecyn i gyrchi ffynhonell ar ei gyfer"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Ni ellir canfod pecyn ffynhonell ar gyfer %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Yn hepgor dadbacio y ffynhonell wedi ei dadbacio eisioes yn %s\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Rhaid cyrchu %sB/%sB o archifau ffynhonell.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Rhaid cyrchu %sB o archifau ffynhonell.\n"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Fetch source %s\n"
+msgstr "Cyrchu Ffynhonell %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Methwyd cyrchu rhai archifau."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Yn hepgor dadbacio y ffynhonell wedi ei dadbacio eisioes yn %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Methodd y gorchymyn dadbacio '%s'.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Methodd y gorchymyn adeiladu '%s'.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Ni ellir cyrchu manylion dibyniaeth adeiladu ar gyfer %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "Nid oes dibyniaethau adeiladu gan %s.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Rhaid penodi o leiaf un pecyn i wirio dibyniaethau adeiladu ar eu cyfer"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Methwyd prosesu dibyniaethau adeiladu"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Methwyd prosesu dibyniaethau adeiladu"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Methwyd ailenwi %s at %s"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Mae gan y pecyn %s fersiwn %s ddibyniaeth heb ei gwrdd:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Nid yw'r gorchymyn diweddaru yn derbyn ymresymiadau"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "Nid yw'r gorchymyn diweddaru yn derbyn ymresymiadau"
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total package names: "
+msgstr "Cyfanswm Enwau Pecynnau : "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total package structures: "
+msgstr "Cyfanswm Enwau Pecynnau : "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid " Normal packages: "
+msgstr " Pecynnau Normal: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid " Pure virtual packages: "
+msgstr " Pecynnau Cwbl Rhithwir: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid " Single virtual packages: "
+msgstr " Pecynnau Rhithwir Sengl: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid " Mixed virtual packages: "
+msgstr " Pecynnau Rhithwir Cymysg: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Ar Goll: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total distinct versions: "
+msgstr "Cyfanswm Fersiynau Gwahanol: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total distinct descriptions: "
+msgstr "Cyfanswm Fersiynau Gwahanol: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total dependencies: "
+msgstr "Cyfanswm Dibyniaethau: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total ver/file relations: "
+msgstr "Cyfanswm perthyniadau fersiwn/ffeil: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total Desc/File relations: "
+msgstr "Cyfanswm perthyniadau fersiwn/ffeil: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total Provides mappings: "
+msgstr "Cyfanswm Mapiau Darpariath: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total globbed strings: "
+msgstr "Cyfanswm Llinynau Glob: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total slack space: "
+msgstr "Cyfanswm gofod Slac: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total space accounted for: "
+msgstr "Cyfanswm Gofod Cyfrifwyd: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Dangos cofnodion ffynhonell"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr ""
+"Newid Cyfrwng: Os gwelwch yn dda, rhowch y disg a'r label\n"
+" '%s'\n"
+"yn y gyrriant '%s' a gwasgwch Enter\n"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Methwyd ailenwi %s at %s"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Nid yw ymresymiadau mewn parau"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Defnydd: apt-config [opsiynnau] gorchymyn\n"
+"\n"
+"Mae apt-config yn erfyn syml sy'n darllen ffeil cyfluniad APT\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+# FIXME: "debian"
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Defnydd: apt-extracttemplates ffeil1 [ffeil2 ...]\n"
+"\n"
+"Mae apt-extracttemplates yn erfyn ar gyfer echdynnu manylion cyfluniad a\n"
+"templed o becynnau Debian.\n"
+"\n"
+"Opsiynnau:\n"
+" -h Dangos y testun cymorth hwn\n"
+" -t Gosod y cyfeiriadur dros dro\n"
+" -c=? Darllen y ffeil cyfluniad hwn\n"
+" -o=? Gosod opsiwn cyfluniad mympwyol e.e. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Ni ellir cael fersiwn debconf. Ydi debconf wedi ei sefydlu?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Methwyd canfod pecyn %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "ond mae %s yn mynd i gael ei sefydlu"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Gwall Mewnol, torrodd AllUpgrade bethau"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid "Supported modules:"
+msgstr "Modylau a Gynhelir:"
+
+# FIXME: split
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Defnydd: apt-get [opsiynnau] gorchymyn\n"
+" apt-get [opsiynnau] install|remove pecyn1 [pecyn2 ...]\n"
+" apt-get [opsiynnau] source pecyn1 [pecyn2 ...]\n"
+"\n"
+"Mae apt-get yn rhyngwyneb llinell orchymyn syml ar gyfer lawrlwytho a\n"
+"sefydlu pecynnau. Y gorchmynion \"update\" a \"install\" yw'r rhai a\n"
+"ddefnyddir amlaf.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Cyrchu rhestrau pecynnau newydd"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Uwchraddio pecynnau wedi sefydlu"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Sefydlu pecynnau newydd (defnyddiwch libc6 nid libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Tynnu pecynnau"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr ""
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+#, fuzzy
+msgid "Remove automatically all unused packages"
+msgstr "ond mae %s yn mynd i gael ei sefydlu"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Uwchraddio dosraniad, gweler apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Dilyn dewisiadau dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Cyflunio dibyniaethau adeiladu ar gyfer pecynnau ffynhonell"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Dileu ffeiliau archif wedi eu lawrlwytho"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Dileu hen ffeiliau archif wedi eu lawrlwytho"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Gwirio fod dim dibyniaethau torredig"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Lawrlwytho archifau ffynhonell"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "Rhaid penodi o leiaf un pecyn i gyrchi ffynhonell ar ei gyfer"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+# FIXME: "debian"
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Defnydd: apt-extracttemplates ffeil1 [ffeil2 ...]\n"
+"\n"
+"Mae apt-extracttemplates yn erfyn ar gyfer echdynnu manylion cyfluniad a\n"
+"templed o becynnau Debian.\n"
+"\n"
+"Opsiynnau:\n"
+" -h Dangos y testun cymorth hwn\n"
+" -t Gosod y cyfeiriadur dros dro\n"
+" -c=? Darllen y ffeil cyfluniad hwn\n"
+" -o=? Gosod opsiwn cyfluniad mympwyol e.e. -o dir::cache=/tmp\n"
+
+# FIXME: "debian"
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Defnydd: apt-extracttemplates ffeil1 [ffeil2 ...]\n"
+"\n"
+"Mae apt-extracttemplates yn erfyn ar gyfer echdynnu manylion cyfluniad a\n"
+"templed o becynnau Debian.\n"
+"\n"
+"Opsiynnau:\n"
+" -h Dangos y testun cymorth hwn\n"
+" -t Gosod y cyfeiriadur dros dro\n"
+" -c=? Darllen y ffeil cyfluniad hwn\n"
+" -o=? Gosod opsiwn cyfluniad mympwyol e.e. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "ond nid yw wedi ei sefydlu"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "ond mae %s yn mynd i gael ei sefydlu"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "ond mae %s yn mynd i gael ei sefydlu"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "Mae %s y fersiwn mwyaf newydd eisioes.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "Mae %s y fersiwn mwyaf newydd eisioes.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "ond mae %s yn mynd i gael ei sefydlu"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Methwyd agor %s"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "ond mae %s yn mynd i gael ei sefydlu"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "Caiff y pecynnau NEWYDD canlynol eu sefydlu:"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "ond mae %s yn mynd i gael ei sefydlu"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "ond mae %s yn mynd i gael ei sefydlu"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Cofnod pecyn anhysbys!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "Yn Darllen Rhestrau Pecynnau"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "Pecynnau wedi eu Pinio:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Pecynnau wedi torri"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "ond mae %s yn mynd i gael ei sefydlu"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "Yn cyfuno manylion Ar Gael"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Rhagosodiad gwael!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Gwasgwch Enter er mwyn mynd ymlaen."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr ""
+
+#: dselect/install
+#, fuzzy
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "Digwyddod rhau gwallau wrth dadbacio. Rydw i'n mynd i gyflunio'r"
+
+#: dselect/install
+#, fuzzy
+msgid "will be configured. This may result in duplicate errors"
+msgstr "pecynnau a gafwyd eu sefydlu. Gall hyn achosi gwallau dyblyg neu"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "wallau a achosir gan ddibyniaethau coll. Mae hyn yn iawn, dim ond y"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"gwallau uwchben y neges hwn sy'n bwysig. Trwsiwch nhw a rhedwch [S]efydlu "
+"eto."
+
+#: dselect/update
+#, fuzzy
+msgid "Merging available information"
+msgstr "Yn cyfuno manylion Ar Gael"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Mae'r rhestr estyniad pecyn yn rhy hir."
+
+#: ftparchive/apt-ftparchive.cc
+#, fuzzy, c-format
+msgid "Error processing directory %s"
+msgstr "Gwall wrth brosesu'r cyfeiriadur %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Mae'r rhestr estyniad ffynhonell yn rhy hir"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Gwall wrth ysgrifennu pennawd i'r ffeil cynnwys"
+
+#: ftparchive/apt-ftparchive.cc
+#, fuzzy, c-format
+msgid "Error processing contents %s"
+msgstr "Gwall wrth Brosesu Cynnwys %s"
+
+# FIXME: full stops
+#: ftparchive/apt-ftparchive.cc
+#, fuzzy
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Defnydd: apt-ftparchive [opsiynnau] gorchymyn\n"
+"Gorchmynion: packages llwybrdeuol [ffeilgwrthwneud [cynddodiadllwybr]]\n"
+" sources llwybrffynhonell [ffeilgwrthwneud [cynddodiadllwybr]]\n"
+" contents llwybr\n"
+" release llwybr\n"
+" generate cyfluniad [grŵpiau]\n"
+" clean cyfluniad\n"
+"\n"
+"Mae apt-ftparchive yn cynhyrchu ffeiliau mynegai ar gyfer archifau Debian.\n"
+"Mae'n cynnal nifer o arddulliau o gynhyrchiad, yn cynnwys modd wedi\n"
+"awtomeiddio'n llwyr a modd yn debyg i dpkg-scanpackages a dpkg-scansources.\n"
+"\n"
+"Gall apt-ftparchive gynhyrchu ffeil Package o goeden o ffeiliau .deb.\n"
+"Mae'r ffeil Package yn cynnwys yr holl feysydd rheoli o bob pecyn yn\n"
+"ogystal a'r stwnsh MD5 a maint y ffeil. Cynhelir ffeil gwrthwneud er mwyn\n"
+"gorfodi'r gwerthoedd Priority a Section.\n"
+"\n"
+"Yn debyg, gall apt-ftparchive gynhyrchu ffeil Sources o goeden o ffeiliau\n"
+".dsc. Gellir defnyddio'r opsiwn --source-override er mwyn penodi ffeil\n"
+"gwrthwneud ffynhonell.\n"
+"\n"
+"Dylid rhedeg y gorchmynion 'packages' a 'sources' yng ngwraidd y goeden.\n"
+"Fe ddylai llwybrdeuol bwyntio at sail y chwilio ailadroddus a fe ddylai\n"
+"ffeilgwrthwneud gynnwys y gosodiadau gwrthwneud. Ychwanegir\n"
+"cynddodiadllwybr i'r meysydd enw ffeil os ydynt yn bresennol. Esiampl\n"
+"defnydd o'r archif Debian:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Opsiynnau:\n"
+" -h Y testun cymorth hwn\n"
+" --md5 Rheoli cynhyrchiad stwnch MD5\n"
+" -s=? Ffeil gwrthwneud ffynhonell\n"
+" -q Tawel\n"
+" -d=? Dewis cronda data storfa opsiynnol\n"
+" --no-delink Galluogi'r modd datgysylltu datnamu\n"
+" --contents Rheoli cynhyrchiad ffeil cynnwys\n"
+" -c=? Darllen y ffeil cyfluniad hwn\n"
+" -o=? Gosod opsiwn cyfluniad mympwyol"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Dim dewisiadau'n cyfateb"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Mae rhai ffeiliau ar goll yn y grŵp ffeiliau pecyn `%s'"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "Llygrwyd y cronfa data, ailenwyd y ffeil i %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "Hen gronfa data, yn ceisio uwchraddio %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Ni ellir agor y ffeil DB2 %s: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Methwyd darllen y cyswllt %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Does dim cofnod rheoli gan yr archif"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Ni ellir cael cyrchydd"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Methwyd neilltuo cof"
+
+#: ftparchive/multicompress.cc
+#, fuzzy, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Dull Cywasgu Anhysbys '%s'"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Mae'r allbwn cywasgiedig %s angen cywasgiad wedi ei osod"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Methwyd creu pibell cyfathrebu at isbroses"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Methodd fork()"
+
+#: ftparchive/multicompress.cc
+#, fuzzy
+msgid "Compress child"
+msgstr "Plentyn Cywasgu"
+
+#: ftparchive/multicompress.cc
+#, fuzzy, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Gwall Mewnol, Methwyd creu %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Methodd MA i isbroses/ffeil"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Methwyd darllen wrth gyfrifo MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Ni ellir agor %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Gwrthwneud camffurfiol %s llinell %lu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Methwydd darllen y ffeil dargyfeirio %s"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Gwrthwneud camffurfiol %s llinell %lu #1"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Gwrthwneud camffurfiol %s llinell %lu #2"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Gwrthwneud camffurfiol %s llinell %lu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "Rh: Ni ellir darllen y cyfeiriadur %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "Rh: Ni ellir gwneud stat() o %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "G: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "Rh: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "G: Mae gwallau yn cymhwyso i'r ffeil "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Methwyd datrys %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Methwyd cerdded y goeden"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Methwyd agor %s"
+
+# FIXME
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DatGysylltu %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Methwyd cysylltu %s at %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " Tarwyd y terfyn cyswllt %sB.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Doedd dim maes pecyn gan yr archif"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " Does dim cofnod gwrthwneud gan %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " Cynaliwr %s yw %s nid %s\n"
+
+#: ftparchive/writer.cc
+#, fuzzy, c-format
+msgid " %s has no source override entry\n"
+msgstr " Does dim cofnod gwrthwneud gan %s\n"
+
+#: ftparchive/writer.cc
+#, fuzzy, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " Does dim cofnod gwrthwneud gan %s\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Yn aros am benawdau"
+
+#: methods/basehttp.cc
+#, fuzzy
+msgid "The HTTP server sent an invalid reply header"
+msgstr "Danfonodd y gweinydd HTTP bennawd ateb annilys"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Llinell pennawd gwael"
+
+#: methods/basehttp.cc
+#, fuzzy
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "Danfonodd y gweinydd HTTP bennawd Content-Length annilys"
+
+#: methods/basehttp.cc
+#, fuzzy
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "Danfonodd y gweinydd HTTP bennawd Content-Range annilys"
+
+#: methods/basehttp.cc
+#, fuzzy
+msgid "This HTTP server has broken range support"
+msgstr "Mae cynaliaeth amrediad y gweinydd hwn wedi torri"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Fformat dyddiad anhysbys"
+
+#: methods/basehttp.cc
+#, fuzzy
+msgid "Bad header data"
+msgstr "Data pennawd gwael"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Methodd y cysylltiad"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Gwall mewnol"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Methwyd darllen y cronfa ddata CD-ROM %s"
+
+#: methods/cdrom.cc
+#, fuzzy
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Defnyddiwch apt-cdrom fel bo APT yn adnabod y CD hwn. Ni ellir defnyddio apt-"
+"get update i ychwanegu CDau newydd."
+
+#: methods/cdrom.cc
+#, fuzzy
+msgid "Wrong CD-ROM"
+msgstr "CD Anghywir"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr ""
+"Ni ellir datglymu'r CD-ROM yn %s. Efallai ei fod e'n cael ei ddefnyddio."
+
+#: methods/cdrom.cc
+#, fuzzy
+msgid "Disk not found."
+msgstr "Ffeil heb ei ganfod"
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Ffeil heb ei ganfod"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Yn cysylltu i %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Methwyd creu soced ar gyfer %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Ni ellir cychwyn y cysylltiad i %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Methwyd cysylltu i %s:%s (%s), goramserodd y cysylltiad"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Methwyd"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Methwyd cysylltu i %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Yn cysylltu i %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Methwyd datrys '%s'"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Methiant dros dro yn datrys '%s'"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Digwyddodd rhywbweth hyll wrth ddatrys '%s:%s' (%i)"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Digwyddodd rhywbweth hyll wrth ddatrys '%s:%s' (%i)"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Methwyd cysylltu i %s %s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Methwyd stat()"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "URI annilys: rhaid i URIs lleol beidio a cychwyn efo \"//\""
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Yn mewngofnodi"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Ni ellir darganfod enw'r cymar"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Ni ellir darganfod yr enw lleol"
+
+#: methods/ftp.cc
+#, fuzzy, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Gwrthodwyd y gweinydd ein cysyllriad, a dwedodd: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "Methodd gorchymyn USER; meddai'r gweinydd: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "Methodd gorchymyn PASS; meddai'r gweinydd: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Penodwyd gweinydd dirprwy ond dim sgript mengofnodi. (Mae Acquire::ftp::"
+"ProxyLogin yn wag.)"
+
+# FIXME
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Methodd y gorchymyn sgript mewngofnodi '%s'; meddai'r gweinydd: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "Methodd gorchymyn TYPE; meddai'r gweinydd: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Goramser cysylltu"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Caeodd y gweinydd y cysylltiad"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Gorlifodd ateb y byffer."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Llygr protocol"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Methwyd creu soced"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Methwyd cysylltu soced data, goramserodd y cyslltiad"
+
+#: methods/ftp.cc
+#, fuzzy
+msgid "Could not connect passive socket."
+msgstr "Methwyd cysylltu soced goddefol"
+
+# FIXME
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "Methodd getaddrinfo gael soced gwrando"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Methwyd rhwymo soced"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Methwyd gwrando ar y soced"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Methwyd canfod enw'r soced"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Methwyd danfod gorchymyn PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Teulu cyfeiriad anhysbys %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "Methodd gorchymyn EPRT; meddai'r gweinydd: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Goramserodd cysylltiad y soced data"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Methwyd derbyn cysylltiad"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Problem wrth stwnshio ffeil"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Methwyd cyrchu ffeil; meddai'r gweinydd '%s'"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Goramserodd soced data"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Methodd trosgludiad data; meddai'r gweinydd '%s'"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Ymholiad"
+
+# FIXME
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Methwyd gweithredu "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr ""
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr ""
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+#, fuzzy
+msgid "The following signatures were invalid:\n"
+msgstr "Caiff y pecynnau canlynol ychwanegol eu sefydlu:"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Gwall wrth ysgrifennu at y ffeil"
+
+#: methods/http.cc
+#, fuzzy
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Gwall wrth ddarllen o'r gweinydd: caeodd yr ochr pell y cysylltiad"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Gwall wrth ddarllen o'r gweinydd"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Gwall wrth ysgrifennu at ffeil"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Methwyd dewis"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Goramserodd y cysylltiad"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Gwall wrth ysgrifennu i ffeil allbwn"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Methwyd agor ffeil %s"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Methwyd agor ffeil %s"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr ""
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Methwyd gosod amser newid"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Caewyd y cysylltiad yn gynnar"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Dibyniaethau heb eu bodloni. Ceisiwch ddefnyddio --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Efallai hoffech rhedeg 'apt --fix-broken install' er mwyn cywiro'r rhain:"
+
+#~ msgid "(not found)"
+#~ msgstr "(heb ganfod)"
+
+#, fuzzy
+#~ msgid " Package pin: "
+#~ msgstr " Pin Pecyn: "
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "Mae'r cyfeiriadur %s wedi ei ddargyfeirio"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "Ni ellir bodloni dibyniaeth %s ar gyfer %s oherwydd ni ellir canfod y "
+#~ "pecyn %s"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "Ni ellir bodloni dibyniaeth %s ar gyfer %s oherwydd ni ellir canfod y "
+#~ "pecyn %s"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Methwyd bodloni dibynniaeth %s am %s: Mae'r pecyn sefydliedig %s yn rhy "
+#~ "newydd"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "Ni ellir bodloni'r dibyniaeth %s ar gyfer %s oherwydd does dim fersiwn "
+#~ "sydd ar gael o'r pecyn %s yn gallu bodloni'r gofynion ferswin"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "Ni ellir bodloni dibyniaeth %s ar gyfer %s oherwydd ni ellir canfod y "
+#~ "pecyn %s"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Methwyd bodloni dibyniaeth %s am %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Methwyd bodloni'r dibyniaethau adeiladu ar gyfer %s."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Gwall wrth datgysylltu %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Methwyd datgysylltu %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Defnydd: apt-cache [opsiynnau] gorchymyn\n"
+#~ " apt-cache [opsiynnau] show pecyn1 [pecyn2 ...]\n"
+#~ "\n"
+#~ "Mae apt-cache yn erfyn lefel isel a ddefnyddir i ymdrin a ffeiliau storfa "
+#~ "deuol APT, ac ymholi gwybodaeth ohonynt\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Opsiynnau:\n"
+#~ " -h Y testun cymorth hwn\n"
+#~ " -c=? Darllen y ffeil cyfluniad\n"
+#~ " -o=? Gosod opsiwn cyfluniad mympwyol, ee -o dir::cache=/tmp\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Defnydd: apt-sortpkgs [opsiynnau] ffeil1 [ffeil2 ...]\n"
+#~ "\n"
+#~ "Mae apt-sortpkgs yn erfyn syml er mwyn trefnu ffeiliau pecyn. Defnyddir "
+#~ "yr\n"
+#~ "opsiwn -s er mwyn penodi pa fath o ffeil ydyw.\n"
+#~ "\n"
+#~ "Opsiynnau:\n"
+#~ " -h Y testun cymorth hwn\n"
+#~ " -s Defnyddio trefnu ffeil ffynhonell\n"
+#~ " -c=? Darllen y ffeil cyfluniad hwn\n"
+#~ " -o=? Gosod opsiwn cyfluniad mympwyol, ee -o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Methodd proses plentyn"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Rhaid penodi o leiaf un pecyn i gyrchi ffynhonell ar ei gyfer"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Methwyd creu pibau"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Methwyd gweithredu gzip"
+
+#, fuzzy
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s ar gyfer %s %s wedi ei grynhow ar %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Methwyd creu FILE*"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Llinell camffurfiol %lu yn y rhestr ffynhonell %s (gramadegu URI)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "Llinell camffurfiol %lu yn y rhestr ffynhonell %s (gramadegu dosranniad)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "Llinell camffurfiol %lu yn y rhestr ffynhonell %s (dosranniad)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr ""
+#~ "Llinell camffurfiol %lu yn y rhestr ffynhonell %s (gramadegu dosranniad)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr ""
+#~ "Llinell camffurfiol %lu yn y rhestr ffynhonell %s (gramadegu dosranniad)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "Llinell camffurfiol %lu yn y rhestr ffynhonell %s (gramadegu dosranniad)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Llinell camffurfiol %lu yn y rhestr ffynhonell %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Llinell camffurfiol %lu yn y rhestr ffynhonell %s (dosranniad)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Llinell camffurfiol %lu yn y rhestr ffynhonell %s (gramadegu URI)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr ""
+#~ "Llinell camffurfiol %lu yn y rhestr ffynhonell %s (dosranniad llwyr)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr ""
+#~ "Llinell camffurfiol %lu yn y rhestr ffynhonell %s (gramadegu dosranniad)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "Ni chanfuwyd pecyn %s %s wrth brosesu dibyniaethau ffeil"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Methwyd stat() o'r rhestr pecyn ffynhonell %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Yn Casglu Darpariaethau Ffeil"
+
+# FIXME: number?
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Ni ellir gramadegu ffeil becynnau %s (1)"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Nid yw'r bloc darparwr %s yn cynnwys ôl bys"
+
+#, fuzzy
+#~ msgid "Total dependency version space: "
+#~ msgstr "Cyfanswm gofod Fersiwn Dibyniaeth: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Does dim digon o le rhydd yn %s gennych"
+
+#~ msgid "Done"
+#~ msgstr "Wedi Gorffen"
+
+#, fuzzy
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Yn Erthylu'r Sefydliad."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Gwall Mewnol, torrodd AllUpgrade bethau"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "Nid yw %s yn becyn DEB dilys."
+
+#, fuzzy
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr "Nid yw hyn yn archif DEB dilys, aelod '%s' ar goll"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "Camgyfatebiaeth swm MD5"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Methais i leoli ffeila r gyfer y pecyn %s. Fa all hyn olygu bod rhaid i "
+#~ "chi drwsio'r pecyn hyn a law."
+
+#, fuzzy
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Yn agor y ffeil cyfluniad %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Methwyd dileu %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Ni ellir creu %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Methwyd stat() ar %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr ""
+#~ "Rhaid i'r cyfeiriaduron 'info' a 'temp' for ar yr un system ffeiliau"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Methwyd newid i'r cyfeiriadur gweinyddiaeth %sinfo"
+
+# FIXME
+#, fuzzy
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Gwall mewnol wrth gyrchu enw pecyn"
+
+#, fuzzy
+#~ msgid "Reading file listing"
+#~ msgstr "Yn Darllen Rhestr Ffeiliau"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Methwyd agor y ffeil rhestr '%sinfo/%s'. Os na allwch adfer y ffeil hwn "
+#~ "yna gwnewch e'n wag ac yna ail sefydlwch yr un ferswin o'r pecyn yn syth!"
+
+# FIXME
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Methwyd darllen y ffeil rhestr %sinfo/%s"
+
+#, fuzzy
+#~ msgid "Internal error getting a node"
+#~ msgstr "Gwall Mewnol wrth gael Nôd"
+
+# FIXME: literal
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Methwyd agor y ffeil dargyfeirio %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Mae'r ffeil dargyfeirio wed ei lygru"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Llinell annilys yn y ffeil dargyfeirio: %s"
+
+#, fuzzy
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Gwall Mewnol wrth ychwanegu dargyfeiriad"
+
+#, fuzzy
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Rhaid i'r storfa pecynnau gael ei ymgychwyn yn gyntaf"
+
+#, fuzzy
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Methwyd canfod pennawd \"Package:\". Atred: %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Adrean \"ConfFile\" gwael yn y ffeil statws. Atred: %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Gwall wrth ramadegu MD5. Atred: %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Methwyd newid i %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Methwyd lleoli ffeil rheoli dilys"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Methwyd agor pibell ar gyfer %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Gwall darllen o broses %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Derbynnwyd llinell pennaws sengl dros %u nod"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Gwrthwneud camffurfiol %s llinell %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Gwrthwneud camffurfiol %s llinell %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Gwrthwneud camffurfiol %s llinell %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "datgywasgydd"
+
+# FIXME
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "o hyd %lu i ddarllen ond dim ar ôl"
+
+# FIXME
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "o hyd %lu i ysgrifennu ond methwyd"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Digwyddod gwall wrth brosesu %s (NewPackage)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Digwyddod gwall wrth brosesu %s (UsePackage1)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Digwyddod gwall wrth brosesu %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Digwyddod gwall wrth brosesu %s (UsePackage2)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Digwyddod gwall wrth brosesu %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Digwyddod gwall wrth brosesu %s (NewVersion1)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Digwyddod gwall wrth brosesu %s (UsePackage3)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Digwyddod gwall wrth brosesu %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Digwyddod gwall wrth brosesu %s (FindPkg)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Digwyddod gwall wrth brosesu %s (CollectFileProvides)"
+
+#, fuzzy
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Gwall Methwyd, methwyd lleoli aelod"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "Digwyddod gwall wrth brosesu %s (NewVersion2)"
+
+#, fuzzy
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "Llinell camffurfiol %lu yn y rhestr ffynhonell %s (dosranniad)"
+
+#, fuzzy
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "Methwyd datrys '%s'"
+
+#, fuzzy
+#~ msgid "Could not patch file"
+#~ msgstr "Methwyd agor ffeil %s"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#, fuzzy
+#~ msgid "Processing triggers for %s"
+#~ msgstr "Gwall wrth brosesu'r cyfeiriadur %s"
+
+# FIXME: commas, wrapping
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "Gan y gofynnoch am weithred syml yn unig, mae'n debygol nad yw'r pecyn\n"
+#~ "yn sefydladwy a dylid cyflwyno adroddiad nam yn erbyn y pecyn hwnnw."
+
+#, fuzzy
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "Linell %d yn rhy hir (uchaf %d)"
+
+#, fuzzy
+#~ msgid "Line %d too long (max %d)"
+#~ msgstr "Linell %d yn rhy hir (uchaf %d)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc1)"
+#~ msgstr "Digwyddod gwall wrth brosesu %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc2)"
+#~ msgstr "Digwyddod gwall wrth brosesu %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "openpty failed\n"
+#~ msgstr "Methwyd dewis"
+
+#~ msgid "File date has changed %s"
+#~ msgstr "Dyddiad ffeil wedi newid %s"
+
+#, fuzzy
+#~ msgid "Reading file list"
+#~ msgstr "Yn Darllen Rhestr Ffeiliau"
+
+#, fuzzy
+#~ msgid "Could not execute "
+#~ msgstr "Methwyd cael y clo %s"
+
+#~ msgid "Abort? [Y/n] "
+#~ msgstr "Erthylu? [I/n] "
+
+#~ msgid "Write Error"
+#~ msgstr "Gwall Ysgrifennu"
+
+#~ msgid "File Not Found"
+#~ msgstr "Ni Chanfuwyd Y Ffeil"
diff --git a/po/da.po b/po/da.po
new file mode 100644
index 000000000..9f1028042
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,3838 @@
+# Danish translation apt.
+# Copyright (C) 2014 apt & nedenstående oversættere.
+# This file is distributed under the same license as the apt package.
+# Claus Hindsgaul <claus.hindsgaul@gmail.com>, 2002, 2003, 2004, 2005, 2006, 2007.
+# Joe Hansen <joedalton2@yahoo.dk>, 2010, 2012, 2013, 2014, 2017.
+#
+# checksum -> kontrolsum
+# signature -> signatur (bemærk at den ikke er underskrift i den her).
+# solver -> problemløser
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.4~rc2\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2017-03-02 23:51+0200\n"
+"Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
+"Language-Team: Danish <debian-l10n-danish@lists.debian.org>\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Ugyldig arkivsignatur"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Fejl under læsning af arkivelements hoved"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Ugyldigt arkivelementhoved %s"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Ugyldigt arkivelementhoved"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Arkivet er for kort"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Kunne ikke læse arkivhovederne"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Kan ikke finde konfigureret komprimeringsprogram for »%s«"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Ødelagt arkiv"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Tar-kontrolsum fejlede, arkivet er ødelagt"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Ukendt TAR-hovedtype %u, element %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Dette er ikke et gyldigt DEB-arkiv, mangler »%s«-elementet"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Intern fejl, kunne ikke finde elementet %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Ikke-tolkbar kontrolfil"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Kunne ikke skrive filen %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Kunne ikke lukke filen %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Stien %s er for lang"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Pakkede %s ud flere gange"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "Mappen %s er omrokeret"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Pakken forsøger at skrive til omrokeret mål %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Omrokeringsstien er for lang"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Kunne ikke finde %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Kunne ikke omdøbe %s til %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "Mappen %s bliver erstattet af en ikke-mappe"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Kunne ikke finde knuden i sin hash-bucket"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Stien er for lang"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Overskriv pakkematch uden version for %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "File %s/%s overskriver filen i pakken %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Kunne ikke læse %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Kunne ikke finde %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode kaldt med endnu forbundet knude"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Kunne ikke finde hash-element!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Kunne ikke allokere omrokering"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Intern fejl i AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Forsøger at overskrive en omrokering, %s -> %s og %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Dobbelt tilføjelse af omrokering %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Dobbelt opsætningsfil %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+"Opdatering, fra et sådant arkiv, kan ikke udføres sikkert og er derfor "
+"deaktiveret som standard."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+"Data, fra et sådant arkiv, kan ikke godkendes og er derfor potentielt "
+"farlig at anvende."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+"Se apt-secure(8)-manualsiden for detaljer om arkivoprettelse og "
+"brugerkonfiguration."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Arkivet »%s« er ikke længere underskrevet."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Arkivet »%s« har ikke længere en udgivelsesfil."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+"Dette er normalt ikke tilladt, men tilvalget Acquire::"
+"AllowDowngradeToInsecureRepositories blev angivet for at overskrive."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Arkivet »%s« er ikke underskrevet."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Arkivet »%s« har ikke en udgivelsesfil."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "Arkivet »%s« tilbyder kun svag sikkerhedsinformation."
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Kunne ikke »readlink« %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Hashsum stemmer ikke"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr "Utilstrækkelig information er tilgængelig for at udføre denne overførsel sikkert"
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "omdøbning mislykkedes, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Størrelsen stemmer ikke"
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr "Ugyldigt filformat"
+
+#: apt-pkg/acquire-item.cc
+msgid "Signature error"
+msgstr "Signaturfejl"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+"Clearsigned-fil er ikke gyldig, fik »%s« (kræver netværket ikke "
+"autentificering?)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"Der opstod en fejl under signaturbekræftelse. Arkivet er ikke opdateret "
+"og den forrige indeksfil vil blive brugt. GPG-fejl: %s: %s"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "GPG-fejl: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+"Udelader erhvervelse af konfigureret fil »%s«, da arkivet »%s« ikke understøtter "
+"arkitekturen »%s«"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"Kunne ikke finde uventet punkt »%s« i udgivelsesfil (forkert sources.list-"
+"punkt eller forkert udformet fil)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+"Udelader erhvervelse af konfigureret fil »%s«, da arkivet »%s« kun tilbyder "
+"svag sikkerhedsinformation"
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"Udgivelsesfil for %s er udløbet (ugyldig siden %s). Opdateringer for dette "
+"arkiv vil ikke blive anvendt."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Konfliktdistribution: %s (forventede %s men fik %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Jeg kunne ikke lokalisere filen til %s-pakken. Det betyder muligvis at du er "
+"nødt til manuelt at reparere denne pakke. (grundet manglende arch)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr "Kan ikke finde en kilde til at hente version »%s« for »%s«"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr "Pakkeindeksfilerne er i stykker. Intet »Filename:«-felt for pakken %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Ændringslog utilgængelig for %s=%s"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr "Metoden »%s« er eksplicit deaktiveret via konfiguration."
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr "Hvis du ønskede at bruge Tor så husk at bruge %s i stedet for %s."
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Metodedriveren %s blev ikke fundet."
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr "Er pakken %s installeret?"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Metoden %s startede ikke korrekt"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+"Indsæt venligst disken med navnet: »%s« i drevet »%s« og tryk [Retur]."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Listemappen %spartial mangler."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Arkivmappen %spartial mangler."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "Kunne ikke låse mappen %s"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr "Ingen sandkassebruger »%s« på systemet; kan ikke droppe privilegier"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+"Overførsel udføres uden for sandkassen som root, da filen »%s« ikke kunne "
+"tilgås af brugeren »%s«."
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr "Rensning af %s er ikke understøttet"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Kunne ikke skifte til %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Henter fil %li ud af %li (%s tilbage)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Henter fil %li ud af %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"Pakken %s skal geninstalleres, men jeg kan ikke finde noget arkiv med den."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Fejl, pkgProblemResolver::Resolve satte stopklodser op, det kan skyldes "
+"tilbageholdte pakker."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr ""
+"Kunne ikke korrigere problemerne, da du har tilbageholdt ødelagte pakker."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "Pakkelisterne eller statusfilen kunne ikke tolkes eller åbnes."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Du kan muligvis rette problemet ved at køre »apt-get update«"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Listen med kilder kunne ikke læses."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Fejl ved tolkning af regulært udtryk - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Udgaven »%s« for »%s« blev ikke fundet"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Versionen »%s« for »%s« blev ikke fundet"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Kunne ikke finde opgaven »%s«"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Kunne ikke finde nogle pakker med regulært udtryk »%s«"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Kunne ikke finde nogle pakker med glob »%s«"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Kunne ikke lokalisere pakken %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr "Kan ikke vælge versioner fra pakke »%s« som er vitalt"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr "Kan ikke vælge nyeste version fra pakke »%s« som er vital"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+"Kan ikke vælge kandidatversion fra pakke %s da den ikke har nogen kandidat"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"Kan ikke vælge installeret version fra pakke %s da den ikke er installeret"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"Kan ikke vælge installeret eller kandidatversion fra pakke »%s« da den ikke "
+"har nogen af dem"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Linjen %u er for lang i kildelisten %s."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Afmonterer CD-ROM ...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Bruger CD-ROM-monteringspunktet %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Venter på disken ...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Monterer CD-ROM ...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Identificerer ... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Gemt mærkat: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Skanner disken for indeksfiler ...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Fandt %zu pakkeindekser, %zu kildeindekser, %zu oversættelsesindekser og %zu "
+"signaturer\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Kunne ikke finde nogen pakkefiler, det er muligvis ikke en Debiandisk eller "
+"den forkerte arkitektur?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Fandt mærkatet »%s«\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Det er ikke et gyldigt navn, prøv igen.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Denne disk hedder: \n"
+"»%s«\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Kopierer pakkelisterne ..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Skriver ny kildeliste\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Denne disk har følgende kildeliste-indgange:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Kunne ikke finde %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Kunne ikke finde monteringspunktet %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Kunne ikke finde cdrommen"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr ""
+"Kommandolinjetilvalget »%c« [fra %s] forstås ikke i kombination med de andre "
+"tilvalg."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr ""
+"Kommandolinjetilvalget %s forstås ikke i kombination med de andre "
+"tilvalg"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Kommandolinjetilvalget %s er ikke boolsk"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Tilvalget %s kræver et parameter."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "Tilvalg %s: Opsætningspostens specifikation skal have en =<værdi>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Tilvalget %s kræver et heltalligt parameter, ikke »%s«"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Tilvalget »%s« er for langt"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "%s blev ikke forstået, prøv med »true« eller »false«."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Ugyldig handling %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Ukendt type-forkortelse: »%c«"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Ã…bner konfigurationsfilen %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Syntaksfejl %s:%u: Blokken starter uden navn."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Syntaksfejl %s:%u: Forkert udformet mærke"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Syntaksfejl %s:%u: Overskydende affald efter værdien"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "Syntaksfejl %s:%u: Direktiver kan kun angives i topniveauet"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Syntaksfejl %s:%u: For mange sammenkædede inkluderinger"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Syntaksfejl %s:%u: Inkluderet herfra"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Syntaksfejl %s:%u: Ikke-understøttet direktiv »%s«"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr "Syntaksfejl %s:%u: ryd direktiv kræver et tilvalgstræ som argument"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Syntaksfejl %s:%u: Overskydende affald i slutningen af filen"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Fejl ved frigivelse af filen %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Benytter ikke låsning for skrivebeskyttet låsefil %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Kunne ikke åbne låsefilen %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Benytter ikke låsning for nfs-monteret låsefil %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Kunne ikke opnå låsen %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr "Liste over filer kan ikke oprettes da »%s« ikke er en mappe"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr "Ignorerer »%s« i mappe »%s« da det ikke er en regulær fil"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr "Ignorerer fil »%s« i mappe »%s« da den ikke har en filendelse"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr "Ignorerer fil »%s« i mappe »%s« da den har en ugyldig filendelse"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Ventede på %s, men den var der ikke"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Underprocessen %s modtog en segmenteringsfejl."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Underprocessen %s modtog en signal %u."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Underprocessen %s returnerede en fejlkode (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Underprocessen %s afsluttedes uventet"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Læsefejl"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Skrivefejl"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Problem under lukning af gzip-filen %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr "Uventet filafslutning"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Kunne ikke oprette underproces IPC"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Kunne ikke udføre komprimeringsprogram "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Kunne ikke åbne filen %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Kunne ikke åbne filbeskrivelse %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "læs, mangler stadig at læse %llu men der er ikke flere"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "skriv, mangler stadig at skrive %llu men kunne ikke"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Problem under lukning af filen %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Problem under omdøbning af filen %s til %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Problem under synkronisering af fil"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Kunne ikke mkstemp %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Kunne ikke skrive til %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Kan ikke udføre mmap for en tom fil"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Kunne ikke udføre mmap for %llu byte"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Kunne ikke duplikere filbeskrivelse %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "Kunne ikke lukke mmap"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "Kunne ikke synkronisere mmap"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Kunne ikke udføre mmap for %lu byte"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Kunne ikke afkorte filen"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"Dynamisk MMap løb tør for plads. Øg venligst størrelsen på APT::Cache-Start. "
+"Aktuel værdi: %lu. (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"Kunne ikke øge størrelsen på MMap da begrænsningen på %lu byte allerede er "
+"nået."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Kunne ikke øge størrelsen på MMap da automatisk øgning er deaktiveret af "
+"bruger."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Fejl!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Færdig"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr "..."
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... %u%%"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%lid %lih %limin %lis"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%lih %limin %lis"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%limin %lis"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%lis"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Det valgte %s blev ikke fundet"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr "Målet %s ønsker at erhverve den samme fil (%s) som %s fra kilden %s"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr "MÃ¥let %s (%s) er konfigureret flere gange i %s og %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Kunne ikke fortolke udgivelsesfil %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Ingen afsnit i udgivelsesfil %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Intet hashpunkt i udgivelsesfil %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+"Intet hash-punkt i Release-filen %s, som anses for stærk nok til "
+"sikkerhedsformål."
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Ugyldigt punkt »%s« i udgivelsesfil %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr "Værdisæt er ikke i overensstemmelse for tilvalget %s jævnfør kilden %s %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr "Ugyldigt værdisæt for tilvalget %s jævnfør kilden %s %s (%s)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr "Værdisæt er ikke i overenstemmelse for tilvalget %s jævnfør kilden %s %s: %s != %s"
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Kunne ikke tolke pakkefilen %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"Kunne ikke låse administrationsmappen (%s), bruger en anden proces den?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Kunne ikke låse administrationsmappen (%s), er du rod (root)?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr "dpkg blev afbrudt, du skal manuelt køre »%s« for at rette problemet. "
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Ikke låst"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "Installerer %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Sætter %s op"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Fjerner %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "Fjerner %s helt"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "Bemærker forsvinding af %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Kører førinstallationsudløser %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "Installerede %s"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Mappe »%s« mangler"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "Kunne ikke åbne filen »%s«"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Klargør %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Pakker %s ud"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Gør klar til at sætte %s op"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Gør klar til afinstallation af %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "Fjernede %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Gør klar til at fjerne %s helt"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "Fjernede %s helt"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Can not write log (%s)"
+msgstr "Kan ikke skrive log (%s)"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr "Er /dev/pts monteret?"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "Handling blev afbrudt før den kunne afsluttes"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+"Ingen apportrapport skrevet da MaxReports (maks rapporter) allerede er nået"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "afhængighedsproblemer - efterlader ukonfigureret"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Ingen apportrapport skrevet da fejlbeskeden indikerer, at det er en "
+"opfølgningsfejl fra en tidligere fejl."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Ingen apportrapport skrevet da fejlbeskeden indikerer en fuld disk-fejl"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Ingen apportrapport skrevet da fejlbeskeden indikerer en ikke nok "
+"hukommelsesfejl"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Ingen apportrapport skrevet da fejlbeskeden indikerer en fejl på det lokale "
+"system"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr "Ingen apportrapport skrevet da fejlbeskeden indikerer en dpkg I/O-fejl"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Opbygger afhængighedstræ"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Kandidatversioner"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Afhængighedsgenerering"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Læser tilstandsoplysninger"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Kunne ikke åbne StateFile %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Kunne ikke skrive den midlertidige StateFile %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "Send scenarie til problemløser"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "Send forespørgsel til problemløser"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "Forbered for modtagelse af løsning"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr "Ekstern problemløser fejlede uden en korrekt fejlbesked"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "Kør ekstern problemløser"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr "Kør ekstern planlægger"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr "Send forespørgsel til planlægger"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr "Send scenarie til planlægger"
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr "Ekstern planlægger mislykkedes uden en korrekt fejlbesked"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "Skrev %i poster.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "Skrev %i poster med %i manglende filer.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "Skrev %i poster med %i ikke-trufne filer\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "Skrev %i poster med %i manglende filer og %i ikke-trufne filer\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "Kan ikke finde godkendelsesregistrering for: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Hashsum stemmer ikke: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Pakkesystemet »%s« understøttes ikke"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Kunne ikke bestemme en passende pakkesystemtype"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr "Status: [%3i%%]"
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "Kører dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"Kunne ikke udføre øjeblikkelig konfiguration på »%s«. Se venligst man 5 apt."
+"conf under APT:Immediate-Cinfigure for detaljer. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "Kunne ikke åbne filen »%s«. "
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Kørsel af denne installation kræver midlertidig afinstallation af den "
+"essentielle pakke %s grundet en afhængighedsløkke. Det er ofte en dårlig "
+"ide, men hvis du virkelig vil gøre det, kan du aktivere valget »APT::Force-"
+"LoopBreak«."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Tomt pakke-mellemlager"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Pakke-mellemlagerets fil er ødelagt"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Pakke-mellemlagerets fil er af en inkompatibel version"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Denne APT understøtter ikke versionssystemet »%s«"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Pakke-mellemlageret blev kompileret for andre arkitekturer: %s vs %s"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Pakke-mellemlagerets fil er ødelagt, den har forkert hash"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Afhængigheder"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Præ-afhængigheder"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Foreslåede"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Konflikter"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Anbefalede"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Erstatter"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Ødelægger"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Forbedringer"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Overflødiggør"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "vigtig"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "krævet"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "standard"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "ekstra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "frivillig"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Mellemlageret benytter en inkompatibel versionsstyring"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Der opstod en fejl under behandlingen af %s (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"Hold da op! Du nåede over det antal pakkenavne, denne APT kan håndtere."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Hold da op! Du nåede over det antal versioner, denne APT kan håndtere."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Hold da op! Du nåede over det antal versioner, denne APT kan håndtere."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+"Hold da op! Du nåede over det antal afhængigheder, denne APT kan håndtere."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Indlæser pakkelisterne"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "IO-fejl ved gemning af kilde-mellemlageret"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Indeksfiler af typen »%s« understøttes ikke"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"Værdien »%s« er ugyldig for APT::Default-Release da sådan en udgivelse ikke "
+"er tilgængelig i kilderne"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Ugyldig indgang i indstillingsfilen %s, pakkehovedet mangler"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Kunne ikke forstå pin-type %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr "%s: Værdien %s er uden for intervallet med gyldige pin-prioriteringer (%d til %d)"
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Ingen prioritet (eller prioritet nul) angivet ved pin"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Forkert udformet punkt %u i %s-linjen %s (%s)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Ã…bner %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Ugyldig linje %u i kildelisten %s (type)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Typen »%s« er ukendt på linje %u i kildelisten %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Forkert udformet stanza %u i kildelisten %s (type)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Typen »%s« er ukendt på stanza %u i kildelisten %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr "Filen %s er ikke understøttet når angivet på kommandolinjen"
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Du skal have nogle »source«-URI'er i din sources.list"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr "Kan ikke konvertere %s til heltal: uden for interval"
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Kunne ikke hente %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Nogle indeksfiler kunne ikke hentes. De er blevet ignoreret eller de gamle "
+"bruges i stedet."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Beregner opgraderingen"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Havde:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Henter:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Ignorerer:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Fejl:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Hentede %sB på %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Arbejder]"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Medieskift: Indsæt venligst disken med navnet\n"
+" »%s«\n"
+"i drevet »%s« og tryk [Retur]\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Retter afhængigheder ..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " mislykkedes."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Kunne ikke rette afhængigheder"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Kunne ikke minimere opgraderingssættet"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Færdig"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "Du kan muligvis rette dette ved at køre »apt --fix-broken install«."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Uopfyldte afhængigheder. Prøv »apt --fix-broken install« uden pakker (eller "
+"angiv en løsning)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr "Sortering"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Bemærk, vælger »%s« for opgaven »%s«\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Bemærk, vælger »%s« for glob'en »%s«\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Bemærk, vælger »%s« for glob'en »%s«\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Pakken %s er en virtuel pakke tilbudt af:\n"
+
+#: apt-private/private-cacheset.cc
+msgid " [Installed]"
+msgstr " [Installeret]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [Ingen kandidatversion]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Du skal eksplicit vælge en at installere."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Pakken %s er ikke tilgængelig, men der refereres til den af en\n"
+"anden pakke. Det kan betyde at pakken mangler, er blevet forældet\n"
+"eller kun er tilgængelig fra en anden kilde\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "De følgende pakker vil dog erstatte den:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Pakken »%s« har ingen installationskandidat"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Virtuelle pakker som »%s« kan ikke fjernes\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "Pakken »%s« er ikke installeret, så blev ikke fjernet. Mente du »%s«?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Pakken »%s« er ikke installeret, så blev ikke fjernet\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Bemærk, vælger »%s« i stedet for »%s«\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr "De mest anvendte kommandoer:"
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr "Se %s for yderligere information om de tilgængelige kommandoer."
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+"Konfigurationstilvalg og -syntaks er omtalt detaljeret i apt.conf(5).\n"
+"Information om hvordan kilder konfigureres kan findes i sources.list(5).\n"
+"Pakke- og versionsvalg kan udtrykkes via apt_preferences(5).\n"
+"Sikkerhedsdetaljer er tilgængelige i apt-secure(8).\n"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Denne APT har »Super Cow Powers«."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr "Dette APT-hjælpeprogram har Super Meep Powers."
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Fandt ingen pakker"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "ADVARSEL: Følgende pakkers autenticitet kunne ikke verificeres!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Autentifikationsadvarsel tilsidesat.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Nogle pakker kunne ikke autentificeres"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Installér disse pakker uden verifikation?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+"--force-yes er forældet, brug i stedet for et af tilvalgene startende "
+"med --allow"
+
+#: apt-private/private-download.cc
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr ""
+"Der var pakker uden godkendelser og -y blev brugt uden --allow-"
+"unauthenticated"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Kunne ikke bestemme ledig plads i %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Du har ikke nok ledig plads i %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Kunne ikke låse nedhentningsmappen"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Nogle pakker kunne ikke installeres. Det kan betyde at du har ønsket\n"
+"en umulig situation eller bruger den ustabile distribution, hvor enkelte\n"
+"pakker endnu ikke er lavet eller gjort tilgængelige."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Følgende oplysninger kan hjælpe dig med at klare situationen:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Ødelagte pakker"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Kunne ikke hente nogle af arkiverne. Prøv evt. at køre »apt-get update« "
+"eller prøv med --fix-missing."
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Intern fejl. InstallPackages blev kaldt med ødelagte pakker!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Pakker skal afinstalleres, men Remove er deaktiveret."
+
+#: apt-private/private-install.cc
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr ""
+"Essentielle pakker blev fjernet og -y blev brugt uden --allow-remove-"
+"essential."
+
+#: apt-private/private-install.cc
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Pakker blev nedgraderet og -y blev brugt uden --allow-downgrades."
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+"Tilbageholdte pakker blev ændret og -y blev brugt uden --allow-change-held-"
+"packages."
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Intern fejl. Sortering blev ikke fuldført"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Mystisk... Størrelserne passede ikke, skriv til apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "%sB/%sB skal hentes fra arkiverne.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "%sB skal hentes fra arkiverne.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "Efter denne handling, vil %sB yderligere diskplads være brugt.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Efter denne handling, vil %sB diskplads blive frigjort.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "»Trivial Only« angivet, men dette er ikke en triviel handling."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Ja, gør som jeg siger!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Du er ved at gøre noget, der kan være skadeligt\n"
+"For at fortsætte, skal du skrive »%s«\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Afbryder."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Vil du fortsætte?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Nedhentningen af filer mislykkedes"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Nedhentning afsluttet i »hent-kun«-tilstand"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing og medieskift understøttes endnu ikke"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Kunne ikke rette manglende pakker."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Afbryder installationen."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"Den følgende pakke forsvandt fra dit system, da\n"
+"alle filer er blevet overskrevet af andre pakker:"
+msgstr[1] ""
+"De følgende pakker forsvandt fra dit system, da\n"
+"alle filer er blevet overskrevet af andre pakker:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Bemærk: Dette sker automatisk og med vilje af dpkg."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+"Det er ikke meningen, at vi skal slette ting og sager, kan ikke starte "
+"AutoRemover"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Hmm, det lader til at AutoRemover smadrede noget, der virkelig ikke\n"
+"burde kunne ske. Indsend venligst en fejlrapport om apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Intern fejl. AutoRemover ødelagde noget"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"Følgende pakke blev installeret automatisk, og behøves ikke længere:"
+msgstr[1] ""
+"Følgende pakker blev installeret automatisk, og behøves ikke længere:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "Pakken %lu blev installeret automatisk, og behøves ikke længere.\n"
+msgstr[1] ""
+"Pakkerne %lu blev installeret automatisk, og behøves ikke længere.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Brug »%s« til at fjerne den."
+msgstr[1] "Brug »%s« til at fjerne dem."
+
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "De følgende yderligere pakker vil blive installeret:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Foreslåede pakker:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Anbefalede pakker:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+"Springer over %s, den er allerede installeret og opgradering er ikke "
+"angivet.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"Springer over %s, den er ikke installeret og der blev kun anmodt om "
+"opgraderinger.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "Geninstallation af %s er ikke muligt, pakken kan ikke hentes.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s er allerede den nyeste version (%s).\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s sat til manuelt installeret.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Valgt version »%s« (%s) for »%s«\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Valgt version »%s« (%s) for »%s« på grund af »%s«\n"
+
+# måske visning, kategorisering
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr "Listing"
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+"Der er %i yderlig version. Brug venligst kontakten »-a« til at se den."
+msgstr[1] ""
+"Der er %i yderligere versioner. Brug venligst kontakten »-a« til at se dem."
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"BEMÆRK: Dette er kun en simulering!\n"
+" %s kræver rootprivilegier for reel kørsel.\n"
+" Husk også at låsning er deaktiveret,\n"
+" så stol ikke på relevansen for den reelle aktuelle situation!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr "ukendt"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr "[installeret,kan opgraderes til: %s]"
+
+#: apt-private/private-output.cc
+msgid "[installed,local]"
+msgstr "[Installeret,lokalt]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr "[installeret,kan auto-fjernes]"
+
+#: apt-private/private-output.cc
+msgid "[installed,automatic]"
+msgstr "[Installeret,automatisk]"
+
+#: apt-private/private-output.cc
+msgid "[installed]"
+msgstr "[Installeret]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr "[kan opgraderes fra: %s]"
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr "[residual-konfig]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "men %s er installeret"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "men %s forventes installeret"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "men den kan ikke installeres"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "men det er en virtuel pakke"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "men den bliver ikke installeret"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "men den er ikke installeret"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " eller"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Følgende pakker har uopfyldte afhængigheder:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Følgende NYE pakker vil blive installeret:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Følgende pakker vil blive AFINSTALLERET:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Følgende pakker er blevet holdt tilbage:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Følgende pakker vil blive opgraderet:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Følgende pakker vil blive NEDGRADERET:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Følgende tilbageholdte pakker vil blive ændret:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (grundet %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"ADVARSEL: Følgende essentielle pakker vil blive afinstalleret\n"
+"Dette bør IKKE ske medmindre du er helt klar over, hvad du laver!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu opgraderes, %lu nyinstalleres, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu geninstalleres, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu nedgraderes, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu afinstalleres og %lu opgraderes ikke.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu ikke fuldstændigt installerede eller afinstallerede.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[J/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[j/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "J"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "Du skal angive mindst ét søgemønster"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr "Fuldtekst-søgning"
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Pakkefilen %s er ude af trit."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+"Der er %i yderligere post. Brug venligst kontakten »-a« for at se den."
+msgstr[1] ""
+"Der er %i yderligere poster. Brug venligst kontakten »-a« for at se dem."
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr "ikke en reel pakke (virtuel)"
+
+# Overskriften til apt-cache policy,
+# forkorter "Package" væk. CH
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Pakkefiler:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "Mellemlageret er ude af trit, kan ikke krydsreferere en pakkefil"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "»Pinned« pakker:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr "%s -> %s med prioritet %d\n"
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Installeret: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Kandidat: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(ingen)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Versionstabel:"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Kan ikke finde en pakke for arkitektur »%s«"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Kan ikke finde en pakke »%s« med version »%s«"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Kan ikke finde en pakke »%s« med udgivelse »%s«"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Vælger »%s« som kildepakke fremfor »%s«\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "Kan ikke finde version »%s« for pakke »%s«"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Du skal angive mindst én pakke at hente kildeteksten til"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Kunne ikke finde kildetekstpakken for %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"BEMÆRK: Pakning af »%s« vedligeholdes i versionskontrolsystemet »%s« på:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Brug venligst:\n"
+"%s\n"
+"for at hente de seneste (muligvis ikke udgivet) opdateringer til pakken.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Overspringer allerede hentet fil »%s«\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "%sB/%sB skal hentes fra kildetekst-arkiverne.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "%sB skal hentes fra kildetekst-arkiverne.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Henter kildetekst %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Nogle arkiver kunne ikke hentes."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Overspringer udpakning af allerede udpakket kildetekst i %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Udpakningskommandoen »%s« fejlede.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Tjek om pakken »dpkg-dev« er installeret.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Opbygningskommandoen »%s« fejlede.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Kunne ikke hente oplysninger om opbygningsafhængigheder for %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s har ingen opbygningsafhængigheder.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr "Skal angive mindst én pakke at tjekke opbygningsafhængigheder for"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"Ingen arkitekturinformation tilgængelig for %s. Se apt.conf(5) APT::"
+"Architectures for opsætning"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr "Bemærk, bruger mappen »%s« til at hente kompileringsafhængighederne\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Bemærk, bruger filen »%s« til at hente kompileringsafhængighederne\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Kunne ikke behandler opbygningsafhængighederne"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Kunne ikke fortolke %s. Rediger igen? "
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr "Din »%s« fil blev ændret, kør venligst »apt-get update«."
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Pakken %s version %s har en uopfyldt afhængighed:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "»update«-kommandoen benytter ingen parametre"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+"%i pakke kan opgraderes. Kør »apt list --upgradable« for at se den.\n"
+msgstr[1] ""
+"%i pakker kan opgraderes. Kør »apt list --upgradable« for at se dem.\n"
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr "Alle pakker er opdateret."
+
+#: cmdline/apt-cache.cc
+msgid "apt-cache stats does not take any arguments"
+msgstr "»apt-cache stats« benytter ingen parametre"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Samlet antal pakkenavne: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Samlet antal pakkestrukturer: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Normale pakker: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Rene virtuelle pakker: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Enkelte virtuelle pakker: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Blandede virtuelle pakker: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Manglende: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Totale forskellige versioner: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Sammenlagt forskellige beskrivelser: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Sammenlagt afhængigheder: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Sammenlagt version/fil-relationer: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Sammenlagt version/fil-relationer: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Sammenlagt »Tilbyder«-markeringer: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Totalle søgemønsterstrenge: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Total »Slack«-plads: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Total plads, der kan gøres rede for: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+"Denne kommando er forældet. Brug venligst »apt-mark showauto« i stedet for."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+"Brug: apt-cache [tilvalg] kommando\n"
+" apt-cache [tilvalg] show pakke1 [pakke2 ...]\n"
+"\n"
+"apt-cache forespørger og viser tilgængelig information om installerede\n"
+"pakker og pakker der kan installeres. Programmet fungerer eksklusivt på\n"
+"data hentet i det lokale mellemlager via kommandoen »update« for f.eks.\n"
+"apt-get. Den viste information kan derfor være forældet, hvis den sidste\n"
+"opdatering ikke var så lang tid siden, men til gengæld fungerer apt-cache\n"
+"uafhængig af tilgængeligheden for de konfigurerede kilder (f.eks.\n"
+"frakoblet).\n"
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Vis kildetekstposter"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Gennemsøg pakkelisten med et regulært udtryk"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Vis de rå afhængighedsoplysninger for en pakke"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Vis omvendte afhængighedsoplysninger for en pakke"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Vis en læsbar post for pakken"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Vis navnene på alle pakker"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Vis policy-indstillinger"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr ""
+"Angiv venligst et navn for denne disk, som f.eks. »Debian 5.0.3 Disk 1«"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Indsæt venligst en disk i drevet og tryk [Retur]"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Kunne ikke montere »%s« til »%s«"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+"Ingen cd-rom kunne detekteres eller findes via standardmonteringspunktet.\n"
+"Du kan prøve tilvalget --cdrom for at angive cd-rom-monteringspunktet.\n"
+"Se »man apt-cdrom« for yderligere information om automatisk detektering af "
+"cd-rom og monteringspunkt."
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Gentag processen for resten af cd'erne i dit sæt."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+"Brug: apt-cdrom [tilvalg] kommando\n"
+"\n"
+"apt-cdrom bruges til at tilføje cd-rom'er, USB-flashdrev og andre\n"
+"eksterne medietyper som pakkekilder til APT. Monteringspunktet og\n"
+"enhedsinformationen tages fra apt.conf(5), udev(7) og fstab(5).\n"
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Parametre ikke angivet i par"
+
+#: cmdline/apt-config.cc
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Brug: apt-config [tilvalg] kommando\n"
+"\n"
+"apt-config er en grænseflade til konfigurationsindstillingerne\n"
+"brugt af alle APT-værktøjer, hovedsagelig lavet til fejlsøgning\n"
+"og skalskriptopbygning.\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr "hent konfigurationsværdier via skalevaluering"
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr "vis den aktive konfigurationsindstilling"
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+"Brug: apt-dump-solver\n"
+"\n"
+"apt-dump-solver er en grænseflade til at lagre et EDSP-scenarie i\n"
+"en fil og valgfrit videresende den til en anden problemløser.\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Brug: apt-extracttemplates fil1 [fil2 ...]\n"
+"\n"
+"apt-extracttemplates bruges til at udtrække konfigurations- og\n"
+"skabelonfiler fra Debianpakker. Programmet bruges derfor hovedsagelig\n"
+"af debconf(1) til at stille konfigurationsspørgsmål før installationen\n"
+"af pakker.\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Kan ikke finde debconfs version. Er debconf installeret?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Kunne ikke finde pakken %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s sat til automatisk installation.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Denne kommando er forældet. Brug venligst »apt-mark auto« og »apt-mark "
+"manual« i stedet for."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Intern fejl. Problemløseren ødelagde noget"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Understøttede moduler:"
+
+#: cmdline/apt-get.cc
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Brug: apt-get [tilvalg] kommando\n"
+" apt-get [tilvalg] install|remove pakke1 [pakke2 ...]\n"
+" apt-get [tilvalg] source pakke1 [pakke2 ...]\n"
+"\n"
+"apt-get er en kommandolinjegrænseflade til at hente pakker og\n"
+"information om dem fra godkendte kilder og for installation,\n"
+"opgradering og fjernelse af pakker sammen med deres afhængigheder.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Hent nye lister over pakker"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Udfør en opgradering"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Installer nye pakker (pakke er libc6, ikke libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Afinstaller pakker"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Fjern pakker og konfigurationsfiler"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Afinstaller automatisk alle ubrugte pakker"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Distributionsopgradering, se apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Følg valgene fra dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Sæt opbygningsafhængigheder op for kildetekstpakker"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Slet hentede arkivfiler"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Slet gamle hentede arkivfiler"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Tjek at der ikke er uopfyldte afhængigheder"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Hent kildetekstarkiver"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "Hent den binære pakke til den aktuelle mappe"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "Hent og vis ændringsloggen for den angivne pakke"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr "Skal bruge en adresse som argument"
+
+#: cmdline/apt-helper.cc
+msgid "Must specify at least one pair url/filename"
+msgstr "Du skal angive mindst et par i form af adresse/filnavn"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr "Kunne ikke hente pakkerne"
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr "GetSrvRec mislykkedes for %s"
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+"Brug: apt-helper [tilvalg] kommando\n"
+" apt-helper [tilvalg] cat-file-fil ...\n"
+" apt-helper [tilvalg] download-file uri mål-sti\n"
+"\n"
+"apt-helper samler en række kommandoer som skalskripter kan bruge\n"
+"f.eks. den samme proxykonfiguration eller indhentelsessystem som\n"
+"APT ville anvende.\n"
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr "hent den angivne uri til mål-sti"
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr "slå en SRV-post op (f.eks. _http._tcp.ftp.debian.org)"
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr "sammenkæd filer, med automatisk dekomprimering"
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr "detekter proxy via apt.conf"
+
+#: cmdline/apt-internal-planner.cc
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Brug: apt-internal-planner\n"
+"\n"
+"apt-internal-planner er en grænseflade, til at bruge den nuværende\n"
+"interne installationsplanlægger for APT-familien såsom en ekstern,\n"
+"til fejlsøgning eller lignende.\n"
+
+#: cmdline/apt-internal-solver.cc
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Brug: apt-internal-solver\n"
+"\n"
+"apt-internal-solver er en grænseflade, der skal bruge den nuværende\n"
+"problemløser for APT-familien som en ekstern, til fejlsøgning eller\n"
+"lignende\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "%s kan ikke markeres, da den ikke er installeret.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s var allerede sat til manuelt installeret.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s var allerede sat til automatisk installeret.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s var allerede sat i bero.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s var allerede ikke i bero.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "Kørsel af dpkg fejlede. Er du root (administrator)?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "%s sat i bero.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Afbrød i bero for %s.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr "Valgte %s for fuldstænding fjernelse.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr "Valgte %s for fjernelse.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr "Valgte %s for installation.\n"
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"Brug: apt-mark [tilvalg] {auto|manual} pakke1 [pakke2 ...]\n"
+"\n"
+"apt-mark er en simpel kommandolinjegrænseflade for markering af pakker\n"
+"som manuelt eller automatisk installeret. Programmet kan også bruges\n"
+"til at manipulere dpkg(1)-markeringstilstande for pakker, og til at\n"
+"vise alle pakker med eller uden en bestemt markering.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "Marker de givne pakker som automatisk installeret"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "Marker de givne pakker som manuelt installeret"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr "Marker en pakke som tilbageholdt"
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr "Fjern tilbageholdelse på pakke"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr "Vis listen over automatisk installerede pakker"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr "Vis listen over manuelt installerede pakker"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr "Vis listen over tilbageholdte pakker"
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Ukendt pakkeindgang!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+"Brug: apt-sortpkgs [tilvalg] fil1 [fil2 ...]\n"
+"\n"
+"apt-sortpkgs er et simpelt værktøj til at sortere informationsfiler for\n"
+"pakker. Som standard sorteres efter den binære pakkeinformation, men\n"
+"tilvalget -s kan bruges til at skifte til kildepakkerækkefølge i stedet\n"
+"for.\n"
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+"Brug: apt [tilvalg] kommando\n"
+"\n"
+"apt er en pakkehåndtering for kommandolinjen og den tilbyder kommandoer\n"
+"for søgning og håndtering samt forespørgsel af information om pakker.\n"
+"Den tilbyder den samme funktionalitet som de specialiserede APT-værktøjer,\n"
+"såsom apt-get og apt-cache, men aktiverer tilvalg mere egnet for\n"
+"interaktiv brug som standard.\n"
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr "vis pakker baseret på pakkenavn"
+
+#: cmdline/apt.cc
+msgid "search in package descriptions"
+msgstr "søg i pakkebeskrivelser"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr "vis pakkedetaljer"
+
+#. package stuff
+#: cmdline/apt.cc
+msgid "install packages"
+msgstr "installer pakker"
+
+#: cmdline/apt.cc
+msgid "remove packages"
+msgstr "fjern pakker"
+
+#. system wide stuff
+#: cmdline/apt.cc
+msgid "update list of available packages"
+msgstr "opdater listen over tilgængelige pakker"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr "opgradere systemet ved at installere/opgradere pakker"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+"full-upgrade - opgradere systemet ved at fjerne/installere/opgradere pakker"
+
+#. misc
+#: cmdline/apt.cc
+msgid "edit the source information file"
+msgstr "rediger source-informationsfilen (kildefilen)"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Ugyldig standardindstilling!"
+
+#: dselect/install dselect/update
+msgid "Press [Enter] to continue."
+msgstr "Tryk [Retur] for at fortsætte."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Ønsker du at slette nogle tidligere hentede .deb-filer?"
+
+# Note to translators: The following four messages belong together. It doesn't
+# matter where sentences start, but it has to fit in just these four lines, and
+# at only 80 characters per line, if possible.
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "Der opstod fejl under udpakningen. Pakker som blev installeret"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "vil blive konfigureret. Det kan give gentagne fejl"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"eller fejl, der skyldes manglende afhængigheder. Dette er o.k. Det er kun"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"fejlene over denne besked, der er vigtige. Ret dem og kør [I]nstallér igen"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Sammenfletter tilgængelighedsoplysninger"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Pakkeudvidelseslisten er for lang"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Fejl under behandling af mappen %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Kildeudvidelseslisten er for lang"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Fejl under skrivning af hovedet til indholdsfil"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Fejl under behandling af indhold %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Brug: apt-ftparchive [tilvalg] kommando\n"
+"Kommandoer: packges binærsti [tvangsfil [sti]]\n"
+" sources kildesti [tvangsfil [sti]]\n"
+" contents sti\n"
+" release sti\n"
+" generate config [grupper]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive laver indeksfiler til Debianarkiver. Det understøtter \n"
+"mange former for generering, lige fra fuldautomatiske til funktionelle\n"
+"erstatninger for dpkg-scanpackages og dpkg-scansources\n"
+"\n"
+"apt-ftparchive genererer Package-filer ud fra træer af .deb'er.\n"
+"Package-filen indeholder alle styrefelterne fra hver pakke såvel\n"
+"som MD5-mønstre og filstørrelser. En tvangsfil understøttes til at\n"
+"gennemtvinge indholdet af Priority og Section.\n"
+"\n"
+"På samme måde genererer apt-ftparchive Sources-filer ud fra træer\n"
+"med .dsc'er. Tvangstilvalget --source-override kan bruges til at\n"
+"angive en src-tvangsfil.\n"
+"\n"
+"Kommandoerne »packages« og »sources« skal køres i roden af træet.\n"
+"binærsti skal pege på basen af rekursive søgninger og tvangsfilen\n"
+"skal indeholde tvangsflagene. Sti foranstilles eventuelle\n"
+"filnavnfelter. Et eksempel på brug fra Debianarkivet:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Tilvalg:\n"
+" -h Denne hjælpetekst\n"
+" --md5 Styr generering af MD5\n"
+" -s=? Kilde-tvangsfil\n"
+" -q Stille\n"
+" -d=? Vælg den valgfrie mellemlager-database\n"
+" --no-delink Aktivér \"delinking\"-fejlsporingstilstand\n"
+" --contents Bestem generering af indholdsfil\n"
+" -c=? Læs denne opsætningsfil\n"
+" -o=? Sæt en opsætnings-indstilling"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Ingen valg passede"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Visse filer mangler i pakkefilgruppen »%s«"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "DB var ødelagt, filen omdøbt til %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "DB er gammel, forsøger at opgradere %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Databaseformatet er ugyldigt. Hvis du har opgraderet fra en ældre version af "
+"apt, så fjern og genskab databasen."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Kunne ikke åbne DB-filen %s: %s"
+
+#: ftparchive/cachedb.cc
+msgid "Failed to read .dsc"
+msgstr "Kunne ikke læse .dsc"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Arkivet har ingen kontrolindgang"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Kunne skaffe en markør"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Kunne ikke allokere hukommelse"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Ukendt komprimeringsalgoritme »%s«"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Komprimerede uddata %s kræver et komprimeringssæt"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Kunne ikke oprette IPC-videreførsel til underproces"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Kunne ikke spalte"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Komprimer barn"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Intern fejl. Kunne ikke oprette %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "IO til underproces/fil mislykkedes"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Kunne ikke læse under beregning af MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Kunne ikke åbne %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Ugyldig overskrivning af %s-linjen %llu (%s)"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Kunne ikke læse gennemtvangsfilen %s"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Ugyldig gennemtvangs %s-linje %llu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Ugyldig gennemtvangs %s-linje %llu #2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Ugyldig gennemtvangs %s-linje %llu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "A: Kunne ikke læse mappen %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "W: Kunne ikke finde %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "F: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "A: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "F: Fejlene vedrører filen "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Kunne ikke omsætte navnet %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Trævandring mislykkedes"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Kunne ikke åbne %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Kunne ikke lænke %s til %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " Nåede DeLink-begrænsningen på %sB.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Arkivet havde intet package-felt"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s har ingen tvangs-post\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " pakkeansvarlig for %s er %s, ikke %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s har ingen linje med tilsidesættelse af standard for kildefiler\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr ""
+" %s har ingen linje med tilsidesættelse af standard for binøre filer\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Afventer hoveder"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "Http-serveren sendte et ugyldigt svarhovede"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Ugyldig linje i hovedet"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "Http-serveren sendte et ugyldigt Content-Length-hovede"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "Http-serveren sendte et ugyldigt Content-Range-hovede"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr ""
+"Denne http-servere har fejlagtig understøttelse af intervaller (»ranges«)"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Ukendt datoformat"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Ugyldige hoved-data"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Forbindelsen mislykkedes"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+"Deaktiverede automatisk %s på grund af ukorrekt svar fra server/proxy. (man "
+"5 apt.conf)"
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Intern fejl"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Kunne ikke læse cdrom-databasen %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Brug apt-cdrom for at apt kan lære den at kende. apt-get update kan ikke "
+"bruges til at tilføje nye cd'er"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Forkert cd"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Kunne ikke afmontere cdrommen i %s, den er muligvis stadig i brug."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Disk blev ikke fundet."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Fil blev ikke fundet"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr "Direkte forbindelse til %s-domæner er som standard blokeret."
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Forbinder til %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Kunne ikke oprette sokkel til %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Kan ikke oprette forbindelse til %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Kunne ikke forbinde til %s:%s (%s) grundet tidsudløb"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Mislykkedes"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Kunne ikke forbinde til %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Forbinder til %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Kunne ikke omsætte navnet »%s«"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Midlertidig fejl ved omsætning af navnet »%s«"
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Systemfejl under opløsning af »%s:%s«"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Der skete noget underligt under opløsning af »%s:%s« (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Kunne ikke forbinde til %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Kunne ikke finde"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Ugyldig URI, lokale URI'er må ikke starte med //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Logget på"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Kunne ikke bestemme serverens navn"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Kunne ikke bestemme det lokale navn"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Serveren nægtede os forbindelse og sagde: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "angivelse af brugernavn mislykkedes, serveren sagde: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "angivelse af adgangskode mislykkedes, serveren sagde: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Der blev angivet en proxyserver men intet logpå-skript; Acquire::ftp::"
+"ProxyLogin er tom."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Logpå-skriptets kommando »%s« mislykkedes. Serveren sagde: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE mislykkedes. Serveren sagde: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Tidsudløb på forbindelsen"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Serveren lukkede forbindelsen"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Mellemlageret blev overfyldt af et svar."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Protokolfejl"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Kunne ikke oprette sokkel"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Kunne ikke forbinde datasokkel, tidsudløb på forbindelsen"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Kunne ikke forbinde passiv sokkel."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo kunne ikke få en lyttesokkel"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Kunne ikke tilknytte en sokkel"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Kunne ikke lytte på soklen"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Kunne ikke finde soklens navn"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Kunne ikke sende PORT-kommando"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Ukendt adressefamilie %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT mislykkedes. Serveren sagde: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Tidsudløb på datasokkel-forbindelse"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Kunne ikke acceptere forbindelse"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Problem ved \"hashing\" af fil"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Kunne ikke hente fil. Serveren sagde »%s«"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Tidsudløb ved datasokkel"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Dataoverførsel mislykkedes, serveren sagde »%s«"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Forespørgsel"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Kunne ikke udføre "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+"Underskrevet fil er ikke gyldig, fik »%s« (kræver netværket godkendelse?)"
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Stødte på mindst én ugyldig signatur."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Intern fejl: Gyldig signatur, men kunne ikke afgøre nøgle-fingeraftryk?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Kunne ikke køre »apt-key« for at verificere signaturen (er gnupg "
+"installeret?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Ukendt fejl ved kørsel af apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr "Signaturen med nøglen %s bruger en svag sammendragsalgoritme (%s)"
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Følgende signaturer var ugyldige:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Følgende signaturer kunne ikke verificeret, da den offentlige nøgle ikke er "
+"tilgængelig:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Fejl ved skrivning til filen"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Fejl ved læsning fra serveren. Den fjerne ende lukkede forbindelsen"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Fejl ved læsning fra server"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Fejl ved skrivning til fil"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Valg mislykkedes"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Tidsudløb på forbindelsen"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Fejl ved skrivning af uddatafil"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Ingen spejlfil »%s« fundet "
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Kan ikke læse spejlfil »%s«"
+
+#: methods/mirror.cc
+#, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Ingen post fundet i spejlfil »%s«"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Spejl: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Kunne ikke angive ændringstidspunkt"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Forbindelsen lukkedes for hurtigt"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "Tomme filer kan ikke være gyldige arkiver"
+
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 000000000..6586dad26
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,4415 @@
+# German messages for the apt suite.
+# Copyright (C) 1997, 1998, 1999 Jason Gunthorpe and others.
+# Holger Wansing <linux@wansing-online.de>, 2008, 2009, 2010, 2012, 2014.
+# Jens Seidel <jensseidel@users.sf.net>, 2008.
+# Michael Piefel <piefel@informatik.hu-berlin.de>, 2001, 2002, 2003, 2004, 2006.
+# Rüdiger Kuhlmann <Uebersetzung@ruediger-kuhlmann.de>, 2002.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.8\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2014-09-19 13:04+0100\n"
+"Last-Translator: Holger Wansing <linux@wansing-online.de>\n"
+"Language-Team: Debian German <debian-l10n-german@lists.debian.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;>\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Ungültige Archiv-Signatur"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Fehler beim Lesen der Archivdatei-Kopfzeilen"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Ungültige Archivbestandteil-Kopfzeile %s"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Ungültige Archivdatei-Kopfzeilen"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Archiv ist zu kurz."
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Archiv-Kopfzeilen konnten nicht gelesen werden."
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Authentifizierungs-Datensatz konnte nicht gefunden werden für: %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Beschädigtes Archiv"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Tar-Prüfsumme fehlgeschlagen, Archiv beschädigt"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Unbekannter Tar-Kopfzeilen-Typ %u, Bestandteil %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Dies ist kein gültiges DEB-Archiv, da es »%s« nicht enthält."
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Interner Fehler, Bestandteil %s konnte nicht gefunden werden"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Auswerten der »control«-Datei nicht möglich"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Datei %s konnte nicht geschrieben werden."
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Datei %s konnte nicht geschlossen werden."
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Der Pfad %s ist zu lang."
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "%s mehr als einmal entpackt"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "Das Verzeichnis %s ist umgeleitet."
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Schreibversuch vom Paket auf das Umleitungsziel %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Der Umleitungspfad ist zu lang."
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "%s mit »stat« abfragen fehlgeschlagen"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "%s konnte nicht in %s umbenannt werden."
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "Das Verzeichnis %s wird durch ein Nicht-Verzeichnis ersetzt."
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Knoten konnte nicht in seinem Hash gefunden werden."
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Der Pfad ist zu lang."
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Pakettreffer ohne Version für %s wird überschrieben."
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Durch die Datei %s/%s wird die Datei in Paket %s überschrieben."
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "%s kann nicht gelesen werden."
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "%s mit »stat« abfragen nicht möglich"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "»DropNode« auf noch verknüpften Knoten aufgerufen"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Hash-Element konnte nicht gefunden werden!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Umleitung konnte nicht reserviert werden."
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Interner Fehler in »AddDiversion«"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Es wird versucht, eine Umleitung zu überschreiben: %s -> %s und %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Doppelte Hinzufügung der Umleitung %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Doppelte Konfigurationsdatei %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Das Verzeichnis %s ist umgeleitet."
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Das Verzeichnis %s ist umgeleitet."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Das Verzeichnis %s ist umgeleitet."
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Das Verzeichnis %s ist umgeleitet."
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "Das Verzeichnis %s ist umgeleitet."
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "readlink von %s fehlgeschlagen"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Hash-Summe stimmt nicht überein"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "Umbenennen fehlgeschlagen, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Größe stimmt nicht überein"
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr "Ungültiges Dateiformat"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Schreibfehler"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+"Durch Clearsign signierte Datei ist nicht gültig, »%s« erhalten (erfordert "
+"das Netzwerk eine Authentifizierung?)"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"Während der Überprüfung der Signatur trat ein Fehler auf. Das Repository "
+"wurde nicht aktualisiert und die vorherigen Indexdateien werden verwendet. "
+"GPG-Fehler: %s: %s\n"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "GPG-Fehler: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"Erwarteter Eintrag »%s« konnte in Release-Datei nicht gefunden werden "
+"(falscher Eintrag in sources.list oder missgebildete Datei)."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"Release-Datei für %s ist abgelaufen (ungültig seit %s). Aktualisierungen für "
+"dieses Depot werden nicht angewendet."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Konflikt bei Distribution: %s (%s erwartet, aber %s bekommen)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Es konnte keine Datei für Paket %s gefunden werden. Das könnte heißen, dass "
+"Sie dieses Paket von Hand korrigieren müssen (aufgrund fehlender "
+"Architektur)."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+"Es konnte keine Quelle gefunden werden, um Version »%s« von »%s« "
+"herunterzuladen."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"Die Paketindexdateien sind beschädigt: Kein Filename:-Feld für Paket %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Änderungsprotokoll (Changelog) für %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Der Treiber für Methode %s konnte nicht gefunden werden."
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr "Ist das Paket %s installiert?"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Methode %s ist nicht korrekt gestartet."
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+"Bitte legen Sie das Medium mit dem Namen »%s« in Laufwerk »%s« ein und "
+"drücken Sie die Eingabetaste (Enter)."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Listenverzeichnis %spartial fehlt."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Archivverzeichnis %spartial fehlt."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "Das Verzeichnis %s kann nicht gesperrt werden."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr "Leeren von %s wird nicht unterstützt."
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Es konnte nicht nach %s gewechselt werden."
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Holen der Datei %li von %li (noch %s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Holen der Datei %li von %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"Das Paket %s muss neu installiert werden, es kann jedoch kein Archiv dafür "
+"gefunden werden."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Fehler: Unterbrechungen durch pkgProblemResolver::Resolve hervorgerufen; "
+"dies könnte durch zurückgehaltene Pakete verursacht worden sein."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr ""
+"Probleme können nicht korrigiert werden, Sie haben zurückgehaltene defekte "
+"Pakete."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+"Die Paketliste oder die Statusdatei konnte nicht eingelesen oder geöffnet "
+"werden."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Probieren Sie »apt-get update«, um diese Probleme zu korrigieren."
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Die Liste der Quellen konnte nicht gelesen werden."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Fehler beim Kompilieren eines regulären Ausdrucks - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Veröffentlichung »%s« für »%s« konnte nicht gefunden werden."
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Version »%s« für »%s« konnte nicht gefunden werden."
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Task »%s« konnte nicht gefunden werden."
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Mittels regulärem Ausdruck »%s« konnte kein Paket gefunden werden."
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Mittels des Musters »%s« konnte kein Paket gefunden werden."
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Paket %s kann nicht gefunden werden."
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+"Es können keine Versionen von Paket »%s« ausgewählt werden, da es rein "
+"virtuell ist."
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"Die neueste Version von Paket »%s« kann nicht ausgewählt werden, da es rein "
+"virtuell ist."
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+"Es kann kein Installationskandidat von Paket »%s« ausgewählt werden, da kein "
+"solcher existiert."
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"Die installierte Version von Paket »%s« kann nicht ausgewählt werden, da es "
+"nicht installiert ist."
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"Es kann weder eine installierte Version noch ein Installationskandidat von "
+"Paket »%s« ausgewählt werden, da beide nicht existieren."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Zeile %u in Quellliste %s zu lang."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Einbindung der CD-ROM wird gelöst ...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Verwendeter CD-ROM-Einbindungspunkt: %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Warten auf Medium ...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "CD-ROM wird eingebunden ...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Identifizieren ... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Gespeicherte Kennzeichnung: %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Durchsuchen des Mediums nach Index-Dateien ...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"%zu Paketindizes, %zu Quellindizes, %zu Ãœbersetzungsindizes und %zu "
+"Signaturen gefunden\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Es konnten keine Paketdateien gefunden werden; möglicherweise ist dies keine "
+"Debian-Disk oder eine für die falsche Architektur?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Kennzeichnung »%s« gefunden\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Dies ist kein gültiger Name, versuchen Sie es erneut.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Dieses Medium heißt: \n"
+"»%s«\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Kopieren der Paketlisten ..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Schreiben der neuen Quellliste\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Quelllisteneinträge für dieses Medium sind:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "%s mit stat abfragen nicht möglich"
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Einbindungspunkt %s mit »stat« abfragen nicht möglich."
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "CD-ROM mit »stat« abfragen fehlgeschlagen"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Befehlszeilenoption »%c« [aus %s] ist nicht bekannt."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Befehlszeilenoption %s konnte nicht ausgewertet werden."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Befehlszeilenoption %s ist nicht Bool'sch."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Option %s erfordert ein Argument."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "Option %s: Konfigurationswertspezifikation benötigt ein »=<Wert>«."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Option %s erfordert ein Ganzzahl-Argument, nicht »%s«."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Option »%s« ist zu lang."
+
+# Check for boolean; -1 is unspecified, 0 is yes 1 is no
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "Der Sinn von »%s« ist nicht klar, versuchen Sie »true« oder »false«."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Ungültige Operation %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Nicht erkannte Typabkürzung: »%c«"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Konfigurationsdatei %s wird geöffnet"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Syntaxfehler %s:%u: Block beginnt ohne Namen."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Syntaxfehler %s:%u: Missgestaltete Markierung"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Syntaxfehler %s:%u: Zusätzlicher Unsinn nach Wert"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"Syntaxfehler %s:%u: Direktiven können nur auf oberster Ebene benutzt werden"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Syntaxfehler %s:%u: Zu viele verschachtelte Einbindungen (includes)"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Syntaxfehler %s:%u: Eingefügt von hier"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Syntaxfehler %s:%u: Nicht unterstützte Direktive »%s«"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Syntaxfehler %s:%u: Löschdirektiven benötigen einen Optionsbaum als Argument"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Syntaxfehler %s:%u: Zusätzlicher Unsinn am Dateiende"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Problem beim Entfernen (unlink) der Datei %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Es wird keine Sperre für schreibgeschützte Sperrdatei %s verwendet."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Sperrdatei %s konnte nicht geöffnet werden."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Es wird keine Sperre für per NFS eingebundene Sperrdatei %s verwendet."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Konnte Sperre %s nicht bekommen"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr "Dateiliste kann nicht erstellt werden, da »%s« kein Verzeichnis ist."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+"»%s« in Verzeichnis »%s« wird ignoriert, da es keine reguläre Datei ist."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+"Datei »%s« in Verzeichnis »%s« wird ignoriert, da sie keine Dateinamen-"
+"Erweiterung hat."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"Datei »%s« in Verzeichnis »%s« wird ignoriert, da sie eine ungültige "
+"Dateinamen-Erweiterung hat."
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Es wurde auf %s gewartet, war jedoch nicht vorhanden"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Unterprozess %s hat einen Speicherzugriffsfehler empfangen."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Unterprozess %s hat das Signal %u empfangen."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Unterprozess %s hat Fehlercode zurückgegeben (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Unterprozess %s unerwartet beendet"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Lesefehler"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Schreibfehler"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Problem beim Schließen der gzip-Datei %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr ""
+"Interprozesskommunikation mit Unterprozess konnte nicht aufgebaut werden."
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Fehler beim Ausführen von Komprimierer "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Datei %s konnte nicht geöffnet werden."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Datei-Deskriptor %d konnte nicht geöffnet werden."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr ""
+"Lesevorgang: es verbleiben noch %llu zu lesen, jedoch ist nichts mehr übrig."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr ""
+"Schreibvorgang: es verbleiben noch %llu zu schreiben, Schreiben ist jedoch "
+"nicht möglich."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Problem beim Schließen der Datei %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Problem beim Umbenennen der Datei %s nach %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Problem beim Synchronisieren der Datei"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to mkstemp %s"
+msgstr "mkstemp %s nicht möglich"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Schreiben nach %s nicht möglich"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Eine leere Datei kann nicht mit mmap abgebildet werden."
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "mmap mit %llu Byte Größe konnte nicht erzeugt werden."
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Datei-Deskriptor %i konnte nicht dupliziert werden."
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "mmap konnte nicht geschlossen werden."
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "mmap konnte nicht synchronisiert werden."
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "mmap mit %lu Byte Größe konnte nicht erzeugt werden."
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Datei konnte nicht eingekürzt werden."
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"Nicht genügend Platz für »Dynamic MMap«. Bitte erhöhen Sie den Wert von APT::"
+"Cache-Start. Aktueller Wert: %lu. (Siehe auch man 5 apt.conf.)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"Unmöglich, die Größe der MMap zu erhöhen, da das Limit von %lu Byte bereits "
+"erreicht ist."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Unmöglich, die Größe der MMap zu erhöhen, da das automatische Anwachsen der "
+"MMap vom Benutzer deaktiviert ist."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Fehler!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Fertig"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr "..."
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... %u%%"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%li d %li h %li min %li s"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%li h %li min %li s"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%li min %li s"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%li s"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Auswahl %s nicht gefunden"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Release-Datei %s kann nicht verarbeitet werden."
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Keine Bereiche (Sections) in Release-Datei %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Kein Hash-Eintrag in Release-Datei %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Ungültiger »%s«-Eintrag in Release-Datei %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Paketdatei %s konnte nicht verarbeitet werden (%d)."
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"Sperren des Administrationsverzeichnisses (%s) nicht möglich, wird es von "
+"einem anderen Prozess verwendet?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr ""
+"Sperren des Administrationsverzeichnisses (%s) nicht möglich, sind Sie root?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"Der dpkg-Prozess wurde unterbrochen; Sie müssen manuell »%s« ausführen, um "
+"das Problem zu beheben."
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Nicht gesperrt"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "%s wird installiert."
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "%s wird konfiguriert."
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "%s wird entfernt."
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "%s wird vollständig entfernt."
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "Verschwinden von %s festgestellt"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Aufruf des Nach-Installations-Triggers %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "%s installiert"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Verzeichnis »%s« fehlt"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "Datei »%s« konnte nicht geöffnet werden."
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "%s wird vorbereitet."
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "%s wird entpackt."
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Konfiguration von %s wird vorbereitet."
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Entfernen von %s wird vorbereitet."
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "%s entfernt"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Vollständiges Entfernen von %s wird vorbereitet."
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "%s vollständig entfernt"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Can not write log (%s)"
+msgstr "Schreiben des Protokolls nicht möglich (%s)"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr "Ist /dev/pts eingebunden?"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "Operation wurde unterbrochen, bevor sie beendet werden konnte."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+"Es wurde kein Apport-Bericht verfasst, da das Limit MaxReports bereits "
+"erreicht ist."
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "Abhängigkeitsprobleme - verbleibt unkonfiguriert"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Es wurde kein Apport-Bericht verfasst, da die Fehlermeldung darauf "
+"hindeutet, dass dies lediglich ein Folgefehler eines vorherigen Problems ist."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Es wurde kein Apport-Bericht verfasst, da die Fehlermeldung auf einen Fehler "
+"wegen voller Festplatte hindeutet."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Es wurde kein Apport-Bericht verfasst, da die Fehlermeldung auf einen Fehler "
+"wegen erschöpftem Arbeitsspeicher hindeutet."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Es wurde kein Apport-Bericht verfasst, da die Fehlermeldung auf einen Fehler "
+"im lokalen System hindeutet."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"Es wurde kein Apport-Bericht verfasst, da die Fehlermeldung auf einen Ein-/"
+"Ausgabe-Fehler von Dpkg hindeutet."
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Abhängigkeitsbaum wird aufgebaut."
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Installationskandidat-Versionen"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Abhängigkeitsgenerierung"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Statusinformationen werden eingelesen."
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "StateFile %s konnte nicht geöffnet werden."
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Temporäres StateFile %s konnte nicht geschrieben werden."
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "Szenario an Problemlöser senden"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "Anfrage an Problemlöser senden"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "Vorbereiten, eine Lösung zu erhalten"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+"Externer Problemlöser ist ohne ordnungsgemäße Fehlermeldung fehlgeschlagen."
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "Externen Problemlöser ausführen"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Execute external planner"
+msgstr "Externen Problemlöser ausführen"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send request to planner"
+msgstr "Anfrage an Problemlöser senden"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send scenario to planner"
+msgstr "Szenario an Problemlöser senden"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "External planner failed without a proper error message"
+msgstr ""
+"Externer Problemlöser ist ohne ordnungsgemäße Fehlermeldung fehlgeschlagen."
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "Es wurden %i Datensätze geschrieben.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "Es wurden %i Datensätze mit %i fehlenden Dateien geschrieben.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "Es wurden %i Datensätze mit %i nicht passenden Dateien geschrieben.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"Es wurden %i Datensätze mit %i fehlenden und %i nicht passenden Dateien "
+"geschrieben.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "Authentifizierungs-Datensatz konnte nicht gefunden werden für: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Hash-Summe stimmt nicht überein für: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Paketierungssystem »%s« wird nicht unterstützt."
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Bestimmung eines passenden Paketierungssystemtyps nicht möglich"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr "Fortschritt: [%3i%%]"
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "Ausführen von dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"»%s« konnte nicht unmittelbar konfiguriert werden. Lesen Sie »man 5 apt."
+"conf« unter APT::Immediate-Configure bezüglich weiterer Details. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "»%s« konnte nicht konfiguriert werden. "
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Dieser Installationslauf erfordert, dass vorübergehend das essentielle Paket "
+"%s aufgrund einer Konflikt-/Vor-Abhängigkeits-Schleife entfernt wird. Das "
+"ist oft schlimm, aber wenn Sie es wirklich tun wollen, aktivieren Sie bitte "
+"die Option APT::Force-LoopBreak."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Leerer Paketzwischenspeicher"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Die Paketzwischenspeicher-Datei ist beschädigt."
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr ""
+"Die Paketzwischenspeicher-Datei liegt in einer inkompatiblen Version vor."
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Das Versionssystem »%s« wird durch dieses APT nicht unterstützt."
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Der Paketzwischenspeicher wurde für eine andere Architektur aufgebaut."
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Die Paketzwischenspeicher-Datei ist beschädigt, sie ist zu klein."
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Hängt ab von"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Hängt ab von (vorher)"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Schlägt vor"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Kollidiert mit"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Empfiehlt"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Ersetzt"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Beschädigt"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Wertet auf"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Löst ab"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "wichtig"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "erforderlich"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "standard"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "extra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "optional"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Zwischenspeicher hat ein inkompatibles Versionssystem."
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Fehler aufgetreten beim Verarbeiten von %s (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"Na so was, Sie haben die Anzahl an Paketen überschritten, mit denen diese "
+"APT-Version umgehen kann."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr ""
+"Na so was, Sie haben die Anzahl an Versionen überschritten, mit denen diese "
+"APT-Version umgehen kann."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+"Na so was, Sie haben die Anzahl an Beschreibungen überschritten, mit denen "
+"diese APT-Version umgehen kann."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+"Na so was, Sie haben die Anzahl an Abhängigkeiten überschritten, mit denen "
+"diese APT-Version umgehen kann."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Paketlisten werden gelesen"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "E/A-Fehler beim Speichern des Quell-Zwischenspeichers"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Indexdateityp »%s« wird nicht unterstützt."
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"Der Wert »%s« ist für APT::Default-Release ungültig, da solch eine "
+"Veröffentlichung in den Paketquellen nicht verfügbar ist."
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr ""
+"Ungültiger Eintrag in Einstellungsdatei %s, keine »Package«-Kopfzeile(n)"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Pinning-Typ %s kann nicht interpretiert werden."
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Keine Priorität (oder Null) für Pin angegeben"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Missgestaltetes Override %s Zeile %llu (%s)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "%s wird geöffnet."
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Missgestaltete Zeile %u in Quellliste %s (»type«)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Typ »%s« in Zeile %u der Quellliste %s ist unbekannt."
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Missgestaltete Zeile %u in Quellliste %s (»type«)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Typ »%s« ist in Absatz %u der Quellliste %s ist unbekannt."
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr ""
+"Sie müssen einige »source«-URIs für Quellpakete in die sources.list-Datei "
+"eintragen."
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Fehlschlag beim Holen von %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Einige Indexdateien konnten nicht heruntergeladen werden. Sie wurden "
+"ignoriert oder alte an ihrer Stelle benutzt."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Paketaktualisierung (Upgrade) wird berechnet"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "OK:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Holen:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Ign:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Fehl:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Es wurden %sB in %s geholt (%sB/s).\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Wird verarbeitet]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Medienwechsel: Bitte legen Sie das Medium mit dem Namen\n"
+" »%s«\n"
+"in Laufwerk »%s« ein und drücken Sie die Eingabetaste (Enter).\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Abhängigkeiten werden korrigiert ..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " fehlgeschlagen."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Abhängigkeiten konnten nicht korrigiert werden."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Menge der zu aktualisierenden Pakete konnte nicht minimiert werden."
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Fertig"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "Probieren Sie »apt --fix-broken install«, um dies zu korrigieren."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Unerfüllte Abhängigkeiten. Versuchen Sie »apt --fix-broken install« ohne "
+"Angabe eines Pakets (oder geben Sie eine Lösung an)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr "Sortierung"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Hinweis: »%s« wird für Task »%s« gewählt.\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Hinweis: »%s« wird für regulären Ausdruck »%s« gewählt.\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Hinweis: »%s« wird für regulären Ausdruck »%s« gewählt.\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Paket %s ist ein virtuelles Paket, das bereitgestellt wird von:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [installiert]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [Nicht die Installationskandidat-Version]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Sie sollten eines explizit zum Installieren auswählen."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Paket %s ist nicht verfügbar, wird aber von einem anderen Paket\n"
+"referenziert. Das kann heißen, dass das Paket fehlt, dass es abgelöst\n"
+"wurde oder nur aus einer anderen Quelle verfügbar ist.\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Doch die folgenden Pakete ersetzen es:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Für Paket »%s« existiert kein Installationskandidat."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Virtuelle Pakete wie »%s« können nicht entfernt werden.\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"Paket »%s« ist nicht installiert, wird also auch nicht entfernt. Meinten Sie "
+"»%s«?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Paket »%s« ist nicht installiert, wird also auch nicht entfernt.\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Hinweis: »%s« wird an Stelle von »%s« gewählt.\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Dieses APT hat Super-Kuh-Kräfte."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr "Dieses APT-Hilfsprogramm hat Super-Road-Runner-Kräfte."
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Keine Pakete gefunden"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "WARNUNG: Die folgenden Pakete können nicht authentifiziert werden!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Authentifizierungswarnung überstimmt.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Einige Pakete konnten nicht authentifiziert werden."
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Diese Pakete ohne Überprüfung installieren?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Es gab Probleme und -y wurde ohne --force-yes verwendet."
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Freier Platz in %s konnte nicht bestimmt werden."
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Sie haben nicht genug Platz in %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Das Downloadverzeichnis konnte nicht gesperrt werden."
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Einige Pakete konnten nicht installiert werden. Das kann bedeuten, dass\n"
+"Sie eine unmögliche Situation angefordert haben oder, wenn Sie die\n"
+"Unstable-Distribution verwenden, dass einige erforderliche Pakete noch\n"
+"nicht erstellt wurden oder Incoming noch nicht verlassen haben."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr ""
+"Die folgenden Informationen helfen Ihnen vielleicht, die Situation zu lösen:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Beschädigte Pakete"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Einige Archive konnten nicht heruntergeladen werden; vielleicht »apt-get "
+"update« ausführen oder mit »--fix-missing« probieren?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Interner Fehler, InstallPackages mit defekten Paketen aufgerufen!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Pakete müssen entfernt werden, aber Entfernen ist abgeschaltet."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Es gab Probleme und -y wurde ohne --force-yes verwendet."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Es gab Probleme und -y wurde ohne --force-yes verwendet."
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Interner Fehler, Anordnung beendete nicht"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Wie merkwürdig ... die Größen haben nicht übereingestimmt; schreiben Sie "
+"eine E-Mail an apt@packages.debian.org (auf Englisch bitte)."
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Es müssen noch %sB von %sB an Archiven heruntergeladen werden.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Es müssen %sB an Archiven heruntergeladen werden.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "Nach dieser Operation werden %sB Plattenplatz zusätzlich benutzt.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Nach dieser Operation werden %sB Plattenplatz freigegeben.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "»Nur triviale« angegeben, aber dies ist keine triviale Operation."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Ja, tue was ich sage!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Sie sind im Begriff, etwas potentiell Schädliches zu tun.\n"
+"Zum Fortfahren geben Sie bitte »%s« ein.\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Abbruch."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Möchten Sie fortfahren?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Einige Dateien konnten nicht heruntergeladen werden."
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Herunterladen abgeschlossen; Nur-Herunterladen-Modus aktiv"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing und Wechselmedien werden derzeit nicht unterstützt."
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Fehlende Pakete konnten nicht korrigiert werden."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Installation abgebrochen."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"Das folgende Paket verschwand von Ihrem System, da alle\n"
+"Dateien von anderen Paketen überschrieben wurden:"
+msgstr[1] ""
+"Die folgenden Pakete verschwanden von Ihrem System, da alle\n"
+"Dateien von anderen Paketen überschrieben wurden:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Hinweis: Dies wird automatisch und absichtlich von dpkg durchgeführt."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+"Es soll nichts gelöscht werden, AutoRemover kann nicht gestartet werden."
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Hmm, es sieht so aus, als ob der AutoRemover etwas beschädigt hat, was\n"
+"wirklich nicht geschehen sollte. Bitte erstellen Sie einen Fehlerbericht\n"
+"über apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Interner Fehler, AutoRemover hat etwas beschädigt."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"Das folgende Paket wurde automatisch installiert und wird nicht mehr "
+"benötigt:"
+msgstr[1] ""
+"Die folgenden Pakete wurden automatisch installiert und werden nicht mehr "
+"benötigt:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] ""
+"%lu Paket wurde automatisch installiert und wird nicht mehr benötigt.\n"
+msgstr[1] ""
+"%lu Pakete wurden automatisch installiert und werden nicht mehr benötigt.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Verwenden Sie »%s«, um es zu entfernen."
+msgstr[1] "Verwenden Sie »%s«, um sie zu entfernen."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Die folgenden zusätzlichen Pakete werden installiert:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Vorgeschlagene Pakete:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Empfohlene Pakete:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+"%s wird übersprungen; es ist schon installiert und ein Upgrade ist nicht "
+"angefordert.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"%s wird übersprungen; es ist nicht installiert und lediglich Upgrades sind "
+"angefordert.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr ""
+"Erneute Installation von %s ist nicht möglich,\n"
+"es kann nicht heruntergeladen werden.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s ist schon die neueste Version (%s).\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s wurde als manuell installiert festgelegt.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Version »%s« (%s) für »%s« gewählt.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Version »%s« (%s) für »%s« gewählt aufgrund von »%s«.\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr "Auflistung"
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+"Es gibt %i zusätzliche Version. Bitte verwenden Sie die Option »-a«, um sie "
+"anzuzeigen."
+msgstr[1] ""
+"Es gibt %i zusätzliche Versionen. Bitte verwenden Sie die Option »-a«, um "
+"sie anzuzeigen."
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"HINWEIS: Dies ist nur eine Simulation!\n"
+" %s benötigt root-Privilegien für die reale Ausführung.\n"
+" Behalten Sie ebenfalls in Hinterkopf, dass die Sperren deaktiviert\n"
+" sind, verlassen Sie sich also bezüglich des reellen aktuellen\n"
+" Status der Sperre nicht darauf!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr "unbekannt"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Installiert,aktualisierbar auf: %s]"
+
+#: apt-private/private-output.cc
+msgid "[installed,local]"
+msgstr " [Installiert,lokal]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr "[installiert,automatisch-entfernbar]"
+
+#: apt-private/private-output.cc
+msgid "[installed,automatic]"
+msgstr " [Installiert,automatisch]"
+
+#: apt-private/private-output.cc
+msgid "[installed]"
+msgstr " [installiert]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr "[aktualisierbar von: %s]"
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr "[Konfiguration-verbleibend]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "aber %s ist installiert"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "aber %s soll installiert werden"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "ist aber nicht installierbar"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "ist aber ein virtuelles Paket"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "soll aber nicht installiert werden"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "ist aber nicht installiert"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " oder"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Die folgenden Pakete haben unerfüllte Abhängigkeiten:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Die folgenden NEUEN Pakete werden installiert:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Die folgenden Pakete werden ENTFERNT:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Die folgenden Pakete sind zurückgehalten worden:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Die folgenden Pakete werden aktualisiert (Upgrade):"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr ""
+"Die folgenden Pakete werden durch eine ÄLTERE VERSION ERSETZT (Downgrade):"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Die folgenden zurückgehaltenen Pakete werden verändert:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (wegen %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"WARNUNG: Die folgenden essentiellen Pakete werden entfernt.\n"
+"Dies sollte NICHT geschehen, außer Sie wissen genau, was Sie tun!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu aktualisiert, %lu neu installiert, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu erneut installiert, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu durch eine ältere Version ersetzt, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu zu entfernen und %lu nicht aktualisiert.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu nicht vollständig installiert oder entfernt.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[J/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[j/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "J"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "Sie müssen mindestens ein Suchmuster angeben"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr "Volltextsuche"
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Paketdatei %s ist nicht synchronisiert."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+"Es gibt %i zusätzlichen Eintrag. Bitte verwenden Sie die Option »-a«, um ihn "
+"anzuzeigen."
+msgstr[1] ""
+"Es gibt %i zusätzliche Einträge. Bitte verwenden Sie die Option »-a«, um sie "
+"anzuzeigen."
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr "kein reales Paket (virtuell)"
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Paketdateien:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+"Zwischenspeicher ist nicht synchron, Querverweisen einer Paketdatei nicht "
+"möglich"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Mit Pinning verwaltete Pakete:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Installiert: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Installationskandidat: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(keine)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Versionstabelle:"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Es kann kein Paket für Architektur »%s« gefunden werden"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Es kann kein Paket »%s« mit Version »%s« gefunden werden"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Es kann kein Paket »%s« in der Veröffentlichung »%s« gefunden werden"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Als Quellpaket wird »%s« statt »%s« gewählt.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "Es kann keine Version »%s« des Pakets »%s« gefunden werden"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr ""
+"Es muss mindestens ein Paket angegeben werden, dessen Quellen geholt werden "
+"sollen."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Quellpaket für %s kann nicht gefunden werden."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"HINWEIS: »%s«-Paketierung wird betreut im »%s«-Versionsverwaltungssystem "
+"auf:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Bitte verwenden Sie:\n"
+"%s\n"
+"um die neuesten (möglicherweise noch unveröffentlichten) Aktualisierungen\n"
+"für das Paket abzurufen.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Bereits heruntergeladene Datei »%s« wird übersprungen.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Es müssen noch %sB von %sB an Quellarchiven heruntergeladen werden.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Es müssen %sB an Quellarchiven heruntergeladen werden.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Quelle %s wird heruntergeladen.\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Einige Archive konnten nicht heruntergeladen werden."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Das Entpacken der bereits entpackten Quelle in %s wird übersprungen.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Entpackbefehl »%s« fehlgeschlagen.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Überprüfen Sie, ob das Paket »dpkg-dev« installiert ist.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Build-Befehl »%s« fehlgeschlagen.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr ""
+"Informationen zu Bauabhängigkeiten für %s konnten nicht gefunden werden."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s hat keine Bauabhängigkeiten.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Es muss mindestens ein Paket angegeben werden, dessen Bauabhängigkeiten "
+"überprüft werden sollen."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"Keine Architekturinformation für %s verfügbar. Weiteres zur Einrichtung "
+"finden Sie unter apt.conf(5) APT::Architectures."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Verarbeitung der Bauabhängigkeiten fehlgeschlagen"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Verarbeitung der Bauabhängigkeiten fehlgeschlagen"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Verarbeitung von %s fehlgeschlagen. Erneut bearbeiten?"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+"Ihre »%s«-Datei wurde verändert, bitte führen Sie »apt-get update« aus."
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Paket %s Version %s hat eine unerfüllte Abhängigkeit:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Der Befehl »update« akzeptiert keine Argumente."
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+"Aktualisierung für %i Paket verfügbar. Führen Sie »apt list --upgradable« "
+"aus, um es anzuzeigen.\n"
+msgstr[1] ""
+"Aktualisierung für %i Pakete verfügbar. Führen Sie »apt list --upgradable« "
+"aus, um sie anzuzeigen.\n"
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr "Alle Pakete sind aktuell."
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "Der Befehl »update« akzeptiert keine Argumente."
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Gesamtzahl an Paketnamen: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Gesamtzahl an Paketstrukturen: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " davon gewöhnliche Pakete: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " davon rein virtuelle Pakete: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " davon einzelne virtuelle Pakete: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " davon gemischte virtuelle Pakete: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " davon fehlend: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Gesamtzahl an unterschiedlichen Versionen: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Gesamtzahl an unterschiedlichen Beschreibungen: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Gesamtzahl an Abhängigkeiten: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Gesamtzahl an Version/Datei-Beziehungen: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Gesamtzahl an Beschreibung/Datei-Beziehungen: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Gesamtzahl an Bereitstellungen: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Gesamtzahl an Mustern: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Gesamtmenge an Slack: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Gesamtmenge an Speicher: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+"Dieser Befehl ist überholt. Bitte verwenden Sie stattdessen »apt-mark "
+"showauto«."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Aufzeichnungen zu Quellen ausgeben"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "die Paketliste mittels regulärem Ausdruck durchsuchen"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "rohe Abhängigkeitsinformationen eines Pakets ausgeben"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "umgekehrte Abhängigkeitsinformationen eines Pakets ausgeben"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "einen lesbaren Datensatz für das Paket ausgeben"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "die Namen aller Pakete im System auflisten"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Policy-Einstellungen ausgeben"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr ""
+"Bitte geben Sie einen Namen für dieses Medium an, wie zum Beispiel »Debian "
+"5.0.3 Disk 1«"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr ""
+"Bitte legen Sie ein Medium in das Laufwerk ein und drücken Sie die "
+"Eingabetaste (Enter)."
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "»%s« konnte nicht in »%s« eingebunden werden."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+"Ãœber den Standard-Einbindungspunkt konnte automatisch keine CD-ROM erkannt "
+"werden.\n"
+"Sie könnten die Option --cdrom ausprobieren, um den Einbindungspunkt der CD-"
+"ROM festzulegen.\n"
+"Weitere Informationen über automatische Erkennung von CD-ROMs und "
+"Einbindungspunkte\n"
+"bekommen Sie mit »man apt-cdrom«."
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr ""
+"Wiederholen Sie dieses Prozedere für die restlichen Disks Ihres Satzes."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Argumente nicht paarweise"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Aufruf: apt-config [optionen] befehl\n"
+"\n"
+"apt-config ist ein einfaches Werkzeug, um die APT-Konfigurationsdatei zu "
+"lesen.\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Aufruf: apt-extracttemplates datei1 [datei2 ...]\n"
+"\n"
+"apt-extracttemplates ist ein Werkzeug, um Informationen zu Konfiguration\n"
+"und Vorlagen (Templates) aus Debian-Paketen zu extrahieren.\n"
+"\n"
+"Optionen:\n"
+" -h Dieser Hilfetext\n"
+" -t Das temporäre Verzeichnis setzen\n"
+" -c=? Diese Konfigurationsdatei lesen\n"
+" -o=? Eine beliebige Konfigurationsoption setzen, z.B. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr ""
+"Debconf-Version konnte nicht ermittelt werden. Ist debconf installiert?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Paket %s konnte nicht gefunden werden"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s wurde als automatisch installiert festgelegt.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Dieser Befehl ist überholt. Bitte verwenden Sie stattdessen »apt-mark auto« "
+"und »apt-mark manual«."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Interner Fehler, der Problemlöser hat etwas beschädigt."
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Unterstützte Module:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Aufruf: apt-get [Optionen] befehl\n"
+" apt-get [Optionen] install|remove paket1 [paket2 ...]\n"
+" apt-get [Optionen] source paket1 [paket2 ...]\n"
+"\n"
+"apt-get ist ein einfaches Befehlszeilenwerkzeug zum Herunterladen\n"
+"und Installieren von Paketen. Die am häufigsten benutzten Befehle\n"
+"sind update und install.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "neue Paketinformationen holen"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Upgrade (Paketaktualisierung) durchführen"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "neue Pakete installieren (paket ist libc6, nicht libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Pakete entfernen"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Pakete vollständig entfernen (inkl. Konfigurationsdateien)"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "alle nicht mehr verwendeten Pakete automatisch entfernen"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr ""
+"Upgrade (Paketaktualisierung) für die komplette Distribution durchführen, "
+"siehe apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "der Auswahl von »dselect« folgen"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Bauabhängigkeiten für Quellpakete konfigurieren"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "heruntergeladene Archive löschen"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "veraltete heruntergeladene Archive löschen"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "überprüfen, ob es unerfüllte Abhängigkeiten gibt"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Quellarchive herunterladen"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "das Binärpaket in das aktuelle Verzeichnis herunterladen"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "Änderungsprotokoll für das angegebene Paket herunterladen und anzeigen"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr "Eine URL als Argument wird benötigt"
+
+#: cmdline/apt-helper.cc
+msgid "Must specify at least one pair url/filename"
+msgstr "Es muss mindestens ein URL/Dateinamen-Paar angegeben werden"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr "Herunterladen fehlgeschlagen"
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+"Aufruf: apt-helper [Optionen] Befehl\n"
+" apt-helper [Optionen] download-file URI Zielpfad\n"
+"\n"
+"apt-helper ist ein internes Hilfsprogramm für apt.\n"
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr "den angegebenen URI in den Zielpfad herunterladen"
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr "erkennen eines Proxy-Servers mittels apt.conf"
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Aufruf: apt-internal-solver\n"
+"\n"
+"apt-internal-solver ist eine Schnittstelle, um den derzeitigen internen\n"
+"Problemlöser für die APT-Familie wie einen externen zu verwenden, zwecks\n"
+"Fehlersuche oder ähnlichem.\n"
+"\n"
+"Optionen:\n"
+" -h dieser Hilfetext\n"
+" -q protokollierbare Ausgabe – keine Fortschrittsanzeige\n"
+" -c=? Diese Konfigurationsdatei benutzen\n"
+" -o=? Beliebige Konfigurationsoption setzen, z.B. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Aufruf: apt-internal-solver\n"
+"\n"
+"apt-internal-solver ist eine Schnittstelle, um den derzeitigen internen\n"
+"Problemlöser für die APT-Familie wie einen externen zu verwenden, zwecks\n"
+"Fehlersuche oder ähnlichem.\n"
+"\n"
+"Optionen:\n"
+" -h dieser Hilfetext\n"
+" -q protokollierbare Ausgabe – keine Fortschrittsanzeige\n"
+" -c=? Diese Konfigurationsdatei benutzen\n"
+" -o=? Beliebige Konfigurationsoption setzen, z.B. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr ""
+"Markierung für %s kann nicht gesetzt werden, da es nicht installiert ist.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s wurde bereits auf manuell installiert gesetzt.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s wurde bereits auf automatisch installiert gesetzt.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s wurde bereits auf Halten gesetzt.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "Die Halten-Markierung für %s wurde bereits entfernt.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "Ausführen von dpkg fehlgeschlagen. Sind Sie root?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "%s auf Halten gesetzt.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Halten-Markierung für %s entfernt.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"Aufruf: apt-mark [Optionen] {auto|manual} paket1 [paket2 ...]\n"
+"\n"
+"apt-mark ist ein einfaches Befehlszeilenprogramm, um Pakete als manuell\n"
+"oder automatisch installiert zu markieren. Diese Markierungen können auch\n"
+"aufgelistet werden.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "das angegebene Paket als »Automatisch installiert« markieren"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "das angegebene Paket als »Manuell installiert« markieren"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr "ein Paket als zurückgehalten markieren"
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr "ein Paket als nicht mehr zurückgehalten markieren"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr "eine Liste aller automatisch installierten Pakete anzeigen"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr "eine Liste aller manuell installierten Pakete anzeigen"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr "eine Liste aller zurückgehaltenen Pakete anzeigen"
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Unbekannter Paketeintrag!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr "Pakete basierend auf dem Paketnamen auflisten"
+
+#: cmdline/apt.cc
+msgid "search in package descriptions"
+msgstr "Paketbeschreibungen durchsuchen"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr "Paketdetails anzeigen"
+
+#. package stuff
+#: cmdline/apt.cc
+msgid "install packages"
+msgstr "Pakete installieren"
+
+#: cmdline/apt.cc
+msgid "remove packages"
+msgstr "Pakete entfernen"
+
+#. system wide stuff
+#: cmdline/apt.cc
+msgid "update list of available packages"
+msgstr "Liste verfügbarer Pakete aktualisieren"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr "das System durch Installation/Aktualisierung der Pakete hochrüsten"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+"das System durch Entfernung/Installation/Aktualisierung der Pakete "
+"vollständig hochrüsten"
+
+#. misc
+#: cmdline/apt.cc
+msgid "edit the source information file"
+msgstr "die Datei für die Paketquellen bearbeiten"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Fehlerhafte Voreinstellung!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Zum Fortfahren die Eingabetaste (Enter) drücken."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Möchten Sie alle bisher heruntergeladenen .deb-Dateien löschen?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "Einige Fehler traten während des Entpackens auf. Installierte Pakete"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr ""
+"werden konfiguriert. Dies kann zu doppelten Fehlermeldungen oder Fehlern "
+"durch"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "fehlende Abhängigkeiten führen. Das ist in Ordnung, nur die Fehler"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"oberhalb dieser Meldung sind wichtig. Bitte beseitigen Sie sie und "
+"[I]nstallieren Sie erneut."
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Verfügbare Informationen werden zusammengeführt."
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Paketerweiterungsliste ist zu lang."
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Fehler beim Verarbeiten von Verzeichnis %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Quellerweiterungsliste ist zu lang."
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Fehler beim Schreiben der Kopfzeilen in die Inhaltsdatei"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Fehler beim Verarbeiten der Inhalte %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Aufruf: apt-ftparchive [optionen] befehl\n"
+"Befehle: packages Binärpfad [Override-Datei [Pfadpräfix]]\n"
+" sources Quellpfad [Override-Datei [Pfadpräfix]]\n"
+" contents Pfad\n"
+" release Pfad\n"
+" generate Konfigurationsdatei [Gruppen]\n"
+" clean Konfigurationsdatei\n"
+"\n"
+"apt-ftparchive erstellt Indexdateien für Debian-Archive. Es unterstützt "
+"viele\n"
+"verschiedene Arten der Erstellung, von vollautomatisch bis hin zu den\n"
+"funktionalen Äquivalenten von dpkg-scanpackages und dpkg-scansources.\n"
+"\n"
+"apt-ftparchive erstellt Package-Dateien aus einem Baum von .debs. Die "
+"Package-\n"
+"Datei enthält den Inhalt aller Steuerfelder aus jedem Paket sowie einen "
+"MD5-\n"
+"Hashwert und die Dateigröße. Eine Override-Datei wird unterstützt, um Werte "
+"für\n"
+"Priorität und Bereich (Section) zu erzwingen.\n"
+"\n"
+"Auf ganz ähnliche Weise erstellt apt-ftparchive Sources-Dateien aus einem "
+"Baum\n"
+"von .dscs. Die Option --source-override kann benutzt werden, um eine "
+"Override-\n"
+"Datei für Quellen anzugeben.\n"
+"\n"
+"Die Befehle »packages« und »source« sollten von der Wurzel des Baums aus\n"
+"aufgerufen werden. Binärpfad sollte auf die Basis der rekursiven Suche "
+"zeigen\n"
+"und Override-Datei sollte die Override-Flags enthalten. Pfadpräfix wird, so\n"
+"vorhanden, jedem Dateinamen vorangestellt. Beispielaufruf im Debian-Archiv:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Optionen:\n"
+" -h dieser Hilfe-Text\n"
+" --md5 MD5-Hashes erzeugen\n"
+" -s=? Override-Datei für Quellen\n"
+" -q ruhig\n"
+" -d=? optionale Zwischenspeicher-Datenbank auswählen\n"
+" --no-delink Debug-Modus für Delinking aktivieren\n"
+" --contents Inhaltsdatei erzeugen\n"
+" -c=? diese Konfigurationsdatei lesen\n"
+" -o=? eine beliebige Konfigurationsoption setzen"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Keine Auswahl traf zu"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Einige Dateien fehlen in der Paketdateigruppe »%s«."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "Datenbank wurde beschädigt, Datei umbenannt in %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "Datenbank ist veraltet; es wird versucht, %s zu erneuern."
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Datenbankformat ist ungültig. Wenn Sie ein Upgrade (Paketaktualisierung) von "
+"einer älteren apt-Version gemacht haben, entfernen Sie bitte die Datenbank "
+"und erstellen Sie sie neu."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Datenbankdatei %s kann nicht geöffnet werden: %s"
+
+#: ftparchive/cachedb.cc
+msgid "Failed to read .dsc"
+msgstr "Lesen von .dsc fehlgeschlagen"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Archiv hat keinen Steuerungsdatensatz."
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Unmöglich, einen Cursor zu bekommen"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Speicheranforderung fehlgeschlagen"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Unbekannter Komprimierungsalgorithmus »%s«"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Komprimierte Ausgabe %s benötigt einen Komprimierungssatz."
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr ""
+"Interprozesskommunikation mit Unterprozess konnte nicht aufgebaut werden."
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Fork fehlgeschlagen"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Komprimierungs-Kindprozess"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Interner Fehler, %s konnte nicht erzeugt werden."
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "E/A zu Kindprozess/Datei fehlgeschlagen"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Lesevorgang während der MD5-Berechnung fehlgeschlagen"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "%s konnte nicht geöffnet werden."
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Missgestaltetes Override %s Zeile %llu (%s)"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Override-Datei %s konnte nicht gelesen werden."
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Missgestaltetes Override %s Zeile %llu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Missgestaltetes Override %s Zeile %llu #2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Missgestaltetes Override %s Zeile %llu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "W: Verzeichnis %s kann nicht gelesen werden.\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "W: %s mit »stat« abfragen nicht möglich.\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "F: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "W: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "F: Fehler gehören zu Datei "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "%s konnte nicht aufgelöst werden."
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Durchlaufen des Verzeichnisbaums fehlgeschlagen"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Öffnen von %s fehlgeschlagen"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Erzeugen einer Verknüpfung von %s zu %s fehlgeschlagen"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " DeLink-Limit von %sB erreicht\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Archiv hatte kein Feld »package«"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s hat keinen Eintrag in der Override-Liste.\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " %s-Betreuer ist %s und nicht %s.\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s hat keinen Eintrag in der Source-Override-Liste.\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s hat keinen Eintrag in der Binary-Override-Liste.\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Warten auf Kopfzeilen"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "Vom HTTP-Server wurde eine ungültige Antwort-Kopfzeile gesandt."
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Ungültige Kopfzeile"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr ""
+"Vom HTTP-Server wurde eine ungültige »Content-Length«-Kopfzeile gesandt."
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr ""
+"Vom HTTP-Server wurde eine ungültige »Content-Range«-Kopfzeile gesandt."
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr ""
+"Teilweise Dateiübertragung wird vom HTTP-Server nur fehlerhaft unterstützt."
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Unbekanntes Datumsformat"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Fehlerhafte Kopfzeilendaten"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Verbindung fehlgeschlagen"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Interner Fehler"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "CD-ROM-Datenbank %s kann nicht gelesen werden."
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Bitte verwenden Sie apt-cdrom, um APT diese CD-ROM bekannt zu machen. apt-"
+"get update kann nicht dazu verwendet werden, neue CD-ROMs hinzuzufügen."
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Falsche CD-ROM"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr ""
+"Einbindung von CD-ROM in %s kann nicht gelöst werden, möglicherweise wird "
+"sie noch verwendet."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Medium nicht gefunden"
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Datei nicht gefunden"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Verbindung mit %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Socket für %s konnte nicht erzeugt werden (f=%u t=%u p=%u)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Verbindung mit %s:%s kann nicht aufgebaut werden (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr ""
+"Verbindung mit %s:%s konnte nicht aufgebaut werden (%s), eine "
+"Zeitüberschreitung trat auf."
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Fehlgeschlagen"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Verbindung mit %s:%s nicht möglich (%s)"
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Verbindung mit %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "»%s« konnte nicht aufgelöst werden."
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Temporärer Fehlschlag beim Auflösen von »%s«"
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Systemfehler bei der Auflösung von »%s:%s«"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Beim Auflösen von »%s:%s« ist etwas Schlimmes passiert (%i - %s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Verbindung mit %s:%s nicht möglich:"
+
+# looks like someone hardcoded English grammar
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Abfrage mit »stat« fehlgeschlagen"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Ungültige URI, lokale URIs dürfen nicht mit // beginnen."
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Anmeldung läuft"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Name des Kommunikationspartners kann nicht bestimmt werden."
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Lokaler Name kann nicht bestimmt werden."
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Verbindung durch Server abgelehnt; Server meldet: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "Befehl USER fehlgeschlagen, Server meldet: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "Befehl PASS fehlgeschlagen, Server meldet: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Es war ein Proxy-Server angegeben, aber kein Login-Skript, Acquire::ftp::"
+"ProxyLogin ist leer."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Befehl »%s« des Login-Skriptes fehlgeschlagen, Server meldet: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "Befehl TYPE fehlgeschlagen: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Zeitüberschreitung der Verbindung"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Verbindung durch Server geschlossen"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Durch eine Antwort wurde der Puffer zum Ãœberlaufen gebracht."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Protokoll beschädigt"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Socket konnte nicht erzeugt werden."
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Daten-Socket konnte wegen Zeitüberschreitung nicht verbunden werden."
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Passiver Socket konnte nicht verbunden werden."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr ""
+"Von der Funktion getaddrinfo wurde kein auf Verbindungen wartender Socket "
+"gefunden."
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Verbindung des Sockets nicht möglich"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Warten auf Verbindungen auf dem Socket nicht möglich"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Name des Sockets konnte nicht bestimmt werden."
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "PORT-Befehl konnte nicht gesendet werden."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Unbekannte Adressfamilie %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "Befehl EPRT fehlgeschlagen: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Zeitüberschreitung bei Datenverbindungsaufbau"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Verbindung konnte nicht angenommen werden."
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Problem bei Bestimmung des Hashwertes einer Datei"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Datei konnte nicht heruntergeladen werden; Server meldet: »%s«"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Zeitüberschreitung bei Datenverbindung"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Datenübertragung fehlgeschlagen; Server meldet: »%s«"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Abfrage"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Aufruf nicht möglich: "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, fuzzy, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+"Durch Clearsign signierte Datei ist nicht gültig, »%s« erhalten (erfordert "
+"das Netzwerk eine Authentifizierung?)"
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Mindestens eine ungültige Signatur wurde entdeckt."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Interner Fehler: Gültige Signatur, Fingerabdruck des Schlüssels konnte "
+"jedoch nicht ermittelt werden?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"»apt-key« konnte zur Überprüfung der Signatur nicht ausgeführt werden (ist "
+"gnupg installiert?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Unbekannter Fehler beim Ausführen von apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Die folgenden Signaturen waren ungültig:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Die folgenden Signaturen konnten nicht überprüft werden, weil ihr "
+"öffentlicher\n"
+"Schlüssel nicht verfügbar ist:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Fehler beim Schreiben der Datei"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr ""
+"Fehler beim Lesen vom Server: Verbindung wurde durch den Server auf der "
+"anderen Seite geschlossen."
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Fehler beim Lesen vom Server"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Fehler beim Schreiben in Datei"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Auswahl fehlgeschlagen"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Zeitüberschreitung bei Verbindung"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Fehler beim Schreiben der Ausgabedatei"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Keine Datei von Spiegelserver »%s« gefunden"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Datei »%s« von Spiegelserver kann nicht gelesen werden."
+
+#: methods/mirror.cc
+#, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Kein Eintrag in Spiegeldatei »%s« gefunden"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Spiegelserver: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Änderungszeitpunkt kann nicht gesetzt werden."
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Verbindung vorzeitig beendet"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "Leere Dateien können kein gültiges Archiv sein."
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Unerfüllte Abhängigkeiten. Versuchen Sie, --fix-broken zu benutzen."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr "Probieren Sie »apt --fix-broken install«, um dies zu korrigieren:"
+
+#~ msgid "(not found)"
+#~ msgstr "(nicht gefunden)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Paket-Pinning: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr ""
+#~ "Es gibt keine öffentlichen Schlüssel für die folgenden Schlüssel-IDs:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "Das Verzeichnis %s ist umgeleitet."
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "»%s«-Abhängigkeit für %s kann nicht erfüllt werden, da %s bei »%s«-"
+#~ "Paketen nicht erlaubt ist."
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "»%s«-Abhängigkeit für %s kann nicht erfüllt werden, da Paket %s nicht "
+#~ "gefunden werden kann."
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "»%s«-Abhängigkeit für %s kann nicht erfüllt werden: Installiertes Paket "
+#~ "%s ist zu neu."
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "»%s«-Abhängigkeit für %s kann nicht erfüllt werden, da die Version des "
+#~ "Installationskandidaten für das Paket %s die Versionsanforderungen nicht "
+#~ "erfüllen kann."
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "»%s«-Abhängigkeit für %s kann nicht erfüllt werden, da für Paket %s kein "
+#~ "Installationskandidat existiert."
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "»%s«-Abhängigkeit für %s konnte nicht erfüllt werden: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Bauabhängigkeiten für %s konnten nicht erfüllt werden."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Problem beim Entfernen (unlink) von %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Entfernen (unlink) von %s fehlgeschlagen"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Aufruf: apt-cache [Optionen] befehl\n"
+#~ " apt-cache [Optionen] show paket1 [paket2 ...]\n"
+#~ "\n"
+#~ "apt-cache ist ein untergeordnetes Werkzeug, um Informationen aus den\n"
+#~ "binären Zwischenspeicher-Dateien von APT abzufragen.\n"
+
+#~ msgid "Commands:"
+#~ msgstr "Befehle:"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Optionen:\n"
+#~ " -h dieser Hilfe-Text\n"
+#~ " -p=? der Paket-Zwischenspeicher\n"
+#~ " -s=? der Quell-Zwischenspeicher\n"
+#~ " -q Fortschrittsanzeige abschalten\n"
+#~ " -i nur wichtige Abhängigkeiten für den »unmet«-Befehl ausgeben\n"
+#~ " -c=? diese Konfigurationsdatei lesen\n"
+#~ " -o=? eine beliebige Konfigurationsoption setzen, z.B. -o dir::cache=/"
+#~ "tmp\n"
+#~ "Weitere Informationen finden Sie in den Handbuchseiten von apt-cache(8)\n"
+#~ "und apt.conf(5).\n"
+
+#~ msgid ""
+#~ "Usage: apt [options] command\n"
+#~ "\n"
+#~ "CLI for apt.\n"
+#~ msgstr ""
+#~ "Aufruf: apt [Optionen] Befehl\n"
+#~ "\n"
+#~ "Befehlszeilen-Schnittstelle (CLI) für apt.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "Optionen:\n"
+#~ " -h dieser Hilfetext\n"
+#~ " -q protokollierbare Ausgabe – keine Fortschrittsanzeige\n"
+#~ " -qq keine Ausgabe, außer bei Fehlern\n"
+#~ " -s nichts tun, nur eine Simulation der Aktionen durchführen\n"
+#~ " -f Autom./Manuell-Markierung in der angegebenen Datei lesen/"
+#~ "schreiben\n"
+#~ " -c=? Diese Konfigurationsdatei benutzen\n"
+#~ " -o=? Beliebige Konfigurationsoption setzen, z.B. -o dir::cache=/tmp\n"
+#~ "Siehe auch die Handbuchseiten apt-mark(8) und apt.conf(5) bezüglich\n"
+#~ "weitergehender Informationen."
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Optionen:\n"
+#~ " -h Dieser Hilfetext\n"
+#~ " -c=? Diese Konfigurationsdatei lesen\n"
+#~ " -o=? Eine beliebige Konfigurationsoption setzen, z.B. -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "Optionen:\n"
+#~ " -h dieser Hilfetext\n"
+#~ " -q protokollierbare Ausgabe – keine Fortschrittsanzeige\n"
+#~ " -qq keine Ausgabe, außer bei Fehlern\n"
+#~ " -s nichts tun, nur eine Simulation der Aktionen durchführen\n"
+#~ " -f Autom./Manuell-Markierung in der angegebenen Datei lesen/"
+#~ "schreiben\n"
+#~ " -c=? Diese Konfigurationsdatei benutzen\n"
+#~ " -o=? Beliebige Konfigurationsoption setzen, z.B. -o dir::cache=/tmp\n"
+#~ "Siehe auch die Handbuchseiten apt-mark(8) und apt.conf(5) bezüglich\n"
+#~ "weitergehender Informationen."
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Aufruf: apt-sortpkgs [optionen] datei1 [datei2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs ist ein einfaches Werkzeug, um Paketdateien zu sortieren. "
+#~ "Die\n"
+#~ "Option -s wird benutzt, um anzuzeigen, um was für eine Datei es sich "
+#~ "handelt.\n"
+#~ "\n"
+#~ "Optionen:\n"
+#~ " -h Dieser Hilfetext\n"
+#~ " -s Quelldateisortierung benutzen\n"
+#~ " -c=? Diese Konfigurationsdatei lesen\n"
+#~ " -o=? Eine beliebige Konfigurationsoption setzen, z.B. -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Kindprozess fehlgeschlagen"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Es muss mindestens ein URL/Dateinamen-Paar angegeben werden"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Pipes (Weiterleitungen) konnten nicht erzeugt werden."
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "gzip konnte nicht ausgeführt werden."
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s für %s, kompiliert am %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "FILE* konnte nicht erzeugt werden."
+
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Missgestalteter Absatz %u in Quellliste %s (»URI parse«)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "Missgestaltete Zeile %lu in Quellliste %s ([Option] nicht auswertbar)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "Missgestaltete Zeile %lu in Quellliste %s ([Option] zu kurz)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr ""
+#~ "Missgestaltete Zeile %lu in Quellliste %s ([%s] ist keine Zuweisung)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr ""
+#~ "Missgestaltete Zeile %lu in Quellliste %s ([%s] hat keinen Schlüssel)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "Missgestaltete Zeile %lu in Quellliste %s ([%s] Schlüssel %s hat keinen "
+#~ "Wert)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Missgestaltete Zeile %lu in Quellliste %s (»URI«)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Missgestaltete Zeile %lu in Quellliste %s (»dist«)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Missgestaltete Zeile %lu in Quellliste %s (»URI parse«)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "Missgestaltete Zeile %lu in Quellliste %s (»absolute dist«)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "Missgestaltete Zeile %lu in Quellliste %s (»dist parse«)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr ""
+#~ "Paket %s %s wurde beim Verarbeiten der Dateiabhängigkeiten nicht gefunden."
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Die Quellpaket-Liste %s konnte nicht mit »stat« abgefragt werden"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Sammeln der angebotenen Funktionalitäten (Provides) aus den Dateien"
+
+#, fuzzy
+#~ msgid "Does not start with a cleartext signature"
+#~ msgstr "Datei %s beginnt nicht mit einer Klartext-signierten Nachricht."
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Hash-Summe für »%s« kann in Release-Datei nicht gefunden werden."
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Herstellerblock %s enthält keinen Fingerabdruck."
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Gesamtmenge des Abhängigkeits-/Versionsspeichers: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Sie haben nicht genügend freien Speicherplatz in %s."
+
+#~ msgid "Done"
+#~ msgstr "Fertig"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Kein Schlüsselring in %s installiert"
+
+#~ msgid "Is stdout a terminal?"
+#~ msgstr "Ist stdout ein Terminal?"
+
+#~ msgid "ioctl(TIOCGWINSZ) failed"
+#~ msgstr "ioctl(TIOCGWINSZ) fehlgeschlagen"
+
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Interner Fehler, Upgrade hat etwas beschädigt."
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s ist kein gültiges DEB-Paket."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Verwendeter CD-ROM-Einbindungspunkt: %s\n"
+#~ "CD-ROM wird eingebunden.\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Patch konnte nicht mit mmap und unter Verwendung von Dateioperationen auf "
+#~ "%s angewendet werden - der Patch scheint beschädigt zu sein."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Patch konnte nicht mit mmap auf %s angewendet werden (es ist jedoch "
+#~ "nichts mmap-spezifisches fehlgeschlagen) - der Patch scheint beschädigt "
+#~ "zu sein."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr ""
+#~ "Nicht verfügbare Veröffentlichung »%s« von Paket »%s« wird ignoriert."
+
+#~ msgid "Downloading %s %s"
+#~ msgstr "Herunterladen von %s %s"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Dies ist kein gültiges DEB-Archiv, da es weder »%s«, »%s« noch »%s« "
+#~ "enthält."
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5-Summe stimmt nicht überein"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Es konnte keine Datei für Paket %s gefunden werden. Das könnte heißen, "
+#~ "dass Sie dieses Paket von Hand korrigieren müssen."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Schreiben des Protokolls nicht möglich, openpty() fehlgeschlagen (/dev/"
+#~ "pts nicht eingebunden?)\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Nicht vorhandene Datei %s wird übersprungen."
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "%s konnte nicht entfernt werden."
+
+#~ msgid "Unable to create %s"
+#~ msgstr "%s konnte nicht erzeugt werden."
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "%sinfo mit »stat« abfragen fehlgeschlagen"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr ""
+#~ "Die »info«- und »temp«-Verzeichnisse müssen in demselben Dateisystem "
+#~ "liegen."
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Wechsel in das Administrationsverzeichnis %sinfo fehlgeschlagen"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Interner Fehler beim Holen eines Paketnamens"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Paketauflistung wird gelesen"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Öffnen der Listendatei »%sinfo/%s« fehlgeschlagen. Wenn Sie diese Datei "
+#~ "nicht wiederherstellen können, dann leeren Sie sie und installieren Sie "
+#~ "sofort dieselbe Version des Paketes erneut!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Fehler beim Lesen der Listendatei %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Interner Fehler beim Holen eines Knotens"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Fehler beim Öffnen der Umleitungsdatei %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Die Umleitungsdatei ist beschädigt."
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Ungültige Zeile in der Umleitungsdatei: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Interner Fehler beim Hinzufügen einer Umleitung"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Der Paketzwischenspeicher muss zuerst initialisiert werden."
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Es konnte keine »Package:«-Kopfzeile gefunden werden, Offset %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Fehlerhafter »ConfFile«-Abschnitt in der Statusdatei, Offset %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Fehler beim Verarbeiten der MD5-Summe. Offset %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Wechsel nach %s nicht möglich"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Es konnte keine gültige »control«-Datei gefunden werden."
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Pipe (Weiterleitung) für %s konnte nicht geöffnet werden."
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Lesefehler von Prozess %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Einzelne Kopfzeile aus %u Zeichen erhalten"
+
+#~ msgid "Note: This is done automatic and on purpose by dpkg."
+#~ msgstr ""
+#~ "Hinweis: Dies wird automatisch und absichtlich von dpkg durchgeführt."
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Missgestaltetes Override %s Zeile %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Missgestaltetes Override %s Zeile %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Missgestaltetes Override %s Zeile %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "Dekomprimierer"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr ""
+#~ "Lesevorgang: es verbleiben noch %lu zu lesen, jedoch nichts mehr übrig"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr ""
+#~ "Schreibvorgang: es verbleiben noch %lu zu schreiben, jedoch Schreiben "
+#~ "nicht möglich"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "»%s« (bereits entpackt) konnte nicht unmittelbar konfiguriert werden. "
+#~ "Lesen Sie »man 5 apt.conf« unter APT::Immediate-Configure bezüglich "
+#~ "weiterer Details."
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Fehler aufgetreten beim Verarbeiten von %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Fehler aufgetreten beim Verarbeiten von %s (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Fehler aufgetreten beim Verarbeiten von %s (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Fehler aufgetreten beim Verarbeiten von %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Fehler aufgetreten beim Verarbeiten von %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Fehler aufgetreten beim Verarbeiten von %s (NewVersion%d)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Fehler aufgetreten beim Verarbeiten von %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Fehler aufgetreten beim Verarbeiten von %s (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Fehler aufgetreten beim Verarbeiten von %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Fehler aufgetreten beim Verarbeiten von %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Interner Fehler, Bestandteil konnte nicht gefunden werden"
+
+#~ msgid "Internal error, group '%s' has no installable pseudo package"
+#~ msgstr "Interner Fehler, Gruppe »%s« hat kein installierbares Pseudo-Paket"
+
+#~ msgid "Release file expired, ignoring %s (invalid since %s)"
+#~ msgstr "Release-Datei abgelaufen, %s wird ignoriert (ungültig seit %s)"
diff --git a/po/dz.po b/po/dz.po
new file mode 100644
index 000000000..76df37950
--- /dev/null
+++ b/po/dz.po
@@ -0,0 +1,4207 @@
+# SOME DESCRIPTIVE TITLE.
+# This file is put in the public domain.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2006-09-19 09:49+0530\n"
+"Last-Translator: Kinley Tshering <gasepkuenden2k3@hotmail.com>\n"
+"Language-Team: Dzongkha <pgeyleg@dit.gov.bt>\n"
+"Language: dz\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2;plural=(n!=1)\n"
+"X-Poedit-Language: Dzongkha\n"
+"X-Poedit-Country: Bhutan\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "ནུས་མེད་ཡིག་མཛོད་ཀྱི་མིང་རྟགསà¼"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "ཡིག་མཛོད་འà½à½´à½¦à¼‹à½˜à½²à¼‹à½˜à½‚ོ་ཡིག་ལྷག་ནིའི་འཛོལ་བà¼"
+
+#: apt-inst/contrib/arfile.cc
+#, fuzzy, c-format
+msgid "Invalid archive member header %s"
+msgstr "ནུས་མེད་ཡིག་མཛོད་འà½à½´à½¦à¼‹à½˜à½²à¼‹à½‚ི་མགོ་ཡིག་"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "ནུས་མེད་ཡིག་མཛོད་འà½à½´à½¦à¼‹à½˜à½²à¼‹à½‚ི་མགོ་ཡིག་"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "ཡིག་མཛོད་འདི་གནམ་མེད་ས་མེད་à½à½´à½„་ཀུ་འདུག"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "ཡིག་མཛོད་མགོ་ཡིག་ཚུ་ལྷག་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "%s་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འཚོལ་མ་à½à½¼à½–à¼"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "ངན་ཅན་གྱི་ཡིག་མཛོདà¼"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "ཊར་ཅེག་སམ་དེ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོད་ ཡིག་མཛོད་ངན་ཅན་བྱུང་ནུག"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "མ་ཤེས་པའི་ ཊཱར་་མགོ་ཡིག་་དབྱེ་བ་ %u་ འà½à½´à½¦à¼‹à½˜à½²à¼‹ %sà¼"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "འ་ནི་འདི་ ཌི་ཨི་བི་ཡིག་མཛོད་ནུས་ཅན་ཅིག་མེན་པས་ '%s'འà½à½´à½¦à¼‹à½˜à½²à¼‹à½–རླག་སྟོར་ཞུགས་དོà¼"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "ནང་འà½à½¼à½‘་འཛོལ་བ་གིས་འà½à½´à½¦à¼‹à½˜à½²à¼‹%sའདི་ག་ཡོད་འཚོལ་མ་འà½à½¼à½–à¼"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "མིང་དཔྱད་འབད་མ་བà½à½´à½–་པའི་ཚད་འཛིན་ཡིག་སྣོདà¼"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "%s་ཡིག་སྣོད་འདི་འབྲི་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "%s་ཡིག་སྣོད་འདི་à½à¼‹à½–སྡམས་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "%s་འགྲུལ་ལམ་དེ་གནམ་མེད་ས་མེད་རིངམ་འདུག"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "སྦུང་ཚན་བཟོ་བཤོལ་%s་གཅིག་ལས་ལྷག་སྟེ་འདུག"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "སྣོད་à½à½¼à¼‹%s་འདི་à½à¼‹à½•à¾±à½¼à½‚ས་སྒྱུར་དེ་ཡོདà¼"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འདི་གིས་ག་སྒྱུར་དམིགས་གà½à½‘་%s/%s་ལུ་འབྲི་ནིའི་འབད་རྩོལ་བསà¾à¾±à½ºà½‘པ་དེ་ཡོདà¼"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "à½à¼‹à½¦à¾’ྱུར་འགྲུལ་ལམ་འདི་གནམ་མེད་ས་མེད་རིངམ་ཨིན་པསà¼"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "%s་སིཊེཊི་འབད་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདཔà¼"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "%s་ལུ་%s་བསà¾à¾±à½¢à¼‹à½˜à½²à½„་བà½à½‚ས་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "སྣོད་ཡིག་%s་འདི་སྣོད་ཡིག་མེན་མི་ཅིག་གིས་ཚབ་བཙུག་དེ་ཡོདཔ་ཨིནà¼"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "à½à½¼à½„་རའི་དྲྭ་རྟགས༠(#)རྡོབ་ནང་ལུ་མà½à½´à½‘་མཚམས་ག་ཡོད་འཚོལ་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "འགྲུལ་ལམ་དེ་གནམ་མེད་ས་མེད་རིངམ་ཅིག་ཨིན་པསà¼"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "%s་གི་དོན་ལུ་ཚབ་སྲུང་འབད་བའི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་དེ་གིས་འà½à½¼à½“་རིམ་གཅིག་ད་ཡང་མà½à½´à½“་སྒྲིག་མི་འབད་བསà¼"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་%s་ནང་ལུ་་ཡིག་སྣོད་%s/%sགིས་གཅིག་ཚབ་སྲུང་འབདà½à¼‹à½¨à½²à½“à¼"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "%s་འདི་ལུ་ལྷག་མ་ཚུགསà¼"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "%s་འདི་ལུ་ངོ་བཤུས་འབད་མ་ཚུགསà¼"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "ད་ལྟོ་ཡང་འབྲེལ་ལམ་ཡོད་པའི་མà½à½´à½‘་མཚམས་གུར་བཀོག་བཞག་མà½à½´à½‘་མཚམས་དེ་བོད་བརྡ་འབད་འདི་ཡོདà¼"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "དྲྭ་རྟགས་རྒྱུ་རྫས་འདི་ག་ཡོད་འཚོལ་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོད!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "à½à¼‹à½•à¾±à½¼à½‚ས་སྤྲོད་བཞག་འབད་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "à½à¼‹à½•à¾±à½¼à½‚ས་à½à¼‹à½¦à¾à½¼à½„་རà¾à¾±à½–་ནི་ནང་ ནང་འà½à½¼à½‘་ཀྱི་འཛོལ་བà¼"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "%s -> %s ་དང་ %s/%s་à½à¼‹à½•à¾±à½¼à½‚ས་ཅིག་ཚབ་སྲུང་འབད་ནི་ལུ་འབད་རྩོལ་བསà¾à¾±à½ºà½‘་དོà¼"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "%s -> %s་à½à¼‹à½•à¾±à½¼à½‚ས་ཀྱི་ལོག་བལྟབ་à½à¼‹à½¦à¾à½¼à½„་à¼"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "རིམ་སྒྲིག་ཡིག་སྣོད་%s/%s་འདི་ངོ་བཤུས་བཟོà¼"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "སྣོད་à½à½¼à¼‹%s་འདི་à½à¼‹à½•à¾±à½¼à½‚ས་སྒྱུར་དེ་ཡོདà¼"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "སྣོད་à½à½¼à¼‹%s་འདི་à½à¼‹à½•à¾±à½¼à½‚ས་སྒྱུར་དེ་ཡོདà¼"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "སྣོད་à½à½¼à¼‹%s་འདི་à½à¼‹à½•à¾±à½¼à½‚ས་སྒྱུར་དེ་ཡོདà¼"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "སྣོད་à½à½¼à¼‹%s་འདི་à½à¼‹à½•à¾±à½¼à½‚ས་སྒྱུར་དེ་ཡོདà¼"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "སྣོད་à½à½¼à¼‹%s་འདི་à½à¼‹à½•à¾±à½¼à½‚ས་སྒྱུར་དེ་ཡོདà¼"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "%s་འབྲེལ་ལམ་ལྷག་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདཔà¼"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Hash Sum mismatch"
+msgstr "ཨེམ་ཌི་༥་ à½à¾±à½¼à½“་བསྡོམས་མ་མà½à½´à½“་པà¼"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "%s (%s -> %s)བསà¾à¾±à½¢à¼‹à½˜à½²à½„་བà½à½‚ས་ནི་འདི་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདཔ་ཨིནà¼"
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "ཚད་མ་མà½à½´à½“à¼"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "ནུས་མེད་བཀོལ་སྤྱོད་%s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "འཛོལ་བ་འབྲིà¼"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+" %s་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གི་དོན་ལུ་ང་་གི་ཡིག་སྣོད་ཅིག་ག་ཡོད་འཚོལ་མི་འà½à½¼à½–་པས༠འདི་འབདà½à¼‹à½£à½¦à¼‹à½à¾±à½¼à½‘་ཀྱི་ལག་à½à½¼à½‚་ལས་ "
+"འ་ནི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འདི་གི་དཀའ་ངལ་སེལ་དགོཔ་འདུག (arch འདི་བྱིག་སོངམ་ལས་བརྟེནà¼)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ ཟུར་à½à½¼à¼‹à½¡à½²à½‚་སྣོད་ཚུ་ངན་ཅན་འགྱོ་ནུག ཡིག་སྣོད་ཀྱི་མིང་མིན་འདུག: %s་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གྱི་དོན་ལུ་ས་སྒོà¼"
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "%s (%s)་ལུ་མà½à½´à½‘་དོà¼"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "à½à½–ས་ལམ་འདྲེན་བྱེད་%s་འདི་མ་འà½à½¼à½–à¼"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "'dpkg-dev'་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་དེ་གཞི་བཙུགས་འབད་ཡོད་པ་ཅིན་ཨེབ་གà½à½„་འབདà¼\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "à½à½–ས་ལམ་ %s འདི་ངེས་བདེན་སྦེ་འགོ་མ་བཙུགས་འབདà¼"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "à½à¼‹à½¡à½²à½‚་བཀོད་ཡོད་པའི་ ཌིསི་འདི་བཙུགས་གནང་༠'%s'འདྲེན་འཕྲུལ་ནང་'%s' དང་ལོག་ལྡེ་འདི་ཨེབà¼à¼‹"
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "List directory %spartial is missing."
+msgstr "à½à½¼à¼‹à½–ཀོད་འབད་མི་སྣོད་à½à½¼à¼‹%s་ཆ་ཤས་འདི་བརླག་སྟོར་ཟུགས་à½à½ºà¼‹à½ à½‘ུག"
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "ཡིག་མཛོད་སྣོད་à½à½¼à¼‹ %s་ ཆ་ཤས་འདི་བརླག་སྟོར་ཞུགས་à½à½ºà¼‹à½ à½‘ུག"
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Unable to lock directory %s"
+msgstr "à½à½¼à¼‹à½–ཀོད་འབད་ཡོད་པའི་སྣོད་ཡིག་འདི་ལྡེ་མིག་རà¾à¾±à½–་མ་ཚུགསà¼"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "ཟུར་à½à½¼à¼‹à½¡à½²à½‚་སྣོད་ཀྱི་དབྱེ་བ་ '%s' འདི་རྒྱབ་སà¾à¾±à½¼à½¢à¼‹à½˜à¼‹à½ à½–ད་བསà¼"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "%s་ལུ་བསྒྱུར་བཅོས་འབད་མ་ཚུགསà¼"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "%li་ གི་བརླག་སྟོར་ཞུགས་པའི་ཡིག་སྣོད་%li (%s ལྷག་ལུས་དོà¼)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr " %li་གི་བརླག་སྟོར་ཟུགསཔའི་ཡིག་སྣོད་ %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"à½à½´à½˜à¼‹à½¦à¾’ྲིལ་%s་འདི་ལོག་འདི་རང་གཞི་བཙུགས་འབད་དགོཔ་འདུག་ འདི་འབདà½à¼‹à½‘་འདི་གི་དོན་ལུ་ཡིག་མཛོད་ཅིག་འཚོལ་"
+"མ་à½à½¼à½–à¼"
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"འཛོལ་བ་ pkgProblemResolver::གིས་བཟོ་བà½à½¼à½“་འབད་ཡོད་པའི་མཚམས་དེ་ཚུ་མོས་མà½à½´à½“་བཟོà½à¼‹à½¨à½²à½“ འ་ནི་à½à½´à½˜à¼‹"
+"སྒྲིལ་ཚུ་འཛིན་པའི་རྒྱུ་རà¾à¾±à½ºà½“་ལས་བརྟེན་ཨིན་པསà¼"
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "དཀའ་ངལ་འདི་ནོར་བཅོས་འབད་མ་ཚུགས་ à½à¾±à½¼à½‘་ཀྱི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཆད་པ་ཚུ་འཆང་འདི་འདུག"
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གྱི་à½à½¼à¼‹à½¡à½²à½‚་ཡང་ན་གནས་ཚད་ཡིག་སྣོད་ཚུ་ མིང་དཔྱད་ཡང་ན་à½à¼‹à½•à¾±à½ºà¼‹à½˜à¼‹à½šà½´à½‚སà¼"
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "འ་ནི་དཀའ་ངལ་འདི་ཚུ་སེལ་ནིའི་ལུ་ à½à¾±à½¼à½‘་ཀྱི་ apt-get update་དེ་གཡོག་བཀོལ་དགོཔ་འོང་à¼"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "འབྱུང་à½à½´à½„ས་ཚུ་ཀྱི་à½à½¼à¼‹à½¡à½²à½‚་དེ་ལྷག་མི་ཚུགས་པསà¼"
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "རི་ཇེགསི་ཕྱོགས་སྒྲིག་འཛོལ་བ་- %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "%sགི་དོན་ལུ་འཛིན་གྲོལ་'%s'་དེ་མ་འà½à½¼à½–་པསà¼"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "'%s'་གི་དོན་ལུ་འà½à½¼à½“་རིམ་'%s'་དེ་མ་འà½à½¼à½–་པསà¼"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find task '%s'"
+msgstr "%s་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འཚོལ་མ་à½à½¼à½–à¼"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "%s་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འཚོལ་མ་à½à½¼à½–à¼"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "%s་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འཚོལ་མ་à½à½¼à½–à¼"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "%sà½à½´à½˜à¼‹à½¦à¾’ྲིལ་འདི་ག་ཡོད་ཟཚོལ་མ་à½à½¼à½–à¼"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "གྲལ་à½à½²à½‚་%u་འདི་འབྱུང་à½à½´à½„ས་à½à½¼à¼‹à½¡à½²à½‚་%s་ནང་ལུ་གནམ་མེད་ས་མེད་རིངམོ་འདུག"
+
+#: apt-pkg/cdrom.cc
+#, fuzzy
+msgid "Unmounting CD-ROM...\n"
+msgstr "སི་ཌི་-རོམ་སྦྱར་བརྩེགས་མ་འབད་བར་བཞག་དོ..."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr " %s སི་ཌི-རོམ་སྦྱར་བརྩེགས་ཀྱི་ས་ཚིགས་ལག་ལེན་འà½à½–་དོà¼\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "ཌིསིཀ་གི་དོན་ལུ་བསྒུག་དོ...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "སི་ཌི་-རོམ་སྦྱར་བརྩེགས་འབད་དོ...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "ངོས་འཛིན་འབད་དོ..."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "གསོག་འཇོག་འབད་ཡོད་པའི་à½à¼‹à½¡à½²à½‚:%s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "ཟུར་à½à½¼à¼‹à½¡à½²à½‚་སྣོད་ཚུ་གི་དོན་ལུ་ ཌིསིཀ་ཞིབ་ལྟ་འབད་དོ...\n"
+
+#: apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr "%i་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གྱི་ཟུར་à½à½¼à¼‹à½šà½´à¼‹à½à½¼à½–་ཅི་ %i་འབྱུང་à½à½´à½„ས་ཟུར་à½à½¼à¼‹à½šà½´à¼‹à½‘ང་ %iམིང་རྟགས་ཚུà¼\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "Found label '%s'\n"
+msgstr "གསོག་འཇོག་འབད་ཡོད་པའི་à½à¼‹à½¡à½²à½‚:%s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "དེ་ནུས་ཅན་གྱི་མིང་ཅིག་མེན་པས་ ལོག་སྟེ་རང་འབད་རྩོལ་བསà¾à¾±à½ºà½‘à¼\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"ཌིསིཀ་འདི་བོད་བརྡ་འབད་དོ་ཡོདཔ་ཨིནà¼\n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གྱིà½à½¼à¼‹à½¡à½²à½‚་ཚུ་འདྲ་བཤུས་རà¾à¾±à½–་དོ..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "འབྱུང་à½à½´à½„ས་ཀྱི་à½à½¼à¼‹à½¡à½²à½‚་གསརཔ་ཅིག་འབྲི་དོà¼\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "འ་ནི་ ཌིསིཀ་གི་དོན་ལུ་ འབྱུང་à½à½´à½„ས་ཧྲིལ་བུ་ཚུ་:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "%s་ ངོ་བཤུས་འབད་མ་ཚུགསà¼"
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "སྦྱར་བརྩེགས་ས་ཚིགས་%s་འདི་ངོ་བཤུས་འབད་མ་ཚུགསà¼"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "སི་ཌི་རོམ་འདི་ངོ་བཤུས་འབད་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "བརྡ་བཀོད་གྲལ་à½à½²à½‚་གྱི་གདམ་à½à¼‹'%c'[%s་ནང་ལས་]འདི་མ་ཤེས་པསà¼"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "བ་རྡ་བཀོད་གྲལ་à½à½²à½‚་གི་གདམ་à½à¼‹%s་འདི་ཧ་མ་གོ་བསà¼"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "བརྡ་བཀོད་གྲལ་à½à½²à½‚་གི་གདམ་à½à¼‹%s་འདི་བུ་ལིན་མེན་པསà¼"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "གདམ་à½à¼‹%s་ལུ་སྒྲུབ་རྟགས་ཅིག་དགོ་པསà¼"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "གདམ་à½à¼‹%s:རིམ་སྒྲིག་གི་རྣམ་གྲངས་གསལ་བཀོད་ལུ་ =<val> ་ཅིག་དགོཔ་ཨིནà¼"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "གདམ་à½à¼‹ %s ་ལུ་'%s'་མེན་པར་ ཧྲིལ་ཨང་སྒྲུབ་རྟགས་ཅིག་དགོས་མà½à½¼à¼‹à½¡à½¼à½‘པ་ཨིན"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "གདམ་à½à¼‹'%s'འདི་གནམ་མེད་ས་མེད་རིངམ་འདུག"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "དྲན་ཤེས་ %s་འདི་ཧ་གོ་མ་ཚུགས་པས་ བདེན་པ་ཡང་ན་རྫུན་པ་ལུ་འབད་རྩོལ་བསà¾à¾±à½ºà½‘པà¼"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "ནུས་མེད་བཀོལ་སྤྱོད་%s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "ངོ་མ་ཤེས་པའི་སྡུད་ཚིག་གི་དབྱེ་བ:'%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "རིམ་སྒྲིག་ཡིག་སྣོད་%s་འདི་à½à¼‹à½•à¾±à½ºà¼‹à½‘ོà¼"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "་ཚིག་སྦྱོར་འཛོལ་བ་%s:%u: སྡེབ་ཚན་གྱིས་མིང་མེད་མི་དང་གཅིག་à½à½¢à¼‹à½ à½‚ོ་བཙུགསཔ་ཨིན"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "ཚིག་སྦྱོར་འཛོལ་བ་%s:%u:བཟོ་ཉེས་འགྱུར་བའི་ངོ་རྟགསà¼"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "ཚིག་སྦྱོར་འཛོལ་བ་%s:%u:གནས་གོང་གི་ཤུལ་ལས་མà½à½¼à¼‹à½˜à½ºà½‘་à½à½ºà½–སà¼"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "ཚིག་སྦྱོར་འཛོལ་བ་%s:%u:བཀོད་རྒྱ་ཚུ་ཆེ་རིམ་ནང་རà¾à¾±à½„མ་ཅིག་བྱིན་ཚུགསà¼"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "ཚིག་སྦྱོར་འཛོལ་བ་%s:%u:འདུ་འཛོམས་འབད་འབདà½à¼‹à½£à½ºà¼‹à½¤à½±à¼‹à½‚ྲངས་སུ་བཙུགསཔ་ཨིནà¼"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "ཚིག་སྦྱོར་འཛོལ་བ་%s:%u: ནཱ་ལས་རང་འགོ་བཙུགས་གྲངས་སུ་བཙུགས་à½à½ºà¼‹à½¡à½¼à½‘à¼"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "ཚིག་སྦྱོར་འཛོལ་བ་%s:%u: རྒྱབ་སà¾à¾±à½¼à½¢à¼‹à½˜à¼‹à½ à½–ད་བར་ཡོད་པའི་'%s'བཀོད་རྒྱà¼"
+
+#: apt-pkg/contrib/configuration.cc
+#, fuzzy, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr "ཚིག་སྦྱོར་འཛོལ་བ་%s:%u:བཀོད་རྒྱ་ཚུ་ཆེ་རིམ་ནང་རà¾à¾±à½„མ་ཅིག་བྱིན་ཚུགསà¼"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "ཚིག་སྦྱོར་འཛོལ་བ་%s:%u: ཡིག་སྣོད་ཀྱི་མཇུག་ལུ་མà½à½¼à¼‹à½˜à½ºà½‘་à½à½ºà½–སà¼"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem unlinking the file %s"
+msgstr "ཡིག་སྣོད་འདི་འབྲེལལམ་མེདཔ་བཟོ་བའི་བསྒང་དཀའ་ངལà¼"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "%s ལྷག་ནི་རà¾à¾±à½„མ་ཅིག་འབད་མི་ལྡེ་མིག་ཡིག་སྣོད་འདི་གི་དོན་ལུ་ལྡེ་མིག་རà¾à¾±à½–་ནི་ལག་ལེན་མི་འà½à½–་པསà¼"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "ལྡེ་མིག་རà¾à¾±à½–ས་ཡོད་པའི་ཡིག་སྣོད་%s་འདི་à½à¼‹à½•à¾±à½ºà¼‹à½˜à¼‹à½šà½´à½‚སà¼"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr ""
+"ཨེན་ཨེཕ་ཨེསི་ %s སྦྱར་བརྩེགས་འབད་ཡོད་པའི་ལྡེ་མིག་ཡིག་སྣོད་ཀྱི་དོན་ལུ་ལྡེ་མིག་རà¾à¾±à½–་ནི་ལག་ལེན་མི་འà½à½–་པསà¼"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "%sལྡེ་མིག་རà¾à¾±à½–་ནི་ལེན་མ་ཚུགསà¼"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "%s་གི་དོན་ལུ་བསྒུག་སྡོད་ཅི་ འདི་འབདà½à¼‹à½‘་ཕར་མིན་འདུག"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "ཡན་ལག་ལས་སྦྱོར་%s་ལུ་ཆ་བགོས་ཀྱི་སà¾à¾±à½¼à½“་ཅིག་à½à½¼à½–་ཡོདཔ་ཨིནà¼"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "ཡན་ལག་ལས་སྦྱོར་%s་ལུ་ཆ་བགོས་ཀྱི་སà¾à¾±à½¼à½“་ཅིག་à½à½¼à½–་ཡོདཔ་ཨིནà¼"
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "ཡན་ལག་ལས་སྦྱོར་%s་གིས་འཛོལ་བའི་ཨང་རྟགས་(%u)ཅིག་སླར་ལོག་འབད་ཡོདཔ་ཨིནà¼"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "ཡན་ལག་ལས་སྦྱོར་་%s་གིས་རེ་བ་མེད་པར་ཕྱིར་à½à½¼à½“་ཡོདཔ་ཨིནà¼"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "འཛོལ་བ་ལྷབà¼"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "འཛོལ་བ་འབྲིà¼"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "ཡིག་སྣོད་འདི་à½à¼‹à½–སྡམས་པའི་བསྒང་དཀའ་ངལà¼"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "ཡན་ལག་ལས་སྦྱོར་ ཨའི་པི་སི་ གསར་བསà¾à¾²à½´à½“་འབད་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "ཨེབ་འཕྲུལ་ལག་ལེན་འà½à½–་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "%s་ཡིག་སྣོད་འདི་à½à¼‹à½•à¾±à½ºà¼‹à½˜à¼‹à½šà½´à½‚སà¼"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Could not open file descriptor %d"
+msgstr "%s་གི་དོན་ལུ་རྒྱུད་དུང་འདི་à½à¼‹à½•à¾±à½ºà¼‹à½˜à¼‹à½šà½´à½‚སà¼"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "ལྷག་ ད་ལྟོ་ཡང་ལྷག་ནི་ལུ་%lu་ཡོད་འདི་འབདà½à¼‹à½‘་ཅི་ཡང་ལྷག་ལུས་མིན་འདུག"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "འབྲི་ ད་ལྟོ་ཡང་འབྲི་ནི་ལུ་%lu་ཡོད་འདི་འདབà½à¼‹à½‘་འབད་མ་ཚུགསà¼"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the file %s"
+msgstr "ཡིག་སྣོད་འདི་à½à¼‹à½–སྡམས་པའི་བསྒང་དཀའ་ངལà¼"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "ཡིག་སྣོད་མཉམ་བྱུང་འབདà½à¼‹à½‘་དཀའ་ངལà¼"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "ཡིག་སྣོད་མཉམ་བྱུང་འབདà½à¼‹à½‘་དཀའ་ངལà¼"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "%s་འདི་ལུ་ངོ་བཤུས་འབད་མ་ཚུགསà¼"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr " %sལུ་འབྲི་མ་ཚུགསà¼"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "ཡིག་སྣོད་སྟོངམ་འདི་mmap་འབད་མ་ཚུགསà¼"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "%lu་བཱའིཊིསི་གི་mmap་བཟོ་མ་ཚུགསà¼"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "%s་གི་དོན་ལུ་རྒྱུད་དུང་འདི་à½à¼‹à½•à¾±à½ºà¼‹à½˜à¼‹à½šà½´à½‚སà¼"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to close mmap"
+msgstr "%s་à½à¼‹à½•à¾±à½ºà¼‹à½˜à¼‹à½šà½´à½‚སà¼"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to synchronize mmap"
+msgstr "ལས་བཀོལ་འབད་མ་ཚུགསà¼"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "%lu་བཱའིཊིསི་གི་mmap་བཟོ་མ་ཚུགསà¼"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Failed to truncate file"
+msgstr "%s་ཡིག་སྣོད་འདི་འབྲི་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... འཛོལ་བ་!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... འབད་ཚར་ཡོདà¼"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... འབད་ཚར་ཡོདà¼"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "སེལ་འà½à½´à¼‹%s ་མ་འà½à½¼à½–à¼"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Unable to parse Release file %s"
+msgstr "%s (༡་)་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཡིག་སྣོད་འདི་མིང་དཔྱད་འབད་མ་ཚུགསà¼"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "No sections in Release file %s"
+msgstr "%s་གི་ཚབ་ལུ་%s་སེལ་འà½à½´à¼‹à½ à½–ད་ནི་སེམས་à½à½¢à¼‹à½–ཞག\n"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "%s་à½à¼‹à½•à¾±à½¼à½‚ས་ཡིག་སྣོད་ནང་ནུས་མེད་གྲལ་à½à½²à½‚"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "%s (%d)་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཡིག་སྣོད་འདི་མིང་དཔྱད་འབད་མ་ཚུགསà¼"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, fuzzy, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "à½à½¼à¼‹à½–ཀོད་འབད་ཡོད་པའི་སྣོད་ཡིག་འདི་ལྡེ་མིག་རà¾à¾±à½–་མ་ཚུགསà¼"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr ""
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Installing %s"
+msgstr "གཞི་བཙུགས་འབད་ཡོད་པའི་%sà¼"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "%s་རིམ་སྒྲིག་འབད་དོà¼"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "%s་རྩ་བསà¾à¾²à½‘་གà½à½„་དོà¼"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removing %s"
+msgstr "%s མཇུག་བསྡུà½à¼‹à½¦à¾¦à½ºà¼‹à½¢à½„་རྩ་བསà¾à¾²à½‘་བà½à½„་ཡོདà¼"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "གཞི་བཙུགས་འབད་ཡོད་པའི་%sà¼"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Directory '%s' missing"
+msgstr "à½à½¼à¼‹à½–ཀོད་འབད་མི་སྣོད་à½à½¼à¼‹%s་ཆ་ཤས་འདི་བརླག་སྟོར་ཟུགས་à½à½ºà¼‹à½ à½‘ུག"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, fuzzy, c-format
+msgid "Could not open file '%s'"
+msgstr "%s་ཡིག་སྣོད་འདི་à½à¼‹à½•à¾±à½ºà¼‹à½˜à¼‹à½šà½´à½‚སà¼"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "%s་ གྲ་སྒྲིག་འབད་དོà¼"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr " %s་ གི་སྦུང་ཚན་བཟོ་བཤོལ་འབད་དོà¼"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "%s་ རིམ་སྒྲིག་ལུ་གྲ་སྒྲིག་འབད་དོà¼"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "%s་ རྩ་བསà¾à¾²à½‘་གà½à½„་ནིའི་དོན་ལུ་གྲ་སྒྲིག་འབད་དོà¼"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "རྩ་བསà¾à¾²à½‘་བà½à½„་ཡོད་པའི་%s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "%s མཇུག་བསྡུà½à¼‹à½¦à¾¦à½ºà¼‹à½¢à½„་རྩ་བསà¾à¾²à½‘་གà½à½„་ནིའི་དོན་ལུ་གྲ་སྒྲིག་འབད་དོà¼"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "%s མཇུག་བསྡུà½à¼‹à½¦à¾¦à½ºà¼‹à½¢à½„་རྩ་བསà¾à¾²à½‘་བà½à½„་ཡོདà¼"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr " %sལུ་འབྲི་མ་ཚུགསà¼"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "རྟེན་འབྲེལ་གྱི་རྩ་འབྲེལ་བཟོ་བརྩིགས་འབད་དོà¼"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "མི་ངོ་འà½à½¼à½“་རིམཚུà¼"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "བརྟེན་པའི་བཟོ་བà½à½¼à½“à¼"
+
+#: apt-pkg/depcache.cc
+#, fuzzy
+msgid "Reading state information"
+msgstr "འà½à½¼à½–་ཚུགས་པའི་བརྡ་དོན་མཉམ་བསྡོམས་འབད་དོà¼"
+
+#: apt-pkg/depcache.cc
+#, fuzzy, c-format
+msgid "Failed to open StateFile %s"
+msgstr "%s་ག་ཕྱེ་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདཔà¼"
+
+#: apt-pkg/depcache.cc
+#, fuzzy, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "%s་ཡིག་སྣོད་འདི་འབྲི་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "%i་དྲན་མà½à½¼à¼‹à½‘ེ་ཚུ་བྲིས་ཡོདà¼\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "%i བྱིག་འགྱོ་ཡོད་པའི་ཡིག་སྣོད་ཚུ་དང་གཅིག་à½à½¢à¼‹ %i དྲན་à½à½¼à¼‹à½ à½‘ི་ཚུ་བྲིས་ཡོདà¼\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "%i་མà½à½´à½“་སྒྲིག་མེདཔ་པའི་ཡིག་སྣོད་ཚུ་དང་གཅིག་à½à½¢à¼‹ %i་དྲན་à½à½¼à¼‹à½šà½´à¼‹à½–ྲིས་བཞག་ཡོདཔ་ཨིནà¼\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"%i བྱིག་འགྱོ་ཡོད་པའི་ཡིག་སྣོད་ཚུ་དང་ %iམà½à½´à½“་སྒྲིག་མེད་པའི་ཡིག་སྣོད་ཚུ་དང་གཅིག་à½à½¢à¼‹ %i དྲན་à½à½¼à¼‹à½ à½‘ི་ཚུ་བྲིས་"
+"ཡོདཔ་ཨིནà¼\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, fuzzy, c-format
+msgid "Hash mismatch for: %s"
+msgstr "ཨེམ་ཌི་༥་ à½à¾±à½¼à½“་བསྡོམས་མ་མà½à½´à½“་པà¼"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "སྦུང་ཚན་བཟོ་ནིའི་རིམ་ལུགས་ '%s' འདི་ལུ་རྒྱབ་སà¾à¾±à½¼à½¢à¼‹à½˜à¼‹à½ à½–ད་བསà¼"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "འོས་འབབ་དང་ལྡན་པའི་སྦུང་ཚན་རིམ་ལུགས་ཀྱི་དབྱེ་བ་ཅིག་གà½à½“་འབེབས་བཟོ་མི་ཚུགས་པསà¼"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "%s་ཡིག་སྣོད་འདི་à½à¼‹à½•à¾±à½ºà¼‹à½˜à¼‹à½šà½´à½‚སà¼"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"མི་མà½à½´à½“་/སྔོན་རྟེན་འཕྲལ་བཀོལ་ལས་བརྟེན་ འ་ནི་གཞི་བཙུགས་གཡོག་བཀོལ་འདི་ལུ་ མེད་དུ་མི་རུང་བའི་%sà½à½´à½˜à¼‹"
+"སྒྲིལ་ གནས་སà¾à½–ས་ཀྱི་རྩ་བསà¾à¾²à½‘་གà½à½„་ནི་འདི་དགོས་མà½à½¼à¼‹à½¡à½¼à½‘པ་ཨིན༠འདི་འཕྲལ་འཕྲལ་རང་བྱང་ཉེས་ཅིག་ཨིན་པས་ "
+"འདི་འབདà½à¼‹à½‘་à½à¾±à½¼à½‘་ཀྱི་à½à½‘་རི་འབའ་རི་འབད་དགོཔ་ཨིན་པ་ཅིན་ APT::Force-LoopBreak གདམ་à½à¼‹à½ à½‘ི་ཤུགས་"
+"ལྡན་བཟོà¼"
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འདྲ་མཛོད་སྟོངམà¼"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འདྲ་མཛོད་ཡིག་སྣོད་འདི་ངན་ཅན་ཨིན་པསà¼"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིས་འདྲ་མཛོད་ཡིག་སྣོད་འདི་ མི་མà½à½´à½“་པའི་འà½à½¼à½“་རིམ་ཅིག་ཨིན་པསà¼"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "འ་ནི་ཨེ་པི་ཊི་ འདི་གིས་ '%s'འà½à½¼à½“་རིམ་བཟོ་ནིའི་རིམ་ལུགས་དེ་ལུ་རྒྱབ་སà¾à¾±à½¼à½¢à¼‹à½˜à½²à¼‹à½ à½–ད་བསà¼"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འདྲ་མཛོད་འདི་བཟོ་བཀོད་སོ་སོ་ཅིག་གི་དོན་ལུ་བཟོ་བརྩིགས་འབད་འབདà½à¼‹à½¨à½²à½“པསà¼"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འདྲ་མཛོད་ཡིག་སྣོད་འདི་ངན་ཅན་ཨིན་པསà¼"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "རྟེནམ་ཨིནà¼"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "སྔོན་གོང་མ་རྟེནམ་ཨིནà¼"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "བསམ་འཆར་བཀོདཔ་ཨིནà¼"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "མི་མà½à½´à½“མ་ཨིནà¼"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "འོས་སྦྱོར་འབདà½à¼‹à½¨à½²à½“à¼"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "ཚབ་བཙུགསཔ་ཨིནà¼"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "ཕན་མེདཔ་བཟོà½à¼‹à½¨à½²à½“à¼"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "གལ་ཅནà¼"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "དགོས་མà½à½¼à¼‹à½¡à½¼à½‘པà¼"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "ཚད་ལྡནà¼"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "à½à½ºà½–སà¼"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "གདམ་à½à¼‹à½…ནà¼"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "འདྲ་མཛོད་ལུ་མà½à½´à½“་འགྱུར་མེན་པའི་འà½à½¼à½“་རིམ་བཟོ་ནིའི་རིམ་ལུགས་ཅིག་འདུག"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "%s (པི་ཀེ་ཇི་འཚོལ་ནི)དེ་བཟོ་སྦྱོར་འབད་བའི་བསྒང་འཛོལ་བ་ཅིག་བྱུང་ནུག"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "པའོ་་་à½à¾±à½¼à½‘་ཀྱིས་ ཨེ་པི་ཊི་འདི་གིས་བཟོད་à½à½´à½–་པའི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཨང་གྲངས་ལས་ལྷག་ནུག"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "པའོ་་་à½à¾±à½¼à½‘་ཀྱིས་ ཨེ་པི་ཊི་འདི་གིས་བཟོད་à½à½´à½–་པའི་à½à½¼à½“་རིམ་ཨང་གྲངས་ལས་ལྷག་ནུག"
+
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "པའོ་་་à½à¾±à½¼à½‘་ཀྱིས་ ཨེ་པི་ཊི་འདི་གིས་བཟོད་à½à½´à½–་པའི་à½à½¼à½“་རིམ་ཨང་གྲངས་ལས་ལྷག་ནུག"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "པའོ་་་à½à¾±à½¼à½‘་ཀྱིས་ ཨེ་པི་ཊི་འདི་གིས་བཟོད་à½à½´à½–་པའི་བརྟེན་པའི་ཨང་གྲངས་ལས་ལྷག་ནུག"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་à½à½¼à¼‹à½¡à½²à½‚་ཚུ་ལྷག་དོà¼"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "IO འཛོལ་བ་འབྱུང་à½à½´à½„ས་འདྲ་མཛོད་སྲུང་བཞག་འབད་དོà¼"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "ཟུར་à½à½¼à¼‹à½¡à½²à½‚་སྣོད་ཀྱི་དབྱེ་བ་ '%s' འདི་རྒྱབ་སà¾à¾±à½¼à½¢à¼‹à½˜à¼‹à½ à½–ད་བསà¼"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, fuzzy, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "དགའ་གདམ་ཡིག་སྣོད་ནང་ལུ་ནུས་མེད་ཀྱི་དྲན་à½à½¼à¼‹ à½à½´à½˜à¼‹à½¦à¾’ྲིལ་མགོ་ཡིག་མིན་འདུག"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "ངོ་རྟགས་ཨང་གི་དབྱེ་བ་ %s འདི་ཧ་གོ་མ་ཚུགསà¼"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "གོ་རྟགས་ཨང་གི་དོན་ལུ་ གཙོ་རིམ་(ཡང་ན་ ཀླད་ཀོར་)ཚུ་གསལ་བཀོད་མ་འབད་བསà¼"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "བཟོ་ཉེས་གྱུར་བའི་ཟུར་བཞག་%s གྲལ་à½à½²à½‚་%lu #1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "%s་à½à¼‹à½•à¾±à½ºà¼‹à½‘ོà¼"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "བཟོ་ཉེས་འགྱུར་བའི་གྲལ་à½à½²à½‚་%u་ འབྱུང་à½à½´à½„ས་à½à½¼à¼‹à½¡à½²à½‚་%s (དབྱེ་བ)་ནང་ནà¼"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "དབྱེ་བ་'%s'་འདི་གྲལ་à½à½²à½‚་%u་གུར་ལུ་ཡོདཔ་འབྱུང་à½à½´à½„ས་à½à½¼à¼‹à½¡à½²à½‚་%s་གི་ནང་ན་མ་ཤེས་པསà¼"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "བཟོ་ཉེས་འགྱུར་བའི་གྲལ་à½à½²à½‚་%u་ འབྱུང་à½à½´à½„ས་à½à½¼à¼‹à½¡à½²à½‚་%s (དབྱེ་བ)་ནང་ནà¼"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "དབྱེ་བ་'%s'་འདི་གྲལ་à½à½²à½‚་%u་གུར་ལུ་ཡོདཔ་འབྱུང་à½à½´à½„ས་à½à½¼à¼‹à½¡à½²à½‚་%s་གི་ནང་ན་མ་ཤེས་པསà¼"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr ""
+"à½à¾±à½¼à½‘་རའི་sources.listགི་à½à½¼à¼‹à½¡à½²à½‚་ནང་ལུ་à½à¾±à½¼à½‘་ཀྱི་ 'འབྱུང་à½à½´à½„ས་' ཡུ་ཨར་ཨའི་ཚུ་་ལ་ལུ་ཅིག་བཙུགས་དགོ"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "%s %s་ ལེན་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: apt-pkg/update.cc
+#, fuzzy
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"ཟུར་à½à½¼à¼‹à½¡à½²à½‚་སྣོད་ལ་ལུ་ཅིག་ཕབ་ལེན་འབད་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ནུག་ འདི་ཚུ་སྣང་མེད་སྦེ་བཞགཔ་མ་ཚད་ ཚབ་ལུ་"
+"རྙིངམ་འདི་ཚུ་ལག་ལེན་འà½à½–་ནུག"
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "ཡར་བསà¾à¾±à½ºà½‘་རྩིས་བà½à½¼à½“་དོ་"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "ཨེབà¼:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "ལེན:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "ཨེལ་ཇི་ཨེན:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "ཨི་ཨར་ཨརà¼:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "%s (%sB/s)་ནང་ལུ་%sB་དེ་ལེན་ཡོདཔ་ཨིནà¼\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [ལཱ་འབད་དོà¼]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"བརྡ་ལམ་བསྒྱུར་བཅོས:à½à¼‹à½¡à½²à½‚་བཀོད་ཡོད་པའི་ཌིསིཀ་འདི་\n"
+" '%s'\n"
+"འདྲེན་འཕྲུལ་'%s'ནང་བཙུགས་བཞིནམ་ལས་ལོག་ལྡེ་འདི་ཨེབà¼\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "རྟེན་འབྲེལ་ནོར་བཅོས་འབད་དོà¼"
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr "འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "རྟེན་འབྲེལ་འདི་ནོར་བཅོས་འབད་མི་ཚུགས་པསà¼"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "ཡར་བསà¾à¾±à½ºà½‘་འབད་ཡོད་པའི་ཆ་ཚན་འདི་ཆུང་ཀུ་བཟོ་མི་ཚུགས་པསà¼"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr "འབད་ཚར་ཡིà¼"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+"འ་ནི་འདི་ཚུ་ནོར་བཅོས་འབད་ནི་ལུ་à½à¾±à½¼à½‘་ཀྱི་'apt --fix-broken install'དེ་གཡོག་བཀོལ་དགོཔ་འོང་à¼"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"མ་ཚང་བའི་རྟེན་འབྲེལ་ à½à½´à½¦à¼‹à½¦à¾’ྲིལ་མེད་མི་ཚུ་དང་གཅིག་à½à½¢à¼‹ 'apt --fix-broken install'དེ་འབà½à¼‹à½¢à¾©à½¼à½£à¼‹"
+"བསà¾à¾±à½ºà½‘པà¼(ཡང་ན་à½à½–ས་ཤེས་ཅིག་གསལ་བཀོད་འབདà¼)"
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "དྲན་འཛིན་ རི་ཇེགསི་'%s'གི་དོན་ལུ་%s་སེལ་འà½à½´à¼‹à½ à½–ད་དོà¼\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "དྲན་འཛིན་ རི་ཇེགསི་'%s'གི་དོན་ལུ་%s་སེལ་འà½à½´à¼‹à½ à½–ད་དོà¼\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "དྲན་འཛིན་ རི་ཇེགསི་'%s'གི་དོན་ལུ་%s་སེལ་འà½à½´à¼‹à½ à½–ད་དོà¼\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "གྱིས་བྱིན་à½à½ºà¼‹à½¡à½¼à½‘་པའི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་%s་འདི་བར་ཅུ་ཡལ་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཅིག་ཨིནà¼\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [གཞི་བཙུགས་འབད་ཡོདà¼]"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Not candidate version]"
+msgstr "མི་ངོ་འà½à½¼à½“་རིམཚུà¼"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "à½à¾±à½¼à½‘་ཀྱི་གཞི་བཙུགས་འབད་ནི་ལུ་གà½à½“་འà½à½£à¼‹à½¦à¾¦à½ºà¼‹à½‚ཅིག་སེལ་འà½à½´à¼‹à½ à½–ད་དགོ"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"à½à½´à½˜à¼‹à½¦à¾’ྲིལ་%s་འདི་འà½à½¼à½–་མི་ཚུགས་པས་ འདི་འབདà½à¼‹à½‘་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གཞན་ཅིག་གིས་གྲོས་བསྟུན་འབད་དེ་ཡོདà¼\n"
+"འདི་གིས་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཅིག་བརླག་སྟོར་ཞུགས་ཡོདཔ་ཨིནམ་སྟོནམ་ཨིནམ་དང་ ཕན་མེད་སྦེ་གནས་ཡོདཔ་ ཡང་ན་\n"
+"འདི་གཞན་འབྱུང་ཅིག་ནང་ལས་ལས་རà¾à¾±à½„མ་ཅིག་འà½à½¼à½–་ཚུགསཔ་ཨིན་པསà¼\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "ག་དེ་སྦེ་ཨིན་རུང་འོག་གི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་གིས་ འདི་ཚབ་བཙུགསཔ་ཨིན:"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་%s་ལུ་གཞི་བཙུགས་ཀྱི་མི་ངོ་མིན་འདུག"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr ""
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་%s་འདི་གཞི་བཙུགས་མ་འབད་བས་ འདི་འབད་ནི་དི་གིས་རྩ་བསà¾à¾²à½‘་མ་གà½à½„་པསà¼à¼‹\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་%s་འདི་གཞི་བཙུགས་མ་འབད་བས་ འདི་འབད་ནི་དི་གིས་རྩ་བསà¾à¾²à½‘་མ་གà½à½„་པསà¼à¼‹\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "%s་གི་ཚབ་ལུ་%s་སེལ་འà½à½´à¼‹à½ à½–ད་ནི་སེམས་à½à½¢à¼‹à½–ཞག\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "འ་ནི་ ཨེ་ཊི་པི་འདི་ལུ་ཡང་དག་ ཀའུ་ ནུས་ཤུགས་ཚུ་ཡོདà¼"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་མ་à½à½¼à½–à¼"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "ཉེན་བརྡ:འོག་གི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འདི་ཚུ་བདེན་བཤད་འབད་མི་བà½à½´à½–་པསà¼"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "བདེན་བཤད་ཉེན་བརྡ་འདི་ཟུར་འབད་ཡོདà¼\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ལ་ལུ་ཅིག་བདེན་བཤད་འབད་མ་ཚུགསà¼"
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid "Install these packages without verification?"
+msgstr "བདེན་སྦྱོར་མ་འབད་བར་འ་ནི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འདི་ཚུ་གཞི་བཙུགས་འབད་ནི་ཨིན་ན་"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "དཀའ་ངལ་ཚུ་ཡོདཔ་ལས་-y ་འདི་ --force-yes་མེདà½à½¼à½‚་ལས་ལག་ལེན་འà½à½–་སྟེ་ཡོདà¼"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "%s་ནང་བར་སྟོང་"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "%s ནང་à½à¾±à½¼à½‘་ལུ་བར་སྟོང་དལà½à¼‹à½£à½„མ་སྦེ་མིན་འདུག"
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "ཕབ་ལེན་འབད་ནིའི་སྣོད་ཡིག་འདི་ལྡེ་མིག་རà¾à¾±à½–ས་མ་ཚུགས་པསà¼"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ལ་ལུ་ཅིག་གཞི་བཙུགས་འབད་མ་ཚུགས༠འ་ནི་གི་དོན་དག་དེ་à½à¾±à½¼à½‘་ཀྱི་ མི་སྲིད་པའི་དུས་སà¾à½–ས་ཅིག་ཞུ་བ་"
+"འབད་འབདà½à¼‹à½ à½¼à½„་ནི་མས་ ཡང་ན་ད་ལྟོ་ཡང་གསར་བསà¾à¾²à½´à½“་མ་འབད་བར་ཡོད་པའི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ལ་ལུ་ཅིག་ཡང་ན་ནང་"
+"འབྱོར་གྱི་ཕྱི་à½à½¢à¼‹à½¢à¾©à¼‹à½–སà¾à¾²à½‘་བà½à½„་ཡོད་པའི་རྩ་བརྟན་མེད་པའི་བགོ་འགྲེམ་ཚུ་ལག་ལེན་འà½à½–་དོ་ཡོདཔ་འོང་ནི་ཨིན་པསà¼"
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "འོག་གི་བརྡ་དོན་དེ་གིས་དུས་སà¾à½–ས་འདི་མོས་མà½à½´à½“་བཟོ་ནི་ལུ་གྲོགས་རམ་འབད་འོང་:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "ཆད་པ་ཡོད་པའི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུà¼"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"ཡིག་མཛོད་ལ་ལུ་ཅིག་ལེན་མི་ཚུགས་པས་ apt-get་དུས་མà½à½´à½“་བཟོ་ནི་གཡོག་བཀོལ་ནི་ཨིན་ན་ཡང་ན་--fix-"
+"missing་དང་གཅིག་à½à½¢à¼‹à½ à½–ད་རྩོལ་བསà¾à¾±à½ºà½‘་ནི་ཨིན་ན་?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr ""
+"ནང་འà½à½¼à½‘་ཀྱི་འཛོལ་བ་ གཞི་བཙུགས་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་ ཆད་པ་ཡོད་པའི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་དང་གཅིག་à½à½¢à¼‹à½–ོད་བརྡ་འབད་འདི་"
+"ཡོད!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་རྩ་བསà¾à¾²à½‘་བà½à½„་དགོཔ་འདུག་འདི་འབདགà½à¼‹à½‘་རྩ་བསà¾à¾²à½‘་གà½à½„་ནི་འདི་ལྕོགས་མིན་à½à½£à¼‹à½à½ºà¼‹à½ à½‘ུག"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "དཀའ་ངལ་ཚུ་ཡོདཔ་ལས་-y ་འདི་ --force-yes་མེདà½à½¼à½‚་ལས་ལག་ལེན་འà½à½–་སྟེ་ཡོདà¼"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "དཀའ་ངལ་ཚུ་ཡོདཔ་ལས་-y ་འདི་ --force-yes་མེདà½à½¼à½‚་ལས་ལག་ལེན་འà½à½–་སྟེ་ཡོདà¼"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "ནང་འà½à½¼à½‘་འཛོལ་བ་ གོ་རིམ་བཟོ་ནི་ཚུ་མཇུག་མ་བསྡུ་བསà¼"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"ག་ཅི་གི་ཡ་མཚན་ཆེ་མི་ཆེ་ ཚད་འདི་གིས་ email apt@packages.debian.org་ལུ་མà½à½´à½“་སྒྲིག་མི་འབད་"
+"བསà¼"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "%sBལེན་ནི་ལུ་དགོཔ་པས༠ཡིག་མཛོད་ཚི་གི་%sB་\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "ཡིག་མཛོད་ཀྱི་%sB་འདི་ལེན་དགོ་པསà¼\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "à½à¼‹à½¦à¾à½¼à½„་གི་%sB་འདི་བཤུབ་པའི་ཤུལ་ལས་ཌིཀསི་གི་བར་སྟོང་དེ་ལག་ལེན་འà½à½–་འོང་à¼\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "%sB་འདི་ཤུབ་པའི་ཤུལ་ལས་ཀྱི་བར་སྟོང་དེ་དལà½à¼‹à½¦à¾¦à½ºà¼‹à½£à½´à½¦à¼‹à½ à½¼à½„་à¼\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "གལ་ཆུང་རà¾à¾±à½„མ་ཅིག་à½à½¦à½£à¼‹à½–ཀོད་འབད་ནུག་ འདི་འབདà½à¼‹à½‘་འ་ནི་འདི་གལ་ཆུང་གི་བཀོལ་སྤྱོད་མེནà¼"
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "ཨིན་ ང་གིས་སླབ་དོ་བཟུམ་སྦེ་རང་འབད!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"à½à¾±à½¼à½‘་ཀྱི་གནོད་ངན་འབྱུང་ནིའི་ལཱ་ཅི་འབད་ནི་འབད་དོà¼\n"
+"འཕྲོ་མà½à½´à½‘་འབད་ནིའི་དོན་ལུ་'%s'ཚིག་ཚན་ནང་ལུ་ཡིག་དཔར་རà¾à¾±à½–སà¼\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "བར་བཤོལ་འབདà¼"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Do you want to continue?"
+msgstr "à½à¾±à½¼à½“་ཀྱི་འཕྲོ་མà½à½´à½‘་ནི་འབད་ནི་ཨིན་ན་"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "ཡིག་སྣོད་ལ་ལུ་ཅིག་ཕབ་ལེན་འབད་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "ཕབ་ལེན་à½à½–ས་ལམ་རà¾à¾±à½„མ་གཅིག་ནང་མཇུག་བསྡུà½à¼‹à½¦à¾¦à½ºà¼‹à½¢à½„་ཕབ་ལེན་འབདà¼"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing་དང་བརྡ་ལམ་བརྗེ་སོར་འབད་ནི་འདི་ད་ལྟོ་ལས་རང་རྒྱབ་སà¾à¾±à½¼à½¢à¼‹à½˜à½²à¼‹à½ à½–ད་བསà¼"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "བརླག་སྟོར་ཞུགས་ཡོད་པའི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་ནོར་བཅོས་འབད་མི་ཚུགས་པསà¼"
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "གཞི་བཙུགས་བར་བཤོལ་འབད་དོà¼"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "ནང་འà½à½¼à½‘་འཛོལ་བ་ དཀའ་ངལ་མོས་མà½à½´à½“་འབད་མི་ཅ་ཆས་ཚུ་མེདཔ་à½à½£à¼‹à½¡à½¼à½‘à¼"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "འོག་གི་à½à½´à½˜à¼‹à½¦à¾’ྲིས་གསརཔ་འདི་ཚུ་à½à½žà½²à¼‹à½–ཙུགས་འབད་འོང་:"
+msgstr[1] "འོག་གི་à½à½´à½˜à¼‹à½¦à¾’ྲིས་གསརཔ་འདི་ཚུ་à½à½žà½²à¼‹à½–ཙུགས་འབད་འོང་:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "འོག་གི་à½à½´à½˜à¼‹à½¦à¾’ྲིས་གསརཔ་འདི་ཚུ་à½à½žà½²à¼‹à½–ཙུགས་འབད་འོང་:"
+msgstr[1] "འོག་གི་à½à½´à½˜à¼‹à½¦à¾’ྲིས་གསརཔ་འདི་ཚུ་à½à½žà½²à¼‹à½–ཙུགས་འབད་འོང་:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "འོག་གི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་à½à½ºà½–ས་ཚུ་གཞི་བཙུགས་འབད་འོང་:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "བསམ་འཆར་བཀོད་ཡོད་པའི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "འོས་སྦྱོར་འབད་ཡོད་པའི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+"%s་གོམ་འགྱོ་འབད་དོ་ འདི་ཧེ་མ་ལས་རང་གཞི་བཙུགས་འབད་འོདཔ་དང་དུས་ཡར་བསà¾à¾±à½ºà½‘་འབད་ནི་འདི་གཞི་སྒྲིག་མ་"
+"འབད་བསà¼\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"%s་གོམ་འགྱོ་འབད་དོ་ འདི་ཧེ་མ་ལས་རང་གཞི་བཙུགས་འབད་འོདཔ་དང་དུས་ཡར་བསà¾à¾±à½ºà½‘་འབད་ནི་འདི་གཞི་སྒྲིག་མ་"
+"འབད་བསà¼\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "%s ་ལོག་གཞི་བཙུགས་འབད་ནི་འདི་མི་སྲིད་པ་ཅིག་ཨིན་པས་ འདི་ཕབ་ལེན་འབད་མི་བà½à½´à½–་པསà¼\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s ་འདི་ཧེ་མ་ལས་རང་འà½à½¼à½“་རིམ་གསར་ཤོས་ཅིག་ཨིནà¼\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to manually installed.\n"
+msgstr "འདི་འབདà½à¼‹à½‘་%sའདི་གཞི་བཙུགས་འབད་ནི་ཨིནà¼"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "(%s)གི་དོན་ལུ་སེལ་འà½à½´à¼‹à½ à½–ད་ཡོད་པའི་འà½à½¼à½“་རིམ་'%s'(%s)\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "(%s)གི་དོན་ལུ་སེལ་འà½à½´à¼‹à½ à½–ད་ཡོད་པའི་འà½à½¼à½“་རིམ་'%s'(%s)\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [གཞི་བཙུགས་འབད་ཡོདà¼]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [གཞི་བཙུགས་འབད་ཡོདà¼]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [གཞི་བཙུགས་འབད་ཡོདà¼]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [གཞི་བཙུགས་འབད་ཡོདà¼]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "འདི་འབདà½à¼‹à½‘་%s་འདི་གཞི་བཙུགས་འབད་ཡོདà¼"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "འདི་འབདà½à¼‹à½‘་%sའདི་གཞི་བཙུགས་འབད་ནི་ཨིནà¼"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "འདི་འབདà½à¼‹à½‘་%s་འདི་གཟི་བཙུགས་འབད་མི་བà½à½´à½–་པསà¼"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "འདི་འབདà½à¼‹à½‘་ འདི་བར་ཅུ་ཡལ་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཅིག་ཨིན་པསà¼"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "འདི་འབདà½à¼‹à½‘་འདི་གཞི་བཙུགས་མི་འབད་ནི་ཨིན་པསà¼"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "འདི་འབདà½à¼‹à½‘་འདི་གཞི་བཙུགས་མ་འབད་བསà¼"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr "ཡང་ནà¼"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "འོག་གི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་ལུ་རྟེན་འབྲེལ་མ་ཚང་པས:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "འོག་གི་à½à½´à½˜à¼‹à½¦à¾’ྲིས་གསརཔ་འདི་ཚུ་à½à½žà½²à¼‹à½–ཙུགས་འབད་འོང་:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "འོག་གི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འདི་ཚུ་རྩ བསà¾à¾²à½‘་གà½à½„་འོང་:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "འོག་གི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འདི་ཚུ་ལོག་སྟེ་རང་བཞག་ནུག:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "འོག་གི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འདི་ཚུ་ཡར་བསà¾à¾±à½ºà½‘་འབད་འོང་:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "འོག་གི་à½à½´à½˜à¼‹à½¦à¾’ྲལ་འདི་ཚུ་མར་ཕབ་འབད་འོང་:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "འོག་གི་འཆང་ཡོད་པའི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་བསྒྱུར་བཅོས་འབད་འོང་:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s( %s་གིས་སྦེ)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"ཉེན་བརྡ:འོག་གི་ཉོ་མà½à½¼à¼‹à½–འི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་རྩ་བསà¾à¾²à½‘་གà½à½„་འོང་à¼\n"
+"à½à¾±à½¼à½‘་ཀྱིས་à½à¾±à½¼à½‘་རང་ག་ཅི་འབདà½à¼‹à½¨à½²à½“་ན་ངེས་སྦེ་མ་ཤེས་ཚུན་འདི་འབད་ནི་མི་འོང་à¼!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu་ཡར་བསà¾à¾±à½ºà½‘་འབད་ཡོད་ %lu་འདི་གསརཔ་སྦེ་གཞི་བཙུགས་འབད་ཡོདà¼"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu་འདི་ལོག་གཞི་བཙུགས་འབད་ཡོདà¼"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu་འདི་མར་ཕབ་འབད་ཡོདà¼"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "རྩ་བསà¾à¾²à½‘་འབད་ནི་ལུ་%lu་དང་%lu་ཡར་བསà¾à¾±à½ºà½‘་མ་འབད་བསà¼\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu་འདི་ཆ་ཚང་སྦེ་གཞི་བཙུགས་མ་འབད་ཡང་ན་རྩ་བསà¾à¾²à½‘་མ་གà½à½„་པསà¼\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr ""
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr ""
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "à½à½ à½²à¼"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+#, fuzzy
+msgid "You must give at least one search pattern"
+msgstr "à½à¾±à½¼à½‘་ཀྱིས་à½à½‚་à½à½‚་སྦེ་དཔེ་གཞི་གཅིག་བྱིན་དགོ"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཡིག་སྣོད་ %sའདི་མཉམ་འབྱུང་གི་ཕྱི་à½à½¢à¼‹à½¨à½²à½“་པསà¼"
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གྱི་ཡིག་སྣོད:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+"འདྲ་མཛོད་འདི་མཉམ་བྱུང་གི་ཕྱི་à½à½¢à¼‹à½¨à½²à½“་པས་ à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཡིག་སྣོད་ཅིག་ལུ་ ཨེགསི་-རེཕ་འབད་མི་ཚུགས་པསà¼"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "à½à½–་གཟེར་བà½à½–་ཡོད་པའི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr "གཞི་བཙུགས་འབད་ཡོདཔà¼"
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr "མི་ངོ:"
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(ཅི་མེདà¼)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr "à½à½¼à½“་རིམ་à½à½²à½‚་à½à¾²à½˜à¼:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "%s་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འཚོལ་མ་à½à½¼à½–à¼"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "%s་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འཚོལ་མ་à½à½¼à½–à¼"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "%s་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འཚོལ་མ་à½à½¼à½–à¼"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "འབྱུང་à½à½´à½„ས་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གྱི་à½à½¼à¼‹à½¡à½²à½‚་%s་དེ་ངོ་བཤུས་འབད་མ་ཚུགསà¼"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "གི་དོན་ལུ་འབྱུང་à½à½´à½„ས་ལེན་ནི་ལུ་ཉུང་མà½à½ à¼‹à½¢à½„་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གཅིག་ལེན་དགོ"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "%s་གི་དོན་ལུ་འབྱུང་à½à½´à½„ས་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཅིག་འཚོལ་མ་འà½à½¼à½–"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "གོམ་འགྱོ་གིས་ཧེ་མ་ལས་རང་'%s'་ཡིག་སྣོད་དེ་ཕབ་ལེན་འབད་ནུག\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "%sB་ལེན་དགོཔ་འདུག་ འབྱུང་à½à½´à½„ས་ཡིག་མཛོད་ཀྱི་%sBà¼\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "འབྱུང་à½à½´à½„ས་ཡིག་མཛོད་ཚུ་ཀྱི་%sB་ལེན་དགོ་པསསà¼\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "%s་འབྱུང་à½à½´à½„ས་ལེནà¼\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "ཡིག་མཛོད་ལ་ལུ་ཅིག་ལེན་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "%s་ནང་ཧེ་མ་ལས་སྦུང་ཚན་བཟོ་བཤོལ་ཨིན་མའི་སྦུང་ཚན་བཟོ་བཤོལ་གོམ་འགྱོ་འབད་དོà¼\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "'%s'སྦུང་ཚན་བཟོ་བཤོལ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "'dpkg-dev'་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་དེ་གཞི་བཙུགས་འབད་ཡོད་པ་ཅིན་ཨེབ་གà½à½„་འབདà¼\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "'%s'་བཟོ་བརྩིགས་བརྡ་བཀོད་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "%s་གི་དོན་ལུ་བཟོ་བརྩིགས་-རྟེན་འབྲེལ་བརྡ་དོན་དེ་ལེན་མ་ཚུགསà¼"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s ལུ་བཟོ་བརྩིགས་རྟེན་འབྲེལ་མིན་འདུག\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr "builddeps ཞིབ་དཔྱད་འབད་ནིའི་དོན་ལུ་ཉུང་མà½à½ à¼‹à½¢à½„་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གཅིག་གསལ་བཀོད་འབད་དགོ"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "བཟོ་བརྩིགས་རྟེན་འབྲེལ་འདི་ལས་སྦྱོར་འབད་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདཔ་ཨིནà¼"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "བཟོ་བརྩིགས་རྟེན་འབྲེལ་འདི་ལས་སྦྱོར་འབད་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདཔ་ཨིནà¼"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "%s་ལུ་%s་བསà¾à¾±à½¢à¼‹à½˜à½²à½„་བà½à½‚ས་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ %s à½à½¼à½“་རིམ་ %s ལུ་ ཌེཔ་མ་ཚང་ཅིག་འདུག:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "དུས་མà½à½´à½“་བཟོ་བའི་བརྡ་བཀོད་འདི་གིས་སྒྲུབ་རྟགས་ཚུ་མི་འབག་འབདà¼"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "དུས་མà½à½´à½“་བཟོ་བའི་བརྡ་བཀོད་འདི་གིས་སྒྲུབ་རྟགས་ཚུ་མི་འབག་འབདà¼"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་བསྡོམས་ཀྱི་མིང་ཚུ:"
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total package structures: "
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་བསྡོམས་ཀྱི་མིང་ཚུ:"
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr "སྤྱིར་བà½à½„་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུà¼"
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr "བར་ཅུ་ཡལ་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གཙང་མ་ཚུ:"
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr "བར་ཅུ་ཡལ་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་རà¾à¾±à½„་པ་ཚུ:"
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr "བར་ཅུ་ཡལ་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་སླ་བསྲེ་ཡོད་མི་ཚུ:"
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr "བརླག་སྟོར་ཞུགས་པ:"
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "à½à¾±à½‘་རྟགས་ཅན་གྱི་à½à½¼à½“་རིམ་ཚུ་གི་བསྡོམས:"
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total distinct descriptions: "
+msgstr "à½à¾±à½‘་རྟགས་ཅན་གྱི་à½à½¼à½“་རིམ་ཚུ་གི་བསྡོམས:"
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "རྟེན་འབྲེལ་བསྡོམས:"
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "à½à½ºà½“་རིམ་/ཡིག་སྣོད་ མà½à½´à½“་འབྲེལ་གྱི་བསྡོམས:"
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total Desc/File relations: "
+msgstr "à½à½ºà½“་རིམ་/ཡིག་སྣོད་ མà½à½´à½“་འབྲེལ་གྱི་བསྡོམས:"
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "ཡོངས་བསྡོམས་ཀྱིས་ས་à½à¾²à¼‹à½–ཟོ་བ་ཚུ་བྱིནམ་ཨིན:"
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "སྤུངས་ཡོད་པའི་ཡིག་རྒྱུན་གྱི་བསྡོམས:"
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "བར་སྟོང་ལྷུག་ལྷུག་གི་བསྡོམས:"
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "གི་དོན་ལུ་རྩིས་à½à½¼à¼‹à½–à½à½¼à½“་ཡོད་པའི་བར་སྟོང:"
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "འདི་གིས་འབྱུང་à½à½´à½„ས་ཀྱི་དྲན་à½à½¼à¼‹à½šà½´à¼‹à½¦à¾Ÿà½¼à½“མ་ཨིནà¼"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "འདི་གིས་ རི་ཇེགསི་དཔེ་གཞི་ཅིག་གི་དོན་ལུ་ à½à½´à½˜à¼‹à½¦à¾’ྲིལ་à½à½¼à¼‹à½¡à½²à½‚་དེ་འཚོལ་ཞིབ་འབདà½à¼‹à½¨à½²à½“à¼"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "འདི་གིས་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གི་དོན་ལུ་ རགས་པ་རྟེན་འབྲེལ་གྱི་བརྡ་དོན་ཅིག་ སྟོནམ་ཨིནà¼"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "འདི་གིས་ à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཅིག་གི་དོན་ལུ་ རིམ་ལོག་རྟེན་འབྲེལ་གྱི་བརྡ་དོན་དེ་སྟོནམ་ཨིནà¼"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "འདི་གིས་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གི་དོན་ལུ་ ལྷག་བà½à½´à½–་པའི་དྲན་à½à½¼à¼‹à½…ིག་སྟོནམ་ཨིནà¼"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "འདི་གིས་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་ཆ་མཉམ་གི་མིང་ཚུ་à½à½¼à¼‹à½–ཀོད་འབདà½à¼‹à½¨à½²à½“à¼"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "འདི་གིས་ སྲིད་བྱུས་སྒྲིག་སྟངས་ཚུ་སྟོནམ་ཨིནà¼"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "ཌིསིཀ་འདི་གི་དོན་ལུ་མིང་ཅིག་བླིན་གནང་ དཔེར་ན་ 'Debian 2.1r1 Disk 1'བཟུམà¼"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "ཌིསིཀ་ཅིག་འདྲེན་འཕྲུལ་ནང་བཙུགས་བཞིནམ་ལས་ལོག་ལྡེ་འདི་ཨེབà¼"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "%s་ལུ་%s་བསà¾à¾±à½¢à¼‹à½˜à½²à½„་བà½à½‚ས་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "à½à¾±à½¼à½‘་ཀྱི་ཆ་ཚན་ནང་གི་སི་ཌི་ལྷག་ལུས་ཡོད་མི་གི་དོན་ལུ་འ་ནི་ལས་སྦྱོར་དེ་ཡང་བསà¾à¾±à½¢à¼‹à½ à½–དà¼"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "སྒྲུབས་རྟགས་ཚུ་ཟུང་ནང་མིན་འདུག"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"ལག་ལེན:apt-config [གདམ་à½à¼‹à½šà½´à¼‹] བརྡ་བཀོདà¼\n"
+"\n"
+"apt-config་འདི་APT config་ཡིག་སྣོད་ལྷག་ནིའི་དོན་ལུ་འཇམ་སམ་ལག་ཆས་ཅིག་ཨིནà¼\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"ལག་ལེན་: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates འདི་ཌེ་བི་ཡཱན་ à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་ནང་ལས་\n"
+"རིམ་སྒྲིག་དང་ ཊེམ་པེལེཊི་ བརྡ་དོན་ཕྱིར་དོན་འབད་ནིའི་ལག་ཆས་ཅིགཨིནà¼\n"
+"གདམ་à½à¼‹à½šà½´à¼\n"
+" -h འདི་གིས་ཚིག་ཡིག་འདི་གྲོགས་རམ་འབདà½à¼‹à½¨à½²à½“à¼\n"
+" -t འདི་གིས་temp་སྣོད་à½à½¼à¼‹à½ à½‘ི་གཞི་སྒྲིག་འབདà½à¼‹à½¨à½²à½“à¼\n"
+" -c=? འདི་གིས་ རིམ་སྒྲིག་ཡིག་སྣོད་འདི་ལྷགཔ་ཨིནà¼\n"
+" -o=? འདི་གིས་མà½à½´à½“་སྒྲིག་རིམ་སྒྲིག་གདམ་à½à¼‹à½…ིག་གཞི་སྒྲིག་འབདà½à¼‹à½¨à½²à½“་ དཔེར་ན་-o dir::cache=/tmp་"
+"བཟུམà¼\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "debconf ་་འà½à½¼à½“་རིམ་འདི་ལེན་མ་ཚུགས༠debconf འདི་གཞི་བཙུགས་འབད་ཡི་ག་?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "%s་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འཚོལ་མ་à½à½¼à½–à¼"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "འདི་འབདà½à¼‹à½‘་%sའདི་གཞི་བཙུགས་འབད་ནི་ཨིནà¼"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "ནང་འà½à½¼à½‘་འཛོལ་བ་ དཀའ་ངལ་མོས་མà½à½´à½“་འབད་མི་ཅ་ཆས་ཚུ་མེདཔ་à½à½£à¼‹à½¡à½¼à½‘à¼"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "རྒྱབ་སà¾à¾±à½¼à½¢à¼‹à½ à½–ད་ཡོད་པའི་ཚད་གཞི་ཚུ:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"ལག་ལེན་:apt-get [options] command\n"
+"apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get འདི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་ཕབ་ལེན་འབད་ནི་དང་\n"
+"གཞི་བཙུགས་འབད་ནིའི་དོན་ལུ་ འཇམ་སམ་བརྡ་བཀོད་གྲལ་à½à½²à½‚་གི་ངོས་འདྲ་བ་ཅིག་ཨིན༠མང་ཤོས་རང་་སྦེ་རང་"
+"ལག་ལེན་འà½à½–་ཡོད་པའི་བརྡ་བཀོད་ཚུ་\n"
+" དུས་མà½à½´à½“་དང་གཞི་བཙུགས་འབད་ནི་དེ་ཨིནà¼\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "འདི་གིས་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་གི་à½à½¼à¼‹à½¡à½²à½‚་གསརཔ་ཚུ་སླར་འདྲེན་འབདà½à¼‹à½¨à½²à½“à¼"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "འདི་གིས་ ཡར་བསà¾à¾±à½ºà½‘་ཀྱི་ལཱ་འགན་ཅིག་འགྲུབ་ཨིནà¼"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "འདི་གིས་ à½à½´à½˜à¼‹à½¦à¾’ྲིལ་(pkg is libc6 not libc6.deb)གསརཔ་་ཚུ་གཞི་བཙུགས་འབདà½à¼‹à½¨à½²à½“à¼"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "འདི་གིས་ à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་རྩ་བསà¾à¾²à½‘་གà½à½„མ་ཨིནà¼"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr ""
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+#, fuzzy
+msgid "Remove automatically all unused packages"
+msgstr "འདི་འབདà½à¼‹à½‘་%sའདི་གཞི་བཙུགས་འབད་ནི་ཨིནà¼"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "འདི་གིས་ བགོ་བཀྲམ་འདི་ཡར་བསà¾à¾±à½ºà½‘་འབདà½à¼‹à½¨à½²à½“༠apt-get(8)ལུ་བལྟà¼"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "འདི་གིས་ སེལ་འà½à½´à¼‹à½–ཤོལ་གྱི་ སེལ་འà½à½´à¼‹à½šà½´à¼‹à½ à½–དà½à¼‹à½¨à½²à½“à¼"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "འདི་གིས་འབྱུང་à½à½´à½„ས་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་གི་དོན་ལུ་བཟོ་བརྩིགས་-རྟེན་འབྲེལ་ཚུ་རིམ་སྒྲིག་འབདà½à¼‹à½¨à½²à½“à¼"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "འདི་གིས་ ཕབ་ལེན་འབད་ཡོད་པའི་ཡིག་མཛོད་ཀྱི་ཡིག་སྣོད་ཚུ་ཀྲེག་གà½à½„མ་ཨིནà¼"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "འདི་གིས་ ཕབ་ལེན་འབད་འབདà½à¼‹à½¢à¾™à½²à½„མ་གྱི་ཡིག་མཛོད་ཡིག་སྣོད་ཚུ་ཀྲེག་གà½à½„མ་ཨིནà¼"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "ཆད་པ་འགྱོ་འགྱོ་བའི་རྟེན་འབྲེལ་ཚུ་མེདཔ་སྦེ་བདེན་སྦྱོར་འབདà½à¼‹à½¨à½²à½“à¼"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "འདི་གིས་འབྱུང་à½à½´à½„ས་ཀྱི་ཡིག་མཛོད་ཚུ་ཕབ་ལེན་འབདà½à¼‹à½¨à½²à½“à¼"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "གི་དོན་ལུ་འབྱུང་à½à½´à½„ས་ལེན་ནི་ལུ་ཉུང་མà½à½ à¼‹à½¢à½„་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གཅིག་ལེན་དགོ"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"ལག་ལེན་: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates འདི་ཌེ་བི་ཡཱན་ à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་ནང་ལས་\n"
+"རིམ་སྒྲིག་དང་ ཊེམ་པེལེཊི་ བརྡ་དོན་ཕྱིར་དོན་འབད་ནིའི་ལག་ཆས་ཅིགཨིནà¼\n"
+"གདམ་à½à¼‹à½šà½´à¼\n"
+" -h འདི་གིས་ཚིག་ཡིག་འདི་གྲོགས་རམ་འབདà½à¼‹à½¨à½²à½“à¼\n"
+" -t འདི་གིས་temp་སྣོད་à½à½¼à¼‹à½ à½‘ི་གཞི་སྒྲིག་འབདà½à¼‹à½¨à½²à½“à¼\n"
+" -c=? འདི་གིས་ རིམ་སྒྲིག་ཡིག་སྣོད་འདི་ལྷགཔ་ཨིནà¼\n"
+" -o=? འདི་གིས་མà½à½´à½“་སྒྲིག་རིམ་སྒྲིག་གདམ་à½à¼‹à½…ིག་གཞི་སྒྲིག་འབདà½à¼‹à½¨à½²à½“་ དཔེར་ན་-o dir::cache=/tmp་"
+"བཟུམà¼\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"ལག་ལེན་: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates འདི་ཌེ་བི་ཡཱན་ à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་ནང་ལས་\n"
+"རིམ་སྒྲིག་དང་ ཊེམ་པེལེཊི་ བརྡ་དོན་ཕྱིར་དོན་འབད་ནིའི་ལག་ཆས་ཅིགཨིནà¼\n"
+"གདམ་à½à¼‹à½šà½´à¼\n"
+" -h འདི་གིས་ཚིག་ཡིག་འདི་གྲོགས་རམ་འབདà½à¼‹à½¨à½²à½“à¼\n"
+" -t འདི་གིས་temp་སྣོད་à½à½¼à¼‹à½ à½‘ི་གཞི་སྒྲིག་འབདà½à¼‹à½¨à½²à½“à¼\n"
+" -c=? འདི་གིས་ རིམ་སྒྲིག་ཡིག་སྣོད་འདི་ལྷགཔ་ཨིནà¼\n"
+" -o=? འདི་གིས་མà½à½´à½“་སྒྲིག་རིམ་སྒྲིག་གདམ་à½à¼‹à½…ིག་གཞི་སྒྲིག་འབདà½à¼‹à½¨à½²à½“་ དཔེར་ན་-o dir::cache=/tmp་"
+"བཟུམà¼\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "འདི་འབདà½à¼‹à½‘་འདི་གཞི་བཙུགས་མ་འབད་བསà¼"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "འདི་འབདà½à¼‹à½‘་%sའདི་གཞི་བཙུགས་འབད་ནི་ཨིནà¼"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "འདི་འབདà½à¼‹à½‘་%sའདི་གཞི་བཙུགས་འབད་ནི་ཨིནà¼"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s ་འདི་ཧེ་མ་ལས་རང་འà½à½¼à½“་རིམ་གསར་ཤོས་ཅིག་ཨིནà¼\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s ་འདི་ཧེ་མ་ལས་རང་འà½à½¼à½“་རིམ་གསར་ཤོས་ཅིག་ཨིནà¼\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "འདི་འབདà½à¼‹à½‘་%sའདི་གཞི་བཙུགས་འབད་ནི་ཨིནà¼"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "%s་ག་ཕྱེ་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདཔà¼"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "འདི་འབདà½à¼‹à½‘་%sའདི་གཞི་བཙུགས་འབད་ནི་ཨིནà¼"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "'dpkg-dev'་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་དེ་གཞི་བཙུགས་འབད་ཡོད་པ་ཅིན་ཨེབ་གà½à½„་འབདà¼\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "འདི་འབདà½à¼‹à½‘་%sའདི་གཞི་བཙུགས་འབད་ནི་ཨིནà¼"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "འདི་འབདà½à¼‹à½‘་%sའདི་གཞི་བཙུགས་འབད་ནི་ཨིནà¼"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "མ་ཤེས་པའི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གི་དྲན་à½à½¼à¼"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་à½à½¼à¼‹à½¡à½²à½‚་ཚུ་ལྷག་དོà¼"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "à½à½–་གཟེར་བà½à½–་ཡོད་པའི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "ཆད་པ་ཡོད་པའི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུà¼"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "འདི་འབདà½à¼‹à½‘་%sའདི་གཞི་བཙུགས་འབད་ནི་ཨིནà¼"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "འà½à½¼à½–་ཚུགས་པའི་བརྡ་དོན་མཉམ་བསྡོམས་འབད་དོà¼"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "སྔོན་སྒྲིག་བྱང་ཉེས་གཞི་སྒྲིག་འབད་དོ་!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "འཕྲོ་མà½à½´à½‘་འབད་ནིའི་དོན་ལུ་ལོག་ལྡེ་འདི་ཨེབà¼"
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr ""
+
+#: dselect/install
+#, fuzzy
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "སྦུང་ཚན་བཟོ་བཤོལ་འབད་བའི་བར་ན་ འཛོལ་བ་དག་པ་ཅིག་བྱུང་ནུག་ ང་གི་"
+
+#: dselect/install
+#, fuzzy
+msgid "will be configured. This may result in duplicate errors"
+msgstr "གཞི་བཙུགས་འབད་ཡོད་པའི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་རིམ་སྒྲིག་འབད་ནི་ཨིནà¼à¼‹à½ à¼‹à½“ི་འདི་གིས་ ངོ་བཤུས་རྫུན་མ་"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"ཡང་ན་བརླག་སྟོར་ཞུགས་ཡོད་པའི་རྟེན་འབྲེལ་གི་རྒྱུ་རà¾à¾±à½ºà½“་ལས་བརྟེན་པའི་འཛོལ་བ་ཚུ་ནང་ལུ་གྲུབ་འབྲས་འà½à½¼à½“་འོང་༠"
+"འདི་དེ་བà½à½´à½–་པས་"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"འ་ནི་འཕྲིན་དོན་གྱི་ལྟག་ལས་ཡོད་པའི་འཛོལ་བ་དེ་ཚུ་གལ་ཅན་ཅིག་ཨིན༠འདི་ཚུ་གི་དཀའ་ངལ་སེལ་བཞིནམ་ལས་ "
+"[I] གཞི་བཙུགས་དེ་ལོག་སྟེ་རང་གཡོག་བཀོལà¼"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "འà½à½¼à½–་ཚུགས་པའི་བརྡ་དོན་མཉམ་བསྡོམས་འབད་དོà¼"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་རྒྱ་བསà¾à¾±à½ºà½‘་à½à½¼à½‚་ཡིག་འདི་གནམ་མེད་ས་མེད་རིངམ་འདུག"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "སྣོད་à½à½¼à¼‹%s་ལས་སྦྱོར་འབདà½à¼‹à½‘་འཛོལ་བ་འà½à½¼à½“་ཡིà¼"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "འབྱུང་à½à½´à½„ས་རྒྱ་བསà¾à¾±à½ºà½‘་ཀྱི་à½à½¼à½‚་ཡིག་འདི་གནམ་མེད་ས་མེད་རིང་པསà¼"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "ནང་དོན་ཡིག་སྣོད་ལུ་མགོ་ཡིག་འཛོལ་བ་འབྲི་ནིའི་མགོ་ཡིག"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "%sའཛོལ་བ་ལས་སྦྱོར་འབད་ནིའི་ནང་དོནà¼"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"ལག་ལེན:apt-ftparchive [options] command\n"
+"བརྡ་བཀོད་ཚུ:packages binarypath [overridefile [pathprefix]]\n"
+"sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive་འདི་གིས་ ཌི་བི་ཡཱན་ཡིག་མཛོད་ཚུ་གི་དོན་ལུ་ ཚིག་ཡིག་གི་ཡིག་སྣོད་ཚུ་བཟོ་བà½à½¼à½“་འབདà½à¼‹"
+"ཨིན༠dpkg-scanpackages དང་ dpkg-scansources་གི་དོན་ལུ་ལས་འགན་ཚབ་མ་ཚུ་ལུ་ཆ་ཚང་སྦེ་ "
+"རང་བཞིན་གྱི་སྦེ་བཟོ་བཟོà½à¼‹à¼‹à½“ང་ལས་བཟོ་བà½à½¼à½“་གྱི་བཟོ་རྣམ་ཚུ་ལྷམ་པ་མ་འདྲà½à¼‹à½¦à¾¦à½ºà¼‹à½¡à½¼à½‘་མི་ལུ་རྒྱབ་སà¾à¾±à½¼à½¢à¼‹à½ à½–དà½à¼‹"
+"ཨིནà¼\n"
+"\n"
+"apt-ftparchive་ འདི་གིས་.debs་གི་རྩ་འབྲེལ་ཅིག་ནང་ལས་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གྱི་ཡིག་སྣོད་ཚུ་བཟོ་བà½à½¼à½“་འབདà½à¼‹à½¨à½²à½“༠"
+"à½à½´à½˜à¼‹à½¦à¾’ྲིལ་\n"
+" ཡིག་སྣོད་འདི་གི་ནང་ན་ à½à½´à½˜à¼‹à½¦à¾’ྲིལ་རེ་རེ་བཞིན་ནང་གི་ཚད་འཛིན་ས་སྒོ་ཚུ་ཆ་མཉམ་གི་ནང་དོན་དང་ ཨེམ་ཌི་༥་དྲྭ་"
+"རྟགས༠(#)་དང་ཡིག་སྣོད་ཀྱི་ཚད་ཚུ་ཡང་ཡོདཔ་ཨིན༠ཟུར་བཞག་ཡིག་སྣོད་འདི་\n"
+"གཙོ་རིམ་དང་དབྱེ་ཚན་གྱི་གནས་གོང་དེ་བང་བཙོང་འབད་ནི་ལུ་རྒྱབ་སà¾à¾±à½¼à½¢à¼‹à½ à½–ད་ཡོདཔ་ཨིནà¼\n"
+"\n"
+"འདི་དང་ཆ་འདྲà½à¼‹à½¦à¾¦à½ºà¼‹ apt-ftparchive་ འདི་གིས་.dscs་གི་རྩ་འབྲེལ་ཅིག་ནང་ལས་འབྱུང་à½à½´à½„ས་ཡིག་སྣོད་ཚུ་"
+"བཟོ་བà½à½¼à½“་འབདà½à¼‹à½¨à½²à½“à¼\n"
+" --source-ཟུར་བཞག་གི་གདམ་à½à¼‹à½ à½‘ི་ ཨེསི་ཨར་སི་ ཟུར་བཞག་ཡིག་སྣོད་ཅིག་གསལ་བཀོད་འབད་ནི་ལུ་ལག་ལེན་"
+"འà½à½–་བà½à½´à½–་ཨིནà¼\n"
+"\n"
+"'à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཚུ་'་དང་'འབྱུང་à½à½´à½„ས་་' བརྡ་བཀོད་ཚུ་རྩ་འབྲེལ་འདི་གི་་རྩ་བ་ནང་ལུ་སྦེ་གཡོག་བཀོལ་དགོཔ་ཨིན༠ཟུང་"
+"ལྡན་འགྲུལ་ལམ་འདི་གིས་ལོག་རིམ་འཚོལ་ཞིབ་འདི་གི་གཞི་རྟེན་ལུ་དཔག་དགོཔ་ཨིནམ་དང་\n"
+"ཟུར་བཞག་ཡིག་སྣོད་འདི་ལུ་ཟུར་བཞག་གི་ཟུར་རྟགས་འོང་དགོཔ་ཨིན༠འགྲུལ་ལམ་སྔོན་ཚིག་འདི་\n"
+"ཡོད་པ་ཅིན་ཡིག་སྣོད་མིང་གི་ས་སྒོ་ཚུ་ལུ་འཇུག་སྣོན་འབད་དེ་ཡོདཔ་ཨིན༠དཔེར་ན་ ཌི་བི་ཡཱན་ཡིག་མཛོད་ལས་ལག་"
+"ལེན་བཟུམ:\n"
+"apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"གདམ་à½à¼‹à½šà½´:\n"
+" -h འདི་གིས་ཚིག་ཡིག་ལུ་གྲོགས་རམ་འབདà½à¼‹à½¨à½²à½“à¼\n"
+" --md5 ཨེམ་ཌི་༥་ བཟོ་བà½à½¼à½“་འདི་ཚད་འཛིན་འབདà½à¼‹à½¨à½²à½“à¼\n"
+" -s=? འབྱུང་à½à½´à½„ས་ཟུར་བཞག་གི་ཡིག་སྣོདà¼\n"
+" -q à½à½´à¼‹à½¦à½²à½˜à¼‹à½¦à½²à½˜à¼\n"
+" -d=? གདམ་à½à¼‹à½…ན་གྱི་འདྲ་མཛོད་གནད་སྡུད་གཞི་རྟེན་འདི་སེལ་འà½à½´à¼‹à½ à½–དà¼\n"
+" --no-delink འབྲེལ་ལམ་མེད་སྦེ་བཟོ་་ནིའི་རà¾à¾±à½ºà½“་སེལ་à½à½–ས་ལམ་འདི་ལྕོགས་ཅན་བཟོà¼\n"
+" --contents ནང་དོན་གི་ཡིག་སྣོད་བཟོ་བà½à½¼à½“་འདི་ཚད་འཛིན་འབདà¼\n"
+" -c=? འ་ནི་རིམ་སྒྲིག་ཡིག་སྣོད་འདི་ལྷག\n"
+" -o=? མà½à½´à½“་སྒྲིག་རིམ་སྒྲིག་གི་གདམ་à½à¼‹à½…ིག་གཞི་སྒྲིག་འབདà¼"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "སེལ་འà½à½´à¼‹à½šà½´à¼‹à½˜à½à½´à½“་སྒྲིག་མིན་འདུག"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "ཡིག་སྣོད་ལ་ལུ་ཅིག་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཡིག་སྣོད་སྡེ་ཚན་`%s'ནང་བརླག་སྟོར་ཞུགས་ནུག"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "ཌི་བི་ངན་ཅན་བྱུང་ནུག་ %s.རྒསཔ་ལུ་ཡིག་སྣོད་འདི་བསà¾à¾±à½¢à¼‹à½˜à½²à½„་བà½à½‚ས་ཡིà¼"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "ཌི་བི་འདི་རྙིངམ་ཨིན་པས་ %s་ཡར་བསà¾à¾±à½ºà½‘་འབད་ནིའི་དོན་ལུ་དཔའ་བཅམ་དོà¼"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"ཌི་བི་རྩ་སྒྲིག་འདི་ ནུས་མེད་ཨིན་པས༠à½à¾±à½¼à½‘་ཀྱི་ apt་ གྱི་འà½à½¼à½“་རིམ་རྙིངམ་ཅིག་ནང་ལས་ ཡར་བསà¾à¾±à½ºà½‘་འབད་ཡོད་"
+"པ་ཅིན་ རྩ་བསà¾à¾²à½‘་གà½à½„་ཞིནམ་ལས་ གནད་སྡུད་གཞི་རྟེན་འདི་ ལོག་དེ་གསར་བསà¾à¾²à½´à½“་འབད༠"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "%s: %s་ཌི་བི་ཡིག་སྣོད་འདི་à½à¼‹à½•à¾±à½ºà¼‹à½˜à¼‹à½šà½´à½‚སà¼"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "%s་འབྲེལ་ལམ་ལྷག་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདཔà¼"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "ཡིག་མཛོད་འདི་ལུ་ཚད་འཛིན་དྲན་à½à½¼à¼‹à½˜à½²à½“་འདུག"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "འོད་རྟགས་ལེན་མ་ཚུགསà¼"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "དྲན་ཚད་སྤྲོད་ནིའི་དོན་ལུ་ རི་ཨེ་ལོཀ་ འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr " མ་ཤེས་ཨེབ་བཙུགས་ཨཱལ་གོ་རི་དམ'%s'"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "ཨེབ་བཙུགས་འབད་ཡོད་པའི་ཨའུཊི་པུཊི་%sལུ་ཨེབ་བཙུགས་ཆ་ཚན་ཅིག་དགོཔ་འདུག"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "ཡན་ལག་ལས་སྦྱོར་ལུ་ཨའི་པི་སི་རྒྱུད་དུང་གསར་བསà¾à¾²à½´à½“་འབད་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདཔà¼"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "à½à¼‹à½¦à¾¤à½ºà½£à¼‹à½ à½–ད་ནི་ལུ་འà½à½´à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "ཆ་ལག་ཨེབ་བཙུགས་འབདà¼"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "ནང་འà½à½¼à½‘་འཛོལ་བ་ %s་གསར་བསà¾à¾²à½´à½“་འབད་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "ཡན་ལག་ལས་སྦྱོར་ལུ་IO/ཡིག་སྣོད་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "ཨེམ་ཌི་༥་གློག་རིག་རà¾à¾±à½–་པའི་སà¾à½–ས་ལྷག་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "%s་à½à¼‹à½•à¾±à½ºà¼‹à½˜à¼‹à½šà½´à½‚སà¼"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "བཟོ་ཉེས་གྱུར་བའི་ཟུར་བཞག་%s གྲལ་à½à½²à½‚་%lu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "ཟུར་བཞག་ཡིག་སྣོད་%sའདི་ལྷག་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "བཟོ་ཉེས་གྱུར་བའི་ཟུར་བཞག་%s གྲལ་à½à½²à½‚་%lu #1"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "བཟོ་ཉེས་གྱུར་བའི་ཟུར་བཞག་%sགྲལ་à½à½²à½‚%lu #2"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "བཟོ་ཉེས་གྱུར་བའི་ཟུར་བཞག་%sགྲལ་à½à½²à½‚%lu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "ཌབ་ལུ:%sསྣོད་à½à½¼à¼‹à½ à½‘ི་ལྷག་མ་ཚུགསà¼\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "ཌབ་ལུ་ %s སིཊེཊི་འབད་མ་ཚུགསà¼\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "ཨི:"
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "ཌབ་ལུ:"
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "ཨི:འཛོལ་བ་ཚུ་ཡིག་སྣོད་ལུ་འཇུག་སྤྱོད་འབདà¼"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "%s་མོས་མà½à½´à½“་འབད་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདཔà¼"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "རྩ་འབྲེལ་ཕྱིར་བགྲོད་འབད་ནི་ལུ་འà½à½´à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདཔà¼"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "%s་ག་ཕྱེ་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདཔà¼"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** %s་ལས་%sལུ་འབྲེལ་འà½à½´à½‘་འབད་ནི་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདཔà¼"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr "%sB་ཧེང་བཀལ་བཀྲམ་ནིའི་འབྲེལ་མེད་བཅད་མཚམསà¼\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "ཡིག་མཛོད་ལུ་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཅི་ཡང་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½˜à¼‹à½–ྱུང་à¼"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %sལུ་ཟུར་བཞག་à½à½¼à¼‹à½–ཀོད་མེདà¼\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " %s ་རྒྱུན་སà¾à¾±à½¼à½„་པ་འདི་ %s ཨིན་ %s མེནà¼\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s ལུ་འབྱུང་à½à½´à½„ས་མེདཔ་གà½à½„་ནིའི་à½à½¼à¼‹à½–ཀོད་འདི་མེདà¼\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %sལུ་ཟུང་ལྡན་མེདཔ་གà½à½„་ནིའི་་à½à½¼à¼‹à½–ཀོད་གང་རུང་ཡང་མིན་འདུགà¼\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "མགོ་ཡིག་ཚུ་གི་དོན་ལུ་བསྒ྄ག་དོà¼"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "ཨེཆི་ཊི་ཊི་པི་ སར་བར་འདི་གིས་ནུས་མེད་ལན་གསལ་གི་མགོ་ཡིག་ཅིག་བà½à½„་ཡོདà¼"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "མགོ་ཡིག་གི་གྲལ་à½à½²à½‚་བྱང་ཉེསà¼"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "ཨེཆི་ཊི་ཊི་པི་སར་བར་འདི་གིས་ནུས་མེད་ནང་དོན་རིང་-ཚད་ཀྱི་མགོ་ཡིག་ཅིག་བà½à½„་ཡོདà¼"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "ཨེཆི་ཊི་ཊི་པི་ སར་བར་འདི་གིས་ ནུས་མེད་ ནང་དོན་-à½à¾±à½–་ཚད་ཀྱི་མགོ་ཡིག་ཅིག་བà½à½„་ཡོདà¼"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "འ་ནི་ ཨེཆི་ཊི་ཊི་པི་ སར་བར་འདི་གིས་ à½à¾±à½–་ཚད་ཀྱི་རྒྱབ་སà¾à¾±à½¼à½¢à¼‹à½‘ེ་ཆད་པ་བཟོ་བà½à½„་ནུག"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "མ་ཤེས་པའི་ཚེས་རྩ་སྒྲིག"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "མགོ་ཡིག་གནད་སྡུད་བྱང་ཉེསà¼"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "བà½à½´à½‘་ལམ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "ནང་འà½à½¼à½‘་འཛོལ་བà¼"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "སི་ཌི་རོམ་གནད་སྡུད་གཞི་རྟེན་%s་འདི་ལྷག་མ་ཚུགསà¼"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"འ་ནི་སི་ཌི་-རོམ་འདི་ཨེ་པི་ཊི་་གིས་ ངོས་འཛིན་འབད་ཚུགསཔ་སྦེ་བཟོ་ནིའི་་དོན་ལུ་ ཨེ་པི་ཊི་-སི་ཌི་རོམ་ལག་ལེན་"
+"འà½à½–་གནང༠apt-get་དུས་མà½à½´à½“་བཟོ་ནི་དེ་ སི་ཌི་-རོམས་གསརཔ་à½à¼‹à½¦à¾à½¼à½„་རà¾à¾±à½–་ནི་ལུ་ལག་ལེན་འà½à½–་མི་བà½à½´à½–à¼"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "སི་དི་-རོམ་ཕྱི་འགྱུརà¼"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr ""
+"%s་ནང་་སི་ཌི་-རོམ་འདི་བརྩེགས་བཤོལ་འབད་མ་ཚུགས་ འདི་ད་ལྟོ་ཡང་ལག་ལེན་འà½à½–་སྟེ་ཡོདཔ་འོང་ནི་མསà¼"
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "ཌིཀསི་དེ་འཚོལ་མ་à½à½¼à½–à¼"
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "ཡིག་སྣོད་འཚོལ་མ་à½à½¼à½–à¼"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "%s (%s)་ལུ་མà½à½´à½‘་དོà¼"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "%s (f=%u t=%u p=%u)གི་དོན་ལུ་སོ་ཀེཊི་ཅིག་གསར་བསà¾à¾²à½´à½“་འབད་མ་ཚུགསà¼"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "%s:%s (%s)ལུ་མà½à½´à½‘་ལམ་དེ་འགོ་འབྱེད་འབད་མ་ཚུགསà¼"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr " %s:%s (%s)ལུ་མà½à½´à½‘་མ་ཚུགས་ མà½à½´à½‘་ལམ་ངལ་མཚམསà¼"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr " %s:%s (%s)ལུ་མà½à½´à½‘་མ་ཚུགསà¼"
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "%s་ལུ་མà½à½´à½‘་དོà¼"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "'%s'མོས་མà½à½´à½“་འབད་མ་ཚུགསà¼"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "'%s'མོས་མà½à½´à½“་འབད་ནི་ལུ་གནས་སà¾à½–ས་ཀྱི་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "'%s:%s' (%i)་མོས་མà½à½´à½“་འབདà½à¼‹à½‘་ངན་པ་ཅིག་བྱུང་ཡིà¼"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "'%s:%s' (%i)་མོས་མà½à½´à½“་འབདà½à¼‹à½‘་ངན་པ་ཅིག་བྱུང་ཡིà¼"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "%s %s:ལུ་མà½à½´à½‘་མ་ཚུགསà¼"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "ངོ་བཤུས་འབད་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "ཡུ་ཨར་ཨེལ་ ནུས་མེད་ ཉེ་གནས་ ཡུ་ཨར་ཨེལ་ཨེསི་འདི་གིས་//་དང་གཅིག་à½à½¢à¼‹à½ à½‚ོ་བཙུགས་ནི་མི་འོང་à¼"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "ནང་བསà¾à¾±à½¼à½‘་འབད་དོà¼"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "དོ་བཉམ་གི་མིང་འདི་གà½à½“་འབེབས་བཟོ་མ་ཚུགསà¼"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "ཉེ་གནས་མིང་འདི་གà½à½“་འབེེབས་བཟོ་མ་ཚུགསà¼"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "སར་བར་འདི་གིས་ མà½à½´à½‘་ལམ་འདི་ངོས་ལེན་འབད་མ་བà½à½´à½–་པར་སླབ་མས: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "ལག་ལེན་པ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོད་ སར་བར་གྱིས་སླབ་མས་: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "རྩི་སྤྲོད་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོད་ སར་བར་གྱིས་སླབ་མས་: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"པོརོ་སི་སར་བར་ཅིག་གསལ་བཀོད་འབད་ཡོད་འདི་འབདà½à¼‹à½‘་ ནང་བསà¾à¾±à½¼à½‘་ཡིག་ཚུགས་མིན་འདུག་ Acquire::ftp::"
+"ProxyLoginའདི་སྟོངམ་ཨིན་པསà¼"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "ནང་བསà¾à¾±à½¼à½‘་ཡིག་ཚུགས་ བརྡ་བཀོད་'%s'་འདི་འà½à½¼à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོད་ སར་བར་གྱིས་སླབ་མས:%s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "ཡིག་དཔར་རà¾à¾±à½–་མ་བà½à½´à½–་སར་བར་གྱིས་སླབ་མས༠%s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "མà½à½´à½‘་ལམ་ངལ་མཚམས"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "སར་བར་གྱིས་མà½à½´à½‘་ལམ་འདི་à½à¼‹à½–སྡམས་à½à½ºà¼‹à½¡à½¼à½‘པ་ཨིནà¼"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "ལན་གྱིས་ གནད་à½à½¼à½„ས་གུར་ལས་ ལུད་སོང་སྟེ་ཡོདཔ་ཨིནà¼"
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "གནད་སྤེལ་ལམ་ལུགས་ ངན་ཅནà¼"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "སོ་ཀེཊི་ཅིག་གསར་བསà¾à¾²à½´à½“་འབད་མ་ཚུགས་པར་ཡོདཔ་ཨིནà¼"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "གནད་སྡུད་སོ་ཀེཊི་མà½à½´à½‘་མ་ཚུགས་པར་ཡོདཔ་ཨིན་ མà½à½´à½‘་ལམ་ངལ་མཚམསà¼"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "བྱ་ཡུལ་གྱི་སོ་ཀེཊི་མà½à½´à½‘་མ་ཚུགསà¼"
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo་འདི་གིས་ཉན་ནིའི་སོ་ཀེཊི་ཅིག་ལེན་མ་ཚུགསà¼"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "སོ་ཀེཊི་ཅིག་བསྡམས་མ་ཚུགསà¼"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "སོ་ཀེཊི་གུར་ཉེན་མ་ཚུགསà¼"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "སོ་ཀེཊི་གི་མིང་འདི་གà½à½“་འབེབས་བཟོ་མ་ཚུགསà¼"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "འདྲེན་ལམ་གྱི་བརྡ་བཀོད་འདི་བà½à½„་མ་ཚུགསà¼"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "མ་ཤེས་པའི་à½à¼‹à½–ྱང་གི་རིགས་ཚན་%u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "ཨི་པི་ཨར་ཊི་ འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོད་ སར་བར་གིས་སླབ་མས:%s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "གནད་སྡུད་སོ་ཀེཊི་ མà½à½´à½‘་ནི་ངལ་མཚམས་བྱུང་ནུག"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "མà½à½´à½‘་ལམ་འདི་དང་ལེན་འབད་མ་ཚུགསà¼"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "ཡིག་སྣོད་ལུ་་དྲྭ་རྟགས་བཀལ་བའི་བསྒང་དཀའ་ངལà¼"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "ཡིག་སྣོད་ལེན་མ་ཚུགས་ སར་བར་'%s'གིས་སླབ་མས"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "གནད་སྡུད་སོ་ཀེཊི་ངལ་མཚམསà¼"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "གནད་སྡུད་གནས་སོར་དེ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོད་ སར་བར་'%s'་གིས་སླབ་མསà¼"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "འདྲི་དཔྱདà¼"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "ལས་བཀོལ་འབད་མ་ཚུགསà¼"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "ཉུང་མà½à½ à¼‹à½¢à½„་ནུས་མེད་ཀྱི་མིང་རྟགས་ཅིག་གདོང་à½à½´à½‚་བྱུང་སྟེ་ཡོདཔ་ཨིནà¼"
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"ནང་འà½à½¼à½‘་འཛོལ་བ: མིང་རྟགས་འདི་ལེགས་ཤོམ་ཅིག་འདུག་ འདི་འབདà½à¼‹à½‘་མཛུབ་རྗེས་ལྡེ་མིག་དེ་གà½à½“་འབེབས་བཟོ་"
+"མ་ཚུགས?!"
+
+#: methods/gpgv.cc
+#, fuzzy
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"མིང་རྟགས་བདེན་སྦྱོར་འབད་ནི་ལུ་'%s'འདི་ལག་ལེན་འà½à½–་མ་ཚུགས༠(gnupg་དེ་à½à½žà½²à¼‹à½–ཙུགས་འབད་ཡོདཔ་ཨིན་"
+"ན�)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "apt-key་ལག་ལེན་འà½à½–་ནི་ལུ་མ་ཤེས་པའི་འཛོལ་བ་à¼"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "འོག་གི་མིང་རྟགས་ཚུ་ནུས་མེད་ཨིན་པསà¼:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"འོག་གི་མིང་རྟགས་ཚུ་བདེན་སྦྱོར་་འབད་མ་ཚུགས་ག་ཅི་སྦེ་ཟེར་བ་ཅིན་མི་དམང་ལྡེ་མིག་དེ་འà½à½¼à½–་མི་ཚུགས་པས:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "ཡིག་སྣོད་འདི་ལུ་འབྲིà½à¼‹à½‘་འཛོལ་བà¼"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "སར་བར་ནང་ལས་ལྷག་པའི་བསྒང་འཛོལ་བ༠à½à½‚་རིང་མཇུག་གི་མà½à½´à½‘་ལམ་དེ་à½à¼‹à½–སྡམསà¼"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "སར་བར་ནང་ལས་ལྷག་པའི་བསྒང་འཛོལ་བà¼"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "ཡིག་སྣོད་ལུ་འབྲིà½à¼‹à½‘་འཛོལ་བà¼"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "སེལ་འà½à½´à¼‹à½ à½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "མà½à½´à½‘་ལམ་ངལ་མཚམས་འབད་ཡོདà¼"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "ཨའུཊི་པུཊི་ཡིག་སྣོད་ལུ་འབྲིà½à¼‹à½‘་འཛོལ་བà¼"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "%s་ཡིག་སྣོད་འདི་à½à¼‹à½•à¾±à½ºà¼‹à½˜à¼‹à½šà½´à½‚སà¼"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "%s་ཡིག་སྣོད་འདི་à½à¼‹à½•à¾±à½ºà¼‹à½˜à¼‹à½šà½´à½‚སà¼"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr ""
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "ཆུ་ཚོད་ལེགས་བཅོས་གཞི་སྒྲིག་འབà½à¼‹à½“ི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "དུས་སུ་མ་འབབ་པ་རང་མà½à½´à½‘་ལམ་འདི་ག་བསྡམས་ཡོདà¼"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "མ་ཚང་པའི་རྟེན་འབྲེལ་ཚུ༠--fix-broken ལག་ལེན་འà½à½–་སྟེ་འབད་རྩོལ་བསà¾à¾±à½ºà½‘à¼"
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "འདི་ཚུ་ནོར་བཅོས་འབད་ནིའི་དོན་ལུ་à½à¾±à½¼à½‘་ཀྱི་'apt --fix-broken install'དེ་གཡོག་བཀོལ་དགོཔ་འོང་:"
+
+#~ msgid "(not found)"
+#~ msgstr "(མ་à½à½¼à½–à¼)"
+
+#~ msgid " Package pin: "
+#~ msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གྱི་à½à½–་གཟེར:"
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "འོག་གི་ ཨའི་ཌི་་ ལྡེ་མིག་ཚུ་གི་དོན་ལུ་མི་དམང་གི་ལྡེ་མིག་འདི་འà½à½¼à½–་མི་ཚུགས་པས:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "སྣོད་à½à½¼à¼‹%s་འདི་à½à¼‹à½•à¾±à½¼à½‚ས་སྒྱུར་དེ་ཡོདà¼"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr "%sà½à½´à½˜à¼‹à½¦à¾’ྲིལ་འདི་འà½à½¼à½–་མ་ཚུགསཔ་ལས་བརྟེན་ %sགི་དོན་ལུ་%s རྟེན་འབྲེལ་དེ་ངལ་རང་མ་ཚུགས་པསà¼"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr "%sà½à½´à½˜à¼‹à½¦à¾’ྲིལ་འདི་འà½à½¼à½–་མ་ཚུགསཔ་ལས་བརྟེན་ %sགི་དོན་ལུ་%s རྟེན་འབྲེལ་དེ་ངལ་རང་མ་ཚུགས་པསà¼"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "%s:གི་དོན་ལུ་%s་རྟེན་འབྲེལ་དེ་གི་རེ་བ་སà¾à½¼à½„་ནི་འདི་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདཔ་ཨིན་ གཞི་བཙུགས་འབད་ཡོད་པའི་"
+#~ "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་%s་དེ་གནམ་མེད་ས་མེད་གསརཔ་ཨིན་པསà¼"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "%s གི་དོན་ལུ་%s་རྟེན་འབྲེལ་འདི་གི་རེ་བ་སà¾à½¼à½„་མི་ཚུགས་ནུག་ག་ཅི་འབད་ཟེར་བ་ཅིན་à½à½´à½˜à¼‹à½¦à¾’རིལ་%s་གི་འà½à½¼à½“་"
+#~ "རིམ་ཚུ་འà½à½¼à½–་མ་ཚུགསཔ་ལས་བརྟེན་འà½à½¼à½“་རིམ་དགོས་མà½à½¼à¼‹à½šà½´à¼‹à½‚ི་རེ་བ་དོ་སà¾à½¼à½„་མ་ཚུགས་པསà¼"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr "%sà½à½´à½˜à¼‹à½¦à¾’ྲིལ་འདི་འà½à½¼à½–་མ་ཚུགསཔ་ལས་བརྟེན་ %sགི་དོན་ལུ་%s རྟེན་འབྲེལ་དེ་ངལ་རང་མ་ཚུགས་པསà¼"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "%s: %s་གི་དོན་ལུ་་%s་རྟེན་འབྲེལ་འདི་ངལ་རངས་འབད་ནི་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ནུག"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr " %s་གི་དོན་ལུ་བཟོ་བརྩིགས་-རྟེན་འབྲེལ་འདི་ངལ་རངས་མ་ཚུགས་པསà¼"
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "%s་འབྲེལ་འà½à½´à½‘་མེདཔ་བཟོ་ནི་ལུ་དཀའ་ངལà¼"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "%s་འབྲེལ་ལམ་མེད་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདཔà¼"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "ལག་ལེནà¼: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ " apt-cacheའདི་གནས་རིམ་དམའ་དྲག་གི་ལག་ཆས་ APT's binary\n"
+#~ "་ འདྲ་མཛོད་ཡིག་སྣོད་གཡོག་བཀོལ་དོན་ལུ་ལག་ལེན་འà½à½–་ནི་དང་་དེ་ཚུ་ནང་ལས་བརྡ་དོན་འདྲི་དཔྱད་འབད་ནིའི་"
+#~ "དོན་ལུ་ཨིནà¼\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "གདམ་à½à¼‹à½šà½´à¼‹:\n"
+#~ " -h འདི་གིས་ཚིག་ཡིག་ལུ་ཆ་རོགས་འབདà½à¼‹à½¨à½²à½“à¼.\n"
+#~ " -p=? འདི་འབྱུང་à½à½´à½„ས་འའདྲ་མཛོད་ཨིནà¼.\n"
+#~ " -s=? འདི་འབྱུང་à½à½´à½„ས་འདྲ་མཛོད་ཨིནà¼.\n"
+#~ " -q འདི་གིས་ ཡར་འཕེལ་བརྡ་སྟོན་པ་འདི་ལྕོགས་མིན་བཟོà½à¼‹à½¨à½²à½“à¼.\n"
+#~ " -i འདི་གིས་ མ་ཚང་པའི་བརྡ་བཀོད་ཚུ་གི་དོན་ལུ་ གལ་ཅན་གྱི་ཌེཔསི་རà¾à¾±à½„མ་ཅིག་སྟོནà¼.\n"
+#~ " -c=? འདི་གིས་ འ་ནི་རིམ་སྒྲིག་ཡིག་སྣོད་འདི་ལྷགཔ་ཨིནà¼.\n"
+#~ " -o=? འདི་གིས་ མà½à½´à½“་སྒྲིག་རིམ་སྒྲིག་གི་གདམ་à½à¼‹à½ à½‘ི་གཞི་སྒྲིག་འབདà½à¼‹à½¨à½²à½“་ དཔེར་ན་ eg -o dir::"
+#~ "cache=/tmp\n"
+#~ " ཧེང་བཀལ་བརྡ་དོན་གི་དོན་ལུ་ ཨེ་apt-cache(8)དང་apt.conf(5)ལག་à½à½¼à½‚་ཤོག་ལེབ་ཚུ་བལྟà¼.\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "གདམ་à½à¼‹à½šà½´:\n"
+#~ " -h འདི་གིས་ཚིག་ཡིག་ལུ་གྲོགས་རམ་འབདà½à¼‹à½¨à½²à½“à¼\n"
+#~ " -c=? འདི་གིས་འ་ནི་རིམ་སྒྲིག་ཡིག་སྣོད་འདི་ལྷགཔ་ཨིནà¼\n"
+#~ " -o=? མà½à½´à½“་སྒྲིག་གི་རིམ་སྒྲིག་འདི་གཞི་སྒྲིག་འབདà½à¼‹à½¨à½²à½“་ དཔེར་ན་-o dir::cache=/tmp་བཟུམà¼\n"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "ལག་ལེན: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs་ འདི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གི་ཡིག་སྣོད་ཚུ་དབྱེ་སེལ་འབད་ནི་ལུ་ འཇམ་སམ་གྱི་ལག་ཆས་ཅིག་ཨིན༠-"
+#~ "s གདམ་à½à¼‹à½ à½‘ི་ ཡིག་སྣོད་ཀྱི་དབྱེ་à½à½‚་ག་ཅི་བཟུམ་ཅིག་ཨིན་ན\n"
+#~ "་བརྡ་སྟོན་འབད་ནིའི་དོན་ལུ་ལག་ལེན་འà½à½–་སྟེ་ཡོདཔ་ཨིནà¼\n"
+#~ "\n"
+#~ "གདམ་à½à¼‹à½šà½´:\n"
+#~ " -h འ་ནི་འདི་གིས་ཚིག་ཡིག་ལུ་གྲོགས་རམ་འབདà½à¼‹à½¨à½²à½“à¼\n"
+#~ " -s འདི་གིས་འབྱུང་à½à½´à½„ས་ ཡིག་སྣོད་གསོག་འཇོག་འབད་དོན་ལུ་ལག་ལེན་འà½à½–་ཨིནà¼\n"
+#~ " -c=? འདི་གིས་འ་ནི་རིམ་སྒྲིག་ཡིག་སྣོད་འདི་ལྷགཔ་ཨིནà¼\n"
+#~ " -o=? འདི་གིས་ མà½à½´à½“་སྒྲིག་ རིམ་སྒྲིག་གི་གདམ་à½à¼‹à½šà½´à¼‹à½à½žà½²à¼‹à½¦à¾’ྲིག་འབདà½à¼‹à½¨à½²à½“་ དཔེར་ན་-o dir::"
+#~ "cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "ཆ་ལག་ལས་སྦྱོར་དེ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ནུག"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "གི་དོན་ལུ་འབྱུང་à½à½´à½„ས་ལེན་ནི་ལུ་ཉུང་མà½à½ à¼‹à½¢à½„་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གཅིག་ལེན་དགོ"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "རྒྱུད་དུང་ཚུ་གསར་བསà¾à¾²à½´à½“་འབད་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "ཇི་ཛིཔ་འདི་ལག་ལེན་འà½à½–་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#, fuzzy
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s་གི་དོན་ལུ་%s %sགུར་ཕྱོགས་སྒྲིག་འབད་ཡོད་པའི་%s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "ཡིག་སྣོད་*་ གསར་བསà¾à¾²à½´à½“་འབད་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "བཟོ་ཉེས་འགྱུར་བའི་གྲལ་à½à½²à½‚་%lu་ འབྱུང་à½à½¼à¼‹à½¡à½²à½‚་ %s(ཡུ་ཨར་ཨའི་ མིང་དཔྱད་འབད་ནི)གི་ནང་ནà¼"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr "བཟོ་ཉེས་འགྱུར་བའི་གྲལ་à½à½²à½‚་%lu་ འབྱུང་à½à½´à½„ས་à½à½¼à¼‹à½¡à½²à½‚་%s(dist མིང་དཔྱད་འབད་ནི་)ནང་ནà¼"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "བཟོ་ཉེས་འགྱུར་བའི་གྲལ་à½à½²à½‚་ %lu་ འབྱུང་à½à½´à½„ས་à½à½¼à¼‹à½¡à½²à½‚་%s (dist)གི་ནང་ནà¼"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "བཟོ་ཉེས་འགྱུར་བའི་གྲལ་à½à½²à½‚་%lu་ འབྱུང་à½à½´à½„ས་à½à½¼à¼‹à½¡à½²à½‚་%s(dist མིང་དཔྱད་འབད་ནི་)ནང་ནà¼"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "བཟོ་ཉེས་འགྱུར་བའི་གྲལ་à½à½²à½‚་%lu་ འབྱུང་à½à½´à½„ས་à½à½¼à¼‹à½¡à½²à½‚་%s(dist མིང་དཔྱད་འབད་ནི་)ནང་ནà¼"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr "བཟོ་ཉེས་འགྱུར་བའི་གྲལ་à½à½²à½‚་%lu་ འབྱུང་à½à½´à½„ས་à½à½¼à¼‹à½¡à½²à½‚་%s(dist མིང་དཔྱད་འབད་ནི་)ནང་ནà¼"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "བཟོ་ཉེས་འགྱུར་བའི་གྲལ་à½à½²à½‚་ %lu འབྱུང་à½à½´à½„ས་à½à½¼à¼‹à½¡à½²à½‚་ %s (ཡུ་ཨར་ཨའི་)གི་ནང་ནà¼"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "བཟོ་ཉེས་འགྱུར་བའི་གྲལ་à½à½²à½‚་ %lu་ འབྱུང་à½à½´à½„ས་à½à½¼à¼‹à½¡à½²à½‚་%s (dist)གི་ནང་ནà¼"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "བཟོ་ཉེས་འགྱུར་བའི་གྲལ་à½à½²à½‚་%lu་ འབྱུང་à½à½¼à¼‹à½¡à½²à½‚་ %s(ཡུ་ཨར་ཨའི་ མིང་དཔྱད་འབད་ནི)གི་ནང་ནà¼"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "བཟོ་ཉེས་འགྱུར་བའི་གྲལ་à½à½²à½‚་%lu་ འབྱུང་à½à½´à½„ས་à½à½¼à¼‹à½¡à½²à½‚་%s(ཡང་དག་ dist)གི་ནང་ནà¼"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "བཟོ་ཉེས་འགྱུར་བའི་གྲལ་à½à½²à½‚་%lu་ འབྱུང་à½à½´à½„ས་à½à½¼à¼‹à½¡à½²à½‚་%s(dist མིང་དཔྱད་འབད་ནི་)ནང་ནà¼"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "ཡིག་སྣོད་རྟེན་འབྲེལ་འདི་ཚུ་བཟོ་སྦྱོར་འབད་བའི་བསྒང་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ %s %s ་འདི་མ་à½à½¼à½–་པསà¼"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "འབྱུང་à½à½´à½„ས་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གྱི་à½à½¼à¼‹à½¡à½²à½‚་%s་དེ་ངོ་བཤུས་འབད་མ་ཚུགསà¼"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "ཡིག་སྣོད་བྱིན་མི་ཚུ་བསྡུ་ལེན་འབད་དོà¼"
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "%s (༡་)་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཡིག་སྣོད་འདི་མིང་དཔྱད་འབད་མ་ཚུགསà¼"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "%sསིལ་ཚོང་པ་སྡེབ་ཚན་གྱི་ནང་ན་མཛུབ་རྗེས་མིན་འདུག"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "རྟེན་འབྲེལ་à½à½¼à½“་རིམ་བར་སྟོང་གྱི་བསྡོམས:"
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr " %s་ནང་à½à¾±à½¼à½‘་ལུ་བར་སྟོང་ཚུ་ལངམ་སྦེ་མིན་འདུག་"
+
+#~ msgid "Done"
+#~ msgstr "འབད་ཚར་ཡིà¼"
+
+#, fuzzy
+#~ msgid "No keyring installed in %s."
+#~ msgstr "གཞི་བཙུགས་བར་བཤོལ་འབད་དོà¼"
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "ནང་འགོད་འཛོལ་བ་ ཡར་བསà¾à¾±à½ºà½‘་ཀྱི་ཅ་ཆས་ཆ་མཉམ་མེདཔ་à½à½£à¼‹à½¡à½¼à½‘à¼"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s འདི་ནུས་ཅན་གྱི་ ཌི་ཨི་བི་ཅིག་མེན་པསà¼"
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ " %s སི་ཌི-རོམ་སྦྱར་བརྩེགས་ཀྱི་ས་ཚིགས་ལག་ལེན་འà½à½–་དོà¼\n"
+#~ "སི་ཌི་-རོམ་སྦྱར་བརྩེགས་འབད་དོà¼\n"
+
+#, fuzzy
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr "འ་ནི་འདི་ཌི་ཨི་བི་ཡིག་མཛོད་ནུས་ཅན་ཅིག་མེན་པས་ འདི་ལུ་'%s'ཡང་ན་'%s'འà½à½´à½¦à¼‹à½˜à½²à¼‹à½˜à½²à½“་འདུག"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "ཨེམ་ཌི་༥་ à½à¾±à½¼à½“་བསྡོམས་མ་མà½à½´à½“་པà¼"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ " %s་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གི་དོན་ལུ་ང་་གི་ཡིག་སྣོད་ཅིག་ག་ཡོད་འཚོལ་མི་འà½à½¼à½–་པས༠འདི་འབདà½à¼‹à½£à½¦à¼‹à½à¾±à½¼à½‘་ཀྱི་ལག་à½à½¼à½‚་"
+#~ "ལས་ འ་ནི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འདི་གི་དཀའ་ངལ་སེལ་དགོཔ་འདུག "
+
+#, fuzzy
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "རིམ་སྒྲིག་ཡིག་སྣོད་%s་འདི་à½à¼‹à½•à¾±à½ºà¼‹à½‘ོà¼"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "%s་རྩ་བསà¾à¾²à½‘་གà½à½„་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "%s་གསར་བསà¾à¾²à½´à½“་འབད་མ་ཚུགསà¼"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "%sinfo་ངོ་བཤུས་འབད་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr "info ་དང་ temp་སྣོད་à½à½¼à¼‹à½šà½´à¼‹à½¡à½²à½‚་སྣོད་རིམ་ལུགས་གཅིག་གུར་ལུ་བཞག་དགོཔ་ཨིནà¼"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "བདག་སà¾à¾±à½¼à½„་སྣོད་à½à½¼à¼‹ %sinfo་ལུ་བསྒྱུར་བཅོས་འབད་ནི་ འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "ནང་འà½à½¼à½‘་འཛོལ་བ་གིས་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་མིང་ཅིག་ལེན་དོà¼"
+
+#~ msgid "Reading file listing"
+#~ msgstr "ཡིག་à½à½¼à¼‹à½–ཀོད་འབད་མི་ཚུ་ལྷག་དོà¼"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "'%sinfo/%s'ཡིག་སྣོད་à½à½¼à½‚་ཡིག་à½à¼‹à½•à¾±à½ºà¼‹à½“ི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོད༠à½à¾±à½¼à½‘་ཀྱི་ཡིག་སྣོད་འདི་སོར་ཆུད་འབད་མ་"
+#~ "ཚུགས་པ་ཅིན་ འདི་སྟོངམ་བཟོ་བཞིནམ་ལས་ དེ་འཕྲལ་ལས་རང་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གི་འà½à½¼à½“་རིམ་གཅིགཔ་འདི་རང་ལོང་གཞི་"
+#~ "བཙུགས་འབདà¼"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "%sinfo/%s་ཡིག་སྣོད་à½à½¼à¼‹à½–ཀོད་འདི་ལྷག་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "ནང་འà½à½¼à½‘་འཛོལ་བ་གིས་མà½à½´à½‘་མཚམས་ལེན་དོà¼"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "à½à¼‹à½•à¾±à½¼à½‚ས་ཡིག་སྣོད་%sdiversionsཚུ་à½à¼‹à½•à¾±à½ºà¼‹à½“ི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "à½à¼‹à½•à¾±à½¼à½‚ས་ཡིག་སྣོད་འདི་ངན་ཅན་འགྱོ་ནུག"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "%s་à½à¼‹à½•à¾±à½¼à½‚ས་ཡིག་སྣོད་ནང་ནུས་མེད་གྲལ་à½à½²à½‚"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "ནང་འà½à½¼à½‘་འཛོལ་ à½à¼‹à½•à¾±à½¼à½‚ས་ཅིག་à½à¼‹à½¦à¾à½¼à½„་རà¾à¾±à½–་དོà¼"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "པི་ཀེ་ཇི་ འདྲ་མཛོད་དེ་ དང་པ་རང་འགོ་བྱེད་འབད་དགོ"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ཅིག་འཚོལ་་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདཔ་ཨིན:མགོ་ཡིག་ པར་ལེན%lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "གནད་ཚད་ཡིག་སྣོད་དབྱེ་ཚན་ནང་ལུ་ རིམ་སྒྲིག་ཡིག་སྣོད་བྱང་ཉེས༠པར་ལེན་ %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "ཨེམ་ཌི་༥་ འཛོལ་བ་མིང་དཔྱད་འབད་དོ༠པར་ལེན་ %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "%s་ལུ་བསྒྱུར་བཅོས་འབད་མ་ཚུགསà¼"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "ནུས་ཅན་ཡོད་པའི་ཚད་འཛིན་ཡིག་སྣོད་ཅིག་ག་ཡོད་འཚོལ་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདཔ་ཨིནà¼"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "%s་གི་དོན་ལུ་རྒྱུད་དུང་འདི་à½à¼‹à½•à¾±à½ºà¼‹à½˜à¼‹à½šà½´à½‚སà¼"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "%s་ལས་སྦྱོར་ནང་ལས་འཛོལ་བ་ཚུ་ལྷག"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "%u་ཡིག་འབྲུ་ཚུ་གི་ལྟག་ལས་མགོ་ཡིག་རà¾à¾±à½„་པ་ཅིག་à½à½¼à½–་ཡོདà¼"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "བཟོ་ཉེས་གྱུར་བའི་ཟུར་བཞག་%s གྲལ་à½à½²à½‚་%lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "བཟོ་ཉེས་གྱུར་བའི་ཟུར་བཞག་%sགྲལ་à½à½²à½‚%lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "བཟོ་ཉེས་གྱུར་བའི་ཟུར་བཞག་%sགྲལ་à½à½²à½‚%lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "ཨེབ་བཤོལ་འཕྲུལ་ཆསà¼"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "ལྷག་ ད་ལྟོ་ཡང་ལྷག་ནི་ལུ་%lu་ཡོད་འདི་འབདà½à¼‹à½‘་ཅི་ཡང་ལྷག་ལུས་མིན་འདུག"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "འབྲི་ ད་ལྟོ་ཡང་འབྲི་ནི་ལུ་%lu་ཡོད་འདི་འདབà½à¼‹à½‘་འབད་མ་ཚུགསà¼"
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "%s (à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གསརཔ་)བཟོ་སྦྱོར་འབད་བའི་བསྒང་འཛོལ་བ་ཅིག་བྱུང་ནུག"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "%s (ལག་ལེན་འà½à½´à½˜à¼‹à½¦à¾’ྲིལ་ ༡་)བཟོ་སྦྱོར་འབད་བའི་བསྒང་འཛོལ་བ་ཅིག་འà½à½¼à½“་ནུག"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "%s (ཡིག་སྣོད་འà½à½¼à½“་རིམ་གསརཔ་ ༡)བཟོ་སྦྱོར་འབད་བའི་བསྒང་འཛོལ་བ་ཅིག་བྱུང་ནུག"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "%s (ལག་ལེན་འà½à½´à½˜à¼‹à½¦à¾’ྲིལ་ ༢་)དེ་བཟོ་སྦྱོར་འབད་བའི་བསྒང་འཛོལ་བ་ཅིག་འà½à½¼à½“་ནུག"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "%s (ཡིག་སྣོད་འà½à½¼à½“་རིམ་གསརཔ་ ༡)བཟོ་སྦྱོར་འབད་བའི་བསྒང་འཛོལ་བ་ཅིག་བྱུང་ནུག"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr " %s (འà½à½¼à½“་རིམ་གསརཔ་ ༡་)བཟོ་སྦྱོར་འབད་བའི་བསྒང་འཛོལ་བ་ཅིག་བྱུང་ནུག"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "%s (ལག་ལེན་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་ ༣་)དེ་བཟོ་སྦྱོར་འབད་བའི་བསྒང་འཛོབ་ཅིག་བྱུང་ནུག"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "%s (ཡིག་སྣོད་འà½à½¼à½“་རིམ་གསརཔ་ ༡)བཟོ་སྦྱོར་འབད་བའི་བསྒང་འཛོལ་བ་ཅིག་བྱུང་ནུག"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "%s (པི་ཀེ་ཇི་འཚོལ་ནི)དེ་བཟོ་སྦྱོར་འབད་བའི་བསྒང་འཛོལ་བ་ཅིག་བྱུང་ནུག"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "%s (CollectFileProvides)དེ་བཟོ་སྦྱོར་འབད་བའི་བསྒང་འཛོལ་བ་ཅིག་བྱུང་ནུག"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "ནང་འà½à½¼à½‘་འཛོལ་བ་ འà½à½´à½¦à¼‹à½˜à½²à¼‹à½‚་ཡོད་འཚོལ་མ་à½à½¼à½–à¼"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr ""
+#~ "E: Acquire::gpgv::Options་ནང་ལས་ཀྱི་སྒྲུབ་རྟགས་ཀྱི་à½à½¼à¼‹à½¡à½²à½‚་དེ་གནམ་མེད་ས་མེད་རིངམ་འདུག ཕྱིར་"
+#~ "འà½à½¼à½“་དོà¼"
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "%s (འà½à½¼à½“་རིམ་གསརཔ་ ༢)བཟོ་སྦྱོར་འབད་བའི་བསྒང་འཛོལ་བ་ཅིག་བྱུང་ནུག"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "བཟོ་ཉེས་འགྱུར་བའི་གྲལ་à½à½²à½‚་%u་ འབྱུང་à½à½´à½„ས་à½à½¼à¼‹à½¡à½²à½‚་%s(སིལ་ཚོང་པ་ ཨའི་ཌི)གི་ནང་ནà¼"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "'%s'ལྡེ་འà½à½¼à½¢à¼‹à½ à½‘ི་འཛུལ་སྤྱོད་འབད་མ་ཚུགསà¼"
+
+#, fuzzy
+#~ msgid "Could not patch file"
+#~ msgstr "%s་ཡིག་སྣོད་འདི་à½à¼‹à½•à¾±à½ºà¼‹à½˜à¼‹à½šà½´à½‚སà¼"
+
+#~ msgid " %4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#, fuzzy
+#~ msgid "Processing triggers for %s"
+#~ msgstr "སྣོད་à½à½¼à¼‹%s་ལས་སྦྱོར་འབདà½à¼‹à½‘་འཛོལ་བ་འà½à½¼à½“་ཡིà¼"
+
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "ད་ཚུན་à½à¾±à½¼à½‘་ཀྱི་བཀོལ་སྤྱོད་རà¾à¾±à½„་པ་ཅིག་རà¾à¾±à½„་པ་ རà¾à¾±à½„མ་ཅིག་ཞུ་བ་འབད་ཡོདཔ་ལས་ ཧ་ཅང་གི་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་འདི་གཞི་"
+#~ "བཙུགས་འབད་མི་བà½à½´à½–་ནི་དེ་སྲིད་ནི་བཟུམ་ཅིག་དང་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་དི་གི་à½à¼‹à½à½‘་དུ་རà¾à¾±à½ºà½“་གྱི་སྙན་ཞུ་འདི་བཀང་བཞག་དགོ"
+
+#, fuzzy
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "གྲལ་à½à½²à½‚་%d་འདི་གནམ་མེད་ས་མེད་རིངམ་འདུག(%d་མà½à½¼à¼‹à½¤à½¼à½¦)"
+
+#, fuzzy
+#~ msgid "Line %d too long (max %d)"
+#~ msgstr "གྲལ་à½à½²à½‚་%d་འདི་གནམ་མེད་ས་མེད་རིངམ་འདུག(%d་མà½à½¼à¼‹à½¤à½¼à½¦)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc1)"
+#~ msgstr "%s (ཡིག་སྣོད་འà½à½¼à½“་རིམ་གསརཔ་ ༡)བཟོ་སྦྱོར་འབད་བའི་བསྒང་འཛོལ་བ་ཅིག་བྱུང་ནུག"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc2)"
+#~ msgstr "%s (ཡིག་སྣོད་འà½à½¼à½“་རིམ་གསརཔ་ ༡)བཟོ་སྦྱོར་འབད་བའི་བསྒང་འཛོལ་བ་ཅིག་བྱུང་ནུག"
+
+#, fuzzy
+#~ msgid "Stored label: %s \n"
+#~ msgstr "གསོག་འཇོག་འབད་ཡོད་པའི་à½à¼‹à½¡à½²à½‚:%s \n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found %i package indexes, %i source indexes, %i translation indexes and "
+#~ "%i signatures\n"
+#~ msgstr "%i་à½à½´à½˜à¼‹à½¦à¾’ྲིལ་གྱི་ཟུར་à½à½¼à¼‹à½šà½´à¼‹à½à½¼à½–་ཅི་ %i་འབྱུང་à½à½´à½„ས་ཟུར་à½à½¼à¼‹à½šà½´à¼‹à½‘ང་ %iམིང་རྟགས་ཚུà¼\n"
+
+#, fuzzy
+#~ msgid "openpty failed\n"
+#~ msgstr "སེལ་འà½à½´à¼‹à½ à½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ཡོདà¼"
+
+#~ msgid "File date has changed %s"
+#~ msgstr "ཡིག་སྣོད་ཚེས་གྲངས་འདི་གིས་%sདེ་བསྒྱུར་བཅོས་འབད་ནུག"
diff --git a/po/el.po b/po/el.po
new file mode 100644
index 000000000..e981f3a16
--- /dev/null
+++ b/po/el.po
@@ -0,0 +1,4238 @@
+# translation of apt_po_el.po to Greek
+# translation of apt_po_el.po to
+# Greek Translation of APT.
+# This file is put in the public domain.
+#
+# Fanis Dokianakis <madf@hellug.gr>, 2003.
+# Konstantinos Margaritis <markos@debian.org>, 2003, 2004, 2006.
+# George Papamichelakis <george@step.gr>, 2004.
+# George Papamichalakis <george@step.gr>, 2004.
+# Greek Translation Team <debian-l10n-greek@lists.debian.org>, 2005.
+# quad-nrg.net <galaxico@quad-nrg.net>, 2005.
+# Serafeim Zanikolas <serzan@hellug.gr>, 2008.
+# quad-nrg.net <yodesy@quad-nrg.net>, 2008.
+# Θανάσης Îάτσης <natsisthanasis@gmail.com>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2008-08-26 18:25+0300\n"
+"Last-Translator: Θανάσης Îάτσης <natsisthanasis@gmail.com>\n"
+"Language-Team: Greek <debian-l10n-greek@lists.debian.org>\n"
+"Language: el\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Μη έγκυÏη υπογÏαφή αÏχειοθήκης"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Σφάλμα κατά την ανάγνωση της επικεφαλίδας του μέλους της αÏχειοθήκης"
+
+#: apt-inst/contrib/arfile.cc
+#, fuzzy, c-format
+msgid "Invalid archive member header %s"
+msgstr "Μη έγκυÏη επικεφαλίδα μέλος της αÏχειοθήκης"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Μη έγκυÏη επικεφαλίδα μέλος της αÏχειοθήκης"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Η αÏχειοθήκη είναι Ï€Î¿Î»Ï Î¼Î¹ÎºÏή"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Αποτυχία ανάγνωσης των επικεφαλίδων της αÏχειοθήκης"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "ΑδÏνατη η εÏÏεση του πακέτου %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "ΚατεστÏαμμένη αÏχειοθήκη"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Το Checksum του tar απέτυχε, η αÏχείοθήκη είναι κατεστÏαμμένη"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Άγνωστη επικεφαλίδα TAR Ï„Ïπος %u, μέλος %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Αυτό δεν είναι ένα έγκυÏο αÏχείο DEB, αγνοείται το μέλος '%s'"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "ΕσωτεÏικό Σφάλμα, αδυναμία ÎµÎ½Ï„Î¿Ï€Î¹ÏƒÎ¼Î¿Ï Ï„Î¿Ï… μέλους %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Μη αναλÏσιμο αÏχείο control"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Αποτυχία εγγÏαφής του αÏχείου %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Αποτυχία στο κλείσιμο του αÏχείου %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Η διαδÏομή %s έχει υπεÏβολικό μήκος"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Αποσυμπίεση του %s πάνω από μια φοÏά"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "Ο φάκελος %s έχει εκτÏαπεί"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Το πακέτο Ï€Ïοσπαθεί να γÏάψει στον Ï€ÏοοÏισμό εκτÏοπής %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Η διαδÏομή εκτÏοπής έχει υπεÏβολικό μήκος"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Αποτυχία εÏÏεσης της κατάστασης του %s."
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Αποτυχία μετονομασίας του %s σε %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "Ο φάκελος %s αντικαθίσταται από ένα μη-φάκελο"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Αποτυχία ÎµÎ½Ï„Î¿Ï€Î¹ÏƒÎ¼Î¿Ï Ï„Î¿Ï… κόμβου στην ομάδα hash του"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Η διαδÏομή έχει υπεÏβολικό μήκος"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Αντικατάσταση πακέτου χωÏίς καμία έκδοση %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Το αÏχείο %s/%s αντικαθιστά αυτό στο πακέτο %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "ΑδÏνατη η ανάγνωση του %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "ΑδÏνατη η εÏÏεση της κατάστασης του %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "Κλήση του DropNode σε έναν ήδη συνδεδεμένο κόμβο"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Αποτυχία ÎµÎ½Ï„Î¿Ï€Î¹ÏƒÎ¼Î¿Ï Ï„Î¿Ï… στοιχείου hash!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Αδυναμία ÎµÎ½Ï„Î¿Ï€Î¹ÏƒÎ¼Î¿Ï ÎµÎºÏ„Ïοπής"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "ΕσωτεÏικό Σφάλμα στο AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "ΠÏοσπάθεια για αντικατάσταση εκτÏοπής, %s -> %s και %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Διπλή Ï€Ïοσθήκη εκτÏοπής %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Διπλό αÏχείο Ïυθμίσεων %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Ο φάκελος %s έχει εκτÏαπεί"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Ο φάκελος %s έχει εκτÏαπεί"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Ο φάκελος %s έχει εκτÏαπεί"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Ο φάκελος %s έχει εκτÏαπεί"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "Ο φάκελος %s έχει εκτÏαπεί"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Αποτυχία ανάγνωσης του %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Ανόμοιο MD5Sum"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "απέτυχε η μετονομασία, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Ανόμοιο μέγεθος"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "Μη έγκυÏη λειτουÏγία %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Σφάλμα εγγÏαφής"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"ΑδÏνατος ο εντοπισμός ενός αÏχείου για το πακέτο %s. Αυτό ίσως σημαίνει ότι "
+"χÏειάζεται να διοÏθώσετε χειÏοκίνητα το πακέτο. (λόγω χαμένου αÏχείου)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"ΚατεστÏαμμένα αÏχεία ευÏετηÏίου πακέτων. Δεν υπάÏχει πεδίο Filename: στο "
+"πακέτο %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Changelog για %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Ο οδηγός μεθόδου %s δεν μποÏεί να εντοπιστεί."
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "Ελέγξτε αν είναι εγκαταστημένο το πακέτο 'dpkg-dev'.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Η μέθοδος %s δεν εκκινήθηκε σωστά"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+"ΠαÏακαλώ εισάγετε το δίσκο με ετικέτα '%s' στη συσκευή '%s' και πατήστε "
+"enter."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "List directory %spartial is missing."
+msgstr "Ο φάκελος λιστών %spartial αγνοείται."
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Ο φάκελος αÏχειοθηκών %spartial αγνοείται."
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Unable to lock directory %s"
+msgstr "ΑδÏνατο το κλείδωμα του καταλόγου"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "Ο Ï„Ïπος αÏχείου ευÏετηÏίου '%s' δεν υποστηÏίζεται"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "ΑδÏνατη η αλλαγή σε %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Κατέβασμα του αÏχείου %li του %li (απομένουν %s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Λήψη αÏχείου %li του %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"Το πακέτο '%s' χÏειάζεται να επανεγκατασταθεί, αλλά είναι αδÏνατη η εÏÏεση "
+"κάποιας κατάλληλης αÏχείοθήκης."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Σφάλμα, το pkgProblemResolver::Resolve παÏήγαγε διακοπές, αυτό ίσως "
+"Ï€Ïοκλήθηκε από κÏατοÏμενα πακέτα."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "ΑδÏνατη η διόÏθωση Ï€Ïοβλημάτων, έχετε κÏατοÏμενα ελαττωματικά πακέτα."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+"ΑδÏνατο το άνοιγμα ή η ανάλυση των λιστών πακέτων ή του αÏχείου κατάστασης."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr ""
+"Ίσως να Ï€Ïέπει να Ï„Ïέξετε apt-get update για να διοÏθώσετε αυτά τα Ï€Ïοβλήματα"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "ΑδÏνατη η ανάγνωση της λίστας πηγών."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "σφάλμα μεταγλωτισμου - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Η έκδοση %s για το %s δεν βÏέθηκε"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Η έκδοση %s για το %s δεν βÏέθηκε"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find task '%s'"
+msgstr "ΑδÏνατη η εÏÏεση του συνόλου πακέτων %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "ΑδÏνατη η εÏÏεση του πακέτου %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "ΑδÏνατη η εÏÏεση του πακέτου %s"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Αδυναμία ÎµÎ½Ï„Î¿Ï€Î¹ÏƒÎ¼Î¿Ï Ï„Î¿Ï… πακέτου %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Η γÏαμμή %u έχει υπεÏβολικό μήκος στη λίστα πηγών %s."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "ΑποπÏοσάÏτηση του CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "ΧÏησιμοποιείται το σημείο Ï€ÏοσάÏτησης %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Αναμονή για δίσκο...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "ΠÏοσάÏτηση του CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "ΑναγνώÏιση..."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Αποθήκευση Ετικέτας: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "ΣάÏωση του δίσκου για πεÏιεχόμενα...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Î’Ïέθηκαν %zu κατάλογοι πακέτων, %zu κατάλογοι πηγαίων, %zu κατάλογοι "
+"μεταφÏάσεων και %zu υπογÏαφές\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "ΕÏÏεση ετικέτας: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Αυτό δεν είναι έγκυÏο όνομα, Ï€Ïοσπαθείστε ξανά. \n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Ο δίσκος αυτός ονομάζεται: \n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "ΑντιγÏαφή λιστών πακέτων..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "EγγÏαφή νέας λίστας πηγών\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Οι κατάλογοι με τις πηγές Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… δίσκου είναι: \n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "ΑδÏνατη η εÏÏεση της κατάστασης του %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "ΑδÏνατη η εÏÏεση της κατάστασης του σημείου επαφής %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "ΑδÏνατη η εÏÏεση της κατάστασης του cdrom"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Η επιλογή γÏαμμής εντολών '%c' [από %s] δεν είναι γνωστή."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Η επιλογή γÏαμμής εντολών %s δεν είναι κατανοητή"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Η επιλογή γÏαμμής εντολών %s δεν είναι boolean"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Η επιλογή %s απαιτεί ένα ÏŒÏισμα."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+"Επιλογή %s: Οι Ï€ÏοδιαγÏαφές του αντικειμένου Ïυθμίσεων απαιτοÏν =<val>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Επιλογή %s: απαιτείται ένας ακέÏαιος αÏιθμός ως ÏŒÏισμα, όχι '%s'"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Η επιλογή '%s' έχει υπεÏβολικό μήκος"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "Η τιμή %s δεν είναι κατανοητή, δοκιμάστε σωστό (true) ή λάθος (false)."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Μη έγκυÏη λειτουÏγία %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Μη αναγνωÏισμένος Ï„Ïπος σÏντμησης: '%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Άνοιγμα του αÏχείου Ïυθμίσεων %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Συντακτικό σφάλμα %s:%u: Το block αÏχίζει χωÏίς όνομα."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Συντακτικό σφάλμα %s:%u: Λάθος μοÏφή Ετικέτας (Tag)"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Συντακτικό σφάλμα %s:%u: ΆχÏηστοι χαÏακτήÏες μετά την τιμή"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"Συντακτικό σφάλμα %s:%u: Οι οδηγίες βÏίσκονται μόνο στο ανώτατο επίπεδο"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Συντακτικό σφάλμα %s:%u: ΥπεÏβολικός αÏιθμός συνδυασμένων includes"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Συντακτικό σφάλμα %s:%u: ΣυμπεÏιλαμβάνεται από εδώ"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Συντακτικό σφάλμα %s:%u: Μη υποστηÏιζόμενη εντολή '%s'"
+
+#: apt-pkg/contrib/configuration.cc
+#, fuzzy, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Συντακτικό σφάλμα %s:%u: Οι οδηγίες βÏίσκονται μόνο στο ανώτατο επίπεδο"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Συντακτικό σφάλμα %s:%u: ΆχÏηστοι χαÏακτήÏες στο τέλος του αÏχείου"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem unlinking the file %s"
+msgstr "ΠÏόβλημα κατά την διαγÏαφή του αÏχείου"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr ""
+"Δε θα χÏησιμοποιηθεί κλείδωμα για το ανάγνωσης μόνο αÏχείο κλειδώματος %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "ΑδÏνατο το άνοιγμα του αÏχείου κλειδώματος %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr ""
+"Δε θα χÏησιμοποιηθεί κλείδωμα για το συναÏμοσμένο από nfs αÏχείο κλειδώματος "
+"%s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "ΑδÏνατο το κλείδωμα %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Αναμονή του %s, αλλά δε βÏισκόταν εκεί"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Η υποδιεÏγασία %s έλαβε ένα σφάλμα καταμεÏÎ¹ÏƒÎ¼Î¿Ï (segfault)"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Η υποδιεÏγασία %s έλαβε ένα σφάλμα καταμεÏÎ¹ÏƒÎ¼Î¿Ï (segfault)"
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Η υποδιεÏγασία %s επέστÏεψε ένα κωδικός σφάλματος (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Η υποδιεÏγασία %s εγκατέλειψε απÏόσμενα"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Σφάλμα ανάγνωσης"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Σφάλμα εγγÏαφής"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "ΠÏόβλημα κατά το κλείσιμο του αÏχείου"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Αποτυχία δημιουÏγίας IPC στην υποδιεÏγασία"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Αποτυχία εκτέλεσης του συμπιεστή "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "ΑδÏνατο το άνοιγμα του αÏχείου %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Could not open file descriptor %d"
+msgstr "ΑδÏνατο το άνοιγμα διασωλήνωσης για το %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "αναγνώστηκαν, απομένουν ακόμη %lu για ανάγνωση αλλά δεν απομένουν άλλα"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "γÏάφτηκαν, απομένουν %lu για εγγÏαφή αλλά χωÏίς επιτυχία"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the file %s"
+msgstr "ΠÏόβλημα κατά το κλείσιμο του αÏχείου"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "ΠÏόβλημα κατά τον συγχÏονισμό του αÏχείου"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "ΠÏόβλημα κατά τον συγχÏονισμό του αÏχείου"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "ΑδÏνατη η εÏÏεση της κατάστασης του %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "ΑδÏνατη η εγγÏαφή στο %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "ΑδÏνατη η απεικόνιση mmap ενός άδειου αÏχείου"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "ΑδÏνατη η απεικόνιση μέσω mmap %lu bytes"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "ΑδÏνατο το άνοιγμα διασωλήνωσης για το %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to close mmap"
+msgstr "ΑδÏνατο το άνοιγμα του %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to synchronize mmap"
+msgstr "ΑδÏνατη η εκτέλεση"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "ΑδÏνατη η απεικόνιση μέσω mmap %lu bytes"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Failed to truncate file"
+msgstr "Αποτυχία εγγÏαφής του αÏχείου %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Σφάλμα!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... ΟλοκληÏώθηκε"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... ΟλοκληÏώθηκε"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Η επιλογή %s δε βÏέθηκε"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Unable to parse Release file %s"
+msgstr "ΑδÏνατη η ανάλυση του αÏχείου πακέτου %s (1)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "No sections in Release file %s"
+msgstr "Σημείωση, επιλέχθηκε το %s αντί του%s\n"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Μη έγκυÏη γÏαμμή στο αÏχείο παÏακάμψεων: %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, fuzzy, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "ΑδÏνατη η ανάλυση του αÏχείου πακέτου %s (%s)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, fuzzy, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "ΑδÏνατο το κλείδωμα του καταλόγου"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr ""
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "Εγκατάσταση του %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "ΡÏθμιση του %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "ΑφαιÏÏŽ το %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removing %s"
+msgstr "Το %s διαγÏάφηκε πλήÏως"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Εκτέλεση του post-installation trigger %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "Έγινε εγκατάσταση του %s"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Ο φάκελος %s αγνοείται."
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, fuzzy, c-format
+msgid "Could not open file '%s'"
+msgstr "ΑδÏνατο το άνοιγμα του αÏχείου %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "ΠÏοετοιμασία του %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "ΞεπακετάÏισμα του %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "ΠÏοετοιμασία ÏÏθμισης του %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "ΠÏοετοιμασία για την αφαίÏεση του %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "ΑφαίÏεσα το %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "ΠÏοετοιμασία πλήÏης αφαίÏεσης του %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "Το %s διαγÏάφηκε πλήÏως"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "ΑδÏνατη η εγγÏαφή στο %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Κατασκευή ΔένδÏου ΕξαÏτήσεων"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Υποψήφιες Εκδόσεις"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "ΠαÏαγωγή ΕξαÏτήσεων"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Ανάγνωση πεÏιγÏαφής της Ï„Ïέχουσας κατάσταση"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Αποτυχία ανοίγματος του αÏχείου κατάστασης %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Αποτυχία εγγÏαφής του αÏχείου κατάστασης %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "Εγιναν %i εγγÏαφές.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "Εγιναν %i εγγÏαφές με %i απώντα αÏχεία.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "Εγιναν %i εγγÏαφές με %i ασÏμβατα αÏχεία.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "Εγιναν %i εγγÏαφές με %i απώντα αÏχεία και %i ασÏμβατα αÏχεία\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, fuzzy, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Ανόμοιο MD5Sum"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Το σÏστημα συσκευασίας '%s' δεν υποστηÏίζεται"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "ΑδÏνατος ο καθοÏισμός ενός κατάλληλου Ï„Ïπου συστήματος πακέτων"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "ΑδÏνατο το άνοιγμα του αÏχείου %s"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Αυτή η Ï€Ïοσπάθεια εγκατάστασης απαιτεί Ï€ÏοσωÏινή αφαίÏεση του ÏƒÎ·Î¼Î±Î½Ï„Î¹ÎºÎ¿Ï "
+"πακέτου %s λόγω ενός βÏόγχου Ασυμβατότητας/ΠÏοΕξάÏτησης. Αυτό συνήθως δεν "
+"είναι καλό, αλλά εάν Ï€Ïαγματικά θέλετε να συνεχίσετε ενεÏγοποιήστε την "
+"επιλογή APT::Force-LoopBreak option."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Άδειο cache πακέτων"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Το αÏχείο cache των πακέτων είναι κατεστÏαμμένο"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Το αÏχείο cache των πακέτων είναι ασÏμβατης έκδοσης"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Αυτό το APT δεν υποστηÏίζει το ΣÏστημα Απόδοσης Έκδοσης '%s'"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Η cache πακέτων κατασκευάστηκε για μια διαφοÏετική αÏχιτεκτονική"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Το αÏχείο cache των πακέτων είναι κατεστÏαμμένο"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "ΕξαÏτάται από"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "ΠÏοΕξαÏτάται από"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "ΠÏοτείνει"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "ΑσÏμβατο με"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Συστήνει"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Αντικαθιστά"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Χαλάει"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "ΑπαÏχαιώνει"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "σημαντικό"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "απαιτοÏμενο"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "καθιεÏωμένο"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "επιπλέον"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "Ï€ÏοαιÏετικό"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Η cache έχει ασÏμβατο σÏστημα απόδοσης έκδοσης"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "ΠÏοέκυψε σφάλμα κατά την επεξεÏγασία του %s (FindPkg)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"Εκπληκτικό, υπεÏβήκατε τον αÏιθμό των ονομάτων πακέτων που υποστηÏίζει το "
+"APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Εκπληκτικό, υπεÏβήκατε τον αÏιθμό των εκδόσεων που υποστηÏίζει το APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+"Εκπληκτικό, υπεÏβήκατε τον αÏιθμό των πεÏιγÏαφών που υποστηÏίζει το APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+"Εκπληκτικό, υπεÏβήκατε τον αÏιθμό των εξαÏτήσεων που υποστηÏίζει το APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Ανάγνωση Λιστών Πακέτων"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Σφάλμα IO κατά την αποθήκευση της cache πηγών"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Ο Ï„Ïπος αÏχείου ευÏετηÏίου '%s' δεν υποστηÏίζεται"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, fuzzy, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Μη έγκυÏη εγγÏαφή στο αÏχείο Ï€Ïοτιμήσεων, καμία επικεφαλίδα Package"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "ΑδÏνατη η κατανόηση του Ï„Ïπου καθήλωσης %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr ""
+"Δεν έχει οÏιστεί Ï€ÏοτεÏαιότητα (ή έχει οÏιστεί μηδενική) για την καθήλωση"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "ΚακογÏαμμένη παÏακαμπτήÏια %s γÏαμμή %lu #1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Άνοιγμα του %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Λάθος μοÏφή της γÏαμμής %u στη λίστα πηγών %s (Ï„Ïπος)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Ο Ï„Ïπος '%s' στη γÏαμμή %u στη λίστα πηγών %s είναι άγνωστος "
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Λάθος μοÏφή της γÏαμμής %u στη λίστα πηγών %s (Ï„Ïπος)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Ο Ï„Ïπος '%s' στη γÏαμμή %u στη λίστα πηγών %s είναι άγνωστος "
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "ΠÏέπει να τοποθετήσετε μεÏικά URI 'πηγών' στο sources.list"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Αποτυχία ανάκτησης του %s %s"
+
+#: apt-pkg/update.cc
+#, fuzzy
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"ΜεÏικά αÏχεία δεν μεταφοÏτώθηκαν, αγνοήθηκαν ή χÏησιμοποιήθηκαν παλαιότεÏα "
+"στη θέση τους."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Υπολογισμός της αναβάθμισης"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Hit:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "ΦέÏε:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Αγνόησε:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Σφάλμα:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "ΜεταφοÏτώθηκαν %sB σε %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [ΕπεξεÏγασία]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Αλλαγή Μέσου: ΠαÏακαλώ εισάγετε το δίσκο με ετικέτα\n"
+" '%s'\n"
+"στη συσκευή '%s' και πιέστε enter\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "ΔιόÏθωση εξαÏτήσεων..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " απέτυχε."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "ΑδÏνατη η διόÏθωση των εξαÏτήσεων"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "ΑδÏνατη η ελαχιστοποίηση του συνόλου αναβαθμίσεων"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Ετοιμο"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+"Ίσως να Ï€Ïέπει να Ï„Ïέξετε apt --fix-broken install για να διοÏθώσετε αυτά τα "
+"Ï€Ïοβλήματα."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Ανεπίλυτες εξαÏτήσεις. Δοκιμάστε 'apt --fix-broken install' χωÏίς να οÏίσετε "
+"πακέτο (ή καθοÏίστε μια λÏση)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Σημείωση, επιλέχτηκε το %s στη θέση του '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Σημείωση, επιλέχτηκε το %s στη θέση του '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Σημείωση, επιλέχτηκε το %s στη θέση του '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Το πακέτο %s είναι εικονικό και παÏέχεται από τα:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [Εγκατεστημένα]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr "[Μγ Υποψήφια Εκδόση]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Θα Ï€Ïέπει επακÏιβώς να επιλέξετε ένα για εγκατάσταση."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Το πακέτο %s δεν είναι διαθέσιμο, αλλά υπάÏχει αναφοÏά για αυτό από άλλο "
+"πακέτο.\n"
+"Αυτό σημαίνει ότι το πακέτο αυτό λείπει, είναι παλαιωμένο, ή είναι διαθέσιμο "
+"από άλλη πηγή\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "ΠάÏαυτα το ακόλουθο πακέτο το αντικαθιστά:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Το πακέτο %s δεν έχει υποψήφια εγκατάσταση"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Εικονικά πακέτα όπως το '%s' δεν μποÏοÏν να αφαιÏεθοÏν\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"Το πακέτο %s δεν είναι εγκατεστημένο και δεν θα αφαιÏεθεί. Εννοείτε '%s'?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Το πακέτο %s δεν είναι εγκατεστημένο και δεν θα αφαιÏεθεί\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Σημείωση, επιλέχθηκε το %s αντί του %s\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Δε βÏέθηκαν πακέτα"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Τα ακόλουθα πακέτα δεν εξακÏιβώθηκαν!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "ΠαÏάκαμψη Ï€Ïοειδοποίησης ταυτοποίησης.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "ΜεÏικά πακέτα δεν εξαακÏιβώθηκαν"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Εγκατάσταση των πακέτων χωÏίς επαλήθευση;"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "ΥπάÏχουν Ï€Ïοβλήματα και δώσατε -y χωÏίς το --force-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Δεν μπόÏεσα να Ï€ÏοσδιοÏίσω τον ελεÏθεÏο χώÏο στο %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Δεν διαθέτετε αÏκετό ελεÏθεÏο χώÏο στο %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "ΑδÏνατο το κλείδωμα του καταλόγου μεταφόÏτωσης"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"ΜεÏικά πακέτα είναι αδÏνατον να εγκατασταθοÏν. Αυτό μποÏεί να σημαίνει ότι\n"
+"δημιουÏγήσατε μια απίθανη κατάσταση ή αν χÏησιμοποιείτε την ασταθή\n"
+"διανομή, ότι μεÏικά από τα πακέτα δεν έχουν ακόμα δημιουÏγηθεί ή έχουν\n"
+"μετακινηθεί από τα εισεÏχόμενα."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Οι ακόλουθες πληÏοφοÏίες ίσως βοηθήσουν στην επίλυση του Ï€Ïοβλήματος:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Χαλασμένα πακέτα"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"ΑδÏνατη η μεταφόÏτωση μεÏικών αÏχείων, ίσως αν δοκιμάζατε με apt-get update "
+"ή το --fix-missing;"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "ΕσωτεÏικό σφάλμα, έγινε κλήση του Install Packages με σπασμένα πακέτα!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr ""
+"ΜεÏικά πακέτα Ï€Ïέπει να αφαιÏεθοÏν αλλά η ΑφαίÏεση είναι απενεÏγοποιημένη."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "ΥπάÏχουν Ï€Ïοβλήματα και δώσατε -y χωÏίς το --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "ΥπάÏχουν Ï€Ïοβλήματα και δώσατε -y χωÏίς το --force-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "ΕσωτεÏικό Σφάλμα, η Ταξινόμηση δεν ολοκληÏώθηκε"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Î Î¿Î»Ï Ï€ÎµÏίεÏγο! Τα μεγέθη δεν ταιÏιάζουν, στείλτε μήνυμα στο apt@packages."
+"debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "ΧÏειάζεται να μεταφοÏτωθοÏν %sB/%sB από αÏχεία.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "ΧÏειάζεται να μεταφοÏτωθοÏν %sB από αÏχεία.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr ""
+"Μετά από αυτή τη λειτουÏγία, θα χÏησιμοποιηθοÏν %sB χώÏου από το δίσκο.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Μετά από αυτή τη λειτουÏγία, θα ελευθεÏωθοÏν %sB χώÏου από το δίσκο.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "ΚαθοÏίσατε συνηθισμένο, αλλά αυτή δεν είναι μια συνηθισμένη εÏγασία"
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Îαι, κανε ότι λέω!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"ΠÏόκειται να κάνετε κάτι πιθανόν Ï€Î¿Î»Ï ÎµÏ€Î¹Î¶Î®Î¼Î¹Î¿.\n"
+"Για να συνεχίσετε πληκτÏολογήστε τη φÏάση '%s'\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Εγκατάλειψη."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Θέλετε να συνεχίσετε;"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Για μεÏικά αÏχεία απέτυχε η μεταφόÏτωση"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "ΟλοκληÏώθηκε η μεταφόÏτωση μόνο"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr ""
+"ο συνδυασμός --fix-missing με εναλλαγή μέσων δεν υποστηÏίζεται για την ÏŽÏα"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "ΑδÏνατη η επίλυση των χαμένων πακέτων."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Εγκατάλειψη της εγκατάστασης."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+"Δεν επιτÏέπεται οποιαδήποτε διαγÏαφή· αδυναμία εκκίνησης του AutoRemover"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Φαίνεται πως το AutoRemover κατέστÏεψε κάτι ενώ δεν θα έπÏεπε. ΠαÏακαλείστε "
+"να υποβάλλετε αναφοÏά σφάλματος για το apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "ΕσωτεÏικό Σφάλμα, το AutoRemover δημιοÏÏγησε κάποιο Ï€Ïόβλημα"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "Το ακόλουθο πακέτο εγκαταστάθηκε αυτόματα και δεν χÏειάζεται πλέον:"
+msgstr[1] ""
+"Τα ακόλουθα πακέτα εγκαταστάθηκαν αυτόματα και δεν χÏειάζονται πλέον:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] ""
+"%lu το ακόλουθο πακέτο εγκαταστάθηκε αυτόματα και δεν χÏειάζεται πλέον:"
+msgstr[1] ""
+"%lu τα ακόλουθα πακέτα εγκαταστάθηκαν αυτόματα και δεν χÏειάζονται πλέον:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "ΧÏησιμοποιήστε '%s' για να το διαγÏάψετε."
+msgstr[1] "ΧÏησιμοποιήστε '%s' για να τα διαγÏάψετε."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Τα ακόλουθα επιπλέον πακέτα θα εγκατασταθοÏν:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "ΠÏοτεινόμενα πακέτα:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Συνιστώμενα πακέτα:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+"ΠαÏάκαμψη του %s, είναι εγκατεστημένο και η αναβάθμιση δεν έχει οÏιστεί.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"ΠαÏάκαμψη του %s, είναι εγκατεστημένο και μόνο αναβαθμίσεις έχουν οÏιστεί.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr ""
+"Η επανεγκατάσταση του %s δεν είναι εφικτή, δεν είναι δυνατή η μεταφόÏτωσή "
+"του\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "το %s είναι ήδη η τελευταία έκδοση.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "το %s έχει εγκατασταθεί με το χέÏι\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Επιλέχθηκε η έκδοση %s (%s) για το %s\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Επιλέχθηκε η έκδοση %s (%s) για το %s λόγω του %s\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Εγκατεστημένα]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [Εγκατεστημένα]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [Εγκατεστημένα]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [Εγκατεστημένα]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "αλλά το %s είναι εγκατεστημένο"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "αλλά το %s Ï€Ïόκειται να εγκατασταθεί"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "αλλά δεν είναι εγκαταστάσημο"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "αλλά είναι ένα εικονικό πακέτο"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "αλλά δεν Ï€Ïόκειται να εγκατασταθεί"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "αλλά δεν είναι εγκατεστημένο"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " η"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Τα ακόλουθα πακέτα έχουν ανεπίλυτες εξαÏτήσεις:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Τα ακόλουθα ÎΕΑ πακέτα θα εγκατασταθοÏν:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Τα ακόλουθα πακέτα θα ΑΦΑΙΡΕΘΟΥÎ:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Τα ακόλουθα πακέτα θα μείνουν ως έχουν:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Τα ακόλουθα πακέτα θα αναβαθμιστοÏν:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Τα ακόλουθα πακέτα θα ΥΠΟΒΑΘΜΙΣΤΟΥÎ:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Τα ακόλουθα κÏατημένα πακέτα θα αλλαχθοÏν:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (λόγω του %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Τα ακόλουθα απαÏαίτητα πακέτα θα αφαιÏεθοÏν\n"
+"Αυτό ΔΕΠθα έπÏεπε να συμβεί, εκτός αν ξέÏετε τι ακÏιβώς κάνετε!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu αναβαθμίστηκαν, %lu νέο εγκατεστημένα, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu επανεγκατεστημένα,"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu υποβαθμισμένα, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu θα αφαιÏεθοÏν και %lu δεν αναβαθμίζονται.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu μη πλήÏως εγκατεστημένα ή αφαιÏέθηκαν.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[Î/ο]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[ν/Ο]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr ""
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "ΠÏέπει να δώσετε τουλάχιστον ένα μοτίβο αναζήτησης"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Το αÏχείο πακέτου %s δεν είναι ενημεÏωμένο."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "ΑÏχεία Πακέτου:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+"Η cache δεν είναι ενημεÏωμένη, αδυναμία παÏαπομπής σε ένα αÏχείο πακέτου"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Καθηλωμένα Πακέτα:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Εγκατεστημένα: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Υποψήφιο: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(κανένα)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Πίνακας Έκδοσης:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "ΑδÏνατη η εÏÏεση του πακέτου %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "ΑδÏνατη η εÏÏεση του πακέτου %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "ΑδÏνατη η εÏÏεση του πακέτου %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Επιλογή του %s ώς λίστας πηγαίων πακέτων αντί της %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr ""
+"Θα Ï€Ïέπει να καθοÏίσετε τουλάχιστον ένα πακέτο για να μεταφοÏτώσετε τον "
+"κωδικάτου"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Αδυναμία ÎµÎ½Ï„Î¿Ï€Î¹ÏƒÎ¼Î¿Ï Ï„Î¿Ï… κώδικά του πακέτου %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "ΠαÏάκαμψη του ήδη μεταφοÏτωμένου αÏχείου `%s`\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "ΧÏειάζεται να μεταφοÏτωθοÏν %sB/%sB πηγαίου κώδικα.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "ΧÏειάζεται να μεταφοÏτωθοÏν %sB πηγαίου κώδικα.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "ΜεταφόÏτωση Κωδικα %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Αποτυχία μεταφόÏτωσης μεÏικών αÏχειοθηκών."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "ΠαÏάκαμψη της αποσυμπίεσης ήδη μεταφοÏτωμένου κώδικα στο %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Απέτυχε η εντολή αποσυμπίεσης %s\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Ελέγξτε αν είναι εγκαταστημένο το πακέτο 'dpkg-dev'.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Απέτυχε η εντολή χτισίματος %s.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "ΑδÏνατη η εÏÏεση πληÏοφοÏιών χτισίματος για το %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "το %s δεν έχει εξαÏτήσεις χτισίματος.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Θα Ï€Ïέπει να καθοÏίσετε τουλάχιστον ένα πακέτο για έλεγχο των εξαÏτήσεων του"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Αποτυχία επεξεÏγασίας εξαÏτήσεων χτισίματος"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Αποτυχία επεξεÏγασίας εξαÏτήσεων χτισίματος"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Αποτυχία μετονομασίας του %s σε %s"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Το πακέτο %s με έκδοση %s έχει ανικανοποίητες εξαÏτήσεις:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Η εντολή update δεν παίÏνει οÏίσματα"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "Η εντολή update δεν παίÏνει οÏίσματα"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Συνολικά Ονόματα Πακέτων : "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Συνολο Δομών Πακέτου : "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Κανονικά Πακέτα: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " ΠλήÏως Εικονικά Πακέτα: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Μονά Εικονικά Πακέτα: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Μικτά Εικονικά Πακέτα: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr "ΑγνοοÏμενα: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "ΣÏνολο ΔιαφοÏετικών Εκδόσεων: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "ΣÏνολο ΔιαφοÏετικών Εκδόσεων: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "ΣÏνολο ΕξαÏτήσεων: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "ΣÏνολο σχέσεων Εκδ/ΑÏχείων: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "ΣÏνολο σχέσεων Εκδ/ΑÏχείων: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "ΣÏνολο Αντιστοιχίσεων ΠαÏοχών: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "ΣÏνολο Κοινών ΣτοιχειοσειÏών : "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "ΣÏνολο χώÏου ασφαλείας: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Συνολικός ΚαταμετÏημένος ΧώÏος: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Εμφάνιση εγγÏαφών για πηγαίο πακέτο"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Αναζήτηση στη λίστα πακέτων για αυτή τη κανονική παÏάσταση"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Εμφάνιση των εξαÏτήσεων ενός πακέτου"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Εμφάνιση αντίστÏοφων εξαÏτήσεων ενός πακέτου"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Εμφάνιση μιας αναγνώσιμης εγγÏαφής για το πακέτο"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Εμφάνιση λίστας με τα ονόματα όλων των πακέτων"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Εμφάνιση Ï€ÏοτεÏαιοτήτων πηγών"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr ""
+"ΠαÏακαλώ δώστε ένα όνομα για αυτόν τον δίσκο, όπως 'Debian 5.0.3 Disk 1'"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "ΠαÏακαλώ εισάγετε το δίσκο στη συσκευή και πατήστε enter"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Αποτυχία σÏνδεσης του %s σε %s"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Επαναλάβετε την διαδικασία για τα υπόλοιπα CD από το σετ σας."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Τα οÏίσματα δεν είναι σε ζεÏγη"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"ΧÏήση: apt-config [επιλογές] εντολή\n"
+"\n"
+"το apt-config είναι ένα απλό εÏγαλείο για την ανάγνωση του αÏχείου Ïυθμίσεων "
+"APT\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"ΧÏήση: apt-extracttemplates αÏχείο1 [αÏχείο2 ...]\n"
+"\n"
+"το apt-extracttemplates είναι ένα βοήθημα για να εξάγετε Ïυθμίσεις \n"
+"και Ï€Ïότυπα από πακέτα debian\n"
+"\n"
+"Επιλογές:\n"
+" -h Το παÏόν κείμενο βοήθειας\n"
+" -t ΚαθοÏισμός Ï€ÏοσωÏÎ¹Î½Î¿Ï ÎºÎ±Ï„Î±Î»ÏŒÎ³Î¿Ï…\n"
+" -c=? Ανάγνωση Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… αÏχείου Ïυθμίσεων\n"
+" -o=? ΚαθοÏισμός αυθαίÏετης επιλογής παÏαμέτÏου, πχ -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Δεν βÏέθηκε η έκδοση του debconf. Είναι το debconf εγκατεστημένο;"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "ΑδÏνατη η εÏÏεση του πακέτου %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "το %s έχει εγκατασταθεί αυτόματα\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr ""
+"ΕσωτεÏικό Σφάλμα, η Ï€Ïοσπάθεια επίλυσης του Ï€Ïοβλήματος \"έσπασε\" κάποιο "
+"υλικό"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "ΥποστηÏιζόμενοι Οδηγοί:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"ΧÏήση: apt-get [παÏάμετÏοι] εντολή\n"
+" apt-get [παÏάμετÏοι] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [παÏάμετÏοι] source pkg1 [pkg2 ...]\n"
+"\n"
+"η apt-get είναι μια απλή διασÏνδεση για τη μεταφόÏτωση και την\n"
+"εγκατάσταση πακέτων. Οι πιο συχνές εντολές είναι η update\n"
+"και η install.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Ανάκτηση νέων καταλόγων πακέτων"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "ΔιενέÏγεια αναβάθμισης"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Εγκατάσταση νέων πακέτων (χωÏίς την επέκταση .deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "ΑφαίÏεση πακέτων"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr ""
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+#, fuzzy
+msgid "Remove automatically all unused packages"
+msgstr "το %s έχει εγκατασταθεί αυτόματα\n"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Αναβάθμιση διανομής, δες το apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "ΤήÏηση των επιλογών του dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "ΡÏθμιση εξαÏτήσεων χτισίματος για πακέτα πηγαίου κώδικα"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "ΚαθαÏισμός των μεταφοÏτωμένων αÏχείων"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "ΚαθαÏισμός παλαιότεÏα μεταφοÏτωμένων αÏχείων"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "ΕξακÏίβωση για τυχόν σπασμένες εξαÏτήσεις"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "ΜεταφόÏτωση πακέτων πηγαίου κώδικα"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr ""
+"Θα Ï€Ïέπει να καθοÏίσετε τουλάχιστον ένα πακέτο για να μεταφοÏτώσετε τον "
+"κωδικάτου"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"ΧÏήση: apt-extracttemplates αÏχείο1 [αÏχείο2 ...]\n"
+"\n"
+"το apt-extracttemplates είναι ένα βοήθημα για να εξάγετε Ïυθμίσεις \n"
+"και Ï€Ïότυπα από πακέτα debian\n"
+"\n"
+"Επιλογές:\n"
+" -h Το παÏόν κείμενο βοήθειας\n"
+" -t ΚαθοÏισμός Ï€ÏοσωÏÎ¹Î½Î¿Ï ÎºÎ±Ï„Î±Î»ÏŒÎ³Î¿Ï…\n"
+" -c=? Ανάγνωση Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… αÏχείου Ïυθμίσεων\n"
+" -o=? ΚαθοÏισμός αυθαίÏετης επιλογής παÏαμέτÏου, πχ -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"ΧÏήση: apt-extracttemplates αÏχείο1 [αÏχείο2 ...]\n"
+"\n"
+"το apt-extracttemplates είναι ένα βοήθημα για να εξάγετε Ïυθμίσεις \n"
+"και Ï€Ïότυπα από πακέτα debian\n"
+"\n"
+"Επιλογές:\n"
+" -h Το παÏόν κείμενο βοήθειας\n"
+" -t ΚαθοÏισμός Ï€ÏοσωÏÎ¹Î½Î¿Ï ÎºÎ±Ï„Î±Î»ÏŒÎ³Î¿Ï…\n"
+" -c=? Ανάγνωση Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… αÏχείου Ïυθμίσεων\n"
+" -o=? ΚαθοÏισμός αυθαίÏετης επιλογής παÏαμέτÏου, πχ -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "αλλά δεν είναι εγκατεστημένο"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "το %s έχει εγκατασταθεί με το χέÏι\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "το %s έχει εγκατασταθεί με το χέÏι\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "το %s είναι ήδη η τελευταία έκδοση.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "το %s είναι ήδη η τελευταία έκδοση.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "το %s έχει εγκατασταθεί με το χέÏι\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Αποτυχία ανοίγματος του %s"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "το %s έχει εγκατασταθεί αυτόματα\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "Ελέγξτε αν είναι εγκαταστημένο το πακέτο 'dpkg-dev'.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "το %s έχει εγκατασταθεί αυτόματα\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "το %s έχει εγκατασταθεί με το χέÏι\n"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Άγνωστη εγγÏαφή πακέτου!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "Ανάγνωση Λιστών Πακέτων"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "Καθηλωμένα Πακέτα:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Χαλασμένα πακέτα"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "το %s έχει εγκατασταθεί με το χέÏι\n"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "Ανάγνωση πεÏιγÏαφής της Ï„Ïέχουσας κατάσταση"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Κακή Ï€ÏοκαθοÏισμένη ÏÏθμιση!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Πιέστε enter για συνέχεια."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Επιθυμείτε τη διαγÏαφή ήδη μεταφοÏτωμένων αÏχείων .deb;"
+
+#: dselect/install
+#, fuzzy
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "ΠÏοέκυψανσφάλματα κατά την αποσυμπίεση. Θα Ïυθμίσω τα "
+
+#: dselect/install
+#, fuzzy
+msgid "will be configured. This may result in duplicate errors"
+msgstr "πακέτα που εγκαταστάθηκαν. Αυτό μποÏεί να παÏάγει διπλά λάθη"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"ή σφάλματα που Ï€ÏοκÏπτουν από χαλασμένες εξαÏτήσεις. Αυτό είναι εντάξει, "
+"μόνο τα λάθη"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"Ï€Ïιν από το μήνυμα αυτό έχει σημασία. ΠαÏακαλώ διοÏθώστε τα και Ï„Ïέξτε "
+"[I]nstall ξανά"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "ΣÏμπτυξη Διαθέσιμων ΠληÏοφοÏιών"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Ο κατάλογος επεκτάσεων του πακέτου είναι υπεÏβολικά μακÏÏÏ‚"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Σφάλμα επεξεÏγασίας του καταλόγου %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Ο κατάλογος επεκτάσεων των πηγών είναι υπεÏβολικά μακÏÏÏ‚"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Σφάλμα εγγÏαφής κεφαλίδων στο αÏχείο πεÏιεχομένων"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Σφάλμα επεξεÏγασίας πεÏιεχομένων του %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"ΧÏήση: apt-ftparchive [επιλογές] εντολή\n"
+"Εντολές: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"Το apt-ftparchive παÏάγει αÏχεία πεÏιεχομένων για τις αÏχειοθήκες Debian\n"
+"ΥποστηÏίζει πολλές παÏαλλαγές παÏαγωγής, από απόλυτα αυτοματοποιημένες έως\n"
+"λειτουÏγικές αντικαταστάσεις για την dpkg-scanpackages και dpkg-scansources\n"
+"\n"
+"Το apt-ftparchive παÏάγει αÏχεία Package από ένα σÏνολο αÏχείων .debs. Στο\n"
+"αÏχείο Package πεÏιέχονται όλα τα πεδία ελέγχου κάθε πακέτου καθώς και\n"
+"το μέγεθος τους και το MD5 hash. ΥποστηÏίζει την ÏπαÏξη αÏχείου παÏάκαμψης\n"
+"για τη βεβιασμένη αλλαγή των πεδίων Priority (ΠÏοτεÏαιότητα) και Section\n"
+"(Τομέας).\n"
+"\n"
+"Με τον ίδιο Ï„Ïόπο, το apt-ftparchive παÏάγει αÏχεία πηγών (Sources) από μια\n"
+"ιεÏαÏχία αÏχείων .dsc. Η επιλογή --source-override μποÏεί να χÏησιμοποιηθεί\n"
+"για παÏάκαμψη των αÏχείων πηγών src.\n"
+"\n"
+"Οι εντολές 'packages' και 'sources' θα Ï€Ïέπει να εκτελοÏνται στον βασικό\n"
+"κατάλογο της ιεÏαÏχίας.Το BinaryPath θα Ï€Ïέπει να δείχνει στον αÏχικό\n"
+"κατάλογο που θα ξεκινάει η αναδÏομική αναζήτηση και το αÏχείο παÏάκαμψης\n"
+"θα Ï€Ïέπει να πεÏιέχει τις επιλογές παÏάκαμψης. Το Pathprefix Ï€Ïοστίθεται "
+"στα\n"
+"πεδία όνομάτων αÏχείων, αν υπάÏχει. Δείτε παÏάδειγμα χÏήσης στην αÏχειοθήκη\n"
+"πακέτων του Debian :\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Επιλογές:\n"
+" -h Αυτό το κείμενο βοηθείας\n"
+" --md5 Έλεγχος παÏαγωγής MD5\n"
+" -s=? αÏχείο παÏάκαμψης πηγών\n"
+" -q ΧωÏίς έξοδο\n"
+" -d=? Επιλογή Ï€ÏοαιÏετικής βάσης δεδομένων cache\n"
+" --no-delink Αποσφαλμάτωση του delinking\n"
+" --contents Έλεγχος παÏαγωγής αÏχείου πεÏιεχομένων\n"
+" -c=? ΧÏήση Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… αÏχείου Ïυθμίσεων\n"
+" -o=? ΟÏισμός αυθαίÏετης επιλογής ÏÏθμισης"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Δεν ταιÏιαξε καμία επιλογή"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Λείπουν μεÏικά αÏχεία από την ομάδα πακέτων '%s'"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "Η βάση είναι κατεστÏαμμένη, το αÏχείο μετονομάστηκε σε %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "Η βάση δεν είναι ενημεÏωμένη, γίνεται Ï€Ïοσπάθεια να αναβαθμιστεί το %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Το φοÏμά της βάσης δεν είναι έγκυÏο. Εάν αναβαθμίσατε το apt σε νεότεÏη "
+"έκδοση, παÏακαλώ αφαιÏέστε και δημιουÏγήστε τη βάση εκ νέου."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Το άνοιγμά του αÏχείου της βάσης %s: %s απέτυχε"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Αποτυχία ανάγνωσης του %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Η αÏχειοθήκη δεν πεÏιέχει πεδίο ελέγχου"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "ΑδÏνατη η Ï€Ïόσβαση σε δείκτη"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realoc - Αδυναμία εκχώÏησης μνήμης"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Άγνωστος ΑλγόÏιθμος Συμπίεσης '%s'"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Η συμπιεσμένη έξοδος του %s χÏειάζεται καθοÏισμό συμπίεσης"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Αποτυχία κατά τη δημιουÏγία διασωλήνωσης IPC στην υποδιεÏγασία"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Αποτυχία αγκίστÏωσης"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Συμπίεση απογόνου"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "ΕσωτεÏικό Σφάλμα, Αποτυχία δημιουÏγίας του %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "απέτυχε η Ε/Ε στην υποδιεÏγασία/αÏχείο"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Αποτυχία ανάγνωσης κατά τον υπολογισμό MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "ΑδÏνατο το άνοιγμα του %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "ΚακογÏαμμένη παÏακαμπτήÏια %s γÏαμμή %lu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Αποτυχία ανάγνωσης του αÏχείου παÏάκαμψης %s"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "ΚακογÏαμμένη παÏακαμπτήÏια %s γÏαμμή %lu #1"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "ΚακογÏαμμένη παÏακαμπτήÏια %s γÏαμμή %lu #2"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "ΚακογÏαμμένη παÏακαμπτήÏια %s γÏαμμή %lu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "W: ΑδÏνατη η ανάγνωση του καταλόγου %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "W: ΑδÏνατη η εÏÏεση της κατάστασης του %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "W: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: Σφάλματα στο αÏχείο"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "ΑδÏνατη η εÏÏεση του %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Αποτυχία ανεÏÏεσης"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Αποτυχία ανοίγματος του %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr "ΑποσÏνδεση %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr " Αποτυχία σÏνδεσης του %s με το %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " ΑποσÏνδεση οÏίου του %sB hit.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Η αÏχειοθήκη δεν πεÏιέχει πεδίο πακέτων"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s δεν πεÏιέχει εγγÏαφή παÏάκαμψης\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " %s συντηÏητής είναι ο %s όχι ο %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s δεν έχει εγγÏαφή πηγαίας παÏάκαμψης\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s δεν έχει οÏτε εγγÏαφή δυαδικής παÏάκαμψης\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Αναμονή επικεφαλίδων"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "Ο διακομιστής http έστειλε μια άκυÏη επικεφαλίδα απάντησης"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Ελαττωματική γÏαμμή επικεφαλίδας"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "Ο διακομιστής http έστειλε μια άκυÏη επικεφαλίδα Content-Length"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "Ο διακομιστής http έστειλε μια άκυÏη επικεφαλίδα Content-Range"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Ο διακομιστής http δεν υποστηÏίζει πλήÏως το range"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Άγνωστη μοÏφή ημεÏομηνίας"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Ελαττωματικά δεδομένα επικεφαλίδας"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Η σÏνδεση απέτυχε"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "ΕσωτεÏικό Σφάλμα"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "ΑδÏνατη η ανάγνωση της βάσης δεδομένων του cdrom %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"ΠαÏακαλώ χÏησιμοποιείστε το apt-cdrom για να αναγνωÏιστεί αυτό το CD από το "
+"APT. Το apt-get update δε χÏησιμεÏει για να Ï€Ïοσθέτει νέα CD"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Λάθος CD"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Αδυναμία απόσυναÏμογής του CD-ROM στο %s, μποÏεί να είναι σε χÏήση."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Ο δίσκος δεν βÏέθηκε."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Το αÏχείο Δε Î’Ïέθηκε"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "ΣÏνδεση στο %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "ΑδÏνατη η δημιουÏγία υποδοχής για το %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "ΑδÏνατη η αÏχικοποίηση της σÏνδεσης στο %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "ΑδÏνατη η σÏνδεση στο %s:%s (%s), λήξη χÏόνου σÏνδεσης"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Απέτυχε"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "ΑδÏνατη η σÏνδεση στο %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "ΣÏνδεση στο %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "ΑδÏνατη η εÏÏεση του '%s'"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "ΠÏοσωÏινή αποτυχία στην εÏÏεση του '%s'"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Κάτι παÏάξενο συνέβη κατά την εÏÏεση του '%s:%s' (%i)"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Κάτι παÏάξενο συνέβη κατά την εÏÏεση του '%s:%s' (%i)"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "ΑδÏνατη η σÏνδεση στο %s %s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Αποτυχία εÏÏεσης της κατάστασης"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Μη έγκυÏο URI, τα τοπικά URI δεν Ï€Ïέπει να αÏχίζουν με //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "ΣÏνδεση στο σÏστημα"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "ΑδÏνατος ο καθοÏισμός του ονόματος του ομότιμου (peer)"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "ΑδÏνατος ο καθοÏισμός του Ï„Î¿Ï€Î¹ÎºÎ¿Ï Î¿Î½ÏŒÎ¼Î±Ï„Î¿Ï‚"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Ο διακομιστής αÏνήθηκε την σÏνδεση με μήνυμα: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "Η εντολή USER απέτυχε, ο διακομιστής απάντησε: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "Η εντολή PASS απέτυχε, ο διακομιστής απάντησε: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Ο διαμεσολαβητής έχει οÏιστεί αλλά χωÏίς σενάÏιο εισόδου, το Acquire::ftp::"
+"ProxyLogin είναι άδειο"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Η εντολή '%s' στο σενάÏιο εισόδου απέτυχε, ο διακομιστής απάντησε: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "Η εντολή TYPE απέτυχε, ο διακομιστής απάντησε: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Λήξη χÏόνου σÏνδεσης"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Ο διακομιστής έκλεισε την σÏνδεση"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Το μήνυμα απάντησης υπεÏχείλισε την ενδιάμεση μνήμη."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Αλλοίωση του Ï€Ïωτοκόλλου"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "ΑδÏνατη η δημιουÏγία μιας υποδοχής (socket)"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "ΑδÏνατη η σÏνδεση υποδοχής δεδομένων, λήξη χÏόνου σÏνδεσης"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "ΑδÏνατη η σÏνδεση σε παθητική υποδοχή (socket)."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "Το getaddrinfo ήταν αδÏνατο να δέσμευση υποδοχή παÏακολοÏθησης"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "ΑδÏνατη η Ï€Ïόσδεση στην υποδοχή (socket)"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "ΑδÏνατη η παÏακολοÏθηση της υποδοχής (socket)"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "ΑδÏνατος ο καθοÏισμός του ονόματος της υποδοχής (socket)"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "ΑδÏνατη η αποστολή της εντολής PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Άγνωστη οικογένεια διευθÏνσεων %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "Το EPRT απέτυχε, ο διακομιστής απάντησε: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Λήξη χÏόνου σÏνδεσης στην υποδοχή δεδομένων"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "ΑδÏνατη η αποδοχή συνδέσεων"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "ΠÏόβλημα κατά το hashing του αÏχείου"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Αδυναμία λήψης του αÏχείου, ο διακομιστής απάντησε '%s'"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Λήξη χÏόνου υποδοχής δεδομένων"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Αποτυχία κατά τη μεταφοÏά δεδομένων, ο διακομιστής απάντησε '%s'"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "ΕπεÏώτηση"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "ΑδÏνατη η εκτέλεση"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Î’Ïέθηκε τουλάχιστον μια μη έγκυÏη υπογÏαφή."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"ΕσωτεÏικό σφάλμα: Η υπογÏαφή είναι καλή, αλλά αδυναμία Ï€ÏοσδιοÏÎ¹ÏƒÎ¼Î¿Ï Ï„Î¿Ï… "
+"αποτυπώματος?!"
+
+#: methods/gpgv.cc
+#, fuzzy
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Αδυναμία εκτέλεσης του '%s' για την επαλήθευση της υπογÏαφής (είναι "
+"εγκατεστημένο το gnupg;)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Άγνωστο σφάλμα κατά την εκτέλεση του apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Οι παÏακάτω υπογÏαφές ήταν μη έγκυÏες:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Οι παÏακάτω υπογÏαφές δεν ήταν δυνατόν να επαληθευτοÏν επειδή δεν ήταν "
+"διαθέσιμο το δημόσιο κλειδί:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Σφάλμα στην εγγÏαφή στο αÏχείο"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr ""
+"Σφάλμα στην ανάγνωση από το διακομιστή, το άλλο άκÏο έκλεισε τη σÏνδεση"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Σφάλμα στην ανάγνωση από το διακομιστή"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Σφάλμα στην εγγÏαφή στο αÏχείο"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Η επιλογή απέτυχε"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Λήξη χÏόνου σÏνδεσης"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Σφάλμα στην εγγÏαφή στο αÏχείο εξόδου"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "ΑδÏνατο το άνοιγμα του αÏχείου %s"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "ΑδÏνατο το άνοιγμα του αÏχείου %s"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr ""
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Αποτυχία οÏÎ¹ÏƒÎ¼Î¿Ï Ï„Î¿Ï… χÏόνου Ï„Ïοποποίησης"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Η σÏνδεση έκλεισε Ï€ÏόωÏα"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Ανεπίλυτες εξαÏτήσεις. Δοκιμάστε με το --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Aν Ï„Ïέξετε 'apt --fix-broken install' ίσως να διοÏθώσετε αυτά τα "
+#~ "Ï€Ïοβλήματα:"
+
+#~ msgid "(not found)"
+#~ msgstr "(δε βÏέθηκαν)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Καθήλωση Πακέτου: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "Δεν υπάÏχει διαθέσιμο δημόσιο κλειδί για τα ακολουθα κλειδιά:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "Ο φάκελος %s έχει εκτÏαπεί"
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "%s εξαÏτήσεις για το %s δεν ικανοποιοÏνται επειδή το %s δεν επιτÏέπεται "
+#~ "στο πακέτο %s"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "%s εξαÏτήσεις για το %s δεν ικανοποιοÏνται επειδή το πακέτο %s δεν βÏέθηκε"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Αποτυχία ικανοποίησης %s εξαÏτήσεων για το %s: Το εγκατεστημένο πακέτο %s "
+#~ "είναι νεώτεÏο"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "%s εξαÏτήσεις για το %s δεν ικανοποιοÏνται επειδή δεν υπάÏχουν διαθέσιμες "
+#~ "εκδόσεις του πακέτου %s που να ικανοποιοÏν τις απαιτήσεις της έκδοσης"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "%s εξαÏτήσεις για το %s δεν ικανοποιοÏνται επειδή το πακέτο %s δεν έχει "
+#~ "υποψήφιαέκδοση"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Αποτυχία ικανοποίησης %s εξάÏτησης για το %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Οι εξαÏτήσεις χτισίματος για το %s δεν ικανοποιοÏνται."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "ΠÏόβλημα κατά την αποσÏνδεση του %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Αποτυχία αποσÏνδεσης του %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "ΧÏήση: apt-cache [επιλογές] εντολή\n"
+#~ " apt-cache [επιλογές] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "το apt-cache είναι ένα Ï‡Î±Î¼Î·Î»Î¿Ï ÎµÏ€Î¹Ï€Î­Î´Î¿Ï… εÏγαλείο που χÏησιμοποιείται για\n"
+#~ "το χειÏισμό των δυαδικών αÏχείων cache του APT, και να εξάγει "
+#~ "πληÏοφοÏίες\n"
+#~ "από αυτά\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Επιλογές:\n"
+#~ " -h Αυτό το κείμενο βοήθειας.\n"
+#~ " -p=? Η cache πακέτων.\n"
+#~ " -s=? Η cache πηγών.\n"
+#~ " -q ΑπενεÏγοποίηση του δείκτη Ï€Ïοόδου.\n"
+#~ " -i Εμφάνιση μόνο των σημαντικών εξαÏτήσεων για την εντολή unmet.\n"
+#~ " -c=? Ανάγνωση Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… αÏχείου Ïυθμίσεων\n"
+#~ " -o=? ΧÏήση μιας αυθαίÏετη επιλογής Ïυθμίσεων, πχ -o dir::cache=/tmp\n"
+#~ "Δείτε τις σελίδες man του apt-cache(8) και apt.conf(5) για πληÏοφοÏίες.\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -d Download only - do NOT install or unpack archives\n"
+#~ " -s No-act. Perform ordering simulation\n"
+#~ " -y Assume Yes to all queries and do not prompt\n"
+#~ " -f Attempt to correct a system with broken dependencies in place\n"
+#~ " -m Attempt to continue if archives are unlocatable\n"
+#~ " -u Show a list of upgraded packages as well\n"
+#~ " -b Build the source package after fetching it\n"
+#~ " -V Show verbose version numbers\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-get(8), sources.list(5) and apt.conf(5) manual\n"
+#~ "pages for more information and options.\n"
+#~ " This APT has Super Cow Powers.\n"
+#~ msgstr ""
+#~ "ΠαÏάμετÏοι:\n"
+#~ " -h Αυτό το βοηθητικό κείμενο.\n"
+#~ " -q ΧωÏίς αναλυτική ένδειξη Ï€Ïοόδου (κατάλληλο για αποθήκευση της "
+#~ "εξόδου)\n"
+#~ " -qq ΧωÏίς λεπτομέÏειες εκτός από τα λάθη\n"
+#~ " -d ΜεταφόÏτωση μόνο - ΜΗΠαποσυμπιέσεις ή εγκαταστήσεις αÏχεία\n"
+#~ " -s ΧωÏίς ενέÏγεια. ΔιενέÏγεια Ï€Ïοσομοίωσης βημάτων εγκατάστασης\n"
+#~ " -y Υπόθεσε Îαι για όλες τις εÏωτήσεις και μην πεÏιμένεις απάντηση\n"
+#~ " -f ΠÏοσπάθησε να συνεχίσεις αν αποτÏχει ο έλεγχος ακεÏαιότητας\n"
+#~ " -m ΠÏοσπάθησε να συνεχίσεις αν υπάÏχουν άγνωστα πακέτα\n"
+#~ " -u Εμφάνισε επίσης ένα κατάλογο από αναβαθμιζόμενα πακέτα\n"
+#~ " -b Χτίσε το πηγαίο πακέτο μετά την μεταφόÏτωση του\n"
+#~ " -V Εμφάνισε λεπτομεÏείς αÏιθμοÏÏ‚ εκδόσεων\n"
+#~ " -c=? Διάβασε αυτό το αÏχείο Ïυθμίσεων\n"
+#~ " -o=? Θέσε μια αυθαίÏετη παÏάμετÏο, πχ -o dir::cache=/tmp\n"
+#~ "Δείτε τις σελίδες εγχειÏιδίου apt-get(8), sources.list(5) και apt."
+#~ "conf(5)\n"
+#~ "για πεÏισσότεÏες πληÏοφοÏίες και επιλογές.\n"
+#~ " This APT has Super Cow Powers.\n"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "ΧÏήση: apt-sortpkgs [παÏάμετÏοι] file1 [file2 ...]\n"
+#~ "\n"
+#~ "το apt-sortpkgs είναι ένα απλό εÏγαλείο για να ταξινομήσετε αÏχεία "
+#~ "πηγαίου κώδικα. Η επιλογή\n"
+#~ "-s δείχνει τον Ï„Ïπο του αÏχείου.\n"
+#~ "\n"
+#~ "ΠαÏάμετÏοι:\n"
+#~ " -h Αυτό το κείμενο βοήθειας\n"
+#~ " -s ΧÏήση του Ï„Ïπου αÏχείου\n"
+#~ " -c=? Ανάγνωση Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… αÏχείου Ïυθμίσεων\n"
+#~ " -o=? Θέσε μια αυθαίÏετη παÏάμετÏο,πχ -o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Η απογονική διεÏγασία απέτυχε"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr ""
+#~ "Θα Ï€Ïέπει να καθοÏίσετε τουλάχιστον ένα πακέτο για να μεταφοÏτώσετε τον "
+#~ "κωδικάτου"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Αποτυχία κατά τη δημιουÏγία διασωληνώσεων"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Αποτυχία κατά την εκτέλεση του gzip "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s για %s είναι μεταγλωττισμένο σε %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Αποτυχία δημιουÏγίας του ΑΡΧΕΙΟΥ"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Λάθος μοÏφή της γÏαμμής %lu στη λίστα πηγών %s (Ανάλυση URI)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr "Λάθος μοÏφή της γÏαμμής %lu στη λίστα πηγών %s (Ανάλυση dist)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "Λάθος μοÏφή της γÏαμμής %lu στη λίστα πηγών %s (dist)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "Λάθος μοÏφή της γÏαμμής %lu στη λίστα πηγών %s (Ανάλυση dist)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "Λάθος μοÏφή της γÏαμμής %lu στη λίστα πηγών %s (Ανάλυση dist)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr "Λάθος μοÏφή της γÏαμμής %lu στη λίστα πηγών %s (Ανάλυση dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Λάθος μοÏφή της γÏαμμής %lu στη λίστα πηγών %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Λάθος μοÏφή της γÏαμμής %lu στη λίστα πηγών %s (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Λάθος μοÏφή της γÏαμμής %lu στη λίστα πηγών %s (Ανάλυση URI)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "Λάθος μοÏφή της γÏαμμής %lu στη λίστα πηγών %s (Απόλυτο dist)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "Λάθος μοÏφή της γÏαμμής %lu στη λίστα πηγών %s (Ανάλυση dist)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr ""
+#~ "Το πακέτο %s %s δε βÏέθηκε κατά την επεξεÏγασία εξαÏτήσεων του αÏχείου"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "ΑδÏνατη η εÏÏεση της κατάστασης της λίστας πηγαίων πακέτων %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Συλλογή ΠαÏοχών ΑÏχείου"
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "ΑδÏνατη η ανάλυση του αÏχείου πακέτου %s (1)"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Η εγγÏαφή κατασκευαστή %s δεν πεÏιέχει ταυτότητα"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Συνολικός χώÏος ΕξαÏτήσεων Εκδόσεων: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Δεν διαθέτετε αÏκετό ελεÏθεÏο χώÏο στο %s"
+
+#~ msgid "Done"
+#~ msgstr "Ετοιμο"
+
+#, fuzzy
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Εγκατάλειψη της εγκατάστασης."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "ΕσωτεÏικό Σφάλμα, η διαδικασία αναβάθμισης χάλασε"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "Το %s δεν είναι έγκυÏο πακέτο DEB."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "ΧÏησιμοποιείται το σημείο Ï€ÏοσάÏτησης %s\n"
+#~ "ΠÏοσαÏτάται το CD-ROM\n"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Αυτό δεν είναι ένα έγκυÏο αÏχείο DEB, δεν πεÏιέχει το μέλος '%s', '%s' ή "
+#~ "'%s'"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "Ανόμοιο MD5Sum"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "ΑδÏνατος ο εντοπισμός ενός αÏχείου για το πακέτο %s. Αυτό ίσως σημαίνει "
+#~ "ότι χÏειάζεται να διοÏθώσετε χειÏοκίνητα το πακέτο."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Αδυναμία εγγÏαφής στο αÏχείο γεγονότων, λόγω αποτυχίας του openpyt() "
+#~ "(είναι Ï€ÏοσαÏτημένο το /dev/pts;)\n"
+
+#, fuzzy
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Άνοιγμα του αÏχείου Ïυθμίσεων %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Αποτυχία διαγÏαφής του %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "ΑδÏνατη η δημιουÏγία του %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Αποτυχία εÏÏεσης της κατάστασης του %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr ""
+#~ "Οι φάκελοι info και temp Ï€Ïέπει να βÏίσκονται στο ίδιο σÏστημα αÏχείων"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Αποτυχία αλλαγής καταλόγου στο φάκελο διαχείÏισης %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "ΕσωτεÏικό Σφάλμα στην ανάκτηση ενός Ονόματος Πακέτου"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Ανάγνωση Λίστας Πακέτων"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Αποτυχία κατά το άνοιγμα του αÏχείου λίστας '%sinfo/%s'.Εάν δε μποÏείτε "
+#~ "να επαναφέÏετε το αÏχείο, τότε αδειάστε το και άμεσα εγκαταστήστε ξανά "
+#~ "την ίδια έκδοση του πακέτου!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Αποτυχία κατά την ανάγνωση του αÏχείου λίστας %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "ΕσωτεÏικό Σφάλμα στη λήψη ενός Κόμβου"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Αποτυχία στο άνοιγμα του αÏχείου παÏακάμψεων %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Το αÏχείο παÏακάμψεων είναι κατεστÏαμμένο"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Μη έγκυÏη γÏαμμή στο αÏχείο παÏακάμψεων: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "ΕσωτεÏικό Σφάλμα στην Ï€Ïοσθήκη μιας παÏάκαμψης"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Η cache των πακέτων θα Ï€Ïέπει να Ï€Ïώτα να αÏχικοποιηθεί"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Αποτυχία εÏÏεσης μιας κεφαλίδας Package:, γÏαμμή %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Ελαττωματική εγγÏαφή ConfFile στο αÏχείο κατάστασης. ΓÏαμμή %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Σφάλμα στην ανάλυση του MD5. ΓÏαμμή %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "ΑδÏνατη η αλλαγή σε %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Αποτυχία ÎµÎ½Ï„Î¿Ï€Î¹ÏƒÎ¼Î¿Ï ÎµÎ½ÏŒÏ‚ έγκυÏου αÏχείου control"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "ΑδÏνατο το άνοιγμα διασωλήνωσης για το %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Σφάλμα ανάγνωσης από τη διεÏγασία %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Λήψη μίας και μόνης γÏαμμής επικεφαλίδας πάνω από %u χαÏακτήÏες"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "ΚακογÏαμμένη παÏακαμπτήÏια %s γÏαμμή %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "ΚακογÏαμμένη παÏακαμπτήÏια %s γÏαμμή %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "ΚακογÏαμμένη παÏακαμπτήÏια %s γÏαμμή %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "αποσυμπιεστής"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr ""
+#~ "αναγνώστηκαν, απομένουν ακόμη %lu για ανάγνωση αλλά δεν απομένουν άλλα"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "γÏάφτηκαν, απομένουν %lu για εγγÏαφή αλλά χωÏίς επιτυχία"
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "ΠÏοέκυψε σφάλμα κατά την επεξεÏγασία του %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "ΠÏοέκυψε σφάλμα κατά την επεξεÏγασία του %s (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "ΠÏοέκευψε σφάλμα κατά την επεξεÏγασία του %s (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "ΠÏοέκυψε σφάλμα κατά την επεξεÏγασία του %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "ΠÏοέκευψε σφάλμα κατά την επεξεÏγασία του %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "ΠÏοέκυψε σφάλμα κατά την επεξεÏγασία του %s (NewVersion1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "ΠÏοέκυψε σφάλμα κατά την επεξεÏγασία του %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "ΠÏοέκευψε σφάλμα κατά την επεξεÏγασία του %s (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "ΠÏοέκυψε σφάλμα κατά την επεξεÏγασία του %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "ΠÏοέκυψε σφάλμα κατά την επεξεÏγασία του %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "ΕσωτεÏικό Σφάλμα, αδυναμία ÎµÎ½Ï„Î¿Ï€Î¹ÏƒÎ¼Î¿Ï Ï„Î¿Ï… μέλους"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr "Ε: Λίστα ΟÏισμάτων από Acquire::gpgv::Options Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î·. Έξοδος."
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "ΠÏοέκυψε σφάλμα κατά την επεξεÏγασία του %s (NewVersion2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "Λάθος μοÏφή της γÏαμμής %u στη λίστα πηγών %s (id κατασκευαστή)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "ΑδÏνατη η εÏÏεση του συνόλου κλειδιών '%s'"
+
+#~ msgid "Could not patch file"
+#~ msgstr "ΑδÏνατη η διόÏθωση του αÏχείου"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "ΕπεξεÏγασία triggers για το %s"
+
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "Εφόσον ζητήσατε μια και μόνη λειτουÏγία, είναι Ï€Î¿Î»Ï Ï€Î¹Î¸Î±Î½ÏŒÎ½ ότι\n"
+#~ "το πακέτο αυτό δεν είναι εγκαταστάσιμο και θα Ï€Ïέπει να κάνετε μια\n"
+#~ "αναφοÏά σφάλματος για αυτό το πακέτο."
diff --git a/po/es.po b/po/es.po
new file mode 100644
index 000000000..22945fb7a
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,4932 @@
+# Advanced Package Transfer - APT message translation catalog
+# Copyright (C) 2002-2010 Free Software Foundation, Inc.
+#
+#
+# Current translator:
+# - Manuel "Venturi" Porras Peralta <venturi@openmailbox.org>, 2014-2016
+#
+# Previous Translators and reviewers:
+# - Rafael Sepulveda <drs@gnulinux.org.mx>, 2002.
+# - Asier Llano Palacios <asierllano@infonegocio.com>
+# - Ruben Porras Campo <nahoo@inicia.es> 2004
+# - Javier Fernandez-Sanguino <jfs@debian.org> 2003, 2006-2008
+#
+# Traductores, si no conoce el formato PO, merece la pena leer la
+# documentación de gettext, especialmente las secciones dedicadas a este
+# formato, por ejemplo ejecutando:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Equipo de traducción al español, por favor lean antes de traducir
+# los siguientes documentos:
+#
+# - El proyecto de traducción de Debian al español
+# http://www.debian.org/intl/spanish/
+# especialmente las notas y normas de traducción en
+# http://www.debian.org/intl/spanish/notas
+#
+# Si tiene dudas o consultas sobre esta traducción consulte con el último
+# traductor (campo Last-Translator) y ponga en copia a la lista de
+# traducción de Debian al español (<debian-l10n-spanish@lists.debian.org>)
+# Manuel "Venturi" Porras Peralta <venturi@openmailbox.org>, 2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 0.8.10\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2016-01-26 01:51+0100\n"
+"Last-Translator: Manuel \"Venturi\" Porras Peralta <venturi@openmailbox."
+"org>\n"
+"Language-Team: Español; Castellano <debian-l10n-spanish@lists.debian.org>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-POFile-SpellExtra: BD getaddrinfo dist show xvcg Filename sources cachés\n"
+"X-POFile-SpellExtra: dumpavail apport scanpackages yes pts URIs upgrade\n"
+"X-POFile-SpellExtra: Hash TAR mmap fix Immediate li source add Pathprefix\n"
+"X-POFile-SpellExtra: ftparchive policy main URIS qq Resolve Incoming\n"
+"X-POFile-SpellExtra: NewFileVer depends get libc GPG URI sdiversions\n"
+"X-POFile-SpellExtra: Length Limit PASS ConfFile NewVersion showpkg IPC\n"
+"X-POFile-SpellExtra: Super unmet APT registrable NewPackage AddDiversion\n"
+"X-POFile-SpellExtra: dists release dselect dir Hmmm debconf force dump ej\n"
+"X-POFile-SpellExtra: list Section GraphViz Priority FindPkg gencaches\n"
+"X-POFile-SpellExtra: Valid remove Ign DEB PORT LoopBreak tmp ftp\n"
+"X-POFile-SpellExtra: AutoRemover stats AF Until delink unmarkauto firms\n"
+"X-POFile-SpellExtra: ref Dpkg tar autoremove Obj missing update binary\n"
+"X-POFile-SpellExtra: sobreescribe proxy org packages debs generate MD\n"
+"X-POFile-SpellExtra: search ProxyLogin limin AllUpgrade Md Range dotty Pre\n"
+"X-POFile-SpellExtra: NewFileDesc empaquetamiento root realloc gpgv apt\n"
+"X-POFile-SpellExtra: pkgnames Release BinaryPath old DeLink showauto\n"
+"X-POFile-SpellExtra: pkgProblemResolver parseable nstall\n"
+"X-POFile-SpellExtra: desempaquetamiento script DESACTUALIZARÃN\n"
+"X-POFile-SpellExtra: InstallPackages PreDepende lu sobreescribir Packages\n"
+"X-POFile-SpellExtra: shell desincronizado override MaxReports cdrom dpkg\n"
+"X-POFile-SpellExtra: socket info md Force temp dep CollectFileProvides\n"
+"X-POFile-SpellExtra: spartial scansources Only dev purge nfs Intro install\n"
+"X-POFile-SpellExtra: deb Sobreescribiendo openpty USER UsePackage vd\n"
+"X-POFile-SpellExtra: markauto DB DropNode Content rdepends conf zu hash\n"
+"X-POFile-SpellExtra: check contents paq Err Sources MMap lih decompresor\n"
+"X-POFile-SpellExtra: build config EPRT http Package liseg dscs Remove\n"
+"X-POFile-SpellExtra: sortpkgs sB man extracttemplates bzr potato clear\n"
+"X-POFile-SpellExtra: autoclean showsrc desactualizados clean gzip TYPE\n"
+"X-POFile-SpellExtra: sinfo Acquire\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Firma del archivo inválida"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Error leyendo la cabecera de miembro del archivo"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Cabecera de miembro del archivo inválida %s"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Cabecera de miembro del archivo inválida"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "El archivo es muy pequeño"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Fallo al leer las cabeceras del archivo"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "No se pudo encontrar un compresor configurado para «%s»"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Archivo dañado"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr ""
+"Se produjo un fallo al calcular la suma de control de tar, archivo dañado"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Cabecera del TAR tipo %u desconocida, miembro %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Este no es un archivo DEB válido, falta el miembro «%s»"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Error interno, no se pudo localizar el miembro %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Archivo de control inanalizable"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Fallo al escribir el archivo %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Fallo al cerrar el archivo %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "La trayectoria %s es demasiado larga"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Desempaquetando %s más de una vez"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "El directorio %s está desviado"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "El paquete está tratando de escribir al objetivo desviado %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "La ruta de la desviación es demasiado larga"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Fallo al leer %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Fallo al renombrar %s a %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "Se está reemplazando el directorio %s por un no-directorio"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Fallo al localizar el nodo en su posición en el hash"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "La ruta es demasiado larga"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Sobreescribiendo concordancia del paquete sin versión para %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "El archivo %s/%s sobreescribe al que está en el paquete %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "No se pudo leer %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "No se pudo leer %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode llamado en un nodo todavía conectado"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "¡Fallo al localizar el elemento enlazado!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Fallo al asignar una desviación"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Error interno en AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Intentando sobreescribir una desviación, %s -> %s y %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Doble suma de desviación %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Fichero de configuración duplicado %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+"No se puede actualizar de un repositorio como este de forma segura y por "
+"tanto está deshabilitado por omisión."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+"Los datos de un repositorio como este no se pueden autenticar y por tanto su "
+"uso es potencialmente peligroso."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+"Vea la página de manual apt-secure(8) para los detalles sobre la creación de "
+"repositorios y la configuración de usuarios."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "El repositorio «%s» ya no está firmado."
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "El repositorio «%s» no tiene un fichero de Publicación."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+"Normalmente no está permitido, pero se ha dado la opción «Acquire::"
+"AllowDowngradeToInsecureRepositories» para anularlo."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is not signed."
+msgstr "El repositorio «%s» no está firmado."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "El repositorio «%s» no tiene un fichero de Publicación."
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr ""
+"Omitiendo el uso del fichero configurado «%s» ya que el repositorio «%s» "
+"proporciona solo información de seguridad débil para ello"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "No se pudo leer el enlace %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "La suma hash difiere"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "falló el cambio de nombre, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "El tamaño difiere"
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr "Formato inválido de fichero"
+
+#: apt-pkg/acquire-item.cc
+msgid "Signature error"
+msgstr "Error de firma"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+"El fichero firmado en claro no es válido, «%s» obtenido (¿la red requiere "
+"autenticación?)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"Se produjo un error durante la verificación de las firmas. El repositorio no "
+"está actualizado y se utilizarán los ficheros de índice antiguos. Error de "
+"GPG: %s: %s"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "Error de GPG: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+"Omitiendo el uso del fichero configurado «%s» ya que el repositorio «%s» no "
+"admite la arquitectura «%s»"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"No se pudo encontrar la entrada esperada «%s» en el archivo "
+"«Release» (entrada incorrecta en «sources.list» o fichero mal formado)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+"Omitiendo el uso del fichero configurado «%s» ya que el repositorio «%s» "
+"proporciona solo información de seguridad débil para ello"
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"El archivo «Release» para %s está caducado (inválido desde %s). No se "
+"aplicará ninguna actualización de este repositorio."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Distribución conflictiva: %s (se esperaba %s, pero se obtuvo %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"No se pudo localizar un archivo para el paquete %s. Esto puede significar "
+"que necesita arreglar manualmente este paquete (debido a que falta una "
+"arquitectura)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+"No se puede encontrar una fuente para descargar la versión «%s» de «%s»"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"Los archivos de índice de paquetes están dañados. No existe un campo "
+"«Filename:» para el paquete %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "No está disponible el informe de cambios para %s=%s"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "No se pudo encontrar el método %s."
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr "¿Está instalado el paquete %s?"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "El método %s no se inició correctamente"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+"Inserte el disco con la etiqueta: «%s» en la unidad «%s» y pulse [Enter]."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Falta el directorio de listas %spartial."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Falta el directorio de archivos %spartial."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "No se pudo bloquear el directorio %s"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+"No existe el usuario de entorno seguro «%s», no se pueden ignorar los "
+"privilegios"
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+#| msgid ""
+#| "Can't drop privileges for downloading as file '%s' couldn't be accessed "
+#| "by user '%s'."
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+"No se podrán ignorar los privilegios para descargar mientras no se pueda "
+"acceder a «%s» con el usuario «%s»."
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr "No se admite la limpieza de «%s»"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "No se pudo cambiar a %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Descargando fichero %li de %li (falta %s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Descargando fichero %li de %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"El paquete %s necesita ser reinstalado, pero no se encuentra el archivo para "
+"ello."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Error, pkgProblemResolver::Resolve generó cortes, esto puede deberse a "
+"paquetes retenidos."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr ""
+"No se pudieron corregir los problemas, usted ha retenido paquetes rotos."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+"No se pudieron analizar o abrir las listas de paquetes o el archivo de "
+"estado."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Tal vez deba ejecutar «apt-get update» para corregir estos problemas"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "No se pudieron leer las listas de fuentes."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Error de compilación de expresiones regulares - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "No se encontró la distribución «%s» para «%s»"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "No se encontró la versión «%s» para «%s»"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "No se pudo encontrar la tarea «%s»"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "No se pudo encontrar ningún paquete con la expresión regular «%s»"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "No se pudo encontrar ningún paquete usando «*» con «%s»"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "No se ha podido localizar el paquete %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+"No se pueden seleccionar distintas versiones del paquete «%s» porque es "
+"puramente virtual"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"No se puede seleccionar la última versión del paquete «%s» dado que es "
+"puramente virtual"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+"No se puede seleccionar la versión candidata del paquete %s dado que no "
+"tiene candidatos"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"No se puede seleccionar la versión instalada del paquete «%s» puesto que no "
+"está instalado"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"No se puede seleccionar una versión instalada o candidata para el paquete "
+"«%s» dado que éste no tiene ninguna de éstas"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Línea %u demasiado larga en la lista de fuentes %s."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Desmontando el CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Usando el punto de montaje %s del CD-ROM\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Esperando el disco...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Montando el CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Identificando... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Etiqueta guardada: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Buscando en el disco ficheros de índices...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Se encontraron %zu índices de paquetes, %zu índices de fuentes, %zu índices "
+"de traducción y %zu firmas\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"No se pudo localizar ningún archivo de paquete, ¿quizás este no sea un disco "
+"de Debian o sea de otra arquitectura?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Se encontró la etiqueta: «%s»\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Ese no es un nombre válido, inténtelo de nuevo.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Este disco se llama: \n"
+"«%s»\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Copiando las listas de paquetes..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Escribiendo nueva lista de fuentes\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Las entradas de la lista de fuentes para este disco son:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "No se pudo leer %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "No se puede obtener información del punto de montaje %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "No pude montar el cdrom"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr ""
+"No tiene sentido la opción de línea de órdenes «%c» [de %s] combinada con "
+"las otras opciones."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr ""
+"No tiene sentido la opción de línea de órdenes %s combinada con las otras "
+"opciones"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "La opción de línea de órdenes %s no es un booleano"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "La opción %s necesita un argumento."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+"Opción %s: La especificación del elemento de configuración debe tener un "
+"=<val>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "La opción %s exige un argumento entero, no «%s»"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Opción «%s» demasiado larga"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "El sentido %s no se entiende, pruebe verdadero o falso."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Operación inválida: %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Tipo de abreviación no reconocida: «%c»"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Abriendo fichero de configuración %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Error de sintaxis %s:%u: No hay un nombre al comienzo del bloque."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Error de sintaxis %s:%u: Marca mal formada"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Error de sintaxis %s:%u: Basura extra después del valor"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"Error de sintaxis %s:%u: Las directivas sólo se pueden poner en el primer "
+"nivel"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Error de sintaxis %s:%u: Demasiadas inclusiones anidadas"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Error de sintaxis %s:%u: Incluido desde aquí"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Error de sintaxis %s:%u: Directiva «%s» no soportada"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Error de sintaxis %s:%u: la directiva «clear» tiene que incluir un árbol de "
+"opciones como argumento"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Error de sintaxis %s:%u: Basura extra al final del archivo"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Se produjo un problema al desligar el fichero %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "No se utilizan bloqueos para el fichero de bloqueo de sólo lectura %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "No se pudo abrir el fichero de bloqueo «%s»"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "No se utilizan bloqueos para el fichero de bloqueo de montaje nfs %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "No se pudo bloquear %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+"La lista de los ficheros no se pudo crear, ya que «%s» no es un directorio"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr "Omitiendo «%s» del directorio «%s», ya que no es un fichero regular"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+"Omitiendo fichero «%s» del directorio «%s», ya que no tiene extensión de "
+"nombre de fichero"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"Omitiendo el fichero «%s» del directorio «%s», ya que tiene una extensión de "
+"nombre de fichero no válida"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Se esperaba %s pero no estaba presente"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "El subproceso %s recibió un fallo de segmentación."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "El subproceso %s recibió la señal %u."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "El subproceso %s devolvió un código de error (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "El subproceso %s terminó de forma inesperada"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Error de lectura"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Error de escritura"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Se produjo un problema al cerrar el fichero gzip %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr "Fin de fichero inesperado"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "No se pudo crear el subproceso IPC"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "No se pudo ejecutar el compresor "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "No pude abrir el fichero %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "No se pudo abrir el descriptor de fichero %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "leídos, todavía quedaban por leer %llu pero no queda ninguna"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "escritos, todavía quedaban por escribir %llu pero no se pudo hacer"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Se produjo un problema al cerrar el fichero %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Se produjo un problema al renombrar el fichero %s a %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Se produjo un problema al sincronizar el fichero"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to mkstemp %s"
+msgstr "No pude leer %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "No se pudo escribir en %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "No puedo hacer mmap de un fichero vacío"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "No se puede hacer mmap de %llu bytes"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "No pude duplicar el descriptor de fichero %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "No se pudo cerrar «mmap»"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "No pude sincronizar «mmap»"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "No pude hacer mmap de %lu bytes"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Falló al truncar el archivo"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"La asignación dinámica MMap no tiene más espacio. Por favor, incrementa el "
+"valor de «APT::Cache-Start». El valor actual es: %lu (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"No se pudo incrementar el tamaño del MMap dado que se ha alcanzado ya el "
+"límite de %lu bytes."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"No se pudo incrementar el tamaño de MMap dado que el usuario ha "
+"deshabilitado el crecimiento automático."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... ¡Error!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Hecho"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr "..."
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... %u%%"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%lid %lih %limin %lis"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%lih %limin %lis"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%limin %lis"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%lis"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Selección %s no encontrada"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+"El objetivo %s quiere obtener el mismo fichero (%s) que %s del origen %s"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr "El objetivo %s (%s) está configurado varias veces en %s y %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "No se pudo leer el archivo «Release» %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "No se encontraron secciones en el archivo «Release» %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "No existe una entrada «Hash» en el archivo «Release» %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+"No existe una entrada «Hash» en el archivo «Release» %s, lo cual se "
+"considera suficientemente robusto para propósitos de seguridad"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Entrada «%s» inválida en el archivo «Release» %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+"Valores establecidos en conflicto para la opción %s según el origen %s %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+"Valor establecido inválido para la opción %s según el origen %s %s (%s)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+"Valores establecidos en conflicto para la opción %s según el origen %s %s"
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "No se pudo analizar el archivo de paquetes %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"No se pudo bloquear el directorio de administración (%s), ¿quizás haya algún "
+"otro proceso utilizándolo?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr ""
+"No se pudo bloquear el directorio de administración (%s), ¿está como "
+"superusuario?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"se interrumpió la ejecución de dpkg, debe ejecutar manualmente «%s» para "
+"corregir el problema"
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "No bloqueado"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "Instalando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Configurando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Eliminando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "Borrando completamente %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "Se detectó la desaparición de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Ejecutando disparador post-instalación %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "%s instalado"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Falta el directorio «%s»."
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "No se pudo abrir el fichero «%s»"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Preparando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Desempaquetando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Preparándose para configurar %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Preparándose para eliminar %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "%s eliminado"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Preparándose para eliminar completamente %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "%s se borró completamente"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Can not write log (%s)"
+msgstr "No se pudo escribir el informe (%s)"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr "¿Está montado «/dev/pts»?"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "Se interrumpió la operación antes de que pudiera terminar"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+"No se escribió ningún informe «apport» porque ya se ha alcanzado el valor de "
+"«MaxReports»"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "problemas de dependencias - dejando sin configurar"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"No se escribió un informe «apport» porque el mensaje de error indica que es "
+"un mensaje de error asociado a un fallo previo."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"No se escribió un informe «apport» porque el mensaje de error indica que el "
+"error es de disco lleno"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"No se escribió un informe «apport» porque el mensaje de error indica un "
+"error de memoria excedida"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"No se escribió un informe «apport» porque el mensaje de error indica un "
+"problema en el sistema local"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"No se escribió un informe «apport» porque el mensaje de error indica un "
+"error de E/S de dpkg"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Creando árbol de dependencias"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Versiones candidatas"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Generación de dependencias"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Leyendo la información de estado"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "No se pudo abrir el fichero de estado %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Falló la escritura del fichero de estado temporal %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "Enviar situación al solucionador"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "Enviar petición al solucionador"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "Preparar para recibir una solución"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr "Falló solucionador externo sin un mensaje de error apropiado"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "Ejecutar solucionador externo"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Execute external planner"
+msgstr "Ejecutar solucionador externo"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send request to planner"
+msgstr "Enviar petición al solucionador"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send scenario to planner"
+msgstr "Enviar situación al solucionador"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "External planner failed without a proper error message"
+msgstr "Falló solucionador externo sin un mensaje de error apropiado"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "%i registros escritos.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "%i registros escritos con %i ficheros de menos.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "%i registros escritos con %i ficheros mal emparejados\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"%i registros escritos con %i fichero de menos y %i ficheros mal emparejados\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "No se pudo encontrar un registro de autenticación para: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "La suma hash difiere para: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "No se admite el sistema de paquetes «%s»"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "No se pudo determinar un tipo de sistema de paquetes adecuado"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr "Progreso: [%3i%%]"
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "Ejecutando dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"No se pudo realizar la configuración inmediata de «%s». Consulte la página "
+"de manual con «man 5 apt.conf» bajo «APT::Immediate-Configure» para más "
+"información. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "No se pudo configurar «%s»"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Esta ejecución de la instalación requiere eliminar temporalmente el paquete "
+"esencial %s debido a un bucle de Conflictos/Pre-Dependencias. Normalmente "
+"esto es malo, pero si quiere hacerlo de todas formas, active la opción |APT::"
+"Force-LoopBreak»."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Caché de paquetes vacía."
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "El fichero de caché de paquetes está dañado"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "El fichero de caché de paquetes es una versión incompatible"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Esta versión de APT no admite el sistema de versiones «%s»"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr ""
+"La caché de paquetes se creó para una arquitectura diferente: %s contra %s"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr ""
+"El fichero de caché de paquetes está dañado, la suma de comprobación está mal"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Depende"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "PreDepende"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Sugiere"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Entra en conflicto"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Recomienda"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Reemplaza"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Rompe"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Mejora"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Hace obsoleto"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "importante"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "requiere"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "estándar"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "extra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "opcional"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "La caché tiene una versión incompatible de sistema de versiones"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Se produjo un error mientras se procesaba %s (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "Excedió la cantidad de nombres de paquetes que admite este APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Excedió la cantidad de versiones que admite este APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Excedió la cantidad de descripciones que admite este APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "Excedió la cantidad de dependencias que admite este APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Leyendo lista de paquetes"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Error de E/S al guardar la caché fuente"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "El tipo de fichero de índice «%s» no se admite"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"El valor «%s» no es válido para APT::Default-Release ya que dicha "
+"distribución no está disponible en las fuentes"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr ""
+"Registro inválido en el archivo de preferencias %s, no tiene cabecera "
+"«Package»"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "No se entendió el pin tipo %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+"%s: El valor %s está fuera del rango de las prioridades de pin válido (%d a "
+"%d)"
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "No hay prioridad especificada para pin (o es cero)"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Entrada %u mal especificada en %s fichero %s (%s)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Abriendo %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Línea %u mal formada en la lista de fuentes %s (tipo)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Tipo «%s» desconocido en la línea %u de la lista de fuentes %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Predominio %u mal especificado en la lista de fuentes %s (tipo)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Tipo «%s» desconocido en el bloque %u de la lista de fuentes %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr "Se ha suministrado el fichero no admitido %s en la línea de órdenes"
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Debe poner algunos URIs fuente («source») en su sources.list"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr "No se pudo convertir %s a entero: fuera de rango"
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Fallo al obtener %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"No se han podido descargar algunos archivos de índice, se han omitido, o se "
+"han utilizado unos antiguos en su lugar."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calculando la actualización"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Obj:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Des:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Ign:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Err:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Descargados %sB en %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Trabajando]"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Cambio de medio: Inserte el disco etiquetado como\n"
+" «%s»\n"
+"en la unidad «%s» y pulse [Enter]\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Corrigiendo dependencias..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " falló."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "No se pueden corregir las dependencias"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "No se puede minimizar el conjunto de actualización"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Listo"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "Tal vez quiera ejecutar «apt --fix-broken install» para corregirlo."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Dependencias incumplidas. Intente «apt --fix-broken install» sin paquetes (o "
+"especifique una solución)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr "Ordenando"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Nota, seleccionando «%s» para la tarea «%s»\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Nota, seleccionando «%s» para el global «%s»\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Nota, seleccionando «%s» para la expresión regular «%s»\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "El paquete %s es un paquete virtual provisto por:\n"
+
+#: apt-private/private-cacheset.cc
+msgid " [Installed]"
+msgstr "[Instalado]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [No es la versión candidata]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Necesita seleccionar explícitamente uno para instalar."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"El paquete %s no está disponible, pero algún otro paquete hace referencia\n"
+"a él. Esto puede significar que el paquete falta, está obsoleto o sólo se\n"
+"encuentra disponible desde alguna otra fuente\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Sin embargo, los siguientes paquetes lo reemplazan:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "El paquete «%s» no tiene un candidato para la instalación"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "No pueden eliminarse los paquetes virtuales como «%s»\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"El paquete «%s» no está instalado, no se eliminará. ¿Quiso decir «%s»?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "El paquete «%s» no está instalado, no se eliminará\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Nota, seleccionando «%s» en lugar de «%s»\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr "Órdenes más utilizadas:"
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr "Vea %s para más información sobre las órdenes disponibles."
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+"Las opciones y sintaxis de configuración se detallan en apt.conf(5).\n"
+"Puede encontrar información sobre cómo configurar las fuentes en sources."
+"list(5).\n"
+"Las elecciones de versión y de paquetes se pueden expresar por medio de "
+"apt_preferences(5).\n"
+"Los detalles de la seguridad están disponibles en apt-secure(8).\n"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Este APT tiene poderes de Super Vaca."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr "Este Ayudante de APT tiene poderes de Super Llanto."
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "No se encontró ningún paquete"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "ATENCIÓN: ¡No se han podido autenticar los siguientes paquetes!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Aviso de autenticación ignorado.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Algunos paquetes no se pueden autenticar"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "¿Instalar estos paquetes sin verificación?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+"--force-yes está desactualizado, en su lugar utilice una de las opciones que "
+"empiezan por --allow."
+
+#: apt-private/private-download.cc
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr ""
+"Había paquetes sin autenticar y se utilizó -y sin --allow-unauthenticated"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "No se pudo determinar el espacio libre en %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "No tiene suficiente espacio libre en %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "No se puede bloquear el directorio de descarga"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"No se pudieron instalar algunos paquetes. Esto puede significar que\n"
+"usted pidió una situación imposible o, si está usando la distribución\n"
+"inestable, que algunos paquetes necesarios aún no se han creado o se\n"
+"han sacado de «Incoming»."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "La siguiente información puede ayudar a resolver la situación:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Paquetes rotos"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"No se pudieron obtener algunos archivos, ¿quizás deba ejecutar «apt-get "
+"update» o deba intentarlo de nuevo con --fix-missing?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Error interno, ¡se llamó a «InstallPackages» con paquetes rotos!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr ""
+"Se necesita eliminar paquetes, pero está desactivada la posibilidad de "
+"eliminar."
+
+#: apt-private/private-install.cc
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr ""
+"Se eliminaron paquetes esenciales y se utilizó -y sin --allow-remove-"
+"essential."
+
+#: apt-private/private-install.cc
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr ""
+"Se instalaron versiones anteriores de algunos paquetes y se utilizó -y sin --"
+"allow-downgrades."
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+"Se cambiaron los paquetes retenidos y se utilizó -y sin --allow-change-held-"
+"packages."
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Error interno, no terminó la ordenación"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Qué extraño... Los tamaños no concuerdan, mande un correo a apt@packages."
+"debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Se necesita descargar %sB/%sB de archivos.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Se necesita descargar %sB de archivos.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr ""
+"Se utilizarán %sB de espacio de disco adicional después de esta operación.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Se liberarán %sB después de esta operación.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "Se especificó «Trivial Only» pero esta no es una operación trivial."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Sí, ¡haga lo que le digo!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Está a punto de hacer algo potencialmente dañino\n"
+"Para continuar escriba la frase «%s»\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Anulado."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "¿Desea continuar?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "No se pudieron descargar algunos archivos"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Descarga completa y en modo de solo descarga"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "Actualmente no se admite --fix-missing ni intercambio de medio"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "No se pudieron corregir los paquetes que faltan."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Anulando la instalación."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"El paquete mostrado a continuación ha desaparecido de su sistema\n"
+"dado que otros paquetes han sobrescrito todos sus paquetes:"
+msgstr[1] ""
+"Los paquetes mostrados a continuación han desaparecido de su sistema\n"
+"dado que otros paquetes han sobreescrito todos sus paquetes:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Nota: dpkg realiza esto de forma automática y a propósito."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+"Se supone que no se van a eliminar cosas, no se puede iniciar «AutoRemover»"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Parece que «AutoRemover» destruyó algo y eso no debería haber pasado.\n"
+"Envíe un informe de errores al programa apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Error interno, «AutoRemover» rompió cosas"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"El paquete indicado a continuación se instaló de forma automática y ya no es "
+"necesario."
+msgstr[1] ""
+"Los paquetes indicados a continuación se instalaron de forma automática y ya "
+"no son necesarios."
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "Se instaló %lu paquete de forma automática y ya no es necesario.\n"
+msgstr[1] ""
+"Se instalaron %lu paquetes de forma automática y ya no son necesarios.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Utilice «%s» para eliminarlo."
+msgstr[1] "Utilice «%s» para eliminarlos."
+
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "Se instalarán los siguientes paquetes adicionales:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Paquetes sugeridos:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Paquetes recomendados:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "Omitiendo %s, ya está instalado y no está activada la actualización.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"Omitiendo %s, no está instalado y solo se están solicitando "
+"actualizaciones.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "No es posible reinstalar el paquete %s, no se pudo descargar.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s ya está en su versión más reciente (%s).\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "fijado %s como instalado manualmente.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Versión seleccionada «%s» (%s) para «%s»\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Versión seleccionada «%s» (%s) para «%s» debido a «%s»\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr "Listando"
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] "Hay %i versión adicional. Utilice la opción «-a» para verla"
+msgstr[1] "Hay %i versiones adicionales. Utilice la opción «-a» para verlas"
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"NOTA: ¡Esto es sólo una simulación!\n"
+" %s necesita privilegios de administrador para la ejecución real.\n"
+" Tenga también en cuenta que se han desactivado los bloqueos,\n"
+" ¡no dependa la situación real actual de la relevancia de esto!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr "desconocido"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr "[instalado, actualizable a: %s]"
+
+#: apt-private/private-output.cc
+msgid "[installed,local]"
+msgstr "[instalado, local]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr "[instalado, autodesinstalable]"
+
+#: apt-private/private-output.cc
+msgid "[installed,automatic]"
+msgstr "[instalado, automático]"
+
+#: apt-private/private-output.cc
+msgid "[installed]"
+msgstr "[instalado]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr "[actualizable desde: %s]"
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr "[configuración-residual]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "pero %s está instalado"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "pero %s va a ser instalado"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "pero no es instalable"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "pero es un paquete virtual"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "pero no va a instalarse"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "pero no está instalado"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " o"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Los siguientes paquetes tienen dependencias incumplidas:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Se instalarán los siguientes paquetes NUEVOS:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Los siguientes paquetes se ELIMINARÃN:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Los siguientes paquetes se han retenido:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Se actualizarán los siguientes paquetes:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Se DESACTUALIZARÃN los siguientes paquetes:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Se cambiarán los siguientes paquetes retenidos:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (por %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"ATENCIÓN: Se van a eliminar los siguientes paquetes esenciales.\n"
+"¡NO debe hacerse a menos que sepa exactamente lo que está haciendo!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu actualizados, %lu nuevos se instalarán, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu reinstalados, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu desactualizados, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu para eliminar y %lu no actualizados.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu no instalados del todo o eliminados.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[S/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[s/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "S"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "Debe proporcionar al menos un patrón de búsqueda"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr "Buscar en todo el texto"
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "El archivo de paquetes %s está desincronizado."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] "Hay %i registro adicional. Utilice la opción «-a» para verlo."
+msgstr[1] "Hay %i registros adicionales. Utilice la opción «-a» para verlos."
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr "no es un paquete real (virtual)"
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Archivos de paquetes:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+"Caché fuera de sincronismo, no se puede hacer x-ref a un archivo de paquetes"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Paquetes con pin:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr "%s -> %s con prioridad %d\n"
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Instalados: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Candidato: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(ninguno)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Tabla de versión:"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "No se pudo encontrar ningún paquete para la arquitectura «%s»"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "No se pudo encontrar el paquete «%s» en la versión «%s»"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "No se pudo encontrar el paquete «%s» en la versión de publicación «%s»"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Escogiendo «%s» como paquete fuente en lugar de «%s»\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "No se pudo encontrar la versión «%s» del paquete «%s»"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Debe especificar al menos un paquete para obtener su código fuente"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "No se pudo encontrar el paquete de fuentes para %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"NOTA: el empaquetamiento de «%s» se mantiene en el sistema de control de "
+"versiones «%s» en:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Utilice:\n"
+"%s\n"
+"para obtener las últimas actualizaciones (posiblemente no publicadas aún) "
+"del paquete.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Omitiendo el fichero ya descargado «%s»\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Se necesita descargar %sB/%sB de archivos fuente.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Se necesita descargar %sB de archivos fuente.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Fuente obtenida %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "No se pudieron obtener algunos archivos."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr ""
+"Omitiendo desempaquetamiento de paquetes fuente ya desempaquetados en %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Falló la orden de desempaquetamiento «%s».\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Compruebe que el paquete «dpkg-dev» esté instalado.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Falló la orden de construcción «%s».\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "No se pudo obtener información de dependencias de construcción para %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s no tiene dependencias de construcción.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Debe especificar al menos un paquete para verificar sus dependencias de "
+"construcción"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"No hay información disponible de arquitectura para %s. Vea apt.conf(5) APT::"
+"Arquitecturas para la configuración"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+"Nota, se está utilizando «%s» para obtener las dependencias de compilación\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr ""
+"Nota, utilizando el fichero «%s» para obtener las dependencias de "
+"construcción\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "No se pudieron procesar las dependencias de construcción"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Fallo al analizar %s. ¿Editar de nuevo?"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr "El fichero «%s» cambió, ejecute «apt-get update»."
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "El paquete %s versión %s tiene dependencias incumplidas:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "La orden de actualización no necesita argumentos"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+"Se puede actualizar %i paquete. Ejecute «apt list --upgradable» para verlo.\n"
+msgstr[1] ""
+"Se pueden actualizar %i paquetes. Ejecute «apt list --upgradable» para "
+"verlos.\n"
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr "Todos los paquetes están actualizados."
+
+#: cmdline/apt-cache.cc
+msgid "apt-cache stats does not take any arguments"
+msgstr "«apt-cache stats» no necesita argumentos"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Nombres de paquetes totales: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Estructuras de paquetes totales: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Paquetes normales: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Paquetes virtuales puros: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Paquetes virtuales únicos: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Paquetes virtuales mixtos: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Faltan: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Versiones diferentes totales: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Descripciones diferentes totales: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Dependencias totales: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Relaciones versión/archivo totales: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Relaciones descripción/archivo totales: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Mapeo Total de Provisiones: "
+
+# globbed -> globalizadas ? (jfs)
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Cadenas globalizadas totales: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Espacio desperdiciado total: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Espacio registrado total: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr "Esta orden está desfasada. Utilice «apt-mark showauto» en su lugar."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+"Uso: apt-cache [opciones] orden\n"
+" apt-cache [opciones] show paq1 [paq2 ...]\n"
+"\n"
+"apt-cache solicita y muestra la información disponible sobre los paquetes\n"
+"instalados y los instalables. Funciona exclusivamente con los datos "
+"obtenidos\n"
+"en el caché local mediante la orden «update», como «apt-get». Por tanto, \n"
+"la información mostrada puede estar desactualizada si la última "
+"actualización\n"
+"se hizo hace mucho, pero a cambio apt-cache funciona independientemente de "
+"la\n"
+"disponibilidad de las fuentes configuradas (por ejemplo, sin conexión).\n"
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Muestra la información de fuentes"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Busca en la lista de paquetes según un patrón de expresión regular"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Muestra la información de dependencias en bruto para el paquete"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Muestra la información de dependencias inversas del paquete"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Muestra un registro legible para el paquete"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Lista los nombres de todos los paquetes en el sistema"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Muestra parámetros de las normas"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr ""
+"Proporcione un nombre para este disco, como pueda ser «Debian 5.0.3 Disco 1»"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Introduzca un disco en la unidad y pulse [Enter]"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "No se pudo montar «%s» como «%s»"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+"No se pudo detectar automáticamente ningún CD-ROM o no está usando el punto "
+"de montaje predeterminado.\n"
+"Puede intentar la opción --cdrom para establecer el punto de montaje del CD-"
+"ROM.\n"
+"Vea «man apt-cdrom» para más información sobre la autodetección y el punto "
+"de montaje del CD-ROM."
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Repita este proceso para el resto de los CDs del conjunto."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+"Uso: apt-cdrom [opciones] orden\n"
+"\n"
+"apt-cdrom se utiliza para añadir CDROM's, memorias flash USB y otros tipos "
+"de\n"
+"medios desmontables como orígenes de paquetes a APT. El punto de montaje y "
+"la \n"
+"información sobre el dispositivo se obtienen de apt.conf(5), udev(7) y "
+"fstab(5).\n"
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Argumentos no emparejados"
+
+#: cmdline/apt-config.cc
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Uso: apt-config [opciones] orden\n"
+"\n"
+"apt-config es una interfaz para leer el archivo de configuración utilizado\n"
+"por todas las herramientas de APT, pensada para depuración y para guiones.\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr "obtener valores de configuración mediante la evaluación del intérprete"
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr "mostrar la configuración activa establecida"
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Uso: apt-extracttemplates fichero1 [fichero2 ...]\n"
+"\n"
+"apt-extracttemplates se utiliza para extraer los ficheros de\n"
+"configuración y de plantilla de los paquetes debian. Lo utiliza\n"
+"principalmente debconf(1) para realizar las preguntas de configuración\n"
+"previas a la instalación de los paquetes.\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "No se puede encontrar la versión de debconf. ¿Está debconf instalado?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "No se pudo encontrar el paquete %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "fijado %s como instalado automáticamente.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Esta orden está desfasada. Utilice «apt-mark auto» y «apt-mark manual» en su "
+"lugar."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr ""
+"Error interno, el sistema de solución de problemas rompió algunas cosas"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Módulos admitidos:"
+
+#: cmdline/apt-get.cc
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Uso: apt-get [opciones] orden\n"
+" apt-get [opciones] install|remove paq1 [paq2 ...]\n"
+" apt-get [opciones] source paq1 [paq2 ...]\n"
+"\n"
+"apt-get es una interfaz de línea de órdenes para la obtención de\n"
+"paquetes y de información sobre ellos de orígenes autenticados y\n"
+"para la instalación, actualización y eliminación de paquetes junto\n"
+"a sus dependencias.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Descarga nuevas listas de paquetes"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Realiza una actualización"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Instala nuevos paquetes (paquete es libc6 y no libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Elimina paquetes"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Elimina y purga paquetes"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Elimina automáticamente todos los paquetes sin utilizar"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Actualiza la distribución, vea apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Sigue las selecciones de dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Configura las dependencias de construcción para paquetes fuente"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Elimina los archivos descargados"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Elimina los archivos descargados antiguos"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Verifica que no haya dependencias incumplidas"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Descarga archivos fuente"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "Descarga el paquete binario al directorio actual"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "Descarga y muestra el informe de cambios para el paquete proporcionado"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr "Se necesita una URL como argumento"
+
+#: cmdline/apt-helper.cc
+msgid "Must specify at least one pair url/filename"
+msgstr "Debe especificar al menos una pareja url/nombre-fichero"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr "Falló la descarga"
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr "Falló GetSrvRec para %s"
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+"Uso: apt-helper [opciones] orden\n"
+" apt-helper [opciones] fichero-descarga uri ruta-destino\n"
+"\n"
+"apt-helper reune un conjunto de órdenes para que los guiones utilicen\n"
+"por ejemplo la misma configuración de proxy o el mismo sistema de "
+"configuración que APT usaría.\n"
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr "descarga la uri proporcionada a la ruta de destino"
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr "buscar un registro SRV (por ejemplo, _http._tcp.ftp.debian.org)"
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr "concatenar ficheros, con descompresión automática"
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr "detecta el proxy usando apt.conf"
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Uso: apt-internal-solver\n"
+"\n"
+"apt-internal-solver es una interfaz para utilizar el resolutor\n"
+"interno actual para la familia APT como uno externo, para depuración o\n"
+"similares.\n"
+
+#: cmdline/apt-internal-solver.cc
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Uso: apt-internal-solver\n"
+"\n"
+"apt-internal-solver es una interfaz para utilizar el resolutor\n"
+"interno actual para la familia APT como uno externo, para depuración o\n"
+"similares.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "%s no se puede marcar porque no está instalado.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s ya estaba fijado como instalado manualmente.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s ya estaba fijado como instalado automáticamente.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s ya estaba fijado como retenido.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s ya no estaba retenido.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "Fallo al ejecutar dpkg. ¿Está como superusuario?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "%s fijado como retenido.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Se ha cancelado la retención de %s.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr "Seleccionado %s para purgar.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr "Seleccionado %s para eliminar.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr "Seleccionado %s para su instalación.\n"
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"Uso: apt-mark [opciones] {auto|manual} paq1 [paq2 ...]\n"
+"\n"
+"apt-mark es una sencilla interfaz de línea de órdenes para marcar paquetes\n"
+"como instalados manualmente o automáticamente. También se puede utilizar "
+"para\n"
+"manipular los estados de selección de paquetes de dpkg(1) y para listar\n"
+"todos los paquetes con o sin una marca determinada.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "Marca los paquetes proporcionados como instalados automáticamente"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "Marca los paquetes proporcionados como instalados manualmente"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr "Marca el paquete como retenido"
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr "Desmarca un paquete marcado como retenido"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr "Muestra la lista de paquetes instalados automáticamente"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr "Muestra la lista de paquetes instalados manualmente"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr "Muestra la lista de paquetes retenidos"
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "¡Registro de paquete desconocido!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+"Uso: apt-sortpkgs [opciones] fichero1 [fichero2 ...]\n"
+"\n"
+"apt-sortpkgs es una herramienta sencilla para ordenar los ficheros de\n"
+"información de los paquetes. De forma predeterminada, ordena por\n"
+"la información del paquete binario, pero se puede utilizar la opción\n"
+"-s para cambiar a ordenación por origen del paquete en su lugar.\n"
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+"Uso: apt [opciones] orden\n"
+"\n"
+"apt es un gestor de paquetes de línea de órdenes y proporciona órdenes\n"
+"para la búsqueda y gestión así como la solicitud de información sobre\n"
+"los paquetes. Proporciona la misma funcionalidad que las herramientas\n"
+"APT especializadas, como apt-get y apt-cache, pero permite de forma "
+"predeterminada\n"
+"opciones más apropiadas para un uso interactivo.\n"
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr "lista los paquetes según los nombres"
+
+#: cmdline/apt.cc
+msgid "search in package descriptions"
+msgstr "busca en las descripciones de los paquetes"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr "muestra detalles del paquete"
+
+#. package stuff
+#: cmdline/apt.cc
+msgid "install packages"
+msgstr "instala paquetes"
+
+#: cmdline/apt.cc
+msgid "remove packages"
+msgstr "elimina paquetes"
+
+#. system wide stuff
+#: cmdline/apt.cc
+msgid "update list of available packages"
+msgstr "actualiza la lista de paquetes disponibles"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr "actualiza el sistema instalando/actualizando paquetes"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr "actualiza el sistema eliminando/instalando/actualizando paquetes"
+
+#. misc
+#: cmdline/apt.cc
+msgid "edit the source information file"
+msgstr "edita el fichero de información de fuentes"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "¡Parámetro predeterminado incorrecto!"
+
+#: dselect/install dselect/update
+msgid "Press [Enter] to continue."
+msgstr "Pulse [Enter] para continuar."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "¿Desea borrar los archivos .deb descargados con anterioridad?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr ""
+"Se produjeron algunos problemas mientras se desempaquetaba. Los paquetes que "
+"se instalaron"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "van a configurarse. Esto puede dar lugar a errores duplicados"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"o errores causados por dependencias no presentes. Esto está BIEN, sólo los "
+"errores"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"encima de este mensaje son importantes. Corríjalas y ejecute «[I]nstall» "
+"otra vez"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Fusionando información disponible"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "La lista de extensión de paquetes es demasiado larga"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Error procesando el directorio %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "La lista de extensión de fuentes es demasiado larga"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Error escribiendo cabeceras de archivos de contenido"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Error procesando contenidos %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Uso: apt-ftparchive [opciones] orden\n"
+"Comandos: packages ruta-binaria [archivo-predominio\n"
+" [prefijo-ruta]]\n"
+" sources ruta-fuente [archivo-predominio \n"
+" [prefijo-ruta]]\n"
+" contents ruta\n"
+" release ruta\n"
+" generate config [grupos]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive genera índices para archivos de Debian. Soporta\n"
+"varios estilos de generación de reemplazos desde los completamente\n"
+"automatizados a los funcionales para dpkg-scanpackages y dpkg-scansources.\n"
+"\n"
+"apt-ftparchive genera ficheros Package de un árbol de .debs. El fichero\n"
+"Package contiene los contenidos de todos los campos de control de cada\n"
+"paquete al igual que la suma MD5 y el tamaño del archivo. Se puede usar\n"
+"un archivo de predominio para forzar el valor de Priority y\n"
+"Section.\n"
+"\n"
+"Igualmente, apt-ftparchive genera ficheros Sources para un árbol de\n"
+".dscs. Se puede utilizar la opción --source-override para especificar un\n"
+"fichero de predominio de fuente.\n"
+"\n"
+"Las órdenes «packages» y «sources» deben ejecutarse en la raíz del\n"
+"árbol. BinaryPath debe apuntar a la base de la búsqueda\n"
+"recursiva, y el archivo de predominio debe de contener banderas de\n"
+"predominio. Se añade Pathprefix a los campos de nombre de fichero\n"
+"si existen. A continuación se muestra un ejemplo de uso basado en los \n"
+"archivos de Debian:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Opciones:\n"
+" -h Este texto de ayuda\n"
+" --md5 Generación de control MD5 \n"
+" -s=? Archivo fuente de predominio\n"
+" -q Silencioso\n"
+" -d=? Selecciona la base de datos de caché opcional \n"
+" --no-delink Habilita modo de depuración delink\n"
+" --contents Generación del contenido del archivo «Control»\n"
+" -c=? Lee este archivo de configuración\n"
+" -o=? Establece una opción de configuración arbitraria"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Ninguna selección coincide"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Faltan algunos archivos en el grupo de archivo de paquetes «%s»"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "BD dañada, se renombró el archivo a %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "DB anticuada, intentando actualizar %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"El formato de la base de datos no es válido. Debe eliminar y recrear la base "
+"de datos si vd. se actualizó de una versión anterior de apt."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "No se pudo abrir el archivo DB %s: %s"
+
+#: ftparchive/cachedb.cc
+msgid "Failed to read .dsc"
+msgstr "No se pudo leer el enlace %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "No hay registro de control del archivo"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "No se pudo obtener un cursor"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - No pudo reservar memoria"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Algoritmo desconocido de compresión «%s»"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Salida comprimida %s necesita una herramienta de compresión"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Fallo al crear una tubería IPC para el subproceso"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "No se pudo bifurcar"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Hijo compresión"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Error interno, no se pudo crear %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Falló la ES a subproceso/archivo"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "No se pudo leer mientras se computaba MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "No se pudo abrir %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Predominio mal formado %s línea %llu (%s)"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "No se pudo leer el fichero de predominio %s"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Predominio mal formado %s línea %llu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Predominio mal formado %s línea %llu #2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Predominio mal formado %s línea %llu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "A: No se pudo leer directorio %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "A: No se pudo leer %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "A: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: Errores aplicables al archivo "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "No se pudo resolver %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Falló el recorrido por el árbol."
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "No se pudo abrir %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** No pude enlazar %s con %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " DeLink se ha llegado al límite de %sB.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Archivo no tiene campo de paquetes"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s no tiene entrada de predominio\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " el encargado de %s es %s y no %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s no tiene una entrada fuente predominante\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s tampoco tiene una entrada binaria predominante\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Esperando las cabeceras"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "El servidor de http envió una cabecera de respuesta inválida"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Línea de cabecera incorrecta"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "El servidor de http envió una cabecera de «Content-Length» inválida"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "El servidor de http envió una cabecera de «Content-Range» inválida"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Este servidor de http admite alcance roto"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Formato de fecha desconocido"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Datos de cabecera incorrectos"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Falló la conexión"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+"Se ha deshabilitado automáticamente %s debido a una respuesta incorrecta del "
+"servidor/proxy. (man 5 apt.conf)"
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Error interno"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "No se pudo leer la base de datos %s del cdrom"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Utilice «apt-cdrom» para hacer que APT reconozca este CD. No puede utilizar "
+"«apt-get update» para añadir nuevos CDs"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "CD equivocado"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "No se puede desmontar el CD-ROM de %s, tal vez aún se está utilizando."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Disco no encontrado."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Fichero no encontrado"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Conectando a %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "No se pudo crear un socket para %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "No se puede iniciar la conexión a %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "No se pudo conectar a %s:%s (%s), caducó el tiempo para conexión"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Falló"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "No se pudo conectar a %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Conectando a %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "No se pudo resolver «%s»"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Fallo temporal al resolver «%s»"
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Error de sistema al resolver «%s:%s»"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Algo raro pasó al resolver «%s:%s» (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "No se pudo conectar a %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Fallo al leer"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "URI inválido, los URIS locales no deben empezar por //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Ingresando"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "No se pudo determinar el nombre del par"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "No se pudo determinar el nombre local"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "El servidor rechazó la conexión y devolvió: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "Usuario (USER) falló, el servidor devolvió: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "Clave (PASS) falló, el servidor devolvió: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Se especificó un servidor proxy pero no un script de entrada, «Acquire::ftp::"
+"ProxyLogin» está vacío."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Falló la orden «%s» del script de entrada, el servidor devolvió: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "Tipo (TYPE) falló, el servidor devolvió: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Caducó la conexión"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "El servidor cerró la conexión"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "La respuesta desbordó la memoria intermedia (buffer)."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Fallo del protocolo"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "No se pudo crear el socket"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "No se pudo conectar el socket de datos, caducó el tiempo de conexión"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "No se pudo conectar el socket pasivo."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "«getaddrinfo» no pudo obtener un socket pasivo"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "No se pudo asociar el socket"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "No se pudo escuchar en el socket"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "No se pudo determinar el nombre del socket"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "No se pudo mandar la orden PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Familia de direcciones %u desconocida (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT falló, el servidor devolvió: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Caducó conexión al socket de datos"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "No se pudo aceptar la conexión"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Problema al cifrar el fichero"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "No se pudo obtener el fichero, el servidor devolvió «%s»"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Caducó el socket de datos"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Falló transferencia de datos, el servidor devolvió «%s»"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Consulta"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "No se pudo invocar "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, fuzzy, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+"El fichero firmado en claro no es válido, «%s» obtenido (¿la red requiere "
+"autenticación?)"
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Se encontró al menos una firma inválida."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Error interno: Firma correcta, ¡¿pero no se pudo determinar su huella "
+"digital?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"No se pudo ejecutar «apt-key» para verificar la firma (¿está instalado "
+"gnupg?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Error desconocido ejecutando «apt-key»"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Las siguientes firmas no fueron válidas:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Las firmas siguientes no se pudieron verificar porque su clave pública no "
+"está disponible:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Error escribiendo al archivo"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Error leyendo del servidor, el lado remoto cerró la conexión."
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Error leyendo del servidor"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Error escribiendo a archivo"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Falló la selección"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Caducó la conexión"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Error escribiendo al fichero de salida"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "No se encontró el archivo de réplica «%s»"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "No se puede leer el archivo de réplica «%s»"
+
+#: methods/mirror.cc
+#, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "No se encontró ninguna entrada en el archivo de réplica «%s»"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Réplica: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Fallo al establecer el tiempo de modificación"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "La conexión se cerró prematuramente"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "Los ficheros vacíos no pueden ser archivos válidos"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Dependencias incumplidas. Pruebe de nuevo utilizando --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr "Tal vez quiera ejecutar «apt --fix-broken install» para corregirlo:"
+
+#~ msgid "(not found)"
+#~ msgstr "(no encontrado)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Pin del paquete: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr ""
+#~ "No existe ninguna clave pública disponible para los siguientes "
+#~ "identificadores de clave:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "El repositorio «%s» no está firmado."
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "La dependencia %s para %s no puede satisfacerse porque no se permite %s "
+#~ "en los paquetes «%s»"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "La dependencia %s para %s no puede satisfacerse porque no se puede "
+#~ "encontrar el paquete %s"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "No se pudo satisfacer la dependencia %s para %s: El paquete instalado %s "
+#~ "es demasiado nuevo"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "La dependencia %s para %s no puede satisfacerse porque la versión "
+#~ "presentada del paquete %s no puede satisfacer los requisitos de versión"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "La dependencia %s para %s no puede satisfacerse porque el paquete %s no "
+#~ "tiene ninguna versión presentada"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "No se pudo satisfacer la dependencia %s para %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "No se pudieron satisfacer las dependencias de construcción de %s."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Se produjo un problema al desligar %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "No se pudo desligar %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Modo de uso: apt-cache [opciones] orden\n"
+#~ " apt-cache [opciones] show paq1 [paq2 ...]\n"
+#~ "\n"
+#~ "apt-cache es una herramienta de bajo nivel que se utiliza para consultar\n"
+#~ "información sobre los archivos binarios de caché de APT\n"
+
+#~ msgid "Commands:"
+#~ msgstr "Órdenes:"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Opciones:\n"
+#~ " -h Este texto de ayuda.\n"
+#~ " -p=? La caché de paquetes.\n"
+#~ " -s=? La caché de fuentes.\n"
+#~ " -q Desactiva el indicador de progreso.\n"
+#~ " -i Muestra solo dependencias importantes para la orden incumplida.\n"
+#~ " -c=? Lee este archivo de configuración\n"
+#~ " -o=? Establece una opción de configuración arbitraria, p.ej. -o dir::"
+#~ "cache=/tmp\n"
+#~ "Vea las páginas del manual apt-cache(8) y apt.conf(5) para más "
+#~ "información.\n"
+
+#~ msgid ""
+#~ "Usage: apt [options] command\n"
+#~ "\n"
+#~ "CLI for apt.\n"
+#~ msgstr ""
+#~ "Uso: apt [opciones] orden\n"
+#~ "\n"
+#~ "Interfaz de línea de órdenes (CLI) para apt.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "Uso: apt-cdrom [opciones] orden\n"
+#~ "\n"
+#~ "apt-cdrom es una herramienta para agregar CDROM para las fuentes de\n"
+#~ "APT. El punto de montaje del CDROM y la información del dispositivo\n"
+#~ "se extrae de apt.conf y /etc/fstab.\n"
+#~ "\n"
+#~ "Comandos:\n"
+#~ " add - Agrega un CDROM\n"
+#~ " ident - Reporta la identificación del CDROM\n"
+#~ "\n"
+#~ "Opciones:\n"
+#~ " -h Este texto de ayuda\n"
+#~ " -d Punto de montaje del CD-ROM\n"
+#~ " -r Renombra un CD-ROM reconocido\n"
+#~ " -m No monta\n"
+#~ " -f Modo rápido, no comprueba archivos de paquetes\n"
+#~ " -a A través de modo de búsqueda\n"
+#~ " -c=? Lee esto archivo de configuración\n"
+#~ " -o=? Establece una opción de configuración arbitraria, ej -o dir::\n"
+#~ "cache=/tmp\n"
+#~ "Ver fstab(5)\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Opciones:\n"
+#~ " -h Este texto de ayuda.\n"
+#~ " -c=? Lee este fichero de configuración\n"
+#~ " -o=? Establece una opción de configuración arbitraria, p. ej. -o dir::\n"
+#~ " cache=/tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "Opciones:\n"
+#~ " -h Este texto de ayuda.\n"
+#~ " -q Salida registrable - sin indicador de progreso\n"
+#~ " -qq Sin salida, expceto si hay errores\n"
+#~ " -s No actúa. Realiza una simulación.\n"
+#~ " -f Lee y escribe la marca auto/manual en el fichero proporcionado\n"
+#~ " -c=? Lee este fichero de configuración\n"
+#~ " -o=? Establece una opción de configuración arbitraria, p. ej.\n"
+#~ " -o dir::cache=/tmp\n"
+#~ "Ver las páginas de manual de apt-mark(8) y apt.conf(5) para más "
+#~ "información."
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Uso: apt-sortpkgs [opciones] archivo1 [archivo2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs es una herramienta sencilla para ordenar archivos de "
+#~ "paquetes.\n"
+#~ "La opción -s se utiliza para indicar qué tipo de archivo es.\n"
+#~ "\n"
+#~ "Opciones:\n"
+#~ " -h Este texto de ayuda.\n"
+#~ " -s Utiliza ordenamiento de archivos fuente\n"
+#~ " -c=? Lee este archivo de configuración\n"
+#~ " -o=? Establece una opción de configuración arbitraria, p. ej. -o dir::\n"
+#~ "cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Falló el proceso hijo"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Debe especificar al menos una pareja url/nombre-fichero"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Fallo al crear las tuberías"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Fallo al ejecutar gzip"
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s para %s compilado en %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "No se pudo crear FICHERO*"
+
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Línea %u mal formada en la lista de fuentes %s (análisis de URI)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "Línea %lu mal formada en la lista de fuentes %s ([opción] no analizable)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr ""
+#~ "Línea %lu mal formada en la lista de fuentes %s ([opción] demasiado corta)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr ""
+#~ "Línea %lu mal formada en la lista de fuentes %s ([%s] no es una "
+#~ "asignación)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr ""
+#~ "Línea %lu mal formada en la lista de fuentes %s (no hay clave para [%s])"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "Línea %lu mal formada en la lista de fuentes %s ([%s] la clave %s no "
+#~ "tiene asociado un valor)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Línea %lu mal formada en la lista de fuentes %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Línea %lu mal formada en la lista de fuentes %s (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Línea %lu mal formada en la lista de fuentes %s (análisis de URI)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "Línea %lu mal formada en la lista de fuentes %s (dist absoluta)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "Línea %lu mal formada en la lista de fuentes %s (análisis de dist)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr ""
+#~ "No se encontró el paquete %s %s mientras se procesaban las dependencias"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "No se pudo leer la lista de paquetes fuente %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Recogiendo archivos que proveen"
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "No se pudo leer el archivo «Release» %s"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Bloque de fabricante %s sin huella digital"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Espacio de versión de dependencias total: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "No tiene suficiente espacio libre en %s"
+
+#~ msgid "Done"
+#~ msgstr "Listo"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "No se instaló ningún anillo de claves %s."
+
+#~ msgid "Is stdout a terminal?"
+#~ msgstr "¿Es «stdout» una terminal?"
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Error Interno, AllUpgrade rompió cosas"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s no es un paquete DEB válido."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Usando el punto de montaje del CD-ROM %s\n"
+#~ "Montando el CD-ROM\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "No se pudo parchear %s con mmap y con el modo de uso de la operación de "
+#~ "ficheros - el paquete parece dañado."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "No se pudo parchear %s con mmap (pero no hay un fallo mmap específico) - "
+#~ "el parche parece dañado."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr ""
+#~ "Ignorar la distribución objetivo no disponible «%s» del paquete «%s»"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Este no es un archivo DEB válido, falta el miembro «%s», «%s» o «%s»"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "La suma MD5 difiere"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "No se pudo localizar un archivo para el paquete %s. Esto puede significar "
+#~ "que necesita arreglar manualmente este paquete."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "No pudo escribirse el registro, falló la llamada a openpty() (¿está "
+#~ "montado «/dev/pts?)\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Omitiendo el fichero inexistente %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "No pude borrar %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "No pude crear %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "No pude leer %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr ""
+#~ "Los directorios info y temp deben de estar en el mismo sistema de archivos"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "No pude cambiarme al directorio de administración %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Error interno obteniendo un Nombre de Paquete"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Leyendo Listado de Archivos"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "No pude abrir el archivo de lista «%sinfo/%s». ¡Si no puede restablecer "
+#~ "este archivo entonces cree uno vacío e inmediatamente reinstale la misma "
+#~ "versión del paquete!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "No pude leer el archivo de lista %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Error interno obteniendo un nodo"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "No pude abrir el archivo de desviación %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "El archive de desviaciones está dañado"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Linea inválida en el archivo de desviación: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Error interno agregando una desviación"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "El caché del paquete debe de inicializarse primero"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "No pude encontrar un paquete: Cabecera, desplazo %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Mala sección del ConfFile en el archivo de estado. Desplazo %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Error leyendo Md5. Desplazo %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "No pude cambiar a %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "No pude localizar un archivo de control válido"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "No pude abrir una tubería para %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Error de lectura de %s procesos"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Obtuve una sola línea de cabecera arriba de %u caracteres"
+
+#~ msgid "Note: This is done automatic and on purpose by dpkg."
+#~ msgstr "Nota: Dpkg realiza esto de forma automática y a propósito."
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Predominio mal formado %s línea %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Predominio mal formado %s línea %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Predominio mal formado %s línea %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "decompresor"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "leídos, todavía debía leer %lu pero no queda nada"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "escritos, todavía tenía que escribir %lu pero no pude hacerlo"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "No se pudo realizar la configuración inmediata sobre el paquete ya "
+#~ "desempaquetado «%s». Consulte la página de manual con «man 5 apt.conf» "
+#~ "bajo «APT::Immediate-Configure» para más información."
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Se produjo un error mientras se procesaba %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Se produjo un error mientras se procesaba %s (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Se produjo un error mientras se procesaba %s (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Se produjo un error mientras se procesaba %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Se produjo un error mientras se procesaba %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Se produjo un error mientras se procesaba %s (NewVersion%d)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Se produjo un error mientras se procesaba %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Se produjo un error mientras se procesaba %s (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Se produjo un error mientras se procesaba %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Se produjo un error mientras se procesaba %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Error interno, no pude localizar el miembro"
+
+#~ msgid "Internal error, group '%s' has no installable pseudo package"
+#~ msgstr ""
+#~ "Error interno, el grupo «%s» no tiene ningún pseudo-paquete instalable"
+
+#~ msgid "Release file expired, ignoring %s (invalid since %s)"
+#~ msgstr ""
+#~ "El archivo «Release» ha expirado, ignorando %s (inválido desde hace %s)"
+
+#~ msgid "You must give exactly one pattern"
+#~ msgstr "Debe dar exactamente un patrón"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr ""
+#~ "E: Lista de argumentos de Acquire::gpgv::Options demasiado larga. "
+#~ "Terminando."
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "Se produjo un error mientras se procesaba %s (NewVersion2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "Línea %u mal formada en la lista de fuentes %s (id del fabricante)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "No se pudo acceder al anillo de claves: «%s»"
+
+#~ msgid "Could not patch file"
+#~ msgstr "No pude parchear el fichero"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "Procesando disparadores para %s"
+
+#~ msgid "Dynamic MMap ran out of room"
+#~ msgstr "La función «Dynamic MMap» se quedó sin espacio"
+
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "Como sólo solicito una única operación, es extremadamente posible que el\n"
+#~ "paquete simplemente no sea instalable y debería de rellenar un informe "
+#~ "de\n"
+#~ "error contra ese paquete."
+
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "Línea %d demasiado larga (máx %lu)"
+
+#~ msgid "Line %d too long (max %d)"
+#~ msgstr "Línea %d demasiado larga (máx %d)"
+
+#~ msgid "Error occured while processing %s (NewFileDesc1)"
+#~ msgstr "Se produjo un error mientras se procesaba %s (NewFileDesc1)"
+
+#~ msgid "Error occured while processing %s (NewFileDesc2)"
+#~ msgstr "Se produjo un error mientras se procesaba %s (NewFileDesc2)"
+
+#~ msgid "Stored label: %s \n"
+#~ msgstr "Etiqueta guardada: %s \n"
+
+#~ msgid ""
+#~ "Found %i package indexes, %i source indexes, %i translation indexes and "
+#~ "%i signatures\n"
+#~ msgstr ""
+#~ "Se encontraron %i índices de paquetes, %i índices de fuentes, %i índices "
+#~ "de traducción y %i firmas\n"
+
+#~ msgid "openpty failed\n"
+#~ msgstr "Falló openpty\n"
+
+#~ msgid "File date has changed %s"
+#~ msgstr "Cambió la fecha del archivo %s"
+
+#~ msgid "Reading file list"
+#~ msgstr "Leyendo Lista de Archivos"
+
+#~ msgid "Could not execute "
+#~ msgstr "No se pudo ejecutar "
+
+#~ msgid "Preparing for remove with config %s"
+#~ msgstr "Preparándose para eliminar con su configuración %s"
+
+#~ msgid "Removed with config %s"
+#~ msgstr "Eliminado con su configuración %s"
+
+#~ msgid "Unknown vendor ID '%s' in line %u of source list %s"
+#~ msgstr ""
+#~ "ID del fabricante «%s» desconocido en la línea %u de la lista de\n"
+#~ "fuentes %s"
+
+#~ msgid ""
+#~ "Some broken packages were found while trying to process build-"
+#~ "dependencies.\n"
+#~ "You might want to run 'apt --fix-broken install' to correct these."
+#~ msgstr ""
+#~ "Se encontraron algunos paquetes rotos mientras se intentaba procesar\n"
+#~ "las dependencies de construcción. Tal vez quiera ejecutar \n"
+#~ "'apt --fix-broken install' para corregirlos."
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] add file1 [file1 ...]\n"
+#~ " apt-cache [options] showpkg pkg1 [pkg2 ...]\n"
+#~ " apt-cache [options] showsrc pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to manipulate APT's binary\n"
+#~ "cache files, and query information from them\n"
+#~ "\n"
+#~ "Commands:\n"
+#~ " add - Add an package file to the source cache\n"
+#~ " gencaches - Build both the package and source cache\n"
+#~ " showpkg - Show some general information for a single package\n"
+#~ " showsrc - Show source records\n"
+#~ " stats - Show some basic statistics\n"
+#~ " dump - Show the entire file in a terse form\n"
+#~ " dumpavail - Print an available file to stdout\n"
+#~ " unmet - Show unmet dependencies\n"
+#~ " search - Search the package list for a regex pattern\n"
+#~ " show - Show a readable record for the package\n"
+#~ " depends - Show raw dependency information for a package\n"
+#~ " pkgnames - List the names of all packages\n"
+#~ " dotty - Generate package graphs for GraphVis\n"
+#~ " policy - Show policy settings\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Uso: apt-cache [opciones] orden\n"
+#~ " apt-cache [opciones] add archivo1 [archivo1 ...]\n"
+#~ " apt-cache [opciones] showpkg paq1 [paq2 ...]\n"
+#~ "\n"
+#~ "apt-cache es una herramienta usada para manipular los archivos binarios\n"
+#~ "de caché de APT, y consultar información de éstos.\n"
+#~ "\n"
+#~ "Comandos:\n"
+#~ " add - Añade un archivo de paquete a la caché fuente\n"
+#~ " gencaches - Crea el caché de ambos, del paquete y del fuente\n"
+#~ " showpkg - Muestra alguna información general para un solo paquete\n"
+#~ " showsrc - Muestra la información de las fuentes\n"
+#~ " stats - Muestra algunas estadísticas básicas\n"
+#~ " dump - Muestra el archivo entero en formato detallado\n"
+#~ " dumpavail - Imprime un archivo de paquetes disponibles a salida\n"
+#~ "estándar\n"
+#~ " unmet - Muestra dependencias incumplidas\n"
+#~ " search - Busca en la lista de paquetes por un patrón de expresión\n"
+#~ "regular\n"
+#~ " show - Muestra un registro del paquete\n"
+#~ " depends - Muestra información de dependencias en bruto para el\n"
+#~ "paquete\n"
+#~ " pkgnames - Lista los nombres de todos los paquetes\n"
+#~ " dotty - Genera gráficas del paquete para GraphVis\n"
+#~ " policy - Muestra los parámetros de las normas\n"
+#~ "\n"
+#~ "Opciones:\n"
+#~ " -h Este texto de ayuda.\n"
+#~ " -p=? El caché del paquete.\n"
+#~ " -s=? El caché de la fuente.\n"
+#~ " -q Deshabilita el indicador de progreso.\n"
+#~ " -i Muestra sólo dependencias importantes para el comando de\n"
+#~ "incumplido.\n"
+#~ " -c=? Lee este archivo de configuración\n"
+#~ " -o=? Establece una opción de configuración arbitraria, p. ej. -o dir::\n"
+#~ "cache=/tmp\n"
+#~ "Consulte las páginas del manual apt-cache(8) y apt.conf(5) para más\n"
+#~ "información.\n"
+
+#~ msgid ""
+#~ "%s dependency on %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "La dependencia %s en %s no puede satisfacerse porque el paquete %s\n"
+#~ "no se puede encontrar"
+
+#~ msgid "The package cache was build for a different architecture"
+#~ msgstr "La caché de archivos fue creado para una arquitectura diferente"
+
+#~ msgid "Sorry, you don't have enough free space in %s to hold all the .debs."
+#~ msgstr ""
+#~ "Lo siento, no tiene suficiente espacio libre en %s para colocar todos "
+#~ "los .debs."
+
+#~ msgid "Sorry, but the following packages have unmet dependencies:"
+#~ msgstr ""
+#~ "Disculpe, pero los siguientes paquetes tienen dependencias incumplidas:"
+
+#~ msgid "Need to get %sB/%sB of archives. "
+#~ msgstr "Se necesitan descargar %sB/%sB de ficheros. "
+
+#~ msgid "Need to get %sB of archives. "
+#~ msgstr "Necesito descargar %sB de ficheros. "
+
+#~ msgid "After unpacking %sB will be used.\n"
+#~ msgstr "Se usarán %sB después de desempaquetar.\n"
+
+#~ msgid "After unpacking %sB will be freed.\n"
+#~ msgstr "Se liberarán %sB después de desempaquetar.\n"
+
+#~ msgid ""
+#~ "Sorry, re-installation of %s is not possible, it cannot be downloaded.\n"
+#~ msgstr ""
+#~ "Lo siento, no es posible la reinstalación del paquete %s, no puede ser "
+#~ "descargado.\n"
+
+#~ msgid "Sorry, %s is already the newest version.\n"
+#~ msgstr "Lo siento, %s ya está en su versión más reciente.\n"
+
+#~ msgid "Sorry, broken packages"
+#~ msgstr "Lo siento, paquetes rotos"
+
+#~ msgid "Sorry, you don't have enough free space in %s"
+#~ msgstr "Lo siento, no tiene suficiente espacio libre en %s"
+
+#~ msgid "Sorry, you must put some 'source' URIs in your sources.list"
+#~ msgstr "Lo siento, debe poner algunos URIs 'fuente' en su sources.list"
+
+#~ msgid "<- '"
+#~ msgstr "<- '"
+
+#~ msgid "'"
+#~ msgstr "'"
+
+#~ msgid "-> '"
+#~ msgstr "-> '"
+
+#~ msgid "Followed conf file from "
+#~ msgstr "Archivo de configuración seguido por"
+
+#~ msgid " to "
+#~ msgstr " a "
+
+#~ msgid "Extract "
+#~ msgstr "Extraer"
+
+#~ msgid "Aborted, backing out"
+#~ msgstr "Abortado, retractándome"
+
+#~ msgid "De-replaced "
+#~ msgstr "De-reemplazado"
+
+#~ msgid " from "
+#~ msgstr " de "
+
+#~ msgid "Backing out "
+#~ msgstr "Retractando "
+
+#~ msgid " [new node]"
+#~ msgstr " [nodo nuevo] "
+
+#~ msgid "Replaced file "
+#~ msgstr "Fichero reemplazado"
+
+#~ msgid "Unimplemented"
+#~ msgstr "No está implementado"
+
+#~ msgid "Generating cache"
+#~ msgstr "Generando el caché"
+
+#~ msgid "Problem with SelectFile"
+#~ msgstr "Se produjo un problema con «SelectFile»"
+
+#~ msgid "Problem with MergeList"
+#~ msgstr "Se produjo un problema con «MergeList»"
+
+#~ msgid "Regex compilation error"
+#~ msgstr "Error de compilación de Regex"
+
+#~ msgid "Write to stdout failed"
+#~ msgstr "No pude escribir a la salida estándar"
+
+#~ msgid "Generate must be enabled for this function"
+#~ msgstr "Generate debe de estar habilitado para esta función"
+
+#~ msgid "Failed to stat %s%s"
+#~ msgstr "No pude leer %s%s"
+
+#~ msgid "Failed to rename %s.new to %s"
+#~ msgstr "No se pudo renombrar %s.new a %s"
+
+#~ msgid "I found (binary):"
+#~ msgstr "Encontré (binario):"
+
+#~ msgid "I found (source):"
+#~ msgstr "Encontré (fuente):"
+
+#~ msgid "Found "
+#~ msgstr "Encontré "
+
+#~ msgid " source indexes."
+#~ msgstr " índice de fuentes."
+
+#~ msgid " '"
+#~ msgstr " »"
+
+#~ msgid "Internal error, non-zero counts"
+#~ msgstr "Error interno, cuenta diferentes de cero"
+
+#~ msgid "Couldn't wait for subprocess"
+#~ msgstr "No pude esperar al subproceso"
+
+#~ msgid "....\"Have you mooed today?\"..."
+#~ msgstr "....\"¿Has mugido hoy?\"..."
+
+#~ msgid " New "
+#~ msgstr " Nuevo "
+
+#~ msgid "B "
+#~ msgstr "B "
+
+#~ msgid " files "
+#~ msgstr " archivos "
+
+#~ msgid " pkgs in "
+#~ msgstr " paquetes en "
+
+#~ msgid ""
+#~ "Usage: apt-ftparchive [options] command\n"
+#~ "Commands: packges binarypath [overridefile [pathprefix]]\n"
+#~ " sources srcpath [overridefile [pathprefix]]\n"
+#~ " contents path\n"
+#~ " generate config [groups]\n"
+#~ " clean config\n"
+#~ msgstr ""
+#~ "Uso: apt-ftparchive [opciones] orden\n"
+#~ "Comandos: packges trayectoria-binaria [archivo-sobrepaso\n"
+#~ " [prefijo-trayectoria]]\n"
+#~ " sources trayectoria-fuente [archivo-sobrepaso \n"
+#~ " [prefijo-trayectoria]]\n"
+#~ " contents trayectoria\n"
+#~ " generate config [grupos]\n"
+#~ " clean config\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " --md5 Control MD5 generation\n"
+#~ " -s=? Source override file\n"
+#~ " -q Quiet\n"
+#~ " -d=? Select the optional caching database\n"
+#~ " --no-delink Enable delinking debug mode\n"
+#~ " --contents Control contents file generation\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option\n"
+#~ msgstr ""
+#~ "Opciones:\n"
+#~ " -h Este texto de ayuda\n"
+#~ " --md5 Generación de control MD5 \n"
+#~ " -s=? Archivo fuente de predominio\n"
+#~ " -q Callado\n"
+#~ " -d=? Selecciona la base de datos opcional de cache\n"
+#~ " --no-delink Habilita modo de depuración delink\n"
+#~ " --contents Generación del contenido del archivo 'Control'\n"
+#~ " -c=? Lee este archivo de configuración\n"
+#~ " -o=? Establece una opción de configuración arbitraria\n"
+
+#~ msgid "Done Packages, Starting contents."
+#~ msgstr "Paquetes terminados, empezando contenidos."
+
+#~ msgid "Hit contents update byte limit"
+#~ msgstr "Se encontró el límite de bytes de actualización de contenidos"
+
+#~ msgid "Done. "
+#~ msgstr "Listo."
+
+#~ msgid "B in "
+#~ msgstr "B en "
+
+#~ msgid " archives. Took "
+#~ msgstr " archivos. Tomo "
+
+#~ msgid "B hit."
+#~ msgstr "B Eco."
+
+#~ msgid " not "
+#~ msgstr " no "
+
+#~ msgid "DSC file '%s' is too large!"
+#~ msgstr "¡El archivo DSC «%s» es demasiado grande!"
+
+#~ msgid "Could not find a record in the DSC '%s'"
+#~ msgstr "No se pudo encontrar un registro en el archive DSC «%s»"
+
+#~ msgid "Error parsing file record"
+#~ msgstr "Error leyendo archivo de registros"
+
+#~ msgid "Failed too stat %s"
+#~ msgstr "No pude leer %s"
+
+#~ msgid "Errors apply to file '%s'"
+#~ msgstr "Los errores aplican al fichero «%s»"
+
+#~ msgid "Unkonwn address family %u (AF_*)"
+#~ msgstr "Dirección de familia %u desconocida (AF_*)"
+
+#~ msgid "Failed to mount the cdrom."
+#~ msgstr "No pude montar el cdrom"
+
+#~ msgid ""
+#~ "apt-ftparchive generates index files for Debian archives. It supports\n"
+#~ "many styles of generation from fully automated to functional "
+#~ "replacements\n"
+#~ "for dpkg-scanpackages and dpkg-scansources\n"
+#~ "\n"
+#~ "apt-ftparchive generates Package files from a tree of .debs. The\n"
+#~ "Package file contains the contents of all the control fields from\n"
+#~ "each package as well as the MD5 hash and filesize. An override file\n"
+#~ "is supported to force the value of Priority and Section.\n"
+#~ "\n"
+#~ "Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+#~ "The --source-override option can be used to specify a src override file\n"
+#~ "\n"
+#~ "The 'packages' and 'sources' command should be run in the root of the\n"
+#~ "tree. BinaryPath should point to the base of the recursive search and \n"
+#~ "override file should contian the override flags. Pathprefix is\n"
+#~ "appended to the filename fields if present. Example usage from the \n"
+#~ "debian archive:\n"
+#~ " apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+#~ " dists/potato/main/binary-i386/Packages\n"
+#~ msgstr ""
+#~ "apt-ftparchive genera archivos de índice para archivos de Debian.\n"
+#~ "Soporta varios estilos de generación de reemplazos completamente\n"
+#~ "automatizados a funcionales para dpkg-scanpackages y dpkg-scansources\n"
+#~ "\n"
+#~ "apt-ftparchive genera archivos Package de un árbol de .debs. El Archivo\n"
+#~ "Package contiene los contenidos de todos los campos de control de cada\n"
+#~ "paquete al igual que el enlace MD5 y el tamaño del archivo. Se\n"
+#~ "soporta el uso de un archivo de predominio para forzar el valor de\n"
+#~ "Priority y Section.\n"
+#~ "\n"
+#~ "Igualmente, apt-ftparchive genera archivos de Fuentes para el árbol de\n"
+#~ ".dscs. Puede usarse la opción --source-override para especificar un\n"
+#~ "fichero de predominio fuente.\n"
+#~ "\n"
+#~ "Las órdenes 'packages' y 'sources' se deben de ejecutar en la raíz del\n"
+#~ "árbol. BinaryPath debe de apuntar a la base del archivo de búsqueda\n"
+#~ "recursiva, y el archivo de predominio debe contener banderas de\n"
+#~ "predominio. Pathprefix se agregado a los campos del nombre del archivo\n"
+#~ "si están presentes. Ejemplo de uso tomado de los archivos de Debian:\n"
+#~ " apt-ftparchive packages dists/potato/main/binary-i386/ > \\\\\n"
+#~ " dists/potato/main/binary-i386/Packages\n"
+
+#~ msgid "W: Unable to read directory "
+#~ msgstr "A: No se pudo leer directorio "
+
+#~ msgid "W: Unable to stat "
+#~ msgstr "A: No se pudo leer "
+
+#~ msgid "E: Errors apply to file '"
+#~ msgstr "E: Errores aplicables al archivo «"
+
+#~ msgid " DeLink limit of "
+#~ msgstr " DeLink límite de"
+
+#~ msgid " has no override entry"
+#~ msgstr " no tiene entrada de predominio"
+
+#~ msgid " maintainer is "
+#~ msgstr " el encargado es "
diff --git a/po/eu.po b/po/eu.po
new file mode 100644
index 000000000..ff70cda4b
--- /dev/null
+++ b/po/eu.po
@@ -0,0 +1,4168 @@
+# translation of apt_po_eu.po to Euskara
+# This file is put in the public domain.
+#
+# Hizkuntza Politikarako Sailburuordetza <hizkpol@ej-gv.es>, 2005.
+# Piarres Beobide <pi@beobide.net>, 2005, 2006, 2007, 2008, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2009-05-17 00:41+0200\n"
+"Last-Translator: Piarres Beobide <pi@beobide.net>\n"
+"Language-Team: Euskara <debian-l10n-basque@lists.debian.org>\n"
+"Language: eu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Artxibo sinadura baliogabea"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Errorea artxiboko kidearen goiburua irakurtzean"
+
+#: apt-inst/contrib/arfile.cc
+#, fuzzy, c-format
+msgid "Invalid archive member header %s"
+msgstr "Artxiboko kidearen goiburua baliogabea da"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Artxiboko kidearen goiburua baliogabea da"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Artxiboa laburregia da"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Huts egin artxibo goiburuak irakurtzean"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Ezin izan da %s paketea aurkitu"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Hondatutako artxiboa"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Tar egiaztapenak huts egin, hondatutakofitxategia"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "%u TAR goiburu mota ezezaguna, %s kidea"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Ez da baliozko DEB artxiboa; '%s' kidea falta da"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Barne Errorea, ezin da %s atala kokatu"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Kontrol fitxategi ezin analizagarria"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Ezin izan da %s fitxategian idatzi"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Ezin izan da %s fitxategia itxi"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "%s bidea luzeegia da"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "%s behin baino gehiagotan deskonprimitzen"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "%s direktorioa desbideratuta dago"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Paketea desbideratze helburuan %s/%s idazten saiatzen ari da"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Desbideratzearen bidea luzeegia da"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Huts egin du %s(e)tik datuak lortzean"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Huts egin du %s izenaren ordez %s ipintzean"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "%s direktorioa ez-direktorio batekin ordezten ari da"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Huts egin du nodoa bere hash-ontzian lokalizatzean"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Bidea luzeegia da"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Gainidatzi pakete-konkordantzia %s(r)en bertsiorik gabe"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "%s/%s fitxategiak %s paketekoa gainidazten du"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Ezin da %s irakurri"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Ezin da daturik lortu %s(e)tik"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode-ri dei egin zaio oraindik estekatutako nodoan"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Huts egin du hash-elementua lokalizatzean!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Huts egin du desbideratzea lokalizatzean"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "AddDiversion-n barne errorea"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Desbideratze bat gainidazten saiatzen: %s -> %s eta %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Desbideratzearen gehitze bikoitza: %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Konfigurazio fitxategi bikoiztua: %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "%s direktorioa desbideratuta dago"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "%s direktorioa desbideratuta dago"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "%s direktorioa desbideratuta dago"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "%s direktorioa desbideratuta dago"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "%s direktorioa desbideratuta dago"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Huts egin du %s esteka irakurtzean"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Egiaztapena ez dator bat"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "huts egin du izen-aldaketak, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Tamaina ez dator bat"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "Eragiketa baliogabea: %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Idazketa errorea"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Ezin izan dut %s paketeko fitxategi bat lokalizatu. Beharbada eskuz konpondu "
+"beharko duzu paketea. (arkitektura falta delako)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"Paketearen indize fitxategiak hondatuta daude. 'Filename:' eremurik ez %s "
+"paketearentzat."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Konektatzen -> %s.(%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Ezin izan da %s metodo kontrolatzailea aurkitu."
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "Egiaztatu 'dpkg-dev' paketea instalaturik dagoen.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "%s metodoa ez da behar bezala abiarazi"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "Mesedez sa ''%s' izeneko diska '%s' gailuan eta enter sakatu"
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "List directory %spartial is missing."
+msgstr "%spartial zerrenda-direktorioa falta da."
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "%spartial artxibo direktorioa falta da."
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Unable to lock directory %s"
+msgstr "Ezin da zerrenda direktorioa blokeatu"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "'%s' motako indize fitxategirik ez da onartzen"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Ezin da %s(e)ra aldatu"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "%li fitxategi deskargatzen %li -tik (%s falta da)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "%li fitxategia jasotzen %li-tik"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"%s paketea berriro instalatu behar da, baina ezin dut artxiborik aurkitu."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Errorea: pkgProblemResolver::Resolve. Etenak sortu ditu, beharbada "
+"atxikitako paketeek eraginda."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "Ezin dira arazoak konpondu; hautsitako paketeak atxiki dituzu."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "Pakete zerrenda edo egoera fitxategia ezin dira analizatu edo ireki."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Beharbada 'apt-get update' exekutatu nahiko duzu arazoak konpontzeko"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Ezin izan da Iturburu zerrenda irakurri."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Adierazpen erregularren konpilazio errorea - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "'%2$s'(r)en '%1$s' banaketa ez da aurkitu"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "'%2$s'(r)en '%1$s' bertsioa ez da aurkitu"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Ezin izan da %s zeregina aurkitu"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Ezin izan da %s paketea aurkitu"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Ezin izan da %s paketea aurkitu"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Ezin da %s paketea lokalizatu"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "%2$s iturburu zerrendako %1$u lerroa luzeegia da."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "CD-ROM Desmuntatzen...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "%s CD-ROM muntatze puntua erabiltzen\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Diska itxaroten...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "CD-ROM-a muntatzen...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Egiaztatzen... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Gordetako Etiketa: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Indize fitxategien bila diska arakatzen...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"%zu pakete indize, %zu jatorri indize %zu itzulpen indize eta %zu sinadura "
+"aurkitu dira\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Aurkitutako Etiketa: '%s' \n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Hau ez baliozko izen bat, froga berriro.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Diskaren izen:\n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Pakete zerrendak kopiatzen..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Jatorri zerrenda berria idazten\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Diskoarentzako jatorri sarrerak:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Ezin da %s atzitu."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Ezin da atzitu %s muntatze puntua"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Huts egin du CDROMa atzitzean"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Ez da ezagutzen komando lerroko '%c' aukera [%s]."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Ez da ulertzen komando lerroko %s aukera"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Komando lerroko %s aukera ez da boolearra."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "%s aukerak argumentu bat behar du."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+"%s aukera: konfigurazio elementuaren zehaztapenak =<val> eduki behar du."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "%s aukerak osoko argumentu bat behar du, eta ez '%s'"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "'%s' aukera luzeegia da"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "%s zentzua ez da ulertzen; probatu egiazkoa edo faltsua."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Eragiketa baliogabea: %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Mota ezezaguneko laburtzapena: '%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "%s konfigurazio fitxategia irekitzen"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Sintaxi errorea, %s:%u: Blokearen hasieran ez dago izenik."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Sintaxi errorea %s:%u: Gaizki eratutako"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Sintaxi errorea, %s:%u: Zabor gehigarria balioaren ondoren"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "Sintaxi errorea, %s:%u: Direktibak goi-mailan bakarrik egin daitezke"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Sintaxi errorea, %s:%u: habiaratutako elementu gehiegi"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Sintaxi errorea, %s:%u: hemendik barne hartuta"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Sintaxi errorea, %s:%u: onartu gabeko '%s' direktiba"
+
+#: apt-pkg/contrib/configuration.cc
+#, fuzzy, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr "Sintaxi errorea, %s:%u: Direktibak goi-mailan bakarrik egin daitezke"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Sintaxi errorea, %s:%u: Zabor gehigarria fitxategi amaieran"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Arazoa fitxategia desestekatzean"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr ""
+"Ez da blokeorik erabiltzen ari irakurtzeko soilik den %s blokeo "
+"fitxategiarentzat"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Ezin izan da %s blokeo fitxategia ireki"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr ""
+"Ez da blokeorik erabiltzen ari nfs %s muntatutako blokeo fitxategiarentzat"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Ezin izan da %s blokeoa hartu"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "%s espero zen baina ez zegoen han"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "%s azpiprozesuak segmentaziuo hutsegitea jaso du."
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "%s azpiprozesuak segmentaziuo hutsegitea jaso du."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "%s azpiprozesuak errore kode bat itzuli du (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "%s azpiprozesua ustekabean amaitu da"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Irakurketa errorea"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Idazketa errorea"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Arazoa fitxategia ixtean"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Huts egin du IPC azpiprozesua sortzean"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Huts egin du konpresorea exekutatzean "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "%s fitxategia ezin izan da ireki"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Ezin izan da %s(r)en kanalizazioa ireki"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "irakurrita; oraindik %lu irakurtzeke, baina ez da ezer geratzen"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "idatzita; oraindik %lu idazteke, baina ezin da"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the file %s"
+msgstr "Arazoa fitxategia ixtean"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Arazoa fitxategia sinkronizatzean"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Arazoa fitxategia sinkronizatzean"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Ezin da daturik lortu %s(e)tik"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "%s : ezin da idatzi"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Ezin da fitxategi huts baten mmap egin"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Ezin izan da %lu byteren mmap egin"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Ezin izan da %s(r)en kanalizazioa ireki"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to close mmap"
+msgstr "Ezin da %s ireki"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to synchronize mmap"
+msgstr "Ezin da deitu "
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Ezin izan da %lu byteren mmap egin"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Huts fitxategia mozterakoan"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"MMAP dinamikoa memoriaz kanpo. Mesedez handitu APT::Cache-Start muga. Uneko "
+"balioa: %lu. (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Errorea!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Eginda"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... Eginda"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "%s hautapena ez da aurkitu"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Ezin da %s pakete fitxategia analizatu (1)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "No sections in Release file %s"
+msgstr "Oharra, %s hautatzen %s(r)en ordez\n"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Lerro baliogabea desbideratze fitxategian: %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Ezin da %s pakete fitxategia analizatu (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, fuzzy, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Ezin da zerrenda direktorioa blokeatu"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr ""
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "%s Instalatzen"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "%s konfiguratzen"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "%s kentzen"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removing %s"
+msgstr "%s guztiz ezabatu da"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Inbstalazio-ondorengo %s abiarazlea exekutatzen"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "%s Instalatuta"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "'%s' direktorioa falta da"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, fuzzy, c-format
+msgid "Could not open file '%s'"
+msgstr "%s fitxategia ezin izan da ireki"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "%s prestatzen"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "%s irekitzen"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "%s konfiguratzeko prestatzen"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "%s kentzeko prestatzen"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "%s kendurik"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "%s guztiz ezabatzeko prestatzen"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "%s guztiz ezabatu da"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "%s : ezin da idatzi"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Dependentzia zuhaitza eraikitzen"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Hautagaien bertsioak"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Dependentzi Sormena"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Egoera argibideak irakurtzen"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Huts egin du %s EgoeraFitxategia irekitzean"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Ezin izan da %s aldiroko EgoeraFitrxategia idatzi"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "%i erregistro grabaturik.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "%i erregistro eta %i galdutako fitxategi grabaturik.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "%i erregistro eta %i okerreko fitxategi grabaturik\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"%i erregistro, %i galdutako fitxategi eta %i okerreko fitxategi grabaturik\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, fuzzy, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Egiaztapena ez dator bat"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "'%s' pakete sistema ez da onartzen"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Ezin da pakete sistemaren mota egokirik zehaztu"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "%s fitxategia ezin izan da ireki"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Instalazio hau exekutatzeko, funtsezko %s paketea aldi baterako kendu behar "
+"da, Gatazka/Aurre-mendekotasun begizta baten ondorioz. Normalean arriskutsua "
+"izaten da, baina hala ere egin nahi baduzu, aktibatu APT::Force-LoopBreak "
+"aukera."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Paketeen katxea hutsik"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Paketeen katxe fitxategia hondatuta dago"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Paketeen katxe fixategiaren bertsioa ez da bateragarria"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "APT honek ez du '%s' bertsio sistema onartzen"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Paketeen katxea beste arkitektura batentzat sortuta dago"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Paketeen katxe fitxategia hondatuta dago"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Mendekotasuna:"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Aurremendekotasuna:"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Iradokizuna:"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Gatazka:"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Gomendioa:"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Ordeztea:"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Apurturik"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Zaharkitzea:"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "garrantzitsua"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "beharrezkoa"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "estandarra"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "estra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "aukerakoa"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Katxearen bertsio sistema ez da bateragarria"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Errorea gertatu da %s prozesatzean (FindPkg)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "APT honek maneia dezakeen pakete izenen kopurua gainditu duzu."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "APT honek maneia dezakeen bertsio kopurua gainditu duzu."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "APT honek maneia dezakeen azalpen kopurua gainditu duzu."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "APT honek maneia dezakeen mendekotasun muga gainditu duzu."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Pakete Zerrenda irakurtzen"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "S/I errorea iturburu katxea gordetzean"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "'%s' motako indize fitxategirik ez da onartzen"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, fuzzy, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Erregistro baliogabea hobespenen fitxategian, pakete goibururik ez"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Ez da ulertu %s orratz-mota (pin)"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Ez da lehentasunik zehaztu orratzarentzat (pin) (edo zero da)"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Gaizki osatutako override %s, lerroa: %lu #1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "%s irekitzen"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Gaizki osatutako %u lerroa %s Iturburu zerrendan (type)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "'%s' mota ez da ezagutzen %u lerroan %s Iturburu zerrendan"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Gaizki osatutako %u lerroa %s Iturburu zerrendan (type)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "'%s' mota ez da ezagutzen %u lerroan %s Iturburu zerrendan"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "'Iturburu' URI batzuk jarri behar dituzu sources.list-en"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Ezin da lortu %s %s"
+
+#: apt-pkg/update.cc
+#, fuzzy
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Indize fitxategi batzuk ezin izan dira deskargatu; ez ikusi egin zaie, edo "
+"zaharrak erabili dira haien ordez."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Berriketak kalkulatzen"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Atzituta:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Hartu:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Ez ikusi:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr ""
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Lortuta: %sB (%s) (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Lanean]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Medio Aldaketa: Mesedez sar\n"
+" '%s'\n"
+"izeneko diska '%s' gailuan eta enter sakatu\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Mendekotasunak zuzentzen..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " : huts egin du."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Ezin dira mendekotasunak zuzendu"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Ezin da bertsio berritzeko multzoa minimizatu"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Eginda"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "Beharbada 'apt --fix-broken install' exekutatu nahiko duzu zuzentzeko."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Bete gabeko mendekotasunak. Probatu 'apt --fix-broken install' paketerik "
+"gabe (edo zehaztu konponbide bat)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Oharra: %s hautatzen '%s' adierazpen erregularrarentzat\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Oharra: %s hautatzen '%s' adierazpen erregularrarentzat\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Oharra: %s hautatzen '%s' adierazpen erregularrarentzat\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "%s pakete birtual bat da, honek hornitua:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [Instalatuta]"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Not candidate version]"
+msgstr "Hautagaien bertsioak"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Zehazki bat hautatu behar duzu instalatzeko."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"%s paketea ez dago erabilgarri, baina beste pakete batek erreferentzia \n"
+"egiten dio. Beharbada paketea faltako da, edo zaharkituta egongo da, edo \n"
+"beste iturburu batean bakarrik egongo da erabilgarri\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Baina ondorengo paketeek ordezten dute:"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "%s paketeak ez du instalatzeko hautagairik"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr ""
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "%s paketea ez dago instalatuta, eta, beraz, ez da kenduko\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "%s paketea ez dago instalatuta, eta, beraz, ez da kenduko\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Oharra, %s hautatzen %s(r)en ordez\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "APT honek Super Behiaren Ahalmenak ditu."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Ez da paketerik aurkitu"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "KONTUZ: Hurrengo paketeak ezin dira egiaztatu!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Egiaztapen abisua gainidazten.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Zenbait pakete ezin dira egiaztatu"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Paketeak egiaztapen gabe instalatu?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Arazoak daude, eta -y erabili da --force-yes gabe"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Ezin da %s(e)n duzun leku librea atzeman."
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Ez daukazu nahikoa leku libre %s(e)n."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Ezin da deskarga direktorioa blokeatu"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Pakete batzuk ezin izan dira instalatu. Beharbada ezinezko egoera \n"
+"bat eskatu duzu, edo, banaketa ezegonkorra erabiltzen ari bazara,\n"
+"beharrezko pakete batzuk ez ziren sortuko oraindik, edo \n"
+"Sarrerakoetan (Incoming) egoten jarraituko dute."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Informazio honek arazoa konpontzen lagun dezake:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Hautsitako paketeak"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Ezin izan dira artxibo batzuk lortu; beharbada apt-get update exekutatu, edo "
+"--fix-missing aukerarekin saiatu?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Barne errorea, InstallPackages apurturiko paketeez deitu da!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Paketeak ezabatu beharra dute baina Ezabatzea ezgaiturik dago."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Arazoak daude, eta -y erabili da --force-yes gabe"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Arazoak daude, eta -y erabili da --force-yes gabe"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Barne errorea, ez da ordenatzeaz amaitu"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Hau bitxia... Tamainak ez dira berdina, idatzi apt@packages.debian.org-ra "
+"berri emanez (ingelesez)"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Artxiboetako %sB/%sB eskuratu behar dira.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Artxiboetako %sB eskuratu behar dira.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "Ekintza honen ondoren, %sB gehiago erabiliko dira diskoan.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Ekintza honen ondoren, %sB libratuko dira diskoan.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "'Trivial Only' zehaztu da, baina hau ez da eragiketa tribial bat."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Bai, egin esandakoa!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Egin nahi duzunak kalte larriak eragin ditzake\n"
+"Jarraitzeko, idatzi '%s' esaldia\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Abortatu."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Aurrera jarraitu nahi al duzu?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Fitxategi batzuk ezin izan dira deskargatu"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Deskarga amaituta eta deskarga soileko moduan"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing eta euskarri aldaketa ez dira onartzen oraingoz"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Falta diren paketeak ezin dira zuzendu."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Abortatu instalazioa."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "Suposatu ez dugun zerbait ezabatuko da, ezin da AutoRemover abiarazi"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Hmm, dirudienez AutoRemover-ek gertatu behar ez zen apurtu du\n"
+"Mesedez programa errore txosten bat bete mesedez."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Barne Errorea, AutoRemover-ek zerbait apurtu du"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"Ondorengo pakete automatikoki instalatuak izan ziren eta ez dira luzaroago "
+"behar."
+msgstr[1] ""
+"Ondorengo pakete automatikoki instalatuak izan ziren eta ez dira luzaroago "
+"behar."
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] ""
+"Ondorengo pakete automatikoki instalatuak izan ziren eta ez dira luzaroago "
+"behar."
+msgstr[1] ""
+"Ondorengo pakete automatikoki instalatuak izan ziren eta ez dira luzaroago "
+"behar."
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "'%s' erabili ezabatzeko."
+msgstr[1] "'%s' erabili ezabatzeko."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Ondorengo pakete gehigarriak instalatuko dira:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Iradokitako paketeak:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Gomendatutako paketeak:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "%s saltatzen. Instalatuta dago, eta ez dago bertsio-berritzerik.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr "%s saltatzen. Instalatuta dago, eta ez dago bertsio-berritzerik.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "%s berriro instalatzea ez da posible; ezin da deskargatu.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s bertsiorik berriena da jada.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s eskuz instalatua bezala ezarri.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Hautatutako bertsioa: %s (%s) -- %s\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Hautatutako bertsioa: %s (%s) -- %s\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Instalatuta]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [Instalatuta]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [Instalatuta]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [Instalatuta]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "baina %s instalatuta dago"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "baina %s instalatzeko dago"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "baina ez da instalagarria"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "baina pakete birtuala da"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "baina ez da instalatuko"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "baina ez dago instalatuta"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " edo"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Ondorengo paketeetan bete gabeko mendekotasunak daude:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Ondorengo pakete BERRIAK instalatuko dira:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Ondorengo paketeak KENDUKO dira:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Ondorengo paketeak mantendu egin dira:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Ondorengo paketeak bertsio-berrituko dira:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Ondorengo paketeak AURREKO BERTSIORA itzuliko dira:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Ondorengo pakete atxikiak aldatu egingo dira:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (arrazoia: %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"KONTUZ: Ondorengo funtsezko paketeak kendu egingo dira\n"
+"EZ ezazu horrelakorik egin, ez badakizu ondo zertan ari zaren!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu bertsio berritua(k), %lu berriki instalatuta, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu berrinstalatuta, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu aurreko bertsiora itzulita, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu kentzeko, eta %lu bertsio-berritu gabe.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu ez erabat instalatuta edo kenduta.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[B/e]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[b/E]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr ""
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+#, fuzzy
+msgid "You must give at least one search pattern"
+msgstr "Zehazki eredu bat eman behar duzu."
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "%s pakete fitxategia ez dago sinkronizatuta."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Pakete Fitxategiak:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+"Katxea ez dago sinkronizatuta, ezin zaio erreferentziarik (x-ref) egin "
+"pakete fitxategi bati"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Pin duten Paketeak:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Instalatuta: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Hautagaia: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(bat ere ez)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Bertsio taula:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Ezin izan da %s paketea aurkitu"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Ezin izan da %s paketea aurkitu"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Ezin izan da %s paketea aurkitu"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Ezin da atzitu %s iturburu paketeen zerrenda"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Gutxienez pakete bat zehaztu behar duzu iturburua lortzeko"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Ezin da iturburu paketerik aurkitu %s(r)entzat"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Dagoeneko deskargaturiko '%s' fitxategia saltatzen\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Iturburu artxiboetako %sB/%sB eskuratu behar dira.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Iturburu artxiboetako %sB eskuratu behar dira.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Eskuratu %s iturburua\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Huts egin du zenbat artxibo lortzean."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr ""
+"%s(e)n dagoeneko deskonprimitutako iturburua deskonprimitzea saltatzen\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Deskonprimitzeko '%s' komandoak huts egin du.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Egiaztatu 'dpkg-dev' paketea instalaturik dagoen.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Eraikitzeko '%s' komandoak huts egin du.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Ezin izan da %s(r)en eraikitze mendekotasunen informazioa eskuratu"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s: ez du eraikitze mendekotasunik.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Gutxienez pakete bat zehaztu behar duzu eraikitze mendekotasunak egiaztatzeko"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Huts egin du eraikitze mendekotasunak prozesatzean"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Huts egin du eraikitze mendekotasunak prozesatzean"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Huts egin du %s izenaren ordez %s ipintzean"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "%s paketeak (%s bertsioa) mendekotasun arazo bat du:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Eguneratzeko komandoak ez du argumenturik hartzen"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "Eguneratzeko komandoak ez du argumenturik hartzen"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Pakete Izenak Guztira : "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total package structures: "
+msgstr "Pakete Izenak Guztira : "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Pakete normalak:"
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Pakete birtual puruak:"
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Bakanako pakete birtualak: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Nahastutako pakete birtualak: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Falta direnak: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Bertsio Ezberdinak Guztira: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Azalpen Ezberdinak Guztira: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Dependentziak Guztira: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Guztira Bertsio/fitxategi erlazioak: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Fitx/Azalpen erlazioak guztira: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Guztira Saltzaile Mapatzea: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Guztira bateratutako kateak: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Guztira galdutako tokia:"
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Guztira erregistratutako lekua: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Iturburu erregistroak erakusten ditu"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Adierazpen erregularrak bilatzen ditu pakete zerrendan"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Pakete baten mendekotasunak erakusten ditu"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Paketearen erregistro irakurgarri bat erakusten du"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Pakete guztien izenak zerrendatzen ditu"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Gidalerroen ezarpenak erakusten ditu"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr ""
+"Mesedez idatzi izen bat diska honentzat, 'Debian 2.1r1 1 Diska' antzerakoan"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Mesedez sar diska bat gailuan eta enter sakatu"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Huts egin du %s izenaren ordez %s ipintzean"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Prozesu hau bildumako beste CD guztiekin errepikatu."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Parekatu gabeko argumentuak"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Erabilera: apt-config [aukerak] komandoa\n"
+"\n"
+"apt-config APT konfigurazio fitxategia irakurtzeko tresna soil bat da\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Erabilera: apt-extracttemplates fitxategia1 [fitxategia2 ...]\n"
+"\n"
+"apt-extracttemplates debian-eko paketeen konfigurazioaren eta txantiloien\n"
+"informazioa ateratzeko tresna bat da\n"
+"\n"
+"Aukerak:\n"
+" -h Laguntza testu hau\n"
+" -t Ezarri aldi baterako direktorioa\n"
+" -c=? Irakurri konfigurazio fitxategi hau\n"
+" -o=? Ezarri konfigurazio aukera arbitrario bat. Adib.: -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Ezin da debconf bertsioa eskuratu. Debconf instalatuta dago?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Ezin izan da %s paketea aurkitu"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s eskuz instalatua bezala ezarri.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Barne Errorea, arazo konpontzaileak zerbait apurtu du"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Onartutako Moduluak:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Erabilera: apt-get [aukerak] komandoa\n"
+" apt-get [aukerak] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [aukerak] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get paketeak deskargatu eta instalatzeko komando lerroko interfaze soil\n"
+"bat da. Gehien erabiltzen diren komandoak eguneratzekoa eta instalatzekoa \n"
+"dira: update eta install.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Eskuratu pakete zerrenda berriak"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Egin bertsio berritzea"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Instalatu pakete berriak (paketea libc6 da, eta ez libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Kendu paketeak"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Paketeak kendu eta garbitu"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Automatikoki kendu erabiltzen ez diren paketeak"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Banaketaren bertsio berritzea: ikus apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Jarraitu dselect hautapenak"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Konfiguratu iturburu paketeen eraikitze dependentziak"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Ezabatu deskargatutako artxibo fitxategiak"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Ezabatu deskargatutako artxibo fitxategi zaharrak"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Egiaztatu ez dagoela hautsitako mendekotasunik"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Deskargatu iturburu artxiboak"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "Gutxienez pakete bat zehaztu behar duzu iturburua lortzeko"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Erabilera: apt-extracttemplates fitxategia1 [fitxategia2 ...]\n"
+"\n"
+"apt-extracttemplates debian-eko paketeen konfigurazioaren eta txantiloien\n"
+"informazioa ateratzeko tresna bat da\n"
+"\n"
+"Aukerak:\n"
+" -h Laguntza testu hau\n"
+" -t Ezarri aldi baterako direktorioa\n"
+" -c=? Irakurri konfigurazio fitxategi hau\n"
+" -o=? Ezarri konfigurazio aukera arbitrario bat. Adib.: -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Erabilera: apt-extracttemplates fitxategia1 [fitxategia2 ...]\n"
+"\n"
+"apt-extracttemplates debian-eko paketeen konfigurazioaren eta txantiloien\n"
+"informazioa ateratzeko tresna bat da\n"
+"\n"
+"Aukerak:\n"
+" -h Laguntza testu hau\n"
+" -t Ezarri aldi baterako direktorioa\n"
+" -c=? Irakurri konfigurazio fitxategi hau\n"
+" -o=? Ezarri konfigurazio aukera arbitrario bat. Adib.: -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "baina ez dago instalatuta"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s eskuz instalatua bezala ezarri.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s eskuz instalatua bezala ezarri.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s bertsiorik berriena da jada.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s bertsiorik berriena da jada.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "%s eskuz instalatua bezala ezarri.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Huts egin du %s irekitzean"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "%s eskuz instalatua bezala ezarri.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "Egiaztatu 'dpkg-dev' paketea instalaturik dagoen.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "%s eskuz instalatua bezala ezarri.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "%s eskuz instalatua bezala ezarri.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Pakete erregistro ezezaguna!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "Pakete Zerrenda irakurtzen"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "Pin duten Paketeak:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Hautsitako paketeak"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "%s eskuz instalatua bezala ezarri.\n"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "Egoera argibideak irakurtzen"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Okerreko ezarpen lehenetsia!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Jarraitzeko, sakatu Sartu."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Deskargaturiko .deb fitxategi guztiak ezabatu nahi al dituzu?"
+
+#: dselect/install
+#, fuzzy
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "Errore batzuk gertatu dira deskonprimitzean. Konfiguratu egingo ditut"
+
+#: dselect/install
+#, fuzzy
+msgid "will be configured. This may result in duplicate errors"
+msgstr "instalatutako paketeak. Horrek errore bikoiztuak eragin ditzake"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "edo falta diren mendekotasunen erroreak. Hori ondo dago; mezu honen"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"aurreko erroreak dira garrantzitsuak. Konpondu eta exekutatu [I]nstall "
+"berriro"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Eskuragarrien datuak biltzen"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Pakete luzapenen zerrenda luzeegia da"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Errorea direktorioa prozesatzean %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Iturburu luzapenen zerrenda luzeegia da"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Errorea eduki fitxategiaren goiburua idaztean"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Errorea edukiak prozesatzean %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Erabilera: apt-ftparchive [aukerak] komandoa\n"
+"Komandoak: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive Debian artxiboen indizeak sortzeko erabiltzen da. Sortzeko \n"
+"estilo asko onartzen ditu, erabat automatizatuak nahiz ordezte funtzionalak\n"
+"'dpkg-scanpackages' eta 'dpkg-scansources'erako\n"
+"Package izeneko fitxategiak sortzen ditu .deb fitxategien zuhaitz batetik.\n"
+"Package fitxategiak pakete bakoitzaren kontrol eremu guztiak izaten ditu,\n"
+"MD5 hash balioa eta fitxategi tamaina barne. Override fitxategia erabiltzen\n"
+"da lehentasunaren eta sekzioaren balioak behartzeko.\n"
+"\n"
+"Era berean, iturburu fitxategiak ere sortzen ditu .dsc fitxategien\n"
+"zuhaitzetik. --source-override aukera erabil daiteke src override \n"
+"fitxategi bat zehazteko.\n"
+"'packages' eta 'sources' komandoa zuhaitzaren erroan exekutatu behar dira.\n"
+"BinaryPath-ek bilaketa errekurtsiboaren oinarria seinalatu behar du, eta\n"
+"override fitxategiak override banderak izan behar ditu. Pathprefix \n"
+"fitxategi izenen eremuei eransten zaie (halakorik badago). Hona hemen\n"
+"Debian artxiboko erabilera argibide bat:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Aukerak:\n"
+" -h Laguntza testu hau\n"
+" --md5 Kontrolatu MD5 sortzea\n"
+" -s=? Iturburuaren override fitxategia\n"
+" -q Isilik\n"
+" -d=? Hautatu aukerako katxearen datu-basea\n"
+" --no-delink Gaitu delink arazketa modua\n"
+" --contents Kontrolatu eduki fitxategia sortzea\n"
+" -c=? Irakurri konfigurazio fitxategi hau\n"
+" -o=? Ezarri konfigurazio aukera arbitrario bat"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Ez dago bat datorren hautapenik"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Fitxategi batzuk falta dira `%s' pakete fitxategien taldean"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "Datu-basea hondatuta dago; fitxategiari %s.old izena jarri zaio"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "Datu-basea zaharra da; %s bertsio-berritzen saiatzen ari da"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"DB formatu baliogabe da. Apt bertsio zaharrago batetik eguneratu baduzu, "
+"mesedez datubasea ezabatu eta birsortu."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Ezin da ireki %s datu-base fitxategia: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Huts egin du %s esteka irakurtzean"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Artxiboak ez du kontrol erregistrorik"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Ezin da kurtsorerik eskuratu"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Huts egin du memoria esleitzean"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "'%s' Konpresio Algoritmo Ezezaguna"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "%s irteera konprimituak konpresio-tresna bat behar du"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Huts egin du azpiprozesuarentzako IPC kanalizazio bat sortzean"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Huts egin du sardetzean"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Konprimatu Umeak"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Barne Errorea, Huts %s sortzerakoan"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Huts egin du azpiprozesu/fitxategiko S/Iak"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Huts egin du MD5 konputatzean"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Ezin da %s ireki"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Gaizki osatutako override %s, lerroa: %lu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Huts egin du %s override fitxategia irakurtzean"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Gaizki osatutako override %s, lerroa: %lu #1"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Gaizki osatutako override %s, lerroa: %lu #2"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Gaizki osatutako override %s, lerroa: %lu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "A: Ezin da %s direktorioa irakurri\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "A: Ezin da %s atzitu\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "A: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: Erroreak fitxategiari dagozkio "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Huts egin du %s ebaztean"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Huts egin dute zuhaitz-urratsek"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Huts egin du %s irekitzean"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Ezin izan da %s %s(r)ekin estekatu"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " DeLink-en mugara (%sB) heldu da.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Artxiboak ez du pakete eremurik"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s: ez du override sarrerarik\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " %s mantentzailea %s da, eta ez %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s: ez du jatorri gainidazketa sarrerarik\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s: ez du bitar gainidazketa sarrerarik\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Goiburuen zain"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "http zerbitzariak erantzun goiburu baliogabe bat bidali du."
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Okerreko goiburu-lerroa"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "http zerbitzariak Content-Length buru baliogabe bat bidali du"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "http zerbitzariak Content-Range buru baliogabe bat bidali du"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "http zerbitzariak barruti onarpena apurturik du"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Datu formatu ezezaguna"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Goiburu data gaizki dago"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Konexioak huts egin du"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Barne errorea"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Ezin da cdrom-eko %s datu-basea irakurri"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Mesedez erabili apt-cdrom APT-k CD hau ezagutu dezan.\n"
+"apt-get update ezin da erabili CD berriak gehitzeko"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "CD okerra"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr ""
+"Ezin izan da %s(e)ko CD-ROMa desmuntatu; beharbada erabiltzen ariko da."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Ez da diska aurkitu"
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Ez da fitxategia aurkitu"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Konektatzen -> %s.(%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Ezin izan da socket-ik sortu honentzat: %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Ezin izan da konexioa hasi -> %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr ""
+"Ezin izan da konektatu -> %s:%s (%s). Konexioak denbora muga gainditu du"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Huts egin du"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Ezin izan da konektatu -> %s:%s (%s)"
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Konektatzen -> %s..."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Ezin izan da '%s' ebatzi"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Aldi baterako akatsa '%s' ebaztean"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Zerbait arraroa pasatu da '%s:%s' (%i) ebaztean"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Zerbait arraroa pasatu da '%s:%s' (%i) ebaztean"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Ezin da konektatu -> %s %s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Huts egin du atzitzean"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "URI baliogabea. URI lokalek ezin dute // eduki hasieran"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Sartzen"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Ezin izan da peer edo parekoaren izena zehaztu"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Ezin izan da izen lokala zehaztu"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Zerbitzariak gure konexioa ukatu eta hau esan du: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USERek huts egin du, eta zerbitzariak hau esan du: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASSek huts egin du, eta zerbitzariak hau esan du: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Proxy zerbitzari bat zehaztu da, baina sarrerako script-ik ez. Acquire::ftp::"
+"ProxyLogin hutsik dago."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr ""
+"Sarrerako script-eko '%s' komandoak huts egin du, eta zerbitzariak hau esan "
+"du: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPEk huts egin du, eta zerbitzariak hau esan du: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Konexioa denboraz kanpo"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Zerbitzariak konexioa itxi du"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Erantzun batek bufferrari gainez eragin dio."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Protokolo hondatzea"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Ezin izan da socket-a sortu"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr ""
+"Ezin izan da datu-socketa konektatu; konexioak denbora muga gainditu du"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Ezin izan da socket pasibora konektatu."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo-k ezin izan du socket entzule bat eskuratu"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Ezin izan da socket bat lotu"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Ezin izan da socket-ean entzun"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Ezin izan da socket-aren izena zehaztu"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Ezin da PORT komandoa bidali"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Helbide familia ezezagunaa: %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRTek huts egin du, eta zerbitzariak hau esan du: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Datu-socket konexioak denbora muga gainditu du"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Ezin da konexioa onartu"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Arazoa fitxategiaren hash egitean"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Ezin da fitxategia lortu; zerbitzariak hau esan du: '%s'"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Datu-socketak denbora muga gainditu du"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Datu transferentziak huts egin du, eta zerbitzariak hau esan du: '%s'"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Kontsulta"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Ezin da deitu "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Beintza sinadura baliogabe bat aurkitu da."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr "Barne errorea: Sinadura zuzena, baina ezin da egiaztapen marka zehaztu"
+
+#: methods/gpgv.cc
+#, fuzzy
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Ezin da %s abiarazi sinadura egiaztatzeko (gnupg instalaturik al dago?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Errore ezezaguna apt-key exekutatzean"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Ondorengo sinadurak baliogabeak dira:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Ondorengo sinadurak ezin dira egiaztatu gako publikoa ez bait dago "
+"eskuragarri:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Errorea fitxategian idaztean"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Errorea zerbitzaritik irakurtzen Urrunetik amaitutako konexio itxiera"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Errorea zerbitzaritik irakurtzean"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Errorea fitxategian idaztean"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Hautapenak huts egin du"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Konexioaren denbora muga gainditu da"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Errorea irteerako fitxategian idaztean"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "%s fitxategia ezin izan da ireki"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "%s fitxategia ezin izan da ireki"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr ""
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Huts egin du aldaketa ordua ezartzean"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Konexioa behar baino lehenago itxi da"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Bete gabeko mendekotasunak. Probatu --fix-broken erabiliz."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Beharbada 'apt --fix-broken install' exekutatu nahiko duzu hauek "
+#~ "zuzentzeko:"
+
+#~ msgid "(not found)"
+#~ msgstr "(ez da aurkitu)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Paketearen pin-a:"
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "Ez dago gako publiko erabilgarririk hurrengo gako ID hauentzat:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "%s direktorioa desbideratuta dago"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "%2$s(r)en %1$s mendekotasuna ezin da bete, %3$s paketea ezin delako "
+#~ "aurkitu"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "%2$s(r)en %1$s mendekotasuna ezin da bete, %3$s paketea ezin delako "
+#~ "aurkitu"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Huts egin du %2$s(r)en %1$s mendekotasuna betetzean: instalatutako %3$s "
+#~ "paketea berriegia da"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "%2$s(r)en %1$s mendekotasuna ezin da bete, ez baitago bertsio-eskakizunak "
+#~ "betetzen dituen %3$s paketearen bertsio erabilgarririk"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "%2$s(r)en %1$s mendekotasuna ezin da bete, %3$s paketea ezin delako "
+#~ "aurkitu"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Huts egin du %2$s(r)en %1$s mendekotasuna betetzean: %3$s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "%s(r)en eraikitze mendekotasunak ezin izan dira bete."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Arazoa %s desestekatzean"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Huts egin du %s desestekatzean"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Erabilera: apt-cache [aukerak] komandoa\n"
+#~ " apt-cache [aukerak] show pak1 [pak2 ...]\n"
+#~ "\n"
+#~ "APTren katxe fitxategi bitarrak manipulatzeko eta kontsultatzeko "
+#~ "erabiltzen\n"
+#~ "den behe-mailako tresna bat da, apt-cache.\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Aukerak:\n"
+#~ " -h Laguntza testu hau.\n"
+#~ " -p=? Paketearen katxea.\n"
+#~ " -s=? Iturburuaren katxea.\n"
+#~ " -q Desgaitu progresio adierazlea.\n"
+#~ " -i Mendekotasun nagusiak soilik erakutsi.\n"
+#~ " -c=? Irakurri konfigurazio fitxategi hau\n"
+#~ " -o=? Ezarri konfigurazio aukera arbitrario bat. Adib.: -o dir::cache=/"
+#~ "tmp\n"
+#~ "Informazio gehiago nahi izanez gero: ikus apt-cache(8) eta apt.conf(5).\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Aukerak:\n"
+#~ " -h Laguntza testu hau.\n"
+#~ " -c=? Irakurri konfigurazio fitxategi hau\n"
+#~ " -o=? Ezarri konfigurazio aukera arbitrario bat. Adib.: -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Erabilera: apt-sortpkgs [aukerak] fitxategia1 [fitxategia2...]\n"
+#~ "\n"
+#~ "apt-sortpkgs pakete fitxategiak ordenatzeko tresna soil bat da. Zein\n"
+#~ "motatako fitxategia den adierazteko -s aukera erabiltzen da.\n"
+#~ "\n"
+#~ "Aukerak:\n"
+#~ " -h Laguntza testu hau\n"
+#~ " -s Erabili iturburu fitxategien ordenatzea\n"
+#~ " -c=? Irakurri konfigurazio fitxategi hau\n"
+#~ " -o=? Ezarri konfigurazio aukera arbitrario bat. Adib: -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Prozesu umeak huts egin du"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Gutxienez pakete bat zehaztu behar duzu iturburua lortzeko"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Huts egin du kanalizazioak sortzean"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Huts egin du gzip exekutatzean "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s %s-rentzat %s %s-ean konpilatua\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Huts egin du FILE* sortzean"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Gaizki osatutako %lu lerroa %s Iturburu zerrendan (URI analisia)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr "Gaizki osatutako %lu lerroa %s Iturburu zerrendan (dist analisia)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "Gaizki osatutako %lu lerroa %s Iturburu zerrendan (dist)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "Gaizki osatutako %lu lerroa %s Iturburu zerrendan (dist analisia)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "Gaizki osatutako %lu lerroa %s Iturburu zerrendan (dist analisia)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr "Gaizki osatutako %lu lerroa %s Iturburu zerrendan (dist analisia)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Gaizki osatutako %lu lerroa %s Iturburu zerrendan (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Gaizki osatutako %lu lerroa %s Iturburu zerrendan (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Gaizki osatutako %lu lerroa %s Iturburu zerrendan (URI analisia)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr ""
+#~ "Gaizkieratutako %lu lerroa %s iturburu zerrendan (banaketa orokorra)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "Gaizki osatutako %lu lerroa %s Iturburu zerrendan (dist analisia)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "%s %s paketea ez da aurkitu fitxategi mendekotasunak prozesatzean"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Ezin da atzitu %s iturburu paketeen zerrenda"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Fitxategiaren erreferentziak biltzen"
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Ezin da %s pakete fitxategia analizatu (1)"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "%s saltzaile blokeak ez du egiaztapen markarik"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Guztira bertsio dependentzia lekua: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Ez daukazu nahikoa leku libre %s(e)n."
+
+#~ msgid "Done"
+#~ msgstr "Eginda"
+
+#, fuzzy
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Abortatu instalazioa."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Barne Errorea, AllUpgade-k zerbait apurtu du"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s ez da baliozko DEB pakete bat."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "%s CD-ROM muntatze puntua erabiltzen\n"
+#~ "CD-ROM-a muntatzen\n"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Hau ez da baliozko DEB fitxategi bat, ez du '%s', '%s' edo '%s' atalik "
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5Sum ez dator bat"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Ezin izan dut %s paketeko fitxategi bat lokalizatu. Beharbada eskuz "
+#~ "konpondu beharko duzu paketea."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Ezin da erregistroa idatzi, openpty() -ek huts egin du (/dev/pts ez dago "
+#~ "muntaturik?)\n"
+
+#, fuzzy
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "%s konfigurazio fitxategia irekitzen"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Huts egin du %s kentzean"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Ezin da %s sortu"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Huts egin du %sinfo-tik datuak lortzean"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr "info eta temp direktorioek fitxategi sistema berean egon behar dute"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Huts egin du %sinfo administrazio direktoriora aldatzean"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Barne errorea pakete Izen bat eskuratzerakoan"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Fitxategi zerrendaketa irakurtzen"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Huts egin du '%sinfo/%s' zerrenda-fitxategia irekitzean. Fitxategi hori "
+#~ "ezin baduzu leheneratu, hustu ezazu, eta berrinstalatu berehala "
+#~ "paketearen bertsio bera!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Huts egin du %sinfo/%s zerrenda fitxategia irakurtzean"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Barne errorea nodo bat eskuratzerakoan"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Huts egin du desbideratzeen %sdiversions fitxategia irekitzean"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Desbideratze fitxategia hondatuta dago"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Lerro baliogabea desbideratze fitxategian: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Barne errorea desbideratze bat gehitzean"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Paketearen katxea hasieratu behar da lehendabizi"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Ezin izan da pakete bat aurkitu: Burua, mugitu %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Okerreko ConfFile sekzioa egoera fitxategian. Desplazamendua %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Errorea MD5 analizatzean. Desplazamendua %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Ezin izan da %s(e)ra aldatu"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Ezin izan da baliozko kontrol fitxategi bat lokalizatu"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Ezin izan da %s(r)en kanalizazioa ireki"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Irakurri errorea %s prozesutik"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Goiburu-lerro bakarra eskuratu da %u karaktereen gainean"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Gaizki osatutako override %s, lerroa: %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Gaizki osatutako override %s, lerroa: %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Gaizki osatutako override %s, lerroa: %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "deskonpresorea"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "irakurrita; oraindik %lu irakurtzeke, baina ez da ezer geratzen"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "idatzita; oraindik %lu idazteke, baina ezin da"
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Errorea gertatu da %s prozesatzean (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Errorea gertatu da %s prozesatzean (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Errorea gertatu da %s prozesatzean (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Errorea gertatu da %s prozesatzean (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Errorea gertatu da %s prozesatzean (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Errorea gertatu da %s prozesatzean (NewVersion1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Errorea gertatu da %s prozesatzean (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Errorea gertatu da %s prozesatzean (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Errorea gertatu da %s prozesatzean (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Errorea gertatu da %s prozesatzean (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Barne Errorea, ezin da atala kokatu"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr "E: Acquire::gpgv::Options argumentu zerrenda luzeegia. Uzten."
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "Errorea gertatu da %s prozesatzean (NewVersion2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "Gaizki osatutako %u lerroa %s Iturburu zerrendan (hornitzaile id-a)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "Ezin da eraztuna ebatzi: '%s'"
+
+#~ msgid "Could not patch file"
+#~ msgstr "Ezin izan zaio fitxategiari adabakia ezarri"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "%s-ren abiarazleak prozesatzen"
diff --git a/po/fi.po b/po/fi.po
new file mode 100644
index 000000000..754901c89
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,4194 @@
+# translation of fi.po to Finnish
+# Finnish translation of apt.
+# This file is put in the public domain.
+# Tapio Lehtonen <tale@debian.org>, 2004-2006,2008.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 0.5.26\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2008-12-11 14:52+0200\n"
+"Last-Translator: Tapio Lehtonen <tale@debian.org>\n"
+"Language-Team: Finnish <debian-l10n-finnish@lists.debian.org>\n"
+"Language: fi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Arkiston tarkistussumma on virheellinen"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Tapahtui virhe luettaessa arkiston tiedoston otsikkoa"
+
+#: apt-inst/contrib/arfile.cc
+#, fuzzy, c-format
+msgid "Invalid archive member header %s"
+msgstr "Arkiston tiedoston otsikko on virheellinen"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Arkiston tiedoston otsikko on virheellinen"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Arkisto on pienempi kuin pitäisi"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Arkiston otsikoiden luku ei onnistunut"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Pakettia %s ei löytynyt"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Arkisto on turmeltunut"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Tar-ohjelman laskema tarkistussumma ei täsmää, arkisto on turmeltunut"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Tuntematon TAR-otsikon tyyppi %u, tiedosto %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Tämä ei ole kelvollinen DEB-arkisto, puuttuu tiedosto \"%s\""
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Tapahtui sisäinen virhe, tiedostoa %s ei löydy"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Ohjaustiedosto ei jäsenny"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Tiedoston %s kirjoittaminen ei onnistunut"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Tiedoston %s sulkeminen ei onnistunut"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Polku %s on liian pitkä"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Purettiin %s useammin kuin kerran"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "Kansio %s on korvautunut"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Paketti yrittää kirjoittaa korvautuksen kohteeseen %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Korvautuspolku on liian pitkä"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Tiedostolle %s ei toimi stat"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Nimen muuttaminen %s -> %s ei onnistunut"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "Kansiota %s ollaan korvaamassa muulla kuin kansiolla"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Solmua ei löytynyt sen hajautuslokerosta"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Polku on liian pitkä"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Päälle kirjoitettava paketti täsmää mutta paketille %s ei ole versiota"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Tiedosto %s/%s kirjoitetaan paketista %s tulleen päälle"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Tiedostoa %s ei voi lukea"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Tiedostolle %s ei toimi stat"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "Kutsuttiin DropNode mutta tiedostoon on vielä linkki"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Hajautusalkiota ei löytynyt!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Korvautuksen varaus ei onnistunut"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "AddDiversion: sisäinen virhe"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Yritetään kirjoittaa korvautuksen päälle, %s -> %s ja %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Korvautuksen kaksoislisäys %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Asetustiedoston kaksoiskappale %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Kansio %s on korvautunut"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Kansio %s on korvautunut"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Kansio %s on korvautunut"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Kansio %s on korvautunut"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "Kansio %s on korvautunut"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "readlink %s ei onnistunut"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Tarkistussumma ei täsmää"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "nimen vaihto ei onnistunut, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Koko ei täsmää"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "Virheellinen toiminto %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Virhe kirjoitettaessa"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"En löytänyt pakettia %s vastaavaa tiedostoa. Voit ehkä joutua korjaamaan "
+"tämän paketin itse (puuttuvan arkkitehtuurin vuoksi)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"Pakettihakemistotiedostot ovat turmeltuneet. Paketille %s ei ole Filename-"
+"kenttää."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Avataan yhteys %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Menetelmän ajuria %s ei löytynyt"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "Tarkista onko paketti \"dpkg-dev\" asennettu.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Menetelmä %s ei käynnistynyt oikein"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "Pistä levy nimeltään: \"%s\" asemaan \"%s\" ja paina Enter."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "List directory %spartial is missing."
+msgstr "Luettelokansio %spartial puuttuu."
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Arkistokansio %spartial puuttuu."
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Unable to lock directory %s"
+msgstr "Luettelokansiota ei voitu lukita"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "Hakemistotiedoston tyyppi \"%s\" ei ole tuettu"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Kansioon %s vaihto ei onnistu"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Noudetaan tiedosto %li / %li (jäljellä %s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Noudetaan tiedosto %li / %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr "Paketti %s olisi asennettava uudelleen, mutta sen arkistoa ei löydy."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Virhe, pkgProblemResolver::Resolve tuotti katkoja, syynä voi olla pysytetyt "
+"paketit."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "Pulmia ei voi korjata, rikkinäisiä paketteja on pysytetty."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+"Pakettiluettelonn tai tilatiedoston avaaminen tai jäsennys epäonnistui."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Voit haluta suorittaa apt-get update näiden pulmien korjaamiseksi"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Lähteiden luetteloa ei pystynyt lukemaan."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Käännösvirhe lausekkeessa - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Julkaisua \"%s\" paketille \"%s\" ei löytynyt"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Versiota \"%s\" paketille \"%s\" ei löytynyt"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Tehtävää %s ei löytynyt"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Pakettia %s ei löytynyt"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Pakettia %s ei löytynyt"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Pakettia %s ei löydy"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Rivi %u on liian pitkä lähdeluettelossa %s."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Irrotetaan romppu...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Käytetään rompun liitoskohtaa %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Odotetaan levyä...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Liitetään romppu...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Tunnistetaan... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Tallennettu nimio: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Etsitään levyltä hakemistotiedostoja...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Hakemistoja löytyi: Asennuspakettien %zu, lähdekoodipakettien %zu, "
+"käännösten %zu ja allekirjoituksia löytyi %zu\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Löytyi nimiö: \"%s\"\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Tuo ei kelpaa nimeksi, yritä uudelleen.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Tämä levy on: \n"
+"\"%s\"\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Kopioidaan pakettiluetteloita..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Kirjoitetaan uusi lähdeluettelo\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Tämän levyn lähdekoodipakettien luettelon tietueita ovat:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "stat %s ei onnistu."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Komento stat ei toiminut liitoskohdalle %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Komento stat ei toiminut rompulle"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Komentorivin valitsin \"%c\" [%s] on tuntematon."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Komentorivin valitsin %s on tuntematon"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Komentorivin valitsin %s ei ole totuusarvoinen"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Valitsin %s tarvitsee parametrin"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "Valitsin %s: Asetusarvon määrityksessä on oltava =<arvo>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Valitsin %s tarvitsee kokonaislukuparametrin, ei \"%s\""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Valitsin \"%s\" on liian pitkä"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "Arvo %s on tuntematon, yritä tosi tai epätosi."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Virheellinen toiminto %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Tuntematon tyypin lyhenne: \"%c\""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Avataan asetustiedosto %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Syntaksivirhe %s: %u: Lohko alkaa ilman nimeä."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Syntaksivirhe %s: %u: väärän muotoinen nimikenttä"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Syntaksivirhe %s: %u: Arvon jälkeen ylimääräistä roskaa"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "Syntaksivirhe %s: %u: Direktiivejä voi olla vain ylimmällä tasolla"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Syntaksivirhe %s: %u: Liian monta sisäkkäistä includea"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Syntaksivirhe %s: %u: Sisällytetty tästä"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Syntaksivirhe %s: %u: Tätä direktiiviä ei tueta \"%s\""
+
+#: apt-pkg/contrib/configuration.cc
+#, fuzzy, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr "Syntaksivirhe %s: %u: Direktiivejä voi olla vain ylimmällä tasolla"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Syntaksivirhe %s: %u: Ylimääräistä roskaa tiedoston lopussa"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Pulmia tehtäessä tiedostolle unlink"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Lukkoa ei käytetä kirjoitussuojatulle tiedostolle %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Lukkotiedostoa %s ei voitu avata"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Lukitusta ei käytetä NFS-liitetylle tiedostolle %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Lukkoa %s ei saada"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Odotettiin %s, mutta sitä ei ollut"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Aliprosessi %s aiheutti suojausvirheen."
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Aliprosessi %s aiheutti suojausvirheen."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Aliprosessi %s palautti virhekoodin (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Aliprosessi %s lopetti odottamatta"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Lukuvirhe"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Virhe kirjoitettaessa"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Pulmia tiedoston sulkemisessa"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Prosessien välistä kommunikaatiota aliprosessiin ei saatu luotua"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Pakkaajan käynnistäminen ei onnistunut"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Tiedostoa %s ei voitu avata"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Putkea %s ei voitu avata"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "read, vielä %lu lukematta mutta tiedosto loppui"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "write, vielä %lu kirjoittamatta mutta epäonnistui"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the file %s"
+msgstr "Pulmia tiedoston sulkemisessa"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Pulmia tehtäessä tiedostolle sync"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Pulmia tehtäessä tiedostolle sync"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Tiedostolle %s ei toimi stat"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Tiedostoon %s kirjoittaminen ei onnistu"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Tyhjälle tiedostolle ei voi tehdä mmap:ia"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Ei voitu tehdä %lu tavun mmap:ia"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Putkea %s ei voitu avata"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to close mmap"
+msgstr "Tiedoston %s avaaminen ei onnistunut"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to synchronize mmap"
+msgstr "Käynnistys ei onnistu"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Ei voitu tehdä %lu tavun mmap:ia"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Tiedoston typistäminen ei onnistunut"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Virhe!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Valmis"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... Valmis"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Valintaa %s ei löydy"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Pakettitiedostoa %s (1) ei voi jäsentää"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "No sections in Release file %s"
+msgstr "Huomautus, valitaan %s eikä %s\n"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Virheellinen rivi korvautustiedostossa: %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Pakettitiedostoa %s ei voi jäsentää (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, fuzzy, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Luettelokansiota ei voitu lukita"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr ""
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "Asennetaan %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Tehdään asetukset: %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Poistetaan %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removing %s"
+msgstr "%s poistettiin kokonaan"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Suoritetaan jälkiasennusliipaisin %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "%s asennettu"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Kansio \"%s\" puuttuu."
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, fuzzy, c-format
+msgid "Could not open file '%s'"
+msgstr "Tiedostoa %s ei voitu avata"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Valmistellaan %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Puretaan %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Valmistaudutaan tekemään asetukset: %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Valmistaudutaan poistamaan %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "%s poistettu"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Valmistaudutaan poistamaan %s kokonaan"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "%s poistettiin kokonaan"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "Tiedostoon %s kirjoittaminen ei onnistu"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Muodostetaan riippuvuussuhteiden puu"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Mahdolliset versiot"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Luodaan riippuvuudet"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Luetaan tilatiedot"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Tilatiedoston %s avaaminen ei onnistunut"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Tilapäisen tilatiedoston %s kirjoittaminen ei onnistunut"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "Kirjoitettiin %i tietuetta.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "Kirjoitettiin %i tietuetta joissa oli %i puuttuvaa tiedostoa.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "Kirjoitettiin %i tietuetta joissa oli %i paritonta tiedostoa\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"Kirjoitettiin %i tietuetta joissa oli %i puuttuvaa ja %i paritonta "
+"tiedostoa\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, fuzzy, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Kohteen %s tarkistussumma ei täsmää"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Paketointijärjestelmä \"%s\" ei ole tuettu"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Sopivaa paketointijärjestelmän tyyppiä ei saa selvitettyä"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "Tiedostoa %s ei voitu avata"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Tämän asennusajo vaatii tilapäisesti poistettavaksi välttämättömän paketin "
+"%s Conflicts/Pre-Depends -kehämäärittelyn takia. Tämä on usein pahasta, "
+"mutta jos varmasti haluat tehdä niin, käytä APT::Force-LoopBreak -valitsinta."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Pakettivarasto on tyhjä"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Pakettivarasto on turmeltunut"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Pakettivaraston versio on yhteensopimaton"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Tämä APT ei tue versionhallintajärjestelmää \"%s\""
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Pakettivarasto on tehty muulle arkkitehtuurille"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Pakettivarasto on turmeltunut"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Riippuvuudet"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Esiriippuvuudet"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Ehdotukset"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Ristiriidat"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Suosittelut"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Korvaavuudet"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Rikkoo"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Täydet korvaavuudet"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "tärkeä"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "välttämätön"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "perus"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "ylimääräinen"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "valinnainen"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Pakettivaraston versionhallintajärjestelmä ei ole yhteensopiva"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Tapahtui virhe käsiteltäessä %s (FindPkg)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"Jummijammi, annoit enemmän pakettien nimiä kuin tämä APT osaa käsitellä."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Jummijammi, annoit enemmän versioita kuin tämä APT osaa käsitellä."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Jummijammi, tämä APT ei osaa käsitellä noin montaa kuvausta."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "Jummijammi, annoit enemmän riippuvuuksia kuin tämä APT osaa käsitellä."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Luetaan pakettiluetteloita"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Syöttö/Tulostus -virhe tallennettaessa pakettivarastoa"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Hakemistotiedoston tyyppi \"%s\" ei ole tuettu"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, fuzzy, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Asetustiedostossa on virheellinen tietue, Package-otsikko puuttuu"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Tunnistetyyppi %s on tuntematon"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Tärkeysjärjestystä ei määritetty tunnisteelle (tai se on nolla)"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Väärän muotoinen poikkeus %s rivi %lu n:ro 1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Avataan %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Rivi %u on väärän muotoinen lähdeluettelossa %s (tyyppi)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Tyyppi \"%s\" on tuntematon rivillä %u lähdeluettelossa %s"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Rivi %u on väärän muotoinen lähdeluettelossa %s (tyyppi)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Tyyppi \"%s\" on tuntematon rivillä %u lähdeluettelossa %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Tiedostossa sources.list on oltava rivejä joissa \"lähde\"-URI"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Tiedoston %s nouto ei onnistunut %s"
+
+#: apt-pkg/update.cc
+#, fuzzy
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Joidenkin hakemistotiedostojen nouto ei onnistunut, ne on ohitettu tai "
+"käytetty vanhoja. "
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Käsitellään päivitystä"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Löytyi:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Nouda:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Siv:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Vrhe:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Noudettiin %st ajassa %s (%st/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Työskennellään]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Taltion vaihto: Pistä levy \n"
+"\"%s\"\n"
+"asemaan \"%s\" ja paina Enter\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Korjataan riippuvuuksia..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " ei onnistunut."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Riippuvuuksien korjaus ei onnistu"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Päivitysjoukon minimointi ei onnistu"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Valmis"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "Halunnet suorittaa \"apt --fix-broken install\" korjaamaan nämä."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Kaikkia riippuvuuksia ei ole tyydytetty. Kokeile \"apt --fix-broken install"
+"\" ilmanpaketteja (tai ratkaise itse)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Huomautus, valitaan %s lausekkeella \"%s\"\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Huomautus, valitaan %s lausekkeella \"%s\"\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Huomautus, valitaan %s lausekkeella \"%s\"\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Paketti %s on näennäispaketti, jonka kattaa:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [Asennettu]"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Not candidate version]"
+msgstr "Mahdolliset versiot"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Yksi pitää valita asennettavaksi."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Pakettia %s ei ole saatavilla, mutta toinen paketti viittaa siihen.\n"
+"Tämä voi tarkoittaa paketin puuttuvan, olevan vanhentunut tai\n"
+"saatavilla vain jostain muusta lähteestä\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Seuraavat paketit kuitenkin korvaavat sen:"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Paketilla %s ei ole asennettavaa valintaa"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr ""
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "Pakettia %s ei ole asennettu, niinpä sitä ei poisteta\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Pakettia %s ei ole asennettu, niinpä sitä ei poisteta\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Huomautus, valitaan %s eikä %s\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Yhtään pakettia ei löytynyt"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "VAROITUS: Seuraavian pakettien alkuperää ei voi varmistaa!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Varoitus varmistamisesta on ohitettu.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Joidenkin pakettien alkuperästä ei voitu varmistua"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Asennetaanko nämä paketit ilman todennusta?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Oli pulmia ja -y käytettiin ilman valitsinta --force-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Kansion %s vapaan tilan määrä ei selvinnyt"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Kansiossa %s ei ole riittävästi vapaata tilaa."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Noutokansiota ei saatu lukittua"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Joitakin paketteja ei voitu asentaa. On ehkä vaadittu mahdottomia tai,\n"
+"jos käytetään epävakaata jakelua, joitain vaadittuja paketteja ei ole\n"
+"vielä luotu tai siirretty Incoming-kansiosta."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Seuraavista tiedoista voi olla hyötyä selvitettäessä tilannetta:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Rikkinäiset paketit"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Joidenkin arkistojen nouto ei onnistunut, ehkä \"apt-get update\" auttaa tai "
+"kokeile --fix-missing?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Sisäinen virhe, InstallPackages kutsuttiin rikkinäisille paketeille!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Paketteja pitäisi poistaa mutta Remove ei ole käytössä."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Oli pulmia ja -y käytettiin ilman valitsinta --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Oli pulmia ja -y käytettiin ilman valitsinta --force-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Tapahtui sisäinen virhe, järjestäminen keskeytyi"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"No jo on... Koot eivät täsmää, sähköpostita email apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Noudettavaa arkistoa %st/%st.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Noudettavaa arkistoa %st.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "Toiminnon jälkeen käytetään %s t lisää levytilaa.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Toiminnon jälkeen vapautuu %s t levytilaa.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr ""
+"On määritetty Trivial Only mutta tämä ei ole itsestäänselvä toimenpide."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Kyllä, tee kuten käsketään!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Olet aikeissa tehdä mahdollisesti vahingollisen toimenpiteen.\n"
+"Jatka kirjoittamalla \"%s\"\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Keskeytä."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Haluatko jatkaa?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Joidenkin tiedostojen nouto ei onnistunut"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Nouto on valmis ja määrätty vain nouto"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing ja taltion vaihto ei ole nyt tuettu"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Puuttuvia paketteja ei voi korjata."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Asennus keskeytetään."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+"On tarkoitus olla poistamatta mitään, joten AutoRemover:ia ei voi käynnistää"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Hmm, nähtävästi AutoRemover tuhosi jotain, mitä ei pitäisi tapahtua.\n"
+"Tekisitkö vikailmoituksen apt:sta."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Sisäinen virhe, AutoRemover rikkoi jotain"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"Seuraavat paketit asennettiin automaattisesti, eivätkä ne ole enää "
+"vaadittuja:"
+msgstr[1] ""
+"Seuraavat paketit asennettiin automaattisesti, eivätkä ne ole enää "
+"vaadittuja:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] ""
+"Seuraavat paketit asennettiin automaattisesti, eivätkä ne ole enää "
+"vaadittuja:"
+msgstr[1] ""
+"Seuraavat paketit asennettiin automaattisesti, eivätkä ne ole enää "
+"vaadittuja:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Poista ne komennolla \"%s\"."
+msgstr[1] "Poista ne komennolla \"%s\"."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Seuraavat ylimääräiset paketit on merkitty asennettaviksi:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Ehdotetut paketit:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Suositellut paketit:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "Ohitetaan %s, se on jo asennettu eikä ole komennettu päivitystä.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr "Ohitetaan %s, se on jo asennettu eikä ole komennettu päivitystä.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "Paketin %s uudelleenasennus ei ole mahdollista, sitä ei voi noutaa.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s on jo uusin versio.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s on merkitty käyttäjän toimesta asennetuksi.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Valittiin versio %s (%s) paketille %s\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Valittiin versio %s (%s) paketille %s\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Asennettu]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [Asennettu]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [Asennettu]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [Asennettu]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "mutta %s on asennettu"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "mutta %s on merkitty asennettavaksi"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "mutta ei ole asennuskelpoinen"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "mutta on näennäispaketti"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "mutta ei ole merkitty asennettavaksi"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "mutta ei ole asennettu"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " tai"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Näillä paketeilla on tyydyttämättömiä riippuvuuksia:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Seuraavat UUDET paketit asennetaan:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Seuraavat paketit POISTETAAN:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Nämä paketit on jätetty odottamaan:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Nämä paketit päivitetään:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Nämä paketit VARHENNETAAN:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Seuraavat pysytetyt paketit muutetaan:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (syynä %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"VAROITUS: Seuraavat välttämättömät paketit poistetaan.\n"
+"Näin EI PITÄISI tehdä jos ei aivan tarkkaan tiedä mitä tekee!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu päivitetty, %lu uutta asennusta, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu uudelleen asennettua, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu varhennettua, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu poistettavaa ja %lu päivittämätöntä.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu ei asennettu kokonaan tai poistettiin.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[K/e]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr ""
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "K"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+#, fuzzy
+msgid "You must give at least one search pattern"
+msgstr "On annettava täsmälleen yksi lauseke"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Pakettitiedosto %s ei ole ajan tasalla."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Pakettitiedostot:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "Varasto ei ole ajan tasalla, pakettitiedostoa ei löydy kansiosta"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Paketit joissa tunniste:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Asennettu: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Ehdokas: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(ei mitään)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Versiotaulukko:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Pakettia %s ei löytynyt"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Pakettia %s ei löytynyt"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Pakettia %s ei löytynyt"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "stat ei toiminut lähdepakettiluettelolle %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "On annettava ainakin yksi paketti jonka lähdekoodi noudetaan"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Paketin %s lähdekoodipakettia ei löytynyt"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Ohitetaan jo noudettu tiedosto \"%s\"\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "On noudettava %st/%st lähdekoodiarkistoja.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "On noudettava %st lähdekoodiarkistoja.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Nouda lähdekoodi %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Joidenkin arkistojen noutaminen ei onnistunut."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Ohitetaan purku jo puretun lähdekoodin %s kohdalla\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Purkukomento \"%s\" ei onnistunut.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Tarkista onko paketti \"dpkg-dev\" asennettu.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Paketointikomento \"%s\" ei onnistunut.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Paketille %s ei ole saatavilla riippuvuustietoja"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "Paketille %s ei ole määritetty paketointiriippuvuuksia.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"On annettava ainakin yksi paketti jonka paketointiriippuvuudet tarkistetaan"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Paketointiriippuvuuksien käsittely ei onnistunut"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Paketointiriippuvuuksien käsittely ei onnistunut"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Nimen muuttaminen %s -> %s ei onnistunut"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Paketin %s versiossa %s on tyydyttämätön riippuvuus:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Komento update ei käytä parametreja"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "Komento update ei käytä parametreja"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Pakettien kokonaismäärä : "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total package structures: "
+msgstr "Pakettien kokonaismäärä : "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Tavallisia paketteja: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Aitoja näennäispaketteja: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Yksinkertaisia näennäispaketteja: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Sekanäennäispaketteja: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Puuttuu: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Eri versioita yhteensä: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Eri kuvauksia yhteensä: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Riippuvuuksia yhteensä: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Versio/tdsto suhteita yht: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Kuvaus/tdsto suhteita yht: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Tarjoamiskuvauksia yhteensä: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Erilaisia merkkijonoja yhteensä: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Löysää tilaa yhteensä: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Käytetty tila yhteensä: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Näytä lähdetietueet"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Etsi pakettiluettelosta säännöllisellä lausekkeella"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Näytä paketin riippuvuustiedot käsittelemättömässä muodossa"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Näytä paketin käänteiset riippuvuudet"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Näytä paketin tietue luettavassa muodossa"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Luettele järjestelmän kaikkien pakettien nimet"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Näytä mistä asennuspaketteja haetaan"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Kirjoita levylle nimi, kuten \"Debian 2.1r1 Levy 1\""
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Aseta levy asemaan ja paina Enter"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Nimen muuttaminen %s -> %s ei onnistunut"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Toista tämä lopuille rompuille kasassasi."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Parametrit eivät ole pareittain"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Käyttö: apt-config [valitsimet] komento\n"
+"\n"
+"apt-config on yksinkertainen työkalu APT:n asetustiedoston lukemiseen\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Käyttö: apt-extracttemplates tdsto1 [tdsto2 ...]\n"
+"\n"
+"apt-extracttemplates on työkalu asetus- ja mallitietojen \n"
+"poimintaan debian-paketeista\n"
+"\n"
+"Valitsimet:\n"
+" -h Tämä ohje\n"
+" -t Aseta väliaikaisten tiedostojen kansio\n"
+" -c=? Lue tämä asetustiedosto\n"
+" -o=? Aseta mikä asetusvalitsin tahansa, esim. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Ohjelman debconf versiota ei saa selvitettyä. Onko debconf asennettu?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Pakettia %s ei löytynyt"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s on merkitty käyttäjän toimesta asennetuksi.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Sisäinen virhe, resolver rikkoi jotain"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Tuetut moduulit:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Käyttö: apt-get [valitsimet] komento\n"
+" apt-get [valitsimet] install|remove pkt1 [pkt2 ...]\n"
+" apt-get [valitsimet] source pkt1 [pkt2 ...]\n"
+"\n"
+"apt-get on yksinkertainen komentorivityökalu pakettien noutamiseen\n"
+"ja asentamiseen. Useimmiten käytetyt komennot ovat update ja \n"
+"install.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Nouda uusi pakettiluettelo"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Tee päivitys"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Asenna uusia paketteja (esim. libc6 eikä libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Poista paketteja"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Poista paketit asennustiedostoineen"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Poista kaikki käyttämättömät paketit"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Koko jakelun päivitys, katso apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Noudata dselect:n valintoja"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Määritä paketointiriippuvuudet lähdekoodipaketeille"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Poista noudetut pakettitiedostot"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Poista vanhat noudetut tiedostot"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Tarkasta ettei ole tyydyttämättömiä riippuvuuksia"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Nouda lähdekoodiarkistoja"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "On annettava ainakin yksi paketti jonka lähdekoodi noudetaan"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Käyttö: apt-extracttemplates tdsto1 [tdsto2 ...]\n"
+"\n"
+"apt-extracttemplates on työkalu asetus- ja mallitietojen \n"
+"poimintaan debian-paketeista\n"
+"\n"
+"Valitsimet:\n"
+" -h Tämä ohje\n"
+" -t Aseta väliaikaisten tiedostojen kansio\n"
+" -c=? Lue tämä asetustiedosto\n"
+" -o=? Aseta mikä asetusvalitsin tahansa, esim. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Käyttö: apt-extracttemplates tdsto1 [tdsto2 ...]\n"
+"\n"
+"apt-extracttemplates on työkalu asetus- ja mallitietojen \n"
+"poimintaan debian-paketeista\n"
+"\n"
+"Valitsimet:\n"
+" -h Tämä ohje\n"
+" -t Aseta väliaikaisten tiedostojen kansio\n"
+" -c=? Lue tämä asetustiedosto\n"
+" -o=? Aseta mikä asetusvalitsin tahansa, esim. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "mutta ei ole asennettu"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s on merkitty käyttäjän toimesta asennetuksi.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s on merkitty käyttäjän toimesta asennetuksi.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s on jo uusin versio.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s on jo uusin versio.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "%s on merkitty käyttäjän toimesta asennetuksi.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Tiedoston %s avaaminen ei onnistunut"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "%s on merkitty käyttäjän toimesta asennetuksi.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "Tarkista onko paketti \"dpkg-dev\" asennettu.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "%s on merkitty käyttäjän toimesta asennetuksi.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "%s on merkitty käyttäjän toimesta asennetuksi.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Tuntematon pakettitietue!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "Luetaan pakettiluetteloita"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "Paketit joissa tunniste:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Rikkinäiset paketit"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "%s on merkitty käyttäjän toimesta asennetuksi.\n"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "Luetaan tilatiedot"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Oletusasetus ei kelpaa!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Jatka painamalla Enter."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Haluatko poistaa aiemmin noudettuja .deb-tiedostoja?"
+
+#: dselect/install
+#, fuzzy
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "Tapahtui virheitä purettaessa. Tehdään asennettujen"
+
+#: dselect/install
+#, fuzzy
+msgid "will be configured. This may result in duplicate errors"
+msgstr "pakettien asetukset. Samat virheet voivat tulla toiseen kertaan"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"tai tyydyttämättömät riippuvuudet aiheuttavat virheitä. Tämä ei haittaa"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"vain tätä viestiä ennen tulleilla virheillä on merkitystä. Korjaa ne ja aja "
+"[I]nstall uudestaan"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Yhdistetään saatavuustiedot"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Paketin laajennuslista on liian pitkä"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Tapahtui virhe käsiteltäessa kansiota %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Lähteiden laajennuslista on liian pitkä"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr ""
+"Tapahtui virhe kirjoitettaessa otsikkotietoa sisällysluettelotiedostoon"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Tapahtui virhe käsiteltäessä sisällysluetteloa %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Käyttö: apt-ftparchive [valitsimet] komento\n"
+"Komennot: packages binääripolku [poikkeustdsto [polun alku]]\n"
+" sources lähdepolku [poikkeustdsto [polun alku]]\n"
+" contents polku\n"
+" release polku\n"
+" generate asetukset [ryhmät]\n"
+" clean asetukset\n"
+"\n"
+"apt-ftparchive tuottaa hakemistoja Debianin arkistoista. Monta "
+"tuottamistapaa\n"
+"on tuettu alkaen täysin automaattisista toiminnallisesti samoihin kuin\n"
+"dpkg-scanpackages ja dpkg-scansources.\n"
+"\n"
+"apt-ftparchive tuottaa pakettitiedostoja .deb-tiedostojen puusta.\n"
+"Pakettitiedostossa on kunkin paketin kaikkien ohjauskenttien\n"
+"sisältö sekä MD5 tiiviste ja tiedoston koko. Poikkeus-\n"
+"tiedostolla voidaan arvot Priority ja Section pakottaa halutuiksi.\n"
+"\n"
+"Samaan tapaan apt-ftparchive tuottaa lähdetiedostoja\n"
+".dscs-tiedostojen puusta. Valitsimella --source-overrride voidaan\n"
+"määrittää lähteiden poikkeustiedosto.\n"
+"\n"
+"Komennot \"packages\" ja \"sources\" olisi suoritettava puun juuressa.\n"
+"Binääripolun olisi osoitettava rekursiivisen haun alkukohtaan ja\n"
+"poikkeustiedostossa olisi oltava poikkeusilmaisimet. Polun alku\n"
+"yhdistetään tiedoston nimeen jos se on annettu. Esimerkki\n"
+"käytöstä Debianin arkiston kanssa:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Valitsimet:\n"
+" -h Tämä ohje\n"
+" --md5 MD5 luonti\n"
+" -s=? Lähteiden poikkeustdosto\n"
+" -q Ei tulostusta\n"
+" -d=? Valinnainen välimuistitietokanta\n"
+" --no-delink delinking-virheenjäljitys päälle\n"
+" --contents Sisällysluettelotiedoston luonti\n"
+" -c=? Lue tämä asetustiedosto\n"
+" -o=? Aseta mikä asetusvalitsin tahansa"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Mitkään valinnat eivät täsmänneet"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Pakettitiedostojen ryhmästä \"%s\" puuttuu joitain tiedostoja"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "Tietokanta on turmeltunut, tiedosto nimetty %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "Tietokanta on vanha, yritetään päivittää %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Tietokannan muoto ei kelpaa. Jos tehtiin päivitys vanhasta apt:n versiosta, "
+"on tietokanta poistettava ja luotava uudelleen."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Tietokantatiedostoa %s ei saatu avattua: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "readlink %s ei onnistunut"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Arkistolla ei ole ohjaustietuetta"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Kohdistinta ei saada"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Muistin varaaminen ei onnistunut"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Tuntematon pakkausalgoritmi \"%s\""
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Pakattu tulostus %s tarvitsee pakkausjoukon"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "IPC-putken luominen aliprosessiin ei onnistunut"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "fork ei onnistunut"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Compress-lapsiprosessi"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Sisäinen virhe, prosessin %s luominen ei onnistunut"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Syöttö/tulostus aliprosessiin/tiedostoon ei onnistunut"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Lukeminen ei onnistunut laskettaessa MD5:ttä"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Tiedoston %s avaaminen ei onnistunut"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Väärän muotoinen poikkeus %s rivi %lu n:ro 1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Poikkeustiedoston %s lukeminen ei onnistunut"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Väärän muotoinen poikkeus %s rivi %lu n:ro 1"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Väärän muotoinen poikkeus %s rivi %lu n:ro 2"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Väärän muotoinen poikkeus %s rivi %lu n:ro 3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "W: Kansiota %s ei voi lukea\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "W: Tdstolle %s ei toimi stat\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "W: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: Tiedostossa virheitä "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Osoitteen %s selvitys ei onnistunut"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Puun läpikäynti ei onnistunut"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Tiedoston %s avaaminen ei onnistunut"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Linkin %s -> %s luonti ei onnistunut"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " DeLinkin yläraja %st saavutettu.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Arkistossa ei ollut pakettikenttää"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s:llä ei ole poikkeustietuetta\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " %s ylläpitäjä on %s eikä %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s:llä ei ole poikkeustietuetta\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s:llä ei ole binääristäkään poikkeustietuetta\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Odotetaan otsikoita"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "HTTP-palvelin lähetti virheellisen vastausotsikon"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Virheellinen otsikkorivi"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "HTTP-palvelin lähetti virheellisen Content-Length-otsikon"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "HTTP-palvelin lähetti virheellisen Content-Range-otsikon"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "HTTP-palvelimen arvoaluetuki on rikki"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Tuntematon päiväysmuoto"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Virheellinen otsikkotieto"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Yhteys ei toiminut"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Sisäinen virhe"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Rompputietokantaa %s ei voi lukea"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Käytä komentoa apt-cdrom jotta APT tunnistaa tämän rompun, apt-get update ei "
+"osaa lisätä uusia romppuja"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Väärä romppu"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Rompun %s irrottaminen ei onnistu, se on ehkä käytössä."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Levyä ei löydy"
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Tiedostoa ei löydy"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Avataan yhteys %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Pistokeen luonti ei onnistu %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Yhteyden %s avaus ei onnistu: %s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Yhteyttä %s ei voitu muodostaa: %s (%s), yhteys aikakatkaistiin"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Ei onnistunut"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Yhteyttä %s ei voitu muodostaa: %s (%s)"
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Avataan yhteys %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Nimeä \"%s\" ei voitu selvittää"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Tilapäinen häiriö selvitettäessä \"%s\""
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Jotain kenkkua tapahtui selvitettäessä \"%s: %s\" (%i)"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Jotain kenkkua tapahtui selvitettäessä \"%s: %s\" (%i)"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Ei ole mahdollista muodostaa yhteyttä %s %s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Komento stat ei toiminut"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "URI on kelvoton, paikallinen URI ei saa alkaa //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Kirjaudutaan sisään"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Vastapään nimeä ei saa selville"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Paikallista nimeä ei saa selville"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Palvelin ei huolinut yhteyttä ilmoituksella: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER ei onnistunut, palvelimen ilmoitus: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS ei onnistunut, palvelimen ilmoitus: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Määritettiin välipalvelin mutta ei komentotiedostoa kirjautumiseen, Acquire::"
+"ftp::ProxyLogin on tyhjä."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Komentotiedoston rivi \"%s\" ei toiminut, palvelin ilmoitti: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE ei toiminut, palvelin ilmoitti: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Yhteys aikakatkaistiin"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Palvelin sulki yhteyden"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Vastaus aiheutti puskurin ylivuodon."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Yhteyskäytäntö on turmeltunut"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Pistoketta ei voitu luoda"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Pistoketta ei voitu kytkeä, yhteys aikakatkaistiin"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Passiivista pistoketta ei voitu kytkeä."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo ei saanut kuuntelupistoketta"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Pistoketta ei voitu nimetä"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Pistoketta ei voitu kuunnella"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Pistokkeen nimeä ei saatu selville"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Komennon PORT lähetys ei onnistu"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Tuntematon osoiteperhe %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT ei onnistunut, palvelin ilmoitti: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Pistokkeen kytkeminen aikakatkaistiin"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Yhteyttä ei voitu hyväksyä"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Pulmia tiedoston hajautuksessa"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Tiedostoa ei saatu noudettua, palvelin ilmoitti \"%s\""
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Pistoke aikakatkaistiin"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Tiedonsiirto ei onnistunut, palvelin ilmoitti \"%s\""
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Kysely"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Käynnistys ei onnistu"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "LÖytyi ainakin yksi kelvoton allekirjoitus."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Sisäinen virhe: Allekirjoitus kelpaa, mutta avaimen sormenjälki tuntematon?!"
+
+#: methods/gpgv.cc
+#, fuzzy
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Ei käynnistynyt \"%s\" allekirjoitusta tarkistamaan (onko gnupg asennettu?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Tapahtui tuntematon virhe suoritettaessa apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Seuraavat allekirjoitukset eivät olleet kelvollisia:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Seuraavia allekirjoituksia ei voinut varmentaa koska julkista avainta ei ole "
+"saatavilla:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Tapahtui virhe kirjoitettaessa tiedostoon"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Tapahtui virhe luettaessa palvelimelta. Etäpää sulki yhteyden"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Tapahtui virhe luettaessa palvelimelta"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Tapahtui virhe kirjoitettaessa tiedostoon"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Select ei toiminut"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Yhteys aikakatkaistiin"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Tapahtui virhe kirjoitettaessa tulostustiedostoon"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Tiedostoa %s ei voitu avata"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Tiedostoa %s ei voitu avata"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr ""
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Tiedoston muutospäivämäärää ei saatu vaihdettua"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Yhteys katkesi ennenaikaisesti"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Tyydyttämättömiä riippuvuuksia. Koita käyttää --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Saatat haluta suorittaa \"apt --fix-broken install\" korjaamaan nämä:"
+
+#~ msgid "(not found)"
+#~ msgstr "(ei löydy)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Paketin tunnistenumero: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "Julkisia avaimia ei ole saatavilla, avainten ID:t ovat:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "Kansio %s on korvautunut"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "riippuvuutta %s paketille %s ei voi tyydyttää koska pakettia %s ei löydy"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "riippuvuutta %s paketille %s ei voi tyydyttää koska pakettia %s ei löydy"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Riippuvutta %s paketille %s ei voi tyydyttää: Asennettu paketti %s on "
+#~ "liian uusi"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "%s riippuvuutta paketille %s ei voi tyydyttää koska mikään paketin %s "
+#~ "versio ei vastaa versioriippuvuuksia"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "riippuvuutta %s paketille %s ei voi tyydyttää koska pakettia %s ei löydy"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Riippuvuutta %s paketille %s ei voi tyydyttää: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Paketointiriippuvuuksia paketille %s ei voi tyydyttää."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Ilmeni pulmia poistettaessa tiedosto %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "unlink %s ei onnistunut"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Käyttö : apt-cache [valitsimet] komento\n"
+#~ " apt-cache [valitsimet] show pkt1 [pkt2 ...]\n"
+#~ "\n"
+#~ "apt-cache on alemman tason työkalu APT:n konekielisten\n"
+#~ "välimuistitiedostojen käsittelyyn ja tutkimiseen\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Valitsimet:\n"
+#~ " -h Tämä ohje\n"
+#~ " -p=? Pakettivarasto\n"
+#~ " -s=? Lähdevälimuisti\n"
+#~ " -q Poista edistymisen ilmaisin\n"
+#~ " -i Näytä vain tärkeät riippuvuudet unmet-komennossa\n"
+#~ " -c=? Lue tämä asetustiedosto\n"
+#~ " -o=? Aseta mikä asetusvalitsin tahansa, esim. -o dir::cache=/tmp\n"
+#~ "Lisätietoja apt-cache(8) ja apt.conf(5) käsikirjasivuilla.\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Valitsimet:\n"
+#~ " -h Tämä ohje\n"
+#~ " -c=? Lue tämä asetustiedosto\n"
+#~ " -o=? Aseta mikä asetusvalitsin tahansa, esim. -o dir::cache=/tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -d Download only - do NOT install or unpack archives\n"
+#~ " -s No-act. Perform ordering simulation\n"
+#~ " -y Assume Yes to all queries and do not prompt\n"
+#~ " -f Attempt to correct a system with broken dependencies in place\n"
+#~ " -m Attempt to continue if archives are unlocatable\n"
+#~ " -u Show a list of upgraded packages as well\n"
+#~ " -b Build the source package after fetching it\n"
+#~ " -V Show verbose version numbers\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-get(8), sources.list(5) and apt.conf(5) manual\n"
+#~ "pages for more information and options.\n"
+#~ " This APT has Super Cow Powers.\n"
+#~ msgstr ""
+#~ "Valitsimet:\n"
+#~ " -h Tämä ohje\n"
+#~ " -q Lokiin sopiva tulostus - edistymisen ilmaisin jätetään pois\n"
+#~ " -qq Ei lainkaan tulostusta paitsi virheistä\n"
+#~ " -d Vain nouto - paketteja EI asenneta tai pureta\n"
+#~ " -s Älä tee mitään. Oikean toiminnan simulaatio\n"
+#~ " -y Vastataan Kyllä kaikkiin kysymyksiin eikä kehoitetta näytetä\n"
+#~ " -f Yritä jatkaa jos eheystarkastus löysi virheen\n"
+#~ " -m Yritä jatkaa jos arkistojen sijainti ei selviä\n"
+#~ " -u Näytä luettelo myös päivitetyistä paketeista\n"
+#~ " -b Käännä lähdekoodipaketti noudon jälkeen\n"
+#~ " -V Näytä pitkät versionumerot\n"
+#~ " -c=? Lue tämä asetustiedosto\n"
+#~ " -o=? Aseta mikä asetusvalitsin tahansa, esim. -o dir::cache=/tmp\n"
+#~ "Katso apt-get(8), sources.list(5) ja apt.conf(5) käsikirjasivuilta\n"
+#~ "lisätietoja ja lisää valitsimia.\n"
+#~ " This APT has Super Cow Powers.\n"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Käyttö: apt-sortpkgs [valitsimet] tdsto1 [tdsto2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs on yksinkertainen työkalu pakettitiedostojen lajitteluun.\n"
+#~ "Valitsimella -s ilmaistaan minkälainen tiedosto on.\n"
+#~ "\n"
+#~ "Valitsimet:\n"
+#~ " -h Tämä ohje\n"
+#~ " -s Käytä lähdetiedostolajittelua\n"
+#~ " -c=? Lue tämä asetustiedosto\n"
+#~ " -o=? Aseta mikä asetusvalitsin tahansa, esim. -o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Lapsiprosessi kaatui"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "On annettava ainakin yksi paketti jonka lähdekoodi noudetaan"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Putkien luonti ei onnistunut"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "exec gzip ei onnistunut"
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s laitealustalle %s käännöksen päiväys %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "FILE* luominen ei onnistunut"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Väärän muotoinen rivi %lu lähdeluettelossa %s (URI-jäsennys)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr "Väärän muotoinen rivi %lu lähdeluettelossa %s (dist-jäsennys)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "Väärän muotoinen rivi %lu lähdeluettelossa %s (dist)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "Väärän muotoinen rivi %lu lähdeluettelossa %s (dist-jäsennys)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "Väärän muotoinen rivi %lu lähdeluettelossa %s (dist-jäsennys)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr "Väärän muotoinen rivi %lu lähdeluettelossa %s (dist-jäsennys)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Väärän muotoinen rivi %lu lähdeluettelossa %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Väärän muotoinen rivi %lu lähdeluettelossa %s (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Väärän muotoinen rivi %lu lähdeluettelossa %s (URI-jäsennys)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "Väärän muotoinen rivi %lu lähdeluettelossa %s (Absoluuttinen dist)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "Väärän muotoinen rivi %lu lähdeluettelossa %s (dist-jäsennys)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "Pakettia %s %s ei löytynyt käsiteltäessä tiedostojen riippuvuuksia."
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "stat ei toiminut lähdepakettiluettelolle %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Kootaan tiedostojen tarjoamistietoja"
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Pakettitiedostoa %s (1) ei voi jäsentää"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Toimittajan lohkosta %s puuttuu sormenjälki"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Versioriippuvuustila yhteensä: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Kansiossa %s ei ole riittävästi vapaata tilaa"
+
+#~ msgid "Done"
+#~ msgstr "Valmis"
+
+#, fuzzy
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Asennus keskeytetään."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Sisäinen virhe, AllUpgrade rikkoi jotain"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s ei kelpaa DEB-paketiksi."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Käytetään rompun liitoskohtaa %s\n"
+#~ "Liitetään romppu\n"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Tämä ei ole kelvollinen DEB-arkisto, jokin osista \"%s\", \"%s\" tai \"%s"
+#~ "\" puuttuu."
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5Sum ei täsmää"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Pakettia %s vastaavaa tiedostoa ei löytynyt. Voit ehkä joutua korjaamaan "
+#~ "tämän paketin itse."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Lokiin ei voi kirjoittaa, openpty() epäonnistui (onko /dev/pts "
+#~ "liittämättä?)\n"
+
+#, fuzzy
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Avataan asetustiedosto %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Tiedoston %s poistaminen ei onnistunut"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Tiedostoa %s ei voi luoda"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "stat ei toimi: %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr "Kansioiden info ja temp pitää olla samassa tiedostojärjestelmässä"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Ylläpitokansioon %sinfo vaihtaminen ei onnistunut"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Tapahtui sisäinen virhe haettaessa paketin nimeä"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Luetaan tiedostoluetteloa"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Luettelotiedoston \"%sinfo/%s\" avaaminen ei onnistunut. Jos tätä "
+#~ "tiedostoa ei voi palauttaa, tyhjennä tiedosto ja asenna välittömästi "
+#~ "paketin sama versio uudelleen!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Tapahtui virhe luettelotiedostoa %sinfo/%s luettaessa"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Tapahtui sisäinen virhe varattaessa tiedostosolmua"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Tapahtui virhe avattaessa korvautustiedostoa %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Korvautustiedosto on turmeltunut"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Virheellinen rivi korvautustiedostossa: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Tapahtui sisäinen virhe lisättäessä korvautusta"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Pakettivarasto on ensin alustettava"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Paketin otsikkoa ei löydy, kohta %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Virheellinen ConfFile-lohko tilatiedostossa. Kohta %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Tapahtui virhe jäsennettäessä MD5:ttä. Kohta %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Kansioon %s vaihto ei onnistunut"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Kelvollista ohjaustiedostoa ei löydy"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Putkea %s ei voitu avata"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Prosessi %s ilmoitti lukuvirheestä"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Vastaanotettiin yksi otsikkorivi pituudeltaan yli %u merkkiä"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Väärän muotoinen poikkeus %s rivi %lu n:ro 1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Väärän muotoinen poikkeus %s rivi %lu n:ro 2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Väärän muotoinen poikkeus %s rivi %lu n:ro 3"
+
+#~ msgid "decompressor"
+#~ msgstr "purkaja"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "read, vielä %lu lukematta mutta tiedosto loppui"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "write, vielä %lu kirjoittamatta mutta epäonnistui"
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Tapahtui virhe käsiteltäessä %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Tapahtui virhe käsiteltäessä %s (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Tapahtui virhe käsiteltäessä %s (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Tapahtui virhe käsiteltäessä %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Tapahtui virhe käsiteltäessä %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Tapahtui virhe käsiteltäessä %s (NewVersion1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Tapahtui virhe käsiteltäessä %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Tapahtui virhe käsiteltäessä %s (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Tapahtui virhe käsiteltäessä %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Tapahtui virhe käsiteltäessä %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Tapahtui sisäinen virhe, tiedostoa ei löydy"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr ""
+#~ "E: Parametrien luettelo Acquire::gpgv::Options liian pitkä. Lopetetaan."
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "Tapahtui virhe käsiteltäessä %s (NewVersion2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr ""
+#~ "Rivi %u on väärän muotoinen lähdeluettelossa%s (toimittajan tunniste)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "Avainrengasta \"%s\" ei saatavilla"
+
+#~ msgid "Could not patch file"
+#~ msgstr "Tiedostoa %s ei voitu avata"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "Käsitellään %s:n liipaisimia"
+
+#~ msgid "Dynamic MMap ran out of room"
+#~ msgstr "Tila loppui kesken dynaamiselta MMap:lta"
diff --git a/po/fr.po b/po/fr.po
new file mode 100644
index 000000000..5b56d0db9
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,4456 @@
+# translation of apt to French
+# Advanced Package Transfer - APT message translation catalog
+# French messages
+#
+# Pierre Machard <pmachard@tuxfamily.org>, 2002,2003,2004.
+# Christian Perrier <bubulle@debian.org>, 2004-2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013.
+# Julien Patriarca <leatherface@debian.org>, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2013-12-15 16:45+0100\n"
+"Last-Translator: Julien Patriarca <leatherface@debian.org>\n"
+"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.5\n"
+"Plural-Forms: Plural-Forms: nplurals=2; plural=n > 1;\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Signature d'archive invalide"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Erreur de lecture de l'en-tête du membre d'archive"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "En-tête du membre d'archive %s non valable"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "En-tête du membre d'archive non-valable"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "L'archive est trop petite"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Échec de la lecture des en-têtes d'archive"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Impossible de trouver l'enregistrement d'authentification pour %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Archive corrompue"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Échec dans la somme de contrôle de tar, l'archive est corrompue"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Type d'en-tête %u inconnu pour TAR, partie %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Ce n'est pas une archive DEB valide, partie « %s » manquante"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Erreur interne, ne peut localiser la partie %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Fichier de contrôle non traitable"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Erreur d'écriture du fichier %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Échec de clôture du fichier %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Le chemin %s est trop long"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Veuillez décompresser %s plus d'une fois"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "Le répertoire %s est détourné"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Le paquet est en train d'essayer d'écrire sur la cible détournée %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Le chemin de déviation est trop long"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Impossible de statuer %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Impossible de changer le nom %s en %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "Le répertoire %s va être remplacé par un non-répertoire"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Échec pour localiser le nœud dans la table de hachage"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Le chemin est trop long"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Écrase la correspondance de paquet sans version pour %s "
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Le fichier %s/%s écrase celui inclus dans le paquet %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Impossible de lire %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Impossible de statuer pour %s."
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode appelé sur un nœud toujours lié"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Impossible de situer l'élément haché !"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Échec lors de l'allocation de la déviation"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Erreur interne dans AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Essaye d'écraser une déviation, %s -> %s et %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Addition double d'une déviation %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Fichier de configuration en double %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Le répertoire %s est détourné"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Le répertoire %s est détourné"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Le répertoire %s est détourné"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Le répertoire %s est détourné"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "Le répertoire %s est détourné"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Impossible de lire le lien %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Somme de contrôle de hachage incohérente"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "impossible de changer le nom, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Taille incohérente"
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr "Format de fichier invalide"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Erreur d'écriture"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+"Le fichier signé en clair n'est pas valable, ce qui a été reçu est « %s ». "
+"Peut-être le réseau nécessite-t-il une authentification."
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"Une erreur s'est produite lors du contrôle de la signature. Le dépôt n'est "
+"pas mis à jour et les fichiers d'index précédents seront utilisés. Erreur de "
+"GPG : %s : %s\n"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "Erreur de GPG : %s : %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"Impossible de trouver l'entrée « %s » attendue dans le fichier « Release » : "
+"ligne non valable dans sources.list ou fichier corrompu"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"Le fichier « Release » pour %s a expiré (plus valable depuis %s). Les mises "
+"à jour depuis ce dépôt ne s'effectueront pas."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Distribution en conflit : %s (%s attendu, mais %s obtenu)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Impossible de localiser un fichier du paquet %s. Cela signifie que vous "
+"devrez corriger ce paquet vous-même (absence d'architecture)."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+"Impossible de trouver une source de téléchargement de la version « %s » de "
+"« %s »"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"Les fichiers d'index des paquets sont corrompus. Aucun champ « Filename: » "
+"pour le paquet %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Journal des modifications pour %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Le pilote pour la méthode %s n'a pu être trouvé."
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "Veuillez vérifier si le paquet dpkg-dev est installé.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "La méthode %s n'a pas démarré correctement"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+"Veuillez insérer le disque « %s » dans le lecteur « %s » et appuyez sur la "
+"touche Entrée."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Le répertoire %spartial pour les listes n'existe pas."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Le répertoire d'archive %spartial n'existe pas."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "Impossible de verrouiller le répertoire %s"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "Le type de fichier d'index « %s » n'est pas accepté"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Impossible d'accéder à %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Téléchargement du fichier %li sur %li (%s restant)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Téléchargement du fichier %li sur %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"Le paquet %s doit être réinstallé, mais il est impossible de trouver son "
+"archive."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Erreur, pkgProblem::Resolve a généré des ruptures, ce qui a pu être causé "
+"par les paquets devant être gardés en l'état."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr ""
+"Impossible de corriger les problèmes, des paquets défectueux sont en mode "
+"« garder en l'état »."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+"Les listes de paquets ou le fichier « status » ne peuvent être analysés ou "
+"lus."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Vous pouvez lancer « apt-get update » pour corriger ces problèmes."
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "La liste des sources ne peut être lue."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Erreur de compilation de l'expression rationnelle - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "La version « %s » de « %s » est introuvable"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "La version « %s » de « %s » n'a pu être trouvée"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Impossible de trouver la tâche « %s »"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr ""
+"Impossible de trouver de paquet correspondant à l'expression rationnelle "
+"« %s »"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr ""
+"Impossible de trouver de paquet correspondant à l'expression rationnelle "
+"« %s »"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Impossible de trouver le paquet %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+"Impossible de choisir les versions du paquet « %s » qui n'est qu'un paquet "
+"virtuel"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"Impossible de choisir une nouvelle version du paquet « %s » qui n'est qu'un "
+"paquet virtuel"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+"Impossible de choisir une version candidate du paquet « %s » qui n'en n'a pas"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"Impossible de choisir la version installée du paquet « %s » qui n'est pas "
+"installé"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"Impossible de choisir une version installée ou candidate du paquet « %s » "
+"qui n'en n'a aucune"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "La ligne %u du fichier des listes de sources %s est trop longue."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Démontage du cédérom...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Utilisation du point de montage %s pour le cédérom\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Attente du disque...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Montage du cédérom...\n"
+
+#: apt-pkg/cdrom.cc
+#, fuzzy
+msgid "Identifying... "
+msgstr "Identification..."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Étiquette stockée : %s\n"
+
+#: apt-pkg/cdrom.cc
+#, fuzzy
+msgid "Scanning disc for index files...\n"
+msgstr "Examen du disque à la recherche de fichiers d'index...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"%zu index de paquets trouvés, %zu index de sources, %zu index de traductions "
+"et %zu signatures\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Aucun fichier de paquets trouvé. Ceci n'est peut-être pas un disque Debian "
+"ou bien l'architecture est-elle incorrecte."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Étiquette « %s » trouvée\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Ce nom n'est pas valable, veuillez recommencer.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Ce disque s'appelle :\n"
+"« %s »\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Copie des listes de paquets..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Écriture de la nouvelle liste de sources\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Les entrées de listes de sources pour ce disque sont :\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Impossible de localiser %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Impossible de localiser le point de montage %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Impossible d'accéder au cédérom."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "L'option « %c » de la ligne de commande [d'origine %s] est inconnue."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "L'option %s de la ligne de commande n'est pas reconnue"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "L'option %s de la ligne de commande n'est pas une valeur booléenne"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "L'option %s nécessite un paramètre."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "Option %s : l'item configuration doit être spécifiée avec un =<val>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "L'option %s prend un nombre entier en paramètre, et non « %s »"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "L'option « %s » est trop longue"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "La signification %s n'est pas comprise, veuillez essayer vrai ou faux."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "L'opération %s n'est pas valable"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Type d'abréviation non reconnue : « %c »"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Ouverture du fichier de configuration %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Erreur syntaxique %s:%u : le bloc commence sans aucun nom."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Erreur syntaxique %s:%u : balise mal formée"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Erreur syntaxique %s:%u : valeur suivie de choses illicites"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"Erreur syntaxique %s:%u : ces directives ne peuvent être appliquées qu'au "
+"niveau le plus haut"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Erreur syntaxique %s:%u: trop de niveaux d'imbrication d'includes"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Erreur syntaxique %s:%u : inclus à partir d'ici"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Erreur syntaxique %s:%u : directive « %s » non tolérée"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Erreur de syntaxe %s:%u : la directive « clear » a besoin d'un arbre "
+"d'options comme paramètre"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Erreur syntaxique %s:%u : valeur aberrante à la fin du fichier"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Problème de suppression du lien %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Verrou non utilisé pour le fichier %s en lecture seule"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Impossible d'ouvrir le fichier verrou %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Verrou non utilisé pour le fichier %s se situant sur une partition nfs"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Impossible d'obtenir le verrou %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+"La liste des fichiers ne peut pas être créée car « %s » n'est pas un "
+"répertoire"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+"« %s » dans le répertoire « %s » a été ignoré car ce n'est pas un fichier "
+"ordinaire"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+"« %s » dans le répertoire « %s » a été ignoré car il n'utilise pas "
+"d'extension"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"« %s » dans le répertoire « %s » a été ignoré car il utilise une extension "
+"non valable"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "A attendu %s mais il n'était pas présent"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Le sous-processus %s a commis une violation d'accès mémoire"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Le sous-processus %s a reçu le signal %u"
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Le sous-processus %s a renvoyé un code d'erreur (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Le sous-processus %s s'est arrêté prématurément"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Erreur de lecture"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Erreur d'écriture"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Problème de fermeture du fichier gzip %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Impossible de créer un sous-processus IPC"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Impossible d'exécuter la compression "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Impossible d'ouvrir le fichier %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Impossible d'ouvrir le descripteur de fichier %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "lu(s), %llu restant à lire, mais rien n'est disponible"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "écrit(s), %llu restant à écrire, mais l'écriture est impossible"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Problème de fermeture du fichier %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Problème de renommage du fichier %s en %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Problème de synchronisation du fichier"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Impossible de statuer pour %s."
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Impossible d'écrire sur %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Impossible de mapper un fichier vide en mémoire"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Impossible de réaliser un mapping de %llu octets en mémoire"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Impossible de dupliquer le descripteur de fichier %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "Impossible de fermer la « mmap »"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "Impossible de synchroniser la « mmap »"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Impossible de réaliser un mapping de %lu octets en mémoire"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Échec de la troncature du fichier"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"La zone dynamique d'allocation mémoire (« Dynamic MMap ») n'a plus de place. "
+"Vous devriez augmenter la taille de APT::Cache-Start, dont la valeur "
+"actuelle est de %lu (voir « man 5 apt.conf »)."
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"Impossible d'augmenter la taille de la « mmap » car la limite de %lu octets "
+"est déjà atteinte."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Impossible d'augmenter la taille de la « mmap » car l'augmentation "
+"automatique a été désactivée par une option utilisateur."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Erreur !"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Fait"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr "…"
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s… %u%%"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%lid %lih %limin %lis"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%lih %limin %lis"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%limin %lis"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%lis"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "La sélection %s n'a pu être trouvée"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Impossible d'analyser le fichier Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Pas de sections dans le fichier Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Pas d'entrée de hachage dans le fichier Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Entrée « %s » non valable dans le fichier Release %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Impossible de traiter le fichier %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"Impossible de verrouiller le répertoire d'administration (%s). Il est "
+"possible qu'un autre processus l'utilise."
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr ""
+"Impossible de verrouiller le répertoire d'administration (%s). Avez-vous les "
+"privilèges du superutilisateur ?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"dpkg a été interrompu. Il est nécessaire d'utiliser « %s » pour corriger le "
+"problème."
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Non verrouillé"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "Installation de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Configuration de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Suppression de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "Suppression complète de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "Disparition de %s constatée"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Exécution des actions différées (« trigger ») de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "%s installé"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Répertoire %s inexistant"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "Impossible d'ouvrir le fichier « %s »"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Préparation de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Décompression de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Préparation de la configuration de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Préparation de la suppression de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "%s supprimé"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Préparation de la suppression complète de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "%s complètement supprimé"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Can not write log (%s)"
+msgstr "Impossible d'écrire le journal (%s)"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr "Est-ce que /dev/pts est monté ?"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "L'opération a été interrompue avant de se terminer"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr "Aucun rapport « apport » écrit car MaxReports a déjà été atteint"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "problème de dépendances : laissé non configuré"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Aucun rapport « apport » n'a été créé car le message d'erreur indique une "
+"erreur consécutive à un échec précédent."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Aucun rapport « apport » n'a été créé car un disque plein a été signalé"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Aucun rapport « apport » n'a été créé car une erreur de dépassement de "
+"capacité mémoire a été signalée"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Aucun rapport « apport » n'a été créé car le message d'erreur rapporte un "
+"problème sur le système local"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"Aucun rapport « apport » n'a été créé car une erreur d'entrée/sortie de dpkg "
+"a été signalée"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Construction de l'arbre des dépendances"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Versions possibles"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Génération des dépendances"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Lecture des informations d'état"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Impossible d'ouvrir le fichier d'état %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Erreur d'écriture du fichier d'état temporaire %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "Envoi du scénario au solveur"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "Envoi d'une requête au solveur"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "Préparation à la réception de la solution"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr "Échec du solveur externe sans message d'erreur adapté"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "Exécution du solveur externe"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Execute external planner"
+msgstr "Exécution du solveur externe"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send request to planner"
+msgstr "Envoi d'une requête au solveur"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send scenario to planner"
+msgstr "Envoi du scénario au solveur"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "External planner failed without a proper error message"
+msgstr "Échec du solveur externe sans message d'erreur adapté"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "%i enregistrements écrits.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "%i enregistrements écrits avec %i fichiers manquants.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "%i enregistrements écrits avec %i fichiers qui ne correspondent pas\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"%i enregistrements écrits avec %i fichiers manquants et %i qui ne "
+"correspondent pas\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "Impossible de trouver l'enregistrement d'authentification pour %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Somme de contrôle de hachage incohérente pour %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Le système de paquet « %s » n'est pas supporté"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Impossible de déterminer un type du système de paquets adéquat"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr "Progression : [%3i%%]"
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "Exécution de dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"Impossible d'effectuer la configuration immédiate de « %s ». Veuillez "
+"consulter la page de manuel apt.conf(5) et notamment la section à propos de "
+"APT::Immediate-Configure, pour plus d'informations. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "Impossible de configurer « %s »."
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Cette installation va temporairement nécessiter l'enlèvement du paquet "
+"essentiel %s en raison d'une boucle entre les champs Conflicts et Pre-"
+"Depends. C'est souvent une mauvaise chose, mais si vous souhaitez réellement "
+"le faire, activez l'option APT::Force-LoopBreak."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Cache des paquets vide"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Le fichier de cache des paquets est corrompu"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Le fichier de cache des paquets a une version incompatible"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Cet APT ne supporte pas le système de version « %s »"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Le cache des paquets a été construit pour une architecture différente"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Le fichier de cache des paquets est corrompu, il est trop petit."
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Dépend"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Pré-Dépend"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Suggère"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Est en conflit avec"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Recommande"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Remplace"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Casse"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Améliore"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Rend obsolète"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "important"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "nécessaire"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "standard"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "supplémentaire"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "optionnel"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Le cache possède un système de version incompatible"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Erreur apparue lors du traitement de %s (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"Vous avez dépassé le nombre de noms de paquets que cette version d'APT est "
+"capable de traiter."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr ""
+"Vous avez dépassé le nombre de versions que cette version d'APT est capable "
+"de traiter."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+"Vous avez dépassé le nombre de descriptions que cette version d'APT est "
+"capable de traiter."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+"Vous avez dépassé le nombre de dépendances que cette version d'APT est "
+"capable de traiter."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Lecture des listes de paquets"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr ""
+"Erreur d'entrée/sortie lors de la sauvegarde du fichier de cache des sources"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Le type de fichier d'index « %s » n'est pas accepté"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"La valeur « %s » n'est pas valable pour APT::Default-Release car cette "
+"version ne fait pas partie des sources disponibles."
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr ""
+"Enregistrement non valable dans le fichier de préférences %s, aucune entrée "
+"« Package »."
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Type d'épinglage %s inconnu"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Aucune priorité (ou zéro) n'a été spécifiée pour l'épinglage"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Entrée « override » %s mal formée ligne %llu n° 1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Ouverture de %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Ligne %u mal formée dans la liste des sources %s (type)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr ""
+"Le type « %s » est inconnu sur la ligne %u dans la liste des sources %s"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Ligne %u mal formée dans la liste des sources %s (type)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr ""
+"Le type « %s » est inconnu sur la ligne %u dans la liste des sources %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr ""
+"Vous devez insérer quelques adresses « sources » dans votre sources.list"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Impossible de récupérer %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Le téléchargement de quelques fichiers d'index a échoué, ils ont été "
+"ignorés, ou les anciens ont été utilisés à la place."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calcul de la mise à jour"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Atteint:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Réception de:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Ign:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Err:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "%so réceptionnés en %s (%so/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [En cours]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Changement de support : veuillez insérer le disque\n"
+"« %s »\n"
+"dans le lecteur « %s » et appuyez sur la touche Entrée\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Correction des dépendances..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " a échoué."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Impossible de corriger les dépendances"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Impossible de minimiser le nombre des paquets mis à jour"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Fait"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+"Vous pouvez lancer « apt --fix-broken install » pour corriger ces problèmes."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Dépendances non satisfaites. Essayez « apt --fix-broken install » sans "
+"paquet\n"
+"(ou indiquez une solution)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr "En train de trier"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Note : sélection de %s pour la tâche « %s »\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Note : sélection de %s pour l'expression rationnelle « %s »\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Note : sélection de %s pour l'expression rationnelle « %s »\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Le paquet %s est un paquet virtuel fourni par :\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [installé]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [Pas de version candidate]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Vous devez explicitement sélectionner un paquet à installer."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Aucune version du paquet %s n'est disponible, mais il existe dans la base\n"
+"de données. Cela signifie en général que le paquet est manquant, qu'il est "
+"devenu obsolète\n"
+"ou qu'il n'est disponible que sur une autre source\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Cependant les paquets suivants le remplacent :"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Le paquet « %s » n'a pas de version susceptible d'être installée"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Les paquets virtuels comme « %s » ne peuvent pas être supprimés\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"Le paquet « %s » n'est pas installé, et ne peut donc être supprimé. Peut-"
+"être vouliez-vous écrire « %s » ?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Le paquet « %s » n'est pas installé, et ne peut donc être supprimé\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Note : sélection de « %s » au lieu de « %s »\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Cet APT a les « Super Cow Powers »"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Aucun paquet n'a été trouvé"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "ATTENTION : les paquets suivants n'ont pas été authentifiés."
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Avertissement d'authentification ignoré.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Certains paquets n'ont pas pu être authentifiés"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Faut-il installer ces paquets sans vérification ?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Il y a des problèmes et -y a été employé sans --force-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Impossible de déterminer l'espace disponible sur %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Pas assez d'espace disponible sur %s"
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Impossible de verrouiller le répertoire de téléchargement"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Certains paquets ne peuvent être installés. Ceci peut signifier\n"
+"que vous avez demandé l'impossible, ou bien, si vous utilisez\n"
+"la distribution unstable, que certains paquets n'ont pas encore\n"
+"été créés ou ne sont pas sortis d'Incoming."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "L'information suivante devrait vous aider à résoudre la situation : "
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Paquets défectueux"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Impossible de récupérer certaines archives, peut-être devrez-vous lancer apt-"
+"get update ou essayer avec --fix-missing ?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Erreur interne, « InstallPackages » appelé avec des paquets cassés."
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr ""
+"Les paquets doivent être enlevés mais la désinstallation est désactivée."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Il y a des problèmes et -y a été employé sans --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Il y a des problèmes et -y a été employé sans --force-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Erreur interne. Le tri a été interrompu."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Étrangement, les tailles ne correspondent pas. Veuillez le signaler par "
+"courriel à apt@packages.debian.org."
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Il est nécessaire de prendre %so/%so dans les archives.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Il est nécessaire de prendre %so dans les archives.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr ""
+"Après cette opération, %so d'espace disque supplémentaires seront utilisés.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Après cette opération, %so d'espace disque seront libérés.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr ""
+"L'option --trivial-only a été indiquée mais il ne s'agit pas d'une opération "
+"triviale."
+
+# The space before the exclamation mark must not be a non-breaking space; this
+# sentence is supposed to be typed by a user who cannot see the difference.
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Oui, faites ce que je vous dis !"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Vous êtes sur le point de faire quelque chose de potentiellement dangereux\n"
+"Pour continuer, tapez la phrase « %s »\n"
+" ?]"
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Annulation."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Souhaitez-vous continuer ?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Certains fichiers n'ont pu être téléchargés."
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Téléchargement achevé et dans le mode téléchargement uniquement"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr ""
+"l'option --fix-missing et l'échange de support ne sont pas encore reconnus."
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Impossible de corriger le fait que des paquets manquent."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Annulation de l'installation."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"Le paquet suivant a disparu du système car tous ses fichiers\n"
+"ont été remplacés par d'autres paquets :"
+msgstr[1] ""
+"Les paquets suivants ont disparu du système car tous leurs fichiers\n"
+"ont été remplacés par d'autres paquets :"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+"Note : cette opération volontaire (effectuée par dpkg) est automatique."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+"Aucune suppression n'est censée se produire : impossible de lancer "
+"« Autoremover »"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Il semble que l'outil de suppression automatique (« Autoremover ») ait\n"
+"supprimé quelque chose, ce qui est inattendu. Veuillez envoyer un\n"
+"rapport de bogue pour le paquet « apt »."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr ""
+"Erreur interne, l'outil de suppression automatique a cassé quelque chose."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"Le paquet suivant a été installé automatiquement et n'est plus nécessaire :"
+msgstr[1] ""
+"Les paquets suivants ont été installés automatiquement et ne sont plus "
+"nécessaires :"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] ""
+"%lu paquet a été installé automatiquement et n'est plus nécessaire.\n"
+msgstr[1] ""
+"%lu paquets ont été installés automatiquement et ne sont plus nécessaires.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Veuillez utiliser « %s » pour le supprimer."
+msgstr[1] "Veuillez utiliser « %s » pour les supprimer."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Les paquets supplémentaires suivants seront installés : "
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Paquets suggérés :"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Paquets recommandés :"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "Passe %s, il est déjà installé et la mise à jour n'est pas prévue.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"%s ignoré : il n'est pas installé et seules des mises à jour ont été "
+"demandées.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr ""
+"La réinstallation de %s est impossible, il ne peut pas être téléchargé.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s est déjà la plus récente version disponible.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s passé en « installé manuellement ».\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Version choisie « %s » (%s) pour « %s »\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Version choisie « %s » (%s) pour « %s » à cause de « %s »\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr "En train de lister"
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"NOTE: Ceci n'est qu'une simulation !\n"
+" %s a besoin des privilèges du superutilisateur\n"
+" pour pouvoir vraiment fonctionner.\n"
+" Veuillez aussi noter que le verrouillage est désactivé,\n"
+" et la situation n'est donc pas forcément représentative\n"
+" de la réalité !\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr "installé, pouvant être mis à jour vers :"
+
+#: apt-private/private-output.cc
+msgid "[installed,local]"
+msgstr " [installé, local]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr "[installé, pouvant être supprimé automatiquement]"
+
+#: apt-private/private-output.cc
+msgid "[installed,automatic]"
+msgstr " [installé, automatique]"
+
+#: apt-private/private-output.cc
+msgid "[installed]"
+msgstr " [installé]"
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[upgradable from: %s]"
+msgstr "[pouvant être mis à jour depuis :"
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr "[configuration restante]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "mais %s est installé"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "mais %s devra être installé"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "mais il n'est pas installable"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "mais c'est un paquet virtuel"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "mais ne sera pas installé"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "mais il n'est pas installé"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " ou"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Les paquets suivants contiennent des dépendances non satisfaites :"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Les NOUVEAUX paquets suivants seront installés :"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Les paquets suivants seront ENLEVÉS :"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Les paquets suivants ont été conservés :"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Les paquets suivants seront mis à jour :"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Les paquets suivants seront mis à une VERSION INFÉRIEURE :"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Les paquets retenus suivants seront changés :"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (en raison de %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"ATTENTION : Les paquets essentiels suivants vont être enlevés.\n"
+"Vous NE devez PAS faire ceci, à moins de savoir exactement ce\n"
+"que vous êtes en train de faire."
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu mis à jour, %lu nouvellement installés, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu réinstallés, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu remis à une version inférieure, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu à enlever et %lu non mis à jour.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu partiellement installés ou enlevés.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[O/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[o/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "O"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "Vous devez fournir au moins un motif de recherche"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr "Recherche en texte intégral"
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Fichier du paquet %s désynchronisé."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr "pas un véritable paquet (virtuel)"
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Fichiers du paquet :"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "Le cache est désynchronisé, impossible de référencer un fichier"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Paquets épinglés :"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Installé : "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Candidat : "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(aucun)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Table de version :"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Impossible de trouver de paquet correspondant à l'architecture « %s »"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr ""
+"Impossible de trouver de paquet «%s » correspondant à la version « %s »"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr ""
+"Impossible de trouver de paquet « %s » correspondant à la publication « %s »"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Choix de « %s » comme paquet source à la place de « %s »\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "Impossible de trouver la version « %s » du paquet « %s »"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Vous devez spécifier au moins un paquet source"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Impossible de trouver une source de paquet pour %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"Note : la maintenance du paquet de « %s » est réalisée dans le système de "
+"suivi de versions « %s » à l'adresse :\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Veuillez utiliser la commande :\n"
+"%s\n"
+"pour récupérer les dernières mises à jour (éventuellement non encore "
+"publiées) du paquet.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Saut du téléchargement du fichier « %s », déjà téléchargé\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Nécessité de prendre %so/%so dans les sources.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Nécessité de prendre %so dans les sources.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Récupération des sources %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Échec lors de la récupération de quelques archives."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Saut du décompactage des paquets sources déjà décompactés dans %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "La commande de décompactage « %s » a échoué.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Veuillez vérifier si le paquet dpkg-dev est installé.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "La commande de construction « %s » a échoué.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Impossible d'obtenir les dépendances de construction pour %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s n'a pas de dépendance de construction.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Il faut spécifier au moins un paquet pour vérifier les dépendances de "
+"construction"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"Aucune information sur l'architecture n'est disponible pour %s. Veuillez "
+"consulter la section à propos de APT::Architectures dans la page de manuel "
+"apt.conf(5)."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Impossible d'activer les dépendances de construction"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Impossible d'activer les dépendances de construction"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Impossible de lire %s. Faut-il l'éditer à nouveau ?"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr "Votre fichier « %s » a changé, veuillez lancer « apt-get update »."
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Le paquet %s de version %s contient une dépendance absente :\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "La commande de mise à jour ne prend pas de paramètre"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "La commande de mise à jour ne prend pas de paramètre"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Nombre total de paquets : "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Nombre total de structures de paquets : "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Paquets ordinaires : "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Paquets entièrement virtuels : "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Paquets virtuels simples : "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Paquets virtuels mixtes : "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Manquants : "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Nombre de versions distinctes : "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Nombre de descriptions distinctes : "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Nombre de dépendances : "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Nombre de relations version/fichier : "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Nombre de relations description/fichier : "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Nombre de relations « Provides » : "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Nombre de motifs rationnels : "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Espace disque gaspillé : "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Total de l'espace attribué : "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr "Cette commande est obsolète. Veuillez utiliser « apt-mark showauto »."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Affiche les enregistrements des sources"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Cherche une expression rationnelle dans la liste des paquets"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Affiche toutes les dépendances d'un paquet"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Affiche les dépendances inverses d'un paquet"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Affiche la description du paquet"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Liste le nom de tous les paquets du système"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Affiche l'épinglage (Pin) en vigueur"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr ""
+"Veuillez indiquer le nom de ce disque, par exemple « Debian 5.0.3 Disk 1 »"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr ""
+"Veuillez insérer un disque dans le lecteur et appuyez sur la touche Entrée"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Impossible de monter « %s » sur « %s »"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+"Aucun CD n'a été détecté sur le point de montage par défaut.\n"
+"Vous pouvez utiliser l'option --cdrom pour indiquer le point de montage du "
+"CD-ROM. Voir la page de manuel d'apt-cdrom pour plus d'informations sur "
+"l'auto-détection des CD et le point de montage."
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr ""
+"Veuillez répéter cette opération pour tous les disques de votre jeu de "
+"cédéroms."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Les paramètres ne sont pas appariés"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Usage : apt-config [options] commande\n"
+"\n"
+"apt-config est un outil simple pour lire le fichier de configuration d'APT\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Usage : apt-extracttemplates fichier1 [fichier2 ...]\n"
+"\n"
+"apt-extracttemplates est un outil pour extraire la configuration et les\n"
+"informations des gabarits des paquets Debian\n"
+"\n"
+"Options :\n"
+" -h Ce texte d'aide\n"
+" -t Place le répertoire temporaire\n"
+" -c=? Lit ce fichier de configuration\n"
+" -o=? Spécifie une option de configuration, p. ex. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr ""
+"Impossible d'obtenir la version de debconf. Est-ce que debconf est installé ?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Impossible de trouver le paquet %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s passé en « installé automatiquement ».\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Cette commande est obsolète. Veuillez utiliser « apt-mark auto » et « apt-"
+"mark manual »."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr ""
+"Erreur interne, la tentative de résolution du problème a cassé certaines "
+"parties"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Modules reconnus :"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Usage : apt-get [options] commandes\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get est une interface simple en ligne de commande servant à\n"
+"télécharger et à installer des paquets. Les commandes les plus\n"
+"fréquemment employées sont update et install.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Récupère les nouvelles listes de paquets"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Réalise une mise à jour"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Installe de nouveaux paquets (pkg1 est libc6 et non libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Supprime des paquets"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Supprime des paquets et leurs fichiers de configuration"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Supprime automatiquement les dépendances inutilisés"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Met à jour la distribution, reportez-vous à apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Suit les sélections de dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Configure build-dependencies pour les paquets sources"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Supprime dans le cache local tous les fichiers téléchargés"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Supprime dans le cache local les fichiers inutiles"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Vérifie qu'il n'y a pas de rupture de dépendances"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Télécharge les archives de sources"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "Télécharge le paquet binaire dans le répertoire courant"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+"Télécharge et affiche le journal des modifications («  changelog ») du "
+"paquet indiqué"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "Vous devez spécifier au moins un paquet source"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Utilisation: apt-internal-solver\n"
+"\n"
+"apt-internal-solver est une interface en ligne de commande\n"
+"permettant d'utiliser la résolution interne d'apt de manière externe\n"
+"avec les outils de la famille d'APT à des fins de déboguage ou\n"
+"équivalent.\n"
+"\n"
+"Options:\n"
+" -h La présente aide.\n"
+" -q Affichage journalisable - pas de barre de progression\n"
+" -c=? lecture du fichier de configuration indiqué\n"
+" -o=? utilisation d'une option de configuration,\n"
+" p. ex. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Utilisation: apt-internal-solver\n"
+"\n"
+"apt-internal-solver est une interface en ligne de commande\n"
+"permettant d'utiliser la résolution interne d'apt de manière externe\n"
+"avec les outils de la famille d'APT à des fins de déboguage ou\n"
+"équivalent.\n"
+"\n"
+"Options:\n"
+" -h La présente aide.\n"
+" -q Affichage journalisable - pas de barre de progression\n"
+" -c=? lecture du fichier de configuration indiqué\n"
+" -o=? utilisation d'une option de configuration,\n"
+" p. ex. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "%s ne peut pas être marqué car il n'est pas installé.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s était déjà marqué comme installé manuellement.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s était déjà marqué comme installé automatiquement.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s était déjà marqué comme figé (« hold »).\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s était déjà marqué comme non figé.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+"Échec de l'exécution de dpkg. Possédez-vous les privilèges du "
+"superutilisateur ?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "%s passé en figé (« hold »).\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Annulation de l'état figé pour %s.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"Utilisation: apt-mark [options] {auto|manual} paquet 1 [paquet2 ...]\n"
+"\n"
+"apt-mark est une interface simple, en ligne de commande, qui permet\n"
+"de marquer des paquets comme installés manuellement ou automatiquement.\n"
+"Cette commande permet également d'afficher cet état.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "marquer les paquets indiqués comme installés automatiquement"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "marquer les paquets indiqués comme installés manuellement"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Enregistrement de paquet inconnu !"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr "liste les paquets selon leur nom"
+
+#: cmdline/apt.cc
+msgid "search in package descriptions"
+msgstr "cherche dans les descriptions de paquet"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr "affiche les détails du paquet"
+
+#. package stuff
+#: cmdline/apt.cc
+msgid "install packages"
+msgstr "installes les paquets"
+
+#: cmdline/apt.cc
+msgid "remove packages"
+msgstr ""
+
+#. system wide stuff
+#: cmdline/apt.cc
+msgid "update list of available packages"
+msgstr "met à jour la liste des paquets disponibles"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+msgid "edit the source information file"
+msgstr "édite le fichier d'information source"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Mauvais paramètre par défaut !"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Veuillez appuyer sur Entrée pour continuer."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Voulez-vous effacer les fichiers .deb précédemment téléchargés ?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "Quelques erreurs sont apparues lors du décompactage. Les paquets qui"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr ""
+"ont été installés vont être configurés. Il peut en résulter d'autres erreurs"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"ou des erreurs provoquées par les dépendances manquantes. C'est bénin, "
+"seules les erreurs."
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"précédant ce message sont importantes. Veuillez les corriger et\n"
+"démarrer l'[I]nstallation une nouvelle fois."
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Fusion des informations disponibles"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "La liste d'extension du paquet est trop longue"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Erreur lors du traitement du répertoire %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "La liste d'extension des sources est trop grande"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Erreur lors de l'écriture de l'en-tête du fichier contenu"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Erreur du traitement du contenu %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Usage : apt-ftparchive [options] commande\n"
+"Commandes : paquets binarypath [fichier d'« override » [chemin du "
+"préfixe]]\n"
+" sources srcpath [fichier d'« override » [chemin du préfixe]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groupes]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive génère des fichiers d'index pour les archives Debian. Il\n"
+"prend en charge de nombreux types de génération, d'une automatisation "
+"complète\n"
+"à des remplacements fonctionnels pour dpkg-scanpackages et dpkg-scansources\n"
+"\n"
+"apt-ftparchive génère les fichiers de paquets à partir d'un arbre de .debs.\n"
+"Le fichier des paquets contient les contenus de tous les champs de contrôle\n"
+"de chaque paquet aussi bien que les hachés MD5 et la taille du fichier. Un\n"
+"fichier d'« override » est accepté pour forcer la valeur des priorités et\n"
+"des sections\n"
+"\n"
+"De façon similaire, apt-ftparchive génère des fichiers de source à partir\n"
+"d'un arbre de .dscs. L'option --source-override peut être employée pour\n"
+"spécifier un fichier src d'« override »\n"
+"\n"
+"Les commandes « packages » et « sources » devraient être démarrées à la\n"
+"racine de l'arbre. « BinaryPath » devrait pointer sur la base d'une\n"
+"recherche récursive et le fichier d'« override » devrait contenir les\n"
+"drapeaux d'annulation. « Pathprefix » est ajouté au champ du nom de\n"
+"fichier s'il est présent. Exemple d'utilisation d'archive Debian :\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options :\n"
+" -h Ce texte d'aide\n"
+" --md5 Contrôle la génération des MD5\n"
+" -s=? Fichier d'« override » pour les sources\n"
+" -q Silencieux\n"
+" -d=? Sélectionne la base de données optionnelle de cache\n"
+" --no-delink Permet le mode de débogage délié\n"
+" --contents Contrôle la génération de fichier\n"
+" -c=? Lit ce fichier de configuration\n"
+" -o=? Place une option de configuration arbitraire"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Aucune sélection ne correspond"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr ""
+"Quelques fichiers sont manquants dans le groupe de fichiers de paquets « %s »"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "Base de données corrompue, fichier renommé en %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "Base de données ancienne, tentative de mise à jour de %s\""
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Le format de la base de données n'est pas valable. Si vous mettez APT à "
+"jour, veuillez supprimer puis recréer la base de données."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Impossible d'ouvrir le fichier de base de données %s : %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Impossible de lire le lien %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "L'archive n'a pas d'enregistrement de contrôle"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Impossible d'obtenir un curseur"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Échec de l'allocation de mémoire"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Algorithme de compression « %s » inconnu"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "La sortie compressée %s a besoin d'un ensemble de compression"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Impossible de créer le tube IPC sur le sous-processus"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Échec du fork"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Fils compressé"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Erreur interne, impossible de créer %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Échec d'entrée/sortie du sous-processus sur le fichier"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Impossible de lire lors du calcul de la somme MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Impossible d'ouvrir %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Entrée « override » %s mal formée ligne %llu n° 1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Impossible de lire le fichier d'« override » %s"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Entrée « override » %s mal formée ligne %llu n° 1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Entrée « override » %s mal formée %llu n° 2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Entrée « override » %s mal formée %llu n° 3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "A : Impossible de lire le contenu du répertoire %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "A : Impossible de statuer %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E : "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "A : "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E : des erreurs sont survenues sur le fichier "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Impossible de résoudre %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Échec du parcours de l'arbre"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Impossible d'ouvrir %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " Délier %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Impossible de lier %s à %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " Seuil de delink de %so atteint.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "L'archive ne possède pas de champ de paquet"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr "%s ne possède pas d'entrée « override »\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " le responsable de %s est %s et non %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s ne possède pas d'entrée « source override »\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s ne possède pas également pas d'entrée « binary override »\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Attente des fichiers d'en-tête"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "Le serveur http a envoyé une réponse dont l'en-tête est invalide"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Mauvaise ligne d'en-tête"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "Le serveur http a envoyé un en-tête « Content-Length » invalide"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "Le serveur http a envoyé un en-tête « Content-Range » invalide"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Ce serveur http possède un support des limites non-valide"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Format de date inconnu"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Mauvais en-tête de donnée"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Échec de la connexion"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Erreur interne"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Impossible de lire la base de données %s du cédérom"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Veuillez utiliser apt-cdrom afin de faire reconnaître ce cédérom par votre "
+"APT. apt-get update ne peut être employé pour ajouter de nouveaux cédéroms"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Mauvais cédérom"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr ""
+"Impossible de démonter le cédérom dans %s, il doit toujours être en cours "
+"d'utilisation."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Disque non trouvé."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Fichier non trouvé"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Connexion à %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP : %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Impossible de créer de connexion pour %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Impossible d'initialiser la connexion à %s: %s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Connexion à %s: %s (%s) impossible, délai de connexion dépassé"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Échec"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Connexion à %s: %s (%s) impossible."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Connexion à %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Ne parvient pas à résoudre « %s »"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Erreur temporaire de résolution de « %s »"
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Erreur système lors de la résolution de « %s:%s »"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr ""
+"Quelque chose d'imprévisible est survenu lors de la détermination de « %s:"
+"%s » (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Impossible de se connecter à %s:%s :"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Impossible de statuer"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Liens invalides, les liens locaux ne doivent pas débuter par //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Connexion en cours"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Impossible de déterminer le nom de la machine distante"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Impossible de déterminer le nom local"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Le serveur a refusé la connexion et a répondu : %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER incorrect, le serveur a répondu : %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS incorrect, le serveur a répondu : %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Un serveur proxy a été spécifié, mais aucun script de connexion, Acquire::"
+"ftp::ProxyLogin est vide."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr ""
+"La commande « %s » du script de connexion a échoué, le serveur a répondu : %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "Échec de TYPE, le serveur a répondu : %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Dépassement du délai de connexion"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Le serveur a fermé la connexion"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Une réponse a fait déborder le tampon."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Corruption du protocole"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Impossible de créer un connecteur"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr ""
+"Impossible de se connecter sur le port de données, délai de connexion dépassé"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Impossible de se connecter au port en mode passif."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo n'a pu obtenir un port d'écoute"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Impossible de se connecter à un port"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Impossible d'écouter sur le port"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Impossible de déterminer le nom du port"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Impossible d'envoyer la commande PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Famille d'adresses %u inconnue (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT a échoué, le serveur a répondu : %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Délai de connexion au port de données dépassé"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Impossible d'accepter une connexion"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Problème de hachage du fichier"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Impossible de récupérer le fichier, le serveur a répondu « %s »"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Pas de réponse du port de données dans les délais"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Le transfert de données a échoué, le serveur a répondu « %s »"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Requête"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Impossible d'invoquer "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, fuzzy, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+"Le fichier signé en clair n'est pas valable, ce qui a été reçu est « %s ». "
+"Peut-être le réseau nécessite-t-il une authentification."
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Au moins une signature non valable a été rencontrée."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Erreur interne : signature correcte, mais il est impossible de déterminer "
+"l'empreinte de la clé."
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Impossible d'exécuter « apt-key » pour contrôler la signature (veuillez "
+"vérifier si gnupg est installé)."
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Erreur inconnue à l'exécution de apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Les signatures suivantes ne sont pas valables :\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Les signatures suivantes n'ont pas pu être vérifiées car la clé publique "
+"n'est pas disponible :\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Erreur d'écriture sur le fichier"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Erreur de lecture depuis le serveur distant et clôture de la connexion"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Erreur de lecture du serveur"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Erreur d'écriture sur un fichier"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Sélection défaillante"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Délai de connexion dépassé"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Erreur d'écriture du fichier de sortie"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Aucun fichier miroir « %s » n'a été trouvé"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Impossible de lire le fichier de miroir « %s »."
+
+#: methods/mirror.cc
+#, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Pas d'entrée trouvée dans le fichier de miroir « %s »."
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Miroir : %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Impossible de modifier l'heure "
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Connexion fermée prématurément"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "Les fichiers vides ne peuvent être des archives valables"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Dépendances manquantes. Essayez d'utiliser l'option --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Vous pouvez lancer « apt --fix-broken install » pour corriger ces "
+#~ "problèmes :"
+
+#~ msgid "(not found)"
+#~ msgstr "(non trouvé)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Épinglage de paquet : "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr ""
+#~ "Aucune clé publique n'est disponible pour la/les clé(s) suivante(s) :\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "Le répertoire %s est détourné"
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "La dépendance %s vis-à-vis de %s ne peut être satisfaite car %s n'est pas "
+#~ "autorisé avec les paquets « %s »."
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "La dépendance %s vis-à-vis de %s ne peut être satisfaite car le paquet %s "
+#~ "ne peut être trouvé"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Impossible de satisfaire la dépendance %s pour %s : le paquet installé %s "
+#~ "est trop récent"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "La dépendance %s vis-à-vis de %s ne peut être satisfaite car aucune "
+#~ "version disponible du paquet %s ne peut satisfaire les prérequis de "
+#~ "version."
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "La dépendance %s vis-à-vis de %s ne peut être satisfaite car le paquet %s "
+#~ "n'a pas de version disponible."
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Impossible de satisfaire les dépendances %s pour %s : %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr ""
+#~ "Les dépendances de compilation pour %s ne peuvent pas être satisfaites."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Problème en déliant %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Impossible de délier %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Usage : apt-cache [options] commande\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache est un outil de bas niveau pour obtenir des informations\n"
+#~ "des fichiers de cache binaires d'APT.\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Options :\n"
+#~ " -h Ce texte d'aide\n"
+#~ " -p=? Le cache des paquets\n"
+#~ " -s=? Le cache des sources\n"
+#~ " -q Enlève l'indicateur de progression\n"
+#~ " -i Affiche seulement les dépendances importantes pour la commande "
+#~ "« unmet »\n"
+#~ " -c=? Lit ce fichier de configuration\n"
+#~ " -o=? Spécifie une option de configuration, p. ex. -o dir::cache=/tmp\n"
+#~ "Veuillez consulter les pages de manuel de apt-cache(8) et apt.conf(5) "
+#~ "pour plus\n"
+#~ "d'informations.\n"
+
+#~ msgid ""
+#~ "Usage: apt [options] command\n"
+#~ "\n"
+#~ "CLI for apt.\n"
+#~ msgstr ""
+#~ "Utilisation : apt [options] commande\n"
+#~ "\n"
+#~ "Interface Ligne de Commande (CLI) pour apt.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "Options:\n"
+#~ " -h Affiche la présente aide.\n"
+#~ " -q Affichage journalisable - pas de barre de progression\n"
+#~ " -qq Pas d'affichage à part les erreurs\n"
+#~ " -s Mode simulation : aucune action effectuée.\n"
+#~ " Affiche simplement ce qui serait effectué.\n"
+#~ " -f lecture/écriture des états dans le fichier indiqué\n"
+#~ " -c=? lecture du fichier de configuration indiqué\n"
+#~ " -o=? utilisation d'une option de configuration,\n"
+#~ " p. ex. -o dir::cache=/tmp\n"
+#~ "Veuillez consulter les pages de manuel apt-mark(8) et apt.conf(5)\n"
+#~ "pour plus d'informations."
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Options :\n"
+#~ " -h Ce texte d'aide\n"
+#~ " -c=? Lit ce fichier de configuration\n"
+#~ " -o=? Spécifie une option de configuration, p. ex. -o dir::cache=/tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "Options:\n"
+#~ " -h Affiche la présente aide.\n"
+#~ " -q Affichage journalisable - pas de barre de progression\n"
+#~ " -qq Pas d'affichage à part les erreurs\n"
+#~ " -s Mode simulation : aucune action effectuée.\n"
+#~ " Affiche simplement ce qui serait effectué.\n"
+#~ " -f lecture/écriture des états dans le fichier indiqué\n"
+#~ " -c=? lecture du fichier de configuration indiqué\n"
+#~ " -o=? utilisation d'une option de configuration,\n"
+#~ " p. ex. -o dir::cache=/tmp\n"
+#~ "Veuillez consulter les pages de manuel apt-mark(8) et apt.conf(5)\n"
+#~ "pour plus d'informations."
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Usage : apt-sortpkgs [options] fichier1 [fichier2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs est un outil simple pour trier les paquets. L'option -s est\n"
+#~ "employée pour indiquer le type de fichier dont il s'agit.\n"
+#~ "\n"
+#~ "Options :\n"
+#~ " -h Ce texte d'aide\n"
+#~ " -s Trie le fichier source\n"
+#~ " -c=? Lit ce fichier de configuration\n"
+#~ " -o=? Place une option de configuration arbitraire, p. ex. -o dir::"
+#~ "cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Échec du processus fils"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Vous devez spécifier au moins un paquet source"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Échec de création de tubes"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Impossible d'exécuter gzip "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s pour %s compilé sur %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Impossible de créer FILE*"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr ""
+#~ "Ligne %lu mal formée dans la liste des sources %s (analyse de l'URI)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "Ligne %lu mal formée dans la liste des sources %s (impossible d'analyser "
+#~ "[option])"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr ""
+#~ "Ligne %lu mal formée dans la liste de sources %s ([option] trop courte)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr ""
+#~ "Ligne %lu mal formée dans la liste des sources %s ([%s] n'est pas une "
+#~ "affectation)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr ""
+#~ "Ligne %lu mal formée dans la liste des sources %s ([%s] n'a pas de clé)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "Ligne %lu mal formée dans la liste des sources %s ([%s] la clé %s n'a pas "
+#~ "de valeur)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Ligne %lu mal formée dans le fichier de source %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Ligne %lu mal formée dans la liste de sources %s (distribution)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr ""
+#~ "Ligne %lu mal formée dans la liste des sources %s (analyse de l'URI)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr ""
+#~ "Ligne %lu mal formée dans la liste des sources %s (distribution absolue)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr ""
+#~ "Ligne %lu mal formée dans la liste des sources %s (analyse de "
+#~ "distribution)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr ""
+#~ "Le paquet %s %s n'a pu être trouvé lors du traitement des dépendances des "
+#~ "fichiers"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Impossible de localiser la liste des paquets sources %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Assemblage des fichiers listés dans les champs Provides"
+
+#, fuzzy
+#~ msgid "Does not start with a cleartext signature"
+#~ msgstr "Le fichier %s ne commence pas par un message signé en clair."
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr ""
+#~ "Impossible de trouver la somme de contrôle de « %s » dans le fichier "
+#~ "Release"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Le bloc de fournisseur %s ne comporte pas d'empreinte"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Espace occupé par les versions des dépendances : "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Pas assez d'espace disponible sur %s"
+
+#~ msgid "Done"
+#~ msgstr "Fait"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Pas de porte-clés installé dans %s."
+
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Erreur interne, Upgrade a cassé le boulot !"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Impossible de modifier %s avec mmap et l'utilisation des opérations de "
+#~ "fichiers : le correctif semble être corrompu."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Impossible de modifier %s avec mmap (sans échec particulier de mmap) : le "
+#~ "correctif semble être corrompu."
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s n'est pas un paquet Debian valide."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Utilisation du point de montage %s pour le cédérom\n"
+#~ "Montage du cédérom\n"
+
+#~ msgid "Unmounting CD-ROM\n"
+#~ msgstr "Démontage du cédérom\n"
+
+#~ msgid "Is stdout a terminal?"
+#~ msgstr "Est-ce que stdout est un terminal ?"
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr ""
+#~ "La distribution cible « %s » indisponible pour le paquet « %s » est "
+#~ "ignorée"
+
+#~ msgid "Downloading %s %s"
+#~ msgstr "Téléchargement de %s %s"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Ce n'est pas une archive DEB valide, elle n'a pas de membre « %s », "
+#~ "« %s » ou « %s »"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "Somme de contrôle MD5 incohérente"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Impossible de localiser un fichier du paquet %s. Cela signifie que vous "
+#~ "devrez corriger ce paquet vous-même."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Impossible d'écrire le journal, échec d'openpty()\n"
+#~ "(/dev/pts est-il monté ?)\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Fichier %s inexistant ignoré"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Impossible de supprimer %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Impossible de créer %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Impossible de statuer pour %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr ""
+#~ "Les répertoires info et temp doivent se trouver sur le même système de "
+#~ "fichiers"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Impossible de changer pour le répertoire d'administration %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Erreur interne lors de l'obtention d'un nom de paquet"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Lecture de la liste de fichiers"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Impossible d'ouvrir le fichier de liste « %sinfo/%s ». Si vous ne "
+#~ "parvenez pas à restaurer ce fichier, veuillez le vider et réinstaller "
+#~ "immédiatement la même version du paquet !"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Échec de la lecture du fichier de liste %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Erreur interne lors de l'obtention d'un NÅ“ud"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Impossible d'ouvrir le fichier des déviations %sdiversions "
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Le fichier des déviations est corrompu"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Ligne invalide dans le fichier des déviations : %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Erreur interne en ajoutant une déviation"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Le cache des paquets doit être initialisé en premier"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Impossible de trouver un en-tête « Package: », décalage %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr ""
+#~ "Mauvaise section « ConfFile » dans le fichier « status ». Décalage %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Erreur lors du traitement de la somme MD5. Décalage %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Impossible d'accéder à %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Impossible de localiser un fichier de contrôle valide"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Ne parvient pas à ouvrir le tube pour %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Erreur de lecture du processus %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "J'ai une simple ligne d'en-tête au-dessus du caractère %u"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Entrée « override » %s mal formée ligne %lu n° 1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Entrée « override » %s mal formée %lu n° 2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Entrée « override » %s mal formée %lu n° 3"
+
+#~ msgid "decompressor"
+#~ msgstr "décompacteur"
+
+#~ msgid "Note: This is done automatic and on purpose by dpkg."
+#~ msgstr ""
+#~ "Note : cette opération volontaire (effectuée par dpkg) est automatique."
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "lu(s), %lu restant à lire, mais rien n'est disponible"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "écrit(s), %lu restant à écrire, mais l'écriture est impossible"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "Impossible d'effectuer la configuration immédiate du paquet « %s », déjà "
+#~ "décompressé. Veuillez consulter la page de manuel apt.conf(5) et "
+#~ "notamment la section à propos de APT::Immediate-Configure, pour plus "
+#~ "d'informations."
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Erreur apparue lors du traitement de %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Erreur apparue lors du traitement de %s (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Erreur apparue lors du traitement de %s (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Erreur apparue lors du traitement de %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Erreur apparue lors du traitement de %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Erreur apparue lors du traitement de %s (NewVersion%d)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Erreur apparue lors du traitement de %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Erreur apparue lors du traitement de %s (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Erreur apparue lors du traitement de %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Erreur apparue lors du traitement de %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Erreur interne, ne peut localiser le membre"
+
+#~ msgid "Internal error, group '%s' has no installable pseudo package"
+#~ msgstr ""
+#~ "Erreur interne : le groupe « %s » n'a pas de pseudo-paquet installable"
+
+#~ msgid "Release file expired, ignoring %s (invalid since %s)"
+#~ msgstr "Le fichier Release a expiré, %s ignoré (non valable depuis %s)"
+
+#~ msgid "E: Too many keyrings should be passed to gpgv. Exiting."
+#~ msgstr "E: trop de porte-clés devraient être passés à gpgv. Abandon."
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr ""
+#~ "E: liste de paramètres trop longue pour Acquire::gpgv::Options. Abandon."
+
+#~ msgid ""
+#~ "The size of a MMap has already reached the defined limit of %lu bytes,"
+#~ "abort the try to grow the MMap."
+#~ msgstr ""
+#~ "La taille d'une « MMap » (carte en mémoire) a déjà atteint la limite "
+#~ "définie de %lu octets. Abandon de la tentative d'agrandir la « MMap »."
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "Erreur apparue lors du traitement de %s (NewVersion2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr ""
+#~ "Ligne %u mal formée dans la liste des sources %s (identifiant du "
+#~ "fournisseur)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "Impossible d'accéder au porte-clés : « %s »"
+
+#~ msgid "Could not patch file"
+#~ msgstr "Impossible de corriger le fichier"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "No source package '%s' picking '%s' instead\n"
+#~ msgstr "Pas de paquet source « %s ». Utilisation de « %s » à la place\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "Traitement des déclencheurs (« triggers ») pour %s"
+
+#~ msgid "Dynamic MMap ran out of room"
+#~ msgstr "La zone dynamique d'allocation mémoire n'a plus de place"
diff --git a/po/gl.po b/po/gl.po
new file mode 100644
index 000000000..9ed870497
--- /dev/null
+++ b/po/gl.po
@@ -0,0 +1,4255 @@
+# translation of apt_po_gl.po to galician
+# Galician translation of apt
+# This file is put in the public domain.
+#
+# Jacobo Tarrío <jtarrio@debian.org>, 2005, 2007, 2008.
+# mvillarino <mvillarino@users.sourceforge.net>, 2008.
+# Miguel Anxo Bouzada <mbouzada@gmail.com>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2011-05-12 15:28+0100\n"
+"Last-Translator: Miguel Anxo Bouzada <mbouzada@gmail.com>\n"
+"Language-Team: galician <proxecto@trasno.net>\n"
+"Language: gl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Poedit-Language: Galician\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Sinatura de arquivo incorrecta"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Produciuse un erro ao ler a cabeceira do membro do arquivo"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Cabeceira do membro do arquivo incorrecta %s"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Cabeceira do membro do arquivo incorrecta"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "O arquivo é curto de máis"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Non foi posíbel ler as cabeceiras dos arquivos"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Non é posíbel atopar un rexistro de autenticación para: %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Arquivo danado"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "A suma de comprobación do arquivo tar non coincide, está danado"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Tipo de cabeceira TAR %u descoñecido, membro %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Este non é un arquivo DEB correcto, falta o membro «%s»"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Produciuse un erro interno, non foi posíbel atopar o membro %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Ficheiro de control non analizábel"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Non foi posíbel escribir no ficheiro «%s»"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Non foi posíbel pechar o ficheiro %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "A ruta %s é longa de máis"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Desempaquetando %s máis dunha vez"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "O directorio %s está desviado"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "O paquete tenta escribir no destino do desvío %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "A ruta do desvío é longa de máis"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Non foi posíbel determinar o estado %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Non foi posíbel cambiar o nome de %s a %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "O directorio %s estase a substituír por algo que non é un directorio"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Non foi posíbel atopar o nodo no seu contedor hash"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "A ruta é longa de máis"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Coincidencia na sobrescritura sen versión para %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "O ficheiro %s/%s sobrescribe o do paquete %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Non é posíbel ler %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Non é posíbel determinar o estado %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "Chamouse a DropNode nun nodo aínda ligado"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Non foi posíbel atopar o elemento hash"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Non foi posíbel reservar un desvío"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Produciuse un erro interno en AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Téntase sobrescribir un desvío, %s -> %s e %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Desvío %s -> %s engadido dúas veces"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Ficheiro de configuración %s/%s duplicado"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "O directorio %s está desviado"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "O directorio %s está desviado"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "O directorio %s está desviado"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "O directorio %s está desviado"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "O directorio %s está desviado"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Non foi posíbel ler a ligazón %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "A sumas «hash» non coinciden"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "non foi posíbel cambiar o nome, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Os tamaños non coinciden"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "Operación incorrecta: %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Produciuse un erro de escritura"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"Produciuse un erro durante a verificación da sinatura. O repositorio non foi "
+"actualizado, empregaranse os ficheiros de índice anteriores. Erro de GPG: "
+"%s: %s\n"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "Produciuse un erro de GPG: %s %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"Non é posíbel atopar a entrada agardada «%s» no ficheiro de publicación "
+"(entrada sources.list incorrecta ou ficheiro con formato incorrecto)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Conflito na distribución: %s (agardábase %s mais obtívose %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Non é posíbel atopar un ficheiro para o paquete %s. Isto pode significar que "
+"ten que arranxar este paquete a man. (Falta a arquitectura)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"Os ficheiros de índices de paquetes están danados. Non hai un campo "
+"Filename: para o paquete %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Rexistro de cambios de %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Non foi posíbel atopar o controlador de métodos %s."
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "Comprobe que o paquete «dpkg-dev» estea instalado.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "O método %s non se iniciou correctamente"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "Insira o disco etiquetado: «%s» na unidade «%s» e prema Intro."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Non se atopa a lista de directorios %sparcial."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Non se atopa a lista de arquivos %sparcial."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "Non é posíbel bloquear o directorio %s"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "O tipo de ficheiros de índices «%s» non está admitido"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Non é posíbel cambiar a %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Obtendo o ficheiro %li de %li (restan %s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Obtendo o ficheiro %li de %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"O paquete %s ten que ser reinstalado, mais non é posíbel atopar o seu "
+"arquivo."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Erro, pkgProblemResolver::Resolve xerou interrupcións, isto pode estar "
+"causado por paquetes retidos."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "Non é posíbel solucionar os problemas, ten retidos paquetes rotos."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+"Non foi posíbel analizar ou abrir as listas de paquetes ou ficheiro de "
+"estado."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Pode querer executar «apt-get update» para corrixir estes problemas"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Non foi posíbel ler a lista de orixes."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Produciuse un erro na compilación da expresión regular - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Non se atopou a publicación «%s» de «%s»"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Non se atopou a versión «%s» de «%s»"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Non foi posíbel atopar a tarefa «%s»"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Non foi posíbel atopar ningún paquete pola expresión de rexistro «%s»"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Non foi posíbel atopar ningún paquete pola expresión de rexistro «%s»"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Non foi posíbel atopar o paquete %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+"Non é posíbel seleccionar distintas versións do paquete «%s» xa que é "
+"puramente virtual"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"Non é posíbel seleccionar a versión máis recente do paquete «%s» xa que é "
+"puramente virtual"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+"Non é posíbel seleccionar a versión candidata do paquete %s xa que non ten "
+"candidata"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"Non é posíbel seleccionar a versión instalada do paquete %s xa que non está "
+"instalado"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"Non é posíbel seleccionar nin a versión instalada nin a candidata do paquete "
+"«%s» xa que non ten ningunha delas"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Liña %u longa de máis na lista de orixes %s."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Desmontando o CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Empregando o punto de montaxe de CD-ROM %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Agardando polo disco...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Montando o CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Identificando... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Etiqueta almacenada: %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Buscando os ficheiros de índices no disco...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Atopáronse %zu índices de paquetes, %zu índices de orixes, %zu índices de "
+"traducións e %zu sinaturas\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Non é posíbel localizar ningún ficheiro de paquetes. É posíbel que non sexa "
+"un disco de Debian ou que a arquitectura sexa incorrecta."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Atopouse a etiqueta «%s»\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Ese non é un nome correcto, volva tentalo.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Este disco chámase: \n"
+"«%s»\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Copiando as listas de paquetes..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Escribindo a nova lista de orixes\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "As entradas da lista de orixes deste disco son:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Non é posíbel analizar %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Non é posíbel analizar o punto de montaxe %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Non foi posíbel analizar o CD-ROM"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Non se coñece a opción de liña de ordes «%c» [de %s]."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Non se entende a opción de liña de ordes %s"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "A opción de liña de ordes %s non é booleana"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "A opción %s precisa dun argumento."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+"Opción %s: A especificación de elemento de configuración debe ter un =<val>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "A opción %s precisa dun argumento enteiro, non «%s»"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "A opción «%s» é longa de máis"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "O senso %s non se entende, probe «true» ou «false»."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Operación incorrecta: %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Abreviatura de tipo «%c» descoñecida"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Abrindo o ficheiro de configuración %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Produciuse un erro de sintaxe %s:%u: O bloque comeza sen un nome."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Produciuse un erro de sintaxe %s:%u: Etiqueta mal formada"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Produciuse un erro de sintaxe %s:%u: Lixo extra despois do valor"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"Produciuse un erro de sintaxe %s:%u: Só se poden facer directivas no nivel "
+"superior"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Produciuse un erro de sintaxe %s:%u: Includes aniñados de máis"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Produciuse un erro de sintaxe %s:%u: Incluído de aquí"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Produciuse un erro de sintaxe %s:%u: Non se admite a directiva «%s»"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Produciuse un erro de sintaxe %s:%u: a directiva «clear» require unha árbore "
+"de opción como argumento"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Produciuse un erro de sintaxe %s:%u: Lixo extra á fin da liña"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Produciuse un problema ao desligar o ficheiro %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Non se empregan bloqueos para o ficheiro de bloqueo de só lectura %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Non foi posíbel abrir o ficheiro de bloqueo %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Non se empregan bloqueos para o ficheiro de bloqueo montado por NFS %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Non foi posíbel obter o bloqueo %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr "A lista de ficheiros non pode ser creada como «%s» non é un directorio"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr "Ignorando «%s» no directorio «%s» xa que non é un ficheiro regular"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+"Ignorando o ficheiro «%s» no directorio «%s» xa que non ten extensión de nome"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"Ignorando o ficheiro «%s» no directorio «%s» xa que ten unha extensión de "
+"nome incorrecta"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Agardouse por %s pero non estaba alí"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "O subproceso %s recibiu un fallo de segmento."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "O subproceso %s recibiu o sinal %u."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "O subproceso %s devolveu un código de erro (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "O subproceso %s saíu de xeito inesperado"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Produciuse un erro de lectura"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Produciuse un erro de escritura"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Produciuse un problema ao pechar o arquivo gzip %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Non foi posíbel crear o IPC do subproceso"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Non foi posíbel executar o compresor "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Non foi posíbel abrir o ficheiro %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Non foi posíbel abrir o descritor de ficheiro %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "lectura, aínda hai %lu para ler pero non queda ningún"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "escritura, aínda hai %lu para escribir pero non se puido"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Produciuse un problema ao pechar o ficheiro %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Produciuse un problema ao renomear o ficheiro %s a %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Produciuse un problema ao sincronizar o ficheiro"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Non é posíbel determinar o estado %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Non é posíbel escribir en %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Non é posíbel facer mmap sobre un ficheiro baleiro"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Non foi posíbel facer mmap de %lu bytes"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Non foi posíbel duplicar o descritor de ficheiro %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "Non é posíbel pechar mmap"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "Non é posíbel sincronizar mmap"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Non foi posíbel facer mmap de %lu bytes"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Non foi posíbel truncar o ficheiro"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"Dynamic MMap executouse fora do lugar. Incremente o tamaño de APT::Cache-"
+"Start. O valor actual é : %lu. (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"Non é posíbel aumentar o tamaño de MMap xa que o límite de %lu bytes xa foi "
+"acadado."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Non é posíbel aumentar o tamaño de MMap xa que o crecemento automático foi "
+"desactivado polo usuario."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Erro!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Feito"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... Feito"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%lid %lih %limin %lis"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%lih %limin %lis"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%limin %lis"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%lis"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Non se atopou a selección %s"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Non se puido analizar o ficheiro de publicación %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Non hai seccións no ficheiro de publicación %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Non hai entrada de Hash no ficheiro de publicación %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "A entrada «%s» no ficheiro de publicación %s non é válida"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Non é posíbel analizar o ficheiro de paquetes %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"Non é posíbel bloquear o directorio de administración (%s). Esta usandoo "
+"algún outro proceso?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr ""
+"Non é posíbel bloquear o directorio de administración (%s). É o "
+"administrador?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"dpkg interrompeuse, debe executar manualmente «%s» para corrixir o problema. "
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Non está bloqueado"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "Instalando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Configurando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Retirando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "%s completamente retirado"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "Tomando nota da desaparición de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Executando o disparador de post-instalación %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "Instalouse %s"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Falta o directorio «%s»"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "Non foi posíbel abrir o ficheiro «%s»"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Preparando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Desempaquetando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Preparandose para configurar %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Preparándose para o retirado de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "Retirouse %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Preparándose para retirar %s completamente"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "Retirouse %s completamente"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "Non é posíbel escribir en %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+"Non se escribiu ningún informe de Apport porque xa se acadou o nivel "
+"MaxReports"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "problemas de dependencias - déixase sen configurar"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Non se escribiu ningún informe de Apport porque a mensaxe de erro indica que "
+"é un error provinte dun fallo anterior."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Non se escribiu ningún informe de Apport porque a mensaxe de erro indica un "
+"erro de disco cheo."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Non se escribiu un informe de contribución porque a mensaxe de erro indica "
+"un erro de falta de memoria"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Non se escribiu ningún informe de Apport porque a mensaxe de erro indica un "
+"erro de disco cheo."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"Non se escribiu ningún informe de Apport porque a mensaxe de erro indica un "
+"erro de E/S en dpkg"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Construindo a árbore de dependencias"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Versións candidatas"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Xeración de dependencias"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Lendo a información do estado"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Non foi posíbel abrir o ficheiro de estado %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Non foi posíbel gravar o ficheiro de estado temporal %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "Escribíronse %i rexistros.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "Escribíronse %i rexistros con %i ficheiros que faltan.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "Escribíronse %i rexistros con %i ficheiros que non coinciden\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"Escribíronse %i rexistros con %i ficheiros que faltan e %i ficheiros que non "
+"coinciden\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "Non é posíbel atopar un rexistro de autenticación para: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Valor de hash non coincidente para: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "O sistema de empaquetado «%s» non está admitido"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Non é posíbel determinar un tipo de sistema de empaquetado axeitado"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "Executando dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"Non foi posíbel facer a configuración inmediata en «%s». Vexa man 5 apt.conf "
+"baixo APT::Immediate-Configure para obter máis detalles. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "Non foi posíbel abrir o ficheiro «%s»"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Esta instalación requirirá que se retire temporalmente o paquete esencial %s "
+"por mor dun bucle de Conflitos e Pre-dependencias. Isto adoita ser malo, "
+"pero se o quere facer, active a opción APT::Force-LoopBreak."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Caché de paquetes baleira"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "O ficheiro de caché de paquetes está danado"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "O ficheiro de caché de paquetes é unha versión incompatíbel"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Este APT non admite o sistema de versionado «%s»"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "A caché de paquetes construíuse para unha arquitectura diferente"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "O ficheiro de caché de paquetes está danado"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Depende"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "PreDepende"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Suxire"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Conflitos"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Recomenda"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Substitúe a"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Estraga"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Mellora"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Fai obsoleto a"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "importante"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "requirido"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "estándar"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "extra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "opcional"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "A caché ten un sistema de versionado incompatíbel"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Produciuse un erro ao procesar %s (FindPkg)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"Vaites!, superou o número de nomes de paquetes que este APT pode manexar."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Vaites!, superou o número de versións que este APT pode manexar."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Vaites!, superou o número de descricións que este APT pode manexar."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "Vaites!, superou o número de dependencias que este APT pode manexar."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Lendo as listas de paquetes"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Produciuse un erro de E/S ao gravar a caché de fontes"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "O tipo de ficheiros de índices «%s» non está admitido"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr ""
+"Rexistro incorrecto no ficheiro de preferencias %s; falta a cabeceira Package"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Non se entendeu o tipo de inmobilización %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr ""
+"Non se indicou unha prioridade (ou indicouse cero) para a inmobilización"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "«Override» %s liña %lu incorrecta (1)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Abrindo %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Liña %u mal construída na lista de orixes %s (tipo)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "O tipo «%s» non se coñece na liña %u da lista de orixes %s"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Liña %u mal construída na lista de orixes %s (tipo)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "O tipo «%s» non se coñece na liña %u da lista de orixes %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Debe introducir algúns URI «orixe» no seu ficheiro sources.list"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Non foi posíbel obter %s %s"
+
+#: apt-pkg/update.cc
+#, fuzzy
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Algúns ficheiros de índice fallaron durante a descarga. Ignoráronse, ou "
+"foron utilizados algúns antigos no seu lugar"
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calculando a anovación"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Teño:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Rcb:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr ""
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Obtivéronse %sB en %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Traballando]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Cambio de soporte: introduza o disco etiquetado\n"
+" «%s»\n"
+"na unidade «%s» e prema Intro\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Corrixindo as dependencias..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " fallou."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Non foi posíbel corrixir as dependencias."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Non foi posíbel minimizar o conxunto de anovacións"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Feito"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "Pode querer executar «apt --fix-broken install» para corrixilos."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Dependencias incumpridas. Probe «apt --fix-broken install» sen paquetes (ou "
+"especifique unha solución)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Nota, seleccione «%s» para a tarefa «%s»\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Nota, seleccione «%s» para a expresión regular «%s»\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Nota, seleccione «%s» para a expresión regular «%s»\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "O paquete %s é un paquete virtual fornecido por:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [Instalado]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [Non hai unha versión candidata]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Debería escoller un para instalar."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"O paquete %s non está dispoñíbel, mais outro paquete fai referencia a el.\n"
+"Isto pode significar que falta o paquete, está obsoleto ou só está\n"
+"dispoñíbel noutra fonte.\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Porén, os seguintes paquetes substitúeno:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "O paquete «%s» non ten unha instalación candidata"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Non se poden retirar os paquetes virtuais como «%s»\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "O paquete %s non está instalado, así que non foi retirado\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "O paquete %s non está instalado, así que non foi retirado\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Nota, seleccione «%s» no canto de «%s»\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Este APT ten poderes da Super Vaca."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Non se atopou ningún paquete"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "AVISO: Non se poden autenticar os seguintes paquetes!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Ignórase o aviso de autenticación.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Non foi posíbel autenticar algúns paquetes"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Instalar estes paquetes sen verificación?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Xurdiron problemas e empregouse -y sen --force-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Non foi posíbel determinar o espazo libre en %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Non hai espazo libre abondo en %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Non é posíbel bloquear o directorio de descargas"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Non foi posíbel instalar algúns paquetes. Isto pode significar que "
+"solicitou\n"
+"unha situación imposíbel ou, se emprega a distribución inestábel, que\n"
+"algúns paquetes solicitados aínda non se creasen ou que se movesen da "
+"entrada."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "A seguinte información pode axudar a solucionar a situación:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Paquetes estragados"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Non foi posíbel obter algúns arquivos; probe con apt-get update ou --fix-"
+"missing."
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr ""
+"Produciuse un erro interno, chamouse a InstallPackages con paquetes "
+"estragados."
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Hai que retirar paquetes mais o retirado está desactivado."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Xurdiron problemas e empregouse -y sen --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Xurdiron problemas e empregouse -y sen --force-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Produciuse un erro interno; non rematou a ordenación"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Que estraño... Os tamaños non coinciden; envíe un correo-e a apt@packages."
+"debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Ten que recibir %sB/%sB de arquivos.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Ten que recibir %sB de arquivos.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "Despois desta operación ocuparanse %sB de disco adicionais.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Despois desta operación liberaranse %sB de espazo de disco.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "Especificouse «Só triviais» mais esta non é unha operación trivial."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Si, fai o que digo!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Está a piques de facer algo perigoso.\n"
+"Para continuar escriba a frase «%s»\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Interromper."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Quere continuar?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Non foi posíbel descargar algúns ficheiros"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Completouse a descarga no modo de só descargas"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr ""
+"O emprego conxunto de --fix-missing e intercambio de discos non está admitido"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Non é posíbel corrixir os paquetes non dispoñíbeis."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Interrompendo a instalación."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"O seguinte paquete desapareceu do seu sistema e todos os \n"
+"ficheiros serán sobrescritos por outros paquetes:"
+msgstr[1] ""
+"Os seguintes paquetes desapareceron do seu sistema e todos os \n"
+"ficheiros serán sobrescritos por outros paquetes:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Nota: Isto será feito automaticamente por dpkg."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+"Non se agarda que eliminemos cousas, non se pode iniciar o Retirado "
+"automático"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Vaia, semella que o Retirado automático destruíu algo que realmente\n"
+"non debería ter feito. Informe deste erro de apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Produciuse un erro interno, o Retirado automático estragou cousas"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"O seguinte paquete foi instalado automaticamente e xa non é necesario:"
+msgstr[1] ""
+"Os seguintes paquetes foron instalados automaticamente e xa non son "
+"necesarios:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "%lu paquete foi instalado automaticamente e xa non é necesario.\n"
+msgstr[1] ""
+"%lu paquetes foron instalados automaticamente e xa non son necesarios.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Empregue «%s» para eliminalos."
+msgstr[1] "Empregue «%s» para eliminalos."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Instalaranse os seguintes paquetes extra:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Paquetes suxeridos:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Paquetes recomendados:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "Omítese %s, xa está instalado e non se especificou a anovación.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr "Omitindo %s, non está instalado e só se solicitaron as anovacións.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "A reinstalación de %s non é posíbel, non se pode descargar.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s xa é a versión máis recente.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s cambiado a instalado manualmente.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Versión seleccionada «%s» (%s) para «%s»\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Versión seleccionada «%s» (%s) para «%s» xa que «%s»\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"NOTA: Isto é só unha simulación!\n"
+" %s precisa de privilexios de administrador para executarse realmente.\n"
+" Lembre tamén que o bloqueo está desactivado,\n"
+" polo que non debe depender da relevancia da situación actual real.\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Instalado]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [Instalado]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [Instalado]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [Instalado]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "mais %s está instalado"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "mais vaise instalar %s"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "mais non é instalábel"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "mais é un paquete virtual"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "mais non se vai a instalar"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "mais non está instalado"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " ou"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Os seguintes paquetes teñen dependencias sen cumprir:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Os seguintes paquetes NOVOS hanse instalar:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Vanse RETIRAR os paquetes seguintes:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Consérvanse os seguintes paquetes:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Vanse anovar os paquetes seguintes:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Vanse REVERTER os seguintes paquetes :"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Vanse modificar os paquetes retidos seguintes:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (por mor de %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"AVISO: Retiraranse os seguintes paquetes esenciais.\n"
+"Isto NON se debe facer a menos que saiba exactamente o que está a facer!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu anovados, %lu instalados, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu reinstalados, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu revertidos, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "Vanse retirar %lu e deixar %lu sen anovar.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu non instalados ou retirados de todo.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[S/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[s/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "S"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "Debe fornecer cando menos un patrón de busca"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "O ficheiro de paquete %s está sen sincronizar."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Ficheiros de paquetes:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+"A caché está sen sincronizar, non se pode facer referencia a un ficheiro de "
+"paquetes"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Paquetes inmobilizados:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Instalado: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Candidato: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(ningún)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Táboa de versións:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Non foi posíbel atopar ningún paquete pola expresión de rexistro «%s»"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Non foi posíbel atopar ningún paquete pola expresión de rexistro «%s»"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Non foi posíbel atopar ningún paquete pola expresión de rexistro «%s»"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Tome «%s» como paquete fonte no canto de «%s»\n"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "Ignorar a versión non dispoñíbel «%s» do paquete «%s»"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Ten que especificar polo menos un paquete para obter o código fonte"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Non sé posíbel atopar un paquete fonte para %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"AVISO: o paquete «%s» mantense no sistema de control de versións «%s» en:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Empregue:\n"
+"%s\n"
+"para obter as últimas actualizacións (posibelmente non publicadas) do "
+"paquete.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Omítese o ficheiro xa descargado «%s»\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Ten que recibir %sB/%sB de arquivos de fonte.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Ten que recibir %sB de arquivos de fonte.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Obter fonte %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Non se puideron obter algúns arquivos."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Omítese o desempaquetado do código fonte xa desempaquetado en %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Fallou a orde de desempaquetado «%s».\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Comprobe que o paquete «dpkg-dev» estea instalado.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Fallou a orde de construción de «%s».\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Non é posíbel obter a información de dependencias de compilación de %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s non ten dependencias de compilación.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Ten que especificar polo menos un paquete para comprobarlle as dependencias "
+"de compilación"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Non se puideron procesar as dependencias de construción"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Non se puideron procesar as dependencias de construción"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Non foi posíbel cambiar o nome de %s a %s"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "O paquete %s versión %s ten unha dependencia incumprida:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "A orde «update» non toma argumentos"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "A orde «update» non toma argumentos"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Número total de nomes de paquetes : "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Estruturas de paquetes totais: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Paquetes normais: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Paquetes virtuais puros: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Paquetes virtuais simples: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Paquetes virtuais mixtos: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Non atopados: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Número total de versións distintas: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Número total de descricións distintas: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Número total de dependencias: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Número total de relacións versión/ficheiro: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Número total de relacións descrición/ficheiro: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Número total de asignacións provistas: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Número total de cadeas: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Espazo de reserva total: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Espazo total contabilizado: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Mostra rexistros da fonte"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Busca na lista de paquetes por unha expresión regular"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Mostra informacións brutas de dependencia para un paquete"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Mostra informacións de dependencia inversa para un paquete"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Mostra un rexistro lexíbel para o paquete"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Lista os nomes de todos os paquetes no sistema"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Mostra configuracións da política"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Forneza un nome para este disco, como «Debian 5.0.3 Disco 1»"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Insira un disco na unidade e prema Intro"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Produciuse un fallo ao montar «%s» en «%s»"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Repita este proceso para o resto de CD do seu conxunto."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Os argumentos non van en parellas"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Uso: apt-config [opcións] orde\n"
+"\n"
+"apt-config é unha ferramenta simple para ler a configuración de APT\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Uso: apt-extracttemplates fich1 [fich2 ...]\n"
+"\n"
+"apt-extracttemplates é unha ferramenta para extraer información\n"
+"de configuración e patróns dos paquetes debian\n"
+"\n"
+"Opcións:\n"
+" -h Este texto de axuda\n"
+" -t Estabelece o directorio temporal\n"
+" -c=? Le este ficheiro de configuración\n"
+" -o=? Estabelece unha opción de configuración, por exemplo: -o dir::cache=/"
+"tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Non é posíbel obter a versión de debconf. Debconf está instalado?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Non foi posíbel atopar o paquete %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s está estabelecido para a súa instalación automática.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Produciuse un erro interno, o solucionador interno estragou cousas"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Módulos admitidos:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Uso: apt-get [opcións] orde\n"
+" apt-get [opcións] install|remove paquete1 [paquete2 ...]\n"
+" apt-get [opcións] source paquete1 [paquete2 ...]\n"
+"\n"
+"apt-get é unha sinxela interface de liña de ordes para a descarga e\n"
+"instalación de paquetes. As ordes empregadas con máis frecuencia\n"
+"son actualizadas e instaladas. \n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Recupera unha nova lista de paquetes"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Executa unha actualización"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Instala novos paquetes (o paquete é libc6 non libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Retira paquetes"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Retira paquetes e ficheiros de configuración"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Retira automaticamente todos os paquetes sen uso"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Actualiza a distribución, vexa apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Segue as seleccións de dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Configura as dependencias para paquetes de fontes"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Borra os arquivos de ficheiros"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Borra os arquivos de ficheiros antigos"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Comproba que non haxa dependencias sen cumprir"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Descarga os arquivos de fontes"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "Descarga o paquete binario no directorio actual"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "Descarga e mostra o rexistro de cambios para o paquete proposto"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "Ten que especificar polo menos un paquete para obter o código fonte"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Uso: apt-extracttemplates fich1 [fich2 ...]\n"
+"\n"
+"apt-extracttemplates é unha ferramenta para extraer información\n"
+"de configuración e patróns dos paquetes debian\n"
+"\n"
+"Opcións:\n"
+" -h Este texto de axuda\n"
+" -t Estabelece o directorio temporal\n"
+" -c=? Le este ficheiro de configuración\n"
+" -o=? Estabelece unha opción de configuración, por exemplo: -o dir::cache=/"
+"tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Uso: apt-extracttemplates fich1 [fich2 ...]\n"
+"\n"
+"apt-extracttemplates é unha ferramenta para extraer información\n"
+"de configuración e patróns dos paquetes debian\n"
+"\n"
+"Opcións:\n"
+" -h Este texto de axuda\n"
+" -t Estabelece o directorio temporal\n"
+" -c=? Le este ficheiro de configuración\n"
+" -o=? Estabelece unha opción de configuración, por exemplo: -o dir::cache=/"
+"tmp\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "mais non está instalado"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s cambiado a instalado manualmente.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s está estabelecido para a súa instalación automática.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s xa é a versión máis recente.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s xa é a versión máis recente.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "%s cambiado a instalado manualmente.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Non foi posíbel abrir %s"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "%s está estabelecido para a súa instalación automática.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "Comprobe que o paquete «dpkg-dev» estea instalado.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "%s está estabelecido para a súa instalación automática.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "%s cambiado a instalado manualmente.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Rexistro de paquete descoñecido!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "Lendo as listas de paquetes"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "Paquetes inmobilizados:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Paquetes estragados"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "%s cambiado a instalado manualmente.\n"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "Lendo a información do estado"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Configuración predeterminada incorrecta!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Prema Intro para continuar."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Quere borrar os ficheiros .deb descargados anteriormente?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr ""
+"Ocorreron algúns erros ao desempaquetar, Os paquetes que se instalaron"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "serán configurados, Isto pode dar erros de duplicación"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"ou erros causados por dependencias incumpridas. Isto é normal, só os erros"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"que hai enriba desta mensaxe son importantes. Arránxeos e volva a instalar."
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Mesturando a información sobre paquetes dispoñíbeis"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "A lista de extensións de paquetes é longa de máis"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Produciuse un erro ao procesar o directorio %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "A lista de extensións de fontes é longa de máis"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Produciuse un erro ao gravar a cabeceira no ficheiro de contido"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Produciuse un erro ao procesar o contido %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Emprego: apt-ftparchive [opcións] orde\n"
+"Ordes: packages rutabinaria [fichoverride [prefixoruta]]\n"
+" sources rutafontes [fichoverride [prefixoruta]]\n"
+" contents ruta\n"
+" release ruta\n"
+" generate config [grupos]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive xera ficheiros de índices para arquivos de Debian. Admite\n"
+"varios estilos de xeración, de totalmente automática a substitutos "
+"funcionais\n"
+"de dpkg-scanpackages e dpkg-scansources\n"
+"\n"
+"apt-ftparchive xera ficheiros Packages dunha árbore de .debs. O ficheiro\n"
+"Packages ten o contido de todos os campos de control de cada paquete, así\n"
+"coma a suma MD5 e o tamaño do ficheiro. Admitese un ficheiro de «overrides»\n"
+"para forzar o valor dos campos Priority e Section.\n"
+"\n"
+"De xeito semellante, apt-ftparchive xera ficheiros Sources dunha árbore de\n"
+".dscs. Pódese empregar a opción --source-override para especificar un "
+"ficheiro\n"
+"de «overrides» para fontes.\n"
+"\n"
+"As ordes «packages» e «sources» deberían executarse na raíz da árbore.\n"
+"«Rutabinaria» debería apuntar á base da busca recursiva e o ficheiro\n"
+"«fichoverride» debería conter os modificadores de «override». «Prefixoruta»\n"
+"engádese aos campos de nomes de ficheiros se está presente. Un exemplo\n"
+"de emprego do arquivo de Debian:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Opcións:\n"
+" -h Este texto de axuda\n"
+" --md5 Controla a xeración de MD5\n"
+" -s=? Ficheiro de «override» de fontes\n"
+" -q Non produce ningunha saída por pantalla\n"
+" -d=? Escolle a base de datos de caché opcional\n"
+" --no-delink Activa o modo de depuración de desligado\n"
+" --contents Controla a xeración do ficheiro de contido\n"
+" -c=? Le este ficheiro de configuración\n"
+" -o=? Estabelece unha opción de configuración"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Non coincide ningunha selección"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Faltan ficheiros no grupo de ficheiros de paquetes «%s»"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "A base de datos estaba danada, cambiouse o nome do ficheiro a %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "A base de datos é antiga, tentando anovar %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"O formato da base de datos non é correcto. Se a anovou desde unha versión "
+"antiga de apt, retirea e volva a crear a base de datos"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Non é posíbel abrir o ficheiro de base de datos %s: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Non foi posíbel ler a ligazón %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "O arquivo non ten un rexistro de control"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Non é posíbel obter un cursor"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Non foi posíbel reservar memoria"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Algoritmo de compresión «%s» descoñecido"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "A saída comprimida %s precisa dun conxunto de compresión"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Non foi posíbel crear a canle IPC ao subproceso"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Non foi posíbel facer a bifurcación"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Fillo de compresión"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Produciuse un erro interno, non foi posíbel crear %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Produciuse un fallo na E/S do subproceso/ficheiro"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Non foi posíbel ler ao calcular o MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Non é posíbel puido abrir %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "«Override» %s liña %lu incorrecta (1)"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Non foi posíbel ler o ficheiro de «override» %s"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "«Override» %s liña %lu incorrecta (1)"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "«Override» %s liña %lu incorrecta (2)"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "«Override» %s liña %lu incorrecta (3)"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "A: non é posíbel ler o directorio %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "A: non é posíbel atopar %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "A: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: os erros aplícanse ao ficheiro "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Non foi posíbel solucionar %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Fallou o percorrido da árbore"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Non foi posíbel abrir %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DesLig %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Non foi posíbel ligar %s con %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " Acadouse o límite de desligado de %sB.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "O arquivo non tiña un campo Package"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s non ten unha entrada de «override»\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " O mantedor de %s é %s, non %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s non ten unha entrada de «override» de código fonte\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s tampouco ten unha entrada de «override» de binarios\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Agardando polas cabeceiras"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "O servidor HTTP enviou unha cabeceira de resposta incorrecta"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Liña de cabeceira incorrecta"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr ""
+"O servidor HTTP enviou unha cabeceira cunha lonxitude de contido incorrecta"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "O servidor HTTP enviou unha cabeceira cun rango de contido incorrecto"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Este servidor HTTP ten a compatibilidade de rangos estragada"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Formato de datos descoñecido"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Datos da cabeceira incorrectos"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Produciuse un fallo na conexión"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Produciuse un erro interno"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Non é posíbel ler a base de datos do CD-ROM %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Empregue apt-cdrom para que APT poida recoñecer este CD-ROM. Non foi posíbel "
+"empregar apt-get update para engadir un CD-ROM"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "CD-ROM incorrecto"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Non é posíbel desmontar o CD-ROM de %s, pode estarse empregando aínda."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Non se atopou o disco"
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Non se atopou o ficheiro"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Conectando a %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Non foi posíbel crear un socket para %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Non é posíbel iniciar a conexión a %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Non foi posíbel conectar a %s:%s (%s), a conexión esgotou o tempo"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Fallou"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Non foi posíbel conectar a %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Conectando a %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Non foi posíbel atopar «%s»"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Produciuse un fallo temporal ao buscar «%s»"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Aconteceu algo malo, buscando «%s:%s» (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Aconteceu algo malo, buscando «%s:%s» (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Non é posíbel conectar %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Non foi posíbel determinar o estado"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "URI incorrecto, os URI locais non deben comezar por //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Identificándose"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Non é posíbel determinar o nome do outro extremo"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Non é posíbel determinar o nome local"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "O servidor rexeitou a conexión e dixo: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "Fallou a orde USER, o servidor dixo: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "Fallou a orde PASS, o servidor dixo: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Especificouse un servidor proxy pero non un script de conexión, Acquire::"
+"ftp::ProxyLogin está baleiro."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Fallou a orde do script de acceso «%s», o servidor dixo: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "Fallou a orde TYPE, o servidor dixo: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Esgotouse o tempo para a conexión"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "O servidor pechou a conexión"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Unha resposta desbordou o búfer."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Dano no protocolo"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Non é posíbel crear un socket"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr ""
+"Non é posíbel conectar o socket de datos, o tempo esgotouse para a conexión"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Non é posíbel conectar o socket pasivo."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo non puido obter un socket no que atender"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Non é posíbel ligar un socket"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Non é posíbel escoitar no socket"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Non é posíbel determinar o nome do socket"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Non é posíbel enviar a orde PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Familia de enderezos %u (AF_*) descoñecida"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "Produciuse un fallou na orde EPRT, o servidor dixo: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "A conexión do socket de datos esgotou o tempo"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Non é posíbel aceptar a conexión"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Xurdiu un problema ao calcular o hash do ficheiro"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Non é posíbel obter o ficheiro, o servidor dixo «%s»"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "O socket de datos esgotou o tempo"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Produciuse un fallou na transferencia de datos, o servidor dixo «%s»"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Petición"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Non é posíbel chamar a "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Atopouse polo menos unha sinatura incorrecta."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Erro interno: Sinatura correcta, pero non foi posíbel determinar a pegada "
+"dixital da chave"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Non é posíbel executar «apt-key» para verificar a sinatura (Está instalado "
+"gnupg?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Produciuse un erro descoñecido ao executar apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "As seguintes sinaturas non eran correctas:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Non se puideron verificar as seguintes sinaturas porque a chave pública non "
+"está dispoñíbel:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Produciuse un erro ao escribir no ficheiro"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr ""
+"Produciuse un erro ao ler do servidor. O extremo remoto pechou a conexión"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Produciuse un erro ao ler do servidor"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Produciuse un erro ao escribir nun ficheiro"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Fallou a chamada a select"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "A conexión esgotou o tempo"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Produciuse un erro ao escribir no ficheiro de saída"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Non se atopou ningún ficheiro de replica «%s» "
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Non é posíbel ler o ficheiro de replica «%s»"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Non é posíbel ler o ficheiro de replica «%s»"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Replica: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Non foi posíbel estabelecer a hora de modificación"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "A conexión pechouse prematuramente"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "Os ficheiros baleiros non poden ser arquivadores válidos"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Dependencias incumpridas. Probe a empregar --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr "Pode querer executar «apt --fix-broken install» para corrixir isto:"
+
+#~ msgid "(not found)"
+#~ msgstr "(non se atopou)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Inmobilizado: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr ""
+#~ "Non hai unha chave pública dispoñíbel para os seguintes ID de chave:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "O directorio %s está desviado"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "A dependencia «%s» de %s non se pode satisfacer porque non se pode atopar "
+#~ "o paquete %s"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "A dependencia «%s» de %s non se pode satisfacer porque non se pode atopar "
+#~ "o paquete %s"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Non foi posíbel satisfacer a dependencia «%s» de %s: O paquete instalado "
+#~ "%s é novo de máis"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "A dependencia «%s» de %s non se pode satisfacer porque ningunha versión "
+#~ "dispoñíbel do paquete %s satisfai os requirimentos de versión"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "A dependencia «%s» de %s non se pode satisfacer porque non se pode atopar "
+#~ "o paquete %s"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Non foi posíbel satisfacer a dependencia «%s» de %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Non se puideron satisfacer as dependencias de construción de %s."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Xurdiu un problema ao desligar %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Non foi posíbel desligar %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Uso: apt-cache [opcións] orde\n"
+#~ " apt-cache [opcións] show paquete1 [paquete2 ...]\n"
+#~ "\n"
+#~ "apt-cache é unha ferramenta de baixo nivel usada para consultar\n"
+#~ "informacións dos ficheiros binarios da cache do APT\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Options:\n"
+#~ " -h Este texto de axuda.\n"
+#~ " -p=? A cache do paquete.\n"
+#~ " -s=? A cache da fonte.\n"
+#~ " -q Desactiva o indicador de progreso.\n"
+#~ " -i Mostra soamente dependencias importantes para a orde unmet.\n"
+#~ " -c=? Ler este ficheiro de configuración\n"
+#~ " -o=? Define unha opción arbitraria de configuración, ex. -o dir::cache=/"
+#~ "tmp\n"
+#~ "Vexa a páxina de manual apt-cache(8) e apt.conf(5) para obter mais "
+#~ "información.\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Opcións:\n"
+#~ " -h Este texto de axuda.\n"
+#~ " -c=? Le este ficheiro de configuración\n"
+#~ " -o=? Estabelece unha opción de configuración, por exemplo: -o dir::"
+#~ "cache=/tmp\n"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Emprego: apt-sortpkgs [opcións] fich1 [fich2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs é unha ferramenta simple para ordenar ficheiros de "
+#~ "paquetes.\n"
+#~ "A opción -s emprégase para indicar o tipo de ficheiro que é.\n"
+#~ "\n"
+#~ "Opcións:\n"
+#~ " -h Este texto de axuda\n"
+#~ " -s Emprega ordenamento por ficheiros fonte\n"
+#~ " -c=? Le este ficheiro de configuración\n"
+#~ " -o=? Estabelece unha opción de configuración; por exemplo, -o dir::"
+#~ "cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "O proceso fillo fallou"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Ten que especificar polo menos un paquete para obter o código fonte"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Non foi posíbel crear as canles"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Non foi posíbel executar gzip "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s para %s compilado en %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Non foi posíbel crear o FILE*"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Liña %lu mal construída na lista de orixes %s (análise de URI)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "Liña %lu mal construída na lista de fontes %s ([opción] non analizábel)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr ""
+#~ "Liña %lu mal construída na lista de fontes %s ([opción] demasiado curta)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr ""
+#~ "Liña %lu mal construída na lista de fontes %s ([%s] non é unha asignación)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "Liña %lu mal construída na lista de fontes %s ([%s] non ten chave)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "Liña %lu mal construída na lista de fontes %s ([%s] a chave %s non ten "
+#~ "valor)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Liña %lu mal construída na lista de orixes %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Liña %lu mal construída na lista de orixes %s (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Liña %lu mal construída na lista de orixes %s (análise de URI)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "Liña %lu mal construída na lista de orixes %s (dist absoluta)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "Liña %lu mal construída na lista de orixes %s (análise de dist)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr ""
+#~ "Non foi posíbel atopar o paquete %s %s ao procesar as dependencias de "
+#~ "ficheiros"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Non foi posíbel atopar a lista de paquetes fonte %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Recollendo as provisións de ficheiros"
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr ""
+#~ "Non é posíbel ler a suma de comprobación para «%s» no ficheiro de "
+#~ "publicación"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "O bloque de provedor %s non contén unha pegada dixital"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Espazo total de versións de dependencias: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Non hai espazo libre abondo en %s"
+
+#~ msgid "Done"
+#~ msgstr "Feito"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Non ha ningún chaveiro instalado en %s."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Produciuse un erro interno, AllUpgrade estragou cousas"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s non é un paquete DEB válido."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Empregando o punto de montaxe de CD-ROMs %s\n"
+#~ "Montando o CD-ROM\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Non foi posíbel actualizar %s con mmap e co ficheiro usado na operación - "
+#~ "a actualización semella estar danada."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Non foi posíbel actualizar %s con mmap e (mais non hai un fallo "
+#~ "específico de mmap) - a actualización semella estar danada."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr "Ignorase a versión de destino «%s» non dispoñíbel do paquete «%s»"
+
+#~ msgid "Downloading %s %s"
+#~ msgstr "Descargando %s %s"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Este non é un arquivo DEB correcto, non ten un membro «%s», «%s» ou «%s»"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "A MD5Sum non coincide"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Non é posíbel atopar un ficheiro para o paquete %s. Isto pode significar "
+#~ "que ten que arranxar este paquete a man."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Non foi posíbel escribir no rexistro, a chamada a openpty() fallou (/dev/"
+#~ "pts non estaba montado?)\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Omitindo o ficheiro inexistente %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Non foi posíbel retirar %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Non é posíbel crear %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Non foi posíbel atopar %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr ""
+#~ "Os directorios info e temp teñen que estar no mesmo sistema de ficheiros"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Non foi posíbel cambiar ao directorio de administración %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Produciuse un erro interno ao obter un nome de paquete"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Lendo a lista de ficheiros"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Non foi posíbel abrir o ficheiro de listas «%sinfo/%s». Se non pode "
+#~ "recuperalo, baléireo e reinstale a mesma versión do paquete."
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Non foi posíbel ler o ficheiro de listas %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Produciuse un erro interno ao obter un nodo"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Non foi posíbel abrir o ficheiro de desvíos %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "O ficheiro de desvíos está danado"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Liña incorrecta no ficheiro de desvíos: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Produciuse un erro interno ao engadir un desvío"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Antes ten que inicializarse a caché de paquetes"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Non foi posíbel atopar unha cabeceira Package:, desprazamento %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr ""
+#~ "Sección ConfFile incorrecta no ficheiro de estado. Desprazamento %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Produciuse un erro ao analizar o MD5. Desprazamento %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Non foi posíbel cambiar a %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Non foi posíbel atopar un ficheiro de control correcto"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Non foi posíbel abrir unha canle para %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Erro de lectura do proceso %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Obtivose unha soa liña de cabeceira en %u caracteres"
+
+#~ msgid "Note: This is done automatic and on purpose by dpkg."
+#~ msgstr "Nota: Isto será feito automaticamente por dpkg."
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "«Override» %s liña %lu incorrecta (1)"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "«Override» %s liña %lu incorrecta (2)"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "«Override» %s liña %lu incorrecta (3)"
+
+#~ msgid "decompressor"
+#~ msgstr "descompresor"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "lectura, aínda hai %lu para ler pero non queda ningún"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "escritura, aínda hai %lu para escribir pero non se puido"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "Non foi posíbel realizar a configuración inmediata no paquete, aínda sen "
+#~ "desempaquetar, «%s». Vexa man 5 apt.conf baixo APT::Immediate-Configure "
+#~ "para obter máis detalles."
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Produciuse un erro ao procesar %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Produciuse un erro ao procesar %s (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Produciuse un erro ao procesar %s (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Produciuse un erro ao procesar %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Produciuse un erro ao procesar %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Produciuse un erro ao procesar %s (NewVersion%d)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Produciuse un erro ao procesar %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Produciuse un erro ao procesar %s (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Produciuse un erro ao procesar %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Produciuse un erro ao procesar %s (CollectFileProvides)"
+
+#, fuzzy
+#~| msgid "Internal error, could not locate member %s"
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Produciuse un erro interno, non foi posíbel atopar o membro %s"
+
+#~ msgid "Release file expired, ignoring %s (invalid since %s)"
+#~ msgstr ""
+#~ "Caducou o ficheiro de publicación, ignorando %s (non válido desde %s)"
+
+#~ msgid " %4i %s\n"
+#~ msgstr "\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "\n"
diff --git a/po/he.po b/po/he.po
new file mode 100644
index 000000000..592ca87c0
--- /dev/null
+++ b/po/he.po
@@ -0,0 +1,2836 @@
+# English translation of apt_po.
+# This file is put in the public domain.
+# Lior Kaplan <webmaster@guides.co.il>, 2004.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 0.5.25\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2010-01-01 19:13+0100\n"
+"PO-Revision-Date: 2004-06-10 19:58+0300\n"
+"Last-Translator: Lior Kaplan <webmaster@guides.co.il>\n"
+"Language: he\n"
+"Language-Team: Hebrew\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: cmdline/apt-cache.cc:141
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "לחבילה %s בגרסה %s יש תלויות ×©×œ× × ×¢× ×•:\n"
+
+#: cmdline/apt-cache.cc:181 cmdline/apt-cache.cc:550 cmdline/apt-cache.cc:644
+#: cmdline/apt-cache.cc:797 cmdline/apt-cache.cc:1021
+#: cmdline/apt-cache.cc:1423 cmdline/apt-cache.cc:1575
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "×œ× ×ž×¦×œ×™×— ל×תר ×ת החבילה %s"
+
+#: cmdline/apt-cache.cc:245
+msgid "Total package names: "
+msgstr ""
+
+#: cmdline/apt-cache.cc:285
+msgid " Normal packages: "
+msgstr "חבילות נורמליות:"
+
+#: cmdline/apt-cache.cc:286
+msgid " Pure virtual packages: "
+msgstr "חבילות וירטו×ליות לחלוטין:"
+
+#: cmdline/apt-cache.cc:287
+msgid " Single virtual packages: "
+msgstr ""
+
+#: cmdline/apt-cache.cc:288
+msgid " Mixed virtual packages: "
+msgstr ""
+
+#: cmdline/apt-cache.cc:289
+msgid " Missing: "
+msgstr "חסרות:"
+
+#: cmdline/apt-cache.cc:291
+msgid "Total distinct versions: "
+msgstr ""
+
+#: cmdline/apt-cache.cc:293
+msgid "Total distinct descriptions: "
+msgstr ""
+
+#: cmdline/apt-cache.cc:295
+msgid "Total dependencies: "
+msgstr ""
+
+#: cmdline/apt-cache.cc:298
+msgid "Total ver/file relations: "
+msgstr ""
+
+#: cmdline/apt-cache.cc:300
+msgid "Total Desc/File relations: "
+msgstr ""
+
+#: cmdline/apt-cache.cc:302
+msgid "Total Provides mappings: "
+msgstr ""
+
+#: cmdline/apt-cache.cc:314
+msgid "Total globbed strings: "
+msgstr ""
+
+#: cmdline/apt-cache.cc:328
+msgid "Total dependency version space: "
+msgstr ""
+
+#: cmdline/apt-cache.cc:333
+msgid "Total slack space: "
+msgstr ""
+
+#: cmdline/apt-cache.cc:341
+msgid "Total space accounted for: "
+msgstr ""
+
+#: cmdline/apt-cache.cc:469 cmdline/apt-cache.cc:1221
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "קובץ החבילה %s ×œ× ×ž×¡×•× ×›×¨×Ÿ."
+
+#: cmdline/apt-cache.cc:1297
+msgid "You must give exactly one pattern"
+msgstr "×תה חייב לתת בדיוק תבנית ×חת"
+
+#: cmdline/apt-cache.cc:1451
+msgid "No packages found"
+msgstr "×œ× × ×ž×¦×ו חבילות"
+
+#: cmdline/apt-cache.cc:1528
+msgid "Package files:"
+msgstr "קבצי חבילה:"
+
+#: cmdline/apt-cache.cc:1535 cmdline/apt-cache.cc:1622
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+
+#. Show any packages have explicit pins
+#: cmdline/apt-cache.cc:1549
+msgid "Pinned packages:"
+msgstr "חבילות נעוצות:"
+
+#: cmdline/apt-cache.cc:1561 cmdline/apt-cache.cc:1602
+msgid "(not found)"
+msgstr "(×œ× × ×ž×¦×)"
+
+#. Installed version
+#: cmdline/apt-cache.cc:1582
+msgid " Installed: "
+msgstr "מותקן:"
+
+#: cmdline/apt-cache.cc:1584 cmdline/apt-cache.cc:1592
+msgid "(none)"
+msgstr "(none)"
+
+#. Candidate Version
+#: cmdline/apt-cache.cc:1589
+msgid " Candidate: "
+msgstr "מועמדי×:"
+
+#: cmdline/apt-cache.cc:1599
+msgid " Package pin: "
+msgstr "נעץ חבילה:"
+
+#. Show the priority tables
+#: cmdline/apt-cache.cc:1608
+msgid " Version table:"
+msgstr ""
+
+#: cmdline/apt-cache.cc:1718 cmdline/apt-cdrom.cc:134 cmdline/apt-config.cc:70
+#: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:547
+#: cmdline/apt-get.cc:2665 cmdline/apt-sortpkgs.cc:144
+#, fuzzy, c-format
+msgid "%s %s for %s compiled on %s %s\n"
+msgstr "%s %s בשביל %s %s קומפל על %s %s\n"
+
+#: cmdline/apt-cache.cc:1725
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] add file1 [file2 ...]\n"
+" apt-cache [options] showpkg pkg1 [pkg2 ...]\n"
+" apt-cache [options] showsrc pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache is a low-level tool used to manipulate APT's binary\n"
+"cache files, and query information from them\n"
+"\n"
+"Commands:\n"
+" add - Add a package file to the source cache\n"
+" gencaches - Build both the package and source cache\n"
+" showpkg - Show some general information for a single package\n"
+" showsrc - Show source records\n"
+" stats - Show some basic statistics\n"
+" dump - Show the entire file in a terse form\n"
+" dumpavail - Print an available file to stdout\n"
+" unmet - Show unmet dependencies\n"
+" search - Search the package list for a regex pattern\n"
+" show - Show a readable record for the package\n"
+" depends - Show raw dependency information for a package\n"
+" rdepends - Show reverse dependency information for a package\n"
+" pkgnames - List the names of all packages in the system\n"
+" dotty - Generate package graphs for GraphViz\n"
+" xvcg - Generate package graphs for xvcg\n"
+" policy - Show policy settings\n"
+"\n"
+"Options:\n"
+" -h This help text.\n"
+" -p=? The package cache.\n"
+" -s=? The source cache.\n"
+" -q Disable progress indicator.\n"
+" -i Show only important deps for the unmet command.\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+"See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc:77
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc:92
+msgid "Please insert a Disc in the drive and press enter"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc:114
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr ""
+
+#: cmdline/apt-config.cc:41
+msgid "Arguments not in pairs"
+msgstr ""
+
+#: cmdline/apt-config.cc:76
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is a simple tool to read the APT config file\n"
+"\n"
+"Commands:\n"
+" shell - Shell mode\n"
+" dump - Show the configuration\n"
+"\n"
+"Options:\n"
+" -h This help text.\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc:98
+#, c-format
+msgid "%s not a valid DEB package."
+msgstr "%s ×”×•× ×œ× ×—×‘×™×œ×ª DEB תקינה."
+
+#: cmdline/apt-extracttemplates.cc:232
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is a tool to extract config and template info\n"
+"from debian packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" -t Set the temp dir\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:830
+#, c-format
+msgid "Unable to write to %s"
+msgstr "×œ× ×ž×¦×œ×™×— לכתוב ל-%s"
+
+#: cmdline/apt-extracttemplates.cc:310
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "×œ× ×ž×¦×œ×™×— לקבל ×ת גרסת debconf. ×”×× debconf מותקן?"
+
+#: ftparchive/apt-ftparchive.cc:164 ftparchive/apt-ftparchive.cc:338
+msgid "Package extension list is too long"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc:166 ftparchive/apt-ftparchive.cc:180
+#: ftparchive/apt-ftparchive.cc:203 ftparchive/apt-ftparchive.cc:253
+#: ftparchive/apt-ftparchive.cc:267 ftparchive/apt-ftparchive.cc:289
+#, c-format
+msgid "Error processing directory %s"
+msgstr "שגי××” בעיבוד ספריה %s"
+
+#: ftparchive/apt-ftparchive.cc:251
+msgid "Source extension list is too long"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc:368
+msgid "Error writing header to contents file"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc:398
+#, c-format
+msgid "Error processing contents %s"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc:553
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc:759
+msgid "No selections matched"
+msgstr "×ין הת×מות"
+
+#: ftparchive/apt-ftparchive.cc:832
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "חלק ×ž×”×§×‘×¦×™× ×—×¡×¨×™× ×‘×§×‘×•×¦×ª קבצי החבילה `%s'"
+
+#: ftparchive/cachedb.cc:43
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "מסד ×”× ×ª×•× ×™× ×ינו תקין, הקובץ הועבר ל-%s.old"
+
+#: ftparchive/cachedb.cc:61
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "מסד ×”× ×ª×•× ×™× ×™×©×Ÿ, מנסה לשדרג ל-%s"
+
+#: ftparchive/cachedb.cc:72
+msgid ""
+"DB format is invalid. If you upgraded from a older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+
+#: ftparchive/cachedb.cc:77
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "×œ× ×ž×¦×œ×™×— לפתוח ×ת קובץ מסד ×”× ×ª×•× ×™× %s: %s"
+
+#: ftparchive/cachedb.cc:123 apt-inst/extract.cc:178 apt-inst/extract.cc:190
+#: apt-inst/extract.cc:207 apt-inst/deb/dpkgdb.cc:117
+#, c-format
+msgid "Failed to stat %s"
+msgstr ""
+
+#: ftparchive/cachedb.cc:238
+msgid "Archive has no control record"
+msgstr ""
+
+#: ftparchive/cachedb.cc:444
+msgid "Unable to get a cursor"
+msgstr ""
+
+#: ftparchive/writer.cc:76
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "W: ×œ× ×ž×¦×œ×™×— ×œ×§×¨×•× ×ת הספריה %s\n"
+
+#: ftparchive/writer.cc:81
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr ""
+
+#: ftparchive/writer.cc:132
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc:134
+msgid "W: "
+msgstr "W: "
+
+#: ftparchive/writer.cc:141
+msgid "E: Errors apply to file "
+msgstr "E: שגי×ות תקפות לקובץ"
+
+#: ftparchive/writer.cc:158 ftparchive/writer.cc:188
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "כשלון בפענוח %s"
+
+#: ftparchive/writer.cc:170
+msgid "Tree walking failed"
+msgstr ""
+
+#: ftparchive/writer.cc:195
+#, c-format
+msgid "Failed to open %s"
+msgstr "כשלון בפתיחת %s"
+
+#: ftparchive/writer.cc:254
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr ""
+
+#: ftparchive/writer.cc:262
+#, c-format
+msgid "Failed to readlink %s"
+msgstr ""
+
+#: ftparchive/writer.cc:266
+#, c-format
+msgid "Failed to unlink %s"
+msgstr ""
+
+#: ftparchive/writer.cc:273
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** כשלון בקישור %s ל-%s"
+
+#: ftparchive/writer.cc:283
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr ""
+
+#: ftparchive/writer.cc:388
+msgid "Archive had no package field"
+msgstr ""
+
+#: ftparchive/writer.cc:396 ftparchive/writer.cc:627
+#, c-format
+msgid " %s has no override entry\n"
+msgstr ""
+
+#: ftparchive/writer.cc:457 ftparchive/writer.cc:715
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr "המתחזק של %s ×”×•× %s ×•×œ× %s\n"
+
+#: ftparchive/writer.cc:637
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr ""
+
+#: ftparchive/writer.cc:641
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr ""
+
+#: ftparchive/contents.cc:321
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr ""
+
+#: ftparchive/contents.cc:358 ftparchive/contents.cc:389
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - כשלון בהקצ×ת זיכרון"
+
+#: ftparchive/override.cc:34 ftparchive/override.cc:142
+#, c-format
+msgid "Unable to open %s"
+msgstr "×œ× ×ž×¦×œ×™×— לפתוח ×ת %s"
+
+#: ftparchive/override.cc:60 ftparchive/override.cc:166
+#, c-format
+msgid "Malformed override %s line %lu #1"
+msgstr ""
+
+#: ftparchive/override.cc:74 ftparchive/override.cc:178
+#, c-format
+msgid "Malformed override %s line %lu #2"
+msgstr ""
+
+#: ftparchive/override.cc:88 ftparchive/override.cc:191
+#, c-format
+msgid "Malformed override %s line %lu #3"
+msgstr ""
+
+#: ftparchive/override.cc:127 ftparchive/override.cc:201
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr ""
+
+#: ftparchive/multicompress.cc:72
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "'%s' ××œ×’×•×¨×™×ª× ×“×—×™×” ×œ× ×™×“×•×¢"
+
+#: ftparchive/multicompress.cc:102
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr ""
+
+#: ftparchive/multicompress.cc:169 methods/rsh.cc:91
+msgid "Failed to create IPC pipe to subprocess"
+msgstr ""
+
+#: ftparchive/multicompress.cc:195
+msgid "Failed to create FILE*"
+msgstr ""
+
+#: ftparchive/multicompress.cc:198
+msgid "Failed to fork"
+msgstr "כשלון בביצוע fork"
+
+#: ftparchive/multicompress.cc:212
+msgid "Compress child"
+msgstr ""
+
+#: ftparchive/multicompress.cc:235
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "שגי××” פנימית, כלשון ביצירת %s"
+
+#: ftparchive/multicompress.cc:286
+msgid "Failed to create subprocess IPC"
+msgstr ""
+
+#: ftparchive/multicompress.cc:321
+msgid "Failed to exec compressor "
+msgstr ""
+
+#: ftparchive/multicompress.cc:360
+msgid "decompressor"
+msgstr ""
+
+#: ftparchive/multicompress.cc:403
+msgid "IO to subprocess/file failed"
+msgstr ""
+
+#: ftparchive/multicompress.cc:455
+msgid "Failed to read while computing MD5"
+msgstr ""
+
+#: ftparchive/multicompress.cc:472
+#, c-format
+msgid "Problem unlinking %s"
+msgstr ""
+
+#: ftparchive/multicompress.cc:487 apt-inst/extract.cc:185
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "כשלון בשינוי ×”×©× %s ל-%s"
+
+#: cmdline/apt-get.cc:127
+msgid "Y"
+msgstr "Y"
+
+#: cmdline/apt-get.cc:149 cmdline/apt-get.cc:1730
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr ""
+
+#: cmdline/apt-get.cc:244
+msgid "The following packages have unmet dependencies:"
+msgstr "לחבילות הב×ות יש תלויות ×©×œ× × ×¢× ×•:"
+
+#: cmdline/apt-get.cc:334
+#, c-format
+msgid "but %s is installed"
+msgstr "×בל %s מותקנת"
+
+#: cmdline/apt-get.cc:336
+#, c-format
+msgid "but %s is to be installed"
+msgstr "×בל %s הולכת להיות מותקנת"
+
+#: cmdline/apt-get.cc:343
+msgid "but it is not installable"
+msgstr "×בל ×”×™× ××™× ×” ניתנת להתקנה"
+
+#: cmdline/apt-get.cc:345
+msgid "but it is a virtual package"
+msgstr "×בל ×”×™× ×—×‘×™×œ×” וירטו×לית"
+
+#: cmdline/apt-get.cc:348
+msgid "but it is not installed"
+msgstr "×בל ×”×™× ×œ× ×ž×•×ª×§× ×ª"
+
+#: cmdline/apt-get.cc:348
+msgid "but it is not going to be installed"
+msgstr "×בל ×”×™× ××™× ×” הולכת להיות מותקנת"
+
+#: cmdline/apt-get.cc:353
+msgid " or"
+msgstr "×ו"
+
+#: cmdline/apt-get.cc:382
+msgid "The following NEW packages will be installed:"
+msgstr "החבילות החדשות הב×ות הולכות להיות מותקנות:"
+
+#: cmdline/apt-get.cc:408
+msgid "The following packages will be REMOVED:"
+msgstr "החבילות הב×ות יוסרו:"
+
+#: cmdline/apt-get.cc:430
+msgid "The following packages have been kept back:"
+msgstr "החבילות הב×ות מעובות:"
+
+#: cmdline/apt-get.cc:451
+msgid "The following packages will be upgraded:"
+msgstr "החבילות הב×ות ישודרגו:"
+
+#: cmdline/apt-get.cc:472
+msgid "The following packages will be DOWNGRADED:"
+msgstr "החבילות הב×ות ישודרגו מטה:"
+
+#: cmdline/apt-get.cc:492
+msgid "The following held packages will be changed:"
+msgstr "החבילות המחוזקות הב×ות ישונו:"
+
+#: cmdline/apt-get.cc:545
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (בגלל %s)"
+
+#: cmdline/apt-get.cc:553
+#, fuzzy
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"× ×– ×” ר ×”: החבילות החיוניות הב×ות יוסרו\n"
+"על הפעולה להעשות *רק* ×× ×תה יודע מה ×תה עושה!"
+
+#: cmdline/apt-get.cc:584
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu משודרגי×, %lu ×ž×•×ª×§× ×™× ×—×“×©×™×, "
+
+#: cmdline/apt-get.cc:588
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu מותקנות מחדש, "
+
+#: cmdline/apt-get.cc:590
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu משודרגות מטה, "
+
+#: cmdline/apt-get.cc:592
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu יוסרו ו-%lu ×œ× ×™×©×•×“×¨×’×•.\n"
+
+#: cmdline/apt-get.cc:596
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu ×œ× ×ž×•×ª×§× ×•×ª לחלוטין ×ו הוסרו.\n"
+
+#: cmdline/apt-get.cc:669
+msgid "Correcting dependencies..."
+msgstr "מתקן תלויות..."
+
+#: cmdline/apt-get.cc:672
+msgid " failed."
+msgstr "כשלון."
+
+#: cmdline/apt-get.cc:675
+msgid "Unable to correct dependencies"
+msgstr "×œ× ×ž×¦×œ×™×— לתקן תלויות"
+
+#: cmdline/apt-get.cc:678
+msgid "Unable to minimize the upgrade set"
+msgstr "× ×– ×” ר ×”: החבילות החיוניות הב×ות יוסרו"
+
+#: cmdline/apt-get.cc:680
+msgid " Done"
+msgstr "סיו×"
+
+#: cmdline/apt-get.cc:684
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "×ולי תרצה להריץ 'apt --fix-broken install' כדי לתקן ×ת ×לו."
+
+#: cmdline/apt-get.cc:687
+msgid "Unmet dependencies. Try using --fix-broken."
+msgstr "תלויות ×©×œ× × ×¢× ×•. נסה להשתמש ב×פשרות --fix-broken."
+
+#: cmdline/apt-get.cc:712
+#, fuzzy
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "החבילות הב×ות ישודרגו:"
+
+#: cmdline/apt-get.cc:716
+msgid "Authentication warning overridden.\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:723
+msgid "Install these packages without verification [y/N]? "
+msgstr ""
+
+#: cmdline/apt-get.cc:725
+msgid "Some packages could not be authenticated"
+msgstr ""
+
+#: cmdline/apt-get.cc:734 cmdline/apt-get.cc:890
+msgid "There are problems and -y was used without --force-yes"
+msgstr "היו בעיות וה×פשרות -y היתה בשימוש ×œ×œ× ×”×פשרות --force-yes"
+
+#: cmdline/apt-get.cc:775
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr ""
+
+#: cmdline/apt-get.cc:784
+msgid "Packages need to be removed but remove is disabled."
+msgstr ""
+
+#: cmdline/apt-get.cc:795
+msgid "Internal error, Ordering didn't finish"
+msgstr ""
+
+#: cmdline/apt-get.cc:811 cmdline/apt-get.cc:2072 cmdline/apt-get.cc:2105
+msgid "Unable to lock the download directory"
+msgstr "×œ× ×ž×¦×œ×™×— לנעול ×ת ספרית ההורדה."
+
+#: cmdline/apt-get.cc:821 cmdline/apt-get.cc:2153 cmdline/apt-get.cc:2406
+#: apt-pkg/cachefile.cc:65
+msgid "The list of sources could not be read."
+msgstr "רשימת המקורות ×œ× × ×™×ª× ×ª לקרי××”."
+
+#: cmdline/apt-get.cc:836
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+
+#: cmdline/apt-get.cc:841
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "צריך לקבל %sB/%sB מתוך ×”×רכיוני×.\n"
+
+#: cmdline/apt-get.cc:844
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "צריך לקבל %sB מתוך ×”×רכיוני×.\n"
+
+#: cmdline/apt-get.cc:849
+#, fuzzy, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "×חרי פריסה %sB × ×•×¡×¤×™× ×™×”×™×• בשימוש.\n"
+
+#: cmdline/apt-get.cc:852
+#, fuzzy, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "×חרי פריסה %sB × ×•×¡×¤×™× ×™×©×•×—×¨×¨×•.\n"
+
+#: cmdline/apt-get.cc:867 cmdline/apt-get.cc:870 cmdline/apt-get.cc:2249
+#: cmdline/apt-get.cc:2252
+#, fuzzy, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "×ין לך מספיק ×ž×§×•× ×¤× ×•×™ ב-%s."
+
+#: cmdline/apt-get.cc:880
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "×ין לך מספיק ×ž×§×•× ×¤× ×•×™ ב-%s."
+
+#: cmdline/apt-get.cc:896 cmdline/apt-get.cc:916
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr ""
+
+#: cmdline/apt-get.cc:898
+msgid "Yes, do as I say!"
+msgstr "כן, עשה כפי ש×× ×™ ×ומר!"
+
+#: cmdline/apt-get.cc:900
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+
+#: cmdline/apt-get.cc:906 cmdline/apt-get.cc:925
+msgid "Abort."
+msgstr "בטל."
+
+#: cmdline/apt-get.cc:921
+#, fuzzy
+msgid "Do you want to continue [Y/n]? "
+msgstr "×”×× ×תה רוצה להמשיך? [Y/n]"
+
+#: cmdline/apt-get.cc:993 cmdline/apt-get.cc:2303 apt-pkg/algorithms.cc:1389
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "כשלון בהב×ת %s %s"
+
+#: cmdline/apt-get.cc:1011
+msgid "Some files failed to download"
+msgstr "כשלון בהורדת חלק מהקבצי×"
+
+#: cmdline/apt-get.cc:1012 cmdline/apt-get.cc:2312
+msgid "Download complete and in download only mode"
+msgstr "ההורדה הסתיימה במסגרת מצב הורדה בלבד."
+
+#: cmdline/apt-get.cc:1018
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+
+#: cmdline/apt-get.cc:1022
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr ""
+
+#: cmdline/apt-get.cc:1027
+msgid "Unable to correct missing packages."
+msgstr ""
+
+#: cmdline/apt-get.cc:1028
+msgid "Aborting install."
+msgstr ""
+
+#: cmdline/apt-get.cc:1086
+#, c-format
+msgid "Note, selecting %s instead of %s\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:1097
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:1115
+#, c-format
+msgid "Package %s is not installed, so not removed\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:1126
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:1138
+msgid " [Installed]"
+msgstr ""
+
+#: cmdline/apt-get.cc:1143
+msgid "You should explicitly select one to install."
+msgstr ""
+
+#: cmdline/apt-get.cc:1148
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:1167
+msgid "However the following packages replace it:"
+msgstr ""
+
+#: cmdline/apt-get.cc:1170
+#, c-format
+msgid "Package %s has no installation candidate"
+msgstr ""
+
+#: cmdline/apt-get.cc:1190
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:1198
+#, c-format
+msgid "%s is already the newest version.\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:1227
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr ""
+
+#: cmdline/apt-get.cc:1229
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr ""
+
+#: cmdline/apt-get.cc:1235
+#, c-format
+msgid "Selected version %s (%s) for %s\n"
+msgstr ""
+
+#. if (VerTag.empty() == false && Last == 0)
+#: cmdline/apt-get.cc:1311 cmdline/apt-get.cc:1379
+#, c-format
+msgid "Ignore unavailable version '%s' of package '%s'"
+msgstr ""
+
+#: cmdline/apt-get.cc:1313
+#, c-format
+msgid "Ignore unavailable target release '%s' of package '%s'"
+msgstr ""
+
+#: cmdline/apt-get.cc:1342
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:1395
+msgid "The update command takes no arguments"
+msgstr ""
+
+#: cmdline/apt-get.cc:1408
+msgid "Unable to lock the list directory"
+msgstr ""
+
+#: cmdline/apt-get.cc:1464
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+
+#: cmdline/apt-get.cc:1513
+#, fuzzy
+msgid ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr "החבילות החדשות הב×ות הולכות להיות מותקנות:"
+
+#: cmdline/apt-get.cc:1515
+#, fuzzy, c-format
+msgid "%lu packages were automatically installed and are no longer required.\n"
+msgstr "החבילות החדשות הב×ות הולכות להיות מותקנות:"
+
+#: cmdline/apt-get.cc:1516
+msgid "Use '%s' to remove them."
+msgstr ""
+
+#: cmdline/apt-get.cc:1521
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << endl;
+#. }
+#.
+#: cmdline/apt-get.cc:1524 cmdline/apt-get.cc:1814
+msgid "The following information may help to resolve the situation:"
+msgstr ""
+
+#: cmdline/apt-get.cc:1528
+#, fuzzy
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "שגי××” פנימית, כלשון ביצירת %s"
+
+#: cmdline/apt-get.cc:1547
+msgid "Internal error, AllUpgrade broke stuff"
+msgstr ""
+
+#: cmdline/apt-get.cc:1602
+#, c-format
+msgid "Couldn't find task %s"
+msgstr ""
+
+#: cmdline/apt-get.cc:1717 cmdline/apt-get.cc:1753
+#, c-format
+msgid "Couldn't find package %s"
+msgstr ""
+
+#: cmdline/apt-get.cc:1740
+#, c-format
+msgid "Note, selecting %s for regex '%s'\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:1771
+#, fuzzy, c-format
+msgid "%s set to manually installed.\n"
+msgstr "×בל %s הולכת להיות מותקנת"
+
+#: cmdline/apt-get.cc:1784
+msgid "You might want to run 'apt --fix-broken install' to correct these:"
+msgstr ""
+
+#: cmdline/apt-get.cc:1787
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a "
+"solution)."
+msgstr ""
+
+#: cmdline/apt-get.cc:1799
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+
+#: cmdline/apt-get.cc:1817
+msgid "Broken packages"
+msgstr ""
+
+#: cmdline/apt-get.cc:1846
+msgid "The following extra packages will be installed:"
+msgstr ""
+
+#: cmdline/apt-get.cc:1935
+msgid "Suggested packages:"
+msgstr ""
+
+#: cmdline/apt-get.cc:1936
+msgid "Recommended packages:"
+msgstr ""
+
+#: cmdline/apt-get.cc:1965
+msgid "Calculating upgrade"
+msgstr ""
+
+#: cmdline/apt-get.cc:1968 methods/ftp.cc:708 methods/connect.cc:112
+msgid "Failed"
+msgstr ""
+
+#: cmdline/apt-get.cc:1973
+msgid "Done"
+msgstr ""
+
+#: cmdline/apt-get.cc:2040 cmdline/apt-get.cc:2048
+#, fuzzy
+msgid "Internal error, problem resolver broke stuff"
+msgstr "שגי××” פנימית, כלשון ביצירת %s"
+
+#: cmdline/apt-get.cc:2148
+msgid "Must specify at least one package to fetch source for"
+msgstr ""
+
+#: cmdline/apt-get.cc:2178 cmdline/apt-get.cc:2424
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr ""
+
+#: cmdline/apt-get.cc:2227
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:2262
+#, c-format
+msgid "You don't have enough free space in %s"
+msgstr ""
+
+#: cmdline/apt-get.cc:2268
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:2271
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:2277
+#, c-format
+msgid "Fetch source %s\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:2308
+msgid "Failed to fetch some archives."
+msgstr ""
+
+#: cmdline/apt-get.cc:2336
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:2348
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:2349
+#, c-format
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:2366
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:2385
+msgid "Child process failed"
+msgstr ""
+
+#: cmdline/apt-get.cc:2401
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+
+#: cmdline/apt-get.cc:2429
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr ""
+
+#: cmdline/apt-get.cc:2449
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:2501
+#, c-format
+msgid ""
+"%s dependency for %s cannot be satisfied because the package %s cannot be "
+"found"
+msgstr ""
+
+#: cmdline/apt-get.cc:2554
+#, c-format
+msgid ""
+"%s dependency for %s cannot be satisfied because no available versions of "
+"package %s can satisfy version requirements"
+msgstr ""
+
+#: cmdline/apt-get.cc:2590
+#, c-format
+msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+msgstr ""
+
+#: cmdline/apt-get.cc:2617
+#, c-format
+msgid "Failed to satisfy %s dependency for %s: %s"
+msgstr ""
+
+#: cmdline/apt-get.cc:2633
+#, c-format
+msgid "Build-dependencies for %s could not be satisfied."
+msgstr ""
+
+#: cmdline/apt-get.cc:2638
+msgid "Failed to process build dependencies"
+msgstr ""
+
+#: cmdline/apt-get.cc:2670
+msgid "Supported modules:"
+msgstr ""
+
+#: cmdline/apt-get.cc:2711
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a simple command line interface for downloading and\n"
+"installing packages. The most frequently used commands are update\n"
+"and install.\n"
+"\n"
+"Commands:\n"
+" update - Retrieve new lists of packages\n"
+" upgrade - Perform an upgrade\n"
+" install - Install new packages (pkg is libc6 not libc6.deb)\n"
+" remove - Remove packages\n"
+" autoremove - Remove automatically all unused packages\n"
+" purge - Remove packages and config files\n"
+" source - Download source archives\n"
+" build-dep - Configure build-dependencies for source packages\n"
+" dist-upgrade - Distribution upgrade, see apt-get(8)\n"
+" dselect-upgrade - Follow dselect selections\n"
+" clean - Erase downloaded archive files\n"
+" autoclean - Erase old downloaded archive files\n"
+" check - Verify that there are no broken dependencies\n"
+"\n"
+"Options:\n"
+" -h This help text.\n"
+" -q Loggable output - no progress indicator\n"
+" -qq No output except for errors\n"
+" -d Download only - do NOT install or unpack archives\n"
+" -s No-act. Perform ordering simulation\n"
+" -y Assume Yes to all queries and do not prompt\n"
+" -f Attempt to correct a system with broken dependencies in place\n"
+" -m Attempt to continue if archives are unlocatable\n"
+" -u Show a list of upgraded packages as well\n"
+" -b Build the source package after fetching it\n"
+" -V Show verbose version numbers\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+"See the apt-get(8), sources.list(5) and apt.conf(5) manual\n"
+"pages for more information and options.\n"
+" This APT has Super Cow Powers.\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:2879
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: cmdline/acqprogress.cc:55
+#, c-format
+msgid "Hit:%lu %s"
+msgstr ""
+
+#: cmdline/acqprogress.cc:79
+#, c-format
+msgid "Get:%lu %s"
+msgstr ""
+
+#: cmdline/acqprogress.cc:110
+#, c-format
+msgid "Ign:%lu %s"
+msgstr ""
+
+#: cmdline/acqprogress.cc:114
+#, c-format
+msgid "Err:%lu %s"
+msgstr ""
+
+#: cmdline/acqprogress.cc:135
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr ""
+
+#: cmdline/acqprogress.cc:225
+#, c-format
+msgid " [Working]"
+msgstr ""
+
+#: cmdline/acqprogress.cc:271
+#, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press enter\n"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc:86
+msgid "Unknown package record!"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc:150
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package files. The -s option is used\n"
+"to indicate what kind of file it is.\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" -s Use source file sorting\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+msgstr ""
+
+#: dselect/install:32
+msgid "Bad default setting!"
+msgstr ""
+
+#: dselect/install:51 dselect/install:83 dselect/install:87 dselect/install:94
+#: dselect/install:105 dselect/update:45
+msgid "Press enter to continue."
+msgstr ""
+
+#: dselect/install:91
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr ""
+
+#: dselect/install:101
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr ""
+
+#: dselect/install:102
+msgid "will be configured. This may result in duplicate errors"
+msgstr ""
+
+#: dselect/install:103
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+
+#: dselect/install:104
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+
+#: dselect/update:30
+msgid "Merging available information"
+msgstr ""
+
+#: apt-inst/contrib/extracttar.cc:114
+msgid "Failed to create pipes"
+msgstr ""
+
+#: apt-inst/contrib/extracttar.cc:141
+msgid "Failed to exec gzip "
+msgstr ""
+
+#: apt-inst/contrib/extracttar.cc:178 apt-inst/contrib/extracttar.cc:204
+msgid "Corrupted archive"
+msgstr ""
+
+#: apt-inst/contrib/extracttar.cc:193
+msgid "Tar checksum failed, archive corrupted"
+msgstr ""
+
+#: apt-inst/contrib/extracttar.cc:296
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc:70
+msgid "Invalid archive signature"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc:78
+msgid "Error reading archive member header"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc:90
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc:102
+msgid "Invalid archive member header"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc:128
+msgid "Archive is too short"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc:132
+msgid "Failed to read the archive headers"
+msgstr ""
+
+#: apt-inst/filelist.cc:380
+msgid "DropNode called on still linked node"
+msgstr ""
+
+#: apt-inst/filelist.cc:412
+msgid "Failed to locate the hash element!"
+msgstr ""
+
+#: apt-inst/filelist.cc:459
+msgid "Failed to allocate diversion"
+msgstr ""
+
+#: apt-inst/filelist.cc:464
+msgid "Internal error in AddDiversion"
+msgstr ""
+
+#: apt-inst/filelist.cc:477
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr ""
+
+#: apt-inst/filelist.cc:506
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr ""
+
+#: apt-inst/filelist.cc:549
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr ""
+
+#: apt-inst/dirstream.cc:41 apt-inst/dirstream.cc:46 apt-inst/dirstream.cc:49
+#, fuzzy, c-format
+msgid "Failed to write file %s"
+msgstr "כשלון בפענוח %s"
+
+#: apt-inst/dirstream.cc:92 apt-inst/dirstream.cc:100
+#, c-format
+msgid "Failed to close file %s"
+msgstr ""
+
+#: apt-inst/extract.cc:93 apt-inst/extract.cc:164
+#, c-format
+msgid "The path %s is too long"
+msgstr ""
+
+#: apt-inst/extract.cc:124
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr ""
+
+#: apt-inst/extract.cc:134
+#, c-format
+msgid "The directory %s is diverted"
+msgstr ""
+
+#: apt-inst/extract.cc:144
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr ""
+
+#: apt-inst/extract.cc:154 apt-inst/extract.cc:297
+msgid "The diversion path is too long"
+msgstr ""
+
+#: apt-inst/extract.cc:240
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr ""
+
+#: apt-inst/extract.cc:280
+msgid "Failed to locate node in its hash bucket"
+msgstr ""
+
+#: apt-inst/extract.cc:284
+msgid "The path is too long"
+msgstr ""
+
+#: apt-inst/extract.cc:414
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr ""
+
+#: apt-inst/extract.cc:431
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr ""
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc:464 apt-pkg/contrib/configuration.cc:843
+#: apt-pkg/contrib/cdromutl.cc:157 apt-pkg/sourcelist.cc:166
+#: apt-pkg/sourcelist.cc:172 apt-pkg/sourcelist.cc:327 apt-pkg/acquire.cc:419
+#: apt-pkg/init.cc:90 apt-pkg/init.cc:98 apt-pkg/clean.cc:33
+#: apt-pkg/policy.cc:281 apt-pkg/policy.cc:287
+#, c-format
+msgid "Unable to read %s"
+msgstr ""
+
+#: apt-inst/extract.cc:491
+#, c-format
+msgid "Unable to stat %s"
+msgstr ""
+
+#: apt-inst/deb/dpkgdb.cc:51 apt-inst/deb/dpkgdb.cc:57
+#, c-format
+msgid "Failed to remove %s"
+msgstr ""
+
+#: apt-inst/deb/dpkgdb.cc:106 apt-inst/deb/dpkgdb.cc:108
+#, c-format
+msgid "Unable to create %s"
+msgstr ""
+
+#: apt-inst/deb/dpkgdb.cc:114
+#, c-format
+msgid "Failed to stat %sinfo"
+msgstr ""
+
+#: apt-inst/deb/dpkgdb.cc:119
+msgid "The info and temp directories need to be on the same filesystem"
+msgstr ""
+
+#. Build the status cache
+#: apt-inst/deb/dpkgdb.cc:135 apt-pkg/pkgcachegen.cc:763
+#: apt-pkg/pkgcachegen.cc:832 apt-pkg/pkgcachegen.cc:837
+#: apt-pkg/pkgcachegen.cc:961
+msgid "Reading package lists"
+msgstr ""
+
+#: apt-inst/deb/dpkgdb.cc:176
+#, c-format
+msgid "Failed to change to the admin dir %sinfo"
+msgstr ""
+
+#: apt-inst/deb/dpkgdb.cc:197 apt-inst/deb/dpkgdb.cc:351
+#: apt-inst/deb/dpkgdb.cc:444
+msgid "Internal error getting a package name"
+msgstr ""
+
+#: apt-inst/deb/dpkgdb.cc:201 apt-inst/deb/dpkgdb.cc:382
+msgid "Reading file listing"
+msgstr ""
+
+#: apt-inst/deb/dpkgdb.cc:212
+#, c-format
+msgid ""
+"Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+"then make it empty and immediately re-install the same version of the "
+"package!"
+msgstr ""
+
+#: apt-inst/deb/dpkgdb.cc:225 apt-inst/deb/dpkgdb.cc:238
+#, c-format
+msgid "Failed reading the list file %sinfo/%s"
+msgstr ""
+
+#: apt-inst/deb/dpkgdb.cc:262
+msgid "Internal error getting a node"
+msgstr ""
+
+#: apt-inst/deb/dpkgdb.cc:305
+#, c-format
+msgid "Failed to open the diversions file %sdiversions"
+msgstr ""
+
+#: apt-inst/deb/dpkgdb.cc:320
+msgid "The diversion file is corrupted"
+msgstr ""
+
+#: apt-inst/deb/dpkgdb.cc:327 apt-inst/deb/dpkgdb.cc:332
+#: apt-inst/deb/dpkgdb.cc:337
+#, c-format
+msgid "Invalid line in the diversion file: %s"
+msgstr ""
+
+#: apt-inst/deb/dpkgdb.cc:358
+msgid "Internal error adding a diversion"
+msgstr ""
+
+#: apt-inst/deb/dpkgdb.cc:379
+msgid "The pkg cache must be initialized first"
+msgstr ""
+
+#: apt-inst/deb/dpkgdb.cc:439
+#, c-format
+msgid "Failed to find a Package: header, offset %lu"
+msgstr ""
+
+#: apt-inst/deb/dpkgdb.cc:461
+#, c-format
+msgid "Bad ConfFile section in the status file. Offset %lu"
+msgstr ""
+
+#: apt-inst/deb/dpkgdb.cc:466
+#, c-format
+msgid "Error parsing MD5. Offset %lu"
+msgstr ""
+
+#: apt-inst/deb/debfile.cc:38 apt-inst/deb/debfile.cc:43
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr ""
+
+#: apt-inst/deb/debfile.cc:50
+#, c-format
+msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+msgstr ""
+
+#: apt-inst/deb/debfile.cc:110
+#, c-format
+msgid "Couldn't change to %s"
+msgstr ""
+
+#: apt-inst/deb/debfile.cc:140
+msgid "Internal error, could not locate member"
+msgstr ""
+
+#: apt-inst/deb/debfile.cc:173
+msgid "Failed to locate a valid control file"
+msgstr ""
+
+#: apt-inst/deb/debfile.cc:258
+msgid "Unparsable control file"
+msgstr ""
+
+#: methods/cdrom.cc:200
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr ""
+
+#: methods/cdrom.cc:209
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+
+#: methods/cdrom.cc:219
+msgid "Wrong CD-ROM"
+msgstr ""
+
+#: methods/cdrom.cc:245
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr ""
+
+#: methods/cdrom.cc:250
+#, fuzzy
+msgid "Disk not found."
+msgstr "(×œ× × ×ž×¦×)"
+
+#: methods/cdrom.cc:258 methods/file.cc:79 methods/rsh.cc:264
+msgid "File not found"
+msgstr ""
+
+#: methods/copy.cc:43 methods/gzip.cc:141 methods/gzip.cc:150
+#: methods/rred.cc:234 methods/rred.cc:243
+msgid "Failed to stat"
+msgstr ""
+
+#: methods/copy.cc:80 methods/gzip.cc:147 methods/rred.cc:240
+msgid "Failed to set modification time"
+msgstr ""
+
+#: methods/file.cc:44
+msgid "Invalid URI, local URIS must not start with //"
+msgstr ""
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc:168
+msgid "Logging in"
+msgstr ""
+
+#: methods/ftp.cc:174
+msgid "Unable to determine the peer name"
+msgstr ""
+
+#: methods/ftp.cc:179
+msgid "Unable to determine the local name"
+msgstr ""
+
+#: methods/ftp.cc:210 methods/ftp.cc:238
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr ""
+
+#: methods/ftp.cc:216
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc:223
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc:243
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+
+#: methods/ftp.cc:271
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc:297
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc:335 methods/ftp.cc:446 methods/rsh.cc:183 methods/rsh.cc:226
+msgid "Connection timeout"
+msgstr ""
+
+#: methods/ftp.cc:341
+msgid "Server closed the connection"
+msgstr ""
+
+#: methods/ftp.cc:344 apt-pkg/contrib/fileutl.cc:543 methods/rsh.cc:190
+msgid "Read error"
+msgstr ""
+
+#: methods/ftp.cc:351 methods/rsh.cc:197
+msgid "A response overflowed the buffer."
+msgstr ""
+
+#: methods/ftp.cc:368 methods/ftp.cc:380
+msgid "Protocol corruption"
+msgstr ""
+
+#: methods/ftp.cc:452 apt-pkg/contrib/fileutl.cc:582 methods/rsh.cc:232
+msgid "Write error"
+msgstr ""
+
+#: methods/ftp.cc:693 methods/ftp.cc:699 methods/ftp.cc:735
+msgid "Could not create a socket"
+msgstr ""
+
+#: methods/ftp.cc:704
+msgid "Could not connect data socket, connection timed out"
+msgstr ""
+
+#: methods/ftp.cc:710
+msgid "Could not connect passive socket."
+msgstr ""
+
+#: methods/ftp.cc:728
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr ""
+
+#: methods/ftp.cc:742
+msgid "Could not bind a socket"
+msgstr ""
+
+#: methods/ftp.cc:746
+msgid "Could not listen on the socket"
+msgstr ""
+
+#: methods/ftp.cc:753
+msgid "Could not determine the socket's name"
+msgstr ""
+
+#: methods/ftp.cc:785
+msgid "Unable to send PORT command"
+msgstr ""
+
+#: methods/ftp.cc:795
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr ""
+
+#: methods/ftp.cc:804
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc:824
+msgid "Data socket connect timed out"
+msgstr ""
+
+#: methods/ftp.cc:831
+msgid "Unable to accept connection"
+msgstr ""
+
+#: methods/ftp.cc:870 methods/http.cc:999 methods/rsh.cc:303
+msgid "Problem hashing file"
+msgstr ""
+
+#: methods/ftp.cc:883
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr ""
+
+#: methods/ftp.cc:898 methods/rsh.cc:322
+msgid "Data socket timed out"
+msgstr ""
+
+#: methods/ftp.cc:928
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr ""
+
+#. Get the files information
+#: methods/ftp.cc:1005
+msgid "Query"
+msgstr ""
+
+#: methods/ftp.cc:1117
+msgid "Unable to invoke "
+msgstr ""
+
+#: methods/connect.cc:70
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr ""
+
+#: methods/connect.cc:81
+#, c-format
+msgid "[IP: %s %s]"
+msgstr ""
+
+#: methods/connect.cc:90
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr ""
+
+#: methods/connect.cc:96
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr ""
+
+#: methods/connect.cc:104
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr ""
+
+#: methods/connect.cc:119
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr ""
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc:147 methods/rsh.cc:425
+#, c-format
+msgid "Connecting to %s"
+msgstr ""
+
+#: methods/connect.cc:165 methods/connect.cc:184
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr ""
+
+#: methods/connect.cc:190
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr ""
+
+#: methods/connect.cc:193
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr ""
+
+#: methods/connect.cc:240
+#, fuzzy, c-format
+#| msgid "Unable to write to %s"
+msgid "Unable to connect to %s:%s:"
+msgstr "×œ× ×ž×¦×œ×™×— לכתוב ל-%s"
+
+#: methods/gpgv.cc:71
+#, c-format
+msgid "Couldn't access keyring: '%s'"
+msgstr ""
+
+#: methods/gpgv.cc:107
+msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+msgstr ""
+
+#: methods/gpgv.cc:223
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+
+#: methods/gpgv.cc:228
+msgid "At least one invalid signature was encountered."
+msgstr ""
+
+#: methods/gpgv.cc:232
+#, c-format
+msgid "Could not execute '%s' to verify signature (is gnupg installed?)"
+msgstr ""
+
+#: methods/gpgv.cc:237
+msgid "Unknown error executing apt-key"
+msgstr ""
+
+#: methods/gpgv.cc:271 methods/gpgv.cc:278
+#, fuzzy
+msgid "The following signatures were invalid:\n"
+msgstr "החבילות החדשות הב×ות הולכות להיות מותקנות:"
+
+#: methods/gpgv.cc:285
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+
+#: methods/gzip.cc:64
+#, c-format
+msgid "Couldn't open pipe for %s"
+msgstr ""
+
+#: methods/gzip.cc:109
+#, c-format
+msgid "Read error from %s process"
+msgstr ""
+
+#: methods/http.cc:385
+msgid "Waiting for headers"
+msgstr ""
+
+#: methods/http.cc:531
+#, c-format
+msgid "Got a single header line over %u chars"
+msgstr ""
+
+#: methods/http.cc:539
+msgid "Bad header line"
+msgstr ""
+
+#: methods/http.cc:558 methods/http.cc:565
+msgid "The HTTP server sent an invalid reply header"
+msgstr ""
+
+#: methods/http.cc:594
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr ""
+
+#: methods/http.cc:609
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr ""
+
+#: methods/http.cc:611
+msgid "This HTTP server has broken range support"
+msgstr ""
+
+#: methods/http.cc:635
+msgid "Unknown date format"
+msgstr ""
+
+#: methods/http.cc:790
+msgid "Select failed"
+msgstr ""
+
+#: methods/http.cc:795
+msgid "Connection timed out"
+msgstr ""
+
+#: methods/http.cc:818
+msgid "Error writing to output file"
+msgstr ""
+
+#: methods/http.cc:849
+msgid "Error writing to file"
+msgstr ""
+
+#: methods/http.cc:877
+msgid "Error writing to the file"
+msgstr ""
+
+#: methods/http.cc:891
+msgid "Error reading from server. Remote end closed connection"
+msgstr ""
+
+#: methods/http.cc:893
+msgid "Error reading from server"
+msgstr ""
+
+#: methods/http.cc:984 apt-pkg/contrib/mmap.cc:215
+#, fuzzy
+msgid "Failed to truncate file"
+msgstr "כשלון בפענוח %s"
+
+#: methods/http.cc:1149
+msgid "Bad header data"
+msgstr ""
+
+#: methods/http.cc:1166 methods/http.cc:1221
+msgid "Connection failed"
+msgstr ""
+
+#: methods/http.cc:1313
+msgid "Internal error"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc:76
+msgid "Can't mmap an empty file"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc:81 apt-pkg/contrib/mmap.cc:187
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc:234
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+
+#. d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc:346
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc:353
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc:360
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. s means seconds
+#: apt-pkg/contrib/strutl.cc:365
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc:1040
+#, c-format
+msgid "Selection %s not found"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc:458
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc:516
+#, c-format
+msgid "Opening configuration file %s"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc:684
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc:703
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc:720
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc:760
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc:767
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc:771 apt-pkg/contrib/configuration.cc:776
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc:780
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc:831
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc:153
+#, c-format
+msgid "%c%s... Error!"
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc:155
+#, c-format
+msgid "%c%s... Done"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc:77
+#, c-format
+msgid "Command line option '%c' [from %s] is not known."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc:103 apt-pkg/contrib/cmndline.cc:111
+#: apt-pkg/contrib/cmndline.cc:119
+#, c-format
+msgid "Command line option %s is not understood"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc:124
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc:163 apt-pkg/contrib/cmndline.cc:184
+#, c-format
+msgid "Option %s requires an argument."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc:198 apt-pkg/contrib/cmndline.cc:204
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc:234
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc:265
+#, c-format
+msgid "Option '%s' is too long"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc:298
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc:348
+#, c-format
+msgid "Invalid operation %s"
+msgstr ""
+
+#: apt-pkg/contrib/cdromutl.cc:52
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr ""
+
+#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/contrib/cdromutl.cc:187
+#: apt-pkg/acquire.cc:425 apt-pkg/acquire.cc:450 apt-pkg/clean.cc:39
+#, c-format
+msgid "Unable to change to %s"
+msgstr ""
+
+#: apt-pkg/contrib/cdromutl.cc:195
+msgid "Failed to stat the cdrom"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:149
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:154
+#, c-format
+msgid "Could not open lock file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:172
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:176
+#, c-format
+msgid "Could not get lock %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:444
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:456
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:458
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:462
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:464
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:508
+#, c-format
+msgid "Could not open file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:564
+#, c-format
+msgid "read, still have %lu to read but none left"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:594
+#, c-format
+msgid "write, still have %lu to write but couldn't"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:669
+msgid "Problem closing the file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:675
+msgid "Problem unlinking the file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:686
+msgid "Problem syncing the file"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:133
+msgid "Empty package cache"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:139
+msgid "The package cache file is corrupted"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:144
+msgid "The package cache file is an incompatible version"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:149
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:154
+msgid "The package cache was built for a different architecture"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:225
+msgid "Depends"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:225
+msgid "PreDepends"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:225
+msgid "Suggests"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:226
+msgid "Recommends"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:226
+msgid "Conflicts"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:226
+msgid "Replaces"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:227
+msgid "Obsoletes"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:227
+msgid "Breaks"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:227
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:238
+msgid "important"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:238
+msgid "required"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:238
+msgid "standard"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:239
+msgid "optional"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:239
+msgid "extra"
+msgstr ""
+
+#: apt-pkg/depcache.cc:123 apt-pkg/depcache.cc:152
+msgid "Building dependency tree"
+msgstr ""
+
+#: apt-pkg/depcache.cc:124
+msgid "Candidate versions"
+msgstr ""
+
+#: apt-pkg/depcache.cc:153
+msgid "Dependency generation"
+msgstr ""
+
+#: apt-pkg/depcache.cc:173 apt-pkg/depcache.cc:193 apt-pkg/depcache.cc:197
+msgid "Reading state information"
+msgstr ""
+
+#: apt-pkg/depcache.cc:223
+#, fuzzy, c-format
+msgid "Failed to open StateFile %s"
+msgstr "כשלון בפתיחת %s"
+
+#: apt-pkg/depcache.cc:229
+#, fuzzy, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "כשלון בפענוח %s"
+
+#: apt-pkg/tagfile.cc:102
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc:90
+#, c-format
+msgid "Malformed line %lu in source list %s (URI)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc:92
+#, c-format
+msgid "Malformed line %lu in source list %s (dist)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc:95
+#, c-format
+msgid "Malformed line %lu in source list %s (URI parse)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc:101
+#, c-format
+msgid "Malformed line %lu in source list %s (absolute dist)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc:108
+#, c-format
+msgid "Malformed line %lu in source list %s (dist parse)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc:206
+#, c-format
+msgid "Opening %s"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc:223 apt-pkg/cdrom.cc:445
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr ""
+
+#: apt-pkg/sourcelist.cc:243
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc:247
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc:255 apt-pkg/sourcelist.cc:258
+#, c-format
+msgid "Malformed line %u in source list %s (vendor id)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc:324 apt-pkg/packagemanager.cc:586
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc:440
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+
+#: apt-pkg/packagemanager.cc:478
+#, c-format
+msgid ""
+"Could not perform immediate configuration on already unpacked '%s'. Please "
+"see man 5 apt.conf under APT::Immediate-Configure for details."
+msgstr ""
+
+#: apt-pkg/pkgrecords.cc:32
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr ""
+
+#: apt-pkg/algorithms.cc:248
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+
+#: apt-pkg/algorithms.cc:1138
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+
+#: apt-pkg/algorithms.cc:1140
+msgid "Unable to correct problems, you have held broken packages."
+msgstr ""
+
+#: apt-pkg/algorithms.cc:1415 apt-pkg/algorithms.cc:1417
+msgid ""
+"Some index files failed to download, they have been ignored, or old ones "
+"used instead."
+msgstr ""
+
+#: apt-pkg/acquire.cc:60
+#, c-format
+msgid "Lists directory %spartial is missing."
+msgstr ""
+
+#: apt-pkg/acquire.cc:64
+#, c-format
+msgid "Archive directory %spartial is missing."
+msgstr ""
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc:826
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr ""
+
+#: apt-pkg/acquire.cc:828
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc:110
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc:159
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc:413
+#, c-format
+msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
+msgstr ""
+
+#: apt-pkg/init.cc:133
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr ""
+
+#: apt-pkg/init.cc:149
+msgid "Unable to determine a suitable packaging system type"
+msgstr ""
+
+#: apt-pkg/clean.cc:56
+#, c-format
+msgid "Unable to stat %s."
+msgstr ""
+
+#: apt-pkg/srcrecords.cc:44
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr ""
+
+#: apt-pkg/cachefile.cc:71
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+
+#: apt-pkg/cachefile.cc:75
+msgid "You may want to run apt-get update to correct these problems"
+msgstr ""
+
+#: apt-pkg/policy.cc:347
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr ""
+
+#: apt-pkg/policy.cc:369
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr ""
+
+#: apt-pkg/policy.cc:377
+msgid "No priority (or zero) specified for pin"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:74
+msgid "Cache has an incompatible versioning system"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:117
+#, c-format
+msgid "Error occurred while processing %s (NewPackage)"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:132
+#, c-format
+msgid "Error occurred while processing %s (UsePackage1)"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:166
+#, c-format
+msgid "Error occurred while processing %s (NewFileDesc1)"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:191
+#, c-format
+msgid "Error occurred while processing %s (UsePackage2)"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:195
+#, c-format
+msgid "Error occurred while processing %s (NewFileVer1)"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:226
+#, c-format
+msgid "Error occurred while processing %s (NewVersion1)"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:230
+#, c-format
+msgid "Error occurred while processing %s (UsePackage3)"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:234
+#, c-format
+msgid "Error occurred while processing %s (NewVersion2)"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:258
+#, c-format
+msgid "Error occurred while processing %s (NewFileDesc2)"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:264
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:267
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:270
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:273
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:301
+#, c-format
+msgid "Error occurred while processing %s (FindPkg)"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:314
+#, c-format
+msgid "Error occurred while processing %s (CollectFileProvides)"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:320
+#, c-format
+msgid "Package %s %s was not found while processing file dependencies"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:693
+#, c-format
+msgid "Couldn't stat source package list %s"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:778
+msgid "Collecting File Provides"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:907 apt-pkg/pkgcachegen.cc:914
+msgid "IO Error saving source cache"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc:128
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc:395
+msgid "MD5Sum mismatch"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc:649 apt-pkg/acquire-item.cc:1411
+msgid "Hash Sum mismatch"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc:1106
+msgid "There is no public key available for the following key IDs:\n"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc:1216
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc:1275
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc:1316
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc:1403
+msgid "Size mismatch"
+msgstr ""
+
+#: apt-pkg/indexrecords.cc:40
+#, fuzzy, c-format
+msgid "Unable to parse Release file %s"
+msgstr "×œ× ×ž×¦×œ×™×— לפתוח ×ת קובץ מסד ×”× ×ª×•× ×™× %s: %s"
+
+#: apt-pkg/indexrecords.cc:47
+#, c-format
+msgid "No sections in Release file %s"
+msgstr ""
+
+#: apt-pkg/indexrecords.cc:81
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr ""
+
+#: apt-pkg/vendorlist.cc:66
+#, c-format
+msgid "Vendor block %s contains no fingerprint"
+msgstr ""
+
+#: apt-pkg/cdrom.cc:525
+#, c-format
+msgid ""
+"Using CD-ROM mount point %s\n"
+"Mounting CD-ROM\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc:534 apt-pkg/cdrom.cc:622
+msgid "Identifying... "
+msgstr ""
+
+#: apt-pkg/cdrom.cc:559
+#, c-format
+msgid "Stored label: %s\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc:566 apt-pkg/cdrom.cc:836
+msgid "Unmounting CD-ROM...\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc:585
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc:607
+msgid "Waiting for disc...\n"
+msgstr ""
+
+#. Mount the new CDROM
+#: apt-pkg/cdrom.cc:615
+msgid "Mounting CD-ROM...\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc:633
+msgid "Scanning disc for index files...\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc:673
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and %"
+"zu signatures\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc:684
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc:710
+#, c-format
+msgid "Found label '%s'\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc:739
+msgid "That is not a valid name, try again.\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc:755
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc:759
+msgid "Copying package lists..."
+msgstr ""
+
+#: apt-pkg/cdrom.cc:785
+msgid "Writing new source list\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc:794
+msgid "Source list entries for this disc are:\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:835
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc:265 apt-pkg/indexcopy.cc:837
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc:268 apt-pkg/indexcopy.cc:840
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc:271 apt-pkg/indexcopy.cc:843
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc:530
+#, c-format
+msgid "Skipping nonexistent file %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc:536
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc:542
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:49
+#, fuzzy, c-format
+msgid "Installing %s"
+msgstr "מותקן:"
+
+#: apt-pkg/deb/dpkgpm.cc:50 apt-pkg/deb/dpkgpm.cc:661
+#, c-format
+msgid "Configuring %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:51 apt-pkg/deb/dpkgpm.cc:668
+#, c-format
+msgid "Removing %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:52
+#, c-format
+msgid "Completely removing %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:53
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:558
+#, c-format
+msgid "Directory '%s' missing"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:654
+#, c-format
+msgid "Preparing %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:655
+#, c-format
+msgid "Unpacking %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:660
+#, c-format
+msgid "Preparing to configure %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:662
+#, fuzzy, c-format
+msgid "Installed %s"
+msgstr "מותקן:"
+
+#: apt-pkg/deb/dpkgpm.cc:667
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:669
+#, c-format
+msgid "Removed %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:674
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:675
+#, c-format
+msgid "Completely removed %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:879
+msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:909
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc:70
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc:73
+#, fuzzy, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "×œ× ×ž×¦×œ×™×— לנעול ×ת ספרית ההורדה."
+
+#: apt-pkg/deb/debsystem.cc:82
+msgid ""
+"dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct "
+"the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc:100
+msgid "Not locked"
+msgstr ""
+
+#: methods/rred.cc:219
+msgid "Could not patch file"
+msgstr ""
+
+#: methods/rsh.cc:330
+msgid "Connection closed prematurely"
+msgstr ""
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#, fuzzy
+#~ msgid "Processing triggers for %s"
+#~ msgstr "שגי××” בעיבוד ספריה %s"
+
+#, fuzzy
+#~ msgid "openpty failed\n"
+#~ msgstr "כשלון."
+
+#~ msgid "File date has changed %s"
+#~ msgstr "ת×ריך הקובץ השתנה %s"
diff --git a/po/hu.po b/po/hu.po
new file mode 100644
index 000000000..f9ef08763
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,4347 @@
+# Advanced Package Transfer - APT message translation catalog
+# Hungarian messages
+#
+# PASZTOR Gyorgy <pasztor@linux.gyakg.u-szeged.hu>, 2002.
+# Gabor Kelemen <kelemeng at gnome dot hu>, 2004, 2005, 2011, 2012, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2016-04-10 19:46+0200\n"
+"Last-Translator: Gabor Kelemen <kelemeng@ubuntu.com>\n"
+"Language-Team: Hungarian <gnome-hu-list@gnome.org>\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Launchpad-Export-Date: 2016-04-10 19:31+0000\n"
+"X-Generator: Lokalize 1.5\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Érvénytelen archívum-aláírás"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Hiba az archívumtag-fejléc olvasásakor"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Érvénytelen archívumtag-fejléc: %s"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Érvénytelen archívumtag-fejléc"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Az archívum túl rövid"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Nem sikerült olvasni az archívumfejléceket"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Nem található egy beállított tömörítÅ‘ ehhez: „%sâ€"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Hibás archívum"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Tar ellenőrzőösszeg nem egyezik, az archívum megsérült"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Ismeretlen a(z) %u TAR fejléctípus, %s tag"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Ez nem egy érvényes DEB archívum, hiányzik a(z) „%s†tag"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Belső hiba, %s tag nem található"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Értelmezhetetlen control fájl"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "A(z) %s fájl írása sikertelen"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "A(z) %s fájl bezárása sikertelen"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "A(z) %s útvonal túl hosszú"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "A(z) %s többszöri kicsomagolása"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "A(z) %s könyvtár eltérítve"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "A csomag megpróbál írni a(z) %s/%s eltérített célpontba"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Az eltérített útvonal túl hosszú"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "%s elérése sikertelen"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "„%s†átnevezése sikertelen erre: %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "A(z) %s könyvtár nem egy könyvtárral lesz helyettesítve"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Nem sikerült a node helyét megtalálni a hashtárolóban"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Az útvonal túl hosszú"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Csomagtalálat felülírása %s verziója nélkül"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "A(z) %s/%s fájl felülírja a(z) %s csomagban levőt"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "%s nem olvasható"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "%s nem érhető el"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "A DropNode hívása egy még mindig linkelt node-ra történt"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "A hash elem nem található!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Nem lehet eltérítést lefoglalni"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Belső hiba az AddDiversion hívásban"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Kísérlet eltérítés felülírására: %s -> %s és %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "A(z) %s -> %s eltérítés hozzáadásának duplázása"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Dupla %s/%s konfigurációs fájl"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+"Az ilyen tárolóból való frissítés nem végezhető el biztonságosan, így "
+"alapesetben ki van kapcsolva."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+"Az ilyen tárolóból való adatok nem hitelesíthetők, így használatuk veszélyes "
+"lehet."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+"Lásd az apt-secure(8) kézikönyvoldalt a tárolólétrehozással és felhasználói "
+"beállításokkal kapcsolatos részletekért."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "A(z) „%s†tároló már nincs aláírva."
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "A(z) „%s†tárolónak nincs Release fájlja."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+"Ez általában nem engedélyezett, de az Acquire::"
+"AllowDowngradeToInsecureRepositories beállítás meg lett adva a "
+"felülbírálásához."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is not signed."
+msgstr "A(z) „%s†tároló nincs aláírva."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "A(z) „%s†tárolónak nincs Release fájlja."
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr ""
+"A beállított „%s†fájl beszerzésének kihagyása, mert a(z) „%s†tároló csak "
+"gyenge biztonsági információkat biztosít hozzá"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "readlink nem hajtható végre erre: %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "A Hash Sum nem megfelelő"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "sikertelen átnevezés, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "A méret nem megfelelő"
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr "Érvénytelen fájlformátum"
+
+#: apt-pkg/acquire-item.cc
+msgid "Signature error"
+msgstr "Aláírási hiba"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+"A digitálisan aláírt fájl nem érvényes, érkezett: „%s†(igényel a hálózat "
+"hitelesítést?)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"Hiba történt az aláírás ellenőrzése közben. A tároló nem frissült, és az "
+"előző indexfájl lesz használva. GPG hiba: %s: %s"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "GPG hiba: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+"A beállított „%s†fájl beszerzésének kihagyása, mert a(z) „%s†tároló nem "
+"támogatja a(z) „%s†architektúrát"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"A várt „%s†bejegyzés nem található a Release fájlban (Rossz sources.list "
+"bejegyzés vagy helytelenül formázott fájl)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+"A beállított „%s†fájl beszerzésének kihagyása, mert a(z) „%s†tároló csak "
+"gyenge biztonsági információkat biztosít hozzá"
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"A Release fájl elavult ehhez: %s (érvénytelen ez óta: %s). A tároló "
+"frissítései nem kerülnek alkalmazásra."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Ütköző disztribúció: %s (a várt %s helyett %s érkezett)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Egy fájl nem található a(z) %s csomaghoz. Ez azt jelentheti, hogy kézzel "
+"kell kijavítani a csomagot. (hiányzó arch. miatt)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr "Nem található forrás a(z) „%2$s†„%1$s†verziójának letöltéséhez"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"A csomagindexfájlok megsérültek. Nincs Filename: mező a(z) %s csomaghoz."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Nem érhető el változásnapló ehhez: %s=%s"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "A(z) %s metódusvezérlő nem található."
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr "A(z) „%s†csomag telepítve van?"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "A(z) %s metódus nem indult el megfelelően"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+"Helyezze be a(z) %s címkéjű lemezt a(z) %s meghajtóba, és nyomja meg az "
+"Entert."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "A(z) %spartial listakönyvtár hiányzik."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "A(z) %spartial archívumkönyvtár hiányzik."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "%s könyvtár zárolása sikertelen"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr "Nincs „%s†felhasználó a rendszeren, a jogosultságok nem dobhatók el"
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+#| msgid ""
+#| "Can't drop privileges for downloading as file '%s' couldn't be accessed "
+#| "by user '%s'."
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+"Nem dobhatók el a jogosultságok a letöltéshez, mivel a(z) „%s†fájl nem "
+"érhetÅ‘ el a felhasználó („%sâ€) által."
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr "A(z) „%s†tisztítása nem támogatott"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Nem sikerült ide váltani: %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "%li/%li fájl letöltése (%s marad)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "%li/%li fájl letöltése"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"A(z) %s csomagot újra kell telepíteni, de nem található hozzá archívum."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Hiba, a pkgProblemResolver::Resolve töréseket generált, ezt visszatartott "
+"csomagok okozhatják."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "A problémák nem javíthatók, sérült csomagokat fogott vissza."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+"A csomaglisták vagy az állapotfájl nem dolgozhatók fel vagy nem nyithatók "
+"meg."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Próbálja futtatni az „apt-get update†parancsot ezen hibák javításához"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "A források listája olvashatatlan."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Regex fordítási hiba - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "„%s†kiadás nem található ehhez: „%sâ€"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "„%s†verzió nem található ehhez: „%sâ€"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "„%s†feladat nem található"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Nem található csomag a(z) „%s†reguláris kifejezéssel"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Nem található csomag a(z) „%s†glob kifejezéssel"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Ez a csomag nem található: %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr "„%s†csomagból nem választható verzió, mert teljesen virtuális"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"„%s†csomag legújabb verziója nem választható ki, mert teljesen virtuális"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+"„%s†csomag kiadásra jelölt verziója nem választható ki, mert nincs jelöltje"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"„%s†csomag telepített verziója nem választható ki, mert nincs telepítve"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"„%s†csomagból nem választható sem telepített, sem kiadásra jelölt verzió, "
+"mert egyikkel sem rendelkezik"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "A(z) %u. sor túl hosszú a(z) %s forráslistában."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "CD-ROM leválasztása...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "%s CD-ROM csatolási pont használata\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Várakozás a lemezre...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "CD-ROM csatolása...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Azonosítás... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Tárolt címke: %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Indexfájlok keresése a lemezen...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"%zu csomagindex, %zu forrásindex, %zu fordításindex és %zu aláírás "
+"megtalálva\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Nem találhatók csomagfájlok, lehet hogy ez nem Debian lemez, vagy nem "
+"megfelelő az architektúra?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Talált címke: „%sâ€\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "A név érvénytelen, próbálja újra.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"A lemez neve: \n"
+"„%sâ€\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Csomaglisták másolása..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Új forráslista írása\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "A lemezhez tartozó forráslista-bejegyzések a következők:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "%s nem érhető el."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "%s csatolási pont nem érhető el"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Nem sikerült elérni a CD-ROM-ot."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr ""
+"A(z) „%c†parancssori kapcsoló [a következőből: %s] értelmezhetetlen a többi "
+"kapcsolóval kombinálva."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr ""
+"A(z) „%s†parancssori kapcsoló értelmezhetetlen a többi kapcsolóval "
+"kombinálva"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "%s parancssori kapcsoló nem logikai"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "%s kapcsolóhoz argumentum szükséges."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+"%s kapcsoló: a konfigurációs elem megadásához szükséges egy =<érték> rész."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "%s kapcsoló egész, és nem „%s†típusú argumentumot követel meg"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Túl hosszú „%s†kapcsoló"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "%s jelentés nem értelmezhető, próbálja a true vagy false értékeket."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "%s érvénytelen művelet"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Ismeretlen típusrövidítés: „%câ€"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "%s konfigurációs fájl megnyitása"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Szintaktikai hiba %s: %u: A blokk név nélkül kezdődik."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Szintaktikai hiba %s: %u: rosszul formázott címke"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Szintaktikai hiba %s: %u: fölösleges szemét az érték után"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "Szintaktikai hiba %s: %u: Csak legfelső szinten használhatók előírások"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Szintaktikai hiba %s: %u: Túl sok beágyazott include"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Szintaktikai hiba %s: %u: ugyaninnen include-olva"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Szintaktikai hiba %s:%u: „%s†nem támogatott előírás"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Szintaktikai hiba %s:%u: a törlési parancs egy beállítási fát vár "
+"argumentumként"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Szintaktikai hiba %s: %u: fölösleges szemét a fájl végén"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Hiba a(z) %s fájl törlésekor"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Nem lesz zárolva a(z) „%s†csak olvasható zárolási fájl"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "%s zárolási fájl nem nyitható meg"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Nem lesz zárolva a(z) %s NFS-csatolású zárolási fájl"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Nem sikerült zárolni: %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr "A fájlok listáját nem lehetett létrehozni, mert „%s†nem könyvtár"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+"„%s†figyelmen kívül hagyása a(z) „%s†könyvtárban, mert nem szabályos fájl"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+"„%s†fájl figyelmen kívül hagyása a(z) „%s†könyvtárban, mert nincs "
+"fájlkiterjesztése"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"„%s†fájl figyelmen kívül hagyása a(z) „%s†könyvtárban, mert érvénytelen "
+"fájlkiterjesztése van"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Nem található a(z) %s, a várakozás után sem"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "%s alfolyamat szegmentálási hibát okozott."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "A(z) %s alfolyamat %u számú szignált kapott."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "%s alfolyamat hibakóddal tért vissza (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "%s alfolyamat váratlanul kilépett"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Olvasási hiba"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Ãrási hiba"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Hiba a(z) %s gzip fájl bezárásakor"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr "Túl korai fájlvég"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Nem sikerült az alfolyamat IPC-t létrehozni"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Nem sikerült elindítani a tömörítőt "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Nem lehet megnyitni a(z) %s fájlt"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Nem lehet megnyitni a(z) %d fájlleírót"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "olvasás, még kellene %llu, de már az összes elfogyott"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "írás, még kiírandó %llu, de ez nem lehetséges"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Hiba a(z) %s fájl bezárásakor"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Hiba a(z) %s fájl átnevezésekor erre: %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Hiba a fájl szinkronizálásakor"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Az mkstemp %s meghiúsult"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Nem lehet írni ebbe: %s"
+
+# FIXME
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Nem lehet mmap-olni egy üres fájlt"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Nem sikerült %llu bájtot mmap-olni"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Nem lehetett kettőzni a(z) %i fájlleírót"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "Nem lehet bezárni az mmapot"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "Nem lehet szinkronizálni az mmapot"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Nem sikerült %lu bájtot mmap-olni"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "A fájl csonkítása meghiúsult"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"A dinamikus MMap helye elfogyott. Növelje az APT::Cache-Start méretét. A "
+"jelenlegi érték: %lu. (lásd: man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"Nem lehet növelni az MMap méretét, mert a(z) %lu bájt korlátot már elérte."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Nem lehet növelni az MMap méretét, mert a felhasználó letiltotta az "
+"automatikus emelést."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Hiba!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Kész"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr "..."
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... %u%%"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%lin %lió %lip %limp"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%lió %lip %limp"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%lip %limp"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%limp"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "%s kiválasztás nem található"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+"%s cél ugyanazt a fájlt (%s) próbálja meg beszerezni, mint %s ebből a "
+"forrásból: %s"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr "A(z) %s (%s) cél többször is be van állítva itt: %s és %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "A(z) %s Release fájl nem dolgozható fel"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "A(z) %s Release fájl nem tartalmaz szakaszokat"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Nincs Hash bejegyzés a(z) %s Release fájlban"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+"Nincs Hash bejegyzés a(z) %s Release fájlban, ami biztonsági szempontból "
+"elég erősnek tekinthető"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Érvénytelen „%s†bejegyzés a(z) %s Release fájlban"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+"Ütköző értékek vannak megadva a(z) %s beállításhoz ezen forrásra "
+"vonatkozóan: %s %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+"Érvénytelen érték van megadva a(z) %s beállításhoz ezen forrásra "
+"vonatkozóan: %s %s (%s)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+"Ütköző értékek vannak megadva a(z) %s beállításhoz ezen forrásra "
+"vonatkozóan: %s %s"
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Nem lehet a(z) %s csomagfájlt feldolgozni (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"Az adminisztrációs könyvtár (%s) nem zárolható, lehet hogy másik folyamat "
+"használja?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr ""
+"Az adminisztrációs könyvtár (%s) nem zárolható, rendszergazdaként próbálja?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"A dpkg megszakadt, saját kezűleg kell futtatnia a(z) „%s†parancsot a "
+"probléma megoldásához. "
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Nincs zárolva"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "%s telepítése"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "%s konfigurálása"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "%s eltávolítása"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "%s teljes eltávolítása"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "„%s†eltűnése feljegyezve"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "A(z) %s telepítés utáni trigger futtatása"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "%s telepítve"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "A(z) „%s†könyvtár hiányzik"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "A(z) „%s†fájl megnyitása sikertelen"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "%s előkészítése"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "%s kicsomagolása"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "%s konfigurálásának előkészítése"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "%s eltávolításának előkészítése"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "%s eltávolítva"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "%s teljes eltávolításának előkészítése"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "%s teljesen eltávolítva"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Can not write log (%s)"
+msgstr "Nem lehet a naplót írni (%s)"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr "A /dev/pts csatolva van?"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "A művelet megszakadt, mielőtt befejeződhetett volna"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr "Nem került írásra apport jelentés, mivel a MaxReports már elérve"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "függőségi hibák - a csomag beállítatlan maradt"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Nem került kiírásra apport jelentés, mivel a hibaüzenet szerint ez a hiba "
+"egy korábbi hiba következménye."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Nem került kiírásra apport jelentés, mivel a hibaüzenet szerint megtelt a "
+"lemez"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Nem került kiírásra apport jelentés, mivel a hibaüzenet memóriaelfogyási "
+"hibát jelez"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Nem került kiírásra apport jelentés, mert a hibaüzenet a helyi rendszeren "
+"lévő hibát jelez"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"Nem került kiírásra apport jelentés, mert a hibaüzenet dpkg I/O hibát jelez"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Függőségi fa építése"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Lehetséges verziók"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Függőséggenerálás"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Ãllapotinformációk olvasása"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "%s állapotfájl megnyitása sikertelen"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "%s átmeneti állapotfájl írása sikertelen"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "A helyzet elküldése a solvernek"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "Kérés küldése a solvernek"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "Felkészülés megoldás fogadására"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr "A külső solver megfelelő hibaüzenet nélkül hibázott"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "Külső solver végrehajtása"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Execute external planner"
+msgstr "Külső solver végrehajtása"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send request to planner"
+msgstr "Kérés küldése a solvernek"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send scenario to planner"
+msgstr "A helyzet elküldése a solvernek"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "External planner failed without a proper error message"
+msgstr "A külső solver megfelelő hibaüzenet nélkül hibázott"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "%i rekord kiírva.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "%i rekord kiírva, %i hiányzó fájllal.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "%i rekord kiírva %i eltérő fájllal\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "%i rekord kiírva %i hiányzó és %i eltérő fájllal\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "%s hitelesítési rekordja nem található"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "%s ellenőrzőösszege nem megfelelő"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "A(z) „%s†csomagrendszer nem támogatott"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "A megfelelő csomagrendszertípus nem határozható meg"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr "Haladás: [%3i%%]"
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "A dpkg futtatása"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"Nem lehetett a(z) „%s†közvetlen beállítását végrehajtani. A részletekért "
+"lásd a man 5 apt.conf oldalt az APT::Immediate-Configure címszó alatt. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "A(z) „%s†beállítása sikertelen"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Ez a telepítési lépés átmenetileg megköveteli a(z) %s alapvető csomag "
+"eltávolítását, ami ütközési/előfüggőségi hurkot okoz. Ez gyakran rossz, de "
+"ha tényleg ezt akarja tenni, aktiválja az APT::Force-LoopBreak opciót."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Üres csomaggyorsítótár"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "A csomaggyorsítótár fájl megsérült"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "A csomaggyorsítótár-fájl inkompatibilis verziójú"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Ez az APT nem támogatja a(z) „%s†verziórendszert"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "A csomaggyorsítótár más architektúrákhoz készült: %s és %s"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "A csomaggyorsítótár-fájl sérült, hibás a hash-e"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Függ ettől"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Függ ettől (előfüggés)"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Javasolja"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Ütközik"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Ajánlja"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Kicseréli"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Töri"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Bővíti"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Elavulttá teszi"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "fontos"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "szükséges"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "szabványos"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "extra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "opcionális"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "A gyorsítótárnak inkompatibilis verziórendszere van"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Hiba történt a(z) %s feldolgozása során (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "Az APT által kezelhető csomagnevek száma túllépve."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Az APT által kezelhető csomagverziók száma túllépve."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Az APT által kezelhető csomagleírások száma túllépve."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "Az APT által kezelhető függőségek száma túllépve."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Csomaglisták olvasása"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "IO hiba a forrás-gyorsítótár mentésekor"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "A(z) „%s†indexfájltípus nem támogatott"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"A(z) „%s†érték érvénytelen az APT::Default-Release beállításhoz, mert nincs "
+"ilyen kiadás a forrásokban"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Érvénytelen rekord a(z) %s beállításfájlban, nincs Package fejléc"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "A(z) %s rögzítéstípus nem értelmezhető"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+"%s: A(z) %s érték kívül esik az érvényes rögzítési prioritások tartományán "
+"(%d – %d)"
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Nincs prioritás (vagy nulla) megadva a rögzítéshez"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "%u. bejegyzés rosszul formált a(z) %s %s fájlban (%s)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "%s megnyitása"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "A(z) %u. sor hibás a(z) %s forráslistában (típus)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "„%1$s†típus nem ismert a(z) %3$s forráslista %2$u. sorában"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "A(z) %u. utasítás hibás a(z) %s forráslistában (típus)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "„%1$s†típus nem ismert a(z) %3$s forráslista %2$u. utasításában"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr "Nem támogatott %s fájlt adott meg a parancssorban"
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Néhány „source†URI-t el kell helyezni a sources.list fájlban"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr "%s nem alakítható egésszé: kívül esik a tartományon"
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Sikertelen letöltés: %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Néhány indexfájlt nem sikerült letölteni. Figyelmen kívül lettek hagyva, "
+"vagy régebbiek lettek felhasználva."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Frissítés kiszámítása"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Találat:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Letöltés:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Mellőz:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Hiba:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Letöltve %sB %s alatt (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Folyamatban]"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Helyezze be a(z)\n"
+" „%sâ€\n"
+"címkéjű lemezt a(z) %s meghajtóba, és nyomja meg az Entert\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Függőségek javítása..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " sikertelen."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Nem lehet javítani a függőségeket"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Nem lehet minimalizálni a frissítendő csomagok mennyiségét"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Kész"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+"Próbálja futtatni az „apt --fix-broken install†parancsot ezek javításához."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Teljesítetlen függőségek. Próbálja kiadni az „apt --fix-broken install†"
+"parancsot csomagok nélkül (vagy telepítse a függőségeket is!)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr "Rendezés"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Megjegyzés: „%s†kijelölése „%s†feladathoz\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Megjegyzés: „%s†kijelölése „%s†globhoz\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Megjegyzés: „%s†kijelölése „%s†regexhez\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "%s egy virtuális csomag, melyet az alábbi csomagok biztosítanak:\n"
+
+#: apt-private/private-cacheset.cc
+msgid " [Installed]"
+msgstr " [Telepítve]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [Nem jelölt verzió]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Egyet név szerint ki kell jelölni a telepítésre."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"%s csomag nem elérhető, de egy másik hivatkozik rá.\n"
+"A kért csomag hiányzik, elavult vagy csak más forrásból érhető el\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "De az alábbi csomagok helyettesítik:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "„%s†csomagnak nincs telepítésre jelölt verziója"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "A virtuális csomagokat, mint a(z) „%s†nem lehet eltávolítani\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"A(z) „%s†csomag nincs telepítve, így nem lett törölve. Erre gondolt: „%s�\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "A(z) „%s†csomag nincs telepítve, így nem lett törölve\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Megjegyzés: „%s†kijelölése „%s†helyett\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr "Legtöbbet használt parancsok:"
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr "Az elérhető parancsokkal kapcsolatban további információkért lásd: %s."
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+"A konfigurációs beállítások és a szintaxis az apt.conf(5) fájlban "
+"találhatók.\n"
+"A források beállításával kapcsolatos információkat a sources.list(5) "
+"tartalmazza.\n"
+"A csomag- és verzióválasztások az apt_preferences(5) használatával adhatók "
+"meg.\n"
+"A biztonsági adatok az apt-secure(8)-ban vannak.\n"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Ez az APT a SzuperTehén Hatalmával rendelkezik."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr "Ez az APT segéd a Szuper Meep Hatalmával rendelkezik."
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Nem találhatók csomagok"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "FIGYELMEZTETÉS: Az alábbi csomagok nem hitelesíthetők!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "A hitelesítési figyelmeztetés felülbírálva.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Néhány csomag nem hitelesíthető"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Valóban ellenőrzés nélkül telepíti a csomagokat?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr "a --force-yes elavult, használja a --allow kezdetű kapcsolók egyikét."
+
+#: apt-private/private-download.cc
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr ""
+"Hitelesítetlen csomagok vannak, és a -y kapcsolót használta\n"
+"a --allow-unauthenticated nélkül."
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Nem határozható meg a szabad hely mennyisége itt: %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Nincs elég szabad hely itt: %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Nem lehet zárolni a letöltési könyvtárat"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Néhány csomagot nem lehetett telepíteni. Ez azt jelentheti, hogy\n"
+"egy lehetetlen állapotot kért, vagy ha az unstable disztribúciót\n"
+"használja, akkor néhány igényelt csomag még nem készült el vagy ki\n"
+"lett mozdítva az Incoming-ból."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Az alábbi információk segíthetnek megoldani a problémát:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Törött csomagok"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Nem lehet letölteni néhány archívumot. Próbálja futtatni az „apt-get update†"
+"parancsot, vagy használja a --fix-missing kapcsolót."
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Belső hiba, az InstallPackages törött csomagokkal lett meghívva!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Csomagokat kellene eltávolítani, de az eltávolítás nem engedélyezett."
+
+#: apt-private/private-install.cc
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr ""
+"Alapvető csomagok lettek eltávolítva, és a -y kapcsolót használta\n"
+"a --allow-remove-essential nélkül."
+
+#: apt-private/private-install.cc
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr ""
+"Vissza lettek fejlesztve csomagok, és a -y kapcsolót használta\n"
+"a --allow-downgrades nélkül."
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+"Visszatartott csomagok módosultak, és a -y kapcsolót használta\n"
+"a --allow-change-held-packages nélkül."
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Belső hiba, a rendezés nem fejeződött be"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr "A méretek nem egyeznek, írjon az apt@packages.debian.org címre"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Letöltendő adatmennyiség: %sB/%sB.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Letöltendő adatmennyiség: %sB.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "A művelet után %sB lemezterület kerül felhasználásra.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "A művelet után %sB lemezterület szabadul fel.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "A „Trivial Only†meg van adva, de ez nem egy triviális művelet."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Igen, tedd amit mondok!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Ãrtalmasnak tűnÅ‘ műveletet készül végrehajtani.\n"
+"A folytatáshoz írja be ezt a mondatot: „%sâ€\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Megszakítva."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Folytatni akarja?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Néhány fájlt nem sikerült letölteni"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "A letöltés befejeződött a „csak letöltés†módban"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "A --fix-missing és az adathordozó-csere jelenleg nem támogatott"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Nem lehet javítani a hiányzó csomagokat."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Telepítés megszakítása."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"A következő csomag eltűnt a rendszerből, mivel\n"
+"az összes fájlt más csomagok fölülírták:"
+msgstr[1] ""
+"A következő csomagok eltűntek a rendszerből, mivel\n"
+"az összes fájlt más csomagok fölülírták:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Megjegyzés: ezt a dpkg automatikusan és szándékosan hajtja végre."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "Nem kellene semmit törölni, az AutoRemover nem indítható"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Úgy tűnik, az AutoRemover hibát okozott, ez nem történhetne meg.\n"
+"Küldjön hibajelentést az apt csomaghoz."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Belső hiba, az AutoRemover sérült"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"A következő csomag automatikusan lett telepítve, és már nincs rá szükség:"
+msgstr[1] ""
+"A következő csomagok automatikusan lettek telepítve, és már nincs rájuk "
+"szükség:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "%lu csomag automatikusan lett telepítve, és már nincs rá szükség.\n"
+msgstr[1] ""
+"%lu csomag automatikusan lett telepítve, és már nincs rájuk szükség.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Ezt az „%s†paranccsal törölheti."
+msgstr[1] "Ezeket az „%s†paranccsal törölheti."
+
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "A következő további csomagok lesznek telepítve:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Javasolt csomagok:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Ajánlott csomagok:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "%s kihagyása, ez már telepítve van, és a frissítés nincs beállítva.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr "„%s†kihagyása, nincs telepítve, és csak frissítések lettek kérve.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "%s újratelepítése nem lehetséges, mert nem lehet letölteni.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s már a legújabb verzió (%s).\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s kézi telepítésűre állítva.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "„%s†(%s) verzió lett kijelölve ehhez: „%sâ€\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "„%s†(%s) verzió lett kijelölve ehhez: „%sâ€, a(z) „%s†miatt\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr "Felsorolás"
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+"%i további verzió van. A megjelenítéséhez használja a „-a†kapcsolót"
+msgstr[1] ""
+"%i további verzió van. A megjelenítésükhöz használja a „-a†kapcsolót"
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"NE FELEDJE: Ez csak szimuláció!\n"
+" Az %s rendszergazdai jogokat igényel a tényleges végrehajtáshoz.\n"
+" Ne feledje, hogy a zárolás is ki van kapcsolva,\n"
+" így ne számítson a jelenlegi helyzet valósságára!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr "ismeretlen"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr "[telepítve, frissíthető erre: %s]"
+
+#: apt-private/private-output.cc
+msgid "[installed,local]"
+msgstr "[telepítve, helyi]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr "[telepítve, auto-eltávolítható]"
+
+#: apt-private/private-output.cc
+msgid "[installed,automatic]"
+msgstr "[telepítve, automatikus]"
+
+#: apt-private/private-output.cc
+msgid "[installed]"
+msgstr "[telepítve]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr "[frissíthető erről: %s]"
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr "[megmaradt konfig]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "de %s van telepítve"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "de csak %s telepíthető"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "de az nem telepíthető"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "de az egy virtuális csomag"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "de az nincs telepítésre megjelölve"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "de az nincs telepítve"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " vagy"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Az alábbi csomagoknak teljesítetlen függőségei vannak:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Az alábbi ÚJ csomagok lesznek telepítve:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Az alábbi csomagok el lesznek TÃVOLÃTVA:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Az alábbi csomagok vissza lesznek tartva:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Az alábbi csomagok frissítve lesznek:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Az alábbi csomagok VISSZAFEJLESZTÉSRE kerülnek:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "A következő visszatartott csomagok cseréje:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (%s miatt)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"FIGYELMEZTETÉS: Az alábbi alapvető csomagok el lesznek távolítva.\n"
+"NE tegye ezt, hacsak nem tudja pontosan, mit csinál!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu frissített, %lu újonnan telepített, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu újratelepítendő, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu visszafejlesztendő, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu eltávolítandó és %lu nem frissített.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu nincs teljesen telepítve/eltávolítva.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[I/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[i/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "I"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "Legalább egy keresési mintát meg kell adnia"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr "Keresés a teljes szövegben"
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "%s csomagfájl nincs szinkronban."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+"%i további rekord van. A megjelenítéséhez használja a „-a†kapcsolót"
+msgstr[1] ""
+"%i további rekord van. A megjelenítésükhöz használja a „-a†kapcsolót"
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr "nem valódi csomag (virtuális)"
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Csomagfájlok:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+"A gyorsítótár nincs szinkronban, nem lehet kereszthivatkozni a csomagfájlra"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Rögzített csomagok:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr "%s -> %s, %d prioritással\n"
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Telepítve: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Jelölt: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(nincs)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Verziótáblázat:"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Nem található csomag a(z) „%s†architektúrához"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Nem található „%s†csomag „%s†verzióval"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Nem található „%s†csomag „%s†kiadással"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "„%s†kiválasztása forráscsomagként „%s†helyett\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "A(z) „%2$s†csomag „%1$s†verziója nem érhető el"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr ""
+"Legalább egy csomagot meg kell adni, amelynek a forrását le kell tölteni"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Nem található forráscsomag ehhez: %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"MEGJEGYZÉS: a(z) „%s†csomagolása a(z) „%s†verziókövető rendszerben van "
+"karbantartva:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Használja a következő parancsot:\n"
+"%s\n"
+"a csomag legújabb (esetleg kiadatlan) frissítéseinek letöltéséhez.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "A már letöltött „%s†fájl kihagyása\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Letöltendő forrásadat-mennyiség: %sB/%sB.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Letöltendő forrásadat-mennyiség: %sB.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Forrás letöltése: %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Nem sikerült néhány archívumot letölteni."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Egy már kibontott forrás kibontásának kihagyása itt: %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "„%s†kibontási parancs nem sikerült.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Ellenőrizze, hogy a „dpkg-dev†csomag telepítve van-e.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "„%s†elkészítési parancs nem sikerült.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Nem lehet %s fordítási függőségeinek információit letölteni"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "Nincs fordítási függősége a következőnek: %s.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Legalább egy csomagot adjon meg, amelynek fordítási függőségeit ellenőrizni "
+"kell"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"Nem érhetők el architektúrainformációk ehhez: %s. A beállításokkal "
+"kapcsolatban lásd az apt.conf(5) APT::Architectures részét."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+"Megjegyzés: %s könyvtár használata a fordítási függőségek lekéréséhez\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Megjegyzés: %s fájl használata a fordítási függőségek lekéréséhez\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Nem sikerült az építési függőségeket feldolgozni"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "%s feldolgozása sikertelen. Újra szerkeszti? "
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr "A(z) „%s†fájl megváltozott, adja ki az „apt-get update†parancsot."
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "%s csomag %s verziójának teljesítetlen függősége van:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Az update parancsnak nincsenek argumentumai"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+"%i csomag frissíthető. A megjelenítéséhez futtassa az „apt list --"
+"upgradable†parancsot.\n"
+msgstr[1] ""
+"%i csomag frissíthető. A megjelenítésükhöz futtassa az „apt list --"
+"upgradable†parancsot.\n"
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr "Minden csomag naprakész."
+
+#: cmdline/apt-cache.cc
+msgid "apt-cache stats does not take any arguments"
+msgstr "Az apt-cache stats parancsnak nincsenek argumentumai"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Csomagnevek összesen : "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Csomagstruktúrák összesen: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Normális csomagok: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Teljesen virtuális csomagok: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Egyedi virtuális csomagok: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Vegyes virtuális csomagok: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Hiányzik: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Különböző verziók összesen: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Összes különböző leírás: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Függőségek összesen: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Verzió/Fájl kapcsolatok összesen: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Leírás/Fájl kapcsolatok összesen: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "„Biztosítja†kapcsolatok összesen: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Minták összesen: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Slack terület összesen: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Nyilvántartott terület összesen: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr "Ez a parancs elavult. Használja helyette az „apt-mark showautoâ€-t."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+"Használat: apt-cache [kapcsolók] parancs\n"
+" apt-cache [kapcsolók] show csom1 [csom2 ...]\n"
+"\n"
+"Az apt-cache telepített és telepíthető csomagokról kérdezi le és jeleníti\n"
+"meg az elérhető információkat. Kizárólag a helyi gyorsítótárba az\n"
+"apt-get (vagy hasonló) update parancsával beszerzett adatokon dolgozik.\n"
+"A megjelenő információk így elavultak lehetnek, ha az utolsó frissítés\n"
+"túl régen volt, cserébe az apt-cache a beállított források elérhetőségétől\n"
+"függetlenül működik, például kapcsolat nélküli módban.\n"
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Megjeleníti a forrásrekordokat"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "A csomaglistában keres reguláris kifejezéseket"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Nyers függőségi információt mutat a csomagról"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Fordított függőségi információkat jelenít meg a csomagról"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Megjeleníti a csomag leírását"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Kilistázza az összes csomag nevét"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Megjeleníti a policy beállításokat"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Adja meg a lemez nevét, mint például „Debian 5.0.3 1. lemezâ€"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Helyezzen be egy lemezt a meghajtóba, és nyomja meg az Entert"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "„%s†csatolása a(z) „%s†könyvtárba meghiúsult"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+"Nem ismerhető fel automatikusan, vagy nem található CD-ROM az "
+"alapértelmezett csatolási pont használatával.\n"
+"Megpróbálhatja a --cdrom kapcsolóval beállítani a CD-ROM csatolási pontját.\n"
+"A CD-ROM automatikus felismerésével és csatolási pontjával kapcsolatos "
+"információkért lásd a „man apt-cdrom†parancsot."
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Ismételje meg a folyamatot készlete többi CD-jével is."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+"Használat: apt-cdrom [kapcsolók] parancs\n"
+"\n"
+"Az apt-cdrom használatával CD-ROM-ok, USB pendrive-ok és más cserélhető\n"
+"adathordozók vehetők fel csomagforrásként az APT-hoz. A csatolási pont és "
+"az\n"
+"eszközinformációk az apt.conf(5), udev(7) és fstab(5) használatával állnak "
+"elő.\n"
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Az argumentumok nincsenek párban"
+
+#: cmdline/apt-config.cc
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Használat: apt-config [kapcsolók] parancs\n"
+"\n"
+"Az apt-config egy felület az APT eszközök által használt konfigurációs\n"
+"beállításokhoz, főleg hibakereséshez és parancsfájlokhoz tervezve.\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr "konfigurációs értékek lekérése parancsértelmező-kiértékelés útján"
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr "az aktív konfigurációs beállítás megjelenítése"
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Használat: apt-extracttemplates fájl1 [fájl2 ...]\n"
+"\n"
+"Az apt-extracttemplates konfigurációs- és sabloninformációk debian-\n"
+"csomagokból való kinyerésére használható. Elsősorban a debconf(1)\n"
+"használja konfigurációs kérdések feltételéhez a csomagok telepítése előtt.\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Nem lehet megállapítani a debconf verziót. A debconf telepítve van?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Az alábbi csomag nem található: %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s megjelölve automatikusan telepítettként.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Ez a parancs elavult. Használja helyette az „apt-mark auto†és az „apt-mark "
+"auto†parancsokat."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Belső hiba, a problémamegoldó hibát okozott"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Támogatott modulok:"
+
+#: cmdline/apt-get.cc
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Használat: apt-get [kapcsolók] parancs\n"
+" apt-get [kapcsolók] install|remove csom1 [csom2 ...]\n"
+" apt-get [kapcsolók] source csom1 [csom2 ...]\n"
+"\n"
+"Az apt-get egy parancssori felület csomagok és információk letöltésére\n"
+"hitelesített forrásokból, valamint csomagok telepítésére,\n"
+"frissítésére és eltávolítására a függőségeikkel együtt.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Frissíti a csomaglistákat"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Frissítés végrehajtása"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Új csomagok telepítése (csomag a libc6 és nem a libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Csomagok eltávolítása"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Eltávolítja és teljesen törli a csomagokat"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Automatikusan eltávolítja a nem használt csomagokat"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Disztribúciófrissítés, lásd apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Követi a dselect kijelöléseit"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Forráscsomagok építési függőségét konfigurálja"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Törli a letöltött archívumfájlokat"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Törli a régi letöltött archívumfájlokat"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Ellenőrzi, hogy nincsenek-e törött függőségek"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Forrásarchívumok letöltése"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "Bináris csomag letöltése a jelenlegi mappába"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "Adott csomag változási naplójának letöltése és megjelenítése"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr "Szükséges egy URL argumentum"
+
+#: cmdline/apt-helper.cc
+msgid "Must specify at least one pair url/filename"
+msgstr "Legalább egy pár URL-t/fájlnevet meg kell adni"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr "A letöltés meghiúsult"
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr "A GetSrvRec hívás meghiúsult ehhez: %s"
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+"Használat: apt-helper [kapcsolók] parancs\n"
+" apt-helper [kapcsolók] cat-file fájl ...\n"
+" apt-helper [kapcsolók] download-file uri célútvonal\n"
+"\n"
+"Az apt-helper különböző parancsokat csomagol össze parancsfájlok számára,\n"
+"hogy azok például ugyanazokat proxybeállításokat vagy beszerzési\n"
+"rendszert használhassák, mint az APT.\n"
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr "a megadott URI letöltése a célútvonalra"
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr "SRV rekord kikeresése (például: _http._tcp.ftp.debian.org)"
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr "fájlok összefűzése, automatikus kibontással"
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr "proxyfelismerés az apt-conf használatával"
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Használat: apt-internal-solver\n"
+"\n"
+"Az apt-internal-solver felülettel az aktuális belső feloldó külső\n"
+"feloldóként használható az APT családhoz hibakeresési vagy hasonló céllal\n"
+
+#: cmdline/apt-internal-solver.cc
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Használat: apt-internal-solver\n"
+"\n"
+"Az apt-internal-solver felülettel az aktuális belső feloldó külső\n"
+"feloldóként használható az APT családhoz hibakeresési vagy hasonló céllal\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "%s nem jelölhető meg, mivel nincs telepítve.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s már be van állítva kézi telepítésűre.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s már meg van jelölve automatikusan telepítettként.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s már be van állítva visszatartásra.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s eddig sem volt visszatartva.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "A dpkg futtatása sikertelen. Van root jogosultsága?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "%s beállítva visszatartásra.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Visszatartás törölve ezen: %s.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr "%s kijelölve teljes törlésre.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr "%s kijelölve eltávolításra.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr "%s kijelölve telepítésre.\n"
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"Használat: apt-mark [kapcsolók] {auto|manual} csom1 [csom2 ...]\n"
+"\n"
+"Az apt-mark egy egyszerű parancssori felület csomagok megjelölésére\n"
+"kézileg vagy automatikusan telepítettként. Használható a csomagok dpkg(1)\n"
+"kijelölési állapotainak manipulálására is, valamint adott kijelöléssel\n"
+"rendelkező vagy nem rendelkező összes csomag kiíratására is.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "Az adott csomagok megjelölése automatikusan telepítettként"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "Az adott csomagok megjelölése kézzel telepítettként"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr "Csomag megjelölése visszatartottként"
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr "Csomag visszatartottként megjelölésének törlése"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr "Automatikusan telepített csomagok listájának kiírása"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr "Kézileg telepített csomagok listájának kiírása"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr "Visszatartott csomagok listájának megjelölése"
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Ismeretlen csomagbejegyzés!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+"Használat: apt-sortpkgs [kapcsolók] fájl1 [fájl2 ...]\n"
+"\n"
+"Az apt-sortpkgs csomaginformációs fájlok rendezésére szolgál.\n"
+"Alapesetben bináris csomagok információi alapján rendez, de a -s "
+"kapcsolóval\n"
+"át lehet váltani forrás csomagok szerinti sorrendre.\n"
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+"Használat: apt [kapcsolók] parancs\n"
+"\n"
+"Az apt egy parancssori csomagkezelő, amely parancsokat biztosít csomagok\n"
+"keresésére és kezelésére, illetve információk lekérésére.\n"
+"Ugyanazokat a funkciókat biztosítja, mint a specializált APT eszközök,\n"
+"például az apt-get és az apt-cache, de az interaktív használathoz\n"
+"megfelelőbb beállításokat tesz alapértelmezésben elérhetővé.\n"
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr "csomagok kiírása csomagnevek alapján"
+
+#: cmdline/apt.cc
+msgid "search in package descriptions"
+msgstr "keresés csomagleírásokban"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr "csomagrészletek megjelenítése"
+
+#. package stuff
+#: cmdline/apt.cc
+msgid "install packages"
+msgstr "csomagok telepítése"
+
+#: cmdline/apt.cc
+msgid "remove packages"
+msgstr "csomagok eltávolítása"
+
+#. system wide stuff
+#: cmdline/apt.cc
+msgid "update list of available packages"
+msgstr "elérhető csomagok listájának frissítése"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr "a rendszer frissítése csomagok telepítésével/frissítésével"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+"a rendszer frissítése csomagok eltávolításával/telepítésével/frissítésével"
+
+#. misc
+#: cmdline/apt.cc
+msgid "edit the source information file"
+msgstr "a forrásinformációs fájl szerkesztése"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Hibás alapértelmezett beállítás!"
+
+#: dselect/install dselect/update
+msgid "Press [Enter] to continue."
+msgstr "A folytatáshoz nyomja meg az Entert."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Törli a korábban letöltött .deb fájlokat?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "Hiba történt a kicsomagolás során. A telepített csomagok"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "beállításra kerülnek. Ez többszörös"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"vagy hiányzó függőségek miatti hibákat okozhat. Ez így van rendben, csak az "
+"ezen üzenet"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr "előtti hibák fontosak. Javítsa azokat, és futtassa az [I]nstallt újra"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Elérhető információk egyesítése"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "A csomagkiterjesztések listája túl hosszú"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Hiba a(z) %s könyvtár feldolgozásakor"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "A forráskiterjesztések listája túl hosszú"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Hiba a tartalomfájl fejlécének írásakor"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Hiba %s tartalmának feldolgozásakor"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Használat: apt-ftparchive [kapcsolók] parancs\n"
+"Parancsok: packages binarypath [felülbírálófájl [útvonalelőtag]]\n"
+" sources srcpath [felülbírálófájl [útvonalelőtag]]\n"
+" contents útvonal\n"
+" release útvonal\n"
+" generate konfigfájl [csoportok]\n"
+" clean konfigfájl\n"
+"\n"
+"Az apt-ftparchive indexfájlokat generál a Debian archívumokhoz. A generálás\n"
+"sok stílusát támogatja, a teljesen automatizálttól kezdve a\n"
+"dpkg-scanpackages és a dpkg-scansources funkcionális helyettesítéséig.\n"
+"\n"
+"Az apt-ftparchive Package fájlokat generál a .deb-ek fájából. A Package\n"
+"fájl minden vezérlő mezőt tartalmaz minden egyes csomagról úgy az MD5\n"
+"hasht mint a fájlméretet. Az override (felülbíráló) fájl támogatott a\n"
+"Prioritás és Szekció mezők értékének kényszerítésére.\n"
+"\n"
+"Hasonlóképpen az apt-ftparchive Sources fájlokat generál .dsc-k fájából.\n"
+"A --source-override opció használható forrás-felülbíráló fájlok megadására\n"
+"\n"
+"A „packages†és „sources†parancsokat a fa gyökeréből kell futtatni.\n"
+"A BinaryPath-nak a rekurzív keresés kiindulópontjára kell mutatnia, és\n"
+"a felülbírálófájlnak a felülbíráló jelzőket kell tartalmaznia. Az "
+"útvonalelőtag\n"
+"hozzáadódik a fájlnév mezőkhöz, ha meg van adva. Felhasználására egy példa "
+"a\n"
+"Debian archívumból:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Kapcsolók:\n"
+" -h Ez a súgó szöveg\n"
+" --md5 MD5 generálás vezérlése\n"
+" -s=? Forrás-felülbíráló fájl\n"
+" -q Szűkszavú mód\n"
+" -d=? Opcionális gyorsítótár-adatbázis kiválasztása\n"
+" --no-delink „delink†hibakereső mód bekapcsolása\n"
+" --contents Tartalom fájl generálásának ellenőrzése\n"
+" -c=? Ezt a konfigurációs fájlt olvassa be\n"
+" -o=? Beállít egy tetszőleges konfigurációs opciót"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Nincs illeszkedő kiválasztás"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Néhány fájl hiányzik a(z) „%s†csomagfájlcsoportból"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "A DB megsérült, a fájl átnevezve %s.old-ra"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "A DB régi, kísérlet a következő frissítésére: %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Az adatbázis-formátum érvénytelen. Ha az apt egy korábbi verziójáról "
+"frissített, akkor távolítsa el, és hozza létre újra az adatbázist."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "A(z) %s DB fájlt nem lehet megnyitni: %s"
+
+#: ftparchive/cachedb.cc
+msgid "Failed to read .dsc"
+msgstr "Nem sikerült olvasni a .dsc fájlt"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Az archívumnak nincs vezérlő rekordja"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Nem sikerült egy mutatóhoz jutni"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Nem sikerült memóriát lefoglalni"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "„%s†tömörítési algoritmus ismeretlen"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "%s tömörített kimenetnek egy tömörítő készletre van szüksége"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Nem sikerült IPC-adatcsatornát létrehozni az alfolyamathoz"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Nem sikerült forkolni"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Gyermekfolyamat tömörítése"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Belső hiba, %s létrehozása sikertelen"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "IO az alfolyamathoz/fájlhoz nem sikerült"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Olvasási hiba az MD5 kiszámításakor"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "%s megnyitása sikertelen"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "%s felülbírálás deformált a(z) %llu. sorában (%s)"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Nem lehet a(z) %s felülbírálófájlt olvasni"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "%s felülbírálás deformált a(z) %llu. sorában #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "%s felülbírálás deformált a(z) %llu. sorában #2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "%s felülbírálás deformált a(z) %llu. sorában #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "F: nem lehet a(z) %s könyvtárat olvasni\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "F: %s nem érhető el\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "H: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "F: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "H: Hibás a fájl "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Nem sikerült feloldani ezt: %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Fabejárás nem sikerült"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "%s megnyitása sikertelen"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** %s linkelése sikertelen ehhez: %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " a DeLink korlátja (%sB) elérve.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Az archívumnak nem volt csomag mezője"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s nem rendelkezik felülbíráló bejegyzéssel\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " %s karbantartója %s, nem %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s nem rendelkezik forrás-felülbíráló bejegyzéssel\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s nem rendelkezik bináris-felülbíráló bejegyzéssel sem\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Várakozás a fejlécekre"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "A HTTP-kiszolgáló érvénytelen válaszfejlécet küldött"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Rossz fejlécsor"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "A HTTP-kiszolgáló érvénytelen Content-Length fejlécet küldött"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "A HTTP-kiszolgáló érvénytelen Content-Range fejlécet küldött"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "A HTTP-kiszolgáló tartománytámogatása sérült"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Ismeretlen dátumformátum"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Rossz fejlécadatok"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Sikertelen kapcsolódás"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+"%s automatikusan letiltva, mert hibás válasz érkezett a kiszolgálótól/"
+"proxytól. (lásd: man 5 apt.conf)"
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Belső hiba"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "%s CD-ROM adatbázis nem olvasható"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Használja az apt-cdrom parancsot a CD felismertetésére. Az apt-get update "
+"nem használható új CD-k hozzáadására."
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Hibás CD"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr ""
+"Nem lehet leválasztani az itt lévő CD-ROM-ot: %s, még használatban lehet."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "A lemez nem található."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "A fájl nem található"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Csatlakozás: %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Foglalat létrehozása sikertelen ehhez: %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Kapcsolat létrehozása sikertelen ehhez: %s: %s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Időtúllépés miatt nem lehet kapcsolódni a következőhöz: %s: %s (%s)"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Sikertelen"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Nem lehet kapcsolódni ehhez: %s: %s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Kapcsolódás: %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Nem lehet feloldani a következÅ‘t: „%sâ€"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Ãtmeneti hiba „%s†feloldása közben"
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Rendszerhiba „%s:%s†feloldásakor"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Hiba történt „%s:%s†feloldásakor (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Nem lehet csatlakozni ehhez: %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Nem érhető el"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Érvénytelen URI, helyi URI-k nem kezdődhetnek //-rel"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Bejelentkezés"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Nem lehet a partner nevét megállapítani"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Nem lehet a helyi nevet megállapítani"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "A kiszolgáló visszautasította a kapcsolatot: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "Hibás USER, a kiszolgáló üzenete: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "Hibás PASS, a kiszolgáló üzenete: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Meg lett adva proxy kiszolgáló, de nincs bejelentkezési parancsfájl és az "
+"Acquire::ftp::ProxyLogin üres."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr ""
+"A bejelentkezési parancsfájl „%s†parancsa sikertelen, a kiszolgáló üzenete: "
+"%s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "Hibás TYPE, a kiszolgáló üzenete: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Időtúllépés a kapcsolatban"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "A kiszolgáló lezárta a kapcsolatot"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "A válasz túlcsordította a puffert."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Protokollhiba"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Nem lehet létrehozni a foglalatot"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr ""
+"Nem lehet kapcsolódni az adatfoglalathoz, a kapcsolat túllépte az időkorlátot"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Nem lehet kapcsolódni a passzív foglalathoz."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "A getaddrinfo nem talált figyelőfoglalatot"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Nem lehet összekapcsolódni a foglalattal"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Nem lehet figyelni a foglalaton"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Nem lehet megállapítani a foglalat nevét"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Nem lehet PORT parancsot küldeni"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Ismeretlen címcsalád: %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "Hibás EPRT, a kiszolgáló üzenete: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Az adatfoglalathoz kapcsolódás túllépte az időkorlátot"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Nem lehet elfogadni a kapcsolatot"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Probléma a fájl hash értékének meghatározásakor"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Nem lehet letölteni a fájlt, a kiszolgáló üzenete: „%sâ€"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Az adatfoglalat túllépte az időkorlátot"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Az adatátvitel sikertelen, a kiszolgáló üzenete: „%sâ€"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Lekérdezés"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Nem lehet meghívni "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, fuzzy, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+"A digitálisan aláírt fájl nem érvényes, érkezett: „%s†(igényel a hálózat "
+"hitelesítést?)"
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Legalább egy aláírás érvénytelen."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr "Belső hiba: Jó aláírás, de nem állapítható meg a kulcs ujjlenyomata."
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Nem indítható el a „apt-key†az aláírás ellenőrzéséhez (telepítve van a "
+"gnupg?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Ismeretlen apt-key futtatási hiba"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr "%s kulcs aláírása gyenge kivonatoló algoritmust használ (%s)"
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Az alábbi aláírások érvénytelenek voltak:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Az alábbi aláírások nem ellenőrizhetők, mert a nyilvános kulcs nem érhető "
+"el:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Hiba a fájl írásakor"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Hiba a kiszolgálóról olvasáskor, a túloldal lezárta a kapcsolatot"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Hiba a kiszolgálóról olvasáskor"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Hiba a fájl írásakor"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "A kiválasztás sikertelen"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Időtúllépés a kapcsolatban"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Hiba a kimeneti fájl írásakor"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Nem található a(z) „%s†tükörfájl "
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "A(z) „%s†tükörfájl nem olvasható"
+
+#: methods/mirror.cc
+#, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Nem található bejegyzés a(z) „%s†tükörfájlban"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Tükör: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "A módosítási idő beállítása sikertelen"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "A kapcsolat idő előtt lezárult"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "Az üres fájlok biztosan nem érvényes csomagok"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Teljesítetlen függőségek. Próbálja a --fix-broken használatával."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Próbálja futtatni az „apt --fix-broken install†parancsot az alábbiak "
+#~ "javításához:"
+
+#~ msgid "(not found)"
+#~ msgstr "(nem található)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Csomagrögzítés: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "Nem érhető el nyilvános kulcs az alábbi kulcsazonosítókhoz:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "A(z) %s könyvtár eltérítve"
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "%2$s csomag %1$s függősége nem elégíthető ki, mert a(z) %3$s nem "
+#~ "engedélyezett a(z) „%4$s†csomagokon"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "%2$s csomag %1$s függősége nem elégíthető ki, mert a(z) %3$s csomag nem "
+#~ "található"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "%2$s csomag %1$s függősége nem elégíthető ki: a telepített %3$s csomag "
+#~ "túl friss"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "%2$s csomag %1$s függősége nem elégíthető ki, mert a(z) %3$s csomag "
+#~ "elérhető verziója nem elégíti ki a verziókövetelményeket"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "%2$s csomag %1$s függősége nem elégíthető ki, mert a(z) %3$s csomagnak "
+#~ "nincs jelölt verziója"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "%2$s csomag %1$s függősége nem elégíthető ki: %3$s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "%s építési függőségei nem elégíthetők ki."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Hiba %s törlésekor"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "%s törlése sikertelen"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Használat: apt-cache [kapcsolók] parancs\n"
+#~ " apt-cache [kapcsolók] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "Az apt-cache egy alacsony szintű eszköz információk lekérdezésére\n"
+#~ "az APT bináris gyorsítótár-fájljaiból\n"
+
+#~ msgid "Commands:"
+#~ msgstr "Parancsok:"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Kapcsolók:\n"
+#~ " -h Ez a súgó szöveg. \n"
+#~ " -p=? A csomag-gyorsítótár.\n"
+#~ " -s=? A forrás-gyorsítótár.\n"
+#~ " -q Letiltja az állapotjelzőt.\n"
+#~ " -i Csak a fontos függőségeket jeleníti meg az unmet parancsnál.\n"
+#~ " -c=? Ezt a konfigurációs fájlt olvassa be\n"
+#~ " -o=? Beállít egy tetszőleges konfigurációs opciót, pl. -o dir::cache=/"
+#~ "tmp\n"
+#~ "Lásd az apt-cache(8) és apt.conf(5) kézikönyvlapokat további "
+#~ "információkért.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "Kapcsolók:\n"
+#~ " -h Ez a súgó szöveg.\n"
+#~ " -q Naplózható kimenet - nincs folyamatjelző\n"
+#~ " -qq Nincs kimenet, kivéve a hibákat\n"
+#~ " -s Szimulációs mód. Csak kiírja, mi történne.\n"
+#~ " -f auto/kézi megjelölés olvasása/írása az adott fájlból/fájlba\n"
+#~ " -c=? Ezt a konfigurációs fájlt olvassa be\n"
+#~ " -o=? Beállít egy tetszőleges konfigurációs opciót, pl. -o dir::cache=/"
+#~ "tmp\n"
+#~ "Lásd még az apt-mark(8) és apt.conf(5) kézikönyvlapokat további\n"
+#~ "információkért."
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Kapcsolók:\n"
+#~ " -h Ez a súgó szöveg\n"
+#~ " -c=? Ezt a konfigurációs fájlt olvassa be\n"
+#~ " -o=? Beállít egy tetszőleges konfigurációs opciót, pl -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "Kapcsolók:\n"
+#~ " -h Ez a súgó szöveg.\n"
+#~ " -q Naplózható kimenet - nincs folyamatjelző\n"
+#~ " -qq Nincs kimenet, kivéve a hibákat\n"
+#~ " -s Szimulációs mód. Csak kiírja, mi történne.\n"
+#~ " -f auto/kézi megjelölés olvasása/írása az adott fájlból/fájlba\n"
+#~ " -c=? Ezt a konfigurációs fájlt olvassa be\n"
+#~ " -o=? Beállít egy tetszőleges konfigurációs opciót, pl. -o dir::cache=/"
+#~ "tmp\n"
+#~ "Lásd még az apt-mark(8) és apt.conf(5) kézikönyvlapokat további\n"
+#~ "információkért."
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Használat: apt-sortpkgs [kapcsolók] fájl1 [fájl2 ...]\n"
+#~ "\n"
+#~ "Az apt-sortpkgs egy egyszerű eszköz csomagfájlok rendezésére. A -s "
+#~ "kapcsolót\n"
+#~ "lehet használni annak jelzésére hogy ez milyen típusú fájl.\n"
+#~ "\n"
+#~ "Kapcsolók:\n"
+#~ " -h Ez a súgó szöveg\n"
+#~ " -s Forrásfájlrendezést használ\n"
+#~ " -c=? Ezt a konfigurációs fájlt olvassa be\n"
+#~ " -o=? Beállít egy tetszőleges konfigurációs opciót, pl -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Hiba a gyermekfolyamatnál"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr ""
+#~ "Legalább egy csomagot meg kell adni, amelynek a forrását le kell tölteni"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Nem sikerült adatcsatornákat létrehozni"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Nem sikerült a gzipet futtatni "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s erre: %s lefordítva ekkor: %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Nem sikerült FILE*-ot létrehozni"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "A(z) %lu. sor hibás a(z) %s forráslistában (URI-feldolgozás)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "Helytelenül formázott a(z) %lu. sor a(z) %s forráslistában (az [option] "
+#~ "feldolgozhatatlan)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr ""
+#~ "Helytelenül formázott a(z) %lu. sor a(z) %s forráslistában (az [option] "
+#~ "túl rövid)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr ""
+#~ "Helytelenül formázott a(z) %lu. sor a(z) %s forráslistában ([%s] nem "
+#~ "érvényes hozzárendelés)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr ""
+#~ "Helytelenül formázott a(z) %lu. sor a(z) %s forráslistában ([%s] nem "
+#~ "tartalmaz kulcsot)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "Helytelenül formázott a(z) %lu. sor a(z) %s forráslistában ([%s] %s "
+#~ "kulcsnak nincs értéke)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "A(z) %lu. sor hibás a(z) %s forráslistában (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "A(z) %lu. sor hibás a(z) %s forráslistában (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "A(z) %lu. sor hibás a(z) %s forráslistában (URI-feldolgozás)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "A(z) %lu. sor hibás a(z) %s forráslistában (Abszolút dist)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "A(z) %lu. sor hibás a(z) %s forráslistában (dist feldolgozás)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr ""
+#~ "A(z) %s %s csomag nem volt megtalálható a fájl függőségeinek feldolgozása "
+#~ "közben"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Nem lehet a(z) %s forrás csomaglistáját elérni"
+
+# FIXME
+#~ msgid "Collecting File Provides"
+#~ msgstr "„Biztosítja†kapcsolatok összegyűjtése"
+
+#, fuzzy
+#~ msgid "Does not start with a cleartext signature"
+#~ msgstr "A(z) %s fájl nem digitálisan aláírt üzenettel kezdődik"
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Nem található a(z) „%s†ellenőrzőösszege a Release fájlban"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "A(z) %s terjesztőblokk nem tartalmaz ujjlenyomatot"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Függőségiverzió-terület összesen: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Nincs elég szabad hely itt: %s"
+
+#~ msgid "Done"
+#~ msgstr "Kész"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Nincs kulcstartó telepítve ide: %s."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Belső hiba, az AllUpgrade megsértett valamit"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s nem egy érvényes DEB csomag."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "%s CD-ROM csatolási pont használata\n"
+#~ "CD-ROM csatolása\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "%s nem foltozható mmappel és fájlművelet használatával - a folt sérültnek "
+#~ "tűnik."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "%s nem foltozható mmappel (nem mmap specifikus hiba) - a folt sérültnek "
+#~ "tűnik."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr ""
+#~ "A(z) „%2$s†csomag el nem érhető „%1$s†cél kiadásának figyelmen kívül "
+#~ "hagyása"
+
+#~ msgid "Downloading %s %s"
+#~ msgstr "Letöltés: %s %s"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr "Érvénytelen DEB archívum, nincs „%sâ€, „%s†vagy „%s†tagja"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "Az MD5Sum nem megfelelő"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Egy fájl nem található a(z) %s csomaghoz. Ez azt jelentheti, hogy kézzel "
+#~ "kell kijavítani a csomagot."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Nem írható a napló, sikertelen openpty() (a /dev/pts nincs csatolva?)\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "A nem létező %s fájl kihagyása"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "%s eltávolítása sikertelen"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "%s létrehozása sikertelen"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "%sinfo nem érhető el"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr "Az info és temp könyvtáraknak azonos fájlrendszeren kell lenniük"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Nem sikerült a(z) %sinfo adminisztrációs könyvtárba váltani"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Belső hiba a csomagnév lekérésekor"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Fájllista olvasása"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Nem sikerült a(z) „%sinfo/%s†listafájlt megnyitni. Ha nem lehet "
+#~ "helyreállítani ezt a fájlt, akkor ürítse ki, és azonnal telepítse újra a "
+#~ "csomag ugyanezen verzióját!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Nem sikerült a(z) %sinfo/%s listafájlt olvasni"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Belső hiba a csomópont lekérésekor"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Nem sikerült a(z) %sdiversions eltérítő fájlt megnyitni"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Az eltérítő fájl hibás"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Érvénytelen sor az eltérítő fájlban: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Belső hiba egy eltérítés hozzáadásakor"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "A csomaggyorsítótárat kell előbb előkészíteni"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Nem található a csomagfejléc, eltolás: %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Hibás ConfFile szakasz az állapotfájlban. Eltolás: %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "MD5 értelmezési hiba. Eltolás: %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Nem lehet váltani ebbe: %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Nem található érvényes control fájl"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Nem lehet adatcsatornát nyitni ehhez: %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Olvasási hiba %s folyamattól"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Egyetlen fejlécsor érkezett, amely több, mint %u karakter"
+
+#~ msgid "Note: This is done automatic and on purpose by dpkg."
+#~ msgstr "Megjegyzés: ezt a dpkg automatikusan és szándékosan hajtja végre."
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Deformált felülbírálás %s %lu. sorában #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Deformált felülbírálás %s %lu. sorában #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Deformált felülbírálás %s %lu. sorában #3"
+
+#~ msgid "decompressor"
+#~ msgstr "kicsomagoló"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "olvasás, még kellene %lu, de már az összes elfogyott"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "írás, még kiírandó %lu, de ez nem lehetséges"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "Nem lehetett a már kicsomagolt „%s†közvetlen beállítását végrehajtani. A "
+#~ "részletekért lásd a man 5 apt.conf oldalt az APT::Immediate-Configure "
+#~ "címszó alatt."
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Hiba történt %s feldolgozásakor (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Hiba történt %s feldolgozásakor (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Hiba történt %s feldolgozásakor (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Hiba történt %s feldolgozásakor (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Hiba történt %s feldolgozásakor (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Hiba történt a(z) %s (NewVersion%d) feldolgozása során"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Hiba történt %s feldolgozásakor (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Hiba történt %s feldolgozásakor (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Hiba történt %s feldolgozásakor (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Hiba történt %s feldolgozásakor (CollectFileProvides)"
diff --git a/po/it.po b/po/it.po
new file mode 100644
index 000000000..385f1f155
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,4223 @@
+# Italian translation of apt
+# Copyright (C) 2002-2010, 2011, 2012, 2013, 2014, 2015 The Free Software Foundation, Inc.
+# This file is distributed under the same license as the apt package.
+# Samuele Giovanni Tonon <samu@debian.org>, 2002.
+# Milo Casagrande <milo@milo.name>, 2009, 2010, 2011, 2012, 2013, 2014, 2015.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2015-04-07 16:51+0100\n"
+"Last-Translator: Milo Casagrande <milo@milo.name>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Launchpad-Export-Date: 2012-06-25 19:48+0000\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Firma dell'archivio non valida"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Errore nel leggere l'intestazione member dell'archivio"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Intestazione member dell'archivio %s non valida"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Intestazione member dell'archivio non valida"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "L'archivio è troppo piccolo"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Lettura delle intestazioni dell'archivio non riuscita"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Impossibile trovare il record di autenticazione per %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Archivio danneggiato"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Checksum di tar non riuscito, archivio danneggiato"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Intestazione TAR di tipo %u sconosciuta, member %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Questo non è un archivio DEB valido: membro \"%s\" mancante"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Errore interno, impossibile trovare il membro %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "File \"control\" non analizzabile"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Scrittura del file %s non riuscita"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Chiusura del file %s non riuscita"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Il percorso %s è troppo lungo"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Estrazione di %s eseguita più di una volta"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "La directory %s è deviata"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr ""
+"Il pacchetto sta cercando di scrivere nell'obiettivo di deviazione %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Il percorso della deviazione è troppo lungo"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Impossibile eseguire stat su %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Rinomina di %s in %s non riuscita"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "La directory %s sta per essere sostituita da una non-directory"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Localizzazione del nodo nel suo hash bucket non riuscita"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Il percorso è troppo lungo"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Il pacchetto sovrascritto corrisponde senza versione per %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Il file %s/%s sovrascrive quello nel pacchetto %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Impossibile leggere %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Impossibile eseguire stat su %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode invocata su un nodo ancora collegato"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Localizzazione dell'elemento hash non riuscita."
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Allocazione della deviazione non riuscita"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Errore interno in AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Tentativo di sovrascrivere una deviazione, %s -> %s e %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Doppia aggiunta di deviazione %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "File di configurazione duplicato %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "La directory %s è deviata"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "La directory %s è deviata"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "La directory %s è deviata"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "La directory %s è deviata"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "La directory %s è deviata"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Esecuzione di readlink su %s non riuscita"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Somma hash non corrispondente"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "rename() non riuscita: %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Le dimensioni non corrispondono"
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr "Formato file non valido"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Errore di scrittura"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+"Il file con la firma in chiaro non è valido, ottenuto \"%s\" (la rete "
+"richiede autenticazione?)"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"Si è verificato un errore nel verificare la firma. Il repository non è "
+"aggiornato e verranno usati i file indice precedenti. Errore GPG: %s: %s\n"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "Errore GPG: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"Impossibile trovare la voce \"%s\" nel file Release (voce in sources.list "
+"errata o file danneggiato)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"Il file Release per %s è scaduto (non valido dal %s). Gli aggiornamenti per "
+"questo repository non verranno applicati."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Distribuzione in conflitto: %s (atteso %s ma ottenuto %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Impossibile trovare un file per il pacchetto %s. Potrebbe essere necessario "
+"sistemare manualmente questo pacchetto (a causa dell'architettura mancante)."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+"Impossibile trovare una sorgente per scaricare la versione \"%s\" di \"%s\""
+
+# (ndt) sarebbe da controllare se veramente possono esistere più file indice
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"I file indice del pacchetto sono danneggiati. Manca il campo \"Filename:\" "
+"per il pacchetto %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Changelog per %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Impossibile trovare un driver per il metodo %s."
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr "Il pacchetto %s è installato?"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Il metodo %s non si è avviato correttamente"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "Inserire il disco chiamato \"%s\" nell'unità \"%s\" e premere Invio."
+
+# (ndt) sarebbe da controllare meglio assieme a quella dopo
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Manca la directory di liste %spartial."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Manca la directory di archivio %spartial."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "Impossibile bloccare la directory %s"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr "La pulizia di %s non è supportata"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Impossibile passare a %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Scaricamento file %li di %li (%s rimanente)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Scaricamento file %li di %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"Il pacchetto %s deve essere reinstallato, ma non è possibile trovarne un "
+"archivio."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Errore, pkgProblemResolver::Resolve ha generato delle interruzioni. Questo "
+"potrebbe essere causato da pacchetti bloccati."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr ""
+"Impossibile correggere i problemi, ci sono pacchetti danneggiati bloccati."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+"L'elenco dei pacchetti o il file di stato non può essere letto o aperto."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr ""
+"È consigliato eseguire \"apt-get update\" per correggere questi problemi"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Impossibile leggere l'elenco dei sorgenti."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Errore di compilazione dell'espressione regolare - %s"
+
+# (ndt) dovrebbe essere inteso il file Release
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Release \"%s\" per \"%s\" non trovato."
+
+# (ndt) dovrebbe essere inteso il Version
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Version \"%s\" per \"%s\" non trovato"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Impossibile trovare il task \"%s\""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr ""
+"Impossibile trovare alcun pacchetto tramite l'espressione regolare \"%s\""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Impossibile trovare alcun pacchetto tramite il glob \"%s\""
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Impossibile trovare il pacchetto %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+"Impossibile selezionare le versioni dal pacchetto \"%s\" poiché è virtuale"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"Impossibile selezionare la versione più recente dal pacchetto \"%s\" poiché "
+"è virtuale"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+"Impossibile selezionare la versione candidata dal pacchetto %s poiché non ha "
+"alcun candidato"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"Impossibile selezionare la versione installata dal pacchetto %s poiché non è "
+"installato"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"Impossibile selezionare la versione installata o la candidata dal pacchetto "
+"\"%s\" poiché non sono presenti"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Riga %u troppo lunga nel file %s."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Smontaggio CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Viene usato il punto di mount del CD-ROM %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "In attesa del disco...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Montaggio CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Identificazione... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Etichette archiviate: %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Analisi del disco per file indice...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Trovati %zu indici di pacchetto, %zu indici di sorgente, %zu indici di "
+"traduzione e %zu firme\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Impossibile trovare alcun file di pacchetto. Questo potrebbe non essere un "
+"disco Debian o potrebbe essere l'architettura errata."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Trovata l'etichetta \"%s\"\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Questo non è un nome valido, riprovare.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Questo disco è chiamato: \n"
+"\"%s\"\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Copia elenco pacchetti..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Scrittura nuovo elenco sorgenti\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Le voci dell'elenco sorgenti per questo disco sono:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Impossibile eseguire stat su %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Impossibile eseguire stat sul punto di mount %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Esecuzione di stat sul CD-ROM non riuscita"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Opzione a riga di comando \"%c\" [da %s] sconosciuta."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Opzione a riga di comando %s non comprensibile"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Opzione a riga di comando %s non booleana"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "L'opzione %s richiede un argomento."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+"Opzione %s: la specifica di configurazione dell'oggetto deve avere un "
+"=<valore>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "L'opzione %s richiede un argomento intero, non \"%s\""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Opzione \"%s\" troppo lunga"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "Il valore %s non è comprensibile, provare \"true\" o \"false\"."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Operazione %s non valida"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Tipo di abbreviazione non riconosciuto: \"%c\""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Apertura file di configurazione %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Errore di sintassi %s:%u: il blocco inizia senza nome"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Errore di sintassi %s:%u: tag non corretto"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Errore di sintassi %s:%u: caratteri extra dopo il valore"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"Errore di sintassi %s:%u: le direttive possono essere fatte solo al livello "
+"più alto"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Errore di sintassi %s:%u: troppe inclusioni annidate"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Errore di sintassi %s:%u: incluso da qui"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Errore di sintassi %s:%u: direttiva \"%s\" non supportata"
+
+# (ndt) sarebbe da controllare meglio...
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Errore di sintassi %s:%u: la direttiva clear richiede un albero di opzioni "
+"come argomento"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Errore di sintassi %s:%u: caratteri extra alla fine del file"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Si è verificato un problema nell'eseguire l'unlink del file %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Blocco disabilitato per il file di blocco in sola lettura %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Impossibile aprire il file di blocco %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Blocco disabilitato per il file di blocco %s montato via nfs"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Impossibile impostare il blocco %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+"L'elenco dei file non può essere creato poiché \"%s\" non è una directory"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+"Viene ignorato \"%s\" nella directory \"%s\" poiché non è un file regolare"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+"Viene ignorato il file \"%s\" nella directory \"%s\" poiché non ha "
+"un'estensione"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"Viene ignorato il file \"%s\" nella directory \"%s\" poiché ha un'estensione "
+"non valida"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "In attesa di %s ma non era presente"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Il sottoprocesso %s ha ricevuto un segmentation fault."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Il sottoprocesso %s ha ricevuto il segnale %u."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Il sottoprocesso %s ha restituito un codice d'errore (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Il sottoprocesso %s è uscito inaspettatamente"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Errore di lettura"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Errore di scrittura"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Si è verificato un problema nel chiudere il file gzip %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Creazione di un sottoprocesso IPC non riuscita"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Esecuzione non riuscita del compressore "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Impossibile aprire il file %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Impossibile aprire il descrittore del file %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "lettura, ancora %llu da leggere, ma non è stato trovato nulla"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "scrittura, ancora %llu da scrivere, ma non è possibile"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Si è verificato un problema nel chiudere il file %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Si è verificato un problema nel rinominare il file %s in %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Si è verificato un problema nel sincronizzare il file"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Impossibile eseguire mkstemp %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Impossibile scrivere in %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Impossibile eseguire mmap su un file vuoto"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Impossibile creare mmap di %llu byte"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Impossibile duplicare il descrittore del file %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "Impossibile chiudere mmap"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "Impossibile sincronizzare mmap"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Impossibile eseguire mmap di %lu byte"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Troncamento del file non riuscito"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"MMap dinamica esaurita. Aumentare la dimensione di APT::Cache-Start. Il "
+"valore attuale è: %lu (man 5 apt.conf)."
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"Impossibile incrementare la dimensione della MMap poiché il limite di %lu "
+"byte è stato raggiunto."
+
+# (ndt) lunghetta...
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Impossibile incrementare la dimensione della MMap poiché il "
+"ridimensionamento automatico è stato disabilitato dall'utente."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Errore"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Fatto"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr "..."
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... %u%%"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%lig %lih %limin %lis"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%lih %limin %lis"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%limin %lis"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%lis"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Selezione %s non trovata"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Impossibile analizzare il file Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Nessuna sezione nel file Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Nessuna voce Hash nel file Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Voce \"%s\" nel file Release %s non valida"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Impossibile analizzare il file di pacchetto %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"Impossibile acquisire il blocco sulla directory di amministrazione (%s). Un "
+"altro processo potrebbe tenerla occupata."
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr ""
+"Impossibile acquisire il blocco sulla directory di amministrazione (%s). È "
+"necessario essere root."
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"dpkg è stato interrotto. È necessario eseguire \"%s\" per correggere il "
+"problema. "
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Non bloccato"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "Installazione di %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Configurazione di %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Rimozione di %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "Rimozione completa di %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "Notata la sparizione di %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Esecuzione comando di post installazione %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "Pacchetto %s installato"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Directory \"%s\" mancante"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "Impossibile aprire il file \"%s\""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Preparazione di %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Estrazione di %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Preparazione alla configurazione di %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Preparazione alla rimozione di %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "Pacchetto %s rimosso"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Preparazione alla rimozione completa di %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "Pacchetto %s rimosso completamente"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Can not write log (%s)"
+msgstr "Impossibile scrivere il registro (%s)"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr "È /dev/pts montato?"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "L'operazione è stata interrotta prima di essere completata"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+"Segnalazione apport non scritta poiché è stato raggiunto il valore massimo "
+"di MaxReports"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "Problemi con le dipendenze - Viene lasciato non configurato"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Segnalazione apport non scritta poiché il messaggio di errore indica la "
+"presenza di un fallimento precedente."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Segnalazione apport non scritta poiché il messaggio di errore indica un "
+"errore per disco pieno."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Segnalazione apport non scritta poiché il messaggio di errore indica un "
+"errore di memoria esaurita."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Segnalazione apport non scritta poiché il messaggio di errore indica un "
+"errore nel sistema locale."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"Segnalazione apport non scritta poiché il messaggio di errore indica un "
+"errore di I/O di dpkg."
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Generazione albero delle dipendenze"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Versioni candidate"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Generazione delle dipendenze"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Lettura informazioni sullo stato"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Apertura del file di stato %s non riuscita"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Scrittura del file temporaneo di stato %s non riuscita"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "Invia lo scenario al solver"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "Invia la richiesta al solver"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "Preparazione alla ricezione della soluzione"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr "Il solver esterno è terminato senza un errore di messaggio"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "Esecuzione solver esterno"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Execute external planner"
+msgstr "Esecuzione solver esterno"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send request to planner"
+msgstr "Invia la richiesta al solver"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send scenario to planner"
+msgstr "Invia lo scenario al solver"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "External planner failed without a proper error message"
+msgstr "Il solver esterno è terminato senza un errore di messaggio"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "Scritti %i record.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "Scritti %i record con %i file mancanti.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "Scritti %i record con %i file senza corrispondenze\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"Scritti %i record con %i file mancanti e %i file senza corrispondenze\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "Impossibile trovare il record di autenticazione per %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Hash non corrispondente per %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Il sistema di pacchetti \"%s\" non è supportato"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Impossibile determinare un tipo di sistema appropriato di pacchetti"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr "Avanzamento: [%3i%%]"
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "Esecuzione di dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"Impossibile eseguire immediatamente la configurazione su \"%s\". Per "
+"maggiori informazioni, consultare \"man 5 apt.conf\" alla sezione \"APT::"
+"Immediate-Configure\" (%d)."
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "Impossibile configurare \"%s\". "
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"L'installazione necessita della rimozione temporanea del pacchetto "
+"essenziale %s a causa di un ciclo conflitto/pre-dipendenza. Questa è una "
+"situazione critica, ma se si vuole realmente procedere, attivare l'opzione "
+"APT::Force-LoopBreak."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Cache dei pacchetti vuota"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Il file della cache dei pacchetti è danneggiato"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "La versione del file della cache dei pacchetti è incompatibile"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Questo APT non supporta il sistema di versione \"%s\""
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr ""
+"Il file della cache dei pacchetti è stato generato per un'altra architettura"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Il file cache del pacchetto è danneggiato, è troppo piccolo"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Dipende"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Pre-dipende"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Consiglia"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Va in conflitto"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Raccomanda"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Sostituisce"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Rompe"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Migliora"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Rende obsoleto"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "importante"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "richiesto"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "standard"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "extra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "opzionale"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "La cache ha un sistema di gestione delle versioni incompatibile"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Si è verificato un errore nell'elaborare %s (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"È stato superato il numero di nomi di pacchetti che questo APT può gestire."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "È stato superato il numero di versioni che questo APT può gestire."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "È stato superato il numero di descrizioni che questo APT può gestire."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "È stato superato il numero di dipendenze che questo APT può gestire."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Lettura elenco dei pacchetti"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Errore di I/O nel salvare la cache sorgente"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Il file indice di tipo \"%s\" non è supportato"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"Il valore \"%s\" non è valido per APT::Default-Release poiché tale release "
+"non è disponibile dalle sorgenti"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr ""
+"Campo non valido nel file delle preferenze %s, manca l'intestazione \"Package"
+"\""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Impossibile comprendere il tipo di gancio %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Priorità per il gancio non specificata (o zero)"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Override %s riga %llu malformato (%s)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Apertura di %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "La riga %u nel file %s non è corretta (type)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Tipo \"%s\" non riconosciuto alla riga %u nel file delle sorgenti %s"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "La riga %u nel file %s non è corretta (type)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr ""
+"Tipo \"%s\" non riconosciuto nella stanza %u nel file delle sorgenti %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr ""
+"È necessario inserire alcuni URI di tipo \"source\" nel file sources.list"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Impossibile recuperare %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Impossibile scaricare alcuni file di indice: saranno ignorati o verranno "
+"usati quelli vecchi."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calcolo dell'aggiornamento"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Trovato:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Scaricamento di:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr ""
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Recuperati %sB in %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [In lavorazione]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Cambio disco: inserire il disco chiamato\n"
+" \"%s\"\n"
+"nell'unità \"%s\" e premere Invio\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Correzione delle dipendenze..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " non riuscita."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Impossibile correggere le dipendenze"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Impossibile minimizzare l'insieme da aggiornare"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Fatto"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "È utile eseguire \"apt --fix-broken install\" per correggere ciò."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Dipendenze non soddisfatte. Provare \"apt --fix-broken install\" senza "
+"pacchetti (o specificare una soluzione)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr "Ordinamento"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Nota, viene selezionato \"%s\" per il task \"%s\"\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Nota, viene selezionato \"%s\" per l'espressione regolare \"%s\"\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Nota, viene selezionato \"%s\" per l'espressione regolare \"%s\"\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Il pacchetto %s è un pacchetto virtuale fornito da:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr "[installato]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [Versione non candidata]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "È necessario sceglierne uno da installare."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Il pacchetto %s non ha versioni disponibili, ma è nominato da un altro\n"
+"pacchetto. Questo potrebbe indicare che il pacchetto è mancante, obsoleto\n"
+"oppure è disponibile solo all'interno di un'altra sorgente\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Tuttavia questi pacchetti lo sostituiscono:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Il pacchetto \"%s\" non ha candidati da installare"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Pacchetti virtuali come \"%s\" non possono essere rimossi\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"Il pacchetto \"%s\" non è installato e quindi non è stato rimosso: si "
+"intendeva \"%s\"?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Il pacchetto \"%s\" non è installato e quindi non è stato rimosso\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Nota, viene selezionato \"%s\" al posto di \"%s\"\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Questo APT ha i poteri della Super Mucca."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr "Questo APT ha super poteri."
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Nessun pacchetto trovato"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "ATTENZIONE: i seguenti pacchetti non possono essere autenticati."
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Avviso di autenticazione disabilitato.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Alcuni pacchetti non possono essere autenticati"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Installare questi pacchetti senza verificarli?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Si sono verificati dei problemi ed è stata usata -y senza --force-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Impossibile determinare lo spazio libero in %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Spazio libero in %s insufficiente."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Impossibile bloccare la directory di scaricamento"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Alcuni pacchetti non possono essere installati. Questo può voler dire\n"
+"che è stata richiesta una situazione impossibile oppure, se si sta\n"
+"usando una distribuzione in sviluppo, che alcuni pacchetti richiesti\n"
+"non sono ancora stati creati o sono stati rimossi da Incoming."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Le seguenti informazioni possono aiutare a risolvere la situazione:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Pacchetti danneggiati"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Impossibile scaricare alcuni pacchetti. Potrebbe essere utile eseguire \"apt-"
+"get update\" o provare l'opzione \"--fix-missing\"."
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr ""
+"Errore interno, InstallPackages è stato chiamato con un pacchetto "
+"danneggiato."
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr ""
+"I pacchetti devono essere rimossi, ma l'azione di rimozione è disabilitata."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Si sono verificati dei problemi ed è stata usata -y senza --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Si sono verificati dei problemi ed è stata usata -y senza --force-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Errore interno, l'ordinamento non è stato terminato"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Le dimensioni non corrispondono. Inviare un'email a: apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "È necessario scaricare %sB/%sB di archivi.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "È necessario scaricare %sB di archivi.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "Dopo quest'operazione, verranno occupati %sB di spazio su disco.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Dopo quest'operazione, verranno liberati %sB di spazio su disco.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr ""
+"È stata specificata la modalità \"Trivial Only\", ma questa non è "
+"un'operazione banale."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Sì, esegui come da richiesta."
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Si sta per compiere un'azione potenzialmente pericolosa.\n"
+"Per continuare scrivere la frase \"%s\"\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Interrotto."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Continuare?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Scaricamento di alcuni file non riuscito"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Scaricamento completato e in modalità solo scaricamento"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing su supporti estraibili non è ancora supportato"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Impossibile correggere i pacchetti mancanti."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Interruzione dell'installazione."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"Il seguente pacchetto è sparito dal sistema poiché\n"
+"tutti i file sono stati sovrascritti da altri pacchetti:"
+msgstr[1] ""
+"I seguenti pacchetti sono spariti dal sistema poiché\n"
+"tutti i file sono stati sovrascritti da altri pacchetti:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Nota: questo viene svolto automaticamente e volutamente da dpkg."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+"Non si è autorizzati a rimuovere nulla, impossibile avviare AutoRemover"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Sembra che AutoRemover abbia rovinato qualcosa e questo\n"
+"non doveva accadere. Segnalare un bug riguardo apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Errore interno, AutoRemover ha rovinato qualche cosa"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"Il seguente pacchetto è stato installato automaticamente e non è più "
+"richiesto:"
+msgstr[1] ""
+"I seguenti pacchetti sono stati installati automaticamente e non sono più "
+"richiesti:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] ""
+"%lu pacchetto è stato installato automaticamente e non è più richiesto.\n"
+msgstr[1] ""
+"%lu pacchetti sono stati installati automaticamente e non sono più "
+"richiesti.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Usare \"%s\" per rimuoverlo."
+msgstr[1] "Usare \"%s\" per rimuoverli."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "I seguenti pacchetti saranno inoltre installati:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Pacchetti suggeriti:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Pacchetti raccomandati:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+"Viene saltato %s poiché è già installato e l'aggiornamento non è impostato.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"Viene saltato %s poiché non è installato e sono richiesti solo gli "
+"aggiornamenti.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "La reinstallazione di %s non è possibile, non può essere scaricato.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s è già alla versione più recente.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "È stato impostato %s per l'installazione manuale.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Versione \"%s\" (%s) selezionata per \"%s\"\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Versione \"%s\" (%s) selezionata per \"%s\" per via di \"%s\"\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr "Elencazione"
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] "C'è %i versione aggiuntiva: usare \"-a\" per visualizzarla"
+msgstr[1] "Ci sono %i versioni aggiuntive: usare \"-a\" per visualizzarle"
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"Nota: questa è solo una simulazione.\n"
+" %s necessita dei privilegi di root per la normale esecuzione.\n"
+" Inoltre, il meccanismo di blocco non è attivato e non è quindi\n"
+" utile dare importanza a tutto ciò per una situazione reale.\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr "sconosciuto"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr "[installato, aggiornabile a: %s]"
+
+#: apt-private/private-output.cc
+msgid "[installed,local]"
+msgstr "[installato, locale]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr "[installato, auto-rimovibile]"
+
+#: apt-private/private-output.cc
+msgid "[installed,automatic]"
+msgstr "[installato, automatico]"
+
+#: apt-private/private-output.cc
+msgid "[installed]"
+msgstr "[installato]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr "[aggiornabile da: %s]"
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr "[configurazione residua]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "ma la versione %s è installata"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "ma la versione %s sta per essere installata"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "ma non è installabile"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "ma è un pacchetto virtuale"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "ma non sta per essere installato"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "ma non è installato"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " oppure"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "I seguenti pacchetti hanno dipendenze non soddisfatte:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "I seguenti pacchetti NUOVI saranno installati:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "I seguenti pacchetti saranno RIMOSSI:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "I seguenti pacchetti sono stati mantenuti alla versione attuale:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "I seguenti pacchetti saranno aggiornati:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "I seguenti pacchetti saranno RETROCESSI:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "I seguenti pacchetti bloccati saranno cambiati:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (a causa di %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"ATTENZIONE: i seguenti pacchetti essenziali stanno per essere rimossi.\n"
+"Questo non dovrebbe essere fatto a meno che non si sappia esattamente cosa "
+"si sta facendo."
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu aggiornati, %lu installati, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu reinstallati, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu retrocessi, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu da rimuovere e %lu non aggiornati.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu non completamente installati o rimossi.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[S/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[s/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "S"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "È necessario specificare almeno un modello per la ricerca"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr "Ricerca sul testo"
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Il file dei pacchetti %s non è sincronizzato."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] "C'è %i record aggiuntivo: usare \"-a\" per visualizzarlo"
+msgstr[1] "Ci sono %i record aggiuntivi: usare \"-a\" per visualizzarli"
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr "non un vero pacchetto (virtuale)"
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "File dei pacchetti:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+"La cache non è sincronizzata, impossibile referenziare un file di pacchetti"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Pacchetti con gancio:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Installato: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Candidato: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(nessuno)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Tabella versione:"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Impossibile trovare un pacchetto per l'architettura \"%s\""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Impossibile trovare un pacchetto \"%s\" con versione \"%s\""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Impossibile trovare un pacchetto \"%s\" con release \"%s\""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Scelto \"%s\" come pacchetto sorgente al posto di \"%s\"\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "Impossibile trovare la versione \"%s\" del pacchetto \"%s\""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr ""
+"È necessario specificare almeno un pacchetto di cui recuperare il sorgente"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Impossibile trovare un pacchetto sorgente per %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"Nota: il processo di pacchettizzazione di \"%s\" è mantenuto\n"
+"all'interno del sistema di controllo della versione \"%s\" presso:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Utilizzare:\n"
+"%s\n"
+"per recuperare gli ultimi (forse non rilasciati) aggiornamenti del "
+"pacchetto.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Il pacchetto \"%s\" già scaricato viene saltato\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "È necessario recuperare %sB/%sB di sorgenti.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "È necessario scaricare %sB di sorgenti.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Recupero sorgente %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Recupero di alcuni archivi non riuscito."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Estrazione del pacchetto sorgente già estratto in %s saltata\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Comando di estrazione \"%s\" non riuscito.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Verificare che il pacchetto \"dpkg-dev\" sia installato.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Comando \"%s\" di generazione non riuscito.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Impossibile ottenere informazioni di dipendenza di generazione per %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s non ha dipendenze di generazione.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"È necessario specificare almeno un pacchetto di cui controllare le "
+"dipendenze di generazione"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"Informazioni sull'architettura non disponibili per %s. Consultare apt."
+"conf(5) APT::Architectures per l'impostazione"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Elaborazione delle dipendenze di generazione non riuscita"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Elaborazione delle dipendenze di generazione non riuscita"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Analisi di %s non riuscita: modificare nuovamente?"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+"Il proprio file \"%s\" è stato modificato: eseguire \"apt-get update\"."
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Il pacchetto %s versione %s ha una dipendenza non soddisfatta:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Il comando update non accetta argomenti"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+"%i pacchetto può essere aggiornato: eseguire \"apt list --upgradable\" per "
+"vederlo.\n"
+msgstr[1] ""
+"%i pacchetti possono essere aggiornati: eseguire \"apt list --upgradable\" "
+"per vederli.\n"
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr "Tutti i pacchetti sono aggiornati."
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "Il comando update non accetta argomenti"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Totale nomi dei pacchetti: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Totale strutture dei pacchetti: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Pacchetti normali: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Pacchetti virtuali puri: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Pacchetti virtuali singoli: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Pacchetti virtuali misti: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Mancante: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Totale versioni distinte: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Totale descrizioni distinte: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Totale dipendenze: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Totale relazioni ver/file: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Totale relazioni desc/file: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Totale corrispondenze fornite: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Totale stringhe globalizzate: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Totale spazio inutilizzato: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Totale spazio occupato: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+"Questo comando è deprecato. Utilizzare \"apt-mark showauto\" al suo posto."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Mostra i campi dei sorgenti"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Cerca nell'elenco dei pacchetti un'espressione regolare"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Mostra informazioni di dipendenza per un pacchetto"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Mostra informazioni di dipendenza all'incontrario per un pacchetto"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Mostra un campo leggibile per il pacchetto specificato"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Elenca i nomi di tutti i pacchetti nel sistema"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Mostra le preferenze adottate"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Dare un nome a questo disco, tipo \"Debian 5.0.3 Disco 1\""
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Inserire un disco nell'unità e premere Invio"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Mount di \"%s\" su \"%s\" non riuscito"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+"Impossibile rilevare automaticamente un CD-ROM oppure è stato trovato con "
+"il\n"
+"punto di mount predefinito.\n"
+"Provare l'opzione --cdrom per impostare il punto di mount del CD-ROM.\n"
+"Per maggiori informazioni sull'autorilevamento e sul punto di mount\n"
+"del CD-ROM, consultare \"man apt-cdrom\"."
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Ripetere questo processo per il resto dei CD."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Argomenti non in coppia"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Uso: apt-config [OPZIONI] COMANDO\n"
+"\n"
+"apt-config è uno strumento per leggere il file di configurazione di APT\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Uso: apt-extracttemplates FILE1 [FILE2 ...]\n"
+"\n"
+"apt-extracttemplates è uno strumento per estrarre configurazioni e template\n"
+"dai pacchetti debian\n"
+"\n"
+"Opzioni:\n"
+" -h Mostra questo aiuto\n"
+" -t Imposta la directory temporanea\n"
+" -c=? Legge come configurazione il file specificato\n"
+" -o=? Imposta un'opzione di configurazione, come -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Impossibile trovare la versione di debconf. È installato?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Impossibile trovare il pacchetto %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s impostato automaticamente come installato.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Questo comando è deprecato. Utilizzare \"apt-mark auto\" e \"apt-mark manual"
+"\" al suo posto."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Errore interno, \"problem resolver\" ha rovinato qualcosa"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Moduli supportati:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Uso: apt-get [OPZIONI] COMANDO\n"
+" apt-get [OPZIONI] install|remove PKG1 [PKG2 ...]\n"
+" apt-get [OPZIONI] source PKG1 [PKG2 ...]\n"
+"\n"
+"apt-get è una semplice interfaccia a riga di comando per scaricare \n"
+"e installare pacchetti. I comandi più usati sono update e install.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Scarica l'elenco aggiornato dei pacchetti"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Esegue un aggiornamento dei pacchetti installati"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Installa nuovi pacchetti (PKG è libc6 non libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Rimuove i pacchetti"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Rimuove i pacchetti e la loro configurazione"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Rimuove automaticamente i pacchetti inutilizzati"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Esegue un avanzamento della distribuzione, consultare apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Segue le selezioni di dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Configura le dipendenze di generazione per i pacchetti sorgente"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Elimina i file dei pacchetti scaricati"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Elimina i vecchi pacchetti scaricati"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Verifica che non ci siano dipendenze insoddisfatte"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Scarica i pacchetti sorgente"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "Scarica il pacchetto binario nella directory attuale"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "Scarica e visualizza il changelog per il pacchetto indicato"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr "Necessario un URL come argomento"
+
+#: cmdline/apt-helper.cc
+msgid "Must specify at least one pair url/filename"
+msgstr "È necessario specificare almeno una coppia URL/nome file"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr "Scaricamento non riuscito"
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+"Uso: apt-helper [OPZIONI] COMANDO\n"
+" apt-helper [OPZIONI] download-file uri percorso\n"
+"\n"
+"apt-helper è un programma d'aiuto interno per apt\n"
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr "Scarica l'URI fornito in percorso"
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr "Rileva proxy utilizzando apt.conf"
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Uso: apt-internal-solver\n"
+"\n"
+"apt-internal-solver è un'interfaccia per l'utilizzo del resolver interno\n"
+"come resolver esterno per il debugging degli strumenti APT\n"
+"\n"
+"Opzioni:\n"
+" -h Mostra questo aiuto\n"
+" -q Output registrabile, nessun indicatore di avanzamento\n"
+" -c=? Legge come configurazione il file specificato\n"
+" -o=? Imposta un'opzione di configurazione, es. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Uso: apt-internal-solver\n"
+"\n"
+"apt-internal-solver è un'interfaccia per l'utilizzo del resolver interno\n"
+"come resolver esterno per il debugging degli strumenti APT\n"
+"\n"
+"Opzioni:\n"
+" -h Mostra questo aiuto\n"
+" -q Output registrabile, nessun indicatore di avanzamento\n"
+" -c=? Legge come configurazione il file specificato\n"
+" -o=? Imposta un'opzione di configurazione, es. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "%s non può essere segnato perché non è installato.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s è già stato impostato come installato manualmente.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s è già stato impostato come installato automaticamente.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s è già stato impostato come bloccato.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s era già non bloccato.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "Esecuzione di dpkg non riuscita. È stato lanciato come root?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "%s impostato come bloccato.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Blocco su %s annullato.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"Uso: apt-mark [OPZIONI] {auto|manual} PKG1 [PKG2 ...]\n"
+"\n"
+"apt-mark è una semplice interfaccia a riga di comando per segnalare i "
+"pacchetti\n"
+"come installati manualmente o automaticamente. Può anche elencare le "
+"segnalazioni.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "Segna i pacchetti forniti come installati automaticamente"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "Segna i pacchetti forniti come installati manualmente"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr "Segna un pacchetto come bloccato a una vecchia versione"
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr "Sblocca un pacchetto bloccato a una vecchia versione"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr "Stampa l'elenco dei pacchetti installati automaticamente"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr "Stampa l'elenco dei pacchetti installati manualmente"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr "Stampa l'elenco dei pacchetti bloccati"
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Record del pacchetto sconosciuto."
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr "Elenca i pacchetti in base al nome"
+
+#: cmdline/apt.cc
+msgid "search in package descriptions"
+msgstr "Cerca tra le descrizioni dei pacchetti"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr "Mostra dettagli di un pacchetto"
+
+#. package stuff
+#: cmdline/apt.cc
+msgid "install packages"
+msgstr "Installa pacchetti"
+
+#: cmdline/apt.cc
+msgid "remove packages"
+msgstr "Rimuove pacchetti"
+
+#. system wide stuff
+#: cmdline/apt.cc
+msgid "update list of available packages"
+msgstr "Aggiorna l'elenco dei pacchetti disponibili"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+"Esegue l'avanzamento di versione del sistema installando e aggiornando i "
+"pacchetti"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+"Esegue l'avanzamento di versione del sistema rimuovendo, installando e "
+"aggiornando i pacchetti"
+
+#. misc
+#: cmdline/apt.cc
+msgid "edit the source information file"
+msgstr "Modifica il file sulle informazioni delle sorgenti"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Impostazione predefinita errata."
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Premere Invio per continuare."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Eliminare tutti i file .deb precedentemente scaricati?"
+
+# Note to translators: The following four messages belong together. It doesn't
+# matter where sentences start, but it has to fit in just these four lines, and
+# at only 80 characters per line, if possible.
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr ""
+"Si sono verificati alcuni errori nell'estrazione. Verrà tentata la "
+"configurazione"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "dei pacchetti installati. Questo potrebbe generare errori duplicati"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "o errori causati da dipendenze mancanti. Questo non causa problemi,"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"gli errori precedenti sono importanti. Correggerli e rieseguire "
+"l'installazione [I]"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Unione delle informazioni disponibili"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "L'elenco dell'estensione del pacchetto è troppo lungo"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Errore nell'elaborare la directory %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "L'elenco dell'estensione del sorgente è troppo lungo"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Errore nella scrittura dell'intestazione nel file \"contents\""
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Errore nell'elaborare i contenuti %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Uso: apt-ftparchive [OPZIONI] COMANDO\n"
+"Comandi: packages PERCORSO_AL_BINARIO [FILE_OVERRIDE [PREFISSO_PERCORSO]\n"
+" sources PERCORSO_AI_SORGENTI [FILE_OVERRIDE [PREFISSO_PERCORSO]\n"
+" contents PERCORSO\n"
+" release PERCORSO\n"
+" generate CONFIGURAZIONE [GRUPPI]\n"
+" clean CONFIGURAZIONE\n"
+"\n"
+"apt-ftparchive genera file di indice per gli archivi Debian. Supporta\n"
+"molti stili di generazione da completamente automatici ad alternative\n"
+"funzionali per dpkg-scanpackages e dpkg-scansources\n"
+"\n"
+"apt-ftparchive genera file Packages da un albero di \".deb\". Il file\n"
+"Package contiene le informazioni di tutti i campi control da ogni\n"
+"pacchetto, così come l'hash MD5 e la dimensione del file. Un file override\n"
+"è supportato per forzare i valori di priorità e sezione.\n"
+"\n"
+"Similmente, apt-ftparchive genera file Sources da un albero di .dscs.\n"
+"L'opzione --source-override può essere usata per specificare un file\n"
+"di override per i sorgenti\n"
+"\n"
+"I comandi \"packages\" e \"sources\" devono essere eseguiti nella root \n"
+"dell'albero. Il percorso al binario deve puntare alla base della ricerca \n"
+"ricorsiva e il file override deve contenere le opzioni di override.\n"
+"Il prefisso del percorso è aggiunto al campo filename se presente. Esempio\n"
+"di utilizzo dall'archivio Debian:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages \n"
+"\n"
+"Opzioni:\n"
+" -h Mostra questo aiuto\n"
+" --md5 Controlla la generazione dell'MD5\n"
+" -s=? File override dei sorgenti\n"
+" -q Silenzioso\n"
+" -d=? Seleziona il database di cache opzionale\n"
+" --no-delink Abilita la modalità di debug del delinking\n"
+" --contents Controlla la generazione del file \"contents\"\n"
+" -c=? Legge come configurazione il file specificato\n"
+" -o=? Imposta un'opzione arbitraria di configurazione"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Nessuna selezione corrisponde"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Mancano alcuni file nel file group di pacchetti \"%s\""
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "Il database era danneggiato, il file è stato rinominato in %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "Il database è vecchio, tentativo di aggiornamento %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Il formato del database non è valido. Se è stato eseguito l'aggiornamento da "
+"una vecchia versione di apt, rimuovere e ricreare il database."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Impossibile aprire il file del database %s: %s"
+
+#: ftparchive/cachedb.cc
+msgid "Failed to read .dsc"
+msgstr "Lettura di .dsc non riuscita"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "L'archivio non ha un campo \"control\""
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Impossibile ottenere un cursore"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Allocazione della memoria non riuscita"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Algoritmo di compressione \"%s\" sconosciuto"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "L'output compresso %s necessita di un insieme di compressione"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Creazione di una pipe IPC verso il sottoprocesso non riuscita"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Fork non riuscita"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Sottoprocesso compresso"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Errore interno, creazione di %s non riuscita"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "I/O al sottoprocesso/file non riuscito"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Lettura durante l'elaborazione MD5 non riuscita"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Impossibile aprire %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Override %s riga %llu malformato (%s)"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Lettura del file override %s non riuscita"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Override %s riga %llu malformato #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Override %s riga %llu malformato #2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Override %s riga %llu malformato #3"
+
+# (ndt) messo A per Avviso
+# Inizio con la maiuscola dopo i : perché mi sa che in molti
+# casi molte stringhe sono così
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "A: Impossibile leggere la directory %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "A: Impossibile eseguire stat su %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "A: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: Gli errori si applicano al file "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Risoluzione di %s non riuscita"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Visita dell'albero non riuscita"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Apertura di %s non riuscita"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " Delink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Collegamento di %s a %s non riuscito"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " Raggiunto il limite di DeLink di %sB.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "L'archivio non ha un campo \"package\""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s non ha un campo override\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " il responsabile di %s è %s non %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s non ha un campo source override\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s non ha neppure un campo binario override\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "In attesa degli header"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "Il server HTTP ha inviato un header di risposta non valido"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Riga header non corretta"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "Il server HTTP ha inviato un header Content-Length non valido"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "Il server HTTP ha inviato un header Content-Range non valido"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Questo server HTTP ha un supporto del range non corretto"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Formato della data sconosciuto"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Header dati non corretto"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Connessione non riuscita"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Errore interno"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Impossibile leggere il database del CD-ROM %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Usare apt-cdrom per far riconoscere questo CD-ROM da APT. apt-get update non "
+"può essere usato per aggiungere nuovi CD-ROM"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "CD-ROM sbagliato"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Impossibile smontare il CD-ROM in %s, potrebbe essere ancora in uso."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Disco non trovato"
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "File non trovato"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Connessione a %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Impossibile creare un socket per %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Impossibile iniziare la connessione a %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Impossibile connettersi a %s:%s (%s), connessione terminata"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Non riuscito"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Impossibile connettersi a %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Connessione a %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Impossibile risolvere \"%s\""
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Risoluzione di \"%s\" temporaneamente non riuscita"
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Errore di sistema nella risoluzione di \"%s:%s\""
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr ""
+"Si è verificato qualcosa di anormale nella risoluzione di \"%s:%s\" (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Impossibile connettersi a %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Esecuzione di stat non riuscita"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "URI non valido, gli URI locali non devono iniziare con //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Accesso in corso"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Impossibile determinare il nome del nodo"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Impossibile determinare il nome locale"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Il server ha rifiutato la connessione e riporta: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER non riuscito, il server riporta: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS non riuscito, il server riporta: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"È stato specificato un server proxy, ma nessuno script di accesso: Acquire::"
+"ftp::ProxyLogin è vuoto."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr ""
+"Comando dello script di accesso \"%s\" non riuscito, il server riporta: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE non riuscito, il server riporta: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Connessione scaduta"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Il server ha chiuso la connessione"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Una risposta ha superato le dimensioni del buffer."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Protocollo danneggiato"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Impossibile creare un socket"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr ""
+"Impossibile connettersi al socket dati, tempo esaurito per la connessione"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Impossibile connettersi alla socket passiva."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "Impossibile ottenere un socket in ascolto con getaddrinfo()"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Impossibile eseguire bind() su un socket"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Impossibile eseguire listen() su un socket"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Impossibile determinare il nome del socket"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Impossibile inviare il comando PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Famiglia di indirizzamento %u (AF_*) sconosciuta"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT non riuscito, il server riporta: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Connessione al socket dati terminata"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Impossibile accettare connessioni"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Si è verificato un problema nel creare l'hash del file"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Impossibile recuperare il file, il server riporta: \"%s\""
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Socket dati terminato"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Trasferimento dati non riuscito, il server riporta: \"%s\""
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Interrogazione"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Impossibile invocare "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, fuzzy, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+"Il file con la firma in chiaro non è valido, ottenuto \"%s\" (la rete "
+"richiede autenticazione?)"
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "È stata trovata almeno una firma non valida."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Errore interno: firma corretta, ma non è possibile determinare l'impronta "
+"della chiave."
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Impossibile eseguire \"apt-key\" per verificare la firma (forse gnupg non è "
+"installato)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Errore sconosciuto durante l'esecuzione di apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Le seguenti firme non erano valide:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Le seguenti firme non sono state verificate perché la chiave pubblica non è "
+"disponibile:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Errore nello scrivere sul file"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Errore nel leggere dal server. Il lato remoto ha chiuso la connessione"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Errore nel leggere dal server"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Errore nello scrivere su file"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Select non riuscita"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Connessione terminata"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Errore nello scrivere sul file di output"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Nessun file mirror \"%s\" trovato "
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Impossibile leggere il file mirror \"%s\""
+
+#: methods/mirror.cc
+#, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Nessuna voce trovata nel file mirror \"%s\""
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Mirror: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Impostazione della data di modifica non riuscita"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Connessione chiusa prematuramente"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "File vuoti non possono essere archivi validi"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Dipendenze non trovate. Riprovare usando --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "È utile eseguire \"apt --fix-broken install\" per correggere questi "
+#~ "problemi:"
+
+#~ msgid "(not found)"
+#~ msgstr "(non trovato)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Gancio del pacchetto: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr ""
+#~ "Non è disponibile alcuna chiave pubblica per i seguenti ID di chiavi:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "La directory %s è deviata"
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "La dipendenza %s per %s non può essere soddisfatta perché %s non è "
+#~ "consentito su pacchetti \"%s\""
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "%s dipendenze per %s non possono essere soddisfatte perché il pacchetto "
+#~ "%s non può essere trovato"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "La dipendenza %s per %s non è stata soddisfatta: il pacchetto installato "
+#~ "%s è troppo recente"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "La dipendenza %s per %s non può essere soddisfatta perché la versione "
+#~ "candidata del pacchetto %s non può soddisfare i requisiti di versione"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "La dipendenza %s per %s non può essere soddisfatta perché il pacchetto %s "
+#~ "non ha una versione candidata"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "La dipendenza %s per %s non è stata soddisfatta: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Le dipendenze di generazione per %s non sono state soddisfatte."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Problema nell'unlink di %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Esecuzione di unlink su %s non riuscita"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Uso: apt-cache [OPZIONI] COMANDO\n"
+#~ " apt-cache [OPZIONI] show PKG1 [PKG2 ...]\n"
+#~ "\n"
+#~ "apt-cache è uno strumento di basso livello usato per cercare "
+#~ "informazioni\n"
+#~ "nei file di cache dei binari di APT\n"
+
+#~ msgid "Commands:"
+#~ msgstr "Comandi:"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Opzioni:\n"
+#~ " -h Mostra questo aiuto\n"
+#~ " -p=? La cache dei pacchetti\n"
+#~ " -s=? La cache dei sorgenti\n"
+#~ " -q Disabilita l'indicatore di avanzamento\n"
+#~ " -i Mostra solo dipendenze importanti per il comando unmet\n"
+#~ " -c=? Legge come configurazione il file specificato\n"
+#~ " -o=? Imposta un'opzione di configurazione, come -o dir::cache=/tmp\n"
+#~ "Per maggiori informazioni, consultare le pagine di manuale apt-cache(8) "
+#~ "e \n"
+#~ "apt.conf(5).\n"
+
+#~ msgid ""
+#~ "Usage: apt [options] command\n"
+#~ "\n"
+#~ "CLI for apt.\n"
+#~ msgstr ""
+#~ "Uso: apt [OPZIONI] COMANDO\n"
+#~ "\n"
+#~ "Interfaccia a riga di comando per apt.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "Opzioni:\n"
+#~ " -h Mostra questo aiuto\n"
+#~ " -q Output registrabile, nessun indicatore di avanzamento\n"
+#~ " -qq Nessun output eccetto gli errori\n"
+#~ " -s Nessuna azione, stampa solamente cosa verrebbe fatto\n"
+#~ " -f Legge/Scrivere la segnalazione nel file fornito\n"
+#~ " -c=? Legge come configurazione il file specificato\n"
+#~ " -o=? Imposta un'opzione di configurazione, es. -o dir::cache=/tm\n"
+#~ "Per maggiori informazioni, consultare le pagine di manuale apt-mark(8) e\n"
+#~ "apt.conf(5)."
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Opzioni\n"
+#~ " -h Mostra questo aiuto\n"
+#~ " -c=? Legge come configurazione il file specificato\n"
+#~ " -o=? Imposta un'opzione di configurazione, come -o dir::cache=/tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "Opzioni:\n"
+#~ " -h Mostra questo aiuto\n"
+#~ " -q Output registrabile, nessun indicatore di avanzamento\n"
+#~ " -qq Nessun output eccetto gli errori\n"
+#~ " -s Nessuna azione, stampa solamente cosa verrebbe fatto\n"
+#~ " -f Legge/Scrivere la segnalazione nel file fornito\n"
+#~ " -c=? Legge come configurazione il file specificato\n"
+#~ " -o=? Imposta un'opzione di configurazione, es. -o dir::cache=/tm\n"
+#~ "Per maggiori informazioni, consultare le pagine di manuale apt-mark(8) e\n"
+#~ "apt.conf(5)."
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Uso: apt-sortpkgs [OPZIONI] FILE1 [FILE2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs è uno strumento per ordinare i file dei pacchetti.\n"
+#~ "L'opzione -s è usata per indicare il tipo di file.\n"
+#~ "\n"
+#~ "Opzioni:\n"
+#~ " -h Mostra questo aiuto\n"
+#~ " -s Ordina per pacchetto sorgente\n"
+#~ " -c=? Legge come configurazione il file specificato\n"
+#~ " -o=? Imposta un'opzione di configurazione, es. -o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Creazione processo figlio non riuscita"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "È necessario specificare almeno una coppia URL/nome file"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Creazione delle pipe non riuscita"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Esecuzione di gzip non riuscita "
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Creazione di FILE* non riuscita"
+
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr ""
+#~ "La stanza %u nel file delle sorgenti %s non è corretta (analisi URI)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "La riga %lu nel file delle sorgenti %s non è corretta ([opzione] non "
+#~ "analizzabile)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr ""
+#~ "La riga %lu nel file delle sorgenti %s non è corretta ([opzione] troppo "
+#~ "corta)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr ""
+#~ "La riga %lu nel file delle sorgenti %s non è corretta ([%s] non è "
+#~ "un'assegnazione)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr ""
+#~ "La riga %lu nel file delle sorgenti %s non è corretta ([%s] non ha una "
+#~ "chiave)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "La riga %lu nel file delle sorgenti %s non è corretta ([%s] la chiave %s "
+#~ "non ha un valore)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "La riga %lu nel file %s non è corretta (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "La riga %lu nel file %s non è corretta (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "La riga %lu nel file %s non è corretta (URI parse)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "La riga %lu nel file %s non è corretta (absolute dist)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "La riga %lu nel file %s non è corretta (dist parse)"
+
+# (ndt) il primo è il nome del pacchetto, il secondo la versione
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr ""
+#~ "Il pacchetto %s v.%s non è stato trovato durante l'elaborazione delle "
+#~ "dipendenze"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Impossibile eseguire stat sull'elenco dei pacchetti sorgente %s"
+
+# (ndt) non mi convince per niente, ma vediamo cosa salta fuori
+#~ msgid "Collecting File Provides"
+#~ msgstr "Il file fornisce"
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Impossibile trovare la somma hash per \"%s\" nel file Release"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Il blocco vendor %s non contiene impronte"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Totale spazio dipendenza di versione: "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s per %s compilato il %s %s\n"
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Lo spazio libero in %s è insufficiente"
+
+#~ msgid "Done"
+#~ msgstr "Eseguito"
+
+#~ msgid "Unable to parse package file %s (2)"
+#~ msgstr "Impossibile analizzare il file di pacchetto %s (2)"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Nessun portachiavi installato in %s."
+
+#~ msgid "Is stdout a terminal?"
+#~ msgstr "stdout è un terminale?"
+
+#~ msgid "ioctl(TIOCGWINSZ) failed"
+#~ msgstr "ioctl(TIOCGWINSZ) non riuscita"
+
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Errore interno, Upgrade ha rovinato qualche cosa"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s non è un pacchetto DEB valido."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Viene usato il punto di mount del CD-ROM %s\n"
+#~ "Montaggio CD-ROM\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Impossibile applicare la patch a %s con mmap e con l'utilizzo di "
+#~ "operazioni file. La patch sembra essere danneggiata."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Impossibile applicare la patch a %s con mmap (nessun errore da parte di "
+#~ "mmap). La patch sembra essere danneggiata."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr "Ignorato il rilascio non disponibile \"%s\" del pacchetto \"%s\""
+
+#~ msgid "Downloading %s %s"
+#~ msgstr "Scaricamento di %s %s"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Questo non è un archivio DEB valido: membri \"%s\", \"%s\" o \"%s\" "
+#~ "mancanti"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5sum non corrispondente"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Impossibile trovare un file per il pacchetto %s. Potrebbe essere "
+#~ "necessario correggere manualmente questo pacchetto."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Impossibile scrivere il registro, openpty() non riuscita (forse /dev/pts "
+#~ "non è montato)\n"
diff --git a/po/ja.po b/po/ja.po
new file mode 100644
index 000000000..19ef1c57f
--- /dev/null
+++ b/po/ja.po
@@ -0,0 +1,3850 @@
+# Japanese messages for apt.
+# Copyright (C) 2001 Free Software Foundation, Inc.
+# Project Vine, Daisuke SUZUKI <daisuke@linux.or.jp>, 2001-2002
+# Debian Project, Masato Taruishi <taru@debian.org>, 2002
+# Debian Project, Keita Maehara <maehara@debian.org>, 2003
+# Debian Project, Kenshi Muto <kmuto@debian.org>, 2004-2012
+# Takuma Yamada <tyamada@takumayamada.com>, 2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.4\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-01-27 21:41+0100\n"
+"PO-Revision-Date: 2017-01-06 04:50+0900\n"
+"Last-Translator: Takuma Yamada <tyamada@takumayamada.com>\n"
+"Language-Team: Japanese <debian-japanese@lists.debian.org>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Gtranslator 2.91.6\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "ä¸æ­£ãªã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ç½²å"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "アーカイブメンãƒãƒ¼ãƒ˜ãƒƒãƒ€ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "ä¸æ­£ãªã‚¢ãƒ¼ã‚«ã‚¤ãƒ–メンãƒãƒ¼ãƒ˜ãƒƒãƒ€ %s"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "ä¸æ­£ãªã‚¢ãƒ¼ã‚«ã‚¤ãƒ–メンãƒãƒ¼ãƒ˜ãƒƒãƒ€"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "アーカイブãŒä¸è¶³ã—ã¦ã„ã¾ã™"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "アーカイブヘッダã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "'%s' ã®ãŸã‚ã«è¨­å®šã•ã‚ŒãŸåœ§ç¸®ãƒ—ログラムãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "壊れãŸã‚¢ãƒ¼ã‚«ã‚¤ãƒ–"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "tar ãƒã‚§ãƒƒã‚¯ã‚µãƒ æ¤œè¨¼ãŒå¤±æ•—ã—ã¾ã—ãŸã€‚アーカイブãŒå£Šã‚Œã¦ã„ã¾ã™"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "未知㮠TAR ヘッダタイプ %uã€ãƒ¡ãƒ³ãƒãƒ¼ %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "'%s' メンãƒãƒ¼ãŒãªã„ãŸã‚ã€æ­£ã—ã„ DEB アーカイブã§ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "内部エラーã€ãƒ¡ãƒ³ãƒãƒ¼ %s を特定ã§ãã¾ã›ã‚“"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "解æžã§ããªã„コントロールファイル"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "ファイル %s ã®æ›¸ãè¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "%s ã®ã‚¯ãƒ­ãƒ¼ã‚ºã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "パス %s ã¯é•·ã™ãŽã¾ã™"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "%s を複数回展開ã—ã¦ã„ã¾ã™"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "ディレクトリ %s 㯠divert ã•ã‚Œã¦ã„ã¾ã™"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr ""
+"ã“ã®ãƒ‘ッケージ㯠diversion ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã® %s/%s ã«æ›¸ã込もã†ã¨ã—ã¦ã„ã¾ã™"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "diversion パスãŒé•·ã™ãŽã¾ã™"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "%s ã®çŠ¶æ…‹ã‚’å–å¾—ã™ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "%s ã‚’ %s ã«åå‰å¤‰æ›´ã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "ディレクトリ %s ãŒéžãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ç½®æ›ã•ã‚Œã‚ˆã†ã¨ã—ã¦ã„ã¾ã™"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "ãƒãƒƒã‚·ãƒ¥ãƒã‚±ãƒ„内ã§ãƒŽãƒ¼ãƒ‰ã‚’特定ã™ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "パスãŒé•·ã™ãŽã¾ã™"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "%s ã«å¯¾ã™ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãªã„パッケージマッãƒã‚’上書ãã—ã¾ã™"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "ファイル %s/%s ãŒãƒ‘ッケージ %s ã®ã‚‚ã®ã‚’上書ãã—ã¾ã™"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "%s を読ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "%s ã®çŠ¶æ…‹ã‚’å–å¾—ã§ãã¾ã›ã‚“"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "リンクã•ã‚Œã¦ã„るノード㧠DropNode ãŒå‘¼ã°ã‚Œã¾ã—ãŸ"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "ãƒãƒƒã‚·ãƒ¥è¦ç´ ã‚’特定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "diversion ã®å‰²ã‚Šå½“ã¦ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "AddDiversion ã§ã®å†…部エラー"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "%s -> %s 㨠%s/%s ã® diversion を上書ãã—よã†ã¨ã—ã¦ã„ã¾ã™"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "%s -> %s ã® diversion ãŒäºŒé‡ã«è¿½åŠ ã•ã‚Œã¦ã„ã¾ã™"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "設定ファイル %s/%s ãŒé‡è¤‡ã—ã¦ã„ã¾ã™"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+"ã“ã®ã‚ˆã†ãªãƒªãƒã‚¸ãƒˆãƒªã‹ã‚‰æ›´æ–°ã‚’安全ã«è¡Œã†ã“ã¨ãŒã§ããªã„ã®ã§ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ã¯æ›´"
+"æ–°ãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+"ã“ã®ã‚ˆã†ãªãƒªãƒã‚¸ãƒˆãƒªã‹ã‚‰å–å¾—ã—ãŸãƒ‡ãƒ¼ã‚¿ã¯èªè¨¼ã§ããªã„ã®ã§ã€ãƒ‡ãƒ¼ã‚¿ã®ä½¿ç”¨ã¯æ½œåœ¨"
+"çš„ã«å±é™ºã§ã™ã€‚"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+"リãƒã‚¸ãƒˆãƒªã®ä½œæˆã¨ãƒ¦ãƒ¼ã‚¶è¨­å®šã®è©³ç´°ã¯ã€apt-secure(8) man ページをå‚ç…§ã—ã¦ãã "
+"ã•ã„。"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "リãƒã‚¸ãƒˆãƒª %s ã¯ã‚‚ã†ç½²åã•ã‚Œã¦ã„ã¾ã›ã‚“。"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "リãƒã‚¸ãƒˆãƒª %s ã«ã¯ Release ファイルãŒãªããªã£ã¦ã„ã¾ã™ã€‚"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+"通常ã¯è¨±å¯ã•ã‚Œã¾ã›ã‚“ãŒã€ã‚ªãƒ—ション Acquire::"
+"AllowDowngradeToInsecureRepositories ãŒä¸Šæ›¸ãã™ã‚‹ãŸã‚ã«æŒ‡å®šã•ã‚Œã¾ã—ãŸã€‚"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is not signed."
+msgstr "リãƒã‚¸ãƒˆãƒª %s ã¯ç½²åã•ã‚Œã¦ã„ã¾ã›ã‚“。"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "リãƒã‚¸ãƒˆãƒª %s ã«ã¯ Release ファイルãŒã‚ã‚Šã¾ã›ã‚“。"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "リãƒã‚¸ãƒˆãƒª '%s' ã¯å¼±ã„セキュリティ情報ã—ã‹æä¾›ã—ã¦ã„ã¾ã›ã‚“。"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "%s ã®ãƒªãƒ³ã‚¯èª­ã¿å–ã‚Šã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "ãƒãƒƒã‚·ãƒ¥ã‚µãƒ ãŒé©åˆã—ã¾ã›ã‚“"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr "ã“ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’安全ã«å®Ÿæ–½ã™ã‚‹ã®ã«å分ãªæƒ…å ±ãŒå¾—られã¾ã›ã‚“。"
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "åå‰ã®å¤‰æ›´ã«å¤±æ•—ã—ã¾ã—ãŸã€‚%s (%s -> %s)"
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "サイズãŒé©åˆã—ã¾ã›ã‚“"
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr "ä¸æ­£ãªãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼"
+
+#: apt-pkg/acquire-item.cc
+msgid "Signature error"
+msgstr "ç½²åエラー"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+"クリアサインã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ãŒæœ‰åŠ¹ã§ã¯ãªãã€'%s' ã‚’å¾—ã¾ã—㟠(èªè¨¼ã«ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯"
+"ãŒå¿…è¦?)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"ç½²åç…§åˆä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚リãƒã‚¸ãƒˆãƒªã¯æ›´æ–°ã•ã‚Œãšã€éŽåŽ»ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹"
+"ファイルãŒä½¿ã‚ã‚Œã¾ã™ã€‚GPG エラー: %s: %s"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "GPG エラー: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+"リãƒã‚¸ãƒˆãƒª '%2$s' ãŒã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ '%3$s' をサãƒãƒ¼ãƒˆã—ãªã„ãŸã‚設定ファイル "
+"'%1$s' ã®å–得をスキップ"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"期待ã•ã‚Œã‚‹ã‚¨ãƒ³ãƒˆãƒª '%s' ㌠Release ファイル内ã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ (誤ã£ãŸ "
+"sources.list エントリã‹ã€å£Šã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+"リãƒã‚¸ãƒˆãƒª '%2$s' ã¯å¼±ã„セキュリティ情報ã®ã¿ã‚’æä¾›ã—ã¦ã„ã‚‹ãŸã‚ã€è¨­å®šãƒ•ã‚¡ã‚¤ãƒ« "
+"'%1$s' ã®å–得をスキップã—ã¾ã™"
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"%s ã® Release ファイルã¯æœŸé™åˆ‡ã‚Œ (%s 以æ¥ç„¡åŠ¹) ã§ã™ã€‚ã“ã®ãƒªãƒã‚¸ãƒˆãƒªã‹ã‚‰ã®æ›´æ–°"
+"物ã¯é©ç”¨ã•ã‚Œã¾ã›ã‚“。"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr ""
+"ディストリビューションãŒç«¶åˆã—ã¦ã„ã¾ã™: %s (%s を期待ã—ã¦ã„ãŸã®ã« %s ã‚’å–å¾—ã—"
+"ã¾ã—ãŸ)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"パッケージ %s ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®ä½ç½®ã‚’特定ã§ãã¾ã›ã‚“。ãŠãらãã“ã®ãƒ‘ッケージを手動"
+"ã§ä¿®æ­£ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ (存在ã—ãªã„アーキテクãƒãƒ£ã®ãŸã‚)。"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr "'%2$s' ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ '%1$s' をダウンロードã™ã‚‹ã‚½ãƒ¼ã‚¹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"パッケージインデックスファイルãŒå£Šã‚Œã¦ã„ã¾ã™ã€‚パッケージ %s ã« Filename: "
+"フィールドãŒã‚ã‚Šã¾ã›ã‚“。"
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "%s=%s ã®ãŸã‚変更履歴ãŒåˆ©ç”¨ã§ãã¾ã›ã‚“"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr "メソッド '%s' ã¯è¨­å®šã«ã‚ˆã‚Šã¯ã£ãã‚Šã¨ç„¡åŠ¹ã«ã•ã‚Œã¦ã„ã¾ã™ã€‚"
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+"Tor を利用ã™ã‚‹å ´åˆã«ã¯ %2$s ã§ã¯ãªã %1$s を使ã†ã“ã¨ã‚’覚ãˆã¦ãŠã„ã¦ãã ã•ã„。"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "メソッドドライム%s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr "パッケージ %s ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã™ã‹?"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "メソッド %s ãŒæ­£å¸¸ã«é–‹å§‹ã—ã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+"'%s' ã¨ãƒ©ãƒ™ãƒ«ã®ä»˜ã„ãŸãƒ‡ã‚£ã‚¹ã‚¯ã‚’ドライブ '%s' ã«å…¥ã‚Œã¦ [Enter] キーを押ã—ã¦ã"
+"ã ã•ã„。"
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "リストディレクトリ %spartial ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "アーカイブディレクトリ %spartial ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "ディレクトリ %s をロックã§ãã¾ã›ã‚“"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr "システムã«ã‚µãƒ³ãƒ‰ãƒœãƒƒã‚¯ã‚¹ãƒ¦ãƒ¼ã‚¶ '%s' ãŒã‚ã‚Šã¾ã›ã‚“。権é™ã‚’削除ã§ãã¾ã›ã‚“"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+"ファイル '%s' ãŒãƒ¦ãƒ¼ã‚¶ '%s' ã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„ãŸã‚ã€ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã¯ root ã§"
+"サンドボックスを通ã•ãšã«è¡Œã‚ã‚Œã¾ã™ã€‚"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr "%s ã®æ¶ˆåŽ»ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "%s ã¸å¤‰æ›´ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "ファイルをå–å¾—ã—ã¦ã„ã¾ã™ %li/%li (残り %s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "ファイルをå–å¾—ã—ã¦ã„ã¾ã™ %li/%li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"パッケージ %s ã‚’å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ãŒã€ãã®ãŸã‚ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–を見"
+"ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"エラーã€pkgProblemResolver::Resolve ã¯åœæ­¢ã—ã¾ã—ãŸã€‚ãŠãらã変更ç¦æ­¢ãƒ‘ッケー"
+"ジãŒåŽŸå› ã§ã™ã€‚"
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "å•é¡Œã‚’解決ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。壊れãŸå¤‰æ›´ç¦æ­¢ãƒ‘ッケージãŒã‚ã‚Šã¾ã™ã€‚"
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+"パッケージリストã¾ãŸã¯ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’解釈ã¾ãŸã¯ã‚ªãƒ¼ãƒ—ンã™ã‚‹ã“ã¨ãŒã§ãã¾"
+"ã›ã‚“。"
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr ""
+"ã“れらã®å•é¡Œã‚’解決ã™ã‚‹ãŸã‚ã«ã¯ apt-get update を実行ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾"
+"ã›ã‚“"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "ソースã®ãƒªã‚¹ãƒˆã‚’読むã“ã¨ãŒã§ãã¾ã›ã‚“。"
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "æ­£è¦è¡¨ç¾ã®å±•é–‹ã‚¨ãƒ©ãƒ¼ - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "'%2$s' ã®ãƒªãƒªãƒ¼ã‚¹ '%1$s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "'%2$s' ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ '%1$s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "タスク '%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "æ­£è¦è¡¨ç¾ '%s' ã§ã¯ãƒ‘ッケージã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "'%s' ã«ä¸€è‡´ã™ã‚‹ãƒ‘ッケージã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "パッケージ %s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr "純粋ãªä»®æƒ³ãƒ‘ッケージã®ãŸã‚ã€ãƒ‘ッケージ '%s' ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’é¸ã¹ã¾ã›ã‚“"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"純粋ãªä»®æƒ³ãƒ‘ッケージã®ãŸã‚ã€ãƒ‘ッケージ '%s' ã®æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’é¸ã¹ã¾ã›ã‚“"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr "候補ãŒå­˜åœ¨ã—ãªã„ã®ã§ã€ãƒ‘ッケージ %s ã®å€™è£œãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’é¸ã¹ã¾ã›ã‚“"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"インストールã•ã‚Œã¦ã„ãªã„ã®ã§ã€ãƒ‘ッケージ %s ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’é¸"
+"ã¹ã¾ã›ã‚“。"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"パッケージ '%s' ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã¾ãŸã¯å€™è£œã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯ã„ãšã‚Œã‚‚存在ã—ãªã„"
+"ã®ã§é¸ã¹ã¾ã›ã‚“"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "ソースリスト %2$s ã® %1$u 行目ãŒé•·ã™ãŽã¾ã™ã€‚"
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "CD-ROM をアンマウントã—ã¦ã„ã¾ã™ ...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "CD-ROM マウントãƒã‚¤ãƒ³ãƒˆ %s を使用ã—ã¾ã™\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "ディスクを待ã£ã¦ã„ã¾ã™ ...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "CD-ROM をマウントã—ã¦ã„ã¾ã™ ...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "確èªã—ã¦ã„ã¾ã™... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "æ ¼ç´ã•ã‚ŒãŸãƒ©ãƒ™ãƒ«: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "ディスクã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’走査ã—ã¦ã„ã¾ã™ ...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"%zu ã®ãƒ‘ッケージインデックスã€%zu ã®ã‚½ãƒ¼ã‚¹ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã€%zu ã®ç¿»è¨³ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯"
+"スã€%zu ã®ç½²åを見ã¤ã‘ã¾ã—ãŸ\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"パッケージファイルをé…ç½®ã§ãã¾ã›ã‚“。Debian ã®ãƒ‡ã‚£ã‚¹ã‚¯ã§ã¯ãªã„ã‹ã€èª¤ã£ãŸã‚¢ãƒ¼ã‚­"
+"テクãƒãƒ£ã§ã¯ãªã„ã§ã—ょã†ã‹?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "ラベル '%s' を見ã¤ã‘ã¾ã—ãŸ\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "ã“ã‚Œã¯æœ‰åŠ¹ãªåå‰ã§ã¯ã‚ã‚Šã¾ã›ã‚“。å†è©¦è¡Œã—ã¦ãã ã•ã„。\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"ã“ã®ãƒ‡ã‚£ã‚¹ã‚¯ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«å‘¼ã°ã‚Œã¾ã™: \n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "パッケージリストをコピーã—ã¦ã„ã¾ã™ ..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "æ–°ã—ã„ソースリストを書ã込んã§ã„ã¾ã™\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "ã“ã®ãƒ‡ã‚£ã‚¹ã‚¯ã®ã‚½ãƒ¼ã‚¹ãƒªã‚¹ãƒˆã®ã‚¨ãƒ³ãƒˆãƒª:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "%s ã®çŠ¶æ…‹ã‚’å–å¾—ã§ãã¾ã›ã‚“。"
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "マウントãƒã‚¤ãƒ³ãƒˆ %s ã®çŠ¶æ…‹ã‚’å–å¾—ã§ãã¾ã›ã‚“"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "CD-ROM ã®çŠ¶æ…‹ã‚’å–å¾—ã™ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr ""
+"コマンドラインオプション '%c' [%s ã‹ã‚‰] ã¯ã€ã»ã‹ã®ã‚ªãƒ—ションã¨ã®çµ„ã¿åˆã‚ã›ã§"
+"ç†è§£ã§ãã¾ã›ã‚“。"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr ""
+"コマンドラインオプション %s ã¯ã€ã»ã‹ã®ã‚ªãƒ—ションã¨ã®çµ„ã¿åˆã‚ã›ã§ç†è§£ã§ãã¾ã›"
+"ã‚“"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "コマンドラインオプション %s 㯠boolean ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "オプション %s ã«ã¯å¼•æ•°ãŒå¿…è¦ã§ã™ã€‚"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "オプション %s: 設定項目ã«ã¯ =<値> を指定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "オプション %s ã«ã¯ '%s' ã§ã¯ãªãæ•´æ•°ã®å¼•æ•°ãŒå¿…è¦ã§ã™"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "オプション '%s' ã¯é•·ã™ãŽã¾ã™"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "%s を解釈ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。true ã‹ false を試ã—ã¦ãã ã•ã„。"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "ä¸æ­£ãªæ“作 %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "ç†è§£ã§ããªã„çœç•¥å½¢å¼ã§ã™: '%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "設定ファイル %s をオープンã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "文法エラー %s:%u: ブロックãŒåå‰ãªã—ã§å§‹ã¾ã£ã¦ã„ã¾ã™ã€‚"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "文法エラー %s:%u: ä¸æ­£ãªã‚¿ã‚°ã§ã™"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "文法エラー %s:%u: 値ã®å¾Œã«ä½™åˆ†ãªã‚´ãƒŸãŒå…¥ã£ã¦ã„ã¾ã™"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "文法エラー %s:%u: 命令ã¯ãƒˆãƒƒãƒ—レベルã§ã®ã¿å®Ÿè¡Œã§ãã¾ã™"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "文法エラー %s:%u: インクルードã®ãƒã‚¹ãƒˆãŒå¤šã™ãŽã¾ã™"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "文法エラー %s:%u: ã“ã“ã‹ã‚‰ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã•ã‚Œã¦ã„ã¾ã™"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "文法エラー %s:%u: 未対応ã®å‘½ä»¤ '%s'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"文法エラー %s:%u: clear ディレクティブã¯ã€å¼•æ•°ã¨ã—ã¦ã‚ªãƒ—ションツリーを必è¦ã¨"
+"ã—ã¾ã™"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "文法エラー %s:%u: ファイルã®æœ€å¾Œã«ä½™è¨ˆãªã‚´ãƒŸãŒã‚ã‚Šã¾ã™"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "ファイル %s ã®å‰Šé™¤ä¸­ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "読ã¿è¾¼ã¿å°‚用ã®ãƒ­ãƒƒã‚¯ãƒ•ã‚¡ã‚¤ãƒ« %s ã«ãƒ­ãƒƒã‚¯ã¯ä½¿ç”¨ã—ã¾ã›ã‚“"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "ロックファイル %s をオープンã§ãã¾ã›ã‚“"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "nfs マウントã•ã‚ŒãŸãƒ­ãƒƒã‚¯ãƒ•ã‚¡ã‚¤ãƒ« %s ã«ã¯ãƒ­ãƒƒã‚¯ã‚’使用ã—ã¾ã›ã‚“"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "ロック %s ãŒå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr "'%s' ãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã¯ãªã„ãŸã‚ã€ãƒ•ã‚¡ã‚¤ãƒ«ã®ä¸€è¦§ã‚’作æˆã§ãã¾ã›ã‚“"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr "ディレクトリ '%2$s' ã® '%1$s' ãŒé€šå¸¸ãƒ•ã‚¡ã‚¤ãƒ«ã§ã¯ãªã„ãŸã‚ã€ç„¡è¦–ã—ã¾ã™"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+"ディレクトリ '%2$s' ã® '%1$s' ãŒãƒ•ã‚¡ã‚¤ãƒ«åæ‹¡å¼µå­ã‚’æŒãŸãªã„ãŸã‚ã€ç„¡è¦–ã—ã¾ã™"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"ディレクトリ '%2$s' ã® '%1$s' ãŒç„¡åŠ¹ãªãƒ•ã‚¡ã‚¤ãƒ«åæ‹¡å¼µå­ã‚’æŒã£ã¦ã„ã‚‹ãŸã‚ã€ç„¡è¦–"
+"ã—ã¾ã™"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "%s ã‚’å¾…ã¡ã¾ã—ãŸãŒã€ãã“ã«ã¯ã‚ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "å­ãƒ—ロセス %s ãŒã‚»ã‚°ãƒ¡ãƒ³ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³é•åã‚’å—ã‘å–ã‚Šã¾ã—ãŸã€‚"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "å­ãƒ—ロセス %s ãŒã‚·ã‚°ãƒŠãƒ« %u ã‚’å—ã‘å–ã‚Šã¾ã—ãŸã€‚"
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "å­ãƒ—ロセス %s ãŒã‚¨ãƒ©ãƒ¼ã‚³ãƒ¼ãƒ‰ (%u) ã‚’è¿”ã—ã¾ã—ãŸ"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "å­ãƒ—ロセス %s ãŒäºˆæœŸã›ãšçµ‚了ã—ã¾ã—ãŸ"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "書ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "gzip ファイル %s ã®ã‚¯ãƒ­ãƒ¼ã‚ºä¸­ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸ"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr "予期ã—ãªã„ファイル終端 (EOF)"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "å­ãƒ—ロセス IPC ã®ç”Ÿæˆã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "以下ã®åœ§ç¸®ãƒ„ールã®å®Ÿè¡Œã«å¤±æ•—ã—ã¾ã—ãŸ: "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "ファイル %s をオープンã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "ファイルデスクリプタ %d ã‚’é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "読ã¿è¾¼ã¿ãŒ %llu 残ã£ã¦ã„ã‚‹ã¯ãšã§ã™ãŒã€ä½•ã‚‚残ã£ã¦ã„ã¾ã›ã‚“"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "ã‚㨠%llu 書ã込む必è¦ãŒã‚ã‚Šã¾ã™ãŒã€æ›¸ã込むã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "ファイル %s ã®ã‚¯ãƒ­ãƒ¼ã‚ºä¸­ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "%s ã‹ã‚‰ %s ã¸ã®ãƒ•ã‚¡ã‚¤ãƒ«å変更中ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸ"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "ファイルã®åŒæœŸä¸­ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸ"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to mkstemp %s"
+msgstr "mkstemp %s を実行ã§ãã¾ã›ã‚“"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "%s ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "空ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ mmap ã§ãã¾ã›ã‚“"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "%llu ãƒã‚¤ãƒˆã® mmap ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "ファイルデスクリプタ %i ã¯é‡è¤‡ã§ãã¾ã›ã‚“"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "mmap をクローズã§ãã¾ã›ã‚“"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "mmap ã‚’åŒæœŸã§ãã¾ã›ã‚“"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "%lu ãƒã‚¤ãƒˆã® mmap ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "ファイルã®åˆ‡ã‚Šè©°ã‚ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"å‹•çš„ MMap ãŒç¯„囲を越ãˆã¾ã—ãŸã€‚APT::Cache-Start ã®å¤§ãã•ã‚’増やã—ã¦ãã ã•ã„。ç¾"
+"在値㯠%lu ã§ã™ (man 5 apt.conf ã‚’å‚ç…§)。"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr "%lu ãƒã‚¤ãƒˆã®ä¸Šé™ã«é”ã—ã¦ã„ã‚‹ãŸã‚ã€MMap ã®ã‚µã‚¤ã‚ºã‚’増やã›ã¾ã›ã‚“。"
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"自動増加ãŒãƒ¦ãƒ¼ã‚¶ã«ã‚ˆã£ã¦ç„¡åŠ¹ã«ã•ã‚Œã¦ã„ã‚‹ãŸã‚ã€MMap ã®ã‚µã‚¤ã‚ºã‚’増やã›ã¾ã›ã‚“。"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... エラー!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... 完了"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr "..."
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... %u%%"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%li日 %li時間 %li分 %li秒"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%li時間 %li分 %li秒"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%li分 %li秒"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%li秒"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "é¸æŠžã•ã‚ŒãŸ %s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+"ターゲット %1$s ã¯ã‚½ãƒ¼ã‚¹ %4$s ã‹ã‚‰ %3$s ã¨åŒã˜ãƒ•ã‚¡ã‚¤ãƒ« (%2$s) ã®å–得を求ã‚ã¦"
+"ã„ã¾ã™"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr "ターゲット %s (%s) 㯠%s 㨠%s ã§è¤‡æ•°å›žè¨­å®šã•ã‚Œã¦ã„ã¾ã™"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Release ファイル %s を解釈ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Release ファイル %s ã«ã‚»ã‚¯ã‚·ãƒ§ãƒ³ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Release ファイル %s ã« Hash エントリãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+"Release ファイル %s ã«ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ç›®çš„ã®ãŸã‚ã«å分ã«å¼·ã„ã¨è€ƒãˆã‚‰ã‚Œã¦ã„ã‚‹ãƒãƒƒ"
+"シュエントリãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Release ファイル %2$s ã«ç„¡åŠ¹ãª '%1$s' エントリãŒã‚ã‚Šã¾ã™"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr "ソース %2$s %3$s ã«é–¢ã—ã¦ã‚ªãƒ—ション %1$s ã®å€¤ãŒç«¶åˆã—ã¾ã™"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+"ソース %2$s %3$s (%4$s) ã«é–¢ã—ã¦ã‚ªãƒ—ション %1$s ã«è¨­å®šã•ã‚ŒãŸå€¤ãŒç„¡åŠ¹ã§ã™"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+"ソース %2$s %3$s ã«é–¢ã—ã¦ã‚ªãƒ—ション %1$s ã®å€¤ãŒç«¶åˆã—ã¾ã™: %4$s != %5$s"
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "パッケージファイル %s を解釈ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"管ç†ç”¨ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª (%s) をロックã§ãã¾ã›ã‚“。ã“れを使ã†åˆ¥ã®ãƒ—ロセスãŒå‹•ã„ã¦ã„"
+"ã¾ã›ã‚“ã‹?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr ""
+"管ç†ç”¨ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª (%s) をロックã§ãã¾ã›ã‚“。root 権é™ã§å®Ÿè¡Œã—ã¦ã„ã¾ã™ã‹?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"dpkg ã¯ä¸­æ–­ã•ã‚Œã¾ã—ãŸã€‚å•é¡Œã‚’修正ã™ã‚‹ã«ã¯ '%s' を手動ã§å®Ÿè¡Œã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾"
+"ã™ã€‚"
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "ロックã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "%s をインストールã—ã¦ã„ã¾ã™"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "%s を設定ã—ã¦ã„ã¾ã™"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "%s を削除ã—ã¦ã„ã¾ã™"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "%s を完全ã«å‰Šé™¤ã—ã¦ã„ã¾ã™"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "%s ã®æ¶ˆå¤±ã‚’記録ã—ã¦ã„ã¾ã™"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "インストール後トリガ %s を実行ã—ã¦ã„ã¾ã™"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "%s をインストールã—ã¾ã—ãŸ"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "ディレクトリ '%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "ファイル '%s' をオープンã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "%s を準備ã—ã¦ã„ã¾ã™"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "%s を展開ã—ã¦ã„ã¾ã™"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "%s ã®è¨­å®šã‚’準備ã—ã¦ã„ã¾ã™"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "%s ã®å‰Šé™¤ã‚’準備ã—ã¦ã„ã¾ã™"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "%s を削除ã—ã¾ã—ãŸ"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "%s を完全ã«å‰Šé™¤ã™ã‚‹æº–備をã—ã¦ã„ã¾ã™"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "%s を完全ã«å‰Šé™¤ã—ã¾ã—ãŸ"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Can not write log (%s)"
+msgstr "ログを書ãè¾¼ã‚ã¾ã›ã‚“ (%s)"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr "/dev/pts ã¯ãƒžã‚¦ãƒ³ãƒˆã•ã‚Œã¦ã„ã¾ã™ã‹?"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "æ“作ã¯ãã‚ŒãŒå®Œäº†ã™ã‚‹å‰ã«ä¸­æ–­ã•ã‚Œã¾ã—ãŸ"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr "MaxReports ã«ã™ã§ã«é”ã—ã¦ã„ã‚‹ãŸã‚ã€ãƒ¬ãƒãƒ¼ãƒˆã¯æ›¸ãè¾¼ã¾ã‚Œã¾ã›ã‚“"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "ä¾å­˜é–¢ä¿‚ã®å•é¡Œ - 未設定ã®ã¾ã¾ã«ã—ã¦ã„ã¾ã™"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"エラーメッセージã¯å‰ã®å¤±æ•—ã‹ã‚‰ç¶šãエラーã§ã‚ã‚‹ã“ã¨ã‚’示ã—ã¦ã„ã‚‹ã®ã§ã€ãƒ¬ãƒãƒ¼ãƒˆ"
+"ã¯æ›¸ãè¾¼ã¾ã‚Œã¾ã›ã‚“。"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"エラーメッセージã¯ãƒ‡ã‚£ã‚¹ã‚¯ãƒ•ãƒ«ã‚¨ãƒ©ãƒ¼ã§ã‚ã‚‹ã“ã¨ã‚’示ã—ã¦ã„ã‚‹ã®ã§ã€ãƒ¬ãƒãƒ¼ãƒˆã¯æ›¸"
+"ãè¾¼ã¾ã‚Œã¾ã›ã‚“。"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"エラーメッセージã¯ãƒ¡ãƒ¢ãƒªè¶…éŽã‚¨ãƒ©ãƒ¼ã§ã‚ã‚‹ã“ã¨ã‚’示ã—ã¦ã„ã‚‹ã®ã§ã€ãƒ¬ãƒãƒ¼ãƒˆã¯æ›¸ã"
+"è¾¼ã¾ã‚Œã¾ã›ã‚“。"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"エラーメッセージã¯ãƒ­ãƒ¼ã‚«ãƒ«ã‚·ã‚¹ãƒ†ãƒ ã®å•é¡Œã§ã‚ã‚‹ã“ã¨ã‚’示ã—ã¦ã„ã‚‹ã®ã§ã€ãƒ¬ãƒãƒ¼ãƒˆ"
+"ã¯æ›¸ãè¾¼ã¾ã‚Œã¾ã›ã‚“。"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"エラーメッセージ㯠dpkg I/O エラーã§ã‚ã‚‹ã“ã¨ã‚’示ã—ã¦ã„ã‚‹ã®ã§ã€ãƒ¬ãƒãƒ¼ãƒˆã¯æ›¸ã"
+"è¾¼ã¾ã‚Œã¾ã›ã‚“。"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "ä¾å­˜é–¢ä¿‚ツリーを作æˆã—ã¦ã„ã¾ã™"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "候補ãƒãƒ¼ã‚¸ãƒ§ãƒ³"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "ä¾å­˜é–¢ä¿‚ã®ç”Ÿæˆ"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "状態情報を読ã¿å–ã£ã¦ã„ã¾ã™"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "状態ファイル %s ã®ã‚ªãƒ¼ãƒ—ンã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "一時状態ファイル %s ã®æ›¸ãè¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "ソルãƒã«ã‚·ãƒŠãƒªã‚ªã‚’é€ä¿¡"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "ソルãƒã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’é€ä¿¡"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "解決をå—ã‘å–る準備"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr "外部ソルãƒãŒé©åˆ‡ãªã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãªã—ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "外部ソルãƒã‚’実行"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr "外部プランナーを実行"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr "プランナーã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’é€ä¿¡"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr "プランナーã«ã‚·ãƒŠãƒªã‚ªã‚’é€ä¿¡"
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr "外部プランナーãŒé©åˆ‡ãªã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãªã—ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "%i レコードを書ãè¾¼ã¿ã¾ã—ãŸã€‚\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "%i レコードを書ãè¾¼ã¿ã¾ã—ãŸã€‚%i 個ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒå­˜åœ¨ã—ã¾ã›ã‚“。\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "%i レコードを書ãè¾¼ã¿ã¾ã—ãŸã€‚%i 個ã®é©åˆã—ãªã„ファイルãŒã‚ã‚Šã¾ã™ã€‚\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"%i レコードを書ãè¾¼ã¿ã¾ã—ãŸã€‚%i 個ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒè¦‹ã¤ã‹ã‚‰ãšã€%i 個ã®é©åˆã—ãªã„"
+"ファイルãŒã‚ã‚Šã¾ã™ã€‚\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "èªè¨¼ãƒ¬ã‚³ãƒ¼ãƒ‰ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "ãƒãƒƒã‚·ãƒ¥ã‚µãƒ ãŒé©åˆã—ã¾ã›ã‚“: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "パッケージングシステム '%s' ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "é©åˆ‡ãªãƒ‘ッケージシステムタイプを特定ã§ãã¾ã›ã‚“"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr "進æ—: [%3i%%]"
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "dpkg を実行ã—ã¦ã„ã¾ã™"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"'%s' ã®å³æ™‚設定ã¯å‹•ä½œã—ã¾ã›ã‚“。詳細ã«ã¤ã„ã¦ã¯ man 5 apt.conf ã® APT::"
+"Immediate-Configure ã®é …ã‚’å‚ç…§ã—ã¦ãã ã•ã„。(%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "'%s' を設定ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"ã“ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¯ã€ç«¶åˆ/先行ä¾å­˜ã®ãƒ«ãƒ¼ãƒ—ãŒåŽŸå› ã§ã€ä¸€æ™‚çš„ã«é‡è¦ãªä¸å¯æ¬ ãƒ‘ッ"
+"ケージ %s を削除ã—ã¾ã™ã€‚ã“ã‚Œã¯å¤šãã®å ´åˆã«å•é¡ŒãŒèµ·ã“る原因ã¨ãªã‚Šã¾ã™ã€‚本当ã«"
+"ã“れを行ã„ãŸã„ãªã‚‰ã€APT::Force-LoopBreak オプションを有効ã«ã—ã¦ãã ã•ã„。"
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "空ã®ãƒ‘ッケージキャッシュ"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "パッケージキャッシュファイルãŒå£Šã‚Œã¦ã„ã¾ã™"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "ã“ã®ãƒ‘ッケージキャッシュファイルã¯äº’æ›æ€§ãŒãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã™"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "ã“ã® APT ã¯ãƒãƒ¼ã‚¸ãƒ§ãƒ‹ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ  '%s' をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr ""
+"パッケージキャッシュãŒç•°ãªã‚‹ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ç”¨ã«æ§‹ç¯‰ã•ã‚Œã¦ã„ã¾ã™: %s vs %s"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "パッケージキャッシュファイルãŒå£Šã‚Œã¦ã„ã¾ã™ã€‚ãƒãƒƒã‚·ãƒ¥ãŒé•ã„ã¾ã™"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "ä¾å­˜"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "先行ä¾å­˜"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "æ案"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "競åˆ"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "推奨"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "ç½®æ›"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "破壊"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "æ‹¡å¼µ"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "廃止"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "é‡è¦"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "è¦æ±‚"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "標準"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "特別"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "ä»»æ„"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "キャッシュã«éžäº’æ›ãªãƒãƒ¼ã‚¸ãƒ§ãƒ‹ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ ãŒã‚ã‚Šã¾ã™"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "%s を処ç†ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠(%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "ã“ã® APT ãŒå¯¾å¿œã—ã¦ã„る以上ã®æ•°ã®ãƒ‘ッケージãŒæŒ‡å®šã•ã‚Œã¾ã—ãŸã€‚"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "ã“ã® APT ãŒå¯¾å¿œã—ã¦ã„る以上ã®æ•°ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒè¦æ±‚ã•ã‚Œã¾ã—ãŸã€‚"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "ã“ã® APT ãŒå¯¾å¿œã—ã¦ã„る以上ã®æ•°ã®èª¬æ˜ŽãŒè¦æ±‚ã•ã‚Œã¾ã—ãŸã€‚"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "ã“ã® APT ãŒå¯¾å¿œã—ã¦ã„る以上ã®æ•°ã®ä¾å­˜é–¢ä¿‚ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "パッケージリストを読ã¿è¾¼ã‚“ã§ã„ã¾ã™"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "ソースキャッシュã®ä¿å­˜ä¸­ã« IO エラーãŒç™ºç”Ÿã—ã¾ã—ãŸ"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "インデックスファイルã®ã‚¿ã‚¤ãƒ— '%s' ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"APT::Default-Release 㮠値 '%s' ã¯ã€ãã®ã‚ˆã†ãªãƒªãƒªãƒ¼ã‚¹ã‚’ソース中ã‹ã‚‰åˆ©ç”¨ã§ã"
+"ãªã„ãŸã‚ã€ç„¡åŠ¹ã§ã™"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr ""
+"ä¸æ­£ãªãƒ¬ã‚³ãƒ¼ãƒ‰ãŒãƒ—リファレンスファイル %s ã«å­˜åœ¨ã—ã¾ã™ã€‚パッケージヘッダãŒã‚"
+"ã‚Šã¾ã›ã‚“"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "pin タイプ %s ã‚’ç†è§£ã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr "%s: 値 %s 㯠pin ã®æœ‰åŠ¹ãªå„ªå…ˆåº¦ã®ç¯„囲外ã§ã™ (%d ã‹ã‚‰ %d)"
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "pin ã§å„ªå…ˆåº¦ (ã¾ãŸã¯ 0) ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "ä¸æ­£ãªã‚¨ãƒ³ãƒˆãƒª %u 行目 %s ファイル %s (%s)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "%s をオープンã—ã¦ã„ã¾ã™"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "ソースリスト %2$s ã® %1$u 行目ãŒä¸æ­£ã§ã™ (type)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "ソースリスト %3$s ã® %2$u è¡Œã«ã‚るタイプ '%1$s' ã¯ä¸æ˜Žã§ã™"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "ソースリスト %2$s ã® %1$u 個目ã®ç¯€ãŒä¸æ­£ã§ã™ (type)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "ソースリスト %3$s ã® %2$u 個目ã®ç¯€ '%1$s' ã¯ä¸æ˜Žã§ã™"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr "コマンドラインã§æŒ‡å®šã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ« %s ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "sources.list ã« 'ソース' URI を指定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr "%s ã‚’æ•´æ•°ã«å¤‰æ›ã§ãã¾ã›ã‚“: 範囲外"
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "%s ã®å–å¾—ã«å¤±æ•—ã—ã¾ã—㟠%s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"ã„ãã¤ã‹ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ã“れらã¯ç„¡è¦–ã•ã‚Œ"
+"ã‚‹ã‹ã€å¤ã„ã‚‚ã®ãŒä»£ã‚ã‚Šã«ä½¿ã‚ã‚Œã¾ã™ã€‚"
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "アップグレードパッケージを検出ã—ã¦ã„ã¾ã™"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "ヒット:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "å–å¾—:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "無視:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "エラー:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "%sB ã‚’ %s ã§å–å¾—ã—ã¾ã—㟠(%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [処ç†ä¸­]"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"メディア変更: \n"
+" '%s'\n"
+"ã¨ãƒ©ãƒ™ãƒ«ã®ä»˜ã„ãŸãƒ‡ã‚£ã‚¹ã‚¯ã‚’ドライブ '%s' ã«å…¥ã‚Œã¦ [Enter] キーを押ã—ã¦ãã ã•"
+"ã„\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "ä¾å­˜é–¢ä¿‚を解決ã—ã¦ã„ã¾ã™ ..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " 失敗ã—ã¾ã—ãŸã€‚"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "ä¾å­˜é–¢ä¿‚を訂正ã§ãã¾ã›ã‚“"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "アップグレードセットを最å°åŒ–ã§ãã¾ã›ã‚“"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " 完了"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+"ã“れらを直ã™ãŸã‚ã«ã¯ 'apt --fix-broken install' を実行ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œ"
+"ã¾ã›ã‚“。"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"未解決ã®ä¾å­˜é–¢ä¿‚ã§ã™ã€‚'apt --fix-broken install' を実行ã—ã¦ã¿ã¦ãã ã•ã„ (ã¾ãŸ"
+"ã¯è§£æ³•ã‚’明示ã—ã¦ãã ã•ã„)。"
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr "ソート中"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "注æ„ã€ã‚¿ã‚¹ã‚¯ '%2$s' ã®ãŸã‚ã« '%1$s' ã‚’é¸æŠžã—ã¾ã™\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "注æ„ã€glob '%2$s' ã®ãŸã‚ã« '%1$s' ã‚’é¸æŠžã—ã¾ã™\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "注æ„ã€regex '%2$s' ã®ãŸã‚ã« '%1$s' ã‚’é¸æŠžã—ã¾ã™\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "パッケージ %s ã¯ã€ä»¥ä¸‹ã«ã‚ˆã£ã¦æä¾›ã•ã‚Œã‚‹ä»®æƒ³ãƒ‘ッケージã§ã™:\n"
+
+#: apt-private/private-cacheset.cc
+msgid " [Installed]"
+msgstr "[インストール済ã¿]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr "[候補ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ãªã„]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "インストールã™ã‚‹ã«ã¯ã€æ˜Žç¤ºçš„ã«ã„ãšã‚Œã‹ã‚’é¸æŠžã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"パッケージ %s ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“ãŒã€åˆ¥ã®ãƒ‘ッケージã‹ã‚‰å‚ç…§ã•ã‚Œã¾ã™ã€‚\n"
+"ã“ã‚Œã¯ã€ãƒ‘ッケージãŒæ¬ è½ã—ã¦ã„ã‚‹ã‹ã€å»ƒæ­¢ã•ã‚ŒãŸã‹ã€ã¾ãŸã¯åˆ¥ã®ã‚½ãƒ¼ã‚¹\n"
+"ã‹ã‚‰ã®ã¿åˆ©ç”¨å¯èƒ½ã§ã‚ã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "ã—ã‹ã—ã€ä»¥ä¸‹ã®ãƒ‘ッケージãŒç½®ãæ›ãˆã¾ã™:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "パッケージ '%s' ã«ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«å€™è£œãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "'%s' ã®ã‚ˆã†ãªä»®æƒ³ãƒ‘ッケージを削除ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"パッケージ '%s' ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ãªã„ãŸã‚削除もã•ã‚Œã¾ã›ã‚“。削除ã—ãŸã‹ã£"
+"ãŸã®ã¯ '%s' ã§ã—ょã†ã‹?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "パッケージ '%s' ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ãªã„ãŸã‚削除もã•ã‚Œã¾ã›ã‚“\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "注æ„ã€'%2$s' ã®ä»£ã‚ã‚Šã« '%1$s' ã‚’é¸æŠžã—ã¾ã™\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr "最も使用ã•ã‚Œã¦ã„るコマンド:"
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr "利用å¯èƒ½ãªã‚³ãƒžãƒ³ãƒ‰ã®è©³ç´°ã¯ %s ã‚’å‚ç…§ã—ã¦ãã ã•ã„。"
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+"設定オプションã¨æ§‹æ–‡ã¯ apt.conf(5) ã«è©³è¿°ã•ã‚Œã¦ã„ã¾ã™ã€‚\n"
+"ソースを設定ã™ã‚‹æ–¹æ³•ã®è©³ç´°ã¯ sources.list(5) ã§è¦‹ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚\n"
+"パッケージã¨ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®é¸æŠžã¯ apt_preferences(5) ã§è¡¨ç¾ã§ãã¾ã™ã€‚\n"
+"セキュリティã®è©³ç´°ã¯ apt-secure(8) ã‚’å‚ç…§ã—ã¦ãã ã•ã„。\n"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "ã“ã® APT 㯠Super Cow Powers 化ã•ã‚Œã¦ã„ã¾ã™ã€‚"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr "ã“ã® APT helper 㯠Super Meep Powers 化ã•ã‚Œã¦ã„ã¾ã™ã€‚"
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "パッケージãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "警告: 以下ã®ãƒ‘ッケージã¯èªè¨¼ã•ã‚Œã¦ã„ã¾ã›ã‚“!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "èªè¨¼ã®è­¦å‘Šã¯ä¸Šæ›¸ãã•ã‚Œã¾ã—ãŸã€‚\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "ã„ãã¤ã‹ã®ãƒ‘ッケージをèªè¨¼ã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "検証ãªã—ã«ã“れらã®ãƒ‘ッケージをインストールã—ã¾ã™ã‹?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+"--force-yes ã¯æ™‚代é…ã‚Œã§ã™ã€ä»£ã‚ã‚Šã« --allow ã§å§‹ã¾ã‚‹ã‚ªãƒ—ションã®ã„ãšã‚Œã‹ã‚’使"
+"用ã—ã¾ã™ã€‚"
+
+#: apt-private/private-download.cc
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr ""
+"èªè¨¼ã•ã‚Œã¦ã„ãªã„パッケージãŒã‚ã‚Šã€-y オプション㌠--allow-unauthenticated ãª"
+"ã—ã§ä½¿ç”¨ã•ã‚Œã¾ã—ãŸ"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "%s ã®ç©ºã領域を測定ã§ãã¾ã›ã‚“"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "%s ã«å……分ãªç©ºãスペースãŒã‚ã‚Šã¾ã›ã‚“。"
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "ダウンロードディレクトリをロックã§ãã¾ã›ã‚“"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"インストールã™ã‚‹ã“ã¨ãŒã§ããªã„パッケージãŒã‚ã‚Šã¾ã—ãŸã€‚ãŠãらãã€ã‚ã‚Šå¾—\n"
+"ãªã„状æ³ã‚’è¦æ±‚ã—ãŸã‹ã€(ä¸å®‰å®šç‰ˆãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューションを使用ã—ã¦ã„ã‚‹ã®\n"
+"ã§ã‚ã‚Œã°) å¿…è¦ãªãƒ‘ッケージãŒã¾ã ä½œæˆã•ã‚Œã¦ã„ãªã‹ã£ãŸã‚Š Incoming ã‹ã‚‰ç§»\n"
+"å‹•ã•ã‚Œã¦ã„ãªã„ã“ã¨ãŒè€ƒãˆã‚‰ã‚Œã¾ã™ã€‚"
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "以下ã®æƒ…å ±ãŒã“ã®å•é¡Œã‚’解決ã™ã‚‹ãŸã‚ã«å½¹ç«‹ã¤ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "壊れãŸãƒ‘ッケージ"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"ã„ãã¤ã‹ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã‚’å–å¾—ã§ãã¾ã›ã‚“。apt-get update を実行ã™ã‚‹ã‹ --fix-"
+"missing オプションを付ã‘ã¦è©¦ã—ã¦ã¿ã¦ãã ã•ã„。"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "内部エラーã€InstallPackages ãŒå£Šã‚ŒãŸãƒ‘ッケージã§å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "パッケージを削除ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“ãŒã€å‰Šé™¤ãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚"
+
+#: apt-private/private-install.cc
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr ""
+"ä¸å¯æ¬ ãƒ‘ッケージãŒå‰Šé™¤ã•ã‚Œã€-y オプション㌠--allow-remove-essential ãªã—ã§ä½¿"
+"用ã•ã‚Œã¾ã—ãŸ"
+
+#: apt-private/private-install.cc
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr ""
+"パッケージãŒãƒ€ã‚¦ãƒ³ã‚°ãƒ¬ãƒ¼ãƒ‰ã•ã‚Œã€-y オプション㌠--allow-downgrades ãªã—ã§ä½¿ç”¨"
+"ã•ã‚Œã¾ã—ãŸã€‚"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+"ä¿ç•™ãƒ‘ッケージãŒå¤‰æ›´ã•ã‚Œã€-y オプション㌠--allow-change-held-packages ãªã—ã§"
+"使用ã•ã‚Œã¾ã—ãŸã€‚"
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "内部エラーã€èª¿æ•´ãŒçµ‚ã‚ã£ã¦ã„ã¾ã›ã‚“"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"ãŠã£ã¨ã€ã‚µã‚¤ã‚ºãŒãƒžãƒƒãƒã—ã¾ã›ã‚“。apt@packages.debian.org ã«ãƒ¡ãƒ¼ãƒ«ã—ã¦ãã ã•ã„"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "%2$sB 中 %1$sB ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã‚’å–å¾—ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "%sB ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã‚’å–å¾—ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "ã“ã®æ“作後ã«è¿½åŠ ã§ %sB ã®ãƒ‡ã‚£ã‚¹ã‚¯å®¹é‡ãŒæ¶ˆè²»ã•ã‚Œã¾ã™ã€‚\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "ã“ã®æ“作後㫠%sB ã®ãƒ‡ã‚£ã‚¹ã‚¯å®¹é‡ãŒè§£æ”¾ã•ã‚Œã¾ã™ã€‚\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "Trivial Only ãŒæŒ‡å®šã•ã‚Œã¾ã—ãŸãŒã€ã“ã‚Œã¯ç°¡å˜ãªæ“作ã§ã¯ã‚ã‚Šã¾ã›ã‚“。"
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Yes, do as I say!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"é‡å¤§ãªå•é¡Œã‚’引ãèµ·ã“ã™å¯èƒ½æ€§ã®ã‚ã‚‹ã“ã¨ã‚’ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚\n"
+"続行ã™ã‚‹ã«ã¯ã€'%s' ã¨ã„ã†ãƒ•ãƒ¬ãƒ¼ã‚ºã‚’タイプã—ã¦ãã ã•ã„。\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "中断ã—ã¾ã—ãŸã€‚"
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "続行ã—ã¾ã™ã‹?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "ã„ãã¤ã‹ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®å–å¾—ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "ダウンロードオンリーモードã§ãƒ‘ッケージã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãŒå®Œäº†ã—ã¾ã—ãŸ"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing ã¨ãƒ¡ãƒ‡ã‚£ã‚¢äº¤æ›ã¯ç¾åœ¨åŒæ™‚ã«ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "足りãªã„パッケージを直ã™ã“ã¨ãŒã§ãã¾ã›ã‚“。"
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "インストールを中断ã—ã¾ã™ã€‚"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"以下ã®ãƒ‘ッケージã¯ã€å…¨ãƒ•ã‚¡ã‚¤ãƒ«ãŒåˆ¥ã®ãƒ‘ッケージã§ä¸Šæ›¸ãã•ã‚ŒãŸãŸã‚ã€\n"
+"システムã‹ã‚‰æ¶ˆãˆã¾ã—ãŸ:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "注æ„: ã“れ㯠dpkg ã«ã‚ˆã‚Šè‡ªå‹•ã§ã‚ã–ã¨è¡Œã‚れれã¾ã™ã€‚"
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+"一連ã®ã‚‚ã®ã‚’削除ã™ã‚‹ã‚ˆã†ã«ãªã£ã¦ã„ãªã„ã®ã§ã€AutoRemover を開始ã§ãã¾ã›ã‚“"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"AutoRemover ãŒã€æœ¬æ¥èµ·ãã‚‹ã¹ãã§ãªã„何ã‹ã‚’壊ã—ãŸã‚ˆã†ã§ã™ã€‚\n"
+"apt ã«ãƒã‚°å ±å‘Šã‚’é€ã£ã¦ãã ã•ã„。"
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "内部エラーã€AutoRemover ãŒä½•ã‹ã‚’破壊ã—ã¾ã—ãŸ"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"以下ã®ãƒ‘ッケージãŒè‡ªå‹•ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¾ã—ãŸãŒã€ã‚‚ã†å¿…è¦ã¨ã•ã‚Œã¦ã„ã¾ã›ã‚“:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] ""
+"%lu ã¤ã®ãƒ‘ッケージãŒè‡ªå‹•ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¾ã—ãŸãŒã€ã‚‚ã†å¿…è¦ã¨ã•ã‚Œã¦ã„ã¾ã›"
+"ã‚“:\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "ã“れを削除ã™ã‚‹ã«ã¯ '%s' を利用ã—ã¦ãã ã•ã„。"
+
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "以下ã®è¿½åŠ ãƒ‘ッケージãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¾ã™:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "æ案パッケージ:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "推奨パッケージ:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+"%s ã¯ã™ã§ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã§ upgrade ãŒã‚»ãƒƒãƒˆã•ã‚Œã¦ã„ãªã„ãŸã‚ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«"
+"をスキップã—ã¾ã™ã€‚\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"%s ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ãŠã‚‰ãšã€ã‚¢ãƒƒãƒ—グレードã ã‘ã®è¦æ±‚ãªã®ã§ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«"
+"をスキップã—ã¾ã™ã€‚\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "%s ã¯ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã§ããªã„ãŸã‚ã€å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¯ä¸å¯èƒ½ã§ã™ã€‚\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s ã¯ã™ã§ã«æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ (%s) ã§ã™ã€‚\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s ã¯æ‰‹å‹•ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸã¨è¨­å®šã•ã‚Œã¾ã—ãŸã€‚\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "'%3$s' ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ '%1$s' (%2$s) ã‚’é¸æŠžã—ã¾ã—ãŸ\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "'%4$s' ã®ãŸã‚ã« '%3$s' ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ '%1$s' (%2$s) ã‚’é¸æŠžã—ã¾ã—ãŸ\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr "一覧表示"
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+"追加ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒ %i 件ã‚ã‚Šã¾ã™ã€‚表示ã™ã‚‹ã«ã¯ '-a' スイッãƒã‚’付ã‘ã¦ãã ã•ã„。"
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"注æ„: ã“ã‚Œã¯ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã«ã™ãŽã¾ã›ã‚“!\n"
+" %s ã¯å®Ÿéš›ã®å®Ÿè¡Œã« root 権é™ã‚’å¿…è¦ã¨ã—ã¾ã™ã€‚\n"
+" ロックãŒéžã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã§ã‚ã‚‹ã“ã¨ã‹ã‚‰ã€ä»Šã“ã®æ™‚点ã®çŠ¶æ…‹ã«å¦¥å½“性ãŒ\n"
+" ã‚ã‚‹ã¨ã¯è¨€ã„切れãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr "ä¸æ˜Ž"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr "[インストール済ã¿ã€%s ã«ã‚¢ãƒƒãƒ—グレードå¯]"
+
+#: apt-private/private-output.cc
+msgid "[installed,local]"
+msgstr "[インストール済ã¿ã€ãƒ­ãƒ¼ã‚«ãƒ«]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr "[インストール済ã¿ã€è‡ªå‹•å‰Šé™¤å¯]"
+
+#: apt-private/private-output.cc
+msgid "[installed,automatic]"
+msgstr "[インストール済ã¿ã€è‡ªå‹•]"
+
+#: apt-private/private-output.cc
+msgid "[installed]"
+msgstr "[インストール済ã¿]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr "[%s ã‹ã‚‰ã‚¢ãƒƒãƒ—グレードå¯]"
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr "[設定ãŒæ®‹å­˜]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "ã—ã‹ã—ã€%s ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã™"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "ã—ã‹ã—ã€%s ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã‚ˆã†ã¨ã—ã¦ã„ã¾ã™"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "ã—ã‹ã—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "ã—ã‹ã—ã€ã“ã‚Œã¯ä»®æƒ³ãƒ‘ッケージã§ã™"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "ã—ã‹ã—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã‚ˆã†ã¨ã—ã¦ã„ã¾ã›ã‚“"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "ã—ã‹ã—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " ã¾ãŸã¯"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "以下ã®ãƒ‘ッケージã«ã¯æº€ãŸã›ãªã„ä¾å­˜é–¢ä¿‚ãŒã‚ã‚Šã¾ã™:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "以下ã®ãƒ‘ッケージãŒæ–°ãŸã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¾ã™:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "以下ã®ãƒ‘ッケージã¯ã€Œå‰Šé™¤ã€ã•ã‚Œã¾ã™:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "以下ã®ãƒ‘ッケージã¯ä¿ç•™ã•ã‚Œã¾ã™:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "以下ã®ãƒ‘ッケージã¯ã‚¢ãƒƒãƒ—グレードã•ã‚Œã¾ã™:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "以下ã®ãƒ‘ッケージã¯ã€Œãƒ€ã‚¦ãƒ³ã‚°ãƒ¬ãƒ¼ãƒ‰ã€ã•ã‚Œã¾ã™:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "以下ã®å¤‰æ›´ç¦æ­¢ãƒ‘ッケージã¯å¤‰æ›´ã•ã‚Œã¾ã™:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (%s ã®ãŸã‚)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"警告: 以下ã®ä¸å¯æ¬ ãƒ‘ッケージãŒå‰Šé™¤ã•ã‚Œã¾ã™ã€‚\n"
+"何をã—よã†ã¨ã—ã¦ã„ã‚‹ã‹æœ¬å½“ã«ã‚ã‹ã£ã¦ã„ãªã„å ´åˆã¯ã€å®Ÿè¡Œã—ã¦ã¯ã„ã‘ã¾ã›ã‚“!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "アップグレード: %lu 個ã€æ–°è¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«: %lu 個ã€"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«: %lu 個ã€"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "ダウングレード: %lu 個ã€"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "削除: %lu 個ã€ä¿ç•™: %lu 個。\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu 個ã®ãƒ‘ッケージãŒå®Œå…¨ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¾ãŸã¯å‰Šé™¤ã•ã‚Œã¦ã„ã¾ã›ã‚“。\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[Y/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[y/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "Y"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "検索パターンã¯ã¡ã‚‡ã†ã© 1 ã¤ã ã‘指定ã—ã¦ãã ã•ã„"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr "全文検索"
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Package ファイル %s ãŒåŒæœŸã—ã¦ã„ã¾ã›ã‚“。"
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+"追加レコード㌠%i 件ã‚ã‚Šã¾ã™ã€‚表示ã™ã‚‹ã«ã¯ '-a' スイッãƒã‚’付ã‘ã¦ãã ã•ã„。"
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr "実際ã®ãƒ‘ッケージã§ã¯ã‚ã‚Šã¾ã›ã‚“ (仮想)"
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "パッケージファイル:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "キャッシュãŒåŒæœŸã—ã¦ãŠã‚‰ãšã€ãƒ‘ッケージファイルを相互å‚ç…§ã§ãã¾ã›ã‚“"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Pin ã•ã‚ŒãŸãƒ‘ッケージ:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr "%s -> %s 優先度 %d\n"
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " インストールã•ã‚Œã¦ã„ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " 候補: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(ãªã—)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ†ãƒ¼ãƒ–ル:"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "アーキテクãƒãƒ£ '%s' 用ã®ãƒ‘ッケージã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "パッケージ '%s' ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ '%s' ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "リリース '%2$s' ã«ã¯ãƒ‘ッケージ '%1$s' ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "'%2$s' ã®ä»£ã‚ã‚Šã« '%1$s' をソースパッケージã¨ã—ã¦é¸å‡ºã—ã¦ã„ã¾ã™\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "パッケージ '%2$s' ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ '%1$s' ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr ""
+"ソースをå–å¾—ã™ã‚‹ã«ã¯å°‘ãªãã¨ã‚‚ 1 ã¤ã®ãƒ‘ッケージåを指定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "%s ã®ã‚½ãƒ¼ã‚¹ãƒ‘ッケージãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"注æ„: '%s' パッケージã¯ä»¥ä¸‹ã®å ´æ‰€ã® '%s' ãƒãƒ¼ã‚¸ãƒ§ãƒ³åˆ¶å¾¡ã‚·ã‚¹ãƒ†ãƒ ã§ä¿å®ˆã•ã‚Œã¦ã„"
+"ã¾ã™:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"パッケージã®æœ€æ–°ã® (ã¾ã ãƒªãƒªãƒ¼ã‚¹ã•ã‚Œã¦ã„ãªã„ã‹ã‚‚ã—ã‚Œãªã„) æ›´æ–°ã‚’å–å¾—ã™ã‚‹ã«"
+"ã¯ã€\n"
+"%s\n"
+"を使用ã—ã¦ãã ã•ã„。\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "ã™ã§ã«ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ« '%s' をスキップã—ã¾ã™\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "%2$sB 中 %1$sB ã®ã‚½ãƒ¼ã‚¹ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã‚’å–å¾—ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "%sB ã®ã‚½ãƒ¼ã‚¹ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã‚’å–å¾—ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "ソース %s ã‚’å–å¾—\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "ã„ãã¤ã‹ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã®å–å¾—ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "ã™ã§ã« %s ã«å±•é–‹ã•ã‚ŒãŸã‚½ãƒ¼ã‚¹ãŒã‚ã‚‹ãŸã‚ã€å±•é–‹ã‚’スキップã—ã¾ã™\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "展開コマンド '%s' ãŒå¤±æ•—ã—ã¾ã—ãŸã€‚\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr ""
+"'dpkg-dev' パッケージãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "ビルドコマンド '%s' ãŒå¤±æ•—ã—ã¾ã—ãŸã€‚\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "%s ã®ãƒ“ルドä¾å­˜æƒ…報をå–å¾—ã§ãã¾ã›ã‚“"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s ã«ã¯ãƒ“ルドä¾å­˜æƒ…å ±ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"ビルドä¾å­˜é–¢ä¿‚ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ãƒ‘ッケージを少ãªãã¨ã‚‚ 1 ã¤æŒ‡å®šã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"%s ã«åˆ©ç”¨å¯èƒ½ãªã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£æƒ…å ±ãŒã‚ã‚Šã¾ã›ã‚“。セットアップã®ãŸã‚ã« apt."
+"conf(5) ã® APT::Architectures ã‚’å‚ç…§ã—ã¦ãã ã•ã„。"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr "注æ„ã€ãƒ“ルドã®ä¾å­˜é–¢ä¿‚ã‚’å–å¾—ã™ã‚‹ãŸã‚ディレクトリ '%s' を使用ã—ã¾ã™\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "注æ„ã€ãƒ“ルドã®ä¾å­˜é–¢ä¿‚ã‚’å–å¾—ã™ã‚‹ãŸã‚ファイル '%s' を使用ã—ã¾ã™\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "ビルドä¾å­˜é–¢ä¿‚ã®å‡¦ç†ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "%s ã®è§£æžã«å¤±æ•—ã—ã¾ã—ãŸã€‚å†ç·¨é›†ã—ã¾ã™ã‹? "
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+"'%s' ファイルãŒå¤‰æ›´ã•ã‚Œã¦ã„ã¾ã™ã€‚「apt-get updateã€ã‚’実行ã—ã¦ãã ã•ã„。"
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "パッケージ %s ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s ã«ã¯è§£æ±ºä¸å¯èƒ½ãªä¾å­˜é–¢ä¿‚ãŒã‚ã‚Šã¾ã™:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "update コマンドã¯å¼•æ•°ã‚’ã¨ã‚Šã¾ã›ã‚“"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+"アップグレードã§ãるパッケージ㌠%i 個ã‚ã‚Šã¾ã™ã€‚表示ã™ã‚‹ã«ã¯ 'apt list --"
+"upgradable' を実行ã—ã¦ãã ã•ã„。\n"
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr "パッケージã¯ã™ã¹ã¦æœ€æ–°ã§ã™ã€‚"
+
+#: cmdline/apt-cache.cc
+msgid "apt-cache stats does not take any arguments"
+msgstr "apt-cache stats ã¯å¼•æ•°ã‚’ã¨ã‚Šã¾ã›ã‚“"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "パッケージåç·æ•°: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "パッケージ構造ç·æ•°: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " 通常パッケージ: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " 純粋仮想パッケージ: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " å˜ä¸€ä»®æƒ³ãƒ‘ッケージ: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " 複åˆä»®æƒ³ãƒ‘ッケージ: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " 欠è½: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "個別ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç·æ•°: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "個別説明ç·æ•°: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "ä¾å­˜é–¢ä¿‚ç·æ•°: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³/ファイル関係ç·æ•°: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "説明/ファイル関係ç·æ•°: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "æ供マッピングç·æ•°: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Glob 文字列ã®ç·æ•°: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "ç·ç©ºã容é‡: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "ç·å æœ‰å®¹é‡: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+"ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã¯æ™‚代é…ã‚Œã§ã™ã€‚'apt-mark showauto' を代ã‚ã‚Šã«ä½¿ç”¨ã—ã¦ãã ã•ã„。"
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+"使用方法: apt-cache [オプション] コマンド\n"
+" apt-cache [オプション] show パッケージå1 [パッケージå2 ...]\n"
+"\n"
+"apt-cache ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã¨ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«å¯èƒ½ãªãƒ‘ッケージã®æƒ…報を\n"
+"å•ã„åˆã‚ã›ã¦è¡¨ç¤ºã—ã¾ã™ã€‚例ãˆã° apt-get ã®ã€Œæ›´æ–°ã€ã‚³ãƒžãƒ³ãƒ‰ã«ã‚ˆã£ã¦\n"
+"ローカルキャッシュã«å–å¾—ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ã¨æŽ’ä»–çš„ã«å‹•ä½œã—ã¾ã™ã€‚ã—ãŸãŒã£ã¦ã€\n"
+"最後ã®æ›´æ–°ãŒå¤ã™ãŽã‚‹å ´åˆã«ã¯ã€è¡¨ç¤ºã•ã‚Œã‚‹æƒ…å ±ã¯æ™‚代é…ã‚Œã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。\n"
+"ã—ã‹ã—ã€å¼•ãæ›ãˆã«ã€apt-cache ã¯è¨­å®šã•ã‚ŒãŸã‚½ãƒ¼ã‚¹ã®å¯ç”¨æ€§ã¨ã¯ç‹¬ç«‹ã—ã¦\n"
+"動作ã—ã¾ã™ (例ãˆã°ã‚ªãƒ•ãƒ©ã‚¤ãƒ³)。\n"
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "ソースレコードを表示ã™ã‚‹"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "æ­£è¦è¡¨ç¾ãƒ‘ターンã«ã‚ˆã£ã¦ãƒ‘ッケージ一覧を検索ã™ã‚‹"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "パッケージã®ç”Ÿã®ä¾å­˜æƒ…報を表示ã™ã‚‹"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "パッケージã®ç”Ÿã®é€†ä¾å­˜æƒ…報を表示ã™ã‚‹"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "パッケージã®æƒ…報を表示ã™ã‚‹"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "システム内ã®ã™ã¹ã¦ã®ãƒ‘ッケージå一覧を表示ã™ã‚‹"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "ãƒãƒªã‚·ãƒ¼è¨­å®šæƒ…報を表示ã™ã‚‹"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "ã“ã®ãƒ‡ã‚£ã‚¹ã‚¯ã«ã€'Debian 5.0.3 Disk 1' ã®ã‚ˆã†ãªåå‰ã‚’付ã‘ã¦ãã ã•ã„"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "ディスクをドライブã«å…¥ã‚Œã¦ [Enter] キーを押ã—ã¦ãã ã•ã„"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "'%s' ã‚’ '%s' ã«ãƒžã‚¦ãƒ³ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+"CD-ROM ãŒè‡ªå‹•æ¤œå‡ºã•ã‚Œãªã‹ã£ãŸã‹ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§åˆ©ç”¨ã™ã‚‹ãƒžã‚¦ãƒ³ãƒˆãƒã‚¤ãƒ³ãƒˆã«è¦‹å½“ãŸ"
+"ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚\n"
+"CD-ROM ã®ãƒžã‚¦ãƒ³ãƒˆãƒã‚¤ãƒ³ãƒˆã‚’設定ã™ã‚‹ãŸã‚ã« --cdrom オプションを試ã™ã“ã¨ãŒã§ã"
+"ã¾ã™ã€‚\n"
+"CD-ROM ã®è‡ªå‹•æ¤œå‡ºãŠã‚ˆã³ãƒžã‚¦ãƒ³ãƒˆãƒã‚¤ãƒ³ãƒˆã®è©³ç´°ã«ã¤ã„ã¦ã¯ã€'man apt-cdrom' ã‚’å‚"
+"ç…§ã—ã¦ãã ã•ã„。"
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr ""
+"ã‚ãªãŸã®æŒã£ã¦ã„ã‚‹ CD セットã®æ®‹ã‚Šå…¨éƒ¨ã«ã€ã“ã®æ‰‹é †ã‚’ç¹°ã‚Šè¿”ã—ã¦ãã ã•ã„。"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+"使用方法: apt-cdrom [オプション] コマンド\n"
+"\n"
+"apt-cdrom ã¯ã€CD-ROMã€USB フラッシュドライブやãã®ä»–ã®ãƒªãƒ ãƒ¼ãƒãƒ–ル\n"
+"メディアを APT ã®ãƒ‘ッケージソースã«è¿½åŠ ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚\n"
+"マウントãƒã‚¤ãƒ³ãƒˆã¨ãƒ‡ãƒã‚¤ã‚¹æƒ…å ±ã¯ã€apt.conf(5)ã€udev(7) 㨠fstab(5)\n"
+"ã‹ã‚‰å–å¾—ã•ã‚Œã¾ã™ã€‚\n"
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "引数ãŒãƒšã‚¢ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#: cmdline/apt-config.cc
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"使用方法: apt-config [オプション] コマンド\n"
+"\n"
+"apt-config ã¯ã™ã¹ã¦ã® APT ツールã§ä½¿ç”¨ã•ã‚Œã‚‹è¨­å®šã¸ã®ã‚¤ãƒ³ã‚¿ãƒ¼\n"
+"フェースã§ã€ä¸»ã«ãƒ‡ãƒãƒƒã‚°ã¨ã‚·ã‚§ãƒ«ã‚¹ã‚¯ãƒªãƒ—トå‘ã‘ã§ã™ã€‚\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr "シェルã®è©•ä¾¡ã‚’経由ã—ã¦è¨­å®šå€¤ã‚’å–å¾—"
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr "アクティブãªè¨­å®šã‚’表示"
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+"使用方法: apt-dump-solver\n"
+"\n"
+"apt-dump-solver 㯠EDSP シナリオをファイルã«æ®‹ã—ã€\n"
+"オプションã§åˆ¥ã®ã‚½ãƒ«ãƒã«è»¢é€ã™ã‚‹ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã§ã™ã€‚\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"使用方法: apt-extracttemplates ファイルå1 [ファイルå2 ...]\n"
+"\n"
+"apt-extracttemplates 㯠debian パッケージã‹ã‚‰è¨­å®šã¨ãƒ†ãƒ³ãƒ—レートファイルを\n"
+"抽出ã™ã‚‹ãŸã‚ã®ãƒ„ールã§ã™ã€‚パッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã®å‰ã«è¨­å®šã«é–¢ã™ã‚‹è³ªå•ã‚’\n"
+"è¦æ±‚ã™ã‚‹ debconf(1) ã«ã‚ˆã£ã¦ä¸»ã«ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr ""
+"debconf ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’å–å¾—ã§ãã¾ã›ã‚“。debconf ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã™ã‹?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "パッケージ %s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s ã¯è‡ªå‹•ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸã¨è¨­å®šã•ã‚Œã¾ã—ãŸã€‚\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã¯æ™‚代é…ã‚Œã§ã™ã€‚'apt-mark auto' ãŠã‚ˆã³ 'apt-mark manual' を代ã‚ã‚Š"
+"ã«ä½¿ç”¨ã—ã¦ãã ã•ã„。"
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "内部エラーã€å•é¡Œãƒªã‚¾ãƒ«ãƒãŒä½•ã‹ã‚’破壊ã—ã¾ã—ãŸ"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„るモジュール:"
+
+#: cmdline/apt-get.cc
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"使用法: apt-get [オプション] コマンド\n"
+" apt-get [オプション] install|remove パッケージå1 [パッケージå"
+"2 ...]\n"
+" apt-get [オプション] source パッケージå1 [パッケージå2 ...]\n"
+"\n"
+"apt-get ã¯ã€èªè¨¼ã•ã‚ŒãŸã‚½ãƒ¼ã‚¹ã‹ã‚‰ã®ãƒ‘ッケージã¨æƒ…å ±ã®æ¤œç´¢ã€\n"
+"ãŠã‚ˆã³ä¾å­˜é–¢ä¿‚ã‚’ä¼´ã†ãƒ‘ッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã€ã‚¢ãƒƒãƒ—グレードã€\n"
+"削除ã®ãŸã‚ã®ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã§ã™ã€‚\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "æ–°ã—ã„パッケージリストをå–å¾—ã™ã‚‹"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "アップグレードを行ã†"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr ""
+"æ–°è¦ãƒ‘ッケージをインストールã™ã‚‹ (pkg 㯠libc6.deb ã§ã¯ãªã libc6 ã®ã‚ˆã†ã«æŒ‡"
+"定ã™ã‚‹)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "パッケージを削除ã™ã‚‹"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "設定ファイルã¾ã§å«ã‚ã¦ãƒ‘ッケージを削除ã™ã‚‹"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "自動インストールã•ã‚Œä½¿ã‚ã‚Œã¦ã„ãªã„ã™ã¹ã¦ã®ãƒ‘ッケージを削除ã™ã‚‹"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "ディストリビューションをアップグレードã™ã‚‹ (apt-get(8) ã‚’å‚ç…§)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "dselect ã®é¸æŠžã«å¾“ã†"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "ソースパッケージã®æ§‹ç¯‰ä¾å­˜é–¢ä¿‚を設定ã™ã‚‹"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "ダウンロードã—ãŸã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ファイルを削除ã™ã‚‹"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "ダウンロードã—ãŸå¤ã„アーカイブファイルを削除ã™ã‚‹"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "壊れãŸä¾å­˜é–¢ä¿‚ãŒãªã„ã‹ãƒã‚§ãƒƒã‚¯ã™ã‚‹"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "ソースアーカイブをダウンロードã™ã‚‹"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "ãƒã‚¤ãƒŠãƒªãƒ‘ッケージをカレントディレクトリã«ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã™ã‚‹"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "指定ã®ãƒ‘ッケージã®å¤‰æ›´å±¥æ­´ã‚’ダウンロードã—ã¦è¡¨ç¤ºã™ã‚‹"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr "引数ã¨ã—㦠URL ㌠1 ã¤å¿…è¦ã§ã™"
+
+#: cmdline/apt-helper.cc
+msgid "Must specify at least one pair url/filename"
+msgstr "å°‘ãªãã¨ã‚‚ URL / ファイルåã‚’ 1 組指定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr "ダウンロード失敗"
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr "GetSrvRec 㯠%s ã®ãŸã‚失敗ã—ã¾ã—ãŸ"
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+"使用法: apt-helper [オプション] コマンド\n"
+" apt-helper [オプション] cat-file ファイル ...\n"
+" apt-helper [オプション] download-file uri 目標パス\n"
+"\n"
+"apt-helper ã¯ã‚·ã‚§ãƒ«ã‚¹ã‚¯ãƒªãƒ—トãŒä½¿ç”¨ã™ã‚‹ã•ã¾ã–ã¾ãªã‚³ãƒžãƒ³ãƒ‰ã‚’ãƒãƒ³ãƒ‰ãƒ«\n"
+"ã—ã¦ã„ã¾ã™ã€‚例ãˆã°ã€åŒã˜ãƒ—ロキシ設定や APT ã¨åŒæ§˜ã®ã‚·ã‚¹ãƒ†ãƒ å–得。\n"
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr "指定ã—㟠uri を目標パスã«ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã™ã‚‹"
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr "SRV レコードを検索 (例ãˆã° _http._tcp.ftp.debian.org)"
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr "自動解å‡ã¨ãƒ•ã‚¡ã‚¤ãƒ«çµåˆ"
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr "apt.conf を使ã£ã¦ãƒ—ロキシを検出ã™ã‚‹"
+
+#: cmdline/apt-internal-planner.cc
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"使用方法: apt-internal-solver\n"
+"\n"
+"apt-internal-planner ã¯ã€ãƒ‡ãƒãƒƒã‚°ãªã©ã®ç”¨é€”ã§ã€ç¾åœ¨ã®å†…部プランナーを\n"
+"APT ファミリã®å¤–部プランナーã®ã‚ˆã†ã«ä½¿ã†ãŸã‚ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã§ã™ã€‚\n"
+
+#: cmdline/apt-internal-solver.cc
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"使用方法: apt-internal-solver\n"
+"\n"
+"apt-internal-solver ã¯ã€ãƒ‡ãƒãƒƒã‚°ãªã©ã®ç”¨é€”ã§ã€ç¾åœ¨ã®å†…部リゾルãƒã‚’\n"
+"APT ファミリã®å¤–部リゾルãƒã®ã‚ˆã†ã«ä½¿ã†ãŸã‚ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã§ã™ã€‚\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "%s をインストールã•ã‚Œã¦ã„ãªã„ã‚‚ã®ã¨ã—ã¦ãƒžãƒ¼ã‚¯ã§ãã¾ã›ã‚“\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s ã¯æ‰‹å‹•ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸã¨ã™ã§ã«è¨­å®šã•ã‚Œã¦ã„ã¾ã™ã€‚\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s ã¯è‡ªå‹•ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸã¨ã™ã§ã«è¨­å®šã•ã‚Œã¦ã„ã¾ã™ã€‚\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s ã¯ã™ã§ã«ä¿ç•™ã«è¨­å®šã•ã‚Œã¦ã„ã¾ã™ã€‚\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s ã¯ã™ã§ã«ä¿ç•™ã•ã‚Œã¦ã„ã¾ã›ã‚“。\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "dpkg ã®å®Ÿè¡Œã«å¤±æ•—ã—ã¾ã—ãŸã€‚root 権é™ã§å®Ÿè¡Œã—ã¦ã„ã¾ã™ã‹?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "%s ã¯ä¿ç•™ã«è¨­å®šã•ã‚Œã¾ã—ãŸã€‚\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "%s ã®ä¿ç•™ã‚’解除ã—ã¾ã—ãŸã€‚\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr "%s ã¯å®Œå…¨å‰Šé™¤ã§é¸æŠžã•ã‚Œã¾ã—ãŸã€‚\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr "%s ã¯å‰Šé™¤ã§é¸æŠžã•ã‚Œã¾ã—ãŸã€‚\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr "%s ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã§é¸æŠžã•ã‚Œã¾ã—ãŸã€‚\n"
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"Usage: apt-mark [オプション] {auto|manual} パッケージ1 [パッケージ2 ...]\n"
+"\n"
+"apt-mark ã¯ã€ãƒ‘ッケージを手動ã¾ãŸã¯è‡ªå‹•ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚ŒãŸã‚‚ã®ã¨ã—ã¦\n"
+"マークã™ã‚‹ç°¡å˜ãªã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã§ã™ã€‚ã¾ãŸã€dpkg(1) ã®\n"
+"パッケージé¸æŠžçŠ¶æ…‹ã‚’æ“作ã—ãŸã‚Šã€ãƒžãƒ¼ã‚¯ã‚’特定ã›ãšã«ã™ã¹ã¦ã®ãƒ‘ッケージã®\n"
+"一覧表示ã—ãŸã‚Šã‚‚ã§ãã¾ã™ã€‚\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "指定ã®ãƒ‘ッケージを自動ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚ŒãŸã‚‚ã®ã¨ã—ã¦ãƒžãƒ¼ã‚¯ã™ã‚‹"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "指定ã®ãƒ‘ッケージを手動ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸã‚‚ã®ã¨ã—ã¦ãƒžãƒ¼ã‚¯ã™ã‚‹"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr "パッケージをä¿ç•™ã¨ã—ã¦ãƒžãƒ¼ã‚¯ã™ã‚‹"
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr "パッケージã®ä¿ç•™ã‚’解除ã™ã‚‹"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr "自動的ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚ŒãŸãƒ‘ッケージã®ä¸€è¦§ã‚’表示ã™ã‚‹"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr "手作業ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸãƒ‘ッケージã®ä¸€è¦§ã‚’表示ã™ã‚‹"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr "ä¿ç•™ã•ã‚Œã¦ã„るパッケージã®ä¸€è¦§ã‚’表示ã™ã‚‹"
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "ä¸æ˜Žãªãƒ‘ッケージレコードã§ã™!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+"使用方法: apt-sortpkgs [オプション] ファイルå1 [ファイルå2 ...]\n"
+"\n"
+"apt-sortpkgs ã¯ã€ãƒ‘ッケージ情報ファイルをソートã™ã‚‹ã‚·ãƒ³ãƒ—ルãªãƒ„ールã§ã™ã€‚\n"
+"デフォルトã§ã¯ãƒã‚¤ãƒŠãƒªãƒ‘ッケージ情報ã§ã‚½ãƒ¼ãƒˆã—ã¾ã™ãŒã€-s オプションを使ã£ã¦\n"
+"ソースパッケージã®é †åºã«åˆ‡ã‚Šæ›¿ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚\n"
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+"使用方法: apt [オプション] コマンド\n"
+"\n"
+"apt ã¯ã€æ¤œç´¢ã‚„管ç†ã€ãƒ‘ッケージã«é–¢ã™ã‚‹æƒ…報をå•ã„åˆã‚ã›ã‚‹ã‚³ãƒžãƒ³ãƒ‰ã‚’\n"
+"æä¾›ã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ãƒ‘ッケージマãƒãƒ¼ã‚¸ãƒ£ã§ã™ã€‚apt-get ã‚„ apt-cache\n"
+"ã®ã‚ˆã†ãªç‰¹åŒ–ã—㟠APT ツールã¨åŒã˜æ©Ÿèƒ½ã‚’æä¾›ã—ã¾ã™ãŒã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§\n"
+"対話的ã«ä½¿ç”¨ã™ã‚‹ãŸã‚ã«é©åˆ‡ãªã‚ªãƒ—ションを有効ã«ã—ã¾ã™ã€‚\n"
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr "パッケージåを基ã«ãƒ‘ッケージã®ä¸€è¦§ã‚’表示"
+
+#: cmdline/apt.cc
+msgid "search in package descriptions"
+msgstr "パッケージã®èª¬æ˜Žã‚’検索"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr "パッケージã®è©³ç´°ã‚’表示"
+
+#. package stuff
+#: cmdline/apt.cc
+msgid "install packages"
+msgstr "パッケージをインストール"
+
+#: cmdline/apt.cc
+msgid "remove packages"
+msgstr "パッケージを削除"
+
+#. system wide stuff
+#: cmdline/apt.cc
+msgid "update list of available packages"
+msgstr "利用å¯èƒ½ãƒ‘ッケージã®ä¸€è¦§ã‚’æ›´æ–°"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr "パッケージをインストール/æ›´æ–°ã—ã¦ã‚·ã‚¹ãƒ†ãƒ ã‚’アップグレード"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr "パッケージを削除/インストール/æ›´æ–°ã—ã¦ã‚·ã‚¹ãƒ†ãƒ ã‚’アップグレード"
+
+#. misc
+#: cmdline/apt.cc
+msgid "edit the source information file"
+msgstr "ソース情報ファイルを編集"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "ä¸æ­£ãªãƒ‡ãƒ•ã‚©ãƒ«ãƒˆè¨­å®šã§ã™!"
+
+#: dselect/install dselect/update
+msgid "Press [Enter] to continue."
+msgstr "[Enter] キーを押ã™ã¨ç¶šè¡Œã—ã¾ã™ã€‚"
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "éŽåŽ»ã«ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—㟠.deb ファイルを削除ã—ã¾ã™ã‹?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "展開中ã«ä½•ã‚‰ã‹ã®ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚インストールã•ã‚ŒãŸãƒ‘ッケージを"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "設定ã—ã¾ã™ã€‚ã“ã‚Œã«ã‚ˆã‚Šã€ã‚¨ãƒ©ãƒ¼ãŒè¤‡æ•°å‡ºã‚‹ã‹ã€ä¾å­˜é–¢ä¿‚ã®æ¬ å¦‚ã«"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "よるエラーãŒå‡ºã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。ã“ã‚Œã«ã¯å•é¡Œã¯ãªãã€ä¸Šè¨˜ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr "ãŒé‡è¦ã§ã™ã€‚ã“れを修正ã—ã¦ã€Œå°Žå…¥ã€ã‚’å†åº¦å®Ÿè¡Œã—ã¦ãã ã•ã„"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "入手å¯èƒ½æƒ…報をマージã—ã¦ã„ã¾ã™"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "パッケージ拡張å­ãƒªã‚¹ãƒˆãŒé•·ã™ãŽã¾ã™"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "ディレクトリ %s ã®å‡¦ç†ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "ソース拡張å­ãƒªã‚¹ãƒˆãŒé•·ã™ãŽã¾ã™"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Contents ファイルã¸ã®ãƒ˜ãƒƒãƒ€ã®æ›¸ãè¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Contents %s ã®å‡¦ç†ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"使用方法: apt-ftparchive [オプション] コマンド\n"
+"コマンド: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive 㯠Debian アーカイブ用ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’生æˆã—ã¾\n"
+"ã™ã€‚全自動ã®ã‚‚ã®ã‹ã‚‰ã€dpkg-scanpackages 㨠dpkg-scansources ã®ä»£æ›¿æ©Ÿèƒ½\n"
+"ã¨ãªã‚‹ã‚‚ã®ã¾ã§ã€å¤šãã®ç”Ÿæˆæ–¹æ³•ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚\n"
+"\n"
+"apt-ftparchive 㯠.deb ã®ãƒ„リーã‹ã‚‰ Packages ファイルを生æˆã—ã¾ã™ã€‚\n"
+"Packages ファイル㯠MD5 ãƒãƒƒã‚·ãƒ¥ã‚„ファイルサイズã«åŠ ãˆã¦ã€å„パッケージ\n"
+"ã®ã™ã¹ã¦ã®åˆ¶å¾¡ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®å†…容をå«ã‚“ã§ã„ã¾ã™ã€‚Priority 㨠Section ã®å€¤\n"
+"を強制ã™ã‚‹ãŸã‚ã« override ファイルãŒã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã™ã€‚\n"
+"\n"
+"åŒæ§˜ã« apt-ftparchive 㯠.dsc ã®ãƒ„リーã‹ã‚‰ Sources ファイルを生æˆã—ã¾\n"
+"ã™ã€‚--source-override オプションを使用ã™ã‚‹ã¨ã‚½ãƒ¼ã‚¹ override ファイルを\n"
+"指定ã§ãã¾ã™ã€‚\n"
+"\n"
+"'packages' ãŠã‚ˆã³ 'sources' コマンドã¯ãƒ„リーã®ãƒ«ãƒ¼ãƒˆã§å®Ÿè¡Œã™ã‚‹å¿…è¦ãŒã‚\n"
+"ã‚Šã¾ã™ã€‚BinaryPath ã«ã¯å†å¸°æ¤œç´¢ã®ãƒ™ãƒ¼ã‚¹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’指定ã—ã€override \n"
+"ファイル㯠override フラグをå«ã‚“ã§ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ã‚‚ã— pathprefix \n"
+"ãŒå­˜åœ¨ã™ã‚Œã°ãƒ•ã‚¡ã‚¤ãƒ«åフィールドã«ä»˜åŠ ã•ã‚Œã¾ã™ã€‚debian アーカイブã§ã®\n"
+"使用方法ã®ä¾‹:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"オプション:\n"
+" -h ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã™ã‚‹\n"
+" --md5 MD5 ã®ç”Ÿæˆã‚’制御ã™ã‚‹\n"
+" -s=? ソース override ファイル\n"
+" -q 表示を抑制ã™ã‚‹\n"
+" -d=? オプションã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’é¸æŠžã™ã‚‹\n"
+" --no-delink delinking デãƒãƒƒã‚°ãƒ¢ãƒ¼ãƒ‰ã‚’有効ã«ã™ã‚‹\n"
+" --contents contents ファイルã®ç”Ÿæˆã‚’制御ã™ã‚‹\n"
+" -c=? 指定ã®è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’読む\n"
+" -o=? ä»»æ„ã®è¨­å®šã‚ªãƒ—ションを設定ã™ã‚‹"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "é¸æŠžã«ãƒžãƒƒãƒã™ã‚‹ã‚‚ã®ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "パッケージファイルグループ `%s' ã«è¦‹å½“ãŸã‚‰ãªã„ファイルãŒã‚ã‚Šã¾ã™"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "DB ãŒå£Šã‚Œã¦ã„ãŸãŸã‚ã€ãƒ•ã‚¡ã‚¤ãƒ«åã‚’ %s.old ã«å¤‰æ›´ã—ã¾ã—ãŸ"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "DB ãŒå¤ã„ãŸã‚ã€%s ã®ã‚¢ãƒƒãƒ—グレードを試ã¿ã¾ã™"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"DB フォーマットãŒç„¡åŠ¹ã§ã™ã€‚apt ã®å¤ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‹ã‚‰æ›´æ–°ã—ãŸã®ã§ã‚ã‚Œã°ã€ãƒ‡ãƒ¼ã‚¿"
+"ベースを削除ã—ã€å†ä½œæˆã—ã¦ãã ã•ã„。"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "DB ファイル %s ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“: %s"
+
+#: ftparchive/cachedb.cc
+msgid "Failed to read .dsc"
+msgstr ".dsc ã®èª­ã¿å–ã‚Šã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "アーカイブã«ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ãƒ¬ã‚³ãƒ¼ãƒ‰ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "カーソルをå–å¾—ã§ãã¾ã›ã‚“"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - メモリã®å‰²ã‚Šå½“ã¦ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "'%s' ã¯æœªçŸ¥ã®åœ§ç¸®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã§ã™"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "圧縮出力 %s ã«ã¯åœ§ç¸®ã‚»ãƒƒãƒˆãŒå¿…è¦ã§ã™"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "å­ãƒ—ロセスã¸ã® IPC パイプã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "fork ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "圧縮å­ãƒ—ロセス"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "内部エラーã€%s ã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "å­ãƒ—ロセス/ファイルã¸ã® IO ãŒå¤±æ•—ã—ã¾ã—ãŸ"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "MD5 ã®è¨ˆç®—中ã«èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "'%s' をオープンã§ãã¾ã›ã‚“"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "ä¸æ­£ãª override %s %llu 行目 (%s)"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "override ファイル %s を読ã¿è¾¼ã‚€ã®ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "ä¸æ­£ãª override %s %llu 行目 #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "ä¸æ­£ãª override %s %llu 行目 #2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "ä¸æ­£ãª override %s %llu 行目 #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "警告: ディレクトリ %s ãŒèª­ã‚ã¾ã›ã‚“\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "警告: %s ã®çŠ¶æ…‹ã‚’å–å¾—ã§ãã¾ã›ã‚“\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "エラー: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "警告: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "エラー: エラーãŒé©ç”¨ã•ã‚Œã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã¯ "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "%s ã®è§£æ±ºã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "ツリー内ã§ã®ç§»å‹•ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "%s ã®ã‚ªãƒ¼ãƒ—ンã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " リンク %s [%s] を外ã—ã¾ã™\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** %s ã‚’ %s ã«ãƒªãƒ³ã‚¯ã™ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " リンクを外ã™åˆ¶é™ã® %sB ã«åˆ°é”ã—ã¾ã—ãŸã€‚\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "アーカイブã«ãƒ‘ッケージフィールドãŒã‚ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s ã« override エントリãŒã‚ã‚Šã¾ã›ã‚“\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " %1$s メンテナ㯠%3$s ã§ã¯ãªã %2$s ã§ã™\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s ã«ã‚½ãƒ¼ã‚¹ override エントリãŒã‚ã‚Šã¾ã›ã‚“\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s ã«ãƒã‚¤ãƒŠãƒª override エントリãŒã‚ã‚Šã¾ã›ã‚“\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "ヘッダã®å¾…機中ã§ã™"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "HTTP サーãƒãŒä¸æ­£ãªãƒªãƒ—ライヘッダをé€ä¿¡ã—ã¦ãã¾ã—ãŸ"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "ä¸æ­£ãªãƒ˜ãƒƒãƒ€è¡Œã§ã™"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "HTTP サーãƒãŒä¸æ­£ãª Content-Length ヘッダをé€ä¿¡ã—ã¦ãã¾ã—ãŸ"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "HTTP サーãƒãŒä¸æ­£ãª Content-Range ヘッダをé€ä¿¡ã—ã¦ãã¾ã—ãŸ"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "HTTP サーãƒã®ãƒ¬ãƒ³ã‚¸ã‚µãƒãƒ¼ãƒˆãŒå£Šã‚Œã¦ã„ã¾ã™"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "ä¸æ˜Žãªæ—¥ä»˜ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã§ã™"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "ä¸æ­£ãªãƒ˜ãƒƒãƒ€ã§ã™"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "接続失敗"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+"サーãƒ/プロキシã‹ã‚‰ã®ä¸æ­£ãªå¿œç­”ã®ãŸã‚自動的㫠%s を無効ã«ã—ã¾ã—ãŸã€‚(man 5 "
+"apt.conf)"
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "内部エラー"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "CD-ROM データベース %s を読ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"ã“ã® CD-ROM ã‚’ APT ã«èªè­˜ã•ã›ã‚‹ã«ã¯ apt-cdrom を使用ã—ã¦ãã ã•ã„。新ã—ã„ CD-"
+"ROM を追加ã™ã‚‹ãŸã‚ã« apt-get update ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "CD ãŒé•ã„ã¾ã™"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "%s ã® CD-ROM ã¯ä½¿ç”¨ä¸­ã®ãŸã‚アンマウントã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。"
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "ディスクãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr "%s ドメインã¸ã®ç›´æŽ¥ã®æŽ¥ç¶šã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ãƒ–ロックã•ã‚Œã¦ã„ã¾ã™ã€‚"
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "%s (%s) ã¸æŽ¥ç¶šã—ã¦ã„ã¾ã™"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "%s (f=%u t=%u p=%u) ã«å¯¾ã™ã‚‹ã‚½ã‚±ãƒƒãƒˆã‚’作æˆã§ãã¾ã›ã‚“"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "%s:%s (%s) ã¸ã®æŽ¥ç¶šã‚’開始ã§ãã¾ã›ã‚“。"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "%s:%s (%s) ã¸æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚接続ãŒã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã—ã¾ã—ãŸ"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "失敗"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "%s:%s (%s) ã¸æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "%s ã¸æŽ¥ç¶šã—ã¦ã„ã¾ã™"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "'%s' を解決ã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "'%s' ãŒä¸€æ™‚çš„ã«è§£æ±ºã§ãã¾ã›ã‚“"
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "'%s:%s' ã®è§£æ±ºä¸­ã«ã‚·ã‚¹ãƒ†ãƒ ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "'%s:%s' (%i - %s) ã®è§£æ±ºä¸­ã«ä½•ã‹å•é¡ŒãŒèµ·ã“ã‚Šã¾ã—ãŸ"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "%s:%s ã¸æŽ¥ç¶šã§ãã¾ã›ã‚“:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "状態ã®å–å¾—ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "ä¸æ­£ãª URI ã§ã™ã€‚ローカル㮠URI 㯠// ã§å§‹ã¾ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "ログインã—ã¦ã„ã¾ã™"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "ピアãƒãƒ¼ãƒ ã‚’決定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "ローカルãƒãƒ¼ãƒ ã‚’決定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "サーãƒã‹ã‚‰æŽ¥ç¶šã‚’拒絶ã•ã‚Œã¾ã—ãŸã€‚応答: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER 失敗ã€ã‚µãƒ¼ãƒå¿œç­”: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS 失敗ã€ã‚µãƒ¼ãƒå¿œç­”: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"プロキシサーãƒãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ãŒã€ãƒ­ã‚°ã‚¤ãƒ³ã‚¹ã‚¯ãƒªãƒ—トãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。"
+"Acquire::ftp::ProxyLogin ãŒç©ºã§ã™ã€‚"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "ログインスクリプトã®ã‚³ãƒžãƒ³ãƒ‰ '%s' 失敗ã€ã‚µãƒ¼ãƒå¿œç­”: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE 失敗ã€ã‚µãƒ¼ãƒå¿œç­”: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "接続タイムアウト"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "サーãƒãŒæŽ¥ç¶šã‚’切断ã—ã¾ã—ãŸ"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "レスãƒãƒ³ã‚¹ãŒãƒãƒƒãƒ•ã‚¡ã‚’オーãƒãƒ•ãƒ­ãƒ¼ã•ã›ã¾ã—ãŸã€‚"
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "プロトコルãŒå£Šã‚Œã¦ã„ã¾ã™"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "ソケットを作æˆã§ãã¾ã›ã‚“"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "データソケットã¸æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚接続ãŒã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã—ã¾ã—ãŸ"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "パッシブソケットã«æŽ¥ç¶šã§ãã¾ã›ã‚“。"
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo ã¯ãƒªã‚¹ãƒ‹ãƒ³ã‚°ã‚½ã‚±ãƒƒãƒˆã‚’å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "ソケットをãƒã‚¤ãƒ³ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "ソケットをリスンã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "ソケットã®åå‰ã‚’特定ã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "PORT コマンドをé€ä¿¡ã§ãã¾ã›ã‚“"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "未知ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãƒ•ã‚¡ãƒŸãƒª %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT ã«å¤±æ•—ã—ã¾ã—ãŸã€‚サーãƒå¿œç­”: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "データソケット接続タイムアウト"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "接続を accept ã§ãã¾ã›ã‚“"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "ファイルã®ãƒãƒƒã‚·ãƒ¥ã§ã®å•é¡Œ"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "ファイルをå–å¾—ã§ãã¾ã›ã‚“。サーãƒå¿œç­” '%s'"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "データソケットタイムアウト"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "データ転é€ã«å¤±æ•—ã—ã¾ã—ãŸã€‚サーãƒå¿œç­” '%s'"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "å•ã„åˆã‚ã›"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "呼ã³å‡ºã›ã¾ã›ã‚“"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+"ç½²åã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ãŒæœ‰åŠ¹ã§ã¯ãªãã€'%s' ã‚’å¾—ã¾ã—㟠(ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«èªè¨¼ãŒå¿…è¦?)"
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "å°‘ãªãã¨ã‚‚ 1 ã¤ã®ä¸æ­£ãªç½²åãŒç™ºè¦‹ã•ã‚Œã¾ã—ãŸã€‚"
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr "内部エラー: æ­£ã—ã„ç½²åã§ã™ãŒã€éµæŒ‡ç´‹ã‚’確定ã§ãã¾ã›ã‚“?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"ç½²åを検証ã™ã‚‹ãŸã‚ã® 'apt-key' ã®å®Ÿè¡ŒãŒã§ãã¾ã›ã‚“ã§ã—㟠(gnupg ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«"
+"ã•ã‚Œã¦ã„ã¾ã™ã‹?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "apt-key ã®å®Ÿè¡Œä¸­ã«æœªçŸ¥ã®ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿ"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr "éµ %s ã«ã‚ˆã‚‹ç½²åã¯å¼±ã„ digest アルゴリズム (%s) を使用ã—ã¦ã„ã¾ã™"
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "以下ã®ç½²åãŒç„¡åŠ¹ã§ã™:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr "公開éµã‚’利用ã§ããªã„ãŸã‚ã€ä»¥ä¸‹ã®ç½²åã¯æ¤œè¨¼ã§ãã¾ã›ã‚“ã§ã—ãŸ:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "ファイルã¸ã®æ›¸ãè¾¼ã¿ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "リモートå´ã§æŽ¥ç¶šãŒã‚¯ãƒ­ãƒ¼ã‚ºã•ã‚Œã¦ã‚µãƒ¼ãƒã‹ã‚‰ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "サーãƒã‹ã‚‰ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "ファイルã¸ã®æ›¸ãè¾¼ã¿ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "select ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "接続タイムアウト"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "出力ファイルã¸ã®æ›¸ãè¾¼ã¿ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "ミラーファイル '%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ "
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "ミラーファイル '%s' を読ã¿è¾¼ã‚ã¾ã›ã‚“"
+
+#: methods/mirror.cc
+#, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "ミラーファイル '%s' ã®ã‚¨ãƒ³ãƒˆãƒªãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[ミラー: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "変更時刻ã®è¨­å®šã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "途中ã§æŽ¥ç¶šãŒã‚¯ãƒ­ãƒ¼ã‚ºã•ã‚Œã¾ã—ãŸ"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "空ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯æœ‰åŠ¹ãªã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã¨èªã‚られã¾ã›ã‚“"
diff --git a/po/km.po b/po/km.po
new file mode 100644
index 000000000..b8ada4a73
--- /dev/null
+++ b/po/km.po
@@ -0,0 +1,4205 @@
+# translation of apt_po_km.po to Khmer
+# translation of apt_po_km.po to
+# This file is put in the public domain.
+#
+# Eng Vannak <evannak@khmeros.info>, 2006.
+# Poch Sokun <sokun_poch@khmeros.info>, 2006.
+# auk piseth <piseth_dv@khmeros.info>, 2006.
+# Khoem Sokhem <khoemsokhem@khmeros.info>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2006-10-10 09:48+0700\n"
+"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
+"Language-Team: Khmer <support@khmeros.info>\n"
+"Language: km\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: KBabel 1.11.2\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "áž ážáŸ’ážáž›áŸážáž¶â€‹áž”áŸážŽáŸ’ណសា​រមិន​ážáŸ’រឹមážáŸ’រូវ​"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "កំហុស​ក្នុងការ​អានបឋមកážáž¶â€‹ážŸáž˜áž¶áž‡áž·áž€â€‹áž”áŸážŽáŸ’ណសារ"
+
+#: apt-inst/contrib/arfile.cc
+#, fuzzy, c-format
+msgid "Invalid archive member header %s"
+msgstr "បឋមកážáž¶â€‹ážŸáž˜áž¶áž‡áž·áž€â€‹áž”áŸážŽáŸ’ណសារ"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "បឋមកážáž¶â€‹ážŸáž˜áž¶áž‡áž·áž€â€‹áž”áŸážŽáŸ’ណសារ"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "áž”áŸážŽáŸ’ណសារ ážáŸ’លីពáŸáž€"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុងការ​អាន​បឋមកážáž¶â€‹áž”áŸážŽáŸ’ណសារ"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "មិន​អាច​រក​កញ្ចប់ %s បានទáŸ"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "áž”áŸážŽáŸ’ណសារ​បាន​ážáž¼áž…​"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Tar ឆáŸáž€ážŸáž¶áŸ†â€‹áž”ាន​បរាជáŸáž™ áž”áŸážŽáŸ’ណសារ​បាន​ážáž¼áž…"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "មិន​ស្គាល់​ប្រភáŸáž‘​បឋមកážáž¶â€‹ TAR %u ដែលជា​សមាជិក​ %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "áž“áŸáŸ‡â€‹áž‡áž¶áž˜áž·áž“មែនជា​បáŸážŽáŸ’ណសារ​ DEB ​ážáŸ’រឹមážáŸ’រូវទ០បាážáŸ‹áž”ង់សមាជិក​ '%s'​"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "កំហុស​ážáž¶áž„ក្នុង ​មិន​អាច​កំណážáŸ‹â€‹áž‘ីážáž¶áŸ†áž„​សមាជិក​ %s បានឡើយ"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "ឯកសារážáŸ’ážšáž½ážáž–áž·áž“áž·ážáŸ’យ​ដែលមិនអាច​ញែកបាន"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុងការ​សរសáŸážšâ€‹áž¯áž€ážŸáž¶ážš %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុងការ​បិទឯកសារ %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "ផ្លូវ​ %s វែង​ពáŸáž€"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "កំពុង​ពន្លា​ %s ច្រើន​ជាង​ម្ážáž„​"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "ážážâ€‹ %s ážáŸ’រូវបាន​បង្វែរ"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "កញ្ចប់ ​កំពុង​ព្យាយាម​សរសáŸážšâ€‹áž‘ៅកាន់​គោលដៅ​បង្វែរ​ %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "ផ្លូវ​បង្វែរ វែងពáŸáž€"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "បាន​បរាជáŸáž™â€‹áž€áŸ’នុង​ការážáŸ’លែង %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​ប្ážáž¼ážšâ€‹ážˆáŸ’មោះ %s ទៅ %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "ážážâ€‹ %s ážáŸ’រូវ​បាន​ជំនួស​ដោយ​មិនមែន​ជា​ážážâ€‹"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុងការ​ដាក់ážáŸ’នាំង​នៅក្នុង​ធុង​រាយប៉ាយ​របស់វា"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "ផ្លូវ​វែង​ពáŸáž€"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "សរសáŸážšâ€‹áž‡áž¶áž“់​លើកញ្ចប់ផ្គួផ្គង​ដោយ​គ្មាន​កំណែ​សម្រាប់ %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "ឯកសារ​ %s/%s សរសáŸážšáž‡áž¶áž“់​ពីលើ​មួយ​ក្នុង​កញ្ចប់ %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "មិន​អាច​អាន​ %s បានឡើយ"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "មិន​អាច​ážáŸ’លែង %s បានឡើយ"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "ទម្លាក់​ážáŸ’នាំង​ដែល​បាន​ហៅ​លើ​ážáŸ’នាំងដែល​នៅážáŸ‚ážáž—្ជាប់"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុងការ​ដាក់ទីážáž¶áŸ†áž„​ធាážáž»â€‹ážŠáŸ‚លរាយប៉ាយ !"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុងការ​បម្រុងទុក​ការបង្វែរ"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "កំហុស​ážáž¶áž„ក្នុង នៅក្នុង AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "កំពុង​ព្យាយាម​សរសáŸážšâ€‹áž‡áž¶áž“់​ពីលើ​ការបង្វែរ %s -> %s និង​ %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "ការបន្ážáŸ‚ម​ស្ទួន នៃការបង្វែរ​ %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "ឯកសារ​កំណážáŸ‹â€‹ážšáž…នាសម្ពáŸáž“្ធ​ស្ទួន​ %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "ážážâ€‹ %s ážáŸ’រូវបាន​បង្វែរ"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "ážážâ€‹ %s ážáŸ’រូវបាន​បង្វែរ"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "ážážâ€‹ %s ážáŸ’រូវបាន​បង្វែរ"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "ážážâ€‹ %s ážáŸ’រូវបាន​បង្វែរ"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "ážážâ€‹ %s ážáŸ’រូវបាន​បង្វែរ"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "បាន​បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​អាន​ážáŸ†ážŽâ€‹ %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Hash Sum mismatch"
+msgstr "MD5Sum មិន​ផ្គួផ្គង​"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "ប្ážáž¼ážšâ€‹ážˆáŸ’មោះ​បានបរាជáŸáž™â€‹, %s (%s -> %s) ។"
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "ទំហំ​មិនបាន​ផ្គួផ្គង​"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹áž˜áž·áž“​ážáŸ’រឹមážáŸ’រូវ​ %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "ការសរសáŸážšâ€‹áž˜áž¶áž“កំហុស"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"ážáŸ’ញុំ​មិន​អាច​រកទីážáž¶áŸ†áž„​ឯកសារ​សម្រាប់​កញ្ចប់ %s បាន​ទáŸÂ áŸ” ​មាន​នáŸáž™â€‹ážáž¶â€‹áž¢áŸ’នក​ážáŸ’រូវការ​ជួសជុល​កញ្ចប់​នáŸáŸ‡â€‹ážŠáŸ„យ​ដៃ ។ "
+"(ដោយសារ​​បាážáŸ‹â€‹ážŸáŸ’ážáž¶áž”ážáŸ’យកម្ម)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr "កញ្ចប់​ឯកសារ​លិបិក្រម​ážáŸ’រូវ​បាន​ážáž¼áž… ។ គ្មាន​ឈ្មោះ​ឯកសារ ៖ វាល​សម្រាប់​កញ្ចប់នáŸáŸ‡â€‹áž‘áŸâ€‹ %s ។"
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "កំពុង​ážáž—្ជាប់​ទៅ​កាន់​ %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "មិនអាច​រកឃើញ​កម្មវិធី​បញ្ជា​វិធីសាស្ážáŸ’ážš %s ឡើយ ។"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "áž–áž·áž“áž·ážáŸ’យ​ប្រសិន​បើកញ្ចប់ 'dpkg-dev' មិន​ទាន់​បាន​ដំឡើង​ ។\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "វិធីសាស្ážáŸ’រ​ %s មិន​អាច​ចាប់​ផ្ážáž¾áž˜â€‹ážáŸ’រឹមážáŸ’រូវ​ទáŸâ€‹"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "សូម​បញ្ចូល​ស្លាក​ឌីស​ ៖ '%s' ក្នុង​ដ្រាយ​ '%s' ហើយ​សង្កážáŸ‹â€‹áž…ូល ។"
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "List directory %spartial is missing."
+msgstr "រាយបញ្ជី​ážážâ€‹ %spartial គឺ​បាážáŸ‹áž”ង់​ ។"
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "ážážâ€‹áž”áŸážŽáŸ’ណសារ​ %spartial គឺ​បាážáŸ‹áž”ង់​ ។"
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Unable to lock directory %s"
+msgstr "មិន​អាច​ចាក់​សោ​ážážâ€‹áž”ញ្ជីបានឡើយ"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "ប្រភáŸáž‘​ឯកសារ​លិបិក្រម​ '%s' មិនážáŸ’រូវ​បាន​គាំទ្រ​"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "មិនអាច​ប្ដូរទៅ %s បានឡើយ"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "កំពុង​ទៅ​យក​ឯកសារ %li នៃ %li (នៅសល់ %s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "កំពុង​ទៅយក​ឯកសារ %li នៃ %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr "កញ្ចប់ %s ážáŸ’រូវការឲ្យដំឡើង ប៉ុន្ážáŸ‚​ ážáŸ’ញុំ​មិន​អាច​រក​បáŸážŽáŸ’ណសារ​សម្រាប់​វា​បាន​ទáŸâ€‹Â áŸ”"
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"កំហុស pkgProblemResolver::ដោះស្រាយ​សញ្ញាបញ្ឈប់​ដែលបានបង្កើហនáŸáŸ‡â€‹áž”្រហែលជា បង្កដោយកញ្ចប់​"
+"ដែលបាន​ទុក ។"
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "មិន​អាច​កែ​បញ្ហាបានទáŸáŸ អ្កបានទុក​កញ្ចប់​ដែល​ážáž¼áž… ។។"
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "បញ្ជី​កញ្ចប់​ ឬ ឯកសារ​ស្ážáž¶áž“ភាព​មិន​អាចážáŸ’រូវបាន​​ញែក ​​ឬ ážáŸ’រូវបាន​បើកបានឡើយ​​ ។"
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "អ្នកប្រហែលជា​ចង់ភាពទាន់សមáŸáž™ apt-get ដើម្បី​កែ​បញ្ហា​ទាំងនáŸáŸ‡"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "មិន​អាច​អាន​បញ្ជី​ប្រភព​បាន​ឡើយ​ ។"
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Regex កំហុស​ការចងក្រង​ - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "រក​មិន​ឃើញ​ការ​ចáŸáž‰â€‹áž•áŸ’សាយ​ '%s' សម្រាប់​ '%s' ឡើយ"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "រក​មិន​ឃើញ​កំណែ​ '%s' សម្រាប់ '%s'"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find task '%s'"
+msgstr "មិន​អាច​រក​កញ្ចប់ %s បានទáŸ"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "មិន​អាច​រក​កញ្ចប់ %s បានទáŸ"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "មិន​អាច​រក​កញ្ចប់ %s បានទáŸ"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "មិន​អាច​កំណážáŸ‹â€‹áž‘ីážáž¶áŸ†áž„​កញ្ចប់ %s បានឡើយ"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "បន្ទាážáŸ‹â€‹ %u មាន​ប្រវែង​វែងពáŸáž€áž“ៅ​ក្នុង​បញ្ជី​ប្រភព​ %s ។"
+
+#: apt-pkg/cdrom.cc
+#, fuzzy
+msgid "Unmounting CD-ROM...\n"
+msgstr "មិនកំពុងម៉ោន ស៊ីឌី​-រ៉ូម​ áž‘áŸ..."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "ប្រើប្រាស់ចំណុចម៉ោន​ ស៊ីឌី​-រ៉ូម​ %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "កំពុង​រង់ចាំឌីស​...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "កំពុង​ម៉ោន​ ស៊ីឌី​-រ៉ូម​...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "កំពុង​ធ្វើអážáŸ’ážážŸáž‰áŸ’ញាណនា​... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "បានទុក​ស្លាក ៖ %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "កំពុង​ស្កáŸáž“​ឌីស​សម្រាប់​​ឯកសារ​លិបិក្រម​...\n"
+
+#: apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr "បានរកឃើញ លិបិក្រម​កញ្ចប់ %i លិបិក្រម​ប្រភព%i áž“áž·áž„ áž ážáŸ’ážáž›áŸážáž¶ %i \n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "Found label '%s'\n"
+msgstr "បានទុក​ស្លាក ៖ %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "នោះមិនមែនជាឈ្មោះážáŸ’រឹមážáŸ’រូវទ០សូមព្យាយាម​ម្ដងទៀážÂ áŸ”\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"ឌីស​នáŸáŸ‡â€‹ážáŸ’រូវ​បាន​ហៅ​ ៖ \n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "កំពុង​ចម្លង​បញ្ជី​កញ្ចប់..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "កំពុងសរសáŸážšâ€‹áž”ញ្ជី​ប្រភព​ážáŸ’មី\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "ធាážáž»áž”ញ្ចូល​បញ្ជីប្រភព​សម្រាប់​ឌីស​នáŸáŸ‡áž‚ឺ ៖\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "មិនអាច​ážáŸ’លែង %s បានឡើយ ។"
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "មិនអាច​ážáŸ’លែង ចំណុចម៉ោន %s បានឡើយ"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "បរាជáŸáž™áž€áŸ’នុងការ​ážáŸ’លែង ស៊ីឌីរ៉ូម"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "ជម្រើស​បន្ទាážáŸ‹â€‹áž–ាក្យបញ្ជា '%c' [from %s] មិនស្គាល់ឡើយ ។"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "មិនយល់​ពី​ជម្រើស​បន្ទាážáŸ‹â€‹áž–ាក្យ​បញ្ជា %s ឡើយ"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "ជម្រើស​បន្ទាážáŸ‹áž–ាក្យ​បញ្ជា​ %s មិនមែនជាប៊ូលីនទáŸ"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "ជម្រើស​ %s ážáŸ’រូវការ​អាគុយម៉ង់មួយ ។"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "ជម្រើស %s ៖ ការបញ្ជាក់​ធាážáž»â€‹áž€áŸ†ážŽážáŸ‹ážšáž…នាសម្ពáŸáž“្ធážáŸ’រូវážáŸ‚មាន =<val> មួយ ។"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "ជម្រើស​ %s ážáŸ’រូវ​ការ​អាគុយម៉ង់​ចំនួន​គážáŸ‹â€‹ មិន​មែន​ '%s'"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "ជម្រើស​ '%s' វែងពáŸáž€"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "មិនបានយល់អំពី​ការស្គាល់​ %s ឡើយ សូមព្យាយមយក​ áž–áž·ážâ€‹ ​​​ឫ មិន​ពិážÂ áŸ”"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹áž˜áž·áž“​ážáŸ’រឹមážáŸ’រូវ​ %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "មិន​បាន​​ទទួល​ស្គាល់​ប្រភáŸáž‘​អក្សរ​សង្ážáŸáž” ៖ '%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "កំពុង​បើ​ឯកសារ​កំណážáŸ‹ážšáž…នាសម្ពáŸáž“្ធ​ %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "កំហុស​វាក្យ​សម្ពន្ធ %s:%u ៖ ប្លុក​ចាប់​ផ្ážáž¾áž˜â€‹â€‹ážŠáŸ„យ​គ្មាន​ឈ្មោះ​ ។"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "កំហុស​​វាក្យ​សម្ពន្ធ %s:%u ៖ ស្លាក​ដែលបាន Malformed"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "កំហុស​​វាក្យ​សម្ពន្ធ %s:%u ៖ ážáž˜áŸ’លៃ​ឥážáž”ានការ​នៅ​ក្រៅ​"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "កំហុសវាក្យ​សម្ពន្ធ %s:%u ៖ សáŸáž…ក្ដីបង្គាប់​អាចážáŸ’រូវបានធ្វើ​ážáŸ‚នៅលើ​កម្រិážâ€‹áž€áŸ†áž–ូល​ážáŸ‚ប៉ុណ្ណោះ"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "កំហុស​វាក្យសម្ពន្ធ %s:%u ៖ មាន​ការរួមបញ្ចូល​ដែលដាក់​រួមគ្នា​យ៉ាងច្រើន"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "កំហុសវាក្យ​សម្ពន្ធ %s:%u ៖ បានរួម​បញ្ចូល​ពី​ទីនáŸáŸ‡â€‹"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "កំហុស​វាក្យ​សម្ពន្ធ %s:%u ៖ សáŸáž…ក្ដី​បង្គាប់​ដែល​មិនបានគាំទ្រ '%s'"
+
+#: apt-pkg/contrib/configuration.cc
+#, fuzzy, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr "កំហុសវាក្យ​សម្ពន្ធ %s:%u ៖ សáŸáž…ក្ដីបង្គាប់​អាចážáŸ’រូវបានធ្វើ​ážáŸ‚នៅលើ​កម្រិážâ€‹áž€áŸ†áž–ូល​ážáŸ‚ប៉ុណ្ណោះ"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "កំហុស​វាក្យសម្ពន្ធ %s:%u ៖ សារឥážáž”ានការ​បន្ážáŸ‚ម ដែលនៅážáž¶áž„ចុង​ឯកសារ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem unlinking the file %s"
+msgstr "មានបញ្ហា​ក្នុងការ​ផ្ដាច់ážáŸ†ážŽâ€‹áž¯áž€ážŸáž¶ážš"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "មិន​ប្រើប្រាស់​ការចាក់សោ សម្រាប់ážáŸ‚ឯកសារចាក់សោ​ដែលបានážáŸ‚អានប៉ុណ្ណោះ %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "មិន​អាច​បើក​ឯកសារ​ចាក់សោ​ %s បានឡើយ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "មិនប្រើ​ការចាក់សោ សម្រាប់ nfs ឯកសារ​ចាក់សោដែលបានម៉ោន%s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "មិន​អាច​ចាក់សោ %s បានឡើយ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "រង់ចាំប់​ %s ប៉ុន្ážáŸ‚ ​វា​មិន​នៅទីនោះ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "ដំណើរការ​រង​ %s បាន​ទទួល​កំហុស​ការ​ចែកជាចម្រៀក​ ។"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "ដំណើរការ​រង​ %s បាន​ទទួល​កំហុស​ការ​ចែកជាចម្រៀក​ ។"
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "ដំណើរការ​រង​ %s បានážáŸ’រឡប់​ទៅកាន់​កូដ​មាន​កំហុស​ (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "ដំណើរការ​រង​ %s បានចáŸáž‰ ដោយ​មិន​រំពឹង​ទុក​ "
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "ការអាន​មានកំហុស"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "ការសរសáŸážšâ€‹áž˜áž¶áž“កំហុស"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "មាន​បញ្ហា​ក្នុងការ​បិទ​ឯកសារ"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​បង្កើážâ€‹ážŠáŸ†ážŽáž¾ážšáž€áž¶ážšâ€‹ážšáž„​ IPC"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​ប្រážáž·áž”ážáŸ’ážáž·â€‹áž€áž˜áŸ’មវិធី​បង្ហាប់ "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "មិន​អាច​បើក​ឯកសារ​ %s បានឡើយ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Could not open file descriptor %d"
+msgstr "មិន​អាច​បើក​បំពុង​សម្រាប់​ %s បានឡើយ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "អាន​, នៅážáŸ‚​មាន %lu ដើម្បី​អាន​ ប៉ុន្ážáŸ‚​គ្មាន​អ្វី​នៅសល់"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "សរសáŸážšâ€‹, នៅážáŸ‚មាន​ %lu ដើម្បី​សរសáŸážšâ€‹ ប៉ុន្ážáŸ‚​មិន​អាច​"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the file %s"
+msgstr "មាន​បញ្ហា​ក្នុងការ​បិទ​ឯកសារ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "មានបញ្ហា​ក្នុង​ការធ្វើ​សមកាលកម្មឯកសារ​"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "មានបញ្ហា​ក្នុង​ការធ្វើ​សមកាលកម្មឯកសារ​"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "មិន​អាច​ážáŸ’លែង %s បានឡើយ"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "មិន​អាច​សរសáŸážšâ€‹áž‘ៅ %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "មិនអាច mmap ឯកសារទទáŸâ€‹áž”ានឡើយ"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "មិន​អាច​បង្កើážâ€‹ mmap នៃ​ %lu បៃបានឡើយ"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "មិន​អាច​បើក​បំពុង​សម្រាប់​ %s បានឡើយ"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to close mmap"
+msgstr "មិន​អាចបើក​ %s បានឡើយ"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to synchronize mmap"
+msgstr "មិន​អាច​ហៅ​ "
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "មិន​អាច​បង្កើážâ€‹ mmap នៃ​ %lu បៃបានឡើយ"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Failed to truncate file"
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុងការ​សរសáŸážšâ€‹áž¯áž€ážŸáž¶ážš %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... កំហុស ​!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... ធ្វើរួច​"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... ធ្វើរួច​"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "ជម្រើស​ %s រក​មិន​ឃើញ​ឡើយ"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Unable to parse Release file %s"
+msgstr "មិនអាច​ញែក​ឯកសារកញ្ចប់ %s (1) បានឡើយ"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "No sections in Release file %s"
+msgstr "ចំណាំ កំពុង​ជ្រើស​ %s ជំនួស​ %s\n"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "មិនអាច​ញែក​ឯកសារកញ្ចប់ %s (1) បានឡើយ"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "មិនអាច​ញែក​ឯកសារកញ្ចប់ %s (%d) បានឡើយ"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, fuzzy, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "មិន​អាច​ចាក់​សោ​ážážâ€‹áž”ញ្ជីបានឡើយ"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr ""
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Installing %s"
+msgstr "បាន​ដំឡើង %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "កំពុង​កំណážáŸ‹â€‹ážšáž…នា​សម្ពáŸáž“្ធ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "កំពុង​យក %s áž…áŸáž‰"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removing %s"
+msgstr "បាន​យក %s áž…áŸáž‰â€‹áž‘ាំង​ស្រុង"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "បាន​ដំឡើង %s"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Directory '%s' missing"
+msgstr "រាយបញ្ជី​ážážâ€‹ %spartial គឺ​បាážáŸ‹áž”ង់​ ។"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, fuzzy, c-format
+msgid "Could not open file '%s'"
+msgstr "មិន​អាច​បើក​ឯកសារ​ %s បានឡើយ"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "កំពុងរៀបចំ​ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "កំពុង​ស្រាយ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "កំពុងរៀបចំ​កំណážáŸ‹ážšáž…នាសម្ពáŸáž“្ធ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "កំពុងរៀបចំដើម្បី​ការយក​ចáŸáž‰â€‹áž“ៃ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "បាន​យក %s áž…áŸáž‰"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "កំពុង​រៀបចំ​យក %s áž…áŸáž‰â€‹áž‘ាំង​ស្រុង"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "បាន​យក %s áž…áŸáž‰â€‹áž‘ាំង​ស្រុង"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "មិន​អាច​សរសáŸážšâ€‹áž‘ៅ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "កំពុងស្ážáž¶áž”នា​មែកធាងភាពអាស្រáŸáž™"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "កំណែ​សាកល្បង​"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "ការបង្កើážâ€‹áž—ាពអាស្រáŸáž™â€‹"
+
+#: apt-pkg/depcache.cc
+#, fuzzy
+msgid "Reading state information"
+msgstr "បញ្ចូល​​ពáŸážáŸŒáž˜áž¶áž“​ដែលមាន​ចូល​គ្នា"
+
+#: apt-pkg/depcache.cc
+#, fuzzy, c-format
+msgid "Failed to open StateFile %s"
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​បើក %s"
+
+#: apt-pkg/depcache.cc
+#, fuzzy, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុងការ​សរសáŸážšâ€‹áž¯áž€ážŸáž¶ážš %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "បានសរសáŸážš %i កំណážáŸ‹ážáŸ’រា ។\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "បានសរសáŸážš %i កំណážáŸ‹ážáŸ’រា​ជាមួយ​ %i ឯកសារ​ដែល​បាážáŸ‹áž”ង់ ។\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "បានសរសáŸážšâ€‹ %i កំណážáŸ‹ážáŸ’រា​ជាមួយួយ​ %i ឯកសារ​ដែល​មិន​បាន​ផ្គួផ្គង​\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "បានសរសáŸážš %i កំណážáŸ‹ážáŸ’រា​ជាមួយ​ %i ឯកសារ​ដែល​បាážáŸ‹áž”ង់​ និង​ %i ឯកសារ​ដែល​មិន​បាន​ផ្គួផ្គង​ ​\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, fuzzy, c-format
+msgid "Hash mismatch for: %s"
+msgstr "MD5Sum មិន​ផ្គួផ្គង​"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "មិន​គាំទ្រ​ប្រពáŸáž“្ធ​កញ្ចប់'%s' ឡើយ"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "មិនអាច​កំណážáŸ‹â€‹áž”្រភáŸáž‘​ប្រពáŸáž“្ធ​កញ្ចប់​ដែល​សមរម្យ​បានឡើយ"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "មិន​អាច​បើក​ឯកសារ​ %s បានឡើយ"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"ការរážáŸ‹â€‹áž€áž¶ážšážŠáŸ†áž¡áž¾áž„​នáŸáŸ‡ នឹងទាមទារ​ឲ្យយកកញ្ចប់ចាំបាច់ %s បណ្ដោះអាសន្ន ដោយសារ រង្វិល ការប៉ះទង្គិច/"
+"ភាពអាស្រáŸáž™áž‡áž¶áž˜áž»áž“ ។ ជាញឹកញាប់គឺ មិនážáŸ’រឹមážáŸ’រូវ ប៉ុន្ážáŸ‚ ប្រសិនបើអ្នក​ពិážáž‡áž¶áž…ង់ធ្វើវា ធ្វើឲ្យជម្រើស APT::"
+"Force-LoopBreak សកម្ម ។"
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "ឃ្លាំង​កញ្ចប់​ទទáŸâ€‹"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "​​ឯកសារ​ឃ្លាំង​កញ្ចប់​មិន​ážáŸ’រឹមážáŸ’រូវ​"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "ឯកសារ​ឃ្លាំងសម្ងាážáŸ‹â€‹â€‹áž€áž‰áŸ’ចប់​ជាកំណែ​មិន​ážáŸ’រូវគ្នា​"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "APT áž“áŸáŸ‡ មិនគាំទ្រ​ប្រពáŸáž“្ធ​ ការធ្វើកំណែនáŸáŸ‡áž‘áŸâ€‹ '%s'"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "ឃ្លាំង​សម្ងាážáŸ‹â€‹áž€áž‰áŸ’ចប់ážáŸ’រូវ​បានស្ážáž¶áž”នា់​សម្រាប់ស្ážáž¶áž”ážáŸ’យករ​ážáž»ážŸâ€‹áŸ—គ្នា​​"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "​​ឯកសារ​ឃ្លាំង​កញ្ចប់​មិន​ážáŸ’រឹមážáŸ’រូវ​"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "អាស្រáŸáž™â€‹"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "អាស្រáŸáž™áž‡áž¶â€‹áž˜áž»áž“"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "ផ្ដល់យោបល់​"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "ប៉ះទង្គិច"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "ផ្ážáž›áŸ‹â€‹áž¢áž“ុសាសនáŸâ€‹"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "ជំនួស​"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "លែង​ប្រើ"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "សំážáž¶áž“់​"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "បាន​ទាមទារ"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "គំរូ"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "បន្ážáŸ‚ម"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "ស្រáŸáž…áž…áž·ážáŸ’áž"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "ឃ្លាំងសម្ងាážáŸ‹â€‹áž˜áž·áž“​ážáŸ’រូវ​គ្នា​នឹង ប្រពáŸáž“្ធ ធ្វើកំណែ"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "កំហុស​បានកើážáž¡áž¾áž„​ážážŽáŸˆáž–áŸáž›â€‹áž€áŸ†áž–ុង​ដំណើរការ​ %s (FindPkg)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "អស្ចារ្យ អ្នក​មាន​ឈ្មោះ​កញ្ចប់​លើស​ចំនួន​ APT áž“áŸáŸ‡â€‹áž†áž”គ្នា​​  ។"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "អស្ចារ្យ អ្នក​មាន​កំណែ​លើស​ចំនួន​ APT áž“áŸáŸ‡â€‹áž†áž”គ្នា​ ។"
+
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "អស្ចារ្យ អ្នក​មាន​កំណែ​លើស​ចំនួន​ APT áž“áŸáŸ‡â€‹áž†áž”គ្នា​ ។"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "អស្ចារ្យ​, អ្នក​មាន​ភាពអាស្រáŸáž™â€‹áž›áž¾ážŸâ€‹áž…ំនួន​ APT áž“áŸáŸ‡â€‹áž†áž”គ្នា​ ។"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "កំពុង​អាន​បញ្ជី​កញ្ចប់"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "IO កំហុសក្នុងការររក្សាទុក​ឃ្លាំង​សម្ងាážáŸ‹â€‹áž”្រភព​"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "ប្រភáŸáž‘​ឯកសារ​លិបិក្រម​ '%s' មិនážáŸ’រូវ​បាន​គាំទ្រ​"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, fuzzy, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "កំណážáŸ‹ážáŸ’រា​មិនážáŸ’រឹមážáŸ’រូវ​នៅក្នុង​ឯកសារចំណង់ចំណូលចិážáŸ’ហមិនមាន​បឋមកážáž¶â€‹áž€áž‰áŸ’ចប់ទáŸ"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "មិន​បាន​យល់​ពី​ប្រភáŸáž‘​ម្ជុល %s ឡើយ"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "គ្មាន​អទិភាព (ឬ សូន្យ​) បានបញ្ជាក់​សម្រាប់​ម្ជុល​ទáŸ"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Malformed បដិសáŸáž’ %s បន្ទាážáŸ‹ %lu #1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "កំពុង​បើក​ %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "បន្ទាážáŸ‹â€‹ Malformed %u ក្នុង​បញ្ជី​ប្រភព​ %s (ប្រភáŸáž‘​)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "ប្រភáŸáž‘​ '%s' មិន​ស្គាល់នៅលើបន្ទាážáŸ‹â€‹ %u ក្នុង​បញ្ជី​ប្រភព​ %s ឡើយ"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "បន្ទាážáŸ‹â€‹ Malformed %u ក្នុង​បញ្ជី​ប្រភព​ %s (ប្រភáŸáž‘​)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "ប្រភáŸáž‘​ '%s' មិន​ស្គាល់នៅលើបន្ទាážáŸ‹â€‹ %u ក្នុង​បញ្ជី​ប្រភព​ %s ឡើយ"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "អ្នកážáŸ’រូវážáŸ‚ដាក់ 'ប្រភព' URIs មួយចំនួន​នៅក្នុង sources.list របស់អ្នក"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​ទៅ​ប្រមូល​យក​ %s %s"
+
+#: apt-pkg/update.cc
+#, fuzzy
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"ឯកសារ​លិបិក្រម​មួយ​ចំនួន​បាន​បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​​ទាញ​យក ​ពួកវាážáŸ’រូវបាន​មិន​អើពើ​ ឬ ប្រើ​​ឯកសារ​ចាស់​ជំនួសវិញ ​​។"
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "កំពុង​គណនា​ការ​ធ្វើ​ឲ្យ​ប្រសើរ"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "វាយ​:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "យក​ ៖:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr ""
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "បាន​ទៅ​ប្រមូល​ %sB ក្នុង​ %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [កំពុង​ធ្វើការ​]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"ផ្លាស់ប្ážáž¼ážšâ€‹áž˜áŸážŒáŸ€Â áŸ– សូម​បញ្ចូល​ážáž¶ážŸâ€‹ážŠáŸ‚ល​មាន​ស្លាក\n"
+" '%s'\n"
+"ក្នុង​ដ្រាយ​ '%s' ហើយ​ចុច​បញ្ចូល\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "កំពុង​កែ​ភាពអាស្រáŸáž™â€‹..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " បាន​បរាជáŸáž™Â áŸ”"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "មិន​អាច​កែ​ភាព​អាស្រáŸáž™â€‹áž”ានឡើយ​"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "មិនអាច​បង្រួម​ការ​កំណážáŸ‹â€‹áž—ាព​ប្រសើរ​​បាន​ឡើយ​"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " ធ្វើ​រួច"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "អ្នក​ប្រហែល​ជា​ចង់រážáŸ‹ 'apt --fix-broken install' ដើម្បី​កែ​វា​​ទាំងនáŸáŸ‡â€‹áž áž¾áž™Â áŸ”"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"ភាពអស្រáŸáž™â€‹ážŠáŸ‚ល​ážáž»ážŸâ€‹áž‚្នា ។ ព្យាយាម​ 'apt --fix-broken install' ដោយ​គ្មាន​កញ្ចប់ (ឬ បញ្ជាក់​"
+"ដំណោះស្រាយ) ។"
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "ចំណាំ កំពុង​ជ្រើស​ %s សម្រាប់ regex '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "ចំណាំ កំពុង​ជ្រើស​ %s សម្រាប់ regex '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "ចំណាំ កំពុង​ជ្រើស​ %s សម្រាប់ regex '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "កញ្ចប់​ %s ជា​កញ្ចប់​និម្មិážâ€‹ážŠáŸ‚ល​បាន​ផ្ážáž›áŸ‹â€‹ážŠáŸ„យ​ ៖\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [បានដំឡើង​]"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Not candidate version]"
+msgstr "កំណែ​សាកល្បង​"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "អ្នក​គួរážáŸ‚​ជ្រើស​យក​មួយ​​ឲ្យ​ច្បាស់​ដើម្បី​ដំឡើង​ ។"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"មិន​មាន​កញ្ចប់​ %s ទ០ប៉ុន្ážáŸ‚​វា​ážáŸ’រូវ​បាន​យោង​ទៅ​ដោយ​កញ្ចប់​ផ្សáŸáž„​ទៀážâ€‹Â áŸ”\n"
+"វា​មាននáŸáž™â€‹ážáž¶â€‹áž”ាážáŸ‹áž€áž‰áŸ’ចប់ ​គáŸâ€‹áž›áŸ‚ង​ប្រើ ឬ\n"
+"អាច​រក​បាន​ពី​ប្រភព​ផ្សáŸáž„​ទៀáž\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "ទោះ​យ៉ាងណា​កáŸážŠáŸ„áž™ កញ្ចប់​ážáž¶áž„ក្រោម​ជំនួស​វា ៖"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "កញ្ចប់​ %s មិនមាន​ការដំឡើងសាកល្បងឡើយ"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr ""
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "មិនទាន់បានដំឡើង​កញ្ចប់​ %s áž‘áŸâ€‹ ដូច្នáŸáŸ‡ មិន​បាន​យកចáŸáž‰áž¡áž¾áž™ \n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "មិនទាន់បានដំឡើង​កញ្ចប់​ %s áž‘áŸâ€‹ ដូច្នáŸáŸ‡ មិន​បាន​យកចáŸáž‰áž¡áž¾áž™ \n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "ចំណាំ កំពុង​ជ្រើស​ %s ជំនួស​ %s\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "រក​កញ្ចប់​មិន​ឃើញ"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "ព្រមាន​ ៖ មិនអាច​ធ្វើការផ្ទៀងផ្ទាážáŸ‹áž—ាពážáŸ’រឹមážáŸ’រូវកញ្ចប់ážáž¶áž„ក្រោមបានឡើយ !"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "បានបដិសáŸáž’​ការព្រមាន​ការផ្ទៀងផ្ទាážáŸ‹áž—ាព​ážáŸ’រឹមážáŸ’រូវ ។\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "មិនអាច​ផ្ទៀងផ្ទាážáŸ‹áž—ាពážáŸ’រឹមážáŸ’រូវកញ្ចប់​មួយចំនួន​បានឡើយ​"
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid "Install these packages without verification?"
+msgstr "ដំឡើង​កញ្ចប់​ទាំងនáŸáŸ‡ ​ដោយគ្មានការពិនិážáŸ’យ​បញ្ជាក់ [y/N] ? "
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "មាន​បញ្ហា​ ហើយ -y ážáŸ’រូវ​បាន​ប្រើ​ដោយគ្មាន​​ --force​-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "មិន​អាច​កំណážáŸ‹â€‹áž‘ំហំ​ទំនáŸážšâ€‹áž€áŸ’នុង​ %s បានឡើយ"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "អ្នក​គ្មាន​ទំហំ​​ទំនáŸážšâ€‹áž‚្រប់គ្រាន់​ក្នុង​​ %s ឡើយ ។"
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "មិន​អាច​ចាក់​សោ​ážážâ€‹áž‘ាញ​យក​បាន​ឡើយ"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"មិនអាច​ដំឡើងកញ្ចប់​មួយចំនួន​បានឡើយ ។ áž“áŸáŸ‡â€‹áž˜áž¶áž“​នáŸáž™â€‹ážáž¶â€‹áž¢áŸ’នក​\n"
+"​បានស្នើរ​ស្ážáž¶áž“ភាព​ដែល​មិន​អាច​ធ្វើបានមួយ ឬ ​ប្រសិន​បើ​​អ្នក​កំពុង​ប្រើការចែកចាយ​ពុំ​មាន​លំនឹង​នោះ កញ្ចប់​"
+"ដែលបាន​ទាមទារនឹងមិនទាន់បានបង្កើážâ€‹áž¡áž¾áž™â€‹\n"
+" ឬ ​បានយក​ចáŸáž‰â€‹áž–ីការមកដល់ ។"
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "áž–áŸážáŸŒáž˜áž¶áž“​ដូចážáž‘ៅនáŸáŸ‡ អាចជួយ​ដោះស្រាយ​ស្ážáž¶áž“ភាព​បាន ៖"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "កញ្ចប់​ដែល​បាន​ážáž¼áž…​"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"អនុញ្ញាážâ€‹áž²áŸ’យ​ទៅ​ប្រមូល​យក​បáŸážŽáŸ’ណសារ​មួយ​ចំនួន​ ប្រហែល​ជា​រážáŸ‹â€‹áž—ាព​ទាន់​សមáŸáž™ apt-get ឬ ព្យាយាមប្រើ​ជាមួយ --"
+"fix- ដែលបាážáŸ‹áž¬áŸ‹Â ?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "កំហុស​ážáž¶áž„ក្នុង កញ្ចប់​ដំឡើង​ážáŸ’រូវ​បាន​ហៅ​​ជាមួយ​កញ្ចប់​ដែល​ážáž¼áž… !"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "កញ្ចប់ ​ážáŸ’រូវការឲ្យ​យក​ចáŸáž‰â€‹â€‹ ប៉ុន្ážáŸ‚មិនអនុញ្ញាážâ€‹áž²áŸ’យយកចáŸáž‰áž¡áž¾áž™Â áŸ”"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "មាន​បញ្ហា​ ហើយ -y ážáŸ’រូវ​បាន​ប្រើ​ដោយគ្មាន​​ --force​-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "មាន​បញ្ហា​ ហើយ -y ážáŸ’រូវ​បាន​ប្រើ​ដោយគ្មាន​​ --force​-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "កំហុស​ážáž¶áž„ក្នុង​ ការ​រៀប​ážáž¶áž˜â€‹áž›áŸ†ážŠáž¶áž”់​មិន​បាន​បញ្ចប់ឡើយ"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr "យី អី​កáŸâ€‹áž…ម្លែង​ម្លáŸáŸ‡.. ទំហំ​មិន​ដូច​គ្នា​ឡើយ ។ សូម​ផ្ញើ​អ៊ីមែល​ទៅ apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "ážáŸ’រូវការ​​យក​ %sB/%sB នៃ​បáŸážŽáŸ’ណសារ ។​\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "ážáŸ’រូវ​ការយក​ %sB នៃ​បáŸážŽáŸ’ណសារ ។\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "បន្ទាប់​ពី​ពន្លា​ %sB នៃ​ការ​បន្ážáŸ‚ម​​ទំហំ​ážáž¶ážŸâ€‹ážáŸ’រូវ​បាន​ប្រើ ។\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "បន្ទាប់​ពី​ពន្លា​ %sB ទំហំ​ážáž¶ážŸáž“ឹង​​ទំនáŸážšÂ áŸ” \n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "បានបញ្ជាក់​ážáŸ‚ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšážŠáŸ‚លមិនសំážáž¶áž“់ប៉ុណ្ណោះ ប៉ុន្ážáŸ‚​នáŸáŸ‡áž˜áž·áž“មែនជាប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšáž˜áž·áž“សំážáž¶áž“់នោះទáŸÂ áŸ”"
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "បាទ/ចាស ធ្វើ​ដូច​ដែល​ážáŸ’ញុំ​និយាយ !"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"អ្នកប្រហែល​ជា​ធ្វើ​អ្វីមួយ​ដែល​អាច​បង្ករ​ឲ្យ​មាន​មហន្ដរាយ ។\n"
+"ដើម្បី​បន្ហ​​វាយ​ក្នុង​ឃ្លា​ '%s'\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "បោះបង់ ។"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Do you want to continue?"
+msgstr "ážáž¾â€‹áž¢áŸ’នក​ចង់​បន្ážáž¬â€‹ [បាទ ចាស/áž‘áŸâ€‹] ? "
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "ឯកសារ​មួយ​ចំនួន​បាន​បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​ទាញ​យក​"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "បានបញ្ចប់ការទាញ​យក​ ហើយ​ážáŸ‚​ក្នុង​របៀប​​ទាញ​យក​ប៉ុណ្ណោះ"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix- ដែលបាážáŸ‹â€‹ áž“áž·áž„ ​ស្វប​មáŸážŒáŸ€â€‹ážŠáŸ‚ល​មិនបាន​​គាំទ្រនៅពáŸáž›â€‹áž”ច្ចុប្បន្ន​"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "មិន​អាច​កែ​កញ្ចប់​ដែលបាážáŸ‹áž”ង់​បានឡើយ ។"
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "កំពុង​បោះបង់​ការ​ដំឡើង​ ។"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "កំហុស​ážáž¶áž„ក្នុង អ្នក​ដោះស្រាយ​បញ្ហា​បានធ្វើឲ្យážáž¼áž…​ឧបករណáŸ"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "កញ្ចប់​ážáŸ’មី​ážáž¶áž„ក្រោម​នឹង​ážáŸ’រូវ​បាន​ដំឡើង​ ៖"
+msgstr[1] "កញ្ចប់​ážáŸ’មី​ážáž¶áž„ក្រោម​នឹង​ážáŸ’រូវ​បាន​ដំឡើង​ ៖"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "កញ្ចប់​ážáŸ’មី​ážáž¶áž„ក្រោម​នឹង​ážáŸ’រូវ​បាន​ដំឡើង​ ៖"
+msgstr[1] "កញ្ចប់​ážáŸ’មី​ážáž¶áž„ក្រោម​នឹង​ážáŸ’រូវ​បាន​ដំឡើង​ ៖"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "កញ្ចប់​បន្ážáŸ‚ម​ដូចážáž‘ៅនáŸáŸ‡ នឹងážáŸ’រូវបាន​ដំឡើង ៖"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "កញ្ចប់​ដែល​បាន​ផ្ដល់​យោបល់ ៖"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "កញ្ចប់​ដែល​បាន​ផ្ដល់​អនុសាសនáŸÂ áŸ–"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "កំពុង​រំលង​ %s វា​បាន​ដំឡើង​រួចរាល់​ ហើយ​ភាព​ធ្វើឲ្យ​ប្រសើរ​​មិន​ទាន់​កំណážáŸ‹â€‹â€‹Â áŸ”\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr "កំពុង​រំលង​ %s វា​បាន​ដំឡើង​រួចរាល់​ ហើយ​ភាព​ធ្វើឲ្យ​ប្រសើរ​​មិន​ទាន់​កំណážáŸ‹â€‹â€‹Â áŸ”\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "មិនអាចធ្វើការដំឡើង %s ឡើងវិញបានទ០វា​មិនអាចážáŸ’រូវបាន​ទាញយកបានឡើយ ។\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s ជាកំណែ​ដែលážáŸ’មីបំផុážážšáž½áž…ទៅហើយ ។\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to manually installed.\n"
+msgstr "ប៉ុន្ážáŸ‚​ %s នឹង​ážáŸ’រូវ​បាន​ដំឡើ​ង"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "បានជ្រើស​កំណែ​ %s (%s) សម្រាប់ %s\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "បានជ្រើស​កំណែ​ %s (%s) សម្រាប់ %s\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [បានដំឡើង​]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [បានដំឡើង​]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [បានដំឡើង​]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [បានដំឡើង​]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "ប៉ុន្ážáŸ‚​ %s ážáŸ’រូវ​បាន​ដំឡើង​"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "ប៉ុន្ážáŸ‚​ %s នឹង​ážáŸ’រូវ​បាន​ដំឡើ​ង"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "ប៉ុន្ážáŸ‚​​វា​មិន​អាច​ដំឡើង​បាន​ទáŸâ€‹"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "ប៉ុន្ážáŸ‚​​វា​ជា​កញ្ចប់​និម្មិážâ€‹"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "ប៉ុន្ážáŸ‚ វា​នឹង​មិន​ážáŸ’រូវ​បាន​ដំឡើង​ទáŸ"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "ប៉ុន្ážáŸ‚​វា​មិន​បាន​ដំឡើង​ទáŸâ€‹"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " ឬ"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "កញ្ចប់​ážáž¶áž„ក្រោម​មាន​ភាពអាស្រáŸáž™â€‹ážŠáŸ‚ល​ážáž»ážŸâ€‹áž‚្នា ៖"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "កញ្ចប់​ážáŸ’មី​ážáž¶áž„ក្រោម​នឹង​ážáŸ’រូវ​បាន​ដំឡើង​ ៖"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "កញ្ចប់​ážáž¶áž„ក្រោម​នឹងážáŸ’រូវ​បាន​យកចáŸáž‰Â áŸ–"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "​កញ្ចប់​ážáž¶áž„​ក្រោម​ážáŸ’រូវ​បាន​យក​ážáŸ’រឡប់​មក​វិញ ៖"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "កញ្ចប់​ážáž¶áž„ក្រោម​នឹង​​ážáŸ’រូវ​បាន​​ធ្វើ​ឲ្យប្រសើ​ឡើង ៖"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "កញ្ចប់​ážáž¶áž„ក្រោម​នឹង​​ážáŸ’រូវ​បាន​បន្ទាប ៖"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "កញ្ចប់​រង់ចាំ​ážáž¶áž„ក្រោម​នឹង​ážáŸ’រូវ​​បានផ្លាស់​​ប្ážáž¼ážšâ€‹Â áŸ–"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (ដោយ​សារážáŸ‚​ %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"ព្រមាន​ ៖ កញ្ចប់ដែល​ចាំបាច់​ážáž¶áž„ក្រោម​នឹង​ážáŸ’រូវ​បាន​យកចáŸáž‰Â áŸ”\n"
+"ការយកចáŸáž‰â€‹áž“áŸáŸ‡â€‹áž˜áž·áž“​ážáŸ’រូវ​បានធ្វើ​ទáŸâ€‹áž›áž»áŸ‡ážáŸ’រា​ážáŸ‚​អ្នកដឹង​ážáž¶â€‹â€‹áž¢áŸ’នក​កំពុង​ធ្វើ​អ្វីឲ្យប្រាកដ !"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu ážáŸ’រូវ​បាន​ធ្វើ​ឲ្យ​ប្រសើរ %lu ážáŸ’រូវ​បានដំឡើង​ážáŸ’មី "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu ážáŸ’រូវ​បាន​ដំឡើង​ឡើង​វិញ "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu ​ážáŸ’រូវបានបន្ទាប់ "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu ដែលážáŸ’រូវ​យក​ចáŸáž‰â€‹ ហើយ​ %lu មិន​​បាន​ធ្វើ​ឲ្យ​ប្រសើរឡើយ ។\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu មិន​បាន​ដំឡើង​ ឬ យក​ចáŸáž‰áž”ានគ្រប់ជ្រុងជ្រោយ​ឡើយ​ ។\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr ""
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr ""
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "Y"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+#, fuzzy
+msgid "You must give at least one search pattern"
+msgstr "អ្នក​ážáŸ’រូវ​ážáŸ‚​ផ្ដល់​លំនាំ​មួយ​ដែល​ពិážâ€‹áž”្រាកដ"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "ឯកសារ​កញ្ចប់ %s នៅ​ážáž¶áž„ក្រៅ​ការ​ធ្វើសមកាលកម្ម ។"
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "ឯកសារ​កញ្ចប់ ៖"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "ឃ្លាំង​សម្ងាážáŸ‹â€‹áž‹áž·ážáž“ៅ​ក្រៅ​ការ​ធ្វើ​សមកាល​កម្ម ដែលមិន​អាច x-ref ឯកសារ​កញ្ចប់​បាន​ទáŸ"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "កញ្ចប់​ដែល​បាន​ážáŸ’ទាស់ ៖"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " បាន​ដំឡើង ៖ "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " សាកល្បង ៖ "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(គ្មាន)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " ážáž¶ážšáž¶áž„​កំណែ ៖"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "មិន​អាច​រក​កញ្ចប់ %s បានទáŸ"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "មិន​អាច​រក​កញ្ចប់ %s បានទáŸ"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "មិន​អាច​រក​កញ្ចប់ %s បានទáŸ"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "មិនអាចážáŸ’លែង បញ្ជី​កញ្ចប់​ប្រភពចប់​ បានឡើយ %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "យ៉ាងហោចណាស់​ážáŸ’រូវ​​បញ្ជាក់​​កញ្ចប់​មួយ ​ដើម្បី​ទៅ​​ប្រមូល​យក​ប្រភព​សម្រាប់"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "មិន​អាច​រក​កញ្ចប់ប្រភព​​សម្រាប់ %s បានឡើយ"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "កំពុង​រំលង​ឯកសារ​ដែល​បាន​ទាញយក​រួច​ '%s'\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "ážáŸ’រូវការ​យក​ %sB/%sB នៃ​បáŸážŽáŸ’ណសារ​ប្រភព ។\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "ážáŸ’រូវការ​យក​ %sB នៃ​បáŸážŽáŸ’ណសារ​ប្រភព​ ។\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "ទៅប្រមូល​ប្រភព​ %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុងការទៅប្រមូលយក​បáŸážŽáŸ’ណសារ​មួយចំនួន ។"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "កំពុង​រំលង​ការស្រាយ​នៃប្រភព​ដែលបានស្រាយរួច​នៅក្នុង %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "ពាក្យ​បញ្ជា​ស្រាយ '%s' បាន​បរាជáŸáž™â€‹Â áŸ”\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "áž–áž·áž“áž·ážáŸ’យ​ប្រសិន​បើកញ្ចប់ 'dpkg-dev' មិន​ទាន់​បាន​ដំឡើង​ ។\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "សាងសង​ពាក្យ​បញ្ជា​ '%s' បានបរាជáŸáž™â€‹Â áŸ”\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "មិន​អាច​សាងសង់​​ពáŸážáŸŒáž˜áž¶áž“​ភាពអស្រáŸáž™â€‹ážŸáž˜áŸ’រាប់ %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s មិនមានភាពអាស្រáŸáž™â€‹ážŸáŸ’ážáž¶áž”នាឡើយ​ ។\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr "ážáŸ’រូវážáŸ‚​បញ្ជាក់​យ៉ាងហោចណាស់​មួយកញ្ចប់ដើម្បីពិនិážáŸ’áž™ builddeps សម្រាប់"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "បាន​បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​ដំណើរ​​ការ​បង្កើážâ€‹áž—ាព​អាស្រáŸáž™"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "បាន​បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​ដំណើរ​​ការ​បង្កើážâ€‹áž—ាព​អាស្រáŸáž™"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​ប្ážáž¼ážšâ€‹ážˆáŸ’មោះ %s ទៅ %s"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "កញ្ចប់ %s កំណែ %s មាន​ភាព​អាស្រáŸáž™â€‹áž˜áž·áž“​ážáŸ’រូវ​គ្នា ៖\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "ពាក្យ​បញ្ជា​ដែលធ្វើ​ឲ្យ​ទាន់​សមáŸáž™â€‹áž‚្មាន​អាគុយម៉ង់​ទáŸ"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "ពាក្យ​បញ្ជា​ដែលធ្វើ​ឲ្យ​ទាន់​សមáŸáž™â€‹áž‚្មាន​អាគុយម៉ង់​ទáŸ"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "ឈ្មោះ​កញ្ចប់​សរុប ៖ "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total package structures: "
+msgstr "ឈ្មោះ​កញ្ចប់​សរុប ៖ "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " កញ្ចប់​ធម្មážáž¶Â áŸ– "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " កញ្ចប់​និម្មិážâ€‹ážŸáž»áž‘្ធ ៖ "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " កញ្ចប់​និម្មិážâ€‹ážáŸ‚​មួយ ៖ "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " កញ្ចប់​និម្មិážâ€‹áž›áž¶áž™Â áŸ– "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " បាážáŸ‹áž”ង់ ៖ "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "កំណែ​ផ្សáŸáž„ៗ​សរុប ៖ "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total distinct descriptions: "
+msgstr "កំណែ​ផ្សáŸáž„ៗ​សរុប ៖ "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "ភាព​អាស្រáŸáž™â€‹ážŸážšáž»áž” ៖ "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "ទំនាក់ទំនង កំណែ/ឯកសារ​សរុប ៖ "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total Desc/File relations: "
+msgstr "ទំនាក់ទំនង កំណែ/ឯកសារ​សរុប ៖ "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "ការផ្គូរផ្គង​ការផ្ដល់​សរុប ៖ "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "ážáŸ’សែ​អក្សរ​សរុប​ ៖ "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "ទំហំ slack សរុប ៖"
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "ទំហំ​សរុប​ដែល​ទុក​សម្រាប់ ៖ "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "បង្ហាញ​កំណážáŸ‹â€‹ážáŸ’រា​ប្រភព"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "ស្វែងរក​កញ្ចប់​​លំនាំ regex "
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "បង្ហាញពáŸážáŸŒáž˜áž¶áž“​​ភាពអាស្រáŸáž™â€‹áž€áž‰áŸ’ចប់​មិន​ទាន់​ច្នៃ"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "បង្ហាញ​ពáŸážáŸŒáž˜áž¶áž“​ភាពអាស្រáŸáž™â€‹áž€áž‰áŸ’ចប់​បញ្ច្រាស់​"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "បង្ហាញ​កំណážáŸ‹â€‹ážáŸ’រា​កញ្ចប់​ដែល​អាច​អាន​បាន"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "រាយ​ឈ្មោះ​កញ្ចប់​ទាំងអស់​"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "បង្ហាញ ការរៀបចំ​គោលការណáŸâ€‹"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "សូម​ផ្ដល់​ឈ្មោះ​ឲ្យ​ážáž¶ážŸâ€‹áž“áŸáŸ‡ ឧទាហរណáŸâ€‹ážŠáž¼áž…ជា 'ដáŸáž”ៀន 2.1r1 ážáž¶ážŸâ€‹áž‘ី ១' ជាដើម"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "សូម​បញ្ចូល​ážáž¶ážŸâ€‹áž€áŸ’នុង​ដ្រាយ​ហើយ​ចុច​បញ្ចូល​"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​ប្ážáž¼ážšâ€‹ážˆáŸ’មោះ %s ទៅ %s"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "ធ្វើដំណើរការ​នáŸáŸ‡â€‹áž˜áŸ’ážáž„​ទៀážâ€‹ សម្រាប់​ស៊ីឌី​ទាំងអស់​​ក្នុង​សំណុំ​របស់​អ្នក ។"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "​អាគុយម៉ង់​មិន​មាន​គូ​ទáŸ"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"ការ​ប្រើប្រាស់ ៖ ពាក្យ​បញ្ជា​ apt-config [ជម្រើស] \n"
+"\n"
+"apt-config ជា​ឧបករណáŸâ€‹ážŸáž¶áž˜áž‰áŸ’ញ​សម្រាប់​អាន​ឯកសារ​កំណážáŸ‹ážšáž…នាសម្ពáŸáž“្ធ​ APT \n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"ការ​ប្រើប្រាស់​ ៖ apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates ជាឧបករណáŸážŠáž¾áž˜áŸ’បី​ស្រង់​ពáŸážáŸŒáž˜áž¶áž“​ការ​រចនាសម្ពáŸáž“្ធ​​និង​ពុម្ព​\n"
+"ពី​កញ្ចប់​​ដáŸáž”ៀន \n"
+"\n"
+"ជម្រើស ៖ ​\n"
+" -h អážáŸ’ážáž”ទ​ជំនួយ​\n"
+" -t កំណážáŸ‹â€‹ážážâ€‹áž”ណ្ដោះ​អាសន្ន\n"
+" -c=? អាន​ឯកសារ​ការ​កំណážáŸ‹â€‹ážšáž…នាស្ពáŸáž“្ធ​នáŸáŸ‡\n"
+" -o=? កំណážáŸ‹â€‹áž‡áž˜áŸ’រើស​ការ​កំណážáŸ‹â€‹ážšáž…នា​សម្ពáŸáž“្ធ​ážáž¶áž˜â€‹áž…áž·ážáŸ’ហឧ. eg -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "មិន​អាច​ទទួល​យក​កំណែ​ debconf  ។ ážáž¾â€‹ debconf បានដំឡើង​ឬ ?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "មិន​អាច​រក​កញ្ចប់ %s បានទáŸ"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "ប៉ុន្ážáŸ‚​ %s នឹង​ážáŸ’រូវ​បាន​ដំឡើ​ង"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "កំហុស​ážáž¶áž„ក្នុង អ្នក​ដោះស្រាយ​បញ្ហា​បានធ្វើឲ្យážáž¼áž…​ឧបករណáŸ"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "ម៉ូឌុល​ដែល​គាំទ្រ ៖ "
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"របៀបប្រើ ៖ ពាក្យបញ្ជា apt-get [options]\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] ប្រភព pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get គឺជា​ចំណុចប្រទាក់​បន្ទាážáŸ‹â€‹áž–ាក្យបញ្ជា​សាមញ្ញ​មួយ សម្រាប់​ធ្វើការទាញយក áž“áž·áž„\n"
+"ដំឡើង​កញ្ចប់ ។ ជាញឹកញាប់​បំផុហគឺប្រើ​ពាក្យបញ្ជា​ដើម្បី​ធ្វើឲ្យទាន់សមáŸáž™â€‹\n"
+"និង ដំឡើង ។\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "ទៅយក​បញ្ជី​កញ្ចប់​ážáŸ’មី"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "ធ្វើឲ្យប្រសើរ"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "ដំឡើង​កញ្ចប់​ážáŸ’មី (pkg គឺ libc6 មិនមែន libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "យក​កញ្ចប់​ចáŸáž‰"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr ""
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+#, fuzzy
+msgid "Remove automatically all unused packages"
+msgstr "ប៉ុន្ážáŸ‚​ %s នឹង​ážáŸ’រូវ​បាន​ដំឡើ​ង"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "ការចែកចាយ​ភាពល្អប្រសើរ សូមមើល apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "ដាក់ពីក្រោយ​ជម្រើស dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "កំណážáŸ‹â€‹ážšáž…នា​សម្ពáŸáž“្ធ​ភាពអាស្រáŸáž™â€‹áž€áŸ’នុងការស្ážáž¶áž”នា​សម្រាប់​កញ្ចប់​ប្រភព"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "លុប​ឯកសារបáŸážŽáŸ’ណសារ​ដែលបានទាញ​យក"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "លុប​ឯកសារបáŸážŽáŸ’ណសារ​ដែលបានទាញយក​ចាស់"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "ផ្ទៀងផ្ទាážáŸ‹â€‹ážáž¶â€‹áž˜áž·áž“មានភាព​អាស្រáŸáž™â€‹ážŠáŸ‚ល​ážáž¼áž…áž‘áŸ"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "ទាញយក​បáŸážŽáŸ’ណសារ​ប្រភព"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "យ៉ាងហោចណាស់​ážáŸ’រូវ​​បញ្ជាក់​​កញ្ចប់​មួយ ​ដើម្បី​ទៅ​​ប្រមូល​យក​ប្រភព​សម្រាប់"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"ការ​ប្រើប្រាស់​ ៖ apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates ជាឧបករណáŸážŠáž¾áž˜áŸ’បី​ស្រង់​ពáŸážáŸŒáž˜áž¶áž“​ការ​រចនាសម្ពáŸáž“្ធ​​និង​ពុម្ព​\n"
+"ពី​កញ្ចប់​​ដáŸáž”ៀន \n"
+"\n"
+"ជម្រើស ៖ ​\n"
+" -h អážáŸ’ážáž”ទ​ជំនួយ​\n"
+" -t កំណážáŸ‹â€‹ážážâ€‹áž”ណ្ដោះ​អាសន្ន\n"
+" -c=? អាន​ឯកសារ​ការ​កំណážáŸ‹â€‹ážšáž…នាស្ពáŸáž“្ធ​នáŸáŸ‡\n"
+" -o=? កំណážáŸ‹â€‹áž‡áž˜áŸ’រើស​ការ​កំណážáŸ‹â€‹ážšáž…នា​សម្ពáŸáž“្ធ​ážáž¶áž˜â€‹áž…áž·ážáŸ’ហឧ. eg -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"ការ​ប្រើប្រាស់​ ៖ apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates ជាឧបករណáŸážŠáž¾áž˜áŸ’បី​ស្រង់​ពáŸážáŸŒáž˜áž¶áž“​ការ​រចនាសម្ពáŸáž“្ធ​​និង​ពុម្ព​\n"
+"ពី​កញ្ចប់​​ដáŸáž”ៀន \n"
+"\n"
+"ជម្រើស ៖ ​\n"
+" -h អážáŸ’ážáž”ទ​ជំនួយ​\n"
+" -t កំណážáŸ‹â€‹ážážâ€‹áž”ណ្ដោះ​អាសន្ន\n"
+" -c=? អាន​ឯកសារ​ការ​កំណážáŸ‹â€‹ážšáž…នាស្ពáŸáž“្ធ​នáŸáŸ‡\n"
+" -o=? កំណážáŸ‹â€‹áž‡áž˜áŸ’រើស​ការ​កំណážáŸ‹â€‹ážšáž…នា​សម្ពáŸáž“្ធ​ážáž¶áž˜â€‹áž…áž·ážáŸ’ហឧ. eg -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "ប៉ុន្ážáŸ‚​វា​មិន​បាន​ដំឡើង​ទáŸâ€‹"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "ប៉ុន្ážáŸ‚​ %s នឹង​ážáŸ’រូវ​បាន​ដំឡើ​ង"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "ប៉ុន្ážáŸ‚​ %s នឹង​ážáŸ’រូវ​បាន​ដំឡើ​ង"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s ជាកំណែ​ដែលážáŸ’មីបំផុážážšáž½áž…ទៅហើយ ។\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s ជាកំណែ​ដែលážáŸ’មីបំផុážážšáž½áž…ទៅហើយ ។\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "ប៉ុន្ážáŸ‚​ %s នឹង​ážáŸ’រូវ​បាន​ដំឡើ​ង"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​បើក %s"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "ប៉ុន្ážáŸ‚​ %s នឹង​ážáŸ’រូវ​បាន​ដំឡើ​ង"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "áž–áž·áž“áž·ážáŸ’យ​ប្រសិន​បើកញ្ចប់ 'dpkg-dev' មិន​ទាន់​បាន​ដំឡើង​ ។\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "ប៉ុន្ážáŸ‚​ %s នឹង​ážáŸ’រូវ​បាន​ដំឡើ​ង"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "ប៉ុន្ážáŸ‚​ %s នឹង​ážáŸ’រូវ​បាន​ដំឡើ​ង"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "មិន​ស្គាល់​កំណážáŸ‹â€‹ážáŸ’រា​កញ្ចប់ !"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "កំពុង​អាន​បញ្ជី​កញ្ចប់"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "កញ្ចប់​ដែល​បាន​ážáŸ’ទាស់ ៖"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "កញ្ចប់​ដែល​បាន​ážáž¼áž…​"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "ប៉ុន្ážáŸ‚​ %s នឹង​ážáŸ’រូវ​បាន​ដំឡើ​ង"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "បញ្ចូល​​ពáŸážáŸŒáž˜áž¶áž“​ដែលមាន​ចូល​គ្នា"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "ការ​កំណážáŸ‹â€‹áž›áŸ†áž“ាំ​ដើម​មិន​ល្អ !"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "សង្កážáŸ‹â€‹ បញ្ចូល ​ដើម្បី​បន្ážÂ áŸ”"
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr ""
+
+#: dselect/install
+#, fuzzy
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "កំហុ​ស​មួយ​ចំនួន​បាន​កើážâ€‹áž¡áž¾áž„​ážážŽáŸˆáž–áŸáž›â€‹áž–ន្លា​កញ្ចប់ ។ ážáŸ’ញុំ​នឹង​កំណážáŸ‹ážšáž…នាសម្បáŸáž“្ធ"
+
+#: dselect/install
+#, fuzzy
+msgid "will be configured. This may result in duplicate errors"
+msgstr "កញ្ចប់​ដែល​បាន​ដំឡើង​ ។ áž“áŸáŸ‡â€‹áž”្រហែល​ជា​លទ្ធផល​កំហុស​ស្ទួន​"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "ឬ​ កំហុសដែលបង្ក​ដោយ​ការ​បាážáŸ‹áž”ង់​ភាពអាស្រáŸáž™â€‹Â áŸ” ​មិន​អី​ទáŸâ€‹ គ្រាន់​ážáŸ‚​ជា​កំហុស "
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr "នៅážáž¶áž„លើ​សារ​នáŸáŸ‡â€‹áž‚ឺ​សំážáž¶áž“់​ណាស់​ ។ សូម​ជួសជុល​ពួកវា​ ហើយ​រážáŸ‹â€‹áž€áž¶ážšážŠáŸ†áž¡áž¾áž„​ម្ážáž„ទៀážâ€‹"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "បញ្ចូល​​ពáŸážáŸŒáž˜áž¶áž“​ដែលមាន​ចូល​គ្នា"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "បញ្ជី​ផ្នែក​បន្ážáŸ‚ម​កញ្ចប់​វែង​ពáŸáž€"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "​កំហុស​ដំណើរការ​ážážâ€‹ %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "បញ្ជី​ផ្នែក​បន្ážáŸ‚ម​ប្រភព​វែង​ពáŸáž€"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "កំហុស​សរសáŸážšâ€‹áž”ឋម​កážáž¶â€‹áž‘ៅ​ឯកសារ​មាážáž·áž€áž¶"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "កំហុស​ដំណើរការ​មាážáž·áž€áž¶â€‹ %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"ការប្រើប្រាស់ ៖ ពាក្យ​បញ្ជា​ apt-ftparchive [ជម្រើស] \n"
+"ពាក្យ​បញ្ជា​ ៖ កញ្ចប់ binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" ផ្លូវ​មាážáž·áž€áž¶â€‹\n"
+" ផ្លូវ​ផ្សាយ​ចáŸáž‰ \n"
+" កំណážáŸ‹â€‹ážšáž…នាស្ពáŸáž“្ធបង្កើážâ€‹ [groups]\n"
+" ​​កំណážáŸ‹â€‹ážšáž…នាសម្ពáŸáž“្ធសំអាážâ€‹â€‹\n"
+"\n"
+"apt-ftparchive បង្កើážâ€‹â€‹áž¯áž€ážŸáž¶ážšâ€‹áž›áž·áž”ិក្រម​សម្រាប់​បáŸážŽáŸ’ណសារ​​ដáŸáž”ៀន  ។ វា​គាំទ្រ​រចនាបáŸáž‘្ម​នៃ​ការបង្កើážážŠáŸ„យ​"
+"ស្វáŸáž™áž”្រវážáŸ’ážáž·â€‹\n"
+"ដើម្បី​ធ្វើការ​ជំនួស​\n"
+" dpkg-scanpackages áž“áž·áž„ dpkg-scansources\n"
+"\n"
+"apt-ftparchive ដែល​បង្កើážâ€‹â€‹â€‹â€‹áž¯áž€ážŸáž¶ážšâ€‹áž‰áŸ’ចប់​ ពី​មែកធាង​ .debs ។ ឯកសារ​កញ្ចប់មាន​\n"
+"​មាážáž·áž€áž¶â€‹áž“ៃ ážœážáŸ’ážáž»áž”ញ្ជា​​វាល​ទាំងអស់ ដែល​បាន​មក​ពី​កញ្ចប់​និមួយ​ៗដូចជា​ MD5 hash និង​ ទំហំ​ឯកសារ​ ។ ឯកសារ​"
+"បដិសáŸáž’​​មិន​គាំទ្រ​ \n"
+"ដើម្បី​បង្ážáŸ†â€‹ážáž˜áŸ’លៃ​អាទិភាព​និង សមáŸáž™â€‹Â áŸ”\n"
+"\n"
+"ភាព​ដូច​គ្នា​នៃ​ apt-ftparchive បង្កើážâ€‹áž¯áž€ážŸáž¶ážšâ€‹áž”្រភព​ពី​មែកធាង​ .dscs ។\n"
+"ជម្រើស​បដិសáŸáž’​ប្រភព​អាច​ážáŸ’រូវ​បាន​ប្រើ​សម្រាប់​បញ្ចាក់ឯកសារ​បដិសáŸáž’ src \n"
+"\n"
+" បញ្ជា​'កញ្ចប់​' និង​ 'ប្រភព' ážáŸ’រូវ​​ážáŸ‚​រážáŸ‹â€‹áž‡áž¶â€‹ root \n"
+" ។ BinaryPath ážáŸ’រូវ​ចង្អុល​​ទៅ​កាន់​មូលដ្ឋាន​ស្វែងរក​ហៅ​ážáŸ’លួនឯង​ ហើយ​ \n"
+"ឯកសារ​បដិសáŸáž’​ážáŸ’រូវមាន​ទង​បដិសáŸáž’  ។ ផ្លូវ​បរិបទ​ážáŸ’រូវ​បាន​បន្ážáŸ‚ម​​ទៅ​ក្នុង​វាល​ឈ្មោះ​​ឯកសារ​បើ​វា​មាន​  ។ "
+"ឧទាហរណáŸâ€‹ ការប្រើប្រាស់​ពី​បáŸážŽáŸ’ណសារ​ \n"
+"ដáŸáž”ៀន  ៖\n"
+" apt-ftparchive កញ្ចប់​dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"ជម្រើស​ ៖\n"
+" -h អážáŸ’ážáž”ទ​ជំនួយ​នáŸáŸ‡â€‹\n"
+" --md5 Control MD5 ការបបង្កើážâ€‹\n"
+" -s=? ឯកសារ​បដិសáŸáž’​ប្រភព​\n"
+" -q Quiet\n"
+" -d=? ជ្រើស​ជម្រើសលាក់​ទុ​ក​ទិន្ននáŸáž™â€‹\n"
+" --គ្មាន​-delink អនុញ្ញាážâ€‹ delinking របៀប​បំបាážáŸ‹â€‹áž€áŸ†áž áž»ážŸâ€‹\n"
+" --មាážáž·áž€áž¶ áž–áž·áž“áž·ážáŸ’យ​ការបង្កើážâ€‹áž¯áž€ážŸáž¶ážšâ€‹áž˜áž¶ážáž·áž€áž¶\n"
+" -c=? អាន​ឯកសារ​ការកំណážáŸ‹â€‹ážšáž…នាសម្ពáŸáž“្ធ​នáŸáŸ‡â€‹\n"
+" -o=? កំណážáŸ‹â€‹áž‡áž˜áŸ’រើស​ការ​កំណážáŸ‹â€‹ážšáž…នា​សម្ពáŸáž“្ធ​ážáž¶áž˜â€‹áž…áž·ážáŸ’áž"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "គ្មាន​ការ​ជ្រើស​​ដែល​ផ្គួផ្គង​"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "ឯកសារ​មួយ​ចំនួន​បាážáŸ‹áž”ងពី​ក្រុម​ឯកសារ​កញ្ចប់​ `%s'"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "DB បាន​ážáž¼áž…​, ឯកសារ​បាន​ប្ážáž¼ážšâ€‹ážˆáŸ’មោះ​ទៅ​ជា​ %s.old ។"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "DB ចាស់​, កំពុង​ព្យាយាម​ធ្វើ​ឲ្យ %s ប្រសើរ​ឡើង"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"ទ្រង់ទ្រាយ​មូលដ្ឋាន​ទិន្ននáŸáž™â€‹áž˜áž·áž“​ážáŸ’រឹមážáŸ’រូវ ។ ប្រសិន​បើ​អ្នក​បាន​ធ្វើ​ឲ្យ​វា​ប្រសើឡើង​ពី​កំណែ​ចាស់​របស់ apt សូម​យក​"
+"មូលដ្ឋាន​ទិន្ននáŸáž™â€‹áž…áŸáž‰ និង​បង្កើážâ€‹áž˜áž¼áž›ážŠáŸ’ឋាន​ទិន្ននáŸáž™â€‹áž¡áž¾áž„​វិញ ។"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "មិន​អាច​បើក​ឯកសារ​ DB បានទ០%s: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "បាន​បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​អាន​ážáŸ†ážŽâ€‹ %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "áž”áŸážŽáŸ’ណសារ​គ្មាន​កំណážáŸ‹â€‹ážáŸ’រា​ážáŸ’ážšáž½ážâ€‹áž–áž·áž“áž·ážáŸ’យ​ទáŸâ€‹"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "មិន​អាច​យក​ទស្សនáŸáž‘្រនិច​"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​​បម្រុង​​ទុក​សážáž·â€‹"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "មិន​ស្គាល់​ក្បួន​ដោះស្រាយ​ការបង្ហាប់​ '%s'"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "​ទិន្នផល​ដែល​បាន​បង្ហាប់​​ %s ážáŸ’រូវ​ការ​កំណážáŸ‹â€‹áž€áž¶ážšáž”ង្ហាប់​"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​បង្កើážâ€‹áž”ំពង់​ IPC សម្រាប់​ដំណើរ​ការ​រង​"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "បាន​បរាជáŸáž™â€‹áž€áŸ’នុងការ​ដាក់ជា​ពីរផ្នែក​"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "បង្ហាប់កូន"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "កំហុស​ážáž¶áž„ក្នុង​ បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​បង្កើážâ€‹ %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "IO សម្រាប់​ដំណើរការ​រង​/ឯកសារ​ បាន​បរាជáŸáž™â€‹"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "បាន​បរាជáŸáž™â€‹áž€áŸ’នុង​ការអាន​ នៅពáŸáž›â€‹áž‚ណនា MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "មិន​អាចបើក​ %s បានឡើយ"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Malformed បដិសáŸáž’ %s បន្ទាážáŸ‹ %lu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "បាន​បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​អានឯកសារ​បដិសáŸáž’ %s"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Malformed បដិសáŸáž’ %s បន្ទាážáŸ‹ %lu #1"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Malformed បដិសáŸáž’ %s បន្ទាážáŸ‹â€‹ %lu #2"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Malformed បដិសáŸáž’ %s បន្ទាážáŸ‹â€‹ %lu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "W: មិន​អាច​អាន​ážáž %s បាន​ឡើយ\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "W ៖ មិន​អាច​ážáŸ’លែង %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "W: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: កំហុស​អនុវážáŸ’ážâ€‹áž›áž¾â€‹áž¯áž€ážŸáž¶ážšâ€‹"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​ដោះស្រាយ %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "មែក​ធាង បាន​បរាជáŸáž™"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​បើក %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** បាន​បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​ážâ€‹ %s ទៅ %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " DeLink កំណážáŸ‹â€‹áž“ៃ​ការ​វាយ %sB ។\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "áž”áŸážŽáŸ’ណសារ​គ្មាន​វាល​កញ្ចប់​"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s គ្មាន​ធាážáž»áž’ាážáž»áž”ញ្ចូល​​បដិសáŸáž’ឡើយ\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " អ្នក​ážáŸ‚ទាំ %s គឺ %s មិនមែន​ %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s គ្មាន​ធាážáž»â€‹áž”ដិសáŸáž’​ប្រភព\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s គ្មាន​ធាážáž»áž”​ដិសáŸáž’គោល​ពីរ​ដែរ\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "កំពុង​រង់ចាំ​បឋមកážáž¶"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "ម៉ាស៊ីន​បម្រើ​ HTTP បានផ្ញើបឋមកážáž¶áž…ម្លើយážáž”មិនážáŸ’រឹមážáŸ’រូវ"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "ជួរ​បឋមកážáž¶â€‹ážáž¼áž…​"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "ម៉ាស៊ីន​បម្រើ​ HTTP បានផ្ញើ​​បឋមកážáž¶áž”្រវែង​​​មាážáž·áž€áž¶â€‹áž˜áž·áž“ážáŸ’រឹមážáŸ’រូវ​"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "ម៉ាស៊ីន​បម្រើ​ HTTP បានផ្ញើ​បឋមកážáž¶â€‹áž‡áž½ážšâ€‹áž˜áž¶ážáž·áž€áž¶â€‹áž˜áž·áž“​ážáŸ’រឹមážáŸ’រូវ​"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "ម៉ាស៊ីន​បម្រើ HTTP áž“áŸáŸ‡áž”ាន​ážáž¼áž…​​​ជួរ​គាំទ្រ​"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "មិនស្គាល់​ទ្រង់ទ្រាយ​កាលបរិច្ឆáŸáž‘"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "ទិន្ននáŸáž™â€‹áž”ឋមកážáž¶â€‹ážáž¼áž…"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "ការážáž—្ជាប់​បាន​បរាជáŸáž™â€‹"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "កំហុស​ážáž¶áž„​ក្នុង​"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "មិន​អាច​អាន​មូលដ្ឋាន​ទិន្ននáŸáž™â€‹â€‹ážŸáŸŠáž¸ážŒáž¸ážšáŸ‰áž¼áž˜â€‹â€‹ %s បានឡើយ"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"សូម​ប្រើ​ apt-cdrom ដើម្បី​បង្កើážâ€‹ážŸáŸŠáž¸ážŒáž¸-រ៉ូម​នáŸáŸ‡â€‹ ដែលបានរៀបចំ​ážáž¶áž˜â€‹ APT​ ។ apt-get ធ្វើ​ឲ្យ​ទាន់សមáŸáž™ ​មិន​"
+"ážáŸ’រូវ​បានប្រើ​ដើម្បី​បន្ážáŸ‚ម​ស៊ីឌី-រ៉ូមážáŸ’មីឡើយ​"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "ស៊ីឌី-រ៉ូមážáž»ážŸ"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "មិនអាចអាន់ម៉ោន ស៊ីឌី​-រ៉ូម​ នៅ​​ក្នុង​ %s បានទ០វាអាចនៅážáŸ‚ប្រើបាន ។"
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "រក​ážáž¶ážŸáž˜áž·â€‹áž“​ឃើញ​ ។"
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "រកឯកសារ​មិន​ឃើញ​"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "កំពុង​ážáž—្ជាប់​ទៅ​កាន់​ %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP ៖ %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "មិន​អាច​បង្កើážâ€‹ážšáž“្ធ​សម្រាប់ %s (f=%u t=%u p=%u) បានឡើយ"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "មិនអាច​ចាប់ផ្ដើម​ការážáž—្ជាប់​​ទៅ​កាន់​ %s:%s (%s) បានឡើយ ។"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "មិន​អាច​ážáž—្ជាប់​ទៅ​កាន់​ %s:%s (%s) បានឡើយ ការ​ážáž—្ជាប់​បានអស់​ពáŸáž›â€‹"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "បាន​បរាជáŸáž™"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "មិន​អាច​ážáž—្ជាប់​ទៅកាន់​ %s:%s (%s) បានឡើយ ។"
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "កំពុង​ážáž—្ជាប់​ទៅកាន់ %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "មិន​អាច​ដោះស្រាយ​ '%s' បានឡើយ"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "ការ​ដោះស្រាយ​ភាព​បរាជáŸáž™â€‹â€‹áž”ណ្ážáŸ„ះអាសន្ន '%s'"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "ការ​ដោះស្រាយ​អ្វី​អាក្រក់ដែល​បាន​កើážâ€‹áž¡áž¾áž„​ '%s:%s' (%i)"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "ការ​ដោះស្រាយ​អ្វី​អាក្រក់ដែល​បាន​កើážâ€‹áž¡áž¾áž„​ '%s:%s' (%i)"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "មិន​អាច​ážáž—្ជាប់​ទៅកាន់​​ %s %s ៖"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "បរាជáŸáž™â€‹áž€áŸ’នុងការážáŸ’លែង"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "URI មិនážáŸ’រឹមážáŸ’រូវ​ URIS មូលដ្ឋានមិនážáŸ’រូវ​ចាប់ផ្ážáž¾áž˜â€‹áž‡áž¶áž˜áž½áž™â€‹ // ឡើយ"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "កំពុង​ចូល​"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "មិន​អាច​កំណážáŸ‹ážˆáŸ’មោះដែលážáŸ’រូវបង្ហាញ​បានឡើយ​"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "មិន​អាច​កំណážáŸ‹ážˆáŸ’មោះមូលដ្ឋាន​បានឡើយ"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "ម៉ាស៊ីន​បម្រើបានបដិសáŸáž’​ការážáž—្ជាប់ ហើយ​ បាននិយាយ ៖ %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER បរាជáŸáž™â€‹ ម៉ាស៊ីន​បម្រើបាន​​និយាយ ៖ %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS បានបរាជáŸáž™â€‹ ម៉ាស៊ីន​បម្រើបាន​​និយាយ ៖ %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"ម៉ាស៊ីន​បម្រើ​ប្រូកស៊ី​ážáŸ’រូវ​បាន​បញ្ជាក់​ ប៉ុន្ážáŸ‚​គ្មាន​ស្គ្រីប​ចូល​ទ០Acquire::ftp::ProxyLogin គឺ áž‘áž‘áŸÂ áŸ”"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "ពាក្យ​បញ្ជា​ស្គ្រីប​ចូល​ '%s' បានបរាជáŸáž™ ម៉ាស៊ីន​បម្រើ​បាននិយាយ ៖ %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE បានបរាជáŸáž™â€‹ ម៉ាស៊ីន​បម្រើ​បាននិយាយ​ ៖ %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "អស់ពáŸáž›â€‹áž€áŸ’នុងការážáž—្ជាប់​"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "ម៉ាស៊ីន​បម្រើ​បាន​បិទ​ការážáž—្ជាប់​"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "ឆ្លើយážáž”​សážáž·â€‹áž”ណ្ážáŸ„ះអាសន្ន​​អស់ចំណុះ ។"
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "ការបង្ážáž¼áž…​ពិធីការ​"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "មិន​អាច​បង្កើážâ€‹ážšáž“្ធបានឡើយ"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "មិន​អាច​ážáž—្ជាប់​​រន្ធទិន្ននáŸáž™â€‹áž”ានឡើយ អស់​ពáŸáž›â€‹áž€áŸ’នុងការážáž—្ជាប់​"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "មិនអាចážáž—្ជាប់​​រន្ធអកម្ម​​បានឡើយ ។"
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo មិន​អាច​​ទទួល​យក​រន្ធ​សម្រាប់​ស្ážáž¶áž”់​​បានឡើយ"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "មិន​អាច​ចងរន្ធ​បានបានឡើយ​"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "មិនអាច​ស្ដាប់នៅលើរន្ធ​បានឡើយ"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "មិន​អាច​កំណážáŸ‹â€‹ážˆáŸ’មោះរបស់​រន្ធ​បានឡើយ"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "មិនអាច​ផ្ញើពាក្យ​បញ្ជា​ PORT បានឡើយ"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "មិន​ស្គាល់​អាសយដ្ឋាន​គ្រួសារ​ %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT បរាជáŸáž™â€‹ ម៉ាស៊ីន​បម្រើ​បាន​និយាយ ៖ %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "ការážáž—្ជាប់​រន្ធ​​ទិន្ននáŸáž”ានអស់ពáŸáž›â€‹"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "មិនអាច​ទទួលយក​ការážáž—្ជាប់​បានឡើយ"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "បញ្ហា​ធ្វើឲ្យážáž¼áž…​ឯកសារ"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "មិន​អាច​ទៅ​ប្រមូល​យក​ឯកសារ​បានឡើយ ម៉ាស៊ីន​បម្រើ​បាន​និយាយ​ '%s'"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "រន្ធ​ទិន្ននáŸáž™â€‹áž”ាន​អស់​ពáŸáž›â€‹"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "បរាជáŸáž™áž€áŸ’នុងការ​ផ្ទáŸážšâ€‹áž‘ិន្ននáŸáž™ ម៉ាស៊ីន​បម្រើ​បាន​និយាយ​ '%s'"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "សំណួរ​"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "មិន​អាច​ហៅ​ "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "​បានជួប​ប្រទះ​​​​ហážáŸ’ážáž›áŸážáž¶â€‹áž™áŸ‰áž¶áž„ហោចណាស់មួយ ដែ​លážáŸ’រឹមážáŸ’រូវ​ ។"
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr "កំហុស​ážáž¶áž„ក្នុង​ ៖ áž ážáŸ’ážáž›áŸážáž¶â€‹â€‹áž›áŸ’អ ប៉ុន្ážáŸ‚ ​មិន​អាច​កំណážáŸ‹â€‹áž€áž¼áž“សោ​ស្នាម​ម្រាមដៃ ?!"
+
+#: methods/gpgv.cc
+#, fuzzy
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr "មិន​អាច​ប្រážáž·áž”ážáŸ’ážáž· '%s' ដើម្បី​ផ្ទៀងផ្ទាážáŸ‹â€‹áž ážáŸ’ážáž›áŸážáž¶ (ážáž¾ gnupg ážáŸ’រូវ​បាន​ដំឡើង​ឬនៅ ?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "មិនស្គាល់កំហុស ក្នុងការប្រážáž·áž”ážáŸ’ážáž· apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "áž ážáŸ’ážáž›áŸážáž¶â€‹ážáž¶áž„​ក្រោម​មិន​ážáŸ’រឹមážáŸ’រូវ ៖\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr "áž ážáŸ’ážáž›áŸážáž¶â€‹ážáž¶áž„ក្រោម​មិន​អាចផ្ទៀងផ្ទាážáŸ‹áž”ាន​ទáŸâ€‹ ព្រោះកូនសោ​សាធារណៈមិន​អាច​ប្រើ​បាន​ ៖\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "កំហុសក្នុងការ​សរសáŸážšâ€‹áž‘ៅកាន់​ឯកសារ"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "កំហុស​ក្នុងការ​អាន​ពី​ម៉ាស៊ីនបម្រើ ។ ការបញ្ចប់​ពីចម្ងាយ​បានបិទការážáž—្ជាប់"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "កំហុស​ក្នុងការអាន​ពី​ម៉ាស៊ីន​បម្រើ"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "កំហុស​ក្នុងការ​សរសáŸážšáž‘ៅកាន់​ឯកសារ"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "ជ្រើស​បាន​បរាជáŸáž™â€‹"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "ការážáž—្ជាប់​បាន​អស់ពáŸáž›â€‹"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "កំហុស​ក្នុងការ​សរសáŸážšáž‘ៅកាន់​ឯកសារលទ្ធផល"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "មិន​អាច​បើក​ឯកសារ​ %s បានឡើយ"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "មិន​អាច​បើក​ឯកសារ​ %s បានឡើយ"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr ""
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "បរាជáŸáž™áž€áŸ’នុងការកំណážáŸ‹â€‹áž–áŸáž›ážœáŸáž›áž¶â€‹áž€áž¶ážšáž€áŸ‚ប្រែ​"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "បាន​បិទ​ការ​ážáž—្ជាប់​មុន​ពáŸáž›"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "ភាព​អាស្រáŸáž™â€‹ážŠáŸ‚ល​ážáž»ážŸâ€‹áž‚្នា ។ ព្យាយាម​ការ​ប្រើ --fix-broken ។"
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr "អ្នក​ប្រហែល​ជា​ចង់​រážáŸ‹ 'apt --fix-broken install' ដើម្បី​កែ​ពួក​វា​ទាំង​នáŸáŸ‡Â áŸ–"
+
+#~ msgid "(not found)"
+#~ msgstr "(រក​មិន​ឃើញ)"
+
+#~ msgid " Package pin: "
+#~ msgstr " ážáŸ’ទាស់​កញ្ចប់ ៖ "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "គ្មាន​កូនសោ​សាធារណៈ​អាច​រក​បាន​ក្នុងកូនសោ IDs ážáž¶áž„ក្រោម​នáŸáŸ‡áž‘áŸÂ áŸ–\n"
+
+#, fuzzy
+#~ msgid "Invalid 'Valid-Until' entry in Release file %s"
+#~ msgstr "បន្ទាážáŸ‹â€‹ážŠáŸ‚លមិនážáŸ’រឹមážáŸ’រូវ​នៅក្នុង​ឯកសារ​បង្វែរ ៖ %s"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "ážážâ€‹ %s ážáŸ’រូវបាន​បង្វែរ"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr "%s ភាពអស្រáŸáž™â€‹ážŸáž˜áŸ’រាប់​ %s មិន​អាច​ធ្វើ​ឲ្យ​ពáŸáž‰áž…áž·ážáŸ’ážâ€‹ ព្រោះ​រក​​ %s កញ្ចប់​មិន​ឃើញ​ "
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr "%s ភាពអស្រáŸáž™â€‹ážŸáž˜áŸ’រាប់​ %s មិន​អាច​ធ្វើ​ឲ្យ​ពáŸáž‰áž…áž·ážáŸ’ážâ€‹ ព្រោះ​រក​​ %s កញ្ចប់​មិន​ឃើញ​ "
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr "បរាជáŸáž™â€‹áž€áŸ’នុងការ​ážáž˜áŸ’រូវចិážáŸ’ážáž—ាពអាស្រáŸáž™ %s សម្រាប់ %s ៖ កញ្ចប់ %s ដែលបានដំឡើង គឺážáŸ’មីពáŸáž€"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "ភាពអាស្រáŸáž™ %s សម្រាប់ %s មិនអាច​ážáž˜áŸ’រូវចិážáŸ’ážáž”ានទ០ព្រោះ មិនមាន​កំណែ​នៃកញ្ចប់ %s ដែលអាច​"
+#~ "ážáž˜áŸ’រូវចិážáŸ’ážâ€‹ážáž˜áŸ’រូវការ​កំណែបានឡើយ"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr "%s ភាពអស្រáŸáž™â€‹ážŸáž˜áŸ’រាប់​ %s មិន​អាច​ធ្វើ​ឲ្យ​ពáŸáž‰áž…áž·ážáŸ’ážâ€‹ ព្រោះ​រក​​ %s កញ្ចប់​មិន​ឃើញ​ "
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "បរាជáŸáž™â€‹áž€áŸ’នុងការ​ážáž˜áŸ’រូវចិážáŸ’ážáž—ាពអាស្រáŸáž™ %s សម្រាប់ %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "ភាពអាស្រáŸáž™â€‹ážŠáŸ‚ល​បង្កើážâ€‹ %s មិន​អាច​បំពáŸáž‰â€‹ážŸáŸáž…ក្ដី​ážáŸ’រូវការ​បាន​ទáŸÂ áŸ”"
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "មានបញ្ហា​ក្នុងការ​ផ្ដាច់ážáŸ†ážŽ %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "បាន​បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​ផ្ដាច់ %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "ការ​ប្រើប្រាស់ ៖ apt-cache [options] ពាក្យ​បញ្ជា\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache គឺ​ជា​ឧបករណáŸâ€‹áž€áž˜áŸ’ážšáž·ážáž‘ាប​​ដែល​ប្រើ​សម្រាប់​រៀបចំ​ប្រពáŸáž“្ធ​គោល​ពីរ​របស់ APT\n"
+#~ "ឯកសារ​ឃ្លាំង​សម្ងាážáŸ‹ áž“áž·áž„ ​ពáŸážáŸŒáž˜áž¶áž“​សំណួរ​ពី​ពួក​វា\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "ជម្រើស​ ៖\n"
+#~ " -h áž“áŸáŸ‡â€‹áž‡áž¶â€‹áž¢ážáŸ’ážáž‡áŸ†áž“ួយ​\n"
+#~ " -p=? ឃ្លាំងសម្ងាážáŸ‹â€‹áž€áž‰áŸ’ចប់​ ។\n"
+#~ " -s=? ឃ្លាំងសម្ងាážáŸ‹â€‹áž”្រភព ។\n"
+#~ " -q ទ្រនិច​ចង្អុល​វឌ្ážáž“ភាព មិន​អនុញ្ញាážâ€‹Â áŸ”\n"
+#~ " -i បាន​ážáŸ‚​បង្ហាញ áž–áŸážáŸŒáž˜áž¶áž“​ deps ដែល​សំážáž¶áž“់​សម្រាប់ពាក្យ​បញ្ជាដែល​ážáž»ážŸâ€‹áž‚្នា  ​​​។\n"
+#~ " -c=? អាន​ការកំណážáŸ‹â€‹ážšáž…នាសម្ពáŸáž“្ធ​ឯកសារ​នáŸáŸ‡ \n"
+#~ " -o=? កំណážáŸ‹â€‹áž‡áž˜áŸ’រើស​ការ​កំណážáŸ‹â€‹ážšáž…នា​សម្ពáŸáž“្ធ​ážáž¶áž˜â€‹áž…áž·ážáŸ’ហឧ. eg -o dir::cache=/tmp\n"
+#~ "មើល​ apt-cache(8) និង​ apt.conf(5) សម្រាប់​ពáŸážáŸŒáž˜áž¶áž“​បន្ážáŸ‚ម​​មាន​ក្នុង​ទំពáŸážšâ€‹ážŸáŸ€ážœáž—ៅដៃ​ ។\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "ជម្រើស​\n"
+#~ " -h អážáŸ’ážáž“ទ​ជំនួយ​នáŸáŸ‡â€‹\n"
+#~ " -c=? អាន​ឯកសារ​ការកំណážáŸ‹â€‹ážšáž…នាសម្ពáŸáž“្ធ​នáŸáŸ‡ \n"
+#~ " -o=? កំណážáŸ‹â€‹áž‡áž˜áŸ’រើស​ការ​កំណážáŸ‹â€‹ážšáž…នា​សម្ពáŸáž“្ធ​ážáž¶áž˜â€‹áž…áž·ážáŸ’ហឧ. -o dir::cache=/tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -d Download only - do NOT install or unpack archives\n"
+#~ " -s No-act. Perform ordering simulation\n"
+#~ " -y Assume Yes to all queries and do not prompt\n"
+#~ " -f Attempt to correct a system with broken dependencies in place\n"
+#~ " -m Attempt to continue if archives are unlocatable\n"
+#~ " -u Show a list of upgraded packages as well\n"
+#~ " -b Build the source package after fetching it\n"
+#~ " -V Show verbose version numbers\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-get(8), sources.list(5) and apt.conf(5) manual\n"
+#~ "pages for more information and options.\n"
+#~ " This APT has Super Cow Powers.\n"
+#~ msgstr ""
+#~ "ជម្រើស ៖\n"
+#~ " -h អážáŸ’ážáž”ទ​ជំនួយ​នáŸáŸ‡Â áŸ–\n"
+#~ " -q ទិន្នផល​ដែល​អាច​ចុះកំណážáŸ‹áž áŸážáž»áž”ាន - មិនមាន​ទ្រនិចបង្ហាញ​ដំណើរការឡើយ\n"
+#~ " -qq គ្មាន​លទ្ធផល​ទ០លើកលែងážáŸ‚​កំហុស\n"
+#~ " -d ទាញយកážáŸ‚ប៉ុណ្ណោះ - កុំដំឡើង​ ឬ ស្រាយ​បáŸážŽáŸ’ណសារ\n"
+#~ " -s No-act. ធ្វើការ​ក្លែង​ការរៀប​ážáž¶áž˜áž›áŸ†ážŠáž¶áž”់\n"
+#~ " -y សន្មážâ€‹ážáž¶ បាទ/ចាស ទៅគ្រប់ážáž˜áŸ’រូវការ ហើយកុំ​រំលឹក\n"
+#~ " -f ប៉ុនប៉ង​ធ្វើការបន្ážâ€‹ ប្រសិនបើ​ការពិនិážáŸ’យ​ភាពážáŸ’រឹមážáŸ’រូវ​បរាជáŸáž™\n"
+#~ " -m ប៉ុនប៉ង​ធ្វើការបន្ážâ€‹ ប្រសិនបើ​បáŸážŽáŸ’ណសារ​មិនអាច​ដាក់ទីážáž¶áŸ†áž„បាន\n"
+#~ " -u បង្ហាញ​បញ្ជី​កញ្ចប់​ដែល​បានធ្វើឲ្យប្រសើរ​ផងដែរ\n"
+#~ " -b ស្ážáž¶áž”នា​កញ្ចប់ប្រភព បន្ទាប់ពី​ទៅប្រមូលយកវា\n"
+#~ " -V បង្ហាញ​លáŸážáž€áŸ†ážŽáŸ‚​ជា​អក្សរ\n"
+#~ " -c=? អាន​ឯកសារកំណážáŸ‹â€‹ážšáž…នា​សម្ពáŸáž“្ធ​នáŸáŸ‡\n"
+#~ " -o=? កំណážáŸ‹â€‹áž‡áž˜áŸ’រើស​កំណážáŸ‹ážšáž…នាសម្ពáŸáž“្ធ​ážáž¶áž˜áž…áž·ážáŸ’ážâ€‹áž˜áž½áž™ ឧទ. -o dir::cache=/tmp\n"
+#~ "សូមមើល apt-get(8), sources.list(5) and apt.conf(5) manual\n"
+#~ "pages for more information and options.\n"
+#~ " This APT has Super Cow Powers.\n"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "ការប្រើប្រាស់ ៖ apt-sortpkgs [ជម្រើស] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs ជា​ឧបករណáŸâ€‹áž’ម្មážáž¶â€‹ážŠáž¾áž˜áŸ’បី​ážáž˜áŸ’រៀប​ឯកសារ​កញ្ចប់ ។ ជម្រើស​ -s បាន​ប្រើ​\n"
+#~ "សម្រាប់​ចង្អុល​ប្រភáŸáž‘​នៃ​​​ឯកសារ​អ្វីមួយដែល​មាន​ ។\n"
+#~ "\n"
+#~ "ជម្រើស​\n"
+#~ " -h អážáŸ’ážáž”ទ​ជំនួយ​នáŸáŸ‡â€‹\n"
+#~ " -s ប្រើ​ការ​ážáž˜áŸ’រៀប​ឯកសារ​ប្រភព\n"
+#~ " -c=? អាន​ឯកសារ​កំណážáŸ‹â€‹ážšáž…នាសម្ពáŸáž“្ធនáŸáŸ‡â€‹\n"
+#~ " -o=? កំណážáŸ‹â€‹áž‡áž˜áŸ’រើស​ការ​កំណážáŸ‹â€‹ážšáž…នា​សម្ពáŸáž“្ធ​ážáž¶áž˜â€‹áž…áž·ážáŸ’ហឧ. -o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "ដំណើរ​ការ​កូន​បាន​បរាជáŸáž™â€‹"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "យ៉ាងហោចណាស់​ážáŸ’រូវ​​បញ្ជាក់​​កញ្ចប់​មួយ ​ដើម្បី​ទៅ​​ប្រមូល​យក​ប្រភព​សម្រាប់"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "បាន​បរាជáŸáž™áž€áŸ’នុង​ការ​បង្កើážâ€‹áž”ំពង់​"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "បាន​បរាជáŸáž™áž€áŸ’នុង​ការ​ប្រážáž·áž”ážáŸ’ážáž· gzip"
+
+#, fuzzy
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s សម្រាប់ %s %s បាន​ចងក្រងនៅលើ​%s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​បង្កើážâ€‹ FILE*"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "បន្ទាážáŸ‹â€‹ Malformed %lu ក្នុង​បញ្ជី​ប្រភព​ %s (URI ញែក​)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr "បន្ទាážáŸ‹ Malformed %lu ក្នុង​បញ្ជី​ប្រភព​ %s (dist ញែក​)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "បន្ទាážáŸ‹ Malformed %lu ក្នុង​បញ្ជី​ប្រភព %s (dist)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "បន្ទាážáŸ‹ Malformed %lu ក្នុង​បញ្ជី​ប្រភព​ %s (dist ញែក​)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "បន្ទាážáŸ‹ Malformed %lu ក្នុង​បញ្ជី​ប្រភព​ %s (dist ញែក​)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr "បន្ទាážáŸ‹ Malformed %lu ក្នុង​បញ្ជី​ប្រភព​ %s (dist ញែក​)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "បន្ទាážáŸ‹ Malformed %lu ក្នុង​ញ្ជី​ប្រភព​ %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "បន្ទាážáŸ‹ Malformed %lu ក្នុង​បញ្ជី​ប្រភព %s (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "បន្ទាážáŸ‹â€‹ Malformed %lu ក្នុង​បញ្ជី​ប្រភព​ %s (URI ញែក​)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "បន្ទាážáŸ‹ Malformed %lu ក្នុង​បញ្ជី​ប្រភព​ %s (dist លែងប្រើ)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "បន្ទាážáŸ‹ Malformed %lu ក្នុង​បញ្ជី​ប្រភព​ %s (dist ញែក​)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "កញ្ចប់​ %s %s រក​មិន​ឃើញ​ážážŽáŸˆâ€‹áž–áŸáž›â€‹áž€áŸ†áž–ុង​ដំណើរការ​ភាពអាស្រáŸáž™â€‹â€‹áž¯áž€ážŸáž¶ážš"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "មិនអាចážáŸ’លែង បញ្ជី​កញ្ចប់​ប្រភពចប់​ បានឡើយ %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "ការផ្ដល់​ឯកសារ​ប្រមូលផ្ដុំ"
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "មិនអាច​ញែក​ឯកសារកញ្ចប់ %s (1) បានឡើយ"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "ប្លុក​ក្រុមហ៊ុន​លក់​ %s គ្មាន​ស្នាម​ផ្ážáž·ážâ€‹áž˜áŸ’រាម​ដៃ"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "ទំហំ​កំណែ​ភាព​អាស្រáŸáž™â€‹ážŸážšáž»áž” ៖ "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "អ្នក​ពុំ​មាន​ទំហំ​ទំនáŸážšâ€‹áž‚្រប់គ្រាន់​ទáŸâ€‹áž“ៅក្នុង​ %s ឡើយ"
+
+#~ msgid "Done"
+#~ msgstr "ធ្វើរួច​"
+
+#, fuzzy
+#~ msgid "No keyring installed in %s."
+#~ msgstr "កំពុង​បោះបង់​ការ​ដំឡើង​ ។"
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "កំហុស​ážáž¶áž„ក្នុង ការធ្វើឲ្យប្រសើរ​ទាំងអស់បានធ្វើឲ្យ​ឧបករណáŸâ€‹ážáž¼áž…"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s មិនមែន​ជា​កញ្ចប់​ DEB ážáŸ’រឹមážáŸ’រូវ​ទáŸâ€‹Â áŸ”"
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "ការប្រើប្រាស់​ចំណុចម៉ោន​ ស៊ីឌី​-រ៉ូម​ %s\n"
+#~ "កំពុង​ម៉ោន​ស៊ីឌី-រ៉ូម​\n"
+
+#, fuzzy
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr "áž“áŸáŸ‡áž‡áž¶â€‹áž”áŸážŽáŸ’ណសារ DEB មិន​ážáŸ’រឹមážáŸ’រូវ វាគ្មានសមាជិក '%s' ឬ '%s'"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5Sum មិន​ផ្គួផ្គង​"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "ážáŸ’ញុំ​មិន​អាច​រកទីážáž¶áŸ†áž„​ឯកសារ​សម្រាប់​កញ្ចប់ %s បានទáŸÂ áŸ” ​មាន​នáŸáž™â€‹ážáž¶â€‹áž¢áŸ’នក​ážáŸ’រូវការ​ជួសជុល​កញ្ចប់​នáŸáŸ‡â€‹ážŠáŸ„យ​ដៃ ។"
+
+#, fuzzy
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "កំពុង​បើ​ឯកសារ​កំណážáŸ‹ážšáž…នាសម្ពáŸáž“្ធ​ %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "បរាជáŸáž™áž€áŸ’នុងការយក %s áž…áŸáž‰"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "មិន​អាច​បង្កើážâ€‹ %s បានឡើយ"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "បរាជáŸáž™â€‹áž€áŸ’នុងការážáŸ’លែង %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr "ážážáž–áŸážáŸŒáž˜áž¶áž“​ áž“áž·áž„ ពុម្ព ážáŸ’រូវការនៅលើ​ប្រពáŸáž“្ធឯកសារ​ដូចគ្នា​"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "បរាជáŸáž™â€‹áž€áŸ’នុងការ​ផ្លាស់ប្ដូរទៅជា​ážážáž¢áŸ’នកគ្រប់គ្រង %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "កំហុស​ក្នុង​ការ ក្នុងការ​ទទួល​យក​ឈ្មោះកញ្ចប់"
+
+#~ msgid "Reading file listing"
+#~ msgstr "កំពុង​អាន​បញ្ជី​ឯកសារ"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "បរាជáŸáž™â€‹áž€áŸ’នុងការ​បើក​ឯកសារ​បញ្ជី​ '%sinfo/%s' ។ ប្រសិនបើ​អ្នក​មិន​អាច​ស្ážáž¶ážšâ€‹áž¯áž€ážŸáž¶ážšâ€‹áž“áŸáŸ‡áž”ានទ០បន្ទាប់​"
+#~ "មក​ធ្វើឲ្យវា​ទទ០ហើយ​ដំឡើង​កញ្ចប់ដែលកំណែ​ដូចគ្នា​ឡើងវិញភ្លាមៗ !"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "បរាជáŸáž™â€‹áž€áŸ’នុងការ​អាន​ឯកសារបញ្ជី​ %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "កំហុស​ážáž¶áž„ក្នុង ក្នុង​​ការ​ទទួល​យក​ážáŸ’នាំង​"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "បរាជáŸáž™â€‹áž€áŸ’នុងការ​បើក​ឯកសារបង្វែរ​ %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "ឯកសារ​បង្វែរ​បានážáž¼áž…"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "បន្ទាážáŸ‹â€‹ážŠáŸ‚លមិនážáŸ’រឹមážáŸ’រូវ​នៅក្នុង​ឯកសារ​បង្វែរ ៖ %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "កំហុស​ážáž¶áž„ក្នុង​ ក្នុង​ការបន្ážáŸ‚ម​ការបង្វែរ​"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "ឃ្លាំងសម្ងាážáŸ‹ pkg ážáŸ’រូវ​ážáŸ‚​ចាប់ផ្ážáž¾áž˜â€‹ážŠáŸ†áž¡áž¾áž„មុន"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "បរាជáŸáž™â€‹áž€áŸ’នុងការរកកញ្ចប់ ៖ បឋមកážáž¶â€‹ អុហ្វសិហ%lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "ផ្នែក​ ConfFile ážáž¼áž… នៅក្នុង​ឯកសារ​ស្ážáž¶áž“ភាព ។ អុហ្វសិážâ€‹ %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "កំហុស​ក្នុងការញែក​ MD5 ។ អុហ្វសិážâ€‹ %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "មិនអាច​ប្ដូរ​ទៅជា​ %s បានឡើយ"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "បរាជáŸáž™â€‹áž€áŸ’នុងការដាក់ទិážáž¶áŸ†áž„​ឯកសារ​ážáŸ’ážšáž½ážáž–áž·áž“áž·ážáŸ’យ​ដែលážáŸ’រឹមážáŸ’រូវ​"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "មិន​អាច​បើក​បំពុង​សម្រាប់​ %s បានឡើយ"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "អាចន​កំហុស​ពី​ដំណើរការ %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "យកបន្ទាážáŸ‹â€‹áž”ឋមកážáž¶â€‹ážáŸ‚មួយ​​ ដែលលើស %u ážáž½áž¢áž€áŸ’សរ"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Malformed បដិសáŸáž’ %s បន្ទាážáŸ‹ %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Malformed បដិសáŸáž’ %s បន្ទាážáŸ‹â€‹ %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Malformed បដិសáŸáž’ %s បន្ទាážáŸ‹â€‹ %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "កម្មវិធី​ពន្លា"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "អាន​, នៅážáŸ‚​មាន %lu ដើម្បី​អាន​ ប៉ុន្ážáŸ‚​គ្មាន​អ្វី​នៅសល់"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "សរសáŸážšâ€‹, នៅážáŸ‚មាន​ %lu ដើម្បី​សរសáŸážšâ€‹ ប៉ុន្ážáŸ‚​មិន​អាច​"
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "កំហុស​បាន​កើážâ€‹áž¡áž¾áž„​​ ážážŽáŸˆâ€‹áž–áŸáž›â€‹áž€áŸ†áž–ុង​ដំណើរការ​ %s (កញ្ចប់​ážáŸ’មី​)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "កំហុស​បាន​កើážáž¡áž¾áž„​ ážážŽáŸˆáž–áŸáž›â€‹áž€áŸ†áž–ុង​ដំណើរការ​ %s (ប្រើ​កញ្ចប់​១​)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "កំហុស​បានកើážáž¡áž¾áž„​ ážážŽáŸˆáž–áŸáž›â€‹áž€áŸ†áž–ុង​ដំណើរការ​ %s (កំណែ​​​ឯកសារ​ážáŸ’មី​១)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "កំហុស​បាន​កើážáž¡áž¾áž„​ ážážŽáŸˆáž–áŸáž›â€‹áž€áŸ†áž–ុង​ដំណើរការ​ %s (ប្រើកញ្ចប់២)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "កំហុស​បានកើážáž¡áž¾áž„​ ážážŽáŸˆáž–áŸáž›â€‹áž€áŸ†áž–ុង​ដំណើរការ​ %s (កំណែ​​​ឯកសារ​ážáŸ’មី​១)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "កំហុស​បានកើážâ€‹áž¡áž¾áž„​ ážážŽáŸˆáž–áŸáž›â€‹áž€áŸ†áž–ុង​ដំណើរការ​ %s (កំណែ១ážáŸ’មី​)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "កំហុស​បាន​កើážáž¡áž¾áž„​ ážážŽáŸˆáž–áŸáž›â€‹áž€áŸ†áž–ុង​ដំណើរការ​ %s (ប្រើកញ្ចប់​៣)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "កំហុស​បានកើážáž¡áž¾áž„​ ážážŽáŸˆáž–áŸáž›â€‹áž€áŸ†áž–ុង​ដំណើរការ​ %s (កំណែ​​​ឯកសារ​ážáŸ’មី​១)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "កំហុស​បានកើážáž¡áž¾áž„​ážážŽáŸˆáž–áŸáž›â€‹áž€áŸ†áž–ុង​ដំណើរការ​ %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "កំហុស​បានកើážáž¡áž¾áž„​ážážŽáŸˆáž–áŸáž›â€‹áž€áŸ†áž–ុង​ដំណើរការ​%s (ផ្ážáž›áŸ‹â€‹áž¯áž€ážŸáž¶ážšâ€‹áž”្រមូល​ផ្ážáž»áŸ†)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "កំហុស​ážáž¶áž„ក្នុង មិន​អាចដាក់ទីážáž¶áŸ†áž„​ឲ្យ​សមាជិក​បានឡើយ"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr "E ៖ បញ្ជី​អាគុយ​ម៉ង់​ពី​ Acquire::gpgv::Options too long ។ áž…áŸáž‰â€‹Â áŸ”"
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "កំហុស​បាន​កើážâ€‹áž¡áž¾áž„​ážážŽáŸˆâ€‹áž–áŸáž›â€‹áž€áŸ†áž–ុង​ដំណើរការ​ %s (កំណែ២​ážáŸ’មី​)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "បន្ទាážáŸ‹â€‹ Malformed %u ក្នុង​បញ្ជី​ប្រភព​ %s (áž›áŸážážŸáž˜áŸ’គាល់​ក្រុមហ៊ុន​លក់)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "មិន​អាច​ចូល​ដំណើរការ keyring ៖ '%s'"
+
+#, fuzzy
+#~ msgid "Could not patch file"
+#~ msgstr "មិន​អាច​បើក​ឯកសារ​ %s បានឡើយ"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#, fuzzy
+#~ msgid "Processing triggers for %s"
+#~ msgstr "​កំហុស​ដំណើរការ​ážážâ€‹ %s"
+
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "ចាប់​ážáž¶áŸ†áž„​ពី​អ្នក​បាន​ស្នើរ​ប្រážáž·áž”ážáŸ’ážáž·áž€áž¶ážšâ€‹ážáŸ‚មួយមក​ វាទំនង​ហាក់​ដូចជា​\n"
+#~ "កញ្ចប់ដែលមិនអាចដំឡើងបានដោយងាយ ហើយនិង​ការប្រឆាំងនឹង​របាយការណáŸâ€‹áž€áŸ†áž áž»ážŸ\n"
+#~ "កញ្ចប់​នោះ​ គួរážáŸ‚ážáŸ’រូវបានបរាជáŸáž™Â áŸ”"
+
+#, fuzzy
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "បន្ទាážáŸ‹â€‹ %d វែងពáŸáž€â€‹ (អážáž·áž”រមា %d)"
+
+#, fuzzy
+#~ msgid "Line %d too long (max %d)"
+#~ msgstr "បន្ទាážáŸ‹â€‹ %d វែងពáŸáž€â€‹ (អážáž·áž”រមា %d)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc1)"
+#~ msgstr "កំហុស​បានកើážáž¡áž¾áž„​ ážážŽáŸˆáž–áŸáž›â€‹áž€áŸ†áž–ុង​ដំណើរការ​ %s (កំណែ​​​ឯកសារ​ážáŸ’មី​១)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc2)"
+#~ msgstr "កំហុស​បានកើážáž¡áž¾áž„​ ážážŽáŸˆáž–áŸáž›â€‹áž€áŸ†áž–ុង​ដំណើរការ​ %s (កំណែ​​​ឯកសារ​ážáŸ’មី​១)"
+
+#, fuzzy
+#~ msgid "Stored label: %s \n"
+#~ msgstr "បានទុក​ស្លាក ៖ %s \n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found %i package indexes, %i source indexes, %i translation indexes and "
+#~ "%i signatures\n"
+#~ msgstr "បានរកឃើញ លិបិក្រម​កញ្ចប់ %i លិបិក្រម​ប្រភព%i áž“áž·áž„ áž ážáŸ’ážáž›áŸážáž¶ %i \n"
+
+#, fuzzy
+#~ msgid "openpty failed\n"
+#~ msgstr "ជ្រើស​បាន​បរាជáŸáž™â€‹"
diff --git a/po/ko.po b/po/ko.po
new file mode 100644
index 000000000..8ec6b0fc3
--- /dev/null
+++ b/po/ko.po
@@ -0,0 +1,4153 @@
+# Sunjae Park <darehanl@gmail.com>, 2006-2007, 2008.
+# Changwoo Ryu <cwryu@debian.org>, 2004-2005, 2008, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2010-08-30 02:31+0900\n"
+"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
+"Language-Team: Korean <debian-l10n-korean@lists.debian.org>\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "ì•„ì¹´ì´ë¸Œ ì„œëª…ì´ í‹€ë ¸ìŠµë‹ˆë‹¤"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "ì•„ì¹´ì´ë¸Œ 멤버 í—¤ë”를 ì½ëŠ”ë° ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "ì•„ì¹´ì´ë¸Œ 멤버 í—¤ë” %sì´(ê°€) 잘못ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "ì•„ì¹´ì´ë¸Œ 멤버 í—¤ë”ê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "ì•„ì¹´ì´ë¸Œ 길ì´ê°€ 너무 짧습니다"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "ì•„ì¹´ì´ë¸Œ í—¤ë”를 ì½ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "다ìŒì˜ ì¸ì¦ 기ë¡ì„ ì°¾ì„ ìˆ˜ 없습니다: %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "ì•„ì¹´ì´ë¸Œê°€ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "tar ì²´í¬ì„¬ 실패, ì•„ì¹´ì´ë¸Œê°€ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "ì•Œ 수 없는 TAR í—¤ë” íƒ€ìž… %u, 멤버 %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "올바른 DEB ì•„ì¹´ì´ë¸Œê°€ 아닙니다. '%s' 멤버가 없습니다"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "내부 오류, %s 멤버를 ì°¾ì„ ìˆ˜ 없습니다"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "control 파ì¼ì„ 파싱할 수 없습니다"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "%s 파ì¼ì„ ì“°ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "%s 파ì¼ì„ ë‹«ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "경로 %sì´(ê°€) 너무 ê¹ë‹ˆë‹¤"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "%sì„(를) ë‘ ë²ˆ ì´ìƒ 풀었습니다"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "%s 디렉터리가 전환ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "ì´ íŒ¨í‚¤ì§€ì—ì„œ ì „í™˜ëœ ëŒ€ìƒì— 쓰려고 합니다 (%s/%s)"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "전환하는 경로가 너무 ê¹ë‹ˆë‹¤"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "%sì˜ ì •ë³´ë¥¼ ì½ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "%s 파ì¼ì˜ ì´ë¦„ì„ %s(으)ë¡œ ë°”ê¾¸ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "%s 디렉터리를 디렉터리가 ì•„ë‹Œ 파ì¼ë¡œ ë®ì–´ì“°ë ¤ê³  합니다"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "í•´ì‹œ 버킷ì—ì„œ 노드를 ì°¾ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "경로가 너무 ê¹ë‹ˆë‹¤"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "ë®ì–´ 쓰는 패키지가 %s íŒ¨í‚¤ì§€ì˜ ì–´ë–¤ ë²„ì „ê³¼ë„ ë§žì§€ 않습니다"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "%s/%s 파ì¼ì€ %s íŒ¨í‚¤ì§€ì— ìžˆëŠ” 파ì¼ì„ ë®ì–´ ì”니다"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "%sì„(를) ì½ì„ 수 없습니다"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "%sì˜ ì •ë³´ë¥¼ ì½ì„ 수 없습니다"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNodeê°€ ì•„ì§ ì—°ê²°ë˜ì–´ 있는 ë…¸ë“œì— ëŒ€í•´ 호출ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "í•´ì‹œ í•­ëª©ì„ ì°¾ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "diversionì„ í• ë‹¹í•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "AddDiversionì—ì„œ 내부 오류"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "ì „í™˜ëœ íŒŒì¼ì„ ë®ì–´ 쓰려고 합니다 (%s -> %s ë° %s/%s)"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "ì „í™˜ëœ íŒŒì¼ì„ ë‘ ë²ˆ 추가합니다 (%s -> %s)"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "%s/%s 설정 파ì¼ì´ 중복ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "%s 디렉터리가 전환ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "%s 디렉터리가 전환ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "%s 디렉터리가 전환ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "%s 디렉터리가 전환ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "%s 디렉터리가 전환ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "%s 파ì¼ì— readlinkí•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "í•´ì‹œ í•©ì´ ë§žì§€ 않습니다"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "ì´ë¦„ 바꾸기가 실패했습니다. %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "í¬ê¸°ê°€ 맞지 않습니다"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "ìž˜ëª»ëœ ìž‘ì—… %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "쓰기 오류"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"디지털 서명 확ì¸ì— 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤. 저장고를 ì—…ë°ì´íŠ¸í•˜ì§€ ì•Šê³ \n"
+"ì˜ˆì „ì˜ ì¸ë±ìŠ¤ 파ì¼ì„ 사용합니다. GPG 오류: %s: %s\n"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "GPG 오류: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "ë°°í¬íŒ 충ëŒ: %s (예ìƒê°’ %s, 실제값 %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"%s íŒ¨í‚¤ì§€ì˜ íŒŒì¼ì„ ì°¾ì„ ìˆ˜ 없습니다. 수ë™ìœ¼ë¡œ ì´ íŒ¨í‚¤ì§€ë¥¼ ê³ ì³ì•¼ í•  ìˆ˜ë„ ìžˆìŠµ"
+"니다. (아키í…ì³ê°€ 빠졌기 때문입니다)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"패키지 ì¸ë±ìŠ¤ 파ì¼ì´ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤. %s íŒ¨í‚¤ì§€ì— Filename: 필드가 없습니다."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "%s(%s)ì— ì—°ê²°í•˜ëŠ” 중입니다"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "설치 방법 ë“œë¼ì´ë²„ %sì„(를) ì°¾ì„ ìˆ˜ 없습니다."
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "'dpkg-dev' 패키지가 설치ë˜ì—ˆëŠ”지를 확ì¸í•˜ì‹­ì‹œì˜¤.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "설치 방법 %sì´(ê°€) 올바르게 시작하지 않았습니다"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+"'%2$s' ë“œë¼ì´ë¸Œì— '%1$s'(으)ë¡œ í‘œê¸°ëœ ë””ìŠ¤í¬ë¥¼ 넣고 Enter를 누르십시오."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "ëª©ë¡ ë””ë ‰í„°ë¦¬ %spartialì´ ë¹ ì¡ŒìŠµë‹ˆë‹¤."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "ì•„ì¹´ì´ë¸Œ 디렉터리 %spartialì´ ë¹ ì¡ŒìŠµë‹ˆë‹¤."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "%s 디렉터리를 잠글 수 없습니다"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "ì¸ë±ìŠ¤ íŒŒì¼ íƒ€ìž… '%s' íƒ€ìž…ì€ ì§€ì›í•˜ì§€ 않습니다"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "%s 디렉토리로 ì´ë™í•  수 없습니다"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "íŒŒì¼ ë°›ì•„ì˜¤ëŠ” 중: %2$li 중 %1$li (%3$s 남았ìŒ)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "íŒŒì¼ ë°›ì•„ì˜¤ëŠ” 중: %2$li 중 %1$li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"%s 패키지를 다시 설치해야 하지만, ì´ íŒ¨í‚¤ì§€ì˜ ì•„ì¹´ì´ë¸Œë¥¼ ì°¾ì„ ìˆ˜ 없습니다."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"오류, pkgProblemResolver::Resolveê°€ ë§ê°€ì¡ŒìŠµë‹ˆë‹¤. ê³ ì • íŒ¨í‚¤ì§€ë•Œë¬¸ì— ë°œìƒí•  수"
+"ë„ ìžˆìŠµë‹ˆë‹¤."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "문제를 ë°”ë¡œìž¡ì„ ìˆ˜ 없습니다. ë§ê°€ì§„ ê³ ì • 패키지가 있습니다."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "패키지 목ë¡ì´ë‚˜ ìƒíƒœ 파ì¼ì„ 파싱할 수 없거나 ì—´ 수 없습니다."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "apt-get update를 실행하면 ì´ ë¬¸ì œë¥¼ ë°”ë¡œìž¡ì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤."
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "소스 목ë¡ì„ ì½ì„ 수 없습니다."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "ì •ê·œì‹ ì»´íŒŒì¼ ì˜¤ë¥˜ - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "%2$s íŒ¨í‚¤ì§€ì˜ '%1$s' 릴리즈를 ì°¾ì„ ìˆ˜ 없습니다"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "%2$s íŒ¨í‚¤ì§€ì˜ '%1$s' ë²„ì „ì„ ì°¾ì„ ìˆ˜ 없습니다"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "'%s' ìž‘ì—…ì„ ì°¾ì„ ìˆ˜ 없습니다"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "'%s' ì •ê·œì‹ì— 해당하는 패키지가 없습니다"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "'%s' ì •ê·œì‹ì— 해당하는 패키지가 없습니다"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "%s 패키지를 ì°¾ì„ ìˆ˜ 없습니다"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr "'%s' 패키지는 ê°€ìƒ íŒ¨í‚¤ì§€ì´ë¯€ë¡œ ë²„ì „ì„ ì„ íƒí•  수 없습니다"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr "'%s' 패키지ì—ì„œ 최신 ë²„ì „ì„ ì„ íƒí•  수 없습니다. ê°€ìƒ íŒ¨í‚¤ì§€ìž…ë‹ˆë‹¤."
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr "'%s' 패키지ì—ì„œ 후보 ë²„ì „ì„ ì„ íƒí•  수 없습니다. 후보가 없습니다."
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr "'%s' 패키지ì—ì„œ 설치한 ë²„ì „ì„ ì„ íƒí•  수 없습니다. 설치하지 않았습니다."
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"'%s' 패키지ì—ì„œ 설치한 버전ì´ë‚˜ 후보 ë²„ì „ì„ ì„ íƒí•  수 없습니다. 둘 다 아닙니"
+"다."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "소스 리스트 %2$sì˜ %1$u번 ì¤„ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "CD-ROMì„ ë§ˆìš´íŠ¸ 해제하는 중입니다...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "CD-ROM 마운트 위치 %s 사용\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "디스í¬ë¥¼ 기다리는 중입니다...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "CD-ROM 마운트하는 중입니다...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "알아보는 중입니다... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "ì €ìž¥ëœ ë ˆì´ë¸”: %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "디스í¬ì—ì„œ ìƒ‰ì¸ íŒŒì¼ì„ 찾는 중입니다...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr "패키지 ìƒ‰ì¸ %zuê°œ, 소스 ìƒ‰ì¸ %zuê°œ, 번역 ìƒ‰ì¸ %zuê°œ, 서명 %zuê°œ 발견\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"패키지 파ì¼ì´ í•˜ë‚˜ë„ ì—†ìŠµë‹ˆë‹¤. ì•„ë§ˆë„ ë°ë¹„안 디스í¬ê°€ 아니거나 아키í…처가 잘"
+"ëª»ëœ ê²ƒ 같습니다?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "ë ˆì´ë¸” 발견: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "올바른 ì´ë¦„ì´ ì•„ë‹™ë‹ˆë‹¤. 다시 ì‹œë„하십시오.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"ì´ ë””ìŠ¤í¬ëŠ” 다ìŒê³¼ 같습니다: \n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "패키지 목ë¡ì„ 복사하는 중입니다..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "새 소스 리스트를 쓰는 중입니다\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "ì´ ë””ìŠ¤í¬ì˜ 소스 리스트 í•­ëª©ì€ ë‹¤ìŒê³¼ 같습니다:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "%sì˜ ì •ë³´ë¥¼ ì½ì„ 수 없습니다."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "마운트 위치 %sì˜ ì •ë³´ë¥¼ ì½ì„ 수 없습니다"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "CD-ROMì˜ ì •ë³´ë¥¼ ì½ì„ 수 없습니다"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "명령행 옵션 '%c' ì˜µì…˜ì„ [%sì—ì„œ] ì•Œ 수 없습니다."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "명령행 옵션 '%s' ì˜µì…˜ì„ ì•Œ 수 없습니다"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "명령행 옵션 '%s' ì˜µì…˜ì€ ë¶ˆë¦¬ì–¸ì´ ì•„ë‹™ë‹ˆë‹¤"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "%s 옵션ì—는 ì¸ìˆ˜ê°€ 필요합니다."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "%s 옵션: 설정 항목 ì§€ì •ì€ =<ê°’> 형태여야 합니다."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "%s 옵션ì—는 정수 ì¸ìˆ˜ê°€ 필요합니다. '%s'ì´(ê°€) 아닙니다"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "'%s' ì˜µì…˜ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "%s 센스를 ì´í•´í•  수 없습니다. ì°¸ 아니면 거짓으로 í•´ 보십시오."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "ìž˜ëª»ëœ ìž‘ì—… %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "ì´ íƒ€ìž… 줄임ë§ì„ ì•Œ 수 없습니다: '%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "설정 íŒŒì¼ %s 파ì¼ì„ 여는 중입니다"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "문법 오류 %s:%u: ë¸”ëŸ­ì´ ì´ë¦„으로 시작하지 않습니다."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "문법 오류 %s:%u: íƒœê·¸ì˜ í˜•ì‹ì´ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "문법 오류 %s:%u: ê°’ ë’¤ì— ì“°ë ˆê¸° ë°ì´í„°ê°€ ë” ìžˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "문법 오류 %s:%u: 지시어는 맨 위 단계ì—서만 쓸 수 있습니다"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "문법 오류 %s:%u: includeê°€ 너무 ë§Žì´ ê²¹ì³ ìžˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "문법 오류 %s:%u: 여기서 includeë©ë‹ˆë‹¤"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "문법 오류 %s:%u: 지ì›í•˜ì§€ 않는 지시어 '%s'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr "문법 오류 %s:%u: clear 지시어는 ì¸ìˆ˜ë¡œ option 트리를 지정해야 합니다"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "문법 오류 %s:%u: 파ì¼ì˜ ëì— ì“°ë ˆê¸° ë°ì´í„°ê°€ ë” ìžˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "%s 파ì¼ì„ ì‚­ì œí•˜ëŠ”ë° ë¬¸ì œê°€ 있습니다"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "ì½ê¸° ì „ìš© 잠금 íŒŒì¼ %sì— ëŒ€í•´ ìž ê¸ˆì„ ì‚¬ìš©í•˜ì§€ 않습니다"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "잠금 íŒŒì¼ %s 파ì¼ì„ ì—´ 수 없습니다"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "NFSë¡œ ë§ˆìš´íŠ¸ëœ ìž ê¸ˆ íŒŒì¼ %sì— ëŒ€í•´ ìž ê¸ˆì„ ì‚¬ìš©í•˜ì§€ 않습니다"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "%s 잠금 파ì¼ì„ ì–»ì„ ìˆ˜ 없습니다"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "%s 프로세스를 기다렸지만 해당 프로세스가 없습니다"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "하위 프로세스 %s 프로세스가 세그멘테ì´ì…˜ 오류를 받았습니다."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "하위 프로세스 %s 프로세스가 %u번 시그ë„ì„ ë°›ì•˜ìŠµë‹ˆë‹¤."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "하위 프로세스 %s 프로세스가 오류 코드(%u)를 리턴했습니다"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "하위 프로세스 %s 프로세스가 예ìƒì¹˜ 못하게 ë났습니다"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "ì½ê¸° 오류"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "쓰기 오류"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "%s gzip 파ì¼ì„ ë‹«ëŠ”ë° ë¬¸ì œê°€ 있습니다"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "하위 프로세스 IPC를 ë§Œë“œëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "ë‹¤ìŒ ì••ì¶• í”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰í•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤: "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "%s 파ì¼ì„ ì—´ 수 없습니다"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "%d íŒŒì¼ ë””ìŠ¤í¬ë¦½í„°ë¥¼ ì—´ 수 없습니다"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "%luë§Œí¼ ë” ì½ì–´ì•¼ 하지만 ë” ì´ìƒ ì½ì„ ë°ì´í„°ê°€ 없습니다"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "%luë§Œí¼ ë” ì¨ì•¼ 하지만 ë” ì´ìƒ 쓸 수 없습니다"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "%s 파ì¼ì„ ë‹«ëŠ”ë° ë¬¸ì œê°€ 있습니다"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "%s 파ì¼ì„ %s(으)ë¡œ ì´ë¦„ì„ ë°”ê¾¸ëŠ”ë° ë¬¸ì œê°€ 있습니다"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "파ì¼ì„ ë™ê¸°í™”í•˜ëŠ”ë° ë¬¸ì œê°€ 있습니다"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "%sì˜ ì •ë³´ë¥¼ ì½ì„ 수 없습니다"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "%sì— ì“¸ 수 없습니다"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "빈 파ì¼ì— 메모리 매핑할 수 없습니다"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "%luë°”ì´íŠ¸ë¥¼ 메모리 매핑할 수 없습니다"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "%i íŒŒì¼ ë””ìŠ¤í¬ë¦½í„°ë¥¼ 복사할 수 없습니다"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "mmapì„ ë‹«ì„ ìˆ˜ 없습니다"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "mmapì„ ë™ê¸°í™”í•  수 없습니다"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "%luë°”ì´íŠ¸ë¥¼ 메모리 매핑할 수 없습니다"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "파ì¼ì„ ìžë¥´ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"ë™ì  mmapì´ í•œê³„ë¥¼ 벗어났습니다. APT::Cache-Startì˜ í¬ê¸°ë¥¼ 높ì´ì‹­ì‹œì˜¤. 현재 "
+"ê°’: %lu. (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr "mmap í¬ê¸°ë¥¼ 늘릴 수 없습니다. ì´ë¯¸ %lu ë°”ì´íŠ¸ í•œê³„ì— ë„달했습니다."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"mmap í¬ê¸°ë¥¼ 늘릴 수 없습니다. ìžë™ìœ¼ë¡œ 늘리는 ê¸°ëŠ¥ì„ ì‚¬ìš©ìžê°€ 금지했습니다."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... 오류!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... 완료"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... 완료"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%liì¼ %li시간 %li분 %liì´ˆ"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%li시간 %li분 %li초"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%li분 %li초"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%liì´ˆ"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "ì„ íƒí•œ %sì´(ê°€) 없습니다"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Release íŒŒì¼ %s 파ì¼ì„ 파싱할 수 없습니다"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Release íŒŒì¼ %sì— ì„¹ì…˜ì´ ì—†ìŠµë‹ˆë‹¤"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Release íŒŒì¼ %sì— Hash í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Release íŒŒì¼ %sì— '%s' í•­ëª©ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "패키지 íŒŒì¼ %s 파ì¼ì„ 파싱할 수 없습니다 (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"관리 디렉터리를 (%s) 잠글 수 없습니다. 다른 프로세스가 사용하고 있지 않습니"
+"까?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "관리 디렉터리를 (%s) 잠글 수 없습니다. 루트 사용ìžê°€ 맞습니까?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"dpkgê°€ 중단ë˜ì—ˆìŠµë‹ˆë‹¤. 수ë™ìœ¼ë¡œ '%s' ëª…ë ¹ì„ ì‹¤í–‰í•´ 문제ì ì„ 바로잡으십시오."
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "잠기지 ì•ŠìŒ"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "%s 설치하는 중입니다"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "%s 설정 중입니다"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "%s 패키지를 지우는 중입니다"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "%s 패키지를 완전히 지우는 중입니다"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "%s 사ë¼ì§ 발견했습니다"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "설치 후 트리거 %s 실행하는 중입니다"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "%s 설치"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "디렉터리 '%s' 없습니다."
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "'%s' 파ì¼ì„ ì—´ 수 없습니다"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "%s 준비 중입니다"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "%s 푸는 중입니다"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "%s 패키지를 설정할 준비하는 중입니다"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "%s 패키지를 지울 준비하는 중입니다"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "%s 지움"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "%s 패키지를 완전히 지울 준비를 하는 중입니다"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "%s 패키지를 완전히 지웠습니다"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "%sì— ì“¸ 수 없습니다"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr "보고서를 작성하지 않습니다. ì´ë¯¸ MaxReports ê°’ì— ë„달했습니다."
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "ì˜ì¡´ì„± 문제 - 설정하지 ì•Šì€ ìƒíƒœë¡œ 남겨둡니다"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"보고서를 작성하지 않습니다. 오류 ë©”ì‹œì§€ì— ë”°ë¥´ë©´ ì˜ˆì „ì˜ ì‹¤íŒ¨ ë•Œë¬¸ì— ìƒê¸´ 부수"
+"ì ì¸ 오류입니다."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"보고서를 작성하지 않습니다. 오류 ë©”ì‹œì§€ì— ë”°ë¥´ë©´ 디스í¬ê°€ ê°€ë“ ì°¼ìŠµë‹ˆë‹¤."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr "보고서를 작성하지 않습니다. 오류 ë©”ì‹œì§€ì— ë”°ë¥´ë©´ 메모리가 부족합니다."
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"보고서를 작성하지 않습니다. 오류 ë©”ì‹œì§€ì— ë”°ë¥´ë©´ 디스í¬ê°€ ê°€ë“ ì°¼ìŠµë‹ˆë‹¤."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"보고서를 작성하지 않습니다. 오류 ë©”ì‹œì§€ì— ë”°ë¥´ë©´ dpkg 입출력 오류입니다."
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "ì˜ì¡´ì„± 트리를 만드는 중입니다"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "후보 버전"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "ì˜ì¡´ì„± 만들기"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "ìƒíƒœ 정보를 ì½ëŠ” 중입니다"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "ìƒíƒœíŒŒì¼ %s ì—¬ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "ìž„ì‹œ ìƒíƒœíŒŒì¼ %s ì“°ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "레코드 %i개를 ì¼ìŠµë‹ˆë‹¤.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "레코드 %i개를 íŒŒì¼ %i개가 빠진 ìƒíƒœë¡œ ì¼ìŠµë‹ˆë‹¤.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "레코드 %i개를 íŒŒì¼ %i개가 맞지 ì•Šì€ ìƒíƒœë¡œ ì¼ìŠµë‹ˆë‹¤\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "레코드 %i개를 íŒŒì¼ %i개가 빠지고 %i개가 맞지 ì•Šì€ ìƒíƒœë¡œ ì¼ìŠµë‹ˆë‹¤\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "다ìŒì˜ ì¸ì¦ 기ë¡ì„ ì°¾ì„ ìˆ˜ 없습니다: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "다ìŒì˜ 해시가 다릅니다: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "'%s' 패키지 ì‹œìŠ¤í…œì„ ì§€ì›í•˜ì§€ 않습니다"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "올바른 패키지 시스템 íƒ€ìž…ì„ ì•Œì•„ë‚¼ 수 없습니다"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "dpkg 실행하는 중입니다"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"'%s'ì— ëŒ€í•´ 즉시 ì„¤ì •ì„ í•  수 없습니다. ìžì„¸í•œ ì„¤ëª…ì€ man 5 apt.conf 페ì´ì§€ì—"
+"ì„œ APT::Immediate-Configure í•­ëª©ì„ ë³´ì‹­ì‹œì˜¤. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "'%s' 파ì¼ì„ ì—´ 수 없습니다"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"ì´ë²ˆì— 설치할 ë•Œ 충ëŒ/ì„ ì˜ì¡´ì„±ì´ 루프가 걸렸기 ë•Œë¬¸ì— ê¼­ 필요한 %s 패키지를 "
+"ìž ê¹ ì œê±°í•´ì•¼ 합니다. ì´ íŒ¨í‚¤ì§€ë¥¼ 제거하는 ê±´ 좋지 않지만, ì •ë§ ì§€ìš°ë ¤ë©´ "
+"APT::Force-LoopBreak ì˜µì…˜ì„ ì¼œì‹­ì‹œì˜¤."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "패키지 ìºì‹œê°€ 비어 있습니다"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "패키지 ìºì‹œ 파ì¼ì´ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "패키지 ìºì‹œ 파ì¼ì´ 호환ë˜ì§€ 않는 버전입니다"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "ì´ APT는 '%s' 버전 ì‹œìŠ¤í…œì„ ì§€ì›í•˜ì§€ 않습니다"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "패키지 ìºì‹œê°€ 다른 아키í…ì³ìš©ìž…니다."
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "패키지 ìºì‹œ 파ì¼ì´ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "ì˜ì¡´"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "미리ì˜ì¡´"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "제안"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "충ëŒ"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "추천"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "대체"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "ë§ê°€ëœ¨ë¦¼"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "í–¥ìƒ"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "없앰"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "중요"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "필수"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "표준"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "별ë„"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "옵션"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "ìºì‹œì˜ 버전 ì‹œìŠ¤í…œì´ í˜¸í™˜ë˜ì§€ 않습니다"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "%s 처리 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤ (FindPkg)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "우와, ì´ APTê°€ 처리할 수 있는 패키지 ì´ë¦„ 개수를 넘어갔습니다."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "우와, ì´ APTê°€ 처리할 수 있는 버전 개수를 넘어갔습니다."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "우와, ì´ APTê°€ 처리할 수 있는 설명 개수를 넘어갔습니다."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "우와, ì´ APTê°€ 처리할 수 있는 ì˜ì¡´ì„± 개수를 넘어갔습니다."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "패키지 목ë¡ì„ ì½ëŠ” 중입니다"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "소스 ìºì‹œë¥¼ ì €ìž¥í•˜ëŠ”ë° ìž…ì¶œë ¥ 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "ì¸ë±ìŠ¤ íŒŒì¼ íƒ€ìž… '%s' íƒ€ìž…ì€ ì§€ì›í•˜ì§€ 않습니다"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "기본 설정 íŒŒì¼ %sì— ìž˜ëª»ëœ ë°ì´í„°ê°€ 있습니다. Package í—¤ë”ê°€ 없습니다"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "í•€ 타입 %sì´(ê°€) 무엇ì¸ì§€ ì´í•´í•  수 없습니다"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "í•€ì— ìš°ì„ ìˆœìœ„(í˜¹ì€ 0)를 지정하지 않았습니다"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "override %sì˜ %lu번 줄 #1ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "%s 파ì¼ì„ 여는 중입니다"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "소스 리스트 %2$sì˜ %1$u번 ì¤„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤ (타입)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "소스 ëª©ë¡ %3$sì˜ %2$u번 ì¤„ì˜ '%1$s' íƒ€ìž…ì„ ì•Œ 수 없습니다"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "소스 리스트 %2$sì˜ %1$u번 ì¤„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤ (타입)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "소스 ëª©ë¡ %3$sì˜ %2$u번 ì¤„ì˜ '%1$s' íƒ€ìž…ì„ ì•Œ 수 없습니다"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "sources.listì— '소스' URI를 ì¨ ë„£ì–´ì•¼ 합니다"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "%s 파ì¼ì„ ë°›ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤ %s"
+
+#: apt-pkg/update.cc
+#, fuzzy
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"ì¼ë¶€ ì¸ë±ìŠ¤ 파ì¼ì„ ë‹¤ìš´ë¡œë“œí•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤. 해당 파ì¼ì„ 무시하거나 과거"
+"ì˜ ë²„ì „ì„ ëŒ€ì‹  사용합니다."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "업그레ì´ë“œë¥¼ 계산하는 중입니다"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "기존:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "받기:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "무시:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "오류:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "내려받기 %së°”ì´íŠ¸, 소요시간 %s (%së°”ì´íŠ¸/ì´ˆ)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [작업중]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"미디어 바꾸기: '%2$s' ë“œë¼ì´ë¸Œì— ë‹¤ìŒ ë ˆì´ë¸”ì´ ë‹¬ë¦°\n"
+"디스í¬ë¥¼ 넣고 enter를 누르십시오\n"
+" '%1$s'\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "ì˜ì¡´ì„±ì„ 바로잡는 중입니다..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " 실패."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "ì˜ì¡´ì„±ì„ ë°”ë¡œìž¡ì„ ìˆ˜ 없습니다"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "업그레ì´ë“œ ì§‘í•©ì„ ìµœì†Œí™”í•  수 없습니다"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " 완료"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+"ì´ ìƒí™©ì„ 바로잡으려면 'apt --fix-broken install'ì„ ì‹¤í–‰í•´ì•¼ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆ"
+"다."
+
+# FIXME: specify a solution? 무슨 솔루션?
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"ì˜ì¡´ì„±ì´ 맞지 않습니다. 패키지 ì—†ì´ 'apt --fix-broken install'ì„ ì‹œë„í•´ ë³´ì‹­"
+"시오 (아니면 í•´ê²° ë°©ë²•ì„ ì§€ì •í•˜ì‹­ì‹œì˜¤)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "주ì˜, ìž‘ì—… '%2$s'ì— ëŒ€í•´ '%1$s'ì„(를) ì„ íƒí•©ë‹ˆë‹¤\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "주ì˜, ì •ê·œì‹ '%2$s'ì— ëŒ€í•´ '%1$s'ì„(를) ì„ íƒí•©ë‹ˆë‹¤\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "주ì˜, ì •ê·œì‹ '%2$s'ì— ëŒ€í•´ '%1$s'ì„(를) ì„ íƒí•©ë‹ˆë‹¤\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "%s 패키지는 다ìŒì´ 제공하는 ê°€ìƒ íŒ¨í‚¤ì§€ìž…ë‹ˆë‹¤:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [설치함]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr "[후보 버전 아님]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "설치할 패키지를 하나 분명히 지정해야 합니다."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"%s 패키지를 사용할 수 없습니다. 하지만 다른 패키지가 참조하고 있습니다.\n"
+"해당 패키지가 누ë½ë˜ì—ˆê±°ë‚˜ 지워졌다는 뜻입니다. 아니면 ë˜ ë‹¤ë¥¸ ê³³ì—ì„œ\n"
+"패키지를 받아와야 하는 ê²½ìš°ì¼ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "하지만 ë‹¤ìŒ íŒ¨í‚¤ì§€ê°€ 대체합니다:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "'%s' 패키지는 설치할 수 있는 후보가 없습니다"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "'%s' 패키지와 ê°™ì€ ê°€ìƒ íŒ¨í‚¤ì§€ëŠ” 제거할 수 없습니다\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "%s 패키지를 설치하지 않았으므로, 지우지 않습니다\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "%s 패키지를 설치하지 않았으므로, 지우지 않습니다\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "주ì˜, '%2$s' ëŒ€ì‹ ì— '%1$s' 패키지를 ì„ íƒí•©ë‹ˆë‹¤\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "ì´ APT는 Super Cow Powersë¡œ 무장했습니다."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "패키지가 없습니다"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "경고: ë‹¤ìŒ íŒ¨í‚¤ì§€ë¥¼ ì¸ì¦í•  수 없습니다!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "ì¸ì¦ 경고를 무시합니다.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "ì¸ì¦í•  수 없는 패키지가 있습니다"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "확ì¸í•˜ì§€ ì•Šê³  패키지를 설치하시겠습니까?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "문제가 ë°œìƒí–ˆê³  -y ì˜µì…˜ì´ --force-yes 옵션 ì—†ì´ ì‚¬ìš©ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "%sì˜ ì—¬ìœ  ê³µê°„ì˜ í¬ê¸°ë¥¼ 파악할 수 없습니다"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "%s ì•ˆì— ì¶©ë¶„í•œ 여유 ê³µê°„ì´ ì—†ìŠµë‹ˆë‹¤."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "다운로드 디렉터리를 잠글 수 없습니다"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"몇몇 패키지를 설치할 수 없습니다. 요청한 ìƒí™©ì´ 불가능할 ìˆ˜ë„ ìžˆê³ ,\n"
+"불안정 ë°°í¬íŒì„ 사용해서 ì¼ë¶€ 필요한 패키지를 ì•„ì§ ë§Œë“¤ì§€ 않았거나,\n"
+"ì•„ì§ Incomingì—ì„œ 나오지 ì•Šì€ ê²½ìš°ì¼ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "ì´ ìƒí™©ì„ í•´ê²°í•˜ëŠ”ë° ë‹¤ìŒ ì •ë³´ê°€ ë„ì›€ì´ ë  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "ë§ê°€ì§„ 패키지"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"ì•„ì¹´ì´ë¸Œë¥¼ ë°›ì„ ìˆ˜ 없습니다. ì•„ë§ˆë„ apt-get update를 실행해야 하거나 --fix-"
+"missing ì˜µì…˜ì„ ì¤˜ì„œ 실행해야 í•  것입니다."
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "내부 오류. ë§ê°€ì§„ 패키지ì—ì„œ InstallPackages를 호출했습니다!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "패키지를 제거해야 하지만 제거가 금지ë˜ì–´ 있습니다."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "문제가 ë°œìƒí–ˆê³  -y ì˜µì…˜ì´ --force-yes 옵션 ì—†ì´ ì‚¬ìš©ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "문제가 ë°œìƒí–ˆê³  -y ì˜µì…˜ì´ --force-yes 옵션 ì—†ì´ ì‚¬ìš©ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "내부 오류. ìˆœì„œë³€ê²½ìž‘ì—…ì´ ë나지 않았습니다"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"ì´ìƒí•˜ê²Œë„ í¬ê¸°ê°€ 서로 다릅니다. apt@packages.debian.orgë¡œ ì´ë©”ì¼ì„ 보내주십"
+"시오."
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "%së°”ì´íŠ¸/%së°”ì´íŠ¸ ì•„ì¹´ì´ë¸Œë¥¼ 받아야 합니다.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "%së°”ì´íŠ¸ ì•„ì¹´ì´ë¸Œë¥¼ 받아야 합니다.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "ì´ ìž‘ì—… 후 %së°”ì´íŠ¸ì˜ ë””ìŠ¤í¬ ê³µê°„ì„ ë” ì‚¬ìš©í•˜ê²Œ ë©ë‹ˆë‹¤.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "ì´ ìž‘ì—… 후 %së°”ì´íŠ¸ì˜ ë””ìŠ¤í¬ ê³µê°„ì´ ë¹„ì›Œì§‘ë‹ˆë‹¤.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr ""
+"사소한 작업만 가능하ë„ë¡(Trivial Only) 지정ë˜ì—ˆì§€ë§Œ ì´ ìž‘ì—…ì€ ì‚¬ì†Œí•œ ìž‘ì—…ì´ "
+"아닙니다."
+
+# ìž…ë ¥ì„ ë°›ì•„ì•¼ 한다. 한글 ìž…ë ¥ì„ ëª» í•  수 있으므로 ì›ë¬¸ 그대로 사용.
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Yes, do as I say!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"ì‹œìŠ¤í…œì— ë¬´ì–¸ê°€ í•´ê°€ ë˜ëŠ” ìž‘ì—…ì„ í•˜ë ¤ê³  합니다.\n"
+"계ì†í•˜ì‹œë ¤ë©´ ë‹¤ìŒ ë¬¸êµ¬ë¥¼ 입력하십시오: '%s'\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "중단."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "ì¼ë¶€ 파ì¼ì„ ë°›ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "다운로드를 마쳤고 다운로드 전용 모드입니다"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing 옵션과 ë™ì‹œì— 미디어 바꾸기는 현재 지ì›í•˜ì§€ 않습니다"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "빠진 패키지를 ë°”ë¡œìž¡ì„ ìˆ˜ 없습니다."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "설치를 중단합니다."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"ë‹¤ìŒ íŒ¨í‚¤ì§€ëŠ” íŒ¨í‚¤ì§€ì˜ íŒŒì¼ì„ ëª¨ë‘ ë‹¤ë¥¸ 패키지가\n"
+"ë®ì–´ì¼ê¸° ë•Œë¬¸ì— ì‚¬ë¼ì¡ŒìŠµë‹ˆë‹¤:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "주ì˜: dpkgì—ì„œ ìžë™ìœ¼ë¡œ ì˜ë„ì ìœ¼ë¡œ 수행했습니다."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "삭제를 할 수 없으므로 AutoRemover를 실행하지 못합니다"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"AutoRemoverê°€ 뭔가를 ë§ê°€ëœ¨ë¦° 것으로 보입니다. ì´ ë¬¸ì œëŠ” 실제 ì¼ì–´ë‚˜ì„œëŠ”\n"
+"안 ë©ë‹ˆë‹¤. aptì— ëŒ€í•´ 버그 보고를 하십시오."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "내부 오류, 문제 í•´ê²° í”„ë¡œê·¸ëž¨ì´ ë¬´ì–¸ê°€ë¥¼ ë§ê°€ëœ¨ë ¸ìŠµë‹ˆë‹¤"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "ë‹¤ìŒ íŒ¨í‚¤ì§€ê°€ ìžë™ìœ¼ë¡œ 설치ë˜ì—ˆì§€ë§Œ ë” ì´ìƒ 필요하지 않습니다:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "패키지 %lu개가 ìžë™ìœ¼ë¡œ 설치ë˜ì—ˆì§€ë§Œ ë” ì´ìƒ 필요하지 않습니다.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "ì´ë“¤ì„ 지우려면 '%s'를 사용하십시오."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "ë‹¤ìŒ íŒ¨í‚¤ì§€ë¥¼ ë” ì„¤ì¹˜í•  것입니다:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "제안하는 패키지:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "추천하는 패키지:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+"%s 패키지를 건너 ëœë‹ˆë‹¤. ì´ë¯¸ 설치ë˜ì–´ 있고 업그레ì´ë“œë¥¼ 하지 않습니다.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr "%s 패키지를 건너 ëœë‹ˆë‹¤. 설치ë˜ì§€ 않았고 업그레ì´ë“œë§Œ 요청합니다.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "%s 패키지를 다시 설치하는 건 불가능합니다. 다운로드할 수 없습니다.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s 패키지는 ì´ë¯¸ 최신 버전입니다.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s 패키지는 수ë™ì„¤ì¹˜ë¡œ 지정합니다.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "'%3$s' íŒ¨í‚¤ì§€ì˜ '%1$s' (%2$s) ë²„ì „ì„ ì„ íƒí•©ë‹ˆë‹¤\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "'%3$s' íŒ¨í‚¤ì§€ì˜ '%1$s' (%2$s) ë²„ì „ì„ ì„ íƒí•©ë‹ˆë‹¤\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"알림: 시험 ë™ìž‘입니다!\n"
+" 실행하려면 %sì„ ì‹¤í–‰í•  ë•Œ 루트 ê¶Œí•œì´ í•„ìš”í•©ë‹ˆë‹¤.\n"
+" ë˜ ìž ê¸ˆ ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ì§€ 않는 ìƒíƒœì´ë¯€ë¡œ, 현재 ìƒí™©ì— ì˜ì¡´í•˜ì§€\n"
+" ì•Šë„ë¡ í•˜ì‹­ì‹œì˜¤!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [설치함]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [설치함]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [설치함]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [설치함]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "하지만 %s 패키지를 설치했습니다"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "하지만 %s 패키지를 설치할 것입니다"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "하지만 설치할 수 없습니다"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "하지만 ê°€ìƒ íŒ¨í‚¤ì§€ìž…ë‹ˆë‹¤"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "하지만 %s 패키지를 설치하지 ì•Šì„ ê²ƒìž…ë‹ˆë‹¤"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "하지만 설치하지 않았습니다"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " 혹ì€"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "ë‹¤ìŒ íŒ¨í‚¤ì§€ì˜ ì˜ì¡´ì„±ì´ 맞지 않습니다:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "ë‹¤ìŒ ìƒˆ 패키지를 설치할 것입니다:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "ë‹¤ìŒ íŒ¨í‚¤ì§€ë¥¼ 지울 것입니다:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "ë‹¤ìŒ íŒ¨í‚¤ì§€ë¥¼ 과거 버전으로 유지합니다:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "ë‹¤ìŒ íŒ¨í‚¤ì§€ë¥¼ 업그레ì´ë“œí•  것입니다:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "ë‹¤ìŒ íŒ¨í‚¤ì§€ë¥¼ 다운그레ì´ë“œí•  것입니다:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "ê³ ì •ë˜ì—ˆë˜ ë‹¤ìŒ íŒ¨í‚¤ì§€ë¥¼ 바꿀 것입니다:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (%s때문ì—)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"경고: ê¼­ 필요한 ë‹¤ìŒ íŒ¨í‚¤ì§€ë¥¼ 지우게 ë©ë‹ˆë‹¤.\n"
+"무슨 ì¼ì„ 하고 있는 지 정확히 알지 못한다면 지우지 마십시오!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%luê°œ 업그레ì´ë“œ, %luê°œ 새로 설치, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu개 다시 설치, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%luê°œ 업그레ì´ë“œ, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%luê°œ 제거 ë° %luê°œ 업그레ì´ë“œ 안 함.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu개를 완전히 설치하지 못했거나 지움.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[Y/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[y/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "Y"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "최소 í•œ ê°œì˜ ê²€ìƒ‰ì–´ë¥¼ 지정해야 합니다"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "패키지 íŒŒì¼ %s 파ì¼ì´ ë™ê¸°í™”ë˜ì§€ 않았습니다."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "패키지 파ì¼:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "ìºì‹œê°€ ë™ê¸°í™”ë˜ì§€ 않았습니다. 패키지 파ì¼ì„ ìƒí˜¸ 참조할 수 없습니다"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "핀 패키지:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " 설치: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " 후보: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(ì—†ìŒ)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " 버전 í…Œì´ë¸”:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "'%s' ì •ê·œì‹ì— 해당하는 패키지가 없습니다"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "'%s' ì •ê·œì‹ì— 해당하는 패키지가 없습니다"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "'%s' ì •ê·œì‹ì— 해당하는 패키지가 없습니다"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "소스 패키지로 '%s'ì„(를) '%s' 대신 ì„ íƒí•©ë‹ˆë‹¤\n"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "'%2$s' íŒ¨í‚¤ì§€ì˜ '%1$s' ë²„ì „ì€ ì—†ìœ¼ë¯€ë¡œ 무시합니다."
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "해당ë˜ëŠ” 소스 패키지를 가져올 패키지를 최소한 하나 지정해야 합니다"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "%sì˜ ì†ŒìŠ¤ 패키지를 ì°¾ì„ ìˆ˜ 없습니다"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"알림: '%s' íŒ¨í‚¤ì§•ì€ ë‹¤ìŒ '%s' 버전 컨트롤 시스템ì—ì„œ 관리합니다:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"íŒ¨í‚¤ì§€ì˜ ìµœê·¼ (ì•„ë§ˆë„ ë¦´ë¦¬ìŠ¤ë˜ì§€ ì•Šì€) ì—…ë°ì´íŠ¸ë¥¼ 받으려면\n"
+"다ìŒê³¼ ê°™ì´ í•˜ì‹­ì‹œì˜¤:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "ì´ë¯¸ 다운로드 ë°›ì€ íŒŒì¼ '%s'ì€(는) 다시 받지 ì•Šê³  건너 ëœë‹ˆë‹¤.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "소스 ì•„ì¹´ì´ë¸Œë¥¼ %së°”ì´íŠ¸/%së°”ì´íŠ¸ 받아야 합니다.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "소스 ì•„ì¹´ì´ë¸Œë¥¼ %së°”ì´íŠ¸ 받아야 합니다.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "%s 소스를 가져옵니다\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "ì¼ë¶€ ì•„ì¹´ì´ë¸Œë¥¼ ê°€ì ¸ì˜¤ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "%sì— ì´ë¯¸ 풀려 있는 ì†ŒìŠ¤ì˜ ì••ì¶•ì„ í’€ì§€ ì•Šê³  건너 ëœë‹ˆë‹¤.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "압축 풀기 명령 '%s' 실패.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "'dpkg-dev' 패키지가 설치ë˜ì—ˆëŠ”지를 확ì¸í•˜ì‹­ì‹œì˜¤.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "빌드 명령 '%s' 실패.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "%sì˜ ë¹Œë“œ ì˜ì¡´ì„± 정보를 가져올 수 없습니다"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s íŒ¨í‚¤ì§€ì— ë¹Œë“œ ì˜ì¡´ì„±ì´ 없습니다.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr "해당ë˜ëŠ” 빌드 ì˜ì¡´ì„±ì„ 검사할 패키지를 최소한 하나 지정해야 합니다"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "빌드 ì˜ì¡´ì„±ì„ ì²˜ë¦¬í•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "빌드 ì˜ì¡´ì„±ì„ ì²˜ë¦¬í•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "%s 파ì¼ì˜ ì´ë¦„ì„ %s(으)ë¡œ ë°”ê¾¸ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "%s íŒ¨í‚¤ì§€ì˜ %s ë²„ì „ì˜ ì˜ì¡´ì„±ì´ 맞지 않습니다:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "update ëª…ë ¹ì€ ì¸ìˆ˜ë¥¼ 받지 않습니다"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "update ëª…ë ¹ì€ ì¸ìˆ˜ë¥¼ 받지 않습니다"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "ì „ì²´ 패키지 ì´ë¦„ : "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "전체 패키지 구조: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " ì¼ë°˜ 패키지: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " 순수 ê°€ìƒ íŒ¨í‚¤ì§€: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " ë‹¨ì¼ ê°€ìƒ íŒ¨í‚¤ì§€: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " 혼합 ê°€ìƒ íŒ¨í‚¤ì§€: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " ë¹ ì§: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "개별 버전 전체: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "개별 설명 전체: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "ì „ì²´ ì˜ì¡´ì„±: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "ì „ì²´ 버전/íŒŒì¼ ê´€ê³„: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "ì „ì²´ 설명/íŒŒì¼ ê´€ê³„: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "전체 제공 매핑: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "ì „ì²´ 패턴 문ìžì—´: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "전체 빈 용량: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "차지하는 전체 용량: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "소스 기ë¡ì„ 봅니다"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "ì •ê·œì‹ íŒ¨í„´ì— ë§žëŠ” 패키지 목ë¡ì„ 찾습니다"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "íŒ¨í‚¤ì§€ì— ëŒ€í•´ ì˜ì¡´ì„± 정보를 그대로 봅니다"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "íŒ¨í‚¤ì§€ì˜ ì—­ ì˜ì¡´ì„± 정보를 봅니다"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "íŒ¨í‚¤ì§€ì— ëŒ€í•´ ì½ì„ 수 있는 기ë¡ì„ 봅니다"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "ì‹œìŠ¤í…œì— ë“¤ì–´ 있는 íŒ¨í‚¤ì§€ì˜ ì´ë¦„ì„ ëª¨ë‘ ë´…ë‹ˆë‹¤"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "ì •ì±… ì„¤ì •ì„ ë´…ë‹ˆë‹¤"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "ì´ ë””ìŠ¤í¬ì˜ ì´ë¦„ì„ ì •í•˜ì‹­ì‹œì˜¤ (예: 'Debian 5.0.3 Disk 1')"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "ë“œë¼ì´ë¸Œì— 디스í¬ë¥¼ 넣고 Enter를 누르십시오"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "%s 파ì¼ì˜ ì´ë¦„ì„ %s(으)ë¡œ ë°”ê¾¸ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "현재 ê°–ê³  있는 다른 CDì—ë„ ì´ ê³¼ì •ì„ ë°˜ë³µí•˜ì‹­ì‹œì˜¤."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "ì¸ìˆ˜ê°€ ë‘ ê°œê°€ 아닙니다"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"사용법: apt-config [옵션] 명령\n"
+"\n"
+"apt-config는 APT 설정 파ì¼ì„ ì½ëŠ” 간단한 프로그램입니다\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"사용법: apt-extracttemplates 파ì¼1 [파ì¼2 ...]\n"
+"\n"
+"apt-extracttemplates는 ë°ë¹„안 패키지ì—ì„œ 설정 ë° ì„œì‹ ì •ë³´ë¥¼ 뽑아내는\n"
+"ë„구입니다\n"
+"\n"
+"옵션:\n"
+" -h ì´ ë„움ë§\n"
+" -t 임시 디렉토리 설정\n"
+" -c=? 설정 파ì¼ì„ ì½ìŠµë‹ˆë‹¤\n"
+" -o=? ìž„ì˜ì˜ ì˜µì…˜ì„ ì„¤ì •í•©ë‹ˆë‹¤. 예를 들어 -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "debconf ë²„ì „ì„ ì•Œ 수 없습니다. debconfê°€ 설치ë˜ì—ˆìŠµë‹ˆê¹Œ?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "%s 패키지를 ì°¾ì„ ìˆ˜ 없습니다"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s 패키지는 ìžë™ì„¤ì¹˜ë¡œ 지정합니다.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "내부 오류, 문제 í•´ê²° í”„ë¡œê·¸ëž¨ì´ ë¬´ì–¸ê°€ë¥¼ ë§ê°€ëœ¨ë ¸ìŠµë‹ˆë‹¤"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "지ì›í•˜ëŠ” 모듈:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"사용법: apt-get [옵션] 명령어\n"
+" apt-get [옵션] install|remove 패키지1 [패키지2 ...]\n"
+" apt-get [옵션] source 패키지1 [패키지2 ...]\n"
+"\n"
+"apt-getì€ íŒ¨í‚¤ì§€ë¥¼ 내려받고 설치하는 간단한 명령행 ì¸í„°íŽ˜ì´ìŠ¤ìž…니다.\n"
+"가장 ìžì£¼ 사용하는 ëª…ë ¹ì€ update와 install입니다.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "패키지 목ë¡ì„ 새로 가져옵니다"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "업그레ì´ë“œë¥¼ 합니다"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "새 패키지를 설치합니다 (패키지는 libc6 ì‹ìœ¼ë¡œ. libc6.deb 아님)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "패키지를 지ì›ë‹ˆë‹¤"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "패키지를 완전히 지ì›ë‹ˆë‹¤"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "사용하지 않는 패키지를 ìžë™ìœ¼ë¡œ 전부 지ì›ë‹ˆë‹¤"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "ë°°í¬íŒ 업그레ì´ë“œ, apt-get(8) 참고"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "dselectì—ì„œ ì„ íƒí•œ 걸 따릅니다"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "소스 íŒ¨í‚¤ì§€ì˜ ë¹Œë“œ ì˜ì¡´ì„±ì„ 설정합니다"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "ë‚´ë ¤ë°›ì€ ì•„ì¹´ì´ë¸Œ 파ì¼ë“¤ì„ 지ì›ë‹ˆë‹¤"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "ê³¼ê±°ì— ë‚´ë ¤ë°›ì€ ì•„ì¹´ì´ë¸Œ 파ì¼ë“¤ì„ 지ì›ë‹ˆë‹¤"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "ì˜ì¡´ì„±ì´ ë§ê°€ì§€ì§€ 않았는지 확ì¸í•©ë‹ˆë‹¤"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "소스 ì•„ì¹´ì´ë¸Œë¥¼ 다운로드합니다"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "해당ë˜ëŠ” 소스 패키지를 가져올 패키지를 최소한 하나 지정해야 합니다"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"사용법: apt-extracttemplates 파ì¼1 [파ì¼2 ...]\n"
+"\n"
+"apt-extracttemplates는 ë°ë¹„안 패키지ì—ì„œ 설정 ë° ì„œì‹ ì •ë³´ë¥¼ 뽑아내는\n"
+"ë„구입니다\n"
+"\n"
+"옵션:\n"
+" -h ì´ ë„움ë§\n"
+" -t 임시 디렉토리 설정\n"
+" -c=? 설정 파ì¼ì„ ì½ìŠµë‹ˆë‹¤\n"
+" -o=? ìž„ì˜ì˜ ì˜µì…˜ì„ ì„¤ì •í•©ë‹ˆë‹¤. 예를 들어 -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"사용법: apt-extracttemplates 파ì¼1 [파ì¼2 ...]\n"
+"\n"
+"apt-extracttemplates는 ë°ë¹„안 패키지ì—ì„œ 설정 ë° ì„œì‹ ì •ë³´ë¥¼ 뽑아내는\n"
+"ë„구입니다\n"
+"\n"
+"옵션:\n"
+" -h ì´ ë„움ë§\n"
+" -t 임시 디렉토리 설정\n"
+" -c=? 설정 파ì¼ì„ ì½ìŠµë‹ˆë‹¤\n"
+" -o=? ìž„ì˜ì˜ ì˜µì…˜ì„ ì„¤ì •í•©ë‹ˆë‹¤. 예를 들어 -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "하지만 설치하지 않았습니다"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s 패키지는 ì´ë¯¸ 수ë™ì„¤ì¹˜ë¡œ 지정ë˜ì–´ 있습니다.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s 패키지는 ì´ë¯¸ ìžë™ì„¤ì¹˜ë¡œ 지정ë˜ì–´ 있습니다.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s 패키지는 ì´ë¯¸ 최신 버전입니다.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s 패키지는 ì´ë¯¸ 최신 버전입니다.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "%s 패키지 수ë™ì„¤ì¹˜ë¡œ 지정합니다.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "%s 파ì¼ì„ ì—¬ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "%s 패키지는 수ë™ì„¤ì¹˜ë¡œ 지정합니다.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "'dpkg-dev' 패키지가 설치ë˜ì—ˆëŠ”지를 확ì¸í•˜ì‹­ì‹œì˜¤.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "%s 패키지는 수ë™ì„¤ì¹˜ë¡œ 지정합니다.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "%s 패키지 수ë™ì„¤ì¹˜ë¡œ 지정합니다.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "ì•Œ 수 없는 패키지 기ë¡!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "패키지 목ë¡ì„ ì½ëŠ” 중입니다"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "핀 패키지:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "ë§ê°€ì§„ 패키지"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "%s 패키지 수ë™ì„¤ì¹˜ë¡œ 지정합니다.\n"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "ìƒíƒœ 정보를 ì½ëŠ” 중입니다"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "기본 ì„¤ì •ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "ê³„ì† í•˜ì‹œë ¤ë©´ enter를 누르십시오."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "ì´ì „ì— ë‹¤ìš´ë¡œë“œ ë°›ì•˜ë˜ .deb 파ì¼ì„ 지우시겠습니까?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "ì••ì¶•ì„ í‘¸ëŠ”ë° ëª‡ëª‡ 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤. ì„¤ì¹˜ëœ íŒ¨í‚¤ì§€ë¥¼"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "설정합니다. ì˜¤ë¥˜ë•Œë¬¸ì— ì˜ì¡´ì„±ì„ 만족하지 못해 설정하는 과정ì—ì„œ"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"오류가 중복ë˜ì–´ 나타날 수 있습니다. 하지만 ìƒê´€ì—†ê³ , ì´ ë©”ì„¸ì§€ ìœ„ì— ë‚˜ì˜¨"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr "오류만 중요합니다. ì´ ì˜¤ë¥˜ë¥¼ 고친 다ìŒì— 설치(I)를 다시 ì‹œë„하십시오"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "ì´ìš© 가능 패키지 정보를 합칩니다"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "패키지 확장 목ë¡ì´ 너무 ê¹ë‹ˆë‹¤"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "%s 디렉터리를 ì²˜ë¦¬í•˜ëŠ”ë° ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "소스 확장 목ë¡ì´ 너무 ê¹ë‹ˆë‹¤"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "컨í…츠 파ì¼ì— í—¤ë”를 ì“°ëŠ”ë° ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "%s 컨í…츠를 ì²˜ë¦¬í•˜ëŠ”ë° ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"사용법: apt-ftparchive [옵션] 명령\n"
+"명령: packages ë°”ì´ë„ˆë¦¬ê²½ë¡œ [overrideíŒŒì¼ [경로앞부분]]\n"
+" sources 소스경로 [overrideíŒŒì¼ [경로앞부분]]\n"
+" contents 경로\n"
+" release 경로\n"
+" generate 설정 [그룹]\n"
+" clean 설정\n"
+"\n"
+"apt-ftparchive는 ë°ë¹„안 ì•„ì¹´ì´ë¸Œìš© ì¸ë±ìŠ¤ 파ì¼ì„ 만듭니다. ì´ í”„ë¡œê·¸ëž¨ì€\n"
+"여러 ì¢…ë¥˜ì˜ ì¸ë±ìŠ¤ íŒŒì¼ ë§Œë“œëŠ” ìž‘ì—…ì„ ì§€ì›í•©ë‹ˆë‹¤ -- 완전 ìžë™í™” 작업부터\n"
+"dpkg-scanpackages와 dpkg-scansourcesì˜ ê¸°ëŠ¥ì„ ëŒ€ì²´í•˜ê¸°ë„ í•©ë‹ˆë‹¤.\n"
+"\n"
+"apt-ftparchive는 .deb 파ì¼ì˜ 트리ì—서부터 Package 파ì¼ì„ 만듭니다.\n"
+"Package 파ì¼ì—는 ê° íŒ¨í‚¤ì§€ì˜ ëª¨ë“  제어 필드는 물론 MD5 해시와 파ì¼\n"
+"í¬ê¸°ë„ 들어 있습니다. override 파ì¼ì„ ì´ìš©í•´ Priority와 Sectionì˜ ê°’ì„ \n"
+"강제로 설정할 수 있습니다\n"
+"\n"
+"ì´ì™€ 비슷하게 apt-ftparchive는 .dsc 파ì¼ì˜ 트리ì—ì„œ Sources 파ì¼ì„\n"
+"만듭니다. --source-override ì˜µì…˜ì„ ì´ìš©í•´ 소스 override 파ì¼ì„\n"
+"지정할 수 있습니다.\n"
+"\n"
+"'packages'와 'sources' ëª…ë ¹ì€ í•´ë‹¹ íŠ¸ë¦¬ì˜ ë§¨ 위ì—ì„œ 실행해야 합니다.\n"
+"\"ë°”ì´ë„ˆë¦¬ê²½ë¡œ\"는 검색할 ë•Œì˜ ê¸°ì¤€ 위치를 가리키며 \"override파ì¼\"ì—는\n"
+"override í”Œëž˜ê·¸ë“¤ì„ ë‹´ê³  있습니다. \"경로앞부분\"ì€ ê° íŒŒì¼ ì´ë¦„\n"
+"í•„ë“œì˜ ì•žì— ë”í•´ 집니다. ë°ë¹„안 ì•„ì¹´ì´ë¸Œì— 있는 예를 하나 들ìžë©´:\n"
+"\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"옵션:\n"
+" -h ì´ ë„움ë§\n"
+" --md5 MD5 만들기 ìž‘ì—…ì„ ì œì–´í•©ë‹ˆë‹¤\n"
+" -s=? 소스 override 파ì¼\n"
+" -q 조용히\n"
+" -d=? ìºì‹œ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ì§ì ‘ 설정합니다\n"
+" --no-delink 디버깅 모드 지우기를 사용합니다\n"
+" --contents 컨í…츠 파ì¼ì„ 만드는 ì ì—…ì„ ì œì–´í•©ë‹ˆë‹¤\n"
+" -c=? ì´ ì„¤ì • 파ì¼ì„ ì½ìŠµë‹ˆë‹¤\n"
+" -o=? ìž„ì˜ì˜ ì˜µì…˜ì„ ì„¤ì •í•©ë‹ˆë‹¤"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "맞는 패키지가 없습니다"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "`%s' 패키지 íŒŒì¼ ê·¸ë£¹ì— ëª‡ëª‡ 파ì¼ì´ 빠졌습니다"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "DBê°€ ë§ê°€ì¡ŒìŠµë‹ˆë‹¤. íŒŒì¼ ì´ë¦„ì„ %s.oldë¡œ 바꿉니다"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "DBê°€ 오래ë˜ì—ˆìŠµë‹ˆë‹¤. %sì˜ ì—…ê·¸ë ˆì´ë“œë¥¼ ì‹œë„합니다"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"DB 형ì‹ì´ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤. APT 예전 버전ì—ì„œ 업그레ì´ë“œí–ˆë‹¤ë©´, ë°ì´í„°ë² ì´ìŠ¤ë¥¼ "
+"지우고 다시 만드십시오."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "DB 파ì¼, %s 파ì¼ì„ ì—´ 수 없습니다: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "%s 파ì¼ì— readlinkí•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "ì•„ì¹´ì´ë¸Œì— 컨트롤 기ë¡ì´ 없습니다"
+
+# FIXME: 왠 커서??
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "커서를 가져올 수 없습니다"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - 메모리를 í• ë‹¹í•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "'%s' 압축 ì•Œê³ ë¦¬ì¦˜ì„ ì•Œ 수 없습니다"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "ì••ì¶•ëœ ì¶œë ¥ë¬¼ %sì—는 압축 세트가 필요합니다"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "하위 í”„ë¡œì„¸ìŠ¤ì— ëŒ€í•œ IPC 파ì´í”„를 ë§Œë“œëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "forkí•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "압축 하위 프로세스"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "내부 오류, %s ë§Œë“œëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "하위 프로세스/파ì¼ì— ìž…ì¶œë ¥í•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "MD5를 계산하는 ë™ì•ˆ ì½ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "%s 열 수 없습니다"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "override %sì˜ %lu번 줄 #1ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "%s override 파ì¼ì„ ì½ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "override %sì˜ %lu번 줄 #1ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "override %sì˜ %lu번 줄 #2ê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "override %sì˜ %lu번 줄 #3ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "경고: %s 디렉터리를 ì½ì„ 수 없습니다\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "경고: %sì˜ ì •ë³´ë¥¼ ì½ì„ 수 없습니다\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "오류: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "경고: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "오류: ë‹¤ìŒ íŒŒì¼ì— ì ìš©í•˜ëŠ”ë° ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤: "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "%sì˜ ê²½ë¡œë¥¼ ì•Œì•„ë‚´ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "트리ì—ì„œ ì´ë™ì´ 실패했습니다"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "%s 파ì¼ì„ ì—¬ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+# FIXME: ??
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " ë§í¬ %s [%s] 없애기\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** %s 파ì¼ì„ %sì— ë§í¬í•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " DeLink 한계값 %së°”ì´íŠ¸ì— ë„달했습니다.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "ì•„ì¹´ì´ë¸Œì— 패키지 필드가 없습니다"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %sì—는 override í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " %s 관리ìžê°€ %s입니다 (%s 아님)\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %sì—는 source override í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %sì—는 binary override í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "í—¤ë”를 기다리는 중입니다"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "HTTP 서버ì—ì„œ ìž˜ëª»ëœ ì‘답 í—¤ë”를 보냈습니다"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "í—¤ë” ì¤„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "HTTP 서버ì—ì„œ ìž˜ëª»ëœ Content-Length í—¤ë”를 보냈습니다"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "HTTP 서버ì—ì„œ ìž˜ëª»ëœ Content-Range í—¤ë”를 보냈습니다"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "HTTP ì„œë²„ì— ë²”ìœ„ ì§€ì› ê¸°ëŠ¥ì´ ìž˜ëª»ë˜ì–´ 있습니다"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "ë°ì´í„° 형ì‹ì„ ì•Œ 수 없습니다"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "í—¤ë” ë°ì´í„°ê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "ì—°ê²°ì´ ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "내부 오류"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "CD-ROM ë°ì´í„°ë² ì´ìŠ¤ %sì„(를) ì½ì„ 수 없습니다"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"ì´ CD를 APTì—ì„œ ì¸ì‹í•˜ë ¤ë©´ apt-cdromì„ ì‚¬ìš©í•˜ì‹­ì‹œì˜¤. apt-get update로는 새 "
+"CD를 추가할 수 없습니다."
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "ìž˜ëª»ëœ CD"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "%s ì•ˆì˜ CD-ROMì„ ë§ˆìš´íŠ¸ 해제할 수 없습니다. 사용 ì¤‘ì¼ ê²ƒìž…ë‹ˆë‹¤."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "디스í¬ê°€ 없습니다."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "파ì¼ì´ 없습니다"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "%s(%s)ì— ì—°ê²°í•˜ëŠ” 중입니다"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "%sì— ëŒ€í•œ ì†Œì¼“ì„ ë§Œë“¤ 수 없습니다 (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "%s:%sì— ì—°ê²°ì„ ì´ˆê¸°í™”í•  수 없습니다 (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "%s:%sì— ì—°ê²°í•  수 없습니다 (%s). ì—°ê²° 제한 ì‹œê°„ì´ ì´ˆê³¼í–ˆìŠµë‹ˆë‹¤"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "실패"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "%s:%sì— ì—°ê²°í•  수 없습니다 (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "%sì— ì—°ê²°í•˜ëŠ” 중입니다"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "'%s'ì˜ ì£¼ì†Œë¥¼ 알아낼 수 없습니다"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "'%s'ì˜ ì£¼ì†Œë¥¼ ì•Œì•„ë‚´ëŠ”ë° ìž„ì‹œë¡œ 실패했습니다"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "'%s:%s'ì˜ ì£¼ì†Œë¥¼ ì•Œì•„ë‚´ëŠ”ë° ë¬´ì–¸ê°€ ì´ìƒí•œ ì¼ì´ ë°œìƒí–ˆìŠµë‹ˆë‹¤ (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "'%s:%s'ì˜ ì£¼ì†Œë¥¼ ì•Œì•„ë‚´ëŠ”ë° ë¬´ì–¸ê°€ ì´ìƒí•œ ì¼ì´ ë°œìƒí–ˆìŠµë‹ˆë‹¤ (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "%s:%sì— ì—°ê²°í•  수 없습니다:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "íŒŒì¼ ì •ë³´ë¥¼ ì½ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "URI가 틀렸습니다. 로컬 URI는 //로 시작해야 합니다."
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "로그ì¸í•˜ëŠ” 중입니다"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "ìƒëŒ€ë°©ì˜ ì´ë¦„ì„ ì•Œ 수 없습니다"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "로컬 ì´ë¦„ì„ ì•Œ 수 없습니다"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "서버ì—ì„œ 다ìŒê³¼ ê°™ì´ ì—°ê²°ì„ ê±°ë¶€í–ˆìŠµë‹ˆë‹¤: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER 실패, 서버ì—서는: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS 실패, 서버ì—서는: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"프ë¡ì‹œ 서버를 지정했지만 ë¡œê·¸ì¸ ìŠ¤í¬ë¦½íŠ¸ê°€ 없습니다. Acquire::ftp::"
+"ProxyLogin ê°’ì´ ë¹„ì–´ 있습니다."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "ë¡œê·¸ì¸ ìŠ¤í¬ë¦½íŠ¸ 명령 '%s' 실패, 서버ì—서는: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE 실패, 서버ì—서는: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "연결 시간 초과"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "서버ì—ì„œ ì—°ê²°ì„ ë‹«ì•˜ìŠµë‹ˆë‹¤"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "ì‘ë‹µì´ ë²„í¼ í¬ê¸°ë¥¼ 넘어갔습니다."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "í”„ë¡œí† ì½œì´ í‹€ë ¸ìŠµë‹ˆë‹¤"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "ì†Œì¼“ì„ ë§Œë“¤ 수 없습니다"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "ë°ì´í„° ì†Œì¼“ì„ ì—°ê²°í•  수 없습니다. ì—°ê²° ì‹œê°„ì´ ì´ˆê³¼ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "수ë™(passive) ì†Œì¼“ì„ ì—°ê²°í•  수 없습니다."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfoì—ì„œ ì†Œì¼“ì— listení•  수 없습니다"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "ì†Œì¼“ì„ bindí•  수 없습니다"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "ì†Œì¼“ì— listení•  수 없습니다"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "ì†Œì¼“ì˜ ì´ë¦„ì„ ì•Œì•„ë‚¼ 수 없습니다"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "PORT ëª…ë ¹ì„ ë³´ë‚¼ 수 없습니다"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "주소 %uì˜ ì¢…ë¥˜(AF_*)를 ì•Œ 수 없습니다"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT 실패, 서버ì—서는: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "ë°ì´í„° 소켓 ì—°ê²° 시간 초과"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "ì—°ê²°ì„ ë°›ì„ ìˆ˜ 없습니다"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "íŒŒì¼ í•´ì‹±ì— ë¬¸ì œê°€ 있습니다"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "파ì¼ì„ 가져올 수 없습니다. 서버 왈, '%s'"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "ë°ì´í„° ì†Œì¼“ì— ì œí•œ ì‹œê°„ì´ ì´ˆê³¼í–ˆìŠµë‹ˆë‹¤"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "ë°ì´í„° 전송 실패, 서버ì—서는: %s"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "질ì˜"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "다ìŒì„ 실행할 수 없습니다: "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "최소한 하나 ì´ìƒì˜ ì„œëª…ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr "내부 오류: ì„œëª…ì€ ì˜¬ë°”ë¥´ì§€ë§Œ 키 핑거프린트를 확ì¸í•  수 없습니다?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"ì„œëª…ì„ í™•ì¸í•˜ëŠ” 'apt-key' í”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰í•  수 없습니다. (gnupg를 설치했습니"
+"까?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "apt-key 실행 ë„중 ì•Œ 수 없는 오류 ë°œìƒ"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "ë‹¤ìŒ ì„œëª…ì´ ì˜¬ë°”ë¥´ì§€ 않습니다:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr "ë‹¤ìŒ ì„œëª…ë“¤ì€ ê³µê°œí‚¤ê°€ 없기 ë•Œë¬¸ì— ì¸ì¦í•  수 없습니다:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "해당 파ì¼ì— ì“°ëŠ”ë° ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "서버ì—ì„œ ì½ê³  ì—°ê²°ì„ ë‹«ëŠ”ë° ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "서버ì—ì„œ ì½ëŠ”ë° ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "파ì¼ì— ì“°ëŠ”ë° ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "select가 실패했습니다"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "ì—°ê²° ì‹œê°„ì´ ì´ˆê³¼í–ˆìŠµë‹ˆë‹¤"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "출력 파ì¼ì— ì“°ëŠ”ë° ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "'%s' 미러 파ì¼ì´ 없습니다 "
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "'%s' 미러 파ì¼ì´ 없습니다 "
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "'%s' 미러 파ì¼ì´ 없습니다 "
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[미러 사ì´íŠ¸: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "íŒŒì¼ ë³€ê²½ ì‹œê°ì„ ì„¤ì •í•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "ì—°ê²°ì´ ë„ˆë¬´ 빨리 ëŠì–´ì¡ŒìŠµë‹ˆë‹¤"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "ì˜ì¡´ì„±ì´ 맞지 않습니다. --fix-broken ì˜µì…˜ì„ ì‚¬ìš©í•´ 보십시오."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr "다ìŒì„ 바로잡으려면 'apt --fix-broken install'ì„ ì‹¤í–‰í•´ 보십시오:"
+
+#~ msgid "(not found)"
+#~ msgstr "(ì—†ìŒ)"
+
+#~ msgid " Package pin: "
+#~ msgstr " 패키지 핀: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "ë‹¤ìŒ í‚¤ IDì˜ ê³µê°œí‚¤ê°€ 없습니다:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "%s 디렉터리가 전환ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "%2$sì— ëŒ€í•œ %1$s ì˜ì¡´ì„±ì„ 만족시킬 수 없습니다. %3$s 패키지를 ì°¾ì„ ìˆ˜ 없습"
+#~ "니다"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "%2$sì— ëŒ€í•œ %1$s ì˜ì¡´ì„±ì„ 만족시킬 수 없습니다. %3$s 패키지를 ì°¾ì„ ìˆ˜ 없습"
+#~ "니다"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "%2$sì— ëŒ€í•œ %1$s ì˜ì¡´ì„±ì„ ë§Œì¡±ì‹œí‚¤ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤: 설치한 %3$s 패키지가 "
+#~ "너무 최근 버전입니다"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "%2$sì— ëŒ€í•œ %1$s ì˜ì¡´ì„±ì„ 만족시킬 수 없습니다. %3$s íŒ¨í‚¤ì§€ì˜ ì‚¬ìš© 가능한 "
+#~ "버전 중ì—서는 ì´ ë²„ì „ ìš”êµ¬ì‚¬í•­ì„ ë§Œì¡±ì‹œí‚¬ 수 없습니다"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "%2$sì— ëŒ€í•œ %1$s ì˜ì¡´ì„±ì„ 만족시킬 수 없습니다. %3$s 패키지를 ì°¾ì„ ìˆ˜ 없습"
+#~ "니다"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "%2$sì— ëŒ€í•œ %1$s ì˜ì¡´ì„±ì„ ë§Œì¡±ì‹œí‚¤ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤: %3$s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "%sì˜ ë¹Œë“œ ì˜ì¡´ì„±ì„ 만족시키지 못했습니다."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "%sì˜ ë§í¬ë¥¼ í•´ì œí•˜ëŠ”ë° ë¬¸ì œê°€ 있습니다"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "%s 파ì¼ì„ ì§€ìš°ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "사용법: apt-cache [옵션] 명령\n"
+#~ " apt-cache [옵션] show 패키지1 [패키지2 ...]\n"
+#~ "\n"
+#~ "apt-cache는 APTì˜ ë°”ì´ë„ˆë¦¬ ìºì‹œ 파ì¼ì„ 처리하고, ìºì‹œ 파ì¼ì—\n"
+#~ "정보를 질ì˜í•˜ëŠ” 저수준 ë„구입니다.\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "옵션:\n"
+#~ " -h ì´ ë„움ë§.\n"
+#~ " -p=? 패키지 ìºì‹œ.\n"
+#~ " -s=? 소스 ìºì‹œ.\n"
+#~ " -q ìƒíƒœ 표시를 하지 않습니다.\n"
+#~ " -i unmet 명령ì—ì„œ 중요한 ì˜ì¡´ì„±ë§Œ 봅니다.\n"
+#~ " -c=? 지정한 설정 파ì¼ì„ ì½ìŠµë‹ˆë‹¤.\n"
+#~ " -o=? ìž„ì˜ì˜ ì˜µì…˜ì„ ì„¤ì •í•©ë‹ˆë‹¤. 예를 들어 -o dir::cache=/tmp\n"
+#~ "좀 ë” ìžì„¸í•œ 정보는 apt-cache(8) ë° apt.conf(5) 매뉴얼 페ì´ì§€ë¥¼ ë³´ì‹­ì‹œ"
+#~ "오.\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "옵션:\n"
+#~ " -h ì´ ë„움ë§.\n"
+#~ " -c=? 해당 설정 파ì¼ì„ ì½ìŠµë‹ˆë‹¤\n"
+#~ " -o=? ìž„ì˜ì˜ ì˜µì…˜ì„ ì„¤ì •í•©ë‹ˆë‹¤. 예를 들어 -o dir::cache=/tmp\n"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "사용법: apt-sortpkgs [옵션] 파ì¼1 [파ì¼2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs는 패키지 파ì¼ì„ 정렬하는 간단한 ë„구입니다. -s ì˜µì…˜ì€ ë¬´ìŠ¨ 파"
+#~ "ì¼ì¸ì§€\n"
+#~ "알아 ë‚´ëŠ”ë° ì“°ìž…ë‹ˆë‹¤.\n"
+#~ "\n"
+#~ "옵션:\n"
+#~ " -h ì´ ë„움ë§\n"
+#~ " -s 소스 íŒŒì¼ ì •ë ¬ì„ ì‚¬ìš©í•©ë‹ˆë‹¤\n"
+#~ " -c=? ì´ ì„¤ì • 파ì¼ì„ ì½ìŠµë‹ˆë‹¤\n"
+#~ " -o=? ìž„ì˜ì˜ ì˜µì…˜ì„ ì„¤ì •í•©ë‹ˆë‹¤. 예를 들어 -o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "하위 프로세스가 실패했습니다"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "해당ë˜ëŠ” 소스 패키지를 가져올 패키지를 최소한 하나 지정해야 합니다"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "파ì´í”„ 만들기가 실패했습니다"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "gzip ì‹¤í–‰ì´ ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s(%s), ì»´íŒŒì¼ ì‹œê° %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "FILE*를 ë§Œë“œëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "소스 리스트 %2$sì˜ %1$lu번 ì¤„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤ (URI 파싱)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr "소스 리스트 %2$sì˜ %1$lu번 ì¤„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤ ([option] 파싱 불가)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "소스 리스트 %2$sì˜ %1$lu번 ì¤„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤ ([option] 너무 짧ìŒ)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "소스 리스트 %2$sì˜ %1$lu번 ì¤„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤ ([%3$s] ëŒ€ìž…ì´ ì•„ë‹˜)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "소스 리스트 %2$sì˜ %1$lu번 ì¤„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤ ([%3$s] 키가 ì—†ìŒ)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "소스 리스트 %2$sì˜ %1$lu번 ì¤„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤ ([%3$s] %4$s í‚¤ì— ê°’ì´ ì—†"
+#~ "ìŒ)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "소스 리스트 %2$sì˜ %1$lu번 ì¤„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤ (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "소스 리스트 %2$sì˜ %1$lu번 ì¤„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤ (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "소스 리스트 %2$sì˜ %1$lu번 ì¤„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤ (URI 파싱)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "소스 리스트 %2$sì˜ %1$lu번 ì¤„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤ (절대 dist)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "소스 리스트 %2$sì˜ %1$lu번 ì¤„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤ (dist 파싱)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "íŒŒì¼ ì˜ì¡´ì„±ì„ 처리하는 ë°, %s %s 패키지가 없습니다"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "소스 패키지 ëª©ë¡ %sì˜ ì •ë³´ë¥¼ ì½ì„ 수 없습니다"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "파ì¼ì—ì„œ 제공하는 ê²ƒì„ ëª¨ìœ¼ëŠ” 중입니다"
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Release íŒŒì¼ %s 파ì¼ì„ 파싱할 수 없습니다"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "ë²¤ë” ë¸”ëŸ­ %sì˜ í•‘ê±°í”„ë¦°íŠ¸ê°€ 없습니다"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "ì „ì²´ ì˜ì¡´ì„± 버전 용량: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "%sì— ì¶©ë¶„í•œ ê³µê°„ì´ ì—†ìŠµë‹ˆë‹¤"
+
+#~ msgid "Done"
+#~ msgstr "완료"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "%sì— í‚¤ 모ìŒì„ 설치하지 않았습니다."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "내부 오류, AllUpgrade í”„ë¡œê·¸ëž¨ì´ ë¬´ì–¸ê°€ë¥¼ ë§ê°€ëœ¨ë ¸ìŠµë‹ˆë‹¤"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%sì€(는) 올바른 DEB 패키지가 아닙니다."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "CD-ROM 마운트 위치로 %s 사용\n"
+#~ "CD-ROMì„ ë§ˆìš´íŠ¸í•˜ëŠ” 중입니다\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "%s 패치를 mmapê³¼ íŒŒì¼ ë™ìž‘ì„ ì´ìš©í•´ ì ìš©í•  수 없습니다. 패치 파ì¼ì´ ì†ìƒ"
+#~ "ëœ ê²ƒì²˜ëŸ¼ 보입니다."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "%s 패치를 mmapì„ ì´ìš©í•´ (mmap 관련 실패는 ì—†ìŒ) ì ìš©í•  수 없습니다. 패치 "
+#~ "파ì¼ì´ ì†ìƒëœ 것처럼 보입니다."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr "'%2$s' íŒ¨í‚¤ì§€ì˜ '%1$s' ëŒ€ìƒ ë¦´ë¦¬ìŠ¤ëŠ” 없으므로 무시합니다."
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "올바른 DEB ì•„ì¹´ì´ë¸Œê°€ 아닙니다. '%s'나 '%s' í˜¹ì€ '%s' 멤버가 없습니다"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5Sumì´ ë§žì§€ 않습니다"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "%s íŒ¨í‚¤ì§€ì˜ íŒŒì¼ì„ ì°¾ì„ ìˆ˜ 없습니다. 수ë™ìœ¼ë¡œ ì´ íŒ¨í‚¤ì§€ë¥¼ ê³ ì³ì•¼ í•  ìˆ˜ë„ "
+#~ "있습니다."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "ë¡œê·¸ì— ì“°ëŠ”ë° ì‹¤íŒ¨. openpty() 실패(/dev/ptsê°€ 마운트ë˜ì–´ìžˆì§€ 않습니까?)\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "%s 파ì¼ì€ 없으므로 무시합니다"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "%sì„(를) ì§€ìš°ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "%sì„(를) 만들 수 없습니다"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "%sinfoì˜ ì •ë³´ë¥¼ ì½ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr "ì •ë³´ 디렉토리와 ìž„ì‹œ 디렉토리는 ê°™ì€ íŒŒì¼ ì‹œìŠ¤í…œì— ìžˆì–´ì•¼ 합니다"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "관리 디렉토리를 %sinfoë¡œ ë°”ê¾¸ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "패키지 ì´ë¦„ì„ ê°€ì ¸ì˜¤ëŠ”ë° ë‚´ë¶€ 오류"
+
+#~ msgid "Reading file listing"
+#~ msgstr "íŒŒì¼ ëª©ë¡ì„ ì½ëŠ” 중입니다"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "ëª©ë¡ íŒŒì¼ '%sinfo/%s' 파ì¼ì„ ì—¬ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤. ì´ íŒŒì¼ì„ 복구할 수 없다"
+#~ "ë©´ 비워 놓고 ê°™ì€ ë²„ì „ì˜ íŒ¨í‚¤ì§€ë¥¼ 다시 설치하십시오!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "ëª©ë¡ íŒŒì¼ %sinfo/%s 파ì¼ì„ ì½ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "노드를 얻어 ì˜¤ëŠ”ë° ë‚´ë¶€ 오류"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "전환 íŒŒì¼ %sdiversions를 ì—¬ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "전환 파ì¼ì´ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "전환 파ì¼ì— ìž˜ëª»ëœ ì¤„ì´ ìžˆìŠµë‹ˆë‹¤: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "diversionì„ ì¶”ê°€í•˜ëŠ”ë° ë‚´ë¶€ 오류"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "패키지 ìºì‹œë¥¼ 먼저 초기화해야 합니다"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "패키지를 ì°¾ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤: í—¤ë”, 오프셋 %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "status 파ì¼ì—ì„œ ConfFile ì„¹ì…˜ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤. 오프셋 %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "MD5 분ì„ì— ì˜¤ë¥˜ê°€ 있습니다. 오프셋 %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "%s 디렉토리로 ì´ë™í•  수 없습니다"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "올바른 control 파ì¼ì„ ì°¾ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "%sì— ëŒ€í•œ 파ì´í”„를 ì—´ 수 없습니다"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "%s 프로세스ì—ì„œ ì½ëŠ”ë° ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "í—¤ë” í•œ ì¤„ì— %u개가 넘는 문ìžê°€ 들어 있습니다"
+
+#~ msgid "Note: This is done automatic and on purpose by dpkg."
+#~ msgstr "주ì˜: dpkgì—ì„œ ìžë™ìœ¼ë¡œ ì˜ë„ì ìœ¼ë¡œ 수행했습니다."
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "override %sì˜ %lu번 줄 #1ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "override %sì˜ %lu번 줄 #2ê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "override %sì˜ %lu번 줄 #3ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#~ msgid "decompressor"
+#~ msgstr "압축 해제 프로그램"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "%luë§Œí¼ ë” ì½ì–´ì•¼ 하지만 ë” ì´ìƒ ì½ì„ ë°ì´í„°ê°€ 없습니다"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "%luë§Œí¼ ë” ì¨ì•¼ 하지만 ë” ì´ìƒ 쓸 수 없습니다"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "ì´ë¯¸ ì••ì¶•ì´ í’€ë¦° '%s' íŒ¨í‚¤ì§€ì— ëŒ€í•´ 즉시 ì„¤ì •ì„ í•  수 없습니다. ìžì„¸í•œ 설"
+#~ "ëª…ì€ man 5 apt.conf 페ì´ì§€ì—ì„œ APT::Immediate-Configure í•­ëª©ì„ ë³´ì‹­ì‹œì˜¤."
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "%s 처리하는 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤ (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "%s 처리하는 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤ (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "%s 처리하는 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤ (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "%s 처리하는 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤ (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "%s 처리하는 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤ (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "%s 처리하는 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤ (NewVersion%d)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "%s 처리하는 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤ (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "%s 처리하는 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤ (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "%s 처리 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤ (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "%s 처리 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤ (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "내부 오류, 멤버를 ì°¾ì„ ìˆ˜ 없습니다"
+
+#~ msgid "Internal error, group '%s' has no installable pseudo package"
+#~ msgstr "내부 오류, '%s' ê·¸ë£¹ì— ì„¤ì¹˜í•  수 있는 패키지가 없습니다."
+
+#~ msgid "Release file expired, ignoring %s (invalid since %s)"
+#~ msgstr "Release 파ì¼ì´ 만료ë˜ì—ˆìŠµë‹ˆë‹¤. %s 무시. (%s ì´í›„ë¡œ 무효)"
diff --git a/po/ku.po b/po/ku.po
new file mode 100644
index 000000000..3ac5e5421
--- /dev/null
+++ b/po/ku.po
@@ -0,0 +1,3708 @@
+# translation of apt-ku.po to Kurdish
+# Kurdish translation for apt
+# This file is distributed under the same license as the apt package.
+#
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2006.
+# Erdal Ronahi <erdal dot ronahi at gmail dot com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2008-05-08 12:48+0200\n"
+"Last-Translator: Erdal Ronahi <erdal.ronahi@gmail.com>\n"
+"Language-Team: ku <ubuntu-l10n-kur@lists.ubuntu.com>\n"
+"Language: ku\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KAider 0.1\n"
+"Plural-Forms: nplurals=2; plural= n != 1;\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Arşîv zêde kin e"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr ""
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Nikarî pakêta %s bibîne"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr ""
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr ""
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr ""
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr ""
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr ""
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr ""
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Nivîsîna pelê %s biserneket"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Girtina pelê %s biserneket"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Rêça %s zêde dirêj e"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, fuzzy
+msgid "The diversion path is too long"
+msgstr "Lîsteya dirêjahiya çavkaniyê zêde dirêj e"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr ""
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr ""
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr ""
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Rêç zêde dirêj e"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr ""
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Nikare %s bixwîne"
+
+#: apt-inst/extract.cc
+#, fuzzy, c-format
+msgid "Unable to stat %s"
+msgstr "Nivîsandin ji bo %s ne pêkane"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr ""
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr ""
+
+#: apt-inst/filelist.cc
+#, fuzzy
+msgid "Failed to allocate diversion"
+msgstr "%s venebû"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr ""
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr ""
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr ""
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Rêça %s zêde dirêj e"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Rêça %s zêde dirêj e"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Rêça %s zêde dirêj e"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Rêça %s zêde dirêj e"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "Rêça %s zêde dirêj e"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Hash Sum li hev nayên"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "nav guherandin biserneket, %s (%s -> %s)"
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Mezinahî li hev nayên"
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Çewtiya nivîsînê"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Girêdan bi %s (%s) re pêk tê"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "Dîsketê siwar bike û piştre bişkoja derbaskirinê bitikîne"
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "List directory %spartial is missing."
+msgstr "Peldanka '%s' kêm e"
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Peldanka '%s' kêm e"
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Unable to lock directory %s"
+msgstr "W: pelrêça %s nayê xwendin\n"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Nikarî derbasa %s bike"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Pel tê anîn %li ji %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr ""
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr ""
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr ""
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Peywira %s nehate dîtin"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Nikarî pakêta %s bibîne"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Nikarî pakêta %s bibîne"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Pakêt nehate dîtin %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Etîketa '%s' hatiye dîtin\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Navê dîskê: \n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Lîsteyên pakêtan tên jibergirtin..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr ""
+
+#: apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Unable to stat %s."
+msgstr "Nivîsandin ji bo %s ne pêkane"
+
+#: apt-pkg/contrib/cdromutl.cc
+#, fuzzy, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Nivîsandin ji bo %s ne pêkane"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Opsiyona '%s' zêde dirêj e"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Di girtina pelî de pirsgirêkek derket"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Nikarî qufila pelê %s veke"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr ""
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Çewiya xwendinê"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Çewtiya nivîsînê"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Di girtina pelî de pirsgirêkek derket"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Nikarî pelê %s veke"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Nikarî pelê %s veke"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the file %s"
+msgstr "Di girtina pelî de pirsgirêkek derket"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Di girtina pelî de pirsgirêkek derket"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Nivîsandin ji bo %s ne pêkane"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Nivîsandin ji bo %s ne pêkane"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Nikarî li %s biguherîne"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to close mmap"
+msgstr "%s venebû"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to synchronize mmap"
+msgstr "%s venebû"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Failed to truncate file"
+msgstr "Nivîsîna pelê %s biserneket"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Çewtî!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Çêbû"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... Çêbû"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Hilbijartina %s nehatiye dîtin"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Pakêt nehate dîtin %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr ""
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, fuzzy, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Pakêt nehate dîtin %s"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, fuzzy, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Pelrêça daxistinê nayê quflekirin"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr ""
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Installing %s"
+msgstr "%s hatine sazkirin"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "%s tê mîhengkirin"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "%s tê rakirin"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removing %s"
+msgstr "%s bi tevahî hatine rakirin"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "%s hatine sazkirin"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Peldanka '%s' kêm e"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, fuzzy, c-format
+msgid "Could not open file '%s'"
+msgstr "Nikarî pelê %s veke"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "%s tê amadekirin"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "%s tê derxistin"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Mîhengkirina %s tê amadekirin"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Rakirina %s tê amadekirin"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "%s hatine rakirin"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Bi tevahî rakirina %s tê amadekirin"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "%s bi tevahî hatine rakirin"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "Nivîsandin ji bo %s ne pêkane"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Guhartoyên berendam"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Vekirina StateFile %s biserneket"
+
+#: apt-pkg/depcache.cc
+#, fuzzy, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "%s ji hev nehate veçirandin"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "%i tomar hatin nivîsîn.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, fuzzy, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Hash Sum li hev nayên"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr ""
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr ""
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "Nikarî pelê %s veke"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Bindest"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "PêşBindest"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Pêşniyaz dike"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Nakokî"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Tawsiye dike"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Dikeve ÅŸunve"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Dişkîne"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Kevin dike"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "girîng"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "pêwist"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "standard"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "ekstra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "opsiyonel"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr ""
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Dema şixulandina naveroka %s çewtî"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Lîsteya pakêtan tê xwendin"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr ""
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr ""
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "%s tê vekirin"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr ""
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Anîna %s %s biserneket"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Bilindkirin tê hesibandin"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Anîn:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Çewt:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "%s hatine anîn..."
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Dixebite]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr "Dîsketê siwar bike û piştre bişkoja derbaskirinê bitikîne"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Bindestî tên serrastkirin..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " neserketî."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Nikare bindestiyan rast kirin"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr ""
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Temam"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "lê paketeke farazî ye"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [Sazkirî]"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Not candidate version]"
+msgstr "Guhartoyên berendam"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid "However the following packages replace it:"
+msgstr "Ev paket dê werine bilindkirin:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr ""
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Pakêt nayên dîtin"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr ""
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr ""
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr ""
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr ""
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr ""
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Nikarî cihê vala li %s tesbît bike"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Cihê vala li %s têre nake."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Pelrêça daxistinê nayê quflekirin"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Paketên şikestî"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Anîna %sB/%sB ji arşîvan pêwist e.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Anîna %sB ji arşîvan pêwist e.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr ""
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Erê, wusa bike!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Betal."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Dixwazî bidomînî?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Daxistina çend pelan biserneket"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Sazkirin tê betalkirin."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "Ev pakêtên NÛ dê werine sazkirin:"
+msgstr[1] "Ev pakêtên NÛ dê werine sazkirin:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "Ev pakêtên NÛ dê werine sazkirin:"
+msgstr[1] "Ev pakêtên NÛ dê werine sazkirin:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Ev pakêtên NÛ dê werine sazkirin:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Paketên tên pêşniyaz kirin:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Paketên tên tawsiyê kirin:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr ""
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s jixwe guhertoya nûtirîn e.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to manually installed.\n"
+msgstr "lê %s dê were sazkirin"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr ""
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Sazkirî]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [Sazkirî]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [Sazkirî]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [Sazkirî]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "lê %s sazkirî ye"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "lê %s dê were sazkirin"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "lê sazkirina wê ne gengaz e"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "lê paketeke farazî ye"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "lê dê neyê sazkirin"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "lê ne sazkirî ye"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " û"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Ev pakêtên NÛ dê werine sazkirin:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Ev pakêt dê werine RAKIRIN:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Ev paket dê werine bilindkirin:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (ji ber %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu hatine bilindkirin, %lu nû hatine sazkirin."
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu ji nû ve sazkirî,"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu hatine nizmkirin."
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu werin rakirin û %lu neyên bilindkirin. \n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr ""
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[Y/n]"
+msgstr "[E/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr ""
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "E"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+#, fuzzy
+msgid "You must give at least one search pattern"
+msgstr "Pêwist e tu mînakekê bidî"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Pakêta dosya %s li derveyî demê ye."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Pelgehên Pakêt:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr ""
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Sazkirî: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Berendam: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(ne tiÅŸtek)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Tabloya guhertoyan:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Nikarî pakêta %s bibîne"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Nikarî pakêta %s bibîne"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Nikarî pakêta %s bibîne"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Çavkanîna %s bîne\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Anîna çend arşîvan biserneket."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr ""
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "%s ji hev nehate veçirandin"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr ""
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr ""
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "apt-cache stats does not take any arguments"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Navên paketan bi giştî :"
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total package structures: "
+msgstr "Navên paketan bi giştî :"
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Pakêtên normal:"
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Pakêtên farazî yên safî:"
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Pakêta tenê ya farazî:"
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Pakêtên hevbeş yên farazî:"
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Winda: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Guhertoyên vekirî yên giştî:"
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total distinct descriptions: "
+msgstr "Guhertoyên vekirî yên giştî:"
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Bindestên giştî:"
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total Desc/File relations: "
+msgstr "Guhertoyên vekirî yên giştî:"
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Cihê giştî yê sist:"
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Cihê giştî yê veqetandî: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Ji kerema xwe re navekî li vî Dîsketî bike, wekî 'Debian 2.1r1 Disk 1'"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Dîsketê siwar bike û piştre bişkoja derbaskirinê bitikîne"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Anîna %s %s biserneket\n"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr ""
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Bikaranîn: apt-config [vebijark] ferman\n"
+"\n"
+"apt-config, amûra xwendina dosyeya mîhengên APTê ye\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Guhertoya debconf nehate stendin. debconf sazkirî ye?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Nikarî pakêta %s bibîne"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "lê %s dê were sazkirin"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr ""
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+#, fuzzy
+msgid "Remove automatically all unused packages"
+msgstr "lê %s dê were sazkirin"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Must specify at least one pair url/filename"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Bikaranîn: apt-config [vebijark] ferman\n"
+"apt-config, amûra xwendina dosyeya mîhengên APTê ye\n"
+"\n"
+"Ferman\n"
+" shell - moda shell\n"
+" dump - Mîhengan nîşan dide\n"
+"\n"
+"Vebijark:\n"
+" -h Ev dosyeya alîkariyê ye.\n"
+" -c=? Dosyeya mîhengan nîşan dide\n"
+" -o=? Rê li ber vedike ku tu karibe li gorî dilê xwe vebijarkan diyar bike. "
+"mînak -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Bikaranîn: apt-config [vebijark] ferman\n"
+"apt-config, amûra xwendina dosyeya mîhengên APTê ye\n"
+"\n"
+"Ferman\n"
+" shell - moda shell\n"
+" dump - Mîhengan nîşan dide\n"
+"\n"
+"Vebijark:\n"
+" -h Ev dosyeya alîkariyê ye.\n"
+" -c=? Dosyeya mîhengan nîşan dide\n"
+" -o=? Rê li ber vedike ku tu karibe li gorî dilê xwe vebijarkan diyar bike. "
+"mînak -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "lê ne sazkirî ye"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "lê %s dê were sazkirin"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "lê %s dê were sazkirin"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s jixwe guhertoya nûtirîn e.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s jixwe guhertoya nûtirîn e.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "lê %s dê were sazkirin"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "%s venebû"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "lê %s dê were sazkirin"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "Ev pakêtên NÛ dê werine sazkirin:"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "lê %s dê were sazkirin"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "lê %s dê were sazkirin"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "Lîsteya pakêtan tê xwendin"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr " Pakêta tenê ya farazî:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Paketên şikestî"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "lê %s dê were sazkirin"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+msgid "edit the source information file"
+msgstr ""
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr ""
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Dixwazî bidomînî?"
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr ""
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr ""
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr ""
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+
+#: dselect/update
+msgid "Merging available information"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Lîsteya dirêjahiya pakêtê zêde dirêj e"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Di şixulandina pêrista %s de çewtî"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Lîsteya dirêjahiya çavkaniyê zêde dirêj e"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Dema li dosyeya naverokê joreagahî dihate nivîsîn çewtî"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Dema şixulandina naveroka %s çewtî"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr ""
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Di koma pelgehên pakêta '%s' de hin pelgeh kêm in"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "DB xerabe ye, navê dosyeyê weke %s.old hate guherandin"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "Danegir kevn e, ji bo bilindkirina %s hewl dide"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Danegira %s nehate vekirin: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Rakirina %s biserneket"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Tomara kontrola arşîvê tuneye"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr ""
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr ""
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "%s venebû"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr ""
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "W: pelrêça %s nayê xwendin\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "W: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "%s ji hev nehate veçirandin"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "%s venebû"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Di arşîvê de qada pakêtê tuneye"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Girêdan pêk nehatiye"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Çewtiya hundirîn"
+
+#: methods/cdrom.cc
+#, fuzzy, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Pakêt nehate dîtin %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "CD-ROM a ÅŸaÅŸ"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr ""
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Dîsk nehate dîtin."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Pel nehate dîtin"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Girêdan bi %s (%s) re pêk tê"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr ""
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Serneket"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr ""
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Bi %s re tê girêdan"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Nikarî '%s' çareser bike"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr ""
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Nikare bi %s re girêdan pêk bîne %s:"
+
+#: methods/copy.cc
+#, fuzzy
+msgid "Failed to stat"
+msgstr "%s venebû"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr ""
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Têketin"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Nikare navê herêmî tesbît bike"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr ""
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr ""
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr ""
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr ""
+
+#: methods/ftp.cc
+#, fuzzy, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Danegira %s nehate vekirin: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr ""
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Lêpirsîn"
+
+#: methods/ftp.cc
+#, fuzzy
+msgid "Unable to invoke "
+msgstr "%s venebû"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr ""
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Di xebitandina apt-key de çewtiya nenas"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+#, fuzzy
+msgid "The following signatures were invalid:\n"
+msgstr "Ev pakêtên NÛ dê werine sazkirin:"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Dema li pelî dihate nivîsîn çewtî"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Dema li pelî dihate nivîsîn çewtî"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Hilbijartin neserketî"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr ""
+
+#: methods/http.cc
+#, fuzzy
+msgid "Error writing to output file"
+msgstr "Dema li dosyeya naverokê joreagahî dihate nivîsîn çewtî"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Nikarî pelê %s veke"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Nikarî pelê %s veke"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr ""
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr ""
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Girêdan zû hatiye girtin"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "(not found)"
+#~ msgstr "(nehate dîtin)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Destika pakêtê:"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "Rêça %s zêde dirêj e"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Vebijark:\n"
+#~ " -h Ev dosyeya alîkariyê ye.\n"
+#~ " -c=? Dosyeya mîhengan nîşan dide\n"
+#~ " -o=? Rê li ber vedike ku tu karibe li gorî dilê xwe vebijarkan diyar "
+#~ "bike. mînak -o dir::cache=/tmp\n"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Pêwist e tu mînakekê bidî"
+
+#, fuzzy
+#~ msgid "Failed to create pipes"
+#~ msgstr "%s ji hev nehate veçirandin"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Xebitandina gzip biserneket"
+
+#, fuzzy
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s ji bo %s %s komkirî di %s %s de\n"
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Pakêt nehate dîtin %s"
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Cihê vala li %s têre nake"
+
+#~ msgid "Done"
+#~ msgstr "Temam"
+
+#, fuzzy
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Sazkirin tê betalkirin."
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s ne paketeke DEB ya derbasdar e."
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5Sum li hev nayên"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Nikare %s biafirîne"
+
+#, fuzzy
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "%s venebû"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Nikarî li %s biguherîne"
+
+#, fuzzy
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Nikarî pelê %s veke"
+
+#, fuzzy
+#~ msgid "Could not patch file"
+#~ msgstr "Danegira %s nehate vekirin: %s"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#, fuzzy
+#~ msgid "Processing triggers for %s"
+#~ msgstr "Di şixulandina pêrista %s de çewtî"
diff --git a/po/lt.po b/po/lt.po
new file mode 100644
index 000000000..108e6d92e
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,3907 @@
+# Lithuanian translation for apt
+# Copyright (c) (c) 2006 Canonical Ltd, and Rosetta Contributors 2006
+# This file is distributed under the same license as the apt package.
+# Gintautas Miliauskas <gintas@akl.lt>, 2008.
+# Andrius KokianÄiks <napalm@mintis.lt>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2008-08-02 01:47-0400\n"
+"Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
+"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
+"Language: lt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
+"%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Launchpad-Export-Date: 2008-08-02 05:04+0000\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr ""
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Archyvas per trumpas"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Nepavyko perskaityti archyvo antraÅ¡Äių"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Nepavyko rasti paketo %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Sugadintas archyvas"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Tar kontrolinÄ— suma klaidinga, archyvas sugadintas"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Nežinomas TAR antraštės tipas %u. narys %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr ""
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "VidinÄ— klaida, nepavyko aptikti nario %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr ""
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr ""
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Kelias %s per ilgas"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr ""
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr ""
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Nepavyko patikrinti %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Nepavyko pervadinti %s į %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr ""
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr ""
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Kelias per ilgas"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr ""
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr ""
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Nepavyko perskaityti %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr ""
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr ""
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr ""
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr ""
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr ""
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr ""
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr ""
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Kelias %s per ilgas"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Kelias %s per ilgas"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Kelias %s per ilgas"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Kelias %s per ilgas"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "Kelias %s per ilgas"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Nepavyko nuskaityti nuorodos %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Maišos sumos nesutapimas"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Neatitinka dydžiai"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "Klaidingas veiksmas %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Rašymo klaida"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "GPG klaida: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Jungiamasi prie %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "Patikrinkite, ar įdiegtas „dpkg-dev“ paketas.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "Įdėkite diską „%s“ į įrenginį „%s“ ir paspauskite Enter."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "List directory %spartial is missing."
+msgstr "Trūksta aplanko „%s“"
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Trūksta aplanko „%s“"
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Unable to lock directory %s"
+msgstr "Nepavyko užrakinti sąrašo aplanko"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Nepavyko pakeisti į %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "ParsiunÄiamas %li failas iÅ¡ %li (liko %s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "ParsiunÄiamas %li failas iÅ¡ %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr ""
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "Nepavyko perskaityti arba atverti paketų sąrašo arba būklės failo."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr ""
+"GreiÄiausiai norÄ—site paleisti „apt-get update“, kad Å¡ios problemos bÅ«tų "
+"ištaisytos"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Nepavyko perskaityti šaltinių sąrašo."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Nebuvo rastas „%s“ leidimas paketui „%s“"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Nebuvo rasta „%s“ versija paketui „%s“"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Nepavyko rasti užduoties %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Nepavyko rasti paketo %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Nepavyko rasti paketo %s"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Nepavyko rasti paketo %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Atjungiamas CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Naudojama CD-ROM prijungimo vieta %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Laukiama disko...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Prijungiamas CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Identifikuojama... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Rasta žymė „%s“\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Å io disko pavadinimas: \n"
+"„%s“\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Kopijuojami paketų sąrašai..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Rašomas naujas šaltinių sąrašas\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr ""
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr ""
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr ""
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Parametrui %s reikia argumento."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr ""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Klaidingas veiksmas %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Klaida užveriant failą"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Nepavyko atverti rakinimo failo %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Nepavyko rezervuoti rakinimo failo %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Procesas %s gavo segmentavimo klaidÄ…"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Procesas %s gavo segmentavimo klaidÄ…"
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Procesas %s grąžino klaidos kodą (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Procesas %s netikėtai išėjo"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Skaitymo klaida"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Rašymo klaida"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Klaida užveriant failą"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Nepavyko sukurti subproceso IPC"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Nepavyko paleisti suspaudÄ—jo "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Nepavyko atverti failo %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Nepavyko atverti failo %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the file %s"
+msgstr "Klaida užveriant failą"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Klaida sinchronizuojant failÄ…"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Klaida sinchronizuojant failÄ…"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Nepavyko sukurti %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Nepavyko įrašyti į %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to close mmap"
+msgstr "Nepavyko atverti %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to synchronize mmap"
+msgstr "Nepavyko pakeisti į %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Failed to truncate file"
+msgstr "Nepavyko patikrinti %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Klaida!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Baigta"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... Baigta"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Nepavyko atverti DB failo %s: %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "No sections in Release file %s"
+msgstr "Pastaba: pažymimas %s vietoje %s\n"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Pastaba: pažymimas %s vietoje %s\n"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, fuzzy, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Nepavyko užrakinti sąrašo aplanko"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr ""
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Installing %s"
+msgstr "Įdiegta %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Konfigūruojamas %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Å alinamas %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removing %s"
+msgstr "Visiškai pašalintas %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "Įdiegta %s"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Trūksta aplanko „%s“"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, fuzzy, c-format
+msgid "Could not open file '%s'"
+msgstr "Nepavyko atverti failo %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Ruošiamas %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "IÅ¡pakuojamas %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Ruošiamasi konfigūruoti %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Ruošiamasi %s pašalinimui"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "Pašalintas %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Ruošiamasi visiškai pašalinti %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "Visiškai pašalintas %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "Nepavyko įrašyti į %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Konstruojamas priklausomybių medis"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Galimos versijos"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Priklausomybių generavimas"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Skaitoma būsenos informacija"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, fuzzy, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Maišos sumos nesutapimas"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr ""
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr ""
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "Nepavyko atverti failo %s"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Priklauso"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Priešpriklauso"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Siūlo"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Konfliktuoja"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Rekomenduoja"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "PakeiÄia"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Sugadina"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "PakeiÄia"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "Svarbu"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "privaloma"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "standartinis"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "papildomas"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "nebūtinas"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr ""
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Klaida apdorojant turinį %s"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Skaitomi paketų sąrašai"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr ""
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr ""
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Nekorektiškas perrašymas %s eilutėje %lu #1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Atveriama %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr ""
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr ""
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Nepavyko parsiųsti %s %s"
+
+#: apt-pkg/update.cc
+#, fuzzy
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Kai kurių indeksų failų nepavyko parsiųsti, jie buvo ignoruoti arba vietoje "
+"jų panaudoti seni."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "SkaiÄiuojami atnaujinimai"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Imamas:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Gauti:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Ignoruotas:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Klaida:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Parsiųsta %sB iš %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Vykdoma]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Laikmenos keitimas: įdėkite diską, pažymėtą\n"
+" „%s“,\n"
+"į įrenginį „%s“ ir paspauskite enter\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Taisomos priklausomybÄ—s..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " nepavyko."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Nepavyko patenkinti priklausomybių"
+
+#: apt-private/private-cachefile.cc
+#, fuzzy
+msgid "Unable to minimize the upgrade set"
+msgstr "Nepavyko minimizuoti atnaujinimo rinkinio"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Įvykdyta"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+"Įvykdykite „apt --fix-broken install“, jei norite ištaisyti šias klaidas."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Nepatenkintos priklausomybės. Pabandykite įvykdyti 'apt --fix-broken "
+"install' be nurodytų paketų (arba nurodykite išeitį)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Pastaba, žymima %s regex atitikimų formoje '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Pastaba, žymima %s regex atitikimų formoje '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Pastaba, žymima %s regex atitikimų formoje '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Paketas %s yra virtualus, pateiktas:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [Įdiegtas]"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Not candidate version]"
+msgstr "Galimos versijos"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Reikia pažymėti įdiegimui bent vieną."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Paketo %s nÄ—ra, bet jis nurodytas prie kito paketo.\n"
+"Tai gali reikšti, kad paketas dingęs, nebenaudojamas \n"
+"arba prieinamas tik iš kitų šaltinių.\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "TaÄiau Å¡ie paketai jį pakeiÄia:"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Paketas %s neturi diegimo kandidatų"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr ""
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "Paketas %s nėra įdiegtas, todėl nebuvo pašalintas\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Paketas %s nėra įdiegtas, todėl nebuvo pašalintas\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Pastaba: pažymimas %s vietoje %s\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Paketų nerasta"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "DĖMESIO: Šie paketai negali būti autentifikuoti!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr ""
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Nepavyko autentikuoti kai kurių paketų"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Įdiegti šiuos paketus be patvirtinimo?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Atsirado problemų ir -y buvo panaudotas be --force-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Nepavyko nustatyti %s laisvos vietos"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "%s nÄ—ra pakankamai laisvos vietos."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Nepavyko užrakinti parsiuntimų aplanko"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Nepavyko įdiegti kai kurių paketų. Tai gali reikšti, kad jūs\n"
+"paprašėte neįmanomo dalyko, arba, jei jūs naudojate nestabilų\n"
+"leidimÄ…, kuomet kai kurie paketai dar nebuvo sukurti arba buvo\n"
+"pašalinti iš \"Incoming\" aplanko."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Ši informacija gali padėti išspręsti šią situaciją:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Sugadinti paketai"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Nepavyko parsiųsti kai kurių archyvų, pabandykite paleisti „apt-get update“ "
+"arba pabandykite su parametru --fix-missing?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Reikia paÅ¡alinti paketus, taÄiau Å¡alinimas iÅ¡jungtas."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Atsirado problemų ir -y buvo panaudotas be --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Atsirado problemų ir -y buvo panaudotas be --force-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr "Keista... Dydis neatitinka, Parašykite laišką apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Reikia parsiųsti %sB/%sB archyvų.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Reikia parsiųsti %sB archyvų.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "Po Å¡ios operacijos bus naudojama %sB papildomos disko vietos.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Po Å¡ios operacijos bus atlaisvinta %sB disko vietos.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr ""
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Taip, daryk kaip liepiu!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Bandote atlikti tikÄ—tinai pavojingÄ… veiksmÄ….\n"
+"Jei norite tęsti, įveskite frazę „%s“\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Nutraukti."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Ar norite tęsti?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Nepavyko parsiųsti kai kurių failų"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Pavyko parsiųsti tik parsiuntimo režime"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing bei laikmenų apkeitimas nepalaikomas"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Nepavyko pataisyti dingusių paketų."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Diegimas nutraukiamas."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "Šie paketai buvo automatiškai įdiegti ir daugiau nebėra reikalingi:"
+msgstr[1] "Šie paketai buvo automatiškai įdiegti ir daugiau nebėra reikalingi:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "Šie paketai buvo automatiškai įdiegti ir daugiau nebėra reikalingi:"
+msgstr[1] "Šie paketai buvo automatiškai įdiegti ir daugiau nebėra reikalingi:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Norėdami juos pašalinti, paleiskite „%s“"
+msgstr[1] "Norėdami juos pašalinti, paleiskite „%s“"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Bus įdiegti šie papildomi paketai:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Siūlomi paketai:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Rekomenduojami paketai:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+"Praleidžiamas %s, nes jis jau yra įdiegtas ir atnaujinimas nėra nurodytas.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"Praleidžiamas %s, nes jis jau yra įdiegtas ir atnaujinimas nėra nurodytas.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "Pakartotinas %s įdiegimas neįmanomas, jo nepavyksta parsiųsti.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s ir taip jau yra naujausias.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s nustatytas kaip įdiegtas rankiniu būdu\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Pažymėta versija %s (%s) paketui %s\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Pažymėta versija %s (%s) paketui %s\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Įdiegtas]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [Įdiegtas]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [Įdiegtas]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [Įdiegtas]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "bet %s yra įdiegtas"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "bet %s bus įdiegtas"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "taÄiau jis negali bÅ«ti įdiegtas"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "bet tai yra virtualus paketas"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "bet jis nebus įdiegtas"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "bet jis nėra įdiegtas"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " arba"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Šie paketai turi neįdiegtų priklausomybių:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Bus įdiegti šie NAUJI paketai:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Bus PAÅ ALINTI Å¡ie paketai:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Šių paketų atnaujinimas sulaikomas:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Bus atnaujinti Å¡ie paketai:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Bus PAKEISTI SENESNIAIS Å¡ie paketai:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Bus pakeisti Å¡ie sulaikyti paketai:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (dÄ—l %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"Įspėjimas: Šie būtini paketai bus pašalinti.\n"
+"Tai NETURĖTŲ būti daroma, kol tiksliai nežinote ką darote!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu atnaujinti, %lu naujai įdiegti, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu įdiegti iš naujo, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu pasendinti, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu bus pašalinta ir %lu neatnaujinta.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu nepilnai įdiegti ar pašalinti.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[T/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[t/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "T"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr ""
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr ""
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Paketų failai:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Surišti paketai:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Įdiegta: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Kandidatas: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(nÄ—ra)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Versijų lentelė:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Nepavyko rasti paketo %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Nepavyko rasti paketo %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Nepavyko rasti paketo %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Būtina nurodyti bent vieną paketą, kad parsiųsti jo išeities tekstą"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Nepavyko surasti išeities teksto paketo, skirto %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Praleidžiama jau parsiųsta byla „%s“\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Reikia parsiųsti %sB/%sB išeities archyvų.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Reikia parsiųsti %sB išeities archyvų.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "ParsiunÄiamas archyvas %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Nepavyko gauti kai kurių arhcyvų."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Jau išpakuotas archyvas %s praleidžiama\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Nepavyko įvykdyti išpakavimo komandos „%s“\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Patikrinkite, ar įdiegtas „dpkg-dev“ paketas.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Nepavyko įvykdyti paketo kompiliavimo komandos „%s“\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Nepavyko gauti kūrimo-priklausomybių informacijos paketui %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr "Būtina nurodyti bent vieną paketą, kuriam norite įvykdyti builddeps"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr ""
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Nepavyko pervadinti %s į %s"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Paketas %s versijos numeriu %s turi netenkinamÄ… priklausomybÄ™:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Atnaujinimo komandai argumentų nereikia"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "Atnaujinimo komandai argumentų nereikia"
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total package names: "
+msgstr "Visi paketų pavadinimai: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total package structures: "
+msgstr "Visi paketų pavadinimai: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Normalūs paketai: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Virtualūs paketai: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Pavieniai virtualūs paketai: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Mišrūs virtualūs paketai: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Trūksta: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Viso skirtingų versijų: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total distinct descriptions: "
+msgstr "Viso skirtingų aprašymų: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Viso priklausomybių: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Viso versijų/failų santykių yra: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Viso aprašymų/failų santykių yra: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Show raw dependency information for a package"
+msgstr "Nepavyko gauti kūrimo-priklausomybių informacijos paketui %s"
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Show reverse dependency information for a package"
+msgstr "Nepavyko gauti kūrimo-priklausomybių informacijos paketui %s"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Prašome įdėti diską į įrenginį ir paspausti Enter"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Nepavyko pervadinti %s į %s"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Pakartokite Å¡itÄ… procesÄ… su kitais CD savo rinkinyje."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Parametrai nurodyti ne poromis"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Panaudojimas: apt-config [parametrai] komanda\n"
+"\n"
+"apt-config yra paprastas įrankis nuskaityti APT konfigūracijos failui\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Naudojimas: apt-extracttemplates failas1 [failas2 ...]\n"
+"\n"
+"apt-extracttemplates tai įrankis skirtas konfigūracijų, bei šablonų "
+"informacijos išskleidimui\n"
+"iš debian paketų\n"
+"\n"
+"Parametrai:\n"
+" -h Å is pagalbos tekstas\n"
+" -t Nustatyti laikinąjį aplanką\n"
+" -c=? Nuskaityti šį konfigūracijų failą\n"
+" -o=? Nustatyti savarankiškas nuostatas, pvz.: -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Nepavyko sužinoti debconf versijos. Ar įdiegtas debconf?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Nepavyko rasti paketo %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s nustatytas kaip įdiegtas rankiniu būdu\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Vidinė klaida, problemos sprendimas kažką sugadino"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Palaikomi moduliai:"
+
+#: cmdline/apt-get.cc
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid "Retrieve new lists of packages"
+msgstr "%s nustatytas kaip įdiegtas rankiniu būdu\n"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr ""
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid "Remove packages"
+msgstr "Sugadinti paketai"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr ""
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+#, fuzzy
+msgid "Remove automatically all unused packages"
+msgstr "%s nustatytas kaip įdiegtas rankiniu būdu\n"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr ""
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid "Download source archives"
+msgstr "Reikia parsiųsti %sB išeities archyvų.\n"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "Būtina nurodyti bent vieną paketą, kad parsiųsti jo išeities tekstą"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Naudojimas: apt-extracttemplates failas1 [failas2 ...]\n"
+"\n"
+"apt-extracttemplates tai įrankis skirtas konfigūracijų, bei šablonų "
+"informacijos išskleidimui\n"
+"iš debian paketų\n"
+"\n"
+"Parametrai:\n"
+" -h Å is pagalbos tekstas\n"
+" -t Nustatyti laikinąjį aplanką\n"
+" -c=? Nuskaityti šį konfigūracijų failą\n"
+" -o=? Nustatyti savarankiškas nuostatas, pvz.: -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Naudojimas: apt-extracttemplates failas1 [failas2 ...]\n"
+"\n"
+"apt-extracttemplates tai įrankis skirtas konfigūracijų, bei šablonų "
+"informacijos išskleidimui\n"
+"iš debian paketų\n"
+"\n"
+"Parametrai:\n"
+" -h Å is pagalbos tekstas\n"
+" -t Nustatyti laikinąjį aplanką\n"
+" -c=? Nuskaityti šį konfigūracijų failą\n"
+" -o=? Nustatyti savarankiškas nuostatas, pvz.: -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "bet jis nėra įdiegtas"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s nustatytas kaip įdiegtas rankiniu būdu\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s nustatytas kaip įdiegtas rankiniu būdu\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s ir taip jau yra naujausias.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s ir taip jau yra naujausias.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "%s nustatytas kaip įdiegtas rankiniu būdu\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Nepavyko atverti %s"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "%s nustatytas kaip įdiegtas rankiniu būdu\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "Patikrinkite, ar įdiegtas „dpkg-dev“ paketas.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "%s nustatytas kaip įdiegtas rankiniu būdu\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "%s nustatytas kaip įdiegtas rankiniu būdu\n"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Nežinomas paketo įrašas!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "Skaitomi paketų sąrašai"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "Surišti paketai:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Sugadinti paketai"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "%s nustatytas kaip įdiegtas rankiniu būdu\n"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "Skaitoma būsenos informacija"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Blogi standartiniai nustatymai!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Jei norite tęsti, spauskite Enter."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr ""
+
+#: dselect/install
+#, fuzzy
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "Išpakuojant įvyko klaidų. Bandysiu konfigūruoti"
+
+#: dselect/install
+#, fuzzy
+msgid "will be configured. This may result in duplicate errors"
+msgstr "paketus, kurie buvo įdiegti. Tai gali sukelti pasikartojanÄias klaidas"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"arba klaidas, atsiradusias dėl trūkstamų priklausomybių. Viskas gerai, tik "
+"klaidos,"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"esanÄios aukÅ¡Äiau Å¡ios žinutÄ—s, yra svarbios. PraÅ¡ome jas iÅ¡taisyti ir vÄ—l "
+"paleisti [I]nstall"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Sujungiama turima informaija"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Paketo plėtinių sąrašas yra per ilgas"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Klaida apdorojant aplankÄ… %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Å altinio plÄ—tinys yra per ilgas"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Klaida įrašant antraštę į turinio failą"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Klaida apdorojant turinį %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Naudojimas: apt-ftparchive [parametrai] komanda\n"
+"Komandos: dvejatainių paketų kelias [perrašomasfailas [keliopriešdėlis]]\n"
+" sources aplankas [perrašomasfailas [kelippriešdėlis]]\n"
+" contents kelias\n"
+" release kelias\n"
+" generate parametras [grupÄ—s]\n"
+" clean parametras\n"
+"\n"
+"apt-ftparchive generuoja indeksų failus, skirtus Debian archyvams. Palaikomi "
+"keli \n"
+"generavimo stiliai, įskaitant nuo pilnai automatizuoto iki funkcinių "
+"pakeitimų\n"
+"skirtų dpkg-scanpackages ir dpkg-scansources\n"
+"\n"
+"apt-ftparchive sugeneruoja paketų failus iš .debs medžio. Paketo failas turi "
+"visus\n"
+"kontrolinius kiekvieno paketo laukus, o taip pat ir MD5 hešą bei failų "
+"dydžius. Perrašomasis\n"
+"failas palaikomas tam, kad būtų priverstinai nustatytos Pirmenybių bei "
+"Sekcijų reikšmės.\n"
+"\n"
+"Panašiai apt-ftparchive sugeneruoja ir Išeities failus iš .dscs medžio.\n"
+"--source-override nuostata gali būti naudojama nustatant išeities "
+"perrašomąjį failą\n"
+"\n"
+"\"Paketų\" bei \"IÅ¡eiÄių\" komandos turÄ—tų bÅ«ti paleistos failų medžio "
+"šaknyje. BinaryPath turėtų\n"
+"nurodyti kelią į rekursinės paieškos pagrindą bei perrašytas failas turėtų "
+"turėti perrašymo žymes.\n"
+"Keliopriešdėlis tai yra prirašomas prie failo vardų laikų jei tokių yra. "
+"Vartosenos pavyzdys\n"
+"naudojant Debian archyvÄ…:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Nuostatos:\n"
+" -h Å is pagalbos tekstas\n"
+" --md5 Valdyti MD5 generavimÄ…\n"
+" -s=? Šaltinio perrašomas failas\n"
+" -q TylÄ—ti\n"
+" -d=? Pasirinkti papildomą kešo duomenų bazę\n"
+" --no-delink Įjungti atjungiamąjį derinimo rėžimą\n"
+" -c=? Perskaityti šį nuostatų failą\n"
+" -o=? Nustatyti savarankišką konfigūracijos nuostatą"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Nėra atitikmenų"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Kai kurių failų nėra paketų grupėje „%s“"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "Duomenų bazė pažeista, failas pervardintas į %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "Duomenų bazė yra sena, bandoma atnaujinti %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Duomenų bazės formatas yra netinkamas. Jei jūs atsinaujinote iš senesnės "
+"versijos, prašome pašalinkite ir perkurkite duomenų bazę."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Nepavyko atverti DB failo %s: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Nepavyko nuskaityti nuorodos %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr ""
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr ""
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Nepavyko išskirti atminties"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Nežinomas suspaudimo algoritmas „%s“"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Suspaustai iÅ¡vesÄiai %s reikia suspaudimo rinkinio"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Nepavyko subprocesui sukurti IPC gijos"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr ""
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "VidinÄ— klaida, nepavyko sukurti %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Nepavyko Nusk/Įraš į subprocesą/failą"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Skaitymo klaida skaiÄiuojant MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Nepavyko atverti %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Nekorektiškas perrašymas %s eilutėje %lu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Nepavyko nuskaityti perrašymo failo %s"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Nekorektiškas perrašymas %s eilutėje %lu #1"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Nekorektiškas perrašymas %s eilutėje %lu #2"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Nekorektiškas perrašymas %s eilutėje %lu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "Ä®: Nepavyko perskaityti aplanko %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "Ä®: Nepavyko patikrinti %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "K: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "Ä®: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "K: Klaidos failui "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Nepavyko išspręsti %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Judesys medyje nepavyko"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Nepavyko atverti %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Nepavyko susieti %s su %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Archyvas neturÄ—jo paketo lauko"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s neturi perrašymo įrašo\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " %s prižiūrėtojas yra %s, o ne %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr ""
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Laukiama antraÅ¡Äių"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Prisijungti nepavyko"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "VidinÄ— klaida"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Nepavyko perskaityti cdrom duomenų bazės %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Klaidingas CD-ROM"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Nepavyko atjungti CD-ROM įrenginyje %s, galbūt jis vis dar naudojamas."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Diskas nerastas."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Failas nerastas"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Jungiamasi prie %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr ""
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Nepavyko prisijungti prie %s:%s (%s), prisijungimas per ilgai užtruko"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Nepavyko"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Nepavyko prisijungti prie %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Jungiamasi prie %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Nepavyko surasti vardo „%s“"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Laikinas sutrikimas ieškant vardo „%s“"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Laikinas sutrikimas ieškant vardo „%s“"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr ""
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Nepavyko prisijungti prie %s %s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr ""
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr ""
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Jungiamasi"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Jungiamasi per ilgai"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr ""
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr ""
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr ""
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr ""
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Nepavyko atsiųsti failo, serveris atsakė „%s“"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr ""
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr ""
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Užklausti"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr ""
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr ""
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Nežinoma klaida kvieÄiant apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Šie parašai buvo nevalidūs:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr "Šių parašų nebuvo galima patikrinti, nes nėra viešojo rakto:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Klaida bandant rašyti į failą"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr ""
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Prisijungimo laiko limitas baigÄ—si"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Nepavyko atverti failo %s"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Nepavyko atverti failo %s"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr ""
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr ""
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr ""
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Nepatenkintos priklausomybÄ—s. Bandykit naudoti --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Jūs galite norėti paleisti 'apt --fix-broken install\" klaidų taisymui:"
+
+#~ msgid "(not found)"
+#~ msgstr "(nerasta)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Paketo susiejimai: "
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "Kelias %s per ilgas"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "%s priklausomybė %s paketui negali būti patenkinama, nes paketas %s "
+#~ "nerastas"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "%s priklausomybė %s paketui negali būti patenkinama, nes paketas %s "
+#~ "nerastas"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Nepavyko patenkinti %s priklausomybės %s paketui: Įdiegtas paketas %s yra "
+#~ "per naujas"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "%s priklausomybė %s paketui negali būti patenkinama, nes nėra tinkamos "
+#~ "versijos %s paketo"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "%s priklausomybė %s paketui negali būti patenkinama, nes paketas %s "
+#~ "nerastas"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Nepavyko patenkinti %s priklausomybÄ—s %s: %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Nepavyko atsieti nuorodos %s"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Parinktys:\n"
+#~ " -h Å is pagalbos ekranas.\n"
+#~ " -c=? Nuskaityti pateiktą konfigūracijos failą\n"
+#~ " -o=? Nurodyti tam tikrą konfigūracijos parametrą, pvz -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Naudojimas: apt-sortpkgs [parametrai] byla1 [byla2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs - tai paprastas įrankis skirtas paketų rūšiavimui. -s "
+#~ "nuostata naudojama\n"
+#~ "norint nusakyti bylos tipÄ….\n"
+#~ "\n"
+#~ "Parametrai:\n"
+#~ " -h Å is pagalbos tekstas\n"
+#~ " -s Naudoti išeities kodo bylos rūšiavimą\n"
+#~ " -c=? Nuskaityti šią konfigūracijos bylą\n"
+#~ " -o=? Nurodyti savarankiškas nuostatas, pvz.: -o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Klaida procese-palikuonyje"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Būtina nurodyti bent vieną paketą, kad parsiųsti jo išeities tekstą"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Nepavyko sukurti FILE*"
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Nepavyko atverti DB failo %s: %s"
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Neturite pakankamai laisvos vietos %s"
+
+#~ msgid "Done"
+#~ msgstr "Įvykdyta"
+
+#, fuzzy
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Diegimas nutraukiamas."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Vidinė klaida, problemos sprendimas kažką sugadino"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s nÄ—ra tikras DEB paketas."
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5 sumos neatitikimas"
+
+#, fuzzy
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Praleidžiama jau parsiųsta byla „%s“\n"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Nepavyko pašalinti %s"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Skaitomas failų sąrašas"
+
+#, fuzzy
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Nepavyko atverti failo %s"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Nekorektiškas perrašymas %s eilutėje %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Nekorektiškas perrašymas %s eilutėje %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Nekorektiškas perrašymas %s eilutėje %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "išskleidiklis"
+
+#, fuzzy
+#~| msgid "Could not open file %s"
+#~ msgid "Could not patch file"
+#~ msgstr "Nepavyko atverti failo %s"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "Apdorojami %s trigeriai"
+
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "Kadangi jūs paprašėte tik vienos operacijos, gan tikėtina, kad \n"
+#~ "paketas tiesiog negali būti įdiegiamas, ir turėtų būti užpildytas "
+#~ "klaidos\n"
+#~ "pranešimas apie šį paketą."
+
+#~ msgid "Line %d too long (max %u)"
+#~ msgstr "Eilutė %d per ilga (leidžiama %u simbolių)"
+
+#~ msgid "Apt Authentication issue"
+#~ msgstr "Apt autentikacijos problema"
+
+#~ msgid "Problem during package list update. "
+#~ msgstr "Įvyko klaida atnaujinant paketų sąrašą. "
diff --git a/po/mr.po b/po/mr.po
new file mode 100644
index 000000000..cff56acf5
--- /dev/null
+++ b/po/mr.po
@@ -0,0 +1,4162 @@
+# SOME DESCRIPTIVE TITLE.
+# This file is put in the public domain.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2008-11-20 23:27+0530\n"
+"Last-Translator: Sampada <sampadanakhare@gmail.com>\n"
+"Language-Team: Marathi, janabhaaratii, C-DAC, Mumbai, India "
+"<janabhaaratii@cdacmumbai.in>\n"
+"Language: mr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "अयोगà¥à¤¯ अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹ ओळख सही"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹ मेंबर शीरà¥à¤·à¤• वाचणà¥à¤¯à¤¾à¤¸ तà¥à¤°à¥à¤Ÿà¥€"
+
+#: apt-inst/contrib/arfile.cc
+#, fuzzy, c-format
+msgid "Invalid archive member header %s"
+msgstr "अयोगà¥à¤¯ अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹ मेंबर शीरà¥à¤·à¤•"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "अयोगà¥à¤¯ अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹ मेंबर शीरà¥à¤·à¤•"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹ खूप छोटे आहे"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹ शीरà¥à¤·à¤•à¥‡ वाचणे असफल"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "%s पॅकेज सापडू शकले नाही"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "बिघडलेली अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹à¤œ"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "टार(टेपअरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹) चेकसम चà¥à¤•à¤²à¤¾, बिघडलेली अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "अपरिचित TAR शीरà¥à¤·à¤• पà¥à¤°à¤•à¤¾à¤° %u, मेंबर %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "हा वैध DEB अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹ नाही,'%s' मेंबर उपलबà¥à¤§ नाही"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "अंतरà¥à¤—त तà¥à¤°à¥à¤Ÿà¥€,%s मेंबर शोधू शकत नाही"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "अनपारà¥à¤¸à¥‡à¤¬à¤² नियंतà¥à¤°à¤£ फाईल"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "%s फाईल मधà¥à¤¯à¥‡ लिहिणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "%s फाईल बंद करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "मारà¥à¤— %s हा खूप लांब आहे"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "%s à¤à¤•à¤¾à¤ªà¥‡à¤•à¥à¤·à¤¾ जासà¥à¤¤ वेळा उघडत आहे"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "%s संचिका डायवà¥à¤¹à¤°à¥à¤Ÿ केली आहे/वळवली आहे"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "डायवà¥à¤¹à¤°à¥à¤œà¤¨ इचà¥à¤›à¤¿à¤¤ %s/%s मधà¥à¤¯à¥‡ लिहिणà¥à¤¯à¤¾à¤šà¤¾ पॅकेज पà¥à¤°à¤¯à¤¤à¥à¤¨ करत आहे"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "डायवà¥à¤¹à¤°à¥à¤œà¤¨ मारà¥à¤— हा खूप लांब आहे"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "%s सà¥à¤Ÿà¥‡à¤Ÿ करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "%s ला पà¥à¤¨à¤°à¥à¤¨à¤¾à¤®à¤¾à¤‚कन %s करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥ "
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "%s संचिका ही संचिका नसलेलà¥à¤¯à¤¾ संचिकेबरोबर बदललेली आहे"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "नोडचे तà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ हॅश बकेटमधà¥à¤¯à¥‡/बादलीत सà¥à¤¥à¤¾à¤¨ निशà¥à¤šà¤¿à¤¤ करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "मारà¥à¤— खूप लांब आहे"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "%s चà¥à¤¯à¤¾ आवृतà¥à¤¤à¥€à¤¶à¥€ पà¥à¤¨à¤ƒ लिहिलेलà¥à¤¯à¤¾ पॅकेज जà¥à¤³à¤¤ नाही"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "File %s/%s, %s पॅकेज मधलà¥à¤¯à¤¾ à¤à¤•à¤¾ वर पà¥à¤¨à¤°à¥à¤²à¤¿à¤–ित होते"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "%s वाचणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "%s सà¥à¤Ÿà¥…ट करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "सà¥à¤Ÿà¤¾ करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ बोलावलेला/आणलेला सांधा(डà¥à¤°à¤¾à¤ªà¤¨à¥‹à¤¡)अजà¥à¤¨à¤¹à¥€ जà¥à¤³à¤²à¥‡à¤²à¤¾à¤š सांधा(लिंकनोड) आहे"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "हॅश à¤à¤²à¤¿à¤®à¥‡à¤‚ट शोधूने काढणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "नेमून दिलेलà¥à¤¯à¤¾à¤¤ फेरबदल करणà¥à¤¯à¤¾à¤¸ अयशसà¥à¤µà¥€"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "AddDiversion/à¤à¤¡ डायवà¥à¤¹à¤°à¥à¤œà¤¨ मधà¥à¤¯à¥‡ आंतरिक दोष"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "डायवà¥à¤¹à¤°à¥à¤œà¤¨ पà¥à¤¨à¤ƒ लिहिणà¥à¤¯à¤¾à¤¸ पà¥à¤°à¤¯à¤¤à¥à¤¨ करत आहे,%s -> %s and %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "%s -> %s डायवà¥à¤¹à¤°à¥à¤œà¤¨ दà¥à¤ªà¥à¤ªà¤Ÿ मिळवा"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "%s/%s संचिरित संचिकाची दà¥à¤¸à¤°à¥€ पà¥à¤°à¤¤/नकà¥à¤•à¤²"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "%s संचिका डायवà¥à¤¹à¤°à¥à¤Ÿ केली आहे/वळवली आहे"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "%s संचिका डायवà¥à¤¹à¤°à¥à¤Ÿ केली आहे/वळवली आहे"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "%s संचिका डायवà¥à¤¹à¤°à¥à¤Ÿ केली आहे/वळवली आहे"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "%s संचिका डायवà¥à¤¹à¤°à¥à¤Ÿ केली आहे/वळवली आहे"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "%s संचिका डायवà¥à¤¹à¤°à¥à¤Ÿ केली आहे/वळवली आहे"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "%s वाचणारा दà¥à¤µà¤¾ असमरà¥à¤¥"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "हॅश बेरीज जà¥à¤³à¤¤ नाही"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "पà¥à¤¨à¤°à¥à¤¨à¤¾à¤®à¤¾à¤‚कन अयशसà¥à¤µà¥€, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "आकार जà¥à¤³à¤¤à¤¨à¤¾à¤¹à¥€"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "%s अवैध कà¥à¤°à¤¿à¤¯à¤¾"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "लिहिणà¥à¤¯à¤¾à¤¤ तà¥à¤°à¥à¤Ÿà¥€"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"मी %s पॅकेजकरीता संचिका शोधणà¥à¤¯à¤¾à¤¸ समरà¥à¤¥ नवà¥à¤¹à¤¤à¥‹. याचा अरà¥à¤¥ असाकी तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ हे पॅकेज सà¥à¤µà¤¹à¤¸à¥à¤¤à¥‡ "
+"सà¥à¤¥à¤¿à¤°/निशà¥à¤šà¤¿à¤¤ करणà¥à¤¯à¤¾à¤šà¥€ गरज आहे(हरवलेलà¥à¤¯à¤¾ आरà¥à¤šà¤®à¥à¤³à¥‡) "
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"पॅकेज यादीची/सà¥à¤šà¥€à¤šà¥€ संचिका दूषित/खराब à¤à¤¾à¤²à¥‡à¤²à¥€ आहे. संचिका नाव नाही: पॅकेजकरीता कà¥à¤·à¥‡à¤¤à¥à¤°/"
+"ठिकाण %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "%s (%s) ला जोडत आहे"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "%s कारà¥à¤¯à¤ªà¤§à¥à¤¦à¤¤à¥€à¤šà¤¾ डà¥à¤°à¤¾à¤‡à¤µà¥à¤¹à¤° सापडू शकला नाही. "
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "'dpkg-dev' पॅकेज संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ केले आहे का ते पडताळून पहा.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "%s कारà¥à¤¯à¤ªà¤§à¥à¤¦à¤¤à¥€ योगà¥à¤¯ रीतीने सà¥à¤°à¥ à¤à¤¾à¤²à¥‡à¤²à¥€ नाही"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "कृपया '%s' लेबल असलेली डिसà¥à¤• '%s' या डà¥à¤°à¤¾à¤‡à¤µà¥à¤¹à¤®à¤§à¥à¤¯à¥‡ ठेवा आणि à¤à¤¨à¥à¤Ÿà¤° कळ दाबा."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "List directory %spartial is missing."
+msgstr "संचयिका यादीत %s पारà¥à¤¶à¤² हरवले आहे."
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "ऑरà¥à¤•à¤¾à¤‡à¤µà¥à¤¹ संचयिका %spartial गायब आहे."
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Unable to lock directory %s"
+msgstr "संचयिका यादीला कà¥à¤²à¥à¤ª लावणà¥à¤¯à¤¾à¤¤ असमरà¥à¤¥"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "'%s' पà¥à¤°à¤•à¤¾à¤°à¤šà¥€ निरà¥à¤¦à¥‡à¤¶à¤• संचिका सहायà¥à¤¯à¤•à¤¾à¤°à¥€ नाही"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "%s मधà¥à¤¯à¥‡ बदलणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "%li ची %li(%s राहिलेले) संचिका पà¥à¤¨:पà¥à¤°à¤¾à¤ªà¥à¤¤ करीत आहे"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "%li ची %li संचिका पà¥à¤¨:पà¥à¤°à¤¾à¤ªà¥à¤¤ करीत आहे"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"%s पॅकेज पà¥à¤¨à¤ƒ:अधिषà¥à¤ à¤¾à¤ªà¤¿à¤¤ करणà¥à¤¯à¤¾à¤šà¥€ गरज आहे, परंतॠमला तà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ ऑरà¥à¤•à¤¾à¤‡à¤µà¥à¤¹ सापडू शकले नाही."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"दोष,पॅकेज समसà¥à¤¯à¤¾ निवारक::निवारण करतांना अडथळा निरà¥à¤®à¤¾à¤£ à¤à¤¾à¤²à¤¾, हà¥à¤¯à¤¾à¤šà¥‡ कारण सà¥à¤¥à¤—ित "
+"पॅकेजेस असू शकते."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "अडचणी दूर करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥, तà¥à¤®à¥à¤¹à¥€ तà¥à¤Ÿà¤²à¥‡à¤²à¥‡ पॅकेज घेतलेले आहे."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "पॅकेजचà¥à¤¯à¤¾ यादà¥à¤¯à¤¾ किंवा संचिकेची सà¥à¤¥à¤¿à¤¤à¥€ सà¥à¤ªà¤·à¥à¤Ÿ होऊ शकत नाही किंवा ती उघडू शकत नाही."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "तà¥à¤®à¥à¤¹à¥€ हà¥à¤¯à¤¾ समसà¥à¤¯à¤¾à¤‚चे निवारण करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ apt-get update पà¥à¤°à¥‹à¤—à¥à¤°à¤¾à¤® चालू करॠशकता"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "उगमांचà¥à¤¯à¤¾ यादà¥à¤¯à¤¾ वाचता येणार नाहीत."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "रिजेकà¥à¤¸ कंपायलेशन तà¥à¤°à¥à¤Ÿà¥€ -%s "
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "'%s' साठी '%s' आवृतà¥à¤¤à¥€ सापडली नाही"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "'%s' साठी '%s' आवृतà¥à¤¤à¥€ सापडली नाही"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find task '%s'"
+msgstr "%s कारà¥à¤¯ सापडू शकले नाही"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "%s पॅकेज सापडू शकले नाही"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "%s पॅकेज सापडू शकले नाही"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "पॅकेज %s शोधणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥ आहे"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "%2$s सà¥à¤¤à¥à¤°à¥‹à¤¤ सà¥à¤šà¥€à¤®à¤§à¥à¤¯à¥‡ ओळ %1$u खूप लांब आहे."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "सिडी-रॉम अनमाउंट होत आहे...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "सिडी-रॉमचे माउंट सà¥à¤¥à¤¾à¤¨ %s वापरà¥à¤¨\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "डिसà¥à¤•/चकती करिता पà¥à¤°à¤¤à¤¿à¤•à¥à¤·à¤¾ करीत आहे...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "सिडी-रॉम माउंट होत आहे...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "ओळखत आहे..."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "गà¥à¤°à¤¹à¤£ केलेले नामदरà¥à¤¶à¤•: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "संचिकाचà¥à¤¯à¤¾ यादी/सूचीसाठी डिसà¥à¤•/चकती बारकाईने तपासत आहे...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"%zu पॅकेजेसची यादी/सूची, %zu सà¥à¤¤à¥à¤°à¥‹à¤¤à¤¾à¤šà¥€ यादी/सूची, %zu भाषांतर यादी/सूची आणि %zu "
+"सà¥à¤µà¤¾à¤•à¥à¤·à¤±à¥à¤¯à¤¾/सिगनेचरà¥à¤¸ सापडलà¥à¤¯à¤¾\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "'%s' लेबल सापडले\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "ते सà¥à¤µà¤¿à¤•à¤¾à¤°à¤£à¥à¤¯à¤¾à¤œà¥‹à¤—े/वैध नांव नाही, पà¥à¤¨à¥à¤¹à¤¾ पà¥à¤°à¤¯à¤¤à¥à¤¨ करा.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"हà¥à¤¯à¤¾ डिसà¥à¤•à¤²à¤¾/चकतीला: मà¥à¤¹à¤£à¤¤à¤¾à¤¤\n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "पॅकेज सूचींचà¥à¤¯à¤¾ पà¥à¤°à¤¤à¥€ तयार करित आहे..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "नविन सà¥à¤¤à¥à¤°à¥‹à¤¤ सूची लिहित आहे\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "हà¥à¤¯à¤¾ डिसà¥à¤•/चकती करिता सà¥à¤¤à¥à¤°à¥‹à¤¤ सूचीचà¥à¤¯à¤¾ पà¥à¤°à¤µà¥‡à¤¶à¤¿à¤•à¤¾ आहेत: \n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "%s सà¥à¤Ÿà¥…ट करणà¥à¤¯à¤¾à¤¤ असमरà¥à¤¥. "
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "%s माऊंट पॉईंट सà¥à¤Ÿà¥…ट करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "सीडी-रॉम सà¥à¤Ÿà¥…ट करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "आदेश रेखा परà¥à¤¯à¤¾à¤¯ '%c' [पासून %s] हे माहित नाही."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "आदेश रेखा परà¥à¤¯à¤¾à¤¯ %s नीट समजला नाही"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "आदेश रेखा परà¥à¤¯à¤¾à¤¯ %s हे बूलियन नाही"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "परà¥à¤¯à¤¾à¤¯ %s साठी ऑरà¥à¤—à¥à¤®à¥‡à¤‚ट पाहिजे"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "परà¥à¤¯à¤¾à¤¯ %s: संरचितेचà¥à¤¯à¤¾ यादीतील कलमांचा तपशीलाला असलेच पाहिजे ते =<मूलà¥à¤¯>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "%s परà¥à¤¯à¤¾à¤¯ ला पूरà¥à¤£à¤¾à¤‚क ऑरà¥à¤—à¥à¤®à¥‡à¤‚ट पाहिजे,'%s' नको"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "'%s' परà¥à¤¯à¤¾à¤¯ खूप लांब आहे"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "%s संवेदना हे समजत नाही, चूक की बरोबर चा पà¥à¤°à¤¯à¤¤à¥à¤¨ करा."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "%s अवैध कà¥à¤°à¤¿à¤¯à¤¾"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "संकà¥à¤·à¤¿à¤ªà¥à¤¤à¤°à¥à¤ªà¤¾à¤šà¤¾ माहित नसलेला पà¥à¤°à¤•à¤¾à¤°: '%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "%s संरचना फाईल उघडत आहे"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "रचनेचà¥à¤¯à¤¾ नियमांचा दोष %s:%u: बà¥à¤²à¥‰à¤• नावाशिवाय सà¥à¤°à¥‚ होतो."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "रचनेचà¥à¤¯à¤¾ नियमांचा दोष : %s:%u: मालफॉरà¥à¤®à¤¡à¥ टॅग"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "रचनेचà¥à¤¯à¤¾ नियमांचा दोष %s:%u: मà¥à¤²à¥à¤¯à¤¾à¤‚चà¥à¤¯à¤¾ नंतर अधिक जंक"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "रचनेचà¥à¤¯à¤¾ नियमांचा दोष %s:%u: दिशादरà¥à¤¶à¤• फकà¥à¤¤ उचà¥à¤š पातळीवर केले जाऊ शकतात"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "रचनेचà¥à¤¯à¤¾ नियमांचा दोष %s:%u: खूपच à¤à¤•à¤¾à¤¤ à¤à¤• इनकà¥à¤²à¥‚डसà¥"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "रचनेचà¥à¤¯à¤¾ नियमांचा दोष %s:%u: हà¥à¤¯à¤¾ पासून समाविषà¥à¤Ÿ "
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "नियम रचनेचा दोष %s:%u: '%s' दिशादरà¥à¤¶à¤• असहायà¥à¤¯à¤•à¤¾à¤°à¥€"
+
+#: apt-pkg/contrib/configuration.cc
+#, fuzzy, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr "रचनेचà¥à¤¯à¤¾ नियमांचा दोष %s:%u: दिशादरà¥à¤¶à¤• फकà¥à¤¤ उचà¥à¤š पातळीवर केले जाऊ शकतात"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "नियम रचनेचा दोष %s:%u: फाईलचà¥à¤¯à¤¾ अंती अधिक जंक"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem unlinking the file %s"
+msgstr "फाईल अनलिंकिंग करणà¥à¤¯à¤¾à¤¤ अडचण"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "फकà¥à¤¤ वाचणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ कà¥à¤²à¥‚प संचिका %s साठी कà¥à¤²à¥‚पबंदचा वापर करीत नाही"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "%s कà¥à¤²à¥‚प फाईल उघडता येत नाही"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "%s nfs(नेटवरà¥à¤• फाईल सिसà¥à¤Ÿà¥€à¤®) माऊंटेड कà¥à¤²à¥à¤ª फाईल ला कà¥à¤²à¥à¤ª /बंद करता येत नाही"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "%s कà¥à¤²à¥à¤ª मिळवता येत नाही"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "%s साठी थांबलो पण ते तेथे नवà¥à¤¹à¤¤à¥‡"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "%s उपकà¥à¤°à¤¿à¤¯à¥‡à¤²à¤¾ सेगमेंटेशन दोष पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¤¾."
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "%s उपकà¥à¤°à¤¿à¤¯à¥‡à¤²à¤¾ सेगमेंटेशन दोष पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¤¾."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "%s उपकà¥à¤°à¤¿à¤¯à¥‡à¤¨à¥‡ (%u) तà¥à¤°à¥à¤Ÿà¥€ कोड दिलेला आहे"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "%s उपकà¥à¤°à¤¿à¤¯à¤¾ अचानकपणे बाहेर पडली"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "तà¥à¤°à¥à¤Ÿà¥€ वाचा"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "लिहिणà¥à¤¯à¤¾à¤¤ तà¥à¤°à¥à¤Ÿà¥€"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "फाईल बंद करणà¥à¤¯à¤¾à¤¤ अडचण"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "आयपीसी उपकà¥à¤°à¤¿à¤¯à¤¾ तयार करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "दाबक(संकलितकरà¥à¤¤à¤¾) करà¥à¤¯à¤¾à¤¨à¥à¤µà¤¿à¤¤ करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "%s फाईल उघडता येत नाही"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Could not open file descriptor %d"
+msgstr "%s साठी पाईप उघडता येत नाही"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "वाचा, %lu अजूनही वाचणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ आहे पण आता काही उरली नाही"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "लिहा, %lu अजूनही लिहिणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ आहे पण लिहिता येत नाही"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the file %s"
+msgstr "फाईल बंद करणà¥à¤¯à¤¾à¤¤ अडचण"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "संचिकेची syncing समसà¥à¤¯à¤¾"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "संचिकेची syncing समसà¥à¤¯à¤¾"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "%s सà¥à¤Ÿà¥…ट करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "%s मधà¥à¤¯à¥‡ लिहिणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥ "
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "रिकामी फाईल mmap करता येणार नाही"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "mmap चे %lu बाईटसॠकरता येणार नाहीत"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "%s साठी पाईप उघडता येत नाही"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to close mmap"
+msgstr "%s उघडणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to synchronize mmap"
+msgstr "जारी करणà¥à¤¯à¤¾à¤¸ करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "mmap चे %lu बाईटसॠकरता येणार नाहीत"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "फाईल छोटी करणे असफल"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... चूक/तà¥à¤°à¥à¤Ÿà¥€!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... à¤à¤¾à¤²à¥‡"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... à¤à¤¾à¤²à¥‡"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "%s निवडक भाग सापडत नाही"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Unable to parse Release file %s"
+msgstr "%s (1) पॅकेज फाईल पारà¥à¤¸ करणà¥à¤¯à¤¾à¤¤ असमरà¥à¤¥"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "No sections in Release file %s"
+msgstr "लकà¥à¤·à¤¾à¤¤ घà¥à¤¯à¤¾,%s à¤à¤µà¤œà¥€ %s ची निवड करत आहे \n"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "%s डायवà¥à¤¹à¤°à¥à¤œà¤¨ फाईलमधà¥à¤¯à¥‡ अवैध ओळ आहे:"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "%s पॅकेज फाईल पारà¥à¤¸ करणà¥à¤¯à¤¾à¤¤ असमरà¥à¤¥ (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, fuzzy, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "संचयिका यादीला कà¥à¤²à¥à¤ª लावणà¥à¤¯à¤¾à¤¤ असमरà¥à¤¥"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr ""
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "%s संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ होत आहे"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "%s संरचित होत आहे"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "%s काढून टाकत आहे"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removing %s"
+msgstr "%s संपूरà¥à¤£ काढून टाकले"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "संसà¥à¤¥à¤¾à¤ªà¤¨à¤¾-पशà¥à¤šà¤¾à¤¤ टà¥à¤°à¤¿à¤—र %s चालवत आहे"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "%s संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ à¤à¤¾à¤²à¥‡"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "'%s' संचयिका गहाळ आहे"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, fuzzy, c-format
+msgid "Could not open file '%s'"
+msgstr "%s फाईल उघडता येत नाही"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "%s तयार करित आहे"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "%s सà¥à¤Ÿà¥‡/मोकळे करीत आहे "
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "%s संरचने साठी तयार करत आहे"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "%s ला काढून टाकणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ तयारी करत आहे"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "%s काढून टाकले"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "%s संपूरà¥à¤£ काढून टाकणà¥à¤¯à¤¾à¤šà¥€ तयारी करत आहे"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "%s संपूरà¥à¤£ काढून टाकले"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "%s मधà¥à¤¯à¥‡ लिहिणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥ "
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "अवलंबित रचना बांधणी करत आहे"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "कंॅडिडेट आवृतà¥à¤¤à¥à¤¯à¤¾"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "अवलंबित/विसंबून असलेले उतà¥à¤ªà¤¾à¤¦à¤¨ "
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "सà¥à¤¥à¤¿à¤¤à¥€ माहिती वाचत आहे"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "%s StateFile उघडणे असफल"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "%s तातà¥à¤ªà¥à¤°à¤¤à¥à¤¯à¤¾ StateFile मधà¥à¤¯à¥‡ लिहिणे असफल"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "%i माहितीसंच लिहिले.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "%i गहाळ संचिकाबरोबर %i माहिती संच लिहिले.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "%i विजोड संचिकांबरोबर %i माहिती संच लिहिले\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "%i गहाळ संचिकाबरोबर आणि %i विजोड संचिकाबरोबर %i माहिती संच लिहिले\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, fuzzy, c-format
+msgid "Hash mismatch for: %s"
+msgstr "हॅश बेरीज जà¥à¤³à¤¤ नाही"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "'%s' पॅकेजींग पà¥à¤°à¤£à¤¾à¤²à¥€ सहायà¥à¤¯à¤•à¤¾à¤°à¥€ नाही"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "योगà¥à¤¯ असा पॅकेजिंग पà¥à¤°à¤£à¤¾à¤²à¥€ पà¥à¤°à¤•à¤¾à¤° निशà¥à¤šà¤¿à¤¤ करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥ "
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "%s फाईल उघडता येत नाही"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"हà¥à¤¯à¤¾à¤šà¥‡ आधिषà¥à¤ à¤¾à¤ªà¤¨ सà¥à¤°à¥ करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ अतà¥à¤¯à¤¾à¤µà¤¶à¥à¤¯à¤• तातà¥à¤ªà¥à¤°à¤¤à¥‡ काढà¥à¤¨ टाकणà¥à¤¯à¤¾à¤šà¥€ गरज आहे%s पॅकेज "
+"गà¥à¤‚तागà¥à¤‚तीमà¥à¤³à¥‡/Pre-Depends पूरà¥à¤µ अवलंबित आवरà¥à¤¤à¤¨.हे नेहमीच वाईट असते, पण जर तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ ते खरोखर "
+"करावयाचे असेल तर,APT::Force-LoopBreak परà¥à¤¯à¤¾à¤¯ कारà¥à¤¯à¤¾à¤¨à¥à¤µà¤¿à¤¤ करा."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "पॅकेज असà¥à¤¥à¤¾à¤ˆ सà¥à¤®à¥ƒà¤¤à¤¿à¤•à¥‹à¤·"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "पॅकेज असà¥à¤¥à¤¾à¤ˆ सà¥à¤®à¥ƒà¤¤à¤¿à¤•à¥‹à¤· फाईल खराब à¤à¤¾à¤²à¥€ आहे"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "पॅकेज असà¥à¤¥à¤¾à¤ˆ सà¥à¤®à¥ƒà¤¤à¤¿à¤•à¥‹à¤· फाईल ही विजोड आवृतà¥à¤¤à¥€ आहे"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "'%s' आवृतà¥à¤¤à¥€à¤•à¤°à¤£ पà¥à¤°à¤£à¤¾à¤²à¥€à¤²à¤¾ हे APT तांतà¥à¤°à¤¿à¤• मदत देऊ शकत नाही"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "पॅकेज असà¥à¤¥à¤¾à¤ˆ सà¥à¤®à¥ƒà¤¤à¥€à¤•à¥‹à¤· वेगळà¥à¤¯à¤¾ वासà¥à¤¤à¥à¤µà¤¿à¤¦à¥à¤¯à¥‡ साठी बनवला गेला"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "पॅकेज असà¥à¤¥à¤¾à¤ˆ सà¥à¤®à¥ƒà¤¤à¤¿à¤•à¥‹à¤· फाईल खराब à¤à¤¾à¤²à¥€ आहे"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "अवलंबित"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "पूरà¥à¤µ अवलंबित"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "सà¥à¤šà¤µà¤£à¥‡"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "परसà¥à¤ªà¤°à¤µà¤¿à¤°à¥‹à¤§"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "शिफारस"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "परत तà¥à¤¯à¤¾à¤ à¤¿à¤•à¤¾à¤£à¥€ आणा"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "तोडले"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "अपà¥à¤°à¤šà¤²à¤¿à¤¤"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "अतà¥à¤¯à¤¾à¤µà¤¶à¥à¤¯à¤•"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "आवशà¥à¤¯à¤•"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "मानक"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "अधिक"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "à¤à¤šà¥à¤›à¤¿à¤•"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "असà¥à¤¥à¤¾à¤¯à¥€ सà¥à¤®à¥ƒà¤¤à¤¿à¤•à¥‹à¤· मधà¥à¤¯à¥‡ विसंगत आवृतीकरण पà¥à¤°à¤£à¤¾à¤²à¥€ आहे"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "%s (पॅकेज शोधतांना) पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ करीत असतांना दोष आढळून आला"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"अरेवा!, तà¥à¤®à¥à¤¹à¥€ तर हà¥à¤¯à¤¾ à¤à¤ªà¤¿à¤Ÿà¥€à¤šà¥à¤¯à¤¾ कारà¥à¤¯à¤•à¥à¤·à¤®à¤¤à¥‡à¤ªà¥‡à¤•à¥à¤·à¤¾à¤¹à¥€ पॅकेज नांवांचà¥à¤¯à¤¾ संखà¥à¤¯à¥‡à¤šà¥€ मरà¥à¤¯à¤¾à¤¦à¤¾ ओलांडली "
+"आहे."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr ""
+"अरेवा!, तà¥à¤®à¥à¤¹à¥€ तर हà¥à¤¯à¤¾ à¤à¤ªà¤¿à¤Ÿà¥€à¤šà¥à¤¯à¤¾ कारà¥à¤¯à¤•à¥à¤·à¤®à¤¤à¥‡à¤ªà¥‡à¤•à¥à¤·à¤¾à¤¹à¥€ आवृतà¥à¤¤à¥à¤¯à¤¾ संखà¥à¤¯à¥‡à¤šà¥€ मरà¥à¤¯à¤¾à¤¦à¤¾ ओलांडली आहे."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "अरेवा!, तà¥à¤®à¥à¤¹à¥€ तर हà¥à¤¯à¤¾ à¤à¤ªà¥à¤Ÿà¤šà¥à¤¯à¤¾ कारà¥à¤¯à¤•à¥à¤·à¤®à¤¤à¥‡à¤ªà¥‡à¤•à¥à¤·à¤¾à¤¹à¥€ विवरण संखà¥à¤¯à¥‡à¤šà¥€ मरà¥à¤¯à¤¾à¤¦à¤¾ ओलांडली आहे."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+"अरेवा!, तà¥à¤®à¥à¤¹à¥€ तर हà¥à¤¯à¤¾ à¤à¤ªà¤¿à¤Ÿà¥€à¤šà¥à¤¯à¤¾ कारà¥à¤¯à¤•à¥à¤·à¤®à¤¤à¥‡à¤ªà¥‡à¤•à¥à¤·à¤¾à¤¹à¥€ अवलंबित/विसंबून असलेलà¥à¤¯à¤¾ संखà¥à¤¯à¥‡à¤šà¥€ मरà¥à¤¯à¤¾à¤¦à¤¾ "
+"ओलांडली आहे."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "पॅकेज यादà¥à¤¯à¤¾ वाचत आहोत"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "IO तà¥à¤°à¥à¤Ÿà¥€ उगम निवडक संचयसà¥à¤¥à¤¾à¤¨à¤¾à¤¤ संगà¥à¤°à¤¹à¤¿à¤¤ होत आहे"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "'%s' पà¥à¤°à¤•à¤¾à¤°à¤šà¥€ निरà¥à¤¦à¥‡à¤¶à¤• संचिका सहायà¥à¤¯à¤•à¤¾à¤°à¥€ नाही"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, fuzzy, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "पसंतीचà¥à¤¯à¤¾ संचिकेत अवैध माहितीसंच, पॅकेजला शीरà¥à¤·à¤• नाही "
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "%s पिनचा पà¥à¤°à¤•à¤¾à¤° समजलेला नाही"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "पिन करिता पà¥à¤°à¤¾à¤§à¤¾à¤¨à¥à¤¯/अगà¥à¤°à¤•à¥à¤°à¤® (किंवा शूनà¥à¤¯)निरà¥à¤¦à¥‡à¤¶à¥€à¤¤ केलेला नाही"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "वà¥à¤¯à¤‚गीत/हिडीस दà¥à¤°à¥à¤²à¤•à¥à¤·à¤¿à¤¤ केले %s रेषा %lu #1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "%s उघडत आहे"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤ सà¥à¤šà¥€ %2$s (पà¥à¤°à¤•à¤¾à¤°) मधà¥à¤¯à¥‡ %1$u वाईट/वà¥à¤¯à¤‚ग रेषा"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "%s सà¥à¤¤à¥à¤°à¥‹à¤¤ सà¥à¤šà¥€à¤®à¤§à¥à¤¯à¥‡ %u रेषेवर '%s' पà¥à¤°à¤•à¤¾à¤° माहित नाही "
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤ सà¥à¤šà¥€ %2$s (पà¥à¤°à¤•à¤¾à¤°) मधà¥à¤¯à¥‡ %1$u वाईट/वà¥à¤¯à¤‚ग रेषा"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "%s सà¥à¤¤à¥à¤°à¥‹à¤¤ सà¥à¤šà¥€à¤®à¤§à¥à¤¯à¥‡ %u रेषेवर '%s' पà¥à¤°à¤•à¤¾à¤° माहित नाही "
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "तà¥à¤®à¥à¤¹à¥€ तà¥à¤®à¤šà¥à¤¯à¤¾ उगमसà¥à¤¥à¤¾à¤¨ यादीत URI घाला"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "%s %s आणणे असफल"
+
+#: apt-pkg/update.cc
+#, fuzzy
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"काही अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾ संचयिका डाऊनलोड करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥,तà¥à¤¯à¤¾ दà¥à¤°à¥à¤²à¤•à¥à¤·à¤¿à¤¤ à¤à¤¾à¤²à¥à¤¯à¤¾, किंवा "
+"तà¥à¤¯à¤¾à¤à¤µà¤œà¥€ जà¥à¤¨à¥à¤¯à¤¾ वापरलà¥à¤¯à¤¾ गेलà¥à¤¯à¤¾."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "पà¥à¤¢à¤¿à¤² आवृतà¥à¤¤à¥€à¤šà¥€ गणती करीत आहे"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "दाबा:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "मिळवा:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "आय.जी.à¤à¤¨.:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "दोष इ.आर.आर.:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "%s (%sB/s) मधà¥à¤¯à¥‡ %sB मिळविला\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr "[काम करत आहे]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"माधà¥à¤¯à¤® बदल: कृपया नाव घातलेली सीडी घाला\n"
+"%s'\n"
+"'%s' डà¥à¤°à¤¾à¤ˆà¤µà¥à¤¹ मधà¥à¤¯à¥‡ व à¤à¤‚टर कळ दाबा\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "डिपेनà¥à¤¡à¤¨à¥à¤¸à¥€à¤œ बरोबर/दà¥à¤°à¥‚सà¥à¤¤ करत आहे..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr "अयशसà¥à¤µà¥€/चूकीचे à¤à¤¾à¤²à¥‡."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "डिपेनà¥à¤¡à¤¨à¥à¤¸à¥€à¤œ बरोबर करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥ आहे "
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "आवृतà¥à¤¤à¥€à¤•à¥ƒà¤¤ संच कमीतकमी करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr "à¤à¤¾à¤²à¥‡"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "हे बरोबर करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ `apt-get -f संसà¥à¤¥à¤¾à¤ªà¤¨à¤¾' पà¥à¤°à¥‹à¤—à¥à¤°à¤¾à¤® चालू करावा लागेल."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"अनमेट डिपेंडनà¥à¤¸à¥€à¤œ.à¤à¤ªà¥€à¤Ÿà¥€-गेट -à¤à¤« संसà¥à¤¥à¤¾à¤ªà¤¨ ('apt --fix-broken install') पॅकेजशिवाय "
+"पà¥à¤°à¤¯à¤¤à¥à¤¨ करा (किंवा परà¥à¤¯à¤¾à¤¯ सांगा)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "सूचना, '%s' रिजेकà¥à¤¸ साठी %s ची निवड करत आहे\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "सूचना, '%s' रिजेकà¥à¤¸ साठी %s ची निवड करत आहे\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "सूचना, '%s' रिजेकà¥à¤¸ साठी %s ची निवड करत आहे\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "%s हे आभासी पॅकेज हà¥à¤¯à¤¾à¤‚चà¥à¤¯à¤¾à¤•à¤¡à¥‚न तरतूद केले आहे,:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr "[संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ केले]"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Not candidate version]"
+msgstr "कंॅडिडेट आवृतà¥à¤¤à¥à¤¯à¤¾"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "तà¥à¤®à¥à¤¹à¥€ संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ à¤à¤• निशà¥à¤šà¤¿à¤¤ सà¥à¤ªà¤·à¥à¤Ÿà¤ªà¤£à¥‡ निवडले पाहिजे."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"%s पॅकेज उपलबà¥à¤§ नाही, पण दà¥à¤¸à¤±à¥à¤¯à¤¾ पॅकेजचà¥à¤¯à¤¾ संदरà¥à¤­à¤¾à¤¨à¥‡.\n"
+"याचा अरà¥à¤¥ असाही आहे की पॅकेज सापडत नाही,ते कालबाहà¥à¤¯ किंवा \n"
+" मà¥à¤¹à¤£à¤œà¥‡ ते दà¥à¤¸à¤±à¥à¤¯à¤¾ उगमातून उपलबà¥à¤§\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "तथापि खालील पॅकेजेस मधà¥à¤¯à¥‡ बदल à¤à¤¾à¤²à¤¾:"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "%s पॅकेजला संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ कॅनà¥à¤¡à¤¿à¤¡à¥‡à¤Ÿ नाही"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr ""
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "%s पॅकेज संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ केलेले नाही,मà¥à¤¹à¤£à¥‚न काढले नाही\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "%s पॅकेज संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ केलेले नाही,मà¥à¤¹à¤£à¥‚न काढले नाही\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "लकà¥à¤·à¤¾à¤¤ घà¥à¤¯à¤¾,%s à¤à¤µà¤œà¥€ %s ची निवड करत आहे \n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "हà¥à¤¯à¤¾ APT ला सà¥à¤ªà¤° काऊ पॉवरà¥à¤¸ आहेत"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "पॅकेजेस सापडले नाहीत"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "धोकà¥à¤¯à¤¾à¤šà¥€ सूचना:खालील पॅकेजेसॠपà¥à¤°à¤®à¤¾à¤£à¤¿à¤¤ करॠशकत नाही! "
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "पà¥à¤°à¤®à¤¾à¤£à¥€à¤•à¤°à¤£à¤¾à¤šà¥€ धोकà¥à¤¯à¤¾à¤šà¥€ सूचना दà¥à¤°à¥à¤²à¤•à¥à¤·à¤¿à¤¤ करा.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "काही पॅकेजेसचे पà¥à¤°à¤®à¤¾à¤£à¤¿à¤•à¤°à¤£ होऊ शकत नाही"
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid "Install these packages without verification?"
+msgstr "पडताळून पाहिलà¥à¤¯à¤¾à¤¶à¤¿à¤µà¤¾à¤¯ ही पॅकेजेस संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करायची का [हो/नाही]?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "काही अडचणी आहेत आणि --force-yes शिवाय -y वापरला गेला"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "%s मधà¥à¤¯à¥‡ रिकामी जागा सांगू शकत नाही"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "%s मधà¥à¤¯à¥‡ तà¥à¤®à¤šà¥à¤¯à¤¾à¤•à¤¡à¥‡ पà¥à¤°à¥‡à¤¶à¥€ जागा नाही."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "डाऊनलोड डिरेकà¥à¤Ÿà¤°à¥€ कà¥à¤²à¥‚पबंद करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"काही पॅकेजेस संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ होत नाहीत. याचा अरà¥à¤¥ असा आहे की तà¥à¤®à¥à¤¹à¥€\n"
+"अशकà¥à¤¯ परिसà¥à¤¥à¤¿à¤¤à¥€à¤šà¥€ विनंती केली होती. किंवा जर तà¥à¤®à¥à¤¹à¥€ असà¥à¤¥à¤¿à¤°\n"
+"विभागणी असणारी पण हवी असणारी, तयार केली नसलेली पॅकेजेस वापरत असाल \n"
+"किंवा ती येणाऱà¥à¤¯à¤¾à¤‚पैकी बाहेर हलविली असतील."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "खालील माहिती परिसà¥à¤¥à¤¿à¤¤à¥€ निवळणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ मदत ठरू शकेल:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "तà¥à¤Ÿà¤²à¥‡à¤²à¥€ पॅकेजेस"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"काही आरà¥à¤•à¤¾à¤‡à¤µà¥à¤¹à¤œ आणणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥, कदाचित apt-get रन करà¥à¤¨ अदà¥à¤¯à¤¯à¤¾à¤µà¤¤ करा किंवा --fix- "
+"बरोबर पà¥à¤°à¤¯à¤¤à¥à¤¨ कराहरवलेले/गहाळ?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "अंतरà¥à¤—त तà¥à¤°à¥à¤Ÿà¥€, तà¥à¤Ÿà¤²à¥‡à¤²à¥à¤¯à¤¾ पॅकेजेस बरोबर संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ पॅकेजला आवाहन केले गेले/बोलावले गेले!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "पॅकेजेस कायमची काढायची आहेत पण रिमूवà¥à¤¹ अकारà¥à¤¯à¤•à¥à¤·à¤® केले आहे"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "काही अडचणी आहेत आणि --force-yes शिवाय -y वापरला गेला"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "काही अडचणी आहेत आणि --force-yes शिवाय -y वापरला गेला"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "अंतरà¥à¤—त तà¥à¤°à¥à¤Ÿà¥€,कà¥à¤°à¤® अजून संपला नाही"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr "किती विचितà¥à¤°...आकार जà¥à¤³à¤¤ नाहीत, ईमेल apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹à¤œà¤šà¥à¤¯à¤¾ %sB/%sB घेणà¥à¤¯à¤¾à¤šà¥€ गरज आहे\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹à¤œ%sB घेणà¥à¤¯à¤¾à¤šà¥€ गरज आहे.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "या कà¥à¤°à¤¿à¤¯à¥‡à¤¨à¤‚तर, %sB à¤à¤µà¤¢à¥€ अधिक डिसà¥à¤• जागा वापरली जाईल.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "या कà¥à¤°à¤¿à¤¯à¥‡à¤¨à¤‚तर, %sB डिसà¥à¤• जागा मोकळी होईल.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "कà¥à¤·à¥à¤²à¥à¤²à¤• फकà¥à¤¤ निरà¥à¤¦à¥‡à¤¶à¤¿à¤¤ केले आहे पण हे कà¥à¤·à¥à¤²à¥à¤²à¤• कृति/ऑपरेशन नाही."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "हो, मी मà¥à¤¹à¥à¤Ÿà¤²à¥à¤¯à¤¾à¤ªà¥à¤°à¤®à¤¾à¤£à¥‡ करा!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"तà¥à¤®à¥à¤¹à¥€ संभावà¥à¤¯ काहीतरी नà¥à¤•à¤¸à¤¾à¤¨à¤•à¤¾à¤°à¤• करणार होतात.\n"
+"पà¥à¤¢à¥‡ '%s' उकà¥à¤¤à¥€ मधà¥à¤¯à¥‡ लिहिणार \n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "वà¥à¤¯à¤¤à¥à¤¯à¤¯/बंद करा."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Do you want to continue?"
+msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ पà¥à¤¢à¥‡ जायचे आहे [Y/n]? "
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "काही संचिका डाऊनलोड करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "डाऊनलोड संपूरà¥à¤£ आणि डाऊनलोड मधà¥à¤¯à¥‡ फकà¥à¤¤ पदà¥à¤§à¤¤à¥€"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr ""
+"--fix- सापडत नाही आणि माधà¥à¤¯à¤®/मिडिया अदलाबदल हे सधà¥à¤¯à¤¾ तांतà¥à¤°à¤¿à¤• मदत देऊ शकत नाही"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "न सापडणारी पॅकेजेस नीट करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "संसà¥à¤¥à¤¾à¤ªà¤¨ खंडित करत आहे."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "आपण या गोषà¥à¤Ÿà¥€ काढून टाकता नये, ऑटोरिमूवà¥à¤¹à¤° सà¥à¤°à¥‚ करता येत नाही"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"हूं, AutoRemover ने काहीतरी नषà¥à¤Ÿ केलà¥à¤¯à¤¾à¤šà¥‡ दिसतेय, खरेतर असे वà¥à¤¹à¤¾à¤¯à¤²à¤¾ नको\n"
+"कृपया apt कडे बग रिपोरà¥à¤Ÿ दाखल करा. "
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "अंतरà¥à¤—त तà¥à¤°à¥à¤Ÿà¥€, AutoRemoverने सà¥à¤Ÿà¤«à¤²à¤¾ तोडले"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "खालील नवीन पॅकेजेस सà¥à¤µà¤¯à¤‚चलितपणे संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ à¤à¤¾à¤²à¥€ होती व आता आवशà¥à¤¯à¤• नाहीत:"
+msgstr[1] "खालील नवीन पॅकेजेस सà¥à¤µà¤¯à¤‚चलितपणे संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ à¤à¤¾à¤²à¥€ होती व आता आवशà¥à¤¯à¤• नाहीत:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "खालील नवीन पॅकेजेस सà¥à¤µà¤¯à¤‚चलितपणे संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ à¤à¤¾à¤²à¥€ होती व आता आवशà¥à¤¯à¤• नाहीत:"
+msgstr[1] "खालील नवीन पॅकेजेस सà¥à¤µà¤¯à¤‚चलितपणे संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ à¤à¤¾à¤²à¥€ होती व आता आवशà¥à¤¯à¤• नाहीत:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "ती काढून टाकणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ '%s' वापरा."
+msgstr[1] "ती काढून टाकणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ '%s' वापरा."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "खालील अतिरिकà¥à¤¤ पॅकेजेस संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ होतील:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "सà¥à¤šà¤µà¤²à¥‡à¤²à¥€ पॅकेजेस:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "शिफारस केलेली पॅकेजेस:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "%s सोडून देत आहे, ते आधिच संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ केले आहे आणि पà¥à¤¢à¤¿à¤² आवृतà¥à¤¤à¥€ निशà¥à¤šà¤¿à¤¤ केलेली नाही.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr "%s सोडून देत आहे, ते आधिच संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ केले आहे आणि पà¥à¤¢à¤¿à¤² आवृतà¥à¤¤à¥€ निशà¥à¤šà¤¿à¤¤ केलेली नाही.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "%s चे पà¥à¤¨à¤°à¥à¤¸à¤‚सà¥à¤¥à¤¾à¤ªà¤¨ शकà¥à¤¯ नाही, हे डाऊनलोड करता येत नाही.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s ही आधीच नविन आवृतà¥à¤¤à¥€ आहे.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s सà¥à¤µà¤¹à¤¸à¥à¤¤à¥‡ संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करायचे आहे.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "%s साठी %s (%s) निवडलेली आवृतà¥à¤¤à¥€.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "%s साठी %s (%s) निवडलेली आवृतà¥à¤¤à¥€.\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr "[संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ केले]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr "[संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ केले]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr "[संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ केले]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr "[संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ केले]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "पण %s संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ à¤à¤¾à¤²à¥‡"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "पण %s संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करायचे आहे"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "पण ते संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करणà¥à¤¯à¤¾à¤œà¥‹à¤—े नाही"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "पण ते आभासी पॅकेज आहे"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "पण ते संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ होणार नाही"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "पण ते संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ केले नाही"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr "किंवा"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "खालील पॅकेजेस मधà¥à¤¯à¥‡ नमिळणाऱà¥à¤¯à¤¾ निरà¥à¤­à¤°à¤¤à¤¾/ डिपेनà¥à¤¡à¤¨à¥à¤¸à¥€à¤œ आहेत:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "खालील नविन पॅकेजेस संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ होतील:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "खालील नविन पॅकेजेस कायमची काढून टाकली जातील:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "खालील पॅकेजेस परत ठेवली गेली:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "खालील पॅकेजेस पà¥à¤¢à¤¿à¤² आवृतà¥à¤¤à¥€à¤•à¥ƒà¤¤ होतील:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "खालील पॅकेजेस पà¥à¤¢à¤šà¥à¤¯à¤¾ आवृतà¥à¤¤à¥€à¤•à¥ƒà¤¤ होणार नाहीत:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "पà¥à¤¢à¤¿à¤² ठेवलेली पॅकेजेस बदलतील:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (चà¥à¤¯à¤¾ मà¥à¤³à¥‡ %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"धोकà¥à¤¯à¤¾à¤šà¥€ सूचना:खालील जरूरीची पॅकेजेस कायमची काढून टाकली जातील।\n"
+"तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ तà¥à¤®à¥à¤¹à¥€ काय करत आहात हे कळेपरà¥à¤¯à¤‚त असं करता येणार नाही!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu पà¥à¤¢à¥‡ आवृतà¥à¤¤à¥€à¤•à¥ƒà¤¤ केले, %lu नवà¥à¤¯à¤¾à¤¨à¥‡ संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ केले,"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu पà¥à¤¨à¤°à¥à¤¸à¤‚सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ केले,"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu मागील आवृतà¥à¤¤à¥€à¤•à¥ƒà¤¤ केले,"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu कायमचे काढून टाकणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ आणि %lu पà¥à¤¢à¤šà¥à¤¯à¤¾ आवृतà¥à¤¤à¥€à¤•à¥ƒà¤¤ à¤à¤¾à¤²à¥‡à¤²à¥€ नाही.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu संपूरà¥à¤£ संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ किंवा कायमची काढून टाकलेली नाही.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr ""
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr ""
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "होय"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+#, fuzzy
+msgid "You must give at least one search pattern"
+msgstr "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ फकà¥à¤¤ à¤à¤•à¤š नमà¥à¤¨à¤¾ दà¥à¤¯à¤¾à¤µà¤¾ लागेल"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "पॅकेज संचिका %s सिंकà¥à¤°à¥‹à¤¨à¤¾à¤‡à¤œ नाहीत"
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "पॅकेज संचिका:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "दृतिका सिंक नाही,पॅकेज संचिका कà¥à¤·-संदरà¥à¤­ करता येत नाही"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "à¤à¤•à¤¤à¥à¤°à¤¿à¤¤ पॅकेजेस:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr "अधिषà¥à¤ à¤¾à¤ªà¤¿à¤¤ केले:"
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr "उमेदवार:"
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(कोणताच नाही)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr "आवृतà¥à¤¤à¥€ कोषà¥à¤Ÿà¤•:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "%s पॅकेज सापडू शकले नाही"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "%s पॅकेज सापडू शकले नाही"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "%s पॅकेज सापडू शकले नाही"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "%s उगम पॅकेज यादी सà¥à¤°à¥‚ करता येत नाही"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "उगम शोधणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ किमान à¤à¤• पॅकेज देणे/सांगणे गरजेचे आहे"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "%s उगम पॅकेज शोधणे शकà¥à¤¯ नाही/शोधणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥ आहे"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "आधीच डाऊनलोड केलेली '%s' फाईल सोडून दà¥à¤¯à¤¾\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "उगम अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹à¤œ चा %sB/%sB घेणà¥à¤¯à¤¾à¤šà¥€ गरज आहे.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "उगम अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹à¤œà¤šà¤¾ %sB घेणà¥à¤¯à¤¾à¤šà¥€ गरज आहे.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "%s उगम घà¥à¤¯à¤¾\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "काही अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹à¤œ आणणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "%s मधà¥à¤¯à¥‡ आधीच उघडलेलà¥à¤¯à¤¾ उगमातील उघडलेलà¥à¤¯à¤¾à¤²à¤¾ सोडून दà¥à¤¯à¤¾ किंवा वगळा\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "'%s' आजà¥à¤žà¤¾ सà¥à¤Ÿà¥à¤¯à¤¾ करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "'dpkg-dev' पॅकेज संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ केले आहे का ते पडताळून पहा.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "बांधणी करणाऱà¥à¤¯à¤¾ आजà¥à¤žà¤¾ '%s' अयशसà¥à¤µà¥€.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "%s साठी बांधणी डिपेंडनà¥à¤¸à¥€ माहिती मिळवणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s ला बांधणी डिपेंडनà¥à¤¸ नाहीत.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr "बिलà¥à¤¡à¥‡à¤ªà¤¸à¥ कशासाठी ते पडताळणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ किमान à¤à¤• पॅकेज सांगणे गरजेचे आहे"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "बांधणी-डिपेंडनà¥à¤¸à¥€à¤œ कà¥à¤°à¤¿à¤¯à¤¾ पूरà¥à¤£ करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥ "
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "बांधणी-डिपेंडनà¥à¤¸à¥€à¤œ कà¥à¤°à¤¿à¤¯à¤¾ पूरà¥à¤£ करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥ "
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "%s ला पà¥à¤¨à¤°à¥à¤¨à¤¾à¤®à¤¾à¤‚कन %s करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥ "
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "पॅकेज %s आवृती %s मधà¥à¤¯à¥‡ à¤à¤• अनोळखी डीईपी:आहे\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "सà¥à¤§à¤¾à¤°à¤¿à¤¤ आवृतà¥à¤¤à¥€à¤šà¤¾ विधान आरà¥à¤—à¥à¤¯à¥à¤®à¥‡à¤‚टस घेऊ शकत नाही."
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "सà¥à¤§à¤¾à¤°à¤¿à¤¤ आवृतà¥à¤¤à¥€à¤šà¤¾ विधान आरà¥à¤—à¥à¤¯à¥à¤®à¥‡à¤‚टस घेऊ शकत नाही."
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "पॅकेजची सरà¥à¤µ नांवे: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total package structures: "
+msgstr "पॅकेजची सरà¥à¤µ नांवे: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " सामानà¥à¤¯ पॅकेजेसà¥: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " शà¥à¤§à¥à¤¦ आभासी पॅकेजेसà¥:"
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " à¤à¤•à¤®à¥‡à¤µ आभासी पॅकेजेसà¥:"
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr "मिशà¥à¤°à¤¿à¤¤ आभासी पॅकेजेसà¥:"
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " हरवलेले/गहाळ: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "à¤à¤•à¥‚ण सà¥à¤ªà¤·à¥à¤Ÿ आवृतà¥à¤¯à¤¾: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "à¤à¤•à¥‚ण सà¥à¤ªà¤·à¥à¤Ÿ विवरणे: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "à¤à¤•à¥‚ण निरà¥à¤­à¤°à¤¤à¤¾:"
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "à¤à¤•à¥‚ण वà¥à¤¹à¥€à¤ˆà¤†à¤°/संचिका परसà¥à¤ªà¤° संबंध:"
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "à¤à¤•à¥‚ण विव/संचिका परसà¥à¤ªà¤° संबंध:"
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "à¤à¤•à¥‚ण मॅपींगसॠतरतूद: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "à¤à¤•à¥‚ण à¤à¤•à¤¤à¥à¤°à¤¿à¤¤ अकà¥à¤·à¤°à¤¸à¤‚च:"
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "à¤à¤•à¥‚ण दà¥à¤°à¥à¤²à¤•à¥à¤·à¤¿à¤¤ अवकाश:"
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "हिशेबात घेतलेली à¤à¤•à¥‚ण अवकाश(जागा):"
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "उगमसà¥à¤¥à¤¾à¤¨à¤¾à¤šà¤¾ माहितीसंच दाखवा"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "regex नमà¥à¤¨à¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ पॅकेजची यादी शोधा"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "पॅकेजसाठी संसà¥à¤•à¤°à¤£à¤ªà¥‚रà¥à¤µ परावलंबन माहिती दाखवा"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "पॅकेजसाठी अतिपरावलंबन माहिती दाखवा"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "पॅकेजसाठी वाचनीय माहितीसंच दाखवा"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "सरà¥à¤µ पॅकेजेससाठी यादी तयार करा"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "धोरण निरà¥à¤§à¤¾à¤°à¤£à¥‡ दाखवा"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "या तबकडीला कृपया नाव दà¥à¤¯à¤¾ जसे डेबियन २ à¤à¤²à¤†à¤°à¤à¤² तबकडी १"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "कृपया तबकडी डà¥à¤°à¤¾à¤ˆà¤µà¥à¤¹à¤®à¤§à¥à¤¯à¥‡ ठेवून à¤à¤‚टर दाबा"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "%s ला पà¥à¤¨à¤°à¥à¤¨à¤¾à¤®à¤¾à¤‚कन %s करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥ "
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "तà¥à¤®à¤šà¥à¤¯à¤¾ संचामधील सरà¥à¤µ सीडीजसाठी याच कृतीची पà¥à¤¨à¤°à¤¾à¤µà¥ƒà¤¤à¥à¤¤à¥€ करा(हीच कृती करा)"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "चलितमूलà¥à¤¯ जोडीने नाहीत"
+
+#: cmdline/apt-config.cc
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"उपयोग : à¤à¤ªà¥à¤Ÿ - à¤à¤•à¥à¤¸à¥à¤Ÿà¥à¤°à¥…कà¥à¤Ÿ टेंपà¥à¤²à¥‡à¤Ÿà¥à¤¸ संचिका १[संचिका २..... ]\n"
+" \n"
+"à¤à¤ªà¥à¤Ÿ- à¤à¤•à¥à¤¸à¥à¤Ÿà¥…कà¥à¤Ÿ टेंमà¥à¤ªà¥à¤²à¥‡à¤Ÿà¥à¤¸ हे संरचना व नमà¥à¤¨à¥à¤¯à¤¾à¤šà¥€ माहिती काढणà¥à¤¯à¤¾à¤šà¥‡ साधन आहे \n"
+"डेबियन पॅकेजेस मधून \n"
+"\n"
+"परà¥à¤¯à¤¾à¤¯ : \n"
+" -h हा साहà¥à¤¯à¤¾à¤•à¤¾à¤°à¥€ मजकूर \n"
+" -t टेंप डिर निरà¥à¤§à¤¾à¤°à¤¿à¤¤ करा \n"
+" -c=? ही संरचना संचिका वाचा \n"
+" -o=? à¤à¤–ादा अहेतà¥à¤• संरचना परà¥à¤¯à¤¾à¤¯ निरà¥à¤§à¤¾à¤°à¤¿à¤¤ करा जसे- -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "debconf आवृतà¥à¤¤à¥€ मिळू शकत नाही,debconf अधिषà¥à¤ à¤¾à¤ªà¤¿à¤¤ à¤à¤¾à¤²à¥€ काय?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "%s पॅकेज सापडू शकले नाही"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s सà¥à¤µà¤¹à¤¸à¥à¤¤à¥‡ संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करायचे आहे.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "अंतरà¥à¤—त तà¥à¤°à¥à¤Ÿà¥€, अडचण निवारकाने सà¥à¤Ÿà¤«à¤²à¤¾ तोडले"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "पà¥à¤°à¥‹à¤—à¥à¤°à¤¾à¤® गटाला तांतà¥à¤°à¤¿à¤• मदत दिली:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"वापर: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get हा पॅकेज डाऊनलोड आणि संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ साधा आदेश रेखित\n"
+" संवादमंच आहे. नेहमी वापरले जाणारे आदेश मà¥à¤¹à¤£à¤œà¥‡ अपडेट\n"
+"आणि संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करा\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "पॅकेजचà¥à¤¯à¤¾ नवà¥à¤¯à¤¾ यादà¥à¤¯à¤¾à¤‚ पà¥à¤°à¤¾à¤ªà¥à¤¤ करा"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "आवृतà¥à¤¤à¥à¤¯à¤¾à¤‚चे शà¥à¤°à¥‡à¤£à¤¿à¤µà¤°à¥à¤§à¤¨ करा"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "नवीन पॅकेजेस संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करा(pkg हे libc6 आहे आणि libc6.deb नवà¥à¤¹à¥‡)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "पॅकेजेस कायमची काढा"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "पॅकेजेस कायमची काढा व साफ करा"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "वापरात नसलेली सरà¥à¤µ पॅकेजेस सà¥à¤µà¤¯à¤‚चलितपणे कायमची काढा"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "वितरण शà¥à¤°à¥‡à¤£à¤¿à¤µà¤°à¥à¤§à¤¨, पहा apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "निवडी रहित करा"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "उगमसà¥à¤¥à¤¾à¤¨ पॅकेजेससाठी बांधणी-डिपेंडनà¥à¤¸à¥€ संरचित करा।"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "डाऊनलोड केलेलà¥à¤¯à¤¾ अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹à¤œ फाईलà¥à¤¸ खोडून टाका"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "डाऊनलोड केलेलà¥à¤¯à¤¾ जà¥à¤¨à¥à¤¯à¤¾ अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹à¤œ फाईलà¥à¤¸ खोडून टाका"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "डिपेनà¥à¤¡à¤¨à¥à¤¸à¥€à¤œ तà¥à¤Ÿà¤²à¥‡à¤²à¥à¤¯à¤¾ नाहीत याची खातà¥à¤°à¥€ करा"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "उगमसà¥à¤¥à¤¾à¤¨ अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹à¤œ डाऊनलोड करा"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "उगम शोधणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ किमान à¤à¤• पॅकेज देणे/सांगणे गरजेचे आहे"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"उपयोग : à¤à¤ªà¥à¤Ÿ - à¤à¤•à¥à¤¸à¥à¤Ÿà¥à¤°à¥…कà¥à¤Ÿ टेंपà¥à¤²à¥‡à¤Ÿà¥à¤¸ संचिका १[संचिका २..... ]\n"
+" \n"
+"à¤à¤ªà¥à¤Ÿ- à¤à¤•à¥à¤¸à¥à¤Ÿà¥…कà¥à¤Ÿ टेंमà¥à¤ªà¥à¤²à¥‡à¤Ÿà¥à¤¸ हे संरचना व नमà¥à¤¨à¥à¤¯à¤¾à¤šà¥€ माहिती काढणà¥à¤¯à¤¾à¤šà¥‡ साधन आहे \n"
+"डेबियन पॅकेजेस मधून \n"
+"\n"
+"परà¥à¤¯à¤¾à¤¯ : \n"
+" -h हा साहà¥à¤¯à¤¾à¤•à¤¾à¤°à¥€ मजकूर \n"
+" -t टेंप डिर निरà¥à¤§à¤¾à¤°à¤¿à¤¤ करा \n"
+" -c=? ही संरचना संचिका वाचा \n"
+" -o=? à¤à¤–ादा अहेतà¥à¤• संरचना परà¥à¤¯à¤¾à¤¯ निरà¥à¤§à¤¾à¤°à¤¿à¤¤ करा जसे- -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"उपयोग : à¤à¤ªà¥à¤Ÿ - à¤à¤•à¥à¤¸à¥à¤Ÿà¥à¤°à¥…कà¥à¤Ÿ टेंपà¥à¤²à¥‡à¤Ÿà¥à¤¸ संचिका १[संचिका २..... ]\n"
+" \n"
+"à¤à¤ªà¥à¤Ÿ- à¤à¤•à¥à¤¸à¥à¤Ÿà¥…कà¥à¤Ÿ टेंमà¥à¤ªà¥à¤²à¥‡à¤Ÿà¥à¤¸ हे संरचना व नमà¥à¤¨à¥à¤¯à¤¾à¤šà¥€ माहिती काढणà¥à¤¯à¤¾à¤šà¥‡ साधन आहे \n"
+"डेबियन पॅकेजेस मधून \n"
+"\n"
+"परà¥à¤¯à¤¾à¤¯ : \n"
+" -h हा साहà¥à¤¯à¤¾à¤•à¤¾à¤°à¥€ मजकूर \n"
+" -t टेंप डिर निरà¥à¤§à¤¾à¤°à¤¿à¤¤ करा \n"
+" -c=? ही संरचना संचिका वाचा \n"
+" -o=? à¤à¤–ादा अहेतà¥à¤• संरचना परà¥à¤¯à¤¾à¤¯ निरà¥à¤§à¤¾à¤°à¤¿à¤¤ करा जसे- -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "पण ते संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ केले नाही"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s सà¥à¤µà¤¹à¤¸à¥à¤¤à¥‡ संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करायचे आहे.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s सà¥à¤µà¤¹à¤¸à¥à¤¤à¥‡ संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करायचे आहे.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s ही आधीच नविन आवृतà¥à¤¤à¥€ आहे.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s ही आधीच नविन आवृतà¥à¤¤à¥€ आहे.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "%s सà¥à¤µà¤¹à¤¸à¥à¤¤à¥‡ संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करायचे आहे.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "%s उघडणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "%s सà¥à¤µà¤¹à¤¸à¥à¤¤à¥‡ संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करायचे आहे.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "'dpkg-dev' पॅकेज संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ केले आहे का ते पडताळून पहा.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "%s सà¥à¤µà¤¹à¤¸à¥à¤¤à¥‡ संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करायचे आहे.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "%s सà¥à¤µà¤¹à¤¸à¥à¤¤à¥‡ संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करायचे आहे.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "अनोळखी पॅकेज माहिती संच!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "पॅकेज यादà¥à¤¯à¤¾ वाचत आहोत"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "à¤à¤•à¤¤à¥à¤°à¤¿à¤¤ पॅकेजेस:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "तà¥à¤Ÿà¤²à¥‡à¤²à¥€ पॅकेजेस"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "%s सà¥à¤µà¤¹à¤¸à¥à¤¤à¥‡ संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करायचे आहे.\n"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "सà¥à¤¥à¤¿à¤¤à¥€ माहिती वाचत आहे"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "चूकीचे मूलभूत निशà¥à¤šà¤¿à¤¤à¥€à¤•à¤°à¤£!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "पà¥à¤¢à¥‡ जाणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ à¤à¤‚टर दाबा."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "पà¥à¤°à¥à¤µà¥€ डाऊनलोड केलेलà¥à¤¯à¤¾ .deb संचयिका आपलà¥à¤¯à¤¾à¤²à¤¾ खोडून टाकायचà¥à¤¯à¤¾ आहेत का?"
+
+#: dselect/install
+#, fuzzy
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "काही तà¥à¤°à¥à¤Ÿà¥€ हà¥à¤¯à¤¾ उघडत असताना घडलà¥à¤¯à¤¾.मी संरचित करणार आहे"
+
+#: dselect/install
+#, fuzzy
+msgid "will be configured. This may result in duplicate errors"
+msgstr "पॅकेजेस जी संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ à¤à¤¾à¤²à¥€ आहे.याचा निकाल दà¥à¤ªà¥à¤ªà¤Ÿ तà¥à¤°à¥à¤Ÿà¥€ मà¥à¤¹à¤£à¥‚न होऊ शकतो"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "किंवा डिपेंडनà¥à¤¸à¥€à¤œ नसलà¥à¤¯à¤¾à¤®à¥à¤³à¥‡ तà¥à¤°à¥à¤Ÿà¥€ à¤à¤¾à¤²à¥à¤¯à¤¾. हे ठीक आहे, फकà¥à¤¤ तà¥à¤°à¥à¤Ÿà¥€"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"हà¥à¤¯à¤¾à¤µà¤° संदेश खूप महतà¥à¤¤à¥à¤µà¤¾à¤šà¥‡ आहेत.कृपया तà¥à¤¯à¤¾à¤‚ना नीट करा व संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करा पà¥à¤¨à¥à¤¹à¤¾ चालवा/सà¥à¤°à¥‚ करा"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "उपलबà¥à¤§ माहितीचे à¤à¤•à¤¤à¥à¤°à¥€à¤•à¤°à¤£ करत आहे"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "पॅकेजेसची विसà¥à¤¤à¤¾à¤°à¤¿à¤¤ यादी खूप मोठी आहे"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "तà¥à¤°à¥à¤Ÿà¥€ पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ मारà¥à¤—दरà¥à¤¶à¤¿à¤•à¤¾%s "
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "उगमसà¥à¤¥à¤¾à¤¨à¤¾à¤šà¥€ विसà¥à¤¤à¤¾à¤°à¤¿à¤¤ यादी खूप मोठी आहे"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "शीरà¥à¤·à¤• संचिकेमधून मजकूर संचिकेत लिहिणà¥à¤¯à¤¾à¤¤ तà¥à¤°à¥à¤Ÿà¥€"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "तà¥à¤°à¥à¤Ÿà¥€ पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ मजकूर %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"वापर: apt-ftparchive [options] command\n"
+"आजà¥à¤žà¤¾: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive डेबियन फाईलसंचासाठी अनà¥à¤•à¥à¤°à¤® संचिका निरà¥à¤®à¤¾à¤£ करतो.तो\n"
+" dpkg-scanpackages व dpkg-scansources करिता निरà¥à¤®à¤¿à¤¤à¥€à¤šà¥à¤¯à¤¾ संपूरà¥à¤£\n"
+" सà¥à¤µà¤‚यंचलित ते कारà¥à¤¯à¤•à¤¾à¤°à¥€ बदलावांपरà¥à¤¯à¤‚त अनेक शैलींना पाठबळ देतो\n"
+"\n"
+"apt-ftparchive हा .debsचà¥à¤¯à¤¾ तरà¥à¤°à¤šà¤¨à¥‡à¤ªà¤¾à¤¸à¥‚न पॅकेज संचिका निरà¥à¤®à¤¾à¤£ करतो \n"
+"पॅकेज संचिकेमधà¥à¤¯à¥‡ पà¥à¤°à¤¤à¥à¤¯à¥‡à¤• पॅकेज तसेच MD5 हॅश व संचिकाआकारामधील सरà¥à¤µ \n"
+" नियंतà¥à¤°à¤• कà¥à¤·à¥‡à¤¤à¥à¤°à¤¾à¤‚ची माहिती असते.अगà¥à¤°à¤•à¥à¤°à¤® आणि विभाग यांचà¥à¤¯à¤¾ मूलà¥à¤¯à¤¾à¤‚चा पà¥à¤°à¤­à¤¾à¤µ \n"
+"वाढविणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ ओवà¥à¤¹à¤°à¤°à¤¾à¤ˆà¤¡ संचिकेला पà¥à¤·à¥à¤Ÿà¤¿ दिलेली असते \n"
+"\n"
+"तसेच apt-ftparchive हा .dscs चà¥à¤¯à¤¾ तरूरचनेपासून उगमसà¥à¤¥à¤¾à¤¨ संचिका निरà¥à¤®à¤¾à¤£ करतो \n"
+"--source-override परà¥à¤¯à¤¾à¤¯à¤¾à¤šà¤¾ उपयोग à¤à¤–ादà¥à¤¯à¤¾ src ओवà¥à¤¹à¤°à¤°à¤¾à¤ˆà¤¡ संचिका नेमकेपणाने दाखविणà¥à¤¯à¤¾à¤¸ "
+"होतो \n"
+"\n"
+" 'packages' आणि 'sources' आजà¥à¤žà¤¾à¤µà¤²à¥€ तरूरचनेचà¥à¤¯à¤¾ मà¥à¤³à¤¾à¤¶à¥€ दिलà¥à¤¯à¤¾ जावà¥à¤¯à¤¾à¤¤ \n"
+"दà¥à¤µà¤¯à¤‚क मारà¥à¤—ाचा निरà¥à¤¦à¥‡à¤¶ पà¥à¤¨à¤°à¤¾à¤µà¤°à¥à¤¤à¥€ शोधाचà¥à¤¯à¤¾ पाऱà¥à¤¯à¤¾à¤•à¤¡à¥‡ केलेला असावा आणि \n"
+" ओवà¥à¤¹à¤°à¤°à¤¾à¤ˆà¤¡ संचिकेमधà¥à¤¯à¥‡ ओवà¥à¤¹à¤°à¤°à¤¾à¤ˆà¤¡ संकेत (फà¥à¤²à¥…गà¥à¤œ) असावेत आणि \n"
+" संचिकानामकà¥à¤·à¥‡à¤¤à¥à¤°à¥‡ असलà¥à¤¯à¤¾à¤¸ Pathprefix तà¥à¤¯à¤¾à¤‚ना जोडलेले असावेत.\n"
+"डेबियन archiveमधील नमà¥à¤¨à¥à¤¯à¤¾à¤¦à¤¾à¤–ल उपयोग : \n"
+"apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"परà¥à¤¯à¤¾à¤¯ : \n"
+" -h हा साहà¥à¤¯à¤¾à¤•à¤¾à¤°à¥€ मजकूर \n"
+"--md5 MD5 ची निरà¥à¤®à¤¿à¤¤à¥€ नियंतà¥à¤°à¤¿à¤¤ करा \n"
+" -s= उगमसà¥à¤¥à¤¾à¤¨ ओवà¥à¤¹à¤°à¤°à¤¾à¤ˆà¤¡ संचिका \n"
+" -q शांत \n"
+" -d= परà¥à¤¯à¤¾à¤¯à¥€ दृतिकादायी डेटाबेस निवडा \n"
+" --no-delink दà¥à¤µà¤¾ तोडणारा डिबग मारà¥à¤— समरà¥à¤¥ करा \n"
+" ---contents माहिती संचिकेची निरà¥à¤®à¤¿à¤¤à¥€ नियंतà¥à¤°à¤¿à¤¤ करा \n"
+" -c=? ही संरचना संचिका वाचा \n"
+" -o=? à¤à¤–ादा अहेतà¥à¤• संरचना परà¥à¤¯à¤¾à¤¯ निरà¥à¤§à¤¾à¤°à¤¿à¤¤ करा"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "निवडक भाग जà¥à¤³à¤¤ नाही"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "`%s' पॅकेज संचिका समà¥à¤¹à¤¾à¤¤à¥€à¤² काही संचिका गहाळ आहेत"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "DB खराब à¤à¤¾à¤²à¥€ होती, संचिका %s.old मà¥à¤¹à¤£à¥‚न पà¥à¤¨à¤°à¥à¤¨à¤¾à¤®à¤¾à¤‚कित केली"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "DB जà¥à¤¨à¥‡ आहे,%s पà¥à¤¢à¤šà¥à¤¯à¤¾ आवृतीसाठी पà¥à¤°à¤¯à¤¤à¥à¤¨ करत आहे"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"DB सà¥à¤µà¤°à¥à¤ª वैध नाही. जर तà¥à¤®à¥à¤¹à¥€ apt चà¥à¤¯à¤¾ जà¥à¤¨à¥à¤¯à¤¾ आवृतà¥à¤¤à¥€à¤ªà¤¾à¤¸à¥‚न पà¥à¤¢à¤¿à¤² आवृतà¥à¤¤à¥€à¤•à¥ƒà¤¤ करत असाल तर, "
+"कृपया माहितीसंच काढून टाका आणि पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤®à¤¿à¤¤ करा"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "%s: %s DB संचिका उघडणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "%s वाचणारा दà¥à¤µà¤¾ असमरà¥à¤¥"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹ मधà¥à¤¯à¥‡ नियंतà¥à¤°à¤£ माहिती संच नाही"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "संकेतक घेणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc-सà¥à¤®à¤°à¤£à¤¸à¥à¤¥à¤³ शोधणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "माहित नसलेली/ले संकà¥à¤·à¥‡à¤ª पदà¥à¤§à¤¤à¥€/अलगोरिथम '%s'"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "%s संकलित आऊटपà¥à¤Ÿ/निरà¥à¤—त साठी संकà¥à¤·à¥‡à¤ª संचाची गरज"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "उपकà¥à¤°à¤¿à¤¯à¥‡à¤šà¤¾ आयपीसी वाहिनी तयार करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "नविन पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾(पà¥à¤°à¥‹à¤¸à¥‡à¤¸) निरà¥à¤®à¤¾à¤£ करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "चॉईलà¥à¤¡(पà¥à¤°à¥‹à¤¸à¥‡à¤¸)ला संकलित करा"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "अंतरà¥à¤—त तà¥à¤°à¥à¤Ÿà¥€, %s तयार करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "IO ची उपकà¥à¤°à¤¿à¤¯à¤¾/संचिका असमरà¥à¤¥ "
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "MD5 कामपà¥à¤¯à¥à¤Ÿà¥€à¤‚ग करतांना वाचणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ असमरà¥à¤¥"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "%s उघडणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "वà¥à¤¯à¤‚गीत/हिडीस दà¥à¤°à¥à¤²à¤•à¥à¤·à¤¿à¤¤ केले %s रेषा %lu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "%s दà¥à¤°à¥à¤²à¤•à¥à¤·à¤¿à¤¤ संचिका वाचणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "वà¥à¤¯à¤‚गीत/हिडीस दà¥à¤°à¥à¤²à¤•à¥à¤·à¤¿à¤¤ केले %s रेषा %lu #1"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "वà¥à¤¯à¤‚गीत/हिडीस दà¥à¤°à¥à¤²à¤•à¥à¤·à¤¿à¤¤ केले %s रेषा %lu #2"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "वà¥à¤¯à¤‚गीत/हिडीस दà¥à¤°à¥à¤²à¤•à¥à¤·à¤¿à¤¤ केले %s रेषा %lu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "धोकà¥à¤¯à¤¾à¤šà¥€ सूचना:%s संचयिका वाचणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥ \n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "धो.सू.:%s सà¥à¤Ÿà¥‡à¤Ÿ करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E:"
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "धो.सू.:"
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "ई: संचिकेला लागू होणाऱà¥à¤¯à¤¾ चà¥à¤•à¤¾"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "%s सोडवणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "टà¥à¤°à¥€ चालणे असमरà¥à¤¥"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "%s उघडणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr "%s [%s] डी दà¥à¤µà¤¾\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "%s चा %s दà¥à¤µà¤¾ साधणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr "%sB हीट ची डिलींक मरà¥à¤¯à¤¾à¤¦à¤¾\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹ ला पॅकेज जागा नाही"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr "%s ला ओवà¥à¤¹à¤°à¤°à¤¾à¤ˆà¤¡/दà¥à¤°à¥à¤²à¤•à¥à¤·à¤¿à¤¤ जागा नाही\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr "%s देखभालकरà¥à¤¤à¤¾ हा %s आणि %s नाही \n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr "%s ला उगम ओवà¥à¤¹à¤°à¤°à¤¾à¤ˆà¤¡/दà¥à¤°à¥à¤²à¤•à¥à¤·à¤¿à¤¤ जागा नाही\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr "%s ला दà¥à¤µà¤¯à¤‚क ओवà¥à¤¹à¤°à¤°à¤¾à¤ˆà¤¡ जागा नाही\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "शीरà¥à¤·à¤•à¤¾à¤¸à¤¾à¤ à¥€ थांबले आहे...."
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "HTTP सरà¥à¤µà¥à¤¹à¤°à¤¨à¥‡ अवैध पà¥à¤°à¤¤à¥à¤¤à¥à¤¯à¥à¤¤à¥à¤¤à¤° शीरà¥à¤·à¤• पाठविले"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "वाईट शीरà¥à¤·à¤• ओळ"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "HTTP सरà¥à¤µà¥à¤¹à¤°à¤¨à¥‡ अवैध मजकूर-लांबी शीरà¥à¤·à¤• पाठविले "
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "HTTP सरà¥à¤µà¥à¤¹à¤°à¤¨à¥‡ अवैध मजकूर-विसà¥à¤¤à¤¾à¤° शीरà¥à¤·à¤• पाठविले"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "HTTP सरà¥à¤µà¥à¤¹à¤°à¤¨à¥‡ विसà¥à¤¤à¤¾à¤° तांतà¥à¤°à¤¿à¤• मदत जोडली"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "अपरिचित दिनांक पà¥à¤°à¤•à¤¾à¤°/सà¥à¤µà¤°à¥‚प "
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "चà¥à¤•à¥€à¤šà¤¾ शीरà¥à¤·à¤• डाटा"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "जोडणी अयशसà¥à¤µà¥€"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "अंतरà¥à¤—त तà¥à¤°à¥à¤Ÿà¥€"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "%s सीडी-रॉम माहिती संच वाचणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"कृपया सी-डी रॉम APT कडून ओळखणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ apt-cdrom चा वापर करा.apt-get update हे "
+"नवीन सीडी राॅम अधिक मिळवणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ वापरता येणार नाही"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "चूकीची सी-डी रॉम"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "%s मधील सीडी-रॉम अनमाऊंट करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥, अजूनही ते वापरता असेल."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "डिसà¥à¤• सापडत नाही"
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "फाईल सापडली नाही"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "%s (%s) ला जोडत आहे"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[आयपी:%s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "%s (f=%u t=%u p=%u) साठी सॉकेट तयार करू शकत नाही"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "%s:%s (%s). साठी जोडणी इनिशिà¤à¤Ÿ/पà¥à¤¢à¤¾à¤•à¤¾à¤°à¥€à¤¤ करू शकत नाही"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "%s:%s (%s) ला जोडू शकत नाही,जोडणी वेळेअभावी तà¥à¤Ÿà¤²à¥€"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "असमरà¥à¤¥"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "%s:%s (%s) ला जोडू शकत नाही"
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "%s ला जोडत आहे"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "%s रिà¤à¥‰à¤²à¥à¤µà¥à¤¹ होऊ शकत नाही "
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "'%s' रिà¤à¥‰à¤²à¥à¤µà¥à¤¹ करताना तातà¥à¤ªà¥à¤°à¤¤à¥€ तà¥à¤°à¥à¤Ÿà¥€"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "%s:%s' (%i) रिà¤à¥‰à¤²à¥à¤µà¥à¤¹ होत असताना काहीतरी वाईट घडले"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "%s:%s' (%i) रिà¤à¥‰à¤²à¥à¤µà¥à¤¹ होत असताना काहीतरी वाईट घडले"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "%s %s ला जोडणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "सà¥à¤Ÿà¥…ट करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "अवैध यू आर à¤à¤², सà¥à¤¥à¤¾à¤¨à¤¿à¤• यू आर आय à¤à¤¸ सà¥à¤°à¥‚ होऊ नये यापासून //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "लॉग इन करत आहे"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "पिअर नाव सांगणà¥à¤¯à¤¾à¤¸/सापडणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "सà¥à¤¥à¤¾à¤¨à¤¿à¤• नाव सांगणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "सरà¥à¤µà¥à¤¹à¤° ने संबंध जोडणà¥à¤¯à¤¾à¤¸ नकार दिला व सांगितले: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "सरà¥à¤µà¥à¤¹à¤°à¤¨à¥‡ %s सांगितले,यूजर असमरà¥à¤¥:"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "सरà¥à¤µà¥à¤¹à¤°à¤¨à¥‡ %s सांगितले, पास असमरà¥à¤¥:"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"पà¥à¤°à¥‰à¤•à¥à¤¸à¥€ सरà¥à¤µà¥à¤¹à¤° निरà¥à¤¦à¥‡à¤¶à¤¿à¤¤ केला पण लॉगीन सà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ नाही, पà¥à¤°à¤¾à¤ªà¥à¤¤ केलेले ::ftp:: पà¥à¤°à¥‰à¤•à¥à¤¸à¥€à¤²à¥‰à¤—ीन "
+"निररà¥à¤¥à¤• आहे."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "सरà¥à¤µà¥à¤¹à¤°à¤¨à¥‡ %s सांगितले, '%s' लॉग इन सà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ आजà¥à¤žà¤¾à¤µà¤²à¥€ असमरà¥à¤¥:"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "सरà¥à¤µà¥à¤¹à¤°à¤¨à¥‡ %s सांगितले: टाईप असमरà¥à¤¥:"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "वेळेअभावी संबंध जोडता येत नाही"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "सरà¥à¤µà¥à¤¹à¤°à¤¨à¥‡ संबंध जोडणी बंद केली"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "पà¥à¤°à¤¤à¤¿à¤¸à¤¾à¤§à¤¾à¤¨à¥‡ बफर भरà¥à¤¨ गेले."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "पà¥à¤°à¥‹à¤Ÿà¥‹à¤•à¥‰à¤² खराब à¤à¤¾à¤²à¥‡"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "सॉकेट तयार करू शकत नाही"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "डेटा सॉकेट जोडू शकत नाही,जोडणी वेळेअभावी बंद केली"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "पॅसिवà¥à¤¹ सॉकेट जोडता येत नाही"
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "गेटà¤à¤¡à¥à¤°à¥‡à¤¸à¤‡à¤¨à¤«à¥‹ लिसनिंग सॉकेट घेणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥ होते"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "सॉकेट चिकटवता येत नाही"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "सॉकेट वर à¤à¤•à¤¤à¤¾ येत नाही"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "सॉकेटचे नाव सांगता येत नाही"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "पोरà¥à¤Ÿ आजà¥à¤žà¤¾ पाठवता येत नाही/पोरà¥à¤Ÿ आजà¥à¤žà¤¾ पाठविणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "माहित नसलेला पतà¥à¤¤à¤¾ फॅमिली %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "ई.पी.आर.टी. चà¥à¤•à¤²à¥‡,सरà¥à¤µà¥à¤¹à¤°à¤¨à¥‡ %s सांगितले"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "डेटा सॉकेट जोडणी वेळेअभावी तà¥à¤Ÿà¤²à¥€"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "जोडणी सà¥à¤µà¤¿à¤•à¤¾à¤°à¤£à¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "फाईल हॅश करणà¥à¤¯à¤¾à¤¤ तà¥à¤°à¥à¤Ÿà¥€"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "सरà¥à¤µà¥à¤¹à¤°à¤¨à¥‡ %s सांगितले, फाईल मिळवणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "डेटा सॉकेट वेळेअभावी तà¥à¤Ÿà¤²à¥‡"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "सरà¥à¤µà¥à¤¹à¤°à¤¨à¥‡ %s सांगितले, डेटा सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरण चà¥à¤•à¤²à¥‡"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "पà¥à¤°à¤¶à¥à¤¨"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "जारी करणà¥à¤¯à¤¾à¤¸ करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "किमान à¤à¤• अवैध सही सापडली."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr "अंतरà¥à¤—त तà¥à¤°à¥à¤Ÿà¥€: चांगली सही, पण की ठसे सांगू शकत नाही?!"
+
+#: methods/gpgv.cc
+#, fuzzy
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"सहीची खातà¥à¤°à¥€ करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ '%s' कारà¥à¤¯à¤¾à¤¨à¥à¤µà¤¿à¤¤ करू शकत नाही (gnupg संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ केले आहे का?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "apt-key कारà¥à¤¯à¤¾à¤¨à¥à¤µà¤¿à¤¤ होत असताना अपरिचित तà¥à¤°à¥à¤Ÿà¥€"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "खालील सहà¥à¤¯à¤¾ अवैध आहेत:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr "खालील सहà¥à¤¯à¤¾à¤‚ची खातà¥à¤°à¥€ करता येत नाही कारण सारà¥à¤µà¤œà¤¨à¤¿à¤• कीउपलबà¥à¤§ नाही:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "फाईल मधà¥à¤¯à¥‡ लिहिणà¥à¤¯à¤¾à¤¤ चूक/तà¥à¤°à¥à¤Ÿà¥€"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "सरà¥à¤µà¥à¤¹à¤° मधून वाचणà¥à¤¯à¤¾à¤¤ चूक. लांब शेवट आणि बंद à¤à¤¾à¤²à¥‡à¤²à¥€ जोडणी"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "सरà¥à¤µà¥à¤¹à¤° मधून वाचणà¥à¤¯à¤¾à¤¤ चूक"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "फाईल मधà¥à¤¯à¥‡ लिहिणà¥à¤¯à¤¾à¤¤ चूक/तà¥à¤°à¥à¤Ÿà¥€"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "चà¥à¤•à¤²à¥‡/असमरà¥à¤¥ निवड करा"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "जोडणी वेळेअभावी तà¥à¤Ÿà¤²à¥€"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "निरà¥à¤—त फाईल मधà¥à¤¯à¥‡ लिहिताना तà¥à¤°à¥à¤Ÿà¥€/चूक"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "%s फाईल उघडता येत नाही"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "%s फाईल उघडता येत नाही"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr ""
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "बदलणà¥à¤¯à¤¾à¤šà¤¾ वेळ निशà¥à¤šà¤¿à¤¤ करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "जोडणी अकाली बंद à¤à¤¾à¤²à¥€"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "अनमेट डिपेंडनà¥à¤¸à¥€à¤œ.--fix-broken.वापरून पà¥à¤°à¤¯à¤¤à¥à¤¨ करा "
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ कदाचित 'apt --fix-broken install'(à¤à¤ªà¥€à¤Ÿà¥€-गेट -à¤à¤« संसà¥à¤¥à¤¾à¤ªà¤¨') पà¥à¤°à¥‹à¤—à¥à¤°à¤¾à¤® "
+#~ "चालू करावा लागेल'यात बदल करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€:"
+
+#~ msgid "(not found)"
+#~ msgstr "(मिळाले नाही)"
+
+#~ msgid " Package pin: "
+#~ msgstr "पॅकेज (पिन):"
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "पà¥à¤¢à¥€à¤² कळ ओळखचिनà¥à¤¹à¤¾à¤‚साठी सारà¥à¤µà¤œà¤¨à¤¿à¤• कळ उपलबà¥à¤§ नाही:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "%s संचिका डायवà¥à¤¹à¤°à¥à¤Ÿ केली आहे/वळवली आहे"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr "%s पॅकेज न सापडलà¥à¤¯à¤¾à¤¨à¥‡ %s साठी %s डिपेंडनà¥à¤¸à¥€ पूरà¥à¤£ होऊ शकत नाही"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr "%s पॅकेज न सापडलà¥à¤¯à¤¾à¤¨à¥‡ %s साठी %s डिपेंडनà¥à¤¸à¥€ पूरà¥à¤£ होऊ शकत नाही"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr "%s अवलंबितà¥à¤µ %s साठी पूरà¥à¤£ होणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥: संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ पॅकेज %s खूपच नवीन आहे"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "आवृतीची मागणी पूरà¥à¤£ करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ %s पॅकेजची आवृतà¥à¤¤à¥€ उपलबà¥à¤§ नाही,तà¥à¤¯à¤¾à¤®à¥à¤³à¥‡ %s साठी %s "
+#~ "डिपेंडनà¥à¤¸à¥€ पूरà¥à¤£ होऊ शकत नाही"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr "%s पॅकेज न सापडलà¥à¤¯à¤¾à¤¨à¥‡ %s साठी %s डिपेंडनà¥à¤¸à¥€ पूरà¥à¤£ होऊ शकत नाही"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "%s साठी %s डिपेंडनà¥à¤¸à¥€ पूरà¥à¤£ होणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "%s साठी बांधणी-डिपेंडनà¥à¤¸à¥€à¤œ पूरà¥à¤£ होऊ शकत नाही."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "%s दà¥à¤µà¤¾ मोकळा/सà¥à¤Ÿà¤¾ करणà¥à¤¯à¤¾à¤¸ अडचण"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "%s दà¥à¤µà¤¾ काढणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "वापर: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "à¤à¤ªà¥à¤Ÿà¤šà¥à¤¯à¤¾ दà¥à¤µà¤¯à¤‚क कॅश संचिका कौशलà¥à¤¯à¤¾à¤¨à¥‡ हाताळणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€, व तà¥à¤¯à¤¾à¤‚मधील माहितीची विचारणा "
+#~ "करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ à¤à¤ªà¥à¤Ÿ -कॅश हे निमà¥à¤¨à¤¸à¥à¤¤à¤°à¥€à¤¯ साधन आहे।\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "परà¥à¤¯à¤¾à¤¯ : \n"
+#~ "-h -हा साहà¥à¤¯à¤¾à¤•à¤¾à¤°à¥€ मजकूर\n"
+#~ "-p=? पॅकेज कॅश \n"
+#~ "-s=? उगमसà¥à¤¥à¤¾à¤¨ कॅश \n"
+#~ "-q-पà¥à¤°à¤—तीनिदरà¥à¤¶à¤• अकारà¥à¤¯à¤¾à¤¨à¥à¤µà¤¿à¤¤ करा \n"
+#~ "-i -न आढळलेलà¥à¤¯à¤¾ आजà¥à¤žà¥‡à¤¸à¤¾à¤ à¥€ महतà¥à¤¤à¥à¤µà¤¾à¤šà¥‡ विभाग दाखवा\n"
+#~ "-c=? ही संरचना संचिका वाचा\n"
+#~ "-o=? à¤à¤–ादा अहेतूक संरचना परà¥à¤¯à¤¾à¤¯ निरà¥à¤§à¤¾à¤°à¤¿à¤¤ करा उदा --o dir::cache=/tmp\n"
+#~ "अधिक माहितीसाठी apt-cache(8) and apt.conf(5) ची मॅनà¥à¤¯à¥à¤…ल पृषà¥à¤ à¥‡ पहा \n"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "वापर:apt-sortpkgs [परà¥à¤¯à¤¾à¤¯] फाईल१[फाईल २...]\n"
+#~ "\n"
+#~ " apt-sortpkgs हे पॅकेज फाईलà¥à¤¸à¤šà¤‚ वरà¥à¤—ीकरण करणारी à¤à¤• साधी आजà¥à¤žà¤¾à¤µà¤²à¥€ आहे. -s परà¥à¤¯à¤¾à¤¯ "
+#~ "हा फाईल\n"
+#~ "कà¥à¤ à¤²à¥à¤¯à¤¾ पà¥à¤°à¤•à¤¾à¤°à¤šà¥€ आहे हे दाखवणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ वापरतात.\n"
+#~ "\n"
+#~ "परà¥à¤¯à¤¾à¤¯\n"
+#~ " -h हा मदत मजकूर\n"
+#~ " -s उगमसà¥à¤¥à¤¾à¤¨ फाईल वापरा\n"
+#~ " -c=? ही संरचना फाईल वाचा\n"
+#~ " -o=?- अनियंतà¥à¤°à¤¿à¤¤ संरचना परà¥à¤¯à¤¾à¤¯ निशà¥à¤šà¤¿à¤¤ करा,eg -o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "चाईलà¥à¤¡ पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ अयशसà¥à¤µà¥€"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "उगम शोधणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ किमान à¤à¤• पॅकेज देणे/सांगणे गरजेचे आहे"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "पाईप तयार करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "exec gzip करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s हे %s करिता %s %s वर संगà¥à¤°à¤¹à¤¿à¤¤\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "संचिका * तयार करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤ सà¥à¤šà¥€ %s (यूआरआय पारà¥à¤¸) मधà¥à¤¯à¥‡ %lu वाईट/वà¥à¤¯à¤‚ग रेषा"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤ सà¥à¤šà¥€ %s (डीआयà¤à¤¸à¤Ÿà¥€ पारà¥à¤¸) मधà¥à¤¯à¥‡ %lu वाईट/वà¥à¤¯à¤‚ग रेषा"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤ सà¥à¤šà¥€ %s (डिआयà¤à¤¸à¤Ÿà¥€) मधà¥à¤¯à¥‡ %lu वाईट/वà¥à¤¯à¤‚ग रेषा"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤ सà¥à¤šà¥€ %s (डीआयà¤à¤¸à¤Ÿà¥€ पारà¥à¤¸) मधà¥à¤¯à¥‡ %lu वाईट/वà¥à¤¯à¤‚ग रेषा"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤ सà¥à¤šà¥€ %s (डीआयà¤à¤¸à¤Ÿà¥€ पारà¥à¤¸) मधà¥à¤¯à¥‡ %lu वाईट/वà¥à¤¯à¤‚ग रेषा"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤ सà¥à¤šà¥€ %s (डीआयà¤à¤¸à¤Ÿà¥€ पारà¥à¤¸) मधà¥à¤¯à¥‡ %lu वाईट/वà¥à¤¯à¤‚ग रेषा"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤ सà¥à¤šà¥€ %2$s (यूआरआय) मधà¥à¤¯à¥‡ %1$lu वाईट/वà¥à¤¯à¤‚ग रेषा"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤ सà¥à¤šà¥€ %2$s (डिआयà¤à¤¸à¤Ÿà¥€) मधà¥à¤¯à¥‡ %1$lu वाईट/वà¥à¤¯à¤‚ग रेषा"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤ सà¥à¤šà¥€ %2$s (यूआरआय पारà¥à¤¸) मधà¥à¤¯à¥‡ %1$lu वाईट/वà¥à¤¯à¤‚ग रेषा"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤ सà¥à¤šà¥€ %2$s (absolute dist) मधà¥à¤¯à¥‡ %1$lu वाईट/वà¥à¤¯à¤‚ग रेषा"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤ सà¥à¤šà¥€ %2$s (डीआयà¤à¤¸à¤Ÿà¥€ पारà¥à¤¸) मधà¥à¤¯à¥‡ %1$lu वाईट/वà¥à¤¯à¤‚ग रेषा"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr ""
+#~ "अवलंबित/विसंबून असणाऱà¥à¤¯à¤¾ संचिकांची पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ करीत असतांना पॅकेज %s %s सापडले नाही "
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "%s उगम पॅकेज यादी सà¥à¤°à¥‚ करता येत नाही"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "तरतूद/पà¥à¤°à¤µà¤²à¥‡à¤²à¥à¤¯à¤¾ संचिका संगà¥à¤°à¤¹à¤¿à¤¤ करीत आहे"
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "%s (1) पॅकेज फाईल पारà¥à¤¸ करणà¥à¤¯à¤¾à¤¤ असमरà¥à¤¥"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "विकà¥à¤°à¥‡à¤¤à¤¾ गट %s मधà¥à¤¯à¥‡ बोटाचे ठसे नाहीत"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "à¤à¤•à¥‚ण परावलंबित आवृतà¥à¤¤à¥€ अवकाश:"
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "%s मधà¥à¤¯à¥‡ पà¥à¤°à¥‡à¤¶à¥€ जागा नाही"
+
+#~ msgid "Done"
+#~ msgstr "à¤à¤¾à¤²à¥‡"
+
+#, fuzzy
+#~ msgid "No keyring installed in %s."
+#~ msgstr "संसà¥à¤¥à¤¾à¤ªà¤¨ खंडित करत आहे."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "अंतरà¥à¤—त तà¥à¤°à¥à¤Ÿà¥€,ऑलअपगà¥à¤°à¥‡à¤¡à¤¨à¥‡ सà¥à¤Ÿà¤«à¤²à¤¾ तोडले"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s हे वैध डीईबी पॅकेज नाही "
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "सिडी-रॉमचे माउंट सà¥à¤¥à¤¾à¤¨ %s वापरà¥à¤¨\n"
+#~ "सिडी-रॉम माउंट होत आहे\n"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr "हा वैध DEB अरà¥à¤•à¤¾à¤ˆà¤µà¥à¤¹ नाही, हà¥à¤¯à¤¾à¤²à¤¾ '%s', '%s' किंवा '%s' मेंबर नाही"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "à¤à¤®à¤¡à¥€à¥« बेरीज/MD5Sum जà¥à¤³à¤¤ नाही"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "मी %s पॅकेजकरीता संचिका शोधणà¥à¤¯à¤¾à¤¸ समरà¥à¤¥ नवà¥à¤¹à¤¤à¥‹. याचा अरà¥à¤¥ असाकी तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾à¤¹à¥‡ पॅकेज "
+#~ "सà¥à¤µà¤¹à¤¸à¥à¤¤à¥‡ सà¥à¤¥à¤¿à¤°/निशà¥à¤šà¤¿à¤¤ करणà¥à¤¯à¤¾à¤šà¥€ गरज आहे."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr "सतà¥à¤°à¤¨à¥‹à¤‚द लिहिता येत नाही, openpty() असफल (/dev/pts आरोहित नाही?)\n"
+
+#, fuzzy
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "%s संरचना फाईल उघडत आहे"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "%s कायमचे काढून टाकणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "%s तयार करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "% sinfo सà¥à¤Ÿà¥…ट करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr "info आणि temp संचिका सारखà¥à¤¯à¤¾à¤š फाईलपà¥à¤°à¤£à¤¾à¤²à¥€à¤¤ असणे आवशà¥à¤¯à¤• आहे"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "admin dir %sinfo असे बदलणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "पॅकेजचे नाव मिळवत असताना आंतरिक दोष/तà¥à¤°à¥à¤Ÿà¥€ मिळाली"
+
+#~ msgid "Reading file listing"
+#~ msgstr "फाईलचे लिसà¥à¤Ÿà¤¿à¤‚ग वाचत आहे"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "'%sinfo/%s'. जर तà¥à¤®à¥à¤¹à¥€ ही फाईल रिसà¥à¤Ÿà¥‹à¤…र करू शकला नाहीत.तर ती रिकामी करा आणि "
+#~ "लगेच हà¥à¤¯à¤¾ सारखी आवृतà¥à¤¤à¥€ असणारे पॅकेज पà¥à¤¨à¤°à¥à¤¸à¤‚सà¥à¤¥à¤¾à¤ªà¤¿à¤¤à¤•à¤°à¤¾!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "%sinfo/%s फाईल यादी वाचणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "नोड मिळवताना आंतरिक तà¥à¤°à¥à¤Ÿà¥€ मिळाली"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "%sdiversions ही डायवà¥à¤¹à¤°à¥à¤œà¤¨ फाईल उघडणà¥à¤¯à¤¾à¤¤ असमरà¥à¤¥"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "डायवà¥à¤¹à¤°à¥à¤œà¤¨ फाईल खराब à¤à¤¾à¤²à¥€ आहे"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "%s डायवà¥à¤¹à¤°à¥à¤œà¤¨ फाईलमधà¥à¤¯à¥‡ अवैध ओळ आहे:"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "डायवà¥à¤¹à¤°à¥à¤œà¤¨ मिळवताना आंतरिक तà¥à¤°à¥à¤Ÿà¥€ मिळाली"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "pkg असà¥à¤¥à¤¾à¤ˆ सà¥à¤®à¥ƒà¤¤à¥€à¤•à¥‹à¤· पà¥à¤°à¤¥à¤® इनिशिअलाईजà¥à¤¡ केला पाहिजे"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "पॅकेज शोधणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥: शिरà¥à¤·à¤•,आॅफसेट %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "आॅफसेट %lu, सदà¥à¤¯à¤¸à¥à¤¥à¤¿à¤¤à¥€ फाईलमधà¥à¤¯à¥‡ वाईट कॉनà¥à¤« फाईल भाग"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "ऑफसेट %lu, MD5. पारà¥à¤¸à¤¿à¤‚ग मधà¥à¤¯à¥‡ तà¥à¤°à¥à¤Ÿà¥€ "
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "%s मधà¥à¤¯à¥‡ बदलता येत नाही"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "वैध नियंतà¥à¤°à¤£ फाईल शोधणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "%s साठी पाईप उघडता येत नाही"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "%s कà¥à¤°à¤¿à¤¯à¥‡à¤ªà¤¾à¤¸à¥‚न चूक वाचा"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "%u अकà¥à¤·à¤°à¤¾à¤‚वर à¤à¤• शीरà¥à¤·à¤• ओळ मिळाली"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "वà¥à¤¯à¤‚गीत/हिडीस दà¥à¤°à¥à¤²à¤•à¥à¤·à¤¿à¤¤ केले %s रेषा %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "वà¥à¤¯à¤‚गीत/हिडीस दà¥à¤°à¥à¤²à¤•à¥à¤·à¤¿à¤¤ केले %s रेषा %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "वà¥à¤¯à¤‚गीत/हिडीस दà¥à¤°à¥à¤²à¤•à¥à¤·à¤¿à¤¤ केले %s रेषा %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "असंकलितकरà¥à¤¤à¤¾ "
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "वाचा, %lu अजूनही वाचणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ आहे पण आता काही उरली नाही"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "लिहा, %lu अजूनही लिहिणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ आहे पण लिहिता येत नाही"
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "%s (नविन पॅकेज) पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ करीत असतांना दोष आढळून आला"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "%s (वापरातील पॅकेज१) पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ करीत असतांना दोष आढळून आला"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "%s (NewFileDesc1) वर पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ सà¥à¤°à¥‚ असताना तà¥à¤°à¥à¤Ÿà¥€ उदà¥à¤­à¤µà¤²à¥€"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "%s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ करीत असतांना दोष आढळून आला(वापरातील पॅकेज२)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "%s(नविन संचिका आवृती१) पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ करीत असतांना दोष आढळून आला"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "%s (नविन आवृतà¥à¤¤à¥€ १) पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ करीत असतांना दोष आढळून आला"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "%s(वापरातील पॅकेज३) पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ करीत असतांना दोष आढळून आला"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "%s (NewFileDesc2) वर पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ सà¥à¤°à¥‚ असताना तà¥à¤°à¥à¤Ÿà¥€ उदà¥à¤­à¤µà¤²à¥€"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "%s (पॅकेज शोधतांना) पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ करीत असतांना दोष आढळून आला"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "%s (तरतूद/पà¥à¤°à¤µà¤²à¥‡à¤²à¥à¤¯à¤¾ संचिका जमा) पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ करीत असतांना दोष आढळून आला"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "आंतरिक तà¥à¤°à¥à¤Ÿà¥€, मेंबर शोधता येत नाही"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr ""
+#~ "दोष: ::gpgv:: कडून पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥‡à¤²à¤¾ ऑरà¥à¤—à¥à¤®à¥‡à¤‚ट सूचीचा परà¥à¤¯à¤¾à¤¯ खूप लांबीचा. बाहेर पडत आहे."
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "%s(नविन आवृती२) पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ करीत असतांना दोष आढळून आला"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "सà¥à¤¤à¥à¤°à¥‹à¤¤ सà¥à¤šà¥€ %s (विकà¥à¤°à¥‡à¤¤à¤¾ आयडी) मधà¥à¤¯à¥‡ %u वाईट/वà¥à¤¯à¤‚ग रेषा "
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "'%s': कीरिंग परà¥à¤¯à¤‚त पोहोचू शकत नाही"
+
+#~ msgid "Could not patch file"
+#~ msgstr "फाईल पॅच करता आली नाही"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "%s करिता टà¥à¤°à¤¿à¤—रà¥à¤¸ पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ करत आहे"
+
+#~ msgid "Dynamic MMap ran out of room"
+#~ msgstr "Dynamic MMap ला ज आगा कमी पडली"
+
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "जेवà¥à¤¹à¤¾ तà¥à¤®à¥à¤¹à¥€ à¤à¤•à¤¾ कà¥à¤°à¤¿à¤¯à¥‡à¤šà¥€ विनंती केली तेवà¥à¤¹à¤¾ असं की\n"
+#~ "ते पॅकेज संसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ होऊ शकत नाही आणि तà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ विरूदà¥à¤§ \n"
+#~ "दोष आढावà¥à¤¯à¤¾à¤šà¥€ नोंद ठेवली पाहिजे."
+
+#, fuzzy
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "ओळ %d खूप लांब (कमाल %d)"
+
+#, fuzzy
+#~ msgid "Line %d too long (max %d)"
+#~ msgstr "ओळ %d खूप लांब (कमाल %d)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc1)"
+#~ msgstr "%s(नविन संचिका आवृती१) पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ करीत असतांना दोष आढळून आला"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc2)"
+#~ msgstr "%s(नविन संचिका आवृती१) पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ करीत असतांना दोष आढळून आला"
+
+#, fuzzy
+#~ msgid "Stored label: %s \n"
+#~ msgstr "गà¥à¤°à¤¹à¤£ केलेले नामदरà¥à¤¶à¤•: %s \n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found %i package indexes, %i source indexes, %i translation indexes and "
+#~ "%i signatures\n"
+#~ msgstr ""
+#~ "%i पॅकेजेसची यादी/सूची , %i सà¥à¤¤à¥à¤°à¥‹à¤¤à¤¾à¤šà¥€ यादी/सूची आणि %i सà¥à¤µà¤¾à¤•à¥à¤·à¤±à¥à¤¯à¤¾/सिगनेचरà¥à¤¸ "
+#~ "सापडलà¥à¤¯à¤¾ \n"
+
+#, fuzzy
+#~ msgid "openpty failed\n"
+#~ msgstr "चà¥à¤•à¤²à¥‡/असमरà¥à¤¥ निवड करा"
diff --git a/po/nb.po b/po/nb.po
new file mode 100644
index 000000000..7ac5ec37c
--- /dev/null
+++ b/po/nb.po
@@ -0,0 +1,4293 @@
+# Norsk Bokmal translation of messages in APT.
+# The file is available under Gnu Public License version 2.
+# Get the license from http://www.gnu.org/licenses/gpl.txt
+# Copyright:
+# Lars Bahner <bahner@debian.org>, 2002-2003.
+# Axel Bojer <axelb@skolelinux.no>, 2003-2004.
+# Klaus Ade Johnstad <klaus@skolelinux.no>, 2004.
+# Bjorn Steensrud <bjornst@powertech.no>, 2004.
+# Hans Fredrik Nordhaug <hans@nordhaug.priv.no>, 2003, 2005-2010.
+# Petter Reinholdtsen <pere@hungry.com>, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2016-06-11 22:38+0200\n"
+"Last-Translator: Petter Reinholdtsen <pere@hungry.com>\n"
+"Language-Team: Norwegian Bokmål <i18n-no@lister.ping.uio.no>\n"
+"Language: nb\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 1.5\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Ugyldig arkivsignatur"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Feil ved lesing av arkivmedlemshode"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Ugyldig arkivmedlemshode %s"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Ugyldig arkivmedlemshode"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Arkivet er for kort"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Klarte ikke å lese arkivhodene"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Klarte ikke finne autentiseringsoppføring for: %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Ødelagt arkiv"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Tar-sjekksummen mislykkes, arkivet er ødelagt"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Ukjent TAR-hode: type %u, medlem %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Dette er ikke et gyldig DEB-arkiv, mangler «%s»-medlemmet"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Intern feil, fant ikke medlemmet %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Kontrollfila kan ikke tolkes"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Klarte ikke å skrive fila %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Klarte ikke å lukke fila %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Stien %s er for lang"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Pakker ut %s mer enn en gang"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "Katalogen %s er avledet"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Pakken prøver å skrive til avledningsmålet %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Avledningsstien er for lang"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Klarte ikke å få statusen på %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Klarte ikke å endre navnet på %s til %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "Mappa %s blir byttet ut med noe som ikke er en mappe"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Fant ikke knutepunktet i dens hash-spann"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Stien er for lang"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Skriver over pakketreff uten versjon for %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Fila %s/%s skriver over den tilsvarende fila i pakken %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Klarer ikke å lese %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Klarte ikke å få statusen på %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode ble startet på et knutepunkt som ennå er lenket"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Fant ikke nøkkelelementet."
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Klarte ikke å tildele avledning"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Intern feil i AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Prøver å skrive over en avledning, %s -> %s og %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Dobbel tillegging av avledning %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Dobbel oppsettsfil %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Katalogen %s er avledet"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Katalogen %s er avledet"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Katalogen %s er avledet"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Katalogen %s er avledet"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "Katalogen %s er avledet"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Klarte ikke å lese lenken %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Hashsummen stemmer ikke"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "klarte ikke å endre navnet, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Feil størrelse"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "Ugyldig operasjon %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Skrivefeil"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"En feil oppstod under signaturverifisering. Depotet er ikke oppdatert og den "
+"forrige indeksfilen vil bli brukt. GPG-feil: %s: %s\n"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "GPG-feil: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Konflikt mellom distribusjoner: %s (forventet %s men fant %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Klarte ikke å finne en fil for pakken %s. Det kan bety at du må ordne pakken "
+"selv (fordi arkitekturen mangler)."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr "Oversiktsfilene er ødelagte. Feltet «Filename:» mangler for pakken %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Kobler til %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Finner ikke metode-driveren %s."
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "Sjekk om pakken «dpkg-dev» er installert.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Metoden %s startet ikke korrekt"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "Sett inn disken merket «%s» i lagringsenheten «%s» og trykk Enter."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Listemappa %spartial mangler."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Arkivmappa %spartial mangler."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "Klarte ikke låse mappa %s"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "Oversiktsfil av typen «%s» støttes ikke"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Klarer ikke å endre %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Henter fil %li av %li (%s gjenværende)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Henter fil %li av %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"Pakka %s trenger å installeres på nytt, men jeg finner ikke lageret for den."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Feil, pkgProblemResolver::Resolve skapte et brudd, det kan skyldes pakker "
+"som holdes tilbake."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "Klarer ikke å rette problemene, noen ødelagte pakker er holdt tilbake."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "Pakkelista eller tilstandsfila kunne ikke fortolkes eller åpnes."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr ""
+"Det kan hende du vil kjøre «apt-get update» for å rette på disse problemene"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Kan ikke lese kildlista."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Kompileringsfeil i regulært uttrykk - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Utgave «%s» av «%s» ble ikke funnet"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Versjon «%s» av «%s» ble ikke funnet"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Klarte ikke å finne oppgave «%s»"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Klarte ikke finne noen pakken med regex «%s»"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Klarte ikke finne noen pakken med regex «%s»"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Klarer ikke å finne pakken %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr "Klarte ikke velge versjoner fra pakken «%s» siden den er kun virtuell"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"Klarte ikke velge nyeste versjon fra pakken «%s» siden den er kun virtuell"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+"Klarte ikke velge kandidatversjon fra pakken «%s» siden den ikke har noen "
+"kandidat"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"Klarte ikke velge installert versjon fra pakken «%s» siden den ikke er "
+"installert"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"Klarte ikke velge installert eller kandidatversjon fra pakken «%s» siden den "
+"har ingen av dem"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Linje %u i kildelista %s er for lang"
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Avmonterer CD-ROM ...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Bruker CD-ROM monteringspunkt %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Venter på CD-en...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Monterer CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Indentifiserer..."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Lagret merkelapp: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Leter gjennom CD for indeksfiler...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Fant %zu pakkeindekser, %zu kildeindekser, %zu oversettelsesindekser og %zu "
+"signaturer\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Klarte ikke finne noen Package-filer. Kanskje dette ikke er en Debian Disc "
+"eller du har valgt feil arkitektur?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Fant merkelapp «%s»\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Det er ikke et gyldig navn, prøv igjen.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"CD-en er kalt: \n"
+"«%s»\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Kopierer pakkelister..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Skriver ny kildeliste\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Kildelisteoppføringer for denne CD-en er:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Klarer ikke finne informasjonom %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Klarer ikke å fastsette monteringspunktet %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Klarer ikke å få statusen på CD-spilleren"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Kjenner ikke kommandolinjevalget «%c» (fra %s)."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Skjønner ikke kommandolinjevalget %s"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Kommandolinjevalget %s er ikke boolsk"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Valget %s krever et argument."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "Valg %s: Angivelsen av oppsettselementet må ha en =<verdi>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Valget %s må ha et heltallsargument, ikke «%s»"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Valget «%s» er for langt"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "Skjønner ikke %s. Prøv «true» eller «false»."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Ugyldig operasjon %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Ukjent typeforkortelse: «%c»"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Ã…pner oppsettsfila %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Syntaksfeil %s:%u: Blokka starter uten navn."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Syntaksfeil %s:%u: Feil på taggen"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Syntaksfeil %s:%u: Ugyldige angivelser etter verdien"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "Syntaksfeil %s:%u: Direktivene kan bare ligge i det øverste nivået"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Syntaksfeil %s:%u: For mange nøstede inkluderte filer"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Syntaksfeil %s:%u: Inkludert herfra"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Syntaksfeil %s:%u: Direktivet «%s» er ikke støttet"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr "Syntaksfeil %s:%u: clear-direktivet krever et valgtre som argument"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Syntaksfeil %s:%u: Ugyldige angivelser på slutten av fila"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Problem ved oppheving av lenke til fila %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Bruker ikke låsing for den skrivebeskyttede låsefila %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Klarte ikke åpne låsefila %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Bruker ikke låsing på den nfs-monterte låsefila %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Får ikke låst %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Ventet på %s, men den ble ikke funnet"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Underprosessen %s mottok et minnefeilsignal."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Underprosessen %s mottok signalet %u."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Underprosessen %s ga en feilkode (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Underprosessen %s avsluttet uventet"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Lesefeil"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Skrivefeil"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Problem ved låsing av gzip-fila %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr "Uventet slutt på fil"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Klarte ikke å opprette underprosessen IPC"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Klarte ikke å kjøre komprimeringen"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Klarte ikke åpne fila %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Klarte ikke åpne fildeskriptor %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "lese, har fremdeles %lu igjen å lese, men ingen igjen"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "skrive, har fremdeles %lu igjen å skrive, men klarte ikke å"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Problem ved låsing av fila %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Problem ved endring av navn på fila %s til %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Problem ved oppdatering av fila"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Klarte ikke å få statusen på %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Kan ikke skrive til %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Kan ikke utføre mmap på en tom fil"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Klarte ikke lage mmap av %llu bytes"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Klarte ikke duplisere fildeskriptor %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "Klarte ikke lukke mmap"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "Klarte ikke synkronisere mmap"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Klarte ikke lage mmap av %lu bytes"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Klarte ikke forkorte fila %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"Dynamisk MMap gikk tom for minne. Øk størrelsen på APT::Cache-Start. "
+"Nåværende verdi: %lu. (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"Klarte ikke øke størrelsen på MMap-en siden grensen på %lu byte allerede er "
+"nådd."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Klarte ikke øke størrelsen på MMap-en siden automatisk voksing er deaktivert "
+"av brukeren."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s ... Feil"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s ... Ferdig"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr "..."
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s ... Ferdig"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%lid %lit %lim %lis"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%lit %lim %lis"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%lim %lis"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%lis"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Fant ikke utvalget %s"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Klarer ikke å fortolke Release-fila %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Ingen avsnitt i Release-fila %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Ingen sjekksumoppføring i Release-fila %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Ugyldig «%s»-oppføring i Release-fila %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Klarer ikke å fortolke pakkefila %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"Klarte ikke låse den administrative mappen (%s). Bruker en annen prosess den?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Klarte ikke låse den administrative mappen (%s). Er du root?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr "dpkg ble avbrutt. Du må kjøre «%s» manuelt for å rette problemet,"
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Ikke låst"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "Installerer %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Setter opp %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Fjerner %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "Fjerner %s fullstendig"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "Legger merke til at %s forsvinner"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Kjører etter-installasjonsutløser %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "Installerte %s"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Mappa «%s» mangler"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "Klarte ikke åpne fila «%s»"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Forbereder %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Pakker ut %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Forbereder oppsett av %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Forbereder fjerning av %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "Fjernet %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Forbereder å fullstendig slette %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "Fjernet %s fullstendig"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Can not write log (%s)"
+msgstr "Kan ikke skrive logg (%s)"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr "Er /dev/pts montert?"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr "Ingen apport-rapport skrevet for MaxReports allerede er nådd"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "avhengighetsproblemer - lar den være uoppsatt"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Ingen apport-rapport skrevet fordi feilmeldingen indikerer at den er en "
+"følgefeil fra en tidligere feil."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Ingen apport-rapport skrevet fordi feilmeldingen indikerer en «full disk»-"
+"feil"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Ingen apport-rapport skrevet fordi feilmeldingen indikerer en «tom for "
+"minne»-feil"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Ingen apport-rapport skrevet fordi feilmeldingen indikerer et problem på det "
+"lokale systemet."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"Ingen apport-rapport skrevet fordi feilmeldingen indikerer en «dpkg I/O»-feil"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Skaper oversikt over avhengighetsforhold"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Versjons-kandidater"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Oppretter avhengighetsforhold"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Leser tilstandsinformasjon"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Klarte ikke å åpne StateFile %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Klarte ikke å skrive midlertidig StateFile %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "Skrev %i poster.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "Skrev %i poster med %i manglende filer.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "Skrev %i poster med %i feile filer.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "Skrev %i poster med %i manglende filer og %i feile filer.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "Klarte ikke finne autentiseringsoppføring for: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Hashsummen stemmer ikke for: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Pakkesystemet «%s» støttes ikke"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Klarer ikke bestemme en passende pakkesystemtype"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "Kjører dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"Klarte ikke gjennomføre umiddelbar konfigurasjon av «%s». Se man 5 apt.conf "
+"under APT::Immediate-Configure for detaljer. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "Klarte ikke åpne fila «%s»"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Den forestående installasjon må midlertidig fjerne den meget viktige pakken "
+"%s pga. en konflikt/forutsettelses-løkke. Dette er ofte stygt, men hvis du "
+"virkelig vil det, så bruk innstillingen APT::Force-LoopBreak."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Tomt pakkelager"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Pakkens lagerfil er ødelagt"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Pakkens lagerfil er av feil versjon (samvirker ikke)"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Denne APT støtter ikke versjonssystemet «%s»"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Pakkelageret ble bygd for en annen arkitektur"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Pakkens lagerfil er ødelagt"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Avhenger av"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Forutsetter"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Foreslår"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Er i konflikt med"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Anbefaler"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Erstatter"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Ødelegger"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Forbedrer"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Nuller"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "viktig"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "påkrevet"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "vanlig"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "tillegg"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "valgfri"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Lageret har et uoverensstemmende versjonssystem"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Feil oppsto under behandling av %s (FindPkg)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "Jøss, du har overgått antallet pakkenavn denne APT klarer."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Jøss, du har overgått antallet versjoner denne APT klarer."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Jøss, du har overgått antallet beskrivelser denne APT klarer."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "Jøss, du har overgått antallet avhengighetsforhold denne APT klarer."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Leser pakkelister"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "IO-feil ved lagring av kildekode-lager"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Oversiktsfil av typen «%s» støttes ikke"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Ugyldig oppslag i foretrekksfila %s, manglende pakkehode"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Forsto ikke spikring av typen %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Ingen prioritet (eller null) spesifisert for pin"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Ugyldig overstyring %s linje %lu #1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Ã…pner %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Feil på %u i kildelista %s (type)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Typen «%s» er ukjent i linje %u i kildelista %s"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Feil på %u i kildelista %s (type)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Typen «%s» er ukjent i linje %u i kildelista %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr ""
+"Beklager, du må legge inn noen kilder (nettadresser) i din «sources.list»."
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr "Kan ikke gjøre om %s til heltall: utenfor rekkevidde"
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Klarte ikke å skaffe %s %s"
+
+#: apt-pkg/update.cc
+#, fuzzy
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Klarte ikke å laste ned alle oversiktfilene. De ble ignorerte, eller gamle "
+"ble brukt isteden. "
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Beregner oppgradering"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Funnet:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Hent:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Ign:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Feil:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Hentet %sB på %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Arbeider]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Bytte av media: sett inn CD-en som er merket\n"
+" «%s»\n"
+"i «%s» og trykk «Enter»\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Retter på avhengighetsforhold ..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " mislyktes."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Klarer ikke å rette på avhengighetsforholdene"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Klarer ikke å minimere oppgraderingsettet"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Utført"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "Du vil kanskje kjøre «apt --fix-broken install» for å rette på dette."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Uinnfridde avhengighetsforhold. Prøv «apt --fix-broken install» uten pakker "
+"(eller angi en løsning)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr "Sorterer"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Merk, velger «%s» for oppgaven «%s»\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Merk, velger «%s» for det regulære uttrykket «%s»\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Merk, velger «%s» for det regulære uttrykket «%s»\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Pakken %s er en virtuell pakke, som oppfylt av:\n"
+
+#: apt-private/private-cacheset.cc
+msgid " [Installed]"
+msgstr " [Installert]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [Ikke versjonskandidat]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Du må velge en pakke som skal installeres."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Pakken %s er ikke tilgjengelig, men en annen pakke henviser til den.\n"
+"Dette kan bety at pakken mangler, er utgått, eller bare finnes \n"
+"tilgjengelig fra en annen kilde.\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Følgende pakker erstatter den imidlertid:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Pakken «%s» har ingen installasjonskandidat"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Virtuelle pakker som «%s» kan ikke fjernes\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"Pakken '%s' er ikke installert, og derfor heller ikke fjernet. Mente du "
+"'%s'?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Pakken %s er ikke installert, og derfor heller ikke fjernet\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Merk, velger «%s» istedenfor «%s»\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr "Mest brukte kommandoer:"
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr "Se %s for mer informasjon om de tilgjengelige kommandoene."
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+"Detaljer om oppsettvalg og syntaks finnes i apt.conf(5).\n"
+"Informasjon om hvordan en setter opp kilder finnes i sources.list(5).\n"
+"Sikkerhetsdetaljer er tilgjengelig i apt-secure(8).\n"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Denne APT har kraften til en Superku."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Fant ingen pakker"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "ADVARSEL: Følgende pakker ble ikke autentisert!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Autentiseringsadvarsel overstyrt.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Noen pakker ble ikke autentisert"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Installer disse pakkene uten verifikasjon?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+"--force-yes er utdatert, bruk en av valgene som starter med --allow istedet."
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Det oppsto problemer og «-y» ble brukt uten «--force-yes»"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Klarte ikke bestemme ledig plass i %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Dessverre, ikke nok ledig plass i %s"
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Klarer ikke å låse nedlastingsmappa"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Noen pakker ble ikke installeres. Dette kan bety at du har bedt om\n"
+"en umulig tilstand eller, hvis du bruker den ustabile utgaven av Debian,\n"
+"at visse kjernepakker ennå ikke er laget eller flyttet ut av «Incoming» for\n"
+"distribusjonen."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Følgende informasjon kan være til hjelp med å løse problemet:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Ødelagte pakker"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Klarte ikke å hente alle arkivene. Du kan prøve med «apt-get update» eller "
+"«--fix-missing»."
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Intern feil, InstallPackages ble kalt med ødelagte pakker!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Pakker trenges å fjernes, men funksjonen er slått av."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Det oppsto problemer og «-y» ble brukt uten «--force-yes»"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Det oppsto problemer og «-y» ble brukt uten «--force-yes»"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+"Pakker som er holdt igjen ble endret og -y ble brukt uten --allow-change-"
+"held-packages."
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Intern feil, sortering fullførte ikke"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Så rart ... Størrelsene stemmer ikke overens, send en e-post til "
+"apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "MÃ¥ hente %sB/%sB med arkiver.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "MÃ¥ hente %sB med arkiver.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "Etter denne operasjonen vil %sB ekstra diskplass bli brukt.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Etter denne operasjonen vil %sB diskplass bli ledig.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr ""
+"«Bare trivielle endringer» ble angitt, men dette er ikke en triviell endring."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Ja, gjør som jeg sier!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Du er iferd med å utføre en mulig skadelig handling.\n"
+"For å fortsette skriv inn teksten «%s»\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Avbryter."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Vil du fortsette?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Klarte ikke laste ned alle filene"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Nedlasting fullført med innstillinga «bare nedlasting»"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "«--fix-missing» og bytte av media støttes nå ikke"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Klarer ikke å rette på manglende pakker."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Avbryter installasjonen."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"Den følgende pakken forsvant fra systemet ditt siden\n"
+"alle filene er overskrevet av andre pakker:"
+msgstr[1] ""
+"De følgende pakkene forsvant fra systemet ditt siden\n"
+"alle filene er overskrevet av andre pakker:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Merk: Dette er gjort automatisk og med hensikt av dpkg."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "Vi skal ikke slette ting, kan ikke starte auto-fjerner (AutoRemover)"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Hmm, det ser ut som auto-fjerneren (AutoRemover) ødela noe, og det skal\n"
+"virkelig ikke skje. Send inn en feilmelding til apt-utviklerne."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Intern feil, autofjerneren (AutoRemover) ødela noe"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"Følgende pakke ble automatisk installert og er ikke lenger påkrevet:"
+msgstr[1] ""
+"Følgende pakker ble automatisk installert og er ikke lenger påkrevet:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "%lu pakke ble automatisk installert og er ikke lenger påkrevet.\n"
+msgstr[1] "%lu pakker ble automatisk installert og er ikke lenger påkrevet.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Bruk «%s» for å fjerne den."
+msgstr[1] "Bruk «%s» for å fjerne dem."
+
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "Følgende ekstra pakker vil bli installert:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Foreslåtte pakker:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Anbefalte pakker"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+"Omgår %s - den er allerede installert eller ikke satt til oppgradering.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"Hopper over %s siden den ikke er installert eller kun oppgraderinger er "
+"ønsket.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "Det er ikke mulig å installere %s på nytt - den kan ikke nedlastes.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s er allerede nyeste versjon.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s satt til manuell installasjon.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Utvalgt versjon «%s» (%s) for «%s»\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Utvalgt versjon «%s» (%s) for «%s»\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr "Lister opp"
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+"Det er %i ekstra versjon. Vær så snill å bruk '-a'-bryteren for å se den"
+msgstr[1] ""
+"Det er %i ekstra versjoner. Vær så snill å bruk '-a'-bryteren for å se dem."
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"MERK: Dette er kun en simulering.\n"
+" %s må ha root-rettigheter for reell utførelse.\n"
+" Husk også at låsing er deaktivert, så ikke regn med \n"
+" relevans i forhold til den reelle gjeldende situasjonen.\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr "ukjent"
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Installert]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [Installert]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr "[installert,auto-fjernbar]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [Installert]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [Installert]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr "[oppgraderbar fra: %s]"
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "men %s er installert"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "men %s skal installeres"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "men lar seg ikke installere"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "men er en virtuell pakke"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "men skal ikke installeres"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "men er ikke installert"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " eller"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Følgende pakker har uinnfridde avhengighetsforhold:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Følgende NYE pakker vil bli installert:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Følgende pakker vil bli FJERNET:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Følgende pakker er holdt tilbake:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Følgende pakker vil bli oppgradert:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Følgende pakker vil bli NEDGRADERT:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Følgende pakker vil bli endret:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (pga. %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"ADVARSEL: Følgende essensielle pakker vil bli fjernet.\n"
+"Dette bør IKKE gjøres, med mindre du vet nøyaktig hva du gjør!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu oppgraderte, %lu nylig installerte, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu installert på nytt, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu nedgraderte, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu å fjerne og %lu ikke oppgradert.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu pakker ikke fullt installert eller fjernet.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[J/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[j/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "J"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "Du må oppgi minst ett søkemønster"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr "Fulltekstsøk"
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Pakkefila %s er ikke oppdatert."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+"Det er %i ekstra oppføring. Vær så snill å bruk '-a'-bryteren for å se den"
+msgstr[1] ""
+"Det er %i ekstra oppføringer. Vær så snill å bruk '-a'-bryteren for å se "
+"dem."
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr "ikke en virkelig pakke (virtuell)"
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Pakkefiler:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+"Mellomlageret er ikke oppdatert, kan ikke kryssreferere til en pakkefil"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "LÃ¥ste pakker:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr "%s -> %s med prioritet %d\n"
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Installert: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Kandidat: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(ingen)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Versjonstabell:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Klarte ikke finne noen pakken med regex «%s»"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Klarte ikke finne noen pakken med regex «%s»"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Klarte ikke finne noen pakken med regex «%s»"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Velger «%s» som kildepakke istedenfor «%s»\n"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "Ignorer utilgjengelig versjon «%s» av pakke «%s»"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Du må angi minst en pakke du vil ha kildekoden til"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Klarer ikke å finne en kildekodepakke for %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"MERK: «%s»-pakker blir vedlikeholdt i versjonskontrollsystemet «%s» på:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Bruk:\n"
+"%s\n"
+"for å hente siste (muligens ikke utgitte) oppdateringer for pakken.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Hopper over allerede nedlastet fil «%s»\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Trenger å skaffe %sB av %sB fra kildekodearkivet.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Trenger å skaffe %sB fra kildekodearkivet.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Skaffer kildekode %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Klarte ikke å skaffe alle arkivene."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Omgår utpakking av allerede utpakket kilde i %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Utpakkingskommandoen «%s» mislyktes.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Sjekk om pakken «dpkg-dev» er installert.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Byggekommandoen «%s» mislyktes.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Klarer ikke å skaffe informasjon om bygge-avhengighetene for %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s har ingen avhengigheter.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr "Du må angi minst en pakke du vil sjekke «builddeps» for"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"Ingen arkitekturinformasjon tilgjengelig for %s. Se apt.conf(5) APT::"
+"Architectures for oppsett."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr "Merk, bruker '%s'-katalogen for å få tak i byggavhengigheter\n"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Klarte ikke å behandle forutsetningene for bygging"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Klarte ikke å behandle forutsetningene for bygging"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Klarte ikke å endre navnet på %s til %s"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr "'%s'-filen din ble endret, vær så snill å kjør 'apt-get update'."
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Pakken %s versjon %s har et uinnfridd avhengighetsforhold:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Oppdaterings-kommandoen tar ingen argumenter"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+"%i pakke kan oppgraderes. Kjør 'apt list --upgradable' for å se den.\n"
+msgstr[1] ""
+"%i pakker kan oppgraderes. Kjør 'apt list --upgradable' for å se dem.\n"
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr "Alle pakkene er oppdatert."
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "Oppdaterings-kommandoen tar ingen argumenter"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Antall pakkenavn: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Antall pakkestrukturer: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Vanlige pakker: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Rent virtuelle pakker: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Enkle virtuelle pakker: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Sammensatte virtuelle pakker: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Mangler: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Antall unike versjoner: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Antall unike beskrivelser: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Antall avhengighetsforhold: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Antall forhold versjon/fil: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Antall forhold beskrivelse/fil: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Antall tilbudte tilknyttinger: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Antall utvidede strenger: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Plass brukt av slark: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Samlet mengde redegjort plass: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+"Denne kommandoen er utdatert. Vær så snill å bruke 'apt-mark showauto' "
+"istedet."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Vis data om kildekoden"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Søk i pakkelista etter et regulært uttrykkr"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Vis rå informasjon om avhengighetsforholdene for pakken"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Vis informasjon om de reverserte avhengighetsforholdene for pakken"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Vis et lesbart oppslag for pakken"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "List alle pakkenavn på systemet"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Vis regelinnstillingerr"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Oppgi et navn for disken, for eksempel «Debian 5.0.3 Disk 1»"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Sett inn en disk i lagringsenheten og trykk Enter"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Klarte ikke montere «%s» på «%s»"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Gjenta denne prosessen for resten av CD-ene i ditt sett."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Ikke parvise argumenter"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Bruk: apt-config [innstillinger] kommando\n"
+"\n"
+"apt-config er et enkelt verktøy til å lese APTs innstillingsfil\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Bruk: apt-extracttemplates fil1 [fil2 ...]\n"
+"\n"
+"apt-extracttemplates er et verktøy til å hente ut informasjon om "
+"innstillinger\n"
+"og maler fra debianpakker.\n"
+"\n"
+"Innstillinger:\n"
+" -h Denne hjelpeteksten\n"
+" -t Lag en midlertidig mappe\n"
+" -c=? Les denne innstillingsfila.\n"
+" -o=? Sett en vilkårlig innstilling, f.eks. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Kan ikke fastslå debconf-versjonen. Er debconf installert?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Klarte ikke å finne pakken %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s satt til automatisk installasjon.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Denne kommandoen er utdatert. Vær så snill å bruk 'apt-mark auto' og 'apt-"
+"mark manual' istedet."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Intern feil, problemløser ødela noe"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Støttede moduler:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Bruk: apt-get [valg] kommando\n"
+" apt-get [valg] install|remove pakke1 [pakke2 ...]\n"
+" apt-get [valg] source pakke1 [pakke2 ...]\n"
+"\n"
+"apt-get er et enkelt grensesnitt som kan brukes fra kommandolinja\n"
+"for å laste ned og installere pakker. De mest brukte kommandoene \n"
+"er «update» og «install».\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Hent nye pakkelister"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Utfør en oppgradering"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Installér nye pakker (Pakke er «foo», ikke «foo.deb»)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Fjern pakker"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Fjern og rydd opp etter pakker"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Fjern alle automatisk ubrukte pakker"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Oppgradér utgave, les apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Følg «dselect» sine anbefalinger"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Sett opp bygge-forutsetninger for kildekodepakker"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Slett nedlastede arkivfiler"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Slett gamle nedlastede arkivfiler"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Se etter om det finnes brutte avhengigheter"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Last ned kildekode fra arkivene"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "Last ned binærpakke til gjeldende katalog"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "Last ned og vis endringsloggen for den oppgitte pakken"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr "Trenger en URL som argument"
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "Du må angi minst en pakke du vil ha kildekoden til"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr "Nedlasting feilet"
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr "GetSrvRec feilet for %s"
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr "Slå opp en SRV-oppføring (f.eks. _http._tcp.ftp.debian.org)"
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr "slå sammen filer, med automatisk utpakking"
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Bruk: apt-extracttemplates fil1 [fil2 ...]\n"
+"\n"
+"apt-extracttemplates er et verktøy til å hente ut informasjon om "
+"innstillinger\n"
+"og maler fra debianpakker.\n"
+"\n"
+"Innstillinger:\n"
+" -h Denne hjelpeteksten\n"
+" -t Lag en midlertidig mappe\n"
+" -c=? Les denne innstillingsfila.\n"
+" -o=? Sett en vilkårlig innstilling, f.eks. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Bruk: apt-extracttemplates fil1 [fil2 ...]\n"
+"\n"
+"apt-extracttemplates er et verktøy til å hente ut informasjon om "
+"innstillinger\n"
+"og maler fra debianpakker.\n"
+"\n"
+"Innstillinger:\n"
+" -h Denne hjelpeteksten\n"
+" -t Lag en midlertidig mappe\n"
+" -c=? Les denne innstillingsfila.\n"
+" -o=? Sett en vilkårlig innstilling, f.eks. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "men er ikke installert"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s satt til manuell installasjon.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s satt til automatisk installasjon.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s er allerede nyeste versjon.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s er allerede nyeste versjon.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "Klarte ikke kjøre dpkg. Er du root?"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "%s satt til manuell installasjon.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Klarte ikke å åpne %s"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr "Valgte %s for fjerning.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr "Valgte %s for installering.\n"
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "%s satt til automatisk installasjon.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "Sjekk om pakken «dpkg-dev» er installert.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr "Marker en pakke som holdt tilbake"
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr "Fjern markering som holdt tilbake for en pakke"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "%s satt til automatisk installasjon.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "%s satt til manuell installasjon.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr "Skriv listen med pakker som holdes tilbake"
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Ukjent pakkeoppføring"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr "list pakker basert på pakkenavn"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "Leser pakkelister"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr "vis pakkedetaljer"
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "LÃ¥ste pakker:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Ødelagte pakker"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "%s satt til manuell installasjon.\n"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr "oppgrader systemet ved å installere/oppgradere pakker"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr "oppgrader systemet ved å fjerne/installere/oppgradere pakker"
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "Leser tilstandsinformasjon"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Feil standardinnstilling!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Trykk «Enter» og fortsett"
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Vil du slettet alle tidligere nedlastede .deb-filer?"
+
+# Note to translators: The following four messages belong together. It doesn't
+# matter where sentences start, but it has to fit in just these four lines, and
+# at only 80 characters per line, if possible.
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "Feil oppstod ved utpakkinga. Setter nå opp de installerte pakkene."
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "Det kan lede til fordobling av feil eller feil forårsaket av "
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "manglende forutsetninger. Det er greit, bare de nevnte feilene er"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr "av betydning. Sett dem i stand dem og kjør [I]nstall igjen."
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Fletter tilgjengelig informasjon"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Lista over pakkeutvidelser er for lang"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Feil ved lesing av katalogen %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Lista over kildeutvidelser er for lang"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Feil ved skriving av topptekst til innholdsfila"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Det oppsto en feil ved lesing av %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Bruk: apt-ftparchive [innstillinger] kommando\n"
+"Kommandoer: packages binærsti [overstyringsfil [sti-prefiks]]\n"
+" sources kildesti [overstyringsfil [sti-prefiks]]\n"
+" contents sti\n"
+" release sti\n"
+" generate config [grupper]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive oppretter indeksfiler for debianarkiver. Mange ulike\n"
+"metoder er støttet - fra helautomatiske til funksjonelle\n"
+"erstatninger for dpkg-scanpackages og dpkg-scansources.\n"
+"\n"
+"apt-ftparchive oppretter «Packages»-filer fra et tre med debianpakker.\n"
+"«Packages»-fila inneholder alle kontrollfeltene fra hver pakke i tillegg "
+"til\n"
+"MD5-nøkkel og filstørrelse. Du kan bruke en overstyringsfil for å tvinge\n"
+"gjennom verdier for prioritet og kategori.\n"
+"\n"
+"apt-ftparchive kan på samme måte opprette kildefiler fra et tre\n"
+"med .dsc-filer. Du kan bruke en overstyringsfil med --source-override.\n"
+"\n"
+"Kommandoene «packages» og «sources» skal kjøres i rota av katalogtreet.\n"
+"«Binærsti» skal peke til toppkatalogen for det rekursive søket, og\n"
+"overstyringsfila skal inneholde innstillinger for overstyring.\n"
+"Sti-prefikset blir lagt til feltene for filnavn, dersom det er oppgitt. Her "
+"er\n"
+"et eksempel på bruk i debianarkivet:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Innstillinger:\n"
+" -h Vis denne hjelpeteksten.\n"
+" --md5 Styrer MD5-opprettelsen\n"
+" -s=? Overstyringsfil for kildekode.\n"
+" -q Stille.\n"
+" -d=? Velger om du vil bruke en mellomlagerdatabase.\n"
+" --no-delink Bruk avlusingsmodus med «delinking».\n"
+" --contents Styrer opprettelse av innholdsfila.\n"
+" -c=? Les denne oppsettsfila.\n"
+" -o=? Setter en vilkårlig innstilling"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Ingen utvalg passet"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Enkelte filer mangler i pakkegruppa «%s»"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "Databasen er ødelagt. Filnavnet er endret til %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "Databasen er gammel, forsøker å oppgradere %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"DB-formatet er ugyldig. Hvis du oppgraderte fra en eldre versjon av apt, "
+"fjern og så gjenopprett databasen."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Klarte ikke å åpne Databasefila %s: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Klarte ikke å lese lenken %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Arkivet har ingen kontrollpost"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Klarte ikke å finne en peker"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Klarte ikke å tildele minne"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Ukjent komprimeringsalgoritme «%s»"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Komprimert utdata %s trenger et komprimeringssett"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Klarte ikke å opprette IPC-rør til underprosessen"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Klarte ikke å forgreine prosess"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Komprimer barneprosess"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Intern feil, klarte ikke å opprette %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Klarte ikke å kommunisere med underprosess/fil"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Klarte ikke å lese under utregning av MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Klarte ikke å åpne %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Ugyldig overstyring %s linje %lu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Klarte ikke å lese overstyringsfila %s"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Ugyldig overstyring %s linje %lu #1"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Ugyldig overstyring %s linje %lu #2"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Ugyldig overstyring %s linje %lu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "A: Klarte ikke å lese katalogen %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "A: Klarte ikke å få statusen på %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "F:"
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "A:"
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "F: Det er feil ved fila"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Klarte ikke å slå opp %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Klarte ikke å finne fram i treet"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Klarte ikke å åpne %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Klarte ikke å lenke %s til %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " DeLink-grensa på %s B er nådd.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Arkivet har ikke noe pakkefelt"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s har ingen overstyringsoppføring\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " %s-vedlikeholderen er %s, ikke %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s har ingen kildeoverstyringsoppføring\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s har ingen binæroverstyringsoppføring heller\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Venter på hoder"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "HTTP-tjeneren sendte et ugyldig svarhode"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Ødelagt hodelinje"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "HTTP-tjeneren sendte et ugyldig «Content-Length»-hode"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "HTTP-tjeneren sendte et ugyldig «Content-Range»-hode"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Denne HTTP-tjeneren har ødelagt støtte for område"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Ukjent datoformat"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Ødelagte hodedata"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Forbindelsen mislykkes"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Intern feil"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Klarer ikke å lese CD-databasen %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Bruk «apt-cdrom» for å gjøre denne CD-plata tilgjengelig for APT. Du kan "
+"ikke bruke «apt-get update» til å legge til nye CD-plater."
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Feil CD-plate"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr ""
+"Klarer ikke å avmontere CD-plata i %s. Det kan hende plata fremdeles er i "
+"bruk."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Disk ikke funnet."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Fant ikke fila"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Kobler til %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Klarte ikke å opprette en sokkel for %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Klarte ikke å starte forbindelsen til %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Klarte ikke å koble til %s:%s (%s), tidsavbrudd på forbindelsen"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Mislyktes"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Klarte ikke å koble til %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Kobler til %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Klarte ikke å slå opp «%s»"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Midlertidig feil ved oppslag av «%s»"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Noe galt skjedde ved oppslag av «%s:%s» (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Noe galt skjedde ved oppslag av «%s:%s» (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Klarte ikke koble til %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Klarte ikke å få status"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Ugyldig adresse. Lokale adresser kan ikke starte med //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Logger inn"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Klarte ikke å fastslå navnet på motparten"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Klarte ikke å fastslå det lokale navnet"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Tjeneren nektet oss å kople til og sa: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER mislykkes, tjeneren sa: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS mislykkes, tjeneren sa: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"En mellomtjener er oppgitt, men ikke noe innloggingsskript. Feltet «Acquire::"
+"ftp::ProxyLogin» er tomt."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Kommandoen «%s» i innlogginsskriptet mislykkes, tjeneren sa: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE mislykkes, tjeneren sa: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Tidsavbrudd på forbindelsen"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Tjeneren lukket forbindelsen"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Et svar oversvømte bufferen."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Protokollødeleggelse"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Klarte ikke å opprette en sokkel"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Klarte ikke å kople til datasokkelen, tidsavbrudd på forbindelsen"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Klarte ikke å koble til en passiv sokkel."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo klarte ikke å opprette en lyttesokkel"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Klarte ikke å binde til sokkel"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Klarte ikke å lytte til sokkel"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Klarte ikke å avgjøre sokkelnavnet"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Klarte ikke å sende PORT-kommandoen"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Ukjent adressefamilie %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT mislykkes, tjeneren sa: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Tidsavbrudd på tilkoblingen til datasokkelen"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Klarte ikke å godta tilkoblingen"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Problem ved oppretting av nøkkel for fil"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Klarte ikke å hente fila, tjeneren sa «%s»"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Tidsavbrudd på datasokkelen"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Dataoverføringen mislykkes, tjeneren sa «%s»"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Spørring"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Klarte ikke å starte"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Minst en ugyldig signatur ble funnet."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr "Intern feil: God signatur, men kunne bestemme nøkkelfingeravtrykk?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Klarte ikke kjøre «apt-key» for å verifisere signaturen (er gnupg "
+"installert?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Ukjent feil ved kjøring av apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr "Signatur med nøkkel %s bruker svak oppsummeringsalgoritme (%s)"
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "De følgende signaturene var ugyldige:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"De følgende signaturene kunne ikke verifiseres fordi den offentlige nøkkelen "
+"ikke er tilgjengelig:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Feil ved skriving til fila"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Feil ved lesing fra tjeneren. Forbindelsen ble lukket i andre enden"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Feil ved lesing fra tjeneren"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Feil ved skriving til fil"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Utvalget mislykkes"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Tidsavbrudd på forbindelsen"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Feil ved skriving til utfil"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Ingen speilfil «%s» funnet"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Ingen speilfil «%s» funnet"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Ingen speilfil «%s» funnet"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Speil: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Klarte ikke å sette endringstidspunkt"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Forbindelsen ble uventet stengt"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "Tomme filer kan ikke være gyldige arkiver"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Uinnfridde avhengighetsforhold - Prøv «--fix-broken»."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Du vil kanskje utføre «apt --fix-broken install» for å rette på disse:"
+
+#~ msgid "Failed to fetch %s %s\n"
+#~ msgstr "Klarte ikke å skaffe %s %s\n"
+
+#~ msgid "(not found)"
+#~ msgstr "(ikke funnet)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Pakke låst til: "
+
+#~ msgid "Invalid 'Valid-Until' entry in Release file %s"
+#~ msgstr "Ugyldig «Valid-Until»-oppføring i Release-fila %s"
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr ""
+#~ "Det er ingen offentlig nøkkel tilgjengelig for de følgende nøkkel-ID-"
+#~ "ene:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "Katalogen %s er avledet"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr "Kravet %s for %s kan ikke oppfylles fordi pakken %s ikke finnes"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr "Kravet %s for %s kan ikke oppfylles fordi pakken %s ikke finnes"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Klarte ikke å tilfredsstille %s avhengighet for %s: den installerte "
+#~ "pakken %s er for ny"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "Kravet %s for %s kan ikke oppfylles fordi det ikke finnes noen "
+#~ "tilgjengelige versjoner av pakken %s som oppfyller versjonskravene"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr "Kravet %s for %s kan ikke oppfylles fordi pakken %s ikke finnes"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Klarte ikke å tilfredsstille %s avhengighet for %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Klarte ikke å tilfredstille bygg-avhengighetene for %s."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Problem ved oppheving av lenken til %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Klarte ikke å oppheve lenken %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Bruk: apt-cache [valg] kommando\n"
+#~ " apt-cache [valg] show pakke1 [pakke2 ...]\n"
+#~ "\n"
+#~ "apt-cache er et lavnivå-verktøy, som brukes til å håndtere APT sine "
+#~ "binære\n"
+#~ "lagerfiler, og spørre dem om informasjon.\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Valg:\n"
+#~ " -h Denne hjelpeteksten\n"
+#~ " -p=? Pakkelageret.\n"
+#~ " -s=? Kildekodelageret.\n"
+#~ " -q Ikke vis framdrift.\n"
+#~ " -i Vis bare viktige avhengighetsforhold for kommandoen «unmet».\n"
+#~ " -c=? Les denne innstillingsfila.\n"
+#~ " -o=? Sett en vilkårlig innstilling, f.eks. -o dir::cache=/tmp\n"
+#~ "Les manualsidene apt-cache(8) og apt.conf(5) for mer informasjon.\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Innstillinger:\n"
+#~ " -h Denne hjelpeteksten\n"
+#~ " -c=? Les denne innstillingsfila.\n"
+#~ " -o=? Sett en vilkårlig innstilling, f.eks. -o dir::cache=/tmp\n"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Bruk: apt-sortpkgs [innstillinger] fil1 [fil2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs er et enkelt redskap til å sortere pakkefiler. "
+#~ "Innstillingen\n"
+#~ "-s brukes til å angi hvilken filtype det er.\n"
+#~ "\n"
+#~ "Innstillinger:\n"
+#~ " -h Denne hjelpeteksten\n"
+#~ " -s Bruk filsortering\n"
+#~ " -c=? Les denne innstillingsfila.\n"
+#~ " -o=? Sett en vilkårlig innstilling, f.eks. -o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Barneprosessen mislyktes"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Du må angi minst en pakke du vil ha kildekoden til"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Klarte ikke å opprette rør"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Klarte ikke å kjøre gzip "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s for %s kompilert på %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Klarte ikke å opprette FILE*"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Feil på %lu i kildelista %s (fortolkning av nettadressen)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr "Feil på linje %lu i kildelista %s ([valg] ikke tolkbar)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "Feil på linje %lu i kildelista %s ([valg] for kort)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "Feil på linje %lu i kildelista %s ([%s] er ingen tilordning)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "Feil på linje %lu i kildelista %s ([%s] har ingen nøkkel)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr "Feil på linje %lu i kildelista %s ([%s] nøkkel %s har ingen verdi)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Feil på linje %lu i kildelista %s (nettadresse)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Feil på linje %lu i kildelista %s (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Feil på %lu i kildelista %s (fortolkning av nettadressen)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "Feil på %lu i kildelista %s (Absolutt dist)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "Feil på %lu i kildelista %s (dist fortolking)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "Fant ikke pakken %s %s ved behandling av filkrav"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Klarte ikke finne informasjon om %s - lista over kildekodepakker"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Samler inn filtilbud"
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Klarer ikke å fortolke Release-fila %s"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Utgivers blokk %s inneholder ikke no fingeravtrykk"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Total plass for avhengighetsforhold/versjoner: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Du har ikke nok ledig plass i %s"
+
+#~ msgid "Done"
+#~ msgstr "Utført"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Ingen nøkkelring installert i %s."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Intern feil - «AllUpgrade» ødela noe"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s er ikke en gyldig debianpakke."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Bruker CD-ROM monteringspunkt %s\n"
+#~ "Monterer CD-ROM\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Klarte ikke rette %s med mmap og med filoperasjonbruk - programrettelsen "
+#~ "ser ut til å være korrupt."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Klarte ikke rette %s med mmap (men ingen mmap-spesifikk feil) - "
+#~ "programrettelsen ser ut til å være korrupt."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr "Ignorer utilgjengelig målutgave «%s» av pakke «%s»"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Dette er ikke et gyldig DEB-arkiv, det har ikke noe «%s»-, «%s»- eller "
+#~ "«%s»-medlem"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "Feil MD5sum"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Klarte ikke å finne en fil for pakken %s. Det kan bety at du må ordne "
+#~ "denne pakken selv."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Klarte ikke skrive logg, openpty() feilet (/dev/pts ikke montert?)\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Hopper over den ikke-eksisterende fila %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Klarte ikke å fjerne %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Klarte ikke å opprette %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Klarte ikke å få statusen på %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr ""
+#~ "Infokatalogen og den midlertidige katalogen må være på det samme "
+#~ "filsystemet"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Klarte ikke å bytte til adminkatalogen %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Intern feil ved henting av pakkenavn"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Les filliste"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Klarte ikke å åpne listefila «%sinfo/%s». Dersom du ikke kan gjenopprette "
+#~ "denne fila, bør du opprette den som en tom fil og installere den samme "
+#~ "versjonen av pakken på nytt."
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Klarte ikke å lese listefila %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Intern feil ved henting av node"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Klarte ikke å åpne avledningsfila %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Avledningsfila er ødelagt"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Ugyldig linje i avledningsfila: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Det oppsto en intern feil når avledningen ble lagt til"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Pakkelageret må klargjøres først"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Fant ikke «Package:»-linje, offset %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Ødelagt «ConfFile»-del i statusfila. Offset %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Feil ved tolking av MD5. Offset %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Klarte ikke å bytte til %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Fant ingen gyldig kontrollfil"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Klarte ikke å åpne rør for %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Lesefeil fra %s-prosessen"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Fikk en enkel hodelinje over %u tegn"
+
+#~ msgid "Note: This is done automatic and on purpose by dpkg."
+#~ msgstr "Merk: Dette er gjort automatisk og med hensikt av dpkg."
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Ugyldig overstyring %s linje %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Ugyldig overstyring %s linje %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Ugyldig overstyring %s linje %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "dekomprimering"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "lese, har fremdeles %lu igjen å lese, men ingen igjen"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "skrive, har fremdeles %lu igjen å skrive, men klarte ikke å"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "Klarte ikke gjennomføre umiddelbar konfigurasjon av allerede utpakket "
+#~ "«%s». Se man 5 apt.conf under APT::Immediate-Configure for detaljer."
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Feil oppsto under behandling av %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Feil oppsto under behandling av %s (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Feil oppsto under behandling av %s (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Feil oppsto under behandling av %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Feil oppsto under behandling av %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Feil oppsto under behandling av %s (NewVersion%d)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Feil oppsto under behandling av %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Feil oppsto under behandling av %s (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Feil oppsto under behandling av %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Feil oppsto under behandling av %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Intern feil, fant ikke medlem"
+
+#~ msgid "Internal error, group '%s' has no installable pseudo package"
+#~ msgstr "Intern feil, gruppe «%s» har ingen installerbar pseudo-pakke"
+
+#~ msgid "Release file expired, ignoring %s (invalid since %s)"
+#~ msgstr "Utgavefil har utgått, ignorerer %s (ugyldg siden %s)"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr "E: Argumentliste fra Acquire::gpgv::Options for lang. Avbryter."
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "Feil oppsto under behandling av %s (NewVersion2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "Feil på %u i kildelista %s (selgers id)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "Klarte ikke å slå opp i nøkkelring; «%s»"
+
+#~ msgid "Could not patch file"
+#~ msgstr "Kunne ikke åpne fila %s"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "Behandler utløsere for %s"
+
+#~ msgid "Dynamic MMap ran out of room"
+#~ msgstr "Dynamisk MMap gikk tom for minne"
+
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "Ettersom du bare bestilte et enkelt inngrep er det overveiende "
+#~ "sannsynlig\n"
+#~ "at pakken helt enkelt ikke kan installeres, og du bør fylle ut en "
+#~ "feilmelding."
+
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "Linje %d er for lang (maks %lu)"
+
+#, fuzzy
+#~ msgid "Line %d too long (max %d)"
+#~ msgstr "Linje %d er for lang (maks %d)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc1)"
+#~ msgstr "Feil oppsto under behandling av %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc2)"
+#~ msgstr "Feil oppsto under behandling av %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Stored label: %s \n"
+#~ msgstr "Lagret merkelapp: %s \n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found %i package indexes, %i source indexes, %i translation indexes and "
+#~ "%i signatures\n"
+#~ msgstr "Fant %i pakkeindekser, %i kildeindekser og %i signaturer\n"
+
+#, fuzzy
+#~ msgid "openpty failed\n"
+#~ msgstr "Utvalget mislykkes"
+
+#~ msgid "File date has changed %s"
+#~ msgstr "Fildatoen er endret %s"
+
+#~ msgid "Reading file list"
+#~ msgstr "Leser filliste"
+
+#~ msgid "Could not execute "
+#~ msgstr "Får ikke låst %s"
+
+#~ msgid "Unknown vendor ID '%s' in line %u of source list %s"
+#~ msgstr "Ukjent selger ID «%s» i linje %u i kildelista %s"
diff --git a/po/ne.po b/po/ne.po
new file mode 100644
index 000000000..0ccba9c4f
--- /dev/null
+++ b/po/ne.po
@@ -0,0 +1,4171 @@
+# translation of apt_po.po to Nepali
+# Mahesh Subedi <submanesh@hotmail.com>, 2006.
+# Shyam Krishna Bal <shyamkrishna_bal@yahoo.com>, 2006.
+# Shiva Pokharel <pokharelshiva@hotmail.com>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2006-06-12 14:35+0545\n"
+"Last-Translator: Shiva Pokharel <pokharelshiva@hotmail.com>\n"
+"Language-Team: Nepali <info@mpp.org.np>\n"
+"Language: ne\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2;plural=(n!=1)\n"
+"X-Generator: KBabel 1.10.2\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "अवैध संगà¥à¤°à¤¹ हसà¥à¤¤à¤¾à¤•à¥à¤·à¤°"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "संगà¥à¤°à¤¹ सदसà¥à¤¯ हेडर पढà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿ "
+
+#: apt-inst/contrib/arfile.cc
+#, fuzzy, c-format
+msgid "Invalid archive member header %s"
+msgstr "अवैध संगà¥à¤°à¤¹ सदसà¥à¤¯ हेडर"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "अवैध संगà¥à¤°à¤¹ सदसà¥à¤¯ हेडर"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "संगà¥à¤°à¤¹ अति छोटो छ"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "संगà¥à¤°à¤¹ हेडरहरू पढà¥à¤¨ असफल"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ फेला पारà¥à¤¨ सकिà¤à¤¨ %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "संगà¥à¤°à¤¹ दूषित भयो"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "टार चेकसम असफल भयो, संगà¥à¤°à¤¹ दूषित भयो"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "अजà¥à¤žà¤¾à¤¤ टार हेडर पà¥à¤°à¤•à¤¾à¤° %u, सदसà¥à¤¯ %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "यो वैध DEB संगà¥à¤°à¤¹ होइन, '%s' सदसà¥à¤¯ हराइरहेछ"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "आनà¥à¤¤à¤°à¥€à¤• तà¥à¤°à¥à¤Ÿà¤¿, सदसà¥à¤¯ तोकà¥à¤¨ सकà¥à¤¦à¥ˆà¤¨ %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "पद वरà¥à¤£à¤¨ गरà¥à¤¨ नसकिने नियनà¥à¤¤à¥à¤°à¤£ फाइल"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "फाइल %s लेखà¥à¤¨ असफल भयो"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "%s फाइल बनà¥à¤¦ गरà¥à¤¨ असफल भयो"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "बाटो %s अति लामो छ "
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "à¤à¤• भनà¥à¤¦à¤¾ बढी %s अनपà¥à¤¯à¤¾à¤• गरिदैछ"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "डाइरेकà¥à¤Ÿà¥à¤°à¥€ %s फेरियो "
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ लकà¥à¤·à¤¿à¤¤ मोडमा लेखà¥à¤¨à¥‡ पà¥à¤¯à¤¾à¤¸ गरà¥à¤¦à¥ˆà¤› %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "घà¥à¤®à¥à¤¤à¥€ बाटो अति लामो छ"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr " %s सà¥à¤¥à¤¿à¤° गरà¥à¤¨ असफल"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr " %s मा %s पà¥à¤¨:नामकरण असफल भयो"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "डाइरेकà¥à¤Ÿà¥à¤°à¥€ %s डाइरेकà¥à¤Ÿà¥à¤°à¥€ विहिन दà¥à¤µà¤¾à¤°à¤¾ बदलिदैछ"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "यसको हà¥à¤¯à¤¾à¤¸ बालà¥à¤Ÿà¥€à¤®à¤¾ नोड सà¥à¤¥à¤¿à¤¤ गरà¥à¤¨ असफल भयो"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "बाटो अति लामो छ"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr " %s को लागि संसà¥à¤•à¤°à¤¨ बिना अधिलेखन पà¥à¤¯à¤¾à¤•à¥‡à¤œ मेल खायो"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "फाइल %s/%s ले पà¥à¤¯à¤¾à¤•à¥‡à¤œ %s मा à¤à¤‰à¤Ÿà¤¾ अधिलेखन गरà¥à¤¦à¤›"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "%s पढà¥à¤¨ असफल भयो"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "%s सà¥à¤¥à¤¿à¤° गरà¥à¤¨ असकà¥à¤·à¤® भयो"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "अहिलेसमà¥à¤® लिङà¥à¤• गरिà¤à¤•à¥‹ नोडमा बोलाइà¤à¤•à¥‹ डà¥à¤°à¤ªà¤¨à¥‹à¤¡"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "हà¥à¤¯à¤¾à¤¸ ततà¥à¤µ तोकà¥à¤¨ असफल भयो"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "मोड बाà¤à¤¡à¥à¤¨ असफल भयो"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "थपमोडमा आनà¥à¤¤à¤°à¤¿à¤• तà¥à¤°à¥à¤Ÿà¤¿"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "मोड अधिलेखन गरà¥à¤¨à¥‡ पà¥à¤¯à¤¾à¤¸ गरिदै, %s -> %s र %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "मोडको डबल थप %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "नकà¥à¤•à¤²à¥€ कनफिगगरेसन फाइल %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "डाइरेकà¥à¤Ÿà¥à¤°à¥€ %s फेरियो "
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "डाइरेकà¥à¤Ÿà¥à¤°à¥€ %s फेरियो "
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "डाइरेकà¥à¤Ÿà¥à¤°à¥€ %s फेरियो "
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "डाइरेकà¥à¤Ÿà¥à¤°à¥€ %s फेरियो "
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "डाइरेकà¥à¤Ÿà¥à¤°à¥€ %s फेरियो "
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "लिङà¥à¤• पढà¥à¤¨ असफल %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Hash Sum mismatch"
+msgstr "MD5Sum मेल भà¤à¤¨"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "पà¥à¤¨:नामकरण असफल गरियो, %s (%s -> %s) ।"
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "साइज मेल खाà¤à¤¨"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "अवैध सञà¥à¤šà¤¾à¤²à¤¨ %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "तà¥à¤°à¥à¤Ÿà¤¿ लेखà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"%s पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤•à¥‹ लागि मैले फाइल सà¥à¤¥à¤¿à¤¤ गरà¥à¤¨ सकिन । यसको मतलब तपाईà¤à¤²à¥‡ मà¥à¤¯à¤¾à¤¨à¥à¤²à¥à¤²à¥€ यो पà¥à¤¯à¤¾à¤•à¥‡à¤œ "
+"निशà¥à¤šà¤¿à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ । (arch हराà¤à¤°à¤¹à¥‡à¤•à¥‹ कारणले) "
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾ फाइलहरू दूषित भठ। पà¥à¤¯à¤¾à¤•à¥‡à¤œ %s को लागि कà¥à¤¨à¥ˆ फाइलनाम: फाà¤à¤Ÿ छैन ।"
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "%s (%s) मा जडान गरिदैछ"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "विधि डà¥à¤°à¤¾à¤‡à¤­à¤° %s फेला पारà¥à¤¨ सकिà¤à¤¨ ।"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "जाà¤à¤šà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ यदि 'dpkg-dev' पà¥à¤¯à¤¾à¤•à¥‡à¤œ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भयो ।\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "विधि %s सही रà¥à¤ªà¤²à¥‡ सà¥à¤°à¥‚ हà¥à¤¨ सकेन"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "कृपया डिसà¥à¤• लेबà¥à¤²: '%s' डà¥à¤°à¤¾à¤‡à¤­ '%s'मा घà¥à¤¸à¤‰à¤¨à¥à¤¹à¥‹à¤¸à¥ र इनà¥à¤Ÿà¤° थिचà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ । "
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "List directory %spartial is missing."
+msgstr "आंशिक सूचिहरà¥à¤•à¥‹ डाइरेकà¥à¤Ÿà¥à¤°à¥€ %s हराइरहेछ ।"
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "आंशिक संगà¥à¤°à¤¹ डाइरेकà¥à¤Ÿà¥à¤°à¥€ %s हराइरहेछ ।"
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Unable to lock directory %s"
+msgstr "सूचि डाइरेकà¥à¤Ÿà¥à¤°à¥€ तालà¥à¤šà¤¾ मारà¥à¤¨ असफल"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾ फाइल पà¥à¤°à¤•à¤¾à¤° '%s' समरà¥à¤¥à¤¿à¤¤ छैन"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "%s मा परिवरà¥à¤¤à¤¨ गरà¥à¤¨ असकà¥à¤·à¤®"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "%li को %li फाइल पà¥à¤¨:पà¥à¤°à¤¾à¤ªà¥à¤¤ गरिदैछ (%s बाà¤à¤•à¥€ छ)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "%li को %li फाइल पà¥à¤¨:पà¥à¤°à¤¾à¤ªà¥à¤¤ गरिदैछ"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ %s पà¥à¤¨:सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨ चाहनà¥à¤›, तर यसको लागि मैले à¤à¤‰à¤Ÿà¤¾ संगà¥à¤°à¤¹ फेला पारà¥à¤¨ सकिन ।"
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"तà¥à¤°à¥à¤Ÿà¤¿, pkgProblemResolver:: समाधानले विचà¥à¤›à¥‡à¤¦à¤¨ सिरà¥à¤œà¤¨à¤¾ गरà¥à¤¦à¤›, यो भइरहेको पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥à¤•à¥‹ "
+"कारणले गरà¥à¤¦à¤¾ हो ।"
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "समसà¥à¤¯à¤¾à¤¹à¤°à¥‚ सà¥à¤§à¤¾à¤°à¥à¤¨ असकà¥à¤·à¤® भयो, तपाईà¤à¤²à¥‡ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥ भाà¤à¤šà¥à¤¨à¥à¤­à¤¯à¥‹ ।"
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ सूचीहरू वा वसà¥à¤¤à¥à¤¸à¥à¤¥à¤¿à¤¤à¤¿ फाइल पद वरà¥à¤£à¤¨ गरà¥à¤¨ वा खोलà¥à¤¨ सकिà¤à¤¨ ।"
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "यो समसà¥à¤¯à¤¾à¤¹à¤°à¥‚ सà¥à¤§à¤¾à¤°à¥à¤¨ तपाईठapt-get अदà¥à¤¯à¤¾à¤µà¤§à¤¿à¤• चलाउन चाहनà¥à¤¹à¥à¤¨à¥à¤›"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "सà¥à¤°à¥‹à¤¤à¤¹à¤°à¥à¤•à¥‹ सूचि पढà¥à¤¨ सकिà¤à¤¨ ।"
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "संकलन तà¥à¤°à¥à¤Ÿà¤¿ रिजेकà¥à¤¸ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr " '%s' को लागि '%s' निषà¥à¤•à¤¾à¤¶à¤¨ फेला पारà¥à¤¨ सकिà¤à¤¨"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr " '%s' को लागि '%s' संसà¥à¤•à¤°à¤£ फेला पारà¥à¤¨ सकिà¤à¤¨"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find task '%s'"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ फेला पारà¥à¤¨ सकिà¤à¤¨ %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ फेला पारà¥à¤¨ सकिà¤à¤¨ %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ फेला पारà¥à¤¨ सकिà¤à¤¨ %s"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ %s तोकà¥à¤¨ असकà¥à¤·à¤® भयो"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "लाइन %u सà¥à¤°à¥‹à¤¤ सूचि %s मा अति लामो छ ।"
+
+#: apt-pkg/cdrom.cc
+#, fuzzy
+msgid "Unmounting CD-ROM...\n"
+msgstr "सिडी रोम अनमाउनà¥à¤Ÿ गरिदैछ..."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "सिडी रोम माउनà¥à¤Ÿ विनà¥à¤¦à¥ पà¥à¤°à¤¯à¥‹à¤— गरिदैछ %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "डिसà¥à¤•à¥‹ लागि परà¥à¤–िदै...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "सिडी रोम माउनà¥à¤Ÿ गरिदै...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "परिचय गराइदैछ..."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "लेबà¥à¤² भणà¥à¤¡à¤¾à¤°à¤£ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥:%s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾ फाइलहरà¥à¤•à¥‹ लागि डिसà¥à¤• सà¥à¤•à¥à¤¯à¤¾à¤¨ गरिदैछ...\n"
+
+#: apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr " %i पà¥à¤¯à¤¾à¤•à¥‡à¤œ अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾à¤¹à¤°à¥‚, %i सà¥à¤°à¥‹à¤¤ अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾ र %i हसà¥à¤¤à¤¾à¤•à¥à¤·à¤°à¤¹à¤°à¥‚ फेला परे\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "Found label '%s'\n"
+msgstr "लेबà¥à¤² भणà¥à¤¡à¤¾à¤°à¤£ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥:%s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "तà¥à¤¯à¥‹ वैध नाम होइन, फेरी पà¥à¤°à¤¯à¤¾à¤¸ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"यो डिसà¥à¤•à¤•à¥‹ नाम:\n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "पà¥à¤¯à¤•à¥‡à¤œ सूचिहरू पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¥€ गरिदैछ..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "नयाठसà¥à¤°à¥‹à¤¤ सूचि लेखिदैछ\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "यो डिसà¥à¤•à¤•à¥‹ लागि सà¥à¤°à¥‹à¤¤ सूचि पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿à¤¹à¤°à¥‚:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "%s सà¥à¤¥à¤¿à¤° गरà¥à¤¨ असकà¥à¤·à¤® भयो ।"
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "माउनà¥à¤Ÿ बिनà¥à¤¦à¥ %s सà¥à¤¥à¤¿à¤° गरà¥à¤¨ असकà¥à¤·à¤®"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "सिडी रोम सà¥à¤¥à¤¿à¤° गरà¥à¤¨ असफल भयो"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "आदेश लाइन विकलà¥à¤ª '%c' [%s बाट] जà¥à¤žà¤¾à¤¤ छैन ।"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "आदेश लाइन विकलà¥à¤ª %s बà¥à¤à¤¿à¤à¤¨"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "आदेश लाइन विकलà¥à¤ª %s बूलियन छैन"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "विकलà¥à¤ª %s लाई à¤à¤‰à¤Ÿà¤¾ तरà¥à¤•à¤•à¥‹ आवशà¥à¤¯à¤•à¤¤à¤¾ परà¥à¤¦à¤› ।"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "विकलà¥à¤ª %s: कनफिगरेसन वसà¥à¤¤à¥ विशिषà¥à¤Ÿà¤¿à¤•à¤°à¤£ संग à¤à¤‰à¤Ÿà¤¾ =<val> हà¥à¤¨à¥à¤ªà¤°à¥à¤› ।"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "विकलà¥à¤ª %s लाई à¤à¤‰à¤Ÿà¤¾ इनà¥à¤Ÿà¤¿à¤œà¤° तरà¥à¤•à¤•à¥‹ आवशà¥à¤¯à¤• परà¥à¤¦à¤›, '%s' होइन"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "विकलà¥à¤ª '%s' अति लामो छ"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "अरà¥à¤¥ %s बà¥à¤à¤¿à¤à¤¨, सतà¥à¤¯ वा à¤à¥‚ठो पà¥à¤°à¤¯à¤¾à¤¸ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "अवैध सञà¥à¤šà¤¾à¤²à¤¨ %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "नचिनिà¤à¤•à¥‹ टाइप संकà¥à¤·à¤¿à¤ªà¥à¤¤ रà¥à¤ª: '%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "कनफिगरेसन फाइल खोलिदैछ %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "वाकà¥à¤¯ संरचना तà¥à¤°à¥à¤Ÿà¤¿ %s:%u: बनà¥à¤¦ कà¥à¤¨à¥ˆ नाम बिना सà¥à¤°à¥‚ हà¥à¤¨à¥à¤› ।"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "वाकà¥à¤¯ संरचना तà¥à¤°à¥à¤Ÿà¤¿ %s:%u: वैरà¥à¤ª गरिà¤à¤•à¥‹ टà¥à¤¯à¤¾à¤—"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "वाकà¥à¤¯ संरचना तà¥à¤°à¥à¤Ÿà¤¿ %s:%u: मान पछाडि अतिरिकà¥à¤¤ जंक"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "वाकà¥à¤¯ संरचना तà¥à¤°à¥à¤Ÿà¤¿ %s:%u: निरà¥à¤¦à¥‡à¤¶à¤¨à¤¹à¤°à¥‚ माथिलà¥à¤²à¥‹ तहबाट मातà¥à¤° हà¥à¤¨à¥à¤›"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "वाकà¥à¤¯ संरचना तà¥à¤°à¥à¤Ÿà¤¿ %s:%u: अति धेरै नेसà¥à¤Ÿà¥‡à¤¡ समावेश गरà¥à¤¦à¤›"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "वाकà¥à¤¯ संरचना तà¥à¤°à¥à¤Ÿà¤¿ %s:%u: यहाठबाट समावेश गरेको"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "वाकà¥à¤¯ संरचना तà¥à¤°à¥à¤Ÿà¤¿ %s:%u: समरà¥à¤¥à¤¨ नभà¤à¤•à¥‹ डाइरेकà¥à¤Ÿà¤¿à¤­ '%s'"
+
+#: apt-pkg/contrib/configuration.cc
+#, fuzzy, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr "वाकà¥à¤¯ संरचना तà¥à¤°à¥à¤Ÿà¤¿ %s:%u: निरà¥à¤¦à¥‡à¤¶à¤¨à¤¹à¤°à¥‚ माथिलà¥à¤²à¥‹ तहबाट मातà¥à¤° हà¥à¤¨à¥à¤›"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "वाकà¥à¤¯ संरचना तà¥à¤°à¥à¤Ÿà¤¿ %s:%u:फाइलको अनà¥à¤¤à¥à¤¯à¤®à¤¾ अतिरिकà¥à¤¤ जंक"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem unlinking the file %s"
+msgstr "फाइल अनलिङà¥à¤• गरà¥à¤¦à¤¾ समसà¥à¤¯à¤¾"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "तालà¥à¤šà¤¾ मारिà¤à¤•à¥‹ फाइल मातà¥à¤° पढà¥à¤¨à¤•à¥‹ लागि तालà¥à¤šà¤¾ मारà¥à¤¨ पà¥à¤°à¤¯à¥‹à¤— गरिà¤à¤•à¥‹ छैन %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "तालà¥à¤šà¤¾ मारिà¤à¤•à¥‹ फाइल खोलà¥à¤¨ सकिà¤à¤¨ %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "nfs माउनà¥à¤Ÿ गरिà¤à¤•à¥‹ लक फाइलको लागि लक पà¥à¤°à¤¯à¥‹à¤— गरिà¤à¤•à¥‹ छैन %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "तालà¥à¤šà¤¾ पà¥à¤°à¤¾à¤ªà¥à¤¤ गरà¥à¤¨ सकिà¤à¤¨ %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr " %s को लागि परà¥à¤–िरहेको तर यो तà¥à¤¯à¤¹à¤¾à¤ छैन"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "सहायक पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ %s ले खणà¥à¤¡à¤¿à¤•à¤°à¤£ गलà¥à¤¤à¤¿ पà¥à¤°à¤¾à¤ªà¥à¤¤ भयो ।"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "सहायक पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ %s ले खणà¥à¤¡à¤¿à¤•à¤°à¤£ गलà¥à¤¤à¤¿ पà¥à¤°à¤¾à¤ªà¥à¤¤ भयो ।"
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "सहायक पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ %s ले à¤à¤‰à¤Ÿà¤¾ तà¥à¤°à¥à¤Ÿà¤¿ कोड फरà¥à¤•à¤¾à¤¯à¥‹ (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "सहायक पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ %s अनपेकà¥à¤·à¤¿à¤¤ बनà¥à¤¦ भयो"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "तà¥à¤°à¥à¤Ÿà¤¿ पढà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "तà¥à¤°à¥à¤Ÿà¤¿ लेखà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "फाइल बनà¥à¤¦ गरà¥à¤¦à¤¾ समसà¥à¤¯à¤¾"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "सहायक पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ IPC सिरà¥à¤œà¤¨à¤¾ गरà¥à¤¨ असफल"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "सङà¥à¤•à¥à¤šà¤¨à¤•à¤°à¥à¤¤à¤¾ कारà¥à¤¯à¤¾à¤¨à¥à¤µà¤¯à¤¨ गरà¥à¤¨ असफल भयो"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "फाइल %s खोलà¥à¤¨ सकिà¤à¤¨"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Could not open file descriptor %d"
+msgstr "%s को लागि पाइप खोलà¥à¤¨ सकिà¤à¤¨"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "पडà¥à¤¨à¥à¤¹à¥‹à¤¸à¥, अहिले समà¥à¤® %lu पढà¥à¤¨ छ तर कà¥à¤¨à¥ˆ बाà¤à¤•à¥€ छैन"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "लेखà¥à¤¨à¥à¤¹à¥‹à¤¸à¥, अहिले समà¥à¤® %lu लेखà¥à¤¨ छ तर सकिदैन "
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the file %s"
+msgstr "फाइल बनà¥à¤¦ गरà¥à¤¦à¤¾ समसà¥à¤¯à¤¾"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "फाइल गà¥à¤ªà¥à¤¤à¤¿à¤•à¤°à¤£ गरà¥à¤¦à¤¾ समसà¥à¤¯à¤¾"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "फाइल गà¥à¤ªà¥à¤¤à¤¿à¤•à¤°à¤£ गरà¥à¤¦à¤¾ समसà¥à¤¯à¤¾"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "%s सà¥à¤¥à¤¿à¤° गरà¥à¤¨ असकà¥à¤·à¤® भयो"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr " %s मा लेखà¥à¤¨ असकà¥à¤·à¤®"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "à¤à¤‰à¤Ÿà¤¾ खाली फाइल mmap बनाउन सकिà¤à¤¨"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "%lu बाइटहरà¥à¤•à¥‹ mmap बनाउन सकिà¤à¤¨"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "%s को लागि पाइप खोलà¥à¤¨ सकिà¤à¤¨"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to close mmap"
+msgstr "%s खोलà¥à¤¨ असफल"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to synchronize mmap"
+msgstr "आहà¥à¤µà¤¾à¤¨ गरà¥à¤¨ असकà¥à¤·à¤® भयो"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "%lu बाइटहरà¥à¤•à¥‹ mmap बनाउन सकिà¤à¤¨"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Failed to truncate file"
+msgstr "फाइल %s लेखà¥à¤¨ असफल भयो"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... तà¥à¤°à¥à¤Ÿà¤¿!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... गरियो"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... गरियो"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "चयन %s फेला पारà¥à¤¨ सकिà¤à¤¨"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Unable to parse Release file %s"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ फाइल पद वरà¥à¤£à¤¨ गरà¥à¤¨ असकà¥à¤·à¤® %s (१)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "No sections in Release file %s"
+msgstr "दà¥à¤°à¤·à¥à¤Ÿà¤¬à¥à¤¯, %s को सटà¥à¤Ÿà¤¾ %s चयन भइरहेछ\n"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "घà¥à¤®à¤¾à¤‰à¤°à¥‹ फाइलमा अवैध लाइन:%s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ फाइल पद वरà¥à¤£à¤¨ गरà¥à¤¨ असकà¥à¤·à¤® %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, fuzzy, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "सूचि डाइरेकà¥à¤Ÿà¥à¤°à¥€ तालà¥à¤šà¤¾ मारà¥à¤¨ असफल"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr ""
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Installing %s"
+msgstr " %s सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भयो"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr " %s कनफिगर गरिदैछ"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr " %s हटाइदैछ"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removing %s"
+msgstr " %s पूरà¥à¤£ रà¥à¤ªà¤²à¥‡ हटà¥à¤¯à¥‹"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr " %s सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भयो"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Directory '%s' missing"
+msgstr "आंशिक सूचिहरà¥à¤•à¥‹ डाइरेकà¥à¤Ÿà¥à¤°à¥€ %s हराइरहेछ ।"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, fuzzy, c-format
+msgid "Could not open file '%s'"
+msgstr "फाइल %s खोलà¥à¤¨ सकिà¤à¤¨"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr " %s तयार गरिदैछ"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr " %s अनपà¥à¤¯à¤¾à¤• गरिदैछ"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr " %s कनफिगर गरà¥à¤¨ तयार गरिदैछ"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr " %s हटाउन तयार गरिदैछ"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr " %s हटà¥à¤¯à¥‹"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr " %s पूरà¥à¤£ रà¥à¤ªà¤²à¥‡ हटाउन तयार गरिदैछ"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr " %s पूरà¥à¤£ रà¥à¤ªà¤²à¥‡ हटà¥à¤¯à¥‹"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr " %s मा लेखà¥à¤¨ असकà¥à¤·à¤®"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "निरà¥à¤­à¤°à¤¤à¤¾ टà¥à¤°à¥€ निरà¥à¤®à¤¾à¤£ गरिदैछ"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "उमेदà¥à¤µà¤¾à¤° संसà¥à¤•à¤°à¤£à¤¹à¤°à¥‚"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "निरà¥à¤­à¤°à¤¤à¤¾ सिरà¥à¤œà¤¨à¤¾"
+
+#: apt-pkg/depcache.cc
+#, fuzzy
+msgid "Reading state information"
+msgstr "उपलबà¥à¤§ सूचना गाà¤à¤­à¤¿à¤¦à¥ˆà¤›"
+
+#: apt-pkg/depcache.cc
+#, fuzzy, c-format
+msgid "Failed to open StateFile %s"
+msgstr "%s खोलà¥à¤¨ असफल"
+
+#: apt-pkg/depcache.cc
+#, fuzzy, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "फाइल %s लेखà¥à¤¨ असफल भयो"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "%i रेकरà¥à¤¡à¤¹à¤°à¥‚ लेखियो ।\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "हराइरहेको फाइल %i हरू संगै %i रेकरà¥à¤¡à¤¹à¤°à¥‚ लेखà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "मेल नखाà¤à¤•à¤¾ फाइल %i हरू संगै %i रेकरà¥à¤¡à¤¹à¤°à¥‚ लेखà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "हराइरहेको फाइल %i हरू र मेल नखाà¤à¤•à¤¾ फाइल %i हरू संगै %i रेकरà¥à¤¡à¤¹à¤°à¥‚ लेखà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, fuzzy, c-format
+msgid "Hash mismatch for: %s"
+msgstr "MD5Sum मेल भà¤à¤¨"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "पà¥à¤¯à¤¾à¤•à¤¿à¤™à¥à¤— पà¥à¤°à¤£à¤¾à¤²à¥€ '%s' समरà¥à¤¥à¤¿à¤¤ छैन"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "उपयà¥à¤•à¥à¤¤ पà¥à¤¯à¤¾à¤•à¤¿à¤™à¥à¤— पà¥à¤°à¤£à¤¾à¤²à¥€ पà¥à¤°à¤•à¤¾à¤° निरà¥à¤§à¤¾à¤°à¤¨ गरà¥à¤¨ असकà¥à¤·à¤® भयो"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "फाइल %s खोलà¥à¤¨ सकिà¤à¤¨"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"दà¥à¤µà¤¨à¥à¤¦/पà¥à¤¨-आधारित लूपको कारणले गरà¥à¤¦à¤¾ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ चलाउनको लागि असà¥à¤¥à¤¾à¤¯à¥€ रà¥à¤ªà¤®à¤¾ पà¥à¤¯à¤¾à¤•à¥‡à¤œ %s "
+"हटाउनॠपरà¥à¤¨à¥‡à¤› । यो पà¥à¤°à¤¾à¤¯ नरामà¥à¤°à¥‹ हो, तर यदि तपाईठयो साà¤à¤šà¥à¤šà¥ˆ गरà¥à¤¨ चाहनà¥à¤¹à¥à¤¨à¥à¤› भने, APT::"
+"Force-LoopBreak विकलà¥à¤ª सकà¥à¤°à¤¿à¤¯ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।"
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "खाली पà¥à¤¯à¤¾à¤•à¥‡à¤œ कà¥à¤¯à¤¾à¤¸"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ कà¥à¤¯à¤¾à¤¸ फाइल दूषित भयो "
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ कà¥à¤¯à¤¾à¤¸ फाइल à¤à¤‰à¤Ÿà¤¾ अमिलà¥à¤¦à¥‹ संसà¥à¤•à¤°à¤£ हो"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "यो APT ले संसà¥à¤•à¤°à¤£ पà¥à¤°à¤£à¤¾à¤²à¥€à¤²à¤¾à¤ˆ समरà¥à¤¥à¤¨ गरà¥à¤¦à¥ˆà¤¨ '%s'"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ कà¥à¤¯à¤¾à¤¸ विभिनà¥à¤¨ वासà¥à¤¤à¥à¤•à¤²à¤¾à¤•à¥‹ लागि निरà¥à¤®à¤¾à¤£ भà¤à¤•à¥‹ हो"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ कà¥à¤¯à¤¾à¤¸ फाइल दूषित भयो "
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "आधारित"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "पà¥à¤¨:आधारित"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "सà¥à¤à¤¾à¤µ दिनà¥à¤›"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "दà¥à¤µà¤¨à¥à¤¦à¤¹à¤°à¥‚"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "सिफारिस गरà¥à¤¦à¤›"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "बदलà¥à¤›"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "वेकायमहरू"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "महतà¥à¤µà¤ªà¥‚रà¥à¤£"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "आवशà¥à¤¯à¤•"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "मानक"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "अतिरिकà¥à¤¤"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "वैकलà¥à¤ªà¤¿à¤•"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "कà¥à¤¯à¤¾à¤¸ संग à¤à¤‰à¤Ÿà¤¾ नमिलà¥à¤¦à¥‹ संसà¥à¤•à¤°à¤£ पà¥à¤°à¤£à¤¾à¤²à¥€ छ"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr " %s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿ देखा परà¥à¤¯à¥‹ (pkg फेला पारà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ )"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "वाऊ, APT ले सकà¥à¤·à¤® गरेको पà¥à¤¯à¤¾à¤•à¥‡à¤œ नामहरà¥à¤•à¥‹ नमà¥à¤¬à¤°à¤²à¤¾à¤ˆ तपाईà¤à¤²à¥‡ उछिनà¥à¤¨à¥à¤­à¤¯à¥‹ । "
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "वाऊ, APT ले सकà¥à¤·à¤® गरेको संसà¥à¤•à¤°à¤£à¤¹à¤°à¥à¤•à¥‹ नमà¥à¤¬à¤°à¤²à¤¾à¤ˆ तपाईà¤à¤²à¥‡ उछिनà¥à¤¨à¥à¤­à¤¯à¥‹ । "
+
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "वाऊ, APT ले सकà¥à¤·à¤® गरेको संसà¥à¤•à¤°à¤£à¤¹à¤°à¥à¤•à¥‹ नमà¥à¤¬à¤°à¤²à¤¾à¤ˆ तपाईà¤à¤²à¥‡ उछिनà¥à¤¨à¥à¤­à¤¯à¥‹ । "
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "वाऊ, APT ले सकà¥à¤·à¤® गरेको निरà¥à¤­à¤°à¤¤à¤¾à¤¹à¤°à¥à¤•à¥‹ नमà¥à¤¬à¤°à¤²à¤¾à¤ˆ तपाईà¤à¤²à¥‡ उछिनà¥à¤¨à¥à¤­à¤¯à¥‹ । "
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ सूचिहरू पढिदैछ"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "सà¥à¤°à¥‹à¤¤ कà¥à¤¯à¤¾à¤¸ बचत गरà¥à¤¦à¤¾ IO तà¥à¤°à¥à¤Ÿà¤¿"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾ फाइल पà¥à¤°à¤•à¤¾à¤° '%s' समरà¥à¤¥à¤¿à¤¤ छैन"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, fuzzy, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "पà¥à¤°à¤¾à¤¥à¤®à¤¿à¤•à¤¤à¤¾ फाइलमा अवैध रेकरà¥à¤¡, कà¥à¤¨à¥ˆ पà¥à¤¯à¤¾à¤•à¥‡à¤œ हेडर छैन"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "पिन टाइप %s बà¥à¤à¥à¤¨ सकिà¤à¤¨ "
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "पिनको लागि कà¥à¤¨à¥ˆ पà¥à¤°à¤¾à¤¥à¤®à¤¿à¤•à¤¤à¤¾ (वा शूनà¥à¤¯) निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ छैन"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "वैरà¥à¤ªà¥à¤¯ गरिà¤à¤•à¥‹ अधिलेखन %s रेखा %lu #१"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "%s खोलिदैछ"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "वैरà¥à¤ªà¥à¤¯ लाइन %u सà¥à¤°à¥‹à¤¤ सूचिमा %s (पà¥à¤°à¤•à¤¾à¤°)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "सà¥à¤°à¥‹à¤¤ सूची %s भितà¥à¤° %u लाइनमा टाइप '%s' जà¥à¤žà¤¾à¤¤ छैन"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "वैरà¥à¤ªà¥à¤¯ लाइन %u सà¥à¤°à¥‹à¤¤ सूचिमा %s (पà¥à¤°à¤•à¤¾à¤°)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "सà¥à¤°à¥‹à¤¤ सूची %s भितà¥à¤° %u लाइनमा टाइप '%s' जà¥à¤žà¤¾à¤¤ छैन"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "तपाईà¤à¤•à¥‹ सà¥à¤°à¥‹à¤¤ सूचिमा केही 'source' URIs राखà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "%s %s तानà¥à¤¨ असफल भयो"
+
+#: apt-pkg/update.cc
+#, fuzzy
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"केही अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾ फाइलहरू डाउनलोड गरà¥à¤¨ असफल भयो, तिनीहरू उपेकà¥à¤·à¤¿à¤¤ भà¤, वा सटà¥à¤Ÿà¤¾à¤®à¤¾ पà¥à¤°à¤¾à¤¨à¥‹ "
+"à¤à¤‰à¤Ÿà¤¾ पà¥à¤°à¤¯à¥‹à¤— गरियो ।"
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "सà¥à¤¤à¤° वृदà¥à¤§à¤¿ गणना गरिदैछ"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "हानà¥à¤¨à¥à¤¹à¥‹à¤¸à¥:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "पà¥à¤°à¤¾à¤ªà¥à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr ""
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "%s (%sB/s) मा %sB मा तानियो\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [काम गरिरहेको]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"मेडिया परिवरà¥à¤¤à¤¨: कृपया डिसà¥à¤• लेबà¥à¤² डà¥à¤°à¤¾à¤‡à¤­ '%s' मा घà¥à¤¸à¤¾à¤‰à¤¨à¥à¤¹à¥‹à¤¸à¥\n"
+" '%s'\n"
+"र इनà¥à¤Ÿà¤° थिचà¥à¤¨à¥à¤¹à¥‹à¤¸à¥\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "निरà¥à¤­à¤°à¤¤à¤¾à¤¹à¤°à¥‚ सà¥à¤§à¤¾à¤° गरिदैछ..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr "असफल भयो ।"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "निरà¥à¤­à¤°à¤¤à¤¾à¤¹à¤°à¥‚ सà¥à¤§à¤¾à¤° गरà¥à¤¨ असकà¥à¤·à¤® भयो"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "सà¥à¤¤à¤° वृदà¥à¤§à¤¿ सेटलाई नà¥à¤¯à¥‚नतम गरà¥à¤¨ असकà¥à¤·à¤® भयो"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr "काम भयो"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "यी सà¥à¤§à¤¾à¤° गरà¥à¤¨ तपाईà¤à¤²à¥‡ 'apt --fix-broken install' चलाउन परà¥à¤› ।"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"नभेटिà¤à¤•à¤¾ निरà¥à¤­à¤°à¤¤à¤¾à¤¹à¤°à¥‚ । पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ बिना 'apt --fix-broken install' पà¥à¤°à¤¯à¤¾à¤¸ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ "
+"( वा समाधान निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥) ।"
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "दà¥à¤°à¤·à¥à¤Ÿà¤¬à¥à¤¯, रिजेकà¥à¤¸ '%s' को लागि %s चयन गरिदैछ\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "दà¥à¤°à¤·à¥à¤Ÿà¤¬à¥à¤¯, रिजेकà¥à¤¸ '%s' को लागि %s चयन गरिदैछ\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "दà¥à¤°à¤·à¥à¤Ÿà¤¬à¥à¤¯, रिजेकà¥à¤¸ '%s' को लागि %s चयन गरिदैछ\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ %s ...दà¥à¤µà¤¾à¤°à¤¾ उपलबà¥à¤§ गराइà¤à¤•à¥‹ अवासà¥à¤¤à¤µà¤¿à¤• पà¥à¤¯à¤¾à¤•à¥‡à¤œ हो:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भयो]"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Not candidate version]"
+msgstr "उमेदà¥à¤µà¤¾à¤° संसà¥à¤•à¤°à¤£à¤¹à¤°à¥‚"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "तपाईà¤à¤²à¥‡ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ गरà¥à¤¨ सà¥à¤ªà¤·à¥à¤Ÿ रà¥à¤ªà¤®à¤¾ à¤à¤‰à¤Ÿà¤¾ चयन गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"पà¥à¤¯à¤¾à¤•à¥‡à¤œ %s उपलबà¥à¤§ छैन, तर अरà¥à¤•à¥‹ पà¥à¤¯à¤¾à¤•à¥‡à¤œ दà¥à¤µà¤¾à¤°à¤¾ सिफारिस पà¥à¤¯à¤¾à¤•à¥‡à¤œ हो ।\n"
+"यसको मतलब पà¥à¤¯à¤¾à¤•à¥‡à¤œ हराइरहेको पà¥à¤¯à¤¾à¤•à¥‡à¤œ, बेकायम भयो\n"
+" अरà¥à¤•à¥‹ सà¥à¤°à¥‹à¤¤à¤¬à¤¾à¤Ÿ मातà¥à¤° उपलबà¥à¤§ हà¥à¤¨à¥à¤›\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "जे भठपनि निमà¥à¤¨ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ले यसलाई बदलà¥à¤›:"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ %s संग कà¥à¤¨à¥ˆ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ उमेदà¥à¤µà¤¾à¤° छैन"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr ""
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ %s सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भà¤à¤¨, तà¥à¤¯à¤¸à¥ˆà¤²à¥‡ हटेन\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ %s सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भà¤à¤¨, तà¥à¤¯à¤¸à¥ˆà¤²à¥‡ हटेन\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "दà¥à¤°à¤·à¥à¤Ÿà¤¬à¥à¤¯, %s को सटà¥à¤Ÿà¤¾ %s चयन भइरहेछ\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "APT संग सà¥à¤ªà¤° काउ शकà¥à¤¤à¤¿à¤¹à¤°à¥‚ छ ।"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "कà¥à¤¨à¥ˆ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ फेला परेन"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "चेतावनी: निमà¥à¤¨ पà¥à¤¯à¤¾à¤•à¤²à¥‡à¤œà¤¹à¤°à¥‚ पà¥à¤°à¤£à¤¾à¤£à¥€à¤•à¤°à¤£ हà¥à¤¨ सकà¥à¤¦à¥ˆà¤¨! "
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "पà¥à¤°à¤®à¤¾à¤£à¤¿à¤•à¤°à¤£ चेतावनी अधिलेखन भयो ।\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "केही पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ पà¥à¤°à¤®à¤¾à¤£à¥€à¤•à¤°à¤£ हà¥à¤¨ सकà¥à¤¦à¥ˆà¤¨"
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid "Install these packages without verification?"
+msgstr "यी पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ रूजू बिना सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ गरà¥à¤¨à¥à¤¹à¥à¤¨à¥à¤› [y/N]? "
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "तà¥à¤¯à¤¹à¤¾à¤ समसà¥à¤¯à¤¾à¤¹à¤°à¥‚ छनॠर हà¥à¤¨à¥à¤›à¤²à¤¾à¤ˆ जोड नगरिकन -y को पà¥à¤°à¤¯à¥‹à¤— भयो"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr " %s मा खाली ठाऊठनिरà¥à¤§à¤¾à¤°à¤£ गरà¥à¤¨ सकिà¤à¤¨"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "तपाईठसंग %s मा परà¥à¤¯à¤¾à¤ªà¥à¤¤ खाली ठाऊठछैन ।"
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "डाउनलोड डाइरेकà¥à¤Ÿà¥à¤°à¥€ तालà¥à¤šà¤¾ मारà¥à¤¨ असकà¥à¤·à¤®"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"केही पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨ सकà¥à¤¦à¥ˆà¤¨ । यसको मतलब तपाईà¤à¤²à¥‡\n"
+" à¤à¤‰à¤Ÿà¤¾ असमà¥à¤­à¤µ अवासà¥à¤¥à¤¾à¤•à¥‹ अनà¥à¤°à¥‹à¤§ गरà¥à¤¨à¥ भà¤à¤•à¥‹ छ वा यदि तपाईà¤à¤²à¥‡ पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥ भइरहेको केहि "
+"पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥à¤•à¥‹ आवशà¥à¤¯à¤•à¤¤à¤¾ परà¥à¤¨à¥‡ असà¥à¤¥à¤¿à¤°\n"
+" वितरण अहिले समà¥à¤® सिरà¥à¤œà¤¨à¤¾\n"
+" भà¤à¤•à¥‹ छैन वा आवगमन विनानै सरà¥à¤¯à¥‹ ।"
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "निमà¥à¤¨ सूचनाले अवसà¥à¤¥à¤¾à¤²à¤¾à¤ˆ हल गरà¥à¤¨ मदà¥à¤¦à¤¤ गरà¥à¤¨à¥‡à¤›: "
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "भाà¤à¤šà¤¿à¤à¤•à¤¾ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"केही संगà¥à¤°à¤¹à¤¹à¤°à¥‚ तानà¥à¤¨ असकà¥à¤·à¤® भयो,apt-get अदà¥à¤¯à¤¾à¤µà¤§à¤¿à¤• चलिरहेछ वा हराइरहेको --fix-संगै पà¥à¤°à¤¯à¤¾à¤¸ "
+"गरà¥à¤¨à¥à¤¹à¥à¤¨à¥à¤› ?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "आनà¥à¤¤à¤°à¤¿à¤• तà¥à¤°à¥à¤Ÿà¤¿, सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥à¤²à¤¾à¤ˆ भाà¤à¤šà¤¿à¤à¤•à¥‹ पà¥à¤¯à¤¾à¤•à¥‡à¤œ भनिनà¥à¤¥à¥à¤¯à¥‹!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ हटà¥à¤¨ चाहदैछनॠतर हटाई अकà¥à¤·à¤® भइरहेछ ।"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "तà¥à¤¯à¤¹à¤¾à¤ समसà¥à¤¯à¤¾à¤¹à¤°à¥‚ छनॠर हà¥à¤¨à¥à¤›à¤²à¤¾à¤ˆ जोड नगरिकन -y को पà¥à¤°à¤¯à¥‹à¤— भयो"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "तà¥à¤¯à¤¹à¤¾à¤ समसà¥à¤¯à¤¾à¤¹à¤°à¥‚ छनॠर हà¥à¤¨à¥à¤›à¤²à¤¾à¤ˆ जोड नगरिकन -y को पà¥à¤°à¤¯à¥‹à¤— भयो"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "आनà¥à¤¤à¤°à¤¿à¤• तà¥à¤°à¥à¤Ÿà¤¿, आदेश समापà¥à¤¤ भà¤à¤•à¥‹ छैन"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr "कसà¥à¤¤à¥‹ नमिलेको.. साइजहरू मेल खाà¤à¤¨, apt@packages.debian.org इमेल गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "संगà¥à¤°à¤¹à¤¹à¤°à¥à¤•à¥‹ %sB/%sB पà¥à¤°à¤¾à¤ªà¥à¤¤ गरà¥à¤¨ आवशà¥à¤¯à¤• ।\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "संगà¥à¤°à¤¹à¤¹à¤°à¥à¤•à¥‹ %sB पà¥à¤°à¤¾à¤ªà¥à¤¤ गरà¥à¤¨ आवशà¥à¤¯à¤• ।\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "अनपà¥à¤¯à¤¾à¤• गरिसके पछि थप डिसà¥à¤• खाली ठाउà¤à¤•à¥‹ %sB पà¥à¤°à¤¯à¥‹à¤— हà¥à¤¨à¥‡à¤› ।\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "%sB अनपà¥à¤¯à¤¾à¤• गरिसके पछि डिसà¥à¤• खाली ठाउठखाली हà¥à¤¨à¥‡à¤› ।\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "तà¥à¤°à¤¿à¤­à¤¿à¤¯à¤² मातà¥à¤° निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ गरिà¤à¤•à¥‹ छ तर यो तà¥à¤°à¤¿à¤­à¤¿à¤¯à¤² सञà¥à¤šà¤¾à¤²à¤¨ होइन ।"
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "हो,मैले भने जसà¥à¤¤à¥ˆ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"तपाईà¤à¤²à¥‡ केही संभवत: हानिकारक काम गरà¥à¤¨à¥à¤ªà¤°à¥à¤› ।\n"
+"निरनà¥à¤¤à¤°à¤¤à¤¾ दिन '%s' वाकà¥à¤¯à¤¾à¤‚शमा टाइप गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ \n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "परितà¥à¤¯à¤¾à¤— गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Do you want to continue?"
+msgstr "के तपाईठनिरनà¥à¤¤à¤°à¤¤à¤¾ दिन चाहनà¥à¤¹à¥à¤¨à¥à¤› [Y/n]? "
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "केही फाइलहरू डाउनलोड गरà¥à¤¨ असफल भयो"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "डाउनलोड समापà¥à¤¤ भयो र डाउनलोडमा मोड मातà¥à¤°à¥ˆ छ"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "हराइरहेको --fix-र सà¥à¤µà¤¾à¤ª भइरहेको मेडिया हाल समरà¥à¤¥à¤¿à¤¤ भइरहेको छैन"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "हराइरहेको पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ सà¥à¤§à¤¾à¤°à¥à¤¨ असकà¥à¤·à¤® भयो ।"
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ परितà¥à¤¯à¤¾à¤— गरिदैछ ।"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "आनà¥à¤¤à¤°à¤¿à¤• तà¥à¤°à¥à¤Ÿà¤¿,समसà¥à¤¯à¤¾ हलकरà¥à¤¤à¤¾à¤²à¥‡ उतà¥à¤¤à¤® गà¥à¤£ भाà¤à¤šà¥à¤¯à¥‹ "
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "निमà¥à¤¨ नयाठपà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨à¥‡à¤›à¤¨à¥:"
+msgstr[1] "निमà¥à¤¨ नयाठपà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨à¥‡à¤›à¤¨à¥:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "निमà¥à¤¨ नयाठपà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨à¥‡à¤›à¤¨à¥:"
+msgstr[1] "निमà¥à¤¨ नयाठपà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨à¥‡à¤›à¤¨à¥:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "निमà¥à¤¨ अतिरिकà¥à¤¤ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨à¥‡à¤›à¤¨à¥:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "सà¥à¤à¤¾à¤µ दिà¤à¤•à¤¾ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "सिफारिस गरिà¤à¤•à¤¾ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "%s फडà¥à¤•à¤¿à¤¦à¥ˆà¤›, यो पहिलà¥à¤¯à¥ˆ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भयो र सà¥à¤¤à¤°à¤µà¥ƒà¤¦à¥à¤§à¤¿ सेट भà¤à¤•à¥‹ छैन ।\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr "%s फडà¥à¤•à¤¿à¤¦à¥ˆà¤›, यो पहिलà¥à¤¯à¥ˆ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भयो र सà¥à¤¤à¤°à¤µà¥ƒà¤¦à¥à¤§à¤¿ सेट भà¤à¤•à¥‹ छैन ।\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr " %s को पà¥à¤¨: सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ समà¥à¤­à¤µ छैन, यो डाउनलोड हà¥à¤¨ सकà¥à¤¦à¥ˆà¤¨ ।\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s पहिलà¥à¤¯à¥ˆ नयाठसंसà¥à¤•à¤°à¤£ हो ।\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to manually installed.\n"
+msgstr "तर %s सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨à¥à¤ªà¤°à¥à¤¯à¥‹"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "%s को लागि चयन भà¤à¤•à¥‹ संसà¥à¤•à¤°à¤£ %s (%s)\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "%s को लागि चयन भà¤à¤•à¥‹ संसà¥à¤•à¤°à¤£ %s (%s)\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भयो]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भयो]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भयो]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भयो]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "तर %s सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भयो"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "तर %s सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨à¥à¤ªà¤°à¥à¤¯à¥‹"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "तर यो सà¥à¤¥à¤¾à¤ªà¤¨à¤¾à¤¯à¥‹à¤—à¥à¤¯ छैन"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "तर यो अवासà¥à¤¤à¤µà¤¿à¤• पà¥à¤¯à¤¾à¤•à¥‡à¤œ होइन"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "तर यो सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨ गइरहेको छैन"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "तर यो सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भà¤à¤¨"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr "वा"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "निमà¥à¤¨ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥à¤²à¥‡ निरà¥à¤­à¤°à¤¤à¤¾à¤¹à¤°à¥‚ भेटेननà¥:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "निमà¥à¤¨ नयाठपà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨à¥‡à¤›à¤¨à¥:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "निमà¥à¤¨ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ हटाइनेछनà¥:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "निमà¥à¤¨ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ पछाडि राखिनेछनà¥:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "निमà¥à¤¨ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ सà¥à¤¤à¤° वृदà¥à¤§à¤¿ हà¥à¤¨à¥‡à¤›à¤¨à¥:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "निमà¥à¤¨ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ सà¥à¤¤à¤°à¤•à¤® गरिनेछनà¥:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "निमà¥à¤¨ भइरहेको पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ परिवरà¥à¤¤à¤¨ हà¥à¤¨à¥‡à¤›à¥ˆà¤¨:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (%s कारणले)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"चेतावनी: निमà¥à¤¨ आवशà¥à¤¯à¤• पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ हटाइनेछनॠ।\n"
+"तपाईठके गरिरहेको यकिन नभà¤à¤¸à¤®à¥à¤® यो काम गरिने छैन!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu सà¥à¤¤à¤° वृदà¥à¤§à¤¿ गरियो, %lu नयाठसà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भयो, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu पà¥à¤¨: सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ गरियो, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu सà¥à¤¤à¤° कम गरियो, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu हटाउन र %lu सà¥à¤¤à¤° वृदà¥à¤§à¤¿ गरिà¤à¤¨ ।\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu पूरà¥à¤£à¤°à¥à¤ªà¤²à¥‡ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भà¤à¤¨ र हटाइà¤à¤¨ ।\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr ""
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr ""
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr ""
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+#, fuzzy
+msgid "You must give at least one search pattern"
+msgstr "तपाईà¤à¤²à¥‡ à¤à¤‰à¤Ÿà¤¾ वासà¥à¤¤à¤µà¤¿à¤• बानà¥à¤•à¥€ दिनà¥à¤ªà¤°à¥à¤›"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ फाइल %s sync भनà¥à¤¦à¤¾ बाहिर छ ।"
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ फाइलहरू:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "कà¥à¤¯à¤¾à¤¸ sync भनà¥à¤¦à¤¾ बाहिर छ, पà¥à¤¯à¤¾à¤•à¥‡à¤œ फाइल x-ref गरà¥à¤¨ सकà¥à¤¦à¥ˆà¤¨"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "पिन गरिà¤à¤•à¤¾ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भयो:"
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " उमेदà¥à¤µà¤¾à¤°:"
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(कà¥à¤¨à¥ˆ पनि होइन)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " संसà¥à¤•à¤°à¤£ तालिका:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ फेला पारà¥à¤¨ सकिà¤à¤¨ %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ फेला पारà¥à¤¨ सकिà¤à¤¨ %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ फेला पारà¥à¤¨ सकिà¤à¤¨ %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "सà¥à¤°à¥‹à¤¤ पà¥à¤¯à¤¾à¤•à¥‡à¤œ सूची %s सà¥à¤¥à¤¿à¤° गरà¥à¤¨ सकिà¤à¤¨ "
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "को लागि सà¥à¤°à¥‹à¤¤ तानà¥à¤¨ कमà¥à¤¤à¤¿à¤®à¤¾ à¤à¤‰à¤Ÿà¤¾ पà¥à¤¯à¤¾à¤•à¥‡à¤œ निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ गरà¥à¤¨à¥à¤ªà¤°à¥à¤›"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "%s को लागि सà¥à¤°à¥‹à¤¤ पà¥à¤¯à¤¾à¤•à¥‡à¤œ फेला पारà¥à¤¨ असफल भयो"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "पहिलà¥à¤¯à¥ˆ डाउनलोड भà¤à¤•à¤¾ फाइलहरॠफडà¥à¤•à¤¾à¤‡à¤¦à¥ˆà¤› '%s'\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "सà¥à¤°à¥‹à¤¤ संगà¥à¤°à¤¹à¤¹à¤°à¥à¤•à¥‹ %sB/%sB पà¥à¤°à¤¾à¤ªà¥à¤¤ गरà¥à¤¨ आवशà¥à¤¯à¤• छ ।\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "सà¥à¤°à¥‹à¤¤ संगà¥à¤°à¤¹à¤¹à¤°à¥à¤•à¥‹ %sB पà¥à¤°à¤¾à¤ªà¥à¤¤ गरà¥à¤¨ आवशà¥à¤¯à¤• छ ।\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "सà¥à¤°à¥‹à¤¤ फडà¥à¤•à¤¾à¤‰à¤¨à¥à¤¹à¥‹à¤¸à¥ %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "केही संगà¥à¤°à¤¹ फडà¥à¤•à¤¾à¤‰à¤¨ असफल भयो ।"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr " %s मा पहिलà¥à¤¯à¥ˆ अनपà¥à¤¯à¤¾à¤• गरिà¤à¤•à¤¾ सà¥à¤°à¥‹à¤¤à¤•à¥‹ अनपà¥à¤¯à¤¾à¤• फडà¥à¤•à¤¾à¤‡à¤¦à¥ˆà¤›\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "अनपà¥à¤¯à¤¾à¤• आदेश '%s' असफल भयो ।\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "जाà¤à¤šà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ यदि 'dpkg-dev' पà¥à¤¯à¤¾à¤•à¥‡à¤œ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भयो ।\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "निरà¥à¤®à¤¾à¤£ आदेश '%s' असफल भयो ।\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "%s को लागि निरà¥à¤®à¤¾à¤£-निरà¥à¤­à¤°à¤¤à¤¾ सूचना पà¥à¤°à¤¾à¤ªà¥à¤¤ गरà¥à¤¨ असकà¥à¤·à¤® भयो"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s कà¥à¤¨à¥ˆ निरà¥à¤®à¤¾à¤£à¤®à¤¾ आधारित हà¥à¤¦à¥ˆà¤¨ ।\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr "को लागि builddeps जाà¤à¤šà¥à¤¨ कमà¥à¤¤à¤¿à¤®à¤¾ à¤à¤‰à¤Ÿà¤¾ पà¥à¤¯à¤¾à¤•à¥‡à¤œ निरà¥à¤¦à¤·à¥à¤Ÿ गरà¥à¤¨à¥à¤ªà¤°à¥à¤›"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "निरà¥à¤®à¤¾à¤£ निरà¥à¤­à¤°à¤¤à¤¾à¤¹à¤°à¥‚ पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¨ असफल"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "निरà¥à¤®à¤¾à¤£ निरà¥à¤­à¤°à¤¤à¤¾à¤¹à¤°à¥‚ पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¨ असफल"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr " %s मा %s पà¥à¤¨:नामकरण असफल भयो"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ %s संसà¥à¤•à¤°à¤£ %s संग à¤à¤‰à¤Ÿà¤¾ नभेटिà¤à¤•à¥‹ dep छ:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "अदà¥à¤¯à¤¾à¤µà¤§à¤¿à¤• आदेशले कà¥à¤¨à¥ˆ तरà¥à¤•à¤¹à¤°à¥‚ लिदैन"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "अदà¥à¤¯à¤¾à¤µà¤§à¤¿à¤• आदेशले कà¥à¤¨à¥ˆ तरà¥à¤•à¤¹à¤°à¥‚ लिदैन"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "कूल पà¥à¤¯à¤¾à¤•à¥‡à¤œ नामहरू :"
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total package structures: "
+msgstr "कूल पà¥à¤¯à¤¾à¤•à¥‡à¤œ नामहरू :"
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " सामानà¥à¤¯ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚:"
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr "शà¥à¤¦à¥à¤§ अवासà¥à¤¤à¤µà¤¿à¤• पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚:"
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " à¤à¤•à¤² अवासà¥à¤¤à¤µà¤¿à¤• पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚:"
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " मिशà¥à¤°à¤¿à¤¤ अवासà¥à¤¤à¤µà¤¿à¤• पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚:"
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " हराइरहेको:"
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "कूल भिनà¥à¤¨ संसà¥à¤•à¤°à¤£à¤¹à¤°à¥‚:"
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total distinct descriptions: "
+msgstr "कूल भिनà¥à¤¨ संसà¥à¤•à¤°à¤£à¤¹à¤°à¥‚:"
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "कूल निरà¥à¤­à¤°à¤¤à¤¾à¤¹à¤°à¥‚:"
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "जमà¥à¤®à¤¾ ver/file समà¥à¤¬à¤¨à¥à¤§à¤¹à¤°à¥‚: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total Desc/File relations: "
+msgstr "जमà¥à¤®à¤¾ ver/file समà¥à¤¬à¤¨à¥à¤§à¤¹à¤°à¥‚: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "कूल उपलबà¥à¤§ मानचितà¥à¤°à¤£à¤¹à¤°à¥‚:"
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "कूल विशà¥à¤µà¤µà¥à¤¯à¤¾à¤ªà¥€ सà¥à¤Ÿà¥à¤°à¤¿à¤™à¥à¤—हरू:"
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "कूल शिथिल खाली ठाऊà¤:"
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "को लागि कूल खाली ठाऊठलेखांकन:"
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "सà¥à¤°à¥‹à¤¤ रेकरà¥à¤¡à¤¹à¤°à¥‚ देखाउनà¥à¤¹à¥‹à¤¸à¥"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "regex बानà¥à¤•à¥€à¤•à¥‹ लागि पà¥à¤¯à¤¾à¤•à¥‡à¤œ सूचि खोजी गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤•à¥‹ लागि कचà¥à¤šà¤¾ निरà¥à¤­à¤°à¤¤à¤¾ सूचना देखाउनà¥à¤¹à¥‹à¤¸à¥"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤•à¥‹ लागि उलà¥à¤Ÿà¥‹ निरà¥à¤­à¤°à¤¤à¤¾ सूचना देखाउनà¥à¤¹à¥‹à¤¸à¥"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤•à¥‹ लागि पढà¥à¤¨à¤¯à¥‹à¤—à¥à¤¯ रेकरà¥à¤¡ देखाउनà¥à¤¹à¥‹à¤¸à¥"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "सबै पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥à¤•à¥‹ नामहरू सूचिबदà¥à¤§ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "नीति सेटिङà¥à¤—हरू देखाउनà¥à¤¹à¥‹à¤¸à¥"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "कृपया यो डिसà¥à¤•à¤•à¥‹ लागि नाम उपलबà¥à¤§ गराउनà¥à¤¹à¥‹à¤¸à¥, जसà¥à¤¤à¥ˆ 'Debian 2.1r1 Disk 1'"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "कृपया डà¥à¤°à¤¾à¤‡à¤­à¤®à¤¾ डिसà¥à¤• घà¥à¤¸à¤¾à¤‰à¤¨à¥à¤¹à¥‹à¤¸à¥ र इनà¥à¤Ÿà¤° थिचà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr " %s मा %s पà¥à¤¨:नामकरण असफल भयो"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "तपाईà¤à¤•à¥‹ सेटमा बाà¤à¤•à¥€ सि डि हरà¥à¤•à¥‹ लागि यो पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ फेरी गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ । "
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "तरà¥à¤•à¤¹à¤°à¥‚ जोडामा छैन"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"उपयग: apt-config [विकलà¥à¤ªà¤¹à¤°à¥‚] आदेश\n"
+"\n"
+" APT कनफिग फाइल पढà¥à¤¨à¤•à¥‹ लागि apt-config साधारण उपकरण हो\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"उपयोग: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+" apt-extracttemplates डवियन पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥à¤¬à¤¾à¤Ÿ कनफिगरेसन र टेमà¥à¤ªà¥à¤²à¥‡à¤Ÿ सूचना à¤à¤¿à¤•à¥à¤¨à¥‡ उपकरण हो\n"
+"\n"
+"\n"
+"विकलà¥à¤ªà¤¹à¤°à¥‚:\n"
+" -h यो मदà¥à¤¦à¤¤ पाठ\n"
+" -t टेमà¥à¤ªà¥à¤²à¥‡à¤Ÿ डाइरेकà¥à¤Ÿà¥à¤°à¥€ सेट गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥\n"
+" -c=? यो कनफिगरेसन फाइल पढà¥à¤¨à¥à¤¹à¥‹à¤¸à¥\n"
+" -o=? à¤à¤‰à¤Ÿà¤¾ सà¥à¤µà¥‡à¤šà¥à¤›à¤¾à¤šà¤¾à¤°à¥€ कनफिगरेसन विकलà¥à¤ª सेट गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥, जसà¥à¤¤à¥ˆ -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr " debconf संसà¥à¤•à¤°à¤£ पà¥à¤°à¤¾à¤ªà¥à¤¤ गरà¥à¤¨ सकिà¤à¤¨ । के debconf सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भयो ? "
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ फेला पारà¥à¤¨ सकिà¤à¤¨ %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "तर %s सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨à¥à¤ªà¤°à¥à¤¯à¥‹"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "आनà¥à¤¤à¤°à¤¿à¤• तà¥à¤°à¥à¤Ÿà¤¿,समसà¥à¤¯à¤¾ हलकरà¥à¤¤à¤¾à¤²à¥‡ उतà¥à¤¤à¤® गà¥à¤£ भाà¤à¤šà¥à¤¯à¥‹ "
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "समरà¥à¤¥à¤¿à¤¤ मोडà¥à¤¯à¥à¤²à¤¹à¤°à¥‚:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"उपयोग: apt-get [विकलà¥à¤ªà¤¹à¤°à¥‚] आदेश\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get डाउनलोड गरà¥à¤¨ र पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ गरà¥à¤¨à¤•à¥‹ लागि साधारण आदेश लाइन इनà¥à¤Ÿà¤°à¤«à¥‡à¤¸ हो ।\n"
+"बारमà¥à¤¬à¤¾à¤° पà¥à¤°à¤¯à¥‹à¤— भइरहने आदेशहरू अदà¥à¤¯à¤¾à¤µà¤§à¤¿à¤• र सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨à¥ ।\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "जहरà¥à¤•à¥‹ नयाठसूचिहरू पà¥à¤¨:पà¥à¤°à¤¾à¤ªà¥à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "टा सà¥à¤¤à¤°à¤µà¥ƒà¤¦à¥à¤§à¤¿ समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ (pkg libc6 हो libc6.deb होइन)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr ""
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+#, fuzzy
+msgid "Remove automatically all unused packages"
+msgstr "तर %s सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨à¥à¤ªà¤°à¥à¤¯à¥‹"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "सà¥à¤¤à¤°à¤µà¥ƒà¤¦à¥à¤§à¤¿ वितरण गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥, apt-get(8) हेरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "dselect चयनहरू पछà¥à¤¯à¤¾à¤‰à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "सà¥à¤°à¥‹à¤¤ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥à¤•à¥‹ लागि निरà¥à¤®à¤¾à¤£-निरà¥à¤­à¤°à¤¤à¤¾à¤¹à¤°à¥‚ कनफिगर गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "को लागि सà¥à¤°à¥‹à¤¤ तानà¥à¤¨ कमà¥à¤¤à¤¿à¤®à¤¾ à¤à¤‰à¤Ÿà¤¾ पà¥à¤¯à¤¾à¤•à¥‡à¤œ निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ गरà¥à¤¨à¥à¤ªà¤°à¥à¤›"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"उपयोग: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+" apt-extracttemplates डवियन पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥à¤¬à¤¾à¤Ÿ कनफिगरेसन र टेमà¥à¤ªà¥à¤²à¥‡à¤Ÿ सूचना à¤à¤¿à¤•à¥à¤¨à¥‡ उपकरण हो\n"
+"\n"
+"\n"
+"विकलà¥à¤ªà¤¹à¤°à¥‚:\n"
+" -h यो मदà¥à¤¦à¤¤ पाठ\n"
+" -t टेमà¥à¤ªà¥à¤²à¥‡à¤Ÿ डाइरेकà¥à¤Ÿà¥à¤°à¥€ सेट गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥\n"
+" -c=? यो कनफिगरेसन फाइल पढà¥à¤¨à¥à¤¹à¥‹à¤¸à¥\n"
+" -o=? à¤à¤‰à¤Ÿà¤¾ सà¥à¤µà¥‡à¤šà¥à¤›à¤¾à¤šà¤¾à¤°à¥€ कनफिगरेसन विकलà¥à¤ª सेट गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥, जसà¥à¤¤à¥ˆ -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"उपयोग: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+" apt-extracttemplates डवियन पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥à¤¬à¤¾à¤Ÿ कनफिगरेसन र टेमà¥à¤ªà¥à¤²à¥‡à¤Ÿ सूचना à¤à¤¿à¤•à¥à¤¨à¥‡ उपकरण हो\n"
+"\n"
+"\n"
+"विकलà¥à¤ªà¤¹à¤°à¥‚:\n"
+" -h यो मदà¥à¤¦à¤¤ पाठ\n"
+" -t टेमà¥à¤ªà¥à¤²à¥‡à¤Ÿ डाइरेकà¥à¤Ÿà¥à¤°à¥€ सेट गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥\n"
+" -c=? यो कनफिगरेसन फाइल पढà¥à¤¨à¥à¤¹à¥‹à¤¸à¥\n"
+" -o=? à¤à¤‰à¤Ÿà¤¾ सà¥à¤µà¥‡à¤šà¥à¤›à¤¾à¤šà¤¾à¤°à¥€ कनफिगरेसन विकलà¥à¤ª सेट गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥, जसà¥à¤¤à¥ˆ -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "तर यो सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भà¤à¤¨"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "तर %s सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨à¥à¤ªà¤°à¥à¤¯à¥‹"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "तर %s सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨à¥à¤ªà¤°à¥à¤¯à¥‹"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s पहिलà¥à¤¯à¥ˆ नयाठसंसà¥à¤•à¤°à¤£ हो ।\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s पहिलà¥à¤¯à¥ˆ नयाठसंसà¥à¤•à¤°à¤£ हो ।\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "तर %s सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨à¥à¤ªà¤°à¥à¤¯à¥‹"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "%s खोलà¥à¤¨ असफल"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "तर %s सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨à¥à¤ªà¤°à¥à¤¯à¥‹"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "जाà¤à¤šà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ यदि 'dpkg-dev' पà¥à¤¯à¤¾à¤•à¥‡à¤œ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भयो ।\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "तर %s सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨à¥à¤ªà¤°à¥à¤¯à¥‹"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "तर %s सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨à¥à¤ªà¤°à¥à¤¯à¥‹"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "अजà¥à¤žà¤¾à¤¤ पà¥à¤¯à¤¾à¤•à¥‡à¤œ रेकरà¥à¤¡!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ सूचिहरू पढिदैछ"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "पिन गरिà¤à¤•à¤¾ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "भाà¤à¤šà¤¿à¤à¤•à¤¾ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "तर %s सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ हà¥à¤¨à¥à¤ªà¤°à¥à¤¯à¥‹"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "उपलबà¥à¤§ सूचना गाà¤à¤­à¤¿à¤¦à¥ˆà¤›"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "खराब पूरà¥à¤µà¤¨à¤¿à¤°à¥à¤§à¤¾à¤°à¤£ सेटिङà¥à¤—!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "निरनà¥à¤¤à¤°à¤¤à¤¾ दिन इनà¥à¤Ÿà¤° थिचà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।"
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr ""
+
+#: dselect/install
+#, fuzzy
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "अनपà¥à¤¯à¤¾à¤• गरà¥à¤¦à¤¾ केही तà¥à¤°à¥à¤Ÿà¤¿à¤¹à¤°à¥‚ देखा परà¥à¤¯à¥‹ । म कनफिगर गरà¥à¤¨ गइरहेको छà¥"
+
+#: dselect/install
+#, fuzzy
+msgid "will be configured. This may result in duplicate errors"
+msgstr "सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भà¤à¤•à¥‹ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚ । यसले नकà¥à¤•à¤²à¥€ तà¥à¤°à¥à¤Ÿà¤¿à¤¹à¤°à¥à¤®à¤¾ नतिजा गरà¥à¤¨ सकà¥à¤›"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "वा तà¥à¤°à¥à¤Ÿà¤¿ हरटाइरहेको निरà¥à¤­à¤°à¤¤à¤¾à¤¹à¤°à¥à¤²à¥‡ गरेको हो । यो ठीक छ, मातà¥à¤° तà¥à¤°à¥à¤Ÿà¤¿à¤¹à¤°à¥‚"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"दिà¤à¤•à¥‹ संदेशहरू महतà¥à¤µà¤ªà¥‚रà¥à¤£ छ । कृपया तिनीहरू निशà¥à¤šà¤¿à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ र चलाउनà¥à¤¹à¥‹à¤¸à¥ [I]फेरी सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ "
+"गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "उपलबà¥à¤§ सूचना गाà¤à¤­à¤¿à¤¦à¥ˆà¤›"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ विसà¥à¤¤à¤¾à¤° सूचि अति लामो छ"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "डाइरेकà¥à¤Ÿà¥à¤°à¥€ %s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "सà¥à¤°à¥‹à¤¤ विसà¥à¤¤à¤¾à¤° सूचि अति लामो छ"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "सामागà¥à¤°à¥€ फाइलहरà¥à¤®à¤¾ हेडर लेखà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "सामगà¥à¤°à¥€ %sपà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"उपयोग: apt-ftparchive [विकलà¥à¤ªà¤¹à¤°à¥‚] आदेश\n"
+"आदेशहरू: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive ले डेवियन संगà¥à¤°à¤¹à¤¹à¤°à¥à¤•à¥‹ लागि अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾ फाइलहरू सिरà¥à¤œà¤¨à¤¾ गरà¥à¤¦à¤› । यसले "
+"समरà¥à¤¥à¤¨ गरà¥à¤¦à¤›\n"
+"dpkg-scanpackages र dpkg-scansources को लागि कारà¥à¤¯à¤¾à¤¤à¥à¤®à¤• पà¥à¤°à¤¤à¤¿à¤¸à¥à¤¥à¤¾à¤ªà¤¨à¤®à¤¾ पà¥à¤°à¥ˆ "
+"सà¥à¤µà¤šà¤¾à¤²à¤¿à¤¤à¤¬à¤¾à¤Ÿ सिरà¥à¤œà¤¨à¤¾à¤•à¥‹ धेरै शैलीहरू\n"
+" \n"
+"\n"
+"apt-ftparchive ले debs को टà¥à¤°à¥€à¤¬à¤¾à¤Ÿ पà¥à¤¯à¤¾à¤•à¥‡à¤œ फाइलहरू सिरà¥à¤œà¤¨à¤¾ गरà¥à¤¦à¤› । पà¥à¤¯à¤¾à¤•à¥‡à¤œ\n"
+"फाइलहरà¥à¤²à¥‡ पà¥à¤°à¤¤à¥à¤¯à¥‡à¤• पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¬à¤¾à¤Ÿ सबै नियनà¥à¤¤à¥à¤°à¤£ फाà¤à¤Ÿà¤¹à¤°à¥à¤•à¥‹ सामगà¥à¤°à¥€à¤¹à¤°à¥‚ साथ साथै MD5 hash र "
+"filesize समावेश गरà¥à¤¦à¤› ।\n"
+"à¤à¤‰à¤Ÿà¤¾ अधिलेखन फाइल\n"
+"पà¥à¤°à¤¾à¤¥à¤®à¤¿à¤•à¤¤à¤¾ र सेकà¥à¤¸à¤¨à¤•à¥‹ मान जोड गरà¥à¤¨ समरà¥à¤¥à¤¿à¤¤ हà¥à¤¨à¥à¤› ।\n"
+"\n"
+"तà¥à¤¯à¤¸à¥à¤¤à¥ˆ गरी apt-ftparchive ले .dscs को टà¥à¤°à¥€à¤¬à¤¾à¤Ÿ सà¥à¤°à¥‹à¤¤ फाइलहरू सिरà¥à¤œà¤¨à¤¾ गरà¥à¤¦à¤› ।\n"
+"सà¥à¤°à¥‹à¤¤--अधिलेखन--विकलà¥à¤ª src अधीलेखन फाइल निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ गरà¥à¤¨ पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨ सकिनà¥à¤›\n"
+"\n"
+"'packages' and 'sources' आदेश टà¥à¤°à¥€à¤•à¥‹ मूलमा चलाउन सकिनà¥à¤› ।\n"
+" विनारी मारà¥à¤— फेरी हà¥à¤¨à¥‡ खोजीको विनà¥à¤¦à¥à¤®à¤¾ आधारित हà¥à¤¨à¥à¤› र \n"
+"अधिलेखन फाइलले अधिलेखन à¤à¤£à¥à¤¡à¤¾à¤¹à¤°à¥‚ समाविषà¥à¤Ÿ गरà¥à¤¦à¤› । यदि उपसà¥à¤¥à¤¿à¤¤ छ भने बाटो उपसरà¥à¤—\n"
+"फाइलनाम फाà¤à¤Ÿà¤¹à¤°à¥à¤®à¤¾ थपिनà¥à¤› । उदाहरणको लागि \n"
+"डेवियन संगà¥à¤°à¤¹à¤¬à¤¾à¤Ÿ उपयोग:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"विकलà¥à¤ªà¤¹à¤°à¥‚:\n"
+" -h यो मदà¥à¤¦à¤¤ पाठ\n"
+" --md5 नियनà¥à¤¤à¥à¤°à¤£ MD5 सिरà¥à¤œà¤¨à¤¾\n"
+" -s=? सà¥à¤°à¥‹à¤¤ अधिलेखन फाइल\n"
+" -q बनà¥à¤¦ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥\n"
+" -d=? वैकलà¥à¤ªà¤¿à¤• कà¥à¤¯à¤¾à¤¸à¤¿à¤™ डेटाबेस चयन गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥\n"
+" --no-delink delinking डिबग मोड सकà¥à¤·à¤® गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥\n"
+" --सामगà¥à¤°à¥€à¤¹à¤°à¥‚ सामगà¥à¤°à¥€ फाइल सिरà¥à¤œà¤¨à¤¾ नियनà¥à¤¤à¥à¤°à¤£ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥\n"
+" -c=? यो कनफिगरेसन फाइल पढà¥à¤¨à¥à¤¹à¥‹à¤¸à¥\n"
+" -o=? à¤à¤‰à¤Ÿà¤¾ सà¥à¤µà¥‡à¤šà¥à¤›à¤¾à¤šà¤¾à¤°à¥€ कनफिगरेसन विकलà¥à¤ª सेट गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "कà¥à¤¨à¥ˆ चयनहरू मेल खाà¤à¤¨"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "केही फाइलहरू पà¥à¤¯à¤¾à¤•à¥‡à¤œ फाइल समूह `%s' मा हराइरहेको छ"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "DB दूषित थियो, फाइल %s.पà¥à¤°à¤¾à¤¨à¥‹ मा पà¥à¤¨:नामकरण गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "DB पà¥à¤°à¤¾à¤¨à¥‹ छ, %s सà¥à¤¤à¤°à¤µà¥ƒà¤¦à¥à¤§à¤¿ गरà¥à¤¨ पà¥à¤°à¤¯à¤¾à¤¸ गरिदैछ"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "DB फाइल %s असकà¥à¤·à¤® भयो: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "लिङà¥à¤• पढà¥à¤¨ असफल %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "संगà¥à¤°à¤¹ संग नियनà¥à¤¤à¥à¤°à¤£ रेकरà¥à¤¡ छैन"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "करà¥à¤¸à¤° पà¥à¤°à¤¾à¤ªà¥à¤¤ गरà¥à¤¨ असकà¥à¤·à¤® भयो"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - सà¥à¤®à¥ƒà¤¤à¤¿ बाà¤à¤¡à¤«à¤¾à¤à¤¡ गरà¥à¤¨ असफल भयो"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "अजà¥à¤žà¤¾à¤¤ सङà¥à¤•à¥à¤šà¤¨ अलà¥à¤—ोरिदà¥à¤® '%s'"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "सङà¥à¤•à¥à¤šà¤¨ गरिà¤à¤•à¥‹ निरà¥à¤—ात %s लाई सङà¥à¤•à¥à¤šà¤¨ सेटको आवशà¥à¤¯à¤•à¥à¤¤à¤¾ परà¥à¤¦à¤›"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "सहायक पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾à¤®à¤¾ IPC पाइप सिरà¥à¤œà¤¨à¤¾ गरà¥à¤¨ असफल"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "काà¤à¤Ÿà¤¾ गरà¥à¤¨ असफल"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "सङà¥à¤•à¥à¤šà¤¨ शाखा"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "आनà¥à¤¤à¤°à¥€à¤• तà¥à¤°à¥à¤Ÿà¤¿, %s सिरà¥à¤œà¤¨à¤¾ गरà¥à¤¨ असफल"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "सहायक पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾/फाइलमा IO असफल भयो"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "MD5 गणना गरà¥à¤¦à¤¾ पढà¥à¤¨ असफल भयो"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "%s खोलà¥à¤¨ असफल"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "वैरà¥à¤ªà¥à¤¯ गरिà¤à¤•à¥‹ अधिलेखन %s रेखा %lu #१"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "अधिलेखन फाइल पढà¥à¤¨ असफल %s"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "वैरà¥à¤ªà¥à¤¯ गरिà¤à¤•à¥‹ अधिलेखन %s रेखा %lu #१"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "वैरà¥à¤ªà¥à¤¯ गरिà¤à¤•à¥‹ अधिलेखन %s रेखा %lu #२"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "वैरà¥à¤ªà¥à¤¯ गरिà¤à¤•à¥‹ अधिलेखन %s रेखा %lu #३"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "W: डाइरेकà¥à¤Ÿà¥à¤°à¥€ %s पढà¥à¤¨ असकà¥à¤·à¤®\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "W: %s सà¥à¤¥à¤¿à¤° गरà¥à¤¨ असकà¥à¤·à¤®\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "W: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: फाइलमा तà¥à¤°à¥à¤Ÿà¤¿à¤¹à¤°à¥‚ लागू गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "%s हल गरà¥à¤¨ असफल भयो"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "टà¥à¤°à¥€ हिडाईठअसफल भयो"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "%s खोलà¥à¤¨ असफल"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** %s मा %s लिङà¥à¤• असफल भयो"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr "यस %sB हिटको डि लिङà¥à¤• सिमा।\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "संगà¥à¤°à¤¹ संग कà¥à¤¨à¥ˆ पà¥à¤¯à¤¾à¤•à¥‡à¤œ फाà¤à¤Ÿ छैन"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s संग कà¥à¤¨à¥ˆ अधिलेखन पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿ छैन\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " %s संभारकरà¥à¤¤à¤¾ %s हो %s होइन\n"
+
+#: ftparchive/writer.cc
+#, fuzzy, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s संग कà¥à¤¨à¥ˆ अधिलेखन पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿ छैन\n"
+
+#: ftparchive/writer.cc
+#, fuzzy, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s संग कà¥à¤¨à¥ˆ अधिलेखन पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿ छैन\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "हेडरहरà¥à¤•à¥‹ लागि परà¥à¤–िदैछ"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "HTTP सरà¥à¤­à¤°à¤²à¥‡ अवैध जवाफ हेडर पठायो"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "खराब हेडर लाइन"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "HTTP सरà¥à¤­à¤°à¤²à¥‡ अवैध सामगà¥à¤°à¥€-लमà¥à¤¬à¤¾à¤ˆ हेडर पठायो"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "HTTP सरà¥à¤­à¤°à¤²à¥‡ अवैध सामगà¥à¤°à¥€-दायरा हेडर पठायो"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "HTTP सरà¥à¤­à¤° संग भाà¤à¤šà¤¿à¤à¤•à¥‹ दायरा समरà¥à¤¥à¤¨ छ"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "अजà¥à¤žà¤¾à¤¤ मिति ढाà¤à¤šà¤¾"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "खराब हेडर डेटा"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "जडान असफल भयो"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "आनà¥à¤¤à¤°à¤¿à¤• तà¥à¤°à¥à¤Ÿà¤¿"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "सिडी रोम डेटाबेस पढà¥à¤¨ असकà¥à¤·à¤® %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"कृपया APT ले यो सिडी रोमलाई चिनà¥à¤¨à¤•à¥‹ लागि apt-cdrom पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ । apt-get "
+"अदà¥à¤¯à¤¾à¤µà¤§à¤¿à¤• नयाठसिडी रोमहरू थपà¥à¤¨à¤•à¥‹ लागि पà¥à¤°à¤¯à¥‹à¤— गरिदैन"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "गलत सिडी रोम"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "%s मा सिडी रोम अनमाउनà¥à¤Ÿ गरà¥à¤¨ असकà¥à¤·à¤® भयो, यो अहिले पà¥à¤°à¤¯à¥‹à¤—मा हà¥à¤¨ सकà¥à¤› ।"
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "डिसà¥à¤• फेला परेन ।"
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "फाइल फेला परेन "
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "%s (%s) मा जडान गरिदैछ"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "%s (f=%u t=%u p=%u) को लागि सकेट सिरà¥à¤œà¤¨à¤¾ गरà¥à¤¨ सकिà¤à¤¨"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr " %s:%s (%s) मा जडान सà¥à¤°à¥à¤µà¤¾à¤¤ गरà¥à¤¨ सकेन"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "%s:%s (%s) मा जडान गरà¥à¤¨ सकिà¤à¤¨, जडान समय सकियो"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "असफल भयो"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr " %s:%s (%s) मा जडान गरà¥à¤¨ सकिà¤à¤¨ ।"
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "%s मा जडान गरिदैछ"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "'%s' हल गरà¥à¤¨ सकिà¤à¤¨"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "'%s' हल गरà¥à¤¦à¤¾ असà¥à¤¥à¤¾à¤¯à¥€ असफल"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr " '%s:%s' (%i) हल गरà¥à¤¦à¤¾ केही दà¥à¤·à¥à¤Ÿ घटà¥à¤¯à¥‹"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr " '%s:%s' (%i) हल गरà¥à¤¦à¤¾ केही दà¥à¤·à¥à¤Ÿ घटà¥à¤¯à¥‹"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "%s %s मा जडान गरà¥à¤¨ असफल भयो:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "सà¥à¤¥à¤¿à¤° गरà¥à¤¨ असफल भयो"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "अवैध URl, सà¥à¤¥à¤¾à¤¨à¤¿à¤¯ URIS // संग सà¥à¤°à¥‚ हà¥à¤¨ सकà¥à¤¦à¥ˆà¤¨"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "लगइन भइरहेछ"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "समान नाम निरà¥à¤§à¤¾à¤°à¤£ गरà¥à¤¨ असकà¥à¤·à¤® भयो"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "सà¥à¤¥à¤¾à¤¨à¤¿à¤¯ नाम निरà¥à¤§à¤¾à¤°à¤£ गरà¥à¤¨ असकà¥à¤·à¤® भयो"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "सरà¥à¤­à¤°à¤²à¥‡ जडान असà¥à¤µà¥€à¤•à¤¾à¤° गरà¥à¤¯à¥‹ र भनà¥à¤¯à¥‹: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ असफल भयो, सरà¥à¤­à¤°à¤²à¥‡ भनà¥à¤¯à¥‹: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "पास असफल भयो, सरà¥à¤­à¤°à¤²à¥‡ भनà¥à¤¯à¥‹: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"पà¥à¤°à¥‹à¤•à¥à¤¸à¥€ सरà¥à¤­à¤° निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ गरियो तर कà¥à¤¨à¥ˆ सà¥à¤•à¥à¤°à¤¿à¤«à¥à¤Ÿ लगइन भà¤à¤¨, Acquire::ftp::ProxyLogin "
+"खाली छ ।"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "लगइन सà¥à¤•à¥à¤°à¤¿à¤«à¥à¤Ÿ आदेश '%s' असफल भयो, सरà¥à¤­à¤°à¤²à¥‡ भनà¥à¤¯à¥‹: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "टाइप असफल भयो: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "जडान समय सकियो"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "सरà¥à¤­à¤°à¤²à¥‡ जडान बनà¥à¤¦ गरà¥à¤¯à¥‹"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "à¤à¤‰à¤Ÿà¤¾ पà¥à¤°à¤¤à¤¿à¤•à¥à¤°à¤¿à¤¯à¤¾à¤²à¥‡ बफर अधिपà¥à¤°à¤µà¤¾à¤¹ गरà¥à¤¯à¥‹"
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "पà¥à¤°à¥‹à¤Ÿà¥‹à¤•à¤² दूषित"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "à¤à¤‰à¤Ÿà¤¾ सकेट सिरà¥à¤œà¤¨à¤¾ गरà¥à¤¨ सकेन"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "डेटा सकेट जडान गरà¥à¤¨ सकिà¤à¤¨, जडान समय सकियो"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "निसà¥à¤•à¥à¤°à¤¿à¤¯ सकेट जडान गरà¥à¤¨ सकिà¤à¤¨"
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo सà¥à¤¨à¥à¤¨à¥‡ सकेट पà¥à¤°à¤¾à¤ªà¥à¤¤ गरà¥à¤¨ असकà¥à¤·à¤® भयो"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "सकेट बाà¤à¤§à¥à¤¨ सकिà¤à¤¨"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "सकेटमा सà¥à¤¨à¥à¤¨ सकिà¤à¤¨"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "सकेट नाम निरà¥à¤§à¤¾à¤°à¤£ गरà¥à¤¨ सकिà¤à¤¨"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "पोरà¥à¤Ÿ आदेश पठाउन असकà¥à¤·à¤® भयो"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "अजà¥à¤žà¤¾à¤¤ ठेगाना परिवार %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT असफल भयो, सरà¥à¤­à¤°à¤²à¥‡ भनà¥à¤¯à¥‹: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "डेटा सकेटको जडान समय सकियो"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "जडान सà¥à¤µà¥€à¤•à¤¾à¤° गरà¥à¤¨ असकà¥à¤·à¤® भयो"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "समसà¥à¤¯à¤¾ दà¥à¤°à¥à¤¤à¤¾à¤¨à¥à¤µà¥‡à¤·à¤£ फाइल"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "फाइल तानà¥à¤¨ असकà¥à¤·à¤® भयो, सरà¥à¤­à¤°à¤²à¥‡ भनà¥à¤¯à¥‹ '%s'"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "डेटा सकेट समय सकियो"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "डेटा सà¥à¤¥à¤¾à¤¨à¥à¤¤à¤°à¤£ असफल भयो, सरà¥à¤­à¤°à¤²à¥‡ भनà¥à¤¯à¥‹ '%s'"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "कà¥à¤µà¥‡à¤°à¥€"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "आहà¥à¤µà¤¾à¤¨ गरà¥à¤¨ असकà¥à¤·à¤® भयो"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "कमà¥à¤¤à¤¿à¤®à¤¾ à¤à¤‰à¤Ÿà¤¾ अवैध हसà¥à¤¤à¤¾à¤•à¥à¤·à¤° विरोध भयो ।"
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr "आनà¥à¤¤à¤°à¤¿à¤• तà¥à¤°à¥à¤Ÿà¤¿: असल हसà¥à¤¤à¤¾à¤•à¥à¤·à¤°, तर कà¥à¤žà¥à¤œà¥€ औठाछाप निरà¥à¤§à¤¾à¤°à¤£ गरà¥à¤¨ सकिà¤à¤¨?!"
+
+#: methods/gpgv.cc
+#, fuzzy
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr "हसà¥à¤¤à¤¾à¤•à¥à¤·à¤° रूजू गरà¥à¤¨ '%s' कारà¥à¤¯à¤¨à¥à¤µà¤¯à¤¨ गरà¥à¤¨ सकिà¤à¤¨ (के gnupg सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ भयो?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "apt-key कारà¥à¤¯à¤¨à¥à¤µà¤¯à¤¨ गरà¥à¤¦à¤¾ अजà¥à¤žà¤¾à¤¤ तà¥à¤°à¥à¤Ÿà¤¿"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "निमà¥à¤¨ हसà¥à¤¤à¤¾à¤•à¥à¤·à¤°à¤¹à¤°à¥‚ अवैध छनà¥:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr "निमà¥à¤¨ हसà¥à¤¤à¤¾à¤•à¥à¤·à¤°à¤¹à¤°à¥‚ रूजू हà¥à¤¨ सकà¥à¤¦à¥ˆà¤¨ किन भने सारà¥à¤µà¤œà¤¨à¤¿à¤• कà¥à¤žà¥à¤œà¥€ उपलबà¥à¤§ छैन:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "फाइलमा तà¥à¤°à¥à¤Ÿà¤¿ लेखिदैछ"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "सरà¥à¤­à¤°à¤¬à¤¾à¤Ÿ तà¥à¤°à¥à¤Ÿà¤¿ पढिदैछ । दूर गनà¥à¤¤à¤¬à¥à¤¯ बनà¥à¤¦ जडान"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "सरà¥à¤­à¤°à¤¬à¤¾à¤Ÿ तà¥à¤°à¥à¤Ÿà¤¿ पढिदैछ"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "फाइलमा तà¥à¤°à¥à¤Ÿà¤¿ लेखिदैछ"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "असफल चयन गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "जडान समय सकियो"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "निरà¥à¤—ात फाइलमा तà¥à¤°à¥à¤Ÿà¤¿ लेखिदैछ"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "फाइल %s खोलà¥à¤¨ सकिà¤à¤¨"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "फाइल %s खोलà¥à¤¨ सकिà¤à¤¨"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr ""
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "परिमारà¥à¤œà¤¨ समय सेट असफल भयो"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "जडान असमायिक बनà¥à¤¦ भयो"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "नभेटिà¤à¤•à¤¾ निरà¥à¤­à¤°à¤¤à¤¾à¤¹à¤°à¥‚ । --fix-broken पà¥à¤°à¤¯à¥‹à¤— गरेर पà¥à¤°à¤¯à¤¾à¤¸ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।"
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr "तपाईठयसलाई सà¥à¤§à¤¾à¤° गरà¥à¤¨ 'apt --fix-broken install' चलाउन चाहनà¥à¤¹à¥à¤¨à¥à¤›:"
+
+#~ msgid "(not found)"
+#~ msgstr "(फेला परेन)"
+
+#~ msgid " Package pin: "
+#~ msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ पिन:"
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "निमà¥à¤¨ कà¥à¤žà¥à¤œà¥€ IDs को लागि कà¥à¤¨à¥ˆ सारà¥à¤µà¤œà¤¨à¤¿à¤• कà¥à¤žà¥à¤œà¥€ उपलबà¥à¤§ छैन:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "डाइरेकà¥à¤Ÿà¥à¤°à¥€ %s फेरियो "
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr "%s को लागि %s निरà¥à¤­à¤°à¤¤à¤¾ सनà¥à¤¤à¥à¤·à¥à¤Ÿ हà¥à¤¨ सकेन किनभने पà¥à¤¯à¤¾à¤•à¥‡à¤œ %s फेला पारà¥à¤¨ सकिà¤à¤¨"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr "%s को लागि %s निरà¥à¤­à¤°à¤¤à¤¾ सनà¥à¤¤à¥à¤·à¥à¤Ÿ हà¥à¤¨ सकेन किनभने पà¥à¤¯à¤¾à¤•à¥‡à¤œ %s फेला पारà¥à¤¨ सकिà¤à¤¨"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "%s को लागि %s निरà¥à¤­à¤°à¤¤à¤¾ सनà¥à¤¤à¥à¤·à¥à¤Ÿ पारà¥à¤¨ असफल भयो: सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ पà¥à¤¯à¤¾à¤•à¥‡à¤œ %s अति नयाठछ"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "%sको लागि %s निरà¥à¤­à¤°à¤¤à¤¾ सनà¥à¤¤à¥à¤·à¥à¤Ÿ हà¥à¤¨ सकेन किन भने पà¥à¤¯à¤¾à¤•à¥‡à¤œ %s को कà¥à¤¨à¥ˆ उपलबà¥à¤§ संसà¥à¤•à¤°à¤£à¤²à¥‡ "
+#~ "संसà¥à¤•à¤°à¤£ आवशà¥à¤¯à¤•à¤¤à¤¾à¤¹à¤°à¥à¤²à¤¾à¤ˆ सनà¥à¤¤à¥à¤·à¥à¤Ÿ पारà¥à¤¨ सकेन "
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr "%s को लागि %s निरà¥à¤­à¤°à¤¤à¤¾ सनà¥à¤¤à¥à¤·à¥à¤Ÿ हà¥à¤¨ सकेन किनभने पà¥à¤¯à¤¾à¤•à¥‡à¤œ %s फेला पारà¥à¤¨ सकिà¤à¤¨"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "%s को लागि %s निरà¥à¤­à¤°à¤¤à¤¾ सनà¥à¤¤à¥à¤·à¥à¤Ÿ गरà¥à¤¨ असफल: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "%s को लागि निरà¥à¤®à¤¾à¤£ निरà¥à¤­à¤°à¤¤à¤¾à¤¹à¤°à¥‚ सनà¥à¤¤à¥à¤·à¥à¤Ÿ गरà¥à¤¨ सकिà¤à¤¨ । "
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "समसà¥à¤¯à¤¾ अनलिङà¥à¤• भइरहेछ %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "अनलिङà¥à¤• गरà¥à¤¨ असफल %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "उपयोग: apt-cache [विकलà¥à¤ªà¤¹à¤°à¥‚] आदेश\n"
+#~ " apt-cache [विकलà¥à¤ªà¤¹à¤°à¥‚] फाइल १ थपà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ [फाइल २ ...]\n"
+#~ " apt-cache [विकलà¥à¤ªà¤¹à¤°à¥‚] pkg pkg1 देखाउनà¥à¤¹à¥‹à¤¸à¥ [pkg2 ...]\n"
+#~ " apt-cache [विकलà¥à¤ªà¤¹à¤°à¥‚] src pkg1 देखाउनà¥à¤¹à¥‹à¤¸à¥ [pkg2 ...]\n"
+#~ "\n"
+#~ "तिनीहरà¥à¤¬à¤¾à¤Ÿ APT's बिनारी कà¥à¤¯à¤¾à¤¸ फाइलहरू, र कà¥à¤µà¥‡à¤°à¥€ सूचना मिलाउन पà¥à¤°à¤¯à¥‹à¤— गरिने apt-"
+#~ "cache कम-सà¥à¤¤à¤°à¤•à¥‹ उपकरण हो\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "विकलà¥à¤ªà¤¹à¤°à¥‚:\n"
+#~ " -h यो मदà¥à¤¦à¤¤ पाठ ।\n"
+#~ " -p=? पà¥à¤¯à¤¾à¤•à¥‡à¤œ कà¥à¤¯à¤¾à¤¸ ।\n"
+#~ " -s=? सà¥à¤°à¥‹à¤¤ कà¥à¤¯à¤¾à¤¸ ।\n"
+#~ " -q पà¥à¤°à¤—ति सूचक अकà¥à¤·à¤® गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।\n"
+#~ " -i नभेटिà¤à¤•à¥‹ आदेशको लागि महतà¥à¤µà¤ªà¥‚रà¥à¤£ deps देखाउनà¥à¤¹à¥‹à¤¸à¥ ।\n"
+#~ " -c=? यो कनफिगरेसन फाइल पढà¥à¤¨à¥à¤¹à¥‹à¤¸à¥\n"
+#~ " -o=? à¤à¤‰à¤Ÿà¤¾ सà¥à¤µà¥‡à¤šà¥à¤›à¤¾à¤šà¤¾à¤°à¥€ कनफिगरेसन फाइल सेट गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥, जसà¥à¤¤à¥ˆ -o dir::cache=/tmp\n"
+#~ "धेरै जानकारीकोप लागि apt-cache(8) र apt.conf(5) मà¥à¤¯à¤¾à¤¨à¥à¤² पृषà¥à¤Ÿà¤¹à¤°à¥‚ हेरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "विकलà¥à¤ªà¤¹à¤°à¥‚:\n"
+#~ " -h यो मदà¥à¤¦à¤¤ पाठ ।\n"
+#~ " -c=? यो कनफिगरेसन फाइल पढà¥à¤¨à¥à¤¹à¥‹à¤¸à¥\n"
+#~ " -o=? à¤à¤‰à¤Ÿà¤¾ सà¥à¤µà¥‡à¤šà¥à¤›à¤¾à¤šà¤¾à¤°à¥€ कनफिगरेसन विकलà¥à¤ª सेट गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥, जसà¥à¤¤à¥ˆ -o dir::cache=/tmp\n"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "उपयोग: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs पà¥à¤¯à¤¾à¤•à¥‡à¤œ फाइलहरू कà¥à¤°à¤®à¤¬à¤¦à¥à¤§ गरà¥à¤¨à¥‡ साधारण उपकरण हो । -s विकलà¥à¤ª कसà¥à¤¤à¥‹ "
+#~ "खालको फाइल हो भनी इंकित गरà¥à¤¨ पà¥à¤°à¤¯à¥‹à¤— गरिनà¥à¤› ।\n"
+#~ "\n"
+#~ "विकलà¥à¤ªà¤¹à¤°à¥‚:\n"
+#~ " -h यो मदà¥à¤¦à¤¤ पाठ\n"
+#~ " -s कà¥à¤°à¤®à¤¬à¤¦à¥à¤§ सà¥à¤°à¥‹à¤¤ फाइल पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥\n"
+#~ " -c=? यो कनफिगरेसन फाइल पढà¥à¤¨à¥à¤¹à¥‹à¤¸à¥\n"
+#~ " -o=? à¤à¤‰à¤Ÿà¤¾ सà¥à¤µà¥‡à¤šà¥à¤›à¤¾à¤šà¤¾à¤°à¥€ कनफिगरेसन विकलà¥à¤ª सेट गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥, जसà¥à¤¤à¥ˆ -o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "शाखा पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ असफल भयो"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "को लागि सà¥à¤°à¥‹à¤¤ तानà¥à¤¨ कमà¥à¤¤à¤¿à¤®à¤¾ à¤à¤‰à¤Ÿà¤¾ पà¥à¤¯à¤¾à¤•à¥‡à¤œ निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ गरà¥à¤¨à¥à¤ªà¤°à¥à¤›"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "पाइपहरू सिरà¥à¤œà¤¨à¤¾ गरà¥à¤¨ असफल"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "gzip कारà¥à¤¯à¤¨à¥à¤µà¤¯à¤¨ गरà¥à¤¨ असफल"
+
+#, fuzzy
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s को लागि %s %s, %s %s मा कमà¥à¤ªà¤¾à¤à¤² गरिà¤à¤•à¥‹ छ\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "FILE* सिरà¥à¤œà¤¨à¤¾ गरà¥à¤¨ असफल"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "वैरà¥à¤ªà¥à¤¯ लाइन %lu सà¥à¤°à¥‹à¤¤ सूचिमा %s (URI पद वरà¥à¤£à¤¨)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr "वैरà¥à¤ªà¥à¤¯ लाइन %lu सà¥à¤°à¥‹à¤¤ सूचिमा %s (dist पद वरà¥à¤£à¤¨ )"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "वैरà¥à¤ªà¥à¤¯ लाइन %lu सà¥à¤°à¥‹à¤¤ सूचिमा %s (dist)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "वैरà¥à¤ªà¥à¤¯ लाइन %lu सà¥à¤°à¥‹à¤¤ सूचिमा %s (dist पद वरà¥à¤£à¤¨ )"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "वैरà¥à¤ªà¥à¤¯ लाइन %lu सà¥à¤°à¥‹à¤¤ सूचिमा %s (dist पद वरà¥à¤£à¤¨ )"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr "वैरà¥à¤ªà¥à¤¯ लाइन %lu सà¥à¤°à¥‹à¤¤ सूचिमा %s (dist पद वरà¥à¤£à¤¨ )"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "वैरà¥à¤ªà¥à¤¯ लाइन %lu सà¥à¤°à¥‹à¤¤ सूचिमा %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "वैरà¥à¤ªà¥à¤¯ लाइन %lu सà¥à¤°à¥‹à¤¤ सूचिमा %s (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "वैरà¥à¤ªà¥à¤¯ लाइन %lu सà¥à¤°à¥‹à¤¤ सूचिमा %s (URI पद वरà¥à¤£à¤¨)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "वैरà¥à¤ªà¥à¤¯ लाइन %lu सà¥à¤°à¥‹à¤¤ सूचिमा %s (पूरà¥à¤£ dist)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "वैरà¥à¤ªà¥à¤¯ लाइन %lu सà¥à¤°à¥‹à¤¤ सूचिमा %s (dist पद वरà¥à¤£à¤¨ )"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "फाइल निरà¥à¤­à¤°à¤¤à¤¾à¤¹à¤°à¥‚ पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¦à¤¾ पà¥à¤¯à¤¾à¤•à¥‡à¤œ %s %s फेला परेन"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "सà¥à¤°à¥‹à¤¤ पà¥à¤¯à¤¾à¤•à¥‡à¤œ सूची %s सà¥à¤¥à¤¿à¤° गरà¥à¤¨ सकिà¤à¤¨ "
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "फाइल उपलबà¥à¤§à¤¤à¤¾à¤¹à¤°à¥‚ संकलन गरिदैछ"
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ फाइल पद वरà¥à¤£à¤¨ गरà¥à¤¨ असकà¥à¤·à¤® %s (१)"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "बिकà¥à¤°à¤¤à¤¾ बà¥à¤²à¥à¤• %s ले कà¥à¤¨à¥ˆ औठाछाप समाविषà¥à¤Ÿ गरà¥à¤¦à¥ˆà¤¨"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "कूल निरà¥à¤­à¤°à¤¤à¤¾ संसà¥à¤•à¤°à¤£ खाली ठाऊà¤:"
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "तपाईठसंग %s मा परà¥à¤¯à¤¾à¤ªà¥à¤¤ खाली ठाऊठछैन"
+
+#~ msgid "Done"
+#~ msgstr "काम भयो"
+
+#, fuzzy
+#~ msgid "No keyring installed in %s."
+#~ msgstr "सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ परितà¥à¤¯à¤¾à¤— गरिदैछ ।"
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "आनà¥à¤¤à¤°à¤¿à¤• तà¥à¤°à¥à¤Ÿà¤¿,सबै सà¥à¤¤à¤°à¤µà¥ƒà¤¦à¥à¤§à¤¿à¤²à¥‡ उतà¥à¤¤à¤® गà¥à¤£ नषà¥à¤Ÿ गरà¥à¤¦à¤›"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s वैध DEB पà¥à¤¯à¤¾à¤•à¥‡à¤œ होइन"
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "सिडी रोम माउनà¥à¤Ÿ विनà¥à¤¦à¥ पà¥à¤°à¤¯à¥‹à¤— गरिदैछ %s\n"
+#~ "सिडी रोम माउनà¥à¤Ÿ गरिदैछ\n"
+
+#, fuzzy
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr "यो वैध DEB संगà¥à¤°à¤¹ होइन, यो संग '%s' वा '%s' सदसà¥à¤¯ छैन"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5Sum मेल भà¤à¤¨"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "%s पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤•à¥‹ लागि मैले फाइल सà¥à¤¥à¤¿à¤¤ गरà¥à¤¨ सकिन । यसको मतलब तपाईà¤à¤²à¥‡ मà¥à¤¯à¤¾à¤¨à¥à¤²à¥à¤²à¥€ यो पà¥à¤¯à¤¾à¤•à¥‡à¤œ "
+#~ "निशà¥à¤šà¤¿à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।"
+
+#, fuzzy
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "कनफिगरेसन फाइल खोलिदैछ %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "%s लाई फेरी सारà¥à¤¨ असफल भयो"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "%s सिरà¥à¤œà¤¨à¤¾ गरà¥à¤¨ असफल भयो"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "%sinfo सà¥à¤¥à¤¿à¤° गरà¥à¤¨ असफल भयो"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr "सूचना र टेमà¥à¤ª डाइरेकà¥à¤Ÿà¥à¤°à¥€à¤¹à¤°à¥‚ à¤à¤‰à¤Ÿà¥ˆ फाइल पà¥à¤°à¤£à¤¾à¤²à¥€à¤®à¤¾ हà¥à¤¨à¤ªà¤°à¥à¤›"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "पà¥à¤°à¤¶à¤¾à¤¸à¤¨à¤¿à¤• डाइरेकà¥à¤Ÿà¥à¤°à¥€ %sinfo मा परिवरà¥à¤¤à¤¨ गरà¥à¤¨ असफल भयो"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ नाम पà¥à¤°à¤¾à¤ªà¥à¤¤ गरà¥à¤¦à¤¾ आनà¥à¤¤à¤°à¤¿à¤• तà¥à¤°à¥à¤Ÿà¤¿"
+
+#~ msgid "Reading file listing"
+#~ msgstr "फाइल सूचि पढिदैछ"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "सूचि फाइल '%sinfo/%s' खोलà¥à¤¨ असफल भयो । यदि तपाईठयो फाइल पà¥à¤¨:भणà¥à¤¡à¤¾à¤°à¤£ गरà¥à¤¨à¥ "
+#~ "सकà¥à¤¨à¥à¤¹à¥à¤¨à¥à¤¨ भने यसलाई खाली गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ र तà¥à¤°à¥à¤¨à¥à¤¤à¥ˆ पà¥à¤¯à¤¾à¤•à¥‡à¤œà¤•à¥‹ उही संसà¥à¤•à¤°à¤£ पà¥à¤¨-सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ !"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "सूचि फाइल %sinfo/%s पढà¥à¤¨ असफल भयो"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "नोड पà¥à¤°à¤¾à¤ªà¥à¤¤ गरà¥à¤¦à¤¾ आनà¥à¤¤à¤°à¤¿à¤• तà¥à¤°à¥à¤Ÿà¤¿"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "घà¥à¤®à¤¾à¤‰à¤°à¥‹ फाइल %sdiversions खोलà¥à¤¨ असफल भयो"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "घà¥à¤®à¤¾à¤‰à¤°à¥‹ फाइल दूषित भयो"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "घà¥à¤®à¤¾à¤‰à¤°à¥‹ फाइलमा अवैध लाइन:%s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "आनà¥à¤¤à¤°à¤¿à¤• तà¥à¤°à¥à¤Ÿà¤¿à¤²à¥‡ मोड थपिरहेछ"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "pkg कà¥à¤¯à¤¾à¤¸ पहिले सà¥à¤°à¥à¤µà¤¾à¤¤ हà¥à¤¨à¥à¤ªà¤°à¥à¤›"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "पà¥à¤¯à¤¾à¤•à¥‡à¤œ फेला पारà¥à¤¨ असफल भयो: हेडर, अफसेट %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "वसà¥à¤¤à¥ सà¥à¤¥à¤¿à¤¤à¤¿ फाइलमा खराब कनफिग फाइल । अफसेट %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "MD5 पद वरà¥à¤£à¤¨ गरà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿ । अफसेट %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "%s मा परिवरà¥à¤¤à¤¨ गरà¥à¤¨ सकिदैन"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "वैध नियनà¥à¤¤à¥à¤°à¤£ फाइल सà¥à¤¥à¤¿à¤¤ गरà¥à¤¨à¥ असफल भयो"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "%s को लागि पाइप खोलà¥à¤¨ सकिà¤à¤¨"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "%s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾à¤¬à¤¾à¤Ÿ तà¥à¤°à¥à¤Ÿà¤¿ पढà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ "
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr " %u chars माथि à¤à¤•à¤² हेडर लाइन पà¥à¤°à¤¾à¤ªà¥à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "वैरà¥à¤ªà¥à¤¯ गरिà¤à¤•à¥‹ अधिलेखन %s रेखा %lu #१"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "वैरà¥à¤ªà¥à¤¯ गरिà¤à¤•à¥‹ अधिलेखन %s रेखा %lu #२"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "वैरà¥à¤ªà¥à¤¯ गरिà¤à¤•à¥‹ अधिलेखन %s रेखा %lu #३"
+
+#~ msgid "decompressor"
+#~ msgstr "सङà¥à¤•à¥à¤šà¤¨à¤µà¤¿à¤¹à¤¿à¤¨ करà¥à¤¤à¤¾"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "पडà¥à¤¨à¥à¤¹à¥‹à¤¸à¥, अहिले समà¥à¤® %lu पढà¥à¤¨ छ तर कà¥à¤¨à¥ˆ बाà¤à¤•à¥€ छैन"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "लेखà¥à¤¨à¥à¤¹à¥‹à¤¸à¥, अहिले समà¥à¤® %lu लेखà¥à¤¨ छ तर सकिदैन "
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr " %s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿ देखा परà¥à¤¯à¥‹ (नयाठपà¥à¤¯à¤¾à¤•à¥‡à¤œ)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr " %s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿ देखा परà¥à¤¯à¥‹ (पà¥à¤¯à¤¾à¤•à¥‡à¤œ १ पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr " %s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿ देखा परà¥à¤¯à¥‹ (नयाठफाइल संसà¥à¤•à¤°à¤£ १)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr " %s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿ देखा परà¥à¤¯à¥‹ (पà¥à¤¯à¤¾à¤•à¥‡à¤œ २ पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr " %s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿ देखा परà¥à¤¯à¥‹ (नयाठफाइल संसà¥à¤•à¤°à¤£ १)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr " %s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿ देखा परà¥à¤¯à¥‹ (नयाठसंसà¥à¤•à¤°à¤£ १)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr " %s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿ देखा परà¥à¤¯à¥‹ (पà¥à¤¯à¤¾à¤•à¥‡à¤œ ३ पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr " %s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿ देखा परà¥à¤¯à¥‹ (नयाठफाइल संसà¥à¤•à¤°à¤£ १)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr " %s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿ देखा परà¥à¤¯à¥‹ (pkg फेला पारà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ )"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr " %s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿ देखा परà¥à¤¯à¥‹ (संकलन फाइलले उपलबà¥à¤§ गरà¥à¤¦à¤›)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "आनà¥à¤¤à¤°à¤¿à¤• तà¥à¤°à¥à¤Ÿà¤¿, सदसà¥à¤¯ तोकà¥à¤¨ सकिदैन"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr "E: पà¥à¤°à¤¾à¤ªà¥à¤¤ गरà¥à¤¨à¥‡à¤¬à¤¾à¤Ÿ तरà¥à¤• सूचि::gpgv::अति लामो विकलà¥à¤ªà¤¹à¤°à¥‚ अवसà¥à¤¥à¤¿à¤¤ छ ।"
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr " %s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿ देखा परà¥à¤¯à¥‹ (नयाठसंसà¥à¤•à¤°à¤£ २)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "वैरà¥à¤ªà¥à¤¯ लाइन %u सà¥à¤°à¥‹à¤¤ सूचिमा %s (बिकà¥à¤°à¤¤à¤¾ आइडी)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "कà¥à¤žà¥à¤œà¥€ घणà¥à¤Ÿà¥€ पहà¥à¤à¤š गरà¥à¤¨ सकिà¤à¤¨: '%s'"
+
+#, fuzzy
+#~ msgid "Could not patch file"
+#~ msgstr "फाइल %s खोलà¥à¤¨ सकिà¤à¤¨"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#, fuzzy
+#~ msgid "Processing triggers for %s"
+#~ msgstr "डाइरेकà¥à¤Ÿà¥à¤°à¥€ %s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿"
+
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "तपाईà¤à¤²à¥‡ à¤à¤•à¤² सञà¥à¤šà¤¾à¤²à¤¨ मातà¥à¤° अनà¥à¤°à¥‹à¤§ गरे पछि\n"
+#~ " यो पà¥à¤¯à¤¾à¤•à¥‡à¤œ साधरण तरिकाले नितानà¥à¤¤ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾à¤¯à¥‹à¤—à¥à¤¯ देखिदैन र तà¥à¤¯à¥‹ पà¥à¤¯à¤¾à¤•à¥‡à¤œ विरà¥à¤¦à¥à¤§à¤•à¥‹\n"
+#~ " बग पà¥à¤°à¤¤à¤¿à¤µà¥‡à¤¦à¤¨ भरिनेछ ।"
+
+#, fuzzy
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "लाइन %d अति लामो छ (अधिकà¥à¤¤à¤® %d)"
+
+#, fuzzy
+#~ msgid "Line %d too long (max %d)"
+#~ msgstr "लाइन %d अति लामो छ (अधिकà¥à¤¤à¤® %d)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc1)"
+#~ msgstr " %s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿ देखा परà¥à¤¯à¥‹ (नयाठफाइल संसà¥à¤•à¤°à¤£ १)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc2)"
+#~ msgstr " %s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ गरà¥à¤¦à¤¾ तà¥à¤°à¥à¤Ÿà¤¿ देखा परà¥à¤¯à¥‹ (नयाठफाइल संसà¥à¤•à¤°à¤£ १)"
+
+#, fuzzy
+#~ msgid "Stored label: %s \n"
+#~ msgstr "लेबà¥à¤² भणà¥à¤¡à¤¾à¤°à¤£ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥:%s \n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found %i package indexes, %i source indexes, %i translation indexes and "
+#~ "%i signatures\n"
+#~ msgstr " %i पà¥à¤¯à¤¾à¤•à¥‡à¤œ अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾à¤¹à¤°à¥‚, %i सà¥à¤°à¥‹à¤¤ अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾ र %i हसà¥à¤¤à¤¾à¤•à¥à¤·à¤°à¤¹à¤°à¥‚ फेला परे\n"
+
+#, fuzzy
+#~ msgid "openpty failed\n"
+#~ msgstr "असफल चयन गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#~ msgid "File date has changed %s"
+#~ msgstr "फाइल डेटाले %s परिवरà¥à¤¤à¤¨ गरà¥à¤¯à¥‹"
diff --git a/po/nl.po b/po/nl.po
new file mode 100644
index 000000000..837e5c250
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,4412 @@
+# Dutch po-file for apt
+# Copyright (C) 2002-2011 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the apt package.
+# Guus Sliepen <guus@sliepen.warande.net>, 2002.
+# Jochem Berends <j@jochem.net>, 2002.
+# Wannes Soenen <wannes@wannes.cjb.net>, 2002.
+# Frans Pop <elendil@planet.nl>, 2010.
+# Jeroen Schot <schot@a-eskwadraat.nl>, 2011.
+# Frans Spiesschaert <Frans.Spiesschaert@yucom.be>, 2014, 2016, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.4~beta4\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:20+0100\n"
+"PO-Revision-Date: 2017-01-19 17:32+0100\n"
+"Last-Translator: Frans Spiesschaert <Frans.Spiesschaert@yucom.be>\n"
+"Language-Team: Debian Dutch l10n Team <debian-l10n-dutch@lists.debian.org>\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Gtranslator 2.91.6\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Ongeldige archiefondertekening"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Fout bij het lezen van de koptekst van het archiefonderdeel"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Ongeldige koptekst voor archiefonderdeel %s"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Ongeldige koptekst in archiefonderdeel"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Archief is te kort"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Lezen van de archiefkopteksten is mislukt"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Kan geen geconfigureerd compressieprogramma vinden voor '%s'"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Beschadigd archief"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Tar-controlesom klopt niet, het archief is beschadigd"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Onbekend TAR-kopteksttype %u, onderdeel %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Dit is geen geldig DEB-archief, het onderdeel '%s' mankeert"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Interne fout, kon onderdeel %s niet vinden"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Niet-ontleedbaar 'control'-bestand"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Wegschrijven van bestand %s is mislukt"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Sluiten van bestand %s is mislukt"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Het pad %s is te lang"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "%s wordt meer dan eens uitgepakt"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "De map %s is omgeleid"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Het pakket probeert om weg te schrijven naar het omleidingsdoel %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Het omleidingspad is te lang"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Opvragen van de status van %s is mislukt"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Hernoemen van %s naar %s is mislukt"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "De map %s wordt vervangen door iets dat geen map is"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Vinden van de knoop in de hash-emmer is mislukt"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Het pad is te lang"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Pakket-overeenkomst wordt overschreven zonder een versie voor %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Het bestand %s/%s overschrijft het bestand van pakket %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Kan %s niet lezen"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Kan de status van %s niet opvragen"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode werd aangeroepen voor een nog steeds aangekoppeld punt"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Situeren van het hash-element is mislukt!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Toewijzen van de omleiding is mislukt"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Interne fout in AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Er wordt gepoogd om de omleiding %s -> %s en %s/%s te overschrijven"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Dubbele toevoeging van de omleiding %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Dubbel configuratiebestand %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+"Bijwerken van de pakketlijst uit een dergelijke pakketbron kan niet veilig "
+"gebeuren en is daarom standaard uitgezet."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+"Gegevens uit een dergelijke pakketbron kunnen niet geauthenticeerd worden en "
+"ze gebruiken houdt daarom een potentieel gevaar in."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+"Zie de man-pagina apt-secure(8) voor details over het aanmaken van een "
+"pakketbron en over de configuratie langs gebruikerskant."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "De pakketbron '%s' heeft niet langer een ondertekening."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "De pakketbron '%s' heeft niet langer een Release-bestand."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+"Normaal gezien is dit niet toegelaten, maar de optie Acquire::"
+"AllowDowngradeToInsecureRepositories werd gegeven om dit te omzeilen."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is not signed."
+msgstr "De pakketbron '%s' is niet ondertekend."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "De pakketbron '%s' heeft geen Release-bestand."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "De pakketbron '%s' verstrekt slechts zwakke veiligheidsinformatie."
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Opdracht readlink %s is mislukt"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Hash-som komt niet overeen"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+"Er is onvoldoende informatie beschikbaar om deze download veilig uit te "
+"voeren"
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "het hernoemen is mislukt, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Grootte komt niet overeen"
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr "Ongeldig bestandsformaat"
+
+#: apt-pkg/acquire-item.cc
+msgid "Signature error"
+msgstr "Ondertekenigsfout"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+"Bestand met niet-versleutelde ondertekening is ongeldig; kreeg '%s' (vereist "
+"het netwerk authenticatie?)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"Er is een fout opgetreden bij de controle van de ondertekening. De "
+"pakketbron is niet bijgewerkt en de oude indexbestanden zullen worden "
+"gebruikt. GPG-fout: %s: %s"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "GPG-fout: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+"Opvragen van het in de configuratie vermeld bestand '%s' overgeslagen, "
+"vermits pakketbron '%s' de architectuur '%s' niet ondersteunt"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"Kon de verwachte regel '%s' in het Release-bestand niet vinden (Foute regel "
+"in het bestand sources.list of bestand in een ongeldig formaat)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+"Opvragen van het in de configuratie vermeld bestand '%s' overgeslagen, "
+"vermits pakketbron '%s' er slechts zwakke veiligheidsinformatie voor "
+"verstrekt"
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"Het Release-bestand voor %s is vervallen (ongeldig sinds %s). Bijwerkingen "
+"voor deze pakketbron zullen niet uitgevoerd worden."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Tegenstrijdige distributie: %s (verwachtte %s, maar kreeg %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Er kon geen bestand gevonden worden voor pakket %s. Dit kan betekenen dat u "
+"dit pakket handmatig moet repareren (wegens ontbrekende architectuur)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr "Kan geen bron vinden om versie '%s' van '%s' op te halen"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"De pakketindex-bestanden zijn beschadigd. Er is geen 'Filename:'-veld voor "
+"pakket %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Logbestand met veranderingen niet beschikbaar voor %s=%s"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr "Methode '%s' is in de configuratie expliciet uitgeschakeld."
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr "Indien u Tor wilde gebruiken, moet u %s in plaats van %s gebruiken."
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Het methodestuurprogramma %s kon niet gevonden worden."
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr "Is het pakket %s geïnstalleerd?"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Methode %s startte niet op de juiste manier"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+"Gelieve de schijf met label '%s' in het station '%s' te plaatsen en op "
+"[Enter] te drukken."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Lijstmap %spartial is afwezig."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Archiefmap %spartial is afwezig."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "Kan de map %s niet vergrendelen"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+"Geen sandboxgebruiker '%s' op het systeem; kan voorrechten niet laten vallen"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+"Het downloaden gebeurt door root (de systeembeheerder) en niet in een "
+"sandbox (afgesloten ruimte), aangezien bestand '%s' niet door gebruiker '%s' "
+"kon benaderd worden."
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr "Opschonen van %s wordt niet ondersteund"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Kan %s niet veranderen"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Bestand %li van %li wordt opgehaald (nog %s te gaan)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Bestand %li van %li wordt opgehaald"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"Pakket %s moet opnieuw geïnstalleerd worden, maar er kan geen archief voor "
+"gevonden worden."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Fout, pkgProblemResolver::Resolve leverde defecten op. Dit kan veroorzaakt "
+"worden door vastgehouden pakketten."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "Kan problemen niet verhelpen, u houdt defecte pakketten vast."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+"De pakketlijsten of het statusbestand konden of niet ontleed, of niet "
+"geopend worden."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr ""
+"U kunt misschien 'apt-get update' uitvoeren om deze problemen te verhelpen"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "De lijst van bronnen kon niet gelezen worden."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Regex-compilatiefout - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Release '%s' voor '%s' is niet gevonden"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Versie '%s' voor '%s' is niet gevonden"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Kon taak '%s' niet vinden"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Kon geen enkel pakket vinden via regex '%s'"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Kon geen enkel pakket vinden via expansie (glob) '%s'"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Kan pakket %s niet vinden"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+"Kan geen versies selecteren voor pakket '%s' omdat het puur virtueel is"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"Kan de nieuwste versie van het pakket '%s' niet selecteren omdat het puur "
+"virtueel is"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+"Kan de kandidaat-versie van het pakket %s niet selecteren omdat het geen "
+"kandidaat heeft"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"Kan de geïnstalleerde versie van het pakket %s niet selecteren omdat het "
+"niet geïnstalleerd is"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"Kan noch de geïnstalleerde, noch de kandidaat-versie van het pakket '%s' "
+"selecteren omdat geen van beide er zijn"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Regel %u van de bronlijst %s is te lang."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Cd-rom wordt afgekoppeld...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Er wordt gebruik gemaakt van cd-romaankoppelpunt %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Er wordt gewacht op de schijf...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Cd-rom wordt aangekoppeld...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Identificatie..."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Opgeslagen label: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "De schijf wordt gescand op indexbestanden...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Er zijn %zu pakket-indexen, %zu bron-indexen, %zu vertalingsindexen, en %zu "
+"handtekeningen gevonden\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Kan geen Package-bestanden vinden. Is dit misschien geen Debian schijf, of "
+"de verkeerde architectuur?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Label '%s' gevonden\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Dat is een ongeldige naam. Gelieve opnieuw te proberen.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Deze schijf heet:\n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Pakketlijsten worden gekopieerd..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Nieuwe bronlijst wordt weggeschreven\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Bronlijst-elementen voor deze schijf zijn:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Kan de status van %s niet opvragen."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Kan de status van het aanhechtpunt %s niet opvragen"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Opvragen van de status van de cd-rom is mislukt"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr ""
+"Commandoregel-optie '%c' [van %s] wordt niet begrepen in combinatie met de "
+"andere opties."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr ""
+"Commandoregel-optie %s wordt niet begrepen in combinatie met de andere opties"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Commandoregel-optie %s is niet booleaans"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Optie %s vereist een argument."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+"Optie %s: de specificatie van het configuratie-item dient een =<waarde> te "
+"bevatten."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Optie %s vereist een geheel getal als argument, niet '%s'"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Optie '%s' is te lang"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "Betekenis van %s wordt niet begrepen, probeer 'true' of 'false'."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Ongeldige bewerking %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Onbekende type-afkorting: '%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Configuratiebestand %s wordt geopend"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Syntactische fout %s:%u: blok start zonder naam."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Syntactische fout %s:%u: verkeerd gevormde markering"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Syntactische fout %s:%u: extra rommel na waarde"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"Syntactische fout %s:%u: richtlijnen kunnen enkel op het hoogste niveau "
+"gegeven worden"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Syntactische fout %s:%u: teveel geneste invoegingen"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Syntactische fout %s:%u: vanaf hier ingevoegd"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Syntactische fout %s:%u: niet-ondersteunde richtlijn '%s'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Syntactische fout %s:%u: de richtlijn 'clear' vereist een optieboom als "
+"argument"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Syntactische fout %s:%u: extra rommel aan het einde van het bestand"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Probleem bij het ontkoppelen van het bestand %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr ""
+"Er wordt geen vergrendeling gebruikt voor het alleen-lezen-"
+"vergrendelingsbestand %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Kon het vergrendelingsbestand %s niet openen"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr ""
+"Het via nfs aangekoppelde vergrendelingsbestand %s wordt niet vergrendeld"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Kon vergrendeling %s niet verkrijgen"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr "Bestandenlijst kan niet aangemaakt worden, omdat '%s' geen map is"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr "Negeren van '%s' in map '%s' omdat het geen gewoon bestand is"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+"Negeren van bestand '%s' in map '%s' omdat het geen bestandsextensie heeft"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"Negeren van bestand '%s' in map '%s' omdat het een ongeldige "
+"bestandsextensie heeft"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Er is gewacht op %s, maar die kwam niet"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Subproces %s ontving een segmentatiefout."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Subproces %s ontving signaal %u."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Subproces %s gaf een foutcode terug (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Subproces %s sloot onverwacht af"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Leesfout"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Schrijffout"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Probleem bij het sluiten van het gzip-bestand %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr "Onverwacht bestandseinde"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Aanmaken IPC-subproces is mislukt"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Uitvoeren van de compressor is mislukt "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Kon het bestand %s niet openen"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Kon de bestandsindicator %d niet openen"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "lezen; moet er nog %lu lezen, maar er schieten er geen meer over"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "schrijven; de laatste %lu konden niet weggeschreven worden"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Probleem bij het sluiten van het bestand %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Probleem bij het hernoemen van het bestand %s naar %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Probleem bij het synchroniseren van het bestand"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Kan tijdelijk bestand %s niet aanmaken met mkstemp"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Kan niet naar %s schrijven"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Kan systeem-aanroep mmap niet op een leeg bestand toepassen"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Kon het omslaan naar het geheugen van %llu bytes niet uitvoeren"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Kon de bestandsindicator %i niet dupliceren"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "Kan de 'mmap' niet sluiten"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "Kan de 'mmap' niet synchronizeren"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Kon het omslaan naar het geheugen van %lu bytes niet uitvoeren"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Afkorten van bestand is mislukt"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"Onvoldoende ruimte voor Dynamische MMap. Gelieve de grootte van APT::Cache-"
+"Start te verhogen. Huidige waarde: %lu. (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"Kan het formaat van de MMap niet vergroten omdat de grens van %lu bytes al "
+"is bereikt."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Kan het formaat van de MMap niet vergroten omdat het automatisch vergroten "
+"door de gebruiker is uitgeschakeld."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Fout!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Klaar"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr "..."
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... %u%%"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%lid %liu %limin %lis"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%liu %limin %lis"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%limin %lis"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%lis"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Selectie %s niet gevonden"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr "Doel %s wil hetzelfde bestand (%s) als %s uit pakketbron %s opvragen"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr "Doel %s (%s) is meerdere keren geconfigureerd in %s en %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Kon Release-bestand %s niet ontleden"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Geen secties in Release-bestand %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Geen Hash-vermelding in Release-bestand %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+"Geen Hash-element in Release-bestand %s dat vanuit veiligheidsoverwegingen "
+"als voldoende sterk beschouwd kan worden"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Ongeldige '%s'-vermelding in Release-bestand %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+"Tegengestelde waarden ingesteld voor optie %s in verband met pakketbron %s %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+"Ongeldige waarde ingesteld voor optie %s in verband met pakketbron %s %s (%s)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+"Tegengestelde waarden ingesteld voor optie %s in verband met pakketbron %s "
+"%s: %s != %s"
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Kon pakketbestand %s niet ontleden (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"Kan de beheersmap (%s) niet vergrendelen. Is deze in gebruik door een ander "
+"proces?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Kan de beheersmap (%s) niet vergrendelen. Heeft u beheerdersrechten?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"dpkg werd onderbroken; voer handmatig '%s' uit om het probleem te verhelpen. "
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Niet vergrendeld"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "%s wordt geïnstalleerd"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "%s wordt geconfigureerd"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "%s wordt verwijderd"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "%s wordt volledig verwijderd"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "De verdwijning van %s wordt opgemerkt"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Post-installatie-trigger %s wordt uitgevoerd"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "%s is geïnstalleerd"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Map '%s' ontbreekt"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "Kon het bestand '%s' niet openen"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "%s wordt voorbereid"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "%s wordt uitgepakt"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Configuratie van %s wordt voorbereid"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Verwijderen van %s wordt voorbereid"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "%s is verwijderd"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Volledig verwijderen van %s wordt voorbereid"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "%s is volledig verwijderd"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Can not write log (%s)"
+msgstr "Kan log (%s) niet opschrijven"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr "Is /dev/pts aangekoppeld?"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "Bewerking werd afgebroken vooraleer ze beëindigd was"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+"Er is geen apport-verslag weggeschreven omdat het maximum aantal verslagen "
+"(MaxReports) al is bereikt"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "problemen met vereisten - wordt niet geconfigureerd"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Er is geen apport-verslag weggeschreven omdat de foutmelding aangeeft dat de "
+"fout het gevolg is van een eerdere mislukking."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Er is geen apport-verslag weggeschreven omdat de foutmelding als oorzaak een "
+"volle schijf opgeeft."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Er is geen apport-verslag weggeschreven omdat de foutmelding als oorzaak "
+"onvoldoende-geheugen opgeeft."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Er is geen apport-verslag weggeschreven omdat de foutmelding een probleem op "
+"het lokale systeem signaleert."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"Er is geen apport-verslag weggeschreven omdat de foutmelding een fout van "
+"dpkg I/O signaleert."
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Boom van vereisten wordt opgebouwd"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Kandidaat-versies"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Genereren van vereisten"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "De statusinformatie wordt gelezen"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Openen van StateFile %s is mislukt"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Wegschrijven van tijdelijke StateFile %s is mislukt"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "Scenario naar de oplosser sturen"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "Verzoek naar de oplosser sturen"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "Instellen op het ontvangen van een oplossing"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr "Externe oplosser faalde zonder passende foutmelding"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "Externe oplosser uitvoeren"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr "Externe planner uitvoeren"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr "Verzoek naar de planner sturen"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr "Scenario naar de planner sturen"
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr "Externe planner faalde zonder passende foutmelding"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "%i records weggeschreven.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "%i records weggeschreven met %i ontbrekende bestanden.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "%i records weggeschreven met %i niet-overeenstemmende bestanden\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"%i records weggeschreven met %i ontbrekende bestanden en %i niet-"
+"overeenstemmende bestanden\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "Kan geen authenticiteitsrecord vinden voor: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Hash-som komt niet overeen voor: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Pakketbeheersysteem '%s' wordt niet ondersteund"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Kan geen geschikt pakketbeheersysteemtype bepalen"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr "Voortgang: [%3i%%]"
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "dpkg wordt uitgevoerd"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"Kon onmiddellijke configuratie van '%s' niet uitvoeren. Voor details zie "
+"'man 5 apt.conf', onder APT::Immediate-Configure. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "Kon '%s' niet configureren. "
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Deze installatie-aanroep vereist het tijdelijk verwijderen van het "
+"essentiële pakket %s omwille van een Conflicts/Pre-Depends-lus. Dit is vaak "
+"slecht, maar als u dit echt wilt doen, dan dient u de optie APT::Force-"
+"LoopBreak te activeren."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Lege pakketcache"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Het pakketcachebestand is beschadigd"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Het pakketcachebestand heeft een niet-compatibele versie"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Deze APT ondersteunt het versienummeringssysteem '%s' niet"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "De pakketcache was aangemaakt voor andere architecturen: %s vs %s"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Het pakketcachebestand is beschadigd. Het heeft een verkeerde frommel"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Vereisten"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Voor-Vereisten"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Suggesties"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Conflicteert met"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Aanbevelingen"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Vervangt"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Breekt"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Vult aan"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Doet in onbruik geraken"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "belangrijk"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "noodzakelijk"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "standaard"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "extra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "optioneel"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Cache heeft een niet-compatibel versienummeringssysteem"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Fout tijdens verwerken van %s (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"Wauw, u heeft het maximum aantal pakketnamen dat deze APT aankan "
+"overschreden."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr ""
+"Wauw, u heeft het maximum aantal versies dat deze APT aankan overschreden."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+"Wauw, u heeft het maximum aantal beschrijvingen dat deze APT aankan "
+"overschreden."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+"Wauw, u heeft het maximum aantal afhankelijkheden dat deze APT aankan "
+"overschreden."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Pakketlijsten worden ingelezen"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Invoer/Uitvoer-fout tijdens wegschrijven bron-cache"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Indexbestand van type '%s' wordt niet ondersteund"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"Een waarde '%s' voor APT::Default-Release is ongeldig, aangezien een "
+"dergelijke uitgave niet voorkomt in de bronnen"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr ""
+"Ongeldig record in het voorkeurenbestand %s, 'Package'-koptekst ontbreekt"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Pintype %s wordt niet begrepen"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+"%s: Waarde %s valt buiten het bereik van geldige pin-prioriteiten (%d to %d)"
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Er is geen prioriteit (of nul) opgegeven voor deze pin"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Niet juist gevormde regel %u in %s-bestand %s (%s)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "%s wordt geopend"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Niet juist gevormde regel %u in bronlijst %s (type)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Type '%s' op regel %u in bronlijst %s is onbekend"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Niet juist gevormde regel %u in pakketbronlijst %s (type)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Type '%s' van element %u in bronlijst %s is onbekend"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr "Niet ondersteund bestand %s opgegeven aan de commandoregel"
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr ""
+"Uw bronnenlijst (/etc/apt/sources.list) dient tenminste één bron-URI te "
+"bevatten"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr "Kan %s niet naar een geheel getal omzetten: buiten het bereik"
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Ophalen van %s is mislukt %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Ophalen van sommige indexbestanden is mislukt. Deze zijn of genegeerd, of er "
+"zijn oudere versies van gebruikt."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Opwaardering wordt doorgerekend"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Geraakt:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Ophalen:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Genegeerd:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Fout:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "%sB opgehaald in %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Bezig]"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Medium wisselen: gelieve de schijf met label\n"
+" '%s'\n"
+"in het station '%s' te plaatsen en op [Enter] te drukken\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Vereisten worden gecorrigeerd..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " mislukt."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Kan vereisten niet corrigeren"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Kon de verzameling op te waarderen pakketten niet minimaliseren"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Klaar"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "U kunt 'apt --fix-broken install' uitvoeren om dit op te lossen."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Er zijn niet-voldane vereisten. U kunt best 'apt --fix-broken install' "
+"uitvoeren zonder pakketten op te geven, (of u kunt zelf een oplossing "
+"specificeren)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr "Bezig met sorteren"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Let op, '%s' wordt geselecteerd omwille van de taak '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Let op, '%s' wordt geselecteerd omwille van expansie (glob) '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Let op, '%s' wordt geselecteerd omwille van de regex '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Pakket %s is een virtueel pakket voorzien door:\n"
+
+#: apt-private/private-cacheset.cc
+msgid " [Installed]"
+msgstr " [Geïnstalleerd]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr "[Niet de kandidaat-versie]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "U dient er één expliciet te selecteren voor installatie."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Pakket %s is niet beschikbaar, hoewel er naar verwezen wordt door\n"
+"een ander pakket. Mogelijk betekent dit dat het pakket ontbreekt,\n"
+"verouderd is, of enkel beschikbaar is van een andere bron\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Echter, de volgende pakketten vervangen dit:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Pakket '%s' heeft geen kandidaat voor installatie"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Virtuele pakketten zoals '%s' kunnen niet worden verwijderd\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"Pakket '%s' is niet geïnstalleerd, en wordt dus niet verwijderd. Bedoelde u "
+"'%s'?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Pakket '%s' is niet geïnstalleerd, en wordt dus niet verwijderd\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Let op, '%s' wordt geselecteerd in plaats van '%s'\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr "Meest gebruikte commando's:"
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr "Zie %s voor meer informatie over beschikbare commando's."
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+"Configuratieopties en syntaxis worden gespecificeerd in apt.conf(5).\n"
+"Informatie over het configureren van pakketbronnen vindt u in sources."
+"list(5).\n"
+"Keuzes voor pakketten en versies kunnen geuit worden via "
+"apt_preferences(5).\n"
+"Details over beveiliging zijn te vinden in apt-secure(8).\n"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Deze APT heeft Super Koekracht."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr "Deze APT-helper heeft Super Koekracht."
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Geen pakketten gevonden"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr ""
+"WAARSCHUWING: De volgende pakketten kunnen niet geauthenticeerd worden!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Authenticiteitswaarschuwing werd genegeerd.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Sommige pakketten konden niet geauthenticeerd worden"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Wilt u deze pakketten installeren zonder verificatie?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+"--force-yes is verouderd, gebruik in plaats daarvan een van de opties die "
+"met --allow begint."
+
+#: apt-private/private-download.cc
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr ""
+"Er waren niet-geauthenticeerde pakketten en -y was gebruikt zonder --allow-"
+"unauthenticated"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Kon de hoeveelheid vrije schijfruimte op %s niet bepalen"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "U heeft onvoldoende vrije schijfruimte op %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Kon de ophaalmap niet vergrendelen"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Sommige pakketten konden niet geïnstalleerd worden. Dit kan betekenen\n"
+"dat u om een onmogelijke situatie gevraagd heeft, of, indien u\n"
+"de distributie 'unstable' gebruikt, dat sommige benodigde pakketten nog "
+"gemaakt moeten worden of uit 'Incoming' verwijderd werden."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "De volgende informatie kan misschien helpen de situatie op te lossen:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Niet-werkende pakketten"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Kon sommige archieven niet ophalen. Misschien kunt u 'apt-get update' "
+"uitvoeren of het met '--fix-missing' proberen?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Interne fout. InstallPackages is aangeroepen met defecte pakketten!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Pakketten moeten verwijderd worden maar verwijderen is uitgeschakeld."
+
+#: apt-private/private-install.cc
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr ""
+"Er werden essentiële pakketten verwijderd en -y was gebruikt zonder --allow-"
+"remove-essential."
+
+#: apt-private/private-install.cc
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr ""
+"Er werden pakketten gedegradeerd en -y was gebruikt zonder --allow-"
+"downgrades."
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+"Er werden gehandhaafde pakketten gewijzigd en -y was gebruikt zonder --allow-"
+"change-held-packages."
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Interne fout. Rangschikken is niet voltooid"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Merkwaardig... De groottes kwamen niet overeen. Gelieve apt@packages.debian."
+"org te mailen"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Er moeten %sB/%sB aan archieven opgehaald worden.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Er moeten %sB aan archieven opgehaald worden.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "Na deze bewerking zal er %sB extra schijfruimte gebruikt worden.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Na deze bewerking zal er %sB schijfruimte vrijkomen.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "'Trivial Only' is opgegeven. Dit is echter geen triviale bewerking."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Ja, doe wat ik zeg!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"U staat op het punt om iets te doen wat mogelijk schadelijk is.\n"
+"Als u wilt doorgaan, dient u de zin '%s' in te typen.\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Afbreken."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Wilt u doorgaan?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Ophalen van sommige bestanden is mislukt"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Ophalen klaar en alleen-ophalen-modus staat aan"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing en medium wisselen wordt op dit moment niet ondersteund"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Geen oplossing gevonden voor de ontbrekende pakketten."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Installatie wordt afgebroken."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"Het volgende pakket is van uw systeem verdwenen omdat\n"
+"alle bestanden zijn overschreven door andere pakketten:"
+msgstr[1] ""
+"De volgende pakketten zijn van uw systeem verdwenen omdat\n"
+"alle bestanden zijn overschreven door andere pakketten:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Let op: dit wordt automatisch en bewust gedaan door dpkg."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "We mogen geen dingen verwijderen, kan AutoRemover niet starten"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Hmm, het lijkt erop dat de AutoRemover iets vernietigd heeft. Dit zou\n"
+"niet mogen kunnen. Gelieve een bug-rapport voor apt in te sturen."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Interne fout. AutoRemover heeft dingen stukgemaakt"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"Het volgende pakket is automatisch geïnstalleerd en is niet langer nodig:"
+msgstr[1] ""
+"De volgende pakketten zijn automatisch geïnstalleerd en zijn niet langer "
+"nodig:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "%lu pakket was automatisch geïnstalleerd en is niet langer nodig.\n"
+msgstr[1] ""
+"%lu pakketten waren automatisch geïnstalleerd en zijn niet langer nodig.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Gebruik '%s' om het te verwijderen."
+msgstr[1] "Gebruik '%s' om ze te verwijderen."
+
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "De volgende extra pakketten zullen geïnstalleerd worden:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Voorgestelde pakketten:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Aanbevolen pakketten:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+"%s wordt overgeslagen, het is al geïnstalleerd en opwaardering is niet "
+"gevraagd.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"%s wordt overgeslagen, het is niet geïnstalleerd en er is alleen om "
+"opwaarderingen gevraagd.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr ""
+"Herinstalleren van %s is niet mogelijk omdat het niet opgehaald kan worden.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s is reeds de nieuwste versie (%s).\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s staat ingesteld op handmatig geïnstalleerd.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Versie '%s' (%s) geselecteerd voor '%s'\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Versie '%s' (%s) geselecteerd voor '%s' omwille van '%s'\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr "Bezig met oplijsten"
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] "Er is %i bijkomende versie. Gebruik schakelaar '-a' om het te zien."
+msgstr[1] ""
+"Er zijn %i bijkomende versies. Gebruik schakelaar '-a' om ze te zien."
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"OPMERKING: Dit is slechts een simulatie!\n"
+" Voor daadwerkelijke uitvoering heeft %s beheerdersrechten nodig.\n"
+" Houd er ook rekening mee dat vergrendeling is uitgeschakeld.\n"
+" Steun dus niet op haar relevantie voor de huidige concrete situatie!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr "onbekend"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr "[geïnstalleerd,opwaardeerbaar naar: %s]"
+
+#: apt-private/private-output.cc
+msgid "[installed,local]"
+msgstr "[geïnstalleerd,lokaal]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr "[geïnstalleerd,automatisch verwijderbaar]"
+
+#: apt-private/private-output.cc
+msgid "[installed,automatic]"
+msgstr "[geïnstalleerd,automatisch]"
+
+#: apt-private/private-output.cc
+msgid "[installed]"
+msgstr "[geïnstalleerd]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr "[opwaardeerbaar van: %s]"
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr "[overgebleven configuratie]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "maar %s is geïnstalleerd"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "maar %s zal geïnstalleerd worden"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "maar het is niet installeerbaar"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "maar het is een virtueel pakket"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "maar het zal niet geïnstalleerd worden"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "maar het is niet geïnstalleerd"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " of"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "De volgende pakketten hebben niet-voldane vereisten:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "De volgende NIEUWE pakketten zullen geïnstalleerd worden:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "De volgende pakketten zullen VERWIJDERD worden:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "De volgende pakketten zijn achtergehouden:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "De volgende pakketten zullen opgewaardeerd worden:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "De volgende pakketten zullen GEDEGRADEERD worden:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "De volgende gehandhaafde pakketten zullen gewijzigd worden:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (vanwege %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"WAARSCHUWING: De volgende essentiële pakketten zullen verwijderd worden.\n"
+"Dit dient NIET gedaan te worden tenzij u precies weet wat u doet!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu opgewaardeerd, %lu nieuw geïnstalleerd, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu opnieuw geïnstalleerd, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu gedegradeerd, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu te verwijderen en %lu niet opgewaardeerd.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu niet volledig geïnstalleerd of verwijderd.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[J/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[j/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "J"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "U dient minstens één zoekpatroon op te geven"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr "Volledige tekst doorzoeken"
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Pakketbestand %s is niet meer gesynchroniseerd."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+"Er is %i bijkomend record. Gebruik de schakeloptie '-a' om het te zien"
+msgstr[1] ""
+"Er zijn %i bijkomende records. Gebruik de schakeloptie '-a' om ze te zien."
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr "geen echt pakket (virtueel)"
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Pakketbestanden:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+"Cache loopt niet synchroon, kruisverwijzing naar pakketbestand lukt niet"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Vastgepinde pakketten:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr "%s -> %s met prioriteit %d\n"
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Geïnstalleerd: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Kandidaat: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(geen)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Versietabel:"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Kan geen pakket vinden voor architectuur '%s'"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Kan geen pakket '%s' vinden met versienummer '%s'"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Kan geen pakket '%s' vinden uit de uitgave '%s'"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "'%s' wordt als bronpakket genomen in plaats van '%s'\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "Kan versie '%s' van pakket '%s' niet vinden"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr ""
+"U dient minstens 1 pakket op te geven waarvan de broncode opgehaald moet "
+"worden"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Kan geen bronpakket vinden voor %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"MERK OP: Het verpakken van '%s' wordt bijgehouden in het versiebeheersysteem "
+"'%s' op:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Gebruik:\n"
+"%s\n"
+"om de nieuwste (mogelijk nog niet uitgebrachte) bijwerkingen van het pakket "
+"op te halen.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Reeds opgehaald bestand '%s' wordt overgeslagen\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Moet %sB/%sB aan bronarchieven ophalen.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Moet %sB aan bronarchieven ophalen.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Ophalen bron %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Ophalen van sommige archieven is mislukt."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Het uitpakken van de reeds uitgepakte bron in %s wordt overgeslagen\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Uitpakopdracht '%s' is mislukt.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Gelieve na te gaan of het pakket 'dpkg-dev' geïnstalleerd is.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Bouwopdracht '%s' is mislukt.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Kan de informatie over de bouwvereisten voor %s niet ophalen"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s heeft geen bouwvereisten.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"U dient tenminste één pakket op te geven om er de bouwvereisten van te "
+"controleren"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"Er is geen architectuurinformatie beschikbaar voor %s. Raadpleeg apt.conf(5) "
+"APT::Architectures om dit te configureren"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr "Noteer dat map '%s' gebruikt wordt om de bouwvereisten te verkrijgen\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr ""
+"Noteer dat bestand '%s' gebruikt wordt om de bouwvereisten te verkrijgen\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Verwerken van de bouwvereisten is mislukt"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Verwerken van %s is mislukt. Opnieuw bewerken? "
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr "Uw bestand '%s' is gewijzigd. Voer 'apt-get update' uit."
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Pakket %s versie %s heeft een niet-voldane vereiste:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "De opdracht 'update' aanvaardt geen argumenten"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+"%i pakket kan opgewaardeerd worden. Voer 'apt list --upgradable' uit om het "
+"te zien.\n"
+msgstr[1] ""
+"%i pakketten kunnen opgewaardeerd worden. Voer 'apt list --upgradable' uit "
+"om ze te zien.\n"
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr "Alle pakketten zijn up-to-date."
+
+#: cmdline/apt-cache.cc
+msgid "apt-cache stats does not take any arguments"
+msgstr "De opdracht 'apt-cache stats' aanvaardt geen argumenten"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Totaal aantal pakketnamen: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Totaal aantal pakketstructuren: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Normale pakketten: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Zuiver virtuele pakketten: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Losstaande virtuele pakketten: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Gemengde virtuele pakketten: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Ontbrekend: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Totaal aantal verschillende versies: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Totaal aantal verschillende beschrijvingen: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Totaal aantal vereisten: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Totaal aantal versie/bestand-relaties: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Totaal aantal Beschrijving/bestand-relaties: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Totaal aantal 'Voorziet'-toewijzingen: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Totaal aantal geëxpandeerde (globbed) tekenreeksen: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Totale onbenutte ruimte: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Totale hoeveelheid verantwoorde ruimte: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+"Dit commando is verouderd. Gelieve in plaats ervan 'apt-mark showauto' te "
+"gebruiken."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+"Gebruik: apt-cache [opties] commando\n"
+" apt-cache [opties] show pkkt1 [pkkt2 ...]\n"
+"\n"
+"apt-cache zoekt en toont beschikbare informatie over geïnstalleerde en\n"
+"installeerbare pakketten. Het werkt exclusief met de gegevens die via het\n"
+"commando 'update' van bijv. apt-get in de lokale cache opgeslagen werden.\n"
+"Als de laatste update lang geleden is, kan die informatie dus verouderd\n"
+"zijn, maar daartegenover staat dat apt-cache niet afhankelijk is van de\n"
+"beschikbaarheid van de geconfigureerde pakketbronnen (bijv. offline).\n"
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Toon een rapport over de broncode"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Doorzoek pakkettenlijst a.d.h.v. een regex-patroon"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Toon de afhankelijkheden van een pakket"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Toon de pakketten die afhankelijk zijn van een pakket"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Toon een leesbaar rapport over het pakket"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Toon de namen van alle pakketten op het systeem"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Toon beleidsinstellingen"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr ""
+"Gelieve een naam voor deze schijf op te geven, bijvoorbeeld 'Debian 5.0.3 "
+"Schijf 1'"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Gelieve een schijf in het station te plaatsen en op [Enter] te drukken"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Aankoppelen van '%s' op '%s' is mislukt"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+"Het is niet gelukt om automatisch een cd-rom te vinden, ook niet op het "
+"standaard aankoppelpunt.\n"
+"U zou de optie --cdrom kunnen proberen om het aankoppelpunt voor de cd-rom "
+"in te stellen.\n"
+"Raadpleeg 'man apt-cdrom' voor meer informatie over het automatisch "
+"detecteren van een cd-rom en het aankoppelpunt."
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Dit proces dient herhaald te worden voor alle cd's in uw set."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+"Gebruik: apt-cdrom [opties] commando\n"
+"\n"
+"apt-cdrom wordt gebruikt om CD's, USB-sticks en andere verwijderbare media\n"
+"toe te voegen als pakketbronnen voor APT. Het aankoppelpunt en informatie\n"
+"over het apparaat worden gehaald bij apt.conf(5), udev(7) en fstab(5).\n"
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Argumenten niet in paren"
+
+#: cmdline/apt-config.cc
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Gebruik: apt-config [opties] commando\n"
+"\n"
+"apt-config is een interface voor de configuratie-instellingen die door\n"
+"alle APT-gereedschap gebruikt wordt; hoofdzakelijk bedoeld om te debuggen\n"
+"en voor het gebruik in shellscripts.\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr "configuratiewaarden via shell-evaluatie verkrijgen"
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr "toon de actieve configuratie-instelling"
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+"Gebruik: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is een interface die een EDSP-scenario opslaat in\n"
+"een bestand en dat facultatief doorstuurt naar een andere oplosser.\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Gebruik: apt-extracttemplates bestand1 [bestand2 ...]\n"
+"\n"
+"apt-extracttemplates wordt gebruikt om configuratie- en sjabloonbestanden "
+"uit\n"
+"Debian pakketten te halen. Het wordt hoofdzakelijk gebruikt door debconf(1) "
+"voor\n"
+"het stellen van configuratievragen vooraleer pakketten geïnstalleerd "
+"worden.\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Kan versie van debconf niet bepalen. Is debconf geïnstalleerd?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Kon pakket %s niet vinden"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s staat ingesteld op automatische geïnstalleerd.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Dit commando is verouderd. Gelieve in plaats ervan 'apt-mark auto' en 'apt-"
+"mark manual' te gebruiken."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Interne fout, probleemoplosser heeft dingen stukgemaakt"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Ondersteunde modules:"
+
+#: cmdline/apt-get.cc
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Gebruik: apt-get [opties] commando\n"
+" apt-get [opties] install|remove pakket1 [pakket2 ...]\n"
+" apt-get [opties] source pakket1 [pakket2 ...]\n"
+"\n"
+"apt-get is een commandoregel-interface voor het ophalen van pakketten en\n"
+"informatie erover uit geauthenticeerde pakketbronnen en voor het\n"
+"installeren, opwaarderen en verwijderen van pakketten en hun vereisten.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Haal een nieuwe lijst van pakketten op"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Voer een opwaardering uit"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Installeer nieuwe pakketten (pakket is bijv. libc6, niet libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Verwijder pakketten"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Verwijder pakketten en hun configuratiebestanden"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Verwijder automatisch alle ongebruikte pakketten"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Opwaardering van de distributie, zie apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Opwaardering volgens dselect-selecties"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Installeer de pakketten vereist voor het bouwen van een bronpakket"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Verwijder opgehaalde archiefbestanden"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Verwijder verouderde opgehaalde archiefbestanden"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Controleer op onvoldane vereisten"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Haal bronarchieven op"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "Haal het binaire pakket op en plaats het in de werkmap"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "Haal log op van wijzigingen aan een bepaald pakket en toon die"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr "Heb een URL als argument nodig"
+
+#: cmdline/apt-helper.cc
+msgid "Must specify at least one pair url/filename"
+msgstr "U dient minstens 1 paar van url/bestandsnaam op te geven"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr "Ophalen mislukt"
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr "GetSrvRec is mislukt voor %s"
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+"Gebruik: apt-helper [opties] commando\n"
+" apt-helper [opties] cat-file bestand ...\n"
+" apt-helper [opties] download-file uri doelpad\n"
+"\n"
+"apt-helper bundelt een collectie commando's voor shell-scripts\n"
+"om bijvoorbeeld dezelfde proxyconfiguratie of eenzelfde manier\n"
+"van verkrijgen te gebruiken als APT.\n"
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr "haal opgegeven uri op en plaats in doelpad"
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr "zoek een SRV-record (bijv. _http._tcp.ftp.debian.org) op"
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr "voeg bestanden samen, met automatische decompressie"
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr "proxy opzoeken met behulp van apt.conf"
+
+#: cmdline/apt-internal-planner.cc
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Gebruik: apt-internal-planner\n"
+"\n"
+"apt--internal-planner is een interface om de actuele\n"
+"interne planner voor de APT-familie te gebruiken\n"
+"als een externe met het oog op debuggen e.d.\n"
+
+#: cmdline/apt-internal-solver.cc
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Gebruik: apt-internal-solver\n"
+"\n"
+"apt--internal-solver is een interface om de actuele\n"
+"interne oplosser voor de APT-familie te gebruiken\n"
+"als een externe met het oog op debuggen e.d.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "%s kan niet gemarkeerd worden want het is niet geïnstalleerd.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s was reeds ingesteld als handmatig geïnstalleerd.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s was reeds ingesteld als automatisch geïnstalleerd.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s was reeds ingesteld als te handhaven.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s was reeds ingesteld op niet te handhaven.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "Het uitvoeren van dpkg mislukte. Bent u systeembeheerder?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "%s is ingesteld op te handhaven.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Handhaven van %s werd geannuleerd.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr "Selecteerde %s om gewist te worden.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr "Selecteerde %s om verwijderd te worden.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr "Selecteerde %s om geïnstalleerd te worden.\n"
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"Gebruik: apt-mark [opties] {auto|manual} pakket1 [pakket2 ...]\n"
+"\n"
+"apt-mark is een eenvoudige commandolijn-interface om pakketten als\n"
+"handmatig of automatisch geïnstalleerd te markeren. Het kan ook\n"
+"gebruikt worden om de selectietoestand van pakketten in dpkg(1) te\n"
+"manipuleren en een lijst van pakketten weer te geven\n"
+"die al dan niet een bepaalde markering hebben.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "Markeer het vermelde pakket als automatisch geïnstalleerd"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "Markeer het vermelde pakket als manueel geïnstalleerd"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr "Markeer een pakket als gehandhaafd"
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr "Markeer een pakket niet langer als gehandhaafd"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr "Toon de lijst van automatisch geïnstalleerde pakketten"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr "Toon de lijst van manueel geïnstalleerde pakketten"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr "Toon de lijst van te handhaven pakketten"
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Onbekend pakketrecord!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+"Gebruik: apt-sortpkgs [opties] bestand1 [bestand2 ...]\n"
+"\n"
+"apt-sortpkgs is eenvoudig gereedschap voor het sorteren van bestanden\n"
+"met pakketinformatie. Standaard sorteert het informatie volgens\n"
+"binair pakket, maar met de optie -s kan overgeschakeld worden\n"
+"naar een ordening op basis van het bronpakket.\n"
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+"Gebruik: apt [opties] commando\n"
+"\n"
+"apt is pakketbeheerdersgereedschap voor de commandoregel dat beschikt\n"
+"over commando's voor het zoeken en beheren van pakketten en voor het\n"
+"opzoeken van informatie over hen. Het biedt dezelfde functionaliteit\n"
+"als de gespecialiseerde gereedschappen van APT, zoals apt-get en\n"
+"apt-cache, maar maakt standaard gebruik van opties op een manier\n"
+"die beter aan interactief gebruik aangepast is.\n"
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr "geef een lijst van pakketten op basis van hun naam"
+
+#: cmdline/apt.cc
+msgid "search in package descriptions"
+msgstr "zoek in de pakketbeschrijvingen"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr "toon gedetailleerde informatie over het pakket"
+
+#. package stuff
+#: cmdline/apt.cc
+msgid "install packages"
+msgstr "installeer pakketten"
+
+#: cmdline/apt.cc
+msgid "remove packages"
+msgstr "verwijder pakketten"
+
+#. system wide stuff
+#: cmdline/apt.cc
+msgid "update list of available packages"
+msgstr "werk de lijst van beschikbare pakketten bij"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr "waardeer het systeem op door pakketten te installeren/op te waarderen"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+"waardeer het systeem op door pakketten te verwijderen/te installeren/op te "
+"waarderen"
+
+#. misc
+#: cmdline/apt.cc
+msgid "edit the source information file"
+msgstr "bewerk het bestand met informatie over de pakketbronnen"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Foute standaardinstelling!"
+
+#: dselect/install dselect/update
+msgid "Press [Enter] to continue."
+msgstr "Druk [Enter] om door te gaan."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Wilt u alle eerder opgehaalde '.deb'-bestanden verwijderen?"
+
+# Note to translators: The following four messages belong together. It doesn't
+# matter where sentences start, but it has to fit in just these four lines, and
+# at only 80 characters per line, if possible.
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr ""
+"Er zijn fouten opgetreden tijdens het uitpakken. Geïnstalleerde pakketten"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "worden geconfigureerd. Hierbij kunnen fouten meerdere malen optreden"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"of veroorzaakt worden door niet-voldane vereisten. Dit is O.K., enkel de "
+"fouten"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"boven dit bericht zijn belangrijk. U dient ze op te lossen en de opdracht "
+"[I]nstall opnieuw uit te voeren"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "De beschikbare informatie wordt samengevoegd"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Pakket-extensielijst is te lang"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Fout bij het verwerken van map %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Bron-extensielijst is te lang"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Fout bij het wegschrijven van de koptekst naar het inhoudsbestand"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Fout bij het verwerken van de inhoud van %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Gebruik: apt-ftparchive [opties] opdracht\n"
+"Opdrachten: packages <pad naar .deb's> [voorrangsbestand [padprefix]]\n"
+" sources <pad naar .dsc's> [voorrangsbestand [padprefix]]\n"
+" contents <pad>\n"
+" release <pad>\n"
+" generate config [groepen]\n"
+" clean config\n"
+"\n"
+"Met apt-ftparchive genereert index bestanden voor Debian archieven.\n"
+"Het ondersteunt verschillende aanmaakstijlen variërend van volledig \n"
+"automatisch tot een functionele vervanging van dpkg-scanpackages en \n"
+"dpkg-scansources\n"
+"\n"
+"apt-ftparchive genereert pakketbestanden van een boom met .debs.\n"
+"Het bestand Package bevat de inhoud van alle 'control'-velden van elk\n"
+"pakket alsook de MD5-hash en de bestandsgrootte. Via een voorrangsbestand\n"
+"kunnen de waardes van de 'Priority'- en 'Section'-velden afgedwongen\n"
+"worden.\n"
+"\n"
+"Op overeenkomstige wijze genereert apt-ftparchive de 'Sources'-bestanden\n"
+"van een boom met .dscs. De '--source-override'-optie kan gebruikt worden\n"
+"om een voorrangsbestand voor bronpakketten te specificeren.\n"
+"\n"
+"De 'packages' en 'sources' opdrachten dienen uitgevoerd te worden \n"
+"in de basismap van de boom. Het pad naar de .deb's dient te verwijzen\n"
+"naar het startpunt van de recursieve zoekopdracht en een voorrangsbestand\n"
+"dient de voorrangsvlaggen te bevatten. Padprefix wordt toegevoegd\n"
+"aan het 'filename'-veld indien dit aanwezig is. Een praktijkvoorbeeld\n"
+"uit het Debian-archief:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Opties:\n"
+" -h Deze hulptekst\n"
+" --md5 Beheer het aanmaken van de MD5\n"
+" -s=? Bronvoorrangsbestand\n"
+" -q Stille uitvoer\n"
+" -d=? Selecteert de optionele caching database\n"
+" --no-delink Schakelt de debug-modus voor delinking in\n"
+" --contents Beheer het aanmaken van het inhoudsbestand\n"
+" -c=? Lees dit configuratiebestand in\n"
+" -o=? Stel een willekeurige configuratie optie in"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Geen van de selecties kwam overeen"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Sommige bestanden zijn niet aanwezig in de pakketbestandsgroep '%s'"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "DB is beschadigd, bestand hernoemd naar %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "DB is verouderd, opwaardering van %s wordt geprobeerd"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"DB-formaat is ongeldig. Als u opgewaardeerd heeft van een oudere versie van "
+"apt, dient u de database te verwijderen en opnieuw aan te maken."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Kan het DB-bestand %s niet openen: %s"
+
+#: ftparchive/cachedb.cc
+msgid "Failed to read .dsc"
+msgstr "Lezen van .dsc is mislukt"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Archief heeft geen 'control'-record"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Kan geen cursor verkrijgen"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Geheugentoewijzing is mislukt"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Onbekend compressie-algoritme '%s'"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Gecomprimeerde uitvoer %s vereist dat een compressie ingesteld is"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Aanmaken van IPC-pijp naar subproces is mislukt"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Een nieuw proces beginnen (fork) is mislukt"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Comprimeer kind"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Interne fout, aanmaken van %s is mislukt"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "IO naar subproces/bestand is mislukt"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Lezen tijdens het berekenen van de MD5 is mislukt"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Kan %s niet openen"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Niet juist gevormde voorrangsvermelding %s op regel %llu (%s)"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Lezen van het voorrangsbestand %s is mislukt"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Niet juist gevormde voorrangsvermelding %s op regel %llu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Niet juist gevormde voorrangsvermelding %s op regel %llu #2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Niet juist gevormde voorrangsvermelding %s op regel %llu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "W: Kon map %s niet lezen\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "W: Kon de status van %s niet opvragen\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "F: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "W: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "F: Er zijn fouten van toepassing op het bestand "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Oplossen van %s is mislukt"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Doorlopen boomstructuur is mislukt"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Openen van %s is mislukt"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Koppelen van %s aan %s is mislukt"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " DeLink-limiet van %sB bereikt.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Archief heeft geen 'package'-veld"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s heeft geen voorrangsvermelding\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " %s beheerder is %s, niet %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s heeft geen voorrangsvermelding voor bronpakketten\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s heeft ook geen voorrangsvermelding voor binaire pakketten\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Wachten op de kopteksten"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "De HTTP-server verstuurde een ongeldige 'reply'-koptekst"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Foute koptekstregel"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "De HTTP-server verstuurde een ongeldige 'Content-Length'-koptekst"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "De HTTP-server verstuurde een ongeldige 'Content-Range'-koptekst"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "De bereik-ondersteuning van deze HTTP-server werkt niet"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Onbekend datumformaat"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Foute koptekstdata"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Verbinding mislukt"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+"%s automatisch uitgeschakeld wegens fout antwoord van server/proxy. (man 5 "
+"apt.conf)"
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Interne fout"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Kan de CD-databank %s niet lezen"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Om APT deze CD te laten herkennen kunt u best 'apt-cdrom' gebruiken. 'apt-"
+"get update' is niet in staat om nieuwe CD's toe te voegen"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Verkeerde CD"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr ""
+"Kan de CD in %s niet ontkoppelen. Mogelijk wordt die nog steeds gebruikt."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Schijf niet gevonden."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Bestand niet gevonden"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr "Een rechtstreekse verbinding met %s-domeinen is standaard geblokkeerd."
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Er wordt verbinding gemaakt met %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Kon de socket voor %s (f=%u t=%u p=%u) niet aanmaken"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Kan de verbinding met %s:%s (%s) niet aangaan."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Kon niet verbinden met %s:%s (%s); de verbinding verliep"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Mislukt"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Kon niet verbinden met %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Er wordt verbinding gemaakt met %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Kon '%s' niet vinden"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Tijdelijke fout bij het opzoeken van '%s'"
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Systeemfout bij het opzoeken van '%s:%s'"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Er gebeurde iets raars bij het opzoeken van '%s:%s' (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Kan geen verbinding maken met %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Kon status niet bepalen"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Ongeldige URI. Lokale URI's mogen niet beginnen met //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Bezig met aanmelden"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Kan de naam van de peer niet vaststellen"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Kan de lokale naam niet vaststellen"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "De verbinding is door de server geweigerd met bericht: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER (gebruiker) mislukt; bericht van de server: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS (wachtwoord) mislukt; bericht van de server: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Er was een proxy-server opgegeven, maar geen aanmeldscript. Acquire::ftp::"
+"ProxyLogin is leeg."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr ""
+"Opdracht '%s' uit het aanmeldscript is mislukt; bericht van de server: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE mislukt; bericht van de server: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "De verbinding is verlopen"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "De verbinding is verbroken door de server"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Een reactie deed de buffer overlopen."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Protocolfouten"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Kon geen socket aanmaken"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Kon de datasocket niet verbinden. De verbinding verliep"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Kon de passieve socket niet verbinden."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo kon geen luistersocket verkrijgen"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Kon geen socket binden"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Kon niet luisteren op de socket"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Kon de socketnaam niet vaststellen"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Kan PORT-commando niet verzenden"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Onbekende adresfamilie %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT is mislukt; bericht van de server: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Verbinding met de datasocket is verlopen"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Kan de verbinding niet aanvaarden"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Probleem bij het frommelen van het bestand"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Kan het bestand niet ophalen; bericht van de server: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Datasocket verliep"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Datatransfer is mislukt; bericht van de server: %s"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Zoekopdracht"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Mislukking bij aanroepen van "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+"Ondertekend bestand is ongeldig; kreeg '%s' (vereist het netwerk "
+"authenticatie?)"
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Er is tenminste één ongeldige ondertekening gevonden."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Interne fout: ondertekening is goed, maar kon de vingerafdruk van de sleutel "
+"niet bepalen?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Kon 'apt-key' niet uitvoeren om ondertekening te verifiëren (is gnupg "
+"geïnstalleerd?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Onbekende fout bij het uitvoeren van apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+"De ondertekening door sleutel %s maakt gebruik van een zwak hash-algoritme "
+"(%s)"
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "De volgende ondertekeningen waren ongeldig:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"De volgende ondertekeningen konden niet geverifieerd worden omdat de "
+"publieke sleutel niet beschikbaar is:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Fout bij het schrijven naar het bestand"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr ""
+"Fout bij het lezen van de server. De andere kant heeft de verbinding gesloten"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Fout bij het lezen van de server"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Fout bij het schrijven naar bestand"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Selectie is mislukt"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Verbinding verliep"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Fout bij het schrijven naar uitvoerbestand"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Geen spiegelbestand '%s' gevonden "
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Kan spiegelbestand '%s' niet lezen"
+
+#: methods/mirror.cc
+#, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Geen vermelding gevonden in spiegelbestand '%s'"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Spiegelserver: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Instellen van de aanpassingstijd is mislukt"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Verbinding werd voortijdig afgebroken"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "Lege bestanden kunnen geen geldige archieven zijn"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr ""
+#~ "Er zijn vereisten waaraan niet voldaan is. Probeer --fix-broken te "
+#~ "gebruiken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "U wilt waarschijnlijk 'apt --fix-broken install' uitvoeren om de volgende "
+#~ "zaken op te lossen:"
+
+#~ msgid "Failed to fetch %s %s\n"
+#~ msgstr "Ophalen van %s is mislukt %s\n"
+
+#~ msgid "(not found)"
+#~ msgstr "(niet gevonden)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Pakketpin: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr ""
+#~ "Er zijn geen publieke sleutels beschikbaar voor de volgende sleutel-"
+#~ "ID's:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "De pakketbron '%s' is niet ondertekend."
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "De vereiste %s van %s kan niet voldaan worden omdat %s niet toegestaan is "
+#~ "voor de pakketten van '%s'"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "De vereiste %s van %s kan niet voldaan worden omdat pakket %s onvindbaar "
+#~ "is"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Voldoen van vereiste %s van %s is mislukt: geïnstalleerd pakket %s is te "
+#~ "nieuw"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "De vereiste %s van %s kan niet voldaan worden omdat de beschikbare versie "
+#~ "van pakket %s niet aan de versievereisten voldoet"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "De vereiste %s van %s kan niet voldaan worden omdat er geen geschikte "
+#~ "versie is van pakket %s"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Voldoen van de vereiste %s van %s is mislukt: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Bouwvereisten voor %s konden niet voldaan worden."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Probleem bij het ontkoppelen van %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Ontkoppelen van %s is mislukt"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Gebruik: apt-cache [opties] opdracht\n"
+#~ " apt-cache [opties] show pakket1 [pakket2 ...]\n"
+#~ "\n"
+#~ "apt-cache is een basaal hulpmiddel waarmee u informatie kunt\n"
+#~ "opvragen uit de binaire cachebestanden van APT\n"
+
+#~ msgid "Commands:"
+#~ msgstr "Opdrachten:"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Opties:\n"
+#~ " -h Deze hulptekst.\n"
+#~ " -p=? De pakketcache.\n"
+#~ " -s=? De broncache.\n"
+#~ " -q Voortgangsindicator uitschakelen.\n"
+#~ " -i Toon alleen belangrijke vereisten voor de 'unmet'-opdracht.\n"
+#~ " -c=? Lees dit configuratiebestand\n"
+#~ " -o=? Stel een willekeurige optie in, b.v. -o dir::cache=/tmp\n"
+#~ "Raadpleeg de man-pagina's van apt-cache(8) en apt.conf(5) voor meer "
+#~ "informatie.\n"
+
+#~ msgid ""
+#~ "Usage: apt [options] command\n"
+#~ "\n"
+#~ "CLI for apt.\n"
+#~ msgstr ""
+#~ "Gebruik: apt [opties] opdracht\n"
+#~ "\n"
+#~ "CLI voor apt.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "Opties:\n"
+#~ " -h Deze hulptekst\n"
+#~ " -q Logbare uitvoer - geen voortgangsindicator\n"
+#~ " -qq Geen uitvoer behalve van foutmeldingen\n"
+#~ " -s Doe-niets. Toont alleen wat gedaan zou worden.\n"
+#~ " -f lees/schrijf auto/manueel markeringen in het vermelde bestand\n"
+#~ " -c=? Lees dit configuratiebestand\n"
+#~ " -o=? Stel een willekeurige optie in, b.v. -o dir::cache=/tmp\n"
+#~ "Raadpleeg de man-pagina's apt-mark(8) en apt.conf(5) voor meer informatie."
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Opties:\n"
+#~ " -h Deze hulptekst.\n"
+#~ " -c=? Lees dit configuratiebestand\n"
+#~ " -o=? Stel een willekeurige optie in, b.v. -o dir::cache=/tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "Opties:\n"
+#~ " -h Deze hulptekst\n"
+#~ " -q Logbare uitvoer - geen voortgangsindicator\n"
+#~ " -qq Geen uitvoer behalve van foutmeldingen\n"
+#~ " -s Doe-niets. Toont alleen wat gedaan zou worden.\n"
+#~ " -f lees/schrijf auto/manueel markeringen in het vermelde bestand\n"
+#~ " -c=? Lees dit configuratiebestand\n"
+#~ " -o=? Stel een willekeurige optie in, b.v. -o dir::cache=/tmp\n"
+#~ "Raadpleeg de man-pagina's apt-mark(8) en apt.conf(5) voor meer informatie."
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Gebruik: apt-sortpkgs [opties] bestand1 [bestand2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is een simpel hulpmiddel om pakketbestanden te sorteren.\n"
+#~ "De -s optie wordt gebruikt om aan te geven om welk soort bestand het "
+#~ "gaat.\n"
+#~ "\n"
+#~ "Opties:\n"
+#~ " -h Deze hulptekst\n"
+#~ " -s Sorteer bronbestanden\n"
+#~ " -c=? Lees dit configuratiebestand\n"
+#~ " -o=? Stel een willekeurige optie in, b.v. -o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Dochterproces is mislukt"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "U dient minstens 1 paar van url/bestandsnaam op te geven"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Aanmaken van pijpen is mislukt"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Uitvoeren van gzip is mislukt "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s voor %s gecompileerd op %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Aanmaken van FILE* is mislukt"
+
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Niet juist gevormd element %lu in bronlijst %s (URI-verwerking)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "Niet juist gevormde regel %lu in bronlijst %s ([optie] onbegrijpelijk)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "Niet juist gevormde regel %lu in bronlijst %s ([optie] te kort)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr ""
+#~ "Niet juist gevormde regel %lu in bronlijst %s ([%s] is geen toekenning)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr ""
+#~ "Niet juist gevormde regel %lu in bronlijst %s ([%s] heeft geen sleutel)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "Niet juist gevormde regel %lu in bronlijst %s ([%s] sleutel %s heeft geen "
+#~ "waarde)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Niet juist gevormde regel %lu in bronlijst %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Niet juist gevormde regel %lu in bronlijst %s (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Niet juist gevormde regel %lu in bronlijst %s (URI-verwerking)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "Niet juist gevormde regel %lu in bronlijst %s (absolute dist)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "Niet juist gevormde regel %lu in bronlijst %s (ontleding van dist)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr ""
+#~ "Pakket %s %s werd niet gevonden bij het verwerken van de "
+#~ "bestandsafhankelijkheden"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Kon de status van de bronpakketlijst %s niet opvragen"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Voorziene bestanden worden verzameld"
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Kon de hash-som voor '%s' niet vinden in het Release-bestand"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Leveranciersblok %s bevat geen vingerafdruk"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Totale hoeveelheid vereisten-versieruimte: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "U heeft niet voldoende vrije schijfruimte op %s"
+
+#~ msgid "Done"
+#~ msgstr "Klaar"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Geen sleutelring geïnstalleerd in %s."
+
+#~ msgid "Is stdout a terminal?"
+#~ msgstr "Is stdout een terminal?"
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Interne fout, AllUpgrade heeft dingen stukgemaakt"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s is geen geldig DEB-pakket."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Er wordt gebruik gemaakt van CD-aankoppelpunt %s\n"
+#~ "CD wordt aangekoppeld\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Kon %s niet patchen met mmap of met een bestandsoperatie - de patch lijkt "
+#~ "beschadigd te zijn."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Kon %s niet patchen met mmap (maar zonder mmap-specifieke fout) - de "
+#~ "patch lijkt beschadigd te zijn."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr "Negeer niet beschikbare doelrelease '%s' van pakket '%s'"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Dit is geen geldig DEB-archief, het bevat geen '%s', '%s', of '%s' "
+#~ "onderdeel"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5-som komt niet overeen"
+
+#, fuzzy
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Er kon geen bestand gevonden worden voor pakket %s. Dit kan betekenen dat "
+#~ "u dit pakket handmatig moet repareren."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Kon logbestand niet wegschrijven, openpty() is mislukt (/dev/pts niet "
+#~ "aangekoppeld?)\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Niet-bestaand bestand %s wordt overgeslagen"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Verwijderen van %s is mislukt"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Kan %s niet aanmaken"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Opvragen van de status van %sinfo is mislukt"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr ""
+#~ "De 'info'- en de 'temp'-mappen dienen op hetzelfde bestandsysteem te staan"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Verspringen naar de beheermap %sinfo is mislukt"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Interne fout bij het ophalen van de pakketnaam"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Bestandslijst worden ingelezen"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Openen van het lijstbestand '%sinfo/%s' is mislukt. Als u dit bestand "
+#~ "niet kunt herstellen, dient u het leeg te maken en daarna onmiddellijk "
+#~ "dezelfde versie van het pakket te installeren!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Lezen van lijstbestand %sinfo/%s is mislukt"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Interne fout bij het verkrijgen van een knoop"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Openen van het omleidingsbestand %sdiversions is mislukt"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Het pakketcachebestand is beschadigd"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Ongeldige regel in het omleidingsbestand: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Interne fout bij het toevoegen van een omleiding"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "De pakketcache dient eerst geïnitialiseerd te zijn"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Vinden van een 'Package:'-koptekst is mislukt, regel %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Foute 'ConfFile'-sectie in het statusbestand. Regel %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Fout bij het parsen van de MD5. regel %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Kon niet wijzigen naar %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Lokaliseren van een geldig 'control'-bestand is mislukt"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Kon geen pijp openen voor %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Leesfout door proces %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Enkele koptekstregel ontvangen met meer dan %u karakters"
+
+#~ msgid "Note: This is done automatic and on purpose by dpkg."
+#~ msgstr "Let op: Dit wordt automatische en bewust door dpkg gedaan."
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Misvormde voorrangsingang %s op regel %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Misvormde voorrangsingang %s op regel %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Misvormde voorrangsingang %s op regel %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "decompressor"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "lees, de laatste te lezen %lu zijn niet beschikbaar"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "schrijf, de laatste %lu konden niet weggeschreven worden"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "Kon onmiddelijke configuratie van reeds uitgepakte '%s' niet uitvoeren. "
+#~ "Voor details zie 'man 5 apt.conf', onder APT::Immediate-Configure."
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Fout tijdens verwerken van %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Fout tijdens verwerken van %s (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Fout tijdens verwerken van %s (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Fout tijdens verwerken van %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Fout tijdens verwerken van %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Fout tijdens verwerken van %s (NewVersion%d)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Fout tijdens verwerken van %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Fout tijdens verwerken van %s (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Fout tijdens verwerken van %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Fout tijdens verwerken van %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Interne fout, kon onderdeel niet vinden"
+
+#~ msgid "Internal error, group '%s' has no installable pseudo package"
+#~ msgstr "Interne fout, de groep '%s' heeft geen installeerbaar pseudopakket"
+
+#~ msgid "Release file expired, ignoring %s (invalid since %s)"
+#~ msgstr "Release-bestand is verlopen, %s (ongeldig sinds %s) wordt genegeerd"
diff --git a/po/nn.po b/po/nn.po
new file mode 100644
index 000000000..d9c0d877f
--- /dev/null
+++ b/po/nn.po
@@ -0,0 +1,4195 @@
+# translation of apt_nn.po to Norwegian nynorsk
+# translation of apt.po to Norwegian nynorsk
+# translation of nn.po to Norwegian Nynorsk
+# translation of apt.po to Norwegian Nynorsk
+# Gaute Hvoslef Kvalnes <gaute@verdsveven.com>, 2003.
+# Havard Korsvoll <korsvoll@skulelinux.no>, 2004, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2005-02-14 23:30+0100\n"
+"Last-Translator: Havard Korsvoll <korsvoll@skulelinux.no>\n"
+"Language-Team: Norwegian nynorsk <i18n-nn@lister.ping.uio.no>\n"
+"Language: nn\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Ugyldig arkivsignatur"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Feil ved lesing av arkivmedlemshovud"
+
+#: apt-inst/contrib/arfile.cc
+#, fuzzy, c-format
+msgid "Invalid archive member header %s"
+msgstr "Ugyldig arkivmedlemshovud"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Ugyldig arkivmedlemshovud"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Arkivet er for kort"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Klarte ikkje lesa arkivhovuda"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Fann ikkje pakken %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Øydelagt arkiv"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Tar-sjekksummen mislukkast, arkivet er øydelagt"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Ukjend TAR-hovud type %u, medlem %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Dette er ikkje eit gyldig DEB-arkiv, manglar «%s»-medlemmen"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Intern feil, fann ikkje medlemmen %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Kontrollfila kan ikkje tolkast"
+
+#: apt-inst/dirstream.cc
+#, fuzzy, c-format
+msgid "Failed to write file %s"
+msgstr "Klarte ikkje skriva fila %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Klarte ikkje lukka fila %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Stigen %s er for lang"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Pakkar ut %s meir enn éin gong"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "Katalogen %s er avleidd"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Pakken prøver å skriva til avleiingsmålet %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Avleiingsstigen er for lang"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Klarte ikkje få status til %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Klarte ikkje endra namnet på %s til %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "Katalogen %s vert bytt ut med ein ikkje-katalog"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Fann ikkje noden i nøkkelbøtta"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Stigen er for lang"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Skriv over pakketreff utan versjon for %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Fila %s/%s skriv over den tilsvarande fila i pakken %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Klarte ikkje lesa %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Klarte ikkje få status til %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode vart kalla på ein node som framleis er lenkja"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Fann ikkje nøkkelelementet."
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Klarte ikkje tildela avleiing"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Intern feil i AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Prøver å skriva over ei avleiing, %s -> %s og %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Dobbel tilleggjing av avleiing %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Dobbel oppsettsfil %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Katalogen %s er avleidd"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Katalogen %s er avleidd"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Katalogen %s er avleidd"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Katalogen %s er avleidd"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "Katalogen %s er avleidd"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Klarte ikkje lesa lenkja %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Hash Sum mismatch"
+msgstr "Feil MD5-sum"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "endring av namn mislukkast, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Feil storleik"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "Ugyldig operasjon %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Skrivefeil"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Fann ikkje fila for pakken %s. Det kan henda du må fiksa denne pakken sjølv "
+"(fordi arkitekturen manglar)."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"Pakkeindeksfilene er øydelagde. Feltet «Filename:» manglar for pakken %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Koplar til %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Finn ikkje metodedrivaren %s."
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Metoden %s starta ikkje rett"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+"Skifte av medum: Set inn plata merkt\n"
+" «%s»\n"
+"i stasjonen «%s» og trykk Enter.\n"
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "List directory %spartial is missing."
+msgstr "Listekatalogen %spartial manglar."
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Arkivkatalogen %spartial manglar."
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Unable to lock directory %s"
+msgstr "Klarte ikkje låsa listekatalogen"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "Indeksfiltypen «%s» er ikkje støtta"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Klarte ikkje byta til %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Les filliste"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr "Pakken %s må installerast på nytt, men arkivet finst ikkje."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Feil, «pkgProblemResolver::Resolve» har laga brot. Dette kan skuldast pakkar "
+"som er haldne tilbake."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr ""
+"Klarte ikkje retta opp problema. Nokre øydelagde pakkar er haldne tilbake."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "Klarte ikkje tolka eller opna pakkelista eller tilstandsfila."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr ""
+"Du vil kanskje prøva å retta på desse problema ved å køyra «apt-get update»."
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Kjeldelista kan ikkje lesast."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Regex-kompileringsfeil - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Fann ikkje utgåva «%s» av «%s»"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Fann ikkje versjonen «%s» av «%s»"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Fann ikkje pakken %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Fann ikkje pakken %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Fann ikkje pakken %s"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Finn ikkje pakken %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Linja %u i kjeldelista %s er for lang."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Avmonterer CD-ROM ...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Brukar monteringspunktet %s for CD-ROM\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Ventar på disk ...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Monterer CD-ROM ...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Identifiserer ... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Lagra etikett: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Leitar etter indeksfiler på disken ...\n"
+
+#: apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr "Fann %i pakkeindeksar, %i kjeldeindeksar og %i signaturar\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "Found label '%s'\n"
+msgstr "Lagra etikett: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Det er ikkje eit gyldig namn, prøv igjen.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Disken vert kalla: \n"
+"«%s»\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Kopierer pakkelister ..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Skriv ny kjeldeliste\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Kjeldelisteoppføringar for denne disken er:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Klarte ikkje få status på %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Klarte ikkje få status til monteringspunktet %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Klarte ikkje få status til CD-ROM"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Kjenner ikkje kommandolinjevalet «%c» (frå %s)."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Skjønar ikkje kommandolinjevalet %s"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Kommandolinjevalet %s er ikkje boolsk"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Valet %s krev eit argument."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "Val %s: Spesifikasjonen av oppsettselementet må ha ein =<verdi>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Valet %s må ha eit heiltalsargument, ikkje «%s»"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Valet «%s» er for langt"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "Skjønar ikkje %s. Prøv «true» eller «false»."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Ugyldig operasjon %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Ukjend typeforkorting: «%c»"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Opnar oppsettsfila %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Syntaksfeil %s:%u: Blokka startar utan namn."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Syntaksfeil %s:%u: Misforma tagg"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Syntaksfeil %s:%u: Ekstra rot etter verdien"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "Syntaksfeil %s:%u: Direktiva kan berre liggja i det øvste nivået"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Syntaksfeil %s:%u: For mange nøsta inkluderte filer"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Syntaksfeil %s:%u: Inkludert herifrå"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Syntaksfeil %s:%u: Direktivet «%s» er ikkje støtta"
+
+#: apt-pkg/contrib/configuration.cc
+#, fuzzy, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr "Syntaksfeil %s:%u: Direktiva kan berre liggja i det øvste nivået"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Syntaksfeil %s:%u: Ekstra rot til slutt i fila"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Problem ved oppheving av lenkje til fila"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Brukar ikkje låsing for den skrivebeskytta låsefila %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Klarte ikkje opna låsefila %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Brukar ikkje låsing for den nfs-monterte låsefila %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Klarte ikkje låsa %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Venta på %s, men den fanst ikkje"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Underprosessen %s mottok ein segmenteringsfeil."
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Underprosessen %s mottok ein segmenteringsfeil."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Underprosessen %s returnerte ein feilkode (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Underprosessen %s avslutta uventa"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Lesefeil"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Skrivefeil"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Problem ved låsing av fila"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Klarte ikkje oppretta underprosessen IPC"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Klarte ikkje køyra komprimeringa "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Klarte ikkje opna fila %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Klarte ikkje opna røyr for %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "lese, har framleis %lu att å lesa, men ingen att"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "skrive, har framleis %lu att å skrive, men klarte ikkje"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the file %s"
+msgstr "Problem ved låsing av fila"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Problem ved synkronisering av fila"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Problem ved synkronisering av fila"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Klarte ikkje få status til %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Klarte ikkje skriva til %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Kan ikkje utføra mmap på ei tom fil"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Klarte ikkje laga mmap av %lu byte"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Klarte ikkje opna røyr for %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to close mmap"
+msgstr "Klarte ikkje opna %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to synchronize mmap"
+msgstr "Klarte ikkje starta "
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Klarte ikkje laga mmap av %lu byte"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Failed to truncate file"
+msgstr "Klarte ikkje skriva fila %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s ... Feil"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s ... Ferdig"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s ... Ferdig"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Fann ikkje utvalet %s"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Klarte ikkje tolka pakkefila %s (1)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "No sections in Release file %s"
+msgstr "Merk, vel %s i staden for %s\n"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Ugyldig linje i avleiingsfila: %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Klarte ikkje tolka pakkefila %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, fuzzy, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Klarte ikkje låsa listekatalogen"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr ""
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Installing %s"
+msgstr " Installert: "
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Configuring %s"
+msgstr "Koplar til %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Removing %s"
+msgstr "Opnar %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removing %s"
+msgstr "Klarte ikkje fjerna %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Installed %s"
+msgstr " Installert: "
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Directory '%s' missing"
+msgstr "Listekatalogen %spartial manglar."
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, fuzzy, c-format
+msgid "Could not open file '%s'"
+msgstr "Klarte ikkje opna fila %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Preparing %s"
+msgstr "Opnar %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Unpacking %s"
+msgstr "Opnar %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Preparing to configure %s"
+msgstr "Opnar oppsettsfila %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Removed %s"
+msgstr "Tilrådingar"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Opnar oppsettsfila %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removed %s"
+msgstr "Klarte ikkje fjerna %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "Klarte ikkje skriva til %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Byggjer kravtre"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Kandidatversjonar"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Genererer kravforhold"
+
+#: apt-pkg/depcache.cc
+#, fuzzy
+msgid "Reading state information"
+msgstr "Flettar informasjon om tilgjengelege pakkar"
+
+#: apt-pkg/depcache.cc
+#, fuzzy, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Klarte ikkje opna %s"
+
+#: apt-pkg/depcache.cc
+#, fuzzy, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Klarte ikkje skriva fila %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "Skreiv %i postar.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "Skreiv %i postar med %i manglande filer.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "Skreiv %i postar med %i filer som ikkje passa\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "Skreiv %i postar med %i manglande filer og %i filer som ikkje passa\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, fuzzy, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Feil MD5-sum"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Pakkesystemet «%s» er ikkje støtta"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Klarte ikkje avgjera ein eigna pakkesystemtype"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "Klarte ikkje opna fila %s"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Denne installasjonen vil verta nøydd til å mellombels fjerna den nødvendige "
+"pakken %s på grunn av ei konflikt/forkrav-løkkje. Dette er ofte uheldig, men "
+"om du verkeleg vil gjera det, kan du bruka innstillinga «APT::Force-"
+"LoopBreak»."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Tomt pakkelager"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Pakkelagerfila er øydelagd"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Versjonen til pakkelagerfila er ikkje kompatibel"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "APT støttar ikkje versjonssystemet «%s»"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Pakkelageret er bygd for ein annan arkitektur"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Pakkelagerfila er øydelagd"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Krav"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Forkrav"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Forslag"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Konflikt"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Tilrådingar"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Byter ut"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Foreldar"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "viktig"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "påkravd"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "vanleg"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "tillegg"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "valfri"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Mellomlageret brukar eit inkompatibelt versjonssystem"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Feil ved behandling av %s (FindPkg)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "Jøss, du har overgått talet på pakkenamn som APT kan handtera."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Jøss, du har overgått talet på versjonar som APT kan handtera."
+
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Jøss, du har overgått talet på versjonar som APT kan handtera."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "Jøss, du har overgått talet på krav som APT kan handtera."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Les pakkelister"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "IU-feil ved lagring av kjeldelager"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Indeksfiltypen «%s» er ikkje støtta"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, fuzzy, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Ugyldig oppslag i innstillingsfila, manglar pakkehovud"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Skjønar ikkje spikringstypen %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Ingen prioritet (eller null) oppgitt for spiker"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Misforma overstyring %s linje %lu #1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Opnar %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Misforma linje %u i kjeldelista %s (type)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Typen «%s» er ukjend i linja %u i kjeldelista %s"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Misforma linje %u i kjeldelista %s (type)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Typen «%s» er ukjend i linja %u i kjeldelista %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Du må leggja nokre kjelde-URI-ar i fila sources.list."
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Klarte ikkje henta %s %s"
+
+#: apt-pkg/update.cc
+#, fuzzy
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Klarte ikkje lasta ned nokre av indeksfilene. Dei er ignorerte, eller gamle "
+"filer er brukte i staden."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Reknar ut oppgradering"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Treff:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Hent:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Ign:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Feil:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Henta %sB på %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Arbeider]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Skifte av medum: Set inn plata merkt\n"
+" «%s»\n"
+"i stasjonen «%s» og trykk Enter.\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Rettar på krav ..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " mislukkast."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Klarte ikkje retta på krav"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Klarte ikkje minimera oppgraderingsmengda"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Ferdig"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+"Du vil kanskje prøva å retta på desse ved å køyra «apt --fix-broken install»."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Nokre krav er ikkje oppfylte. Du kan prøva «apt --fix-broken install» (eller "
+"velja ei løysing)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Merk, vel %s i staden for regex «%s»\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Merk, vel %s i staden for regex «%s»\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Merk, vel %s i staden for regex «%s»\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Pakken %s er ein virtuell pakke, tilbydd av:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [Installert]"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Not candidate version]"
+msgstr "Kandidatversjonar"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Du må velja ein som skal installerast."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Det finst ingen tilgjengeleg versjon av pakken %s, men han er nemnt\n"
+"av ein annan pakke. Dette tyder at pakket manglar, er gjort overflødig\n"
+"eller er berre tilgjengeleg frå ei anna kjelde\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Dei følgjande pakkane kan brukast i staden:"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Det finst ingen installasjonskandidat for pakken %s"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr ""
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "Pakken %s er ikkje installert, og vert difor ikkje fjerna\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Pakken %s er ikkje installert, og vert difor ikkje fjerna\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Merk, vel %s i staden for %s\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "APT har superku-krefter."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Fann ingen pakkar"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "ÅTVARING: Klarer ikkje autentisere desse pakkane."
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr ""
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Nokre pakkar kunne ikkje bli autentisert"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Installer desse pakkane utan verifikasjon?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Det oppstod problem, og «-y» vart brukt utan «--force-yes»"
+
+#: apt-private/private-download.cc
+#, fuzzy, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Du har ikkje nok ledig plass i %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Du har ikkje nok ledig plass i %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Klarte ikkje låsa nedlastingskatalogen"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Nokre av pakkane kunne ikkje installerast. Dette kan koma av at du har\n"
+"valt ein umogleg situasjon. Dersom du brukar den ustabile utgåva av\n"
+"distribusjonen, kan det òg henda at nokre av pakkane som trengst ikkje\n"
+"er laga enno eller at dei framleis ligg i «Incoming»."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Følgjande informasjon kan hjelpa med å løysa situasjonen:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Øydelagde pakkar"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Klarte ikkje henta nokre av arkiva. Du kan prøva med «apt-get update» eller "
+"«--fix-missing»."
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Nokre pakkar må fjernast, men fjerning er slått av."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Det oppstod problem, og «-y» vart brukt utan «--force-yes»"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Det oppstod problem, og «-y» vart brukt utan «--force-yes»"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Internal error, Ordering didn't finish"
+msgstr "Intern feil ved tilleggjing av avleiing"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Må henta %sB/%sB med arkiv.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Må henta %sB med arkiv.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "Etter utpakking vil %sB meir diskplass verta brukt.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Etter utpakking vil %sB meir diskplass verta frigjort.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr ""
+"«Trivial Only» var spesifisert, men dette er ikkje noka triviell handling."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Ja, gjer som eg seier!"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Du er i ferd med å utføra ei handling som kan vera skadeleg.\n"
+"For å halda fram, må du skriva nøyaktig «%s».\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Avbryt."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Vil du halda fram?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Klarte ikkje henta nokre av filene"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Nedlastinga er ferdig i nedlastingsmodus"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "«--fix-missing» og byte av medium er ikkje støtta for tida"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Klarte ikkje retta opp manglande pakkar."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Avbryt installasjon."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Intern feil. AllUpgrade øydelagde noko"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "Dei følgjande NYE pakkane vil verta installerte:"
+msgstr[1] "Dei følgjande NYE pakkane vil verta installerte:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "Dei følgjande NYE pakkane vil verta installerte:"
+msgstr[1] "Dei følgjande NYE pakkane vil verta installerte:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Dei følgjande tilleggspakkane vil verta installerte:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Føreslåtte pakkar:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Tilrådde pakkar"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+"Hoppar over %s, for den er installert frå før og ikkje sett til "
+"oppgradering.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"Hoppar over %s, for den er installert frå før og ikkje sett til "
+"oppgradering.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "%s kan ikkje installerast på nytt, for pakken kan ikkje lastast ned.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "Den nyaste versjonen av %s er installert frå før.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to manually installed.\n"
+msgstr "men %s skal installerast"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Vald versjon %s (%s) for %s\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Vald versjon %s (%s) for %s\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Installert]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [Installert]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [Installert]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [Installert]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "men %s er installert"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "men %s skal installerast"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "men lèt seg ikkje installera"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "men er ein virtuell pakke"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "men skal ikkje installerast"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "men er ikkje installert"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " eller"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Følgjande pakkar har krav som ikkje er oppfylte:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Dei følgjande NYE pakkane vil verta installerte:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Dei følgjande pakkane vil verta FJERNA:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Dei følgjande pakkane er haldne tilbake:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Dei følgjande pakkane vil verta oppgraderte:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Dei følgjande pakkane vil verta NEDGRADERTE:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Dei følgjande pakkane som er haldne tilbake vil verta endra:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (fordi %s)"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"ÅTVARING: Dei følgjande nødvendige pakkane vil verta fjerna.\n"
+"Dette bør IKKJE gjerast utan at du er fullstendig klar over kva du gjer!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu oppgraderte, %lu nyleg installerte, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu installerte på nytt, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu nedgraderte, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu skal fjernast og %lu skal ikkje oppgraderast.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu ikkje fullstendig installerte eller fjerna.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[J/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[j/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "J"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+#, fuzzy
+msgid "You must give at least one search pattern"
+msgstr "Du må oppgi nøyaktig eitt mnster"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Pakkefila %s er ute av takt."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Pakkefiler:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "Mellomlageret er ute av takt, kan ikkje x-referera ei pakkefil"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Spikra pakkar:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Installert: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Kandidat: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(ingen)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Versjonstabell:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Fann ikkje pakken %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Fann ikkje pakken %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Fann ikkje pakken %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Klarte ikkje få status på kjeldepakkelista %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Du må velja minst éin pakke som kjeldekoden skal hentast for"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Finn ingen kjeldepakke for %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Hoppar over utpakking av kjeldekode som er utpakka frå før i %s\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Må henta %sB/%sB med kjeldekodearkiv.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Må henta %sB med kjeldekodearkiv.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Hent kjeldekode %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Klarte ikkje henta nokre av arkiva."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Hoppar over utpakking av kjeldekode som er utpakka frå før i %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Utpakkingskommandoen «%s» mislukkast.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Byggjekommandoen «%s» mislukkast.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Klarte ikkje henta byggjekrav for %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s har ingen byggjekrav.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr "Du må velja minst ein pakke som byggjekrava skal sjekkast for"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Klarte ikkje behandla byggjekrava"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Klarte ikkje behandla byggjekrava"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Klarte ikkje endra namnet på %s til %s"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Pakken %s versjon %s har eit krav som ikkje er oppfylt:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Oppdateringskommandoen tek ingen argument"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "Oppdateringskommandoen tek ingen argument"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Tal på pakkenamn: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total package structures: "
+msgstr "Tal på pakkenamn: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Vanlege pakkar: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Reine virtuelle pakkar: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Enkle virtuelle pakkar: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Samansette virtuelle pakkar: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Manglar: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Tal på einskildversjonar: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total distinct descriptions: "
+msgstr "Tal på einskildversjonar: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Tal på krav: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Tal på ver./fil-forhold: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total Desc/File relations: "
+msgstr "Tal på ver./fil-forhold: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Tal på tilbyr-forhold: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Tal på strengar med jokerteikn: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Slingringsmon: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Brukt plass i alt: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Vis data om kjeldekoden."
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Søk gjennom pakkelista etter eit regulært uttrykk."
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Vis rå informasjon om krava til ein pakke."
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Vis baklengs kravinformasjon for ein pakke"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Vis ei oversikt over pakken."
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Vis ei liste over alle pakkenamn."
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Vis regelinnstillingar."
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr ""
+"Skifte av medum: Set inn plata merkt\n"
+" «%s»\n"
+"i stasjonen «%s» og trykk Enter.\n"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Klarte ikkje endra namnet på %s til %s"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Ikkje parvise argument"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Bruk: apt-config [val] kommando\n"
+"\n"
+"apt-config er eit enkelt verktøy for å lesa oppsettsfila til APT.\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Bruk: apt-extracttemplates fil1 [fil2 ...]\n"
+"\n"
+"apt-extracttemplates er eit verktøy for å henta ut informasjon om\n"
+"oppsett og malar frå Debian-pakkar.\n"
+"\n"
+"Val:\n"
+" -h Vis denne hjelpeteksten\n"
+" -t Vel mellombels katalog\n"
+" -c=? Les denne innstillingsfila.\n"
+" -o=? Set ei vilkårleg innstilling, t.d. «-o dir::cache=/tmp».\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Finn ikkje debconf-versjonen. Er debconf installert?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Fann ikkje pakken %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "men %s skal installerast"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Intern feil. AllUpgrade øydelagde noko"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Støtta modular:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Bruk: apt-get [val] kommando\n"
+" apt-get [val] install|remove pakke1 [pakke2 ...]\n"
+" apt-get [val] source pakke1 [pakke2 ...]\n"
+"\n"
+"apt-get er eit enkelt grensesnitt til bruk frå kommandolinja for å lasta\n"
+"ned og installera pakkar. Dei vanlegaste kommandoane er «update» og\n"
+"«install».\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Hent nye pakkelister."
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Utfør ei oppgradering."
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Installer nye pakkar (bruk pakkenamn, ikkje filnamn (foo.deb))."
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Fjern pakkar."
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr ""
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+#, fuzzy
+msgid "Remove automatically all unused packages"
+msgstr "men %s skal installerast"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Oppgrader distribusjonen, les apt-get(8)."
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Følg råda frå «dselect»."
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Oppfyll byggjekrava for kjeldepakkar."
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Slett nedlasta arkivfiler."
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Slett gamle, nedlasta arkivfiler."
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Stadfest at det ikkje finst krav som ikkje er oppfylte."
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Last ned kjeldekode frå arkiva."
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "Du må velja minst éin pakke som kjeldekoden skal hentast for"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Bruk: apt-extracttemplates fil1 [fil2 ...]\n"
+"\n"
+"apt-extracttemplates er eit verktøy for å henta ut informasjon om\n"
+"oppsett og malar frå Debian-pakkar.\n"
+"\n"
+"Val:\n"
+" -h Vis denne hjelpeteksten\n"
+" -t Vel mellombels katalog\n"
+" -c=? Les denne innstillingsfila.\n"
+" -o=? Set ei vilkårleg innstilling, t.d. «-o dir::cache=/tmp».\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Bruk: apt-extracttemplates fil1 [fil2 ...]\n"
+"\n"
+"apt-extracttemplates er eit verktøy for å henta ut informasjon om\n"
+"oppsett og malar frå Debian-pakkar.\n"
+"\n"
+"Val:\n"
+" -h Vis denne hjelpeteksten\n"
+" -t Vel mellombels katalog\n"
+" -c=? Les denne innstillingsfila.\n"
+" -o=? Set ei vilkårleg innstilling, t.d. «-o dir::cache=/tmp».\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "men er ikkje installert"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "men %s skal installerast"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "men %s skal installerast"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "Den nyaste versjonen av %s er installert frå før.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "Den nyaste versjonen av %s er installert frå før.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "men %s skal installerast"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Klarte ikkje opna %s"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "men %s skal installerast"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "Dei følgjande NYE pakkane vil verta installerte:"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "men %s skal installerast"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "men %s skal installerast"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Ukjend pakkeoppslag"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "Les pakkelister"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "Spikra pakkar:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Øydelagde pakkar"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "men %s skal installerast"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "Flettar informasjon om tilgjengelege pakkar"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Dårleg standardinnstilling"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Trykk Enter for å halda fram."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr ""
+
+#: dselect/install
+#, fuzzy
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "Nokre feil oppstod ved utpakking. Dei installerte pakkane vert no"
+
+#: dselect/install
+#, fuzzy
+msgid "will be configured. This may result in duplicate errors"
+msgstr "sette opp. Dette kan føra til følgjefeil eller feil på grunn av"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "krav som ikkje er oppfylte. Det gjer ikkje noko, berre feila ovanfor"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr "er viktige. Rett opp dei feila og [i]nstaller på nytt."
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Flettar informasjon om tilgjengelege pakkar"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Lista over pakkeutvidingar er for lang"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Feil ved lesing av katalogen %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Lista over kjeldeutvidingar er for lang"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Feil ved skriving av topptekst til innhaldsfila"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Feil ved lesing av %s"
+
+#: ftparchive/apt-ftparchive.cc
+#, fuzzy
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Bruk: apt-ftparchive [val] kommando\n"
+"Kommandoar: packages binærstig [overstyringsfil [stigprefiks]]\n"
+" sources kjeldesti [overstyringsfil [stiprefiks]]\n"
+" contents sti\n"
+" generate config [grupper]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive opprettar indeksfiler for Debian-arkiv. Mange ulike\n"
+"måtar kan brukast, frå heilautomatiske til funksjonelle erstattingar\n"
+"for dpkg-scanpackages og dpkg-scansources.\n"
+"\n"
+"apt-ftparchive opprettar Package-filer frå eit tre med .debs-filer.\n"
+"Package-fila inneheld alle kontrollfelta frå kvar pakke i tillegg til\n"
+"MD5-nøkkel og filstorleik. Du kan bruka ei overstyringsfil for å tvinga\n"
+"gjennom verdiar for prioritet og kategori.\n"
+"\n"
+"apt-ftparchive kan på same måten oppretta Sources-filer frå eit tre\n"
+"med .dscs-filer. Du kan bruka ei overstyringsfil med --source-override.\n"
+"\n"
+"Kommandoane «packages» og «sources» skal køyrast i rota av katalogtreet.\n"
+"Binærstien skal peika til toppkatalogen i det rekursive søket, og\n"
+"overstyringsfila skal innehalda innstillingar for overstyring.\n"
+"Stiprefikset vert lagt til filnamnfelta dersom det er oppgjeve. Her er\n"
+"eit døme på bruk i Debian-arkivet:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Val:\n"
+" -h Vis denne hjelpeteksten.\n"
+" --md5 Styrer MD5-genereringa.\n"
+" -s=? Overstyringsfil for kjeldekode.\n"
+" -q Stille.\n"
+" -d=? Vel ein anna mellomlagerdatabase.\n"
+" --no-delink Bruk avlusingsmodus med delinking.\n"
+" --contents Styrer opprettinga av innhaldsfila.\n"
+" -c=? Les denne oppsettsfila.\n"
+" -o=? Set ei vilkårleg innstilling."
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Ingen utval passa"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Enkelte filer manglar i pakkefilgruppa %s"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "Databasen er øydelagd. Filnamnet er endra til %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "DB er for gammal, forsøkjer å oppgradere %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Klarte ikkje opna DB-fila %s: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Klarte ikkje lesa lenkja %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Arkivet har ingen kontrollpost"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Klarte ikkje få peikar"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Klarte ikkje tildela minne"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Ukjend komprimeringsalgoritme %s"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Komprimert utdata %s treng eit komprimeringssett"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Klarte ikkje oppretta IPC-røyr til underprosessen"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Klarte ikkje gafla"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Komprimer barn"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Intern feil, klarte ikkje oppretta %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Klarte ikkje kommunisera med underprosess/fil"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Klarte ikkje lesa under utrekning av MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Klarte ikkje opna %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Misforma overstyring %s linje %lu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Klarte ikkje lesa overstyringsfila %s"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Misforma overstyring %s linje %lu #1"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Misforma overstyring %s linje %lu #2"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Misforma overstyring %s linje %lu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "Å: Klarte ikkje lesa katalogen %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "Å: Klarte ikkje få status til %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "F: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "Å: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "F: Det er feil ved fila "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Klarte ikkje slå opp %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Treklatring mislukkast"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Klarte ikkje opna %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Klarte ikkje lenkja %s til %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " DeLink-grensa på %sB er nådd.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Arkivet har ikkje noko pakkefelt"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s har inga overstyringsoppføring\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " %s-vedlikehaldaren er %s, ikkje %s\n"
+
+#: ftparchive/writer.cc
+#, fuzzy, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s har inga overstyringsoppføring\n"
+
+#: ftparchive/writer.cc
+#, fuzzy, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s har inga overstyringsoppføring\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Ventar på hovud"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "HTTP-tenaren sende eit ugyldig svarhovud"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Øydelagd hovudlinje"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "HTTP-tenaren sende eit ugyldig «Content-Length»-hovud"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "HTTP-tenaren sende eit ugyldig «Content-Range»-hovud"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Denne HTTP-tenaren har øydelagd støtte for område"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Ukjend datoformat"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Øydelagde hovuddata"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Sambandet mislukkast"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Intern feil"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Klarte ikkje lesa CD-ROM-databasen %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Bruk «apt-cdrom» for å gjera denne CD-plata tilgjengeleg for APT. Du kan "
+"ikkje bruka «apt-get update» til å leggja til nye CD-plater."
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Feil CD-plate"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr ""
+"Klarte ikkje montera CD-plata i %s. Det kan henda plata framleis er i bruk."
+
+#: methods/cdrom.cc
+#, fuzzy
+msgid "Disk not found."
+msgstr "Fann ikkje fila"
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Fann ikkje fila"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Koplar til %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Klarte ikkje oppretta sokkel for %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Klarte ikkje initiera sambandet til %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Klarte ikkje kopla til %s:%s (%s), tidsavbrot på sambandet"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Mislukkast"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Klarte ikkje kopla til %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Koplar til %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Klarte ikkje slå opp «%s»"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Mellombels feil ved oppslag av «%s»"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Det hende noko dumt ved oppslag av «%s:%s» (%i)"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Det hende noko dumt ved oppslag av «%s:%s» (%i)"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Klarte ikkje kopla til %s %s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Klarte ikkje få status"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Ugyldig URI. Lokale URI-ar kan ikkje starta med //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Loggar inn"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Klarte ikkje avgjera namnet på motparten"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Klarte ikkje avgjera det lokale namnet"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Tenaren nekta oss å kopla til, og sa: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER mislukkast, tenaren sa: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS mislukkast, tenaren sa: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Ein mellomtenar er oppgitt, men ikkje noko innloggingsskript. Feltet "
+"«Acquire::ftp::ProxyLogin» er tomt."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Kommandoen «%s» i innlogginsskriptet mislukkast, tenaren sa: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE mislukkast, tenaren sa: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Tidsavbrot på samband"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Tenaren lukka sambandet"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Eit svar flaumde over bufferen."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Protokolløydeleggjing"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Klarte ikkje oppretta sokkel"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Klarte ikkje kopla til datasokkel, tidsavbrot på sambandet"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Klarte ikkje kopla til passiv sokkel."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo klarte ikkje oppretta ein lyttesokkel"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Klarte ikkje binda til sokkel"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Klarte ikkje lytta til sokkel"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Klarte ikkje avgjera sokkelnamnet"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Klarte ikkje senda PORT-kommandoen"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Ukjend adressefamilie %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT mislukkast, tenaren sa: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Tidsavbrot på tilkopling til datasokkel"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Klarte ikkje godta tilkoplinga"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Problem ved oppretting av nøkkel for fil"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Klarte ikkje henta fila, tenaren sa «%s»"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Tidsavbrot på datasokkelen"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Dataoverføringa mislukkast, tenaren sa «%s»"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Spørjing"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Klarte ikkje starta "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr ""
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr ""
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+#, fuzzy
+msgid "The following signatures were invalid:\n"
+msgstr "Dei følgjande tilleggspakkane vil verta installerte:"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Feil ved skriving til fila"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Feil ved lesing frå tenaren. Sambandet vart lukka i andre enden"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Feil ved lesing frå tenaren"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Feil ved skriving til fil"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Utvalet mislukkast"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Tidsavbrot på sambandet"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Feil ved skriving til utfil"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Klarte ikkje opna fila %s"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Klarte ikkje opna fila %s"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr ""
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Klarte ikkje setja endringstidspunkt"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Sambandet vart uventa stengd"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Nokre krav er ikkje oppfylte. Prøv med «--fix-broken»."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Du vil kanskje prøva å retta på desse ved å køyra «apt --fix-broken "
+#~ "install»."
+
+#~ msgid "(not found)"
+#~ msgstr "(ikkje funne)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Pakke spikra til: "
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "Katalogen %s er avleidd"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr "Kravet %s for %s kan ikkje oppfyllast fordi pakken %s ikkje finst"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr "Kravet %s for %s kan ikkje oppfyllast fordi pakken %s ikkje finst"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Klarte ikkje oppfylla kravet %s for %s: Den installerte pakken %s er for "
+#~ "ny"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "Kravet %s for %s kan ikkje oppfyllast fordi det ikkje finst nokon "
+#~ "tilgjengelege versjonar av pakken %s som oppfyller versjonskrava"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr "Kravet %s for %s kan ikkje oppfyllast fordi pakken %s ikkje finst"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Klarte ikkje oppfylla kravet %s for %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Byggjekrav for %s kunne ikkje tilfredstillast."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Problem ved oppheving av lenkje til %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Klarte ikkje oppheva lenkja %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Bruk: apt-cache [val] kommando\n"
+#~ " apt-cache [val] show pakke1 [pakke2 ...]\n"
+#~ "\n"
+#~ "apt-cache er eit lågnivåverktøy som vert brukt til å handtera\n"
+#~ "binærmellomlageret til APT, og til å henta informasjon frå det.\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Val:\n"
+#~ " -h Vis denne hjelpeteksten.\n"
+#~ " -p=? Pakkelageret.\n"
+#~ " -s=? Kjeldekodelageret.\n"
+#~ " -q Ikkje vis framdriftsmålaren.\n"
+#~ " -i Vis berre viktige krav for unmet-kommandoen.\n"
+#~ " -c=? Les denne oppsettsfila.\n"
+#~ " -o=? Set ei vilkårleg innstilling, t.d. «-o dir::cache=/tmp».\n"
+#~ "Du finn meir informasjon på manualsidene apt-cache(8) og apt.conf(5).\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Val:\n"
+#~ " -h Vis denne hjelpeteksten.\n"
+#~ " -c=? Les denne oppsettsfila.\n"
+#~ " -o=? Set ei vilkårleg innstilling, t.d. «-o dir::cache=/tmp».\n"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Bruk: apt-sortpkgs [val] fil1 [fil2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs er eit enkelt verktøy for å sortera pakkefiler. "
+#~ "Innstillinga\n"
+#~ "-s vert brukt til å velja kva for ein type fil det er snakk om.\n"
+#~ "\n"
+#~ "Val:\n"
+#~ " -h Vis denne hjelpeteksten.\n"
+#~ " -s Bruk kjeldefilsortering.\n"
+#~ " -c=? Les denne oppsettsfila.\n"
+#~ " -o=? Set ei vilkårleg innstilling, t.d. «-o dir::cache=/tmp».\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Barneprosessen mislukkast"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Du må velja minst éin pakke som kjeldekoden skal hentast for"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Klarte ikkje oppretta røyr"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Klarte ikkje køyra gzip "
+
+#, fuzzy
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s for %s %s kompilert på %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Klarte ikkje oppretta FILE*"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Misforma linje %lu i kjeldelista %s (URI-tolking)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr "Misforma linje %lu i kjeldelista %s (dist-tolking)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "Misforma linje %lu i kjeldelista %s (dist)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "Misforma linje %lu i kjeldelista %s (dist-tolking)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "Misforma linje %lu i kjeldelista %s (dist-tolking)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr "Misforma linje %lu i kjeldelista %s (dist-tolking)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Misforma linje %lu i kjeldelista %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Misforma linje %lu i kjeldelista %s (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Misforma linje %lu i kjeldelista %s (URI-tolking)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "Misforma linje %lu i kjeldelista %s (absolutt dist)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "Misforma linje %lu i kjeldelista %s (dist-tolking)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "Fann ikkje pakken %s %s ved behandling av filkrav"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Klarte ikkje få status på kjeldepakkelista %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Samlar inn filtilbod"
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Klarte ikkje tolka pakkefila %s (1)"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Utgjevarblokka %s inneheld ingen fingeravtrykk"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Storleik på kravs- og versjonsrom: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Du har ikkje nok ledig plass i %s"
+
+#~ msgid "Done"
+#~ msgstr "Ferdig"
+
+#, fuzzy
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Avbryt installasjon."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Intern feil. AllUpgrade øydelagde noko"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s er ingen gyldig DEB-pakke."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Brukar monteringspunktet %s for CD-ROM\n"
+#~ "Monterer CD-ROM\n"
+
+#, fuzzy
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Dette er ikkje eit gyldig DEB-arkiv, det har ingen «%s» eller «%s»-medlem"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "Feil MD5-sum"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Fann ikkje fila for pakken %s. Det kan henda du må fiksa denne pakken "
+#~ "sjølv."
+
+#, fuzzy
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Opnar oppsettsfila %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Klarte ikkje fjerna %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Klarte ikkje oppretta %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Klarte ikkje få status til %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr ""
+#~ "Infokatalogen og den mellombelse katalogen må vera på det same filsystemet"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Klarte ikkje byta til adminkatalogen %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Intern feil ved henting av pakkenamn"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Les filliste"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Klarte ikkje opna listefila «%sinfo/%s». Dersom du ikkje kan gjenoppretta "
+#~ "denne fila, bør du oppretta ho som ei tom fil og installera den same "
+#~ "versjonen av pakken på nytt."
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Klarte ikkje lesa listefila %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Intern feil ved henting av node"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Klarte ikkje opna avleiingsfila %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Avleiingsfila er øydelagd"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Ugyldig linje i avleiingsfila: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Intern feil ved tilleggjing av avleiing"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Pakkelageret må først klargjerast"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Fann ikkje «Package:»-linja, offset %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Øydelagd «ConfFile»-del i statusfila. Offset %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Feil ved tolking av MD5. Offset %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Klarte ikkje byta til %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Fann ikkje noka gyldig kontrollfil"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Klarte ikkje opna røyr for %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Lesefeil frå %s-prosessen"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Fekk ei enkel hovudlinje over %u teikn"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Misforma overstyring %s linje %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Misforma overstyring %s linje %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Misforma overstyring %s linje %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "dekomprimering"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "lese, har framleis %lu att å lesa, men ingen att"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "skrive, har framleis %lu att å skrive, men klarte ikkje"
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Feil ved behandling av %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Feil ved behandling av %s (UsePackage1)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Feil ved behandling av %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Feil ved behandling av %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Feil ved behandling av %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Feil ved behandling av %s (NewVersion1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Feil ved behandling av %s (UsePackage3)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Feil ved behandling av %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Feil ved behandling av %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Feil ved behandling av %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Intern feil, fann ikkje medlem"
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "Feil ved behandling av %s (NewVersion2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "Misforma linje %u i kjeldelista %s (utgjevar-ID)"
+
+#, fuzzy
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "Klarte ikkje slå opp «%s»"
+
+#, fuzzy
+#~ msgid "Could not patch file"
+#~ msgstr "Klarte ikkje opna fila %s"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#, fuzzy
+#~ msgid "Processing triggers for %s"
+#~ msgstr "Feil ved lesing av katalogen %s"
+
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "Sidan du berre har valt ein enkel operasjon, er det svært sannsynleg at\n"
+#~ "pakken rett og slett ikkje lèt seg installera. I såfall bør du senda\n"
+#~ "feilmelding."
+
+#, fuzzy
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "Linja %d er for lang (maks %d)"
+
+#, fuzzy
+#~ msgid "Line %d too long (max %d)"
+#~ msgstr "Linja %d er for lang (maks %d)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc1)"
+#~ msgstr "Feil ved behandling av %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc2)"
+#~ msgstr "Feil ved behandling av %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Stored label: %s \n"
+#~ msgstr "Lagra etikett: %s \n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found %i package indexes, %i source indexes, %i translation indexes and "
+#~ "%i signatures\n"
+#~ msgstr "Fann %i pakkeindeksar, %i kjeldeindeksar og %i signaturar\n"
+
+#, fuzzy
+#~ msgid "openpty failed\n"
+#~ msgstr "Utvalet mislukkast"
+
+#~ msgid "File date has changed %s"
+#~ msgstr "Fildatoen er endra %s"
+
+#~ msgid "Reading file list"
+#~ msgstr "Les filliste"
+
+#, fuzzy
+#~ msgid "Could not execute "
+#~ msgstr "Klarte ikkje låsa %s"
+
+#~ msgid "Unknown vendor ID '%s' in line %u of source list %s"
+#~ msgstr "Ukjend utgjevar-ID «%s» i linja %u i kjeldelista %s"
diff --git a/po/pl.po b/po/pl.po
new file mode 100644
index 000000000..e3953b447
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,4375 @@
+# Advanced Package Transfer - APT message translation catalog
+# Polish translation by:
+#
+# Nazewnictwo i spójność tłumaczeń programów apt, aptitude, synaptic i innych:
+# http://wiki.debian.org/PolishL10N/PackageInstallers
+# Marcin Owsiany <porridge@debian.org>, 2002, 2003, 2004.
+# Bartosz Fenski <fenio@debian.org>, 2005, 2006.
+# Wiktor Wandachowicz <siryes@gmail.com>, 2008, 2009.
+# Michał Kułach <michal.kulach@gmail.com>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 0.9.7.3\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2012-07-28 21:53+0200\n"
+"Last-Translator: Michał Kułach <michal.kulach@gmail.com>\n"
+"Language-Team: Polish <debian-l10n-polish@lists.debian.org>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.2\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Nieprawidłowy podpis archiwum"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Błąd przy czytaniu nagłówka składnika archiwum"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Nieprawidłowy nagłówek składnika archiwum: %s"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Nieprawidłowy nagłówek składnika archiwum"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Archiwum jest za krótkie"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Nie udało się odczytać nagłówków archiwum"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Nie udało się znaleźć wpisu uwierzytelnienia dla: %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Uszkodzone archiwum"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Niepoprawna suma kontrolna tar, archiwum jest uszkodzone"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Nieznany typ nagłówka TAR %u, składnik %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "To nie jest poprawne archiwum DEB, brakuje składnika \"%s\""
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Błąd wewnętrzny, nie udało się odnaleźć składnika %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Plik kontrolny nie może zostać poprawnie zinterpretowany"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Nie udało się zapisać pliku %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Nie udało się zamknąć pliku %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Ścieżka %s jest zbyt długa"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Wypakowanie %s więcej niż raz"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "Ominięcie katalogu %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Pakiet próbuje pisać do celu ominięcia %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Zbyt długa ścieżka ominięcia"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Nie udało się wykonać operacji stat na %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Nie udało się zmienić nazwy %s na %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "Katalog %s został zastąpiony obiektem nie będącym katalogiem"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Nie udało się znaleźć węzła w jego kubełku haszującym"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Ścieżka jest zbyt długa"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "NadpisujÄ…cy pakiet nie pasuje z wersjÄ… %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Plik %s/%s nadpisuje plik w pakiecie %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Nie można czytać %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Nie można wykonać operacji stat na %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode wywołane na wciąż podłączonym węźle"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Nie udało się odnaleźć elementu tablicy haszującej!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Nie udało się utworzyć ominięcia"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Błąd wewnętrzny w AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Próba nadpisania ominięcia, %s -> %s i %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Podwójne dodanie ominięcia %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Zduplikowany plik konfiguracyjny %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Ominięcie katalogu %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Ominięcie katalogu %s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Ominięcie katalogu %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Ominięcie katalogu %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "Ominięcie katalogu %s"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Nie udało się odczytać dowiązania %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Błędna suma kontrolna"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "nie udało się zmienić nazwy, %s (%s -> %s)"
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Błędny rozmiar"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "Nieprawidłowa operacja %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "BÅ‚Ä…d zapisu"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"Podczas weryfikacji podpisu wystąpił błąd. Nie zaktualizowano repozytorium i "
+"w dalszym ciągu będą używane poprzednie pliki indeksu. Błąd GPG %s: %s\n"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "BÅ‚Ä…d GPG: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"Nie udało się znaleźć oczekiwanego wpisu \"%s\" w pliku Release "
+"(nieprawidłowy wpis sources.list lub nieprawidłowy plik)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"Plik Release dla %s wygasnął (nieprawidłowy od %s). Aktualizacje z tego "
+"repozytorium nie będą wykonywane."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Nieprawidłowa dystrybucja: %s (oczekiwano %s, a otrzymano %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Nie udało się odnaleźć pliku dla pakietu %s. Może to oznaczać, że trzeba "
+"będzie ręcznie naprawić ten pakiet (z powodu brakującej architektury)."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr "Nie można znaleźć źródła do pobrania wersji \"%s\" pakietu \"%s\""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"Pliki indeksu pakietów są uszkodzone. Brak pola Filename: dla pakietu %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Dziennik zmian %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Nie udało się odnaleźć sterownika metody %s."
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "Proszę sprawdzić czy pakiet \"dpkg-dev\" jest zainstalowany.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Metoda %s nie uruchomiła się poprawnie"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "Proszę włożyć do napędu \"%s\" dysk o nazwie: \"%s\" i nacisnąć enter."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Brakuje katalogu list %spartial."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Brakuje katalogu archiwów %spartial."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "Nie udało się zablokować katalogu %s"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "Plik indeksu typu \"%s\" nie jest obsługiwany"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Nie udało się przejść do %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Pobieranie pliku %li z %li (pozostało %s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Pobieranie pliku %li z %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"Pakiet %s ma zostać ponownie zainstalowany, ale nie można znaleźć jego "
+"archiwum."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Błąd, pkgProblemResolver::Resolve zwrócił błąd, może to być spowodowane "
+"zatrzymanymi pakietami."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "Nie udało się naprawić problemów, zatrzymano uszkodzone pakiety."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "Nie udało się otworzyć lub zanalizować zawartości list pakietów."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Należy uruchomić apt-get update aby naprawić te problemy."
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Nie udało się odczytać list źródeł."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Błąd kompilacji wyrażenia regularnego - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Wydanie \"%s\" dla \"%s\" nie zostało znalezione"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Wersja \"%s\" dla \"%s\" nie została znaleziona"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Nie udało się odnaleźć zadania \"%s\""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr ""
+"Nie udało się znaleźć żadnego pakietu według wyrażenia regularnego \"%s\""
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr ""
+"Nie udało się znaleźć żadnego pakietu według wyrażenia regularnego \"%s\""
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Nie udało się odnaleźć pakietu %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+"Nie udało się wybrać wersji z pakietu \"%s\", ponieważ jest on czysto "
+"wirtualny"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"Nie udało się wybrać najnowszej wersji pakietu \"%s\", ponieważ jest on "
+"czysto wirtualny"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+"Nie udało się wybrać wersji kandydującej pakietu %s, ponieważ nie ma "
+"kandydata"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"Nie udało się wybrać zainstalowanej wersji z pakietu %s, ponieważ nie jest "
+"zainstalowany"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"Nie udało się wybrać zainstalowanej ani kandydującej wersji pakietu \"%s\", "
+"ponieważ nie ma żadnej z nich"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Linia %u w liście źródeł %s jest zbyt długa."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Odmontowanie CD-ROM-u...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Użycie %s jako punktu montowania CD-ROM-u\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Oczekiwanie na płytę...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Montowanie CD-ROM-u...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Identyfikacja... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Etykieta: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Skanowanie płyty w poszukiwaniu plików indeksu...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Znaleziono %zu indeksów pakietów, %zu indeksów źródłowych, %zu indeksów "
+"tłumaczeń i %zu podpisów\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Nie można odnaleźć żadnych plików pakietów, być może nie jest to dysk "
+"Debiana lub jest to inna architektura?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Znaleziono etykietÄ™ \"%s\"\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "To nie jest prawidłowa nazwa, proszę spróbować ponownie.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"PÅ‚yta nosi nazwÄ™: \n"
+"\"%s\"\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Kopiowanie list pakietów..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Zapisywanie nowej listy źródeł\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Źródła dla tej płyty to:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Nie udało się wykonać operacji stat na pliku %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Nie udało się wykonać operacji stat na punkcie montowania %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Nie udało się wykonać operacji stat na CDROM-ie"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Opcja linii poleceń \"%c\" [z %s] jest nieznana."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Niezrozumiała opcja linii poleceń %s"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Opcja linii poleceń %s nie jest typu logicznego"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Opcja %s wymaga argumentu."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "Opcja %s: Specyfikacja elementu konfiguracji musi zawierać =<wartość>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Opcja %s wymaga argumentu typu całkowitego, nie \"%s\""
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Opcja \"%s\" jest zbyt długa"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "Znaczenie %s jest nieznane, proszę spróbować true lub false."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Nieprawidłowa operacja %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Nierozpoznany skrót typu: \"%c\""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Otwieranie pliku konfiguracyjnego %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Błąd składniowy %s:%u: Blok nie zaczyna się nazwą."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Błąd składniowy %s:%u: Błędny znacznik"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Błąd składniowy %s:%u: Po wartości występują śmieci"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"Błąd składniowy %s:%u: Dyrektywy mogą występować tylko na najwyższym poziomie"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Błąd składniowy %s:%u: Zbyt wiele zagnieżdżonych operacji include"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Błąd składniowy %s:%u: Włączony tutaj"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Błąd składniowy %s:%u: Nieobsługiwana dyrektywa \"%s\""
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Błąd składniowy %s:%u: czysta dyrektywa wymaga drzewa opcji jako argumentu"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Błąd składniowy %s:%u: Śmieci na końcu pliku"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Problem przy odlinkowywaniu pliku %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Dla pliku blokady %s tylko do odczytu nie zostanie użyta blokada"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Nie udało się otworzyć pliku blokady %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Dla pliku blokady %s montowanego przez NFS nie zostanie użyta blokada"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Nie udało się uzyskać blokady %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+"Lista plików nie może zostać stworzona, ponieważ \"%s\" nie jest katalogiem"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr "Ignorowanie \"%s\" w katalogu \"%s\", ponieważ nie jest to zwykły plik"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+"Ignorowanie pliku \"%s\" w katalogu \"%s\", ponieważ nie ma on rozszerzenia "
+"pliku"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"Ignorowanie pliku \"%s\" w katalogu \"%s\", ponieważ ma on nieprawidłowe "
+"rozszerzenie pliku"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Oczekiwano na proces %s, ale nie było go"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Podproces %s spowodował naruszenie ochrony pamięci."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Podproces %s otrzymał sygnał %u."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Podproces %s zwrócił kod błędu (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Podproces %s zakończył się niespodziewanie"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "BÅ‚Ä…d odczytu"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "BÅ‚Ä…d zapisu"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Problem przy zamykaniu pliku gzip %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Nie udało się utworzyć IPC z podprocesem"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Nie udało się uruchomić kompresora "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Nie udało się otworzyć pliku %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Nie udało się otworzyć deskryptora pliku %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "należało przeczytać jeszcze %llu, ale nic nie zostało"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "należało zapisać jeszcze %llu, ale nie udało się to"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Problem przy zamykaniu pliku %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Problem przy zapisywaniu pliku %s w %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Problem przy zapisywaniu pliku na dysk"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Nie można wykonać operacji stat na %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Nie udało się pisać do %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Nie można wykonać mmap na pustym pliku"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Nie udało się wykonać mmap %llu bajtów"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Nie udało się zduplikować deskryptora pliku %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "Nie udało się zamknąć mmap"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "Nie udało się zsynchronizować mmap"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Nie udało się wykonać mmap %lu bajtów"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Nie udało się uciąć zawartości pliku %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"Brak miejsca dla dynamicznego MMap. Proszę zwiększyć rozmiar APT::Cache-"
+"Start. Bieżąca wartość: %lu. (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"Nie udało się zwiększyć rozmiaru MMap, ponieważ limit %lu bajtów został już "
+"osiągnięty."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Nie udało się zwiększyć rozmiaru MMap, ponieważ automatycznie powiększanie "
+"zostało wyłączone przez użytkownika."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... BÅ‚Ä…d!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Gotowe"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... Gotowe"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%lidni %lig %limin %lis"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%lig %limin %lis"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%limin %lis"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%lis"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Nie odnaleziono wyboru %s"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Nie udało się przeanalizować pliku Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Brak sekcji w pliku Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Brak wpisu Hash w pliku Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Nieprawidłowy wpis %s w pliku Release %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Nie udało się zanalizować pliku pakietu %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"Nie udało się zablokować katalogu administracyjnego (%s), czy inny proces go "
+"używa?"
+
+# Musi pasować do su i sudo.
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr ""
+"Nie udało się zablokować katalogu administracyjnego (%s), czy użyto "
+"uprawnień administratora?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"dpkg został przerwany, należy wykonać ręcznie \"%s\", aby naprawić problem."
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Niezablokowany"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "Instalowanie %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Konfigurowanie %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Usuwanie %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "Całkowite usuwanie %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "Proszę odnotować zniknięcie %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Uruchamianie wyzwalacza post-installation %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "Pakiet %s został zainstalowany"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Brakuje katalogu \"%s\""
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "Nie udało się otworzyć pliku \"%s\""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Przygotowywanie %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Rozpakowywanie %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Przygotowywanie do konfiguracji %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Przygotowywanie do usunięcia %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "Pakiet %s został usunięty"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Przygotowywanie do całkowitego usunięcia %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "Pakiet %s został całkowicie usunięty"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "Nie udało się pisać do %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "Operacja została przerwana, zanim mogła zostać zakończona"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr "Brak raportu programu apport, ponieważ osiągnięto limit MaxReports"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "problemy z zależnościami - pozostawianie nieskonfigurowanego"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Brak raportu programu apport, ponieważ komunikat błędu wskazuje, że "
+"przyczyna niepowodzenia leży w poprzednim błędzie."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Brak raportu programu apport, ponieważ komunikat błędu wskazuje na "
+"przepełnienie dysku"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Brak raportu programu apport, ponieważ komunikat błędu wskazuje na błąd "
+"braku wolnej pamięci"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Brak raportu programu apport, ponieważ komunikat błędu wskazuje na "
+"przepełnienie dysku"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"Brak raportu programu apport, ponieważ komunikat błędu wskazuje na błąd "
+"wejścia/wyjścia dpkg"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Budowanie drzewa zależności"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "KandydujÄ…ce wersje"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Generowanie zależności"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Odczyt informacji o stanie"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Nie udało się otworzyć pliku stanu %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Nie udało się zapisać tymczasowego pliku stanu %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "Wysyłanie scenariusza do mechanizmu rozwiązywania zależności"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "Wysyłanie żądania do mechanizmu rozwiązywania zależności"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "Przygotowywanie na otrzymanie rozwiÄ…zania"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+"Zewnętrzny mechanizm rozwiązywania zależności zawiódł, bez podania "
+"prawidłowego komunikatu o błędzie"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "Wykonywanie zewnętrznego mechanizmu rozwiązywania zależności"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Execute external planner"
+msgstr "Wykonywanie zewnętrznego mechanizmu rozwiązywania zależności"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send request to planner"
+msgstr "Wysyłanie żądania do mechanizmu rozwiązywania zależności"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send scenario to planner"
+msgstr "Wysyłanie scenariusza do mechanizmu rozwiązywania zależności"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "External planner failed without a proper error message"
+msgstr ""
+"Zewnętrzny mechanizm rozwiązywania zależności zawiódł, bez podania "
+"prawidłowego komunikatu o błędzie"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "Zapisano %i rekordów.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "Zapisano %i rekordów z %i brakującymi plikami.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "Zapisano %i rekordów z %i niepasującymi plikami\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "Zapisano %i rekordów z %i brakującymi plikami i %i niepasującymi\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "Nie udało się znaleźć wpisu uwierzytelnienia dla: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Błędna suma kontrolna dla: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "System pakietów \"%s\" nie jest obsługiwany"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Nie udało się określić odpowiedniego typu systemu pakietów"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "Uruchamianie dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"Nie udało się wykonać natychmiastowej konfiguracji %s. Proszę wykonać \"man "
+"5 apt.conf\" i zapoznać się z wpisem APT::Immediate-Configure aby dowiedzieć "
+"się więcej. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "Nie udało się skonfigurować \"%s\". "
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"To uruchomienie programu będzie wymagało tymczasowego usunięcia istotnego "
+"pakietu %s z powodu pętli konfliktów/wymagań wstępnych. Często jest to złe "
+"rozwiązanie, ale jeśli jest się pewnym swoich działań, należy włączyć opcję "
+"APT::Force-LoopBreak."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Pusty magazyn podręczny pakietów"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Magazyn podręczny pakietów jest uszkodzony"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Magazyn podręczny pakietów jest w niezgodnej wersji"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Ta wersja APT nie obsługuje systemu wersji \"%s\""
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Ten magazyn podręczny pakietów został zbudowany dla innej architektury"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Magazyn podręczny pakietów jest uszkodzony - jest zbyt mały"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Wymaga"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Wymaga wstępnie"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Sugeruje"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "W konflikcie z"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Poleca"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Zastępuje"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Narusza zależności"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Rozszerza"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Dezaktualizuje"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "ważny"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "wymagany"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "standardowy"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "dodatkowy"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "opcjonalny"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Magazyn podręczny ma niezgodny system wersji"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Wystąpił błąd podczas przetwarzania %s (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "Przekroczono liczbę pakietów, którą ten APT jest w stanie obsłużyć."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Przekroczono liczbę wersji, którą ten APT jest w stanie obsłużyć."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Przekroczono liczbę opisów, którą ten APT jest w stanie obsłużyć."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "Przekroczono liczbę zależności, którą ten APT jest w stanie obsłużyć."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Czytanie list pakietów"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Błąd wejścia/wyjścia przy zapisywaniu podręcznego magazynu źródeł"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Plik indeksu typu \"%s\" nie jest obsługiwany"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"Wartość %s jest nieprawidłowa dla APT::Default-Release, ponieważ takie "
+"wydanie nie jest dostępne w źródłach"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Nieprawidłowe informacje w pliku ustawień %s, brak nagłówka Package"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Nierozpoznany typ przypinania %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Brak (lub zerowy) priorytet przypięcia"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Nieprawidłowa linia %llu #1 pliku override %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Otwieranie %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Nieprawidłowa linia %u w liście źródeł %s (typ)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Typ \"%s\" jest nieznany w linii %u listy źródeł %s"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Nieprawidłowa linia %u w liście źródeł %s (typ)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Typ \"%s\" jest nieznany w linii %u listy źródeł %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Należy dopisać jakieś URI pakietów źródłowych do pliku sources.list"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Nie udało się pobrać %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Nie udało się pobrać niektórych plików indeksu, zostały one zignorowane lub "
+"użyto ich starszej wersji."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Obliczanie aktualizacji"
+
+# Ujednolicono z aptitude
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Stary:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Pobieranie:%lu %s"
+
+# Wyrównane do Hit i Err.
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr ""
+
+# Wyrównane do Hit i Ign.
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "BÅ‚Ä…d:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Pobrano %sB w %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Pracuje]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Zmiana nośnika: Proszę włożyć dysk oznaczony\n"
+" \"%s\"\n"
+"do napędu \"%s\" i nacisnąć enter\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Naprawianie zależności..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " nie udało się."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Nie udało się naprawić zależności"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Nie udało się zminimalizować zbioru aktualizacji"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Gotowe"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "Należy uruchomić \"apt --fix-broken install\", aby je naprawić."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Niespełnione zależności. Proszę spróbować wykonać \"apt --fix-broken install"
+"\" bez pakietów (lub podać rozwiązanie)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Uwaga, wybieranie %s dla zadania \"%s\"\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Uwaga, wybieranie %s dla wyrażenia \"%s\"\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Uwaga, wybieranie %s dla wyrażenia \"%s\"\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Pakiet %s jest pakietem wirtualnym zapewnianym przez:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [Zainstalowany]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [Brak wersji kandydujÄ…cej]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Należy jednoznacznie wybrać jeden z nich do instalacji."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Pakiet %s nie ma dostępnej wersji, ale odnosi się do niego inny pakiet.\n"
+"Zazwyczaj oznacza to, że pakietu brakuje, został zastąpiony przez inny\n"
+"pakiet lub nie jest dostępny przy pomocy obecnie ustawionych źródeł.\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Jednak następujące pakiety go zastępują:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Pakiet %s nie ma kandydata do instalacji"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Pakiety wirtualne, takie jak \"%s\" nie mogą być usunięte\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"Pakiet %s nie jest zainstalowany, więc nie zostanie usunięty. Czy chodziło o "
+"\"%s\"?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Pakiet \"%s\" nie jest zainstalowany, więc nie zostanie usunięty\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Uwaga, wybieranie \"%s\" zamiast \"%s\"\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Ten APT ma moce Super Krowy."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Nie znaleziono żadnych pakietów"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "UWAGA: Następujące pakiety nie mogą zostać zweryfikowane!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Zignorowano ostrzeżenie uwierzytelniania.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Niektóre pakiety nie mogły zostać zweryfikowane"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Zainstalować te pakiety bez weryfikacji?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Wystąpiły problemy, a użyto -y bez --force-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Nie udało się ustalić ilości wolnego miejsca w %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Niestety w %s nie ma wystarczającej ilości wolnego miejsca."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Nie udało się zablokować katalogu pobierania"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Nie udało się zainstalować niektórych pakietów. Może to oznaczać,\n"
+"że zażądano niemożliwej sytuacji lub użyto dystrybucji niestabilnej,\n"
+"w której niektóre pakiety nie zostały jeszcze utworzone lub przeniesione\n"
+"z katalogu Incoming (\"PrzychodzÄ…ce\")."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Następujące informacje mogą pomóc rozwiązać sytuację:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Pakiety sÄ… uszkodzone"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Nie udało się pobrać niektórych archiwów, proszę spróbować uruchomić apt-get "
+"update lub użyć opcji --fix-missing."
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Błąd wewnętrzny, użyto InstallPackages z uszkodzonymi pakietami!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Pakiety powinny zostać usunięte, ale Remove jest wyłączone."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Wystąpiły problemy, a użyto -y bez --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Wystąpiły problemy, a użyto -y bez --force-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Błąd wewnętrzny, sortowanie niezakończone"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Wystąpił dziwny błąd - rozmiary się nie zgadzają. Proszę to zgłosić pod "
+"apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Konieczne pobranie %sB/%sB archiwów.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Konieczne pobranie %sB archiwów.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "Po tej operacji zostanie dodatkowo użyte %sB miejsca na dysku.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Po tej operacji zostanie zwolnione %sB miejsca na dysku.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "Nakazano wykonywać tylko trywialne operacje, a ta do nich nie należy."
+
+# Bezpieczniej jest nie używać tu polskich znaków.
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Tak, jestem pewien!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Zaraz stanie siÄ™ coÅ› potencjalnie szkodliwego.\n"
+"Aby kontynuować proszę napisać zdanie \"%s\"\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Przerwane."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Kontynuować?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Nie udało się pobrać niektórych plików"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Ukończono pobieranie w trybie samego pobierania"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing i zamiana nośników nie są obecnie obsługiwane"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Nie udało się poprawić brakujących pakietów."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Przerywanie instalacji"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"Następujący pakiet zniknął z tego systemu, ponieważ wszystkie jego pliki "
+"zostały nadpisane przez inne pakiety:"
+msgstr[1] ""
+"Następujące pakiety zniknęły z tego systemu, ponieważ wszystkie ich pliki "
+"zostały nadpisane przez inne pakiety:"
+msgstr[2] ""
+"Następujące pakiety zniknęły z tego systemu, ponieważ wszystkie ich pliki "
+"zostały nadpisane przez inne pakiety:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Uwaga: dpkg wykonał to automatycznie i celowo."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "Nic nie powinno być usuwane, AutoRemover nie zostanie uruchomiony"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Wygląda na to, że AutoRemover coś uszkodził, a to naprawdę nie\n"
+"powinno się zdarzyć. Prosimy o zgłoszenie błędu w pakiecie apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Błąd wewnętrzny spowodowany przez AutoRemover"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"Następujący pakiet został zainstalowany automatycznie i nie jest już więcej "
+"wymagany:"
+msgstr[1] ""
+"Następujące pakiety zostały zainstalowane automatycznie i nie są już więcej "
+"wymagane:"
+msgstr[2] ""
+"Następujące pakiety zostały zainstalowane automatycznie i nie są już więcej "
+"wymagane:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] ""
+"%lu pakiet został zainstalowany automatycznie i nie jest już więcej "
+"wymagany.\n"
+msgstr[1] ""
+"%lu pakiety zostały zainstalowane automatycznie i nie są już więcej "
+"wymagane.\n"
+msgstr[2] ""
+"%lu pakietów zostało zainstalowanych automatycznie i nie są już więcej "
+"wymagane.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Aby go usunąć należy użyć \"%s\"."
+msgstr[1] "Aby je usunąć należy użyć \"%s\"."
+msgstr[2] "Aby je usunąć należy użyć \"%s\"."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Zostaną zainstalowane następujące dodatkowe pakiety:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Sugerowane pakiety:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Polecane pakiety:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+"Pomijanie %s, jest już zainstalowane, a nie została wybrana aktualizacja.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"Pomijanie %s, nie jest zainstalowane, a wybrano wyłącznie aktualizacje.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr ""
+"Ponowna instalacja pakietu %s nie jest możliwa, nie może on zostać pobrany.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s jest już w najnowszej wersji.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s zaznaczony jako zainstalowany ręcznie.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Wybrano wersjÄ™ \"%s\" (%s) pakietu \"%s\"\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Wybrano wersjÄ™ \"%s\" (%s) pakietu \"%s\", z powodu \"%s\"\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"UWAGA: To jest tylko symulacja!\n"
+" %s wymaga do normalnego działania uprawnień administratora.\n"
+" Aktualnie blokowanie jest wyłączone, więc nie należy polegać\n"
+" na zwiÄ…zku z rzeczywistÄ… sytuacjÄ…!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Zainstalowany]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [Zainstalowany]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [Zainstalowany]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [Zainstalowany]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "ale %s jest zainstalowany"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "ale %s ma zostać zainstalowany"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "ale nie da się go zainstalować"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "ale jest pakietem wirtualnym"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "ale nie zostanie zainstalowany"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "ale nie jest zainstalowany"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " lub"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Następujące pakiety mają niespełnione zależności:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Zostaną zainstalowane następujące NOWE pakiety:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Następujące pakiety zostaną USUNIĘTE:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Następujące pakiety zostały zatrzymane:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Następujące pakiety zostaną zaktualizowane:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Zostaną zainstalowane STARE wersje następujących pakietów:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Zostaną zmienione następujące zatrzymane pakiety:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (z powodu %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"UWAGA: Zostaną usunięte następujące istotne pakiety.\n"
+"NIE należy kontynuować, jeśli nie jest się pewnym tego co się robi!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu aktualizowanych, %lu nowo instalowanych, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu ponownie instalowanych, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu cofniętych wersji, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu usuwanych i %lu nieaktualizowanych.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu nie w pełni zainstalowanych lub usuniętych.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[T/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[t/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "T"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "Należy podać przynajmniej jeden wzorzec"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Plik pakietu %s jest przestarzały."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Plików pakietów:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+"Magazyn podręczny jest przestarzały, nie można odwołać się (x-ref) do pliku "
+"pakietu."
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Przypięte pakiety:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Zainstalowana: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " KandydujÄ…ca: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(brak)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Tabela wersji:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr ""
+"Nie udało się znaleźć żadnego pakietu według wyrażenia regularnego \"%s\""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr ""
+"Nie udało się znaleźć żadnego pakietu według wyrażenia regularnego \"%s\""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr ""
+"Nie udało się znaleźć żadnego pakietu według wyrażenia regularnego \"%s\""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Zmieniono wybrany pakiet źródłowy na \"%s\" z \"%s\"\n"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "Ignorowanie niedostępnej wersji \"%s\" pakietu \"%s\""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr ""
+"Należy podać przynajmniej jeden pakiet, dla którego mają zostać pobrane "
+"źródła"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Nie udało się odnaleźć źródła dla pakietu %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"UWAGA: pakietowanie \"%s\" jest zarzÄ…dzane w systemie kontroli wersji \"%s\" "
+"pod adresem:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Proszę użyć:\n"
+"%s\n"
+"by pobrać najnowsze (prawdopodobnie jeszcze niewydane) poprawki tego "
+"pakietu.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Pomijanie już pobranego pliku \"%s\"\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Konieczne pobranie %sB/%sB archiwów źródeł.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Konieczne pobranie %sB archiwów źródeł.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Pobieranie źródeł %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Nie udało się pobrać niektórych archiwów."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Pomijanie rozpakowania już rozpakowanego źródła w %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Polecenie rozpakowania \"%s\" zawiodło.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Proszę sprawdzić czy pakiet \"dpkg-dev\" jest zainstalowany.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Polecenie budowania \"%s\" zawiodło.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Nie udało się pobrać informacji o zależnościach dla budowania %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s nie ma zależności dla budowania.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Należy podać przynajmniej jeden pakiet, dla którego mają zostać sprawdzone "
+"zależności dla budowania"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"Nie znaleziono informacji o architekturze dla %s. Proszę zapoznać się z apt."
+"conf(5) APT::Architectures"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Nie udało się przetworzyć zależności dla budowania"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Nie udało się przetworzyć zależności dla budowania"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Nie udało się zmienić nazwy %s na %s"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Pakiet %s w wersji %s ma niespełnione zależności:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Polecenie update nie wymaga żadnych argumentów"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "Polecenie update nie wymaga żadnych argumentów"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Liczba nazw pakietów: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Liczba wszystkich typów pakietów: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Zwykłych pakietów: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Czysto wirtualnych pakietów: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Pojedynczych pakietów wirtualnych: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Mieszanych pakietów wirtualnych: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " BrakujÄ…cych: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "W sumie różnych wersji: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "W sumie różnych opisów: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "W sumie zależności: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "W sumie zależności wersja/plik: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "W sumie zależności opis/plik: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "W sumie mapowań zapewnień: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "W sumie dopasowanych napisów: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Sumaryczny rozmiar niewykorzystanego miejsca: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Całkowity rozmiar: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr "To polecenie jest przestarzałe. Prosimy używać \"apt-mark showauto\"."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Pokazuje informacje dla źródeł"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Przeszukuje listę pakietów według wyrażenia regularnego"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Pokazuje surowe informacje o zależnościach danego pakietu"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Pokazuje informacje o zależnościach OD danego pakietu"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Pokazuje informacje dla danego pakietu"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Pokazuje listę nazw wszystkich pakietów w systemie"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Pokazuje ustawienia polityki"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Proszę wprowadzić nazwę dla tej płyty, np. \"Debian 5.0.3 Disk 1\""
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Proszę włożyć dysk do napędu i nacisnąć enter"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Nie udało się zamontować \"%s\" w \"%s\""
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Należy powtórzyć ten proces dla reszty płyt."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Argumenty nie sÄ… w parach"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Użycie: apt-config [opcje] polecenie\n"
+"\n"
+"apt-config to proste narzędzie do czytania pliku konfiguracyjnego APT\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Użycie: apt-extracttemplates plik1 [plik2 ...]\n"
+"\n"
+"apt-extracttemplates to narzędzie służące do pobierania informacji\n"
+"i konfiguracji i szablonach z pakietów Debiana.\n"
+"\n"
+"Opcje:\n"
+" -h Ten tekst pomocy.\n"
+" -t Ustawia katalog tymczasowy\n"
+" -c=? Czyta wskazany plik konfiguracyjny.\n"
+" -o=? Ustawia dowolnÄ… opcjÄ™ konfiguracji, np. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Nie udało się pobrać wersji debconf. Czy debconf jest zainstalowany?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Nie udało się odnaleźć pakietu %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s zaznaczony jako zainstalowany automatycznie.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"To polecenie jest przestarzałe. Prosimy używać \"apt-mark auto\" i \"apt-"
+"mark manual\"."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Błąd wewnętrzny, spowodowany przez moduł rozwiązywania problemów"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Obsługiwane moduły:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Użycie: apt-get [opcje] polecenie\n"
+" apt-get [opcje] install|remove pakiet1 [pakiet2 ...]\n"
+" apt-get [opcje] source pakiet1 [pakiet2 ...]\n"
+"\n"
+"apt-get to prosty interfejs wiersza poleceń do pobierania i instalacji\n"
+"pakietów. Najczęściej używane polecenia to update i install.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Pobiera nowe listy pakietów"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Wykonuje aktualizacjÄ™"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Instaluje nowe pakiety (pakiet to np. libc6, nie libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Usuwa pakiety"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Usuwa pakiety Å‚Ä…cznie z plikami konfiguracyjnymi"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Usuwa automatycznie wszystkie nieużywane pakiety"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Aktualizacja dystrybucji, patrz apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Instaluje według wyborów dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Konfiguruje zależności dla budowania pakietów źródłowych"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Usuwa pobrane pliki archiwów"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Usuwa stare pobrane pliki archiwów"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Sprawdza, czy wszystkie zależności są spełnione"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Pobiera archiwa źródłowe"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "Pobiera pakiet binarny do bieżącego katalogu"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "Pobiera i wyświetla dziennika zmian wybranych pakietów"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr ""
+"Należy podać przynajmniej jeden pakiet, dla którego mają zostać pobrane "
+"źródła"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Użycie: apt-internal-solver\n"
+"\n"
+"apt-internal-solver jest interfejsem do używania bieżącego, wewnętrznego\n"
+"mechanizmu rozwiązywania zależności - w sposób podobny jak zewnętrznego\n"
+"mechanizmu rodziny APT - do celów debugowania itp.\n"
+"\n"
+"Opcje:\n"
+" -h Ten tekst pomocy.\n"
+" -q Zapisywalne wyjście - brak wskaźnika postępu\n"
+" -c=? Czyta wskazany plik konfiguracyjny\n"
+" -o=? Ustawia dowolnÄ… opcjÄ™ konfiguracji, np. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Użycie: apt-internal-solver\n"
+"\n"
+"apt-internal-solver jest interfejsem do używania bieżącego, wewnętrznego\n"
+"mechanizmu rozwiązywania zależności - w sposób podobny jak zewnętrznego\n"
+"mechanizmu rodziny APT - do celów debugowania itp.\n"
+"\n"
+"Opcje:\n"
+" -h Ten tekst pomocy.\n"
+" -q Zapisywalne wyjście - brak wskaźnika postępu\n"
+" -c=? Czyta wskazany plik konfiguracyjny\n"
+" -o=? Ustawia dowolnÄ… opcjÄ™ konfiguracji, np. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "%s nie może zostać oznaczony, ponieważ nie jest zainstalowany.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s został już ustawiony jako zainstalowany ręcznie.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s został już ustawiony jako zainstalowany automatycznie.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s został już zatrzymany.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s został już odznaczony jako zatrzymany.\n"
+
+# Musi pasować do su i sudo.
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+"Uruchomienie dpkg nie powiodło się. Czy użyto uprawnień administratora?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "%s został zatrzymany.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Odznaczono zatrzymanie %s\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"Użycie: apt-mark [opcje] {auto|manual} pakiet1 [pakiet2 ...]\n"
+"\n"
+"apt-mark jest prostym poleceniem wiersza poleceń do oznaczania pakietów\n"
+"jako zainstalowane automatycznie lub ręcznie. Może także służyć\n"
+"do wyświetlania stanu oznaczeń.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "Oznacza dany pakiet jako zainstalowany automatycznie"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "Oznacza dany pakiet jako zainstalowany ręcznie"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Nieznane informacje o pakiecie!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "Czytanie list pakietów"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "Przypięte pakiety:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Pakiety sÄ… uszkodzone"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "ale jest pakietem wirtualnym"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "Odczyt informacji o stanie"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Nieprawidłowe ustawienie domyślne!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Proszę nacisnąć enter, aby kontynuować."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Czy usunąć wszystkie pobrane wcześniej pliki .deb?"
+
+# Note to translators: The following four messages belong together. It doesn't
+# matter where sentences start, but it has to fit in just these four lines, and
+# at only 80 characters per line, if possible.
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "Wystąpiły problemy przy rozpakowywaniu. Zainstalowane pakiety zostaną"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "skonfigurowane. Może to spowodować podwójne błędy lub błędy"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"spowodowane brakującymi zależnościami. Jest to normalne. Tylko błędy nad tym"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"komunikatem są istotne. Proszę je poprawić i ponownie wybrać [I]nstalację."
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "ÅÄ…czenie informacji o dostÄ™pnych pakietach"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Lista rozszerzeń pakietów jest zbyt długa"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "BÅ‚Ä…d przetwarzania katalogu %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Lista rozszerzeń źródeł jest zbyt długa"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Błąd przy zapisywaniu nagłówka do pliku zawartości"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Błąd podczas przetwarzania zawartości %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Użycie: apt-ftparchive [opcje] polecenie\n"
+"Polecenia: packages ścieżka_do_binariów [plik_override [przedrostek]]\n"
+" sources ścieżka_do_źródeł [plik_override [przedrostek]]\n"
+" contents ścieżka\n"
+" release ścieżka\n"
+" generate konfiguracja [grupy]\n"
+" clean konfiguracja\n"
+"\n"
+"apt-ftparchive generuje pliki indeksów dla archiwów Debiana. Obsługuje\n"
+"różne rodzaje generowania, od w pełni zautomatyzowanych po funkcjonalne\n"
+"zamienniki programów dpkg-scanpackages i dpkg-scansources.\n"
+"\n"
+"apt-ftparchive generuje pliki Package na postawie drzewa plików .deb.\n"
+"Wygenerowany plik zawiera pola kontrolne wszystkich pakietów oraz ich\n"
+"skróty MD5 i rozmiary. Obsługiwany jest plik override, pozwalający wymusić\n"
+"priorytet i dział pakietu.\n"
+"\n"
+"apt-ftparchive podobnie generuje pliki Sources na podstawie drzewa plików\n"
+".dsc. Przy pomocy opcji --source-override można podać plik override dla\n"
+"źródeł.\n"
+"\n"
+"Polecenia \"packages\" i \"sources\" powinny być wykonywane w katalogu "
+"głównym\n"
+"drzewa. \"ścieżka_do_binariów\" powinna wskazywać na katalog, od którego "
+"zacznie\n"
+"się wyszukiwanie, a plik override powinien zawierać odpowiednie flagi.\n"
+"Przedrostek (o ile został podany) jest dodawany przed ścieżką do każdego\n"
+"pliku. Przykładowe użycie, z archiwum Debiana:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Opcje:\n"
+" -h Ten tekst pomocy\n"
+" --md5 Generuje sumy kontrolne MD5\n"
+" -s=? Plik override dla źródeł\n"
+" -q \"Ciche\" działanie\n"
+" -d=? Opcjonalna podręczna baza danych\n"
+" --no-delink Włącza tryb diagnostyczny odłączania\n"
+" --contents Generuje plik zawartości (Contents)\n"
+" -c=? Czyta wskazany plik konfiguracyjny\n"
+" -o=? Ustawia dowolnÄ… opcjÄ™ konfiguracji"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Nie dopasowano żadnej nazwy"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Brakuje pewnych plików w grupie plików pakietów \"%s\""
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "Baza była uszkodzona, plik został przeniesiony do %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "Baza jest przestarzała, próbuję zaktualizować %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Niepoprawny format bazy. Jeśli zaktualizowano ze starszej wersji apt, proszę "
+"usunąć i utworzyć ponownie bazę danych."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Nie udało się otworzyć pliku bazy %s: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Nie udało się odczytać dowiązania %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Archiwum nie posiada rekordu kontrolnego"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Nie udało się pobrać kursora"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Nie udało się zaalokować pamięci"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Nieznany algorytm kompresji \"%s\""
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Skompresowany plik wynikowy %s wymaga podania kompresji"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Nie udało się utworzyć potoku IPC do podprocesu"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Nie udało się utworzyć procesu potomnego"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Potomny proces kompresujÄ…cy"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Błąd wewnętrzny, nie udało się utworzyć %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Zawiodła operacja IO na pliku/podprocesie"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Nie udało się czytanie w czasie liczenia skrótu MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Nie można otworzyć %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Nieprawidłowa linia %llu #1 pliku override %s"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Nie udało się czytać pliku override %s"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Nieprawidłowa linia %2$llu #1 pliku override %1$s"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Nieprawidłowa linia %2$llu #2 pliku override %1$s"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Nieprawidłowa linia %2$llu #3 pliku override %1$s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "W: Nie udało się odczytać katalogu %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "W: Nie można wykonać operacji stat na %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "W: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: Błędy odnoszą się do pliku "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Nie udało się przetłumaczyć nazwy %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Przejście po drzewie nie powiodło się"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Nie udało się otworzyć %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " Odłączenie %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Nie udało się dowiązać %s do %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " Osiągnięto ograniczenie odłączania %sB.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Archiwum nie posiadało pola pakietu"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s nie posiada wpisu w pliku override\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " opiekunem %s jest %s, a nie %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s nie posiada wpisu w pliku override źródeł\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s nie posiada również wpisu w pliku override binariów\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Oczekiwanie na nagłówki"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "Serwer HTTP przysłał nieprawidłowy nagłówek odpowiedzi"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Nieprawidłowa linia nagłówka"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "Serwer HTTP przysłał nieprawidłowy nagłówek Content-Length"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "Serwer HTTP przysłał nieprawidłowy nagłówek Content-Range"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Ten serwer HTTP nieprawidłowo obsługuje zakresy (ranges)"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Nieznany format daty"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Błędne dane nagłówka"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Połączenie nie powiodło się"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Błąd wewnętrzny"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Nie można odczytać bazy danych CD-ROM-ów %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Proszę użyć programu apt-cdrom, aby APT mógł rozpoznać tę płytę CD. Nowych "
+"płyt nie można dodawać przy pomocy polecenia apt-get update"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Niewłaściwa płyta CD"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Nie udało się odmontować CD-ROM-u w %s, być może wciąż jest używany."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Nie odnaleziono dysku."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Nie odnaleziono pliku"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "ÅÄ…czenie z %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Nie udało się utworzyć gniazda dla %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Nie udało się zainicjalizować połączenia z %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Nie udało się połączyć z %s:%s (%s), przekroczenie czasu połączenia"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Nie udało się"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Nie udało się połączyć z %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "ÅÄ…czenie z %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Nie udało się przetłumaczyć nazwy \"%s\""
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Tymczasowy błąd przy tłumaczeniu \"%s\""
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Coś niewłaściwego stało się przy tłumaczeniu \"%s:%s\" (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Coś niewłaściwego stało się przy tłumaczeniu \"%s:%s\" (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Nie udało się połączyć z %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Nie udało się wykonać operacji stat"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Nieprawidłowe URI, lokalne URI nie mogą zaczynać się od //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Logowanie siÄ™"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Nie można określić nazwy zdalnego systemu"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Nie udało się określić nazwy lokalnego systemu"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Serwer odrzucił połączenie, otrzymana odpowiedź: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "Polecenie USER nie powiodło się, odpowiedź serwera: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "Polecenie PASS nie powiodło się, odpowiedź serwera: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Określono serwer pośredniczący, ale nie określono skryptu rejestrowania, "
+"Acquire::ftp::ProxyLogin jest puste."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr ""
+"Polecenie skryptu rejestrowania \"%s\" nie powiodło się, odpowiedź serwera: "
+"%s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "Polecenie TYPE nie powiodło się, odpowiedź serwera: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Przekroczenie czasu połączenia"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Serwer zamknął połączenie"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Odpowiedź przepełniła bufor."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Naruszenie zasad protokołu"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Nie udało się utworzyć gniazda"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Nie udało się połączyć gniazda danych, przekroczenie czasu połączenia"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Nie udało się połączyć pasywnego gniazda."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo nie było w stanie uzyskać nasłuchującego gniazda"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Nie udało się przyłączyć gniazda"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Nie udało się nasłuchiwać na gnieździe"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Nie udało się określić nazwy gniazda"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Nie można wysłać polecenia PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Nieznana rodzina adresów %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "Polecenie EPRT nie powiodło się, odpowiedź serwera: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Przekroczony czas połączenia gniazda danych"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Nie udało się przyjąć połączenia"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Nie udało się obliczyć skrótu pliku"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Nie można pobrać pliku, odpowiedź serwera: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Przekroczony czas oczekiwania na dane"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Nie udało się przesłać danych, odpowiedź serwera: %s"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Info"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Nie można wywołać "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Napotkano przynajmniej jeden nieprawidłowy podpis."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Błąd wewnętrzny: Prawidłowy podpis, ale nie udało się ustalić odcisku klucza!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Nie udało się uruchomić apt-key by zweryfikować podpis (czy gnupg jest "
+"zainstalowane?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Nieznany błąd podczas uruchamiania apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Następujące podpisy były błędne:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Następujące podpisy nie mogły zostać zweryfikowane z powodu braku klucza "
+"publicznego:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "BÅ‚Ä…d przy pisaniu do pliku"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Błąd czytania z serwera: Zdalna strona zamknęła połączenie"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "BÅ‚Ä…d czytania z serwera"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "BÅ‚Ä…d przy pisaniu do pliku"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Operacja select nie powiodła się"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Przekroczenie czasu połączenia"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Błąd przy pisaniu do pliku wyjściowego"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Nie znaleziono pliku serwera lustrzanego \"%s\""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Nie udało się otworzyć pliku serwera lustrzanego \"%s\""
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Nie udało się otworzyć pliku serwera lustrzanego \"%s\""
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Serwer lustrzany: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Nie udało się ustawić czasu modyfikacji"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Połączenie zostało przedwcześnie zamknięte"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "Puste pliki nie mogą być prawidłowymi archiwami"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Niespełnione zależności. Proszę spróbować użyć --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Należy uruchomić \"apt --fix-broken install\", aby naprawić poniższe "
+#~ "problemy:"
+
+#~ msgid "(not found)"
+#~ msgstr "(nie znaleziono)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Sposób przypięcia: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr ""
+#~ "Dla następujących identyfikatorów kluczy brakuje klucza publicznego:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "Ominięcie katalogu %s"
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "Zależność %s od %s nie może zostać spełniona, ponieważ %s nie jest "
+#~ "dozwolone w pakietach \"%s\""
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "Zależność %s od %s nie może zostać spełniona, ponieważ nie znaleziono "
+#~ "pakietu %s"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Nie udało się spełnić zależności %s od %s: Zainstalowany pakiet %s jest "
+#~ "zbyt nowy"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "Zależność %s od %s nie może zostać spełniona, ponieważ kandydująca wersja "
+#~ "pakietu %s nie spełnia wymagań wersji"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "Zależność %s od %s nie może zostać spełniona, ponieważ pakiet %s nie ma "
+#~ "wersji kandydujÄ…cej"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Nie udało się spełnić zależności %s od %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Nie udało się spełnić zależności dla budowania %s."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Problem przy usuwaniu %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Nie udało się usunąć %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Użycie: apt-cache [opcje] polecenie\n"
+#~ " apt-cache [opcje] show pakiet1 [pakiet2 ...]\n"
+#~ "\n"
+#~ "apt-cache to niskopoziomowe narzędzie służące pobierania informacji\n"
+#~ "z podręcznego magazynu plików binarnych APT-a.\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Opcje:\n"
+#~ " -h Ten tekst pomocy.\n"
+#~ " -p=? Podręczny magazyn pakietów.\n"
+#~ " -s=? Podręczny magazyn źródeł.\n"
+#~ " -q Wyłącza wskaźnik postępu.\n"
+#~ " -i Pokazuje tylko ważne zależności przy poleceniu unmet.\n"
+#~ " -c=? Czyta wskazany plik konfiguracyjny.\n"
+#~ " -o=? Ustawia dowolnÄ… opcjÄ™ konfiguracji, np. -o dir::cache=/tmp\n"
+#~ "Więcej informacji można znaleźć na stronach podręcznika apt-cache(8)\n"
+#~ "oraz apt.conf(5).\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "Opcje:\n"
+#~ " -h Ten tekst pomocy\n"
+#~ " -q Nie pokazuje wskaźnika postępu (przydatne przy rejestrowaniu "
+#~ "działania)\n"
+#~ " -qq Nie wypisuje nic oprócz komunikatów błędów\n"
+#~ " -s Symulacja - wyświetla jedynie co powinno zostać zrobione\n"
+#~ " -f zapis/odczyt oznaczenia jako automatyczny/ręczny danego pliku\n"
+#~ " -c=? Czyta wskazany plik konfiguracyjny.\n"
+#~ " -o=? Ustawia dowolnÄ… opcjÄ™ konfiguracji, np. -o dir::cache=/tmp\n"
+#~ "Proszę zapoznać się ze stronami podręcznika systemowego apt-mark(8)\n"
+#~ "i apt.conf(5), aby uzyskać więcej informacji."
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Opcje:\n"
+#~ " -h Ten tekst pomocy.\n"
+#~ " -c=? Czyta wskazany plik konfiguracyjny.\n"
+#~ " -o=? Ustawia dowolnÄ… opcjÄ™ konfiguracji, np. -o dir::cache=/tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "Opcje:\n"
+#~ " -h Ten tekst pomocy\n"
+#~ " -q Nie pokazuje wskaźnika postępu (przydatne przy rejestrowaniu "
+#~ "działania)\n"
+#~ " -qq Nie wypisuje nic oprócz komunikatów błędów\n"
+#~ " -s Symulacja - wyświetla jedynie co powinno zostać zrobione\n"
+#~ " -f zapis/odczyt oznaczenia jako automatyczny/ręczny danego pliku\n"
+#~ " -c=? Czyta wskazany plik konfiguracyjny.\n"
+#~ " -o=? Ustawia dowolnÄ… opcjÄ™ konfiguracji, np. -o dir::cache=/tmp\n"
+#~ "Proszę zapoznać się ze stronami podręcznika systemowego apt-mark(8)\n"
+#~ "i apt.conf(5), aby uzyskać więcej informacji."
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Użycie: apt-sortpkgs [opcje] plik1 [plik2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs to proste narzędzie służące do sortowania plików pakietów.\n"
+#~ "Opcji -s używa się do wskazania typu pliku.\n"
+#~ "\n"
+#~ "Opcje:\n"
+#~ " -h Ten tekst pomocy.\n"
+#~ " -s Sortowanie pliku źródeł.\n"
+#~ " -c=? Czyta wskazany plik konfiguracyjny.\n"
+#~ " -o=? Ustawia dowolnÄ… opcjÄ™ konfiguracji, np. -o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Proces potomny zawiódł"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr ""
+#~ "Należy podać przynajmniej jeden pakiet, dla którego mają zostać pobrane "
+#~ "źródła"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Nie udało się utworzyć potoków"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Nie udało się uruchomić programu gzip "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s dla %s skompilowany %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Nie udało się utworzyć obiektu FILE*"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Nieprawidłowa linia %lu w liście źródeł %s (analiza URI)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "Nieprawidłowa linia %lu w liście źródeł %s ([opcja] nie dająca się "
+#~ "sparsować)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "Nieprawidłowa linia %lu w liście źródeł %s ([opcja] zbyt krótka)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr ""
+#~ "Nieprawidłowa linia %lu w liście źródeł %s ([%s] nie jest przypisane)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "Nieprawidłowa linia %lu w liście źródeł %s ([%s] nie ma klucza)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "Nieprawidłowa linia %lu w liście źródeł %s ([%s] klucz %s nie ma wartości)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Nieprawidłowa linia %lu w liście źródeł %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Nieprawidłowa linia %lu w liście źródeł %s (dystrybucja)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Nieprawidłowa linia %lu w liście źródeł %s (analiza URI)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr ""
+#~ "Nieprawidłowa linia %lu w liście źródeł %s (bezwzględna dystrybucja)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "Nieprawidłowa linia %lu w liście źródeł %s (analiza dystrybucji)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr ""
+#~ "Pakiet %s %s nie został odnaleziony podczas przetwarzania zależności "
+#~ "plików"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr ""
+#~ "Nie udało się wykonać operacji stat na liście pakietów źródłowych %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Zbieranie zapewnień plików"
+
+#, fuzzy
+#~ msgid "Does not start with a cleartext signature"
+#~ msgstr "Plik %s nie zaczyna się wiadomością podpisaną w trybie clearsign"
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Nie udało się znaleźć sumy kontrolnej \"%s\" w pliku Release"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Blok producenta %s nie zawiera odcisku"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Sumaryczny rozmiar obszaru zależności od wersji: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "W %s nie ma wystarczającej ilości wolnego miejsca"
+
+#~ msgid "Done"
+#~ msgstr "Gotowe"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Brak zainstalowanej bazy kluczy w %s."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Błąd wewnętrzny spowodowany przez AllUpgrade"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s nie jest prawidłowym pakietem DEB."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Użycie %s jako punktu montowania CD-ROM-u\n"
+#~ "Montowanie CD-ROM-u\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Nie udało się nałożyć łatki %s przy użyciu mmap i operacji plikowej - "
+#~ "Å‚atka wyglÄ…da na uszkodzonÄ…."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Nie udało się nałożyć łatki %s przy użyciu mmap, ale błąd nie pochodzi z "
+#~ "mmap - Å‚atka wyglÄ…da na uszkodzonÄ…"
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr "Ignorowanie niedostępnego wydania docelowego %s pakietu %s"
+
+#~ msgid "Downloading %s %s"
+#~ msgstr "Pobieranie %s %s"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "To nie jest poprawne archiwum DEB, brakuje składnika \"%s\", \"%s\" lub "
+#~ "\"%s\""
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "Błędna suma MD5"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Nie udało się odnaleźć pliku dla pakietu %s. Może to oznaczać, że trzeba "
+#~ "będzie ręcznie naprawić ten pakiet."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Nie można zapisać dziennika, openpty() nie powiodło się (/dev/pts nie "
+#~ "jest zamontowane?)\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Pomijanie nieistniejÄ…cego pliku %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Nie udało się usunąć %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Nie można utworzyć %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Nie udało się wykonać operacji stat na %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr ""
+#~ "Pliki info i katalog tymczasowy muszą być w tym samym systemie plików"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Nie udało się przejść do katalogu administracyjnego %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Błąd wewnętrzny podczas pobierania nazwy pakietu"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Czytanie listy plików"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Nie udało się otworzyć pliku listy \"%sinfo/%s\". Jeśli nie można "
+#~ "przywrócić tego pliku, należy utworzyć go jako pusty plik i bezzwłocznie "
+#~ "przeinstalować tę samą wersję pakietu!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Nie udało się przeczytać pliku listy %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Błąd wewnętrzny przy pobieraniu węzła"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Nie udało się otworzyć pliku ominięć %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Plik ominięć jest uszkodzony"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Nieprawidłowa linia w pliku ominięć: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Błąd wewnętrzny przy dodawaniu ominięcia"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Magazyn podręczny pakietów musi zostać wcześniej zainicjalizowany"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Nie udało się znaleźć nagłówka Package:, offset %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Błędna sekcja ConfFile w pliku stanu. Offset %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Błąd przy czytaniu skrótu MD5. Offset %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Nie udało się przejść do %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Nie udało się odnaleźć poprawnego pliku kontrolnego"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Nie udało się otworzyć potoku dla %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "BÅ‚Ä…d odczytu z procesu %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Otrzymano pojedynczą linię nagłówka o długości ponad %u znaków"
+
+#~ msgid "Note: This is done automatic and on purpose by dpkg."
+#~ msgstr "Uwaga: dpkg wykonał to automatycznie i celowo."
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Nieprawidłowa linia %2$lu #1 pliku override %1$s"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Nieprawidłowa linia %2$lu #2 pliku override %1$s"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Nieprawidłowa linia %2$lu #3 pliku override %1$s"
+
+#~ msgid "decompressor"
+#~ msgstr "dekompresor"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "należało przeczytać jeszcze %lu, ale nic nie zostało"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "należało zapisać jeszcze %lu, ale nie udało się to"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "Nie udało się wykonać natychmiastowej konfiguracji rozpakowanego pakietu "
+#~ "%s. Proszę wykonać \"man 5 apt.conf\" i zapoznać się z wpisem APT::"
+#~ "Immediate-Configure aby dowiedzieć się więcej."
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Wystąpił błąd podczas przetwarzania %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Wystąpił błąd podczas przetwarzania %s (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Wystąpił błąd podczas przetwarzania %s (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Wystąpił błąd podczas przetwarzania %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Wystąpił błąd podczas przetwarzania %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Wystąpił błąd podczas przetwarzania %s (NewVersion%d)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Wystąpił błąd podczas przetwarzania %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Wystąpił błąd podczas przetwarzania %s (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Wystąpił błąd podczas przetwarzania %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Wystąpił błąd podczas przetwarzania %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Błąd wewnętrzny, nie udało się odnaleźć składnika"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr "E: Lista argumentów Acquire::gpgv::Options zbyt długa. Zakończenie."
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "Wystąpił błąd podczas przetwarzania %s (NewVersion2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr ""
+#~ "Nieprawidłowa linia %u w liście źródeł %s (identyfikator producenta)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "Nie udało się uzyskać dostępu do bazy kluczy: \"%s\""
+
+#~ msgid "Could not patch file"
+#~ msgstr "Nie udało się nałożyć łatki na plik"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "No source package '%s' picking '%s' instead\n"
+#~ msgstr "Brak pakietu źródłowego \"%s\", wybieranie \"%s\" zamiast niego\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "Przetwarzanie wyzwalaczy dla %s"
+
+#~ msgid "Dynamic MMap ran out of room"
+#~ msgstr "Brak miejsca dla dynamicznego MMap"
+
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "Ponieważ zażądano tylko jednej operacji, jest bardzo prawdopodobne, że\n"
+#~ "danego pakietu po prostu nie da się zainstalować i należy zgłosić w nim\n"
+#~ "błąd."
+
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "Linia %d jest zbyt długa (max %lu)"
diff --git a/po/pt.po b/po/pt.po
new file mode 100644
index 000000000..1c5d7fbc7
--- /dev/null
+++ b/po/pt.po
@@ -0,0 +1,4481 @@
+# Debian-PT translation for apt.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+#
+#
+# Miguel Figueiredo <elmig@debianpt.org>, 2005-2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2012-06-29 15:45+0100\n"
+"Last-Translator: Miguel Figueiredo <elmig@debianpt.org>\n"
+"Language-Team: Portuguese <traduz@debianpt.org>\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 1.0\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Assinatura de arquivo inválida"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Erro na leitura de cabeçalho membro de arquivo"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Cabeçalho membro de arquivo inválido %s"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Cabeçalho membro de arquivo inválido"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Arquivo é demasiado pequeno"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Falha ao ler os cabeçalhos do arquivo"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Não foi possível encontrar registo de autenticação para: %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Arquivo corrompido"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "A soma de controlo do tar falhou, arquivo corrompido"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Tipo de cabeçalho TAR %u desconhecido, membro %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Este não é um arquivo DEB válido, falta o membro '%s'"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Erro Interno, não foi possível localizar o membro %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Ficheiro de controle não interpretável"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Falhou escrever o ficheiro %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Falhou fechar o ficheiro %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "O caminho %s é demasiado longo"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "A descompactar %s mais de uma vez"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "O directório %s é desviado"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "O pacote está a tentar escrever no alvo de desvio %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "O caminho de desvio é muito longo"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Falha stat %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Falhou renomear %s para %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "O directório %s está a ser substituído por um não-directório"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Falhou localizar o nó no seu hash bucket"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "O caminho é demasiado longo"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Substituir o pacote correspondente sem versão para %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "O ficheiro %s/%s substitui o que está no pacote %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Não foi possível ler %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Não foi possível fazer stat %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode chamado em nó ainda linkado"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Falha ao localizar o elemento de hash!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Falha ao alocar desvio (diversion)"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Erro Interno em AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "A tentar sobrescrever um desvio, %s -> %s e %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Adição dupla de desvio %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Arquivo de configuração duplicado %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "O directório %s é desviado"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "O directório %s é desviado"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "O directório %s é desviado"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "O directório %s é desviado"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "O directório %s é desviado"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Falhou o readlink %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Código de verificação hash não coincide"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "falhou renomear, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Tamanho incorrecto"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "Operação %s inválida"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Erro de escrita"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"Ocorreu um erro durante a verificação da assinatura. O repositório não está "
+"actualizado e serão utilizados os ficheiros anteriores de índice. Erro do "
+"GPG: %s: %s\n"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "Erro GPG: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"Incapaz de encontrar a entrada '%s' esperada no ficheiro Release (entrada "
+"errada em sources.list ou ficheiro malformado)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"O ficheiro Release para %s está expirado (inválido desde %s). Não serão "
+"aplicadas as actualizações para este repositório."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Distribuição em conflito: %s (esperado %s mas obtido %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Não foi possível localizar um ficheiro para o pacote %s. Isto pode "
+"significar que você precisa corrigir manualmente este pacote. (devido a "
+"arquitectura em falta)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr "Não conseguiu encontrar uma fonte para obter a versão '%s' de '%s'"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"Os arquivos de índice de pacotes estão corrompidos. Nenhum campo Filename: "
+"para o pacote %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Changlog para %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "O driver do método %s não pôde ser encontrado."
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "Verifique se o pacote 'dpkg-dev' está instalado.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Método %s não iniciou correctamente"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+"Por favor insira o disco denominado: '%s' no leitor '%s' e pressione enter."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Falta directório de listas %spartial."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Falta o directório de arquivos %spartial."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "Impossível criar acesso exclusivo ao directório %s"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "Tipo do ficheiro de índice '%s' não é suportado"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Impossível mudar para %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "A obter o ficheiro %li de %li (%s restantes)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "A obter o ficheiro %li de %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"O pacote %s necessita ser reinstalado, mas não foi possível encontrar um "
+"repositório para o mesmo."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Erro, pkgProblemResolver::Resolve gerou falhas, isto pode ser causado por "
+"pacotes mantidos (hold)."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr ""
+"Não foi possível corrigir problemas, você tem pacotes mantidos (hold) "
+"estragados."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+"As listas de pacotes ou o ficheiro de status não pôde ser analisado ou "
+"aberto."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Você terá que executar apt-get update para corrigir estes problemas"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "A lista de fontes não pôde ser lida."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Erro de compilação de regex - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Não foi encontrado o Release '%s' para '%s'"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Não foi encontrada a versão '%s' para '%s'"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Não foi possível encontrar a tarefa '%s'"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Não foi possível encontrar o pacote através da expressão regular '%s'"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Não foi possível encontrar o pacote através da expressão regular '%s'"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Não foi possível encontrar o pacote %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+"Não foi possível seleccionar versões do pacote '%s' pois é puramente virtual"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"Não foi possível seleccionar a versão mais recente a partir do pacote '%s' "
+"já que é puramente virtual"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+"Não é possível seleccionar a versão candidata do pacote %s já que não tem "
+"candidato"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"Não é possível seleccionar a versão instalada do pacote %s pois não está "
+"instalado"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"Não pode seleccionar a versão instalada nem a versão candidata do pacote "
+"'%s' pois não tem nenhuma destas"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Linha %u é demasiado longa na lista de fontes %s."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "A desmontar o CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "A utilizar o ponto de montagem do CD-ROM %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "A aguardar pelo disco...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "A montar o CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "A identificar... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Label Guardada: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "A pesquisar os ficheiros de índice do disco...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Foram encontrados %zu índices de pacotes, %zu índices de código-fonte, %zu "
+"índices de tradução e %zu assinaturas\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Não foi possível localizar quaisquer ficheiros de pacote, talvez este não "
+"seja um disco Debian ou seja a arquitectura errada?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Encontrada a etiqueta '%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Isso não é um nome válido, tente novamente.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Este disco tem o nome: \n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "A copiar listas de pacotes..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "A escrever lista de novas source\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "As entradas de listas de Source para este Disco são:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Não foi possível fazer stat %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Impossível executar stat ao ponto de montagem %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Impossível executar stat ao cdrom"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Opção '%c' da linha de comandos [de %s] é desconhecida."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Opção %s de linha de comandos não é compreendida"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Opção %s da linha de comandos não é booleana"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "A opção %s necessita de um argumento."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "Opção %s: Especificação de item de configuração tem de ter um =<val>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Opção %s necessita de um número inteiro como argumento, não '%s'"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Opção '%s' é demasiado longa"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "O sentido %s não é compreendido, tente verdadeiro ou falso."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Operação %s inválida"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Abreviatura de tipo desconhecida: '%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "A abrir o ficheiro de configuração %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Erro de sintaxe %s:%u: O bloco começa sem nome."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Erro de sintaxe %s:%u: Tag mal formada"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Erro de sintaxe %s:%u: Lixo extra depois do valor"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"Erro de sintaxe %s:%u: Directivas só podem ser feitas no nível mais alto"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Erro de sintaxe %s:%u: Demasiados includes encadeados"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Erro de sintaxe %s:%u: Incluído a partir deste ponto"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Erro de sintaxe %s:%u: Directiva '%s' não suportada"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Erro de sintaxe %s:%u: directiva clara necessita de uma árvore de opções "
+"como argumento"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Erro de sintaxe %s:%u: Lixo extra no final do ficheiro"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Problema ao remover o link do ficheiro %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr ""
+"Não está a ser utilizado acesso exclusivo para apenas leitura ao ficheiro %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Não foi possível abrir ficheiro de lock %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr ""
+"Não está a ser utilizado o acesso exclusivo para o ficheiro %s, montado via "
+"nfs"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Não foi possível obter acesso exclusivo a %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+"Lista de ficheiros que não podem ser criados porque '%s' não é um directório"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr "A ignorar '%s' no directório '%s' porque não é um ficheiro normal"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+"A ignorar o ficheiro '%s' no directório '%s' porque não tem extensão no nome "
+"do ficheiro"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"A ignorar o ficheiro '%s' no directório '%s' porque tem uma extensão "
+"inválida no nome do ficheiro"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Esperou por %s mas não estava lá"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "O sub-processo %s recebeu uma falha de segmentação."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "O sub-processo %s recebeu o sinal %u."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "O sub-processo %s retornou um código de erro (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "O sub-processo %s terminou inesperadamente"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Erro de leitura"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Erro de escrita"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Problema ao fechar o ficheiro gzip %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Falhou criar subprocesso IPC"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Falhou executar compactador "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Não foi possível abrir ficheiro o %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Não foi possível abrir o descritor de ficheiro %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "lidos, ainda restam %llu para serem lidos mas não resta nenhum"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "escritos, ainda restam %llu para escrever mas não foi possível"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Problema ao fechar o ficheiro %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Problema ao renomear o ficheiro %s para %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Problema sincronizando o ficheiro"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Não foi possível fazer stat %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Não conseguiu escrever para %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Não é possível fazer mmap a um ficheiro vazio"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Não foi possível fazer mmap de %llu bytes"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Não foi possível duplicar o descritor de ficheiro %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "Não foi possível fechar mmap"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "Não foi sincronizar mmap "
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Não foi possível fazer mmap de %lu bytes"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Falhou truncar o ficheiro"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"O Dynamic MMap ficou sem espaço. Por favor aumente o tamanho de APT::Cache-"
+"Start. Valor actual: %lu. (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"Não foi possível aumentar o tamanho do MMap pois o limite de %lu bytes já "
+"foi alcançado."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Não foi possível aumentar o tamanho do MMap pois o crescimento automático "
+"está desabilitado pelo utilizador."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Erro !"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Pronto"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... Pronto"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%lid %lih %limin %lis"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%lih %limin %lis"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%limin %lis"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%lis"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "A selecção %s não foi encontrada"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Não foi possível fazer parse ao ficheiro Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Nenhuma secção, no ficheiro Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Nenhuma entrada hash no ficheiro Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Entrada inválida, '%s', no ficheiro de Release: %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Não foi possível fazer parse ao ficheiro do pacote %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"Não foi possível obter acesso exclusivo ao directório de administração (%s), "
+"outro processo está a utilizá-lo?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr ""
+"Não foi possível criar acesso exclusivo ao directório de administração (%s), "
+"é root?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"O dpkg foi interrompido, para corrigir o problema tem de correr manualmente "
+"'%s'"
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Sem acesso exclusivo"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "A instalar %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "A configurar %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "A remover %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "A remover completamente %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "A notar o desaparecimento de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "A correr o 'trigger' de pós-instalação %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "%s instalado"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Falta o directório '%s'"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "Não foi possível abrir ficheiro o '%s'"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "A preparar %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "A desempacotar %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "A preparar para configurar %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "A preparar a remoção de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "%s removido"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "A preparar para remover completamente %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "Remoção completa de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "Não conseguiu escrever para %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "A operação foi interrompida antes de poder terminar"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr "Nenhum relatório apport escrito pois MaxReports já foi atingido"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "problemas de dependências - deixando por configurar"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Nenhum relatório apport escrito pois a mensagem de erro indica que é um erro "
+"de seguimento de um erro anterior."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Nenhum relatório apport escrito pois a mensagem de erro indica erro de disco "
+"cheio"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Nenhum relatório apport escrito pois a mensagem de erro indica um erro de "
+"memória esgotada"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Nenhum relatório apport escrito pois a mensagem de erro indica erro de disco "
+"cheio"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"Nenhum relatório apport escrito pois a mensagem de erro indica um erro de I/"
+"O do dpkg"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "A construir árvore de dependências"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Versões candidatas"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Geração de dependências"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "A ler a informação de estado"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Falhou abrir o StateFile %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Falha escrever ficheiro temporário StateFile %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "Enviar cenário a resolver"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "Enviar pedido para resolvedor"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "Preparar para receber solução"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr "O resolvedor externo falhou sem uma mensagem de erro adequada"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "Executar resolvedor externo"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Execute external planner"
+msgstr "Executar resolvedor externo"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send request to planner"
+msgstr "Enviar pedido para resolvedor"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send scenario to planner"
+msgstr "Enviar cenário a resolver"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "External planner failed without a proper error message"
+msgstr "O resolvedor externo falhou sem uma mensagem de erro adequada"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "Escreveu %i registos.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "Escreveu %i registos com %i ficheiros em falta.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "Escreveu %i registos com %i ficheiros não coincidentes\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"Escreveu %i registos com %i ficheiros em falta e %i ficheiros não "
+"coincidentes\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "Não foi possível encontrar registo de autenticação para: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Hash não coincide para: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Sistema de empacotamento '%s' não é suportado"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr ""
+"Não foi possível determinar um tipo de sistema de empacotamento adequado"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "A correr o dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"Não foi possível proceder à configuração imediata em '%s'. Para detalhes, "
+"por favor veja man 5 apt.conf em APT::Immediate-Configure. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "Não pode configurar '%s'. "
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Esta execução da instalação irá necessitar de remover temporariamente o "
+"pacote essencial %s devido a um loop de Conflitos/Pré-Dependências. Isto "
+"normalmente é mau, mas se você quer realmente fazer isso, active a opção "
+"APT::Force-LoopBreak."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Cache de pacotes vazia"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "O ficheiro de cache de pacotes está corrompido"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "O ficheiro de cache de pacotes é de uma versão incompatível"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Este APT não suporta o sistema de versões '%s'"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "A cache de pacotes foi gerada para uma arquitectura diferente"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "O ficheiro de cache de pacotes está corrompido, é demasiado pequeno"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Depende"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Pré-Depende"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Sugere"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Em Conflito"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Recomenda"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Substitui"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Estraga"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Aumenta"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Obsoleta"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "importante"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "necessário"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "padrão"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "extra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "opcional"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "A cache possui um sistema de versões incompatível"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Ocorreu um erro ao processar %s (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"Uau, você excedeu o número de nomes de pacotes que este APT é capaz de "
+"suportar."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr ""
+"Uau, você excedeu o número de versões que este APT é capaz de suportar."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+"Uau, você excedeu o número de descrições que este APT é capaz de suportar."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+"Uau, você excedeu o número de dependências que este APT é capaz de suportar."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "A ler as listas de pacotes"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Erro de I/O ao gravar a cache de código fonte"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Tipo do ficheiro de índice '%s' não é suportado"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"O valor '%s' é inválido para APT::Default-Release porque tal lançamento não "
+"está disponível nas fontes"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Registo inválido no ficheiro de preferências %s, sem cabeçalho Package"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Não foi possível entender o tipo de marca (pin) %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Nenhuma prioridade (ou zero) especificada para marcação (pin)"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Override %s malformado linha %llu #1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "A abrir %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Linha mal formada %u na lista de fontes %s (tipo)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "O tipo '%s' não é conhecido na linha %u na lista de fontes %s"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Linha mal formada %u na lista de fontes %s (tipo)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "O tipo '%s' não é conhecido na linha %u na lista de fontes %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Você deve colocar alguns URIs 'source' no seu sources.list"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Falhou obter %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Falhou o download de alguns ficheiros de índice. Foram ignorados ou os "
+"antigos foram usados em seu lugar."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "A calcular a actualização"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Obter:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr ""
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Obtidos %sB em %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [A trabalhar]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Troca de mídia: Por favor insira o disco chamado\n"
+" '%s'\n"
+"no leitor '%s' e pressione enter\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "A corrigir dependências..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " falhou."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Não foi possível corrigir dependências"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Não foi possível minimizar o conjunto de actualizações"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Feito"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+"Você pode querer executar 'apt --fix-broken install' para corrigir isso."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Dependências não satisfeitas. Tente 'apt --fix-broken install' sem nenhum "
+"pacote (ou especifique uma solução)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Note, a seleccionar '%s' para a tarefa '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Note, a seleccionar '%s' para a expressão regular '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Note, a seleccionar '%s' para a expressão regular '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "O pacote %s é um pacote virtual disponibilizado por:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [Instalado]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr "[Não é versão candidata]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Você deve seleccionar explicitamente um para instalar."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"O pacote %s não está disponível, mas é referenciado por outro pacote.\n"
+"Isso pode significar que o pacote falta, ou ficou obsoleto, ou\n"
+"está disponível somente a partir de outra fonte\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "No entanto, os seguintes pacotes substituem-no:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "O pacote '%s' não tem candidato para instalação"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Pacotes virtuais como '%s' não podem ser removidos\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"O pacote '%s' não está instalado, por isso não será removido. Queria dizer "
+"'%s'?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "O pacote '%s' não está instalado, por isso não será removido\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Note, a seleccionar '%s' em vez de '%s'\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Este APT tem Poderes de Super Vaca."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Não foi encontrado nenhum pacote"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "AVISO: Os seguintes pacotes não podem ser autenticados!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Aviso de autenticação ultrapassado.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Alguns pacotes não puderam ser autenticados"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Instalar estes pacotes sem verificação?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Há problemas e foi utilizado -y sem --force-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Não foi possível determinar o espaço livre em %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Você não possui espaço livre suficiente em %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Impossível criar acesso exclusivo ao directório de downloads"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Alguns pacotes não puderam ser instalados. Isso pode significar que\n"
+"você solicitou uma situação impossível ou se você está a usar a\n"
+"distribuição unstable em que alguns pacotes pedidos ainda não foram \n"
+"criados ou foram movidos do Incoming."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "A seguinte informação pode ajudar a resolver a situação:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Pacotes estragados"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Não foi possível obter alguns arquivos, tente talvez correr apt-get update "
+"ou tente com --fix-missing?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Erro Interno, InstallPackages foi chamado com pacotes estragados!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Pacotes precisam de ser removidos mas Remove está desabilitado."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Há problemas e foi utilizado -y sem --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Há problemas e foi utilizado -y sem --force-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Erro Interno, Ordering não terminou"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Estranho... Os tamanhos não coincidiram, escreva para apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "É necessário obter %sB/%sB de arquivos.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "É necessário obter %sB de arquivos.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr ""
+"Após esta operação, serão utilizados %sB adicionais de espaço em disco.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Após esta operação, será libertado %sB de espaço em disco.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "Trivial Only especificado mas isto não é uma operação trivial."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Sim, faça como eu digo!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Você está prestes a fazer algo potencialmente nocivo.\n"
+"Para continuar escreva a frase '%s'\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Abortado."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Deseja continuar?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Falhou o download de alguns ficheiros"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Download completo e em modo de fazer apenas o download"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing e troca de mídia não são suportados actualmente"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Não foi possível corrigir os pacotes em falta."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "A abortar a instalação."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"O seguinte pacote desapareceu do seu sistema pois\n"
+"todos os ficheiros foram sobrescritos por outros pacotes:"
+msgstr[1] ""
+"Os seguintes pacotes desapareceram do seu sistema pois\n"
+"todos os ficheiros foram por outros pacotes:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Nota: Isto foi feito automaticamente e intencionalmente pelo dpkg."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "Não é suposto nós apagarmos coisas, não pode iniciar o AutoRemover"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Hmm, parece que o AutoRemover destruiu algo que realmente não deveria ter\n"
+"acontecido. Por favor arquive um relatório de bug contra o apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Erro Interno, o AutoRemover estragou coisas"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"O seguinte pacote foi instalado automaticamente e já não é necessário:"
+msgstr[1] ""
+"Os seguintes pacotes foram instalados automaticamente e já não são "
+"necessários:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "O pacote %lu foi instalado automaticamente e já não é necessário.\n"
+msgstr[1] ""
+"Os pacotes %lu foram instalados automaticamente e já não são necessários.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Utilize '%s' para o remover."
+msgstr[1] "Utilize '%s' para os remover."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Os seguintes pacotes extra serão instalados:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Pacotes sugeridos:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Pacotes recomendados:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "Saltando %s, já está instalado e a actualização não está definida.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr "Saltando %s, não está instalado e só são pedidas actualizações.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr ""
+"A reinstalação de %s não é possível, o download do mesmo não pode ser "
+"feito.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s já está na versão mais recente.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s está definido para ser instalado manualmente.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Versão seleccionada '%s' (%s) para '%s'\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Versão seleccionada '%s' (%s) para '%s' devido a '%s'\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"NOTE:\tIsto é apenas uma simulação!\n"
+"\to %s necessita de privilégios de root para a execução real.\n"
+"\tTenha em mente que o acesso exclusivo está desabilitado,\n"
+"\tpor isso não confie na relevância da real situação actual!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Instalado]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [Instalado]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [Instalado]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [Instalado]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "mas %s está instalado"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "mas %s está para ser instalado"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "mas não é instalável"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "mas é um pacote virtual"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "mas não vai ser instalado"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "mas não está instalado"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " ou"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Os pacotes a seguir têm dependências não satisfeitas:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Serão instalados os seguintes NOVOS pacotes:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Serão REMOVIDOS os seguintes pacotes:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Serão mantidos em suas versões actuais os seguintes pacotes:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Serão actualizados os seguintes pacotes:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Será feito o DOWNGRADE aos seguintes pacotes:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Os seguintes pacotes mantidos serão mudados:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (devido a %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"AVISO: Os seguintes pacotes essenciais serão removidos.\n"
+"Isso NÃO deverá ser feito a menos que saiba exactamente o que está a fazer!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu pacotes actualizados, %lu pacotes novos instalados, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu reinstalados, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu a que foi feito o downgrade, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu a remover e %lu não actualizados.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu pacotes não totalmente instalados ou removidos.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[S/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "s/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "S"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "Tem de fornecer pelo menos um padrão de busca"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "O ficheiro do pacote %s está dessincronizado."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Ficheiros de Pacotes :"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+"A cache está dessincronizada, não pode x-referenciar um ficheiro de pacote"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Pacotes Marcados:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Instalado: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Candidato: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(nenhum)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Tabela de Versão:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Não foi possível encontrar o pacote através da expressão regular '%s'"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Não foi possível encontrar o pacote através da expressão regular '%s'"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Não foi possível encontrar o pacote através da expressão regular '%s'"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "A escolher '%s' como pacote pacote de código fonte em vez de '%s'\n"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "Ignorar a versão '%s', não disponível, do pacote '%s'"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Tem de especificar pelo menos um pacote para obter o código fonte de"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Não foi possível encontrar um pacote de código fonte para %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"AVISO: o empacotamento de '%s' é mantido no sistema de controle de versões "
+"'%s' em:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Por favor utilize:\n"
+"%s\n"
+"para obter as últimas actualizações (possivelmente por lançar) ao pacote.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "A saltar o ficheiro '%s', já tinha sido feito download'\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "É necessário obter %sB/%sB de arquivos de código fonte.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "É necessário obter %sB de arquivos de código fonte.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Obter código fonte %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Falhou obter alguns arquivos."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr ""
+"A saltar a descompactação do pacote de código fonte já descompactado em %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "O comando de descompactação '%s' falhou.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Verifique se o pacote 'dpkg-dev' está instalado.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "O comando de compilação '%s' falhou.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr ""
+"Não foi possível obter informações de dependências de compilação para %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s não tem dependências de compilação.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Deve especificar pelo menos um pacote para verificar as dependências de "
+"compilação"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"Nenhuma informação de arquitectura disponível para %s. Para configuração "
+"veja apt.conf(5) APT::Architectures"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Falhou processar as dependências de compilação"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Falhou processar as dependências de compilação"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Falha ao baixar %s %s\n"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "O pacote %s versão %s tem uma dependência não satisfeita:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "O comando update não leva argumentos"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "O comando update não leva argumentos"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Total de nomes de pacotes: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Total de estruturas de pacotes: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Pacotes normais: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Pacotes virtuais puros: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Pacotes virtuais únicos: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Pacotes virtuais misturados: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Faltam: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Total de versões distintas: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Total de descrições distintas: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Total de dependências: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Total de relações ver/ficheiro: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Total de relações Desc/Ficheiro: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Total de Mapeamentos 'Provides': "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Total de strings globbed: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Espaço total desperdiçado: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Espaço total contabilizado: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+"Este comando foi depreceado. Em vez disso por favor utilize 'apt-mark "
+"showauto'."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Mostrar registos de código-fonte"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Procurar na lista de pacotes por um padrão regex"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Mostrar informações em bruto de dependências de um pacote"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Mostrar a informação de dependências inversas de um pacote"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Mostrar um registo legível sobre o pacote"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Listar o nome de todos os pacotes no sistema"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Mostrar as configurações de políticas"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr ""
+"Por favor indique um nome para este Disco, tal como 'Debian 5.0.3 Disco 1'"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Por favor insira um Disco no leitor e pressione enter"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Falhou ao montar '%s' para '%s'"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Repita este processo para o resto dos CDs no seu conjunto."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "os argumentos não estão em pares"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Utilização: apt-config [opções] comando\n"
+"\n"
+"O apt-config é uma ferramenta simples para ler o ficheiro de config do APT\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Utilização: apt-extracttemplates ficheiro1 [ficheiro2 ...]\n"
+"\n"
+"O apt-extracttemplates é uma ferramenta para extrair configuração\n"
+"e informação de template de pacotes debian.\n"
+"\n"
+"Opções:\n"
+" -h Este texto de ajuda\n"
+" -t Definir o directório temporário\n"
+" -c=? Ler este ficheiro de configuração\n"
+" -o=? Definir uma opção arbitrária de configuração, p.e.: -o dir::cache=/"
+"tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Não pode obter a versão do debconf. O debconf está instalado?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Impossível encontrar o pacote %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s está definido para ser instalado automaticamente.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Este comando foi depreceado. Em vez disso, por favor utilize 'apt-mark auto' "
+"e 'apt-mark manual'."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Erro Interno, o solucionador de problemas estragou coisas"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Módulos Suportados:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Utilização: apt-get [opções] comando\n"
+" apt-get [opções] install|remove pacote1 [pacote2 ...]\n"
+" apt-get [opções] source pacote1 [pacote2 ...]\n"
+"\n"
+"O apt-get é um interface simples de linha de comandos para obter\n"
+"e instalar pacotes. Os comandos utilizados mais frequentemente\n"
+"são update e install.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Obter novas listas de pacotes"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Executar uma actualização"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Instalar novos pacotes (o pacote é libc6 e não libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Remover pacotes"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Remover pacotes e ficheiros de configuração"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Remover automaticamente todos os pacotes não utilizados"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Actualizar a distribuição, veja apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Seguir as escolhas feitas no dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Configurar as dependências de compilação de pacotes de códigofonte"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Apagar ficheiros de arquivo obtidos por download"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Apagar ficheiros de arquivo antigos obtidos por download"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Verificar se existem dependências erradas"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Fazer o download de arquivos de código-fonte"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "Obter o pacote binário para o directório actual"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "Obter e mostrar o changelog de um pacote"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "Tem de especificar pelo menos um pacote para obter o código fonte de"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Utilização: apt-internal-solver\n"
+"\n"
+"O apt-internal-solver é um interface para utilizar o actual interno como um\n"
+" resolvedor externo para a família APT para depuração ou semelhante.\n"
+"\n"
+"Opções:\n"
+" -h Este texto de ajuda.\n"
+" -q Saída para registo - sem indicador de progresso\n"
+" -c=? Ler este ficheiro de configuração\n"
+" -o=? Definir uma opção de configuração arbitrária, p.e. dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Utilização: apt-internal-solver\n"
+"\n"
+"O apt-internal-solver é um interface para utilizar o actual interno como um\n"
+" resolvedor externo para a família APT para depuração ou semelhante.\n"
+"\n"
+"Opções:\n"
+" -h Este texto de ajuda.\n"
+" -q Saída para registo - sem indicador de progresso\n"
+" -c=? Ler este ficheiro de configuração\n"
+" -o=? Definir uma opção de configuração arbitrária, p.e. dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "%s não pode ser marcado pois não está instalado.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s já estava definido para ser instalado manualmente.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s já estava definido para ser instalado automaticamente.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s já estava marcado para manter.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s já estava para não manter.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "Falhou executar dpkg. É root?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "%s marcado para manter.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Cancelou manter em %s.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"Utilização: apt-mark [opções] {auto|manual} pacote1 [pacote2...]\n"
+"\n"
+"apt-mark é um interface simples de linha de comandos para marcar pacotes "
+"como instalados de forma manual ou automática. Pode também listar "
+"marcações.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "Marca os pacotes como instalados automaticamente"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "Marca os pacotes como instalados manualmente"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Registo de pacote desconhecido!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "A ler as listas de pacotes"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "Pacotes Marcados:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Pacotes estragados"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "mas é um pacote virtual"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "A ler a informação de estado"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Configuração pré-definida errada!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Carregue em enter para continuar."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Deseja apagar quaisquer ficheiros .deb obtidos previamente?"
+
+# Note to translators: The following four messages belong together. It doesn't
+# matter where sentences start, but it has to fit in just these four lines, and
+# at only 80 characters per line, if possible.
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr ""
+"Ocorreram alguns erros ao descompactar. Os pacotes que foram instalados"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "serão configurados. Isto pode resultar em erros duplicados"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "causados por dependências em falta. Isto está OK, somente os erros"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"acima desta mensagem são importantes. Por favor resolva-os e execute "
+"[I]nstalar novamente"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "A juntar a informação disponível"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "A lista de extensão de pacotes é demasiado longa"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Erro ao processar o directório %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Lista de extensão de códigos-fonte é demasiado longa"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Erro ao escrever o cabeçalho no ficheiro de conteúdo"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Erro ao processar o conteúdo %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Utilização: apt-ftparchive [opções] comando\n"
+"Comandos: packages caminho_binário [ficheiro_override [prefixo_caminho]]\n"
+" sources caminho_fonte [ficheiro_override [prefixo_caminho]]\n"
+" contents caminho\n"
+" release caminho\n"
+" generate config [grupos]\n"
+" clean config\n"
+"\n"
+"O apt-ftparchive gera ficheiros de índice para repositórios Debian. Ele \n"
+"suporta muitos estilos de criação, desde totalmente automatizados até \n"
+"substitutos funcionais para o dpkg-scanpackages e dpkg-scansources\n"
+"\n"
+"O apt-ftparchive gera ficheiros Packages a partir de uma árvore de .debs.\n"
+" O ficheiro Package contém o conteúdo de todos os campos de controle de \n"
+"cada pacote bem como o hash MD5 e tamanho do ficheiro. É suportado um \n"
+"ficheiro override para forçar o valor de Priority e Section.\n"
+"\n"
+"Similarmente, o apt-ftparchive gera ficheiros Sources a partir de uma \n"
+"árvore de .dscs. A opção --source-override pode ser utilizada para \n"
+"especificar um ficheiro override de fontes\n"
+"\n"
+"Os comandos 'packages' e 'sources' devem ser executados na raiz da \n"
+"árvore. CaminhoBinário deve apontar para a base de procura recursiva \n"
+"e o ficheiro override deve conter as flags override. CaminhoPrefixo é \n"
+"incluído aos campos filename caso esteja presente. Exemplo de uso do \n"
+"repositório Debian :\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Opções:\n"
+" -h Este texto de ajuda\n"
+" --md5 Controlar a criação do MD5\n"
+" -s=? Ficheiro override de código-fonte \n"
+" -q Silencioso\n"
+" -d=? Seleccionar a base de dados de caching opcional\n"
+" --no-delink Habilitar o modo de debug delinking\n"
+" --contents Controlar a criação do ficheiro de conteúdo\n"
+" -c=? Ler este ficheiro de configuração\n"
+" -o=? Definir uma opção de configuração arbitrária"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Nenhuma selecção coincidiu"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Faltam alguns ficheiros no grupo `%s' do ficheiro do pacote"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "A base de dados estava corrompida, ficheiro renomeado para %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "A base de dados é antiga, a tentar actualizar %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"O formato da BD é inválido. Se actualizou a partir de uma versão antiga do "
+"apt, por favor remova-a e crie novamente a base de dados."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Não foi possível abrir o ficheiro %s da base de dados: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Falhou o readlink %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "O arquivo não tem registo de controlo"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Não foi possível obter um cursor"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Falhou alocar memória"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Algoritmo de compressão desconhecido '%s'"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Saída compactada %s precisa de um conjunto de compressão"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Falha ao criar pipe IPC para subprocesso"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Falhou o fork"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Compactar filho"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Erro Interno, falhou criar %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Falhou o IO para subprocesso/arquivo"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Falhou ler durante o cálculo de MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Não foi possível abrir %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Override %s malformado linha %llu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Falhou ler o ficheiro override %s"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Override %s malformado linha %llu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Override %s malformado linha %llu #2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Override %s malformado linha %llu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "W: Não foi possível ler o directório %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "W: Não foi possível fazer stat %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "W: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: Os erros aplicam-se ao ficheiro "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Falhou resolver %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Falhou ao percorrer a árvore"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Falhou abrir %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Falhou ligar %s a %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " Limite DeLink de %sB atingido.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Arquivo não possuía campo package"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s não possui entrada override\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " o maintainer de %s é %s, não %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s não possui fonte de entrada de 'override'\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s também não possui entrada binária de 'override'\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "A aguardar por cabeçalhos"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "O servidor HTTP enviou um cabeçalho de resposta inválido"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Linha de cabeçalho errada"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "O servidor HTTP enviou um cabeçalho Content-Length inválido"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "O servidor HTTP enviou um cabeçalho Content-Range inválido"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Este servidor HTTP possui suporte de range errado"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Formato de data desconhecido"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Dados de cabeçalho errados"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "A ligação falhou"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Erro interno"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Não foi capaz de ler a base de dados de cdrom %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Por favor utilize o apt-cdrom para fazer com que este CD seja reconhecido "
+"pelo APT. apt-get update não pode ser utilizado para adicionar novos CDs"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "CD errado"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Impossível desmontar o CD-ROM em %s, pode ainda estar a ser utilizado."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Disco não encontrado."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Ficheiro não encontrado"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "A Ligar a %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Não foi possível criar um socket para %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Não posso iniciar a ligação para %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Não foi possível ligar a %s:%s (%s), a conexão expirou"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Falhou"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Não foi possível ligar em %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "A ligar a %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Não foi possível resolver '%s'"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Falha temporária a resolver '%s'"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Algo estranho aconteceu ao resolver '%s:%s' (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Algo estranho aconteceu ao resolver '%s:%s' (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Não foi possível ligar a %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Falhou o stat"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "URI inválido, URIs locais não devem começar por //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "A identificar-se no sistema"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Não foi possível determinar o nome do posto"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Não foi possível determinar o nome local"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "O servidor recusou a ligação e respondeu: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER falhou, o servidor respondeu: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS falhou, o servidor respondeu: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Foi especificado um servidor de proxy mas não um script de login, Acquire::"
+"ftp::ProxyLogin está vazio."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "O comando de script de login '%s' falhou, o servidor respondeu: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE falhou, o servidor respondeu: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Foi atingido o tempo limite de ligação"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "O servidor fechou a ligação"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Uma resposta sobrecarregou o buffer."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Corrupção de protocolo"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Não foi possível criar um socket"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Não foi possível ligar socket de dados, a ligação expirou"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Não foi possível ligar socket passivo."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo não foi capaz de obter um socket de escuta"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Não foi possível fazer o bind a um socket"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Não foi possível executar listen no socket"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Não foi possível determinar o nome do socket"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Não foi possível enviar o comando PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Família de endereços %u desconhecida (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT falhou, o servidor respondeu: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Ligação de socket de dados expirou"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Impossível aceitar ligação"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Problema ao calcular o hash do ficheiro"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Não foi possível obter o ficheiro, o servidor respondeu '%s'"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Expirou o tempo do socket de dados"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "A transferência de dados falhou, o servidor respondeu '%s'"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Pesquisa"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Não foi possível invocar "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Pelo menos uma assinatura inválida foi encontrada."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Erro interno: Assinatura válida, mas não foi possível determinar a impressão "
+"digital da chave?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Não foi possível executar 'apt-key' para verificar a assinatura (o gnupg "
+"está instalado?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Erro desconhecido ao executar apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "As seguintes assinaturas eram inválidas:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"As seguintes assinaturas não puderam ser verificadas porque a chave pública "
+"não está disponível:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Erro ao escrever para o ficheiro"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Erro ao ler do servidor. O lado remoto fechou a ligação"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Erro ao ler do servidor"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Erro ao escrever para ficheiro"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "A selecção falhou"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "O tempo da ligação expirou"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Erro ao escrever para o ficheiro de saída"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Não foi encontrado ficheiro de mirror '%s'"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Não pode ler ficheiro de mirror '%s'"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Não pode ler ficheiro de mirror '%s'"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Mirror: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Falhou definir hora de modificação"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Ligação encerrada prematuramente"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "Ficheiros vazios não podem ser arquivos válidos"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Dependências não satisfeitas. Tente utilizar --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Você deve querer executar 'apt --fix-broken install' para corrigir estes:"
+
+#~ msgid "(not found)"
+#~ msgstr "(não encontrado)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Marcação do Pacote: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr ""
+#~ "Não existe qualquer chave pública disponível para as seguintes IDs de "
+#~ "chave:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "O directório %s é desviado"
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "a dependência de %s por %s não pode ser satisfeita porque %s não é "
+#~ "permitido em pacotes '%s'"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "a dependência de %s para %s não pôde ser satisfeita porque o pacote %s "
+#~ "não pôde ser encontrado"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Falha ao satisfazer a dependência %s para %s: O pacote instalado %s é "
+#~ "demasiado novo"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "a dependência de %s para %s não pode ser satisfeita porque a versão "
+#~ "candidata do pacote %s não pode satisfazer os requisitos de versão"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "a dependência de %s para %s não pode ser satisfeita porque o pacote %s "
+#~ "não tem versão candidata"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Falha ao satisfazer a dependência %s para %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Não foi possível satisfazer as dependências de compilação para %s."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Problema ao executar unlinking %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Falhou o unlink %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Utilização: apt-cache [opções] comando\n"
+#~ " apt-cache [opções] show pacote1 [pacote2 ...]\n"
+#~ "\n"
+#~ "O apt-cache é uma ferramenta de baixo nível utilizada para questionar\n"
+#~ " informação dos ficheiros de cache binários do APT\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Opções:\n"
+#~ " -h Este texto de ajuda.\n"
+#~ " -p=? A cache de pacotes.\n"
+#~ " -s=? A cache de fontes.\n"
+#~ " -q Desabilitar o indicador de progresso.\n"
+#~ " -i Mostrar apenas dependências importantes para o comando unmet.\n"
+#~ " -c=? Ler este ficheiro de configuração.\n"
+#~ " -o=? Definir uma opção arbitrária de configuração, p.e.: -o dir::cache=/"
+#~ "tmp\n"
+#~ "Para mais informações veja as páginas do manual apt-cache(8) e apt."
+#~ "conf(5).\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "Opções:\n"
+#~ " -h\tEste texto de ajuda.\n"
+#~ " -q\tSaída para registo - sem indicador de progresso\n"
+#~ " -qq Sem saída excepto para erros\n"
+#~ " -s\tNão fazer. Apenas escreve o que seria feito.\n"
+#~ " -f\tler/escrever marcação auto/manual no ficheiro indicado\n"
+#~ " -c=? Ler este ficheiro de configuração\n"
+#~ " -o=? Definir uma opção de configuração arbitrária, p.e. -o dir::cache=/"
+#~ "tmp\n"
+#~ "Para mais informações veja as páginas apt-mark(8) e apt.conf(5) do manual."
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Opções:\n"
+#~ " -h Este texto de ajuda.\n"
+#~ " -c=? Ler este ficheiro de configuração\n"
+#~ " -o=? Definir uma opção arbitrária de configuração, p.e.: -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "Opções:\n"
+#~ " -h\tEste texto de ajuda.\n"
+#~ " -q\tSaída para registo - sem indicador de progresso\n"
+#~ " -qq Sem saída excepto para erros\n"
+#~ " -s\tNão fazer. Apenas escreve o que seria feito.\n"
+#~ " -f\tler/escrever marcação auto/manual no ficheiro indicado\n"
+#~ " -c=? Ler este ficheiro de configuração\n"
+#~ " -o=? Definir uma opção de configuração arbitrária, p.e. -o dir::cache=/"
+#~ "tmp\n"
+#~ "Para mais informações veja as páginas apt-mark(8) e apt.conf(5) do manual."
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Utilização: apt-sortpkgs [opções] ficheiro1 [ficheiro2 ...]\n"
+#~ "\n"
+#~ "O apt-sortpkgs é uma ferramenta simples para ordenar ficheiros de "
+#~ "pacotes.\n"
+#~ "A opção -s é utilizada para indicar que tipo de ficheiro é.\n"
+#~ "\n"
+#~ "Opções:\n"
+#~ " -h Este texto de ajuda\n"
+#~ " -s Utilizar a ordenação de ficheiros de código-fonte\n"
+#~ " -c=? Ler este ficheiro de configuração\n"
+#~ " -o=? Definir uma opção arbitrária de configuração, p.e.: -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "O processo filho falhou"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr ""
+#~ "Tem de especificar pelo menos um pacote para obter o código fonte de"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Falhou a criação de pipes"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Falhou executar gzip "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s para %s compilado em %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Falhou criar FILE*"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Linha mal formada %lu na lista de fontes %s (parse de URI)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "Linha mal formada %lu na lista de fontes %s ([opção] não interpretável)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr ""
+#~ "Linha mal formada %lu na lista de fontes %s ([opção] demasiado curta)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr ""
+#~ "Linha mal formada %lu na lista de fontes %s ([%s] não é uma atribuição)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "Linha mal formada %lu na lista de fontes %s ([%s] não tem chave)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "Linha mal formada %lu na lista de fontes %s ([%s] chave %s não tem valor)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Linha mal formada %lu na lista de fontes %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Linha mal formada %lu na lista de fontes %s (distribuição)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Linha mal formada %lu na lista de fontes %s (parse de URI)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "Linha mal formada %lu na lista de fontes %s (distribuição absoluta)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "Linha mal formada %lu na lista de fontes %s (dist parse)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr ""
+#~ "O pacote %s %s não foi encontrado ao processar as dependências de "
+#~ "ficheiros"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr ""
+#~ "Não foi possível executar stat à lista de pacotes de código fonte %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "A obter File Provides"
+
+#, fuzzy
+#~ msgid "Does not start with a cleartext signature"
+#~ msgstr "O ficheiro %s não começa com uma mensagem assinada"
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Não foi possível encontrar hash sum para '%s' no ficheiro Release"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "O bloco de fabricante %s não contém a impressão digital"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Espaço total de dependência de versão: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Você não possui espaço livre suficiente em %s"
+
+#~ msgid "Done"
+#~ msgstr "Pronto"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Nenhum keyring instalado em %s."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Erro Interno, AllUpgrade estragou algo"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s não é um pacote DEB válido."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Utilizando o ponto de montagem do CD-ROM %s\n"
+#~ "A montar o CD-ROM\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Não foi possível aplicar o patch %s com mmap e com a utilização de "
+#~ "operação de ficheiro - o patch parece estar corrompido."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Não foi possível aplicar o patch %s com mmap (mas não é uma falha "
+#~ "especifica do mmap) - o patch parece corrompido."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr ""
+#~ "Ignorar o lançamento pretendido, não disponível, '%s' do pacote '%s'"
+
+#~ msgid "Downloading %s %s"
+#~ msgstr "A obter %s %s"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Este não é um arquivo DEB válido, não tem '%s', '%s' ou o membro '%s'"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5Sum não coincide"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Não foi possível localizar arquivo para o pacote %s. Isto pode significar "
+#~ "que você precisa consertar manualmente este pacote."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Não é possível escrever o registo (log), openpty() falhou (/dev/pts não "
+#~ "está montado?)\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "A saltar ficheiro %s inexistente"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Falhou remover %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Não foi capaz de criar %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Falhou stat %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr ""
+#~ "Os directórios info e temp precisam estar no mesmo sistema de ficheiros"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Falhou mudar para o directório administrativo %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Erro Interno ao obter um nome de pacote"
+
+#~ msgid "Reading file listing"
+#~ msgstr "A ler a listagem de ficheiros"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Falha abrir o ficheiro da lista '%sinfo/%s'. Caso você não consiga "
+#~ "restaurar este ficheiro, crie outro vazio e reinstale imediatamente a a "
+#~ "mesma versão do pacote!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Falhou ler o ficheiro de lista %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Erro interno ao obter um nó"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Falhou abrir o ficheiro de desvios %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "O ficheiro de desvios está corrompido"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Linha inválida no ficheiro de desvio: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Erro interno ao adicionar um desvio"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "A cache de pacotes tem de ser inicializada primeiro"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Falhou encontrar um Pacote: cabeçalho, posição %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Secção ConfFile errada no ficheiro de estado. Offset %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Erro ao fazer parse ao MD5. Offset %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Não foi possível mudar para %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Falha em localizar um ficheiro de controle válido"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Não foi possível abrir pipe para %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Erro de leitura do processo %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Recebi uma única linha de cabeçalho acima de %u caracteres"
+
+#~ msgid "Note: This is done automatic and on purpose by dpkg."
+#~ msgstr "Nota: Isto foi feito automaticamente e intencionalmente pelo dpkg."
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Override %s malformado linha %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Override %s malformado linha %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Override %s malformado linha %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "descompactador"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "lido, ainda restam %lu para serem lidos mas não resta nenhum"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "escrito, ainda restam %lu para escrever mas não foi possível"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "Não foi possível proceder à configuração imediata no já descompactado "
+#~ "'%s'. Para mais detalhes por favor veja man 5 apt.conf em APT::Immediate-"
+#~ "Configure."
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Ocorreu um erro ao processar %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Ocorreu um erro ao processar %s (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Ocorreu um erro ao processar %s (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Ocorreu um erro ao processar %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Ocorreu um erro ao processar %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Ocorreu um erro ao processar %s (NewVersion%d)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Ocorreu um erro ao processar %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Ocorreu um erro ao processar %s (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Ocorreu um erro ao processar %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Ocorreu um erro ao processar %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Erro Interno, não foi possível localizar membro"
+
+#~ msgid "Internal error, group '%s' has no installable pseudo package"
+#~ msgstr "Erro interno, grupo '%s' não tem pseudo-pacote instalável"
+
+#~ msgid "Release file expired, ignoring %s (invalid since %s)"
+#~ msgstr "Ficheiro Release expirou, a ignorar %s (inválido desde %s)"
+
+#~ msgid "You must give exactly one pattern"
+#~ msgstr "Você deve dar exactamente um pattern"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr ""
+#~ "E: A lista de argumentos de Acquire::gpgv::Options é demasiado longa. A "
+#~ "sair."
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "Ocorreu um erro ao processar %s (NewVersion2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "Linha malformada %u na lista de fontes %s (id de fornecedor)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "Não foi possível aceder à 'keyring': '%s'"
+
+#~ msgid "Could not patch file"
+#~ msgstr "Não foi possível aplicar o 'patch' ao ficheiro"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "A processar chamadas para %s"
+
+#~ msgid "Dynamic MMap ran out of room"
+#~ msgstr "'Dynamic MMap' ficou sem espaço"
+
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "Já que você requisitou uma única operação é extremamente provável que o \n"
+#~ "pacote esteja simplesmente não instalável e deve ser enviado um\n"
+#~ "relatório de bug contra esse pacote."
+
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "a linha %d é demasiado longa (max %lu)"
+
+#, fuzzy
+#~ msgid "Line %d too long (max %d)"
+#~ msgstr "Linha %d é demasiado longa (max %d)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc1)"
+#~ msgstr "Um erro ocorreu ao processar %s (NovoArquivoVer1)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc2)"
+#~ msgstr "Um erro ocorreu ao processar %s (NovoArquivoVer1)"
+
+#, fuzzy
+#~ msgid "Stored label: %s \n"
+#~ msgstr "Label Guardada: %s \n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found %i package indexes, %i source indexes, %i translation indexes and "
+#~ "%i signatures\n"
+#~ msgstr ""
+#~ "Encontrou %i indexes de pacotes, %indexes de source e %i assinaturas\n"
+
+#, fuzzy
+#~ msgid "openpty failed\n"
+#~ msgstr "Select falhou."
+
+#~ msgid "File date has changed %s"
+#~ msgstr "Data do ficheiro mudou %s"
+
+#~ msgid "Reading file list"
+#~ msgstr "Lendo Lista de Ficheiros"
+
+#~ msgid "Could not execute "
+#~ msgstr "Impossível de executar "
+
+#~ msgid "Preparing for remove with config %s"
+#~ msgstr "A preparar para remover com a configuração %s"
+
+#~ msgid "Removed with config %s"
+#~ msgstr "Removido com a configuração %s"
+
+#~ msgid "The pkg cache must be initialize first"
+#~ msgstr "A cache de pacotes deve ser inicializada primeiro"
+
+#~ msgid "Error occured while processing %s (NewPackage)"
+#~ msgstr "Um erro ocorreu ao processar %s (NovoPacote)"
+
+#~ msgid "Error occured while processing %s (UsePackage1)"
+#~ msgstr "Um erro ocorreu ao processar %s (UsePacote1)"
+
+#~ msgid "Error occured while processing %s (UsePackage2)"
+#~ msgstr "Um erro ocorreu ao processar %s (UsePacote2)"
+
+#~ msgid "Error occured while processing %s (NewVersion1)"
+#~ msgstr "Um erro ocorreu ao processar %s (NovaVersão1)"
+
+#~ msgid "Error occured while processing %s (UsePackage3)"
+#~ msgstr "Um erro ocorreu ao processar %s (UsePacote3)"
+
+#~ msgid "Error occured while processing %s (NewVersion2)"
+#~ msgstr "Um erro ocorreu ao processar %s (NovaVersão2)"
+
+#~ msgid "Error occured while processing %s (FindPkg)"
+#~ msgstr "Um erro ocorreu ao processar %s (FindPkg)"
+
+#~ msgid "Error occured while processing %s (CollectFileProvides)"
+#~ msgstr "Um erro ocorreu ao processar %s (CollectFileProvides)"
+
+#~ msgid "Unknown vendor ID '%s' in line %u of source list %s"
+#~ msgstr ""
+#~ "ID de fornecedor desconhecido '%s' na linha %u da lista de fontes %s"
+
+#~ msgid ""
+#~ "Some broken packages were found while trying to process build-"
+#~ "dependencies.\n"
+#~ "You might want to run 'apt --fix-broken install' to correct these."
+#~ msgstr ""
+#~ "Alguns pacotes quebrados foram encontrados enquanto se tentava "
+#~ "processar \n"
+#~ "as dependências de construção.\n"
+#~ "Você pode querer rodar 'apt --fix-broken install' para corrigí-los."
+
+#~ msgid "Sorry, you don't have enough free space in %s to hold all the .debs."
+#~ msgstr ""
+#~ "Desculpe, você não tem espaço livre o suficiente em %s para guardar os ."
+#~ "debs."
+
+#~ msgid "Extract "
+#~ msgstr "extra"
+
+#~ msgid "De-replaced "
+#~ msgstr "Substitui"
+
+#~ msgid "Replaced file "
+#~ msgstr "Substitui"
+
+#~ msgid "Regex compilation error"
+#~ msgstr "Erro de compilação de regex - %s"
+
+#~ msgid "Failed to stat %s%s"
+#~ msgstr "Falha ao baixar %s %s\n"
+
+#~ msgid "Failed to rename %s.new to %s"
+#~ msgstr "Falha ao baixar %s %s\n"
+
+#~ msgid "Couldn't wait for subprocess"
+#~ msgstr "Não foi possível checar a lista de pacotes fonte %s"
+
+#~ msgid " files "
+#~ msgstr " falhou."
+
+#~ msgid "Done. "
+#~ msgstr "Pronto"
+
+#~ msgid "Could not find a record in the DSC '%s'"
+#~ msgstr "Impossível achar pacote %s"
+
+#~ msgid "Failed too stat %s"
+#~ msgstr "Impossível checar %s."
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644
index 000000000..d5f1c370e
--- /dev/null
+++ b/po/pt_BR.po
@@ -0,0 +1,4307 @@
+# Brazilian Portuguese translation for apt.
+# Copyright (C) 2002 Free Software Foundation, Inc.
+# Gustavo Noronha Silva <kov@debian.org>, 2002.
+# Andre Luis Lopes <andrelop@debian.org>, 2002-2005.
+# Felipe Augusto van de Wiel (faw) <faw@debian.org>, 2006-2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2008-11-17 02:33-0200\n"
+"Last-Translator: Felipe Augusto van de Wiel (faw) <faw@debian.org>\n"
+"Language-Team: Brazilian Portuguese <debian-l10n-portuguese@lists.debian."
+"org>\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Assinatura de arquivo inválida"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Erro na leitura de cabeçalho membro de arquivo"
+
+#: apt-inst/contrib/arfile.cc
+#, fuzzy, c-format
+msgid "Invalid archive member header %s"
+msgstr "Cabeçalho membro de arquivo inválido"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Cabeçalho membro de arquivo inválido"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Arquivo é muito pequeno"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Falhou ao ler os cabeçalhos do arquivo"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Impossível achar pacote %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Arquivo corrompido"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Checksum do arquivo tar falhou, arquivo corrompido"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Tipo de cabeçalho TAR %u desconhecido, membro %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Este não é um arquivo DEB válido, membro '%s' faltando"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Erro interno, não foi possível localizar membro %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Arquivo de controle não interpretável"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Falhou ao escrever arquivo %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Falhou ao fechar arquivo %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "O caminho %s é muito longo"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Desempacotando %s mais de uma vez"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "O diretório %s é desviado (\"diverted\")"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "O pacote está tentando escrever no alvo do desvio %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "O caminho de desvio é muito longo"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Falhou ao executar \"stat\" %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Falhou ao renomear %s para %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "O diretório %s está sendo substituído por um não-diretório"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Falha ao localizar nó em seu \"hash bucket\""
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "O caminho é muito longo"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Sobrescrita de pacote não combina com nenhuma versão para %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Arquivo %s/%s sobrescreve arquivo no pacote %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Impossível ler %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Impossível executar \"stat\" em %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "\"DropNode\" chamado em nó ainda ligado (\"linked\")"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Falhou ao localizar o elemento hash!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Falhou ao alocar desvio (\"diversion\")"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Erro interno em \"AddDiversion\""
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Tentando sobrescrever um desvio, %s -> %s e %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Adição dupla de desvio %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Arquivo de configuração duplicado %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "O diretório %s é desviado (\"diverted\")"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "O diretório %s é desviado (\"diverted\")"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "O diretório %s é desviado (\"diverted\")"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "O diretório %s é desviado (\"diverted\")"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "O diretório %s é desviado (\"diverted\")"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Falhou ao executar \"readlink\" %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Hash Sum incorreto"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "renomeação falhou, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Tamanho incorreto"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "Operação %s inválida"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Erro de escrita"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Não foi possível localizar um arquivo para o pacote %s. Isto pode significar "
+"que você precisa consertar manualmente este pacote. (devido a arquitetura "
+"não especificada)."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"Os arquivos de índice de pacotes estão corrompidos. Nenhum campo \"Filename:"
+"\" para o pacote %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Conectando em %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "O driver do método %s não pode ser encontrado."
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "Confira se o pacote 'dpkg-dev' está instalado.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Método %s não iniciou corretamente"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+"Por favor, insira o disco nomeado: '%s' na unidade '%s' e pressione enter."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "List directory %spartial is missing."
+msgstr "Diretório de listas %spartial está faltando."
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Diretório de arquivos %spartial está faltando."
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Unable to lock directory %s"
+msgstr "Impossível criar trava no diretório de listas"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "Tipo de arquivo de índice '%s' não é suportado"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Impossível mudar para %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Obtendo o arquivo %li de %li (%s restantes)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Obtendo arquivo %li de %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"O pacote %s precisa ser reinstalado, mas não foi possível encontrar um "
+"arquivo para o mesmo."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Erro, pkgProblemResolver::Resolve gerou falhas, isto pode ser causado por "
+"pacotes mantidos (hold)."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "Impossível corrigir problemas, você manteve (hold) pacotes quebrados."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+"As listas de pacotes ou os arquivos de estado não puderam ser analisados ou "
+"abertos."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Você terá que executar apt-get update para corrigir estes problemas"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "A lista de fontes não pode ser lida."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Erro de compilação de regex - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Release '%s' para '%s' não foi encontrada"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Versão '%s' para '%s' não foi encontrada"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Impossível achar tarefa %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Impossível achar pacote %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Impossível achar pacote %s"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Impossível encontrar o pacote %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Linha %u muito longa na lista de fontes %s."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Desmontando CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Usando ponto de montagem de CD-ROM %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Aguardando por disco...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Montando CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Identificando... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Rótulo armazenado: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Procurando por arquivos de índice no disco...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Encontrado(s) %zu índice(s) de pacote(s), %zu índice(s) de fonte(s), %zu "
+"índice(s) de traduções e %zu assinatura(s)\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Rótulo encontrado: '%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Este não é um nome válido, tente novamente.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Esse disco é chamado: \n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Copiando lista de pacotes..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Gravando nova lista de fontes\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Entradas na lista de fontes para este disco são:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Impossível executar \"stat\" %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Impossível executar \"stat\" no ponto de montagem %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Impossível executar \"stat\" no cdrom"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Opção de linha de comando '%c' [de %s] é desconhecida."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Opção de linha de comando %s não é compreendida"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Opção de linha de comando %s não é booleana"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Opção %s requer um argumento."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+"Opção %s: Especificação de item de configuração deve possuir um =<val>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Opção %s requer um argumento inteiro, não '%s'"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Opção '%s' é muito longa"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "Sentido %s não é compreendido, tente verdadeiro ou falso."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Operação %s inválida"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Abreviação de tipo desconhecida: '%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Abrindo arquivo de configuração %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Erro de sintaxe %s:%u: Bloco inicia sem nome."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Erro de sintaxe %s:%u: Tag mal formada"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Erro de sintaxe %s:%u: Lixo extra depois do valor"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"Erro de sintaxe %s:%u: Diretivas podem ser feitas somente no nível mais alto"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Erro de sintaxe %s:%u: Muitos \"includes\" aninhados"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Erro de sintaxe %s:%u: Incluído a partir deste ponto"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Erro de sintaxe %s:%u: Não há suporte para a diretiva '%s'"
+
+#: apt-pkg/contrib/configuration.cc
+#, fuzzy, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Erro de sintaxe %s:%u: Diretivas podem ser feitas somente no nível mais alto"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Erro de sintaxe %s:%u: Lixo extra no final do arquivo"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Problema removendo o arquivo"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Não usando travamento para arquivo de trava somente leitura %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Não foi possível abrir arquivo de trava %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Não usando travamento para arquivo de trava montado via nfs %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Não foi possível obter trava %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Esperado %s mas este não estava lá"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Sub-processo %s recebeu uma falha de segmentação."
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Sub-processo %s recebeu uma falha de segmentação."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Sub-processo %s retornou um código de erro (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Sub-processo %s finalizou inesperadamente"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Erro de leitura"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Erro de escrita"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Problema fechando o arquivo"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Falhou ao criar sub-processo IPC"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Falhou ao executar compactador "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Não foi possível abrir arquivo %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Não foi possível abrir \"pipe\" para %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "leitura, ainda restam %lu para serem lidos mas nenhum deixado"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "escrita, ainda restam %lu para gravar mas não foi possível"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the file %s"
+msgstr "Problema fechando o arquivo"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Problema sincronizando o arquivo"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Problema sincronizando o arquivo"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Impossível executar \"stat\" em %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Impossível escrever para %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Não foi possível fazer \"mmap\" de um arquivo vazio"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Não foi possível fazer \"mmap\" de %lu bytes"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Não foi possível abrir \"pipe\" para %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to close mmap"
+msgstr "Impossível abrir %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to synchronize mmap"
+msgstr "Impossível invocar "
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Não foi possível fazer \"mmap\" de %lu bytes"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Falhou ao truncar arquivo"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Erro!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Pronto"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... Pronto"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Seleção %s não encontrada"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Impossível analisar arquivo de pacote %s (1)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "No sections in Release file %s"
+msgstr "Nota, selecionando %s ao invés de %s\n"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Linha inválida no arquivo de desvios: %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Impossível analisar arquivo de pacote %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, fuzzy, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Impossível criar trava no diretório de listas"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr ""
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "Instalando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Configurando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Removendo %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removing %s"
+msgstr "%s completamente removido"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Executando gatilho pós-instalação %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "%s instalado"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Diretório '%s' está faltando"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, fuzzy, c-format
+msgid "Could not open file '%s'"
+msgstr "Não foi possível abrir arquivo %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Preparando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Desempacotando %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Preparando para configurar %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Preparando para a remoção de %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "%s removido"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Preparando para remover completamente %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "%s completamente removido"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "Impossível escrever para %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Construindo árvore de dependências"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Versões candidatas"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Geração de dependência"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Lendo informação de estado"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Falha ao abrir Arquivo de Estado (\"StateFile\") %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Falha ao escrever Arquivo de Estado (\"StateFile\") temporário %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "Gravados %i registros.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "Gravados %i registros com %i arquivos faltando.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "Gravados %i registros com %i arquivos que não combinam\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"Gravados %i registros com %i arquivos faltando e %i arquivos que não "
+"combinam\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, fuzzy, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Hash Sum incorreto"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Sistema de empacotamento '%s' não é suportado"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Impossível determinar um tipo de sistema de empacotamento aplicável."
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "Não foi possível abrir arquivo %s"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Esta execução de instalação requererá a remoção temporária do pacote "
+"essencial %s devido a um loop de Conflitos/Pré-Dependências. Isso geralmente "
+"é ruim, mas se você realmente quer fazer isso, ative a opção APT::Force-"
+"LoopBreak."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Cache de pacotes vazio"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "O arquivo de cache de pacotes está corrompido"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "O arquivo de cache de pacotes é uma versão incompatível"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Este APT não suporta o sistema de versões '%s'"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "O cache de pacotes foi gerado para uma arquitetura diferente"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "O arquivo de cache de pacotes está corrompido"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Depende"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Pré-Depende"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Sugere"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Conflita"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Recomenda"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Substitui"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Quebra"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Obsoleta"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "importante"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "requerido"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "padrão"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "extra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "opcional"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "O cache possui um sistema de versões incompatível"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Um erro ocorreu processando %s (EncontrarPacote)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"Uau, você excedeu o número de nomes de pacotes que este APT é capaz de "
+"suportar."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr ""
+"Uau, você excedeu o número de versões que este APT é capaz de suportar."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+"Uau, você excedeu o número de descrições que este APT é capaz de suportar."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+"Uau, você excedeu o número de dependências que este APT é capaz de suportar."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Lendo listas de pacotes"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Erro de E/S ao gravar cache fonte"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Tipo de arquivo de índice '%s' não é suportado"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, fuzzy, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Registro inválido no arquivo de preferências, sem cabeçalho Package"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Não foi possível entender o tipo de \"pin\" %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Nenhuma prioridade (ou zero) especificada para \"pin\""
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Override malformado %s linha %lu #1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Abrindo %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Linha mal formada %u no arquivo de fontes %s (tipo)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Tipo '%s' não é conhecido na linha %u na lista de fontes %s"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Linha mal formada %u no arquivo de fontes %s (tipo)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Tipo '%s' não é conhecido na linha %u na lista de fontes %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Você deve colocar algumas URIs 'source' em seu sources.list"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Falhou ao buscar %s %s"
+
+#: apt-pkg/update.cc
+#, fuzzy
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Alguns arquivos de índice falharam para baixar, eles foram ignorados ou os "
+"antigos foram usados no lugar."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calculando atualização"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Atingido:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Obter:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr ""
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Baixados %sB em %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Trabalhando]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Troca de mídia: por favor, insira o disco nomeado\n"
+" '%s'\n"
+"na unidade '%s' e pressione enter\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Corrigindo dependências..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " falhou."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Impossível corrigir dependências"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Impossível minimizar o conjunto de atualizações"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Pronto"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "Você pode querer executar 'apt --fix-broken install' para corrigí-los."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Dependências desencontradas. Tente 'apt --fix-broken install' sem nenhum "
+"pacote (ou especifique uma solução)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Nota, selecionando %s para expressão regular '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Nota, selecionando %s para expressão regular '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Nota, selecionando %s para expressão regular '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "O pacote %s é um pacote virtual fornecido por:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [Instalado]"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Not candidate version]"
+msgstr "Versões candidatas"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Você deveria selecionar explicitamente um para instalar."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"O pacote %s não está disponível, mas é referenciado por outro pacote.\n"
+"Isto pode significar que o pacote está faltando, ficou obsoleto ou\n"
+"está disponível somente a partir de outra fonte\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "No entanto, os pacotes a seguir o substituem:"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "O pacote %s não tem candidato para instalação"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr ""
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "O pacote %s não está instalado, então não será removido\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "O pacote %s não está instalado, então não será removido\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Nota, selecionando %s ao invés de %s\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Este APT tem Poderes de Super Vaca."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Nenhum pacote encontrado"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "AVISO: Os pacotes a seguir não podem ser autenticados!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Aviso de autenticação sobreposto.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Alguns pacotes não puderam ser autenticados"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Instalar estes pacotes sem verificação?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Há problemas e -y foi usado sem --force-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Não foi possível determinar o espaço livre em %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Você não possui espaço suficiente em %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Impossível criar trava no diretório de download"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Alguns pacotes não puderam ser instalados. Isto pode significar que\n"
+"você solicitou uma situação impossível ou, se você está usando a\n"
+"distribuição instável, que alguns pacotes requeridos não foram\n"
+"criados ainda ou foram retirados da \"Incoming\"."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "A informação a seguir pode ajudar a resolver a situação:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Pacotes quebrados"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Impossível buscar alguns arquivos, talvez executar apt-get update ou tentar "
+"com --fix-missing?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Erro interno, InstallPackages foi chamado com pacotes quebrados!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Pacotes precisam ser removidos mas a remoção está desabilitada."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Há problemas e -y foi usado sem --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Há problemas e -y foi usado sem --force-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Erro interno, Ordenação não finalizou"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Que estranho... Os tamanhos não batem, mande e-mail para apt@packages.debian."
+"org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "É preciso baixar %sB/%sB de arquivos.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "É preciso baixar %sB de arquivos.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr ""
+"Depois desta operação, %sB adicionais de espaço em disco serão usados.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Depois desta operação, %sB de espaço em disco serão liberados.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "\"Trivial Only\" especificado mas esta não é uma operação trivial."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Sim, faça o que eu digo!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Você está prestes a fazer algo potencialmente destrutivo.\n"
+"Para continuar digite a frase '%s'\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Abortar."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Você quer continuar?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Alguns arquivos falharam ao baixar"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Baixar completo e no modo somente baixar (\"download only\")"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing e troca de mídia não são suportados atualmente"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Impossível corrigir pacotes faltantes."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Abortando instalação."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "Nós não deveríamos apagar coisas, impossível iniciar AutoRemover"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Hmm, parece que o AutoRemover destruiu algo o que realmente não deveria\n"
+"acontecer. Por favor, reporte um bug contra o apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Erro Interno, o AutoRemover quebrou coisas"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"Os seguintes pacotes foram automaticamente instalados e não são mais "
+"requeridos:"
+msgstr[1] ""
+"Os seguintes pacotes foram automaticamente instalados e não são mais "
+"requeridos:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] ""
+"Os seguintes pacotes foram automaticamente instalados e não são mais "
+"requeridos:"
+msgstr[1] ""
+"Os seguintes pacotes foram automaticamente instalados e não são mais "
+"requeridos:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Use '%s' para removê-los."
+msgstr[1] "Use '%s' para removê-los."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Os pacotes extra a seguir serão instalados:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Pacotes sugeridos:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Pacotes recomendados:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "Pulando %s, já está instalado e a atualização não está configurada.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr "Pulando %s, já está instalado e a atualização não está configurada.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "A reinstalação de %s não é possível, não pode ser baixado.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s já é a versão mais nova.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s configurado para instalar manualmente.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Versão selecionada %s (%s) para %s\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Versão selecionada %s (%s) para %s\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Instalado]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [Instalado]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [Instalado]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [Instalado]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "mas %s está instalado"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "mas %s está para ser instalado"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "mas não é instalável"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "mas é um pacote virtual"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "mas não será instalado"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "mas não está instalado"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " ou"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Os pacotes a seguir têm dependências desencontradas:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Os NOVOS pacotes a seguir serão instalados:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Os pacotes a seguir serão REMOVIDOS:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Os pacotes a seguir serão mantidos em suas versões atuais:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Os pacotes a seguir serão atualizados:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Os pacotes a seguir serão REVERTIDOS:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Os seguintes pacotes mantidos serão mudados:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (por causa de %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"AVISO: Os pacotes essenciais a seguir serão removidos.\n"
+"Isso NÃO deveria ser feito a menos que você saiba exatamente o que você está "
+"fazendo!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu pacotes atualizados, %lu pacotes novos instalados, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu reinstalados, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu revertidos, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu a serem removidos e %lu não atualizados.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu pacotes não totalmente instalados ou removidos.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[S/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[s/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "S"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+#, fuzzy
+msgid "You must give at least one search pattern"
+msgstr "Você deve passar exatamente um padrão"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "O arquivo de pacote %s está fora de sincronia."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Arquivos de pacote:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+"O cache está fora de sincronia, não foi possível fazer a referência cruzada "
+"de um arquivo de pacote"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Pacotes alfinetados (\"pinned\"):"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Instalado: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Candidato: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(nenhum)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Tabela de versão:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Impossível achar pacote %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Impossível achar pacote %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Impossível achar pacote %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Não foi possível executar \"stat\" na lista de pacotes fonte %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Deve-se especificar pelo menos um pacote para que se busque o fonte"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Impossível encontrar um pacote fonte para %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Pulando arquivo já baixado '%s'\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Preciso obter %sB/%sB de arquivos fonte.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Preciso obter %sB de arquivos fonte.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Obter fonte %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Falhou ao buscar alguns arquivos."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Pulando o desempacotamento de fontes já desempacotados em %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Comando de desempacotamento '%s' falhou.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Confira se o pacote 'dpkg-dev' está instalado.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Comando de construção '%s' falhou.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Impossível conseguir informações de dependência de construção para %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s não tem dependências de construção.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Deve-se especificar pelo menos um pacote para que se cheque as dependências "
+"de construção"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Falhou ao processar as dependências de construção"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Falhou ao processar as dependências de construção"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Falha ao baixar %s %s\n"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "O pacote %s versão %s tem uma dependência desencontrada:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "O comando update não leva argumentos"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "O comando update não leva argumentos"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Total de Nomes de Pacotes: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total package structures: "
+msgstr "Total de Nomes de Pacotes: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Pacotes normais: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Pacotes puramente virtuais: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Pacotes virtuais únicos: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Pacotes virtuais misturados: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Faltando: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Total de versões distintas: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Total de descrições distintas: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Total de dependências: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Total de relações ver/arquivo: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Total de relações Desc/Arquivo: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Total de mapeamentos \"Provides\": "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Total de strings \"globbed\": "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Total de espaço frouxo: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Total de espaço contabilizado para: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Mostra registros fontes"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Procura a lista de pacotes por um padrão regex"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Mostra informações de dependências não processadas de um pacote"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Mostra informações de dependências reversas de um pacote"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Mostra um registro legível sobre o pacote"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Lista o nome de todos os pacotes no sistema"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Mostra as configurações de políticas"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr ""
+"Por favor, forneça um nome para este Disco, algo como 'Debian 2.1r1 Disco 1'"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Por favor, insira um Disco na unidade e pressione enter"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Falhou ao renomear %s para %s"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Repita este processo para o restante dos CDs em seu conjunto."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Argumentos não estão em pares"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Uso: apt-config [opções] comando\n"
+"\n"
+"O apt-config é uma ferramenta simples para ler o arquivo de configuração do "
+"APT\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Uso: apt-extracttemplates arquivo1 [arquivo2 ...]\n"
+"\n"
+"O apt-extracttemplates é uma ferramenta para extrair informações de modelo\n"
+"(\"template\") e configuração de pacotes debian.\n"
+"\n"
+"Opções:\n"
+" -h Este texto de ajuda\n"
+" -t Define o diretório temporário\n"
+" -c=? Lê o arquivo de configuração especificado.\n"
+" -o=? Define uma opção de configuração arbitrária, e.g.: -o dir::cache=/"
+"tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Não foi possível obter a versão do debconf. O debconf está instalado?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Impossível achar pacote %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s configurado para instalar manualmente.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Erro interno, o solucionador de problemas quebrou coisas"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Módulos para os quais há suporte:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Uso: apt-get [opções] comando\n"
+" apt-get [opções] install|remove pacote1 [pacote2 ...]\n"
+" apt-get [opções] source pacote1 [pacote2 ...]\n"
+"\n"
+"O apt-get é uma interface simples de linha de comando para baixar\n"
+"pacotes e instalá-los. Os comandos usados mais frequentemente são\n"
+"update e install.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Obtém novas listas de pacotes"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Realiza uma atualização"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Instala novos pacotes (um pacote é libc6 e não libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Remove pacotes"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Remove e expurga (\"purge\") pacotes"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Remove automaticamente todos os pacotes não usados"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Atualiza a distribuição, veja apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Segue as seleções do dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Configura as dependências de compilação de pacotes fonte"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Apaga arquivos baixados para instalação"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Apaga arquivos antigos baixados para instalação"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Verifica se não há dependências quebradas"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Baixa arquivos fonte"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "Deve-se especificar pelo menos um pacote para que se busque o fonte"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Uso: apt-extracttemplates arquivo1 [arquivo2 ...]\n"
+"\n"
+"O apt-extracttemplates é uma ferramenta para extrair informações de modelo\n"
+"(\"template\") e configuração de pacotes debian.\n"
+"\n"
+"Opções:\n"
+" -h Este texto de ajuda\n"
+" -t Define o diretório temporário\n"
+" -c=? Lê o arquivo de configuração especificado.\n"
+" -o=? Define uma opção de configuração arbitrária, e.g.: -o dir::cache=/"
+"tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Uso: apt-extracttemplates arquivo1 [arquivo2 ...]\n"
+"\n"
+"O apt-extracttemplates é uma ferramenta para extrair informações de modelo\n"
+"(\"template\") e configuração de pacotes debian.\n"
+"\n"
+"Opções:\n"
+" -h Este texto de ajuda\n"
+" -t Define o diretório temporário\n"
+" -c=? Lê o arquivo de configuração especificado.\n"
+" -o=? Define uma opção de configuração arbitrária, e.g.: -o dir::cache=/"
+"tmp\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "mas não está instalado"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s configurado para instalar manualmente.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s configurado para instalar manualmente.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s já é a versão mais nova.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s já é a versão mais nova.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "%s configurado para instalar manualmente.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Falhou ao abrir %s"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "%s configurado para instalar manualmente.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "Confira se o pacote 'dpkg-dev' está instalado.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "%s configurado para instalar manualmente.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "%s configurado para instalar manualmente.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Registro de pacote desconhecido!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "Lendo listas de pacotes"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "Pacotes alfinetados (\"pinned\"):"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Pacotes quebrados"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "%s configurado para instalar manualmente.\n"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "Lendo informação de estado"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Configuração padrão ruim!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Pressione enter para continuar."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Você quer apagar quaisquer arquivos .deb previamente baixados?"
+
+# Note to translators: The following four messages belong together. It doesn't
+# matter where sentences start, but it has to fit in just these four lines, and
+# at only 80 characters per line, if possible.
+#: dselect/install
+#, fuzzy
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr ""
+"Alguns erros ocorreram ao desempacotar. Vou configurar os pacotes que foram"
+
+#: dselect/install
+#, fuzzy
+msgid "will be configured. This may result in duplicate errors"
+msgstr ""
+"instalados. Isto pode resultar em erros duplicados ou erros causados por"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"dependências faltantes. Isto está OK, somente os erros acima desta mensagem"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr "são importantes. Por favor, conserte-os e execute [I]nstalar novamente"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Mesclando informação disponível"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Lista de extensão de pacotes é muito extensa"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Erro processando o diretório %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Lista de extensão de fontes é muito extensa"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Erro ao gravar cabeçalho no arquivo de conteúdo"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Erro processando conteúdo %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Uso: apt-ftparchive [opções] comando\n"
+"Comandos: packages caminho_binário [arquivo_override [prefixo_caminho]]\n"
+" sources caminho_fonte [arquivo_override [prefixo_caminho]]\n"
+" contents caminho\n"
+" release caminho\n"
+" generate config [grupos]\n"
+" clean config\n"
+"\n"
+"O apt-ftparchive gera arquivos de índice para repositórios Debian. Ele\n"
+"dá suporte a muitos estilos de geração, desde totalmente automatizadas até\n"
+"substitutos funcionais para o dpkg-scanpackages e o dpkg-scansources\n"
+"\n"
+"O apt-ftparchive gera arquivos Package a partir de uma árvore de .debs.\n"
+"O arquivo Package contém o conteúdo de todos os campos controle de\n"
+"cada pacote bem como o hash MD5 e o tamanho do arquivo. Há suporte para\n"
+"um arquivo override para forçar o valor da prioridade (\"Priority\") e a\n"
+"a seção (\"Section\").\n"
+"\n"
+"Similarmente, o apt-ftparchive gera arquivos Sources a partir de uma\n"
+"árvore de .dscs. A opção --source-override pode ser usada para\n"
+"especificar um arquivo override de fontes.\n"
+"\n"
+"Os comandos 'packages' e 'sources' deverão ser executados na raiz da\n"
+"árvore. Caminho_Binário deverá apontar para a base de procura recursiva\n"
+"e o arquivo override deverá conter as \"flags override\". Caminho_Prefixo é\n"
+"anexado aos campos do nome do arquivo se estiverem presentes. Exemplo de\n"
+"uso do repositório Debian:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Opções:\n"
+" -h Este texto de ajuda\n"
+" --md5 Controla a geração de MD5\n"
+" -s=? Arquivo fonte (\"source\") override\n"
+" -q Quieto\n"
+" -d=? Seleciona o banco de dados de caching opcional\n"
+" --no-delink Habilita o modo de depuração \"delinking\"\n"
+" --contents Controla a geração do arquivo de conteúdo\n"
+" -c=? Lê o arquivo de configuração especificado.\n"
+" -o=? Define uma opção de configuração arbitrária"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Nenhuma seleção combinou"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Alguns arquivos estão faltando no grupo de arquivos do pacotes '%s'"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "BD estava corrompido, arquivo renomeado para %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "BD é antigo, tentando atualizar %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Formato do BD é inválido. Se você atualizou a partir de uma versão antiga do "
+"apt, por favor, remova e recrie o banco de dados."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Impossível abrir o arquivo BD %s: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Falhou ao executar \"readlink\" %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Repositório não possui registro de controle"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Impossível obter um cursor"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Falha ao alocar memória"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Algoritmo de compactação desconhecido '%s'"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Saída compactada %s precisa de um conjunto de compactação"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Falhou ao criar pipe IPC para sub-processo"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Falhou ao executar \"fork\""
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Compactar filho"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Erro interno, falhou ao criar %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "E/S para sub-processo/arquivo falhou"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Falhou ao ler durante o cálculo MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Impossível abrir %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Override malformado %s linha %lu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Falha ao ler o arquivo override %s"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Override malformado %s linha %lu #1"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Override malformado %s linha %lu #2"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Override malformado %s linha %lu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "W: Impossível ler o diretório %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "W: Impossível executar \"stat\" em %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "W: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: Erros que se aplicam ao arquivo "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Falhou ao resolver %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Falhou ao percorrer a árvore"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Falhou ao abrir %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Falhou ao ligar %s a %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " Limite DeLink de %sB atingido.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Repositório não possuía campo pacote"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s não possui entrada override\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " mantenedor de %s é %s, não %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s não possui entrada override fonte\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s também não possui entrada override binária\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Aguardando por cabeçalhos"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "O servidor HTTP enviou um cabeçalho de resposta inválido"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Linha de cabeçalho ruim"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "O servidor HTTP enviou um cabeçalho \"Content-Length\" inválido"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "O servidor HTTP enviou um cabeçalho \"Content-Range\" inválido"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Este servidor HTTP possui suporte a \"range\" quebrado"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Formato de data desconhecido"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Dados de cabeçalho ruins"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Conexão falhou"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Erro interno"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Impossível ler o banco de dados de cdrom %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Por favor, use o apt-cdrom para fazer com que este CD-ROM seja reconhecido "
+"pelo APT. O apt-get update não pode ser usado para adicionar novos CD-ROMs"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "CD-ROM errado"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Impossível desmontar o CD-ROM em %s, o mesmo ainda pode estar em uso."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Disco não encontrado."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Arquivo não encontrado"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Conectando em %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Não foi possível criar um socket para %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Não foi possível iniciar a conexão para %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Não foi possível conectar em %s:%s (%s), conexão expirou"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Falhou"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Não foi possível conectar em %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Conectando a %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Não foi possível resolver '%s'"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Falha temporária resolvendo '%s'"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Algo estranho aconteceu resolvendo '%s:%s' (%i)"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Algo estranho aconteceu resolvendo '%s:%s' (%i)"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Impossível conectar em %s %s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Falhou ao executar \"stat\""
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "URI inválida, URIs locais não devem iniciar com //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Efetuando login"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Impossível determinar o nome do ponto"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Impossível determinar o nome local"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "O servidor recusou a conexão e disse: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER falhou, servidor disse: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS falhou, servidor disse: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Um servidor proxy foi especificado mas não um script de login, Acquire::ftp::"
+"ProxyLogin está vazio."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Comando de script de login '%s' falhou, servidor disse: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE falhou, servidor disse: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Conexão expirou"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Servidor fechou a conexão"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Uma resposta sobrecarregou o buffer"
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Corrupção de protocolo"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Não foi possível criar um socket"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Não foi possível conectar um socket de dados, conexão expirou"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Não foi possível conectar um socket passivo."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo não foi capaz de obter um socket de escuta"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Não foi possível fazer \"bind\" de um socket"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Não foi possível ouvir no socket"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Não foi possível determinar o nome do socket"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Impossível enviar o comando PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Família de endereços %u desconhecida (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT falhou, servidor disse: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Conexão do socket de dados expirou"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Impossível aceitar conexão"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Problema criando o hash do arquivo"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Impossível obter arquivo, servidor disse '%s'"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Socket de dados expirou"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Transferência de dados falhou, servidor disse '%s'"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Pesquisa"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Impossível invocar "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Ao menos uma assinatura inválida foi encontrada."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Erro interno: Assinatura boa, mas não foi possível determinar a impressão "
+"digital da chave?!"
+
+#: methods/gpgv.cc
+#, fuzzy
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Não foi possível executar '%s' para verificar a assinatura (o gnupg está "
+"instalado?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Erro desconhecido executando apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "As seguintes assinaturas eram inválidas:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"As assinaturas a seguir não puderam ser verificadas devido à chave pública "
+"não estar disponível:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Erro escrevendo para o arquivo"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Erro lendo do servidor. Ponto remoto fechou a conexão"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Erro lendo do servidor"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Erro escrevendo para arquivo"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Seleção falhou"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Conexão expirou"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Erro escrevendo para arquivo de saída"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Não foi possível abrir arquivo %s"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Não foi possível abrir arquivo %s"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr ""
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Falhou ao definir hora de modificação"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Conexão encerrada prematuramente"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Dependências desencontradas. Tente usar --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Você deve querer executar 'apt --fix-broken install' para corrigí-los:"
+
+#~ msgid "(not found)"
+#~ msgstr "(não encontrado)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Pacote alfinetado (\"pin\"): "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "Não existem chaves públicas para os seguintes IDs de chaves:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "O diretório %s é desviado (\"diverted\")"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "a dependência de %s por %s não pode ser satisfeita porque o pacote %s não "
+#~ "pode ser encontrado"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "a dependência de %s por %s não pode ser satisfeita porque o pacote %s não "
+#~ "pode ser encontrado"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Falhou ao satisfazer a dependência de %s por %s: Pacote instalado %s é "
+#~ "muito novo"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "a dependência de %s por %s não pode ser satisfeita porque nenhuma versão "
+#~ "disponível do pacote %s pode satisfazer os requerimentos de versão"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "a dependência de %s por %s não pode ser satisfeita porque o pacote %s não "
+#~ "pode ser encontrado"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Falhou ao satisfazer a dependência de %s por %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Não foi possível satisfazer as dependências de compilação para %s."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Problema removendo %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Falhou ao executar \"unlink\" %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Uso: apt-cache [opções] comando\n"
+#~ " apt-cache [opções] show pacote1 [pacote2 ...]\n"
+#~ "\n"
+#~ "O apt-cache é uma ferramenta de baixo nível usada para manipular os\n"
+#~ "arquivos de cache binários do APT e para buscar informações neles\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Opções:\n"
+#~ " -h Este texto de ajuda.\n"
+#~ " -p=? O cache de pacotes.\n"
+#~ " -s=? O cache de fontes.\n"
+#~ " -q Desabilita o indicador de progresso.\n"
+#~ " -i Mostra somente dependências importantes para o comando \"unmet\".\n"
+#~ " -c=? Lê o arquivo de configuração especificado.\n"
+#~ " -o=? Define uma opção de configuração arbitrária, e.g.: -o dir::cache=/"
+#~ "tmp\n"
+#~ "Veja as páginas de manual apt-cache(8) e apt.conf(5) para mais "
+#~ "informações.\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Opções:\n"
+#~ " -h Este texto de ajuda.\n"
+#~ " -c=? Lê o arquivo de configuração especificado.\n"
+#~ " -o=? Define uma opção de configuração arbitrária, e.g.: -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Uso: apt-sortpkgs [opções] arquivo1 [arquivo2 ...]\n"
+#~ "\n"
+#~ "O apt-sortpkgs é uma ferramenta simples para ordenar arquivos de pacote.\n"
+#~ "A opção -s é usada para indicar que tipo de arquivo é.\n"
+#~ "\n"
+#~ "Opções:\n"
+#~ " -h Este texto de ajuda\n"
+#~ " -s Usar ordenação de arquivo fonte\n"
+#~ " -c=? Lê o arquivo de configuração especificado.\n"
+#~ " -o=? Define uma opção de configuração arbitrária, e.g.: -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Processo filho falhou"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Deve-se especificar pelo menos um pacote para que se busque o fonte"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Falhou ao criar \"pipes\""
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Falhou ao executar gzip "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s para %s compilado em %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Falhou ao criar FILE*"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Linha mal formada %lu no arquivo de fontes %s (análise de URI)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "Linha mal formada %lu no arquivo de fontes %s (análise de distribuição)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "Linha mal formada %lu no arquivo de fontes %s (distribuição)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr ""
+#~ "Linha mal formada %lu no arquivo de fontes %s (análise de distribuição)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr ""
+#~ "Linha mal formada %lu no arquivo de fontes %s (análise de distribuição)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "Linha mal formada %lu no arquivo de fontes %s (análise de distribuição)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Linha mal formada %lu no arquivo de fontes %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Linha mal formada %lu no arquivo de fontes %s (distribuição)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Linha mal formada %lu no arquivo de fontes %s (análise de URI)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr ""
+#~ "Linha mal formada %lu no arquivo de fontes %s (distribuição absoluta)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr ""
+#~ "Linha mal formada %lu no arquivo de fontes %s (análise de distribuição)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr ""
+#~ "Pacote %s %s não foi encontrado enquanto processando dependências de "
+#~ "arquivo"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Não foi possível executar \"stat\" na lista de pacotes fonte %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Coletando Arquivo \"Provides\""
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Impossível analisar arquivo de pacote %s (1)"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Bloco fornecedor %s não contém impressão digital (\"fingerprint\")"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Total de espaço de dependência de versão: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Você não possui espaço livre suficiente em %s"
+
+#~ msgid "Done"
+#~ msgstr "Pronto"
+
+#, fuzzy
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Abortando instalação."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Erro interno, AllUpgrade quebrou coisas"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s não é um pacote DEB válido."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Usando ponto de montagem de CD-ROM %s\n"
+#~ "Montando CD-ROM\n"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Este não é um arquivo DEB válido, não possui um membro '%s', '%s' ou '%s'"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5Sum incorreto"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Não foi possível localizar arquivo para o pacote %s. Isto pode significar "
+#~ "que você precisa consertar manualmente este pacote."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr "Impossível escrever log, openpty() falhou (/dev/pts não montado?)\n"
+
+#, fuzzy
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Abrindo arquivo de configuração %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Falhou ao remover %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Impossível criar %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Falhou ao executar \"stat\" em %sinfo."
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr ""
+#~ "Os diretórios info e temp precisam estar no mesmo sistema de arquivos"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Falhou ao mudar para o diretório administrativo %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Erro interno obtendo um nome de pacote"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Lendo listagem de arquivos"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Falhou ao abrir o arquivo de lista '%sinfo/%s'. Se você não conseguir "
+#~ "restaurar este arquivo, crie-o vazio e imediatamente reinstale a mesma "
+#~ "versão do pacote!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Falhou ao ler o arquivo de lista %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Erro interno obtendo um nó"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Falhou ao abrir o arquivo de desvios %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "O arquivo de desvios está corrompido"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Linha inválida no arquivo de desvios: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Erro interno ao adicionar um desvio"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "O cache de pacotes deve ser inicializado primeiro"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Falhou ao encontrar um Pacote: cabeçalho, posição %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Seção \"ConfFile\" ruim no arquivo de estado. Posição %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Erro analisando MD5. Posição %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Não foi possível mudar para %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Falhou ao localizar um arquivo de controle válido"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Não foi possível abrir \"pipe\" para %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Erro de leitura do processo %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Recebi uma única linha de cabeçalho acima de %u caracteres"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Override malformado %s linha %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Override malformado %s linha %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Override malformado %s linha %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "descompactador"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "leitura, ainda restam %lu para serem lidos mas nenhum deixado"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "escrita, ainda restam %lu para gravar mas não foi possível"
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Um erro ocorreu processando %s (NovoPacote)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Um erro ocorreu processando %s (UsePacote1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Um erro ocorreu processando %s (NovoArquivoDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Um erro ocorreu processando %s (UsePacote2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Um erro ocorreu processando %s (NovoArquivoVer1)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Um erro ocorreu processando %s (NovaVersão1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Um erro ocorreu processando %s (UsePacote3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Um erro ocorreu processando %s (NovoArquivoDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Um erro ocorreu processando %s (EncontrarPacote)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Um erro ocorreu processando %s (ColetarArquivoProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Erro interno, não foi possível localizar membro"
+
+#~ msgid "You must give exactly one pattern"
+#~ msgstr "Você deve passar exatamente um padrão"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr ""
+#~ "E: Lista de argumentos de Acquire::gpgv::Options muito extensa. Saindo."
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "Um erro ocorreu processando %s (NovaVersão2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "Linha mal formada %u na lista de fontes %s (id de fornecedor)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "Não foi possível acessar o chaveiro: '%s'"
+
+#~ msgid "Could not patch file"
+#~ msgstr "Não foi possível aplicar o patch"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "Erro processando gatilhos para %s"
+
+#~ msgid "Dynamic MMap ran out of room"
+#~ msgstr "\"MMap\" Dinâmico ficou sem espaço"
+
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "Já que você solicitou uma única operação é bem provável que o pacote\n"
+#~ "esteja simplesmente não instalável e um relatório de bug sobre esse\n"
+#~ "pacote deveria ser enviado."
+
+#, fuzzy
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "Linha %d muito longa (máx. %d)"
+
+#, fuzzy
+#~ msgid "Line %d too long (max %d)"
+#~ msgstr "Linha %d muito longa (máx. %d)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc1)"
+#~ msgstr "Um erro ocorreu processando %s (NovoArquivoVer1)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc2)"
+#~ msgstr "Um erro ocorreu processando %s (NovoArquivoVer1)"
+
+#, fuzzy
+#~ msgid "Stored label: %s \n"
+#~ msgstr "Rótulo armazenado: %s \n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found %i package indexes, %i source indexes, %i translation indexes and "
+#~ "%i signatures\n"
+#~ msgstr ""
+#~ "Encontrado(s) %i índice(s) de pacote(s), %i índice(s) de fonte(s) e %i "
+#~ "assinaturas\n"
+
+#, fuzzy
+#~ msgid "openpty failed\n"
+#~ msgstr "Seleção falhou"
+
+#~ msgid "File date has changed %s"
+#~ msgstr "Data do arquivo mudou %s"
+
+#~ msgid "Reading file list"
+#~ msgstr "Lendo Listagem de Pacotes"
+
+#~ msgid "Could not execute "
+#~ msgstr "Não foi possível executar "
+
+#~ msgid "Preparing for remove with config %s"
+#~ msgstr "Preparando para remoção de %s e sua configuração"
+
+#~ msgid "Removed with config %s"
+#~ msgstr "%s e sua configuração removidos"
+
+#~ msgid "Unknown vendor ID '%s' in line %u of source list %s"
+#~ msgstr ""
+#~ "ID de fornecedor desconhecido '%s' na linha %u da lista de fontes %s"
+
+#~ msgid ""
+#~ "Some broken packages were found while trying to process build-"
+#~ "dependencies.\n"
+#~ "You might want to run 'apt --fix-broken install' to correct these."
+#~ msgstr ""
+#~ "Alguns pacotes quebrados foram encontrados enquanto se tentava "
+#~ "processar \n"
+#~ "as dependências de construção.\n"
+#~ "Você pode querer rodar 'apt --fix-broken install' para corrigí-los."
+
+#~ msgid "Sorry, you don't have enough free space in %s to hold all the .debs."
+#~ msgstr ""
+#~ "Desculpe, você não tem espaço livre o suficiente em %s para guardar os ."
+#~ "debs."
+
+#~ msgid "Extract "
+#~ msgstr "extra"
+
+#~ msgid "De-replaced "
+#~ msgstr "Substitui"
+
+#~ msgid "Replaced file "
+#~ msgstr "Substitui"
+
+#~ msgid "Regex compilation error"
+#~ msgstr "Erro de compilação de regex - %s"
+
+#~ msgid "Failed to stat %s%s"
+#~ msgstr "Falha ao baixar %s %s\n"
+
+#~ msgid "Failed to rename %s.new to %s"
+#~ msgstr "Falha ao baixar %s %s\n"
+
+#~ msgid "Couldn't wait for subprocess"
+#~ msgstr "Não foi possível checar a lista de pacotes fonte %s"
+
+#~ msgid " files "
+#~ msgstr " falhou."
+
+#~ msgid "Done. "
+#~ msgstr "Pronto"
+
+#~ msgid "Could not find a record in the DSC '%s'"
+#~ msgstr "Impossível achar pacote %s"
+
+#~ msgid "Failed too stat %s"
+#~ msgstr "Impossível checar %s."
diff --git a/po/ro.po b/po/ro.po
new file mode 100644
index 000000000..ece7a7a95
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,4250 @@
+# translation of ro.po to Romanian
+# This file is put in the public domain.
+#
+# Sorin Batariuc <sorin@bonbon.net>, 2004, 2005, 2006.
+# Eddy Petrișor <eddy.petrisor@gmail.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2008-11-15 02:21+0200\n"
+"Last-Translator: Eddy Petrișor <eddy.petrisor@gmail.com>\n"
+"Language-Team: Romanian <debian-l10n-romanian@lists.debian.org>\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2;\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Semnătură de arhivă necorespunzătoare"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Eroare la citirea antetului membrului arhivei"
+
+#: apt-inst/contrib/arfile.cc
+#, fuzzy, c-format
+msgid "Invalid archive member header %s"
+msgstr "Antet de membru de arhivă necorespunzător"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Antet de membru de arhivă necorespunzător"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Arhiva este prea scurtă"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Eșec la citirea antetelor arhivei"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Nu pot găsi pachetul %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Arhivă deteriorată"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr ""
+"Suma de control a arhivei tar nu s-a verificat, arhiva este deteriorată"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Tip antet TAR %u necunoscut, membrul %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Aceasta nu este o arhivă DEB validă, lipseÈ™te membrul „%sâ€"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Eroare internă, nu pot localiza membrul %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Fișier de control neanalizabil"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Eșec la scrierea fișierului %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Eșec la închiderea fișierului %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Calea %s este prea lungă"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Se despachetează %s de mai multe ori"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "Directorul %s este redirectat"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Pachetul încearcă să scrie în ținta redirectării %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Calea de redirectare este prea lungă"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Eșec la „stat†pentru %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Eșec la redenumirea lui %s în %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "Directorul %s este înlocuit de un non-director"
+
+# XXX: nu-mi place, hash bucket ar trebui tradus mai elegant
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Eșec la localizarea nodului în clasa lui din tabela de dispersie"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Calea este prea lungă"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Pachet suprascris fără nici o versiune pentru %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Fișierul %s/%s îl suprascrie pe cel din pachetul %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Nu s-a putut citi %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Nu se poate executa „stat†pe %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "S-a chemat DropNode pe un nod încă „legatâ€"
+
+# XXX: nu-mi place, fie e hash, fie „element de dispersieâ€
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Eșec la localizarea elementului de dispersie!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Eșec la alocarea redirectării"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Eroare internă în „AddDiversionâ€"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Încercare de suprascriere a redirectării, %s -> %s și %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Adăugare dublă de redirectare %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Fișier „conf†duplicat %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Directorul %s este redirectat"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Directorul %s este redirectat"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Directorul %s este redirectat"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Directorul %s este redirectat"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "Directorul %s este redirectat"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Eșec la „readlink†pentru %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Nepotrivire la suma de căutare"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "redenumire eșuată, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Nepotrivire dimensiune"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "Operațiune invalidă %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Eroare de scriere"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"N-am putut localiza un fișier pentru pachetul %s. Aceasta ar putea însemna "
+"că aveți nevoie să reparați manual acest pachet (din pricina unui arch lipsă)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"Fișierele index de pachete sunt deteriorate. Fără câmpul 'nume fișier:' la "
+"pachetul %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Conectare la %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Metoda driver %s nu poate fi găsită."
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "Verificați dacă pachetul 'dpkg-dev' este instalat.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Metoda %s nu s-a lansat corect"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+"Vă rog introduceți discul numit: '%s' în unitatea '%s' și apăsați Enter."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "List directory %spartial is missing."
+msgstr "Directorul de liste %spartial lipsește."
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Directorul de arhive %spartial lipsește."
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Unable to lock directory %s"
+msgstr "Nu pot încuia directorul cu lista"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "Tipul de fișier index '%s' nu este suportat"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Nu pot schimba la %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Se descarcă fișierul %li din %li (%s rămas)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Se descarcă fișierul %li din %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"Pachetul %s are nevoie să fie reinstalat, dar nu pot găsi o arhivă pentru el."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Eroare, pkgProblemResolver::Resolve a generat întreruperi, aceasta poate fi "
+"cauzată de pachete ținute."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "Nu pot corecta problema, ați ținut pachete deteriorate."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+"Listele de pachete sau fișierul de stare n-au putut fi analizate sau "
+"deschise."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr ""
+"Ați putea vrea să porniți 'apt-get update' pentru a corecta aceste probleme."
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Lista surselor nu poate fi citită."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Eroare de compilare expresie regulată - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Release '%s' pentru '%s' n-a fost găsită"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Versiunea '%s' pentru '%s' n-a fost găsită"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Nu s-a putut găsi sarcina %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Nu pot găsi pachetul %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Nu pot găsi pachetul %s"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Nu s-a putut localiza pachetul %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Linia %u prea lungă în lista sursă %s."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Se demontează CD-ul...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Utilizare punct de montare CD-ROM %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Aștept discul...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Montez CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Identificare... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Etichetă memorată: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Scanez discul de fișierele index...\n"
+
+# DEVELOPERS: please consider using somehow plural forms
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Au fost găsite %zu indexuri de pachete, %zu indexuri de surse, %zu indexuri "
+"de traduceri și %zu semnături\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "A fost găsită eticheta „%sâ€\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Acesta nu este un nume valid, mai încercați.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Acest disc este numit: \n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Copiez listele de pachete.."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Scriere noua listă sursă\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Intrările listei surselor pentru acest disc sunt:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Nu pot determina starea %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Nu pot determina starea punctului de montare %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Eșec la „stat†pentru CD"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Opțiunea linie de comandă '%c' [din %s] este necunoscută."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Opțiunea linie de comandă %s nu este înțeleasă"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Opțiunea linie de comandă %s nu este booleană"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Opțiunea %s necesită un argument"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+"Opțiunea %s: Specificația configurării articolului trebuie să aibă o =<val>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Opțiunea %s necesită un argument integru, nu '%s'"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Opțiunea '%s' este prea lungă"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "Sensul %s nu este înțeles, încercați adevărat (true) sau fals (false)."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Operațiune invalidă %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Abreviere de tip nerecunoscut: „%câ€"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Se deschide fișierul de configurare %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Eroare de sintaxă %s:%u: Blocul începe fără nume"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Eroare de sintaxă %s:%u: etichetă greșită"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Eroare de sintaxă %s:%u: mizerii suplimentare după valoare"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"Eroare de sintaxă %s:%u: Directivele pot fi date doar la nivelul superior"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Eroare de sintaxă %s:%u: prea multe imbricări incluse"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Eroare de sintaxă %s:%u: incluse de aici"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Eroare de sintaxă %s:%u: directivă nesuportată '%s'"
+
+#: apt-pkg/contrib/configuration.cc
+#, fuzzy, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Eroare de sintaxă %s:%u: Directivele pot fi date doar la nivelul superior"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Eroare de sintaxă %s:%u: mizerii suplimentare la sfârșitul fișierului"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Problemă la dezlegarea fișierului"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Nu s-a folosit închiderea pentru fișierul disponibil doar-citire %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Nu pot deschide fișierul blocat %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Nu este folosit blocajul pentru fișierul montat nfs %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Nu pot determina blocajul %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Așteptat %s, dar n-a fost acolo"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Subprocesul %s a primit o eroare de segmentare."
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Subprocesul %s a primit o eroare de segmentare."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Subprocesul %s a întors un cod de eroare (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Subprocesul %s s-a terminat brusc"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Eroare de citire"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Eroare de scriere"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Problemă la închiderea fișierului"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Eșec la crearea IPC-ului pentru subproces"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Eșec la executarea compresorului"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Nu s-a putut deschide fișierul %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Nu s-a putut deschide conexiunea pentru %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "citire, încă mai am %lu de citit dar n-a mai rămas nimic"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "scriere, încă mai am %lu de scris dar nu pot"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the file %s"
+msgstr "Problemă la închiderea fișierului"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Problemă în timpul sincronizării fișierului"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Problemă în timpul sincronizării fișierului"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Nu se poate executa „stat†pe %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Nu s-a putut scrie în %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Nu s-a putut executa „mmap†cu un fișier gol"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Nu s-a putut face mmap cu %lu octeți"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Nu s-a putut deschide conexiunea pentru %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to close mmap"
+msgstr "Nu s-a putut deschide %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to synchronize mmap"
+msgstr "Nu s-a putut invoca"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Nu s-a putut face mmap cu %lu octeți"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Eșec la trunchierea fișierului"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Eroare!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Terminat"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... Terminat"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Selecția %s nu a fost găsită"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Nu s-a putut analiza fișierul pachet %s (1)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "No sections in Release file %s"
+msgstr "Notă, se selectează %s în locul lui %s\n"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Linie necorespunzătoare în fișierul-redirectare: %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Nu s-a putut analiza fișierul pachet %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, fuzzy, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Nu pot încuia directorul cu lista"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr ""
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "Se instalează %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Se configurează %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Se șterge %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removing %s"
+msgstr "Șters complet %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Se rulează declanșatorul post-instalare %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "Instalat %s"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Directorul „%s†lipsește."
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, fuzzy, c-format
+msgid "Could not open file '%s'"
+msgstr "Nu s-a putut deschide fișierul %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Se pregătește %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Se despachetează %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Se pregătește configurarea %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Se pregătește ștergerea lui %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "Șters %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Se pregătește ștergerea completă a %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "Șters complet %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "Nu s-a putut scrie în %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Se construiește arborele de dependență"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Versiuni candidat"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Generare dependențe"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Se citesc informațiile de stare"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Eșec la deschiderea fișierului de stare %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Eșec la scrierea fișierului temporar de stare %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "S-au scris %i înregistrări.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "S-au scris %i înregistrări cu %i fișiere lipsă.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "S-au scris %i înregistrări cu %i fișiere nepotrivite\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"S-au scris %i înregistrări cu %i fișiere lipsă și %i fișiere nepotrivite\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, fuzzy, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Nepotrivire la suma de căutare"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Sistemul de pachete '%s' nu este suportat"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Nu s-a putut determina un tip de sistem de împachetare potrivit"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "Nu s-a putut deschide fișierul %s"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Aceasta instalare va avea nevoie de ștergerea temporară a pachetului "
+"esențial %s din cauza unui bucle conflict/pre-dependență. Asta de multe ori "
+"nu-i de bine, dar dacă vreți întradevăr s-o faceți, activați opțiunea APT::"
+"Force-LoopBreak."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Cache gol de pachet"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Cache-ul fișierului pachet este deteriorat"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Fișierul cache al pachetului este o versiune incompatibilă"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Acest APT nu suportă versioning system '%s'"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Cache-ul pachetului a fost construit pentru o arhitectură diferită"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Cache-ul fișierului pachet este deteriorat"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Depinde"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Pre-depinde"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Sugerează"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Este în conflict"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Recomandă"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Înlocuiește"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Corupe"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "ÃŽnvechit"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "important"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "cerut"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "standard"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "extra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "opțional"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Cache are un versioning system incompatibil"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Eroare apărută în timpul procesării %s (FindPkg)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"Mamăăă, ați depășit numărul de nume de pachete de care este capabil acest "
+"APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr ""
+"Mamăăă, ați depășit numărul de versiuni de care este capabil acest APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+"Mamăăă, ați depășit numărul de descrieri de care este capabil acest APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+"Mamăăă, ați depășit numărul de dependențe de care este capabil acest APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Citire liste de pachete"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Eroare IO în timpul salvării sursei cache"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Tipul de fișier index '%s' nu este suportat"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, fuzzy, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Înregistrare invalidă în fișierul de preferințe, fără antet de pachet"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Nu s-a înțeles tipul de pin %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Fără prioritate (sau zero) specificată pentru pin"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Înlocuire greșită %s linia %lu #1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Deschidere %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Linie greșită %u în lista sursă %s (tip)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Tipul '%s' nu este cunoscut în linia %u din lista sursă %s"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Linie greșită %u în lista sursă %s (tip)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Tipul '%s' nu este cunoscut în linia %u din lista sursă %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Trebuie să puneți niște 'surse' de URI în sources.list"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Eșec la aducerea lui %s %s"
+
+#: apt-pkg/update.cc
+#, fuzzy
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Descărcarea unor fișiere index a eșuat, acestea fie au fost ignorate, fie au "
+"fost folosite în loc unele vechi."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calculez înnoirea"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Atins:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Luat:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Ignorat:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Eroare:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Aduși: %sB în %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [ÃŽn lucru]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Schimbare de mediu: introduceți discul numit\n"
+" „%sâ€\n"
+"în unitatea „%s†și apăsați Enter\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Corectez dependențele..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " eșec."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Nu s-au putut corecta dependențele"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Nu s-a putut micșora mulțimea pachetelor de înnoit"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Terminat"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+"Ați putea să porniți 'apt --fix-broken install' pentru a corecta acestea."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Dependențe neîndeplinite. Încercați 'apt --fix-broken install' fără nici un "
+"pachet (sau oferiți o altă soluție)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Notă, selectare %s pentru expresie regulată '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Notă, selectare %s pentru expresie regulată '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Notă, selectare %s pentru expresie regulată '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Pachetul %s este un pachet virtual furnizat de către:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [Instalat]"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Not candidate version]"
+msgstr "Versiuni candidat"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Ar trebui să alegeți în mod explicit unul pentru instalare."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Pachetul %s nu este disponibil, dar este menționat de către alt pachet.\n"
+"Aceasta ar putea însemna că pachetul lipsește, s-a învechit, sau\n"
+"este disponibil numai din altă sursă\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Oricum următoarele pachete îl înlocuiesc:"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Pachetul %s nu are nici un candidat la instalare"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr ""
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "Pachetul %s nu este instalat, așa încât nu este șters\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Pachetul %s nu este instalat, așa încât nu este șters\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Notă, se selectează %s în locul lui %s\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Acest APT are puterile unei Super Vaci."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Nu s-au găsit pachete"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "AVERTISMENT: Următoarele pachete nu pot fi autentificate!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Avertisment de autentificare înlocuit.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Unele pachete n-au putut fi autentificate"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Instalați aceste pachete fără verificare?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Sunt unele probleme și -y a fost folosit fără --force-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "N-am putut determina spațiul disponibil în %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Nu aveți suficient spațiu în %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Nu s-a putut bloca directorul de descărcare"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Unele pachete n-au putut fi instalate. Aceasta ar putea însemna că ați "
+"cerut\n"
+"o situație imposibilă sau că folosiți distribuția instabilă în care unele "
+"pachete\n"
+"cerute n-au fost create încă sau au fost mutate din Incoming."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Următoarele informații ar putea să vă ajute la rezolvarea situației:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Pachete deteriorate"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Nu s-au putut aduce unele arhive, poate ar fi o idee bună să rulați 'apt-get "
+"update' sau încercați cu --fix-missing?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Eroare internă, InstallPackages a fost apelat cu pachete deteriorate!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Pachete trebuiesc șterse dar ștergerea este dezactivată."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Sunt unele probleme și -y a fost folosit fără --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Sunt unele probleme și -y a fost folosit fără --force-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Eroare internă, Ordering nu s-a terminat"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Ce ciudat... Dimensiunile nu se potrivesc, scrieți la apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Este nevoie să descărcați %sB/%sB de arhive.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Este nevoie să descărcați %sB de arhive.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "După această operație vor fi folosiți din disc încă %sB.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "După această operație se vor elibera %sB din spațiul ocupat pe disc.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr ""
+"A fost specificat 'doar neimportant' dar nu este o operațiune neimportantă."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Da, fă cum îți spun!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Sunteți pe cale de a face ceva cu potențial distructiv.\n"
+"Pentru a continua tastați fraza '%s'\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Renunțare."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Vreți să continuați?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Descărcarea unor fișiere a eșuat"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Descărcare completă și în modul doar descărcare"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing și schimbul de mediu nu este deocamdată suportat"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Nu pot corecta pachetele lipsă."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Abandonez instalarea."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+
+# XXX: orice sugestie este bine-venită
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "Nu este voie să se șteargă lucruri, nu se poate porni AutoRemover"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Hmm, se pare că AutoRemover a distrus ceva, lucru care n-ar trebui să se "
+"întâmple. Sunteți rugat să trimiteți un raportați de defect pentru pachetul "
+"apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Eroare internă, AutoRemover a deteriorat diverse chestiuni"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"Următoarele pachete au fost instalate automat și nu mai sunt necesare:"
+msgstr[1] ""
+"Următoarele pachete au fost instalate automat și nu mai sunt necesare:"
+msgstr[2] ""
+"Următoarele pachete au fost instalate automat și nu mai sunt necesare:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] ""
+"Următoarele pachete au fost instalate automat și nu mai sunt necesare:"
+msgstr[1] ""
+"Următoarele pachete au fost instalate automat și nu mai sunt necesare:"
+msgstr[2] ""
+"Următoarele pachete au fost instalate automat și nu mai sunt necesare:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Folosiți '%s' pentru a le șterge."
+msgstr[1] "Folosiți '%s' pentru a le șterge."
+msgstr[2] "Folosiți '%s' pentru a le șterge."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Următoarele extra pachete vor fi instalate:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Pachete sugerate:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Pachete recomandate:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "Sar peste %s, este deja instalat și înnoirea nu este activată.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr "Sar peste %s, este deja instalat și înnoirea nu este activată.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "Reinstalarea lui %s nu este posibilă, nu poate fi descărcat.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s este deja la cea mai nouă versiune.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s este marcat ca fiind instalat manual.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Versiune selectată %s (%s) pentru %s\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Versiune selectată %s (%s) pentru %s\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Instalat]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [Instalat]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [Instalat]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [Instalat]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "dar %s este instalat"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "dar %s este pe cale de a fi instalat"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "dar nu este instalabil"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "dar este un pachet virtual"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "dar nu este pe cale să fie instalat"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "dar nu este instalat"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " sau"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Următoarele pachete au dependențe neîndeplinite:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Următoarele pachete NOI vor fi instalate:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Următoarele pachete vor fi ȘTERSE:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Următoarele pachete au fost reținute:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Următoarele pachete vor fi ÎNNOITE:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Următoarele pachete vor fi DE-GRADATE:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Următoarele pachete ținute vor fi schimbate:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (datorită %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"AVERTISMENT: Următoarele pachete esențiale vor fi șterse.\n"
+"Aceasta NU ar trebui făcută decât dacă știți exact ce vreți!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu înnoite, %lu nou instalate, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu reinstalate, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu de-gradate, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu de șters și %lu neînnoite.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu instalate sau șterse incomplet.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr ""
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr ""
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "Y"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+#, fuzzy
+msgid "You must give at least one search pattern"
+msgstr "Trebuie să dați exact un șablon"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Fișierul pachetului %s este desincronizat."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Fișiere pachet: "
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+"Cache-ul este desincronizat, nu se poate executa x-ref pe un fișier pachet"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Pachete alese special:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Instalat: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Candidează: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(niciunul)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Tabela de versiuni:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Nu pot găsi pachetul %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Nu pot găsi pachetul %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Nu pot găsi pachetul %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Nu pot determina starea listei surse de pachete %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Trebuie specificat cel puțin un pachet pentru a-i aduce sursa"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Nu s-a putut găsi o sursă pachet pentru %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Sar peste fișierul deja descărcat '%s'\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Este nevoie să descărcați %sB/%sB din arhivele surselor.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Este nevoie să descărcați %sB din arhivele surselor.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Aducere sursa %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Eșec la aducerea unor arhive."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Sar peste despachetarea sursei deja despachetate în %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Comanda de despachetare '%s' eșuată.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Verificați dacă pachetul 'dpkg-dev' este instalat.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Comanda de construire '%s' eșuată.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Nu pot prelua informațiile despre dependențele înglobate ale lui %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s nu are dependențe înglobate.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Trebuie specificat cel puțin un pachet pentru a-i verifica dependențele "
+"înglobate"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Eșec la prelucrarea dependențelor de compilare"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Eșec la prelucrarea dependențelor de compilare"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Eșec la redenumirea lui %s în %s"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Pachetul %s versiunea %s are o dependență neîndeplinită:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Comanda de actualizare nu are argumente"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "Comanda de actualizare nu are argumente"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Total nume pachete : "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total package structures: "
+msgstr "Total nume pachete : "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Pachete normale: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Pachete virtuale pure: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Pachete virtuale singulare: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Pachete virtuale mixte: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Lipsă: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Total versiuni distincte: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Numărul total de descrieri distincte: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Total dependențe: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Total relații versiune/fișier: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Total relații desc/fișier: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Total cartări Furnizează: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Total șiruri înglobate: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Total spațiu intern: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Total spațiu contorizat pentru: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Arată înregistrările despre sursă"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Caută în lista de pachete folosind un șablon regex"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Arată informații brute de dependențe pentru un pachet"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Arată dependențele inverse pentru un pachet"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Arată o înregistrare lizibilă pentru pachet"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Afișează numele tuturor pachetelor din sistem"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Arată configurațiile de politici"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "FurnizaÈ›i un nume pentru acest disc, de exemplu „Debian 2.1r1 Disk 1â€"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Introduceți un disc în unitate și apăsați Enter"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Eșec la redenumirea lui %s în %s"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Repetați această procedură pentru restul CD-urilor din set."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Argumentele nu sunt perechi"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Utilizare: apt-config [opțiuni] comanda\n"
+"\n"
+"apt-config este o unealtă simplă pentru citirea fișierului de configurare "
+"APT\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Utilizare: apt-extracttemplates fișier1 [fișier2 ...]\n"
+"\n"
+"apt-extracttemplates este o unealtă pentru extragerea informațiilor \n"
+"de configurare și a șabloanelor dintr-un pachet Debian\n"
+"\n"
+"Opțiuni\n"
+" -h Acest text de ajutor.\n"
+" -t Impune directorul temporar\n"
+" -c=? Citește acest fișier de configurare\n"
+" -o=? Ajustează o opțiune de configurare arbitrară, ex. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Nu s-a putut citi versiunea debconf. Este instalat debconf?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Nu pot găsi pachetul %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s este marcat ca fiind instalat manual.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr ""
+"Eroare internă, rezolvatorul de probleme a deteriorat diverse chestiuni"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Module suportate:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Utilizare: apt-get [opțiuni] comanda\n"
+" apt-get [opțiuni] install|remove pachet1 [pachet2 ...]\n"
+" apt-get [opțiuni] source pachet1 [pachet2 ...]\n"
+"\n"
+"apt-get este o simplă interfață în linie de comandă pentru descărcarea și\n"
+"instalarea pachetelor. Cele mai frecvent folosite comenzi sunt update\n"
+"și install.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Aduce listele noi de pachete"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Realizează o înnoire"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Instalează pachete noi (pachet este libc6, nu libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Șterge pachete"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Șterge și curăță pachete"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Șterge automat toate pachetele nefolosite"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Înnoirea distribuției, a se vedea apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Urmează selecțiile dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Configurează dependențele de compilare pentru pachetele-sursă"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Șterge fișierele-arhivă descărcate"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Șterge fișiere-arhivă descărcate învechite"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Verifică dacă există dependențe neîndeplinite"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Descarcă pachete-sursă"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "Trebuie specificat cel puțin un pachet pentru a-i aduce sursa"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Utilizare: apt-extracttemplates fișier1 [fișier2 ...]\n"
+"\n"
+"apt-extracttemplates este o unealtă pentru extragerea informațiilor \n"
+"de configurare și a șabloanelor dintr-un pachet Debian\n"
+"\n"
+"Opțiuni\n"
+" -h Acest text de ajutor.\n"
+" -t Impune directorul temporar\n"
+" -c=? Citește acest fișier de configurare\n"
+" -o=? Ajustează o opțiune de configurare arbitrară, ex. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Utilizare: apt-extracttemplates fișier1 [fișier2 ...]\n"
+"\n"
+"apt-extracttemplates este o unealtă pentru extragerea informațiilor \n"
+"de configurare și a șabloanelor dintr-un pachet Debian\n"
+"\n"
+"Opțiuni\n"
+" -h Acest text de ajutor.\n"
+" -t Impune directorul temporar\n"
+" -c=? Citește acest fișier de configurare\n"
+" -o=? Ajustează o opțiune de configurare arbitrară, ex. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "dar nu este instalat"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s este marcat ca fiind instalat manual.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s este marcat ca fiind instalat manual.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s este deja la cea mai nouă versiune.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s este deja la cea mai nouă versiune.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "%s este marcat ca fiind instalat manual.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Eșec la „open†pentru %s"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "%s este marcat ca fiind instalat manual.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "Verificați dacă pachetul 'dpkg-dev' este instalat.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "%s este marcat ca fiind instalat manual.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "%s este marcat ca fiind instalat manual.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "ÃŽnregistrare de pachet necunoscut!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "Citire liste de pachete"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "Pachete alese special:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Pachete deteriorate"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "%s este marcat ca fiind instalat manual.\n"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "Se citesc informațiile de stare"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Configurări implicite necorespunzătoare!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Apăsați Enter pentru a continua."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Doriți să ștergeți eventualele fișiere .deb descărcate anterior?"
+
+#: dselect/install
+#, fuzzy
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "S-au produs unele erori în timpul despachetării. Se vor configura"
+
+#: dselect/install
+#, fuzzy
+msgid "will be configured. This may result in duplicate errors"
+msgstr ""
+"pachetele care au fost instalate. Aceasta ar putea rezulta erori duplicate"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "sau erori cauzate de dependențe lipsă. Fiind normal, doar erorile de"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"deasupra acestui mesaj sunt importante. Corectați-le și reporniți "
+"[I]nstalarea"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Se combină informațiile disponibile"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Lista de extensii pentru pachet este prea lungă"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Eroare la prelucrarea directorului %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Lista de extensii pentru sursă este prea lungă"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Eroare la scrierea antetului în fișierul index"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Eroare la prelucrarea conținutului %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Utilizare: apt-ftparchive [opțiuni] comanda\n"
+"Comenzi: packages cale_binare [fișier_înlocuire [prefix_cale]]\n"
+" sources cale_src [fișier_înlocuire [prefix_cale]]\n"
+" contents cale\n"
+" release cale\n"
+" generate config [grupuri]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generează fișiere de indexare pentru arhivele Debian. "
+"Suportă\n"
+"multe stiluri de generare de la complet automat la înlocuiri funcționale\n"
+"pentru dpkg-scanpackage și dpkg-scansources\n"
+"\n"
+"apt-ftparchive generează fișierele Package dintr-un arbore de .deb-uri.\n"
+"Fișierul Pachet înglobează conținutul tuturor câmpurilor de control din "
+"fiecare\n"
+"pachet cât și MD5 hash și dimensiunea fișierului. Un fișier de înlocuire "
+"este\n"
+"furnizat pentru a forța valoarea Priorității și Secțiunii.\n"
+"\n"
+"În mod asemănator apt-ftparchive generează fișierele Sources dintr-un arbore "
+"de .dsc-uri.\n"
+"Opțiunea --source-override poate fi folosită pentru a specifica fișierul de "
+"înlocuire\n"
+"\n"
+"Comenzile 'packages' și 'sources' ar trebui executate în rădăcina "
+"arborelui.\n"
+"Cale_binare ar trebui să indice baza căutării recursive și fișierul de "
+"înlocuire ar\n"
+"trebui să conțină semnalizatorul de înlocuire. Prefix_cale este adăugat "
+"câmpului\n"
+"de nume fișier dacă acesta este prezent. Exemplu de utilizare din arhiva\n"
+"Debian:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Opțiuni:\n"
+" -h Acest text de ajutor.\n"
+" --md5 Generarea controlului MD5\n"
+" -s=? Fișierul de înlocuire pentru surse\n"
+" -q În liniște\n"
+" -d=? Selectează baza de date de cache opțională\n"
+" --no-delink Activează modul de depanare dezlegare\n"
+" --contents Generarea fișierului cu sumarul de control\n"
+" -c=? Citește acest fișier de configurare\n"
+" -o=? Ajustează o opțiune de configurare arbitrară"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Nu s-a potrivit nici o selecție"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Unele fișiere lipsesc din grupul fișierului pachet '%s'"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "DB a fost corupt, fișierul a fost redenumit %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "DB este vechi, se încearcă înnoirea %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Formatul DB este nevalid. Dacă l-ați înnoit pe apt de la o versiune mai "
+"veche, ștergeți și recreați baza de date."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Nu s-a putut deschide fișierul DB %s: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Eșec la „readlink†pentru %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Arhiva nu are înregistrare de control"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Nu s-a putut obține un cursor"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Eșec la alocarea memoriei"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Algoritm de compresie necunoscut '%s'"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Rezultatul comprimat %s are nevoie de o ajustare a compresiei"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Eșec la crearea conexiunii IPC către subproces"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "EÈ™ec la „forkâ€"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Comprimare copil"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Eroare internă, eșec la crearea lui %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "IE către subproces/fișier eșuat"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Eșec la citire în timpul calculului sumei MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Nu s-a putut deschide %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Înlocuire greșită %s linia %lu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Eșec la citirea fișierului de înlocuire a permisiunilor %s"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Înlocuire greșită %s linia %lu #1"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Înlocuire greșită %s linia %lu #2"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Înlocuire greșită %s linia %lu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "A: Nu s-a putut citi directorul %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "A: Nu s-a putut efectua „stat†pentru %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "A: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: Erori la fișierul "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Eșec la „resolve†pentru %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Parcurgerea arborelui a eșuat"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Eșec la „open†pentru %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " Dezlegare %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Eșec la „link†între %s și %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " Limita de %sB a dezlegării a fost atinsă.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Arhiva nu are câmp de pachet"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s nu are intrare de înlocuire\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " %s responsabil este %s nu %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s nu are nici o intrare sursă de înlocuire\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s nu are nici intrare binară de înlocuire\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "În așteptarea antetelor"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "Serverul HTTP a trimis un antet de răspuns necorespunzător"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Linie de antet necorespunzătoare"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "Serverul HTTP a trimis un antet Content-Length necorespunzător"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "Serverul HTTP a trimis un antet zonă de conținut necorespunzător"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Acest server HTTP are un suport defect de intervale"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Format dată necunoscut"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Antet de date necorespunzător"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Conectare eșuată"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Eroare internă"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Nu s-a putut citi baza de date de CD %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Folosiți apt-cdrom pentru a-l face pe APT să recunoască acest CD. „apt-get "
+"update†nu poate fi folosit pentru adăugarea de noi CD-uri"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "CD-ROM necorespunzător"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Nu se poate demonta CD-ul din %s, poate este încă utilizat."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Disc negăsit."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Fișier negăsit"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Conectare la %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Nu s-a putut crea un socket pentru %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Nu s-a putut iniția conexiunea cu %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr ""
+"Nu s-a putut realiza conexiunea cu %s:%s (%s), timpul de conectare expirat"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Eșec"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Nu s-a putut realiza conexiunea cu %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Conectare la %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Nu s-a putut rezolva „%sâ€"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "EÈ™ec temporar la rezolvarea lui „%sâ€"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "S-a întâmplat ceva „necurat†la rezolvarea lui „%s:%s†(%i)"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "S-a întâmplat ceva „necurat†la rezolvarea lui „%s:%s†(%i)"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Nu s-a putut realiza conexiunea cu %s %s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "EÈ™ec la „statâ€"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "URI invalid, URI-uile locale trebuie să nu înceapă cu //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Se autentifică"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Nu se poate detecta numele perechii"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Nu s-a putut detecta numele local"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Serverul a refuzat conexiunea și a spus: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "„USER†a eșuat, serverul a spus: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "„PASS†a eșuat, serverul a spus: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Un server proxy a fost precizat, dar nu există nici un script de conectare, "
+"Acquire::ftp::ProxyLogin este gol."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Scriptul „%s†cu comenzile de conectare a eșuat, serverul a spus: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "„TYPE†a eșuat, serverul a spus: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Timpul de conectare a expirat"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Serverul a închis conexiunea"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Un răspuns a depășit zona de tampon."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Protocol corupt"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Nu s-a putut crea un socket"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr ""
+"Nu s-a putut realiza conectarea la socket-ul de date, timpul de conectare a "
+"expirat"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Nu s-a putut realiza conectarea la un socket pasiv"
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "„getaddrinfo†n-a reușit să obțină un socket de ascultare"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Nu s-a putut realiza asocierea la un socket"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Nu s-a putut asculta pe socket"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Nu s-a putut detecta numele socket-ului"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Nu s-a putut trimite comanda PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Familie de adrese necunoscută %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "„EPRT†a eșuat, serverul a spus: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Timpul de conectare la socket-ul de date expirat"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Nu s-a putut accepta conexiune"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Problemă la calcularea dispersiei pentru fișierul"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Nu s-a putut aduce fiÈ™ierul, serverul a spus „%sâ€"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Timp expirat pentru socket-ul de date"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Transferul de date a eșuat, serverul a spus: '%s'"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Interogare"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Nu s-a putut invoca"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Cel puțin o semnătură nevalidă a fost întâlnită."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Eroare internă: Semnătură corespunzătoare, dar nu s-a putut determina "
+"amprenta digitale a cheii?!"
+
+#: methods/gpgv.cc
+#, fuzzy
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Nu s-a putut executa „%s†pentru verificarea semnăturii (gnupg este "
+"instalat?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Eroare necunoscută în timp ce se execută apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Următoarele semnături nu au fost valide:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Următoarele semnături n-au putut fi verificate, deoarece cheia publică nu "
+"este disponibilă:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Eroare la scrierea în fișierul"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr ""
+"Eroare la citirea de la server. Conexiunea a fost închisă de la distanță"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Eroare la citirea de la server"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Eroare la scrierea în fișier"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Selecția a eșuat"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Timp de conectare expirat"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Eroare la scrierea fișierului de rezultat"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Nu s-a putut deschide fișierul %s"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Nu s-a putut deschide fișierul %s"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr ""
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Eșec la ajustarea timpului de modificare"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Conexiune închisă prematur"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Dependențe neîndeplinite. Încercați să folosiți --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Ați putea porni 'apt --fix-broken install' pentru a corecta acestea:"
+
+#~ msgid "(not found)"
+#~ msgstr "(negăsit)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Pachet ales special: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr ""
+#~ "Nu există nici o cheie publică disponibilă pentru următoarele "
+#~ "identificatoare de chei:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "Directorul %s este redirectat"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "Dependența lui %s de %s nu poate fi satisfăcută deoarece pachetul %s nu "
+#~ "poate fi găsit"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "Dependența lui %s de %s nu poate fi satisfăcută deoarece pachetul %s nu "
+#~ "poate fi găsit"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Eșec la satisfacerea dependenței %s pentru %s: Pachetul instalat %s este "
+#~ "prea nou"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "Dependența lui %s de %s nu poate fi satisfăcută deoarece nici o versiune "
+#~ "disponibilă a pachetului %s nu poate satisface versiunile cerute"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "Dependența lui %s de %s nu poate fi satisfăcută deoarece pachetul %s nu "
+#~ "poate fi găsit"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Eșec la satisfacerea dependenței %s pentru %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Dependențele înglobate pentru %s nu pot fi satisfăcute."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Problemă la desfacerea %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Eșec la „unlink†pentru %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Utilizare: apt-cache [opțiuni] comanda\n"
+#~ " apt-cache [opțiuni] show pachet1 [pachet2 ...]\n"
+#~ "\n"
+#~ "apt-cache este o unealtă de nivel scăzut pentru manipularea fișierelor\n"
+#~ "binare din cache-ul APT, și de interogare a informațiilor din ele\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Opțiuni:\n"
+#~ " -h Acest text de ajutor.\n"
+#~ " -p=? Cache-ul de pachete.\n"
+#~ " -s=? Cache-ul de surse.\n"
+#~ " -q Dezactivează indicatorul de progres.\n"
+#~ " -i Arată doar dependenÈ›ele importante pentru comanda „unmetâ€.\n"
+#~ " -c=? Citește acest fișier de configurare\n"
+#~ " -o=? Ajustează o opțiune de configurare arbitrară, ex. -o dir::cache=/"
+#~ "tmp\n"
+#~ "Vedeți manualele apt-cache(8) și apt.conf(5) pentru mai multe "
+#~ "informații.\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Opțiuni:\n"
+#~ " -h Acest text de ajutor.\n"
+#~ " -c=? Citește acest fișier de configurare\n"
+#~ " -o=? Ajustează o opțiune de configurare arbitrară, ex. -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Utilizare: apt-sortpkgs [opțiuni] fișier1 [fișier2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs este o unealtă simplă pentru sortarea fișierelor pachete. \n"
+#~ "Opțiunea -s este folosită pentru a indica ce fel de fișier este.\n"
+#~ "\n"
+#~ "Opțiuni:\n"
+#~ " -h Acest text de ajutor\n"
+#~ " -s Folosește sortarea de fișiere-sursă\n"
+#~ " -c=? Citește acest fișier de configurare\n"
+#~ " -o=? Ajustează o opțiune de configurare arbitrară, ex.: -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Procesul copil a eșuat"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Trebuie specificat cel puțin un pachet pentru a-i aduce sursa"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Eșec la crearea conexiunilor"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Eșec la executarea lui gzip "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s pentru %s compilat la %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Eșec la crearea FIȘIERULUI*"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Linie greșită %lu în lista sursă %s (analiza URI)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr "Linie greșită %lu în lista sursă %s (analiza dist.)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "Linie greșită %lu în lista sursă %s (dist)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "Linie greșită %lu în lista sursă %s (analiza dist.)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "Linie greșită %lu în lista sursă %s (analiza dist.)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr "Linie greșită %lu în lista sursă %s (analiza dist.)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Linie greșită %lu în lista sursă %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Linie greșită %lu în lista sursă %s (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Linie greșită %lu în lista sursă %s (analiza URI)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "Linie greșită %lu în lista sursă %s (dist. absolută)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "Linie greșită %lu în lista sursă %s (analiza dist.)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr ""
+#~ "Nu s-a găsit pachetul %s %s în timpul procesării dependențelor de fișiere"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Nu pot determina starea listei surse de pachete %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Colectare furnizori fișier"
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Nu s-a putut analiza fișierul pachet %s (1)"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Blocul vânzător %s nu conține amprentă"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Total spațiu versiuni ale dependențelor: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Nu aveți suficient spațiu în %s"
+
+#~ msgid "Done"
+#~ msgstr "Terminat"
+
+#, fuzzy
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Abandonez instalarea."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Eroare internă, înnoire totală a defectat diverse chestiuni"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s nu este un pachet DEB valid."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Utilizare puct de montare CD-ROM %s\n"
+#~ "Montare CD-ROM\n"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Aceasta nu este o arhivă DEB validă, nu are unul din următorii membri "
+#~ "„%sâ€, „%s†sau „%sâ€"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "Nepotrivire MD5Sum"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "N-am putut localiza un fișier pentru pachetul %s. Aceasta ar putea "
+#~ "însemna că aveți nevoie să depanați manual acest pachet."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Nu se poate scrie jurnalul, openpty() a eșuat (oare /dev/pts e montat?)\n"
+
+#, fuzzy
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Se deschide fișierul de configurare %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Eșec la ștergerea lui %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Nu s-a putut crea %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Eșec la „stat†pentru %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr ""
+#~ "Directoarele info și temp trebuie să fie în același sistem de fișiere"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr ""
+#~ "Eșec la schimbarea directorului către directorul de administrare %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Eroare internă la preluarea numelui de pachet"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Se citește lista de fișiere"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Eșec la deschiderea fișierului-listă '%sinfo/%s'. Dacă nu puteți restaura "
+#~ "acest fișier atunci goliți-l și, apoi, imediat reinstalați aceeași "
+#~ "versiune a pachetului!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Citirea fișierului-listă %sinfo/%s a eșuat"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Eroare internă la preluarea unui nod"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Eșec la deschiderea fișierului de redirectări %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Fișierul-redirectare este deteriorat"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Linie necorespunzătoare în fișierul-redirectare: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Eroare internă în timpul adăugării unei redirectări"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Cache-ul de pachete trebuie mai întâi inițializat"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "EÈ™ec la găsirea unui antet „Package:â€, deplasamentul este %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr ""
+#~ "Secțiune necorespunzătoare ConfFile în fișierul de stare. Deplasamentul "
+#~ "este %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Eroare la analiza MD5. Deplasamentul este %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Nu s-a putut schimba directorul la %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Eșec la localizare a unui fișier de control valid"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Nu s-a putut deschide conexiunea pentru %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Eroare de citire din procesul %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "S-a primit o singură linie de antet de peste %u caractere"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Înlocuire greșită %s linia %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Înlocuire greșită %s linia %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Înlocuire greșită %s linia %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "decompresor"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "citire, încă mai am %lu de citit dar n-a mai rămas nimic"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "scriere, încă mai am %lu de scris dar nu pot"
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Eroare apărută în timpul procesării %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Eroare apărută în timpul procesării %s (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "A apărut o eroare în timpul procesării lui %s (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Eroare apărută în timpul procesării %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Eroare apărută în timpul procesării %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Eroare apărută în timpul procesării %s (NewVersion1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Eroare apărută în timpul procesării %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "A apărut o eroare în timpul procesării lui %s (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Eroare apărută în timpul procesării %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Eroare apărută în timpul procesării %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Eroare internă, nu a putut fi localizat membrul"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr ""
+#~ "E: Lista de argumente din Acquire::gpgv::Options este prea lungă. Se iese."
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "Eroare apărută în timpul procesării %s (NewVersion2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "Linie greșită %u în lista sursă %s (identificator vânzător)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "Nu s-a putut accesa inelul de chei: '%s'"
+
+#~ msgid "Could not patch file"
+#~ msgstr "Nu s-a putut peteci fișierul"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "Se procesează declanșatorii pentru %s"
+
+#~ msgid "Dynamic MMap ran out of room"
+#~ msgstr "MMap-ul dinamic a rămas fără spațiu"
+
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "Din moment ce doar ați cerut o singură operațiune este extrem de "
+#~ "probabil\n"
+#~ " că pachetul pur și simplu nu este instalabil și un raport de eroare "
+#~ "pentru\n"
+#~ "acest pachet ar trebui completat."
+
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "Linia %d e prea lungă (max %lu)"
+
+#, fuzzy
+#~ msgid "Line %d too long (max %d)"
+#~ msgstr "Linie %d prea lungă (max %d)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc1)"
+#~ msgstr "Eroare apărută în timpul procesării %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc2)"
+#~ msgstr "Eroare apărută în timpul procesării %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Stored label: %s \n"
+#~ msgstr "Etichetă memorată: %s \n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found %i package indexes, %i source indexes, %i translation indexes and "
+#~ "%i signatures\n"
+#~ msgstr ""
+#~ "Găsite %i indexuri de pachete, %i indexuri de surse și %i semnături\n"
+
+#, fuzzy
+#~ msgid "openpty failed\n"
+#~ msgstr "Eșuarea selecției"
diff --git a/po/ru.po b/po/ru.po
new file mode 100644
index 000000000..28cc8e092
--- /dev/null
+++ b/po/ru.po
@@ -0,0 +1,4428 @@
+# Russian messages for the apt suite.
+#
+# Vadim Kutchin <amadis@chemi.komisc.ru>, 2002.
+# Ilgiz Kalmetev <ilgiz@bashtelecom.ru>, 2002.
+# Tichomir Koryakov <Tichomir.Koryakov@usu.ru>, 2002.
+# Nikolai Prokoschenko <nikolai@prokoschenko.de>, 2004.
+# Dmitry Astapov <adept@umc.com.ua>, 2004.
+# Dmitry Astapov <adept@despammed.com>, 2004.
+# Yuri Kozlov <kozlov.y@gmail.com>, 2004, 2005, 2006, 2007, 2008.
+# Yuri Kozlov <yuray@komyakino.ru>, 2009, 2010, 2012, 2015, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.2.12\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2016-05-19 20:50+0300\n"
+"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
+"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.5\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñигнатура архива"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° Ñлемента архива"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Ðеправильный заголовок Ñлемента архива %s"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Ðеправильный заголовок Ñлемента архива"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Слишком короткий архив"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Ðе удалоÑÑŒ прочитать заголовки архива"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Ðе удалоÑÑŒ найти наÑтроенную программу ÑÐ¶Ð°Ñ‚Ð¸Ñ Ð´Ð»Ñ Â«%s»"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Повреждённый архив"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма Tar, архив повреждён"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "ÐеизвеÑтный заголовок в архиве TAR. Тип %u, Ñлемент %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Это неправильный DEB-архив — отÑутÑтвует ÑоÑÑ‚Ð°Ð²Ð½Ð°Ñ Ñ‡Ð°ÑÑ‚ÑŒ «%s»"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°, не удалоÑÑŒ найти ÑоÑтавную чаÑÑ‚ÑŒ %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Ðе удалоÑÑŒ прочеÑÑ‚ÑŒ Ñодержимое control-файла"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Ðе удалоÑÑŒ запиÑать в файл %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Ðе удалоÑÑŒ закрыть файл %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Слишком длинный путь %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ñ€Ð°Ñпаковка %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "Каталог %s входит в ÑпиÑок diverted"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Пакет пытаетÑÑ Ð¿Ð¸Ñать в diversion %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Путь diversion Ñлишком длинен"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Ðе удалоÑÑŒ получить атрибуты %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Ðе удалоÑÑŒ переименовать %s в %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "Каталог %s был заменён не-каталогом"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Ðе удалоÑÑŒ размеÑтить узел в хеше"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Путь Ñлишком длинен"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Файлы заменÑÑŽÑ‚ÑÑ Ñодержимым пакета %s без верÑии"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Файл %s/%s перепиÑывает файл в пакете %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Ðевозможно прочитать %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Ðевозможно получить атрибуты %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode вызван Ð´Ð»Ñ ÑƒÐ·Ð»Ð°, который ещё иÑпользуетÑÑ"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Ðе удалоÑÑŒ найти Ñлемент хеша!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Ðе удалоÑÑŒ Ñоздать diversion"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° в AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Попытка Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ diversion, %s -> %s и %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Двойное добавление diversion %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Повторно указан файл наÑтройки %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+"Обновление из Ñтого Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ безопаÑным ÑпоÑобом, и "
+"поÑтому по умолчанию он отключён."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+"Данные из Ñтого Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ð½ÐµÐ»ÑŒÐ·Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸Ñ†Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ, и поÑтому потенциально "
+"из небезопаÑно иÑпользовать."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+"Смотрите Ñправочную Ñтраницу apt-secure(8) о Ñоздании Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ð¸ "
+"наÑтройке пользователÑ."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Репозиторий «%s» больше не подпиÑан."
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Репозиторий «%s» не Ñодержит файла Release."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+"Обычно Ñто не разрешаетÑÑ, но указан параметр Acquire::"
+"AllowDowngradeToInsecureRepositories Ð´Ð»Ñ Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Репозиторий «%s» не подпиÑан."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Репозиторий «%s» не Ñодержит файла Release."
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr ""
+"ПропуÑкаетÑÑ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ðµ наÑтроенного файла «s», так как репозиторий «%s» "
+"предоÑтавлÑет только неÑтойкое шифрование информации"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Ðе удалоÑÑŒ прочеÑÑ‚ÑŒ ÑÑылку %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Хеш Ñумма не Ñовпадает"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "переименовать не удалоÑÑŒ, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Ðе Ñовпадает размер"
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr "Ðеправильный формат файла"
+
+#: apt-pkg/acquire-item.cc
+msgid "Signature error"
+msgstr "Ошибка подпиÑи"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+"Ðекорректный подпиÑанный файл, получено «%s» (возможно в Ñети требуетÑÑ "
+"аутентификациÑ?)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"Произошла ошибка при проверке подпиÑи. Репозиторий не обновлён и будут "
+"иÑпользованы предыдущие индекÑные файлы. Ошибка GPG: %s: %s"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "Ошибка GPG: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+"ПропуÑкаетÑÑ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ðµ наÑтроенного файла «%s», так как репозиторий «%s» не "
+"поддерживает архитектуру «%s»"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"Ðевозможно найти ожидаемый Ñлемент «%s» в файле Release (Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ "
+"в sources.list или файл)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+"ПропуÑкаетÑÑ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ðµ наÑтроенного файла «s», так как репозиторий «%s» "
+"предоÑтавлÑет только неÑтойкое шифрование информации"
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"Файл Release Ð´Ð»Ñ %s проÑрочен (недоÑтоверный Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ %s). Обновление Ñтого "
+"Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÑŒÑÑ Ð½Ðµ будет."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Конфликт раÑпроÑтранениÑ: %s (ожидалÑÑ %s, но получен %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Ðе удалоÑÑŒ обнаружить файл пакета %s. Это может означать, что вам придётÑÑ "
+"вручную иÑправить Ñтот пакет (возможно, пропущен arch)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr "Ðевозможно найти иÑточник Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ «%2$s» верÑии «%1$s»"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr "Ðекорректный перечень пакетов. Ðет Ð¿Ð¾Ð»Ñ Filename: Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð° %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Changelog Ð´Ð»Ñ %s=%s недоÑтупен"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Драйвер Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° %s не найден."
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr "Проверьте, уÑтановлен ли пакет %s?"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Метод %s запуÑтилÑÑ Ð½Ðµ корректно"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "Ð’Ñтавьте диÑк Ñ Ð¼ÐµÑ‚ÐºÐ¾Ð¹ «%s» в уÑтройÑтво «%s» и нажмите [Enter]."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Каталог ÑпиÑка %spartial отÑутÑтвует."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Ðрхивный каталог %spartial отÑутÑтвует."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "Ðевозможно заблокировать каталог %s"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+"Ð’ ÑиÑтеме не Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Â«%s» Ð´Ð»Ñ Ð¿ÐµÑочницы, невозможно ÑброÑить права"
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+#| msgid ""
+#| "Can't drop privileges for downloading as file '%s' couldn't be accessed "
+#| "by user '%s'."
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+"Ðевозможно ÑброÑить права Ð´Ð»Ñ ÑкачиваниÑ, так как файл «%s» недоÑтупен Ð´Ð»Ñ "
+"Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Â«%s»."
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr "ОчиÑтка «%s» не поддерживаетÑÑ"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Ðевозможно Ñменить текущий каталог на %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "СкачиваетÑÑ Ñ„Ð°Ð¹Ð» %li из %li (оÑталоÑÑŒ %s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "СкачиваетÑÑ Ñ„Ð°Ð¹Ð» %li из %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"Пакет %s нуждаетÑÑ Ð² переуÑтановке, но найти архив Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ не удалоÑÑŒ."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Ошибка, pkgProblemResolver::Resolve Ñгенерировал повреждённые пакеты. Это "
+"может быть вызвано отложенными (held) пакетами."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "Ðевозможно иÑправить ошибки, у Ð²Ð°Ñ Ð¾Ñ‚Ð»Ð¾Ð¶ÐµÐ½Ñ‹ (held) битые пакеты."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "СпиÑки пакетов или файл ÑоÑтоÑÐ½Ð¸Ñ Ð½Ðµ могут быть открыты или прочитаны."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Ð’Ñ‹ можете запуÑтить «apt-get update» Ð´Ð»Ñ Ð¸ÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñтих ошибок"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Ðе читаетÑÑ Ð¿ÐµÑ€ÐµÑ‡ÐµÐ½ÑŒ иÑточников."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Ошибка компилÑции регулÑрного Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ â€” %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "ВыпуÑк «%s» Ð´Ð»Ñ Â«%s» не найден"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "ВерÑÐ¸Ñ Â«%s» Ð´Ð»Ñ Â«%s» не найдена"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Ðе удалоÑÑŒ найти задачу «%s»"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Ðе удалоÑÑŒ найти пакет Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ regex «%s»"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Ðе удалоÑÑŒ найти пакет Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ glob «%s»"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Ðе удалоÑÑŒ найти пакет %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+"Ðе удалоÑÑŒ выбрать верÑии из пакета «%s», так как он полноÑтью виртуальный"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"Ðе удалоÑÑŒ выбрать Ñамую новую верÑию из пакета «%s», так как он полноÑтью "
+"виртуальный"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+"Ðе удалоÑÑŒ выбрать Ñамую верÑию кандидата из пакета %s, так как у него нет "
+"кандидатов"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"Ðе удалоÑÑŒ выбрать уÑтановленную верÑию из пакета %s, так как он не "
+"уÑтановлен"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"Ðе удалоÑÑŒ выбрать ни уÑтановленную, ни верÑию кандидата из пакета «%s», так "
+"как в нём нет ни той, ни другой"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Строка %u в ÑпиÑке иÑточников %s Ñлишком длинна."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Размонтирование CD-ROM…\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "ИÑпользование %s в качеÑтве точки Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ CD-ROM\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Ожидание операции работы Ñ Ð´Ð¸Ñком…\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Монтирование CD-ROM…\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "ИдентификациÑ... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Ðайдена метка: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "ПоиÑк на диÑке индекÑных файлов...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Ðайдено индекÑов: %zu Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð¾Ð², %zu Ð´Ð»Ñ Ð¸Ñточников, %zu Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð¾Ð² и "
+"%zu Ð´Ð»Ñ Ñигнатур\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Ðе удалоÑÑŒ найти ни одного файла пакетов; возможно Ñто не диÑк Debian или Ñ "
+"не той архитектурой?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Ðайден Ñрлык «%s»\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Это неправильное имÑ, попробуйте ещё раз.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Ðазвание диÑка: \n"
+"«%s»\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Копирование ÑпиÑков пакетов…"
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "ЗапиÑÑŒ нового ÑпиÑка иÑточников\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "ЗапиÑи в ÑпиÑке иÑточников Ð´Ð»Ñ Ñтого диÑка:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Ðевозможно получить атрибуты %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Ðевозможно прочитать атрибуты точки Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Ðевозможно получить атрибуты cdrom"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr ""
+"Параметр командной Ñтроки «%c» [из %s] непонÑтен в комбинации Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ "
+"параметрами."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr ""
+"Параметр командной Ñтроки «%s» непонÑтен в комбинации Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ параметрами"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Параметр командной Ñтроки %s — не логичеÑкий переключатель «да/нет»"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %s требуетÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "Значение параметра %s должно иметь вид =<val>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %s требуетÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ в виде целого чиÑла, а не «%s»"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Параметр «%s» Ñлишком длинный"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "СмыÑл %s не ÑÑен, иÑпользуйте true или false."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð°Ð±Ð±Ñ€ÐµÐ²Ð¸Ð°Ñ‚ÑƒÑ€Ð° типа: «%c»"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Открытие файла наÑтройки %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "СинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° %s:%u: в начале блока нет имени."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "СинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° %s:%u: иÑкажённый тег"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "СинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° %s:%u: лишние Ñимволы поÑле значениÑ"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"СинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° %s:%u: директивы могут задаватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на верхнем "
+"уровне"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "СинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° %s:%u: Ñлишком много вложенных include"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "СинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° %s:%u вызвана include из Ñтого меÑта"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "СинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° %s:%u: не Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° «%s»"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"СинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° %s:%u: Ð´Ð»Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ñ‹ clear требуетÑÑ Ñ‚Ñ€ÐµÑ‚Ð¸Ð¹ параметр в "
+"качеÑтве аргумента"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "СинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° %s:%u: лишние Ñимволы в конце файла"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Проблема при удалении файла %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr ""
+"Блокировка не иÑпользуетÑÑ, так как файл блокировки %s доÑтупен только Ð´Ð»Ñ "
+"чтениÑ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Ðе удалоÑÑŒ открыть файл блокировки %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr ""
+"Блокировка не иÑпользуетÑÑ, так как файл блокировки %s находитÑÑ Ð½Ð° файловой "
+"ÑиÑтеме nfs"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Ðе удалоÑÑŒ получить доÑтуп к файлу блокировки %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr "СпиÑок файлов не может быть Ñоздан, так как «%s» не ÑвлÑетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð¼"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr "Файл «%s» в каталоге «%s» игнорируетÑÑ, так как Ñто необычный файл"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr "Файл «%s» в каталоге «%s» игнорируетÑÑ, так как он не имеет раÑширениÑ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"Файл «%s» в каталоге «%s» игнорируетÑÑ, так как он не имеет неправильное "
+"раÑширение"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "ОжидалоÑÑŒ завершение процеÑÑа %s, но он не был запущен"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr ""
+"Ðарушение защиты памÑти (segmentation fault) в порождённом процеÑÑе %s."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Порождённый процеÑÑ %s получил Ñигнал %u."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Порождённый процеÑÑ %s вернул код ошибки (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Порождённый процеÑÑ %s неожиданно завершилÑÑ"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Ошибка чтениÑ"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Ошибка запиÑи"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Проблема Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ gzip-файла %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr "Ðеожиданный конец файла"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Ðе удалоÑÑŒ Ñоздать IPC Ñ Ð¿Ð¾Ñ€Ð¾Ð¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¼ процеÑÑом"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Ðе удалоÑÑŒ выполнить компреÑÑор "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Ðе удалоÑÑŒ открыть файл %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Ðе удалоÑÑŒ открыть файловый деÑкриптор %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr ""
+"ошибка при чтении; ÑобиралиÑÑŒ прочеÑÑ‚ÑŒ ещё %llu байт, но ничего больше нет"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "ошибка при запиÑи; ÑобиралиÑÑŒ запиÑать ещё %llu байт, но не Ñмогли"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Проблема Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Проблема при переименовании файла %s в %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Проблема при Ñинхронизации файла"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Ðевозможно выполнить mkstemp %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Ðевозможно запиÑать в %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Ðевозможно отобразить в памÑÑ‚ÑŒ пуÑтой файл"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Ðевозможно отобразить в памÑÑ‚ÑŒ %llu байт"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Ðе удалоÑÑŒ Ñделать копию файлового деÑкриптора %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "Ðе удалоÑÑŒ закрыть mmap"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "Ðе удалоÑÑŒ Ñинхронизировать mmap"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Ðевозможно отобразить в памÑÑ‚ÑŒ %lu байт"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Ðе удалоÑÑŒ обрезать файл"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"Ðе хватает меÑта Ð´Ð»Ñ Dynamic MMap. Увеличьте значение APT::Cache-Start. "
+"Текущее значение: %lu. (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"Ðе удалоÑÑŒ увеличить размер MMap, так как уже доÑтигнут предел в %lu байт."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Ðе удалоÑÑŒ увеличить размер MMap, так как автоматичеÑкое увеличение "
+"отключено пользователем."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s… Ошибка!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s… Готово"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr "…"
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s… %u%%"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%liд %liч %liмин %liÑ"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%liч %liмин %liÑ"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%liмин %liÑ"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%liÑ"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Ðе найдено: %s"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr "Ð”Ð»Ñ Ñ†ÐµÐ»Ð¸ %s нужно получить такой же файл (%s) как %s из иÑточника %s"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr "Цель %s (%s) наÑтроена неÑколько раз в %s и %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Ðевозможно разобрать Ñодержимое файла Release (%s)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "ОтÑутÑтвуют разделы в файле Release (%s)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "ОтÑутÑтвуют Ñлементы Hash в файле Release (%s)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+"ОтÑутÑтвуют Ñлементы Hash в файле Release %s, который ÑчитаетÑÑ Ð´Ð¾Ñтаточно "
+"Ñтойким, Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ Ð·Ñ€ÐµÐ½Ð¸Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑти"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Ðеправильный Ñлемент «%s» в файле Release %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr "Указаны конфликтующие Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %s из иÑточника %s %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr "Указано некорректное Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %s из иÑточника %s %s (%s)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr "Указаны конфликтующие Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %s из иÑточника %s %s"
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Ðевозможно разобрать Ñодержимое файла пакета %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"Ðе удалоÑÑŒ выполнить блокировку управлÑющего каталога (%s); он уже "
+"иÑпользуетÑÑ Ð´Ñ€ÑƒÐ³Ð¸Ð¼ процеÑÑом?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr ""
+"Ðе удалоÑÑŒ выполнить блокировку управлÑющего каталога (%s); у Ð²Ð°Ñ ÐµÑÑ‚ÑŒ права "
+"ÑуперпользователÑ?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"Работа dpkg прервана, вы должны вручную запуÑтить «%s» Ð´Ð»Ñ ÑƒÑÑ‚Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ "
+"проблемы. "
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Ðе заблокирован"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "УÑтанавливаетÑÑ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "ÐаÑтраиваетÑÑ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "УдалÑетÑÑ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "ВыполнÑетÑÑ Ð¿Ð¾Ð»Ð½Ð¾Ðµ удаление %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "Уведомление об иÑчезновении %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "ВыполнÑетÑÑ Ð¿Ð¾ÑлеуÑтановочный триггер %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "УÑтановлен %s"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "ОтÑутÑтвует каталог «%s»"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "Ðе удалоÑÑŒ открыть файл «%s»"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "ПодготавливаетÑÑ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "РаÑпаковываетÑÑ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "ПодготавливаетÑÑ Ð´Ð»Ñ Ð½Ð°Ñтройки %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "ПодготавливаетÑÑ Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "Удалён %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Подготовка к полному удалению %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "%s полноÑтью удалён"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Can not write log (%s)"
+msgstr "Ðевозможно запиÑать журнал (%s)"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr "Смонтирован ли /dev/pts?"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "ДейÑтвие прервано до его завершениÑ"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr "Отчёты apport не запиÑаны, так доÑтигнут MaxReports"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "проблемы Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑ‚Ñми — оÑтавлÑем ненаÑтроенным"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Отчёты apport не запиÑаны, так как Ñообщение об ошибке указывает на "
+"повторную ошибку от предыдущего отказа."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Отчёты apport не запиÑаны, так как получено Ñообщение об ошибке о нехватке "
+"меÑта на диÑке"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Отчёты apport не запиÑаны, так как получено Ñообщение об ошибке о нехватке "
+"памÑти"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Отчёты apport не запиÑаны, так как получено Ñообщение о проблеме в локальной "
+"ÑиÑтеме"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"Отчёты apport не запиÑаны, так как получено Ñообщение об ошибке об ошибке "
+"ввода-выводы dpkg"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "ПоÑтроение дерева завиÑимоÑтей"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "ВерÑии-кандидаты"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Генерирование завиÑимоÑтей"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Чтение информации о ÑоÑтоÑнии"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Ðе удалоÑÑŒ открыть StateFile %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Ðе удалоÑÑŒ запиÑать временный StateFile %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "Отправка ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ Ñ€ÐµÑˆÐ°Ñ‚ÐµÐ»ÑŽ"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "Отправка запроÑа решателю"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "Подготовка к приёму решениÑ"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr "Внешний решатель завершилÑÑ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹ не передав ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибке"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "ЗапуÑтить внешний решатель"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Execute external planner"
+msgstr "ЗапуÑтить внешний решатель"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send request to planner"
+msgstr "Отправка запроÑа решателю"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send scenario to planner"
+msgstr "Отправка ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ Ñ€ÐµÑˆÐ°Ñ‚ÐµÐ»ÑŽ"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "External planner failed without a proper error message"
+msgstr "Внешний решатель завершилÑÑ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹ не передав ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибке"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "Сохранено %i запиÑей.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "Сохранено %i запиÑей Ñ %i отÑутÑтвующими файлами.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "Сохранено %i запиÑей Ñ %i неÑовпадающими файлами\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"Сохранено %i запиÑей Ñ %i отÑутÑтвующими файлами и Ñ %i неÑовпадающими "
+"файлами\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "Ðе удалоÑÑŒ найти аутентификационную запиÑÑŒ длÑ: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Ðе Ñовпадает хеш Ñумма длÑ: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "СиÑтема Ð¿Ð°ÐºÐµÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Â«%s» не поддерживаетÑÑ"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Ðевозможно определить подходÑщий тип ÑиÑтемы пакетированиÑ"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr "Ход выполнениÑ: [%3i%%]"
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "ЗапуÑкаетÑÑ dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"Ðе удалоÑÑŒ выполнить оперативную наÑтройку «%s». Подробней, Ñмотрите в man 5 "
+"apt.conf о APT::Immediate-Configure. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "Ðе удалоÑÑŒ наÑтроить «%s»."
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Ð’ÑледÑтвие Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð¸Ñ Ñ†Ð¸ÐºÐ»Ð¸Ñ‡ÐµÑких завиÑимоÑтей типа Конфликтует/"
+"ПредЗавиÑит, Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ ÑƒÑтановки необходимо временно удалить "
+"ÑущеÑтвенно важный пакет %s. Это может привеÑти к фатальным поÑледÑтвиÑм. "
+"ЕÑли вы дейÑтвительно хотите продолжить, уÑтановите параметр APT::Force-"
+"LoopBreak."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "КÑш пакетов пуÑÑ‚"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "КÑш пакетов повреждён"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Ðе Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ ÐºÑша пакетов"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Эта верÑÐ¸Ñ APT не поддерживает ÑиÑтему верÑий «%s»"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "КÑш пакетов был Ñобран Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð¹ архитектуры: %s и %s"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "КÑш пакетов повреждён, Ñодержит некорректный хеш"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "ЗавиÑит"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "ПредЗавиÑит"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Предлагает"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Конфликтует"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Рекомендует"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "ЗаменÑет"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Ломает"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Улучшает"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Замещает"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "важный"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "необходимый"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "Ñтандартный"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "дополнительный"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "необÑзательный"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "КÑш имеет неÑовмеÑтимую ÑиÑтему верÑий"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Произошла ошибка во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ %s (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"Превышено допуÑтимое количеÑтво имён пакетов, которое ÑпоÑобен обработать "
+"APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr ""
+"Превышено допуÑтимое количеÑтво верÑий, которое ÑпоÑобен обработать APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+"Превышено допуÑтимое количеÑтво опиÑаний, которое ÑпоÑобен обработать APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+"Превышено допуÑтимое количеÑтво завиÑимоÑтей, которое ÑпоÑобен обработать "
+"APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Чтение ÑпиÑков пакетов"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Ошибка ввода/вывода при попытке Ñохранить кÑш иÑточников"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Ðе поддерживаетÑÑ Ð¸Ð½Ð´ÐµÐºÑный файл типа «%s»"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"Значение «%s» недопуÑтимо Ð´Ð»Ñ APT::Default-Release, так как выпуÑк "
+"недоÑтупен в иÑточниках"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ в файле параметров %s: отÑутÑтвует заголовок Package"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "ÐеизвеÑтный тип фикÑации %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+"%s: значение %s находитÑÑ Ð²Ð½Ðµ диапазона корректных закреплÑющих приоритетов "
+"(Ñ %d по %d)"
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Ð”Ð»Ñ Ñ„Ð¸ÐºÑации не указан приоритет (или указан нулевой)"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "ИÑÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ %u в %s из файла %s (%s)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Открытие %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "ИÑÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ Ñтрока %u в ÑпиÑке иÑточников %s (тип)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "ÐеизвеÑтный тип «%s» в Ñтроке %u в ÑпиÑке иÑточников %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "ИÑÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ Ñтрока %u в ÑпиÑке иÑточников %s (тип)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "ÐеизвеÑтный тип «%s» в Ñтрофе %u в ÑпиÑке иÑточников %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr "Ð’ командной Ñтроке указан не поддерживаемый файл"
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Ð’Ñ‹ должны заполнить sources.list, помеÑтив туда URI иÑточников пакетов"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr "Ðевозможно преобразовать %s в целое чиÑло: выход за пределы диапазона"
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Ðе удалоÑÑŒ получить %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Ðекоторые индекÑные файлы не ÑкачалиÑÑŒ. Они были проигнорированы или вмеÑто "
+"них были иÑпользованы Ñтарые верÑии."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "РаÑчёт обновлений"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Сущ:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Пол:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Игн:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Ошк:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Получено %sБ за %s (%sБ/c)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Обработка]"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Смена ноÑителÑ: вÑтавьте диÑк Ñ Ð¼ÐµÑ‚ÐºÐ¾Ð¹\n"
+" «%s»\n"
+"в уÑтройÑтво «%s» и нажмите [Enter]\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "ИÑправление завиÑимоÑтей…"
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " не удалоÑÑŒ."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Ðевозможно Ñкорректировать завиÑимоÑти"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Ðевозможно минимизировать набор обновлений"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Готово"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+"Возможно, Ð´Ð»Ñ Ð¸ÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñтих ошибок вы захотите воÑпользоватьÑÑ Â«apt-get -"
+"f install»."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Ðеудовлетворённые завиÑимоÑти. ПопытайтеÑÑŒ выполнить «apt --fix-broken "
+"install», не ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ Ð¸Ð¼ÐµÐ½Ð¸ пакета, (или найдите другое решение)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr "Сортировка"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Заметьте, выбираетÑÑ Â«%s» Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ñ‡Ð¸ «%s»\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Заметьте, выбираетÑÑ Â«%s» Ð´Ð»Ñ glob «%s»\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Заметьте, выбираетÑÑ Â«%s» Ð´Ð»Ñ regex «%s»\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Пакет %s — виртуальный, его функции предоÑтавлÑÑŽÑ‚ÑÑ Ð¿Ð°ÐºÐµÑ‚Ð°Ð¼Ð¸:\n"
+
+#: apt-private/private-cacheset.cc
+msgid " [Installed]"
+msgstr " [УÑтановлен]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [Ðет верÑии-кандидата]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Ð’Ñ‹ должны Ñвно указать, какой именно вы хотите уÑтановить."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Пакет %s недоÑтупен, но упомÑнут в ÑпиÑке завиÑимоÑтей другого пакета.\n"
+"Это может означать, что пакет отÑутÑтвует, уÑтарел, или доÑтупен из "
+"иÑточников, не упомÑнутых в sources.list\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Однако Ñледующие пакеты могут его заменить:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Ð”Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð° «%s» не найден кандидат на уÑтановку"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Виртуальные пакеты, подобные «%s», не могут быть удалены\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"Пакет «%s» не уÑтановлен, поÑтому не может быть удалён. Возможно имелÑÑ Ð² "
+"виду «%s»?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Пакет «%s» не уÑтановлен, поÑтому не может быть удалён\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Заметьте, вмеÑто «%2$s» выбираетÑÑ Â«%1$s»\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr "ОÑновные команды:"
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr "Дополнительную информацию о доÑтупных командах Ñмотрите в %s."
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+"Параметры наÑтройки и ÑинтакÑÐ¸Ñ Ð¾Ð¿Ð¸Ñаны в apt.conf(5).\n"
+"Информацию о том, как наÑтроить иÑточники, можно найти в sources.list(5).\n"
+"Выбор пакетов и верÑий опиÑываетÑÑ Ñ‡ÐµÑ€ÐµÐ· apt_preferences(5).\n"
+"Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ безопаÑноÑти доÑтупна в apt-secure(8).\n"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Ð’ APT еÑÑ‚ÑŒ ÐºÐ¾Ñ€Ð¾Ð²ÑŒÑ Ð¡Ð£ÐŸÐ•Ð Ð¡Ð˜Ð›Ð."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr "Ð’ Ñтой программе еÑÑ‚ÑŒ Super Meep Powers."
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Ðе найдено ни одного пакета"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "Ð’ÐИМÐÐИЕ: Следующие пакеты невозможно аутентифицировать!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Предупреждение об аутентификации не принÑто в внимание.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Ðекоторые пакеты невозможно аутентифицировать"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "УÑтановить Ñти пакеты без проверки?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+"--force-yes уÑтарел, вмеÑто него иÑпользуйте параметры, начинающиеÑÑ Ñ --"
+"allow."
+
+#: apt-private/private-download.cc
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr ""
+"Обнаружены неудоÑтоверенные пакеты и был указан параметр -y без --allow-"
+"unauthenticated."
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Ðе удалоÑÑŒ определить количеÑтво Ñвободного меÑта в %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "ÐедоÑтаточно Ñвободного меÑта в %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Ðевозможно заблокировать каталог, куда ÑкладываютÑÑ Ñкачиваемые файлы"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Ðекоторые пакеты невозможно уÑтановить. Возможно, вы проÑите невозможного,\n"
+"или же иÑпользуете неÑтабильную верÑию диÑтрибутива, где запрошенные вами\n"
+"пакеты ещё не Ñозданы или были удалены из Incoming."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ, возможно, поможет вам:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Сломанные пакеты"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Ðевозможно получить некоторые архивы, вероÑтно надо запуÑтить apt-get update "
+"или попытатьÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‚ÑŒ запуÑк Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼ --fix-missing"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr ""
+"ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°, InstallPackages была вызвана Ñ Ð½ÐµÑ€Ð°Ð±Ð¾Ñ‚Ð¾ÑпоÑобными "
+"пакетами!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Пакеты необходимо удалить, но удаление запрещено."
+
+#: apt-private/private-install.cc
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr ""
+"Удалены пакеты первой необходимоÑти и был указан параметр -y без --allow-"
+"remove-essential."
+
+#: apt-private/private-install.cc
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr ""
+"Пакеты заменены на Ñтарые верÑии и был указан параметр -y без --allow-"
+"downgrades."
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+"Были изменены зафикÑированные пакеты и был указан параметр -y без --allow-"
+"change-held-packages."
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°, Ordering не завершилаÑÑŒ"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr "Странно. ÐеÑовпадение размеров, напишите на apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Ðеобходимо Ñкачать %sB/%sB архивов.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Ðеобходимо Ñкачать %sБ архивов.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr ""
+"ПоÑле данной операции, объём занÑтого диÑкового проÑтранÑтва возраÑÑ‚Ñ‘Ñ‚ на "
+"%sB.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr ""
+"ПоÑле данной операции, объём занÑтого диÑкового проÑтранÑтва уменьшитÑÑ Ð½Ð° "
+"%sB.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr ""
+"Запрошено выполнение только тривиальных операций, но Ñто не Ñ‚Ñ€Ð¸Ð²Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ "
+"операциÑ."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Да, делать, как Ñ Ñкажу!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"То, что вы хотите Ñделать, может иметь нежелательные поÑледÑтвиÑ.\n"
+"Чтобы продолжить, введите фразу: «%s»\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Ðварийное завершение."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Хотите продолжить?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Ðекоторые файлы Ñкачать не удалоÑÑŒ"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Указан режим «только Ñкачивание», и Ñкачивание завершено"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing и Ñмена ноÑÐ¸Ñ‚ÐµÐ»Ñ Ð² данный момент не поддерживаютÑÑ"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Ðевозможно иÑправить Ñитуацию Ñ Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð½Ñ‹Ð¼Ð¸ пакетами."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Ðварийное завершение уÑтановки."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"Следующий пакет иÑчез из ÑиÑтемы, так как вÑе их файлы\n"
+"теперь берутÑÑ Ð¸Ð· других пакетов:"
+msgstr[1] ""
+"Следующие пакеты иÑчез из ÑиÑтемы, так как вÑе их файлы\n"
+"теперь берутÑÑ Ð¸Ð· других пакетов:"
+msgstr[2] ""
+"Следующие пакеты иÑчез из ÑиÑтемы, так как вÑе их файлы\n"
+"теперь берутÑÑ Ð¸Ð· других пакетов:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Замечание: Ñто Ñделано автоматичеÑки и Ñпециально программой dpkg."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "Ðе предполагалоÑÑŒ удалÑÑ‚ÑŒ stuff, невозможно запуÑтить AutoRemover"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Хм, кажетÑÑ, что AutoRemover был как-то удалён, чего не должно\n"
+"было ÑлучитьÑÑ. ПожалуйÑта, отправьте Ñообщение об ошибке в пакете apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°, AutoRemover вÑÑ‘ поломал"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "Следующий пакет уÑтанавливалÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки и больше не требуетÑÑ:"
+msgstr[1] ""
+"Следующие пакеты уÑтанавливалиÑÑŒ автоматичеÑки и больше не требуютÑÑ:"
+msgstr[2] ""
+"Следующие пакеты уÑтанавливалиÑÑŒ автоматичеÑки и больше не требуютÑÑ:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "%lu пакет был уÑтановлен автоматичеÑки и больше не требуетÑÑ.\n"
+msgstr[1] "%lu пакета было уÑтановлено автоматичеÑки и больше не требуетÑÑ.\n"
+msgstr[2] "%lu пакетов было уÑтановлены автоматичеÑки и больше не требуютÑÑ.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Ð”Ð»Ñ ÐµÐ³Ð¾ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¸Ñпользуйте «%s»."
+msgstr[1] "Ð”Ð»Ñ Ð¸Ñ… ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¸Ñпользуйте «%s»."
+msgstr[2] "Ð”Ð»Ñ Ð¸Ñ… ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¸Ñпользуйте «%s»."
+
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "Будут уÑтановлены Ñледующие дополнительные пакеты:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Предлагаемые пакеты:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Рекомендуемые пакеты:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "ПропуÑкаетÑÑ %s — пакет уже уÑтановлен и нет команды upgrade.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"ПропуÑкаетÑÑ %s — пакет не уÑтановлен, а запрошено только обновление.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "ПереуÑтановка %s невозможна, он не ÑкачиваетÑÑ.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "Уже уÑтановлен пакет %s Ñамой новой верÑии (%s).\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s уÑтановлен вручную.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Выбрана верÑÐ¸Ñ Â«%s» (%s) Ð´Ð»Ñ Â«%s»\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Выбрана верÑÐ¸Ñ Â«%s» (%s) Ð´Ð»Ñ Â«%s» из-за «%s»\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr "Вывод ÑпиÑка"
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] "ЕÑÑ‚ÑŒ %i Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð²ÐµÑ€ÑиÑ. ИÑпользуйте «-a» Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра"
+msgstr[1] "ЕÑÑ‚ÑŒ %i дополнительные верÑии. ИÑпользуйте «-a» Ð´Ð»Ñ Ð¸Ñ… проÑмотра"
+msgstr[2] "ЕÑÑ‚ÑŒ %i дополнительных верÑий. ИÑпользуйте «-a» Ð´Ð»Ñ Ð¸Ñ… проÑмотра"
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"ЗÐМЕЧÐÐИЕ: Производить только Ð¸Ð¼Ð¸Ñ‚Ð°Ñ†Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹!\n"
+" Ð”Ð»Ñ Ñ€ÐµÐ°Ð»ÑŒÐ½Ð¾Ð¹ работы %s требуютÑÑ Ð¿Ñ€Ð°Ð²Ð° ÑуперпользователÑ.\n"
+" Учтите, что блокировка не иÑпользуетÑÑ,\n"
+" поÑтому нет полного ÑоответÑÑ‚Ð²Ð¸Ñ Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ реальной Ñитуацией!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr "неизвеÑтно"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr "[уÑтановлен, может быть обновлён до: %s]"
+
+#: apt-private/private-output.cc
+msgid "[installed,local]"
+msgstr "[уÑтановлен, локальный]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr "[уÑтановлен, удалÑетÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки]"
+
+#: apt-private/private-output.cc
+msgid "[installed,automatic]"
+msgstr "[уÑтановлен, автоматичеÑки]"
+
+#: apt-private/private-output.cc
+msgid "[installed]"
+msgstr "[уÑтановлен]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr "[может быть обновлён Ñ: %s]"
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr "[оÑталиÑÑŒ файлы наÑтроек]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "но %s уже уÑтановлен"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "но %s будет уÑтановлен"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "но он не может быть уÑтановлен"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "но Ñто виртуальный пакет"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "но он не будет уÑтановлен"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "но он не уÑтановлен"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " или"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Пакеты, имеющие неудовлетворённые завиÑимоÑти:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "ÐОВЫЕ пакеты, которые будут уÑтановлены:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Пакеты, которые будут УДÐЛЕÐЫ:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Пакеты, которые будут оÑтавлены в неизменном виде:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Пакеты, которые будут обновлены:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Пакеты, будут заменены на более СТÐРЫЕ верÑии:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr ""
+"Пакеты, которые должны были бы оÑтатьÑÑ Ð±ÐµÐ· изменений, но будут заменены:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (вÑледÑтвие %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"Ð’ÐИМÐÐИЕ: Эти ÑущеÑтвенно важные пакеты будут удалены.\n"
+"ÐЕ ДЕЛÐЙТЕ Ñтого, еÑли вы ÐЕ предÑтавлÑете Ñебе вÑе возможные поÑледÑтвиÑ!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "обновлено %lu, уÑтановлено %lu новых пакетов, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "переуÑтановлено %lu переуÑтановлено, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu пакетов заменены на Ñтарые верÑии, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð¼ÐµÑ‡ÐµÐ½Ð¾ %lu пакетов, и %lu пакетов не обновлено.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "не уÑтановлено до конца или удалено %lu пакетов.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[Д/н]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[д/Ð]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "Д"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "Ð"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "Ð’Ñ‹ должны задать не менее одно шаблона поиÑка"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr "ПолнотекÑтовый поиÑк"
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "СпиÑок пакетов %s раÑÑинхронизирован."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] "ЕÑÑ‚ÑŒ %i Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ. ИÑпользуйте «-a» Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра"
+msgstr[1] "ЕÑÑ‚ÑŒ %i дополнительные запиÑи. ИÑпользуйте «-a» Ð´Ð»Ñ Ð¸Ñ… проÑмотра"
+msgstr[2] "ЕÑÑ‚ÑŒ %i дополнительных запиÑей. ИÑпользуйте «-a» Ð´Ð»Ñ Ð¸Ñ… проÑмотра"
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr "не реальный (виртуальный) пакет"
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "СпиÑки пакетов:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "КÑш раÑÑинхронизирован, невозможно обнаружить ÑÑылку на ÑпиÑок пакетов"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "ЗафикÑированные пакеты:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr "%s -> %s Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð¾Ð¼ %d\n"
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " УÑтановлен: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Кандидат: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(отÑутÑтвует)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Таблица верÑий:"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Ðе удалоÑÑŒ найти пакет Ð´Ð»Ñ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ «%s»"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Ðе удалоÑÑŒ найти пакет «%s» верÑии «%s»"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Ðе удалоÑÑŒ найти пакет «%s» в выпуÑке «%s»"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "ИÑпользуетÑÑ Â«%s» в качеÑтве иÑходного пакета вмеÑто «%s»\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "Ðе удалоÑÑŒ найти верÑию «%s» пакета «%s»"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr ""
+"Укажите как минимум один пакет, иÑходный код которого необходимо получить"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Ðевозможно найти пакет Ñ Ð¸Ñходным кодом Ð´Ð»Ñ %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"Ð’ÐИМÐÐИЕ: упаковка «%s» поддерживаетÑÑ Ð² ÑиÑтеме ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð²ÐµÑ€Ñий «%s»:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"ИÑпользуйте:\n"
+"%s\n"
+"Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñледних (возможно не выпущенных) обновлений пакета.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "ПропуÑкаем уже Ñкачанный файл «%s»\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Ðеобходимо получить %sб/%sб архивов иÑходного кода.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Ðеобходимо получить %sб архивов иÑходного кода.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Получение иÑходного кода %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Ðекоторые архивы не удалоÑÑŒ получить."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "ПропуÑкаетÑÑ Ñ€Ð°Ñпаковка уже раÑпакованного иÑходного кода в %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Команда раÑпаковки «%s» завершилаÑÑŒ неудачно.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Проверьте, уÑтановлен ли пакет «dpkg-dev».\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Команда Ñборки «%s» завершилаÑÑŒ неудачно.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Ðевозможно получить информацию о завиÑимоÑÑ‚ÑÑ… Ð´Ð»Ñ Ñборки %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s не имеет завиÑимоÑтей Ð´Ð»Ñ Ñборки.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Ð”Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ завиÑимоÑтей Ð´Ð»Ñ Ñборки необходимо указать как минимум один "
+"пакет"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"У %s отÑутÑтвует Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± архитектуре. Ð”Ð»Ñ ÐµÑ‘ наÑтройки Ñмотрите apt."
+"conf(5) APT::Architectures"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr "Заметим, иÑпользуетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ «%s» Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð·Ð°Ð²Ð¸ÑимоÑтей Ñборки\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Заметим, иÑпользуетÑÑ Ñ„Ð°Ð¹Ð» «%s» Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð·Ð°Ð²Ð¸ÑимоÑтей Ñборки\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Обработка завиÑимоÑтей Ð´Ð»Ñ Ñборки завершилаÑÑŒ неудачно"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Ðе удалоÑÑŒ разобрать «%s». Повторить редактирование? "
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr "Файл «%s» изменён, запуÑтите «apt-get update»."
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Пакет %s верÑии %s имеет неудовлетворённую завиÑимоÑÑ‚ÑŒ:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Команде update не нужны аргументы"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+"Может быть обновлён %i пакет. ЗапуÑтите «apt list --upgradable» Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°.\n"
+msgstr[1] ""
+"Может быть обновлено %i пакета. ЗапуÑтите «apt list --upgradable» Ð´Ð»Ñ Ð¸Ñ… "
+"показа.\n"
+msgstr[2] ""
+"Может быть обновлено %i пакетов. ЗапуÑтите «apt list --upgradable» Ð´Ð»Ñ Ð¸Ñ… "
+"показа.\n"
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr "Ð’Ñе пакеты имеют поÑледние верÑии."
+
+#: cmdline/apt-cache.cc
+msgid "apt-cache stats does not take any arguments"
+msgstr "Команде apt-cache stats не нужны аргументы"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Ð’Ñего имён пакетов: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Ð’Ñего Ñтруктур пакетов: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Обычных пакетов: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " ПолноÑтью виртуальных пакетов: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Одиночных виртуальных пакетов: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Смешанных виртуальных пакетов: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " ОтÑутÑтвует: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Ð’Ñего уникальных верÑий: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Ð’Ñего уникальных опиÑаний: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Ð’Ñего завиÑимоÑтей: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Ð’Ñего отношений ВерÑиÑ/Файл: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Ð’Ñего отношений ОпиÑание/Файл: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Ð’Ñего отношений Provides: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Ð’Ñего развёрнутых Ñтрок: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "ПуÑтого меÑта в кÑше: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Полное учтённое проÑтранÑтво: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr "Эта команда уÑтарела. ИÑпользуйте вмеÑто неё «apt-mark showauto»."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+"ИÑпользование: apt-cache [параметры] команда\n"
+" apt-cache [параметры] show пакет1 [пакет2 …]\n"
+"\n"
+"apt-cache ищет и выдаёт доÑтупную информацию об уÑтановленных\n"
+"и неуÑтановленных пакетах. Она работает только Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ локального\n"
+"кÑша, Ñозданного командой «update» программы apt-get. Ð’ ÑледÑтвие\n"
+"Ñтого Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶Ð°ÐµÐ¼Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ уÑтаревшей, еÑли обновление\n"
+"долго не выполнÑлоÑÑŒ, но зато apt-cache работает незавиÑимо от\n"
+"доÑтупноÑти наÑтроенных иÑточников (например, без Ñети).\n"
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "показать запиÑи об иÑточниках"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "найти пакеты, Ð¸Ð¼Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… удовлетворÑет регулÑрному выражению"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "показать необработанную информацию о завиÑимоÑÑ‚ÑÑ… пакета"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "показать информацию об обратных завиÑимоÑÑ‚ÑÑ… пакета"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "показать информацию о пакете в удобочитаемой форме"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "показать имена вÑех пакетов в ÑиÑтеме"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "показать текущую политику выбора пакетов"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Задайте Ð¸Ð¼Ñ Ð´Ð»Ñ Ñтого диÑка, например «Debian 5.0.3 Disk 1»"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Ð’Ñтавьте диÑк в уÑтройÑтво и нажмите [Enter]"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Ðе удалоÑÑŒ примонтировать «%s» к «%s»"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+"Ðе удалоÑÑŒ автоматичеÑки обнаружить CD-ROM и в точке Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ "
+"умолчанию\n"
+"также ничего нет. Ð’Ñ‹ можете иÑпользовать параметр --cdrom, чтобы указать "
+"точку\n"
+"Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ CD-ROM. Подробней о точке Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ автоматичеÑком\n"
+"обнаружении CD-ROM Ñмотрите в «man apt-cdrom»."
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Повторите Ñтот процеÑÑ Ð´Ð»Ñ Ð²Ñех имеющихÑÑ CD."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+"ИÑпользование: apt-cdrom [параметры] команда\n"
+"\n"
+"apt-cdrom иÑпользуетÑÑ Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ CDROM, накопителей USB и других\n"
+"Ñменных ноÑителей в качеÑтве иÑточников пакетов APT. Точка Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸\n"
+"Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± уÑтройÑтве берётÑÑ Ð¸Ð· apt.conf(5), udev(7) и fstab(5).\n"
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Ðепарные аргументы"
+
+#: cmdline/apt-config.cc
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"ИÑпользование: apt-config [параметры] команда\n"
+"\n"
+"apt-config — Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ðº параметрам наÑтройки, иÑпользуемым\n"
+"вÑеми инÑтрументами APT, в оÑновном, предназначен Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸ и\n"
+"иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² ÑценариÑÑ… оболочки.\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr "получить Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð½Ð°Ñтройки через вычиÑÐ»ÐµÐ½Ð¸Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñ‡ÐºÐ¸"
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr "показать дейÑтвующее значение наÑтройки"
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"ИÑпользование: apt-extracttemplates файл1 [файл2 …]\n"
+"\n"
+"apt-extracttemplates извлекает из пакетов Debian файлы config и template.\n"
+"Ð’ оÑновном, она иÑпользуетÑÑ debconf(1) Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ\n"
+"вопроÑов наÑтройки перед уÑтановкой пакетов.\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Ðевозможно определить верÑию debconf. Он уÑтановлен?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Ðе удалоÑÑŒ найти пакет %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s выбран Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкой уÑтановки.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Эта команда уÑтарела. ИÑпользуйте вмеÑто неё «apt-mark auto» и «apt-mark "
+"manual»."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°, решатель проблем вÑÑ‘ поломал"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Поддерживаемые модули:"
+
+#: cmdline/apt-get.cc
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"ИÑпользование: apt-get [параметры] команда\n"
+" apt-get [параметры] install|remove пакет1 [пакет2…]\n"
+" apt-get [параметры] source пакет1 [пакет2…]\n"
+"\n"
+"apt-get — Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ Ñтроки Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð°ÐºÐµÑ‚Ð¾Ð²,\n"
+"информации из доверенных иÑточников, а также уÑтановки,\n"
+"Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°ÐºÐµÑ‚Ð¾Ð² вмеÑте Ñ Ð¸Ñ… завиÑимоÑÑ‚Ñми.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "получить новые ÑпиÑки пакетов"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "выполнить обновление"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr ""
+"уÑтановить новые пакеты (на меÑте пакета указываетÑÑ Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð° (libc6, а не "
+"Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "удалить пакеты"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "удалить пакеты вмеÑте Ñ Ð¸Ñ… файлами наÑтройки"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "автоматичеÑки удалить вÑе неиÑпользуемые пакеты"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "обновить вÑÑŽ ÑиÑтему, подробнее в apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "руководÑтвоватьÑÑ Ð²Ñ‹Ð±Ð¾Ñ€Ð¾Ð¼, Ñделанным в dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "наÑтроить вÑÑ‘ необходимое Ð´Ð»Ñ Ñборки пакета из иÑходного кода"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "удалить Ñкачанные файлы архивов"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "удалить Ñтарые Ñкачанные файлы архивов"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "проверить наличие нарушенных завиÑимоÑтей"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Ñкачать архивы Ñ Ð¸Ñходным кодом"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "Ñкачать двоичный пакет в текущий каталог"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "Ñкачать и показать файл изменений заданного пакета"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr "Ð’ качеÑтве аргумента требуетÑÑ URL"
+
+#: cmdline/apt-helper.cc
+msgid "Must specify at least one pair url/filename"
+msgstr "Укажите, как минимум, одну пару url/Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr "Ошибка при Ñкачивании"
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr "Ошибка GetSrvRec Ð´Ð»Ñ %s"
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+"ИÑпользование: apt-helper [параметры] команда\n"
+" apt-helper [параметры] cat-файл файл …\n"
+" apt-helper [параметры] download-file uri target-path\n"
+"\n"
+"apt-helper — набор различных команд Ð´Ð»Ñ Ñценариев оболочки,\n"
+"которые иÑпользуютÑÑ Ð´Ð»Ñ Ð¾Ð±Ð¼ÐµÐ½Ð° наÑтройками между APT и ÑиÑтемой.\n"
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr "Ñкачать файл по заданному uri в target-path"
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr "найти запиÑÑŒ типа SRV (например, _http._tcp.ftp.debian.org)"
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr "Ñклеить файлы, Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑким разжатием"
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr "определÑÑ‚ÑŒ прокÑи Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ apt.conf"
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"ИÑпользование: apt-internal-solver\n"
+"\n"
+"apt-internal-solver — Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ðº внутреннему решателю, предназначен\n"
+"Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸, подобен интерфейÑу внешнего Ñ€ÐµÑˆÐ°Ñ‚ÐµÐ»Ñ ÑемейÑтва APT.\n"
+
+#: cmdline/apt-internal-solver.cc
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"ИÑпользование: apt-internal-solver\n"
+"\n"
+"apt-internal-solver — Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ðº внутреннему решателю, предназначен\n"
+"Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸, подобен интерфейÑу внешнего Ñ€ÐµÑˆÐ°Ñ‚ÐµÐ»Ñ ÑемейÑтва APT.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "%s не может быть помечен, так он не уÑтановлен.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s уже помечен как уÑтановленный вручную.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s уже помечен как уÑтановленный автоматичеÑки.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s уже помечен как зафикÑированный.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s уже помечен как не зафикÑированный.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+"Выполнение dpkg завершилоÑÑŒ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹. У Ð²Ð°Ñ ÐµÑÑ‚ÑŒ права ÑуперпользователÑ?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "%s помечен как зафикÑированный.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Отмена фикÑации Ð´Ð»Ñ %s.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr "Выбран %s Ð´Ð»Ñ Ð²Ñ‹Ñ‡Ð¸Ñтки.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr "Выбран %s Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr "Выбран %s Ð´Ð»Ñ ÑƒÑтановки.\n"
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"ИÑпользование: apt-mark [параметры] {auto|manual} пакет1 [пакет2 …]\n"
+"\n"
+"apt-mark — проÑÑ‚Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñом командной Ñтроки\n"
+"Ð´Ð»Ñ Ð¿Ð¾Ð¼ÐµÑ‚ÐºÐ¸ пакетов, что они уÑтановлены вручную или автоматичеÑки.\n"
+"Также может иÑпользоватьÑÑ Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑоÑтоÑÐ½Ð¸Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° пакетов dpkg(1) и\n"
+"показывать ÑпиÑки пакетов Ñ Ð¸Ð»Ð¸ без определённой метки.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "пометить указанные пакеты, как уÑтановленные автоматичеÑки"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "пометить указанные пакеты, как уÑтановленные вручную"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr "пометить пакет как зафикÑированный"
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr "ÑнÑÑ‚ÑŒ метку пакета, что он зафикÑирован"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr "вывеÑти ÑпиÑок автоматичеÑки уÑтановленных пакетов"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr "вывеÑти ÑпиÑок пакетов уÑтановленных вручную"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr "вывеÑти ÑпиÑок зафикÑированных пакетов"
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "ЗапиÑÑŒ о неизвеÑтном пакете!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+"ИÑпользование: apt-sortpkgs [параметры] файл1 [файл2 …]\n"
+"\n"
+"apt-sortpkgs — проÑтой инÑтрумент Ð´Ð»Ñ Ñортировки информационных файлов\n"
+"пакетов. По умолчанию, он Ñортирует информацию о двоичных пакетах,\n"
+"но можно указать параметр -s, и будет выполнÑÑ‚ÑŒÑÑ Ñортировка пакетов\n"
+"Ñ Ð¸Ñходным кодом.\n"
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+"ИÑпользование: apt [параметры] команда\n"
+"\n"
+"apt — менеджер пакетов Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñом командной Ñтроки, предоÑтавлÑет "
+"команды\n"
+"Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка и управлениÑ, а также запроÑов информации о пакетах.\n"
+"Он выполнÑет те же задачи, что и Ñпециализированные инÑтрументы APT,\n"
+"например apt-get и apt-cache, но Ñодержит параметры, которые больше\n"
+"подходÑÑ‚ Ð´Ð»Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾Ð³Ð¾ иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ умолчанию.\n"
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr "показать ÑпиÑок пакетов из указанных имён пакетов"
+
+#: cmdline/apt.cc
+msgid "search in package descriptions"
+msgstr "иÑкать в опиÑаниÑÑ… пакетов"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr "показать дополнительные данные о пакете"
+
+#. package stuff
+#: cmdline/apt.cc
+msgid "install packages"
+msgstr "уÑтановить пакеты"
+
+#: cmdline/apt.cc
+msgid "remove packages"
+msgstr "удалить пакеты"
+
+#. system wide stuff
+#: cmdline/apt.cc
+msgid "update list of available packages"
+msgstr "обновить ÑпиÑок доÑтупных пакетов"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr "обновить ÑиÑтему, уÑтанавливаÑ/обновлÑÑ Ð¿Ð°ÐºÐµÑ‚Ñ‹"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr "обновить ÑиÑтему, удалÑÑ/уÑтанавливаÑ/обновлÑÑ Ð¿Ð°ÐºÐµÑ‚Ñ‹"
+
+#. misc
+#: cmdline/apt.cc
+msgid "edit the source information file"
+msgstr "редактировать файл Ñ Ð¸Ñточниками пакетов"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Ðеправильное значение по умолчанию!"
+
+#: dselect/install dselect/update
+msgid "Press [Enter] to continue."
+msgstr "Ð”Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð½Ð°Ð¶Ð¼Ð¸Ñ‚Ðµ [Enter]."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Удалить вÑе ранее Ñкачанные .deb файлы?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "Во Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ñпаковки возникли ошибки. Пакеты, которые были уÑтановлены,"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "будут наÑтроены. Это может привеÑти к повторению ошибок"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"или возникновению новых из-за неудовлетворённых завиÑимоÑтей. Это нормально, "
+"важны"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"только ошибки, указанные в Ñтом Ñообщении. ИÑправьте их и выполните "
+"уÑтановку ещё раз"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "СлиÑние доÑтупной информации"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "СпиÑок раÑширений, допуÑтимых Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð¾Ð², Ñлишком длинен"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Ошибка обработки каталога %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "СпиÑок раÑширений иÑточников Ñлишком длинен"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr ""
+"Ошибка запиÑи заголовка в полный перечень Ñодержимого пакетов (Contents)"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "ошибка обработки полного Ð¿ÐµÑ€ÐµÑ‡Ð½Ñ Ñодержимого пакетов (Contents) %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"ИÑпользование: apt-ftparchive [параметры] команда\n"
+"Команды: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive генерирует индекÑные файлы архивов Debian. Он поддерживает\n"
+"множеÑтво Ñтилей генерации: от полноÑтью автоматичеÑкого до функциональной "
+"замены\n"
+"программ dpkg-scanpackages и dpkg-scansources\n"
+"\n"
+"apt-ftparchive генерирует файлы Package (ÑпиÑки пакетов) Ð´Ð»Ñ Ð´ÐµÑ€ÐµÐ²Ð°\n"
+"каталогов, Ñодержащих файлы .deb. Файл Package включает в ÑÐµÐ±Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñющие\n"
+"Ð¿Ð¾Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ пакета, а также хеш MD5 и размер файла. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñющих\n"
+"полей «приоритет» (Priority) и «ÑекциÑ» (Section) могут быть изменены Ñ\n"
+"помощью файла override.\n"
+"\n"
+"Кроме того, apt-ftparchive может генерировать файлы Sources из дерева\n"
+"каталогов, Ñодержащих файлы .dsc. Ð”Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° override в Ñтом \n"
+"режиме можно иÑпользовать параметр --source-override.\n"
+"\n"
+"Команды «packages» и «sources» надо выполнÑÑ‚ÑŒ, находÑÑÑŒ в корневом каталоге\n"
+"дерева, которое вы хотите обработать. BinaryPath должен указывать на меÑто,\n"
+"Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ начинаетÑÑ Ñ€ÐµÐºÑƒÑ€Ñивный обход, а файл переназначений (override)\n"
+"должен Ñодержать запиÑи о переназначениÑÑ… управлÑющих полей. ЕÑли был "
+"указан\n"
+"Pathprefix, то его значение добавлÑетÑÑ Ðº управлÑющим полÑм, Ñодержащим\n"
+"имена файлов. Пример иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð° Debian:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Параметры:\n"
+" -h Этот текÑÑ‚\n"
+" --md5 Управление генерацией MD5-хешей\n"
+" -s=? Указать файл переназначений (override) Ð´Ð»Ñ Ð¸Ñточников\n"
+" -q Ðе выводить ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² процеÑÑе работы\n"
+" -d=? Указать кÑширующую базу данных (не обÑзательно)\n"
+" --no-delink Включить режим отладки процеÑÑа ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²\n"
+" --contents Управление генерацией полного Ð¿ÐµÑ€ÐµÑ‡Ð½Ñ Ñодержимого пакетов\n"
+" (файла Contents)\n"
+" -c=? ИÑпользовать указанный файл наÑтройки\n"
+" -o=? Задать значение произвольному параметру наÑтройки"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Совпадений не обнаружено"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Ð’ группе пакетов «%s» отÑутÑтвуют некоторые файлы"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "БД была повреждена, файл переименован в %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "DB уÑтарела, попытка обновить %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Ðекорректный формат базы данных (DB). ЕÑли вы обновлÑли верÑию apt, удалите "
+"и Ñоздайте базу данных заново."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Ðе удалоÑÑŒ открыть DB файл %s: %s"
+
+#: ftparchive/cachedb.cc
+msgid "Failed to read .dsc"
+msgstr "Ðе удалоÑÑŒ прочеÑÑ‚ÑŒ .dsc"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Ð’ архиве нет Ð¿Ð¾Ð»Ñ control"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Ðевозможно получить курÑор"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc — не удалоÑÑŒ выделить памÑÑ‚ÑŒ"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "ÐеизвеÑтный алгоритм ÑÐ¶Ð°Ñ‚Ð¸Ñ Â«%s»"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr ""
+"Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñжатого вывода %s необходимо включить иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑжатиÑ"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Ðе удалоÑÑŒ Ñоздать IPC-канал Ð´Ð»Ñ Ð¿Ð¾Ñ€Ð¾Ð¶Ð´Ñ‘Ð½Ð½Ð¾Ð³Ð¾ процеÑÑа"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Ðе удалоÑÑŒ запуÑтить порождённый процеÑÑ"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "ПроцеÑÑ-потомок, производÑщий Ñжатие"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°, не удалоÑÑŒ Ñоздать %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Ошибка ввода/вывода в подпроцеÑÑ/файл"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ñ‡Ð¸ÑÐ»ÐµÐ½Ð¸Ñ MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Ðе удалоÑÑŒ открыть %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ о переназначении (override) %s в Ñтроке %llu (%s)"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Ðе удалоÑÑŒ прочеÑÑ‚ÑŒ файл переназначений (override) %s"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ о переназначении (override) %s в Ñтроке %llu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ о переназначении (override) %s в Ñтроке %llu #2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ о переназначении (override) %s в Ñтроке %llu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "W: Ðе удалоÑÑŒ прочитать каталог %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "W: Ðе удалоÑÑŒ прочитать атрибуты %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "W: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: Ошибки отноÑÑÑ‚ÑÑ Ðº файлу "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Ðе удалоÑÑŒ проÑледовать по ÑÑылке %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Ðе удалоÑÑŒ Ñовершить обход дерева"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Ðе удалоÑÑŒ открыть %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr "DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Ðе удалоÑÑŒ Ñоздать ÑÑылку %s на %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " Превышен лимит в %sB в DeLink.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Ð’ архиве нет Ð¿Ð¾Ð»Ñ package"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " Ðет запиÑи о переназначении (override) Ð´Ð»Ñ %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " пакет %s Ñопровождает %s, а не %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " Ðет запиÑи source override Ð´Ð»Ñ %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " Ðет запиÑи binary override Ð´Ð»Ñ %s\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Ожидание заголовков"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "Http-Ñервер поÑлал неверный заголовок"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Ðеверный заголовок"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "Http Ñервер поÑлал неверный заголовок Content-Length"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "Http-Ñервер поÑлал неверный заголовок Content-Range"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Этот HTTP-Ñервер не поддерживает Ñкачивание фрагментов файлов"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "ÐеизвеÑтный формат данных"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Ðеверный заголовок данных"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Соединение разорвано"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+"ÐвтоматичеÑкое отключение %s из-за некорректного ответа Ñервера/прокÑи (man "
+"5 apt.conf)."
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Ðевозможно прочеÑÑ‚ÑŒ базу %s Ñ CD"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"ПожалуйÑта, иÑпользуйте apt-cdrom, чтобы APT Ñмог раÑпознать данный CD. apt-"
+"get update не иÑпользуетÑÑ Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ CD"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Ошибочный CD"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Ðевозможно размонтировать CD-ROM в %s, возможно он ещё иÑпользуетÑÑ."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "ДиÑк не найден."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Файл не найден"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Соединение Ñ %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Ðе удаётÑÑ Ñоздать Ñокет Ð´Ð»Ñ %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Ðевозможно инициализировать Ñоединение Ñ %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Ðе удаётÑÑ ÑоединитьÑÑ Ñ %s:%s (%s), connection timed out"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Ðеудачно"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Ðе удаётÑÑ ÑоединитьÑÑ Ñ %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Соединение Ñ %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Ðе удалоÑÑŒ найти IP-Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Â«%s»"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Ð’Ñ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° при попытке получить IP-Ð°Ð´Ñ€ÐµÑ Â«%s»"
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° при определении «%s:%s»"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Что-то Ñтранное произошло при определении «%s:%s» (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Ðевозможно ÑоединитьÑÑ Ñ %s: %s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Ðе удалоÑÑŒ получить атрибуты"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Ðеправильный URI, локальный URI не должен начинатьÑÑ Ñ //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Вход в ÑиÑтему"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Ðевозможно определить Ð¸Ð¼Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñервера"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Ðевозможно определить локальное имÑ"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Сервер разорвал Ñоединение и Ñообщил: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "Команда USER не выполнена, Ñервер Ñообщил: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "Команда PASS не выполнена, Ñервер Ñообщил: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Proxy-Ñервер указан, однако нет ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ Ð²Ñ…Ð¾Ð´Ð° в ÑиÑтему, Acquire::ftp::"
+"ProxyLogin пуÑÑ‚."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr ""
+"Команда «%s» ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ Ð²Ñ…Ð¾Ð´Ð° в ÑиÑтему завершилаÑÑŒ неудачно, Ñервер Ñообщил: "
+"%s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "Команда TYPE не выполнена, Ñервер Ñообщил: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "ДопуÑтимое Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð´Ð»Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸Ñтекло"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Сервер прервал Ñоединение"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Ответ переполнил буфер."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "ИÑкажение протокола"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Ðе удалоÑÑŒ Ñоздать Ñокет"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr ""
+"Ðе удалоÑÑŒ приÑоединитьÑÑ Ðº Ñокету данных, Ð²Ñ€ÐµÐ¼Ñ Ð½Ð° уÑтановление ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ "
+"иÑтекло"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Ðевозможно приÑоединить паÑÑивный Ñокет"
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "Вызов getaddrinfo не Ñмог получить Ñокет"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Ðевозможно приÑоединитьÑÑ Ðº Ñокету"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Ðе удалоÑÑŒ принимать ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ð° Ñокете"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Ðе удалоÑÑŒ определить Ð¸Ð¼Ñ Ñокета"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Ðевозможно поÑлать команду PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "ÐеизвеÑтное ÑемейÑтво адреÑов %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "Команда EPRT не выполнена, Ñервер Ñообщил: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑƒÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñокета данных иÑтекло"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Ðевозможно принÑÑ‚ÑŒ Ñоединение"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Проблема при хешировании файла"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Ðевозможно получить файл, Ñервер Ñообщил: «%s»"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñокета данных иÑтекло"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Передача данных завершилаÑÑŒ неудачно, Ñервер Ñообщил: «%s»"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "ЗапроÑ"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Ðевозможно вызвать "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+"ПодпиÑанный файл некорректен, получено «%s» (возможно в Ñети требуетÑÑ "
+"аутентификациÑ?)"
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Ðайдена как минимум одна Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑŒ."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ÐŸÑ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑŒ, но не удалоÑÑŒ определить отпечаток "
+"ключа?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Ðе удалоÑÑŒ выполнить «apt-key» Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ подпиÑи (gnupg уÑтановлена?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° при выполнении apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr "При подпиÑи ключом %s иÑпользуетÑÑ Ð½ÐµÑтойкий алгоритм Ñвёртки (%s)"
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Следующие подпиÑи неверные:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Следующие подпиÑи не могут быть проверены, так как недоÑтупен открытый "
+"ключ:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Ошибка запиÑи в файл"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Ошибка чтениÑ, удалённый Ñервер прервал Ñоединение"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ Ñервера"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Ошибка запиÑи в файл"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Ошибка в select"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð´Ð»Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸Ñтекло"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Ошибка запиÑи в выходной файл"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Файл «%s» не найден на зеркале"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Ðевозможно прочитать файл на зеркале «%s»"
+
+#: methods/mirror.cc
+#, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Ðе найден Ñлемент в файл на зеркале «%s»"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Зеркало: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Ðе удалоÑÑŒ уÑтановить Ð²Ñ€ÐµÐ¼Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Соединение закрыто преждевременно"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "ПуÑтые файлы не могут быть допуÑтимыми архивами"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr ""
+#~ "Ðеудовлетворённые завиÑимоÑти. ПопытайтеÑÑŒ иÑпользовать --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Возможно, Ð´Ð»Ñ Ð¸ÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñтих ошибок вы захотите воÑпользоватьÑÑ Â«apt-"
+#~ "get -f install»:"
+
+#~ msgid "(not found)"
+#~ msgstr "(не найдено)"
+
+#~ msgid " Package pin: "
+#~ msgstr " ФикÑатор пакета: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "ÐедоÑтупен открытый ключ Ð´Ð»Ñ Ñледующих ID ключей:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "Каталог %s входит в ÑпиÑок diverted"
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "ЗавиÑимоÑÑ‚ÑŒ типа %s Ð´Ð»Ñ %s не может быть удовлетворена, так как %s не "
+#~ "разрешён Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð¾Ð² «%s»"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "ЗавиÑимоÑÑ‚ÑŒ типа %s Ð´Ð»Ñ %s не может быть удовлетворена, так как пакет %s "
+#~ "не найден"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Ðе удалоÑÑŒ удовлетворить завиÑимоÑÑ‚ÑŒ типа %s Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð° %s: УÑтановленный "
+#~ "пакет %s новее, чем надо"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "ЗавиÑимоÑÑ‚ÑŒ типа %s Ð´Ð»Ñ %s не может быть удовлетворена, так как верÑиÑ-"
+#~ "кандидат пакета %s не может удовлетворить требованиÑм по верÑии"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "ЗавиÑимоÑÑ‚ÑŒ типа %s Ð´Ð»Ñ %s не может быть удовлетворена, так как пакет %s "
+#~ "не имеет верÑии-кандидата"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Ðевозможно удовлетворить завиÑимоÑÑ‚ÑŒ типа %s Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð° %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "ЗавиÑимоÑти Ð´Ð»Ñ Ñборки %s не могут быть удовлетворены."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Ðе удалоÑÑŒ удалить %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Ðе удалоÑÑŒ удалить %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "ИÑпользование: apt-cache [параметры] команда\n"
+#~ " или: apt-cache [параметры] show пакет1 [пакет2…]\n"
+#~ "\n"
+#~ "apt-cache — низкоуровневый инÑтрумент Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка\n"
+#~ "информации в двоичных кÑш-файлах APT\n"
+
+#~ msgid "Commands:"
+#~ msgstr "Команды:"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Параметры:\n"
+#~ " -h Эта Ñправка.\n"
+#~ " -p=? КÑш пакетов.\n"
+#~ " -s=? КÑш иÑточников.\n"
+#~ " -q Ðе показывать индикатор хода выполнениÑ.\n"
+#~ " -i Показывать только важные завиÑимоÑти Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ unmet.\n"
+#~ " -c=? Читать указанный файл наÑтройки.\n"
+#~ " -o=? Задать значение произвольной наÑтройки, например, -o dir::cache=/"
+#~ "tmp\n"
+#~ "ПодробноÑти в Ñправочных Ñтраницах apt-cache(8) и apt.conf(5).\n"
+
+#~ msgid ""
+#~ "Usage: apt [options] command\n"
+#~ "\n"
+#~ "CLI for apt.\n"
+#~ msgstr ""
+#~ "ИÑпользование: apt [параметры] команда\n"
+#~ "\n"
+#~ "Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ Ñтроки Ð´Ð»Ñ apt.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "Параметры:\n"
+#~ " -h Ñта Ñправка\n"
+#~ " -q показывать ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ работе, не выводить индикатор хода работы\n"
+#~ " -qq показывать только ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках\n"
+#~ " -s не выполнÑÑ‚ÑŒ дейÑÑ‚Ð²Ð¸Ñ Ð½Ð° Ñамом деле, только Ð¸Ð¼Ð¸Ñ‚Ð°Ñ†Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹\n"
+#~ " -f читать/пиÑать данные о пометках в заданный файл\n"
+#~ " -c=? читать указанный файл наÑтройки\n"
+#~ " -o=? задать значение произвольному параметру наÑтройки,\n"
+#~ " например, -o dir::cache=/tmp\n"
+#~ "Ð’ Ñправочных Ñтраницах apt-mark(8) и apt.conf(5)\n"
+#~ "ÑодержитÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ."
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Параметры:\n"
+#~ " -h Этот текÑÑ‚.\n"
+#~ " -Ñ=? Читать указанный файл наÑтройки.\n"
+#~ " -o=? Задать значение произвольной наÑтройке, например, -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "Параметры:\n"
+#~ " -h Ñта Ñправка\n"
+#~ " -q показывать ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ работе, не выводить индикатор хода работы\n"
+#~ " -qq показывать только ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках\n"
+#~ " -s не выполнÑÑ‚ÑŒ дейÑÑ‚Ð²Ð¸Ñ Ð½Ð° Ñамом деле, только Ð¸Ð¼Ð¸Ñ‚Ð°Ñ†Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹\n"
+#~ " -f читать/пиÑать данные о пометках в заданный файл\n"
+#~ " -c=? читать указанный файл наÑтройки\n"
+#~ " -o=? задать значение произвольному параметру наÑтройки,\n"
+#~ " например, -o dir::cache=/tmp\n"
+#~ "Ð’ Ñправочных Ñтраницах apt-mark(8) и apt.conf(5)\n"
+#~ "ÑодержитÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ."
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "ИÑпользование: apt-sortpkgs [параметры] файл1 [файл2…]\n"
+#~ "\n"
+#~ "apt-sortpkgs — проÑтой инÑтрумент Ð´Ð»Ñ Ñортировки ÑпиÑков пакетов. "
+#~ "Параметр -s\n"
+#~ "иÑпользуетÑÑ Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ‚Ð¸Ð¿Ð° ÑпиÑка.\n"
+#~ "\n"
+#~ "Параметры:\n"
+#~ " -h Ñтот текÑÑ‚\n"
+#~ " -s Ñортировать ÑпиÑок файлов пакетов иÑходного кода\n"
+#~ " -c=? читать указанный файл наÑтройки\n"
+#~ " -o=? Задать значение произвольной наÑтройке, например, -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Порождённый процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»ÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡Ð½Ð¾"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Укажите, как минимум, одну пару url/Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Ðе удалоÑÑŒ Ñоздать каналы"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Ðе удалоÑÑŒ выполнить gzip "
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Ð’Ñего информации о завиÑимоÑÑ‚ÑÑ…: "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s Ð´Ð»Ñ %s Ñкомпилирован %s %s\n"
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "ÐедоÑтаточно меÑта в %s"
+
+#~ msgid "Done"
+#~ msgstr "Готово"
+
+#~ msgid "Hit "
+#~ msgstr "Ð’ кÑше "
+
+#~ msgid "Get:"
+#~ msgstr "Получено:"
+
+#~ msgid "Ign "
+#~ msgstr "Игн "
+
+#~ msgid "Err "
+#~ msgstr "Ош "
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Ðевозможно найти хеш-Ñумму «%s» в файле Release"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "Во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ файла завиÑимоÑтей не найден пакет %s %s"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Ðе удалоÑÑŒ получить атрибуты ÑпиÑка пакетов иÑходного кода %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Сбор информации о Provides"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Блок поÑтавщика %s не Ñодержит отпечатка (fingerprint)"
+
+#~ msgid "Unable to parse package file %s (2)"
+#~ msgstr "Ðевозможно разобрать Ñодержимое пакета %s (2)"
+
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "ИÑÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ Ñтрофа %u в ÑпиÑке иÑточников %s (анализ URI)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "ИÑÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ Ñтрока %lu в ÑпиÑке иÑточников %s ([параметр] неразбираем)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr ""
+#~ "ИÑÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ Ñтрока %lu в ÑпиÑке иÑточников %s ([параметр] Ñлишком короткий)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "ИÑÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ Ñтрока %lu в ÑпиÑке иÑточников %s (([%s] не назначаем)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "ИÑÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ Ñтрока %lu в ÑпиÑке иÑточников %s ([%s] не имеет ключа)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "ИÑÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ Ñтрока %lu в ÑпиÑке иÑточников %s (([%s] ключ %s не имеет "
+#~ "значениÑ)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "ИÑÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ Ñтрока %lu в ÑпиÑке иÑточников %s (проблема в URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr ""
+#~ "ИÑÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ Ñтрока %lu в ÑпиÑке иÑточников %s (проблема в имени "
+#~ "диÑтрибутива)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "ИÑÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ Ñтрока %lu в ÑпиÑке иÑточников %s (анализ URI)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "ИÑÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ Ñтрока %lu в ÑпиÑке иÑточников %s (absolute dist)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "ИÑÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ Ñтрока %lu в ÑпиÑке иÑточников %s (dist parse)"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "СвÑзка ключей в %s не уÑтановлена."
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Ðе удалоÑÑŒ Ñоздать FILE*"
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°, AllUpgrade вÑÑ‘ поломал"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s не ÑвлÑетÑÑ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ DEB-пакетом."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Ð’ качеÑтве точки Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ CD-ROM иÑпользуетÑÑ %s\n"
+#~ "МонтируетÑÑ CD-ROM\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Ðе удалоÑÑŒ наложить заплату %s Ñ Ð¸Ñпользованием mmap и файловой операции "
+#~ "— вероÑтно, повреждена заплата."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Ðе удалоÑÑŒ наложить заплату %s Ñ Ð¸Ñпользованием mmap (но не из-за mmap) — "
+#~ "вероÑтно, повреждена заплата."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr "ИгнорируетÑÑ Ð½ÐµÐ´Ð¾Ñтупный выпуÑк «%s» пакета «%s»"
+
+#~ msgid "Downloading %s %s"
+#~ msgstr "ВыполнÑетÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° %s %s"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Это неправильный DEB-архив — отÑутÑтвует ÑоÑÑ‚Ð°Ð²Ð½Ð°Ñ Ñ‡Ð°ÑÑ‚ÑŒ «%s», «%s» или "
+#~ "«%s»"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5Sum не Ñовпадает"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Ðе удалоÑÑŒ обнаружить файл пакета %s. Это может означать, что вам "
+#~ "придётÑÑ Ð²Ñ€ÑƒÑ‡Ð½ÑƒÑŽ иÑправить Ñтот пакет."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Ðе удалоÑÑŒ запиÑать в журнал, неудачное выполнение openpty() (/dev/pts не "
+#~ "Ñмонтирован?)\n"
+
+#~ msgid "File %s doesn't start with a clearsigned message"
+#~ msgstr "Файл %s не начинаетÑÑ Ñ Ð¿Ñ€Ð¾Ð·Ñ€Ð°Ñ‡Ð½Ð¾ подпиÑанного ÑообщениÑ"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "ПропуÑкаетÑÑ Ð½ÐµÑущеÑтвующий файл %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Ðе удалоÑÑŒ удалить %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Ðе удалоÑÑŒ Ñоздать %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Ðе удалоÑÑŒ получить атрибуты %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr "Каталоги info и temp должны находитьÑÑ Ð½Ð° одной файловой ÑиÑтеме"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr ""
+#~ "Ðе удалоÑÑŒ Ñменить текущий каталог на админиÑтративный каталог %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° при получении имени пакета"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Чтение ÑпиÑков файлов в пакете"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Ðе удалоÑÑŒ открыть ÑпиÑок файлов «%sinfo/%s». ЕÑли вы не Ñможете "
+#~ "воÑÑтановить Ñтот файл, то обнулите его и немедленно переуÑтановите ту же "
+#~ "верÑию пакета!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ ÑпиÑка файлов %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° при получении node"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Ðе удалоÑÑŒ открыть файл diversions %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Файл diversions повреждён"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñтрока в файле diversions: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° при добавлении diversion"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Ð’ первую очередь должен быть инициализирован кÑш пакетов"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Ðе удалоÑÑŒ найти заголовок Package:, Ñмещение %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑÐµÐºÑ†Ð¸Ñ ConfFile в status-файле. Смещение %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð¾Ð¹ Ñуммы. Смещение %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Ðе удалоÑÑŒ перейти в каталог %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Ðе удалоÑÑŒ найти правильный control-файл"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Ðе удалоÑÑŒ открыть канал Ð´Ð»Ñ %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸Ð· процеÑÑа %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Получен заголовок длиннее %u Ñимволов"
+
+#~ msgid "Note: This is done automatic and on purpose by dpkg."
+#~ msgstr "Замечание: Ñто Ñделано автоматичеÑки и Ñпециально программой dpkg."
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ о переназначении (override) %s на Ñтроке %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ о переназначении (override) %s на Ñтроке %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ о переназначении (override) %s на Ñтроке %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "декомпреÑÑор"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr ""
+#~ "ошибка при чтении. ÑобиралиÑÑŒ прочеÑÑ‚ÑŒ ещё %lu байт, но ничего больше нет"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "ошибка при запиÑи, ÑобиралиÑÑŒ запиÑать ещё %lu байт, но не Ñмогли"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "Ðе удалоÑÑŒ выполнить оперативную наÑтройку уже раÑпакованного «%s». "
+#~ "Подробней, Ñмотрите в man 5 apt.conf о APT::Immediate-Configure."
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Произошла ошибка во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Произошла ошибка во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ %s (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Произошла ошибка во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ %s (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Произошла ошибка во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Произошла ошибка во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Произошла ошибка во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ %s (NewVersion%d)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Произошла ошибка во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Произошла ошибка во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ %s (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Произошла ошибка во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Произошла ошибка во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°, не удалоÑÑŒ найти ÑоÑтавную чаÑÑ‚ÑŒ"
+
+#~ msgid "Internal error, group '%s' has no installable pseudo package"
+#~ msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°, группа %s не уÑтанавливаетÑÑ Ð¿Ñевдо-пакетом"
+
+#~ msgid "Release file expired, ignoring %s (invalid since %s)"
+#~ msgstr ""
+#~ "Файл Release проÑрочен, игнорируетÑÑ %s (недоÑтоверный Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ %s)"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr ""
+#~ "E: Слишком большой ÑпиÑок параметров у Acquire::gpgv::Options. Завершение "
+#~ "работы."
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "Произошла ошибка во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ %s (NewVersion2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "ИÑÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ Ñтрока %u в ÑпиÑке иÑточников %s (vendor id)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "Ðет доÑтупа к ÑвÑзке (keyring) ключей: '%s'"
+
+#, fuzzy
+#~| msgid "Could not open file %s"
+#~ msgid "Could not patch file"
+#~ msgstr "Ðе удалоÑÑŒ открыть файл %s"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
diff --git a/po/sk.po b/po/sk.po
new file mode 100644
index 000000000..0601b9c89
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,4260 @@
+# Slovak translation of APT
+#
+# initial sk.po made from Czech translation (cs.po)
+# thanks to Miroslav Kure <kurem@debian.cz>
+#
+# Peter Mann <Peter.Mann@tuke.sk>, 2006.
+# Ivan Masár <helix84@centrum.sk>, 2008, 2009, 2010, 2011, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2012-06-28 20:49+0100\n"
+"Last-Translator: Ivan Masár <helix84@centrum.sk>\n"
+"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
+"Language: sk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Neplatný podpis archívu"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Chyba pri Äítaní záhlavia prvku archívu"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Neplatná hlaviÄka prvku archívu %s"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Neplatné záhlavie prvku archívu"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Archív je príliš krátky"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Chyba pri Äítaní hlaviÄiek archívu"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Nebolo možné nájsÅ¥ autentifikaÄný záznam pre: %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Porušený archív"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Kontrolný súÄet pre tar zlyhal, archív je poÅ¡kodený"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Neznáma TAR hlaviÄka typu %u, Älen %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Toto nie je platný DEB archív, chýba ÄasÅ¥ „%s“"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Vnútorná chyba, nedá sa nájsÅ¥ ÄasÅ¥ %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Nespracovateľný riadiaci súbor"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Zápis súboru %s zlyhal"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Zatvorenie súboru %s zlyhalo"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Cesta %s je príliš dlhá"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "%s sa rozbaľuje viackrát"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "Adresár %s je divertovaný"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Balík sa pokúša zapisovať do diverzného cieľa %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Diverzná cesta je príliš dlhá"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "%s sa nedá vyhodnotiť"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Premenovanie %s na %s zlyhalo"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "Adresár %s sa nahradí neadresárom"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Nedá sa nájsť uzol na adrese jeho hašu"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Cesta je príliš dlhá"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Prepísať zodpovedajúci balík bez udania verzie pre %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Súbor %s/%s prepisuje ten z balíka %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Nedá sa naÄítaÅ¥ %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Nedá sa vyhodnotiť %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "Pokus o uvoľnenie uzla (DropNode) na stále prepojenom uzle"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Hašovací prvok sa nedá nájsť!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Nedá sa alokovať diverzia"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Vnútorná chyba pri AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Pokus o prepísanie diverzie, %s -> %s a %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Dvojité pridanie diverzie %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Duplicitný konfiguraÄný súbor %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Adresár %s je divertovaný"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Adresár %s je divertovaný"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Adresár %s je divertovaný"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Adresár %s je divertovaný"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "Adresár %s je divertovaný"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Nie je možné vykonať readlink %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Nezhoda kontrolných haÅ¡ súÄtov"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "premenovanie zlyhalo, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Veľkosti sa nezhodujú"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "Neplatná operácia %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Chyba pri zápise"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"PoÄas overovania podpisu sa vyskytla chyba. Repozitár nie je aktualizovaný a "
+"použijú sa predošlé indexové súbory. Chyba GPG: %s: %s\n"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "Chyba GPG: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"Nepodarilo sa nájsÅ¥ oÄakávanú položku „%s“ v súbore Release (Nesprávna "
+"položka sources.list alebo chybný formát súboru)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"Súbor Release pre %s vypršal (neplatný od %s). Aktualizácie tohto zdroja "
+"softvéru sa nepoužijú."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "V konflikte s distribúciou: %s (oÄakávalo sa %s ale dostali sme %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Nedá sa nájsť súbor s balíkom %s. To by mohlo znamenať, že tento balík je "
+"potrebné opraviť manuálne (kvôli chýbajúcej architektúre)."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr "Nie je možné nájsť zdroj na stiahnutie verzie „%s“ balíka „%s“"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr "Indexové súbory balíka sú narušené. Chýba pole Filename: pre balík %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Záznam zmien %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Nedá sa nájsÅ¥ ovládaÄ spôsobu %s."
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "Skontrolujte, Äi je nainÅ¡talovaný balík „dpkg-dev“.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Spôsob %s nebol správne spustený"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "Vložte disk nazvaný „%s“ do mechaniky „%s“ a stlaÄte Enter."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Adresár zoznamov %spartial chýba."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Archívny adresár %spartial chýba."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "Adresár %s sa nedá zamknúť"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "Indexový súbor typu „%s“ nie je podporovaný"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Nedá sa prejsť do %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Sťahuje sa %li. súbor z %li (zostáva %s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Sťahuje sa %li. súbor z %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr "Je nutné preinštalovať balík %s, ale nedá sa nájsť jeho archív."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Chyba, pkgProblemResolver::Resolve vytvára poruchy, Äo môže být spôsobené "
+"pridržanými balíkmi."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "Problémy sa nedajú opraviť, niektoré balíky držíte v poškodenom stave."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "Zoznamy balíkov alebo stavový súbor sa nedajú spracovať alebo otvoriť."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Na opravu týchto problémov môžete skúsiť spustiť apt-get update"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Nedá sa naÄítaÅ¥ zoznam zdrojov."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Chyba pri preklade regulárneho výrazu - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Nebolo nájdené vydanie „%s“ pre „%s“"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Nebola nájdená verzia „%s“ pre „%s“"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Nebolo možné nájsť úlohu „%s“"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Nebol nájdený žiaden balík zodpovedajúci regulárnemu výrazu „%s“"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Nebol nájdený žiaden balík zodpovedajúci regulárnemu výrazu „%s“"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Nedá sa nájsť balík %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr "Nie je možné vybraÅ¥ verzie z balíka „%s“, pretože je Äisto virtuálny"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"Nie je možné vybraÅ¥ najnovÅ¡iu verziu z balíka „%s“, pretože je Äisto "
+"virtuálny"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+"Nie je možné vybrať kandidátsku verziu z balíka „%s“, pretože nemá kandidáta"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"Nie je možné vybrať nainštalovanú verziu z balíka „%s“, pretože nie je "
+"nainštalovaný"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"Nie je možné vybrať nainštalované ani kandidátske verzie z balíka „%s“, "
+"pretože nemá žiadnu z nich"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Riadok %u v zozname zdrojov %s je príliš dlhý."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "CD-ROM sa odpája...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Použije sa prípojný bod CD-ROM %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Čaká sa na disk...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Pripája sa CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Identifikuje sa..."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Uložená menovka: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Na disku sa hľadajú indexové súbory...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Nájdených %zu indexov balíkov, %zu indexov zdrojových balíkov, %zu indexov "
+"prekladov a %zu signatúr\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Nepodarilo sa nájsť žiadne súbory balíkov, možno toto nie je disk s Debianom "
+"alebo je pre nesprávnu architektúru?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Nájdená menovka: „%s“\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Neplatný názov, skúste znova.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Názov tohto disku je: \n"
+"„%s“\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Kopírujú sa zoznamy balíkov..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Zapisuje sa nový zoznam zdrojov\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Položky zoznamu zdrojov pre tento disk sú:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Nie je možné vykonať stat %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Prípojný bod %s sa nedá vyhodnotiť"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Nedá sa vykonať stat() CD-ROM"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Parameter príkazového riadka „%c“ [z %s] je neznámy"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Nezrozumiteľný parameter %s na príkazovom riadku"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Parameter príkazového riadku %s nie je pravdivostná hodnota"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Voľba %s vyžaduje argument."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "Parameter %s: Zadanie konfiguraÄnej položky musí obsahovaÅ¥ =<hodn>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Voľba %s vyžaduje ako argument celé Äíslo (integer), nie „%s“"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Voľba „%s“ je príliš dlhá"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "Nezrozumiteľný význam %s, skúste true alebo false. "
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Neplatná operácia %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Nerozpoznaná skratka typu: „%c“"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Otvára sa konfiguraÄný súbor %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Syntaktická chyba %s:%u: Blok zaÄína bez názvu."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Syntaktická chyba %s:%u: Skomolená znaÄka"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Syntaktická chyba %s:%u: Za hodnotou nasledujú chybné údaje"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"Syntaktická chyba %s:%u: Direktívy sa dajú vykonať len na najvyššej úrovni"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Syntaktická chyba %s:%u: Príliš mnoho vnorených prepojení (include)"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Syntaktická chyba %s:%u: Zahrnuté odtiaľ"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Syntaktická chyba %s:%u: Nepodporovaná direktíva „%s“"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Syntaktická chyba %s:%u: direktíva clear vyžaduje ako argument strom volieb"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Syntaktická chyba %s:%u: Na konci súboru sú chybné údaje"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Problém pri odstraňovaní súboru %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Zamykanie pre súbor zámku %s, ktorý je iba na Äítanie, sa nepoužíva"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Súbor zámku %s sa nedá otvoriť"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Zamykanie pre súbor zámku %s pripojený cez NFS sa nepoužíva"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Zámok %s sa nedá získať"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr "Zoznam súborov nemožno vytvoriť, pretože „%s“ nie je adresár"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr "Ignoruje sa „%s“ v adresári „%s“, pretože to nie je obyÄajný súbor"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr "Ignoruje sa „%s“ v adresári „%s“, pretože nemá príponu názvu súboru"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"Ignoruje sa „%s“ v adresári „%s“, pretože má neplatnú príponu názvu súboru"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "ÄŒakalo sa na %s, ale nebolo to tam"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Podproces %s obdržal chybu segmentácie."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Podproces %s dostal signál %u."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Podproces %s vrátil chybový kód (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Podproces %s neoÄakávane skonÄil"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Chyba pri Äítaní"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Chyba pri zápise"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Problém pri zatváraní gzip súboru %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Nedá sa vytvoriť podproces IPC"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Nepodarilo sa spustiť kompresor "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Nedá sa otvoriť súbor %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Nedá sa otvoriÅ¥ popisovaÄ súboru %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "Äítanie, treba preÄítaÅ¥ eÅ¡te %llu, ale už niÄ neostáva"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "zápis, treba zapísať ešte %llu, no nedá sa to"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Problém pri zatváraní súboru %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Problém pri synchronizovaní súboru %s na %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Problém pri synchronizovaní súboru"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Nedá sa vyhodnotiť %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Do %s sa nedá zapisovať"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Nedá sa vykonať mmap prázdneho súboru"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Nedá sa urobiť mmap %llu bajtov"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Nedá sa duplikovaÅ¥ popisovaÄ súboru %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "Nedá sa zatvoriť mmap"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "Nedá sa synchronizovať mmap"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Nedá sa urobiť mmap %lu bajtov"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Nepodarilo sa skrátiť súbor"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"Nedostatok miesta pre dynamický MMap. Prosím, zväÄÅ¡ite veľkosÅ¥ APT::Cache-"
+"Start. Aktuálna hodnota: %lu. (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"Napodarilo sa zväÄÅ¡iÅ¥ veľkosÅ¥ MMap, pretože limit %lu už bol dosiahnutý."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Napodarilo sa zväÄÅ¡iÅ¥ veľkosÅ¥ MMap, pretože automatické zväÄovanie vypol "
+"používateľ."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Chyba!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Hotovo"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... Hotovo"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%li d %li h %li min %li s"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%li h %li min %li s"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%li min %li s"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%li s"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Voľba %s nenájdená"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Nedá spracovať súbor Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Žiadne sekcie v Release súbore %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Chýba položka „Hash“ v súbore Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Chýba položka „%s“ v súbore Release %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Súbor %s sa nedá spracovať (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr "Nedá sa zamknúť adresár na správu (%s), používa ho iný proces?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Nedá sa zamknúť adresár na správu (%s), ste root?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr "dpkg bol preruÅ¡ený, musíte ruÄne opraviÅ¥ problém spustením „%s“. "
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Nie je zamknuté"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "Inštaluje sa %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Nastavuje sa %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Odstraňuje sa %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "Úplne sa odstraňuje %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "Zaznamenali sme zmiznutie %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Vykonáva sa spúšťaÄ post-installation %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "Nainštalovaný balík %s"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Adresár „%s“ chýba"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "Nedá sa otvoriť súbor „%s“"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Pripravuje sa %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Rozbaľuje sa %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Pripravuje sa nastavenie %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Pripravuje sa odstránenie %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "Odstránený balík %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Pripravuje sa úplné odstránenie %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "Balík „%s“ je úplne odstránený"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "Do %s sa nedá zapisovať"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "Operácia bola preruÅ¡ená predtým, než sa stihla dokonÄiÅ¥"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr "Nezapíše sa správa apport, pretože už bol dosiahnutý limit MaxReports"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "problém so závislosťami - ponecháva sa nenakonfigurované"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Nezapíše sa správa apport, pretože chybová správa indikuje, že je to chyba v "
+"nadväznosti na predošlé zlyhanie."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Nezapíše sa správa apport, pretože chybová správa indikuje, že je disk "
+"zaplnený"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Nezapíše sa správa apport, pretože chybová správa indikuje chybu nedostatku "
+"pamäte"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Nezapíše sa správa apport, pretože chybová správa indikuje, že je disk "
+"zaplnený"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"Nezapíše sa správa apport, pretože chybová správa indikuje V/V chybu dpkg"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Vytvára sa strom závislostí"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Kandidátske verzie"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Generovanie závislostí"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "NaÄítavajú sa stavové informácie"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Nie je možné otvoriť StateFile %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Nie je možné zapísaÅ¥ doÄasný StateFile %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "Poslať scénár riešiteľovi"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "Poslať požiadavku riešiteľovi"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "Pripraviť sa na prijatie riešenia"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr "Externý riešiteľ zlyhal bez uvedenia chybovej správy"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "Spustiť externého riešiteľa"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Execute external planner"
+msgstr "Spustiť externého riešiteľa"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send request to planner"
+msgstr "Poslať požiadavku riešiteľovi"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send scenario to planner"
+msgstr "Poslať scénár riešiteľovi"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "External planner failed without a proper error message"
+msgstr "Externý riešiteľ zlyhal bez uvedenia chybovej správy"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "Zapísaných %i záznamov.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "Zapísaných %i záznamov s %i chýbajúcimi súbormi.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "Zapísaných %i záznamov s %i chybnými súbormi\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "Zapísaných %i záznamov s %i chýbajúcimi a %i chybnými súbormi\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "Nebolo možné nájsÅ¥ autentifikaÄný záznam pre: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Nezhoda kontrolných haÅ¡ súÄtov: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Systém balíkov „%s“ nie je podporovaný"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Nedá sa urÄiÅ¥ vhodný typ systému balíkov"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "Spúšťa sa dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"Nebolo možné vykonať okamžitú konfiguráciu „%s“. Pozri prosím podrobnosti v "
+"man 5 apt.conf pod APT::Immediate-Configure (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "Nedá sa nakonfigurovať „%s“."
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Tento beh inÅ¡talácie si vyžiada doÄasné odstránenie kľúÄového balíka %s "
+"kvôli sluÄke v Conflicts/Pre-Depends. ÄŒasto je to nevhodné, ale ak to chcete "
+"naozaj urobiť, aktivujte možnosť APT::Force-LoopBreak."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Vyrovnávacia pamäť balíkov je prázdna"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Súbor vyrovnávacej pamäti balíkov je poškodený"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Súbor vyrovnávacej pamäti balíkov je nezluÄiteľnej verzie"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Tento APT nepodporuje systém na správu verzií „%s“"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Súbor vyrovnávacej pamäti balíkov bol vytvorený pre inú architektúru"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Súbor vyrovnávacej pamäti balíkov je poškodený, je príliš malý"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Závisí na"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Predzávisí na"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Navrhuje"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Koliduje s"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "OdporúÄa"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Nahrádza"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Kazí"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Rozširuje"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Zneplatňuje"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "dôležitý"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "požadovaný"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "štandardný"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "extra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "voliteľný"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Vyrovnávacia pamäť má nezluÄiteľný systém na správu verzií"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Vyskytla sa chyba pri spracovávaní %s (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"Fíha, prekroÄili ste poÄet názvov balíkov, ktoré toto APT zvládne spracovaÅ¥."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Fíha, prekroÄili ste poÄet verzií, ktoré toto APT zvládne spracovaÅ¥."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Fíha, prekroÄili ste poÄet popisov, ktoré toto APT zvládne spracovaÅ¥."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr ""
+"Fíha, prekroÄili ste poÄet závislostí, ktoré toto APT zvládne spracovaÅ¥."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "NaÄítavajú sa zoznamy balíkov"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "V/V chyba pri ukladaní zdrojovej vyrovnávacej pamäti"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Indexový súbor typu „%s“ nie je podporovaný"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"„%s“ nie je platná hodnota pre APT::Default-Release, pretože také vydanie "
+"nie je dostupné v zdrojoch"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Neplatný záznam v súbore nastavení %s, chýba hlaviÄka Package"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Nezrozumiteľné pridržanie typu %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Nebola zadaná žiadna (alebo nulová) priorita na pridržanie"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Skomolený „override“ %s riadok %llu #1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Otvára sa %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Skomolený riadok %u v zozname zdrojov %s (typ)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Typ „%s“ je neznámy na riadku %u v zozname zdrojov %s"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Skomolený riadok %u v zozname zdrojov %s (typ)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Typ „%s“ je neznámy na riadku %u v zozname zdrojov %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Do sources.list musíte zadať nejaký „source“ (zdrojový) URI"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Zlyhalo stiahnutie %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Niektoré indexové súbory sa nepodarilo stiahnuť. Boli ignorované alebo sa "
+"použili staršie verzie."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "PrepoÄítava sa aktualizácia"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Už existuje:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Získava sa:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr ""
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Chyba:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "%sB sa stiahlo za %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Prebieha spracovanie]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Výmena nosiÄa: Vložte disk s názvom\n"
+" „%s“\n"
+"do mechaniky „%s“ a stlaÄte Enter\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Opravujú sa závislosti..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " zlyhalo."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Závislosti sa nedajú opraviť"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Sada na aktualizáciu sa nedá minimalizovať"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Hotovo"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "Možno to budete chcieť napraviť spustením „apt --fix-broken install“."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Nesplnené závislosti. Skúste spustiť „apt --fix-broken install“ bez balíkov "
+"(alebo navrhnite riešenie)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Poznámka: vyberá sa „%s“ pre úlohu „%s“\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Poznámka: vyberá sa „%s“ pre regulárny výraz „%s“\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Poznámka: vyberá sa „%s“ pre regulárny výraz „%s“\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Balík %s je virtuálny balík poskytovaný balíkmi:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [Nainštalovaný]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [Nie je kandidátska verzia]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Mali by ste explicitne vybrať jeden na inštaláciu."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Balík %s nie je dostupný, ale odkazuje naň iný balík. Možno to znamená,\n"
+"že balík chýba, bol zrušený alebo je dostupný iba z iného zdroja\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Avšak nahrádzajú ho nasledovné balíky:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Balík „%s“ nemá kandidáta na inštaláciu"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Virtuálne balíky ako „%s“ nemožno odstrániť\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"Balík „%s“ nie je nainštalovaný, nedá sa teda odstrániť. Mali ste na mysli "
+"„%s“?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Balík „%s“ nie je nainštalovaný, nedá sa teda odstrániť\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Poznámka: „%s“ sa vyberá namiesto „%s“\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Tento APT má schopnosti posvätnej kravy."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Neboli nájdené žiadne balíky"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "UPOZORNENIE: Pri nasledovných balíkoch sa nedá overiť vierohodnosť!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Upozornenie o vierohodnosti bolo potlaÄené.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Nedala sa zistiť vierohodnosť niektorých balíkov"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Nainštalovať tieto nekontrolované balíky?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Nastali problémy a -y bolo použité bez --force-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Na %s sa nedá zistiť veľkosť voľného miesta"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Na %s nemáte dostatok voľného miesta."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Adresár pre sťahovanie sa nedá zamknúť"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Niektoré balíky sa nedajú nainštalovať. To môže znamenať, že požadujete\n"
+"nemožnú situáciu, alebo ak používate nestabilnú distribúciu, že\n"
+"požadované balíky ešte neboli vytvorené alebo presunuté z fronty\n"
+"Novoprichádzajúcich (Incoming) balíkov."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Nasledovné informácie vám možno pomôžu vyriešiť túto situáciu:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Poškodené balíky"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Niektoré archívy sa nedajú stiahnuť. Skúste spustiť apt-get update alebo --"
+"fix-missing"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Vnútorná chyba, InstallPackages bolo volané s poškodenými balíkmi!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Je potrebné odstránenie balíka, ale funkcia Odstrániť je vypnutá."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Nastali problémy a -y bolo použité bez --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Nastali problémy a -y bolo použité bez --force-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Vnútorná chyba, Triedenie sa neukonÄilo"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"NezvyÄajná udalosÅ¥... Veľkosti nesúhlasia, poÅ¡lite e-mail na apt@packages."
+"debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Je potrebné stiahnuť %sB/%sB archívov.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Je potrebné stiahnuť %sB archívov.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "Po tejto operácii sa na disku použije Äalších %sB.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Po tejto operácii sa na disku uvoľní %sB.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "Zadané „iba triviálne“, ale toto nie je triviálna operácia."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Ãno, urob to, Äo vravím!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Možno sa chystáte vykonaÅ¥ nieÄo Å¡kodlivé.\n"
+"Ak chcete pokraÄovaÅ¥, opíšte frázu „%s“\n"
+" ?]"
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Prerušené."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Chcete pokraÄovaÅ¥?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Niektoré súbory sa nedajú stiahnuť"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "SÅ¥ahovanie ukonÄené v režime „iba stiahnuť“"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing a výmena nosiÄa nie sú momentálne podporované"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Chýbajúce balíky sa nedajú opraviť."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Inštalácia sa prerušuje."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"Nasledovný balík zmizol z vášho systému, pretože\n"
+"všetky súbory boli prepísané inými balíkmi:"
+msgstr[1] ""
+"Nasledovné balíky zmizli z vášho systému, pretože\n"
+"všetky súbory boli prepísané inými balíkmi:"
+msgstr[2] ""
+"Nasledovné balíky zmizli z vášho systému, pretože\n"
+"všetky súbory boli prepísané inými balíkmi:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Pozn.: Toto robí dpkg automaticky a zámerne."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "Nemajú sa odstraňovať veci, nespustí sa AutoRemover"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Hmm, zdá sa, že AutoRemover nieÄo zniÄil, Äo sa naozaj nemalo staÅ¥.\n"
+"Prosím, pošlite hlásenie o chybe balíka apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Vnútorná chyba, AutoRemover nieÄo pokazil"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"Nasledovný balík bol nainštalovaný automaticky a už viac nie je potrebný:"
+msgstr[1] ""
+"Nasledovné balíky boli nainštalované automaticky a už viac nie sú potrebné:"
+msgstr[2] ""
+"Nasledovné balíky boli nainštalované automaticky a už viac nie sú potrebné:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] ""
+"%lu balík bol nainštalovaný automaticky a už viac nie je potrebný.\n"
+msgstr[1] ""
+"%lu balíkov bolo nainštalovaných automaticky a už viac nie sú potrebné.\n"
+msgstr[2] ""
+"%lu balíkov bolo nainštalovaných automaticky a už viac nie sú potrebné.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Na jeho odstránenie použite „%s“."
+msgstr[1] "Na ich odstránenie použite „%s“."
+msgstr[2] "Na ich odstránenie použite „%s“."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Nainštalujú sa nasledovné extra balíky:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Navrhované balíky:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "OdporúÄané balíky:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "Preskakuje sa %s, pretože je už nainštalovaný.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"Preskakuje sa %s, nie je nainštalovaný a bola vy6iadan8 iba aktualizácia.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "Nie je možná reinštalácia %s, pretože sa nedá stiahnuť.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s je už najnovšej verzie.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s je oznaÄený ako manuálne nainÅ¡talovaný.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Vybraná verzia „%s“ (%s) pre „%s“\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Vybraná verzia „%s“ (%s) pre „%s“ kvôli „%s“\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"POZN.: Toto je iba simulácia!\n"
+" %s potrebuje na skutoÄné spustenie práva používateľa root.\n"
+" Tiež pamätajte, že zamykanie je deaktivované, takže\n"
+" sa nespoliehajte na to že to bude platiť v reálnej situácii!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Nainštalovaný]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [Nainštalovaný]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [Nainštalovaný]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [Nainštalovaný]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "ale nainštalovaný je %s"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "ale inštalovať sa bude %s"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "ale sa nedá nainštalovať"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "ale je to virtuálny balík"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "ale sa nebude inštalovať"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "ale nie je nainštalovaný"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " alebo"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Nasledovné balíky majú nesplnené závislosti:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Nainštalujú sa nasledovné NOVÉ balíky:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Nasledovné balíky sa ODSTRÃNIA:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Nasledovné balíky sa ponechajú v súÄasnej verzii:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Nasledovné balíky sa aktualizujú:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Nasledovné balíky sa DEGRADUJÚ:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Nasledovné pridržané balíky sa zmenia:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (kvôli %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"UPOZORNENIE: Nasledovné dôležité balíky sa odstránia.\n"
+"Ak presne neviete, Äo robíte, tak to NEROBTE!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu aktualizovaných, %lu nových nainštalovaných, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu reinštalovaných, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu degradovaných, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu na odstránenie a %lu neaktualizovaných.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu iba ÄiastoÄne nainÅ¡talovaných alebo odstránených.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr ""
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr ""
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr ""
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "Musíte zadať aspoň jeden vyhľadávací vzor"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Súbor balíkov %s je neaktuálny."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Súbory balíka:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "Vyrovnávacia pamäť je neaktuálna, nedá sa odvolať na súbor balíka"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Pripevnené balíky:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Nainštalovaná verzia: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Kandidát: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(žiadna)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Tabuľka verzií:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Nebol nájdený žiaden balík zodpovedajúci regulárnemu výrazu „%s“"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Nebol nájdený žiaden balík zodpovedajúci regulárnemu výrazu „%s“"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Nebol nájdený žiaden balík zodpovedajúci regulárnemu výrazu „%s“"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Vyberá sa „%s“ ako zdrojový balík namiesto „%s“\n"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "Ignorovať nedostupnú verziu „%s“ balíka „%s“"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Musíte zadať aspoň jeden balík, pre ktorý sa stiahnu zdrojové texty"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Nedá sa nájsť zdrojový balík pre %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"POZN.: tvorba balíka „%s“ sa spravuje v sytéme na riadenie revízií „%s“ na "
+"adrese:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Prosím, použite:\n"
+"%s\n"
+"ak chcete získať najnovšie (a pravdepodobne zatiaľ nevydané) aktualizácie "
+"balíka.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Preskakuje sa už stiahnutý súbor „%s“\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Je potrebné stiahnuť %sB/%sB zdrojových archívov.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Je potrebné stiahnuť %sB zdrojových archívov.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Stiahnuť zdroj %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Zlyhalo stiahnutie niektorých archívov."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Preskakuje sa rozbalenie už rozbaleného zdroja v %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Príkaz na rozbalenie „%s“ zlyhal.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Skontrolujte, Äi je nainÅ¡talovaný balík „dpkg-dev“.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Príkaz na zostavenie „%s“ zlyhal.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Nedajú sa získať závislosti na zostavenie %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s nemá žiadne závislosti na zostavenie.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Musíte zadať aspoň jeden balík, pre ktorý sa budú overovať závislosti na "
+"zostavenie"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"Informácie o architektúre nie sú dostupné pre %s. Informácie o nastavení "
+"nájdete v apt.conf(5) APT::Architectures"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Spracovanie závislostí na zostavenie zlyhalo"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Spracovanie závislostí na zostavenie zlyhalo"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Premenovanie %s na %s zlyhalo"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Balík %s verzie %s má nesplnené závislosti:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Príkaz update neprijíma žiadne argumenty"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "Príkaz update neprijíma žiadne argumenty"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Celkom názvov balíkov: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Celkom štruktúr balíkov: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Normálnych balíkov: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Čisto virtuálnych balíkov: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Jednoduchých virtuálnych balíkov: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Zmiešaných virtuálnych balíkov: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Chýbajúcich: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Celkom rôznych verzií: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Celkom rôznych popisov: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Celkom závislostí: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Celkom vzťahov ver/súbor: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Celkom vzťahov popis/súbor: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Celkom poskytnutých mapovaní: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Celkom globovaných reťazcov: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Celkom jalového miesta: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Celkom priradeného miesta: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+"Tento príkaz je zavrhovaný. Prosím, použite namiesto neho „apt-mark "
+"showauto“."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Zobrazí zdrojové záznamy"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Prehľadá zoznam balíkov podľa regulárneho výrazu"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Zobrazí základné údaje o závislostiach balíka"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Zobrazí údaje o spätných závislostiach balíka"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Zobrazí prehľadné informácie o balíku"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Vypíše zoznam názvov všetkých balíkov v systéme"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Zobrazí nastavenia zásad"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Prosím, zadajte názov tohto disku, napríklad „Debian 5.0.3 Disk 1“"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Vložte disk do mechaniky a stlaÄte Enter"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Pripojenie „%s“ na „%s“ zlyhalo"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Zopakujte tento postup pre všetky CD v sade diskov."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Argumenty nie sú vo dvojiciach"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Použitie: apt-config [voľby] príkaz\n"
+"\n"
+"apt-config je jednoduchý nástroj na Äítanie konfiguraÄného súboru APT\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Použitie: apt-extracttemplates súbor1 [súbor2 ...]\n"
+"\n"
+"apt-extracttemplates je nástroj na vyňatie konfiguraÄných skriptov\n"
+"a šablón z balíkov Debian\n"
+"\n"
+"Voľby:\n"
+" -h Tento pomocník.\n"
+" -t Nastaví doÄasný adresár\n"
+" -c=? NaÄíta tento konfiguraÄný súbor\n"
+" -o=? Nastaví ľubovoľnú voľbu, napr. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Nedá sa urÄiÅ¥ verzia programu debconf. Je debconf nainÅ¡talovaný?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Balík %s sa nedá nájsť"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s je oznaÄený ako automaticky nainÅ¡talovaný.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Tento príkaz je zavrhovaný. Prosím, použite namiesto neho „apt-mark auto“ a "
+"„apt-mark manual“."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Vnútorná chyba, „problem resolver“ nieÄo pokazil"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Podporované moduly:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Použitie: apt-get [voľby] príkaz\n"
+" apt-get [voľby] install|remove balík1 [balík2 ...]\n"
+" apt-get [voľby] source balík1 [balík2 ...]\n"
+"\n"
+"apt-get je jednoduché rozhranie na príkazovom riadku na sťahovanie\n"
+"a inštaláciu balíkov. Najpoužívanejšími príkazmi sú update a install.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Získa nové zoznamy balíkov"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Vykoná aktualizáciu"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Nainštaluje nové balíky (balík je libc6, nie libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Odstráni balíky"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Odstráni a balíky a ich konfiguraÄné súbory"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Automaticky odstráni všetky nepoužité balíky"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Aktualizácia distribúcie, pozri apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Riadi sa podľa výberu v dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Nastaví závislosti kompilácie pre zdrojové balíky"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Zmaže stiahnuté archívy"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Zmaže staré stiahnuté archívy"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Overí, Äi neexistujú poÅ¡kodené závislosti"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Stiahne zdrojové archívy"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "Musíte zadať aspoň jeden balík, pre ktorý sa stiahnu zdrojové texty"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Použitie: apt-internal-solver\n"
+"\n"
+"apt-internal-solver je rozhranie na použitie aktuálneho vnútorného\n"
+"riešiteľa ako vonkajší pre rodinu APT na ladenie a pod.\n"
+"\n"
+"Voľby:\n"
+" -h Tento pomocník.\n"
+" -q Výstup vhodný do záznamu - bez indikátora priebehu\n"
+" -c=? NaÄíta tento konfiguraÄný súbor\n"
+" -o=? Nastaví ľubovoľnú voľbu, napr. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Použitie: apt-internal-solver\n"
+"\n"
+"apt-internal-solver je rozhranie na použitie aktuálneho vnútorného\n"
+"riešiteľa ako vonkajší pre rodinu APT na ladenie a pod.\n"
+"\n"
+"Voľby:\n"
+" -h Tento pomocník.\n"
+" -q Výstup vhodný do záznamu - bez indikátora priebehu\n"
+" -c=? NaÄíta tento konfiguraÄný súbor\n"
+" -o=? Nastaví ľubovoľnú voľbu, napr. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "%s nemožno oznaÄiÅ¥, pretože nie je nainÅ¡talovaný.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s už bol oznaÄený ako manuálne nainÅ¡talovaný.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s už bol oznaÄený ako automaticky nainÅ¡talovaný.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s bol už nastavený na podržanie.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s bol už nastavený na nepodržanie.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "Vykonanie dpkg zlyhalo. Ste root?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "%s je oznaÄený na podržanie.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Zrušené podržanie %s.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"Použitie: apt-mark [voľby] {auto|manual} balík1 [balík2 ...]\n"
+"\n"
+"apt-mark je jednoduché rozhranie príkazového riadka na oznaÄovanie\n"
+"balíkov ako manuálne alebo automaticky nainštalované.\n"
+"Tiež dokáže oznaÄenia vypisovaÅ¥.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "OznaÄí uvedené balíky ako automaticky nainÅ¡talované"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "OznaÄí uvedené balíky ako manuálne nainÅ¡talované"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Neznámy záznam o balíku!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "NaÄítavajú sa zoznamy balíkov"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "Pripevnené balíky:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Poškodené balíky"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "ale je to virtuálny balík"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "NaÄítavajú sa stavové informácie"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Chybné predvolené nastavenie!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "StlaÄte Enter, ak chcete pokraÄovaÅ¥."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Chcete odstrániť všetky doteraz stiahnuté .deb súbory?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr ""
+"Pri rozbaľovaní došlo k nejakým chybám. Balíky, ktoré boli nainštalované"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "budú nakonfigurované. Môže to spôsobiť opakované chybové správy"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "o nesplnených závislostiach. Je to v poriadku, dôležité sú iba"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"chyby nad touto správou. Opravte ich a potom znovu spusťte [I]nštalovať"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "ZluÄujú sa dostupné informácie"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Zoznam rozšírení balíka je príliš dlhý"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Chyba pri spracovávaní adresára %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Zoznam zdrojových rozšírení je príliš dlhý"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Chyba pri zapisovaní hlaviÄky do súboru"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Chyba pri spracovávaní obsahu %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Použitie: apt-ftparchive [voľby] príkaz\n"
+"Príkazy: packages binárna_cesta [súbor_override [prefix_cesty]]\n"
+" sources zdrojová_cesta [súbor_override [prefix_cesty]]\n"
+" contents cesta\n"
+" release cesta\n"
+" generate konfiguraÄný_súbor [skupiny]\n"
+" clean konfiguraÄný_súbor\n"
+"\n"
+"apt-ftparchive generuje indexové súbory archívov Debianu. Podporuje\n"
+"niekoľko režimov vytvárania - od plne automatického až po funkÄnú\n"
+"náhradu príkazov dpkg-scanpackages a dpkg-scansources.\n"
+"\n"
+"apt-ftparchive zo stromu .deb súborov vygeneruje súbory Packages. Súbor\n"
+"Packages okrem všetkých riadiacich polí každého balíka obsahuje tiež jeho\n"
+"veľkosÅ¥ a MD5 súÄet. Podporovaný je tiež súbor „override“, pomocou ktorého\n"
+"môžete vynútiť hodnoty polí Priority a Section.\n"
+"\n"
+"Podobne vie apt-ftparchive vygenerovať zo stromu súborov .dsc súbory\n"
+"Sources. Voľbou --source-override môžete urÄiÅ¥ zdrojový súbor „override“.\n"
+"\n"
+"Príkazy „packages“ a „sources“ by sa mali spúšťať v koreni stromu.\n"
+"Binárna_cesta by mala ukazovaÅ¥ na zaÄiatok rekurzívneho hľadania\n"
+"a súbor „override“ by mal obsahovať príznaky pre nahradenie. Ak je udaný\n"
+"prefix_cesty, pridá sa do polí „filename“.\n"
+"SkutoÄný príklad z archívu Debianu:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Voľby:\n"
+" -h Tento pomocník\n"
+" --md5 Vygeneruje kontrolný súÄet MD5\n"
+" -s=? Zdrojový súbor „override“\n"
+" -q Tichý režim\n"
+" -d=? Zvolí voliteľnú databázu pre vyrovnávaciu pamäť\n"
+" --no-delink Povolí ladiaci režim\n"
+" --contents Vygeneruje súbor Contents\n"
+" -c=? NaÄíta tento konfiguraÄný súbor\n"
+" -o=? Nastaví ľubovoľnú voľbu"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Nevyhovel žiaden výber"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "V súbore balíka skupiny „%s“ chýbajú niektoré súbory"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "DB je narušená, súbor je premenovaný na %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "DB je neaktuálna, prebieha pokus o aktualizáciu %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Formát DB je neplatný. Ak ste aktualizovali staršiu verziu apt, musíte "
+"odstrániť a znovu vytvoriť databázu."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Nedá sa otvoriť DB súbor %s: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Nie je možné vykonať readlink %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Archív nemá riadiaci záznam"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Nedá sa získať kurzor"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Zlyhal pokus o pridelenie pamäti"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Neznámy kompresný algoritmus „%s“"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Komprimovaný výstup %s potrebuje kompresnú sadu"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Zlyhalo vytvorenie IPC rúry k podprocesu"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Volanie fork() zlyhalo"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Komprimovať potomka"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Vnútorná chyba, nepodarilo sa vytvoriť %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "V/V operácia s podprocesom/súborom zlyhala"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Chyba Äítania pri výpoÄte MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Nedá sa otvoriť %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Skomolený „override“ %s riadok %llu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Nepodarilo sa preÄítaÅ¥ „override“ súbor %s"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Skomolený „override“ %s riadok %llu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Skomolený „override“ %s riadok %llu #2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Skomolený „override“ %s riadok %llu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "W: Adresár %s sa nedá ÄítaÅ¥\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "W: %s sa nedá vyhodnotiť\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "W: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: Chyby sa týkajú súboru "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Chyba pri preklade %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Prechod stromom zlyhal"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "%s sa nedá otvoriť"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " Odlinkovanie %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Nepodarilo sa zlinkovať %s s %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " Bol dosiahnutý odlinkovací limit %sB.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Archív neobsahuje pole „package“"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s nemá žiadnu položku override\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " správcom %s je %s, nie %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s nemá žiadnu položku „source override“\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s nemá žiadnu položku „binary override“\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "ÄŒaká sa na hlaviÄky"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "HTTP server poslal neplatnú hlaviÄku odpovede"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Chybná hlaviÄka"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "HTTP server poslal neplatnú hlaviÄku Content-Length"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "HTTP server poslal neplatnú hlaviÄku Content-Range"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Tento HTTP server má poškodenú podporu rozsahov"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Neznámy formát dátumu"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Zlé dátové záhlavie"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Spojenie zlyhalo"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Vnútorná chyba"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Nedá sa ÄítaÅ¥ databáza na CD-ROM %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Pre pridanie CD do APT použije apt-cdrom. apt-get update sa nedá využiť na "
+"pridávanie nových CD."
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Chybné CD"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Nedá sa odpojiť CD-ROM v %s - možno sa ešte používa."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Disk sa nenašiel."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Súbor sa nenašiel"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Pripája sa k %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Nedá sa vytvoriť socket pre %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Nedá sa nadviazať spojenie na %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Nedá sa pripojiÅ¥ k %s:%s (%s), uplynul Äas spojenia"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Chyba"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Nedá sa pripojiť k %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Pripája sa k %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Nie je možné preložiť „%s“"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "DoÄasné zlyhanie pri preklade „%s“"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "NieÄo veľmi zlé sa prihodilo pri preklade „%s:%s“ (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "NieÄo veľmi zlé sa prihodilo pri preklade „%s:%s“ (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Nedá sa pripojiť k %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Vyhodnotenie zlyhalo"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Neplatné URI, lokálne URI nesmie zaÄínaÅ¥ s //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Prihlasovanie"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Nedá sa zistiť názov druhej strany"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Nedá sa zistiť lokálny názov"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Server zamietol naše spojenie s chybou: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "Zlyhalo zadanie používateľa, server odpovedal: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "Zlyhalo zadanie hesla, server odpovedal: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Bol zadaný proxy server, ale nie prihlasovací skript. Acquire::ftp::"
+"ProxyLogin je prázdny."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Príkaz „%s“ prihlasovacieho skriptu zlyhal, server odpovedal: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "Zlyhalo zadanie typu, server odpovedal: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Uplynul Äas spojenia"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Server ukonÄil spojenie"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "OdpoveÄ preplnila zásobník."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Narušenie protokolu"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Nedá sa vytvoriť socket"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Nedá sa pripojiÅ¥ dátový socket, uplynul Äas spojenia"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Nedá sa pripojiť pasívny socket."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo nezískal poÄúvajúci socket"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Nedá sa nadviazať socket"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Na sockete sa nedá poÄúvaÅ¥"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Názov socketu sa nedá zistiť"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Príkaz PORT sa nedá odoslať"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Neznáma rodina adries %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "Zlyhalo zadanie EPRT, server odpovedal: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Uplynulo spojenie dátového socketu"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Spojenie sa nedá prijať"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Problém s hašovaním súboru"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Súbor sa nedá stiahnuť, server odpovedal „%s“"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Uplynula doba dátového socketu"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Prenos dát zlyhal, server odpovedal „%s“"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Dotaz"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Nedá sa vyvolať "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Bola zistená aspoň jedna nesprávna signatúra."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr "Vnútorná chyba: Správna signatúra, ale sa nedá zistiÅ¥ odtlaÄok kľúÄa?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Nedá sa spustiť „apt-key“ kvôli overeniu podpisu (je nainštalované gnupg?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Neznáma chyba pri spustení apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Nasledovné signatúry sú neplatné:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Nasledovné signatúry sa nedajú overiť, pretože nie je dostupný verejný "
+"kľúÄ:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Chyba zápisu do tohto súboru"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Chyba pri Äítaní zo servera. Druhá strana ukonÄila spojenie"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Chyba pri Äítaní zo servera"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Chyba zápisu do súboru"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Výber zlyhal"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Uplynul Äas spojenia"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Chyba zápisu do výstupného súboru"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Na zrkadle nebol nájdený súbor „%s“"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Nepodarilo sa preÄítaÅ¥ súbor „%s“ na zrkadle"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Nepodarilo sa preÄítaÅ¥ súbor „%s“ na zrkadle"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Zrkadlo: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Zlyhalo nastavenie Äasu zmeny"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Spojenie bolo predÄasne ukonÄené"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "Prázdne súbory nemôžu byť platné archívy"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Nesplnené závislosti. Skúste použiť --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Možno to budete chcieť napraviť spustením „apt --fix-broken install“:"
+
+#~ msgid "(not found)"
+#~ msgstr "(nenájdené)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Pripevnený balík:"
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "Nie sú dostupné žiadne verejné kľúÄe ku kľúÄom s nasledovnými ID:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "Adresár %s je divertovaný"
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "%s závislosť pre %s nemožno splniť, pretože %s nie je povolené na "
+#~ "balíkoch „%s“"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr "%s závislosť pre %s nemožno splniť, pretože sa nedá nájsť balík %s"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Zlyhalo splnenie %s závislosti pre %s: Inštalovaný balík %s je príliš nový"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "%s závislosť pre %s nemožno splniť, pretože kandidátska verzia balíka %s, "
+#~ "nedokáže splniť požiadavky na verziu"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "%s závislosť pre %s nemožno splniť, pretože balík %s nemá kandidátsku "
+#~ "verziu"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Zlyhalo splnenie %s závislosti pre %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Závislosti na zostavenie %s nemožno splniť."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Problém s odlinkovaním %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Nie je možné vykonať unlink %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Použitie: apt-cache [voľby] príkaz\n"
+#~ " apt-cache [voľby] show balík1 [balík2 ...]\n"
+#~ "\n"
+#~ "apt-cache je nízkoúrovňový nástroj na zisťovanie informácií\n"
+#~ "z binárnych súborov vyrovnávacej pamäti APT\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Voľby:\n"
+#~ " -h Tento pomocník.\n"
+#~ " -p=? Vyrovnávacia pamäť balíkov.\n"
+#~ " -s=? Vyrovnávacia pamäť zdrojov.\n"
+#~ " -q Nezobrazí indikátor priebehu.\n"
+#~ " -i Pri príkaze unmet zobrazí iba dôležité závislosti.\n"
+#~ " -c=? NaÄíta tento konfiguraÄný súbor\n"
+#~ " -o=? Nastaví ľubovoľnú voľbu, napr. -o dir::cache=/tmp\n"
+#~ "Ďalšie informácie nájdete v manuálových stránkach apt-cache(8)\n"
+#~ "a apt.conf(5).\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "Voľby:\n"
+#~ " -h Tento text pomocníka.\n"
+#~ " -q Výstup vhodný do záznamu - bez indikátora priebehu\n"
+#~ " -qq NevypisovaÅ¥ niÄ, len chyby\n"
+#~ " -s NevykonávaÅ¥ zmeny. Iba vypísaÅ¥, Äo by sa urobilo.\n"
+#~ " -f Äítanie/zápis oznaÄenia auto/manálne v uvedenom súbore\n"
+#~ " -c=? NaÄítaÅ¥ tento konfiguraÄný súbor\n"
+#~ " -o=? NastaviÅ¥ ľubovoľný konfiguraÄnú voľbu, napr. -o dir::cache=/tmp\n"
+#~ "Ďalšie informácie nájdete na manuálových stránkach apt-mark(8) a apt."
+#~ "conf(5)."
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Voľby:\n"
+#~ " -h Tento pomocník.\n"
+#~ " -c=? NaÄíta tento konfiguraÄný súbor\n"
+#~ " -o=? Nastaví ľubovoľnú voľbu, napr. -o dir::cache=/tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "Voľby:\n"
+#~ " -h Tento text pomocníka.\n"
+#~ " -q Výstup vhodný do záznamu - bez indikátora priebehu\n"
+#~ " -qq NevypisovaÅ¥ niÄ, len chyby\n"
+#~ " -s NevykonávaÅ¥ zmeny. Iba vypísaÅ¥, Äo by sa urobilo.\n"
+#~ " -f Äítanie/zápis oznaÄenia auto/manálne v uvedenom súbore\n"
+#~ " -c=? NaÄítaÅ¥ tento konfiguraÄný súbor\n"
+#~ " -o=? NastaviÅ¥ ľubovoľný konfiguraÄnú voľbu, napr. -o dir::cache=/tmp\n"
+#~ "Ďalšie informácie nájdete na manuálových stránkach apt-mark(8) a apt."
+#~ "conf(5)."
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Použitie: apt-sortpkgs [voľby] súbor1 [súbor2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs je jednoduchý nástroj na zotriedenie súborov Packages.\n"
+#~ "Voľbou -s si zvolíte typ súboru.\n"
+#~ "\n"
+#~ "Voľby:\n"
+#~ " -h Tento pomocník\n"
+#~ " -s Zotriedi zdrojový súbor\n"
+#~ " -c=? NaÄíta tento konfiguraÄný súbor\n"
+#~ " -o=? Nastaví ľubovoľnú voľbu, napr. -o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Proces potomka zlyhal"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Musíte zadať aspoň jeden balík, pre ktorý sa stiahnu zdrojové texty"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Vytvorenie rúry zlyhalo"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Spustenie gzip zlyhalo "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s pre %s skompilovaný %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Zlyhalo vytvorenie FILE*"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Skomolený riadok %lu v zozname zdrojov %s (spracovanie URI)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "Skomolený riadok %lu v zozname zdrojov %s (nie je možné spracovať "
+#~ "[option])"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr ""
+#~ "Skomolený riadok %lu v zozname zdrojov %s ([option] je príliš krátke)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "Skomolený riadok %lu v zozname zdrojov %s ([%s] nie je priradenie)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "Skomolený riadok %lu v zozname zdrojov %s ([%s] nemá kľúÄ)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "Skomolený riadok %lu v zozname zdrojov %s ([%s] kÄ¾ÃºÄ %s nemá hodnotu)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Skomolený riadok %lu v zozname zdrojov %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Skomolený riadok %lu v zozname zdrojov %s (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Skomolený riadok %lu v zozname zdrojov %s (spracovanie URI)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "Skomolený riadok %lu v zozname zdrojov %s (absolútny dist)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "Skomolený riadok %lu v zozname zdrojov %s (spracovanie dist)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "Pri spracovaní závislostí nebol nájdený balík %s %s"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Nedá sa vyhodnotiť zoznam zdrojových balíkov %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Collecting File poskytuje"
+
+#, fuzzy
+#~ msgid "Does not start with a cleartext signature"
+#~ msgstr "Súbor %s nezaÄína podpísanou správou v Äistom texte (clearsigned)"
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Nepodarilo sa nájsť haš „%s“ v súbore Release"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Blok výrobcu %s neobsahuje otlaÄok (fingerprint)"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Celkom miesta závislých verzií: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Na %s nemáte dostatok voľného miesta"
+
+#~ msgid "Done"
+#~ msgstr "Hotovo"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "V %s nie je nainÅ¡talovaný žiaden zväzok kľúÄov."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Vnútorná chyba, AllUpgrade pokazil veci"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s nie je platný balík DEB."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Použije sa CD-ROM prípojný bod %s\n"
+#~ "Pripája sa CD-ROM\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Nepodarilo sa záplatovať %s pomocou mmap a pomocou operácie so súborom - "
+#~ "zdá sa, že záplata je poškodená."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Nepodarilo sa záplatovať %s pomocou mmap (ale nevyskytla sa chyba "
+#~ "týkajúca sa mmap) - zdá sa, že záplata je poškodená."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr "Ignorovať nedostupné cieľové vydanie „%s“ balíka „%s“"
+
+#~ msgid "Downloading %s %s"
+#~ msgstr "SÅ¥ahuje sa %s %s"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr "Toto nie je platný DEB archív, chýba ÄasÅ¥ „%s“, „%s“ alebo „%s“"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "Nezhoda kontrolných MD5 súÄtov"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Nedá sa nájsť súbor s balíkom %s. Asi budete musieť opraviť tento balík "
+#~ "manuálne."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Nedá sa zapísať záznam, volanie openpty() zlyhalo (/dev/pts nie je "
+#~ "pripojený?)\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Preskakuje sa neexistujúci súbor %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Odstránenie %s zlyhalo"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Nedá sa vytvoriť %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Vyhodnotenie %sinfo zlyhalo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr "Adresáre info a temp musia byť na tom istom súborovom systéme"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Nedá sa zmeniť na admin adresár %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Vnútorná chyba pri získavaní názvu balíka"
+
+#~ msgid "Reading file listing"
+#~ msgstr "NaÄítava sa zoznam súborov"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Otvorenie súboru zoznamov „%sinfo/%s“ zlyhalo. Ak nemôžete obnoviť tento "
+#~ "súbor, vytvorte nový prázdny a ihneÄ znovu nainÅ¡talujte tú istú verziu "
+#~ "balíka!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Chyba pri Äítaní súboru so zoznamami %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Vnútorná chyba pri získavaní uzla"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Zlyhalo otvorenie súboru s diverziami %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Diverzný súbor je porušený"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Neplatný riadok v diverznom súbore: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Vnútorná chyba pri pridávaní diverzie"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Vyrovnávacia pamäť balíkov sa musí najprv inicializovať"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Chyba pri hľadaní Balíka: hlaviÄka, pozícia %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Zlá sekcia ConfFile v stavovom súbore na pozícii %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Chyba pri spracovaní MD5. Pozícia %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Nedá sa prejsť do %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Nedá sa nájsť platný riadiaci súbor"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Nedá sa otvoriť rúra pre %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Chyba pri Äítaní z procesu %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Získal sa jeden riadok hlaviÄky cez %u znakov"
+
+#~ msgid "Note: This is done automatic and on purpose by dpkg."
+#~ msgstr "Pozn.: Toto robí dpkg automaticky a zámerne."
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Skomolený „override“ %s riadok %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Skomolený „override“ %s riadok %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Skomolený „override“ %s riadok %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "dekompresor"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "Äítanie, stále treba preÄítaÅ¥ %lu, ale už niÄ neostáva"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "zápis, stále treba zapísať %lu, no nedá sa to"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "Nebolo možné vykonať okamžitú konfiguráciu už rozbaleného „%s“. Pozri "
+#~ "prosím podrobnosti v man 5 apt.conf pod APT::Immediate-Configure"
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Chyba pri spracovávaní %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Chyba pri spracovávaní %s (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Chyba pri spracovávaní %s (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Chyba pri spracovávaní %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Chyba pri spracovávaní %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Vyskytla sa chyba pri spracovávaní %s (NewVersion%d)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Chyba pri spracovávaní %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Vyskytla sa chyba pri spracovávaní %s (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Chyba pri spracovávaní %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Chyba pri spracovávaní %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Vnútorná chyba, nedá sa nájsÅ¥ Älen"
+
+#~ msgid "Internal error, group '%s' has no installable pseudo package"
+#~ msgstr "Vnútorná chyba, skupina „%s“ nemá žiaden inštalovateľný pseudobalík"
+
+#~ msgid "Release file expired, ignoring %s (invalid since %s)"
+#~ msgstr "Platnosť súboru Release vypršala, ignoruje sa %s (neplatný od %s)"
diff --git a/po/sl.po b/po/sl.po
new file mode 100644
index 000000000..2f224d612
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,4266 @@
+# translation of apt.po to Slovenian
+# Matjaz Horvat <matjaz@owca.info>, 2004.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 0.5.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2012-06-27 21:29+0000\n"
+"Last-Translator: Andrej Znidarsic <andrej.znidarsic@gmail.com>\n"
+"Language-Team: Slovenian <sl@li.org>\n"
+"Language: sl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
+"%100==4 ? 3 : 0);\n"
+"X-Launchpad-Export-Date: 2012-06-25 20:00+0000\n"
+"X-Generator: Launchpad (build 15482)\n"
+"X-Poedit-Country: SLOVENIA\n"
+"X-Poedit-Language: Slovenian\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Neveljaven podpis arhiva"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Napaka med branjem glave Älana arhiva"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Neveljavna glava arhiva Älana %s"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Neveljavna glava Älana arhiva"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Arhiv je prekratek"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Glav arhiva ni mogoÄe brati"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Ni mogoÄe najti zapisa overitve za: %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Pokvarjen arhiv"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Nadzorna vsota tar ni uspela, arhiv je pokvarjen"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Neznana vrsta glave TAR %u, Älan %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "To ni veljaven arhiv DEB. Manjka Älan '%s'."
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Notranja napaka. Ni mogoÄe najti Älana %s."
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Nadzorne datoteke ni mogoÄe razÄleniti"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Zapisovanje datoteke %s je spodletelo"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Napaka med zapiranjem datoteke %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Pot %s je predolga"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Odpakiranje %s veÄ kot enkrat"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "Mapa %s je odklonjena"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Paket poskuÅ¡a pisati v tarÄo odklona %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Pot odklona je predloga"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Napaka med doloÄitvijo %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Ni mogoÄe preimenovati %s v %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "Mapa %s je bil zamenjana z ne-mapo"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Iskanje vozliÅ¡Äa v njegovem razprÅ¡enem vedru ni uspelo"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Pot je predolga"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "PrepiÅ¡i zadetek paketa brez vnosa razliÄice za %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Datoteka %s/%s prepisuje datoteko v paketu %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Ni mogoÄe brati %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Ni mogoÄe doloÄiti %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode je poklical stabilno povezano vozliÅ¡Äe"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Ni mogoÄe najti razprÅ¡enega elementa!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Ni mogoÄe dodeliti odklona"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Notranja napaka v AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Poskus prepisovanja odklona, %s -> %s in %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Dvojni seštevek odklona %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Dvojnik datoteke z nastavitvami %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Mapa %s je odklonjena"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Mapa %s je odklonjena"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Mapa %s je odklonjena"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Mapa %s je odklonjena"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "Mapa %s je odklonjena"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Napaka med branjem povezave %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Neujemanje vsote razpršil"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "preimenovanje je spodletelo, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Neujemanje velikosti"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "Neveljavno opravilo %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Napaka pisanja"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"Med preverjanjem podpisa je priÅ¡lo do napake. SkladiÅ¡Äe ni bilo posodobljeno "
+"zato bodo uporabljene predhodne datoteke kazal. Napaka GPG: %s: %s\n"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "Napaka GPG: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"Ni mogoÄe najti priÄakovanega vnosa '%s' v datoteki Release (napaÄen vnos "
+"sources.list ali slabo oblikovana datoteka)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"Datoteka Release za %s je potekla (neveljavna od %s). Posodobitev za to "
+"skladiÅ¡Äe ne bo uveljavljena."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Distribucija v sporu: %s (priÄakovana %s, toda dobljena %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Ni bilo mogoÄe najti datoteke za paket %s. Morda boste morali roÄno "
+"popraviti ta paket (zaradi manjkajoÄega arhiva)."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr "Ni mogoÄe najti vira za prejem razliÄice '%s' paketa '%s'"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"Datoteke s kazali paketov so pokvarjene. Brez imena datotek: polje za paket "
+"%s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Dnevnik sprememb za %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Gonilnika naÄinov %s ni mogoÄe najti."
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "Izberite, Äe je paket 'dpkg-dev' nameÅ¡Äen.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "NaÄin %s se ni zaÄel pravilno"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "Vstavite disk z oznako '%s' v pogon '%s' in pritisnite vnosno tipko."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Mapa seznama %spartial manjka."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Mapa arhivov %spartial manjka."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "Mape %s ni mogoÄe zakleniti"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "Vrsta datoteke s kazalom '%s' ni podprta"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Ni mogoÄe spremeniti v %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Pridobivanje datoteke %li od %li (%s preostalo)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Pridobivanje datoteke %li od %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr "Paket %s mora biti znova nameÅ¡Äen, vendar ni mogoÄe najti arhiva zanj."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Napaka. pkgProblemResolver::Resolve pri razrešitvi, ki so jih morda "
+"povzroÄili zadržani paketi."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "Ni mogoÄe popraviti težav. Imate pokvarjene pakete."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "Ni mogoÄe odprti ali razÄleniti seznama paketov ali datoteke stanja."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Za odpravljanje težav poskusite zagnati apt-get update."
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Seznama virov ni mogoÄe brati."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Napaka med prevajanjem logiÄnega izraza - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Izdaje '%s' za '%s' ni mogoÄe najti"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "RazliÄice '%s' za '%s' ni mogoÄe najti"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Ni mogoÄe najti naloge '%s'"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Z logiÄnim izrazom '%s' ni mogoÄe najti nobenega paketa"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Z logiÄnim izrazom '%s' ni mogoÄe najti nobenega paketa"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Ni mogoÄe najti paketa %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr "Ni mogoÄe izbrati razliÄic in paketa '%s', saj je popolnoma navidezen"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"Ni mogoÄe izbrati najnovejÅ¡e razliÄice iz paketa '%s', saj je popolnoma "
+"navidezen"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr "Ni mogoÄe izbrati razliÄice kandidata iz paketa %s, ker nima kandidata"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr "Ni mogoÄe izbrati nameÅ¡Äene razliÄice iz paketa %s, saj ni nameÅ¡Äen"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"Ni mogoÄe izbrati nameÅ¡Äene razliÄice ali razliÄice kandidata iz paketa "
+"'%s', saj nima nobenega od njiju"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Vrstica %u v seznamu virov %s je predolga."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Odklapljanje CD-ROM-a ...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Uporabljanje CD-ROM-ove priklopne toÄke %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "ÄŒakanje na disk ...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Priklapljanje CD-ROM-a ...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Identificiranje ... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Shranjena oznaka: %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Preiskovanje diska za datoteke kazala ...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Najdenih je bilo %zu kazal paketov, %zu kazal virov, %zu kazalov prevodov in "
+"%zu podpisov\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Nobenih datotek paketov ni mogoÄe najti, morda to ni disk Debian ali pa je "
+"arhitektura napaÄna?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Najdena je bila oznaka '%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "To ni veljavno ime, poskusite znova.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Ta disk se imenuje: \n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Kopiranje seznama paketov ..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Pisanje novega seznama virov\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Izvorni vnosi za ta disk so:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Ni mogoÄe doloÄiti %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Ni mogoÄe doloÄiti priklopne toÄke %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Ni mogoÄe doloÄiti CD-ROM-a"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Možnost ukazne vrstice '%c' [iz %s] ni poznana."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Možnosti ukazne vrstice %s ni mogoÄe razumeti"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Možnost ukazne vrstice %s ni boolova vrednost"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Možnost %s zahteva argument."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "Možnost %s: DoloÄilo predmeta nastavitve zahtevajo =<val>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Možnost %s zahteva celoštevilski argument, ne '%s'"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Možnost '%s' je predolga"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "Pomena %s ni mogoÄe razumeti, poskusite pravilno ali napaÄno."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Neveljavno opravilo %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Neprepoznana vrsta okrajšave: '%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Odpiranje nastavitvene datoteke %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Skladenjska napaka %s:%u: Blok se zaÄne brez imena."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Skladenjska napaka %s:%u: Slabo oblikovana oznaka."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Skladenjska napaka %s:%u: Dodatna krama za vrednostjo."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"Skladenjska napaka %s:%u: Napotki se lahko izvedejo le na vrhnji ravni."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Skladenjska napaka %s:%u: PreveÄ vgnezdenih vkljuÄitev"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Skladenjska napaka %s:%u: VkljuÄeno od tu"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Skladenjska napaka %s:%u: Nepodprt napotek '%s'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Skladenjska napaka %s:%u: poÄisti ukaz zahteva drevo možnosti kot argument"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Skladenjska napaka %s:%u: Dodatna krama na koncu datoteke"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Težava med razvezovanjem datoteke %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Brez uporabe zaklepanja za zaklenjeno datoteko le za branje %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Ni mogoÄe odprti zaklenjene datoteke %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Brez uporabe zaklepanja za datoteko %s, priklopljeno z NTFS"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Ni mogoÄe zakleniti datoteke %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr "Seznama datotek ni mogoÄe ustvariti, ker '%s' ni mapa"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr "Preziranje '%s' v mapi '%s', ker ni obiÄajna datoteka"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr "Preziranje datoteke '%s' v mapi '%s', ker nima pripone imena datotek"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"Preziranje datoteke '%s' v mapi '%s', ker nima veljavne pripone imena datotek"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Program je Äakal na %s a ga ni bilo tam"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Pod-opravilo %s je prejelo segmentacijsko napako."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Pod-opravilo %s je prejelo signal %u."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Pod-opravilo %s je vrnilo kodo napake (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Pod-opravilo %s se je nepriÄakovano zakljuÄilo"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Napaka branja"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Napaka pisanja"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Težava med zapiranjem gzip datoteke %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Ni mogoÄe ustvariti podopravila IPD"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Ni mogoÄe izvesti stiskanja "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Ni mogoÄe odpreti datoteke %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Ni mogoÄe odpreti opisnika datotek %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "Prebrano, Å¡e vedno je treba prebrati %llu bajtov, vendar ni niÄ ostalo"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "pisanje, preostalo je Å¡e %llu za pisanje, vendar ni bilo mogoÄe pisati"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Težava med zapiranjem datoteke %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Težava med preimenovanje datoteke %s v %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Težava med usklajevanjem datoteke"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Ni mogoÄe doloÄiti %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Ni mogoÄe pisati na %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "mmap prazne datoteke ni mogoÄ"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Ni mogoÄe narediti mmap %llu bajtov"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Ni mogoÄe podvojiti opisnika datotek %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "Ni mogoÄe zapreti mmap"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "Ni mogoÄe uskladiti mmap"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Ni mogoÄe narediti mmap %lu bajtov"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Ni mogoÄe obrezati datoteke"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"DinamiÄnemu MMap je zmanjkalo prostora. PoveÄajte velikost APT::Cache-Start. "
+"Trenutna vrednost: %lu. (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"Ni mogoÄe poveÄati velikosti MMap, ker je omejitev %lu bajtov že dosežena."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Ni mogoÄe poveÄati velikosti MMap, ker je samodejno poveÄevanje onemogoÄeno."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s ... Napaka!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s ... Narejeno"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s ... Narejeno"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%lid %lih %limin %lis"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%lih %limin %lis"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%limin %lis"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%lis"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Izbire %s ni mogoÄe najti"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Ni mogoÄe razÄleniti Release datoteke %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Ni izbir v Release datoteki %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Ni vnosa razpršila v Release datoteki %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Neveljaven vnos '%s' v Release datoteki %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Ni mogoÄe razÄleniti datoteke paketa %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"SkrbniÅ¡ke mape (%s) ni mogoÄe zakleniti. Jo morda uporablja drugo opravilo?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "SkrbniÅ¡ke mape (%s) ni mogoÄe zakleniti. Ali ste skrbnik?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr "dpkg je bil prekinjen. Za popravilo napake morate roÄno pognati '%s'. "
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Ni zaklenjeno"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "NameÅ¡Äanje %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Nastavljanje %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Odstranjevanje %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "%s je bil popolnoma odstranjen"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "%s je izginil"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Poganjanje sprožilca po namestitvi %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "%s je bil nameÅ¡Äen"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Mapa '%s' manjka"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "Ni mogoÄe odpreti datoteke '%s'"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Pripravljanje %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Razširjanje %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Pripravljanje na nastavljanje %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Pripravljanje na odstranitev %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "%s je bil odstranjen"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Pripravljanje na popolno odstranitev %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "%s je bil popolnoma odstranjen"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "Ni mogoÄe pisati na %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "Opravilo je bilo prekinjeno preden se je lahko konÄalo"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+"PoroÄilo apport ni bilo napisano, ker je bilo Å¡tevilo MaxReports že doseženo"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "težave odvisnosti - puÅ¡Äanje nenastavljenega"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"PoroÄilo apport ni bilo napisano, ker sporoÄilo o napaki nakazuje na "
+"navezujoÄo napako iz predhodne napake."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"PoroÄilo apport ni bilo napisano, ker sporoÄilo o napaki nakazuje na napako "
+"polnega diska"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"PoroÄilo apport ni bilo napisano, ker sporoÄilo o napaki nakazuje na napako "
+"zaradi pomanjkanja pomnilnika"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"PoroÄilo apport je bilo napisano, ker sporoÄilo o napaki nakazuje na težavo "
+"na krajevnem sistemu"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"PoroÄilo apport ni bilo napisano, ker sporoÄilo o napaki nakazuje na napako "
+"dpkg V/I"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Gradnja drevesa odvisnosti"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "RazliÄice kandidatov"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Ustvarjanje odvisnosti"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Branje podatkov o stanju"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Odpiranje DatotekeStanja %s je spodletelo"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Pisanje zaÄasne DatotekeStanja %s je spodletelo"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "Pošlji scenarij reševalniku"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "Pošlji zahtevo reševalniku"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "Priprava za rešitev prejemanja"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr "Zunanji reÅ¡evalnik je spodletel brez pravega sporoÄila o napakah"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "Izvedi zunanji reševalnik"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Execute external planner"
+msgstr "Izvedi zunanji reševalnik"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send request to planner"
+msgstr "Pošlji zahtevo reševalniku"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send scenario to planner"
+msgstr "Pošlji scenarij reševalniku"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "External planner failed without a proper error message"
+msgstr "Zunanji reÅ¡evalnik je spodletel brez pravega sporoÄila o napakah"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "Zapisanih je bilo %i zapisov.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "Zapisanih je bilo %i zapisov z %i manjkajoÄimi datotekami.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "Zapisanih je bilo %i zapisov z %i neujemajoÄimi datotekami.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"Zapisanih je bilo %i zapisov z %i manjkajoÄimi datotekami in %i "
+"neujemajoÄimi datotekami.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "Ni mogoÄe najti zapisa overitve za: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Neujemanje razpršila za: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Paketni sistem '%s' ni podprt"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Ni mogoÄe doloÄiti ustrezne vrste paketnega sistema"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "Poganjanje dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"Ni mogoÄe izvesti takojÄ…nje nastavitve na '%s'. Oglejte si man5 apt.conf pod "
+"APT::Immediate-Configure za podrobnosti. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "Ni mogoÄe nastaviti '%s' "
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Ta krog namestitve zahteva zaÄasno odstranitev kljuÄnega paketa %s zaradi "
+"zanke spora/predodvisnosti. To je ponavadi slabo, toda Äe zares želite "
+"nadaljevati, vkljuÄite možnost APT::Force-LoopBreak."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Prazen predpomnilnik paketov"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Datoteka s predpomnilnikom paketov je pokvarjena"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "RazliÄica datoteke s predpomnilnikom paketov ni združljiva"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Ta APT ne podpira sistema razliÄic '%s'"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Predpomnilnik paketov je bil izgrajen za drugaÄno arhitekturo"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Datoteka predpomnilnika paketa je okvarjena. Je premajhna"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Odvisen od"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Predodvisen od"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "PriporoÄa"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "V sporu z"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "PriporoÄa"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Zamenja"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Pokvari"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Izboljša"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Zastara"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "pomembno"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "obvezno"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "obiÄajni"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "dodatno"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "izbirno"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Predpomnilnik ima neustrezen sistem razliÄic"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Med obdelovanjem %s je prišlo do napake (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "ÄŒestitamo, presegli ste Å¡tevilo imen paketov, ki jih zmore APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "ÄŒestitamo, presegli ste Å¡tevilo razliÄic, ki jih zmore APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Čestitamo, presegli ste število opisov, ki jih je zmožen APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "ÄŒestitamo, presegli ste Å¡tevilo odvisnosti, ki jih zmore APT."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Branje seznama paketov"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Napaka VI med shranjevanjem predpomnilnika virov"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Vrsta datoteke s kazalom '%s' ni podprta"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"Vrednost '%s' je neveljavna za APT::Default-Release in zato takšna izdaja ni "
+"na voljo v virih"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Neveljaven zapis v datoteki možnosti %s, ni glave paketa"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Ni mogoÄe razumeti vrste bucike %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Prednost bucike ni navedena ali pa je niÄ."
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Slabo oblikovan prepis %s v vrstici %llu Å¡t. 1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Odpiranje %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Slabo oblikovana vrstica %u v seznamu virov %s (vrsta)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Vrsta '%s' v vrstici %u na seznamu virov %s ni znana"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Slabo oblikovana vrstica %u v seznamu virov %s (vrsta)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Vrsta '%s' v vrstici %u na seznamu virov %s ni znana"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "V sources.list morate vstaviti URI-je z viri"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Ni mogoÄe dobiti %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Prejem nekaterih datotek kazala je spodletel. Bile so prezrte ali pa so bile "
+"namesto njih uporabljene stare."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "PreraÄunavanje nadgradnje"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Zadetek:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Dobi:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Prezr:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Nap:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Pridobljenih %sB v %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Delo]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Sprememba medija: vstavite disk z oznako\n"
+" '%s'\n"
+"v enoto '%s' in pritisnite vnosno tipko\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Popravljanje odvisnosti ..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " spodletelo."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Ni mogoÄe popraviti odvisnosti"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Ni mogoÄe pomanjÅ¡ati zbirke za nadgradnjo"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Opravljeno"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+"Če želite popraviti napake, poskusite pognati 'apt --fix-broken install'."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Nerešene odvisnosti. Poskusite 'apt --fix-broken install' brez paketov (ali "
+"navedite rešitev)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Izbiranje '%s' za nalogo '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Izbiranje '%s' za logiÄni izraz '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Izbiranje '%s' za logiÄni izraz '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Paket %s je navidezen in ga je priskrbel:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [NameÅ¡Äeno]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [Ni razliÄica kandidata]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Sami izberite paket, ki ga želite namestiti."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Paket %s nima navedene razliÄice, vendar se nanj nanaÅ¡a nek drug paket.\n"
+"To ponavadi pomeni, da paket manjka, je zastaran ali\n"
+"pa je na voljo samo iz drugega vira.\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Kakorkoli, naslednji paketi ga nadomestijo:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Paket '%s' nima namestitvenega kandidata"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Navideznih paketov kot je '%s' ni mogoÄe odstraniti\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"Paket '%s' ni nameÅ¡Äen, zato ni bil odstranjen. Ali ste mislili '%s'?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Paket '%s' ni nameÅ¡Äen, zato ni bil odstranjen\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Izbiranje '%s' namesto '%s'\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Ta APT ima moÄi super krav."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Noben paket ni bil najden"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "POZOR: Naslednjih paketov ni bilo mogoÄe overiti!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Opozorilo overitve je bilo prepisano.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Nekaterih paketkov bi bilo mogoÄe overiti"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Ali želite te pakete namestiti brez preverjanja?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Prišlo je do težav in -y je bil uporabljen brez --force-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Ni mogoÄe doloÄiti prostega prostora v %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Na %s je premalo prostora."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Ni mogoÄe zakleniti mape prejemov"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Nekaterih paketov ni mogoÄe namestiti. To lahko pomeni, da ste zahtevali\n"
+"nemogoÄ položaj, Äe uporabljate nestabilno izdajo pa\n"
+", da nekateri zahtevani paketi Å¡e niso ustvarjeni ali premaknjeni\n"
+" iz PrihajajoÄega."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Naslednji podatki vam bodo morda pomagali rešiti težavo:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Pokvarjeni paketi"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Nekaterih arhivov ni mogoÄe dobiti. Poskusite uporabiti apt-get update ali --"
+"fix-missing."
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Notranja napaka, NamestiPakete je bil klican z pokvarjenimi paketi!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Odstraniti je treba pakete, a je odstranjevanje onemogoÄeno."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Prišlo je do težav in -y je bil uporabljen brez --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Prišlo je do težav in -y je bil uporabljen brez --force-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Notranja napaka, Urejanje se ni konÄalo"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Kako Äudno ... Velikosti se ne ujemata, poÅ¡ljite sporoÄilo na apt@packages."
+"debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Potrebno je dobiti %sB/%sB arhivov.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Potrebno je dobiti %sB arhivov.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "Po tem opravilu bo porabljenega %sB dodatnega prostora.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Po tem opravilu bo sproÅ¡Äenega %sB prostora na disku.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "Navedena je možnost Samo preprosto, a to opravilo ni preprosto."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Da, naredi tako kot pravim!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Naredili boste nekaj, kar je morda lahko Å¡kodljivo.\n"
+"Za nadaljevanje vtipkajte frazo '%s'\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Prekini."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Ali želite nadaljevati?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Prejem nekaterih datotek ni uspel"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Prejem je dokonÄan in uporabljen je naÄin samo prejema"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing in izmenjava medija trenutno nista podprta"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Ni mogoÄe popraviti manjkajoÄih paketov."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Prekinjanje namestitve."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"Naslednji paketi so izginili z vašega sistema, ker so vse\n"
+"datoteke prepisali drugi paketi:"
+msgstr[1] ""
+"Naslednji paketi je izginil z vašega sistema, ker so vse\n"
+"datoteke prepisali drugi paketi:"
+msgstr[2] ""
+"Naslednja paketa sta izginila z vašega sistema, ker so vse\n"
+"datoteke prepisali drugi paketi:"
+msgstr[3] ""
+"Naslednji paketi so izginili z vašega sistema, ker so vse\n"
+"datoteke prepisali drugi paketi:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Opomba: To je dpkg storil samodejno in namenoma."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+"Program ne bi smel brisati stvari, ni mogoÄe zagnati "
+"SamodejnegaOdstranjevalnika"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Videti je, da je SamodejniOdstranjevalnik nekaj uniÄil, kar se ne bi smelo "
+"zgoditi\n"
+"PoÅ¡ljite poroÄilo o hroÅ¡Äu v apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Notranja napaka, SamodejniOdstranjevalnik je pokvaril stvari"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "Naslednji paketi so bili samodejno nameÅ¡Äeni in niso veÄ zahtevani:"
+msgstr[1] "Naslednji paket je bil samodejno nameÅ¡Äen in ni veÄ zahtevan:"
+msgstr[2] ""
+"Naslednja paketa sta bila samodejno nameÅ¡Äena in nista veÄ zahtevana:"
+msgstr[3] "Naslednji paketi so bili samodejno nameÅ¡Äeni in niso veÄ zahtevani:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "%lu paketov je bilo samodejno nameÅ¡Äenih in niso veÄ zahtevani.\n"
+msgstr[1] "%lu paket je bil samodejno nameÅ¡Äen in ni bil veÄ zahtevan.\n"
+msgstr[2] "%lu paketa sta bila samodejno nameÅ¡Äena in nista veÄ zahtevana.\n"
+msgstr[3] "%lu paketi so bili samodejno nameÅ¡Äeni in niso veÄ zahtevani.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Uporabite '%s' za njihovo odstranitev."
+msgstr[1] "Uporabite '%s' za njegovo odstranitev."
+msgstr[2] "Uporabite '%s' za njuno odstranitev."
+msgstr[3] "Uporabite '%s' za njihovo odstranitev."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Naslednji dodatni paketi bodo nameÅ¡Äeni:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Predlagani paketi:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "PriporoÄeni paketi:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "%s je preskoÄen, ker je že nameÅ¡Äen in ne potrebuje nadgradnje.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr "Preskok %s, ni nameÅ¡Äen in zahtevane so le nadgradnje\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "Ponovna namestitev %s ni možna, ker prejem ni možen.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "NajnovejÅ¡a razliÄica %s je že nameÅ¡Äena.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s je bil nastavljen na roÄno nameÅ¡Äen.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Izbrana razliÄica '%s' (%s) za '%s'\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Izbrana razliÄica '%s' (%s) za '%s' namesto '%s'\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"OPOMBA: To je samo simulacija!\n"
+" %s za pravo izvajanje potrebuje privilegije skrbnika.\n"
+" Zaklepanje je onemogoÄeno, zato se ne zanaÅ¡ajte\n"
+" na pomembnost trenutnega pravega stanja!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [NameÅ¡Äeno]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [NameÅ¡Äeno]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [NameÅ¡Äeno]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [NameÅ¡Äeno]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "vendar je paket %s nameÅ¡Äen"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "vendar bo paket %s nameÅ¡Äen"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "vendar se ga ne da namestiti"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "vendar je navidezen paket"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "vendar ne bo nameÅ¡Äen"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "vendar ni nameÅ¡Äen"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " ali"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Naslednji paketi imajo nerešene odvisnosti:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Naslednji NOVI paketi bodo nameÅ¡Äeni:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Naslednji novi paketi bodo ODSTRANJENI:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Naslednji paketi so bili zadržani:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Naslednji paketi bodo nadgrajeni:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Naslednji paketi bodo POSTARANI:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Naslednji zadržani paketi bodo spremenjeni:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (zaradi %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"OPOZORILO: Naslednji nujni paketi bodo odstranjeni.\n"
+"Tega NE storite, razen Äe ne veste natanko kaj poÄenjate!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu nadgrajenih, %lu na novo nameÅ¡Äenih, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu posodobljenih, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu postaranih, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu bo odstranjenih in %lu ne nadgrajenih.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu ne popolnoma nameÅ¡Äenih ali odstranjenih.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr ""
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr ""
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr ""
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "Podati morate vsaj en iskalni vzorec"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Datoteka paketa %s ni usklajena."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Datoteke paketa:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "Predpomnilnik ni usklajen, x-ref datoteke paketa ni mogoÄ"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Pripeti paketi:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " NameÅ¡Äen: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Kandidat: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(brez)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Preglednica razliÄic:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Z logiÄnim izrazom '%s' ni mogoÄe najti nobenega paketa"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Z logiÄnim izrazom '%s' ni mogoÄe najti nobenega paketa"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Z logiÄnim izrazom '%s' ni mogoÄe najti nobenega paketa"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Izbiranje '%s' kot vir paketa namesto '%s'\n"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "Prezri nerazpoložljivo razliÄico '%s' paketa '%s'"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr ""
+"Potrebno je navesti vsaj en paket, za katerega želite dobiti izvorno kodo"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Izvornega paketa za %s ni mogoÄe najti"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"OPOMBA: pakiranje '%s' vzdrževano v sistemu nadzora razliÄice '%s' na:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Uporabite:\n"
+"%s\n"
+"za pridobitev zadnjih (morda Å¡e neizdanih) posodobitev paketa.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Preskok že prejete datoteke '%s'\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Potrebno je dobiti %sB/%sB izvornih arhivov.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Potrebno je dobiti %sB izvornih arhivov.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Dobi vir %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Nekaterih arhivov ni mogoÄe pridobiti."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Odpakiranje že odpakiranih izvornih paketov v %s je bilo preskoÄeno\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Ukaz odpakiranja '%s' ni uspel.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Izberite, Äe je paket 'dpkg-dev' nameÅ¡Äen.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Ukaz gradnje '%s' ni uspel.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Ni mogoÄe dobiti podrobnosti o odvisnostih za gradnjo za %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s nima odvisnosti za gradnjo.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Potrebno je navesti vsaj en paket, za katerega želite preveriti odvisnosti "
+"za gradnjo"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"Za %s ni bilo mogoÄe najti podatkov o arhitekturi. Za nastavitev si oglejte "
+"apt.conf(5) APT::Architectures"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Obdelava odvisnosti za gradnjo je spodletela"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Obdelava odvisnosti za gradnjo je spodletela"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Ni mogoÄe preimenovati %s v %s"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Paket %s razliÄica %s ima nereÅ¡ene odvisnosti:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Ukaz update ne sprejema argumentov"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "Ukaz update ne sprejema argumentov"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Vseh imen paketov: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Skupno struktur paketov : "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " ObiÄajni paketi: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " ÄŒisti navidezni paketi: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Posamezni navidezni paketi: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Mešani navidezni paketi: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Manjka: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Vseh razliÄic: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Skupno razliÄnih opisov: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Vseh odvisnosti: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Vseh povezav Raz/Dat: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Skupno razmerij opisov/datotek: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Vseh dobljenih preslikav: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Vseh razširjenih nizov: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Celotna ohlapna velikost: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Celotna velikost, izraÄunana za: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr "Ta ukaz je zastarel. Namesto njega uporabite 'apt-mark showauto'."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Prikaže zapise izvorne kode"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "IÅ¡Äe seznam paketov z vzorcem logiÄnega izraza"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Prikaže surove podatke odvisnosti za paket"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Pokaže obratne podatke odvisnosti za paket"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Show a readable record for the package"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Izpiše imena vseh paketov na sistemu"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Prikaže nastavitve pravil"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Navedite ime tega diska, kot je naprimer 'Debian 5.0.3 disk 1'"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Vstavite disk v pogon in pritisnite vnosno tipko"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Priklapljanje '%s' na '%s' je spodletelo"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Ponovi to opravilo za preostanek CD-jev v vaši zbirki."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Argumenti niso v parih"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Uporaba: apt-config [možnosti] ukaz\n"
+"\n"
+"apt-config je preprosto orodje za branje nastavitvene datoteke APT\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Uporaba: apt-extracttemplates dat1 [dat2 ...]\n"
+"\n"
+"apt-extracttemplates je orodje za pridobivanje podatkov o\n"
+"nastavitvah in predlogah debianovih paketov\n"
+"\n"
+"Možnosti:\n"
+" -h To besedilo pomoÄi\n"
+" -t Nastavi zaÄasno mapo\n"
+" -c=? Prebere podano datoteko z nastavitvami\n"
+" -o=? Nastavi poljubno nastavitveno možnost, na primer. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Ni mogoÄe ugotoviti razliÄice debconfa. Je sploh nameÅ¡Äen?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Ni mogoÄe najti paketa %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s je nastavljen na samodejno nameÅ¡Äen.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Ta ukaz je zastarel. Namesto njega uporabite 'apt-mark auto' in 'apt-mark "
+"manual'."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Notranja napaka, reševalnik težav je pokvaril stvari"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Podprti moduli:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Uporaba: apt-get [možnosti] ukaz\n"
+" apt-get [možnosti] install|remove paket1 [paket2 ...]\n"
+" apt-get [možnosti] source paket1 [paket2 ...]\n"
+"\n"
+"apt-get je enostaven vmesnik ukazne vrstice za prejem in nameÅ¡Äanje\n"
+"paketov. Najbolj pogosto uporabljana ukaza sta update in install.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Pridobi nove sezname paketov"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Izvedix nadgradnjo"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Namesti nove pakete (paket je libc6, ne libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Odstrani pakete"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Odstrani pakete in nastavitvene datoteke"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Samodejno odstrani vse neuporabljene pakete"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Nadgradnja distribucije, oglejte si apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Sledi izbiri dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Nastavi odvisnosti gradnje za paket izvorne kode"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Izbriši prejete datoteke arhivov"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Izbriše stare prejete datoteke arhivov"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Preveri, da ni pokvarjenih odvisnosti"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Prejmi arhive izvorne kode"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "Prejmi binarni paket v trenutno mapo"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "Prejmi in prikaže dnevnik sprememb za dani paket"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr ""
+"Potrebno je navesti vsaj en paket, za katerega želite dobiti izvorno kodo"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Uporaba: apt-internal-solver\n"
+"\n"
+"apt-internal-solver je vmesnik za uporabo trenutnega notranjega\n"
+"reÅ¡evalnika kot zunanji reÅ¡evalnik za družino APT za razhroÅ¡Äevanje ali "
+"podobno.\n"
+"\n"
+"Možnosti:\n"
+" -h To besedilo pomoÄi\n"
+" -q Izhod se beleži - ni kazalnika napredka\n"
+" -c=? Prebere to nastavitveno datoteko\n"
+" -o=? Nastavi poljubno nastavitveno možnost, na primer dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Uporaba: apt-internal-solver\n"
+"\n"
+"apt-internal-solver je vmesnik za uporabo trenutnega notranjega\n"
+"reÅ¡evalnika kot zunanji reÅ¡evalnik za družino APT za razhroÅ¡Äevanje ali "
+"podobno.\n"
+"\n"
+"Možnosti:\n"
+" -h To besedilo pomoÄi\n"
+" -q Izhod se beleži - ni kazalnika napredka\n"
+" -c=? Prebere to nastavitveno datoteko\n"
+" -o=? Nastavi poljubno nastavitveno možnost, na primer dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "paket %s ne more biti oznaÄen, ker ni nameÅ¡Äen.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "paket %s je bil že nastavljen na roÄno nameÅ¡Äen.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "paket %s je bil že nastavljen kot samodejno nameÅ¡Äen.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "paket %s je bil že nastavljen kot na Äakanju.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "paket %s je bil že nastavljen kot ne na Äakanju.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "Izvajanje dpkg je spodletelo. Ali ste skrbnik?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "paket %s je nastavljen kot na Äakanju.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "ÄŒakanje za %s je bilo preklicano.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"Uporaba: apt-mark [možnosti] {auto|manual} paket1 [paket2 ...]\n"
+"\n"
+"apt-mark je enostaven vmesnik ukazne vrstice za oznaÄevanje paketov\n"
+"kot roÄno ali samodejno nameÅ¡Äenih. Oznake lahko tudi izpiÅ¡e.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "OznaÄi dane pakete kot samodejno nameÅ¡Äene"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "OznaÄi dane pakete kot roÄno nameÅ¡Äene"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Neznan zapis paketa!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "Branje seznama paketov"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "Pripeti paketi:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Pokvarjeni paketi"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "vendar je navidezen paket"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "Branje podatkov o stanju"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "NapaÄna privzeta nastavitev!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Za nadaljevanje pritisnite vnosno tipko."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Ali želite izbrisati vse predhodno prejete datoteke .deb?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr ""
+"Med razÅ¡irajanjem je priÅ¡lo do nekaterih napak. Paketi, ki so bili nameÅ¡Äeni"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "bodo bili nastavljeni. To lahko povzroÄi podvojene napake"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"ali do napak zaradi manjkajoÄih odvisnosti. To je v redu, pomembne so samo "
+"napake"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr "nad tem sporoÄilom. Popravite jih in poženite Namest[I]tev Å¡e enkrat"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Združevanje razpoložljivih podaktov"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Seznam razširitev paketov je predolg"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Napaka med obdelavo mape %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Seznam razširitev virov je predolg"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Napaka med pisanjem glave v datoteko vsebine"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Napaka med obdelavo vsebine %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Uporaba: apt-ftparchive [možnosti] ukaz\n"
+"Ukazi: packages, binarypath [datoteka prepisa [predpona poti]]\n"
+" sources srcpath [datoteka prepisa [predpona poti]]\n"
+" contents path\n"
+" release path\n"
+" generate config [skupine]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive ustvari datoteke kazala za arhive Debian. Podpira\n"
+"veÄ slogov ustvarjanja od popolnoma samodejnih do funkcionalnih zamenjav\n"
+"za dpkg-scanpackages in dpkg-scansources\n"
+"\n"
+"apt-ftparchive ustvari datoteke paketov iz drevesa .debs. Datoteka\n"
+"paketa vsebuje vsebino vseh nadzornih polj iz vsakega paketa kot tudi\n"
+"razpršilo MD5 in velikost datoteke. Datoteka prepisa podpira vsiljenje\n"
+"vrednosti Prednosti in Odseka.\n"
+"\n"
+"Podobno apt-ftparchive ustvari datoteke paketov iz drevesa .dscs.\n"
+"Možnost --source-override je mogoÄe uporabiti za navedbo datoteke prepisa "
+"src\n"
+"\n"
+"Ukaza 'packages' in 'sources' je treba zagnati v korenu drevesa.\n"
+"BinaryPath bi morala kazati na osnovno mapo rekurzivnega iskanja in\n"
+"datoteka prepisa bi morala vsebovati zastavice prepisa Predpona je pripeta\n"
+"v polja imena datoteke, Äe je prisotna. Primer uporabe iz arhiva Debian:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Možnosti:\n"
+" -h To besedilo pomoÄi\n"
+" --md5 ustvarjanje nadzorne vsote MD5\n"
+" -s=? datoteka prepisa vira\n"
+" -q tiho\n"
+" -d=? izbere izbirno podatkovno zbirko pomnilnika\n"
+" --no-delink omogoÄi naÄin razhroÅ¡Äevanja razvezovanja\n"
+" --contents nadzira ustvarjanje datoteke vsebine\n"
+" -c=? prebere to nastavitveno datoteko\n"
+" -o=? nastavi poljubno možnost nastavitve"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Nobena izbira se ne ujema"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Nekatere datoteke manjkajo v skupini datotek paketov `%s'"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "Podatkovna zbirka je pokvarjena, datoteka je preimenovana v %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "PZ je star, poskušanje nadgradnje %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Oblika podatkovne zbirke je neveljavna. V kolikor ste nadgradili s starejše "
+"razliÄice apt, podatkovno zbirko odstranite in jo znova ustvarite."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Ni mogoÄe odprti datoteke PZ %s: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Napaka med branjem povezave %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Arhiv nima nadzornega zapisa"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Ni mogoÄe najti kazalke"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Napaka med dodeljevanjem pomnilnika"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Neznan algoritem stiskanja '%s'"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Stisnjen izhod %s potrebuje niz stiskanja"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Ustvarjanje cevi IPC do podopravila je spodletelo"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Vejitev ni uspela"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Podrejeni predmet stiskanja"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Notranja napaka. Ni mogoÄe ustvariti %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "VI podopravila/datoteke je spodletel"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Med raÄunanjem MD5 ni mogoÄe brati"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Ni mogoÄe odpreti %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Slabo oblikovan prepis %s v vrstici %llu Å¡t. 1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Napaka med branjem prepisane datoteke %s"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Slabo oblikovan prepis %s v vrstici %llu Å¡t. 1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Slabo oblikovan prepis %s v vrstici %llu Å¡t. 1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Slabo oblikovan prepis %s v vrstici %llu Å¡t. 3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "O: ni mogoÄe brati mape %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "O: Ni mogoÄe doloÄiti %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "O: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "N: Napake se sklicujejo na datoteko "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Ni mogoÄe razreÅ¡iti %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Hoja drevesa je spodletela"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Ni mogoÄe odprti %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " RazVeži %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Napaka med povezovanjem %s in %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " Dosežena meja RazVezovanja %sB.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Arhiv ni imel polja s paketom"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s nima prepisanega vnosa\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " Vzdrževalec %s je %s in ne %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s nima izvornega vnosa prepisa\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s nima tudi binarnega vnosa prepisa\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "ÄŒakanje na glave"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "Strežnik HTTP je poslal neveljavno glavo odgovora"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Neveljavna vrstica glave"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "Strežnik HTTP je poslal glavo z neveljavno dolžino vsebine"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "Strežnik HTTP je poslal glavo z neveljavnim obsegom vsebine"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Ta strežnik HTTP ima pokvarjen obseg podpore"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Neznana oblika datuma"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "NapaÄni podatki glave"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Povezava ni uspela"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Notranja napaka"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Ni mogoÄe brati podatkovne zbirke %s na CD-ROM-u"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Uporabite apt-cdrom, Äe želite, da APT prepozna CD. apt-get update ne more "
+"sam dodati novih CD-ROM-ov"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "NapaÄen CD-ROM"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Ni mogoÄe odklopiti CD-ROM-a v %s, ker je morda Å¡e v uporabi."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Diska ni mogoÄe najti."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Datoteke ni mogoÄe najti"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Povezovanje z %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Ni mogoÄe ustvariti vtiÄa za %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Ni mogoÄe zaÄeti povezave z %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Ni se mogoÄe povezati z %s:%s (%s). Povezava je zakasnela."
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Spodletelo"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Ni se mogoÄe povezati z %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Povezovanje z %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Ni mogoÄe razreÅ¡iti '%s'"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "ZaÄasna napaka med razreÅ¡evanjem '%s'"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Nekaj Äudnega se je zgodilo med razreÅ¡evanjem '%s:%s' (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Nekaj Äudnega se je zgodilo med razreÅ¡evanjem '%s:%s' (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Ni se mogoÄe povezati z %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "DoloÄitev ni uspela"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Neveljaven URI. Krajevni URI-ji se morajo zaÄeti z //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Prijavljanje"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Ni mogoÄe ugotoviti imena gostitelja"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Ni mogoÄe doloÄiti krajevnega imena"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Strežnik je zavrnil povezavo in sporoÄil: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER je spodletel, strežnik je odgovoril: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS je spodletel, strežnik je odgovoril: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Naveden je bil posredniški strežnik, ne pa tudi prijavni skript. Acquire::"
+"ftp::ProxyLogin je prazen."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Ukaz prijavne skripte '%s' ni uspel, strežnik je odgovoril: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE je spodletel, strežnik je odgovoril: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Povezava je zakasnela"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Strežnik je zaprl povezavo"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Odgovor je prekoraÄil predpomnilnik."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Okvara protokola"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Ni mogoÄe ustvariti vtiÄa"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Ni mogoÄe povezati podatkovnega vtiÄa. Povezava je zakasnela."
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Ni mogoÄe povezat pasivnega vtiÄa."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo ni mogel dobiti posluÅ¡ajoÄega vtiÄa"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Ni mogoÄe povezati vtiÄa"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Ni mogoÄe posluÅ¡ati na vtiÄu"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Ni mogoÄe doloÄiti imena vtiÄa"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Ni mogoÄe poslati ukaza PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Neznan naslov družine %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT ni uspel, strežnik je odgovoril: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Povezava podatkovne vtiÄnice je zakasnela"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Ni mogoÄe sprejeti povezave"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Težava med razprševanjem datoteke"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Ni mogoÄe pridobiti datoteke, strežnik je odgovoril '%s'"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Podatkovna vtiÄ je potekel"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Prenos podatkov ni uspel, strežnik je odgovoril '%s'"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Poizvedba"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Ni mogoÄe klicati "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Najden je bil vsaj en neveljaven podpis."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Notranja napaka: Dober podpis, toda ni mogoÄe doloÄiti podpisa kljuÄa?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Ni mogoÄe izvesti 'apt-key' za preverjanje podpisa (je gnupg nameÅ¡Äen?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Neznana napaka med izvajanjem apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Naslednji podpisi so bili neveljavni:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Naslednjih podpisov ni mogoÄe preveriti, ker javni kljuÄ ni na voljo:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Napaka med pisanjem v datoteko"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Napaka med branjem s strežnika. Oddaljeni del je zaprl povezavo"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Napaka med branjem s strežnika"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Napaka med pisanjem v datoteko"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Izbira ni uspela"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Povezava je zakasnela"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Napaka med pisanjem v izhodno datoteko"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Datoteke zrcalnih strežnikov '%s' ni mogoÄe najti "
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Datoteke zrcalnega strežnika '%s' ni mogoÄe prebrati"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Datoteke zrcalnega strežnika '%s' ni mogoÄe prebrati"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Zrcalni strežnik: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Nastavitev Äasa spremembe je spodletela"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Povezava se je prezgodaj zaprla"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "Prazne datoteke ne morejo biti veljavni arhivi"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Nerešene odvisnosti. Poskusite uporabiti --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Poskusite zagnati 'apt --fix-broken install', Äe želite popraviti "
+#~ "naslednje:"
+
+#~ msgid "(not found)"
+#~ msgstr "(ni najdeno)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Bucika paketa: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "Za naslednje ID-je kljuÄa ni na voljo javnih kljuÄev:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "Mapa %s je odklonjena"
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "odvisnosti %s za %s ni mogoÄe zadovoljiti, ker %s ni dovoljen na paketih "
+#~ "'%s'"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "%s odvisnosti za %s ni mogoÄe zadostiti, ker ni mogoÄe najti paketa %s"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Ni mogoÄe zadostiti %s odvisnosti za %s. NameÅ¡Äen paket %s je preveÄ nov"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "odvisnosti %s za %s ni mogoÄe zadovoljiti, ker je razliÄica kandidata "
+#~ "paketa %s ne more zadostiti zahtev razliÄice"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "odvisnosti %s za %s ni mogoÄe zadovoljiti, ker je razliÄica kandidata "
+#~ "paketa %s nima razliÄice kandidata"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Ni mogoÄe zadostiti %s odvisnosti za %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Odvisnosti za gradnjo %s ni bilo mogoÄe zadostiti."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Napaka med odvezovanjem %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Napaka med odvezovanjem %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Uporaba: apt-cache [možnosti] ukaz\n"
+#~ " apt-cache [možnosti] show paket1 [paket2 ...]\n"
+#~ "\n"
+#~ "apt-cache je orodje nizke ravni za poizvedbo podatkov\n"
+#~ "iz binarni datotek predpomnilnika APT\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Možnosti:\n"
+#~ " -h To besedilo pomoÄi.\n"
+#~ " -p=? Predpomnilnik paketov.\n"
+#~ " -s=? Predpomnilnik izvorne kode.\n"
+#~ " -q OnemogoÄi kazalnik napredka.\n"
+#~ " -i Pokaže le pomembne odvisnosti za neujemajoÄ ukaz.\n"
+#~ " -c=? Prebere to nastavitveno datoteko\n"
+#~ " -o=? Nastavi poljubno možnost nastavitve, na primer -o dir::cache=/tmp\n"
+#~ "Za veÄ podrobnosti si oglejte strani priroÄnikov apt-cache(8) in apt."
+#~ "conf(5).\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "Možnosti:\n"
+#~ " -h To besedilo pomoÄi.\n"
+#~ " -q Izhod se beleži - brez kazalnika napredka\n"
+#~ " -qq Brez izhoda razen napak\n"
+#~ " -s Ne naredi niÄesar. Samo napiÅ¡e kaj bi bilo narejeno.\n"
+#~ " -f Prebere/zapiÅ¡e oznako roÄno/samodejno za dano datoteko\n"
+#~ " -c=? Prebere to nastavitveno datoteko\n"
+#~ " -o=? Nastavi poljubno nastavitveno možnost, na primer -o dir::cache=/"
+#~ "tmp\n"
+#~ "Za veÄ podrobnosti si oglejte strani priroÄnika apt-mark(8) in apt-"
+#~ "conf(5)."
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Možnosti:\n"
+#~ " -h To besedilo pomoÄi.\n"
+#~ " -c=? Prebere podano datoteko z nastavitvami\n"
+#~ " -o=? Nastavi poljubno nastavitveno možnost, na primer. -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "Možnosti:\n"
+#~ " -h To besedilo pomoÄi.\n"
+#~ " -q Izhod se beleži - brez kazalnika napredka\n"
+#~ " -qq Brez izhoda razen napak\n"
+#~ " -s Ne naredi niÄesar. Samo napiÅ¡e kaj bi bilo narejeno.\n"
+#~ " -f Prebere/zapiÅ¡e oznako roÄno/samodejno za dano datoteko\n"
+#~ " -c=? Prebere to nastavitveno datoteko\n"
+#~ " -o=? Nastavi poljubno nastavitveno možnost, na primer -o dir::cache=/"
+#~ "tmp\n"
+#~ "Za veÄ podrobnosti si oglejte strani priroÄnika apt-mark(8) in apt-"
+#~ "conf(5)."
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Uporaba: apt-sortpkgs [možnosti] dat1 [dat2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs je preprosto orodje za razvrÅ¡Äanje paketnih datotek. Možnost "
+#~ "-s\n"
+#~ "doloÄa vrsto datoteke.\n"
+#~ "\n"
+#~ "Možnosti:\n"
+#~ " -h to besedilo pomoÄi\n"
+#~ " -s uporabi razvrÅ¡Äanje izvornih datotek\n"
+#~ " -c=? Prebere podano datoteko z nastavitvami\n"
+#~ " -o=? Nastavi poljubno nastavitveno možnost, npr. -o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Podrejeno opravilo ni uspelo"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr ""
+#~ "Potrebno je navesti vsaj en paket, za katerega želite dobiti izvorno kodo"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Ni mogoÄe ustvariti pip"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Ni mogoÄe izvesti gzip "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s za %s kodno preveden na %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Ustvarjanje DATOTEKE* ni uspelo"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Slabo oblikovana vrstica %lu v seznamu virov %s (razÄlenitev URI)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "Slabo oblikovana vrstica %lu na seznamu virov %s ([možnosti] ni mogoÄe "
+#~ "razÄleniti)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr ""
+#~ "Slabo oblikovana vrstica %lu na seznamu virov %s ([možnost] prekratka)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr ""
+#~ "Slabo oblikovana vrstica %lu na seznamu vrstic %s ([%s] ni dodelitev)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "Slabo oblikovana vrstica %lu na seznamu virov %s ([%s] nima kljuÄa)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "Slabo oblikovana vrstica %lu na seznamu virov %s ([%s] kljuÄ %s nima "
+#~ "vrednosti)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Slabo oblikovana vrstica %lu v seznamu virov %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Slabo oblikovana vrstica %lu v seznamu virov %s (distribucija)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Slabo oblikovana vrstica %lu v seznamu virov %s (razÄlenitev URI)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr ""
+#~ "Slabo oblikovana vrstica %lu v seznamu virov %s (absolutna distribucija)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr ""
+#~ "Slabo oblikovana vrstica %lu v seznamu virov %s (razÄlenitev distribucije)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "Paketa %s %s ni bilo mogoÄe najti med obdelavo odvisnosti datotek"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Ni mogoÄe doloÄiti seznama izvornih paketov %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Zbiranje dobaviteljev datotek"
+
+#, fuzzy
+#~ msgid "Does not start with a cleartext signature"
+#~ msgstr "Datoteka %s se ne zaÄne s Äisto podpisanim sporoÄilom"
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Ni mogoÄe najti vsote razprÅ¡evanja za '%s' v datoteki Release"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Ponudnikov blok %s ne vsebuje prstnega podpisa"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Celotna velikost z odvisnostmi razliÄice: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Nimate dovolj prostora na %s"
+
+#~ msgid "Done"
+#~ msgstr "Opravljeno"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "V %s ni nameÅ¡Äenih zbirk kljuÄev."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Notranja napaka zaradi AllUpgrade."
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s ni veljaven paket DEB."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Uporabljanje CD-ROM-ove priklopne toÄke %s\n"
+#~ "Priklapljanje CD-ROM-a\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "%s ni mogoÄe zakrpati z mmap in z uporabo opravila datotek - popravek je "
+#~ "videti pokvarjen"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "%s ni mogoÄe zakrpati z mmap (toda napaka ni specifiÄna za mmap) - "
+#~ "popravek je videti pokvarjen."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr "Prezri nerazpoložljiv cilj izdaje '%s' paketa '%s'"
+
+#~ msgid "Downloading %s %s"
+#~ msgstr "Prejemanje %s %s"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr "To ni veljaven arhiv DEB, nima Älana '%s', '%s' ali '%s'"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "Neujemanje vsote MD5"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Ni bilo mogoÄe najti datoteke za paket %s. Morda boste morali roÄno "
+#~ "popraviti ta paket."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Ni mogoÄe pisati dnevnika, openpty() je spodletelo (/dev/pts ni "
+#~ "prklopljen?)\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Preskok neobstojeÄe datoteke %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Odstranitev %s ni uspela"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Ni mogoÄe ustvariti %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "DoloÄitev %sinfo ni uspela"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr "Podatki in zaÄasne mape morajo biti na istem datoteÄnem sistemu"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Sprememba v skrbnikovo mapo %sinfo ni uspela"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Notranja napaka med dobivanjem imena paketa"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Branje seznama datotek"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Odpiranje datoteke s seznamom '%sinfo/%s' ni uspelo. ÄŒe ne morete "
+#~ "obnoviti datoteke, jo izpraznite in takoj znova namestite enako razliÄico "
+#~ "paketa!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Branje datoteke s seznamom %sinfo/%s ni uspelo"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Notranja napaka med dobivanjem vozliÅ¡Äa"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Odpiranje datoteke z odklonom %sdiversions ni uspelo"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Datoteka z odklonom je pokvarjena"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Neveljavna vrstica v datoteki z odklonom: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Notranja napaka med dodajanjem odklona"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Najprej se mora zaÄeti predpomnilnik paketov"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Napaka med iskanjem paketa: glava, odmik %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "NapaÄna izbira ConfFile v datoteki stanja. Odmik %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Napaka med razÄlenjevanjem MD5. Odmik %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Ni mogoÄe spremeniti v %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Ni mogoÄe najti veljavne nadzorne datoteke"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Ni mogoÄe odprti cevi za %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Napaka med branjem iz opravila %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Dobljena je ena vrstica glave preko %u znakov"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "NapaÄno oblikovana prepisana vrstica %s %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "NapaÄno oblikovana prepisana vrstica %s %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "NapaÄno oblikovanje prepisane vrstice %s %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "program za razširjanje"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "branje, Å¡e vedno %lu za branje, a nobeden ni ostal"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "pisanje, Å¡e vedno %lu za pisanje, a ni mogoÄe"
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Prišlo je do napake med obdelavo %s (Nov paket)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Prišlo je do napake med obdelavo %s (Uporabi paket 1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Med obdelovanjem %s je prišlo do napake (NovOpisDatoteke1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Prišlo je do napake med obdelavo %s (Uporabi paket 2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "PriÅ¡lo je do napake med obdelavo %s (Nova razliÄica datoteke 1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Med obdelovanjem %s je priÅ¡lo do napake (NovaRazliÄica%d)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Prišlo je do napake med obdelavo %s (Uporabi paket 3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Med obdelovanjem %s je prišlo do napake (NovOpisDatoteke2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Prišlo je do napake med obdelavo %s (Najdi paket)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Prišlo je do napake med obdelavo %s (Zberi dobavitelje datotek)"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "Ni mogoÄe izvesti takojÄ…nje nastavitve že razpakiranega '%s'. Oglejte si "
+#~ "man 5 apt.conf pod APT::Takojšnja-Nastavitev za podrobnosti"
diff --git a/po/sv.po b/po/sv.po
new file mode 100644
index 000000000..52e54243d
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,4394 @@
+# Advanced Package Tool - APT message translation catalog
+# Swedish messages
+# Copyright © 2002-2015 Free Software Foundation, Inc.
+# This file is distributed under the same license as the apt package.
+# Peter Karlsson <peterk@debian.org>, 2002-2008.
+# Daniel Nylander <po@danielnylander.se>, 2005-2010.
+# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2015.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2015-08-19 21:33+0200\n"
+"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
+"Language-Team: Swedish <debian-l10n-swedish@debian.org>\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 1.8.3\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Ogiltig arkivsignatur"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Fel vid läsning av rubrik för arkivdel"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Ogiltig arkivdelsrubrik %s"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Ogiltigt arkivdelsrubrik"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Arkivet är för kort"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Misslyckades med att läsa arkivrubriker"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Kan inte hitta autentiseringspost för: %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Skadat arkiv"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Tar-kontrollsumma misslyckades, arkivet skadat"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Okänd TAR-rubriktyp %u, del %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Detta är inte ett giltigt DEB-arkiv, delen â€%s†saknas"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Internt fel, kunde inta hitta delen %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Kunde inte tolka control-filen"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Misslyckades med att skriva filen %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Misslyckades med att stänga filen %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Sökvägen %s är för lång"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Packar upp %s flera gånger"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "Katalogen %s är omdirigerad"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Paketet försöker att skriva till omdirigeringsmålet %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Omdirigeringssökvägen är för lång"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Misslyckades med att ta status på %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Misslyckades med att byta namn på %s till %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "Katalogen %s ersätts av en icke-katalog"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Misslyckades med att hitta noden i sin hashkorg"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Sökvägen är för lång"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Skriv över paketträff utan version för %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Filen %s/%s skriver över den i paketet %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Kunde inte läsa %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Kunde inte ta status på %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode anropat på fortfarande länkad nod"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Misslyckades med att hitta hash-elementet!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Misslyckades med att allokera omdirigering"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Internt fel i AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Försöker att skriva över en omdirigering, %s -> %s och %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Omdirigeringen %s -> %s inlagd två gånger"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Duplicerad konfigurationsfil %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "FörrÃ¥det â€%s†är inte längre signerat."
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "FörrÃ¥det â€%s†är inte längre signerat."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+"Detta är vanligen inte tillåtet, men flaggan Acquire::"
+"AllowDowngradeToInsecureRepositories gavs för att åsidosätta detta."
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "FörrÃ¥det â€%s†är inte längre signerat."
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "FörrÃ¥det â€%s†är inte längre signerat."
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "FörrÃ¥det â€%s†är inte längre signerat."
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Misslyckades med att läsa länken %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Hash-kontrollsumman stämmer inte"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "namnbyte misslyckades, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Storleken stämmer inte"
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr "Ogiltigt filformat"
+
+#: apt-pkg/acquire-item.cc
+msgid "Signature error"
+msgstr "Signaturfel"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+"Klartextsignerad fil är inte giltig, fick â€%s†(kräver nätverket "
+"autentisering?)"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"Ett fel inträffade vid verifiering av signaturen. Förrådet har inte "
+"uppdaterats och de tidigare indexfilerna kommer att användas. GPG-fel: %s: "
+"%s\n"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "GPG-fel: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"Kunde inte hitta förväntad post â€%s†i Release-fil (Felaktig sources.list-"
+"post eller fel format på fil)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"Release-fil för %s har gått ut (ogiltig sedan %s). Uppdateringar för detta "
+"förråd kommer inte verkställas."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Konflikt i distribution: %s (förväntade %s men fick %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Jag kunde inte hitta någon fil för paketet %s. Detta kan betyda att du "
+"manuellt måste reparera detta paket (på grund av saknad arkitektur)."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr "Kan inte hitta en källa för att hämta version â€%s†av â€%sâ€"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr "Paketindexfilerna är skadade. Inget â€Filename:â€-fält för paketet %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Ändringslogg för %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Metoddrivrutinen %s kunde inte hittas."
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr "Är paketet %s installerat?"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Metoden %s startade inte korrekt"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "Mata in skivan med etiketten â€%s†i enheten â€%s†och tryck pÃ¥ [Retur]."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Listkatalogen %spartial saknas."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Arkivkatalogen %spartial saknas."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "Kunde inte låsa katalogen %s"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+#| msgid ""
+#| "Can't drop privileges for downloading as file '%s' couldn't be accessed "
+#| "by user '%s'."
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+"Kan inte släppa privilegier för hämtning eftersom filen â€%s†inte kunde "
+"kommas Ã¥t av användaren â€%sâ€."
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr "Rensning av %s stöds inte"
+
+# Felmeddelande för misslyckad chdir
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Kunde inte byta till %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Hämtar fil %li av %li (%s återstår)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Hämtar fil %li av %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"Paketet %s måste installeras om, men jag kan inte hitta något arkiv för det."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Fel, pkgProblemResolver::Resolve genererade avbrott; detta kan bero på "
+"tillbakahållna paket."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "Kunde inte korrigera problemen, du har hållit tillbaka trasiga paket."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "Paketlistan eller statusfilen kunde inte tolkas eller öppnas."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Du kan möjligen rätta till problemet genom att köra â€apt-get updateâ€"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Listan över källor kunde inte läsas."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Fel vid kompilering av reguljärt uttryck - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "UtgÃ¥van â€%s†för â€%s†hittades inte"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Version â€%s†för â€%s†hittades inte"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Kunde inte hitta funktionen â€%sâ€"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Kunde inte hitta nÃ¥got paket enligt reguljära uttrycket â€%sâ€"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Kunde inte hitta nÃ¥got paket med sökmönstret â€%sâ€"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Kunde inte hitta paketet %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+"Kan inte välja versioner frÃ¥n paketet â€%s†eftersom det är helt virtuellt"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"Kan inte välja senaste version frÃ¥n paketet â€%s†eftersom det är helt "
+"virtuellt"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+"Kan inte välja kandidatversion från paketet %s eftersom det inte har någon "
+"kandidat"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"Kan inte välja installerad version från paketet %s eftersom det inte är "
+"installerat"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"Kan inte välja installerad version eller kandidatversion frÃ¥n paketet â€%s†"
+"eftersom det inte har någon av dem"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Rad %u är för lång i källistan %s."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Avmonterar cd-rom…\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Använder cd-rom-monteringspunkten %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Väntar på skiva…\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Monterar cd-rom…\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Identifierar… "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Lagrad etikett: %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Söker efter indexfiler på skivan…\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Hittade %zu paketindex, %zu källkodsindex, %zu översättningsindex och %zu "
+"signaturer\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Kunde inte hitta några paketfiler. Detta är kanske inte en Debian-skiva "
+"eller felaktig arkitektur?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Hittade etiketten â€%sâ€\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Namnet är ogiltigt, försök igen.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Denna skiva heter: \n"
+"â€%sâ€\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Kopierar paketlistor…"
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Skriver ny källista\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Poster i källistan för denna skiva:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Kunde inte ta status på %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Kunde inte ta status på monteringspunkten %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Kunde inte ta status på cd-romen"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Kommandoradsflaggan â€%c†[frÃ¥n %s] är inte känd."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Förstår inte kommandoradsflaggan %s"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Kommandoradsflaggan %s är inte boolesk"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Flaggan %s kräver ett argument."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+"Flaggan %s: Den angivna konfigurationsposten måste innehålla ett =<värde>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Flaggan %s kräver ett heltalsargument, inte â€%sâ€"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Flaggan â€%s†är för lÃ¥ng"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "FörstÃ¥r inte %s, prova med â€true†eller â€falseâ€."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Felaktig åtgärd %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Okänd typförkortning: â€%câ€"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Öppnar konfigurationsfilen %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Syntaxfel %s:%u: Block börjar utan namn."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Syntaxfel %s:%u: Felformat märke"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Syntaxfel %s:%u: Överflödigt skräp efter värde"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "Syntaxfel %s:%u: Direktiv kan endast utföras på toppnivån"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Syntaxfel %s:%u: För många nästlade inkluderingar"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Syntaxfel %s:%u: Inkluderad härifrån"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Syntaxfel %s:%u: Direktivet â€%s†stöds inte"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr "Syntaxfel %s:%u: clear-direktivet kräver ett flaggträd som argument"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Syntaxfel %s:%u: Överflödigt skräp vid filens slut"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Problem med att avlänka filen %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Använder inte låsning för skrivskyddade låsfilen %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Kunde inte öppna låsfilen %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Använder inte låsning för nfs-monterade låsfilen %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Kunde inte erhålla låset %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr "Lista över filer kan inte skapas eftersom â€%s†inte är en katalog"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr "Ignorerar â€%s†i katalogen â€%s†eftersom det inte är en vanlig fil"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+"Ignorerar filen â€%s†i katalogen â€%s†eftersom den inte har en filändelse"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"Ignorerar filen â€%s†i katalogen â€%s†eftersom den har en ogiltig filändelse"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Väntade på %s men den fanns inte där"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Underprocessen %s råkade ut för ett segmenteringsfel."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Underprocessen %s tog emot signal %u."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Underprocessen %s svarade med en felkod (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Underprocessen %s avslutades oväntat"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Läsfel"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Skrivfel"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Problem med att stänga gzip-filen %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Misslyckades med att skapa underprocess-IPC"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Misslyckades med att starta komprimerare "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Kunde inte öppna filen %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Kunde inte öppna filhandtag %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "läsning, har fortfarande %llu att läsa men ingenting finns kvar"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "skrivning, har fortfarande %llu att skriva men kunde inte"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Problem med att stänga filen %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Problem med att byta namn på filen %s till %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Problem med att synkronisera filen"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Kunde inte anropa mkstemp för %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Kunde inte skriva till %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Kan inte utföra mmap på en tom fil"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Kunde inte utföra mmap på %llu byte"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Kunde inte duplicera filhandtag %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "Kunde inte stänga mmap"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "Kunde inte synkronisera mmap"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Kunde inte utföra mmap på %lu byte"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Misslyckades med att kapa av filen"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"Dynamisk MMap fick slut på utrymme. Öka storleken för APT::Cache-Start. "
+"Aktuellt värde: %lu. (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"Kunde inte öka storleken för MMap eftersom gränsen på %lu byte redan har "
+"uppnåtts."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Kunde inte öka storleken för MMap eftersom automatisk växt har inaktiverats "
+"av användaren."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s… Fel!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s… Färdig"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr "…"
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s… %u%%"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%lid %lih %limin %lis"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%lih %limin %lis"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%limin %lis"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%lis"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Valet %s hittades inte"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Kunde inte tolka Release-filen %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Inga sektioner i Release-filen %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Ingen Hash-post i Release-filen %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Ogiltig â€%sâ€-post i Release-filen %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Kunde inte tolka paketfilen %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"Kunde inte låsa administrationskatalogen (%s). Använder en annan process den?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Kunde inte låsa administrationskatalogen (%s). Är du root?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"dpkg avbröts. Du mÃ¥ste köra â€%s†manuellt för att korrigera problemet. "
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Inte låst"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "Installerar %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Konfigurerar %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Tar bort %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "Tar bort hela %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "Uppmärksammar försvinnandet av %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Kör efterinstallationsutlösare %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "Installerade %s"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Katalogen â€%s†saknas"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "Kunde inte öppna filen â€%sâ€"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Förbereder %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Packar upp %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Förbereder konfigurering av %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Förbereder borttagning av %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "Tog bort %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Förbereder borttagning av hela %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "Tog bort hela %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Can not write log (%s)"
+msgstr "Kan inte skriva logg (%s)"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr "Är /dev/pts monterad?"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "Åtgärden avbröts innan den kunde slutföras"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr "Ingen apport-rapport skrevs därför att MaxReports redan har uppnåtts"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "beroendeproblem - lämnar okonfigurerad"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Ingen apport-rapport skrevs därför att felmeddelandet indikerar att det är "
+"ett efterföljande fel från ett tidigare problem."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Ingen apport-rapport skrevs därför att felmeddelandet indikerar att "
+"diskutrymmet är slut"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Ingen apport-rapport skrevs därför att felmeddelandet indikerar att minnet "
+"är slut"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Ingen apport-rapport skrevs därför att felmeddelandet indikerar ett problem "
+"på det lokala systemet"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"Ingen apport-rapport skrevs därför att felmeddelandet indikerar ett in-/ut-"
+"fel för dpkg"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Bygger beroendeträd"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Kandiderande versioner"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Beroendegenerering"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Läser tillståndsinformation"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Misslyckades med att öppna StateFile %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Misslyckades med att skriva temporär StateFile %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "Skicka scenario till lösare"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "Skicka förfrågan till lösare"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "Förbered för att motta lösning"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr "Extern lösare misslyckades utan något informativt felmeddelande"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "Kör extern lösare"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Execute external planner"
+msgstr "Kör extern lösare"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send request to planner"
+msgstr "Skicka förfrågan till lösare"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send scenario to planner"
+msgstr "Skicka scenario till lösare"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "External planner failed without a proper error message"
+msgstr "Extern lösare misslyckades utan något informativt felmeddelande"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "Skrev %i poster.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "Skrev %i poster med %i saknade filer.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "Skrev %i poster med %i filer som inte stämmer\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "Skrev %i poster med %i saknade filer och %i filer som inte stämmer\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "Kan inte hitta autentiseringspost för: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Hash-kontrollsumman stämmer inte för: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Paketsystemet â€%s†stöds inte"
+
+#
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Kunde inte fastställa en lämplig paketsystemstyp"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr "Förlopp: [%3i%%]"
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "Kör dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"Kunde inte genomföra omedelbar konfiguration pÃ¥ â€%sâ€. Se man 5 apt.conf "
+"under APT::Immediate-Configure för information. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "Kunde inte konfigurera â€%sâ€. "
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"För att genomföra installationen måste det systemkritiska paketet %s "
+"tillfälligt tas bort på grund av en beroendespiral i Conflicts/Pre-Depends. "
+"Detta är oftast en dålig idé, men om du verkligen vill göra det kan du "
+"aktivera flaggan â€APT::Force-LoopBreakâ€."
+
+# Felmeddelande
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Paketcachen är tom"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Paketcachefilen är skadad"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Paketcachefilens version är inkompatibel"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Denna APT saknar stöd för versionssystemet â€%sâ€"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Paketcachen byggdes för andra arkitekturer: %s gentemot %s"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Paketcachefilen är skadad, den är för liten"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Beroende av"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Förberoende av"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Föreslår"
+
+# "Konfliktar"?
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Står i konflikt med"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Rekommenderar"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Ersätter"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Gör sönder"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Utökar"
+
+# "Föråldrar"?
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Föråldrar"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "viktigt"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "nödvändigt"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "standard"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "extra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "valfri"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Cachen har ett inkompatibelt versionssystem"
+
+# NewPackage etc. är funktionsnamn
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Fel uppstod vid hantering av %s (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "Grattis, du överskred antalet paketnamn som denna APT kan hantera."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Grattis, du överskred antalet versioner som denna APT kan hantera."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Grattis, du överskred antalet beskrivningar som denna APT kan hantera."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "Grattis, du överskred antalet beroenden som denna APT kan hantera."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Läser paketlistor"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "In-/utfel vid lagring av källcache"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Indexfiler av typ â€%s†stöds inte"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"Värdet â€%s†är ogiltigt för APT::Default-Release eftersom ingen sÃ¥dan utgÃ¥va "
+"är tillgänglig i källorna"
+
+# "Package" är en sträng i konfigurationsfilen
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Ogiltig post i konfigurationsfilen %s, â€Packageâ€-rubriken saknas"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Förstod inte nåltypen %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Prioritet ej angiven (eller noll) för nål"
+
+# parametrar: filnamn, radnummer
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Felaktig åsidosättning %s rad %llu (%s)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Öppnar %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Rad %u i källistan %s har fel format (typ)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Typ â€%s†är inte känd pÃ¥ rad %u i källistan %s"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Rad %u i källistan %s har fel format (typ)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Typen â€%s†är inte känd i post %u i källistan %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Du mÃ¥ste lägga till nÃ¥gra â€sourceâ€-URI:er i din sources.list"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Misslyckades med att hämta %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Vissa indexfiler kunde inte hämtas. De har ignorerats eller så har de gamla "
+"använts istället."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Beräknar uppgradering"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Bra:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Läs:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Ign:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Fel:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Hämtade %sB på %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Arbetar]"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Mediabyte: Mata in skivan med etiketten\n"
+" â€%sâ€\n"
+"i enheten â€%s†och tryck pÃ¥ [Retur]\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Korrigerar beroenden…"
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " misslyckades."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Kunde inte korrigera beroenden"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Kunde inte minimera uppgraderingsuppsättningen"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Färdig"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "Du bör köra â€apt --fix-broken install†för att korrigera dessa."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Otillfredsställda beroenden. Prova med â€apt --fix-broken install†utan paket "
+"(eller ange en lösning)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr "Sorterar"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Observera, väljer \"%s\" för funktionen \"%s\"\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Observera, väljer \"%s\" för det reguljära uttrycket \"%s\"\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Observera, väljer \"%s\" för det reguljära uttrycket \"%s\"\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Paketet %s är ett virtuellt paket som tillhandahålls av:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr "[installerat]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [Inte kandidatversion]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Du bör uttryckligen ange ett att installera."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Paketet %s är inte tillgängligt, men ett annat paket hänvisar till det.\n"
+"Det kan betyda att paketet saknas, har blivit föråldrat eller endast\n"
+"är tillgängligt från andra källor\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Dock kan följande paket ersätta det:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Paketet \"%s\" har ingen installationskandidat"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Virtuella paket som \"%s\" kan inte tas bort\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"Paketet â€%s†är inte installerat, sÃ¥ det tas inte bort. Menade du â€%sâ€?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Paketet â€%s†är inte installerat, sÃ¥ det tas inte bort\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Observera, väljer \"%s\" istället för \"%s\"\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Denna APT har Speciella Ko-Krafter."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr "Denna APT-hjälpare har speciella Meep-krafter."
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Inga paket hittades"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "VARNING: Följande paket kunde inte autentiseras!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Autentiseringsvarning åsidosatt.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "NÃ¥gra av paketen kunde inte autentiseras"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Installera dessa paket utan verifiering?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Problem har uppstått och -y användes utan --force-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Kunde inte fastställa ledigt utrymme i %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Du har inte tillräckligt mycket ledigt utrymme i %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Kunde inte låsa hämtningskatalogen"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Några paket kunde inte installeras. Det kan betyda att du har begärt\n"
+"en omöjlig situation eller, om du använder den instabila utgåvan\n"
+"att några nödvändiga paket ännu inte har skapats eller flyttats\n"
+"ut frÃ¥n â€Incomingâ€."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Följande information kan vara till hjälp för att lösa situationen:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Trasiga paket"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Vissa arkiv kunde inte hämtas. Prova att köra â€apt-get update†eller med --"
+"fix-missing."
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Internt fel. InstallPackages anropades med trasiga paket!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Paketen mÃ¥ste tas bort men â€Remove†är inaktiverat."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Problem har uppstått och -y användes utan --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Problem har uppstått och -y användes utan --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr "Problem har uppstått och -y användes utan --force-yes"
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Internt fel. Sorteringen färdigställdes inte"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Konstigt… storlekarna stämde inte överens, skicka e-post till apt@packages."
+"debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Behöver hämta %sB/%sB arkiv.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Behöver hämta %sB arkiv.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr ""
+"Efter denna åtgärd kommer ytterligare %sB utrymme användas på disken.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Efter denna åtgärd kommer %sB att frigöras på disken.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "â€Trivial Only†angavs, men detta är inte en trivial handling."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Ja, gör som jag säger!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Du är på väg att göra någonting som kan vara skadligt\n"
+"Skriv in frasen â€%s†för att fortsätta\n"
+" ?] "
+
+# Visas då man svarar nej
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Avbryter."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Vill du fortsätta?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Misslyckades med att hämta vissa filer"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Hämtningen färdig i â€endast-hämtaâ€-läge"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing och mediabyte stöds inte för tillfället"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Kunde inte korrigera saknade paket."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Avbryter installationen."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"Följande paket har försvunnit från ditt system eftersom\n"
+"alla filer har skrivits över av andra paket:"
+msgstr[1] ""
+"Följande paket har försvunnit från ditt system eftersom\n"
+"alla filer har skrivits över av andra paket:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Observera: Detta sker med automatik och vid behov av dpkg."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+"Det är inte meningen att vi ska ta bort något, kan inte starta AutoRemover"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Hmm, det verkar som AutoRemover förstörde något som verkligen\n"
+"inte skulle hända. Skicka in en felrapport mot paketet apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Internt fel, AutoRemover förstörde något"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"Följande paket har installerats automatiskt och är inte längre nödvändigt:"
+msgstr[1] ""
+"Följande paket har installerats automatiskt och är inte längre nödvändiga:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] ""
+"%lu paket blev installerat automatiskt och är inte längre nödvändigt.\n"
+msgstr[1] ""
+"%lu paket blev installerade automatiskt och är inte längre nödvändiga.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Använd â€%s†för att ta bort det."
+msgstr[1] "Använd â€%s†för att ta bort dem."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Följande ytterligare paket kommer att installeras:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Föreslagna paket:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Rekommenderade paket:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+"Hoppar över %s, det är redan installerat och uppgradering har inte valts.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"Hoppar över %s, det är inte installerat och endast uppgraderingar har "
+"begärts.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "Ominstallation av %s är inte möjlig, det kan inte hämtas.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s är redan den senaste versionen.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s är satt till manuellt installerad.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Valde version â€%s†(%s) för â€%sâ€\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Valde version â€%s†(%s) för â€%s†pÃ¥ grund av â€%sâ€\n"
+
+# Förloppsindikator då lista skapas.
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr "Listar"
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+"Det finns %i ytterligare version. Använd växeln â€-a†för att se den."
+msgstr[1] ""
+"Det finns %i ytterligare versioner. Använd växeln â€-a†för att se dem."
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"OBSERVERA: Detta är endast en simulation!\n"
+" %s behöver root-privilegier för verklig körning.\n"
+" Tänk också på att låsningen är inaktiverad, så\n"
+" förlita dig inte på relevansen till den verkliga situationen!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr "okänd"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr "[installerat,uppgraderingsbart till: %s]"
+
+#: apt-private/private-output.cc
+msgid "[installed,local]"
+msgstr "[installerat,lokalt]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr "[installerat,automatiskt borttagbart]"
+
+#: apt-private/private-output.cc
+msgid "[installed,automatic]"
+msgstr "[installerat,automatiskt]"
+
+#: apt-private/private-output.cc
+msgid "[installed]"
+msgstr "[installerat]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr "[uppgraderingsbart från: %s]"
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr "[kvarvarande-inställning]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "men %s är installerat"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "men %s kommer att installeras"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "men det kan inte installeras"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "men det är ett virtuellt paket"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "men det kommer inte att installeras"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "men det är inte installerat"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " eller"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Följande paket har beroenden som inte kan tillfredsställas:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Följande NYA paket kommer att installeras:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Följande paket kommer att TAS BORT:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Följande paket har hållits tillbaka:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Följande paket kommer att uppgraderas:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Följande paket kommer att NEDGRADERAS:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Följande tillbakahållna paket kommer att ändras:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (på grund av %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"VARNING: Följande systemkritiska paket kommer att tas bort.\n"
+"Detta bör INTE genomföras såvida du inte vet exakt vad du gör!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu att uppgradera, %lu att nyinstallera, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu att installera om, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu att nedgradera, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu att ta bort och %lu att inte uppgradera.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu är inte helt installerade eller borttagna.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[J/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[j/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "J"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "Du måste ange minst ett sökmönster"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr "Fulltextsökning"
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Paketfilen %s är inte synkroniserad."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] "Det finns %i ytterligare post. Använd växeln â€-a†för att se den."
+msgstr[1] "Det finns %i ytterligare poster. Använd växeln â€-a†för att se dem."
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr "inte ett riktigt paket (virtuellt)"
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "â€Packageâ€-filer:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "Cachen är inte synkroniserad, kan inte korsreferera en paketfil"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Fastnålade paket:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Installerad: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Kandidat: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(ingen)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Versionstabell:"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Kan inte hitta nÃ¥got paket för arkitekturen â€%sâ€"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Kan inte hitta nÃ¥got paket â€%s†med versionen â€%sâ€"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Kunde inte hitta nÃ¥got paket â€%s†med utgÃ¥van â€%sâ€"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Väljer â€%s†som källkodspaket istället för â€%sâ€\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "Kan inte hitta versionen â€%s†av paketet â€%sâ€"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Du måste ange minst ett paket att hämta källkod för"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Kunde inte hitta något källkodspaket för %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"OBSERVERA: paketering av â€%s†hanteras i versionshanteringssystemet â€%s†"
+"på:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Använd:\n"
+"%s\n"
+"för att hämta de senaste (möjligen inte utgivna) uppdateringarna av "
+"paketet.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Hoppar över redan hämtade filen â€%sâ€\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Behöver hämta %sB/%sB källkodsarkiv.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Behöver hämta %sB källkodsarkiv.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Hämtar källkoden %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Misslyckades med att hämta vissa arkiv."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Packar inte upp redan uppackad källkod i %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Uppackningskommandot â€%s†misslyckades.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Försäkra dig om att paketet â€dpkg-dev†är installerat.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Byggkommandot â€%s†misslyckades.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Kunde inte hämta information om byggberoenden för %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s har inga byggberoenden.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr "Du måste ange minst ett paket att kontrollera byggberoenden för"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"Ingen arkitekturinformation tillgänglig för %s. Se apt.conf(5) APT::"
+"Architectures för inställning"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr "Observera, använder katalogen â€%s†för att fÃ¥ byggberoendena\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Observera, använder filen â€%s†för att fÃ¥ byggberoendena\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Misslyckades med att behandla byggberoenden"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Misslyckades med att tolka %s. Redigera igen? "
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr "Din â€%sâ€-fil ändrades, kör â€apt-get updateâ€."
+
+#: apt-private/private-unmet.cc
+#, fuzzy, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr ""
+"Paketet %s med version %s har ett beroende som inte kan tillfredsställas:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Uppdateringskommandot tar inga argument"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+"%i paket kan uppgraderas. Kör â€apt list --upgradable†för att se det.\n"
+msgstr[1] ""
+"%i paket kan uppgraderas. Kör â€apt list --upgradable†för att se dem.\n"
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr "Alla paket är uppdaterade."
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "Uppdateringskommandot tar inga argument"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Totalt antal paketnamn: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Totala paketstrukturer: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Vanliga paket: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Helt virtuella paket: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Enstaka virtuella paket: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Blandade virtuella paket: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Saknade: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Totalt antal olika versioner: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Totalt antal olika beskrivningar: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Totalt antal beroenden: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Totalt antal version/filrelationer: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Totalt antal beskrivning/filrelationer: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Totalt antal tillhandahållningsmarkeringar: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Totalt antal sökmönstersträngar: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Totalt bortkastat utrymme: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Totalt utrymme som kan redogöras för: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr "Detta kommando är förÃ¥ldrat. Använd â€apt-mark showauto†istället."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Visa källkodsposter"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Sök i paketlistan med ett reguljärt uttryck"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Visa rå information om beroenden för ett paket"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Visa information om omvända beroenden för ett paket"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Visa en läsbar post för paketet"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Lista namnen på alla paket i systemet"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Visa policyinställningar"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Ange ett namn för denna skiva, exempelvis â€Debian 5.0.3 Disk 1â€"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Mata in en skiva i enheten och tryck på [Retur]"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Misslyckades med att montera â€%s†till â€%sâ€"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+"Ingen cd-rom kunde upptäckas automatiskt eller hittas på standardplatsen för "
+"montering.\n"
+"Du kan pröva flaggan --cdrom för att ställa in monteringsplatsen för cd-"
+"rom.\n"
+"Se â€man apt-cdrom†för vidare information om automatisk upptäckt samt "
+"monteringsplats för cd-rom."
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Upprepa proceduren för resten av cd-skivorna i din uppsättning."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Argumenten gavs inte parvis"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Användning: apt-config [flaggor] kommando\n"
+"\n"
+"apt-config är ett enkelt verktyg för att läsa APTs konfigurationsfil\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Användning: apt-extracttemplates fil1 [fil2 …]\n"
+"\n"
+"apt-extracttemplates är ett verktyg för att hämta ut konfigurations- \n"
+"och mallinformation från paket\n"
+"\n"
+"Flaggor:\n"
+" -h Denna hjälptext.\n"
+" -t Ställ in temporärkatalogen.\n"
+" -c=? Läs denna konfigurationsfil.\n"
+" -o=? Ställ in en godtycklig konfigurationsflagga, t.ex -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Kan inte ta reda på debconf-version. Är debconf installerat?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Kunde inte hitta paketet %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s är satt till automatiskt installerad.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Detta kommando är förÃ¥ldrat. Använd â€apt-mark auto†och â€apt-mark manual†"
+"istället."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Internt fel, problemlösaren förstörde någonting"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Moduler som stöds:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Användning: apt-get [flaggor] kommando\n"
+" apt-get [flaggor] install|remove paket1 [paket2 …]\n"
+" apt-get [flaggor] source paket1 [paket2 …]\n"
+"\n"
+"apt-get är ett enkelt kommandoradsgränssnitt för att hämta och installera\n"
+"paket. De mest använda kommandona är â€update†och â€installâ€.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Hämta nya paketlistor"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Genomför en uppgradering"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Installera nya paket (paket är libc6, inte libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Ta bort paket"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Ta bort paket och konfigurationsfiler"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Ta automatiskt bort alla oanvända paket"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Uppgradering av distributionen, se apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Följ valen från dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Tillfredsställ byggberoenden för källkodspaket"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Ta bort hämtade arkivfiler"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Ta bort gamla hämtade arkivfiler"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Kontrollera att det inte finns några trasiga beroenden"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Hämta källkodsarkiv"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "Hämta det binära paketet till aktuell katalog"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "Hämta och visa ändringslogg för det angivna paketet"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr "Behöver en URL som argument"
+
+#: cmdline/apt-helper.cc
+msgid "Must specify at least one pair url/filename"
+msgstr "Du måste ange minst ett par bestående av url och filnamn"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr "Hämtning misslyckades"
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+"Användning: apt-helper [flaggor] kommando\n"
+" apt-helper [flaggor] download-file uri målsökväg\n"
+"\n"
+"apt-helper är en intern hjälpare för apt\n"
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr "hämta angiven uri till målsökvägen"
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr "hitta proxy med hjälp av apt.conf"
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Användning: apt-internal-solver\n"
+"\n"
+"apt-internal-solver är ett gränssnitt för att använda den interna\n"
+"lösaren som en extern lösare för APT-familjen för felsökning eller\n"
+"liknande\n"
+"\n"
+"Flaggor:\n"
+" -h Denna hjälptext.\n"
+" -q Loggbar utmatning - ingen förloppsindikator\n"
+" -c=? Läs denna konfigurationsfil.\n"
+" -o=? Ställ in en godtycklig konfigurationsflagga, t.ex -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Användning: apt-internal-solver\n"
+"\n"
+"apt-internal-solver är ett gränssnitt för att använda den interna\n"
+"lösaren som en extern lösare för APT-familjen för felsökning eller\n"
+"liknande\n"
+"\n"
+"Flaggor:\n"
+" -h Denna hjälptext.\n"
+" -q Loggbar utmatning - ingen förloppsindikator\n"
+" -c=? Läs denna konfigurationsfil.\n"
+" -o=? Ställ in en godtycklig konfigurationsflagga, t.ex -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "%s kan inte markeras eftersom det inte är installerat.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s var redan satt till manuellt installerad.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s var redan satt till automatiskt installerad.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s var redan tillbakahållet.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s var redan ej tillbakahållet.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "Körning av dpkg misslyckades. Är du root?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "%s är satt till att hållas tillbaka.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Avbröt tillbakahållning av %s.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"Användning: apt-mark [flaggor] {auto|manual} paket1 [paket2 …]\n"
+"\n"
+"apt-mark är ett enkelt kommandoradsgränssnitt för att markera\n"
+"paket som manuellt eller automatiskt installerade. Det kan också\n"
+"lista markeringar.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "Markera de angivna paketen som automatiskt installerade"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "Markera de angivna paketen som manuellt installerade"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr "Markera ett paket som tillbakahållet"
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr "Avmarkera ett paket som är markerat som tillbakahållet"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr "Visa listan över automatiskt installerade paket"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr "Visa listan över manuellt installerade paket"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr "Visa listan över tillbakahållna paket"
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Okänd paketpost!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr "lista paket baserat på paketnamn"
+
+#: cmdline/apt.cc
+msgid "search in package descriptions"
+msgstr "sök i paketbeskrivningar"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr "visa detaljer för paket"
+
+#. package stuff
+#: cmdline/apt.cc
+msgid "install packages"
+msgstr "installera paket"
+
+#: cmdline/apt.cc
+msgid "remove packages"
+msgstr "ta bort paket"
+
+#. system wide stuff
+#: cmdline/apt.cc
+msgid "update list of available packages"
+msgstr "uppdatera lista över tillgängliga paket"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr "uppgradera systemet genom att installera/uppgradera paket"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr "uppgradera systemet genom att ta bort/installera/uppgradera paket"
+
+#. misc
+#: cmdline/apt.cc
+msgid "edit the source information file"
+msgstr "redigera källinformationsfilen"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Felaktig standardinställning!"
+
+#: dselect/install dselect/update
+msgid "Press [Enter] to continue."
+msgstr "Tryck på [Retur] för att fortsätta."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Vill du ta bort eventuellt tidigare hämtade .deb-filer?"
+
+# Note to translators: The following four messages belong together. It doesn't
+# matter where sentences start, but it has to fit in just these four lines, and
+# at only 80 characters per line, if possible.
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "Det uppstod fel vid uppackning. Paketen som blev installerade kommer"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr ""
+"att konfigureras. Detta kan resultera i dubbletta fel eller fel orsakade"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "av saknade beroenden. Detta är okej, endast felen ovanför detta"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr "meddelande är viktiga. Försök korrigera dem och kör [I]nstallera igen"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Sammanfogar tillgänglig information"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Listan över filtillägg för Packages är för lång"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Fel vid behandling av katalogen %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Listan över filtillägg för Sources är för lång"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Fel vid skrivning av rubrik till innehållsfil"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Fel vid behandling av innehållet %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Användning: apt-ftparchive [flaggor] kommando\n"
+"Kommandon: packages binärsökväg [åsidosättningsfil [sökvägsprefix]]\n"
+" sources källsökväg [åsidosättningsfil [sökvägsprefix]]\n"
+" contents sökväg\n"
+" release sökväg\n"
+" generate konfiguration [grupper]\n"
+" clean konfiguration\n"
+"\n"
+"apt-ftparchive genererar indexfiler för Debianarkiv. Det stöder många\n"
+"former av generering, allt från helautomatiserat till funktionella\n"
+"ersättningar till dpkg-scanpackages och dpkg-scansources\n"
+"\n"
+"apt-ftparchive skapar Package-filer från ett träd med .deb-filer.\n"
+"Packagefilen innehåller alla styrfälten från paketen samt MD5-hashvärdet\n"
+"och filstorlek. En åsidosättningsfil stöds för att tvinga värden på "
+"Priority\n"
+"och Section.\n"
+"\n"
+"På samma sätt skapar apt-ftparchive Sources-filer från ett träd med\n"
+".dsc-filer. Flaggan --source-override kan användas för att ange en\n"
+"åsidosättningsfil för källkoden.\n"
+"\n"
+"Kommandona â€packages†och â€sources†bör köras frÃ¥n roten pÃ¥ trädet.\n"
+"Binärsökvägen bör peka på basen på den rekursiva sökningen och\n"
+"åsidosättningsfilen bör innehålla de framtvingade flaggorna.\n"
+"Sökvägsprefixet läggs till i filnamnsfälten om det anges. Ett exempel på\n"
+"hur programmet kan användas från Debianarkivet:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Flaggor:\n"
+" -h Denna hjälptext\n"
+" --md5 Kontrollera generering av MD5\n"
+" -s=? Källåsidosättningsfil\n"
+" -q Tyst\n"
+" -d=? Väljer den valfria cachedatabasen\n"
+" --no-delink Aktivera â€delinkningâ€-felsökningsläget\n"
+" --contents Styr skapande av contents-fil\n"
+" -c=? Läs denna konfigurationsfil\n"
+" -o=? Ställ in en godtycklig konfigurationsflagga"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Inga val träffades"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "NÃ¥gra filer saknas i paketfilsgruppen â€%sâ€"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "DB var skadad, filen omdöpt till %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "DB är gammal, försöker uppgradera %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"DB-formatet är ogiltigt. Ta bort och återskapa databasen om du uppgraderar "
+"från en äldre version av apt."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Kunde inte öppna DB-filen %s: %s"
+
+#: ftparchive/cachedb.cc
+msgid "Failed to read .dsc"
+msgstr "Misslyckades med att läsa .dsc"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Arkivet har ingen styrpost"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Kunde inte få tag i någon markör"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Misslyckades med att allokera minne"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Okänd komprimeringsalgoritm â€%sâ€"
+
+# ???
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Komprimerade utdata %s behöver en komprimeringsuppsättning"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Misslyckades med att skapa IPC-rör till underprocess"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Misslyckades med att grena process"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Underprocess för komprimering"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Internt fel, misslyckades med att skapa %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "In/ut för underprocess/fil misslyckades"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Misslyckades med att läsa vid beräkning av MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Kunde inte öppna %s"
+
+# parametrar: filnamn, radnummer
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Felaktig åsidosättning %s rad %llu (%s)"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Misslyckades med att läsa åsidosättningsfilen %s"
+
+# parametrar: filnamn, radnummer
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Felaktig åsidosättning %s rad %llu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Felaktig åsidosättning %s rad %llu #2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Felaktig åsidosättning %s rad %llu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "V: Kunde inte läsa katalogen %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "V: Kunde inte ta status på %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "F: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "V: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "F: Felen gäller filen "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Misslyckades med att slå upp %s"
+
+# ???
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Trädvandring misslyckades"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Misslyckades med att öppna %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " Avlänka %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Misslyckades med att länka %s till %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " Avlänkningsgränsen på %sB nåddes.\n"
+
+# Fält vid namn "Package"
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Arkivet har inget package-fält"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s har ingen post i åsidosättningsfilen\n"
+
+# parametrar: paket, ny, gammal
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " ansvarig för paketet %s är %s ej %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s har ingen källåsidosättningspost\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s har heller ingen binär åsidosättningspost\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Väntar på rubriker"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "Http-servern sände ett ogiltigt svarshuvud"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Felaktig rubrikrad"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "Http-servern sände en ogiltig Content-Length-rubrik"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "Http-servern sände en ogiltig Content-Range-rubrik"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Den här http-serverns stöd för delvis hämtning fungerar inte"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Okänt datumformat"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Felaktiga data i huvud"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Anslutningen misslyckades"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+"Inaktiverade automatiskt %s på grund av felaktigt svar från server/proxy. "
+"(man 5 apt.conf)"
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Internt fel"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Kunde inte läsa cd-rom-databasen %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Använd apt-cdrom för att APT ska känna igen denna cd. apt-get update kan "
+"inte användas för att lägga till skivor"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Fel cd-rom"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Kunde inte avmontera cd-rom:en i %s, den kanske fortfarande används."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Skivan hittades inte."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Filen hittades inte"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Ansluter till %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+# [f]amilj, [t]yp, [p]rotokoll
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Kunde inte skapa ett uttag (socket) för %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Kunde inte initiera anslutningen till %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Kunde inte ansluta till %s:%s (%s), anslutningen överskred tidsgräns"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Misslyckades"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Kunde inte ansluta till %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Ansluter till %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Kunde inte slÃ¥ upp â€%sâ€"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Temporärt fel vid uppslagning av â€%sâ€"
+
+# Okänd felkod; %i = koden
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Systemfel när â€%s:%s†slogs upp"
+
+# Okänd felkod; %i = koden
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "NÃ¥got konstigt hände när â€%s:%s†slogs upp (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Kunde inte ansluta till %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Misslyckades med att ta status"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Ogiltig URI, lokala URI:er får inte börja med //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Loggar in"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Kunde inte fastställa namnet på partnern"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Kunde inte fastställa det lokala namnet"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Servern nekade anslutningen och sade: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER misslyckades, servern sade: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS misslyckades, servern sade: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"En mellanserver (proxy) angavs men inget inloggningsskript, Acquire::ftp::"
+"ProxyLogin är tom."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Kommandot â€%s†i inloggningsskriptet misslyckades, servern sade: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE misslyckades, servern sade: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Tidsgränsen för anslutningen överskreds"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Servern stängde anslutningen"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Ett svar spillde bufferten."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Protokollet skadat"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Kunde inte skapa ett uttag (socket)"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Kunde inte ansluta datauttaget (socket), inget svar inom tidsgräns"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Kunde inte ansluta passivt uttag (socket)."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo kunde inte få tag i ett lyssnande uttag (socket)"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Kunde inte binda ett uttag (socket)"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Kunde inte lyssna på uttaget (socket)"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Kunde inte fastställa uttagets namn (socket)"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Kunde inte sända PORT-kommando"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Okänd adressfamilj %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT misslyckades, servern sade: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Anslutet datauttag (socket) fick inte svar inom tidsgränsen"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Kunde inte ta emot anslutningen"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Problem med att lägga filen till hashtabellen"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Kunde inte hämta filen, servern sade â€%sâ€"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Datauttag (socket) fick inte svar inom tidsgränsen"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Dataöverföringen misslyckades, servern sade â€%sâ€"
+
+# Statusmeddelande, byter från substantiv till verb
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Frågar"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Kunde inte starta "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, fuzzy, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+"Klartextsignerad fil är inte giltig, fick â€%s†(kräver nätverket "
+"autentisering?)"
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Minst en ogiltig signatur träffades på."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Internt fel: Korrekt signatur men kunde inte fastställa nyckelns "
+"fingeravtryck?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Kunde inte köra â€apt-key†för att verifiera signatur (är gnupg installerad?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Okänt fel vid körning av apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Följande signaturer är ogiltiga:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Följande signaturer kunde inte verifieras för att den öppna nyckeln inte är "
+"tillgänglig:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Fel vid skrivning till filen"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Fel vid läsning från server: Andra änden stängde förbindelsen"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Fel vid läsning från server"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Fel vid skrivning till fil"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "â€Select†misslyckades"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Anslutningen överskred tidsgränsen"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Fel vid skrivning till utdatafil"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Ingen spegelfil â€%s†hittades "
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Kan inte läsa spegelfilen â€%sâ€"
+
+#: methods/mirror.cc
+#, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Ingen post funnen i spegelfilen â€%sâ€"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Spegel: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Misslyckades med att ställa in ändringstid"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Anslutningen stängdes i förtid"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "Tomma filer kan inte vara giltiga arkiv"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Otillfredsställda beroenden. Prova med --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr "Du bör köra â€apt --fix-broken install†för att korrigera dessa:"
+
+#~ msgid "(not found)"
+#~ msgstr "(hittades inte)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Paketnålning: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr ""
+#~ "Det finns ingen öppen nyckel tillgänglig för följande nyckel-id:n:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "FörrÃ¥det â€%s†är inte längre signerat."
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "%s-beroendet på %s kan inte tillfredsställas eftersom %s inte är tillåtet "
+#~ "pÃ¥ â€%sâ€-paket"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "%s-beroendet på %s kan inte tillfredsställas eftersom paketet %s inte kan "
+#~ "hittas"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Misslyckades med att tillfredsställa %s-beroendet för %s: Det "
+#~ "installerade paketet %s är för nytt"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "%s-beroendet på %s kan inte tillfredsställas eftersom kandidatversionen "
+#~ "av paketet %s inte tillfredsställer versionskraven"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "%s-beroendet på %s kan inte tillfredsställas eftersom paketet %s inte har "
+#~ "någon kandidatversion"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Misslyckades med att tillfredsställa %s-beroendet för %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Byggberoenden för %s kunde inte tillfredsställas."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Problem med att länka ut %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Misslyckades med att länka ut %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Användning: apt-cache [flaggor] kommando\n"
+#~ " apt-cache [flaggor] show paket1 [paket2 …]\n"
+#~ "\n"
+#~ "apt-cache är ett lågnivåverktyg för att hämta information\n"
+#~ "från APTs binära cachefiler\n"
+
+#~ msgid "Commands:"
+#~ msgstr "Kommandon:"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Flaggor:\n"
+#~ " -h Denna hjälptext.\n"
+#~ " -p=? Paketcachen.\n"
+#~ " -s=? Källcachen.\n"
+#~ " -q Inaktivera förloppsindikatorn.\n"
+#~ " -i Visa endast viktiga beroenden för â€unmetâ€-kommandot.\n"
+#~ " -c=? Läs denna konfigurationsfil.\n"
+#~ " -o=? Ställ in en godtycklig konfigurationsflagga, t.ex -o dir::cache=/"
+#~ "tmp\n"
+#~ "Se manualsidorna för apt-cache(8) och apt.conf(5) för mer information.\n"
+
+#~ msgid ""
+#~ "Usage: apt [options] command\n"
+#~ "\n"
+#~ "CLI for apt.\n"
+#~ msgstr ""
+#~ "Användning: apt [flaggor] kommando\n"
+#~ "\n"
+#~ "Kommandoradsgränssnitt för apt.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "Flaggor:\n"
+#~ " -h Denna hjälptext.\n"
+#~ " -q Loggbar utdata - ingen förloppsindikator\n"
+#~ " -qq Ingen utdata förutom vid fel\n"
+#~ " -s Gör ingenting, simulera vad som skulle hända.\n"
+#~ " -f läs/skriv markering som automatiskt/manuellt installerad i angiven "
+#~ "fil\n"
+#~ " -c=? Läs denna konfigurationsfil\n"
+#~ " -o=? Ställ in en godtycklig konfigurationsflagga, t.ex -o dir::cache=/"
+#~ "tmp\n"
+#~ "Se manualsidorna för apt-mark(8) och apt.conf(5) för mer information."
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Flaggor:\n"
+#~ " -h Denna hjälptext.\n"
+#~ " -c=? Läs denna konfigurationsfil.\n"
+#~ " -o=? Ställ in en godtycklig konfigurationsflagga, t.ex -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "Flaggor:\n"
+#~ " -h Denna hjälptext.\n"
+#~ " -q Loggbar utdata - ingen förloppsindikator\n"
+#~ " -qq Ingen utdata förutom vid fel\n"
+#~ " -s Gör ingenting, simulera vad som skulle hända.\n"
+#~ " -f läs/skriv markering som automatiskt/manuellt installerad i angiven "
+#~ "fil\n"
+#~ " -c=? Läs denna konfigurationsfil\n"
+#~ " -o=? Ställ in en godtycklig konfigurationsflagga, t.ex -o dir::cache=/"
+#~ "tmp\n"
+#~ "Se manualsidorna för apt-mark(8) och apt.conf(5) för mer information."
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Användning: apt-sortpkgs [flaggor] fil1 [fil2 …]\n"
+#~ "\n"
+#~ "apt-sortpkgs är ett enkelt verktyg för att sortera paketfiler. Flaggan\n"
+#~ "-s anges för att ange filens typ.\n"
+#~ "\n"
+#~ "Flaggor:\n"
+#~ " -h Denna hjälptext.\n"
+#~ " -s Använd källkodsfilssortering.\n"
+#~ " -c=? Läs denna konfigurationsfil.\n"
+#~ " -o=? Ställ in en godtycklig konfigurationsflagga, t.ex -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid "Use --allow-insecure-repositories to force the update"
+#~ msgstr "Använd --allow-insecure-repositories för att tvinga uppdateringen"
+
+#~ msgid ""
+#~ "The data from '%s' is not signed. Packages from that repository can not "
+#~ "be authenticated."
+#~ msgstr ""
+#~ "Data frÃ¥n â€%s†är inte signerat. Paket frÃ¥n det förrÃ¥det kan inte "
+#~ "autentiseras."
+
+#~ msgid ""
+#~ "The repository '%s' does not have a Release file. This is deprecated, "
+#~ "please contact the owner of the repository."
+#~ msgstr ""
+#~ "FörrÃ¥det â€%s†har inte en Release-fil. Detta är förÃ¥ldrat, kontakta "
+#~ "förrådets ägare."
+
+#~ msgid "Child process failed"
+#~ msgstr "Underprocess misslyckades"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Du måste ange minst ett par bestående av url och filnamn"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Misslyckades med att skapa rör"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Misslyckades med att köra gzip "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s för %s kompilerad den %s %s\n"
+
+#, fuzzy
+#~ msgid "There are problems and -y was used without --force-yes"
+#~ msgstr "Problem har uppstått och -y användes utan --force-yes"
+
+#, fuzzy
+#~ msgid "The following extra packages will be installed:"
+#~ msgstr "Följande NYA paket kommer att installeras:"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Misslyckades med att skapa FILE*"
+
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Post %u i källistan %s har fel format (URI-tolkning)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr "Rad %lu i källistan %s har fel format ([option] ej tolkningsbar)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "Rad %lu i källistan %s har fel format ([option] för kort)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "Rad %lu i källistan %s har fel format ([%s] är inte en tilldelning)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "Rad %lu i källistan %s har fel format ([%s] saknar nyckel)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "Rad %lu i källistan %s har fel format ([%s] nyckeln %s saknar värde)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Rad %lu i källistan %s har fel format (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Rad %lu i källistan %s har fel format (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Rad %lu i källistan %s har fel format (URI-tolkning)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "Rad %lu i källistan %s har fel format (Absolut dist)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "Rad %lu i källistan %s har fel format (dist-tolkning)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "Paketet %s %s hittades inte när filberoenden hanterades"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Kunde inte ta status på källkodspaketlistan %s"
+
+# Bättre ord?
+#~ msgid "Collecting File Provides"
+#~ msgstr "Samlar filtillhandahållningar"
+
+#~ msgid "Does not start with a cleartext signature"
+#~ msgstr "Börjar inte med en klartextsignatur"
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Kunde inte hitta hash-kontrollsumma för â€%s†i Release-filen"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Leverantörsblocket %s saknar fingeravtryck"
+
+#, fuzzy
+#~ msgid "Command line option '%c' [from %s] is not known."
+#~ msgstr "Kommandoradsflaggan %s är inte boolesk"
+
+#, fuzzy
+#~ msgid "Command line option %s is not understood"
+#~ msgstr "Kommandoradsflaggan %s är inte boolesk"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Totalt utrymme för versionsberoenden: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Du har inte tillräckligt mycket ledigt utrymme i %s"
+
+#~ msgid "Done"
+#~ msgstr "Färdig"
+
+# Måste vara tre bokstäver(?)
+# "Hit" = aktuell version är fortfarande giltig
+#~ msgid "Hit "
+#~ msgstr "Bra "
+
+# "Get:" = hämtar ny version
+#~ msgid "Get:"
+#~ msgstr "Läs:"
+
+# "Ign" = hoppar över
+#~ msgid "Ign "
+#~ msgstr "Ign "
+
+# "Err" = fel vid hämtning
+#~ msgid "Err "
+#~ msgstr "Fel "
+
+#~ msgid "Unable to parse package file %s (2)"
+#~ msgstr "Kunde inte tolka paketfilen %s (2)"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Ingen nyckelring installerad i %s."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Internt fel, AllUpgrade förstörde något"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s är inte ett giltigt DEB-paket."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Använder cd-rom-monteringspunkten %s\n"
+#~ "Monterar cd-rom\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Kunde inte patcha %s med mmap och med filoperationsanvändning - patchen "
+#~ "verkar vara skadad."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Kunde inte patcha %s med mmap (men inga mmap-specifika fel) - patchen "
+#~ "verkar vara skadad."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr "Ignorera otillgängliga målutgåvan \"%s\" av paketet \"%s\""
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Detta är inte ett giltigt DEB-arkiv, \"%s\", \"%s\" och \"%s\" saknas"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5-kontrollsumman stämmer inte"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Jag kunde inte hitta någon fil för paketet %s. Detta kan betyda att du "
+#~ "manuellt måste reparera detta paket."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Kan inte skriva loggfil, openpty() misslyckades (/dev/pts inte "
+#~ "monterad?)\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Hoppar över icke-existerande filen %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Misslyckades med att ta bort %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Kunde inte skapa %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Misslyckades att ta status på %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr "Katalogerna info och temp måste vara på samma filsystem"
+
+# Felmeddelande för misslyckad chdir
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Misslyckades att växla till adminkatalogen %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Internt fel när namn på Package-fil skulle hämtas"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Läser fillista"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Misslyckades med att öppna listfilen \"%sinfo/%s\". Om du inte kan "
+#~ "Ã¥terskapa filen, skapa en tom och installera omedelbart om samma version "
+#~ "av paketet!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Misslyckades med att läsa listfilen %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Internt fel när en nod skulle hämtas"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Misslyckades med att öppna omdirigeringsfilen %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Omdirigeringsfilen är skadad"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Felaktig rad i omdirigeringsfilen: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Internt fel när en omdirigering skulle läggas till"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Paketcachen måste först initieras"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Misslyckades med att hitta Package:-rubrik, position %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Felaktig ConfFile-sektion i statusfilen. Position %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Fel vid tolkning av MD5. Position %lu"
+
+# chdir
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Kunde inte byta till %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Misslyckades med att hitta en giltig control-fil"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Kunde inte öppna rör för %s"
+
+# %s = programnamn
+#~ msgid "Read error from %s process"
+#~ msgstr "Läsfel från %s-processen"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Fick en ensam rubrikrad på %u tecken"
+
+#~ msgid "Note: This is done automatic and on purpose by dpkg."
+#~ msgstr "Observera: Detta sker med automatik och vid behov av dpkg."
+
+# parametrar: filnamn, radnummer
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Felaktig override %s rad %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Felaktig override %s rad %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Felaktig override %s rad %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "uppackare"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "läsning, har fortfarande %lu att läsa men ingenting finns kvar"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "skrivning, har fortfarande %lu att skriva men kunde inte"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "Kunde inte genomföra omedelbar konfiguration på redan uppackade \"%s\". "
+#~ "Se man 5 apt.conf under APT::Immediate-Configure för information."
+
+# NewPackage etc. är funktionsnamn
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Fel uppstod vid hantering av %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Fel uppstod vid hantering av %s (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Fel uppstod vid hantering av %s (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Fel uppstod vid hantering av %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Fel uppstod vid hantering av %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Fel uppstod vid behandling av %s (NewVersion%d)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Fel uppstod vid hantering av %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Fel uppstod vid hantering av %s (NewFileDesc2)"
+
+# NewPackage etc. är funktionsnamn
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Fel uppstod vid hantering av %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "Fel uppstod vid hantering av %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Internt fel, kunde inte hitta del"
+
+#~ msgid "Internal error, group '%s' has no installable pseudo package"
+#~ msgstr "Internt fel, gruppen \"%s\" har inget installerbart pseudo-paket"
+
+#~ msgid "Release file expired, ignoring %s (invalid since %s)"
+#~ msgstr "Release-filen har gått ut, ignorerar %s (ogiltig sedan %s)"
+
+#~ msgid "E: Too many keyrings should be passed to gpgv. Exiting."
+#~ msgstr "F: För många nyckelringar skulle skickas till gpgv. Avslutar."
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr ""
+#~ "E: Argumentslistan från Acquire::gpgv::Options är för lång. Avslutar."
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "Rad %u i källistan %s har fel format (leverantörs-id)"
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "Fel uppstod vid hantering av %s (NewVersion2)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "Kunde inte komma åt nyckelring: \"%s\""
+
+#~ msgid "Could not patch file"
+#~ msgstr "Kunde inte lägga på programfix på filen"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
diff --git a/po/th.po b/po/th.po
new file mode 100644
index 000000000..8389c9481
--- /dev/null
+++ b/po/th.po
@@ -0,0 +1,4202 @@
+# Thai translation of apt.
+# Copyright (C) 2007-2014 Free Software Foundation, Inc.
+# This file is distributed under the same license as the apt package.
+# Theppiak Karoonboonyanan <thep@debian.org>, 2007-2008, 2012, 2014.
+# Arthit Suriyawongkul <arthit@gmail.com>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2014-12-12 13:00+0700\n"
+"Last-Translator: Theppitak Karoonboonyanan <thep@debian.org>\n"
+"Language-Team: Thai <thai-l10n@googlegroups.com>\n"
+"Language: th\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "เอà¸à¸¥à¸±à¸à¸©à¸“์ของà¹à¸Ÿà¹‰à¸¡à¸ˆà¸±à¸”เà¸à¹‡à¸šà¹„ม่ถูà¸à¸•à¹‰à¸­à¸‡"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะอ่านข้อมูลส่วนหัวของสมาชิà¸à¹à¸Ÿà¹‰à¸¡à¸ˆà¸±à¸”เà¸à¹‡à¸š"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "ข้อมูลส่วนหัว %s ของสมาชิà¸à¹à¸Ÿà¹‰à¸¡à¸ˆà¸±à¸”เà¸à¹‡à¸šà¹„ม่ถูà¸à¸•à¹‰à¸­à¸‡"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "ข้อมูลส่วนหัวของสมาชิà¸à¹à¸Ÿà¹‰à¸¡à¸ˆà¸±à¸”เà¸à¹‡à¸šà¹„ม่ถูà¸à¸•à¹‰à¸­à¸‡"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "à¹à¸Ÿà¹‰à¸¡à¸ˆà¸±à¸”เà¸à¹‡à¸šà¸ªà¸±à¹‰à¸™à¹€à¸à¸´à¸™à¹„ป"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "อ่านข้อมูลส่วนหัวของà¹à¸Ÿà¹‰à¸¡à¸ˆà¸±à¸”เà¸à¹‡à¸šà¹„ม่สำเร็จ"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "ไม่พบระเบียนยืนยันความà¹à¸—้สำหรับ: %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "à¹à¸Ÿà¹‰à¸¡à¸ˆà¸±à¸”เà¸à¹‡à¸šà¹€à¸ªà¸µà¸¢à¸«à¸²à¸¢"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "checksum ของà¹à¸Ÿà¹‰à¸¡ tar ผิดพลาด à¹à¸Ÿà¹‰à¸¡à¸ˆà¸±à¸”เà¸à¹‡à¸šà¹€à¸ªà¸µà¸¢à¸«à¸²à¸¢"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "พบชนิด %u ของข้อมูลส่วนหัว TAR ที่ไม่รู้จัภที่สมาชิภ%s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "à¹à¸Ÿà¹‰à¸¡à¸™à¸µà¹‰à¹„ม่ใช่à¹à¸žà¸à¹€à¸à¸ˆ DEB ที่ใช้à¸à¸²à¸£à¹„ด้ ขาดสมาชิภ'%s'"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "ข้อผิดพลาดภายใน: ไม่พบสมาชิภ%s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "ไม่สามารถà¹à¸ˆà¸‡à¹à¸Ÿà¹‰à¸¡à¸„วบคุมได้"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "ไม่สามารถเขียนà¹à¸Ÿà¹‰à¸¡ %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "ไม่สามารถปิดà¹à¸Ÿà¹‰à¸¡ %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "พาธ %s ยาวเà¸à¸´à¸™à¹„ป"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "พยายามà¹à¸•à¸à¹à¸žà¸à¹€à¸à¸ˆ %s มาà¸à¸à¸§à¹ˆà¸²à¸«à¸™à¸¶à¹ˆà¸‡à¸„รั้ง"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "ไดเรà¸à¸—อรี %s ถูภdivert"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "à¹à¸žà¸à¹€à¸à¸ˆà¸™à¸µà¹‰à¸žà¸¢à¸²à¸¢à¸²à¸¡à¹€à¸‚ียนลงปลายทางของà¸à¸²à¸£à¹€à¸šà¸™à¹à¸Ÿà¹‰à¸¡ %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "พาธของà¸à¸²à¸£à¹€à¸šà¸™à¹à¸Ÿà¹‰à¸¡à¸¢à¸²à¸§à¹€à¸à¸´à¸™à¹„ป"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "stat %s ไม่สำเร็จ"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "ไม่สามารถเปลี่ยนชื่อ %s ไปเป็น %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "ไดเรà¸à¸—อรี %s à¸à¸³à¸¥à¸±à¸‡à¸ˆà¸°à¸–ูà¸à¹à¸—นที่ด้วยสิ่งที่ไม่ใช่ไดเรà¸à¸—อรี"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "หาโหนดใน bucket ของà¹à¸®à¸Šà¹„ม่พบ"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "พาธยาวเà¸à¸´à¸™à¹„ป"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "พบà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่เขียนทับโดยไม่มีข้อมูลรุ่นสำหรับ %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "à¹à¸Ÿà¹‰à¸¡ %s/%s เขียนทับà¹à¸Ÿà¹‰à¸¡à¹ƒà¸™à¹à¸žà¸à¹€à¸à¸ˆ %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "ไม่สามารถอ่าน %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "ไม่สามารถ stat %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode ถูà¸à¹€à¸£à¸µà¸¢à¸à¹ƒà¸Šà¹‰à¸à¸±à¸šà¹‚หนดที่ยังลิงà¸à¹Œà¸­à¸¢à¸¹à¹ˆ"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "หาสมาชิà¸à¹ƒà¸™à¸•à¸²à¸£à¸²à¸‡à¹à¸®à¸Šà¹„ม่สำเร็จ!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "จองเนื้อที่สำหรับà¸à¸²à¸£à¹€à¸šà¸™à¹à¸Ÿà¹‰à¸¡à¹„ม่สำเร็จ"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "ข้อผิดพลาดภายในที่ AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "พยายามเขียนทับà¸à¸²à¸£à¹€à¸šà¸™à¹à¸Ÿà¹‰à¸¡: %s -> %s à¸à¸±à¸š %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "เพิ่มà¸à¸²à¸£à¹€à¸šà¸™à¹à¸Ÿà¹‰à¸¡ %s -> %s ซ้ำสอง"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "à¹à¸Ÿà¹‰à¸¡à¸„่าตั้ง %s/%s ซ้ำ"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "ไดเรà¸à¸—อรี %s ถูภdivert"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "ไดเรà¸à¸—อรี %s ถูภdivert"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "ไดเรà¸à¸—อรี %s ถูภdivert"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "ไดเรà¸à¸—อรี %s ถูภdivert"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "ไดเรà¸à¸—อรี %s ถูภdivert"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "readlink %s ไม่สำเร็จ"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "ผลรวมà¹à¸®à¸Šà¹„ม่ตรงà¸à¸±à¸™"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "เปลี่ยนชื่อไม่สำเร็จ: %s (%s -> %s)"
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "ขนาดไม่ตรงà¸à¸±à¸™"
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr "รูปà¹à¸šà¸šà¸‚องà¹à¸Ÿà¹‰à¸¡à¹„ม่ถูà¸à¸•à¹‰à¸­à¸‡"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "à¸à¸²à¸£à¹€à¸‚ียนข้อมูลผิดพลาด"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+"à¹à¸Ÿà¹‰à¸¡à¸—ี่เซ็นà¸à¸³à¸à¸±à¸šà¸„รอบข้อความมีเนื้อหาไม่ถูà¸à¸•à¹‰à¸­à¸‡ ได้รับผลลัพธ์ "
+"'%s' (เครือข่ายต้องยืนยันตัวบุคคลหรือไม่?)"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"เà¸à¸´à¸”ข้อผิดพลาดขณะตรวจสอบลายเซ็น จะไม่ปรับข้อมูลคลังà¹à¸žà¸à¹€à¸à¸ˆà¸™à¸µà¹‰ à¹à¸¥à¸°à¸ˆà¸°à¹ƒà¸Šà¹‰à¹à¸Ÿà¹‰à¸¡à¸”ัชนีเà¸à¹ˆà¸² "
+"ข้อผิดพลาดจาภGPG: %s: %s\n"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "ข้อผิดพลาดจาภGPG: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"ไม่พบรายà¸à¸²à¸£ '%s' ที่ต้องà¸à¸²à¸£à¹ƒà¸™à¹à¸Ÿà¹‰à¸¡ Release (รายà¸à¸²à¸£ sources.list ไม่ถูà¸à¸•à¹‰à¸­à¸‡ "
+"หรือà¹à¸Ÿà¹‰à¸¡à¸œà¸´à¸”รูปà¹à¸šà¸š)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"à¹à¸Ÿà¹‰à¸¡ Release สำหรับ %s หมดอายุà¹à¸¥à¹‰à¸§ (ตั้งà¹à¸•à¹ˆ %s ที่à¹à¸¥à¹‰à¸§) จะไม่ใช้รายà¸à¸²à¸£à¸›à¸£à¸±à¸šà¸£à¸¸à¹ˆà¸™à¸•à¹ˆà¸²à¸‡à¹† "
+"ของคลังà¹à¸žà¸à¹€à¸à¸ˆà¸™à¸µà¹‰"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "ชุดจัดà¹à¸ˆà¸à¸‚ัดà¹à¸¢à¹‰à¸‡à¸à¸±à¸™: %s (ต้องà¸à¸²à¸£ %s à¹à¸•à¹ˆà¸žà¸š %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr "ไม่พบà¹à¸Ÿà¹‰à¸¡à¸ªà¸³à¸«à¸£à¸±à¸šà¹à¸žà¸à¹€à¸à¸ˆ %s คุณอาจต้องà¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¹à¸žà¸à¹€à¸à¸ˆà¸™à¸µà¹‰à¹€à¸­à¸‡ (ไม่มี arch)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr "ไม่พบà¹à¸«à¸¥à¹ˆà¸‡à¸—ี่จะดาวน์โหลดรุ่น '%s' ของ '%s' ได้"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr "à¹à¸Ÿà¹‰à¸¡à¸”ัชนีà¹à¸žà¸à¹€à¸à¸ˆà¹€à¸ªà¸µà¸¢à¸«à¸²à¸¢ ไม่มีข้อมูล Filename: (ชื่อà¹à¸Ÿà¹‰à¸¡) สำหรับà¹à¸žà¸à¹€à¸à¸ˆ %s"
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "ปูมà¸à¸²à¸£à¹à¸à¹‰à¹„ขสำหรับ %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "ไม่พบไดรเวอร์สำหรับวิธีà¸à¸²à¸£ %s"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr "ได้ติดตั้งà¹à¸žà¸à¹€à¸à¸ˆ %s ไว้หรือไม่?"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "ไม่สามารถเรียà¸à¸—ำงานวิธีà¸à¸²à¸£ %s"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "à¸à¸£à¸¸à¸“าใส่à¹à¸œà¹ˆà¸™à¸Šà¸·à¹ˆà¸­: '%s' ลงในไดรว์ '%s' à¹à¸¥à¹‰à¸§à¸à¸” enter"
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "ไม่มีไดเรà¸à¸—อรีรายชื่อà¹à¸žà¸à¹€à¸à¸ˆ %spartial"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "ไม่มีไดเรà¸à¸—อรีà¹à¸žà¸à¹€à¸à¸ˆ %spartial"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "ไม่สามารถล็อคไดเรà¸à¸—อรี %s"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr "ไม่รองรับà¸à¸²à¸£à¸¥à¹‰à¸²à¸‡à¸‚้อมูลที่ %s"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "ไม่สามารถเปลี่ยนไดเรà¸à¸—อรีไปยัง %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸”าวน์โหลดà¹à¸Ÿà¹‰à¸¡à¸—ี่ %li จาภ%li (เหลืออีภ%s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸”าวน์โหลดà¹à¸Ÿà¹‰à¸¡à¸—ี่ %li จาภ%li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr "จำเป็นต้องติดตั้งà¹à¸žà¸à¹€à¸à¸ˆ %s ซ้ำ à¹à¸•à¹ˆà¸«à¸²à¸•à¸±à¸§à¹à¸žà¸à¹€à¸à¸ˆà¹„ม่พบ"
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"ข้อผิดพลาด: pkgProblemResolver::Resolve สร้างคำตอบที่ทำให้เà¸à¸´à¸”à¹à¸žà¸à¹€à¸à¸ˆà¹€à¸ªà¸µà¸¢ "
+"อาจเà¸à¸´à¸”จาà¸à¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ถูà¸à¸à¸³à¸«à¸™à¸”ให้คงรุ่นไว้"
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "ไม่สามารถà¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¹„ด้ คุณได้คงรุ่นà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่เสียอยู่ไว้"
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "ไม่สามารถà¹à¸ˆà¸‡à¸«à¸£à¸·à¸­à¹€à¸›à¸´à¸”รายชื่อà¹à¸žà¸à¹€à¸à¸ˆà¸«à¸£à¸·à¸­à¸ªà¸–านะà¹à¸žà¸à¹€à¸à¸ˆà¹„ด้"
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "คุณอาจเรียภ`apt-get update' เพื่อà¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¹€à¸«à¸¥à¹ˆà¸²à¸™à¸µà¹‰à¹„ด้"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "ไม่สามารถอ่านรายชื่อà¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆà¹„ด้"
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "คอมไพล์นิพจน์เรà¸à¸´à¸§à¸¥à¸²à¸£à¹Œà¹„ม่สำเร็จ - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "ไม่พบรุ่นย่อย '%s' ของ '%s'"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "ไม่พบรุ่น '%s' ของ '%s'"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "ไม่พบงานติดตั้ง '%s'"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "ไม่พบà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ตรงà¸à¸±à¸šà¸™à¸´à¸žà¸ˆà¸™à¹Œà¹€à¸£à¸à¸´à¸§à¸¥à¸²à¸£à¹Œ '%s'"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "ไม่พบà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ตรงà¸à¸±à¸š glob '%s'"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "ไม่พบà¹à¸žà¸à¹€à¸à¸ˆ %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr "ไม่สามารถเลือà¸à¸£à¸¸à¹ˆà¸™à¸•à¹ˆà¸²à¸‡à¹† ของà¹à¸žà¸à¹€à¸à¸ˆ '%s' ได้ เนื่องจาà¸à¹€à¸›à¹‡à¸™à¹à¸žà¸à¹€à¸à¸ˆà¹€à¸ªà¸¡à¸·à¸­à¸™à¸­à¸¢à¹ˆà¸²à¸‡à¹à¸—้จริง"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr "ไม่สามารถเลือà¸à¸£à¸¸à¹ˆà¸™à¹ƒà¸«à¸¡à¹ˆà¸—ี่สุดของà¹à¸žà¸à¹€à¸à¸ˆ '%s' ได้ เนื่องจาà¸à¹€à¸›à¹‡à¸™à¹à¸žà¸à¹€à¸à¸ˆà¹€à¸ªà¸¡à¸·à¸­à¸™à¸­à¸¢à¹ˆà¸²à¸‡à¹à¸—้จริง"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr "ไม่สามารถเลือà¸à¸£à¸¸à¹ˆà¸™à¸ªà¸³à¸«à¸£à¸±à¸šà¸•à¸´à¸”ตั้งของà¹à¸žà¸à¹€à¸à¸ˆ '%s' ได้ เนื่องจาà¸à¹„ม่มีรุ่นสำหรับติดตั้ง"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr "ไม่สามารถเลือà¸à¸£à¸¸à¹ˆà¸™à¸—ี่ติดตั้งไว้ของà¹à¸žà¸à¹€à¸à¸ˆ '%s' ได้ เนื่องจาà¸à¹à¸žà¸à¹€à¸à¸ˆà¹„ม่ได้ติดตั้งไว้"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"ไม่สามารถเลือà¸à¸£à¸¸à¹ˆà¸™à¸—ี่ติดตั้งไว้หรือรุ่นสำหรับติดตั้งของà¹à¸žà¸à¹€à¸à¸ˆ '%s' ได้ เนื่องจาà¸à¹„ม่มีทั้งสองอย่าง"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "บรรทัด %u ในà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆ %s ยาวเà¸à¸´à¸™à¹„ป"
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸¥à¸´à¸à¹€à¸¡à¸²à¸™à¸—์ซีดีรอม...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹ƒà¸Šà¹‰à¸ˆà¸¸à¸”เมานท์ซีดีรอม %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¸­à¹à¸œà¹ˆà¸™...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸¡à¸²à¸™à¸—์ซีดีรอม...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸•à¸£à¸§à¸ˆà¸ªà¸­à¸šà¸Šà¸·à¹ˆà¸­à¹à¸œà¹ˆà¸™... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "ชื่อที่เà¸à¹‡à¸šà¹„ว้: %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸³à¸£à¸§à¸ˆà¸‚้อมูลในà¹à¸œà¹ˆà¸™à¹€à¸žà¸·à¹ˆà¸­à¸«à¸²à¹à¸Ÿà¹‰à¸¡à¸”ัชนี...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"พบดัชนีà¹à¸žà¸à¹€à¸à¸ˆ %zu รายà¸à¸²à¸£, ดัชนีซอร์ส %zu รายà¸à¸²à¸£, ดัชนีคำà¹à¸›à¸¥ %zu รายà¸à¸²à¸£ à¹à¸¥à¸°à¸¥à¸²à¸¢à¹€à¸‹à¹‡à¸™ "
+"%zu รายà¸à¸²à¸£\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr "ไม่พบà¹à¸Ÿà¹‰à¸¡à¹à¸žà¸à¹€à¸à¸ˆà¹ƒà¸”ๆ บางทีà¹à¸œà¹ˆà¸™à¸™à¸µà¹‰à¸­à¸²à¸ˆà¸ˆà¸°à¹„ม่ใช่à¹à¸œà¹ˆà¸™à¹€à¸”เบียน หรือสถาปัตยà¸à¸£à¸£à¸¡à¸­à¸²à¸ˆà¹„ม่ถูà¸à¸•à¹‰à¸­à¸‡"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "พบชื่อà¹à¸œà¹ˆà¸™ '%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "ไม่ใช่ชื่อที่ใช้ได้ à¸à¸£à¸¸à¸“าลองใหม่\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"à¹à¸œà¹ˆà¸™à¸™à¸µà¹‰à¹€à¸£à¸µà¸¢à¸à¸Šà¸·à¹ˆà¸­à¸§à¹ˆà¸²:\n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸„ัดลอà¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸žà¸à¹€à¸à¸ˆ..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸‚ียนรายชื่อà¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆà¹à¸«à¸¥à¹ˆà¸‡à¹ƒà¸«à¸¡à¹ˆ\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "บรรทัดรายชื่อà¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆà¸ªà¸³à¸«à¸£à¸±à¸šà¹à¸œà¹ˆà¸™à¸™à¸µà¹‰à¸„ือ:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "ไม่สามารถ stat %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "ไม่สามารถ stat จุดเมานท์ %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "ไม่สามารถ stat ซีดีรอม"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "ไม่รู้จัà¸à¸•à¸±à¸§à¹€à¸¥à¸·à¸­à¸à¸šà¸£à¸£à¸—ัดคำสั่ง '%c' [จาภ%s]"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "ไม่เข้าใจตัวเลือà¸à¸šà¸£à¸£à¸—ัดคำสั่ง %s"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "ตัวเลือà¸à¸šà¸£à¸£à¸—ัดคำสั่ง %s ไม่ได้เป็นค่าบูลีน"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "ตัวเลือภ%s ต้องมีอาร์à¸à¸´à¸§à¹€à¸¡à¸™à¸•à¹Œ"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "ตัวเลือภ%s: à¸à¸²à¸£à¸à¸³à¸«à¸™à¸”รายà¸à¸²à¸£à¸„่าตั้งต้องมี =<val>"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "ตัวเลือภ%s ต้องà¸à¸²à¸£à¸­à¸²à¸£à¹Œà¸à¸´à¸§à¹€à¸¡à¸™à¸•à¹Œà¸ˆà¸³à¸™à¸§à¸™à¹€à¸•à¹‡à¸¡ ไม่ใช่ '%s'"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "ตัวเลือภ'%s' ยาวเà¸à¸´à¸™à¹„ป"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "ไม่เข้าใจค่าบูลีน %s à¸à¸£à¸¸à¸“าลองใช้ true หรือ false"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "ไม่รู้จัà¸à¸„ำสั่ง %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "พบตัวย่อของชนิดที่ข้อมูลไม่รู้จัà¸: '%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "ขณะเปิดà¹à¸Ÿà¹‰à¸¡à¸„่าตั้ง %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "ไวยาà¸à¸£à¸“์ผิดพลาด %s:%u: เริ่มบล็อคโดยไม่มีชื่อ"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "ไวยาà¸à¸£à¸“์ผิดพลาด %s:%u: à¹à¸—็à¸à¸œà¸´à¸”รูปà¹à¸šà¸š"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "ไวยาà¸à¸£à¸“์ผิดพลาด %s:%u: มีขยะเà¸à¸´à¸™à¸«à¸¥à¸±à¸‡à¸„่า"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "ไวยาà¸à¸£à¸“์ผิดพลาด %s:%u: สามารถใช้ directive ที่ระดับบนสุดได้เท่านั้น"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "ไวยาà¸à¸£à¸“์ผิดพลาด %s:%u: ใช้ include ซ้อนà¸à¸±à¸™à¸¡à¸²à¸à¹€à¸à¸´à¸™à¹„ป"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "ไวยาà¸à¸£à¸“์ผิดพลาด %s:%u: include จาà¸à¸—ี่นี่"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "ไวยาà¸à¸£à¸“์ผิดพลาด %s:%u: พบ directive '%s' ที่ไม่รองรับ"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr "ไวยาà¸à¸£à¸“์ผิดพลาด %s:%u: directive 'clear' ต้องมีอาร์à¸à¸´à¸§à¹€à¸¡à¸™à¸•à¹Œà¹€à¸›à¹‡à¸™à¸¥à¸³à¸”ับชั้นตัวเลือà¸"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "ไวยาà¸à¸£à¸“์ผิดพลาด %s:%u: มีขยะเà¸à¸´à¸™à¸«à¸¥à¸±à¸‡à¸ˆà¸šà¹à¸Ÿà¹‰à¸¡"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "เà¸à¸´à¸”ปัà¸à¸«à¸²à¸‚ณะลบà¹à¸Ÿà¹‰à¸¡ %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "จะไม่ใช้à¸à¸²à¸£à¸¥à¹‡à¸­à¸„à¸à¸±à¸šà¹à¸Ÿà¹‰à¸¡à¸¥à¹‡à¸­à¸„ %s ที่อ่านได้อย่างเดียว"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "ไม่สามารถเปิดà¹à¸Ÿà¹‰à¸¡à¸¥à¹‡à¸­à¸„ %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "จะไม่ใช้à¸à¸²à¸£à¸¥à¹‡à¸­à¸„à¸à¸±à¸šà¹à¸Ÿà¹‰à¸¡à¸¥à¹‡à¸­à¸„ %s ที่เมานท์ผ่าน nfs"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "ไม่สามารถล็อค %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr "ไม่สามารถสร้างรายชื่อà¹à¸Ÿà¹‰à¸¡à¹„ด้ เนื่องจาภ'%s' ไม่ใช่ไดเรà¸à¸—อรี"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr "จะละเลย '%s' ในไดเรà¸à¸—อรี '%s' เนื่องจาà¸à¹„ม่ใช่à¹à¸Ÿà¹‰à¸¡à¸˜à¸£à¸£à¸¡à¸”า"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr "จะละเลย '%s' ในไดเรà¸à¸—อรี '%s' เนื่องจาà¸à¹„ม่มีส่วนขยายในชื่อà¹à¸Ÿà¹‰à¸¡"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr "จะละเลย '%s' ในไดเรà¸à¸—อรี '%s' เนื่องจาà¸à¸ªà¹ˆà¸§à¸™à¸‚ยายในชื่อà¹à¸Ÿà¹‰à¸¡à¹„ม่สามารถใช้à¸à¸²à¸£à¹„ด้"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "รอโพรเซส %s à¹à¸•à¹ˆà¸•à¸±à¸§à¹‚พรเซสไม่อยู่"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "โพรเซสย่อย %s เà¸à¸´à¸”ข้อผิดพลาดของà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸¢à¹ˆà¸²à¸™à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำ (segmentation fault)"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "โพรเซสย่อย %s ได้รับสัà¸à¸à¸²à¸“ %u"
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "โพรเซสย่อย %s คืนค่าข้อผิดพลาด (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "โพรเซสย่อย %s จบà¸à¸²à¸£à¸—ำงานà¸à¸°à¸—ันหัน"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "à¸à¸²à¸£à¸­à¹ˆà¸²à¸™à¸‚้อมูลผิดพลาด"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "à¸à¸²à¸£à¹€à¸‚ียนข้อมูลผิดพลาด"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "เà¸à¸´à¸”ปัà¸à¸«à¸²à¸‚ณะปิดà¹à¸Ÿà¹‰à¸¡ gzip %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "สร้าง IPC ของโพรเซสย่อยไม่สำเร็จ"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "เรียà¸à¸—ำงานตัวบีบอัดไม่สำเร็จ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "ไม่สามารถเปิดà¹à¸Ÿà¹‰à¸¡ %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "ไม่สามารถเปิด file destriptor %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "read: ยังเหลือ %llu ที่ยังไม่ได้อ่าน à¹à¸•à¹ˆà¸‚้อมูลหมดà¹à¸¥à¹‰à¸§"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "write: ยังเหลือ %llu ที่ยังไม่ได้เขียน à¹à¸•à¹ˆà¹„ม่สามารถเขียนได้"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "เà¸à¸´à¸”ปัà¸à¸«à¸²à¸‚ณะปิดà¹à¸Ÿà¹‰à¸¡ %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "เà¸à¸´à¸”ปัà¸à¸«à¸²à¸‚ณะเปลี่ยนชื่อà¹à¸Ÿà¹‰à¸¡ %s ไปเป็น %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "เà¸à¸´à¸”ปัà¸à¸«à¸²à¸‚ณะ sync à¹à¸Ÿà¹‰à¸¡"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to mkstemp %s"
+msgstr "ไม่สามารถ mkstemp %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "ไม่สามารถเขียนลงà¹à¸Ÿà¹‰à¸¡ %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "ไม่สามารถ mmap à¹à¸Ÿà¹‰à¸¡à¹€à¸›à¸¥à¹ˆà¸²"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "ไม่สามารถสร้าง mmap ขนาด %llu ไบต์"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "ไม่สามารถทำซ้ำ file descriptor %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "ไม่สามารถปิด mmap"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "ไม่สามารถปรับ mmap ให้ตรงà¸à¸±à¸™"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "ไม่สามารถสร้าง mmap ขนาด %lu ไบต์"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "ไม่สามารถตัดท้ายà¹à¸Ÿà¹‰à¸¡"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"MMap à¹à¸šà¸šà¸žà¸¥à¸§à¸±à¸•à¸¡à¸µà¹€à¸™à¸·à¹‰à¸­à¸—ี่ไม่พอ à¸à¸£à¸¸à¸“าเพิ่มขนาดของ APT::Cache-Start ค่าปัจจุบัน: %lu (man 5 "
+"apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr "ไม่สามารถเพิ่มขนาดของ MMap เนื่องจาà¸à¸–ึงขีดจำà¸à¸±à¸” %lu ไบต์à¹à¸¥à¹‰à¸§"
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr "ไม่สามารถเพิ่มขนาดของ MMap เนื่องจาà¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸›à¸´à¸”à¸à¸²à¸£à¸‚ยายขนาดอัตโนมัติ"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... ผิดพลาด!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... เสร็จà¹à¸¥à¹‰à¸§"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr "..."
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... %u%%"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%liวัน %liชม. %liนาที %liวิ"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%liชม. %liนาที %liวิ"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%liนาที %liวิ"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%liวิ"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "ไม่พบรายà¸à¸²à¸£à¹€à¸¥à¸·à¸­à¸ %s"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "ไม่สามารถà¹à¸ˆà¸‡à¹à¸Ÿà¹‰à¸¡ Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "ไม่มีหัวข้อย่อยในà¹à¸Ÿà¹‰à¸¡ Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "ไม่มีรายà¸à¸²à¸£à¹à¸®à¸Šà¹ƒà¸™à¹à¸Ÿà¹‰à¸¡ Release %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "รายà¸à¸²à¸£ '%s' ไม่ถูà¸à¸•à¹‰à¸­à¸‡à¹ƒà¸™à¹à¸Ÿà¹‰à¸¡ Release %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "ไม่สามารถà¹à¸ˆà¸‡à¹à¸Ÿà¹‰à¸¡à¹à¸žà¸à¹€à¸à¸ˆ %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr "ไม่สามารถล็อคไดเรà¸à¸—อรีดูà¹à¸¥à¸£à¸°à¸šà¸š (%s) มีโพรเซสอื่นใช้งานอยู่หรือเปล่า?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "ไม่สามารถล็อคไดเรà¸à¸—อรีดูà¹à¸¥à¸£à¸°à¸šà¸š (%s) คุณเป็น root หรือเปล่า?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr "dpkg ถูà¸à¸‚ัดจังหวะ คุณต้องเรียภ'%s' เองเพื่อà¹à¸à¹‰à¸›à¸±à¸à¸«à¸²"
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "ไม่ได้ล็อคอยู่"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸•à¸´à¸”ตั้ง %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸•à¸±à¹‰à¸‡à¸„่า %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸–อดถอน %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸–อดถอน %s อย่างสมบูรณ์"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ˆà¸”บันทึà¸à¸à¸²à¸£à¸«à¸²à¸¢à¹„ปของ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸£à¸µà¸¢à¸à¸à¸²à¸£à¸ªà¸°à¸à¸´à¸” %s หลังà¸à¸²à¸£à¸•à¸´à¸”ตั้ง"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "ติดตั้ง %s à¹à¸¥à¹‰à¸§"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "ไม่มีไดเรà¸à¸—อรี '%s'"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "ไม่สามารถเปิดà¹à¸Ÿà¹‰à¸¡ '%s'"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸•à¸£à¸µà¸¢à¸¡ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹à¸•à¸à¹à¸žà¸à¹€à¸à¸ˆ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸•à¸£à¸µà¸¢à¸¡à¸•à¸±à¹‰à¸‡à¸„่า %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸•à¸£à¸µà¸¢à¸¡à¸–อดถอน %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "ถอดถอน %s à¹à¸¥à¹‰à¸§"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸•à¸£à¸µà¸¢à¸¡à¸–อดถอน %s อย่างสมบูรณ์"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "ถอดถอน %s อย่างสมบูรณ์à¹à¸¥à¹‰à¸§"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Can not write log (%s)"
+msgstr "ไม่สามารถเขียนปูม (%s)"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr "ได้เมานท์ /dev/pts ไว้หรือไม่?"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "ปà¸à¸´à¸šà¸±à¸•à¸´à¸à¸²à¸£à¸–ูà¸à¸‚ัดจังหวะà¸à¹ˆà¸­à¸™à¸—ี่จะสามารถทำงานเสร็จ"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr "ไม่มีà¸à¸²à¸£à¹€à¸‚ียนรายงาน apport เพราะถึงขีดจำà¸à¸±à¸” MaxReports à¹à¸¥à¹‰à¸§"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "มีปัà¸à¸«à¸²à¸„วามขึ้นต่อà¸à¸±à¸™ - จะทิ้งไว้โดยไม่ตั้งค่า"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"ไม่มีà¸à¸²à¸£à¹€à¸‚ียนรายงาน apport เพราะข้อความข้อผิดพลาดระบุว่าเป็นสิ่งที่ตามมาจาà¸à¸‚้อผิดพลาดà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr "ไม่มีà¸à¸²à¸£à¹€à¸‚ียนรายงาน apport เพราะข้อความข้อผิดพลาดระบุว่าเà¸à¸´à¸”จาà¸à¸”ิสà¸à¹Œà¹€à¸•à¹‡à¸¡"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr "ไม่มีà¸à¸²à¸£à¹€à¸‚ียนรายงาน apport เพราะข้อความข้อผิดพลาดระบุว่าเà¸à¸´à¸”จาà¸à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำเต็ม"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"ไม่มีà¸à¸²à¸£à¹€à¸‚ียนรายงาน apport เพราะข้อความข้อผิดพลาดระบุว่าเà¸à¸´à¸”จาà¸à¸›à¸±à¸à¸«à¸²à¸‚องระบบในเครื่อง"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"ไม่มีà¸à¸²à¸£à¹€à¸‚ียนรายงาน apport เพราะข้อความข้อผิดพลาดระบุว่าเà¸à¸´à¸”จาà¸à¸›à¸±à¸à¸«à¸²à¸à¸²à¸£à¸­à¹ˆà¸²à¸™/เขียนของ dpkg"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡à¹‚ครงสร้างลำดับความสัมพันธ์"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "รุ่นà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่มี"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "สร้างลำดับความสัมพันธ์"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸­à¹ˆà¸²à¸™à¸‚้อมูลสถานะ"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "ไม่สามารถเปิดà¹à¸Ÿà¹‰à¸¡à¸ªà¸–านะ %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "ไม่สามารถเขียนà¹à¸Ÿà¹‰à¸¡à¸ªà¸–านะชั่วคราว %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "ส่งสภาวà¸à¸²à¸£à¸“์ไปยังà¸à¸¥à¹„à¸à¸à¸²à¸£à¹à¸à¹‰à¸›à¸±à¸à¸«à¸²"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "ส่งคำสั่งไปยังà¸à¸¥à¹„à¸à¸à¸²à¸£à¹à¸à¹‰à¸›à¸±à¸à¸«à¸²"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "เตรียมรับคำตอบ"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr "à¸à¸¥à¹„à¸à¸à¸²à¸£à¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¸ à¸²à¸¢à¸™à¸­à¸à¸—ำงานล้มเหลวโดยไม่มีข้อความข้อผิดพลาดที่เหมาะสม"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "เรียà¸à¸à¸¥à¹„à¸à¸à¸²à¸£à¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¸ à¸²à¸¢à¸™à¸­à¸"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Execute external planner"
+msgstr "เรียà¸à¸à¸¥à¹„à¸à¸à¸²à¸£à¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¸ à¸²à¸¢à¸™à¸­à¸"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send request to planner"
+msgstr "ส่งคำสั่งไปยังà¸à¸¥à¹„à¸à¸à¸²à¸£à¹à¸à¹‰à¸›à¸±à¸à¸«à¸²"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send scenario to planner"
+msgstr "ส่งสภาวà¸à¸²à¸£à¸“์ไปยังà¸à¸¥à¹„à¸à¸à¸²à¸£à¹à¸à¹‰à¸›à¸±à¸à¸«à¸²"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "External planner failed without a proper error message"
+msgstr "à¸à¸¥à¹„à¸à¸à¸²à¸£à¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¸ à¸²à¸¢à¸™à¸­à¸à¸—ำงานล้มเหลวโดยไม่มีข้อความข้อผิดพลาดที่เหมาะสม"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "เขียนà¹à¸¥à¹‰à¸§ %i ระเบียน\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "เขียนà¹à¸¥à¹‰à¸§ %i ระเบียน โดยมีà¹à¸Ÿà¹‰à¸¡à¸‚าดหาย %i à¹à¸Ÿà¹‰à¸¡\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "เขียนà¹à¸¥à¹‰à¸§ %i ระเบียน โดยมีà¹à¸Ÿà¹‰à¸¡à¸œà¸´à¸”ขนาด %i à¹à¸Ÿà¹‰à¸¡\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "เขียนà¹à¸¥à¹‰à¸§ %i ระเบียน โดยมีà¹à¸Ÿà¹‰à¸¡à¸‚าดหาย %i à¹à¸Ÿà¹‰à¸¡ à¹à¸¥à¸°à¹à¸Ÿà¹‰à¸¡à¸œà¸´à¸”ขนาด %i à¹à¸Ÿà¹‰à¸¡\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "ไม่พบระเบียนยืนยันความà¹à¸—้สำหรับ: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "à¹à¸®à¸Šà¹„ม่ตรงà¸à¸±à¸™à¸ªà¸³à¸«à¸£à¸±à¸š: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "ไม่รองรับระบบà¹à¸žà¸à¹€à¸à¸ˆ '%s'"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "ไม่สามารถระบุชนิดของระบบà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่เหมาะสมได้"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr "ความคืบหน้า: [%3i%%]"
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸£à¸µà¸¢à¸ dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"ไม่สามารถตั้งค่า '%s' à¹à¸šà¸šà¸—ันทีได้ à¸à¸£à¸¸à¸“าอ่านรายละเอียดเพิ่มเติมจาภman 5 apt.conf ที่หัวข้อ "
+"APT::Immediate-Configure (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "ไม่สามารถตั้งค่า '%s'"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"à¸à¸²à¸£à¸•à¸´à¸”ตั้งครั้งนี้จำเป็นต้องลบà¹à¸žà¸à¹€à¸à¸ˆ %s ชั่วคราว "
+"อันเนื่องมาจาà¸à¸„วามขัดà¹à¸¢à¹‰à¸‡à¸«à¸£à¸·à¸­à¸„วามขึ้นต่อà¸à¸±à¸™à¸£à¸°à¸«à¸§à¹ˆà¸²à¸‡à¸•à¸´à¸”ตั้งที่เป็นวงรอบ "
+"ซึ่งà¹à¸žà¸à¹€à¸à¸ˆà¸”ังà¸à¸¥à¹ˆà¸²à¸§à¹€à¸›à¹‡à¸™à¹à¸žà¸à¹€à¸à¸ˆà¸—ี่จำเป็นสำหรับระบบ à¸à¸²à¸£à¸¥à¸šà¸”ังà¸à¸¥à¹ˆà¸²à¸§à¸¡à¸±à¸à¹€à¸›à¹‡à¸™à¸­à¸±à¸™à¸•à¸£à¸²à¸¢ "
+"à¹à¸•à¹ˆà¸–้าคุณต้องà¸à¸²à¸£à¸—ำเช่นนั้นจริงๆ à¸à¹‡à¹ƒà¸«à¹‰à¹€à¸›à¸´à¸”ตัวเลือภAPT::Force-LoopBreak"
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "à¹à¸„ชของà¹à¸žà¸à¹€à¸à¸ˆà¸§à¹ˆà¸²à¸‡à¹€à¸›à¸¥à¹ˆà¸²"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "à¹à¸Ÿà¹‰à¸¡à¹à¸„ชของà¹à¸žà¸à¹€à¸à¸ˆà¹€à¸ªà¸µà¸¢à¸«à¸²à¸¢"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "à¹à¸Ÿà¹‰à¸¡à¹à¸„ชของà¹à¸žà¸à¹€à¸à¸ˆà¹€à¸›à¹‡à¸™à¸„นละรุ่นà¸à¸±à¸™"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "APT รุ่นนี้ไม่รองรับระบบนับรุ่นà¹à¸šà¸š '%s'"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "à¹à¸„ชของà¹à¸žà¸à¹€à¸à¸ˆà¸–ูà¸à¸ªà¸£à¹‰à¸²à¸‡à¸¡à¸²à¸ªà¸³à¸«à¸£à¸±à¸šà¸ªà¸–าปัตยà¸à¸£à¸£à¸¡à¸­à¸·à¹ˆà¸™"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "à¹à¸Ÿà¹‰à¸¡à¹à¸„ชของà¹à¸žà¸à¹€à¸à¸ˆà¹€à¸ªà¸µà¸¢à¸«à¸²à¸¢ à¹à¸Ÿà¹‰à¸¡à¸¡à¸µà¸‚นาดเล็à¸à¸à¸§à¹ˆà¸²à¸—ี่ควรจะเป็น"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "ต้องใช้"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "ต้องใช้ขณะติดตั้ง"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "à¹à¸™à¸°à¸™à¸³"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "ขัดà¹à¸¢à¹‰à¸‡à¸à¸±à¸š"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "ควรใช้ร่วมà¸à¸±à¸š"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "à¹à¸—นที่"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "ทำให้พัง"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "เพิ่มความสามารถ"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "ใช้à¹à¸—น"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "สำคัà¸"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "จำเป็น"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "มาตรà¸à¸²à¸™"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "ส่วนเสริม"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "ตัวเลือà¸"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "à¹à¸„ชมีระบบนับรุ่นที่ไม่ตรงà¸à¸±à¸™"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะประมวลผล %s (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "โอ้ คุณมาถึงขีดจำà¸à¸±à¸”จำนวนชื่อà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ APT สามารถรองรับได้à¹à¸¥à¹‰à¸§"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "โอ้ คุณมาถึงขีดจำà¸à¸±à¸”จำนวนรุ่นà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ APT สามารถรองรับได้à¹à¸¥à¹‰à¸§"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "โอ้ คุณมาถึงขีดจำà¸à¸±à¸”จำนวนคำบรรยายà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ APT สามารถรองรับได้à¹à¸¥à¹‰à¸§"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "โอ้ คุณมาถึงขีดจำà¸à¸±à¸”จำนวนความสัมพันธ์ระหว่างà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ APT สามารถรองรับได้à¹à¸¥à¹‰à¸§"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸­à¹ˆà¸²à¸™à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸žà¸à¹€à¸à¸ˆ"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "เà¸à¸´à¸”ข้อผิดพลาด IO ขณะบันทึà¸à¹à¸„ชของซอร์ส"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "ไม่รองรับà¹à¸Ÿà¹‰à¸¡à¸”ัชนีชนิด '%s'"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr "ค่า '%s' ไม่สามารถใช้à¸à¸±à¸š APT::Default-Release ได้ เนื่องจาà¸à¸£à¸¸à¹ˆà¸™à¸”ังà¸à¸¥à¹ˆà¸²à¸§à¹„ม่มีในà¹à¸«à¸¥à¹ˆà¸‡"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "ระเบียนผิดรูปà¹à¸šà¸šà¹ƒà¸™à¹à¸Ÿà¹‰à¸¡à¸„่าปรับà¹à¸•à¹ˆà¸‡ %s: ไม่มีข้อมูลส่วนหัว 'Package'"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "ไม่เข้าใจชนิดà¸à¸²à¸£à¸•à¸£à¸¶à¸‡ %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "ไม่ได้ระบุลำดับความสำคัภ(หรือค่าศูนย์) สำหรับà¸à¸²à¸£à¸•à¸£à¸¶à¸‡"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "à¹à¸Ÿà¹‰à¸¡ override %s ผิดรูปà¹à¸šà¸šà¸—ี่บรรทัด %llu (%s)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸›à¸´à¸” %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "บรรทัด %u ในà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆ %s ผิดรูปà¹à¸šà¸š (ชนิด)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "ไม่รู้จัà¸à¸Šà¸™à¸´à¸” '%s' ที่บรรทัด %u ในà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆ %s"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "บรรทัด %u ในà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆ %s ผิดรูปà¹à¸šà¸š (ชนิด)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "ไม่รู้จัà¸à¸Šà¸™à¸´à¸” '%s' ที่วรรคที่ %u ในà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆ %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "คุณต้องเพิ่ม URI ชนิด 'source' ใน sources.list ของคุณด้วย"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "ไม่สามารถดาวน์โหลด %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr "ดาวน์โหลดà¹à¸Ÿà¹‰à¸¡à¸”ัชนีบางà¹à¸Ÿà¹‰à¸¡à¹„ม่สำเร็จ จะข้ามรายà¸à¸²à¸£à¸”ังà¸à¸¥à¹ˆà¸²à¸§à¹„ป หรือใช้ข้อมูลเà¸à¹ˆà¸²à¹à¸—น"
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸„ำนวณà¸à¸²à¸£à¸›à¸£à¸±à¸šà¸£à¸¸à¹ˆà¸™"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "เจอ:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "ดึง:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "ข้าม:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "ปัà¸à¸«à¸²:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "ดาวน์โหลด %sB ใน %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [à¸à¸³à¸¥à¸±à¸‡à¸—ำงาน]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"เปลี่ยนà¹à¸œà¹ˆà¸™: à¸à¸£à¸¸à¸“าใส่à¹à¸œà¹ˆà¸™à¸Šà¸·à¹ˆà¸­\n"
+" '%s'\n"
+"ลงในไดรว์ %s à¹à¸¥à¹‰à¸§à¸à¸” enter\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¸„วามขึ้นต่อà¸à¸±à¸™à¸£à¸°à¸«à¸§à¹ˆà¸²à¸‡à¹à¸žà¸à¹€à¸à¸ˆ..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " ล้มเหลว"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "ไม่สามารถà¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¸„วามขึ้นต่อà¸à¸±à¸™à¸£à¸°à¸«à¸§à¹ˆà¸²à¸‡à¹à¸žà¸à¹€à¸à¸ˆà¹„ด้"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "ไม่สามารถจำà¸à¸±à¸”รายà¸à¸²à¸£à¸›à¸£à¸±à¸šà¸£à¸¸à¹ˆà¸™à¹ƒà¸«à¹‰à¸™à¹‰à¸­à¸¢à¸—ี่สุดได้"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " เสร็จà¹à¸¥à¹‰à¸§"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "คุณอาจต้องเรียภ'apt --fix-broken install' เพื่อà¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¹€à¸«à¸¥à¹ˆà¸²à¸™à¸µà¹‰"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"มีปัà¸à¸«à¸²à¸„วามขึ้นต่อà¸à¸±à¸™à¸£à¸°à¸«à¸§à¹ˆà¸²à¸‡à¹à¸žà¸à¹€à¸à¸ˆ à¸à¸£à¸¸à¸“าลองใช้ 'apt --fix-broken install' "
+"โดยไม่ระบุà¹à¸žà¸à¹€à¸à¸ˆ (หรือจะระบุทางà¹à¸à¹‰à¸à¹‡à¹„ด้)"
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸£à¸µà¸¢à¸‡à¸¥à¸³à¸”ับ"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "หมายเหตุ: จะเลือภ'%s' สำหรับงานติดตั้ง '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "หมายเหตุ: จะเลือภ'%s' สำหรับนิพจน์เรà¸à¸´à¸§à¸¥à¸²à¸£à¹Œ '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "หมายเหตุ: จะเลือภ'%s' สำหรับนิพจน์เรà¸à¸´à¸§à¸¥à¸²à¸£à¹Œ '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "à¹à¸žà¸à¹€à¸à¸ˆ %s เป็นà¹à¸žà¸à¹€à¸à¸ˆà¹€à¸ªà¸¡à¸·à¸­à¸™à¸—ี่ตระเตรียมโดย:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr "[ติดตั้งอยู่]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [ไม่ใช่รุ่นสำหรับติดตั้ง]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "คุณควรเจาะจงเลือà¸à¹à¸žà¸à¹€à¸à¸ˆà¹ƒà¸”à¹à¸žà¸à¹€à¸à¸ˆà¸«à¸™à¸¶à¹ˆà¸‡à¹€à¸žà¸·à¹ˆà¸­à¸•à¸´à¸”ตั้ง"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"ไม่มีà¹à¸žà¸à¹€à¸à¸ˆ %s ให้ใช้ติดตั้ง à¹à¸•à¹ˆà¸–ูà¸à¸­à¹‰à¸²à¸‡à¸–ึงโดยà¹à¸žà¸à¹€à¸à¸ˆà¸­à¸·à¹ˆà¸™\n"
+"à¹à¸žà¸à¹€à¸à¸ˆà¸™à¸µà¹‰à¸­à¸²à¸ˆà¸‚าดหายไป หรือตà¸à¸£à¸¸à¹ˆà¸™à¹„ปà¹à¸¥à¹‰à¸§ หรืออยู่ในà¹à¸«à¸¥à¹ˆà¸‡à¸­à¸·à¹ˆà¸™\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "อย่างไรà¸à¹‡à¸”ี à¹à¸žà¸à¹€à¸à¸ˆà¸•à¹ˆà¸­à¹„ปนี้ได้à¹à¸—นที่à¹à¸žà¸à¹€à¸à¸ˆà¸”ังà¸à¸¥à¹ˆà¸²à¸§à¹„ปà¹à¸¥à¹‰à¸§:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "à¹à¸žà¸à¹€à¸à¸ˆ '%s' ไม่มีรุ่นที่จะใช้ติดตั้ง"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "à¹à¸žà¸à¹€à¸à¸ˆà¹€à¸ªà¸¡à¸·à¸­à¸™à¸­à¸¢à¹ˆà¸²à¸‡ '%s' ไม่สามารถถอดถอนได้\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "à¹à¸žà¸à¹€à¸à¸ˆ '%s' ไม่ได้ติดตั้งไว้ จึงไม่มีà¸à¸²à¸£à¸–อดถอน คุณหมายถึง '%s' หรือเปล่า?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "à¹à¸žà¸à¹€à¸à¸ˆ '%s' ไม่ได้ติดตั้งไว้ จึงไม่มีà¸à¸²à¸£à¸–อดถอน\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "หมายเหตุ: จะเลือภ'%s' à¹à¸—น '%s'\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "APT นี้มีพลังของ Super Cow"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr "โปรà¹à¸à¸£à¸¡à¸Šà¹ˆà¸§à¸¢à¹€à¸«à¸¥à¸·à¸­à¸‚อง APT นี้มีพลัง Super Meep"
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "ไม่พบà¹à¸žà¸à¹€à¸à¸ˆ"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "*คำเตือน*: à¹à¸žà¸à¹€à¸à¸ˆà¸•à¹ˆà¸­à¹„ปนี้ไม่สามารถยืนยันà¹à¸«à¸¥à¹ˆà¸‡à¸•à¹‰à¸™à¸•à¸­à¹„ด้!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "จะข้ามà¸à¸²à¸£à¹€à¸•à¸·à¸­à¸™à¹€à¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸à¸²à¸£à¸¢à¸·à¸™à¸¢à¸±à¸™à¹à¸«à¸¥à¹ˆà¸‡à¸•à¹‰à¸™à¸•à¸­\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "มีบางà¹à¸žà¸à¹€à¸à¸ˆà¹„ม่สามารถยืนยันà¹à¸«à¸¥à¹ˆà¸‡à¸•à¹‰à¸™à¸•à¸­à¹„ด้"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "จะติดตั้งà¹à¸žà¸à¹€à¸à¸ˆà¹€à¸«à¸¥à¹ˆà¸²à¸™à¸µà¹‰à¹‚ดยไม่ตรวจสอบหรือไม่?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "มีปัà¸à¸«à¸²à¸šà¸²à¸‡à¸›à¸£à¸°à¸à¸²à¸£ à¹à¸¥à¸°à¸¡à¸µà¸à¸²à¸£à¹ƒà¸Šà¹‰ -y โดยไม่ระบุ --force-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "ไม่สามารถคำนวณพื้นที่ว่างใน %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "คุณมีพื้นที่ว่างเหลือไม่พอใน %s"
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "ไม่สามารถล็อคไดเรà¸à¸—อรีดาวน์โหลด"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"ไม่สามารถติดตั้งบางà¹à¸žà¸à¹€à¸à¸ˆà¹„ด้ คุณอาจระบุเงื่อนไขà¸à¸²à¸£à¸•à¸´à¸”ตั้งที่เป็นไปไม่ได้\n"
+"หรือถ้าคุณà¸à¸³à¸¥à¸±à¸‡à¹ƒà¸Šà¹‰à¸£à¸¸à¹ˆà¸™ unstable à¸à¹‡à¹€à¸›à¹‡à¸™à¹„ปได้ว่าà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่จำเป็นบางรายà¸à¸²à¸£\n"
+"ยังไม่ถูà¸à¸ªà¸£à¹‰à¸²à¸‡à¸‚ึ้น หรือถูà¸à¸¢à¹‰à¸²à¸¢à¸­à¸­à¸à¸ˆà¸²à¸ Incoming"
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "ข้อมูลต่อไปนี้อาจช่วยà¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¹„ด้:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "à¹à¸žà¸à¹€à¸à¸ˆà¸¡à¸µà¸›à¸±à¸à¸«à¸²"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"ดาวน์โหลดบางà¹à¸žà¸à¹€à¸à¸ˆà¹„ม่สำเร็จ บางที à¸à¸²à¸£à¹€à¸£à¸µà¸¢à¸ apt-get update หรือลองใช้ตัวเลือภ--fix-"
+"missing อาจช่วยได้"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "เà¸à¸´à¸”ข้อผิดพลาดภายใน: มีà¸à¸²à¸£à¹€à¸£à¸µà¸¢à¸ InstallPackages ด้วยà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่เสีย!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "มีà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่จำเป็นต้องถอดถอน à¹à¸•à¹ˆà¸–ูà¸à¸«à¹‰à¸²à¸¡à¸à¸²à¸£à¸–อดถอนไว้"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "มีปัà¸à¸«à¸²à¸šà¸²à¸‡à¸›à¸£à¸°à¸à¸²à¸£ à¹à¸¥à¸°à¸¡à¸µà¸à¸²à¸£à¹ƒà¸Šà¹‰ -y โดยไม่ระบุ --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "มีปัà¸à¸«à¸²à¸šà¸²à¸‡à¸›à¸£à¸°à¸à¸²à¸£ à¹à¸¥à¸°à¸¡à¸µà¸à¸²à¸£à¹ƒà¸Šà¹‰ -y โดยไม่ระบุ --force-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "ข้อผิดพลาดภายใน: à¸à¸²à¸£à¹€à¸£à¸µà¸¢à¸‡à¸¥à¸³à¸”ับไม่เสร็จสิ้น"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr "à¹à¸›à¸¥à¸à¸›à¸£à¸°à¸«à¸¥à¸²à¸”... ขนาดไม่ตรงà¸à¸±à¸™ à¸à¸£à¸¸à¸“าอีเมลà¹à¸ˆà¹‰à¸‡ apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "ต้องดาวน์โหลดà¹à¸žà¸à¹€à¸à¸ˆ %sB/%sB\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "ต้องดาวน์โหลดà¹à¸žà¸à¹€à¸à¸ˆ %sB\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "หลังจาà¸à¸à¸²à¸£à¸à¸£à¸°à¸—ำนี้ ต้องใช้เนื้อที่บนดิสà¸à¹Œà¸­à¸µà¸ %sB\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "หลังจาà¸à¸à¸²à¸£à¸à¸£à¸°à¸—ำนี้ เนื้อที่บนดิสà¸à¹Œà¸ˆà¸°à¸§à¹ˆà¸²à¸‡à¹€à¸žà¸´à¹ˆà¸¡à¸­à¸µà¸ %sB\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "Trivial Only ถูà¸à¸à¸³à¸«à¸™à¸”ไว้ à¹à¸•à¹ˆà¸„ำสั่งนี้ไม่ใช่คำสั่งเล็à¸à¸™à¹‰à¸­à¸¢"
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Yes, do as I say!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"คุณà¸à¸³à¸¥à¸±à¸‡à¸ˆà¸°à¸—ำสิ่งที่อาจเป็นอันตราย\n"
+"หาà¸à¸•à¹‰à¸­à¸‡à¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£à¸•à¹ˆà¸­ ให้พิมพ์ประโยค '%s'\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "เลิà¸à¸—ำ"
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "คุณต้องà¸à¸²à¸£à¸ˆà¸°à¸”ำเนินà¸à¸²à¸£à¸•à¹ˆà¸­à¹„ปหรือไม่?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "ดาวน์โหลดบางà¹à¸Ÿà¹‰à¸¡à¹„ม่สำเร็จ"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "ดาวน์โหลดสำเร็จà¹à¸¥à¹‰à¸§ à¹à¸¥à¸°à¸­à¸¢à¸¹à¹ˆà¹ƒà¸™à¹‚หมดดาวน์โหลดอย่างเดียว"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "ยังไม่รองรับ --fix-missing พร้อมà¸à¸±à¸šà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸œà¹ˆà¸™"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "ไม่สามารถà¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ขาดหายได้"
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "จะล้มเลิà¸à¸à¸²à¸£à¸•à¸´à¸”ตั้ง"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"à¹à¸žà¸à¹€à¸à¸ˆà¸•à¹ˆà¸­à¹„ปนี้ได้หายไปจาà¸à¸£à¸°à¸šà¸šà¸‚องคุณ เพราะà¹à¸Ÿà¹‰à¸¡à¸—ั้งหมดได้ถูà¸à¹à¸—นที่\n"
+"โดยà¹à¸žà¸à¹€à¸à¸ˆà¸­à¸·à¹ˆà¸™à¹à¸¥à¹‰à¸§:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "หมายเหตุ: นี่เป็นสิ่งที่ dpkg ทำโดยอัตโนมัติโดยเจตนา"
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "apt ถูà¸à¸à¸³à¸«à¸™à¸”ไม่ให้มีà¸à¸²à¸£à¸¥à¸šà¹ƒà¸”ๆ จึงไม่สามารถดำเนินà¸à¸²à¸£à¸–อดถอนอัตโนมัติได้"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"ดูเหมือนà¸à¸²à¸£à¸–อดถอนอัตโนมัติได้สร้างความเสียหายบางอย่าง ซึ่งไม่ควรเà¸à¸´à¸”ขึ้น\n"
+"à¸à¸£à¸¸à¸“ารายงานบั๊à¸à¸™à¸µà¹‰à¸‚องà¹à¸žà¸à¹€à¸à¸ˆ apt"
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "เà¸à¸´à¸”ข้อผิดพลาดภายใน: AutoRemover ทำความเสียหาย"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "à¹à¸žà¸à¹€à¸à¸ˆà¸•à¹ˆà¸­à¹„ปนี้ถูà¸à¸•à¸´à¸”ตั้งà¹à¸šà¸šà¸­à¸±à¸•à¹‚นมัติไว้ à¹à¸¥à¸°à¹„ม่ต้องใช้อีà¸à¸•à¹ˆà¸­à¹„ปà¹à¸¥à¹‰à¸§:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "มีà¹à¸žà¸à¹€à¸à¸ˆ %lu à¹à¸žà¸à¹€à¸à¸ˆà¸–ูà¸à¸•à¸´à¸”ตั้งà¹à¸šà¸šà¸­à¸±à¸•à¹‚นมัติไว้ à¹à¸¥à¸°à¹„ม่ต้องใช้อีà¸à¸•à¹ˆà¸­à¹„ปà¹à¸¥à¹‰à¸§\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "ใช้ '%s' เพื่อถอดถอนà¹à¸žà¸à¹€à¸à¸ˆà¸”ังà¸à¸¥à¹ˆà¸²à¸§à¹„ด้"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "จะติดตั้งà¹à¸žà¸à¹€à¸à¸ˆà¹€à¸žà¸´à¹ˆà¸¡à¹€à¸•à¸´à¸¡à¸•à¹ˆà¸­à¹„ปนี้:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "à¹à¸žà¸à¹€à¸à¸ˆà¸—ี่à¹à¸™à¸°à¸™à¸³:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "à¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ควรใช้ร่วมà¸à¸±à¸™:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "จะข้าม %s เนื่องจาà¸à¹à¸žà¸à¹€à¸à¸ˆà¸•à¸´à¸”ตั้งไว้à¹à¸¥à¹‰à¸§ à¹à¸¥à¸°à¹„ม่มีà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ให้ปรับรุ่น\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr "จะข้าม %s เนื่องจาà¸à¹à¸žà¸à¹€à¸à¸ˆà¹„ม่ได้ติดตั้งไว้ à¹à¸¥à¸°à¸„ำสั่งมีเพียงà¸à¸²à¸£à¸›à¸£à¸±à¸šà¸£à¸¸à¹ˆà¸™à¹€à¸—่านั้น\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "ไม่สามารถติดตั้ง %s ซ้ำได้ เนื่องจาà¸à¹„ม่สามารถดาวน์โหลดได้\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s เป็นรุ่นใหม่ล่าสุดอยู่à¹à¸¥à¹‰à¸§\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "à¸à¸³à¸«à¸™à¸” %s ให้เป็นà¸à¸²à¸£à¸•à¸´à¸”ตั้งà¹à¸šà¸šà¹€à¸¥à¸·à¸­à¸à¹€à¸­à¸‡à¹à¸¥à¹‰à¸§\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "เลือà¸à¸£à¸¸à¹ˆà¸™ '%s' (%s) สำหรับ '%s' à¹à¸¥à¹‰à¸§\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "เลือà¸à¸£à¸¸à¹ˆà¸™ '%s' (%s) สำหรับ '%s' à¹à¸¥à¹‰à¸§ อันเนื่องมาจาภ'%s'\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹à¸ªà¸”งรายชื่อ"
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] "มีอีภ%i รุ่น à¸à¸£à¸¸à¸“าใช้ตัวเลือภ'-a' หาà¸à¸•à¹‰à¸­à¸‡à¸à¸²à¸£à¸”ูเพิ่ม"
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"หมายเหตุ: นี่เป็นเพียงà¸à¸²à¸£à¸ˆà¸³à¸¥à¸­à¸‡à¸à¸²à¸£à¸—ำงานเท่านั้น!\n"
+" à¸à¸²à¸£à¸—ำงานจริงของ %s ต้องอาศัยสิทธิ์ผู้ดูà¹à¸¥à¸£à¸°à¸šà¸š\n"
+" อย่าลืมด้วยว่าà¸à¸²à¸£à¸¥à¹‡à¸­à¸„à¸à¹‡à¹„ม่ทำงานเช่นà¸à¸±à¸™\n"
+" ดังนั้น อย่าถือผลลัพธ์นี้ว่าตรงà¸à¸±à¸šà¸ªà¸ à¸²à¸žà¸„วามเป็นจริงของระบบ!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr "ไม่ทราบ"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr "[ติดตั้งอยู่,สามารถปรับรุ่นเป็น: %s]"
+
+#: apt-private/private-output.cc
+msgid "[installed,local]"
+msgstr "[ติดตั้งอยู่,ในเครื่อง]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr "[ติดตั้งอยู่,ถอดถอนอัตโนมัติได้]"
+
+#: apt-private/private-output.cc
+msgid "[installed,automatic]"
+msgstr "[ติดตั้งอยู่,อัตโนมัติ]"
+
+#: apt-private/private-output.cc
+msgid "[installed]"
+msgstr "[ติดตั้งอยู่]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr "[สามารถปรับรุ่นจาà¸: %s]"
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr "[ค่าตั้งตà¸à¸„้าง]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "à¹à¸•à¹ˆà¸£à¸¸à¹ˆà¸™à¸—ี่ติดตั้งไว้คือ %s"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "à¹à¸•à¹ˆà¸£à¸¸à¹ˆà¸™à¸—ี่จะติดตั้งคือ %s"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "à¹à¸•à¹ˆà¹„ม่สามารถติดตั้งได้"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "à¹à¸•à¹ˆà¹à¸žà¸à¹€à¸à¸ˆà¸™à¸µà¹‰à¹€à¸›à¹‡à¸™à¹à¸žà¸à¹€à¸à¸ˆà¹€à¸ªà¸¡à¸·à¸­à¸™"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "à¹à¸•à¹ˆà¹à¸žà¸à¹€à¸à¸ˆà¸™à¸µà¹‰à¸ˆà¸°à¹„ม่ถูà¸à¸•à¸´à¸”ตั้ง"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "à¹à¸•à¹ˆà¹„ม่ได้ติดตั้งไว้"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " หรือ"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "à¹à¸žà¸à¹€à¸à¸ˆà¸•à¹ˆà¸­à¹„ปนี้ขาดà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ต้องใช้:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "จะติดตั้งà¹à¸žà¸à¹€à¸à¸ˆ *ใหม่* ต่อไปนี้:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "จะ *ลบ* à¹à¸žà¸à¹€à¸à¸ˆà¸•à¹ˆà¸­à¹„ปนี้:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "จะคงรุ่นà¹à¸žà¸à¹€à¸à¸ˆà¸•à¹ˆà¸­à¹„ปนี้:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "จะปรับรุ่นà¹à¸žà¸à¹€à¸à¸ˆà¸•à¹ˆà¸­à¹„ปนี้ขึ้น:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "จะปรับรุ่นà¹à¸žà¸à¹€à¸à¸ˆà¸•à¹ˆà¸­à¹„ปนี้ *ลง*:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "จะเปลี่ยนà¹à¸›à¸¥à¸‡à¸£à¸²à¸¢à¸à¸²à¸£à¸„งรุ่นà¹à¸žà¸à¹€à¸à¸ˆà¸•à¹ˆà¸­à¹„ปนี้:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (เนื่องจาภ%s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"*คำเตือน*: à¹à¸žà¸à¹€à¸à¸ˆà¸—ี่จำเป็นต่อไปนี้จะถูà¸à¸–อดถอน\n"
+"คุณ *ไม่ควร* ทำเช่นนี้ นอà¸à¸ˆà¸²à¸à¸„ุณเข้าใจสิ่งที่จะทำ!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "ปรับรุ่นขึ้น %lu, ติดตั้งใหม่ %lu, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "ติดตั้งซ้ำ %lu, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "ปรับรุ่นลง %lu, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "ถอดถอน %lu à¹à¸¥à¸°à¹„ม่ปรับรุ่น %lu\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "ติดตั้งหรือถอดถอนไม่ครบ %lu\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[Y/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[y/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "Y"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "คุณต้องระบุà¹à¸žà¸•à¹€à¸—ิร์นสำหรับค้นหาอย่างน้อยหนึ่งà¹à¸žà¸•à¹€à¸—ิร์น"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr "ค้นทั่วทั้งเนื้อความ"
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "ข้อมูลà¹à¸Ÿà¹‰à¸¡ Package %s ไม่ตรงà¸à¸±à¸šà¸„วามเป็นจริง"
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] "มีอีภ%i ระเบียน à¸à¸£à¸¸à¸“าใช้ตัวเลือภ'-a' หาà¸à¸•à¹‰à¸­à¸‡à¸à¸²à¸£à¸”ูเพิ่ม"
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr "ไม่ใช่à¹à¸žà¸à¹€à¸à¸ˆà¸ˆà¸£à¸´à¸‡ (เสมือน)"
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "à¹à¸Ÿà¹‰à¸¡à¹à¸žà¸à¹€à¸à¸ˆ:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "ข้อมูลà¹à¸„ชไม่ตรงà¸à¸±à¸šà¸„วามเป็นจริงà¹à¸¥à¹‰à¸§ ไม่สามารถอ้างอิงไขว้ระหว่างà¹à¸Ÿà¹‰à¸¡à¹à¸žà¸à¹€à¸à¸ˆ"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "à¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ถูà¸à¸•à¸£à¸¶à¸‡:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " ที่ติดตั้งอยู่: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " รุ่นที่ติดตั้งได้: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(ไม่มี)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " ตารางรุ่น:"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "ไม่พบà¹à¸žà¸à¹€à¸à¸ˆà¸ªà¸³à¸«à¸£à¸±à¸šà¸ªà¸–าปัตยà¸à¸£à¸£à¸¡ '%s'"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "ไม่พบà¹à¸žà¸à¹€à¸à¸ˆ '%s' ที่มีรุ่นเป็น '%s'"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "ไม่พบà¹à¸žà¸à¹€à¸à¸ˆ '%s' ที่มีชุดจัดà¹à¸ˆà¸à¹€à¸›à¹‡à¸™ '%s'"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "จะเลือภ'%s' เป็นà¹à¸žà¸à¹€à¸à¸ˆà¸‹à¸­à¸£à¹Œà¸ªà¹à¸—น '%s'\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "ไม่พบรุ่น '%s' ของà¹à¸žà¸à¹€à¸à¸ˆ '%s'"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "ต้องระบุà¹à¸žà¸à¹€à¸à¸ˆà¸­à¸¢à¹ˆà¸²à¸‡à¸™à¹‰à¸­à¸¢à¸«à¸™à¸¶à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆà¸—ี่จะดาวน์โหลดซอร์สโค้ด"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "ไม่พบà¹à¸žà¸à¹€à¸à¸ˆà¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ดสำหรับ %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"ข้อสังเà¸à¸•: à¸à¸²à¸£à¸ˆà¸±à¸”ทำà¹à¸žà¸à¹€à¸à¸ˆ '%s' พัฒนาผ่านระบบควบคุมรุ่น '%s' อยู่ที่:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"à¸à¸£à¸¸à¸“าใช้:\n"
+"%s\n"
+"เพื่อดึงรุ่นล่าสุด (ที่อาจยังไม่ปล่อยออà¸à¸¡à¸²) ของตัวà¹à¸žà¸à¹€à¸à¸ˆ\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "จะข้ามà¹à¸Ÿà¹‰à¸¡ '%s' ที่ดาวน์โหลดไว้à¹à¸¥à¹‰à¸§\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "ต้องดาวน์โหลดซอร์สโค้ด %sB/%sB\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "ต้องดาวน์โหลดซอร์สโค้ด %sB\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "ดาวน์โหลดซอร์ส %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "ไม่สามารถดาวน์โหลดบางà¹à¸Ÿà¹‰à¸¡"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "จะข้ามà¸à¸²à¸£à¹à¸•à¸à¸‹à¸­à¸£à¹Œà¸ªà¸‚องซอร์สที่à¹à¸•à¸à¹„ว้à¹à¸¥à¹‰à¸§à¹ƒà¸™ %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "คำสั่งà¹à¸•à¸à¹à¸Ÿà¹‰à¸¡ '%s' ล้มเหลว\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "à¸à¸£à¸¸à¸“าตรวจสอบว่าได้ติดตั้งà¹à¸žà¸à¹€à¸à¸ˆ 'dpkg-dev' à¹à¸¥à¹‰à¸§\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "คำสั่ง build '%s' ล้มเหลว\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "ไม่สามารถอ่านข้อมูลสิ่งที่ต้องà¸à¸²à¸£à¸ªà¸³à¸«à¸£à¸±à¸šà¸à¸²à¸£ build ของ %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s ไม่ต้องà¸à¸²à¸£à¸ªà¸´à¹ˆà¸‡à¹ƒà¸”สำหรับ build\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr "ต้องระบุà¹à¸žà¸à¹€à¸à¸ˆà¸­à¸¢à¹ˆà¸²à¸‡à¸™à¹‰à¸­à¸¢à¸«à¸™à¸¶à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆà¸—ี่จะตรวจสอบสิ่งที่ต้องà¸à¸²à¸£à¸ªà¸³à¸«à¸£à¸±à¸šà¸à¸²à¸£ build"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"ไม่มีข้อมูลสถาปัตยà¸à¸£à¸£à¸¡à¸ªà¸³à¸«à¸£à¸±à¸š %s ดูวิธีตั้งค่าที่หัวข้อ APT::Architectures ของ apt.conf(5)"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "ติดตั้งสิ่งที่จำเป็นสำหรับà¸à¸²à¸£ build ไม่สำเร็จ"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "ติดตั้งสิ่งที่จำเป็นสำหรับà¸à¸²à¸£ build ไม่สำเร็จ"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "à¹à¸ˆà¸‡ %s ไม่สำเร็จ จะà¹à¸à¹‰à¹„ขอีà¸à¸„รั้งหรือไม่? "
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr "à¹à¸Ÿà¹‰à¸¡ '%s' ของคุณมีà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡ à¸à¸£à¸¸à¸“าเรียภ'apt-get update'"
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "à¹à¸žà¸à¹€à¸à¸ˆ %s รุ่น %s ขาดà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ต้องใช้:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "คำสั่ง update ไม่รับอาร์à¸à¸´à¸§à¹€à¸¡à¸™à¸•à¹Œà¹€à¸žà¸´à¹ˆà¸¡"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+"มี %i à¹à¸žà¸à¹€à¸à¸ˆà¸ªà¸²à¸¡à¸²à¸£à¸–ปรับรุ่นได้ เรียภ'apt list --upgradable' หาà¸à¸•à¹‰à¸­à¸‡à¸à¸²à¸£à¸”ูรายชื่อ\n"
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr "ปรับรุ่นทุà¸à¹à¸žà¸à¹€à¸à¸ˆà¹€à¸›à¹‡à¸™à¸£à¸¸à¹ˆà¸™à¸¥à¹ˆà¸²à¸ªà¸¸à¸”à¹à¸¥à¹‰à¸§"
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "คำสั่ง update ไม่รับอาร์à¸à¸´à¸§à¹€à¸¡à¸™à¸•à¹Œà¹€à¸žà¸´à¹ˆà¸¡"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "จำนวนชื่อà¹à¸žà¸à¹€à¸à¸ˆà¸—ั้งหมด: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "จำนวนโครงสร้างà¹à¸žà¸à¹€à¸à¸ˆà¸—ั้งหมด: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " à¹à¸žà¸à¹€à¸à¸ˆà¸›à¸à¸•à¸´: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " à¹à¸žà¸à¹€à¸à¸ˆà¹€à¸ªà¸¡à¸·à¸­à¸™à¹à¸—้ๆ: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " à¹à¸žà¸à¹€à¸à¸ˆà¹€à¸ªà¸¡à¸·à¸­à¸™à¸—ี่มีà¹à¸žà¸à¹€à¸à¸ˆà¸ˆà¸£à¸´à¸‡à¹€à¸”ียว: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " à¹à¸žà¸à¹€à¸à¸ˆà¹€à¸ªà¸¡à¸·à¸­à¸™à¸œà¸ªà¸¡: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " à¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ขาดหาย: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "จำนวนรุ่นที่à¹à¸•à¸à¸•à¹ˆà¸²à¸‡à¸à¸±à¸™à¸—ั้งหมด: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "จำนวนคำบรรยายà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่à¹à¸•à¸à¸•à¹ˆà¸²à¸‡à¸à¸±à¸™à¸—ั้งหมด: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "จำนวนà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¹‚ยงระหว่างà¹à¸žà¸à¹€à¸à¸ˆà¸—ั้งหมด: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "จำนวนความสัมพันธ์ รุ่น/à¹à¸Ÿà¹‰à¸¡ ทั้งหมด: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "จำนวนความสัมพันธ์ คำบรรยาย/à¹à¸Ÿà¹‰à¸¡ ทั้งหมด: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "จำนวนผังà¸à¸²à¸£à¸•à¸£à¸°à¹€à¸•à¸£à¸µà¸¢à¸¡à¸—ั้งหมด: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "จำนวนสตริงทั้งหมด: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "พื้นที่สำรองทั้งหมด: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "พื้นที่ที่นับรวมทั้งหมด: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr "คำสั่งนี้ไม่à¹à¸™à¸°à¸™à¸³à¹ƒà¸«à¹‰à¹ƒà¸Šà¹‰à¹à¸¥à¹‰à¸§ à¸à¸£à¸¸à¸“าใช้ 'apt-mark showauto' à¹à¸—น"
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "à¹à¸ªà¸”งระเบียนข้อมูลซอร์ส"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "ค้นรายชื่อà¹à¸žà¸à¹€à¸à¸ˆà¸”้วยนิพจน์เรà¸à¸´à¸§à¸¥à¸²à¸£à¹Œ"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "à¹à¸ªà¸”งข้อมูลà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ต้องใช้สำหรับà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่à¸à¸³à¸«à¸™à¸”"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "à¹à¸ªà¸”งข้อมูลà¹à¸žà¸à¹€à¸à¸ˆà¸­à¸·à¹ˆà¸™à¸—ี่ต้องใช้à¹à¸žà¸à¹€à¸à¸ˆà¸—ี่à¸à¸³à¸«à¸™à¸”"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "à¹à¸ªà¸”งข้อมูลของà¹à¸žà¸à¹€à¸à¸ˆ"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "à¹à¸ªà¸”งรายชื่อà¹à¸žà¸à¹€à¸à¸ˆà¸—ั้งหมด"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "à¹à¸ªà¸”งค่าตั้งนโยบาย"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "à¸à¸£à¸¸à¸“าตั้งชื่อà¹à¸œà¹ˆà¸™ เช่น 'Debian 5.0.3 Disk 1'"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "à¸à¸£à¸¸à¸“าใส่à¹à¸œà¹ˆà¸™à¸¥à¸‡à¹ƒà¸™à¹„ดรว์à¹à¸¥à¹‰à¸§à¸à¸” enter"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "ไม่สามารถเมานท์ '%s' ที่ '%s'"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+"à¸à¸²à¸£à¸•à¸£à¸§à¸ˆà¸‹à¸µà¸”ีรอมอัตโนมัติไม่พบซีดีรอมใดที่จุดเมานท์ปริยาย\n"
+"คุณอาจลองใช้ตัวเลือภ--cdrom เพื่อà¸à¸³à¸«à¸™à¸”จุดเมานท์ของซีดีรอมได้\n"
+"อ่านข้อมูลเพิ่มเติมเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸à¸²à¸£à¸•à¸£à¸§à¸ˆà¸‹à¸µà¸”ีรอมอัตโนมัติà¹à¸¥à¸°à¸ˆà¸¸à¸”เมานท์ได้จาภ'man apt-cdrom'"
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "ทำเช่นนี้ต่อไปà¸à¸±à¸šà¹à¸œà¹ˆà¸™à¸‹à¸µà¸”ีที่เหลือในชุด"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "อาร์à¸à¸´à¸§à¹€à¸¡à¸™à¸•à¹Œà¹„ม่ได้ระบุเป็นคู่ๆ"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"วิธีใช้: apt-config [ตัวเลือà¸] คำสั่ง\n"
+"\n"
+"apt-config เป็นเครื่องมือง่ายๆ ที่ใช้อ่านà¹à¸Ÿà¹‰à¸¡à¸„่าตั้ง APT\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"วิธีใช้: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates เป็นเครื่องมือสำหรับà¹à¸¢à¸à¹€à¸­à¸²à¸‚้อมูลà¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าà¹à¸¥à¸°à¹€à¸—มเพลต\n"
+"ออà¸à¸¡à¸²à¸ˆà¸²à¸à¹à¸žà¸à¹€à¸à¸ˆà¹€à¸”เบียน\n"
+"\n"
+"ตัวเลือà¸:\n"
+" -h à¹à¸ªà¸”งข้อความช่วยเหลือนี้\n"
+" -t à¸à¸³à¸«à¸™à¸”ไดเรà¸à¸—อรีทำงานชั่วคราว\n"
+" -c=? อ่านà¹à¸Ÿà¹‰à¸¡à¸„่าตั้งนี้\n"
+" -o=? à¸à¸³à¸«à¸™à¸”ตัวเลือà¸à¸„่าตั้งเป็นรายตัว เช่น -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "ไม่สามารถอ่านรุ่นของ debconf ได้ ได้ติดตั้ง debconf ไว้หรือไม่?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "ไม่พบà¹à¸žà¸à¹€à¸à¸ˆ %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "à¸à¸³à¸«à¸™à¸” %s ให้เป็นà¸à¸²à¸£à¸•à¸´à¸”ตั้งà¹à¸šà¸šà¸­à¸±à¸•à¹‚นมัติà¹à¸¥à¹‰à¸§\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr "คำสั่งนี้ไม่à¹à¸™à¸°à¸™à¸³à¹ƒà¸«à¹‰à¹ƒà¸Šà¹‰à¹à¸¥à¹‰à¸§ à¸à¸£à¸¸à¸“าใช้ 'apt-mark auto' à¹à¸¥à¸° 'apt-mark manual' à¹à¸—น"
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "เà¸à¸´à¸”ข้อผิดพลาดภายใน: à¸à¸¥à¹„à¸à¸à¸²à¸£à¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¸—ำความเสียหาย"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "มอดูลที่รองรับ:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"วิธีใช้: apt-get [ตัวเลือà¸] คำสั่ง\n"
+" apt-get [ตัวเลือà¸] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [ตัวเลือà¸] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get เป็นคำสั่งง่ายๆ สำหรับดาวน์โหลดà¹à¸¥à¸°à¸•à¸´à¸”ตั้งà¹à¸žà¸à¹€à¸à¸ˆ คำสั่งที่ใช้บ่อยที่สุดà¸à¹‡à¸„ือ\n"
+"update à¹à¸¥à¸° install\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "ดาวน์โหลดรายชื่อà¹à¸žà¸à¹€à¸à¸ˆà¸Šà¸¸à¸”ใหม่"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "ปรับรุ่นà¹à¸žà¸à¹€à¸à¸ˆà¸•à¹ˆà¸²à¸‡à¹† ขึ้น"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "ติดตั้งà¹à¸žà¸à¹€à¸à¸ˆà¹ƒà¸«à¸¡à¹ˆ (pkg อยู่ในรูปเช่น libc6 ไม่ใช่ libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "ถอดถอนà¹à¸žà¸à¹€à¸à¸ˆ"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "ถอดถอนà¹à¸žà¸à¹€à¸à¸ˆà¸žà¸£à¹‰à¸­à¸¡à¸¥à¸šà¸„่าตั้งทั้งหมด"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "ถอดถอนà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ไม่ใช้à¹à¸¥à¹‰à¸§à¹‚ดยอัตโนมัติ"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "ปรับรุ่นขึ้นà¹à¸šà¸šà¸‚้ามรุ่นจัดà¹à¸ˆà¸ ดู apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "ทำตามสิ่งที่เลือà¸à¹‚ดย dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "ติดตั้งสิ่งที่จำเป็นสำหรับà¸à¸²à¸£à¸›à¸£à¸°à¸à¸­à¸šà¸ªà¸£à¹‰à¸²à¸‡à¹à¸žà¸à¹€à¸à¸ˆà¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ด"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "ลบà¹à¸Ÿà¹‰à¸¡à¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ดาวน์โหลดมา"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "ลบà¹à¸Ÿà¹‰à¸¡à¹à¸žà¸à¹€à¸à¸ˆà¹€à¸à¹ˆà¸²à¸—ี่ดาวน์โหลดมา"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "ตรวจสอบว่าไม่มีความเชื่อมโยงที่เสียระหว่างà¹à¸žà¸à¹€à¸à¸ˆ"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "ดาวน์โหลดซอร์สโค้ดของà¹à¸žà¸à¹€à¸à¸ˆ"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "ดาวน์โหลดà¹à¸žà¸à¹€à¸à¸ˆà¹„บนารีลงในไดเรà¸à¸—อรีปัจจุบัน"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "ดาวน์โหลดà¹à¸¥à¸°à¹à¸ªà¸”งปูมà¸à¸²à¸£à¹à¸à¹‰à¹„ขของà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่à¸à¸³à¸«à¸™à¸”"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr "ต้องà¸à¸²à¸£ URL หนึ่งรายà¸à¸²à¸£à¹€à¸›à¹‡à¸™à¸­à¸²à¸£à¹Œà¸à¸´à¸§à¹€à¸¡à¸™à¸•à¹Œ"
+
+#: cmdline/apt-helper.cc
+msgid "Must specify at least one pair url/filename"
+msgstr "ต้องระบุคู่ URL, ชื่อà¹à¸Ÿà¹‰à¸¡ อย่างน้อยหนึ่งคู่"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr "ดาวน์โหลดไม่สำเร็จ"
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+"วิธีใช้: apt-helper [ตัวเลือà¸] คำสั่ง\n"
+" apt-helper [ตัวเลือà¸] download-file URI พาธปลายทาง\n"
+"\n"
+"apt-helper เป็นโปรà¹à¸à¸£à¸¡à¸Šà¹ˆà¸§à¸¢à¹€à¸«à¸¥à¸·à¸­à¸ à¸²à¸¢à¹ƒà¸™à¸‚อง apt\n"
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr "ดาวน์โหลด URI ที่à¸à¸³à¸«à¸™à¸”ลงในพาธปลายทาง"
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr "ตรวจหาพร็อà¸à¸‹à¸µà¹‚ดยใช้ apt.conf"
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"วิธีใช้: apt-internal-solver\n"
+"\n"
+"apt-internal-solver "
+"เป็นเครื่องมือสำหรับเรียà¸à¹ƒà¸Šà¹‰à¸à¸¥à¹„à¸à¸ à¸²à¸¢à¹ƒà¸™à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™à¹€à¸ªà¸¡à¸·à¸­à¸™à¹€à¸›à¹‡à¸™à¸à¸¥à¹„à¸à¸à¸²à¸£à¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¸ à¸²à¸¢à¸™à¸­à¸à¸ªà¸³à¸«à¸£à¸±à¸šà¹‚ปรà¹à¸à¸£à¸¡à¸•à¸£à¸°à¸à¸¹à¸¥ "
+"APT เพื่อà¸à¸²à¸£à¸”ีบั๊à¸à¸«à¸£à¸·à¸­à¸­à¸°à¹„รทำนองนี้\n"
+"\n"
+"ตัวเลือà¸:\n"
+" -h à¹à¸ªà¸”งข้อความช่วยเหลือนี้\n"
+" -q à¹à¸ªà¸”งผลลัพธ์à¹à¸šà¸šà¸šà¸±à¸™à¸—ึà¸à¸¥à¸‡à¹à¸Ÿà¹‰à¸¡à¹„ด้ - ไม่ต้องà¹à¸ªà¸”งความคืบหน้า\n"
+" -c=? อ่านà¹à¸Ÿà¹‰à¸¡à¸„่าตั้งนี้\n"
+" -o=? à¸à¸³à¸«à¸™à¸”ตัวเลือà¸à¸„่าตั้งเป็นรายตัว เช่น -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"วิธีใช้: apt-internal-solver\n"
+"\n"
+"apt-internal-solver "
+"เป็นเครื่องมือสำหรับเรียà¸à¹ƒà¸Šà¹‰à¸à¸¥à¹„à¸à¸ à¸²à¸¢à¹ƒà¸™à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™à¹€à¸ªà¸¡à¸·à¸­à¸™à¹€à¸›à¹‡à¸™à¸à¸¥à¹„à¸à¸à¸²à¸£à¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¸ à¸²à¸¢à¸™à¸­à¸à¸ªà¸³à¸«à¸£à¸±à¸šà¹‚ปรà¹à¸à¸£à¸¡à¸•à¸£à¸°à¸à¸¹à¸¥ "
+"APT เพื่อà¸à¸²à¸£à¸”ีบั๊à¸à¸«à¸£à¸·à¸­à¸­à¸°à¹„รทำนองนี้\n"
+"\n"
+"ตัวเลือà¸:\n"
+" -h à¹à¸ªà¸”งข้อความช่วยเหลือนี้\n"
+" -q à¹à¸ªà¸”งผลลัพธ์à¹à¸šà¸šà¸šà¸±à¸™à¸—ึà¸à¸¥à¸‡à¹à¸Ÿà¹‰à¸¡à¹„ด้ - ไม่ต้องà¹à¸ªà¸”งความคืบหน้า\n"
+" -c=? อ่านà¹à¸Ÿà¹‰à¸¡à¸„่าตั้งนี้\n"
+" -o=? à¸à¸³à¸«à¸™à¸”ตัวเลือà¸à¸„่าตั้งเป็นรายตัว เช่น -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "%s ไม่สามารถทำเครื่องหมายได้ เพราะไม่ได้ติดตั้งไว้\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s ถูà¸à¸à¸³à¸«à¸™à¸”ให้เป็นà¸à¸²à¸£à¸•à¸´à¸”ตั้งà¹à¸šà¸šà¹€à¸¥à¸·à¸­à¸à¹€à¸­à¸‡à¸­à¸¢à¸¹à¹ˆà¸à¹ˆà¸­à¸™à¹à¸¥à¹‰à¸§\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s ถูà¸à¸à¸³à¸«à¸™à¸”ให้เป็นà¸à¸²à¸£à¸•à¸´à¸”ตั้งà¹à¸šà¸šà¸­à¸±à¸•à¹‚นมัติอยู่à¸à¹ˆà¸­à¸™à¹à¸¥à¹‰à¸§\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s ถูà¸à¸à¸³à¸«à¸™à¸”ให้คงรุ่นอยู่à¸à¹ˆà¸­à¸™à¹à¸¥à¹‰à¸§\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s ไม่ได้คงรุ่นอยู่à¸à¹ˆà¸­à¸™à¹à¸¥à¹‰à¸§\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "เรียà¸à¸—ำงาน dpkg ไม่สำเร็จ คุณเป็น root หรือเปล่า?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "à¸à¸³à¸«à¸™à¸” %s ให้คงรุ่นà¹à¸¥à¹‰à¸§\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸„งรุ่นของ %s à¹à¸¥à¹‰à¸§\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"วิธีใช้: apt-mark [ตัวเลือà¸] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark เป็นเครื่องมือบรรทัดคำสั่งอย่างง่ายสำหรับทำเครื่องหมายà¹à¸žà¸à¹€à¸à¸ˆ\n"
+"ว่าเป็นà¸à¸²à¸£à¸•à¸´à¸”ตั้งà¹à¸šà¸šà¹€à¸¥à¸·à¸­à¸à¹€à¸­à¸‡à¸«à¸£à¸·à¸­à¹à¸šà¸šà¸­à¸±à¸•à¹‚นมัติ à¹à¸¥à¸°à¸ªà¸²à¸¡à¸²à¸£à¸–à¹à¸ªà¸”งà¸à¸²à¸£à¸—ำเครื่องหมายต่างๆ ได้ด้วย\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "ทำเครื่องหมายà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่à¸à¸³à¸«à¸™à¸”ให้เป็นà¸à¸²à¸£à¸•à¸´à¸”ตั้งà¹à¸šà¸šà¸­à¸±à¸•à¹‚นมัติ"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "ทำเครื่องหมายà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่à¸à¸³à¸«à¸™à¸”ให้เป็นà¸à¸²à¸£à¸•à¸´à¸”ตั้งà¹à¸šà¸šà¹€à¸¥à¸·à¸­à¸à¹€à¸­à¸‡"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr "ทำเครื่องหมายà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่à¸à¸³à¸«à¸™à¸”ให้เป็นà¸à¸²à¸£à¸„งรุ่น"
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr "ลบà¸à¸²à¸£à¸—ำเครื่องหมายà¸à¸²à¸£à¸„งรุ่นจาà¸à¹à¸žà¸à¹€à¸à¸ˆà¸—ี่à¸à¸³à¸«à¸™à¸”"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr "à¹à¸ªà¸”งรายชื่อของà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ติดตั้งà¹à¸šà¸šà¸­à¸±à¸•à¹‚นมัติ"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr "à¹à¸ªà¸”งรายชื่อของà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ติดตั้งà¹à¸šà¸šà¹€à¸¥à¸·à¸­à¸à¹€à¸­à¸‡"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr "à¹à¸ªà¸”งรายชื่อของà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่คงรุ่นอยู่"
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "พบระเบียนà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ไม่รู้จัà¸!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr "à¹à¸ªà¸”งรายชื่อà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่มีชื่อตรงà¸à¸±à¸šà¸£à¸¹à¸›à¹à¸šà¸šà¸—ี่à¸à¸³à¸«à¸™à¸”"
+
+#: cmdline/apt.cc
+msgid "search in package descriptions"
+msgstr "ค้นหาในคำบรรยายà¹à¸žà¸à¹€à¸à¸ˆ"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr "à¹à¸ªà¸”งรายละเอียดของà¹à¸žà¸à¹€à¸à¸ˆ"
+
+#. package stuff
+#: cmdline/apt.cc
+msgid "install packages"
+msgstr "ติดตั้งà¹à¸žà¸à¹€à¸à¸ˆ"
+
+#: cmdline/apt.cc
+msgid "remove packages"
+msgstr "ถอดถอนà¹à¸žà¸à¹€à¸à¸ˆ"
+
+#. system wide stuff
+#: cmdline/apt.cc
+msgid "update list of available packages"
+msgstr "ปรับข้อมูลรายชื่อของà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่มี"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr "ปรับรุ่นระบบโดยติดตั้ง/ปรับรุ่นà¹à¸žà¸à¹€à¸à¸ˆà¸•à¹ˆà¸²à¸‡à¹†"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr "ปรับรุ่นระบบโดยถอดถอน/ติดตั้ง/ปรับรุ่นà¹à¸žà¸à¹€à¸à¸ˆà¸•à¹ˆà¸²à¸‡à¹†"
+
+#. misc
+#: cmdline/apt.cc
+msgid "edit the source information file"
+msgstr "à¹à¸à¹‰à¹„ขà¹à¸Ÿà¹‰à¸¡à¸‚้อมูลà¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆ"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "ค่าตั้งปริยายผิดพลาด!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "à¸à¸” enter เพื่อดำเนินà¸à¸²à¸£à¸•à¹ˆà¸­"
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "คุณต้องà¸à¸²à¸£à¸ˆà¸°à¸¥à¸šà¹à¸Ÿà¹‰à¸¡ .deb ต่างๆ ที่ได้ดาวน์โหลดมาà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰à¸«à¸£à¸·à¸­à¹„ม่?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะà¹à¸•à¸à¹à¸žà¸à¹€à¸à¸ˆ โปรà¹à¸à¸£à¸¡à¸ˆà¸°à¸•à¸±à¹‰à¸‡à¸„่าà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ติดตั้งà¹à¸¥à¹‰à¸§"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "อาจทำให้เà¸à¸´à¸”ข้อความà¹à¸ˆà¹‰à¸‡à¸‚้อผิดพลาดซ้ำ หรือข้อผิดพลาดเนื่องจาà¸à¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ต้องใช้ขาดหาย"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "ซึ่งไม่มีปัà¸à¸«à¸²à¸­à¸°à¹„ร มีเฉพาะข้อผิดพลาดà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸‚้อความนี้เท่านั้นที่สำคัà¸"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr "à¸à¸£à¸¸à¸“าà¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¹€à¸«à¸¥à¹ˆà¸²à¸™à¸±à¹‰à¸™ à¹à¸¥à¹‰à¸§à¹€à¸£à¸µà¸¢à¸à¸•à¸´à¸”ตั้งใหม่อีà¸à¸„รั้ง"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸œà¸ªà¸²à¸™à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¸‚องà¹à¸žà¸à¹€à¸à¸ˆà¸—ี่มี"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "รายชื่อนามสà¸à¸¸à¸¥à¹à¸žà¸à¹€à¸à¸ˆà¸¢à¸²à¸§à¹€à¸à¸´à¸™à¹„ป"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะประมวลผลไดเรà¸à¸—อรี %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "รายชื่อนามสà¸à¸¸à¸¥à¸‹à¸­à¸£à¹Œà¸ªà¸¢à¸²à¸§à¹€à¸à¸´à¸™à¹„ป"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะเขียนข้อมูลส่วนหัวลงในà¹à¸Ÿà¹‰à¸¡à¸ªà¸²à¸£à¸šà¸±à¸"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะประมวลผลสารบัภ%s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"วิธีใช้: apt-ftparchive [ตัวเลือà¸] คำสั่ง\n"
+"คำสั่ง: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive ใช้สร้างà¹à¸Ÿà¹‰à¸¡à¸”ัชนีสำหรับà¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆà¹€à¸”เบียน รองรับวิธีสร้างหลายà¹à¸šà¸š\n"
+"ตั้งà¹à¸•à¹ˆà¹à¸šà¸šà¸­à¸±à¸•à¹‚นมัติทั้งหมด ไปจนถึงà¸à¸²à¸£à¹ƒà¸Šà¹‰à¹à¸—น dpkg-scanpackages à¹à¸¥à¸° dpkg-scansources\n"
+"\n"
+"apt-ftparchive สร้างà¹à¸Ÿà¹‰à¸¡ Package จาà¸à¸•à¹‰à¸™à¹„ม้ไดเรà¸à¸—อรีที่เà¸à¹‡à¸š .deb à¹à¸Ÿà¹‰à¸¡ Package\n"
+"จะรวมเนื้อหาข้อมูลควบคุมทุà¸à¸£à¸²à¸¢à¸à¸²à¸£à¸‚องà¹à¸•à¹ˆà¸¥à¸°à¹à¸žà¸à¹€à¸à¸ˆ รวมถึง MD5 hash à¹à¸¥à¸°à¸‚นาดà¹à¸Ÿà¹‰à¸¡\n"
+"à¹à¸¥à¸°à¸£à¸­à¸‡à¸£à¸±à¸šà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¹à¸Ÿà¹‰à¸¡ override เพื่อบังคับค่าลำดับความสำคัà¸à¹à¸¥à¸°à¸«à¸¡à¸§à¸”à¹à¸žà¸à¹€à¸à¸ˆà¸”้วย\n"
+"\n"
+"ในทำนองเดียวà¸à¸±à¸™ apt-ftparchive จะสร้างà¹à¸Ÿà¹‰à¸¡ Sources จาà¸à¸•à¹‰à¸™à¹„ม้ไดเรà¸à¸—อรีที่เà¸à¹‡à¸š .dsc\n"
+"คุณสามารถใช้ตัวเลือภ--source-override เพื่อระบุà¹à¸Ÿà¹‰à¸¡ override สำหรับซอร์สได้\n"
+"\n"
+"คำสั่ง 'packages' à¹à¸¥à¸° 'sources' ควรเรียà¸à¸—ี่ตำà¹à¸«à¸™à¹ˆà¸‡à¸£à¸²à¸à¸‚องต้นไม้ไดเรà¸à¸—อรี\n"
+"ค่า binarypath ควรชี้ไปที่ตำà¹à¸«à¸™à¹ˆà¸‡à¸à¸²à¸™à¸—ี่จะค้นหาà¹à¸šà¸šà¸—ั่วถึง à¹à¸¥à¸°à¹à¸Ÿà¹‰à¸¡ override à¸à¹‡à¸„วรมีà¹à¸Ÿà¸¥à¹‡à¸\n"
+"override ต่างๆ สำหรับà¹à¸žà¸à¹€à¸à¸ˆ ค่า pathprefix จะถูà¸à¹€à¸žà¸´à¹ˆà¸¡à¹€à¸‚้าที่หน้าข้อมูล filename ถ้ามี\n"
+"ตัวอย่างà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸ˆà¸²à¸à¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆà¹€à¸”เบียน:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"ตัวเลือà¸:\n"
+" -h à¹à¸ªà¸”งข้อความช่วยเหลือนี้\n"
+" --md5 ควบคุมà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡ MD5\n"
+" -s=? à¹à¸Ÿà¹‰à¸¡ override สำหรับซอร์ส\n"
+" -q ทำงานà¹à¸šà¸šà¹€à¸‡à¸µà¸¢à¸š\n"
+" -d=? เลือà¸à¸à¸²à¸™à¸‚้อมูลà¹à¸„ชอื่น\n"
+" --no-delink เปิดโหมดดีบั๊à¸à¸ªà¸³à¸«à¸£à¸±à¸šà¸à¸²à¸£à¸•à¸±à¸”ลิงà¸à¹Œ\n"
+" --contents ควบคุมà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¹à¸Ÿà¹‰à¸¡à¸ªà¸²à¸£à¸šà¸±à¸\n"
+" -c=? อ่านà¹à¸Ÿà¹‰à¸¡à¸„่าตั้งนี้\n"
+" -o=? à¸à¸³à¸«à¸™à¸”ตัวเลือà¸à¸„่าตั้งเป็นรายตัว"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "ไม่มีรายà¸à¸²à¸£à¹€à¸¥à¸·à¸­à¸à¸—ี่ตรง"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "บางà¹à¸Ÿà¹‰à¸¡à¸‚าดหายไปในà¸à¸¥à¸¸à¹ˆà¸¡à¹à¸Ÿà¹‰à¸¡à¹à¸žà¸à¹€à¸à¸ˆ `%s'"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "DB เสีย จะเปลี่ยนชื่อà¹à¸Ÿà¹‰à¸¡à¹€à¸›à¹‡à¸™ %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "DB เป็นรุ่นเà¸à¹ˆà¸² จะพยายามปรับรุ่น %s ขึ้น"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr "ฟอร์à¹à¸¡à¸•à¸‚อง DB ผิด ถ้าคุณเพิ่งปรับรุ่นมาจาภapt รุ่นเà¸à¹ˆà¸² à¸à¸£à¸¸à¸“าลบà¸à¸²à¸™à¸‚้อมูลà¹à¸¥à¹‰à¸§à¸ªà¸£à¹‰à¸²à¸‡à¹ƒà¸«à¸¡à¹ˆ"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "ไม่สามารถเปิดà¹à¸Ÿà¹‰à¸¡ DB %s: %s"
+
+#: ftparchive/cachedb.cc
+msgid "Failed to read .dsc"
+msgstr "อ่าน .dsc ไม่สำเร็จ"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "à¹à¸žà¸à¹€à¸à¸ˆà¹„ม่มีระเบียนควบคุม"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "ไม่สามารถนำตัวชี้ตำà¹à¸«à¸™à¹ˆà¸‡à¸¡à¸²à¹ƒà¸Šà¹‰à¹„ด้"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - จองหน่วยความจำไม่สำเร็จ"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "ไม่รู้จัà¸à¸­à¸±à¸¥à¸à¸­à¸£à¸´à¸—ึมบีบอัด '%s'"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "ผลลัพธ์ของà¸à¸²à¸£à¸šà¸µà¸šà¸­à¸±à¸” %s ต้องมีชุดของà¸à¸²à¸£à¸šà¸µà¸šà¸­à¸±à¸”ด้วย"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "ไม่สามารถสร้างไปป์ IPC ไปยังโพรเซสย่อย"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "fork ไม่สำเร็จ"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "โพรเซสลูà¸à¸ªà¸³à¸«à¸£à¸±à¸šà¸šà¸µà¸šà¸­à¸±à¸”"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "ข้อผิดพลาดภายใน: ไม่สามารถสร้าง %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "IO ไปยังโพรเซสย่อยหรือà¹à¸Ÿà¹‰à¸¡à¸¥à¹‰à¸¡à¹€à¸«à¸¥à¸§"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "อ่านà¹à¸Ÿà¹‰à¸¡à¹„ม่สำเร็จขณะคำนวณ MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "ไม่สามารถเปิด %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "à¹à¸Ÿà¹‰à¸¡ override %s ผิดรูปà¹à¸šà¸šà¸—ี่บรรทัด %llu (%s)"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "ไม่สามารถอ่านà¹à¸Ÿà¹‰à¸¡ override %s"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "à¹à¸Ÿà¹‰à¸¡ override %s ผิดรูปà¹à¸šà¸šà¸—ี่บรรทัด %llu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "à¹à¸Ÿà¹‰à¸¡ override %s ผิดรูปà¹à¸šà¸šà¸—ี่บรรทัด %llu #2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "à¹à¸Ÿà¹‰à¸¡ override %s ผิดรูปà¹à¸šà¸šà¸—ี่บรรทัด %llu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "W: อ่านไดเรà¸à¸—อรี %s ไม่สำเร็จ\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "W: stat %s ไม่สำเร็จ\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "W: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: ข้อผิดพลาดเà¸à¸´à¸”à¸à¸±à¸šà¹à¸Ÿà¹‰à¸¡ "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "หาพาธเต็มของ %s ไม่สำเร็จ"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "เดินท่องต้นไม้ไม่สำเร็จ"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "เปิด %s ไม่สำเร็จ"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** ลิงà¸à¹Œ %s ไปยัง %s ไม่สำเร็จ"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " มาถึงขีดจำà¸à¸±à¸”à¸à¸²à¸£ DeLink ที่ %sB à¹à¸¥à¹‰à¸§\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "à¹à¸žà¸à¹€à¸à¸ˆà¹„ม่มีช่องข้อมูล 'Package'"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s ไม่มีข้อมูล override\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " ผู้ดูà¹à¸¥ %s คือ %s ไม่ใช่ %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s ไม่มีข้อมูล override สำหรับซอร์ส\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s ไม่มีข้อมูล override สำหรับไบนารีเช่นà¸à¸±à¸™\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "รอหัวข้อมูล"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "เซิร์ฟเวอร์ HTTP ส่งข้อมูลส่วนหัวตอบมาไม่ถูà¸à¸•à¹‰à¸­à¸‡"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "บรรทัดข้อมูลส่วนหัวผิดพลาด"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "เซิร์ฟเวอร์ HTTP ส่งข้อมูลส่วนหัว Content-Length มาไม่ถูà¸à¸•à¹‰à¸­à¸‡"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "เซิร์ฟเวอร์ HTTP ส่งข้อมูลส่วนหัว Content-Range มาไม่ถูà¸à¸•à¹‰à¸­à¸‡"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "à¸à¸²à¸£à¸ªà¸™à¸±à¸šà¸ªà¸™à¸¸à¸™ Content-Range ที่เซิร์ฟเวอร์ HTTP ผิดพลาด"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "พบรูปà¹à¸šà¸šà¸§à¸±à¸™à¸—ี่ที่ไม่รู้จัà¸"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "ข้อมูลส่วนหัวผิดพลาด"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "เชื่อมต่อไม่สำเร็จ"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "ข้อผิดพลาดภายใน"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "ไม่สามารถอ่านà¸à¸²à¸™à¸‚้อมูลซีดีรอม %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"à¸à¸£à¸¸à¸“าใช้ apt-cdrom เพื่อให้ APT รู้จัà¸à¸‹à¸µà¸”ีรอมนี้ apt-get update ไม่สามารถใช้เพิ่มซีดีรอมใหม่ได้"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "ซีดีรอมผิดà¹à¸œà¹ˆà¸™"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "ไม่สามารถเลิà¸à¹€à¸¡à¸²à¸™à¸—์ซีดีรอมใน %s à¹à¸œà¹ˆà¸™à¸­à¸²à¸ˆà¸à¸³à¸¥à¸±à¸‡à¸–ูà¸à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸­à¸¢à¸¹à¹ˆ"
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "ไม่พบà¹à¸œà¹ˆà¸™"
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "ไม่พบà¹à¸Ÿà¹‰à¸¡"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "เชื่อมต่อไปยัง %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "ไม่สามารถสร้างซ็อà¸à¹€à¸à¹‡à¸•à¸ªà¸³à¸«à¸£à¸±à¸š %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "ไม่สามารถเริ่มà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•à¹ˆà¸­à¹„ปยัง %s:%s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "ไม่สามารถเชื่อมต่อไปยัง %s:%s (%s) เนื่องจาà¸à¸«à¸¡à¸”เวลาคอย"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "ล้มเหลว"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "ไม่สามารถเชื่อมต่อไปยัง %s:%s (%s)"
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "เชื่อมต่อไปยัง %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "ไม่สามารถเปิดหาที่อยู่ '%s'"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "เà¸à¸´à¸”ความล้มเหลวชั่วคราวขณะเปิดหาที่อยู่ '%s'"
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "เà¸à¸´à¸”ข้อผิดพลาดในระบบขณะเปิดหาที่อยู่ '%s:%s'"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "เà¸à¸´à¸”ปัà¸à¸«à¸²à¸£à¹‰à¸²à¸¢à¹à¸£à¸‡à¸šà¸²à¸‡à¸­à¸¢à¹ˆà¸²à¸‡à¸‚ณะเปิดหาที่อยู่ '%s:%s' (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "ไม่สามารถเชื่อมต่อไปยัง %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "stat ไม่สำเร็จ"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "URI ไม่ถูà¸à¸•à¹‰à¸­à¸‡ URI ของà¹à¸Ÿà¹‰à¸¡à¹ƒà¸™à¹€à¸„รื่องต้องขึ้นต้นด้วย //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "เข้าระบบ"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "ไม่สามารถอ่านชื่อของอีà¸à¸à¹ˆà¸²à¸¢à¹„ด้"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "ไม่สามารถอ่านชื่อของเครื่องนี้ได้"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "เซิร์ฟเวอร์ปà¸à¸´à¹€à¸ªà¸˜à¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•à¹ˆà¸­à¹‚ดยรายงานว่า: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr "มีà¸à¸²à¸£à¸£à¸°à¸šà¸¸à¸žà¸£à¹‡à¸­à¸à¸‹à¸µ à¹à¸•à¹ˆà¹„ม่มีสคริปต์สำหรับเข้าระบบ ค่า Acquire::ftp:ProxyLogin ว่างเปล่า"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "คำสั่งสคริปต์เข้าระบบ '%s' ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "หมดเวลารอเชื่อมต่อ"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "เซิร์ฟเวอร์ปิดà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•à¹ˆà¸­"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "คำตอบท่วมบัฟเฟอร์"
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "มีความเสียหายของโพรโทคอล"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "ไม่สามารถสร้างซ็อà¸à¹€à¸à¹‡à¸•"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "ไม่สามารถเชื่อมต่อซ็อà¸à¹€à¸à¹‡à¸•à¸‚้อมูล เนื่องจาà¸à¸«à¸¡à¸”เวลาคอย"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "ไม่สามารถเชื่อมต่อซ็อà¸à¹€à¸à¸•à¹à¸šà¸š passive"
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo ไม่สามารถนำซ็อà¸à¹€à¸à¹‡à¸•à¸—ี่รอรับà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•à¹ˆà¸­à¸¡à¸²à¹ƒà¸Šà¹‰"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "ไม่สามารถ bind ซ็อà¸à¹€à¸à¹‡à¸•"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "ไม่สามารถ listen ที่ซ็อà¸à¹€à¸à¹‡à¸•"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "ไม่สามารถระบุชื่อซ็อà¸à¹€à¸à¹‡à¸•"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "ไม่สามารถส่งคำสั่ง PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "ไม่รู้จัà¸à¸•à¸£à¸°à¸à¸¹à¸¥à¸—ี่อยู่ %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "หมดเวลารอเชื่อมต่อซ็อà¸à¹€à¸à¹‡à¸•à¸‚้อมูล"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "ไม่สามารถรับà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•à¹ˆà¸­"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "เà¸à¸´à¸”ปัà¸à¸«à¸²à¸‚ณะคำนวณค่าà¹à¸®à¸Šà¸‚องà¹à¸Ÿà¹‰à¸¡"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "ไม่สามารถดาวน์โหลดà¹à¸Ÿà¹‰à¸¡ เซิร์ฟเวอร์ตอบว่า: '%s'"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "หมดเวลาคอยที่ซ็อà¸à¹€à¸à¹‡à¸•à¸‚้อมูล"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "ถ่ายโอนข้อมูลไม่สำเร็จ เซิร์ฟเวอร์ตอบว่า '%s'"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "สอบถาม"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "ไม่สามารถเรียภ"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, fuzzy, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+"à¹à¸Ÿà¹‰à¸¡à¸—ี่เซ็นà¸à¸³à¸à¸±à¸šà¸„รอบข้อความมีเนื้อหาไม่ถูà¸à¸•à¹‰à¸­à¸‡ ได้รับผลลัพธ์ "
+"'%s' (เครือข่ายต้องยืนยันตัวบุคคลหรือไม่?)"
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "พบลายเซ็นที่ใช้à¸à¸²à¸£à¹„ม่ได้อย่างน้อยหนึ่งรายà¸à¸²à¸£"
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr "ข้อผิดพลาดภายใน: ลายเซ็นใช้à¸à¸²à¸£à¹„ด้ à¹à¸•à¹ˆà¹„ม่สามารถระบุลายนิ้วมือของà¸à¸¸à¸à¹à¸ˆ?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr "ไม่สามารถเรียภ'apt-key' เพื่อตรวจสอบลายเซ็น (ได้ติดตั้ง gnupg ไว้หรือไม่?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "เà¸à¸´à¸”ข้อผิดพลาดไม่ทราบสาเหตุขณะเรียภapt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "ลายเซ็นต่อไปนี้ใช้à¸à¸²à¸£à¹„ม่ได้:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr "ลายเซ็นต่อไปนี้ไม่สามารถตรวจสอบได้ เพราะไม่มีà¸à¸¸à¸à¹à¸ˆà¸ªà¸²à¸˜à¸²à¸£à¸“ะ:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะเขียนลงà¹à¸Ÿà¹‰à¸¡"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะอ่านข้อมูลจาà¸à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸­à¸£à¹Œ ปลายทางอีà¸à¸”้านหนึ่งปิดà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•à¹ˆà¸­"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะอ่านข้อมูลจาà¸à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸­à¸£à¹Œ"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะเขียนลงà¹à¸Ÿà¹‰à¸¡"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "select ไม่สำเร็จ"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "หมดเวลารอเชื่อมต่อ"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะเขียนลงà¹à¸Ÿà¹‰à¸¡à¸œà¸¥à¸¥à¸±à¸žà¸˜à¹Œ"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "ไม่พบà¹à¸Ÿà¹‰à¸¡à¹à¸«à¸¥à¹ˆà¸‡à¸ªà¸³à¹€à¸™à¸² '%s'"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "ไม่สามารถอ่านà¹à¸Ÿà¹‰à¸¡à¹à¸«à¸¥à¹ˆà¸‡à¸ªà¸³à¹€à¸™à¸² '%s'"
+
+#: methods/mirror.cc
+#, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "ไม่พบรายà¸à¸²à¸£à¹ƒà¸™à¹à¸Ÿà¹‰à¸¡à¹à¸«à¸¥à¹ˆà¸‡à¸ªà¸³à¹€à¸™à¸² '%s'"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[à¹à¸«à¸¥à¹ˆà¸‡à¸ªà¸³à¹€à¸™à¸²: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "à¸à¸³à¸«à¸™à¸”เวลาà¹à¸à¹‰à¹„ขไม่สำเร็จ"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "à¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•à¹ˆà¸­à¸–ูà¸à¸›à¸´à¸”à¸à¹ˆà¸­à¸™à¹€à¸§à¸¥à¸²à¸­à¸±à¸™à¸„วร"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "à¹à¸Ÿà¹‰à¸¡à¸§à¹ˆà¸²à¸‡à¹€à¸›à¸¥à¹ˆà¸²à¹„ม่สามารถเป็นà¹à¸Ÿà¹‰à¸¡à¸ˆà¸±à¸”เà¸à¹‡à¸šà¸—ี่ใช้à¸à¸²à¸£à¹„ด้"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "รายà¸à¸²à¸£à¹à¸žà¸à¹€à¸à¸ˆà¸—ี่ต้องใช้ไม่ครบ à¸à¸£à¸¸à¸“าลองใช้ตัวเลือภ--fix-broken"
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr "คุณอาจเรียภ'apt --fix-broken install' เพื่อà¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¸™à¸µà¹‰à¹„ด้:"
+
+#~ msgid "(not found)"
+#~ msgstr "(ไม่พบ)"
+
+#~ msgid " Package pin: "
+#~ msgstr " à¸à¸²à¸£à¸•à¸£à¸¶à¸‡à¹à¸žà¸à¹€à¸à¸ˆ: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "ไม่มีà¸à¸¸à¸à¹à¸ˆà¸ªà¸²à¸˜à¸²à¸£à¸“ะสำหรับà¸à¸¸à¸à¹à¸ˆà¸«à¸¡à¸²à¸¢à¹€à¸¥à¸‚ต่อไปนี้:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "ไดเรà¸à¸—อรี %s ถูภdivert"
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "ไม่สามารถติดตั้งสิ่งเชื่อมโยง %s สำหรับ %s ได้ เพราะไม่สามารถใช้ %s à¸à¸±à¸šà¹à¸žà¸à¹€à¸à¸ˆ '%s' ได้"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr "ไม่สามารถติดตั้งสิ่งเชื่อมโยง %s สำหรับ %s ได้ เพราะไม่พบà¹à¸žà¸à¹€à¸à¸ˆ %s"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr "ไม่สามารถติดตั้งสิ่งเชื่อมโยง %s สำหรับ %s ได้: à¹à¸žà¸à¹€à¸à¸ˆ %s ที่ติดตั้งไว้ใหม่เà¸à¸´à¸™à¹„ป"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "ไม่สามารถติดตั้งสิ่งเชื่อมโยง %s สำหรับ %s ได้ เพราะไม่มีà¹à¸žà¸à¹€à¸à¸ˆ %s "
+#~ "รุ่นที่จะสอดคล้องà¸à¸±à¸šà¸„วามต้องà¸à¸²à¸£à¸£à¸¸à¹ˆà¸™à¸‚องà¹à¸žà¸à¹€à¸à¸ˆà¹„ด้"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr "ไม่สามารถติดตั้งสิ่งเชื่อมโยง %s สำหรับ %s ได้ เพราะ %s ไม่มีรุ่นที่ติดตั้งได้"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "ไม่สามารถติดตั้งสิ่งเชื่อมโยง %s สำหรับ %s ได้: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "ไม่สามารถติดตั้งสิ่งที่จำเป็นสำหรับà¸à¸²à¸£ build ของ %s ได้"
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "มีปัà¸à¸«à¸²à¸‚ณะลบà¹à¸Ÿà¹‰à¸¡ %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "unlink %s ไม่สำเร็จ"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "วิธีใช้: apt-cache [ตัวเลือà¸] คำสั่ง\n"
+#~ " apt-cache [ตัวเลือà¸] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache เป็นเครื่องมือระดับล่างสำหรับสืบค้นข้อมูลจาà¸à¹à¸Ÿà¹‰à¸¡à¹à¸„ชไบนารีของ APT\n"
+
+#~ msgid "Commands:"
+#~ msgstr "คำสั่ง:"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "ตัวเลือà¸:\n"
+#~ " -h à¹à¸ªà¸”งข้อความช่วยเหลือนี้\n"
+#~ " -p=? à¹à¸Ÿà¹‰à¸¡à¹à¸„ชของà¹à¸žà¸à¹€à¸à¸ˆ\n"
+#~ " -s=? à¹à¸Ÿà¹‰à¸¡à¹à¸„ชของซอร์ส\n"
+#~ " -q ปิดà¹à¸–บà¹à¸ªà¸”งความคืบหน้า\n"
+#~ " -i à¹à¸ªà¸”งเฉพาะข้อมูลความเชื่อมโยงที่สำคัà¸à¸ªà¸³à¸«à¸£à¸±à¸šà¸„ำสั่ง unmet\n"
+#~ " -c=? อ่านà¹à¸Ÿà¹‰à¸¡à¸„่าตั้งนี้\n"
+#~ " -o=? à¸à¸³à¸«à¸™à¸”ตัวเลือà¸à¸„่าตั้งเป็นรายตัว เช่น -o dir::cache=/tmp\n"
+#~ "à¸à¸£à¸¸à¸“าอ่านข้อมูลเพิ่มเติมจาภmanual page apt-cache(8) à¹à¸¥à¸° apt.conf(5)\n"
+
+#~ msgid ""
+#~ "Usage: apt [options] command\n"
+#~ "\n"
+#~ "CLI for apt.\n"
+#~ msgstr ""
+#~ "วิธีใช้: apt [ตัวเลือà¸] คำสั่ง\n"
+#~ "\n"
+#~ "บรรทัดคำสั่งสำหรับ apt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "ตัวเลือà¸:\n"
+#~ " -h à¹à¸ªà¸”งข้อความช่วยเหลือนี้\n"
+#~ " -q à¹à¸ªà¸”งผลลัพธ์à¹à¸šà¸šà¸šà¸±à¸™à¸—ึà¸à¸¥à¸‡à¹à¸Ÿà¹‰à¸¡à¹„ด้ - ไม่ต้องà¹à¸ªà¸”งความคืบหน้า\n"
+#~ " -qq ไม่ต้องà¹à¸ªà¸”งผลลัพธ์ ยà¸à¹€à¸§à¹‰à¸™à¸‚้อผิดพลาด\n"
+#~ " -s ไม่ต้องทำจริง เพียงจำลองลำดับà¸à¸²à¸£à¸—ำงานเท่านั้น\n"
+#~ " -f อ่าน/เขียน เครื่องหมาย อัตโนมัติ/เลือà¸à¹€à¸­à¸‡ ในà¹à¸Ÿà¹‰à¸¡à¸—ี่à¸à¸³à¸«à¸™à¸”\n"
+#~ " -c=? อ่านà¹à¸Ÿà¹‰à¸¡à¸„่าตั้งนี้\n"
+#~ " -o=? à¸à¸³à¸«à¸™à¸”ตัวเลือà¸à¸„่าตั้งเป็นรายตัว เช่น -o dir::cache=/tmp\n"
+#~ "à¸à¸£à¸¸à¸“าอ่านข้อมูลเพิ่มเติมจาภmanual page apt-mark(8) à¹à¸¥à¸° apt.conf(5)"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "ตัวเลือà¸:\n"
+#~ " -h ข้อความช่วยเหลือนี้\n"
+#~ " -c=? อ่านà¹à¸Ÿà¹‰à¸¡à¸„่าตั้งที่à¸à¸³à¸«à¸™à¸”\n"
+#~ " -o=? à¸à¸³à¸«à¸™à¸”ตัวเลือà¸à¸„่าตั้งเป็นรายตัว เช่น -o dir::cache=/tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "ตัวเลือà¸:\n"
+#~ " -h à¹à¸ªà¸”งข้อความช่วยเหลือนี้\n"
+#~ " -q à¹à¸ªà¸”งผลลัพธ์à¹à¸šà¸šà¸šà¸±à¸™à¸—ึà¸à¸¥à¸‡à¹à¸Ÿà¹‰à¸¡à¹„ด้ - ไม่ต้องà¹à¸ªà¸”งความคืบหน้า\n"
+#~ " -qq ไม่ต้องà¹à¸ªà¸”งผลลัพธ์ ยà¸à¹€à¸§à¹‰à¸™à¸‚้อผิดพลาด\n"
+#~ " -s ไม่ต้องทำจริง เพียงจำลองลำดับà¸à¸²à¸£à¸—ำงานเท่านั้น\n"
+#~ " -f อ่าน/เขียน เครื่องหมาย อัตโนมัติ/เลือà¸à¹€à¸­à¸‡ ในà¹à¸Ÿà¹‰à¸¡à¸—ี่à¸à¸³à¸«à¸™à¸”\n"
+#~ " -c=? อ่านà¹à¸Ÿà¹‰à¸¡à¸„่าตั้งนี้\n"
+#~ " -o=? à¸à¸³à¸«à¸™à¸”ตัวเลือà¸à¸„่าตั้งเป็นรายตัว เช่น -o dir::cache=/tmp\n"
+#~ "à¸à¸£à¸¸à¸“าอ่านข้อมูลเพิ่มเติมจาภmanual page apt-mark(8) à¹à¸¥à¸° apt.conf(5)"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "วิธีใช้: apt-sortpkgs [ตัวเลือà¸] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs เป็นเครื่องมืออย่างง่ายสำหรับเรียงลำดับà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸žà¸à¹€à¸à¸ˆ ตัวเลือภ-s\n"
+#~ "ใช้สำหรับระบุชนิดของà¹à¸Ÿà¹‰à¸¡à¸—ี่เรียง\n"
+#~ "\n"
+#~ "ตัวเลือà¸:\n"
+#~ " -h à¹à¸ªà¸”งข้อความช่วยเหลือนี้\n"
+#~ " -s เรียงตามà¹à¸Ÿà¹‰à¸¡à¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ด\n"
+#~ " -c=? อ่านà¹à¸Ÿà¹‰à¸¡à¸„่าตั้งนี้\n"
+#~ " -o=? à¸à¸³à¸«à¸™à¸”ตัวเลือà¸à¸„่าตั้งเป็นรายตัว เช่น -o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "โพรเซสลูà¸à¸¥à¹‰à¸¡à¹€à¸«à¸¥à¸§"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "ต้องระบุคู่ URL, ชื่อà¹à¸Ÿà¹‰à¸¡ อย่างน้อยหนึ่งคู่"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "สร้างไปป์ไม่สำเร็จ"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "เรียภgzip ไม่สำเร็จ"
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s สำหรับ %s คอมไพล์เมื่อ %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "สร้าง FILE* ไม่สำเร็จ"
+
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "วรรคที่ %u ในà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆ %s ผิดรูปà¹à¸šà¸š (ขณะà¹à¸ˆà¸‡ URI)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr "บรรทัด %lu ในà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆ %s ผิดรูปà¹à¸šà¸š ([ตัวเลือà¸] à¹à¸ˆà¸‡à¹„ม่ผ่าน)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "บรรทัด %lu ในà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆ %s ผิดรูปà¹à¸šà¸š ([ตัวเลือà¸] สั้นเà¸à¸´à¸™à¹„ป)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "บรรทัด %lu ในà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆ %s ผิดรูปà¹à¸šà¸š ([%s] ไม่ใช่à¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่า)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "บรรทัด %lu ในà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆ %s ผิดรูปà¹à¸šà¸š ([%s] ไม่มีคีย์)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr "บรรทัด %lu ในà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆ %s ผิดรูปà¹à¸šà¸š ([%s] คีย์ %s ไม่มีค่า)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "บรรทัด %lu ในà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆ %s ผิดรูปà¹à¸šà¸š (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "บรรทัด %lu ในà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆ %s ผิดรูปà¹à¸šà¸š (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "บรรทัด %lu ในà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆ %s ผิดรูปà¹à¸šà¸š (ขณะà¹à¸ˆà¸‡ URI)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "บรรทัด %lu ในà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆ %s ผิดรูปà¹à¸šà¸š (dist à¹à¸šà¸šà¸ªà¸±à¸¡à¸šà¸¹à¸£à¸“์)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "บรรทัด %lu ในà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆ %s ผิดรูปà¹à¸šà¸š (ขณะà¹à¸ˆà¸‡ dist)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "ไม่พบà¹à¸žà¸à¹€à¸à¸ˆ %s %s ขณะประมวลผลความขึ้นต่อà¹à¸Ÿà¹‰à¸¡"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "ไม่สามารถ stat รายà¸à¸²à¸£à¹à¸žà¸à¹€à¸à¸ˆà¸‹à¸­à¸£à¹Œà¸ª %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸à¹‡à¸šà¸‚้อมูลà¹à¸Ÿà¹‰à¸¡à¸—ี่ตระเตรียมให้"
+
+#, fuzzy
+#~ msgid "Does not start with a cleartext signature"
+#~ msgstr "à¹à¸Ÿà¹‰à¸¡ %s ไม่ได้ขึ้นต้นด้วยà¸à¸²à¸£à¸£à¸°à¸šà¸¸à¸à¸²à¸£à¹€à¸‹à¹‡à¸™à¸à¸³à¸à¸±à¸šà¸„รอบในตัวข้อความ"
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "ไม่พบผลรวมà¹à¸®à¸Šà¸ªà¸³à¸«à¸£à¸±à¸š '%s' ในà¹à¸Ÿà¹‰à¸¡ Release"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "บล็อคผู้ผลิต %s ไม่มีลายนิ้วมือ"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "ขนาดของพื้นที่ความเชื่อมโยงระหว่างà¹à¸žà¸à¹€à¸à¸ˆà¸—ั้งหมด: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "คุณมีพื้นที่ว่างเหลือไม่พอใน %s"
+
+#~ msgid "Done"
+#~ msgstr "เสร็จà¹à¸¥à¹‰à¸§"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "ไม่มีพวงà¸à¸¸à¸à¹à¸ˆà¸•à¸´à¸”ตั้งไว้ใน %s"
+
+#~ msgid "Is stdout a terminal?"
+#~ msgstr "stdout เป็นเทอร์มินัลหรือไม่?"
+
+#~ msgid "ioctl(TIOCGWINSZ) failed"
+#~ msgstr "ioctl(TIOCGWINSZ) ล้มเหลว"
+
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "เà¸à¸´à¸”ข้อผิดพลาดภายใน: à¸à¸²à¸£à¸›à¸£à¸±à¸šà¸£à¸¸à¹ˆà¸™à¸—ำความเสียหาย"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s ไม่ใช่à¹à¸žà¸à¹€à¸à¸ˆ DEB ที่ใช้à¸à¸²à¸£à¹„ด้"
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "à¸à¸³à¸¥à¸±à¸‡à¹ƒà¸Šà¹‰à¸ˆà¸¸à¸”เมานท์ซีดีรอม %s\n"
+#~ "à¸à¸³à¸¥à¸±à¸‡à¹€à¸¡à¸²à¸™à¸—์ซีดีรอม\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr "ไม่สามารถปรับà¹à¸à¹‰ %s ด้วย mmap à¹à¸¥à¸°à¸à¸²à¸£à¸à¸£à¸°à¸—ำà¹à¸Ÿà¹‰à¸¡ - ดูเหมือนà¹à¸žà¸•à¸Šà¹Œà¸ˆà¸°à¹€à¸ªà¸µà¸¢"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "ไม่สามารถปรับà¹à¸à¹‰ %s ด้วย mmap (à¹à¸•à¹ˆà¹„ม่พบข้อผิดพลาดที่เจาะจงเฉพาะ mmap) - "
+#~ "ดูเหมือนà¹à¸žà¸•à¸Šà¹Œà¸ˆà¸°à¹€à¸ªà¸µà¸¢"
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr "จะละเลยรุ่นเป้าหมาย '%s' ซึ่งไม่มีอยู่ของà¹à¸žà¸à¹€à¸à¸ˆ '%s'"
+
+#~ msgid "Downloading %s %s"
+#~ msgstr "à¸à¸³à¸¥à¸±à¸‡à¸”าวน์โหลด %s %s"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr "à¹à¸Ÿà¹‰à¸¡à¸™à¸µà¹‰à¹„ม่ใช่à¹à¸žà¸à¹€à¸à¸ˆ DEB ที่ใช้à¸à¸²à¸£à¹„ด้ ขาดข้อมูล '%s', '%s' หรือ '%s'"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5Sum ไม่ตรงà¸à¸±à¸™"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr "ไม่พบà¹à¸Ÿà¹‰à¸¡à¸ªà¸³à¸«à¸£à¸±à¸šà¹à¸žà¸à¹€à¸à¸ˆ %s คุณอาจต้องà¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¹à¸žà¸à¹€à¸à¸ˆà¸™à¸µà¹‰à¹€à¸­à¸‡"
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "ไม่สามารถเขียนบันทึà¸à¸›à¸à¸´à¸šà¸±à¸•à¸´à¸à¸²à¸£ เนื่องจาภopenpty() ล้มเหลว (ไม่ได้เมานท์ /dev/pts "
+#~ "หรือเปล่า?)\n"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "ไม่สามารถลบ %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "ไม่สามารถสร้าง %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "ไม่สามารถ stat %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr "ไดเรà¸à¸—อรี info à¹à¸¥à¸° temp ต้องอยู่ในระบบà¹à¸Ÿà¹‰à¸¡à¹€à¸”ียวà¸à¸±à¸™"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "ไม่สามารถเปลี่ยนไปยังไดเรà¸à¸—อรีระบบ %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "เà¸à¸´à¸”ข้อผิดพลาดภายในขณะอ่านชื่อà¹à¸žà¸à¹€à¸à¸ˆ"
+
+#~ msgid "Reading file listing"
+#~ msgstr "à¸à¸³à¸¥à¸±à¸‡à¸­à¹ˆà¸²à¸™à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸Ÿà¹‰à¸¡"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "เปิดà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸Ÿà¹‰à¸¡ '%sinfo/%s' ไม่สำเร็จ ถ้าคุณไม่สามารถเรียà¸à¹à¸Ÿà¹‰à¸¡à¸™à¸µà¹‰à¸„ืนได้ "
+#~ "à¸à¹‡à¹ƒà¸«à¹‰à¸ªà¸£à¹‰à¸²à¸‡à¹à¸Ÿà¹‰à¸¡à¸”ังà¸à¸¥à¹ˆà¸²à¸§à¹ƒà¸«à¹‰à¹€à¸›à¹‡à¸™à¹à¸Ÿà¹‰à¸¡à¹€à¸›à¸¥à¹ˆà¸² à¹à¸¥à¹‰à¸§à¸•à¸´à¸”ตั้งà¹à¸žà¸à¹€à¸à¸ˆà¸£à¸¸à¹ˆà¸™à¹€à¸”ิมซ้ำทันที"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "อ่านà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸Ÿà¹‰à¸¡ %sinfo/%s ไม่สำเร็จ"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "เà¸à¸´à¸”ข้อผิดพลาดภายในขณะอ่านโหนด"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "เปิดà¹à¸Ÿà¹‰à¸¡ diversion %sdiversions ไม่สำเร็จ"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "à¹à¸Ÿà¹‰à¸¡ diversion เสียหาย"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "ข้อมูลผิดพลาดในà¹à¸Ÿà¹‰à¸¡ diversion: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "เà¸à¸´à¸”ข้อผิดพลาดภายในขณะเพิ่มà¸à¸²à¸£à¹€à¸šà¸™à¹à¸Ÿà¹‰à¸¡"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "ต้องà¸à¸³à¸«à¸™à¸”ค่าตั้งต้นà¹à¸„ชของà¹à¸žà¸à¹€à¸à¸ˆà¸à¹ˆà¸­à¸™"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "หาข้อมูลส่วนหัว Package: ไม่พบ ที่ออฟเซ็ต %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "หมวด ConfFile เสียหายในà¹à¸Ÿà¹‰à¸¡ status ที่ออฟเซ็ต %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะà¹à¸ˆà¸‡ MD5 ที่ออฟเซ็ต %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "ไม่สามารถเปลี่ยนไดเรà¸à¸—อรีไปยัง %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "ไม่พบà¹à¸Ÿà¹‰à¸¡à¸„วบคุมที่ใช้à¸à¸²à¸£à¹„ด้"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "ไม่สามารถเปิดไปป์สำหรับ %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะอ่านจาà¸à¹‚พรเซส %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "ได้รับบรรทัดข้อมูลส่วนหัวยาวเà¸à¸´à¸™ %u อัà¸à¸‚ระ"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "à¹à¸Ÿà¹‰à¸¡ override %s ผิดรูปà¹à¸šà¸šà¸—ี่บรรทัด %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "à¹à¸Ÿà¹‰à¸¡ override %s ผิดรูปà¹à¸šà¸šà¸—ี่บรรทัด %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "à¹à¸Ÿà¹‰à¸¡ override %s ผิดรูปà¹à¸šà¸šà¸—ี่บรรทัด %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "ตัวคลายบีบอัด"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "read: ยังเหลือ %lu ที่ยังไม่ได้อ่าน à¹à¸•à¹ˆà¸‚้อมูลหมดà¹à¸¥à¹‰à¸§"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "write: ยังเหลือ %lu ที่ยังไม่ได้เขียน à¹à¸•à¹ˆà¹„ม่สามารถเขียนได้"
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะประมวลผล %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะประมวลผล %s (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะประมวลผล %s (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะประมวลผล %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะประมวลผล %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะประมวลผล %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะประมวลผล %s (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะประมวลผล %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะประมวลผล %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "ข้อผิดพลาดภายใน: ไม่พบสมาชิà¸"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr "E: รายà¸à¸²à¸£à¸­à¸²à¸£à¹Œà¸à¸´à¸§à¹€à¸¡à¸™à¸•à¹Œà¹ƒà¸™ Acquire::gpgv::Options ยาวเà¸à¸´à¸™à¹„ป จะจบà¸à¸²à¸£à¸—ำงาน"
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะประมวลผล %s (NewVersion2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "บรรทัด %u ในà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹à¸«à¸¥à¹ˆà¸‡à¹à¸žà¸à¹€à¸à¸ˆ %s ผิดรูปà¹à¸šà¸š (id ผู้ผลิต)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "ไม่สามารถเข้าใช้พวงà¸à¸¸à¸à¹à¸ˆ: '%s'"
+
+#~ msgid "Could not patch file"
+#~ msgstr "ไม่สามารถà¹à¸žà¸•à¸Šà¹Œà¹à¸Ÿà¹‰à¸¡"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "à¸à¸³à¸¥à¸±à¸‡à¸›à¸£à¸°à¸¡à¸§à¸¥à¸œà¸¥à¸à¸²à¸£à¸ªà¸°à¸à¸´à¸”สำหรับ %s"
+
+#~ msgid "Dynamic MMap ran out of room"
+#~ msgstr "เนื้อที่สำหรับทำ MMap à¹à¸šà¸šà¸žà¸¥à¸§à¸±à¸•à¹€à¸•à¹‡à¸¡à¹à¸¥à¹‰à¸§"
+
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "à¹à¸¥à¸°à¹€à¸™à¸·à¹ˆà¸­à¸‡à¸ˆà¸²à¸à¸„ุณได้สั่งดำเนินà¸à¸²à¸£à¹€à¸žà¸µà¸¢à¸‡à¸£à¸²à¸¢à¸à¸²à¸£à¹€à¸”ียวเท่านั้น à¸à¹‡à¹€à¸›à¹‡à¸™à¹„ปได้สูงว่าà¹à¸žà¸à¹€à¸à¸ˆà¸™à¸µà¹‰à¹€à¸ªà¸µà¸¢\n"
+#~ "คุณควรจะรายงานบั๊à¸à¸ªà¸³à¸«à¸£à¸±à¸šà¹à¸žà¸à¹€à¸à¸ˆà¸™à¸µà¹‰"
+
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "บรรทัด %d ยาวเà¸à¸´à¸™à¹„ป (สูงสุด %lu)"
+
+#~ msgid "Line %d too long (max %d)"
+#~ msgstr "บรรทัด %d ยาวเà¸à¸´à¸™à¹„ป (สูงสุด %d)"
+
+#~ msgid ""
+#~ "Found %i package indexes, %i source indexes, %i translation indexes and "
+#~ "%i signatures\n"
+#~ msgstr ""
+#~ "พบดัชนีà¹à¸žà¸à¹€à¸à¸ˆ %i รายà¸à¸²à¸£, ดัชนีซอร์ส %i รายà¸à¸²à¸£, ดัชนีคำà¹à¸›à¸¥ %i รายà¸à¸²à¸£ à¹à¸¥à¸°à¸¥à¸²à¸¢à¹€à¸‹à¹‡à¸™ %i "
+#~ "รายà¸à¸²à¸£\n"
+
+#~ msgid "openpty failed\n"
+#~ msgstr "openpty ล้มเหลว\n"
diff --git a/po/tl.po b/po/tl.po
new file mode 100644
index 000000000..89f884e01
--- /dev/null
+++ b/po/tl.po
@@ -0,0 +1,4245 @@
+# Tagalog messages for apt debconf.
+# Copyright (C) 2005 Software in the Public Interest, Inc.
+# This file is distributed under the same license as apt.
+# Itong talaksan ay ipinapamahagi sa parehong lisensya ng apt.
+# Eric Pareja <xenos@upm.edu.ph>, 2005
+# This file is maintained by Eric Pareja <xenos@upm.edu.ph>
+# Itong talaksan ay inaalagaan ni Eric Pareja <xenos@upm.edu.ph>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2007-03-29 21:36+0800\n"
+"Last-Translator: Eric Pareja <xenos@upm.edu.ph>\n"
+"Language-Team: Tagalog <debian-tl@banwa.upm.edu.ph>\n"
+"Language: tl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n>1;\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Hindi tanggap na signature ng arkibo"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Error sa pagbasa ng header ng miyembro ng arkibo"
+
+#: apt-inst/contrib/arfile.cc
+#, fuzzy, c-format
+msgid "Invalid archive member header %s"
+msgstr "Hindi tanggap na header ng miyembro ng arkibo"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Hindi tanggap na header ng miyembro ng arkibo"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Bitin ang arkibo. Sobrang iksi."
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Bigo ang pagbasa ng header ng arkibo"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Hindi mahanap ang paketeng %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Sirang arkibo"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Bigo ang checksum ng tar, sira ang arkibo"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Hindi kilalang uri ng TAR header %u, miyembrong %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Hindi ito tanggap na arkibong DEB, may kulang na miyembrong '%s'"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Internal error, hindi mahanap ang miyembrong %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Di maintindihang talaksang control"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Bigo sa pagsulat ng talaksang %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Bigo sa pagsara ng talaksang %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "Sobrang haba ang path na %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Binubuklat ang %s ng labis sa isang beses"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "Ang directory %s ay divertado"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Ang pakete ay sumusubok na magsulat sa target na diversion %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Sobrang haba ng path na diversion"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Bigo ang pag-stat ng %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Bigo ang pagpangalan muli ng %s tungong %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "Ang directory %s ay papalitan ng hindi-directory"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Bigo ang paghanap ng node sa kanyang hash bucket"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Sobrang haba ng path"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Patungan ng paketeng nag-match na walang bersion para sa %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Ang talaksang %s/%s ay pumapatong sa isang talaksan sa paketeng %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Hindi mabasa ang %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Hindi ma-stat ang %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "Tinawagan ang DropNode sa naka-link pa na node"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Bigo sa paghanap ng elemento ng hash!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Bigo ang pagreserba ng diversion"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Internal error sa AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Sinusubukang patungan ang diversion, %s -> %s at %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Dobleng pagdagdag ng diversion %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Nadobleng talaksang conf %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Ang directory %s ay divertado"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Ang directory %s ay divertado"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Ang directory %s ay divertado"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Ang directory %s ay divertado"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "Ang directory %s ay divertado"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Bigo ang pagbasa ng link %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Hash Sum mismatch"
+msgstr "Di tugmang MD5Sum"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "pagpalit ng pangalan ay bigo, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Di tugmang laki"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "Di tanggap na operasyon %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Error sa pagsulat"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Hindi ko mahanap ang talaksan para sa paketeng %s. Maaaring kailanganin "
+"niyong ayusin ng de kamay ang paketeng ito. (dahil sa walang arch)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"Sira ang talaksang index ng mga pakete. Walang Filename: field para sa "
+"paketeng %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Kumokonekta sa %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Ang driver ng paraang %s ay hindi mahanap."
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "Paki-siguro na nakaluklok ang paketeng 'dpkg-dev'.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Hindi umandar ng tama ang paraang %s"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+"Ikasa ang disk na may pangalang: '%s' sa drive '%s' at pindutin ang enter."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "List directory %spartial is missing."
+msgstr "Nawawala ang directory ng talaan %spartial."
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Nawawala ang directory ng arkibo %spartial."
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Unable to lock directory %s"
+msgstr "Hindi maaldaba ang directory ng talaan"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "Hindi suportado ang uri ng talaksang index na '%s'"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Di makalipat sa %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Kinukuha ang talaksang %li ng %li (%s ang natitira)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Kinukuha ang talaksang %li ng %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"Kailangan ma-instol muli ang paketeng %s, ngunit hindi ko mahanap ang arkibo "
+"para dito."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Error, pkgProblemResolver::Resolve ay naghudyat ng mga break, maaaring dulot "
+"ito ng mga paketeng naka-hold."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr ""
+"Hindi maayos ang mga problema, mayroon kayong sirang mga pakete na naka-hold."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr ""
+"Hindi ma-parse o mabuksan ang talaan ng mga pakete o ng talaksang estado."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr ""
+"Maaaring patakbuhin niyo ang apt-get update upang ayusin ang mga problemang "
+"ito"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Hindi mabasa ang talaan ng pagkukunan (sources)."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Error sa pag-compile ng regex - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Release '%s' para sa '%s' ay hindi nahanap"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Bersyon '%s' para sa '%s' ay hindi nahanap"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Hindi mahanap ang paketeng %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Hindi mahanap ang paketeng %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Hindi mahanap ang paketeng %s"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Hindi mahanap ang paketeng %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Labis ang haba ng linyang %u sa talaksang pagkukunan %s."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Ina-unmount ang CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Ginagamit ang %s bilang mount point ng CD-ROM\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Hinihintay ang disc...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Sinasalang ang CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Kinikilala..."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Naka-imbak na Label: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Sinisiyasat ang Disc para sa talaksang index...\n"
+
+#: apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Nakahanap ng %i na index ng mga pakete, %i na index ng source at %i na "
+"signature\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "Found label '%s'\n"
+msgstr "Naka-imbak na Label: %s \n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Hindi yan tanggap na pangalan, subukan muli.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Ang Disc na ito ay nagngangalang: \n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Kinokopya ang Listahan ng mga Pakete"
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Sinusulat ang bagong listahan ng pagkukunan\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Mga nakatala sa Listahan ng Source para sa Disc na ito ay:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Hindi ma-stat ang %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Di mai-stat ang mount point %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Bigo sa pag-stat ng cdrom"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Opsyon sa command line '%c' [mula %s] ay di kilala."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Opsyon sa command line %s ay di naintindihan."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Opsyon sa command line %s ay hindi boolean"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Opsyon %s ay nangangailangan ng argumento"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+"Opsyon %s: Ang pagtakda ng aytem sa pagkaayos ay nangangailangan ng "
+"=<halaga>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Opsyon %s ay nangangailangan ng argumentong integer, hindi '%s'"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Opsyon '%s' ay labis ang haba"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "Hindi naintindihan ang %s, subukan ang true o false."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Di tanggap na operasyon %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Hindi kilalang katagang uri: '%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Binubuksan ang talaksang pagsasaayos %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Syntax error %s:%u: Nag-umpisa ang block na walang pangalan."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Syntax error %s:%u: Maling anyo ng Tag"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Syntax error %s:%u: May basura matapos ng halaga"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"Syntax error %s:%u: Maaari lamang gawin ang mga direktiba sa tuktok na antas"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Syntax error %s:%u: Labis ang pagkaka-nest ng mga include"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Syntax error %s:%u: Sinama mula dito"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Syntax error %s:%u: Di suportadong direktiba '%s'"
+
+#: apt-pkg/contrib/configuration.cc
+#, fuzzy, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Syntax error %s:%u: Maaari lamang gawin ang mga direktiba sa tuktok na antas"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Syntax error %s:%u: May basura sa dulo ng talaksan"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Problema sa pag-unlink ng talaksan"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr ""
+"Hindi ginagamit ang pagaldaba para sa basa-lamang na talaksang aldaba %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Hindi mabuksan ang talaksang aldaba %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr ""
+"Hindi gumagamit ng pag-aldaba para sa talaksang aldaba %s na naka-mount sa "
+"nfs"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "hindi makuha ang aldaba %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Naghintay, para sa %s ngunit wala nito doon"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Nakatanggap ang sub-process %s ng segmentation fault."
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Nakatanggap ang sub-process %s ng segmentation fault."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Naghudyat ang sub-process %s ng error code (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Ang sub-process %s ay lumabas ng di inaasahan"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Error sa pagbasa"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Error sa pagsulat"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Problema sa pagsara ng talaksan"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Bigo ang paglikha ng subprocess IPC"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Bigo ang pag-exec ng taga-compress"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Hindi mabuksan ang talaksang %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Hindi makapag-bukas ng pipe para sa %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "pagbasa, mayroong %lu na babasahin ngunit walang natira"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "pagsulat, mayroon pang %lu na isusulat ngunit hindi makasulat"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the file %s"
+msgstr "Problema sa pagsara ng talaksan"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Problema sa pag-sync ng talaksan"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Problema sa pag-sync ng talaksan"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Hindi ma-stat ang %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Hindi makapagsulat sa %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Hindi mai-mmap ang talaksang walang laman"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Hindi makagawa ng mmap ng %lu na byte"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Hindi makapag-bukas ng pipe para sa %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to close mmap"
+msgstr "Hindi mabuksan %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to synchronize mmap"
+msgstr "Hindi ma-invoke "
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Hindi makagawa ng mmap ng %lu na byte"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Failed to truncate file"
+msgstr "Bigo sa pagsulat ng talaksang %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Error!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Tapos"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... Tapos"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Piniling %s ay hindi nahanap"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Hindi ma-parse ang talaksang pakete %s (1)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "No sections in Release file %s"
+msgstr "Paunawa, pinili ang %s imbes na %s\n"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Di tanggap na linya sa talaksang diversion: %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Hindi ma-parse ang talaksang pakete %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, fuzzy, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Hindi maaldaba ang directory ng talaan"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr ""
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Installing %s"
+msgstr "Iniluklok ang %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Isasaayos ang %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Tinatanggal ang %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removing %s"
+msgstr "Natanggal ng lubusan ang %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "Iniluklok ang %s"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Directory '%s' missing"
+msgstr "Nawawala ang directory ng talaan %spartial."
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, fuzzy, c-format
+msgid "Could not open file '%s'"
+msgstr "Hindi mabuksan ang talaksang %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Hinahanda ang %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Binubuklat ang %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Hinahanda ang %s upang isaayos"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Naghahanda para sa pagtanggal ng %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "Tinanggal ang %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Naghahanda upang tanggalin ng lubusan ang %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "Natanggal ng lubusan ang %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "Hindi makapagsulat sa %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Ginagawa ang puno ng mga dependensiya"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Bersyong Kandidato"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Pagbuo ng Dependensiya"
+
+#: apt-pkg/depcache.cc
+#, fuzzy
+msgid "Reading state information"
+msgstr "Pinagsasama ang magagamit na impormasyon"
+
+#: apt-pkg/depcache.cc
+#, fuzzy, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Bigo ang pagbukas ng %s"
+
+#: apt-pkg/depcache.cc
+#, fuzzy, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Bigo sa pagsulat ng talaksang %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "Nagsulat ng %i na record.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "Nagsulat ng %i na record na may %i na talaksang kulang.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "Nagsulat ng %i na record na may %i na talaksang mismatch\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"Nagsulat ng %i na record na may %i na talaksang kulang at %i na talaksang "
+"mismatch\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, fuzzy, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Di tugmang MD5Sum"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Hindi suportado ang sistema ng paketeng '%s'"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Hindi matuklasan ang akmang uri ng sistema ng pakete "
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "Hindi mabuksan ang talaksang %s"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Ang takbo ng pag-instol na ito ay nangangailangan ng pansamantalang "
+"pagtanggal ng paketeng esensyal na %s dahil sa isang Conflicts/Pre-Depends "
+"loop. Madalas ay masama ito, ngunit kung nais niyo talagang gawin ito, i-"
+"activate ang APT::Force-LoopBreak na option."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Walang laman ang cache ng pakete"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Sira ang talaksan ng cache ng pakete"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Ang talaksan ng cache ng pakete ay hindi magamit na bersyon"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Ang APT na ito ay hindi nagsusuporta ng versioning system '%s'"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Ang cache ng pakete ay binuo para sa ibang arkitektura"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Sira ang talaksan ng cache ng pakete"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Dependensiya"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "PreDepends"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Mungkahi"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Tunggali"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Rekomendado"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Pumapalit"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Linalaos"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "importante"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "kailangan"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "standard"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "extra"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "optional"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Hindi akma ang versioning system ng cache"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "May naganap na error habang prinoseso ang %s (FindPkg)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr ""
+"Wow, nalagpasan niyo ang bilang ng pangalan ng pakete na kaya ng APT na ito."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Wow, nalagpasan niyo ang bilang ng bersyon na kaya ng APT na ito."
+
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Wow, nalagpasan niyo ang bilang ng bersyon na kaya ng APT na ito."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "Wow, nalagpasan niyo ang bilang ng dependensiya na kaya ng APT na ito."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Binabasa ang Listahan ng mga Pakete"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "IO Error sa pag-imbak ng source cache"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Hindi suportado ang uri ng talaksang index na '%s'"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, fuzzy, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Di tanggap na record sa talaksang pagtatangi, walang Package header"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Hindi naintindihan ang uri ng pin %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Walang prioridad (o sero) na nakatakda para sa pin"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Maling anyo ng override %s linya %lu #1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Binubuksan %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Maling anyo ng linyang %u sa talaksang pagkukunan %s (uri)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Hindi kilalang uri '%s' sa linyang %u sa talaksan ng pagkukunan %s"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Maling anyo ng linyang %u sa talaksang pagkukunan %s (uri)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Hindi kilalang uri '%s' sa linyang %u sa talaksan ng pagkukunan %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Kailangan niyong maglagay ng 'source' URIs sa inyong sources.list"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Bigo sa pagkuha ng %s %s"
+
+#: apt-pkg/update.cc
+#, fuzzy
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"May mga talaksang index na hindi nakuha, sila'y di pinansin, o ginamit ang "
+"mga luma na lamang."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Sinusuri ang pag-upgrade"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Tumama:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Kunin:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "DiPansin:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Err:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Nakakuha ng %sB ng %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [May ginagawa]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Pagpalit ng Media: Ikasa ang disk na may pangalang\n"
+" '%s'\n"
+"sa drive '%s' at pindutin ang enter\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Inaayos ang mga dependensiya..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " ay bigo."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Hindi maayos ang mga dependensiya"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Hindi mai-minimize ang upgrade set"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Tapos"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+"Maaari ninyong patakbuhin ang 'apt --fix-broken install' upang ayusin ito."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"May mga dependensiyang kulang. Subukan ang 'apt --fix-broken install' na "
+"walang mga pakete (o magtakda ng solusyon)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Paunawa, pinili ang %s para sa regex '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Paunawa, pinili ang %s para sa regex '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Paunawa, pinili ang %s para sa regex '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Ang paketeng %s ay paketeng birtwal na bigay ng:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [Nakaluklok]"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Not candidate version]"
+msgstr "Bersyong Kandidato"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Dapat kayong mamili ng isa na iluluklok."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Hindi magamit ang %s, ngunit ito'y tinutukoy ng ibang pakete.\n"
+"Maaaring nawawala ang pakete, ito'y laos na, o ito'y makukuha lamang\n"
+"sa ibang pinagmulan.\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Gayunpaman, ang sumusunod na mga pakete ay humahalili sa kanya:"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Ang paketeng %s ay walang kandidatong maaaring instolahin"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr ""
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "Hindi nakaluklok ang paketeng %s, kaya't hindi ito tinanggal\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Hindi nakaluklok ang paketeng %s, kaya't hindi ito tinanggal\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Paunawa, pinili ang %s imbes na %s\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Ang APT na ito ay may Kapangyarihan Super Kalabaw."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Walang nahanap na mga pakete"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr ""
+"BABALA: Ang susunod na mga pakete ay hindi matiyak ang pagka-awtentiko!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr ""
+"Ipina-walang-bisa ang babala tungkol sa pagka-awtentiko ng mga pakete.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "May mga paketeng hindi matiyak ang pagka-awtentiko"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Iluklok ang mga paketeng ito na walang beripikasyon?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "May mga problema at -y ay ginamit na walang --force-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Hindi matantsa ang libreng puwang sa %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Kulang kayo ng libreng puwang sa %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Hindi maaldaba ang directory ng download"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"May mga paketeng hindi ma-instol. Maaring may hiniling kayong imposible\n"
+"o kung kayo'y gumagamit ng pamudmod na unstable ay may ilang mga paketeng\n"
+"kailangan na hindi pa nalikha o linipat mula sa Incoming."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr ""
+"Ang sumusunod na impormasyon ay maaaring makatulong sa pag-ayos ng problema:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Sirang mga pakete"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Hindi nakuha ang ilang mga arkibo, maaaring patakbuhin ang apt-get update o "
+"subukang may --fix-missing?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr ""
+"Error na internal, tinawagan ang InstallPackages na may sirang mga pakete!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr ""
+"May mga paketeng kailangang tanggalin ngunit naka-disable ang Tanggal/Remove."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "May mga problema at -y ay ginamit na walang --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "May mga problema at -y ay ginamit na walang --force-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Error na internal, hindi natapos ang pagsaayos na pagkasunud-sunod"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Nakapagtataka... Hindi magkatugma ang laki, mag-email sa apt@packages.debian."
+"org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Kailangang kumuha ng %sB/%sB ng arkibo.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Kailangang kumuha ng %sB ng arkibo.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr ""
+"Matapos magbuklat ay %sB na karagdagang puwang sa disk ang magagamit.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Matapos magbuklat ay %sB na puwang sa disk ang mapapalaya.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "Tinakdang Trivial Only ngunit hindi ito operasyong trivial."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Oo, gawin ang sinasabi ko!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Kayo ay gagawa ng bagay na maaaring makasama sa inyong sistema.\n"
+"Upang magpatuloy, ibigay ang pariralang '%s'\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Abort."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Nais niyo bang magpatuloy?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "May mga talaksang hindi nakuha"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Kumpleto ang pagkakuha ng mga talaksan sa modong pagkuha lamang"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing at pagpalit ng media ay kasalukuyang hindi suportado"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Hindi maayos ang mga kulang na pakete."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Ina-abort ang pag-instol."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Error na internal, may nasira ang problem resolver"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "Ang sumusunod na mga paketeng BAGO ay iluluklok:"
+msgstr[1] "Ang sumusunod na mga paketeng BAGO ay iluluklok:"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "Ang sumusunod na mga paketeng BAGO ay iluluklok:"
+msgstr[1] "Ang sumusunod na mga paketeng BAGO ay iluluklok:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Ang mga sumusunod na extra na pakete ay luluklokin:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Mga paketeng mungkahi:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Mga paketeng rekomendado:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+"Linaktawan ang %s, ito'y nakaluklok na at hindi nakatakda ang upgrade.\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"Linaktawan ang %s, ito'y nakaluklok na at hindi nakatakda ang upgrade.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "Ang pagluklok muli ng %s ay hindi maaari, hindi ito makuha.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s ay pinakabagong bersyon na.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to manually installed.\n"
+msgstr "ngunit ang %s ay iluluklok"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Ang napiling bersyon %s (%s) para sa %s\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Ang napiling bersyon %s (%s) para sa %s\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Nakaluklok]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [Nakaluklok]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [Nakaluklok]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [Nakaluklok]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "ngunit ang %s ay nakaluklok"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "ngunit ang %s ay iluluklok"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "ngunit hindi ito maaaring iluklok"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "ngunit ito ay birtwal na pakete"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "ngunit ito ay hindi iluluklok"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "ngunit ito ay hindi nakaluklok"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " o"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Ang sumusunod na mga pakete ay may kulang na dependensiya:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Ang sumusunod na mga paketeng BAGO ay iluluklok:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Ang sumusunod na mga pakete ay TATANGGALIN:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Ang sumusunod na mga pakete ay hinayaang maiwanan:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Ang susunod na mga pakete ay iu-upgrade:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Ang susunod na mga pakete ay ida-DOWNGRADE:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Ang susunod na mga hinawakang mga pakete ay babaguhin:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (dahil sa %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"BABALA: Ang susunod na mga paketeng esensyal ay tatanggalin.\n"
+"HINDI ito dapat gawin kung hindi niyo alam ng husto ang inyong ginagawa!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu na nai-upgrade, %lu na bagong luklok, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu iniluklok muli, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu nai-downgrade, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu na tatanggalin at %lu na hindi inupgrade\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu na hindi lubos na nailuklok o tinanggal.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[O/h]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[o/H]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "O"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "H"
+
+#: apt-private/private-search.cc
+#, fuzzy
+msgid "You must give at least one search pattern"
+msgstr "Kailangan niyong magbigay ng isa lamang na pattern"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Wala sa sync ang talaksan ng paketeng %s."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Talaksang Pakete:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "Wala sa sync ang cache, hindi ma-x-ref ang talaksang pakete"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Mga naka-Pin na Pakete:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Nakaluklok: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Kandidato: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(wala)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Talaang Bersyon:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Hindi mahanap ang paketeng %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Hindi mahanap ang paketeng %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Hindi mahanap ang paketeng %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Hindi ma-stat ang talaan ng pagkukunan ng pakete %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Kailangang magtakda ng kahit isang pakete na kunan ng source"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Hindi mahanap ang paketeng source para sa %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Linaktawan ang nakuha na na talaksan '%s'\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Kailangang kumuha ng %sB/%sB ng arkibong source.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Kailangang kumuha ng %sB ng arkibong source.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Kunin ang Source %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Bigo sa pagkuha ng ilang mga arkibo."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Linaktawan ang pagbuklat ng nabuklat na na source sa %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Bigo ang utos ng pagbuklat '%s'.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Paki-siguro na nakaluklok ang paketeng 'dpkg-dev'.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Utos na build '%s' ay bigo.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Hindi makuha ang impormasyong build-dependency para sa %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "Walang build depends ang %s.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr "Kailangang magtakda ng kahit isang pakete na susuriin ang builddeps"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Bigo sa pagproseso ng build dependencies"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Bigo sa pagproseso ng build dependencies"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Bigo ang pagpangalan muli ng %s tungong %s"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Paketeng %s bersyon %s ay may kulang na dep:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Ang utos na update ay hindi tumatanggap ng mga argumento"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "Ang utos na update ay hindi tumatanggap ng mga argumento"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Kabuuan ng mga Pakete : "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total package structures: "
+msgstr "Kabuuan ng mga Pakete : "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Normal na Pakete: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Purong Birtwual na Pakete: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Nag-iisang Birtwal na Pakete: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Halong Birtwal na Pakete: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Kulang/Nawawala: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Kabuuan ng Natatanging mga Bersyon: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total distinct descriptions: "
+msgstr "Kabuuan ng Natatanging mga Bersyon: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Kabuuan ng mga Dependensiya: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Kabuuan ng ugnayang Ber/Talaksan: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total Desc/File relations: "
+msgstr "Kabuuan ng ugnayang Ber/Talaksan: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Kabuuan ng Mapping ng Provides: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Kabuuan ng Globbed String: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Kabuuan ng Hindi Nagamit na puwang: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Kabuuan ng puwang na napag-tuosan: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Ipakita ang mga record ng source"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Maghanap sa listahan ng mga pakete ng regex pattern"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Ipakita ang impormasyon tungkol sa ganap na dependensiya ng pakete"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Ipakita ang impormasyong kabaliktarang dependensiya ng pakete"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Ipakita ang nababasang record ng pakete"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Ipakita ang listahan ng pangalan ng lahat ng mga pakete"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Ipakita ang pagkaayos ng mga policy"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Bigyan ng pangalan ang Disk na ito, tulad ng 'Debian 2.1r1 Disk 1'"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Paki-pasok ang isang Disk sa drive at pindutin ang enter"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Bigo ang pagpangalan muli ng %s tungong %s"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Ulitin ang prosesong ito para sa lahat ng mga CD sa inyong set."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Mga argumento ay hindi naka-pares"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Pag-gamit: apt-config [mga option] utos\n"
+"\n"
+"Ang apt-config ay simpleng kagamitan sa pagbasa ng talaksang pagkaayos ng "
+"APT\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Pag-gamit: apt-extracttemplates talaksan1 [talaksan2 ...]\n"
+"\n"
+"Ang apt-extracttemplates ay kagamitan sa pagkuha ng info tungkol\n"
+"sa pagkaayos at template mula sa mga paketeng debian\n"
+"\n"
+"Mga opsyon:\n"
+" -h Itong tulong na ito\n"
+" -t Itakda ang dir na pansamantala\n"
+" -c=? Basahin ang talaksang pagkaayos na ito\n"
+" -o=? Itakda ang isang optiong pagkaayos, hal. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Hindi makuha ang bersyon ng debconf. Nakaluklok ba ang debconf?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Hindi mahanap ang paketeng %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "ngunit ang %s ay iluluklok"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Error na internal, may nasira ang problem resolver"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Suportadong mga Module:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Pag-gamit: apt-get [mga option] utos\n"
+" apt-get [mga option] install|remove pkt1 [pkt2 ...]\n"
+" apt-get [mga option] source pkt1 [pkt2 ...]\n"
+"\n"
+"Ang apt-get ay payak na command line interface para sa pagkuha at\n"
+"pag-instol ng mga pakete. Ang pinakamadalas na gamiting utos ay update\n"
+"at install.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Kunin ang bagong listahan ng mga pakete"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Gumawa ng upgrade"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Mag-instol ng bagong mga pakete (pkt ay libc6 hindi libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Mag-tanggal ng mga pakete"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr ""
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Mag-upgrade ng pamudmod, basahin ang apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Sundan ang mga pinili sa dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Magsaayos ng build-dependencies para sa mga paketeng source"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Burahin ang mga nakuhang mga talaksang naka-arkibo"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Burahin ang mga lumang naka-arkibo na nakuhang mga talaksan"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Tiyakin na walang mga sirang dependensiya"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Kumuha ng arkibong source"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "Kailangang magtakda ng kahit isang pakete na kunan ng source"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Pag-gamit: apt-extracttemplates talaksan1 [talaksan2 ...]\n"
+"\n"
+"Ang apt-extracttemplates ay kagamitan sa pagkuha ng info tungkol\n"
+"sa pagkaayos at template mula sa mga paketeng debian\n"
+"\n"
+"Mga opsyon:\n"
+" -h Itong tulong na ito\n"
+" -t Itakda ang dir na pansamantala\n"
+" -c=? Basahin ang talaksang pagkaayos na ito\n"
+" -o=? Itakda ang isang optiong pagkaayos, hal. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Pag-gamit: apt-extracttemplates talaksan1 [talaksan2 ...]\n"
+"\n"
+"Ang apt-extracttemplates ay kagamitan sa pagkuha ng info tungkol\n"
+"sa pagkaayos at template mula sa mga paketeng debian\n"
+"\n"
+"Mga opsyon:\n"
+" -h Itong tulong na ito\n"
+" -t Itakda ang dir na pansamantala\n"
+" -c=? Basahin ang talaksang pagkaayos na ito\n"
+" -o=? Itakda ang isang optiong pagkaayos, hal. -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "ngunit ito ay hindi nakaluklok"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "ngunit ang %s ay iluluklok"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "ngunit ang %s ay iluluklok"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s ay pinakabagong bersyon na.\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s ay pinakabagong bersyon na.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "ngunit ang %s ay iluluklok"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Bigo ang pagbukas ng %s"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Di kilalang record ng pakete!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "Binabasa ang Listahan ng mga Pakete"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "Mga naka-Pin na Pakete:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Sirang mga pakete"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "ngunit ito ay birtwal na pakete"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "Pinagsasama ang magagamit na impormasyon"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Maling nakatakda na default!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Pindutin ang enter upang magpatuloy."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr ""
+
+#: dselect/install
+#, fuzzy
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "May mga error na naganap habang nagbubuklat. Isasaayos ko ang"
+
+#: dselect/install
+#, fuzzy
+msgid "will be configured. This may result in duplicate errors"
+msgstr "mga paketeng naluklok. Maaaring dumulot ito ng mga error na doble"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"o mga error na dulot ng kulang na dependensiya. Ito ay ayos lamang, yun lang"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"sa taas nitong kalatas ang importante. Paki-ayusin ang mga ito at patakbuhin "
+"muli ang [I]luklok/Instol."
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Pinagsasama ang magagamit na impormasyon"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Mahaba masyado ang talaan ng extensyon ng mga pakete"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Error sa pagproseso ng directory %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Mahaba masyado ang talaan ng extensyon ng pagkukunan (source)"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Error sa pagsulat ng panimula sa talaksang nilalaman (contents)"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Error sa pagproseso ng Contents %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Pag-gamit: apt-ftparchive [mga option] utos\n"
+"Mga utos: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [mga grupo]\n"
+" clean config\n"
+"\n"
+"Ang apt-ftparchive ay gumagawa ng talaksang index para sa arkibong Debian.\n"
+"Suportado nito ang maraming estilo ng pagbuo mula sa awtomatikong buo\n"
+"at kapalit ng dpkg-scanpackages at dpkg-scansources\n"
+"\n"
+"Bumubuo ang apt-ftparchive ng mga talaksang Package mula sa puno ng mga\n"
+".deb. Ang talaksang Package ay naglalaman ng laman ng lahat ng control "
+"field\n"
+"mula sa bawat pakete pati na rin ang MD5 hash at laki ng talaksan. "
+"Suportado\n"
+"ang pag-gamit ng talaksang override upang pilitin ang halaga ng Priority at "
+"Section.\n"
+"\n"
+"Bumubuo din ang apt-ftparchive ng talaksang Sources mula sa puno ng mga\n"
+".dsc. Ang option na --source-override ay maaaring gamitin upang itakda\n"
+"ang talaksang override ng src\n"
+"\n"
+"Ang mga utos na 'packages' at 'sources' ay dapat patakbuhin sa ugat ng\n"
+"puno. Kailangan nakaturo ang BinaryPath sa ugat ng paghahanap na recursive\n"
+"at ang talaksang override ay dapat naglalaman ng mga flag na override. Ang\n"
+"pathprefix ay dinudugtong sa harap ng mga pangalan ng talaksan kung "
+"mayroon.\n"
+"Halimbawa ng pag-gamit mula sa arkibong Debian:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Mga option:\n"
+" -h Itong tulong na ito\n"
+" --md5 Pagbuo ng MD5\n"
+" -s=? Talaksang override ng source\n"
+" -q Tahimik\n"
+" -d=? Piliin ang optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Pagbuo ng talaksang contents\n"
+" -c=? Basahin itong talaksang pagkaayos\n"
+" -o=? Itakda ang isang option na pagkaayos"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Walang mga pinili na tugma"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "May mga talaksang kulang sa grupo ng talaksang pakete `%s'"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "Nasira ang DB, pinalitan ng pangalan ang talaksan sa %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "Luma ang DB, sinusubukang maupgrade ang %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Hindi tanggap ang anyo ng DB. Kung kayo ay nagsariwa mula sa nakaraang "
+"bersiyon ng apt, tanggalin at likhain muli ang database."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Hindi mabuksan ang talaksang DB %s: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Bigo ang pagbasa ng link %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Walang kontrol rekord ang arkibo"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Hindi makakuha ng cursor"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Bigo ang pagreserba ng memory"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Hindi kilalang algorithmong compression '%s'"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Kailangan ng compression set ang compressed output %s"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Bigo sa paglikha ng IPC pipe sa subprocess"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Bigo ang pag-fork"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Anak para sa pag-Compress"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Error na internal, bigo ang paglikha ng %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Bigo ang IO sa subprocess/talaksan"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Bigo ang pagbasa habang tinutuos ang MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Hindi mabuksan %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Maling anyo ng override %s linya %lu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Bigo ang pagbasa ng talaksang override %s"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Maling anyo ng override %s linya %lu #1"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Maling anyo ng override %s linya %lu #2"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Maling anyo ng override %s linya %lu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "W: Hindi mabasa ang directory %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "W: Hindi ma-stat %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "E: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "W: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "E: Mga error ay tumutukoy sa talaksang "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Bigo sa pag-resolba ng %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Bigo ang paglakad sa puno"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Bigo ang pagbukas ng %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Bigo ang pag-link ng %s sa %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " DeLink limit na %sB tinamaan.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Walang field ng pakete ang arkibo"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s ay walang override entry\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " Tagapangalaga ng %s ay %s hindi %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s ay walang override entry para sa pinagmulan\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s ay wala ring override entry na binary\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Naghihintay ng panimula"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "Nagpadala ang HTTP server ng di tanggap na reply header"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Maling linyang panimula"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "Nagpadala ang HTTP server ng di tanggap na Content-Length header"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "Nagpadala ang HTTP server ng di tanggap na Content-Range header"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Sira ang range support ng HTTP server na ito"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Di kilalang anyo ng petsa"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Maling datos sa panimula"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Bigo ang koneksyon"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Internal na error"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Hindi mabasa ang database ng cdrom %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Paki-gamit ang apt-cdrom upang makilala ng APT itong CD na ito. Hindi "
+"maaaring gamitin ang apt-get update upang magdagdag ng bagong mga CD"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Maling CD"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Hindi mai-unmount ang CD-ROM sa %s, maaaring ginagamit pa ito."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Hindi nahanap ang Disk."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Hindi Nahanap ang Talaksan"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Kumokonekta sa %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Hindi makalikha ng socket para sa %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Hindi maumpisahan ang koneksyon sa %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Hindi maka-konekta sa %s:%s (%s), nag-timeout ang koneksyon"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Bigo"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Hindi maka-konekta sa %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Kumokonekta sa %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Hindi maresolba ang '%s'"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Pansamantalang kabiguan sa pagresolba ng '%s'"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "May naganap na kababalaghan sa pagresolba ng '%s:%s' (%i)"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "May naganap na kababalaghan sa pagresolba ng '%s:%s' (%i)"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Hindi maka-konekta sa %s %s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Bigo ang pag-stat"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Di tanggap na URI, mga lokal na URI ay di dapat mag-umpisa ng //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Pumapasok"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Hindi malaman ang pangalan ng peer"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Hindi malaman ang pangalang lokal"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Inayawan ng server ang ating koneksyon at ang sabi ay: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "Bigo ang USER/GUMAGAMIT, sabi ng server ay: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "Bigo ang PASS, sabi ng server ay: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"May tinakdang katuwang na server ngunit walang login script, walang laman "
+"ang Acquire::ftp::ProxyLogin."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Bigo ang utos sa login script '%s', sabi ng server ay: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "Bigo ang TYPE, sabi ng server ay: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Lumipas ang koneksyon"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Sinarhan ng server ang koneksyon"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "May sagot na bumubo sa buffer."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Sira ang protocol"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Hindi maka-likha ng socket"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Hindi maka-konekta sa socket ng datos, nag-time-out ang koneksyon"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Hindi maka-konekta sa socket na passive."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "di makakuha ang getaddrinfo ng socket na nakikinig"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Hindi maka-bind ng socket"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Hindi makarinig sa socket"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Hindi malaman ang pangalan ng socket"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Hindi makapagpadala ng utos na PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Di kilalang pamilya ng address %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "Bigo ang EPRT, sabi ng server ay: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Nag-timeout ang socket ng datos"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Hindi makatanggap ng koneksyon"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Problema sa pag-hash ng talaksan"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Hindi makakuha ng talaksan, sabi ng server ay '%s'"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Nag-timeout ang socket ng datos"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Bigo ang paglipat ng datos, sabi ng server ay '%s'"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Tanong"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Hindi ma-invoke "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Hindi kukulang sa isang hindi tanggap na lagda ang na-enkwentro."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Error na internal: Tanggap na lagda, ngunit hindi malaman ang key "
+"fingerprint?!"
+
+#: methods/gpgv.cc
+#, fuzzy
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Hindi maitakbo ang '%s' upang maberipika ang lagda (nakaluklok ba ang gnupg?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Hindi kilalang error sa pag-execute ng apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Ang sumusunod na mga lagda ay imbalido:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Ang sumusunod na mga lagda ay hindi maberipika dahil ang public key ay hindi "
+"available:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Error sa pagsusulat sa talaksan"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Error sa pagbasa mula sa server, sinarhan ng remote ang koneksyon"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Error sa pagbasa mula sa server"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Error sa pagsulat sa talaksan"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Bigo ang pagpili"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Nag-timeout ang koneksyon"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Error sa pagsulat ng talaksang output"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Hindi mabuksan ang talaksang %s"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Hindi mabuksan ang talaksang %s"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr ""
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Bigo ang pagtakda ng oras ng pagbago"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Nagsara ng maaga ang koneksyon"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr ""
+#~ "May mga kulang na dependensiya. Subukan niyong gamitin ang --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Maaaring patakbuhin niyo ang 'apt --fix-broken install' upang ayusin ang "
+#~ "mga ito:"
+
+#~ msgid "(not found)"
+#~ msgstr "(hindi nahanap)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Naka-Pin na Pakete: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "Walang public key na magamit para sa sumusunod na key ID:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "Ang directory %s ay divertado"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "Dependensiyang %s para sa %s ay hindi mabuo dahil ang paketeng %s ay "
+#~ "hindi mahanap"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "Dependensiyang %s para sa %s ay hindi mabuo dahil ang paketeng %s ay "
+#~ "hindi mahanap"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Bigo sa pagbuo ng dependensiyang %s para sa %s: Ang naka-instol na "
+#~ "paketeng %s ay bagong-bago pa lamang."
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "Dependensiyang %s para sa %s ay hindi mabuo dahil walang magamit na "
+#~ "bersyon ng paketeng %s na tumutugon sa kinakailangang bersyon"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "Dependensiyang %s para sa %s ay hindi mabuo dahil ang paketeng %s ay "
+#~ "hindi mahanap"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Bigo sa pagbuo ng dependensiyang %s para sa %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Hindi mabuo ang build-dependencies para sa %s."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Problema sa pag-unlink ng %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Bigo ang pag-unlink ng %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Pag-gamit: apt-cache [mga option] utos\n"
+#~ " apt-cache [mga option] show pkt1 [pkt2 ...]\n"
+#~ "\n"
+#~ "apt-cache ay isang kagamitang low-level para sa pag-manipula\n"
+#~ "ng mga talaksan sa binary cache ng APT, at upang makakuha ng\n"
+#~ "impormasyon mula sa kanila\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Mga option:\n"
+#~ " -h Itong tulong na ito.\n"
+#~ " -p=? Ang cache ng mga pakete.\n"
+#~ " -s=? Ang cache ng mga source.\n"
+#~ " -q Huwag ipakita ang hudyat ng progreso.\n"
+#~ " -i Ipakita lamang ang importanteng mga dep para sa utos na unmet\n"
+#~ " -c=? Basahin ang talaksang pagkaayos na ito\n"
+#~ " -o=? Magtakda ng isang option ng pagkaayos, hal. -o dir::cache=/tmp\n"
+#~ "Basahin ang pahina ng manwal ng apt-cache(8) at apt.conf(5) para sa \n"
+#~ "karagdagang impormasyon\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Mga option:\n"
+#~ " -h Itong tulong na ito.\n"
+#~ " -c=? Basahin itong talaksang pagkaayos\n"
+#~ " -o=? Itakda ang isang option sa pagkaayos, hal. -o dir::cache=/tmp\n"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Pag-gamit: apt-sortpkgs [mga option] talaksan1 [talaksan2 ...]\n"
+#~ "\n"
+#~ "Ang apt-sortpkgs ay payak na kagamitan upang makapag-sort ng talaksang "
+#~ "pakete.\n"
+#~ "Ang option -s ay ginagamit upang ipaalam kung anong klaseng talaksan "
+#~ "ito.\n"
+#~ "\n"
+#~ "Mga option:\n"
+#~ " -h Itong tulong na ito\n"
+#~ " -s Gamitin ang pag-sort ng talaksang source\n"
+#~ " -c=? Basahin ang talaksang pagkaayos na ito\n"
+#~ " -o=? Itakda ang isang option ng pagkaayos, hal. -o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Bigo ang prosesong anak"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Kailangang magtakda ng kahit isang pakete na kunan ng source"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Bigo sa paglikha ng mga pipe"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Bigo sa pagtakbo ng gzip "
+
+#, fuzzy
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s para sa %s %s kinompile noong %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Bigo ang paglikha ng FILE*"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Maling anyo ng linyang %lu sa talaan ng pagkukunan %s (URI parse)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr "Maling anyo ng linyang %lu sa talaan ng pagkukunan %s (dist parse)<"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "Maling anyo ng linyang %lu sa talaan ng pagkukunan %s (dist)"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "Maling anyo ng linyang %lu sa talaan ng pagkukunan %s (dist parse)<"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "Maling anyo ng linyang %lu sa talaan ng pagkukunan %s (dist parse)<"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr "Maling anyo ng linyang %lu sa talaan ng pagkukunan %s (dist parse)<"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Maling anyo ng linyang %lu sa talaan ng pagkukunan %s (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Maling anyo ng linyang %lu sa talaan ng pagkukunan %s (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Maling anyo ng linyang %lu sa talaan ng pagkukunan %s (URI parse)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr ""
+#~ "Maling anyo ng linyang %lu sa talaan ng pagkukunan %s (absolute dist)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "Maling anyo ng linyang %lu sa talaan ng pagkukunan %s (dist parse)<"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr ""
+#~ "Hindi nahanap ang paketeng %s %s habang prinoseso ang mga dependensiya."
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Hindi ma-stat ang talaan ng pagkukunan ng pakete %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Kinukuha ang Talaksang Provides"
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Hindi ma-parse ang talaksang pakete %s (1)"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Block ng nagbebenta %s ay walang fingerprint"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Kabuuan ng gamit na puwang ng Dependensiyang Bersyon: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Kulang kayo ng libreng puwang sa %s"
+
+#~ msgid "Done"
+#~ msgstr "Tapos"
+
+#, fuzzy
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Ina-abort ang pag-instol."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Internal error, nakasira ng bagay-bagay ang AllUpgrade"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s ay hindi balido na paketeng DEB."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Ginagamit ang %s bilang mount point ng CD-ROM\n"
+#~ "Sinasalang ang CD-ROM\n"
+
+#, fuzzy
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Hindi ito tanggap na arkibong DEB, may kulang na miyembrong '%s' o '%s'"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "Di tugmang MD5Sum"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Hindi ko mahanap ang talaksan para sa paketeng %s. Maaaring kailanganin "
+#~ "niyong ayusin ng de kamay ang paketeng ito."
+
+#, fuzzy
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Binubuksan ang talaksang pagsasaayos %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Bigo sa pagtanggal ng %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Hindi malikha ang %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Bigo sa pag-stat ng %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr "Ang info at temp directory ay kailangang nasa parehong filesystem"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Bigo sa paglipat sa admin dir %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Internal error sa pagkuha ng pangalan ng pakete"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Binabasa ang Talaksang Listahan"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Bigo sa pagbukas ng talaksang listahan '%sinfo/%s'. Kung hindi niyo "
+#~ "maibalik ang talaksang ito, gawin itong walang laman at muling instolahin "
+#~ "kaagad ang parehong bersyon ng pakete!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Bigo sa pagbasa ng talaksang listahan %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Internal error sa pagkuha ng Node"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Bigo sa pagbukas ng talaksang diversions %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Ang talaksang diversion ay sira"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Di tanggap na linya sa talaksang diversion: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Internal error sa pagdagdag ng diversion"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Ang cache ng pkg ay dapat ma-initialize muna"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Bigo sa paghanap ng Pakete: Header, offset %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Maling ConfFile section sa talaksang status. Offset %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Error sa pag-parse ng MD5. Offset %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Hindi makalipat sa %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Bigo sa paghanap ng tanggap na talaksang control"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Hindi makapag-bukas ng pipe para sa %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Error sa pagbasa mula sa prosesong %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Nakatanggap ng isang linyang panimula mula %u na mga karakter"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Maling anyo ng override %s linya %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Maling anyo ng override %s linya %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Maling anyo ng override %s linya %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "taga-decompress"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "pagbasa, mayroong %lu na babasahin ngunit walang natira"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "pagsulat, mayroon pang %lu na isusulat ngunit hindi makasulat"
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "May naganap na error habang prinoseso ang %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "May naganap na error habang prinoseso ang %s (UsePackage1)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "May naganap na error habang prinoseso ang %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "May naganap na error habang prinoseso ang %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "May naganap na error habang prinoseso ang %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "May naganap na error habang prinoseso ang %s (NewVersion1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "May naganap na error habang prinoseso ang %s (UsePackage3)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "May naganap na error habang prinoseso ang %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "May naganap na error habang prinoseso ang %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "May naganap na Error habang prinoseso ang %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Internal error, hindi mahanap ang miyembro"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr ""
+#~ "E: Sobrang haba ng talaan ng argumento mula sa Acquire::gpgv::Options. "
+#~ "Lalabas."
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "May naganap na error habang prinoseso ang %s (NewVersion2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "Maling anyo ng linyang %u sa talaksang pagkukunan %s (vendor id)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "Hindi mabasa ang keyring: '%s'"
+
+#~ msgid "Could not patch file"
+#~ msgstr "Hindi mai-patch ang talaksan"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#, fuzzy
+#~ msgid "Processing triggers for %s"
+#~ msgstr "Error sa pagproseso ng directory %s"
+
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "Dahil ang hiniling niyo ay mag-isang operasyon, malamang ay ang pakete "
+#~ "ay\n"
+#~ "hindi talaga mailuklok at kailangang magpadala ng bug report tungkol sa\n"
+#~ "pakete na ito."
+
+#, fuzzy
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "Labis ang haba ng linyang %d (max %d)"
+
+#, fuzzy
+#~ msgid "Line %d too long (max %d)"
+#~ msgstr "Labis ang haba ng linyang %d (max %d)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc1)"
+#~ msgstr "May naganap na error habang prinoseso ang %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc2)"
+#~ msgstr "May naganap na error habang prinoseso ang %s (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Stored label: %s \n"
+#~ msgstr "Naka-imbak na Label: %s \n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Found %i package indexes, %i source indexes, %i translation indexes and "
+#~ "%i signatures\n"
+#~ msgstr ""
+#~ "Nakahanap ng %i na index ng mga pakete, %i na index ng source at %i na "
+#~ "signature\n"
+
+#, fuzzy
+#~ msgid "openpty failed\n"
+#~ msgstr "Bigo ang pagpili"
+
+#~ msgid "File date has changed %s"
+#~ msgstr "Nagbago ang petsa ng talaksang %s"
+
+#~ msgid "Reading file list"
+#~ msgstr "Binabasa ang Talaksang Listahan"
+
+#~ msgid "Could not execute "
+#~ msgstr "Hindi ma-execute ang "
+
+#~ msgid "Preparing for remove with config %s"
+#~ msgstr "Naghahanda upang tanggalin ang %s kasama ang pagkasaayos nito"
+
+#~ msgid "Removed with config %s"
+#~ msgstr "Tinanggal ang %s kasama ang pagkasaayos nito"
+
+#~ msgid "Unknown vendor ID '%s' in line %u of source list %s"
+#~ msgstr ""
+#~ "Hindi kilalang vendor ID '%s' sa linya %u ng talaksang pagkukunan %s"
diff --git a/po/tr.po b/po/tr.po
new file mode 100644
index 000000000..50f9665bc
--- /dev/null
+++ b/po/tr.po
@@ -0,0 +1,4237 @@
+# Turkish translation for apt
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# Copyright (c) 2013 Debian L10n Turkish 2013
+# Mert Dirik <mertdirik@gmail.com>, 2013-2014.
+# This file is distributed under the same license as the apt package.
+# Rosetta Contributors, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2016-09-24 03:24+0300\n"
+"Last-Translator: Mert Dirik <mertdirik@gmail.com>\n"
+"Language-Team: Debian l10n Turkish <debian-l10n-turkish@lists.debian.org>\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n!=1;\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"X-Launchpad-Export-Date: 2013-02-04 12:16+0000\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Geçersiz arşiv imzası"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Arşiv üyesi başlığı okuma hatası"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Geçersiz arşiv üyesi başlığı %s"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Geçersiz arşiv üyesi başlığı"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Arşiv çok kısa"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Arşiv başlıkları okunamadı"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "'%s' için yapılandırılmış bir sıkıştırma programı bulunmuyor"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Bozuk arÅŸiv"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Tar sağlama toplamı başarısız, arşiv bozulmuş"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Bilinmeyen TAR başlığı türü %u, üye %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Bu dosya geçerli bir DEB arşivi değil, '%s' üyesi eksik"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "İç hata, %s üyesi bulunamadı"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Ayrıştırılamayan 'control' dosyası"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "%s dosyasına yazılamadı"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "%s dosyası kapatılamadı"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "%s yolu çok uzun"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "%s paketi bir çok kez açıldı"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "%s dizini yönlendirilmiş"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Bu paket yönlendirme hedefine (%s/%s) yazmayı deniyor"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "Yönlendirme yolu çok uzun"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "%s durum bilgisi alınamadı"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "%s, %s olarak yeniden adlandırılamadı"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "%s dizini dizin olmayan bir öğeyle değiştirildi"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Düğüm sağlama kovasında bulunamadı"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "Yol çok uzun"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "%s paketinin sürümü yok"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "%s/%s dosyası %s paketindeki aynı adlı dosyanın üzerine yazmak istiyor"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "%s okunamadı"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "%s durum bilgisi alınamadı"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode hâlâ bağlı olan düğüm üzerinde çağrıldı"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Sağlama elementi bulunamadı!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Yönlendirme tahsisi başarısız oldu"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "AddDiversion'da iç hata"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Bir yönlendirmenin üzerine yazılmaya çalışılıyor, %s -> %s ve %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Aynı dosya iki kez yönlendirilemez: %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "%s/%s yapılandırma dosyası zaten mevcut"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+"Böyle bir depodan güvenli bir şekilde güncelleme yapılamaz, bu nedenle depo "
+"devre dışı bırakılmıştır."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+"Böyle bir depodan gelen verilerin kaynağı doğrulanamayacağı için bu deponun "
+"kullanımı olası tehlike arz etmektedir."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+"Depo oluşturma ve kullanıcı yapılandırması hakkında ayrıntılı bilgi için apt-"
+"secure(8) rehber sayfasında bulunabilir."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "'%s' deposu imzalanmamış"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "'%s' deposu artık Release dosyası barındırmıyor."
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+"Bu duruma normalde izin verilmez, ama Acquire::"
+"AllowDowngradeToInsecureRepositories seçeneği kullanıldığı için izin "
+"veriliyor."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is not signed."
+msgstr "'%s' deposu imzalanmamış."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "'%s' deposunda Release dosyası yok."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "'%s' deposu yalnız zayıf güvenlik bilgisi sağlıyor."
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "%s readlink çağrısı başarısız oldu"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Sağlama toplamları eşleşmiyor"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+"Bu indirmeyi güvenli bir şekilde gerçekleştirebilmek için yeterli bilgi "
+"mevcut deÄŸil"
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "yeniden adlandırma başarısız, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Boyutlar eÅŸleÅŸmiyor"
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr "Geçersiz dosya biçimi"
+
+#: apt-pkg/acquire-item.cc
+msgid "Signature error"
+msgstr "İmza hatası"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+"Temiz-imzalı dosya geçerli değil, '%s' hatası alındı (ağ kimlik doğrulama "
+"gerektiriyor mu?)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"İmza doğrulama sırasında bir hata meydana geldi. Depo güncel değil ve önceki "
+"indeks dosyaları kullanılacak. GPG hatası: %s: %s"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "GPG hatası: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+"'%2$s' deposu '%3$s' mimarisini desteklemediği için yapılandırılmış '%1$s' "
+"dosyası alınmıyor"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"'Release' dosyasında olması beklenilen '%s' girdisi bulunamadı (sources.list "
+"dosyasındaki girdi ya da satır hatalı)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+"'%2$s' deposu yalnız zayıf güvenlik bilgisi sağladığı için yapılandırılmış "
+"'%1$s' dosyası alınmıyor"
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"%s konumundaki 'Release' dosyasının vâdesi dolmuş (%s önce). Bu deponun "
+"güncelleştirmeleri uygulanmayacak."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Dağıtım çakışması: %s (beklenen %s ama eldeki %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"%s paketindeki dosyalardan biri konumlandırılamadı. Bu durum, bu paketi elle "
+"düzeltmeniz gerektiği anlamına gelebilir. (eksik mimariden dolayı)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr "'%2$s' paketinin '%1$s' sürümü hiçbir kaynakta bulunamadı"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr "Paket indeks dosyaları bozuk. %s paketinin 'Filename:' alanı yok."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "%s=%s için değişim günlüğü mevcut değil"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr "'%s' yöntemi yapılandırma üzerinden devre dışı bırakılmış."
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr "Tor kullanmak istiyorsanız %2$s yerine %1$s kullanmaya dikkat edin."
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Yöntem sürücüsü %s bulunamadı."
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr "%s paketi kurulu mu?"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "%s yöntemi düzgün şekilde başlamadı"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+"Lütfen '%s' olarak etiketlenmiş diski '%s' sürücüsüne yerleştirin ve [Enter] "
+"tuşuna basın."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Liste dizini %spartial bulunamadı."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Arşiv dizini %spartial bulunamadı."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "%s dizini kilitlenemiyor"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+"'%s' kullanıcısı sistemde mevcut olmadığı için ayrıcalıklar bırakılamıyor"
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+#| msgid ""
+#| "Can't drop privileges for downloading as file '%s' couldn't be accessed "
+#| "by user '%s'."
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+"'%2$s' kullanıcısının '%1$s' dosyasına erişimi olmadığı için dosya "
+"indirilirken ayrıcalıklar bırakılamıyor."
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr "%s temizliÄŸi desteklenmiyor"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "%s olarak deÄŸiÅŸtirilemedi"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Alınan dosya: %li / %li (%s kaldı)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Alınan dosya: %li / %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"%s paketinin tekrar kurulması gerekli, ancak gereken arşiv dosyası "
+"bulunamıyor."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Hata, pkgProblemResolver::Resolve bozuk paketlere yol açtı, bu sorunun "
+"nedeni tutulan paketler olabilir."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "Sorunlar giderilemedi, tutulan bozuk paketleriniz var."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "Paket listeleri ya da durum dosyası ayrıştırılamadı ya da açılamadı."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Bu sorunları gidermek için apt-get update komutunu çalıştırabilirsiniz"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Kaynak listesi okunamadı."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Regex derleme hatası - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "'%2$s' paketinin '%1$s' sürümü bulunamadı"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "'%2$s' paketinin '%1$s' sürümü bulunamadı"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "'%s' görevi bulunamadı"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "'%s' düzenli ifadesini içeren herhangi bir paket bulunamadı"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "'%s' ifadesine eşleşen herhangi bir paket bulunamadı"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "%s paketi bulunamadı"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr "'%s' paketi tamamen sanal olduğu için sürümü seçilemiyor"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr "'%s' paketi sanal olduğu için en yeni sürümü seçilemiyor"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr "'%s' paketinin aday sürümü olmadığı için aday sürüm seçilemiyor"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr "'%s' paketi kurulu olmadığı için kurulu sürüm seçilemiyor"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"'%s' paketi kurulu olmadığı ve aday sürüme sahip olmadığı için her ikisi de "
+"seçilemiyor"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Kaynak listesinin (%2$s) %1$u numaralı satırı çok uzun."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "CD-ROM ayrılıyor...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "CD-ROM bağlama noktası %s kullanılıyor\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Disk bekleniliyor...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "CD-ROM bağlanıyor...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Tanımlanıyor... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Kayıtlı etiket: %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Disk, indeks dosyaları için taranıyor...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"%zu paket indeksi, %zu kaynak indeksi, %zu çeviri indeksi ve %zu imza "
+"bulundu\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Hiç paket dosyası bulunamadı. Belirttiğiniz disk bir Debian diski değil ya "
+"da yanlış mimariye sahip."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "'%s' etiketi bulundu\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Bu, geçerli bir ad değil, yeniden deneyin.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Disk adı: \n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Paket listeleri kopyalanıyor..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Yeni kaynak listesi yazılıyor\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Bu disk için olan kaynak listesi girdileri:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "%s için dosya bilgisi alınamadı."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Bağlama noktasının (%s) durum bilgisi alınamadı"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Cdrom durum bilgisi alınamadı"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr ""
+"'%c' Komut satırı seçeneği [%s içinden] diğer seçeneklerle bir arada "
+"tanınmıyor."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "%s komut satırı seçeneği diğer seçeneklerle bir arada anlaşılamadı"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Komut satırı seçeneği %s mantıksal değer değil"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "%s seçeneği bir argüman kullanımını gerektirir."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+"%s seçeneği: Yapılandırma öğesi tanımlaması =<değer> şeklinde değer "
+"içermelidir."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr ""
+"%s seçeneği bir tam sayı argümanının kullanımını gerektirir, '%s' değil"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "'%s' seçeneği çok uzun"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "%s algılaması anlaşılamadı, true (doğru) ya da false (yanlış) deneyin."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Geçersiz işlem: %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Tanınamayan tür kısaltması: '%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Yapılandırma dosyası (%s) açılıyor"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Söz dizimi hatası %s:%u: Blok ad olmadan başlıyor."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Söz dizimi hatası %s:%u: Kötü biçimlendirilmiş etiket"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Söz dizimi hatası %s:%u: Değerden sonra ilave gereksiz"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "Söz dizimi hatası %s:%u: Yönergeler sadece en üst düzeyde bitebilir"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Söz dizimi hatası %s:%u: Çok fazla yuvalanmış 'include'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Söz dizimi hatası %s:%u: Buradan 'include' edilmiş"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Söz dizimi hatası %s:%u: Desteklenmeyen yönerge '%s'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Söz dizimi hatası %s:%u: clear yönergesi bir seçenek ağacı argümanını "
+"gerektirir"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Söz dizimi hatası %s:%u: Dosya sonunda ilave gereksiz"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "%s dosyasından bağ kaldırma sorunu"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Kilitleme dosyası %s salt okunur olduğu için kilitleme kullanılmıyor"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Kilit dosyası %s açılamadı"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "nfs ile bağlanmış kilit dosyası %s için kilitleme kullanılmıyor"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "%s kilidi alınamadı"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr "'%s' dizin olmadığı için dosya listeli oluşturulamıyor"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+"'%2$s' dizinindeki '%1$s' normal bir dosya olmadığı için görmezden geliniyor"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+"'%2$s' dizinindeki '%1$s' dosyası uzantısı olmadığı için görmezden geliniyor"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"'%2$s' dizinindeki '%1$s' dosyası geçersiz bir dosya uzantısı olduğu için "
+"yok sayılıyor"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "%s için beklenildi ama o gelmedi"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "%s altsüreci bir bölümleme hatası aldı (segmentation fault)."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "%s altsüreci %u sinyali aldı."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "%s altsüreci bir hata kodu gönderdi (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "%s altsüreci beklenmeyen bir şekilde sona erdi"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Okuma hatası"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Yazma hatası"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Gzip dosyası %s kapatılamadı"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr "Beklenmeyen dosya sonu"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Altsüreç IPC'si oluşturulamadı"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Sıkıştırma programı çalıştırılamadı "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "%s dosyası açılamadı"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Dosya tanımlayıcı %d açılamadı"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "read, %llu bayt okunması gerekli ama hiç kalmamış"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "write, yazılması gereken %llu bayt yazılamıyor"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "%s dosyası kapatılamadı"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "%s dosyası %s olarak yeniden adlandırılamadı"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Dosya eşitlenirken sorun çıktı"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to mkstemp %s"
+msgstr "mkstemp %s başarısız oldu"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "%s dosyasına yazılamıyor"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Boş dosya mmap yapılamıyor"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "%llu baytlık mmap yapılamaz"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Dosya tanımlayıcı %i çoğaltılamadı"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "mmap kapatılamıyor"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "mmap eÅŸlenemiyor"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "%lu baytlık mmap yapılamaz"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Dosya kesilemedi"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"Dinamik MMap yerine sığamadı. Lütfen APT::Cache-Start boyutunu artırın. "
+"Kullanımdaki değer: %lu (ayrıntılı bilgi için man 5 apt.conf komutunu "
+"kullanın)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr "%lu baytlık sınıra ulaşıldığı için MMap boyutu artırılamadı."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Otomatik büyüme kullanıcı tarafından kapatıldığı için MMap boyutu "
+"artırılamadı."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Hata!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Bitti"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr "..."
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... %u%%"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%li gün %li saat %li dk. %li sn."
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%li saat %li dk. %li sn."
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%li dk. %li sn."
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%li sn."
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "%s seçimi bulunamadı"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr "%s hedefi aynı dosyayı (%s) %s olarak %s kaynağından almak istiyor"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr "%s (%s) hedefi %s ve %s konumlarında birden fazla kez yapılandırılmış"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "'Release' dosyası (%s) ayrıştırılamadı"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "'Release' dosyası %s içinde hiç bölüm yok"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "'Release' dosyasında (%s) sağlama girdisi yok"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+"%s Release dosyasında güvenlik amaçları için yeteri kadar güçlü bir Hash "
+"girdisi bulunmuyor"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "'Release' dosyasında (%2$s) geçersiz '%1$s' girdisi"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr "%s seçeneği için çakışan değer kümesi (kaynak %s %s)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr "%s seçeneği için geçersiz değer kümesi (kaynak: %s %s) (%s)"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr "%s seçeneği için çakışan değer kümesi (kaynak %s %s: %s != %s)"
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Paket dosyası (%s) ayrıştırılamadı (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"Yönetim dizini (%s) kilitlenemiyor, başka bir işlem tarafından kullanılıyor "
+"olmasın?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Yönetim dizini (%s) kilitlenemiyor, root kullanıcısı mısınız?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"dpkg kesintiye uğradı, sorunu düzeltmek için elle '%s' komutunu çalıştırın. "
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "KilitlenmemiÅŸ"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "%s kuruluyor"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "%s yapılandırılıyor"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "%s kaldırılıyor"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "%s tamamen kaldırılıyor"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "%s paketinin kaybolduÄŸu not ediliyor"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Kurulum sonrası tetikleyicisi %s çalıştırılıyor"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "%s kuruldu"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "'%s' dizini bulunamadı"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "'%s' dosyası açılamadı"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "%s hazırlanıyor"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "%s paketi açılıyor"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "%s paketini yapılandırmaya hazırlanılıyor"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "%s paketinin kaldırılmasına hazırlanılıyor"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "%s kaldırıldı"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "%s paketinin tamamen kaldırılmasına hazırlanılıyor"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "%s tamamen kaldırıldı"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Can not write log (%s)"
+msgstr "Günlük dosyasına yazılamıyor (%s)"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr "/dev/pts bağlı mı?"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "İşlem yarıda kesildi"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+"En fazla rapor miktarına (MaxReports) ulaşıldığı için apport raporu yazılmadı"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "bağımlılık sorunları - yapılandırılmamış durumda bırakılıyor"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Apport raporu yazılmadı çünkü hata iletisi bu durumun bir önceki hatadan "
+"kaynaklanan bir hata olduÄŸunu belirtiyor."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Hata iletisi diskin dolu olduğunu belirttiği için apport raporu yazılamadı"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Hata iletisi bir bellek yetersizliği hatasına işaret ettiği için apport "
+"raporu yazılamadı"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Hata iletisi yerel bir sistem hatasına işaret ettiği için apport raporu "
+"yazılamadı"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"Hata iletisi bir dpkg G/Ç hatasına işaret ettiği için apport raporu "
+"yazılamadı"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Bağımlılık ağacı oluşturuluyor"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Aday sürümler"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Bağımlılık oluşturma"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Durum bilgisi okunuyor"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Durum dosyası (StateFile) %s açılamadı"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Geçici durum dosyasına (%s) yazma başarısız oldu"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "Çözücüye senaryo gönder"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "Çözücüye istek gönder"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "Çözüm almak için hazırlan"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr "Harici çözücü düzgün bir hata iletisi göstermeden başarısız oldu"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "Harici çözücüyü çalıştır"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr "Harici planlamacıyı çalıştır"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr "Planlamacıya istek gönder"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr "Planlamacıya senaryo gönder"
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr "Harici planlamacı düzgün bir hata iletisi göstermeden başarısız oldu"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "%i kayıt yazıldı.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "%2$i eksik dosyayla %1$i kayıt yazıldı.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "%2$i eşleşmeyen dosyayla %1$i kayıt yazıldı\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "%2$i eksik dosya ve %3$i eşleşmeyen dosyayla %1$i kayıt yazıldı\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "%s için kimlik doğrulama kaydı bulunamadı"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Sağlama yapılamadı: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Paketleme sistemi '%s' desteklenmiyor"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Uygun bir paketleme sistemi türü bulunamıyor"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr "Durum: [%3i%%]"
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "dpkg çalıştırılıyor"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"\"%s\" paketinin anında yapılandırması başarısız oldu. Ayrıntılar için apt."
+"conf(5) rehber sayfasının APT::Immediate-Configure kısmına bakın. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "'%s' paketi yapılandırılamadı. "
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Bu kurulum, bir Çakışma/Ön-Bağımlılık döngüsü içerdiği için %s temel "
+"paketinin geçici olarak kaldırılmasını gerektiriyor. Bu durum genellikle "
+"kötü bir durumdur, ama ille de devam etmek isterseniz, APT::Force-LoopBreak "
+"seçeneğini etkinleştirin."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Paket önbelleği boş"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Paket önbelleği dosyası bozulmuş"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Paket önbelleği dosyası uyumsuz bir sürümde"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Bu APT '%s' sürümleme sistemini desteklemiyor"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr ""
+"Paket önbelleği farklı bir mimari için oluşturulmuş: biri %s, diğeri %s"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Paket önbellek dosyası bozulmuş, dosyanın sağlaması tutmuyor"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Bağımlılıklar"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "ÖnBağımlılıklar"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Önerdikleri"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Çakışmalar"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Tavsiye ettikleri"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "DeÄŸiÅŸtirilenler"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Bozdukları"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "GeliÅŸtirdikleri"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "Eskiyenler"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "önemli"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "gerekli"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "standart"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "ilave"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "seçimlik"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Önbelleğin uyumsuz bir sürümleme sistemi var"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "%s paketi işlenirken sorunlarla karşılaşıldı (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "Vay canına, bu APT'nin alabileceği paket adları sayısını aştınız."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Vay canına, bu APT'nin alabileceği sürüm sayısını aştınız."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Vay canına, bu APT'nin alabileceği açıklama sayısını aştınız."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "Vay canına, bu APT'nin alabileceği bağımlılık sayısını aştınız."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Paket listeleri okunuyor"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Kaynak önbelleği kaydedilirken GÇ Hatası"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "İndeks dosyası türü '%s' desteklenmiyor"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"APT::Default-Release için '%s' değeri geçersizdir, çünkü kaynaklarda böyle "
+"bir sürüm yok"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "%s tercihler dosyasında geçersiz kayıt, Paket başlığı yok"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "İğne türü %s anlaşılamadı"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr "%s: %s değeri geçerli iğne önceliği aralığının dışında (%d - %d arası)"
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "İğne için öncelik belirlenmedi (ya da sıfır)"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Hatalı girdi satır %u %s dosya %s (%s)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "%s Açılıyor"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Kaynak listesinin (%2$s) %1$u numaralı satırı hatalı (tür)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "'%s' türü bilinmiyor. (Satır: %u, Kaynak Listesi: %s)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "%2$s kaynak listesinin %1$u kısmı hatalı (tür)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "'%s' türü bilinmiyor (girdi: %u, kaynak listesi: %s)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr "Komut satırında desteklenmeyen bir dosya (%s) verildi"
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "'sources.list' dosyası içine bazı 'source' adresleri koymalısınız"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr "%s metni tam sayıya dönüştürülemiyor: aralığın dışında"
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "%s alınamadı %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Bazı indeks dosyaları indirilemedi. Bu dosyalar yok sayıldılar ya da önceki "
+"sürümleri kullanıldı."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Yükseltme hesaplanıyor"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Aynı: %lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Ä°ndir: %lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Yoksay:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Hata: %lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "%2$s'de %1$sB alındı (%3$sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Çalışıyor]"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Ortam değişimi: Lütfen '%2$s' sürücüsüne\n"
+" '%1$s'\n"
+"olarak etiketlenmiş diski takın ve [Enter] tuşuna basın\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Bağımlılıklar düzeltiliyor..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " başarısız oldu."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Bağımlılıklar düzeltilemedi"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Yükseltme kümesi küçültülemiyor"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Tamamlandı"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+"Bu sorunları düzeltmek için 'apt --fix-broken install' komutunu "
+"çalıştırmanız gerekebilir."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Karşılanmamış bağımlılıklar. 'apt --fix-broken install' komutunu paket "
+"seçeneği vermeden deneyin (ya da bir çözüm belirtin)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr "Sıralama"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Not, '%2$s' görevi için '%1$s' seçiliyor\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Not, '%2$s' ifadesi için '%1$s' seçiliyor\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Not, '%2$s' düzenli ifadesi için '%1$s' seçiliyor\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "%s paketi sanal bir pakettir, bu paketi saÄŸlayan:\n"
+
+#: apt-private/private-cacheset.cc
+msgid " [Installed]"
+msgstr " [Kurulu]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [Aday sürüm değil]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Kurmak için adaylardan birini açıkça seçmelisiniz."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"%s paketi mevcut değil, ancak başka paket içerisinden işaret edilmiş.\n"
+"Bu durum bu paketin kayıp, eskidiği için bırakılmış, ya da başka bir\n"
+"yazılım kaynağında bulunduğu anlamına gelebilir.\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Yine de aşağıdaki paketler onun yerine geçecek:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "'%s' paketi için kurulum adayı yok"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "'%s' gibi sanal paketler kaldırılamaz\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"'%s' kurulu değildi, dolayısıyla kaldırılmadı. Bunu mu demek istediniz: "
+"'%s'?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "'%s' kurulu değildi, dolayısıyla kaldırılmadı\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Not, '%2$s' yerine '%1$s' seçiliyor\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr "Sık kullanılan komutlar:"
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+"Kullanılabilen komutlar hakkında daha fazla bilgi için %s rehber sayfasına "
+"bakın."
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+"Yapılandırma seçenekleri ve söz dizimi ayrıntıları apt.conf(5);\n"
+"Kaynakların nasıl yapılandırılacağıyla ilgili bilgiler sources.list(5);\n"
+"Paket ve sürüm seçimlerinin ifade edilmesiyle ilgili bilgiler "
+"apt_preferences(5);\n"
+"Güvenlikle ilgili ayrıntılar apt-secure(8) rehber sayfalarında bulunabilir.\n"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Bu APT'nin Süper İnek Güçleri vardır."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr "Bu APT yardımcısının Süper Meep Güçleri var."
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Hiç paket bulunamadı"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "UYARI: Aşağıdaki paketlerin aslına uygunluğu doğrulanamıyor!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Kimlik denetimi uyarısı görmezden geliniyor.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Bazı paketlerin aslına uygunluğu doğrulanamadı"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Paketler doÄŸrulanmadan kurulsun mu?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+"--force-yes seçeneği kullanımdan kaldırılmıştır, bunun yerine --allow ile "
+"başlayan seçeneklerden birini kullanabilirsiniz."
+
+#: apt-private/private-download.cc
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr ""
+"Aslına uygunluğu doğrulanamayan paketler var ve -y seçeneği --allow-"
+"unauthenticated olmadan kullanılmış"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "%s içindeki boş alan miktarı belirlenemedi"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "%s içinde yeterli boş alanınız yok."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Ä°ndirme dizini kilitlenemiyor"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Bazı paketler kurulamadı. Bu durum, olanaksız bir durum istemiş\n"
+"olduğunuzu ya da kararsız (unstable) dağıtımı kullandığınızı ve\n"
+"bazı paketlerin henüz oluşturulamamış ya da oluşturulmakta\n"
+"olduğunu gösterir."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Aşağıdaki bilgiler durumu çözmenize yardımcı olabilir:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Bozuk paketler"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Bazı arşivler alınamıyor, apt-get update'i çalıştırmayı ya da --fix-missing "
+"seçeneğini ekleyerek düzeltmeyi deneyin."
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "İç hata, InstallPackages bozuk paketler ile çağrıldı!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr ""
+"Paketlerin kaldırılması gerekiyor ancak kaldırma işlemi devre dışı "
+"bırakılmış."
+
+#: apt-private/private-install.cc
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr ""
+"Temel paketler kaldırıldı ve -y seçeneği --allow-remove-essential olmadan "
+"kullanıldı."
+
+#: apt-private/private-install.cc
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr ""
+"Paket sürümleri düşürüldü ve -y seçeneği --allow-downgrades olmadan "
+"kullanıldı."
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+"Tutulan paketler değişti ve -y seçeneği --allow-change-held-packages olmadan "
+"kullanıldı."
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "İç hata, Sıralama tamamlanamadı"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Ne kadar ilginç... Boyutlar eşleşmedi, apt@packages.debian.org adresine e-"
+"posta atın"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "%sB/%sB arşiv dosyası indirilecek.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "%sB arşiv dosyası indirilecek.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "Bu işlem tamamlandıktan sonra %sB ek disk alanı kullanılacak.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Bu işlem tamamlandıktan sonra %sB disk alanı boşalacak.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "Sadece Önemsiz seçeneği ayarlandı, ama bu önemsiz bir işlem değil."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Evet, söylediğim şekilde yap!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Tehlikeli bir iş yapmak üzeresiniz.\n"
+"Devam etmek için '%s' ifadesini yazınız\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Vazgeç."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Devam etmek istiyor musunuz?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Bazı dosyalar indirilemedi"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "İndirme işlemi tamamlandı ve sadece indirme kipinde"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing seçeneği ve ortam takası şu an için desteklenmiyor"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Eksik paketler düzeltilemedi."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Kurulum iptal ediliyor."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"Tüm dosyalarının üzerine yazıldığı için aşağıdaki paket\n"
+"sisteminizden kayboldu:"
+msgstr[1] ""
+"Tüm dosyalarının üzerine yazıldığı için aşağıdaki paketler\n"
+"sisteminizden kayboldu:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Not: Bu eylem dpkg tarafından otomatik ve kasıtlı olarak yapılmıştır."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "Nesneleri silmemiz beklenemez, AutoRemover çalıştırılamıyor"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"AutoRemover yapmaması gereken bir yıkıma\n"
+"sebep oldu. Lütfen apt hakkında bir hata raporu doldurun."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "İç hata, AutoRemover bazı şeyleri bozdu"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"Aşağıdaki paket otomatik olarak kurulmuş ve artık bu pakete gerek duyulmuyor:"
+msgstr[1] ""
+"Aşağıdaki paketler otomatik olarak kurulmuş ve artık bu paketlere gerek "
+"duyulmuyor:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "%lu paket otomatik olarak kurulmuş ve artık gerekli değil.\n"
+msgstr[1] "%lu paket otomatik olarak kurulmuş ve artık gerekli değil.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Bu paketi kaldırmak için '%s' komutunu kullanın."
+msgstr[1] "Bu paketleri kaldırmak için '%s' komutunu kullanın."
+
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "Aşağıdaki ek paketler kurulacak:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Önerilen paketler:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Tavsiye edilen paketler:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "%s atlanıyor, bu paket zaten kurulu ve yükseltme seçilmemiş.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"%s atlanıyor, bu paket kurulu değil ve sadece yükseltmeler isteniyor.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr ""
+"%s paketinin yeniden kurulumu mümkün değil, çünkü paket indirilemedi.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s zaten en yeni sürümde (%s).\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s elle kurulmuş olarak ayarlandı.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "'%3$s' paketinin '%1$s' (%2$s) sürümü seçildi\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "'%4$s' nedeniyle '%3$s' paketinin '%1$s' (%2$s) sürümü seçildi\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr "Listeleme"
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] "Fazladan %i sürüm daha var. Görmek için '-a' anahtarını kullanın."
+msgstr[1] ""
+"Fazladan %i sürüm daha var. Bu sürümleri görmek için '-a' anahtarını "
+"kullanın."
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"NOT: Bu sadece bir benzetimdir!\n"
+" %s'i gerçekten çalıştırmak için root haklarına ihtiyaç vardır.\n"
+" Unutmayın ki benzetim kipinde kilitleme yapılmaz, bu nedenle\n"
+" bu benzetimin gerçekteki durumla birebir aynı olacağına güvenmeyin!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr "bilinmeyen"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr "[kurulu,yükseltilebilir: %s]"
+
+#: apt-private/private-output.cc
+msgid "[installed,local]"
+msgstr "[kurulu,yerel]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr "[kurulu,otomatik-kaldırılabilir]"
+
+#: apt-private/private-output.cc
+msgid "[installed,automatic]"
+msgstr "[kurulu,otomatik]"
+
+#: apt-private/private-output.cc
+msgid "[installed]"
+msgstr "[kurulu]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr "[şundan yükseltilebilir: %s]"
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr "[artık-yapılandırma]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "ama %s kurulu"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "ama %s kurulacak"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "ama kurulabilir deÄŸil"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "ama o bir sanal paket"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "ama kurulmayacak"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "ama kurulu deÄŸil"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " ya da"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Aşağıdaki paketler karşılanmamış bağımlılıklara sahip:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Aşağıdaki YENİ paketler kurulacak:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Aşağıdaki paketler KALDIRILACAK:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Aşağıdaki paketlerin mevcut durumları korunacak:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Aşağıdaki paketler yükseltilecek:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Aşağıdaki paketlerin SÜRÜMLERİ DÜŞÜRÜLECEK:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Aşağıdaki eski sürümlerinde tutulan paketler değiştirilecek:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (%s nedeniyle)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"UYARI: Aşağıdaki temel paketler kaldırılacak.\n"
+"Bu işlem ne yaptığınızı tam olarak bilmediğiniz takdirde YAPILMAMALIDIR!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu paket yükseltilecek, %lu yeni paket kurulacak, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu paket yeniden kurulacak, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu paketin sürümü düşürülecek, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu paket kaldırılacak ve %lu paket yükseltilmeyecek.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu paket tam olarak kurulmayacak ya da kaldırılmayacak.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[E/h]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[e/H]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "E"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "H"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "En az bir arama örüntüsü vermelisiniz"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr "Tam Metin Arama"
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "%s paket dosyası eş zamanlı değil."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+"Fazladan %i kayıt daha var. Görmek için '-a' anahtarını kullanabilirsiniz."
+msgstr[1] ""
+"Fazladan %i kayıt daha var. Bu kayıtları görmek için '-a' anahtarını "
+"kullanabilirsiniz."
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr "gerçek bir paket değil (sanal)"
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Paket dosyaları:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "Önbellek eş zamanlı değil, paket dosyası 'x-ref' yapılamıyor"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "SabitlenmiÅŸ paketler:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr "%s -> %s (öncelik: %d)\n"
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Kurulu: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Aday: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(hiçbiri)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Sürüm çizelgesi:"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "'%s' mimarisi için bir paket bulunamadı"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "'%s' paketinin '%s' sürümü bulunamadı"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "'%s' paketi '%s' dağıtım sürümünde bulunamadı"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Kaynak paket olarak '%s' yerine '%s' kullanılacak\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "'%2$s' paketinin '%1$s' sürümünü bulunamadı"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Kaynağının indirileceği en az bir paket seçilmeli"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "%s paketinin kaynak paketi bulunamadı"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"NOT: '%s' paketlemesi '%s' sürüm kontrol sistemiyle aşağıdaki adreste "
+"yapılmaktadır:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Bu paketin en son (ve muhtemelen henüz yayımlanmamış olan)\n"
+"sürümünü edinmek için lütfen:\n"
+"%s\n"
+"komutunu kullanın.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Zaten indirilmiş olan '%s' dosyası atlanıyor\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "%sB/%sB kaynak arÅŸivi indirilecek.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "%sB kaynak arÅŸivi indirilecek.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "%s kaynağını al\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Bazı arşivler alınamadı."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "%s için zaten açılmış bazı paketlerin açılması atlanıyor\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Paket açma komutu '%s' başarısız.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "'dpkg-dev' paketinin kurulu olduÄŸundan emin olun.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "İnşa komutu '%s' başarısız oldu.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "%s paketinin inşa-bağımlılığı bilgisi alınamıyor"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s paketinin hiç inşa bağımlılığı yok.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr "İnşa bağımlılıklarının denetleneceği en az bir paket belirtilmelidir"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"%s mimarisinin bilgileri mevcut değil. Kurulum için apt.conf(5) rehber "
+"sayfasındaki APT::Architectures kısmına göz atın"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr "Not, inşa bağımlılıklarını indirmek için '%s' dizini kullanılıyor\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Not, inşa bağımlılıklarını indirmek için '%s' dosyası kullanılıyor\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "İnşa bağımlılıklarını işleme başarısız oldu"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "%s ayrıştırılamadı. Tekrar düzenlemek ister misiniz? "
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr "'%s' dosyası değişti, lütfen 'apt-get update' komutunu çalıştırın."
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "%s paketinin (sürüm %s) karşılanamayan bir bağımlılığı var:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "'update' komutu argüman almaz"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+"%i paket yükseltilebilir. Bu paketi görmek için 'apt list --upgradable' "
+"komutunu çalıştırın.\n"
+msgstr[1] ""
+"%i paket yükseltilebilir. Bu paketleri görmek için 'apt list --upgradable' "
+"komutunu çalıştırın.\n"
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr "Tüm paketler güncel."
+
+#: cmdline/apt-cache.cc
+msgid "apt-cache stats does not take any arguments"
+msgstr "apt-cache stats komutu argüman almaz"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Toplam paketlerin adları: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Toplam paket yapıları: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Normal paketler: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Saf sanal paketler: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Tekil sanal paketler: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Karışık sanal paketler: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Eksik: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Toplam farklı sürümler: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Toplam farklı açıklamalar: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Toplam bağımlılıklar: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Toplam sürüm/dosya ilişkileri: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Toplam Tanım/Dosya ilişkileri: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Toplam destekleme eÅŸleÅŸtirmeleri: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Toplam birikmiÅŸ dizgiler: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Toplam serbest alan: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Hesaplanan toplam alan: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+"Bu komutun kullanımı bırakılmıştır. Lütfen bunun yerine 'apt-mark showauto' "
+"komutunu kullanın."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+"Kullanım: apt-cache [seçenekler] komut\n"
+" apt-cache [seçenekler] show paket1 [paket2 ...]\n"
+"\n"
+"apt-cache komutu kurulu ve kurulabilir paketler hakkında sorgulamalar\n"
+"yapılmasında ve mevcut bilgilerin görüntülenmesinde kullanılır. Bunun\n"
+"için gereken veri apt-get'in 'update' komutu ile elde edilir. Son\n"
+"güncellemenin üzerinden uzun zaman geçtiği durumlarda gösterilen bilgiler\n"
+"geçerliliğini kaybetmiş olabilir fakat bu sayede kaynaklar çevrimdışı olsa\n"
+"bile apt-cache çalışabilmektedir.\n"
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Paket kayıtlarını görüntüle"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Paket listesini bir düzenli ifade ile ara"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Bir paketin bağımlılık bilgilerini ham haliyle görüntüle"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Bir paketin ters bağımlılık bilgilerini görüntüle"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Bir paketin okunabilir kaydını görüntüle"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Sistemdeki tüm paketlerin adlarını listele"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "İlke seçeneklerini görüntüle"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Lütfen bu CD/DVD'ye bir ad verin, örneğin 'Debian 5.0.3 Disk 1'"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Lütfen sürücüye bir Disk yerleştirin ve [Enter] tuşuna basın"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "'%s', '%s' konumuna bağlanamadı"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+"Öntanımlı bağlama noktasında bir CD-ROM algılanamadı.\n"
+"CD-ROM bağlama noktasını ayarlamak için --cdrom seçeneğini kullanmayı "
+"deneyebilirsiniz.\n"
+"Otomatik CD-ROM ve bağlantı noktası algılama hakkında daha fazla bilgi almak "
+"için 'man apt-cdrom' komutunu kullanabilirsiniz."
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Kalan CD'leriniz için bu işlemi yineleyin."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+"Kullanım: apt-cdrom [seçenekler] komut\n"
+"\n"
+"apt-cdrom komutu CD-ROM'lar, USB flash bellekler ve diğer taşınabilir\n"
+"ortam türlerini APT'a paket kaynağı olarak eklemede kullanılır. Bağlama\n"
+"noktaları ve aygıt bilgisi apt.conf(5), udev(7) ve fstab(5)'ten sağlanır.\n"
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Argümanlar çiftler halinde değil"
+
+#: cmdline/apt-config.cc
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Kullanım: apt-config [seçenekler] komut\n"
+"\n"
+"apt-config tüm APT araçları tarafından kullanılan ayarlar için bir\n"
+"arayüz sağlar. Esasen kabuk betiklerinde ve hata ayıklamada kullanılır.\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr "yapılandırma değerlerini kabuk değerlendirme ile al"
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr "geçerli yapılandırma ayarlarını göster"
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+"Kullanım: apt-dump-solver\n"
+"\n"
+"apt-dump-solver EDSP senaryolarının bir dosyada saklanmasını ve\n"
+"diğer çözücülere aktarılması için arayüz sağlar.\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Kullanım: apt-extracttemplates dosya1 [dosya2 ...]\n"
+"\n"
+"apt-extracttemplates, debian paketlerinden ayar ve şablon dosyalarını\n"
+"almak için kullanılan bir araçtır. Esasen debconf(1) tarafından paket\n"
+"kurulumlarından önce yapılandırma sorularının sorulmasında kullanılır.\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "debconf sürümü alınamıyor. debconf kurulu mu?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "%s paketi bulunamadı"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s otomatik olarak kurulmuş şekilde ayarlandı.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Bu komut artık kullanılmamaktadır. Bunun yerine 'apt-mark auto' ve 'apt-mark "
+"manual' kullanın."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "İç hata, sorun çözücü nesneyi bozdu"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Desteklenen birimler:"
+
+#: cmdline/apt-get.cc
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Kullanım: apt-get [seçenekler] komut\n"
+" apt-get [seçenekler] install|remove paket1 [paket2 ...]\n"
+" apt-get [seçenekler] kaynak paket1 [paket2 ...]\n"
+"\n"
+"apt-get, doğrulanmış kaynaklardan paket ve paket bilgisi indirme ve\n"
+"paketlerin bağımlılıkları ile birlikte kurulumu, yükseltilmesi ve\n"
+"kaldırılmasında kullanılan komut satırı arayüzüdür.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Paket listelerini yenile"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Yükseltme işlemini gerçekleştir"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Yeni paket kur (paket libc6.deb değil libc6 şeklinde olmalıdır)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Paket(leri) kaldır"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Paketleri ve yapılandırma dosyalarını kaldır"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Kullanılmayan tüm paketleri otomatik olarak kaldır"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Dağıtım yükseltme, ayrıntılı bilgi için apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "dselect yapılandırmalarına uy"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Kaynak paketlerin inşa bağımlılıklarını yapılandır"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "İndirilmiş olan arşiv dosyalarını sil"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "İndirilmiş olan eski arşiv dosyalarını sil"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Eksik bağımlılık olmadığından emin ol"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Kaynak paket dosyalarını indir"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "İkili paketleri içinde bulunulan dizine indir"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "Belirtilen paketlerin değişim günlüklerini indir ve görüntüle"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr "Argüman olarak bir adet URL'ye ihtiyaç vardır"
+
+#: cmdline/apt-helper.cc
+msgid "Must specify at least one pair url/filename"
+msgstr "En az bir adet url/dosya-adı çifti belirtilmelidir"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr "İndirme Başarısız"
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr "%s için GetSrvRec başarısız oldu"
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+"Kullanım: apt-helper [seçenekler] komut\n"
+" apt-helper [seçenekler] cat-file dosya ...\n"
+" apt-helper [seçenekler] download-file uri hedef-konum\n"
+"\n"
+"apt-helper kabuk betiklerinde kullanılması için çeşitli komutları\n"
+"bir araya getirir (örn: APT ile aynı indirme veya vekil sunucu\n"
+"ayarlarının kullanılabilmesi için)\n"
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr "verilen adresi (uri) hedef yola kaydet"
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr "Bir SRV kaydına bak (örneğin _http._tcp.ftp.debian.org)"
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr "dosyaları birleştir, otomatik olarak aç"
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr "apt.conf kullanarak vekil sunucuyu algıla"
+
+#: cmdline/apt-internal-planner.cc
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Kullanım: apt-internal-planner\n"
+"\n"
+"apt-internal-planner APT ailesinin dâhilî planlamacısını hata ayıklama\n"
+"gibi sebeplerle harici planlamacı gibi kullanmaya yarayan bir arayüzdür.\n"
+
+#: cmdline/apt-internal-solver.cc
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Kullanım: apt-internal-solver\n"
+"\n"
+"apt-internal-solver APT ailesinin dâhilî çözücüsünü hata ayıklama\n"
+"gibi sebeplerle harici çözücü gibi kullanmaya yarayan bir arayüzdür.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "%s kurulu olmadığı için işaretlenemedi.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s zaten elle kurulmuş olarak ayarlı.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s zaten otomatik kurulmuş olarak ayarlı.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s zaten tutulacak şekilde ayarlanmış.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s zaten tutulmayacak şekilde ayarlanmış.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "'dpkg' çalıştırılamadı. root olduğunuzdan emin misiniz?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "%s paketi tutuluyor.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "%s paketini tutma iÅŸlemi iptal edildi.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr "%s paketi tamamen kaldırma için seçildi.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr "%s paketi kaldırma için seçildi.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr "%s paketi kurulum için seçildi.\n"
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"Kullanım: apt-mark [seçenekler] {auto|manual} paket1 [paket2 ...]\n"
+"\n"
+"apt-mark paketleri otomatik ya da elle kurulmuÅŸ olarak iÅŸaretlemeye\n"
+"yarayan basit bir komut satırı arayüzüdür. Paketlerin dpkg(1) seçim\n"
+"durumlarının değiştirilmesinde ve belirli işaretlere sahip tüm\n"
+"paketlerin listelenmesinde de kullanılabilir.\n"
+"\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "Belirtilen paketleri otomatik kurulmuÅŸ olarak iÅŸaretle"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "Belirtilen paketleri elle kurulmuÅŸ olarak iÅŸaretle"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr "Paketi tutulacak ÅŸekilde iÅŸaretle"
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr "Paketin tutuluyor işaretini kaldır"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr "Otomatik olarak kurulmuş paketlerin listesini görüntüle"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr "Elle kurulmuş paketlerin listesini görüntüle"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr "Tutulur durumda olan paketlerin listesini görüntüle"
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Bilinmeyen paket kaydı!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+"Kullanım: apt-sortpkgs [seçenekler] dosya1 [dosya2 ...]\n"
+"\n"
+"apt-sortpkgs paket bilgi dosyalarını sıralamak için basit bir araçtır.\n"
+"Öntanımlı olarak ikili paket bilgisine göre sıralama yapılır; ama -s\n"
+"seçeneği kullanılarak kaynak paket bilgisine göre de sıralama yapılabilir.\n"
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+"Kullanım: apt [seçenekler] komut\n"
+"\n"
+"apt, komut satırından paket aramaya, sorgulamaya ve yönetmeye yarayan\n"
+"bir paket yöneticisidir. apt-get ve apt-cache gibi özelleşmiş APT\n"
+"araçlarıyla aynı işlevselliği sağlar fakat öntanımlı olarak etkileşimli\n"
+"kullanıma daha uygun ayarları kullanır.\n"
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr "Paketleri adlarına göre listele"
+
+#: cmdline/apt.cc
+msgid "search in package descriptions"
+msgstr "Paket açıklamalarında arama yap"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr "Paket ayrıntılarını görüntüle"
+
+#. package stuff
+#: cmdline/apt.cc
+msgid "install packages"
+msgstr "paket kur"
+
+#: cmdline/apt.cc
+msgid "remove packages"
+msgstr "paket kaldır"
+
+#. system wide stuff
+#: cmdline/apt.cc
+msgid "update list of available packages"
+msgstr "Kullanılabilir paketlerin listesini güncelle"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr "sistemi yükselt (paket kurarak ve yükselterek)"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr "sistemi yükselt (paket kurarak, yükselterek ve kaldırarak)"
+
+#. misc
+#: cmdline/apt.cc
+msgid "edit the source information file"
+msgstr "kaynak bilgi dosyasını düzenle"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Geçersiz öntanımlı ayar!"
+
+#: dselect/install dselect/update
+msgid "Press [Enter] to continue."
+msgstr "Devam etmek için [Enter] tuşuna basın."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Daha önceden indirilmiş .deb dosyalarını silmek istiyor musunuz?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr ""
+"Paket açılırken bazı sorunlar çıktı. Kurulan paketler yapılandırılacak."
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "Bu durum, çift hata iletilerine ya da eksik bağımlılıkların neden"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"olduğu hatalara yol açabilir. Bu durum bir sorun teşkil etmez, sadece bu "
+"iletinin"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"üstündeki hatalar önemlidir. Lütfen bunları onarın ve [I]nstall komutunu "
+"yeniden çalıştırın"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Kullanılabilir bilgiler birleştiriliyor"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Paket uzantı listesi çok uzun"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "%s dizinini iÅŸlemede hata"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Kaynak uzantı listesi çok uzun"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "İçindekiler dosyasına başlık yazmada hata"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "%s içeriğini işlemede hata"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Kullanım: apt-ftparchive [seçenekler] komut\n"
+"Komutlar: packages ikilikonumu [geçersizkılmadosyası [konumöneki]]\n"
+" sources kaynakkonumu [geçersizkılmadosyası [konumöneki]]\n"
+" contents konum\n"
+" release konum\n"
+" generate yapılandırma [gruplar]\n"
+" clean yapılandırma\n"
+"\n"
+"apt-ftparchive Debian arşivleri için indeks dosyaları üretir. \n"
+"dpkg-scanpackages ve dpkg-scansources için tamamen otomatikten\n"
+"işlevsel yedeklere kadar birçok üretim çeşidini destekler.\n"
+"\n"
+"apt-ftparchive, .deb dizinlerinden 'Package' dosyaları üretir. 'Package'\n"
+"dosyası, her paketin MD5 doğrulama ve dosya büyüklüğü gibi denetim\n"
+"alanlarının bilgilerini içerir. Öncelik (Priority) ve bölüm (Section)\n"
+"değerlerini istenen başka değerlerle değiştirebilmek için bir geçersiz\n"
+"kılma dosyası kullanılabilir.\n"
+"\n"
+"Benzer şekilde, apt-ftparchive, .dscs dosyalarından 'Sources' dosyaları\n"
+"üretir. '--source-override' seçeneği bir src geçersiz kılma dosyası\n"
+"belirtmek için kullanılabilir.\n"
+"\n"
+"'packages' ve 'sources' komutları dizin ağacının kökünde çalıştırıl-\n"
+"malıdır. BinaryPath özyineli aramanın temeline işaret etmeli ve\n"
+"geçersiz kılma dosyası geçersiz kılma bayraklarını içermelidir.\n"
+"Pathprefix mevcutsa dosya adı alanlarının sonuna eklenir. Debian\n"
+"arşivinden örnek kullanım şu şekildedir:\n"
+"\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Seçenekler:\n"
+" -h Bu yardım metni\n"
+" --md5 MD5 üretimini denetle\n"
+" -s=? Kaynak geçersiz kılma dosyası\n"
+" -q Sessiz\n"
+" -d=? Seçimlik önbellek veritabanını seç\n"
+" --no-delink Bağ kurulmamış hata ayıklama kipini etkinleştir\n"
+" --contents İçerik dosyası üretimini denetle\n"
+" -c=? Belirtilen yapılandırma dosyası kullan\n"
+" -o=? Yapılandırma seçeneği ayarla"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Hiçbir seçim eşleşmedi"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "'%s' paket dosyası grubunda bazı dosyalar eksik"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "Veritabanı bozuk, dosya adı %s.old olarak değiştirildi"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "Veritabanı eski, %s yükseltilmeye çalışılıyor"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Veritabanı biçimi geçersiz. Eğer apt'ın eski bir sürümünden yükseltme "
+"yaptıysanız, lütfen veritabanını silin ve yeniden oluşturun."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Veritabanı dosyası %s açılamadı: %s"
+
+#: ftparchive/cachedb.cc
+msgid "Failed to read .dsc"
+msgstr ".dsc dosyası okunamadı"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Arşivin denetim kaydı yok"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "İmleç alınamıyor"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Bellek ayırma yapılamadı"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Bilinmeyen sıkıştırma algoritması '%s'"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Sıkıştırılmış %s çıktısı bir sıkıştırma kümesine ihtiyaç duymaktadır"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Altsürece IPC borusu oluşturulamadı"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "fork yapılamadı"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Çocuğu sıkıştır"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "İç hata, %s oluşturulamadı"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Altsürece/dosyaya GÇ işlemi başarısız oldu"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "MD5 hesaplanırken okunamadı"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "%s açılamıyor"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Hatalı geçersiz kılma %s satır %llu (%s)"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Geçersiz kılma dosyası %s okunamadı"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Hatalı geçersiz kılma %s satır %llu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Hatalı geçersiz kılma %s satır %llu #2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Hatalı geçersiz kılma %s satır %llu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "U: %s dizini okunamıyor\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "U: %s durum bilgisi alınamıyor\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "H: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "U: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "H: Hatalar şu dosya için geçerli: "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "%s çözümlenemedi"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Ağaçta gezinme başarısız"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "%s açılamadı"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** %s, %s konumuna bağlanamadı"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " %sB'lik bağ koparma (DeLink) sınırına ulaşıldı.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Arşivde paket alanı yok"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s için geçersiz kılma girdisi yok\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " %s geliÅŸtiricisi %s, %s deÄŸil\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " '%s' paketinin yerine geçecek bir kaynak paket yok\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " '%s' paketinin yerine geçecek bir ikili paket de yok\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Başlıklar bekleniyor"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "HTTP sunucusu geçersiz bir cevap başlığı gönderdi"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Kötü başlık satırı"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "HTTP sunucusu geçersiz bir Content-Length başlığı gönderdi"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "HTTP sunucusu geçersiz bir Content-Range başlığı gönderdi"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "HTTP sunucusunun aralık desteği bozuk"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Bilinmeyen tarih biçimi"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Kötü başlık verisi"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Bağlantı başarısız"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+"Sunucudan/vekilden geçersiz yanıt alındığı için %s seçeneği otomatik olarak "
+"devre dışı bırakıldı. (man 5 apt.conf)"
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "İç hata"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "'cdrom' veritabanı %s okunamıyor"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Lütfen bu CD-ROM'un APT tarafından tanınması için apt-cdrom aracını "
+"kullanın. apt-get update yeni CD-ROM'lar eklemek için kullanılamaz"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Yanlış CD-ROM"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "%s konumundaki CD-ROM çıkarılamıyor, hâlâ kullanımda olabilir."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Disk bulunamadı."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Dosya bulunamadı"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr "%s alan adına doğrudan bağlantılar öntanımlı olarak engellenmiştir."
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Bağlanılıyor %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "%s için bir soket oluşturulamadı (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "%s:%s bağlantısı başlatılamıyor (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Adrese bağlanılamadı: %s:%s (%s), bağlantı zaman aşımına uğradı"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Başarısız"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Adrese bağlanılamadı: %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Bağlanılıyor: %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "'%s' çözümlenemedi"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "'%s' çözümlenirken geçici bir sorunla karşılaşıldı"
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "'%s:%s' çözümlenirken bir sistem hatası oluştu"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "'%s:%s' (%i - %s) adresi çözümlenirken bir şeyler kötü gitti"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Bağlanılamadı %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Durum bilgisi okunamadı"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Geçersiz URI, yerel URI'ler // ile başlamamalıdır"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Giriş yapılıyor"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Eş adı belirlenemiyor"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Yerel ad belirlenemiyor"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Sunucu bağlantıyı reddetti, sunucunun iletisi: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER başarısız, sunucunun iletisi: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS başarısız, sunucunun iletisi: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Bir Vekil sunucu belirtildi ancak oturum açma betiği belirtilmedi, Acquire::"
+"ftp::ProxyLogin boÅŸ."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Oturum açma betiği komutu '%s' başarısız oldu, sunucunun iletisi: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE başarısız, sunucunun iletisi: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Bağlantı zaman aşımına uğradı"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Sunucu bağlantıyı kesti"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Bir yanıt arabelleği taşırdı."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "İletişim kuralları bozulması"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Bir soket oluşturulamadı"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Veri soketine bağlanılamadı, bağlantı zaman aşımına uğradı"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Edilgen sokete bağlanılamadı."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo bir dinleme soketi alamıyor"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Bir sokete bağlanılamadı"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Soket dinlenemedi"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Soketin adı belirlenemedi"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "PORT komutu gönderilemedi"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Bilinmeyen adres ailesi %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT başarısız, sunucunun iletisi: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Veri soketi bağlantısı zaman aşımına uğradı"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Bağlantı kabul edilemiyor"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Dosya sağlaması yapılamadı"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Dosya alınamıyor, sunucunun iletisi: '%s'"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Veri soketi zaman aşımına uğradı"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Veri aktarımı başarısız, sunucunun iletisi: '%s'"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Sorgu"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Çağrılamıyor "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+"İmzalı dosya geçerli değil, '%s' hatası alındı (ağ kimlik doğrulama "
+"gerektiriyor mu?)"
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "En az bir geçersiz imza ile karşılaşıldı."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr "İç hata: İmza iyi, ancak anahtar parmak izi belirlenemedi?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr "İmza doğrulama için 'apt-key' çalıştırılamadı (gnupg kurulu mu?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "apt-key çalıştırılırken bilinmeyen hata"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr "%s anahtarının imzası zayıf bir özet algoritması kullanıyor (%s)"
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Aşağıdaki imzalar geçersiz:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr "Aşağıdaki imzalar doğrulanamadı, çünkü genel anahtar mevcut değil:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Dosyaya yazılamadı"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Sunucudan okunurken hata oluştu. Uzak uç bağlantıyı kapattı"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Sunucudan okunurken hata"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Dosyaya yazılamadı"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Seçme başarısız"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Bağlantı zaman aşımına uğradı"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Çıktı dosyasına yazılırken hata"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "'%s' yansı dosyası bulunamadı "
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Yansı dosyası %s okunamıyor"
+
+#: methods/mirror.cc
+#, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "'%s' yansı dosyasında hiç girdi bulunmuyor"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Yansı: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Değişiklik zamanı ayarlanamadı"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Bağlantı vaktinden önce kapandı"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "Boş dosyalar geçerli birer arşiv dosyası olamazlar"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Karşılanmayan bağımlılıklar. --fix-broken kullanmayı deneyin."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Bunları düzeltmek için 'apt --fix-broken install' komutunu çalıştırmanız "
+#~ "gerekebilir:"
+
+#~ msgid "(not found)"
+#~ msgstr "(bulunamadı)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Paket sabitleme: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr ""
+#~ "Aşağıdaki anahtar kimlikleri için kullanılır hiçbir genel anahtar yok:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "'%s' deposu imzalanmamış"
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "'%4$s' paketlerinde %3$s paketine izin verilmediği için %2$s kaynağının "
+#~ "%1$s bağımlılığı karşılanamıyor"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "%2$s için %1$s bağımlılığı, %3$s paketi bulunamadığı için karşılanamadı"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "%2$s için %1$s bağımlılığı karşılanamadı: Kurulu %3$s paketi çok yeni"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "%2$s için %1$s bağımlılığı sağlanamıyor, çünkü %3$s paketinin aday sürümü "
+#~ "gerekli sürüm şartlarını karşılamıyor"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "%2$s için %1$s bağımlılığı sağlanamıyor, çünkü %3$s paketinin aday sürümü "
+#~ "yok"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "%2$s için %1$s bağımlılığı karşılanamadı: %3$s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "%s için inşa bağımlılıkları karşılanamadı."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "%s bağı koparılırken sorun çıktı"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "%s bağı koparılamadı"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Kullanım: apt-cache [seçenekler] komut\n"
+#~ " apt-cache [seçenekler] show paket1 [paket2 ...]\n"
+#~ "\n"
+#~ "apt-cache APT'nin ikili paket önbelleğindeki dosyaları\n"
+#~ "sorgulamakta kullanılan alt seviye bir araçtır.\n"
+
+#~ msgid "Commands:"
+#~ msgstr "Komutlar:"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Options:\n"
+#~ " -h Bu yardım metni.\n"
+#~ " -p=? Paket önbelleği.\n"
+#~ " -s=? Kaynak önbelleği.\n"
+#~ " -q İlerleme göstergesini kapat.\n"
+#~ " -i unmet komutunda sadece önemli bağımlılıkları görüntüle.\n"
+#~ " -c=? Belirtilen yapılandırma dosyasını kullan\n"
+#~ " -o=? Herhangi bir yapılandırma seçeneğini ayarla, örneğin -o dir::"
+#~ "cache=/tmp\n"
+#~ "Ayrıntılı bilgi için apt-cache(8) ve apt.conf(5) rehber sayfalarına göz "
+#~ "atın.\n"
+
+#~ msgid ""
+#~ "Usage: apt [options] command\n"
+#~ "\n"
+#~ "CLI for apt.\n"
+#~ msgstr ""
+#~ "Kullanım: apt [seçenekler] komut\n"
+#~ "\n"
+#~ "apt için komut satırı arayüzü.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "Seçenekler:\n"
+#~ " -h Bu yardım metni.\n"
+#~ " -q Günlük tutmaya uygun çıktı - İlerleme göstergesi yok\n"
+#~ " -qq Hata olmadığı müddetçe çıktıya bir şey yazma\n"
+#~ " -s Bir şey yapma. Sadece ne yapılacağını söyler.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Belirtilen yapılandırma dosyası kullan\n"
+#~ " -o=? Yapılandırma seçeneği ayarla, örneğin -o dir::cache=/tmp\n"
+#~ "Ayrıntılı bilgi için apt-mark(8) ve apt.conf(5) rehber sayfalarına\n"
+#~ "bakabilirsiniz."
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Seçenekler:\n"
+#~ " -h Bu yardım dosyası.\n"
+#~ " -c=? Belirtilen ayar dosyasını görüntüler\n"
+#~ " -o=? İsteğe bağlı ayar seçeneği belirtmenizi sağlar, örneğin -o dir::"
+#~ "cache=/tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "Seçenekler:\n"
+#~ " -h Bu yardım metni.\n"
+#~ " -q Günlük tutmaya uygun çıktı - İlerleme göstergesi yok\n"
+#~ " -qq Hata olmadığı müddetçe çıktıya bir şey yazma\n"
+#~ " -s Bir şey yapma. Sadece ne yapılacağını söyler.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Belirtilen yapılandırma dosyası kullan\n"
+#~ " -o=? Yapılandırma seçeneği ayarla, örneğin -o dir::cache=/tmp\n"
+#~ "Ayrıntılı bilgi için apt-mark(8) ve apt.conf(5) rehber sayfalarına\n"
+#~ "bakabilirsiniz."
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Kullanım: apt-sortpkgs [seçenekler] dosya1 [dosya2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs, paket dosyalarını sıralayan basit bir araçtır.\n"
+#~ "-s seçeneği ne tür bir dosya olduğunu göstermekte kullanılır.\n"
+#~ "\n"
+#~ "Seçenekler:\n"
+#~ " -h Bu yardım metni\n"
+#~ " -s Kaynak dosyası sıralamayı kullan\n"
+#~ " -c=? Belirtilen yapılandırma dosyasını oku\n"
+#~ " -o=? Herhangi bir yapılandırma seçeneği ayarla, örneğin -o dir::cache=/"
+#~ "tmp\n"
+
+#~ msgid "Use --allow-insecure-repositories to force the update"
+#~ msgstr ""
+#~ "Buna rağmen güncellemeyi yapmak için --allow-insecure-repositories "
+#~ "seçeneğini kullanın"
+
+#~ msgid ""
+#~ "The data from '%s' is not signed. Packages from that repository can not "
+#~ "be authenticated."
+#~ msgstr ""
+#~ "'%s' deposundan alınan veri imzalanmamış. Bu depodan gelen paketlerin "
+#~ "aslına uygunluğu denetlenemeyecek."
+
+#~ msgid ""
+#~ "The repository '%s' does not have a Release file. This is deprecated, "
+#~ "please contact the owner of the repository."
+#~ msgstr ""
+#~ "'%s' deposunun Release dosyası yok. Bu tür depolar gelecekte kullanımdan "
+#~ "kaldırılacaktır, lütfen depo sahibiyle iletişime geçin."
+
+#~ msgid "Child process failed"
+#~ msgstr "Alt süreç başarısız"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "En az bir adet url/dosya-adı çifti belirtilmelidir"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Boru oluşturulamadı"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Gzip çalıştırılamadı "
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Toplam bağımlılık sürümü alanı: "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s (%s için) %s %s tarihinde derlendi\n"
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "%s üzerinde yeterli boş alan yok"
+
+#~ msgid "Done"
+#~ msgstr "Bitti"
+
+#~ msgid "Hit "
+#~ msgstr "Bağlandı "
+
+#~ msgid "Get:"
+#~ msgstr "Alınıyor: "
+
+#~ msgid "Ign "
+#~ msgstr "Yoksay "
+
+#~ msgid "Err "
+#~ msgstr "Hata "
+
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr ""
+#~ "Kaynak listesinin (%2$s) %1$u numaralı girdisi hatalı (URI ayrıştırma)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "Kaynak listesinin (%2$s) %1$lu numaralı satırı hatalı ([seçenek] "
+#~ "ayrıştırılamıyor)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr ""
+#~ "Kaynak listesinin (%2$s) %1$lu numaralı satırı hatalı ([seçenek] çok kısa)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr ""
+#~ "Kaynak listesinin (%2$s) %1$lu numaralı satırı hatalı ([%3$s] bir atama "
+#~ "deÄŸil)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr ""
+#~ "Kaynak listesinin (%2$s) %1$lu numaralı satırı hatalı ([%3$s] seçeneğinin "
+#~ "anahtarı yok)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "Kaynak listesinin (%2$s) %1$lu numaralı satırı hatalı ([%3$s] %4$s "
+#~ "anahtarına değer atanmamış)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Kaynak listesinin (%2$s) %1$lu numaralı satırı hatalı (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Kaynak listesinin (%2$s) %1$lu numaralı satırı hatalı (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr ""
+#~ "Kaynak listesinin (%2$s) %1$lu numaralı satırı hatalı (URI ayrıştırma)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "Kaynak listesinin (%2$s) %1$lu numaralı satırı hatalı (mutlak dist)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr ""
+#~ "Kaynak listesinin (%2$s) %1$lu numaralı satırı hatalı (dağıtım ayrıştırma)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "Dosya bağımlılıkları işlenirken %s %s paketi bulunamadı"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Kaynak listesinin (%s) dosya bilgisi alınamadı"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Dosya Sağlananları Toplanıyor"
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "'Release' dosyasında '%s' için uygun bir sağlama toplamı bulunamadı"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Sağlayıcı bloğu %s parmak izi içermiyor"
+
+#~ msgid "Unable to parse package file %s (2)"
+#~ msgstr "Paket dosyası %s ayrıştırılamadı (2)"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "%s dizininde kurulu bir anahtar yok."
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "DOSYA* oluşturulamadı"
+
+#~ msgid "Is stdout a terminal?"
+#~ msgstr "stdout bir uçbirim mi?"
+
+#~ msgid "ioctl(TIOCGWINSZ) failed"
+#~ msgstr "ioctl(TIOCGWINSZ) başarısız oldu"
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "İç hata, AllUpgrade bazı şeyleri bozdu"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s geçerli bir DEB paketi değil."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "CD-ROM bağlama noktası %s kullanılıyor\n"
+#~ "CD-ROM bağlanıyor\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "%s mmap ve dosya işlem kullanımı ile yamalanamadı - yama bozuk gibi "
+#~ "duruyor."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "%s mmap ile yamalanamadı (mmap'e özel bir hata değil) - yama bozuk gibi "
+#~ "duruyor."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr "Mevcut olmayan hedef '%s' sürüm '%s' paketini ihmal et"
+
+#~ msgid "Downloading %s %s"
+#~ msgstr "Ä°ndiriliyor %s %s"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Bu dosya geçerli bir DEB arşivi değil, '%s', '%s' ya da '%s' üyesi yok"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5 toplamı eşleşmiyor"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "%s paketindeki dosyalardan biri konumlandırılamadı. Bu durum, bu paketi "
+#~ "elle düzeltmeniz gerektiği anlamına gelebilir."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Günlük yazılamadı, openpty() başarısız oldu (/dev/pts bağlanmadı mı?)\n"
+
+#~ msgid "File %s doesn't start with a clearsigned message"
+#~ msgstr "%s dosyası açıkimzalı bir iletiyle başlamıyor"
diff --git a/po/uk.po b/po/uk.po
new file mode 100644
index 000000000..fd9b237d5
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,4379 @@
+# translation of apt-all.po to УкраїнÑька
+# This file is put in the public domain.
+#
+# A. Bondarenko <artem.brz@gmail.com>, 2006, 2012.
+# неможливо + не вдалоÑÑ
+# parse на аналізувати
+# Release
+# вихідні текÑти
+# y/n заміÑÑ‚ÑŒ Ñ‚/н
+# binary = двійковий
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.5\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2012-09-25 20:19+0300\n"
+"Last-Translator: A. Bondarenko <artem.brz@gmail.com>\n"
+"Language-Team: УкраїнÑька <uk@li.org>\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.1\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Ðевірний Ð¿Ñ–Ð´Ð¿Ð¸Ñ Ð°Ñ€Ñ…Ñ–Ð²Ñƒ"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Ðеможливо прочитати заголовок 'member' в архіві"
+
+#: apt-inst/contrib/arfile.cc
+#, fuzzy, c-format
+msgid "Invalid archive member header %s"
+msgstr "Ðевірний заголовок 'member' %s в архіві"
+
+#: apt-inst/contrib/arfile.cc
+#, fuzzy
+msgid "Invalid archive member header"
+msgstr "Ðевірний заголовок 'member' в архіві"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Ðрхів занадто малий"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ заголовки в архіві"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Ðеможливо знайти аутентифікаційний Ð·Ð°Ð¿Ð¸Ñ Ð´Ð»Ñ: %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Пошкоджений архів"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Контрольна Ñума tar архіва невірна, архів пошкоджений"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Ðевідомий тип заголовку TAR - %u, член %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Ðевірний DEB архів, відÑутній член '%s'"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, не можу знайти Ñкладову чаÑтину %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Контрольний файл не можливо обробити"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати файл %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Ðе вдалоÑÑ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ð¸ файл %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "ШлÑÑ… %s занадто довгий"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Ð Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ð½Ð½Ñ %s більш ніж один раз"
+
+#: apt-inst/extract.cc
+#, fuzzy, c-format
+msgid "The directory %s is diverted"
+msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–Ñ %s Ñ” відхиленою (diverted)"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Пакунок пробує запиÑати у ціль з diversion %s/%s"
+
+#: apt-inst/extract.cc
+#, fuzzy
+msgid "The diversion path is too long"
+msgstr "ШлÑÑ… 'diversion' Ñ” занадто довгим"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Ðе вдалоÑÑ Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‚Ð¸ атрибути %s"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ñ‚Ð¸ %s на %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–Ñ %s замінюєтьÑÑ Ð½Ðµ директорією"
+
+#: apt-inst/extract.cc
+#, fuzzy
+msgid "Failed to locate node in its hash bucket"
+msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ вузол у його наборі хешів"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "ШлÑÑ… занадто довгий"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "ПерезапиÑати відповідніÑÑ‚ÑŒ пакунка без верÑÑ–Ñ— Ð´Ð»Ñ %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Файл %s/%s перезапиÑує інший файл в пакунку %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Ðеможливо прочитати %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Ðеможливо прочитати атрибути %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode було викликано Ð´Ð»Ñ Ð²ÑƒÐ·Ð»Ð°, що ще викориÑтовувавÑÑ"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ елемент хеша!"
+
+#: apt-inst/filelist.cc
+#, fuzzy
+msgid "Failed to allocate diversion"
+msgstr "Ðе вдалоÑÑ Ñтворити diversion"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° в AddDiversion"
+
+#: apt-inst/filelist.cc
+#, fuzzy, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Спроба перезапиÑу diversion, %s -> %s Ñ– %s/%s"
+
+#: apt-inst/filelist.cc
+#, fuzzy, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Подвійне Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ diversion %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "ÐšÐ¾Ð¿Ñ–Ñ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ð¹Ð½Ð¾Ð³Ð¾ файлу %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–Ñ %s Ñ” відхиленою (diverted)"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–Ñ %s Ñ” відхиленою (diverted)"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–Ñ %s Ñ” відхиленою (diverted)"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–Ñ %s Ñ” відхиленою (diverted)"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–Ñ %s Ñ” відхиленою (diverted)"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ поÑÐ¸Ð»Ð°Ð½Ð½Ñ (readlink) %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "ÐевідповідніÑÑ‚ÑŒ хешу MD5Sum"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ñ‚Ð¸, %s (%s -> %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "ÐевідповідніÑÑ‚ÑŒ розміру"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "Ðевірна Ð´Ñ–Ñ %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Помилка запиÑу"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"Виникла помилка під Ñ‡Ð°Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ підпиÑу. Репозиторій не оновлено, "
+"попередні індекÑні файли будуть викориÑтані. Помилка GPG: %s: %s\n"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "Помилка GPG: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"Ðеможливо знайти очікуваний Ð·Ð°Ð¿Ð¸Ñ '%s' у 'Release' файлі (Ðевірний Ð·Ð°Ð¿Ð¸Ñ Ñƒ "
+"sources.list, або пошкоджений файл)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"Файл 'Release' Ð´Ð»Ñ %s заÑтарів (недійÑний з %s). ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ "
+"Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ñ–Ñ Ð½Ðµ будуть заÑтоÑовані."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Конфліктуючий диÑтрибутив: %s (очікувавÑÑ %s, але Ñ” %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Я не зміг знайти файл Ð´Ð»Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑƒ %s. Можливо, це значить, що вам потрібно "
+"влаÑноруч виправити цей пакунок. (через відÑутніÑÑ‚ÑŒ 'arch')"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr "Ðеможливо знайти джерело Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ— '%s' Ð´Ð»Ñ '%s'"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"ІндекÑні файли пакунків пошкоджені. Ðемає Ð¿Ð¾Ð»Ñ 'Filename' Ð´Ð»Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑƒ %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Журнал змін Ð´Ð»Ñ %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Драйвер Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° %s не знайдено."
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "Перевірте, чи вÑтановлений пакунок 'dpkg-dev'.\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Метод %s Ñтартував некоректно"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr ""
+"Будь-лаÑка, вÑтавте диÑк з поміткою: '%s' в привід '%s' Ñ– натиÑніть Enter."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "ВідÑÑƒÑ‚Ð½Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–Ñ Ð·Ñ– ÑпиÑками: %spartial"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "ВідÑÑƒÑ‚Ð½Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–Ñ Ð´Ð»Ñ Ð°Ñ€Ñ…Ñ–Ð²Ñ–Ð²: %spartial"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "Ðеможливо заблокувати директорію %s"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "Тип '%s' індекÑного файлу не підтримуєтьÑÑ"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Ðеможливо змінити на %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "ЗавантажуєтьÑÑ Ñ„Ð°Ð¹Ð» %li з %li (залишилоÑÑŒ %s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "ЗавантажуєтьÑÑ Ñ„Ð°Ð¹Ð» %li з %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr ""
+"Пакунок %s повинен бути перевÑтановленим, але Ñ Ð½Ðµ можу знайти його архів."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Помилка, pkgProblemResolver::Resolve згенерував зупинку, це може бути "
+"пов'Ñзано з зафікÑованими пакунками."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "Ðеможливо уÑунути проблеми, ви маєте поламані зафікÑовані пакунки."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "Ðе можу обробити чи відкрити перелік пакунків чи ÑтатуÑний файл."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "Ð”Ð»Ñ Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ñ†Ð¸Ñ… помилок Ви можете виконати apt-get update"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Ðеможливо прочитати перелік вихідних кодів."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Помилка компілÑції регулÑрного виразу - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "ВипуÑк '%s' Ð´Ð»Ñ '%s' не знайдено"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "ВерÑÑ–Ñ '%s' Ð´Ð»Ñ '%s' не знайдена"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Ðеможливо знайти Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ '%s'"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Ðеможливо знайти ніÑкий пакунок через рег.вираз '%s'"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Ðеможливо знайти ніÑкий пакунок через рег.вираз '%s'"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Ðе можу знайти пакунок %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr "Ðеможливо вибирати верÑÑ–Ñ— пакунку '%s', так Ñк він Ñ” чиÑто віртуальним"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+"Ðеможливо вибрати найновішу верÑÑ–ÑŽ пакунку '%s', так Ñк він Ñ” чиÑто "
+"віртуальним"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr "Ðеможливо вибрати верÑÑ–ÑŽ пакунку %s, так Ñк він не має кандидатів"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"Ðеможливо вибрати вÑтановлену верÑÑ–ÑŽ пакунку %s, так Ñк такий пакунок не "
+"вÑтановлено"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"Ðеможливо вибрати вÑтановлений пакунок, або верÑÑ–ÑŽ-кандидат пакунку '%s', "
+"так Ñк вони відÑутні"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "РÑдок %u Ñ” занадто довгим у переліку джерел %s."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "ДемонтуєтьÑÑ CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "ВикориÑтовуєтьÑÑ Ñ‚Ð¾Ñ‡ÐºÐ° Ð¼Ð¾Ð½Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ CD-ROM: %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Чекаю на диÑк...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "МонтуєтьÑÑ CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "ІдентифікаціÑ... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "ЗапиÑано мітку: %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "СкануєтьÑÑ Ð´Ð¸Ñк на вміÑÑ‚ індекÑних файлів...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Знайдено %zu індекÑів пакунків, %zu індекÑів вихідних текÑтів, %zu індекÑів "
+"перекладів Ñ– %zu підпиÑів\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Ðеможливо знайти ніÑкі файли пакунків, можливо, що це не диÑк з Debian, або "
+"невірна архітектура?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Знайдено мітку: '%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Ðе Ñ” вірною назвою, Ñпробуйте ще.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Цей диÑк зветьÑÑ: \n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "КопіюютьÑÑ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÐ¸ пакунків..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "ЗапиÑуєтьÑÑ Ð½Ð¾Ð²Ð¸Ð¹ перелік вихідних текÑтів\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Перелік вихідних текÑтів Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ диÑка:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Ðеможливо прочитати атрибути %s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Ðеможливо прочитати атрибути точки Ð¼Ð¾Ð½Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ атрибути cdrom"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Ðевідомий параметр командного Ñ€Ñдка '%c' [з %s]."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Ðезрозумілий параметр %s командного Ñ€Ñдка"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Параметр %s командного Ñ€Ñдка не Ñ” логічного типу 'boolean'"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Параметр %s потребує аргумента."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr ""
+"ÐžÐ¿Ñ†Ñ–Ñ %s: Ð¡Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð²Ð¸Ð¼Ð°Ð³Ð°Ñ”, щоб Ñ€Ñдки у конфігурації мали вираз =<val>."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Параметр %s потребує цілочиÑлений аргумент, але не '%s'"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Параметр '%s' є занадто довгим"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "Ðезрозумілий вираз %s, Ñпробуйте true чи false."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Ðевірна Ð´Ñ–Ñ %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Ðерозпізнаваний тип абревіатури: '%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "ВідкриваєтьÑÑ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ð¹Ð½Ð¸Ð¹ файл %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "СинтакÑична помилка %s:%u: Блок починаєтьÑÑ Ð±ÐµÐ· назви."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "СинтакÑична помилка %s:%u: Ñпотворений тег"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "СинтакÑична помилка %s:%u: зайві Ñимволи піÑÐ»Ñ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr ""
+"СинтакÑична помилка %s:%u: Директиви можуть бути виконані тільки на "
+"найвищому рівні"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "СинтакÑична помилка %s:%u: Забагато вмонтованих (nested) включень"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "СинтакÑична помилка %s:%u: Включено звідÑи"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "СинтакÑична помилка %s:%u: Директива '%s' не підтримуєтьÑÑ"
+
+#: apt-pkg/contrib/configuration.cc
+#, fuzzy, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"СинтакÑична помилка %s:%u: 'clear directive' потребує дерево налаштувань Ñк "
+"аргумент"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "СинтакÑична помилка %s:%u: Зайве ÑÐ¼Ñ–Ñ‚Ñ‚Ñ Ð² кінці файла"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Проблема з роз'єднаннÑм файла %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr ""
+"Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ викориÑтовуєтьÑÑ, так Ñк файл Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ %s доÑтупний тільки "
+"Ð´Ð»Ñ Ð·Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Ðеможливо відкрити 'lock' файл %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr ""
+"Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ викориÑтовуєтьÑÑ, так Ñк файл Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ %s знаходитьÑÑ Ð½Ð° "
+"файловій ÑиÑтемі nfs"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Ðеможливо отримати замок %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr "Ðеможливо Ñтворити перелік файлів, так Ñк '%s' не Ñ” директорією"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr "ІгноруєтьÑÑ '%s' у директорії '%s', так Ñк не Ñ” звичайним файлом"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr "ІгноруєтьÑÑ Ñ„Ð°Ð¹Ð» '%s' у директорії '%s', так Ñк він не має розширеннÑ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"ІгноруєтьÑÑ Ñ„Ð°Ð¹Ð» '%s' у директорії '%s', так Ñк він має невірне розширеннÑ"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Очікував на %s, але його там не було"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "ÐŸÑ–Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ %s отримав 'segmentation fault' (фатальна помилка)."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "ÐŸÑ–Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ %s отримав Ñигнал %u."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "ÐŸÑ–Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ %s повернув код помилки (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "ÐŸÑ–Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ %s раптово завершивÑÑ"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Помилка зчитуваннÑ"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Помилка запиÑу"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Проблема з закриттÑм gzip файла %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Ðе вдалоÑÑ Ñтворити IPC з породженим процеÑом"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ компреÑор "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Ðеможливо відкрити файл %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Ðеможливо відкрити файловий деÑкриптор %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "зчитуваннÑ, повинен зчитати ще %llu байт, але нічого більше нема"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "запиÑуваннÑ, повинен був запиÑати ще %llu байт, але не вдалоÑÑ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Проблема з закриттÑм файла %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Проблема з перейменуваннÑм файла %s на %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Проблема з Ñинхронізацією файла"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Ðеможливо прочитати атрибути %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Ðеможливо запиÑати в %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Ðеможливо відобразити в пам'ÑÑ‚Ñ– (mmap) пуÑтий файл"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Ðеможливо зробити mmap Ð´Ð»Ñ %llu байт"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Ðеможливо Ñтворити копію файлового деÑкриптора %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "Ðе вдалоÑÑ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ð¸ mmap"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "Ðе вдалоÑÑ Ñинхронізувати mmap"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Ðеможливо відобразити в пам'ÑÑ‚Ñ– %lu байт"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Ðе вдалоÑÑ Ð¾Ð±Ñ€Ñ–Ð·Ð°Ñ‚Ð¸ файл"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"Динамічний MMap викориÑтав уÑе міÑце. Будь-лаÑка, збільшіть розмір APT::"
+"Cache-Start. Поточне значеннÑ: %lu. (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+"Ðеможливо збільшити розмір MMap, так Ñк Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð² %lu байт вже доÑÑгнуто."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Ðеможливо збільшити розмір MMap, так Ñк автоматичне Ð·Ð±Ñ–Ð»ÑŒÑˆÐµÐ½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾ "
+"кориÑтувачем."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Помилка!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Виконано"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... Виконано"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%liд %liг %liхв %liÑ"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%liг %liхв %liÑ"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%liхв %liÑ"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%liÑ"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Вибір %s не знайдено"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Ðеможливо проаналізувати 'Release' файл %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Ðемає Ñекцій у 'Release' файлі %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Ðемає запиÑу 'Hash' у 'Release' файлі %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "Ðевірний Ð·Ð°Ð¿Ð¸Ñ '%s' у 'Release' файлі %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Ðеможливо проаналізувати файл пакунку %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"Ðеможливо заблокувати адмініÑтративну директорію (%s), може Ñ—Ñ— викориÑтовує "
+"інший процеÑ?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Ðеможливо заблокувати адмініÑтративну директорію (%s), ви root?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"dpkg було перервано, ви повинні вручну запуÑтити '%s' аби виправити "
+"проблему. "
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Ðе заблоковано"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "Ð’ÑтановлюєтьÑÑ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "ÐалаштовуєтьÑÑ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "ВидалÑєтьÑÑ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "ПовніÑÑ‚ÑŽ видалÑєтьÑÑ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "ВзÑто до відома Ð·Ð½Ð¸ÐºÐ½ÐµÐ½Ð½Ñ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "ВиконуєтьÑÑ Ð¿Ñ–ÑлÑуÑтановочний ініціатор %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "Ð’Ñтановлено %s"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–Ñ '%s' відÑутнÑ"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "Ðеможливо відкрити файл '%s'"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Підготовка %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Ð Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ð½Ð½Ñ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Підготовка до конфігурації %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Підготовка до Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "Видалено %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Підготовка до повного Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "ПовніÑÑ‚ÑŽ видалено %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "Ðеможливо запиÑати в %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "Операцію було перервано до того, Ñк вона мала завершитиÑÑ"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+"Звіт apport не був запиÑаний, тому що параметр MaxReports вже доÑÑгнув "
+"макÑимальної величини"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "проблеми з залежноÑÑ‚Ñми - залишено неналаштованим"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Звіт apport не був запиÑаний, тому що Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилку вказує на те, "
+"що Ñ†Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñ” наÑлідком попередньої невдачі."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Звіт apport не був запиÑаний, тому що Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилку вказує на "
+"відÑутніÑÑ‚ÑŒ вільного міÑÑ†Ñ Ð½Ð° диÑку"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Звіт apport не був запиÑаний, тому що Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилку вказує на "
+"відÑутніÑÑ‚ÑŒ вільного міÑÑ†Ñ Ñƒ пам'ÑÑ‚Ñ–"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Звіт apport не був запиÑаний, тому що Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилку вказує на "
+"відÑутніÑÑ‚ÑŒ вільного міÑÑ†Ñ Ð½Ð° диÑку"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"Звіт apport не був запиÑаний, тому що Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилку вказує на "
+"помилку В/В (I/O) у dpkg"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Побудова дерева залежноÑтей"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "ВерÑÑ–Ñ— кандидатів"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "ÒÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñтей"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Ð—Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про Ñтан"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ StateFile %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати до тимчаÑового StateFile файла %s"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send scenario to solver"
+msgstr "Відправити Ñценарій розв'Ñзувачу"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send request to solver"
+msgstr "Відправити запит розв'Ñзувачу"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Prepare for receiving solution"
+msgstr "ПригодуватиÑÑ Ð´Ð¾ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð²'Ñзку"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+"Зовнішній розв'Ñзувач завершивÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾ без відповідного Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ "
+"помилку"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Execute external solver"
+msgstr "Виконати зовнішній розв'Ñзувач"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Execute external planner"
+msgstr "Виконати зовнішній розв'Ñзувач"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send request to planner"
+msgstr "Відправити запит розв'Ñзувачу"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send scenario to planner"
+msgstr "Відправити Ñценарій розв'Ñзувачу"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "External planner failed without a proper error message"
+msgstr ""
+"Зовнішній розв'Ñзувач завершивÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾ без відповідного Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ "
+"помилку"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "ЗапиÑано %i запиÑів.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "ЗапиÑано %i запиÑів з %i відÑутніми файлами.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "ЗапиÑано %i запиÑів з %i невідповідними файлам\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "ЗапиÑано %i запиÑів з %i відÑутніми Ñ– %i невідповідними файлами\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "Ðеможливо знайти аутентифікаційний Ð·Ð°Ð¿Ð¸Ñ Ð´Ð»Ñ: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "ÐевідповідніÑÑ‚ÑŒ хешу длÑ: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "СиÑтема Ð¿Ð°ÐºÑƒÐ²Ð°Ð½Ð½Ñ '%s' не підтримуєтьÑÑ"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Ðеможливо визначити тип необхідної ÑиÑтеми пакуваннÑ"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "ВиконуєтьÑÑ dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"Ðеможливо прÑмо налаштувати конфігурацію на '%s'. Будь-лаÑка, дивітьÑÑ man 5 "
+"apt.conf, нижче APT::Immediate-Configure Ð´Ð»Ñ Ð´ÐµÑ‚Ð°Ð»ÐµÐ¹. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "Ðеможливо налаштувати '%s'."
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Ð”Ð»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¾Ð³Ð¾ вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ðµ тимчаÑове Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð²Ð°Ð¶Ð»Ð¸Ð²Ð¾Ð³Ð¾ "
+"пакунку %s через петлеві конфлікти/пре-залежноÑÑ‚Ñ– (Pre-Depends loop). Це "
+"погано, але Ñкщо Ви дійÑно бажаєте зробити це, активуйте параметр APT::Force-"
+"LoopBreak."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Кеш пакунків пуÑтий"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Файл кешу пакунків пошкоджений"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Файл кешу пакунків має неÑуміÑну верÑÑ–ÑŽ"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Цей APT не підтримує ÑиÑтему Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²ÐµÑ€Ñій '%s'"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Кеш пакунків був побудований Ð´Ð»Ñ Ñ–Ð½ÑˆÐ¾Ñ— архітектури"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Файл кешу пакунків пошкоджений, занадто малий"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "ЗалежноÑÑ‚Ñ– (Depends)"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Пре-ЗалежноÑÑ‚Ñ– (PreDepends)"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Пропонує (Suggests)"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Конфлікти (Conflicts)"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Рекомендує (Recommends)"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "ЗамінÑÑ” (Replaces)"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Ламає (Breaks)"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Покращує (Enhances)"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "ЗаÑтарілі (Obsoletes)"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "важливі (important)"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "необхідні (required)"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "Ñтандартні (standard)"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "додаткові (extra)"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "необов'Ñзкові (optional)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Кеш має неÑуміÑну ÑиÑтему Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²ÐµÑ€Ñій"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Виникла помилка під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ %s (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "Ого! Ви перевищили кількіÑÑ‚ÑŒ імен пакунків, Ñкі APT може обробити."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Ого! Ви перевищили кількіÑÑ‚ÑŒ верÑій, Ñкі APT може обробити."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Ого! Ви перевищили кількіÑÑ‚ÑŒ опиÑів, Ñкі APT може обробити."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "Ого! Ви перевищили кількіÑÑ‚ÑŒ залежноÑтей, Ñкі APT може обробити."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Ð—Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÑ–Ð² пакунків"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Помилка IO під Ñ‡Ð°Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ ÐºÐµÑˆÑƒ вихідних текÑтів"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Тип '%s' індекÑного файлу не підтримуєтьÑÑ"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"Ðевірне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ '%s' Ð´Ð»Ñ APT::Default-Release, так Ñк такий випуÑк не Ñ” "
+"доÑтупним у вихідних кодах"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "Ðевірний Ð·Ð°Ð¿Ð¸Ñ Ñƒ файлі налаштувань %s, відÑутній заголовок Package"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Ðе зрозумів тип %s Ð´Ð»Ñ Ñ„Ñ–ÐºÑатора пакунків (pin)"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Ðе вÑтановлено пріоритету (або Ñтоїть 0) Ð´Ð»Ñ Ñ„Ñ–ÐºÑатора пакунків (pin)"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Спотворений Ð·Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ (override) %s на Ñ€Ñдку %llu #1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Спотворений Ñ€Ñдок %u у переліку джерел %s (тип)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Ðевідомий тип '%s' на Ñ€Ñдку %u в переліку джерел %s"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Спотворений Ñ€Ñдок %u у переліку джерел %s (тип)"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Ðевідомий тип '%s' на Ñ€Ñдку %u в переліку джерел %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "Додайте деÑкі поÑÐ¸Ð»Ð°Ð½Ð½Ñ (URI) на вихідні текÑти у ваш sources.list"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"ДеÑкі індекÑні файли не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸. Вони були зігноровані, або "
+"заміÑÑ‚ÑŒ них були викориÑтані Ñтаріші верÑÑ–Ñ—."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "ОбчиÑÐ»ÐµÐ½Ð½Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½ÑŒ"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "В кеші:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Отр:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Ігн:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Пом:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Отримано %sB за %sB (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Йде робота]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Зміна ноÑÑ–Ñ: вÑтавте диÑк з міткою\n"
+" '%s'\n"
+"у приÑтрій '%s' Ñ– натиÑніть Enter\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Ð’Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñтей..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " невдача."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Ðеможливо Ñкоригувати залежноÑÑ‚Ñ–"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Ðеможливо мінімізувати набір оновлень"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Виконано"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr ""
+"Ð”Ð»Ñ Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ñ†Ð¸Ñ… помилок ви можете ÑкориÑтатиÑÑ 'apt --fix-broken "
+"install'."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"Ðезадоволені залежноÑÑ‚Ñ–. Спробуйте виконати 'apt --fix-broken install', не "
+"вказуючи назв пакунків (або вкажіть рішеннÑ)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Помітьте, вибираєтьÑÑ '%s' Ð´Ð»Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Помітьте, вибираєтьÑÑ '%s' Ð´Ð»Ñ Ñ€ÐµÐ³ÑƒÐ»Ñрного виразу '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Помітьте, вибираєтьÑÑ '%s' Ð´Ð»Ñ Ñ€ÐµÐ³ÑƒÐ»Ñрного виразу '%s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Пакунок %s - віртуальний, його функції надаютьÑÑ Ð¿Ð°ÐºÑƒÐ½ÐºÐ°Ð¼Ð¸:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr " [Ð’Ñтановлено]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [ВерÑÑ–Ñ Ð½Ðµ кандидат]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Ви повинні Ñвно вказати, Ñкий Ñаме ви хочете вÑтановити."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Пакунок %s недоÑтупний, але згадуєтьÑÑ Ñƒ переліку залежноÑтей іншого "
+"пакунка.\n"
+"Це може означати, що пакунок відÑутній, заÑтарів, або доÑтупний з джерел, не "
+"згаданих в sources.list\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Однак наÑтупні пакунки замінÑÑŽÑ‚ÑŒ його:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Ð”Ð»Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÐ° '%s' не знайдено кандидатів на вÑтановленнÑ"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Віртуальні пакунки Ñк '%s' не можуть бути видаленими\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr ""
+"Пакунок '%s' не вÑтановлений, тому не видалений. Можливо ви мали на увазі "
+"'%s'?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Пакунок '%s' не вÑтановлений, тому не видалений\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Помітьте, вибираєтьÑÑ '%s' заміÑÑ‚ÑŒ '%s'\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Цей APT має Супер-Коров'Ñчу Силу."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Ðе знайдено жодного пакунка"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "УВÐГÐ: ÐаÑтупні пакунки неможливо автентифікувати!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Ðвтентифікаційне Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ прийнÑто до уваги.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "ДеÑкі пакунки неможливо автентифікувати"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Ð’Ñтановити ці пакунки без перевірки?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "ВиÑвлено проблеми, а Ð¾Ð¿Ñ†Ñ–Ñ -y була викориÑтана без --force-yes"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ кількіÑÑ‚ÑŒ вільного міÑÑ†Ñ Ð² %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "ÐедоÑтатньо вільного міÑÑ†Ñ Ð² %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Ðеможливо заблокувати директорію Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"ДеÑкі пакунки неможливо вÑтановити. Можливо, Ви проÑите неможливого,\n"
+"або ж викориÑтовуєте неÑтабільний диÑтрибутив, Ñ– запитані Вами пакунки\n"
+"ще не Ñтворені або були вилучені з Incoming."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "ÐаÑтупна Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ допоможе Вам виправити Ñитуацію:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Зламані пакунки"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Ðеможливо завантажити деÑкі архіви, імовірно треба виконати apt-get update "
+"або Ñпробувати повторити запуÑк з ключем --fix-missing?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr ""
+"Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, InstallPackages була викликана з непрацездатними "
+"пакунками!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "Ðеобхідно видалити пакунки, але Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½ÐµÐ½Ðµ."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "ВиÑвлено проблеми, а Ð¾Ð¿Ñ†Ñ–Ñ -y була викориÑтана без --force-yes"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "ВиÑвлено проблеми, а Ð¾Ð¿Ñ†Ñ–Ñ -y була викориÑтана без --force-yes"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, Ordering не завершилаÑÑ"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr "Дивно... РозбіжніÑÑ‚ÑŒ розмірів, напишіть на apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Ðеобхідно завантажити %sB/%sB архівів.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Ðеобхідно завантажити %sB архівів.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr ""
+"ПіÑÐ»Ñ Ñ†Ñ–Ñ”Ñ— операції об'єм зайнÑтого диÑкового проÑтору зроÑте на %sB.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr ""
+"ПіÑÐ»Ñ Ñ†Ñ–Ñ”Ñ— операції об'єм зайнÑтого диÑкового проÑтору зменшитьÑÑ Ð½Ð° %sB.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr ""
+"Вказано Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ тривіальних операцій, але це не тривіальна операціÑ."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Так, робити, Ñк Ñ Ñкажу!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Те, що ви хочете зробити, може мати небажані наÑлідки.\n"
+"Щоб продовжити, введіть фразу: '%s'\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Перервано."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Бажаєте продовжити?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "ДеÑкі файли не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¾ в режимі \"тільки завантаженнÑ\""
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "--fix-missing Ñ– зміна ноÑÑ–Ñ Ð² даний момент не підтримуєтьÑÑ"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Ðеможливо виправити втрачені пакунки."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "ПерериваєтьÑÑ Ð²ÑтановленнÑ."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"Вказаний пакунок зник з вашої ÑиÑтеми, так Ñк\n"
+"уÑÑ– файли були перезапиÑані іншими пакунками:"
+msgstr[1] ""
+"Вказані пакунки зникли з вашої ÑиÑтеми, так Ñк\n"
+"уÑÑ– файли були перезапиÑані іншими пакунками:"
+msgstr[2] ""
+"Вказані пакунки зникли з вашої ÑиÑтеми, так Ñк\n"
+"уÑÑ– файли були перезапиÑані іншими пакунками:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Увага: це зроблено автоматично Ñ– умиÑно dpkg'ем."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "Ðам не дозволено видалÑти, неможливо запуÑтити AutoRemover"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Хм, виглÑдає так, що AutoRemover помилково знищив щоÑÑŒ потрібне.\n"
+"Будь-лаÑка відправте багрепорт щодо apt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°, AutoRemover щоÑÑŒ поламав"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"ÐаÑтупний пакунок був вÑтановлений автоматично Ñ– більше не потрібен:"
+msgstr[1] "ÐаÑтупні пакунки були вÑтановлені автоматично Ñ– більше не потрібні:"
+msgstr[2] "ÐаÑтупні пакунки були вÑтановлені автоматично Ñ– більше не потрібні:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "%lu пакунок був вÑтановлений автоматично Ñ– більше не потрібен.\n"
+msgstr[1] ""
+"%lu пакунка було вÑтановлено автоматично Ñ– вони більше не потрібні.\n"
+msgstr[2] ""
+"%lu пакунків було вÑтановлено автоматично Ñ– вони більше не потрібні.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "ВикориÑтовуйте '%s' щоб видалити його."
+msgstr[1] "ВикориÑтовуйте '%s' щоб видалити Ñ—Ñ…."
+msgstr[2] "ВикориÑтовуйте '%s' щоб видалити Ñ—Ñ…."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Будуть вÑтановлені наÑтупні додаткові пакунки:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Пропоновані пакунки:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Рекомендовані пакунки:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr ""
+"ПропуÑкаєтьÑÑ %s, пакунок вже вÑтановлений Ñ– Ð¾Ð¿Ñ†Ñ–Ñ ÐžÐОВИТИ не вÑтановлена.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"ПропуÑкаєтьÑÑ %s, пакунок не вÑтановлений, а запитуютьÑÑ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ оновленнÑ.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "ПеревÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ %s неможливе, бо він не може бути завантаженим.\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "Вже вÑтановлена найновіша верÑÑ–Ñ %s.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s позначений Ñк вÑтановлений вручну.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Обрана верÑÑ–Ñ '%s' (%s) Ð´Ð»Ñ '%s'\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Обрана верÑÑ–Ñ '%s' (%s) Ð´Ð»Ñ '%s' через '%s'\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"УВÐГÐ: Це тільки ÑимулÑціÑ!\n"
+" %s потребує права root Ð´Ð»Ñ Ñ€ÐµÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ запуÑку.\n"
+" Також не забувайте, що Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð¼Ð¸ÐºÐ°Ñ”Ñ‚ÑŒÑÑ,\n"
+" тому не очікуйте на відповідніÑÑ‚ÑŒ поточній реальній Ñитуації!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr " [Ð’Ñтановлено]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr " [Ð’Ñтановлено]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr " [Ð’Ñтановлено]"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr " [Ð’Ñтановлено]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "але %s вже вÑтановлений"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "але %s буде вÑтановлений"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "але він не може бути вÑтановлений"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "але це віртуальний пакунок"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "але він не буде вÑтановлений"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "але він не вÑтановлений"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " чи"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Пакунки, що мають незадоволені залежноÑÑ‚Ñ–:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "ÐОВІ пакунки, Ñкі будуть вÑтановлені:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Пакунки, Ñкі будуть ВИДÐЛЕÐІ:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Пакунки, Ñкі залишені в незмінному Ñтані:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Пакунки, Ñкі будуть ОÐОВЛЕÐІ:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Пакунки, Ñкі будуть замінені на СТÐРІШІ верÑÑ–Ñ—:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Пакунки, Ñкі мали б залишитиÑÑ Ð±ÐµÐ· змін, але будуть замінені:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (внаÑлідок %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"УВÐГÐ: ÐаÑтупні важливі пакунки будуть вилучені.\n"
+"ÐЕ РОБІТЬ цього, Ñкщо ви ÐЕ уÑвлÑєте Ñобі вÑÑ– можливі наÑлідки!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "оновлено %lu, вÑтановлено %lu нових, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu перевÑтановлено, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu замінено на Ñтаріші верÑÑ–Ñ—, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu відмічено Ð´Ð»Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ñ– %lu не оновлено.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "не вÑтановлено(видалено) до ÐºÑ–Ð½Ñ†Ñ %lu пакунків.\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr ""
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr ""
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr ""
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "Ви повинні задати не менше одного шаблону пошуку"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Перелік пакунків %s розÑинхронізований."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Переліки пакунків:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "Кеш не Ñинхронізований, неможливо знайти поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° перелік пакунків"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "ЗафікÑовані пакунки:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Ð’Ñтановлено: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Кандидат: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(відÑутній)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð²ÐµÑ€Ñій:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Ðеможливо знайти ніÑкий пакунок через рег.вираз '%s'"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Ðеможливо знайти ніÑкий пакунок через рег.вираз '%s'"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Ðеможливо знайти ніÑкий пакунок через рег.вираз '%s'"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Обираю '%s' Ñк пакунок вихідних текÑтів, заміÑÑ‚ÑŒ '%s'\n"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "Ігнорувати недоÑтупну верÑÑ–ÑŽ '%s' пакунку '%s'"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr ""
+"Вкажіть Ñк мінімум один пакунок, Ð´Ð»Ñ Ñкого необхідно завантажити вихідні "
+"текÑти"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Ðеможливо знайти пакунок з вихідними текÑтами Ð´Ð»Ñ %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"УВÐГÐ: ÐŸÐ°ÐºÑƒÐ²Ð°Ð½Ð½Ñ '%s' відбуваєтьÑÑ Ð² ÑиÑтемі контролю верÑій '%s' на:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Будь-лаÑка викориÑтовуйте:\n"
+"%s\n"
+"щоб отримати найновіші (потенційно не випущені) Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð¾ пакунку.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "ПропуÑкаємо вже завантажений файл '%s'\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Ðеобхідно завантажити %sB/%sB з архівів вихідних текÑтів.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Потрібно завантажити %sB архівів з вихідними текÑтами.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… текÑтів %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "ДеÑкі архіви не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr ""
+"ПропуÑкаєтьÑÑ Ñ€Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… текÑтів, тому що вже розпаковано в %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Команда Ñ€Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ð½Ð½Ñ '%s' завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Перевірте, чи вÑтановлений пакунок 'dpkg-dev'.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Команда побудови '%s' закінчилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Ðеможливо одержати інформацію про залежноÑÑ‚Ñ– Ð´Ð»Ñ Ð¿Ð¾Ð±ÑƒÐ´Ð¾Ð²Ð¸ %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s не має залежноÑтей Ð´Ð»Ñ Ð¿Ð¾Ð±ÑƒÐ´Ð¾Ð²Ð¸.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ залежноÑтей Ð´Ð»Ñ Ð¿Ð¾Ð±ÑƒÐ´Ð¾Ð²Ð¸ необхідно вказати Ñк мінімум один "
+"пакунок"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"ВідÑÑƒÑ‚Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ архітектуру Ð´Ð»Ñ %s. ДивиÑÑŒ apt.conf(5) APT::"
+"Ðрхітектури Ð´Ð»Ñ Ð½Ð°Ð»Ð°Ñ‰Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Обробка залежноÑтей Ð´Ð»Ñ Ð¿Ð¾Ð±ÑƒÐ´Ð¾Ð²Ð¸ закінчилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Обробка залежноÑтей Ð´Ð»Ñ Ð¿Ð¾Ð±ÑƒÐ´Ð¾Ð²Ð¸ закінчилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ñ‚Ð¸ %s на %s"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Пакунок %s верÑÑ–Ñ— %s має незадоволену залежніÑÑ‚ÑŒ:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Команді update не потрібні аргументи"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "Команді update не потрібні аргументи"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Ð’Ñього імен пакунків: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Ð’Ñього Ñтруктур пакунків: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Ðормальних пакунків: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Цілком віртуальних пакунків: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Окремих віртуальних пакунків: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Змішаних віртуальних пакунків: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " ВідÑутні: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Ð’Ñього унікальних верÑій: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Ð’Ñього унікальних опиÑів: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Ð’Ñього залежноÑтей: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Ð’Ñього відноÑин ВерÑÑ–Ñ/Файл: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Ð’Ñього відноÑин ОпиÑ/Файл: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total Provides mappings: "
+msgstr "Ð’Ñього карт 'Provides': "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Ð’Ñього відфільтрованих (globbed) Ñ€Ñдків: "
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total slack space: "
+msgstr "Порожнього міÑÑ†Ñ Ð² кеші: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Загальний проÑÑ‚Ñ–Ñ€ полічений длÑ: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr "Ð¦Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° Ñ” заÑтарілою. Будь-лаÑка викориÑтовуйте 'apt-mark showauto'"
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "показати інформацію про вихідний текÑÑ‚ (source)"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "знайти пакунки, назва Ñких задовольнÑÑ” регулÑрний вираз"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "показати інформацію про залежноÑÑ‚Ñ– пакунка"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "показати інформацію про зворотні залежноÑÑ‚Ñ– пакунка"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "показати інформацію про пакунок в зрозумілій формі"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "показати імена вÑÑ–Ñ… пакунків у ÑиÑтемі"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "показати поточну політику"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Задайте назву Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ ДиÑка, наприклад 'Debian 5.0.3 Disk 1'"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Будь-лаÑка, вÑтавте ДиÑк у приÑтрій Ñ– натиÑніть Enter"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Ðе вдалоÑÑ Ð¿Ñ–Ð´'єднати '%s' до '%s'"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Повторіть цей Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð´Ð»Ñ Ñ€ÐµÑˆÑ‚Ð¸ CD з вашого набору."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Ðргументи не в парах"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"ВикориÑтаннÑ: apt-config [опції] команда\n"
+"\n"
+"apt-config - проÑтий інÑтрумент Ð´Ð»Ñ Ð·Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ð¹Ð½Ð¾Ð³Ð¾ файла APT\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"ВикориÑтаннÑ: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates витÑгує з пакунків Debian конфігураційні Ñкрипти\n"
+"і файли-шаблони\n"
+"\n"
+"Опції:\n"
+" -h Цей текÑÑ‚\n"
+" -t Ð’Ñтановити директорію Ð´Ð»Ñ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñових файлів\n"
+" -c=? Читати зазначений конфігураційний файл\n"
+" -o=? Вказати довільну опцію, наприклад, -o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Ðеможливо визначити верÑÑ–ÑŽ debconf. Він вÑтановлений?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Ðе можу знайти пакунок %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s позначений Ñк автоматично вÑтановлений.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Ð¦Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° заÑтаріла. Будь-лаÑка, викориÑтовуйте заміÑÑ‚ÑŒ неї 'apt-mark auto' "
+"Ñ– 'apt-mark manual'."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, вирішувач проблем щоÑÑŒ поламав"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Підтримувані модулі:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"ВикориÑтаннÑ: apt-get [опції] команда\n"
+" apt-get [опції] install|remove пакунок1 [пкн2 ...]\n"
+" apt-get [опції] source пакунок1 [пкн2 ...]\n"
+"\n"
+"apt-get - проÑтий Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ñдка Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¹\n"
+"вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑ–Ð². Ðайбільш чаÑто викориÑтовувані команди - update\n"
+"Ñ– install.\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "завантажити нові переліки пакунків"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "виконати Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑ–Ð²"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr ""
+"вÑтановити нові пакунки (назва пакунка вказуєтьÑÑ Ñк libc6, а не libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "видалити пакунки"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "видалити пакунки разом з іхніми конфігураційними файлами"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "видалити автоматично уÑÑ– пакунки, що не викориÑтовуютьÑÑ"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "оновити вÑÑŽ ÑиÑтему, докладніше в apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "керуватиÑÑ Ð²Ð¸Ð±Ð¾Ñ€Ð¾Ð¼, зробленим у dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr ""
+"завантажити вÑе необхідне Ð´Ð»Ñ Ð¿Ð¾Ð±ÑƒÐ´Ð¾Ð²Ð¸ зазначеного пакунку з вихідних текÑтів"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "видалити завантажені архіви"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "видалити Ñтарі завантажені архіви"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "перевірити наÑвніÑÑ‚ÑŒ порушених залежноÑтей"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "завантажити архіви з вихідними текÑтами"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "завантажити двійковий пакунок у поточну директорію"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "завантажити Ñ– показати журнал змін Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ пакунку"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr ""
+"Вкажіть Ñк мінімум один пакунок, Ð´Ð»Ñ Ñкого необхідно завантажити вихідні "
+"текÑти"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"ВикориÑтаннÑ: apt-internal-solver\n"
+"\n"
+"apt-internal-solver це Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ð³Ð¾\n"
+"внутрішнього розв'Ñзувача (Ñк зовнішнього) Ð´Ð»Ñ ÐРТ програм\n"
+"Ð´Ð»Ñ Ð´ÐµÐ±Ð°Ð³Ñƒ чи інших цілей\n"
+"\n"
+"Опції:\n"
+" -h Цей текÑÑ‚ допомоги.\n"
+" -q Виводити повідомленнÑ, придатні Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу у файл журналу.\n"
+" Ðе виводити індикатор прогреÑу\n"
+" -c=? Читати зазначений конфігураційний файл\n"
+" -o=? Вказати умовну опцію, наприклад, -o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"ВикориÑтаннÑ: apt-internal-solver\n"
+"\n"
+"apt-internal-solver це Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ð³Ð¾\n"
+"внутрішнього розв'Ñзувача (Ñк зовнішнього) Ð´Ð»Ñ ÐРТ програм\n"
+"Ð´Ð»Ñ Ð´ÐµÐ±Ð°Ð³Ñƒ чи інших цілей\n"
+"\n"
+"Опції:\n"
+" -h Цей текÑÑ‚ допомоги.\n"
+" -q Виводити повідомленнÑ, придатні Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу у файл журналу.\n"
+" Ðе виводити індикатор прогреÑу\n"
+" -c=? Читати зазначений конфігураційний файл\n"
+" -o=? Вказати умовну опцію, наприклад, -o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "%s не може бути позначений, тому що він не вÑтановлений.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s вже був позначений, Ñк вÑтановлений вручну.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s вже був позначений, Ñк автоматично вÑтановлений.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s вже був зафікÑований.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s вже був незафікÑований.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ dpkg. Ви root?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "%s зафікÑовано.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "ФікÑацію Ð´Ð»Ñ %s відмінено.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"ВикориÑтаннÑ: apt-mark [опції] {auto|manual} пакунок1 [пакунок2 ...]\n"
+"\n"
+"apt-mark - це проÑтий Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ñдка Ð´Ð»Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ\n"
+"пакунків Ñк вÑтановлені вручну, або автоматично. Він також уміє\n"
+"показувати позначки.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "позначити вказані пакунки Ñк автоматично вÑтановлені"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "позначити вказані пакунки Ñк вÑтановлені вручну"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Ðевідомий Ð·Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð¾ пакунок!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "Ð—Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÑ–Ð² пакунків"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "ЗафікÑовані пакунки:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "Зламані пакунки"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "але це віртуальний пакунок"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "Ð—Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про Ñтан"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Ðеправильне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð° умовчаннÑм!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Ð”Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð²Ð¶ÐµÐ½Ð½Ñ Ð½Ð°Ñ‚Ð¸Ñніть Enter."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Чи хочете ви видалити вÑÑ– раніше завантажені .deb файли?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr ""
+"Під Ñ‡Ð°Ñ Ñ€Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð½Ð¸ÐºÐ»Ð¸ ÑкіÑÑŒ помилки. Пакунки, Ñкі були вÑтановлені"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "будуть налаштовані. Це може призвеÑти до Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr ""
+"або Ð²Ð¸Ð½Ð¸ÐºÐ½ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¸Ñ… через незадоволені залежноÑÑ‚Ñ–. Це нормально,тільки "
+"помилки"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"зазначені вище цього Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ” важливими. Будь-лаÑка, виправте Ñ—Ñ… Ñ– "
+"виконайте уÑтановку '[I]nstall' ще раз"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Об'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð´Ð¾Ñтупної інформації"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "СпиÑок розширень, припуÑтимих Ð´Ð»Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑ–Ð², занадто довгий"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Помилка обробки директорії %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr ""
+"СпиÑок розширень, припуÑтимих Ð´Ð»Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑ–Ð² з вихідними текÑтами, занадто "
+"довгий"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Помилка запиÑу заголовка в повний перелік вміÑту пакунків (Contents)"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Помилка обробки повного переліку вміÑту пакунків (Contents) %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"ВикориÑтаннÑ: apt-ftparchive [параметри] команда\n"
+"Команди: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive генерує індекÑні файли архівів Debian. Він підтримує\n"
+"безліч Ñтилів генерації: від повніÑÑ‚ÑŽ автоматичного до функціональної "
+"заміни\n"
+"програм dpkg-scanpackages і dpkg-scansources\n"
+"\n"
+"apt-ftparchive генерує файли Package (переліки пакунків) Ð´Ð»Ñ Ð´ÐµÑ€ÐµÐ²Ð°\n"
+"тек, що міÑÑ‚ÑÑ‚ÑŒ файли .deb. Файл Package міÑтить у Ñобі керуючі\n"
+"Ð¿Ð¾Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ пакунка, а також хеш MD5 Ñ– розмір файлу. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐµÑ€ÑƒÑŽÑ‡Ð¸Ñ…\n"
+"полів \"пріоритет\" (Priority) Ñ– \"ÑекціÑ\" (Section) можуть бути змінені з\n"
+"допомогою файлу override.\n"
+"\n"
+"Крім того, apt-ftparchive може генерувати файли Sources з дерева\n"
+"тек, що міÑÑ‚ÑÑ‚ÑŒ файли .dsc. Ð”Ð»Ñ Ð²ÐºÐ°Ð·Ñ–Ð²ÐºÐ¸ файлу override у цьому \n"
+"режимі можна викориÑтати параметр --source-override.\n"
+"\n"
+"Команди 'packages' і 'sources' треба виконувати, перебуваючи в кореневій "
+"теці\n"
+"дерева, що ви хочете обробити. BinaryPath повинен вказувати на міÑце,\n"
+"з Ñкого починаєтьÑÑ Ñ€ÐµÐºÑƒÑ€Ñивний обхід, а файл перепризначень (override)\n"
+"повинен міÑтити Ð·Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐµÑ€ÑƒÑŽÑ‡Ð¸Ñ… полів. Якщо був "
+"зазначений\n"
+"Pathprefix, то його Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¾Ð´Ð°Ñ”Ñ‚ÑŒÑÑ Ð´Ð¾ керуючих полів, що міÑÑ‚ÑÑ‚ÑŒ\n"
+"імена файлів. Приклад викориÑÑ‚Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð°Ñ€Ñ…Ñ–Ð²Ñƒ Debian:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Параметри:\n"
+" -h Цей текÑÑ‚\n"
+" --md5 ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ”ÑŽ MD5-хешів\n"
+" -s=? Вказати файл перепризначень (override) Ð´Ð»Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑ–Ð² з вихідними "
+"текÑтами\n"
+" -q Ðе виводити Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð² процеÑÑ– роботи\n"
+" -d=? Вказати кешуючу базу даних (не обов'Ñзково)\n"
+" --no-delink Включити режим Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð²\n"
+" --contents ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ”ÑŽ повного переліку вміÑту пакунків\n"
+" (файлу Contents)\n"
+" -c=? ВикориÑтати зазначений конфігураційний файл\n"
+" -o=? Вказати довільний параметр конфігурації"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Збігів не виÑвлено"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "У групі пакунків '%s' відÑутні деÑкі файли"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "БД була пошкоджена, файл перейменований на %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "БД заÑтаріла, намагаюÑÑŒ оновити %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Ðевірний формат БД. Якщо ви оновилиÑÑ Ð·Ñ– Ñтарої верÑÑ–Ñ— apt, будь-лаÑка "
+"видаліть Ñ– наново Ñтворіть базу-даних."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл БД %s: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ поÑÐ¸Ð»Ð°Ð½Ð½Ñ (readlink) %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Ð’ архіві немає запиÑу 'control'"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Ðеможливо одержати курÑор"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - Ðе вдалоÑÑ Ð²Ð¸Ð´Ñ–Ð»Ð¸Ñ‚Ð¸ пам'ÑÑ‚ÑŒ"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Ðевідомий алгоритм ÑтиÑÐ½ÐµÐ½Ð½Ñ '%s'"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Ð”Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÑтиÑнутого виводу %s необхідно ввімкнути ÑтиÑненнÑ"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Ðе вдалоÑÑ Ñтворити IPC канал Ð´Ð»Ñ Ð¿Ñ–Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑу"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Ðе вдалоÑÑ Ð¿Ð¾Ñ€Ð¾Ð´Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ (fork)"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "ПроцеÑ-нащадок, що виконує пакуваннÑ"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, не вдалоÑÑ Ñтворити %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Помилка уведеннÑ/виводу в підпроцеÑ/файл"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Помилка Ð·Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ Ð¾Ð±Ñ‡Ð¸ÑÐ»ÐµÐ½Ð½Ñ MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Спотворений Ð·Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ (override) %s на Ñ€Ñдку %llu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ файл перепризначень (override) %s"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Спотворений Ð·Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ (override) %s на Ñ€Ñдку %llu #1"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Спотворений Ð·Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ (override) %s на Ñ€Ñдку %llu #2"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Спотворений Ð·Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ (override) %s на Ñ€Ñдку %llu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "У: Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ директорію %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "У: Ðеможливо прочитати атрибути %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "П: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "У: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "П: Помилки відноÑÑÑ‚ÑŒÑÑ Ð´Ð¾ файлу "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Ðе вдалоÑÑ Ð·Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ обхід дерева"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr "DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Ðе вдалоÑÑ Ñтворити поÑÐ¸Ð»Ð°Ð½Ð½Ñ %s на %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " Перевищено ліміт в %sB в DeLink.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Ðрхів не мав Ð¿Ð¾Ð»Ñ 'package'"
+
+#: ftparchive/writer.cc
+#, fuzzy, c-format
+msgid " %s has no override entry\n"
+msgstr " ВідÑутній Ð·Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ (override) Ð´Ð»Ñ %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " пакунок %s ÑупроводжуєтьÑÑ %s, а не %s\n"
+
+#: ftparchive/writer.cc
+#, fuzzy, c-format
+msgid " %s has no source override entry\n"
+msgstr " ВідÑутній Ð·Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… текÑтів Ð´Ð»Ñ %s\n"
+
+#: ftparchive/writer.cc
+#, fuzzy, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " Крім того, відÑутній Ð·Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð¾ бінарне Ð¿ÐµÑ€ÐµÐ¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ %s\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "ÐžÑ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° заголовки"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "HTTP Ñервер відіÑлав невірний заголовок 'reply'"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Ðевірний Ñ€Ñдок заголовку"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "HTTP Ñервер відіÑлав невірний заголовок 'Content-Length'"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "HTTP Ñервер відіÑлав невірний заголовок 'Content-Range'"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Цей HTTP Ñервер має поламану підтримку 'range'"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Ðевідомий формат дати"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Погана заголовкова інформаціÑ"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½Ðµ вдалоÑÑ"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Ðеможливо прочитати базу %s з cdrom"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Будь-лаÑка запуÑÑ‚Ñ–Ñ‚ÑŒ apt-cdrom, щоб APT розпізнав цей CD-ROM, apt-get update "
+"не може додавати нові CD-ROM"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "Ðевірний CD-ROM"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr ""
+"Ðеможливо відмонтувати CDROM в %s, можливо він вÑе ще викориÑтовуєтьÑÑ."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "ДиÑк не знайдено."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Файл не знайдено"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Ðеможливо Ñтворити Ñокет Ð´Ð»Ñ %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Ðеможливо почати з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Ðеможливо з'єднатиÑÑ Ð· %s:%s (%s), Ñ‡Ð°Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð°Ð²ÑÑ"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Ðевдача"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Ðеможливо під'єднатиÑÑ Ð´Ð¾ %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Ðе можу знайти IP Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "ТимчаÑова помилка при отриманні IP адреÑи '%s'"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "СталоÑÑ Ñ‰Ð¾ÑÑŒ дивне при Ñпробі отримати IP Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ '%s:%s' (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "СталоÑÑ Ñ‰Ð¾ÑÑŒ дивне при Ñпробі отримати IP Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ '%s:%s' (%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Ðеможливо під'єднатиÑÑ Ð´Ð¾ %s:%s:"
+
+#: methods/copy.cc
+#, fuzzy
+msgid "Failed to stat"
+msgstr "Ðе вдалоÑÑ Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‚Ð¸ атрибути (stat)"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Ðевірне поÑÐ¸Ð»Ð°Ð½Ð½Ñ (URI), локальні поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ðµ повинні починатиÑÑ Ð· //"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "ЛогінюÑÑŒ в"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Ðеможливо визначити назву вузла"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Ðеможливо визначити локальну назву"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Сервер розірвав з'єднаннÑ, відповівши: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER невдало, Ñервер мовив: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS невдало, Ñервер мовив: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Вказано прокÑÑ–-Ñервер, але відÑутній Ñкрипт логіну, Acquire::ftp::ProxyLogin "
+"пуÑтий."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Команда '%s' у Ñкрипті логіна не вдалаÑÑ, Ñервер мовив: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE невдало, Ñервер мовив: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Ð§Ð°Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð°Ð²ÑÑ"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Сервер закрив з'єднаннÑ"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Відповідь переповнила буфер."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Спотворений протокол"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Ðеможливо Ñтворити Ñокет (socket)"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Ðеможливо під'єднати Ñокет (socket) з даними, Ñ‡Ð°Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð°Ð²ÑÑ"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Ðеможливо під'єднати паÑивний Ñокет (passive socket)."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "Виклик getaddrinfo не зміг отримати Ñлухаючий Ñокет"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Ðеможливо приєднатиÑÑ Ð´Ð¾ Ñокета"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Ðеможливо проÑлухати на Ñокеті"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ назву Ñокета"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Ðеможливо відіÑлати команду PORT"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Ðевідоме адреÑове ÑімейÑтво %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT невдало, Ñервер мовив: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Ð§Ð°Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· Ñокетом даних вичерпавÑÑ"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Ðеможливо прийнÑти з'єднаннÑ"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Проблема Ñ…ÐµÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Ðеможливо завантажити файл, Ñервер мовив: '%s'"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Ð§Ð°Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· Ñокетом (socket) з даними вичерпавÑÑ"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Передача даних обірвалаÑÑ, Ñервер мовив '%s'"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Черга"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Ðеможливо викликати "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Знайдено Ñк мінімум один невірний підпиÑ."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+"Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Вірний Ð¿Ñ–Ð´Ð¿Ð¸Ñ (signature), але не можливо визначити його "
+"відбиток?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Ðеможливо виконати 'apt-key' Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ підпиÑу (чи вÑтановлено gnupg?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Ðевідома помилка Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "ÐаÑтупні підпиÑи були невірними:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"ÐаÑтупні підпиÑи не можуть бути перевірені, тому що публічний ключ "
+"відÑутній:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Помилка запиÑу у файл"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Помилка Ð·Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð· Ñервера. Віддалена Ñторона закрила з'єднаннÑ"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Помилка Ð·Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð· Ñервера"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Помилка запиÑу у файл"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Вибір проваливÑÑ"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Ð§Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð²Ð¸Ð¹ÑˆÐ¾Ð²"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Помилка запиÑу у вихідний файл"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Ðе знайдено файла дзеркала '%s' "
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Ðеможливо прочитати файл дзеркала '%s'"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Ðеможливо прочитати файл дзеркала '%s'"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Дзеркало: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Ðе вдалоÑÑ Ð²Ñтановити Ñ‡Ð°Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ—"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¾ передчаÑно"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "ПуÑÑ‚Ñ– файли не можуть бути правильними архівами"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "Ðезадоволені залежноÑÑ‚Ñ–. Спробуйте викориÑтати --fix-broken."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Можливо, Ð´Ð»Ñ Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ñ†Ð¸Ñ… помилок Ви захочете ÑкориÑтатиÑÑ 'apt-get -f "
+#~ "install':"
+
+#~ msgid "(not found)"
+#~ msgstr "(не знайдено)"
+
+#~ msgid " Package pin: "
+#~ msgstr " ФікÑатор(pin) пакунка: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "ВідÑутній публічний ключ Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñ… ідентифікаторів (ID) ключа:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–Ñ %s Ñ” відхиленою (diverted)"
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "ЗалежніÑÑ‚ÑŒ типу %s Ð´Ð»Ñ %s не може бути задоволена, бо %s не Ñ” дозволеним "
+#~ "на '%s' пакунках"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "ЗалежніÑÑ‚ÑŒ типу %s Ð´Ð»Ñ %s не може бути задоволена, бо пакунок %s не "
+#~ "знайдено"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Ðе вдалоÑÑ Ð·Ð°Ð´Ð¾Ð²Ð¾Ð»ÑŒÐ½Ð¸Ñ‚Ð¸ залежніÑÑ‚ÑŒ типу %s Ð´Ð»Ñ %s: Ð’Ñтановлений пакунок "
+#~ "%s новіше, аніж треба"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "ЗалежніÑÑ‚ÑŒ типу %s Ð´Ð»Ñ %s не може бути задоволена, бо верÑÑ–Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑƒ-"
+#~ "кандидата %s не задовольнÑÑ” умови по верÑÑ–Ñм"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "ЗалежніÑÑ‚ÑŒ типу %s Ð´Ð»Ñ %s не може бути задоволена, бо немає пакунку-"
+#~ "кандидата %s потрібної верÑÑ–Ñ—"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Ðеможливо задовольнити залежніÑÑ‚ÑŒ типу %s Ð´Ð»Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÐ° %s: %s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "ЗалежноÑÑ‚Ñ– Ð´Ð»Ñ Ð¿Ð¾Ð±ÑƒÐ´Ð¾Ð²Ð¸ %s не можуть бути задоволені."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ поÑÐ¸Ð»Ð°Ð½Ð½Ñ (unlink) %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "ВикориÑтаннÑ: apt-cache [опції] команда\n"
+#~ " apt-cache [опції] show пакунок1 [пкн2 ...]\n"
+#~ "\n"
+#~ "apt-cache - низькорівневий інÑтрумент, що викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ\n"
+#~ "інформації з двійкових кеш-файлів APT\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Опції:\n"
+#~ " -h Цей текÑÑ‚ допомоги.\n"
+#~ " -p=? Кеш пакунків.\n"
+#~ " -s=? Кеш вихідних текÑтів.\n"
+#~ " -q Ðе показувати індикатор прогреÑу.\n"
+#~ " -i Показувати тільки важливі залежноÑÑ‚Ñ– Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ unmet.\n"
+#~ " -c=? Читати зазначений файл конфігурації.\n"
+#~ " -o=? Ð’Ñтановити умовну опцію конфігурації, наприклад, -o dir::cache=/"
+#~ "tmp\n"
+#~ "ДивітьÑÑ Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð¸Ñ†Ñ– на man-Ñторінках apt-cache(8) Ñ– apt.conf(5).\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "Опції:\n"
+#~ " -h Цей текÑÑ‚ допомоги.\n"
+#~ " -q Ðе показувати індикатор прогреÑу.\n"
+#~ " -qq Виводити тільки Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилки\n"
+#~ " -s Ðе виконувати реальних дій. Ð†Ð¼Ñ–Ñ‚Ð°Ñ†Ñ–Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸\n"
+#~ " -f Читати/пиÑати позначки авто/вручну у вказаному файлі\n"
+#~ " -c=? Читати зазначений файл конфігурації.\n"
+#~ " -o=? Ð’Ñтановити умовну опцію конфігурації, наприклад, -o dir::cache=/"
+#~ "tmp\n"
+#~ "Ð”Ð»Ñ Ð´Ð¾ÐºÐ»Ð°Ð´Ð½Ð¾Ñ— інформації дивітьÑÑ ÐºÐµÑ€Ñ–Ð²Ð½Ð¸Ñ†Ñ‚Ð²Ð° Ð´Ð»Ñ apt-mark(8) Ñ– apt."
+#~ "conf(5)."
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Опції:\n"
+#~ " -h Цей текÑÑ‚ допомоги.\n"
+#~ " -Ñ=? Читати зазначений конфігураційний файл.\n"
+#~ " -o=? Ð’Ñтановити умовну опцію, наприклад, -o dir::cache=/tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "Опції:\n"
+#~ " -h Цей текÑÑ‚ допомоги.\n"
+#~ " -q Ðе показувати індикатор прогреÑу.\n"
+#~ " -qq Виводити тільки Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилки\n"
+#~ " -s Ðе виконувати реальних дій. Ð†Ð¼Ñ–Ñ‚Ð°Ñ†Ñ–Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸\n"
+#~ " -f Читати/пиÑати позначки авто/вручну у вказаному файлі\n"
+#~ " -c=? Читати зазначений файл конфігурації.\n"
+#~ " -o=? Ð’Ñтановити умовну опцію конфігурації, наприклад, -o dir::cache=/"
+#~ "tmp\n"
+#~ "Ð”Ð»Ñ Ð´Ð¾ÐºÐ»Ð°Ð´Ð½Ð¾Ñ— інформації дивітьÑÑ ÐºÐµÑ€Ñ–Ð²Ð½Ð¸Ñ†Ñ‚Ð²Ð° Ð´Ð»Ñ apt-mark(8) Ñ– apt."
+#~ "conf(5)."
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "ВикориÑтаннÑ: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs - проÑтий інÑтрумент Ð´Ð»Ñ ÑÐ¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÑ–Ð² пакунків. "
+#~ "ÐžÐ¿Ñ†Ñ–Ñ -s\n"
+#~ "викориÑтаєтьÑÑ, щоб вказати тип ÑпиÑку.\n"
+#~ "\n"
+#~ "Опції:\n"
+#~ " -h цей текÑÑ‚\n"
+#~ " -s Ñортувати ÑпиÑок файлів з вихідними текÑтами\n"
+#~ " -c=? читати зазначений файл конфігурації\n"
+#~ " -o=? вÑтановити довільну опцію, наприклад, -o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Породжений Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð²ÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr ""
+#~ "Вкажіть Ñк мінімум один пакунок, Ð´Ð»Ñ Ñкого необхідно завантажити вихідні "
+#~ "текÑти"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Ðе вдалоÑÑ Ñтворити канали (pipes)"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ gzip "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s Ð´Ð»Ñ %s Ñкомпільовано %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Ðе вдалоÑÑ Ñтворити FILE*"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Спотворений Ñ€Ñдок %lu у переліку джерел %s (аналіз URI)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "Спотворений Ñ€Ñдок %lu у переліку джерел %s (нечитабельний [параметр])"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr ""
+#~ "Спотворений Ñ€Ñдок %lu у переліку джерел %s ([параметр] занадто короткий)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "Спотворений Ñ€Ñдок %lu у переліку джерел %s ([%s] не Ñ” призначеннÑм)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "Спотворений Ñ€Ñдок %lu у переліку джерел %s ([%s] не має ключа)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "Спотворений Ñ€Ñдок %lu у переліку джерел %s ([%s] ключ %s не має значеннÑ)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Спотворений Ñ€Ñдок %lu у переліку джерел %s (проблема з URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Спотворений Ñ€Ñдок %lu у переліку джерел %s (dist)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Спотворений Ñ€Ñдок %lu у переліку джерел %s (аналіз URI)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "Спотворений Ñ€Ñдок %lu у переліку джерел %s (absolute dist)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "Спотворений Ñ€Ñдок %lu у переліку джерел %s (dist parse)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "Пакунок %s %s не був знайдений під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ залежноÑтей"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ атрибути переліку вихідних текÑтів %s"
+
+#, fuzzy
+#~ msgid "Collecting File Provides"
+#~ msgstr "Ð—Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про 'File Provides'"
+
+#, fuzzy
+#~ msgid "Does not start with a cleartext signature"
+#~ msgstr "Файл %s починаєтьÑÑ Ð· не 'clearsigned' повідомленнÑм"
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Ðеможливо знайти хеш-Ñуму Ð´Ð»Ñ '%s' у 'Release' файлі"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Блок поÑтачальника %s не міÑтить відбитку (fingerprint)"
+
+#, fuzzy
+#~ msgid "Total dependency version space: "
+#~ msgstr "Ð’Ñього інформації про залежноÑÑ‚Ñ–: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "ÐедоÑтатньо міÑÑ†Ñ Ð² %s"
+
+#~ msgid "Done"
+#~ msgstr "Виконано"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Ðе вÑтановлено 'keyring' у %s."
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, AllUpgrade щоÑÑŒ поламав"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s не є правильним DEB пакунком."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "ВикориÑтовуєтьÑÑ Ñ‚Ð¾Ñ‡ÐºÐ° Ð¼Ð¾Ð½Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ CD-ROM: %s\n"
+#~ "МонтуєтьÑÑ CD-ROM\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Ðеможливо пропатчити %s з mmap Ñ– з 'file operation usage' - патч виглÑдає "
+#~ "пошкодженим."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Ðеможливо пропатчити %s з mmap (але не видно конкретної вини mmap) - патч "
+#~ "виглÑдає пошкодженим."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr "Ігнорувати недоÑтупний випуÑк '%s' пакунку '%s'"
+
+#~ msgid "Downloading %s %s"
+#~ msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ %s %s"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr "Це невірний DEB архів, відÑутній член '%s', '%s' чи '%s'"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "ÐевідповідніÑÑ‚ÑŒ MD5Sum"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Я не зміг знайти файл Ð´Ð»Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑƒ %s. Можливо, це значить, що вам "
+#~ "потрібно влаÑноруч виправити цей пакунок."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr ""
+#~ "Ðеможливо запиÑати в лог, проблема з openpty() (не змонтовано /dev/pts?)\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "ПропуÑкаєтьÑÑ Ð½ÐµÑ–Ñнуючий файл %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Ðеможливо Ñтворити %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ атрибути %sinfo"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr "Директорії info Ñ– temp повинні бути на тій Ñамій файловій ÑиÑтемі"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ¼Ñ–ÑтитиÑÑ Ð´Ð¾ директорії адмініÑтратора %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° при отриманні назви пакунку"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Ð—Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÑƒ файлів"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ list файл '%sinfo/%s'. Якщо Ви не можете відновити "
+#~ "цей файл, тоді зробіть його пуÑтим Ñ– негайно реінÑталюйте ту ж Ñаму "
+#~ "верÑÑ–ÑŽ пакунка!"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Ðевдача Ð·Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ 'list' файла %sinfo/%s"
+
+#, fuzzy
+#~ msgid "Internal error getting a node"
+#~ msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° при отриманні 'node'"
+
+#, fuzzy
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ 'diversions' файл %sdiversions"
+
+#, fuzzy
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Файл з 'diversions' пошкоджений"
+
+#, fuzzy
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Ðевірний Ñ€Ñдок у 'diversion' файлі: %s"
+
+#, fuzzy
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° при додаванні diversion"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Кеш пакунків повинен бути ініційованим першим"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Пакунок: заголовок, зÑув %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "Погана ÑÐµÐºÑ†Ñ–Ñ ConfFile у ÑтатуÑному файлі. ЗÑув %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Помилка обробки MD5. ЗÑув %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Ðеможливо змінити %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ правильний контрольний (control) файл"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Ðеможливо відкрити канал (pipe) Ð´Ð»Ñ %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Помилка Ð·Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð· процеÑу %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Отримано один Ñ€Ñдок заголовків понад %u Ñимволів"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Спотворений Ð·Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ (override) %s на Ñ€Ñдку %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Спотворений Ð·Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ (override) %s на Ñ€Ñдку %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Спотворений Ð·Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ (override) %s на Ñ€Ñдку %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "декомпреÑор"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "зчитуваннÑ, мало прочитати ще %lu байт, але нічого більше нема"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "запиÑ, мало запиÑати ще %lu байт, але не змогло"
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ %s (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ %s (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ %s (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ %s (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ %s (NewFileVer1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ %s (NewVersion%d)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ %s (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ %s (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ %s (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, не можу знайти member"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr ""
+#~ "E: Перелік аргументів з Acquire::gpgv::Options занадто довгий. Відміна."
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ %s (NewVersion2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "Спотворений Ñ€Ñдок %u у переліку джерел %s (vendor id)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "Ðеможливо отримати доÑтуп до набору ключів (keyring): '%s'"
+
+#~ msgid "Could not patch file"
+#~ msgstr "Ðеможливо наклаÑти латку на файл"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "ОброблÑÑŽÑ‚ÑŒÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ñ‚Ð¾Ñ€Ð¸ Ð´Ð»Ñ %s"
+
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "Так Ñк Ви проÑили виконати тільки одну операцію, те найімовірніше, що\n"
+#~ "пакунок проÑто не може бути вÑтановлений через помилки в Ñамому пакунку.\n"
+#~ "Ðеобхідно відіÑлати звіт про цю помилку."
+
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "РÑдок %d Ñ” занадто довгим (макÑимум %lu)"
+
+#~ msgid "Line %d too long (max %d)"
+#~ msgstr "РÑдок %d Ñ” занадто довгим (макÑимум %d)"
+
+#~ msgid "Error occured while processing %s (NewFileDesc1)"
+#~ msgstr "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ %s (NewFileDesc1)"
+
+#~ msgid "Error occured while processing %s (NewFileDesc2)"
+#~ msgstr "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ %s (NewFileDesc2)"
+
+#~ msgid "Stored label: %s \n"
+#~ msgstr "ЗапиÑано мітку: %s \n"
+
+#~ msgid ""
+#~ "Found %i package indexes, %i source indexes, %i translation indexes and "
+#~ "%i signatures\n"
+#~ msgstr ""
+#~ "Знайдено %i індекÑів пакунків, %i індекÑів вихідних текÑтів, %i індекÑів "
+#~ "перекладів Ñ– %i підпиÑів\n"
+
+#~ msgid "openpty failed\n"
+#~ msgstr "openpty не вдавÑÑ\n"
diff --git a/po/vi.po b/po/vi.po
new file mode 100644
index 000000000..686c19ba0
--- /dev/null
+++ b/po/vi.po
@@ -0,0 +1,4371 @@
+# Vietnamese Translation for Apt.
+# Bản dịch tiếng Việt dành cho Apt.
+# This file is put in the public domain.
+# Clytie Siddall <clytie@riverland.net.au>, 2005, 2006, 2007, 2008, 2009, 2010.
+# Trần Ngá»c Quân <vnwildman@gmail.com>, 2012-2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.0.8\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2014-09-12 13:48+0700\n"
+"Last-Translator: Trần Ngá»c Quân <vnwildman@gmail.com>\n"
+"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
+"Language: vi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Language-Team-Website: <http://translationproject.org/team/vi.html>\n"
+"X-Generator: Poedit 1.5.5\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"X-Poedit-Basepath: ../\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "Chữ ký kho không hợp lệ"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "Gặp lá»—i khi Ä‘á»c phần đầu thành viên kho"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "Phần đầu thành viên kho lưu không hợp lệ %s"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "Phần đầu thành viên kho không hợp lê"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "Kho quá ngắn"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "Việc Ä‘á»c phần đầu kho bị lá»—i"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "Không tìm thấy bản ghi xác thực cho: %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "Kho bị há»ng."
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Gặp lá»—i khi tổng kiểm “tarâ€, kho bị há»ng"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "Không rõ kiểu phần đầu tar %u, thành viên %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "Äây không phải là má»™t kho DEB hợp lệ vì còn thiếu thành viên “%sâ€"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "Gặp lỗi nội bộ, không thể định vị thành viên %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "Tập tin Ä‘iá»u khiển không có khả năng phân tách"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "Việc ghi tập tin %s gặp lỗi"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "Việc đóng tập tin %s gặp lỗi"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "ÄÆ°á»ng dẫn %s quá dài"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "Äang giải nén %s nhiá»u lần"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "Thư mục %s bị trệch hướng"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "Gói này đang cố ghi vào đích trệch đi %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "ÄÆ°á»ng dẫn trệch Ä‘i quá dài"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "Việc lấy thông tin thống kê cho %s bị lỗi"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "Việc đổi tên %s thành %s bị lỗi"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "Thư mục %s đang được thay thế do một cái không phải là thư mục"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "Gặp lỗi định vị điểm nút trong hộp băm nó bị lỗi"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "ÄÆ°á»ng dẫn quá dài"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "Ghi đè lên gói đã khớp mà không có phiên bản cho %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "Tập tin %s/%s ghi đè lên một tập tin trong gói %s"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "Không thể Ä‘á»c %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "Không thể lấy thông tin thống kê %s"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode (thả Ä‘iểm nút) được gá»i vá»›i Ä‘iểm nút còn liên kết"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "Gặp lỗi khi định vị phần tử băm!"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "Gặp lỗi khi định vị trệch đi"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "Lỗi nội bộ trong AddDiversion (thêm sự trệch đi)"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "Äang cố ghi đè má»™t sá»± trệch Ä‘i, %s → %s và %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "Sự trệch đi được thêm hai lần %s → %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "Tập tin cấu hình (conf) trùng lặp %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "Thư mục %s bị trệch hướng"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "Thư mục %s bị trệch hướng"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "Thư mục %s bị trệch hướng"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "Thư mục %s bị trệch hướng"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "Thư mục %s bị trệch hướng"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "Gặp lá»—i khi Ä‘á»c liên kết %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Mã băm tổng kiểm tra không khớp"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "gặp lỗi khi đổi tên, %s (%s → %s)."
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "Kích cỡ không khớp nhau"
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr "Äịnh dạng tập tập tin không hợp lệ"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "Lá»—i ghi"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+"Tập tin Clearsigned không hợp lệ, nhận được “%s†(mạng yêu cầu xác nhận phải "
+"không?)"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"Gặp lỗi trong khi thẩm tra chữ ký.\n"
+"Kho lưu chưa được cập nhật nên dùng những tập tin chỉ mục trước.\n"
+"Lá»—i GPG: %s: %s\n"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "Lá»—i GPG: %s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"Không tìm thấy mục cần thiết “%s†trong tập tin Phát hành (Sai mục trong "
+"sources.list hoặc tập tin bị há»ng)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"Tập tin phát hành %s đã hết hạn (không hợp lệ kể từ %s). Cập nhật cho kho "
+"này sẽ không được áp dụng."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "Bản phát hành xung đột: %s (cần %s nhưng lại nhận được %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"Không tìm thấy tập tin liên quan đến gói %s. Có lẽ bạn cần phải tự sửa gói "
+"này, do thiếu kiến trúc."
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr "Không tìm thấy nguồn cho việc tải vá» phiên bản “%s†of “%sâ€"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr ""
+"Các tập tin chỉ mục của gói này bị há»ng. Không có trÆ°á»ng Filename: (Tên tập "
+"tin:) cho gói %s."
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "Changelog cho %s (%s)"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "Không tìm thấy trình Ä‘iá»u khiển phÆ°Æ¡ng thức %s."
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr "Gói “%s†đã được cài đặt chưa?"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "Phương thức %s đã không khởi chạy đúng đắn."
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "Hãy cho đĩa có nhãn “%s†vào ổ “%s†rồi bấm nút Enter."
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "Thiếu thư mục danh sách %spartial."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "Thiếu thư mục kho lưu %spartial."
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "Không thể khoá thư mục %s"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr "Không hỗ trợ việc xóa %s"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "Không thể chuyển đổi sang %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "Äang tải tập tin thứ %li trong tổng số %li (còn lại %s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Äang tải tập tin %li trong tổng số %li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr "Cần phải cài đặt lại gói %s, nhưng mà không thể tìm kho cho nó."
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"Lá»—i: “pkgProblemResolver::Resolve†(bá»™ tháo gỡ vấn Ä‘á» gá»i::tháo gỡ) đã tạo "
+"ra nhiá»u chá»— ngắt, có lẽ má»™t số gói đã giữ lại đã gây ra trÆ°á»ng hợp này."
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "Không thể sá»­a trục trặc này, bạn đã giữ lại má»™t số gói bị há»ng."
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "Không thể phân tích hay mở danh sách gói hay tập tin trạng thái."
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr ""
+"Bạn nên lấy cơ sở dữ liệu mới bằng lệnh “apt-get update†để sửa các vấn đỠ"
+"này"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "Không thể Ä‘á»c danh sách nguồn."
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "Lỗi biên dịch biểu thức chính quy - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "Không tìm thấy bản phát hành “%s†cho “%sâ€"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "Không tìm thấy phiên bản “%s†cho “%sâ€"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "Không tìm thấy tác vụ “%sâ€"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "Không tìm thấy gói nào theo biểu thức chính quy “%sâ€"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "Không tìm thấy gói nào theo Ä‘Æ°á»ng dẫn “%sâ€"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "Không thể định vị gói %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr "Không thể chá»n phiên bản trong gói “%s†vì nó chỉ là ảo"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr "Không thể chá»n phiên bản má»›i nhất trong gói “%s†vì nó chỉ là ảo"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr "Không thể chá»n phiên bản ứng cá»­ trong gói %s vì nó không có ứng cá»­"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+"Không thể chá»n phiên bản được cài đặt trong gói %s vì nó không phải được cài "
+"đặt"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+"Không thể chá»n phiên bản được cài đặt hoặc phiên bản ứng cá»­ trong gói “%s†"
+"mà không có trong nó"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "Dòng %u quá dài trong danh sách nguồn %s."
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "Äang bá» gắn CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "Äang dùng Ä‘iểm gắn Ä‘Ä©a CD-ROM %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "Äang đợi Ä‘Ä©a...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "Äang gắn Ä‘Ä©a CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "Äang nhận diện... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "Nhãn đã lưu: %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "Äang quét Ä‘Ä©a tìm tập tin chỉ mục...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"Tìm thấy %zu chỉ mục gói, %zu chỉ mục nguồn, %zu chỉ mục dịch và %zu chữ ký\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"Không tìm thấy tập tin gói nào, có thể vì đây không phải là má»™t ÄÄ©a Debian, "
+"hoặc có kiến trúc không đúng?"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "Tìm thấy nhãn “%sâ€\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "Nó không phải là một tên hợp lệ: hãy thử lại.\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"Tên đĩa này:\n"
+"“%sâ€\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "Äang sao chép các danh sách gói..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "Äang ghi danh sách nguồn má»›i\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "Các mục tin danh sách nguồn cho đĩa này:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "Không thể lấy trạng thái vỠ%s."
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "Không thể lấy các thông tin cho điểm gắn kết %s"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "Việc lấy các thông tin thống kê đĩa CD-ROM bị lỗi"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "Không hiểu tùy chá»n dòng lệnh “%c†[từ %s]."
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "Không hiểu tùy chá»n dòng lệnh %s"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "Tùy chá»n dòng lệnh %s không phải dạng lôgíc (đúng/sai)"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "Tùy chá»n %s yêu cầu má»™t đối số."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "Tùy chá»n %s: Äặc tả mục cấu hình phải có má»™t “=<giá_trị>â€."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "Tùy chá»n %s yêu cầu má»™t đối số kiểu số nguyên, không phải “%sâ€"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "Tùy chá»n “%s†quá dài"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "Không hiểu %s: hãy thử dùng true (đúng) hoặc false (sai)."
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "Thao tác “%s†không hợp lệ"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "Không chấp nhận kiểu viết tắt: “%câ€"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "Äang mở tập tin cấu hình %s..."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "Gặp lỗi cú pháp %s:%u: Khối bắt đầu không có tên."
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "Gặp lỗi cú pháp %s:%u: Sai dạng thẻ"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "Gặp lỗi cú pháp %s:%u: Có rác sau giá trị"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "Gặp lỗi cú pháp %s:%u: Chỉ có thể thực hiện chỉ thị mức đầu"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "Gặp lá»—i cú pháp %s:%u: Quá nhiá»u chỉ thị bao gồm lồng nhau"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "Gặp lá»—i cú pháp %s:%u: Äã được bao gồm từ đây"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "Gặp lá»—i cú pháp %s:%u: ChÆ°a há»— trợ chỉ thị “%sâ€"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr ""
+"Gặp lá»—i cú pháp %s:%u: Chỉ thị “clear†thì yêu cầu má»™t cây tuỳ chá»n làm đối "
+"số"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "Gặp lỗi cú pháp %s:%u: Gặp rác tại kết thúc tập tin"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "Gặp vấn đỠkhi bỠliên kết tập tin %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "Không dùng khả năng khóa cho tập tin khóa chỉ Ä‘á»c %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "Không thể mở tập tin khóa %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "Không dùng khả năng khóa cho tập tin khóa đã lắp kiểu NFS %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "Không thể lấy khóa %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+"Liệt kê các tập tin không thể được tạo ra vì “%s†không phải là một thư mục"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr "Bá» qua “%s†trong thÆ° mục “%s'vì nó không phải là tập tin bình thÆ°á»ng"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+"BỠqua tập tin “%s†trong thư mục “%s†vì nó không có phần đuôi mở rộng"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+"BỠqua tập tin “%s†trong thư mục “%s†vì nó có phần đuôi mở rộng không hợp "
+"lệ"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "Cần %s nhưng mà không thấy nó ở đây"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "Tiến trình con %s đã nhận một lỗi phân đoạn."
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "Tiến trình con %s đã nhận tín hiệu %u."
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "Tiến trình con %s đã trả vỠmột mã lỗi (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "Tiến trình con %s đã thoát bất thÆ°á»ng"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "Lá»—i Ä‘á»c"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "Lá»—i ghi"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "Gặp vấn đỠkhi đóng tập tin gzip %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "Việc tạo tiến trình con IPC bị lỗi"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "Gặp lỗi khi thực hiện nén "
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "Không thể mở tập tin %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "Không thể mở bộ mô tả tập tin %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "Ä‘á»c, còn cần Ä‘á»c %llu nhÆ°ng mà không có gì còn lại cả"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "ghi, còn cần ghi %llu nhưng mà không thể"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "Gặp vấn đỠkhi đóng tập tin %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "Gặp vấn đỠkhi đổi tên tập tin %s thành %s"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "Gặp vấn đỠkhi đồng bộ hóa tập tin"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to mkstemp %s"
+msgstr "Không thể tạo tập tin tạm (hàm mkstemp) %s"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "Không thể ghi vào %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "Không thể mmap (ánh xạ bộ nhớ) tập tin rỗng"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "Không thể tạo mmap (ánh xạ bộ nhớ) kích cỡ %llu byte"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "Không thể nhân đôi bộ mô tả tập tin %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "Không thể đóng mmap (ánh xạ bộ nhớ)"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "Không thể động bộ hoá mmap (ánh xạ bộ nhớ)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "Không thể tạo mmap (ánh xạ bộ nhớ) kích cỡ %lu byte"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "Gặp lỗi khi cắt ngắn tập tin"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"Dynamic MMap (ánh xạ bộ nhớ động) đã vượt quá kích thước tối đa cho phép.\n"
+"Hãy tăng kích cỡ của “APT::Cache-Start†(giới hạn vùng nhớ tạm Apt).\n"
+"Giá trị hiện thá»i là: %lu. (man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr "Không thể tăng kích cỡ của ánh xạ bộ nhớ, vì đã tới giới hạn %lu byte."
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+"Không thể tăng kích cỡ của ánh xạ bá»™ nhá»›, vì chức năng tá»± Ä‘á»™ng tăng bị ngÆ°á»i "
+"dùng tắt đi."
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... Lá»—i!"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... Xong"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr "..."
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... %u%%"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%li ngày %li giỠ%li phút %li giây"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%li giỠ%li phút %li giây"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%li phút %li giây"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%li giây"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "Không tìm thấy vùng chá»n %s"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "Không thể phân tích cú pháp của tập tin Phát hành %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "Không có phần nào trong tập tin Phát hành %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "Không có mục Hash (chuỗi duy nhất) nào trong tập tin Phát hành %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr ""
+"Gặp mục tin “%s†(hợp lệ đến khi) không hợp lệ trong tập tin Phát hành %s"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "Không thể phân tích tập tin gói %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+"Không thể khoá thư mục quản trị (%s), có một tiến trình khác đang sử dụng nó "
+"phải không?"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "Không thể khoá thÆ° mục quản trị (%s), bạn có quyá»n root không?"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+"dpkg bị ngắt giữa chừng, bạn cần phải chạy “%s†một cách thủ công để giải "
+"vấn đỠnày. "
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "Chưa được khoá"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "Äang cài đặt %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "Äang cấu hình %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "Äang gỡ bá» %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "Äang gỡ bá» hoàn toàn %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "Äang ghi chép sá»± biến mất của %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "Äang chạy bẫy sau-cài-đặt %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "Äã cài đặt %s"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "Thiếu thÆ° mục “%sâ€"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "Không thể mở tập tin “%sâ€"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "Äang chuẩn bị %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "Äang mở gói %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "Äang chuẩn bị cấu hình %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "Äang chuẩn bị gỡ bá» %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "Äã gỡ bá» %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "Äang chuẩn bị gỡ bá» hoàn toàn %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "Gỡ bỠhoàn toàn %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Can not write log (%s)"
+msgstr "Không thể ghi nhật ký (%s)"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr "/dev/pts đã gắn chưa?"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "Hệ Ä‘iá»u hành đã ngắt trÆ°á»›c khi nó kịp hoàn thành"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+"Không ghi báo cáo apport, vì đã chạm giới hạn số các báo cáo (MaxReports)"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "gặp vấn đỠvỠquan hệ phụ thuộc nên để lại không cấu hình"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+"Không ghi báo cáo apport, vì thông điệp lỗi chỉ thị đây là một lỗi kế tiếp "
+"do một sự thất bại trước đó."
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+"Không ghi báo cáo apport, vì thông Ä‘iệp lá»—i chỉ thị đây là má»™t lá»—i “đĩa đầyâ€"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+"Không ghi báo cáo apport, vì thông điệp lỗi chỉ thị đây là một lỗi “không đủ "
+"bá»™ nhá»›â€"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+"Không ghi báo cáo apport, vì thông điệp lỗi chỉ thị đây là một lỗi trên hệ "
+"thống nội bộ"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+"Không ghi báo cáo apport, vì thông Ä‘iệp lá»—i chỉ thị đây là má»™t lá»—i “V/R dpkgâ€"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "Äang xây dá»±ng cây quan hệ phụ thuá»™c"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "Phiên bản ứng cử"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "Tạo ra quan hệ phụ thuộc"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "Äang Ä‘á»c thông tin vá» tình trạng"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "Lỗi mở tập tin tình trạng StateFile %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "Gặp lá»—i khi ghi tập tin tình trạng StateFile tạm thá»i %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "Gửi kịch bản đến bộ phân giải"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "Gửi yêu cầu đến bộ phân giải"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "Chuẩn bị để lấy cách giải quyết"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr "Bộ phân giải bên ngoài gặp lỗi mà không trả vỠthông tin lỗi thích hợp"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "Thi hành bộ phân giải từ bên ngoài"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Execute external planner"
+msgstr "Thi hành bộ phân giải từ bên ngoài"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send request to planner"
+msgstr "Gửi yêu cầu đến bộ phân giải"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Send scenario to planner"
+msgstr "Gửi kịch bản đến bộ phân giải"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "External planner failed without a proper error message"
+msgstr "Bộ phân giải bên ngoài gặp lỗi mà không trả vỠthông tin lỗi thích hợp"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "Äã ghi %i bản ghi.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "Äã ghi %i bản ghi vá»›i %i tập tin còn thiếu.\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "Äã ghi %i bản ghi vá»›i %i tập tin không khá»›p vá»›i nhau\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr ""
+"Äã ghi %i bản ghi vá»›i %i tập tin còn thiếu và %i tập tin không khá»›p vá»›i "
+"nhau\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "Không tìm thấy bản ghi xác thực cho: %s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Sai khớp chuỗi duy nhất cho: %s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "Không há»— trợ hệ thống đóng gói “%sâ€"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "Không thể quyết định kiểu hệ thống đóng gói thích hợp"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr "Diễn biến: [%3i%%]"
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "Äang chạy dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"Không thể thá»±c hiện ngay lập tức tiến trình cấu hình “%sâ€. Xem “man 5 apt."
+"conf †dưới “APT::Immediate-Configure†để tìm chi tiết. (%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "Không thể cấu hình “%sâ€. "
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"Việc chạy tiến trình cài đặt này sẽ cần thiết gỡ bỠtạm gói chủ yếu %s, do "
+"vòng lặp Xung Ä‘á»™t/Phụ thuá»™c trÆ°á»›c. TrÆ°á»ng hợp này thÆ°á»ng xấu, nhÆ°ng mà nếu "
+"bạn thật sá»± muốn tiếp tục, có thể hoạt hóa tuy chá»n “APT::Force-"
+"LoopBreak†(buộc ngắt vòng lặp)."
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "Bộ nhớ tạm gói trống"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "Tập tin nhá»› tạm gói bị há»ng"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "Tập tin nhớ tạm gói là một phiên bản không tương thích"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "Trình APT này không há»— trợ hệ thống Ä‘iá»u khiển phiên bản “%sâ€"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "Bộ nhớ tạm gói được biên dịch cho một kiến trúc khác"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "Tập tin nhá»› tạm gói bị há»ng, nó quá nhá»"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "Phụ thuộc"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "Phụ thuộc sẵn"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "Äá» nghị"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "Xung Ä‘á»™t"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "Khuyến khích"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "Thay thế"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "Làm há»ng"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "Tăng cÆ°á»ng"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "CÅ©"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "quan trá»ng"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "yêu cầu"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "chuẩn"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "bổ sung"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "tùy chá»n"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "Bá»™ nhá»› tạm có hệ thống Ä‘iá»u khiển phiên bản không tÆ°Æ¡ng thích"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "Có lỗi phát sinh khi xử lý %s (%s%d)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "Ồ, bạn đã vượt quá số tên gói mà trình APT này có thể quản lý."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "Ồ, bạn đã vượt quá số phiên bản mà trình APT này có thể quản lý."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Ồ, bạn đã vượt quá số mô tả mà trình APT này có thể quản lý."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "Ồ, bạn đã vượt quá số cách phụ thuộc mà trình APT này có thể quản lý."
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "Äang Ä‘á»c các danh sách gói"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "Lỗi nhập/xuất khi lưu bộ nhớ tạm nguồn"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "Không há»— trợ kiểu tập tin chỉ mục “%sâ€"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"Giá trị “%s†không hợp lệ cho APT::Default-Release như vậy bản phát hành "
+"không sẵn có trong mã nguồn"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr ""
+"Gặp mục ghi sai trong tập tin tùy thích %s: không có dòng đầu Package (Gói)."
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "Không hiểu kiểu ghim %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "Chưa ghi rõ ưu tiên (hay số không) cho ghim"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "Sai “override†%s dòng %llu (%s)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "Äang mở %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "Gặp dòng sai dạng %u trong danh sách nguồn %s (kiểu)."
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "Không biết kiểu “%s†trên dòng %u trong danh sách nguồn %s."
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "Gặp dòng sai dạng %u trong danh sách nguồn %s (kiểu)."
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "Không hiểu kiểu “%s†trên đoạn %u trong danh sách nguồn %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr ""
+"Bạn phải để một số địa chỉ URI “nguồn†vào “sources.list†(danh sách nguồn)"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "Gặp lỗi khi lấy vỠ%s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr ""
+"Một số tập tin chỉ mục không tải vỠđược. Chúng đã bị bỠqua, hoặc cái cũ đã "
+"được dùng thay thế."
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Äang tính toán nâng cấp"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "Tìm thấy:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "Lấy:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "Bá»q:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "Lá»—i:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "Äã lấy vá» %sB mất %s (%sB/g).\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [Äang hoạt Ä‘á»™ng]"
+
+#: apt-private/acqprogress.cc
+#, fuzzy, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"Chuyển đổi thiết bị lưu trữ: vui lòng đưa đĩa có nhãn\n"
+" “%sâ€\n"
+"vào ổ “%s†rồi bấm nút Enter\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "Äang sá»­a chữa quan hệ phụ thuá»™c..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " gặp lỗi."
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "Không thể sửa phần phụ thuộc"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "Không thể tối thiểu hóa tập hợp nâng cấp"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " Xong"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "Bạn có thể chạy lệnh “apt --fix-broken install†để sửa những lỗi trên."
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"ThÆ°a thá»a mãn quan hệ phụ thuá»™c. Hãy thá»­ chạy lệnh “apt --fix-broken "
+"install†mà không có gói nào (hoặc chỉ định cách thức giải quyết)."
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr "Äang sắp xếp"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "Ghi chú: Ä‘ang chá»n “%s†cho tác vụ “%sâ€\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "Ghi chú: Ä‘ang chá»n “%s†cho biểu thức chính quy “%sâ€\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "Ghi chú: Ä‘ang chá»n “%s†cho biểu thức chính quy “%sâ€\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "Gói %s là gói ảo được cung cấp bởi:\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy
+msgid " [Installed]"
+msgstr "[đã cài đặt]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [Không phải phiên bản ứng cử]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "Bạn nên chá»n má»™t gói rõ ràng để cài."
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"Gói %s không phải sẵn sàng, nhưng mà một gói khác\n"
+"đã tham chiếu đến nó. Có lẽ có gói còn thiếu,\n"
+"không còn dùng nữa, hay chỉ sẵn sàng từ một nguồn khác.\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "Tuy nhiên, những gói theo đây thay thế nó:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "Gói “%s†không có ứng cử cài đặt"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "Không thể gỡ bỠđược gói ảo nhÆ° “%sâ€\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "Chưa cài đặt gói %s nên không thể gỡ bỠnó. Có phải ý bạn là “%s'?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "Gói %s chưa được cài đặt, thế nên không thể gỡ bỠnó\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "Ghi chú: Ä‘ang chá»n “%s†thay cho “%sâ€\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "Trình APT này có năng lực của siêu bò."
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr "Lệnh trợ giúp APT này có Sức Mạnh của Siêu “Meepâ€."
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "Không tìm thấy gói"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "CẢNH BÃO: Không thể xác thá»±c những gói sau đây!"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "Cảnh báo xác thực bị đè.\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "Một số gói không thể được xác thực"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "Cài đặt những gói này mà không cần thẩm tra?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "Có lá»—i và đã dùng tùy chá»n “-y†mà không có “--force-yesâ€"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "Không thể tìm được chỗ trống trong %s"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "Bạn không có đủ dung lượng đĩa còn trống trong %s."
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "Không thể khoá thÆ° mục tải vá»"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"Không thể cài đặt má»™t số gói. Äiá»u đó có nghÄ©a là bạn đã yêu cầu\n"
+"má»™t trÆ°á»ng hợp không thể, hoặc nếu bạn Ä‘ang sá»­ dụng bản phân phối\n"
+"chưa ổn định cái mà yêu cầu các gói mà nó còn chưa được tạo ra\n"
+"hay chÆ°a được chuyển ra khá»i phần Incoming (Äến)."
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "Có lẽ thông tin theo đây sẽ giúp đỡ bạn giải quyết tình trạng này:"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "Gói bị há»ng"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"Không thể lấy một số kho, có lẽ hãy chạy lệnh “apt-get update†(apt lấy cập "
+"nhật)\n"
+"hay dùng tùy chá»n “--fix-missing†(sá»­a thiếu sót) không?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "Lá»—i ná»™i bá»™: InstallPackages (cài đặt gói) được gá»i vá»›i gói bị há»ng!"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr ""
+"Cần phải gỡ bỠmột số gói, nhưng mà tính năng Gỡ bỠ(Remove) đã bị tắt."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "Có lá»—i và đã dùng tùy chá»n “-y†mà không có “--force-yesâ€"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "Có lá»—i và đã dùng tùy chá»n “-y†mà không có “--force-yesâ€"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "Gặp lỗi nội bộ: Tiến trình Sắp xếp chưa xong"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr ""
+"Lạ nhỉ... Kích cỡ không khớp nhau. Hãy gửi thư cho <apt@packages.debian.org>"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "Cần phải lấy %sB/%sB từ kho chứa.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "Cần phải lấy %sB từ kho chứa.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "Sau thao tác này, %sB dung lượng đĩa sẽ bị chiếm dụng.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "Sau thao tác này, %sB dung lượng đĩa sẽ được giải phóng.\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr ""
+"Äã Ä‘Æ°a ra “Chỉ không đáng kể†(Trivial Only) nhÆ°ng mà thao tác này là đáng "
+"kể."
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Có, làm đi!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"Bạn sắp làm việc mà nó có thể gây hư hại cho hệ thống.\n"
+"Nếu vẫn muốn tiếp tục thì hãy gõ cụm từ “%sâ€\n"
+"?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "Hủy bá»."
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "Bạn có muốn tiếp tục không?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "Một số tập tin không tải vỠđược"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "Hoàn tất việc tải vá» và trong chế Ä‘á»™ chỉ tải vá»"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr ""
+"ChÆ°a há»— trợ tùy chá»n “--fix-missing†(sá»­a khi thiếu) và trao đổi phÆ°Æ¡ng tiện."
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "Không thể sửa những gói còn thiếu."
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "Äang hủy bá» tiến trình cài đặt."
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+"Những gói theo đây không còn nằm trên hệ thống này vì má»i tập tin Ä‘á»u bị gói "
+"khác ghi đè:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "Ghi chú: Thay đổi này được tự động thực hiện bởi dpkg."
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "Không nên xoá gì thì không thể khởi chạy Bộ Gỡ bỠTự động"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"Ừm, có vẻ là Bá»™ Gỡ bá» Tá»± Ä‘á»™ng đã hủy cái gì, má»™t trÆ°á»ng hợp thá»±c sá»± không "
+"nên xảy ra. Hãy thông báo lỗi vỠapt."
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "Lá»—i ná»™i bá»™: Bá»™ Gỡ bá» Tá»± Ä‘á»™ng đã làm há»ng má»™t thứ gì đó"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] ""
+"(Các) gói sau đây đã được tự động cài đặt nên không còn cần yêu cầu lại:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "%lu gói đã được tự động cài đặt nên không còn cần yêu cầu lại.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "Hãy dùng lệnh “%s†để gỡ bỠchúng."
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "The following additional packages will be installed:"
+msgstr "Những gói thêm theo đây sẽ được cài đặt:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "Các gói đỠnghị:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "Gói khuyến khích:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "Äang bá» qua %s vì nó đã được cài đặt và chÆ°a đặt tùy chá»n Nâng cấp.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr ""
+"Äang bá» qua %s vì nó chÆ°a được cài đặt và chỉ Nâng cấp là được yêu cầu.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "Không thể cài đặt lại %s vì không thể tải nó vá».\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s là phiên bản mới nhất.\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s được đặt thành “được cài đặt bằng tayâ€.\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "Äã chá»n phiên bản “%s†(%s) cho “%sâ€\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "Äã chá»n phiên bản “%s†(%s) cho “%s†vì “%sâ€\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr "Äang liệt kê"
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] "Ở đây có %i phiên bản phụ thêm. Hãy dùng tùy chá»n “-a†để xem."
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"CHÚ Ã: đây chỉ là mô phá»ng!\n"
+" %s yêu cầu quyá»n root để thá»±c hiện thật.\n"
+" Cần nhớ rằng chức năng khóa đã bị tắt,\n"
+" nên có thể nó không chính xác như khi làm thật!\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr "không hiểu"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr "[đã cài, có thể nâng cấp thành: %s]"
+
+#: apt-private/private-output.cc
+msgid "[installed,local]"
+msgstr "[đã cài đặt,nội bộ]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr "[đã cài,có thể tá»± Ä‘á»™ng gỡ bá»]"
+
+#: apt-private/private-output.cc
+msgid "[installed,automatic]"
+msgstr "[đã cài đặt,tự động]"
+
+#: apt-private/private-output.cc
+msgid "[installed]"
+msgstr "[đã cài đặt]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr "[có thể nâng cấp từ: %s]"
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr "[residual-config]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "nhưng mà %s đã được cài đặt"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "nhưng mà %s sẽ được cài đặt"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "nhưng mà nó không có khả năng cài đặt"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "nhưng mà nó là gói ảo"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "nhưng mà nó sẽ không được cài đặt"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "nhưng mà nó không được cài đặt"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " hay"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "Những gói theo đây chÆ°a thá»a mãn quan hệ phụ thuá»™c:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "Những gói MỚI sau sẽ được CÀI ÄẶT:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "Những gói sau sẽ bị GỠ BỎ:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "Những gói sau đây được giữ lại:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "Những gói sau đây sẽ được NÂNG CẤP:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "Những gói sau đây sẽ bị HẠ CẤP:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "Những gói giữ lại sau đây sẽ bị THAY Äá»”I:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (bởi vì %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"CẢNH BÃO: Có những gói chủ yếu sau đây sẽ bị gỡ bá».\n"
+"ÄỪNG làm nhÆ° thế trừ khi bạn biết chính xác mình Ä‘ang làm gì!"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "%lu nâng cấp, %lu được cài đặt mới, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "%lu được cài đặt lại, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "%lu bị hạ cấp, "
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "%lu cần gỡ bá», và %lu chÆ°a được nâng cấp.\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu chÆ°a được cài đặt toàn bá»™ hay được gỡ bá».\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[C/k]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[c/K]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "C"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "K"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "Bạn phải đưa ra ít nhất một mẫu tìm kiếm"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr "Tìm kiếm toàn văn"
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "Tập tin gói %s không đồng bộ được."
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] "Ở đây có %i bản ghi phụ thêm. Hãy dùng tùy chá»n “-a†để xem"
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr "không là gói thật (ảo)"
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "Tập tin gói:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr ""
+"Bộ nhớ tạm không đồng bộ được nên không thể tham chiếu chéo tập tin gói"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "Các gói đã ghim:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " Äã cài đặt: "
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " Ứng cử: "
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(không)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " Bảng phiên bản:"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "Không tìm thấy gói cho kiến trúc “%sâ€"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "Không tìm thấy gói “%s†vá»›i phiên bản “%sâ€"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "Không tìm thấy gói “%s†vá»›i số phát hành “%sâ€"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "Äang chá»n “%s†làm gói nguồn, thay thế cho “%sâ€\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "Không tìm thấy phiên bản “%s†của gói “%sâ€"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "Phải chỉ định ít nhất một gói để mà lấy mã nguồn vỠcho nó"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "Không tìm thấy gói nguồn cho %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"GHI CHÚ: việc đóng gói “%s†được bảo trì trong hệ thống quản lý mã nguồn "
+"“%s†tại:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"Hãy dùng lệnh:\n"
+"%s\n"
+"để lấy các gói mới nhất (có thể là chưa phát hành).\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "Äang bá» qua tập tin đã được tải vỠ“%sâ€\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "Cần phải lấy %sB/%sB kho nguồn.\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "Cần phải lấy %sB từ kho nguồn.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "Lấy mã nguồn %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "Gặp lỗi khi lấy một số kho."
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "Äang bá» qua giải nén nguồn đã giải nén trong %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "Lệnh giải nén “%s†bị lỗi.\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "Hãy kiểm tra xem gói “dpkg-dev†đã được cài đặt chưa.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "Lệnh biên dịch “%s†bị lỗi.\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "Không thể lấy thông tin vỠcác phần phụ thuộc khi biên dịch cho %s"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s không phụ thuộc vào gì khi biên dịch.\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr ""
+"Phải chỉ ra ít nhất một gói cần kiểm tra các phần phụ thuộc cần khi biên dịch"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"Không có thông tin kiến trúc sẵn sàng cho %s. Xem apt.conf(5) APT::"
+"Architectures để cài đặt"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "Gặp lỗi khi xử lý các quan hệ phụ thuộc khi biên dịch"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "Gặp lỗi khi xử lý các quan hệ phụ thuộc khi biên dịch"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "Gặp lỗi khi phân tích %s. Sửa lại chứ? "
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr "Tập tin “%s†của bạn đã thay đổi, hãy chạy lệnh “apt-get updateâ€."
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "Gói %s phiên bản %s có phần phụ thuá»™c chÆ°a thá»a mãn:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "Lệnh cập nhật không chấp nhận đối số"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+"%i gói có thể được cập nhật. Chạy “apt list --upgradable†để xem chúng.\n"
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr "Má»i gói đã được cập nhật."
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "Lệnh cập nhật không chấp nhận đối số"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "Tổng các tên gói: "
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "Tổng các cấu trúc gói: "
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " Gói thÆ°á»ng: "
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " Gói thuần ảo: "
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " Gói ảo đơn: "
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " Gói ảo hỗn hợp: "
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " Thiếu: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "Tổng phiên bản riêng: "
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "Tổng mô tả riêng: "
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "Tổng gói phụ thuộc: "
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "Tổng liên quan phiên bản và tập tin: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "Tổng quan hệ mô-tả/tập-tin: "
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "Tổng ánh xạ Cung cấp: "
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Tổng chuỗi mở rộng mẫu tìm kiếm: "
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Tổng chỗ trống: "
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "Tổng chỗ đã tính dành cho: "
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+"Lệnh này đã lá»—i thá»i. Xin hãy dùng lệnh “apt-mark showauto†để thay thế."
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "Hiện các bản ghi cho gói nguồn"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "Tìm kiếm danh sách các gói dựa trên biểu thức chính quy"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "Hiện thông tin quan hệ phụ thuộc dạng thô cho gói"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "Hiện thông tin những gói phụ thuộc vào gói này"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "Hiển thị bản ghi có thể Ä‘á»c cho những gói đó"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "Liệt kê danh sách má»i gói trên hệ thống"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "Hiển thị các cài đặt vỠchính sách"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "Hãy cung cấp tên cho ÄÄ©a này, kiểu nhÆ° là: “Debian 5.0.3 ÄÄ©a 1â€"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "Hãy đưa đĩa vào ổ rồi bấm nút Enter"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "Gặp lá»—i khi gắn “%s†vào “%sâ€"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+"Không tìm thấy CD-ROM bằng cách tự động dò tìm hay sử dụng điểm gắn mặc "
+"định.\n"
+"Bạn có lẽ nên dùng tùy chá»n --cdrom để đặt Ä‘iểm gắn CD-ROM.\n"
+"Xem “man apt-cdrom†để có thêm thông tin vỠtự động dò tìm CD-ROM và điểm "
+"gắn."
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "Hãy lặp lại tiến trình này cho các ÄÄ©a còn lại trong bá»™ Ä‘Ä©a của bạn."
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "Các đối số không thành cặp"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"Cách dùng: apt-config [tùy_chá»n...] lệnh\n"
+"\n"
+"(config: viết tắt cho từ configuration: cấu hình)\n"
+"\n"
+"apt-config là má»™t công cụ Ä‘Æ¡n giản để Ä‘á»c tập tin cấu hình APT.\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"Cách dùng: apt-extracttemplates tập_tin1 [tập_tin2 ...]\n"
+"\n"
+"[extract: rút trích;\n"
+"templates: mẫu]\n"
+"\n"
+"apt-extracttemplates là một công cụ rút thông tin kiểu cấu hình\n"
+"\tvà biểu mẫu Ä‘á»u từ gói Debian\n"
+"\n"
+"Tùy chá»n:\n"
+" -h Trợ giúp này\n"
+" -t Äặt thÆ° mục tạm thá»i\n"
+" [t: viết tắt cho từ “temporaryâ€: tạm thá»i]\n"
+" -c=? Äá»c tập tin cấu hình này\n"
+" -o=? Äặt má»™t tùy chá»n cấu hình tùy ý, v.d. “-o dir::cache=/tmpâ€\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "Không thể lấy phiên bản debconf. Debconf có được cài đặt chưa?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "Không tìm thấy gói %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s được đặt thành “được tá»± Ä‘á»™ng cài đặtâ€.\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+"Lệnh này đã lá»—i thá»i. Xin hãy dùng lệnh “apt-mark auto†và “apt-mark manual†"
+"để thay thế."
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "Lỗi nội bộ: bộ tháo gỡ vấn đỠđã ngắt gì"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "Hỗ trợ các mô-đun:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"Cách dùng: apt-get [tùy_chá»n...] lệnh\n"
+" apt-get [tùy_chá»n...] install|remove gói1 [gói2 ...]\n"
+" apt-get [tùy_chá»n...] source gói1 [gói2 ...]\n"
+"\n"
+"get: lấy\n"
+"install: cài đặt\n"
+"remove: gỡ bá»\n"
+"source: nguồn\n"
+"\n"
+"apt-get là một giao diện dòng lệnh đơn giản dùng để tải vỠvà cài đặt gói "
+"phần má»m.\n"
+"Những lệnh được dùng thÆ°á»ng nhất là update (cập nhật) và install (cài đặt).\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "Lấy danh sách gói mới (cập nhật cơ sở dữ liệu)"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "Nâng cấp lên phiên bản mới hơn"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "Cài đặt gói mới (gói có dạng libc6 không phải libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "Gỡ bá» gói phần má»m"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "Gỡ bỠvà tẩy xóa gói"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "Tự động gỡ bỠtất cả các gói không dùng"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "Nâng cấp hệ Ä‘iá»u hành lên phiên bản má»›i hÆ¡n, hãy xem apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "Cho phép chá»n dselect"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "Cấu hình quan hệ phụ thuộc khi biên dịch, cho gói nguồn"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "Xóa các tập tin kho đã tải vá» (dá»n dẹp thÆ° mục lÆ°u trữ)"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "Xóa các tập tin kho cũ đã tải vỠ(tự động làm sạch)"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "Kiểm tra xem có quan hệ phụ thuộc bị sai không"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "Tải vỠkho nguồn"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "Tải vá» gói phần má»m vào thÆ° mục hiện hành"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "Tải vỠvà hiển thị các thay đổi cho gói đã cho"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr "Cần một URL làm đối số"
+
+#: cmdline/apt-helper.cc
+msgid "Must specify at least one pair url/filename"
+msgstr "Phải chỉ định ít nhất một cặp url/tên-tập-tin"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr "Gặp lá»—i khi tải vá»"
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+"Cách dùng: apt-helper [các-tùy-chá»n] lệnh\n"
+" apt-helper [các-tùy-chá»n] download-file uri Ä‘Æ°á»ng-dẫn-đích\n"
+"\n"
+"apt-helper là phần trợ giúp dành cho apt\n"
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr "tải vá» uri đã cho vá» Ä‘Æ°á»ng-dẫn-đích"
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr "dò tìm proxy dùng apt.conf"
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"Cách dùng: apt-internal-solver\n"
+"\n"
+"apt-internal-solver là một giao diện để dùng cho bộ phân giải nội bộ\n"
+"hiện tại giống như bộ phân giải bên ngoài dành cho hỠchương trình APT\n"
+"để phục vụ cho việc gỡ lỗi hay tương tự thế\n"
+"\n"
+"Tùy chá»n:\n"
+" -h Trợ giúp này.\n"
+" -q Làm việc ở chế độ im lặng - không hiển thị tiến triển công việc\n"
+" -c=? Äá»c tập tin cấu hình này\n"
+" -o=? Äặt má»™t tùy chá»n cấu hình tùy ý, v.d. “-o dir::cache=/tmpâ€\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"Cách dùng: apt-internal-solver\n"
+"\n"
+"apt-internal-solver là một giao diện để dùng cho bộ phân giải nội bộ\n"
+"hiện tại giống như bộ phân giải bên ngoài dành cho hỠchương trình APT\n"
+"để phục vụ cho việc gỡ lỗi hay tương tự thế\n"
+"\n"
+"Tùy chá»n:\n"
+" -h Trợ giúp này.\n"
+" -q Làm việc ở chế độ im lặng - không hiển thị tiến triển công việc\n"
+" -c=? Äá»c tập tin cấu hình này\n"
+" -o=? Äặt má»™t tùy chá»n cấu hình tùy ý, v.d. “-o dir::cache=/tmpâ€\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "không thể đánh dấu %s như là nó chưa được cài đặt.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s được đặt thành được cài đặt bằng tay.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s đã sẵn được đặt thành cài đặt tự động rồi.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s đã sẵn được đặt là giữ lại.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s đã sẵn được đặt là không giữ lại.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+"Thá»±c thi lệnh “dpkg†gặp lá»—i. Bạn có cần quyá»n siêu ngÆ°á»i dùng để thá»±c thi "
+"lệnh này"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "%s được đặt là giữ lại.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "Hủy bỠnắm giữ %s.\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"Cách dùng: apt-mark [tùy-chá»n...] {auto|manual} gói1 [gói2 ...]\n"
+"\n"
+"apt-mark là câu lệnh đơn giản được dùng để đánh dấu các gói là\n"
+"được cài đặt tự động hay bằng tay. Nó còn có thể liệt kê danh sách các đánh "
+"dấu.\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "Äánh dấu các gói Ä‘Æ°a ra là được cài đặt tá»± Ä‘á»™ng"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "Äánh dấu các gói Ä‘Æ°a ra là được cài đặt bằng tay"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr "Äánh dấu má»™t gói là giữ lại"
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr "BỠđánh dấu một gói là giữ lại"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr "In ra danh sách các gói được tự động cài đặt"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr "In ra danh sách các gói được cài đặt bằng tay"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr "In ra danh sách các gói được giữ lại"
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "Không hiểu bản ghi gói!"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr "liệt kê các gói dựa trên cơ sở là tên gói"
+
+#: cmdline/apt.cc
+msgid "search in package descriptions"
+msgstr "tìm trong phần mô tả của gói"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr "hiển thị thông tin chi tiết vỠgói"
+
+#. package stuff
+#: cmdline/apt.cc
+msgid "install packages"
+msgstr "cài đặt các gói"
+
+#: cmdline/apt.cc
+msgid "remove packages"
+msgstr "gỡ bỠcác gói"
+
+#. system wide stuff
+#: cmdline/apt.cc
+msgid "update list of available packages"
+msgstr "cập nhật danh sánh các gói sẵn có"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr "nâng cấp các gói trong hệ thống"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr "nâng cấp hệ thống bằng cách gỡ bá», cài đặt, nâng cấp các gói"
+
+#. misc
+#: cmdline/apt.cc
+msgid "edit the source information file"
+msgstr "sửa tập tin thông tin gói nguồn"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "Cài đặt mặc định sai!"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "Bấm phím Enter để tiếp tục."
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "Bạn có muốn xoá má»i tập tin .deb đã được tải vá» trÆ°á»›c đây không?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "Gặp một số lỗi trong khi giải nén. Những gói đã được cài đặt"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "sẽ cũng được cấu hình. Việc này có thể sẽ gây ra lỗi trùng lặp"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "hoặc lá»—i do quan hệ phụ thuá»™c chÆ°a thoả. TrÆ°á»ng hợp này vẫn đúng,"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr ""
+"chỉ những lá»—i bên trên thông Ä‘iệp này là quan trá»ng. Hãy sá»­a chữa, sau đó "
+"chạy lại lệnh cà[I] đặt."
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "Äang hòa trá»™n các thông tin sẵn có..."
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "Danh sách mở rộng gói quá dài"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "Gặp lỗi khi xử lý thư mục %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "Danh sách mở rộng nguồn quá dài"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "Gặp lỗi khi ghi phần đầu vào tập tin nộị dung"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "Gặp lỗi khi xử lý nội dung %s"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"Cách dùng: apt-ftparchive [tùy_chá»n...] lệnh\n"
+"\n"
+"[ftparchive: FTP archive: kho FTP]\n"
+"\n"
+"Lệnh: packages binarypath [tập_tin_đè [tiá»n_tố_Ä‘Æ°á»ng_dẫn]]\n"
+" sources srcpath [tập_tin_đè[tiá»n_tố_Ä‘Æ°á»ng_dẫn]]\n"
+" contents path\n"
+" release path\n"
+" generate config [các_nhóm]\n"
+" clean config\n"
+"\n"
+"(packages: những gói;\n"
+"binarypath: Ä‘Æ°á»ng dẫn nhị phân;\n"
+"sources: những nguồn;\n"
+"srcpath: Ä‘Æ°á»ng dẫn nguồn;\n"
+"contents path: Ä‘Æ°á»ng dẫn ná»™i dung;\n"
+"release path: Ä‘Æ°á»ng dẫn bản đã phát hành;\n"
+"generate config [groups]: tạo ra cấu hình [các nhóm];\n"
+"clean config: cấu hình toàn mới)\n"
+"\n"
+"apt-ftparchive (kho ftp) thì tạo ra tập tin chỉ mục cho kho Debian.\n"
+"Nó há»— trợ nhiá»u cách tạo ra, từ cách tá»± Ä‘á»™ng hoàn toàn\n"
+"đến cách thay thế hàm cho dpkg-scanpackages (dpkg-quét_gói)\n"
+"và dpkg-scansources (dpkg-quét_nguồn).\n"
+"\n"
+"apt-ftparchive tạo ra tập tin Gói ra cây các .deb.\n"
+"Tập tin gói chứa ná»™i dung các trÆ°á»ng Ä‘iá»u khiển từ má»—i gói,\n"
+"cùng với băm MD5 và kích cỡ tập tin.\n"
+"Hỗ trợ tập tin đè để buộc giá trị Ưu tiên và Phần\n"
+"\n"
+"Tương tự, apt-ftparchive tạo ra tập tin Nguồn ra cây các .dsc\n"
+"Có thể sá»­ dụng tùy chá»n “--source-override†(đè nguồn)\n"
+"để ghi rõ tập tin đè nguồn\n"
+"\n"
+"Lệnh “packages†(gói) và “sources†(nguồn) nên chạy tại gốc cây.\n"
+"BinaryPath (Ä‘Æ°á»ng dẫn nhị phân) nên chỉ tá»›i cÆ¡ bản của việc tìm kiếm đệ "
+"quy,\n"
+"và tập tin đè nên chứa những cỠđè.\n"
+"Pathprefix (tiá»n tố Ä‘Æ°á»ng dẫn) được phụ thêm vào\n"
+"những trÆ°á»ng tên tập tin nếu có.\n"
+"Cách sử dụng thí dụ từ kho Debian:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Tùy chá»n:\n"
+" -h _Trợ giúp_ này\n"
+" --md5 Äiá»u khiển cách tạo ra MD5\n"
+" -s=? Tập tin đè nguồn\n"
+" -q _Im lặng_ (không xuất chi tiết)\n"
+" -d=? Chá»n _cÆ¡ sở dữ liệu_ nhá»› tạm tùy chá»n\n"
+" --no-delink Mở chế độ gỡ lỗi _bỠliên kết_\n"
+" --contents Äiá»u khiển cách tạo ra tập tin _ná»™i dung_\n"
+" -c=? Äá»c tập tin cấu hình này\n"
+" -o=? Äặt má»™t tùy chá»n cấu hình tùy ý, v.d. “-o dir::cache=/tmpâ€"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "Không có cái được chá»n khá»›p được"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "Thiếu má»™t số tập tin trong nhóm tập tin gói “%sâ€."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "CÆ¡ sở dữ liệu bị há»ng nên đã đổi tên tập tin thành %s.old (old: cÅ©)."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "Cơ sở dữ liệu đã cũ, nên đang cố nâng cấp lên thành %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"Äịnh dạng cÆ¡ sở dữ liệu không hợp lệ. Nếu bạn đã nâng cấp từ má»™t phiên bản "
+"apt cũ, hãy gỡ bỠnó và sau đó tạo lại cơ sở dữ liệu."
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "Không thể mở tập tin cơ sở dữ liệu %s: %s."
+
+#: ftparchive/cachedb.cc
+msgid "Failed to read .dsc"
+msgstr "Gặp lá»—i khi Ä‘á»c .dsc"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "Kho không có mục ghi Ä‘iá»u khiển"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "Không thể lấy con trá»"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc (cấp phát lại) - việc cấp phát bộ nhớ bị lỗi"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "Không biết thuật toán nén “%sâ€"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "Dữ liệu xuất đã nén %s cần một bộ nén"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "Gặp lỗi khi tạo ống IPC đến tiến trình con"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "Gặp lỗi khi rẽ nhánh tiến trình"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "Nén con"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "Lỗi nội bộ, gặp lỗi khi tạo %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "Gặp lỗi khi nhập/xuất vào tiến-trình-con/tập-tin"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "Gặp lá»—i khi Ä‘á»c trong khi tính MD5"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "Không thể mở %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "Sai “override†%s dòng %llu (%s)"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "Việc Ä‘á»c tập tin đè %s bị lá»—i"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "Sai override %s dòng %llu #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "Sai override %s dòng %llu #2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "Sai override %s dòng %llu #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "CB: Không thể Ä‘á»c thÆ° mục %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "CB: Không thể lấy thông tin thống kê %s\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "L: "
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "CB: "
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "LỖI: có lỗi áp dụng vào tập tin "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "Gặp lỗi khi phân giải %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "Việc di chuyển qua cây bị lỗi"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "Gặp lỗi khi mở %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " BỠliên kết %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** Gặp lỗi khi liên kết %s đến %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " Hết hạn bỠliên kết của %sB.\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "Kho không có trÆ°á»ng gói"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s không có mục ghi đè (override)\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " ngÆ°á»i bảo trì %s là %s không phải %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s không có mục ghi đè (override) nguồn\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s cũng không có mục ghi đè (override) nhị phân\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "Äang đợi phần đầu dữ liệu..."
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "Máy phục vụ HTTP đã gá»­i má»™t dòng đầu trả lá»i không hợp lệ"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "Dòng đầu sai"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr ""
+"Máy phục vụ HTTP đã gửi một dòng đầu Content-Length (độ dài nội dung) không "
+"hợp lệ"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr ""
+"Máy phục vụ HTTP đã gửi một dòng đầu Content-Range (phạm vi nội dung) không "
+"hợp lệ"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "Máy phục vụ HTTP không hỗ trợ tải một phần tập tin"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "Không rõ định dạng ngày"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "Dữ liệu phần đầu sai"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "Kết nối bị lỗi"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "Gặp lỗi nội bộ"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "Không thể Ä‘á»c cÆ¡ sở dữ liệu Ä‘Ä©a CD-ROM %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"Hãy sử dụng lệnh “apt-cdrom†để làm cho APT chấp nhận đĩa CD này. Không thể "
+"sử dụng lệnh “apt-get update†(cập nhật cơ sở dữ liệu) để thêm đĩa CD mới."
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "CD-ROM sai"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "Không thể bỠgắn đĩa CD-ROM trong %s. Có lẽ nó vẫn đang được dùng."
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "Không tìm thấy đĩa."
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "Không tìm thấy tập tin"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "Äang kết nối đến %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[Äịa chỉ IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "Không thể tạo ổ cắm cho %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "Không thể khởi tạo kết nối đến %s:%s (%s)."
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "Không thể kết nối đến %s:%s (%s), kết nối bị quá giá»"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "Gặp lỗi"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "Không thể kết nối đến %s:%s (%s)."
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "Äang kết nối đến %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "Không thể phân giải “%sâ€"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "Việc phân giải “%s†bị lá»—i tạm thá»i"
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "Lá»—i hệ thống khi phân giải “%s:%sâ€"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "Má»™t số hÆ° há»ng đã xảy ra khi phân giải “%s:%s†(%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "Không thể kết nối đến %s: %s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "Gặp lỗi khi lấy thống kê"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "Äịa chỉ URI không hợp lệ, URI ná»™i bá»™ không thể bắt đầu bằng “//â€"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "Äang đăng nhập vào"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "Không thể quyết định tên ngang hàng"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "Không thể phân giải tên cục bộ"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "Máy phục vụ đã từ chối kết nối, và đã nói: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "Lệnh USER (ngÆ°á»i dùng) đã thất bại: máy chủ nói: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "Lệnh PASS (mật khẩu) đã thất bại: máy chủ nói: %s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"Äã ghi rõ máy phục vụ ủy nhiệm, nhÆ°ng mà chÆ°a ghi rõ tập lệnh đăng nhập. "
+"“Acquire::ftp::ProxyLogin†là rỗng."
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "Văn lệnh đăng nhập “%s†đã thất bại: máy chủ nói: %s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "Lệnh TYPE (kiểu) đã thất bại: máy chủ nói: %s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "Thá»i hạn kết nối"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "Máy phục vụ đã đóng kết nối"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "Má»™t trả lá»i đã tràn bá»™ đệm."
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "Giao thức bị há»ng"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "Không thể tạo ổ cắm"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "Không thể kết nối ổ cắm dữ liệu, kết nối đã quá giá»"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "Không thể kết nối ổ cắm bị động."
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo (lấy thông tin địa chỉ) không thể lấy ổ cắm lắng nghe"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "Không thể ràng buộc ổ cắm"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "Không thể lắng nghe trên ổ cắm đó"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "Không thể quyết định tên ổ cắm đó"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "Không thể gửi lệnh PORT (cổng)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "Không biết hỠđịa chỉ %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "Lệnh EPRT (thông báo lỗi) đã thất bại: máy chủ nói: %s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Quá giỠkết nối ổ cắm dữ liệu"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "Không thể chấp nhận kết nối"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "Gặp vấn đỠbăm tập tin"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "Không thể lấy tập tin: máy phục vụ nói “%sâ€"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "á»” cắm dữ liệu đã quá giá»"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "Việc truyá»n dữ liệu bị lá»—i: máy phục vụ nói “%sâ€"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "Truy vấn"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "Không thể gá»i "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, fuzzy, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+"Tập tin Clearsigned không hợp lệ, nhận được “%s†(mạng yêu cầu xác nhận phải "
+"không?)"
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "Gặp ít nhất một chữ ký không hợp lệ."
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr "Lỗi nội bộ: Chữ ký đúng, nhưng không thể xác định vân tay của khóa?!"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr ""
+"Không thể thực hiện “apt-key†để thẩm tra chữ ký (gnupg đã được cài đặt "
+"chÆ°a?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "Gặp lỗi không rõ khi thực hiện apt-key"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "Những chữ ký theo đây không hợp lệ:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+"Không thể kiểm chứng những chữ ký theo đây, vì khóa công không sẵn có:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "Gặp lỗi khi ghi vào tập tin"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "Gặp lá»—i khi Ä‘á»c từ máy phục vụ: Máy chủ đã đóng kết nối"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "Gặp lá»—i khi Ä‘á»c từ máy phục vụ"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "Gặp lỗi khi ghi vào tập tin"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "Việc chá»n bị lá»—i"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "Kết nối đã quá giá»"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "Gặp lỗi khi ghi vào tập tin đầu ra"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "Không tìm thấy tập tin bản sao “%s†"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "Không thể Ä‘á»c tập tin bản sao “%sâ€"
+
+#: methods/mirror.cc
+#, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "Không tìm thấy Ä‘iểm vào trong tập tin bản sao “%sâ€"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[Bản sao: %s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "Gặp lỗi khi đặt giỠsửa đổi"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "Kết nối bị đóng bất ngá»"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "Các tập tin trống rỗng không phải là kho lưu hợp lệ"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr ""
+#~ "ChÆ°a thá»a mãn quan hệ phụ thuá»™c. Hãy thá»­ dùng tùy chá»n “--fix-brokenâ€."
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr ""
+#~ "Có lẽ bạn cần chạy lệnh “apt --fix-broken install†để sửa những cái đó:"
+
+#~ msgid "(not found)"
+#~ msgstr "(không tìm thấy)"
+
+#~ msgid " Package pin: "
+#~ msgstr " Ghim gói: "
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "Không có khóa công sẵn sàng cho những mã số khoá theo đây:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "Thư mục %s bị trệch hướng"
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "Phần phụ thuá»™c %s cho %s không ổn thá»a bởi vì %s không được cho phép trên "
+#~ "gói “%sâ€"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr ""
+#~ "Phần phụ thuá»™c %s cho %s không thể được thá»a mãn vì không tìm thấy gói %s"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr ""
+#~ "Việc cố thá»a mãn quan hệ phụ thuá»™c %s cho %s bị lá»—i vì gói đã cài đặt %s "
+#~ "là quá mới"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "phần phụ thuá»™c %s cho %s không thể được thá»a mãn phiên bản ứng cá»­ của gói "
+#~ "%s có thể thá»a mãn Ä‘iá»u kiện phiên bản"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr ""
+#~ "phần phụ thuá»™c %s cho %s không thể được thá»a mãn bởi vì gói %s không có "
+#~ "bản ứng cử"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "Việc cố thá»a cách phụ thuá»™c %s cho %s bị lá»—i: %s."
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "Không thể thá»a mãn quan hệ phụ thuá»™c khi biên dịch cho %s."
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "Gặp lỗi khi bỠliên kết %s"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "Việc bỠliên kết %s bị lỗi"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "Cách dùng: apt-cache [tùy_chá»n...] lệnh\n"
+#~ " apt-cache [tùy_chá»n...] show gói1 [gói2 ...]\n"
+#~ "\n"
+#~ "apt-cache là một công cụ ở mức thấp dùng để truy vấn\n"
+#~ "thông tin từ các tập tin bộ nhớ tạm nhị phân của APT.\n"
+
+#~ msgid "Commands:"
+#~ msgstr "Các lệnh:"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "Tùy chá»n:\n"
+#~ " -h Hiển thị trợ giúp này.\n"
+#~ " -p=? Bộ nhớ tạm gói.\n"
+#~ " -s=? Bộ nhớ tạm nguồn.\n"
+#~ " -q Không hiển thị diễn tiến công việc.\n"
+#~ " -i Chỉ hiển thị những phụ thuá»™c quan trá»ng cho lệnh unmet.\n"
+#~ " -c=? Äá»c tập tin cấu hình này\n"
+#~ " -o=? Äặt má»™t tùy chá»n cấu hình tùy ý, v.d. -o dir::cache=/tmp\n"
+#~ "Äể tìm thông tin thêm, xem hai trang hÆ°á»›ng dẫn\n"
+#~ " apt-cache(8) và apt.conf(5).\n"
+
+#~ msgid ""
+#~ "Usage: apt [options] command\n"
+#~ "\n"
+#~ "CLI for apt.\n"
+#~ msgstr ""
+#~ "Cách dùng: apt [các tùy chá»n] lệnh\n"
+#~ "\n"
+#~ "CLI (giao diện dòng lệnh) dành cho apt.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "Tùy chá»n:\n"
+#~ " -h Trợ giúp này.\n"
+#~ " -q Dữ liệu xuất có thể ghi nhật ký - không hiển thị diễn biến công "
+#~ "việc\n"
+#~ " -qq Không xuất thông tin nào, trừ lỗi\n"
+#~ " -s Không làm gì chỉ in những cái sẽ làm.\n"
+#~ " -f đánh dấu Ä‘á»c/ghi tá»±-Ä‘á»™ng/thủ-công trong tập tin đã cho.\n"
+#~ " -c=? Äá»c tập tin cấu hình này\n"
+#~ " -o=? Äặt má»™t tùy chá»n cấu hình tùy ý, v.d. -o dir::cache=/tmp\n"
+#~ "Äể tìm thông tin thêm, xem hai trang man (hÆ°á»›ng dẫn)\n"
+#~ " apt-mark(8) và apt.conf(5)"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Tùy chá»n:\n"
+#~ " -h Trợ giúp này\n"
+#~ " -c=? Äá»c tập tin cấu hình này\n"
+#~ " -o=? Äặt má»™t tùy chá»n cấu hình tùy ý, ví dụ -o dir::cache=/tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "Tùy chá»n:\n"
+#~ " -h Trợ giúp này.\n"
+#~ " -q Dữ liệu xuất có thể ghi nhật ký - không hiển thị diễn biến công "
+#~ "việc\n"
+#~ " -qq Không xuất thông tin nào, trừ lỗi\n"
+#~ " -s Không làm gì chỉ in những cái sẽ làm.\n"
+#~ " -f đánh dấu Ä‘á»c/ghi tá»±-Ä‘á»™ng/thủ-công trong tập tin đã cho.\n"
+#~ " -c=? Äá»c tập tin cấu hình này\n"
+#~ " -o=? Äặt má»™t tùy chá»n cấu hình tùy ý, v.d. -o dir::cache=/tmp\n"
+#~ "Äể tìm thông tin thêm, xem hai trang man (hÆ°á»›ng dẫn)\n"
+#~ " apt-mark(8) và apt.conf(5)"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "Cách dùng: apt-sortpkgs [tùy_chá»n...] tập_tin1 [tập_tin2 ...]\n"
+#~ "\n"
+#~ "[sortpkgs: sort packages: sắp xếp các gói]\n"
+#~ "\n"
+#~ "apt-sortpkgs là một công cụ đơn giản để sắp xếp tập tin gói.\n"
+#~ "Tùy chá»n “-s†dùng để ngầm chỉ kiểu tập tin là gì.\n"
+#~ "\n"
+#~ "Tùy chá»n:\n"
+#~ " -h Trợ giúp_ này\n"
+#~ " -s Sắp xếp những tập tin _nguồn_\n"
+#~ " -c=? Äá»c tập tin cấu hình này\n"
+#~ " -o=? Äặt tùy chá»n cấu hình tùy ý, v.d. “-o dir::cache=/tmpâ€\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "Tiến trình con bị lỗi"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "Phải chỉ định ít nhất một cặp url/tên-tập-tin"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "Gặp lá»—i khi tạo các Ä‘Æ°á»ng ống dẫn lệnh"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "Việc thực hiện gzip bị lỗi "
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s-%s được biên dịch cho %s vào lúc “%s %sâ€\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "Việc tạo TẬP_TIN* bị lỗi"
+
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "Gặp đoạn sai dạng %u trong danh sách nguồn %s (ngữ pháp URI)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr ""
+#~ "Gặp dòng có sai dạng %lu trong danh sách nguồn %s ([tùy chá»n] không thể "
+#~ "phân tích được)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr ""
+#~ "Gặp dòng sai dạng %lu trong danh sách nguồn %s ([tùy chá»n] quá ngắn)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr ""
+#~ "Gặp dòng sai dạng %lu trong danh sách nguồn %s ([%s] không phải là một "
+#~ "phép gán)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr ""
+#~ "Gặp dòng sai dạng %lu trong danh sách nguồn %s ([%s] không có khoá nào)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr ""
+#~ "Gặp dòng sai dạng %lu trong danh sách nguồn %s (khoá [%s] %s không có giá "
+#~ "trị)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "Gặp dòng sai dạng %lu trong danh sách nguồn %s (địa chỉ URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "Gặp dòng sai dạng %lu trong danh sách nguồn %s (bản phân phối)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "Gặp dòng sai dạng %lu trong danh sách nguồn %s (ngữ pháp URI)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr ""
+#~ "Gặp dòng sai dạng %lu trong danh sách nguồn %s (bản phân phối tuyệt đối)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr ""
+#~ "Gặp dòng sai dạng %lu trong danh sách nguồn %s (phân tách bản phân phối)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "Không tìm thấy gói %s %s khi xử lý quan hệ phụ thuộc của tập tin"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "Không thể lấy các thông tin vỠdanh sách gói nguồn %s"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "Äang tập hợp các Nhà cung cấp Tập tin"
+
+#, fuzzy
+#~ msgid "Does not start with a cleartext signature"
+#~ msgstr "Tập tin %s không bắt đầu bằng một đoạn chữ ký (gpg)"
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "Không thể tìm thấy mã băm tổng kiểm tra cho tập tin Phát hành %s"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "Khối nhà bán %s không chứa vân tay"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "Tổng chỗ phiên bản phụ thuộc: "
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "Không đủ chỗ trống trên %s"
+
+#~ msgid "Done"
+#~ msgstr "Xong"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "Không có vòng khoá nào được cài đặt vào %s."
+
+#~ msgid "Is stdout a terminal?"
+#~ msgstr "Äầu ra là thiết bị cuối?"
+
+#~ msgid "ioctl(TIOCGWINSZ) failed"
+#~ msgstr "ioctl(TIOCGWINSZ) gặp lỗi"
+
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "Lá»—i ná»™i bá»™: Lệnh nâng cấp đã làm há»ng thứ gì đó"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s không phải là một gói DEB hợp lệ."
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "Äang dùng thÆ° mục gắn Ä‘Ä©a CD-ROM %s\n"
+#~ "Äang gắn Ä‘Ä©a CD-ROM...\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Không thể vá %s dùng mmap và cách sử dụng tập tin: có vẻ là miếng vá bị "
+#~ "há»ng."
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr ""
+#~ "Không thể vá %s dùng mmap (mà không có lỗi đặc trưng cho mmap): có vẻ là "
+#~ "miếng vá bị há»ng."
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr "Bá» qua bản phát hành đích không sẵn sàng “%s†của gói “%sâ€"
+
+#~ msgid "Downloading %s %s"
+#~ msgstr "Äang tải vá» %s %s"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr ""
+#~ "Äây không phải là má»™t kho DEB hợp lệ vì không có thành viên “%sâ€, “%s†"
+#~ "hay “%sâ€"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "Mã băm tổng kiểm MD5Sum không khớp"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "Không tìm thấy tập tin liên quan đến gói %s. Có lẽ bạn cần phải tự sửa "
+#~ "gói này."
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr "Không thể ghi nhật ký, openpty() bị lỗi (“/dev/pts†chưa gắn?)\n"
+
+#~ msgid ""
+#~ "A error occurred during the signature verification. The repository is not "
+#~ "updated and the previous index files will be used. GPG error: %s: %s\n"
+#~ msgstr ""
+#~ "Gặp lỗi trong khi thẩm tra chữ ký.\n"
+#~ "Kho lưu chưa được cập nhật nên dùng những tập tin chỉ mục trước.\n"
+#~ "Lá»—i GPG: %s: %s\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "Äang bá» qua tập tin không tồn tại %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "Việc gỡ bỠ%s bị lỗi"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "Không thể tạo %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "Việc lấy các thông tin vỠ%sinfo bị lỗi"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr ""
+#~ "Những thÆ° mục info (thông tin) và temp (tạm thá»i) cần phải trong cùng má»™t "
+#~ "hệ thống tập tin"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "Việc chuyển đổi sang thư mục quản lý %sinfo bị lỗi"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "Gặp lỗi nội bộ khi lấy tên gói"
+
+#~ msgid "Reading file listing"
+#~ msgstr "Äang Ä‘á»c danh sách tập tin..."
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "Việc mở tập tin danh sách “%sinfo/%s†bị lỗi. Nếu bạn không thể phục hồi "
+#~ "tập tin này, bạn hãy làm cho nó rỗng và ngay cài đặt lại cùng phiên bản "
+#~ "gói."
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "Việc Ä‘á»c tập tin danh sách %sinfo/%s bị lá»—i"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "Gặp lỗi nội bộ khi lấy nút điểm..."
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "Việc mở tập tin trệch đi %sdiversions bị lỗi"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "Tập tin trệch Ä‘i bị há»ng"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "Gặp dòng không hợp lệ trong tập tin trệch đi: %s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "Gặp lỗi nội bộ khi thêm một sự trệch đi"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "Phải khởi động bộ nhớ tạm gói trước hết"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "Lỗi tìm thấy Gói: phần đầu, hiệu số %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr ""
+#~ "Có phần cấu hình tập tin (ConfFile) sai trong tập tin trạng thái. Hiệu số "
+#~ "%lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "Gặp lỗi khi phân tách MD5. Hiệu số %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "Không thể chuyển đổi sang %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "Việc định vị tập tin Ä‘iá»u khiển hợp lệ bị lá»—i"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "Không thể mở ống dẫn cho %s"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "Gặp lá»—i Ä‘á»c từ tiến trình %s"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "Äã lấy má»™t dòng đầu riêng lẻ chứa hÆ¡n %u ky tá»±"
+
+#~ msgid "Note: This is done automatic and on purpose by dpkg."
+#~ msgstr "Ghi chú: thay đổi này được tự động làm bởi dpkg."
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "Äiá»u đè sai dạng %s dòng %lu #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "Äiá»u đè sai dạng %s dòng %lu #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "Äiá»u đè sai dạng %s dòng %lu #3"
+
+#~ msgid "decompressor"
+#~ msgstr "bộ giải nén"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "Ä‘á»c, còn cần Ä‘á»c %lu nhÆ°ng mà không có gì còn lại"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "ghi, còn cần ghi %lu nhưng mà không thể"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "Không thể thực hiện ngay lập tức tiến trình cấu hình “%s†đã giải nén. "
+#~ "Xem “man 5 apt.conf †dưới “APT::Immediate-Configure†để tìm chi tiết."
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "Gặp lỗi khi xử lý %s (NewPackage - gói mới)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "Gặp lỗi khi xử lý %s (UsePackage1 - dùng gói 1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "Gặp lỗi khi xử lý %s (NewFileDesc1 - tập tin mô tả mới 1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "Gặp lỗi khi xử lý %s (UsePackage2 - dùng gói 2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "Gặp lỗi khi xử lý %s (NewFileVer1 - tập tin mới, phiên bản 1)"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "Gặp lỗi khi xử lý %s (NewVersion%d)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "Gặp lỗi khi xử lý %s (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "Gặp lỗi khi xử lý %s (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "Gặp lỗi khi xử lý %s (FindPkg - tìm gói)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr ""
+#~ "Gặp lá»—i khi xá»­ lý %s (CollectFileProvides - tập hợp các trÆ°á»ng hợp miá»…n "
+#~ "là một tập tin)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "Gặp lỗi nội bộ, không thể định vị thành viên"
+
+#~ msgid "Internal error, group '%s' has no installable pseudo package"
+#~ msgstr "Gặp lỗi nội bộ, nhóm “%s†không có gói giả có thể cài đặt"
+
+#~ msgid "Release file expired, ignoring %s (invalid since %s)"
+#~ msgstr "Tập tin phát hành đã hết hạn nên bỠqua %s (không hợp lệ kể từ %s)"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "Dòng %d quá dài (tối đa là %lu)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "Gặp lỗi khi xử lý %s (NewVersion%d)"
+
+#, fuzzy
+#~ msgid "Processing triggers for %s"
+#~ msgstr "Gặp lỗi khi xử lý thư mục %s"
+
+#, fuzzy
+#~ msgid "Line %d too long (max %d)"
+#~ msgstr "Dòng %u quá dài trong danh sách nguồn %s."
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc1)"
+#~ msgstr "Gặp lỗi khi xử lý %s (NewFileDesc1 - tập tin mô tả mới 1)"
+
+#, fuzzy
+#~ msgid "Error occured while processing %s (NewFileDesc2)"
+#~ msgstr "Gặp lỗi khi xử lý %s (NewFileDesc2)"
+
+#, fuzzy
+#~ msgid "openpty failed\n"
+#~ msgstr "Việc chá»n bị lá»—i"
+
+#, fuzzy
+#~ msgid "File date has changed %s"
+#~ msgstr "Không thể chuyển đổi sang %s"
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644
index 000000000..fd9ca30b4
--- /dev/null
+++ b/po/zh_CN.po
@@ -0,0 +1,4251 @@
+# Chinese/Simplified translation of apt.
+# This file is put in the public domain.
+# Deng Xiyue <manphiz-guest@users.alioth.debian.org>, 2007, 2008.
+# Tchaikov <tchaikov@sjtu.org>, 2005, 2007.
+# Carlos Z.F. Liu <carlosliu@users.sourceforge.net>, 2004, 2006.
+# Aron Xu <happyaron.xu@gmail.com>, 2009, 2010.
+# Zhou Mo <cdluminate@gmail.com>, 2014, 2015, 2016, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.4.x\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2017-01-26 12:00+0000\n"
+"Last-Translator: Zhou Mo <cdluminate@gmail.com>\n"
+"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "无效的归档签å"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "读å–å½’æ¡£æˆå‘˜æ–‡ä»¶å¤´å‡ºé”™"
+
+#: apt-inst/contrib/arfile.cc
+#, c-format
+msgid "Invalid archive member header %s"
+msgstr "归档文件中æˆå‘˜æ–‡ä»¶å¤´ %s 无效"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "归档文件中æˆå‘˜æ–‡ä»¶å¤´æ— æ•ˆ"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "归档文件太短"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "无法读å–归档文件的数æ®å¤´"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "找ä¸åˆ°å¯¹åº”于 '%s' çš„å·²é…置压缩工具"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "包文件已被æŸå"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Tar 的校验和ä¸ç¬¦ï¼Œæ–‡ä»¶å·²æŸå"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "未知的 TAR æ•°æ®å¤´ç±»åž‹ %u,æˆå‘˜ %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "è¿™ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„ DEB 包文件,其包内é—æ¼äº†â€œ%sâ€"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "内部错误,无法定ä½åŒ…内文件 %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "ä¸èƒ½è§£æžçš„主控文件"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "无法写入文件 %s"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "无法关闭文件 %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "路径å %s 太长"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "%s 被解压了ä¸åªä¸€æ¬¡"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "目录 %s 已被转移"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "该软件包正å°è¯•å†™å…¥è½¬ç§»å¯¹è±¡ %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "该转移路径太长"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "无法获得 %s 的状æ€"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "无法将 %s é‡å‘½å为 %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "目录 %s è¦è¢«ä¸€ä¸ªéžç›®å½•çš„文件替æ¢"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "无法在其散列桶中分é…节点"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "路径å太长"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "用æ¥è¦†ç›–的软件包ä¸å±žäºŽ %s 的任何版本"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "文件 %s/%s 会覆盖属于软件包 %s 中的åŒå文件"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "æ— æ³•è¯»å– %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "æ— æ³•è¯»å– %s 的状æ€"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "把 DropNode 用在了ä»åœ¨é“¾è¡¨ä¸­çš„节点上"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "无法定ä½å“ˆå¸Œè¡¨å…ƒç´ ï¼"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "无法分é…转移项"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "内部错误,出现在 AddDiversion"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "å°è¯•è¦†ç›–一个转移项,%s -> %s å’Œ %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "添加了两个转移项 %s-> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "é‡å¤çš„é…置文件 %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr "无法安全地用该æºè¿›è¡Œæ›´æ–°ï¼Œæ‰€ä»¥é»˜è®¤ç¦ç”¨è¯¥æºã€‚"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr "无法认è¯æ¥è‡ªè¯¥æºçš„æ•°æ®ï¼Œæ‰€ä»¥ä½¿ç”¨å®ƒä¼šå¸¦æ¥æ½œåœ¨é£Žé™©ã€‚"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr "å‚è§ apt-secure(8) 手册以了解仓库创建和用户é…置方é¢çš„细节。"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "仓库 “%s†的签åä¸å†ç”Ÿæ•ˆã€‚"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "仓库 “%s†ä¸å†å«æœ‰ Release 文件。"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+"一般ä¸å¯ä»¥è¿™æ ·åšï¼Œä½†é€‰é¡¹ Acquire:: AllowDowngradeToInsecureRepositories å¯ä»¥"
+"用于覆盖默认设置。"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' is not signed."
+msgstr "仓库 “%s†没有数字签å。"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "仓库 “%s†没有 Release 文件。"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "仓库 '%s' åªæ供了低强度的安全信æ¯ã€‚"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "无法读å–符å·é“¾æŽ¥ %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Hash 校验和ä¸ç¬¦"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr "å¯ç”¨ä¿¡æ¯ä¸è¶³ï¼Œä¸èƒ½å®‰å…¨æ‰§è¡Œæœ¬æ¬¡ä¸‹è½½"
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "无法é‡å‘½å文件,%s (%s -> %s)。"
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "大å°ä¸ç¬¦"
+
+#: apt-pkg/acquire-item.cc
+msgid "Invalid file format"
+msgstr "æ— æ•ˆçš„æ–‡ä»¶æ ¼å¼ %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Signature error"
+msgstr "æ•°å­—ç­¾å错误"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr "明文签署文件ä¸å¯ç”¨ï¼Œç»“果为‘%s’(您的网络需è¦è®¤è¯å—?)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+"校验数字签å时出错。此仓库未被更新,所以ä»ç„¶ä½¿ç”¨æ­¤å‰çš„索引文件。GPG 错误:"
+"%s: %s"
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr "GPG 错误:%s: %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr "鉴于仓库 '%2$s' ä¸æ”¯æŒ '%3$s' 体系结构,跳过é…置文件 '%1$s' çš„æ•èŽ·ã€‚"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+"在 Release 文件中找ä¸åˆ°æœŸæœ›çš„æ¡ç›® %s(sources.listæ¡ç›®æœ‰è¯¯ï¼Œæˆ–者文件有误)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr "鉴于仓库 '%2$s' æ供的安全信æ¯å¼ºåº¦å¤ªä½Žï¼Œè·³è¿‡é…置文件 '%1$s' çš„acquire."
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+"%s çš„ Release 文件已ç»è¿‡æœŸ(invalid since %s)。该仓库的更新将ä¸ä¼šè¢«åº”用。"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "冲çªçš„å‘行版:%s (期望 %s 但得到 %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"我无法找到一个对应 %s 软件包的文件。在这ç§æƒ…况下å¯èƒ½éœ€è¦æ‚¨æ‰‹åŠ¨ä¿®æ­£è¿™ä¸ªè½¯ä»¶"
+"包。(缘于架构缺失)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr "没有æºå¯ä»¥ç”¨æ¥ä¸‹è½½ %s 版本的 %s"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr "软件包的索引文件已æŸå。找ä¸åˆ°å¯¹åº”软件包 %s çš„ Filename: 字段。"
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "%s=%s çš„ Changelog ä¸å¯ç”¨"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr "方法‘%s’已ç»è¢«æ˜¾å¼è®¾ç½®ä¸ºç¦ç”¨ã€‚"
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr "如果您需è¦ä½¿ç”¨Tor,请确认使用%s而ä¸æ˜¯%s。"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "无法找到获å–è½¯ä»¶åŒ…çš„æ¸ é“ %s 所需的驱动程åºã€‚"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Is the package %s installed?"
+msgstr "请检查是å¦å®‰è£…了 %s 软件包"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "获å–è½¯ä»¶åŒ…çš„æ¸ é“ %s 所需的驱动程åºæ²¡æœ‰æ­£å¸¸å¯åŠ¨ã€‚"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "请把标有 “%s†的盘片æ’入驱动器 “%s†å†æŒ‰ã€Œå›žè½¦é”®ã€ã€‚"
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, c-format
+msgid "List directory %spartial is missing."
+msgstr "软件包列表的目录 %spartial 缺失。"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "仓库目录 %spartial 确实。"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Unable to lock directory %s"
+msgstr "无法对目录 %s 加é”"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr "系统中ä¸å­˜åœ¨æ²™ç®±ç”¨æˆ·'%s',无法é™ä½Žæƒé™"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr "由于文件'%s'无法被用户'%s'访问,已脱离沙盒并ææƒä¸ºæ ¹ç”¨æˆ·æ¥è¿›è¡Œä¸‹è½½ã€‚"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, c-format
+msgid "Clean of %s is not supported"
+msgstr "%s çš„ Clean (清ç†)ä¸è¢«æ”¯æŒ"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "无法切æ¢å·¥ä½œç›®å½•åˆ° %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "正在下载第 %li 个文件,共 %li 个(还剩 %s 个)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "正在下载第 %li 个文件,共 %li 个"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr "软件包 %s 需è¦é‡æ–°å®‰è£…,但是我无法找到相应的安装文件。"
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"错误,pkgProblemResolver::Resolve å‘生故障,这å¯èƒ½æ˜¯æœ‰è½¯ä»¶åŒ…被è¦æ±‚ä¿æŒçŽ°çŠ¶çš„"
+"缘故。"
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr ""
+"无法修正错误,因为您è¦æ±‚æŸäº›è½¯ä»¶åŒ…ä¿æŒçŽ°çŠ¶ï¼Œå°±æ˜¯å®ƒä»¬ç ´å了软件包间的ä¾èµ–å…³"
+"系。"
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "无法解æžæˆ–打开软件包的列表或是状æ€æ–‡ä»¶ã€‚"
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "您å¯èƒ½éœ€è¦è¿è¡Œ apt-get update æ¥è§£å†³è¿™äº›é—®é¢˜"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "无法读å–æºåˆ—表。"
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "编译正则表达å¼æ—¶å‡ºé”™ - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "未找到“%2$sâ€çš„“%1$sâ€å‘布版本"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "未找到“%2$sâ€çš„“%1$sâ€ç‰ˆæœ¬"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find task '%s'"
+msgstr "无法找到任务 %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "æ— æ³•æŒ‰ç…§æ­£åˆ™è¡¨è¾¾å¼ %s 找到任何软件包"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "无法按照 glob ‘%s’ 找到任何软件包"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "无法定ä½è½¯ä»¶åŒ… %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr "无法从完全虚拟的软件包 %s 中选择版本"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr "因为软件包 %s 是完全的虚拟软件包,无法选择它的最新版"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr "因为软件包 %s 没有候选版本,无法进行选择"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr "因为软件包 %s 没有安装,无法选择它的已安装版本"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr "因为软件包 %s 没有已安装或候选的版本,无法进行选择"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "æºåˆ—表 %2$s 的第 %1$u 行太长了。"
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "正在å¸è½½ CD-ROM...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "现把 %s 作为了 CD-ROM 的挂载点\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "等待æ’入盘片……\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "正在挂载 CD-ROM 文件系统……\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "正在鉴别... "
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "已归档文件的标签:%s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "正在盘片中查找索引文件...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr ""
+"找到了 %zu 个软件包索引ã€%zu 个æºä»£ç åŒ…索引ã€%zu 个翻译索引和 %zu 个数字签"
+"å\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+"无法确定任何包文件的ä½ç½®ï¼Œå¯èƒ½è¿™ä¸æ˜¯ä¸€å¼  Debian 盘片或者是选择了错误的硬件构"
+"架。"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "找到标签 '%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "è¿™ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„å字,请é‡è¯•ã€‚\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"这张盘片现在的å字是:\n"
+"“%sâ€\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "正在å¤åˆ¶è½¯ä»¶åŒ…列表……"
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "正在写入新的æºåˆ—表\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "对应于该盘片的软件æºè®¾ç½®é¡¹æ˜¯ï¼š\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "æ— æ³•è¯»å– %s 的状æ€ã€‚"
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "无法读å–文件系统挂载点 %s 的状æ€"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "无法读å–盘片的状æ€"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "ä¸èƒ½ç†è§£å‘½ä»¤è¡Œé€‰é¡¹ “%c†[æ¥è‡ª %s] 与其他选项的æ­é…。"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "ä¸èƒ½ç†è§£å‘½ä»¤è¡Œé€‰é¡¹ “%s†与其他选项的æ­é…。"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "命令行选项 %s ä¸æ˜¯å¸ƒå°”值"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "选项 %s è¦æ±‚有一个å‚æ•°"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "选项 %s:é…置项åŽå¿…须包å«æœ‰å½¢å¦‚“=<å˜é‡>â€çš„具体指定"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "选项 %s è¦æ±‚有一个整数作为å‚数,而ä¸æ˜¯â€œ%sâ€"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "选项“%sâ€å¤ªé•¿"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "ä¸èƒ½è¯†åˆ«å‚æ•° %s,请用 true 或 false"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "无效的æ“作 %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "无法识别的类型缩写:“%câ€"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "正在打开é…置文件 %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "语法错误 %s:%u:é…ç½®å°èŠ‚没有以å字开头"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "语法错误 %s:%u:标签格å¼æœ‰è¯¯"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "语法错误 %s:%u:é…置值åŽæœ‰å¤šä½™çš„æ— æ„义数æ®"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "语法错误 %s:%u:åªèƒ½åœ¨é¡¶å±‚é…置文件中使用指示"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "语法错误 %s:%u:太多的嵌套 include 命令"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "语法错误 %s:%u:Included from here"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "语法错误 %s:%u:ä¸æ”¯æŒçš„指令“%sâ€"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr "语法错误 %s:%u:clean 指令需è¦ä¸€ä¸ªé€‰é¡¹æ ‘作为å‚æ•°"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "语法错误 %s:%u:文件尾部有多余的无æ„义的数æ®"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem unlinking the file %s"
+msgstr "用 unlink 删除文件 %s 出错"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "由于文件系统为åªè¯»ï¼Œå› è€Œæ— æ³•ä½¿ç”¨æ–‡ä»¶é” %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "无法打开é”文件 %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "无法在 nfs æ–‡ä»¶ç³»ç»Ÿä¸Šä½¿ç”¨æ–‡ä»¶é” %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "æ— æ³•èŽ·å¾—é” %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr "无法创建文件列表,因为‘%s’ä¸æ˜¯ä¸€ä¸ªç›®å½•"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr "忽略‘%s’(于目录‘%s’),鉴于它ä¸æ˜¯ä¸€ä¸ªå¸¸è§„文件"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr "忽略‘%s’(于目录‘%s’),鉴于它没有文件扩展å"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr "忽略‘%s’(于目录‘%s’),鉴于它的文件扩展å无效"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "等待å­è¿›ç¨‹ %s 的退出,但是它并ä¸å­˜åœ¨"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "å­è¿›ç¨‹ %s å‘生了段错误"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "å­è¿›ç¨‹ %s æ”¶åˆ°ä¿¡å· %u。"
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "å­è¿›ç¨‹ %s è¿”å›žäº†ä¸€ä¸ªé”™è¯¯å· (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "å­è¿›ç¨‹ %s 异常退出"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "读错误"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "写出错"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "关闭 gzip %s 文件出错"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr "未预期的文件结æŸç¬¦"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "无法创建å­è¿›ç¨‹çš„ IPC 管é“"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "无法执行压缩程åº"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "无法打开文件 %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file descriptor %d"
+msgstr "无法打开文件æ述符 %d"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "还剩 %llu 字节没有读出,但已没有å¯è¯»ä¿¡æ¯"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "还剩 %llu 字节没有写入,但无法写入æ“作"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem closing the file %s"
+msgstr "关闭文件 %s 出错"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "é‡å‘½å文件 %s 为 %s 出错"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "åŒæ­¥æ–‡ä»¶å‡ºé”™"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to mkstemp %s"
+msgstr "无法建立临时文件(mkstemp) %s "
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "无法写入 %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "无法 mmap 一个空文件"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "无法 mmap %llu 字节的数æ®"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "无法为å¤åˆ¶æ–‡ä»¶æ述符 %i"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to close mmap"
+msgstr "无法关闭 mmap"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Unable to synchronize mmap"
+msgstr "无法åŒæ­¥ mmap "
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "无法 mmap %lu 字节的数æ®"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "无法截断文件"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"åŠ¨æ€ MMap 没有空间了。请增大 APT::Cache-Start 的大å°ã€‚当å‰å€¼ï¼š%lu。(man 5 "
+"apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr "无法增加 MMap 的大å°ï¼Œå› ä¸ºå·²ç»è¾¾åˆ° %lu 字节的é™åˆ¶ã€‚"
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr "无法增加 MMap 大å°ï¼Œå› ä¸ºç”¨æˆ·å·²ç¦ç”¨è‡ªåŠ¨å¢žåŠ ã€‚"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... 有错误ï¼"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... 完æˆ"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr "..."
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... %u%%"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr "%li天 %liå°æ—¶ %li分 %li秒"
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr "%liå°æ—¶ %li分 %li秒"
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr "%li分 %li秒"
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr "%li秒"
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "找ä¸åˆ°æ‚¨é€‰åˆ™çš„ %s"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr "目标 %1$s 想è¦æ•èŽ·ä¸Ž %3$s (æ¥è‡ªè½¯ä»¶æº %4$s) 相åŒçš„文件 (%2$s)"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr "目标 %s (%s) 在 %s å’Œ %s 中被é…置了多次"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "无法解æžè½¯ä»¶åŒ…仓库 Release 文件 %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "软件包仓库 Release 文件 %s 内无组件章节信æ¯"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "软件包仓库 Release 文件 %s 内无哈希æ¡ç›®"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr "Release 文件 %s 中ä¸å«æ•£åˆ—项,该文件用于ä¿è¯è¶³å¤Ÿçš„安全性。"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "软件包仓库 Release 文件 %2$s 内 %1$s æ¡ç›®æ— æ•ˆ"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr "è½¯ä»¶æº %2$s %3$s 的选项 %1$s 中å«æœ‰äº’相冲çªçš„值"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr "è½¯ä»¶æº %2$s %3$s (%4$s) 的选项 %1$s 中å«æœ‰æ— æ•ˆå€¼"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr "è½¯ä»¶æº %2$s %3$s 的选项 %1$s 中å«æœ‰äº’相冲çªçš„值:%4$s != %5$s"
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "无法解æžè½¯ä»¶åŒ…文件 %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr "无法é”定管ç†ç›®å½•(%s),是å¦æœ‰å…¶ä»–进程正å ç”¨å®ƒï¼Ÿ"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "无法对状æ€åˆ—表目录加é”(%s),请查看您是å¦æ­£ä»¥ root 用户è¿è¡Œï¼Ÿ"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr "dpkg 被中断,您必须手工è¿è¡Œ ‘%s’ 解决此问题。"
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr "未é”定"
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "正在安装 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "正在é…ç½® %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "正在删除 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removing %s"
+msgstr "完全删除 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr "注æ„到 %s å·²ç»æ¶ˆå¤±"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "执行安装åŽæ‰§è¡Œçš„触å‘器 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "已安装 %s"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "目录 %s 缺失"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, c-format
+msgid "Could not open file '%s'"
+msgstr "无法打开文件 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "正在准备 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "正在解压缩 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "正在准备é…ç½® %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "正在准备 %s 的删除æ“作"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "已删除 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "正在准备完全删除 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "完全删除了 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Can not write log (%s)"
+msgstr "无法写入日志 (%s)"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr "/dev/pts 挂载了å—?"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr "æ“作在完æˆä¹‹å‰è¢«æ‰“æ–­"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr "由于已ç»è¾¾åˆ° MaxReports é™åˆ¶ï¼Œæ²¡æœ‰å†™å…¥ apport 报告。"
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr "ä¾èµ–问题 - ä¿æŒæœªé…ç½®"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr "因为错误消æ¯æŒ‡ç¤ºè¿™æ˜¯ç”±äºŽä¸Šä¸€ä¸ªé—®é¢˜å¯¼è‡´çš„错误,没有写入 apport 报告。"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr "因为错误消æ¯æŒ‡ç¤ºè¿™æ˜¯ç”±äºŽç£ç›˜å·²æ»¡ï¼Œæ²¡æœ‰å†™å…¥ apport 报告。"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr "因为错误消æ¯æŒ‡ç¤ºè¿™æ˜¯ç”±äºŽå†…å­˜ä¸è¶³ï¼Œæ²¡æœ‰å†™å…¥ apport 报告。"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr "错误信æ¯æ˜¾ç¤ºæœ¬åœ°ç³»ç»Ÿæœ‰ä¸€äº›é—®é¢˜ï¼Œå› æ­¤æ²¡æœ‰å†™å…¥ apport 报告"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr "因为错误消æ¯æŒ‡ç¤ºè¿™æ˜¯ä¸€ä¸ª dpkg I/O 错误,没有写入 apport 报告。"
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "正在分æžè½¯ä»¶åŒ…çš„ä¾èµ–关系树"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "候选版本"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "生æˆä¾èµ–关系"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "正在读å–状æ€ä¿¡æ¯"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "无法打开状æ€æ–‡ä»¶ %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "无法写入临时状æ€æ–‡ä»¶ %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr "å‘ä¾èµ–解决器å‘é€æƒ…景"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr "å‘ä¾èµ–解决器å‘é€è¯·æ±‚"
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr "准备接收ä¾èµ–解决方案"
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr "外部ä¾èµ–解决器出错,错误信æ¯ä¸æ°å½“"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr "执行外部ä¾èµ–解决器"
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr "执行外部安装顺åºè§„划器"
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr "å‘安装顺åºè§„划器å‘é€è¯·æ±‚"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr "å‘安装顺åºè§„划器å‘é€æƒ…景"
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr "外部安装顺åºè§„划器出错,错误信æ¯ä¸æ°å½“"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "已写入 %i æ¡è®°å½•ã€‚\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "已写入 %i æ¡è®°å½•ï¼Œå¹¶æœ‰ %i 个文件缺失。\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "已写入 %i æ¡è®°å½•ï¼Œå¹¶æœ‰ %i 个文件ä¸åŒ¹é…\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "已写入 %i æ¡è®°å½•ï¼Œå¹¶æœ‰ %i ä¸ªç¼ºå¤±ï¼Œä»¥åŠ %i 个文件ä¸åŒ¹é…\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr "无法找到认è¯è®°å½•ï¼š%s"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Hash 校验和ä¸ç¬¦ï¼š%s"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "ä¸æ”¯æŒâ€œ%sâ€æ‰“包系统"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "无法确定适åˆçš„打包系统类型"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr "进度:[%3i%%]"
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr "正在è¿è¡Œ dpkg"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+"无法立å³å¯¹ %s 进行é…置。请查看 man 5 apt.conf 中的 APT::Immediate-Configure "
+"(%d)"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid "Could not configure '%s'. "
+msgstr "无法é…ç½® %s。"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"由于这次安装存在ç€ä¸€ä¸ª Conflicts/Pre-Depends 循环,因而需è¦æš‚时删除一个必ä¸å¯"
+"少的软件包 %s。通常并ä¸å»ºè®®è¿™æ ·åšï¼Œä½†æ˜¯å¦‚果您确实希望如此,å¯ä»¥æ‰“å¼€ APT::"
+"Force-LoopBreak 选项。"
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "软件包缓存区是空的"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "软件包缓存文件æŸå了"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "软件包缓存区文件的版本ä¸å…¼å®¹"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "本程åºç›®å‰ä¸æ”¯æŒâ€œ%sâ€ç‰ˆæœ¬ç³»ç»Ÿ"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "软件包缓存是为其它架构的硬件构建的: %s vs %s"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "软件包缓存文件æŸå,散列值错误"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "ä¾èµ–"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "预ä¾èµ–"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "建议"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "冲çª"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "推è"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "替æ¢"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "ç ´å"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr "增强"
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "废弃"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "é‡è¦"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "必需"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "标准"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "é¢å¤–"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "å¯é€‰"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "软件包暂存区使用的是ä¸å…¼å®¹çš„版本控制系统"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "å¤„ç† %s (%s%d) 时出错"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "哇,软件包数é‡è¶…出了本 APT 的处ç†èƒ½åŠ›ã€‚"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "哇,软件包版本数é‡è¶…出了本 APT 的处ç†èƒ½åŠ›ã€‚"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "哇,软件包说明数é‡è¶…出了本 APT 的处ç†èƒ½åŠ›ã€‚"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "哇,ä¾èµ–关系数é‡è¶…出了本 APT 的处ç†èƒ½åŠ›ã€‚"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "正在读å–软件包列表"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "无法读å–或写入软件æºç¼“å­˜"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "ä¸æ”¯æŒç´¢å¼•æ–‡ä»¶ç±»åž‹â€œ%sâ€"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+"'%s' 这个值对 APT::Default-Release 是无效的,因为在æºé‡Œæ‰¾ä¸åˆ°è¿™æ ·çš„å‘è¡Œ"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "首选项文件 %s 中å‘现有无效的记录,无 Package 字段头"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "无法识别é”定的类型 %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr "%s: 值 %s 超出é”定优先级有效范围 (%d 到 %d)"
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "没有为版本é”定指定优先级(或为零)"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "文件 %2$s 第 %1$u 行的记录格å¼æœ‰è¯¯ %3$s (%4$s)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "正在打开 %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "在æºåˆ—表 %2$s 中第 %1$u 行有误 (类型)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "软件æºåˆ—表 %3$s 第 %2$u 行中的类别 “%1$s†无法识别"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "软件æºåˆ—表 %2$s 中第 %1$u 行的å°èŠ‚æ ¼å¼æœ‰è¯¯ (类型)"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "软件æºåˆ—表 %3$s 第 %2$u å°èŠ‚的类别 “%1$s†无法识别"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr "命令行中有ä¸æ”¯æŒçš„文件 %s"
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "您必须在 sources.list 中指定代ç æº(deb-src) URI"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr "无法将 %s 转æ¢ä¸ºæ•´æ•°ï¼šè¶…出范围"
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "无法下载 %s %s"
+
+#: apt-pkg/update.cc
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr "部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。"
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "正在计算更新"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "命中:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "获å–:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "忽略:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "错误:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "已下载 %sB,耗时 %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [执行中]"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"æ›´æ¢ä»‹è´¨ï¼šè¯·æŠŠæ ‡æœ‰\n"
+" “%sâ€\n"
+"的盘片æ’入驱动器“%sâ€å†æŒ‰ã€Œå›žè½¦ã€é”®\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "正在修å¤ä¾èµ–关系..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " 失败。"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "无法修å¤ä¾èµ–关系"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "无法最å°åŒ–å¾…å‡çº§è½¯ä»¶åŒ…集åˆ"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " 完æˆ"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "您也许需è¦è¿è¡Œâ€œapt --fix-broken installâ€æ¥ä¿®æ­£ä¸Šé¢çš„错误。"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"有未能满足的ä¾èµ–关系。请å°è¯•ä¸æŒ‡æ˜Žè½¯ä»¶åŒ…çš„åå­—æ¥è¿è¡Œâ€œapt --fix-broken "
+"installâ€(也å¯ä»¥æŒ‡å®šä¸€ä¸ªè§£å†³åŠžæ³•)。"
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr "正在排åº"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "注æ„,根æ®ä»»åŠ¡ '%2$s' 选中了 '%1$s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "注æ„,根æ®Glob '%2$s' 选中了 '%1$s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "注æ„,根æ®æ­£åˆ™è¡¨è¾¾å¼ '%2$s' 选中了 '%1$s'\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "虚拟软件包 %s 由下é¢çš„软件包æ供:\n"
+
+#: apt-private/private-cacheset.cc
+msgid " [Installed]"
+msgstr "[已安装]"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr " [无候选]"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "请您明确地选择安装其中一个。"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"没有å¯ç”¨çš„软件包 %s,但是它被其它的软件包引用了。\n"
+"è¿™å¯èƒ½æ„味ç€è¿™ä¸ªç¼ºå¤±çš„软件包å¯èƒ½å·²è¢«åºŸå¼ƒï¼Œ\n"
+"或者åªèƒ½åœ¨å…¶ä»–å‘布æºä¸­æ‰¾åˆ°\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "然而下列软件包会å–代它:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "软件包 %s 没有å¯å®‰è£…候选"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr "类似 '%s' 的虚拟软件包「ä¸ã€å¯ä»¥å¸è½½\n"
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "软件包 %s 未安装,所以ä¸ä¼šè¢«å¸è½½ã€‚您的æ„æ€æ˜¯ ‘%s’ å—?\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "软件包 %s 未安装,所以ä¸ä¼šè¢«å¸è½½\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "注æ„,选中 '%s' è€Œéž '%s'\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr "常用命令:"
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr "å‚è§ %s 以获å–更多关于å¯ç”¨å‘½ä»¤çš„ä¿¡æ¯ã€‚"
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+"程åºé…置选项åŠè¯­æ³•éƒ½å·²ç»åœ¨ apt.conf(5) 中é˜æ˜Žã€‚\n"
+"欲知如何é…置软件æºï¼Œè¯·å‚阅 sources.list(5)。\n"
+"软件包åŠå…¶ç‰ˆæœ¬å好å¯ä»¥é€šè¿‡ apt_preferences(5) æ¥è®¾ç½®ã€‚\n"
+"关于安全方é¢çš„细节å¯ä»¥å‚考 apt-secure(8).\n"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "本 APT 具有超级牛力。"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr "本 APT 助手具有超级喵力。"
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "没有å‘现匹é…的软件包"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "ã€è­¦å‘Šã€‘:下列软件包ä¸èƒ½é€šè¿‡è®¤è¯ï¼"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "已忽略认è¯è­¦å‘Šã€‚\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "有些软件包ä¸èƒ½é€šè¿‡éªŒè¯"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "没有验è¯çš„情况下就安装这些软件包å—?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr "--force-yes å·²ç»è¢«åºŸå¼ƒï¼Œè¯·ä½¿ç”¨ä»¥ --allow 开头的选项æ¥ä»£æ›¿ã€‚"
+
+#: apt-private/private-download.cc
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr ""
+"存在未认è¯çš„软件包åŒæ—¶ä½¿ç”¨äº† -y 选项,然而未æ­é… --allow-unauthenticated"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "无法获知您在 %s 上的å¯ç”¨ç©ºé—´"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "您在 %s 上没有足够的å¯ç”¨ç©ºé—´ã€‚"
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "无法é”定下载目录"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"有一些软件包无法被安装。如果您用的是 unstable å‘行版,这也许是\n"
+"因为系统无法达到您è¦æ±‚的状æ€é€ æˆçš„。该版本中å¯èƒ½ä¼šæœ‰ä¸€äº›æ‚¨éœ€è¦çš„软件\n"
+"包尚未被创建或是它们已被从新到(Incoming)目录移出。"
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "下列信æ¯å¯èƒ½ä¼šå¯¹è§£å†³é—®é¢˜æœ‰æ‰€å¸®åŠ©ï¼š"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "ç ´æŸçš„软件包"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"有几个软件包无法下载,è¦ä¸è¿è¡Œ apt-get update 或者加上 --fix-missing 的选项å†"
+"试试?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "内部错误,InstallPackages 被用在了æŸå的软件包上ï¼"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "有软件包需è¦è¢«å¸è½½ï¼Œä½†æ˜¯å¸è½½è¢«è®¾ç½®ä¸ºç¦æ­¢ã€‚"
+
+#: apt-private/private-install.cc
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr ""
+"关键软件包被移除åŒæ—¶ä½¿ç”¨äº† -y 选项,但是没有æ­é… --allow-remove-essential。"
+
+#: apt-private/private-install.cc
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "é™çº§è½¯ä»¶åŒ…åŒæ—¶ä½¿ç”¨äº† -y 选项,但是没有用 --allow-downgrades."
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+"在更改ä¿ç•™è½¯ä»¶åŒ…çš„åŒæ—¶ä½¿ç”¨äº† -y 选项,但没有æ­é… --allow-change-held-"
+"packages."
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "内部错误,排åºæœªå®Œæˆ"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr "怪了……文件大å°ä¸ç¬¦ï¼Œè¯·å‘邮件给 apt@packages.debian.org å§"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "需è¦ä¸‹è½½ %sB/%sB 的归档。\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "需è¦ä¸‹è½½ %sB 的归档。\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "解压缩åŽä¼šæ¶ˆè€— %sB çš„é¢å¤–空间。\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "解压缩åŽå°†ä¼šç©ºå‡º %sB 的空间。\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "虽然您指定了仅执行常规æ“作,但这并ä¸æ˜¯å¸¸è§„æ“作。"
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "是,按我说的åšï¼"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"您的æ“作有潜在的å±å®³æ€§ã€‚\n"
+"è‹¥è¦ç»§ç»­ï¼Œè¯·è¾“入下é¢çš„短å¥â€œ%sâ€\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "中止。"
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "您希望继续执行å—?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "有一些文件下载失败"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "于“仅下载â€æ¨¡å¼ä¸­ä¸‹è½½å®Œæ¯•"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "ç›®å‰ä¸æ”¯æŒ --fix-missing 和介质交æ¢"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "无法修å¤ç¼ºå¤±çš„软件包。"
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "中止安装。"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] "以下软件包因为文件已被其他软件包覆盖而消失:"
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr "注æ„:这是自动被 dpkg 有æ„完æˆçš„。"
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "我们ä¸åº”该进行删除,无法å¯åŠ¨è‡ªåŠ¨åˆ é™¤å™¨"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr "似乎自动å¸è½½å·¥å…·æŸå了一些软件,这ä¸åº”该å‘ç”Ÿã€‚è¯·å‘ apt æ交错误报告。"
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "内部错误,自动å¸è½½å·¥å…·å事了"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "下列软件包是自动安装的并且现在ä¸éœ€è¦äº†ï¼š"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "%lu 个自动安装的的软件包现在已ä¸å†éœ€è¦äº†ã€‚\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "使用'%s'æ¥å¸è½½å®ƒ(它们)。"
+
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "将会åŒæ—¶å®‰è£…下列软件:"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "建议安装:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "推è安装:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "忽略了 %s,它已ç»è¢«å®‰è£…而且没有指定è¦å‡çº§ã€‚\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr "忽略了 %s,它已ç»è¢«å®‰è£…而且仅请求了å‡çº§ã€‚\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "ä¸èƒ½é‡æ–°å®‰è£… %s,因为无法下载它。\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s å·²ç»æ˜¯æœ€æ–°ç‰ˆ (%s)。\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s 已设置为手动安装。\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "为 %3$s 选定了版本 %1$s (%2$s)\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "由于 %4$s,为 %3$s 选定了版本 %1$s (%2$s)\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr "正在列表"
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] "还有 %i 个版本。请使用 -a 选项æ¥æŸ¥çœ‹å®ƒ(他们)。"
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+"注æ„:这åªæ˜¯æ¨¡æ‹Ÿï¼\n"
+"   %s éœ€è¦ root 特æƒè¿›è¡Œå®žé™…的执行。\n"
+"   åŒæ—¶è¯·è®°ä½æ­¤æ—¶å¹¶æœªé”定,所以请勿完全相信当å‰çš„情况ï¼\n"
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr "未知"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr "[已安装,å¯å‡çº§è‡³ï¼š%s]"
+
+#: apt-private/private-output.cc
+msgid "[installed,local]"
+msgstr "[已安装,本地]"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr "[已安装,å¯è‡ªåŠ¨å¸è½½]"
+
+#: apt-private/private-output.cc
+msgid "[installed,automatic]"
+msgstr "[已安装,自动]"
+
+#: apt-private/private-output.cc
+msgid "[installed]"
+msgstr "[已安装]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr "[å¯ä»Žè¯¥ç‰ˆæœ¬å‡çº§ï¼š%s]"
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr "[é…置文件残留]"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "但是 %s å·²ç»å®‰è£…"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "但是 %s æ­£è¦è¢«å®‰è£…"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "但无法安装它"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "但是它是虚拟软件包"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "但是它将ä¸ä¼šè¢«å®‰è£…"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "但是它还没有被安装"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr " 或"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "下列软件包有未满足的ä¾èµ–关系:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "下列ã€æ–°ã€‘软件包将被安装:"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "下列软件包将被ã€å¸è½½ã€‘:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "下列软件包的版本将ä¿æŒä¸å˜ï¼š"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "下列软件包将被å‡çº§ï¼š"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "下列软件包将被ã€é™çº§ã€‘:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "下列被è¦æ±‚ä¿æŒç‰ˆæœ¬ä¸å˜çš„软件包将被改å˜ï¼š"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s (是由于 %s)"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"ã€è­¦å‘Šã€‘:下列基础软件包将被å¸è½½ã€‚\n"
+"请勿å°è¯•ï¼Œé™¤éžæ‚¨ç¡®å®žçŸ¥é“您在åšä»€ä¹ˆï¼"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "å‡çº§äº† %lu 个软件包,新安装了 %lu 个软件包,"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "é‡æ–°å®‰è£…了 %lu 个软件包,"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "é™çº§äº† %lu 个软件包,"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "è¦å¸è½½ %lu 个软件包,有 %lu 个软件包未被å‡çº§ã€‚\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "有 %lu 个软件包没有被完全安装或å¸è½½ã€‚\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr "[Y/n]"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr "[y/N]"
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr "Y"
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr "N"
+
+#: apt-private/private-search.cc
+msgid "You must give at least one search pattern"
+msgstr "您必须明确地给出至少一个表达å¼"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr "全文æœç´¢"
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "软件包文件 %s 尚未åŒæ­¥ã€‚"
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] "有 %i æ¡é™„加记录。请加上 ‘-a’ å‚æ•°æ¥æŸ¥çœ‹å®ƒä»¬"
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr "ä¸æ˜¯ä¸€ä¸ªå®žåŒ…(虚包)"
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "软件包文件:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "缓存尚未åŒæ­¥ï¼Œæ— æ³•äº¤å·®å¼•è¯(x-ref)一个软件包文件"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "被é”定的软件包:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr "%s -> %s ,其优先级为 %d\n"
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " 已安装:"
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " 候选:"
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(æ— )"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " 版本列表:"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "找ä¸åˆ°â€˜%s’体系结构下的软件包"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "找ä¸åˆ°è½¯ä»¶åŒ…‘%s’的‘%s’版本"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "找ä¸åˆ°è½¯ä»¶åŒ…‘%s’的‘%s’å‘è¡Œ"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "选择 %s 作为æºä»£ç åŒ…è€Œéž %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr "找ä¸åˆ° %2$s 软件包的 %1$s 版本"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "è¦ä¸‹è½½æºä»£ç ï¼Œå¿…须指定至少一个对应的软件包"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "无法找到与 %s 对应的æºä»£ç åŒ…"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+"æ示:%s 的打包工作被维护于以下ä½ç½®çš„ %s 版本控制系统中:\n"
+"%s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+"请使用:\n"
+"%s\n"
+"获得该软件包的最近更新(å¯èƒ½å°šæœªæ­£å¼å‘布)。\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "忽略已下载的文件“%sâ€\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "需è¦ä¸‹è½½ %sB/%sB çš„æºä»£ç åŒ…。\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "需è¦ä¸‹è½½ %sB çš„æºä»£ç åŒ…。\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "下载æºä»£ç  %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "有一些包文件无法下载。"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "忽略已ç»è¢«è§£åŒ…到 %s 目录的æºä»£ç åŒ…\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "è¿è¡Œè§£åŒ…的命令“%sâ€å‡ºé”™ã€‚\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "请检查是å¦å®‰è£…了“dpkg-devâ€è½¯ä»¶åŒ…。\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "执行构造软件包命令“%sâ€å¤±è´¥ã€‚\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "无法获得 %s 的构建ä¾èµ–关系信æ¯"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr " %s 没有构建ä¾èµ–关系信æ¯ã€‚\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr "è¦æ£€æŸ¥ç”Ÿæˆè½¯ä»¶åŒ…的构建ä¾èµ–关系,必须指定至少一个软件包"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+"找ä¸åˆ°å…³äºŽ %s 的有效体系结构信æ¯ã€‚请å‚è§ apt.conf(5) APT::Architectures for "
+"setup"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr "注æ„,正使用 '%s' 目录下载编译ä¾èµ–\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "注æ„,正使用 '%s' 文件æ¥èŽ·å–编译ä¾èµ–\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "无法处ç†æž„建ä¾èµ–关系"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "è§£æž %s 失败。请é‡æ–°ç¼–辑之åŽå†è¯•ã€‚"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr "您的 %s 文件有过改动,请执行 ‘apt-get update’。"
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "版本为 %2$s 的软件包 %1$s 有未满足的ä¾èµ–关系:\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr " update 命令ä¸éœ€è¦å‚æ•°"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+"有 %i 个软件包å¯ä»¥å‡çº§ã€‚请执行 ‘apt list --upgradable’ æ¥æŸ¥çœ‹å®ƒä»¬ã€‚\n"
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr "所有软件包å‡ä¸ºæœ€æ–°ã€‚"
+
+#: cmdline/apt-cache.cc
+msgid "apt-cache stats does not take any arguments"
+msgstr "apt-cache stats 命令ä¸éœ€è¦å‚æ•°"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "软件包å称总数:"
+
+#: cmdline/apt-cache.cc
+msgid "Total package structures: "
+msgstr "全部软件包结构:"
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " 普通软件包:"
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " 纯虚拟软件包:"
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " å•è™šæ‹Ÿè½¯ä»¶åŒ…:"
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " æ··åˆè™šæ‹Ÿè½¯ä»¶åŒ…:"
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " 缺失:"
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "按ä¸åŒçš„版本共计:"
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "按ä¸åŒçš„说明共计:"
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "按ä¾èµ–关系共计:"
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "按版本/文件关系共计:"
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "按说明/文件关系共计:"
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "æ供映射共计:"
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "Glob 字串共计:"
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "Slack 空间共计:"
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "总å ç”¨ç©ºé—´ï¼š"
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr "该命令已废弃。请使用‘apt-mark showauto’。"
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+"用法: apt-cache [选项] 命令\n"
+" apt-cache [选项] show 软件包1 [软件包2 ...]\n"
+"\n"
+"apt-cache å¯ä»¥æŸ¥è¯¢å’Œæ˜¾ç¤ºå·²å®‰è£…å’Œå¯å®‰è£…软件包的å¯ç”¨ä¿¡æ¯ã€‚\n"
+"它专门工作在本地的数æ®ç¼“存上,而这些缓存å¯ä»¥é€šè¿‡æ¯”如\n"
+"apt-get çš„ 'update' 命令æ¥æ›´æ–°ã€‚如果è·ç¦»ä¸Šä¸€æ¬¡æ›´æ–°çš„时间太久,\n"
+"那么它显示的信æ¯å¯èƒ½å°±ä¼šè¿‡æ—¶ã€‚ä¸è¿‡ä½œä¸ºäº¤æ¢ï¼Œapt-cache ä¸ä¾èµ–\n"
+"当å‰è½¯ä»¶æºçš„å¯ç”¨æ€§ï¼ˆæ¯”如:离线状æ€ï¼‰ã€‚\n"
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "显示æºæ–‡ä»¶çš„å„项记录"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "æ ¹æ®æ­£åˆ™è¡¨è¾¾å¼æœç´¢è½¯ä»¶åŒ…列表"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "显示该软件包的ä¾èµ–关系信æ¯"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "显示所有ä¾èµ–于该软件包的软件包åå­—"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "以便于阅读的格å¼ä»‹ç»è¯¥è½¯ä»¶åŒ…"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "列出所有软件包的åå­—"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "显示软件包的安装设置状æ€"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "请给这张盘片起个å字,比如“Debian 5.0.3 Disk 1â€"
+
+#: cmdline/apt-cdrom.cc
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "请把盘片æ’入驱动器å†æŒ‰ã€Œå›žè½¦é”®ã€"
+
+#: cmdline/apt-cdrom.cc
+#, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "无法将 ‘%s’ 挂载到 ‘%s’"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+"从默认挂载点自动检测 CD-ROM 失败。\n"
+"您å¯ä»¥å°è¯•ç”¨ --cdrom 选项æ¥è®¾ç½® CD-ROM 的挂载点。\n"
+"更多关于 CD-ROM 自动检测以åŠæŒ‚载点的信æ¯ï¼Œè¯·å‚è§â€˜man apt-cdrom’。"
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "请对您的盘片套件中的其它盘片é‡å¤ç›¸åŒçš„æ“作。"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+"用法: apt-cdrom [选项] 命令\n"
+"\n"
+"apt-cdrom 用于添加CDROM, USB存储器和其他å¯ç§»åŠ¨åª’介作为 APT 软件æºã€‚\n"
+"关于挂载点和设备的详细信æ¯å‚è§ apt.conf(5), udev(7) å’Œ fstab(5)。\n"
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "å‚æ•°ä¸æˆå¯¹"
+
+#: cmdline/apt-config.cc
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"用法:apt-config [选项] 命令\n"
+"\n"
+"apt-config 是所有 APT 工具的é…置接å£ï¼Œä¸»è¦ç”¨äºŽDebug和编写Shell脚本。\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr "通过shell求值æ¥èŽ·å–设置值"
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr "显示活动的设置选项"
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+"用法:apt-dump-solver\n"
+"\n"
+"apt-dump-solver 是一个在文件中存储EDSP情景的接å£ï¼Œ\n"
+"并å¯å°†å…¶ä¼ é€åˆ°å¦ä¸€ä¸ªè§£å†³å™¨ã€‚\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"用法: apt-extracttemplates 文件1 [文件2 ...]\n"
+"\n"
+"apt-extracttemplates å¯ä»¥ä»Ž debian 软件包中解压出é…置文件和模æ¿\n"
+"ä¿¡æ¯ã€‚它主è¦è¢« debconf(1) 用于在安装软件包å‰è¯¢é—®ç”¨æˆ·é…置问题。\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "无法获得 debconf 的版本。您安装了 debconf å—?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "找ä¸åˆ°è½¯ä»¶åŒ… %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s 已设置为自动安装。\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr "该命令已废弃。请用‘apt-mark auto’或‘apt-mark manual’。"
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "内部错误,问题解决工具å事了"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "支æŒçš„模å—:"
+
+#: cmdline/apt-get.cc
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"用法: apt-get [选项] 命令\n"
+"    apt-get [选项] install|remove 软件包1 [软件包2 ...]\n"
+"    apt-get [选项] source 软件包1 [软件包2 ...]\n"
+"\n"
+"apt-get å¯ä»¥ä»Žè®¤è¯è½¯ä»¶æºä¸‹è½½è½¯ä»¶åŒ…åŠç›¸å…³ä¿¡æ¯ï¼Œä»¥ä¾¿å®‰è£…å’Œå‡çº§è½¯ä»¶åŒ…,\n"
+"或者用于移除软件包。在这些过程中,软件包ä¾èµ–会被妥善处ç†ã€‚\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "å–回更新的软件包列表信æ¯"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "进行一次å‡çº§"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "安装新的软件包(注:软件包å称是 libc6 è€Œéž libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "å¸è½½è½¯ä»¶åŒ…"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "å¸è½½å¹¶æ¸…除软件包的é…ç½®"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "å¸è½½æ‰€æœ‰è‡ªåŠ¨å®‰è£…且ä¸å†ä½¿ç”¨çš„软件包"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "å‘布版å‡çº§ï¼Œè§ apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "æ ¹æ® dselect 的选择æ¥è¿›è¡Œå‡çº§"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "为æºç åŒ…é…置所需的编译ä¾èµ–关系"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "删除所有已下载的包文件"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "删除已下载的旧包文件"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "核对以确认系统的ä¾èµ–关系的完整性"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "下载æºç åŒ…文件"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr "下载指定的二进制包到当å‰ç›®å½•"
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr "下载指定软件包,并显示其changelog"
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr "需è¦ä¸€ä¸ª URL 作为å‚æ•°"
+
+#: cmdline/apt-helper.cc
+msgid "Must specify at least one pair url/filename"
+msgstr "必须指定至少一对URL或文件å"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr "下载失败"
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr "GetSrvRec 失败,因为 %s"
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+"用法: apt-helper [选项] 命令\n"
+" apt-helper [选项] download-file URI 目标路径\n"
+"\n"
+"apt-helper 汇集了å„ç§å„样的功能æ¥ä¾›shell脚本调用,比如\n"
+"使用与APT相åŒçš„代ç†è®¾ç½®ï¼Œæˆ–者相åŒçš„æ•èŽ·ç³»ç»Ÿã€‚\n"
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr "将 URI 指定的文件下载到目标路径"
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr "查阅一个 SRV 记录 (如: _http._tcp.ftp.debian.org)"
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr "自动解压并连接文件"
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr "用 apt.conf 检测代ç†è®¾ç½®"
+
+#: cmdline/apt-internal-planner.cc
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"用法: apt-internal-planner\n"
+"\n"
+"apt-internal-planner 是一个å¯ä»¥åƒå¤–部规划器那样使用当å‰çš„APT家æ—内部\n"
+"安装顺åºè§„划器的接å£ï¼Œä»¥ä¾¿è°ƒè¯•ç­‰ç”¨é€”。\n"
+
+#: cmdline/apt-internal-solver.cc
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"用法: apt-internal-solver\n"
+"\n"
+"apt-internal-solver 是一个å¯ä»¥åƒå¤–部解æžå™¨é‚£æ ·ä½¿ç”¨å½“å‰çš„APT家æ—内部\n"
+"ä¾èµ–解æžå™¨çš„接å£ï¼Œä»¥ä¾¿è°ƒè¯•ç­‰ç”¨é€”。\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "%s 还没有安装,因此无法标记。\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s å·²ç»è¢«è®¾ç½®ä¸ºæ‰‹åŠ¨å®‰è£…。\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s å·²ç»è¢«è®¾ç½®ä¸ºè‡ªåŠ¨å®‰è£…。\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s å·²ç»è®¾ç½®ä¸ºä¿ç•™ã€‚\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s å·²ç»è®¾ç½®ä¸ºä¸ä¿ç•™ã€‚\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr "执行 dpkg 失败。您是 root å—?"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "%s set on hold.\n"
+msgstr "%s 设置为ä¿ç•™ã€‚\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "å–消ä¿ç•™ %s 的设置。\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr "选中 %s 以待彻底å¸è½½ã€‚\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr "选中 %s 以待å¸è½½ã€‚\n"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr "选中 %s 以待安装。\n"
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+"用法:apt-mark [选项] {auto|manual} 软件包1 [软件包2 ...]\n"
+"\n"
+"apt-mark å¯ä»¥å¯¹è½¯ä»¶åŒ…进行 手动/自动 安装标记,也å¯ä»¥ç”¨æ¥å¤„ç†è½¯ä»¶\n"
+"包的 dpkg(1) 选中状æ€ï¼Œä»¥åŠåˆ—出或过滤拥有æŸä¸ªæ ‡è®°çš„软件包。\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as automatically installed"
+msgstr "标记指定软件包为自动安装"
+
+#: cmdline/apt-mark.cc
+msgid "Mark the given packages as manually installed"
+msgstr "标记指定软件包为手动安装"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr "标记指定软件包为ä¿ç•™(held back)"
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr "å–消指定软件包的ä¿ç•™(held back)标记"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of automatically installed packages"
+msgstr "列出所有自动安装的软件包"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of manually installed packages"
+msgstr "列出所有手动安装的软件包"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr "列出设为ä¿ç•™çš„软件包"
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "未知的软件包记录ï¼"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+"用法: apt-sortpkgs [选项] 文件1 [文件2 ...]\n"
+"\n"
+"简易工具 apt-sortpkgs 用于排åºè½¯ä»¶åŒ…ä¿¡æ¯ã€‚\n"
+"它默认对二进制包信æ¯æŽ’åºï¼Œä½†æ˜¯ -s 选项å¯ä»¥å°†å…¶åˆ‡æ¢ä¸º\n"
+"对æºç åŒ…排åºã€‚\n"
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+"用法: apt [选项] 命令\n"
+"\n"
+"命令行软件包管ç†å™¨ apt æ供软件包æœç´¢ï¼Œç®¡ç†å’Œä¿¡æ¯æŸ¥è¯¢ç­‰åŠŸèƒ½ã€‚\n"
+"它æ供的功能与其他 APT 工具相åŒï¼ˆåƒ apt-get å’Œ apt-cache),\n"
+"但是默认情况下被设置得更适åˆäº¤äº’。\n"
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr "æ ¹æ®å称列出软件包"
+
+#: cmdline/apt.cc
+msgid "search in package descriptions"
+msgstr "æœç´¢è½¯ä»¶åŒ…æè¿°"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr "显示软件包细节"
+
+#. package stuff
+#: cmdline/apt.cc
+msgid "install packages"
+msgstr "安装软件包"
+
+#: cmdline/apt.cc
+msgid "remove packages"
+msgstr "移除软件包"
+
+#. system wide stuff
+#: cmdline/apt.cc
+msgid "update list of available packages"
+msgstr "æ›´æ–°å¯ç”¨è½¯ä»¶åŒ…列表"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr "通过 安装/å‡çº§ 软件æ¥æ›´æ–°ç³»ç»Ÿ"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr "通过 å¸è½½/安装/å‡çº§ æ¥æ›´æ–°ç³»ç»Ÿ"
+
+#. misc
+#: cmdline/apt.cc
+msgid "edit the source information file"
+msgstr "编辑软件æºä¿¡æ¯æ–‡ä»¶"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "错误的默认设置ï¼"
+
+#: dselect/install dselect/update
+msgid "Press [Enter] to continue."
+msgstr "按「回车键ã€ç»§ç»­ã€‚"
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "您想è¦åˆ é™¤ä¹‹å‰ä¸‹è½½çš„所有 .deb 文件å—?"
+
+#: dselect/install
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "在解压时å‘生了一些错误。已ç»å®‰è£…的软件包"
+
+#: dselect/install
+msgid "will be configured. This may result in duplicate errors"
+msgstr "将被é…置。这个æ“作å¯èƒ½ä¼šå¯¼è‡´å‡ºçŽ°é‡å¤çš„错误"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "或一些由于ä¾èµ–关系ä¸èƒ½æ»¡è¶³æ‰€äº§ç”Ÿçš„错误。这个问题ä¸å¤§ï¼Œåªæœ‰"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr "这个æ示之å‰çš„错误消æ¯æ‰å€¼å¾—您注æ„。请更正它们,然åŽå†æ¬¡æ‰§è¡Œ [I]nstall"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "正在åˆå¹¶å¯ç”¨ä¿¡æ¯"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "软件包的扩展列表太长"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "处ç†ç›®å½• %s 时出错"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "æºæ‰©å±•åˆ—表太长"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "将头写入到目录文件时出错"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "处ç†ç›®å½• %s 时出错"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"用法: apt-ftparchive [选项] 命令\n"
+"命令: packages 二进制软件包æœç´¢è·¯å¾„ [overridefile [路径å‰ç¼€]]\n"
+" sources æºä»£ç åŒ…æœç´¢è·¯å¾„ [overridefile [路径å‰ç¼€]]\n"
+" contents æœç´¢è·¯å¾„\n"
+" release æœç´¢è·¯å¾„\n"
+" generate é…置文件 [groups]\n"
+" clean é…置文件\n"
+"\n"
+"apt-ftparchive 被用æ¥ä¸º Debian 软件包生æˆç´¢å¼•æ–‡ä»¶ã€‚它能支æŒ\n"
+"多ç§ç”Ÿæˆç´¢å¼•çš„æ–¹å¼ï¼Œä»Žå…¨è‡ªåŠ¨çš„索引生æˆåˆ°åœ¨åŠŸèƒ½ä¸Šå–代 dpkg-scanpackages \n"
+"和 dpkg-scansources,都能游刃有余\n"
+"\n"
+"apt-ftparchive 能ä¾æ®ä¸€ä¸ªç”± .deb 文件构æˆçš„æ–‡ä»¶æ ‘ç”Ÿæˆ Package 文件。\n"
+"Package 文件里ä¸ä»…注有æ¯ä¸ªè½¯ä»¶åŒ…çš„ MD5 校验ç å’Œæ–‡ä»¶å¤§å°ï¼Œ\n"
+"还有软件包的所有控制字段的内容。该软件åŒæ—¶æ”¯æŒ override 文件,\n"
+"通过它å¯ä»¥å¼ºåˆ¶æŒ‡å®šè½¯ä»¶åŒ…的优先级åŠå…¶æ‰€å±žçš„软件类别。\n"
+"\n"
+"与上é¢ç±»ä¼¼ï¼Œapt-ftparchive 也能由 .dsc çš„æ–‡ä»¶æ ‘ç”Ÿæˆ Source 文件。\n"
+"å¯ä»¥é€šè¿‡ä½¿ç”¨ --source-override 选项æ¥æŒ‡å®šä¸€ä¸ª override 文件\n"
+"\n"
+"使用“packagesâ€å’Œâ€œsourceâ€å‘½ä»¤æ—¶ï¼Œå¿…须在文件树的根部执行本程åºã€‚\n"
+"二进制包的æœç´¢è·¯å¾„一定è¦æ˜¯é€’å½’æœç´¢çš„底层,而且 override 文件里\n"
+"应该注明 override 的标志。若指定了路径å‰ç¼€ï¼Œé‚£ä¹ˆå®ƒä¼šè¢«åŠ åˆ°æ–‡ä»¶åå‰é¢ã€‚\n"
+"下é¢æœ‰ä¸ªæ¥è‡ª Debian 文档的例å­ï¼š\n"
+" apt-ftparchive packages dists/potato/main/binary-i386 > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"选项:\n"
+" -h 本帮助文档\n"
+" --md5 ä½¿ä¹‹ç”Ÿæˆ MD5 校验和\n"
+" -s=? æºä»£ç åŒ… override 文件\n"
+" -q 输出精简信æ¯\n"
+" -d=? 指定å¯é€‰çš„缓存数æ®åº“\n"
+" -d=? 使用å¦ä¸€ä¸ªå¯é€‰çš„缓存数æ®åº“\n"
+" --no-delink å¼€å¯delink的调试模å¼\n"
+" --contents 使之生æˆæŽ§åˆ¶å†…容文件\n"
+" -c=? 读å–指定é…置文件\n"
+" -o=? 设置任æ„指定的é…置选项"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "没有任何选定项是匹é…çš„"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "软件包文件组“%sâ€ä¸­ç¼ºå°‘一些文件"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "æ•°æ®åº“被æŸå,该数æ®åº“文件的文件åå·²æ”¹æˆ %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "æ•°æ®åº“已过期,现å°è¯•è¿›è¡Œå‡çº§ %s"
+
+#: ftparchive/cachedb.cc
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"æ•°æ®åº“æ ¼å¼æ— æ•ˆã€‚如果您是从一个è€ç‰ˆæœ¬çš„ apt å‡çº§è€Œæ¥ï¼Œè¯·åˆ é™¤æ•°æ®åº“并é‡å»ºå®ƒã€‚"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "无法打开数æ®åº“文件 %s:%s"
+
+#: ftparchive/cachedb.cc
+msgid "Failed to read .dsc"
+msgstr "è¯»å– .dsc 文件失败"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "归档文件没有包å«æŽ§åˆ¶å­—段"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "无法获得游标"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - 分é…内存失败"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "未知的压缩算法“%sâ€"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "压缩åŽçš„输出文件 %s è¦æ±‚有一个压缩文件集åˆ"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "无法为å­è¿›ç¨‹åˆ›å»º IPC 管é“"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "无法 fork"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "压缩å­è¿›ç¨‹"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "内部错误,无法创建 %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "无法对å­è¿›ç¨‹æˆ–文件进行读写"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "在计算 MD5 校验和时无法读å–æ•°æ®"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "无法打开 %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "override 文件 %s 第 %llu (%s) 行的格å¼æœ‰è¯¯"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "æ— æ³•è¯»å– override 文件 %s"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "override 文件 %s 第 %llu 行的格å¼æœ‰è¯¯ #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "override 文件 %s 第 %llu 行的格å¼æœ‰è¯¯ #2"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "override 文件 %s 第 %llu 行的格å¼æœ‰è¯¯ #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "警告:无法读å–目录 %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "警告:无法获得 %s 的状æ€\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "错误:"
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "警告:"
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "错误:处ç†æ–‡ä»¶æ—¶å‡ºé”™ "
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "æ— æ³•è§£æž %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "无法é历目录树"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "无法打开 %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** 无法将 %s 链接到 %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " 达到了 DeLink çš„ä¸Šé™ %sB。\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "å½’æ¡£æ–‡ä»¶æ²¡æœ‰åŒ…å« package 字段"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s 中没有 override 项\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " %s 的维护者 %s å¹¶éž %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s 没有æºä»£ç çš„ override 项\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s 中没有二进制文件的 override 项\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "正在等待报头"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "该 HTTP æœåŠ¡å™¨å‘é€äº†ä¸€ä¸ªæ— æ•ˆçš„应答报头"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "错误的报头行"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "该 HTTP æœåŠ¡å™¨å‘é€äº†ä¸€ä¸ªæ— æ•ˆçš„ Content-Length 报头"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "该 HTTP æœåŠ¡å™¨å‘é€äº†ä¸€ä¸ªæ— æ•ˆçš„ Content-Range 报头"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "该 HTTP æœåŠ¡å™¨çš„ range 支æŒä¸æ­£å¸¸"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "无法识别的日期格å¼"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "错误的报头数æ®"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "连接失败"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr "由于æœåŠ¡å™¨æˆ–代ç†çš„å“应错误,因此自动ç¦æ­¢ %s。(å‚è§ man 5 apt.conf)"
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "内部错误"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "无法读å–盘片数æ®åº“ %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"请使用 apt-cdrom,通过它å¯ä»¥è®© APT 识别该盘片。apt-get upgdate ä¸èƒ½è¢«ç”¨æ¥åŠ å…¥"
+"新的盘片。"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "错误的 CD-ROM"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "无法å¸è½½æŒ‚载于 %s çš„ CD-ROM,它å¯èƒ½æ­£è¢«ä½¿ç”¨ã€‚"
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "找ä¸åˆ°ç›˜ç‰‡ã€‚"
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "无法找到文件"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr "é€šå‘ %s 域å的直接连接被设为默认阻止。"
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "正在连接 %s (%s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "无法为 %s 创建套接字(f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "无法å‘起与 %s:%s (%s) 的连接"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "无法连接上 %s:%s (%s),连接超时"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "失败"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "无法连接上 %s:%s (%s)。"
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "正在连接 %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "无法解æžåŸŸå“%sâ€"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "æš‚æ—¶ä¸èƒ½è§£æžåŸŸå“%sâ€"
+
+#: methods/connect.cc
+#, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "解æžâ€œ%s:%sâ€æ—¶å‡ºçŽ°ç³»ç»Ÿæ•…éšœ"
+
+#: methods/connect.cc
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "解æžâ€œ%s:%sâ€æ—¶ï¼Œå‡ºçŽ°äº†æŸäº›æ•…éšœ(%i - %s)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "ä¸èƒ½è¿žæŽ¥åˆ° %s:%s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "无法读å–状æ€"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "无效的 URI,本地 URI ä¸èƒ½ä»¥ // 开头"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "正在登录"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "无法获知对方主机å"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "无法获知本地主机å"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "æœåŠ¡å™¨æ‹’ç»äº†æˆ‘们的连接,å“应信æ¯ä¸ºï¼š%s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER 指令出错,æœåŠ¡å™¨å“应信æ¯ä¸ºï¼š%s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS 指令出错,æœåŠ¡å™¨å“应信æ¯ä¸ºï¼š%s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"您指定了代ç†æœåŠ¡å™¨ï¼Œä½†æ˜¯æ²¡æœ‰ç™»é™†è„šæœ¬ï¼ŒAcquire::ftp::ProxyLogin 设置为空。"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "登录脚本命令“%sâ€å‡ºé”™ï¼ŒæœåŠ¡å™¨å“应信æ¯ä¸ºï¼š%s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE 指令出错,æœåŠ¡å™¨å“应信æ¯ä¸ºï¼š%s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "连接超时"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "æœåŠ¡å™¨å…³é—­äº†è¿žæŽ¥"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "回应超出了缓存区大å°ã€‚"
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "å议有误"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "无法创建套接字"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "无法连接数æ®å¥—接字,连接超时"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "无法连接被动模å¼çš„套接字。"
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo 无法得到监å¬å¥—接字"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "无法绑定套接字"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "无法在套接字上监å¬"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "无法确定套接字的åå­—"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "无法å‘出 PORT 指令"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "无法识别的地å€æ— %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT 指令失败,æœåŠ¡å™¨å“应为:%s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "æ•°æ®å¥—接字连接超时"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "无法接å—连接"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "把文件加入哈希表时出错"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "无法获å–文件,æœåŠ¡å™¨å“应为“%sâ€"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "æ•°æ®å¥—接字超时"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "æ•°æ®ä¼ é€å‡ºé”™ï¼ŒæœåŠ¡å™¨å“应为“%sâ€"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "查询"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "无法调用 "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr "明文签署文件ä¸å¯ç”¨ï¼Œç»“果为‘%s’(您的网络接入需è¦è®¤è¯å—?)"
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "至少å‘现一个无效的签å。"
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr "内部错误:签å正确无误,但是无法确认密钥指纹?ï¼"
+
+#: methods/gpgv.cc
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr "无法è¿è¡Œ apt-key 以验è¯ç­¾å(您安装了 gnupg å—?)"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "è¿è¡Œ apt-key æ—¶å‘生未知错误"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr "密钥 %s 生æˆçš„æ•°å­—ç­¾å使用了弱安全性摘è¦ç®—法(%s)"
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "下列签å无效:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr "由于没有公钥,无法验è¯ä¸‹åˆ—ç­¾å:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "写入文件出错"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "从æœåŠ¡å™¨è¯»å–æ•°æ®æ—¶å‡ºé”™ï¼Œå¯¹æ–¹å…³é—­äº†è¿žæŽ¥"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "从æœåŠ¡å™¨è¯»å–æ•°æ®å‡ºé”™"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "写入文件出错"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "select 调用出错"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "连接超时"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "写输出文件时出错"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr "没有找到镜åƒæ–‡ä»¶ %s"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "无法读å–é•œåƒæ–‡ä»¶ %s"
+
+#: methods/mirror.cc
+#, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "在镜åƒæ–‡ä»¶ %s 中未找到所需æ¡ç›®"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr "[é•œåƒï¼š%s]"
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "无法设置文件的修改日期"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "连接被永久关闭"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr "空文件ä¸æ˜¯æœ‰æ•ˆå½’æ¡£"
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "ä¸èƒ½æ»¡è¶³ä¾èµ–关系。ä¸å¦¨è¯•ä¸€ä¸‹ --fix-broken 选项。"
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr "您å¯èƒ½éœ€è¦è¿è¡Œâ€œapt --fix-broken installâ€æ¥çº æ­£ä¸‹åˆ—错误:"
+
+#~ msgid "(not found)"
+#~ msgstr "(没有找到)"
+
+#~ msgid " Package pin: "
+#~ msgstr " 软件包é”:"
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "以下 ID 的密钥没有å¯ç”¨çš„公钥:\n"
+
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "仓库 “%s†数字签åä¸å®Œæ•´ã€‚"
+
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr ""
+#~ "由于 %3$s ä¸è¢«è½¯ä»¶åŒ… %4$s 所å…许,因此ä¸èƒ½æ»¡è¶³ %2$s 所è¦æ±‚çš„ %1$s ä¾èµ–关系"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr "由于无法找到软件包 %3$s ,因此ä¸èƒ½æ»¡è¶³ %2$s 所è¦æ±‚çš„ %1$s ä¾èµ–关系"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr "无法满足 %2$s 所è¦æ±‚ %1$s ä¾èµ–关系:已安装的软件包 %3$s 太新"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "软件包 %3$s 的候选版本ä¸èƒ½æ»¡è¶³ç‰ˆæœ¬è¦æ±‚,因此 %2$s 软件包的 %1$s ä¾èµ–无法满"
+#~ "足"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr "软件包 %3$s 没有å¯ç”¨çš„候选版本,因此 %2$s çš„ %1$s ä¾èµ–无法满足"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "无法满足 %2$s 所è¦æ±‚ %1$s ä¾èµ–关系:%3$s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "ä¸èƒ½æ»¡è¶³è½¯ä»¶åŒ… %s 所è¦æ±‚的构建ä¾èµ–关系。"
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "在使用 unlink 删除 %s 时出错"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "无法使用 unlink 删除 %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "用法: apt-cache [选项] 命令\n"
+#~ "    apt-cache [选项] show 软件包1 [软件包2 ...]\n"
+#~ "\n"
+#~ "apt-cache 是一个底层的工具,它å¯ä»¥åœ¨ APT çš„\n"
+#~ "二进制缓存文件中查询信æ¯\n"
+
+#~ msgid "Commands:"
+#~ msgstr "命令:"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "选项:\n"
+#~ " -h 本帮助文档。\n"
+#~ " -p=? 软件包的缓存。\n"
+#~ " -s=? æºä»£ç åŒ…的缓存。\n"
+#~ " -q 关闭进度显示。\n"
+#~ " -i 仅为 unmet 命令显示é‡è¦çš„ä¾èµ–关系。\n"
+#~ " -c=? 读å–指定é…置文件\n"
+#~ " -o=? 设置任æ„指定的é…置选项,例如 -o dir::cache=/tmp\n"
+#~ "è‹¥è¦äº†è§£æ›´å¤šä¿¡æ¯ï¼Œæ‚¨è¿˜å¯ä»¥æŸ¥é˜… apt-cache(8) å’Œ apt.conf(5) å‚考手册。\n"
+
+#~ msgid ""
+#~ "Usage: apt [options] command\n"
+#~ "\n"
+#~ "CLI for apt.\n"
+#~ msgstr ""
+#~ "用法: apt [选项] 命令\n"
+#~ "\n"
+#~ "apt 的命令行界é¢ã€‚\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -d CD-ROM mount point\n"
+#~ " -r Rename a recognized CD-ROM\n"
+#~ " -m No mounting\n"
+#~ " -f Fast mode, don't check package files\n"
+#~ " -a Thorough scan mode\n"
+#~ " --no-auto-detect Do not try to auto detect drive and mount point\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See fstab(5)\n"
+#~ msgstr ""
+#~ "选项:\n"
+#~ " -h 显示本帮助信æ¯\n"
+#~ " -q 日志型输出 - ä¸æ˜¾ç¤ºè¿›åº¦\n"
+#~ " -qq 安é™æ¨¡å¼ï¼Œåªè¾“出错误信æ¯\n"
+#~ " -s 无动作。åªè¯´æ˜Žå°†è¦åšä»€ä¹ˆã€‚\n"
+#~ " -f 读å–/写入 指定文件的 自动/手动 标记\n"
+#~ " -c=? 读å–指定的é…置文件\n"
+#~ " -o=? ä»»æ„设置一个é…置项,比如 -o dir::cache=/tmp\n"
+#~ "更多细节请å‚è§ the apt-mark(8) å’Œ apt.conf(5) çš„ man 手册。"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "选项:\n"
+#~ " -h 显示本帮助文本。\n"
+#~ " -c=? 读å–指定的é…置文件\n"
+#~ " -o=? 设置任æ„指定的é…置选项,例如:-o dir::cache=/tmp\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -q Loggable output - no progress indicator\n"
+#~ " -qq No output except for errors\n"
+#~ " -s No-act. Just prints what would be done.\n"
+#~ " -f read/write auto/manual marking in the given file\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-mark(8) and apt.conf(5) manual pages for more information."
+#~ msgstr ""
+#~ "选项:\n"
+#~ " -h 显示本帮助信æ¯\n"
+#~ " -q 日志型输出 - ä¸æ˜¾ç¤ºè¿›åº¦\n"
+#~ " -qq 安é™æ¨¡å¼ï¼Œåªè¾“出错误信æ¯\n"
+#~ " -s 无动作。åªè¯´æ˜Žå°†è¦åšä»€ä¹ˆã€‚\n"
+#~ " -f 读å–/写入 指定文件的 自动/手动 标记\n"
+#~ " -c=? 读å–指定的é…置文件\n"
+#~ " -o=? ä»»æ„设置一个é…置项,比如 -o dir::cache=/tmp\n"
+#~ "更多细节请å‚è§ the apt-mark(8) å’Œ apt.conf(5) çš„ man 手册。"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "用法: apt-sortpkgs [选项] 文件甲 [文件乙 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs 是对软件包索引文件内容进行排åºçš„简å•å·¥å…·ã€‚-s 选项\n"
+#~ "是用æ¥æŒ‡å‡ºåŽé¢å‚数所示文件是哪ç§æ–‡ä»¶ã€‚\n"
+#~ "\n"
+#~ "选项:\n"
+#~ " -h 本帮助文档\n"
+#~ " -s æ ¹æ®æºæ–‡ä»¶æŽ’åº\n"
+#~ " -c=? 读å–指定é…置文件\n"
+#~ " -o=? 设置任æ„指定的é…置选项,例如 -o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "å­è¿›ç¨‹å‡ºé”™"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "必须指定至少一对URL或者文件å"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "无法创建管é“"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "无法执行 gzip"
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s,用于 %s 体系结构,编译于 %s %s\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "无法创建 FILE*"
+
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "安装æºé…置文件“%2$sâ€ç¬¬ %1$u 节有错误(URI 解æž)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr "安装æºé…置文件“%2$sâ€ç¬¬ %1$lu 行有错误([选项] 无法解æž)"
+
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "安装æºé…置文件“%2$sâ€ç¬¬ %1$lu 行有错误([选项] 太短)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "安装æºé…置文件“%2$sâ€ç¬¬ %1$lu 行有错误([%3$s] ä¸æ˜¯ä¸€ä¸ªä»»åŠ¡)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "安装æºé…置文件“%2$sâ€ç¬¬ %1$lu 行有错误([%3$s] 没有键)"
+
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr "安装æºé…置文件“%2$sâ€ç¬¬ %1$lu 行有错误([%3$s] é”® %4$s 没有值)"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "安装æºé…置文件“%2$sâ€ç¬¬ %1$lu 行的格å¼æœ‰è¯¯(URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "安装æºé…置文件“%2$sâ€ç¬¬ %1$lu 行有错误(å‘行版)"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "安装æºé…置文件“%2$sâ€ç¬¬ %1$lu 行有错误(URI 解æž)"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "安装æºé…置文件“%2$sâ€ç¬¬ %1$lu 行有错误(独立å‘行版)"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "安装æºé…置文件“%2$sâ€ç¬¬ %1$lu 行有错误(å‘行版解æž)"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "当处ç†æ–‡ä»¶ä¾èµ–关系时,无法找到软件包 %s %s"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "无法获å–æºè½¯ä»¶åŒ…列表 %s 的状æ€"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "正在收集文件所æ供的软件包"
+
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "在 Release 文件中找ä¸åˆ° %s 的哈希值"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "软件æ供者数æ®å—内 %s 没有包å«æŒ‡çº¹ä¿¡æ¯"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "ä¾èµ–关系版本å所å ç©ºé—´å…±è®¡ï¼š"
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "您在 %s 上没有足够的å¯ç”¨ç©ºé—´"
+
+#~ msgid "Done"
+#~ msgstr "完æˆ"
+
+#~ msgid "No keyring installed in %s."
+#~ msgstr "%s 中没有安装密钥环。"
+
+#~ msgid "Is stdout a terminal?"
+#~ msgstr "stdout 是终端å—?"
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "内部错误,全部å‡çº§å·¥å…·å事了"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„ DEB 软件包。"
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "现把 %s 作为了 CD-ROM 的挂载点\n"
+#~ "正在挂载 CD-ROM\n"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap and with file operation usage - the patch "
+#~ "seems to be corrupt."
+#~ msgstr "æ— æ³•è¿žåŒ mmap 和文件æ“作用途为 %s æ‰“è¡¥ä¸ - è¡¥ä¸å¯èƒ½å·²æŸå。"
+
+#~ msgid ""
+#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch "
+#~ "seems to be corrupt."
+#~ msgstr "æ— æ³•è¿žåŒ mmap 为 %s 打补ä¸(但没有 mmap 的错误) - è¡¥ä¸å¯èƒ½å·²æŸå。"
+
+#~ msgid "Ignore unavailable target release '%s' of package '%s'"
+#~ msgstr "忽略ä¸å¯ç”¨çš„软件包 %2$s 的目标å‘行版本 %1$s"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr "è¿™ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„ DEB 包文件,其包内é—æ¼äº†â€œ%sâ€ï¼Œâ€œ%sâ€æˆ–者“%sâ€"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5 校验和ä¸ç¬¦"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr ""
+#~ "我无法找到对应 %s 软件包的文件。在这ç§æƒ…况下您å¯èƒ½éœ€è¦æ‰‹åŠ¨ä¿®æ­£è¿™ä¸ªè½¯ä»¶åŒ…。"
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr "无法写入日志。 openpty() 失败(没有挂载 /dev/pts ?)\n"
+
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "跳过ä¸å­˜åœ¨çš„文件 %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "无法å¸è½½ %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "无法创建 %s "
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "æ— æ³•è¯»å– %sinfo 的状æ€"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr "info å’Œ temp 目录è¦æ±‚处于åŒä¸€æ–‡ä»¶ç³»ç»Ÿä¹‹ä¸‹"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "无法切æ¢å·¥ä½œç›®å½•åˆ° admin 目录 %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "在获å–软件包å字时出现内部错误"
+
+#~ msgid "Reading file listing"
+#~ msgstr "正在读å–文件列表"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "无法打开列表文件“%sinfo/%sâ€ã€‚如果您ä¸èƒ½æ¢å¤è¿™ä¸ªæ–‡ä»¶ï¼Œé‚£ä¹ˆå°±æ¸…空该文件并马"
+#~ "上é‡æ–°å®‰è£…相åŒç‰ˆæœ¬çš„这个软件包ï¼"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "无法读å–列表文件 %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "获得一个节点时出现内部错误"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "无法打开转移é…置文件 %sdiversions"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "该转移é…置文件被æŸå了"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "转移é…置文件中有一行是无效的:%s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "添加转移é…置时出现内部错误"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "必须首先åˆå§‹åŒ–软件包缓存"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "无法找到æŸä¸ªè½¯ä»¶åŒ…:包头,于å移ä½ç½® %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "状æ€æ–‡ä»¶ä¸­æœ‰é”™è¯¯çš„ ConfFile 段。ä½äºŽå移ä½ç½® %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "è§£æž MD5 出错。文件内å移é‡ä¸º %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "无法切æ¢å·¥ä½œç›®å½•åˆ° %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "无法在归档文件中找到有效的主控文件"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "无法为 %s å¼€å¯ç®¡é“"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "从 %s 进程读å–æ•°æ®å‡ºé”™"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "接收到一行报头行,它的长度超过了 %u 个字符"
+
+#~ msgid "Note: This is done automatic and on purpose by dpkg."
+#~ msgstr "注æ„:这是自动被 dpkg 有æ„完æˆçš„。"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "override 文件 %s 第 %lu 行的格å¼æœ‰è¯¯ #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "override 文件 %s 第 %lu 行的格å¼æœ‰è¯¯ #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "override 文件 %s 第 %lu 行的格å¼æœ‰è¯¯ #3"
+
+#~ msgid "decompressor"
+#~ msgstr "解压程åº"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "读å–文件出错,还剩 %lu 字节没有读出"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "写入文件出错,还剩 %lu 字节没有ä¿å­˜"
+
+#~ msgid ""
+#~ "Could not perform immediate configuration on already unpacked '%s'. "
+#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details."
+#~ msgstr ""
+#~ "无法立å³å¯¹å·²ç»è§£åŽ‹çš„ %s 进行é…置。请查看 man 5 apt.conf 中的 APT::"
+#~ "Immediate-Configure。"
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "å¤„ç† %s (NewPackage)时出错"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "å¤„ç† %s (UsePackage1)时出错"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "å¤„ç† %s (NewFileDesc1)时出错"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "å¤„ç† %s (UsePackage2)时出错"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "å¤„ç† %s (NewFileVer1)时出错"
+
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "å¤„ç† %s (NewVersion%d)时出错"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "å¤„ç† %s (UsePackage3)时出错"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "å¤„ç† %s (NewFileDesc2)时出错"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "å¤„ç† %s (FindPkg)时出错"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "å¤„ç† %s (CollectFileProvides)时出错"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "内部错误,无法定ä½åŒ…内文件"
+
+#~ msgid "Internal error, group '%s' has no installable pseudo package"
+#~ msgstr "内部错误,组 %s 没有å¯å®‰è£…çš„ pseudo 软件包"
+
+#~ msgid "Release file expired, ignoring %s (invalid since %s)"
+#~ msgstr "Release 文件已过期,忽略 %s (从 %s 起无效)"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr "错误:Acquire::gpgv::Options çš„å‚数列表太长。结æŸè¿è¡Œã€‚"
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "å¤„ç† %s (NewVersion2)时出错"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "在æºåˆ—表中 %2$s 中第 %1$u 行的格å¼æœ‰è¯¯(供应商 ID)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "无法访问密钥环:“%sâ€"
+
+#~ msgid "Could not patch file"
+#~ msgstr "无法打开补ä¸æ–‡ä»¶"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "No source package '%s' picking '%s' instead\n"
+#~ msgstr "没有æºä»£ç åŒ…“%sâ€ï¼Œä½¿ç”¨â€œ%sâ€ä»£æ›¿\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "å¯åŠ¨å¯¹ %s 的处ç†"
+
+#~ msgid "Dynamic MMap ran out of room"
+#~ msgstr "动æ€å†…存映射(Dynamic MMap)空间ä¸è¶³"
+
+#~ msgid ""
+#~ "Since you only requested a single operation it is extremely likely that\n"
+#~ "the package is simply not installable and a bug report against\n"
+#~ "that package should be filed."
+#~ msgstr ""
+#~ "您仅è¦æ±‚对å•ä¸€è½¯ä»¶åŒ…进行æ“作,这æžæœ‰å¯èƒ½æ˜¯å› ä¸ºè¯¥è½¯ä»¶åŒ…安装ä¸ä¸Šï¼ŒåŒæ—¶ï¼Œ\n"
+#~ "您最好æ交一个针对这个软件包的故障报告。"
+
+#~ msgid "Line %d too long (max %lu)"
+#~ msgstr "第 %d 行太长了(长度é™åˆ¶ä¸º %lu)。"
+
+#~ msgid "After unpacking %sB of additional disk space will be used.\n"
+#~ msgstr "解压缩åŽä¼šæ¶ˆè€—掉 %sB çš„é¢å¤–空间。\n"
+
+#~ msgid "After unpacking %sB disk space will be freed.\n"
+#~ msgstr "解压缩åŽå°†ä¼šç©ºå‡º %sB 的空间。\n"
+
+#~ msgid "Line %d too long (max %d)"
+#~ msgstr "第 %d 行太长了(长度é™åˆ¶ä¸º %d)"
+
+#~ msgid "Error occured while processing %s (NewFileDesc1)"
+#~ msgstr "å¤„ç† %s (NewFileDesc1)时出错"
+
+#~ msgid "Error occured while processing %s (NewFileDesc2)"
+#~ msgstr "å¤„ç† %s (NewFileDesc2)时出错"
+
+#~ msgid "Stored label: %s \n"
+#~ msgstr "归档文件标签:%s \n"
+
+#~ msgid ""
+#~ "Found %i package indexes, %i source indexes, %i translation indexes and "
+#~ "%i signatures\n"
+#~ msgstr ""
+#~ "找到了 %i 个软件包索引ã€%i 个æºä»£ç åŒ…索引,%i 个翻译索引和 %i 个数字签å\n"
+
+#~ msgid "openpty failed\n"
+#~ msgstr "openpty 失败\n"
+
+#~ msgid "File date has changed %s"
+#~ msgstr "文件 %s 的时间已被改动"
+
+#~ msgid "Reading file list"
+#~ msgstr "正在读å–文件列表"
+
+#~ msgid "Could not execute "
+#~ msgstr "未能执行 "
+
+#~ msgid "Preparing for remove with config %s"
+#~ msgstr "正在准备连åŒé…置文件的删除 %s"
+
+#~ msgid "Removed with config %s"
+#~ msgstr "è¿žåŒé…置文件一åŒåˆ é™¤ %s "
+
+#~ msgid "Unknown vendor ID '%s' in line %u of source list %s"
+#~ msgstr ""
+#~ "在æºåˆ—表 %3$s 的第 %2$u è¡Œå‘现了无法识别的软件æ供商 ID (vendor ID) “%1$sâ€"
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100644
index 000000000..d9ee6b25a
--- /dev/null
+++ b/po/zh_TW.po
@@ -0,0 +1,4101 @@
+# 先進包è£å·¥å…· (apt) ç¹é«”中文訊æ¯
+# Translators: 黃æ€æ–‡ <steven.huang@upcursor.org>
+# Asho Yeh <asho@debian.org.tw>
+# Kanru Chen <kanru.96@stu.csie.ncnu.edu.tw>
+# Tetralet <tetralet@gmail.com>
+# Zhou Mo <cdluminate@gmail.com> 2016 # Simplified Chinese Translator, only make trivial fixes.
+#
+# $Id: zh_TW.po,v 1.11 2004/04/30 04:50:38 mdz Exp $
+msgid ""
+msgstr ""
+"Project-Id-Version: apt 1.2.X\n"
+"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
+"POT-Creation-Date: 2017-02-06 14:41+0100\n"
+"PO-Revision-Date: 2009-01-28 10:41+0800\n"
+"Last-Translator: Tetralet <tetralet@gmail.com>\n"
+"Language-Team: Debian-user in Chinese [Big5] <debian-chinese-big5@lists."
+"debian.org>\n"
+"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive signature"
+msgstr "無效的套件庫簽章"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Error reading archive member header"
+msgstr "讀å–套件檔的æˆå“¡æ¨™é ­è¨Šæ¯æ™‚發生錯誤"
+
+#: apt-inst/contrib/arfile.cc
+#, fuzzy, c-format
+msgid "Invalid archive member header %s"
+msgstr "無效的套件檔æˆå“¡æ¨™é ­"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Invalid archive member header"
+msgstr "無效的套件檔æˆå“¡æ¨™é ­"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Archive is too short"
+msgstr "套件檔éŽçŸ­"
+
+#: apt-inst/contrib/arfile.cc
+msgid "Failed to read the archive headers"
+msgstr "讀å–套件檔標頭失敗"
+
+#: apt-inst/contrib/extracttar.cc
+#, fuzzy, c-format
+msgid "Cannot find a configured compressor for '%s'"
+msgstr "無法找到套件 %s"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Corrupted archive"
+msgstr "æ毀的套件檔"
+
+#: apt-inst/contrib/extracttar.cc
+msgid "Tar checksum failed, archive corrupted"
+msgstr "Tar checksum 失敗,套件檔已æ毀"
+
+#: apt-inst/contrib/extracttar.cc
+#, c-format
+msgid "Unknown TAR header type %u, member %s"
+msgstr "未知的 TAR 標頭類型 %u,æˆå“¡ %s"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "This is not a valid DEB archive, missing '%s' member"
+msgstr "這是個ä¸æ­£ç¢ºçš„ DEB 套件檔,沒有 '%s' æˆå“¡"
+
+#: apt-inst/deb/debfile.cc
+#, c-format
+msgid "Internal error, could not locate member %s"
+msgstr "內部錯誤,找ä¸æ‰¾åˆ°æˆå“¡ %s"
+
+#: apt-inst/deb/debfile.cc
+msgid "Unparsable control file"
+msgstr "無法分æžçš„ control 檔"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to write file %s"
+msgstr "寫入檔案 %s 失敗"
+
+#: apt-inst/dirstream.cc
+#, c-format
+msgid "Failed to close file %s"
+msgstr "關閉檔案 %s 失敗"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The path %s is too long"
+msgstr "路徑 %s éŽé•·"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unpacking %s more than once"
+msgstr "解開 %s 超éŽä¸€æ¬¡"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is diverted"
+msgstr "路徑 %s 已被抽æ›"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The package is trying to write to the diversion target %s/%s"
+msgstr "此套件試圖寫至抽æ›å¾Œçš„目標 %s/%s"
+
+#: apt-inst/extract.cc
+msgid "The diversion path is too long"
+msgstr "è¦é€²è¡ŒæŠ½æ›çš„路徑éŽé•·"
+
+#: apt-inst/extract.cc apt-pkg/acquire-item.cc ftparchive/cachedb.cc
+#: methods/rred.cc
+#, c-format
+msgid "Failed to stat %s"
+msgstr "無法å–å¾— %s 的狀態"
+
+#: apt-inst/extract.cc ftparchive/multicompress.cc
+#, c-format
+msgid "Failed to rename %s to %s"
+msgstr "無法將 %s æ›´å為 %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "The directory %s is being replaced by a non-directory"
+msgstr "目錄 %s 已經被éžç›®éŒ„的檔案所å–代"
+
+#: apt-inst/extract.cc
+msgid "Failed to locate node in its hash bucket"
+msgstr "在雜湊表中找ä¸åˆ°ç¯€é»ž"
+
+#: apt-inst/extract.cc
+msgid "The path is too long"
+msgstr "路徑éŽé•·"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Overwrite package match with no version for %s"
+msgstr "以無版本的 %s 覆寫原始套件"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "File %s/%s overwrites the one in the package %s"
+msgstr "檔案 %s/%s 覆寫了套件 %s 中的相åŒæª”案"
+
+#. Only warn if there are no sources.list.d.
+#. Only warn if there is no sources.list file.
+#: apt-inst/extract.cc apt-pkg/acquire.cc apt-pkg/clean.cc
+#: apt-pkg/contrib/cdromutl.cc apt-pkg/contrib/fileutl.cc apt-pkg/deb/dpkgpm.cc
+#: apt-pkg/init.cc apt-pkg/policy.cc apt-pkg/sourcelist.cc methods/mirror.cc
+#, c-format
+msgid "Unable to read %s"
+msgstr "ç„¡æ³•è®€å– %s"
+
+#: apt-inst/extract.cc
+#, c-format
+msgid "Unable to stat %s"
+msgstr "無法å–å¾— %s 的狀態"
+
+#: apt-inst/filelist.cc
+msgid "DropNode called on still linked node"
+msgstr "DropNode 在還有連çµçµé»žæ™‚被呼å«"
+
+#: apt-inst/filelist.cc
+msgid "Failed to locate the hash element!"
+msgstr "找ä¸åˆ°é›œæ¹Šå…ƒä»¶ï¼"
+
+#: apt-inst/filelist.cc
+msgid "Failed to allocate diversion"
+msgstr "在é…置抽æ›è³‡è¨Šæ™‚失敗"
+
+#: apt-inst/filelist.cc
+msgid "Internal error in AddDiversion"
+msgstr "在 AddDiversion 發生了內部錯誤"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
+msgstr "試圖改寫抽æ›è³‡è¨Šï¼Œ%s -> %s å’Œ %s/%s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Double add of diversion %s -> %s"
+msgstr "é‡è¤‡åŠ å…¥æŠ½æ›è³‡è¨Š %s -> %s"
+
+#: apt-inst/filelist.cc
+#, c-format
+msgid "Duplicate conf file %s/%s"
+msgstr "é‡è¤‡çš„設定檔 %s/%s"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Updating from such a repository can't be done securely, and is therefore "
+"disabled by default."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"Data from such a repository can't be authenticated and is therefore "
+"potentially dangerous to use."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"See apt-secure(8) manpage for repository creation and user configuration "
+"details."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is no longer signed."
+msgstr "路徑 %s 已被抽æ›"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does no longer have a Release file."
+msgstr "路徑 %s 已被抽æ›"
+
+#: apt-pkg/acquire-item.cc
+msgid ""
+"This is normally not allowed, but the option Acquire::"
+"AllowDowngradeToInsecureRepositories was given to override it."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' is not signed."
+msgstr "路徑 %s 已被抽æ›"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' does not have a Release file."
+msgstr "路徑 %s 已被抽æ›"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "The repository '%s' provides only weak security information."
+msgstr "路徑 %s 已被抽æ›"
+
+#: apt-pkg/acquire-item.cc ftparchive/writer.cc
+#, c-format
+msgid "Failed to readlink %s"
+msgstr "無法讀å–é€£çµ %s"
+
+#: apt-pkg/acquire-item.cc
+msgid "Hash Sum mismatch"
+msgstr "Hash Sum ä¸ç¬¦"
+
+#: apt-pkg/acquire-item.cc
+msgid "Insufficient information available to perform this download securely"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "rename failed, %s (%s -> %s)."
+msgstr "無法é‡æ–°å‘½å,%s (%s -> %s)。"
+
+#: apt-pkg/acquire-item.cc
+msgid "Size mismatch"
+msgstr "大å°ä¸ç¬¦"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Invalid file format"
+msgstr "無效的æ“作 %s"
+
+#: apt-pkg/acquire-item.cc
+#, fuzzy
+msgid "Signature error"
+msgstr "寫入錯誤"
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: apt-pkg/acquire-item.cc methods/gpgv.cc
+#, c-format
+msgid ""
+"Clearsigned file isn't valid, got '%s' (does the network require "
+"authentication?)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"An error occurred during the signature verification. The repository is not "
+"updated and the previous index files will be used. GPG error: %s: %s"
+msgstr ""
+
+#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "GPG error: %s: %s"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' doesn't support "
+"architecture '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
+"or malformed file)"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Skipping acquire of configured file '%s' as repository '%s' provides only "
+"weak security information for it"
+msgstr ""
+
+#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is
+#. the time since then the file is invalid - formatted in the same way as in
+#. the download progress display (e.g. 7d 3h 42min 1s)
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"Release file for %s is expired (invalid since %s). Updates for this "
+"repository will not be applied."
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Conflicting distribution: %s (expected %s but got %s)"
+msgstr "發行版本è¡çªï¼š%s(應當是 %s 但å»å¾—到 %s)"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
+msgstr ""
+"找ä¸åˆ° %s 套件的æŸå€‹æª”案。這æ„味著您å¯èƒ½è¦æ‰‹å‹•ä¿®å¾©é€™å€‹å¥—件。(因為找ä¸åˆ°å¹³"
+"å°ï¼‰"
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid "Can't find a source to download version '%s' of '%s'"
+msgstr ""
+
+#: apt-pkg/acquire-item.cc
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
+msgstr "這個套件的索引檔æ壞了。沒有套件 %s çš„ Filename: 欄ä½ã€‚"
+
+#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1
+#: apt-pkg/acquire-item.cc
+#, fuzzy, c-format
+msgid "Changelog unavailable for %s=%s"
+msgstr "正和 %s (%s) 連線"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method '%s' is explicitly disabled via configuration."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc methods/connect.cc
+#, c-format
+msgid "If you meant to use Tor remember to use %s instead of %s."
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "The method driver %s could not be found."
+msgstr "找ä¸åˆ°å®‰è£æ–¹å¼çš„é©…å‹•ç¨‹å¼ %s。"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid "Is the package %s installed?"
+msgstr "請檢查是å¦å·²å®‰è£äº† 'dpkg-dev' 套件。\n"
+
+#: apt-pkg/acquire-worker.cc
+#, c-format
+msgid "Method %s did not start correctly"
+msgstr "安è£æ–¹å¼ %s 沒有正確啟動"
+
+#: apt-pkg/acquire-worker.cc
+#, fuzzy, c-format
+msgid ""
+"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]."
+msgstr "請把標籤為 '%s' 的光碟放入 '%s' è£ç½®ä¸­ï¼Œç„¶å¾ŒæŒ‰ä¸‹ [Enter] éµã€‚"
+
+#: apt-pkg/acquire.cc apt-pkg/cdrom.cc
+#, fuzzy, c-format
+msgid "List directory %spartial is missing."
+msgstr "找ä¸åˆ°æ¸…單目錄 %spartial。"
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Archives directory %spartial is missing."
+msgstr "找ä¸åˆ°å¥—件檔目錄 %spartial。"
+
+#: apt-pkg/acquire.cc
+#, fuzzy, c-format
+msgid "Unable to lock directory %s"
+msgstr "無法鎖定列表目錄"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "No sandbox user '%s' on the system, can not drop privileges"
+msgstr ""
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid ""
+"Download is performed unsandboxed as root as file '%s' couldn't be accessed "
+"by user '%s'."
+msgstr ""
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc
+#, fuzzy, c-format
+msgid "Clean of %s is not supported"
+msgstr "ä¸è¢«æ”¯æ´çš„索引檔類型 '%s'"
+
+#: apt-pkg/acquire.cc apt-pkg/clean.cc apt-pkg/contrib/cdromutl.cc
+#: methods/mirror.cc
+#, c-format
+msgid "Unable to change to %s"
+msgstr "無法切æ›è‡³ %s"
+
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "正在å–得檔案 %li/%li(還有 %s)"
+
+#: apt-pkg/acquire.cc
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "正在å–得檔案 %li/%li"
+
+#: apt-pkg/algorithms.cc
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr "套件 %s 需è¦é‡æ–°å®‰è£ï¼Œä½†æ‰¾ä¸åˆ°å®ƒçš„套件檔。"
+
+#: apt-pkg/algorithms.cc
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
+msgstr ""
+"錯誤,pkgProblemResolver::Resolve 的建立中斷了,這å¯èƒ½è‚‡å› æ–¼ä¿ç•™ (hold) 套"
+"件。"
+
+#: apt-pkg/algorithms.cc
+msgid "Unable to correct problems, you have held broken packages."
+msgstr "無法修正å•é¡Œï¼Œæ‚¨ä¿ç•™ (hold) 了æ毀的套件。"
+
+#: apt-pkg/cachefile.cc
+msgid "The package lists or status file could not be parsed or opened."
+msgstr "無法分æžæˆ–開啟套件清單或狀æ³æª”。"
+
+#: apt-pkg/cachefile.cc
+msgid "You may want to run apt-get update to correct these problems"
+msgstr "您也許得執行 apt-get update 以修正這些å•é¡Œ"
+
+#: apt-pkg/cachefile.cc
+msgid "The list of sources could not be read."
+msgstr "無法讀å–來æºåˆ—表。"
+
+#: apt-pkg/cachefilter.cc apt-private/private-output.cc
+#, c-format
+msgid "Regex compilation error - %s"
+msgstr "編譯正è¦è¡¨ç¤ºå¼æ™‚發生錯誤 - %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Release '%s' for '%s' was not found"
+msgstr "找ä¸åˆ° '%2$s' çš„ '%1$s' 發行版"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Version '%s' for '%s' was not found"
+msgstr "找ä¸åˆ° '%s' 版的 '%s'"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find task '%s'"
+msgstr "無法找到主題 %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by regex '%s'"
+msgstr "無法找到套件 %s"
+
+#: apt-pkg/cacheset.cc
+#, fuzzy, c-format
+msgid "Couldn't find any package by glob '%s'"
+msgstr "無法找到套件 %s"
+
+#: apt-pkg/cacheset.cc apt-private/private-show.cc
+#, c-format
+msgid "Unable to locate package %s"
+msgstr "找ä¸åˆ°å¥—件 %s"
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select versions from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select newest version from package '%s' as it is purely virtual"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select candidate version from package %s as it has no candidate"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid "Can't select installed version from package %s as it is not installed"
+msgstr ""
+
+#: apt-pkg/cacheset.cc
+#, c-format
+msgid ""
+"Can't select installed nor candidate version from package '%s' as it has "
+"neither of them"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Line %u too long in source list %s."
+msgstr "來æºåˆ—表 %2$s 中的第 %1$u 行太長。"
+
+#: apt-pkg/cdrom.cc
+msgid "Unmounting CD-ROM...\n"
+msgstr "正在å¸è¼‰å…‰ç¢Ÿæ©Ÿ...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Using CD-ROM mount point %s\n"
+msgstr "使用光碟機掛載點 %s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Waiting for disc...\n"
+msgstr "正在等待碟片...\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Mounting CD-ROM...\n"
+msgstr "正在掛載光碟機... \n"
+
+#: apt-pkg/cdrom.cc
+msgid "Identifying... "
+msgstr "正在識別..."
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Stored label: %s\n"
+msgstr "ä¿å­˜æ¨™ç±¤ï¼š%s\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Scanning disc for index files...\n"
+msgstr "正在掃æ碟片中的索引檔...\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
+"%zu signatures\n"
+msgstr "找到了 %zu 個套件索引,%zu 個原始碼索引,%zu å€‹ç¿»è­¯ç´¢å¼•åŠ %zu 個簽章\n"
+
+#: apt-pkg/cdrom.cc
+msgid ""
+"Unable to locate any package files, perhaps this is not a Debian Disc or the "
+"wrong architecture?"
+msgstr ""
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid "Found label '%s'\n"
+msgstr "找到標籤 '%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "That is not a valid name, try again.\n"
+msgstr "這並ä¸æ˜¯æ­£ç¢ºçš„å稱,請é‡è©¦ã€‚\n"
+
+#: apt-pkg/cdrom.cc
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
+msgstr ""
+"這個碟片å為:\n"
+"'%s'\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Copying package lists..."
+msgstr "正在複製套件清單..."
+
+#: apt-pkg/cdrom.cc
+msgid "Writing new source list\n"
+msgstr "正在寫入新的來æºåˆ—表\n"
+
+#: apt-pkg/cdrom.cc
+msgid "Source list entries for this disc are:\n"
+msgstr "該碟片的來æºåˆ—表項目為:\n"
+
+#: apt-pkg/clean.cc
+#, c-format
+msgid "Unable to stat %s."
+msgstr "無法å–å¾— %s 的狀態。"
+
+#: apt-pkg/contrib/cdromutl.cc
+#, c-format
+msgid "Unable to stat the mount point %s"
+msgstr "無法å–得掛載點 %s 的狀態"
+
+#: apt-pkg/contrib/cdromutl.cc
+msgid "Failed to stat the cdrom"
+msgstr "無法å–å¾— CD-ROM 的狀態"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option '%c' [from %s] is not understood in combination with the "
+"other options."
+msgstr "未知的命令列é¸é … '%c' [來自 %s]。"
+
+#: apt-pkg/contrib/cmndline.cc
+#, fuzzy, c-format
+msgid ""
+"Command line option %s is not understood in combination with the other "
+"options"
+msgstr "無法ç†è§£çš„命令列é¸é … %s"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Command line option %s is not boolean"
+msgstr "命令列é¸é … %s ä¸æ˜¯ boolean 值"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an argument."
+msgstr "需替é¸é … %s 指定åƒæ•¸ã€‚"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
+msgstr "é¸é … %s:在指定設定項目時應該有 =<val>。"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
+msgstr "é¸é … %s çš„åƒæ•¸æ‡‰è©²æ˜¯æ•¸å­—,而ä¸æ˜¯ '%s'"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Option '%s' is too long"
+msgstr "é¸é … %s 太長"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Sense %s is not understood, try true or false."
+msgstr "åµæ¸¬å™¨ %s 無法ç†è§£ï¼Œè©¦è©¦ true 或 false。"
+
+#: apt-pkg/contrib/cmndline.cc
+#, c-format
+msgid "Invalid operation %s"
+msgstr "無效的æ“作 %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
+msgstr "無法辨識的縮寫類型:'%c'"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Opening configuration file %s"
+msgstr "開啟設定檔 %s"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
+msgstr "語法錯誤 %s:%u:å€å¡Šé–‹é ­æ²’有å稱。"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
+msgstr "語法錯誤 %s:%u:標籤格å¼éŒ¯èª¤"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
+msgstr "語法錯誤 %s:%u:數值後有多餘的垃圾"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgstr "語法錯誤 %s:%u:指令åªèƒ½æ–¼æœ€é«˜å±¤ç´šåŸ·è¡Œ"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
+msgstr "語法錯誤 %s:%u: 太多巢狀引入檔"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
+msgstr "語法錯誤 %s:%u:從此引入"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgstr "語法錯誤 %s:%u:ä¸æ”¯æ´çš„指令 '%s'"
+
+#: apt-pkg/contrib/configuration.cc
+#, fuzzy, c-format
+msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
+msgstr "語法錯誤 %s:%u:指令åªèƒ½æ–¼æœ€é«˜å±¤ç´šåŸ·è¡Œ"
+
+#: apt-pkg/contrib/configuration.cc
+#, c-format
+msgid "Syntax error %s:%u: Extra junk at end of file"
+msgstr "語法錯誤 %s:%u:在檔案çµå°¾æœ‰å¤šé¤˜çš„垃圾"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem unlinking the file %s"
+msgstr "在刪除檔案時發生å•é¡Œ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for read only lock file %s"
+msgstr "ä¸åœ¨å”¯è®€æª”案 %s 上使用檔案鎖定"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open lock file %s"
+msgstr "無法開啟鎖定檔 %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
+msgstr "ä¸åœ¨ä»¥ nfs 掛載的檔案 %s 上使用檔案鎖定"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not get lock %s"
+msgstr "無法將 %s 鎖定"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "List of files can't be created as '%s' is not a directory"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid ""
+"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc
+#: cmdline/apt-dump-solver.cc
+#, c-format
+msgid "Waited for %s but it wasn't there"
+msgstr "等待 %s 但是它並ä¸å­˜åœ¨"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Sub-process %s received a segmentation fault."
+msgstr "å­ç¨‹åº %s 收到一個記憶體錯誤。"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Sub-process %s received signal %u."
+msgstr "å­ç¨‹åº %s 收到一個記憶體錯誤。"
+
+#. we forward the statuscode, so don't generate a message on the fd in this case
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
+msgstr "å­ç¨‹åº %s 傳回錯誤碼 (%u)"
+
+#: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
+msgstr "å­ç¨‹åº %s ä¸é æœŸå¾—çµæŸ"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Read error"
+msgstr "讀å–錯誤"
+
+#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc
+msgid "Write error"
+msgstr "寫入錯誤"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the gzip file %s"
+msgstr "在關閉檔案時發生å•é¡Œ"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Unexpected end of file"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to create subprocess IPC"
+msgstr "無法建立å­ç¨‹åº IPC"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Failed to exec compressor "
+msgstr "無法執行壓縮程å¼"
+
+#: apt-pkg/contrib/fileutl.cc
+#, c-format
+msgid "Could not open file %s"
+msgstr "無法開啟檔案 %s"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Could not open file descriptor %d"
+msgstr "無法開啟管線給 %s 使用"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "read, still have %llu to read but none left"
+msgstr "讀å–,ä»æœ‰ %lu 未讀但已無空間"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "write, still have %llu to write but couldn't"
+msgstr "寫入,ä»æœ‰ %lu 待寫入但已沒辨法"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem closing the file %s"
+msgstr "在關閉檔案時發生å•é¡Œ"
+
+#: apt-pkg/contrib/fileutl.cc
+#, fuzzy, c-format
+msgid "Problem renaming the file %s to %s"
+msgstr "在åŒæ­¥æª”案時發生å•é¡Œ"
+
+#: apt-pkg/contrib/fileutl.cc
+msgid "Problem syncing the file"
+msgstr "在åŒæ­¥æª”案時發生å•é¡Œ"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, fuzzy, c-format
+msgid "Unable to mkstemp %s"
+msgstr "無法å–å¾— %s 的狀態"
+
+#: apt-pkg/contrib/fileutl.cc cmdline/apt-extracttemplates.cc
+#, c-format
+msgid "Unable to write to %s"
+msgstr "無法寫入 %s"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Can't mmap an empty file"
+msgstr "ä¸èƒ½ mmap 空白檔案"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't make mmap of %llu bytes"
+msgstr "無法 mmap 到 %lu ä½å…ƒçµ„"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy, c-format
+msgid "Couldn't duplicate file descriptor %i"
+msgstr "無法開啟管線給 %s 使用"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to close mmap"
+msgstr "無法開啟 %s"
+
+#: apt-pkg/contrib/mmap.cc
+#, fuzzy
+msgid "Unable to synchronize mmap"
+msgstr "無法 invoke "
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid "Couldn't make mmap of %lu bytes"
+msgstr "無法 mmap 到 %lu ä½å…ƒçµ„"
+
+#: apt-pkg/contrib/mmap.cc
+msgid "Failed to truncate file"
+msgstr "無法截短檔案"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. "
+"Current value: %lu. (man 5 apt.conf)"
+msgstr ""
+"å‹•æ…‹ MMap 已用完所有空間。請增加 APT::Cache-Start 的大å°ã€‚ç›®å‰å¤§å°ç‚ºï¼š%lu。"
+"(man 5 apt.conf)"
+
+#: apt-pkg/contrib/mmap.cc
+#, c-format
+msgid ""
+"Unable to increase the size of the MMap as the limit of %lu bytes is already "
+"reached."
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc
+msgid ""
+"Unable to increase size of the MMap as automatic growing is disabled by user."
+msgstr ""
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Error!"
+msgstr "%c%s... 錯誤ï¼"
+
+#: apt-pkg/contrib/progress.cc
+#, c-format
+msgid "%c%s... Done"
+msgstr "%c%s... 完æˆ"
+
+#: apt-pkg/contrib/progress.cc
+msgid "..."
+msgstr ""
+
+#. Print the spinner
+#: apt-pkg/contrib/progress.cc
+#, fuzzy, c-format
+msgid "%c%s... %u%%"
+msgstr "%c%s... 完æˆ"
+
+#. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lid %lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: h means hours, min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lih %limin %lis"
+msgstr ""
+
+#. TRANSLATOR: min means minutes, s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%limin %lis"
+msgstr ""
+
+#. TRANSLATOR: s means seconds
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "%lis"
+msgstr ""
+
+#: apt-pkg/contrib/strutl.cc
+#, c-format
+msgid "Selection %s not found"
+msgstr "é¸é … %s 找ä¸åˆ°"
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; another identifier like Contents;
+#. filename and linenumber of the sources.list entry currently parsed
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s wants to acquire the same file (%s) as %s from source %s"
+msgstr ""
+
+#. TRANSLATOR: an identifier like Packages; Releasefile key indicating
+#. a file like main/binary-amd64/Packages; filename and linenumber of
+#. two sources.list entries
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Target %s (%s) is configured multiple times in %s and %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Unable to parse Release file %s"
+msgstr "無法辨別 Release 檔 %s"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No sections in Release file %s"
+msgstr "在 Release 檔 %s 裡沒有å€æ®µ"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "No Hash entry in Release file %s"
+msgstr "在 Release 檔 %s 裡沒有 Hash 項目"
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid ""
+"No Hash entry in Release file %s which is considered strong enough for "
+"security purposes"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, fuzzy, c-format
+msgid "Invalid '%s' entry in Release file %s"
+msgstr "在 Release 檔 %s 裡沒有 Hash 項目"
+
+#. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Invalid value set for option %s regarding source %s %s (%s)"
+msgstr ""
+
+#: apt-pkg/deb/debmetaindex.cc
+#, c-format
+msgid "Conflicting values set for option %s regarding source %s %s: %s != %s"
+msgstr ""
+
+#: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc
+#, c-format
+msgid "Unable to parse package file %s (%d)"
+msgstr "無法辨識套件檔 %s (%d)"
+
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"Unable to lock the administration directory (%s), is another process using "
+"it?"
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+#, fuzzy, c-format
+msgid "Unable to lock the administration directory (%s), are you root?"
+msgstr "無法鎖定列表目錄"
+
+#. TRANSLATORS: the %s contains the recovery command, usually
+#. dpkg --configure -a
+#: apt-pkg/deb/debsystem.cc
+#, c-format
+msgid ""
+"dpkg was interrupted, you must manually run '%s' to correct the problem. "
+msgstr ""
+
+#: apt-pkg/deb/debsystem.cc
+msgid "Not locked"
+msgstr ""
+
+#. we don't care for the difference
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installing %s"
+msgstr "æ­£åœ¨å®‰è£ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Configuring %s"
+msgstr "正在設定 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removing %s"
+msgstr "正在移除 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Completely removing %s"
+msgstr "已完整移除 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Running post-installation trigger %s"
+msgstr "正在執行安è£å¾Œå¥—件後續處ç†ç¨‹å¼ %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Installed %s"
+msgstr "å·²å®‰è£ %s"
+
+#. FIXME: use a better string after freeze
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Directory '%s' missing"
+msgstr "找ä¸åˆ° '%s' 目錄"
+
+#: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc
+#, fuzzy, c-format
+msgid "Could not open file '%s'"
+msgstr "無法開啟檔案 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing %s"
+msgstr "正在準備 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Unpacking %s"
+msgstr "正在解開 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to configure %s"
+msgstr "正在準備設定 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr "正在準備移除 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Removed %s"
+msgstr "已移除 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Preparing to completely remove %s"
+msgstr "正在準備完整移除 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, c-format
+msgid "Completely removed %s"
+msgstr "已完整移除 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+#, fuzzy, c-format
+msgid "Can not write log (%s)"
+msgstr "無法寫入 %s"
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Is /dev/pts mounted?"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "Operation was interrupted before it could finish"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid "No apport report written because MaxReports is reached already"
+msgstr ""
+
+#. check if its not a follow up error
+#: apt-pkg/deb/dpkgpm.cc
+msgid "dependency problems - leaving unconfigured"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates its a followup "
+"error from a previous failure."
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a disk full "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a out of memory "
+"error"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates an issue on the "
+"local system"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc
+msgid ""
+"No apport report written because the error message indicates a dpkg I/O error"
+msgstr ""
+
+#: apt-pkg/depcache.cc
+msgid "Building dependency tree"
+msgstr "正在é‡å»ºç›¸ä¾é—œä¿‚"
+
+#: apt-pkg/depcache.cc
+msgid "Candidate versions"
+msgstr "候é¸ç‰ˆæœ¬"
+
+#: apt-pkg/depcache.cc
+msgid "Dependency generation"
+msgstr "建立相ä¾é—œä¿‚"
+
+#: apt-pkg/depcache.cc
+msgid "Reading state information"
+msgstr "正在讀å–狀態資料"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to open StateFile %s"
+msgstr "無法開啟 StateFile %s"
+
+#: apt-pkg/depcache.cc
+#, c-format
+msgid "Failed to write temporary StateFile %s"
+msgstr "無法寫入暫存的 StateFile %s"
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Prepare for receiving solution"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External solver failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external solver"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Execute external planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send request to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Send scenario to planner"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "External planner failed without a proper error message"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records.\n"
+msgstr "寫入 %i 筆紀錄。\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
+msgstr "寫入 %i 筆紀綠,其中有 %i 個檔案éºå¤±äº†ã€‚\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
+msgstr "寫入 %i 筆紀綠,其中有 %i 個檔案ä¸ç¬¦\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+msgstr "寫入 %i 筆紀綠,其中有 %i 個檔案éºå¤±äº†ï¼Œæœ‰ %i 個檔案ä¸ç¬¦\n"
+
+#: apt-pkg/indexcopy.cc
+#, c-format
+msgid "Can't find authentication record for: %s"
+msgstr ""
+
+#: apt-pkg/indexcopy.cc
+#, fuzzy, c-format
+msgid "Hash mismatch for: %s"
+msgstr "Hash Sum ä¸ç¬¦"
+
+#: apt-pkg/init.cc
+#, c-format
+msgid "Packaging system '%s' is not supported"
+msgstr "ä¸æ”¯æ´çš„套件包è£ç³»çµ± '%s'"
+
+#: apt-pkg/init.cc
+msgid "Unable to determine a suitable packaging system type"
+msgstr "無法確èªåˆé©çš„套件包è£ç³»çµ±é¡žåž‹"
+
+#: apt-pkg/install-progress.cc
+#, c-format
+msgid "Progress: [%3i%%]"
+msgstr ""
+
+#. send status information that we are about to fork dpkg
+#: apt-pkg/install-progress.cc
+msgid "Running dpkg"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
+msgstr ""
+
+#: apt-pkg/packagemanager.cc
+#, fuzzy, c-format
+msgid "Could not configure '%s'. "
+msgstr "無法開啟檔案 %s"
+
+#: apt-pkg/packagemanager.cc
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
+msgstr ""
+"此安è£å› è¡çªæˆ–é å…ˆç›¸ä¾é—œä¿‚,需暫時刪除 %s 這個基本套件。這通常ä¸æ˜¯å¥½ä¸»æ„,但"
+"若您執æ„進行,請設定 APT::Force-LoopBreak é¸é …。"
+
+#: apt-pkg/pkgcache.cc
+msgid "Empty package cache"
+msgstr "清空套件快å–"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is corrupted"
+msgstr "套件快å–檔æ壞"
+
+#: apt-pkg/pkgcache.cc
+msgid "The package cache file is an incompatible version"
+msgstr "套件快å–檔版本ä¸ç¬¦"
+
+#: apt-pkg/pkgcache.cc
+#, c-format
+msgid "This APT does not support the versioning system '%s'"
+msgstr "本 APT ä¸æ”¯æ´ '%s' 版本系統"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy, c-format
+msgid "The package cache was built for different architectures: %s vs %s"
+msgstr "這個套件快å–是用於å¦ä¸€ç¨®å¹³å°çš„"
+
+#: apt-pkg/pkgcache.cc
+#, fuzzy
+msgid "The package cache file is corrupted, it has the wrong hash"
+msgstr "套件快å–檔æ壞"
+
+#: apt-pkg/pkgcache.cc
+msgid "Depends"
+msgstr "相ä¾é—œä¿‚"
+
+#: apt-pkg/pkgcache.cc
+msgid "PreDepends"
+msgstr "é å…ˆç›¸ä¾é—œä¿‚"
+
+#: apt-pkg/pkgcache.cc
+msgid "Suggests"
+msgstr "建議"
+
+#: apt-pkg/pkgcache.cc
+msgid "Conflicts"
+msgstr "è¡çª"
+
+#: apt-pkg/pkgcache.cc
+msgid "Recommends"
+msgstr "推薦"
+
+#: apt-pkg/pkgcache.cc
+msgid "Replaces"
+msgstr "å–代"
+
+#: apt-pkg/pkgcache.cc
+msgid "Breaks"
+msgstr "毀æ"
+
+#: apt-pkg/pkgcache.cc
+msgid "Enhances"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc
+msgid "Obsoletes"
+msgstr "廢棄"
+
+#: apt-pkg/pkgcache.cc
+msgid "important"
+msgstr "é‡è¦"
+
+#: apt-pkg/pkgcache.cc
+msgid "required"
+msgstr "å¿…è¦"
+
+#: apt-pkg/pkgcache.cc
+msgid "standard"
+msgstr "標準"
+
+#: apt-pkg/pkgcache.cc
+msgid "extra"
+msgstr "é¡å¤–"
+
+#: apt-pkg/pkgcache.cc
+msgid "optional"
+msgstr "次è¦"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Cache has an incompatible versioning system"
+msgstr "å¿«å–使用的是ä¸ç›¸å®¹çš„版本系統"
+
+#. TRANSLATOR: The first placeholder is a package name,
+#. the other two should be copied verbatim as they include debug info
+#: apt-pkg/pkgcachegen.cc
+#, fuzzy, c-format
+msgid "Error occurred while processing %s (%s%d)"
+msgstr "åœ¨è™•ç† %s 時發生錯誤 (FindPkg)"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of package names this APT is capable of."
+msgstr "哇呀,您已經超éŽé€™å€‹ APT 所能處ç†çš„套件å稱數é‡äº†ã€‚"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of versions this APT is capable of."
+msgstr "哇呀,您已經超éŽé€™å€‹ APT 所能處ç†çš„版本數é‡äº†ã€‚"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "哇呀,您已經超éŽé€™å€‹ APT 所能處ç†çš„說明數é‡äº†ã€‚"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+msgstr "哇呀,您已經超éŽé€™å€‹ APT 所能處ç†çš„相ä¾é—œä¿‚數é‡äº†ã€‚"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "Reading package lists"
+msgstr "正在讀å–套件清單"
+
+#: apt-pkg/pkgcachegen.cc
+msgid "IO Error saving source cache"
+msgstr "在儲存來æºå¿«å–時 IO 錯誤"
+
+#: apt-pkg/pkgrecords.cc
+#, c-format
+msgid "Index file type '%s' is not supported"
+msgstr "ä¸è¢«æ”¯æ´çš„索引檔類型 '%s'"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid ""
+"The value '%s' is invalid for APT::Default-Release as such a release is not "
+"available in the sources"
+msgstr ""
+
+#: apt-pkg/policy.cc
+#, fuzzy, c-format
+msgid "Invalid record in the preferences file %s, no Package header"
+msgstr "個人設定檔中有些ä¸æ­£ç¢ºè³‡æ–™ï¼Œæ²’有以 Package é–‹é ­"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "Did not understand pin type %s"
+msgstr "無法分æžéŽ–定類型 %s"
+
+#: apt-pkg/policy.cc
+#, c-format
+msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)"
+msgstr ""
+
+#: apt-pkg/policy.cc
+msgid "No priority (or zero) specified for pin"
+msgstr "銷定並沒有優先順åºä¹‹åˆ†ï¼ˆæˆ–零)"
+
+#. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed entry %u in %s file %s (%s)"
+msgstr "é‡æ–°å®šç¾©æª” %s 第 %lu 行的格å¼éŒ¯èª¤ #1"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Opening %s"
+msgstr "正在開啟 %s"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
+msgstr "來æºåˆ—表 %2$s 中的第 %1$u 行的格å¼éŒ¯èª¤ï¼ˆé¡žåž‹ï¼‰"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
+msgstr "未知的類型 '%1$s',ä½æ–¼åœ¨ä¾†æºåˆ—表 %3$s 中的第 %2$u è¡Œ"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Malformed stanza %u in source list %s (type)"
+msgstr "來æºåˆ—表 %2$s 中的第 %1$u 行的格å¼éŒ¯èª¤ï¼ˆé¡žåž‹ï¼‰"
+
+#: apt-pkg/sourcelist.cc
+#, fuzzy, c-format
+msgid "Type '%s' is not known on stanza %u in source list %s"
+msgstr "未知的類型 '%1$s',ä½æ–¼åœ¨ä¾†æºåˆ—表 %3$s 中的第 %2$u è¡Œ"
+
+#: apt-pkg/sourcelist.cc
+#, c-format
+msgid "Unsupported file %s given on commandline"
+msgstr ""
+
+#: apt-pkg/srcrecords.cc
+msgid "You must put some 'source' URIs in your sources.list"
+msgstr "在 sources.list 中必須包å«ä¸€äº› 'source' URI"
+
+#: apt-pkg/tagfile.cc
+#, c-format
+msgid "Cannot convert %s to integer: out of range"
+msgstr ""
+
+#: apt-pkg/update.cc apt-private/private-download.cc
+#, c-format
+msgid "Failed to fetch %s %s"
+msgstr "無法å–å¾— %s,%s"
+
+#: apt-pkg/update.cc
+#, fuzzy
+msgid ""
+"Some index files failed to download. They have been ignored, or old ones "
+"used instead."
+msgstr "有一些索引檔ä¸èƒ½ä¸‹è¼‰ï¼Œå®ƒå€‘å¯èƒ½è¢«ç•¥éŽäº†ï¼Œæˆ–是替而使用原有的索引檔。"
+
+#: apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "籌備å‡ç´šä¸­"
+
+#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Hit:%lu %s"
+msgstr "已有:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update'
+#. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Get:%lu %s"
+msgstr "下載:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download, but the error is ignored (compare "Err:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Ign:%lu %s"
+msgstr "ç•¥éŽ:%lu %s"
+
+#. TRANSLATOR: Very short word to be displayed for files in 'apt-get update'
+#. which failed to download and the error is critical (compare "Ign:")
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Err:%lu %s"
+msgstr "錯誤:%lu %s"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid "Fetched %sB in %s (%sB/s)\n"
+msgstr "å–å¾— %sB 用了 %s (%sB/s)\n"
+
+#: apt-private/acqprogress.cc
+msgid " [Working]"
+msgstr " [工作中]"
+
+#: apt-private/acqprogress.cc
+#, c-format
+msgid ""
+"Media change: please insert the disc labeled\n"
+" '%s'\n"
+"in the drive '%s' and press [Enter]\n"
+msgstr ""
+"æ›´æ›åª’體:請把以下å稱的光碟\n"
+" '%s'\n"
+"放入 '%s' è£ç½®ï¼Œç„¶å¾ŒæŒ‰ [Enter] éµ\n"
+
+#: apt-private/private-cachefile.cc
+msgid "Correcting dependencies..."
+msgstr "正在修正相ä¾é—œä¿‚..."
+
+#: apt-private/private-cachefile.cc
+msgid " failed."
+msgstr " 失敗。"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to correct dependencies"
+msgstr "無法修正相ä¾é—œä¿‚"
+
+#: apt-private/private-cachefile.cc
+msgid "Unable to minimize the upgrade set"
+msgstr "無法將å‡ç´šè¨ˆåŠƒæœ€å°åŒ–"
+
+#: apt-private/private-cachefile.cc
+msgid " Done"
+msgstr " 完æˆ"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid "You might want to run 'apt --fix-broken install' to correct these."
+msgstr "您也許得執行 'apt --fix-broken install' 以修正這些å•é¡Œã€‚"
+
+#: apt-private/private-cachefile.cc apt-private/private-install.cc
+msgid ""
+"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or "
+"specify a solution)."
+msgstr ""
+"未能滿足相ä¾é—œä¿‚。請試著ä¸æŒ‡å®šå¥—件來執行 'apt --fix-broken install'(或採å–å…¶"
+"它的解決方案)。"
+
+#: apt-private/private-cacheset.cc apt-private/private-search.cc
+msgid "Sorting"
+msgstr ""
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for task '%s'\n"
+msgstr "注æ„,根據正è¦è¡¨ç¤ºå¼ '%2$s' 而é¸æ“‡äº† %1$s\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for glob '%s'\n"
+msgstr "注æ„,根據正è¦è¡¨ç¤ºå¼ '%2$s' 而é¸æ“‡äº† %1$s\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' for regex '%s'\n"
+msgstr "注æ„,根據正è¦è¡¨ç¤ºå¼ '%2$s' 而é¸æ“‡äº† %1$s\n"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package %s is a virtual package provided by:\n"
+msgstr "套件 %s 是虛擬套件,æ供者為:\n"
+
+#: apt-private/private-cacheset.cc
+msgid " [Installed]"
+msgstr "ã€å·²å®‰è£ã€‘"
+
+#: apt-private/private-cacheset.cc
+msgid " [Not candidate version]"
+msgstr "ã€éžå€™é¸ç‰ˆæœ¬ã€‘"
+
+#: apt-private/private-cacheset.cc
+msgid "You should explicitly select one to install."
+msgstr "請您明確地é¸æ“‡ä¸€å€‹ä¾†é€²è¡Œå®‰è£ã€‚"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid ""
+"Package %s is not available, but is referred to by another package.\n"
+"This may mean that the package is missing, has been obsoleted, or\n"
+"is only available from another source\n"
+msgstr ""
+"無法å–得套件 %s,但它å»è¢«å…¶å®ƒçš„套件引用了。\n"
+"這æ„味著這個套件å¯èƒ½å·²ç¶“消失了ã€è¢«å»¢æ£„了,或是åªèƒ½ç”±å…¶ä»–的來æºå–å¾—\n"
+
+#: apt-private/private-cacheset.cc
+msgid "However the following packages replace it:"
+msgstr "然而,下列的套件å–代了它:"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Package '%s' has no installation candidate"
+msgstr "套件 %s 沒有å¯å®‰è£çš„候é¸ç‰ˆæœ¬"
+
+#: apt-private/private-cacheset.cc
+#, c-format
+msgid "Virtual packages like '%s' can't be removed\n"
+msgstr ""
+
+#. TRANSLATORS: Note, this is not an interactive question
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
+msgstr "套件 %s 並沒有被安è£ï¼Œæ‰€ä»¥ä¹Ÿä¸æœƒè¢«ç§»é™¤\n"
+
+#: apt-private/private-cacheset.cc apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Package '%s' is not installed, so not removed\n"
+msgstr "套件 %s 並沒有被安è£ï¼Œæ‰€ä»¥ä¹Ÿä¸æœƒè¢«ç§»é™¤\n"
+
+#: apt-private/private-cacheset.cc
+#, fuzzy, c-format
+msgid "Note, selecting '%s' instead of '%s'\n"
+msgstr "注æ„,é¸æ“‡äº†ä»¥ %s 替代 %s\n"
+
+#: apt-private/private-cmndline.cc
+msgid "Most used commands:"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+#, c-format
+msgid "See %s for more information about the available commands."
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid ""
+"Configuration options and syntax is detailed in apt.conf(5).\n"
+"Information about how to configure sources can be found in sources.list(5).\n"
+"Package and version choices can be expressed via apt_preferences(5).\n"
+"Security details are available in apt-secure(8).\n"
+msgstr ""
+
+#: apt-private/private-cmndline.cc
+msgid "This APT has Super Cow Powers."
+msgstr "該 APT 有著超級牛力。"
+
+#: apt-private/private-cmndline.cc
+msgid "This APT helper has Super Meep Powers."
+msgstr ""
+
+#: apt-private/private-depends.cc apt-private/private-show.cc
+#: cmdline/apt-mark.cc
+msgid "No packages found"
+msgstr "未找到套件"
+
+#: apt-private/private-download.cc
+msgid "WARNING: The following packages cannot be authenticated!"
+msgstr "ã€è­¦å‘Šã€‘:無法驗證下列套件ï¼"
+
+#: apt-private/private-download.cc
+msgid "Authentication warning overridden.\n"
+msgstr "忽略了驗證警告。\n"
+
+#: apt-private/private-download.cc
+msgid "Some packages could not be authenticated"
+msgstr "有部份套件無法驗證"
+
+#: apt-private/private-download.cc
+msgid "Install these packages without verification?"
+msgstr "是å¦ä¸ç¶“驗證就安è£é€™äº›å¥—件?"
+
+#: apt-private/private-download.cc apt-private/private-install.cc
+msgid ""
+"--force-yes is deprecated, use one of the options starting with --allow "
+"instead."
+msgstr ""
+
+#: apt-private/private-download.cc
+#, fuzzy
+msgid ""
+"There were unauthenticated packages and -y was used without --allow-"
+"unauthenticated"
+msgstr "發生了å•é¡Œï¼Œä¸” -y 並沒有和 --force-yes æ­é…使用"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "Couldn't determine free space in %s"
+msgstr "ç„¡æ³•ç¢ºèª %s 的未使用空間"
+
+#: apt-private/private-download.cc
+#, c-format
+msgid "You don't have enough free space in %s."
+msgstr "在 %s 裡沒有足夠的的未使用空間。"
+
+#: apt-private/private-download.cc
+msgid "Unable to lock the download directory"
+msgstr "無法鎖定下載目錄"
+
+#: apt-private/private-install.cc
+msgid ""
+"Some packages could not be installed. This may mean that you have\n"
+"requested an impossible situation or if you are using the unstable\n"
+"distribution that some required packages have not yet been created\n"
+"or been moved out of Incoming."
+msgstr ""
+"有些套件無法安è£ã€‚這å¯èƒ½æ„謂著您的è¦æ±‚難以解決,或是若您使用的是\n"
+"unstable 發行版,å¯èƒ½æœ‰äº›å¿…è¦çš„套件尚未建立,或是被移出 Incoming 了。"
+
+#.
+#. if (Packages == 1)
+#. {
+#. c1out << std::endl;
+#. c1out <<
+#. _("Since you only requested a single operation it is extremely likely that\n"
+#. "the package is simply not installable and a bug report against\n"
+#. "that package should be filed.") << std::endl;
+#. }
+#.
+#: apt-private/private-install.cc
+msgid "The following information may help to resolve the situation:"
+msgstr "以下的資訊或許有助於解決當å‰çš„情æ³ï¼š"
+
+#: apt-private/private-install.cc
+msgid "Broken packages"
+msgstr "æ毀的套件"
+
+#: apt-private/private-install.cc
+msgid ""
+"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
+"missing?"
+msgstr ""
+"有部份套件檔無法å–得,試著執行 apt-get update 或者試著加上 --fix-missing é¸"
+"項?"
+
+#: apt-private/private-install.cc
+msgid "Internal error, InstallPackages was called with broken packages!"
+msgstr "內部錯誤,在æ毀的套件上執行 InstallPackagesï¼"
+
+#: apt-private/private-install.cc
+msgid "Packages need to be removed but remove is disabled."
+msgstr "有套件需è¦è¢«ç§»é™¤ï¼Œä½†å»è¢«ç¦æ­¢ç§»é™¤ã€‚"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"Essential packages were removed and -y was used without --allow-remove-"
+"essential."
+msgstr "發生了å•é¡Œï¼Œä¸” -y 並沒有和 --force-yes æ­é…使用"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid "Packages were downgraded and -y was used without --allow-downgrades."
+msgstr "發生了å•é¡Œï¼Œä¸” -y 並沒有和 --force-yes æ­é…使用"
+
+#: apt-private/private-install.cc
+msgid ""
+"Held packages were changed and -y was used without --allow-change-held-"
+"packages."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "Internal error, Ordering didn't finish"
+msgstr "內部錯誤,排åºæœªèƒ½å®Œæˆ"
+
+#: apt-private/private-install.cc
+msgid "How odd... The sizes didn't match, email apt@packages.debian.org"
+msgstr "怪哉... 檔案大å°ä¸ç¬¦ï¼Œè«‹ç™¼ä¿¡çµ¦ apt@packages.debian.org"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB/%sB of archives.\n"
+msgstr "需è¦ä¸‹è¼‰ %sB/%sB 的套件檔。\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "Need to get %sB of archives.\n"
+msgstr "需è¦ä¸‹è¼‰ %sB 的套件檔。\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB of additional disk space will be used.\n"
+msgstr "æ­¤æ“作完æˆä¹‹å¾Œï¼Œæœƒå¤šä½”用 %sB çš„ç£ç¢Ÿç©ºé–“。\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-install.cc
+#, c-format
+msgid "After this operation, %sB disk space will be freed.\n"
+msgstr "æ­¤æ“作完æˆä¹‹å¾Œï¼Œæœƒç©ºå‡º %sB çš„ç£ç¢Ÿç©ºé–“。\n"
+
+#: apt-private/private-install.cc
+msgid "Trivial Only specified but this is not a trivial operation."
+msgstr "雖然指定了 Trivial Only(自動答 NO)é¸é …,但這並ä¸æ˜¯ trivial æ“作。"
+
+#. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be
+#. careful with hard to type or special characters (like non-breaking spaces)
+#: apt-private/private-install.cc
+msgid "Yes, do as I say!"
+msgstr "Yes, do as I say!"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid ""
+"You are about to do something potentially harmful.\n"
+"To continue type in the phrase '%s'\n"
+" ?] "
+msgstr ""
+"您所進行的æ“作å¯èƒ½æœƒå¸¶ä¾†å±éšªã€‚\n"
+"請輸入 '%s' 這個å¥å­ä»¥ç¹¼çºŒé€²è¡Œ\n"
+" ?] "
+
+#: apt-private/private-install.cc
+msgid "Abort."
+msgstr "放棄執行。"
+
+#: apt-private/private-install.cc
+msgid "Do you want to continue?"
+msgstr "是å¦ç¹¼çºŒé€²è¡Œ [Y/n]?"
+
+#: apt-private/private-install.cc
+msgid "Some files failed to download"
+msgstr "有部份檔案無法下載"
+
+#: apt-private/private-install.cc apt-private/private-source.cc
+msgid "Download complete and in download only mode"
+msgstr "下載完æˆï¼Œä¸”這是『僅下載ã€æ¨¡å¼"
+
+#: apt-private/private-install.cc
+msgid "--fix-missing and media swapping is not currently supported"
+msgstr "ç›®å‰å°šæœªæ”¯æ´ --fix-missing 和媒體抽æ›"
+
+#: apt-private/private-install.cc
+msgid "Unable to correct missing packages."
+msgstr "無法修正欠缺的套件。"
+
+#: apt-private/private-install.cc
+msgid "Aborting install."
+msgstr "放棄安è£ã€‚"
+
+#: apt-private/private-install.cc
+msgid ""
+"The following package disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgid_plural ""
+"The following packages disappeared from your system as\n"
+"all files have been overwritten by other packages:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-install.cc
+msgid "Note: This is done automatically and on purpose by dpkg."
+msgstr ""
+
+#: apt-private/private-install.cc
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr "我們沒有計劃è¦åˆªé™¤ä»»ä½•æ±è¥¿ï¼Œç„¡æ³•å•Ÿå‹• AutoRemover"
+
+#: apt-private/private-install.cc
+msgid ""
+"Hmm, seems like the AutoRemover destroyed something which really\n"
+"shouldn't happen. Please file a bug report against apt."
+msgstr ""
+"嗯,看起來 AutoRemover 弄壞了什麼æ±è¥¿ï¼Œè€Œé€™æ˜¯ä¸è©²ç™¼ç”Ÿçš„。\n"
+"è«‹é‡å° apt 發佈錯誤回報。"
+
+#: apt-private/private-install.cc
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr "內部錯誤,AutoRemover 處ç†å¤±æ•—"
+
+#: apt-private/private-install.cc
+#, fuzzy
+msgid ""
+"The following package was automatically installed and is no longer required:"
+msgid_plural ""
+"The following packages were automatically installed and are no longer "
+"required:"
+msgstr[0] "以下套件是被自動安è£é€²ä¾†çš„,且已ä¸å†æœƒè¢«ç”¨åˆ°äº†ï¼š"
+msgstr[1] "以下套件是被自動安è£é€²ä¾†çš„,且已ä¸å†æœƒè¢«ç”¨åˆ°äº†ï¼š"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%lu package was automatically installed and is no longer required.\n"
+msgid_plural ""
+"%lu packages were automatically installed and are no longer required.\n"
+msgstr[0] "以下套件是被自動安è£é€²ä¾†çš„,且已ä¸å†æœƒè¢«ç”¨åˆ°äº†ï¼š"
+msgstr[1] "以下套件是被自動安è£é€²ä¾†çš„,且已ä¸å†æœƒè¢«ç”¨åˆ°äº†ï¼š"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Use '%s' to remove it."
+msgid_plural "Use '%s' to remove them."
+msgstr[0] "使用 '%s' 來將其移除。"
+msgstr[1] "使用 '%s' 來將其移除。"
+
+#: apt-private/private-install.cc
+msgid "The following additional packages will be installed:"
+msgstr "下列的é¡å¤–套件將被安è£ï¼š"
+
+#: apt-private/private-install.cc
+msgid "Suggested packages:"
+msgstr "建議套件:"
+
+#: apt-private/private-install.cc
+msgid "Recommended packages:"
+msgstr "推薦套件:"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Skipping %s, it is already installed and upgrade is not set.\n"
+msgstr "忽略 %s,它已被安è£ä¸”沒有計劃è¦é€²è¡Œå‡ç´šã€‚\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
+msgstr "忽略 %s,它已被安è£ä¸”沒有計劃è¦é€²è¡Œå‡ç´šã€‚\n"
+
+#: apt-private/private-install.cc
+#, c-format
+msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
+msgstr "無法é‡æ–°å®‰è£ %s,因為它無法下載。\n"
+
+#. TRANSLATORS: First string is package name, second is version
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "%s is already the newest version (%s).\n"
+msgstr "%s 已經是最新版本了。\n"
+
+#: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc
+#, c-format
+msgid "%s set to manually installed.\n"
+msgstr "%s 被設定為手動安è£ã€‚\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s'\n"
+msgstr "é¸å®šçš„版本為 %3$s çš„ %1$s (%2$s)\n"
+
+#: apt-private/private-install.cc
+#, fuzzy, c-format
+msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
+msgstr "é¸å®šçš„版本為 %3$s çš„ %1$s (%2$s)\n"
+
+#: apt-private/private-list.cc
+msgid "Listing"
+msgstr ""
+
+#: apt-private/private-list.cc
+#, c-format
+msgid "There is %i additional version. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional versions. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: placeholder is a binary name like apt or apt-get
+#: apt-private/private-main.cc
+#, c-format
+msgid ""
+"NOTE: This is only a simulation!\n"
+" %s needs root privileges for real execution.\n"
+" Keep also in mind that locking is deactivated,\n"
+" so don't depend on the relevance to the real current situation!\n"
+msgstr ""
+
+#: apt-private/private-output.cc apt-private/private-show.cc
+msgid "unknown"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy, c-format
+msgid "[installed,upgradable to: %s]"
+msgstr "ã€å·²å®‰è£ã€‘"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,local]"
+msgstr "ã€å·²å®‰è£ã€‘"
+
+#: apt-private/private-output.cc
+msgid "[installed,auto-removable]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed,automatic]"
+msgstr "ã€å·²å®‰è£ã€‘"
+
+#: apt-private/private-output.cc
+#, fuzzy
+msgid "[installed]"
+msgstr "ã€å·²å®‰è£ã€‘"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "[upgradable from: %s]"
+msgstr ""
+
+#: apt-private/private-output.cc
+msgid "[residual-config]"
+msgstr ""
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is installed"
+msgstr "但 %s å»å·²å®‰è£"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "but %s is to be installed"
+msgstr "但 %s å»å°‡è¢«å®‰è£"
+
+#: apt-private/private-output.cc
+msgid "but it is not installable"
+msgstr "但它å»ç„¡æ³•å®‰è£"
+
+#: apt-private/private-output.cc
+msgid "but it is a virtual package"
+msgstr "但它是虛擬套件"
+
+#: apt-private/private-output.cc
+msgid "but it is not going to be installed"
+msgstr "但它å»å°‡ä¸æœƒè¢«å®‰è£"
+
+#: apt-private/private-output.cc
+msgid "but it is not installed"
+msgstr "但它å»å°šæœªå®‰è£"
+
+#: apt-private/private-output.cc
+msgid " or"
+msgstr "或"
+
+#: apt-private/private-output.cc
+msgid "The following packages have unmet dependencies:"
+msgstr "下列的套件有未滿足的相ä¾é—œä¿‚:"
+
+#: apt-private/private-output.cc
+msgid "The following NEW packages will be installed:"
+msgstr "下列ã€æ–°ã€‘套件將會被安è£ï¼š"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be REMOVED:"
+msgstr "下列套件將會被ã€ç§»é™¤ã€‘:"
+
+#: apt-private/private-output.cc
+msgid "The following packages have been kept back:"
+msgstr "下列套件將會維æŒå…¶åŽŸæœ‰ç‰ˆæœ¬ï¼š"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be upgraded:"
+msgstr "下列套件將會被å‡ç´šï¼š"
+
+#: apt-private/private-output.cc
+msgid "The following packages will be DOWNGRADED:"
+msgstr "下列套件將會被ã€é™ç´šã€‘:"
+
+#: apt-private/private-output.cc
+msgid "The following held packages will be changed:"
+msgstr "下列被ä¿ç•™ (hold) 的套件將會被更改:"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%s (due to %s)"
+msgstr "%s(因為 %s"
+
+#: apt-private/private-output.cc
+msgid ""
+"WARNING: The following essential packages will be removed.\n"
+"This should NOT be done unless you know exactly what you are doing!"
+msgstr ""
+"ã€è­¦å‘Šã€‘:下列的基本套件都將被移除。\n"
+"除éžæ‚¨å¾ˆæ¸…楚您在åšä»€éº¼ï¼Œå¦å‰‡è«‹å‹¿è¼•æ˜“嘗試ï¼"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu upgraded, %lu newly installed, "
+msgstr "å‡ç´š %lu å€‹ï¼Œæ–°å®‰è£ %lu 個,"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu reinstalled, "
+msgstr "é‡æ–°å®‰è£ %lu 個,"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu downgraded, "
+msgstr "é™ç´š %lu 個,"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu to remove and %lu not upgraded.\n"
+msgstr "移除 %lu 個,有 %lu 個未被å‡ç´šã€‚\n"
+
+#: apt-private/private-output.cc
+#, c-format
+msgid "%lu not fully installed or removed.\n"
+msgstr "%lu 個沒有完整得安è£æˆ–移除。\n"
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
+#. e.g. "Do you want to continue? [Y/n] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[Y/n]"
+msgstr ""
+
+#. TRANSLATOR: Yes/No question help-text: defaulting to N[o]
+#. e.g. "Should this file be removed? [y/N] "
+#. The user has to answer with an input matching the
+#. YESEXPR/NOEXPR defined in your l10n.
+#: apt-private/private-output.cc
+msgid "[y/N]"
+msgstr ""
+
+#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set
+#: apt-private/private-output.cc
+msgid "Y"
+msgstr ""
+
+#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set
+#: apt-private/private-output.cc
+msgid "N"
+msgstr ""
+
+#: apt-private/private-search.cc
+#, fuzzy
+msgid "You must give at least one search pattern"
+msgstr "您必須明確得給定一個樣å¼"
+
+#: apt-private/private-search.cc
+msgid "Full Text Search"
+msgstr ""
+
+#: apt-private/private-show.cc cmdline/apt-cache.cc
+#, c-format
+msgid "Package file %s is out of sync."
+msgstr "套件檔 %s 未åŒæ­¥ã€‚"
+
+#: apt-private/private-show.cc
+#, c-format
+msgid "There is %i additional record. Please use the '-a' switch to see it"
+msgid_plural ""
+"There are %i additional records. Please use the '-a' switch to see them."
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-show.cc
+msgid "not a real package (virtual)"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid "Package files:"
+msgstr "套件檔:"
+
+#: apt-private/private-show.cc
+msgid "Cache is out of sync, can't x-ref a package file"
+msgstr "å¿«å–資料未åŒæ­¥ï¼Œç„¡æ³• x-ref 套件檔"
+
+#. Show any packages have explicit pins
+#: apt-private/private-show.cc
+msgid "Pinned packages:"
+msgstr "鎖定的套件:"
+
+#. Print the package name and the version we are forcing to
+#: apt-private/private-show.cc
+#, c-format
+msgid "%s -> %s with priority %d\n"
+msgstr ""
+
+#: apt-private/private-show.cc
+msgid " Installed: "
+msgstr " 已安è£ï¼š"
+
+#: apt-private/private-show.cc
+msgid " Candidate: "
+msgstr " 候é¸ï¼š"
+
+#: apt-private/private-show.cc
+msgid "(none)"
+msgstr "(ç„¡)"
+
+#. Show the priority tables
+#: apt-private/private-show.cc
+msgid " Version table:"
+msgstr " 版本列表:"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package for architecture '%s'"
+msgstr "無法找到套件 %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with version '%s'"
+msgstr "無法找到套件 %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Can not find a package '%s' with release '%s'"
+msgstr "無法找到套件 %s"
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Picking '%s' as source package instead of '%s'\n"
+msgstr "無法å–得來æºå¥—件列表 %s 的狀態"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Can not find version '%s' of package '%s'"
+msgstr ""
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to fetch source for"
+msgstr "在å–得原始碼時必須至少指定一個套件"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to find a source package for %s"
+msgstr "無法找到 %s 的原始碼套件"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
+"%s\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"Please use:\n"
+"%s\n"
+"to retrieve the latest (possibly unreleased) updates to the package.\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping already downloaded file '%s'\n"
+msgstr "ç•¥éŽå·²ä¸‹è¼‰çš„檔案 '%s'\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB/%sB of source archives.\n"
+msgstr "需è¦ä¸‹è¼‰ %sB/%sB 的原始套件檔。\n"
+
+#. TRANSLATOR: The required space between number and unit is already included
+#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
+#: apt-private/private-source.cc
+#, c-format
+msgid "Need to get %sB of source archives.\n"
+msgstr "需è¦ä¸‹è¼‰ %sB 的原始套件檔。\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Fetch source %s\n"
+msgstr "å–得原始碼 %s\n"
+
+#: apt-private/private-source.cc
+msgid "Failed to fetch some archives."
+msgstr "無法å–å¾—æŸäº›å¥—件檔。"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Skipping unpack of already unpacked source in %s\n"
+msgstr "ä¸è§£é–‹ï¼Œå› åŽŸå§‹ç¢¼å·²è§£é–‹è‡³ %s\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unpack command '%s' failed.\n"
+msgstr "解開指令 '%s' 失敗。\n"
+
+#: apt-private/private-source.cc
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr "請檢查是å¦å·²å®‰è£äº† 'dpkg-dev' 套件。\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Build command '%s' failed.\n"
+msgstr "編譯指令 '%s' 失敗。\n"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Unable to get build-dependency information for %s"
+msgstr "無法å–å¾— %s 的編譯相ä¾é—œä¿‚資訊"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "%s has no build depends.\n"
+msgstr "%s 沒有編譯相ä¾é—œä¿‚。\n"
+
+#: apt-private/private-source.cc
+msgid "Must specify at least one package to check builddeps for"
+msgstr "在檢查編譯相ä¾é—œä¿‚時必須至少指定一個套件"
+
+#: apt-private/private-source.cc
+#, c-format
+msgid ""
+"No architecture information available for %s. See apt.conf(5) APT::"
+"Architectures for setup"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, c-format
+msgid "Note, using directory '%s' to get the build dependencies\n"
+msgstr ""
+
+#: apt-private/private-source.cc
+#, fuzzy, c-format
+msgid "Note, using file '%s' to get the build dependencies\n"
+msgstr "無法處ç†ç·¨è­¯ç›¸ä¾é—œä¿‚"
+
+#: apt-private/private-source.cc
+msgid "Failed to process build dependencies"
+msgstr "無法處ç†ç·¨è­¯ç›¸ä¾é—œä¿‚"
+
+#: apt-private/private-sources.cc
+#, fuzzy, c-format
+msgid "Failed to parse %s. Edit again? "
+msgstr "無法將 %s æ›´å為 %s"
+
+#: apt-private/private-sources.cc
+#, c-format
+msgid "Your '%s' file changed, please run 'apt-get update'."
+msgstr ""
+
+#: apt-private/private-unmet.cc
+#, c-format
+msgid "Package %s version %s has an unmet dep:\n"
+msgstr "套件 %s 版本 %s 未能滿足相ä¾æ€§ï¼š\n"
+
+#: apt-private/private-update.cc
+msgid "The update command takes no arguments"
+msgstr "update 指令ä¸éœ€ä»»ä½•åƒæ•¸"
+
+#: apt-private/private-update.cc
+#, c-format
+msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n"
+msgid_plural ""
+"%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: apt-private/private-update.cc
+msgid "All packages are up to date."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "apt-cache stats does not take any arguments"
+msgstr "update 指令ä¸éœ€ä»»ä½•åƒæ•¸"
+
+#: cmdline/apt-cache.cc
+msgid "Total package names: "
+msgstr "套件å稱åˆè¨ˆï¼š"
+
+#: cmdline/apt-cache.cc
+#, fuzzy
+msgid "Total package structures: "
+msgstr "套件å稱åˆè¨ˆï¼š"
+
+#: cmdline/apt-cache.cc
+msgid " Normal packages: "
+msgstr " 一般套件:"
+
+#: cmdline/apt-cache.cc
+msgid " Pure virtual packages: "
+msgstr " 完全虛擬套件:"
+
+#: cmdline/apt-cache.cc
+msgid " Single virtual packages: "
+msgstr " 單一虛擬套件:"
+
+#: cmdline/apt-cache.cc
+msgid " Mixed virtual packages: "
+msgstr " æ··åˆè™›æ“¬å¥—件:"
+
+#: cmdline/apt-cache.cc
+msgid " Missing: "
+msgstr " 找ä¸åˆ°ï¼š"
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct versions: "
+msgstr "個別版本åˆè¨ˆï¼š"
+
+#: cmdline/apt-cache.cc
+msgid "Total distinct descriptions: "
+msgstr "個別版本類別åˆè¨ˆï¼š"
+
+#: cmdline/apt-cache.cc
+msgid "Total dependencies: "
+msgstr "相ä¾é—œä¿‚åˆè¨ˆï¼š"
+
+#: cmdline/apt-cache.cc
+msgid "Total ver/file relations: "
+msgstr "版本/檔案關è¯åˆè¨ˆï¼š"
+
+#: cmdline/apt-cache.cc
+msgid "Total Desc/File relations: "
+msgstr "類別/檔案關è¯åˆè¨ˆï¼š"
+
+#: cmdline/apt-cache.cc
+msgid "Total Provides mappings: "
+msgstr "æ供者å°æ‡‰åˆè¨ˆï¼š"
+
+#: cmdline/apt-cache.cc
+msgid "Total globbed strings: "
+msgstr "所有字串åˆè¨ˆï¼š"
+
+#: cmdline/apt-cache.cc
+msgid "Total slack space: "
+msgstr "間暇空間åˆè¨ˆï¼š"
+
+#: cmdline/apt-cache.cc
+msgid "Total space accounted for: "
+msgstr "統計後的空間åˆè¨ˆï¼š"
+
+#: cmdline/apt-cache.cc
+msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid ""
+"Usage: apt-cache [options] command\n"
+" apt-cache [options] show pkg1 [pkg2 ...]\n"
+"\n"
+"apt-cache queries and displays available information about installed\n"
+"and installable packages. It works exclusively on the data acquired\n"
+"into the local cache via the 'update' command of e.g. apt-get. The\n"
+"displayed information may therefore be outdated if the last update was\n"
+"too long ago, but in exchange apt-cache works independently of the\n"
+"availability of the configured sources (e.g. offline).\n"
+msgstr ""
+
+#: cmdline/apt-cache.cc
+msgid "Show source records"
+msgstr "顯示原始碼報告"
+
+#: cmdline/apt-cache.cc
+msgid "Search the package list for a regex pattern"
+msgstr "根據正è¦è¡¨ç¤ºå¼æœç´¢å¥—件列表"
+
+#: cmdline/apt-cache.cc
+msgid "Show raw dependency information for a package"
+msgstr "顯示該套件的原始相ä¾é—œä¿‚的資訊"
+
+#: cmdline/apt-cache.cc
+msgid "Show reverse dependency information for a package"
+msgstr "顯示所有相ä¾æ–¼è©²å¥—件的套件å稱"
+
+#: cmdline/apt-cache.cc
+msgid "Show a readable record for the package"
+msgstr "顯示該套件的易於閱讀的報告"
+
+#: cmdline/apt-cache.cc
+msgid "List the names of all packages in the system"
+msgstr "列出系統中所有套件"
+
+#: cmdline/apt-cache.cc
+msgid "Show policy settings"
+msgstr "顯示套件的å¯å®‰è£ç‰ˆæœ¬è³‡è¨Š"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgstr "請替這張光碟å–個å字,åƒæ˜¯ 'Debian 2.1r1 Disk 1'"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy
+msgid "Please insert a Disc in the drive and press [Enter]"
+msgstr "請把光碟放入光碟機,然後按下 [Enter] éµ"
+
+#: cmdline/apt-cdrom.cc
+#, fuzzy, c-format
+msgid "Failed to mount '%s' to '%s'"
+msgstr "無法將 %s æ›´å為 %s"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"No CD-ROM could be auto-detected or found using the default mount point.\n"
+"You may try the --cdrom option to set the CD-ROM mount point.\n"
+"See 'man apt-cdrom' for more information about the CD-ROM auto-detection and "
+"mount point."
+msgstr ""
+
+#: cmdline/apt-cdrom.cc
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr "è«‹å°æ‚¨çš„光碟組中的其它光碟é‡è¤‡ç›¸åŒçš„æ“作。"
+
+#: cmdline/apt-cdrom.cc
+msgid ""
+"Usage: apt-cdrom [options] command\n"
+"\n"
+"apt-cdrom is used to add CDROM's, USB flashdrives and other removable\n"
+"media types as package sources to APT. The mount point and device\n"
+"information is taken from apt.conf(5), udev(7) and fstab(5).\n"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "Arguments not in pairs"
+msgstr "åƒæ•¸ä¸¦æœªæˆå°"
+
+#: cmdline/apt-config.cc
+#, fuzzy
+msgid ""
+"Usage: apt-config [options] command\n"
+"\n"
+"apt-config is an interface to the configuration settings used by\n"
+"all APT tools, mainly intended for debugging and shell scripting.\n"
+msgstr ""
+"用法:apt-config [é¸é …] 指令\n"
+"\n"
+"apt-config æ˜¯ä¸€å€‹ç”¨æ–¼è®€å– APT 設定檔的簡單工具\n"
+
+#: cmdline/apt-config.cc
+msgid "get configuration values via shell evaluation"
+msgstr ""
+
+#: cmdline/apt-config.cc
+msgid "show the active configuration setting"
+msgstr ""
+
+#: cmdline/apt-dump-solver.cc
+msgid ""
+"Usage: apt-dump-solver\n"
+"\n"
+"apt-dump-solver is an interface to store an EDSP scenario in\n"
+"a file and optionally forwards it to another solver.\n"
+msgstr ""
+
+#: cmdline/apt-extracttemplates.cc
+#, fuzzy
+msgid ""
+"Usage: apt-extracttemplates file1 [file2 ...]\n"
+"\n"
+"apt-extracttemplates is used to extract config and template files\n"
+"from debian packages. It is used mainly by debconf(1) to prompt for\n"
+"configuration questions before installation of packages.\n"
+msgstr ""
+"用法:apt-extracttemplates 檔案1 [檔案2 ...]\n"
+"\n"
+"apt-extracttemplates 是用來從 debian 套件中解壓出設定檔和模æ¿è³‡è¨Š\n"
+"的工具\n"
+"\n"
+"é¸é …\n"
+" -h 本幫助訊æ¯ã€‚\n"
+" -t 指定暫存目錄\n"
+" -c=? 讀å–指定的設定檔\n"
+" -o=? 指定任æ„的設定é¸é …,例如:-o dir::cache=/tmp\n"
+
+#: cmdline/apt-extracttemplates.cc
+msgid "Cannot get debconf version. Is debconf installed?"
+msgstr "無法å–å¾— debconf 版本。是å¦æœ‰å®‰è£ debconf?"
+
+#: cmdline/apt-get.cc
+#, c-format
+msgid "Couldn't find package %s"
+msgstr "無法找到套件 %s"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set to automatically installed.\n"
+msgstr "%s 被設定為手動安è£ã€‚\n"
+
+#: cmdline/apt-get.cc cmdline/apt-mark.cc
+msgid ""
+"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
+"instead."
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Internal error, problem resolver broke stuff"
+msgstr "內部錯誤,å•é¡ŒæŽ’除器造æˆäº†æ壞"
+
+#: cmdline/apt-get.cc
+msgid "Supported modules:"
+msgstr "已支æ´æ¨¡çµ„:"
+
+#: cmdline/apt-get.cc
+#, fuzzy
+msgid ""
+"Usage: apt-get [options] command\n"
+" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+" apt-get [options] source pkg1 [pkg2 ...]\n"
+"\n"
+"apt-get is a command line interface for retrieval of packages\n"
+"and information about them from authenticated sources and\n"
+"for installation, upgrade and removal of packages together\n"
+"with their dependencies.\n"
+msgstr ""
+"用法:apt-get [é¸é …] 指令\n"
+" apt-get [é¸é …] install|remove 套件1 [套件2 ...]\n"
+" apt-get [é¸é …] source 套件1 [套件2 ...]\n"
+"\n"
+"apt-get 是一個用來下載和安è£å¥—件的簡易命令列界é¢ã€‚\n"
+"最常用指令是 update 和 install。\n"
+
+#: cmdline/apt-get.cc
+msgid "Retrieve new lists of packages"
+msgstr "å–得新的套件列表"
+
+#: cmdline/apt-get.cc
+msgid "Perform an upgrade"
+msgstr "進行å‡ç´š"
+
+#: cmdline/apt-get.cc
+msgid "Install new packages (pkg is libc6 not libc6.deb)"
+msgstr "安è£æ–°å¥—件(套件å稱是 libc6 而ä¸æ˜¯ libc6.deb)"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages"
+msgstr "移除套件"
+
+#: cmdline/apt-get.cc
+msgid "Remove packages and config files"
+msgstr "移除並清除套件"
+
+#: cmdline/apt-get.cc cmdline/apt.cc
+msgid "Remove automatically all unused packages"
+msgstr "自動移除所有ä¸å†ä½¿ç”¨çš„套件"
+
+#: cmdline/apt-get.cc
+msgid "Distribution upgrade, see apt-get(8)"
+msgstr "發行版本å‡ç´šï¼Œè«‹åƒé–± apt-get(8)"
+
+#: cmdline/apt-get.cc
+msgid "Follow dselect selections"
+msgstr "採用 dselect çš„é¸é …å‡ç´š"
+
+#: cmdline/apt-get.cc
+msgid "Configure build-dependencies for source packages"
+msgstr "為原始碼套件é…置編譯相ä¾é—œä¿‚"
+
+#: cmdline/apt-get.cc
+msgid "Erase downloaded archive files"
+msgstr "刪除已下載的套件檔"
+
+#: cmdline/apt-get.cc
+msgid "Erase old downloaded archive files"
+msgstr "刪除已下載但已有新版本的套件檔"
+
+#: cmdline/apt-get.cc
+msgid "Verify that there are no broken dependencies"
+msgstr "檢查相ä¾é—œä¿‚是å¦æœ‰å•é¡Œ"
+
+#: cmdline/apt-get.cc
+msgid "Download source archives"
+msgstr "下載套件原始碼"
+
+#: cmdline/apt-get.cc
+msgid "Download the binary package into the current directory"
+msgstr ""
+
+#: cmdline/apt-get.cc
+msgid "Download and display the changelog for the given package"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "Need one URL as argument"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, fuzzy
+msgid "Must specify at least one pair url/filename"
+msgstr "在å–得原始碼時必須至少指定一個套件"
+
+#: cmdline/apt-helper.cc
+msgid "Download Failed"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+#, c-format
+msgid "GetSrvRec failed for %s"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid ""
+"Usage: apt-helper [options] command\n"
+" apt-helper [options] cat-file file ...\n"
+" apt-helper [options] download-file uri target-path\n"
+"\n"
+"apt-helper bundles a variety of commands for shell scripts to use\n"
+"e.g. the same proxy configuration or acquire system as APT would.\n"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "download the given uri to the target-path"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "concatenate files, with automatic decompression"
+msgstr ""
+
+#: cmdline/apt-helper.cc
+msgid "detect proxy using apt.conf"
+msgstr ""
+
+#: cmdline/apt-internal-planner.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-planner\n"
+"\n"
+"apt-internal-planner is an interface to use the current internal\n"
+"installation planner for the APT family like an external one,\n"
+"for debugging or the like.\n"
+msgstr ""
+"用法:apt-extracttemplates 檔案1 [檔案2 ...]\n"
+"\n"
+"apt-extracttemplates 是用來從 debian 套件中解壓出設定檔和模æ¿è³‡è¨Š\n"
+"的工具\n"
+"\n"
+"é¸é …\n"
+" -h 本幫助訊æ¯ã€‚\n"
+" -t 指定暫存目錄\n"
+" -c=? 讀å–指定的設定檔\n"
+" -o=? 指定任æ„的設定é¸é …,例如:-o dir::cache=/tmp\n"
+
+#: cmdline/apt-internal-solver.cc
+#, fuzzy
+msgid ""
+"Usage: apt-internal-solver\n"
+"\n"
+"apt-internal-solver is an interface to use the current internal\n"
+"resolver for the APT family like an external one, for debugging or\n"
+"the like.\n"
+msgstr ""
+"用法:apt-extracttemplates 檔案1 [檔案2 ...]\n"
+"\n"
+"apt-extracttemplates 是用來從 debian 套件中解壓出設定檔和模æ¿è³‡è¨Š\n"
+"的工具\n"
+"\n"
+"é¸é …\n"
+" -h 本幫助訊æ¯ã€‚\n"
+" -t 指定暫存目錄\n"
+" -c=? 讀å–指定的設定檔\n"
+" -o=? 指定任æ„的設定é¸é …,例如:-o dir::cache=/tmp\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s can not be marked as it is not installed.\n"
+msgstr "但它å»å°šæœªå®‰è£"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to manually installed.\n"
+msgstr "%s 被設定為手動安è£ã€‚\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set to automatically installed.\n"
+msgstr "%s 被設定為手動安è£ã€‚\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already set on hold.\n"
+msgstr "%s 已經是最新版本了。\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s was already not hold.\n"
+msgstr "%s 已經是最新版本了。\n"
+
+#: cmdline/apt-mark.cc
+msgid "Executing dpkg failed. Are you root?"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "%s set on hold.\n"
+msgstr "%s 被設定為手動安è£ã€‚\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy, c-format
+msgid "Canceled hold on %s.\n"
+msgstr "無法開啟 %s"
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for purge.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for removal.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, c-format
+msgid "Selected %s for installation.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid ""
+"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
+"\n"
+"apt-mark is a simple command line interface for marking packages\n"
+"as manually or automatically installed. It can also be used to\n"
+"manipulate the dpkg(1) selection states of packages, and to list\n"
+"all packages with or without a certain marking.\n"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as automatically installed"
+msgstr "%s 被設定為手動安è£ã€‚\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Mark the given packages as manually installed"
+msgstr "請檢查是å¦å·²å®‰è£äº† 'dpkg-dev' 套件。\n"
+
+#: cmdline/apt-mark.cc
+msgid "Mark a package as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+msgid "Unset a package set as held back"
+msgstr ""
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of automatically installed packages"
+msgstr "%s 被設定為手動安è£ã€‚\n"
+
+#: cmdline/apt-mark.cc
+#, fuzzy
+msgid "Print the list of manually installed packages"
+msgstr "%s 被設定為手動安è£ã€‚\n"
+
+#: cmdline/apt-mark.cc
+msgid "Print the list of package on hold"
+msgstr ""
+
+#: cmdline/apt-sortpkgs.cc
+msgid "Unknown package record!"
+msgstr "未知的套件記錄ï¼"
+
+#: cmdline/apt-sortpkgs.cc
+msgid ""
+"Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+"\n"
+"apt-sortpkgs is a simple tool to sort package information files.\n"
+"By default it sorts by binary package information, but the -s option\n"
+"can be used to switch to source package ordering instead.\n"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid ""
+"Usage: apt [options] command\n"
+"\n"
+"apt is a commandline package manager and provides commands for\n"
+"searching and managing as well as querying information about packages.\n"
+"It provides the same functionality as the specialized APT tools,\n"
+"like apt-get and apt-cache, but enables options more suitable for\n"
+"interactive use by default.\n"
+msgstr ""
+
+#. query
+#: cmdline/apt.cc
+msgid "list packages based on package names"
+msgstr ""
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "search in package descriptions"
+msgstr "正在讀å–套件清單"
+
+#: cmdline/apt.cc
+msgid "show package details"
+msgstr ""
+
+#. package stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "install packages"
+msgstr "鎖定的套件:"
+
+#: cmdline/apt.cc
+#, fuzzy
+msgid "remove packages"
+msgstr "æ毀的套件"
+
+#. system wide stuff
+#: cmdline/apt.cc
+#, fuzzy
+msgid "update list of available packages"
+msgstr "%s 被設定為手動安è£ã€‚\n"
+
+#: cmdline/apt.cc
+msgid "upgrade the system by installing/upgrading packages"
+msgstr ""
+
+#: cmdline/apt.cc
+msgid "upgrade the system by removing/installing/upgrading packages"
+msgstr ""
+
+#. misc
+#: cmdline/apt.cc
+#, fuzzy
+msgid "edit the source information file"
+msgstr "正在讀å–狀態資料"
+
+#: dselect/install
+msgid "Bad default setting!"
+msgstr "錯誤的é è¨­è¨­å®šï¼"
+
+#: dselect/install dselect/update
+#, fuzzy
+msgid "Press [Enter] to continue."
+msgstr "請按 [Enter] éµä»¥ç¹¼çºŒé€²è¡Œã€‚"
+
+#: dselect/install
+msgid "Do you want to erase any previously downloaded .deb files?"
+msgstr "您想移除所有先å‰ä¸‹è¼‰çš„ .deb 檔嗎?"
+
+#: dselect/install
+#, fuzzy
+msgid "Some errors occurred while unpacking. Packages that were installed"
+msgstr "在解開套件時發生錯誤。我è¦æº–備設定"
+
+#: dselect/install
+#, fuzzy
+msgid "will be configured. This may result in duplicate errors"
+msgstr "套件已安è£éŽã€‚這會造æˆé‡è¤‡éŒ¯èª¤"
+
+#: dselect/install
+msgid "or errors caused by missing dependencies. This is OK, only the errors"
+msgstr "或是因為沒有相ä¾é—œä¿‚而造æˆéŒ¯èª¤ã€‚那麼這個錯誤是無關緊è¦çš„"
+
+#: dselect/install
+msgid ""
+"above this message are important. Please fix them and run [I]nstall again"
+msgstr "以上的訊æ¯ç›¸ç•¶é‡è¦ã€‚請修正它們並é‡æ–°åŸ·è¡Œå®‰è£[I]"
+
+#: dselect/update
+msgid "Merging available information"
+msgstr "æ•´åˆç¾æœ‰çš„資料"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Package extension list is too long"
+msgstr "套件延伸列表éŽé•·"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing directory %s"
+msgstr "處ç†ç›®éŒ„ %s 時發生錯誤"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Source extension list is too long"
+msgstr "原始碼的延伸列表太長"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "Error writing header to contents file"
+msgstr "寫入標頭資訊到內容檔時發生錯誤"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Error processing contents %s"
+msgstr "處ç†å…§å®¹ %s 時發生錯誤"
+
+#: ftparchive/apt-ftparchive.cc
+msgid ""
+"Usage: apt-ftparchive [options] command\n"
+"Commands: packages binarypath [overridefile [pathprefix]]\n"
+" sources srcpath [overridefile [pathprefix]]\n"
+" contents path\n"
+" release path\n"
+" generate config [groups]\n"
+" clean config\n"
+"\n"
+"apt-ftparchive generates index files for Debian archives. It supports\n"
+"many styles of generation from fully automated to functional replacements\n"
+"for dpkg-scanpackages and dpkg-scansources\n"
+"\n"
+"apt-ftparchive generates Package files from a tree of .debs. The\n"
+"Package file contains the contents of all the control fields from\n"
+"each package as well as the MD5 hash and filesize. An override file\n"
+"is supported to force the value of Priority and Section.\n"
+"\n"
+"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+"The --source-override option can be used to specify a src override file\n"
+"\n"
+"The 'packages' and 'sources' command should be run in the root of the\n"
+"tree. BinaryPath should point to the base of the recursive search and \n"
+"override file should contain the override flags. Pathprefix is\n"
+"appended to the filename fields if present. Example usage from the \n"
+"Debian archive:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"Options:\n"
+" -h This help text\n"
+" --md5 Control MD5 generation\n"
+" -s=? Source override file\n"
+" -q Quiet\n"
+" -d=? Select the optional caching database\n"
+" --no-delink Enable delinking debug mode\n"
+" --contents Control contents file generation\n"
+" -c=? Read this configuration file\n"
+" -o=? Set an arbitrary configuration option"
+msgstr ""
+"用法:apt-ftparchive [é¸é …] 指令\n"
+"指令:packages 二進制檔æœç´¢è·¯å¾‘ [é‡æ–°å®šç¾©æª” [路徑å‰ç¶´]]\n"
+" sources 原始碼æœç´¢è·¯å¾‘ [é‡æ–°å®šç¾©æª” [路徑å‰ç¶´]]\n"
+" contents æœç´¢è·¯å¾‘\n"
+" release æœç´¢è·¯å¾‘\n"
+" generate 設定檔 [群組]\n"
+" clean 設定檔\n"
+"\n"
+"apt-ftparchive å¯ç”¨ä¾†æ›¿ Debian 套件庫建立索引檔。它支æ´äº†å¾žå…¨\n"
+"自動化到足以替代 dpkg-scanpackages åŠ dpkg-scansources 所æä¾›\n"
+"的所有功能等等å„å¼å„樣建立索引的方å¼ã€‚apt-ftparchive 會根據 .deb 檔案樹建立 "
+"Package 檔。Package 檔\n"
+"裡ä¸åƒ…包å«äº†æ¯å€‹å¥—件的 control 資料的內容,還包å«äº† MD5 檢驗\n"
+"碼和檔案大å°ã€‚它還支æ´äº†é‡æ–°å®šç¾©æª”,å¯ç”¨ä¾†å¼·åˆ¶æŒ‡å®šå„ªå…ˆç­‰ç´šåŠ\n"
+"其所屬的類別。\n"
+"\n"
+"而åŒæ¨£çš„,apt-ftparchive 也能根據 .dsc æª”æ¡ˆæ¨¹ç”Ÿæˆ Source 檔。\n"
+"å¯ç”¨ --source-override é¸é …來指定一個 src é‡æ–°å®šç¾©æª”。\n"
+"\n"
+"應當在檔案樹的根目錄下執行 'packages' 和 'source' 指令。\n"
+"二進制檔的æœç´¢è·¯å¾‘必須指å‘éžè¿´æœç´¢çš„底層,且在é‡æ–°å®šç¾©æª”裡必\n"
+"é ˆåŒ…å« override 旗標。若指定了路徑å‰ç¶´æ™‚,則會被附加到檔案å\n"
+"稱這個欄ä½è£¡ã€‚以 Debian 套件庫為例:\n"
+" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+" dists/potato/main/binary-i386/Packages\n"
+"\n"
+"é¸é …:\n"
+" -h 本幫助說明\n"
+" --md5 控制如何產生 MD5 檢驗碼\n"
+" -s=? 原始碼的é‡æ–°å®šç¾©æª”\n"
+" -q 安éœæ¨¡å¼\n"
+" -d=? 指定æ­é…çš„å¿«å–資料庫\n"
+" --no-delink 啟用 DeLinking 模å¼\n"
+" --contents 產生控制內容檔\n"
+" -c=? 讀å–指定的設定檔\n"
+" -o=? 指定任æ„的設定é¸é …"
+
+#: ftparchive/apt-ftparchive.cc
+msgid "No selections matched"
+msgstr "找ä¸åˆ°ç¬¦åˆçš„é¸é …"
+
+#: ftparchive/apt-ftparchive.cc
+#, c-format
+msgid "Some files are missing in the package file group `%s'"
+msgstr "套件檔案組 `%s' 少了部份檔案"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB was corrupted, file renamed to %s.old"
+msgstr "DB å·²æ毀,檔案被更å為 %s.old"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "DB is old, attempting to upgrade %s"
+msgstr "DB éŽèˆŠï¼Œå˜—試å‡ç´š %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid ""
+"DB format is invalid. If you upgraded from an older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+"資料庫格å¼ä¸æ­£ç¢ºã€‚如果您是由舊版的 apt å‡ç´šä¸Šä¾†çš„,請移除並é‡æ–°å»ºç«‹è³‡æ–™åº«ã€‚"
+
+#: ftparchive/cachedb.cc
+#, c-format
+msgid "Unable to open DB file %s: %s"
+msgstr "無法開啟 DB 檔 %s: %s"
+
+#: ftparchive/cachedb.cc
+#, fuzzy
+msgid "Failed to read .dsc"
+msgstr "無法讀å–é€£çµ %s"
+
+#: ftparchive/cachedb.cc
+msgid "Archive has no control record"
+msgstr "套件檔沒有 control 記錄"
+
+#: ftparchive/cachedb.cc
+msgid "Unable to get a cursor"
+msgstr "無法å–å¾—éŠæ¨™"
+
+#: ftparchive/contents.cc
+msgid "realloc - Failed to allocate memory"
+msgstr "realloc - 無法é…置記憶體"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Unknown compression algorithm '%s'"
+msgstr "未知的壓縮演算法 '%s'"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Compressed output %s needs a compression set"
+msgstr "è¦å£“縮輸出 %s 需æ­é…壓縮動作"
+
+#: ftparchive/multicompress.cc methods/rsh.cc
+msgid "Failed to create IPC pipe to subprocess"
+msgstr "無法和å­ç¨‹åºå»ºç«‹ IPC 管線"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to fork"
+msgstr "fork 時失敗"
+
+#: ftparchive/multicompress.cc
+msgid "Compress child"
+msgstr "壓縮å­ç¨‹åº"
+
+#: ftparchive/multicompress.cc
+#, c-format
+msgid "Internal error, failed to create %s"
+msgstr "內部錯誤,無法建立 %s"
+
+#: ftparchive/multicompress.cc
+msgid "IO to subprocess/file failed"
+msgstr "å’Œå­ç¨‹åº/檔案 IO 失敗"
+
+#: ftparchive/multicompress.cc
+msgid "Failed to read while computing MD5"
+msgstr "在計算 MD5 時無法讀å–到資料"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Unable to open %s"
+msgstr "無法開啟 %s"
+
+#. skip spaces
+#. find end of word
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu (%s)"
+msgstr "é‡æ–°å®šç¾©æª” %s 第 %lu 行的格å¼éŒ¯èª¤ #1"
+
+#: ftparchive/override.cc
+#, c-format
+msgid "Failed to read the override file %s"
+msgstr "無法讀å–é‡æ–°å®šç¾©æª” %s"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #1"
+msgstr "é‡æ–°å®šç¾©æª” %s 第 %lu 行的格å¼éŒ¯èª¤ #1"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #2"
+msgstr "é‡æ–°å®šç¾©æª” %s 第 %lu 行的格å¼éŒ¯èª¤ #2"
+
+#: ftparchive/override.cc
+#, fuzzy, c-format
+msgid "Malformed override %s line %llu #3"
+msgstr "é‡æ–°å®šç¾©æª” %s 第 %lu 行的格å¼éŒ¯èª¤ #3"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to read directory %s\n"
+msgstr "警告:無法讀å–目錄 %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "W: Unable to stat %s\n"
+msgstr "警告:無法å–å¾— %s 狀態\n"
+
+#: ftparchive/writer.cc
+msgid "E: "
+msgstr "錯誤:"
+
+#: ftparchive/writer.cc
+msgid "W: "
+msgstr "警告:"
+
+#: ftparchive/writer.cc
+msgid "E: Errors apply to file "
+msgstr "錯誤:套用到檔案時發生錯誤"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to resolve %s"
+msgstr "ç„¡æ³•è§£æž %s"
+
+#: ftparchive/writer.cc
+msgid "Tree walking failed"
+msgstr "無法走訪目錄樹"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "Failed to open %s"
+msgstr "無法開啟 %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink %s [%s]\n"
+msgstr " DeLink %s [%s]\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid "*** Failed to link %s to %s"
+msgstr "*** 無法將 %s 連çµåˆ° %s"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " DeLink limit of %sB hit.\n"
+msgstr " é”到了 DeLink çš„ä¸Šé™ %sB。\n"
+
+#: ftparchive/writer.cc
+msgid "Archive had no package field"
+msgstr "套件檔裡沒有套件資訊"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no override entry\n"
+msgstr " %s 沒有é‡æ–°å®šç¾©é …ç›®\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s maintainer is %s not %s\n"
+msgstr " %s 的維護者是 %sï¼Œè€Œéž %s\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no source override entry\n"
+msgstr " %s 沒有原始碼é‡æ–°å®šç¾©é …ç›®\n"
+
+#: ftparchive/writer.cc
+#, c-format
+msgid " %s has no binary override entry either\n"
+msgstr " %s 也沒有二元碼é‡æ–°å®šç¾©é …ç›®\n"
+
+#: methods/basehttp.cc
+msgid "Waiting for headers"
+msgstr "等待標頭"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid reply header"
+msgstr "HTTP 伺æœå™¨å‚³é€äº†ä¸€å€‹ç„¡æ•ˆçš„回覆標頭"
+
+#: methods/basehttp.cc
+msgid "Bad header line"
+msgstr "標頭行錯誤"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr "HTTP 伺æœå™¨å‚³é€äº†ä¸€å€‹ç„¡æ•ˆçš„ Content-Length 標頭"
+
+#: methods/basehttp.cc
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr "HTTP 伺æœå™¨å‚³é€äº†ä¸€å€‹ç„¡æ•ˆçš„ Content-Range 標頭"
+
+#: methods/basehttp.cc
+msgid "This HTTP server has broken range support"
+msgstr "這個 HTTP 伺æœå™¨çš„範åœæ”¯æ´æœ‰å•é¡Œ"
+
+#: methods/basehttp.cc
+msgid "Unknown date format"
+msgstr "未知的資料格å¼"
+
+#: methods/basehttp.cc
+msgid "Bad header data"
+msgstr "錯誤的標頭資料"
+
+#: methods/basehttp.cc
+msgid "Connection failed"
+msgstr "連線失敗"
+
+#: methods/basehttp.cc
+#, c-format
+msgid ""
+"Automatically disabled %s due to incorrect response from server/proxy. (man "
+"5 apt.conf)"
+msgstr ""
+
+#: methods/basehttp.cc
+msgid "Internal error"
+msgstr "內部錯誤"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr "無法讀å–光碟片資料庫 %s"
+
+#: methods/cdrom.cc
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+"請用 apt-cdrom 來讓 APT 能辨識這張光碟。apt-get update 是ä¸èƒ½ç”¨ä¾†æ–°å¢žå…‰ç¢Ÿçš„"
+
+#: methods/cdrom.cc
+msgid "Wrong CD-ROM"
+msgstr "ä¸æ­£ç¢ºçš„光碟"
+
+#: methods/cdrom.cc
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr "無法å¸è¼‰ %s 裡的光碟片,或許它ä»åœ¨ä½¿ç”¨ä¸­ã€‚"
+
+#: methods/cdrom.cc
+msgid "Disk not found."
+msgstr "找ä¸åˆ°ç£ç¢Ÿã€‚"
+
+#: methods/cdrom.cc methods/file.cc methods/rsh.cc
+msgid "File not found"
+msgstr "找ä¸åˆ°æª”案"
+
+#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686)
+#: methods/connect.cc
+#, c-format
+msgid "Direct connection to %s domains is blocked by default."
+msgstr ""
+
+#: methods/connect.cc methods/http.cc
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr "正和 %s (%s) 連線"
+
+#: methods/connect.cc
+#, c-format
+msgid "[IP: %s %s]"
+msgstr "[IP: %s %s]"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr "無法建立 socket æŒ‡å‘ %s (f=%u t=%u p=%u)"
+
+#: methods/connect.cc
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr "無法åˆå§‹å’Œ %s:%s (%s) 的連線。"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr "無法和 %s:%s (%s) 連線,連線逾時"
+
+#: methods/connect.cc methods/ftp.cc methods/rsh.cc
+msgid "Failed"
+msgstr "失敗"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+msgstr "無法和 %s:%s (%s) 連線。"
+
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc methods/rsh.cc
+#, c-format
+msgid "Connecting to %s"
+msgstr "正連線至 %s"
+
+#: methods/connect.cc
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr "ç„¡æ³•è§£æž '%s'"
+
+#: methods/connect.cc
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr "æš«æ™‚ç„¡æ³•è§£æž '%s'"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "System error resolving '%s:%s'"
+msgstr "åœ¨è§£æž '%s:%s' (%i) 時出了怪事"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgstr "åœ¨è§£æž '%s:%s' (%i) 時出了怪事"
+
+#: methods/connect.cc
+#, fuzzy, c-format
+msgid "Unable to connect to %s:%s:"
+msgstr "無法連線至 %s %s:"
+
+#: methods/copy.cc
+msgid "Failed to stat"
+msgstr "無法å–得狀態"
+
+#: methods/file.cc
+msgid "Invalid URI, local URIS must not start with //"
+msgstr "ä¸æ­£ç¢ºçš„ URI,本機 URI ä¸æ‡‰ä»¥ // é–‹é ­"
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc
+msgid "Logging in"
+msgstr "登入中"
+
+#: methods/ftp.cc
+msgid "Unable to determine the peer name"
+msgstr "無法解æžå°æ–¹ä¸»æ©Ÿå稱"
+
+#: methods/ftp.cc
+msgid "Unable to determine the local name"
+msgstr "無法解æžæœ¬æ©Ÿå稱"
+
+#: methods/ftp.cc
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr "伺æœå™¨ä¸æŽ¥å—連線,並回應:%s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr "USER 指令失敗,伺æœå™¨å›žæ‡‰ï¼š%s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr "PASS 指令失敗,伺æœå™¨å›žæ‡‰ï¼š%s"
+
+#: methods/ftp.cc
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+"指定了代ç†ä¼ºæœå™¨ï¼Œä½†æ²’有指定登入 script,Acquire::ftp::ProxyLogin 是空的。"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr "登入 script 指令 '%s' 失敗,伺æœå™¨å›žæ‡‰ï¼š%s"
+
+#: methods/ftp.cc
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr "TYPE 指令失敗,伺æœå™¨å›žæ‡‰ï¼š%s"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Connection timeout"
+msgstr "連線逾時"
+
+#: methods/ftp.cc
+msgid "Server closed the connection"
+msgstr "伺æœå™¨å·²é—œé–‰é€£ç·š"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "A response overflowed the buffer."
+msgstr "回應超éŽç·©è¡å€é•·åº¦ã€‚"
+
+#: methods/ftp.cc
+msgid "Protocol corruption"
+msgstr "å”定失敗"
+
+#: methods/ftp.cc
+msgid "Could not create a socket"
+msgstr "無法建立 Socket"
+
+#: methods/ftp.cc
+msgid "Could not connect data socket, connection timed out"
+msgstr "無法和 data socket 連線,連線逾時"
+
+#: methods/ftp.cc
+msgid "Could not connect passive socket."
+msgstr "無法和 passive socket 連線。"
+
+#: methods/ftp.cc
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr "getaddrinfo 無法å–å¾—ç›£è½ socket"
+
+#: methods/ftp.cc
+msgid "Could not bind a socket"
+msgstr "無法 bind 至 socket"
+
+#: methods/ftp.cc
+msgid "Could not listen on the socket"
+msgstr "ç„¡æ³•ç›£è½ socket"
+
+#: methods/ftp.cc
+msgid "Could not determine the socket's name"
+msgstr "ç„¡æ³•è§£æž socket å稱"
+
+#: methods/ftp.cc
+msgid "Unable to send PORT command"
+msgstr "無法é€å‡º PORT 指令"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr "未知的地å€å®¶æ— %u (AF_*)"
+
+#: methods/ftp.cc
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr "EPRT 指令失敗,伺æœå™¨å›žæ‡‰ï¼š%s"
+
+#: methods/ftp.cc
+msgid "Data socket connect timed out"
+msgstr "Data socket 連線逾時"
+
+#: methods/ftp.cc
+msgid "Unable to accept connection"
+msgstr "無法接å—連線"
+
+#: methods/ftp.cc methods/http.cc methods/rsh.cc
+msgid "Problem hashing file"
+msgstr "有å•é¡Œçš„雜湊檔"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr "無法å–得檔案,伺æœå™¨å›žæ‡‰ '%s'"
+
+#: methods/ftp.cc methods/rsh.cc
+msgid "Data socket timed out"
+msgstr "Data socket 連線逾時"
+
+#: methods/ftp.cc
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr "資料傳輸失敗,伺æœå™¨å›žæ‡‰ '%s'"
+
+#. Get the files information
+#: methods/ftp.cc
+msgid "Query"
+msgstr "查詢"
+
+#: methods/ftp.cc
+msgid "Unable to invoke "
+msgstr "無法 invoke "
+
+#. TRANSLATORS: %s is a single techy word like 'NODATA'
+#: methods/gpgv.cc
+#, c-format
+msgid ""
+"Signed file isn't valid, got '%s' (does the network require authentication?)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "At least one invalid signature was encountered."
+msgstr "至少發ç¾ä¸€å€‹ç„¡æ•ˆçš„簽章。"
+
+#: methods/gpgv.cc
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr "內部錯誤:簽章無誤,但å»ç„¡æ³•è¾¨è­˜å¯†é‘°çš„指紋碼?ï¼"
+
+#: methods/gpgv.cc
+#, fuzzy
+msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)"
+msgstr "無法執行 '%s' 來驗證簽章(gnupg 是å¦å®‰è£äº†ï¼Ÿï¼‰"
+
+#: methods/gpgv.cc
+msgid "Unknown error executing apt-key"
+msgstr "在執行 apt-key 時發生未知的錯誤"
+
+#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners.
+#: methods/gpgv.cc
+#, c-format
+msgid "Signature by key %s uses weak digest algorithm (%s)"
+msgstr ""
+
+#: methods/gpgv.cc
+msgid "The following signatures were invalid:\n"
+msgstr "以下簽å無效:\n"
+
+#: methods/gpgv.cc
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr "由於無法å–得它們的公鑰,以下簽章無法進行驗證:\n"
+
+#: methods/http.cc
+msgid "Error writing to the file"
+msgstr "在寫入該檔時發生錯誤"
+
+#: methods/http.cc
+msgid "Error reading from server. Remote end closed connection"
+msgstr "在讀å–伺æœå™¨æ™‚發生錯誤,é ç«¯ä¸»æ©Ÿå·²é—œé–‰é€£ç·š"
+
+#: methods/http.cc
+msgid "Error reading from server"
+msgstr "在讀å–伺æœå™¨æ™‚發生錯誤"
+
+#: methods/http.cc
+msgid "Error writing to file"
+msgstr "在寫入檔案時發生錯誤"
+
+#: methods/http.cc
+msgid "Select failed"
+msgstr "é¸æ“‡å¤±æ•—"
+
+#: methods/http.cc
+msgid "Connection timed out"
+msgstr "連線逾時"
+
+#: methods/http.cc
+msgid "Error writing to output file"
+msgstr "在寫入輸出檔時發生錯誤"
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, c-format
+msgid "No mirror file '%s' found "
+msgstr ""
+
+#. FIXME: fallback to a default mirror here instead
+#. and provide a config option to define that default
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "Can not read mirror file '%s'"
+msgstr "無法開啟檔案 %s"
+
+#: methods/mirror.cc
+#, fuzzy, c-format
+msgid "No entry found in mirror file '%s'"
+msgstr "無法開啟檔案 %s"
+
+#: methods/mirror.cc
+#, c-format
+msgid "[Mirror: %s]"
+msgstr ""
+
+#: methods/rred.cc
+msgid "Failed to set modification time"
+msgstr "無法設定修改時間"
+
+#: methods/rsh.cc
+msgid "Connection closed prematurely"
+msgstr "連線çªç„¶çµ‚æ­¢"
+
+#: methods/store.cc
+msgid "Empty files can't be valid archives"
+msgstr ""
+
+#~ msgid "Unmet dependencies. Try using --fix-broken."
+#~ msgstr "未能滿足相ä¾é—œä¿‚。試試 --fix-broken é¸é …。"
+
+#~ msgid "You might want to run 'apt --fix-broken install' to correct these:"
+#~ msgstr "您也許得執行 'apt --fix-broken install' 以修正這些å•é¡Œï¼š"
+
+#~ msgid "(not found)"
+#~ msgstr "(未找到)"
+
+#~ msgid " Package pin: "
+#~ msgstr " 套件鎖定:"
+
+#~ msgid "There is no public key available for the following key IDs:\n"
+#~ msgstr "無法å–得以下的密鑰 ID 的公鑰:\n"
+
+#, fuzzy
+#~ msgid "The repository is insufficiently signed by key %s (%s)"
+#~ msgstr "路徑 %s 已被抽æ›"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
+#~ "packages"
+#~ msgstr "無法滿足 %2$s 所è¦æ±‚çš„ %1$s 相ä¾é—œä¿‚,因為找ä¸åˆ°å¥—件 %3$s"
+
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#~ "found"
+#~ msgstr "無法滿足 %2$s 所è¦æ±‚çš„ %1$s 相ä¾é—œä¿‚,因為找ä¸åˆ°å¥—件 %3$s"
+
+#~ msgid ""
+#~ "Failed to satisfy %s dependency for %s: Installed package %s is too new"
+#~ msgstr "無法滿足 %2$s 的相ä¾é—œä¿‚ %1$s:已安è£çš„套件 %3$s 太新了"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because candidate version of "
+#~ "package %s can't satisfy version requirements"
+#~ msgstr ""
+#~ "無法滿足 %2$s 所è¦æ±‚çš„ %1$s 相ä¾é—œä¿‚,因為套件 %3$s 沒有版本符åˆå…¶ç‰ˆæœ¬éœ€æ±‚"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s dependency for %s cannot be satisfied because package %s has no "
+#~ "candidate version"
+#~ msgstr "無法滿足 %2$s 所è¦æ±‚çš„ %1$s 相ä¾é—œä¿‚,因為找ä¸åˆ°å¥—件 %3$s"
+
+#~ msgid "Failed to satisfy %s dependency for %s: %s"
+#~ msgstr "無法滿足 %2$s 的相ä¾é—œä¿‚ %1$s:%3$s"
+
+#~ msgid "Build-dependencies for %s could not be satisfied."
+#~ msgstr "無法滿足套件 %s 的編譯相ä¾é—œä¿‚。"
+
+#~ msgid "Problem unlinking %s"
+#~ msgstr "在å–消 %s 的連çµæ™‚發生å•é¡Œ"
+
+#~ msgid "Failed to unlink %s"
+#~ msgstr "ç„¡æ³•ç§»é™¤é€£çµ %s"
+
+#~ msgid ""
+#~ "Usage: apt-cache [options] command\n"
+#~ " apt-cache [options] show pkg1 [pkg2 ...]\n"
+#~ "\n"
+#~ "apt-cache is a low-level tool used to query information\n"
+#~ "from APT's binary cache files\n"
+#~ msgstr ""
+#~ "用法:apt-cache [é¸é …] 指令\n"
+#~ " apt-cache [é¸é …] show 套件1 [套件2 ...]\n"
+#~ "\n"
+#~ "apt-cache 是一個低階的工具,å¯ç”¨ä¾†æ“作 APT 的二進制快å–檔,也å¯ç”¨ä¾†\n"
+#~ "查詢那些檔案中的相關訊æ¯\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -p=? The package cache.\n"
+#~ " -s=? The source cache.\n"
+#~ " -q Disable progress indicator.\n"
+#~ " -i Show only important deps for the unmet command.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
+#~ msgstr ""
+#~ "é¸é …:\n"
+#~ " -h 本幫助訊æ¯ã€‚\n"
+#~ " -p=? 套件的快å–。\n"
+#~ " -s=? 原始碼的快å–。\n"
+#~ " -q 關閉進度顯示。\n"
+#~ " -i 僅為 unmet 指令顯示é‡è¦çš„相ä¾é—œä¿‚。\n"
+#~ " -c=? 讀å–指定的設定檔\n"
+#~ " -o=? 指定任æ„的設定é¸é …,例如:-o dir::cache=/tmp\n"
+#~ "è«‹åƒé–± apt-cache(8) åŠ apt.conf(5) åƒè€ƒæ‰‹å†Šä»¥å–得更多資訊。\n"
+
+#~ msgid ""
+#~ "Options:\n"
+#~ " -h This help text.\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "é¸é …:\n"
+#~ " -h 本幫助訊æ¯ã€‚\n"
+#~ " -c=? 讀å–指定的設定檔\n"
+#~ " -o=? 指定任æ„的設定é¸é …,例如:-o dir::cache=/tmp\n"
+
+#~ msgid ""
+#~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs is a simple tool to sort package files. The -s option is "
+#~ "used\n"
+#~ "to indicate what kind of file it is.\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -h This help text\n"
+#~ " -s Use source file sorting\n"
+#~ " -c=? Read this configuration file\n"
+#~ " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#~ msgstr ""
+#~ "用法:apt-sortpkgs [é¸é …] 檔案1 [檔案2 ...]\n"
+#~ "\n"
+#~ "apt-sortpkgs 是用來排åºå¥—件檔的簡單工具。-s é¸é …是用來指定它的檔案類型。\n"
+#~ "\n"
+#~ "é¸é …:\n"
+#~ " -h 本幫助訊æ¯ã€‚\n"
+#~ " -s 根據原始檔排åº\n"
+#~ " -c=? 讀å–指定的設定檔\n"
+#~ " -o=? 指定任æ„的設定é¸é …,例如:-o dir::cache=/tmp\n"
+
+#~ msgid "Child process failed"
+#~ msgstr "å­ç¨‹åºå¤±æ•—"
+
+#, fuzzy
+#~ msgid "Must specifc at least one srv record"
+#~ msgstr "在å–得原始碼時必須至少指定一個套件"
+
+#~ msgid "Failed to create pipes"
+#~ msgstr "無法建立管線"
+
+#~ msgid "Failed to exec gzip "
+#~ msgstr "無法執行 gzip"
+
+#~ msgid "%s %s for %s compiled on %s %s\n"
+#~ msgstr "%s %s 是用於 %s 並在 %s %s 上編譯的\n"
+
+#~ msgid "Failed to create FILE*"
+#~ msgstr "無法建立 FILE*"
+
+#, fuzzy
+#~ msgid "Malformed stanza %u in source list %s (URI parse)"
+#~ msgstr "來æºåˆ—表 %2$s 中的 %1$lu 行的格å¼éŒ¯èª¤ï¼ˆURI 分æžï¼‰"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] unparseable)"
+#~ msgstr "來æºåˆ—表 %2$s 中的 %1$lu 行的格å¼éŒ¯èª¤ï¼ˆç™¼è¡Œç‰ˆåˆ†æžï¼‰"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([option] too short)"
+#~ msgstr "來æºåˆ—表 %2$s 中的 %1$lu 行的格å¼éŒ¯èª¤ï¼ˆç™¼è¡Œç‰ˆï¼‰"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
+#~ msgstr "來æºåˆ—表 %2$s 中的 %1$lu 行的格å¼éŒ¯èª¤ï¼ˆç™¼è¡Œç‰ˆåˆ†æžï¼‰"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] has no key)"
+#~ msgstr "來æºåˆ—表 %2$s 中的 %1$lu 行的格å¼éŒ¯èª¤ï¼ˆç™¼è¡Œç‰ˆåˆ†æžï¼‰"
+
+#, fuzzy
+#~ msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
+#~ msgstr "來æºåˆ—表 %2$s 中的 %1$lu 行的格å¼éŒ¯èª¤ï¼ˆç™¼è¡Œç‰ˆåˆ†æžï¼‰"
+
+#~ msgid "Malformed line %lu in source list %s (URI)"
+#~ msgstr "來æºåˆ—表 %2$s 中的 %1$lu 行的格å¼éŒ¯èª¤ (URI)"
+
+#~ msgid "Malformed line %lu in source list %s (dist)"
+#~ msgstr "來æºåˆ—表 %2$s 中的 %1$lu 行的格å¼éŒ¯èª¤ï¼ˆç™¼è¡Œç‰ˆï¼‰"
+
+#~ msgid "Malformed line %lu in source list %s (URI parse)"
+#~ msgstr "來æºåˆ—表 %2$s 中的 %1$lu 行的格å¼éŒ¯èª¤ï¼ˆURI 分æžï¼‰"
+
+#~ msgid "Malformed line %lu in source list %s (absolute dist)"
+#~ msgstr "來æºåˆ—表 %2$s 中的 %1$lu 行的格å¼éŒ¯èª¤ï¼ˆçµ•å°ç™¼è¡Œç‰ˆï¼‰"
+
+#~ msgid "Malformed line %lu in source list %s (dist parse)"
+#~ msgstr "來æºåˆ—表 %2$s 中的 %1$lu 行的格å¼éŒ¯èª¤ï¼ˆç™¼è¡Œç‰ˆåˆ†æžï¼‰"
+
+#~ msgid "Package %s %s was not found while processing file dependencies"
+#~ msgstr "在計算檔案相ä¾æ€§æ™‚找ä¸åˆ°å¥—件 %s %s"
+
+#~ msgid "Couldn't stat source package list %s"
+#~ msgstr "無法å–得來æºå¥—件列表 %s 的狀態"
+
+#~ msgid "Collecting File Provides"
+#~ msgstr "正在收集檔案æ供者"
+
+#, fuzzy
+#~ msgid "Unable to find hash sum for '%s' in Release file"
+#~ msgstr "無法辨別 Release 檔 %s"
+
+#~ msgid "Vendor block %s contains no fingerprint"
+#~ msgstr "æ供者å€å¡Š %s 沒有包å«æŒ‡ç´‹ç¢¼"
+
+#~ msgid "Total dependency version space: "
+#~ msgstr "相ä¾ç‰ˆæœ¬ç©ºé–“åˆè¨ˆï¼š"
+
+#~ msgid "You don't have enough free space in %s"
+#~ msgstr "在 %s 裡沒有足夠的的未使用空間"
+
+#~ msgid "Done"
+#~ msgstr "完æˆ"
+
+#, fuzzy
+#~ msgid "No keyring installed in %s."
+#~ msgstr "放棄安è£ã€‚"
+
+#, fuzzy
+#~ msgid "Internal error, Upgrade broke stuff"
+#~ msgstr "內部錯誤,AllUpgrade 造æˆäº†æ壞"
+
+#~ msgid "%s not a valid DEB package."
+#~ msgstr "%s 並ä¸æ˜¯æ­£ç¢ºçš„ DEB 套件。"
+
+#~ msgid ""
+#~ "Using CD-ROM mount point %s\n"
+#~ "Mounting CD-ROM\n"
+#~ msgstr ""
+#~ "使用光碟機掛載點 %s\n"
+#~ "正在掛載光碟機\n"
+
+#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"
+#~ msgstr "這是個ä¸æ­£ç¢ºçš„ DEB 套件檔,沒有 '%s', '%s' 或 '%s' æˆå“¡"
+
+#~ msgid "MD5Sum mismatch"
+#~ msgstr "MD5Sum ä¸ç¬¦"
+
+#~ msgid ""
+#~ "I wasn't able to locate a file for the %s package. This might mean you "
+#~ "need to manually fix this package."
+#~ msgstr "找ä¸åˆ° %s 套件的æŸå€‹æª”案。這æ„味著您å¯èƒ½è¦æ‰‹å‹•ä¿®å¾©é€™å€‹å¥—件。"
+
+#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+#~ msgstr "無法寫入記錄檔,openpty() 失敗(/dev/pts 未掛載?)\n"
+
+#, fuzzy
+#~ msgid "Skipping nonexistent file %s"
+#~ msgstr "開啟設定檔 %s"
+
+#~ msgid "Failed to remove %s"
+#~ msgstr "無法移除 %s"
+
+#~ msgid "Unable to create %s"
+#~ msgstr "無法建立 %s"
+
+#~ msgid "Failed to stat %sinfo"
+#~ msgstr "無法å–å¾— %sinfo 的狀態"
+
+#~ msgid "The info and temp directories need to be on the same filesystem"
+#~ msgstr "資料目錄與暫存目錄需ä½æ–¼åŒä¸€æª”案系統中"
+
+#~ msgid "Failed to change to the admin dir %sinfo"
+#~ msgstr "無法切æ›è‡³ç®¡ç†è€…目錄 %sinfo"
+
+#~ msgid "Internal error getting a package name"
+#~ msgstr "內部錯誤,無法å–得套件å稱"
+
+#~ msgid "Reading file listing"
+#~ msgstr "正在讀å–檔案清單"
+
+#~ msgid ""
+#~ "Failed to open the list file '%sinfo/%s'. If you cannot restore this file "
+#~ "then make it empty and immediately re-install the same version of the "
+#~ "package!"
+#~ msgstr ""
+#~ "無法開啟清單檔 %sinfo/%s。如果您無法將此檔案還原,請清除檔案內容,然後立å³"
+#~ "é‡æ–°å®‰è£åŒä¸€ç‰ˆæœ¬çš„套件ï¼"
+
+#~ msgid "Failed reading the list file %sinfo/%s"
+#~ msgstr "無法讀å–清單檔 %sinfo/%s"
+
+#~ msgid "Internal error getting a node"
+#~ msgstr "內部錯誤,無法å–得節點"
+
+#~ msgid "Failed to open the diversions file %sdiversions"
+#~ msgstr "讀å–抽æ›æª” %sdiversions 失敗"
+
+#~ msgid "The diversion file is corrupted"
+#~ msgstr "抽æ›æª”å·²æ壞"
+
+#~ msgid "Invalid line in the diversion file: %s"
+#~ msgstr "在抽æ›æª”中的這一行有誤:%s"
+
+#~ msgid "Internal error adding a diversion"
+#~ msgstr "內部錯誤:在新增抽æ›è³‡æ–™æ™‚發生錯誤"
+
+#~ msgid "The pkg cache must be initialized first"
+#~ msgstr "套件快å–必須先åˆå§‹åŒ–"
+
+#~ msgid "Failed to find a Package: header, offset %lu"
+#~ msgstr "找ä¸åˆ°å¥—件:檔案標頭,ä½ç§» %lu"
+
+#~ msgid "Bad ConfFile section in the status file. Offset %lu"
+#~ msgstr "在 status 檔中的 ConfFile å€æ®µæ壞。ä½ç§» %lu"
+
+#~ msgid "Error parsing MD5. Offset %lu"
+#~ msgstr "åœ¨è§£æž MD5 時發生錯誤。ä½ç§» %lu"
+
+#~ msgid "Couldn't change to %s"
+#~ msgstr "無法切æ›è‡³ %s"
+
+#~ msgid "Failed to locate a valid control file"
+#~ msgstr "找ä¸åˆ°å¯ç”¨çš„ control 檔"
+
+#~ msgid "Couldn't open pipe for %s"
+#~ msgstr "無法開啟管線給 %s 使用"
+
+#~ msgid "Read error from %s process"
+#~ msgstr "ç”± %s 程åºè®€å–錯誤"
+
+#~ msgid "Got a single header line over %u chars"
+#~ msgstr "å–å¾—ä¸€å€‹å–®è¡Œè¶…éŽ %u 字元的標頭"
+
+#~ msgid "Malformed override %s line %lu #1"
+#~ msgstr "é‡æ–°å®šç¾©æª” %s 第 %lu 行的格å¼éŒ¯èª¤ #1"
+
+#~ msgid "Malformed override %s line %lu #2"
+#~ msgstr "é‡æ–°å®šç¾©æª” %s 第 %lu 行的格å¼éŒ¯èª¤ #2"
+
+#~ msgid "Malformed override %s line %lu #3"
+#~ msgstr "é‡æ–°å®šç¾©æª” %s 第 %lu 行的格å¼éŒ¯èª¤ #3"
+
+#~ msgid "decompressor"
+#~ msgstr "解壓縮程å¼"
+
+#~ msgid "read, still have %lu to read but none left"
+#~ msgstr "讀å–,ä»æœ‰ %lu 未讀但已無空間"
+
+#~ msgid "write, still have %lu to write but couldn't"
+#~ msgstr "寫入,ä»æœ‰ %lu 待寫入但已沒辨法"
+
+#~ msgid "Error occurred while processing %s (NewPackage)"
+#~ msgstr "åœ¨è™•ç† %s 時發生錯誤 (NewPackage)"
+
+#~ msgid "Error occurred while processing %s (UsePackage1)"
+#~ msgstr "åœ¨è™•ç† %s 時發生錯誤 (UsePackage1)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc1)"
+#~ msgstr "åœ¨è™•ç† %s 時發生錯誤 (NewFileDesc1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage2)"
+#~ msgstr "åœ¨è™•ç† %s 時發生錯誤 (UsePackage2)"
+
+#~ msgid "Error occurred while processing %s (NewFileVer1)"
+#~ msgstr "åœ¨è™•ç† %s 時發生錯誤 (NewFileVer1)"
+
+#, fuzzy
+#~ msgid "Error occurred while processing %s (NewVersion%d)"
+#~ msgstr "åœ¨è™•ç† %s 時發生錯誤 (NewVersion1)"
+
+#~ msgid "Error occurred while processing %s (UsePackage3)"
+#~ msgstr "åœ¨è™•ç† %s 時發生錯誤 (UsePackage3)"
+
+#~ msgid "Error occurred while processing %s (NewFileDesc2)"
+#~ msgstr "åœ¨è™•ç† %s 時發生錯誤 (NewFileDesc2)"
+
+#~ msgid "Error occurred while processing %s (FindPkg)"
+#~ msgstr "åœ¨è™•ç† %s 時發生錯誤 (FindPkg)"
+
+#~ msgid "Error occurred while processing %s (CollectFileProvides)"
+#~ msgstr "åœ¨è™•ç† %s 時發生錯誤 (CollectFileProvides)"
+
+#~ msgid "Internal error, could not locate member"
+#~ msgstr "內部錯誤:無法找到æˆå“¡"
+
+#, fuzzy
+#~ msgid "Release file expired, ignoring %s (invalid since %s)"
+#~ msgstr "Release 檔已éŽæœŸï¼Œç•¥éŽ %sï¼ˆæœ‰æ•ˆæœŸé™ %s)"
+
+#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+#~ msgstr "錯誤:Acquire::gpgv::Options çš„åƒæ•¸åˆ—表éŽé•·ã€‚çµæŸåŸ·è¡Œã€‚"
+
+#~ msgid "Error occurred while processing %s (NewVersion2)"
+#~ msgstr "åœ¨è™•ç† %s 時發生錯誤 (NewVersion2)"
+
+#~ msgid "Malformed line %u in source list %s (vendor id)"
+#~ msgstr "來æºåˆ—表 %2$s 中的第 %1$u 行的格å¼éŒ¯èª¤ï¼ˆæ供者 ID)"
+
+#~ msgid "Couldn't access keyring: '%s'"
+#~ msgstr "無法存å–鑰匙圈:'%s'"
+
+#~ msgid "Could not patch file"
+#~ msgstr "無法修補檔案"
+
+#~ msgid " %4i %s\n"
+#~ msgstr " %4i %s\n"
+
+#~ msgid "%4i %s\n"
+#~ msgstr "%4i %s\n"
+
+#~ msgid "Processing triggers for %s"
+#~ msgstr "正在進行 %s 的觸發程å¼"
diff --git a/prepare-release b/prepare-release
new file mode 100755
index 000000000..8c4e0978b
--- /dev/null
+++ b/prepare-release
@@ -0,0 +1,315 @@
+#!/bin/sh
+set -e
+
+cd "$(readlink -f $(dirname $0))"
+
+if [ -n "${GBP_BUILD_DIR}" ]; then
+ cd "$GBP_BUILD_DIR"
+fi
+
+VERSION=$(dpkg-parsechangelog | sed -n -e '/^Version:/s/^Version: //p')
+DISTRIBUTION=$(dpkg-parsechangelog | sed -n -e '/^Distribution:/s/^Distribution: //p')
+
+LIBAPTPKGVERSION="$(awk -v ORS='.' '/^\#define APT_PKG_M/ {print $3}' apt-pkg/contrib/macros.h | sed 's/\.$//')"
+LIBAPTINSTVERSION="$(sed -nr 's/set\(MAJOR ([^)]*)\)/\1/p' apt-inst/CMakeLists.txt)"
+
+librarysymbolsfromfile() {
+ local MISSING="$(grep '^+#MISSING' "$1")"
+ local SYMVER="$2"
+ echo '=== Missing optional symbols:'
+ echo -n "$MISSING" | grep '|optional=' || true
+ echo '=== Missing required symbols:'
+ echo -n "$MISSING" | grep -v '|optional=' || true
+ echo '=== New symbols:'
+ grep '^+ ' "$1" | grep -v '^+ (c++' | cut -d' ' -f 2 | cut -d'@' -f 1 | c++filt | while read line; do
+ echo " (c++)\"${line}@${SYMVER}\" $VERSION"
+ done | sort -u
+}
+
+test_deb_control() {
+ echo "Package: apt-test-depends"
+ echo "Version: 1.0"
+ echo "Architecture: all"
+ printf "Depends:"
+ (
+ for i in Build-Depends Build-Depends-Indep Build-Depends-Arch; do
+ grep-dctrl -ns $i -S apt ./debian/control && echo ,
+ done
+ grep-dctrl -ns Depends -F Tests run-tests ./debian/tests/control
+ ) | tr '\n' ' '\
+ | sed -r -e 's#<[^,<>()@]*>##g' \
+ -e 's#@[^,<>()@]*@##g' \
+ -e 's#dpkg-dev \([^)]*\)#dpkg-dev#g' \
+ -e 's#debhelper \([^)]*\)#debhelper#g' \
+ -e 's#@##g' \
+ -e 's#,(\s+,)+#, #g' \
+ -e 's#\s+# #g'
+}
+
+if [ "$1" = 'pre-export' ]; then
+ libraryversioncheck() {
+ local LIBRARY="$1"
+ local VERSION="$2"
+ if [ ! -e "debian/${LIBRARY}${VERSION}.symbols" ]; then
+ echo >&2 "Library ${LIBRARY} in version ${VERSION} has no symbols file! (maybe forgot to rename?)"
+ exit 1
+ fi
+ if [ "$(head -n1 "debian/${LIBRARY}${VERSION}.symbols")" != "${LIBRARY}.so.${VERSION} ${LIBRARY}${VERSION} #MINVER#" ]; then
+ echo >&2 "Library ${LIBRARY}${VERSION} has incorrect version in symbol header! (»$(head -n1 "debian/${LIBRARY}${VERSION}.symbols")«)"
+ exit 2
+ fi
+ }
+
+ libraryversioncheck 'libapt-pkg' "$LIBAPTPKGVERSION"
+ libraryversioncheck 'libapt-inst' "$LIBAPTINSTVERSION"
+
+
+ if [ "$DISTRIBUTION" = 'sid' ]; then
+ echo >&2 '»sid« is not a valid distribution. Replace it with »unstable« for you'
+ sed -i -e 's/) sid; urgency=/) unstable; urgency=/' debian/changelog
+ DISTRIBUTION='unstable'
+ elif [ "$DISTRIBUTION" = 'UNRELEASED' ]; then
+ echo >&2 'WARNING: Remember to change to a valid distribution for release'
+ VERSION="$VERSION~$(date +%Y%m%d)"
+ fi
+
+ sed -i -e "s/^set(PACKAGE_VERSION \".*\")$/set(PACKAGE_VERSION \"${VERSION}\")/" CMakeLists.txt
+ sed -i -e "s/^<!ENTITY apt-product-version \".*\">$/<!ENTITY apt-product-version \"${VERSION}\">/" doc/apt-verbatim.ent
+
+ # update the last-modification field of manpages based on git changes
+ grep --files-with-matches '<date>' doc/*.xml | while read file; do \
+ LASTMOD="$(date -d "@$(git log --format='%at' --max-count=1 --invert-grep --fixed-strings --grep 'review
+typo
+release
+Git-Dch: Ignore' "$file")" '+%Y-%m-%dT00:00:00Z')"
+ sed -i -e "s#^\([ ]\+\)<date>.*</date>\$#\1<date>$LASTMOD</date>#" "$file"
+ done
+
+ if [ "$(date +%Y-%m-%d)" != "$(grep --max-count=1 '^"POT-Creation-Date: .*\n"$' po/apt-all.pot | cut -d' ' -f 2)" -o \
+ "$(date +%Y-%m-%d)" != "$(grep --max-count=1 '^"POT-Creation-Date: .*\n"$' doc/po/apt-doc.pot | cut -d' ' -f 2)" ]; then
+ echo >&2 'POT files are not up-to-date. Execute »make update-po« for you…'
+ [ -e build ] || mkdir build
+ ( cd build && cmake .. )
+ cmake --build build --target update-po -- -j 4
+ fi
+elif [ "$1" = 'pre-build' ]; then
+ if [ "$DISTRIBUTION" = "UNRELEASED" ]; then
+ echo 'BUILDING AN UNRELEASED VERSION'
+ else
+ CONFVERSION="$(sed -ne "s/^set(PACKAGE_VERSION \"\(.*\)\")$/\1/p" CMakeLists.txt)"
+ if [ "$VERSION" != "$CONFVERSION" ]; then
+ echo "changelog (${VERSION}) and CMakeLists.txt (${CONFVERSION}) talk about different versions!"
+ echo "You probably want to run »./prepare-release pre-export« to fix this."
+ exit 1
+ fi
+ fi
+elif [ "$1" = 'post-build' ]; then
+ if [ "$DISTRIBUTION" != "UNRELEASED" ]; then
+ echo >&2 "REMEMBER: Tag this release with »git tag -s ${VERSION}« if you are satisfied"
+ else
+ echo >&2 'REMEMBER: Change to a valid distribution before release'
+ fi
+
+ dpkg-checkbuilddeps -d 'libxml2-utils'
+
+ HEADERBLUEPRINT="$(mktemp)"
+ sed -n '1,/^$/p' doc/apt.8.xml > "$HEADERBLUEPRINT"
+ find doc -mindepth 1 -maxdepth 1 -type f -name '*.xml' | while read FILE; do
+ if ! sed -n '1,/^$/p' "$FILE" | cmp "$HEADERBLUEPRINT" - >/dev/null 2>&1; then
+ echo >&2 "WARNING: Manpage $FILE has not the usual header! (see diff below)"
+ sed -n '1,/^$/p' "$FILE" | diff -u "$HEADERBLUEPRINT" - || true
+ fi
+ done
+ sed -n '1,/^$/p' doc/guide.dbk > "$HEADERBLUEPRINT"
+ find doc -mindepth 1 -maxdepth 1 -type f -name '*.dbk' | while read FILE; do
+ if ! sed -n '1,/^$/p' "$FILE" | cmp "$HEADERBLUEPRINT" - >/dev/null 2>&1; then
+ echo >&2 "WARNING: Documentation $FILE has not the usual header (see diff below)!"
+ sed -n '1,/^$/p' "$FILE" | diff -u "$HEADERBLUEPRINT" - || true
+ fi
+ done
+ rm "$HEADERBLUEPRINT"
+
+ # check the manpages with each vendor for vendor-specific errors…
+ find vendor -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 2 | while read DISTRO; do
+ ln -sf ../vendor/${DISTRO}/apt-vendor.ent doc
+ if ! xmllint --nonet --valid --noout $(find doc/ -maxdepth 1 -name '*.xml'); then
+ echo >&2 "WARNING: original docbook manpages have errors with vendor ${DISTRO}!"
+ fi
+ done
+ # lets assume we will always have a german manpage translation
+ if [ -e */doc/de/ -o -e doc/de ]; then
+ # … but check the translations only with one vendor for translation-specific errors
+ if ! xmllint --path /vendor/$(./vendor/getinfo current)/ \
+ --path doc/ \
+ --nonet --valid --noout $(find doc/ */doc/ -mindepth 2 -maxdepth 2 -name '*.xml'); then
+ echo >&2 "WARNING: translated docbook manpages have errors!"
+ fi
+ else
+ echo >&2 "ERROR: translated manpages need to be build before they can be checked!"
+ fi
+ rm -f doc/apt-vendor.ent
+
+elif [ "$1" = 'library' ]; then
+ librarysymbols() {
+ local libname=$(echo "${1}" | cut -c 4-)
+ local buildlib="build/bin/${1}.so.${2}"
+ for dir in $libname */$libname; do
+ local new_buildlib="$dir/${1}.so.${2}"
+ if [ -r "${new_buildlib}" ] && [ ! -e "$buildlib" -o "$new_buildlib" -nt "$buildlib" ]; then
+ local buildlib="${new_buildlib}"
+ fi
+ done
+ if [ ! -r "$buildlib" ]; then
+ echo "ERROR: The library ${1} has to be built before symbols can be checked!"
+ return
+ fi
+ echo "Checking $1 in version $2 build at $(stat -L -c '%y' "$buildlib")"
+ local tmpfile=$(mktemp)
+ dpkg-gensymbols -p${1}${2} -e${buildlib} -Idebian/${1}${2}.symbols -O/dev/null 2> /dev/null > $tmpfile || true
+ librarysymbolsfromfile "$tmpfile" "$(echo "${1}" | cut -c 4- | tr -d '-' | tr 'a-z' 'A-Z')_${2}"
+ rm -f $tmpfile
+ }
+ librarysymbols 'libapt-pkg' "${LIBAPTPKGVERSION}"
+ echo
+ librarysymbols 'libapt-inst' "${LIBAPTINSTVERSION}"
+elif [ "$1" = 'buildlog' ]; then
+ while [ -n "$2" ]; do
+ librarysymbolsfromfile "$2" 'UNKNOWN'
+ shift
+ done
+elif [ "$1" = 'travis-ci' ]; then
+ apt-get install -qy --no-install-recommends dctrl-tools equivs gdebi-core moreutils
+
+ test_deb_control > test-control
+ equivs-build test-control
+ gdebi -n apt-test-depends_1.0_all.deb
+elif [ "$1" = 'coverage' ]; then
+ DIR="${2:-./coverage}"
+ git clean -dfX # remove ignored build artefacts for a clean start
+ make CFLAGS+='--coverage' CXXFLAGS+='--coverage'
+ LCOVRC='--rc geninfo_checksum=1 --rc lcov_branch_coverage=1'
+ mkdir "$DIR"
+ lcov --no-external --directory . --capture --initial --output-file "${DIR}/apt.coverage.init" ${LCOVRC}
+ make test || true
+ ./test/integration/run-tests -q || true
+ lcov --no-external --directory . --capture --output-file "${DIR}/apt.coverage.run" ${LCOVRC}
+ lcov -a "${DIR}/apt.coverage.init" -a "${DIR}/apt.coverage.run" -o "${DIR}/apt.coverage.total" ${LCOVRC}
+ cp "${DIR}/apt.coverage.total" "${DIR}/apt.coverage.fixed"
+ rewritefile() {
+ file="$1"
+ shift
+ name="$(basename "$file")"
+ while [ -n "$1" ]; do
+ if [ -r "$1/$name" ]; then
+ sed -i "s#$file#$1/$name#" "${DIR}/apt.coverage.fixed"
+ break
+ fi
+ shift
+ done
+ if [ -z "$1" ]; then
+ echo >&2 "Coverage data captured for unknown file $file"
+ fi
+ }
+ grep 'build/include/' "${DIR}/apt.coverage.fixed" | sed "s#^SF:$(pwd)/##" | while read file; do
+ rewritefile "$file" 'apt-pkg' 'apt-pkg/deb' 'apt-pkg/edsp' 'apt-pkg/contrib' \
+ 'apt-inst' 'apt-inst/deb' 'apt-inst/contrib' 'apt-private'
+ done
+ genhtml --output-directory "${DIR}" "${DIR}/apt.coverage.fixed" ${LCOVRC}
+elif [ "$1" = 'spellcheckers' ]; then
+ echo '### codespell in source directories:'
+ codespell --enable-colors $(find . -mindepth 1 -maxdepth 1 -type d \! -name '.git' \! -name 'doc' \! -name 'po' \! -name 'build' \! -name 'test') | \
+ grep -v '^.*debian/changelog.*Troup.*==>.*Troupe.*$' || true
+ echo '### codespell in testcases:'
+ codespell $(find test -type f \! -name 'status-*' \! -name 'Packages-*' \! -name '*.deb' \! -name '*.sec' \! -name '*.pub' \! -name '*.db')
+ echo '### codespell in documentation:'
+ codespell doc/*.xml doc/*.txt doc/*.dbk doc/*.ent doc/*.cmake.in doc/xml.add doc/po4a.conf doc/examples doc/po/apt-doc.pot po/apt-all.pot README.* COPYING
+
+ echo '### spellintian in source directories:'
+ {
+ for DIR in $(find . -mindepth 1 -maxdepth 1 -type d \! -name '.git' \! -name 'doc' \! -name 'po' \! -name 'build' \! -name 'test'); do
+ spellintian $(find "$DIR" -type f)
+ done
+ } | grep -v \
+ -e '^.*: long long (duplicate word) -> long$' \
+ -e '^./apt-pkg/pkgcache.h: ID ID (duplicate word) -> ID$' \
+ -e '^./apt-pkg/contrib/mmap.cc: WorkSpace WorkSpace (duplicate word) -> WorkSpace$' \
+ -e '^./apt-pkg/contrib/md5.cc: z z (duplicate word) -> z$' \
+ -e '^./apt-pkg/metaindex.cc: const const (duplicate word) -> const$' \
+ -e '^./apt-pkg/acquire-method.cc: QueueBack QueueBack (duplicate word) -> QueueBack$' \
+ -e '^./CMake/Translations.cmake: domain domain (duplicate word) -> domain$' \
+ -e '^./CMake/apti18n.h.in: m m (duplicate word) -> m$' \
+ -e '^./CMake/run_if_exists.sh: fi fi (duplicate word) -> fi$' \
+ -e '^./ftparchive/byhash.cc: ByHash ByHash (duplicate word) -> ByHash$' \
+ -e '^./ftparchive/writer.cc: this Packages -> these packages$' \
+ -e '^./ftparchive/byhash.h: ByHash ByHash (duplicate word) -> ByHash$' \
+ -e '^./cmdline/apt-key.in: done done (duplicate word) -> done$' \
+ -e '^./cmdline/apt-key.in: fi fi (duplicate word) -> fi$' \
+ -e '^./cmdline/apt-key.in: echo echo (duplicate word) -> echo$' \
+ -e '^./triehash/.travis.yml: perl perl (duplicate word) -> perl$' \
+ -e '^./triehash/README.md: Performance Performance (duplicate word) -> Performance$' \
+ -e '^./debian/apt.apt-compat.cron.daily: fi fi (duplicate word) -> fi$' \
+ -e '^./debian/apt.auto-removal.sh: done done (duplicate word) -> done$' \
+ -e '^./debian/apt.systemd.daily: fi fi (duplicate word) -> fi$' \
+ -e '^./debian/apt.postinst: fi fi (duplicate word) -> fi$' \
+ -e '^./methods/http.cc: Sz Sz (duplicate word) -> Sz$' \
+ -e '^./methods/ftp.cc: AFMap AFMap (duplicate word) -> AFMap$' \
+ -e '^./dselect/install: fi fi (duplicate word) -> fi$' \
+ || true
+ echo '### spellintian in testcases:'
+ spellintian $(find test -type f \! -name 'status-*' \! -name 'Packages-*' \! -name '*.deb' \! -name '*.sec' \! -name '*.pub' \! -name '*.db') \
+ | grep -v \
+ -e '^.*: long long (duplicate word) -> long$' \
+ -e '^test/integration/.*: fi fi (duplicate word) -> fi$' \
+ -e '^test/integration/.*: done done (duplicate word) -> done$' \
+ -e '^test/integration/.*: echo echo (duplicate word) -> echo$' \
+ -e '^test/integration/test-00-commands-have-help: moo moo (duplicate word) -> moo$' \
+ -e '^test/integration/test-apt-cache: bar bar (duplicate word) -> bar$' \
+ -e '^test/integration/test-sourceslist-trusted-options: everythingsucceeds everythingsucceeds (duplicate word) -> everythingsucceeds$' \
+ -e '^test/integration/test-sourceslist-trusted-options: everythingfails everythingfails (duplicate word) -> everythingfails$' \
+ -e '^test/integration/test-apt-get-changelog: foo foo (duplicate word) -> foo$' \
+ -e '^test/integration/test-ubuntu-bug-761175-remove-purge: testround testround (duplicate word) -> testround$' \
+ -e '^test/integration/test-apt-get-download: apt apt (duplicate word) -> apt$' \
+ -e '^test/integration/test-apt-showlist-orgroup-in-recommends: zzz zzz (duplicate word) -> zzz$' \
+ -e '^test/integration/test-bug-691453-apt-cache-search-multi-pattern: bar bar (duplicate word) -> bar$' \
+ -e '^test/integration/test-allow: hold hold (duplicate word) -> hold$' \
+ -e '^test/integration/test-apt-by-hash-update: ensureitsbroken ensureitsbroken (duplicate word) -> ensureitsbroken$' \
+ -e '^test/integration/test-apt-source-and-build-dep: foo foo (duplicate word) -> foo$' \
+ || true
+ echo '### spellintian in documentation:'
+ spellintian doc/*.xml doc/*.txt doc/*.dbk doc/*.ent doc/*.cmake.in doc/xml.add doc/po4a.conf doc/examples/* doc/po/apt-doc.pot po/apt-all.pot README.* COPYING
+
+else
+ echo >&1 "Usage:\t$0 pre-export
+\t$0 pre-build
+\t$0 post-build
+
+Updating po-files and versions as well as some basic checks are done
+by »pre-export« which needs to be run before package building.
+If you use »gbp buildpackage« you will be notified if you forget.
+»pre-build« and »post-build« can be used to run some more or less
+useful checks automatically run by »gbp« otherwise.
+
+\t$0 library
+\t$0 buildlog filename…
+
+»library« and »buildlog« aren't run automatically but can be useful for
+maintaining the (more or less experimental) symbols files we provide.
+»library« displays the diff between advertised symbols and the once provided
+by the libraries, while »buildlog« extracts this diff from the buildlogs.
+Both will format the diff properly.
+
+\t$0 travis-ci
+\t$0 coverage [output-dir]
+
+»travis-ci« is a shortcut to install all build- as well as test-dependencies
+used by .travis.yml.
+»coverage« does a clean build with the right flags for coverage reporting,
+runs all tests and generates a html report in the end.
+
+\t$0 spellcheckers
+
+»spellcheckers« runs »codespell« and »spellintian« on the appropiate files and
+filters out obvious false positives.
+"
+
+fi
diff --git a/shippable.yml b/shippable.yml
new file mode 100644
index 000000000..ad72afc80
--- /dev/null
+++ b/shippable.yml
@@ -0,0 +1,15 @@
+language: none
+
+build:
+ pre_ci_boot:
+ image_name: debian
+ image_tag: stretch
+ pull: true
+ ci:
+ - apt-get install -qq build-essential
+ - ./prepare-release travis-ci
+ - mkdir build
+ - ( cd build && cmake .. )
+ - make -C build -j 4
+ - CTEST_OUTPUT_ON_FAILURE=1 make -C build test
+ - ./test/integration/run-tests -q
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
new file mode 100644
index 000000000..2f47b5c32
--- /dev/null
+++ b/test/CMakeLists.txt
@@ -0,0 +1,2 @@
+add_subdirectory(libapt)
+add_subdirectory(interactive-helper)
diff --git a/test/integration/Packages-bug-590438-broken-provides-thanks-to-remove-order b/test/integration/Packages-bug-590438-broken-provides-thanks-to-remove-order
new file mode 100644
index 000000000..75a769e1a
--- /dev/null
+++ b/test/integration/Packages-bug-590438-broken-provides-thanks-to-remove-order
@@ -0,0 +1,67 @@
+Package: gawk
+Priority: optional
+Section: interpreters
+Installed-Size: 2084
+Maintainer: Arthur Loiret <aloiret@debian.org>
+Architecture: i386
+Version: 1:3.1.7.dfsg-5
+Provides: awk
+Pre-Depends: libc6 (>= 2.3)
+Filename: pool/main/g/gawk/gawk_3.1.7.dfsg-5_i386.deb
+Size: 766008
+MD5sum: 6459a02cfc1b9eafb3c0415e4ff4e252
+SHA1: ac033488dae4b7e8167d610e490319c047edf7e4
+SHA256: a2337dfe1cc82aeae46f2c722e5cc7be9ecefdea4aaf13f540cfe70bd8b1d627
+Description-de: GNU awk, eine Mustererkennungs- und Verarbeitungssprache
+Homepage: http://www.gnu.org/software/gawk/
+Tag: devel::interpreter, implemented-in::c, interface::commandline, role::program, scope::utility, suite::gnu, use::filtering, use::scanning, works-with::text
+
+Package: aawk
+Priority: optional
+Section: interpreters
+Installed-Size: 2084
+Maintainer: Arthur Loiret <aloiret@debian.org>
+Architecture: i386
+Version: 1:3.1.7.dfsg-5
+Provides: awk
+Pre-Depends: libc6 (>= 2.3)
+Filename: pool/main/a/aawk/aawk_3.1.7.dfsg-5_i386.deb
+Size: 766008
+MD5sum: 6459a02cfc1b9eafb3c0415e4ff4e252
+SHA1: ac033488dae4b7e8167d610e490319c047edf7e4
+SHA256: a2337dfe1cc82aeae46f2c722e5cc7be9ecefdea4aaf13f540cfe70bd8b1d627
+Description-de: GNU awk, eine Mustererkennungs- und Verarbeitungssprache
+Homepage: http://www.gnu.org/software/gawk/
+Tag: devel::interpreter, implemented-in::c, interface::commandline, role::program, scope::utility, suite::gnu, use::filtering, use::scanning, works-with::text
+
+Package: gawk2
+Priority: optional
+Section: interpreters
+Installed-Size: 2084
+Maintainer: Arthur Loiret <aloiret@debian.org>
+Architecture: i386
+Version: 1:3.1.7.dfsg-5
+Provides: awk
+Pre-Depends: libc6 (>= 2.3)
+Depends: coolstuff
+Filename: pool/main/g/gawk/gawk_3.1.7.dfsg-5_i386.deb
+Size: 766008
+MD5sum: 6459a02cfc1b9eafb3c0415e4ff4e252
+SHA1: ac033488dae4b7e8167d610e490319c047edf7e4
+SHA256: a2337dfe1cc82aeae46f2c722e5cc7be9ecefdea4aaf13f540cfe70bd8b1d627
+Description-de: GNU awk, eine Mustererkennungs- und Verarbeitungssprache
+Homepage: http://www.gnu.org/software/gawk/
+Tag: devel::interpreter, implemented-in::c, interface::commandline, role::program, scope::utility, suite::gnu, use::filtering, use::scanning, works-with::text
+
+Package: coolstuff
+Priority: optional
+Section: cool
+Installed-Size: 10
+Maintainer: David Kalnischkies <kalnischkies+debian@gmail.com>
+Architecture: all
+Version: 1-1
+Filename: pool/main/c/coolstuff/coolstuff_1-1_all.deb
+Size: 7608
+MD5sum: 6459aa2efc139eafb323ac3f4f5aeb22
+Description: We all need cool stuff
+
diff --git a/test/integration/Packages-bug-591882-conkeror b/test/integration/Packages-bug-591882-conkeror
new file mode 100644
index 000000000..555e8559d
--- /dev/null
+++ b/test/integration/Packages-bug-591882-conkeror
@@ -0,0 +1,1787 @@
+Package: conkeror
+Priority: extra
+Section: web
+Installed-Size: 1488
+Maintainer: Axel Beckert <abe@debian.org>
+Architecture: all
+Version: 0.9.2+git100804-1
+Provides: www-browser
+Depends: xulrunner-1.9.1 | xulrunner-1.9.2 | xulrunner-1.9 | xulrunner (>= 1.9~)
+Recommends: conkeror-spawn-process-helper
+Suggests: emacs | emacsen
+Breaks: conkeror-spawn-process-helper (<< 0.9~git080901-1)
+Filename: pool/main/c/conkeror/conkeror_0.9.2+git100804-1_all.deb
+Size: 233068
+MD5Sum: e7bce631fe421938f2dc7a2042497e21
+Description: keyboard focused web browser with Emacs look and feel
+
+Package: coreutils
+Essential: yes
+Priority: required
+Section: utils
+Installed-Size: 12188
+Maintainer: Michael Stone <mstone@debian.org>
+Architecture: i386
+Version: 8.5-1
+Replaces: mktemp, timeout
+Pre-Depends: libacl1 (>= 2.2.11-1), libattr1 (>= 2.4.41-1), libc6 (>= 2.6), libselinux1 (>= 1.32)
+Conflicts: timeout
+Filename: pool/main/c/coreutils/coreutils_8.5-1_i386.deb
+Size: 4608374
+MD5Sum: de7f2ef8769cc38e64774102708ce1ae
+Description: GNU core utilities
+
+Package: debconf-i18n
+Priority: required
+Section: localization
+Installed-Size: 1208
+Maintainer: Debconf Developers <debconf-devel@lists.alioth.debian.org>
+Architecture: all
+Source: debconf
+Version: 1.5.35
+Replaces: debconf (<< 1.3.0), debconf-utils (<< 1.3.22)
+Depends: debconf, liblocale-gettext-perl, libtext-iconv-perl, libtext-wrapi18n-perl, libtext-charwidth-perl
+Conflicts: debconf-english, debconf-utils (<< 1.3.22)
+Filename: pool/main/d/debconf/debconf-i18n_1.5.35_all.deb
+Size: 210348
+MD5Sum: 03d76e5a5fc733cffc54c4b3b14dbcd4
+Description: full internationalization support for debconf
+
+Package: debconf
+Priority: required
+Section: admin
+Installed-Size: 1560
+Maintainer: Debconf Developers <debconf-devel@lists.alioth.debian.org>
+Architecture: all
+Version: 1.5.35
+Replaces: debconf-tiny
+Provides: debconf-2.0
+Depends: debconf-i18n | debconf-english
+Pre-Depends: perl-base (>= 5.6.1-4)
+Recommends: apt-utils (>= 0.5.1)
+Suggests: debconf-doc, debconf-utils, whiptail | dialog | gnome-utils, libterm-readline-gnu-perl, libgnome2-perl, libnet-ldap-perl, perl, libqtgui4-perl, libqtcore4-perl
+Conflicts: apt (<< 0.3.12.1), cdebconf (<< 0.96), debconf-tiny, debconf-utils (<< 1.3.22), dialog (<< 0.9b-20020814-1), menu (<= 2.1.3-1), whiptail (<< 0.51.4-11), whiptail-utf8 (<= 0.50.17-13)
+Filename: pool/main/d/debconf/debconf_1.5.35_all.deb
+Size: 158120
+MD5Sum: 5a64e8e187984ed4eca44bf13eae8ea0
+Description: Debian configuration management system
+Python-Version: 2.4, 2.5, 2.6
+
+Package: debianutils
+Essential: yes
+Priority: required
+Section: utils
+Installed-Size: 216
+Maintainer: Clint Adams <schizo@debian.org>
+Architecture: i386
+Version: 3.4
+Depends: sensible-utils
+Pre-Depends: libc6 (>= 2.7)
+Filename: pool/main/d/debianutils/debianutils_3.4_i386.deb
+Size: 49888
+MD5Sum: 32eb3eebd4c9e58aadd418ca95b23904
+Description: Miscellaneous utilities specific to Debian
+
+Package: defoma
+Priority: optional
+Section: admin
+Installed-Size: 564
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Architecture: all
+Version: 0.11.11
+Depends: whiptail | dialog, file, perl
+Recommends: libfont-freetype-perl
+Suggests: defoma-doc, psfontmgr, x-ttcidfont-conf, dfontmgr
+Conflicts: defoma-gs, defoma-ps, defoma-x, dfontmgr (<< 0.10.0), psfontmgr (<< 0.5.0), x-ttcidfont-conf (<< 5)
+Filename: pool/main/d/defoma/defoma_0.11.11_all.deb
+Size: 101104
+MD5Sum: ee11d3bc1a0275473d5c1feba846ff3e
+Description: Debian Font Manager -- automatic font configuration framework
+Enhances: debhelper
+
+Package: dpkg
+Essential: yes
+Priority: required
+Section: admin
+Installed-Size: 5628
+Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
+Architecture: i386
+Version: 1.15.8.3
+Pre-Depends: libbz2-1.0, libc6 (>= 2.3), libselinux1 (>= 1.32), zlib1g (>= 1:1.1.4), coreutils (>= 5.93-1), xz-utils
+Suggests: apt
+Breaks: apt (<< 0.7.7), aptitude (<< 0.4.7-1), dpkg-dev (<< 1.14.16), emacs21 (<< 21.4a+1-5.7), emacs21-nox (<< 21.4a+1-5.7), emacs22 (<= 22.3+1-1), emacs22-gtk (<= 22.3+1-1), emacs22-nox (<= 22.3+1-1), jed (<< 1:0.99.18+dfsg.1-13), jed-extra (<= 2.5.3-2), konqueror (<= 4:4.2.96-1), libdpkg-perl (<< 1.15.8), pinfo (<< 0.6.9-3.1), tkinfo (<< 2.8-3.1), xemacs21-support (<< 21.4.22-2), xjed (<< 1:0.99.18+dfsg.1-13)
+Filename: pool/main/d/dpkg/dpkg_1.15.8.3_i386.deb
+Size: 1866568
+MD5Sum: fa4bf565ebbfde6558d70b071f6abe42
+Description: Debian package management system
+Origin: debian
+Bugs: debbugs://bugs.debian.org
+
+Package: file
+Priority: standard
+Section: utils
+Installed-Size: 136
+Maintainer: Daniel Baumann <daniel@lists.debian-maintainers.org>
+Architecture: i386
+Version: 5.04-5
+Depends: libc6 (>= 2.1), libmagic1 (= 5.04-5), zlib1g (>= 1:1.1.4)
+Filename: pool/main/f/file/file_5.04-5_i386.deb
+Size: 49134
+MD5Sum: 716b1c307166650f247e0a2e07cdd3b1
+Description: Determines file type using "magic" numbers
+
+Package: fontconfig-config
+Priority: optional
+Section: fonts
+Installed-Size: 440
+Maintainer: Keith Packard <keithp@debian.org>
+Architecture: all
+Source: fontconfig
+Version: 2.8.0-2.1
+Replaces: fontconfig (<< 2.3.2-2)
+Depends: debconf (>= 0.5) | debconf-2.0, ucf (>= 0.29), ttf-dejavu-core | ttf-bitstream-vera | ttf-freefont | gsfonts-x11
+Conflicts: fontconfig (<< 2.3.2-2)
+Filename: pool/main/f/fontconfig/fontconfig-config_2.8.0-2.1_all.deb
+Size: 217150
+MD5Sum: c2dd70d32fa8e5c0588cff16efbbf614
+Description: generic font configuration library - configuration
+
+Package: fontconfig
+Priority: optional
+Section: fonts
+Installed-Size: 520
+Maintainer: Keith Packard <keithp@debian.org>
+Architecture: i386
+Version: 2.8.0-2.1
+Replaces: fontconfig-config (<< 2.5.93-1)
+Depends: libc6 (>= 2.0), libexpat1 (>= 1.95.8), libfontconfig1 (>= 2.8.0), libfreetype6 (>= 2.2.1), zlib1g (>= 1:1.1.4), fontconfig-config
+Suggests: defoma (>= 0.7.0)
+Filename: pool/main/f/fontconfig/fontconfig_2.8.0-2.1_i386.deb
+Size: 333180
+MD5Sum: 67aeeda05141d4fe477c041c12daad1e
+Description: generic font configuration library - support binaries
+
+Package: gcc-4.4-base
+Priority: required
+Section: libs
+Installed-Size: 172
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: i386
+Source: gcc-4.4
+Version: 4.4.4-8
+Filename: pool/main/g/gcc-4.4/gcc-4.4-base_4.4.4-8_i386.deb
+Size: 118346
+MD5Sum: 5e35b249b1af8edd9e85932575f6af92
+Description: The GNU Compiler Collection (base package)
+
+Package: libacl1
+Priority: required
+Section: libs
+Installed-Size: 88
+Maintainer: Nathan Scott <nathans@debian.org>
+Architecture: i386
+Source: acl
+Version: 2.2.49-3
+Depends: libattr1 (>= 2.4.41-1), libc6 (>= 2.2)
+Conflicts: acl (<< 2.0.0), libacl1-kerberos4kth
+Filename: pool/main/a/acl/libacl1_2.2.49-3_i386.deb
+Size: 27146
+MD5Sum: 99c1bd61d4f26b1f3a072b490d3daef5
+Description: Access control list shared library
+
+Package: libasound2
+Priority: optional
+Section: libs
+Installed-Size: 1236
+Maintainer: Debian ALSA Maintainers <pkg-alsa-devel@lists.alioth.debian.org>
+Architecture: i386
+Source: alsa-lib
+Version: 1.0.23-1
+Depends: libc6 (>= 2.3.6-6~)
+Suggests: libasound2-plugins (>= 1.0.18)
+Conflicts: libasound2-plugins (<< 1.0.18)
+Filename: pool/main/a/alsa-lib/libasound2_1.0.23-1_i386.deb
+Size: 377718
+MD5Sum: 14a1674ebd84f30080d42c4f86f2533d
+Description: shared library for ALSA applications
+
+Package: libatk1.0-0
+Priority: optional
+Section: libs
+Installed-Size: 208
+Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: atk1.0
+Version: 1.30.0-1
+Depends: libc6 (>= 2.2), libglib2.0-0 (>= 2.16.0)
+Recommends: libatk1.0-data
+Filename: pool/main/a/atk1.0/libatk1.0-0_1.30.0-1_i386.deb
+Size: 82402
+MD5Sum: 27d2b5e1b0ca90254f54dfe2bf056527
+Description: The ATK accessibility toolkit
+
+Package: libattr1
+Priority: required
+Section: libs
+Installed-Size: 64
+Maintainer: Nathan Scott <nathans@debian.org>
+Architecture: i386
+Source: attr
+Version: 1:2.4.44-2
+Depends: libc6 (>= 2.2.3)
+Conflicts: attr (<< 2.0.0)
+Filename: pool/main/a/attr/libattr1_2.4.44-2_i386.deb
+Size: 11902
+MD5Sum: 1e08d3be5e8d55515e7b3fa6fc76a022
+Description: Extended attribute shared library
+
+Package: libavahi-client3
+Priority: optional
+Section: libs
+Installed-Size: 148
+Maintainer: Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: avahi
+Version: 0.6.27-1
+Depends: libavahi-common3 (>= 0.6.22), libc6 (>= 2.4), libdbus-1-3 (>= 1.1.1)
+Filename: pool/main/a/avahi/libavahi-client3_0.6.27-1_i386.deb
+Size: 54328
+MD5Sum: 07bc086292d59fb7465eedb8c59d0c31
+Description: Avahi client library
+
+Package: libavahi-common-data
+Priority: optional
+Section: libs
+Installed-Size: 728
+Maintainer: Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: avahi
+Version: 0.6.27-1
+Filename: pool/main/a/avahi/libavahi-common-data_0.6.27-1_i386.deb
+Size: 111952
+MD5Sum: ebc4f7471f8e8ffea1526e1894c283a7
+Description: Avahi common data files
+
+Package: libavahi-common3
+Priority: optional
+Section: libs
+Installed-Size: 132
+Maintainer: Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: avahi
+Version: 0.6.27-1
+Depends: libc6 (>= 2.4), libavahi-common-data
+Filename: pool/main/a/avahi/libavahi-common3_0.6.27-1_i386.deb
+Size: 50538
+MD5Sum: 6e5bb85c3665bd26cdcb12c41eb9787e
+Description: Avahi common library
+
+Package: libbz2-1.0
+Priority: important
+Section: libs
+Installed-Size: 128
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: i386
+Source: bzip2
+Version: 1.0.5-4
+Depends: libc6 (>= 2.3)
+Filename: pool/main/b/bzip2/libbz2-1.0_1.0.5-4_i386.deb
+Size: 45118
+MD5Sum: f067ae75bce5ef991b3d0574bf541ddb
+Description: high-quality block-sorting file compressor library - runtime
+
+Package: libc-bin
+Priority: required
+Section: libs
+Installed-Size: 1516
+Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Architecture: i386
+Source: eglibc
+Version: 2.11.2-2
+Replaces: libc0.1, libc0.3, libc6, libc6.1
+Breaks: libc0.1 (<< 2.10), libc0.3 (<< 2.10), libc6 (<< 2.10), libc6.1 (<< 2.10)
+Filename: pool/main/e/eglibc/libc-bin_2.11.2-2_i386.deb
+Size: 703542
+MD5Sum: f554ec34c092bb8e52e3d917bec7b46c
+Description: Embedded GNU C Library: Binaries
+
+Package: libc6
+Priority: required
+Section: libs
+Installed-Size: 9340
+Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Architecture: i386
+Source: eglibc
+Version: 2.11.2-2
+Provides: glibc-2.11-1
+Depends: libc-bin (= 2.11.2-2), libgcc1
+Recommends: libc6-i686
+Suggests: glibc-doc, debconf | debconf-2.0, locales
+Conflicts: tzdata (<< 2007k-1), tzdata-etch
+Breaks: locales (<< 2.11), locales-all (<< 2.11), nscd (<< 2.11)
+Filename: pool/main/e/eglibc/libc6_2.11.2-2_i386.deb
+Size: 3877166
+MD5Sum: 3d8fe972a359ad362ac1957c2687e5c2
+Description: Embedded GNU C Library: Shared libraries
+
+Package: libcairo2
+Priority: optional
+Section: libs
+Installed-Size: 824
+Maintainer: Dave Beckett <dajobe@debian.org>
+Architecture: i386
+Source: cairo
+Version: 1.8.10-4
+Depends: libc6 (>= 2.3), libfontconfig1 (>= 2.8.0), libfreetype6 (>= 2.2.1), libpixman-1-0 (>= 0.15.16), libpng12-0 (>= 1.2.13-4), libx11-6 (>= 0), libxcb-render-util0 (>= 0.3.6), libxcb-render0 (>= 0), libxcb1 (>= 0), libxrender1, zlib1g (>= 1:1.1.4)
+Breaks: iceape-browser (<= 2.0.3-3), libgtk-directfb-2.0-0, xulrunner-1.9, xulrunner-1.9.1 (<= 1.9.1.8-3)
+Filename: pool/main/c/cairo/libcairo2_1.8.10-4_i386.deb
+Size: 508814
+MD5Sum: 51f8838a83d46b5cf590338bcc3c6d73
+Description: The Cairo 2D vector graphics library
+
+Package: libcomerr2
+Priority: required
+Section: libs
+Installed-Size: 104
+Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+Architecture: i386
+Source: e2fsprogs
+Version: 1.41.12-2
+Replaces: e2fsprogs (<< 1.34-1)
+Provides: libcomerr-kth-compat
+Depends: libc6 (>= 2.3.6-6~)
+Filename: pool/main/e/e2fsprogs/libcomerr2_1.41.12-2_i386.deb
+Size: 48508
+MD5Sum: 8fe610cf3b2f82f2a681ba196e91d883
+Description: common error description library
+
+Package: libcups2
+Priority: optional
+Section: libs
+Installed-Size: 468
+Maintainer: Debian CUPS Maintainers <pkg-cups-devel@lists.alioth.debian.org>
+Architecture: i386
+Source: cups
+Version: 1.4.4-3
+Provides: libcupsys2
+Depends: libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libc6 (>= 2.4), libgcrypt11 (>= 1.4.2), libgnutls26 (>= 2.7.14-0), libgssapi-krb5-2 (>= 1.7+dfsg), zlib1g (>= 1:1.1.4)
+Suggests: cups-common
+Breaks: cups (<< 1.4.4)
+Filename: pool/main/c/cups/libcups2_1.4.4-3_i386.deb
+Size: 225696
+MD5Sum: f78acda030eece301cd5e0c94ea3492b
+Description: Common UNIX Printing System(tm) - Core library
+
+Package: libdatrie1
+Priority: optional
+Section: libs
+Installed-Size: 92
+Maintainer: Theppitak Karoonboonyanan <thep@debian.org>
+Architecture: i386
+Source: libdatrie
+Version: 0.2.4-1
+Depends: libc6 (>= 2.1.3)
+Filename: pool/main/libd/libdatrie/libdatrie1_0.2.4-1_i386.deb
+Size: 26184
+MD5Sum: 305e5beace09f16bf9b0a568e8df7920
+Description: Double-array trie library
+
+Package: libdb4.7
+Priority: standard
+Section: libs
+Installed-Size: 1432
+Maintainer: Debian Berkeley DB Maintainers <pkg-db-devel@lists.alioth.debian.org>
+Architecture: i386
+Source: db4.7
+Version: 4.7.25-9
+Depends: libc6 (>= 2.3.6-6~)
+Conflicts: libdb2 (<< 2:2.7.7-3)
+Filename: pool/main/d/db4.7/libdb4.7_4.7.25-9_i386.deb
+Size: 644290
+MD5Sum: 694cced529f6249607c523765aa1e482
+Description: Berkeley v4.7 Database Libraries [runtime]
+
+Package: libdb4.8
+Priority: standard
+Section: libs
+Installed-Size: 1488
+Maintainer: Clint Adams <schizo@debian.org>
+Architecture: i386
+Source: db4.8
+Version: 4.8.30-1
+Depends: libc6 (>= 2.3.6-6~)
+Conflicts: libdb2 (<< 2:2.7.7-3)
+Filename: pool/main/d/db4.8/libdb4.8_4.8.30-1_i386.deb
+Size: 681682
+MD5Sum: c8f9b6dd1cc49dac5d3319a5ac0d22fc
+Description: Berkeley v4.8 Database Libraries [runtime]
+
+Package: libdbus-1-3
+Priority: optional
+Section: libs
+Installed-Size: 328
+Maintainer: Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: dbus
+Version: 1.2.24-3
+Depends: libc6 (>= 2.3.6-6~)
+Recommends: dbus
+Filename: pool/main/d/dbus/libdbus-1-3_1.2.24-3_i386.deb
+Size: 129632
+MD5Sum: 620b2226a4cad34ed86931132fa09ea6
+Description: simple interprocess messaging system
+
+Package: libexpat1
+Priority: optional
+Section: libs
+Installed-Size: 368
+Maintainer: Debian XML/SGML Group <debian-xml-sgml-pkgs@lists.alioth.debian.org>
+Architecture: i386
+Source: expat
+Version: 2.0.1-7
+Depends: libc6 (>= 2.1.3)
+Conflicts: wink (<= 1.5.1060-4)
+Filename: pool/main/e/expat/libexpat1_2.0.1-7_i386.deb
+Size: 138122
+MD5Sum: 4607c75c6b55d92ac517fd0fb8543587
+Description: XML parsing C library - runtime library
+
+Package: libfontconfig1
+Priority: optional
+Section: libs
+Installed-Size: 412
+Maintainer: Keith Packard <keithp@debian.org>
+Architecture: i386
+Source: fontconfig
+Version: 2.8.0-2.1
+Provides: libfontconfig
+Depends: libc6 (>= 2.7), libexpat1 (>= 1.95.8), libfreetype6 (>= 2.2.1), zlib1g (>= 1:1.1.4), fontconfig-config (= 2.8.0-2.1)
+Filename: pool/main/f/fontconfig/libfontconfig1_2.8.0-2.1_i386.deb
+Size: 273878
+MD5Sum: fd6d6426df7bc1330b064a7d45a85d84
+Description: generic font configuration library - runtime
+
+Package: libfreetype6
+Priority: optional
+Section: libs
+Installed-Size: 668
+Maintainer: Steve Langasek <vorlon@debian.org>
+Architecture: i386
+Source: freetype
+Version: 2.4.2-1
+Depends: libc6 (>= 2.1.3), zlib1g (>= 1:1.1.4)
+Conflicts: freetype, xpdf-reader (<< 1.00-4)
+Filename: pool/main/f/freetype/libfreetype6_2.4.2-1_i386.deb
+Size: 360632
+MD5Sum: f9c333d2643d186685a77d1072db5425
+Description: FreeType 2 font engine, shared library files
+
+Package: libgcc1
+Priority: required
+Section: libs
+Installed-Size: 156
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: i386
+Source: gcc-4.4 (4.4.4-8)
+Version: 1:4.4.4-8
+Depends: gcc-4.4-base (= 4.4.4-8), libc6 (>= 2.2.4)
+Filename: pool/main/g/gcc-4.4/libgcc1_4.4.4-8_i386.deb
+Size: 55180
+MD5Sum: c92a5656f20caa7d50bd425f2b1f25d8
+Description: GCC support library
+
+Package: libgcrypt11
+Priority: standard
+Section: libs
+Installed-Size: 556
+Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint@lists.alioth.debian.org>
+Architecture: i386
+Version: 1.4.5-2
+Depends: libc6 (>= 2.3), libgpg-error0 (>= 1.6-1)
+Suggests: rng-tools
+Filename: pool/main/libg/libgcrypt11/libgcrypt11_1.4.5-2_i386.deb
+Size: 266444
+MD5Sum: 6b687ecf0284d5efe44115c07198b159
+Description: LGPL Crypto library - runtime library
+
+Package: libgdbm3
+Priority: important
+Section: libs
+Installed-Size: 120
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: i386
+Source: gdbm
+Version: 1.8.3-9
+Depends: libc6 (>= 2.1.3), dpkg (>= 1.15.4) | install-info
+Filename: pool/main/g/gdbm/libgdbm3_1.8.3-9_i386.deb
+Size: 44940
+MD5Sum: cc0859fd9c0ea0a211e7f1a0da09ddc0
+Description: GNU dbm database routines (runtime version)
+
+Package: libglib2.0-0
+Priority: optional
+Section: libs
+Installed-Size: 2212
+Maintainer: Loic Minier <lool@dooz.org>
+Architecture: i386
+Source: glib2.0
+Version: 2.24.1-1
+Replaces: libglib2.0-dev (<< 2.23.2-2)
+Depends: libc6 (>= 2.9), libpcre3 (>= 7.7), libselinux1 (>= 1.32), zlib1g (>= 1:1.1.4)
+Recommends: libglib2.0-data, shared-mime-info
+Conflicts: libpango1.0-0 (<< 1.11)
+Filename: pool/main/g/glib2.0/libglib2.0-0_2.24.1-1_i386.deb
+Size: 1024782
+MD5Sum: e0f853cbcba1c8a132fc07c303c31ea9
+Description: The GLib library of C routines
+
+Package: libgnutls26
+Priority: standard
+Section: libs
+Installed-Size: 1268
+Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint@lists.alioth.debian.org>
+Architecture: i386
+Source: gnutls26
+Version: 2.8.6-1
+Replaces: gnutls0, gnutls0.4, gnutls3
+Depends: libc6 (>= 2.3), libgcrypt11 (>= 1.4.2), libtasn1-3 (>= 1.6-0), zlib1g (>= 1:1.1.4)
+Suggests: gnutls-bin
+Conflicts: gnutls0, gnutls0.4
+Filename: pool/main/g/gnutls26/libgnutls26_2.8.6-1_i386.deb
+Size: 528314
+MD5Sum: 9c585b48d4a4e8de856b70a3350037de
+Description: the GNU TLS library - runtime library
+
+Package: libgpg-error0
+Priority: standard
+Section: libs
+Installed-Size: 228
+Maintainer: Jose Carlos Garcia Sogo <jsogo@debian.org>
+Architecture: i386
+Source: libgpg-error
+Version: 1.6-1
+Depends: libc6 (>= 2.1.3)
+Filename: pool/main/libg/libgpg-error/libgpg-error0_1.6-1_i386.deb
+Size: 43118
+MD5Sum: be3a76a7176e38cb1f0464be1f21d4d4
+Description: library for common error values and messages in GnuPG components
+
+Package: libgssapi-krb5-2
+Priority: standard
+Section: libs
+Installed-Size: 1604
+Maintainer: Sam Hartman <hartmans@debian.org>
+Architecture: i386
+Source: krb5
+Version: 1.8.3+dfsg~beta1-1
+Replaces: libkrb53 (<< 1.6.dfsg.4~beta1-7)
+Depends: libc6 (>= 2.7), libcomerr2 (>= 1.34), libk5crypto3 (>= 1.8+dfsg), libkeyutils1, libkrb5-3 (= 1.8.3+dfsg~beta1-1), libkrb5support0 (>= 1.7dfsg~beta2)
+Suggests: krb5-doc, krb5-user
+Breaks: libkrb53
+Filename: pool/main/k/krb5/libgssapi-krb5-2_1.8.3+dfsg~beta1-1_i386.deb
+Size: 1463772
+MD5Sum: 80f3ffe8e30991723a8009829e2aef10
+Description: MIT Kerberos runtime libraries - krb5 GSS-API Mechanism
+
+Package: libgtk2.0-0
+Priority: optional
+Section: libs
+Installed-Size: 5864
+Maintainer: Sebastien Bacher <seb128@debian.org>
+Architecture: i386
+Source: gtk+2.0
+Version: 2.20.1-1
+Provides: gtk2.0-binver-2.10.0
+Depends: libgtk2.0-common, libatk1.0-0 (>= 1.29.3), libc6 (>= 2.7), libcairo2 (>= 1.6.4-6.1), libcups2 (>= 1.4.0), libfontconfig1 (>= 2.8.0), libfreetype6 (>= 2.2.1), libglib2.0-0 (>= 2.24.0), libgnutls26 (>= 2.7.14-0), libgssapi-krb5-2 (>= 1.6.dfsg.2), libjasper1 (>= 1.900.1), libjpeg62, libpango1.0-0 (>= 1.20.0), libpng12-0 (>= 1.2.13-4), libtiff4, libx11-6 (>= 0), libxcomposite1 (>= 1:0.3-1), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6 (>= 0), libxfixes3 (>= 1:4.0.1), libxi6 (>= 0), libxinerama1, libxrandr2 (>= 2:1.2.99.3), libxrender1, zlib1g (>= 1:1.1.4), shared-mime-info
+Recommends: hicolor-icon-theme, libgtk2.0-bin
+Suggests: librsvg2-common, gvfs
+Filename: pool/main/g/gtk+2.0/libgtk2.0-0_2.20.1-1_i386.deb
+Size: 2503890
+MD5Sum: fc1fc5987ae2be51e9b4bcc4b57fc472
+Description: The GTK+ graphical user interface library
+
+Package: libgtk2.0-common
+Priority: optional
+Section: misc
+Installed-Size: 21484
+Maintainer: Sebastien Bacher <seb128@debian.org>
+Architecture: all
+Source: gtk+2.0
+Version: 2.20.1-1
+Recommends: libgtk2.0-0
+Filename: pool/main/g/gtk+2.0/libgtk2.0-common_2.20.1-1_all.deb
+Size: 7104864
+MD5Sum: 68cf4472a1e7bed64241f466d6830bbc
+Description: Common files for the GTK+ graphical user interface library
+
+Package: libhunspell-1.2-0
+Priority: optional
+Section: libs
+Installed-Size: 376
+Maintainer: Debian OpenOffice Team <debian-openoffice@lists.debian.org>
+Architecture: i386
+Source: hunspell
+Version: 1.2.11-1
+Depends: libc6 (>= 2.1.3), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.1.1)
+Recommends: hunspell-en-us | hunspell-dictionary | myspell-dictionary
+Conflicts: openoffice.org-core (= 2.2.0~rc2-1)
+Filename: pool/main/h/hunspell/libhunspell-1.2-0_1.2.11-1_i386.deb
+Size: 154502
+MD5Sum: b8b8e5d0805a5e00b4cfdd64128d8054
+Description: spell checker and morphological analyzer (shared library)
+
+Package: libice6
+Priority: optional
+Section: libs
+Installed-Size: 204
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libice
+Version: 2:1.0.6-1
+Depends: libc6 (>= 2.3), x11-common
+Filename: pool/main/libi/libice/libice6_1.0.6-1_i386.deb
+Size: 50284
+MD5Sum: 7052cd2a95caeee0f83d0f1950fd5d42
+Description: X11 Inter-Client Exchange library
+
+Package: libjasper1
+Priority: optional
+Section: libs
+Installed-Size: 340
+Maintainer: Roland Stigge <stigge@antcom.de>
+Architecture: i386
+Source: jasper
+Version: 1.900.1-7
+Replaces: libjasper-1.700-2
+Depends: libc6 (>= 2.7), libjpeg62
+Suggests: libjasper-runtime
+Conflicts: libjasper-1.700-2
+Filename: pool/main/j/jasper/libjasper1_1.900.1-7_i386.deb
+Size: 145186
+MD5Sum: 1df984b14ac57be23d5a5ad0c40ab6cf
+Description: The JasPer JPEG-2000 runtime library
+
+Package: libjpeg62
+Priority: optional
+Section: libs
+Installed-Size: 204
+Maintainer: Bill Allombert <ballombe@debian.org>
+Architecture: i386
+Source: libjpeg6b
+Version: 6b1-1
+Depends: libc6 (>= 2.7)
+Filename: pool/main/libj/libjpeg6b/libjpeg62_6b1-1_i386.deb
+Size: 87974
+MD5Sum: ab36968379a350bdae98a3bf58aeda84
+Description: The Independent JPEG Group's JPEG runtime library (version 6.2)
+
+Package: libk5crypto3
+Priority: standard
+Section: libs
+Installed-Size: 1556
+Maintainer: Sam Hartman <hartmans@debian.org>
+Architecture: i386
+Source: krb5
+Version: 1.8.3+dfsg~beta1-1
+Replaces: libkrb53 (<< 1.6.dfsg.4~beta1-7)
+Depends: libc6 (>= 2.4), libkeyutils1, libkrb5support0 (>= 1.7dfsg~beta2)
+Suggests: krb5-doc, krb5-user
+Breaks: libgssapi-krb5-2 (<= 1.8~aa), libkrb5-3 (<= 1.8~aa), libkrb53 (<< 1.6.dfsg.4~beta1-9)
+Filename: pool/main/k/krb5/libk5crypto3_1.8.3+dfsg~beta1-1_i386.deb
+Size: 1439050
+MD5Sum: 463e89d5a6eacaa55f377575eb6f0a7c
+Description: MIT Kerberos runtime libraries - Crypto Library
+
+Package: libkeyutils1
+Priority: standard
+Section: libs
+Installed-Size: 56
+Maintainer: Daniel Baumann <daniel@lists.debian-maintainers.org>
+Architecture: i386
+Source: keyutils
+Version: 1.4-1
+Depends: libc6 (>= 2.1.3)
+Filename: pool/main/k/keyutils/libkeyutils1_1.4-1_i386.deb
+Size: 6640
+MD5Sum: bc6dbf8f320151e67995e55c3e358b89
+Description: Linux Key Management Utilities (library)
+
+Package: libkrb5-3
+Priority: standard
+Section: libs
+Installed-Size: 2204
+Maintainer: Sam Hartman <hartmans@debian.org>
+Architecture: i386
+Source: krb5
+Version: 1.8.3+dfsg~beta1-1
+Replaces: libkrb53 (<< 1.6.dfsg.4~beta1-7)
+Depends: libc6 (>= 2.9), libcomerr2 (>= 1.34), libk5crypto3 (>= 1.8+dfsg), libkeyutils1, libkrb5support0 (= 1.8.3+dfsg~beta1-1)
+Suggests: krb5-doc, krb5-user
+Conflicts: libapache-mod-auth-kerb (<= 4.996-5.0-rc6-2), libapache2-mod-auth-kerb (<= 4.996-5.0-rc6-2), ssh-krb5 (<< 3.8.1p1-10)
+Breaks: libkrb53 (<< 1.6.dfsg.4~beta1-9)
+Filename: pool/main/k/krb5/libkrb5-3_1.8.3+dfsg~beta1-1_i386.deb
+Size: 1697246
+MD5Sum: 8894886ff9537684ef338ac9ab510467
+Description: MIT Kerberos runtime libraries
+
+Package: libkrb5support0
+Priority: standard
+Section: libs
+Installed-Size: 1436
+Maintainer: Sam Hartman <hartmans@debian.org>
+Architecture: i386
+Source: krb5
+Version: 1.8.3+dfsg~beta1-1
+Replaces: libkrb53 (<< 1.6.dfsg.4~beta1-7)
+Depends: libc6 (>= 2.3.4), libkeyutils1
+Suggests: krb5-doc, krb5-user
+Breaks: libkrb53 (<< 1.6.dfsg.4~beta1-9)
+Filename: pool/main/k/krb5/libkrb5support0_1.8.3+dfsg~beta1-1_i386.deb
+Size: 1385290
+MD5Sum: 5a9f10f57f35e8f34b4a7b7052244c14
+Description: MIT Kerberos runtime libraries - Support library
+
+Package: liblocale-gettext-perl
+Priority: required
+Section: perl
+Installed-Size: 104
+Maintainer: Debian Perl Group <pkg-perl-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Version: 1.05-6
+Depends: libc6 (>= 2.2)
+Pre-Depends: perl-base (>= 5.10.0-25), perlapi-5.10.0
+Filename: pool/main/libl/liblocale-gettext-perl/liblocale-gettext-perl_1.05-6_i386.deb
+Size: 21596
+MD5Sum: a71c3dadecdf1b64b4cb050f91e032b5
+Description: Using libc functions for internationalization in Perl
+
+Package: liblzma2
+Priority: required
+Section: libs
+Installed-Size: 308
+Maintainer: Jonathan Nieder <jrnieder@gmail.com>
+Architecture: i386
+Source: xz-utils
+Version: 4.999.9beta+20100713-1
+Depends: libc6 (>= 2.3.6-6~)
+Filename: pool/main/x/xz-utils/liblzma2_4.999.9beta+20100713-1_i386.deb
+Size: 171540
+MD5Sum: fe14361cc247e9bb11b98e31e47cfbbe
+Description: XZ-format compression library
+
+Package: libmagic1
+Priority: standard
+Section: libs
+Installed-Size: 2032
+Maintainer: Daniel Baumann <daniel@lists.debian-maintainers.org>
+Architecture: i386
+Source: file
+Version: 5.04-5
+Depends: libc6 (>= 2.3.4), zlib1g (>= 1:1.1.4)
+Suggests: file
+Conflicts: file (<< 5.04-2)
+Filename: pool/main/f/file/libmagic1_5.04-5_i386.deb
+Size: 233668
+MD5Sum: def2786d4289068336826c75c514b2bc
+Description: File type determination library using "magic" numbers
+
+Package: libmozjs2d
+Priority: optional
+Section: libs
+Installed-Size: 948
+Maintainer: Maintainers of Mozilla-related packages <pkg-mozilla-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: xulrunner
+Version: 1.9.1.11-1
+Depends: libc6 (>= 2.3.6-6~), libgcc1 (>= 1:4.1.1), libnspr4-0d (>= 1.8.0.10), libstdc++6 (>= 4.1.1)
+Breaks: xulrunner-1.9.1 (<< 1.9.1.10~)
+Filename: pool/main/x/xulrunner/libmozjs2d_1.9.1.11-1_i386.deb
+Size: 474718
+MD5Sum: 6a9032247eceb71c9b472bd6fc9961e2
+Description: The Mozilla SpiderMonkey JavaScript library
+
+Package: libncurses5
+Priority: required
+Section: libs
+Installed-Size: 592
+Maintainer: Craig Small <csmall@debian.org>
+Architecture: i386
+Source: ncurses
+Version: 5.7+20100313-2
+Depends: libc6 (>= 2.3.4)
+Recommends: libgpm2
+Filename: pool/main/n/ncurses/libncurses5_5.7+20100313-2_i386.deb
+Size: 347766
+MD5Sum: f82378f1792c81e380689b932ea26c21
+Description: shared libraries for terminal handling
+
+Package: libnewt0.52
+Priority: important
+Section: libs
+Installed-Size: 960
+Maintainer: Alastair McKinstry <mckinstry@debian.org>
+Architecture: i386
+Source: newt
+Version: 0.52.11-1
+Replaces: libnewt-utf8, libnewt0, libnewt0.51
+Depends: libc6 (>= 2.3), libslang2 (>= 2.0.7-1)
+Recommends: libfribidi0
+Conflicts: libnewt0.51
+Filename: pool/main/n/newt/libnewt0.52_0.52.11-1_i386.deb
+Size: 68022
+MD5Sum: be04bedb79431088f0ed072317143fdd
+Description: Not Erik's Windowing Toolkit - text mode windowing with slang
+
+Package: libnspr4-0d
+Priority: optional
+Section: libs
+Installed-Size: 340
+Maintainer: Maintainers of Mozilla-related packages <pkg-mozilla-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: nspr
+Version: 4.8.6-1
+Depends: libc6 (>= 2.3.6-6~)
+Filename: pool/main/n/nspr/libnspr4-0d_4.8.6-1_i386.deb
+Size: 125500
+MD5Sum: 4f3c6c3c19b2f24a1734bd084b34f6f5
+Description: NetScape Portable Runtime Library
+
+Package: libnss3-1d
+Priority: optional
+Section: libs
+Installed-Size: 2324
+Maintainer: Maintainers of Mozilla-related packages <pkg-mozilla-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: nss
+Version: 3.12.7-1
+Depends: libc6 (>= 2.3.6-6~), libnspr4-0d (>= 4.8.6), libsqlite3-0 (>= 3.7.0), zlib1g (>= 1:1.1.4)
+Filename: pool/main/n/nss/libnss3-1d_3.12.7-1_i386.deb
+Size: 986188
+MD5Sum: 3dbaa9f3c493b2e6bac6dccce0a56dc2
+Description: Network Security Service libraries
+
+Package: libpam-modules
+Priority: required
+Section: admin
+Installed-Size: 996
+Maintainer: Steve Langasek <vorlon@debian.org>
+Architecture: i386
+Source: pam
+Version: 1.1.1-3
+Replaces: libpam-umask, libpam0g-util
+Provides: libpam-mkhomedir, libpam-motd, libpam-umask
+Pre-Depends: libc6 (>= 2.4), libdb4.8, libpam0g (>= 1.1.0), libselinux1 (>= 2.0.85), debconf (>= 0.5) | debconf-2.0
+Conflicts: libpam-mkhomedir, libpam-motd, libpam-umask
+Filename: pool/main/p/pam/libpam-modules_1.1.1-3_i386.deb
+Size: 344512
+MD5Sum: d55b046bb3da59da7fb94c7325bc07d1
+Description: Pluggable Authentication Modules for PAM
+
+Package: libpam0g
+Priority: required
+Section: libs
+Installed-Size: 244
+Maintainer: Steve Langasek <vorlon@debian.org>
+Architecture: i386
+Source: pam
+Version: 1.1.1-3
+Replaces: libpam0g-util
+Depends: libc6 (>= 2.3), debconf (>= 0.5) | debconf-2.0
+Suggests: libpam-doc
+Filename: pool/main/p/pam/libpam0g_1.1.1-3_i386.deb
+Size: 114334
+MD5Sum: 4850e1ffc833914e164f0c14ceb91010
+Description: Pluggable Authentication Modules library
+
+Package: libpango1.0-0
+Priority: optional
+Section: libs
+Installed-Size: 836
+Maintainer: Sebastien Bacher <seb128@debian.org>
+Architecture: i386
+Source: pango1.0
+Version: 1.28.1-1
+Provides: pango1.0-modver-1.6.0
+Depends: libpango1.0-common (>= 1.28.1-1), libc6 (>= 2.3.6-6~), libcairo2 (>= 1.8.10-3), libfontconfig1 (>= 2.8.0), libfreetype6 (>= 2.2.1), libglib2.0-0 (>= 2.24.0), libthai0 (>= 0.1.12), libx11-6, libxft2 (>> 2.1.1), libxrender1, zlib1g (>= 1:1.1.4)
+Conflicts: pango-libthai
+Filename: pool/main/p/pango1.0/libpango1.0-0_1.28.1-1_i386.deb
+Size: 303342
+MD5Sum: fdc1d8650b049d88bb7cdc2f7af425f0
+Description: Layout and rendering of internationalized text
+
+Package: libpango1.0-common
+Priority: optional
+Section: misc
+Installed-Size: 252
+Maintainer: Sebastien Bacher <seb128@debian.org>
+Architecture: all
+Source: pango1.0
+Version: 1.28.1-1
+Replaces: libpango-common (<< 1.0.0), libpango0
+Depends: debconf | debconf-2.0, defoma (>= 0.11.1), fontconfig (>= 2.1.91)
+Recommends: x-ttcidfont-conf, libpango1.0-0
+Suggests: ttf-japanese-gothic, ttf-japanese-mincho, ttf-thryomanes, ttf-baekmuk, ttf-arphic-gbsn00lp, ttf-arphic-bsmi00lp, ttf-arphic-gkai00mp, ttf-arphic-bkai00mp
+Conflicts: pango-libthai (<< 0.1.6-2)
+Filename: pool/main/p/pango1.0/libpango1.0-common_1.28.1-1_all.deb
+Size: 112638
+MD5Sum: 521e4171155dd465866ff400cb9a37bc
+Description: Modules and configuration files for the Pango
+
+Package: libpcre3
+Priority: standard
+Section: libs
+Installed-Size: 480
+Maintainer: Mark Baker <mark@mnb.org.uk>
+Architecture: i386
+Source: pcre3
+Version: 8.02-1.1
+Depends: libc6 (>= 2.3)
+Conflicts: libpcre3-dev (<= 4.3-3)
+Breaks: approx (<< 4.4-1~), cduce (<< 0.5.3-2~), cmigrep (<< 1.5-7~), galax (<< 1.1-7~), libpcre-ocaml (<< 6.0.1~), liquidsoap (<< 0.9.2-3~), ocsigen (<< 1.3.3-1~)
+Filename: pool/main/p/pcre3/libpcre3_8.02-1.1_i386.deb
+Size: 231418
+MD5Sum: 3be0351b7ecd8a5e2140318237d923d0
+Description: Perl 5 Compatible Regular Expression Library - runtime files
+
+Package: libpixman-1-0
+Priority: optional
+Section: libs
+Installed-Size: 508
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: pixman
+Version: 0.16.4-1
+Depends: libc6 (>= 2.1.3)
+Filename: pool/main/p/pixman/libpixman-1-0_0.16.4-1_i386.deb
+Size: 236004
+MD5Sum: 46f6f180adfbbeabc95c774386c3006f
+Description: pixel-manipulation library for X and cairo
+
+Package: libpng12-0
+Priority: optional
+Section: libs
+Installed-Size: 320
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: i386
+Source: libpng
+Version: 1.2.44-1
+Replaces: libpng12-dev (<= 1.2.8rel-7)
+Depends: libc6 (>= 2.1.3), zlib1g (>= 1:1.1.4)
+Conflicts: libpng12-dev (<= 1.2.8rel-7), mzscheme (<= 1:209-5), pngcrush (<= 1.5.10-2), pngmeta (<= 1.11-3), povray-3.5 (<= 3.5.0c-10), qemacs (<= 0.3.1-5)
+Filename: pool/main/libp/libpng/libpng12-0_1.2.44-1_i386.deb
+Size: 175970
+MD5Sum: e871ef14b295cad4ac8ceedbce00c818
+Description: PNG library - runtime
+
+Package: libpopt0
+Priority: important
+Section: libs
+Installed-Size: 208
+Maintainer: Paul Martin <pm@debian.org>
+Architecture: i386
+Source: popt
+Version: 1.16-1
+Replaces: popt
+Depends: libc6 (>= 2.3)
+Conflicts: libpopt-dev (<= 1.4-1), popt, rpm (<= 4.0.2-3)
+Filename: pool/main/p/popt/libpopt0_1.16-1_i386.deb
+Size: 52890
+MD5Sum: 935b9a8eea67b75326002f75b374383d
+Description: lib for parsing cmdline parameters
+
+Package: libreadline6
+Priority: important
+Section: libs
+Installed-Size: 356
+Maintainer: Matthias Klose <doko@debian.org>
+Architecture: i386
+Source: readline6
+Version: 6.1-3
+Depends: readline-common, libc6 (>= 2.3), libncurses5 (>= 5.7+20100313)
+Filename: pool/main/r/readline6/libreadline6_6.1-3_i386.deb
+Size: 145914
+MD5Sum: 63c3a619ef1fd5ec1c04fd0992f3f71f
+Description: GNU readline and history libraries, run-time libraries
+
+Package: libselinux1
+Priority: required
+Section: libs
+Installed-Size: 216
+Maintainer: Manoj Srivastava <srivasta@debian.org>
+Architecture: i386
+Source: libselinux
+Version: 2.0.96-1
+Depends: libc6 (>= 2.3.4)
+Filename: pool/main/libs/libselinux/libselinux1_2.0.96-1_i386.deb
+Size: 82752
+MD5Sum: 65c82e5ad1ebe75c056eeb33147e1eeb
+Description: SELinux runtime shared libraries
+
+Package: libslang2
+Priority: important
+Section: libs
+Installed-Size: 1264
+Maintainer: Alastair McKinstry <mckinstry@debian.org>
+Architecture: i386
+Source: slang2
+Version: 2.2.2-4
+Depends: libc6 (>= 2.3)
+Recommends: libpng12-0
+Filename: pool/main/s/slang2/libslang2_2.2.2-4_i386.deb
+Size: 507014
+MD5Sum: 2cd4ae18b2f0e4a04c0e98d4913d5fd7
+Description: The S-Lang programming library - runtime version
+
+Package: libsm6
+Priority: optional
+Section: libs
+Installed-Size: 144
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libsm
+Version: 2:1.1.1-1
+Depends: libc6 (>= 2.1.3), libice6 (>= 1:1.0.0), libuuid1 (>= 2.16)
+Filename: pool/main/libs/libsm/libsm6_1.1.1-1_i386.deb
+Size: 23976
+MD5Sum: eda3e07bf434262ba270bb1ae12e71e0
+Description: X11 Session Management library
+
+Package: libsqlite3-0
+Priority: standard
+Section: libs
+Installed-Size: 684
+Maintainer: Laszlo Boszormenyi (GCS) <gcs@debian.hu>
+Architecture: i386
+Source: sqlite3
+Version: 3.7.0-1.1
+Depends: libc6 (>= 2.3.6-6~)
+Filename: pool/main/s/sqlite3/libsqlite3-0_3.7.0-1.1_i386.deb
+Size: 380004
+MD5Sum: 4706e644e7f3f2b183db0ce001a7bbaa
+Description: SQLite 3 shared library
+
+Package: libstartup-notification0
+Priority: optional
+Section: libs
+Installed-Size: 92
+Maintainer: Ondřej Surý <ondrej@debian.org>
+Architecture: i386
+Source: startup-notification
+Version: 0.10-1
+Depends: libc6 (>= 2.1.3), libice6 (>= 1:1.0.0), libsm6, libx11-6, libxcb-atom1 (>= 0.3.3), libxcb-aux0 (>= 0.3.3), libxcb-event1 (>= 0.3.3), libxcb1 (>= 1.1.92)
+Filename: pool/main/s/startup-notification/libstartup-notification0_0.10-1_i386.deb
+Size: 21230
+MD5Sum: 0e62e87fe56b93c30e7dee751fc7a59f
+Description: library for program launch feedback (shared library)
+
+Package: libstdc++6
+Priority: required
+Section: libs
+Installed-Size: 1204
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: i386
+Source: gcc-4.4
+Version: 4.4.4-8
+Depends: gcc-4.4-base (= 4.4.4-8), libc6 (>= 2.3.2), libgcc1
+Conflicts: scim (<< 1.4.2-1)
+Filename: pool/main/g/gcc-4.4/libstdc++6_4.4.4-8_i386.deb
+Size: 347294
+MD5Sum: c5ad981710bbe349c2847b1cc00cafc1
+Description: The GNU Standard C++ Library v3
+
+Package: libtasn1-3
+Priority: important
+Section: libs
+Installed-Size: 152
+Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint@lists.alioth.debian.org>
+Architecture: i386
+Version: 2.7-1
+Depends: libc6 (>= 2.3)
+Conflicts: libtasn1-2 (= 0.3.1-1)
+Filename: pool/main/libt/libtasn1-3/libtasn1-3_2.7-1_i386.deb
+Size: 61424
+MD5Sum: 0120dbb8123bef3fe7cb4155e95e4307
+Description: Manage ASN.1 structures (runtime)
+
+Package: libtext-charwidth-perl
+Priority: required
+Section: perl
+Installed-Size: 92
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: i386
+Version: 0.04-6
+Depends: libc6 (>= 2.1.3), perl-base (>= 5.10.0-23), perlapi-5.10.0
+Filename: pool/main/libt/libtext-charwidth-perl/libtext-charwidth-perl_0.04-6_i386.deb
+Size: 11582
+MD5Sum: 6aa5a252db205de6817ee954f5193fbf
+Description: get display widths of characters on the terminal
+
+Package: libtext-iconv-perl
+Priority: required
+Section: perl
+Installed-Size: 104
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: i386
+Version: 1.7-2
+Depends: libc6 (>= 2.1.3), perl-base (>= 5.10.0-23), perlapi-5.10.0
+Filename: pool/main/libt/libtext-iconv-perl/libtext-iconv-perl_1.7-2_i386.deb
+Size: 18076
+MD5Sum: 707f244dc1df10391dd9679b2645a911
+Description: converts between character sets in Perl
+
+Package: libtext-wrapi18n-perl
+Priority: required
+Section: perl
+Installed-Size: 28
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: all
+Version: 0.06-7
+Depends: libtext-charwidth-perl
+Filename: pool/main/libt/libtext-wrapi18n-perl/libtext-wrapi18n-perl_0.06-7_all.deb
+Size: 9004
+MD5Sum: 5608c08e10e79269e391f02856f96ec5
+Description: internationalized substitute of Text::Wrap
+
+Package: libthai-data
+Priority: optional
+Section: libs
+Installed-Size: 596
+Maintainer: Theppitak Karoonboonyanan <thep@debian.org>
+Architecture: all
+Source: libthai
+Version: 0.1.14-2
+Conflicts: libthai0 (<< 0.1.10)
+Filename: pool/main/libt/libthai/libthai-data_0.1.14-2_all.deb
+Size: 198282
+MD5Sum: 201f73aac77afd1eef48bbf858964586
+Description: Data files for Thai language support library
+
+Package: libthai0
+Priority: optional
+Section: libs
+Installed-Size: 108
+Maintainer: Theppitak Karoonboonyanan <thep@debian.org>
+Architecture: i386
+Source: libthai
+Version: 0.1.14-2
+Depends: libc6 (>= 2.1.3), libdatrie1 (>= 0.2.0), libthai-data (>= 0.1.10)
+Conflicts: libdatrie0 (<< 0.1.4)
+Filename: pool/main/libt/libthai/libthai0_0.1.14-2_i386.deb
+Size: 40222
+MD5Sum: 7f65a895b5a232442969584c8aa6635d
+Description: Thai language support library
+Enhances: kdelibs5
+
+Package: libtiff4
+Priority: optional
+Section: libs
+Installed-Size: 488
+Maintainer: Jay Berkenbilt <qjb@debian.org>
+Architecture: i386
+Source: tiff
+Version: 3.9.4-1
+Depends: libc6 (>= 2.3), libjpeg62, zlib1g (>= 1:1.1.4)
+Filename: pool/main/t/tiff/libtiff4_3.9.4-1_i386.deb
+Size: 182070
+MD5Sum: 4438501f82789f341c245d79b40c175f
+Description: Tag Image File Format (TIFF) library
+
+Package: libuuid1
+Priority: required
+Section: libs
+Installed-Size: 112
+Maintainer: LaMont Jones <lamont@debian.org>
+Architecture: i386
+Source: util-linux
+Version: 2.17.2-3.1
+Replaces: e2fsprogs (<< 1.34-1)
+Depends: passwd, libc6 (>= 2.3)
+Recommends: uuid-runtime
+Filename: pool/main/u/util-linux/libuuid1_2.17.2-3.1_i386.deb
+Size: 58126
+MD5Sum: cea424e8f6340a5ee8d4e64da2d6c953
+Description: Universally Unique ID library
+
+Package: libx11-6
+Priority: optional
+Section: libs
+Installed-Size: 1356
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libx11
+Version: 2:1.3.3-3
+Depends: libc6 (>= 2.3.2), libxcb1 (>= 1.2), libx11-data
+Conflicts: xlibs-data (<< 1:7.0.0)
+Filename: pool/main/libx/libx11/libx11-6_1.3.3-3_i386.deb
+Size: 816814
+MD5Sum: 40f5b42f6af2ad1550d3a2d6f634218f
+Description: X11 client-side library
+
+Package: libx11-data
+Priority: optional
+Section: x11
+Installed-Size: 2504
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: all
+Source: libx11
+Version: 2:1.3.3-3
+Replaces: libx11-6 (<= 2:1.0.0-1)
+Filename: pool/main/libx/libx11/libx11-data_1.3.3-3_all.deb
+Size: 232336
+MD5Sum: 5f5b2da7a114ada3bb7310f2b40cce51
+Description: X11 client-side library
+
+Package: libxau6
+Priority: optional
+Section: libs
+Installed-Size: 64
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxau
+Version: 1:1.0.6-1
+Depends: libc6 (>= 2.1.3)
+Filename: pool/main/libx/libxau/libxau6_1.0.6-1_i386.deb
+Size: 16144
+MD5Sum: ad33495d6208f5dd07bee9cdb07b29d1
+Description: X11 authorisation library
+
+Package: libxcb-atom1
+Priority: extra
+Section: libs
+Installed-Size: 64
+Maintainer: Julien Danjou <acid@debian.org>
+Architecture: i386
+Source: xcb-util
+Version: 0.3.6-1
+Depends: libc6 (>= 2.1.3), libxcb1
+Filename: pool/main/x/xcb-util/libxcb-atom1_0.3.6-1_i386.deb
+Size: 9526
+MD5Sum: 79337f41329668bc137a7e4e2f273dd8
+Description: utility libraries for X C Binding -- atom
+
+Package: libxcb-aux0
+Priority: extra
+Section: libs
+Installed-Size: 64
+Maintainer: Julien Danjou <acid@debian.org>
+Architecture: i386
+Source: xcb-util
+Version: 0.3.6-1
+Depends: libc6 (>= 2.1.3), libxcb1
+Filename: pool/main/x/xcb-util/libxcb-aux0_0.3.6-1_i386.deb
+Size: 8472
+MD5Sum: 88d95e67be4ca3a7601db394241ab486
+Description: utility libraries for X C Binding -- aux
+
+Package: libxcb-event1
+Priority: extra
+Section: libs
+Installed-Size: 64
+Maintainer: Julien Danjou <acid@debian.org>
+Architecture: i386
+Source: xcb-util
+Version: 0.3.6-1
+Depends: libc6 (>= 2.1.3), libxcb1
+Filename: pool/main/x/xcb-util/libxcb-event1_0.3.6-1_i386.deb
+Size: 8514
+MD5Sum: 8dc0f269f8b0cea17f6207cce0964a51
+Description: utility libraries for X C Binding -- event
+
+Package: libxcb-render-util0
+Priority: extra
+Section: libs
+Installed-Size: 64
+Maintainer: Julien Danjou <acid@debian.org>
+Architecture: i386
+Source: xcb-util
+Version: 0.3.6-1
+Depends: libc6 (>= 2.1.3), libxcb-render0, libxcb1
+Filename: pool/main/x/xcb-util/libxcb-render-util0_0.3.6-1_i386.deb
+Size: 9334
+MD5Sum: 8f0afaba8747efba1ae99d995e03b7c5
+Description: utility libraries for X C Binding -- render-util
+
+Package: libxcb-render0
+Priority: optional
+Section: libs
+Installed-Size: 84
+Maintainer: XCB Developers <xcb@lists.freedesktop.org>
+Architecture: i386
+Source: libxcb
+Version: 1.6-1
+Depends: libc6 (>= 2.1.3), libxcb1 (>= 0)
+Filename: pool/main/libx/libxcb/libxcb-render0_1.6-1_i386.deb
+Size: 14916
+MD5Sum: 882950cf440b422d17fe5f784745c3fb
+Description: X C Binding, render extension
+
+Package: libxcb1
+Priority: optional
+Section: libs
+Installed-Size: 164
+Maintainer: XCB Developers <xcb@lists.freedesktop.org>
+Architecture: i386
+Source: libxcb
+Version: 1.6-1
+Depends: libc6 (>= 2.3.2), libxau6, libxdmcp6
+Breaks: libxcb-xlib0
+Filename: pool/main/libx/libxcb/libxcb1_1.6-1_i386.deb
+Size: 40500
+MD5Sum: 8b1bd1c23264932b7e2c639302366a06
+Description: X C Binding
+
+Package: libxcomposite1
+Priority: optional
+Section: libs
+Installed-Size: 64
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxcomposite
+Version: 1:0.4.2-1
+Depends: libc6 (>= 2.1.3), libx11-6, libxext6, libxfixes3 (>= 1:4.0.1)
+Filename: pool/main/libx/libxcomposite/libxcomposite1_0.4.2-1_i386.deb
+Size: 15116
+MD5Sum: 43b75f3d05d774ae791977cd20ce1624
+Description: X11 Composite extension library
+
+Package: libxcursor1
+Priority: optional
+Section: libs
+Installed-Size: 88
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxcursor
+Version: 1:1.1.10-2
+Depends: libc6 (>= 2.3), libx11-6 (>= 0), libxfixes3 (>= 1:4.0.1), libxrender1
+Filename: pool/main/libx/libxcursor/libxcursor1_1.1.10-2_i386.deb
+Size: 24942
+MD5Sum: 8aadf2988320b81f3422bddd68c97f1b
+Description: X cursor management library
+
+Package: libxdamage1
+Priority: optional
+Section: libs
+Installed-Size: 64
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxdamage
+Version: 1:1.1.3-1
+Depends: libc6 (>= 2.1.3), libx11-6, libxfixes3 (>= 1:4.0.1)
+Filename: pool/main/libx/libxdamage/libxdamage1_1.1.3-1_i386.deb
+Size: 13568
+MD5Sum: 7b5b7a9937adff801f15857d2e1c7bce
+Description: X11 damaged region extension library
+
+Package: libxdmcp6
+Priority: optional
+Section: libs
+Installed-Size: 76
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxdmcp
+Version: 1:1.0.3-2
+Depends: libc6 (>= 2.1.3)
+Filename: pool/main/libx/libxdmcp/libxdmcp6_1.0.3-2_i386.deb
+Size: 18426
+MD5Sum: cecbdad4e8a639735cf7e148681fb667
+Description: X11 Display Manager Control Protocol library
+
+Package: libxext6
+Priority: optional
+Section: libs
+Installed-Size: 132
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxext
+Version: 2:1.1.2-1
+Depends: libc6 (>= 2.1.3), libx11-6
+Filename: pool/main/libx/libxext/libxext6_1.1.2-1_i386.deb
+Size: 41694
+MD5Sum: 9c8bc9d73ed6ad2697df80f72edfd3c3
+Description: X11 miscellaneous extension library
+
+Package: libxfixes3
+Priority: optional
+Section: libs
+Installed-Size: 72
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxfixes
+Version: 1:4.0.5-1
+Depends: libc6 (>= 2.1.3), libx11-6
+Filename: pool/main/libx/libxfixes/libxfixes3_4.0.5-1_i386.deb
+Size: 17976
+MD5Sum: 8e0bf9a4ed5a0b6361085795e69ae248
+Description: X11 miscellaneous 'fixes' extension library
+
+Package: libxft2
+Priority: optional
+Section: libs
+Installed-Size: 140
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: xft
+Version: 2.1.14-2
+Depends: libc6 (>= 2.3), libfontconfig1 (>= 2.8.0), libfreetype6 (>= 2.2.1), libx11-6 (>= 0), libxrender1
+Filename: pool/main/x/xft/libxft2_2.1.14-2_i386.deb
+Size: 52030
+MD5Sum: 23a966a6319e50b8b8b9857da75cae5b
+Description: FreeType-based font drawing library for X
+
+Package: libxi6
+Priority: optional
+Section: libs
+Installed-Size: 132
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxi
+Version: 2:1.3-4
+Depends: libc6 (>= 2.1.3), libx11-6 (>= 2:1.2.99.901), libxext6 (>= 0)
+Filename: pool/main/libx/libxi/libxi6_1.3-4_i386.deb
+Size: 53936
+MD5Sum: 83cac8ca145398686339817466e11ffd
+Description: X11 Input extension library
+
+Package: libxinerama1
+Priority: optional
+Section: libs
+Installed-Size: 64
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxinerama
+Version: 2:1.1-3
+Depends: libc6 (>= 2.1.3), libx11-6 (>= 0), libxext6 (>= 0)
+Filename: pool/main/libx/libxinerama/libxinerama1_1.1-3_i386.deb
+Size: 12186
+MD5Sum: 1fbe54b8d05b1096a4ea70cd50e1510b
+Description: X11 Xinerama extension library
+
+Package: libxml2
+Priority: standard
+Section: libs
+Installed-Size: 1588
+Maintainer: Debian XML/SGML Group <debian-xml-sgml-pkgs@lists.alioth.debian.org>
+Architecture: i386
+Version: 2.7.7.dfsg-4
+Depends: libc6 (>= 2.7), zlib1g (>= 1:1.2.3.3.dfsg)
+Recommends: xml-core
+Filename: pool/main/libx/libxml2/libxml2_2.7.7.dfsg-4_i386.deb
+Size: 826866
+MD5Sum: 7153d99951b5d33f66eaa20a657e033b
+Description: GNOME XML library
+
+Package: libxrandr2
+Priority: optional
+Section: libs
+Installed-Size: 92
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxrandr
+Version: 2:1.3.0-3
+Depends: libc6 (>= 2.1.3), libx11-6 (>= 0), libxext6 (>= 0), libxrender1
+Filename: pool/main/libx/libxrandr/libxrandr2_1.3.0-3_i386.deb
+Size: 26618
+MD5Sum: ccd579d696aad72be69bdf1be92541f4
+Description: X11 RandR extension library
+
+Package: libxrender1
+Priority: optional
+Section: libs
+Installed-Size: 92
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxrender
+Version: 1:0.9.6-1
+Depends: libc6 (>= 2.1.3), libx11-6
+Filename: pool/main/libx/libxrender/libxrender1_0.9.6-1_i386.deb
+Size: 29280
+MD5Sum: ef296f771209c82ed1245c67798b6081
+Description: X Rendering Extension client library
+
+Package: libxt6
+Priority: optional
+Section: libs
+Installed-Size: 452
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxt
+Version: 1:1.0.7-1
+Depends: libc6 (>= 2.7), libice6 (>= 1:1.0.0), libsm6, libx11-6 (>= 0)
+Filename: pool/main/libx/libxt/libxt6_1.0.7-1_i386.deb
+Size: 171518
+MD5Sum: aa8e8f0a7ee7b57c2d58786af72da142
+Description: X11 toolkit intrinsics library
+
+Package: lsb-base
+Priority: required
+Section: misc
+Installed-Size: 72
+Maintainer: Chris Lawrence <lawrencc@debian.org>
+Architecture: all
+Source: lsb
+Version: 3.2-23.1
+Replaces: lsb (<< 2.0-6), lsb-core (<< 2.0-6)
+Depends: sed, ncurses-bin
+Conflicts: lsb (<< 2.0-6), lsb-core (<< 2.0-6)
+Filename: pool/main/l/lsb/lsb-base_3.2-23.1_all.deb
+Size: 20462
+MD5Sum: 60637dd487aedfaa48e3a38bc1a0ea4c
+Description: Linux Standard Base 3.2 init script functionality
+
+Package: ncurses-bin
+Essential: yes
+Priority: required
+Section: utils
+Installed-Size: 500
+Maintainer: Craig Small <csmall@debian.org>
+Architecture: i386
+Source: ncurses
+Version: 5.7+20100313-2
+Pre-Depends: libc6 (>= 2.3), libncurses5 (>= 5.7+20100313)
+Filename: pool/main/n/ncurses/ncurses-bin_5.7+20100313-2_i386.deb
+Size: 314788
+MD5Sum: 408a001ec8f30f40e19caa35772c3e3b
+Description: terminal-related programs and man pages
+
+Package: passwd
+Priority: required
+Section: admin
+Installed-Size: 2208
+Maintainer: Shadow package maintainers <pkg-shadow-devel@lists.alioth.debian.org>
+Architecture: i386
+Source: shadow
+Version: 1:4.1.4.2-1
+Replaces: manpages-tr (<< 1.0.5), manpages-zh (<< 1.5.1-1)
+Depends: libc6 (>= 2.3), libpam0g (>= 0.99.7.1), libselinux1 (>= 2.0.82), libpam-modules, debianutils (>= 2.15.2)
+Filename: pool/main/s/shadow/passwd_4.1.4.2-1_i386.deb
+Size: 975188
+MD5Sum: 2ae7b750afe852093fd38009f054b9f7
+Description: change and administer password and group data
+
+Package: perl-base
+Essential: yes
+Priority: required
+Section: perl
+Installed-Size: 4488
+Maintainer: Niko Tyni <ntyni@debian.org>
+Architecture: i386
+Source: perl
+Version: 5.10.1-14
+Replaces: libperl5.8 (<< 5.8.0-20), libscalar-list-utils-perl, libxsloader-perl, perl (<< 5.10.1-12), perl-modules (<< 5.10.1-1)
+Provides: libscalar-list-utils-perl, libxsloader-perl, perl5-base, perlapi-5.10.0, perlapi-5.10.1
+Pre-Depends: libc6 (>= 2.4), dpkg (>= 1.14.20)
+Suggests: perl
+Conflicts: autoconf2.13 (<< 2.13-45), libfile-spec-perl (<< 3.30), libscalar-list-utils-perl (<< 1:1.21), libxsloader-perl (<< 0.10), safe-rm (<< 0.8)
+Filename: pool/main/p/perl/perl-base_5.10.1-14_i386.deb
+Size: 985868
+MD5Sum: 4f62d14690a767e771baf2cffca803a5
+Description: minimal Perl system
+
+Package: perl-modules
+Priority: standard
+Section: perl
+Installed-Size: 15856
+Maintainer: Niko Tyni <ntyni@debian.org>
+Architecture: all
+Source: perl
+Version: 5.10.1-14
+Replaces: libansicolor-perl, libarchive-tar-perl, libattribute-handlers-perl, libautodie-perl, libcgi-pm-perl, libclass-isa-perl, libcpanplus-perl, libextutils-cbuilder-perl, libextutils-parsexs-perl, libfile-spec-perl, libfile-temp-perl, libi18n-langtags-perl, libio-zlib-perl, liblocale-codes-perl, liblocale-maketext-perl, liblocale-maketext-simple-perl, libmath-bigint-perl, libmodule-build-perl, libmodule-corelist-perl, libmodule-load-conditional-perl, libmodule-load-perl, libmodule-pluggable-perl, libnet-perl, libnet-ping-perl, libparams-check-perl, libparent-perl, libparse-cpan-meta-perl, libpod-escapes-perl, libpod-parser-perl, libpod-plainer-perl, libpod-simple-perl, libswitch-perl, libtest-harness-perl, libtest-simple-perl, libthread-queue-perl, libtime-local-perl, libversion-perl, podlators-perl
+Provides: libansicolor-perl, libarchive-tar-perl, libattribute-handlers-perl, libautodie-perl, libcgi-pm-perl, libclass-isa-perl, libcpanplus-perl, libextutils-cbuilder-perl, libextutils-parsexs-perl, libfile-spec-perl, libfile-temp-perl, libi18n-langtags-perl, libio-zlib-perl, liblocale-codes-perl, liblocale-maketext-perl, liblocale-maketext-simple-perl, libmath-bigint-perl, libmodule-build-perl, libmodule-corelist-perl, libmodule-load-conditional-perl, libmodule-load-perl, libmodule-pluggable-perl, libnet-perl, libnet-ping-perl, libparams-check-perl, libparent-perl, libparse-cpan-meta-perl, libpod-escapes-perl, libpod-parser-perl, libpod-plainer-perl, libpod-simple-perl, libswitch-perl, libtest-harness-perl, libtest-simple-perl, libthread-queue-perl, libtime-local-perl, libversion-perl, podlators-perl
+Depends: perl (>= 5.10.1-1)
+Conflicts: libansicolor-perl (<< 1.10-1), libarchive-tar-perl (<< 1.52), libattribute-handlers-perl (<< 0.85), libautodie-perl (<< 2.06.01), libcgi-pm-perl (<< 3.43), libclass-isa-perl (<< 0.33), libcpanplus-perl (<< 0.88), libextutils-cbuilder-perl (<< 0.2602), libextutils-parsexs-perl (<< 2.2002), libfile-spec-perl (<< 3.30), libfile-temp-perl (<< 0.22), libi18n-langtags-perl (<< 0.35-1), libio-zlib-perl (<< 1.09), liblocale-codes-perl (<< 2.07), liblocale-maketext-perl (<< 1.13), liblocale-maketext-simple-perl (<< 0.18-1), libmath-bigint-perl (<< 1.89), libmodule-build-perl (<< 0.340201), libmodule-corelist-perl (<< 2.18), libmodule-load-conditional-perl (<< 0.30), libmodule-load-perl (<< 0.16), libmodule-pluggable-perl (<< 3.9), libnet-perl (<= 1:1.22), libnet-ping-perl (<< 2.36), libparams-check-perl (<< 0.26-1), libparent-perl (<< 0.221), libparse-cpan-meta-perl (<< 1.39), libpod-escapes-perl (<< 1.04), libpod-parser-perl (<< 1.37), libpod-plainer-perl (<< 0.01), libpod-simple-perl (<< 3.07), libswitch-perl (<< 2.14), libtest-harness-perl (<< 3.17), libtest-simple-perl (<< 0.92), libthread-queue-perl (<< 2.11), libtime-local-perl (<< 1.1901), libversion-perl (<< 1:0.7700), podlators-perl (<= 2.2.2-1)
+Filename: pool/main/p/perl/perl-modules_5.10.1-14_all.deb
+Size: 3481026
+MD5Sum: c502e5cc355cd19e5d264ae74f3595e2
+Description: Core Perl modules
+Build-Essential: yes
+
+Package: perl
+Priority: standard
+Section: perl
+Installed-Size: 13168
+Maintainer: Niko Tyni <ntyni@debian.org>
+Architecture: i386
+Version: 5.10.1-14
+Replaces: libarchive-tar-perl (<= 1.38-2), libcompress-raw-bzip2-perl, libcompress-raw-zlib-perl, libcompress-zlib-perl, libdigest-md5-perl, libdigest-sha-perl, libio-compress-base-perl, libio-compress-bzip2-perl, libio-compress-perl, libio-compress-zlib-perl, libmime-base64-perl, libmodule-corelist-perl (<< 2.14-2), libstorable-perl, libsys-syslog-perl, libthreads-perl, libthreads-shared-perl, libtime-hires-perl, libtime-piece-perl, perl-base (<< 5.10.1-12), perl-doc (<< 5.8.0-1), perl-modules (<< 5.8.1-1)
+Provides: data-dumper, libcompress-raw-bzip2-perl, libcompress-raw-zlib-perl, libcompress-zlib-perl, libdigest-md5-perl, libdigest-sha-perl, libio-compress-base-perl, libio-compress-bzip2-perl, libio-compress-perl, libio-compress-zlib-perl, libmime-base64-perl, libstorable-perl, libsys-syslog-perl, libthreads-perl, libthreads-shared-perl, libtime-hires-perl, libtime-piece-perl, perl5
+Depends: perl-base (= 5.10.1-14), perl-modules (>= 5.10.1-14), libbz2-1.0, libc6 (>= 2.4), libdb4.7, libgdbm3 (>= 1.8.3), zlib1g (>= 1:1.2.3.3.dfsg)
+Recommends: netbase, make
+Suggests: perl-doc, libterm-readline-gnu-perl | libterm-readline-perl-perl
+Conflicts: libcompress-raw-bzip2-perl (<< 2.020), libcompress-raw-zlib-perl (<< 2.020), libcompress-zlib-perl (<< 2.020), libdigest-md5-perl (<< 2.39), libdigest-sha-perl (<< 5.47), libio-compress-base-perl (<< 2.020), libio-compress-bzip2-perl (<< 2.020), libio-compress-perl (<< 2.020), libio-compress-zlib-perl (<< 2.020), libmime-base64-perl (<< 3.08), libstorable-perl (<< 2.20), libsys-syslog-perl (<< 0.27), libthreads-perl (<< 1.72), libthreads-shared-perl (<< 1.29), libtime-hires-perl (<< 1.9719), libtime-piece-perl (<< 1.15), perl-doc (<< 5.10.1-1)
+Filename: pool/main/p/perl/perl_5.10.1-14_i386.deb
+Size: 3767054
+MD5Sum: c402cd511260c137a795afaeb6125876
+Description: Larry Wall's Practical Extraction and Report Language
+Build-Essential: yes
+
+Package: readline-common
+Priority: important
+Section: utils
+Installed-Size: 92
+Maintainer: Matthias Klose <doko@debian.org>
+Architecture: all
+Source: readline6
+Version: 6.1-3
+Replaces: libreadline-common, libreadline4 (<< 4.3-16), libreadline5 (<< 5.0-11)
+Depends: dpkg (>= 1.15.4) | install-info
+Conflicts: libreadline-common, libreadline5 (<< 5.0-11)
+Filename: pool/main/r/readline6/readline-common_6.1-3_all.deb
+Size: 54028
+MD5Sum: 1ddfb1a719db7f302abe921e261b0288
+Description: GNU readline and history libraries, common files
+
+Package: sed
+Essential: yes
+Priority: required
+Section: utils
+Installed-Size: 956
+Maintainer: Clint Adams <schizo@debian.org>
+Architecture: i386
+Version: 4.2.1-7
+Depends: dpkg (>= 1.15.4) | install-info
+Pre-Depends: libc6 (>= 2.3), libselinux1 (>= 1.32)
+Filename: pool/main/s/sed/sed_4.2.1-7_i386.deb
+Size: 245832
+MD5Sum: 76a28a89a0684b09abd4c9622f9b0b5f
+Description: The GNU sed stream editor
+
+Package: sensible-utils
+Priority: required
+Section: utils
+Installed-Size: 112
+Maintainer: Clint Adams <schizo@debian.org>
+Architecture: all
+Version: 0.0.4
+Replaces: debianutils (<= 2.32.3), manpages-pl (<= 20060617-3~)
+Filename: pool/main/s/sensible-utils/sensible-utils_0.0.4_all.deb
+Size: 5408
+MD5Sum: 6e1c38bc8506fb23d949a4df7e07d5e2
+Description: Utilities for sensible alternative selection
+
+Package: shared-mime-info
+Priority: optional
+Section: misc
+Installed-Size: 3348
+Maintainer: Filip Van Raemdonck <mechanix@debian.org>
+Architecture: i386
+Version: 0.71-3
+Depends: libc6 (>= 2.3), libglib2.0-0 (>= 2.24.0), libxml2 (>= 2.7.4)
+Conflicts: libglib2.0-0 (<< 2.17.2), libgnomevfs2-0 (<< 1:2.24.0), tracker (<< 0.6.90)
+Filename: pool/main/s/shared-mime-info/shared-mime-info_0.71-3_i386.deb
+Size: 842486
+MD5Sum: 783a1538ac9561e082a8dc67f29df778
+Description: FreeDesktop.org shared MIME database and spec
+
+Package: ttf-dejavu-core
+Priority: optional
+Section: fonts
+Installed-Size: 2592
+Maintainer: Debian Fonts Task Force <pkg-fonts-devel@lists.alioth.debian.org>
+Architecture: all
+Source: ttf-dejavu
+Version: 2.31-1
+Replaces: ttf-dejavu (<< 2.20-1)
+Conflicts: ttf-dejavu (<< 2.20-1)
+Filename: pool/main/t/ttf-dejavu/ttf-dejavu-core_2.31-1_all.deb
+Size: 1451418
+MD5Sum: d3d8850ec0ef68d9b7655545ce0b2b22
+Description: Vera font family derivative with additional characters
+
+Package: ucf
+Priority: standard
+Section: utils
+Installed-Size: 260
+Maintainer: Manoj Srivastava <srivasta@debian.org>
+Architecture: all
+Version: 3.0025
+Depends: debconf (>= 1.5.19), coreutils (>= 5.91)
+Filename: pool/main/u/ucf/ucf_3.0025_all.deb
+Size: 65960
+MD5Sum: 6e664d04fea09239d450ae9f3d246a0f
+Description: Update Configuration File: preserve user changes to config files.
+
+Package: whiptail
+Priority: important
+Section: utils
+Installed-Size: 100
+Maintainer: Alastair McKinstry <mckinstry@debian.org>
+Architecture: i386
+Source: newt
+Version: 0.52.11-1
+Replaces: newt0.10, newt0.21 (<< 0.21-4), whiptail-utf8
+Provides: whiptail-provider, whiptail-utf8
+Depends: libc6 (>= 2.1), libnewt0.52 (>= 0.52.11), libpopt0 (>= 1.16), libslang2 (>= 2.0.7-1)
+Conflicts: whiptail-provider
+Filename: pool/main/n/newt/whiptail_0.52.11-1_i386.deb
+Size: 39118
+MD5Sum: cac6b0f08d25c91011d5c267e35cb0d2
+Description: Displays user-friendly dialog boxes from shell scripts
+
+Package: x11-common
+Priority: optional
+Section: x11
+Installed-Size: 568
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: all
+Source: xorg
+Version: 1:7.5+6
+Replaces: x-common, xfree86-common, xorg-common, xserver-common (<< 7)
+Depends: debconf (>= 0.5) | debconf-2.0, debianutils (>= 1.13), lsb-base (>= 1.3-9ubuntu2)
+Pre-Depends: debconf | debconf-2.0
+Conflicts: aee (<= 2.2.15b-1), ascd (<= 0.13.2-3), beaver (<= 0.2.5-2), bibview (<= 2.2-8), bugsx (<= 1.08-8), buici-clock (<= 0.4.5+b1), communicator-smotif-477, ctwm (<= 3.7-2), emelfm (<= 0.9.2-7), epan, fte-xwindow (<= 0.50.0-1.3), fvwm1 (<= 1.24r-46), fvwm95 (<= 2.0.43ba-23+b1), gerstensaft (<= 0.2-5.1), ghostview, gipsc (<= 0.4.3-2), grace (<= 1:5.1.18-1), grace6 (<= 5.99.0+final-4), gradio (<= 1.0.1-6), groff (<= 1.18.1.1-7), guitar (<= 0.1.4-11), hamsoft (<< 0.2.3-1), hanterm-classic (<= 3.1.6.0-4), hanterm-xf (<= 1:3.3.1p18-9.2), hfsutils-tcltk (<= 3.2.6-7), ibp (<= 0.21-4), isdnutils-xtools (<= 1:3.8.2005-12-06-4), ivtools-bin (<= 1.1.3-5), ivtools-dev (<= 1.1.3-5), kdrill (<= 6.4-2.1), kinput2-canna (<= 3.1-7), kinput2-canna-wnn (<= 3.1-7), kinput2-wnn (<= 3.1-7), kterm (<= 6.2.0-45), lbxproxy (<< 7.0), libmotif-dev (<= 2.2.3-1.3), libxft-dev (<= 2.1.8.2-5), lm-batmon (<= 0.96-3), login.app (<= 1.2.1-18), lsb-core (<= 3.1-4), lwm (<= 1.2.1-1), mctools-lite (<= 970129-16), mgp (<= 1.11b-6), motif-clients (<= 2.2.3-1.3), navigator-smotif-477, netscape-base-4, olvwm (<= 4.4.3.2p1.4-21), olwm (<= 3.2p1.4-21), oneko (<= 1.2.sakura.6-1), opera (<< 9.10-20060616), pgaccess (<= 1:0.98.8.20030520-2), phototk, pixmap (<= 2.6pl4-14.1), plotmtv (<= 1.4.4t-8.1), pmud (<= 0.10-9), ppxp (<= 0.2001080415-14), ppxp-x11 (<= 0.2001080415-14), procmeter (<= 2.5.1-11), propsel (<= 971130-5.3), proxymngr (<< 7.0), qcam (<= 0.91-11.1), regexplorer (<= 0.1.6-12), seyon (<= 2.20c-20), skkinput (<= 1:2.06.4-4), stella (<< 2.2-1), tkdesk (<= 2.0-5), tkseti (<= 3.06-1), tkworld, twlog (<= 1.3-4), twm (<< 7.0), ucbmpeg-play (<< 2.3p-13), vide (<= 1.21-3), videogen (<= 0.32-1), vtwm (<= 5.4.7-2), w9wm (<= 0.4.2-4), wdm (<= 1.28-1), wily (<= 0.13.41-6), wmavgload (<= 0.7.0-6.1), wmcpu (<= 1.3-4.1), wmdate (<= 0.5-7.1), wmnet (<= 1.05-12), wmnetselect (<= 0.85-5.5), wmscope (<= 3.0-9.1), wmsensors (<= 1.0.4-3.4), wmtv (<= 0.6.5-15), x-common, xautolock (<= 1:2.1-6), xbanner (<= 1.31-23), xbase-clients (<< 1:7.0), xbatt (<= 1.2.1-4), xbattbar (<= 1.4.2-3.1), xcal (<= 4.1-18.2), xcalendar-i18n (<= 4.0.0.i18p1-13.1), xcb (<= 2.4-4), xclip (<= 0.08-5), xclips (<= 6.21-6), xcolors (<= 1.5a-2), xcolorsel (<= 1.1a-11), xdkcal (<= 0.9d-2.1), xdm (<= 1:1.0.1-6), xdmx (<< 1:1.0), xdu (<= 3.0-14), xearth (<= 1.1-10.2), xengine (<= 1.11-9), xephem (<= 3.4-5), xext, xezmlm (<= 1.0.3-11), xfaces (<= 3.3-25), xfishtank (<= 2.2-23.1), xfm (<= 1.4.3-8), xfractint (<< 20.3.01-1), xfree86-common, xfs (<< 1:1.0), xfs-xtt (<= 1:1.4.1.xf430-6), xftp, xfwp (<< 7.0), xgdipc (<= 1.2-0.3), xgmod (<= 3.1-9), xgobi, xgraph (<= 12.1-3), xinput (<= 1.2-5.2), xipmsg (<= 0.8088-1.1), xisp, xlbiff (<< 4.1-4), xli (<= 1.17.0-21), xlockmore (<= 1:5.21-1), xlockmore-gl (<= 1:5.21-1), xlogmaster (<= 1.6.0-8), xmailbox (<= 2.5-9), xmem (<= 1.20-19), xmeter (<= 1.15-6), xmh (<= 6.8.2.dfsg.1-4), xmix (<= 2.1-5), xmon (<= 1.5.6-1.3), xnecview (<= 1.34-2), xnest (<< 1:1.0), xodo (<= 1.2-9.2), xorg-common, xpaste, xpmumon (<= 1.3.0), xpostit (<= 3.3.1-8.2), xpostitplus, xprint (<= 1:0.1.0.alpha1-13), xrn (<= 9.02-7.1), xserver-common (<< 7), xserver-xfree86 (<< 1:7.0), xserver-xfree86-dbg, xserver-xorg (<< 1:7.4~), xslideshow (<= 3.1-8.1), xsysinfo (<= 1.7-2), xtel (<= 3.3.0-5.4), xterm (<< 208-1), xtoolwait (<= 1.3-6), xtrkcad (<= 3.1.4-1), xtrlock (<= 2.0-11), xturqstat (<= 2.2.2sarge1), xutils (<< 1:7.0), xv (<= 3.10a-26), xvfb (<< 1:1.0), xview-clients (<= 3.2p1.4-21), xviewg (<= 3.2p1.4-21), xviewg-dev (<= 3.2p1.4-21), xvkbd (<= 2.6-2.1), xwit (<= 3.4-6), xxkb (<= 1.10-2.1), xzoom (<= 0.3-17), yank (<= 0.2.1-7.2)
+Breaks: gdm (<< 2.20.7-5)
+Filename: pool/main/x/xorg/x11-common_7.5+6_all.deb
+Size: 280238
+MD5Sum: 312093359c4f0f7decfb049768d6bb12
+Description: X Window System (X.Org) infrastructure
+
+Package: xulrunner-1.9.1
+Priority: optional
+Section: libs
+Installed-Size: 19060
+Maintainer: Maintainers of Mozilla-related packages <pkg-mozilla-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: xulrunner
+Version: 1.9.1.11-1
+Replaces: xulrunner-1.9.1-gnome-support
+Depends: libasound2 (>> 1.0.18), libatk1.0-0 (>= 1.29.3), libbz2-1.0, libc6 (>= 2.3.6-6~), libcairo2 (>= 1.8.8), libdbus-1-3 (>= 1.0.2), libfontconfig1 (>= 2.8.0), libfreetype6 (>= 2.2.1), libgcc1 (>= 1:4.1.1), libglib2.0-0 (>= 2.24.0), libgtk2.0-0 (>= 2.18.0), libhunspell-1.2-0 (>= 1.2.11), libjpeg62 (>= 6b1), libmozjs2d (= 1.9.1.11-1), libnspr4-0d (>> 4.7.1-1), libnss3-1d (>= 3.12.6), libpango1.0-0 (>= 1.14.0), libpng12-0 (>= 1.2.13-4), libreadline6 (>= 6.0), libsqlite3-0 (>= 3.6.23.1), libstartup-notification0 (>= 0.10), libstdc++6 (>= 4.1.1), libx11-6, libxrender1, libxt6, zlib1g (>= 1:1.1.4)
+Suggests: libdbus-glib-1-2 (>= 0.78), libgconf2-4 (>= 2.27.0), libgnome2-0 (>= 2.17.3), libgnomevfs2-0 (>= 1:2.17.90), libgnomeui-0, libcanberra0
+Conflicts: j2re1.4, pango-graphite (<< 0.9.3), xulrunner-1.9.1-gnome-support
+Breaks: iceweasel (<< 3.5.5-1)
+Filename: pool/main/x/xulrunner/xulrunner-1.9.1_1.9.1.11-1_i386.deb
+Size: 7230878
+MD5Sum: d2b3c7b52aee7284290136e2c844ed7b
+Description: XUL + XPCOM application runner
+
+Package: xz-utils
+Priority: required
+Section: utils
+Installed-Size: 364
+Maintainer: Jonathan Nieder <jrnieder@gmail.com>
+Architecture: i386
+Version: 4.999.9beta+20100713-1
+Replaces: xz-lzma (<< 4.999.9beta+20091004-1)
+Depends: libc6 (>= 2.6), liblzma2 (>= 4.999.9beta+20100602)
+Suggests: xz-lzma
+Breaks: xz-lzma (<< 4.999.9beta+20091004-1)
+Filename: pool/main/x/xz-utils/xz-utils_4.999.9beta+20100713-1_i386.deb
+Size: 174098
+MD5Sum: a2a576f97035c84b78e7f269656cab86
+Description: XZ-format compression utilities
+
+Package: zlib1g
+Priority: required
+Section: libs
+Installed-Size: 160
+Maintainer: Mark Brown <broonie@debian.org>
+Architecture: i386
+Source: zlib
+Version: 1:1.2.3.4.dfsg-3
+Provides: libz1
+Depends: libc6 (>= 2.1.3)
+Conflicts: zlib1 (<= 1:1.0.4-7)
+Filename: pool/main/z/zlib/zlib1g_1.2.3.4.dfsg-3_i386.deb
+Size: 75952
+MD5Sum: 37246cd4fe5d4cb0f7c03ce3082164a3
+Description: compression library - runtime
+
diff --git a/test/integration/Packages-bug-593360-modifiers-in-names b/test/integration/Packages-bug-593360-modifiers-in-names
new file mode 100644
index 000000000..d2ac8d4e1
--- /dev/null
+++ b/test/integration/Packages-bug-593360-modifiers-in-names
@@ -0,0 +1,42 @@
+Package: g++
+Priority: optional
+Section: devel
+Installed-Size: 40
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: i386
+Source: gcc-defaults (1.96)
+Version: 4:4.4.5-1
+Filename: pool/main/g/gcc-defaults/g++_4.4.5-1_i386.deb
+Size: 1372
+MD5sum: 37e129a4b130e8b96a9b9d5b26a3fffa
+SHA1: d98768d1547389a563e60433268143f42578c3e6
+SHA256: 18d933972392d233127bdd766cfcaaaa2e35f57de47c7af678d599be9613d562
+Description: The GNU C++ compiler
+
+Package: apt
+Priority: important
+Section: admin
+Installed-Size: 5984
+Maintainer: APT Development Team <deity@lists.debian.org>
+Architecture: all
+Version: 0.8.8
+Filename: pool/main/a/apt/apt_0.8.8_i386.deb
+Size: 2140632
+MD5sum: 4283aa3bb751253faf1b2204e0229e4f
+SHA1: 59d432f56901faa86e814a436b8da010ee1c7b8a
+SHA256: 072dcf4359dce9698aeaa54366eb20513f860c2bb6d44a95973c0b2ad413bfab
+Description: Advanced front-end for dpkg
+
+Package: apt+
+Priority: important
+Section: admin
+Installed-Size: 5984
+Maintainer: APT Development Team <deity@lists.debian.org>
+Architecture: all
+Version: 0.8.8
+Filename: pool/main/a/apt/apt_0.8.8_i386.deb
+Size: 2140632
+MD5sum: 4283aa3bb751253faf1b2204e0229e4f
+SHA1: 59d432f56901faa86e814a436b8da010ee1c7b8a
+SHA256: 072dcf4359dce9698aeaa54366eb20513f860c2bb6d44a95973c0b2ad413bfab
+Description: Advanced front-end for dpkg
diff --git a/test/integration/Packages-bug-598669-install-postfix-gets-exim-heavy b/test/integration/Packages-bug-598669-install-postfix-gets-exim-heavy
new file mode 100644
index 000000000..a249d6ed3
--- /dev/null
+++ b/test/integration/Packages-bug-598669-install-postfix-gets-exim-heavy
@@ -0,0 +1,30 @@
+Package: exim4-daemon-heavy
+Priority: optional
+Section: mail
+Installed-Size: 1060
+Maintainer: Exim4 Maintainers <pkg-exim4-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: exim4
+Version: 4.72-1
+Replaces: mail-transport-agent
+Provides: mail-transport-agent
+Conflicts: mail-transport-agent
+Filename: pool/main/e/exim4/exim4-daemon-heavy_4.72-1_i386.deb
+Size: 508988
+MD5sum: 7adf3b0ef8f134e70d19ee216e6f4452
+Description: Exim MTA (v4) daemon with extended features, including exiscan-acl
+
+Package: postfix
+Priority: extra
+Section: mail
+Installed-Size: 3196
+Maintainer: LaMont Jones <lamont@debian.org>
+Architecture: i386
+Version: 2.7.1-1
+Replaces: mail-transport-agent
+Provides: mail-transport-agent
+Conflicts: mail-transport-agent
+Filename: pool/main/p/postfix/postfix_2.7.1-1_i386.deb
+Size: 1325662
+MD5sum: 1ef63b6a62b4be120a9cdc312b81a698
+Description: High-performance mail transport agent
diff --git a/test/integration/Packages-bug-605394-versioned-or-groups b/test/integration/Packages-bug-605394-versioned-or-groups
new file mode 100644
index 000000000..60327364b
--- /dev/null
+++ b/test/integration/Packages-bug-605394-versioned-or-groups
@@ -0,0 +1,71 @@
+Package: apache2-mpm-prefork
+Priority: optional
+Section: httpd
+Installed-Size: 68
+Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
+Architecture: i386
+Source: apache2
+Version: 2.2.16-4
+Provides: apache2-mpm
+Conflicts: apache2-mpm
+Filename: pool/main/a/apache2/apache2-mpm-prefork_2.2.16-4_i386.deb
+Size: 2276
+MD5Sum: c0db3e637052e59dbdb2fa08f4cdcea4
+Description: Apache HTTP Server - traditional non-threaded model
+Task: web-server
+
+Package: apache2-mpm-worker
+Priority: optional
+Section: httpd
+Installed-Size: 68
+Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
+Architecture: i386
+Source: apache2
+Version: 2.2.16-4
+Provides: apache2-mpm
+Conflicts: apache2-mpm
+Filename: pool/main/a/apache2/apache2-mpm-worker_2.2.16-4_i386.deb
+Size: 2220
+MD5Sum: 71bccda875aa0afac700410b951370ba
+Description: Apache HTTP Server - high speed threaded model
+
+Package: libapache2-mod-php5
+Priority: optional
+Section: httpd
+Installed-Size: 7588
+Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
+Architecture: i386
+Source: php5
+Version: 5.3.3-4
+Depends: apache2-mpm-prefork (>> 2.0.52)
+Filename: pool/main/p/php5/libapache2-mod-php5_5.3.3-4_i386.deb
+Size: 2886980
+MD5Sum: b41ec4b98aa08966288570e07cd864ab
+Description: server-side, HTML-embedded scripting language (Apache 2 module)
+Task: web-server
+
+Package: php5-cgi
+Priority: optional
+Section: php
+Installed-Size: 14672
+Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
+Architecture: i386
+Source: php5
+Version: 5.3.3-4
+Filename: pool/main/p/php5/php5-cgi_5.3.3-4_i386.deb
+Size: 5713726
+MD5Sum: 9e579982032c7bb98508e16e314f45e9
+Description: server-side, HTML-embedded scripting language (CGI binary)
+
+Package: php5
+Priority: optional
+Section: php
+Installed-Size: 20
+Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
+Architecture: all
+Version: 5.3.3-4
+Depends: libapache2-mod-php5 (>= 5.3.3-4) | php5-cgi (>= 5.3.3-4)
+Filename: pool/main/p/php5/php5_5.3.3-4_all.deb
+Size: 1050
+MD5Sum: cbedd95ed5b868ba1ffd10747abc0ee3
+Description: server-side, HTML-embedded scripting language (metapackage)
diff --git a/test/integration/Packages-bug-723705-tagfile-truncates-fields b/test/integration/Packages-bug-723705-tagfile-truncates-fields
new file mode 100644
index 000000000..c42b85072
--- /dev/null
+++ b/test/integration/Packages-bug-723705-tagfile-truncates-fields
@@ -0,0 +1,167 @@
+Package: cdebconf-gtk-udeb
+Source: cdebconf
+Version: 0.185
+Installed-Size: 92
+Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
+Architecture: amd64
+Description: Gtk+ frontend for Debian Configuration Management System
+Description-md5: 75d036e0a245499123544e2254b92e9c
+Section: debian-installer
+Priority: optional
+Filename: pool/main/c/cdebconf/cdebconf-gtk-udeb_0.185_amd64.udeb
+Size: 27278
+MD5sum: a1bbbc1d4fb8e0615b5621abac021924
+SHA1: b1a7ab55a90f61e5337847d02ff1d12d73559def
+SHA256: cd79f3205304a7932b3309c4df9898c9a53929bc651912659858e087ebe1c18a
+
+Package: cdebconf-newt-udeb
+Source: cdebconf
+Version: 0.185
+Installed-Size: 58
+Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
+Architecture: amd64
+Description: Newt frontend for Debian Configuration Management System
+Description-md5: e080be5e38cb8c57bca2f3effe9ee030
+Section: debian-installer
+Priority: optional
+Filename: pool/main/c/cdebconf/cdebconf-newt-udeb_0.185_amd64.udeb
+Size: 19192
+MD5sum: de27807f56dae2f2403b3322d5fe6bd2
+SHA1: 57883e223d46a9f25966f9b986e6a3bc2f67d8ef
+SHA256: 5f8b9c3a5430f2ec879484a7736582b152d76cc8ba9bc19328268f3635759a1b
+
+Package: cdebconf-udeb
+Source: cdebconf
+Version: 0.185
+Installed-Size: 245
+Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
+Architecture: amd64
+Provides: debconf-2.0
+Description: Debian Configuration Management System (C-implementation)
+Description-md5: 9f3579e9d9f86ac89e667a8707d3cbd3
+Section: debian-installer
+Priority: standard
+Filename: pool/main/c/cdebconf/cdebconf-udeb_0.185_amd64.udeb
+Size: 77376
+MD5sum: e3883706fdbf54c2e5ea959c92b2d37f
+SHA1: 0232f1bdf1531db628516ed3a46a27466b267fdc
+SHA256: 96345575417a3e4df8a2cadaa55784ec8f6c042defb1e2fc002d941b6116ceab
+
+Package: cdebconf-gtk-terminal
+Source: cdebconf-terminal
+Version: 0.22
+Installed-Size: 64
+Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
+Architecture: amd64
+Provides: cdebconf-terminal
+Depends: cdebconf-gtk-udeb, libc6-udeb (>= 2.17), libglib2.0-udeb (>= 2.36.4), libgtk2.0-0-udeb (>= 2.24.0), libvte9-udeb (>= 1:0.28.0), cdebconf-udeb, cdebconf-gtk-terminal, cdebconf-gtk-terminal, cdebconf-gtk-terminal, cdebconf-gtk-terminal, cdebconf-gtk-terminal, cdebconf-gtk-terminal, cdebconf-gtk-terminal
+Description: cdebconf gtk plugin displaying a terminal
+Description-md5: 18c4446758aec003eb8cd0a43419f1aa
+Section: debian-installer
+Priority: extra
+Filename: pool/main/c/cdebconf-terminal/cdebconf-gtk-terminal_0.22_amd64.udeb
+Size: 14734
+MD5sum: f9c3a7354560cb88e0396e2b7ba54363
+SHA1: 9c1c93328e758bfd9de2752466b271aaf38c8177
+SHA256: ca749853fc3b93db1d08ccdc6b46de27633de52bc5b880fa65275897ebcaaf69
+
+Package: cdebconf-newt-terminal
+Source: cdebconf-terminal
+Version: 0.22
+Installed-Size: 43
+Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
+Architecture: amd64
+Provides: cdebconf-terminal
+Depends: cdebconf-newt-udeb (>= 0.146), libc6-udeb (>= 2.17), libnewt0.52
+Description: cdebconf newt plugin to provide a clean terminal
+Description-md5: 4109a053022081b573d864d84d6eb16d
+Section: debian-installer
+Priority: extra
+Filename: pool/main/c/cdebconf-terminal/cdebconf-newt-terminal_0.22_amd64.udeb
+Size: 4538
+MD5sum: 20db6152fce5081fcbf49c7c08f21246
+SHA1: fa2a40f777a2f48b9634866bc780fb059e60b2fe
+SHA256: c4d99ef27285f0c9090005313165627e56e0972e687af7e68c2b1d1538e2ae09
+
+Package: libc6-udeb
+Source: eglibc (2.17-92)
+Version: 2.17-92+b1
+Installed-Size: 3126
+Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Architecture: amd64
+Provides: glibc-2.17-1, libc-udeb, libc6
+Description: Embedded GNU C Library: Shared libraries - udeb
+Description-md5: 9552ce73b7b3fb466e3d89fe8db9a563
+Section: debian-installer
+Priority: extra
+Filename: pool/main/e/eglibc/libc6-udeb_2.17-92+b1_amd64.udeb
+Size: 1056000
+MD5sum: 7fd7032eeeecf7f76eff79a0543fbd72
+SHA1: 724b6a81b8fbc9d4d2bb43d656c08de73f7ada25
+SHA256: 137d4c001bbfde8161315c36e6cb8653ae2c50a8d6b6d2d27396c492d91a1723
+
+Package: libglib2.0-udeb
+Source: glib2.0
+Version: 2.36.4-1
+Installed-Size: 10070
+Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
+Architecture: amd64
+Description: GLib library of C routines - minimal runtime
+Description-md5: 0244040042870a89aa49f037cce3f1e9
+Section: debian-installer
+Priority: optional
+Filename: pool/main/g/glib2.0/libglib2.0-udeb_2.36.4-1_amd64.udeb
+Size: 1714604
+MD5sum: 72da029f1bbb36057d874f1f82a5d00a
+SHA1: 32bce78a052ef19a620f43ecbe12404fa570c0f1
+SHA256: 8edbc7cb872c0a82705913563f93f9eec5750881e4378c5a48770cde840cd6eb
+
+Package: libgtk2.0-0-udeb
+Source: gtk+2.0
+Version: 2.24.20-1
+Installed-Size: 5035
+Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
+Architecture: amd64
+Provides: gtk2.0-binver-2.10.0
+Description: GTK+ graphical user interface library - minimal runtime
+Description-md5: 32e5112b80c02578837cff4f65dfec84
+Section: debian-installer
+Priority: extra
+Filename: pool/main/g/gtk+2.0/libgtk2.0-0-udeb_2.24.20-1_amd64.udeb
+Size: 1643046
+MD5sum: 25513478eb2e02e5766c0eea0b411ca9
+SHA1: 9274f05bfa930a3406403441ce061bade04e2064
+SHA256: d5f611f48928ae02f759105cf8cff467cde1cb44df56ad31067168b46a80f8bc
+
+Package: libvte9-udeb
+Source: vte
+Version: 1:0.28.2-5
+Installed-Size: 628
+Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
+Architecture: amd64
+Description: Terminal emulator widget for GTK+ 2.0 - minimal runtime
+Description-md5: e7993385c30bae6e96c8cb87795a513c
+Section: debian-installer
+Priority: extra
+Filename: pool/main/v/vte/libvte9-udeb_0.28.2-5_amd64.udeb
+Size: 216968
+MD5sum: 7da7201effaf5ced19abd9d0b45aa2c6
+SHA1: a424cf779e7614d79740c422b6342de04fed3646
+SHA256: 4963033cbda5a8ba7eb8ebf1debae34463b8e63b821259860cfb51c1ab99562d
+
+Package: zlib1g-udeb
+Source: zlib
+Version: 1:1.2.8.dfsg-1
+Installed-Size: 115
+Maintainer: Mark Brown <broonie@debian.org>
+Architecture: amd64
+Description: compression library - runtime for Debian installer
+Description-md5: 9cab974e3eab657c53bc17611b894c7a
+Section: debian-installer
+Priority: optional
+Filename: pool/main/z/zlib/zlib1g-udeb_1.2.8.dfsg-1_amd64.udeb
+Size: 45270
+MD5sum: c02884420f79a3ae4569cf67782f3e74
+SHA1: 7cd1a7c8be4e086de733a0ce76f87d42b8b2173b
+SHA256: 61641ee2b5e185232108333438b72bec71ef549fe0e0df1b2b3afa37174e53a7
+
diff --git a/test/integration/Packages-bug-lp1347721-dpkg-ordering b/test/integration/Packages-bug-lp1347721-dpkg-ordering
new file mode 100644
index 000000000..ea96b387c
--- /dev/null
+++ b/test/integration/Packages-bug-lp1347721-dpkg-ordering
@@ -0,0 +1,445 @@
+Package: init
+xEssential: yes
+Priority: required
+Section: metapackages
+Installed-Size: 29
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: pkg-systemd-maintainers <pkg-systemd-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: init-system-helpers
+Version: 1.20
+Pre-Depends: sysvinit-core | systemd-sysv | upstart
+Filename: pool/main/i/init-system-helpers/init_1.20_i386.deb
+Size: 3494
+MD5sum: a388b6f4f6ed0d01b3d459cfad6582fe
+SHA1: d0eb6414a6bb48bb886fcc19962f6a7f302977f3
+SHA256: 9f299b2bf18d6e4534f3a73cca97ef93850e1b5fa38f8519da7c2b825d581f4c
+Description: System-V-like init utilities - metapackage
+Description-md5: e52554c23609041bfbca72fe27a132f9
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+
+Package: libudev1
+Priority: required
+Section: libs
+Installed-Size: 132
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian systemd Maintainers <pkg-systemd-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: systemd
+Version: 208-6ubuntu2
+Depends: libc6 (>= 2.17), libselinux1 (>= 1.32)
+Pre-Depends: multiarch-support
+Filename: pool/main/s/systemd/libudev1_208-6ubuntu2_i386.deb
+Size: 36008
+MD5sum: b03338c052438a95919b9db4d6f9493e
+SHA1: a85242bfc653255b5fa73d0fbec92815dc9c09fc
+SHA256: d66d7948703b33bd617e16a1b9ac6f24ca564312890b1f9218330f638080a307
+Description: libudev shared library
+Multi-Arch: same
+Homepage: http://www.freedesktop.org/wiki/Software/systemd
+Description-md5: ace5b83d7b48187416c90173a93255b6
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: udev
+Priority: required
+Section: admin
+Installed-Size: 5879
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian systemd Maintainers <pkg-systemd-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: systemd
+Version: 208-6ubuntu2
+Depends: libacl1 (>= 2.2.51-8), libblkid1 (>= 2.19.1), libc6 (>= 2.17), libkmod2 (>= 5~), libselinux1 (>= 2.0.65), libudev1 (= 208-6ubuntu2), lsb-base (>= 4.1+Debian11ubuntu7), util-linux (>= 2.16), procps
+Pre-Depends: debconf (>= 1.4.69) | debconf-2.0
+Breaks: consolekit (<< 0.4.6-1)
+Filename: pool/main/s/systemd/udev_208-6ubuntu2_i386.deb
+Size: 799582
+MD5sum: 814bb3babdbe76994ce536384ca31f88
+SHA1: bbb662c89f2b1ff4fd450d1523cc21b5b1c339bc
+SHA256: e444350214c5c121b2ca8031f76c53809f95ebb5c4cec4cf4595c7520ac09529
+Description: /dev/ and hotplug management daemon
+Multi-Arch: foreign
+Homepage: http://www.freedesktop.org/wiki/Software/systemd
+Description-md5: e875ddb09f46f1f7672af537f0c875ca
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: initscripts
+Priority: required
+Section: admin
+Installed-Size: 246
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
+Architecture: i386
+Source: sysvinit
+Version: 2.88dsf-41ubuntu16
+Replaces: libc0.1, libc0.3, libc6, libc6.1
+Depends: libc6 (>= 2.4), mount (>= 2.11x-1), debianutils (>= 4), lsb-base (>= 4.1+Debian11ubuntu7), sysvinit-utils (>= 2.86.ds1-64), sysv-rc | file-rc, coreutils (>= 5.93), passwd, init, mountall (>= 2.28)
+Recommends: psmisc, e2fsprogs
+Conflicts: libdevmapper1.02.1 (<< 2:1.02.24-1)
+Breaks: aide (<< 0.15.1-5), atm-tools (<< 1:2.5.1-1.3), bootchart (<< 0.10~svn407-3.3), console-common (<< 0.7.86), cruft (<< 0.9.16), eepc-acpi-scripts (<< 1.1.12), fcheck (<< 2.7.59-16), hostapd (<< 1:0.7.3-3), hostname (<< 2.95ubuntu1~boot2), ifupdown (<< 0.6.8ubuntu27), libpam-mount (<< 2.13-1), ltsp-client-core (<< 5.2.16-1), mdadm (<< 3.2.2-1), nbd-client (<< 1:2.9.23-1), nfs-common (<< 1:1.2.5-3), portmap (<< 6.0.0-2), readahead-fedora (<< 2:1.5.6-3), resolvconf (<< 1.49), rpcbind (<< 0.2.0-7), rsyslog (<< 5.8.2-2), selinux-policy-default (<= 2:0.2.20100524-9), splashy (<< 0.3.13-5.1+b1), sysklogd (<< 1.5-6.2), udev (<< 146-2~boot6), upstart (<< 0.6.3-2~boot4), wpasupplicant (<< 0.7.3-4), xymon (<< 4.3.0~beta2.dfsg-9)
+Filename: pool/main/s/sysvinit/initscripts_2.88dsf-41ubuntu16_i386.deb
+Size: 35150
+MD5sum: e78f1e7816f03ded97eacd469505ea45
+SHA1: 81f88f9258c680e9983316d75baff7572ecec75c
+SHA256: 996e4d86486cbe12a7b7852ec1a9fe459dbf0afab51dc13bd701b6d970fdc14a
+Description: scripts for initializing and shutting down the system
+Multi-Arch: foreign
+Homepage: http://savannah.nongnu.org/projects/sysvinit
+Description-md5: db9003c179cd2a623493209da58ea2ea
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: libc6
+Priority: required
+Section: libs
+Installed-Size: 9284
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Architecture: i386
+Source: glibc
+Version: 2.19-4ubuntu1
+Replaces: libc6-i386, libc6-xen
+Provides: glibc-2.19-1, libc6-i686, libc6-xen
+Depends: libgcc1
+Suggests: glibc-doc, debconf | debconf-2.0, locales
+Conflicts: libc6-xen, prelink (<= 0.0.20090311-1), tzdata (<< 2007k-1), tzdata-etch
+Breaks: hurd (<< 1:0.5.git20140203-1), libtirpc1 (<< 0.2.3), nscd (<< 2.19)
+Filename: pool/main/g/glibc/libc6_2.19-4ubuntu1_i386.deb
+Size: 4012440
+MD5sum: 946665711bb0294bd2c7729b3174ba8b
+SHA1: 063e268e0d1e368e218d450a4bd2af7608b5e38e
+SHA256: 0e33f5c3b6da3a6ec52fb0274abfa0da5489808feb220b6e6640432cb84f948f
+Description: GNU C Library: Shared libraries
+Multi-Arch: same
+Homepage: http://www.gnu.org/software/libc/libc.html
+Description-md5: fc3001b0b90a1c8e6690b283a619d57f
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: libmount1
+Priority: required
+Section: libs
+Installed-Size: 253
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+Architecture: i386
+Source: util-linux
+Version: 2.20.1-5.1ubuntu21
+Depends: libblkid1 (>= 2.17.2), libc6 (>= 2.8), libselinux1 (>= 1.32)
+Pre-Depends: multiarch-support
+Filename: pool/main/u/util-linux/libmount1_2.20.1-5.1ubuntu21_i386.deb
+Size: 60156
+MD5sum: d17af590ad06ac914a1024d54184cee6
+SHA1: 6eb2a281c409bd5181ce6b871795f8e4609565bc
+SHA256: 78ce54b9f644c365b95a7230e1e50762d628c9d0d3549211017a98d4cb5013c4
+Description: block device id library
+Multi-Arch: same
+Homepage: http://userweb.kernel.org/~kzak/util-linux/
+Description-md5: 8f605597a2fb2fd7bffd09db537dd040
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: libplymouth4
+Priority: required
+Section: libs
+Installed-Size: 315
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Source: plymouth
+Version: 0.9.0-0ubuntu2
+Replaces: plymouth (<< 0.7.0+git20090207-0ubuntu0.1~ppa4)
+Depends: libc6 (>= 2.9), libpng12-0 (>= 1.2.13-4), libudev1 (>= 183)
+Pre-Depends: multiarch-support
+Breaks: casper (= 1.227), mountall (<< 2.8)
+Filename: pool/main/p/plymouth/libplymouth4_0.9.0-0ubuntu2_i386.deb
+Size: 85024
+MD5sum: 8d9e7001ba371bd802956de1e81d1997
+SHA1: 749bdaee4d8bd4c2383c703eb244caa473180d35
+SHA256: 59bd4492b6e71eee5c13ba9c63da12ece49c43106829556722ca503867ce7251
+Description: graphical boot animation and logger - shared libraries
+Multi-Arch: same
+Description-md5: 29e2ed45f3e127c38b58dae52061cc33
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: libprocps3
+Priority: required
+Section: libs
+Installed-Size: 133
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Craig Small <csmall@debian.org>
+Architecture: i386
+Source: procps
+Version: 1:3.3.9-1ubuntu5
+Replaces: procps (<< 1:3.3.2-1)
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Filename: pool/main/p/procps/libprocps3_3.3.9-1ubuntu5_i386.deb
+Size: 30078
+MD5sum: 0df60f591dfe64ed23bb1f3a1546c0ce
+SHA1: db672ec37e88574bf1a1d5484d80cfd4ff04f9f6
+SHA256: b5df28501805a6833dc78e049159a7c560af6f24f18f51459bd8890c31e0fdc6
+Description: library for accessing process information from /proc
+Multi-Arch: same
+Homepage: http://gitorious.org/procps
+Description-md5: 195f4a1a493350f6f0732a65b3cda83f
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: libudev1
+Priority: required
+Section: libs
+Installed-Size: 131
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian systemd Maintainers <pkg-systemd-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: systemd
+Version: 204-14ubuntu2
+Depends: libc6 (>= 2.17), libcgmanager0, libdbus-1-3 (>= 1.0.2), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0)
+Pre-Depends: multiarch-support
+Filename: pool/main/s/systemd/libudev1_204-14ubuntu2_i386.deb
+Size: 35518
+MD5sum: a606f9e4aab028b9ab658b6e8a09d5fb
+SHA1: ef28d377e6cc8f1e98dd9cd8c40edda90e2eed20
+SHA256: c02c85725f64b6c804235329166bf66e40da948d96123336ec55e13e1654720f
+Description: libudev shared library
+Multi-Arch: same
+Homepage: http://www.freedesktop.org/wiki/Software/systemd
+Description-md5: ace5b83d7b48187416c90173a93255b6
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: lsb-base
+Priority: required
+Section: misc
+Installed-Size: 83
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian LSB Team <debian-lsb@lists.debian.org>
+Architecture: all
+Source: lsb
+Version: 4.1+Debian11ubuntu8
+Replaces: upstart (<< 1.12.1-0ubuntu8)
+Breaks: upstart (<< 1.12.1-0ubuntu8)
+Filename: pool/main/l/lsb/lsb-base_4.1+Debian11ubuntu8_all.deb
+Size: 13094
+MD5sum: 9ec51f910e6d8e86bfb489b71b237e66
+SHA1: 8091ba9ffc03999a3db1e2e0ee7d32ac5139a942
+SHA256: be8d24447147aa997b79353eaf8732b3d0967118c011b47476c841667eb15f7e
+Description: Linux Standard Base 4.1 init script functionality
+Multi-Arch: foreign
+Homepage: http://www.linuxfoundation.org/collaborate/workgroups/lsb
+Description-md5: 4ebb3d88f9f483751e70c55779c52d01
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: mount
+Essential: yes
+Priority: required
+Section: admin
+Installed-Size: 410
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+Architecture: i386
+Source: util-linux
+Version: 2.20.1-5.1ubuntu21
+Pre-Depends: libblkid1 (>= 2.20.1), libc6 (>= 2.8), libmount1 (>= 2.20.1), libselinux1 (>= 2.0.15)
+Suggests: nfs-common (>= 1:1.1.0-13)
+Filename: pool/main/u/util-linux/mount_2.20.1-5.1ubuntu21_i386.deb
+Size: 112598
+MD5sum: bdff5dbfbf17e2be281d64e2e7a4912b
+SHA1: 1ed4abb0d5de8a09c704ac2d33de123015e5318a
+SHA256: d2f023c763f7b6e91f3cd14073bfc5af7e7bfe3922fc5ca681d8038c80323f9e
+Description: Tools for mounting and manipulating filesystems
+Multi-Arch: foreign
+Homepage: http://userweb.kernel.org/~kzak/util-linux/
+Description-md5: 46eb8e09a600d5eb98b6b40428349102
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: mountall
+Priority: required
+Section: admin
+Installed-Size: 248
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+Architecture: i386
+Version: 2.54build1
+Replaces: upstart (<< 0.6.3-2)
+Depends: makedev, udev, plymouth, coreutils (>= 7.1), libc6 (>= 2.9), libdbus-1-3 (>= 1.2.16), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0), libplymouth4 (>= 0.8.1-3), libudev1 (>= 183)
+Pre-Depends: dpkg (>= 1.15.7.2)
+Breaks: initscripts (<< 2.88dsf-24), policycoreutils (<< 2.0.69-2ubuntu4), usplash (<< 0.5.47)
+Filename: pool/main/m/mountall/mountall_2.54build1_i386.deb
+Size: 54166
+MD5sum: a208d9dc5aef018087d5e00cea7f6c92
+SHA1: 13686aa81ebef6c3009ff618708d76bc68ff94e8
+SHA256: dee359411cd7cfad19581f380af6275d46a6c5ecf55f512523b75adaa4734d03
+Description: filesystem mounting tool
+Multi-Arch: foreign
+Description-md5: b5b5a27fc0e8063ef1226a39fb8ecf70
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: procps
+Priority: required
+Section: admin
+Installed-Size: 634
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Craig Small <csmall@debian.org>
+Architecture: i386
+Version: 1:3.3.9-1ubuntu5
+Provides: watch
+Depends: libc6 (>= 2.15), libncurses5 (>= 5.5-5~), libncursesw5 (>= 5.6+20070908), libprocps3, libtinfo5, lsb-base (>= 4.1+Debian11ubuntu7), initscripts
+Recommends: psmisc
+Conflicts: pgrep (<< 3.3-5), w-bassman (<< 1.0-3)
+Breaks: guymager (<= 0.5.9-1), open-vm-tools (<= 2011.12.20-562307-1), xmem (<= 1.20-27.1)
+Filename: pool/main/p/procps/procps_3.3.9-1ubuntu5_i386.deb
+Size: 203368
+MD5sum: 17be371891f077e04075c6eb0af06b3c
+SHA1: a5c6171b5a6430aa9436e42f0e64226dd2e7a665
+SHA256: 41e03fd2d05161c402d9a5d2b5feecb30a42f8919eb43712ebdd4340433803c1
+Description: /proc file system utilities
+Multi-Arch: foreign
+Homepage: http://gitorious.org/procps
+Description-md5: 943f3288c1aaa379fca73a3ff1a35278
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: sysv-rc
+Priority: required
+Section: admin
+Installed-Size: 224
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
+Architecture: all
+Source: sysvinit
+Version: 2.88dsf-41ubuntu16
+Replaces: file-rc
+Depends: debconf (>= 0.5) | debconf-2.0, sysvinit-utils (>= 2.86.ds1-62), insserv (>> 1.12.0-10)
+Recommends: lsb-base (>= 3.2-14)
+Suggests: sysv-rc-conf, bum
+Conflicts: file-rc
+Breaks: initscripts (<< 2.88dsf-41ubuntu14)
+Filename: pool/main/s/sysvinit/sysv-rc_2.88dsf-41ubuntu16_all.deb
+Size: 37784
+MD5sum: e57bc9887432f76266d7bf741cf9d813
+SHA1: 446d24cc86bdb7a779856c00f9dea966227a00e2
+SHA256: 072d2745b9c966d63cba5abf52357374e7a043b3cc1bbde0b8ccf68f82e45f60
+Description: System-V-like runlevel change mechanism
+Multi-Arch: foreign
+Homepage: http://savannah.nongnu.org/projects/sysvinit
+Description-md5: 195f2d617082a23f37cee0f50784eef9
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: sysvinit-utils
+Priority: required
+Section: admin
+Installed-Size: 236
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
+Architecture: i386
+Source: sysvinit
+Version: 2.88dsf-41ubuntu16
+Replaces: last, sysvinit (<= 2.86.ds1-65)
+Depends: libc6 (>= 2.15), libselinux1 (>= 1.32), lsb-base (>= 4.1+Debian11ubuntu7)
+Recommends: upstart (>= 0.6.3-4)
+Suggests: bootlogd, sash
+Conflicts: chkconfig (<< 11.0-79.1-2), last, sysvconfig
+Breaks: upstart (<< 1.5-0ubuntu5)
+Filename: pool/main/s/sysvinit/sysvinit-utils_2.88dsf-41ubuntu16_i386.deb
+Size: 49652
+MD5sum: e1340ba69c7a5f0cf1a84b3f68993570
+SHA1: 7cbd535c1c010c2e84cb454562fb6632fb366ddc
+SHA256: 576c2bcfbf56871acd68576f07fd18b6bfccd8a5db6dfa04bcf62183f43e77a0
+Description: System-V-like utilities
+Multi-Arch: foreign
+Homepage: http://savannah.nongnu.org/projects/sysvinit
+Description-md5: 1d2bc4c9c32104729144c7578ecd30bd
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: udev
+Priority: required
+Section: admin
+Installed-Size: 5123
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian systemd Maintainers <pkg-systemd-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: systemd
+Version: 204-14ubuntu2
+Depends: libacl1 (>= 2.2.51-8), libblkid1 (>= 2.19.1), libc6 (>= 2.17), libcgmanager0, libdbus-1-3 (>= 1.0.2), libkmod2 (>= 5~), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0), libselinux1 (>= 2.0.65), libudev1 (= 204-14ubuntu2), lsb-base (>= 4.1+Debian11ubuntu7), util-linux (>= 2.16), procps
+Pre-Depends: debconf (>= 1.4.69) | debconf-2.0
+Breaks: consolekit (<< 0.4.6-1)
+Filename: pool/main/s/systemd/udev_204-14ubuntu2_i386.deb
+Size: 739026
+MD5sum: a85b035885e1b316354f6e5d0b8eeb69
+SHA1: 970405e4c8838c3cf17d1834c8917705d977879e
+SHA256: 05fbd7f4b502fde9752b84b49364fe633b8377bcd996ec16462e0bc94adc9fcf
+Description: /dev/ and hotplug management daemon
+Multi-Arch: foreign
+Homepage: http://www.freedesktop.org/wiki/Software/systemd
+Description-md5: e875ddb09f46f1f7672af537f0c875ca
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: upstart
+Priority: required
+Section: admin
+Installed-Size: 1721
+Maintainer: James Hunt <james.hunt@ubuntu.com>
+Architecture: i386
+Version: 1.13.1-0ubuntu1
+Replaces: startup-tasks, system-services, sysvinit, upstart-compat-sysv, upstart-job
+Provides: startup-tasks, system-services, upstart-compat-sysv, upstart-job
+Depends: libc6 (>= 2.15), libcgmanager0, libdbus-1-3 (>= 1.2.16), libjson-c2 (>= 0.10), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0), libudev1 (>= 183), sysvinit-utils, initscripts, mountall, ifupdown (>= 0.6.10ubuntu5), libjson0 (>= 0.10-1.1ubuntu1), debianutils (>= 4)
+Suggests: python3, graphviz, bash-completion, upstart-monitor
+Conflicts: lxcguest, startup-tasks, system-services, sysvinit, upstart-compat-sysv, upstart-job
+Breaks: friendly-recovery (<< 0.2.13), libc6 (<< 2.12.1-0ubuntu12)
+Filename: pool/main/u/upstart/upstart_1.13.1-0ubuntu1_i386.deb
+Size: 388978
+MD5sum: 2ebf7fb1083b581707e445fee808e120
+SHA1: 901424ec0d304ca8d10a25321a55d1d69bd8e82d
+SHA256: c42fb117e90770c7163c9f4770e75e9c0d6a00d41c4b3afc2afebfa65ede80f8
+Description: event-based init daemon
+Multi-Arch: foreign
+Homepage: http://upstart.ubuntu.com/
+Orig-Maintainer: Steve Langasek <vorlon@debian.org>
+Description-md5: b776ec43b708c13dd0c2ab824471f478
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
diff --git a/test/integration/Packages-github-23-too-long-dependency-line b/test/integration/Packages-github-23-too-long-dependency-line
new file mode 100644
index 000000000..967d6edce
--- /dev/null
+++ b/test/integration/Packages-github-23-too-long-dependency-line
@@ -0,0 +1,17 @@
+Package: network-manager-strongswan
+Architecture: amd64
+Version: 1.3.1-14
+Priority: extra
+Section: net
+Maintainer: Jean-Christophe Manciot <manciot.jeanchristophe@gmail.com>
+Installed-Size: 256
+Provides: network-manager-strongswan
+Depends: libart-2.0-2,libatk1.0-0,libavahi-client3,libavahi-common3,libavahi-glib1,libbonobo2-0,libbonoboui2-0,libc6,libcairo2,libcanberra0,libdatrie1,libdbus-1-3,libdbus-glib-1-2,libexpat1,libffi6,libfontconfig1,libfreetype6,libgail18,libgconf-2-4,libgcrypt20,libgdk-pixbuf2.0-0,libglib2.0-0,libglib2.0-0-dbg,libglib2.0-0-refdbg,libgmp10,libgnome-2-0,libgnomecanvas2-0,libgnome-keyring0,libgnomeui-0,libgnomevfs2-0,libgnutls30,libgpg-error0,libgraphite2-3,libgtk2.0-0,libharfbuzz0b,libhogweed4,libice6,libidn11,libltdl7,liblzma5,libnettle6,libnm-glib-vpn1,libnm-util2,libogg0,liborbit-2-0,libp11-kit0,libpango-1.0-0,libpangocairo-1.0-0,libpangoft2-1.0-0,libpcre3,libpixman-1-0,libpng12-0,libpopt0,libselinux1,libsm6,libsystemd0,libtasn1-6,libtdb1,libthai0,libuuid1,libvorbis0a,libvorbisfile3,libx11-6,libxau6,libxcb1,libxcb-render0,libxcb-shm0,libxcomposite1,libxcursor1,libxdamage1,libxdmcp6,libxext6,libxfixes3,libxi6,libxinerama1,libxml2,libxrandr2,libxrender1,zlib1g
+Filename: dists/xenial/stable/binary-amd64/network-manager-strongswan_1.3.1-14_amd64.deb
+Size: 34642
+MD5sum: 6f4482cb417e4c884a6715f315695937
+SHA1: 07dc0377c365f6ccb67d8e135ab32f27b5b5774d
+SHA256: e526bc8c6c8b29dc28e5783ad076119d3be0e804779b3ca3a68959b7ac23f163
+SHA512: 6e2eb65023301dcaf1813a3c5686a82bdb61bdd3597e1976e067e06a0b0eee96e6d2a2d8b890bf37b8120eb9ff671a5ac4ee49de83feb3199afeab2893b8dec6
+Description: This package provides an IKEv2 IPSec VPN plugin for strongswan
+Description-md5: 31abf1e375284c7ee36f25bf936125f1
diff --git a/test/integration/Packages-hashsum-verification b/test/integration/Packages-hashsum-verification
new file mode 100644
index 000000000..29a385f4f
--- /dev/null
+++ b/test/integration/Packages-hashsum-verification
@@ -0,0 +1,18 @@
+Package: apt
+Version: 0.7.25.3
+Architecture: i386
+Maintainer: APT Development Team <deity@lists.debian.org>
+Installed-Size: 5244
+Replaces: libapt-pkg-dev (<< 0.3.7), libapt-pkg-doc (<< 0.3.7)
+Provides: libapt-pkg-libc6.9-6-4.8
+Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt
+Filename: apt.deb
+Size: 0
+MD5sum: d41d8cd98f00b204e9800998ecf8427e
+Description: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+ .
+ APT features complete installation ordering, multiple source capability
+ and several other unique features, see the Users Guide in apt-doc.
diff --git a/test/integration/Packages-pdiff-usage b/test/integration/Packages-pdiff-usage
new file mode 100644
index 000000000..ac962f29a
--- /dev/null
+++ b/test/integration/Packages-pdiff-usage
@@ -0,0 +1,36 @@
+Package: apt
+Version: 0.7.25.3
+Architecture: i386
+Maintainer: APT Development Team <deity@lists.debian.org>
+Installed-Size: 5244
+Replaces: libapt-pkg-dev (<< 0.3.7), libapt-pkg-doc (<< 0.3.7)
+Provides: libapt-pkg-libc6.9-6-4.8
+Depends: libc6 (>= 2.3.4), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.4.0), debian-archive-keyring
+Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt
+Filename: pool/main/a/apt/apt_0.7.25.3_i386.deb
+Size: 1750610
+MD5sum: 311aadc67d1b72428b54c9b4e1f76671
+SHA1: 3c695e028f74d5c55226f9ef30000bbbd881088c
+SHA256: b46fd1546151c545fe4bfa56a5cc0e7811a9f68826326a529777fd660f28f050
+Description: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+ .
+ APT features complete installation ordering, multiple source capability
+ and several other unique features, see the Users Guide in apt-doc.
+Description-md5: d41ee493aa9fcc6cbc9ce4eb7069959c
+
+Package: oldstuff
+Version: 1.0
+Architecture: i386
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 100
+Filename: pool/oldstuff_1.0_i386.deb
+Size: 100000
+MD5sum: 311aeeadf78324aaff54c9b4e1f76671
+SHA1: 3c695e028f74d5c544deeddaaa1242desa81088c
+SHA256: b46fd1546151c545fe4bfa56a5cc0e7deaef23e2da3e4f129727fd660f28f050
+Description: some cool but old stuff
+ This package will disappear in the next mirror update
+Description-md5: 1948af60eda0a41dfa9fe83f60eb8389
diff --git a/test/integration/Packages-pdiff-usage-new b/test/integration/Packages-pdiff-usage-new
new file mode 100644
index 000000000..f8d7b1958
--- /dev/null
+++ b/test/integration/Packages-pdiff-usage-new
@@ -0,0 +1,39 @@
+Package: apt
+Priority: important
+Section: admin
+Installed-Size: 5672
+Maintainer: APT Development Team <deity@lists.debian.org>
+Architecture: i386
+Version: 0.8.0~pre1
+Replaces: manpages-pl (<< 20060617-3~)
+Provides: libapt-pkg4.10
+Depends: libc6 (>= 2.3.4), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.4.0), zlib1g (>= 1:1.1.4), debian-archive-keyring, gnupg
+Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt
+Conflicts: python-apt (<< 0.7.93.2~)
+Filename: pool/main/a/apt/apt_0.8.0~pre1_i386.deb
+Size: 2013046
+MD5sum: 6786ca6270c988f2c201716ededaedec
+SHA1: fe26559e745d4c2c977c27170938852041c9adff
+SHA256: a12f968467e1e3cec24191b72bfe84f7aeed3ce422e1a60bb4f1454f2b89b8ee
+Description: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+ .
+ APT features complete installation ordering, multiple source capability
+ and several other unique features, see the Users Guide in apt-doc.
+Description-md5: d41ee493aa9fcc6cbc9ce4eb7069959c
+
+Package: newstuff
+Version: 1.0
+Architecture: i386
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 101
+Filename: pool/newstuff_1.0_i386.deb
+Size: 101100
+MD5sum: 311aeeadf78324aaff1ceaf3e1f76671
+SHA1: 3c695e028f7a1ae324deeddaaa1242desa81088c
+SHA256: b46fd154615edefab321cc56a5cc0e7deaef23e2da3e4f129727fd660f28f050
+Description: some cool and shiny new stuff
+ This package will appear in the next mirror update
+Description-md5: d5f89fbbc2ac69c43d7e4c9b67d82b6b
diff --git a/test/integration/Packages-policy-pinning b/test/integration/Packages-policy-pinning
new file mode 100644
index 000000000..a9334e9dd
--- /dev/null
+++ b/test/integration/Packages-policy-pinning
@@ -0,0 +1,12 @@
+Package: oldstuff
+Version: 1.0
+Architecture: i386
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 100
+Filename: pool/oldstuff_1.0_i386.deb
+Size: 100000
+MD5sum: 311aeeadf78324aaff54c9b4e1f76671
+SHA1: 3c695e028f74d5c544deeddaaa1242desa81088c
+SHA256: b46fd1546151c545fe4bfa56a5cc0e7deaef23e2da3e4f129727fd660f28f050
+Description: some old but cool stuff
+ This package will disappear in the next mirror update
diff --git a/test/integration/Packages-releasefile-verification b/test/integration/Packages-releasefile-verification
new file mode 100644
index 000000000..1e5c47096
--- /dev/null
+++ b/test/integration/Packages-releasefile-verification
@@ -0,0 +1,20 @@
+Package: apt
+Version: 0.7.25.3
+Architecture: i386
+Maintainer: APT Development Team <deity@lists.debian.org>
+Installed-Size: 5244
+Replaces: libapt-pkg-dev (<< 0.3.7), libapt-pkg-doc (<< 0.3.7)
+Provides: libapt-pkg-libc6.9-6-4.8
+Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt
+Filename: apt.deb
+Size: 0
+MD5sum: d41d8cd98f00b204e9800998ecf8427e
+SHA256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
+Description: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+ .
+ APT features complete installation ordering, multiple source capability
+ and several other unique features, see the Users Guide in apt-doc.
+Description-md5: d41ee493aa9fcc6cbc9ce4eb7069959c
diff --git a/test/integration/Packages-releasefile-verification-new b/test/integration/Packages-releasefile-verification-new
new file mode 100644
index 000000000..7f03829d6
--- /dev/null
+++ b/test/integration/Packages-releasefile-verification-new
@@ -0,0 +1,23 @@
+Package: apt
+Priority: important
+Section: admin
+Installed-Size: 5672
+Maintainer: APT Development Team <deity@lists.debian.org>
+Architecture: i386
+Version: 0.8.0~pre1
+Replaces: manpages-pl (<< 20060617-3~)
+Provides: libapt-pkg4.10
+Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt
+Conflicts: python-apt (<< 0.7.93.2~)
+Filename: apt.deb
+Size: 0
+MD5sum: d41d8cd98f00b204e9800998ecf8427e
+SHA256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
+Description: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+ .
+ APT features complete installation ordering, multiple source capability
+ and several other unique features, see the Users Guide in apt-doc.
+Description-md5: d41ee493aa9fcc6cbc9ce4eb7069959c
diff --git a/test/integration/Packages-ubuntu-bug-614993 b/test/integration/Packages-ubuntu-bug-614993
new file mode 100644
index 000000000..f1d4593e0
--- /dev/null
+++ b/test/integration/Packages-ubuntu-bug-614993
@@ -0,0 +1,1819 @@
+Package: libx11-xcb1
+Priority: optional
+Section: libs
+Installed-Size: 184
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: libx11
+Version: 2:1.3.3-3ubuntu1
+Depends: libc6 (>= 2.2.5), libx11-6
+Conflicts: libx11-6 (<< 2:1.1)
+Filename: pool/main/libx/libx11/libx11-xcb1_1.3.3-3ubuntu1_amd64.deb
+Size: 90286
+MD5sum: 56c300a1110d9b08ab7760e375724034
+SHA1: 81fd3a089e0141236ac4dd49e98f58d7b6db3af3
+SHA256: 97a7b225bbccc6a64e2264e7ca53bb585e12982e037d26f1b22fae2c79127dc0
+Description: Xlib/XCB interface library
+ libX11-xcb provides functions needed by clients which take advantage of
+ Xlib/XCB to mix calls to both Xlib and XCB over the same X connection.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ More information about XCB can be found at:
+ <URL:http://xcb.freedesktop.org>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libX11
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: libxcb-aux0
+Priority: extra
+Section: libdevel
+Installed-Size: 68
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Julien Danjou <acid@debian.org>
+Architecture: amd64
+Source: xcb-util
+Version: 0.3.6-1build1
+Depends: libc6 (>= 2.2.5), libxcb1 (>= 0)
+Filename: pool/main/x/xcb-util/libxcb-aux0_0.3.6-1build1_amd64.deb
+Size: 8962
+MD5sum: a35d570e9231a01ff6de0ec872638787
+SHA1: c551ed6a9b1b6c1d201537b85f4003926aa2833d
+SHA256: 047ee120e83adbed4c57ff175e59ca02a772e7d4a5d1d014ff72d6f0da41e9ca
+Description: utility libraries for X C Binding -- aux
+ This package contains the library files needed to run software using
+ libxcb-aux, providing convenient access to connection setup and some
+ core requests.
+ .
+ The xcb-util module provides a number of libraries which sit on top of
+ libxcb, the core X protocol library, and some of the extension
+ libraries. These experimental libraries provide convenience functions
+ and interfaces which make the raw X protocol more usable. Some of the
+ libraries also provide client-side code which is not strictly part of
+ the X protocol but which have traditionally been provided by Xlib.
+Homepage: http://xcb.freedesktop.org
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, mythbuntu-frontend, ubuntu-netbook
+
+Package: libxcb-dri2-0
+Priority: optional
+Section: libs
+Installed-Size: 68
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: XCB Developers <xcb@lists.freedesktop.org>
+Architecture: amd64
+Source: libxcb
+Version: 1.6-1
+Depends: libc6 (>= 2.2.5), libxcb1 (>= 0)
+Filename: pool/main/libx/libxcb/libxcb-dri2-0_1.6-1_amd64.deb
+Size: 10130
+MD5sum: 13f3278d872f700c5e2363cab9feb5db
+SHA1: cc51153c443558292604acb98043517075332263
+SHA256: 2fe00f4216eb408b0e70ffd7681b81fc750a242661790c636998dfe5738be05d
+Description: X C Binding, dri2 extension
+ This package contains the library files needed to run software using
+ libxcb-dri2, the dri2 extension for the X C Binding.
+ .
+ The XCB library provides an interface to the X Window System protocol,
+ designed to replace the Xlib interface. XCB provides several advantages over
+ Xlib:
+ .
+ * Size: small library and lower memory footprint
+ * Latency hiding: batch several requests and wait for the replies later
+ * Direct protocol access: one-to-one mapping between interface and protocol
+ * Thread support: access XCB from multiple threads, with no explicit locking
+ * Easy creation of new extensions: automatically generates interface from
+ machine-parsable protocol descriptions
+Homepage: http://xcb.freedesktop.org
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+
+Package: libmtdev1
+Priority: optional
+Section: libs
+Installed-Size: 72
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: mtdev
+Version: 1.0.9-0ubuntu1
+Depends: libc6 (>= 2.4)
+Filename: pool/main/m/mtdev/libmtdev1_1.0.9-0ubuntu1_amd64.deb
+Size: 10980
+MD5sum: 694e8cee8d0d21591fa308ddd1b1e41f
+SHA1: 7ea377dec6755a3e659c116a989145609fc7e9a9
+SHA256: 88075b13ad116e38d33c84e63fa5e6195c84df16f4741c4054520618d7f17797
+Description: Multitouch Protocol Translation Library - shared library
+ libmtdev is a library for translating evdev multitouch events using the legacy
+ protocol to the new multitouch slots protocol. This is necessary for kernel
+ drivers that have not been updated to use the newer protocol.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: libutouch-grail1
+Priority: optional
+Section: libs
+Installed-Size: 84
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: utouch-grail
+Version: 1.0.11-0ubuntu1
+Depends: libc6 (>= 2.4), libmtdev1 (>= 1.0.8)
+Breaks: libutouch-geis1 (<= 1.0.8), xserver-xorg-input-gevdev (<= 1:2.3.2-6ubuntu1)
+Filename: pool/main/u/utouch-grail/libutouch-grail1_1.0.11-0ubuntu1_amd64.deb
+Size: 15360
+MD5sum: 210ad74aa06bf676d9ab0200fc2a1d19
+SHA1: 734014bca516535b85b3e3eb5f76734d1dca066a
+SHA256: 0905710584348b58ee88f520c874d4d5198b6be38daff8a761ad263b0c350a6a
+Description: Gesture Recognition And Instantiation Library
+ This library consists of an interface and tools for handling gesture
+ recognition and gesture instantiation. Applications can use the grail
+ callbacks to receive gesture primitives and raw input events from the
+ underlying kernel device.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: libdrm-intel1
+Priority: required
+Section: libs
+Installed-Size: 116
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: libdrm
+Version: 2.4.21-1ubuntu2
+Depends: libc6 (>= 2.3.4), libdrm2 (>= 2.4.1)
+Filename: pool/main/libd/libdrm/libdrm-intel1_2.4.21-1ubuntu2_amd64.deb
+Size: 33178
+MD5sum: 2d647434700294708fcaa815bc75ca07
+SHA1: f808f92ca2c86d07e654f92cffe6a806bef53c64
+SHA256: 069eb06161ca6e17d29a8cc67c7eac21c6f935292d4f208e802d595da521566b
+Description: Userspace interface to intel-specific kernel DRM services -- runtime
+ This library implements the userspace interface to the intel-specific kernel
+ DRM services. DRM stands for "Direct Rendering Manager", which is the
+ kernelspace portion of the "Direct Rendering Infrastructure" (DRI). The DRI is
+ currently used on Linux to provide hardware-accelerated OpenGL drivers.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: minimal
+
+Package: libdrm-nouveau1
+Priority: required
+Section: libs
+Installed-Size: 96
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: libdrm
+Version: 2.4.21-1ubuntu2
+Depends: libc6 (>= 2.3.4), libdrm2 (>= 2.4.3)
+Breaks: xserver-xorg-video-nouveau (<< 1:0.0.16)
+Filename: pool/main/libd/libdrm/libdrm-nouveau1_2.4.21-1ubuntu2_amd64.deb
+Size: 22290
+MD5sum: dd13107a609c4ef288aef8e0cf7c6bbe
+SHA1: 3c17fcf1421f2585f3b6385eb434f8caa2ee56b8
+SHA256: f02f625b172a871e2c93a01234cb608e2c21ba21a6f76d48fff0dc743156d3a5
+Description: Userspace interface to nouveau-specific kernel DRM services -- runtime
+ This library implements the userspace interface to the nouveau-specific kernel
+ DRM services. DRM stands for "Direct Rendering Manager", which is the
+ kernelspace portion of the "Direct Rendering Infrastructure" (DRI). The DRI is
+ currently used on Linux to provide hardware-accelerated OpenGL drivers.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: minimal
+
+Package: libdrm-radeon1
+Priority: required
+Section: libs
+Installed-Size: 96
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: libdrm
+Version: 2.4.21-1ubuntu2
+Depends: libc6 (>= 2.3.4), libdrm2 (>= 2.4.3)
+Filename: pool/main/libd/libdrm/libdrm-radeon1_2.4.21-1ubuntu2_amd64.deb
+Size: 23196
+MD5sum: 7d8c85369e9d9deaaff960715fb8cb5d
+SHA1: b39304c4f1cce9c00b2c4e01845cc03760d97ca5
+SHA256: c282a95b5ee4361c3e1fd49cfe5f862ada91a9caa9c338b634aab2b792707800
+Description: Userspace interface to radeon-specific kernel DRM services -- runtime
+ This library implements the userspace interface to the radeon-specific kernel
+ DRM services. DRM stands for "Direct Rendering Manager", which is the
+ kernelspace portion of the "Direct Rendering Infrastructure" (DRI). The DRI is
+ currently used on Linux to provide hardware-accelerated OpenGL drivers.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: minimal
+
+Package: libdrm2
+Priority: required
+Section: libs
+Installed-Size: 120
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: libdrm
+Version: 2.4.21-1ubuntu2
+Depends: libc6 (>= 2.7)
+Filename: pool/main/libd/libdrm/libdrm2_2.4.21-1ubuntu2_amd64.deb
+Size: 32386
+MD5sum: a66179dec8fa282a72d323cb85386a0c
+SHA1: b06c48d149ad466c4e0c1f316573d8faa2924210
+SHA256: af7beb6b31b54371fdc6ec3c624199b323ac80d5043e4c5931ba1bf740462b10
+Description: Userspace interface to kernel DRM services -- runtime
+ This library implements the userspace interface to the kernel DRM
+ services. DRM stands for "Direct Rendering Manager", which is the
+ kernelspace portion of the "Direct Rendering Infrastructure" (DRI).
+ The DRI is currently used on Linux to provide hardware-accelerated
+ OpenGL drivers.
+ .
+ This package provides the runtime environment for libdrm.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: minimal
+
+Package: libxfont1
+Priority: optional
+Section: libs
+Installed-Size: 332
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: libxfont
+Version: 1:1.4.2-1
+Depends: libbz2-1.0, libc6 (>= 2.4), libfontenc1, libfreetype6 (>= 2.2.1), zlib1g (>= 1:1.1.4)
+Conflicts: xprint (<< 2:1.6.0-1)
+Filename: pool/main/libx/libxfont/libxfont1_1.4.2-1_amd64.deb
+Size: 156844
+MD5sum: 4ad60ad1f3096f03eabcf30dedb2c2ce
+SHA1: 2a1e83c35583fe2f8351783a160326b48c4559b3
+SHA256: 97c121164fdef2e6f7332c27422fc07d2d7b3f137415b3ec3a6083e471f3290e
+Description: X11 font rasterisation library
+ libXfont provides various services for X servers, most notably font
+ selection and rasterisation (through external libraries).
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXfont
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, eucalyptus-cloud, eucalyptus-storage, print-server, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-common
+Priority: optional
+Section: x11
+Installed-Size: 176
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: all
+Source: xorg-server
+Version: 2:1.9.0-0ubuntu2
+Replaces: xserver-xorg-core (<< 2:1.5.2)
+Depends: x11-common, xkb-data, x11-xkb-utils
+Recommends: xfonts-base, xauth
+Filename: pool/main/x/xorg-server/xserver-common_1.9.0-0ubuntu2_all.deb
+Size: 86390
+MD5sum: 278a92c5c0b5dc2189ab7b7493b69add
+SHA1: 46734bd7889084fe8a296ac50ed6c81bbdcb322a
+SHA256: f2757c722684626f21b638fe8de2347c3a4ce5e686af5d6ab38a8e12755762b1
+Description: common files used by various X servers
+ This package provides files necessary for all X.Org based X servers.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xephyr
+Priority: optional
+Section: x11
+Installed-Size: 2164
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xorg-server
+Version: 2:1.9.0-0ubuntu2
+Depends: xserver-common (>= 2:1.9.0-0ubuntu2), libc6 (>= 2.4), libdrm2 (>= 2.3.1), libgcrypt11 (>= 1.4.2), libgl1-mesa-glx | libgl1, libpixman-1-0 (>= 0.15.16), libx11-6, libxau6, libxdmcp6, libxext6, libxfont1 (>= 1:1.4.2), libxv1
+Recommends: libgl1-mesa-dri (>= 7.1~rc1)
+Filename: pool/main/x/xorg-server/xserver-xephyr_1.9.0-0ubuntu2_amd64.deb
+Size: 1005784
+MD5sum: 93f42d8e5a4ccaac790908d9490aff49
+SHA1: 8c657f7ed9a5fea1bc72c341d690f89f7b2be852
+SHA256: 6ab0c82b3082bf3acfc9b54f63dbb472c55ca69b1dab06fc27e34ffd145c3881
+Description: nested X server
+ Xephyr is an X server that can be run inside another X server,
+ much like Xnest. It is based on the kdrive X server, and as a
+ result it supports newer extensions than Xnest, including render and
+ composite.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xserver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: edubuntu-desktop-gnome
+
+Package: xserver-xorg
+Priority: optional
+Section: x11
+Installed-Size: 180
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xorg
+Version: 1:7.5+6ubuntu3
+Replaces: x11-common (<< 1:7.3+11), xserver-common (<< 7)
+Depends: xserver-xorg-core (>= 2:1.8.99.905), xserver-xorg-video-all | xserver-xorg-video-8, xserver-xorg-input-all | xserver-xorg-input-11, xserver-xorg-input-evdev, libc6 (>= 2.7), xkb-data (>= 1.4), x11-xkb-utils, console-setup
+Recommends: libgl1-mesa-dri
+Conflicts: x11-common (<< 1:7.3+11), xserver-common (<< 7), xserver-xfree86 (<< 6.8.2.dfsg.1-1)
+Filename: pool/main/x/xorg/xserver-xorg_7.5+6ubuntu3_amd64.deb
+Size: 20560
+MD5sum: 5f4f0c969d2758cee7ce5244917df903
+SHA1: 58290e5672b6e3223dc63db33b3196d3eaa44df6
+SHA256: 35b04c220fe1b76f52fca42bb97abeed2c9e8554ff280e42f7c4ad3017985632
+Description: the X.Org X server
+ This package depends on the full suite of the server and drivers for the
+ X.Org X server. It does not provide the actual server itself.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-core
+Priority: optional
+Section: x11
+Installed-Size: 4108
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xorg-server
+Version: 2:1.9.0-0ubuntu2
+Provides: xorg-input-abi-11.0, xorg-video-abi-8.0, xserver
+Depends: xserver-common (>= 2:1.9.0-0ubuntu2), xserver-xorg, udev (>= 149), libc6 (>= 2.7), libdrm2 (>= 2.3.1), libgcrypt11 (>= 1.4.2), libpciaccess0 (>= 0.10.7), libpixman-1-0 (>= 0.15.16), libudev0 (>= 147), libxau6, libxdmcp6, libxfont1 (>= 1:1.4.2)
+Recommends: libgl1-mesa-dri (>= 7.1~rc1)
+Suggests: xfonts-100dpi | xfonts-75dpi, xfonts-scalable
+Breaks: xserver-xorg-input, xserver-xorg-input-2, xserver-xorg-input-2.1, xserver-xorg-input-4, xserver-xorg-input-7, xserver-xorg-input-joystick (<= 1:1.5.0-3), xserver-xorg-input-synaptics (<= 1.2.2-1ubuntu4), xserver-xorg-input-tslib (<= 0.0.6-3), xserver-xorg-input-vmmouse (<= 1:12.6.5-4ubuntu2), xserver-xorg-input-wacom (<< 0.7.8), xserver-xorg-video, xserver-xorg-video-1.0, xserver-xorg-video-1.9, xserver-xorg-video-2, xserver-xorg-video-4, xserver-xorg-video-5, xserver-xorg-video-6
+Filename: pool/main/x/xorg-server/xserver-xorg-core_1.9.0-0ubuntu2_amd64.deb
+Size: 1722082
+MD5sum: 22b1e5dcaa5a40520eb1c76996acde89
+SHA1: 26d0082a04d7c30791a8535643c08bd66cc71085
+SHA256: 073eacfdf298a76287cf9676212ac94eda9a2f7c9c1b62fc9ced3e110c06e88d
+Description: Xorg X server - core server
+ The Xorg X server is an X server for several architectures and operating
+ systems, which is derived from the XFree86 4.x series of X servers.
+ .
+ The Xorg server supports most modern graphics hardware from most vendors,
+ and supersedes all XFree86 X servers.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xserver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-core-dbg
+Priority: extra
+Section: x11
+Installed-Size: 17404
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xorg-server
+Version: 2:1.9.0-0ubuntu2
+Depends: xserver-xorg-core (= 2:1.9.0-0ubuntu2)
+Filename: pool/main/x/xorg-server/xserver-xorg-core-dbg_1.9.0-0ubuntu2_amd64.deb
+Size: 6305640
+MD5sum: fe080ab7fa64b8dc8446b6fe82af196d
+SHA1: ae450cf592342969903a42792d07914d2717f8dd
+SHA256: fd4007f1de919f1ed8f9e8bfe0235bdbbe14e3ba78bf3cd010f43d1c64a83d50
+Description: Xorg - the X.Org X server (debugging symbols)
+ The Xorg X server is an X server for several architectures and operating
+ systems, which is derived from the XFree86 4.x series of X servers.
+ .
+ The Xorg server supports most modern graphics hardware from most vendors,
+ and supersedes all XFree86 X servers.
+ .
+ This package provides debugging symbols for the Xorg X server and associated
+ modules.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-dev
+Priority: optional
+Section: x11
+Installed-Size: 1632
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xorg-server
+Version: 2:1.9.0-0ubuntu2
+Depends: libpixman-1-dev (>= 0.15.20), x11proto-core-dev (>= 7.0.17), x11proto-input-dev (>= 1.9.99.902), x11proto-xext-dev (>= 7.0.99.3), x11proto-video-dev, x11proto-randr-dev (>= 1.2.99.3), x11proto-render-dev (>= 2:0.11), x11proto-dri2-dev (>= 2.3), x11proto-fonts-dev, x11proto-xinerama-dev, x11proto-kb-dev, libxkbfile-dev, libpciaccess-dev
+Filename: pool/main/x/xorg-server/xserver-xorg-dev_1.9.0-0ubuntu2_amd64.deb
+Size: 315992
+MD5sum: 622dad3611cef47cad83b4a3c82c0a78
+SHA1: 35237aa66771f253e22ab46ed711d7feafc3e284
+SHA256: 94114cc3aa3e9601db43d92df263715c3141922ef04ce1886a56a8842765d5f2
+Description: Xorg X server - development files
+ This package provides development files for the X.Org ('Xorg') X server.
+ This is not quite the same as the DDK (Driver Development Kit) from the
+ XFree86 4.x and X.Org 6.7, 6.8 and 6.9 series of servers; it provides
+ headers and a pkg-config file for drivers using autotools to build
+ against.
+ .
+ Unless you are developing or building a driver, you probably want
+ xserver-xorg and/or xserver-xorg-core instead.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xserver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-input-all
+Priority: optional
+Section: x11
+Installed-Size: 24
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xorg
+Version: 1:7.5+6ubuntu3
+Depends: xserver-xorg-input-evdev, xserver-xorg-input-synaptics, xserver-xorg-input-vmmouse, xserver-xorg-input-wacom, x11-common
+Filename: pool/main/x/xorg/xserver-xorg-input-all_7.5+6ubuntu3_amd64.deb
+Size: 1014
+MD5sum: 33d323837d8dd94ec2e63b4944316c83
+SHA1: 27b0484d0282b728bd9905115da55548c2884008
+SHA256: 61338a072689a5c1565a1968811c87e370e37facb12f4055b64f8b65e35f48ea
+Description: the X.Org X server -- input driver metapackage
+ This package depends on the full suite of input drivers for the X.Org X server
+ (Xorg). It does not provide any drivers itself, and may be removed if you wish
+ to only have certain drivers installed.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-input-evdev
+Priority: optional
+Section: x11
+Installed-Size: 168
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:2.3.2-6ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-input-gevdev
+Provides: xserver-xorg-input-11
+Depends: libc6 (>= 2.7), libutouch-grail1 (>= 1.0.10), xorg-input-abi-11.0, xserver-xorg-core (>= 2:1.8.99.905-1ubuntu3)
+Conflicts: xserver-xorg-input-gevdev
+Filename: pool/main/x/xserver-xorg-input-evdev/xserver-xorg-input-evdev_2.3.2-6ubuntu1_amd64.deb
+Size: 77602
+MD5sum: aa833ccaa08510e2cf02182157f49be4
+SHA1: 1b35f21aab75e0063a36bca95ecd36e4ca7cd6ef
+SHA256: 8d600abfff74e13126c3b61530e782aa9ab88a8aeb0a1eeb42e6ebe2aafe314e
+Description: X.Org X server -- evdev input driver
+ This package provides the driver for input devices using evdev, the Linux
+ kernel's event delivery mechanism. This driver allows for multiple keyboards
+ and mice to be treated as separate input devices.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-input-evdev driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-input-evdev-dev
+Priority: optional
+Section: libdevel
+Installed-Size: 64
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: all
+Source: xserver-xorg-input-evdev
+Version: 1:2.3.2-6ubuntu1
+Filename: pool/main/x/xserver-xorg-input-evdev/xserver-xorg-input-evdev-dev_2.3.2-6ubuntu1_all.deb
+Size: 8784
+MD5sum: fa1d8161aa475e16423413110209e183
+SHA1: 6781c1afc65ab072ff3dba19b691dcb2d2d49716
+SHA256: a5f5ec31050ba190900d71527717aff06270fd9b6ee93352df745231fc95147c
+Description: X.Org X server -- evdev input driver (development headers)
+ This package provides the development headers for the evdev input driver
+ found in xserver-xorg-input-evdev. Non-developers likely have little use
+ for this package.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-input-evdev driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-input-mouse
+Priority: optional
+Section: x11
+Installed-Size: 160
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.5.0-2build1
+Replaces: xserver-xorg (<< 6.8.2-35)
+Provides: xorg-driver-input, xserver-xorg-input-11
+Depends: libc6 (>= 2.7), xorg-input-abi-11.0, xserver-xorg-core (>= 2:1.8.99.904)
+Filename: pool/main/x/xserver-xorg-input-mouse/xserver-xorg-input-mouse_1.5.0-2build1_amd64.deb
+Size: 56550
+MD5sum: 3a94050557202448e164dc6aa2baa16d
+SHA1: 418432ceb03b803619743c0e90b8afd2c050d595
+SHA256: dec2aef614e6481ac91237e6ad43ef4101ab8d0c12af0281419cece33a1fab40
+Description: X.Org X server -- mouse input driver
+ This package provides the driver for mouse input devices.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-input-mouse driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-input-synaptics
+Priority: optional
+Section: x11
+Installed-Size: 360
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1.2.2-2ubuntu3
+Replaces: xfree86-driver-synaptics (<< 0.14.4-2), xorg-driver-synaptics
+Provides: xfree86-driver-synaptics, xorg-driver-synaptics, xserver-xorg-input-11
+Depends: udev, libc6 (>= 2.4), libpciaccess0, libpixman-1-0, libx11-6, libxi6 (>= 2:1.2.0), xorg-input-abi-11.0, xserver-xorg-core (>= 2:1.8.99.904)
+Suggests: gpointing-device-settings, touchfreeze
+Conflicts: xfree86-driver-synaptics (<< 0.14.4-2), xorg-driver-synaptics
+Filename: pool/main/x/xserver-xorg-input-synaptics/xserver-xorg-input-synaptics_1.2.2-2ubuntu3_amd64.deb
+Size: 157472
+MD5sum: 208387c243ca97b983263f9ad1f997e4
+SHA1: 7c48f093dd3173afac8b7a44729828aad970173c
+SHA256: 9dbf323b790342bb5f3642104003acba7c2ce84279fcebfcafe9802cb872dd21
+Description: Synaptics TouchPad driver for X.Org server
+ This package provides an input driver for the X.Org X server to enable
+ advanced features of the Synaptics Touchpad including:
+ .
+ * Movement with adjustable, non-linear acceleration and speed
+ * Button events through short touching of the touchpad
+ * Double-Button events through double short touching of the touchpad
+ * Dragging through short touching and holding down the finger on the touchpad
+ * Middle and right button events on the upper and lower corner of the touchpad
+ * Vertical scrolling (button four and five events) through moving the finger
+ on the right side of the touchpad
+ * The up/down button sends button four/five events
+ * Horizontal scrolling (button six and seven events) through moving the finger
+ on the lower side of the touchpad
+ * The multi-buttons send button four/five events, and six/seven events for
+ horizontal scrolling
+ * Adjustable finger detection
+ * Multifinger taps: two finger for middle button and three finger for right
+ button events. (Needs hardware support. Not all models implement this
+ feature.)
+ * Run-time configuration using shared memory. This means you can change
+ parameter settings without restarting the X server (see synclient(1)).
+ * It also provides a daemon to disable touchpad while typing at the keyboard
+ and thus avoid unwanted mouse movements (see syndaemon(1)).
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-input-synaptics-dev
+Priority: optional
+Section: libdevel
+Installed-Size: 76
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: all
+Source: xserver-xorg-input-synaptics
+Version: 1.2.2-2ubuntu3
+Depends: x11proto-core-dev
+Filename: pool/main/x/xserver-xorg-input-synaptics/xserver-xorg-input-synaptics-dev_1.2.2-2ubuntu3_all.deb
+Size: 16926
+MD5sum: 96c22d1c68e9037ee97b336edc572869
+SHA1: 8d921f825eaf88f55ca82dcb8271e71c0a3c36da
+SHA256: 62879769c7ea06cc3cc4952a3c80175ffd45a0883c661251ef869b4318132e16
+Description: Synaptics TouchPad driver for X.Org server (development headers)
+ This package contains the development headers for the Synaptics input
+ driver found in xserver-xorg-input-synaptics. Non-developers likely have
+ little use for this package.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-input-vmmouse
+Priority: optional
+Section: x11
+Installed-Size: 172
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:12.6.9-2build1
+Replaces: xserver-xorg (<< 6.8.2-35)
+Provides: xserver-xorg-input-11
+Depends: libc6 (>= 2.7), xorg-input-abi-11.0, xserver-xorg-core (>= 2:1.8.99.904), xserver-xorg-input-mouse, udev
+Filename: pool/main/x/xserver-xorg-input-vmmouse/xserver-xorg-input-vmmouse_12.6.9-2build1_amd64.deb
+Size: 31278
+MD5sum: 3a096dec7240837fec1bcdeece0d3523
+SHA1: 3c881221ccc56d3958d91da676f2ed177a4c31f6
+SHA256: 875498c91b8c3333a3277de41feba8ab9294912604d35aad3b35c3077ed18b5c
+Description: X.Org X server -- VMMouse input driver to use with VMWare
+ This package provides the driver for the X11 vmmouse input device.
+ .
+ The VMMouse driver enables support for the special VMMouse protocol
+ that is provided by VMware virtual machines to give absolute pointer
+ positioning.
+ .
+ The vmmouse driver is capable of falling back to the standard "mouse"
+ driver if a VMware virtual machine is not detected. This allows for
+ dual-booting of an operating system from a virtual machine to real hardware
+ without having to edit xorg.conf every time.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-input-vmmouse driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-input-wacom
+Priority: optional
+Section: x11
+Installed-Size: 308
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Ron Lee <ron@debian.org>
+Architecture: amd64
+Source: xf86-input-wacom
+Version: 1:0.10.8-0ubuntu1
+Replaces: wacom-tools (<< 0.10.0)
+Provides: xorg-driver-input, xserver-xorg-input-11
+Depends: xorg-input-abi-11.0, xserver-xorg-core (>= 2:1.8.99.904), libc6 (>= 2.7), libx11-6, libxi6 (>= 2:1.2.0)
+Suggests: xinput
+Conflicts: wacom-tools (<< 0.10.0)
+Filename: pool/main/x/xf86-input-wacom/xserver-xorg-input-wacom_0.10.8-0ubuntu1_amd64.deb
+Size: 85548
+MD5sum: ac0e00807ae94d5f2f7d23be578abb12
+SHA1: 1c6e1c7c12363517dc956bff94fd3137ccdc9c8f
+SHA256: 185bdca5588688037e8f9303dc3011db4b459c15bd57e14610414a7b6cc31178
+Description: X.Org X server -- Wacom input driver
+ This package provides the X.Org driver for Wacom tablet devices.
+Homepage: http://linuxwacom.sf.net
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-all
+Priority: optional
+Section: x11
+Installed-Size: 24
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xorg
+Version: 1:7.5+6ubuntu3
+Replaces: xserver-xorg-driver-all
+Depends: xserver-xorg-video-apm, xserver-xorg-video-ark, xserver-xorg-video-ati, xserver-xorg-video-chips, xserver-xorg-video-cirrus, xserver-xorg-video-fbdev, xserver-xorg-video-i128, xserver-xorg-video-intel, xserver-xorg-video-mga, xserver-xorg-video-neomagic, xserver-xorg-video-nouveau, xserver-xorg-video-nv, xserver-xorg-video-rendition, xserver-xorg-video-s3, xserver-xorg-video-s3virge, xserver-xorg-video-savage, xserver-xorg-video-siliconmotion, xserver-xorg-video-sis, xserver-xorg-video-sisusb, xserver-xorg-video-tdfx, xserver-xorg-video-trident, xserver-xorg-video-tseng, xserver-xorg-video-vesa, xserver-xorg-video-openchrome, xserver-xorg-video-voodoo, xserver-xorg-video-vmware, x11-common
+Conflicts: xserver-xorg-driver-all
+Filename: pool/main/x/xorg/xserver-xorg-video-all_7.5+6ubuntu3_amd64.deb
+Size: 1146
+MD5sum: f7bc46f83b91857efd62086ccce6e137
+SHA1: 19b30dfd8e98e0dd16921f3715ecc2c4bfef15c0
+SHA256: b70a091c6960244112c79f6ddf7ada8715b316da2b3df7931df86d3234893b08
+Description: the X.Org X server -- output driver metapackage
+ This package depends on the full suite of output drivers for the X.Org X server
+ (Xorg). It does not provide any drivers itself, and may be removed if you wish
+ to only have certain drivers installed.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-apm
+Priority: optional
+Section: x11
+Installed-Size: 220
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.2.3-0ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-apm
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-apm
+Filename: pool/main/x/xserver-xorg-video-apm/xserver-xorg-video-apm_1.2.3-0ubuntu1_amd64.deb
+Size: 75166
+MD5sum: d681c49714651d631bfdce3c8f8b4876
+SHA1: db29d20c5beb03f26d8fd0d0ff3bf6ad984fcde8
+SHA256: 0d0c328570db8eee1445bbd83848a7f7be1c4ef31be629b273758f027347c910
+Description: X.Org X server -- APM display driver
+ This package provides the driver for the Alliance Pro Motion family
+ of video cards; specifically, the 6420, 6422, AT24, AT25, and AT3D
+ cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-apm driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-ark
+Priority: optional
+Section: x11
+Installed-Size: 84
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:0.7.2-2build2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-ark
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-ark
+Filename: pool/main/x/xserver-xorg-video-ark/xserver-xorg-video-ark_0.7.2-2build2_amd64.deb
+Size: 18056
+MD5sum: 2805bc3e42b20b9212e8c2d3e904c8d1
+SHA1: bbdc07c1f02e15ccd22414dc5e6c2f3e389f7427
+SHA256: 683b9c5d142d4a9b21cf3a0a930cddf5ad59b5cff91a134728c9cfd74aabbfd5
+Description: X.Org X server -- ark display driver
+ This package provides the driver for the ark family
+ of chipsets.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-ark driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-ati
+Priority: optional
+Section: x11
+Installed-Size: 100
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:6.13.1-1ubuntu4
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), libpciaccess0, xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.905-1ubuntu3), xserver-xorg-video-r128, xserver-xorg-video-mach64, xserver-xorg-video-radeon
+Filename: pool/main/x/xserver-xorg-video-ati/xserver-xorg-video-ati_6.13.1-1ubuntu4_amd64.deb
+Size: 21368
+MD5sum: 91f93ce4df4bc83846763a00ef3c51dc
+SHA1: 47ff08c9ed28c3e3275b0710e373b95608f831a0
+SHA256: 87e558ebd7b1214425eaa4a3afed11a86c39058fee5d19bd19b1ea0f72ff6090
+Description: X.Org X server -- AMD/ATI display driver wrapper
+ This package provides the 'ati' driver for the AMD/ATI Mach64, Rage128,
+ Radeon, FireGL, FireMV, FirePro and FireStream series. This driver is
+ actually a wrapper that loads one of the 'mach64', 'r128' or 'radeon'
+ sub-drivers depending on the hardware.
+ These sub-drivers are brought through package dependencies.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-ati driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-ati-dbg
+Priority: extra
+Section: x11
+Installed-Size: 96
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xserver-xorg-video-ati
+Version: 1:6.13.1-1ubuntu4
+Depends: xserver-xorg-video-ati (= 1:6.13.1-1ubuntu4), xserver-xorg-video-mach64-dbg, xserver-xorg-video-r128-dbg, xserver-xorg-video-radeon-dbg
+Filename: pool/main/x/xserver-xorg-video-ati/xserver-xorg-video-ati-dbg_6.13.1-1ubuntu4_amd64.deb
+Size: 25140
+MD5sum: 79ca46474fe815bc58ade6149c5213f0
+SHA1: 741ef65d6beb94f49213432bfb82dbfeeb70a375
+SHA256: 67c0f463dd9357578395832db8e432344d1639df41f6c80b010acb75b0af998b
+Description: X.Org X server -- AMD/ATI display driver wrapper (debugging symbols)
+ This package provides the 'ati' driver for the AMD/ATI Mach64, Rage128,
+ Radeon, FireGL, FireMV, FirePro and FireStream series. This driver is
+ actually a wrapper that loads one of the 'mach64', 'r128' or 'radeon'
+ sub-drivers depending on the hardware.
+ These sub-drivers are brought through package dependencies.
+ .
+ This package provides debugging symbols for this X.org X driver wrapper
+ and brings debugging symbols for sub-drivers through package dependencies.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-video-chips
+Priority: optional
+Section: x11
+Installed-Size: 236
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.2.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-chips
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-chips
+Filename: pool/main/x/xserver-xorg-video-chips/xserver-xorg-video-chips_1.2.3-1_amd64.deb
+Size: 84812
+MD5sum: 6b6abc6c3922bda0d0c35d24ebbb2edd
+SHA1: 92f73bb35f9f1e22d558c19c7de7c8388abf3702
+SHA256: 6f5dfd337a75db61a82704edbfadd063bce55970f7cfcb875d022d217ed76d09
+Description: X.Org X server -- Chips display driver
+ This package provides the driver for the Chips & Technologies family
+ of video cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-chips driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-cirrus
+Priority: optional
+Section: x11
+Installed-Size: 164
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.3.2-2ubuntu3
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-cirrus
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-cirrus
+Filename: pool/main/x/xserver-xorg-video-cirrus/xserver-xorg-video-cirrus_1.3.2-2ubuntu3_amd64.deb
+Size: 48284
+MD5sum: b206bde81987c40ec2acefafe1d02151
+SHA1: cc2cd0482c1f002901645d52955a64790af677e6
+SHA256: 9c763caf29269b89b60ccd2c338fb282ee035447930366dca03461a9cc95911a
+Description: X.Org X server -- Cirrus display driver
+ This package provides the driver for the Cirrus Logic family of video
+ cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-cirrus driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-fbdev
+Priority: optional
+Section: x11
+Installed-Size: 100
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:0.4.2-2ubuntu2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-fbdev
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-fbdev
+Filename: pool/main/x/xserver-xorg-video-fbdev/xserver-xorg-video-fbdev_0.4.2-2ubuntu2_amd64.deb
+Size: 22766
+MD5sum: c3595fdebc8771a1c1bb46c8ad703204
+SHA1: e6702adf49e636fe1afdecde9734525e39510367
+SHA256: fe8739839a641e80a688ee08c01a9fde82ece14bdde22fcd8d5b2bbed60aa49e
+Description: X.Org X server -- fbdev display driver
+ This package provides the driver for the Linux framebuffer device (aka
+ 'fbdev').
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-fbdev driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-i128
+Priority: optional
+Section: x11
+Installed-Size: 140
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.3.3-2build2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-i128
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-i128
+Filename: pool/main/x/xserver-xorg-video-i128/xserver-xorg-video-i128_1.3.3-2build2_amd64.deb
+Size: 35928
+MD5sum: 92cdb3768406395d7dc38c8d5254a24b
+SHA1: 4dd5b6fab1bec5e81d84d42f03286518fbbb603f
+SHA256: c79f25b4fd0d7e0a731ae32eb1ac376c32a5bf297d96024cc82aee7669e05cbc
+Description: X.Org X server -- i128 display driver
+ This package provides the driver for Number 9 Imagine (I128) video cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-i128 driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-i740
+Priority: optional
+Section: x11
+Installed-Size: 132
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.3.2-2build1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-i740
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.3.4), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-i740
+Filename: pool/main/x/xserver-xorg-video-i740/xserver-xorg-video-i740_1.3.2-2build1_amd64.deb
+Size: 33110
+MD5sum: affdf50d2cb8d927caa1458a00167a04
+SHA1: 72ad34b92111061f3e1c2d9e5e1b2ab5030419e8
+SHA256: a9d0cd04ba1b145ae345d396e8113c5ba9391662e53928407727ab9886cb6083
+Description: X.Org X server -- i740 display driver
+ This package provides the driver for the Intel i740 family of video chipsets.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-i740 driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-video-intel
+Priority: optional
+Section: x11
+Installed-Size: 1020
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 2:2.12.0-1ubuntu3
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-i810, xserver-xorg-video-i810 (<< 2:1.9.91-1), xserver-xorg-video-i810-modesetting, xserver-xorg-video-intel-modesetting
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), libdrm-intel1 (>= 2.4.21), libdrm2 (>= 2.4.17), libpciaccess0 (>= 0.8.0+git20071002), libx11-6, libx11-xcb1, libxcb-aux0 (>= 0.3.6), libxcb-dri2-0, libxcb1, libxext6, libxfixes3 (>= 1:4.0.1), libxv1, libxvmc1, xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Recommends: intel-gpu-tools
+Conflicts: 915resolution, xserver-xorg-driver-i810, xserver-xorg-video-i810 (<< 2:1.9.91-1), xserver-xorg-video-i810-modesetting, xserver-xorg-video-intel-modesetting
+Filename: pool/main/x/xserver-xorg-video-intel/xserver-xorg-video-intel_2.12.0-1ubuntu3_amd64.deb
+Size: 263918
+MD5sum: 982a8ed2c2b4499d6515cbd0ed345d4c
+SHA1: 0a364cdb73efc9229517d4f15c8fd2e07d81d76b
+SHA256: 570204fc03af24bdb3a5ed733b85575e519060719807d0f841c02d619b5041b6
+Description: X.Org X server -- Intel i8xx, i9xx display driver
+ This package provides the driver for the Intel i8xx and i9xx family
+ of chipsets, including i810, i815, i830, i845, i855, i865, i915, i945
+ and i965 series chips.
+ .
+ This package also provides XvMC (XVideo Motion Compensation) drivers
+ for i810/i815 and i9xx and newer chipsets.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-intel driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-intel-dbg
+Priority: extra
+Section: x11
+Installed-Size: 2012
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xserver-xorg-video-intel
+Version: 2:2.12.0-1ubuntu3
+Depends: xserver-xorg-video-intel (= 2:2.12.0-1ubuntu3)
+Recommends: intel-gpu-tools
+Filename: pool/main/x/xserver-xorg-video-intel/xserver-xorg-video-intel-dbg_2.12.0-1ubuntu3_amd64.deb
+Size: 852222
+MD5sum: 1e2b9de8e535a1e79e28c0b365530054
+SHA1: e62911adc3695e111d21f152ee5d443f3388191d
+SHA256: ec72365988119977ae92c7ed651773a2d46db2654e645b3bd9f4d894b0cc9230
+Description: X.Org X server -- Intel i8xx, i9xx display driver (debug symbols)
+ This driver provides support for the Intel i8xx and i9xx family of chipsets,
+ including i810, i815, i830, i845, i855, i865, i915, and i945 series chips.
+ .
+ This package provides debugging symbols for this Xorg X driver.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-video-mach64
+Priority: optional
+Section: x11
+Installed-Size: 388
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 6.8.2-3build2
+Replaces: xserver-xorg-video-ati (<= 1:6.8.0-1)
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-video-ati (<= 1:6.8.0-1)
+Filename: pool/main/x/xserver-xorg-video-mach64/xserver-xorg-video-mach64_6.8.2-3build2_amd64.deb
+Size: 212368
+MD5sum: 293e572c7b07db7242cc3c90053ae082
+SHA1: 18236fb1abc2d6077ea9e9c2a60d0a7c7faa7723
+SHA256: 6f9f3276cdc916e4808db47b61d93ef8ff1f60f4f0bc95521446d2d448018f14
+Description: X.Org X server -- ATI Mach64 display driver
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for the ATI Mach64 series.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-mach64 driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-mach64-dbg
+Priority: extra
+Section: x11
+Installed-Size: 1916
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xserver-xorg-video-mach64
+Version: 6.8.2-3build2
+Depends: xserver-xorg-video-mach64 (= 6.8.2-3build2)
+Filename: pool/main/x/xserver-xorg-video-mach64/xserver-xorg-video-mach64-dbg_6.8.2-3build2_amd64.deb
+Size: 949534
+MD5sum: 13879b58283b1afc6760cd9fe90dd1e1
+SHA1: 81fc81d66378f12d7e98cbd1fb82ead8ac22217f
+SHA256: ac66a5f2d697a533727a95d07bafe0416053af8815786c4e10fa2e1479887586
+Description: X.Org X server -- ATI display driver (debugging symbols)
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for the ATI Mach64 series.
+ .
+ This package provides debugging symbols for the Xorg X server ATI Mach64
+ display driver.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-video-mga
+Priority: optional
+Section: x11
+Installed-Size: 284
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.4.11.dfsg-4build1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-mga
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.7), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Suggests: firmware-linux
+Conflicts: xserver-xorg-driver-mga
+Filename: pool/main/x/xserver-xorg-video-mga/xserver-xorg-video-mga_1.4.11.dfsg-4build1_amd64.deb
+Size: 116770
+MD5sum: e7aad613e6d8566daee31386aaba9409
+SHA1: 7c9cdddc5eb80d338164e5c5c34337d82b9ca687
+SHA256: a7a02db1b18fb648cbe723666705128b912f97c12b0d471049f2b841ea248077
+Description: X.Org X server -- MGA display driver
+ This package provides the driver for the Matrox MGA family of chipsets,
+ including Matrox Millennium and Mystique cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-mga driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-neomagic
+Priority: optional
+Section: x11
+Installed-Size: 156
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.2.4-3build2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-neomagic
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-neomagic
+Filename: pool/main/x/xserver-xorg-video-neomagic/xserver-xorg-video-neomagic_1.2.4-3build2_amd64.deb
+Size: 46042
+MD5sum: 883c95770dec8473fc44f0560937bde6
+SHA1: 47add4ef96ffcd0eab086fb5c09412e769088ae3
+SHA256: f560066d2d7de1ba74b71382169f6a2402308822f1a07fbc5bbad30a3b99d846
+Description: X.Org X server -- Neomagic display driver
+ This package provides the driver for Neomagic MagicGraph chipsets, which are
+ commonly found in laptops.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-neomagic driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-nouveau
+Priority: optional
+Section: x11
+Installed-Size: 304
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:0.0.16+git20100805+b96170a-0ubuntu1
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), libdrm-nouveau1 (>= 2.4.20-3~), libudev0 (>= 147), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Filename: pool/main/x/xserver-xorg-video-nouveau/xserver-xorg-video-nouveau_0.0.16+git20100805+b96170a-0ubuntu1_amd64.deb
+Size: 113304
+MD5sum: ade4a7afa72b9bfcea0cdaee5d18472e
+SHA1: f1cd5716bc00ffb0e55897a7aa9047a7537b9f42
+SHA256: 3f8a7eda416f6324495a74a04f3868a1251a1a4caa8ec002421adc0ec31268dc
+Description: X.Org X server -- Nouveau display driver (experimental)
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for NVIDIA Riva, TNT, GeForce, and Quadro cards.
+ .
+ Although the nouveau project aims to provide full 3D support it is not yet
+ complete, and these packages do not include any 3D support.
+ Users requiring 3D support should use the non-free "nvidia" driver.
+ .
+ This package is built from the FreeDesktop.org xf86-video-nouveau driver.
+Homepage: http://nouveau.freedesktop.org/wiki/
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-nouveau-dbg
+Priority: extra
+Section: debug
+Installed-Size: 1252
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xserver-xorg-video-nouveau
+Version: 1:0.0.16+git20100805+b96170a-0ubuntu1
+Depends: xserver-xorg-video-nouveau (= 1:0.0.16+git20100805+b96170a-0ubuntu1)
+Filename: pool/main/x/xserver-xorg-video-nouveau/xserver-xorg-video-nouveau-dbg_0.0.16+git20100805+b96170a-0ubuntu1_amd64.deb
+Size: 522694
+MD5sum: d50e53f1832e2acd58ad5adc7c324a5a
+SHA1: 774ad386ef1cff56b346cde3b4c99d10f2bf2f93
+SHA256: 0e910561ac3913123fbaf1b8223f01d30c251138e7ba483e5ab77eb436988173
+Description: X.Org X server -- Nouveau display driver (debug symbols)
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for NVIDIA Riva, TNT, GeForce, and Quadro cards.
+ .
+ Although the nouveau project aims to provide full 3D support it is not yet
+ complete, and these packages do not include any 3D support.
+ Users requiring 3D support should use the non-free "nvidia" driver.
+ .
+ This package provides debugging symbols for this Xorg X driver.
+Homepage: http://nouveau.freedesktop.org/wiki/
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-video-nv
+Priority: optional
+Section: x11
+Installed-Size: 288
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:2.1.17-3ubuntu3
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-nv, xserver-xorg-video-riva128
+Provides: xf86-video-driver-riva128, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), libdrm2 (>= 2.4.3), libpciaccess0 (>= 0.8.0+git20071002), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-nv, xserver-xorg-video-riva128
+Filename: pool/main/x/xserver-xorg-video-nv/xserver-xorg-video-nv_2.1.17-3ubuntu3_amd64.deb
+Size: 117648
+MD5sum: a04ed6409ff5fd3fb7beb30d922bb046
+SHA1: e817cab78e016a3c585ea77cb45f6de6b77a743a
+SHA256: 20a3fec830cf7ccafa31daf06a998fa550ed909359c4cf1f9590bd634030566e
+Description: X.Org X server -- NV display driver
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for NVIDIA Riva, TNT, GeForce, and Quadro cards.
+ .
+ Note that this is not the same as the binary-only 'nvidia' driver, which
+ adds 3D support, but is binary-only and not supported.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-nv driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-openchrome
+Priority: optional
+Section: x11
+Installed-Size: 572
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:0.2.904+svn842-0ubuntu1
+Replaces: libchromexvmc1, libchromexvmcpro1
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), libdrm2 (>= 2.3.1), libx11-6, libxext6, libxv1, libxvmc1, xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: libchromexvmc1, libchromexvmcpro1
+Filename: pool/main/x/xserver-xorg-video-openchrome/xserver-xorg-video-openchrome_0.2.904+svn842-0ubuntu1_amd64.deb
+Size: 195642
+MD5sum: 6b7ba8d6cea0d091c85c8677f57711df
+SHA1: 8aa58956d76f4177b30a64c2e36ad379371f3e93
+SHA256: 31476e9de3305a4c069f922a452be791f0ae8f015407125f8c09eeb6eebca0aa
+Description: X.Org X server -- VIA display driver
+ OpenChrome is a project for the development of free and open-source drivers
+ for the VIA UniChrome video chipsets.
+ .
+ Originally called the 'snapshot' release, since it was a snapshot of an
+ experimental branch of the unichrome cvs code, this is a continued development
+ of the open source unichrome driver (from http://unichrome.sf.net) which
+ also incorporates support for the unichrome-pro chipsets.
+ .
+ Support for hardware acceleration (XvMC) for all chipsets has subsequently
+ been ripped out of the unichrome.sf.net driver. Therefore your only option if
+ you wish to make use of the acceleration features of your VIA chip with free
+ and open-source drivers is to use this version of the driver.
+Homepage: http://www.openchrome.org
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-r128
+Priority: optional
+Section: x11
+Installed-Size: 320
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 6.8.1-3build1
+Replaces: xserver-xorg-video-ati (<= 1:6.8.0-1)
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.7), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Suggests: firmware-linux
+Conflicts: xserver-xorg-video-ati (<= 1:6.8.0-1)
+Filename: pool/main/x/xserver-xorg-video-r128/xserver-xorg-video-r128_6.8.1-3build1_amd64.deb
+Size: 179372
+MD5sum: bb1ced7f07b0df67f771005e2c778eb4
+SHA1: 622c864794e968edab180a122b7b158e0b8643b2
+SHA256: b3361b85020d8be4c3354872882c42debdc8d00a95a5ba6512c6418582334ae6
+Description: X.Org X server -- ATI r128 display driver
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for the ATI Rage 'r128' series.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-r128 driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-r128-dbg
+Priority: extra
+Section: x11
+Installed-Size: 644
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xserver-xorg-video-r128
+Version: 6.8.1-3build1
+Depends: xserver-xorg-video-r128 (= 6.8.1-3build1)
+Filename: pool/main/x/xserver-xorg-video-r128/xserver-xorg-video-r128-dbg_6.8.1-3build1_amd64.deb
+Size: 331644
+MD5sum: 53ba42b5e97d8ae41a1d0d28cbd9d737
+SHA1: 69d657096949d9028c2226e8af5facba4e7cf046
+SHA256: 2976cecbb0ad4f2837c801d3e5ef1791bf25743d7c5724e901538820aca6c64e
+Description: X.Org X server -- ATI r128 display driver (debugging symbols)
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for the ATI Rage 'r128' series.
+ .
+ This package provides debugging symbols for the Xorg X server ATI r128
+ display driver.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-video-radeon
+Priority: optional
+Section: x11
+Installed-Size: 1336
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xserver-xorg-video-ati
+Version: 1:6.13.1-1ubuntu4
+Replaces: xserver-xorg-video-ati (<= 1:6.8.191-1)
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.7), libdrm-radeon1 (>= 2.4.17), libdrm2 (>= 2.4.16), libpciaccess0 (>= 0.10.2), libpixman-1-0, libudev0 (>= 147), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.905-1ubuntu3)
+Suggests: firmware-linux
+Filename: pool/main/x/xserver-xorg-video-ati/xserver-xorg-video-radeon_6.13.1-1ubuntu4_amd64.deb
+Size: 446340
+MD5sum: 5cbd60724971234d437d66152bd6f53d
+SHA1: 001f849426d1a04ce69ead3311ad72fa8a218223
+SHA256: b8ff48845a3c7ff814e3d3bd80e61d0c26d79deb8cde03f38462eb0be60060ab
+Description: X.Org X server -- AMD/ATI Radeon display driver
+ This package provides the 'radeon' driver for the AMD/ATI Radeon, FireGL,
+ FireMV, FirePro and FireStream series.
+ .
+ Note that this is not the same as the ATI-provided, binary-only, 'fglrx'
+ driver, which provides additional 3D functionality for some newer Radeon
+ cards, but is not supported.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-ati driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-radeon-dbg
+Priority: extra
+Section: x11
+Installed-Size: 3636
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xserver-xorg-video-ati
+Version: 1:6.13.1-1ubuntu4
+Replaces: xserver-xorg-video-ati-dbg (<= 1:6.8.191-1)
+Depends: xserver-xorg-video-radeon (= 1:6.13.1-1ubuntu4)
+Filename: pool/main/x/xserver-xorg-video-ati/xserver-xorg-video-radeon-dbg_6.13.1-1ubuntu4_amd64.deb
+Size: 1622426
+MD5sum: 578f8055b90f4fffb4470536d0ee3816
+SHA1: ba25bf44d4db7e252452657beb9815fe498dc34b
+SHA256: 318952ff7e6ee96d41736388ba0aaab4c50de8faecb5263c7290ee761a926248
+Description: X.Org X server -- AMD/ATI Radeon display driver (debugging symbols)
+ This package provides the 'radeon' driver for the AMD/ATI Radeon, FireGL,
+ FireMV, FirePro and FireStream series.
+ .
+ This package provides debugging symbols for this X.org X driver.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-video-rendition
+Priority: optional
+Section: x11
+Installed-Size: 116
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:4.2.4-0ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-rendition
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-rendition
+Filename: pool/main/x/xserver-xorg-video-rendition/xserver-xorg-video-rendition_4.2.4-0ubuntu1_amd64.deb
+Size: 32006
+MD5sum: 040f0b377d623d40fd33d3befcb12e77
+SHA1: a76e9747761a5225808bf96fcefdb0196d7c2540
+SHA256: 227537a5f5635d56e1b28f5455dda40ec01fbda04e67a6aab956cb455046dc16
+Description: X.Org X server -- Rendition display driver
+ This package provides the driver for the Rendition Verite family of chipsets,
+ commonly found in 3D accelerators such as the Creative 3D Blaster.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-rendition driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-s3
+Priority: optional
+Section: x11
+Installed-Size: 148
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:0.6.3-2build2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-s3
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-s3
+Filename: pool/main/x/xserver-xorg-video-s3/xserver-xorg-video-s3_0.6.3-2build2_amd64.deb
+Size: 43636
+MD5sum: 0318e0c20f32816e993115dcc15a9b6b
+SHA1: ff75f22d1054d73260f0968fd22ff978be6b215a
+SHA256: 04ccbe465f03732a9a30d80527dada04197035d2cde298e1dbc13bc2dc57f57e
+Description: X.Org X server -- legacy S3 display driver
+ This package provides the driver for certain legacy S3 video card chipsets,
+ including the Trio64 and 96x cards. It does not provide support for
+ ViRGE/Trio3D or Savage chipsets; support for these cards is provided by
+ xserver-xorg-video-s3virge and xserver-xorg-driver-savage, respectively.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-s3 driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-s3virge
+Priority: optional
+Section: x11
+Installed-Size: 160
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.10.4-2build2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-s3virge
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-s3virge
+Filename: pool/main/x/xserver-xorg-video-s3virge/xserver-xorg-video-s3virge_1.10.4-2build2_amd64.deb
+Size: 48792
+MD5sum: 3da2e57ba1ae98bfe73473416ff030f5
+SHA1: 3296574523259de9c62dbbf771584b94f8d519c0
+SHA256: 0c4604ad77d36b8913e602372f1c4721c3ae8b2a187d2b3583ce4d53bba29e60
+Description: X.Org X server -- S3 ViRGE display driver
+ This package provides the driver for the S3 ViRGE and Trio3D family
+ of chipsets. It does not support Trio64 or S3 96x cards; support for
+ these can be found in the xserver-xorg-video-s3 package. Support for
+ S3 Savage chipsets can be found in xserver-xorg-video-savage.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-s3virge driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-savage
+Priority: optional
+Section: x11
+Installed-Size: 240
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:2.3.1-2ubuntu2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-savage
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.3.4), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-savage
+Filename: pool/main/x/xserver-xorg-video-savage/xserver-xorg-video-savage_2.3.1-2ubuntu2_amd64.deb
+Size: 94910
+MD5sum: a57a30c861246f6c6d7bae87749bda30
+SHA1: aee96ab1c5817f881f7c30613efb6ff6c61590d4
+SHA256: 2465340a5607ff72b7088a4ad7a2f7254f02c4d17d0438c2823ff76c9ec5b01e
+Description: X.Org X server -- Savage display driver
+ This package provides the driver for the S3/VIA Savage/ProSavage/Twister family
+ of chipsets.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-savage driver module.
+Orig-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-siliconmotion
+Priority: optional
+Section: x11
+Installed-Size: 224
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.7.4-0ubuntu2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-siliconmotion
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.7), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-siliconmotion
+Filename: pool/main/x/xserver-xorg-video-siliconmotion/xserver-xorg-video-siliconmotion_1.7.4-0ubuntu2_amd64.deb
+Size: 89322
+MD5sum: 67bb40a85964b18216c30594cd260a6a
+SHA1: 39647585477ce517ce094fa346879cbe6c68a8f8
+SHA256: 9459d2f7d0be571881e18b7e24dae010f5a4d0c8210ea4bab306e476f77b7e63
+Description: X.Org X server -- SiliconMotion display driver
+ This package provides the driver for the SiliconMotion Lynx and Cougar family
+ of chipsets, commonly found in laptops.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-siliconmotion driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-sis
+Priority: optional
+Section: x11
+Installed-Size: 672
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:0.10.3-1build1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-sis
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.7), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-sis
+Filename: pool/main/x/xserver-xorg-video-sis/xserver-xorg-video-sis_0.10.3-1build1_amd64.deb
+Size: 297044
+MD5sum: 57f26ef639f3bc4dffce2e631f5edab3
+SHA1: fbeb26493846b2bd9f0dd306f411ded6b15e367a
+SHA256: b391011332abdff5241f0bef9b295a981d0f12ed575b34827cca3d22809b1d5a
+Description: X.Org X server -- SiS display driver
+ This package provides the driver for all SiS and XGI Volari cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-sis driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-sisusb
+Priority: optional
+Section: x11
+Installed-Size: 156
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:0.9.4-0ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-sisusb
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.7), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-sisusb
+Filename: pool/main/x/xserver-xorg-video-sisusb/xserver-xorg-video-sisusb_0.9.4-0ubuntu1_amd64.deb
+Size: 49900
+MD5sum: e17bb0f9c542a826ae6ae9364e4651c0
+SHA1: 695515870f6b7c19e9e2b9a2c6aa63d188f9f0a3
+SHA256: fd6cfff10a85c55661e29b91aec99f538940d5cf55dc9fa138ea0dc83fda5b47
+Description: X.Org X server -- SiS USB display driver
+ This package provides the driver for SiS USB-attached video devices.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-sisusb driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-tdfx
+Priority: optional
+Section: x11
+Installed-Size: 152
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.4.3-2build2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-tdfx
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-tdfx
+Filename: pool/main/x/xserver-xorg-video-tdfx/xserver-xorg-video-tdfx_1.4.3-2build2_amd64.deb
+Size: 46392
+MD5sum: 0adaf52a840699116197b796a8eb5492
+SHA1: f2026af7d453518705f049ef9750ba3f08df1c62
+SHA256: 620e5143574d0820641004e9c386748c35344bb3ec95833d884685c022dabe87
+Description: X.Org X server -- tdfx display driver
+ This package provides the driver for 3dfx Voodoo video cards and their
+ derivatives.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-tdfx driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-trident
+Priority: optional
+Section: x11
+Installed-Size: 244
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.3.4-0ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-trident
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.7), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-trident
+Filename: pool/main/x/xserver-xorg-video-trident/xserver-xorg-video-trident_1.3.4-0ubuntu1_amd64.deb
+Size: 82352
+MD5sum: 5389ff7eb1757dda92a35b8cec818b23
+SHA1: f731b2a951e5a64b990ddd88275a9158ddfdee30
+SHA256: 9757b882d296eed853c152d79546ad61eec9162abe0f32007dfa666c774cb408
+Description: X.Org X server -- Trident display driver
+ This package provides the driver for Trident Blade/Image/ProVidia/TGUI/9xxx
+ video cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-trident driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-tseng
+Priority: optional
+Section: x11
+Installed-Size: 136
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.2.4-0ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-tseng
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-tseng
+Filename: pool/main/x/xserver-xorg-video-tseng/xserver-xorg-video-tseng_1.2.4-0ubuntu1_amd64.deb
+Size: 37086
+MD5sum: 49454fcbc2be113329a7d7c4baa451ec
+SHA1: ba126de1cb3ce5f3348de11bc2aa5656b59b1e63
+SHA256: 66b15338b13dd04c4f987326103b14f647824c368f197db5cdbd4e8038b4e764
+Description: X.Org X server -- Tseng display driver
+ This package provides the driver for Tseng Labs cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-tseng driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-vesa
+Priority: optional
+Section: x11
+Installed-Size: 108
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:2.3.0-3build1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-vesa
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), libdrm2 (>= 2.4.3), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-vesa
+Filename: pool/main/x/xserver-xorg-video-vesa/xserver-xorg-video-vesa_2.3.0-3build1_amd64.deb
+Size: 27648
+MD5sum: 11f9542a9848c934781ff4c7e526b4eb
+SHA1: 7d04bd52102ba4bc279121dda3b23bf0bb365494
+SHA256: 8960650901beb1b9cebae21d4f7c505039b4e8b584acf7d495948d8c064c078a
+Description: X.Org X server -- VESA display driver
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ uses the standard VESA interface provided on all video cards, but runs
+ unaccelerated. This driver is not recommended for use unless you have a
+ problem with the normal driver for your card, because it will peform very
+ badly.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-vesa driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-vmware
+Priority: optional
+Section: x11
+Installed-Size: 148
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:11.0.1-2build1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-vmware
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), libdrm2 (>= 2.3.1), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-vmware
+Filename: pool/main/x/xserver-xorg-video-vmware/xserver-xorg-video-vmware_11.0.1-2build1_amd64.deb
+Size: 46210
+MD5sum: 324e418b02bfaab852d05363b63beb7b
+SHA1: 533ba227f0c038e7f4eb63689fb27ab48c8a3915
+SHA256: 5a9910e91c7f0c6c51bbbd93b95a933a13e14412b0c5d10d6c6d406acf036835
+Description: X.Org X server -- VMware display driver
+ This package provides the driver for VMware client sessions, i.e. if Linux
+ is running inside a VMware session.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-vmware driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-voodoo
+Priority: optional
+Section: x11
+Installed-Size: 104
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.2.4-0ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-voodoo
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-voodoo
+Filename: pool/main/x/xserver-xorg-video-voodoo/xserver-xorg-video-voodoo_1.2.4-0ubuntu1_amd64.deb
+Size: 25076
+MD5sum: 8fc0fa8abb44151231be76434bf3451e
+SHA1: cb618ff8a5eff6389aa660f5a51643ed3ba8b3d6
+SHA256: dfdda11e40c533f6636084385882d114347336766e7fc4bb14f515df5b858982
+Description: X.Org X server -- Voodoo display driver
+ This package provides the driver for 3dfx Voodoo1 and Voodoo2 chipsets.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-voodoo driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
diff --git a/test/integration/Packages-xorg-break-providers b/test/integration/Packages-xorg-break-providers
new file mode 100644
index 000000000..f6e1d81f9
--- /dev/null
+++ b/test/integration/Packages-xorg-break-providers
@@ -0,0 +1,52 @@
+Package: xserver-xorg-video-intel
+Priority: optional
+Section: x11
+Installed-Size: 1292
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Version: 2:2.13.901-2
+Provides: xserver-xorg-video-8
+Filename: pool/main/x/xserver-xorg-video-intel/xserver-xorg-video-intel_2.13.901-2_i386.deb
+Size: 586964
+MD5sum: 72527f4b2c9d734e53202736e3177865
+Description: X.Org X server -- Intel i8xx, i9xx display driver
+
+Package: xserver-xorg-video-vesa
+Priority: optional
+Section: x11
+Installed-Size: 104
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Version: 1:2.3.0-4
+Provides: xserver-xorg-video-8
+Filename: pool/main/x/xserver-xorg-video-vesa/xserver-xorg-video-vesa_2.3.0-4_i386.deb
+Size: 27158
+MD5sum: 77bf2935c40b3b7739d431930e53d185
+Description: X.Org X server -- VESA display driver
+
+Package: xserver-xorg-video-vesa
+Priority: optional
+Section: x11
+Installed-Size: 104
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Version: 1:2.3.0-3
+Provides: xserver-xorg-video-6
+Filename: pool/main/x/xserver-xorg-video-vesa/xserver-xorg-video-vesa_2.3.0-3_i386.deb
+Size: 27122
+MD5sum: 0cd97be927c7d75f2a7230739f8f866c
+Description: X.Org X server -- VESA display driver
+
+Package: xserver-xorg-core
+Priority: optional
+Section: x11
+Installed-Size: 4436
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: xorg-server
+Version: 2:1.7.7-8
+Breaks: xserver-xorg-video-6
+Filename: pool/main/x/xorg-server/xserver-xorg-core_1.7.7-8_i386.deb
+Size: 2405050
+MD5sum: 976ddb13473e52903dd839d1f7ec390b
+Description: Xorg X server - core server
diff --git a/test/integration/apt.pem b/test/integration/apt.pem
new file mode 100644
index 000000000..f48df054d
--- /dev/null
+++ b/test/integration/apt.pem
@@ -0,0 +1,49 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCt4R1Q2oYF6utL
+19GBhnlHW8L2BI7PRFWge/ZpqIZWsaFcb30FV86Z6aXXZmgfEJ2814ZZYD1IKeCe
+JsJpns7B4vYe1v64r995ZNBQAAKIYjICkKZOBgOphV+ChBfrCctVXgfLbMP6iBdH
+J02wHzSCCdZm0sdVl9tB5l/OyJU8Mb4KB3btBhfZfY2M6lU+FOjcXs1LOduUrv7K
+fZ+DEalvVGkomLtHtD0qb2vkqFrTjVCkziUVWhhxFFflt08oQ01Clxpl+uv7rOQo
+jtkJ1LrMuv7iPfaZ/z3qLiFxZYG1BCGEwTOKCtJo6bgFzXiN3q7Q5FFlmv851x2J
+Dn8C7Qm7AgMBAAECggEAE3q6vAofJZ6Ryadd8zLLd3ESQFl2XkX7icUZb/DPS/sO
+ZrqeuPCDVr7UM3NnisNjyHoktPKRKvp2DYGuGgMOiq4QgJf5ZVten8zpgWze28SU
+cbEe0HLgCifE8Ww2+b/ZJbEpEmMW+YQxh2khzO9SBJdxi4dliXM/vvw+E35pKZsB
+s6glrz6VQAxxa9fY4fLnB2DafHy+pUvRVw8gC6PCM9jXN9tMYAqztsJu7aaanNyT
+HX2UDWa8hxVx6t5UQZuxvst9N+RcEwmVCR2qlfZt/VRBRibBm62crEKbTD00mNHQ
+4AIDn3g6Y3SXpDlgtNpjLyBL3fODPIwqwGdblaSKkQKBgQDYXecu0Eda7kbR5ciW
+IAn8XOxsBIkkh8YVl2gRiiajRVoeiYBHaW9TyuQiaWrftiDQxB/N4G2focTXy/7O
+VJn6e/SUoO/ZGRw2GbTxLUQptgvFsejYCcW9XpC8MCwE/y2swiY7JM0WR8cV2nCk
+a/Cls6f1LjL13aFO0PAorEcahQKBgQDNuth6EHZVwfDgUuqhRw4HIIpfsfiA3UOd
+b5k/NsfQIev1YUqnfucgInNPDq2Jf8eTQw3TKaszo2DCjDffCsEgM09Tym143Bd6
+AsMuqAStsE3IEC7pnmh95l29/7mh4OuG5cp5JUx0Pi5PkuJ6ywA8P1rM1MB9Zf52
+NGJCo1pnPwKBgQCx/n4i+uDYo1DLd/dN2UmdvGwaaJjR3ohMVuQcGcSzaGg82u0W
+0lvtWOnYjVSIeXIBjHaFjW1hd1lSFdWms96AO9z3MHZf6NJWh0tdZNnAXqzMlBFz
+OIbdxJ/Y0OBFtA9FIesFmL7G54GWLr+f49Ry3Jr9jmYJ8au0BRqsux07aQKBgC4q
+CT2KyCMCO/z6XjAGc71hres/UlYIUI3ZZvfqYPfxRLNxO4FOVqq9UEajMomyJKSE
+3WtO5F3YAXRmZnskPKXvHZPdzqbaLGJykD298h7PewSzrPM7WpM1yD9ETPFoOTGy
+CrcYiYlkEpxEh5GqT8k1JjjkXLVG18zKgGoXocedAoGAQyU2DCNfxwzIJfFHKZEG
+zpni72cR68Tu3AhW/38vMR2ZPca4KzXrUA52T+j7vkQC38LHm/mzNXNP7Vya0PJ3
+WoYOcLtg2uFPh0P/35ArEzuNooLsvulgg1jsamPbF8KAvJZKZHr30hlC/JGYSBbV
+bnkzJTShsKzHIUiLtQ8Ja+E=
+-----END PRIVATE KEY-----
+-----BEGIN CERTIFICATE-----
+MIIDezCCAmOgAwIBAgIJAJ39xapQo0vLMA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNV
+BAYTAkRFMRMwEQYDVQQIDApTb21lLVN0YXRlMRswGQYDVQQKDBJBUFQgVGVzdGNh
+c2VzIEdtYkgxEjAQBgNVBAMMCWxvY2FsaG9zdDAgFw0xMzA5MTYwODQ4MzVaGA80
+NzUxMDgxMzA4NDgzNVowUzELMAkGA1UEBhMCREUxEzARBgNVBAgMClNvbWUtU3Rh
+dGUxGzAZBgNVBAoMEkFQVCBUZXN0Y2FzZXMgR21iSDESMBAGA1UEAwwJbG9jYWxo
+b3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAreEdUNqGBerrS9fR
+gYZ5R1vC9gSOz0RVoHv2aaiGVrGhXG99BVfOmeml12ZoHxCdvNeGWWA9SCngnibC
+aZ7OweL2Htb+uK/feWTQUAACiGIyApCmTgYDqYVfgoQX6wnLVV4Hy2zD+ogXRydN
+sB80ggnWZtLHVZfbQeZfzsiVPDG+Cgd27QYX2X2NjOpVPhTo3F7NSznblK7+yn2f
+gxGpb1RpKJi7R7Q9Km9r5Kha041QpM4lFVoYcRRX5bdPKENNQpcaZfrr+6zkKI7Z
+CdS6zLr+4j32mf896i4hcWWBtQQhhMEzigrSaOm4Bc14jd6u0ORRZZr/OdcdiQ5/
+Au0JuwIDAQABo1AwTjAdBgNVHQ4EFgQUhd26E7ykEYRTDbgMzkYtFtENhSkwHwYD
+VR0jBBgwFoAUhd26E7ykEYRTDbgMzkYtFtENhSkwDAYDVR0TBAUwAwEB/zANBgkq
+hkiG9w0BAQUFAAOCAQEAWcyMKi0Vc4beGV7w4Qft0/2P68jjMlQRdgkz+gGXbMVr
+//KhqR3PbgFmHHpUsZ718AHeerNNdfFzOUptiAiOqH2muyAGdeWCxJ8KcU0sic8x
+/h3TOzMYfEozhgMSJp9YW1z655uHcb15S7jb4zZwXwGyQzxwXT35SKj2mCqSbjIb
+G987DGI+MtyoGRXhIwnBEsGTI1ck3NoeXBJ/tS/Ma8gUUC2xldMSprtHjeUHvZV2
+iz/HTqGlMLGW96AVeZiFNiC1fJ6pvref2XW5MkkvQm8tOi2cSrwJc9CgnCpCxkLp
+liRsbwAduwkA26XzEomMR7yyYS5pm0Eu0cO9X39FKQ==
+-----END CERTIFICATE-----
diff --git a/test/integration/cachedb-lp1274466-old-format.db b/test/integration/cachedb-lp1274466-old-format.db
new file mode 100644
index 000000000..88da5f1ee
--- /dev/null
+++ b/test/integration/cachedb-lp1274466-old-format.db
Binary files differ
diff --git a/test/integration/create-test-data b/test/integration/create-test-data
new file mode 100755
index 000000000..7040aaed7
--- /dev/null
+++ b/test/integration/create-test-data
@@ -0,0 +1,47 @@
+#!/bin/sh
+set +e # its okay to fail in these script, most of the time the apt* stuff will generate errors
+
+if [ -z "$1" -o -z "$2" ]; then
+ echo "Usage: $0 file codename pkg…"
+ exit 1
+fi
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+BUILDDIRECTORY="${TESTDIR}/../../build/bin"
+
+GENERATE=$1
+CODENAME=$2
+shift 2
+
+WORKDIR=$(mktemp -d)
+trap "rm -rf $WORKDIR" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
+touch $WORKDIR/status
+TMPGEN=$WORKDIR/Packages
+export LANG=C
+
+LISTOFPKGS=$(aptget install $* -t $CODENAME -so Dir::state::status=$WORKDIR/status -o Dir::Cache::archives=$WORKDIR -o pkgCacheGen::Essential=none -o APT::Immediate-Configure=0 2> /dev/null | awk '/^Inst/ {print $2}' | sed -e "s#\$#/$CODENAME#")
+if [ -z "$LISTOFPKGS" ]; then
+ echo "List of packages is empty: run apt-get install command again for you now"
+ aptget install $* -t $CODENAME -so Dir::state::status=$WORKDIR/status -o Dir::Cache::archives=$WORKDIR -o pkgCacheGen::Essential=none -o APT::Immediate-Configure=0
+ exit 1
+fi
+aptcache show $LISTOFPKGS --no-all-versions 2> $WORKDIR/error.lst > $TMPGEN
+sed -i $TMPGEN \
+ -e '/^ / d' \
+ -e '/^SHA1: / d' -e '/^SHA256: / d' \
+ -e '/^Homepage: / d' -e '/^Tag: / d' \
+ -e '/^Xul-Appid: / d' \
+ -e '/^Status: / d'
+
+if [ "$CODENAME" = "experimental" ]; then
+ aptcache show $(cat $WORKDIR/error.lst | cut -d"'" -f 4 | sed -e 's#$#/sid#') --no-all-versions 2> /dev/null >> $TMPGEN
+fi
+
+if echo "$GENERATE" | grep '^status-' > /dev/null; then
+ sed -i $TMPGEN -e '/^Package: / a\
+Status: install ok installed' \
+ -e '/^Filename: / d' -e '/^Size: / d' -e '/^MD5sum: / d'
+fi
+
+apt-sortpkgs $TMPGEN > $GENERATE
diff --git a/test/integration/deb-bug-330162-encoded-tar-header.deb b/test/integration/deb-bug-330162-encoded-tar-header.deb
new file mode 100644
index 000000000..f38b1aa70
--- /dev/null
+++ b/test/integration/deb-bug-330162-encoded-tar-header.deb
Binary files differ
diff --git a/test/integration/deb-lp1274466-cachedb.deb b/test/integration/deb-lp1274466-cachedb.deb
new file mode 100644
index 000000000..43d7ee6f1
--- /dev/null
+++ b/test/integration/deb-lp1274466-cachedb.deb
Binary files differ
diff --git a/test/integration/framework b/test/integration/framework
new file mode 100644
index 000000000..c65ac5acb
--- /dev/null
+++ b/test/integration/framework
@@ -0,0 +1,2104 @@
+#!/bin/sh -- # no runable script, just for vi
+
+EXIT_CODE=0
+
+while [ -n "$1" ]; do
+ if [ "$1" = "-q" ]; then
+ export MSGLEVEL=2
+ elif [ "$1" = "-qq" ]; then
+ export MSGLEVEL=1
+ elif [ "$1" = "-v" ]; then
+ export MSGLEVEL=4
+ elif [ "$1" = '--color=no' ]; then
+ export MSGCOLOR='NO'
+ elif [ "$1" = '--color=yes' ]; then
+ export MSGCOLOR='YES'
+ elif [ "$1" = '--color' ]; then
+ export MSGCOLOR="$(echo "$2" | tr 'a-z' 'A-Z')"
+ shift
+ elif [ "$1" = '--level' ]; then
+ export MSGLEVEL=$2
+ shift
+ else
+ echo >&2 "WARNING: Unknown parameter »$1« will be ignored"
+ fi
+ shift
+done
+export MSGLEVEL="${MSGLEVEL:-3}"
+
+# we all like colorful messages
+if [ "${MSGCOLOR:-YES}" = 'YES' ]; then
+ if [ ! -t 1 ]; then # but check that we output to a terminal
+ export MSGCOLOR='NO'
+ fi
+fi
+
+if [ "$MSGCOLOR" != 'NO' ]; then
+ CERROR="\033[1;31m" # red
+ CWARNING="\033[1;33m" # yellow
+ CMSG="\033[1;32m" # green
+ CINFO="\033[1;96m" # light blue
+ CDEBUG="\033[1;94m" # blue
+ CNORMAL="\033[0;39m" # default system console color
+ CDONE="\033[1;32m" # green
+ CPASS="\033[1;32m" # green
+ CFAIL="\033[1;31m" # red
+ CCMD="\033[1;35m" # pink
+fi
+
+msgprintf() {
+ local START="$1"
+ local MIDDLE="$2"
+ local END="$3"
+ shift 3
+ if [ -n "$1" ]; then
+ printf "$START " "$1"
+ shift
+ while [ -n "$1" ]; do
+ printf "$MIDDLE " "$(echo "$1" | sed -e 's#^apt\([cfghks]\)#apt-\1#')"
+ shift
+ done
+ fi
+ printf "${END}"
+}
+msgdie() { msgprintf "${CERROR}E: %s" '%s' "${CNORMAL}\n" "$@" >&2; exit 1; }
+msgwarn() { msgprintf "${CWARNING}W: %s" '%s' "${CNORMAL}\n" "$@" >&2; }
+msgmsg() { msgprintf "${CMSG}%s" '%s' "${CNORMAL}\n" "$@"; }
+msginfo() { msgprintf "${CINFO}I: %s" '%s' "${CNORMAL}\n" "$@"; }
+msgdebug() { msgprintf "${CDEBUG}D: %s" '%s' "${CNORMAL}\n" "$@"; }
+msgdone() { msgprintf "${CDONE}DONE" '%s' "${CNORMAL}\n" "$@"; }
+msgnwarn() { msgprintf "${CWARNING}W: %s" '%s' "${CNORMAL}" "$@" >&2; }
+msgnmsg() { msgprintf "${CMSG}%s" '%s' "${CNORMAL}" "$@"; }
+msgninfo() { msgprintf "${CINFO}I: %s" '%s' "${CNORMAL}" "$@"; }
+msgndebug() { msgprintf "${CDEBUG}D: %s" '%s' "${CNORMAL}" "$@"; }
+msgtest() { msgprintf "${CINFO}%s" "${CCMD}%s${CINFO}" "…${CNORMAL} " "$@"; }
+msgpass() { printf "${CPASS}PASS${CNORMAL}\n"; }
+msgreportheader() {
+ if [ -n "$MSGTEST_MSG" ]; then
+ test "$1" != 'msgfailoutput' || echo
+ if [ -n "$MSGTEST_MSGMSG" ]; then
+ echo "$MSGTEST_MSGMSG"
+ fi
+ if [ -n "$MSGTEST_GRP" ] && [ "$MSGTEST_GRP" != 'NEXT' ] && [ "$MSGTEST_GRP" != "$MSGTEST_MSG" ]; then
+ echo "${CFAIL}Part of the test group: $MSGTEST_GRP"
+ fi
+ echo -n "$MSGTEST_MSG"
+ unset MSGTEST_MSG
+ fi
+}
+msgskip() {
+ msgreportheader 'msgskip'
+ if [ $# -gt 0 ]; then printf "${CWARNING}SKIP: $*${CNORMAL}\n" >&2;
+ else printf "${CWARNING}SKIP${CNORMAL}\n" >&2; fi
+}
+msgfail() {
+ msgreportheader 'msgfail'
+ if [ $# -gt 0 ] && [ -n "$1" ]; then printf "${CFAIL}FAIL: $*${CNORMAL}\n" >&2;
+ else printf "${CFAIL}FAIL${CNORMAL}\n" >&2; fi
+ if [ -n "$APT_DEBUG_TESTS" ]; then
+ runapt $SHELL
+ fi
+ EXIT_CODE=$((EXIT_CODE+1));
+}
+MSGGROUP_LEVEL=0
+msggroup() {
+ if [ -n "$1" ]; then
+ if [ $MSGGROUP_LEVEL = 0 ]; then
+ MSGTEST_GRP='NEXT'
+ fi
+ MSGGROUP_LEVEL=$((MSGGROUP_LEVEL+1));
+ else
+ MSGGROUP_LEVEL=$((MSGGROUP_LEVEL-1));
+ if [ $MSGGROUP_LEVEL = 0 ]; then
+ unset MSGTEST_GRP
+ fi
+ fi
+}
+
+# enable / disable Debugging
+if [ $MSGLEVEL -le 0 ]; then
+ msgdie() { true; }
+fi
+if [ $MSGLEVEL -le 1 ]; then
+ msgwarn() { true; }
+ msgnwarn() { true; }
+fi
+if [ $MSGLEVEL -le 2 ]; then
+ msgmsg() {
+ MSGTEST_MSGMSG="$(msgprintf "${CMSG}%s" '%s' "${CNORMAL}" "$@")"
+ }
+ msgnmsg() { true; }
+ msgtest() {
+ MSGTEST_MSG="$(msgprintf "${CINFO}%s" "${CCMD}%s${CINFO}" "…${CNORMAL} " "$@")"
+ if [ "$MSGTEST_GRP" = 'NEXT' ]; then
+ MSGTEST_GRP="$MSGTEST_MSG"
+ fi
+ }
+ msgpass() { printf " ${CPASS}P${CNORMAL}"; }
+fi
+if [ $MSGLEVEL -le 3 ]; then
+ msginfo() { true; }
+ msgninfo() { true; }
+fi
+if [ $MSGLEVEL -le 4 ]; then
+ msgdebug() { true; }
+ msgndebug() { true; }
+fi
+if [ $MSGLEVEL -le 1 ]; then
+ msgpass() { true; }
+fi
+msgdone() {
+ if [ "$1" = "debug" -a $MSGLEVEL -le 4 ] ||
+ [ "$1" = "info" -a $MSGLEVEL -le 3 ] ||
+ [ "$1" = "msg" -a $MSGLEVEL -le 2 ] ||
+ [ "$1" = "warn" -a $MSGLEVEL -le 1 ] ||
+ [ "$1" = "die" -a $MSGLEVEL -le 0 ]; then
+ true;
+ else
+ printf "${CDONE}DONE${CNORMAL}\n";
+ fi
+}
+getaptconfig() {
+ if [ -f ./aptconfig.conf ]; then
+ echo "$(readlink -f ./aptconfig.conf)"
+ elif [ -f ../aptconfig.conf ]; then
+ echo "$(readlink -f ../aptconfig.conf)"
+ elif [ -f ../../aptconfig.conf ]; then
+ echo "$(readlink -f ../../aptconfig.conf)"
+ elif [ -f "${TMPWORKINGDIRECTORY}/aptconfig.conf" ]; then
+ echo "$(readlink -f "${TMPWORKINGDIRECTORY}/aptconfig.conf")"
+ fi
+}
+runapt() {
+ msgdebug "Executing: ${CCMD}$*${CDEBUG} "
+ local CMD="$1"
+ shift
+ case "$CMD" in
+ sh|aptitude|*/*|command) ;;
+ *) CMD="${BUILDDIRECTORY}/$CMD";;
+ esac
+ MALLOC_PERTURB_=21 MALLOC_CHECK_=2 APT_CONFIG="$(getaptconfig)" LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}" "$CMD" "$@"
+}
+runpython3() { runapt command python3 "$@"; }
+aptconfig() { runapt apt-config "$@"; }
+aptcache() { runapt apt-cache "$@"; }
+aptcdrom() { runapt apt-cdrom "$@"; }
+aptget() { runapt apt-get "$@"; }
+aptftparchive() { runapt "${APTFTPARCHIVEBINDIR}/apt-ftparchive" "$@"; }
+aptkey() { runapt apt-key "$@"; }
+aptmark() { runapt apt-mark "$@"; }
+aptsortpkgs() { runapt apt-sortpkgs "$@"; }
+apt() { runapt apt "$@"; }
+apthelper() { runapt "${APTHELPERBINDIR}/apt-helper" "$@"; }
+aptwebserver() { runapt "${APTTESTHELPERSBINDIR}/aptwebserver" "$@"; }
+aptitude() { runapt aptitude "$@"; }
+aptextracttemplates() { runapt apt-extracttemplates "$@"; }
+aptinternalsolver() { runapt "${APTINTERNALSOLVER}" "$@"; }
+aptdumpsolver() { runapt "${APTDUMPSOLVER}" "$@"; }
+aptinternalplanner() { runapt "${APTINTERNALPLANNER}" "$@"; }
+
+dpkg() {
+ "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" "$@"
+}
+dpkg_version() {
+ command perl -MDpkg -E 'say $Dpkg::PROGVERSION'
+}
+dpkgcheckbuilddeps() {
+ command dpkg-checkbuilddeps --admindir="${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg" "$@"
+}
+gdb() {
+ local CMD
+ case "$1" in
+ aptget) CMD="apt-get";;
+ aptcache) CMD="apt-cache";;
+ aptcdrom) CMD="apt-cdrom";;
+ aptconfig) CMD="apt-config";;
+ aptmark) CMD="apt-mark";;
+ apthelper) CMD="apt-helper";;
+ aptftparchive) CMD="apt-ftparchive";;
+ dpkg) shift; runapt "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg" "$@"; return;;
+ *) CMD="$1";;
+ esac
+ shift
+ if [ "${CMD##*/}" = "$CMD" ]; then
+ CMD="${BUILDDIRECTORY}/${CMD}"
+ fi
+ runapt command gdb --quiet -ex "directory '$SOURCEDIRECTORY'" -ex run "$CMD" --args "$CMD" "$@"
+}
+lastmodification() {
+ date -u -d "@$(stat -c '%Y' "${TMPWORKINGDIRECTORY}/$1")" -R
+}
+releasefiledate() {
+ grep "^${2:-Date}:" "$1" | cut -d' ' -f 2-
+}
+
+exitwithstatus() {
+ # error if we about to overflow, but ...
+ # "255 failures ought to be enough for everybody"
+ if [ $EXIT_CODE -gt 255 ]; then
+ msgdie "Total failure count $EXIT_CODE too big"
+ fi
+ exit $((EXIT_CODE <= 255 ? EXIT_CODE : 255));
+}
+
+shellsetedetector() {
+ local exit_status=$?
+ if [ "$exit_status" != '0' ]; then
+ printf >&2 "${CERROR}E: Looks like the testcases ended prematurely with exitcode: ${exit_status}${CNORMAL}\n"
+ if [ "$EXIT_CODE" = '0' ]; then
+ EXIT_CODE="$exit_status"
+ fi
+ fi
+}
+
+addtrap() {
+ if [ "$1" = 'prefix' ]; then
+ CURRENTTRAP="$2 $CURRENTTRAP"
+ else
+ CURRENTTRAP="$CURRENTTRAP $1"
+ fi
+ trap "shellsetedetector; $CURRENTTRAP exitwithstatus;" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
+}
+
+escape_shell() {
+ echo "$@" | sed -e "s#'#'\"'\"'#g"
+}
+
+find_project_binary_dir() {
+ local TESTDIRECTORY="$(readlink -f "$(dirname $0)")"
+ if [ -z "$PROJECT_BINARY_DIR" ]; then
+ PROJECT_BINARY_DIR=
+ for dir in ${TESTDIRECTORY}/../../ ${TESTDIRECTORY}/../../*; do
+ test -e "$dir/CMakeCache.txt" || continue
+ if [ -z "$PROJECT_BINARY_DIR" ] ||
+ [ "$dir/CMakeCache.txt" -nt "$PROJECT_BINARY_DIR/CMakeCache.txt" ]; then
+ PROJECT_BINARY_DIR="$dir"
+ fi
+ done
+ if [ -z "$PROJECT_BINARY_DIR" ]; then
+ echo "Cannot find build directory, you might want to set PROJECT_BINARY_DIR" >&2
+ exit 1
+ fi
+ export PROJECT_BINARY_DIR
+ fi
+}
+setupenvironment() {
+ # Next check needs a gnu stat, let's figure that out early.
+ stat=stat
+ if command -v gnustat >/dev/null 2>&1; then
+ stat=gnustat
+ fi
+ # privilege dropping and testing doesn't work if /tmp isn't world-writeable (as e.g. with libpam-tmpdir)
+ if [ -n "$TMPDIR" ] && [ "$(id -u)" = '0' ] && [ "$($stat --format '%a' "$TMPDIR")" != '1777' ]; then
+ unset TMPDIR
+ fi
+ TMPWORKINGDIRECTORY="$(mktemp -d)"
+ addtrap "cd /; rm -rf '$(escape_shell "$TMPWORKINGDIRECTORY")';"
+ if [ -n "$TMPDIR_ADD" ]; then
+ TMPWORKINGDIRECTORY="${TMPWORKINGDIRECTORY}/${TMPDIR_ADD}"
+ mkdir -p "$TMPWORKINGDIRECTORY"
+ unset TMPDIR_ADD
+ export TMPDIR="$TMPWORKINGDIRECTORY"
+ fi
+ msgninfo "Preparing environment for ${0##*/} in ${TMPWORKINGDIRECTORY}…"
+
+ # Setup coreutils on BSD systems
+ mkdir "${TMPWORKINGDIRECTORY}/bin"
+ for prefix in gnu g; do
+ for command in stat touch sed cp tr sha1sum sha256sum md5sum sha512sum grep date wc chmod head readlink tar expr base64; do
+ if command -v $prefix$command 2>/dev/null >/dev/null; then
+ [ -e "${TMPWORKINGDIRECTORY}/bin/$command" ] || ln -sf $(command -v $prefix$command) "${TMPWORKINGDIRECTORY}/bin/$command"
+ fi
+ done
+ done
+ export PATH="${TMPWORKINGDIRECTORY}/bin/:$PATH"
+
+
+ mkdir -m 700 "${TMPWORKINGDIRECTORY}/downloaded"
+ if [ "$(id -u)" = '0' ]; then
+ # relax permissions so that running as root with user switching works
+ umask 022
+ chmod 711 "$TMPWORKINGDIRECTORY"
+ chown _apt:$(id -gn) "${TMPWORKINGDIRECTORY}/downloaded"
+ fi
+
+ TESTDIRECTORY="$(readlink -f "$(dirname $0)")"
+ # Find the newest build directory (sets PROJECT_BINARY_DIR)
+ find_project_binary_dir
+ # allow overriding the default BUILDDIR location
+ SOURCEDIRECTORY="${APT_INTEGRATION_TESTS_SOURCE_DIR:-"${TESTDIRECTORY}/../../"}"
+ BUILDDIRECTORY="${APT_INTEGRATION_TESTS_BUILD_DIR:-"${PROJECT_BINARY_DIR}/cmdline"}"
+ LIBRARYPATH="${APT_INTEGRATION_TESTS_LIBRARY_PATH:-"${BUILDDIRECTORY}/../apt-pkg"}"
+ METHODSDIR="${APT_INTEGRATION_TESTS_METHODS_DIR:-"${BUILDDIRECTORY}/../methods"}"
+ APTHELPERBINDIR="${APT_INTEGRATION_TESTS_LIBEXEC_DIR:-"${BUILDDIRECTORY}"}"
+ APTTESTHELPERSBINDIR="${APT_INTEGRATION_TESTS_HELPERS_BIN_DIR:-"${BUILDDIRECTORY}/../test/interactive-helper"}"
+ APTFTPARCHIVEBINDIR="${APT_INTEGRATION_TESTS_FTPARCHIVE_BIN_DIR:-"${BUILDDIRECTORY}/../ftparchive"}"
+ APTINTERNALSOLVER="${APT_INTEGRATION_TESTS_INTERNAL_SOLVER:-"${BUILDDIRECTORY}/solvers/apt"}"
+ APTDUMPSOLVER="${APT_INTEGRATION_TESTS_DUMP_SOLVER:-"${BUILDDIRECTORY}/solvers/dump"}"
+ APTINTERNALPLANNER="${APT_INTEGRATION_TESTS_INTERNAL_PLANNER:-"${BUILDDIRECTORY}/planners/apt"}"
+ test -x "${BUILDDIRECTORY}/apt-get" || msgdie "You need to build tree first"
+ # -----
+
+ cd "$TMPWORKINGDIRECTORY"
+ echo "#x-apt-configure-index \"${SOURCEDIRECTORY}/doc/examples/configure-index\";" > aptconfig.conf
+ mkdir rootdir aptarchive keys
+ cd rootdir
+ mkdir -p etc/apt/apt.conf.d etc/apt/sources.list.d etc/apt/trusted.gpg.d etc/apt/preferences.d
+ mkdir -p usr/bin var/cache var/lib var/log var/crash tmp
+ mkdir -p var/lib/dpkg/info var/lib/dpkg/updates var/lib/dpkg/triggers
+ mkdir -p usr/lib/apt/solvers usr/lib/apt/planners
+ touch var/lib/dpkg/available
+ ln -s "${METHODSDIR}" usr/lib/apt/methods
+ ln -s "${APTDUMPSOLVER}" usr/lib/apt/solvers/dump
+ ln -s "${APTDUMPSOLVER}" usr/lib/apt/planners/dump
+ ln -s "${APTINTERNALSOLVER}" usr/lib/apt/solvers/apt
+ ln -s "${APTINTERNALPLANNER}" usr/lib/apt/planners/apt
+ echo "Dir::Bin::Solvers \"${TMPWORKINGDIRECTORY}/rootdir/usr/lib/apt/solvers\";" >> ../aptconfig.conf
+ echo "Dir::Bin::Planners \"${TMPWORKINGDIRECTORY}/rootdir/usr/lib/apt/planners\";" >> ../aptconfig.conf
+ # use the autoremove from the BUILDDIRECTORY if its there, otherwise
+ # system
+ if [ -z "${APT_INTEGRATION_TESTS_SOURCE_DIR}" ]; then
+ ln -s "${SOURCEDIRECTORY}/debian/apt.conf.autoremove" etc/apt/apt.conf.d/01autoremove
+ else
+ ln -s /etc/apt/apt.conf.d/01autoremove etc/apt/apt.conf.d/01autoremove
+ fi
+ cd ..
+ local BASENAME="${0##*/}"
+ local PACKAGESFILE="Packages-${BASENAME#*-}"
+ if [ -f "${TESTDIRECTORY}/${PACKAGESFILE}" ]; then
+ cp "${TESTDIRECTORY}/${PACKAGESFILE}" aptarchive/Packages
+ fi
+ local SOURCESSFILE="Sources-${BASENAME#*-}"
+ if [ -f "${TESTDIRECTORY}/${SOURCESSFILE}" ]; then
+ cp "${TESTDIRECTORY}/${SOURCESSFILE}" aptarchive/Sources
+ fi
+ find "$TESTDIRECTORY" \( -name '*.pub' -o -name '*.sec' \) -exec cp '{}' keys/ \;
+ chmod 644 keys/*
+ ln -s "${TMPWORKINGDIRECTORY}/keys/joesixpack.pub" rootdir/etc/apt/trusted.gpg.d/joesixpack.gpg
+
+ echo "Dir \"${TMPWORKINGDIRECTORY}/rootdir\";" >> aptconfig.conf
+ echo "Dir::Etc \"etc\";" >> aptconfig.conf
+ echo "Dir::State \"var/lib/apt\";" >> aptconfig.conf
+ echo "Dir::Cache \"var/cache/apt\";" >> aptconfig.conf
+ echo "Dir::Etc \"etc/apt\";" >> aptconfig.conf
+ echo "Dir::Log \"var/log/apt\";" >> aptconfig.conf
+ echo "APT::Get::Show-User-Simulation-Note \"false\";" >> aptconfig.conf
+ echo "Dir::Bin::Methods \"${TMPWORKINGDIRECTORY}/rootdir/usr/lib/apt/methods\";" >> aptconfig.conf
+ # either store apt-key were we can access it, even if we run it as a different user
+ #cp "${BUILDDIRECTORY}/apt-key" "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/"
+ #chmod o+rx "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/apt-key"
+ #echo "Dir::Bin::apt-key \"${TMPWORKINGDIRECTORY}/rootdir/usr/bin/apt-key\";" >> aptconfig.conf
+ # destroys coverage reporting though, so we disable changing user for the calling gpgv
+ echo "Dir::Bin::apt-key \"${BUILDDIRECTORY}/apt-key\";" >> aptconfig.conf
+ if [ "$(id -u)" = '0' ]; then
+ echo 'Binary::gpgv::APT::Sandbox::User "root";' >> aptconfig.conf
+ # same for the solver executables
+ echo 'APT::Solver::RunAsUser "root";' >> aptconfig.conf
+ echo 'APT::Planner::RunAsUser "root";' >> aptconfig.conf
+ fi
+
+ cat > "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" <<EOF
+#!/bin/sh
+set -e
+if [ -r '${TMPWORKINGDIRECTORY}/noopchroot.so' ]; then
+ if [ -n "\$LD_LIBRARY_PATH" ]; then
+ export LD_LIBRARY_PATH='${TMPWORKINGDIRECTORY}:'"\${LD_LIBRARY_PATH}"
+ else
+ export LD_LIBRARY_PATH='${TMPWORKINGDIRECTORY}'
+ fi
+ if [ -n "\$LD_PRELOAD" ]; then
+ export LD_PRELOAD="noopchroot.so \${LD_PRELOAD}"
+ else
+ export LD_PRELOAD="noopchroot.so"
+ fi
+fi
+EOF
+ cp "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg"
+ cat >> "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" <<EOF
+exec fakeroot '${DPKG:-dpkg}' --root='${TMPWORKINGDIRECTORY}/rootdir' \\
+ --admindir="${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg" \\
+ --log='${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log' \\
+ --force-not-root --force-bad-path "\$@"
+EOF
+ cat >> "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg" <<EOF
+exec fakeroot gdb --quiet -ex run '${DPKG:-dpkg}' --args '${DPKG:-dpkg}' --root='${TMPWORKINGDIRECTORY}/rootdir' \\
+ --admindir="${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg" \\
+ --log='${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log' \\
+ --force-not-root --force-bad-path "\$@"
+EOF
+ chmod +x "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg"
+ echo "Dir::Bin::dpkg \"${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg\";" > rootdir/etc/apt/apt.conf.d/99dpkg
+
+ {
+ if ! command dpkg --assert-multi-arch >/dev/null 2>&1; then
+ echo "DPKG::options:: \"--force-architecture\";" # Added to test multiarch before dpkg is ready for it…
+ fi
+ echo 'quiet "0";'
+ echo 'quiet::NoUpdate "true";'
+ echo 'quiet::NoStatistic "true";'
+ # too distracting for users, but helpful to detect changes
+ echo 'Acquire::Progress::Ignore::ShowErrorText "true";'
+ echo 'Acquire::Progress::Diffpercent "true";'
+ # in testcases, it can appear as if localhost has a rotation setup,
+ # hide this as we can't really deal with it properly
+ echo 'Acquire::Failure::ShowIP "false";'
+ # randomess and tests don't play well together
+ echo 'Acquire::IndexTargets::Randomized "false";'
+ # fakeroot can't fake everything, so disabled in production but good for tests
+ echo 'APT::Sandbox::Verify "true";'
+ } >> aptconfig.conf
+
+ cp "${TESTDIRECTORY}/apt.pem" "${TMPWORKINGDIRECTORY}/rootdir/etc/webserver.pem"
+ if [ "$(id -u)" = '0' ]; then
+ chown _apt:$(id -gn) "${TMPWORKINGDIRECTORY}/rootdir/etc/webserver.pem"
+ fi
+ echo "Acquire::https::CaInfo \"${TMPWORKINGDIRECTORY}/rootdir/etc/webserver.pem\";" > rootdir/etc/apt/apt.conf.d/99https
+ echo "Apt::Cmd::Disable-Script-Warning \"1\";" > rootdir/etc/apt/apt.conf.d/apt-binary
+ export APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=no
+ echo 'Acquire::Connect::AddrConfig "false";' > rootdir/etc/apt/apt.conf.d/connect-addrconfig
+
+ configcompression '.' 'gz' #'bz2' 'lzma' 'xz'
+ confighashes 'SHA256' # these are tests, not security best-practices
+
+ # create some files in /tmp and look at user/group to get what this means
+ TEST_DEFAULT_USER="$(id -un)"
+ touch "${TMPWORKINGDIRECTORY}/test-file"
+ TEST_DEFAULT_GROUP=$(stat --format '%G' "${TMPWORKINGDIRECTORY}/test-file")
+
+ # cleanup the environment a bit
+ # prefer our apt binaries over the system apt binaries
+ export PATH="${BUILDDIRECTORY}:${PATH}:/usr/local/sbin:/usr/sbin:/sbin"
+ export LC_ALL=C
+ unset LANGUAGE APT_CONFIG
+ unset GREP_OPTIONS DEB_BUILD_PROFILES
+ unset http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy
+
+ # If gpgv supports --weak-digest, pass it to make sure we can disable SHA1
+ if aptkey verify --weak-digest SHA1 --help 2>/dev/null >/dev/null; then
+ echo 'Acquire::gpgv::Options { "--weak-digest"; "sha1"; };' > rootdir/etc/apt/apt.conf.d/no-sha1
+ fi
+
+ # most tests just need one signed Release file, not both
+ export APT_DONT_SIGN='Release.gpg'
+
+ if [ -r "${TESTDIRECTORY}/extra-environment" ]; then
+ . "${TESTDIRECTORY}/extra-environment"
+ fi
+
+ msgdone "info"
+}
+
+getarchitecture() {
+ if [ "$1" = "native" -o -z "$1" ]; then
+ eval `aptconfig shell ARCH APT::Architecture`
+ if [ -n "$ARCH" ]; then
+ echo $ARCH
+ else
+ dpkg --print-architecture
+ fi
+ else
+ echo $1
+ fi
+}
+
+getarchitectures() {
+ aptconfig dump --no-empty --format '%v%n' APT::Architecture APT::Architectures | sort -u | tr '\n' ' '
+}
+
+getarchitecturesfromcommalist() {
+ echo "$1" | sed -e 's#,#\n#g' | sed -e "s/^native\$/$(getarchitecture 'native')/"
+}
+
+configarchitecture() {
+ {
+ echo "APT::Architecture \"$(getarchitecture $1)\";"
+ while [ -n "$1" ]; do
+ echo "APT::Architectures:: \"$(getarchitecture $1)\";"
+ shift
+ done
+ } >rootdir/etc/apt/apt.conf.d/01multiarch.conf
+ configdpkg
+}
+
+configdpkg() {
+ if [ ! -e rootdir/var/lib/dpkg/status ]; then
+ local BASENAME="${0##*/}"
+ local STATUSFILE="status-${BASENAME#*-}"
+ if [ -f "${TESTDIRECTORY}/${STATUSFILE}" ]; then
+ cp "${TESTDIRECTORY}/${STATUSFILE}" rootdir/var/lib/dpkg/status
+ # Add an empty line to the end if there is none
+ if tail -1 rootdir/var/lib/dpkg/status | grep -q .; then
+ echo >> rootdir/var/lib/dpkg/status
+ fi
+ else
+ echo -n > rootdir/var/lib/dpkg/status
+ fi
+ fi
+ rm -f rootdir/etc/apt/apt.conf.d/00foreigndpkg
+ # make sure dpkg can detect itself as capable of it
+ if [ "0" = "$(dpkg -l dpkg 2> /dev/null | grep '^i' | wc -l)" ]; then
+ # dpkg doesn't really check the version as long as it is fully installed,
+ # but just to be sure we choose one above the required version
+ insertinstalledpackage 'dpkg' "all" '1.16.2+fake'
+ fi
+ if dpkg --assert-multi-arch >/dev/null 2>&1 ; then
+ local ARCHS="$(getarchitectures)"
+ local DPKGARCH="$(dpkg --print-architecture)"
+ # this ensures that even if multi-arch isn't active in the view
+ # of apt, given that dpkg can't be told which arch is native
+ # the arch apt treats as native might be foreign for dpkg
+ for ARCH in ${ARCHS}; do
+ if [ "${ARCH}" != "${DPKGARCH}" ]; then
+ if ! dpkg --add-architecture ${ARCH} >/dev/null 2>&1; then
+ # old-style used e.g. in Ubuntu-P – and as it seems travis
+ echo "DPKG::options:: \"--foreign-architecture\";" >> rootdir/etc/apt/apt.conf.d/00foreigndpkg
+ echo "DPKG::options:: \"${ARCH}\";" >> rootdir/etc/apt/apt.conf.d/00foreigndpkg
+ fi
+ fi
+ done
+ fi
+}
+
+configdpkgnoopchroot() {
+ # create a library to noop chroot() and rewrite maintainer script executions
+ # via execvp() as used by dpkg as we don't want our rootdir to be a fullblown
+ # chroot directory dpkg could chroot into to execute the maintainer scripts
+ msgtest 'Building library to preload to make maintainerscript work in' 'dpkg'
+ cat > noopchroot.c << EOF
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <dlfcn.h>
+
+static char * chrootdir = NULL;
+
+int chroot(const char *path) {
+ printf("WARNING: CHROOTing to %s was ignored!\n", path);
+ free(chrootdir);
+ chrootdir = strdup(path);
+ return 0;
+}
+int execvp(const char *file, char *const argv[]) {
+ static int (*func_execvp) (const char *, char * const []) = NULL;
+ if (func_execvp == NULL)
+ func_execvp = (int (*) (const char *, char * const [])) dlsym(RTLD_NEXT, "execvp");
+ if (chrootdir == NULL || strncmp(file, "/var/lib/dpkg/", strlen("/var/lib/dpkg/")) != 0)
+ return func_execvp(file, argv);
+ printf("REWRITE execvp call %s into %s\n", file, chrootdir);
+ char *newfile;
+ if (asprintf(&newfile, "%s%s", chrootdir, file) == -1) {
+ perror("asprintf");
+ return -1;
+ }
+ char const * const baseadmindir = "/var/lib/dpkg";
+ char *admindir;
+ if (asprintf(&admindir, "%s%s", chrootdir, baseadmindir) == -1) {
+ perror("asprintf");
+ return -1;
+ }
+ setenv("DPKG_ADMINDIR", admindir, 1);
+ return func_execvp(newfile, argv);
+}
+EOF
+ if cc -ldl 2>&1 | grep -q dl; then
+ testempty --nomsg cc -Wall -Wextra -fPIC -shared -o noopchroot.so noopchroot.c
+ else
+ testempty --nomsg cc -Wall -Wextra -fPIC -shared -o noopchroot.so noopchroot.c -ldl
+ fi
+}
+configcompression() {
+ if [ "$1" = 'ALL' ]; then
+ configcompression '.' $(aptconfig dump APT::Compressor --format '%t %v%n' | sed -n 's#^Extension \.\(.*\)$#\1#p')
+ return
+ fi
+ local CMD='apthelper cat-file -C'
+ while [ -n "$1" ]; do
+ case "$1" in
+ '.') printf ".\t.\tcat\n";;
+ 'gz') printf "gzip\tgz\t$CMD $1\n";;
+ 'bz2') printf "bzip2\tbz2\t$CMD $1\n";;
+ *) printf "$1\t$1\t$CMD $1\n";;
+ esac
+ shift
+ done > "${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf"
+}
+confighashes() {
+ {
+ echo 'APT::FTPArchive {'
+ {
+ while [ -n "$1" ]; do
+ printf "$1" | tr 'a-z' 'A-Z'
+ printf "\t\"true\";\n"
+ shift
+ done
+ for h in 'MD5' 'SHA1' 'SHA256' 'SHA512'; do
+ printf "$h\t\"false\";\n"
+ done
+ } | awk '!x[$1]++'
+ echo '};'
+ } >> "${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/ftparchive-hashes.conf"
+}
+forcecompressor() {
+ COMPRESSOR="$1"
+ COMPRESS="$1"
+ COMPRESSOR_CMD="apthelper cat-file -C $1"
+ case $COMPRESSOR in
+ gzip) COMPRESS='gz';;
+ bzip2) COMPRESS='bz2';;
+ esac
+ local CONFFILE="${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/00force-compressor"
+ echo "Acquire::CompressionTypes::Order { \"${COMPRESS}\"; };
+Dir::Bin::uncompressed \"/does/not/exist\";" > "$CONFFILE"
+ for COMP in $(aptconfig dump 'APT::Compressor' --format '%f%n' | cut -d':' -f 5 | uniq); do
+ if [ -z "$COMP" -o "$COMP" = '.' -o "$COMP" = "$COMPRESSOR" ]; then continue; fi
+ echo "Dir::Bin::${COMP} \"/does/not/exist\";" >> "$CONFFILE"
+ echo "APT::Compressor::${COMP}::Name \"${COMP}-disabled\";" >> "$CONFFILE"
+ done
+}
+
+_setupsimplenativepackage() {
+ local NAME="$1"
+ local ARCH="$2"
+ local VERSION="$3"
+ local RELEASE="${4:-unstable}"
+ local DEPENDENCIES="$5"
+ local DESCRIPTION="${6:-an autogenerated dummy ${NAME}=${VERSION}/${RELEASE}
+ If you find such a package installed on your system,
+ something went horribly wrong! They are autogenerated
+ und used only by testcases and serve no other purpose…}"
+
+ local SECTION="${7:-others}"
+ local PRIORITY="${8:-optional}"
+ local FILE_TREE="$9"
+ local COMPRESS_TYPE="${10:-gzip}"
+ local DISTSECTION
+ if [ "$SECTION" = "${SECTION#*/}" ]; then
+ DISTSECTION="main"
+ else
+ DISTSECTION="${SECTION%/*}"
+ fi
+ local BUILDDIR="${TMPWORKINGDIRECTORY}/incoming/${NAME}-${VERSION}"
+
+ mkdir -p "$BUILDDIR/debian/source"
+ echo "* most suckless software product ever" > "${BUILDDIR}/FEATURES"
+ echo "#!/bin/sh
+echo '$NAME says \"Hello!\"'" > "${BUILDDIR}/${NAME}"
+
+ echo "Copyleft by Joe Sixpack $(date -u +%Y)" > "${BUILDDIR}/debian/copyright"
+ echo "$NAME ($VERSION) $RELEASE; urgency=low
+
+ * Initial release
+
+ -- Joe Sixpack <joe@example.org> $(date -u -R)" > "${BUILDDIR}/debian/changelog"
+ {
+ echo "Source: $NAME
+Priority: $PRIORITY
+Maintainer: Joe Sixpack <joe@example.org>
+Standards-Version: 3.9.3"
+ if [ "$SECTION" != '<none>' ]; then
+ echo "Section: $SECTION"
+ fi
+ local BUILDDEPS="$(printf "%b\n" "$DEPENDENCIES" | grep '^Build-')"
+ test -z "$BUILDDEPS" || echo "$BUILDDEPS"
+ echo "
+Package: $NAME"
+
+ if [ "$ARCH" = 'all' ]; then
+ echo "Architecture: all"
+ else
+ echo "Architecture: any"
+ fi
+ local DEPS="$(printf "%b\n" "$DEPENDENCIES" | grep -v '^Build-')"
+ test -z "$DEPS" || echo "$DEPS"
+ printf "%b\n" "Description: $DESCRIPTION"
+ } > "${BUILDDIR}/debian/control"
+
+ echo '3.0 (native)' > "${BUILDDIR}/debian/source/format"
+}
+
+make_tiny_rules() {
+ local OUT="$1"
+ if command -v gmake >/dev/null 2>&1; then
+ [ -e ${TMPWORKINGDIRECTORY}/bin/make ] || ln -s $(command -v gmake) ${TMPWORKINGDIRECTORY}/bin/make
+ echo "#!${TMPWORKINGDIRECTORY}/bin/make -f" > "$OUT"
+ else
+ echo '#!/usr/bin/make -f' > "$OUT"
+ fi
+ echo '%:' >> "$OUT"
+ echo ' dh $@' >> "$OUT"
+}
+
+setupsimplenativepackage() {
+ _setupsimplenativepackage "$@"
+ local NAME="$1"
+ local VERSION="$3"
+ local BUILDDIR="${TMPWORKINGDIRECTORY}/incoming/${NAME}-${VERSION}"
+ test -e "${BUILDDIR}/debian/compat" || echo '7' > "${BUILDDIR}/debian/compat"
+ test -e "${BUILDDIR}/debian/rules" || make_tiny_rules "${BUILDDIR}/debian/rules"
+}
+
+buildsimplenativepackage() {
+ local NAME="$1"
+ local ARCH="$2"
+ local VERSION="$3"
+ local RELEASE="${4:-unstable}"
+ local DEPENDENCIES="$5"
+ local DESCRIPTION="$6"
+ local SECTION="${7:-others}"
+ local PRIORITY="${8:-optional}"
+ local FILE_TREE="$9"
+ local COMPRESS_TYPE="${10:-gzip}"
+ local DISTSECTION
+ if [ "$SECTION" = "${SECTION#*/}" ]; then
+ DISTSECTION="main"
+ else
+ DISTSECTION="${SECTION%/*}"
+ fi
+ local BUILDDIR="${TMPWORKINGDIRECTORY}/incoming/${NAME}-${VERSION}"
+ msgtest "Build source package in version ${VERSION} for ${RELEASE} in ${DISTSECTION}" "$NAME"
+ _setupsimplenativepackage "$@"
+ cd "${BUILDDIR}/.."
+ testsuccess --nomsg dpkg-source -b ${NAME}-${VERSION}
+ cd - >/dev/null
+ sed -n 's#^dpkg-source: info: building [^ ]\+ in ##p' "${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess.output" \
+ | while read SRC; do
+ echo "pool/${SRC}" >> "${BUILDDIR}/../${RELEASE}.${DISTSECTION}.srclist"
+# if expr match "${SRC}" '.*\.dsc' >/dev/null 2>&1; then
+# aptkey --keyring ./keys/joesixpack.pub --secret-keyring ./keys/joesixpack.sec --quiet --readonly \
+# adv --yes --default-key 'Joe Sixpack' \
+# --clearsign -o "${BUILDDIR}/../${SRC}.sign" "${BUILDDIR}/../$SRC"
+# mv "${BUILDDIR}/../${SRC}.sign" "${BUILDDIR}/../$SRC"
+# fi
+ done
+
+ for arch in $(getarchitecturesfromcommalist "$ARCH"); do
+ msgtest "Build binary package for ${RELEASE} in ${SECTION}" "$NAME"
+ rm -rf "${BUILDDIR}/debian/tmp"
+ mkdir -p "${BUILDDIR}/debian/tmp/DEBIAN" "${BUILDDIR}/debian/tmp/usr/share/doc/${NAME}" "${BUILDDIR}/debian/tmp/usr/bin"
+ cp "${BUILDDIR}/debian/copyright" "${BUILDDIR}/debian/changelog" "${BUILDDIR}/FEATURES" "${BUILDDIR}/debian/tmp/usr/share/doc/${NAME}"
+ cp "${BUILDDIR}/${NAME}" "${BUILDDIR}/debian/tmp/usr/bin/${NAME}-${arch}"
+ if [ -n "$FILE_TREE" ]; then
+ cp -ar "$FILE_TREE" "${BUILDDIR}/debian/tmp"
+ fi
+
+ (cd "${BUILDDIR}"; dpkg-gencontrol -DArchitecture=$arch)
+ (cd "${BUILDDIR}/debian/tmp"; md5sum $(find usr/ -type f) > DEBIAN/md5sums)
+ local LOG="${BUILDDIR}/../${NAME}_${VERSION}_${arch}.dpkg-deb.log"
+ # ensure the right permissions as dpkg-deb insists
+ chmod 755 "${BUILDDIR}/debian/tmp/DEBIAN"
+ testsuccess --nomsg dpkg-deb -Z${COMPRESS_TYPE} --build "${BUILDDIR}/debian/tmp" "${BUILDDIR}/.."
+ echo "pool/${NAME}_${VERSION}_${arch}.deb" >> "${BUILDDIR}/../${RELEASE}.${DISTSECTION}.pkglist"
+ done
+
+ local NM
+ if [ "$(echo "$NAME" | cut -c 1-3)" = 'lib' ]; then
+ NM="$(echo "$NAME" | cut -c 1-4)"
+ else
+ NM="$(echo "$NAME" | cut -c 1)"
+ fi
+ local CHANGEPATH="${BUILDDIR}/../${DISTSECTION}/${NM}/${NAME}/${NAME}_${VERSION}"
+ mkdir -p "$CHANGEPATH"
+ cp "${BUILDDIR}/debian/changelog" "$CHANGEPATH"
+ rm -rf "${BUILDDIR}"
+ msgdone "info"
+}
+
+buildpackage() {
+ local BUILDDIR=$1
+ local RELEASE=$2
+ local SECTION=$3
+ local ARCH=$(getarchitecture $4)
+ local PKGNAME="$(echo "$BUILDDIR" | grep -o '[^/]*$')"
+ local BUILDLOG="$(readlink -f "${BUILDDIR}/../${PKGNAME}_${RELEASE}_${SECTION}.dpkg-bp.log")"
+ msgtest "Build package for ${RELEASE} in ${SECTION}" "$PKGNAME"
+ cd "$BUILDDIR"
+ if [ "$ARCH" = "all" ]; then
+ ARCH="$(dpkg-architecture -qDEB_HOST_ARCH 2> /dev/null)"
+ fi
+ testsuccess --nomsg dpkg-buildpackage -uc -us -a$ARCH -d
+ cp "${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess.output" "$BUILDLOG"
+ local PKGS="$(grep '^dpkg-deb: building package' "$BUILDLOG" | cut -d'/' -f 2 | sed -e "s#'\.##")"
+ local SRCS="$(grep '^dpkg-source: info: building' "$BUILDLOG" | grep -o '[a-z0-9._+~-]*$')"
+ cd - > /dev/null
+ for PKG in $PKGS; do
+ echo "pool/${PKG}" >> "${TMPWORKINGDIRECTORY}/incoming/${RELEASE}.${SECTION}.pkglist"
+ done
+ for SRC in $SRCS; do
+ echo "pool/${SRC}" >> "${TMPWORKINGDIRECTORY}/incoming/${RELEASE}.${SECTION}.srclist"
+ done
+}
+
+buildaptarchive() {
+ if [ -d incoming ]; then
+ buildaptarchivefromincoming "$@"
+ else
+ buildaptarchivefromfiles "$@"
+ fi
+}
+
+createaptftparchiveconfig() {
+ local COMPRESSORS="$(cut -d' ' -f 1 "${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf" | tr '\n' ' ')"
+ local COMPRESSORS="${COMPRESSORS%* }"
+ local ARCHS="$(getarchitectures)"
+ cat > ftparchive.conf <<EOF
+Dir {
+ ArchiveDir "$(readlink -f .)";
+ CacheDir "$(readlink -f ..)";
+ FileListDir "$(readlink -f pool/)";
+};
+Default {
+ Packages::Compress "$COMPRESSORS";
+ Sources::Compress "$COMPRESSORS";
+ Contents::Compress "$COMPRESSORS";
+ Translation::Compress "$COMPRESSORS";
+ LongDescription "false";
+};
+TreeDefault {
+ Directory "pool/";
+ SrcDirectory "pool/";
+};
+EOF
+ for DIST in $(find ./pool/ -maxdepth 1 -name '*.pkglist' -type f | cut -d'/' -f 3 | cut -d'.' -f 1 | sort | uniq); do
+ cat <<EOF
+tree "dists/$DIST" {
+ Architectures "$ARCHS all source";
+ FileList "${DIST}.\$(SECTION).pkglist";
+ SourceFileList "${DIST}.\$(SECTION).srclist";
+ Sections "$(find ./pool/ -maxdepth 1 -name "${DIST}.*.pkglist" -type f | cut -d'/' -f 3 | cut -d'.' -f 2 | sort | uniq | tr '\n' ' ')";
+};
+EOF
+ done >> ftparchive.conf
+}
+
+buildaptftparchivedirectorystructure() {
+ local DISTS="$(grep -i '^tree ' ftparchive.conf | cut -d'/' -f 2 | sed -e 's#".*##')"
+ for DIST in $DISTS; do
+ local SECTIONS="$(grep -i -A 5 "dists/$DIST" ftparchive.conf | grep -i 'Sections' | cut -d'"' -f 2)"
+ for SECTION in $SECTIONS; do
+ local ARCHS="$(grep -A 5 "dists/$DIST" ftparchive.conf | grep Architectures | cut -d'"' -f 2 | sed -e 's#source##')"
+ for ARCH in $ARCHS; do
+ mkdir -p "dists/${DIST}/${SECTION}/binary-${ARCH}"
+ done
+ mkdir -p "dists/${DIST}/${SECTION}/source"
+ mkdir -p "dists/${DIST}/${SECTION}/i18n"
+ done
+ done
+}
+
+insertpackage() {
+ local RELEASES="$1"
+ local NAME="$2"
+ local ARCH="$3"
+ local VERSION="$4"
+ local DEPENDENCIES="$5"
+ local PRIORITY="${6:-optional}"
+ local DESCRIPTION="${7:-an autogenerated dummy ${NAME}=${VERSION}/${RELEASES}
+ If you find such a package installed on your system,
+ something went horribly wrong! They are autogenerated
+ und used only by testcases and serve no other purpose…}"
+ local ARCHS=""
+ for RELEASE in $(printf '%s' "$RELEASES" | tr ',' '\n'); do
+ if [ "$RELEASE" = 'installed' ]; then
+ insertinstalledpackage "$2" "$3" "$4" "$5" "$6" "$7"
+ continue
+ fi
+ for arch in $(getarchitecturesfromcommalist "$ARCH"); do
+ if [ "$arch" = 'none' ]; then
+ ARCHS="$(getarchitectures)"
+ else
+ ARCHS="$arch"
+ fi
+ for BUILDARCH in $ARCHS; do
+ local PPATH="aptarchive/dists/${RELEASE}/main/binary-${BUILDARCH}"
+ mkdir -p "$PPATH"
+ {
+ echo "Package: $NAME
+Priority: $PRIORITY
+Section: other
+Installed-Size: 42
+Maintainer: Joe Sixpack <joe@example.org>"
+ test "$arch" = 'none' || echo "Architecture: $arch"
+ echo "Version: $VERSION
+Filename: pool/main/${NAME}/${NAME}_${VERSION}_${arch}.deb"
+ test -z "$DEPENDENCIES" || printf "%b\n" "$DEPENDENCIES"
+ echo "Description: $(printf '%s' "$DESCRIPTION" | head -n 1)"
+ echo "Description-md5: $(printf '%s' "$DESCRIPTION" | md5sum | cut -d' ' -f 1)"
+ echo "SHA256: 0000000000000000000000000000000000000000000000000000000000000000"
+ echo
+ } >> "${PPATH}/Packages"
+ done
+ done
+ mkdir -p "aptarchive/dists/${RELEASE}/main/source" "aptarchive/dists/${RELEASE}/main/i18n"
+ touch "aptarchive/dists/${RELEASE}/main/source/Sources"
+ echo "Package: $NAME
+Description-md5: $(printf '%s' "$DESCRIPTION" | md5sum | cut -d' ' -f 1)
+Description-en: $DESCRIPTION
+" >> "aptarchive/dists/${RELEASE}/main/i18n/Translation-en"
+ done
+}
+
+insertsource() {
+ local RELEASES="$1"
+ local NAME="$2"
+ local ARCH="$3"
+ local VERSION="$4"
+ local DEPENDENCIES="$5"
+ local BINARY="${6:-$NAME}"
+ local ARCHS=""
+ for RELEASE in $(printf '%s' "$RELEASES" | tr ',' '\n'); do
+ local SPATH="aptarchive/dists/${RELEASE}/main/source"
+ mkdir -p $SPATH
+ local FILE="${SPATH}/Sources"
+ local DSCFILE="${NAME}_${VERSION}.dsc"
+ local TARFILE="${NAME}_${VERSION}.tar.gz"
+ echo "Package: $NAME
+Binary: $BINARY
+Version: $VERSION
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: $ARCH" >> $FILE
+ test -z "$DEPENDENCIES" || printf "%b\n" "$DEPENDENCIES" >> "$FILE"
+ echo "Files:
+ $(echo -n "$DSCFILE" | md5sum | cut -d' ' -f 1) $(echo -n "$DSCFILE" | wc -c) "$DSCFILE"
+ $(echo -n "$TARFILE" | md5sum | cut -d' ' -f 1) $(echo -n "$TARFILE" | wc -c) "$TARFILE"
+Checksums-Sha256:
+ $(echo -n "$DSCFILE" | sha256sum | cut -d' ' -f 1) $(echo -n "$DSCFILE" | wc -c) "$DSCFILE"
+ $(echo -n "$TARFILE" | sha256sum | cut -d' ' -f 1) $(echo -n "$TARFILE" | wc -c) "$TARFILE"
+" >> "$FILE"
+ done
+}
+
+insertinstalledpackage() {
+ local NAME="$1"
+ local ARCH="$2"
+ local VERSION="$3"
+ local DEPENDENCIES="$4"
+ local PRIORITY="${5:-optional}"
+ local STATUS="${6:-install ok installed}"
+ local DESCRIPTION="${7:-an autogenerated dummy ${NAME}=${VERSION}/installed
+ If you find such a package installed on your system,
+ something went horribly wrong! They are autogenerated
+ und used only by testcases and serve no other purpose…}"
+
+ local FILE='rootdir/var/lib/dpkg/status'
+ local INFO='rootdir/var/lib/dpkg/info'
+ for arch in $(getarchitecturesfromcommalist "$ARCH"); do
+ echo "Package: $NAME
+Status: $STATUS
+Priority: $PRIORITY
+Section: other
+Installed-Size: 42
+Maintainer: Joe Sixpack <joe@example.org>
+Version: $VERSION" >> "$FILE"
+ test "$arch" = 'none' || echo "Architecture: $arch" >> "$FILE"
+ test -z "$DEPENDENCIES" || printf "%b\n" "$DEPENDENCIES" >> "$FILE"
+ printf "%b\n" "Description: $DESCRIPTION" >> "$FILE"
+ echo >> "$FILE"
+ if [ "$(dpkg-query -W --showformat='${Multi-Arch}')" = 'same' ]; then
+ echo -n > "${INFO}/${NAME}:${arch}.list"
+ else
+ echo -n > "${INFO}/${NAME}.list"
+ fi
+ done
+}
+
+
+buildaptarchivefromincoming() {
+ msginfo "Build APT archive for ${CCMD}${0##*/}${CINFO} based on incoming packages…"
+ cd aptarchive
+ [ -e pool ] || ln -s ../incoming pool
+ [ -e ftparchive.conf ] || createaptftparchiveconfig
+ [ -e dists ] || buildaptftparchivedirectorystructure
+ msgninfo "\tGenerate Packages, Sources and Contents files… "
+ testsuccess aptftparchive generate ftparchive.conf
+ cd - > /dev/null
+ msgdone "info"
+ generatereleasefiles "$@"
+}
+
+buildaptarchivefromfiles() {
+ msginfo "Build APT archive for ${CCMD}${0##*/}${CINFO} based on prebuild files…"
+ local DIR='aptarchive'
+ if [ -d "${DIR}/dists" ]; then DIR="${DIR}/dists"; fi
+ find "$DIR" -name 'Packages' -o -name 'Sources' -o -name 'Translation-*' | while read line; do
+ msgninfo "\t${line} file… "
+ compressfile "$line" "$1"
+ msgdone "info"
+ done
+ generatereleasefiles "$@"
+}
+
+compressfile() {
+ while read compressor extension command; do
+ if [ "$compressor" = '.' ]; then
+ if [ -n "$2" ]; then
+ touch -d "$2" "$1"
+ fi
+ continue
+ fi
+ cat "$1" | $command > "${1}.${extension}"
+ if [ -n "$2" ]; then
+ touch -d "$2" "${1}.${extension}"
+ fi
+ done < "${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf"
+}
+
+# can be overridden by testcases for their pleasure
+getcodenamefromsuite() {
+ case "$1" in
+ unstable) echo 'sid';;
+ *) echo -n "$1";;
+ esac
+}
+getreleaseversionfromsuite() { true; }
+getlabelfromsuite() { true; }
+getoriginfromsuite() { true; }
+getarchitecturesfromreleasefile() { echo "all $(getarchitectures)"; }
+getnotautomaticfromsuite() {
+ case "$1" in
+ experimental|experimental2) echo "yes";;
+ esac
+}
+getbutautomaticupgradesfromsuite() { true; }
+
+aptftparchiverelease() {
+ aptftparchive -qq release "$@" | sed -e '/0 Release$/ d' # remove the self reference
+}
+generatereleasefiles() {
+ # $1 is the Date header and $2 is the ValidUntil header to be set
+ # both should be given in notation date/touch can understand
+ local DATE="$1"
+ local VALIDUNTIL="$2"
+ if [ -e aptarchive/dists ]; then
+ msgninfo "\tGenerate Release files for dists… "
+ for dir in $(find ./aptarchive/dists -mindepth 1 -maxdepth 1 -type d); do
+ local ARCHITECTURES="$(getarchitecturesfromreleasefile "$dir")"
+ local SUITE="$(echo "$dir" | cut -d'/' -f 4)"
+ local CODENAME="$(getcodenamefromsuite $SUITE)"
+ local VERSION="$(getreleaseversionfromsuite $SUITE)"
+ local LABEL="$(getlabelfromsuite $SUITE)"
+ local ORIGIN="$(getoriginfromsuite $SUITE)"
+ local NOTAUTOMATIC="$(getnotautomaticfromsuite $SUITE)"
+ local BUTAUTOMATICUPGRADES="$(getbutautomaticupgradesfromsuite $SUITE)"
+ aptftparchiverelease "$dir" \
+ -o APT::FTPArchive::Release::Suite="${SUITE}" \
+ -o APT::FTPArchive::Release::Codename="${CODENAME}" \
+ -o APT::FTPArchive::Release::Architectures="${ARCHITECTURES}" \
+ -o APT::FTPArchive::Release::Label="${LABEL}" \
+ -o APT::FTPArchive::Release::Origin="${ORIGIN}" \
+ -o APT::FTPArchive::Release::Version="${VERSION}" \
+ -o APT::FTPArchive::Release::NotAutomatic="${NOTAUTOMATIC}" \
+ -o APT::FTPArchive::Release::ButAutomaticUpgrades="${BUTAUTOMATICUPGRADES}" \
+ > "$dir/Release"
+ done
+ else
+ msgninfo "\tGenerate Release files for flat… "
+ aptftparchiverelease ./aptarchive > aptarchive/Release
+ fi
+ if [ -n "$DATE" -a "$DATE" != "now" ]; then
+ for release in $(find ./aptarchive -name 'Release'); do
+ sed -i "s/^Date: .*$/Date: $(date -u -d "$DATE" -R)/" "$release"
+ touch -d "$DATE" "$release"
+ done
+ fi
+ if [ -n "$VALIDUNTIL" ]; then
+ sed -i "/^Date: / a\
+Valid-Until: $(date -u -d "$VALIDUNTIL" -R)" $(find ./aptarchive -name 'Release')
+ fi
+ msgdone "info"
+}
+
+setupdistsaptarchive() {
+ local APTARCHIVE="$(readlink -f ./aptarchive | sed 's# #%20#g')"
+ rm -f root/etc/apt/sources.list.d/apt-test-*-deb.list
+ rm -f root/etc/apt/sources.list.d/apt-test-*-deb-src.list
+ for DISTS in $(find ./aptarchive/dists/ -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 4); do
+ SECTIONS=$(find "./aptarchive/dists/${DISTS}/" -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 5 | tr '\n' ' ')
+ msgninfo "\tadd deb and deb-src sources.list lines for ${CCMD}${DISTS} ${SECTIONS}${CINFO}… "
+ echo "deb file://$APTARCHIVE $DISTS $SECTIONS" > "rootdir/etc/apt/sources.list.d/apt-test-${DISTS}-deb.list"
+ echo "deb-src file://$APTARCHIVE $DISTS $SECTIONS" > "rootdir/etc/apt/sources.list.d/apt-test-${DISTS}-deb-src.list"
+ msgdone "info"
+ done
+}
+
+setupflataptarchive() {
+ local APTARCHIVE="$(readlink -f ./aptarchive)"
+ local APTARCHIVEURI="$(readlink -f ./aptarchive | sed 's# #%20#g')"
+ if [ -f "${APTARCHIVE}/Packages" ]; then
+ msgninfo "\tadd deb sources.list line… "
+ echo "deb file://$APTARCHIVEURI /" > 'rootdir/etc/apt/sources.list.d/apt-test-archive-deb.list'
+ msgdone 'info'
+ else
+ rm -f 'rootdir/etc/apt/sources.list.d/apt-test-archive-deb.list'
+ fi
+ if [ -f "${APTARCHIVE}/Sources" ]; then
+ msgninfo "\tadd deb-src sources.list line… "
+ echo "deb-src file://$APTARCHIVEURI /" > 'rootdir/etc/apt/sources.list.d/apt-test-archive-deb-src.list'
+ msgdone 'info'
+ else
+ rm -f 'rootdir/etc/apt/sources.list.d/apt-test-archive-deb-src.list'
+ fi
+}
+
+setupaptarchive() {
+ local NOUPDATE=0
+ if [ "$1" = '--no-update' ]; then
+ NOUPDATE=1
+ shift
+ fi
+ buildaptarchive "$@"
+ if [ -e aptarchive/dists ]; then
+ setupdistsaptarchive
+ else
+ setupflataptarchive
+ fi
+ signreleasefiles 'Joe Sixpack'
+ if [ "1" != "$NOUPDATE" ]; then
+ testsuccess aptget update -o Debug::pkgAcquire::Worker=true -o Debug::Acquire::gpgv=true
+ fi
+}
+
+killgpgagent() {
+ if [ -z "${TMPWORKINGDIRECTORY}" ]; then return; fi
+ local GPGHOME="${TMPWORKINGDIRECTORY}/signinghome"
+ if [ -e "${GPGHOME}" ]; then return; fi
+ # ensure the agent dies quickly as different versions have different suicide heuristics
+ GNUPGHOME="${GPGHOME}" gpgconf --kill gpg-agent >/dev/null 2>&1 || true
+ rm -rf "$GPGHOME"
+}
+dosigning() {
+ local KEY="$1"
+ shift
+ local GPGHOME="${TMPWORKINGDIRECTORY}/signinghome"
+ if [ -n "$APT_TEST_SIGNINGHOME" ]; then
+ GPGHOME="$APT_TEST_SIGNINGHOME"
+ else
+ if [ ! -e "$GPGHOME" ]; then
+ mkdir -p --mode=700 "${GPGHOME}"
+ addtrap 'prefix' 'killgpgagent;'
+ fi
+ fi
+ testsuccess aptkey --quiet --keyring ${KEY}.pub --secret-keyring ${KEY}.sec --readonly \
+ --homedir "${GPGHOME}" adv --batch --yes --digest-algo "${APT_TESTS_DIGEST_ALGO:-SHA512}" \
+ "$@"
+}
+signreleasefiles() {
+ local SIGNERS="${1:-Joe Sixpack}"
+ local REPODIR="${2:-aptarchive}"
+ if [ -n "$1" ]; then shift; fi
+ if [ -n "$1" ]; then shift; fi
+ local KEY="keys/$(echo "$SIGNERS" | tr 'A-Z' 'a-z' | tr -d ' ,')"
+ msgninfo "\tSign archive with $SIGNERS key $KEY… "
+ local REXKEY='keys/rexexpired'
+ local SECEXPIREBAK="${REXKEY}.sec.bak"
+ local PUBEXPIREBAK="${REXKEY}.pub.bak"
+ local SIGUSERS=""
+ while [ -n "${SIGNERS%%,*}" ]; do
+ local SIGNER="${SIGNERS%%,*}"
+ if [ "${SIGNERS}" = "${SIGNER}" ]; then
+ SIGNERS=""
+ fi
+ SIGNERS="${SIGNERS#*,}"
+ # FIXME: This should be the full name, but we can't encode the space properly currently
+ SIGUSERS="${SIGUSERS} -u ${SIGNER#* }"
+ if [ "${SIGNER}" = 'Rex Expired' ]; then
+ # the key is expired, so gpg doesn't allow one to sign with and the --faked-system-time
+ # option doesn't exist anymore (and using faketime would add a new obscure dependency)
+ # therefore we 'temporary' make the key not expired and restore a backup after signing
+ cp "${REXKEY}.sec" "$SECEXPIREBAK"
+ cp "${REXKEY}.pub" "$PUBEXPIREBAK"
+ local SECUNEXPIRED="${REXKEY}.sec.unexpired"
+ local PUBUNEXPIRED="${REXKEY}.pub.unexpired"
+ if [ -f "$SECUNEXPIRED" ] && [ -f "$PUBUNEXPIRED" ]; then
+ cp "$SECUNEXPIRED" "${REXKEY}.sec"
+ cp "$PUBUNEXPIRED" "${REXKEY}.pub"
+ else
+ if ! printf "expire\n1w\nsave\n" | aptkey --quiet --keyring "${REXKEY}.pub" --secret-keyring "${REXKEY}.sec" \
+ --readonly adv --batch --yes --digest-algo "${APT_TESTS_DIGEST_ALGO:-SHA512}" \
+ --default-key "$SIGNER" --command-fd 0 --edit-key "${SIGNER}" >setexpire.gpg 2>&1; then
+ cat setexpire.gpg
+ exit 1
+ fi
+ cp "${REXKEY}.sec" "$SECUNEXPIRED"
+ cp "${REXKEY}.pub" "$PUBUNEXPIRED"
+ fi
+ fi
+ if [ ! -e "${KEY}.pub" ]; then
+ local K="keys/$(echo "$SIGNER" | tr 'A-Z' 'a-z' | tr -d ' ,')"
+ cat "${K}.pub" >> "${KEY}.new.pub"
+ cat "${K}.sec" >> "${KEY}.new.sec"
+ fi
+ done
+ if [ ! -e "${KEY}.pub" ]; then
+ mv "${KEY}.new.pub" "${KEY}.pub"
+ mv "${KEY}.new.sec" "${KEY}.sec"
+ fi
+ for RELEASE in $(find "${REPODIR}/" -name Release); do
+ # we might have set a specific date for the Release file, so copy it
+ local DATE="$(stat --format "%y" "${RELEASE}")"
+ if [ "$APT_DONT_SIGN" = 'Release.gpg' ]; then
+ rm -f "${RELEASE}.gpg"
+ else
+ dosigning "$KEY" "$@" $SIGUSERS --armor --detach-sign --sign --output "${RELEASE}.gpg" "${RELEASE}"
+ touch -d "$DATE" "${RELEASE}.gpg"
+ fi
+ local INRELEASE="${RELEASE%/*}/InRelease"
+ if [ "$APT_DONT_SIGN" = 'InRelease' ]; then
+ rm -f "$INRELEASE"
+ else
+ dosigning "$KEY" "$@" $SIGUSERS --clearsign --output "$INRELEASE" "$RELEASE"
+ touch -d "$DATE" "${INRELEASE}"
+ fi
+ done
+ if [ -f "$SECEXPIREBAK" ] && [ -f "$PUBEXPIREBAK" ]; then
+ mv -f "$SECEXPIREBAK" "${REXKEY}.sec"
+ mv -f "$PUBEXPIREBAK" "${REXKEY}.pub"
+ fi
+ msgdone 'info'
+}
+
+redatereleasefiles() {
+ local DATE="$(date -u -d "$1" -R)"
+ for release in $(find aptarchive/ -name 'Release'); do
+ sed -i "s/^Date: .*$/Date: ${DATE}/" "$release"
+ touch -d "$DATE" "$release"
+ done
+ signreleasefiles "${2:-Joe Sixpack}"
+}
+
+webserverconfig() {
+ local WEBSERVER="${3:-http://localhost:${APTHTTPPORT}}"
+ local NOCHECK=false
+ if [ "$1" = '--no-check' ]; then
+ NOCHECK=true
+ shift
+ fi
+ local DOWNLOG='rootdir/tmp/download-testfile.log'
+ local STATUS='downloaded/webserverconfig.status'
+ rm -f "$STATUS" "$DOWNLOG"
+ # very very basic URI encoding
+ local URI
+ if [ -n "$2" ]; then
+ msgtest "Set webserver config option '${1}' to" "$2"
+ URI="${WEBSERVER}/_config/set/$(echo "${1}" | sed -e 's/\//%2f/g')/$(echo "${2}" | sed -e 's/\//%2f/g')"
+ else
+ msgtest 'Clear webserver config option' "${1}"
+ URI="${WEBSERVER}/_config/clear/$(echo "${1}" | sed -e 's/\//%2f/g')"
+ fi
+ if downloadfile "$URI" "$STATUS" > "$DOWNLOG"; then
+ msgpass
+ else
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/webserverconfig.output"
+ cat "$DOWNLOG" "$STATUS" >"$OUTPUT" 2>&1 || true
+ msgfailoutput '' "$OUTPUT"
+ fi
+ $NOCHECK || testwebserverlaststatuscode '200'
+}
+
+rewritesourceslist() {
+ local APTARCHIVE="file://$(readlink -f "${TMPWORKINGDIRECTORY}/aptarchive" | sed 's# #%20#g')"
+ local APTARCHIVE2="copy://$(readlink -f "${TMPWORKINGDIRECTORY}/aptarchive" | sed 's# #%20#g')"
+ for LIST in $(find rootdir/etc/apt/sources.list.d/ -name 'apt-test-*.list'); do
+ sed -i $LIST -e "s#$APTARCHIVE#${1}#" -e "s#$APTARCHIVE2#${1}#" \
+ -e "s#http://[^@]*@\?localhost:${APTHTTPPORT}/\?#${1}#" \
+ -e "s#https://[^@]*@\?localhost:${APTHTTPSPORT}/\?#${1}#"
+ done
+}
+
+# wait for up to 10s for a pid file to appear to avoid possible race
+# when a helper is started and dosn't write the PID quick enough
+waitforpidfile() {
+ local PIDFILE="$1"
+ for i in $(seq 10); do
+ if test -s "$PIDFILE"; then
+ return 0
+ fi
+ sleep 1
+ done
+ msgdie "waiting for $PIDFILE failed"
+ return 1
+}
+
+changetowebserver() {
+ local REWRITE='no'
+ if [ "$1" != '--no-rewrite' ]; then
+ REWRITE='yes'
+ else
+ shift
+ fi
+ if test -x "${APTTESTHELPERSBINDIR}/aptwebserver"; then
+ cd aptarchive
+ local LOG="webserver.log"
+ if ! aptwebserver --port 0 -o aptwebserver::fork=1 -o aptwebserver::portfile='aptwebserver.port' -o aptwebserver::logfiles="$(readlink -f .)/$LOG" "$@" >$LOG 2>&1 ; then
+ cat "$LOG"
+ false
+ fi
+ waitforpidfile aptwebserver.pid
+ local PID="$(cat aptwebserver.pid)"
+ if [ -z "$PID" ]; then
+ msgdie 'Could not fork aptwebserver successfully'
+ fi
+ addtrap "kill $PID;"
+ waitforpidfile aptwebserver.port
+ APTHTTPPORT="$(cat aptwebserver.port)"
+ if [ -z "$APTHTTPPORT" ]; then
+ msgdie 'Could not get port for aptwebserver successfully'
+ fi
+ cd - > /dev/null
+ else
+ msgdie 'You have to build apt from source to have test/interactive-helper/aptwebserver available for tests requiring a webserver'
+ fi
+ if [ "$REWRTE" != 'yes' ]; then
+ rewritesourceslist "http://localhost:${APTHTTPPORT}/"
+ fi
+}
+
+changetohttpswebserver() {
+ local stunnel4
+ if command -v stunnel4 >/dev/null 2>&1; then
+ stunnel4=stunnel4
+ elif command -v stunnel >/dev/null 2>&1; then
+ stunnel4=stunnel
+ else
+ msgdie 'You need to install stunnel4 for https testcases'
+ fi
+ if [ ! -e "${TMPWORKINGDIRECTORY}/aptarchive/aptwebserver.pid" ]; then
+ changetowebserver --no-rewrite "$@"
+ fi
+ echo "pid = ${TMPWORKINGDIRECTORY}/aptarchive/stunnel.pid
+cert = ${TMPWORKINGDIRECTORY}/rootdir/etc/webserver.pem
+output = /dev/null
+
+[https]
+accept = 0
+connect = $APTHTTPPORT
+" > "${TMPWORKINGDIRECTORY}/stunnel.conf"
+ $stunnel4 "${TMPWORKINGDIRECTORY}/stunnel.conf"
+ waitforpidfile "${TMPWORKINGDIRECTORY}/aptarchive/stunnel.pid"
+ local PID="$(cat "${TMPWORKINGDIRECTORY}/aptarchive/stunnel.pid")"
+ if [ -z "$PID" ]; then
+ msgdie 'Could not fork $stunnel4 successfully'
+ fi
+ addtrap 'prefix' "kill ${PID};"
+ APTHTTPSPORT="$(lsof -i -n | awk "/^$stunnel4 / && \$2 == \"${PID}\" {print \$9; exit; }" | cut -d':' -f 2)"
+ webserverconfig 'aptwebserver::port::https' "$APTHTTPSPORT" "https://localhost:${APTHTTPSPORT}"
+ rewritesourceslist "https://localhost:${APTHTTPSPORT}/"
+}
+
+changetocdrom() {
+ mkdir -p rootdir/media/cdrom/.disk
+ local CD="$(readlink -f rootdir/media/cdrom)"
+ cat > rootdir/etc/apt/apt.conf.d/00cdrom <<EOF
+acquire::cdrom::mount "${CD}";
+acquire::cdrom::"${CD}/"::mount "mv ${CD}-unmounted ${CD}";
+acquire::cdrom::"${CD}/"::umount "mv ${CD} ${CD}-unmounted";
+acquire::cdrom::autodetect 0;
+EOF
+ echo -n "$1" > "${CD}/.disk/info"
+ if [ ! -d aptarchive/dists ]; then
+ msgdie 'Flat file archive cdroms can not be created currently'
+ return 1
+ fi
+ mv aptarchive/dists "$CD"
+ ln -s "$(readlink -f ./incoming)" "$CD/pool"
+ find rootdir/etc/apt/sources.list.d/ -name 'apt-test-*.list' -delete
+ # start with an unmounted disk
+ mv "${CD}" "${CD}-unmounted"
+ # we don't want the disk to be modifiable
+ addtrap 'prefix' "chmod -f -R +w '$(escape_shell "$PWD/rootdir/media/cdrom/dists/")' '$(escape_shell "$PWD/rootdir/media/cdrom-unmounted/dists/")' || true;"
+ chmod -R 555 rootdir/media/cdrom-unmounted/dists
+}
+
+downloadfile() {
+ local PROTO="${1%%:*}"
+ if ! apthelper -o Debug::Acquire::${PROTO}=1 -o Debug::pkgAcquire::Worker=1 \
+ download-file "$1" "$2" "$3" 2>&1 ; then
+ return 1
+ fi
+ # only if the file exists the download was successful
+ if [ -r "$2" ]; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+checkdiff() {
+ local TMPFILE1="${TMPWORKINGDIRECTORY}/rootdir/tmp/checkdiff.1.tmp"
+ local TMPFILE2="${TMPWORKINGDIRECTORY}/rootdir/tmp/checkdiff.2.tmp"
+ touch "$TMPFILE1" "$TMPFILE2"
+ if [ "$1" != '-' ]; then
+ sed -e '/^profiling:/ d' < "$1" >"$TMPFILE1"
+ else
+ TMPFILE1='-'
+ fi
+ if [ "$2" != '-' ]; then
+ sed -e '/^profiling:/ d' < "$2" >"$TMPFILE2"
+ else
+ TMPFILE2='-'
+ fi
+ local DIFFTEXT="$(command diff -u "$TMPFILE1" "$TMPFILE2" 2>&1 | sed -e '/^---/ d' -e '/^+++/ d' -e '/^@@/ d')"
+ if [ -n "$DIFFTEXT" ]; then
+ echo >&2
+ echo >&2 "$DIFFTEXT"
+ return 1
+ else
+ return 0
+ fi
+}
+
+testoutputequal() {
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testoutputequal.output"
+ local COMPAREFILE="$1"
+ shift
+ if "$@" 2>&1 | checkdiff "$COMPAREFILE" - >"$OUTPUT" 2>&1; then
+ msgpass
+ else
+ echo "=== content of file we compared with (${COMPAREFILE}) ===" >>"${OUTPUT}"
+ cat "$COMPAREFILE" >>"${OUTPUT}"
+ msgfailoutput '' "$OUTPUT" "$@"
+ fi
+}
+
+testfileequal() {
+ msggroup 'testfileequal'
+ local MSG='Test for correctness of file'
+ if [ "$1" = '--nomsg' ]; then
+ MSG=''
+ shift
+ fi
+ local FILE="$1"
+ shift
+ if [ -n "$MSG" ]; then
+ msgtest "$MSG" "$FILE"
+ fi
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testfileequal.output"
+ if [ -z "$*" ]; then
+ testoutputequal "$FILE" echo -n ''
+ else
+ testoutputequal "$FILE" echo "$*"
+ fi
+ msggroup
+}
+
+testempty() {
+ msggroup 'testempty'
+ if [ "$1" = '--nomsg' ]; then
+ shift
+ else
+ msgtest "Test for no output of" "$*"
+ fi
+ local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testempty.comparefile"
+ if "$@" >"$COMPAREFILE" 2>&1 && test ! -s "$COMPAREFILE"; then
+ msgpass
+ else
+ msgfailoutput '' "$COMPAREFILE" "$@"
+ fi
+ aptautotest 'testempty' "$@"
+ msggroup
+}
+testnotempty() {
+ msggroup 'testnotempty'
+ msgtest "Test for some output of" "$*"
+ local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testnotempty.comparefile"
+ if ("$@" >"$COMPAREFILE" 2>&1 || true) && test -s "$COMPAREFILE"; then
+ msgpass
+ else
+ msgfailoutput '' "$COMPAREFILE" "$@"
+ fi
+ aptautotest 'testnotempty' "$@"
+ msggroup
+}
+
+testequal() {
+ msggroup 'testequal'
+ local MSG='Test of equality of'
+ if [ "$1" = '--nomsg' ]; then
+ MSG=''
+ shift
+ fi
+
+ local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testequal.comparefile"
+ echo "$1" > "$COMPAREFILE"
+ shift
+
+ if [ -n "$MSG" ]; then
+ msgtest "$MSG" "$*"
+ fi
+ testoutputequal "$COMPAREFILE" "$@"
+ aptautotest 'testequal' "$@"
+ msggroup
+}
+
+testequalor2() {
+ msggroup 'testequalor2'
+ local COMPAREFILE1="${TMPWORKINGDIRECTORY}/rootdir/tmp/testequalor2.comparefile1"
+ local COMPAREFILE2="${TMPWORKINGDIRECTORY}/rootdir/tmp/testequalor2.comparefile2"
+ local COMPAREAGAINST="${TMPWORKINGDIRECTORY}/rootdir/tmp/testequalor2.compareagainst"
+ echo "$1" > "$COMPAREFILE1"
+ echo "$2" > "$COMPAREFILE2"
+ shift 2
+ msgtest "Test for equality OR of" "$*"
+ "$@" >"$COMPAREAGAINST" 2>&1 || true
+ if checkdiff "$COMPAREFILE1" "$COMPAREAGAINST" >/dev/null 2>&1 || \
+ checkdiff "$COMPAREFILE2" "$COMPAREAGAINST" >/dev/null 2>&1
+ then
+ msgpass
+ else
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testequal.output"
+ echo -n "\n${CINFO}Diff against OR 1${CNORMAL}" >"$OUTPUT" 2>&1
+ checkdiff "$COMPAREFILE1" "$COMPAREAGAINST" >"$OUTPUT" 2>&1 || true
+ echo -n "${CINFO}Diff against OR 2${CNORMAL}" >"$OUTPUT" 2>&1
+ checkdiff "$COMPAREFILE2" "$COMPAREAGAINST" >"$OUTPUT" 2>&1 || true
+ msgfailoutput '' "$OUTPUT"
+ fi
+ aptautotest 'testequalor2' "$@"
+ msggroup
+}
+
+testshowvirtual() {
+ msggroup 'testshowvirtual'
+ local VIRTUAL="N: Can't select versions from package '$1' as it is purely virtual"
+ local PACKAGE="$1"
+ shift
+ while [ -n "$1" ]; do
+ VIRTUAL="${VIRTUAL}
+N: Can't select versions from package '$1' as it is purely virtual"
+ PACKAGE="${PACKAGE} $1"
+ shift
+ done
+ msgtest "Test for virtual packages" "apt-cache show $PACKAGE"
+ VIRTUAL="${VIRTUAL}
+N: No packages found"
+ local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testshowvirtual.comparefile"
+ local ARCH="$(getarchitecture 'native')"
+ echo "$VIRTUAL" | sed -e "s/:$ARCH//" -e 's/:all//' >"$COMPAREFILE"
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testshowvirtual.output"
+ testoutputequal "$COMPAREFILE" aptcache show "$PACKAGE"
+ msggroup
+}
+
+testnopackage() {
+ msggroup 'testnopackage'
+ msgtest "Test for non-existent packages" "apt-cache show $*"
+ local SHOWPKG="$(aptcache show "$@" 2>&1 | grep '^Package: ')"
+ if [ -n "$SHOWPKG" ]; then
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testnopackage.output"
+ echo "$SHOWPKG" >"$OUTPUT"
+ msgfailoutput '' "$OUTPUT"
+ else
+ msgpass
+ fi
+ msggroup
+}
+testnosrcpackage() {
+ msggroup 'testnosrcpackage'
+ msgtest "Test for non-existent source packages" "apt-cache showsrc $*"
+ local SHOWPKG="$(aptcache showsrc "$@" 2>&1 | grep '^Package: ')"
+ if [ -n "$SHOWPKG" ]; then
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testnosrcpackage.output"
+ echo "$SHOWPKG" >"$OUTPUT"
+ msgfailoutput '' "$OUTPUT"
+ else
+ msgpass
+ fi
+ msggroup
+}
+
+testdpkgstatus() {
+ msggroup 'testdpkgstatus'
+ local STATE="$1"
+ local NR="$2"
+ shift 2
+ msgtest "Test that $NR package(s) are in state $STATE with" "dpkg -l $*"
+ local PKGS="$(dpkg -l "$@" 2>/dev/null | grep "^${STATE}" | wc -l)"
+ if [ "$PKGS" != $NR ]; then
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testnopackage.output"
+ echo "$PKGS" >"$OUTPUT"
+ dpkg -l "$@" | grep '^[a-z]' >"$OUTPUT" >&2 || true
+ msgfailoutput '' "$OUTPUT"
+ else
+ msgpass
+ fi
+ msggroup
+}
+
+testdpkginstalled() {
+ msggroup 'testdpkginstalled'
+ testdpkgstatus 'ii' "$#" "$@"
+ msggroup
+}
+
+testdpkgnotinstalled() {
+ msggroup 'testdpkgnotinstalled'
+ testdpkgstatus 'ii' '0' "$@"
+ msggroup
+}
+
+testmarkedauto() {
+ msggroup 'testmarkedauto'
+ local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testmarkedauto.comparefile"
+ if [ -n "$1" ]; then
+ msgtest 'Test for correctly marked as auto-installed' "$*"
+ while [ -n "$1" ]; do echo "$1"; shift; done | sort > "$COMPAREFILE"
+ else
+ msgtest 'Test for correctly marked as auto-installed' 'no package'
+ echo -n > "$COMPAREFILE"
+ fi
+ testoutputequal "$COMPAREFILE" aptmark showauto
+ msggroup
+}
+testmarkedmanual() {
+ msggroup 'testmarkedmanual'
+ local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testmarkedmanual.comparefile"
+ if [ -n "$1" ]; then
+ msgtest 'Test for correctly marked as manually installed' "$*"
+ while [ -n "$1" ]; do echo "$1"; shift; done | sort > "$COMPAREFILE"
+ else
+ msgtest 'Test for correctly marked as manually installed' 'no package'
+ echo -n > "$COMPAREFILE"
+ fi
+ testoutputequal "$COMPAREFILE" aptmark showmanual
+ msggroup
+}
+
+catfile() {
+ if [ "${1##*.}" = 'deb' ]; then
+ stat >&2 "$1" || true
+ file >&2 "$1" || true
+ else
+ cat >&2 "$1" || true
+ fi
+}
+msgfailoutput() {
+ msgreportheader 'msgfailoutput'
+ local MSG="$1"
+ local OUTPUT="$2"
+ shift 2
+ local CMD="$1"
+ if [ "$1" = 'grep' -o "$1" = 'tail' -o "$1" = 'head' ]; then
+ echo >&2
+ while [ -n "$2" ]; do shift; done
+ echo "#### Complete file: $1 ####"
+ catfile "$1"
+ echo "#### $CMD output ####"
+ elif [ "$1" = 'test' ]; then
+ echo >&2
+ # doesn't support ! or non-file flags
+ msgfailoutputstatfile() {
+ local FILEFLAGS='^-[bcdefgGhkLOprsStuwx]$'
+ if expr match "$1" "$FILEFLAGS" >/dev/null; then
+ echo "#### stat(2) of file: $2 ####"
+ stat "$2" || true
+ if test -d "$2"; then
+ echo "#### The directory contains: $2 ####"
+ ls >&2 "$2" || true
+ elif test -e "$2"; then
+ echo "#### Complete file: $2 ####"
+ catfile "$2"
+ fi
+ fi
+ }
+ msgfailoutputstatfile "$2" "$3"
+ while [ -n "$5" ] && [ "$4" = '-o' -o "$4" = '-a' ]; do
+ shift 3
+ msgfailoutputstatfile "$2" "$3"
+ done
+ echo '#### test output ####'
+ elif [ "$1" = 'cmp' ]; then
+ echo >&2
+ while [ -n "$2" ]; do
+ echo "#### Complete file: $2 ####"
+ catfile "$2"
+ shift
+ done
+ echo '#### cmp output ####'
+ fi
+ catfile "$OUTPUT"
+ msgfail "$MSG"
+}
+
+testsuccesswithglobalerror() {
+ local TYPE="$1"
+ local ERRORS="$2"
+ shift 2
+ msggroup "$TYPE"
+ if [ "$1" = '--nomsg' ]; then
+ shift
+ else
+ msgtest 'Test for successful execution of' "$*"
+ fi
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/${TYPE}.output"
+ if "$@" >"${OUTPUT}" 2>&1; then
+ if expr match "$1" '^apt.*' >/dev/null; then
+ if grep -q -E ' runtime error: ' "$OUTPUT"; then
+ msgfailoutput 'compiler detected undefined behavior' "$OUTPUT" "$@"
+ elif grep -E "^[${ERRORS}]: " "$OUTPUT" > "${TMPWORKINGDIRECTORY}/rootdir/tmp/checkforwarnings.output" 2>&1; then
+ if [ "$IGNORE_PTY_NOT_MOUNTED" = '1' ]; then
+ if echo 'E: Can not write log (Is /dev/pts mounted?) - posix_openpt (2: No such file or directory)' \
+ | cmp - "${TMPWORKINGDIRECTORY}/rootdir/tmp/checkforwarnings.output" >/dev/null 2>&1; then
+ msgpass
+ else
+ msgfailoutput 'successful run, but output contains warnings/errors' "$OUTPUT" "$@"
+ fi
+ else
+ msgfailoutput 'successful run, but output contains warnings/errors' "$OUTPUT" "$@"
+ fi
+ elif [ "$TYPE" = 'testsuccesswithnotice' ]; then
+ if grep -q -E "^N: " "$OUTPUT"; then
+ msgpass
+ else
+ msgfailoutput 'successful run, but output had no notices' "$OUTPUT" "$@"
+ fi
+ else
+ msgpass
+ fi
+ else
+ msgpass
+ fi
+ else
+ local EXITCODE=$?
+ msgfailoutput "exitcode $EXITCODE" "$OUTPUT" "$@"
+ fi
+ aptautotest "$TYPE" "$@"
+ msggroup
+}
+testsuccesswithnotice() {
+ testsuccesswithglobalerror 'testsuccesswithnotice' 'WE' "$@"
+}
+testsuccess() {
+ testsuccesswithglobalerror 'testsuccess' 'NWE' "$@"
+}
+testwarning() {
+ msggroup 'testwarning'
+ if [ "$1" = '--nomsg' ]; then
+ shift
+ else
+ msgtest 'Test for successful execution with warnings of' "$*"
+ fi
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testwarning.output"
+ if "$@" >"${OUTPUT}" 2>&1; then
+ if expr match "$1" '^apt.*' >/dev/null; then
+ if grep -q -E ' runtime error: ' "$OUTPUT"; then
+ msgfailoutput 'compiler detected undefined behavior' "$OUTPUT" "$@"
+ elif grep -q -E '^E: ' "$OUTPUT"; then
+ msgfailoutput 'successful run, but output contains errors' "$OUTPUT" "$@"
+ elif ! grep -q -E '^W: ' "$OUTPUT"; then
+ msgfailoutput 'successful run, but output contains no warnings' "$OUTPUT" "$@"
+ else
+ msgpass
+ fi
+ else
+ msgpass
+ fi
+ else
+ local EXITCODE=$?
+ msgfailoutput "exitcode $EXITCODE" "$OUTPUT" "$@"
+ fi
+ aptautotest 'testwarning' "$@"
+ msggroup
+}
+testfailure() {
+ msggroup 'testfailure'
+ if [ "$1" = '--nomsg' ]; then
+ shift
+ else
+ msgtest 'Test for failure in execution of' "$*"
+ fi
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testfailure.output"
+ if "$@" >"${OUTPUT}" 2>&1; then
+ local EXITCODE=$?
+ msgfailoutput "exitcode $EXITCODE" "$OUTPUT" "$@"
+ else
+ local EXITCODE=$?
+ if expr match "$1" '^apt.*' >/dev/null; then
+ if [ "$1" = 'aptkey' ]; then
+ if grep -q " Can't check signature:
+ BAD signature from
+ signature could not be verified" "$OUTPUT"; then
+ msgpass
+ else
+ msgfailoutput "run failed with exitcode ${EXITCODE}, but no signature error" "$OUTPUT" "$@"
+ fi
+ else
+ if grep -q -E ' runtime error: ' "$OUTPUT"; then
+ msgfailoutput 'compiler detected undefined behavior' "$OUTPUT" "$@"
+ elif grep -q -E '==ERROR' "$OUTPUT"; then
+ msgfailoutput 'compiler sanitizers reported errors' "$OUTPUT" "$@"
+ elif ! grep -q -E '^E: ' "$OUTPUT"; then
+ msgfailoutput "run failed with exitcode ${EXITCODE}, but with no errors" "$OUTPUT" "$@"
+ else
+ msgpass
+ fi
+ fi
+ else
+ msgpass
+ fi
+ fi
+ aptautotest 'testfailure' "$@"
+ msggroup
+}
+
+testreturnstateequal() {
+ local STATE="$1"
+ if [ "$STATE" = 'testsuccesswithglobalerror' ]; then
+ local STATE="$2"
+ local TYPE="$3"
+ shift 3
+ msggroup "${STATE}equal"
+ if [ "$1" != '--nomsg' ]; then
+ local CMP="$1"
+ shift
+ testsuccesswithglobalerror "$STATE" "$TYPE" "$@"
+ testfileequal "${TMPWORKINGDIRECTORY}/rootdir/tmp/${STATE}.output" "$CMP"
+ else
+ local CMP="$2"
+ shift 2
+ testsuccesswithglobalerror "$STATE" "$TYPE" "$@"
+ testfileequal "${TMPWORKINGDIRECTORY}/rootdir/tmp/${STATE}.output" "$CMP"
+ fi
+ else
+ msggroup "${STATE}equal"
+ if [ "$2" != '--nomsg' ]; then
+ local CMP="$2"
+ shift 2
+ "$STATE" "$@"
+ testfileequal "${TMPWORKINGDIRECTORY}/rootdir/tmp/${STATE}.output" "$CMP"
+ else
+ local CMP="$3"
+ shift 3
+ "$STATE" --nomsg "$@"
+ testfileequal "${TMPWORKINGDIRECTORY}/rootdir/tmp/${STATE}.output" "$CMP"
+ fi
+ fi
+ msggroup
+}
+testsuccessequal() {
+ # we compare output, so we know perfectly well about N:
+ testreturnstateequal 'testsuccesswithglobalerror' 'testsuccess' 'WE' "$@"
+}
+testwarningequal() {
+ testreturnstateequal 'testwarning' "$@"
+}
+testfailureequal() {
+ testreturnstateequal 'testfailure' "$@"
+}
+
+testfailuremsg() {
+ msggroup 'testfailuremsg'
+ local CMP="$1"
+ shift
+ testfailure "$@"
+ msgtest 'Check that the output of the previous failed command has expected' 'failures and warnings'
+ local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testfailuremsg.comparefile"
+ grep '^\(W\|E\|N\):' "${TMPWORKINGDIRECTORY}/rootdir/tmp/testfailure.output" > "$COMPAREFILE" 2>&1 || true
+ testoutputequal "$COMPAREFILE" echo "$CMP"
+ msggroup
+}
+testwarningmsg() {
+ msggroup 'testwarningmsg'
+ local CMP="$1"
+ shift
+ testwarning "$@"
+ msgtest 'Check that the output of the previous warned command has expected' 'warnings'
+ local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testwarningmsg.comparefile"
+ grep '^\(W\|E\|N\):' "${TMPWORKINGDIRECTORY}/rootdir/tmp/testwarning.output" > "$COMPAREFILE" 2>&1 || true
+ testoutputequal "$COMPAREFILE" echo "$CMP"
+ msggroup
+}
+
+testfilestats() {
+ msggroup 'testfilestats'
+ msgtest "Test that file $1 has $2 $3" "$4"
+ if [ "$4" "$3" "$(stat --format "$2" "$1")" ]; then
+ msgpass
+ else
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testfilestats.output"
+ {
+ ls -ld "$1" || true
+ echo -n "stat(1) reports for $2: "
+ stat --format "$2" "$1" || true
+ } >"$OUTPUT" 2>&1
+ msgfailoutput '' "$OUTPUT"
+ fi
+ msggroup
+}
+testaccessrights() {
+ msggroup 'testaccessrights'
+ testfilestats "$1" '%a' '=' "$2"
+ msggroup
+}
+
+testwebserverlaststatuscode() {
+ msggroup 'testwebserverlaststatuscode'
+ local DOWNLOG='rootdir/tmp/webserverstatus-testfile.log'
+ local STATUS='downloaded/webserverstatus-statusfile.log'
+ rm -f "$DOWNLOG" "$STATUS"
+ msgtest 'Test last status code from the webserver was' "$1"
+ if downloadfile "http://localhost:${APTHTTPPORT}/_config/find/aptwebserver::last-status-code" "$STATUS" > "$DOWNLOG" && [ "$(cat "$STATUS")" = "$1" ]; then
+ msgpass
+ else
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testwebserverlaststatuscode.output"
+ {
+ if [ -n "$2" ]; then
+ shift
+ echo >&2 '#### Additionally provided output files contain:'
+ cat >&2 "$@"
+ fi
+ echo >&2 '#### Download log of the status code:'
+ cat >&2 "$DOWNLOG"
+ } >"$OUTPUT" 2>&1
+ msgfailoutput "Status was $(cat "$STATUS")" "$OUTPUT"
+ fi
+ msggroup
+}
+
+mapkeynametokeyid() {
+ while [ -n "$1" ]; do
+ case "$1" in
+ *Joe*|*Sixpack*|newarchive) echo '5A90D141DBAC8DAE';;
+ *Rex*|*Expired*) echo '4BC0A39C27CE74F9';;
+ *Marvin*|*Paranoid*) echo 'E8525D47528144E2';;
+ oldarchive) echo 'FDD2DB85F68C85A3';;
+ *) echo 'UNKNOWN KEY';;
+ esac
+ shift
+ done
+}
+testaptkeys() {
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/aptkeylist.output"
+ if ! aptkey list --with-colon | grep '^pub' | cut -d':' -f 5 > "$OUTPUT"; then
+ echo -n > "$OUTPUT"
+ fi
+ testfileequal "$OUTPUT" "$(mapkeynametokeyid "$@")"
+}
+
+pause() {
+ echo "STOPPED execution. Press enter to continue"
+ local IGNORE
+ read IGNORE
+}
+
+logcurrentarchivedirectory() {
+ find "${TMPWORKINGDIRECTORY}/aptarchive/dists" -type f | while read line; do
+ stat --format '%U:%G:%a:%n' "$line"
+ done | sort > "${TMPWORKINGDIRECTORY}/rootdir/var/log/aptgetupdate.before.lst"
+}
+listcurrentlistsdirectory() {
+ {
+ find rootdir/var/lib/apt/lists -maxdepth 1 -type d | while read line; do
+ stat --format '%U:%G:%a:%n' "$line"
+ done
+ find rootdir/var/lib/apt/lists -maxdepth 1 \! -type d | while read line; do
+ stat --format '%U:%G:%a:%s:%y:%n' "$line"
+ done
+ } | sort
+}
+forallsupportedcompressors() {
+ rm -f "${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/00force-compressor"
+ for COMP in $(aptconfig dump 'APT::Compressor' --format '%f%n' | cut -d':' -f 5 | uniq); do
+ if [ -z "$COMP" -o "$COMP" = '.' ]; then continue; fi
+ "$@" "$COMP"
+ done
+}
+
+### convenience hacks ###
+mkdir() {
+ # creating some directories by hand is a tedious task, so make it look simple
+ local PARAMS="$*"
+ if [ "$PARAMS" != "${PARAMS#*rootdir/var/lib/apt/lists}" ]; then
+ # only the last directory created by mkdir is effected by the -m !
+ command mkdir -m 755 -p "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt"
+ command mkdir -m 755 -p "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists"
+ command mkdir -m 700 -p "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial"
+ touch "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/lock"
+ if [ "$(id -u)" = '0' ]; then
+ chown _apt:$(id -gn) "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial"
+ fi
+ else
+ command mkdir "$@"
+ fi
+}
+
+### The following tests are run by most test methods automatically to check
+### general things about commands executed without writing the test every time.
+
+aptautotest() {
+ if [ $# -lt 3 ]; then return; fi
+ local TESTCALL="$1"
+ local CMD="$2"
+ local FIRSTOPT="$3"
+ shift 2
+ for i in "$@"; do
+ if ! expr match "$i" '^-' >/dev/null 2>&1; then
+ FIRSTOPT="$i"
+ break
+ fi
+ done
+ shift
+ local AUTOTEST="aptautotest_$(echo "${CMD##*/}_${FIRSTOPT}" | tr -d -c 'A-za-z0-9')"
+ if command -v $AUTOTEST >/dev/null; then
+ # save and restore the *.output files from other tests
+ # as we might otherwise override them in these automatic tests
+ rm -rf "${TMPWORKINGDIRECTORY}/rootdir/tmp-before"
+ mv "${TMPWORKINGDIRECTORY}/rootdir/tmp" "${TMPWORKINGDIRECTORY}/rootdir/tmp-before"
+ mkdir "${TMPWORKINGDIRECTORY}/rootdir/tmp"
+ $AUTOTEST "$TESTCALL" "$@"
+ rm -rf "${TMPWORKINGDIRECTORY}/rootdir/tmp-aptautotest"
+ mv "${TMPWORKINGDIRECTORY}/rootdir/tmp" "${TMPWORKINGDIRECTORY}/rootdir/tmp-aptautotest"
+ mv "${TMPWORKINGDIRECTORY}/rootdir/tmp-before" "${TMPWORKINGDIRECTORY}/rootdir/tmp"
+ fi
+}
+
+aptautotest_aptget_update() {
+ local TESTCALL="$1"
+ while [ -n "$2" ]; do
+ if [ "$2" = '--print-uris' ]; then return; fi # simulation mode
+ shift
+ done
+ if ! test -d "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists"; then return; fi
+ testfilestats "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:755"
+ testfilestats "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:755"
+ # all copied files are properly chmodded
+ local backupIFS="$IFS"
+ IFS="$(printf "\n\b")"
+ for file in $(find "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists" -type f ! -name 'lock'); do
+ testfilestats "$file" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+ done
+ IFS="$backupIFS"
+ if [ "$TESTCALL" = 'testsuccess' ]; then
+ # failure cases can retain partial files and such
+ testempty find "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial" -mindepth 1 ! \( -name 'lock' -o -name '*.FAILED' \)
+ fi
+ if [ -s "${TMPWORKINGDIRECTORY}/rootdir/var/log/aptgetupdate.before.lst" ]; then
+ testfileequal "${TMPWORKINGDIRECTORY}/rootdir/var/log/aptgetupdate.before.lst" \
+ "$(find "${TMPWORKINGDIRECTORY}/aptarchive/dists" -type f | while read line; do stat --format '%U:%G:%a:%n' "$line"; done | sort)"
+ fi
+}
+aptautotest_apt_update() { aptautotest_aptget_update "$@"; }
+aptautotest_aptcdrom_add() { aptautotest_aptget_update "$@"; }
+
+testaptautotestnodpkgwarning() {
+ local TESTCALL="$1"
+ while [ -n "$2" ]; do
+ if expr match "$2" '^-[a-z]*s' >/dev/null 2>&1; then return; fi # simulation mode
+ if expr match "$2" '^-dy\?' >/dev/null 2>&1; then return; fi # download-only mode
+ shift
+ done
+ testfailure grep '^dpkg: warning:.*\(ignor\|unknown\).*' "${TMPWORKINGDIRECTORY}/rootdir/tmp-before/${TESTCALL}.output"
+}
+
+aptautotest_aptget_install() { testaptautotestnodpkgwarning "$@"; }
+aptautotest_aptget_remove() { testaptautotestnodpkgwarning "$@"; }
+aptautotest_aptget_purge() { testaptautotestnodpkgwarning "$@"; }
+aptautotest_apt_install() { testaptautotestnodpkgwarning "$@"; }
+aptautotest_apt_remove() { testaptautotestnodpkgwarning "$@"; }
+aptautotest_apt_purge() { testaptautotestnodpkgwarning "$@"; }
+
+testaptmarknodefaultsections() {
+ testfailure grep '^Auto-Installed: 0$' "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/extended_states"
+}
+aptautotest_aptmark_auto() { testaptmarknodefaultsections "$@"; }
+aptautotest_aptmark_manual() { testaptmarknodefaultsections "$@"; }
+aptautotest_aptget_markauto() { testaptmarknodefaultsections "$@"; }
+aptautotest_aptget_markmanual() { testaptmarknodefaultsections "$@"; }
diff --git a/test/integration/header-compilation b/test/integration/header-compilation
new file mode 100755
index 000000000..33e0a5ce6
--- /dev/null
+++ b/test/integration/header-compilation
@@ -0,0 +1,26 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+
+(for i in $TESTDIR/../../build/include/apt-pkg/*.h; do echo "#include \"$i\""; done) > include.h
+
+
+testone() {
+ local cxx=$1
+ shift
+
+ if type $cxx 2>&1 1>/dev/null; then
+ testsuccess $cxx -c -o /dev/null include.h
+ testsuccess $cxx -c -o /dev/null -std=c++98 include.h
+ testsuccess $cxx -c -o /dev/null -std=c++11 include.h
+ else
+ msgskip "Compile $cxx is not installed"
+ fi
+}
+
+testone clang++
+testone g++
+testone g++-4.8
diff --git a/test/integration/joesixpack.pub b/test/integration/joesixpack.pub
new file mode 100644
index 000000000..cad056104
--- /dev/null
+++ b/test/integration/joesixpack.pub
Binary files differ
diff --git a/test/integration/joesixpack.sec b/test/integration/joesixpack.sec
new file mode 100644
index 000000000..0dc5cd8f6
--- /dev/null
+++ b/test/integration/joesixpack.sec
Binary files differ
diff --git a/test/integration/keyrings/test-archive-keyring.pub b/test/integration/keyrings/test-archive-keyring.pub
new file mode 100644
index 000000000..325174086
--- /dev/null
+++ b/test/integration/keyrings/test-archive-keyring.pub
Binary files differ
diff --git a/test/integration/keyrings/test-archive-keyring.sec b/test/integration/keyrings/test-archive-keyring.sec
new file mode 100644
index 000000000..001f79569
--- /dev/null
+++ b/test/integration/keyrings/test-archive-keyring.sec
Binary files differ
diff --git a/test/integration/keyrings/test-master-keyring.pub b/test/integration/keyrings/test-master-keyring.pub
new file mode 100644
index 000000000..9809d3259
--- /dev/null
+++ b/test/integration/keyrings/test-master-keyring.pub
Binary files differ
diff --git a/test/integration/keyrings/test-master-keyring.sec b/test/integration/keyrings/test-master-keyring.sec
new file mode 100644
index 000000000..c5c5bfd5f
--- /dev/null
+++ b/test/integration/keyrings/test-master-keyring.sec
Binary files differ
diff --git a/test/integration/marvinparanoid.pub b/test/integration/marvinparanoid.pub
new file mode 100644
index 000000000..866dc1492
--- /dev/null
+++ b/test/integration/marvinparanoid.pub
Binary files differ
diff --git a/test/integration/marvinparanoid.sec b/test/integration/marvinparanoid.sec
new file mode 100644
index 000000000..ace09f735
--- /dev/null
+++ b/test/integration/marvinparanoid.sec
Binary files differ
diff --git a/test/integration/rexexpired.pub b/test/integration/rexexpired.pub
new file mode 100644
index 000000000..2d2c81c83
--- /dev/null
+++ b/test/integration/rexexpired.pub
Binary files differ
diff --git a/test/integration/rexexpired.sec b/test/integration/rexexpired.sec
new file mode 100644
index 000000000..c431fd908
--- /dev/null
+++ b/test/integration/rexexpired.sec
Binary files differ
diff --git a/test/integration/run-tests b/test/integration/run-tests
new file mode 100755
index 000000000..80f1fc61d
--- /dev/null
+++ b/test/integration/run-tests
@@ -0,0 +1,164 @@
+#!/bin/sh
+set -e
+
+TESTTORUN=''
+while [ -n "$1" ]; do
+ if [ "$1" = "-q" ]; then
+ export MSGLEVEL=2
+ elif [ "$1" = "-qq" ]; then
+ export MSGLEVEL=1
+ elif [ "$1" = "-v" ]; then
+ export MSGLEVEL=4
+ elif [ "$1" = '--color=no' ]; then
+ export MSGCOLOR='NO'
+ elif [ "$1" = '--color=yes' ]; then
+ export MSGCOLOR='YES'
+ elif [ "$1" = '--color' ]; then
+ export MSGCOLOR="$(echo "$2" | tr 'a-z' 'A-Z')"
+ shift
+ elif [ "$1" = '--level' ]; then
+ export MSGLEVEL=$2
+ shift
+ elif [ "$1" = '-j' ]; then
+ APT_TEST_JOBS=$2
+ shift
+ elif [ -x "$1" ]; then
+ TESTTORUN="$1"
+ else
+ echo >&2 "WARNING: Unknown parameter »$1« will be ignored"
+ fi
+ shift
+done
+export MSGLEVEL="${MSGLEVEL:-3}"
+
+if [ "${MSGCOLOR:-YES}" = 'YES' ]; then
+ if [ ! -t 1 ]; then # but check that we output to a terminal
+ export MSGCOLOR='NO'
+ fi
+fi
+if [ "$MSGCOLOR" != 'NO' ]; then
+ CTEST='\033[1;32m'
+ CHIGH='\033[1;35m'
+ CRESET='\033[0m'
+else
+ CTEST=''
+ CHIGH=''
+ CRESET=''
+fi
+
+if [ -n "$TESTTORUN" ]; then
+ # collecting the output of one test to have it together
+ OUTPUT="$(mktemp)"
+ CURRENTTRAP="rm -f \"$OUTPUT\"; $CURRENTTRAP"
+ trap "$CURRENTTRAP" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
+ {
+ if [ "$MSGLEVEL" -le 1 ]; then
+ printf "${TESTTORUN##*/}"
+ elif [ "$MSGLEVEL" -le 2 ]; then
+ printf "${CTEST}Testcase ${CHIGH}${TESTTORUN##*/}${CRESET}: "
+ else
+ printf "${CTEST}Run Testcase ${CHIGH}${TESTTORUN##*/}${CRESET}\n"
+ fi
+ if ! "$TESTTORUN"; then
+ FAIL='yes'
+ if [ "$MSGLEVEL" -le 2 ]; then
+ printf >&2 "\n${CHIGH}Running ${TESTTORUN##*/} -> FAILED${CRESET}\n"
+ elif [ "$MSGLEVEL" -le 2 ]; then
+ printf >&2 "\n${CHIGH}Running ${TESTTORUN##*/} -> FAILED${CRESET}"
+ else
+ echo >&2 "${CHIGH}Running ${TESTTORUN##*/} -> FAILED${CRESET}"
+ fi
+ else
+ if [ "$MSGLEVEL" -le 1 ]; then
+ printf " "
+ fi
+ fi
+ if [ "$MSGLEVEL" -le 1 ]; then
+ :
+ elif [ "$MSGLEVEL" -le 2 ]; then
+ echo
+ fi
+ } >"$OUTPUT" 2>&1
+ # without we end up getting stepped output 'randomly'
+ stty sane
+ cat >&2 "$OUTPUT"
+ stty sane
+ if [ "$FAIL" = 'yes' ]; then
+ exit 1
+ else
+ exit 0
+ fi
+fi
+
+FAIL=0
+PASS=0
+ALL=0
+FAILED_TESTS=""
+DIR="$(readlink -f "$(dirname "$0")")"
+cd "$DIR"
+TESTLIST="$(find . -mindepth 1 -maxdepth 1 -regex '^\./test-[^/]*$' | sort)"
+if [ -n "$APT_TEST_JOBS" ]; then
+ if [ "$MSGCOLOR" != 'NO' ]; then
+ export MSGCOLOR='ALWAYS'
+ fi
+ parallel=parallel
+ if command -v moreutils-parallel >/dev/null 2>&1; then
+ parallel=moreutils-parallel
+ fi
+ exec $parallel -j "$APT_TEST_JOBS" "./$(basename "$0")" -- $(echo "$TESTLIST")
+fi
+
+APT_TEST_SIGNINGHOME="$(mktemp --directory --tmpdir 'apt-key-signinghome.XXXXXXXXXX')"
+removesigninghome() {
+ if [ -z "$APT_TEST_SIGNINGHOME" ]; then return; fi
+ GNUPGHOME="${APT_TEST_SIGNINGHOME}" gpgconf --kill gpg-agent >/dev/null 2>&1 || true
+ rm -rf -- "$APT_TEST_SIGNINGHOME"
+}
+trap "exit 1" 0 HUP INT ILL ABRT FPE SEGV PIPE TERM
+trap "removesigninghome" 0 QUIT
+export APT_TEST_SIGNINGHOME
+
+TOTAL="$(echo "$TESTLIST" | wc -l)"
+if [ "$MSGLEVEL" -le 1 ]; then
+ printf "${CTEST}Running testcases${CRESET}: "
+fi
+for testcase in $TESTLIST; do
+ if [ "$MSGLEVEL" -le 1 ]; then
+ printf "${testcase##*/}"
+ elif [ "$MSGLEVEL" -le 2 ]; then
+ printf "($(($ALL+1))/${TOTAL}) ${CTEST}Testcase ${CHIGH}${testcase##*/}${CRESET}: "
+ else
+ printf "${CTEST}Run Testcase ($(($ALL+1))/${TOTAL}) ${CHIGH}${testcase##*/}${CRESET}\n"
+ fi
+ if ! ${testcase}; then
+ FAIL=$((FAIL+1))
+ FAILED_TESTS="$FAILED_TESTS ${testcase##*/}"
+ if [ "$MSGLEVEL" -le 1 ]; then
+ printf >&2 "\n${CHIGH}Running ${testcase##*/} -> FAILED${CRESET}\n"
+ elif [ "$MSGLEVEL" -le 2 ]; then
+ printf >&2 "\n${CHIGH}Running ${testcase##*/} -> FAILED${CRESET}"
+ else
+ echo >&2 "${CHIGH}Running ${testcase##*/} -> FAILED${CRESET}"
+ fi
+ else
+ PASS=$((PASS+1))
+ if [ "$MSGLEVEL" -le 1 ]; then
+ printf " "
+ fi
+ fi
+ ALL=$((ALL+1))
+ if [ "$MSGLEVEL" -le 1 ]; then
+ :
+ elif [ "$MSGLEVEL" -le 2 ]; then
+ echo
+ fi
+done
+
+echo >&2 "Statistics: $ALL tests were run: $PASS successfully and $FAIL failed"
+if [ -n "$FAILED_TESTS" ]; then
+ echo >&2 "Failed tests: $FAILED_TESTS"
+else
+ echo >&2 'All tests seem to have been run successfully. What could possibly go wrong?'
+fi
+# ensure we don't overflow
+exit $((FAIL <= 255 ? FAIL : 255))
diff --git a/test/integration/skip-acquire-same-repository-multiple-times b/test/integration/skip-acquire-same-repository-multiple-times
new file mode 100755
index 000000000..c8372bd41
--- /dev/null
+++ b/test/integration/skip-acquire-same-repository-multiple-times
@@ -0,0 +1,85 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+TESTFILE="$TESTDIR/framework"
+cp "$TESTFILE" aptarchive/foo
+APTARCHIVE="$(readlink -f ./aptarchive)"
+
+getcodenamefromsuite() { echo "jessie"; }
+buildsimplenativepackage 'foo' 'all' '1.0' 'stable'
+setupaptarchive --no-update
+ln -s "${APTARCHIVE}/dists/stable" "${APTARCHIVE}/dists/jessie"
+for FILE in rootdir/etc/apt/sources.list.d/*-stable-* ; do
+ sed 's#stable#jessie#g' $FILE > $(echo "$FILE" | sed 's#stable#jessie#g')
+done
+
+# install a slowed down file: otherwise its to fast to reproduce combining
+NEWMETHODS="$(readlink -f rootdir)/usr/lib/apt/methods"
+OLDMETHODS="$(readlink -f rootdir/usr/lib/apt/methods)"
+rm "$NEWMETHODS"
+mkdir "$NEWMETHODS"
+backupIFS="$IFS"
+IFS="$(printf "\n\b")"
+for METH in $(find "$OLDMETHODS" ! -type d); do
+ ln -s "$OLDMETHODS/$(basename "$METH")" "$NEWMETHODS"
+done
+IFS="$backupIFS"
+rm "${NEWMETHODS}/file" "${NEWMETHODS}/http"
+cat >"${NEWMETHODS}/file" <<EOF
+#!/bin/sh
+while read line; do
+ echo "\$line"
+ if [ -z "\$line" ]; then
+ sleep 0.5
+ fi
+done | '$OLDMETHODS/'"\${0##*/}"
+EOF
+chmod +x "${NEWMETHODS}/file"
+ln -s "${NEWMETHODS}/file" "${NEWMETHODS}/http"
+
+tworepos() {
+ msgtest "Downloading the same repository twice over $1" "$3"
+ testsuccess --nomsg aptget update -o Debug::pkgAcquire::Worker=1
+ cp rootdir/tmp/testsuccess.output download.log
+ #cat download.log
+ aptget indextargets --format '$(FILENAME)' --no-release-info | sort > file.lst
+ testequal "$(find "$(readlink -f ./rootdir/var/lib/apt/lists)" -name '*_dists_*' \( ! -name '*InRelease' \) -type f | sort)" cat file.lst
+ testsuccess aptcache policy
+ testequal "foo:
+ Installed: (none)
+ Candidate: 1.0
+ Version table:
+ 1.0 500
+ 500 $1:$2 jessie/main all Packages
+ 500 $1:$2 stable/main all Packages" aptcache policy foo
+ testfailure aptcache show foo/unstable
+ testsuccess aptcache show foo/stable
+ testsuccess aptcache show foo/jessie
+}
+
+tworepos 'file' "$APTARCHIVE" 'no partial'
+testequal '14' grep -c '200%20URI%20Start' ./download.log
+testequal '14' grep -c '201%20URI%20Done' ./download.log
+testequal '8' grep -c '^ @ Queue: Action combined' ./download.log
+tworepos 'file' "$APTARCHIVE" 'hit'
+testequal '6' grep -c '200%20URI%20Start' ./download.log
+testequal '6' grep -c '201%20URI%20Done' ./download.log
+testequal '0' grep -c '^ @ Queue: Action combined' ./download.log
+rm -rf rootdir/var/lib/apt/lists
+
+changetowebserver
+
+tworepos 'http' "//localhost:${APTHTTPPORT}" 'no partial'
+testequal '12' grep -c '200%20URI%20Start' ./download.log
+testequal '12' grep -c '201%20URI%20Done' ./download.log
+testequal '8' grep -c '^ @ Queue: Action combined' ./download.log
+tworepos 'http' "//localhost:${APTHTTPPORT}" 'hit'
+testequal '2' grep -c '200%20URI%20Start' ./download.log
+testequal '4' grep -c '201%20URI%20Done' ./download.log
+testequal '0' grep -c '^ @ Queue: Action combined' ./download.log
+rm -rf rootdir/var/lib/apt/lists
diff --git a/test/integration/skip-apt-dropprivs b/test/integration/skip-apt-dropprivs
new file mode 100755
index 000000000..e0dd741cd
--- /dev/null
+++ b/test/integration/skip-apt-dropprivs
@@ -0,0 +1,32 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+aptdropprivs() { runapt "${APTTESTHELPERSBINDIR}/aptdropprivs" "$@"; }
+
+testsuccess aptdropprivs -- /bin/true
+testsuccess aptdropprivs --user "$USER" -- /bin/true
+testsuccess aptdropprivs --user 'nobody' -- /bin/true
+testsuccess aptdropprivs --user '_apt' -- /bin/true
+
+IDBIN='/usr/bin/id'
+testsuccessequal "$("$IDBIN")" aptdropprivs --user "$USER" -- "$IDBIN"
+
+SUDOBIN='/usr/bin/sudo'
+testequal "sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root privileges?" aptdropprivs --user 'nobody' -- "$SUDOBIN" "$IDBIN"
+
+if [ "$(id -u)" = '0' ]; then
+ testsuccessequal '_apt' aptdropprivs --user '_apt' -- "$IDBIN" '-un'
+ testsuccess aptdropprivs --user '_apt' -- '/bin/sh' '-c' 'export'
+ cp rootdir/tmp/testsuccess.output apt.env
+ testsuccessequal "export HOME='/nonexistent'" grep '^export HOME' apt.env
+ testsuccessequal "export USER='_apt'
+export USERNAME='_apt'" grep '^export USER' apt.env
+ testsuccessequal "export LOGNAME='_apt'" grep '^export LOGNAME' apt.env
+ testsuccessequal "export SHELL='/bin/sh'" grep '^export SHELL=' apt.env
+fi
diff --git a/test/integration/skip-avoid-avoiding-breaks-predepends b/test/integration/skip-avoid-avoiding-breaks-predepends
new file mode 100755
index 000000000..0697ff4bd
--- /dev/null
+++ b/test/integration/skip-avoid-avoiding-breaks-predepends
@@ -0,0 +1,21 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'native'
+
+insertinstalledpackage 'looping' 'native' '1'
+insertinstalledpackage 'loop1' 'native' '1' 'Depends: loop2 (= 1)'
+insertinstalledpackage 'loop2' 'native' '1' 'Depends: loop1 (= 1)'
+
+buildsimplenativepackage 'looping' 'native' '1.15.7.2' 'stable' 'Breaks: loop2 (<= 1)'
+buildsimplenativepackage 'loop1' 'native' '2' 'stable' 'Depends: loop2 (= 2)'
+buildsimplenativepackage 'loop2' 'native' '2' 'stable' 'Depends: loop1 (= 2)
+Pre-Depends: looping (>= 1.15)'
+
+setupaptarchive
+
+aptget dist-upgrade -y -o Debug::pkgOrderList=1 #-qq >/dev/null 2>&1
+testdpkginstalled looping loop1 loop2
diff --git a/test/integration/skip-bug-601016-description-translation b/test/integration/skip-bug-601016-description-translation
new file mode 100755
index 000000000..fd0465acd
--- /dev/null
+++ b/test/integration/skip-bug-601016-description-translation
@@ -0,0 +1,133 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386' 'amd64'
+
+# we need a valid locale here, otherwise the language configuration
+# will be overridden by LC_ALL=C
+LOCALE="$(echo "$LANG" | cut -d'_' -f 1)"
+MD5Sum='Description-md5: d41ee493aa9fcc6cbc9ce4eb7069959c'
+
+PACKAGESTANZA='Package: apt
+Priority: important
+Section: admin
+Installed-Size: 5984
+Maintainer: APT Development Team <deity@lists.debian.org>
+Architecture: i386
+Version: 0.8.7
+Filename: pool/main/a/apt/apt_0.8.7_i386.deb
+Size: 2140230
+MD5sum: 74769bfbcef9ebc4fa74f7a5271b9c08'
+
+PACKAGESTANZA2='Package: apt
+Priority: important
+Section: admin
+Installed-Size: 5984
+Maintainer: APT Development Team <deity@lists.debian.org>
+Architecture: amd64
+Version: 0.8.7
+Filename: pool/main/a/apt/apt_0.8.7_amd64.deb
+Size: 2210342
+MD5sum: 4a869bfbdef9ebc9fa74f7a5271e8d1a'
+
+echo "$PACKAGESTANZA
+Description: Advanced front-end for dpkg
+$MD5Sum
+
+$PACKAGESTANZA2
+Description: Advanced front-end for dpkg
+$MD5Sum" > aptarchive/Packages
+
+echo "Package: apt
+Description-${LOCALE}: Mächtige Oberfläche für dpkg
+ Das Paket bietet dem Nutzer technisch führende Methoden für den Zugriff
+ auf den dpkg-Paketmanager. Es beinhaltet das apt-get-Werkzeug und die
+ APT-Dselect-Methode. Beides sind einfache und sicherere Wege,
+ um Pakete zu installieren und Upgrades durchzuführen.
+$MD5Sum" | bzip2 > aptarchive/${LOCALE}.bz2
+
+# the $LOCALE translation file will not be included as it is a flat archive it came from and therefore
+# its name can not be guessed correctly… (in non-flat archives the files are called Translation-*)
+echo 'APT::Cache::Generate "false";' > rootdir/etc/apt/apt.conf.d/00nogenerate
+
+NOLONGSTANZA="$PACKAGESTANZA
+Description: Advanced front-end for dpkg
+$MD5Sum
+"
+
+ENGLISHSTANZA="$PACKAGESTANZA
+Description: Advanced front-end for dpkg
+$MD5Sum
+"
+
+LOCALESTANZA="$PACKAGESTANZA
+Description-${LOCALE}: Mächtige Oberfläche für dpkg
+ Das Paket bietet dem Nutzer technisch führende Methoden für den Zugriff
+ auf den dpkg-Paketmanager. Es beinhaltet das apt-get-Werkzeug und die
+ APT-Dselect-Methode. Beides sind einfache und sicherere Wege,
+ um Pakete zu installieren und Upgrades durchzuführen.
+$MD5Sum
+"
+LOCALESTANZA2="$PACKAGESTANZA2
+Description-${LOCALE}: Mächtige Oberfläche für dpkg
+ Das Paket bietet dem Nutzer technisch führende Methoden für den Zugriff
+ auf den dpkg-Paketmanager. Es beinhaltet das apt-get-Werkzeug und die
+ APT-Dselect-Methode. Beides sind einfache und sicherere Wege,
+ um Pakete zu installieren und Upgrades durchzuführen.
+$MD5Sum
+"
+
+testrun() {
+ echo "Acquire::Languages { \"${LOCALE}\"; \"en\"; };" > rootdir/etc/apt/apt.conf.d/00languages
+ export LC_ALL=""
+ rm -rf rootdir/var/lib/apt/lists
+ setupaptarchive
+ testequal "$LOCALESTANZA" aptcache show apt -o Test=File-${LOCALE}
+ testequal "$LOCALESTANZA" aptcache show apt:i386 -o Test=File-${LOCALE}
+ testequal "$LOCALESTANZA2" aptcache show apt:amd64 -o Test=File-${LOCALE}
+ testequal "$NOLONGSTANZA" aptcache show apt -o Acquire::Languages="ww" -o Test=File-${LOCALE}
+ testequal "$LOCALESTANZA" aptcache show apt -o Acquire::Languages::="ww" -o Test=File-${LOCALE}
+ LC_ALL=C testequal "$ENGLISHSTANZA" aptcache show apt -o Test=File-${LOCALE}
+ export LC_ALL=""
+ echo "Acquire::Languages { \"ww\"; \"${LOCALE}\"; \"en\"; };" > rootdir/etc/apt/apt.conf.d/00languages
+ testequal "$LOCALESTANZA" aptcache show apt -o Test=File-ww-${LOCALE}
+ echo "Acquire::Languages { \"ww\"; \"en\"; };" > rootdir/etc/apt/apt.conf.d/00languages
+ testequal "$ENGLISHSTANZA" aptcache show apt -o Test=File-ww
+}
+
+testrun
+
+echo "$PACKAGESTANZA
+Description: Advanced front-end for dpkg
+$MD5Sum
+
+$PACKAGESTANZA2
+Description: Advanced front-end for dpkg
+$MD5Sum" > aptarchive/Packages
+
+echo "Package: apt
+Description-en: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+$MD5Sum" | bzip2 > aptarchive/en.bz2
+
+ENGLISHSTANZA="$PACKAGESTANZA
+Description-en: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+$MD5Sum
+"
+ENGLISHSTANZA2="$PACKAGESTANZA2
+Description-en: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+$MD5Sum
+"
+
+testrun
diff --git a/test/integration/skip-bug-711456-apt-cdrom-multiple-cds-multiarch b/test/integration/skip-bug-711456-apt-cdrom-multiple-cds-multiarch
new file mode 100755
index 000000000..9abaee1f1
--- /dev/null
+++ b/test/integration/skip-bug-711456-apt-cdrom-multiple-cds-multiarch
@@ -0,0 +1,47 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildsimplenativepackage 'testing' 'amd64,i386' '0.8.15' 'stable' 'Depends: libtest'
+buildsimplenativepackage 'libtest' 'amd64,i386' '0.8.15' 'stable' 'Multi-Arch: same'
+buildsimplenativepackage 'libtest' 'amd64,i386' '1' 'unstable' 'Multi-Arch: same'
+
+# needed by the ftparchive.conf
+cd aptarchive
+ln -s ../incoming pool
+createaptftparchiveconfig
+cd - >/dev/null
+# create an amd64 cdrom
+sed -i 's#Architectures .*$#Architectures "amd64 source";#' aptarchive/ftparchive.conf
+setupaptarchive --no-update
+changetocdrom 'Debian APT Testdisk amd64 0.8.15'
+mv rootdir/media/cdrom rootdir/media/cdrom-amd64
+addtrap 'prefix' "chmod -R +w $PWD/rootdir/media/cdrom-amd64/dists/;"
+chmod -R -w rootdir/media/cdrom-amd64/dists
+ln -s $PWD/rootdir/media/cdrom-amd64 $PWD/rootdir/media/cdrom
+aptcdrom add -m -o quiet=1
+rm $PWD/rootdir/media/cdrom
+# do it again to create a i386 cdrom
+sed -i 's#Architectures .*$#Architectures "i386 source";#' aptarchive/ftparchive.conf
+setupaptarchive --no-update
+changetocdrom 'Debian APT Testdisk i386 0.8.15'
+mv rootdir/media/cdrom rootdir/media/cdrom-i386
+addtrap 'prefix' "chmod -R +w $PWD/rootdir/media/cdrom-i386/dists/;"
+chmod -R -w rootdir/media/cdrom-i386/dists
+ln -s $PWD/rootdir/media/cdrom-i386 $PWD/rootdir/media/cdrom
+aptcdrom add -m -o quiet=1
+
+# play with the cdroms
+testdpkgnotinstalled testing
+aptget install testing -t stable -y #> /dev/null 2>&1
+testdpkginstalled testing
+
+testdpkgnotinstalled testing:i386
+aptget install testing:i386 -t stable -y #> /dev/null 2>&1
+testdpkginstalled testing:i386
+
+aptget dist-upgrade -y
diff --git a/test/integration/skip-method-http-socks-client b/test/integration/skip-method-http-socks-client
new file mode 100755
index 000000000..f4146a6d1
--- /dev/null
+++ b/test/integration/skip-method-http-socks-client
@@ -0,0 +1,161 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+
+# We don't do a real proxy here, we just look how the implementation
+# reacts to certain responses from a "proxy" provided by socat
+# Checks HTTP, but requesting https instead will check HTTPS (curl) which
+# uses different error messages through – also: https://github.com/curl/curl/issues/944
+
+# FIXME: Not run automatically as it uses a hardcoded port (5555)
+
+msgtest 'Check that everything is installed' 'socat'
+if dpkg-checkbuilddeps -d 'socat' /dev/null >/dev/null 2>&1; then
+ msgpass
+else
+ msgskip "$(command dpkg -l socat)"
+ exit
+fi
+
+runclient() {
+ # this doesn't need to be an actually reachable webserver for this test
+ # in fact, its better if it isn't.
+ rm -f index.html
+ apthelper download-file "http://${2:-localhost:2903}/" index.html \
+ -o Acquire::http::Proxy="socks5h://${1}localhost:5555" \
+ -o Acquire::http::Timeout=2 -o Debug::Acquire::http=1 > client.output 2>&1 || true
+}
+runserver() {
+ socat -x tcp-listen:5555,reuseaddr \
+ system:"echo -n '$*' | xxd -r -p; echo 'HTTP/1.1 200 OK'; echo 'Content-Length: 5'; echo 'Connection: close'; echo; echo 'HTML'" \
+ > server.output 2>&1 &
+}
+PROXY="socks5h://localhost:5555"
+
+msgmsg 'SOCKS does not run'
+runclient
+testsuccess grep 'Could not connect to localhost:5555' client.output
+
+msgmsg 'SOCKS greets back with wrong version'
+runserver '04 00'
+runclient
+testsuccess grep 'greets back with wrong version: 4' client.output
+
+msgmsg 'SOCKS tries GSSAPI auth we have not advertised'
+runserver '05 01'
+runclient
+testsuccess grep 'greets back having not found a common authorization method: 1' client.output
+
+msgmsg 'SOCKS tries user&pass auth we have not advertised'
+runserver '05 02'
+runclient
+testsuccess grep 'pass auth, but we had not offered it' client.output
+
+msgmsg 'SOCKS user:pass wrong version'
+runserver '05 02' '05 00'
+runclient 'user:pass@'
+testsuccess grep 'auth status response with wrong version: 5' client.output
+
+msgmsg 'SOCKS user:pass wrong auth'
+runserver '05 02' '01 01'
+runclient 'user:pass@'
+testsuccess grep 'reported authorization failure: username or password incorrect? (1)' client.output
+
+msgmsg 'SOCKS user:pass request not granted no hostname'
+runserver '05 02' '01 00' '05 01 00 03 00 1f 90'
+runclient 'user:pass@'
+testsuccess grep 'could not connect to localhost (:8080) due to: general SOCKS server failure (1)' client.output
+
+msgmsg 'SOCKS user:pass request not granted with hostname'
+runserver '05 02' '01 00' '05 01 00 03 09 68 6f 73 74 6c 6f 63 61 6c 1f 90'
+runclient 'user:pass@'
+testsuccess grep 'could not connect to localhost (hostlocal:8080) due to: general SOCKS server failure (1)' client.output
+
+msgmsg 'SOCKS user:pass request not granted ipv4'
+runserver '05 02' '01 00' '05 04 00 01 ac 10 fe 01 1f 90'
+runclient 'user:pass@'
+testsuccess grep 'could not connect to localhost (172.16.254.1:8080) due to: Host unreachable (4)' client.output
+
+msgmsg 'SOCKS user:pass request not granted ipv6'
+runserver '05 02' '01 00' '05 12 00 04 20 01 0d b8 ac 10 fe 00 00 00 00 00 00 00 00 00 1f 90'
+runclient 'user:pass@'
+testsuccess grep 'could not connect to localhost (\[2001:0DB8:AC10:FE00:0000:0000:0000:0000\]:8080) due to: Unknown error (18)' client.output
+
+msgmsg 'SOCKS user:pass request granted ipv4'
+runserver '05 02' '01 00' '05 00 00 01 ac 10 fe 01 1f 90'
+runclient 'user:pass@'
+testequal "http: SOCKS proxy $PROXY connection established to localhost (172.16.254.1:8080)" head -n 1 client.output
+testfileequal index.html 'HTML'
+
+msgmsg 'SOCKS user:pass request granted ipv6'
+runserver '05 02' '01 00' '05 00 00 04 20 01 0d b8 ac 10 fe 00 00 00 00 00 00 00 00 00 1f 90'
+runclient 'user:pass@'
+testequal "http: SOCKS proxy $PROXY connection established to localhost ([2001:0DB8:AC10:FE00:0000:0000:0000:0000]:8080)" head -n 1 client.output
+testfileequal index.html 'HTML'
+
+msgmsg 'SOCKS no auth no hostname'
+runserver '05 00 05 00 00 03 00 1f 90'
+runclient
+testequal "http: SOCKS proxy $PROXY connection established to localhost (:8080)" head -n 1 client.output
+testfileequal index.html 'HTML'
+
+msgmsg 'SOCKS no auth with hostname'
+runserver '05 00 05 00 00 03 09 68 6f 73 74 6c 6f 63 61 6c 1f 90'
+runclient
+testequal "http: SOCKS proxy $PROXY connection established to localhost (hostlocal:8080)" head -n 1 client.output
+testfileequal index.html 'HTML'
+
+msgmsg 'SOCKS user-only request granted ipv4'
+runserver '05 02' '01 00' '05 00 00 01 ac 10 fe 01 1f 90'
+runclient 'apt@'
+testequal "http: SOCKS proxy $PROXY connection established to localhost (172.16.254.1:8080)" head -n 1 client.output
+testfileequal index.html 'HTML'
+
+msgmsg 'tor: SOCKS user:pass request not granted'
+runserver '05 02' '01 00' '05 04 00 01 00 00 00 00 00 00'
+runclient 'user:pass@'
+testsuccess grep 'could not connect to localhost (0.0.0.0:0) due to: Host unreachable (4)' client.output
+
+msgmsg 'tor: SOCKS user:pass request tll expired'
+runserver '05 02' '01 00' '05 06 00 01 00 00 00 00 00 00'
+runclient 'user:pass@'
+testsuccess grep 'could not connect to localhost (0.0.0.0:0) due to: TTL expired (6)' client.output
+
+msgmsg 'tor: SOCKS user:pass request service unreachable'
+runserver '05 02' '01 00' '05 06 00 01 00 00 00 00 00 00'
+runclient 'user:pass@' 'vwakviie2ienjx6t.onion'
+testsuccess grep 'could not connect to vwakviie2ienjx6t.onion (0.0.0.0:0) due to: Host unreachable (6)' client.output
+
+msgmsg 'tor: SOCKS user:pass request not granted onion'
+runserver '05 02' '01 00' '05 01 00 01 00 00 00 00 00 00'
+runclient 'user:pass@' 'vwakviie2ienjx6t.onion'
+testsuccess grep 'could not connect to vwakviie2ienjx6t.onion (0.0.0.0:0) due to: general SOCKS server failure (1)' client.output
+
+msgmsg 'tor: SOCKS user:pass request not granted subdomain'
+runserver '05 02' '01 00' '05 01 00 01 00 00 00 00 00 00'
+runclient 'user:pass@' 'ftp.vwakviie2ienjx6t.onion'
+testsuccess grep 'could not connect to ftp.vwakviie2ienjx6t.onion (0.0.0.0:0) due to: general SOCKS server failure (1)' client.output
+
+msgmsg 'tor: SOCKS user:pass request not granted too short'
+runserver '05 02' '01 00' '05 01 00 01 00 00 00 00 00 00'
+runclient 'user:pass@' 'wakviie2ienjx6t.onion'
+testsuccess grep 'could not connect to wakviie2ienjx6t.onion (0.0.0.0:0) due to: Invalid hostname: onion service name must be 16 characters long (1)' client.output
+
+msgmsg 'tor: SOCKS user:pass request not granted too long'
+runserver '05 02' '01 00' '05 01 00 01 00 00 00 00 00 00'
+runclient 'user:pass@' 'vwakviie2ienjx6t2.onion'
+testsuccess grep 'could not connect to vwakviie2ienjx6t2.onion (0.0.0.0:0) due to: Invalid hostname: onion service name must be 16 characters long (1)' client.output
+
+msgmsg 'tor: SOCKS user:pass request not granted too short subdomain'
+runserver '05 02' '01 00' '05 01 00 01 00 00 00 00 00 00'
+runclient 'user:pass@' 'a.akviie2ienjx6t.onion'
+testsuccess grep 'could not connect to a.akviie2ienjx6t.onion (0.0.0.0:0) due to: Invalid hostname: onion service name must be 16 characters long (1)' client.output
+
+msgmsg 'tor: SOCKS user:pass request not granted too short subdomains'
+runserver '05 02' '01 00' '05 01 00 01 00 00 00 00 00 00'
+runclient 'user:pass@' 'a.a.viie2ienjx6t.onion'
+testsuccess grep 'could not connect to a.a.viie2ienjx6t.onion (0.0.0.0:0) due to: Invalid hostname: onion service name must be 16 characters long (1)' client.output
diff --git a/test/integration/status-bug-590438-broken-provides-thanks-to-remove-order b/test/integration/status-bug-590438-broken-provides-thanks-to-remove-order
new file mode 100644
index 000000000..c2c03c0e4
--- /dev/null
+++ b/test/integration/status-bug-590438-broken-provides-thanks-to-remove-order
@@ -0,0 +1,97 @@
+Package: libc-bin
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 1516
+Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Architecture: i386
+Source: eglibc
+Version: 2.11.2-2
+Replaces: libc0.1, libc0.3, libc6, libc6.1
+Breaks: libc0.1 (<< 2.10), libc0.3 (<< 2.10), libc6 (<< 2.10), libc6.1 (<< 2.10)
+Filename: pool/main/e/eglibc/libc-bin_2.11.2-2_i386.deb
+Size: 703542
+MD5sum: f554ec34c092bb8e52e3d917bec7b46c
+SHA1: 4d5ba53b50937b1d50e3234e45335de5ea97b84b
+SHA256: 4f1e6430a730321209bb6b9cf89ba8a72c95f5c93f3e263a982251b3cc8beb14
+Description-de: Die »Embedded GNU C Library«: Binärdateien
+Homepage: http://www.eglibc.org
+Tag: devel::lang:c, devel::packaging, implemented-in::c, interface::commandline, role::program, scope::utility, special::auto-inst-parts, suite::gnu, works-with::text, works-with::unicode
+
+Package: libc6
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 9340
+Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Architecture: i386
+Source: eglibc
+Version: 2.11.2-2
+Provides: glibc-2.11-1
+Depends: libc-bin (= 2.11.2-2), libgcc1
+Recommends: libc6-i686
+Suggests: glibc-doc, debconf | debconf-2.0, locales
+Conflicts: tzdata (<< 2007k-1), tzdata-etch
+Breaks: locales (<< 2.11), locales-all (<< 2.11), nscd (<< 2.11)
+Filename: pool/main/e/eglibc/libc6_2.11.2-2_i386.deb
+Size: 3877166
+MD5sum: 3d8fe972a359ad362ac1957c2687e5c2
+SHA1: cd901f3265254e40ad198b935877f546eeaa8403
+SHA256: e1bc3da1e11f9b742d05f927362e2079482db4186ff45af9f937d284e112e7e5
+Description-de: Die »Embedded GNU C Library«: Laufzeitbibliotheken
+Homepage: http://www.eglibc.org
+Tag: devel::lang:c, devel::library, implemented-in::c, protocol::ipv6, role::shared-lib, suite::gnu
+
+Package: mawk
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 228
+Maintainer: Steve Langasek <vorlon@debian.org>
+Architecture: i386
+Version: 1.3.3-15
+Provides: awk
+Pre-Depends: libc6 (>= 2.1)
+Filename: pool/main/m/mawk/mawk_1.3.3-15_i386.deb
+Size: 81430
+MD5sum: e0f9e9903a862a52b5f107d560c4d8e0
+SHA1: cca3b3ea3a57b9c3c136fb538a4fb06a99d1a33e
+SHA256: 7449b10ffb6a8636a249ad6866188cad0040a6a446fb4a3a71d81fd136297ee6
+Description-de: Eine Muster- und Textverarbeitungssprache
+Tag: devel::interpreter, implemented-in::c, interface::commandline, role::program, scope::utility, use::filtering, use::scanning, works-with::text
+
+Package: gcc-4.5-base
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 172
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: i386
+Source: gcc-4.5
+Version: 4.5.0-8
+Filename: pool/main/g/gcc-4.5/gcc-4.5-base_4.5.0-8_i386.deb
+Size: 117894
+MD5sum: f5850c42681fcfee3429a1b43da68433
+SHA1: 0548343feba69c4c01d5dbf147393d8dc27605ac
+SHA256: 04b60f5fe24b7397e3be233051615ff9addb66d4581578f67fde76f5d7f69f7a
+Description: The GNU Compiler Collection (base package)
+Homepage: http://gcc.gnu.org/
+
+Package: libgcc1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 148
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: i386
+Source: gcc-4.5 (4.5.0-8)
+Version: 1:4.5.0-8
+Depends: gcc-4.5-base (= 4.5.0-8), libc6 (>= 2.2.4)
+Filename: pool/main/g/gcc-4.5/libgcc1_4.5.0-8_i386.deb
+Size: 52190
+MD5sum: beda956a1dcdeffed11072c2d0f3eb83
+SHA1: 7117ec43eec7982a030fcc9a12d4772de3fcdba0
+SHA256: 1d10bd532adce8683b475fcc60c22300f717ef19bf84dc5bf43b07e504f85dcb
+Description: GCC support library
+Homepage: http://gcc.gnu.org/
+
diff --git a/test/integration/status-bug-591882-conkeror b/test/integration/status-bug-591882-conkeror
new file mode 100644
index 000000000..f05ac812b
--- /dev/null
+++ b/test/integration/status-bug-591882-conkeror
@@ -0,0 +1,1357 @@
+Package: conkeror
+Status: install ok installed
+Priority: extra
+Section: web
+Installed-Size: 1044
+Maintainer: Axel Beckert <abe@deuxchevaux.org>
+Architecture: all
+Version: 0.9~git080629-2
+Provides: www-browser
+Depends: xulrunner (>= 1.9~) | xulrunner-1.9
+Recommends: conkeror-spawn-process-helper
+Suggests: emacs | emacsen
+Description: keyboard focused web browser with Emacs look and feel
+
+Package: coreutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 10032
+Maintainer: Michael Stone <mstone@debian.org>
+Architecture: i386
+Version: 6.10-6
+Replaces: textutils, shellutils, fileutils, stat, debianutils (<= 2.3.1), dpkg (<< 1.13.2)
+Provides: textutils, shellutils, fileutils
+Pre-Depends: libacl1 (>= 2.2.11-1), libc6 (>= 2.6.1-1), libselinux1 (>= 2.0.15)
+Conflicts: stat
+Description: The GNU core utilities
+
+Package: debconf-i18n
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 1100
+Maintainer: Debconf Developers <debconf-devel@lists.alioth.debian.org>
+Architecture: all
+Source: debconf
+Version: 1.5.24
+Replaces: debconf (<< 1.3.0), debconf-utils (<< 1.3.22)
+Depends: debconf, liblocale-gettext-perl, libtext-iconv-perl, libtext-wrapi18n-perl, libtext-charwidth-perl
+Conflicts: debconf-english, debconf-utils (<< 1.3.22)
+Description: full internationalization support for debconf
+
+Package: debconf
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 1508
+Maintainer: Debconf Developers <debconf-devel@lists.alioth.debian.org>
+Architecture: all
+Version: 1.5.24
+Replaces: debconf-tiny
+Provides: debconf-2.0
+Depends: debconf-i18n | debconf-english
+Pre-Depends: perl-base (>= 5.6.1-4)
+Recommends: apt-utils (>= 0.5.1)
+Suggests: debconf-doc, debconf-utils, whiptail | dialog | gnome-utils, libterm-readline-gnu-perl, libgnome2-perl, libqt-perl, libnet-ldap-perl, perl
+Conflicts: apt (<< 0.3.12.1), cdebconf (<< 0.96), debconf-tiny, debconf-utils (<< 1.3.22), dialog (<< 0.9b-20020814-1), menu (<= 2.1.3-1), whiptail (<< 0.51.4-11), whiptail-utf8 (<= 0.50.17-13)
+Description: Debian configuration management system
+
+Package: debianutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 272
+Maintainer: Clint Adams <schizo@debian.org>
+Architecture: i386
+Version: 2.30
+Pre-Depends: libc6 (>= 2.7-1)
+Description: Miscellaneous utilities specific to Debian
+
+Package: defoma
+Status: install ok installed
+Priority: optional
+Section: admin
+Installed-Size: 449
+Maintainer: Angus Lees <gus@debian.org>
+Architecture: all
+Version: 0.11.10-0.2
+Depends: file, perl (>= 5.6.0-16), whiptail | dialog
+Recommends: libft-perl
+Suggests: defoma-doc, dfontmgr, psfontmgr, x-ttcidfont-conf
+Conflicts: defoma-gs, defoma-ps, defoma-x, dfontmgr (<< 0.10.0), psfontmgr (<< 0.5.0), x-ttcidfont-conf (<< 5)
+Description: Debian Font Manager -- automatic font configuration framework
+Enhances: debhelper
+
+Package: dpkg
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 7276
+Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
+Architecture: i386
+Version: 1.14.29
+Replaces: manpages-de (<= 0.4-3), manpages-pl (<= 20051117-1)
+Pre-Depends: libc6 (>= 2.7-1), coreutils (>= 5.93-1), lzma
+Suggests: apt
+Conflicts: apt (<< 0.7.7), aptitude (<< 0.4.7-1), dpkg-dev (<< 1.14.16), dpkg-iasearch (<< 0.11), sysvinit (<< 2.82-1)
+Description: Debian package management system
+Origin: debian
+Bugs: debbugs://bugs.debian.org
+
+Package: file
+Status: install ok installed
+Priority: standard
+Section: utils
+Installed-Size: 136
+Maintainer: Daniel Baumann <daniel@debian.org>
+Architecture: i386
+Version: 4.26-1
+Depends: libc6 (>= 2.7-1), libmagic1 (= 4.26-1), zlib1g (>= 1:1.1.4)
+Description: Determines file type using "magic" numbers
+
+Package: fontconfig-config
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 250
+Maintainer: Keith Packard <keithp@debian.org>
+Architecture: all
+Source: fontconfig
+Version: 2.6.0-3
+Replaces: fontconfig (<< 2.3.2-2)
+Depends: debconf (>= 0.5) | debconf-2.0, ucf (>= 0.29), ttf-dejavu | ttf-bitstream-vera | ttf-freefont | gsfonts-x11
+Conflicts: fontconfig (<< 2.3.2-2)
+Description: generic font configuration library - configuration
+
+Package: fontconfig
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 384
+Maintainer: Keith Packard <keithp@debian.org>
+Architecture: i386
+Version: 2.6.0-3
+Replaces: fontconfig-config (<< 2.5.93-1)
+Depends: libc6 (>= 2.7-1), libfontconfig1 (>= 2.4.0), fontconfig-config
+Suggests: defoma (>= 0.7.0)
+Description: generic font configuration library - support binaries
+
+Package: gcc-4.3-base
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 160
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: i386
+Source: gcc-4.3
+Version: 4.3.2-1.1
+Replaces: cpp-4.3 (<< 4.3.2)
+Description: The GNU Compiler Collection (base package)
+
+Package: libacl1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 48
+Maintainer: Nathan Scott <nathans@debian.org>
+Architecture: i386
+Source: acl
+Version: 2.2.47-2
+Depends: libattr1 (>= 2.4.41-1), libc6 (>= 2.7-1)
+Conflicts: acl (<< 2.0.0), libacl1-kerberos4kth
+Description: Access control list shared library
+
+Package: libatk1.0-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 168
+Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: atk1.0
+Version: 1.22.0-1
+Depends: libc6 (>= 2.7-1), libglib2.0-0 (>= 2.16.0)
+Recommends: libatk1.0-data
+Description: The ATK accessibility toolkit
+
+Package: libattr1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 36
+Maintainer: Nathan Scott <nathans@debian.org>
+Architecture: i386
+Source: attr
+Version: 1:2.4.43-2
+Depends: libc6 (>= 2.7-1)
+Conflicts: attr (<< 2.0.0)
+Description: Extended attribute shared library
+
+Package: libbz2-1.0
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 92
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: i386
+Source: bzip2
+Version: 1.0.5-1
+Depends: libc6 (>= 2.7-1)
+Description: high-quality block-sorting file compressor library - runtime
+
+Package: libc6
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 10756
+Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Architecture: i386
+Source: glibc
+Version: 2.7-18lenny4
+Provides: glibc-2.7-1
+Depends: libgcc1
+Suggests: locales, glibc-doc, libc6-i686
+Conflicts: libterm-readline-gnu-perl (<< 1.15-2), tzdata (<< 2007k-1), tzdata-etch
+Description: GNU C Library: Shared libraries
+
+Package: libcairo2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 844
+Maintainer: Dave Beckett <dajobe@debian.org>
+Architecture: i386
+Source: cairo
+Version: 1.6.4-7
+Replaces: libcairo0.5.1, libcairo0.6.0, libcairo0.9.0, libcairo1
+Provides: libcairo
+Depends: libc6 (>= 2.7-1), libdirectfb-1.0-0, libfontconfig1 (>= 2.4.0), libfreetype6 (>= 2.3.5), libpixman-1-0 (>= 0.10.0), libpng12-0 (>= 1.2.13-4), libx11-6, libxcb-render-util0 (>= 0.2.1+git1), libxcb-render0, libxcb1, libxrender1, zlib1g (>= 1:1.1.4)
+Conflicts: libcairo1
+Description: The Cairo 2D vector graphics library
+
+Package: libcomerr2
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 96
+Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+Architecture: i386
+Source: e2fsprogs
+Version: 1.41.3-1
+Replaces: e2fsprogs (<< 1.34-1)
+Provides: libcomerr-kth-compat
+Depends: libc6 (>= 2.7-1)
+Description: common error description library
+
+Package: libcups2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 364
+Maintainer: Debian CUPS Maintainers <pkg-cups-devel@lists.alioth.debian.org>
+Architecture: i386
+Source: cups
+Version: 1.3.8-1+lenny8
+Replaces: libcupsys2 (<< 1.3.7-6)
+Provides: libcupsys2
+Depends: libc6 (>= 2.7-1), libcomerr2 (>= 1.01), libgnutls26 (>= 2.4.0-0), libkrb53 (>= 1.6.dfsg.2), zlib1g (>= 1:1.1.4)
+Suggests: cups-common
+Conflicts: libcupsys2 (<< 1.3.7-6)
+Description: Common UNIX Printing System(tm) - libs
+
+Package: libdatrie0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 60
+Maintainer: Theppitak Karoonboonyanan <thep@linux.thai.net>
+Architecture: i386
+Source: libdatrie
+Version: 0.1.3-2
+Depends: libc6 (>= 2.7-1)
+Description: Double-array trie library
+
+Package: libdb4.6
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 1248
+Maintainer: Debian Berkeley DB Maintainers <pkg-db-devel@lists.alioth.debian.org>
+Architecture: i386
+Source: db4.6
+Version: 4.6.21-11
+Depends: libc6 (>= 2.7-1)
+Conflicts: libdb2 (<< 2:2.7.7-3)
+Description: Berkeley v4.6 Database Libraries [runtime]
+
+Package: libdirectfb-1.0-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 2140
+Maintainer: Debian DirectFB Team <pkg-directfb-devel@lists.alioth.debian.org>
+Architecture: i386
+Source: directfb
+Version: 1.0.1-11
+Depends: libc6 (>= 2.7-1), libsysfs2, libts-0.0-0 (>= 1.0)
+Description: direct frame buffer graphics - shared libraries
+
+Package: libexpat1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 364
+Maintainer: Debian XML/SGML Group <debian-xml-sgml-pkgs@lists.alioth.debian.org>
+Architecture: i386
+Source: expat
+Version: 2.0.1-4+lenny3
+Depends: libc6 (>= 2.7-1)
+Conflicts: wink (<= 1.5.1060-4)
+Description: XML parsing C library - runtime library
+
+Package: libfontconfig1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 336
+Maintainer: Keith Packard <keithp@debian.org>
+Architecture: i386
+Source: fontconfig
+Version: 2.6.0-3
+Depends: libc6 (>= 2.7-1), libexpat1 (>= 1.95.8), libfreetype6 (>= 2.3.5), zlib1g (>= 1:1.1.4), fontconfig-config (= 2.6.0-3)
+Description: generic font configuration library - runtime
+
+Package: libfreetype6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 672
+Maintainer: Steve Langasek <vorlon@debian.org>
+Architecture: i386
+Source: freetype
+Version: 2.3.7-2+lenny1
+Replaces: freetype0, freetype1
+Depends: libc6 (>= 2.7-1), zlib1g (>= 1:1.1.4)
+Suggests: libfreetype6-dev
+Conflicts: freetype, xpdf-reader (<< 1.00-4)
+Description: FreeType 2 font engine, shared library files
+
+Package: libgcc1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 88
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: i386
+Source: gcc-4.3 (4.3.2-1.1)
+Version: 1:4.3.2-1.1
+Depends: gcc-4.3-base (= 4.3.2-1.1), libc6 (>= 2.7-1)
+Description: GCC support library
+
+Package: libgcrypt11
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 508
+Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint@lists.alioth.debian.org>
+Architecture: i386
+Version: 1.4.1-1
+Depends: libc6 (>= 2.7-1), libgpg-error0 (>= 1.4)
+Suggests: rng-tools
+Description: LGPL Crypto library - runtime library
+
+Package: libgdbm3
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 80
+Maintainer: James Troup <james@nocrew.org>
+Architecture: i386
+Source: gdbm
+Version: 1.8.3-3
+Depends: libc6 (>= 2.3.6-6)
+Description: GNU dbm database routines (runtime version)
+
+Package: libglib2.0-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 1732
+Maintainer: Loic Minier <lool@dooz.org>
+Architecture: i386
+Source: glib2.0
+Version: 2.16.6-3
+Depends: libc6 (>= 2.7-1), libpcre3 (>= 7.4), libselinux1 (>= 2.0.59)
+Recommends: libglib2.0-data
+Conflicts: libpango1.0-0 (<< 1.11)
+Description: The GLib library of C routines
+
+Package: libgnutls26
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 1100
+Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint@lists.alioth.debian.org>
+Architecture: i386
+Source: gnutls26
+Version: 2.4.2-6+lenny2
+Replaces: gnutls0, gnutls0.4, gnutls3
+Depends: libc6 (>= 2.7-1), libgcrypt11 (>= 1.4.0), libgpg-error0 (>= 1.4), libtasn1-3 (>= 0.3.4), zlib1g (>= 1:1.1.4)
+Suggests: gnutls-bin
+Conflicts: gnutls0, gnutls0.4
+Description: the GNU TLS library - runtime library
+
+Package: libgpg-error0
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 196
+Maintainer: Jose Carlos Garcia Sogo <jsogo@debian.org>
+Architecture: i386
+Source: libgpg-error
+Version: 1.4-2
+Depends: libc6 (>= 2.3.6-6)
+Description: library for common error values and messages in GnuPG components
+
+Package: libgtk2.0-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 5084
+Maintainer: Sebastien Bacher <seb128@debian.org>
+Architecture: i386
+Source: gtk+2.0
+Version: 2.12.12-1~lenny2
+Replaces: libgtk2.0-0png3
+Provides: gtk2.0-binver-2.10.0
+Depends: libgtk2.0-common, libatk1.0-0 (>= 1.20.0), libc6 (>= 2.7-1), libcairo2 (>= 1.6.4-6.1), libcomerr2 (>= 1.01), libcups2 (>= 1.3.8), libfontconfig1 (>= 2.4.0), libglib2.0-0 (>= 2.16.0), libgnutls26 (>= 2.4.0-0), libjpeg62, libkrb53 (>= 1.6.dfsg.2), libpango1.0-0 (>= 1.20.3), libpng12-0 (>= 1.2.13-4), libtiff4, libx11-6, libxcomposite1 (>= 1:0.3-1), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3 (>= 1:4.0.1), libxi6, libxinerama1, libxrandr2, libxrender1, zlib1g (>= 1:1.1.4)
+Recommends: hicolor-icon-theme, libgtk2.0-bin
+Suggests: librsvg2-common
+Conflicts: celestia (<< 1.2.4-4), eog2 (<< 1.0.1-4), gcin (<< 1.3.4-2), gimp1.3 (<< 1.3.7-1.1), glabels (<< 2.1.3-3), gnome-panel2 (<< 2.0.4-1), gnome-themes (<< 2.6), gtk-im-libthai (<< 0.1.4-3), gtk-qt-engine (<< 1:0.8~svn-rev36-1), gtk2-engines (<< 1:2.8.2-2), gtk2-engines-cleanice (<< 2.4.0-1.1), gtk2-engines-crux (<< 2.6), gtk2-engines-gtk-qt (<< 1:0.7-2), gtk2-engines-highcontrast (<< 2.6), gtk2-engines-industrial (<< 0.2.32-5), gtk2-engines-lighthouseblue (<< 2.6), gtk2-engines-magicchicken (<< 1.1.1-7.1), gtk2-engines-metal (<< 2.2.0-2.1), gtk2-engines-mist (<< 2.6), gtk2-engines-pixbuf (<= 2.10), gtk2-engines-qtpixmap (<< 0.28-1.2), gtk2-engines-redmond95 (<< 2.2.0-2.1), gtk2-engines-smooth (<< 0.5.6-3), gtk2-engines-thinice (<< 2.6), gtk2-engines-ubuntulooks (<= 0.9.11-1), gtk2-engines-wonderland (<< 1.0-4), gtk2-engines-xfce (<< 2.4.0-1), gtk2.0-examples (<< 2.2.0), iiimf-client-gtk (<< 12.3.91-4), iiimgcf (<= 11.4.1870-7.3), imhangul (<< 0.9.13-5), libeel2-2.18, libgdkxft0, libginspx0 (<< 20050529-1.1), libgnomeui-0 (<= 2.14.1-3), libgtk2.0-0png3, librsvg2-common (<= 2.14.4-2), libwmf-dev (<< 0.2.8.4-5), libwmf0.2-7 (<< 0.2.8.4-5), libwxgtk2.6-0 (<< 2.6.3.2.2-1), metacity (<< 1:2.20.0-1), metatheme (<< 0.9.7-3), openoffice.org-core (<< 2.2.1-8), scim-bridge (<= 0.2.4-1), scim-bridge-client-gtk (<< 0.4.10-1.1), scim-gtk2-immodule (<< 1.4.4-8), swf-player (<< 0.3.6-2.3), tamil-gtk2im (<< 2.2-4.4), uim-gtk2.0 (<< 1:1.4.1-3), xfwm4 (<< 4.4.1-3)
+Description: The GTK+ graphical user interface library
+
+Package: libgtk2.0-common
+Status: install ok installed
+Priority: optional
+Section: misc
+Installed-Size: 15934
+Maintainer: Sebastien Bacher <seb128@debian.org>
+Architecture: all
+Source: gtk+2.0
+Version: 2.12.12-1~lenny2
+Replaces: libgtk1.3-common, libgtk2.0-data
+Recommends: libgtk2.0-0
+Conflicts: libgtk1.3-common, libgtk2.0-data
+Description: Common files for the GTK+ graphical user interface library
+
+Package: libhunspell-1.2-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 336
+Maintainer: Debian OpenOffice Team <debian-openoffice@lists.debian.org>
+Architecture: i386
+Source: hunspell
+Version: 1.2.6-1
+Depends: libc6 (>= 2.7-1), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.1.1)
+Recommends: myspell-en-us | myspell-dictionary | hunspell-dictionary
+Conflicts: openoffice.org-core (= 2.2.0~rc2-1)
+Description: spell checker and morphological analyzer (shared library)
+
+Package: libice6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 140
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libice
+Version: 2:1.0.4-1
+Depends: libc6 (>= 2.6-1), x11-common
+Description: X11 Inter-Client Exchange library
+
+Package: libjpeg62
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 164
+Maintainer: Bill Allombert <ballombe@debian.org>
+Architecture: i386
+Source: libjpeg6b
+Version: 6b-14
+Depends: libc6 (>= 2.6.1-1)
+Description: The Independent JPEG Group's JPEG runtime library
+
+Package: libkeyutils1
+Status: install ok installed
+Priority: standard
+Section: misc
+Installed-Size: 56
+Maintainer: Daniel Baumann <daniel@debian.org>
+Architecture: i386
+Source: keyutils
+Version: 1.2-9
+Depends: libc6 (>= 2.7-1)
+Description: Linux Key Management Utilities (library)
+
+Package: libkrb53
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 1188
+Maintainer: Sam Hartman <hartmans@debian.org>
+Architecture: i386
+Source: krb5
+Version: 1.6.dfsg.4~beta1-5lenny4
+Depends: libc6 (>= 2.7-1), libcomerr2 (>= 1.34), libkeyutils1
+Suggests: krb5-doc, krb5-user
+Conflicts: libapache-mod-auth-kerb (<= 4.996-5.0-rc6-2), libapache2-mod-auth-kerb (<= 4.996-5.0-rc6-2), ssh-krb5 (<< 3.8.1p1-10)
+Description: MIT Kerberos runtime libraries
+
+Package: liblcms1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 260
+Maintainer: Oleksandr Moskalenko <malex@debian.org>
+Architecture: i386
+Source: lcms
+Version: 1.17.dfsg-1+lenny2
+Replaces: liblcms
+Provides: liblcms
+Depends: libc6 (>= 2.7-1)
+Suggests: liblcms-utils
+Conflicts: liblcms
+Description: Color management library
+
+Package: liblocale-gettext-perl
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 104
+Maintainer: Debian Perl Group <pkg-perl-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Version: 1.05-4
+Depends: libc6 (>= 2.7-1)
+Pre-Depends: perl-base (>= 5.10.0-9), perlapi-5.10.0
+Description: Using libc functions for internationalization in Perl
+
+Package: libmagic1
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 2412
+Maintainer: Daniel Baumann <daniel@debian.org>
+Architecture: i386
+Source: file
+Version: 4.26-1
+Depends: libc6 (>= 2.7-1), zlib1g (>= 1:1.1.4)
+Suggests: file
+Description: File type determination library using "magic" numbers
+
+Package: libmozjs1d
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 736
+Maintainer: Mike Hommey <glandium@debian.org>
+Architecture: i386
+Source: xulrunner
+Version: 1.9.0.19-1
+Depends: libc6 (>= 2.7-1), libnspr4-0d (>= 1.8.0.10)
+Description: The Mozilla SpiderMonkey JavaScript library
+
+Package: libncurses5
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 584
+Maintainer: Daniel Baumann <daniel@debian.org>
+Architecture: i386
+Source: ncurses
+Version: 5.7+20081213-1
+Depends: libc6 (>= 2.7-1)
+Recommends: libgpm2
+Description: shared libraries for terminal handling
+
+Package: libnewt0.52
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 820
+Maintainer: Alastair McKinstry <mckinstry@debian.org>
+Architecture: i386
+Source: newt
+Version: 0.52.2-11.3+lenny1
+Replaces: libnewt-utf8, libnewt0, libnewt0.51
+Depends: libc6 (>= 2.7-1), libslang2 (>= 2.0.7-1)
+Recommends: libfribidi0
+Conflicts: libnewt0.51
+Description: Not Erik's Windowing Toolkit - text mode windowing with slang
+
+Package: libnspr4-0d
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 328
+Maintainer: Maintainers of Mozilla-related packages <pkg-mozilla-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: nspr
+Version: 4.7.1-5
+Depends: libc6 (>= 2.7-1)
+Conflicts: libnspr4, libnspr4-dev (<= 4.7.1-1)
+Description: NetScape Portable Runtime Library
+
+Package: libnss3-1d
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 2292
+Maintainer: Maintainers of Mozilla-related packages <pkg-mozilla-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: nss
+Version: 3.12.3.1-0lenny1
+Depends: libc6 (>= 2.7-1), libnspr4-0d (>= 1.8.0.10), libsqlite3-0 (>= 3.5.9), dpkg (<< 1.14.8) | dpkg (>= 1.14.18)
+Conflicts: libnss3, libnss3-0d (>= 3.11.5), libnss3-dev (<= 3.12.0~rc3-1)
+Description: Network Security Service libraries
+
+Package: libpango1.0-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 780
+Maintainer: Sebastien Bacher <seb128@debian.org>
+Architecture: i386
+Source: pango1.0
+Version: 1.20.5-5+lenny1
+Provides: pango1.0-modver-1.6.0
+Depends: libpango1.0-common (>= 1.20.5-5+lenny1), libc6 (>= 2.7-1), libcairo2 (>= 1.6.4-6.1), libdatrie0 (>= 0.1.2), libfontconfig1 (>= 2.4.0), libfreetype6 (>= 2.3.5), libglib2.0-0 (>= 2.16.0), libthai0 (>= 0.1.9), libx11-6, libxft2 (>> 2.1.1), libxrender1, zlib1g (>= 1:1.1.4)
+Conflicts: pango-libthai
+Description: Layout and rendering of internationalized text
+
+Package: libpango1.0-common
+Status: install ok installed
+Priority: optional
+Section: misc
+Installed-Size: 204
+Maintainer: Sebastien Bacher <seb128@debian.org>
+Architecture: all
+Source: pango1.0
+Version: 1.20.5-5+lenny1
+Replaces: libpango-common (<< 1.0.0), libpango0
+Depends: debconf | debconf-2.0, defoma (>= 0.11.1), fontconfig (>= 2.1.91)
+Recommends: x-ttcidfont-conf, libpango1.0-0
+Suggests: ttf-kochi-gothic, ttf-kochi-mincho, ttf-thryomanes, ttf-baekmuk, ttf-arphic-gbsn00lp, ttf-arphic-bsmi00lp, ttf-arphic-gkai00mp, ttf-arphic-bkai00mp
+Conflicts: pango-libthai (<< 0.1.6-2)
+Description: Modules and configuration files for the Pango
+
+Package: libpcre3
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 356
+Maintainer: Mark Baker <mark@mnb.org.uk>
+Architecture: i386
+Source: pcre3
+Version: 7.6-2.1
+Depends: libc6 (>= 2.7-1)
+Conflicts: libpcre3-dev (<= 4.3-3)
+Description: Perl 5 Compatible Regular Expression Library - runtime files
+
+Package: libpixman-1-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 220
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: pixman
+Version: 0.10.0-2
+Depends: libc6 (>= 2.7-1)
+Description: pixel-manipulation library for X and cairo
+
+Package: libpng12-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 316
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: i386
+Source: libpng
+Version: 1.2.27-2+lenny3
+Replaces: libpng12-dev (<= 1.2.8rel-7)
+Depends: libc6 (>= 2.7-1), zlib1g (>= 1:1.1.4)
+Conflicts: libpng12-dev (<= 1.2.8rel-7), mzscheme (<= 1:209-5), pngcrush (<= 1.5.10-2), pngmeta (<= 1.11-3), povray-3.5 (<= 3.5.0c-10), qemacs (<= 0.3.1-5)
+Description: PNG library - runtime
+
+Package: libpopt0
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 192
+Maintainer: Paul Martin <pm@debian.org>
+Architecture: i386
+Source: popt
+Version: 1.14-4
+Replaces: popt
+Depends: libc6 (>= 2.7-1)
+Conflicts: libpopt-dev (<= 1.4-1), popt, rpm (<= 4.0.2-3)
+Description: lib for parsing cmdline parameters
+
+Package: libreadline5
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 320
+Maintainer: Matthias Klose <doko@debian.org>
+Architecture: i386
+Source: readline5
+Version: 5.2-3.1
+Depends: readline-common, libc6 (>= 2.7-1), libncurses5 (>= 5.6+20071006-3)
+Description: GNU readline and history libraries, run-time libraries
+
+Package: libselinux1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 148
+Maintainer: Manoj Srivastava <srivasta@debian.org>
+Architecture: i386
+Source: libselinux
+Version: 2.0.65-5
+Depends: libc6 (>= 2.7-1)
+Description: SELinux shared libraries
+
+Package: libslang2
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 1104
+Maintainer: Alastair McKinstry <mckinstry@debian.org>
+Architecture: i386
+Source: slang2
+Version: 2.1.3-3
+Depends: libc6 (>= 2.7-1)
+Recommends: libpng12-0
+Description: The S-Lang programming library - runtime version
+
+Package: libsm6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 84
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libsm
+Version: 2:1.0.3-2
+Depends: libc6 (>= 2.7-1), libice6 (>= 1:1.0.0), x11-common
+Description: X11 Session Management library
+
+Package: libsqlite3-0
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 468
+Maintainer: Laszlo Boszormenyi (GCS) <gcs@debian.hu>
+Architecture: i386
+Source: sqlite3
+Version: 3.5.9-6
+Depends: libc6 (>= 2.7-1)
+Description: SQLite 3 shared library
+
+Package: libstartup-notification0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 92
+Maintainer: Ondřej Surý <ondrej@debian.org>
+Architecture: i386
+Source: startup-notification
+Version: 0.9-1
+Depends: libc6 (>= 2.3.6-6), libice6 (>= 1:1.0.0), libsm6, libx11-6
+Description: library for program launch feedback (shared library)
+
+Package: libstdc++6
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 1168
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: i386
+Source: gcc-4.3
+Version: 4.3.2-1.1
+Depends: gcc-4.3-base (= 4.3.2-1.1), libc6 (>= 2.7-1), libgcc1 (>= 1:4.1.1)
+Conflicts: scim (<< 1.4.2-1)
+Description: The GNU Standard C++ Library v3
+
+Package: libsysfs2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 112
+Maintainer: Martin Pitt <mpitt@debian.org>
+Architecture: i386
+Source: sysfsutils
+Version: 2.1.0-5
+Depends: libc6 (>= 2.7-1)
+Description: interface library to sysfs
+
+Package: libtasn1-3
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 164
+Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint@lists.alioth.debian.org>
+Architecture: i386
+Version: 1.4-1
+Depends: libc6 (>= 2.7-1)
+Conflicts: libtasn1-2 (= 0.3.1-1)
+Description: Manage ASN.1 structures (runtime)
+
+Package: libtext-charwidth-perl
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 36
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: i386
+Source: libtext-charwidth-perl (0.04-5)
+Version: 0.04-5+b1
+Depends: libc6 (>= 2.7-1), perl-base (>= 5.10.0-9), perlapi-5.10.0
+Description: get display widths of characters on the terminal
+
+Package: libtext-iconv-perl
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 44
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: i386
+Source: libtext-iconv-perl (1.7-1)
+Version: 1.7-1+b1
+Depends: libc6 (>= 2.7-1), perl-base (>= 5.10.0-9), perlapi-5.10.0
+Description: converts between character sets in Perl
+
+Package: libtext-wrapi18n-perl
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 28
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: all
+Version: 0.06-6
+Depends: libtext-charwidth-perl
+Description: internationalized substitute of Text::Wrap
+
+Package: libthai-data
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 340
+Maintainer: Theppitak Karoonboonyanan <thep@linux.thai.net>
+Architecture: all
+Source: libthai
+Version: 0.1.9-4+lenny1
+Description: Data files for Thai language support library
+
+Package: libthai0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 100
+Maintainer: Theppitak Karoonboonyanan <thep@linux.thai.net>
+Architecture: i386
+Source: libthai
+Version: 0.1.9-4+lenny1
+Depends: libc6 (>= 2.7-1), libdatrie0 (>= 0.1.2), libthai-data
+Description: Thai language support library
+
+Package: libtiff4
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 456
+Maintainer: Jay Berkenbilt <qjb@debian.org>
+Architecture: i386
+Source: tiff
+Version: 3.8.2-11.2
+Depends: libc6 (>= 2.7-1), libjpeg62, zlib1g (>= 1:1.1.4)
+Description: Tag Image File Format (TIFF) library
+
+Package: libts-0.0-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 108
+Maintainer: Neil Williams <codehelp@debian.org>
+Architecture: i386
+Source: tslib
+Version: 1.0-4
+Replaces: libts0, tslib
+Provides: libts0, tslib
+Depends: libc6 (>= 2.7-1)
+Conflicts: libts0, tslib
+Description: touch screen library
+
+Package: libx11-6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 1240
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libx11
+Version: 2:1.1.5-2
+Depends: libc6 (>= 2.7-1), libxcb-xlib0, libxcb1, libx11-data
+Conflicts: xlibs-data (<< 1:7.0.0)
+Description: X11 client-side library
+
+Package: libx11-data
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 3108
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: all
+Source: libx11
+Version: 2:1.1.5-2
+Replaces: libx11-6 (<= 2:1.0.0-1)
+Description: X11 client-side library
+
+Package: libxau6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 64
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxau
+Version: 1:1.0.3-3
+Depends: libc6 (>= 2.7-1)
+Description: X11 authorisation library
+
+Package: libxcb-render-util0
+Status: install ok installed
+Priority: extra
+Section: libs
+Installed-Size: 40
+Maintainer: Julien Danjou <acid@debian.org>
+Architecture: i386
+Source: xcb-util
+Version: 0.2.1+git1-1
+Depends: libc6 (>= 2.7-1), libxcb-render0, libxcb1
+Description: utility libraries for X C Binding -- render-util
+
+Package: libxcb-render0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 88
+Maintainer: XCB Developers <xcb@lists.freedesktop.org>
+Architecture: i386
+Source: libxcb
+Version: 1.1-1.2
+Depends: libc6 (>= 2.7-1), libxcb1
+Description: X C Binding, render extension
+
+Package: libxcb-xlib0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 68
+Maintainer: XCB Developers <xcb@lists.freedesktop.org>
+Architecture: i386
+Source: libxcb
+Version: 1.1-1.2
+Depends: libc6 (>= 2.7-1), libxcb1
+Description: X C Binding, Xlib/XCB interface library
+
+Package: libxcb1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 160
+Maintainer: XCB Developers <xcb@lists.freedesktop.org>
+Architecture: i386
+Source: libxcb
+Version: 1.1-1.2
+Depends: libc6 (>= 2.7-1), libxau6, libxdmcp6
+Description: X C Binding
+
+Package: libxcomposite1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 60
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxcomposite
+Version: 1:0.4.0-3
+Depends: libc6 (>= 2.7-1), libx11-6, libxext6, libxfixes3 (>= 1:4.0.1)
+Description: X11 Composite extension library
+
+Package: libxcursor1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 80
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxcursor
+Version: 1:1.1.9-1
+Depends: libc6 (>= 2.6-1), libx11-6, libxfixes3 (>= 1:4.0.1), libxrender1
+Description: X cursor management library
+
+Package: libxdamage1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 60
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxdamage
+Version: 1:1.1.1-4
+Depends: libc6 (>= 2.7-1), libx11-6, libxfixes3 (>= 1:4.0.1)
+Description: X11 damaged region extension library
+
+Package: libxdmcp6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 76
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxdmcp
+Version: 1:1.0.2-3
+Depends: libc6 (>= 2.7-1)
+Description: X11 Display Manager Control Protocol library
+
+Package: libxext6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 184
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxext
+Version: 2:1.0.4-2
+Depends: libc6 (>= 2.7-1), libx11-6, libxau6, x11-common
+Description: X11 miscellaneous extension library
+
+Package: libxfixes3
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 64
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxfixes
+Version: 1:4.0.3-2
+Depends: libc6 (>= 2.3.6-6), libx11-6
+Pre-Depends: x11-common (>= 1:7.0.0)
+Description: X11 miscellaneous 'fixes' extension library
+
+Package: libxft2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 132
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: xft
+Version: 2.1.12-3
+Depends: libc6 (>= 2.7-1), libfontconfig1 (>= 2.4.0), libfreetype6 (>= 2.3.5), libx11-6, libxrender1, zlib1g (>= 1:1.1.4)
+Description: FreeType-based font drawing library for X
+
+Package: libxi6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 148
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxi
+Version: 2:1.1.4-1
+Depends: libc6 (>= 2.7-1), libx11-6, libxext6, x11-common
+Description: X11 Input extension library
+
+Package: libxinerama1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 60
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxinerama
+Version: 2:1.0.3-2
+Depends: libc6 (>= 2.7-1), libx11-6, libxext6
+Description: X11 Xinerama extension library
+
+Package: libxrandr2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 84
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxrandr
+Version: 2:1.2.3-1
+Depends: libc6 (>= 2.7-1), libx11-6, libxext6, libxrender1
+Description: X11 RandR extension library
+
+Package: libxrender1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 88
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxrender
+Version: 1:0.9.4-2
+Depends: libc6 (>= 2.7-1), libx11-6
+Description: X Rendering Extension client library
+
+Package: libxt6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 380
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxt
+Version: 1:1.0.5-3
+Depends: libc6 (>= 2.5-5), libice6 (>= 1:1.0.0), libsm6, libx11-6
+Pre-Depends: x11-common (>= 1:7.0.0)
+Description: X11 toolkit intrinsics library
+
+Package: lsb-base
+Status: install ok installed
+Priority: required
+Section: misc
+Installed-Size: 72
+Maintainer: Chris Lawrence <lawrencc@debian.org>
+Architecture: all
+Source: lsb
+Version: 3.2-20
+Replaces: lsb (<< 2.0-6), lsb-core (<< 2.0-6)
+Depends: sed, ncurses-bin
+Conflicts: lsb (<< 2.0-6), lsb-core (<< 2.0-6)
+Description: Linux Standard Base 3.2 init script functionality
+
+Package: lzma
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 124
+Maintainer: Mohammed Adnène Trojette <adn+deb@diwi.org>
+Architecture: i386
+Version: 4.43-14
+Depends: libc6 (>= 2.7-1), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.2.1)
+Description: Compression method of 7z format in 7-Zip program
+
+Package: ncurses-bin
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 480
+Maintainer: Daniel Baumann <daniel@debian.org>
+Architecture: i386
+Source: ncurses
+Version: 5.7+20081213-1
+Provides: tput
+Pre-Depends: libc6 (>= 2.7-1), libncurses5 (>= 5.6+20071006-3)
+Conflicts: ncurses, tput
+Description: terminal-related programs and man pages
+
+Package: perl-base
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 4316
+Maintainer: Brendan O'Dea <bod@debian.org>
+Architecture: i386
+Source: perl
+Version: 5.10.0-19lenny2
+Replaces: libclass-multimethods-perl (<< 1.70-4), libperl5.8 (<< 5.8.0-20), libscalar-list-utils-perl, libxsloader-perl, perl (<= 5.10.0-9), perl-modules (<< 5.10.0-12)
+Provides: libscalar-list-utils-perl, libxsloader-perl, perl5-base, perlapi-5.10.0
+Pre-Depends: libc6 (>= 2.7-1), dpkg (>= 1.14.20)
+Suggests: perl
+Conflicts: autoconf2.13 (<< 2.13-45), findimagedupes (<< 2.11-2), icheck (<< 0.9.7-6.1), libcflow-perl (<< 1:0.68-11.1), libclass-methodmaker-perl (<< 2.10-1), libclearsilver-perl (<< 0.10.4-1.1), libcrypt-openssl-bignum-perl (<< 0.04-1), libcrypt-openssl-dsa-perl (<< 0.13-3), libcrypt-openssl-random-perl (<< 0.04-1), libcrypt-openssl-rsa-perl (<< 0.25-1), libhamlib2-perl (<< 1.2.6.2-6), libqt-perl (<< 3.008-3), libscalar-list-utils-perl (<< 1:1.18-1), libsufary-perl (<< 2.1.1-8), libsys-cpu-perl (<< 0.40-2.1), libterm-size-perl (<< 0.2-4), libvideo-ivtv-perl (<< 0.13-6), libxsloader-perl (<< 0.08-1), megahal (<< 9.1.1a-5), razor (<< 1:2.84-6)
+Description: minimal Perl system
+
+Package: perl-modules
+Status: install ok installed
+Priority: standard
+Section: perl
+Installed-Size: 14520
+Maintainer: Brendan O'Dea <bod@debian.org>
+Architecture: all
+Source: perl
+Version: 5.10.0-19lenny2
+Replaces: libansicolor-perl, libarchive-tar-perl, libattribute-handlers-perl, libcgi-pm-perl, libcpanplus-perl, libextutils-cbuilder-perl, libextutils-parsexs-perl, libfile-temp-perl, libi18n-langtags-perl, libio-zlib-perl, liblocale-codes-perl, liblocale-maketext-perl, liblocale-maketext-simple-perl, libmath-bigint-perl, libmodule-build-perl, libmodule-corelist-perl, libmodule-load-conditional-perl, libmodule-load-perl, libmodule-pluggable-perl, libnet-perl, libnet-ping-perl, libparams-check-perl, libpod-parser-perl, libpod-simple-perl, libtest-harness-perl, libtest-simple-perl, libversion-perl, podlators-perl
+Provides: libansicolor-perl, libarchive-tar-perl, libattribute-handlers-perl, libcgi-pm-perl, libcpanplus-perl, libextutils-cbuilder-perl, libextutils-parsexs-perl, libfile-temp-perl, libi18n-langtags-perl, libio-zlib-perl, liblocale-codes-perl, liblocale-maketext-perl, liblocale-maketext-simple-perl, libmath-bigint-perl, libmodule-build-perl, libmodule-corelist-perl, libmodule-load-conditional-perl, libmodule-load-perl, libmodule-pluggable-perl, libnet-perl, libnet-ping-perl, libparams-check-perl, libpod-parser-perl, libpod-simple-perl, libtest-harness-perl, libtest-simple-perl, libversion-perl, podlators-perl
+Depends: perl (>= 5.10.0-1)
+Conflicts: libansicolor-perl (<< 1.10-1), libarchive-tar-perl (<= 1.38-2), libattribute-handlers-perl (<< 0.78.02-1), libcgi-pm-perl (<< 3.15-1), libcpanplus-perl (<< 0.83.09-1), libextutils-cbuilder-perl (<< 0.21-1), libextutils-parsexs-perl (<= 2.18), libfile-temp-perl (<< 0.18), libi18n-langtags-perl (<< 0.35-1), libio-zlib-perl (<< 1.07-1), liblocale-codes-perl (<< 2.06.1-1), liblocale-maketext-perl (<< 1.08-1), liblocale-maketext-simple-perl (<< 0.18-1), libmath-bigint-perl (<< 1.77-1), libmodule-build-perl (<< 0.2808.1-1), libmodule-corelist-perl (<< 2.13-1), libmodule-load-conditional-perl (<< 0.22-1), libmodule-load-perl (<< 0.12-1), libmodule-pluggable-perl (<< 3.6-1), libnet-perl (<= 1:1.19-3), libnet-ping-perl (<< 2.31-1), libparams-check-perl (<< 0.26-1), libpod-parser-perl (<< 1.32-1), libpod-simple-perl (<< 3.05-2), libtest-harness-perl (<< 2.56-1), libtest-simple-perl (<< 0.62-1), libversion-perl (<< 1:0.7400-2), podlators-perl (<< 2.2.0)
+Description: Core Perl modules
+Build-Essential: yes
+
+Package: perl
+Status: install ok installed
+Priority: standard
+Section: perl
+Installed-Size: 13524
+Maintainer: Brendan O'Dea <bod@debian.org>
+Architecture: i386
+Version: 5.10.0-19lenny2
+Replaces: libarchive-tar-perl (<= 1.38-2), libdigest-md5-perl, libdigest-sha-perl, libmime-base64-perl, libmodule-corelist-perl (<< 2.14-2), libstorable-perl, libtime-hires-perl, libtime-piece-perl, perl-base (<< 5.8.8-1), perl-doc (<< 5.8.0-1), perl-modules (<< 5.8.1-1)
+Provides: data-dumper, libdigest-md5-perl, libdigest-sha-perl, libmime-base64-perl, libstorable-perl, libtime-hires-perl, libtime-piece-perl, perl5
+Depends: perl-base (= 5.10.0-19lenny2), perl-modules (>= 5.10.0-19lenny2), libc6 (>= 2.7-1), libdb4.6, libgdbm3
+Recommends: netbase
+Suggests: perl-doc, libterm-readline-gnu-perl | libterm-readline-perl-perl
+Conflicts: libdigest-md5-perl (<< 3.07-1), libdigest-sha-perl (<< 5.45-1), libmime-base64-perl (<< 3.07-1), libstorable-perl (<< 2.15-1), libtime-hires-perl (<< 1.86-1), libtime-piece-perl (<< 1.12-1), perl-doc (<< 5.10.0-1)
+Description: Larry Wall's Practical Extraction and Report Language
+Build-Essential: yes
+
+Package: readline-common
+Status: install ok installed
+Priority: important
+Section: utils
+Installed-Size: 136
+Maintainer: Matthias Klose <doko@debian.org>
+Architecture: all
+Source: readline5
+Version: 5.2-3.1
+Replaces: libreadline-common, libreadline4 (<< 4.3-16), libreadline5 (<< 5.0-11)
+Conflicts: libreadline-common, libreadline5 (<< 5.0-11)
+Description: GNU readline and history libraries, common files
+
+Package: sed
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 628
+Maintainer: Clint Adams <schizo@debian.org>
+Architecture: i386
+Version: 4.1.5-6
+Replaces: ssed (<< 3.59)
+Pre-Depends: libc6 (>= 2.7-1)
+Description: The GNU sed stream editor
+
+Package: ttf-dejavu-core
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 2488
+Maintainer: Debian Fonts Task Force <pkg-fonts-devel@lists.alioth.debian.org>
+Architecture: all
+Source: ttf-dejavu
+Version: 2.25-3
+Replaces: ttf-dejavu (<< 2.20-1)
+Depends: defoma
+Conflicts: ttf-dejavu (<< 2.20-1)
+Description: Vera font family derivative with additional characters
+
+Package: ttf-dejavu-extra
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 5504
+Maintainer: Debian Fonts Task Force <pkg-fonts-devel@lists.alioth.debian.org>
+Architecture: all
+Source: ttf-dejavu
+Version: 2.25-3
+Replaces: ttf-dejavu (<< 2.20-1)
+Depends: defoma, ttf-dejavu-core
+Conflicts: ttf-dejavu (<< 2.20-1)
+Description: Vera font family derivative with additional characters
+
+Package: ttf-dejavu
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 68
+Maintainer: Debian Fonts Task Force <pkg-fonts-devel@lists.alioth.debian.org>
+Architecture: all
+Version: 2.25-3
+Depends: ttf-dejavu-core, ttf-dejavu-extra
+Conflicts: ttf-dejavu (<< 2.20-1)
+Description: Metapackage to pull in ttf-dejavu-core and ttf-dejavu-extra
+Task: bulgarian-desktop, hungarian-desktop, kurdish-desktop, macedonian-desktop, romanian-desktop, ukrainian-desktop
+
+Package: ucf
+Status: install ok installed
+Priority: standard
+Section: utils
+Installed-Size: 256
+Maintainer: Manoj Srivastava <srivasta@debian.org>
+Architecture: all
+Version: 3.0016
+Depends: debconf (>= 1.5.19), coreutils (>= 5.91)
+Description: Update Configuration File: preserve user changes to config files.
+
+Package: whiptail
+Status: install ok installed
+Priority: important
+Section: utils
+Installed-Size: 96
+Maintainer: Alastair McKinstry <mckinstry@debian.org>
+Architecture: i386
+Source: newt
+Version: 0.52.2-11.3+lenny1
+Replaces: newt0.10, newt0.21 (<< 0.21-4), whiptail-utf8
+Provides: whiptail-provider, whiptail-utf8
+Depends: libc6 (>= 2.7-1), libnewt0.52 (>= 0.52.2), libpopt0 (>= 1.14), libslang2 (>= 2.0.7-1)
+Conflicts: whiptail-provider
+Description: Displays user-friendly dialog boxes from shell scripts
+
+Package: x11-common
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 696
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: all
+Source: xorg
+Version: 1:7.3+20
+Replaces: x-common, xfree86-common, xorg-common, xserver-common (<< 7)
+Depends: debconf (>= 0.5) | debconf-2.0, debianutils (>= 1.13), lsb-base (>= 1.3-9ubuntu2)
+Pre-Depends: debconf | debconf-2.0
+Conflicts: aee (<= 2.2.15b-1), ascd (<= 0.13.2-3), beaver (<= 0.2.5-2), bibview (<= 2.2-8), bugsx (<= 1.08-8), buici-clock (<= 0.4.5+b1), communicator-smotif-477, ctwm (<= 3.7-2), emelfm (<= 0.9.2-7), epan, fte-xwindow (<= 0.50.0-1.3), fvwm1 (<= 1.24r-46), fvwm95 (<= 2.0.43ba-23+b1), gerstensaft (<= 0.2-5.1), ghostview, gipsc (<= 0.4.3-2), grace (<= 1:5.1.18-1), grace6 (<= 5.99.0+final-4), gradio (<= 1.0.1-6), groff (<= 1.18.1.1-7), guitar (<= 0.1.4-11), hamsoft (<< 0.2.3-1), hanterm-classic (<= 3.1.6.0-4), hanterm-xf (<= 1:3.3.1p18-9.2), hfsutils-tcltk (<= 3.2.6-7), ibp (<= 0.21-4), isdnutils-xtools (<= 1:3.8.2005-12-06-4), ivtools-bin (<= 1.1.3-5), ivtools-dev (<= 1.1.3-5), kdrill (<= 6.4-2.1), kinput2-canna (<= 3.1-7), kinput2-canna-wnn (<= 3.1-7), kinput2-wnn (<= 3.1-7), kterm (<= 6.2.0-45), lbxproxy (<< 7.0), libmotif-dev (<= 2.2.3-1.3), libxft-dev (<= 2.1.8.2-5), lm-batmon (<= 0.96-3), login.app (<= 1.2.1-18), lsb-core (<= 3.1-4), lwm (<= 1.2.1-1), mctools-lite (<= 970129-16), mgp (<= 1.11b-6), motif-clients (<= 2.2.3-1.3), navigator-smotif-477, netscape-base-4, olvwm (<= 4.4.3.2p1.4-21), olwm (<= 3.2p1.4-21), oneko (<= 1.2.sakura.6-1), opera (<< 9.10-20060616), pgaccess (<= 1:0.98.8.20030520-2), phototk, pixmap (<= 2.6pl4-14.1), plotmtv (<= 1.4.4t-8.1), pmud (<= 0.10-9), ppxp (<= 0.2001080415-14), ppxp-x11 (<= 0.2001080415-14), procmeter (<= 2.5.1-11), propsel (<= 971130-5.3), proxymngr (<< 7.0), qcam (<= 0.91-11.1), regexplorer (<= 0.1.6-12), seyon (<= 2.20c-20), skkinput (<= 1:2.06.4-4), stella (<< 2.2-1), tkdesk (<= 2.0-5), tkseti (<= 3.06-1), tkworld, twlog (<= 1.3-4), twm (<< 7.0), ucbmpeg-play (<< 2.3p-13), vide (<= 1.21-3), videogen (<= 0.32-1), vtwm (<= 5.4.7-2), w9wm (<= 0.4.2-4), wdm (<= 1.28-1), wily (<= 0.13.41-6), wmavgload (<= 0.7.0-6.1), wmcpu (<= 1.3-4.1), wmdate (<= 0.5-7.1), wmnet (<= 1.05-12), wmnetselect (<= 0.85-5.5), wmscope (<= 3.0-9.1), wmsensors (<= 1.0.4-3.4), wmtv (<= 0.6.5-15), x-common, xautolock (<= 1:2.1-6), xbanner (<= 1.31-23), xbase-clients (<< 1:7.0), xbatt (<= 1.2.1-4), xbattbar (<= 1.4.2-3.1), xcal (<= 4.1-18.2), xcalendar-i18n (<= 4.0.0.i18p1-13.1), xcb (<= 2.4-4), xclip (<= 0.08-5), xclips (<= 6.21-6), xcolors (<= 1.5a-2), xcolorsel (<= 1.1a-11), xdkcal (<= 0.9d-2.1), xdm (<= 1:1.0.1-6), xdmx (<< 1:1.0), xdu (<= 3.0-14), xearth (<= 1.1-10.2), xengine (<= 1.11-9), xephem (<= 3.4-5), xext, xezmlm (<= 1.0.3-11), xfaces (<= 3.3-25), xfishtank (<= 2.2-23.1), xfm (<= 1.4.3-8), xfractint (<< 20.3.01-1), xfree86-common, xfs (<< 1:1.0), xfs-xtt (<= 1:1.4.1.xf430-6), xftp, xfwp (<< 7.0), xgdipc (<= 1.2-0.3), xgmod (<= 3.1-9), xgobi, xgraph (<= 12.1-3), xinput (<= 1.2-5.2), xipmsg (<= 0.8088-1.1), xisp, xlbiff (<< 4.1-4), xli (<= 1.17.0-21), xlockmore (<= 1:5.21-1), xlockmore-gl (<= 1:5.21-1), xlogmaster (<= 1.6.0-8), xmailbox (<= 2.5-9), xmem (<= 1.20-19), xmeter (<= 1.15-6), xmh (<= 6.8.2.dfsg.1-4), xmix (<= 2.1-5), xmon (<= 1.5.6-1.3), xnecview (<= 1.34-2), xnest (<< 1:1.0), xodo (<= 1.2-9.2), xorg-common, xpaste, xpmumon (<= 1.3.0), xpostit (<= 3.3.1-8.2), xpostitplus, xprint (<= 1:0.1.0.alpha1-13), xrn (<= 9.02-7.1), xserver-common (<< 7), xserver-xfree86 (<< 1:7.0), xserver-xfree86-dbg, xserver-xorg (<< 1:7.3+11), xslideshow (<= 3.1-8.1), xsysinfo (<= 1.7-2), xtel (<= 3.3.0-5.4), xterm (<< 208-1), xtoolwait (<= 1.3-6), xtrkcad (<= 3.1.4-1), xtrlock (<= 2.0-11), xturqstat (<= 2.2.2sarge1), xutils (<< 1:7.0), xv (<= 3.10a-26), xvfb (<< 1:1.0), xview-clients (<= 3.2p1.4-21), xviewg (<= 3.2p1.4-21), xviewg-dev (<= 3.2p1.4-21), xvkbd (<= 2.6-2.1), xwit (<= 3.4-6), xxkb (<= 1.10-2.1), xzoom (<= 0.3-17), yank (<= 0.2.1-7.2)
+Description: X Window System (X.Org) infrastructure
+
+Package: xulrunner-1.9
+Status: install ok installed
+Priority: optional
+Section: devel
+Installed-Size: 17800
+Maintainer: Mike Hommey <glandium@debian.org>
+Architecture: i386
+Source: xulrunner
+Version: 1.9.0.19-1
+Replaces: xulrunner-1.9-common
+Depends: libatk1.0-0 (>= 1.20.0), libbz2-1.0, libc6 (>= 2.7-1), libcairo2 (>= 1.6.0), libfontconfig1 (>= 2.4.0), libfreetype6 (>= 2.3.5), libgcc1 (>= 1:4.1.1), libglib2.0-0 (>= 2.16.0), libgtk2.0-0 (>= 2.12.0), libhunspell-1.2-0 (>= 1.2.4), libjpeg62, liblcms1 (>= 1.15-1), libmozjs1d (>= 1.9.0.15), libnspr4-0d (>> 4.7.1-1), libnss3-1d (>= 3.12.3), libpango1.0-0 (>= 1.20.3), libpng12-0 (>= 1.2.13-4), libreadline5 (>= 5.2), libsqlite3-0 (>= 3.5.9), libstartup-notification0 (>= 0.8-1), libstdc++6 (>= 4.1.1), libx11-6, libxrender1, libxt6, zlib1g (>= 1:1.1.4)
+Suggests: xulrunner-1.9-gnome-support
+Conflicts: j2re1.4, pango-graphite
+Description: XUL + XPCOM application runner
+
+Package: zlib1g
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 128
+Maintainer: Mark Brown <broonie@debian.org>
+Architecture: i386
+Source: zlib
+Version: 1:1.2.3.3.dfsg-12
+Provides: libz1
+Depends: libc6 (>= 2.7-1)
+Conflicts: zlib1 (<= 1:1.0.4-7)
+Description: compression library - runtime
+
diff --git a/test/integration/status-bug-598669-install-postfix-gets-exim-heavy b/test/integration/status-bug-598669-install-postfix-gets-exim-heavy
new file mode 100644
index 000000000..fcf21dc45
--- /dev/null
+++ b/test/integration/status-bug-598669-install-postfix-gets-exim-heavy
@@ -0,0 +1,30 @@
+Package: exim4-daemon-light
+Status: install ok installed
+Priority: standard
+Section: mail
+Installed-Size: 952
+Maintainer: Exim4 Maintainers <pkg-exim4-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: exim4
+Version: 4.72-1
+Replaces: mail-transport-agent
+Provides: mail-transport-agent
+Conflicts: mail-transport-agent
+Filename: pool/main/e/exim4/exim4-daemon-light_4.72-1_i386.deb
+Size: 459500
+MD5sum: f32ccafef44bed2efcd526cd6501307d
+Description: lightweight Exim MTA (v4) daemon
+
+Package: exim4
+Status: install ok installed
+Priority: standard
+Section: mail
+Installed-Size: 60
+Maintainer: Exim4 Maintainers <pkg-exim4-maintainers@lists.alioth.debian.org>
+Architecture: all
+Version: 4.72-1
+Depends: exim4-daemon-light | exim4-daemon-heavy
+Filename: pool/main/e/exim4/exim4_4.72-1_all.deb
+Size: 7738
+MD5sum: 2f473b82bbabac9718ff3e755eaf85c1
+Description: metapackage to ease Exim MTA (v4) installation
diff --git a/test/integration/status-bug-601961-install-info b/test/integration/status-bug-601961-install-info
new file mode 100644
index 000000000..c43cffab7
--- /dev/null
+++ b/test/integration/status-bug-601961-install-info
@@ -0,0 +1,42 @@
+Package: dpkg
+Status: install ok installed
+Essential: yes
+Priority: required
+Section: admin
+Installed-Size: 6432
+Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
+Architecture: i386
+Version: 1.15.8.5
+Description: Debian package management system
+
+Package: findutils
+Status: install ok installed
+Essential: yes
+Priority: required
+Section: utils
+Installed-Size: 1704
+Maintainer: Andreas Metzler <ametzler@debian.org>
+Architecture: i386
+Version: 4.4.2-1+b1
+Depends: dpkg (>= 1.15.4) | install-info, essentialpkg
+Description: utilities for finding files--find, xargs
+
+Package: install-info
+Status: install ok installed
+Priority: important
+Section: doc
+Installed-Size: 256
+Maintainer: Debian TeX maintainers <debian-tex-maint@lists.debian.org>
+Architecture: i386
+Version: 4.13a.dfsg.1-6
+Description: Manage installed documentation in info format
+
+Package: essentialpkg
+Status: install ok installed
+Priority: important
+Section: other
+Installed-Size: 256
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: i386
+Version: 4.13a.dfsg.1-6
+Description: ultra hypercool important package
diff --git a/test/integration/status-bug-605394-versioned-or-groups b/test/integration/status-bug-605394-versioned-or-groups
new file mode 100644
index 000000000..3ac9c3054
--- /dev/null
+++ b/test/integration/status-bug-605394-versioned-or-groups
@@ -0,0 +1,34 @@
+Package: apache2-mpm-worker
+Status: install ok installed
+Priority: optional
+Section: httpd
+Installed-Size: 68
+Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
+Architecture: i386
+Source: apache2
+Version: 2.2.16-4
+Provides: apache2-mpm
+Conflicts: apache2-mpm
+Description: Apache HTTP Server - high speed threaded model
+
+Package: php5-cgi
+Status: install ok installed
+Priority: optional
+Section: php
+Installed-Size: 14672
+Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
+Architecture: i386
+Source: php5
+Version: 5.3.3-3
+Description: server-side, HTML-embedded scripting language (CGI binary)
+
+Package: php5
+Status: install ok installed
+Priority: optional
+Section: php
+Installed-Size: 20
+Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
+Architecture: all
+Version: 5.3.3-3
+Depends: libapache2-mod-php5 (>= 5.3.3-3) | libapache2-mod-php5filter (>= 5.3.3-3) | php5-cgi (>= 5.3.3-3)
+Description: server-side, HTML-embedded scripting language (metapackage)
diff --git a/test/integration/status-bug-612557-garbage-upgrade b/test/integration/status-bug-612557-garbage-upgrade
new file mode 100644
index 000000000..7403d8cca
--- /dev/null
+++ b/test/integration/status-bug-612557-garbage-upgrade
@@ -0,0 +1,34 @@
+Package: python-uno
+Status: install ok installed
+Priority: optional
+Section: python
+Installed-Size: 2032
+Maintainer: Debian OpenOffice Team <debian-openoffice@lists.debian.org>
+Architecture: i386
+Source: openoffice.org
+Version: 1:3.2.1-11+squeeze2
+Description: Python-UNO bridge
+
+Package: openoffice.org-common
+Status: install ok installed
+Priority: optional
+Section: editors
+Installed-Size: 48356
+Maintainer: Debian OpenOffice Team <debian-openoffice@lists.debian.org>
+Architecture: all
+Source: openoffice.org
+Version: 1:3.2.1-11+squeeze2
+Description: office productivity suite -- arch-independent files
+
+Package: openoffice.org-emailmerge
+Status: install ok installed
+Priority: optional
+Section: editors
+Installed-Size: 1652
+Maintainer: Debian OpenOffice Team <debian-openoffice@lists.debian.org>
+Architecture: all
+Source: openoffice.org
+Version: 1:3.2.1-11+squeeze2
+Replaces: python-uno (<< 1:2.4.1-5)
+Pre-Depends: python-uno, openoffice.org-common
+Description: office productivity suite -- email mail merge
diff --git a/test/integration/status-bug-613420-new-garbage-dependency b/test/integration/status-bug-613420-new-garbage-dependency
new file mode 100644
index 000000000..166a3930f
--- /dev/null
+++ b/test/integration/status-bug-613420-new-garbage-dependency
@@ -0,0 +1,22 @@
+Package: openoffice.org-officebean
+Status: install ok installed
+Priority: optional
+Section: java
+Installed-Size: 1656
+Maintainer: Debian OpenOffice Team <debian-openoffice@lists.debian.org>
+Architecture: i386
+Source: openoffice.org
+Version: 1:3.2.1-11+squeeze2
+Depends: openoffice.org-core (= 1:3.2.1-11+squeeze2)
+Description: office productivity suite -- Java bean
+
+Package: openoffice.org-core
+Status: install ok installed
+Priority: optional
+Section: editors
+Installed-Size: 121724
+Maintainer: Debian OpenOffice Team <debian-openoffice@lists.debian.org>
+Architecture: i386
+Source: openoffice.org
+Version: 1:3.2.1-11+squeeze2
+Description: office productivity suite -- arch-dependent files
diff --git a/test/integration/status-bug-723705-tagfile-truncates-fields b/test/integration/status-bug-723705-tagfile-truncates-fields
new file mode 100644
index 000000000..fe18506c8
--- /dev/null
+++ b/test/integration/status-bug-723705-tagfile-truncates-fields
@@ -0,0 +1,62 @@
+Package: libc6
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 10164
+Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Architecture: amd64
+Multi-Arch: same
+Source: eglibc (2.17-92)
+Version: 2.17-92+b1
+Replaces: libc6-amd64
+Provides: glibc-2.17-1
+Suggests: glibc-doc, debconf | debconf-2.0, locales
+Breaks: locales (<< 2.17), locales-all (<< 2.17), lsb-core (<= 3.2-27), nscd (<< 2.17)
+Conflicts: prelink (<= 0.0.20090311-1), tzdata (<< 2007k-1), tzdata-etch
+Conffiles:
+ /etc/ld.so.conf.d/x86_64-linux-gnu.conf 593ad12389ab2b6f952e7ede67b8fbbf
+Description: Embedded GNU C Library: Shared libraries
+ Contains the standard libraries that are used by nearly all programs on
+ the system. This package includes shared versions of the standard C library
+ and the standard math library, as well as many others.
+Homepage: http://www.eglibc.org
+
+Package: libnewt0.52
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 820
+Maintainer: Alastair McKinstry <mckinstry@debian.org>
+Architecture: amd64
+Multi-Arch: same
+Source: newt
+Version: 0.52.15-3
+Recommends: libfribidi0
+Conffiles:
+ /etc/newt/palette.original d41d8cd98f00b204e9800998ecf8427e
+Description: Not Erik's Windowing Toolkit - text mode windowing with slang
+ Newt is a windowing toolkit for text mode built from the slang library.
+ It allows color text mode applications to easily use stackable windows,
+ push buttons, check boxes, radio buttons, lists, entry fields, labels,
+ and displayable text. Scrollbars are supported, and forms may be nested
+ to provide extra functionality. This package contains the shared library
+ for programs that have been built with newt.
+Homepage: https://fedorahosted.org/newt/
+
+Package: libgcc1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 128
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: amd64
+Multi-Arch: same
+Source: gcc-4.8 (4.8.1-10)
+Version: 1:4.8.1-10
+Breaks: gcc-4.1, gcc-4.3 (<< 4.3.6-1), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2)
+Description: GCC support library
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+Homepage: http://gcc.gnu.org/
+
diff --git a/test/integration/status-bug-lp1347721-dpkg-ordering b/test/integration/status-bug-lp1347721-dpkg-ordering
new file mode 100644
index 000000000..62e545c55
--- /dev/null
+++ b/test/integration/status-bug-lp1347721-dpkg-ordering
@@ -0,0 +1,1942 @@
+Package: libustr-1.0-1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 261
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: ustr
+Version: 1.0.4-3ubuntu2
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Description: Micro string library: shared library
+ ustr (Micro string library) is a string API for C. It has tiny overhead over
+ just plain strdup(), is much safer, is easier to use, is faster for many
+ operations, can be used with read-only or automatically allocated data. You
+ don't even need to link to the library to use it (so there are no
+ dependencies).
+ .
+ This package contains the shared library for ustr.
+Homepage: http://www.and.org/ustr/
+Original-Maintainer: Vaclav Ovsik <vaclav.ovsik@i.cz>
+
+Package: debconf
+Status: install ok installed
+Priority: important
+Section: admin
+Installed-Size: 609
+Maintainer: Colin Watson <cjwatson@ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Version: 1.5.53ubuntu1
+Replaces: debconf-tiny
+Provides: debconf-2.0
+Pre-Depends: perl-base (>= 5.6.1-4)
+Recommends: apt-utils (>= 0.5.1), debconf-i18n
+Suggests: debconf-doc, debconf-utils, whiptail | dialog | gnome-utils, libterm-readline-gnu-perl, libgtk2-perl (>= 1:1.130), libnet-ldap-perl, perl, libqtgui4-perl, libqtcore4-perl
+Conflicts: apt (<< 0.3.12.1), cdebconf (<< 0.96), debconf-tiny, debconf-utils (<< 1.3.22), dialog (<< 0.9b-20020814-1), menu (<= 2.1.3-1), whiptail (<< 0.51.4-11), whiptail-utf8 (<= 0.50.17-13)
+Conffiles:
+ /etc/debconf.conf 8c0619be413824f1fc7698cee0f23811
+ /etc/apt/apt.conf.d/70debconf 7e9d09d5801a42b4926b736b8eeabb73
+ /etc/bash_completion.d/debconf 8fa1862734fbe54d7178aaaa419f5a11
+Description: Debian configuration management system
+ Debconf is a configuration management system for debian packages. Packages
+ use Debconf to ask questions when they are installed.
+Original-Maintainer: Debconf Developers <debconf-devel@lists.alioth.debian.org>
+
+Package: iproute2
+Status: install ok installed
+Priority: important
+Section: net
+Installed-Size: 1184
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 3.14.0-1
+Replaces: iproute
+Provides: arpd
+Depends: libc6 (>= 2.14), libdb5.3
+Recommends: libatm1 (>= 2.4.1-17~), libxtables10
+Suggests: iproute2-doc
+Conflicts: arpd, iproute (<< 20130000-1)
+Conffiles:
+ /etc/iproute2/rt_realms 7137bdf40e8d58c87ac7e3bba503767f
+ /etc/iproute2/rt_protos 95ce0b4b5b79f5a8a45941fb418a904c
+ /etc/iproute2/rt_dsfield 4264d5c7c8298300185aa04e1a736934
+ /etc/iproute2/rt_scopes 6298b8df09e9bda23ea7da49021ca457
+ /etc/iproute2/ematch_map b91e7f9b26918449bade9573f8871d61
+ /etc/iproute2/group 3aea2c0e0dd75e13a5f8f48f2936915f
+ /etc/iproute2/rt_tables a1313318d6778fe6b8c680248ef5a463
+Description: networking and traffic control tools
+ The iproute2 suite is a collection of utilities for networking and
+ traffic control.
+ .
+ These tools communicate with the Linux kernel via the (rt)netlink
+ interface, providing advanced features not available through the
+ legacy net-tools commands 'ifconfig' and 'route'.
+Original-Maintainer: Debian iproute2 Maintainers <ah-iproute@debian.org>
+Homepage: http://www.linux-foundation.org/en/Net:Iproute2
+
+Package: coreutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 6124
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 8.21-1ubuntu5
+Replaces: mktemp, timeout
+Pre-Depends: libacl1 (>= 2.2.51-8), libattr1 (>= 1:2.4.46-8), libc6 (>= 2.17), libselinux1 (>= 1.32)
+Conflicts: timeout
+Description: GNU core utilities
+ This package contains the basic file, shell and text manipulation
+ utilities which are expected to exist on every operating system.
+ .
+ Specifically, this package includes:
+ arch base64 basename cat chcon chgrp chmod chown chroot cksum comm cp
+ csplit cut date dd df dir dircolors dirname du echo env expand expr
+ factor false flock fmt fold groups head hostid id install join link ln
+ logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup nproc od
+ paste pathchk pinky pr printenv printf ptx pwd readlink rm rmdir runcon
+ sha*sum seq shred sleep sort split stat stty sum sync tac tail tee test
+ timeout touch tr true truncate tsort tty uname unexpand uniq unlink
+ users vdir wc who whoami yes
+Homepage: http://gnu.org/software/coreutils
+Original-Maintainer: Michael Stone <mstone@debian.org>
+
+Package: debianutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 273
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 4.4
+Replaces: manpages-pl (<< 1:0.5)
+Depends: sensible-utils
+Pre-Depends: libc6 (>= 2.15)
+Description: Miscellaneous utilities specific to Debian
+ This package provides a number of small utilities which are used
+ primarily by the installation scripts of Debian packages, although
+ you may use them directly.
+ .
+ The specific utilities included are:
+ add-shell installkernel ischroot remove-shell run-parts savelog
+ tempfile which
+Original-Maintainer: Clint Adams <clint@debian.org>
+
+Package: initramfs-tools
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 365
+Maintainer: Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Version: 0.103ubuntu4
+Provides: linux-initramfs-tool
+Depends: initramfs-tools-bin (>= 0.103ubuntu4), initramfs-tools-bin (<< 0.103ubuntu4.1~), klibc-utils (>= 2.0-1~), busybox-initramfs (>= 1:1.13.3-1ubuntu5), cpio, module-init-tools, udev (>= 147~-5), findutils (>= 4.2.24), util-linux (>> 2.15~rc1)
+Suggests: bash-completion
+Breaks: cryptsetup (<< 2:1.1.0-2.1), elilo (<< 3.12-3.1~), lilo (<< 22.8-8.2~), mountall (<< 2.0~), s390-tools (<< 1.8.3-2~)
+Conflicts: usplash (<< 0.5.50)
+Conffiles:
+ /etc/bash_completion.d/initramfs-tools 7eeb7184772f3658e7cf446945c096b1
+ /etc/initramfs-tools/update-initramfs.conf e2026d4603e7161efaccca519aeb1297
+ /etc/initramfs-tools/initramfs.conf 8801535d9bec98754eea6a172f956d42
+ /etc/kernel/postrm.d/initramfs-tools e22d1ab0d7a7a1b66ae6d71ea4f21938
+ /etc/kernel/postinst.d/initramfs-tools fe7713b9a74a10ed71d1e7dd93afc209
+Description: tools for generating an initramfs
+ This package contains tools to create and boot an initramfs for packaged 2.6
+ Linux kernel. The initramfs is a gzipped cpio archive. At boot time, the
+ kernel unpacks that archive into RAM, mounts and uses it as initial root file
+ system. The mounting of the real root file system occurs in early user space.
+ klibc provides utilities to setup root. Having the root on MD, LVM2, LUKS or
+ NFS is also supported.
+ Any boot loader with initrd support is able to load an initramfs archive.
+Original-Maintainer: Debian kernel team <debian-kernel@lists.debian.org>
+
+Package: makedev
+Status: install ok installed
+Priority: extra
+Section: admin
+Installed-Size: 125
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Version: 2.3.1-93ubuntu1
+Depends: base-passwd (>= 3.0.4)
+Conflicts: udev (<= 0.024-7)
+Description: creates device files in /dev
+ The MAKEDEV executable is used to create device files, often in /dev.
+ .
+ Device files are special files through which applications can interact
+ with hardware.
+ .
+ This package is not necessary for most modern Linux systems, where the udev
+ subsystem provides a more dynamic mechanism for device file management.
+Original-Maintainer: Debian QA Group <packages@qa.debian.org>
+
+Package: libdbus-1-3
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 398
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: dbus
+Version: 1.6.18-0ubuntu4
+Depends: libc6 (>= 2.10)
+Pre-Depends: multiarch-support
+Recommends: dbus
+Breaks: kde-window-manager (<< 4:4.4.5-9), kdebase-workspace-bin (<< 4:4.4.5-9)
+Description: simple interprocess messaging system (library)
+ D-Bus is a message bus, used for sending messages between applications.
+ Conceptually, it fits somewhere in between raw sockets and CORBA in
+ terms of complexity.
+ .
+ D-Bus supports broadcast messages, asynchronous messages (thus
+ decreasing latency), authentication, and more. It is designed to be
+ low-overhead; messages are sent using a binary protocol, not using
+ XML. D-Bus also supports a method call mapping for its messages, but
+ it is not required; this makes using the system quite simple.
+ .
+ It comes with several bindings, including GLib, Python, Qt and Java.
+ .
+ The daemon can be found in the dbus package.
+Homepage: http://dbus.freedesktop.org/
+Original-Maintainer: Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>
+
+Package: module-init-tools
+Status: install ok installed
+Priority: extra
+Section: admin
+Installed-Size: 31
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Source: kmod
+Version: 16-2ubuntu3
+Depends: libkmod2, kmod
+Pre-Depends: dpkg (>= 1.15.7.2)
+Description: transitional dummy package (module-init-tools to kmod)
+ This dummy package is provided to support the transition from
+ module-init-tools to kmod and should be removed afterwards.
+Original-Maintainer: Marco d'Itri <md@linux.it>
+
+Package: libuuid1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 107
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: util-linux
+Version: 2.20.1-5.1ubuntu20
+Replaces: e2fsprogs (<< 1.34-1)
+Depends: passwd, libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Recommends: uuid-runtime
+Description: Universally Unique ID library
+ The libuuid library generates and parses 128-bit universally unique
+ ids (UUIDs). A UUID is an identifier that is unique across both
+ space and time, with respect to the space of all UUIDs. A UUID can
+ be used for multiple purposes, from tagging objects with an extremely
+ short lifetime, to reliably identifying very persistent objects
+ across a network.
+ .
+ See RFC 4122 for more information.
+Homepage: http://userweb.kernel.org/~kzak/util-linux/
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: lsb-base
+Status: install ok installed
+Priority: required
+Section: misc
+Installed-Size: 82
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Source: lsb
+Version: 4.1+Debian11ubuntu6
+Description: Linux Standard Base 4.1 init script functionality
+ The Linux Standard Base (http://www.linuxbase.org/) is a standard
+ core system that third-party applications written for Linux can
+ depend upon.
+ .
+ This package only includes the init-functions shell library, which
+ may be used by other packages' initialization scripts for console
+ logging and other purposes.
+Homepage: http://www.linuxfoundation.org/collaborate/workgroups/lsb
+Original-Maintainer: Debian LSB Team <debian-lsb@lists.debian.org>
+
+Package: procps
+Status: install ok installed
+Priority: important
+Section: admin
+Installed-Size: 637
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 1:3.3.9-1ubuntu2
+Provides: watch
+Depends: libc6 (>= 2.15), libncurses5 (>= 5.5-5~), libncursesw5 (>= 5.6+20070908), libprocps3, libtinfo5, lsb-base (>= 3.0-10), initscripts
+Recommends: psmisc
+Breaks: guymager (<= 0.5.9-1), open-vm-tools (<= 2011.12.20-562307-1), xmem (<= 1.20-27.1)
+Conflicts: pgrep (<< 3.3-5), w-bassman (<< 1.0-3)
+Conffiles:
+ /etc/sysctl.d/10-console-messages.conf 154f6f5c5810d10bb303fb6a8e907c6a
+ /etc/sysctl.d/README c20074b9b11a5202758c69d7bcb6996f
+ /etc/sysctl.d/10-magic-sysrq.conf b3059f2835f17c97265433fdfdee358f
+ /etc/sysctl.d/10-kernel-hardening.conf 5c1388f00011a287cdeba60208c674e1
+ /etc/sysctl.d/10-link-restrictions.conf 8568316f2baa8db06554dab91f93a161
+ /etc/sysctl.d/10-zeropage.conf 8d7193abcc4dfedaf519dd03016a5e59
+ /etc/sysctl.d/10-network-security.conf 4ac7258f5336e7eeaf448c05ab668d3c
+ /etc/sysctl.d/10-ptrace.conf 47f40494b2fc698e15549e0a4a79e81c
+ /etc/sysctl.d/10-ipv6-privacy.conf e9473d12b4a7069d6a3ca8b694511ddf
+ /etc/sysctl.conf 76c1d8285c578d5e827c3e07b9738112
+ /etc/init.d/procps 021482ebab1024f5ed76e650e5191e8f
+ /etc/init/procps.conf 96170a339d08797dc90d69b01d6bf610
+Description: /proc file system utilities
+ This package provides command line and full screen utilities for browsing
+ procfs, a "pseudo" file system dynamically generated by the kernel to
+ provide information about the status of entries in its process table
+ (such as whether the process is running, stopped, or a "zombie").
+ .
+ It contains free, kill, pkill, pgrep, pmap, ps, pwdx, skill, slabtop,
+ snice, sysctl, tload, top, uptime, vmstat, w, and watch.
+Homepage: http://gitorious.org/procps
+Original-Maintainer: Craig Small <csmall@debian.org>
+
+Package: libpam0g
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 219
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: pam
+Version: 1.1.8-1ubuntu2
+Replaces: libpam0g-util
+Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.8), debconf (>= 0.5) | debconf-2.0
+Pre-Depends: multiarch-support
+Suggests: libpam-doc
+Description: Pluggable Authentication Modules library
+ Contains the shared library for Linux-PAM, a library that enables the
+ local system administrator to choose how applications authenticate users.
+ In other words, without rewriting or recompiling a PAM-aware application,
+ it is possible to switch between the authentication mechanism(s) it uses.
+ One may entirely upgrade the local authentication system without touching
+ the applications themselves.
+Homepage: http://pam.sourceforge.net/
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: sensible-utils
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 110
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Version: 0.0.9
+Replaces: debianutils (<= 2.32.3), manpages-pl (<= 20060617-3~)
+Description: Utilities for sensible alternative selection
+ This package provides a number of small utilities which are used
+ by programs to sensibly select and spawn an appropriate browser,
+ editor, or pager.
+ .
+ The specific utilities included are: sensible-browser sensible-editor
+ sensible-pager
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+
+Package: perl-base
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 4780
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Source: perl
+Version: 5.18.2-2ubuntu1
+Replaces: libperl5.8 (<< 5.8.0-20), libscalar-list-utils-perl, libsocket-perl, libxsloader-perl, perl (<< 5.10.1-12), perl-modules (<< 5.10.1-1)
+Provides: libscalar-list-utils-perl, libsocket-perl, libxsloader-perl, perl5-base, perlapi-5.18.1, perlapi-5.18.2
+Pre-Depends: libc6 (>= 2.11), dpkg (>= 1.14.20)
+Suggests: perl
+Breaks: autoconf2.13 (<< 2.13-45), libcommon-sense-perl (<< 3.72-2~), libfile-spec-perl (<< 3.4000), libmarc-charset-perl (<< 1.2), libsocket-perl (<< 2.009), libxsloader-perl (<< 0.16)
+Conflicts: defoma (<< 0.11.12), doc-base (<< 0.10.3), libscalar-list-utils-perl, mono-gac (<< 2.10.8.1-3), safe-rm (<< 0.8), update-inetd (<< 4.41)
+Description: minimal Perl system
+ Perl is a scripting language used in many system scripts and utilities.
+ .
+ This package provides a Perl interpreter and the small subset of the
+ standard run-time library required to perform basic tasks. For a full
+ Perl installation, install "perl" (and its dependencies, "perl-modules"
+ and "perl-doc").
+Original-Maintainer: Niko Tyni <ntyni@debian.org>
+Homepage: http://dev.perl.org/perl5/
+
+Package: sysv-rc
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 221
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Source: sysvinit
+Version: 2.88dsf-41ubuntu6
+Replaces: file-rc
+Depends: debconf (>= 0.5) | debconf-2.0, sysvinit-utils (>= 2.86.ds1-62), insserv (>> 1.12.0-10)
+Recommends: lsb-base (>= 3.2-14)
+Suggests: sysv-rc-conf, bum
+Breaks: initscripts (<< 2.86.ds1-63)
+Conflicts: file-rc
+Description: System-V-like runlevel change mechanism
+ This package provides support for the System-V like system
+ for booting, changing runlevels, and shutting down,
+ configured through symbolic links in /etc/rc?.d/.
+Homepage: http://savannah.nongnu.org/projects/sysvinit
+Original-Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
+
+Package: libprocps3
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 129
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: procps
+Version: 1:3.3.9-1ubuntu2
+Replaces: procps (<< 1:3.3.2-1)
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Description: library for accessing process information from /proc
+ The libprocps library is a way of accessing information out of the /proc
+ filesystem.
+ .
+ This package contains the shared libraries necessary to run programs
+ compilied with libprocps.
+Homepage: http://gitorious.org/procps
+Original-Maintainer: Craig Small <csmall@debian.org>
+
+Package: libjson-c2
+Status: install ok installed
+Priority: extra
+Section: libs
+Installed-Size: 82
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: json-c
+Version: 0.11-4ubuntu1
+Depends: libc6 (>= 2.8)
+Pre-Depends: multiarch-support
+Description: JSON manipulation library - shared library
+ This library allows you to easily construct JSON objects in C,
+ output them as JSON formatted strings and parse JSON formatted
+ strings back into the C representation of JSON objects.
+Homepage: https://github.com/json-c/json-c/wiki
+Original-Maintainer: fabien boucher <fabien.dot.boucher@gmail.com>
+
+Package: libdrm2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 105
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: libdrm
+Version: 2.4.53-1
+Depends: libc6 (>= 2.17)
+Pre-Depends: multiarch-support
+Description: Userspace interface to kernel DRM services -- runtime
+ This library implements the userspace interface to the kernel DRM
+ services. DRM stands for "Direct Rendering Manager", which is the
+ kernelspace portion of the "Direct Rendering Infrastructure" (DRI).
+ The DRI is currently used on Linux to provide hardware-accelerated
+ OpenGL drivers.
+ .
+ This package provides the runtime environment for libdrm.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libsepol1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 322
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: libsepol
+Version: 2.2-1
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Description: SELinux library for manipulating binary security policies
+ Security-enhanced Linux is a patch of the Linux kernel and a number
+ of utilities with enhanced security functionality designed to add
+ mandatory access controls to Linux. The Security-enhanced Linux
+ kernel contains new architectural components originally developed to
+ improve the security of the Flask operating system. These
+ architectural components provide general support for the enforcement
+ of many kinds of mandatory access control policies, including those
+ based on the concepts of Type Enforcement®, Role-based Access
+ Control, and Multi-level Security.
+ .
+ libsepol provides an API for the manipulation of SELinux binary policies.
+ It is used by checkpolicy (the policy compiler) and similar tools, as well
+ as by programs like load_policy that need to perform specific transformations
+ on binary policies such as customizing policy boolean settings.
+Original-Maintainer: Debian SELinux maintainers <selinux-devel@lists.alioth.debian.org>
+Homepage: http://userspace.selinuxproject.org/
+
+Package: libpam-modules
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 764
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: pam
+Version: 1.1.8-1ubuntu2
+Replaces: libpam-umask, libpam0g-util
+Provides: libpam-mkhomedir, libpam-motd, libpam-umask
+Pre-Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.15), libdb5.3, libpam0g (>= 1.1.3-2), libselinux1 (>= 2.1.9), debconf (>= 0.5) | debconf-2.0, libpam-modules-bin (= 1.1.8-1ubuntu2)
+Conflicts: libpam-mkhomedir, libpam-motd, libpam-umask
+Conffiles:
+ /etc/security/limits.conf 11c27ba00b7bd6a255f33126f75c5005
+ /etc/security/group.conf f1e26e8db6f7abd2d697d7dad3422c36
+ /etc/security/access.conf 13ec4d189f0ed9acf3433977a53d446b
+ /etc/security/pam_env.conf ddee4a931170dc21b4e0b9bb28e02a7b
+ /etc/security/namespace.init b46b23d64860d1557d2a8f44b231fd54
+ /etc/security/time.conf 06e05c6079e839c8833ac7c3abfde192
+ /etc/security/sepermit.conf d41c74654734a5c069a37bfc02f0a6d4
+ /etc/security/namespace.conf 6424c99a62ddf4b7d3ca713bb06ded89
+Description: Pluggable Authentication Modules for PAM
+ This package completes the set of modules for PAM. It includes the
+ pam_unix.so module as well as some specialty modules.
+Homepage: http://pam.sourceforge.net/
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: tzdata
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 1599
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Version: 2014b-1
+Replaces: libc0.1, libc0.3, libc6, libc6.1
+Provides: tzdata-jessie
+Depends: debconf (>= 0.5) | debconf-2.0
+Description: time zone and daylight-saving time data
+ This package contains data required for the implementation of
+ standard local time for many representative locations around the
+ globe. It is updated periodically to reflect changes made by
+ political bodies to time zone boundaries, UTC offsets, and
+ daylight-saving rules.
+Original-Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Homepage: http://www.iana.org/time-zones
+
+Package: libudev1
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 129
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: systemd
+Version: 204-10ubuntu1
+Depends: libc6 (>= 2.17), libcgmanager0, libdbus-1-3 (>= 1.0.2), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0)
+Pre-Depends: multiarch-support
+Description: libudev shared library
+ This library provides access to udev device information.
+Homepage: http://www.freedesktop.org/wiki/Software/systemd
+Original-Maintainer: Debian systemd Maintainers <pkg-systemd-maintainers@lists.alioth.debian.org>
+
+Package: ifupdown
+Status: install ok installed
+Priority: important
+Section: admin
+Installed-Size: 229
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 0.7.48.1ubuntu1
+Replaces: netbase (<< 5.0)
+Depends: iproute2 | iproute (>= 20071016-1), libc6 (>= 2.7), sysv-rc (>= 2.88dsf-24) | file-rc (>= 0.8.16), lsb-base (>= 4.1+Debian3), initscripts (>= 2.88dsf-25), adduser
+Recommends: isc-dhcp-client | dhcp-client
+Suggests: ppp, rdnssd, net-tools
+Breaks: dhcp3-client (<< 4.0), netbase (<< 5.0)
+Conffiles:
+ /etc/network/if-up.d/upstart dfbcde4fd4a3a2553930605e03e160ab
+ /etc/network/if-down.d/upstart 1a0205ddbc1446782a8d4d818e97d8a5
+ /etc/init/network-interface-container.conf 4daa570594afc50940f140a7731d20d1
+ /etc/init/networking.conf c50811e19bcd596d99b0467b40cfbb8b
+ /etc/init/network-interface.conf aae12345eba8e946579b06798b1752c1
+ /etc/init/network-interface-security.conf feb6b4b52fe24c44ff1bc68addf245d6
+ /etc/init.d/networking 2c8c3be8b90f99de7edf0f883ebe39f3
+ /etc/default/networking 35cd4a2713981c9239ce4532c1bfc1c7
+Description: high level tools to configure network interfaces
+ This package provides the tools ifup and ifdown which may be used to
+ configure (or, respectively, deconfigure) network interfaces based on
+ interface definitions in the file /etc/network/interfaces.
+Original-Maintainer: Andrew Shadura <andrewsh@debian.org>
+
+Package: libsemanage1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 261
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: libsemanage
+Version: 2.2-1ubuntu1
+Depends: libsemanage-common (= 2.2-1ubuntu1), libaudit1 (>= 1:2.2.1), libbz2-1.0, libc6 (>= 2.8), libselinux1 (>= 2.1.12), libsepol1 (>= 2.1.4), libustr-1.0-1 (>= 1.0.4)
+Pre-Depends: multiarch-support
+Description: SELinux policy management library
+ This package provides the shared libraries for SELinux policy management.
+ It uses libsepol for binary policy manipulation and libselinux for
+ interacting with the SELinux system. It also exec's helper programs
+ for loading policy and for checking whether the file_contexts
+ configuration is valid (load_policy and setfiles from
+ policycoreutils) presently, although this may change at least for the
+ bootstrapping case
+ .
+ Security-enhanced Linux is a patch of the Linux kernel and a
+ number of utilities with enhanced security functionality designed to
+ add mandatory access controls to Linux. The Security-enhanced Linux
+ kernel contains new architectural components originally developed to
+ improve the security of the Flask operating system. These
+ architectural components provide general support for the enforcement
+ of many kinds of mandatory access control policies, including those
+ based on the concepts of Type Enforcement, Role-based Access
+ Control, and Multi-level Security.
+Original-Maintainer: Debian SELinux maintainers <selinux-devel@lists.alioth.debian.org>
+Homepage: http://userspace.selinuxproject.org/
+
+Package: mountall
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 248
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 2.53
+Replaces: upstart (<< 0.6.3-2)
+Depends: makedev, udev, plymouth, coreutils (>= 7.1), libc6 (>= 2.9), libdbus-1-3 (>= 1.2.16), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0), libplymouth2 (>= 0.8.1-3), libudev1 (>= 183)
+Pre-Depends: dpkg (>= 1.15.7.2)
+Breaks: initscripts (<< 2.88dsf-24), policycoreutils (<< 2.0.69-2ubuntu4), usplash (<< 0.5.47)
+Conffiles:
+ /etc/init/checkroot.sh.conf 3ea7f6ba450f431fd239e2b53a805216
+ /etc/init/mounted-dev.conf cf7bea42235e77168c996d774f059c44
+ /etc/init/mounted-tmp.conf 289fa57d726885147a41b2b1f3695a29
+ /etc/init/mountdevsubfs.sh.conf dd33cb414bca17d97140d7f8671207f2
+ /etc/init/mountall-net.conf feff70cd7006f6763e24263d381940f3
+ /etc/init/mountall-shell.conf aa05af89db3de044d1cd7f6971b46d9f
+ /etc/init/mountall.sh.conf ee258840aad52477434cc22e34efcc50
+ /etc/init/bootmisc.sh.conf d1a51c54dcfe6f3f5265246888ba4161
+ /etc/init/mountnfs.sh.conf 760a5b57cbd0d1e2c65ba6db9297a586
+ /etc/init/mounted-proc.conf 07198659bd06c1442a35882b2fae05fc
+ /etc/init/mountnfs-bootclean.sh.conf 0b6f3f9e9f8757efee57f6a4839d7dff
+ /etc/init/mountall.conf ac0fbaa98e705e52f59ca9e4d39751ad
+ /etc/init/mountall-bootclean.sh.conf d1899239aa60ea903f43a3ac58c5c238
+ /etc/init/mtab.sh.conf 27aece82dbe70232d734d1dadfe87518
+ /etc/init/mountkernfs.sh.conf 2e7449097b6cf88cba915edc1c339ec4
+ /etc/init/mounted-var.conf 02f90856c91a46e9cbed1c35b92fec6c
+ /etc/init/mountall-reboot.conf 43e3c229085a13005b0681a49b2bef51
+ /etc/init/checkroot-bootclean.sh.conf e02a473c76e4a2bfc1efb4c367495052
+ /etc/init/checkfs.sh.conf 2e928476ccb2ecefe9ee87e2f83d34da
+ /etc/init/mounted-debugfs.conf 462c8aab0d9d4e6e496b1e2be5910edc
+ /etc/init/mounted-run.conf a26db58c801e0f6ec8738a5838aa53ed
+ /etc/dbus-1/system.d/Mountall.Server.conf 91b1414af1257d2ef089f84a3e5c1ed1
+Description: filesystem mounting tool
+ mountall mounts filesystems when the underlying block devices are
+ ready, or when network interfaces come up, checking the filesystems
+ first.
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: kmod
+Status: install ok installed
+Priority: important
+Section: admin
+Installed-Size: 285
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 16-2ubuntu3
+Replaces: module-init-tools (<< 4)
+Depends: libc6 (>= 2.17), libkmod2, sysv-rc (>= 2.88dsf-24) | file-rc (>= 0.8.16), lsb-base (>= 3.0-6)
+Breaks: module-init-tools (<< 4)
+Conffiles:
+ /etc/init/kmod.conf 2686532745c8b71d6d3df91c3a53aef3
+ /etc/modprobe.d/blacklist-framebuffer.conf 097e2142ae3e4dd2911eda7844ce0c18
+ /etc/modprobe.d/blacklist-rare-network.conf 8fb4b96124e461f53adceba9ca91f09a
+ /etc/modprobe.d/blacklist.conf bc6754fa320733c6d239a4bb0148ffd7
+ /etc/modprobe.d/iwlwifi.conf f27bc645e93e20c8e532325d190ac8ee
+ /etc/modprobe.d/blacklist-ath_pci.conf d1da9bb08c2b0f56f3be93fd0e37946b
+ /etc/modprobe.d/mlx4.conf b2a0bedb7461daeb0138270639581bbf
+ /etc/modprobe.d/blacklist-firewire.conf 9cc07a17e8e64f9cd35ff59c29debe69
+ /etc/modprobe.d/blacklist-watchdog.conf 55327f9270c8a6257a833c4d127a39e1
+ /etc/init.d/kmod e6d43abead3714ceb8aca68dd77e1dad
+ /etc/depmod.d/ubuntu.conf 7c8439ef36b12e5f226b5dbfa20b8c2d
+Description: tools for managing Linux kernel modules
+ This package contains a set of programs for loading, inserting, and
+ removing kernel modules for Linux.
+ It replaces module-init-tools.
+Original-Maintainer: Marco d'Itri <md@linux.it>
+
+Package: libkmod2
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 138
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: kmod
+Version: 16-2ubuntu3
+Depends: libc6 (>= 2.17)
+Pre-Depends: multiarch-support
+Description: libkmod shared library
+ This library provides an API for insertion, removal, configuration and
+ listing of kernel modules.
+Original-Maintainer: Marco d'Itri <md@linux.it>
+
+Package: tar
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 760
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 1.27.1-2
+Replaces: cpio (<< 2.4.2-39)
+Pre-Depends: libacl1 (>= 2.2.51-8), libc6 (>= 2.17), libselinux1 (>= 1.32)
+Suggests: bzip2, ncompress, xz-utils, tar-scripts
+Breaks: dpkg-dev (<< 1.14.26)
+Conflicts: cpio (<= 2.4.2-38)
+Conffiles:
+ /etc/rmt 3c58b7cd13da1085eff0acc6a00f43c7
+Description: GNU version of the tar archiving utility
+ Tar is a program for packaging a set of files as a single archive in tar
+ format. The function it performs is conceptually similar to cpio, and to
+ things like PKZIP in the DOS world. It is heavily used by the Debian package
+ management system, and is useful for performing system backups and exchanging
+ sets of files with others.
+Original-Maintainer: Bdale Garbee <bdale@gag.com>
+
+Package: libmount1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 249
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: util-linux
+Version: 2.20.1-5.1ubuntu20
+Depends: libblkid1 (>= 2.17.2), libc6 (>= 2.8), libselinux1 (>= 1.32)
+Pre-Depends: multiarch-support
+Description: block device id library
+ The device mounting library, used by mount and mount helpers.
+Homepage: http://userweb.kernel.org/~kzak/util-linux/
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: zlib1g
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 170
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: zlib
+Version: 1:1.2.8.dfsg-1ubuntu1
+Provides: libz1
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Breaks: libxml2 (<< 2.7.6.dfsg-2), texlive-binaries (<< 2009-12)
+Conflicts: zlib1 (<= 1:1.0.4-7)
+Description: compression library - runtime
+ zlib is a library implementing the deflate compression method found
+ in gzip and PKZIP. This package includes the shared library.
+Homepage: http://zlib.net/
+Original-Maintainer: Mark Brown <broonie@debian.org>
+
+Package: adduser
+Status: install ok installed
+Priority: important
+Section: admin
+Installed-Size: 644
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Version: 3.113+nmu3ubuntu3
+Replaces: manpages-it (<< 0.3.4-2), manpages-pl (<= 20051117-1)
+Depends: perl-base (>= 5.6.0), passwd (>= 1:4.0.12), debconf | debconf-2.0
+Suggests: liblocale-gettext-perl, perl-modules, ecryptfs-utils (>= 67-1)
+Conffiles:
+ /etc/deluser.conf 773fb95e98a27947de4a95abb3d3f2a2
+Description: add and remove users and groups
+ This package includes the 'adduser' and 'deluser' commands for creating
+ and removing users.
+ .
+ - 'adduser' creates new users and groups and adds existing users to
+ existing groups;
+ - 'deluser' removes users and groups and removes users from a given
+ group.
+ .
+ Adding users with 'adduser' is much easier than adding them manually.
+ Adduser will choose appropriate UID and GID values, create a home
+ directory, copy skeletal user configuration, and automate setting
+ initial values for the user's password, real name and so on.
+ .
+ Deluser can back up and remove users' home directories
+ and mail spool or all the files they own on the system.
+ .
+ A custom script can be executed after each of the commands.
+ .
+ Development mailing list:
+ http://lists.alioth.debian.org/mailman/listinfo/adduser-devel/
+Homepage: http://alioth.debian.org/projects/adduser/
+Original-Maintainer: Debian Adduser Developers <adduser-devel@lists.alioth.debian.org>
+
+Package: libgcc1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 154
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: gcc-4.9 (4.9.0-1ubuntu3)
+Version: 1:4.9.0-1ubuntu3
+Depends: gcc-4.9-base (= 4.9.0-1ubuntu3), libc6 (>= 2.2.4)
+Pre-Depends: multiarch-support
+Breaks: gcc-4.3 (<< 4.3.6-1), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2)
+Description: GCC support library
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+Homepage: http://gcc.gnu.org/
+Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+
+Package: libdebconfclient0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 85
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: cdebconf
+Version: 0.190ubuntu1
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Description: Debian Configuration Management System (C-implementation library)
+ Debconf is a configuration management system for Debian packages. It is
+ used by some packages to prompt you for information before they are
+ installed. This is a reimplementation of the original debconf version
+ in C.
+ .
+ This is the libraries needed by libdebconfclient-dev and cdebconf.
+Original-Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
+
+Package: libklibc
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 133
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Source: klibc
+Version: 2.0.3-0ubuntu1
+Description: minimal libc subset for use with initramfs
+ klibc is intended to be a minimalistic libc subset for use with
+ initramfs. It is deliberately written for small size, minimal
+ entanglement, and portability, not speed. It is definitely a work in
+ progress, and a lot of things are still missing.
+Homepage: http://git.kernel.org/?p=libs/klibc/klibc.git;a=summary
+Original-Maintainer: maximilian attems <maks@debian.org>
+
+Package: libcgmanager0
+Status: install ok installed
+Priority: optional
+Section: admin
+Installed-Size: 152
+Maintainer: Serge Hallyn <serge.hallyn@ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: cgmanager
+Version: 0.25-0ubuntu4
+Depends: libc6 (>= 2.1.3), libdbus-1-3 (>= 1.0.2)
+Description: Central cgroup manager daemon (client library)
+ cgmanager provides a central cgroup manager daemon and a
+ per-namespace manager proxy, allowing users and programs
+ to administrate cgroups through D-Bus requests.
+ .
+ This package contains the shared library.
+Homepage: http://cgmanager.linuxcontainers.org/
+
+Package: mount
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 410
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Source: util-linux
+Version: 2.20.1-5.1ubuntu20
+Pre-Depends: libblkid1 (>= 2.20.1), libc6 (>= 2.8), libmount1 (>= 2.20.1), libselinux1 (>= 2.0.15)
+Suggests: nfs-common (>= 1:1.1.0-13)
+Description: Tools for mounting and manipulating filesystems
+ This package provides the mount(8), umount(8), swapon(8),
+ swapoff(8), and losetup(8) commands.
+Homepage: http://userweb.kernel.org/~kzak/util-linux/
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: libncurses5
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 292
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: ncurses
+Version: 5.9+20140118-1ubuntu1
+Depends: libtinfo5 (= 5.9+20140118-1ubuntu1), libc6 (>= 2.15)
+Pre-Depends: multiarch-support, libtinfo5 (>= 5.9-3)
+Recommends: libgpm2
+Description: shared libraries for terminal handling
+ The ncurses library routines are a terminal-independent method of
+ updating character screens with reasonable optimization.
+ .
+ This package contains the shared libraries necessary to run programs
+ compiled with ncurses.
+Homepage: http://invisible-island.net/ncurses/
+Original-Maintainer: Craig Small <csmall@debian.org>
+
+Package: libplymouth2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 298
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: plymouth
+Version: 0.8.8-0ubuntu17
+Replaces: plymouth (<< 0.7.0+git20090207-0ubuntu0.1~ppa4)
+Depends: libc6 (>= 2.8), libpng12-0 (>= 1.2.13-4)
+Pre-Depends: multiarch-support
+Breaks: casper (= 1.227), mountall (<< 2.8)
+Description: graphical boot animation and logger - shared libraries
+ Plymouth is an application that runs very early in the boot process
+ (even before the root filesystem is mounted!) that provides a graphical
+ boot animation while the boot process happens in the background.
+ .
+ This package contains the shared libraries.
+
+Package: gcc-4.9-base
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 213
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: gcc-4.9
+Version: 4.9.0-1ubuntu3
+Breaks: dehydra (<= 0.9.hg20110609-2), gcc-4.4-base (<< 4.4.7), gcj-4.4-base (<< 4.4.6-9~), gcj-4.6-base (<< 4.6.1-4~), gnat-4.4-base (<< 4.4.6-3~), gnat-4.6 (<< 4.6.1-5~)
+Description: GCC, the GNU Compiler Collection (base package)
+ This package contains files common to all languages and libraries
+ contained in the GNU Compiler Collection (GCC).
+Homepage: http://gcc.gnu.org/
+Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+
+Package: initramfs-tools-bin
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 119
+Maintainer: Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>
+Architecture: i386
+Source: initramfs-tools
+Version: 0.103ubuntu4
+Depends: libc6 (>= 2.4), libudev1 (>= 183)
+Description: binaries used by initramfs-tools
+ This package contains binaries used inside the initramfs images generated
+ by initramfs-tools.
+Original-Maintainer: Debian kernel team <debian-kernel@lists.debian.org>
+
+Package: libattr1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 55
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: attr
+Version: 1:2.4.47-1ubuntu1
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Conflicts: attr (<< 2.0.0)
+Description: Extended attribute shared library
+ Contains the runtime environment required by programs that make use
+ of extended attributes.
+Homepage: http://savannah.nongnu.org/projects/attr/
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+
+Package: klibc-utils
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 392
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Source: klibc
+Version: 2.0.3-0ubuntu1
+Depends: libklibc (= 2.0.3-0ubuntu1)
+Breaks: initramfs-tools (<< 0.103)
+Description: small utilities built with klibc for early boot
+ This package contains a collection of programs that are linked
+ against klibc. These duplicate some of the functionality of a
+ regular Linux toolset, but are typically much smaller than their
+ full-function counterparts. They are intended for inclusion in
+ initramfs images and embedded systems.
+Homepage: http://git.kernel.org/?p=libs/klibc/klibc.git;a=summary
+Original-Maintainer: maximilian attems <maks@debian.org>
+
+Package: e2fslibs
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 418
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: e2fsprogs
+Version: 1.42.9-3ubuntu1
+Replaces: e2fsprogs (<< 1.34-1)
+Provides: libe2p2, libext2fs2
+Depends: libc6 (>= 2.17)
+Pre-Depends: multiarch-support
+Description: ext2/ext3/ext4 file system libraries
+ The ext2, ext3 and ext4 file systems are successors of the original ext
+ ("extended") file system. They are the main file system types used for
+ hard disks on Debian and other Linux systems.
+ .
+ This package provides the ext2fs and e2p libraries, for userspace software
+ that directly accesses extended file systems. Programs that use libext2fs
+ include e2fsck, mke2fs, and tune2fs. Programs that use libe2p include
+ dumpe2fs, chattr, and lsattr.
+Homepage: http://e2fsprogs.sourceforge.net
+Original-Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+
+Package: base-passwd
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 247
+Maintainer: Colin Watson <cjwatson@debian.org>
+Architecture: i386
+Multi-Arch: foreign
+Version: 3.5.33
+Replaces: base
+Depends: libc6 (>= 2.8), libdebconfclient0 (>= 0.145)
+Recommends: debconf (>= 0.5) | debconf-2.0
+Description: Debian base system master password and group files
+ These are the canonical master copies of the user database files
+ (/etc/passwd and /etc/group), containing the Debian-allocated user and
+ group IDs. The update-passwd tool is provided to keep the system databases
+ synchronized with these master files.
+
+Package: libcomerr2
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 102
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: e2fsprogs
+Version: 1.42.9-3ubuntu1
+Replaces: e2fsprogs (<< 1.34-1)
+Provides: libcomerr-kth-compat
+Depends: libc6 (>= 2.17)
+Pre-Depends: multiarch-support
+Description: common error description library
+ libcomerr is an attempt to present a common error-handling mechanism to
+ manipulate the most common form of error code in a fashion that does not
+ have the problems identified with mechanisms commonly in use.
+Homepage: http://e2fsprogs.sourceforge.net
+Original-Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+
+Package: plymouth
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 441
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Version: 0.8.8-0ubuntu17
+Depends: initramfs-tools, libplymouth2 (= 0.8.8-0ubuntu17), mountall (>= 2.0), upstart (>= 1.11-0ubuntu3), udev (>= 166-0ubuntu4), sysv-rc (>= 2.88dsf-24) | file-rc (>= 0.8.16), libc6 (>= 2.8), libdbus-1-3 (>= 1.1.1), libdrm2 (>= 2.4.25), libtinfo5
+Recommends: plymouth-theme-ubuntu-text | plymouth-theme
+Breaks: gdm (<< 3.0.4-0ubuntu11), kdm (<< 4:4.7.1-0ubuntu3), lightdm (<< 0.9.7-0ubuntu2), lubuntu-plymouth-theme (<= 0.4), lxdm (<< 0.4.1-0ubuntu2), ubuntustudio-plymouth-theme (<= 0.38), xubuntu-plymouth-theme (<< 10.04.4)
+Conflicts: usplash
+Conffiles:
+ /etc/init/plymouth-ready.conf f8542ccc586a5b63f5b76f68ac4f2f59
+ /etc/init/plymouth-shutdown.conf febc1a3763f8e15add963ede4e561a26
+ /etc/init/plymouth-stop.conf 03c8ba8289470d71e22fdbfa5859e122
+ /etc/init/plymouth.conf 859e01281230eb9a522c99875f4b8b69
+ /etc/init/plymouth-log.conf 65d2943a69f455dec3fed43fd7996d76
+ /etc/init/plymouth-splash.conf 63b63b446cc981dc4f2fa5772b4b3e93
+ /etc/init/plymouth-upstart-bridge.conf dd271be2c476aadd0cd34bc77d95a379
+Description: graphical boot animation and logger - main package
+ Plymouth is an application that runs very early in the boot process
+ (even before the root filesystem is mounted!) that provides a graphical
+ boot animation while the boot process happens in the background.
+
+Package: upstart
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 1621
+Maintainer: James Hunt <james.hunt@ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 1.12.1-0ubuntu4
+Replaces: startup-tasks, system-services, sysvinit, upstart-compat-sysv, upstart-job
+Provides: startup-tasks, system-services, upstart-compat-sysv, upstart-job
+Depends: libc6 (>= 2.15), libdbus-1-3 (>= 1.2.16), libjson-c2 (>= 0.10), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0), libselinux1 (>= 1.32), libudev1 (>= 183), sysvinit-utils, initscripts, mountall, ifupdown (>= 0.6.10ubuntu5), libjson0 (>= 0.10-1.1ubuntu1), debianutils (>= 4)
+Suggests: python3, graphviz, bash-completion, upstart-monitor
+Breaks: friendly-recovery (<< 0.2.13), libc6 (<< 2.12.1-0ubuntu12)
+Conflicts: lxcguest, startup-tasks, system-services, sysvinit, upstart-compat-sysv, upstart-job
+Conffiles:
+ /etc/logrotate.d/upstart 070767086a27883ec119e1dde779a856
+ /etc/cron.daily/upstart 761747ebd3d1677620d5af50c9900b13
+ /etc/dbus-1/system.d/Upstart.conf 64be74cddb0c74b7d98202b40389784c
+ /etc/bash_completion.d/upstart 080f7eee4a3f3e5f76197eaa581fb4da
+ /etc/X11/Xsession.d/99upstart d150fce36cf22f5504e4dbc89b4826e0
+ /etc/X11/Xsession.d/00upstart 46b4576b1f2ceffb2450a88d58786b95
+ /etc/init/tty5.conf 6d5794f72a1098b008e53e326a6bb5a0
+ /etc/init/rc-sysinit.conf a50c045d9390a6e6c43c18b19cd72fe5
+ /etc/init/rcS.conf 8533688686f75d7bcf20da5a0d36d94b
+ /etc/init/flush-early-job-log.conf 09e959647877c39f6490ad29b8a35a28
+ /etc/init/wait-for-state.conf 20b85b55c3f1e040fdbbf669afe4d2a1
+ /etc/init/shutdown.conf 559659602cefe7e8d3c1e76820f5ae5d
+ /etc/init/upstart-udev-bridge.conf 2c24bb70877476b5e7016ccf6de745a4
+ /etc/init/tty2.conf 0d9326fdda081ac96d92bbc57ff773e4
+ /etc/init/failsafe.conf 0b88eeccf6c8fd456e886aa7a76e3291
+ /etc/init/rc.conf 3ebc6ddcd00482cfb24ce09a14ded29f
+ /etc/init/upstart-file-bridge.conf 57ea7ed6cba1f1259ac87410c59237ca
+ /etc/init/console.conf 8d79b0205f2daffb473604ce53e1dc83
+ /etc/init/tty1.conf f42f2298f711147ecf177054294861a7
+ /etc/init/control-alt-delete.conf 16e6603524084b63b0f0ca04eb56757e
+ /etc/init/upstart-socket-bridge.conf 5f3eaca09ee1f03d5d0686ea99f8c051
+ /etc/init/tty4.conf 2c78cd865d848bb2674104905151dbe2
+ /etc/init/tty3.conf 6608f08adf00a282358a1eeb9bdcf78e
+ /etc/init/tty6.conf e8ad2f0411614f9c8dc9c4e364763549
+ /etc/init/container-detect.conf 6bae6257355ad7322e7263e567817465
+ /etc/upstart-xsessions ec9aa92a5c50938479d711daa9ee774a
+Description: event-based init daemon
+ upstart is a replacement for the /sbin/init daemon which handles
+ starting of tasks and services during boot, stopping them during
+ shutdown and supervising them while the system is running.
+Homepage: http://upstart.ubuntu.com/
+Orig-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: passwd
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 2250
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Source: shadow
+Version: 1:4.1.5.1-1ubuntu9
+Replaces: manpages-tr (<< 1.0.5), manpages-zh (<< 1.5.1-1)
+Depends: libc6 (>= 2.8), libpam0g (>= 0.99.7.1), libselinux1 (>= 1.32), libsemanage1 (>= 2.0.3), libpam-modules, debianutils (>= 2.15.2)
+Conffiles:
+ /etc/default/useradd cc9f9a7713ab62a32cd38363d958f396
+ /etc/init/passwd.conf ea81baf06e4c358225ce22b786ad9e6a
+ /etc/cron.daily/passwd db990990933b6f56322725223f13c2bc
+ /etc/pam.d/chpasswd 9900720564cb4ee98b7da29e2d183cb2
+ /etc/pam.d/newusers 1454e29bfa9f2a10836563e76936cea5
+ /etc/pam.d/chfn 4d466e00a348ba426130664d795e8afa
+ /etc/pam.d/passwd eaf2ad85b5ccd06cceb19a3e75f40c63
+ /etc/pam.d/chsh a6e9b589e90009334ffd030d819290a6
+Description: change and administer password and group data
+ This package includes passwd, chsh, chfn, and many other programs to
+ maintain password and group data.
+ .
+ Shadow passwords are supported. See /usr/share/doc/passwd/README.Debian
+Homepage: http://pkg-shadow.alioth.debian.org/
+Original-Maintainer: Shadow package maintainers <pkg-shadow-devel@lists.alioth.debian.org>
+
+Package: libacl1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 75
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: acl
+Version: 2.2.52-1
+Depends: libattr1 (>= 1:2.4.46-8), libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Conflicts: acl (<< 2.0.0), libacl1-kerberos4kth
+Description: Access control list shared library
+ This package contains the libacl.so dynamic library containing
+ the POSIX 1003.1e draft standard 17 functions for manipulating
+ access control lists.
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://savannah.nongnu.org/projects/acl/
+
+Package: libslang2
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 1244
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: slang2
+Version: 2.2.4-16ubuntu1
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Recommends: libpng12-0
+Description: S-Lang programming library - runtime version
+ S-Lang is a C programmer's library that includes routines for the rapid
+ development of sophisticated, user friendly, multi-platform applications.
+ .
+ This package contains only the shared library libslang.so.* and copyright
+ information. It is only necessary for programs that use this library (such
+ as jed and slrn). If you plan on doing development with S-Lang, you will
+ need the companion -dev package as well.
+Homepage: http://www.jedsoft.org/slang/
+Original-Maintainer: Alastair McKinstry <mckinstry@debian.org>
+
+Package: initscripts
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 219
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Source: sysvinit
+Version: 2.88dsf-41ubuntu6
+Replaces: libc0.1, libc0.3, libc6, libc6.1
+Depends: libc6 (>= 2.4), mount (>= 2.11x-1), debianutils (>= 4), lsb-base (>= 3.2-14), sysvinit-utils (>= 2.86.ds1-64), sysv-rc | file-rc, coreutils (>= 5.93), passwd, upstart, mountall (>= 2.28)
+Recommends: psmisc, e2fsprogs
+Breaks: aide (<< 0.15.1-5), atm-tools (<< 1:2.5.1-1.3), bootchart (<< 0.10~svn407-3.3), console-common (<< 0.7.86), cruft (<< 0.9.16), eepc-acpi-scripts (<< 1.1.12), fcheck (<< 2.7.59-16), hostapd (<< 1:0.7.3-3), hostname (<< 2.95ubuntu1~boot2), ifupdown (<< 0.6.8ubuntu27), libpam-mount (<< 2.13-1), ltsp-client-core (<< 5.2.16-1), mdadm (<< 3.2.2-1), nbd-client (<< 1:2.9.23-1), nfs-common (<< 1:1.2.5-3), portmap (<< 6.0.0-2), readahead-fedora (<< 2:1.5.6-3), resolvconf (<< 1.49), rpcbind (<< 0.2.0-7), rsyslog (<< 5.8.2-2), selinux-policy-default (<= 2:0.2.20100524-9), splashy (<< 0.3.13-5.1+b1), sysklogd (<< 1.5-6.2), udev (<< 146-2~boot6), upstart (<< 0.6.3-2~boot4), wpasupplicant (<< 0.7.3-4), xymon (<< 4.3.0~beta2.dfsg-9)
+Conflicts: libdevmapper1.02.1 (<< 2:1.02.24-1)
+Conffiles:
+ /etc/init.d/halt 6ae1b3b1b8198567a5e32116077f12a2
+ /etc/init.d/killprocs 5e404d35091fab6c4889302736ed4602
+ /etc/init.d/ondemand 63d57b1f5df759ddea8ef193094c118a
+ /etc/init.d/rc.local 18cd07959adfa8411ca17fe7c2ec3d96
+ /etc/init.d/reboot 1b9db1ef7bfd79b128ef85d5065721a6
+ /etc/init.d/sendsigs 8376da0c226dcc989f6829230b1d5b50
+ /etc/init.d/single dc13cb373c5c098a8fb95424701373e3
+ /etc/init.d/umountfs 07e4c8c8d9136f36745feb4776edc6f4
+ /etc/init.d/umountnfs.sh b369d5215733f79ee2bf58cc966c5931
+ /etc/init.d/umountroot 677b1eb8358469b50044663bfbee5699
+ /etc/init.d/urandom e6454386bfce38efb5987dd06cb3b21d
+ /etc/default/devpts fc857c5ac5fb84d80720ed4d1c624f6e
+ /etc/default/halt 18d9844cf8ca8608e2a559a4555e593a
+ /etc/default/rcS db3696fc6caa33a1d72b33fa3cec7c42
+Description: scripts for initializing and shutting down the system
+ The scripts in this package initialize a standard Debian
+ system at boot time and shut it down at halt or reboot time.
+Homepage: http://savannah.nongnu.org/projects/sysvinit
+Original-Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
+
+Package: libblkid1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 254
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: util-linux
+Version: 2.20.1-5.1ubuntu20
+Depends: libc6 (>= 2.7), libuuid1 (>= 2.16)
+Pre-Depends: multiarch-support
+Conffiles:
+ /etc/blkid.conf 7f4c49e01e0a23d2f4b20eeb32e95abb
+Description: block device id library
+ The blkid library which allows system programs like fsck and
+ mount to quickly and easily find block devices by filesystem UUID and
+ LABEL. This allows system administrators to avoid specifying
+ filesystems by hard-coded device names, but via a logical naming
+ system instead.
+Homepage: http://userweb.kernel.org/~kzak/util-linux/
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: libss2
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 110
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: e2fsprogs
+Version: 1.42.9-3ubuntu1
+Replaces: e2fsprogs (<< 1.34-1)
+Depends: libcomerr2, libc6 (>= 2.17)
+Pre-Depends: multiarch-support
+Description: command-line interface parsing library
+ libss provides a simple command-line interface parser which will
+ accept input from the user, parse the command into an argv argument
+ vector, and then dispatch it to a handler function.
+ .
+ It was originally inspired by the Multics SubSystem library.
+Homepage: http://e2fsprogs.sourceforge.net
+Original-Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+
+Package: libsemanage-common
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 56
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Source: libsemanage
+Version: 2.2-1ubuntu1
+Replaces: libsemanage1 (<= 2.0.41-1), libsemanage1-dev (<< 2.1.6-3~)
+Breaks: libsemanage1 (<= 2.0.41-1), libsemanage1-dev (<< 2.1.6-3~)
+Conffiles:
+ /etc/selinux/semanage.conf e69d42a4d98a93c3b8e201bdda367c55
+Description: Common files for SELinux policy management libraries
+ This package provides the common files used by the shared libraries
+ for SELinux policy management.
+ .
+ Security-enhanced Linux is a patch of the Linux kernel and a
+ number of utilities with enhanced security functionality designed to
+ add mandatory access controls to Linux. The Security-enhanced Linux
+ kernel contains new architectural components originally developed to
+ improve the security of the Flask operating system. These
+ architectural components provide general support for the enforcement
+ of many kinds of mandatory access control policies, including those
+ based on the concepts of Type Enforcement, Role-based Access
+ Control, and Multi-level Security.
+Original-Maintainer: Debian SELinux maintainers <selinux-devel@lists.alioth.debian.org>
+Homepage: http://userspace.selinuxproject.org/
+
+Package: libpam-modules-bin
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 212
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Source: pam
+Version: 1.1.8-1ubuntu2
+Replaces: libpam-modules (<< 1.1.3-8)
+Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.4), libpam0g (>= 0.99.7.1), libselinux1 (>= 1.32)
+Description: Pluggable Authentication Modules for PAM - helper binaries
+ This package contains helper binaries used by the standard set of PAM
+ modules in the libpam-modules package.
+Homepage: http://pam.sourceforge.net/
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: findutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 668
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 4.4.2-8
+Pre-Depends: libc6 (>= 2.17)
+Suggests: mlocate | locate
+Description: utilities for finding files--find, xargs
+ GNU findutils provides utilities to find files meeting specified
+ criteria and perform various actions on the files which are found.
+ This package contains 'find' and 'xargs'; however, 'locate' has
+ been split off into a separate package.
+Original-Maintainer: Andreas Metzler <ametzler@debian.org>
+Homepage: http://savannah.gnu.org/projects/findutils/
+
+Package: e2fsprogs
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 2424
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 1.42.9-3ubuntu1
+Replaces: hurd (<= 20040301-1), libblkid1 (<< 1.38+1.39-WIP-2005.12.10-2), libuuid1 (<< 1.38+1.39-WIP-2005.12.10-2)
+Pre-Depends: e2fslibs (= 1.42.9-3ubuntu1), libblkid1 (>= 2.17.2), libc6 (>= 2.11), libcomerr2 (>= 1.42~WIP-2011-10-05-1), libss2 (>= 1.34-1), libuuid1 (>= 2.16), util-linux (>= 2.15~rc1-1)
+Suggests: gpart, parted, e2fsck-static
+Conflicts: dump (<< 0.4b4-4), initscripts (<< 2.85-4), quota (<< 1.55-8.1), sysvinit (<< 2.85-4)
+Conffiles:
+ /etc/mke2fs.conf e2cdbf0620e93949af5857eb4739f949
+Description: ext2/ext3/ext4 file system utilities
+ The ext2, ext3 and ext4 file systems are successors of the original ext
+ ("extended") file system. They are the main file system types used for
+ hard disks on Debian and other Linux systems.
+ .
+ This package contains programs for creating, checking, and maintaining
+ ext2/3/4-based file systems. It also includes the "badbocks" program,
+ which can be used to scan for bad blocks on a disk or other storage device.
+Homepage: http://e2fsprogs.sourceforge.net
+Original-Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+
+Package: liblzma5
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 316
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: xz-utils
+Version: 5.1.1alpha+20120614-2ubuntu2
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Description: XZ-format compression library
+ XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm
+ compression format, which provides memory-hungry but powerful
+ compression (often better than bzip2) and fast, easy decompression.
+ .
+ The native format of liblzma is XZ; it also supports raw (headerless)
+ streams and the older LZMA format used by lzma. (For 7-Zip's related
+ format, use the p7zip package instead.)
+Homepage: http://tukaani.org/xz/
+Original-Maintainer: Jonathan Nieder <jrnieder@gmail.com>
+
+Package: libnih1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 147
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: libnih
+Version: 1.0.3-4ubuntu25
+Pre-Depends: multiarch-support, libc6 (>= 2.15~)
+Description: NIH Utility Library
+ libnih is a light-weight "standard library" of C functions to ease the
+ development of other libraries and applications, especially those
+ normally found in /lib.
+ .
+ This package contains the shared library.
+Homepage: https://launchpad.net/libnih
+Original-Maintainer: Scott James Remnant <scott@netsplit.com>
+
+Package: libaudit1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 143
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: audit
+Version: 1:2.3.2-2ubuntu1
+Depends: libaudit-common (= 1:2.3.2-2ubuntu1), libc6 (>= 2.8)
+Pre-Depends: multiarch-support
+Description: Dynamic library for security auditing
+ The audit-libs package contains the dynamic libraries needed for
+ applications to use the audit framework. It is used to monitor systems for
+ security related events.
+Homepage: http://people.redhat.com/sgrubb/audit/
+Original-Maintainer: Debian QA Group <packages@qa.debian.org>
+
+Package: libdb5.3
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 1788
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: db5.3
+Version: 5.3.28-3ubuntu3
+Depends: libc6 (>= 2.17)
+Pre-Depends: multiarch-support
+Description: Berkeley v5.3 Database Libraries [runtime]
+ This is the runtime package for programs that use the v5.3 Berkeley
+ database library.
+Homepage: http://www.oracle.com/technology/software/products/berkeley-db/index.html
+Original-Maintainer: Debian Berkeley DB Group <pkg-db-devel@lists.alioth.debian.org>
+
+Package: insserv
+Status: install ok installed
+Priority: optional
+Section: misc
+Installed-Size: 182
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Version: 1.14.0-5ubuntu2
+Depends: libc6 (>= 2.7)
+Suggests: bootchart2
+Breaks: sysv-rc (<< 2.87dsf-3)
+Conffiles:
+ /etc/insserv.conf 3e9467113029a6356f57842085f3c849
+ /etc/bash_completion.d/insserv 32975fe14795d6fce1408d5fd22747fd
+Description: boot sequence organizer using LSB init.d script dependency information
+ The insserv program is used by the standard SysV-based init system. It
+ updates the order of symlinks in /etc/rc?.d/ based on dependencies
+ specified by LSB headers in the init.d scripts themselves.
+ .
+ These declared relations between scripts make it possible to optimize
+ the boot sequence for the currently installed set of packages, while
+ detecting and rejecting dependency loops.
+ .
+ Using insserv incorrectly can result in an unbootable system.
+Homepage: http://savannah.nongnu.org/projects/sysvinit
+Original-Maintainer: Petter Reinholdtsen <pere@debian.org>
+
+Package: dpkg
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 6327
+Origin: debian
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Bugs: debbugs://bugs.debian.org
+Architecture: i386
+Multi-Arch: foreign
+Version: 1.17.9ubuntu1
+Replaces: manpages-it (<< 2.80-4)
+Pre-Depends: libbz2-1.0, libc6 (>= 2.11), liblzma5 (>= 5.1.1alpha+20120614), libselinux1 (>= 2.1.0), zlib1g (>= 1:1.1.4), tar (>= 1.23)
+Suggests: apt
+Breaks: apt (<< 0.7.7), aptitude (<< 0.4.7-1), dpkg-dev (<< 1.15.8), libdpkg-perl (<< 1.15.8)
+Conflicts: ada-reference-manual (<< 20021112web-4), asn1-mode (<< 2.7-7), bogosort (<< 0.4.2-3), cl-yacc (<< 0.3-3), cpp-4.1-doc (<< 4.1.2.nf2-4), cpp-4.2-doc (<< 4.2.4.nf1-4), gcc-4.1-doc (<< 4.1.2.nf2-4), gcc-4.2-doc (<< 4.2.4.nf1-4), gcj-4.1-doc (<< 4.1.2.nf2-4), gcj-4.2-doc (<< 4.2.4.nf1-4), gfortran-4.1-doc (<< 4.1.2.nf2-4), gfortran-4.2-doc (<< 4.2.4.nf1-4), ggz-docs (<< 0.0.14.1-2), glame (<< 2.0.1-6), gnat-4.1-doc (<< 4.1.2.nf2-4), gnat-4.2-doc (<< 4.2.4.nf1-4), gtalk (<< 0.99.10-16), libalogg-dev (<< 1.3.7-2), libgtk1.2-doc (<< 1.2.10-19), libnettle-dev (<< 2), liborbit-dev (<< 0.5.17-12), libreadline5-dev (<< 5.2-8), librep-doc (<< 0.90), mmucl (<< 1.5.2-3), nxml-mode (<< 20041004-9), r6rs-doc (<< 1.0-2), serveez-doc (<< 0.1.5-3), slat (<< 2.0-6), texlive-base-bin-doc (<< 2007.dfsg.2-9), ttcn-el (<< 0.6.9-2), ulog-acctd (<< 0.4.3-3), xconq-doc (<< 7.4.1-5), zenirc (<< 2.112.dfsg-1)
+Conffiles:
+ /etc/alternatives/README 69c4ba7f08363e998e0f2e244a04f881
+ /etc/logrotate.d/dpkg 782ea5ae536f67ff51dc8c3e2eeb4cf9
+ /etc/dpkg/dpkg.cfg f4413ffb515f8f753624ae3bb365b81b
+ /etc/cron.daily/dpkg 2712ab0dc801324ea632a0f1f82cd38c
+Description: Debian package management system
+ This package provides the low-level infrastructure for handling the
+ installation and removal of Debian software packages.
+ .
+ For Debian package development tools, install dpkg-dev.
+Homepage: https://wiki.debian.org/Teams/Dpkg
+Original-Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
+
+Package: libpcre3
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 595
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: pcre3
+Version: 1:8.31-5ubuntu1
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Breaks: approx (<< 4.4-1~), cduce (<< 0.5.3-2~), cmigrep (<< 1.5-7~), galax (<< 1.1-7~), libpcre-ocaml (<< 6.0.1~), liquidsoap (<< 0.9.2-3~), ocsigen (<< 1.3.3-1~)
+Conflicts: libpcre3-dev (<= 4.3-3)
+Description: Perl 5 Compatible Regular Expression Library - runtime files
+ This is a library of functions to support regular expressions whose syntax
+ and semantics are as close as possible to those of the Perl 5 language.
+ .
+ This package contains the runtime libraries.
+Original-Maintainer: Mark Baker <mark@mnb.org.uk>
+
+Package: libncursesw5
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 378
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: ncurses
+Version: 5.9+20140118-1ubuntu1
+Depends: libtinfo5 (= 5.9+20140118-1ubuntu1), libc6 (>= 2.15)
+Pre-Depends: multiarch-support
+Recommends: libgpm2
+Description: shared libraries for terminal handling (wide character support)
+ The ncurses library routines are a terminal-independent method of
+ updating character screens with reasonable optimization.
+ .
+ This package contains the shared libraries necessary to run programs
+ compiled with ncursesw, which includes support for wide characters.
+Homepage: http://invisible-island.net/ncurses/
+Original-Maintainer: Craig Small <csmall@debian.org>
+
+Package: busybox-initramfs
+Status: install ok installed
+Priority: optional
+Section: shells
+Installed-Size: 357
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Source: busybox
+Version: 1:1.22.0-5ubuntu1
+Depends: libc6 (>= 2.11)
+Description: Standalone shell setup for initramfs
+ BusyBox combines tiny versions of many common UNIX utilities into a single
+ small executable. It provides minimalist replacements for the most common
+ utilities you would usually find on your desktop system (i.e., ls, cp, mv,
+ mount, tar, etc.). The utilities in BusyBox generally have fewer options than
+ their full-featured GNU cousins; however, the options that are included
+ provide the expected functionality and behave very much like their GNU
+ counterparts.
+ .
+ busybox-initramfs provides a simple stand alone shell that provides
+ only the basic utilities needed for the initramfs.
+Homepage: http://www.busybox.net
+Original-Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
+
+Package: libbz2-1.0
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 116
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: bzip2
+Version: 1.0.6-5
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Description: high-quality block-sorting file compressor library - runtime
+ This package contains libbzip2 which is used by the bzip2 compressor.
+ .
+ bzip2 is a freely available, patent free, high-quality data compressor.
+ It typically compresses files to within 10% to 15% of the best available
+ techniques, whilst being around twice as fast at compression and six
+ times faster at decompression.
+ .
+ bzip2 compresses files using the Burrows-Wheeler block-sorting text
+ compression algorithm, and Huffman coding. Compression is generally
+ considerably better than that achieved by more conventional
+ LZ77/LZ78-based compressors, and approaches the performance of the PPM
+ family of statistical compressors.
+ .
+ The archive file format of bzip2 (.bz2) is incompatible with that of its
+ predecessor, bzip (.bz).
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://www.bzip.org/
+
+Package: libtinfo5
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 433
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: ncurses
+Version: 5.9+20140118-1ubuntu1
+Replaces: libncurses5 (<< 5.9-3)
+Depends: libc6 (>= 2.15)
+Pre-Depends: multiarch-support
+Breaks: dialog (<< 1.2-20130523)
+Description: shared low-level terminfo library for terminal handling
+ The ncurses library routines are a terminal-independent method of
+ updating character screens with reasonable optimization.
+ .
+ This package contains the shared low-level terminfo library.
+Homepage: http://invisible-island.net/ncurses/
+Original-Maintainer: Craig Small <csmall@debian.org>
+
+Package: sysvinit-utils
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 232
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Source: sysvinit
+Version: 2.88dsf-41ubuntu6
+Replaces: last, sysvinit (<= 2.86.ds1-65)
+Depends: libc6 (>= 2.15), libselinux1 (>= 1.32), sysv-rc (>= 2.88dsf-24) | file-rc (>= 0.8.16)
+Recommends: upstart (>= 0.6.3-4)
+Suggests: bootlogd, sash
+Breaks: upstart (<< 1.5-0ubuntu5)
+Conflicts: chkconfig (<< 11.0-79.1-2), last, sysvconfig
+Conffiles:
+ /etc/init/startpar-bridge.conf d220afa75514468471c42469967341d2
+Description: System-V-like utilities
+ This package contains the important System-V-like utilities.
+ .
+ Specifically, this package includes:
+ killall5, last, lastb, mesg, pidof, service, sulogin
+Homepage: http://savannah.nongnu.org/projects/sysvinit
+Original-Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
+
+Package: multiarch-support
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 201
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Source: eglibc
+Version: 2.19-0ubuntu6
+Depends: libc6 (>= 2.13-5)
+Description: Transitional package to ensure multiarch compatibility
+ This is a transitional package used to ensure multiarch support is present
+ in ld.so before unpacking libraries to the multiarch directories. It can
+ be removed once nothing on the system depends on it.
+Homepage: http://www.eglibc.org
+Original-Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+
+Package: libjson0
+Status: install ok installed
+Priority: extra
+Section: oldlibs
+Installed-Size: 29
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: json-c
+Version: 0.11-4ubuntu1
+Depends: libjson-c2
+Description: JSON manipulation library (transitional package)
+ This is a transition package that can be safely removed once no
+ package depend on it.
+Homepage: https://github.com/json-c/json-c/wiki
+Original-Maintainer: fabien boucher <fabien.dot.boucher@gmail.com>
+
+Package: libnih-dbus1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 65
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: libnih
+Version: 1.0.3-4ubuntu25
+Depends: libnih1 (= 1.0.3-4ubuntu25), libc6 (>= 2.3.4), libdbus-1-3 (>= 1.2.16)
+Pre-Depends: multiarch-support
+Description: NIH D-Bus Bindings Library
+ libnih-dbus is a D-Bus bindings library that integrates with the main
+ loop provided by libnih.
+ .
+ This package contains the shared library.
+Homepage: https://launchpad.net/libnih
+Original-Maintainer: Scott James Remnant <scott@netsplit.com>
+
+Package: libselinux1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 192
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: libselinux
+Version: 2.2.2-1ubuntu1
+Depends: libc6 (>= 2.8), libpcre3
+Pre-Depends: multiarch-support
+Description: SELinux runtime shared libraries
+ This package provides the shared libraries for Security-enhanced
+ Linux that provides interfaces (e.g. library functions for the
+ SELinux kernel APIs like getcon(), other support functions like
+ getseuserbyname()) to SELinux-aware applications. Security-enhanced
+ Linux is a patch of the Linux kernel and a number of utilities with
+ enhanced security functionality designed to add mandatory access
+ controls to Linux. The Security-enhanced Linux kernel contains new
+ architectural components originally developed to improve the security
+ of the Flask operating system. These architectural components provide
+ general support for the enforcement of many kinds of mandatory access
+ control policies, including those based on the concepts of Type
+ Enforcement, Role-based Access Control, and Multi-level Security.
+ .
+ libselinux1 provides an API for SELinux applications to get and set
+ process and file security contexts and to obtain security policy
+ decisions. Required for any applications that use the SELinux
+ API. libselinux may use the shared libsepol to manipulate the binary
+ policy if necessary (e.g. to downgrade the policy format to an older
+ version supported by the kernel) when loading policy.
+Homepage: http://userspace.selinuxproject.org/
+Original-Maintainer: Debian SELinux maintainers <selinux-devel@lists.alioth.debian.org>
+
+Package: libaudit-common
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 44
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Source: audit
+Version: 1:2.3.2-2ubuntu1
+Replaces: libaudit0, libaudit1 (<< 1:2.2.1-2)
+Breaks: libaudit0, libaudit1 (<< 1:2.2.1-2)
+Conffiles:
+ /etc/libaudit.conf cdc703f9d27f0d980271a9e95d0f18b2
+Description: Dynamic library for security auditing - common files
+ The audit-libs package contains the dynamic libraries needed for
+ applications to use the audit framework. It is used to monitor systems for
+ security related events.
+ .
+ This package contains the libaudit.conf configuration file and the associated
+ manpage.
+Homepage: http://people.redhat.com/sgrubb/audit/
+Original-Maintainer: Debian QA Group <packages@qa.debian.org>
+
+Package: libc6
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 9254
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: eglibc
+Version: 2.19-0ubuntu6
+Replaces: libc6-i386, libc6-xen
+Provides: glibc-2.19-1, libc6-i686, libc6-xen
+Depends: libgcc1
+Suggests: glibc-doc, debconf | debconf-2.0, locales
+Breaks: hurd (<< 1:0.5.git20140203-1), nscd (<< 2.19)
+Conflicts: libc6-xen, prelink (<= 0.0.20090311-1), tzdata (<< 2007k-1), tzdata-etch
+Conffiles:
+ /etc/ld.so.conf.d/i686-linux-gnu.conf 1c63da36f33ec6647af1d8faff9b9795
+Description: Embedded GNU C Library: Shared libraries
+ Contains the standard libraries that are used by nearly all programs on
+ the system. This package includes shared versions of the standard C library
+ and the standard math library, as well as many others.
+Homepage: http://www.eglibc.org
+Original-Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+
+Package: libpng12-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 308
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: libpng
+Version: 1.2.50-1ubuntu2
+Replaces: libpng12-dev (<= 1.2.8rel-7)
+Depends: libc6 (>= 2.11), zlib1g (>= 1:1.1.4)
+Pre-Depends: multiarch-support
+Conflicts: libpng12-dev (<= 1.2.8rel-7), mzscheme (<= 1:209-5), pngcrush (<= 1.5.10-2), pngmeta (<= 1.11-3), povray-3.5 (<= 3.5.0c-10), qemacs (<= 0.3.1-5)
+Description: PNG library - runtime
+ libpng is a library implementing an interface for reading and writing
+ PNG (Portable Network Graphics) format files.
+ .
+ This package contains the runtime library files needed to run software
+ using libpng.
+Homepage: http://libpng.org/pub/png/libpng.html
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+
+Package: udev
+Status: install ok installed
+Priority: important
+Section: admin
+Installed-Size: 5119
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Source: systemd
+Version: 204-10ubuntu1
+Depends: libacl1 (>= 2.2.51-8), libblkid1 (>= 2.19.1), libc6 (>= 2.17), libcgmanager0, libdbus-1-3 (>= 1.0.2), libkmod2 (>= 5~), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0), libselinux1 (>= 2.0.65), libudev1 (= 204-10ubuntu1), sysv-rc (>= 2.88dsf-24) | file-rc (>= 0.8.16), lsb-base (>= 3.0-6), util-linux (>= 2.16), procps
+Pre-Depends: debconf (>= 1.4.69) | debconf-2.0
+Breaks: consolekit (<< 0.4.6-1)
+Conffiles:
+ /etc/udev/udev.conf ae415f84e2967eff580089fb08aa0a61
+ /etc/init.d/udev b1cab2570af69ccbf49a208799af6247
+ /etc/init.d/udev-finish 6eac2544228b88cbe8cede182082f46a
+ /etc/init/udev-fallback-graphics.conf b8bfe7164e10cd0e53494b243c5728b1
+ /etc/init/udevtrigger.conf 651ff2421dde80be7ce7ccbf7fa8cf18
+ /etc/init/udev-finish.conf 5c953c5b98ccfbb2a02985bfa2f80aed
+ /etc/init/udev.conf 41c0081f3a830e0902aaff76a53edf98
+ /etc/init/udevmonitor.conf b541dfb5aa4958e9a5336ecaec00ca15
+ /etc/modprobe.d/fbdev-blacklist.conf 01cd03c88ce6821c03baf904f7dfcbd0
+ /etc/udev/rules.d/README 3b6de9f3f911176734c66903b4f8735c obsolete
+Description: /dev/ and hotplug management daemon
+ udev is a daemon which dynamically creates and removes device nodes from
+ /dev/, handles hotplug events and loads drivers at boot time.
+Homepage: http://www.freedesktop.org/wiki/Software/systemd
+Original-Maintainer: Debian systemd Maintainers <pkg-systemd-maintainers@lists.alioth.debian.org>
+
+Package: util-linux
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 1554
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 2.20.1-5.1ubuntu20
+Replaces: e2fsprogs, fdisk, fstrim, linux32, miscutils, schedutils, setterm, sparc-utils
+Provides: linux32, schedutils
+Depends: lsb-base (>= 3.0-6), tzdata (>= 2006c-2), dpkg (>= 1.15.4) | install-info, debconf (>= 0.5) | debconf-2.0, sysv-rc (>= 2.88dsf-24) | file-rc (>= 0.8.16)
+Pre-Depends: libblkid1 (>= 2.20.1), libc6 (>= 2.15), libncurses5 (>= 5.5-5~), libselinux1 (>= 1.32), libslang2 (>= 2.2.4), libtinfo5, libuuid1 (>= 2.16), zlib1g (>= 1:1.1.4)
+Suggests: util-linux-locales, kbd | console-tools, dosfstools
+Conflicts: console-tools (<< 1:0.2.3-21), fdisk, fstrim, kbd (<< 1.05-3), linux32, schedutils, setterm
+Conffiles:
+ /etc/cron.weekly/fstrim 4de5cd1aac392609593296f0d81e7595
+ /etc/init/hwclock.conf 132aa3db7e5a8cf55168e4866052208a
+ /etc/init/hwclock-save.conf 4a002046525e338fc23e4418602865c9
+Description: Miscellaneous system utilities
+ This package contains a number of important utilities, most of which
+ are oriented towards maintenance of your system. Some of the more
+ important utilities included in this package allow you to partition
+ your hard disk, view kernel messages, and create new filesystems.
+Homepage: http://userweb.kernel.org/~kzak/util-linux/
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: cpio
+Status: install ok installed
+Priority: important
+Section: utils
+Installed-Size: 312
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 2.11+dfsg-2ubuntu1
+Replaces: cpio-mt
+Depends: libc6 (>= 2.17)
+Suggests: libarchive1
+Conflicts: cpio-mt, mt-st (<< 0.6)
+Description: GNU cpio -- a program to manage archives of files
+ GNU cpio is a tool for creating and extracting archives, or copying
+ files from one place to another. It handles a number of cpio formats
+ as well as reading and writing tar files.
+Homepage: http://www.gnu.org/software/cpio/
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+
diff --git a/test/integration/status-github-23-too-long-dependency-line b/test/integration/status-github-23-too-long-dependency-line
new file mode 100644
index 000000000..7378c99d9
--- /dev/null
+++ b/test/integration/status-github-23-too-long-dependency-line
@@ -0,0 +1,12 @@
+Package: network-manager-strongswan
+Status: install ok installed
+Priority: extra
+Section: net
+Installed-Size: 256
+Maintainer: Jean-Christophe Manciot <manciot.jeanchristophe@gmail.com>
+Architecture: amd64
+Version: 1.3.1-14
+Provides: network-manager-strongswan
+Depends: libart-2.0-2, libatk1.0-0, libavahi-client3, libavahi-common3, libavahi-glib1, libbonobo2-0, libbonoboui2-0, libc6, libcairo2, libcanberra0, libdatrie1, libdbus-1-3, libdbus-glib-1-2, libexpat1, libffi6, libfontconfig1, libfreetype6, libgail18, libgconf-2-4, libgcrypt20, libgdk-pixbuf2.0-0, libglib2.0-0, libglib2.0-0-dbg, libglib2.0-0-refdbg, libgmp10, libgnome-2-0, libgnomecanvas2-0, libgnome-keyring0, libgnomeui-0, libgnomevfs2-0, libgnutls30, libgpg-error0, libgraphite2-3, libgtk2.0-0, libharfbuzz0b, libhogweed4, libice6, libidn11, libltdl7, liblzma5, libnettle6, libnm-glib-vpn1, libnm-util2, libogg0, liborbit-2-0, libp11-kit0, libpango-1.0-0, libpangocairo-1.0-0, libpangoft2-1.0-0, libpcre3, libpixman-1-0, libpng12-0, libpopt0, libselinux1, libsm6, libsystemd0, libtasn1-6, libtdb1, libthai0, libuuid1, libvorbis0a, libvorbisfile3, libx11-6, libxau6, libxcb1, libxcb-render0, libxcb-shm0, libxcomposite1, libxcursor1, libxdamage1, libxdmcp6, libxext6, libxfixes3, libxi6, libxinerama1, libxml2, libxrandr2, libxrender1, zlib1g
+Description: This package provides an IKEv2 IPSec VPN plugin for strongswan
+Description-md5: 31abf1e375284c7ee36f25bf936125f1
diff --git a/test/integration/status-ubuntu-bug-614993 b/test/integration/status-ubuntu-bug-614993
new file mode 100644
index 000000000..99de51d12
--- /dev/null
+++ b/test/integration/status-ubuntu-bug-614993
@@ -0,0 +1,5894 @@
+Package: xserver-xorg-input-vmmouse
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 176
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:12.6.5-4ubuntu2
+Replaces: mdetect (<< 0.5.2.2), xserver-xorg (<< 6.8.2-35)
+Provides: xserver-xorg-input-7
+Depends: libc6 (>= 2.7), xserver-xorg-core (>= 2:1.6.99.900), xserver-xorg-input-mouse, udev
+Description: X.Org X server -- VMMouse input driver to use with VMWare
+ This package provides the driver for the X11 vmmouse input device.
+ .
+ The VMMouse driver enables support for the special VMMouse protocol
+ that is provided by VMware virtual machines to give absolute pointer
+ positioning.
+ .
+ The vmmouse driver is capable of falling back to the standard "mouse"
+ driver if a VMware virtual machine is not detected. This allows for
+ dual-booting of an operating system from a virtual machine to real hardware
+ without having to edit xorg.conf every time.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-input-vmmouse driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libtext-wrapi18n-perl
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 68
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 0.06-7
+Depends: libtext-charwidth-perl
+Description: internationalized substitute of Text::Wrap
+ This module is a substitution for Text::Wrap, supporting
+ multibyte characters such as UTF-8, EUC-JP, and GB2312, fullwidth
+ characters such as east Asian characters, combining characters
+ such as diacritical marks and Thai, and languages which don't
+ use whitespaces between words such as Chinese and Japanese.
+ .
+ It provides wrap().
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://search.cpan.org/search?module=Text::WrapI18N
+
+Package: debconf
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 924
+Maintainer: Colin Watson <cjwatson@ubuntu.com>
+Architecture: all
+Version: 1.5.28ubuntu4
+Replaces: debconf-tiny
+Provides: debconf-2.0
+Depends: debconf-i18n | debconf-english
+Pre-Depends: perl-base (>= 5.6.1-4)
+Recommends: apt-utils (>= 0.5.1)
+Suggests: debconf-doc, debconf-utils, whiptail | dialog | gnome-utils, libterm-readline-gnu-perl, libgnome2-perl, libnet-ldap-perl, perl
+Conflicts: apt (<< 0.3.12.1), cdebconf (<< 0.96), debconf-tiny, debconf-utils (<< 1.3.22), dialog (<< 0.9b-20020814-1), menu (<= 2.1.3-1), whiptail (<< 0.51.4-11), whiptail-utf8 (<= 0.50.17-13)
+Conffiles:
+ /etc/apt/apt.conf.d/70debconf 7e9d09d5801a42b4926b736b8eeabb73
+ /etc/bash_completion.d/debconf 8fa1862734fbe54d7178aaaa419f5a11
+ /etc/debconf.conf 8c0619be413824f1fc7698cee0f23811
+Description: Debian configuration management system
+ Debconf is a configuration management system for debian packages. Packages
+ use Debconf to ask questions when they are installed.
+Original-Maintainer: Debconf Developers <debconf-devel@lists.alioth.debian.org>
+Python-Version: 2.6, 3.1
+
+Package: xserver-common
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 172
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: all
+Source: xorg-server
+Version: 2:1.7.6-2ubuntu7
+Replaces: xserver-xorg-core (<< 2:1.5.2)
+Depends: x11-common, xkb-data, x11-xkb-utils
+Recommends: xfonts-base
+Description: common files used by various X servers
+ This package provides files necessary for all X.Org based X servers.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: dash
+Status: install ok installed
+Priority: required
+Section: shells
+Installed-Size: 236
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 0.5.5.1-3ubuntu2
+Depends: debianutils (>= 2.15), dpkg (>= 1.15.0)
+Pre-Depends: libc6 (>= 2.11)
+Description: POSIX-compliant shell
+ The Debian Almquist Shell (dash) is a POSIX-compliant shell derived
+ from ash.
+ .
+ Since it executes scripts faster than bash, and has fewer library
+ dependencies (making it more robust against software or hardware
+ failures), it is used as the default system shell on Debian systems.
+Homepage: http://gondor.apana.org.au/~herbert/dash/
+Original-Maintainer: Gerrit Pape <pape@smarden.org>
+
+Package: libmpfr1ldbl
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 656
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: mpfr
+Version: 2.4.2-3ubuntu1
+Replaces: libmpfr1
+Depends: libgmp3c2 (>= 4.2.dfsg-1), libc6 (>= 2.4)
+Conflicts: libgmp3 (<< 4.1.4-3), libmpfr1
+Description: multiple precision floating-point computation
+ MPFR provides a library for multiple-precision floating-point computation
+ with correct rounding. The computation is both efficient and has a
+ well-defined semantics. It copies the good ideas from the
+ ANSI/IEEE-754 standard for double-precision floating-point arithmetic
+ (53-bit mantissa).
+ .
+ The home page is http://www.mpfr.org/.
+Homepage: http://www.mpfr.org/
+Original-Maintainer: Laurent Fousse <laurent@komite.net>
+
+Package: libxdmcp6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 80
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxdmcp
+Version: 1:1.0.3-1
+Depends: libc6 (>= 2.4)
+Description: X11 Display Manager Control Protocol library
+ This package provides the main interface to the X11 display manager control
+ protocol library, which allows for remote logins to display managers.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXdmcp
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libgl1-mesa-dri
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 37216
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: mesa
+Version: 7.7.1-1ubuntu2
+Replaces: xlibmesa-dri (<< 1:7.0.0)
+Depends: libc6 (>= 2.4), libdrm-intel1 (>= 2.4.15), libdrm-radeon1 (>= 2.4.17), libdrm2 (>= 2.3.1), libexpat1 (>= 1.95.8)
+Suggests: libglide3
+Breaks: libgl1-mesa-glx (<< 7.2), xserver-xorg-core (<< 2:1.5)
+Conflicts: xlibmesa-dri (<< 1:7.0.0)
+Description: A free implementation of the OpenGL API -- DRI modules
+ This version of Mesa provides GLX and DRI capabilities: it is capable of
+ both direct and indirect rendering. For direct rendering, it can use DRI
+ modules from the libgl1-mesa-dri package to accelerate drawing.
+ .
+ This package does not include the OpenGL library itself, only the DRI
+ modules for accelerating direct rendering.
+ .
+ For a complete description of Mesa, please look at the
+ libgl1-mesa-swx11 package.
+ .
+ The tdfx DRI module needs libglide3 to enable direct rendering.
+Homepage: http://mesa3d.sourceforge.net/
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: coreutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 12992
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 7.4-2ubuntu2
+Replaces: mktemp
+Pre-Depends: libacl1 (>= 2.2.11-1), libattr1 (>= 2.4.41-1), libc6 (>= 2.11), libselinux1 (>= 1.32)
+Description: The GNU core utilities
+ This package contains the essential basic system utilities.
+ .
+ Specifically, this package includes:
+ basename cat chgrp chmod chown chroot cksum comm cp csplit cut date dd df dir
+ dircolors dirname du echo env expand expr factor false fmt fold groups head
+ hostid id install join link ln logname ls md5sum mkdir mkfifo mknod mktemp
+ mv nice nl nohup od paste pathchk pinky pr printenv printf ptx pwd readlink
+ rm rmdir sha1sum seq shred sleep sort split stat stty sum sync tac tail tee
+ test touch tr true tsort tty uname unexpand uniq unlink users vdir wc who
+ whoami yes
+Original-Maintainer: Michael Stone <mstone@debian.org>
+
+Package: libfreetype6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 796
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: freetype
+Version: 2.3.11-1ubuntu2
+Depends: libc6 (>= 2.4), zlib1g (>= 1:1.1.4)
+Conflicts: freetype, xpdf-reader (<< 1.00-4)
+Description: FreeType 2 font engine, shared library files
+ The FreeType project is a team of volunteers who develop free,
+ portable and high-quality software solutions for digital typography.
+ They specifically target embedded systems and focus on bringing small,
+ efficient and ubiquitous products.
+ .
+ The FreeType 2 library is their new software font engine. It has been
+ designed to provide the following important features:
+ * A universal and simple API to manage font files
+ * Support for several font formats through loadable modules
+ * High-quality anti-aliasing
+ * High portability & performance
+ .
+ Supported font formats include:
+ * TrueType files (.ttf) and collections (.ttc)
+ * Type 1 font files both in ASCII (.pfa) or binary (.pfb) format
+ * Type 1 Multiple Master fonts. The FreeType 2 API also provides
+ routines to manage design instances easily
+ * Type 1 CID-keyed fonts
+ * OpenType/CFF (.otf) fonts
+ * CFF/Type 2 fonts
+ * Adobe CEF fonts (.cef), used to embed fonts in SVG documents with
+ the Adobe SVG viewer plugin.
+ * Windows FNT/FON bitmap fonts
+ .
+ This package contains the files needed to run programs that use the
+ FreeType 2 library.
+ .
+ Home Page: http://www.freetype.org/
+ Authors: David Turner <david.turner@freetype.org>
+ Robert Wilhelm <robert.wilhelm@freetype.org>
+ Werner Lemberg <werner.lemberg@freetype.org>
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: debianutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 228
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 3.2.2
+Depends: sensible-utils
+Pre-Depends: libc6 (>= 2.7)
+Description: Miscellaneous utilities specific to Debian
+ This package provides a number of small utilities which are used
+ primarily by the installation scripts of Debian packages, although
+ you may use them directly.
+ .
+ The specific utilities included are: installkernel run-parts
+ savelog tempfile which.
+Original-Maintainer: Clint Adams <schizo@debian.org>
+
+Package: libxmuu1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 72
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxmu
+Version: 2:1.0.5-1
+Depends: libc6 (>= 2.4), libx11-6
+Description: X11 miscellaneous micro-utility library
+ libXmuu provides a set of miscellaneous utility convenience functions for X
+ libraries to use. It is a lighter version of libXmu that does not depend
+ on libXt or libXext; for more information on libXmu, see libxmu6.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXmu
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: initramfs-tools
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 432
+Maintainer: Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>
+Architecture: all
+Version: 0.92bubuntu78
+Provides: linux-initramfs-tool
+Depends: initramfs-tools-bin (= 0.92bubuntu78), klibc-utils (>= 1.5.9-1), busybox-initramfs (>= 1:1.13.3-1ubuntu5), cpio, module-init-tools, udev (>= 147~-5), findutils (>= 4.2.24), util-linux (>> 2.15~rc1)
+Breaks: mountall (<< 2.0~)
+Conflicts: usplash (<< 0.5.50)
+Conffiles:
+ /etc/initramfs-tools/initramfs.conf eec5dbb69cee0bc2894cbd36b36bb821
+ /etc/initramfs-tools/update-initramfs.conf 25099e2e0961298b2772355149f9810d
+Description: tools for generating an initramfs
+ This package contains tools to create and boot an initramfs for packaged 2.6
+ Linux kernel. The initramfs is a gzipped cpio archive. At boot time, the
+ kernel unpacks that archive into RAM, mounts and uses it as initial root file
+ system. The mounting of the real root file system occurs in early user space.
+ klibc provides utilities to setup root. Having the root on EVMS, MD, LVM2,
+ LUKS or NFS is also supported.
+ Any boot loader with initrd support is able to load an initramfs archive.
+Original-Maintainer: Debian kernel team <debian-kernel@lists.debian.org>
+
+Package: makedev
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 144
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 2.3.1-89ubuntu1
+Depends: base-passwd (>= 3.0.4)
+Conflicts: udev (<= 0.024-7)
+Description: creates device files in /dev
+ The MAKEDEV executable is used to create device files, often in /dev.
+ .
+ Device files are special files through which applications can interact
+ with hardware.
+ .
+ This package is not necessary for most modern Linux systems, where the udev
+ subsystem provides a more dynamic mechanism for device file management.
+Original-Maintainer: Bdale Garbee <bdale@gag.com>
+
+Package: x11-xkb-utils
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 524
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 7.5+1
+Replaces: setxkbmap, xbase-clients (<= 1:7.2.ds2-3), xkbcomp, xkbevd, xkbprint, xkbutils
+Depends: libc6 (>= 2.7), libx11-6, libxaw7, libxkbfile1, libxmu6, libxt6, cpp
+Pre-Depends: x11-common (>= 1:7.0.0)
+Conflicts: setxkbmap, xkbcomp, xkbevd, xkbprint, xkbutils
+Description: X11 XKB utilities
+ xkbutils contains a number of client-side utilities for XKB, the X11
+ keyboard extension.
+ .
+ setxkbmap is a tool to query and change the current XKB map.
+ .
+ xkbbell generates a bell event through the keyboard.
+ .
+ xkbcomp is a tool to compile XKB definitions into map files the server
+ can use.
+ .
+ xkbevd is an experimental tool to listen for certain XKB events and execute
+ defined triggers when actions occur.
+ .
+ xkbprint is a tool to generate an image with the physical representation
+ of the keyboard as XKB sees it.
+ .
+ xkbvleds shows the changing status of keyboard LEDs.
+ .
+ xkbwatch shows the changing status of modifiers and LEDs.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: login
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 2384
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: shadow
+Version: 1:4.1.4.2-1ubuntu2
+Replaces: manpages-de (<< 0.5-3), manpages-tr (<< 1.0.5), manpages-zh (<< 1.5.1-1)
+Pre-Depends: libc6 (>= 2.7), libpam0g (>= 0.99.7.1), libpam-runtime, libpam-modules
+Conflicts: amavisd-new (<< 2.3.3-8), backupninja (<< 0.9.3-5), echolot (<< 2.1.8-4), gnunet (<< 0.7.0c-2), python-4suite (<< 0.99cvs20060405-1)
+Conffiles:
+ /etc/pam.d/login 837d7e3c52c5570b4e48d751cae9f8b0
+ /etc/pam.d/su 7309fb874571fe5447321b43448a50b3
+ /etc/login.defs 182bb938192636c8b62e3d4349de6f72
+ /etc/securetty 0ae2cda1645723f062be3abaf4331747
+Description: system login tools
+ These tools are required to be able to login and use your system. The
+ login program invokes your user shell and enables command execution. The
+ newgrp program is used to change your effective group ID (useful for
+ workgroup type situations). The su program allows changing your effective
+ user ID (useful being able to execute commands as another user).
+Homepage: http://pkg-shadow.alioth.debian.org/
+Original-Maintainer: Shadow package maintainers <pkg-shadow-devel@lists.alioth.debian.org>
+
+Package: gpgv
+Status: install ok installed
+Priority: important
+Section: utils
+Installed-Size: 444
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gnupg
+Version: 1.4.10-2ubuntu1
+Depends: libbz2-1.0, libc6 (>= 2.4), libreadline6, zlib1g (>= 1:1.1.4)
+Suggests: gnupg
+Description: GNU privacy guard - signature verification tool
+ GnuPG is GNU's tool for secure communication and data storage.
+ .
+ gpgv is a stripped-down version of gnupg which is only able to check
+ signatures. It is smaller than the full-blown gnupg and uses a
+ different (and simpler) way to check that the public keys used to
+ make the signature are trustworthy.
+Homepage: http://www.gnupg.org
+Original-Maintainer: Debian GnuPG-Maintainers <pkg-gnupg-maint@lists.alioth.debian.org>
+
+Package: libgmp3c2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 668
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gmp
+Version: 2:4.3.2+dfsg-1ubuntu1
+Replaces: libgmp3
+Depends: libc6 (>= 2.7)
+Conflicts: libgmp2 (<< 2.0.2-10), libgmp3
+Description: Multiprecision arithmetic library
+ GNU MP is a programmer's library for arbitrary precision
+ arithmetic (ie, a bignum package). It can operate on signed
+ integer, rational, and floating point numeric types.
+ .
+ It has a rich set of functions, and the functions have a regular
+ interface.
+Homepage: http://gmplib.org/
+Original-Maintainer: Debian Scientific Computing Team <pkg-scicomp-devel@lists.alioth.debian.org>
+
+Package: libdbus-1-3
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 348
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: dbus
+Version: 1.2.16-2ubuntu4
+Depends: libc6 (>= 2.4)
+Recommends: dbus
+Conflicts: dbus (<< 0.60)
+Description: simple interprocess messaging system
+ D-Bus is a message bus, used for sending messages between applications.
+ Conceptually, it fits somewhere in between raw sockets and CORBA in
+ terms of complexity.
+ .
+ D-Bus supports broadcast messages, asynchronous messages (thus
+ decreasing latency), authentication, and more. It is designed to be
+ low-overhead; messages are sent using a binary protocol, not using
+ XML. D-Bus also supports a method call mapping for its messages, but
+ it is not required; this makes using the system quite simple.
+ .
+ It comes with several bindings, including GLib, Python, Qt and Java.
+ .
+ The daemon can be found in the dbus package.
+Homepage: http://dbus.freedesktop.org/
+Original-Maintainer: Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>
+
+Package: module-init-tools
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 376
+Maintainer: Scott James Remnant <scott@ubuntu.com>
+Architecture: amd64
+Version: 3.11.1-2ubuntu1
+Depends: libc6 (>= 2.8), upstart-job
+Breaks: initramfs-tools (<< 0.92bubuntu23)
+Conffiles:
+ /etc/depmod.d/ubuntu.conf 7c8439ef36b12e5f226b5dbfa20b8c2d
+ /etc/modprobe.d/blacklist-ath_pci.conf d1da9bb08c2b0f56f3be93fd0e37946b
+ /etc/modprobe.d/blacklist-firewire.conf cb8a4c10a5dddd1d67092198b1ae415f
+ /etc/modprobe.d/blacklist-framebuffer.conf b46c9509180b5a76145f08be46b1aff5
+ /etc/modprobe.d/blacklist-watchdog.conf 55327f9270c8a6257a833c4d127a39e1
+ /etc/modprobe.d/blacklist.conf bc6754fa320733c6d239a4bb0148ffd7
+ /etc/init/module-init-tools.conf 48db1b767c3148fd83eba59d12fc9a5e
+Description: tools for managing Linux kernel modules
+ This package contains a set of programs for loading, inserting, and
+ removing kernel modules for Linux (versions 2.5.48 and above).
+
+Package: libgdbm3
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 128
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gdbm
+Version: 1.8.3-9
+Depends: libc6 (>= 2.2.5), dpkg (>= 1.15.4) | install-info
+Description: GNU dbm database routines (runtime version)
+ GNU dbm ('gdbm') is a library of database functions that use extendible
+ hashing and works similarly to the standard UNIX 'dbm' functions.
+ .
+ The basic use of 'gdbm' is to store key/data pairs in a data file, thus
+ providing a persistent version of the 'dictionary' Abstract Data Type
+ ('hash' to perl programmers).
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://directory.fsf.org/project/gdbm/
+
+Package: xserver-xorg-video-v4l
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 136
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:0.2.0-4
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-v4l
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-v4l
+Description: X.Org X server -- Video 4 Linux display driver
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ uses the Video For Linux interface. It does not provide a graphics chip
+ driver, but instead registers a number of generic Xv adaptors which can be
+ used with any graphics chipset driver.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-v4l driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libgcrypt11
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 560
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.4.4-5ubuntu2
+Depends: libc6 (>= 2.4), libgpg-error0 (>= 1.6)
+Suggests: rng-tools
+Description: LGPL Crypto library - runtime library
+ libgcrypt contains cryptographic functions. Many important free
+ ciphers, hash algorithms and public key signing algorithms have been
+ implemented:
+ arcfour, blowfish, cast5, DSA, DSA2, des, 3DES, elgamal, MD5, rijndael,
+ RMD160, RSA, SEED, SHA1, SHA-384, SHA-512, twofish, tiger.
+Homepage: http://directory.fsf.org/project/libgcrypt/
+Original-Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint@lists.alioth.debian.org>
+
+Package: xserver-xorg-video-sis
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 664
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:0.10.2-2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-sis
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.7), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-sis
+Description: X.Org X server -- SiS display driver
+ This package provides the driver for all SiS and XGI Volari cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-sis driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libxinerama1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 68
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxinerama
+Version: 2:1.1-2
+Depends: libc6 (>= 2.2.5), libx11-6, libxext6
+Description: X11 Xinerama extension library
+ libXinerama provides an X Window System client interface to the XINERAMA
+ extension to the X protocol.
+ .
+ The Xinerama (also known as panoramiX) extension allows for multiple screens
+ attached to a single display to be treated as belonging together, and to give
+ desktop applications a better idea of the monitor layout.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXinerama
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: lzma
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 172
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 4.43-14ubuntu2
+Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.4.0)
+Description: Compression method of 7z format in 7-Zip program
+ LZMA is a compression algorithm, based on the famous Lempel Ziv
+ compression method.
+ .
+ The main characteristics of the algorithm are very good compression,
+ fast decompression, use of lot of RAM for compression and low usage of
+ RAM for decompression.
+ .
+ LZMA provides high compression ratio and very fast decompression, so it
+ is very suitable for embedded applications. For example, it can be used
+ for ROM (firmware) compression.
+ .
+ This package provides a gzip-like interface for the lzma program.
+Homepage: http://www.7-zip.org/sdk.htm
+Original-Maintainer: Mohammed Adnène Trojette <adn+deb@diwi.org>
+
+Package: libuuid1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 120
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: util-linux
+Version: 2.17.2-0ubuntu1
+Replaces: e2fsprogs (<< 1.34-1)
+Depends: passwd, libc6 (>= 2.4)
+Recommends: uuid-runtime
+Description: Universally Unique ID library
+ The libuuid library generates and parses 128-bit universally unique
+ ids (UUIDs). A UUID is an identifier that is unique across both
+ space and time, with respect to the space of all UUIDs. A UUID can
+ be used for multiple purposes, from tagging objects with an extremely
+ short lifetime, to reliably identifying very persistent objects
+ across a network.
+ .
+ See RFC 4122 for more information.
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: libtasn1-3
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 144
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 2.4-1
+Depends: libc6 (>= 2.4)
+Conflicts: libtasn1-2 (= 0.3.1-1)
+Description: Manage ASN.1 structures (runtime)
+ Manage ASN1 (Abstract Syntax Notation One) structures.
+ The main features of this library are:
+ * on-line ASN1 structure management that doesn't require any C code
+ file generation.
+ * off-line ASN1 structure management with C code file generation
+ containing an array.
+ * DER (Distinguish Encoding Rules) encoding
+ * no limits for INTEGER and ENUMERATED values
+ .
+ This package contains runtime libraries.
+Original-Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint@lists.alioth.debian.org>
+Homepage: http://www.gnu.org/software/libtasn1/
+
+Package: lsb-base
+Status: install ok installed
+Priority: required
+Section: misc
+Installed-Size: 84
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: lsb
+Version: 4.0-0ubuntu8
+Replaces: lsb (<< 2.0-6), lsb-core (<< 2.0-6)
+Depends: sed, ncurses-bin
+Conflicts: lsb (<< 2.0-6), lsb-core (<< 2.0-6)
+Conffiles:
+ /etc/lsb-base-logging.sh 5126106e3af09b522cdbd5e4685942af
+Description: Linux Standard Base 4.0 init script functionality
+ The Linux Standard Base (http://www.linuxbase.org/) is a standard
+ core system that third-party applications written for Linux can
+ depend upon.
+ .
+ This package only includes the init-functions shell library, which
+ may be used by other packages' initialization scripts for console
+ logging and other purposes.
+Homepage: http://www.linux-foundation.org/en/LSB
+Original-Maintainer: Chris Lawrence <lawrencc@debian.org>
+
+Package: libcurl3-gnutls
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 440
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: curl
+Version: 7.19.7-1ubuntu1
+Replaces: libcurl4-gnutls
+Depends: libc6 (>= 2.7), libgcrypt11 (>= 1.4.2), libgnutls26 (>= 2.7.14-0), libgssapi-krb5-2 (>= 1.7dfsg~beta1), libidn11 (>= 1.13), libldap-2.4-2 (>= 2.4.7), zlib1g (>= 1:1.1.4), ca-certificates
+Conflicts: libcurl4-gnutls
+Description: Multi-protocol file transfer library (GnuTLS)
+ libcurl is designed to be a solid, usable, reliable and portable
+ multi-protocol file transfer library.
+ .
+ SSL support is provided by GnuTLS.
+ .
+ This is the shared version of libcurl.
+Homepage: http://curl.haxx.se
+Original-Maintainer: Domenico Andreoli <cavok@debian.org>
+
+Package: cpp-4.4
+Status: install ok installed
+Priority: optional
+Section: interpreters
+Installed-Size: 9828
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gcc-4.4
+Version: 4.4.3-4ubuntu5
+Depends: gcc-4.4-base (= 4.4.3-4ubuntu5), libc6 (>= 2.11), libgmp3c2, libmpfr1ldbl
+Suggests: gcc-4.4-locales (>= 4.4.3-1)
+Description: The GNU C preprocessor
+ A macro processor that is used automatically by the GNU C compiler
+ to transform programs before actual compilation.
+ .
+ This package has been separated from gcc for the benefit of those who
+ require the preprocessor but not the compiler.
+Homepage: http://gcc.gnu.org/
+Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+
+Package: procps
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 808
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:3.2.8-1ubuntu4
+Replaces: bsdutils (<< 2.9x-1), watch
+Provides: watch
+Depends: libc6 (>= 2.4), libncurses5 (>= 5.6+20071006-3), upstart-job, lsb-base (>= 3.0-10)
+Recommends: psmisc
+Conflicts: libproc-dev (<< 1:1.2.6-2), pgrep (<< 3.3-5), procps-nonfree, w-bassman (<< 1.0-3), watch
+Conffiles:
+ /etc/sysctl.d/10-console-messages.conf 154f6f5c5810d10bb303fb6a8e907c6a
+ /etc/sysctl.d/10-network-security.conf 4ac7258f5336e7eeaf448c05ab668d3c
+ /etc/sysctl.d/10-zeropage.conf 8d7193abcc4dfedaf519dd03016a5e59
+ /etc/sysctl.d/README c20074b9b11a5202758c69d7bcb6996f
+ /etc/sysctl.conf 86b831bbed0a49bc7361ed64d6c09435
+ /etc/init/procps.conf 72d5354efb1017283c440cf102b5d74a
+Description: /proc file system utilities
+ These are utilities to browse the /proc filesystem, which is not a real file
+ system but a way for the kernel to provide information about the status of
+ entries in its process table. (e.g. running, stopped or "zombie")
+ Both command line and full screen utilities are provided. Ncurses is needed
+ for the full screen utilities. More information can be found at procps
+ website http://procps.sf.net/
+ .
+ This package includes the following utilities: top, uptime, tload,
+ free, vmstat, watch, skill, pmap, pgrep, slabtop and pwdx.
+Original-Maintainer: Craig Small <csmall@debian.org>
+
+Package: libgssapi-krb5-2
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 312
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: krb5
+Version: 1.8.1+dfsg-2
+Replaces: libkrb53 (<< 1.6.dfsg.4~beta1-7)
+Depends: libc6 (>= 2.7), libcomerr2 (>= 1.34), libk5crypto3 (>= 1.8+dfsg), libkeyutils1, libkrb5-3 (= 1.8.1+dfsg-2), libkrb5support0 (>= 1.7dfsg~beta2)
+Suggests: krb5-doc, krb5-user
+Description: MIT Kerberos runtime libraries - krb5 GSS-API Mechanism
+ Kerberos is a system for authenticating users and services on a network.
+ Kerberos is a trusted third-party service. That means that there is a
+ third party (the Kerberos server) that is trusted by all the entities on
+ the network (users and services, usually called "principals").
+ .
+ This is the MIT reference implementation of Kerberos V5.
+ .
+ This package contains the runtime library for the MIT Kerberos
+ implementation of GSS-API used by applications and Kerberos clients.
+Original-Maintainer: Sam Hartman <hartmans@debian.org>
+Homepage: http://web.mit.edu/kerberos/
+
+Package: python-minimal
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: python
+Installed-Size: 120
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: python-defaults
+Version: 2.6.5-0ubuntu1
+Replaces: python (<= 2.4-1)
+Depends: python2.6-minimal (>= 2.6.5), dpkg (>= 1.13.20)
+Recommends: python
+Conflicts: python (<= 2.4-1), python-central (<< 0.5.5)
+Description: A minimal subset of the Python language (default version)
+ This package contains the interpreter and some essential modules. It's used
+ in the boot process for some basic tasks.
+ See /usr/share/doc/python2.6-minimal/README.Debian for a list of the modules
+ contained in this package.
+Original-Maintainer: Matthias Klose <doko@debian.org>
+
+Package: ncurses-base
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 488
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: ncurses
+Version: 5.7+20090803-2ubuntu3
+Replaces: ncurses-term
+Provides: ncurses-runtime
+Depends: libncurses5
+Conflicts: ncurses, ncurses-runtime
+Conffiles:
+ /etc/terminfo/README 9d086188afcd9479ae96ff55dd6c1573
+Description: basic terminal type definitions
+ This package contains terminfo data files to support the most common types of
+ terminal, including ansi, dumb, linux, rxvt, screen, sun, vt100, vt102, vt220,
+ vt52, and xterm.
+Homepage: ftp://invisible-island.net/ncurses/
+Original-Maintainer: Debian QA Group <packages@qa.debian.org>
+
+Package: libpam0g
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 272
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: pam
+Version: 1.1.1-2ubuntu2
+Replaces: libpam0g-util
+Depends: libc6 (>= 2.8), debconf (>= 0.5) | debconf-2.0
+Suggests: libpam-doc
+Description: Pluggable Authentication Modules library
+ Contains the C shared library for Linux-PAM, a suite of shared
+ libraries that enable the local system administrator to choose how
+ applications authenticate users. In other words, without rewriting
+ or recompiling a PAM-aware application, it is possible to switch
+ between the authentication mechanism(s) it uses. One may entirely
+ upgrade the local authentication system without touching the
+ applications themselves.
+Homepage: http://pam.sourceforge.net/
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: libusb-0.1-4
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 100
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libusb
+Version: 2:0.1.12-14
+Replaces: libusb0
+Depends: libc6 (>= 2.4)
+Conflicts: libccid (<< 0.9.2-3), libusb0
+Description: userspace USB programming library
+ Library for programming USB applications without the knowledge
+ of Linux kernel internals.
+Original-Maintainer: Aurelien Jarno <aurel32@debian.org>
+Homepage: http://www.linux-usb.org/
+
+Package: libgpg-error0
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 236
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libgpg-error
+Version: 1.6-1ubuntu2
+Depends: libc6 (>= 2.2.5)
+Description: library for common error values and messages in GnuPG components
+ Library that defines common error values for all GnuPG
+ components. Among these are GPG, GPGSM, GPGME, GPG-Agent, libgcrypt,
+ pinentry, SmartCard Daemon and possibly more in the future.
+Original-Maintainer: Jose Carlos Garcia Sogo <jsogo@debian.org>
+
+Package: ucf
+Status: install ok installed
+Priority: standard
+Section: utils
+Installed-Size: 260
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 3.0025
+Depends: debconf (>= 1.5.19), coreutils (>= 5.91)
+Conffiles:
+ /etc/ucf.conf 5565b8b26108c49ba575ba452cd69b3e
+Description: Update Configuration File: preserve user changes to config files.
+ Debian policy mandates that user changes to configuration files must be
+ preserved during package upgrades. The easy way to achieve this behavior
+ is to make the configuration file a 'conffile', in which case dpkg
+ handles the file specially during upgrades, prompting the user as
+ needed.
+ .
+ This is appropriate only if it is possible to distribute a default
+ version that will work for most installations, although some system
+ administrators may choose to modify it. This implies that the
+ default version will be part of the package distribution, and must
+ not be modified by the maintainer scripts during installation (or at
+ any other time).
+ .
+ This script attempts to provide conffile-like handling for files that
+ may not be labelled conffiles, and are not shipped in a Debian package,
+ but handled by the postinst instead. This script allows one to
+ maintain files in /etc, preserving user changes and in general
+ offering the same facilities while upgrading that dpkg normally
+ provides for 'conffiles'.
+ .
+ Additionally, this script provides facilities for transitioning a
+ file that had not been provided with conffile-like protection to come
+ under this schema, and attempts to minimize questions asked at
+ installation time. Indeed, the transitioning facility is better than the
+ one offered by dpkg while transitioning a file from a non-conffile to
+ conffile status.
+Original-Maintainer: Manoj Srivastava <srivasta@debian.org>
+
+Package: perl-modules
+Status: deinstall ok config-files
+Priority: standard
+Section: perl
+Installed-Size: 15848
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: perl
+Version: 5.10.1-8ubuntu2
+Config-Version: 5.10.1-8ubuntu2
+Replaces: libansicolor-perl, libarchive-tar-perl, libattribute-handlers-perl, libautodie-perl, libcgi-pm-perl, libcpanplus-perl, libextutils-cbuilder-perl, libextutils-parsexs-perl, libfile-temp-perl, libi18n-langtags-perl, libio-zlib-perl, liblocale-codes-perl, liblocale-maketext-perl, liblocale-maketext-simple-perl, libmath-bigint-perl, libmodule-build-perl, libmodule-corelist-perl, libmodule-load-conditional-perl, libmodule-load-perl, libmodule-pluggable-perl, libnet-perl, libnet-ping-perl, libparams-check-perl, libparent-perl, libparse-cpan-meta-perl, libpod-escapes-perl, libpod-parser-perl, libpod-simple-perl, libtest-harness-perl, libtest-simple-perl, libthread-queue-perl, libversion-perl, podlators-perl
+Provides: libansicolor-perl, libarchive-tar-perl, libattribute-handlers-perl, libautodie-perl, libcgi-pm-perl, libcpanplus-perl, libextutils-cbuilder-perl, libextutils-parsexs-perl, libfile-temp-perl, libi18n-langtags-perl, libio-zlib-perl, liblocale-codes-perl, liblocale-maketext-perl, liblocale-maketext-simple-perl, libmath-bigint-perl, libmodule-build-perl, libmodule-corelist-perl, libmodule-load-conditional-perl, libmodule-load-perl, libmodule-pluggable-perl, libnet-perl, libnet-ping-perl, libparams-check-perl, libparent-perl, libparse-cpan-meta-perl, libpod-escapes-perl, libpod-parser-perl, libpod-simple-perl, libtest-harness-perl, libtest-simple-perl, libthread-queue-perl, libversion-perl, podlators-perl
+Depends: perl (>= 5.10.1-1)
+Conflicts: libansicolor-perl (<< 1.10-1), libarchive-tar-perl (<< 1.52), libattribute-handlers-perl (<< 0.85), libautodie-perl (<< 2.06.01), libcgi-pm-perl (<< 3.43), libcpanplus-perl (<< 0.88), libextutils-cbuilder-perl (<< 0.2602), libextutils-parsexs-perl (<< 2.2002), libfile-temp-perl (<< 0.22), libi18n-langtags-perl (<< 0.35-1), libio-zlib-perl (<< 1.09), liblocale-codes-perl (<< 2.07), liblocale-maketext-perl (<< 1.13), liblocale-maketext-simple-perl (<< 0.18-1), libmath-bigint-perl (<< 1.89), libmodule-build-perl (<< 0.340201), libmodule-corelist-perl (<< 2.18), libmodule-load-conditional-perl (<< 0.30), libmodule-load-perl (<< 0.16), libmodule-pluggable-perl (<< 3.9), libnet-perl (<= 1:1.19-3), libnet-ping-perl (<< 2.36), libparams-check-perl (<< 0.26-1), libparent-perl (<< 0.221), libparse-cpan-meta-perl (<< 1.39), libpod-escapes-perl (<< 1.04), libpod-parser-perl (<< 1.37), libpod-simple-perl (<< 3.07), libtest-harness-perl (<< 3.17), libtest-simple-perl (<< 0.92), libthread-queue-perl (<< 2.11), libversion-perl (<< 1:0.7700), podlators-perl (<= 2.2.2-1)
+Conffiles:
+ /etc/perl/Net/libnet.cfg fb2946cae573b8ed3d654a180d458733
+Description: Core Perl modules
+ Architecture independent Perl modules. These modules are part of Perl and
+ required if the `perl' package is installed.
+Original-Maintainer: Niko Tyni <ntyni@debian.org>
+
+Package: bsdutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 208
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: util-linux (2.17.2-0ubuntu1)
+Version: 1:2.17.2-0ubuntu1
+Depends: libc6 (>= 2.7)
+Recommends: bsdmainutils
+Description: Basic utilities from 4.4BSD-Lite
+ This package contains the bare minimum number of BSD utilities needed
+ to boot a Debian system: logger, renice, script, scriptreplay, and wall.
+ The remaining standard BSD utilities are provided by bsdmainutils.
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: xserver-xorg-video-apm
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 216
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.2.2-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-apm
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-apm
+Description: X.Org X server -- APM display driver
+ This package provides the driver for the Alliance Pro Motion family
+ of video cards; specifically, the 6420, 6422, AT24, AT25, and AT3D
+ cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-apm driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: sensible-utils
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 108
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 0.0.1ubuntu3
+Replaces: debianutils (<= 2.32.3)
+Description: Utilities for sensible alternative selection
+ This package provides a number of small utilities which are used
+ by programs to sensibly select and spawn an appropriate browser,
+ editor, or pager.
+ .
+ The specific utilities included are: select-editor sensible-browser
+ sensible-editor sensible-pager
+Original-Maintainer: Clint Adams <schizo@debian.org>
+
+Package: xserver-xorg-video-voodoo
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 108
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.2.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-voodoo
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-voodoo
+Description: X.Org X server -- Voodoo display driver
+ This package provides the driver for 3dfx Voodoo1 and Voodoo2 chipsets.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-voodoo driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libxkbfile1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 204
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxkbfile
+Version: 1:1.0.6-1
+Depends: libc6 (>= 2.7), libx11-6
+Description: X11 keyboard file manipulation library
+ libxkbfile provides an interface to read and manipulate description files for
+ XKB, the X11 keyboard configuration extension.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libxkbfile
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: dpkg-dev
+Status: deinstall ok config-files
+Priority: optional
+Section: utils
+Installed-Size: 2068
+Origin: debian
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Bugs: debbugs://bugs.debian.org
+Architecture: all
+Source: dpkg
+Version: 1.15.5.6ubuntu4
+Config-Version: 1.15.5.6ubuntu4
+Replaces: manpages-pl (<= 20051117-1)
+Depends: dpkg (>= 1.15.4), perl5, perl-modules, bzip2, lzma, xz-utils, patch (>= 2.2-1), make, binutils, libtimedate-perl, base-files (>= 5.0.0)
+Recommends: gcc | c-compiler, build-essential, fakeroot, gnupg, gpgv
+Suggests: debian-keyring, debian-maintainers
+Conflicts: devscripts (<< 2.10.26), dpkg-cross (<< 2.0.0)
+Conffiles:
+ /etc/dpkg/shlibs.default 1a2b9d0a869e2aa885ae3621c557fb95
+ /etc/dpkg/shlibs.override 84b1e69080569cc5c613a50887af5200
+Description: Debian package development tools
+ This package provides the development tools (including dpkg-source)
+ required to unpack, build and upload Debian source packages.
+ .
+ Most Debian source packages will require additional tools to build;
+ for example, most packages need make and the C compiler gcc.
+Homepage: http://wiki.debian.org/Teams/Dpkg
+Original-Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
+
+Package: xserver-xorg-video-s3virge
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 160
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.10.4-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-s3virge
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-s3virge
+Description: X.Org X server -- S3 ViRGE display driver
+ This package provides the driver for the S3 ViRGE and Trio3D family
+ of chipsets. It does not support Trio64 or S3 96x cards; support for
+ these can be found in the xserver-xorg-video-s3 package. Support for
+ S3 Savage chipsets can be found in xserver-xorg-video-savage.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-s3virge driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libssl0.9.8
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 2332
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: openssl
+Version: 0.9.8k-7ubuntu8
+Depends: libc6 (>= 2.7), zlib1g (>= 1:1.1.4), debconf (>= 0.5) | debconf-2.0
+Conflicts: libssl, libssl096-dev (<< 0.9.6-2), openssl (<< 0.9.6-2), ssleay (<< 0.9.2b)
+Description: SSL shared libraries
+ libssl and libcrypto shared libraries needed by programs like
+ apache-ssl, telnet-ssl and openssh.
+ .
+ It is part of the OpenSSL implementation of SSL.
+Original-Maintainer: Debian OpenSSL Team <pkg-openssl-devel@lists.alioth.debian.org>
+
+Package: bzip2
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 160
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.0.5-4
+Replaces: libbz2 (<< 0.9.5d-3)
+Depends: libbz2-1.0 (= 1.0.5-4), libc6 (>= 2.4)
+Suggests: bzip2-doc
+Description: high-quality block-sorting file compressor - utilities
+ bzip2 is a freely available, patent free, high-quality data compressor.
+ It typically compresses files to within 10% to 15% of the best available
+ techniques, whilst being around twice as fast at compression and six
+ times faster at decompression.
+ .
+ bzip2 compresses files using the Burrows-Wheeler block-sorting text
+ compression algorithm, and Huffman coding. Compression is generally
+ considerably better than that achieved by more conventional
+ LZ77/LZ78-based compressors, and approaches the performance of the PPM
+ family of statistical compressors.
+ .
+ The archive file format of bzip2 (.bz2) is incompatible with that of its
+ predecessor, bzip (.bz).
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://www.bzip.org/
+
+Package: vim-common
+Status: install ok installed
+Priority: important
+Section: editors
+Installed-Size: 380
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: vim
+Version: 2:7.2.330-1ubuntu3
+Depends: libc6 (>= 2.4)
+Recommends: vim | vim-gnome | vim-gtk | vim-lesstif | vim-nox | vim-tiny
+Conffiles:
+ /etc/vim/vimrc e8793640eb83ade46e2d452bcf62e7e3
+Description: Vi IMproved - Common files
+ Vim is an almost compatible version of the UNIX editor Vi.
+ .
+ Many new features have been added: multi level undo, syntax
+ highlighting, command line history, on-line help, filename
+ completion, block operations, folding, Unicode support, etc.
+ .
+ This package contains files shared by all non GUI-enabled vim
+ variants (vim and vim-tiny currently) available in Debian.
+ Examples of such shared files are: manpages, common executables
+ like xxd, and configuration files.
+Homepage: http://www.vim.org/
+Original-Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
+
+Package: openssl
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 844
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 0.9.8k-7ubuntu8
+Depends: libc6 (>= 2.7), libssl0.9.8 (>= 0.9.8k-1), zlib1g (>= 1:1.1.4)
+Suggests: ca-certificates, openssl-doc
+Conflicts: ssleay (<< 0.9.2b)
+Conffiles:
+ /etc/ssl/openssl.cnf 0b1cf9a835b829131d630b7c2fe55f3c
+Description: Secure Socket Layer (SSL) binary and related cryptographic tools
+ This package contains the openssl binary and related tools.
+ .
+ It is part of the OpenSSL implementation of SSL.
+ .
+ You need it to perform certain cryptographic actions like:
+ - Creation of RSA, DH and DSA key parameters;
+ - Creation of X.509 certificates, CSRs and CRLs;
+ - Calculation of message digests;
+ - Encryption and decryption with ciphers;
+ - SSL/TLS client and server tests;
+ - Handling of S/MIME signed or encrypted mail.
+Original-Maintainer: Debian OpenSSL Team <pkg-openssl-devel@lists.alioth.debian.org>
+
+Package: ncurses-bin
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 520
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: ncurses
+Version: 5.7+20090803-2ubuntu3
+Provides: tput
+Pre-Depends: libc6 (>= 2.4), libncurses5 (>= 5.6+20071006-3)
+Conflicts: ncurses, tput
+Description: terminal-related programs and man pages
+ This package contains the programs used for manipulating the terminfo
+ database and individual terminfo entries, as well as some programs for
+ resetting terminals and such.
+Homepage: ftp://invisible-island.net/ncurses/
+Original-Maintainer: Debian QA Group <packages@qa.debian.org>
+
+Package: perl-base
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 4900
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: perl
+Version: 5.10.1-8ubuntu2
+Replaces: libperl5.8 (<< 5.8.0-20), libscalar-list-utils-perl, libxsloader-perl, perl (<= 5.10.0-9), perl-modules (<< 5.10.1-1)
+Provides: libscalar-list-utils-perl, libxsloader-perl, perl5-base, perlapi-5.10.0, perlapi-5.10.1
+Pre-Depends: libc6 (>= 2.11), dpkg (>= 1.14.20)
+Suggests: perl
+Breaks: doc-base (<< 0.8.16)
+Conflicts: autoconf2.13 (<< 2.13-45), libscalar-list-utils-perl (<< 1:1.18-1), libxsloader-perl (<< 0.08-1), safe-rm (<< 0.8)
+Description: minimal Perl system
+ Perl is a scripting language used in many system scripts and utilities.
+ .
+ This package provides a Perl interpreter and the small subset of the
+ standard run-time library required to perform basic tasks. For a full
+ Perl installation, install "perl" (and its dependencies, "perl-modules"
+ and "perl-doc").
+Original-Maintainer: Niko Tyni <ntyni@debian.org>
+
+Package: sysv-rc
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 288
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: sysvinit
+Version: 2.87dsf-4ubuntu17
+Replaces: file-rc
+Depends: debconf | debconf-2.0, sysvinit-utils (>= 2.86.ds1-62), insserv (>> 1.12.0-10)
+Recommends: lsb-base (>= 3.2-14)
+Suggests: sysv-rc-conf, bum
+Breaks: initscripts (<< 2.86.ds1-63)
+Conflicts: file-rc
+Description: System-V-like runlevel change mechanism
+ This package provides support for the System-V like system
+ for booting, shutting down and changing runlevels,
+ configured through symbolic links in /etc/rc?.d/.
+Homepage: http://freshmeat.net/projects/sysvinit/
+Original-Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
+
+Package: apt
+Status: install ok installed
+Priority: important
+Section: admin
+Installed-Size: 5488
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 0.7.25.3ubuntu7
+Replaces: libapt-pkg-dev (<< 0.3.7), libapt-pkg-doc (<< 0.3.7)
+Provides: libapt-pkg-libc6.10-6-4.8
+Depends: libc6 (>= 2.8), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.4.0)
+Recommends: ubuntu-keyring
+Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt
+Conffiles:
+ /etc/apt/apt.conf.d/01autoremove 6154750d39a78704b5bbf6fafd65ada7
+ /etc/apt/apt.conf.d/01ubuntu 078b96538a377743bee0f554eb5b2fc6
+ /etc/logrotate.d/apt 179f2ed4f85cbaca12fa3d69c2a4a1c3
+ /etc/cron.daily/apt 3528ddf873535d4c268d83e73e85dc79
+Description: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+ .
+ APT features complete installation ordering, multiple source capability
+ and several other unique features, see the Users Guide in apt-doc.
+Original-Maintainer: APT Development Team <deity@lists.debian.org>
+
+Package: xserver-xorg-core
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 4872
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: xorg-server
+Version: 2:1.7.6-2ubuntu7
+Replaces: xserver-common (<< 7), xserver-xfree86 (<< 1:7.0.0), xserver-xorg (<< 6.8.2-38)
+Provides: xserver
+Depends: xserver-common (>= 2:1.7.6-2ubuntu7), xserver-xorg, udev (>= 149), libc6 (>= 2.7), libdrm2 (>= 2.3.1), libgcrypt11 (>= 1.4.2), libpciaccess0 (>= 0.10.7), libpixman-1-0 (>= 0.15.16), libudev0 (>= 147), libxau6, libxdmcp6, libxfont1 (>= 1:1.2.9)
+Recommends: libgl1-mesa-dri (>= 7.1~rc1)
+Suggests: xfonts-100dpi | xfonts-75dpi, xfonts-scalable
+Conflicts: xserver-common (<< 7), xserver-xfree86 (<< 1:7.0.0), xserver-xorg (<< 6.8.2-38), xserver-xorg-input, xserver-xorg-input-2, xserver-xorg-input-2.1, xserver-xorg-input-4, xserver-xorg-input-wacom (<< 0.7.8), xserver-xorg-video, xserver-xorg-video-1.0, xserver-xorg-video-1.9, xserver-xorg-video-2, xserver-xorg-video-4, xserver-xorg-video-5
+Description: Xorg X server - core server
+ The Xorg X server is an X server for several architectures and operating
+ systems, which is derived from the XFree86 4.x series of X servers.
+ .
+ The Xorg server supports most modern graphics hardware from most vendors,
+ and supersedes all XFree86 X servers.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xserver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libk5crypto3
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 252
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: krb5
+Version: 1.8.1+dfsg-2
+Replaces: libkrb53 (<< 1.6.dfsg.4~beta1-7)
+Depends: libc6 (>= 2.4), libkeyutils1, libkrb5support0 (>= 1.7dfsg~beta2)
+Suggests: krb5-doc, krb5-user
+Breaks: libgssapi-krb5-2 (<= 1.8~aa), libkrb5-3 (<= 1.8~aa)
+Description: MIT Kerberos runtime libraries - Crypto Library
+ Kerberos is a system for authenticating users and services on a network.
+ Kerberos is a trusted third-party service. That means that there is a
+ third party (the Kerberos server) that is trusted by all the entities on
+ the network (users and services, usually called "principals").
+ .
+ This is the MIT reference implementation of Kerberos V5.
+ .
+ This package contains the runtime cryptography libraries used by
+ applications and Kerberos clients.
+Original-Maintainer: Sam Hartman <hartmans@debian.org>
+Homepage: http://web.mit.edu/kerberos/
+
+Package: netbase
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 100
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 4.35ubuntu3
+Depends: lsb-base (>= 3.0-6), upstart-job
+Recommends: ifupdown
+Conflicts: inetutils-inetd (<< 2:1.4.3+20060719-3), openbsd-inetd (<< 0.20050402-3)
+Conffiles:
+ /etc/protocols 3aaa310b088fa84233d7fb2e358d4d29
+ /etc/rpc f0b6f6352bf886623adc04183120f83b
+ /etc/services b6a26fbe90d859f7c8600d5941262921
+ /etc/init.d/networking db7e515f04f04f54708b5ea862585c31
+Description: Basic TCP/IP networking system
+ This package provides the necessary infrastructure for basic TCP/IP based
+ networking.
+Original-Maintainer: Marco d'Itri <md@linux.it>
+
+Package: libdrm2
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 480
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: libdrm
+Version: 2.4.18-1ubuntu3
+Depends: libc6 (>= 2.7)
+Description: Userspace interface to kernel DRM services -- runtime
+ This library implements the userspace interface to the kernel DRM
+ services. DRM stands for "Direct Rendering Manager", which is the
+ kernelspace portion of the "Direct Rendering Infrastructure" (DRI).
+ The DRI is currently used on Linux to provide hardware-accelerated
+ OpenGL drivers.
+ .
+ This package provides the runtime environment for libdrm.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-video-openchrome
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 588
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:0.2.904+svn827-1
+Replaces: libchromexvmc1, libchromexvmcpro1
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), libdrm2 (>= 2.3.1), libx11-6 (>= 0), libxext6 (>= 0), libxv1, libxvmc1, xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: libchromexvmc1, libchromexvmcpro1
+Description: X.Org X server -- VIA display driver
+ OpenChrome is a project for the development of free and open-source drivers
+ for the VIA UniChrome video chipsets.
+ .
+ Originally called the 'snapshot' release, since it was a snapshot of an
+ experimental branch of the unichrome cvs code, this is a continued development
+ of the open source unichrome driver (from http://unichrome.sf.net) which
+ also incorporates support for the unichrome-pro chipsets.
+ .
+ Support for hardware acceleration (XvMC) for all chipsets has subsequently
+ been ripped out of the unichrome.sf.net driver. Therefore your only option if
+ you wish to make use of the acceleration features of your VIA chip with free
+ and open-source drivers is to use this version of the driver.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Homepage: http://www.openchrome.org
+
+Package: libxapian15
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 1644
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: xapian-core
+Version: 1.0.18-1
+Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.4.0), zlib1g (>= 1:1.1.4)
+Suggests: xapian-tools
+Conflicts: libxapian2
+Description: Search engine library
+ This package contains the core Xapian runtime library.
+ .
+ The Xapian search engine library is a highly adaptable toolkit which allows
+ developers to easily add advanced indexing and search facilities to their own
+ applications. It implements the probabilistic model of information retrieval,
+ and provides facilities for performing ranked free-text searches, relevance
+ feedback, phrase searching, boolean searching, stemming, and simultaneous
+ update and searching. It is highly scalable, and is capable of working with
+ collections containing hundreds of millions of documents.
+Original-Maintainer: Olly Betts <olly@survex.com>
+Homepage: http://xapian.org/
+
+Package: libsepol1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 328
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libsepol
+Version: 2.0.40-2
+Depends: libc6 (>= 2.4)
+Description: SELinux library for manipulating binary security policies
+ Security-enhanced Linux is a patch of the Linux kernel and a number
+ of utilities with enhanced security functionality designed to add
+ mandatory access controls to Linux. The Security-enhanced Linux
+ kernel contains new architectural components originally developed to
+ improve the security of the Flask operating system. These
+ architectural components provide general support for the enforcement
+ of many kinds of mandatory access control policies, including those
+ based on the concepts of Type Enforcement®, Role-based Access
+ Control, and Multi-level Security.
+ .
+ libsepol provides an API for the manipulation of SELinux binary policies.
+ It is used by checkpolicy (the policy compiler) and similar tools, as well
+ as by programs like load_policy that need to perform specific transformations
+ on binary policies such as customizing policy boolean settings.
+Original-Maintainer: Manoj Srivastava <srivasta@debian.org>
+
+Package: libpam-modules
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 1196
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: pam
+Version: 1.1.1-2ubuntu2
+Replaces: libpam-umask, libpam0g-util
+Provides: libpam-mkhomedir, libpam-motd, libpam-umask
+Depends: base-files (>= 5.0.0ubuntu6)
+Pre-Depends: libc6 (>= 2.8), libdb4.8, libpam0g (>= 1.1.0), libselinux1 (>= 2.0.85), debconf (>= 0.5) | debconf-2.0
+Conflicts: libpam-mkhomedir, libpam-motd, libpam-umask
+Conffiles:
+ /etc/security/access.conf 13ec4d189f0ed9acf3433977a53d446b
+ /etc/security/group.conf 5a6bd21801df034da8d64b407470e8f6
+ /etc/security/limits.conf cbacdff4aa5f51749f191b32754946cb
+ /etc/security/namespace.conf c600fa5899cfb3198a01dfba2bf281f3
+ /etc/security/namespace.init 114e73ed5f40956527286e6213d305bc
+ /etc/security/pam_env.conf ed3f430e418ad366ddb23307a8755249
+ /etc/security/sepermit.conf d41c74654734a5c069a37bfc02f0a6d4
+ /etc/security/time.conf c23fcbb29dda6c1499e6a5e5ade0265e
+Description: Pluggable Authentication Modules for PAM
+ This package completes the set of modules for PAM. It includes the
+ pam_unix_*.so module as well as some specialty modules.
+Homepage: http://pam.sourceforge.net/
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: xserver-xorg-video-vmware
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 140
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:10.16.9-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-vmware
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-vmware
+Description: X.Org X server -- VMware display driver
+ This package provides the driver for VMware client sessions, i.e. if Linux
+ is running inside a VMware session.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-vmware driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: tzdata
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 6276
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 2010i-1
+Replaces: libc0.1, libc0.3, libc6, libc6.1
+Provides: tzdata-squeeze
+Depends: debconf (>= 0.5) | debconf-2.0
+Description: time zone and daylight-saving time data
+ This package contains data required for the implementation of
+ standard local time for many representative locations around the
+ globe. It is updated periodically to reflect changes made by
+ political bodies to time zone boundaries, UTC offsets, and
+ daylight-saving rules.
+Original-Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+
+Package: libudev0
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 196
+Maintainer: Scott James Remnant <scott@ubuntu.com>
+Architecture: amd64
+Source: udev
+Version: 151-12
+Depends: libc6 (>= 2.4)
+Description: udev library
+ libudev provides a set of functions for accessing the udev database
+ and querying sysfs.
+
+Package: libfontconfig1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 444
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: fontconfig
+Version: 2.8.0-2ubuntu1
+Provides: libfontconfig
+Depends: libc6 (>= 2.7), libexpat1 (>= 1.95.8), libfreetype6 (>= 2.2.1), zlib1g (>= 1:1.1.4), fontconfig-config (= 2.8.0-2ubuntu1)
+Description: generic font configuration library - runtime
+ Fontconfig is a font configuration and customization library, which
+ does not depend on the X Window System. It is designed to locate
+ fonts within the system and select them according to requirements
+ specified by applications.
+ .
+ This package contains the runtime library needed to launch applications
+ using fontconfig.
+Original-Maintainer: Keith Packard <keithp@debian.org>
+
+Package: xserver-xorg-input-wacom
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 264
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: xf86-input-wacom
+Version: 1:0.10.5-0ubuntu4
+Replaces: wacom-tools (<= 1:0.8.4.1-0ubuntu4)
+Provides: xserver-xorg-input-7
+Depends: xserver-xorg-core (>= 2:1.6.99.900), libc6 (>= 2.7), libx11-6 (>= 0), libxi6 (>= 2:1.2.0)
+Suggests: xinput
+Conflicts: wacom-tools (<= 1:0.8.4.1-0ubuntu4)
+Description: X.Org X server -- Wacom input driver
+ This package provides the X.Org driver for Wacom tablet devices.
+Homepage: http://linuxwacom.sf.net
+Original-Maintainer: Ron Lee <ron@debian.org>
+
+Package: ifupdown
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 276
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 0.6.8ubuntu29
+Replaces: netbase (<< 4.00)
+Depends: net-tools, libc6 (>= 2.7), debconf (>= 1.2.0) | debconf-2.0, upstart-job, lsb-base (>= 1.3-9ubuntu3), netbase (>= 4.30ubuntu2)
+Suggests: iproute, dhcp3-client | dhcp-client, ppp
+Breaks: udev (<< 136-1)
+Description: high level tools to configure network interfaces
+ This package provides the tools ifup and ifdown which may be used to
+ configure (or, respectively, deconfigure) network interfaces based on
+ interface definitions in the file /etc/network/interfaces.
+Original-Maintainer: Anthony Towns <ajt@debian.org>
+
+Package: libxxf86dga1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 84
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxxf86dga
+Version: 2:1.1.1-2
+Depends: libc6 (>= 2.3.4), libx11-6, libxext6, x11-common
+Description: X11 Direct Graphics Access extension library
+ libXxf86dga provides the XFree86-DGA extension, which allows direct
+ graphics access to a framebuffer-like region, and also allows relative
+ mouse reporting, et al. It is mainly used by games and emulators for
+ games.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXxf86dga
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libxext6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 148
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxext
+Version: 2:1.1.1-2
+Depends: libc6 (>= 2.4), libx11-6
+Description: X11 miscellaneous extension library
+ libXext provides an X Window System client interface to several extensions to
+ the X protocol.
+ .
+ The supported protocol extensions are:
+ - DOUBLE-BUFFER (DBE), the Double Buffer extension;
+ - DPMS, the VESA Display Power Management System extension;
+ - Extended-Visual-Information (EVI), an extension for gathering extra
+ information about the X server's visuals;
+ - LBX, the Low Bandwidth X extension;
+ - MIT-SHM, the MIT X client/server shared memory extension;
+ - MIT-SUNDRY-NONSTANDARD, a miscellaneous extension by MIT;
+ - Multi-Buffering, the multi-buffering and stereo display extension;
+ - SECURITY, the X security extension;
+ - SHAPE, the non-rectangular shaped window extension;
+ - SYNC, the X synchronization extension;
+ - TOG-CUP, the Open Group's Colormap Utilization extension;
+ - XC-APPGROUP, the X Consortium's Application Group extension;
+ - XC-MISC, the X Consortium's resource ID querying extension;
+ - XTEST, the X test extension (this is one of two client-side
+ implementations; the other is in the libXtst library, provided by the
+ libxtst6 package);
+ .
+ libXext also provides a small set of utility functions to aid authors of
+ client APIs for X protocol extensions.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXext
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xterm
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 1332
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Version: 256-1ubuntu1
+Provides: x-terminal-emulator
+Depends: xbitmaps, libc6 (>= 2.11), libfontconfig1 (>= 2.8.0), libice6 (>= 1:1.0.0), libncurses5 (>= 5.6+20071006-3), libx11-6 (>= 0), libxaw7, libxft2 (>> 2.1.1), libxmu6, libxt6
+Recommends: x11-utils | xutils
+Suggests: xfonts-cyrillic
+Conffiles:
+ /etc/X11/app-defaults/KOI8RXTerm e904665737663827da6ff9b9651910df
+ /etc/X11/app-defaults/KOI8RXTerm-color d2d26270262950b81921694506281cfe
+ /etc/X11/app-defaults/UXTerm 420d7404a359b3b74a24d415d1a53254
+ /etc/X11/app-defaults/UXTerm-color 446ecb44b3bec790d5c7ac8582ef6ca5
+ /etc/X11/app-defaults/XTerm b13fe7ad4bb906659bfc22db2513bacb
+ /etc/X11/app-defaults/XTerm-color 0ceac6d8b2f3e33be29edddb64394d96
+Description: X terminal emulator
+ xterm is a terminal emulator for the X Window System. It provides DEC VT102
+ and Tektronix 4014 compatible terminals for programs that cannot use the
+ window system directly. This version implements ISO/ANSI colors and most of
+ the control sequences used by DEC VT220 terminals.
+ .
+ This package provides four commands: xterm, which is the traditional
+ terminal emulator; uxterm, which is a wrapper around xterm that is
+ intelligent about locale settings (especially those which use the UTF-8
+ character encoding), but which requires the luit program from the x11-utils
+ package; koi8rxterm, a wrapper similar to uxterm for locales that use the
+ KOI8-R character set; and lxterm, a simple wrapper that chooses which of the
+ previous commands to execute based on the user's locale settings.
+ .
+ A complete list of control sequences supported by the X terminal emulator
+ is provided in /usr/share/doc/xterm.
+ .
+ The xterm program uses bitmap images provided by the xbitmaps package.
+ .
+ Those interested in using koi8rxterm will likely want to install the
+ xfonts-cyrillic package as well.
+Homepage: http://invisible-island.net/xterm/xterm.html
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-video-radeon
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 1564
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: xserver-xorg-video-ati
+Version: 1:6.13.0-1ubuntu5
+Replaces: xserver-xorg-video-ati (<= 1:6.8.191-1)
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.7), libdrm-radeon1 (>= 2.4.17), libdrm2 (>= 2.4.16), libpciaccess0 (>= 0.10.2), libpixman-1-0, xserver-xorg-core (>= 2:1.6.99.900)
+Suggests: firmware-linux
+Description: X.Org X server -- AMD/ATI Radeon display driver
+ This package provides the 'radeon' driver for the AMD/ATI Radeon, FireGL,
+ FireMV, FirePro and FireStream series.
+ .
+ Note that this is not the same as the ATI-provided, binary-only, 'fglrx'
+ driver, which provides additional 3D functionality for some newer Radeon
+ cards, but is not supported.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-ati driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: x11-session-utils
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 304
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 7.5+1
+Replaces: smproxy, xbase-clients (<= 1:7.2.ds2-3), xsm (<= 1:1.0.1-1), xutils (<= 1:7.1.ds.3-1)
+Depends: libc6 (>= 2.7), libice6 (>= 1:1.0.0), libsm6, libx11-6, libxaw7, libxmu6, libxt6, cpp
+Pre-Depends: x11-common (>= 1:7.0.0)
+Conflicts: smproxy, xsm (<= 1:1.0.1-1)
+Conffiles:
+ /etc/X11/app-defaults/XSm 34f161c4cba12ff40099e12b40e511d3
+Description: X session utilities
+ This package provides the X session manager and related tools:
+ - rstart;
+ - smproxy, a session manager proxy for X clients that do not use the X
+ session manager protocol;
+ - xsm, a session manager for X sessions;
+ Installation of an rsh or ssh daemon (server) is necessary if rstartd is
+ to be used, and installation of an rsh or ssh client is necessary if
+ rstart is to be used.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libxrender1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 96
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxrender
+Version: 1:0.9.5-1
+Depends: libc6 (>= 2.2.5), libx11-6
+Description: X Rendering Extension client library
+ The X Rendering Extension (Render) introduces digital image composition as
+ the foundation of a new rendering model within the X Window System.
+ Rendering geometric figures is accomplished by client-side tessellation into
+ either triangles or trapezoids. Text is drawn by loading glyphs into the
+ server and rendering sets of them. The Xrender library exposes this
+ extension to X clients.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXrender
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: mountall
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 232
+Maintainer: Scott James Remnant <scott@ubuntu.com>
+Architecture: amd64
+Version: 2.14
+Replaces: upstart (<< 0.6.3-2)
+Depends: makedev, udev, plymouth, coreutils (>= 7.1), libc6 (>= 2.9), libdbus-1-3 (>= 1.2.16), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0), libplymouth2 (>= 0.8.1-3), libudev0 (>= 151-5)
+Breaks: policycoreutils (<< 2.0.69-2ubuntu4), usplash (<< 0.5.47)
+Conffiles:
+ /etc/init/mountall.conf fba4525691d30c5b18cc3409f990c5be
+ /etc/init/mountall-net.conf feff70cd7006f6763e24263d381940f3
+ /etc/init/mountall-reboot.conf 43e3c229085a13005b0681a49b2bef51
+ /etc/init/mountall-shell.conf aa05af89db3de044d1cd7f6971b46d9f
+ /etc/init/mounted-dev.conf 0c983df7da8b456ea38068e39f2f2a1e
+ /etc/init/mounted-varrun.conf f1908b81facd9a0e78319327e6a9db0a
+ /etc/init/mounted-tmp.conf b049fee4d7c235355555a004befe4633
+Description: filesystem mounting tool
+ mountall mounts filesystems when the underlying block devices are
+ ready, or when network interfaces come up, checking the filesystems
+ first.
+
+Package: xserver-xorg-video-savage
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 240
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:2.3.1-1ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-savage
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.3.4), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-savage
+Description: X.Org X server -- Savage display driver
+ This package provides the driver for the S3/VIA Savage/ProSavage/Twister family
+ of chipsets.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-savage driver module.
+Orig-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-video-fbdev
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 100
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:0.4.1-1ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-fbdev
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-fbdev
+Description: X.Org X server -- fbdev display driver
+ This package provides the driver for the Linux framebuffer device (aka
+ 'fbdev').
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-fbdev driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libxfont1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 336
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxfont
+Version: 1:1.4.1-1
+Depends: libbz2-1.0, libc6 (>= 2.4), libfontenc1, libfreetype6 (>= 2.2.1), zlib1g (>= 1:1.1.4)
+Conflicts: xprint (<< 2:1.6.0-1)
+Description: X11 font rasterisation library
+ libXfont provides various services for X servers, most notably font
+ selection and rasterisation (through external libraries).
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXfont
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: diffutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 776
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:2.8.1-18
+Replaces: diff
+Pre-Depends: libc6 (>= 2.4)
+Suggests: diffutils-doc
+Description: File comparison utilities
+ The diffutils package provides the diff, diff3, sdiff, and cmp programs.
+ .
+ `diff' shows differences between two files, or each corresponding file
+ in two directories. `cmp' shows the offsets and line numbers where
+ two files differ. `cmp' can also show all the characters that
+ differ between the two files, side by side. `diff3' shows differences
+ among three files. `sdiff' merges two files interactively.
+ .
+ The set of differences produced by `diff' can be used to distribute
+ updates to text files (such as program source code) to other people.
+ This method is especially useful when the differences are small compared
+ to the complete files. Given `diff' output, the `patch' program can
+ update, or "patch", a copy of the file.
+Original-Maintainer: Santiago Vila <sanvila@debian.org>
+
+Package: libxvmc1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 100
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxvmc
+Version: 2:1.0.5-1ubuntu1
+Depends: libc6 (>= 2.4), libx11-6, libxext6, libxv1, x11-common
+Description: X11 Video extension library
+ libXvMC provides an X Window System client interface to the
+ XVideo-MotionCompensation extension to the X protocol.
+ .
+ The XVideo-MotionCompensation extension allows for further accelerated drawing
+ of videos. Video data may be sent at earlier stages of the decoding pipeline
+ than raw YUV data. At the moment, driver support for XvMC is poor to
+ non-existent.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXvMC
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-input-evdev
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 180
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:2.3.2-5ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35)
+Provides: xserver-xorg-input-7
+Depends: libc6 (>= 2.7), xserver-xorg-core (>= 2:1.6.99.900)
+Description: X.Org X server -- evdev input driver
+ This package provides the driver for input devices using evdev, the Linux
+ kernel's event delivery mechanism. This driver allows for multiple keyboards
+ and mice to be treated as separate input devices.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-input-evdev driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libxpm4
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 128
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxpm
+Version: 1:3.5.8-1
+Depends: libc6 (>= 2.7), libx11-6
+Description: X11 pixmap library
+ libXpm provides support and common operation for the XPM pixmap format, which
+ is commonly used in legacy X applications. XPM is an extension of the
+ monochrome XBM bitmap specificied in the X protocol.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXpm
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: tar
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 2464
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.22-2
+Replaces: cpio (<< 2.4.2-39)
+Pre-Depends: libc6 (>= 2.7)
+Suggests: bzip2, ncompress
+Conflicts: cpio (<= 2.4.2-38)
+Conffiles:
+ /etc/rmt 3c58b7cd13da1085eff0acc6a00f43c7
+Description: GNU version of the tar archiving utility
+ Tar is a program for packaging a set of files as a single archive in tar
+ format. The function it performs is conceptually similar to cpio, and to
+ things like PKZIP in the DOS world. It is heavily used by the Debian package
+ management system, and is useful for performing system backups and exchanging
+ sets of files with others.
+Original-Maintainer: Bdale Garbee <bdale@gag.com>
+
+Package: gcc-4.4
+Status: install ok installed
+Priority: optional
+Section: devel
+Installed-Size: 4692
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 4.4.3-4ubuntu5
+Provides: c-compiler
+Depends: gcc-4.4-base (= 4.4.3-4ubuntu5), cpp-4.4 (= 4.4.3-4ubuntu5), binutils (>= 2.20), libgcc1 (>= 1:4.4.3-4ubuntu5), libgomp1 (>= 4.4.3-4ubuntu5), libc6 (>= 2.11)
+Recommends: libc6-dev (>= 2.5)
+Suggests: gcc-4.4-multilib, libmudflap0-4.4-dev (>= 4.4.3-4ubuntu5), gcc-4.4-doc (>= 4.4.3-1), gcc-4.4-locales (>= 4.4.3-1), libgcc1-dbg, libgomp1-dbg, libmudflap0-dbg, libcloog-ppl0, libppl-c2, libppl7
+Description: The GNU C compiler
+ This is the GNU C compiler, a fairly portable optimizing compiler for C.
+Homepage: http://gcc.gnu.org/
+Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+
+Package: libdrm-radeon1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 452
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: libdrm
+Version: 2.4.18-1ubuntu3
+Depends: libc6 (>= 2.3.4), libdrm2 (>= 2.4.3)
+Description: Userspace interface to radeon-specific kernel DRM services -- runtime
+ This library implements the userspace interface to the radeon-specific kernel
+ DRM services. DRM stands for "Direct Rendering Manager", which is the
+ kernelspace portion of the "Direct Rendering Infrastructure" (DRI). The DRI is
+ currently used on Linux to provide hardware-accelerated OpenGL drivers.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: zlib1g
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 176
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: zlib
+Version: 1:1.2.3.3.dfsg-15ubuntu1
+Provides: libz1
+Depends: libc6 (>= 2.4)
+Conflicts: zlib1 (<= 1:1.0.4-7)
+Description: compression library - runtime
+ zlib is a library implementing the deflate compression method found
+ in gzip and PKZIP. This package includes the shared library.
+Original-Maintainer: Mark Brown <broonie@debian.org>
+
+Package: xserver-xorg
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 180
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: xorg
+Version: 1:7.5+5ubuntu1
+Replaces: x11-common (<< 1:7.3+11), xserver-common (<< 7)
+Depends: xserver-xorg-core (>= 2:1.7), xserver-xorg-video-all | xserver-xorg-video-6, xserver-xorg-input-all | xserver-xorg-input-7, xserver-xorg-input-evdev, libc6 (>= 2.7), xkb-data (>= 1.4), x11-xkb-utils, console-setup
+Recommends: libgl1-mesa-dri
+Conflicts: x11-common (<< 1:7.3+11), xserver-common (<< 7), xserver-xfree86 (<< 6.8.2.dfsg.1-1)
+Description: the X.Org X server
+ This package depends on the full suite of the server and drivers for the
+ X.Org X server. It does not provide the actual server itself.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libxrandr2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 100
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxrandr
+Version: 2:1.3.0-3
+Depends: libc6 (>= 2.2.5), libx11-6 (>= 0), libxext6 (>= 0), libxrender1
+Description: X11 RandR extension library
+ libXrandr provides an X Window System client interface to the RandR
+ extension to the X protocol.
+ .
+ The RandR extension allows for run-time configuration of display attributes
+ such as resolution, rotation, and reflection.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXrandr
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libglu1-mesa
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 548
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: mesa
+Version: 7.7.1-1ubuntu2
+Replaces: libglu1
+Provides: libglu1
+Depends: libc6 (>= 2.11), libgcc1 (>= 1:4.1.1), libgl1-mesa-glx | libgl1, libstdc++6 (>= 4.1.1)
+Conflicts: libglu1, mesag3 (<< 5.0.0-1), xlibmesa3
+Description: The OpenGL utility library (GLU)
+ GLU offers simple interfaces for building mipmaps; checking for the
+ presence of extensions in the OpenGL (or other libraries which follow
+ the same conventions for advertising extensions); drawing
+ piecewise-linear curves, NURBS, quadrics and other primitives
+ (including, but not limited to, teapots); tesselating surfaces; setting
+ up projection matrices and unprojecting screen coordinates to world
+ coordinates.
+ .
+ On Linux, this library is also known as libGLU or libGLU.so.1.
+ .
+ This package provides the SGI implementation of GLU shipped with the
+ Mesa package (ergo the "-mesa" suffix).
+Homepage: http://mesa3d.sourceforge.net/
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: adduser
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 884
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 3.112ubuntu1
+Replaces: manpages-it (<< 0.3.4-2), manpages-pl (<= 20051117-1)
+Depends: perl-base (>= 5.6.0), passwd (>= 1:4.0.12), debconf | debconf-2.0
+Suggests: liblocale-gettext-perl, perl-modules, ecryptfs-utils (>= 67-1)
+Conffiles:
+ /etc/deluser.conf 527e6a57d0bc9f7c1b1aca2071f3da00
+Description: add and remove users and groups
+ This package includes the 'adduser' and 'deluser' commands for creating
+ and removing users.
+ .
+ - 'adduser' creates new users and groups and adds existing users to
+ existing groups;
+ - 'deluser' removes users and groups and removes users from a given
+ group.
+ .
+ Adding users with 'adduser' is much easier than adding them manually.
+ Adduser will choose appropriate UID and GID values, create a home
+ directory, copy skeletal user configuration, and automate setting
+ initial values for the user's password, real name and so on.
+ .
+ Deluser can back up and remove users' home directories
+ and mail spool or all the files they own on the system.
+ .
+ A custom script can be executed after each of the commands.
+ .
+ Development mailing list:
+ http://lists.alioth.debian.org/mailman/listinfo/adduser-devel/
+Homepage: http://alioth.debian.org/projects/adduser/
+Original-Maintainer: Debian Adduser Developers <adduser-devel@lists.alioth.debian.org>
+
+Package: libxcb1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 180
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxcb
+Version: 1.5-2
+Depends: libc6 (>= 2.4), libxau6, libxdmcp6
+Breaks: libxcb-xlib0
+Description: X C Binding
+ This package contains the library files needed to run software using libxcb,
+ the X C Binding.
+ .
+ The XCB library provides an interface to the X Window System protocol,
+ designed to replace the Xlib interface. XCB provides several advantages over
+ Xlib:
+ .
+ * Size: small library and lower memory footprint
+ * Latency hiding: batch several requests and wait for the replies later
+ * Direct protocol access: one-to-one mapping between interface and protocol
+ * Thread support: access XCB from multiple threads, with no explicit locking
+ * Easy creation of new extensions: automatically generates interface from
+ machine-parsable protocol descriptions
+Original-Maintainer: XCB Developers <xcb@lists.freedesktop.org>
+Homepage: http://xcb.freedesktop.org
+
+Package: xserver-xorg-video-all
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 24
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: xorg
+Version: 1:7.5+5ubuntu1
+Replaces: xserver-xorg-driver-all
+Depends: xserver-xorg-video-apm, xserver-xorg-video-ark, xserver-xorg-video-ati, xserver-xorg-video-chips, xserver-xorg-video-cirrus, xserver-xorg-video-fbdev, xserver-xorg-video-i128, xserver-xorg-video-intel, xserver-xorg-video-mga, xserver-xorg-video-neomagic, xserver-xorg-video-nouveau, xserver-xorg-video-nv, xserver-xorg-video-rendition, xserver-xorg-video-s3, xserver-xorg-video-s3virge, xserver-xorg-video-savage, xserver-xorg-video-siliconmotion, xserver-xorg-video-sis, xserver-xorg-video-sisusb, xserver-xorg-video-tdfx, xserver-xorg-video-trident, xserver-xorg-video-tseng, xserver-xorg-video-vesa, xserver-xorg-video-openchrome, xserver-xorg-video-voodoo, xserver-xorg-video-v4l, xserver-xorg-video-vmware, x11-common
+Conflicts: xserver-xorg-driver-all
+Description: the X.Org X server -- output driver metapackage
+ This package depends on the full suite of output drivers for the X.Org X server
+ (Xorg). It does not provide any drivers itself, and may be removed if you wish
+ to only have certain drivers installed.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: locales
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 21820
+Maintainer: Martin Pitt <martin.pitt@ubuntu.com>
+Architecture: all
+Source: langpack-locales
+Version: 2.11+git20100304-3
+Replaces: base-config, belocs-locale-data, belocs-locales-bin, libc6 (<< 2.3.6-0ubuntu6), libc6.1 (<< 2.3.6-0ubuntu6)
+Depends: libc6 (>= 2.9-0ubuntu10) | libc6.1 (>= 2.9-0ubuntu10)
+Conflicts: base-config, belocs-locale-data
+Conffiles:
+ /etc/locale.alias 6ac3cbee43012440edc6bcbade0a61ce
+Description: common files for locale support
+ This package provides support for localized environments (locales).
+ It installs character and transliteration maps, provides the POSIX
+ locale definition and provides common scripts for language pack
+ handling.
+ .
+ The actual locale definitions are not part of this package, these are
+ shipped in the language packs and are installed and removed
+ automatically.
+
+Package: manpages
+Status: install ok installed
+Priority: important
+Section: doc
+Installed-Size: 1104
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 3.23-1
+Replaces: bind, rsh-server (<< 0.10-7)
+Suggests: man-browser
+Description: Manual pages about using a GNU/Linux system
+ This package contains GNU/Linux manual pages for these sections:
+ 4 = Devices (e.g. hd, sd).
+ 5 = File formats and protocols, syntaxes of several system
+ files (e.g. wtmp, /etc/passwd, nfs).
+ 7 = Conventions and standards, macro packages, etc.
+ (e.g. nroff, ascii).
+ .
+ Sections 1, 6 and 8 are provided by the respective applications. This
+ package only includes the intro man page describing the section.
+ .
+ The man pages describe syntaxes of several system files.
+Original-Maintainer: Martin Schulze <joey@debian.org>
+
+Package: libgcc1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 132
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gcc-4.4 (4.4.3-4ubuntu5)
+Version: 1:4.4.3-4ubuntu5
+Depends: gcc-4.4-base (= 4.4.3-4ubuntu5), libc6 (>= 2.2.5)
+Description: GCC support library
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+Homepage: http://gcc.gnu.org/
+Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+
+Package: libklibc
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 136
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: klibc
+Version: 1.5.17-4ubuntu1
+Description: minimal libc subset for use with initramfs
+ klibc is intended to be a minimalistic libc subset for use with
+ initramfs. It is deliberately written for small size, minimal
+ entanglement, and portability, not speed. It is definitely a work in
+ progress, and a lot of things are still missing.
+Original-Maintainer: maximilian attems <maks@debian.org>
+
+Package: libxv1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 80
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxv
+Version: 2:1.0.5-1
+Depends: libc6 (>= 2.4), libx11-6, libxext6
+Description: X11 Video extension library
+ libXv provides an X Window System client interface to the XVideo
+ extension to the X protocol.
+ .
+ The XVideo extension allows for accelerated drawing of videos. Hardware
+ adaptors are exposed to clients, which may draw in a number of colourspaces,
+ including YUV.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXv
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: base-files
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 500
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 5.0.0ubuntu20
+Replaces: base, dpkg (<= 1.15.0), lsb-release (<< 3.0-8), miscutils
+Provides: base
+Depends: base-passwd (>= 2.0.3.4), libpam-modules (>= 0.79-3ubuntu3)
+Pre-Depends: awk
+Conffiles:
+ /etc/debian_version 82711d8dc3e89c428b4694a284e32541
+ /etc/dpkg/origins/debian 731423fa8ba067262f8ef37882d1e742
+ /etc/dpkg/origins/ubuntu ea35901c45553c3451f60476be94d2d8
+ /etc/host.conf 89408008f2585c957c031716600d5a80
+ /etc/issue 0773f7fd061b03b7643118d133e4c581
+ /etc/issue.net b779759799b4ec17dd4dab41ad557f49
+ /etc/lsb-release a50b6779ddccab3277e2560028f3eb15
+Description: Debian base system miscellaneous files
+ This package contains the basic filesystem hierarchy of a Debian system, and
+ several important miscellaneous files, such as /etc/debian_version,
+ /etc/host.conf, /etc/issue, /etc/motd, /etc/profile, /etc/nsswitch.conf,
+ and others, and the text of several common licenses in use on Debian systems.
+Original-Maintainer: Santiago Vila <sanvila@debian.org>
+
+Package: mount
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 380
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: util-linux
+Version: 2.17.2-0ubuntu1
+Pre-Depends: libblkid1 (>= 2.17), libc6 (>= 2.7), libselinux1 (>= 2.0.15), libsepol1 (>= 1.14), libuuid1 (>= 2.16)
+Suggests: nfs-common (>= 1:1.1.0-13)
+Breaks: nfs-common (<< 1:1.1.0-7)
+Description: Tools for mounting and manipulating filesystems
+ This package provides the mount(8), umount(8), swapon(8),
+ swapoff(8), and losetup(8) commands.
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: libtext-iconv-perl
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 108
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.7-2
+Depends: libc6 (>= 2.2.5), perl-base (>= 5.10.0-24ubuntu4), perlapi-5.10.0
+Description: converts between character sets in Perl
+ The iconv() family of functions from XPG4 define an API for converting
+ between character sets (e.g. UTF-8 to Latin1, EBCDIC to ASCII). They
+ are provided by libc6.
+ .
+ This package allows access to them from Perl via the Text::Iconv
+ package.
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://search.cpan.org/search?module=Text::Iconv
+
+Package: console-setup
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 1396
+Maintainer: Ubuntu Installer Team <ubuntu-installer@lists.ubuntu.com>
+Architecture: all
+Version: 1.34ubuntu15
+Depends: debconf (>= 0.5) | debconf-2.0, console-terminus (>= 4.26), xkb-data (>= 0.9), initramfs-tools (>= 0.85eubuntu12), kbd (>= 1.15-1ubuntu3)
+Suggests: lsb-base (>= 3.0-6), locales
+Conflicts: lsb (<< 2.0-6), lsb-base (<< 3.0-6), lsb-core (<< 2.0-6)
+Conffiles:
+ /etc/console-setup/compose.ARMSCII-8.inc fef36b61fb8b1cacc151ad3db127f777
+ /etc/console-setup/compose.CP1251.inc fef88d8c8dd4c726498003fd3cd84a7f
+ /etc/console-setup/compose.CP1255.inc c972a2e90938657e97b643366b98b2ed
+ /etc/console-setup/compose.CP1256.inc 5ea5e4d41da7a88f742863810e86144b
+ /etc/console-setup/compose.GEORGIAN-ACADEMY.inc b6d80f40abff7e8af236796ebaca0247
+ /etc/console-setup/compose.GEORGIAN-PS.inc cf45272b6bf35a22223b132600dc36c3
+ /etc/console-setup/compose.IBM1133.inc a31102602f7e7cab9738022b6c5469ae
+ /etc/console-setup/compose.ISIRI-3342.inc 5ada7fbba750192f11fa238add232ba9
+ /etc/console-setup/compose.ISO-8859-1.inc 719a4300a50dcb168d7de921bab338e9
+ /etc/console-setup/compose.ISO-8859-10.inc e5fce59617c839b56574c9e323d34686
+ /etc/console-setup/compose.ISO-8859-11.inc ad2f3cc7ee64602a790bad8a2a989243
+ /etc/console-setup/compose.ISO-8859-13.inc 9c2f47a52091515749fefc62fc8efd63
+ /etc/console-setup/compose.ISO-8859-14.inc a19822b59629ea7af7682d9247de807f
+ /etc/console-setup/compose.ISO-8859-15.inc cfa9b04fec26afa1debc17ce09d46a0a
+ /etc/console-setup/compose.ISO-8859-16.inc 8245c19b5262d8d23ca856587739eb20
+ /etc/console-setup/compose.ISO-8859-2.inc a56cb83dbe0cd88e4deef52d966d30e4
+ /etc/console-setup/compose.ISO-8859-3.inc e70d7b634791b9c97db75bddf6dcc5fa
+ /etc/console-setup/compose.ISO-8859-4.inc 4092be9556db0ac82e96eae413f1bd47
+ /etc/console-setup/compose.ISO-8859-5.inc f861a4b0403490677e6d400f2d7129da
+ /etc/console-setup/compose.ISO-8859-6.inc 41ea36ea1c1a1c0c9bebdf0016395e1f
+ /etc/console-setup/compose.ISO-8859-7.inc aa280de25f20e82f58da707101b24d48
+ /etc/console-setup/compose.ISO-8859-8.inc 9cceaa9f3312f89aba371d3c893f4e7b
+ /etc/console-setup/compose.ISO-8859-9.inc 1893bc3994c24917c907a17ceb2f284b
+ /etc/console-setup/compose.KOI8-R.inc 8cfd7766b86e5e55d6e71d0d95519c92
+ /etc/console-setup/compose.KOI8-U.inc 217ee62f6982736276f41f760f8622f8
+ /etc/console-setup/compose.TIS-620.inc 31b73af83ef3993c128e2b983b9eaf89
+ /etc/console-setup/compose.VISCII.inc 0741db54ddb6268e476010a44f219f03
+ /etc/init/console-setup.conf 1e2fdc7b62f4d1dee3845f5fc2b13fc4
+Description: console font and keymap setup program
+ This package provides the Linux console with the same
+ keyboard configuration scheme as the X Window System. As a result,
+ there is no need to duplicate or change the keyboard files just to
+ make simple customizations such as the use of dead keys, the key
+ functioning as AltGr or Compose key, the key(s) to switch between
+ Latin and non-Latin mode, etc.
+ .
+ The package also contains console fonts supporting many of the
+ world's languages. It provides an unified set of font faces - the
+ classic VGA, the simplistic Fixed, and the cleaned Terminus,
+ TerminusBold and TerminusBoldVGA.
+Original-Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
+
+Package: xserver-xorg-input-synaptics
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 356
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.2.2-1ubuntu4
+Replaces: xfree86-driver-synaptics (<< 0.14.4-2), xorg-driver-synaptics
+Provides: xfree86-driver-synaptics, xorg-driver-synaptics, xserver-xorg-input-7
+Depends: udev, libc6 (>= 2.4), libpciaccess0, libpixman-1-0, libx11-6 (>= 0), libxi6 (>= 2:1.2.0), xserver-xorg-core (>= 2:1.6.99.900)
+Suggests: gpointing-device-settings, touchfreeze
+Conflicts: xfree86-driver-synaptics (<< 0.14.4-2), xorg-driver-synaptics
+Description: Synaptics TouchPad driver for X.Org server
+ This package provides an input driver for the X.Org X server to enable
+ advanced features of the Synaptics Touchpad including:
+ .
+ * Movement with adjustable, non-linear acceleration and speed
+ * Button events through short touching of the touchpad
+ * Double-Button events through double short touching of the touchpad
+ * Dragging through short touching and holding down the finger on the touchpad
+ * Middle and right button events on the upper and lower corner of the touchpad
+ * Vertical scrolling (button four and five events) through moving the finger
+ on the right side of the touchpad
+ * The up/down button sends button four/five events
+ * Horizontal scrolling (button six and seven events) through moving the finger
+ on the lower side of the touchpad
+ * The multi-buttons send button four/five events, and six/seven events for
+ horizontal scrolling
+ * Adjustable finger detection
+ * Multifinger taps: two finger for middle button and three finger for right
+ button events. (Needs hardware support. Not all models implement this
+ feature.)
+ * Run-time configuration using shared memory. This means you can change
+ parameter settings without restarting the X server (see synclient(1)).
+ * It also provides a daemon to disable touchpad while typing at the keyboard
+ and thus avoid unwanted mouse movements (see syndaemon(1)).
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-video-vesa
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 108
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:2.3.0-1ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-vesa
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-vesa
+Description: X.Org X server -- VESA display driver
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ uses the standard VESA interface provided on all video cards, but runs
+ unaccelerated. This driver is not recommended for use unless you have a
+ problem with the normal driver for your card, because it will peform very
+ badly.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-vesa driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libreadline6
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 408
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: readline6
+Version: 6.1-1
+Depends: readline-common, libc6 (>= 2.11~20100104-0ubuntu5), libncurses5 (>= 5.6+20071006-3)
+Description: GNU readline and history libraries, run-time libraries
+ The GNU readline library aids in the consistency of user interface
+ across discrete programs that need to provide a command line
+ interface.
+ .
+ The GNU history library provides a consistent user interface for
+ recalling lines of previously typed input.
+Original-Maintainer: Matthias Klose <doko@debian.org>
+
+Package: libncurses5
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 512
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: ncurses
+Version: 5.7+20090803-2ubuntu3
+Depends: libc6 (>= 2.4)
+Recommends: libgpm2
+Description: shared libraries for terminal handling
+ This package contains the shared libraries necessary to run programs
+ compiled with ncurses.
+Homepage: ftp://invisible-island.net/ncurses/
+Original-Maintainer: Debian QA Group <packages@qa.debian.org>
+
+Package: libplymouth2
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 312
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: plymouth
+Version: 0.8.2-2ubuntu2
+Replaces: plymouth (<< 0.7.0+git20090207-0ubuntu0.1~ppa4)
+Depends: libc6 (>= 2.8), libpng12-0 (>= 1.2.13-4)
+Breaks: casper (= 1.227), mountall (<< 2.8)
+Description: graphical boot animation and logger - shared libraries
+ Plymouth is an application that runs very early in the boot process
+ (even before the root filesystem is mounted!) that provides a graphical
+ boot animation while the boot process happens in the background.
+ .
+ This package contains the shared libraries.
+
+Package: libkeyutils1
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 60
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: keyutils
+Version: 1.2-12
+Depends: libc6 (>= 2.2.5)
+Description: Linux Key Management Utilities (library)
+ Keyutils is a set of utilities for managing the key retention facility in the
+ kernel, which can be used by filesystems, block devices and more to gain and
+ retain the authorization and encryption keys required to perform secure
+ operations.
+ .
+ This package provides a wrapper library for the key management facility system
+ calls.
+Original-Maintainer: Daniel Baumann <daniel@lists.debian-maintainers.org>
+Homepage: http://people.redhat.com/~dhowells/keyutils/
+
+Package: libexpat1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 392
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: expat
+Version: 2.0.1-7ubuntu1
+Depends: libc6 (>= 2.4)
+Conflicts: wink (<= 1.5.1060-4)
+Description: XML parsing C library - runtime library
+ This package contains the runtime, shared library of expat, the C
+ library for parsing XML. Expat is a stream-oriented parser in
+ which an application registers handlers for things the parser
+ might find in the XML document (like start tags).
+Homepage: http://expat.sourceforge.net
+Original-Maintainer: Debian XML/SGML Group <debian-xml-sgml-pkgs@lists.alioth.debian.org>
+
+Package: xserver-xorg-video-rendition
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 116
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:4.2.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-rendition
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-rendition
+Description: X.Org X server -- Rendition display driver
+ This package provides the driver for the Rendition Verite family of chipsets,
+ commonly found in 3D accelerators such as the Creative 3D Blaster.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-rendition driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: patch
+Status: install ok installed
+Priority: standard
+Section: vcs
+Installed-Size: 244
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 2.6-2ubuntu1
+Depends: libc6 (>= 2.4)
+Suggests: ed, diffutils-doc
+Description: Apply a diff file to an original
+ Patch will take a patch file containing any of the four forms
+ of difference listing produced by the diff program and apply
+ those differences to an original file, producing a patched
+ version.
+Original-Maintainer: Christoph Berg <myon@debian.org>
+
+Package: initramfs-tools-bin
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 104
+Maintainer: Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>
+Architecture: amd64
+Source: initramfs-tools
+Version: 0.92bubuntu78
+Depends: libc6 (>= 2.11), libudev0 (>= 147)
+Description: binaries used by initramfs-tools
+ This package contains binaries used inside the initramfs images generated
+ by initramfs-tools.
+Original-Maintainer: Debian kernel team <debian-kernel@lists.debian.org>
+
+Package: libxi6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 144
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxi
+Version: 2:1.3-3
+Depends: libc6 (>= 2.4), libx11-6 (>= 2:1.2.99.901), libxext6 (>= 0)
+Description: X11 Input extension library
+ libXi provides an X Window System client interface to the XINPUT
+ extension to the X protocol.
+ .
+ The Input extension allows setup and configuration of multiple input devices,
+ and will soon allow hotplugging of input devices; to be added and removed on
+ the fly.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXi
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xinit
+Status: deinstall ok config-files
+Priority: optional
+Section: x11
+Installed-Size: 128
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.2.0-1
+Config-Version: 1.2.0-1
+Replaces: xbase-clients (<= 1:7.2.ds2-3)
+Depends: libc6 (>= 2.4), libx11-6, x11-common, xauth
+Recommends: xserver-xorg | xserver, xterm | x-session-manager | x-window-manager | x-terminal-emulator
+Conffiles:
+ /etc/X11/xinit/xinitrc cc40a5ba097b062b284e639f4160c04e
+ /etc/X11/xinit/xserverrc 50faa91e980a25adcd0de32020b340bb
+Description: X server initialisation tool
+ xinit and startx are programs which facilitate starting an X server, and
+ loading a base X session.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libattr1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 68
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: attr
+Version: 1:2.4.44-1
+Depends: libc6 (>= 2.4)
+Conflicts: attr (<< 2.0.0)
+Description: Extended attribute shared library
+ Contains the runtime environment required by programs that make use
+ of extended attributes.
+Original-Maintainer: Nathan Scott <nathans@debian.org>
+Homepage: http://savannah.nongnu.org/projects/attr/
+
+Package: xfonts-base
+Status: install ok installed
+Priority: optional
+Section: fonts
+Installed-Size: 8272
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 1:1.0.1
+Replaces: xfonts-misc
+Depends: xfonts-utils
+Suggests: xfs | xserver
+Conffiles:
+ /etc/X11/fonts/misc/xfonts-base.alias a8ec05d528431d4c9703b55a7efd67a8
+Description: standard fonts for X
+ xfonts-base provides a standard set of low-resolution bitmapped fonts. In
+ most cases it is desirable to have the X font server (xfs) and/or an X server
+ installed to make the fonts available to X clients.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-video-sisusb
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 156
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:0.9.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-sisusb
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.7), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-sisusb
+Description: X.Org X server -- SiS USB display driver
+ This package provides the driver for SiS USB-attached video devices.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-sisusb driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: sed
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 972
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 4.2.1-6
+Depends: dpkg (>= 1.15.4) | install-info
+Pre-Depends: libc6 (>= 2.4), libselinux1 (>= 1.32)
+Description: The GNU sed stream editor
+ sed reads the specified files or the standard input if no
+ files are specified, makes editing changes according to a
+ list of commands, and writes the results to the standard
+ output.
+Original-Maintainer: Clint Adams <schizo@debian.org>
+Homepage: http://www.gnu.org/software/sed/
+
+Package: libidn11
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 368
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libidn
+Version: 1.15-2
+Replaces: libidn11-dev
+Depends: libc6 (>= 2.4)
+Conflicts: libidn9-dev
+Description: GNU Libidn library, implementation of IETF IDN specifications
+ GNU Libidn is a fully documented implementation of the Stringprep,
+ Punycode and IDNA specifications. Libidn's purpose is to encode and
+ decode internationalized domain names. The Nameprep, XMPP, SASLprep,
+ and iSCSI profiles are supported.
+ .
+ This package contains the shared library.
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://www.gnu.org/software/libidn/
+
+Package: xserver-xorg-video-tdfx
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 156
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.4.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-tdfx
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-tdfx
+Description: X.Org X server -- tdfx display driver
+ This package provides the driver for 3dfx Voodoo video cards and their
+ derivatives.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-tdfx driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: klibc-utils
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 476
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: klibc
+Version: 1.5.17-4ubuntu1
+Depends: libklibc (= 1.5.17-4ubuntu1)
+Description: small utilities built with klibc for early boot
+ This package contains a collection of programs that are linked
+ against klibc. These duplicate some of the functionality of a
+ regular Linux toolset, but are typically much smaller than their
+ full-function counterparts. They are intended for inclusion in
+ initramfs images and embedded systems.
+Original-Maintainer: maximilian attems <maks@debian.org>
+
+Package: e2fslibs
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 316
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: e2fsprogs
+Version: 1.41.11-1ubuntu2
+Replaces: e2fsprogs (<< 1.34-1)
+Provides: libe2p2, libext2fs2
+Depends: libc6 (>= 2.7)
+Description: ext2/ext3/ext4 file system libraries
+ The ext2, ext3 and ext4 file systems are successors of the original ext
+ ("extended") file system. They are the main file system types used for
+ hard disks on Debian and other Linux systems.
+ .
+ This package provides the ext2fs and e2p libraries, for userspace software
+ that directly accesses extended file systems. Programs that use libext2fs
+ include e2fsck, mke2fs, and tune2fs. Programs that use libe2p include
+ dumpe2fs, chattr, and lsattr.
+Homepage: http://e2fsprogs.sourceforge.net
+Original-Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+
+Package: xfonts-100dpi
+Status: install ok installed
+Priority: optional
+Section: fonts
+Installed-Size: 4808
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 1:1.0.1
+Depends: xfonts-utils
+Suggests: xfs | xserver
+Conffiles:
+ /etc/X11/fonts/100dpi/xfonts-100dpi.alias 85bebd6ca213aa656c301a72eb4397cb
+Description: 100 dpi fonts for X
+ xfonts-100dpi provides a set of bitmapped fonts at 100 dots per inch. In
+ most cases it is desirable to have the X font server (xfs) and/or an X server
+ installed to make the fonts available to X clients.
+ .
+ This package contains only fonts in the ISO 10646-1 and ISO 8859-1
+ encodings, to conserve disk space. For other encodings, see the
+ xfonts-100dpi-transcoded package.
+ .
+ This package and xfonts-75dpi provide the same set of fonts, rendered at
+ different resolutions; only one or the other is necessary, but both may be
+ installed. xfonts-100dpi may be more suitable for large monitors and/or
+ large screen resolutions (over 1024x768).
+ .
+ This package requires the xfonts-utils package to prepare the font
+ directories for use by an X server or X font server.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libkrb5support0
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 124
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: krb5
+Version: 1.8.1+dfsg-2
+Replaces: libkrb53 (<< 1.6.dfsg.4~beta1-7)
+Depends: libc6 (>= 2.3.4), libkeyutils1
+Suggests: krb5-doc, krb5-user
+Description: MIT Kerberos runtime libraries - Support library
+ Kerberos is a system for authenticating users and services on a network.
+ Kerberos is a trusted third-party service. That means that there is a
+ third party (the Kerberos server) that is trusted by all the entities on
+ the network (users and services, usually called "principals").
+ .
+ This is the MIT reference implementation of Kerberos V5.
+ .
+ This package contains an internal runtime support library used by other
+ Kerberos libraries.
+Original-Maintainer: Sam Hartman <hartmans@debian.org>
+Homepage: http://web.mit.edu/kerberos/
+
+Package: libgl1-mesa-glx
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 632
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: mesa
+Version: 7.7.1-1ubuntu2
+Replaces: libgl1, libgl1-mesa-dri (<< 6.4.0)
+Provides: libgl1
+Depends: libc6 (>= 2.4), libdrm2 (>= 2.3.1), libx11-6 (>= 0), libxdamage1 (>= 1:1.1), libxext6 (>= 0), libxfixes3 (>= 1:4.0.1), libxxf86vm1, dpkg (>= 1.15.4)
+Recommends: libgl1-mesa-dri (>= 7.2)
+Conflicts: libgl1, libgl1-mesa-dri (<< 6.4.0)
+Description: A free implementation of the OpenGL API -- GLX runtime
+ This version of Mesa provides GLX and DRI capabilities: it is capable of
+ both direct and indirect rendering. For direct rendering, it can use DRI
+ modules from the libgl1-mesa-dri package to accelerate drawing.
+ .
+ This package does not include the modules themselves: these can be found
+ in the libgl1-mesa-dri package.
+ .
+ For a complete description of Mesa, please look at the
+ libgl1-mesa-swx11 package.
+Homepage: http://mesa3d.sourceforge.net/
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: x11-utils
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 688
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 7.5+3
+Replaces: appres, editres, listres, luit, viewres, xbase-clients (<< 1:7.2.ds3), xdpyinfo, xdriinfo, xev, xfd, xfontsel, xkill, xlsatoms, xlsclients, xlsfonts, xmessage, xprop, xutils (<< 1:7.2), xvinfo, xwininfo
+Depends: libc6 (>= 2.7), libfontconfig1 (>= 2.8.0), libfontenc1, libfreetype6 (>= 2.2.1), libgl1-mesa-glx | libgl1, libx11-6 (>= 0), libxaw7, libxext6 (>= 0), libxft2 (>> 2.1.1), libxi6 (>= 0), libxinerama1, libxmu6, libxmuu1, libxrender1, libxt6, libxtst6, libxv1, libxxf86dga1, libxxf86vm1, zlib1g (>= 1:1.1.4), cpp
+Pre-Depends: x11-common (>= 1:7.0.0)
+Suggests: mesa-utils
+Conflicts: appres, editres, listres, luit, viewres, xdpyinfo, xdriinfo, xev, xfd, xfontsel, xkill, xlsatoms, xlsclients, xlsfonts, xmessage, xprop, xvinfo, xwininfo
+Conffiles:
+ /etc/X11/app-defaults/Editres 04c860eb13ac3a4e8d74ebebcf3da76c
+ /etc/X11/app-defaults/Editres-color f16b07f1caf85b42cd40355e23d927a0
+ /etc/X11/app-defaults/Viewres 4f77da598593ff07cda9d2d147a07772
+ /etc/X11/app-defaults/Viewres-color ff9c397a80443790a97b909050f63282
+ /etc/X11/app-defaults/Xfd 5cee09dc86e1dc14c19492b6b866d17c
+ /etc/X11/app-defaults/XFontSel d917f63ef27294544ab192a3e33e30df
+ /etc/X11/app-defaults/Xmessage eed84b35dde8b18e7dcfc80e75c1da67
+ /etc/X11/app-defaults/Xmessage-color ca383db9e4e9648bda0952ad6b8a2115
+Description: X11 utilities
+ An X client is a program that interfaces with an X server (almost always via
+ the X libraries), and thus with some input and output hardware like a
+ graphics card, monitor, keyboard, and pointing device (such as a mouse).
+ .
+ This package provides a miscellaneous assortment of X utilities
+ that ship with the X Window System, including:
+ - appres, editres, listres and viewres, which query the X resource database;
+ - luit, a filter that can be run between an arbitrary application and a
+ UTF-8 terminal emulator;
+ - xdpyinfo, a display information utility for X;
+ - xdriinfo, query configuration information of DRI drivers;
+ - xev, an X event displayer;
+ - xfd, a tool that displays all the glyphs in a given X font;
+ - xfontsel, a tool for browsing and selecting X fonts;
+ - xkill, a tool for terminating misbehaving X clients;
+ - xlsatoms, which lists interned atoms defined on an X server;
+ - xlsclients, which lists client applications running on an X display;
+ - xlsfonts, a server font list displayer;
+ - xmessage, a tool to display message or dialog boxes;
+ - xprop, a property displayer for X;
+ - xvinfo, an Xv extension information utility for X;
+ - xwininfo, a window information utility for X;
+ .
+ The editres and viewres programs use bitmap images provided by the
+ xbitmaps package. The luit program requires locale information from
+ the libx11-data package.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: base-passwd
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 184
+Maintainer: Colin Watson <cjwatson@debian.org>
+Architecture: amd64
+Version: 3.5.22
+Replaces: base
+Depends: libc6 (>= 2.8)
+Description: Debian base system master password and group files
+ These are the canonical master copies of the user database files
+ (/etc/passwd and /etc/group), containing the Debian-allocated user and
+ group IDs. The update-passwd tool is provided to keep the system databases
+ synchronized with these master files.
+
+Package: libcomerr2
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 108
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: e2fsprogs
+Version: 1.41.11-1ubuntu2
+Replaces: e2fsprogs (<< 1.34-1)
+Provides: libcomerr-kth-compat
+Depends: libc6 (>= 2.3.4)
+Description: common error description library
+ libcomerr is an attempt to present a common error-handling mechanism to
+ manipulate the most common form of error code in a fashion that does not
+ have the problems identified with mechanisms commonly in use.
+Homepage: http://e2fsprogs.sourceforge.net
+Original-Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+
+Package: mawk
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 256
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.3.3-15ubuntu2
+Provides: awk
+Pre-Depends: libc6 (>= 2.11~20100104-0ubuntu3)
+Description: a pattern scanning and text processing language
+ Mawk is an interpreter for the AWK Programming Language. The AWK
+ language is useful for manipulation of data files, text retrieval and
+ processing, and for prototyping and experimenting with algorithms. Mawk
+ is a new awk meaning it implements the AWK language as defined in Aho,
+ Kernighan and Weinberger, The AWK Programming Language, Addison-Wesley
+ Publishing, 1988. (Hereafter referred to as the AWK book.) Mawk conforms
+ to the POSIX 1003.2 (draft 11.3) definition of the AWK language
+ which contains a few features not described in the AWK book, and mawk
+ provides a small number of extensions.
+ .
+ Mawk is smaller and much faster than gawk. It has some compile-time
+ limits such as NF = 32767 and sprintf buffer = 1020.
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: xserver-xorg-video-ark
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 84
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:0.7.2-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-ark
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-ark
+Description: X.Org X server -- ark display driver
+ This package provides the driver for the ark family
+ of chipsets.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-ark driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: gnupg
+Status: install ok installed
+Priority: important
+Section: utils
+Installed-Size: 5320
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.4.10-2ubuntu1
+Depends: libbz2-1.0, libc6 (>= 2.4), libreadline6, libusb-0.1-4 (>= 2:0.1.12), zlib1g (>= 1:1.1.4), dpkg (>= 1.15.4) | install-info, gpgv
+Recommends: libldap-2.4-2 (>= 2.4.7), gnupg-curl
+Suggests: gnupg-doc, xloadimage | imagemagick | eog, libpcsclite1
+Description: GNU privacy guard - a free PGP replacement
+ GnuPG is GNU's tool for secure communication and data storage.
+ It can be used to encrypt data and to create digital signatures.
+ It includes an advanced key management facility and is compliant
+ with the proposed OpenPGP Internet standard as described in RFC2440.
+ .
+ The gnupg package is built without libcurl. So it does not support
+ HKPS keyservers. Install the gnupg-curl package if you want to use
+ the keyserver helper tools built with libcurl and supporting HKPS.
+ .
+ GnuPG does not use any patented algorithms. This means it cannot be
+ compatible with PGP2, because that uses IDEA (which is patented in
+ a number of countries).
+Homepage: http://www.gnupg.org
+Original-Maintainer: Debian GnuPG-Maintainers <pkg-gnupg-maint@lists.alioth.debian.org>
+
+Package: xserver-xorg-video-cirrus
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 164
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.3.2-1ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-cirrus
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-cirrus
+Description: X.Org X server -- Cirrus display driver
+ This package provides the driver for the Cirrus Logic family of video
+ cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-cirrus driver module.
+Orig-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libdb4.8
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 1516
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: db
+Version: 4.8.24-1ubuntu1
+Depends: libc6 (>= 2.4)
+Conflicts: libdb2 (<< 2:2.7.7-3)
+Description: Berkeley v4.8 Database Libraries [runtime]
+ This is the runtime package for programs that use the v4.8 Berkeley
+ database library.
+Homepage: http://www.oracle.com/technology/software/products/berkeley-db/index.html
+Original-Maintainer: Debian Berkeley DB Maintainers <pkg-db-devel@lists.alioth.debian.org>
+
+Package: x11-apps
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 2276
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 7.5+1ubuntu2
+Replaces: bitmap, ico, oclock, x11perf, xbase-clients (<= 1:7.2.ds2-3), xbiff, xcalc, xclipboard, xclock, xconsole, xcursorgen, xditview, xeyes, xgc, xload, xlogo, xmag, xman, xmore, xwd, xwud
+Depends: libc6 (>= 2.11), libpng12-0 (>= 1.2.13-4), libsm6, libx11-6 (>= 0), libxaw7, libxcursor1 (>> 1.1.2), libxext6 (>= 0), libxft2 (>> 2.1.1), libxkbfile1, libxmu6, libxmuu1, libxrender1, libxt6, cpp
+Pre-Depends: x11-common (>= 1:7.0.0)
+Suggests: mesa-utils
+Conflicts: bitmap, ico, oclock, x11perf, xbiff, xcalc, xclipboard, xclock, xconsole, xcursorgen, xditview, xeyes, xgc, xload, xlogo, xmag, xman, xmore, xwd, xwud
+Conffiles:
+ /etc/X11/app-defaults/Bitmap 53d1579022e3e95bc2b15eb813f08731
+ /etc/X11/app-defaults/Bitmap-color 946b659d5d6c41b6840f5e0df10680d9
+ /etc/X11/app-defaults/Bitmap-nocase f2db8f925e5ea5680090c32db9121c8d
+ /etc/X11/app-defaults/Clock-color b4ba6ae900e0e488e4b030f14c6fe656
+ /etc/X11/app-defaults/XCalc bc0d4c4717137a2d25e17b7358c8ad8d
+ /etc/X11/app-defaults/XCalc-color c8efe9caf8987a902df98270e2b291c9
+ /etc/X11/app-defaults/XClipboard 18ebd8e152da9203e9e34e88dad98d97
+ /etc/X11/app-defaults/XClock 812dfcc6f6d83e2ae9da809c3bf11c67
+ /etc/X11/app-defaults/XClock-color 7b049809f0bca03c76480959e2e4db89
+ /etc/X11/app-defaults/XConsole a310ffbe0ed9509a2477ea5f1ac1dcc5
+ /etc/X11/app-defaults/Xditview 49d35244a61618b60f17d3400f64a81e
+ /etc/X11/app-defaults/Xditview-chrtr 98a562569a7db396c9a0d2e6d414067e
+ /etc/X11/app-defaults/Xedit 013f41442eb431168793e1943779c8f3
+ /etc/X11/app-defaults/Xedit-color 59d7f0d96f4346ae0fe4904d46daf53c
+ /etc/X11/app-defaults/Xgc 744adc578acb239541e378eb16e337f7
+ /etc/X11/app-defaults/Xgc-color 8dfaceb0c12917fd0b1c77423f9f6a47
+ /etc/X11/app-defaults/XLoad 3ea554c7be110102e42e25d3d83c4134
+ /etc/X11/app-defaults/XLogo fb1407c8cb1574726a6eb743b0092407
+ /etc/X11/app-defaults/XLogo-color 439375bf8e3b87f46eebf35f55a8dbb5
+ /etc/X11/app-defaults/Xmag 798a596142ae1b051408171e2b2db096
+ /etc/X11/app-defaults/Xman b34cc2adfe0b89d436864163387417d1
+ /etc/X11/app-defaults/XMore d6a85ee054f522e47a246d4471b6ab49
+Description: X applications
+ This package provides a miscellaneous assortment of X applications
+ that ship with the X Window System, including:
+ - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;
+ - oclock and xclock, graphical clocks;
+ - xbiff, a tool which tells you when you have new email;
+ - xcalc, a scientific calculator desktop accessory;
+ - xclipboard, a tool to manage cut-and-pasted text selections;
+ - xconsole, which monitors system console messages;
+ - xcursorgen, a tool for creating X cursor files from PNGs;
+ - xditview, a viewer for ditroff output;
+ - xedit, a simple text editor for X;
+ - xeyes, a demo program in which a pair of eyes track the pointer;
+ - xgc, a graphics demo;
+ - xload, a monitor for the system load average;
+ - xlogo, a demo program that displays the X logo;
+ - xmag, which magnifies parts of the X screen;
+ - xman, a manual page browser;
+ - xmore, a text pager;
+ - xwd, a utility for taking window dumps ("screenshots") of the X session;
+ - xwud, a viewer for window dumps created by xwd;
+ - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical
+ operations under the X Window System;
+ .
+ The xbiff, xcalc, xconsole and xman programs use bitmap images provided
+ by the xbitmaps package.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: x11-common
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 640
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: all
+Source: xorg
+Version: 1:7.5+5ubuntu1
+Replaces: x-common, xfree86-common, xorg-common, xserver-common (<< 7)
+Depends: debconf (>= 0.5) | debconf-2.0, upstart-job, debianutils (>= 1.13), lsb-base (>= 1.3-9ubuntu2)
+Pre-Depends: debconf | debconf-2.0
+Conflicts: aee (<= 2.2.15b-1), ascd (<= 0.13.2-3), beaver (<= 0.2.5-2), bibview (<= 2.2-8), bugsx (<= 1.08-8), buici-clock (<= 0.4.5+b1), communicator-smotif-477, ctwm (<= 3.7-2), emelfm (<= 0.9.2-7), epan, fte-xwindow (<= 0.50.0-1.3), fvwm1 (<= 1.24r-46), fvwm95 (<= 2.0.43ba-23+b1), gerstensaft (<= 0.2-5.1), ghostview, gipsc (<= 0.4.3-2), grace (<= 1:5.1.18-1), grace6 (<= 5.99.0+final-4), gradio (<= 1.0.1-6), groff (<= 1.18.1.1-7), guitar (<= 0.1.4-11), hamsoft (<< 0.2.3-1), hanterm-classic (<= 3.1.6.0-4), hanterm-xf (<= 1:3.3.1p18-9.2), hfsutils-tcltk (<= 3.2.6-7), ibp (<= 0.21-4), isdnutils-xtools (<= 1:3.8.2005-12-06-4), ivtools-bin (<= 1.1.3-5), ivtools-dev (<= 1.1.3-5), kdrill (<= 6.4-2.1), kinput2-canna (<= 3.1-7), kinput2-canna-wnn (<= 3.1-7), kinput2-wnn (<= 3.1-7), kterm (<= 6.2.0-45), lbxproxy (<< 7.0), libmotif-dev (<= 2.2.3-1.3), libxft-dev (<= 2.1.8.2-5), lm-batmon (<= 0.96-3), login.app (<= 1.2.1-18), lsb-core (<= 3.1-4), lwm (<= 1.2.1-1), mctools-lite (<= 970129-16), mgp (<= 1.11b-6), motif-clients (<= 2.2.3-1.3), navigator-smotif-477, netscape-base-4, olvwm (<= 4.4.3.2p1.4-21), olwm (<= 3.2p1.4-21), oneko (<= 1.2.sakura.6-1), opera (<< 9.10-20060616), pgaccess (<= 1:0.98.8.20030520-2), phototk, pixmap (<= 2.6pl4-14.1), plotmtv (<= 1.4.4t-8.1), pmud (<= 0.10-9), ppxp (<= 0.2001080415-14), ppxp-x11 (<= 0.2001080415-14), procmeter (<= 2.5.1-11), propsel (<= 971130-5.3), proxymngr (<< 7.0), qcam (<= 0.91-11.1), regexplorer (<= 0.1.6-12), seyon (<= 2.20c-20), skkinput (<= 1:2.06.4-4), stella (<< 2.2-1), tkdesk (<= 2.0-5), tkseti (<= 3.06-1), tkworld, twlog (<= 1.3-4), twm (<< 7.0), ucbmpeg-play (<< 2.3p-13), vide (<= 1.21-3), videogen (<= 0.32-1), vtwm (<= 5.4.7-2), w9wm (<= 0.4.2-4), wdm (<= 1.28-1), wily (<= 0.13.41-6), wmavgload (<= 0.7.0-6.1), wmcpu (<= 1.3-4.1), wmdate (<= 0.5-7.1), wmnet (<= 1.05-12), wmnetselect (<= 0.85-5.5), wmscope (<= 3.0-9.1), wmsensors (<= 1.0.4-3.4), wmtv (<= 0.6.5-15), x-common, xautolock (<= 1:2.1-6), xbanner (<= 1.31-23), xbase-clients (<< 1:7.0), xbatt (<= 1.2.1-4), xbattbar (<= 1.4.2-3.1), xcal (<= 4.1-18.2), xcalendar-i18n (<= 4.0.0.i18p1-13.1), xcb (<= 2.4-4), xclip (<= 0.08-5), xclips (<= 6.21-6), xcolors (<= 1.5a-2), xcolorsel (<= 1.1a-11), xdkcal (<= 0.9d-2.1), xdm (<= 1:1.0.1-6), xdmx (<< 1:1.0), xdu (<= 3.0-14), xearth (<= 1.1-10.2), xengine (<= 1.11-9), xephem (<= 3.4-5), xext, xezmlm (<= 1.0.3-11), xfaces (<= 3.3-25), xfishtank (<= 2.2-23.1), xfm (<= 1.4.3-8), xfractint (<< 20.3.01-1), xfree86-common, xfs (<< 1:1.0), xfs-xtt (<= 1:1.4.1.xf430-6), xftp, xfwp (<< 7.0), xgdipc (<= 1.2-0.3), xgmod (<= 3.1-9), xgobi, xgraph (<= 12.1-3), xinput (<= 1.2-5.2), xipmsg (<= 0.8088-1.1), xisp, xlbiff (<< 4.1-4), xli (<= 1.17.0-21), xlockmore (<= 1:5.21-1), xlockmore-gl (<= 1:5.21-1), xlogmaster (<= 1.6.0-8), xmailbox (<= 2.5-9), xmem (<= 1.20-19), xmeter (<= 1.15-6), xmh (<= 6.8.2.dfsg.1-4), xmix (<= 2.1-5), xmon (<= 1.5.6-1.3), xnecview (<= 1.34-2), xnest (<< 1:1.0), xodo (<= 1.2-9.2), xorg-common, xpaste, xpmumon (<= 1.3.0), xpostit (<= 3.3.1-8.2), xpostitplus, xprint (<= 1:0.1.0.alpha1-13), xqbiff (<= 0.75-4), xrn (<= 9.02-7.1), xserver-common (<< 7), xserver-xfree86 (<< 1:7.0), xserver-xfree86-dbg, xserver-xorg (<< 1:7.4~), xslideshow (<= 3.1-8.1), xsysinfo (<= 1.7-2), xtel (<= 3.3.0-5.4), xterm (<< 208-1), xtoolwait (<= 1.3-6), xtrkcad (<= 3.1.4-1), xtrlock (<= 2.0-11), xturqstat (<= 2.2.2sarge1), xutils (<< 1:7.0), xv (<= 3.10a-26), xvfb (<< 1:1.0), xview-clients (<= 3.2p1.4-21), xviewg (<= 3.2p1.4-21), xviewg-dev (<= 3.2p1.4-21), xvkbd (<= 2.6-2.1), xwit (<= 3.4-6), xxkb (<= 1.10-2.1), xzoom (<= 0.3-17), yank (<= 0.2.1-7.2)
+Conffiles:
+ /etc/X11/rgb.txt 09ee098b83d94c7c046d6b55ebe84ae1
+ /etc/X11/Xreset 05d188ccac2f3360af8fe0c216640233
+ /etc/X11/Xreset.d/README b344c222b5daf81926fd3270df374b5f
+ /etc/X11/Xsession 50678401170c9c701d2375bd279690c5
+ /etc/X11/Xsession.d/20x11-common_process-args 862c8286749d25fe58dd98cad24c3fe4
+ /etc/X11/Xsession.d/30x11-common_xresources 61cebe25ee0c64e981b88958dfee6f9c
+ /etc/X11/Xsession.d/40x11-common_xsessionrc db544c8543d1cb3762b9859288e77040
+ /etc/X11/Xsession.d/50x11-common_determine-startup fe7c99261ba27b26aa14926d92447439
+ /etc/X11/Xsession.d/60x11-common_localhost 2353ea72efc0c3e101058c3c56e282b4
+ /etc/X11/Xsession.d/90x11-common_ssh-agent ae74aadf705c5fccf841ef921b45ca72
+ /etc/X11/Xsession.d/99x11-common_start 3874d5e8f3ec888f69adb126e223e168
+ /etc/X11/Xsession.options 210cd520efa87a5197cac01e10b3a84a
+ /etc/X11/Xresources/x11-common b640adb1cd646ec097f8df5b6deca9f0
+ /etc/gdm/failsafeBlacklist 9b860f21bf33a6bfce55f233ba975e41
+ /etc/gdm/failsafeXinit bf497dc1b011021e548c37392bd2a883
+ /etc/gdm/failsafeXServer 791297354d1c22d1616154b3c6060f2d
+ /etc/init.d/x11-common 9a2901c839ade46a2a0f795ad1400fdf
+ /etc/init/failsafe-x.conf b85b200b5d58cbba7c81d51485e210fc
+Description: X Window System (X.Org) infrastructure
+ x11-common contains the filesystem infrastructure required for further
+ installation of the X Window System in any configuration; it does not
+ provide a full installation of clients, servers, libraries, and utilities
+ required to run the X Window System.
+ .
+ A number of terms are used to refer to the X Window System, including "X",
+ "X Version 11", "X11", "X11R6", and "X11R7". The version of X used in
+ Debian is derived from the version released by the X.Org Foundation, and
+ is thus often also referred to as "X.Org". All of the preceding quoted
+ terms are functionally interchangeable in an Debian system.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: net-tools
+Status: install ok installed
+Priority: required
+Section: net
+Installed-Size: 1044
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.60-23ubuntu2
+Replaces: ja-trans (<= 0.8-2), netbase (<< 4.00)
+Depends: libc6 (>= 2.4)
+Conflicts: ja-trans (<= 0.8-2)
+Description: The NET-3 networking toolkit
+ This package includes the important tools for controlling the network
+ subsystem of the Linux kernel. This includes arp, ifconfig, netstat,
+ rarp, nameif and route. Additionally, this package contains utilities
+ relating to particular network hardware types (plipconfig, slattach,
+ mii-tool) and advanced aspects of IP configuration (iptunnel, ipmaddr).
+ .
+ In the upstream package 'hostname' and friends are included. Those are
+ not installed by this package, since there is a special "hostname*.deb".
+Original-Maintainer: net-tools Team <pkg-net-tools-maintainers@lists.alioth.debian.org>
+
+Package: libxfixes3
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 80
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxfixes
+Version: 1:4.0.4-1
+Depends: libc6 (>= 2.2.5), libx11-6
+Description: X11 miscellaneous 'fixes' extension library
+ libXfixes provides an X Window System client interface to the 'XFIXES'
+ extension to the X protocol.
+ .
+ It provides support for Region types, and some cursor functions.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXfixes
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: ccache
+Status: install ok installed
+Priority: optional
+Section: devel
+Installed-Size: 128
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 2.4-17build1
+Depends: libc6 (>= 2.8), zlib1g (>= 1:1.1.4)
+Suggests: distcc
+Description: Compiler results cacher, for fast recompiles
+ ccache is a compiler cache. It speeds up re-compilation of C/C++ code
+ by caching previous compiles and detecting when the same compile is
+ being done again.
+Original-Maintainer: Y Giridhar Appaji Nag <appaji@debian.org>
+Homepage: http://ccache.samba.org
+
+Package: xserver-xorg-video-r128
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 320
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 6.8.1-2ubuntu1
+Replaces: xserver-xorg-video-ati (<= 1:6.8.0-1ubuntu1)
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.7), xserver-xorg-core (>= 2:1.6.99.900)
+Suggests: firmware-linux
+Conflicts: xserver-xorg-video-ati (<= 1:6.8.0-1ubuntu1)
+Description: X.Org X server -- ATI r128 display driver
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for the ATI Rage 'r128' series.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-r128 driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libfs6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 116
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libfs
+Version: 2:1.0.2-1build1
+Depends: libc6 (>= 2.4)
+Description: X11 Font Services library
+ libFS, the Font Services library, provides various functions useful to
+ X11 font servers, and clients connecting to font servers. It is not used
+ outside of these implementations.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libFS
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: debconf-i18n
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 1136
+Maintainer: Colin Watson <cjwatson@ubuntu.com>
+Architecture: all
+Source: debconf
+Version: 1.5.28ubuntu4
+Replaces: debconf (<< 1.3.0), debconf-utils (<< 1.3.22)
+Depends: debconf, liblocale-gettext-perl, libtext-iconv-perl, libtext-wrapi18n-perl, libtext-charwidth-perl
+Conflicts: debconf-english, debconf-utils (<< 1.3.22)
+Description: full internationalization support for debconf
+ This package provides full internationalization for debconf, including
+ translations into all available languages, support for using translated
+ debconf templates, and support for proper display of multibyte character
+ sets.
+Original-Maintainer: Debconf Developers <debconf-devel@lists.alioth.debian.org>
+
+Package: libxmu6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 164
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxmu
+Version: 2:1.0.5-1
+Depends: libc6 (>= 2.7), libx11-6, libxext6, libxt6
+Description: X11 miscellaneous utility library
+ libXmu provides a set of miscellaneous utility convenience functions for X
+ libraries to use. libXmuu is a lighter-weight version that does not depend
+ on libXt or libXext; for more information, see libxmuu1.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXmu
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: grep
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 1188
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 2.5.4-4build1
+Provides: rgrep
+Pre-Depends: libc6 (>= 2.4)
+Suggests: libpcre3 (>= 7.7)
+Conflicts: rgrep
+Description: GNU grep, egrep and fgrep
+ 'grep' is a utility to search for text in files; it can be used from the
+ command line or in scripts. Even if you don't want to use it, other packages
+ on your system probably will.
+ .
+ The GNU family of grep utilities may be the "fastest grep in the west".
+ GNU grep is based on a fast lazy-state deterministic matcher (about
+ twice as fast as stock Unix egrep) hybridized with a Boyer-Moore-Gosper
+ search for a fixed string that eliminates impossible text from being
+ considered by the full regexp matcher without necessarily having to
+ look at every character. The result is typically many times faster
+ than Unix grep or egrep. (Regular expressions containing backreferencing
+ will run more slowly, however.)
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://www.gnu.org/software/grep/
+
+Package: plymouth
+Status: install ok installed
+Priority: required
+Section: x11
+Installed-Size: 480
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 0.8.2-2ubuntu2
+Depends: libc6 (>= 2.8), libdrm-intel1 (>= 2.4.9), libdrm-nouveau1 (>= 2.4.11-1ubuntu1~), libdrm-radeon1 (>= 2.4.17), libdrm2 (>= 2.4.3), libplymouth2 (= 0.8.2-2ubuntu2), upstart-job, udev (>= 149-2), mountall (>= 2.0), initramfs-tools
+Recommends: plymouth-theme-ubuntu-text | plymouth-theme
+Breaks: gdm (<< 2.29.1-0ubuntu4), kdm (<< 4:4.4.2-0ubuntu6), lubuntu-plymouth-theme (<= 0.4), ubuntustudio-plymouth-theme (<= 0.38), xubuntu-plymouth-theme (<< 10.04.4)
+Conflicts: usplash
+Conffiles:
+ /etc/init/plymouth.conf a0352db1159bc9f4322170dd78cd1dae
+ /etc/init/plymouth-log.conf 65d2943a69f455dec3fed43fd7996d76
+ /etc/init/plymouth-splash.conf 5daa5d5dafaee30442e4d8d82e542c0a
+ /etc/init/plymouth-stop.conf f422b651bb1fe8164f968bb58e18bb6c
+Description: graphical boot animation and logger - main package
+ Plymouth is an application that runs very early in the boot process
+ (even before the root filesystem is mounted!) that provides a graphical
+ boot animation while the boot process happens in the background.
+
+Package: libdrm-nouveau1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 456
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: libdrm
+Version: 2.4.18-1ubuntu3
+Depends: libc6 (>= 2.3.4), libdrm2 (>= 2.4.3)
+Description: Userspace interface to nouveau-specific kernel DRM services -- runtime
+ This library implements the userspace interface to the nouveau-specific kernel
+ DRM services. DRM stands for "Direct Rendering Manager", which is the
+ kernelspace portion of the "Direct Rendering Infrastructure" (DRI). The DRI is
+ currently used on Linux to provide hardware-accelerated OpenGL drivers.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: kbd
+Status: install ok installed
+Priority: extra
+Section: utils
+Installed-Size: 1632
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.15-1ubuntu3
+Replaces: open, util-linux (<< 2.11)
+Provides: console-utilities, open
+Depends: libc6 (>= 2.7), console-setup, lsb-base (>= 3.0-10), initramfs-tools
+Conflicts: console-utilities, kbd-data, open, util-linux (<< 2.11)
+Conffiles:
+ /etc/kbd/config 182c6394322efb8a10e6e95836ad220d
+ /etc/kbd/remap 2f1f15d62b45ab43c04b3ddbfcf591ec
+Description: Linux console font and keytable utilities
+ This package allows you to set up the Linux console, change the font,
+ resize text mode virtual consoles and remap the keyboard.
+ .
+ You will probably want to install a set of data files, such as the one
+ in the “console-setup†package.
+Original-Maintainer: Console utilities maintainers <pkg-kbd-devel@lists.alioth.debian.org>
+
+Package: libxdamage1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 64
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxdamage
+Version: 1:1.1.2-1
+Depends: libc6 (>= 2.2.5), libx11-6, libxfixes3 (>= 1:4.0.1)
+Description: X11 damaged region extension library
+ libXdamage provides an X Window System client interface to the DAMAGE
+ extension to the X protocol.
+ .
+ The Damage extension provides for notification of when on-screen regions have
+ been 'damaged' (altered).
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXdamage
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: x11-xserver-utils
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 556
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 7.5+1ubuntu2
+Replaces: iceauth, sessreg, xbase-clients (<< 1:7.3), xgamma, xhost, xmodmap, xrandr, xrdb, xrefresh, xrgb, xset, xsetmode, xsetpointer, xsetroot, xstdcmap, xutils (<< 1:7.2), xvidtune
+Depends: libc6 (>= 2.7), libice6 (>= 1:1.0.0), libx11-6 (>= 0), libxau6, libxaw7, libxext6 (>= 0), libxi6 (>= 0), libxmu6, libxmuu1, libxrandr2 (>= 2:1.2.99.3), libxrender1, libxt6, libxxf86vm1, cpp
+Pre-Depends: x11-common (>= 1:7.0.0)
+Suggests: nickle, cairo-5c, xorg-docs-core
+Conflicts: iceauth, sessreg, xgamma, xhost, xmodmap, xrandr, xrdb, xrefresh, xrgb, xset, xsetmode, xsetpointer, xsetroot, xstdcmap, xvidtune
+Conffiles:
+ /etc/X11/app-defaults/Xvidtune b8a276636b9bee314fa77b468a54a84a
+Description: X server utilities
+ An X client is a program that interfaces with an X server (almost always via
+ the X libraries), and thus with some input and output hardware like a
+ graphics card, monitor, keyboard, and pointing device (such as a mouse).
+ .
+ This package provides a miscellaneous assortment of X Server utilities
+ that ship with the X Window System, including:
+ - iceauth, a tool for manipulating ICE protocol authorization records;
+ - rgb;
+ - sessreg, a simple program for managing utmp/wtmp entries;
+ - xcmsdb, a device color characteristic utility for the X Color Management
+ System;
+ - xgamma, a tool for querying and setting a monitor's gamma correction;
+ - xhost, a very dangerous program that you should never use;
+ - xmodmap, a utility for modifying keymaps and pointer button mappings in X;
+ - xrandr, a command-line interface to the RandR extension;
+ - xrdb, a tool to manage the X server resource database;
+ - xrefresh, a tool that forces a redraw of the X screen;
+ - xset, a tool for setting miscellaneous X server parameters;
+ - xsetmode and xsetpointer, tools for handling X Input devices;
+ - xsetroot, a tool for tailoring the appearance of the root window;
+ - xstdcmap, a utility to selectively define standard colormap properties;
+ - xvidtune, a tool for customizing X server modelines for your monitor.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libxaw7
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 516
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxaw
+Version: 2:1.0.7-1
+Depends: libc6 (>= 2.4), libx11-6, libxext6, libxmu6, libxpm4, libxt6
+Description: X11 Athena Widget library
+ libXaw7 provides the second version of Xaw, the Athena Widgets tookit,
+ which is largely used by legacy X applications. This version is the
+ most common version, as version 6 is considered deprecated, and version
+ 8, which adds Xprint support, is unsupported and not widely used.
+ In general, use of a more modern toolkit such as GTK+ is recommended.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXaw
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: upstart
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 856
+Maintainer: Scott James Remnant <scott@ubuntu.com>
+Architecture: amd64
+Version: 0.6.5-6
+Replaces: startup-tasks, system-services, sysvinit, upstart-compat-sysv, upstart-job
+Provides: startup-tasks, system-services, upstart-compat-sysv, upstart-job
+Depends: libc6 (>= 2.4), libdbus-1-3 (>= 1.2.16), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0), libudev0 (>= 151-5), sysvinit-utils, sysv-rc, initscripts, mountall, ifupdown (>= 0.6.8ubuntu29)
+Conflicts: startup-tasks, system-services, sysvinit, upstart-compat-sysv, upstart-job
+Conffiles:
+ /etc/dbus-1/system.d/Upstart.conf 64be74cddb0c74b7d98202b40389784c
+ /etc/init/control-alt-delete.conf 16e6603524084b63b0f0ca04eb56757e
+ /etc/init/rc-sysinit.conf bd0415c6387debecfff37a371b07002a
+ /etc/init/rc.conf c5e4b13b644d79d5a5c02e1396159c00
+ /etc/init/rcS.conf 918e9d799d6aa99a0d96538d9685821d
+ /etc/init/tty1.conf 543a3404e714bb96b676770c8334d86d
+ /etc/init/tty2.conf 5eed82253d8c362021c344f1dbdc863b
+ /etc/init/tty3.conf b75577836957bb5adb50b3482c429edb
+ /etc/init/tty4.conf 27b4a36d59bf74fd6792a69394511e42
+ /etc/init/tty5.conf 9803918babed47f733554dcd556d09d1
+ /etc/init/tty6.conf 34f7b6971a5580f5fb6a2ff6f14af996
+ /etc/init/upstart-udev-bridge.conf b3d59bd6e5debf634e4fe258d5a4dd71
+Description: event-based init daemon
+ upstart is a replacement for the /sbin/init daemon which handles
+ starting of tasks and services during boot, stopping them during
+ shutdown and supervising them while the system is running.
+Homepage: http://upstart.ubuntu.com/
+
+Package: xserver-xorg-video-neomagic
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 156
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.2.4-2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-neomagic
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-neomagic
+Description: X.Org X server -- Neomagic display driver
+ This package provides the driver for Neomagic MagicGraph chipsets, which are
+ commonly found in laptops.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-neomagic driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libcwidget3
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 844
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: cwidget
+Version: 0.5.13-1ubuntu1
+Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libncursesw5 (>= 5.6+20071006-3), libsigc++-2.0-0c2a (>= 2.0.2), libstdc++6 (>= 4.1.1)
+Suggests: libcwidget-dev
+Description: high-level terminal interface library for C++ (runtime files)
+ libcwidget is a modern user interface library modeled on GTK+ and Qt,
+ but using curses as its display layer and with widgets that are
+ tailored to a terminal environment.
+ .
+ This package contains the files that are required to run programs
+ compiled against libcwidget.
+Homepage: http://cwidget.alioth.debian.org
+Original-Maintainer: Daniel Burrows <dburrows@debian.org>
+
+Package: libsasl2-modules
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 500
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: cyrus-sasl2
+Version: 2.1.23.dfsg1-5ubuntu1
+Depends: libsasl2-2 (= 2.1.23.dfsg1-5ubuntu1), libc6 (>= 2.4), libssl0.9.8 (>= 0.9.8k-1)
+Suggests: libsasl2-modules-otp, libsasl2-modules-ldap, libsasl2-modules-sql, libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal
+Description: Cyrus SASL - pluggable authentication modules
+ This is the Cyrus SASL API implementation, version 2.1. See package
+ libsasl2-2 and RFC 2222 for more information.
+ .
+ This package provides the following SASL modules: LOGIN, PLAIN, ANONYMOUS,
+ NTLM, CRAM-MD5, and DIGEST-MD5 (with DES support).
+Homepage: http://cyrusimap.web.cmu.edu/
+Original-Maintainer: Debian Cyrus SASL Team <pkg-cyrus-sasl2-debian-devel@lists.alioth.debian.org>
+
+Package: libsasl2-2
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 272
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: cyrus-sasl2
+Version: 2.1.23.dfsg1-5ubuntu1
+Replaces: libsasl2
+Depends: libc6 (>= 2.4), libdb4.8
+Recommends: libsasl2-modules (= 2.1.23.dfsg1-5ubuntu1)
+Conflicts: libsasl2-gssapi-mit (<< 2.1.22), libsasl2-krb4-mit (<< 2.1.22), postfix (<< 2.3.4-3)
+Description: Cyrus SASL - authentication abstraction library
+ This is the Cyrus SASL API implementation, version 2.1.
+ .
+ SASL is the Simple Authentication and Security Layer, a method for
+ adding authentication support to connection-based protocols. To use
+ SASL, a protocol includes a command for identifying and
+ authenticating a user to a server and for optionally negotiating
+ protection of subsequent protocol interactions. If its use is
+ negotiated, a security layer is inserted between the protocol and the
+ connection. See RFC 2222 for more information.
+ .
+ Any of: ANONYMOUS, CRAM-MD5, DIGEST-MD5, GSSAPI (MIT or Heimdal
+ Kerberos 5), NTLM, OTP, PLAIN, or LOGIN can be used. If you intend to
+ use this package on a server that provides SASL authentication, then
+ you must install some of the libsasl2-modules* packages.
+Homepage: http://cyrusimap.web.cmu.edu/
+Original-Maintainer: Debian Cyrus SASL Team <pkg-cyrus-sasl2-debian-devel@lists.alioth.debian.org>
+
+Package: passwd
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 2640
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: shadow
+Version: 1:4.1.4.2-1ubuntu2
+Replaces: manpages-tr (<< 1.0.5), manpages-zh (<< 1.5.1-1)
+Depends: libc6 (>= 2.4), libpam0g (>= 0.99.7.1), libselinux1 (>= 1.32), libpam-modules, debianutils (>= 2.15.2)
+Conffiles:
+ /etc/default/useradd cc9f9a7713ab62a32cd38363d958f396
+ /etc/pam.d/passwd eaf2ad85b5ccd06cceb19a3e75f40c63
+ /etc/pam.d/chfn 4d466e00a348ba426130664d795e8afa
+ /etc/pam.d/chsh a6e9b589e90009334ffd030d819290a6
+ /etc/pam.d/chpasswd 9900720564cb4ee98b7da29e2d183cb2
+ /etc/pam.d/newusers 1454e29bfa9f2a10836563e76936cea5
+Description: change and administer password and group data
+ This package includes passwd, chsh, chfn, and many other programs to
+ maintain password and group data.
+ .
+ Shadow passwords are supported. See /usr/share/doc/passwd/README.Debian
+Homepage: http://pkg-shadow.alioth.debian.org/
+Original-Maintainer: Shadow package maintainers <pkg-shadow-devel@lists.alioth.debian.org>
+
+Package: xfonts-75dpi
+Status: install ok installed
+Priority: optional
+Section: fonts
+Installed-Size: 4476
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 1:1.0.1
+Depends: xfonts-utils
+Suggests: xfs | xserver
+Conffiles:
+ /etc/X11/fonts/75dpi/xfonts-75dpi.alias 6bc48023f2ae7f3bfc105db7b0ee6b49
+Description: 75 dpi fonts for X
+ xfonts-75dpi provides a set of bitmapped fonts at 75 dots per inch. In
+ most cases it is desirable to have the X font server (xfs) and/or an X server
+ installed to make the fonts available to X clients.
+ .
+ This package contains only fonts in the ISO 10646-1 and ISO 8859-1
+ encodings, to conserve disk space. For other encodings, see the
+ xfonts-75dpi-transcoded package.
+ .
+ This package and xfonts-100dpi provide the same set of fonts, rendered at
+ different resolutions; only one or the other is necessary, but both may be
+ installed. xfonts-75dpi may be more suitable for small monitors and/or
+ small screen resolutions (under 1024x768).
+ .
+ This package requires the xfonts-utils package to prepare the font
+ directories for use by an X server or X font server.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: hostname
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 112
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 3.03ubuntu1
+Replaces: nis (<< 3.17-30)
+Pre-Depends: libc6 (>= 2.4), upstart-job
+Conflicts: nis (<< 3.17-30)
+Conffiles:
+ /etc/init/hostname.conf e426591274acd83666295d90a937ee7a
+Description: utility to set/show the host name or domain name
+ This package provides commands which can be used to display the system's
+ DNS name, and to display or set its hostname or NIS domain name.
+Original-Maintainer: Debian Hostname Team <hostname-devel@lists.alioth.debian.org>
+
+Package: xkb-data
+Status: install ok installed
+Priority: extra
+Section: x11
+Installed-Size: 3384
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: xkeyboard-config
+Version: 1.8-1ubuntu8
+Breaks: libx11-6 (<< 2:1.1)
+Description: X Keyboard Extension (XKB) configuration data
+ This package contains configuration data used by the X Keyboard
+ Extension (XKB), which allows selection of keyboard layouts when
+ using a graphical interface.
+ .
+ Every X11 vendor provides its own XKB data files, so keyboard layout
+ designers have to send their layouts to several places. The
+ xkeyboard-config project has been launched at FreeDesktop in order
+ to provide a central repository that could be used by all vendors.
+Homepage: http://www.freedesktop.org/Software/XKeyboardConfig
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: fakeroot
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 372
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.14.4-1ubuntu1
+Depends: libc6 (>= 2.7)
+Description: Gives a fake root environment
+ This package is intended to enable something like:
+ dpkg-buildpackage -rfakeroot
+ i.e. to remove the need to become root for a package build.
+ This is done by setting LD_PRELOAD to libfakeroot.so,
+ which provides wrappers around getuid, chown, chmod, mknod,
+ stat, and so on, thereby creating a fake root environment.
+ .
+ fakeroot requires SYSV IPC or TCP to operate.
+Original-Maintainer: Clint Adams <schizo@debian.org>
+
+Package: libacl1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 92
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: acl
+Version: 2.2.49-2
+Depends: libattr1 (>= 2.4.41-1), libc6 (>= 2.4)
+Conflicts: acl (<< 2.0.0), libacl1-kerberos4kth
+Description: Access control list shared library
+ This package contains the libacl.so dynamic library containing
+ the POSIX 1003.1e draft standard 17 functions for manipulating
+ access control lists.
+Original-Maintainer: Nathan Scott <nathans@debian.org>
+Homepage: http://savannah.nongnu.org/projects/acl/
+
+Package: python2.6-minimal
+Status: install ok installed
+Priority: required
+Section: python
+Installed-Size: 5044
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: python2.6
+Version: 2.6.5-1ubuntu6
+Replaces: python2.6 (<< 2.6.4~rc1-1)
+Depends: libc6 (>= 2.4), libssl0.9.8 (>= 0.9.8k-1), zlib1g (>= 1:1.2.0)
+Recommends: python2.6
+Suggests: binfmt-support
+Conflicts: binfmt-support (<< 1.1.2), python-central (<< 0.6.11ubuntu6)
+Conffiles:
+ /etc/python2.6/sitecustomize.py d6b276695157bde06a56ba1b2bc53670
+Description: A minimal subset of the Python language (version 2.6)
+ This package contains the interpreter and some essential modules. It can
+ be used in the boot process for some basic tasks.
+ See /usr/share/doc/python2.6-minimal/README.Debian for a list of the modules
+ contained in this package.
+Original-Maintainer: Matthias Klose <doko@debian.org>
+Python-Runtime: python2.6
+Python-Version: 2.6
+
+Package: libpam-runtime
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 1248
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: pam
+Version: 1.1.1-2ubuntu2
+Replaces: libpam0g-dev, libpam0g-util
+Depends: debconf (>= 1.5.19), libpam-modules (>= 1.0.1-6)
+Conflicts: libpam0g-util
+Conffiles:
+ /etc/pam.conf 87fc76f18e98ee7d3848f6b81b3391e5
+ /etc/pam.d/other 31aa7f2181889ffb00b87df4126d1701
+Description: Runtime support for the PAM library
+ Contains configuration files and directories required for
+ authentication to work on Debian systems. This package is required
+ on almost all installations.
+Homepage: http://pam.sourceforge.net/
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: libslang2
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 1520
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: slang2
+Version: 2.2.2-2ubuntu1
+Depends: libc6 (>= 2.4)
+Recommends: libpng12-0
+Description: The S-Lang programming library - runtime version
+ S-Lang is a C programmer's library that includes routines for the rapid
+ development of sophisticated, user friendly, multi-platform applications.
+ .
+ This package contains only the shared library libslang.so.* and copyright
+ information. It is only necessary for programs that use this library (such
+ as jed and slrn). If you plan on doing development with S-Lang, you will
+ need the companion -dev package as well.
+Original-Maintainer: Alastair McKinstry <mckinstry@debian.org>
+
+Package: initscripts
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 336
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: sysvinit
+Version: 2.87dsf-4ubuntu17
+Replaces: libc0.1, libc0.3, libc6, libc6.1
+Depends: libc6 (>= 2.4), mount (>= 2.11x-1), debianutils (>= 2.13.1), lsb-base (>= 3.2-14), sysvinit-utils (>= 2.86.ds1-39), sysv-rc | file-rc, passwd, upstart
+Recommends: psmisc, e2fsprogs
+Breaks: hostname (<< 2.95ubuntu1~boot2), rsyslog (<< 4.2.0-2ubuntu3~boot1), udev (<< 146-2~boot6), upstart (<< 0.6.3-2~boot4)
+Conflicts: libdevmapper1.02.1 (<< 2:1.02.24-1)
+Conffiles:
+ /etc/init.d/bootlogd 6e90878c898804bf9059f8a304faed5d
+ /etc/init.d/stop-bootlogd e1a190ec1150ff0c1514eb318be9e227
+ /etc/init.d/stop-bootlogd-single 1046585487345dd2d5d4b2841fb4a75b
+ /etc/init.d/halt 6ae1b3b1b8198567a5e32116077f12a2
+ /etc/init.d/killprocs 5e404d35091fab6c4889302736ed4602
+ /etc/init.d/ondemand cc2a79a545967eec1170dc2bb44468e0
+ /etc/init.d/rc.local 2964c1446c6453cdde4213eede97ac38
+ /etc/init.d/reboot 1b9db1ef7bfd79b128ef85d5065721a6
+ /etc/init.d/sendsigs 2a1f251ca12ef06f46a166f9a37e2400
+ /etc/init.d/single dc13cb373c5c098a8fb95424701373e3
+ /etc/init.d/umountfs 842eba3cdd65c66a424f80a53f87d704
+ /etc/init.d/umountnfs.sh b824a44ff24087eb2bf6780db7dfd9dc
+ /etc/init.d/umountroot aa9aa9db438cc99f76b065827971ff42
+ /etc/init.d/urandom d0385e199d51b19181b77dc55211ac02
+ /etc/default/bootlogd 70a108da715299a6e33470eb450669fb
+ /etc/default/devpts fc857c5ac5fb84d80720ed4d1c624f6e
+ /etc/default/halt 18d9844cf8ca8608e2a559a4555e593a
+ /etc/default/tmpfs d959a98cfb571cd7fdfb36bbb3d0a5c8
+Description: scripts for initializing and shutting down the system
+ The scripts in this package initialize a standard Debian
+ GNU/Linux system at boot time and shut it down at halt or
+ reboot time.
+Homepage: http://freshmeat.net/projects/sysvinit/
+Original-Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
+
+Package: libblkid1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 248
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: util-linux
+Version: 2.17.2-0ubuntu1
+Depends: libc6 (>= 2.4), libuuid1 (>= 2.16)
+Conffiles:
+ /etc/blkid.conf 7f4c49e01e0a23d2f4b20eeb32e95abb
+Description: block device id library
+ The blkid library which allows system programs like fsck and
+ mount to quickly and easily find block devices by filesystem UUID and
+ LABEL. This allows system administrators to avoid specifying
+ filesystems by hard-coded device names, but via a logical naming
+ system instead.
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: xinput
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 92
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.5.0-2ubuntu1
+Depends: libc6 (>= 2.4), libx11-6 (>= 2:1.2.99.901), libxext6, libxi6 (>= 2:1.2.99.4)
+Description: Runtime configuration and test of XInput devices
+ Xinput is an utility for configuring and testing XInput
+ devices.
+Original-Maintainer: Julien Cristau <jcristau@debian.org>
+
+Package: libss2
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 120
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: e2fsprogs
+Version: 1.41.11-1ubuntu2
+Replaces: e2fsprogs (<< 1.34-1)
+Depends: libcomerr2, libc6 (>= 2.11)
+Description: command-line interface parsing library
+ This package includes a tool that parses a command table to generate
+ a simple command-line interface parser, the include files needed to
+ compile and use it, and the static libs.
+ .
+ It was originally inspired by the Multics SubSystem library.
+Homepage: http://e2fsprogs.sourceforge.net
+Original-Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+
+Package: findutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 1892
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 4.4.2-1ubuntu1
+Pre-Depends: libc6 (>= 2.7)
+Suggests: mlocate | locate | slocate
+Description: utilities for finding files--find, xargs
+ GNU findutils provides utilities to find files meeting specified
+ criteria and perform various actions on the files which are found.
+ This package contains 'find' and 'xargs'; however, 'locate' has
+ been split off into a separate package.
+Homepage: http://savannah.gnu.org/projects/findutils/
+Original-Maintainer: Andreas Metzler <ametzler@debian.org>
+
+Package: libxft2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 152
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: xft
+Version: 2.1.14-1ubuntu1
+Depends: libc6 (>= 2.4), libfontconfig1 (>= 2.4.0), libfreetype6 (>= 2.3.5), libx11-6, libxrender1
+Description: FreeType-based font drawing library for X
+ Xft provides a client-side font API for X applications, making the FreeType
+ font rasterizer available to X clients. Fontconfig is used for font
+ specification resolution. Where available, the RENDER extension handles
+ glyph drawing; otherwise, the core X protocol is used.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xz-utils
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 476
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 4.999.9beta+20091116-1
+Depends: libc6 (>= 2.7), liblzma1 (>= 4.999.9beta)
+Conflicts: xz-lzma (<< 4.999.9beta+20091004-1)
+Description: XZ-format compression utilities
+ XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm
+ compression format, which provides memory-hungry but powerful
+ compression (often better than bzip2) and fast, easy decompression.
+ .
+ This package provides the command line tools for working with XZ
+ compression, including xz, unxz, xzcat, xzgrep, and so on. They can
+ also handle the older LZMA format, and if invoked via appropriate
+ symlinks will emulate the behavior of the commands in the lzma
+ package.
+ .
+ The XZ format is similar to the older LZMA format but includes some
+ improvements for general use:
+ .
+ * 'file' magic for detecting XZ files;
+ * crc64 data integrity check;
+ * limited random-access reading support;
+ * improved support for multithreading (not used in xz-utils);
+ * support for flushing the encoder.
+Original-Maintainer: Jonathan Nieder <jrnieder@gmail.com>
+Homepage: http://tukaani.org/xz/
+
+Package: xserver-xorg-video-nouveau
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 296
+Maintainer: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:0.0.15+git20100219+9b4118d-0ubuntu5
+Replaces: xserver-xorg (<< 6.8.2-35)
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), libdrm-nouveau1 (>= 2.4.16), xserver-xorg-core (>= 2:1.6.99.900)
+Description: X.Org X server -- Nouveau display driver (experimental)
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for NVIDIA Riva, TNT, GeForce, and Quadro cards.
+ .
+ Although the nouveau project aims to provide full 3D support it is not yet
+ complete, and these packages do not include any 3D support.
+ Users requiring 3D support should use the non-free "nvidia" driver.
+ .
+ This package is built from the FreeDesktop.org xf86-video-nouveau driver.
+Homepage: http://nouveau.freedesktop.org/wiki/
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xfonts-encodings
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 832
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 1:1.0.3-1
+Replaces: xfonts-base (<< 1:1.0.0)
+Depends: x11-common
+Description: Encodings for X.Org fonts
+ This package contains the encodings that map to specific characters.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libx11-6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 1456
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: libx11
+Version: 2:1.3.2-1ubuntu3
+Depends: libc6 (>= 2.4), libxcb1 (>= 1.2), libx11-data
+Conflicts: xlibs-data (<< 1:7.0.0)
+Description: X11 client-side library
+ This package provides a client interface to the X Window System, otherwise
+ known as 'Xlib'. It provides a complete API for the basic functions of the
+ window system.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libX11
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: e2fsprogs
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 2148
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.41.11-1ubuntu2
+Replaces: hurd (<= 20040301-1), libblkid1 (<< 1.38+1.39-WIP-2005.12.10-2), libuuid1 (<< 1.38+1.39-WIP-2005.12.10-2)
+Pre-Depends: e2fslibs (= 1.41.11-1ubuntu2), libblkid1 (>= 1.34-1), libc6 (>= 2.11), libcomerr2 (>= 1.34-1), libss2 (>= 1.34-1), libuuid1 (>= 1.34-1), util-linux (>= 2.15~rc1-1)
+Suggests: gpart, parted, e2fsck-static
+Conflicts: dump (<< 0.4b4-4), initscripts (<< 2.85-4), quota (<< 1.55-8.1), sysvinit (<< 2.85-4)
+Conffiles:
+ /etc/mke2fs.conf 33c2a4bda46c7cee498bb660084492dd
+Description: ext2/ext3/ext4 file system utilities
+ The ext2, ext3 and ext4 file systems are successors of the original ext
+ ("extended") file system. They are the main file system types used for
+ hard disks on Debian and other Linux systems.
+ .
+ This package contains programs for creating, checking, and maintaining
+ ext-based file systems, and the generic fsck wrapper.
+Homepage: http://e2fsprogs.sourceforge.net
+Original-Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+
+Package: libsigc++-2.0-0c2a
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 100
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libsigc++-2.0
+Version: 2.2.4.2-1
+Replaces: libsigc++-1.9-0, libsigc++-2.0-0, libsigc++-2.0-0c2
+Depends: libc6 (>= 2.2.5), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.1.1)
+Conflicts: libsigc++-1.9-0, libsigc++-2.0-0, libsigc++-2.0-0c2
+Description: type-safe Signal Framework for C++ - runtime
+ This library implements a full callback system for use in widget
+ libraries, abstract interfaces, and general programming. It provides
+ the ability to connect an abstract callback to a class method,
+ function, or function object, and contains adaptor classes for the
+ connection of dissimilar callbacks.
+ .
+ These are the runtime files for libsigc++, needed only if you wish to
+ run software which depends on it.
+Original-Maintainer: Daniel Burrows <dburrows@debian.org>
+
+Package: liblzma1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 288
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: xz-utils
+Version: 4.999.9beta+20091116-1
+Depends: libc6 (>= 2.4)
+Description: XZ-format compression library
+ XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm
+ compression format, which provides memory-hungry but powerful
+ compression (often better than bzip2) and fast, easy decompression.
+ .
+ The native format of liblzma is XZ; it also supports raw (headerless)
+ streams and the older LZMA format used by lzma. (For 7-Zip's related
+ format, use the p7zip package instead.)
+Original-Maintainer: Jonathan Nieder <jrnieder@gmail.com>
+Homepage: http://tukaani.org/xz/
+
+Package: libnih1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 252
+Maintainer: Scott James Remnant <scott@ubuntu.com>
+Architecture: amd64
+Source: libnih
+Version: 1.0.1-1
+Depends: libc6 (>> 2.10), libc6 (<< 2.12)
+Description: NIH Utility Library
+ libnih is a light-weight "standard library" of C functions to ease the
+ development of other libraries and applications, especially those
+ normally found in /lib.
+ .
+ This package contains the shared library.
+
+Package: cpp
+Status: install ok installed
+Priority: optional
+Section: interpreters
+Installed-Size: 104
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gcc-defaults (1.93ubuntu1)
+Version: 4:4.4.3-1ubuntu1
+Depends: cpp-4.4 (>= 4.4.3-1)
+Suggests: cpp-doc
+Conflicts: cpp-doc (<< 1:2.95.3)
+Description: The GNU C preprocessor (cpp)
+ The GNU C preprocessor is a macro processor that is used automatically
+ by the GNU C compiler to transform programs before actual compilation.
+ .
+ This package has been separated from gcc for the benefit of those who
+ require the preprocessor but not the compiler.
+ .
+ This is a dependency package providing the default GNU C preprocessor.
+Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+
+Package: libgnutls26
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 1176
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gnutls26
+Version: 2.8.5-2
+Replaces: gnutls0, gnutls0.4, gnutls3
+Depends: libc6 (>= 2.8), libgcrypt11 (>= 1.4.2), libtasn1-3 (>= 1.6-0), zlib1g (>= 1:1.1.4)
+Suggests: gnutls-bin
+Conflicts: gnutls0, gnutls0.4
+Description: the GNU TLS library - runtime library
+ gnutls is a portable library which implements the Transport Layer
+ Security (TLS) 1.0 and Secure Sockets Layer (SSL) 3.0 protocols.
+ .
+ Currently gnutls implements:
+ - the TLS 1.0 and SSL 3.0 protocols, without any US-export
+ controlled algorithms
+ - X509 Public Key Infrastructure (with several limitations).
+ - SRP for TLS authentication.
+ - TLS Extension mechanism
+ .
+ This package contains the runtime libraries.
+Original-Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint@lists.alioth.debian.org>
+Homepage: http://www.gnutls.org/
+
+Package: xserver-xorg-video-mga
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 284
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.4.11.dfsg-2ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-mga
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.7), xserver-xorg-core (>= 2:1.6.99.900)
+Suggests: firmware-linux
+Conflicts: xserver-xorg-driver-mga
+Description: X.Org X server -- MGA display driver
+ This package provides the driver for the Matrox MGA family of chipsets,
+ including Matrox Millennium and Mystique cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-mga driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: insserv
+Status: install ok installed
+Priority: required
+Section: misc
+Installed-Size: 292
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.12.0-14
+Depends: libc6 (>= 2.7)
+Suggests: bootchart
+Breaks: sysv-rc (<< 2.87dsf-3)
+Conffiles:
+ /etc/bash_completion.d/insserv 32975fe14795d6fce1408d5fd22747fd
+ /etc/insserv.conf 9c13a4d5da9cb2c2fa550a30705f041a
+Description: Tool to organize boot sequence using LSB init.d script dependencies
+ The insserv program is used to update the order of symlinks in
+ /etc/rc?.d/ with sysv-rc based on dependencies specified in the
+ scripts themselves using LSB init.d script headers.
+ .
+ This allow each package maintainer to specify their init.d script
+ relation to other scripts and make it possible to detect and reject
+ script dependency loops as well as making sure all scripts start in
+ their intended order.
+ .
+ The program insserv in this package should be used with care and
+ together with the sysv-rc package, as using it incorrectly can lead
+ to an unbootable system.
+Original-Maintainer: Petter Reinholdtsen <pere@debian.org>
+Homepage: http://ftp.suse.com/pub/projects/init/
+
+Package: xserver-xorg-video-i128
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 140
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.3.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-i128
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-i128
+Description: X.Org X server -- i128 display driver
+ This package provides the driver for Number 9 Imagine (I128) video cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-i128 driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: gzip
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 284
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.3.12-9ubuntu1
+Pre-Depends: libc6 (>= 2.4)
+Suggests: less
+Description: GNU compression utilities
+ This package provides the standard GNU file compression utilities, which
+ are also the default compression tools for Debian. They typically operate
+ on files with names ending in '.gz', but can also decompress files ending
+ in '.Z' created with 'compress'.
+Original-Maintainer: Bdale Garbee <bdale@gag.com>
+
+Package: dpkg
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 6728
+Origin: debian
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Bugs: debbugs://bugs.debian.org
+Architecture: amd64
+Version: 1.15.5.6ubuntu4
+Replaces: manpages-de (<= 0.4-3), manpages-pl (<= 20051117-1)
+Pre-Depends: libc6 (>= 2.11), coreutils (>= 5.93-1), lzma
+Suggests: apt
+Breaks: emacs21 (<< 21.4a+1-5.7), emacs21-nox (<< 21.4a+1-5.7), emacs22 (<= 22.2-0ubuntu2), emacs22-gtk (<= 22.2-0ubuntu2), emacs22-nox (<= 22.2-0ubuntu2), jed (<< 1:0.99.18+dfsg.1-13), jed-extra (<= 2.5.3-2), konqueror (<= 4:4.2.96-1), pinfo (<< 0.6.9-3.1), tkinfo (<< 2.8-3.1), xemacs21-support (<< 21.4.22-2), xjed (<< 1:0.99.18+dfsg.1-13)
+Conflicts: apt (<< 0.7.7), aptitude (<< 0.4.7-1), dpkg-dev (<< 1.14.16), dpkg-iasearch (<< 0.11), sysvinit (<< 2.82-1)
+Conffiles:
+ /etc/dpkg/dpkg.cfg f4413ffb515f8f753624ae3bb365b81b
+ /etc/alternatives/README 69c4ba7f08363e998e0f2e244a04f881
+ /etc/cron.daily/dpkg b6b8dc21210ea50db7cc4636f521758f
+ /etc/logrotate.d/dpkg 9e25c8505966b5829785f34a548ae11f
+Description: Debian package management system
+ This package provides the low-level infrastructure for handling the
+ installation and removal of Debian software packages.
+ .
+ For Debian package development tools, install dpkg-dev.
+Homepage: http://wiki.debian.org/Teams/Dpkg
+Original-Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
+
+Package: libpcre3
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 456
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: pcre3
+Version: 7.8-3build1
+Depends: libc6 (>= 2.4)
+Conflicts: libpcre3-dev (<= 4.3-3)
+Description: Perl 5 Compatible Regular Expression Library - runtime files
+ This is a library of functions to support regular expressions whose syntax
+ and semantics are as close as possible to those of the Perl 5 language.
+ .
+ This package contains the runtime libraries.
+Original-Maintainer: Mark Baker <mark@mnb.org.uk>
+
+Package: aptitude
+Status: install ok installed
+Priority: important
+Section: admin
+Installed-Size: 9828
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 0.4.11.11-1ubuntu10
+Depends: libapt-pkg-libc6.10-6-4.8, libc6 (>= 2.4), libcwidget3, libept0 (>= 0.5.30), libgcc1 (>= 1:4.1.1), libncursesw5 (>= 5.6+20071006-3), libsigc++-2.0-0c2a (>= 2.0.2), libstdc++6 (>= 4.4.0), libxapian15, zlib1g (>= 1:1.1.4)
+Recommends: libparse-debianchangelog-perl
+Suggests: aptitude-doc-en | aptitude-doc, tasksel, debtags
+Conffiles:
+ /etc/apt/apt.conf.d/05aptitude 85b39c8f9413a8f29ddcce844d026929
+ /etc/cron.daily/aptitude f934222d5eb13cb132e2751bdb023318
+ /etc/logrotate.d/aptitude fb66bc5dc8c13edbcb83cea15ff86959
+Description: terminal-based package manager
+ aptitude is a terminal-based package manager with a number of useful
+ features, including: a mutt-like syntax for matching packages in a
+ flexible manner, dselect-like persistence of user actions, the
+ ability to retrieve and display the Debian changelog of most
+ packages, and a command-line mode similar to that of apt-get.
+ .
+ aptitude is also Y2K-compliant, non-fattening, naturally cleansing,
+ and housebroken.
+Original-Maintainer: Daniel Burrows <dburrows@debian.org>
+
+Package: libept0
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 528
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libept
+Version: 0.5.30
+Depends: libapt-pkg-libc6.10-6-4.8, libc6 (>= 2.8), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.4.0), libxapian15, zlib1g (>= 1:1.1.4)
+Description: High-level library for managing Debian package information
+ The library defines a very minimal framework in which many sources of data
+ about Debian packages can be implemented and queried together.
+ .
+ The library includes four data sources:
+ .
+ * APT: access the APT database
+ * Debtags: access the Debtags tag information
+ * Popcon: access Popcon package scores
+ * The Xapian index built by apt-xapian-index
+ .
+ This is the shared library.
+Original-Maintainer: Enrico Zini <enrico@debian.org>
+
+Package: libncursesw5
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 556
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: ncurses
+Version: 5.7+20090803-2ubuntu3
+Depends: libc6 (>= 2.4)
+Recommends: libgpm2
+Description: shared libraries for terminal handling (wide character support)
+ This package contains the shared libraries necessary to run programs
+ compiled with ncursesw, which includes support for wide characters.
+Homepage: ftp://invisible-island.net/ncurses/
+Original-Maintainer: Debian QA Group <packages@qa.debian.org>
+
+Package: liblocale-gettext-perl
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 108
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.05-6
+Depends: libc6 (>= 2.2.5)
+Pre-Depends: perl-base (>= 5.10.0-24ubuntu4), perlapi-5.10.0
+Description: Using libc functions for internationalization in Perl
+ The gettext module permits access from perl to the gettext() family of
+ functions for retrieving message strings from databases constructed
+ to internationalize software.
+ .
+ It provides gettext(), dgettext(), dcgettext(), textdomain(),
+ bindtextdomain(), bind_textdomain_codeset(), ngettext(), dcngettext()
+ and dngettext().
+Original-Maintainer: Debian Perl Group <pkg-perl-maintainers@lists.alioth.debian.org>
+Homepage: http://search.cpan.org/dist/gettext/gettext.pm
+
+Package: ubuntu-keyring
+Status: install ok installed
+Priority: important
+Section: misc
+Installed-Size: 60
+Maintainer: Michael Vogt <michael.vogt@canonical.com>
+Architecture: all
+Version: 2010.11.09
+Depends: gnupg (>= 1.0.6-4)
+Description: GnuPG keys of the Ubuntu archive
+ The Ubuntu project digitally signs its Release files. This package
+ contains the archive keys used for that.
+
+Package: xbitmaps
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 476
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 1.1.0-1
+Description: Base X bitmaps
+ This package contains the base X bitmaps, which are used in many legacy X
+ clients.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: busybox-initramfs
+Status: install ok installed
+Priority: required
+Section: shells
+Installed-Size: 344
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: busybox
+Version: 1:1.13.3-1ubuntu11
+Replaces: busybox-cvs-initramfs
+Depends: libc6 (>= 2.11)
+Conflicts: busybox-cvs-initramfs
+Description: Standalone shell setup for initramfs
+ BusyBox combines tiny versions of many common UNIX utilities into a single
+ small executable. It provides minimalist replacements for the most common
+ utilities you would usually find on your desktop system (i.e., ls, cp, mv,
+ mount, tar, etc.). The utilities in BusyBox generally have fewer options than
+ their full-featured GNU cousins; however, the options that are included
+ provide the expected functionality and behave very much like their GNU
+ counterparts.
+ .
+ busybox-initramfs provides a statically linked simple stand alone shell
+ that provides only the basic utilities needed for the initramfs.
+Original-Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
+
+Package: xserver-xorg-video-s3
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 148
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:0.6.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-s3
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-s3
+Description: X.Org X server -- legacy S3 display driver
+ This package provides the driver for certain legacy S3 video card chipsets,
+ including the Trio64 and 96x cards. It does not provide support for
+ ViRGE/Trio3D or Savage chipsets; support for these cards is provided by
+ xserver-xorg-video-s3virge and xserver-xorg-driver-savage, respectively.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-s3 driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: ttf-dejavu-core
+Status: install ok installed
+Priority: optional
+Section: fonts
+Installed-Size: 2564
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: ttf-dejavu
+Version: 2.30-2
+Replaces: ttf-dejavu (<< 2.20-1)
+Conflicts: ttf-dejavu (<< 2.20-1)
+Description: Vera font family derivative with additional characters
+ DejaVu provides an expanded version of the Vera font family aiming for
+ quality and broader Unicode coverage while retaining the original Vera
+ style. DejaVu currently works towards conformance with the Multilingual
+ European Standards (MES-1 and MES-2) for Unicode coverage. The DejaVu
+ fonts provide serif, sans and monospaced variants.
+ .
+ This package only contains the sans, sans-bold, serif, serif-bold,
+ mono and mono-bold variants. For additional variants, see the
+ ttf-dejavu-extra package.
+ .
+ DejaVu fonts are intended for use on low-resolution devices (mainly
+ computer screens) but can be used in printing as well.
+Original-Maintainer: Debian Fonts Task Force <pkg-fonts-devel@lists.alioth.debian.org>
+Homepage: http://dejavu-fonts.org/
+
+Package: xserver-xorg-video-trident
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 244
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.3.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-trident
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.7), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-trident
+Description: X.Org X server -- Trident display driver
+ This package provides the driver for Trident Blade/Image/ProVidia/TGUI/9xxx
+ video cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-trident driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libbz2-1.0
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 128
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: bzip2
+Version: 1.0.5-4
+Depends: libc6 (>= 2.4)
+Description: high-quality block-sorting file compressor library - runtime
+ This package contains libbzip2 which is used by the bzip2 compressor.
+ .
+ bzip2 is a freely available, patent free, high-quality data compressor.
+ It typically compresses files to within 10% to 15% of the best available
+ techniques, whilst being around twice as fast at compression and six
+ times faster at decompression.
+ .
+ bzip2 compresses files using the Burrows-Wheeler block-sorting text
+ compression algorithm, and Huffman coding. Compression is generally
+ considerably better than that achieved by more conventional
+ LZ77/LZ78-based compressors, and approaches the performance of the PPM
+ family of statistical compressors.
+ .
+ The archive file format of bzip2 (.bz2) is incompatible with that of its
+ predecessor, bzip (.bz).
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://www.bzip.org/
+
+Package: xserver-xorg-video-chips
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 232
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.2.2-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-chips
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-chips
+Description: X.Org X server -- Chips display driver
+ This package provides the driver for the Chips & Technologies family
+ of video cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-chips driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-video-intel
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 1688
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 2:2.9.1-3ubuntu5
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-i810, xserver-xorg-video-i810 (<< 2:1.9.91-1), xserver-xorg-video-i810-modesetting, xserver-xorg-video-intel-modesetting
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), libdrm-intel1 (>= 2.4.11), libdrm2 (>= 2.4.3), libpciaccess0 (>= 0.8.0+git20071002), libxext6 (>= 0), libxfixes3 (>= 1:4.0.1), libxv1, libxvmc1, xserver-xorg-core (>= 2:1.6.99.900)
+Recommends: intel-gpu-tools
+Conflicts: 915resolution, xserver-xorg-driver-i810, xserver-xorg-video-i810 (<< 2:1.9.91-1), xserver-xorg-video-i810-modesetting, xserver-xorg-video-intel-modesetting
+Description: X.Org X server -- Intel i8xx, i9xx display driver
+ This package provides the driver for the Intel i8xx and i9xx family
+ of chipsets, including i810, i815, i830, i845, i855, i865, i915, i945
+ and i965 series chips.
+ .
+ This package also provides XvMC (XVideo Motion Compensation) drivers
+ for i810/i815 and i9xx and newer chipsets.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-intel driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-video-mach64
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 388
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 6.8.2-2
+Replaces: xserver-xorg-video-ati (<= 1:6.8.0-1)
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-video-ati (<= 1:6.8.0-1)
+Description: X.Org X server -- ATI Mach64 display driver
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for the ATI Mach64 series.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-mach64 driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: console-terminus
+Status: install ok installed
+Priority: optional
+Section: fonts
+Installed-Size: 784
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: xfonts-terminus
+Version: 4.30-2
+Recommends: kbd | console-tools
+Suggests: console-setup
+Conflicts: console-cyrillic (<= 0.9-11)
+Description: Fixed-width fonts for fast reading on the Linux console
+ This package installs in /usr/share/consolefonts several console
+ variants of the Terminus font. If you have to work for extended time
+ in front of monitor (i.e. over eight hours), you may find that using
+ of these fonts reduces your eyes-fatigue.
+ .
+ The following charsets are supported: western European Latin, central
+ European Latin, Turkish Latin, Romanian Latin, Slavic Cyrillic and
+ Asian Cyrillic (Bashkyr, Kazakh, Mongolian and others).
+Original-Maintainer: Anton Zinoviev <zinoviev@debian.org>
+
+Package: libdrm-intel1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 476
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: libdrm
+Version: 2.4.18-1ubuntu3
+Depends: libc6 (>= 2.3.4), libdrm2 (>= 2.4.1)
+Description: Userspace interface to intel-specific kernel DRM services -- runtime
+ This library implements the userspace interface to the intel-specific kernel
+ DRM services. DRM stands for "Direct Rendering Manager", which is the
+ kernelspace portion of the "Direct Rendering Infrastructure" (DRI). The DRI is
+ currently used on Linux to provide hardware-accelerated OpenGL drivers.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libpciaccess0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 112
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libpciaccess
+Version: 0.11.0-1
+Depends: libc6 (>= 2.7), zlib1g (>= 1:1.1.4)
+Suggests: pciutils
+Description: Generic PCI access library for X
+ Provides functionality for X to access the PCI bus and devices
+ in a platform-independent way.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libc-bin
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 1784
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: eglibc
+Version: 2.11.1-0ubuntu7
+Replaces: libc0.1, libc0.3, libc6, libc6.1
+Breaks: libc0.1 (<< 2.10), libc0.3 (<< 2.10), libc6 (<< 2.10), libc6.1 (<< 2.10)
+Conffiles:
+ /etc/bindresvport.blacklist 154db0e55fa99051ff1bd99e5b2c0584
+ /etc/ld.so.conf.d/libc.conf d4d833fd095fb7b90e1bb4a547f16de6
+ /etc/gai.conf 4b3389be7132a6a8805f3df8d0ff00f6
+Description: Embedded GNU C Library: Binaries
+ This package contains utility programs related to the GNU C Library.
+ .
+ * catchsegv: catch segmentation faults in programs
+ * getconf: query system configuration variables
+ * getent: get entries from administrative databases
+ * iconv, iconvconfig: convert between character encodings
+ * ldd, ldconfig: print/configure shared library dependencies
+ * locale, localedef: show/generate locale definitions
+ * rpcinfo: report RPC information
+ * tzselect, zdump, zic: select/dump/compile time zones
+Homepage: http://www.eglibc.org
+Original-Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+
+Package: libldap-2.4-2
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 496
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: openldap
+Version: 2.4.21-0ubuntu5
+Replaces: libldap-2.3-0, libldap2
+Depends: libc6 (>= 2.4), libgnutls26 (>= 2.7.14-0), libgssapi-krb5-2 (>= 1.7+dfsg), libsasl2-2
+Conflicts: ldap-utils (<= 2.1.23-1)
+Conffiles:
+ /etc/ldap/ldap.conf 7fac807f65d84394410881bc16f1198a
+Description: OpenLDAP libraries
+ These are the run-time libraries for the OpenLDAP (Lightweight Directory
+ Access Protocol) servers and clients.
+Homepage: http://www.openldap.org/
+Original-Maintainer: Debian OpenLDAP Maintainers <pkg-openldap-devel@lists.alioth.debian.org>
+
+Package: sysvinit-utils
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 300
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: sysvinit
+Version: 2.87dsf-4ubuntu17
+Replaces: last, sysvconfig (<< 0.80ubuntu1), sysvinit (<= 2.86.ds1-65), sysvutils (<< 2.86.ds1-56ubuntu1)
+Provides: sysvutils
+Depends: libc6 (>= 2.8), libselinux1 (>= 1.32), libsepol1 (>= 1.14)
+Recommends: upstart (>= 0.6.3-4)
+Suggests: sash
+Conflicts: chkconfig (<< 11.0-79.1-1ubuntu1), last, sysvconfig
+Description: System-V-like utilities
+ This package contains the important System-V-like utilities.
+ .
+ Specifically, this package includes:
+ killall5, last, lastb, mesg, pidof, service, sulogin
+Homepage: http://freshmeat.net/projects/sysvinit/
+Original-Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
+
+Package: xserver-xorg-input-all
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 24
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: xorg
+Version: 1:7.5+5ubuntu1
+Depends: xserver-xorg-input-evdev, xserver-xorg-input-synaptics, xserver-xorg-input-vmmouse, xserver-xorg-input-wacom, x11-common
+Description: the X.Org X server -- input driver metapackage
+ This package depends on the full suite of input drivers for the X.Org X server
+ (Xorg). It does not provide any drivers itself, and may be removed if you wish
+ to only have certain drivers installed.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: fontconfig-config
+Status: install ok installed
+Priority: optional
+Section: fonts
+Installed-Size: 428
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: fontconfig
+Version: 2.8.0-2ubuntu1
+Replaces: fontconfig (<< 2.3.2-2)
+Depends: ucf (>= 0.29), ttf-dejavu-core | ttf-bitstream-vera | ttf-freefont | gsfonts-x11
+Conflicts: fontconfig (<< 2.3.2-2)
+Conffiles:
+ /etc/fonts/fonts.conf 4c841acd3dd065819b23a0fc077d783c
+ /etc/fonts/fonts.dtd 9a099c7722190e00548c0d8375bdc24b
+ /etc/fonts/conf.d/README 296384642206e0c9952d5c73a5451eec
+ /etc/fonts/conf.avail/10-antialias.conf d77e6cfb9608490da012671c25213fe4
+ /etc/fonts/conf.avail/10-autohint.conf 5fe723b1fde478085868af26461bcf58
+ /etc/fonts/conf.avail/10-hinting-full.conf 65b0e8b7e1392797850856d8411d7272
+ /etc/fonts/conf.avail/10-hinting-medium.conf b663214dd84d0f5c4e279b153e0b38f9
+ /etc/fonts/conf.avail/10-hinting-slight.conf 4d7df8529053d526a503b472ee42b2b3
+ /etc/fonts/conf.avail/10-hinting.conf 4d1fb88a99c516270526c8dca5764df8
+ /etc/fonts/conf.avail/10-no-sub-pixel.conf d06c13e792afb20a06528d23e6542459
+ /etc/fonts/conf.avail/10-sub-pixel-bgr.conf cacb7572b778448d592501d03a7f96fd
+ /etc/fonts/conf.avail/10-sub-pixel-rgb.conf 60ef22ca1f56543131eddee764383b46
+ /etc/fonts/conf.avail/10-sub-pixel-vbgr.conf d526b41cd9b4d5e09ab4044a39b4c038
+ /etc/fonts/conf.avail/10-sub-pixel-vrgb.conf a3198f34365f978c1fb5355a92e4ef94
+ /etc/fonts/conf.avail/10-unhinted.conf 7bdecdf76d7bb22cd39e3b18bcbcc28d
+ /etc/fonts/conf.avail/11-lcd-filter-lcddefault.conf 34d7cffd14602241d09f23b0d1a39521
+ /etc/fonts/conf.avail/20-fix-globaladvance.conf fbad2da072b8609477d89a59a167705a
+ /etc/fonts/conf.avail/20-unhint-small-vera.conf b975a96cc427cde633cbdedc4012aa22
+ /etc/fonts/conf.avail/25-unhint-nonlatin.conf 62953912e2a45ea9a1ef4d8a400b2894
+ /etc/fonts/conf.avail/30-metric-aliases.conf 64accc211b62e4fb7da141d8c1c271b3
+ /etc/fonts/conf.avail/30-urw-aliases.conf c6c33cfde9f637e1d2b8cad9353df6dc
+ /etc/fonts/conf.avail/40-nonlatin.conf c78f533d9546bfc3a78f85d96f9eccf7
+ /etc/fonts/conf.avail/45-latin.conf 8d9a57e7891ecc9d6f0806a3e7c204a1
+ /etc/fonts/conf.avail/49-sansserif.conf 22278b0b48e5864d9c7fcbc178da0db3
+ /etc/fonts/conf.avail/50-user.conf 0165add6524289f6eb0461ba0be73be2
+ /etc/fonts/conf.avail/51-local.conf a2fa562c168c2c4cc0c2480bfdc0f8eb
+ /etc/fonts/conf.avail/53-monospace-lcd-filter.conf a6737024098d0bdc74b70846d4b99fe9
+ /etc/fonts/conf.avail/60-latin.conf 2a898e836efee4347362e1e7f09cd0d6
+ /etc/fonts/conf.avail/65-fonts-persian.conf 7df3a06989afcf1ecd9a8f44c9bf5d63
+ /etc/fonts/conf.avail/65-khmer.conf ce66ea0c26f43091ab70092f3f7024d4
+ /etc/fonts/conf.avail/65-nonlatin.conf 12a4cb7a2d642497f73f338abf988235
+ /etc/fonts/conf.avail/69-unifont.conf 49a6cb52e1cf23e0f691807a3e8c105d
+ /etc/fonts/conf.avail/70-no-bitmaps.conf dccfa658875eea3b30514d7a8bc306bc
+ /etc/fonts/conf.avail/70-yes-bitmaps.conf 91c414090c7d8bfe557785fe845cb6bd
+ /etc/fonts/conf.avail/80-delicious.conf 1c0cbfdceb6bc7a55668c11f03b0710b
+ /etc/fonts/conf.avail/90-synthetic.conf 7659edb861f44ff8e9f4e31567d24e47
+ /etc/fonts/conf.avail/70-force-bitmaps.conf 6423e63e204d4ea4629cd3f58636fcdc
+Description: generic font configuration library - configuration
+ Fontconfig is a font configuration and customization library, which
+ does not depend on the X Window System. It is designed to locate
+ fonts within the system and select them according to requirements
+ specified by applications.
+ .
+ This package contains the configuration files and scripts for fontconfig.
+Original-Maintainer: Keith Packard <keithp@debian.org>
+
+Package: libxtst6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 84
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxtst
+Version: 2:1.1.0-2
+Depends: libc6 (>= 2.4), libx11-6, libxext6, libxi6, x11-common
+Description: X11 Testing -- Resource extension library
+ libXtst provides an X Window System client interface to the Record
+ extension to the X protocol.
+ .
+ The Record extension allows X clients to synthesise input events, which
+ is useful for automated testing.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXtst
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-input-mouse
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 160
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.5.0-1
+Replaces: xserver-xorg (<< 6.8.2-35)
+Provides: xserver-xorg-input-7
+Depends: libc6 (>= 2.7), xserver-xorg-core (>= 2:1.6.99.900)
+Description: X.Org X server -- mouse input driver
+ This package provides the driver for mouse input devices.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-input-mouse driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libice6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 156
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libice
+Version: 2:1.0.6-1
+Depends: libc6 (>= 2.4), x11-common
+Description: X11 Inter-Client Exchange library
+ This package provides the main interface to the X11 Inter-Client Exchange
+ library, which allows for communication of data between X clients.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libICE
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libnih-dbus1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 80
+Maintainer: Scott James Remnant <scott@ubuntu.com>
+Architecture: amd64
+Source: libnih
+Version: 1.0.1-1
+Depends: libnih1 (= 1.0.1-1), libc6 (>= 2.3.4), libdbus-1-3 (>= 1.2.16)
+Description: NIH D-Bus Bindings Library
+ libnih-dbus is a D-Bus bindings library that integrates with the main
+ loop provided by libnih.
+ .
+ This package contains the shared library.
+
+Package: libx11-data
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 2500
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: all
+Source: libx11
+Version: 2:1.3.2-1ubuntu3
+Replaces: libx11-6 (<= 2:1.0.0-1)
+Description: X11 client-side library
+ This package provides the locale data files for libx11.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libX11
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libselinux1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 228
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libselinux
+Version: 2.0.89-4
+Depends: libc6 (>= 2.8)
+Description: SELinux runtime shared libraries
+ This package provides the shared libraries for Security-enhanced
+ Linux that provides interfaces (e.g. library functions for the
+ SELinux kernel APIs like getcon(), other support functions like
+ getseuserbyname()) to SELinux-aware applications. Security-enhanced
+ Linux is a patch of the Linux kernel and a number of utilities with
+ enhanced security functionality designed to add mandatory access
+ controls to Linux. The Security-enhanced Linux kernel contains new
+ architectural components originally developed to improve the security
+ of the Flask operating system. These architectural components provide
+ general support for the enforcement of many kinds of mandatory access
+ control policies, including those based on the concepts of Type
+ Enforcement, Role-based Access Control, and Multi-level Security.
+ .
+ libselinux1 provides an API for SELinux applications to get and set
+ process and file security contexts and to obtain security policy
+ decisions. Required for any applications that use the SELinux
+ API. libselinux may use the shared libsepol to manipulate the binary
+ policy if necessary (e.g. to downgrade the policy format to an older
+ version supported by the kernel) when loading policy.
+Original-Maintainer: Manoj Srivastava <srivasta@debian.org>
+
+Package: libc6
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 10208
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: eglibc
+Version: 2.11.1-0ubuntu7
+Replaces: belocs-locales-bin
+Provides: glibc-2.10-1
+Depends: libc-bin (= 2.11.1-0ubuntu7), debconf (>= 0.5) | debconf-2.0, libgcc1, tzdata, findutils (>= 4.4.0-2ubuntu2)
+Suggests: glibc-doc, locales
+Breaks: nscd (<< 2.9)
+Conflicts: belocs-locales-bin, tzdata (<< 2007k-1), tzdata-etch
+Conffiles:
+ /etc/ld.so.conf.d/x86_64-linux-gnu.conf 593ad12389ab2b6f952e7ede67b8fbbf
+Description: Embedded GNU C Library: Shared libraries
+ Contains the standard libraries that are used by nearly all programs on
+ the system. This package includes shared versions of the standard C library
+ and the standard math library, as well as many others.
+Homepage: http://www.eglibc.org
+Original-Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+
+Package: xserver-xorg-video-nv
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 304
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:2.1.15-1ubuntu3
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-nv, xserver-xorg-video-riva128
+Provides: xf86-video-driver-riva128, xserver-xorg-video-6
+Depends: libc6 (>= 2.4), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-nv, xserver-xorg-video-riva128
+Description: X.Org X server -- NV display driver
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for NVIDIA Riva, TNT, GeForce, and Quadro cards.
+ .
+ Note that this is not the same as the binary-only 'nvidia' driver, which
+ adds 3D support, but is binary-only and not supported.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-nv driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libsm6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 92
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libsm
+Version: 2:1.1.1-1
+Depends: libc6 (>= 2.4), libice6 (>= 1:1.0.0), libuuid1 (>= 2.16-1)
+Description: X11 Session Management library
+ This package provides the main interface to the X11 Session Management
+ library, which allows for applications to both manage sessions, and make use
+ of session managers to save and restore their state for later use.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libSM
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libxxf86vm1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 76
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxxf86vm
+Version: 1:1.1.0-2
+Depends: libc6 (>= 2.2.5), libx11-6, libxext6
+Description: X11 XFree86 video mode extension library
+ libXxf86vm provides an interface to the XFree86-VidModeExtension
+ extension, which allows client applications to get and set video mode
+ timings in extensive detail. It is used by the xvidtune program in
+ particular.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXxf86vm
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libpng12-0
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 336
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libpng
+Version: 1.2.42-1ubuntu2
+Replaces: libpng12-dev (<= 1.2.8rel-7)
+Depends: libc6 (>= 2.11), zlib1g (>= 1:1.1.4)
+Conflicts: libpng12-dev (<= 1.2.8rel-7), mzscheme (<= 1:209-5), pngcrush (<= 1.5.10-2), pngmeta (<= 1.11-3), povray-3.5 (<= 3.5.0c-10), qemacs (<= 0.3.1-5)
+Description: PNG library - runtime
+ libpng is a library implementing an interface for reading and writing
+ PNG (Portable Network Graphics) format files.
+ .
+ This package contains the runtime library files needed to run software
+ using libpng.
+Homepage: http://libpng.org/pub/png/libpng.html
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+
+Package: udev
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 1584
+Maintainer: Scott James Remnant <scott@ubuntu.com>
+Architecture: amd64
+Version: 151-12
+Replaces: hotplug, ifrename, initramfs-tools (<< 0.040ubuntu1), udev-extras (<= 20090618)
+Depends: libacl1 (>= 2.2.11-1), libc6 (>= 2.9), libglib2.0-0 (>= 2.16.0), libselinux1 (>= 1.32), libusb-0.1-4 (>= 2:0.1.12), upstart-job, module-init-tools (>= 3.2.1-0ubuntu3), initramfs-tools (>= 0.92bubuntu63), procps, adduser, util-linux (>> 2.15~rc2)
+Suggests: watershed
+Breaks: casper (<< 1.174), consolekit (<= 0.4.1), dmsetup (<= 2:1.02.27-4ubuntu5), initramfs-tools (<< 0.92bubuntu30), lvm2 (<= 2.02.39-0ubuntu9), mdadm (<= 2.6.7.1-1ubuntu8)
+Conflicts: hotplug, ifrename, libdevmapper1.02 (<< 2:1.02.08-1ubuntu7), udev-extras (<= 20090618)
+Conffiles:
+ /etc/udev/rules.d/README 3b6de9f3f911176734c66903b4f8735c
+ /etc/udev/udev.conf 8b024b79a468658332fbf2586737907e
+ /etc/init/udev.conf 57d33a5ba9c438b3be4275e908213535
+ /etc/init/udev-finish.conf 28ebb3ad2d2c6ca545d72f3f0769f448
+ /etc/init/udevtrigger.conf 16f1ef5e6e1a9c589fa6993af7ea9ff5
+ /etc/init/udevmonitor.conf b541dfb5aa4958e9a5336ecaec00ca15
+Description: rule-based device node and kernel event manager
+ udev is a collection of tools and a daemon to manage events received from
+ the kernel and deal with them in user-space. Primarily this involves
+ creating and removing device nodes in /dev when hardware is discovered or
+ removed from the system.
+ .
+ Events are received via kernel netlink messaged and processed according to
+ rules in /etc/udev/rules.d and /lib/udev/rules.d, altering the name of the
+ device node, creating additional symlinks or calling other tools and programs
+ including those to load kernel modules and initialise the device.
+
+Package: libpixman-1-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 504
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: pixman
+Version: 0.16.4-1ubuntu2
+Depends: libc6 (>= 2.4)
+Description: pixel-manipulation library for X and cairo
+ A library for manipulating pixel regions -- a set of Y-X banded
+ rectangles, image compositing using the Porter/Duff model
+ and implicit mask generation for geometric primitives including
+ trapezoids, triangles, and rectangles.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: bash
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: shells
+Installed-Size: 3612
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 4.1-2ubuntu3
+Replaces: bash-completion (<< 20060301-0), bash-doc (<= 2.05-1)
+Depends: base-files (>= 2.1.12), debianutils (>= 2.15)
+Pre-Depends: dash, libc6 (>= 2.11), libncurses5 (>= 5.6+20071006-3)
+Recommends: bash-completion (>= 20060301-0)
+Suggests: bash-doc
+Conflicts: bash-completion (<< 20060301-0)
+Conffiles:
+ /etc/skel/.bashrc 65c464307b8370db7fd43189f237dbd6
+ /etc/skel/.profile ecb6d3479ac3823f1da7f314d871989b
+ /etc/skel/.bash_logout 22bfb8c1dd94b5f3813a2b25da67463f
+ /etc/bash.bashrc 856b64d15f052027a6807413e9035d3f
+Description: The GNU Bourne Again SHell
+ Bash is an sh-compatible command language interpreter that executes
+ commands read from the standard input or from a file. Bash also
+ incorporates useful features from the Korn and C shells (ksh and csh).
+ .
+ Bash is ultimately intended to be a conformant implementation of the
+ IEEE POSIX Shell and Tools specification (IEEE Working Group 1003.2).
+ .
+ The Programmable Completion Code, by Ian Macdonald, is now found in
+ the bash-completion package.
+Homepage: http://tiswww.case.edu/php/chet/bash/bashtop.html
+Original-Maintainer: Matthias Klose <doko@debian.org>
+
+Package: make
+Status: install ok installed
+Priority: standard
+Section: devel
+Installed-Size: 1224
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: make-dfsg
+Version: 3.81-7ubuntu1
+Suggests: make-doc
+Description: An utility for Directing compilation.
+ GNU Make is an utility which controls the generation of executables and
+ other target files of a program from the program's source files. It
+ determines automatically which pieces of a large program need to be
+ (re)created, and issues the commands to (re)create them. Make is not
+ limited to programs and executable, it can be applied to any task
+ where a set of target files must be created based on a set of input
+ files, based on dependency and processing rules. Indeed, Make is a
+ general purpose dependency solver.
+Original-Maintainer: Manoj Srivastava <srivasta@debian.org>
+Homepage: http://www.gnu.org/software/make/
+
+Package: util-linux
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 2344
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 2.17.2-0ubuntu1
+Replaces: e2fsprogs (<= 1.41.8-1ubuntu1), fdisk, linux32, miscutils, schedutils, setterm, sparc-utils
+Provides: linux32, schedutils
+Depends: upstart-job, lsb-base (>= 3.0-6), tzdata (>= 2006c-2), dpkg (>= 1.15.4) | install-info
+Pre-Depends: libblkid1 (>= 2.17), libc6 (>= 2.11), libncurses5 (>= 5.6+20071006-3), libselinux1 (>= 1.32), libslang2 (>= 2.0.7-1), libuuid1 (>= 2.16), zlib1g (>= 1:1.1.4)
+Suggests: util-linux-locales, kbd | console-tools, dosfstools
+Breaks: udev (<< 136-1)
+Conflicts: console-tools (<< 1:0.2.3-21), fdisk, kbd (<< 1.05-3), linux32, schedutils, setterm
+Conffiles:
+ /etc/init/hwclock.conf 132aa3db7e5a8cf55168e4866052208a
+ /etc/init/hwclock-save.conf 4a002046525e338fc23e4418602865c9
+Description: Miscellaneous system utilities
+ This package contains a number of important utilities, most of which
+ are oriented towards maintenance of your system. Some of the more
+ important utilities included in this package allow you to partition
+ your hard disk, view kernel messages, and create new filesystems.
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: libxcursor1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 92
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxcursor
+Version: 1:1.1.10-1
+Depends: libc6 (>= 2.4), libx11-6, libxfixes3 (>= 1:4.0.1), libxrender1
+Description: X cursor management library
+ Xcursor is a simple library designed to help locate and load cursors for the
+ X Window System. Cursors can be loaded from files or memory and can exist in
+ several sizes; the library automatically picks the best size. When using
+ images loaded from files, Xcursor prefers to use the Render extension's
+ CreateCursor request for rendering cursors. Where the Render extension is
+ not supported, Xcursor maps the cursor image to a standard X cursor and uses
+ the core X protocol CreateCursor request.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xfonts-utils
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 528
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:7.5+2
+Replaces: fonttosfnt (<< 1.0.4), xutils (<< 1:1.0.1-1)
+Depends: libc6 (>= 2.8), libfontenc1, libfreetype6 (>= 2.2.1), libxfont1 (>= 1:1.2.9), zlib1g (>= 1:1.1.4), x11-common, xfonts-encodings
+Description: X Window System font utility programs
+ xfonts-utils provides a set of utility programs shipped with the X Window
+ System that are needed for font management.
+ .
+ The programs in this package include:
+ - bdftopcf, which converts BDF fonts to PCF fonts;
+ - bdftruncate and ucs2any, tools to generate fonts with various encodings
+ from ISO 10646-encoded fonts
+ - mkfontdir, a program to generate fonts.dir files;
+ - mkfontscale, a program to generate fonts.scale files;
+ - fonttosfnt, a program to wrap bitmap fonts in a sfnt (TrueType) wrapper.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libfontenc1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 88
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libfontenc
+Version: 1:1.0.5-1
+Depends: libc6 (>= 2.7), zlib1g (>= 1:1.1.4)
+Description: X11 font encoding library
+ libfontenc is a library which helps font libraries portably determine
+ and deal with different encodings of fonts.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libfontenc
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: cpio
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 872
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 2.10-1ubuntu2
+Replaces: cpio-mt
+Depends: libc6 (>= 2.6)
+Conflicts: cpio-mt, mt-st (<< 0.6)
+Description: GNU cpio -- a program to manage archives of files
+ GNU cpio is a tool for creating and extracting archives, or copying
+ files from one place to another. It handles a number of cpio formats
+ as well as reading and writing tar files.
+Original-Maintainer: Clint Adams <schizo@debian.org>
+
+Package: libstdc++6
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 1268
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gcc-4.4
+Version: 4.4.3-4ubuntu5
+Depends: gcc-4.4-base (= 4.4.3-4ubuntu5), libc6 (>= 2.4), libgcc1
+Conflicts: scim (<< 1.4.2-1)
+Description: The GNU Standard C++ Library v3
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+Homepage: http://gcc.gnu.org/
+Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+
+Package: x11-xfs-utils
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 132
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 7.4+1build2
+Replaces: fslsfonts, fstobdf, showfont, xbase-clients (<= 1:7.2.ds2-3), xfsinfo, xutils (<= 1:7.1.ds.3-1)
+Depends: libc6 (>= 2.4), libfs6, libx11-6 (>= 0)
+Pre-Depends: x11-common (>= 1:7.0.0)
+Conflicts: fslsfonts, fstobdf, showfont, xfsinfo
+Description: X font server utilities
+ x11-xfs-utils provides a set of utility programs useful on a system that uses
+ an X font server.
+ .
+ The programs in this package include:
+ - fslsfonts, a tool that lists fonts served by an X font server;
+ - fstobdf, a tool which retrieves a font in BDF format from an X font server;
+ - showfont, a font dumper for use with an X font server;
+ - xfsinfo, an X font server information utility.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: ca-certificates
+Status: install ok installed
+Priority: optional
+Section: misc
+Installed-Size: 736
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 20090814
+Depends: openssl, debconf (>= 0.5) | debconf-2.0
+Enhances: libssl0.9.8, openssl
+Description: Common CA certificates
+ This package includes PEM files of CA certificates to allow SSL-based
+ applications to check for the authenticity of SSL connections.
+ .
+ It includes, among others, certificate authorities used by the Debian
+ infrastructure and those shipped with Mozilla's browsers.
+ .
+ Please note that certificate authorities whose certificates are
+ included in this package are not in any way audited for
+ trustworthiness and RFC 3647 compliance, and that full responsibility
+ to assess them belongs to the local system administrator.
+Original-Maintainer: Philipp Kern <pkern@debian.org>
+
+Package: vim-tiny
+Status: install ok installed
+Priority: important
+Section: editors
+Installed-Size: 840
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: vim
+Version: 2:7.2.330-1ubuntu3
+Replaces: vim-common (<< 1:7.1.293-2)
+Provides: editor
+Depends: vim-common (= 2:7.2.330-1ubuntu3), libc6 (>= 2.11), libncurses5 (>= 5.6+20071006-3), libselinux1 (>= 1.32)
+Suggests: indent
+Conflicts: vim-common (<< 1:7.1.293-2), vim-runtime (<< 1:7.1-056+1)
+Conffiles:
+ /etc/vim/vimrc.tiny 3b4112567ad92c78ccc16c670df381e9
+Description: Vi IMproved - enhanced vi editor - compact version
+ Vim is an almost compatible version of the UNIX editor Vi.
+ .
+ Many new features have been added: multi level undo, syntax
+ highlighting, command line history, on-line help, filename
+ completion, block operations, folding, Unicode support, etc.
+ .
+ This package contains a minimal version of vim compiled with no
+ GUI and a small subset of features in order to keep small the
+ package size. This package does not depend on the vim-runtime
+ package, but installing it you will get its additional benefits
+ (online documentation, plugins, ...).
+Homepage: http://www.vim.org/
+Original-Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
+
+Package: xorg-docs-core
+Status: install ok installed
+Priority: optional
+Section: doc
+Installed-Size: 108
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: xorg-docs
+Version: 1:1.5-1
+Replaces: xorg-docs (<< 1:1.4-5)
+Suggests: xorg-docs
+Description: Core documentation for the X.org X Window System
+ This package contains core documentation for the X.org X Window
+ System. This currently includes only a set of manpages which are
+ standard for the system.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-video-ati
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 320
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:6.13.0-1ubuntu5
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), libpciaccess0 (>= 0), xserver-xorg-core (>= 2:1.6.99.900), xserver-xorg-video-r128, xserver-xorg-video-mach64, xserver-xorg-video-radeon
+Description: X.Org X server -- AMD/ATI display driver wrapper
+ This package provides the 'ati' driver for the AMD/ATI Mach64, Rage128,
+ Radeon, FireGL, FireMV, FirePro and FireStream series. This driver is
+ actually a wrapper that loads one of the 'mach64', 'r128' or 'radeon'
+ sub-drivers depending on the hardware.
+ These sub-drivers are brought through package dependencies.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-ati driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-video-siliconmotion
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 228
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.7.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-siliconmotion
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.7), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-siliconmotion
+Description: X.Org X server -- SiliconMotion display driver
+ This package provides the driver for the SiliconMotion Lynx and Cougar family
+ of chipsets, commonly found in laptops.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-siliconmotion driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: binutils
+Status: install ok installed
+Priority: optional
+Section: devel
+Installed-Size: 10176
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 2.20.1-3ubuntu5
+Replaces: binutils-gold (<< 2.20-5)
+Provides: elf-binutils
+Depends: libc6 (>= 2.11), zlib1g (>= 1:1.1.4)
+Suggests: binutils-doc (>= 2.20.1-3ubuntu5)
+Conflicts: elf-binutils, gas, modutils (<< 2.4.19-1)
+Description: The GNU assembler, linker and binary utilities
+ The programs in this package are used to assemble, link and manipulate
+ binary and object files. They may be used in conjunction with a compiler
+ and various libraries to build programs.
+Original-Maintainer: Matthias Klose <doko@debian.org>
+
+Package: libglib2.0-0
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 2428
+Maintainer: Ubuntu Desktop Team <ubuntu-desktop@lists.ubuntu.com>
+Architecture: amd64
+Source: glib2.0
+Version: 2.24.0-0ubuntu4
+Replaces: libglib2.0-dev (<< 2.23.2-2)
+Depends: libc6 (>= 2.9), libpcre3 (>= 7.7), libselinux1 (>= 1.32), zlib1g (>= 1:1.1.4)
+Recommends: libglib2.0-data, shared-mime-info
+Conflicts: libpango1.0-0 (<< 1.11)
+Description: The GLib library of C routines
+ GLib is a library containing many useful C routines for things such
+ as trees, hashes, lists, and strings. It is a useful general-purpose
+ C library used by projects such as GTK+, GIMP, and GNOME.
+ .
+ This package contains the shared libraries.
+Homepage: http://www.gtk.org/
+Original-Maintainer: Loic Minier <lool@dooz.org>
+
+Package: libgomp1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 96
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gcc-4.4
+Version: 4.4.3-4ubuntu5
+Depends: gcc-4.4-base (= 4.4.3-4ubuntu5), libc6 (>= 2.6)
+Description: GCC OpenMP (GOMP) support library
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran 95 compilers
+ in the GNU Compiler Collection.
+Homepage: http://gcc.gnu.org/
+Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+
+Package: xserver-xorg-video-tseng
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 136
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.2.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-tseng
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-tseng
+Description: X.Org X server -- Tseng display driver
+ This package provides the driver for Tseng Labs cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-tseng driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libtext-charwidth-perl
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 96
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 0.04-6
+Depends: libc6 (>= 2.2.5), perl-base (>= 5.10.0-24ubuntu4), perlapi-5.10.0
+Description: get display widths of characters on the terminal
+ This module permits perl software to get the display widths of characters
+ and strings on the terminal, using wcwidth() and wcswidth() from libc.
+ .
+ It provides mbwidth(), mbswidth(), and mblen().
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://search.cpan.org/search?module=Text::CharWidth
+
+Package: libxt6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 468
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxt
+Version: 1:1.0.7-1
+Depends: libc6 (>= 2.7), libice6 (>= 1:1.0.0), libsm6, libx11-6
+Description: X11 toolkit intrinsics library
+ libXt provides the X Toolkit Intrinsics, an abstract widget library upon
+ which other toolkits are based. Xt is the basis for many toolkits, including
+ the Athena widgets (Xaw), and LessTif (a Motif implementation).
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXt
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: readline-common
+Status: install ok installed
+Priority: important
+Section: utils
+Installed-Size: 132
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: readline6
+Version: 6.1-1
+Replaces: libreadline-common, libreadline4 (<< 4.3-16), libreadline5 (<< 5.0-11)
+Depends: dpkg (>= 1.15.4) | install-info
+Conflicts: libreadline-common, libreadline5 (<< 5.0-11)
+Description: GNU readline and history libraries, common files
+ The GNU readline library aids in the consistency of user interface
+ across discrete programs that need to provide a command line
+ interface.
+ .
+ The GNU history library provides a consistent user interface for
+ recalling lines of previously typed input.
+Original-Maintainer: Matthias Klose <doko@debian.org>
+
+Package: gnupg-curl
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 156
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gnupg
+Version: 1.4.10-2ubuntu1
+Depends: libc6 (>= 2.4), libcurl3-gnutls (>= 7.16.2-1), libldap-2.4-2 (>= 2.4.7), gnupg
+Description: GNU privacy guard - a free PGP replacement (cURL)
+ GnuPG is GNU's tool for secure communication and data storage.
+ It can be used to encrypt data and to create digital signatures.
+ It includes an advanced key management facility and is compliant
+ with the proposed OpenPGP Internet standard as described in RFC2440.
+ .
+ This package contains the keyserver helper tools built with libcurl,
+ which replace the ones in the gnupg package built with the "curl shim"
+ variant of gnupg. This package provides support for HKPS keyservers.
+ .
+ GnuPG does not use any patented algorithms. This means it cannot be
+ compatible with PGP2, because that uses IDEA (which is patented in
+ a number of countries).
+Homepage: http://www.gnupg.org
+Original-Maintainer: Debian GnuPG-Maintainers <pkg-gnupg-maint@lists.alioth.debian.org>
+
+Package: gcc-4.4-base
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 172
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gcc-4.4
+Version: 4.4.3-4ubuntu5
+Description: The GNU Compiler Collection (base package)
+ This package contains files common to all languages and libraries
+ contained in the GNU Compiler Collection (GCC).
+Homepage: http://gcc.gnu.org/
+Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+
+Package: libkrb5-3
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 964
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: krb5
+Version: 1.8.1+dfsg-2
+Replaces: libkrb53 (<< 1.6.dfsg.4~beta1-7)
+Depends: libc6 (>= 2.9), libcomerr2 (>= 1.34), libk5crypto3 (>= 1.8+dfsg), libkeyutils1, libkrb5support0 (= 1.8.1+dfsg-2)
+Suggests: krb5-doc, krb5-user
+Conflicts: libapache-mod-auth-kerb (<= 4.996-5.0-rc6-2), libapache2-mod-auth-kerb (<= 4.996-5.0-rc6-2), ssh-krb5 (<< 3.8.1p1-10)
+Description: MIT Kerberos runtime libraries
+ Kerberos is a system for authenticating users and services on a network.
+ Kerberos is a trusted third-party service. That means that there is a
+ third party (the Kerberos server) that is trusted by all the entities on
+ the network (users and services, usually called "principals").
+ .
+ This is the MIT reference implementation of Kerberos V5.
+ .
+ This package contains the runtime library for the main Kerberos v5 API
+ used by applications and Kerberos clients.
+Original-Maintainer: Sam Hartman <hartmans@debian.org>
+Homepage: http://web.mit.edu/kerberos/
+
+Package: libxau6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 72
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxau
+Version: 1:1.0.5-1
+Depends: libc6 (>= 2.4)
+Description: X11 authorisation library
+ This package provides the main interface to the X11 authorisation handling,
+ which controls authorisation for X connections, both client-side and
+ server-side.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXau
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
diff --git a/test/integration/status-xorg-break-providers b/test/integration/status-xorg-break-providers
new file mode 100644
index 000000000..c6373518f
--- /dev/null
+++ b/test/integration/status-xorg-break-providers
@@ -0,0 +1,22 @@
+Package: xserver-xorg-core
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 4436
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: xorg-server
+Version: 2:1.7.7-8
+Breaks: xserver-xorg-video-5
+Description: Xorg X server - core server
+
+Package: xserver-xorg-video-intel
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 1268
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Version: 2:2.13.0-2
+Provides: xserver-xorg-video-6
+Description: X.Org X server -- Intel i8xx, i9xx display driver
diff --git a/test/integration/test-00-commands-have-help b/test/integration/test-00-commands-have-help
new file mode 100755
index 000000000..2d8fa1105
--- /dev/null
+++ b/test/integration/test-00-commands-have-help
@@ -0,0 +1,88 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+# this test does double duty: The obvious is checking for --help and co,
+# but it also checks if the binary can find all methods in the library.
+# The later is quite handy for manual testing of non-abibreaking changes
+export LD_BIND_NOW=1
+# german variant of klingon used for testing usage of non-existent l10n
+export LC_ALL=tlh_DE.UTF-8
+
+checkversionmessage() {
+ testsuccess grep '^apt .* (' ${1}-help.output
+}
+
+checkhelpmessage() {
+ checkversionmessage "$1"
+ testsuccess grep '^Usage:' ${1}-help.output
+}
+
+checkoptions() {
+ testsuccess $1 --help
+ cp -f rootdir/tmp/testsuccess.output ${1}-help.output
+ checkhelpmessage "$1"
+
+ testsuccess $1 --version
+ cp -f rootdir/tmp/testsuccess.output ${1}-help.output
+ checkversionmessage "$1"
+}
+
+for CMD in 'apt-cache' 'apt-cdrom' 'apt-config' \
+ 'apt-extracttemplates' 'apt-get' 'apt-helper' \
+ 'apt-mark' 'apt-sortpkgs' 'apt' 'apt-ftparchive'; do
+ cmd="$(echo "$CMD" | tr -d '-')"
+ msgtest 'Test for failure with no parameters calling' "$CMD"
+ if $cmd > ${cmd}-help.output 2>&1; then
+ echo
+ cat ${cmd}-help.output
+ msgfail 'zero exit'
+ else
+ msgpass
+ fi
+ checkhelpmessage "$cmd"
+ checkoptions "$cmd"
+done
+
+for CMD in 'apt-dump-solver' 'apt-internal-solver' 'apt-internal-planner'; do
+ checkoptions "$(echo "$CMD" | tr -d '-')"
+done
+
+# in times of need, we all look for super cow to save the day
+testsuccess aptget moo
+testsuccess aptget moo -q=2
+testsuccess aptget moo moo
+testsuccess aptget moo moo -q=2
+testsuccess aptget moo moo --color
+testsuccess aptget moo moo moo
+testsuccess aptget moo moo moo -q=2
+testsuccess aptget moo moo moo moo
+testsuccess aptget moo moo moo moo -q=2
+
+export SOURCE_DATE_EPOCH=moo
+testwarningmsg 'W: Environment variable SOURCE_DATE_EPOCH was ignored as it has an invalid value: "moo"' apt moo
+testmoo() {
+ export SOURCE_DATE_EPOCH="$(date -d "$1" +'%s')"
+ testsuccess aptget moo
+ cp rootdir/tmp/testsuccess.output moo.output
+ testsuccess grep "$2" moo.output
+ testsuccessequal "$2" apt moo -qqq
+ unset SOURCE_DATE_EPOCH
+}
+testmoo '@0' 'Have you mooed today?'
+# the year 0 is too early for 32bit architectures
+testmoo '2000-12-25' 'Happy package management day!'
+testmoo '1930-02-18' "It's a Bird ... It's a Plane ... It's Super Cow!"
+testmoo '1966-11-07' 'Whoever needs milk, bows to the animal.'
+testmoo '1988-03-29' 'Have you mooed today?'
+testmoo '1993-08-16' 'Three moos for Debian!'
+testmoo '1998-04-01' 'Have you smashed some milk today?'
+testmoo '@1484822790' 'Have you mooed today?'
+testmoo '@1484822791' 'Have you mooed today?'
+testmoo '@1484822792' 'Have you mooed today?'
+testmoo '@1484822793' 'Have you mooed today?'
diff --git a/test/integration/test-acquire-binary-all b/test/integration/test-acquire-binary-all
new file mode 100755
index 000000000..ba47eddc2
--- /dev/null
+++ b/test/integration/test-acquire-binary-all
@@ -0,0 +1,142 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'foo-1' 'all' '2' 'unstable'
+buildsimplenativepackage 'foo-2' 'amd64' '2' 'unstable'
+setupaptarchive --no-update
+
+cat >rootdir/etc/apt/apt.conf.d/get-contents <<EOF
+Acquire::IndexTargets::deb::Contents {
+ MetaKey "\$(COMPONENT)/Contents-\$(ARCHITECTURE)";
+ ShortDescription "Contents";
+ Description "\$(RELEASE)/\$(COMPONENT) \$(ARCHITECTURE) Contents";
+ KeepCompressed "true";
+};
+EOF
+cp -a rootdir/etc/apt/sources.list.d rootdir/etc/apt/sources.list.d.bak
+
+msgmsg 'Releasefile with Architectures field and all included'
+testsuccess apt update
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testsuccess grep '^Get.* all Packages ' aptupdate.output
+testsuccess grep '^Get.* all Contents ' aptupdate.output
+testequal 'foo-1
+foo-2' aptcache pkgnames foo-
+
+listcurrentlistsdirectory > lists.before
+testsuccess grep '_binary-all_Packages' lists.before
+testsuccess grep '_Contents-all\.' lists.before
+
+configarchitecture 'amd64' 'i386'
+testsuccessequal "All packages are up to date.
+N: Skipping acquire of configured file 'main/binary-i386/Packages' as repository 'file:$(readlink -f ./aptarchive) unstable InRelease' doesn't support architecture 'i386'" apt update -o quiet::NoProgress=1
+testfileequal lists.before "$(listcurrentlistsdirectory)"
+testequal 'foo-1
+foo-2' aptcache pkgnames foo-
+
+rm -rf rootdir/var/lib/apt/lists
+msgmsg 'Releasefile with Architectures field and all included, but arch-=all'
+sed -i 's#^deb\(-src\)\? #deb\1 [arch-=all] #' rootdir/etc/apt/sources.list.d/*
+testsuccesswithnotice apt update
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testfailure grep '^Get.* all Packages ' aptupdate.output
+testfailure grep '^Get.* all Contents ' aptupdate.output
+testequal 'foo-2' aptcache pkgnames foo-
+
+rm -rf rootdir/var/lib/apt/lists
+msgmsg 'Releasefile has all, but forbids its usage'
+configarchitecture 'amd64'
+sed -i '/^Architectures: / a\
+No-Support-for-Architecture-all: Packages' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testsuccess apt update
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testfailure grep '^Get.* all Packages ' aptupdate.output
+testsuccess grep '^Get.* all Contents ' aptupdate.output
+sed -i '/^No-Support-for-Architecture-all: / d' $(find ./aptarchive -name 'Release')
+
+rm -rf rootdir/var/lib/apt/lists
+msgmsg 'Releasefile has all, forbids its usage, but it is forced with arch=all'
+sed -i 's#^deb\(-src\)\? #deb\1 [arch=all] #' rootdir/etc/apt/sources.list.d/*
+testsuccess apt update
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testsuccess grep '^Get.* all Packages ' aptupdate.output
+testsuccess grep '^Get.* all Contents ' aptupdate.output
+testequal 'foo-1' aptcache pkgnames foo-
+
+rm -rf rootdir/var/lib/apt/lists
+msgmsg 'Releasefile with Architectures field but without all'
+configarchitecture 'amd64' 'i386'
+getarchitecturesfromreleasefile() { echo "$(getarchitectures)"; }
+generatereleasefiles
+signreleasefiles
+testsuccessequal 'All packages are up to date.' apt update -o quiet::NoProgress=1
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testfailure grep '^Get.* all Packages ' aptupdate.output
+testfailure grep '^Get.* all Contents ' aptupdate.output
+testequal 'foo-2' aptcache pkgnames foo-
+
+configarchitecture 'amd64'
+testsuccess apt update
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testfailure grep '^Get.* all Packages ' aptupdate.output
+testfailure grep '^Get.* all Contents ' aptupdate.output
+testequal 'foo-2' aptcache pkgnames foo-
+
+rm -rf rootdir/var/lib/apt/lists
+msgmsg 'Releasefile with Architectures field but without all forced with arch+=all'
+sed -i 's#^deb\(-src\)\? #deb\1 [arch+=all] #' rootdir/etc/apt/sources.list.d/*
+testsuccess apt update
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testsuccess grep '^Get.* all Packages ' aptupdate.output
+testsuccess grep '^Get.* all Contents ' aptupdate.output
+testequal 'foo-1
+foo-2' aptcache pkgnames foo-
+
+rm -rf rootdir/var/lib/apt/lists
+msgmsg 'Releasefile without Architectures field'
+getarchitecturesfromreleasefile() { echo -n ''; }
+generatereleasefiles
+signreleasefiles
+testfailure grep '^Architectures: ' $(find ./aptarchive -name 'Release')
+testsuccess apt update
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testsuccess grep '^Get.* all Packages ' aptupdate.output
+testsuccess grep '^Get.* all Contents ' aptupdate.output
+testequal 'foo-1
+foo-2' aptcache pkgnames foo-
+
+# apt doesn't know supported archs, so missing a configured arch is a failure
+configarchitecture 'amd64' 'i386'
+testfailure apt update
+testequal 'foo-1
+foo-2' aptcache pkgnames foo-
+
+rm -rf rootdir/var/lib/apt/lists
+msgmsg 'Releasefile no Architectures all, but forbids its usage'
+configarchitecture 'amd64'
+sed -i '/^Date: / a\
+No-Support-for-Architecture-all: Packages' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testsuccess apt update
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testfailure grep '^Get.* all Packages ' aptupdate.output
+testsuccess grep '^Get.* all Contents ' aptupdate.output
+sed -i '/^No-Support-for-Architecture-all: / d' $(find ./aptarchive -name 'Release')
+
+msgmsg 'No Releasefile'
+rm -rf rootdir/var/lib/apt/lists
+find aptarchive -name '*Release*' -delete
+configarchitecture 'amd64'
+testfailure apt update
+testwarning apt update --allow-insecure-repositories
+testequal 'foo-1
+foo-2' aptcache pkgnames foo-
diff --git a/test/integration/test-acquire-same-file-multiple-times b/test/integration/test-acquire-same-file-multiple-times
new file mode 100755
index 000000000..a6825b2c2
--- /dev/null
+++ b/test/integration/test-acquire-same-file-multiple-times
@@ -0,0 +1,90 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+TESTFILE="$TESTDIR/framework"
+cp "$TESTFILE" aptarchive/foo
+APTARCHIVE="$(readlink -f ./aptarchive)"
+
+filedown() {
+ msgtest 'Downloading the same URI twice over file' "$1"
+ testsuccess --nomsg apthelper download-file "file:///$APTARCHIVE/foo" './downloaded/foo1' '' \
+ "file:///$APTARCHIVE/foo" './downloaded/foo2' '' -o Debug::pkgAcquire::Worker=1
+ cp rootdir/tmp/testsuccess.output download.log
+ testsuccess cmp "$TESTFILE" ./downloaded/foo1
+ testsuccess cmp ./downloaded/foo1 ./downloaded/foo2
+ testequal '1' grep -c '200%20URI%20Start' ./download.log
+ testequal '1' grep -c '201%20URI%20Done' ./download.log
+ rm -f ./downloaded/foo1 ./downloaded/foo2
+}
+
+testrun() {
+ $1 'no partial'
+ cp "$TESTFILE" ./downloaded/foo1
+ $1 'complete partial 1'
+ cp "$TESTFILE" ./downloaded/foo2
+ $1 'complete partial 2'
+ cp "$TESTFILE" ./downloaded/foo1
+ cp "$TESTFILE" ./downloaded/foo2
+ $1 'complete partial 1+2'
+ dd if="$TESTFILE" of=./downloaded/foo1 bs=500 count=1 2>/dev/null
+ $1 'partial partial 1'
+ dd if="$TESTFILE" of=./downloaded/foo2 bs=500 count=1 2>/dev/null
+ $1 'partial partial 2'
+ dd if="$TESTFILE" of=./downloaded/foo1 bs=500 count=1 2>/dev/null
+ dd if="$TESTFILE" of=./downloaded/foo2 bs=500 count=1 2>/dev/null
+ $1 'partial partial 1+2'
+}
+testrun 'filedown'
+
+changetowebserver -o aptwebserver::redirect::replace::/foo2=/foo
+
+httpdown() {
+ msgtest 'Downloading the same URI to different files' 'twice over http'
+ testsuccess --nomsg apthelper download-file "http://localhost:${APTHTTPPORT}/foo" "./downloaded/foo1" '' \
+ "http://localhost:${APTHTTPPORT}/foo" './downloaded/foo2' '' -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::http=1
+ cp rootdir/tmp/testsuccess.output download.log
+ testsuccess cmp "$TESTDIR/framework" ./downloaded/foo1
+ testsuccess cmp ./downloaded/foo1 ./downloaded/foo2
+ testequal '1' grep -c '200%20URI%20Start' ./download.log
+ testequal '1' grep -c '201%20URI%20Done' ./download.log
+ rm -f ./downloaded/foo1 ./downloaded/foo2
+}
+testrun 'httpdown'
+
+httpredirectdown() {
+ msgtest 'Redirect leads' 'first URI to the second URI'
+ for i in 1 2 3 4 5 6 7 8 9 10; do
+ rm -f ./downloaded/foo1 ./downloaded/foo2
+ testsuccess --nomsg apthelper download-file "http://localhost:${APTHTTPPORT}/foo2" "./downloaded/foo1" '' \
+ "http://localhost:${APTHTTPPORT}/foo" './downloaded/foo2' '' -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::http=1
+ cp rootdir/tmp/testsuccess.output download.log
+ testsuccess cmp "$TESTDIR/framework" ./downloaded/foo1
+ testsuccess cmp ./downloaded/foo1 ./downloaded/foo2
+
+ if grep -q '103%20Redirect' ./download.log; then
+ break
+ fi
+ done
+ testequal '1' grep -c '200%20URI%20Start' ./download.log
+ testequal '1' grep -c '103%20Redirect' ./download.log
+ testequal '1' grep -c '201%20URI%20Done' ./download.log
+ rm -f ./downloaded/foo1 ./downloaded/foo2
+}
+testrun 'httpredirectdown'
+
+httpsamedown() {
+ msgtest 'Downloading two files via the same URI to' 'the same file'
+ testsuccess --nomsg apthelper download-file "http://localhost:${APTHTTPPORT}/foo" "./downloaded/foo1" '' \
+ "http://localhost:${APTHTTPPORT}/foo" './downloaded/foo1' '' -o Debug::pkgAcquire::Worker=1
+ cp rootdir/tmp/testsuccess.output download.log
+ testsuccess cmp "$TESTDIR/framework" ./downloaded/foo1
+ testequal '1' grep -c '200%20URI%20Start' ./download.log
+ testequal '1' grep -c '201%20URI%20Done' ./download.log
+ rm -f ./downloaded/foo1
+}
+testrun 'httpsamedown'
diff --git a/test/integration/test-allow b/test/integration/test-allow
new file mode 100755
index 000000000..2cc57bc1e
--- /dev/null
+++ b/test/integration/test-allow
@@ -0,0 +1,98 @@
+#!/bin/sh
+#
+# Test for --allow-remove-essential and friends replacing --force-yes
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname $0)")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'downgrade' 'all' '1'
+insertinstalledpackage 'downgrade' 'all' '2'
+
+insertpackage 'unstable' 'hold' 'all' '2'
+insertinstalledpackage 'hold' 'all' '1'
+
+insertinstalledpackage 'essential' 'all' '1' 'Essential: yes'
+
+setupaptarchive
+
+testsuccess aptmark hold hold
+
+# Test --allow-remove--essential
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ essential
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ essential
+0 upgraded, 0 newly installed, 1 to remove and 1 not upgraded.
+E: Essential packages were removed and -y was used without --allow-remove-essential.' aptget remove essential -y -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ essential
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ essential
+0 upgraded, 0 newly installed, 1 to remove and 1 not upgraded.
+Remv essential [1]' aptget remove essential -y --allow-remove-essential -s
+
+# Test --allow-change-held-packages (should not influence dist-upgrade, but an install)
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ hold
+0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.' aptget dist-upgrade --allow-change-held-packages -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+The following held packages will be changed:
+ hold
+The following packages will be upgraded:
+ hold
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+E: Held packages were changed and -y was used without --allow-change-held-packages.' aptget install hold -y -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+The following held packages will be changed:
+ hold
+The following packages will be upgraded:
+ hold
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+E: Held packages were changed and -y was used without --allow-change-held-packages.' aptget install hold -y -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following held packages will be changed:
+ hold
+The following packages will be upgraded:
+ hold
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst hold [1] (2 unstable [all])
+Conf hold (2 unstable [all])' aptget install hold -y -s --allow-change-held-packages
+
+# Test --allow-downgrades
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+The following packages will be DOWNGRADED:
+ downgrade
+0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 1 not upgraded.
+E: Packages were downgraded and -y was used without --allow-downgrades.' aptget install downgrade=1 -y -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be DOWNGRADED:
+ downgrade
+0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 1 not upgraded.
+Inst downgrade [2] (1 unstable [all])
+Conf downgrade (1 unstable [all])' aptget install downgrade=1 --allow-downgrades -y -s
diff --git a/test/integration/test-allow-scores-for-all-dependency-types b/test/integration/test-allow-scores-for-all-dependency-types
new file mode 100755
index 000000000..9b300b7a7
--- /dev/null
+++ b/test/integration/test-allow-scores-for-all-dependency-types
@@ -0,0 +1,179 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unversioned' 'libdb-dev' 'amd64' '5.3.0' 'Depends: libdb5.3-dev
+Conflicts: libdb5.1-dev'
+insertpackage 'unversioned' 'libdb5.1-dev' 'amd64' '5.1.29-7'
+insertpackage 'unversioned' 'libdb5.3-dev' 'amd64' '5.3.28-3' 'Conflicts: libdb5.1-dev'
+
+insertpackage 'unversioned' 'foo' 'amd64' '1'
+insertpackage 'unversioned' 'bar' 'amd64' '1'
+insertpackage 'unversioned' 'foo' 'amd64' '2' 'Conflicts: bar'
+insertpackage 'unversioned' 'bar' 'amd64' '2' 'Conflicts: foo'
+insertpackage 'unversioned' 'baz' 'amd64' '2' 'Depends: bar | foo'
+
+insertpackage 'versioned' 'libdb-dev' 'amd64' '5.3.0' 'Depends: libdb5.3-dev
+Conflicts: libdb5.1-dev (<< 5.2)'
+insertpackage 'versioned' 'libdb5.3-dev' 'amd64' '5.3.28-3' 'Conflicts: libdb5.1-dev (<< 5.2)'
+
+insertpackage 'versioned' 'foo' 'amd64' '2' 'Conflicts: bar (<= 2)'
+insertpackage 'versioned' 'bar' 'amd64' '2' 'Conflicts: foo (<= 2)'
+insertpackage 'versioned' 'baz' 'amd64' '2' 'Depends: bar (>= 2) | foo (>= 2)'
+
+insertpackage 'multipleno' 'foo' 'amd64' '2.1' 'Conflicts: bar (<= 3)'
+insertpackage 'multipleno' 'bar' 'amd64' '2.1' 'Conflicts: foo (<= 3), foo (<= 1)'
+
+insertpackage 'multipleyes' 'foo' 'amd64' '2.2' 'Conflicts: bar (<= 3)'
+# having foo multiple times as conflict is a non-advisable hack in general
+insertpackage 'multipleyes' 'bar' 'amd64' '2.2' 'Conflicts: foo (<= 3), foo (<= 3)'
+
+#774924 - slightly simplified
+insertpackage 'jessie' 'login' 'amd64' '2' 'Pre-Depends: libaudit1 (>= 0)'
+insertpackage 'jessie' 'libaudit1' 'amd64' '2' 'Depends: libaudit-common (>= 0)'
+insertpackage 'jessie' 'libaudit-common' 'amd64' '2' 'Breaks: libaudit0, libaudit1 (<< 2)'
+
+cp rootdir/var/lib/dpkg/status rootdir/var/lib/dpkg/status-backup
+setupaptarchive
+
+insertinstalledpackage 'libdb-dev' 'amd64' '5.1.7' 'Depends: libdb5.1-dev'
+insertinstalledpackage 'libdb5.1-dev' 'amd64' '5.1.29-7'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ libdb5.1-dev
+The following NEW packages will be installed:
+ libdb5.3-dev
+The following packages will be upgraded:
+ libdb-dev
+1 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv libdb5.1-dev [5.1.29-7] [libdb-dev:amd64 ]
+Inst libdb-dev [5.1.7] (5.3.0 unversioned [amd64]) []
+Inst libdb5.3-dev (5.3.28-3 unversioned [amd64])
+Conf libdb-dev (5.3.0 unversioned [amd64])
+Conf libdb5.3-dev (5.3.28-3 unversioned [amd64])' aptget dist-upgrade -st unversioned
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ libdb5.1-dev
+The following NEW packages will be installed:
+ libdb5.3-dev
+The following packages will be upgraded:
+ libdb-dev
+1 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv libdb5.1-dev [5.1.29-7] [libdb-dev:amd64 ]
+Inst libdb-dev [5.1.7] (5.3.0 versioned [amd64]) []
+Inst libdb5.3-dev (5.3.28-3 versioned [amd64])
+Conf libdb-dev (5.3.0 versioned [amd64])
+Conf libdb5.3-dev (5.3.28-3 versioned [amd64])' aptget dist-upgrade -st versioned
+
+cp -f rootdir/var/lib/dpkg/status-backup rootdir/var/lib/dpkg/status
+insertinstalledpackage 'foo' 'amd64' '1'
+insertinstalledpackage 'bar' 'amd64' '1'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ bar foo
+0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.' aptget dist-upgrade -st unversioned
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ bar foo
+0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.' aptget dist-upgrade -st versioned
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ bar foo
+0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.' aptget dist-upgrade -st multipleno
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ foo
+The following packages will be upgraded:
+ bar
+1 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv foo [1]
+Inst bar [1] (2.2 multipleyes [amd64])
+Conf bar (2.2 multipleyes [amd64])' aptget dist-upgrade -st multipleyes
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ baz
+0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst baz (2 unversioned [amd64])
+Conf baz (2 unversioned [amd64])' aptget install baz -st unversioned
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following packages will be REMOVED:
+ bar
+The following NEW packages will be installed:
+ baz
+The following packages will be upgraded:
+ foo
+1 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv bar [1]
+Inst foo [1] (2 versioned [amd64])
+Inst baz (2 versioned [amd64])
+Conf foo (2 versioned [amd64])
+Conf baz (2 versioned [amd64])' aptget install baz -st versioned
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ baz
+0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst baz (2 unversioned [amd64])
+Conf baz (2 unversioned [amd64])' aptget install baz -st unversioned
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following packages will be REMOVED:
+ bar
+The following NEW packages will be installed:
+ baz
+The following packages will be upgraded:
+ foo
+1 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv bar [1]
+Inst foo [1] (2 versioned [amd64])
+Inst baz (2 versioned [amd64])
+Conf foo (2 versioned [amd64])
+Conf baz (2 versioned [amd64])' aptget install baz -st versioned
+
+# recreating the exact situation is hard, so we pull tricks to get the score
+cp -f rootdir/var/lib/dpkg/status-backup rootdir/var/lib/dpkg/status
+insertinstalledpackage 'gdm3' 'amd64' '1' 'Depends: libaudit0, libaudit0'
+insertinstalledpackage 'login' 'amd64' '1' 'Essential: yes'
+insertinstalledpackage 'libaudit0' 'amd64' '1'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ gdm3 libaudit0
+The following NEW packages will be installed:
+ libaudit-common libaudit1
+The following packages will be upgraded:
+ login
+1 upgraded, 2 newly installed, 2 to remove and 0 not upgraded.
+Remv gdm3 [1]
+Remv libaudit0 [1]
+Inst libaudit-common (2 jessie [amd64])
+Conf libaudit-common (2 jessie [amd64])
+Inst libaudit1 (2 jessie [amd64])
+Conf libaudit1 (2 jessie [amd64])
+Inst login [1] (2 jessie [amd64])
+Conf login (2 jessie [amd64])' aptget dist-upgrade -st jessie
diff --git a/test/integration/test-apt-acquire-additional-files b/test/integration/test-apt-acquire-additional-files
new file mode 100755
index 000000000..ff04b6346
--- /dev/null
+++ b/test/integration/test-apt-acquire-additional-files
@@ -0,0 +1,229 @@
+#!/bin/sh
+set -e
+# Cause umask failures
+umask 000
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+# note that in --print-uri we talk about .xz because that is the default.
+# This doesn't mean it is actually attempt to download it.
+configcompression '.' 'gz'
+LOWCOSTEXT='lz4'
+
+buildsimplenativepackage 'foo' 'amd64' '1' 'unstable'
+buildsimplenativepackage 'bar' 'all' '1' 'unstable'
+
+setupaptarchive --no-update
+changetowebserver
+
+testequal "'http://localhost:${APTHTTPPORT}/dists/unstable/InRelease' localhost:${APTHTTPPORT}_dists_unstable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_unstable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+testsuccessequal "Get:1 http://localhost:${APTHTTPPORT} unstable InRelease [$(stat -c%s aptarchive/dists/unstable/InRelease) B]
+Get:2 http://localhost:${APTHTTPPORT} unstable/main Sources [$(stat -c%s aptarchive/dists/unstable/main/source/Sources.gz) B]
+Get:3 http://localhost:${APTHTTPPORT} unstable/main amd64 Packages [$(stat -c%s aptarchive/dists/unstable/main/binary-amd64/Packages.gz) B]
+Get:4 http://localhost:${APTHTTPPORT} unstable/main all Packages [$(stat -c%s aptarchive/dists/unstable/main/binary-all/Packages.gz) B]
+Get:5 http://localhost:${APTHTTPPORT} unstable/main Translation-en [$(stat -c%s aptarchive/dists/unstable/main/i18n/Translation-en.gz) B]
+Reading package lists..." aptget update
+
+testempty find rootdir/var/lib/apt/lists -name '*Contents*'
+
+msgmsg "Normal Contents file"
+cat > rootdir/etc/apt/apt.conf.d/content-target.conf <<EOF
+Acquire::IndexTargets::deb::Contents {
+ MetaKey "\$(COMPONENT)/Contents-\$(ARCHITECTURE)";
+ ShortDescription "Contents";
+ Description "\$(RELEASE)/\$(COMPONENT) \$(ARCHITECTURE) Contents";
+};
+EOF
+
+readfile() {
+ while [ -n "$1" ]; do
+ readlink -f "./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_${1}"
+ shift
+ done
+}
+
+testequal "$(readfile Contents-amd64 Contents-all)" aptget indextargets --no-release-info --format '$(FILENAME)' 'Identifier: Contents'
+testempty aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+# lets fake the existence of a compressed Contents file
+touch "./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.gz"
+chmod 644 "./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.gz"
+testequal "$(readfile Contents-amd64.gz)" aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+touch "./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.gz"
+chmod 644 "./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.gz"
+testequal "$(readfile Contents-amd64.gz Contents-all.gz)" aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+
+testequal "'http://localhost:${APTHTTPPORT}/dists/unstable/InRelease' localhost:${APTHTTPPORT}_dists_unstable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_unstable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-en 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/Contents-amd64.xz' localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/Contents-all.xz' localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all 0 " aptget update --print-uris
+
+# apt believes the Contents files we faked are good
+testsuccessequal "Hit:1 http://localhost:${APTHTTPPORT} unstable InRelease
+Reading package lists..." aptget update
+testequal "$(readfile Contents-amd64.gz Contents-all.gz)" aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+
+find rootdir/var/lib/apt/lists -name '*Contents*' -delete
+
+testequal "'http://localhost:${APTHTTPPORT}/dists/unstable/InRelease' localhost:${APTHTTPPORT}_dists_unstable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_unstable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-en 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/Contents-amd64.xz' localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/Contents-all.xz' localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all 0 " aptget update --print-uris
+
+testsuccessequal "Hit:1 http://localhost:${APTHTTPPORT} unstable InRelease
+Get:2 http://localhost:${APTHTTPPORT} unstable/main amd64 Contents [$(stat -c%s aptarchive/dists/unstable/main/Contents-amd64.gz) B]
+Get:3 http://localhost:${APTHTTPPORT} unstable/main all Contents [$(stat -c%s aptarchive/dists/unstable/main/Contents-all.gz) B]
+Reading package lists..." aptget update
+
+testequal "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64" find rootdir/var/lib/apt/lists -name '*Contents-amd64*'
+testequal "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all" find rootdir/var/lib/apt/lists -name '*Contents-all*'
+testequal "$(readfile Contents-amd64 Contents-all)" aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+testsuccess cmp "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64" 'aptarchive/dists/unstable/main/Contents-amd64'
+testsuccess cmp "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all" 'aptarchive/dists/unstable/main/Contents-all'
+
+rm ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64 \
+ ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all
+testempty aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+
+# if we asked for keeping it compressed, keep it
+msgmsg "Normal Contents file with KeepCompressed"
+echo 'Acquire::IndexTargets::deb::Contents::KeepCompressed "true";' >> rootdir/etc/apt/apt.conf.d/content-target.conf
+testsuccessequal "Hit:1 http://localhost:${APTHTTPPORT} unstable InRelease
+Get:2 http://localhost:${APTHTTPPORT} unstable/main amd64 Contents [$(stat -c%s aptarchive/dists/unstable/main/Contents-amd64.gz) B]
+Get:3 http://localhost:${APTHTTPPORT} unstable/main all Contents [$(stat -c%s aptarchive/dists/unstable/main/Contents-all.gz) B]
+Reading package lists..." aptget update
+
+testequal "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.$LOWCOSTEXT" find rootdir/var/lib/apt/lists -name '*Contents-amd64*'
+testequal "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.$LOWCOSTEXT" find rootdir/var/lib/apt/lists -name '*Contents-all*'
+testequal "$(readfile Contents-amd64.$LOWCOSTEXT Contents-all.$LOWCOSTEXT)" aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+testequal "$(apthelper cat-file rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.$LOWCOSTEXT)" apthelper cat-file 'aptarchive/dists/unstable/main/Contents-amd64.gz'
+testequal "$(apthelper cat-file rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.$LOWCOSTEXT)" apthelper cat-file 'aptarchive/dists/unstable/main/Contents-all.gz'
+
+rm ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.$LOWCOSTEXT
+rm ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.$LOWCOSTEXT
+testempty aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+
+msgmsg "Compressed Contents file"
+# and no automatic uncompress based on the name please,
+# only if we downloaded a compressed file, but target was uncompressed
+cat > rootdir/etc/apt/apt.conf.d/content-target.conf <<EOF
+Acquire::IndexTargets::deb::Contents {
+ MetaKey "\$(COMPONENT)/Contents-\$(ARCHITECTURE).gz";
+ ShortDescription "Contents.gz";
+ Description "\$(RELEASE)/\$(COMPONENT) \$(ARCHITECTURE) Contents.gz";
+};
+EOF
+
+runthistest() {
+ # the last lines are utter bogus of course, but how should apt know…
+ testequal "'http://localhost:${APTHTTPPORT}/dists/unstable/InRelease' localhost:${APTHTTPPORT}_dists_unstable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_unstable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-en 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/Contents-amd64.gz.xz' localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.gz 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/Contents-all.gz.xz' localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.gz 0 " aptget update --print-uris
+
+ testsuccessequal "Hit:1 http://localhost:${APTHTTPPORT} unstable InRelease
+Get:2 http://localhost:${APTHTTPPORT} unstable/main amd64 Contents.gz [$(stat -c%s aptarchive/dists/unstable/main/Contents-amd64.gz) B]
+Get:3 http://localhost:${APTHTTPPORT} unstable/main all Contents.gz [$(stat -c%s aptarchive/dists/unstable/main/Contents-all.gz) B]
+Reading package lists..." aptget update
+
+ testequal "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.gz" find rootdir/var/lib/apt/lists -name '*Contents-amd64*'
+ testequal "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.gz" find rootdir/var/lib/apt/lists -name '*Contents-all*'
+ testequal "$(readfile Contents-amd64.gz Contents-all.gz)" aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+ testsuccess cmp "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.gz" 'aptarchive/dists/unstable/main/Contents-amd64.gz'
+ testsuccess cmp "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.gz" 'aptarchive/dists/unstable/main/Contents-all.gz'
+}
+runthistest
+
+msgmsg "Compressed Contents file from native architecture"
+echo 'Acquire::IndexTargets::deb::Contents::MetaKey "$(COMPONENT)/Contents-$(NATIVE_ARCHITECTURE).gz";' >> rootdir/etc/apt/apt.conf.d/content-target.conf
+rm ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.gz
+rm ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.gz
+testempty aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+runthistest
+
+msgmsg "Contents with 3 MetaKeys, first match"
+rm ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.gz
+rm ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.gz
+testempty aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+cat > rootdir/etc/apt/apt.conf.d/content-target.conf <<EOF
+Acquire::IndexTargets::deb::Contents3 {
+ MetaKey "main/Contents-all";
+ ShortDescription "Contents3";
+ Description "\$(RELEASE) all Contents3";
+ Fallback-Of "Contents2";
+ Identifier "Contents";
+};
+Acquire::IndexTargets::deb::Contents {
+ MetaKey "\$(COMPONENT)/Contents-amd64";
+ ShortDescription "Contents";
+ Description "\$(RELEASE)/\$(COMPONENT) amd64 Contents";
+};
+Acquire::IndexTargets::deb::Contents2 {
+ MetaKey "Contents-all";
+ ShortDescription "Contents2";
+ Description "\$(RELEASE) all Contents2";
+ Fallback-Of "Contents";
+ Identifier "Contents";
+};
+EOF
+testequal "'http://localhost:${APTHTTPPORT}/dists/unstable/InRelease' localhost:${APTHTTPPORT}_dists_unstable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_unstable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-en 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/Contents-amd64.xz' localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64 0 " aptget update --print-uris
+testsuccessequal "Hit:1 http://localhost:${APTHTTPPORT} unstable InRelease
+Get:2 http://localhost:${APTHTTPPORT} unstable/main amd64 Contents [$(stat -c%s aptarchive/dists/unstable/main/Contents-amd64.gz) B]
+Reading package lists..." aptget update
+testequal "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64" find rootdir/var/lib/apt/lists -name '*Contents*'
+testequal "$(readfile Contents-amd64)" aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+testsuccess cmp "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64" 'aptarchive/dists/unstable/main/Contents-amd64'
+
+msgmsg "Contents with 3 MetaKeys, third match"
+rm ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64
+testempty aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+echo 'Acquire::IndexTargets::deb::Contents::MetaKey "$(COMPONENT)/Contents-i386";' >> rootdir/etc/apt/apt.conf.d/content-target.conf
+testequal "'http://localhost:${APTHTTPPORT}/dists/unstable/InRelease' localhost:${APTHTTPPORT}_dists_unstable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_unstable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-en 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/Contents-i386.xz' localhost:${APTHTTPPORT}_dists_unstable_main_Contents-i386 0 " aptget update --print-uris
+testsuccessequal "Hit:1 http://localhost:${APTHTTPPORT} unstable InRelease
+Get:2 http://localhost:${APTHTTPPORT} unstable all Contents3 [$(stat -c%s aptarchive/dists/unstable/main/Contents-all.gz) B]
+Reading package lists..." aptget update
+testequal "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all" find rootdir/var/lib/apt/lists -name '*Contents*'
+testequal "$(readfile Contents-all)" aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+testsuccess cmp "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all" 'aptarchive/dists/unstable/main/Contents-all'
+
+rm ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all
+rm -f rootdir/etc/apt/apt.conf.d/content-target.conf
+msgmsg "No Contents file"
+
+testequal "'http://localhost:${APTHTTPPORT}/dists/unstable/InRelease' localhost:${APTHTTPPORT}_dists_unstable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_unstable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+testsuccessequal "Hit:1 http://localhost:${APTHTTPPORT} unstable InRelease
+Reading package lists..." aptget update
+
+testempty find rootdir/var/lib/apt/lists -name '*Contents*'
diff --git a/test/integration/test-apt-acquire-additional-files-duplicates b/test/integration/test-apt-acquire-additional-files-duplicates
new file mode 100755
index 000000000..b0b6460fe
--- /dev/null
+++ b/test/integration/test-apt-acquire-additional-files-duplicates
@@ -0,0 +1,105 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+cat > rootdir/etc/apt/apt.conf.d/content-target.conf <<EOF
+Acquire::IndexTargets::deb::Contents1 {
+ MetaKey "\$(COMPONENT)/Contents-\$(ARCHITECTURE)";
+ ShortDescription "Contents";
+ Description "\$(RELEASE) Contents";
+ DefaultEnabled "false";
+};
+Acquire::IndexTargets::deb::Contents2 {
+ MetaKey "\$(COMPONENT)/Contents-\$(ARCHITECTURE)";
+ ShortDescription "Contents";
+ Description "\$(RELEASE) Contents";
+ DefaultEnabled "false";
+};
+Acquire::IndexTargets::deb::Contentsflat {
+ MetaKey "Contents-\$(ARCHITECTURE)";
+ ShortDescription "Contents";
+ Description "\$(RELEASE) Contents";
+ DefaultEnabled "false";
+};
+EOF
+
+mkdir -p ./rootdir/var/lib/apt/lists
+APTLISTS="$(readlink -f ./rootdir/var/lib/apt/lists)"
+APTETC="$(readlink -f ./rootdir/etc/apt)"
+cat > rootdir/etc/apt/sources.list <<EOF
+deb http://example.org/debian stable main rocks
+deb-src http://example.org/debian stable main rocks
+EOF
+testsuccessequal "${APTLISTS}/example.org_debian_dists_stable_main_source_Sources
+${APTLISTS}/example.org_debian_dists_stable_rocks_source_Sources
+${APTLISTS}/example.org_debian_dists_stable_main_binary-amd64_Packages
+${APTLISTS}/example.org_debian_dists_stable_main_binary-i386_Packages
+${APTLISTS}/example.org_debian_dists_stable_main_binary-all_Packages
+${APTLISTS}/example.org_debian_dists_stable_main_i18n_Translation-en
+${APTLISTS}/example.org_debian_dists_stable_rocks_binary-amd64_Packages
+${APTLISTS}/example.org_debian_dists_stable_rocks_binary-i386_Packages
+${APTLISTS}/example.org_debian_dists_stable_rocks_binary-all_Packages
+${APTLISTS}/example.org_debian_dists_stable_rocks_i18n_Translation-en" aptget indextargets --no-release-info --format '$(FILENAME)'
+
+cat >> rootdir/etc/apt/sources.list <<EOF
+deb http://example.org/debian stable main rocks
+EOF
+rm -r rootdir/var/cache/apt/*.bin
+testwarning aptcache gencaches
+testwarningequal "${APTLISTS}/example.org_debian_dists_stable_main_source_Sources
+${APTLISTS}/example.org_debian_dists_stable_rocks_source_Sources
+${APTLISTS}/example.org_debian_dists_stable_main_binary-amd64_Packages
+${APTLISTS}/example.org_debian_dists_stable_main_binary-i386_Packages
+${APTLISTS}/example.org_debian_dists_stable_main_binary-all_Packages
+${APTLISTS}/example.org_debian_dists_stable_main_i18n_Translation-en
+${APTLISTS}/example.org_debian_dists_stable_rocks_binary-amd64_Packages
+${APTLISTS}/example.org_debian_dists_stable_rocks_binary-i386_Packages
+${APTLISTS}/example.org_debian_dists_stable_rocks_binary-all_Packages
+${APTLISTS}/example.org_debian_dists_stable_rocks_i18n_Translation-en
+W: Target Packages (main/binary-amd64/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (main/binary-i386/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (main/binary-all/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Translations (main/i18n/Translation-en) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (rocks/binary-amd64/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (rocks/binary-i386/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (rocks/binary-all/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Translations (rocks/i18n/Translation-en) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3" aptget indextargets --no-release-info --format '$(FILENAME)'
+
+cat >> rootdir/etc/apt/sources.list <<EOF
+deb [target=Contents1,Contents2,Contentsflat arch=amd64] http://example.org/debian stable main rocks
+deb-src [target=Contents1,Contents2,Contentsflat arch=amd64] http://example.org/debian stable main rocks
+EOF
+rm -r rootdir/var/cache/apt/*.bin
+testwarning aptcache gencaches
+testwarningequal "${APTLISTS}/example.org_debian_dists_stable_main_source_Sources
+${APTLISTS}/example.org_debian_dists_stable_rocks_source_Sources
+${APTLISTS}/example.org_debian_dists_stable_main_binary-amd64_Packages
+${APTLISTS}/example.org_debian_dists_stable_main_binary-i386_Packages
+${APTLISTS}/example.org_debian_dists_stable_main_binary-all_Packages
+${APTLISTS}/example.org_debian_dists_stable_main_i18n_Translation-en
+${APTLISTS}/example.org_debian_dists_stable_rocks_binary-amd64_Packages
+${APTLISTS}/example.org_debian_dists_stable_rocks_binary-i386_Packages
+${APTLISTS}/example.org_debian_dists_stable_rocks_binary-all_Packages
+${APTLISTS}/example.org_debian_dists_stable_rocks_i18n_Translation-en
+${APTLISTS}/example.org_debian_dists_stable_main_Contents-amd64
+${APTLISTS}/example.org_debian_dists_stable_main_Contents-all
+${APTLISTS}/example.org_debian_dists_stable_Contents-amd64
+${APTLISTS}/example.org_debian_dists_stable_Contents-all
+${APTLISTS}/example.org_debian_dists_stable_rocks_Contents-amd64
+${APTLISTS}/example.org_debian_dists_stable_rocks_Contents-all
+W: Target Packages (main/binary-amd64/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (main/binary-i386/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (main/binary-all/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Translations (main/i18n/Translation-en) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (rocks/binary-amd64/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (rocks/binary-i386/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (rocks/binary-all/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Translations (rocks/i18n/Translation-en) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Contents2 wants to acquire the same file (main/Contents-amd64) as Contents1 from source ${APTETC}/sources.list:4
+W: Target Contents2 wants to acquire the same file (main/Contents-all) as Contents1 from source ${APTETC}/sources.list:4
+W: Target Contents2 wants to acquire the same file (rocks/Contents-amd64) as Contents1 from source ${APTETC}/sources.list:4
+W: Target Contents2 wants to acquire the same file (rocks/Contents-all) as Contents1 from source ${APTETC}/sources.list:4" aptget indextargets --no-release-info --format '$(FILENAME)'
diff --git a/test/integration/test-apt-by-hash-update b/test/integration/test-apt-by-hash-update
new file mode 100755
index 000000000..9701f97f9
--- /dev/null
+++ b/test/integration/test-apt-by-hash-update
@@ -0,0 +1,79 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+confighashes 'SHA512'
+configcompression '.' 'gz'
+
+insertpackage 'unstable' 'foo' 'all' '1.0'
+insertpackage 'unstable' 'bar' 'i386' '1.0'
+
+setupaptarchive --no-update
+
+# make Packages *only* accessible by-hash for this test
+makebyhashonly() {
+ local NORMAL="$(readlink -f "./aptarchive/dists/unstable/main/${1}")"
+ local BYHASH="${NORMAL}/by-hash/SHA512"
+ mkdir -p "${BYHASH}"
+ find "${NORMAL}/" -maxdepth 1 -name "${2}*" -exec mv '{}' "$BYHASH" \;
+ ln -s "${BYHASH}/${2}.gz" "${BYHASH}/$(sha512sum "${BYHASH}/${2}.gz" | cut -f1 -d' ')"
+}
+makebyhashonly 'binary-i386' 'Packages'
+makebyhashonly 'binary-all' 'Packages'
+makebyhashonly 'source' 'Sources'
+
+ensureitsbroken() {
+ rm -rf rootdir/var/lib/apt/lists
+ # we moved the Packages file away, normal update won't work
+ testfailure aptget update "$@"
+ # ensure we do not know about "foo"
+ testfailureequal "Reading package lists...
+Building dependency tree...
+E: Unable to locate package foo" aptget install -q -s foo
+}
+ensureitsbroken
+ensureitsbroken -o Acquire::By-Hash=1
+
+ensureitworks() {
+ rm -rf rootdir/var/lib/apt/lists
+ testsuccess aptget update "$@" -o Acquire::Languages=none
+ testfailure grep '^Ign' rootdir/tmp/testsuccess.output
+ rm -rf rootdir/var/lib/apt/lists
+ testsuccess aptget update "$@"
+ cp -f rootdir/tmp/testsuccess.output rootdir/tmp/aptupdate.output
+ testsuccess grep '^Ign' rootdir/tmp/aptupdate.output
+ testsuccessequal "Inst foo (1.0 unstable [all])
+Conf foo (1.0 unstable [all])" aptget install -qq -s foo
+ testsuccessequal "Inst bar (1.0 unstable [i386])
+Conf bar (1.0 unstable [i386])" aptget install -qq -s bar
+}
+msgmsg 'Test by-hash via' 'config option'
+ensureitworks -o Acquire::By-Hash=force
+
+msgmsg 'Test by-hash via' 'release option'
+cp -a aptarchive/dists aptarchive/dists.bak
+# add magic string to Release file ...
+sed -i '/^Suite: / a \
+Acquire-By-Hash: yes' aptarchive/dists/unstable/Release
+signreleasefiles
+ensureitworks
+ensureitsbroken -o Acquire::By-Hash=0
+
+msgmsg 'Test by-hash via' 'sources option'
+sed -i "s#^\(deb\(-src\)\?\) #\1 [by-hash=yes] #" rootdir/etc/apt/sources.list.d/*
+ensureitworks
+#ensureitsbroken -o Acquire::By-Hash=0
+
+rm -rf aptarchive/dists
+cp -a aptarchive/dists.bak aptarchive/dists
+#ensureitworks -o Acquire::By-Hash=force
+ensureitsbroken -o Acquire::By-Hash=1
+ensureitsbroken -o Acquire::By-Hash=0
+
+sed -i "s#^\(deb\(-src\)\?\) \[by-hash=yes\] #\1 [by-hash=force] #" rootdir/etc/apt/sources.list.d/*
+ensureitworks
+#ensureitsbroken -o Acquire::By-Hash=0
diff --git a/test/integration/test-apt-cache b/test/integration/test-apt-cache
new file mode 100755
index 000000000..bff1667e8
--- /dev/null
+++ b/test/integration/test-apt-cache
@@ -0,0 +1,183 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+DESCR='Some description
+ That has multiple lines'
+insertpackage 'unstable' 'fancy' 'all' '1'
+insertpackage 'unstable,installed' 'foo' 'all' '1' 'Depends: bar
+Conflicts: foobar
+Recommends: cool (>= 2) | cooler (<< 5)' "$DESCR"
+insertpackage 'unstable' 'bar' 'all' '1' 'Depends: bar
+Breaks: foo (<< 1)
+Replaces: foo (<< 1)' "$DESCR"
+insertpackage 'unstable' 'specific' 'all' '1' 'Depends: bar:i386, specific:amd64
+Breaks: foo:amd64 (<< 1)
+Replaces: foo:i386 (<< 1)' "$DESCR"
+
+setupaptarchive
+
+# dpkg is installed by our framework
+testdpkginstalled 'dpkg'
+testempty aptcache unmet dpkg
+
+# FIXME: Find some usecase for unmet as it seems kinda useless/broken
+#testsuccess aptcache unmet
+#testsuccess aptcache unmet foo
+
+# not too useful to test, but makes coverage green…
+testsuccess aptcache stats
+cp rootdir/tmp/testsuccess.output stats.output
+testsuccess test -s stats.output
+testfailureequal 'E: apt-cache stats does not take any arguments' aptcache stats foo
+testsuccess aptcache xvcg foo
+cp rootdir/tmp/testsuccess.output xvcg.output
+testsuccess test -s xvcg.output
+testsuccess aptcache dotty foo
+cp rootdir/tmp/testsuccess.output dotty.output
+testsuccess test -s dotty.output
+# for this, even the sourcecode says it is useless (expect debugging)
+testsuccess aptcache dump
+cp rootdir/tmp/testsuccess.output dump.output
+testsuccess test -s dump.output
+
+testsuccessequal 'bar
+foo
+dpkg
+specific
+fancy' aptcache pkgnames
+testsuccessequal 'bar' aptcache pkgnames bar
+testsuccessequal 'foo
+fancy' aptcache pkgnames f
+
+testsuccessequal " foo | 1 | file:$(readlink -f .)/aptarchive unstable/main all Packages" aptcache madison foo
+
+### depends
+
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>
+ |Recommends: <cool>
+ Recommends: <cooler>' aptcache depends foo
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>
+ |Recommends: <cool>
+ Recommends: <cooler>' aptcache depends foo --implicit
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>
+ Recommends: <cool>' aptcache depends foo -o APT::Cache::ShowOnlyFirstOr=1
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>
+ Recommends: <cool>' aptcache depends foo -o APT::Cache::ShowOnlyFirstOr=1 --implicit
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>
+ |Recommends: <cool> (>= 2)
+ Recommends: <cooler> (<< 5)' aptcache depends foo -o APT::Cache::ShowVersion=1
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>
+ |Recommends: <cool> (>= 2)
+ Recommends: <cooler> (<< 5)' aptcache depends foo -o APT::Cache::ShowVersion=1 --implicit
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>' aptcache depends foo --no-recommends
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>' aptcache depends foo --no-recommends --implicit
+testsuccessequal 'foo
+ Depends: bar' aptcache depends foo --important --implicit
+testsuccessequal 'foo
+ Conflicts: <foobar>' aptcache depends foo --important --no-depends --conflicts
+testsuccessequal 'foo
+ Conflicts: <foobar>' aptcache depends foo --important --no-depends --conflicts --implicit
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>
+ |Recommends: <cool>
+ Recommends: <cooler>
+bar
+ Depends: bar
+ Breaks: foo
+ Replaces: foo
+<foobar>
+<cool>
+<cooler>' aptcache depends foo --recurse
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>
+ |Recommends: <cool>
+ Recommends: <cooler>
+bar
+ Depends: bar
+ Breaks: foo
+ Replaces: foo
+ Breaks: <foo:i386>
+ Replaces: <foo:i386>
+<foobar>
+<cool>
+<cooler>
+<foo:i386>' aptcache depends foo --recurse --implicit
+testsuccessequal 'foo
+ Depends: bar
+bar
+ Depends: bar
+ Replaces: foo' aptcache depends foo --recurse --important --replaces
+testsuccessequal 'foo
+ Depends: bar
+bar
+ Depends: bar
+ Replaces: foo
+ Replaces: <foo:i386>
+<foo:i386>' aptcache depends foo --recurse --important --replaces --implicit
+testsuccessequal 'bar
+ Depends: bar
+ Breaks: foo
+ Replaces: foo' aptcache depends bar
+testsuccessequal 'bar
+ Depends: bar
+ Breaks: foo
+ Replaces: foo
+ Breaks: <foo:i386>
+ Replaces: <foo:i386>' aptcache depends bar --implicit
+
+testsuccessequal 'specific
+ Depends: <bar:i386>
+ Depends: <specific:amd64>
+ specific
+ Breaks: <foo:amd64>
+ Replaces: <foo:i386>' aptcache depends specific
+testsuccessequal 'specific
+ Depends: <bar:i386>
+ Depends: <specific:amd64>
+ specific
+ Breaks: <foo:amd64>
+ Replaces: <foo:i386>' aptcache depends specific --implicit
+
+## rdepends
+
+# Note that specific does not appear in this list as it doesn't depend on foo,
+# but on an arch-specific foo!
+testsuccessequal 'foo
+Reverse Depends:
+ bar
+ bar' aptcache rdepends foo
+testsuccessequal 'foo
+Reverse Depends:
+ Breaks: bar
+ Replaces: bar' aptcache rdepends foo -o APT::Cache::ShowDependencyType=1
+testsuccessequal 'foo
+Reverse Depends:
+ Breaks: bar (<< 1)
+ Replaces: bar (<< 1)' aptcache rdepends foo -o APT::Cache::ShowDependencyType=1 -o APT::Cache::ShowVersion=1
+testsuccessequal 'foo
+Reverse Depends:
+ Breaks: bar (<< 1)' aptcache rdepends foo -o APT::Cache::ShowDependencyType=1 -o APT::Cache::ShowVersion=1 --important --breaks
diff --git a/test/integration/test-apt-cache-showsrc b/test/integration/test-apt-cache-showsrc
new file mode 100755
index 000000000..88de077fc
--- /dev/null
+++ b/test/integration/test-apt-cache-showsrc
@@ -0,0 +1,31 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+# we have a foo source package
+insertsource 'unstable' 'foo' 'all' '1.0' '' 'foo-binary'
+
+# and a similar one that builds a foo binary package
+insertsource 'unstable' 'unreleated' 'all' '1.0' '' 'foo'
+
+# just here to workaround the need for a authenticated package
+insertpackage 'unstable' 'workaround' 'all' '1.0'
+
+setupaptarchive
+
+# by default apt-cache showsrc will look into "binary" and "source" names
+# and show all matches
+aptcache showsrc foo > output.txt
+testsuccess grep "Package: foo" output.txt
+testsuccess grep "Package: unreleated" output.txt
+
+# by default apt-cache showsrc will look into "binary" and "source" names
+# and show all matches
+aptcache showsrc --only-source foo > output.txt
+testsuccess grep "Package: foo" output.txt
+testfailure grep "Package: unreleated" output.txt
diff --git a/test/integration/test-apt-cdrom b/test/integration/test-apt-cdrom
new file mode 100755
index 000000000..01680c461
--- /dev/null
+++ b/test/integration/test-apt-cdrom
@@ -0,0 +1,158 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildsimplenativepackage 'testing' 'amd64,i386' '0.8.15' 'stable'
+setupaptarchive --no-update
+
+changetocdrom 'Debian APT Testdisk 0.8.15'
+
+# -de is not in the Release file, but picked up anyway for compatibility
+cd rootdir/media/cdrom-unmounted/dists/stable/main/i18n
+chmod +w .
+sed -e '/^Description-en:/ d' -e '/^ / d' -e '/^$/ d' Translation-en > Translation-de
+echo 'Description-de: automatisch generiertes Testpaket testing=0.8.15/stable
+ Diese Pakete sind nur für das testen von APT gedacht,
+ sie erfüllen keinen Zweck auf einem normalen System…
+' >> Translation-de
+compressfile Translation-de
+rm -f Translation-en Translation-de
+chmod -R 555 .
+cd - > /dev/null
+
+aptcdromlog() {
+ rm -f rootdir/tmp/apt-cdrom.log
+ test ! -e rootdir/media/cdrom || echo "CD-ROM is mounted, but shouldn't be!"
+ test -e rootdir/media/cdrom-unmounted || echo "Unmounted CD-ROM doesn't exist, but it should!"
+ aptcdrom "$@" -o quiet=1 >rootdir/tmp/apt-cdrom.log 2>&1 </dev/null
+ sed -e '/gpgv\?:\s*Signature made/ d' \
+ -e '/gpgv\?:\s*Good signature/ d' \
+ -e '/gpgv\?:\s*using RSA key/ d' \
+ -e '/gpgv\?:\s*issuer/ d' \
+ -e '/^Identifying/ d' \
+ -e '/Reading / d' rootdir/tmp/apt-cdrom.log
+ test ! -e rootdir/media/cdrom || echo "CD-ROM is mounted, but shouldn't be!"
+ test -e rootdir/media/cdrom-unmounted || echo "Unmounted CD-ROM doesn't exist, but it should!"
+}
+aptautotest_aptcdromlog_add() { aptautotest_aptget_update "$@"; }
+
+CDROM_PRE="Using CD-ROM mount point $(readlink -f ./rootdir/media)/cdrom/
+Unmounting CD-ROM...
+Waiting for disc...
+Please insert a Disc in the drive and press [Enter]
+Mounting CD-ROM...
+Scanning disc for index files..."
+CDROM_POST="This disc is called:
+'Debian APT Testdisk 0.8.15'
+Writing new source list
+Source list entries for this disc are:
+deb cdrom:[Debian APT Testdisk 0.8.15]/ stable main
+deb-src cdrom:[Debian APT Testdisk 0.8.15]/ stable main
+Unmounting CD-ROM...
+Repeat this process for the rest of the CDs in your set."
+
+testsuccessequal "$CDROM_PRE
+Found 3 package indexes, 1 source indexes, 1 translation indexes and 1 signatures
+Found label 'Debian APT Testdisk 0.8.15'
+$CDROM_POST" aptcdromlog add
+
+testsuccessequal "Using CD-ROM mount point $(readlink -f ./rootdir/media)/cdrom/
+Mounting CD-ROM...
+Stored label: Debian APT Testdisk 0.8.15
+Unmounting CD-ROM..." aptcdromlog ident
+
+# apt-setup uses these commands (expect the tr in the id) to find id and label
+ident="$(LC_ALL=C aptcdrom ident 2>&1 )"
+CD_ID="$(echo "$ident" | grep "^Identifying" | head -n1 | cut -d" " -f2 | tr --delete '[]')"
+CD_LABEL="$(echo "$ident" | grep "^Stored label:" | head -n1 | sed "s/^[^:]*: //")"
+testfileequal rootdir/var/lib/apt/cdroms.list "CD::${CD_ID} \"${CD_LABEL}\";
+CD::${CD_ID}::Label \"${CD_LABEL}\";"
+
+testcdromusage() {
+ touch rootdir/var/lib/apt/extended_states
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following NEW packages will be installed:
+ testing
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst testing (0.8.15 stable [amd64])
+Conf testing (0.8.15 stable [amd64])' aptget install testing -s
+
+ testdpkgnotinstalled testing
+ testsuccess aptget install testing -y
+ testdpkginstalled testing
+ testsuccess aptget purge testing -y
+ testdpkgnotinstalled testing
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following NEW packages will be installed:
+ testing:i386
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst testing:i386 (0.8.15 stable [i386])
+Conf testing:i386 (0.8.15 stable [i386])' aptget install testing:i386 -s
+
+ testdpkgnotinstalled testing:i386
+ testsuccess aptget install testing:i386 -y
+ testdpkginstalled testing:i386
+ testsuccess aptget purge testing:i386 -y
+ testdpkgnotinstalled testing:i386
+
+ cd downloaded
+ rm -f testing_0.8.15_amd64.deb
+ testsuccess aptget download testing
+ testsuccess test -s testing_0.8.15_amd64.deb
+ rm -f testing_0.8.15_amd64.deb
+
+ rm -f testing_0.8.15.dsc
+ testsuccess aptget source testing --dsc-only
+ testsuccess test -s testing_0.8.15.dsc
+ rm -f testing_0.8.15.dsc
+ cd - >/dev/null
+}
+testcdromusage
+
+# check Idempotence of apt-cdrom (and disabling of Translation dropping)
+testsuccessequal "$CDROM_PRE
+Found 3 package indexes, 1 source indexes, 2 translation indexes and 1 signatures
+$CDROM_POST" aptcdromlog add -o APT::CDROM::DropTranslation=0
+
+# take Translations from previous runs as needed
+testsuccessequal "$CDROM_PRE
+Found 3 package indexes, 1 source indexes, 2 translation indexes and 1 signatures
+$CDROM_POST" aptcdromlog add
+msgtest 'Test for the german description translation of' 'testing'
+aptcache show testing -o Acquire::Languages=de | grep -q '^Description-de: ' && msgpass || msgfail
+rm -rf rootdir/var/lib/apt/lists
+testsuccessequal "$CDROM_PRE
+Found 3 package indexes, 1 source indexes, 1 translation indexes and 1 signatures
+$CDROM_POST" aptcdromlog add
+msgtest 'Test for the english description translation of' 'testing'
+aptcache show testing -o Acquire::Languages=en | grep -q '^Description-en: ' && msgpass || msgfail
+
+# ensure cdrom method isn't trying to mount the cdrom
+mv rootdir/media/cdrom-unmounted rootdir/media/cdrom-ejected
+msgmsg "ensure an update doesn't mess with cdrom sources"
+testsuccess aptget update
+testfileequal rootdir/tmp/testsuccess.output 'Hit:1 cdrom://Debian APT Testdisk 0.8.15 stable InRelease
+Reading package lists...'
+mv rootdir/media/cdrom-ejected rootdir/media/cdrom-unmounted
+testcdromusage
+
+msgmsg 'and again to check that it withstands the temptation even if it could mount'
+testsuccess aptget update
+testfileequal rootdir/tmp/testsuccess.output 'Hit:1 cdrom://Debian APT Testdisk 0.8.15 stable InRelease
+Reading package lists...'
+testcdromusage
+
+msgmsg 'Check that nothing touched our' 'CD-ROM'
+for file in $(find rootdir/media/cdrom-unmounted/dists); do
+ testfilestats "$file" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:555"
+done
diff --git a/test/integration/test-apt-cli-list b/test/integration/test-apt-cli-list
new file mode 100755
index 000000000..f87208a08
--- /dev/null
+++ b/test/integration/test-apt-cli-list
@@ -0,0 +1,74 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'foo' 'all' '1.0'
+insertinstalledpackage 'bar' 'i386' '1.0'
+
+insertinstalledpackage 'foobar' 'i386' '1.0'
+insertpackage 'unstable' 'foobar' 'i386' '2.0'
+
+insertinstalledpackage 'baz' 'all' '0.1'
+insertpackage 'testing' 'baz' 'all' '1.0'
+insertpackage 'unstable' 'baz' 'all' '2.0'
+
+setupaptarchive
+
+testsuccessequal "Listing...
+bar/now 1.0 i386 [installed,local]
+baz/unstable 2.0 all [upgradable from: 0.1]
+dpkg/now 1.16.2+fake all [installed,local]
+foo/unstable 1.0 all
+foobar/unstable 2.0 i386 [upgradable from: 1.0]" apt list
+
+testsuccessequal "Listing...
+foo/unstable 1.0 all
+foobar/unstable 2.0 i386 [upgradable from: 1.0]" apt list "foo*"
+
+testsuccessequal "Listing...
+baz/unstable 2.0 all [upgradable from: 0.1]
+foobar/unstable 2.0 i386 [upgradable from: 1.0]" apt list --upgradable
+
+# FIXME: hm, hm - does it make sense to have this different? shouldn't
+# we use "installed,upgradable" consitently?
+testsuccessequal "Listing...
+bar/now 1.0 i386 [installed,local]
+baz/now 0.1 all [installed,upgradable to: 2.0]
+dpkg/now 1.16.2+fake all [installed,local]
+foobar/now 1.0 i386 [installed,upgradable to: 2.0]" apt list --installed
+
+testsuccessequal "Listing...
+bar/now 1.0 i386 [installed,local]
+
+foobar/unstable 2.0 i386 [upgradable from: 1.0]
+foobar/now 1.0 i386 [installed,upgradable to: 2.0]
+" apt list bar foobar --all-versions
+
+testsuccessequal "Listing...
+bar/now 1.0 i386 [installed,local]
+ an autogenerated dummy bar=1.0/installed
+" apt list bar --verbose
+
+# test for dpkg ^rc state
+insertinstalledpackage 'conf-only' 'i386' '1.0' '' '' 'deinstall ok config-files'
+testsuccessequal "Listing...
+conf-only/now 1.0 i386 [residual-config]" apt list conf-only
+
+# ensure that the users learns about multiple versions too
+testsuccessequal "Listing...
+baz/unstable 2.0 all [upgradable from: 0.1]
+N: There are 2 additional versions. Please use the '-a' switch to see them." apt list baz -o quiet=0
+testsuccessequal 'Listing...
+baz/unstable 2.0 all [upgradable from: 0.1]
+baz/testing 1.0 all
+baz/now 0.1 all [installed,upgradable to: 2.0]
+' apt list baz -o quiet=0 -a
+
+# test format strings for machine parseable output
+testsuccessequal 'bar - 1.0 - 1.0
+baz - 0.1 - 2.0' apt list -qq bar baz -o APT::Cmd::use-format=true -o APT::Cmd::format="\${Package} - \${installed:Version} - \${candidate:Version}"
diff --git a/test/integration/test-apt-cli-search b/test/integration/test-apt-cli-search
new file mode 100755
index 000000000..6457ece6c
--- /dev/null
+++ b/test/integration/test-apt-cli-search
@@ -0,0 +1,79 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+DESCR='Some description that has a unusual word xxyyzz and aabbcc and a UPPERCASE'
+DESCR2='Some other description with the unusual aabbcc only'
+insertpackage 'unstable' 'foo' 'all' '1.0' '' '' "$DESCR
+ Long description of stuff and such, with lines
+ .
+ and paragraphs and everything."
+insertpackage 'testing' 'bar' 'i386' '2.0' '' '' "$DESCR2"
+
+setupaptarchive
+
+APTARCHIVE="$(readlink -f ./aptarchive)"
+
+testfailureequal 'E: You must give at least one search pattern' aptcache search
+testfailureequal 'E: You must give at least one search pattern' apt search
+
+# with OP progress
+testsuccessequal "Sorting...
+Full Text Search...
+foo/unstable 1.0 all
+ $DESCR
+" apt search xxyyzz
+
+# without op progress
+testsuccessequal "foo/unstable 1.0 all
+ $DESCR
+" apt search -qq xxyyzz
+testempty apt search -qq --names-only xxyyzz
+
+# search name
+testsuccessequal "foo/unstable 1.0 all
+ $DESCR
+" apt search -qq foo
+testsuccessequal "foo/unstable 1.0 all
+ $DESCR
+" apt search -qq --names-only foo
+
+# search with multiple words is a AND search
+testsuccessequal "foo/unstable 1.0 all
+ $DESCR
+" apt search -qq aabbcc xxyyzz
+testsuccessequal "foo/unstable 1.0 all
+ $DESCR
+" apt search -qq 'a+b+c+' 'i*xxy{0,2}zz'
+
+# search is not case-sensitive by default
+testsuccessequal "foo/unstable 1.0 all
+ $DESCR
+" apt search -qq uppercase
+testsuccessequal "foo/unstable 1.0 all
+ $DESCR
+" apt search -qq 'up[pP]erc[Aa]se'
+
+# search is done in the long description
+testsuccessequal "foo/unstable 1.0 all
+ $DESCR
+" apt search -qq 'long description'
+testsuccessequal "foo/unstable 1.0 all
+ $DESCR
+ Long description of stuff and such, with lines
+ .
+ and paragraphs and everything.
+" apt search --full -qq 'long description'
+
+# output is sorted and search word finds both package
+testsuccessequal "bar/testing 2.0 i386
+ $DESCR2
+
+foo/unstable 1.0 all
+ $DESCR
+" apt search -qq aabbcc
diff --git a/test/integration/test-apt-cli-show b/test/integration/test-apt-cli-show
new file mode 100755
index 000000000..754b3aa5f
--- /dev/null
+++ b/test/integration/test-apt-cli-show
@@ -0,0 +1,66 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386' 'amd64'
+
+DESCR='Some description
+ That has multiple lines'
+insertpackage 'unstable' 'foo' 'all' '1.0' '' '' "$DESCR"
+insertpackage 'unstable' 'bar' 'i386,amd64' '1' '' '' "$DESCR"
+insertinstalledpackage 'foo' 'all' '1.0'
+
+setupaptarchive
+
+APTARCHIVE=$(readlink -f ./aptarchive)
+
+# note that we do not display Description-md5 with the "apt" cmd
+# and also show some additional fields that are calculated
+testsuccessequal "Package: foo
+Version: 1.0
+Priority: optional
+Section: other
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 43.0 kB
+Download-Size: unknown
+APT-Manual-Installed: yes
+APT-Sources: file:$APTARCHIVE unstable/main all Packages
+Description: Some description
+ That has multiple lines
+" apt show foo
+testsuccessequal "Package: bar
+Version: 1
+Priority: optional
+Section: other
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 43.0 kB
+Download-Size: unknown
+APT-Sources: file:$APTARCHIVE unstable/main i386 Packages
+Description: Some description
+ That has multiple lines
+" apt show bar
+testsuccessequal "Package: bar:amd64
+Version: 1
+Priority: optional
+Section: other
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 43.0 kB
+Download-Size: unknown
+APT-Sources: file:$APTARCHIVE unstable/main amd64 Packages
+Description: Some description
+ That has multiple lines
+" apt show bar:amd64
+
+# this is the default, but disabled by the testcases
+testsuccess apt show foo -o Apt::Cmd::Disable-Script-Warning=0
+cp rootdir/tmp/testsuccess.output aptshow.output
+testsuccess grep '^WARNING: ' aptshow.output
+
+if [ "$(id -u)" != '0' ]; then
+ testsuccess apt install foo -s -o APT::Get::Show-User-Simulation-Note=1
+ cp rootdir/tmp/testsuccess.output aptshow.output
+ testsuccess grep '^NOTE: ' aptshow.output
+fi
diff --git a/test/integration/test-apt-cli-update b/test/integration/test-apt-cli-update
new file mode 100755
index 000000000..cc8d051d2
--- /dev/null
+++ b/test/integration/test-apt-cli-update
@@ -0,0 +1,23 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'foo' 'all' '2.0'
+cp rootdir/var/lib/dpkg/status dpkg.status
+insertinstalledpackage 'foo' 'all' '1.0'
+
+setupaptarchive --no-update
+
+testfailuremsg 'E: The update command takes no arguments' apt update arguments
+
+testempty apt update -qq -o pkgCacheFile::Generate=false
+testsuccessequal "1 package can be upgraded. Run 'apt list --upgradable' to see it." apt update -qq
+
+cp dpkg.status rootdir/var/lib/dpkg/status
+insertinstalledpackage 'foo' 'all' '2.0'
+testsuccessequal 'All packages are up to date.' apt update -qq
diff --git a/test/integration/test-apt-cli-upgrade b/test/integration/test-apt-cli-upgrade
new file mode 100755
index 000000000..705c16386
--- /dev/null
+++ b/test/integration/test-apt-cli-upgrade
@@ -0,0 +1,32 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'foo' 'all' '2.0' 'Depends: foo-new-dependency'
+insertpackage 'unstable' 'foo-new-dependency' 'all' '2.0'
+insertinstalledpackage 'foo' 'all' '1.0'
+
+setupaptarchive
+
+APTARCHIVE="$(readlink -f ./aptarchive)"
+
+# default is to allow new dependencies
+testsuccessequal "The following NEW packages will be installed:
+ foo-new-dependency
+The following packages will be upgraded:
+ foo
+1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo-new-dependency (2.0 unstable [all])
+Inst foo [1.0] (2.0 unstable [all])
+Conf foo-new-dependency (2.0 unstable [all])
+Conf foo (2.0 unstable [all])" apt upgrade -qq -s
+
+# ensure the 'old' way works as well
+testsuccessequal "The following packages have been kept back:
+ foo
+0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded." apt upgrade -qq -s --no-new-pkgs
diff --git a/test/integration/test-apt-config b/test/integration/test-apt-config
new file mode 100755
index 000000000..f2068b789
--- /dev/null
+++ b/test/integration/test-apt-config
@@ -0,0 +1,36 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+testsuccess aptconfig dump
+testsuccessequal 'APT::Architecture "amd64";' aptconfig dump APT::Architecture
+testempty aptconfig dump config::which::does::not::exist
+
+testsuccessequal 'APT::Architectures "";
+APT::Architectures:: "amd64";' aptconfig dump APT::Architectures
+testsuccessequal 'APT::Architectures:: "amd64";' aptconfig dump --no-empty APT::Architectures
+testsuccessequal 'amd64' aptconfig dump --no-empty --format='%v%n' APT::Architectures
+
+testempty aptconfig shell
+testfailureequal 'E: Arguments not in pairs' aptconfig shell APT::Architecture
+testempty aptconfig shell APT::Architecture ARCH # incorrect order
+testsuccessequal "ARCH='amd64'" aptconfig shell ARCH APT::Architecture
+
+ROOTDIR="$(readlink -f rootdir)"
+testsuccessequal "CONFIG='apt.conf'" aptconfig shell CONFIG Dir::Etc::main
+testsuccessequal "CONFIG='${ROOTDIR}/etc/apt/apt.conf'" aptconfig shell CONFIG Dir::Etc::main/f
+testsuccessequal "CONFIG='etc/apt'" aptconfig shell CONFIG Dir::Etc
+testsuccessequal "CONFIG='${ROOTDIR}/etc/apt/'" aptconfig shell CONFIG Dir::Etc/ # old style
+testsuccessequal "CONFIG='${ROOTDIR}/etc/apt/'" aptconfig shell CONFIG Dir::Etc/d
+
+testempty aptconfig dump --no-empty --format='%v%n' APT::Build-Profiles
+export DEB_BUILD_PROFILES='nodoc stage1'
+testsuccessequal 'nodoc
+stage1' aptconfig dump --no-empty --format='%v%n' APT::Build-Profiles
+unset DEB_BUILD_PROFILES
+testempty aptconfig dump --no-empty --format='%v%n' APT::Build-Profiles
diff --git a/test/integration/test-apt-download-progress b/test/integration/test-apt-download-progress
new file mode 100755
index 000000000..13a18f7c3
--- /dev/null
+++ b/test/integration/test-apt-download-progress
@@ -0,0 +1,48 @@
+#!/bin/sh
+#
+# ensure downloading sends progress as a regression test for commit 9127d7ae
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+changetohttpswebserver
+
+assertprogress() {
+ testsuccess grep "dlstatus:1:0.0000:Retrieving file 1 of 1" "$1"
+ testsuccess grep -E "dlstatus:1:[1-9][0-9]{0,1}\.[0-9]{1,4}:Retrieving file 1 of 1" "$1"
+ testsuccess grep "dlstatus:1:100.0000:Retrieving file 1 of 1" "$1"
+}
+
+# we need to ensure the file is reasonable big so that apt has a chance to
+# actually report progress - but not too big to ensure its not delaying the
+# test too much
+TESTFILE=testfile.big
+testsuccess dd if=/dev/zero of=./aptarchive/$TESTFILE bs=1600k count=1
+
+OPT='-o APT::Status-Fd=3 -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::http=1 -o Debug::Acquire::https=1'
+
+msgtest 'download progress works via' 'http'
+for i in 2 5 7 10 12 15; do
+ exec 3> apt-progress-http.log
+ testsuccess --nomsg apthelper download-file "http://localhost:${APTHTTPPORT}/$TESTFILE" ./downloaded/http-$TESTFILE $OPT -o Acquire::http::Dl-Limit=$((1600/i))
+ if [ "$(wc -l apt-progress-http.log | awk '{print $1}')" -ge 3 ]; then
+ break
+ fi
+done
+assertprogress apt-progress-http.log
+
+msgtest 'download progress works via' 'https'
+for i in 2 5 7 10 12 15; do
+ exec 3> apt-progress-https.log
+ testsuccess --nomsg apthelper download-file "https://localhost:${APTHTTPSPORT}/$TESTFILE" ./downloaded/https-$TESTFILE $OPT -o Acquire::https::Dl-Limit=$((1600/i))
+ if [ "$(wc -l apt-progress-https.log | awk '{print $1}')" -ge 3 ]; then
+ break
+ fi
+done
+assertprogress apt-progress-https.log
+
+# cleanup
+rm -f apt-progress*.log
diff --git a/test/integration/test-apt-edit-sources b/test/integration/test-apt-edit-sources
new file mode 100755
index 000000000..58742e94f
--- /dev/null
+++ b/test/integration/test-apt-edit-sources
@@ -0,0 +1,39 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+echo 'Dir::Bin::Editor "cat";' > rootdir/etc/apt/apt.conf.d/editor.conf
+
+echo 'deb http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list.d/rocks.list
+testsuccessequal "$(cat rootdir/etc/apt/sources.list.d/rocks.list)" apt edit-sources rocks.list
+
+cat >editor.sh <<EOF
+#!/bin/sh
+umask 077
+touch "\$@"
+EOF
+chmod +x ./editor.sh
+echo 'Dir::Bin::Editor "./editor.sh";' > rootdir/etc/apt/apt.conf.d/editor.conf
+testsuccess apt edit-sources blub.list
+testfailure test -e 'rootdir/etc/apt/sources.list.d/blub.list'
+
+cat >editor.sh <<EOF
+#!/bin/sh
+umask 077
+echo '#comment' > "\$1"
+EOF
+testsuccess apt edit-sources blub.list
+testfilestats 'rootdir/etc/apt/sources.list.d/blub.list' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+
+echo 'Dir::Bin::Editor "cat";' > rootdir/etc/apt/apt.conf.d/editor.conf
+echo 'blub' > rootdir/etc/apt/sources.list.d/blub.list
+testfailure apt edit-sources blub.list --assume-no
+
+echo 'deb http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list.d/blub.list
+touch -m -d 'now + 1 hour' rootdir/etc/apt/sources.list.d/blub.list
+testwarning apt edit-sources blub.list --assume-no
diff --git a/test/integration/test-apt-extracttemplates b/test/integration/test-apt-extracttemplates
new file mode 100755
index 000000000..b299d85f4
--- /dev/null
+++ b/test/integration/test-apt-extracttemplates
@@ -0,0 +1,70 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+# apt-extracttemplates needs this
+insertinstalledpackage 'pkg-with-template' 'amd64' '1.0'
+
+# build a simple package that contains a config and a template
+mkdir -p DEBIAN
+CONFIG_STR="#!/bin/sh
+random shell stuff
+"
+echo "$CONFIG_STR" > DEBIAN/config
+
+testrun() {
+ local TEMPLATE_STR='Template: foo/bar
+Type: string
+Description: Some bar var
+'
+ echo "$TEMPLATE_STR" > DEBIAN/templates
+ buildsimplenativepackage "$1" 'amd64' '0.8.15' 'stable' "$2" 'pkg with template' '' '' './DEBIAN'
+
+ cp dpkg.status rootdir/var/lib/dpkg/status
+ insertinstalledpackage 'debconf' 'amd64' '3'
+
+ # ensure we get the right stuff out of the file
+ rm -rf extracttemplates-out rootdir/var/cache/apt
+ mkdir extracttemplates-out
+ testsuccess aptextracttemplates -t ./extracttemplates-out incoming/${1}*.deb
+ OUT='rootdir/tmp/testsuccess.output'
+ testequal "$1" cut -f1 -d' ' $OUT
+ if [ -n "$2" ]; then
+ testequal '' cut -s -f2 -d' ' $OUT
+ else
+ testequal '1.0' cut -f2 -d' ' $OUT
+ fi
+ TEMPLATE=$(cut -f3 -d' ' $OUT)
+ testfileequal "$TEMPLATE" "$TEMPLATE_STR"
+ CONFIG=$(cut -f4 -d' ' $OUT)
+ testfileequal "$CONFIG" "$CONFIG_STR"
+
+ # ensure that the format of the output string has the right number of dots
+ for s in "$CONFIG" "$TEMPLATE"; do
+ NR_DOTS=$(basename "$s" | tr -c -d '.')
+ testequal '..' echo $NR_DOTS
+ done
+
+ if [ -n "$2" ]; then
+ rm -rf extracttemplates-out rootdir/var/cache/apt
+ mkdir extracttemplates-out
+ cp dpkg.status rootdir/var/lib/dpkg/status
+ insertinstalledpackage 'debconf' 'amd64' '1'
+ testempty aptextracttemplates -t ./extracttemplates-out incoming/${1}*.deb
+ fi
+}
+
+cp rootdir/var/lib/dpkg/status dpkg.status
+testrun 'pkg-with-template' ''
+testrun 'pkg-with-template-depends' 'Depends: debconf (>= 2)'
+testrun 'pkg-with-template-predepends' 'Pre-Depends: debconf (>= 2)'
+
+# test with no debconf installed
+cp dpkg.status rootdir/var/lib/dpkg/status
+testfailure aptextracttemplates -t ./extracttemplates-out incoming/pkg-with-template-depends*.deb
+testfileequal 'rootdir/tmp/testfailure.output' 'E: Cannot get debconf version. Is debconf installed?'
diff --git a/test/integration/test-apt-ftparchive-by-hash b/test/integration/test-apt-ftparchive-by-hash
new file mode 100755
index 000000000..ccfc62734
--- /dev/null
+++ b/test/integration/test-apt-ftparchive-by-hash
@@ -0,0 +1,70 @@
+#!/bin/sh
+set -e
+
+verify_by_hash() {
+ for hash_gen in SHA256:sha256sum SHA512:sha512sum; do
+ hash=$(echo ${hash_gen} | cut -f1 -d:)
+ gen=$(echo ${hash_gen} | cut -f2 -d:)
+ testsuccess stat aptarchive/dists/unstable/main/binary-i386/by-hash/$hash/$($gen aptarchive/dists/unstable/main/binary-i386/Packages | cut -f1 -d' ')
+ testsuccess stat aptarchive/dists/unstable/main/binary-i386/by-hash/$hash/$($gen aptarchive/dists/unstable/main/binary-i386/Packages.gz | cut -f1 -d' ')
+ done
+}
+
+#
+# main()
+#
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+configcompression 'gz' '.'
+confighashes 'SHA256' 'SHA512'
+
+# enable by-hash in apt-ftparchive
+echo 'APT::FTPArchive::DoByHash "1";' >> aptconfig.conf
+
+# build one package
+buildsimplenativepackage 'foo' 'i386' '1' 'unstable'
+buildaptarchivefromincoming
+
+# verify initial run
+verify_by_hash
+previous_hash=$(sha256sum aptarchive/dists/unstable/main/binary-i386/Packages | cut -f1 -d' ')
+
+# insert new package
+buildsimplenativepackage 'bar' 'i386' '1' 'unstable'
+# and build again
+buildaptarchivefromincoming
+
+# ensure the new package packag is there
+testsuccess zgrep "Package: bar" aptarchive/dists/unstable/main/binary-i386/Packages.gz
+
+# ensure we have the by-hash stuff
+verify_by_hash
+
+# ensure the old hash is still there
+testsuccess stat aptarchive/dists/unstable/main/binary-i386/by-hash/SHA256/$previous_hash
+
+# ensure we have it in the Release file
+testsuccess grep "Acquire-By-Hash: yes" aptarchive/dists/unstable/*Release
+
+# now ensure gc work
+for i in $(seq 3); do
+ buildsimplenativepackage 'bar' 'i386' "$i" 'unstable'
+ buildaptarchivefromincoming
+done
+
+hash_count=$(ls aptarchive/dists/unstable/main/binary-i386/by-hash/SHA256/|wc -l)
+# we have 2 files (uncompressed, gz) per run, 5 runs in total
+# by default apt-ftparchive keeps three generations (current plus 2 older)
+msgtest "Check that gc for by-hash works… "
+if [ "$hash_count" = "6" ]; then
+ msgpass
+else
+ echo "Got $hash_count expected 6"
+ msgfail
+fi
+
+# ensure the current generation is still there
+verify_by_hash
+
diff --git a/test/integration/test-apt-ftparchive-cachedb b/test/integration/test-apt-ftparchive-cachedb
new file mode 100755
index 000000000..73d762cc8
--- /dev/null
+++ b/test/integration/test-apt-ftparchive-cachedb
@@ -0,0 +1,103 @@
+#!/bin/sh
+set -e
+
+ensure_correct_packages_file() {
+ testequal "Package: foo
+Architecture: i386
+Version: 1
+Priority: optional
+Section: others
+Maintainer: Joe Sixpack <joe@example.org>
+$(dpkg-deb -I ./aptarchive/pool/main/foo_1_i386.deb | grep 'Installed-Size:' | sed 's#^ ##')
+Filename: pool/main/foo_1_i386.deb" head -n8 ./aptarchive/dists/test/main/binary-i386/Packages
+}
+
+ensure_correct_contents_file() {
+ testfileequal ./aptarchive/dists/test/Contents-i386 "usr/bin/foo-i386 others/foo
+usr/share/doc/foo/FEATURES others/foo
+usr/share/doc/foo/changelog others/foo
+usr/share/doc/foo/copyright others/foo"
+}
+
+#
+# main()
+#
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+mkdir -p aptarchive/dists/test/main/i18n/
+mkdir -p aptarchive/dists/test/main/source/
+mkdir -p aptarchive/dists/test/main/binary-i386
+mkdir -p aptarchive/pool/main
+
+mkdir aptarchive-overrides
+mkdir aptarchive-cache
+cat > ftparchive.conf <<"EOF"
+Dir {
+ ArchiveDir "./aptarchive";
+ OverrideDir "./aptarchive-overrides";
+ CacheDir "./aptarchive-cache";
+};
+
+Default {
+ Packages::Compress ". gzip bzip2";
+ Contents::Compress ". gzip bzip2";
+ LongDescription "false";
+};
+
+TreeDefault {
+ BinCacheDB "packages-$(SECTION)-$(ARCH).db";
+
+ Directory "pool/$(SECTION)";
+ SrcDirectory "pool/$(SECTION)";
+
+ Packages "$(DIST)/$(SECTION)/binary-$(ARCH)/Packages";
+ Contents "$(DIST)/Contents-$(ARCH)";
+};
+
+Tree "dists/test" {
+ Sections "main";
+ Architectures "i386";
+
+};
+EOF
+
+# build one package
+buildsimplenativepackage 'foo' 'i386' '1' 'test'
+mv incoming/* aptarchive/pool/main/
+
+# generate (empty cachedb)
+testsuccess aptftparchive generate ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1
+cp rootdir/tmp/testsuccess.output stats-out.txt
+ensure_correct_packages_file
+ensure_correct_contents_file
+testsuccessequal ' Misses in Cache: 2
+ dists/test/Contents-i386: New 402 B Misses in Cache: 0' grep Misses stats-out.txt
+
+# generate again
+testsuccess aptftparchive generate ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1
+cp rootdir/tmp/testsuccess.output stats-out.txt
+ensure_correct_packages_file
+ensure_correct_contents_file
+testsuccessequal ' Misses in Cache: 0
+ dists/test/Contents-i386: Misses in Cache: 0' grep Misses stats-out.txt
+
+# and again (with removing the Packages file)
+rm -f ./aptarchive/dists/test/main/binary-i386/*
+rm -f ./aptarchive/dists/test/Contents-i386
+testsuccess aptftparchive generate ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1
+cp rootdir/tmp/testsuccess.output stats-out.txt
+ensure_correct_packages_file
+ensure_correct_contents_file
+testsuccessequal ' Misses in Cache: 0
+ dists/test/Contents-i386: New 402 B Misses in Cache: 0' grep Misses stats-out.txt
+
+# and clean
+rm -rf aptarchive/pool/main/*
+testsuccessequal "packages-main-i386.db" aptftparchive clean ftparchive.conf
+testsuccess aptftparchive clean ftparchive.conf -o Debug::APT::FTPArchive::Clean=1
+cp rootdir/tmp/testsuccess.output clean-out.txt
+testsuccessequal "0 Number of unique keys in the tree" grep unique clean-out.txt
+testsuccessequal "packages-main-i386.db" grep packages-main-i386.db clean-out.txt
diff --git a/test/integration/test-apt-ftparchive-cachedb-lp1274466 b/test/integration/test-apt-ftparchive-cachedb-lp1274466
new file mode 100755
index 000000000..b0bcae8ec
--- /dev/null
+++ b/test/integration/test-apt-ftparchive-cachedb-lp1274466
@@ -0,0 +1,59 @@
+#!/bin/sh
+set -e
+
+
+#
+# main()
+#
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+confighashes 'MD5' 'SHA1' 'SHA256' 'SHA512'
+
+db_dump=db_dump
+if command -v db_dump-5 >/dev/null 2>&1; then
+ db_dump=db_dump-5
+fi
+
+# gather the db and the deb, ensure mtime is not modified as its saved in the DB
+cp -p "$TESTDIR/deb-lp1274466-cachedb.deb" foo_1_i386.deb
+cp -p "$TESTDIR/cachedb-lp1274466-old-format.db" old-format.db
+
+# verify that the format is different
+testsuccess aptftparchive --db new-format.db packages .
+$db_dump new-format.db > new-format.dump
+$db_dump old-format.db > old-format.dump
+testfailure diff -u old-format.dump new-format.dump
+
+# ensure the new format as the sha512
+testsuccess grep 7da58ff901a40ecf42a730dc33198b182e9ba9ec98799fc2c2b6fabeeee40cc12a0e7cadb4b66764235c56e1009dbfe8a9a566fb1eedf47a992d1fff2cc3332c new-format.dump
+# but the old format does not
+testfailure grep 7da58ff901a40ecf42a730dc33198b182e9ba9ec98799fc2c2b6fabeeee40cc12a0e7cadb4b66764235c56e1009dbfe8a9a566fb1eedf47a992d1fff2cc3332c old-format.dump
+
+# regression test for corruption with previous generation of cachedb
+testsuccessequal "Package: foo
+Architecture: i386
+Version: 1
+Priority: optional
+Section: others
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 29
+Filename: ./foo_1_i386.deb
+Size: 1270
+MD5sum: 85d0e908c1a897700e2c5dea72d7e3c0
+SHA1: 858b09169032b7925a0e463f46b6634243fc40ce
+SHA256: 3750a2c9c6b5beee7f307564be3d51d3ec7cbb78fa4f0b47f84a7c41477bff59
+SHA512: 7da58ff901a40ecf42a730dc33198b182e9ba9ec98799fc2c2b6fabeeee40cc12a0e7cadb4b66764235c56e1009dbfe8a9a566fb1eedf47a992d1fff2cc3332c
+Description: an autogenerated dummy foo=1/test
+ If you find such a package installed on your system,
+ something went horribly wrong! They are autogenerated
+ und used only by testcases and surf no other propose…
+" aptftparchive --db old-format.db packages .
+
+# ensure that the db is updated and contains the new sha512
+$db_dump old-format.db > old-format.dump
+
+testsuccess grep 7da58ff901a40ecf42a730dc33198b182e9ba9ec98799fc2c2b6fabeeee40cc12a0e7cadb4b66764235c56e1009dbfe8a9a566fb1eedf47a992d1fff2cc3332c old-format.dump
+
+
diff --git a/test/integration/test-apt-ftparchive-notautomatic b/test/integration/test-apt-ftparchive-notautomatic
new file mode 100755
index 000000000..b2f65cc18
--- /dev/null
+++ b/test/integration/test-apt-ftparchive-notautomatic
@@ -0,0 +1,54 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+getnotautomaticfromsuite() {
+ case "$1" in
+ experimental|backports) echo 'yes';;
+ esac
+}
+getbutautomaticupgradesfromsuite() {
+ case "$1" in
+ backports) echo 'yes';;
+ esac
+}
+
+insertpackage 'unstable' 'foo' 'i386' '1'
+insertpackage 'backports' 'foo' 'i386' '3~bpo1'
+insertpackage 'experimental' 'foo' 'i386' '3'
+setupaptarchive
+
+# check no unstable NotAutomatic field
+testfailure grep "NotAutomatic:" aptarchive/dists/unstable/*Release
+# check backports NotAutomatic field
+testsuccess grep "NotAutomatic: yes" aptarchive/dists/backports/*Release
+# check experimental NotAutomatic field
+testsuccess grep "NotAutomatic: yes" aptarchive/dists/experimental/*Release
+
+# check no unstable ButAutomaticUpgrades field
+testfailure grep "ButAutomaticUpgrades:" aptarchive/dists/unstable/*Release
+# check backports ButAutomaticUpgrades field
+testsuccess grep "ButAutomaticUpgrades: yes" aptarchive/dists/backports/*Release
+# check no experimental ButAutomaticUpgrades field
+testfailure grep "ButAutomaticUpgrades:" aptarchive/dists/experimental/*Release
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [i386])
+Conf foo (1 unstable [i386])' apt install foo -s
+
+insertinstalledpackage 'foo' 'i386' '2'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be upgraded:
+ foo
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst foo [2] (3~bpo1 backports [i386])
+Conf foo (3~bpo1 backports [i386])' apt install foo -s
diff --git a/test/integration/test-apt-ftparchive-src-cachedb b/test/integration/test-apt-ftparchive-src-cachedb
new file mode 100755
index 000000000..8bab1fd5e
--- /dev/null
+++ b/test/integration/test-apt-ftparchive-src-cachedb
@@ -0,0 +1,191 @@
+#!/bin/sh
+set -e
+
+assert_correct_sources_file() {
+ testsuccessequal "Package: bar
+Format: 3.0 (native)
+Binary: bar
+Architecture: all
+Version: 1.0
+Directory: pool/main
+Package-List:
+ bar deb admin extra
+Files:
+ 7b57dd065e51de5905288a5104d4bef5 406 bar_1.0.dsc
+ d41d8cd98f00b204e9800998ecf8427e 0 bar_1.0.tar.gz
+Checksums-Sha1:
+ 17a40b76715f393ab7fd6485c9392a02f1adf903 406 bar_1.0.dsc
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 bar_1.0.tar.gz
+Checksums-Sha256:
+ d9d7507f66a89258b6920aca47747d7a30e0e64b09ecabbf02b2efbdabf840a9 406 bar_1.0.dsc
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 bar_1.0.tar.gz
+Checksums-Sha512:
+ ee0a9bfb6614159b45203fc29487d4f37387993ca0e6d6f27b80010498f3731d75753188ece307508ae9af0259bd11a6af15a1a38f0b87dbd5ea1273b7a7d53e 406 bar_1.0.dsc
+ cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e 0 bar_1.0.tar.gz
+
+Package: foo
+Format: 3.0 (native)
+Binary: foo
+Architecture: all
+Version: 1.0
+Directory: pool/main
+Package-List:
+ foo deb admin extra
+Files:
+ d144826e6f02831c1933e910c92cd7e0 171 foo_1.0.dsc
+ d41d8cd98f00b204e9800998ecf8427e 0 foo_1.0.tar.gz
+Checksums-Sha1:
+ 979306aa3ccff3d61bba062bb6977e2493c6f907 171 foo_1.0.dsc
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 foo_1.0.tar.gz
+Checksums-Sha256:
+ 8c780af8b5a6d5b3c2e2f9518940beebea52ac6d6ad7b52c082dc925cfe5b532 171 foo_1.0.dsc
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 foo_1.0.tar.gz
+Checksums-Sha512:
+ 3da0240fd764657c2f3661b4d750578a9a99b0580591b133756379d48117ebda87a5ed2467f513200d6e7eaf51422cbe91c15720eef7fb4bba2cc8ff81ebc547 171 foo_1.0.dsc
+ cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e 0 foo_1.0.tar.gz
+" aptsortpkgs ./aptarchive/dists/test/main/source/Sources -o APT::SortPkgs::Source=true
+}
+
+create_source_files() {
+ NAME="$1"
+ REQUEST_CLEARSIGN="$2"
+
+ TARFILE="aptarchive/pool/main/${NAME}_1.0.tar.gz"
+ DSC_FILE="aptarchive/pool/main/${NAME}_1.0.dsc"
+ touch $TARFILE
+ if [ "$REQUEST_CLEARSIGN" = "CLEARSIGN" ]; then
+ printf -- "-----BEGIN PGP SIGNED MESSAGE-----\n\n" > $DSC_FILE
+ fi
+ cat >> $DSC_FILE << EOF
+Format: 3.0 (native)
+Source: $NAME
+Binary: $NAME
+Architecture: all
+Version: 1.0
+Package-List:
+ $NAME deb admin extra
+Files:
+ $(md5sum $TARFILE|cut -f1 -d' ') $(stat --print="%s" $TARFILE) ${NAME}_1.0.tar.gz
+EOF
+ if [ "$REQUEST_CLEARSIGN" = "CLEARSIGN" ]; then
+ cat >> $DSC_FILE <<EOF
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.11 (GNU/Linux)
+
+iEYEARECAAYFAk3k/VoACgkQliSD4VZixzQxlgCgpav7j68z48qNTDFuT9fLqwT5
+DFwAoIXatJFENEC371bMKTkUKlwZxQEk
+=iI9V
+-----END PGP SIGNATURE-----
+EOF
+ fi
+}
+
+create_clearsigned_source_files() {
+ NAME="$1"
+ create_source_files "$NAME" "CLEARSIGN"
+}
+
+#
+# main()
+#
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+confighashes 'MD5' 'SHA1' 'SHA256' 'SHA512'
+
+msgtest 'Test apt-ftparchive source with missing hashes in .dsc'
+
+mkdir -p aptarchive/pool/main
+create_source_files foo
+create_clearsigned_source_files bar
+
+mkdir -p aptarchive/dists/test/main/i18n/
+mkdir -p aptarchive/dists/test/main/source/
+
+mkdir aptarchive-overrides
+mkdir aptarchive-cache
+
+msgtest 'generate with --db option'
+cd aptarchive
+aptftparchive --db ./test.db sources pool/main/ -o APT::FTPArchive::ShowCacheMisses=1 > dists/test/main/source/Sources 2>stats-out.txt && msgpass || msgfail
+testsuccess grep Misses stats-out.txt
+testfileequal '../rootdir/tmp/testsuccess.output' ' Misses in Cache: 2'
+cd ..
+assert_correct_sources_file
+
+msgtest 'generate with --db option (again to ensure its in the cache)'
+cd aptarchive
+aptftparchive --db ./test.db sources pool/main/ -o APT::FTPArchive::ShowCacheMisses=1 > dists/test/main/source/Sources 2>stats-out.txt && msgpass || msgfail
+testsuccess grep Misses stats-out.txt
+testfileequal '../rootdir/tmp/testsuccess.output' ' Misses in Cache: 0'
+cd ..
+assert_correct_sources_file
+
+# get ready for the "apt-ftparchive generate" command
+cat > apt-ftparchive.conf <<"EOF"
+Dir {
+ ArchiveDir "./aptarchive";
+ OverrideDir "./aptarchive-overrides";
+ CacheDir "./aptarchive-cache";
+};
+
+Default {
+ Packages::Compress ". gzip bzip2";
+ Contents::Compress ". gzip bzip2";
+ LongDescription "false";
+};
+
+TreeDefault {
+ BinCacheDB "packages-$(SECTION)-$(ARCH).db";
+ SrcCacheDB "sources-$(SECTION).db";
+
+ Directory "pool/$(SECTION)";
+ SrcDirectory "pool/$(SECTION)";
+
+ Sources "$(DIST)/$(SECTION)/source/Sources";
+};
+
+Tree "dists/test" {
+ Sections "main";
+ Architectures "source";
+
+};
+EOF
+
+msgtest 'generate (empty cachedb)'
+testsuccess aptftparchive generate apt-ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1
+cp rootdir/tmp/testsuccess.output stats-out.txt
+testsuccess grep Misses stats-out.txt
+testfileequal rootdir/tmp/testsuccess.output ' Misses in Cache: 2'
+assert_correct_sources_file
+
+msgtest 'generate again out of the cache'
+rm -f ./aptarchive/dists/test/main/source/Sources
+testsuccess aptftparchive generate apt-ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1
+cp rootdir/tmp/testsuccess.output stats-out.txt
+testsuccess grep Misses stats-out.txt
+testfileequal rootdir/tmp/testsuccess.output ' Misses in Cache: 0'
+assert_correct_sources_file
+
+# generate invalid files
+mkdir aptarchive/pool/invalid
+printf "meep" > aptarchive/pool/invalid/invalid_1.0.dsc
+testequal "
+E: Could not find a record in the DSC 'aptarchive/pool/invalid/invalid_1.0.dsc'" aptftparchive sources aptarchive/pool/invalid
+rm -f aptarchive/pool/invalid/invalid_1.0.dsc
+
+printf "meep: yes" > aptarchive/pool/invalid/invalid_1.0.dsc
+testequal "
+E: Could not find a Source entry in the DSC 'aptarchive/pool/invalid/invalid_1.0.dsc'" aptftparchive sources aptarchive/pool/invalid
+rm -f aptarchive/pool/invalid/invalid_1.0.dsc
+
+# ensure clean works
+rm -f aptarchive/pool/main/*
+testsuccess aptftparchive clean apt-ftparchive.conf -o Debug::APT::FTPArchive::Clean=1
+cp rootdir/tmp/testsuccess.output clean-out.txt
+testsuccess grep unique clean-out.txt
+testfileequal 'rootdir/tmp/testsuccess.output' "0 Number of unique keys in the tree"
+testsuccess grep sources-main.db clean-out.txt
+testfileequal 'rootdir/tmp/testsuccess.output' "sources-main.db"
diff --git a/test/integration/test-apt-get-autoremove b/test/integration/test-apt-get-autoremove
new file mode 100755
index 000000000..6f3452fbd
--- /dev/null
+++ b/test/integration/test-apt-get-autoremove
@@ -0,0 +1,198 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+buildsimplenativepackage 'unrelated' 'all' '1' 'unstable'
+buildsimplenativepackage 'po-debconf' 'all' '1.0.16' 'unstable'
+buildsimplenativepackage 'debhelper' 'all' '8.0.0' 'unstable' 'Depends: po-debconf'
+setupaptarchive
+
+testsuccess aptget install unrelated debhelper -y
+testdpkginstalled 'unrelated' 'debhelper' 'po-debconf'
+
+testmarkedauto 'po-debconf'
+testsuccess aptget remove debhelper -y
+testdpkgnotinstalled 'debhelper'
+testdpkginstalled 'po-debconf' 'unrelated'
+echo 'unrelated purge' | dpkg --set-selections
+testdpkgstatus 'pi' '1' 'unrelated'
+
+AUTOREMOVE='apt autoremove'
+if [ -n "$SUDO_USER" ]; then
+ AUTOREMOVE="sudo $AUTOREMOVE"
+fi
+echo 'APT::NeverAutoRemove { "^debc.*nf$"; };' > rootdir/etc/apt/apt.conf.d/00autoremove
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ po-debconf
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv po-debconf [1.0.16]' aptget autoremove -s
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following package was automatically installed and is no longer required:
+ po-debconf
+Use '$AUTOREMOVE' to remove it.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+1 package was automatically installed and is no longer required.
+Use '$AUTOREMOVE' to remove it.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s -o APT::Get::HideAutoRemove=small
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Calculating upgrade...
+The following package was automatically installed and is no longer required:
+ po-debconf
+Use '$AUTOREMOVE' to remove it.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget upgrade -s
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ po-debconf
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv po-debconf [1.0.16]' aptget install -s --autoremove
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+Calculating upgrade...
+The following packages will be REMOVED:
+ po-debconf
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv po-debconf [1.0.16]' aptget upgrade -s --autoremove
+echo 'APT::Get::AutomaticRemove "true";' > rootdir/etc/apt/apt.conf.d/autoremoval
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ po-debconf
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv po-debconf [1.0.16]' aptget install -s
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Calculating upgrade...
+The following package was automatically installed and is no longer required:
+ po-debconf
+Use '$AUTOREMOVE' to remove it.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget upgrade -s
+rm -f rootdir/etc/apt/apt.conf.d/autoremoval
+
+testdpkginstalled 'po-debconf'
+
+echo 'APT::NeverAutoRemove { "^po-debconf$"; };' > rootdir/etc/apt/apt.conf.d/00autoremove
+testsuccess aptget autoremove -y
+testdpkginstalled 'po-debconf'
+testdpkgstatus 'pi' '1' 'unrelated'
+
+echo 'APT::NeverAutoRemove { "^po-.*$"; };' > rootdir/etc/apt/apt.conf.d/00autoremove
+testsuccess aptget autoremove -y
+testdpkginstalled "po-debconf"
+testdpkgstatus 'pi' '1' 'unrelated'
+
+rm rootdir/etc/apt/apt.conf.d/00autoremove
+testsuccess aptget autoremove -y
+testdpkgnotinstalled 'po-debconf'
+testdpkgstatus 'pi' '1' 'unrelated'
+testmarkedauto
+
+sed rootdir/var/log/apt/history.log -e '/^Commandline: / d' \
+ -e '/^Start-Date: / d' -e '/^End-Date: / d' \
+ -e '/^Requested-By: / d' \
+ -e 's#), #)\nInstall: #g' | sort -u > apt-history.log
+testfileequal 'apt-history.log' '
+Install: debhelper:i386 (8.0.0)
+Install: po-debconf:i386 (1.0.16, automatic)
+Install: unrelated:i386 (1)
+Remove: debhelper:i386 (8.0.0)
+Remove: po-debconf:i386 (1.0.16)'
+
+testsuccess aptget install debhelper -y
+testdpkgstatus 'pi' '1' 'unrelated'
+testdpkginstalled 'debhelper' 'po-debconf'
+testsuccess aptmark auto debhelper
+
+testmarkedauto 'debhelper' 'po-debconf'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ debhelper po-debconf
+0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
+Remv debhelper [8.0.0]
+Remv po-debconf [1.0.16]' aptget autoremove -s
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages were automatically installed and are no longer required:
+ debhelper po-debconf
+Use '$AUTOREMOVE' to remove them.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+2 packages were automatically installed and are no longer required.
+Use '$AUTOREMOVE' to remove them.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s -o APT::Get::HideAutoRemove=small
+
+testsuccess aptmark hold debhelper
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget autoremove -s
+
+testsuccess aptget autoremove debhelper -y --allow-change-held-packages
+testdpkgnotinstalled 'po-debconf' 'debhelper'
+testdpkgstatus 'pi' '1' 'unrelated'
+testmarkedauto
+testsuccess aptget install debhelper --solver apt -y -o Debug::pkgDepCache::Marker=1
+testmarkedauto 'po-debconf'
+testdpkgstatus 'pi' '1' 'unrelated'
+
+insertinstalledpackage 'bar' 'all' '1' 'Depends: foo-provider'
+insertinstalledpackage 'foo-multi1-1' 'all' '1' 'Provides: foo-provider
+Source: foo-multi (1)'
+insertinstalledpackage 'foo-multi1-2' 'all' '1' 'Provides: foo-provider
+Source: foo-multi (2)'
+insertinstalledpackage 'foo-multi1-3' 'all' '1' 'Provides: foo-provider
+Source: foo-multi (3)'
+insertinstalledpackage 'foo-multi2-1' 'all' '1' 'Provides: foo-provider
+Source: foo-multi (1)'
+insertinstalledpackage 'foo-multi2-2' 'all' '1' 'Provides: foo-provider
+Source: foo-multi (2)'
+insertinstalledpackage 'foo-multi2-3' 'all' '1' 'Provides: foo-provider
+Source: foo-multi (3)'
+insertinstalledpackage 'foo-plus-1' 'all' '1' 'Provides: foo-provider
+Source: foo-plus (1)'
+insertinstalledpackage 'foo-plus-2' 'all' '1' 'Provides: foo-provider
+Source: foo-plus (2)'
+insertinstalledpackage 'foo-plus-3' 'all' '1' 'Provides: foo-provider
+Source: foo-plus (3)'
+insertinstalledpackage 'foo-single-1' 'all' '1' 'Provides: foo-provider'
+insertinstalledpackage 'foo-single-2' 'all' '1' 'Provides: foo-provider'
+
+testsuccess aptmark auto 'foo-*'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ foo-multi1-1 foo-multi1-2 foo-multi2-1 foo-multi2-2 foo-plus-1 foo-plus-2
+0 upgraded, 0 newly installed, 6 to remove and 0 not upgraded.
+Remv foo-multi1-1 [1]
+Remv foo-multi1-2 [1]
+Remv foo-multi2-1 [1]
+Remv foo-multi2-2 [1]
+Remv foo-plus-1 [1]
+Remv foo-plus-2 [1]' apt autoremove -s
+
+testdpkgstatus 'pi' '1' 'unrelated'
+testsuccess apt purge unrelated -y
diff --git a/test/integration/test-apt-get-build-dep b/test/integration/test-apt-get-build-dep
new file mode 100755
index 000000000..403de8f35
--- /dev/null
+++ b/test/integration/test-apt-get-build-dep
@@ -0,0 +1,149 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'stable' 'build-essential' 'i386' '1'
+insertpackage 'stable' 'build-essential2' 'i386' '1'
+insertpackage 'stable' 'build-depends' 'i386' '1'
+insertpackage 'stable' 'build-depends-arch' 'i386' '1'
+insertpackage 'stable' 'build-depends-indep' 'i386' '1'
+insertinstalledpackage 'build-conflicts' 'i386' '1'
+insertinstalledpackage 'build-conflicts-arch' 'i386' '1'
+insertinstalledpackage 'build-conflicts-indep' 'i386' '1'
+
+setupaptarchive
+
+cat > foobar.dsc <<EOF
+Format: 3.0 (native)
+Source: foobar
+Binary: foobar
+Architecture: all
+Version: 1
+Maintainer: Joe Sixpack <joe@example.org>
+Build-Depends: build-depends (>= 1)
+Build-Depends-Indep: build-depends-indep (>= 1)
+Build-Depends-Arch: build-depends-arch (>= 1)
+Build-Conflicts: build-conflicts (>= 1)
+Build-Conflicts-Indep: build-conflicts-indep (>= 1)
+Build-Conflicts-Arch: build-conflicts-arch (>= 1)
+Standards-Version: 3.9.8
+EOF
+testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ build-conflicts build-conflicts-arch build-conflicts-indep
+The following NEW packages will be installed:
+ build-depends build-depends-arch build-depends-indep build-essential
+0 upgraded, 4 newly installed, 3 to remove and 0 not upgraded.
+Remv build-conflicts [1]
+Remv build-conflicts-arch [1]
+Remv build-conflicts-indep [1]
+Inst build-depends (1 stable [i386])
+Inst build-depends-arch (1 stable [i386])
+Inst build-depends-indep (1 stable [i386])
+Inst build-essential (1 stable [i386])
+Conf build-depends (1 stable [i386])
+Conf build-depends-arch (1 stable [i386])
+Conf build-depends-indep (1 stable [i386])
+Conf build-essential (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc
+
+testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ build-conflicts build-conflicts-arch build-conflicts-indep
+The following NEW packages will be installed:
+ build-depends build-depends-arch build-depends-indep build-essential2
+0 upgraded, 4 newly installed, 3 to remove and 0 not upgraded.
+Remv build-conflicts [1]
+Remv build-conflicts-arch [1]
+Remv build-conflicts-indep [1]
+Inst build-depends (1 stable [i386])
+Inst build-depends-arch (1 stable [i386])
+Inst build-depends-indep (1 stable [i386])
+Inst build-essential2 (1 stable [i386])
+Conf build-depends (1 stable [i386])
+Conf build-depends-arch (1 stable [i386])
+Conf build-depends-indep (1 stable [i386])
+Conf build-essential2 (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc -o APT::Build-Essential="build-essential2"
+
+testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ build-conflicts build-conflicts-arch build-conflicts-indep
+The following NEW packages will be installed:
+ build-depends build-depends-arch build-depends-indep
+0 upgraded, 3 newly installed, 3 to remove and 0 not upgraded.
+Remv build-conflicts [1]
+Remv build-conflicts-arch [1]
+Remv build-conflicts-indep [1]
+Inst build-depends (1 stable [i386])
+Inst build-depends-arch (1 stable [i386])
+Inst build-depends-indep (1 stable [i386])
+Conf build-depends (1 stable [i386])
+Conf build-depends-arch (1 stable [i386])
+Conf build-depends-indep (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc -o APT::Build-Essential=","
+
+testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ build-conflicts build-conflicts-arch build-conflicts-indep
+The following NEW packages will be installed:
+ build-depends build-depends-arch build-depends-indep build-essential
+ build-essential2
+0 upgraded, 5 newly installed, 3 to remove and 0 not upgraded.
+Remv build-conflicts [1]
+Remv build-conflicts-arch [1]
+Remv build-conflicts-indep [1]
+Inst build-depends (1 stable [i386])
+Inst build-depends-arch (1 stable [i386])
+Inst build-depends-indep (1 stable [i386])
+Inst build-essential (1 stable [i386])
+Inst build-essential2 (1 stable [i386])
+Conf build-depends (1 stable [i386])
+Conf build-depends-arch (1 stable [i386])
+Conf build-depends-indep (1 stable [i386])
+Conf build-essential (1 stable [i386])
+Conf build-essential2 (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc -o APT::Build-Essential::="build-essential2"
+
+testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ build-conflicts build-conflicts-arch
+The following NEW packages will be installed:
+ build-depends build-depends-arch build-essential
+0 upgraded, 3 newly installed, 2 to remove and 0 not upgraded.
+Remv build-conflicts [1]
+Remv build-conflicts-arch [1]
+Inst build-depends (1 stable [i386])
+Inst build-depends-arch (1 stable [i386])
+Inst build-essential (1 stable [i386])
+Conf build-depends (1 stable [i386])
+Conf build-depends-arch (1 stable [i386])
+Conf build-essential (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc --arch-only
+
+testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ build-conflicts build-conflicts-indep
+The following NEW packages will be installed:
+ build-depends build-depends-indep build-essential
+0 upgraded, 3 newly installed, 2 to remove and 0 not upgraded.
+Remv build-conflicts [1]
+Remv build-conflicts-indep [1]
+Inst build-depends (1 stable [i386])
+Inst build-depends-indep (1 stable [i386])
+Inst build-essential (1 stable [i386])
+Conf build-depends (1 stable [i386])
+Conf build-depends-indep (1 stable [i386])
+Conf build-essential (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc --indep-only
diff --git a/test/integration/test-apt-get-build-dep-file b/test/integration/test-apt-get-build-dep-file
new file mode 100755
index 000000000..07de8bb30
--- /dev/null
+++ b/test/integration/test-apt-get-build-dep-file
@@ -0,0 +1,208 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'stable' 'debhelper' 'i386' '7'
+insertpackage 'stable' 'build-essential' 'i386' '1'
+insertpackage 'stable' 'build-depends' 'i386' '1'
+insertsource 'stable' 'unrelated' 'any' '1'
+insertinstalledpackage 'build-conflict' 'i386' '1'
+
+setupaptarchive
+
+msgmsg 'Test with' 'unsigned dsc'
+cat > 2vcard_0.5-3.dsc <<EOF
+Format: 1.0
+Source: 2vcard
+Binary: 2vcard
+Architecture: all
+Version: 0.5-3
+Maintainer: Martin Albisetti <argentina@gmail.com>
+Uploaders: Marcela Tiznado <mlt@debian.org>
+Standards-Version: 3.8.0
+Build-Depends: debhelper (>= 5.0.37)
+Build-Conflicts: build-conflict (<< 2)
+Checksums-Sha1:
+ b7f1ce31ec856414a3f0f1090689f91aa7456d56 9398 2vcard_0.5.orig.tar.gz
+ 5f9acd07ebda6ab00fa6b4fe3198c13e94090862 2036 2vcard_0.5-3.diff.gz
+Checksums-Sha256:
+ efdc22859ac2f8f030d038dc4faa9020082ebae34212498c288968ffd45c9764 9398 2vcard_0.5.orig.tar.gz
+ 82673ff3456af571094066c89bcea87b25c23c87cf1d0050b731e5222563626b 2036 2vcard_0.5-3.diff.gz
+Files:
+ f73a69c170f772f3f6e75f2d11bbb792 9398 2vcard_0.5.orig.tar.gz
+ 1e806d32233af87437258d86b1561f57 2036 2vcard_0.5-3.diff.gz
+EOF
+
+test2vcardbuilddep() {
+ local name="$1"
+ testsuccessequal "Note, using file './$name' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ build-conflict
+The following NEW packages will be installed:
+ build-essential debhelper
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv build-conflict [1]
+Inst build-essential (1 stable [i386])
+Inst debhelper (7 stable [i386])
+Conf build-essential (1 stable [i386])
+Conf debhelper (7 stable [i386])" aptget build-dep -s ./$name
+testfailure aptget build-dep --simulate $name
+cd downloaded
+testsuccess aptget build-dep --simulate ../$name
+testsuccess aptget build-dep --simulate "$(readlink -f ../$name)"
+cd ..
+}
+test2vcardbuilddep "2vcard_0.5-3.dsc"
+cp "2vcard_0.5-3.dsc" "2VCard_0.5-3.dsc"
+test2vcardbuilddep "2VCard_0.5-3.dsc"
+
+msgmsg 'Test with' 'signed dsc'
+cat > 2vcard_0.5-3.dsc <<EOF
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+Format: 1.0
+Source: 2vcard
+Binary: 2vcard
+Architecture: all
+Version: 0.5-3
+Maintainer: Martin Albisetti <argentina@gmail.com>
+Uploaders: Marcela Tiznado <mlt@debian.org>
+Standards-Version: 3.8.0
+Build-Depends: debhelper (>= 5.0.37)
+Build-Conflicts: build-conflict (<< 2)
+Checksums-Sha1:
+ b7f1ce31ec856414a3f0f1090689f91aa7456d56 9398 2vcard_0.5.orig.tar.gz
+ 5f9acd07ebda6ab00fa6b4fe3198c13e94090862 2036 2vcard_0.5-3.diff.gz
+Checksums-Sha256:
+ efdc22859ac2f8f030d038dc4faa9020082ebae34212498c288968ffd45c9764 9398 2vcard_0.5.orig.tar.gz
+ 82673ff3456af571094066c89bcea87b25c23c87cf1d0050b731e5222563626b 2036 2vcard_0.5-3.diff.gz
+Files:
+ f73a69c170f772f3f6e75f2d11bbb792 9398 2vcard_0.5.orig.tar.gz
+ 1e806d32233af87437258d86b1561f57 2036 2vcard_0.5-3.diff.gz
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+
+iEYEARECAAYFAkijKhsACgkQsrBfRdYmq7aA2gCfaOW9riTYVQMx5ajKQVAcctlC
+z2UAn1oXgTai6opwhVfkxrlmJ+iRxzuc
+=4eRd
+-----END PGP SIGNATURE-----
+EOF
+test2vcardbuilddep "2vcard_0.5-3.dsc"
+cp "2vcard_0.5-3.dsc" "2VCard_0.5-3.dsc"
+test2vcardbuilddep "2VCard_0.5-3.dsc"
+
+
+msgmsg 'Test with' 'unpacked source dir'
+mkdir -p foo-1.0/debian
+cat > foo-1.0/debian/control <<'EOF'
+Source: apturl
+Section: admin
+Priority: optional
+Maintainer: Michael Vogt <mvo@ubuntu.com>
+Build-Depends: debhelper (>= 7)
+X-Python3-Version: >= 3.2
+Standards-Version: 3.9.3
+
+Package: apturl-common
+Architecture: any
+Depends: ${python3:Depends},
+ ${shlibs:Depends},
+ ${misc:Depends},
+ python3-apt,
+ python3-update-manager
+Replaces: apturl (<< 0.3.6ubuntu2)
+Description: install packages using the apt protocol - common data
+ AptUrl is a simple graphical application that takes an URL (which follows the
+ apt-protocol) as a command line option, parses it and carries out the
+ operations that the URL describes (that is, it asks the user if he wants the
+ indicated packages to be installed and if the answer is positive does so for
+ him).
+ .
+ This package contains the common data shared between the frontends.
+
+EOF
+
+testsuccessequal "Note, using directory './foo-1.0' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ build-essential debhelper
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst build-essential (1 stable [i386])
+Inst debhelper (7 stable [i386])
+Conf build-essential (1 stable [i386])
+Conf debhelper (7 stable [i386])" aptget build-dep --simulate ./foo-1.0
+testfailure aptget build-dep --simulate foo-1.0
+cd downloaded
+testsuccess aptget build-dep --simulate ../foo-1.0
+testsuccess aptget build-dep --simulate "$(readlink -f ../foo-1.0)"
+cd ..
+cd foo-1.0
+testsuccess aptget build-dep --simulate './'
+testsuccess aptget build-dep --simulate '.'
+cd debian
+testsuccess aptget build-dep --simulate './../'
+testsuccess aptget build-dep --simulate '../'
+testsuccess aptget build-dep --simulate '..'
+cd ../..
+
+testfailureequal 'E: Must specify at least one package to check builddeps for' aptget build-dep
+testfailureequal 'E: No architecture information available for armel. See apt.conf(5) APT::Architectures for setup' aptget build-dep --simulate ./foo-1.0 -a armel
+testfailureequal 'Reading package lists...
+E: Unable to find a source package for foo' aptget build-dep --simulate foo
+
+msgmsg 'Test with a dsc' 'with comments'
+cat > comments.dsc <<EOF
+# I love comments
+# I love them so much, I give them their own paragraph
+
+#This is my first package
+Format: 3.0 (native)
+Source: comments
+Binary: comments
+Architecture: all
+Version: 1
+#Version: 2
+Maintainer: Joe Sixpack <joe@example.org>
+Build-Depends: debhelper (>= 5),
+# TODO: add more
+ build-depends (= 1),
+Standards-Version: 3.9.6
+# This is the end…
+
+# or this?
+EOF
+testsuccessequal "Note, using file './comments.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ build-depends build-essential debhelper
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst build-depends (1 stable [i386])
+Inst build-essential (1 stable [i386])
+Inst debhelper (7 stable [i386])
+Conf build-depends (1 stable [i386])
+Conf build-essential (1 stable [i386])
+Conf debhelper (7 stable [i386])" aptget build-dep --simulate ./comments.dsc
+testsuccessequal "Note, using file './comments.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+Execute external solver...
+The following NEW packages will be installed:
+ build-depends build-essential debhelper
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst build-depends (1 stable [i386])
+Inst build-essential (1 stable [i386])
+Inst debhelper (7 stable [i386])
+Conf build-depends (1 stable [i386])
+Conf build-essential (1 stable [i386])
+Conf debhelper (7 stable [i386])" aptget build-dep --simulate ./comments.dsc --solver apt
diff --git a/test/integration/test-apt-get-changelog b/test/integration/test-apt-get-changelog
new file mode 100755
index 000000000..ee7b3ef97
--- /dev/null
+++ b/test/integration/test-apt-get-changelog
@@ -0,0 +1,134 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+buildsimplenativepackage 'dpkg' 'native' '42' 'stable'
+buildsimplenativepackage 'foo' 'all' '1.0' 'stable'
+buildsimplenativepackage 'libbar' 'all' '1.0' 'stable'
+
+getlabelfromsuite() { echo 'Testcases'; }
+getoriginfromsuite() { echo 'Debian'; }
+
+setupaptarchive --no-update
+changetowebserver
+testsuccess aptget update
+
+testsuccessequal "'http://metadata.ftp-master.debian.org/changelogs/main/f/foo/foo_1.0_changelog' foo.changelog
+'http://metadata.ftp-master.debian.org/changelogs/main/libb/libbar/libbar_1.0_changelog' libbar.changelog" aptget changelog foo libbar --print-uris
+
+releasechanger() {
+ # modifying the Release files in lists… bad stuff. Good that this is only a test…
+ sed -i "s#^${1}: .*#${1}: ${2}#" $(find rootdir/var/lib/apt/lists -name '*Release')
+ rm -f rootdir/var/cache/apt/*.bin
+}
+releasechanger 'Origin' 'Ubuntu'
+testsuccessequal "'http://changelogs.ubuntu.com/changelogs/pool/main/f/foo/foo_1.0/changelog' foo.changelog
+'http://changelogs.ubuntu.com/changelogs/pool/main/libb/libbar/libbar_1.0/changelog' libbar.changelog" aptget changelog foo libbar --print-uris
+
+releasechanger 'Label' 'Debian'
+testsuccessequal "'http://changelogs.ubuntu.com/changelogs/pool/main/f/foo/foo_1.0/changelog' foo.changelog
+'http://changelogs.ubuntu.com/changelogs/pool/main/libb/libbar/libbar_1.0/changelog' libbar.changelog" aptget changelog foo libbar --print-uris
+
+testsuccessequal "'http://localhost:${APTHTTPPORT}/main/f/foo/foo_1.0.changelog' foo.changelog
+'http://localhost:${APTHTTPPORT}/main/libb/libbar/libbar_1.0.changelog' libbar.changelog" aptget changelog foo libbar --print-uris -o Acquire::Changelogs::URI::Label::Debian="http://localhost:${APTHTTPPORT}/@CHANGEPATH@.changelog"
+
+sed -i '/^Origin: / a\
+Changelogs: http://example.org/@CHANGEPATH@-changelog' $(find rootdir/var/lib/apt/lists -name '*Release')
+rm -f rootdir/var/cache/apt/*.bin
+
+testsuccessequal "'http://example.org/main/f/foo/foo_1.0-changelog' foo.changelog
+'http://example.org/main/libb/libbar/libbar_1.0-changelog' libbar.changelog" aptget changelog foo libbar --print-uris -o Acquire::Changelogs::URI::Label::Debian="http://localhost:${APTHTTPPORT}/@CHANGEPATH@.changelog"
+
+testsuccessequal "'http://localhost:${APTHTTPPORT}/main/f/foo/foo_1.0.changelog' foo.changelog
+'http://localhost:${APTHTTPPORT}/main/libb/libbar/libbar_1.0.changelog' libbar.changelog" aptget changelog foo libbar --print-uris -o Acquire::Changelogs::URI::Override::Label::Debian="http://localhost:${APTHTTPPORT}/@CHANGEPATH@.changelog"
+
+releasechanger 'Changelogs' 'no'
+testfailuremsg 'E: Failed to fetch changelog:/foo.changelog Changelog unavailable for foo=1.0' aptget changelog foo -d
+
+sed -i '/^Changelogs: / d' $(find rootdir/var/lib/apt/lists -name '*Release')
+releasechanger 'Label' 'Testcases'
+
+echo "Acquire::Changelogs::URI::Label::Testcases \"http://localhost:${APTHTTPPORT}/@CHANGEPATH@/change.txt\";" > rootdir/etc/apt/apt.conf.d/changelog.conf
+testsuccessequal "'http://localhost:${APTHTTPPORT}/main/f/foo/foo_1.0/change.txt' foo.changelog
+'http://localhost:${APTHTTPPORT}/main/libb/libbar/libbar_1.0/change.txt' libbar.changelog" aptget changelog foo libbar --print-uris
+
+echo "Acquire::Changelogs::URI::Label::Testcases \"http://localhost:${APTHTTPPORT}/pool/@CHANGEPATH@/changelog\";" > rootdir/etc/apt/apt.conf.d/changelog.conf
+testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/f/foo/foo_1.0/changelog' foo.changelog" aptget changelog foo --print-uris
+
+
+testsuccess aptget changelog foo -qq
+testfileequal 'rootdir/tmp/testsuccess.output' "$(cat aptarchive/pool/main/f/foo/foo_1.0/changelog)"
+
+testsuccess aptget changelog foo libbar -qq
+testfileequal 'rootdir/tmp/testsuccess.output' "$(cat aptarchive/pool/main/f/foo/foo_1.0/changelog)
+$(cat aptarchive/pool/main/libb/libbar/libbar_1.0/changelog)"
+
+testsuccess aptget changelog foo -d
+testfilestats 'foo.changelog' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+testfileequal 'foo.changelog' "$(cat aptarchive/pool/main/f/foo/foo_1.0/changelog)"
+rm -f foo.changelog
+
+testsuccess aptget changelog libbar foo -d
+testfilestats 'libbar.changelog' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+testfilestats 'foo.changelog' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+testfileequal 'libbar.changelog' "$(cat aptarchive/pool/main/libb/libbar/libbar_1.0/changelog)"
+testfileequal 'foo.changelog' "$(cat aptarchive/pool/main/f/foo/foo_1.0/changelog)"
+rm -f libbar.changelog foo.changelog
+
+# as such bogus, but can happen with multiple binaries from the same source
+testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/f/foo/foo_1.0/changelog' foo.changelog
+'http://localhost:${APTHTTPPORT}/pool/main/f/foo/foo_1.0/changelog' foo.changelog" aptget changelog foo foo --print-uris
+testsuccess aptget changelog foo foo -qq
+testfileequal 'rootdir/tmp/testsuccess.output' "$(cat aptarchive/pool/main/f/foo/foo_1.0/changelog)
+$(cat aptarchive/pool/main/f/foo/foo_1.0/changelog)"
+testsuccess aptget changelog foo foo -d
+testfilestats 'foo.changelog' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+testfileequal 'foo.changelog' "$(cat aptarchive/pool/main/f/foo/foo_1.0/changelog)"
+# we have the file already, confused?
+testsuccess aptget changelog foo foo -d
+testfilestats 'foo.changelog' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+testfileequal 'foo.changelog' "$(cat aptarchive/pool/main/f/foo/foo_1.0/changelog)"
+echo 'bogus' > foo.changelog
+touch -d 'now + 1 hour' foo.changelog
+testsuccess aptget changelog foo foo -d
+testfilestats 'foo.changelog' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+testfileequal 'foo.changelog' "$(cat aptarchive/pool/main/f/foo/foo_1.0/changelog)"
+echo -n 'bogus' > foo.changelog
+touch -d "$(stat -c%y aptarchive/pool/main/f/foo/foo_1.0/changelog)" foo.changelog
+testsuccess aptget changelog foo foo -d
+testfilestats 'foo.changelog' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+testequal 'bogus1.0) stable; urgency=low' head -n 1 foo.changelog
+rm -f foo.changelog
+
+# no @CHANGEPATH@ in the URI
+testequal 'E: Failed to fetch changelog:/foo.changelog Changelog unavailable for foo=1.0' \
+ aptget changelog foo -qq -d -o Acquire::Changelogs::URI::Label::Testcases="http://localhost:${APTHTTPPORT}/change.txt"
+testfailure test -e foo.changelog
+
+testequal "E: Failed to fetch http://localhost:${APTHTTPPORT}/does/not/exist/main/f/foo/foo_1.0/change.txt Changelog unavailable for foo=1.0 (404 Not Found)" \
+ aptget changelog foo -qq -d -o Acquire::Changelogs::URI::Label::Testcases="http://localhost:${APTHTTPPORT}/does/not/exist/@CHANGEPATH@/change.txt"
+testfailure test -e foo.changelog
+
+testdpkgnotinstalled 'foo'
+testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/f/foo/foo_1.0/changelog' foo.changelog" apt changelog foo --print-uris -o Acquire::Changelogs::AlwaysOnline=false
+testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/f/foo/foo_1.0/changelog' foo.changelog" apt changelog foo --print-uris -o Acquire::Changelogs::AlwaysOnline=true
+
+testsuccess apt install dpkg -y
+# at this moment, we still have the Releasefile claim to be origin:ubuntu
+echo 'Acquire::Changelogs::AlwaysOnline::Origin::Ubuntu "false";' >> rootdir/etc/apt/apt.conf.d/nooriginchangelogs
+testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/d/dpkg/dpkg_42/changelog' dpkg.changelog" apt changelog dpkg --print-uris
+testsuccessequal "'copy://${TMPWORKINGDIRECTORY}/rootdir/usr/share/doc/dpkg/changelog' dpkg.changelog" apt changelog dpkg --print-uris -o Acquire::Changelogs::AlwaysOnline=false
+testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/d/dpkg/dpkg_42/changelog' dpkg.changelog" apt changelog dpkg --print-uris -o Acquire::Changelogs::AlwaysOnline=true
+testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/d/dpkg/dpkg_42/changelog' dpkg.changelog" apt changelog dpkg --print-uris -o Acquire::Changelogs::AlwaysOnline=false -o Acquire::Changelogs::AlwaysOnline::Origin::Ubuntu=true
+testsuccessequal "'copy://${TMPWORKINGDIRECTORY}/rootdir/usr/share/doc/dpkg/changelog' dpkg.changelog" apt changelog dpkg --print-uris -o Acquire::Changelogs::AlwaysOnline=false -o Acquire::Changelogs::AlwaysOnline::Origin::Debian=true
+
+testsuccess apt changelog dpkg -d
+testfilestats 'dpkg.changelog' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+head -n 3 dpkg.changelog > dpkg.change
+testfileequal 'dpkg.change' "$(apthelper cat-file 'rootdir/usr/share/doc/dpkg/changelog' | head -n 3)"
+rm -f dpkg.change dpkg.changelog
diff --git a/test/integration/test-apt-get-clean b/test/integration/test-apt-get-clean
new file mode 100755
index 000000000..d05073218
--- /dev/null
+++ b/test/integration/test-apt-get-clean
@@ -0,0 +1,88 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'testing' 'foo' 'all' '1'
+insertpackage 'unstable' 'foo' 'all' '2'
+insertpackage 'experimental' 'foo' 'all' '1:1'
+insertinstalledpackage 'foo' 'all' '3'
+
+setupaptarchive --no-update
+
+mkdir -p rootdir/var/lib/apt/lists/lost+found
+testsuccess apt update
+
+# nothing to do always works
+testsuccess aptget clean
+testsuccess aptget clean -s
+
+# generate some dirt and clean it up
+generatedirt() {
+ touch rootdir/var/lib/apt/lists/partial/http.debian.net_debian_dists_sid_main_i18n_Translation-en
+ mkdir -p rootdir/var/cache/apt/archives/lost+found
+ touch rootdir/var/cache/apt/archives/foo_1_all.deb
+ touch rootdir/var/cache/apt/archives/foo_1%3a1_all.deb
+ touch rootdir/var/cache/apt/archives/foo_2%3a1_all.deb
+ touch rootdir/var/cache/apt/archives/foo_2_all.deb
+ touch rootdir/var/cache/apt/archives/foo_3_all.deb
+ touch rootdir/var/cache/apt/archives/foo_4_all.deb
+}
+
+generatedirt
+testsuccess aptget autoclean
+testsuccess test -e rootdir/var/lib/apt/lists/partial/http.debian.net_debian_dists_sid_main_i18n_Translation-en
+testsuccess test -e rootdir/var/cache/apt/archives/foo_1_all.deb
+testsuccess test -e rootdir/var/cache/apt/archives/foo_1%3a1_all.deb
+testfailure test -e rootdir/var/cache/apt/archives/foo_2%3a1_all.deb
+testsuccess test -e rootdir/var/cache/apt/archives/foo_2_all.deb
+testfailure test -e rootdir/var/cache/apt/archives/foo_3_all.deb
+testfailure test -e rootdir/var/cache/apt/archives/foo_4_all.deb
+
+generatedirt
+testsuccess aptget clean
+testfailure test -e rootdir/var/lib/apt/lists/partial/http.debian.net_debian_dists_sid_main_i18n_Translation-en
+testfailure test -e rootdir/var/cache/apt/archives/foo_1_all.deb
+testfailure test -e rootdir/var/cache/apt/archives/foo_1%3a1_all.deb
+testfailure test -e rootdir/var/cache/apt/archives/foo_2%3a1_all.deb
+testfailure test -e rootdir/var/cache/apt/archives/foo_2_all.deb
+testfailure test -e rootdir/var/cache/apt/archives/foo_3_all.deb
+testfailure test -e rootdir/var/cache/apt/archives/foo_4_all.deb
+
+if [ "$(id -u)" != '0' ]; then
+ msgmsg 'No clean if lock can not be acquired'
+ touch rootdir/var/cache/apt/archives/foo_4_all.deb
+ touch rootdir/var/cache/apt/archives/lock
+ chmod 444 rootdir/var/cache/apt/archives/lock
+ testfailure apt clean
+ testsuccess test -e rootdir/var/cache/apt/archives/foo_4_all.deb
+ chmod 644 rootdir/var/cache/apt/archives/lock
+fi
+
+directorygone() {
+ rm -rf "$1"
+ testsuccess apt autoclean
+ testfailure test -d "$1"
+ testsuccess apt clean
+ # clean creates an empty partial directory via GetLock
+ if [ "$(basename "$1")" = 'partial' ]; then
+ testsuccess test -d "$1"
+ else
+ testfailure test -d "$1"
+ fi
+}
+msgmsg 'Partial directory missing'
+directorygone 'rootdir/var/cache/apt/archives/partial'
+directorygone 'rootdir/var/lib/apt/lists/partial'
+
+msgmsg 'Archives directory missing'
+directorygone 'rootdir/var/cache/apt/archives'
+directorygone 'rootdir/var/lib/apt/lists'
+
+msgmsg 'apt directory missing'
+directorygone 'rootdir/var/cache/apt'
+directorygone 'rootdir/var/lib/apt'
diff --git a/test/integration/test-apt-get-download b/test/integration/test-apt-get-download
new file mode 100755
index 000000000..fc0e6cfa3
--- /dev/null
+++ b/test/integration/test-apt-get-download
@@ -0,0 +1,113 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+confighashes 'SHA512'
+
+buildsimplenativepackage 'apt' 'all' '1.0' 'stable'
+buildsimplenativepackage 'apt' 'all' '2.0' 'unstable'
+insertinstalledpackage 'vrms' 'all' '1.0'
+
+addtrap 'prefix' "umask $(umask);"
+umask 0027
+setupaptarchive --no-update
+
+# directories should be readable by everyone
+find aptarchive/dists -type d | while read dir; do
+ chmod o+rx "$dir"
+done
+# apt-ftparchive knows how to chmod files
+find aptarchive/dists -name '*Packages*' -type f | while read file; do
+ testaccessrights "$file" '644'
+ chmod 640 "$file"
+done
+# created by the framework without special care
+find aptarchive/dists -name '*Release*' -type f | while read file; do
+ testaccessrights "$file" '640'
+done
+if [ "$(id -u)" = '0' ]; then
+ # Release file can't be accessed by _apt
+ testsuccesswithnotice aptget update
+fi
+
+#everything (too) permissive
+find aptarchive/ -type f | while read file; do
+ chmod 777 "$file"
+done
+find incoming/ -type f | while read file; do
+ chmod 777 "$file"
+done
+testsuccess aptget update
+
+testdownload() {
+ local DEB="$1"
+ shift
+ msgtest "Test download of package file $DEB with" "$@"
+ testsuccess --nomsg aptget download "$@" -o Debug::pkgAcquire::Worker=1 -o Debug::pkgAcquire::Auth=1
+ testsuccess test -f "$DEB"
+ testaccessrights "$DEB" '644'
+ rm -f "$DEB"
+}
+
+# normal case as "root"
+OLDPWD="$(pwd)"
+cd downloaded
+testdownload apt_2.0_all.deb apt
+cd "$OLDPWD"
+
+# simulate normal user with non-existent root-owned directories
+rm -rf rootdir/var/cache/apt/archives/
+mkdir rootdir/var/cache/apt/archives/
+addtrap 'prefix' "chmod -f -R +w $PWD/rootdir/var/cache/apt/archives || true;"
+chmod -R -w rootdir/var/cache/apt/archives
+
+OLDPWD="$(pwd)"
+cd downloaded
+
+# normal case(es)
+testdownload apt_1.0_all.deb apt/stable
+testdownload apt_2.0_all.deb apt
+
+DEBFILE="$(readlink -f ../aptarchive)/pool/apt_2.0_all.deb"
+testequal "'file://${DEBFILE}' apt_2.0_all.deb $(stat -c%s "$DEBFILE") SHA512:$(sha512sum "$DEBFILE" | cut -d' ' -f 1)" aptget download apt --print-uris
+
+# deb:677887
+testequal "E: Can't find a source to download version '1.0' of 'vrms:i386'" aptget download vrms --print-uris
+testequal "E: Can't find a source to download version '1.0' of 'vrms:i386'" aptget download vrms
+
+# deb:736962
+testsuccess aptget download apt
+testsuccess test -s apt_2.0_all.deb
+testaccessrights 'apt_2.0_all.deb' '644'
+testsuccess aptget download apt
+testsuccess test -s apt_2.0_all.deb
+testaccessrights 'apt_2.0_all.deb' '644'
+
+rm -f apt_1.0_all.deb apt_2.0_all.deb
+
+# deb:738103
+testdownload apt_2.0_all.deb apt apt apt/unstable apt=2.0
+
+# FIXME: pick up already downloaded deb files for real
+# restore "root" rights
+#cd "$OLDPWD"
+#chmod -f -R +w "$PWD/rootdir/var/cache/apt/archives"
+#rm -rf rootdir/var/cache/apt/archives/
+
+# file: debs aren't copied to archives, so change to http which obviously are
+#changetowebserver
+#testsuccess aptget update
+
+# test with already stored deb
+#testsuccess aptget install -d apt
+#testsuccess test -s rootdir/var/cache/apt/archives/apt_2.0_all.deb
+#testaccessrights 'rootdir/var/cache/apt/archives/apt_2.0_all.deb' '644'
+#mv aptarchive/pool/apt_2.0_all.deb aptarchive/pool/apt_2.0_all.deb.gone
+#cd downloaded
+#testdownload apt_2.0_all.deb apt
+#cd "$OLDPWD"
+#mv aptarchive/pool/apt_2.0_all.deb.gone aptarchive/pool/apt_2.0_all.deb
diff --git a/test/integration/test-apt-get-install-deb b/test/integration/test-apt-get-install-deb
new file mode 100755
index 000000000..36e94a2dc
--- /dev/null
+++ b/test/integration/test-apt-get-install-deb
@@ -0,0 +1,200 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+# regression test for #754904
+testfailureequal 'E: Unsupported file /dev/null given on commandline' aptget install -qq /dev/null
+
+# only consider .deb files
+cat > foo.rpm <<EOF
+I'm not a deb, I'm a teapot.
+EOF
+testfailureequal 'E: Unsupported file ./foo.rpm given on commandline' aptget install -qq ./foo.rpm
+
+# and ensure we fail for invalid debs
+mv foo.rpm foo.deb
+testfailuremsg "E: Sub-process Popen returned an error code (2)
+E: Encountered a section with no Package: header
+E: Problem with MergeList ${TMPWORKINGDIRECTORY}/foo.deb
+E: The package lists or status file could not be parsed or opened." aptget install ./foo.deb
+
+buildsimplenativepackage 'foo' 'i386,amd64' '1.0'
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'foo:i386' instead of './incoming/foo_1.0_i386.deb'
+Note, selecting 'foo' instead of './incoming/foo_1.0_amd64.deb'
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ foo:i386 : Conflicts: foo but 1.0 is to be installed
+ foo : Conflicts: foo:i386 but 1.0 is to be installed
+E: Unable to correct problems, you have held broken packages." aptget install ./incoming/foo_1.0_i386.deb ./incoming/foo_1.0_amd64.deb -s
+
+testdpkgnotinstalled 'foo' 'foo:i386'
+testsuccess aptget install ./incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1
+testdpkginstalled 'foo:i386'
+testfailure aptget install incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1
+cd downloaded
+testsuccess aptget install "$(readlink -f ../incoming/foo_1.0_i386.deb)" -o Debug::pkgCacheGen=1 -y --reinstall
+testfailure grep 'is already the newest version' ../rootdir/tmp/testsuccess.output
+testsuccess aptget install ../incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1 -y --reinstall
+testfailure grep 'is already the newest version' ../rootdir/tmp/testsuccess.output
+cd ..
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Note, selecting 'foo' instead of './incoming/foo_1.0_amd64.deb'
+The following packages will be REMOVED:
+ foo:i386
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv foo:i386 [1.0]
+Inst foo (1.0 local-deb [amd64])
+Conf foo (1.0 local-deb [amd64])" aptget install ./incoming/foo_1.0_amd64.deb -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget install --with-source ./incoming/foo_1.0_amd64.deb -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ foo:i386
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv foo:i386 [1.0]
+Inst foo (1.0 local-deb [amd64])
+Conf foo (1.0 local-deb [amd64])' aptget install --with-source ./incoming/foo_1.0_amd64.deb foo -s
+
+# Check that installing the local deb works if it is not the candidate
+echo "Package: foo
+Pin: version 1.0
+Pin-Priority: -1" > rootdir/etc/apt/preferences
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Note, selecting 'foo' instead of './incoming/foo_1.0_amd64.deb'
+The following packages will be REMOVED:
+ foo:i386
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv foo:i386 [1.0]
+Inst foo (1.0 local-deb [amd64])
+Conf foo (1.0 local-deb [amd64])" aptget install ./incoming/foo_1.0_amd64.deb -s
+
+createpkg() {
+ local PKG="pkg-$1"
+ mkdir -p ./incoming/$PKG/DEBIAN
+ if [ -n "$2" ]; then
+ echo -n "$2" >> ./incoming/$PKG/DEBIAN/control
+ fi
+ echo "Package: $PKG
+Version: 0
+Priority: extra
+Maintainer: No Body <no@example.org>
+Architecture: all
+Depends: foo:i386
+Description: test package" >> ./incoming/$PKG/DEBIAN/control
+ if [ -n "$3" ]; then
+ echo -n "$3" >> ./incoming/$PKG/DEBIAN/control
+ fi
+ testsuccess dpkg-deb --build ./incoming/$PKG/ ./incoming
+ #dpkg-deb -I ./incoming/${PKG}_0_all.deb control
+}
+createpkg 'as-it-should-be'
+createpkg 'leading-newline' '
+
+'
+createpkg 'trailing-newline' '' '
+'
+
+echo 'Package: /pkg-/
+Pin: release a=experimental
+Pin-Priority: 501' > rootdir/etc/apt/preferences.d/pinit
+
+testsuccess aptget install ./incoming/pkg-as-it-should-be_0_all.deb
+testsuccess aptget install "$(readlink -f ./incoming/pkg-leading-newline_0_all.deb)"
+testsuccess aptget install ./incoming/pkg-trailing-newline_0_all.deb
+
+testempty apt clean
+if [ "$(id -u)" = '0' ]; then
+ # see if permission dropping is checked before usage
+ chmod 711 ./incoming
+ testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall
+ testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output
+ chmod 710 ./incoming
+ testsuccesswithnotice aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall
+ testfailure grep 'is already the newest version' rootdir/tmp/testsuccesswithnotice.output
+ chmod 700 ./incoming
+ testsuccesswithnotice aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall
+ testfailure grep 'is already the newest version' rootdir/tmp/testsuccesswithnotice.output
+ chmod 711 ./incoming
+else
+ testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall
+ testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output
+fi
+
+sed -i -e '/^Depends: foo/ d' rootdir/var/lib/dpkg/status
+testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb
+testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output
+testsuccess apt purge -y pkg-as-it-should-be
+
+echo "Package: pkg-as-it-should-be
+Architecture: all
+Version: 0
+Installed-Size: 2903
+Filename: incoming/pkg-as-it-should-be_0_all.deb
+Size: $(stat -c %s incoming/pkg-as-it-should-be_0_all.deb)
+SHA256: $(sha256sum incoming/pkg-as-it-should-be_0_all.deb | cut -d' ' -f 1)
+" > Packages
+testdpkgnotinstalled 'pkg-as-it-should-be'
+testnopackage pkg-as-it-should-be
+testsuccess apt install --with-source ./Packages pkg-as-it-should-be -s
+testsuccess apt install --with-source ./Packages pkg-as-it-should-be --print-uris
+testsuccess apt show --with-source ./Packages pkg-as-it-should-be
+testequal 'Package: pkg-as-it-should-be' head -n1 rootdir/tmp/testsuccess.output
+testsuccess apt install -y --with-source ./Packages pkg-as-it-should-be
+testdpkginstalled 'pkg-as-it-should-be'
+rm -f ./Packages
+
+echo 'dpkg::install::recursive "true";
+dpkg::install::recursive::force "true";
+dpkg::install::recursive::minimum "0";' > rootdir/etc/apt/apt.conf.d/lowerminimum.conf
+mv ./incoming/pkg-as-it-should-be_0_all.deb ./incoming/pkg-as-it-should-be_0_all.ddeb
+testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.ddeb --reinstall
+testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output
+testsuccess apt purge -y pkg-as-it-should-be
+testdpkgnotinstalled 'pkg-as-it-should-be'
+
+mv ./incoming/pkg-as-it-should-be_0_all.ddeb ./incoming/pkg-as-it-should-be_0_all.foobar
+echo "Package: pkg-as-it-should-be
+Architecture: all
+Version: 0
+Installed-Size: 2903
+Filename: incoming/pkg-as-it-should-be_0_all.foobar
+Size: $(stat -c %s incoming/pkg-as-it-should-be_0_all.foobar)
+SHA256: $(sha256sum incoming/pkg-as-it-should-be_0_all.foobar | cut -d' ' -f 1)
+" | gzip > Packages.gz
+testsuccess apt install --with-source ./Packages.gz pkg-as-it-should-be -s
+testsuccess apt install --with-source ./Packages.gz pkg-as-it-should-be --print-uris
+testsuccess apt show --with-source ./Packages.gz pkg-as-it-should-be
+testequal 'Package: pkg-as-it-should-be' head -n1 rootdir/tmp/testsuccess.output
+testsuccess apt install -y --with-source ./Packages.gz pkg-as-it-should-be
+testdpkginstalled 'pkg-as-it-should-be'
diff --git a/test/integration/test-apt-get-install-virtual-pkgs b/test/integration/test-apt-get-install-virtual-pkgs
new file mode 100755
index 000000000..b2fd7499c
--- /dev/null
+++ b/test/integration/test-apt-get-install-virtual-pkgs
@@ -0,0 +1,64 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertpackage 'unstable' 'foo' 'amd64' '1' 'Provides: foo-prv'
+
+insertpackage 'unstable' 'baz1' 'amd64' '1' 'Provides: foo-prv1'
+insertpackage 'unstable' 'foo1' 'amd64' '1' 'Provides: foo-prv1'
+
+insertpackage 'unstable' 'baz2' 'amd64' '1' 'Provides: foo-prv2'
+insertpackage 'unstable' 'foo2' 'amd64' '2' 'Provides: foo-prv2:amd64'
+
+insertpackage 'unstable' 'baz3' 'amd64' '1' 'Provides: foo-prv3'
+insertpackage 'unstable' 'foo3' 'i386' '2' 'Provides: foo-prv3:amd64'
+
+insertpackage 'unstable' 'baz4' 'amd64' '1' 'Provides: foo-prv4:amd64'
+insertpackage 'unstable' 'foo4' 'i386' '2' 'Provides: foo-prv4:amd64'
+
+insertpackage 'experimental' 'baz5' 'amd64' '1' 'Provides: foo-prv5:amd64'
+insertpackage 'experimental' 'foo5' 'i386' '2' 'Provides: foo-prv5:amd64'
+
+setupaptarchive
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'foo' instead of 'foo-prv'
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [amd64])
+Conf foo (1 unstable [amd64])" aptget install foo-prv -s
+
+testvirtuals() {
+ testfailureequal "Reading package lists...
+Building dependency tree...
+Package $1 is a virtual package provided by:
+ $3
+ $2
+You should explicitly select one to install.
+
+E: Package '$1' has no installation candidate" aptget install $1 -s
+}
+
+testvirtuals 'foo-prv1' 'baz1 1' 'foo1 1'
+testvirtuals 'foo-prv2' 'baz2 1' 'foo2 2'
+testvirtuals 'foo-prv3' 'baz3 1' 'foo3:i386 2'
+testvirtuals 'foo-prv4' 'baz4 1' 'foo4:i386 2'
+testvirtuals 'foo-prv5' 'baz5 1' 'foo5:i386 2'
+
+echo 'Package: *
+Pin: release a=experimental
+Pin-Priority: -1' > rootdir/etc/apt/preferences.d/experimental.pref
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Package foo-prv5 is a virtual package provided by:
+ foo5:i386 2 [Not candidate version]
+ baz5 1 [Not candidate version]
+
+E: Package 'foo-prv5' has no installation candidate" aptget install foo-prv5 -s
diff --git a/test/integration/test-apt-get-source-arch b/test/integration/test-apt-get-source-arch
new file mode 100755
index 000000000..ca586f46a
--- /dev/null
+++ b/test/integration/test-apt-get-source-arch
@@ -0,0 +1,68 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386" "amd64"
+
+
+# different version for the individual arches
+insertpackage 'stable' 'foo' 'amd64' '1.0'
+insertsource 'stable' 'foo' 'amd64' '1.0'
+
+insertpackage 'stable' 'foo' 'i386' '1.0'
+insertsource 'stable' 'foo' 'i386' '1.0'
+insertpackage 'stable' 'foo' 'i386' '2.0'
+insertsource 'stable' 'foo' 'i386' '2.0'
+
+insertpackage 'oldstable' 'foo' 'i386' '0.1'
+insertsource 'oldstable' 'foo' 'i386' '0.1'
+# just needed so that there is a release file entry for the test
+insertpackage 'oldstable' 'unreleated' 'amd64' '0.1'
+
+setupaptarchive
+
+APTARCHIVE=$(readlink -f ./aptarchive)
+
+HEADER='Reading package lists...'
+DOWNLOAD10="Need to get 0 B/25 B of source archives.
+'file://${APTARCHIVE}/foo_1.0.dsc' foo_1.0.dsc 11 SHA256:ed7c25c832596339bee13e4e7c45cf49f869b60d2bf57252f18191d75866c2a7
+'file://${APTARCHIVE}/foo_1.0.tar.gz' foo_1.0.tar.gz 14 SHA256:f3da8c6ebc62c8ef2dae439a498dddcdacc1a07f45ff67ad12f44b6e2353c239"
+
+# pick :amd64
+testsuccessequal "$HEADER
+$DOWNLOAD10" aptget source -q --print-uris foo:amd64
+
+# pick :i386
+testsuccessequal "$HEADER
+Need to get 0 B/25 B of source archives.
+'file://${APTARCHIVE}/foo_2.0.dsc' foo_2.0.dsc 11 SHA256:0fcb803ffbeef26db884625aaf06e75f3eda5c994634980e7c20fd37ed1fc104
+'file://${APTARCHIVE}/foo_2.0.tar.gz' foo_2.0.tar.gz 14 SHA256:ca9b0b828ca22372502af2b80f61f0bd9063910ece9fc34eeaf9d9e31aa8195a" aptget source -q --print-uris foo:i386
+
+# pick :i386 by release
+testsuccessequal "$HEADER
+Selected version '0.1' (oldstable) for foo
+Need to get 0 B/25 B of source archives.
+'file://${APTARCHIVE}/foo_0.1.dsc' foo_0.1.dsc 11 SHA256:72af24b0290fe1d13a3e25fddd2633e43c87ff79d249bc850009e47bcce73565
+'file://${APTARCHIVE}/foo_0.1.tar.gz' foo_0.1.tar.gz 14 SHA256:ec748ad88a71f98bfdc012e1a7632377d05fe3ebbf9c0922e0691fe4d79c0585" aptget source -q --print-uris foo:i386/oldstable
+
+# pick :i386 by version
+testsuccessequal "$HEADER
+$DOWNLOAD10" aptget source -q --print-uris foo:i386=1.0
+
+# error on unknown arch
+testfailureequal "$HEADER
+E: Can not find a package for architecture 'not-a-available-arch'
+E: Unable to find a source package for foo:not-a-available-arch" aptget source -q --print-uris foo:not-a-available-arch
+
+# error on unavailable version for arch
+testfailureequal "$HEADER
+E: Can not find a package 'foo:amd64' with version '2.0'
+E: Unable to find a source package for foo:amd64=2.0" aptget source -q --print-uris foo:amd64=2.0
+
+# error on unavailable release for arch
+testfailureequal "$HEADER
+E: Can not find a package 'foo:amd64' with release 'oldstable'
+E: Unable to find a source package for foo:amd64/oldstable" aptget source -q --print-uris foo:amd64/oldstable
diff --git a/test/integration/test-apt-get-source-authenticated b/test/integration/test-apt-get-source-authenticated
new file mode 100755
index 000000000..40710d5d6
--- /dev/null
+++ b/test/integration/test-apt-get-source-authenticated
@@ -0,0 +1,33 @@
+#!/bin/sh
+#
+# Regression test for debian bug #749795. Ensure that we fail with
+# an error if apt-get source foo will download a source that comes
+# from a unauthenticated repository
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+# a "normal" package with source and binary
+buildsimplenativepackage 'foo' 'all' '2.0'
+
+setupaptarchive --no-update
+
+APTARCHIVE="$(readlink -f ./aptarchive)"
+find "$APTARCHIVE/dists/unstable" -name '*Release*' -delete
+
+# update without authenticated InRelease file
+testwarning aptget update --allow-insecure-repositories
+
+# this all should fail
+testfailure aptget install -y foo
+cd downloaded
+testfailure aptget source foo
+testfailure test -e foo_2.0.dsc
+# allow overriding the warning
+testsuccess aptget source --allow-unauthenticated foo -o Debug::pkgAcquire::Worker=1
+testsuccess test -s foo_2.0.dsc -a -L foo_2.0.dsc
diff --git a/test/integration/test-apt-get-source-multisources b/test/integration/test-apt-get-source-multisources
new file mode 100755
index 000000000..06fe19641
--- /dev/null
+++ b/test/integration/test-apt-get-source-multisources
@@ -0,0 +1,29 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'armhf'
+
+insertsource 'unstable' 'adduser' 'all' '3.113+nmu3'
+insertsource 'stable' 'python-fll' 'all' '0.9.11'
+
+insertpackage 'unstable' 'adduser' 'all' '3.113+nmu3'
+insertpackage 'stable' 'python-fll' 'all' '0.9.11'
+
+setupaptarchive
+
+APTARCHIVE=$(readlink -f ./aptarchive)
+
+HEADER='Reading package lists...'
+testsuccessequal "$HEADER
+Need to get 0 B/43 B of source archives.
+'file://${APTARCHIVE}/adduser_3.113+nmu3.dsc' adduser_3.113+nmu3.dsc 22 SHA256:19cc1abe85063976bf71c033f62f3e6bf6621647fe44a6ee31ed687e3fa5cbb7
+'file://${APTARCHIVE}/python-fll_0.9.11.dsc' python-fll_0.9.11.dsc 21 SHA256:51429e835ded66abf6bbc157865af29920435e74aea2836ba1f46443feae9285" aptget source -qdy --print-uris --dsc-only adduser=3.113 python-fll=0.9.11
+
+testsuccessequal "$HEADER
+Need to get 0 B/43 B of source archives.
+'file://${APTARCHIVE}/python-fll_0.9.11.dsc' python-fll_0.9.11.dsc 21 SHA256:51429e835ded66abf6bbc157865af29920435e74aea2836ba1f46443feae9285
+'file://${APTARCHIVE}/adduser_3.113+nmu3.dsc' adduser_3.113+nmu3.dsc 22 SHA256:19cc1abe85063976bf71c033f62f3e6bf6621647fe44a6ee31ed687e3fa5cbb7" aptget source -qdy --print-uris --dsc-only python-fll=0.9.11 adduser=3.113
diff --git a/test/integration/test-apt-get-update-unauth-warning b/test/integration/test-apt-get-update-unauth-warning
new file mode 100755
index 000000000..093478b9e
--- /dev/null
+++ b/test/integration/test-apt-get-update-unauth-warning
@@ -0,0 +1,92 @@
+#!/bin/sh
+#
+# ensure we print warnings for unauthenticated repositories
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+configcompression '.' 'gz'
+
+echo 'Acquire::Progress::Ignore::ShowErrorText "false";' > rootdir/etc/apt/apt.conf.d/99show-no-ignore-errors.conf
+
+# a "normal" package with source and binary
+buildsimplenativepackage 'foo' 'all' '2.0'
+
+setupaptarchive --no-update
+
+APTARCHIVE="$(readlink -f ./aptarchive)"
+find "$APTARCHIVE/dists/unstable" \( -name 'InRelease' -o -name 'Release.gpg' \) -delete
+sed -i -n '/^SHA1:$/q;p' "${APTARCHIVE}/dists/unstable/Release"
+testwarning aptget update
+
+
+rm -rf rootdir/var/lib/apt/lists
+find "$APTARCHIVE/dists/unstable" -name '*Release*' -delete
+# update without authenticated files leads to warning
+testfailureequal "Get:1 file:$APTARCHIVE unstable InRelease
+Ign:1 file:$APTARCHIVE unstable InRelease
+Get:2 file:$APTARCHIVE unstable Release
+Err:2 file:$APTARCHIVE unstable Release
+ File not found - ${APTARCHIVE}/dists/unstable/Release (2: No such file or directory)
+Reading package lists...
+E: The repository 'file:$APTARCHIVE unstable Release' does not have a Release file.
+N: Updating from such a repository can't be done securely, and is therefore disabled by default.
+N: See apt-secure(8) manpage for repository creation and user configuration details." aptget update --no-allow-insecure-repositories
+
+# no package foo
+testsuccessequal 'Listing...' apt list foo
+testequal 'lock
+partial' ls rootdir/var/lib/apt/lists
+
+filesize() {
+ local CREATEDBY="$1"
+ shift
+ stat -c%s "$(aptget indextargets --no-release-info --format '$(URI)' "Created-By: $CREATEDBY" "$@" | cut -d'/' -f 3- ).gz"
+}
+# allow override
+#aptget update --allow-insecure-repositories -o Debug::pkgAcquire::worker=1
+#exit
+testwarningequal "Get:1 file:$APTARCHIVE unstable InRelease
+Ign:1 file:$APTARCHIVE unstable InRelease
+Get:2 file:$APTARCHIVE unstable Release
+Ign:2 file:$APTARCHIVE unstable Release
+Get:3 file:$APTARCHIVE unstable/main Sources
+Ign:3 file:$APTARCHIVE unstable/main Sources
+Get:4 file:$APTARCHIVE unstable/main i386 Packages
+Ign:4 file:$APTARCHIVE unstable/main i386 Packages
+Get:5 file:$APTARCHIVE unstable/main all Packages
+Ign:5 file:$APTARCHIVE unstable/main all Packages
+Get:6 file:$APTARCHIVE unstable/main Translation-en
+Ign:6 file:$APTARCHIVE unstable/main Translation-en
+Get:3 file:$APTARCHIVE unstable/main Sources
+Ign:3 file:$APTARCHIVE unstable/main Sources
+Get:4 file:$APTARCHIVE unstable/main i386 Packages
+Ign:4 file:$APTARCHIVE unstable/main i386 Packages
+Get:5 file:$APTARCHIVE unstable/main all Packages
+Ign:5 file:$APTARCHIVE unstable/main all Packages
+Get:6 file:$APTARCHIVE unstable/main Translation-en
+Ign:6 file:$APTARCHIVE unstable/main Translation-en
+Get:3 file:$APTARCHIVE unstable/main Sources
+Ign:3 file:$APTARCHIVE unstable/main Sources
+Get:4 file:$APTARCHIVE unstable/main i386 Packages
+Ign:4 file:$APTARCHIVE unstable/main i386 Packages
+Get:5 file:$APTARCHIVE unstable/main all Packages
+Ign:5 file:$APTARCHIVE unstable/main all Packages
+Get:6 file:$APTARCHIVE unstable/main Translation-en
+Ign:6 file:$APTARCHIVE unstable/main Translation-en
+Get:3 file:$APTARCHIVE unstable/main Sources [$(filesize 'Sources') B]
+Get:4 file:$APTARCHIVE unstable/main i386 Packages [$(filesize 'Packages' 'Architecture: i386') B]
+Get:5 file:$APTARCHIVE unstable/main all Packages [$(filesize 'Packages' 'Architecture: all') B]
+Get:6 file:$APTARCHIVE unstable/main Translation-en [$(filesize 'Translations') B]
+Reading package lists...
+W: The repository 'file:$APTARCHIVE unstable Release' does not have a Release file.
+N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
+N: See apt-secure(8) manpage for repository creation and user configuration details." aptget update --allow-insecure-repositories
+# ensure we can not install the package
+testfailureequal "WARNING: The following packages cannot be authenticated!
+ foo
+E: There were unauthenticated packages and -y was used without --allow-unauthenticated" aptget install -qq -y foo
diff --git a/test/integration/test-apt-get-upgrade b/test/integration/test-apt-get-upgrade
new file mode 100755
index 000000000..50a90ce66
--- /dev/null
+++ b/test/integration/test-apt-get-upgrade
@@ -0,0 +1,144 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+# simple case
+insertpackage 'stable,installed' 'upgrade-simple' 'all' '1.0'
+insertpackage 'unstable' 'upgrade-simple' 'all' '2.0'
+
+# upgrade with a new dependency
+insertpackage 'stable,installed' 'upgrade-with-new-dep' 'all' '1.0'
+insertpackage 'unstable' 'upgrade-with-new-dep' 'all' '2.0' 'Depends: new-dep'
+insertpackage 'stable' 'new-dep' 'all' '1.0'
+
+# upgrade with conflict and a new pkg with higher priority than conflict
+insertpackage 'stable,installed' 'upgrade-with-conflict' 'all' '1.0'
+insertpackage 'unstable' 'upgrade-with-conflict' 'all' '2.0' 'Conflicts: conflicting-dep' 'standard'
+insertpackage 'stable,installed' 'conflicting-dep' 'all' '1.0'
+
+# upgrade with conflict and a new pkg with higher priority than conflict
+insertpackage 'stable,installed' 'init' 'all' '1'
+insertpackage 'unstable' 'init' 'all' '2' 'Pre-Depends: systemd | sysvinit'
+insertpackage 'unstable' 'systemd' 'all' '2' 'Conflicts: conflicting-dep'
+insertpackage 'unstable' 'sysvinit' 'all' '2'
+
+setupaptarchive
+
+# Test if normal upgrade works as expected
+UPGRADE='Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ init upgrade-with-conflict upgrade-with-new-dep
+The following packages will be upgraded:
+ upgrade-simple
+1 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
+Inst upgrade-simple [1.0] (2.0 unstable [all])
+Conf upgrade-simple (2.0 unstable [all])'
+testsuccessequal "$UPGRADE" aptget upgrade -s
+testsuccessequal "$UPGRADE" apt upgrade -s --without-new-pkgs
+
+# Test if apt-get upgrade --with-new-pkgs works
+UPGRADENEW='Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ new-dep
+The following packages have been kept back:
+ init upgrade-with-conflict
+The following packages will be upgraded:
+ upgrade-simple upgrade-with-new-dep
+2 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst new-dep (1.0 stable [all])
+Inst upgrade-simple [1.0] (2.0 unstable [all])
+Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
+Conf new-dep (1.0 stable [all])
+Conf upgrade-simple (2.0 unstable [all])
+Conf upgrade-with-new-dep (2.0 unstable [all])'
+testsuccessequal "$UPGRADENEW" aptget upgrade -s --with-new-pkgs
+testsuccessequal "$UPGRADENEW" apt upgrade -s
+
+# Test if apt-get dist-upgrade works
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ conflicting-dep
+The following NEW packages will be installed:
+ new-dep systemd
+The following packages will be upgraded:
+ init upgrade-simple upgrade-with-conflict upgrade-with-new-dep
+4 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv conflicting-dep [1.0]
+Inst systemd (2 unstable [all])
+Conf systemd (2 unstable [all])
+Inst init [1] (2 unstable [all])
+Inst upgrade-with-conflict [1.0] (2.0 unstable [all])
+Inst new-dep (1.0 stable [all])
+Inst upgrade-simple [1.0] (2.0 unstable [all])
+Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
+Conf init (2 unstable [all])
+Conf upgrade-with-conflict (2.0 unstable [all])
+Conf new-dep (1.0 stable [all])
+Conf upgrade-simple (2.0 unstable [all])
+Conf upgrade-with-new-dep (2.0 unstable [all])' aptget -s dist-upgrade
+
+msgmsg 'make systemd a non-choice in the or-group and try again'
+echo 'Package: systemd
+Pin: release unstable
+Pin-Priority: -1' > rootdir/etc/apt/preferences.d/nosystemd.pref
+
+testsuccessequal "$UPGRADE" aptget upgrade -s
+testsuccessequal "$UPGRADE" apt upgrade -s --without-new-pkgs
+
+UPGRADENEW='Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ new-dep sysvinit
+The following packages have been kept back:
+ upgrade-with-conflict
+The following packages will be upgraded:
+ init upgrade-simple upgrade-with-new-dep
+3 upgraded, 2 newly installed, 0 to remove and 1 not upgraded.
+Inst sysvinit (2 unstable [all])
+Conf sysvinit (2 unstable [all])
+Inst init [1] (2 unstable [all])
+Inst new-dep (1.0 stable [all])
+Inst upgrade-simple [1.0] (2.0 unstable [all])
+Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
+Conf init (2 unstable [all])
+Conf new-dep (1.0 stable [all])
+Conf upgrade-simple (2.0 unstable [all])
+Conf upgrade-with-new-dep (2.0 unstable [all])'
+testsuccessequal "$UPGRADENEW" aptget upgrade -s --with-new-pkgs
+testsuccessequal "$UPGRADENEW" apt upgrade -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ conflicting-dep
+The following NEW packages will be installed:
+ new-dep sysvinit
+The following packages will be upgraded:
+ init upgrade-simple upgrade-with-conflict upgrade-with-new-dep
+4 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv conflicting-dep [1.0]
+Inst sysvinit (2 unstable [all])
+Conf sysvinit (2 unstable [all])
+Inst init [1] (2 unstable [all])
+Inst upgrade-with-conflict [1.0] (2.0 unstable [all])
+Inst new-dep (1.0 stable [all])
+Inst upgrade-simple [1.0] (2.0 unstable [all])
+Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
+Conf init (2 unstable [all])
+Conf upgrade-with-conflict (2.0 unstable [all])
+Conf new-dep (1.0 stable [all])
+Conf upgrade-simple (2.0 unstable [all])
+Conf upgrade-with-new-dep (2.0 unstable [all])' aptget -s dist-upgrade
diff --git a/test/integration/test-apt-helper b/test/integration/test-apt-helper
new file mode 100755
index 000000000..5e4a96fbd
--- /dev/null
+++ b/test/integration/test-apt-helper
@@ -0,0 +1,118 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+changetohttpswebserver
+
+echo 'foo' > aptarchive/foo
+echo 'bar' > aptarchive/foo2
+
+test_apt_helper_download() {
+ msgmsg 'Test with' "$1"
+
+ msgtest 'apt-file download-file' 'md5sum'
+ testsuccess --nomsg apthelper download-file "${1}/foo" './downloaded/foo2' 'MD5Sum:d3b07384d113edec49eaa6238ad5ff00'
+ testfileequal ./downloaded/foo2 'foo'
+
+ msgtest 'apt-file download-file' 'sha1'
+ testsuccess --nomsg apthelper download-file "${1}/foo" './downloaded/foo1' 'SHA1:f1d2d2f924e986ac86fdf7b36c94bcdf32beec15'
+ testfileequal ./downloaded/foo1 'foo'
+
+ msgtest 'apt-file download-file' 'sha256'
+ testsuccess --nomsg apthelper download-file "${1}/foo" './downloaded/foo3' 'SHA256:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c'
+ testfileequal ./downloaded/foo3 'foo'
+
+ msgtest 'apt-file download-file' 'no-hash'
+ testsuccess --nomsg apthelper download-file "${1}/foo" './downloaded/foo4'
+ testfileequal ./downloaded/foo4 'foo'
+
+ msgtest 'apt-file download-file' 'wrong md5sum'
+ testfailure --nomsg apthelper -qq download-file "${1}/foo" './downloaded/foo5' 'MD5Sum:aabbcc'
+ testfileequal rootdir/tmp/testfailure.output "E: Failed to fetch ${1}/foo Hash Sum mismatch
+ Hashes of expected file:
+ - MD5Sum:aabbcc [weak]
+ Hashes of received file:
+ - SHA512:0cf9180a764aba863a67b6d72f0918bc131c6772642cb2dce5a34f0a702f9470ddc2bf125c12198b1995c233c34b4afd346c54a2334c350a948a51b6e8b4e6b6
+ - SHA256:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c
+ - SHA1:f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 [weak]
+ - MD5Sum:d3b07384d113edec49eaa6238ad5ff00 [weak]
+ - Filesize:4 [weak]
+ Last modification reported: $(lastmodification 'aptarchive/foo')
+E: Download Failed"
+ testfileequal ./downloaded/foo5.FAILED 'foo'
+
+ msgtest 'apt-file download-file' 'wrong sha256'
+ testfailure --nomsg apthelper -qq download-file "${1}/foo" './downloaded/foo6' 'SHA256:aabbcc'
+ testfileequal rootdir/tmp/testfailure.output "E: Failed to fetch ${1}/foo Hash Sum mismatch
+ Hashes of expected file:
+ - SHA256:aabbcc
+ Hashes of received file:
+ - SHA256:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c
+ - Filesize:4 [weak]
+ Last modification reported: $(lastmodification 'aptarchive/foo')
+E: Download Failed"
+ testfileequal './downloaded/foo6.FAILED' 'foo'
+
+ msgtest 'apt-file download-file' 'sha256 sha1'
+ testsuccess --nomsg apthelper download-file "${1}/foo" './downloaded/foo8' 'SHA256:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c' \
+ "${1}/foo2" './downloaded/foo7' 'SHA1:e242ed3bffccdf271b7fbaf34ed72d089537b42f'
+ testfileequal './downloaded/foo8' 'foo'
+ testfileequal './downloaded/foo7' 'bar'
+
+ msgtest 'apt-file download-file' 'md5sum sha1'
+ testsuccess --nomsg apthelper download-file "${1}/foo" './downloaded/foo9' 'MD5Sum:d3b07384d113edec49eaa6238ad5ff00' \
+ "${1}/foo2" './downloaded/foo10' 'SHA1:e242ed3bffccdf271b7fbaf34ed72d089537b42f'
+ testfileequal './downloaded/foo9' 'foo'
+ testfileequal './downloaded/foo10' 'bar'
+}
+
+setupproxydetect() {
+ local METH="$1"
+ shift
+ {
+ echo '#!/bin/sh -e'
+ echo "$@"
+ } > "${TMPWORKINGDIRECTORY}/apt-proxy-detect"
+ chmod 755 "${TMPWORKINGDIRECTORY}/apt-proxy-detect"
+ echo "Acquire::${METH}::Proxy-Auto-Detect \"${TMPWORKINGDIRECTORY}/apt-proxy-detect\";" > rootdir/etc/apt/apt.conf.d/02proxy-detect
+}
+
+test_apt_helper_detect_proxy() {
+ msgmsg 'apt-helper auto-detect-proxy' 'no proxy'
+ testsuccessequal "Using proxy '' for URL 'http://example.com/'" apthelper auto-detect-proxy http://example.com/
+ setupproxydetect 'http' 'exit 0'
+ testsuccessequal "Using proxy '' for URL 'http://example.com/'" apthelper auto-detect-proxy http://example.com/
+ setupproxydetect 'http' 'exit 1'
+ testfailureequal 'E: Sub-process ProxyAutoDetect returned an error code (1)' apthelper auto-detect-proxy http://example.com/
+ setupproxydetect 'http' 'echo'
+ testwarningequal "Using proxy '' for URL 'http://example.com/'
+W: ProxyAutoDetect command returned an empty line" apthelper auto-detect-proxy http://example.com/
+ setupproxydetect 'http' 'echo DIRECT'
+ testsuccessequal "Using proxy 'DIRECT' for URL 'http://example.com/'" apthelper auto-detect-proxy http://example.com/
+
+ msgmsg 'apt-helper auto-detect-proxy' 'http proxy'
+ setupproxydetect 'http' 'echo "http://some-proxy"'
+ testsuccessequal "Using proxy 'http://some-proxy' for URL 'http://www.example.com/'" apthelper auto-detect-proxy http://www.example.com
+
+ msgmsg 'apt-helper auto-detect-proxy' 'https proxy'
+ setupproxydetect 'https' 'echo "https://https-proxy"'
+ testsuccessequal "Using proxy 'https://https-proxy' for URL 'https://ssl.example.com/'" apthelper auto-detect-proxy https://ssl.example.com
+}
+
+test_apt_helper_download "http://localhost:${APTHTTPPORT}"
+test_apt_helper_download "https://localhost:${APTHTTPSPORT}"
+test_apt_helper_detect_proxy
+msgmsg 'test various failure modes'
+testfailureequal 'E: Invalid operation download' apthelper download
+testfailureequal 'E: Must specify at least one pair url/filename' apthelper download-file
+testfailureequal 'E: Must specify at least one pair url/filename' apthelper download-file 'http://example.org/'
+testfailureequal 'E: Need one URL as argument' apthelper auto-detect-proxy
+testfailureequal 'E: Must specify at least one SRV record' apthelper srv-lookup
+testfailureequal 'E: GetSrvRec failed for localhost' apthelper -q=1 srv-lookup 'localhost'
+testfailureequal "E: GetSrvRec failed for localhost:${APTHTTPPORT}" apthelper -q=1 srv-lookup "localhost:${APTHTTPPORT}"
+testfailureequal "E: GetSrvRec failed for localhost:${APTHTTPSPORT}" apthelper -q=1 srv-lookup "localhost:${APTHTTPSPORT}"
diff --git a/test/integration/test-apt-helper-cat-file b/test/integration/test-apt-helper-cat-file
new file mode 100755
index 000000000..a53a6b4a3
--- /dev/null
+++ b/test/integration/test-apt-helper-cat-file
@@ -0,0 +1,46 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+
+TESTTOOL="${BUILDDIRECTORY}/../test/interactive-helper/test_fileutl"
+msgtest 'Check if we have build the test tool' "$TESTTOOL"
+if [ -x "$TESTTOOL" ]; then
+ msgpass
+else
+ msgskip 'not available'
+ exit 0
+fi
+
+cat >rootdir/etc/apt/apt.conf.d/rev-as-compressor <<EOF
+APT::Compressor::rev {
+ Name "rev";
+ Extension ".rev";
+ Binary "rev";
+ Cost "1";
+};
+EOF
+
+configcompression 'ALL'
+cat >./test.txt <<EOF
+This is a test.
+EOF
+
+compressfile ./test.txt
+while read compressor extension command; do
+ if [ "$compressor" = '.' ]; then
+ FILE='./test.txt'
+ else
+ FILE="./test.txt.${extension}"
+ fi
+ if [ -d /proc/self/fd ]; then
+ testsuccess runapt "${TESTTOOL}" "$FILE"
+ testequal '3' grep -c '/test.txt' rootdir/tmp/testsuccess.output
+ else
+ msgtest 'Test if /proc interface is available'
+ msgskip 'seems not'
+ fi
+ testsuccessequal "$(cat ./test.txt)" apthelper cat-file "$FILE"
+done < "${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf"
diff --git a/test/integration/test-apt-https-no-redirect b/test/integration/test-apt-https-no-redirect
new file mode 100755
index 000000000..d6c630d5f
--- /dev/null
+++ b/test/integration/test-apt-https-no-redirect
@@ -0,0 +1,45 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'stable' 'apt' 'all' '1'
+setupaptarchive --no-update
+
+echo 'alright' > aptarchive/working
+changetohttpswebserver
+webserverconfig 'aptwebserver::redirect::replace::/redirectme/' "http://localhost:${APTHTTPPORT}/"
+webserverconfig 'aptwebserver::redirect::replace::/redirectme2/' "https://localhost:${APTHTTPSPORT}/"
+echo 'Dir::Bin::Methods::https+http "https";' > rootdir/etc/apt/apt.conf.d/99add-https-http-method
+
+msgtest 'download of a file works via' 'http'
+testsuccess --nomsg downloadfile "http://localhost:${APTHTTPPORT}/working" httpfile
+testfileequal httpfile 'alright'
+
+msgtest 'download of a file works via' 'https'
+testsuccess --nomsg downloadfile "https://localhost:${APTHTTPSPORT}/working" httpsfile
+testfileequal httpsfile 'alright'
+rm -f httpfile httpsfile
+
+msgtest 'download of http file works via' 'https+http'
+testsuccess --nomsg downloadfile "http://localhost:${APTHTTPPORT}/working" httpfile
+testfileequal httpfile 'alright'
+
+msgtest 'download of https file works via' 'https+http'
+testsuccess --nomsg downloadfile "https://localhost:${APTHTTPSPORT}/working" httpsfile
+testfileequal httpsfile 'alright'
+rm -f httpfile httpsfile
+
+msgtest 'download of a file does not work if' 'https redirected to http'
+testfailure --nomsg downloadfile "https://localhost:${APTHTTPSPORT}/redirectme/working" redirectfile
+
+msgtest 'libcurl has forbidden access in last request to' 'http resource'
+testsuccess --nomsg grep -q -E -- "Redirection from https to 'http://.*' is forbidden" rootdir/tmp/testfailure.output
+
+msgtest 'download of a file does work if' 'https+http redirected to https'
+testsuccess --nomsg downloadfile "https+http://localhost:${APTHTTPPORT}/redirectme2/working" redirectfile
+testfileequal redirectfile 'alright'
diff --git a/test/integration/test-apt-keep-downloaded-pkgs b/test/integration/test-apt-keep-downloaded-pkgs
new file mode 100755
index 000000000..c5f62954c
--- /dev/null
+++ b/test/integration/test-apt-keep-downloaded-pkgs
@@ -0,0 +1,54 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+buildsimplenativepackage 'pkg1' 'all' '1.0' 'stable'
+buildsimplenativepackage 'pkg2' 'all' '1.0' 'stable'
+buildsimplenativepackage 'pkg3' 'all' '1.0' 'stable'
+buildsimplenativepackage 'pkg4' 'all' '1.0' 'stable'
+
+# local (file) installs
+setupaptarchive
+
+# a file:// "download" is not a real download and hence passes
+testsuccess aptget install pkg1 --no-download --download-only -y
+testfailure test -f rootdir/var/cache/apt/archives/pkg1_1.0_all.deb
+testsuccess test -f aptarchive/pool/pkg1_1.0_all.deb
+
+# ensure that install from local sources does not remove debs
+testsuccess aptget install pkg1 -o APT::Keep-Downloaded-Packages=false
+testsuccess test -f aptarchive/pool/pkg1_1.0_all.deb
+testfailure test -f rootdir/var/cache/apt/archives/pkg1_1.0_all.deb
+
+# now switch to http and downloading debs
+changetowebserver
+testsuccess aptget update
+
+# see if no-download really doesn't download the package
+testfailuremsg 'E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?' aptget install pkg2 --no-download -y
+testsuccess test -f aptarchive/pool/pkg2_1.0_all.deb
+testfailure test -f rootdir/var/cache/apt/archives/pkg2_1.0_all.deb
+
+# ensure that the downloaded pkg is kept with "keep=true"
+testsuccess aptget install pkg2 -o APT::Keep-Downloaded-Packages=true
+testsuccess test -f aptarchive/pool/pkg2_1.0_all.deb
+testsuccess test -f rootdir/var/cache/apt/archives/pkg2_1.0_all.deb
+
+# ensure that the downloaded pkg is removed when requested
+testsuccess aptget install pkg3 -o APT::Keep-Downloaded-Packages=false
+testsuccess test -f aptarchive/pool/pkg3_1.0_all.deb
+# this was there before, keep it
+testsuccess test -f rootdir/var/cache/apt/archives/pkg2_1.0_all.deb
+# this got installed so we can remove it now
+testfailure test -f rootdir/var/cache/apt/archives/pkg3_1.0_all.deb
+
+
+# ensure that install from the download dir does not delete packages
+mv aptarchive/pool/pkg4_1.0_all.deb rootdir/var/cache/apt/archives
+testsuccess aptget install $(pwd)/rootdir/var/cache/apt/archives/pkg4_1.0_all.deb -o APT::Keep-Downloaded-Packages=false
+testsuccess test -f $(pwd)/rootdir/var/cache/apt/archives/pkg4_1.0_all.deb
diff --git a/test/integration/test-apt-key b/test/integration/test-apt-key
new file mode 100755
index 000000000..4fd1510a2
--- /dev/null
+++ b/test/integration/test-apt-key
@@ -0,0 +1,378 @@
+#!/bin/sh
+set -e
+
+# apt-key is a shell script, so relatively prune to be effected by 'crazy' things:
+# confuses config parser as there exists no way of escaping " currently.
+#TMPDIR="$(mktemp -d)/This is \"fü\$\$ing cràzy\", \$(man man | head -n1 | cut -d' ' -f 1)\$!"
+# gpg doesn't like | in path names – documented e.g. in the man gpg2 --agent-program
+#TMPDIR="$(mktemp -d)/This is fü\$\$ing cràzy, \$(man man | head -n1 | cut -d' ' -f 1)\$!"
+TMPDIR_ADD="This is fü\$\$ing cràzy, \$(apt -v)\$!"
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+# start from a clean plate again
+cleanplate() {
+ rm -rf "${ROOTDIR}/etc/apt/trusted.gpg.d/" "${ROOTDIR}/etc/apt/trusted.gpg"
+ mkdir "${ROOTDIR}/etc/apt/trusted.gpg.d/"
+}
+testmultigpg() {
+ testfailure --nomsg aptkey --quiet --readonly "$@"
+ testsuccess grep "^gpgv: Can't check signature" "${ROOTDIR}/tmp/testfailure.output"
+ testsuccess grep '^gpgv: Good signature from' "${ROOTDIR}/tmp/testfailure.output"
+}
+testaptkeyskeyring() {
+ local KEYRING="$1"
+ shift
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/aptkeylistkeyring.output"
+ if ! aptkey --keyring "$KEYRING" list --with-colon | grep '^pub' | cut -d':' -f 5 > "$OUTPUT"; then
+ echo -n > "$OUTPUT"
+ fi
+ testfileequal "$OUTPUT" "$(mapkeynametokeyid "$@")"
+}
+
+testrun() {
+ local EXT="${1:-gpg}"
+ echo "APT::Key::ArchiveKeyring \"${KEYDIR}/joesixpack.pub.gpg\";
+APT::Key::RemovedKeys \"${KEYDIR}/rexexpired.pub.gpg\";" > "${ROOTDIR}/etc/apt/apt.conf.d/aptkey.conf"
+
+ cleanplate
+ ln -sf "$(readlink -f "${KEYDIR}/joesixpack.pub.${EXT}")" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testaptkeys 'Joe Sixpack'
+
+ testsuccess aptkey list
+ msgtest 'Check that paths in list output are not' 'double-slashed'
+ testfailure --nomsg grep '//' "${ROOTDIR}/tmp/testsuccess.output"
+
+ testsuccess aptkey finger
+ msgtest 'Check that paths in finger output are not' 'double-slashed'
+ testfailure --nomsg grep '//' "${ROOTDIR}/tmp/testsuccess.output"
+
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${KEYDIR}/joesixpack.pub.${EXT}.bak"
+ testequalor2 'gpg: key DBAC8DAE: "Joe Sixpack (APT Testcases Dummy) <joe@example.org>" not changed
+gpg: Total number processed: 1
+gpg: unchanged: 1' 'gpg: key 5A90D141DBAC8DAE: "Joe Sixpack (APT Testcases Dummy) <joe@example.org>" not changed
+gpg: Total number processed: 1
+gpg: unchanged: 1' aptkey --fakeroot update
+ testsuccess test -L "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess cmp "${KEYDIR}/joesixpack.pub.${EXT}" "${KEYDIR}/joesixpack.pub.${EXT}.bak"
+
+ testaptkeys 'Joe Sixpack'
+ testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg"
+
+ testsuccess aptkey --fakeroot add "${KEYDIR}/rexexpired.pub.${EXT}"
+ testfilestats "${ROOTDIR}/etc/apt/trusted.gpg" '%a' '=' '644'
+
+ testaptkeys 'Rex Expired' 'Joe Sixpack'
+
+ msgtest 'Check that Sixpack key can be' 'exported'
+ aptkey export 'Sixpack' > "${TMPWORKINGDIRECTORY}/aptkey.export"
+ aptkey --keyring "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}" exportall > "${TMPWORKINGDIRECTORY}/aptkey.exportall"
+ testsuccess --nomsg cmp "${TMPWORKINGDIRECTORY}/aptkey.export" "${TMPWORKINGDIRECTORY}/aptkey.exportall"
+ testsuccess test -s "${TMPWORKINGDIRECTORY}/aptkey.export"
+ testsuccess test -s "${TMPWORKINGDIRECTORY}/aptkey.exportall"
+
+ msgtest 'Execute update again to trigger removal of' 'Rex Expired key'
+ testsuccess --nomsg aptkey --fakeroot update
+
+ testaptkeys 'Joe Sixpack'
+
+ msgtest "Try to remove a key which exists, but isn't in the" 'forced keyring'
+ testsuccess --nomsg aptkey --fakeroot --keyring "${ROOTDIR}/etc/apt/trusted.gpg" del DBAC8DAE
+
+ testaptkeys 'Joe Sixpack'
+
+ testsuccess aptkey --fakeroot del DBAC8DAE
+ testempty aptkey list
+
+ ln -sf "$(readlink -f "${KEYDIR}/joesixpack.pub.${EXT}")" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testaptkeys 'Joe Sixpack'
+ msgtest "Remove a key from" 'forced keyring in trusted.d.gpg'
+ testsuccess --nomsg aptkey --fakeroot --keyring "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}" del DBAC8DAE
+ testsuccess cmp -s "$(readlink -f "${KEYDIR}/joesixpack.pub.${EXT}")" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}~"
+ testempty aptkey list
+
+ cp -a "${KEYDIR}/marvinparanoid.pub.asc" "${ROOTDIR}/etc/foobar.pub"
+ testsuccess aptkey --fakeroot --keyring "${ROOTDIR}/etc/foobar.pub" add "${KEYDIR}/rexexpired.pub.asc" "${KEYDIR}/joesixpack.pub.gpg"
+ testfilestats "${ROOTDIR}/etc/foobar.pub" '%a' '=' '644'
+ testaptkeyskeyring "${ROOTDIR}/etc/foobar.pub" 'Marvin Paranoid' 'Rex Expired' 'Joe Sixpack'
+ testempty aptkey list
+
+ msgtest 'Test key removal with' 'lowercase key ID' #keylength somewhere between 8byte and short
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess --nomsg aptkey --fakeroot del d141dbac8dae
+ testempty aptkey list
+
+ if [ "$(id -u)" != '0' ]; then
+ msgtest 'Test key removal with' 'unreadable key'
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ echo 'foobar' > "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.${EXT}"
+ chmod 000 "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.${EXT}"
+ testwarning --nomsg aptkey --fakeroot del d141dbac8dae
+ testwarning aptkey list
+ chmod 644 "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.${EXT}"
+ rm -f "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.${EXT}"
+ grep -v '^W: ' "${ROOTDIR}/tmp/testwarning.output" > "${ROOTDIR}/aptkeylist.output" || true
+ testempty cat "${ROOTDIR}/aptkeylist.output"
+ fi
+
+ msgtest 'Test key removal with' 'single key in real file'
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess --nomsg aptkey --fakeroot del DBAC8DAE
+ testempty aptkey list
+ testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess cmp "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}~"
+
+ msgtest 'Test key removal with' 'different key specs'
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ cp -a "${KEYDIR}/marvinparanoid.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/marvinparanoid.${EXT}"
+ testsuccess --nomsg aptkey --fakeroot del 0xDBAC8DAE 528144E2
+ testempty aptkey list
+ testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess cmp "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}~"
+ testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg.d/marvinparanoid.${EXT}"
+ testsuccess cmp "${KEYDIR}/marvinparanoid.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/marvinparanoid.${EXT}~"
+
+ msgtest 'Test key removal with' 'long key ID'
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess --nomsg aptkey --fakeroot del 5A90D141DBAC8DAE
+ testempty aptkey list
+ testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess cmp "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}~"
+
+ msgtest 'Test key removal with' 'fingerprint'
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess --nomsg aptkey --fakeroot del 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE
+ testempty aptkey list
+ testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess cmp "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}~"
+
+ msgtest 'Test key removal with' 'spaced fingerprint'
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess --nomsg aptkey --fakeroot del '34A8 E9D1 8DB3 20F3 67E8 EAA0 5A90 D141 DBAC 8DAE'
+ testempty aptkey list
+ testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess cmp "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}~"
+
+ msgtest 'Test key removal with' 'single key in softlink'
+ cleanplate
+ ln -sf "$(readlink -f "${KEYDIR}/joesixpack.pub.${EXT}")" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess --nomsg aptkey --fakeroot del DBAC8DAE
+ testempty aptkey list
+ testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess test -L "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}~"
+
+ cleanplate
+ testsuccess aptkey --fakeroot add "${KEYDIR}/joesixpack.pub.${EXT}"
+ ln -sf "$(readlink -f "${KEYDIR}/marvinparanoid.pub.${EXT}")" "${KEYDIR}/marvin paránöid.pub.${EXT}"
+ testsuccess aptkey --fakeroot add "${KEYDIR}/marvin paránöid.pub.${EXT}"
+ testaptkeys 'Joe Sixpack' 'Marvin Paranoid'
+ cp -a "${ROOTDIR}/etc/apt/trusted.gpg" "${KEYDIR}/testcase-multikey.pub.gpg" # store for reuse
+ gpg --no-default-keyring --keyring "${KEYDIR}/testcase-multikey.pub.gpg" --armor --export > "${KEYDIR}/testcase-multikey.pub.asc"
+
+ msgtest 'Test key removal with' 'multi key in real file'
+ cleanplate
+ cp -a "${KEYDIR}/testcase-multikey.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}"
+ testsuccess --nomsg aptkey --fakeroot del DBAC8DAE
+ testaptkeys 'Marvin Paranoid'
+ testsuccess cmp "${KEYDIR}/testcase-multikey.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}~"
+
+ msgtest 'Test key removal with' 'multi key in softlink'
+ cleanplate
+ ln -s "$(readlink -f "${KEYDIR}/testcase-multikey.pub.${EXT}")" "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}"
+ testsuccess --nomsg aptkey --fakeroot del DBAC8DAE
+ testaptkeys 'Marvin Paranoid'
+ testsuccess cmp "${KEYDIR}/testcase-multikey.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}~"
+ testfailure test -L "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}"
+ testsuccess test -L "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}~"
+
+ msgtest 'Test key removal with' 'multiple files including key'
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ cp -a "${KEYDIR}/testcase-multikey.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}"
+ testsuccess --nomsg aptkey --fakeroot del DBAC8DAE
+ testaptkeys 'Marvin Paranoid'
+ testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess cmp "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}~"
+ testsuccess cmp "${KEYDIR}/testcase-multikey.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}~"
+
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ cp -a "${KEYDIR}/testcase-multikey.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}"
+ testaptkeys 'Joe Sixpack' 'Joe Sixpack' 'Marvin Paranoid'
+ msgtest 'Test merge-back of' 'added keys'
+ testsuccess --nomsg aptkey adv --batch --yes --import "${KEYDIR}/rexexpired.pub.${EXT}"
+ testaptkeys 'Rex Expired' 'Joe Sixpack' 'Joe Sixpack' 'Marvin Paranoid'
+
+ msgtest 'Test merge-back of' 'removed keys'
+ testsuccess --nomsg aptkey adv --batch --yes --delete-keys 27CE74F9
+ testaptkeys 'Joe Sixpack' 'Joe Sixpack' 'Marvin Paranoid'
+
+ msgtest 'Test merge-back of' 'removed duplicate keys'
+ testsuccess --nomsg aptkey adv --batch --yes --delete-keys DBAC8DAE
+ testaptkeys 'Marvin Paranoid'
+
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ cp -a "${KEYDIR}/testcase-multikey.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}"
+ local SIGNATURE="${TMPWORKINGDIRECTORY}/signature"
+ msgtest 'Test signing a file' 'with a key'
+ echo 'Verify me. This is my signature.' > "$SIGNATURE"
+ echo 'lalalalala' > "${SIGNATURE}2"
+ testsuccess --nomsg aptkey --quiet --keyring "${KEYDIR}/marvinparanoid.pub.gpg" --secret-keyring "${KEYDIR}/marvinparanoid.sec" --readonly \
+ adv --batch --yes --default-key 'Marvin' --armor --detach-sign --sign --output "${SIGNATURE}.gpg" "${SIGNATURE}"
+ testsuccess test -s "${SIGNATURE}.gpg" -a -s "${SIGNATURE}"
+
+ msgtest 'Test verify a file' 'with no sig'
+ testfailure --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/testcase-multikey.pub.${EXT}" verify "${SIGNATURE}" "${SIGNATURE}2"
+
+ for GPGV in '' 'gpgv' 'gpgv1' 'gpgv2'; do
+ echo "APT::Key::GPGVCommand \"$GPGV\";" > "${ROOTDIR}/etc/apt/apt.conf.d/00gpgvcmd"
+ if [ -n "$GPGV" ] && ! command dpkg -l gnupg1 2>&1 | grep -q '^ii'; then continue; fi
+
+ msgtest 'Test verify a file' 'with all keys'
+ testsuccess --nomsg aptkey --quiet --readonly verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ if [ "$(id -u)" != '0' ]; then
+ msgtest 'Test verify a file' 'with unreadable key'
+ echo 'foobar' > "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.${EXT}"
+ chmod 000 "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.${EXT}"
+ testwarning --nomsg aptkey --quiet --readonly verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+ testwarning aptkey list
+ chmod 644 "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.${EXT}"
+ rm -f "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.${EXT}"
+ fi
+
+ msgtest 'Test verify a file' 'with good keyring'
+ testsuccess --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/testcase-multikey.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test fail verify a file' 'with bad keyring'
+ testfailure --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/joesixpack.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test fail verify a file' 'with non-existing keyring'
+ testfailure --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/does-not-exist.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+ testfailure test -e "${KEYDIR}/does-not-exist.pub.${EXT}"
+
+ # note: this isn't how apts gpgv method implements keyid for verify
+ msgtest 'Test verify a file' 'with good keyid'
+ testsuccess --nomsg aptkey --quiet --readonly --keyid 'Paranoid' verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test fail verify a file' 'with bad keyid'
+ testfailure --nomsg aptkey --quiet --readonly --keyid 'Sixpack' verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test fail verify a file' 'with non-existing keyid'
+ testfailure --nomsg aptkey --quiet --readonly --keyid 'Kalnischkies' verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test verify fails on' 'bad file'
+ testfailure --nomsg aptkey --quiet --readonly verify "${SIGNATURE}.gpg" "${SIGNATURE}2"
+ done
+ rm -f "${ROOTDIR}/etc/apt/apt.conf.d/00gpgvcmd"
+
+ msgtest 'Test verify a file' 'with good keyring'
+ testsuccess --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/testcase-multikey.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ cleanplate
+ cat "${KEYDIR}/joesixpack.pub.gpg" "${KEYDIR}/marvinparanoid.pub.gpg" > "${KEYDIR}/double.pub.gpg"
+ cat "${KEYDIR}/joesixpack.pub.asc" "${KEYDIR}/marvinparanoid.pub.asc" > "${KEYDIR}/double.pub.asc"
+ cat "${KEYDIR}/joesixpack.sec" "${KEYDIR}/marvinparanoid.sec" > "${KEYDIR}/double.sec"
+ cp -a "${KEYDIR}/double.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/double.${EXT}"
+ cp -a "${KEYDIR}/testcase-multikey.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}"
+ rm -f "${SIGNATURE}.gpg"
+ testsuccess aptkey --quiet --keyring "${KEYDIR}/double.pub.gpg" --secret-keyring "${KEYDIR}/double.sec" --readonly \
+ adv --batch --yes -u 'Marvin' -u 'Joe' --armor --detach-sign --sign --output "${SIGNATURE}.gpg" "${SIGNATURE}"
+ testsuccess test -s "${SIGNATURE}.gpg" -a -s "${SIGNATURE}"
+
+ for GPGV in '' 'gpgv' 'gpgv1' 'gpgv2'; do
+ echo "APT::Key::GPGVCommand \"$GPGV\";" > "${ROOTDIR}/etc/apt/apt.conf.d/00gpgvcmd"
+ if [ -n "$GPGV" ] && ! command dpkg -l gnupg1 2>&1 | grep -q '^ii'; then continue; fi
+
+ msgtest 'Test verify a doublesigned file' 'with all keys'
+ testsuccess --nomsg aptkey --quiet --readonly verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test verify a doublesigned file' 'with good keyring joe'
+ testmultigpg --keyring "${KEYDIR}/joesixpack.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test verify a doublesigned file' 'with good keyring marvin'
+ testmultigpg --keyring "${KEYDIR}/marvinparanoid.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test fail verify a doublesigned file' 'with bad keyring'
+ testfailure --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/rexexpired.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test fail verify a doublesigned file' 'with non-existing keyring'
+ testfailure --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/does-not-exist.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+ testfailure test -e "${KEYDIR}/does-not-exist.pub.${EXT}"
+
+ # note: this isn't how apts gpgv method implements keyid for verify
+ msgtest 'Test verify a doublesigned file' 'with good keyid'
+ testmultigpg --keyid 'Paranoid' verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test fail verify a doublesigned file' 'with bad keyid'
+ testfailure --nomsg aptkey --quiet --readonly --keyid 'Rex' verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test fail verify a doublesigned file' 'with non-existing keyid'
+ testfailure --nomsg aptkey --quiet --readonly --keyid 'Kalnischkies' verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test verify fails on' 'bad doublesigned file'
+ testfailure --nomsg aptkey --quiet --readonly verify "${SIGNATURE}.gpg" "${SIGNATURE}2"
+ done
+ rm -f "${ROOTDIR}/etc/apt/apt.conf.d/00gpgvcmd"
+}
+
+setupgpgcommand() {
+ local GPGEXE;
+ if command dpkg -l gnupg1 2>&1 | grep -q '^ii'; then
+ if [ "$1" = '1' ]; then
+ GPGEXE='gpg1'
+ else
+ GPGEXE='gpg'
+ fi
+ else
+ if [ "$1" = '1' ]; then
+ GPGEXE='gpg'
+ else
+ GPGEXE='gpg2'
+ fi
+ fi
+ msgmsg 'Force tests to be run with' "$GPGEXE"
+ echo "APT::Key::GPGCommand \"$GPGEXE\";" > "${ROOTDIR}/etc/apt/apt.conf.d/00gpgcmd"
+ testsuccess aptkey --readonly adv --version
+ cp "${ROOTDIR}/tmp/testsuccess.output" "${TMPWORKINGDIRECTORY}/aptkey.version"
+ testsuccess grep "^gpg (GnuPG) $1\." "${TMPWORKINGDIRECTORY}/aptkey.version"
+}
+
+(cd /; find "${TMPWORKINGDIRECTORY}/keys" -name '*.pub' -type f) | while read trusted; do
+ testsuccess aptkey --keyring "$trusted" adv --armor --export --output "${trusted}.asc"
+ cp -a "$trusted" "${trusted}.gpg"
+done
+
+# run with default (whatever this is) in current CWD with relative paths
+ROOTDIR="./rootdir"
+KEYDIR="./keys"
+testrun
+
+# run with … and up the game with a strange CWD & absolute paths
+ROOTDIR="${TMPWORKINGDIRECTORY}/rootdir"
+KEYDIR="${TMPWORKINGDIRECTORY}/keys"
+mkdir inaccessible
+cd inaccessible
+chmod 600 ../inaccessible
+testfilestats "${TMPWORKINGDIRECTORY}/inaccessible" '%a' '=' '600'
+
+setupgpgcommand '1'
+testrun
+setupgpgcommand '2'
+testrun
+
+msgmsg 'Tests to be run with' 'asc files'
+rm -f "${ROOTDIR}/etc/apt/apt.conf.d/00gpgcmd"
+testrun 'asc'
diff --git a/test/integration/test-apt-key-net-update b/test/integration/test-apt-key-net-update
new file mode 100755
index 000000000..b9f716e10
--- /dev/null
+++ b/test/integration/test-apt-key-net-update
@@ -0,0 +1,41 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+changetowebserver
+
+# setup env
+mkdir -p var/lib/apt/keyrings
+mkdir -p usr/share/keyrings
+
+# install the fake master keyring
+install -m0644 keys/test-master-keyring.pub usr/share/keyrings
+echo "APT::Key::MasterKeyring \"${TMPWORKINGDIRECTORY}/usr/share/keyrings/test-master-keyring.pub\";" >> ./aptconfig.conf
+
+# setup archive-keyring
+mkdir -p aptarchive/ubuntu/project
+install -m0644 keys/test-archive-keyring.pub aptarchive/ubuntu/project/
+echo "APT::Key::ArchiveKeyringURI \"http://localhost:${APTHTTPPORT}/ubuntu/project/test-archive-keyring.pub\";" >> ./aptconfig.conf
+echo 'APT::Key::Net-Update-Enabled "1";' >> ./aptconfig.conf
+
+# test against the "real" webserver
+testsuccess aptkey --fakeroot net-update
+testfailure grep 'not added' rootdir/tmp/testsuccess.output
+testaptkeys 'oldarchive' 'newarchive'
+
+# now try a different one
+# setup archive-keyring
+mkdir -p aptarchive/ubuntu/project
+install -m0644 keys/marvinparanoid.pub aptarchive/ubuntu/project/
+echo "APT::Key::ArchiveKeyringURI \"http://localhost:${APTHTTPPORT}/ubuntu/project/marvinparanoid.pub\";" >> ./aptconfig.conf
+echo 'APT::Key::Net-Update-Enabled "1";' >> ./aptconfig.conf
+
+# test against the "real" webserver
+testsuccessequal "Checking for new archive signing keys now
+Key 'DE66AECA9151AFA1877EC31DE8525D47528144E2' not added. It is not signed with a master key" aptkey --fakeroot net-update
+
+testaptkeys 'oldarchive' 'newarchive'
diff --git a/test/integration/test-apt-key-used-in-maintainerscript b/test/integration/test-apt-key-used-in-maintainerscript
new file mode 100755
index 000000000..b5ed3279f
--- /dev/null
+++ b/test/integration/test-apt-key-used-in-maintainerscript
@@ -0,0 +1,43 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+unset APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE
+configarchitecture 'native'
+configdpkgnoopchroot
+
+buildingpkg() {
+ local PKG="$1"
+ shift
+ setupsimplenativepackage "$PKG" 'native' '1' 'unstable' "$@"
+ BUILDDIR="incoming/${PKG}-1"
+ echo '#!/bin/sh
+apt-key list >/dev/null' > "${BUILDDIR}/debian/postinst"
+ buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
+ rm -rf "$BUILDDIR"
+}
+buildingpkg 'aptkeyuser-nodepends' 'Depends: unrelated'
+buildingpkg 'aptkeyuser-depends' 'Depends: gnupg'
+
+insertinstalledpackage 'unrelated' 'native' '1'
+insertinstalledpackage 'gnupg' 'native' '1'
+testdpkgnotinstalled 'aptkeyuser-depends' 'aptkeyuser-nodepends'
+
+testsuccess apt install ./incoming/aptkeyuser-depends_*.changes -y
+cp rootdir/tmp/testsuccess.output apt.output
+testdpkginstalled 'aptkeyuser-depends'
+testfailure grep '^Warning: This will BREAK' apt.output
+testsuccess grep '^Warning: apt-key' apt.output
+
+testsuccess apt install --with-source ./incoming/aptkeyuser-nodepends_*.changes aptkeyuser-nodepends -y
+cp rootdir/tmp/testsuccess.output apt.output
+testdpkginstalled 'aptkeyuser-nodepends'
+testsuccess grep '^Warning: This will BREAK' apt.output
+testsuccess grep '^Warning: apt-key' apt.output
+
+testsuccess aptkey list
+cp rootdir/tmp/testsuccess.output aptkey.list
+testsuccess grep '^Warning: apt-key' aptkey.list
diff --git a/test/integration/test-apt-mark b/test/integration/test-apt-mark
new file mode 100755
index 000000000..7a115b03f
--- /dev/null
+++ b/test/integration/test-apt-mark
@@ -0,0 +1,154 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertpackage 'unstable' 'bar' 'amd64,i386' '1'
+insertpackage 'unstable' 'uninstalled' 'all' '1'
+insertpackage 'unstable' 'uninstalled-native' 'amd64' '1'
+
+insertinstalledpackage 'foo' 'all' '1'
+insertinstalledpackage 'bar' 'amd64' '1'
+
+setupaptarchive
+
+# dpkg is "installed" by our test framework
+testdpkginstalled dpkg
+
+testnoautopkg() {
+ testempty aptmark showauto
+ testempty aptcache -q=1 showauto
+ testsuccessequal 'bar
+dpkg
+foo' aptmark showmanual
+ testsuccessequal 'bar
+foo' aptmark showmanual bar foo uninstalled
+}
+testfooisauto() {
+ testsuccessequal 'foo' aptmark showauto
+ testsuccessequal 'foo' aptcache -q=1 showauto
+ testsuccessequal 'foo' aptmark showauto foo
+ testsuccessequal 'foo' aptcache -q=1 showauto foo
+ testsuccessequal 'bar
+dpkg' aptmark showmanual
+ testsuccessequal 'bar' aptmark showmanual bar
+}
+testmarkonpkgasauto() {
+ testsuccess $1 -q=1 $2 foo
+ testfooisauto
+ testsuccess $1 -q=1 $2 foo
+ testfooisauto
+
+ testsuccess $1 -q=1 $3 foo
+ testnoautopkg
+ testsuccess $1 -q=1 $3 foo
+ testnoautopkg
+}
+
+testfailureequal 'E: No packages found' aptmark auto
+testfailureequal 'E: No packages found' aptmark manual
+
+testnoautopkg
+testmarkonpkgasauto 'aptmark' 'auto' 'manual'
+testmarkonpkgasauto 'aptmark' 'markauto' 'unmarkauto'
+testmarkonpkgasauto 'aptget' 'markauto' 'unmarkauto'
+
+testnoholdpkg() {
+ testempty aptmark showhold
+ testempty aptmark showholds # typical "typo"
+ testempty aptmark showhold dpkg
+ testempty aptmark showholds dpkg
+}
+testpkgonhold() {
+ testsuccessequal "$1" aptmark showhold
+ testsuccessequal "$1" aptmark showholds
+ testsuccessequal "$1" aptmark showhold $1
+ testsuccessequal "$1" aptmark showholds $1
+}
+testmarkonepkgashold() {
+ testsuccess aptmark hold $1
+ testpkgonhold $1
+ testsuccess aptmark hold $1
+ testpkgonhold $1
+ testsuccess aptmark unhold $1
+ testnoholdpkg
+ testsuccess aptmark unhold $1
+ testnoholdpkg
+}
+
+testfailureequal 'E: No packages found' aptmark hold
+testfailureequal 'E: No packages found' aptmark unhold
+
+testnoholdpkg
+testmarkonepkgashold 'foo'
+testmarkonepkgashold 'bar'
+
+msgtest 'dpkg supports --merge-avail via' 'stdin'
+if dpkg --merge-avail - < /dev/null >/dev/null 2>&1; then
+ msgpass
+else
+ msgskip 'dpkg version too old'
+ exit 0
+fi
+
+testmarkonepkgashold 'uninstalled'
+testmarkonepkgashold 'uninstalled-native'
+
+testsuccessequal 'uninstalled set on hold.' aptmark hold uninstalled
+testsuccessequal 'uninstalled-native set on hold.' aptmark hold uninstalled-native
+#FIXME: holds on uninstalled packages are not persistent in dpkg
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following NEW packages will be installed:
+ uninstalled uninstalled-native
+The following held packages will be changed:
+ uninstalled-native
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst uninstalled (1 unstable [all])
+Inst uninstalled-native (1 unstable [amd64])
+Conf uninstalled (1 unstable [all])
+Conf uninstalled-native (1 unstable [amd64])' aptget install uninstalled uninstalled-native -s
+testsuccess aptmark unhold uninstalled uninstalled-native
+
+testselections() {
+ testsuccess aptmark hold "$1"
+ testsuccessequal "$1" aptmark showholds "$1"
+ testsuccess aptmark unhold "$1"
+ testsuccessequal "$1" aptmark showinstalls "$1"
+ testsuccess aptmark hold "$1"
+ testsuccessequal "$1" aptmark showholds "$1"
+ testsuccess aptmark install "$1"
+ testsuccessequal "$1" aptmark showinstalls "$1"
+ testsuccess aptmark remove "$1"
+ testsuccessequal "$1" aptmark showremoves "$1"
+ testsuccess aptmark purge "$1"
+ testsuccessequal "$1" aptmark showpurges "$1"
+}
+testselections 'foo'
+testselections 'bar'
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ bar* foo*
+0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
+Purg bar [1]
+Purg foo [1]' aptget dselect-upgrade -s
+
+testuninstalledselections() {
+ testsuccess aptmark hold "$1"
+ testsuccessequal "$1" aptmark showholds "$1"
+ testsuccess aptmark unhold "$1"
+ testsuccessequal "$1" aptmark showremoves "$1"
+ testsuccess aptmark hold "$1"
+ testsuccessequal "$1" aptmark showholds "$1"
+ testsuccess aptmark install "$1"
+ testsuccessequal "$1" aptmark showinstalls "$1"
+}
+testuninstalledselections 'uninstalled'
+testuninstalledselections 'uninstalled-native'
diff --git a/test/integration/test-apt-move-and-forget-manual-sections b/test/integration/test-apt-move-and-forget-manual-sections
new file mode 100755
index 000000000..69a7d9f1d
--- /dev/null
+++ b/test/integration/test-apt-move-and-forget-manual-sections
@@ -0,0 +1,31 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'native'
+
+aptconfig dump --no-empty --format '%v%n' APT::Move-Autobit-Sections > move-autobit.sections
+testsuccess grep '^oldlibs$' move-autobit.sections
+
+buildsimplenativepackage 'libabc' 'native' '1' 'stable' '' '' 'libs'
+buildsimplenativepackage 'libabc' 'native' '2' 'unstable' 'Depends: libdef' '' 'oldlibs'
+buildsimplenativepackage 'libdef' 'native' '1' 'unstable' '' '' 'libs'
+setupaptarchive
+
+testmarkedauto
+testmarkedmanual 'dpkg'
+
+testsuccess aptget install libabc/stable -y
+testdpkginstalled 'libabc'
+testdpkgnotinstalled 'libdef'
+
+testmarkedmanual 'dpkg' 'libabc'
+testmarkedauto
+
+testsuccess aptget dist-upgrade -y
+testdpkginstalled 'libabc' 'libdef'
+
+testmarkedauto 'libabc'
+testmarkedmanual 'dpkg' 'libdef'
diff --git a/test/integration/test-apt-never-markauto-sections b/test/integration/test-apt-never-markauto-sections
new file mode 100755
index 000000000..aa145d217
--- /dev/null
+++ b/test/integration/test-apt-never-markauto-sections
@@ -0,0 +1,86 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+aptconfig dump --no-empty --format '%v%n' APT::Never-MarkAuto-Sections > nevermarkauto.sections
+testsuccess grep '^metapackages$' nevermarkauto.sections
+
+buildsimplenativepackage 'mydesktop' 'all' '1' 'unstable' 'Depends: mydesktop-core, foreignpkg
+Recommends: notavailable' '' 'metapackages'
+buildsimplenativepackage 'mydesktop-core' 'amd64' '1' 'unstable' 'Depends: bad-texteditor | texteditor, browser (>= 42), nosection, foreignpkg
+Recommends: notavailable
+Multi-Arch: foreign' '' 'metapackages'
+buildsimplenativepackage 'browser' 'amd64' '41' 'stable'
+buildsimplenativepackage 'browser' 'amd64' '42' 'unstable'
+buildsimplenativepackage 'texteditor' 'amd64' '1' 'stable'
+buildsimplenativepackage 'bad-texteditor' 'amd64' '1' 'stable' 'Depends: texteditor
+Conflicts: mydesktop-core'
+buildsimplenativepackage 'nosection' 'amd64' '1' 'stable' '' '' '<none>'
+buildsimplenativepackage 'foreignpkg' 'i386' '1' 'stable' 'Multi-Arch: foreign'
+setupaptarchive
+
+testsuccess aptcache show nosection
+testfailure grep 'Section' rootdir/tmp/testsuccess.output
+testequal 'dpkg' aptmark showmanual
+
+testsuccess aptget install mydesktop -y -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1
+
+testmarkedmanual 'dpkg' 'mydesktop'
+testmarkedauto 'mydesktop-core' 'foreignpkg:i386' 'texteditor' 'browser' 'nosection'
+
+# if the remove is from a user, don't do manual-bit passing
+testequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ browser foreignpkg:i386 mydesktop mydesktop-core nosection texteditor
+0 upgraded, 0 newly installed, 6 to remove and 0 not upgraded.
+Remv mydesktop [1]
+Remv mydesktop-core [1]
+Remv browser [42]
+Remv foreignpkg:i386 [1]
+Remv nosection [1]
+Remv texteditor [1]' aptget autoremove mydesktop -s
+
+testequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ mydesktop mydesktop-core texteditor
+0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
+Remv mydesktop [1]
+Remv mydesktop-core [1]
+Remv texteditor [1]' aptget autoremove texteditor -s #-o Debug::pkgDepCache::AutoInstall=1 -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1
+testsuccess aptget autoremove texteditor -y
+
+testdpkgnotinstalled mydesktop mydesktop-core texteditor
+testdpkginstalled browser
+
+testmarkedmanual 'browser' 'dpkg' 'foreignpkg:i386' 'nosection'
+testmarkedauto
+
+# test that installed/upgraded auto-pkgs are not set to manual
+
+testsuccess aptget install browser=41 -y --allow-downgrades
+
+testmarkedmanual 'browser' 'dpkg' 'foreignpkg:i386' 'nosection'
+testmarkedauto
+testsuccess aptmark auto browser
+testmarkedauto 'browser'
+testsuccess aptmark auto nosection
+testmarkedauto 'browser' 'nosection'
+testmarkedmanual 'dpkg' 'foreignpkg:i386'
+
+# nosection should be auto, not manual, but is marked as such by the resolver
+# removing mydesktop-core temporally… the resolver should be figuring out here
+# that there is no point of removing mydesktop-core as its an unavoidable
+# dependency of the user-requested mydesktop
+
+testsuccess aptget install mydesktop -y -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1
+
+testmarkedmanual 'dpkg' 'foreignpkg:i386' 'mydesktop' 'nosection'
+testmarkedauto 'browser' 'mydesktop-core' 'texteditor'
diff --git a/test/integration/test-apt-progress-fd b/test/integration/test-apt-progress-fd
new file mode 100755
index 000000000..57728ca81
--- /dev/null
+++ b/test/integration/test-apt-progress-fd
@@ -0,0 +1,85 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildsimplenativepackage 'testing' 'amd64' '0.1' 'stable'
+buildsimplenativepackage 'testing' 'amd64' '0.8.15' 'stable'
+buildsimplenativepackage 'testing2' 'amd64,i386' '0.8.15' 'stable'
+setupaptarchive
+
+# install native
+exec 3> apt-progress.log
+testsuccess aptget install testing=0.1 -y -o APT::Status-Fd=3
+testfileequal './apt-progress.log' 'dlstatus:1:0.0000:Retrieving file 1 of 1
+dlstatus:1:100.0000:Retrieving file 1 of 1
+pmstatus:dpkg-exec:0.0000:Running dpkg
+pmstatus:testing:0.0000:Installing testing (amd64)
+pmstatus:testing:16.6667:Preparing testing (amd64)
+pmstatus:testing:33.3333:Unpacking testing (amd64)
+pmstatus:testing:50.0000:Preparing to configure testing (amd64)
+pmstatus:dpkg-exec:50.0000:Running dpkg
+pmstatus:testing:50.0000:Configuring testing (amd64)
+pmstatus:testing:66.6667:Configuring testing (amd64)
+pmstatus:testing:83.3333:Installed testing (amd64)'
+
+# upgrade
+exec 3> apt-progress.log
+testsuccess aptget install testing=0.8.15 -y -o APT::Status-Fd=3
+testfileequal './apt-progress.log' 'dlstatus:1:0.0000:Retrieving file 1 of 1
+dlstatus:1:100.0000:Retrieving file 1 of 1
+pmstatus:dpkg-exec:0.0000:Running dpkg
+pmstatus:testing:0.0000:Installing testing (amd64)
+pmstatus:testing:16.6667:Preparing testing (amd64)
+pmstatus:testing:33.3333:Unpacking testing (amd64)
+pmstatus:testing:50.0000:Preparing to configure testing (amd64)
+pmstatus:dpkg-exec:50.0000:Running dpkg
+pmstatus:testing:50.0000:Configuring testing (amd64)
+pmstatus:testing:66.6667:Configuring testing (amd64)
+pmstatus:testing:83.3333:Installed testing (amd64)'
+
+# reinstall
+exec 3> apt-progress.log
+testsuccess aptget install testing=0.8.15 --reinstall -y -o APT::Status-Fd=3
+testfileequal './apt-progress.log' 'dlstatus:1:0.0000:Retrieving file 1 of 1
+dlstatus:1:100.0000:Retrieving file 1 of 1
+pmstatus:dpkg-exec:0.0000:Running dpkg
+pmstatus:testing:0.0000:Installing testing (amd64)
+pmstatus:testing:16.6667:Preparing testing (amd64)
+pmstatus:testing:33.3333:Unpacking testing (amd64)
+pmstatus:testing:50.0000:Preparing to configure testing (amd64)
+pmstatus:dpkg-exec:50.0000:Running dpkg
+pmstatus:testing:50.0000:Configuring testing (amd64)
+pmstatus:testing:66.6667:Configuring testing (amd64)
+pmstatus:testing:83.3333:Installed testing (amd64)'
+
+# and remove
+exec 3> apt-progress.log
+testsuccess aptget remove testing -y -o APT::Status-Fd=3
+testfileequal './apt-progress.log' 'pmstatus:dpkg-exec:0.0000:Running dpkg
+pmstatus:testing:0.0000:Removing testing (amd64)
+pmstatus:testing:25.0000:Preparing for removal of testing (amd64)
+pmstatus:testing:50.0000:Removing testing (amd64)
+pmstatus:testing:75.0000:Removed testing (amd64)
+pmstatus:dpkg-exec:75.0000:Running dpkg'
+
+# install non-native and ensure we get proper progress info
+exec 3> apt-progress.log
+testsuccess aptget install testing2:i386 -y -o APT::Status-Fd=3
+testfileequal './apt-progress.log' 'dlstatus:1:0.0000:Retrieving file 1 of 1
+dlstatus:1:100.0000:Retrieving file 1 of 1
+pmstatus:dpkg-exec:0.0000:Running dpkg
+pmstatus:testing2:0.0000:Installing testing2 (i386)
+pmstatus:testing2:16.6667:Preparing testing2 (i386)
+pmstatus:testing2:33.3333:Unpacking testing2 (i386)
+pmstatus:testing2:50.0000:Preparing to configure testing2 (i386)
+pmstatus:dpkg-exec:50.0000:Running dpkg
+pmstatus:testing2:50.0000:Configuring testing2 (i386)
+pmstatus:testing2:66.6667:Configuring testing2 (i386)
+pmstatus:testing2:83.3333:Installed testing2 (i386)'
+
+rm -f apt-progress*.log
diff --git a/test/integration/test-apt-progress-fd-conffile b/test/integration/test-apt-progress-fd-conffile
new file mode 100755
index 000000000..9fb6fbefc
--- /dev/null
+++ b/test/integration/test-apt-progress-fd-conffile
@@ -0,0 +1,42 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+# old conffile
+setupsimplenativepackage 'compiz-core' 'native' '1.0' 'unstable'
+BUILDDIR='incoming/compiz-core-1.0'
+mkdir -p "${BUILDDIR}/debian/compiz-core/etc"
+echo 'foo=bar;' > "${BUILDDIR}/compiz.conf"
+echo 'compiz.conf /etc/compiz.conf' >> "${BUILDDIR}/debian/install"
+buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
+rm -rf "$BUILDDIR"
+
+# new conffile
+setupsimplenativepackage 'compiz-core' 'native' '2.0' 'unstable'
+BUILDDIR='incoming/compiz-core-2.0'
+mkdir -p "${BUILDDIR}/debian/compiz-core/etc"
+echo 'foo2=bar2;' > "${BUILDDIR}/compiz.conf"
+echo 'compiz.conf /etc/compiz.conf' >> "${BUILDDIR}/debian/install"
+buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
+rm -rf "$BUILDDIR"
+
+setupaptarchive
+
+testsuccess aptget install compiz-core=1.0
+
+# fake conffile change
+echo 'meep' >> rootdir/etc/compiz.conf/compiz.conf
+
+# FIXME: Is there really no way to see if dpkg actually prompts?
+msgtest 'Test for successful execution of' 'apt-get install compiz-core=2.0'
+exec 3> apt-progress.log
+testsuccess --nomsg aptget install compiz-core=2.0 -o APT::Status-Fd=3 -o Dpkg::Use-Pty=false -o dpkg::options::='--force-confold'
+
+# and ensure there is a conffile message in the file
+msgtest 'Test status fd for an included' 'pmconffile msg'
+testsuccess --nomsg grep "pmconffile:/etc/compiz.conf/compiz.conf" apt-progress.log
diff --git a/test/integration/test-apt-progress-fd-deb822 b/test/integration/test-apt-progress-fd-deb822
new file mode 100755
index 000000000..d9a4505d1
--- /dev/null
+++ b/test/integration/test-apt-progress-fd-deb822
@@ -0,0 +1,63 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildsimplenativepackage 'testing' 'amd64' '0.1' 'stable'
+buildsimplenativepackage 'testing' 'all' '0.8.15' 'stable'
+buildsimplenativepackage 'testing2' 'amd64,i386' '0.8.15' 'stable'
+setupaptarchive
+
+# install native
+exec 3> apt-progress.log
+testsuccess aptget install testing=0.1 -y -o APT::Status-deb822-Fd=3
+
+testfileequal './apt-progress.log' 'Status: progress
+Percent: 0.0000
+Message: Running dpkg
+
+Status: progress
+Package: testing:amd64
+Percent: 0.0000
+Message: Installing testing (amd64)
+
+Status: progress
+Package: testing:amd64
+Percent: 16.6667
+Message: Preparing testing (amd64)
+
+Status: progress
+Package: testing:amd64
+Percent: 33.3333
+Message: Unpacking testing (amd64)
+
+Status: progress
+Package: testing:amd64
+Percent: 50.0000
+Message: Preparing to configure testing (amd64)
+
+Status: progress
+Percent: 50.0000
+Message: Running dpkg
+
+Status: progress
+Package: testing:amd64
+Percent: 50.0000
+Message: Configuring testing (amd64)
+
+Status: progress
+Package: testing:amd64
+Percent: 66.6667
+Message: Configuring testing (amd64)
+
+Status: progress
+Package: testing:amd64
+Percent: 83.3333
+Message: Installed testing (amd64)
+'
+
+rm -f apt-progress*.log
diff --git a/test/integration/test-apt-progress-fd-error b/test/integration/test-apt-progress-fd-error
new file mode 100755
index 000000000..4439c042a
--- /dev/null
+++ b/test/integration/test-apt-progress-fd-error
@@ -0,0 +1,25 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+mkdir -p usr/bin
+touch usr/bin/file-conflict
+
+buildsimplenativepackage 'foo1' 'native' '0.8.15' 'stable' '' 'pkg with file conflicts' '' '' 'usr/'
+buildsimplenativepackage 'foo2' 'native' '0.8.15' 'stable' '' 'pkg with file conflicts' '' '' 'usr/'
+insertinstalledpackage 'apport' 'native' '1'
+
+setupaptarchive
+
+exec 3> apt-progress.log
+testfailure aptget install foo1 foo2 -y -o APT::Status-Fd=3
+msgtest 'Ensure correct error message'
+testsuccess --nomsg grep "foo2_0.8.15_[^.]\+.deb:36.3636:trying to overwrite '/usr/bin/file-conflict', which is also in package foo1 0.8.15" apt-progress.log
+
+testsuccess test -s rootdir/var/crash/foo2.0.crash
+testsuccess grep '^Package: foo2 0.8.15$' rootdir/var/crash/foo2.0.crash
diff --git a/test/integration/test-apt-redirect-loop b/test/integration/test-apt-redirect-loop
new file mode 100755
index 000000000..e1a8aeea0
--- /dev/null
+++ b/test/integration/test-apt-redirect-loop
@@ -0,0 +1,20 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+echo 'alright' > aptarchive/working
+changetohttpswebserver
+webserverconfig 'aptwebserver::redirect::replace::/redirectme3/' '/redirectme/'
+webserverconfig 'aptwebserver::redirect::replace::/redirectme2/' '/redirectme3/'
+webserverconfig 'aptwebserver::redirect::replace::/redirectme/' '/redirectme2/'
+
+testfailure apthelper download-file "http://localhost:${APTHTTPPORT}/redirectme/working" httpfile
+testsuccess grep 'Redirection loop encountered' rootdir/tmp/testfailure.output
+
+testfailure apthelper download-file "https://localhost:${APTHTTPSPORT}/redirectme/working" httpsfile
+testsuccess grep 'Redirection loop encountered' rootdir/tmp/testfailure.output
diff --git a/test/integration/test-apt-showlist-orgroup-in-recommends b/test/integration/test-apt-showlist-orgroup-in-recommends
new file mode 100755
index 000000000..a03c367f4
--- /dev/null
+++ b/test/integration/test-apt-showlist-orgroup-in-recommends
@@ -0,0 +1,200 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+# simple case
+insertinstalledpackage 'aaa' 'all' '1'
+insertinstalledpackage 'ddd' 'all' '1'
+insertpackage 'unstable' 'aaa' 'all' '1'
+insertpackage 'unstable' 'ddd' 'all' '1'
+insertpackage 'unstable' 'yyy' 'all' '1'
+insertpackage 'unstable' 'zzz' 'all' '1:1'
+insertpackage 'unstable' 'simple' 'all' '1' 'Recommends: aaa, bbb
+Suggests: ccc, ddd'
+insertpackage 'unstable' 'orgroup' 'all' '1' 'Recommends: aaa | bbb
+Suggests: ccc | ddd'
+insertpackage 'unstable' 'orgroup2' 'all' '1' 'Recommends: xxx | yyy
+Suggests: yyy | zzz'
+insertpackage 'unstable' 'orgroup3' 'all' '1' 'Recommends: xxx | yyy
+Suggests: yyy | zzz'
+insertpackage 'unstable' 'orgroup4' 'all' '1' 'Recommends: xxx
+Suggests: zzz'
+insertpackage 'unstable' 'versionedor' 'all' '1' 'Recommends: aaa (>> 2) | bbb
+Suggests: ccc | ddd (>> 2)'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ ccc
+Recommended packages:
+ bbb
+The following NEW packages will be installed:
+ simple
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst simple (1 unstable [all])
+Conf simple (1 unstable [all])' aptget install simple -s --install-recommends --install-suggests
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ ccc
+Recommended packages:
+ bbb
+The following NEW packages will be installed:
+ simple
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst simple (1 unstable [all])
+Conf simple (1 unstable [all])' aptget install simple -s --no-install-recommends
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ ccc
+Recommended packages:
+ aaa bbb
+The following packages will be REMOVED:
+ aaa
+The following NEW packages will be installed:
+ simple
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv aaa [1]
+Inst simple (1 unstable [all])
+Conf simple (1 unstable [all])' aptget install simple aaa- -s --no-install-recommends
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ orgroup
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst orgroup (1 unstable [all])
+Conf orgroup (1 unstable [all])' aptget install orgroup -s --no-install-recommends
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Recommended packages:
+ aaa | bbb
+The following packages will be REMOVED:
+ aaa
+The following NEW packages will be installed:
+ orgroup
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv aaa [1]
+Inst orgroup (1 unstable [all])
+Conf orgroup (1 unstable [all])' aptget install orgroup aaa- -s --no-install-recommends
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ yyy | zzz
+Recommended packages:
+ xxx | yyy
+The following NEW packages will be installed:
+ orgroup2
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst orgroup2 (1 unstable [all])
+Conf orgroup2 (1 unstable [all])' aptget install orgroup2 -s --no-install-recommends
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ yyy | zzz
+Recommended packages:
+ xxx | yyy
+The following NEW packages will be installed:
+ orgroup2 orgroup3
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst orgroup2 (1 unstable [all])
+Inst orgroup3 (1 unstable [all])
+Conf orgroup2 (1 unstable [all])
+Conf orgroup3 (1 unstable [all])' aptget install orgroup2 orgroup3 -s --no-install-recommends
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ yyy | zzz zzz
+Recommended packages:
+ xxx | yyy xxx
+The following NEW packages will be installed:
+ orgroup2 orgroup4
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst orgroup2 (1 unstable [all])
+Inst orgroup4 (1 unstable [all])
+Conf orgroup2 (1 unstable [all])
+Conf orgroup4 (1 unstable [all])' aptget install orgroup2 orgroup4 -s --no-install-recommends
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ yyy (1)
+ | zzz (1:1)
+ zzz (1:1)
+Recommended packages:
+ xxx
+ | yyy (1)
+ xxx
+The following NEW packages will be installed:
+ orgroup2 (1)
+ orgroup4 (1)
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst orgroup2 (1 unstable [all])
+Inst orgroup4 (1 unstable [all])
+Conf orgroup2 (1 unstable [all])
+Conf orgroup4 (1 unstable [all])' aptget install orgroup2 orgroup4 -s -V --no-install-recommends
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ zzz (1:1)
+Recommended packages:
+ xxx
+The following NEW packages will be installed:
+ orgroup2 (1)
+ orgroup4 (1)
+ yyy (1)
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst orgroup2 (1 unstable [all])
+Inst orgroup4 (1 unstable [all])
+Inst yyy (1 unstable [all])
+Conf orgroup2 (1 unstable [all])
+Conf orgroup4 (1 unstable [all])
+Conf yyy (1 unstable [all])' aptget install orgroup2 orgroup4 yyy -s -V --no-install-recommends
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ ccc | ddd
+Recommended packages:
+ aaa | bbb
+The following NEW packages will be installed:
+ versionedor
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst versionedor (1 unstable [all])
+Conf versionedor (1 unstable [all])' aptget install versionedor -s --no-install-recommends
+
+SHOWSUGGEST='Reading package lists...
+Building dependency tree...
+Suggested packages:
+ zzz
+Recommended packages:
+ xxx
+The following NEW packages will be installed:
+ orgroup4
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst orgroup4 (1 unstable [all])
+Conf orgroup4 (1 unstable [all])'
+INSTSUGGEST='Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ zzz
+Recommended packages:
+ xxx
+The following NEW packages will be installed:
+ orgroup4 zzz
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst orgroup4 (1 unstable [all])
+Inst zzz (1:1 unstable [all])
+Conf orgroup4 (1 unstable [all])
+Conf zzz (1:1 unstable [all])'
+testsuccessequal "$SHOWSUGGEST" aptget install orgroup4 -s
+testsuccessequal "$INSTSUGGEST" aptget install orgroup4 --install-suggests -s
+echo 'Binary::apt-get::APT::Install-Suggests "true";' > rootdir/etc/apt/apt.conf.d/99binaryspecific.conf
+testsuccessequal "$INSTSUGGEST" aptget install orgroup4 -s
+testsuccessequal "$SHOWSUGGEST" apt install orgroup4 -s
+testsuccessequal "$SHOWSUGGEST" aptget install orgroup4 -s --no-install-suggests
diff --git a/test/integration/test-apt-source-and-build-dep b/test/integration/test-apt-source-and-build-dep
new file mode 100755
index 000000000..7f7457217
--- /dev/null
+++ b/test/integration/test-apt-source-and-build-dep
@@ -0,0 +1,191 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+# we need to insert a package into "unstable" so that a Release file is
+# create for the test
+insertpackage 'wheezy' 'build-essential' 'all' '1.0'
+
+# a "normal" package with source and binary
+insertpackage 'unstable' 'foo' 'all' '2.0'
+insertsource 'unstable' 'foo' 'all' '2.0'
+
+# binary packages with Source-field
+insertpackage 'unstable,testing' 'bin' 'i386' '3-2+b1' 'Source: bin (3-2)'
+insertsource 'unstable,testing' 'bin' 'any' '3-2'
+insertpackage 'stable' 'bin' 'i386' '2-2+b1' 'Source: bin-backport (2-2)'
+insertsource 'stable' 'bin-backport' 'any' '2-2'
+
+# its possible to have multiple src versions in the sources file, ensure
+# to pick the correct one in this case (bts #731853)
+insertsource 'stable' 'foo' 'all' '1.5'
+insertsource 'stable' 'foo' 'all' '0.5'
+insertpackage 'stable' 'foo' 'all' '1.0'
+insertsource 'stable' 'foo' 'all' '1.0'
+
+# these packages exists only as sources, add two versions to ensure that
+# apt will pick the higher version number (bts #731853)
+insertsource 'wheezy' 'foo' 'all' '0.0.1'
+insertsource 'wheezy' 'foo' 'all' '0.1'
+
+# the order of these versions is chosen to ensure that
+# * apt will pick the one in the correct release, despite a higher version coming later and
+# * apt will pick the highest version in a release, despite a lower version coming later.
+# (bts #746412)
+insertsource 'stable' 'baz' 'all' '1.0'
+insertsource 'unstable' 'baz' 'all' '2.0'
+insertsource 'unstable' 'baz' 'all' '1.5'
+
+# ensure we really have the situation we wanted (first 2.0 is foo above)
+testequal 'Version: 2.0
+Version: 3-2
+Version: 2.0
+Version: 1.5' grep '^Version:' aptarchive/dists/unstable/main/source/Sources
+
+insertsource 'stable' 'bar' 'any' '1.1' 'Vcs-Browser: https://anonscm.debian.org/cgit/bar/bar.git
+Vcs-Git: git://anonscm.debian.org/bar/bar.git -b debian/experimental'
+
+setupaptarchive
+
+APTARCHIVE=$(readlink -f ./aptarchive)
+
+# normal operation gets highest version number
+HEADER='Reading package lists...'
+DOWNLOAD1="Need to get 0 B/25 B of source archives.
+'file://${APTARCHIVE}/foo_1.0.dsc' foo_1.0.dsc 11 SHA256:ed7c25c832596339bee13e4e7c45cf49f869b60d2bf57252f18191d75866c2a7
+'file://${APTARCHIVE}/foo_1.0.tar.gz' foo_1.0.tar.gz 14 SHA256:f3da8c6ebc62c8ef2dae439a498dddcdacc1a07f45ff67ad12f44b6e2353c239"
+DOWNLOAD2="Need to get 0 B/25 B of source archives.
+'file://${APTARCHIVE}/foo_2.0.dsc' foo_2.0.dsc 11 SHA256:0fcb803ffbeef26db884625aaf06e75f3eda5c994634980e7c20fd37ed1fc104
+'file://${APTARCHIVE}/foo_2.0.tar.gz' foo_2.0.tar.gz 14 SHA256:ca9b0b828ca22372502af2b80f61f0bd9063910ece9fc34eeaf9d9e31aa8195a"
+DOWNLOAD3="Need to get 0 B/25 B of source archives.
+'file://${APTARCHIVE}/baz_1.0.dsc' baz_1.0.dsc 11 SHA256:322245f56092b466801dda62d79c8687bba9724af6d16d450d655d29e41d3d7b
+'file://${APTARCHIVE}/baz_1.0.tar.gz' baz_1.0.tar.gz 14 SHA256:0870bc73164ff5ba1f52153fdcb48e140137f9c7c122d57592cea136a57f73c0"
+DOWNLOAD4="Need to get 0 B/25 B of source archives.
+'file://${APTARCHIVE}/baz_2.0.dsc' baz_2.0.dsc 11 SHA256:47d062d29070b3f592d1c8aed8c1e7913804bbb67ca1d64877c8219dac5e0420
+'file://${APTARCHIVE}/baz_2.0.tar.gz' baz_2.0.tar.gz 14 SHA256:11c1b202c94a64ab6433d9f0ed5515fce1dc7b20e6bcf51cec9ef8b9455f5a41"
+testsuccessequal "$HEADER
+$DOWNLOAD2" apt source -q --print-uris foo
+testsuccessequal "$HEADER
+$DOWNLOAD2" apt source -q --print-uris foo foo
+getbuilddep() {
+ echo 'Reading package lists...'
+ if [ -n "$2" ]; then
+ echo "$2"
+ fi
+ echo "${1} has no build depends.
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ build-essential
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst build-essential (1.0 wheezy [all])
+Conf build-essential (1.0 wheezy [all])"
+}
+testsuccessequal "$(getbuilddep 'foo')" apt build-dep foo -s
+
+# select by release: suite
+testsuccessequal "$HEADER
+Selected version '1.0' (stable) for foo
+$DOWNLOAD1" apt source -q --print-uris foo/stable
+testsuccessequal "$(getbuilddep 'foo' "Selected version '1.0' (stable) for foo")" apt build-dep foo/stable -s
+testsuccessequal "$HEADER
+Selected version '2.0' (unstable) for foo
+$DOWNLOAD2" apt source -q --print-uris foo/unstable
+testsuccessequal "$(getbuilddep 'foo' "Selected version '2.0' (unstable) for foo")" apt build-dep foo/unstable -s
+testsuccessequal "$HEADER
+Selected version '1.0' (stable) for foo
+$DOWNLOAD1" apt source -q --print-uris foo -t stable
+testsuccessequal "$(getbuilddep 'foo' "Selected version '1.0' (stable) for foo")" apt build-dep foo -t stable -s
+testsuccessequal "$HEADER
+Selected version '2.0' (unstable) for foo
+$DOWNLOAD2" apt source -q --print-uris foo -t unstable
+testsuccessequal "$(getbuilddep 'foo' "Selected version '2.0' (unstable) for foo")" apt build-dep foo -t unstable -s
+testsuccessequal "$HEADER
+Selected version '1.0' (stable) for baz
+$DOWNLOAD3" apt source -q --print-uris baz -t stable
+testsuccessequal "$(getbuilddep 'baz' "Selected version '1.0' (stable) for baz")" apt build-dep baz -t stable -s
+
+# select by release: codename
+testsuccessequal "$HEADER
+Selected version '2.0' (sid) for foo
+$DOWNLOAD2" apt source -q --print-uris foo/sid
+testsuccessequal "$(getbuilddep 'foo' "Selected version '2.0' (sid) for foo")" apt build-dep foo/sid -s
+testsuccessequal "$HEADER
+Selected version '2.0' (sid) for foo
+$DOWNLOAD2" apt source -q --print-uris foo -t sid
+testsuccessequal "$(getbuilddep 'foo' "Selected version '2.0' (sid) for foo")" apt build-dep foo -t sid -s
+testsuccessequal "$HEADER
+Selected version '2.0' (sid) for baz
+$DOWNLOAD4" apt source -q --print-uris baz -t sid
+testsuccessequal "$(getbuilddep 'baz' "Selected version '2.0' (sid) for baz")" apt build-dep baz -t sid -s
+
+# select by version
+testsuccessequal "$HEADER
+$DOWNLOAD1" apt source -q --print-uris foo=1.0
+testsuccessequal "$(getbuilddep 'foo')" apt build-dep foo=1.0 -s
+
+# select by release with no binary package (Bug#731102) but ensure to get
+# highest version
+DOWNLOAD01="Need to get 0 B/25 B of source archives.
+'file://${APTARCHIVE}/foo_0.1.dsc' foo_0.1.dsc 11 SHA256:72af24b0290fe1d13a3e25fddd2633e43c87ff79d249bc850009e47bcce73565
+'file://${APTARCHIVE}/foo_0.1.tar.gz' foo_0.1.tar.gz 14 SHA256:ec748ad88a71f98bfdc012e1a7632377d05fe3ebbf9c0922e0691fe4d79c0585"
+testsuccessequal "$HEADER
+Selected version '0.1' (wheezy) for foo
+$DOWNLOAD01" apt source -q --print-uris foo/wheezy
+testsuccessequal "$(getbuilddep 'foo' "Selected version '0.1' (wheezy) for foo")" apt build-dep foo/wheezy -s
+
+# unavailable one
+testfailureequal "$HEADER
+E: Can not find version '9.9-not-there' of package 'foo'
+E: Unable to find a source package for foo" apt source -q --print-uris foo=9.9-not-there
+testfailureequal "Reading package lists...
+E: Can not find version '9.9-not-there' of package 'foo'
+E: Unable to find a source package for foo=9.9-not-there" apt build-dep -s foo=9.9-not-there
+
+# version and release
+DOWNLOAD001="Need to get 0 B/29 B of source archives.
+'file://${APTARCHIVE}/foo_0.0.1.dsc' foo_0.0.1.dsc 13 SHA256:649dfe03bbb70cebdfe7c6bf9036f9f2472510b8f52e823bdf5ade362ebaa76f
+'file://${APTARCHIVE}/foo_0.0.1.tar.gz' foo_0.0.1.tar.gz 16 SHA256:ab7ba789d178362ecc808e49705e2338988a7f5b9410ec11a6c9555c017de907"
+testsuccessequal "$HEADER
+$DOWNLOAD001" apt source -q --print-uris -t unstable foo=0.0.1
+testsuccessequal "$(getbuilddep 'foo')" apt build-dep foo=0.0.1 -s
+
+testsuccessequal "$HEADER
+Need to get 0 B/25 B of source archives.
+Fetch source foo" apt source -q -s foo
+testsuccessequal "$(getbuilddep 'foo')" apt build-dep foo -s
+
+testfailureequal 'E: Must specify at least one package to fetch source for' apt source
+testfailureequal 'E: Must specify at least one package to check builddeps for' apt build-dep
+
+testsuccessequal "Reading package lists...
+NOTICE: 'bar' packaging is maintained in the 'Git' version control system at:
+git://anonscm.debian.org/bar/bar.git -b debian/experimental
+Please use:
+git clone git://anonscm.debian.org/bar/bar.git -b debian/experimental
+to retrieve the latest (possibly unreleased) updates to the package.
+Need to get 0 B/25 B of source archives.
+Fetch source bar" apt source bar -s
+testsuccessequal "$(getbuilddep 'bar')" apt build-dep bar -s
+
+testsuccessequal "$HEADER
+Need to get 0 B/25 B of source archives.
+Fetch source bin" apt source bin -s -q
+testsuccessequal "$(getbuilddep 'bin')" apt build-dep bin -s
+testsuccessequal "$HEADER
+Selected version '3-2' (unstable) for bin
+Need to get 0 B/25 B of source archives.
+Fetch source bin" apt source bin/unstable -s -q
+testsuccessequal "$(getbuilddep 'bin' "Selected version '3-2' (unstable) for bin")" apt build-dep bin/unstable -s
+testsuccessequal "$HEADER
+Picking 'bin-backport' as source package instead of 'bin'
+Selected version '2-2' (stable) for bin-backport
+Need to get 0 B/43 B of source archives.
+Fetch source bin-backport" apt source bin/stable -s -q
+testsuccessequal "$(getbuilddep 'bin-backport' "Picking 'bin-backport' as source package instead of 'bin'
+Selected version '2-2' (stable) for bin-backport")" apt build-dep bin/stable -s
diff --git a/test/integration/test-apt-sources-deb822 b/test/integration/test-apt-sources-deb822
new file mode 100755
index 000000000..f19f263d0
--- /dev/null
+++ b/test/integration/test-apt-sources-deb822
@@ -0,0 +1,201 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+LISTS='rootdir/etc/apt/sources.list.d/test.list'
+ABSLISTS="$(readlink -f $LISTS)"
+SOURCES='rootdir/etc/apt/sources.list.d/test.sources'
+BASE='# some comment
+# that contains a : as well
+#Types: meep
+
+Types: deb
+#Types: deb-src
+URIs: http://ftp.debian.org/debian
+Suites: stable
+Components: main
+Description: summay
+# comments are ignored
+ and the long part'
+
+msgcleantest() {
+ rm -f $LISTS $SOURCES
+ msgtest "$@"
+}
+
+msgcleantest 'Test sources.list' 'old style'
+echo "deb http://ftp.debian.org/debian stable main" > $LISTS
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+msgcleantest 'Test sources.list' 'old style with tabs'
+echo "deb http://ftp.debian.org/debian stable main" > $LISTS
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+msgcleantest 'Test sources.list' 'old style with forgotten end for options'
+echo "deb [trusted=yes arch+=armel,powerpc http://ftp.debian.org/debian stable main" > $LISTS
+testfailureequal --nomsg "E: Malformed entry 1 in list file $ABSLISTS ([option] not assignment)
+E: The list of sources could not be read." aptget update --print-uris
+
+msgcleantest 'Test sources.list' 'old style with stray ] instead of options'
+echo "deb ] http://ftp.debian.org/debian stable main" > $LISTS
+testfailureequal --nomsg "E: Malformed entry 1 in list file $ABSLISTS (URI parse)
+E: The list of sources could not be read." aptget update --print-uris
+
+msgcleantest 'Test sources.list' 'old style options no key'
+echo "deb [=test] http://ftp.debian.org/debian stable main" > $LISTS
+testfailureequal --nomsg "E: Malformed entry 1 in list file $ABSLISTS ([option] no key)
+E: The list of sources could not be read." aptget update --print-uris
+
+msgcleantest 'Test sources.list' 'old style options no value'
+echo "deb [test=] http://ftp.debian.org/debian stable main" > $LISTS
+testfailureequal --nomsg "E: Malformed entry 1 in list file $ABSLISTS ([option] no value)
+E: The list of sources could not be read." aptget update --print-uris
+
+msgcleantest 'Test sources.list' 'old style with options'
+echo "deb [trusted=yes arch+=armel,powerpc] http://ftp.debian.org/debian stable main" > $LISTS
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-armel/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-armel_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-powerpc/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-powerpc_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+msgcleantest 'Test sources.list' 'old style with comments'
+echo "deb http://ftp.debian.org/debian stable main # non-free" > $LISTS
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+msgcleantest 'Test sources.list' 'old style with option comments'
+echo "deb [trusted=yes#yeahreally] http://ftp.debian.org/debian stable main # non-free" > $LISTS
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+msgcleantest 'Test sources.list' 'simple deb822'
+echo "$BASE" > $SOURCES
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+msgcleantest 'Test deb822 with' 'two entries'
+# Two entries
+echo "$BASE" > $SOURCES
+echo "" >> $SOURCES
+echo "$BASE" | sed s/stable/unstable/ >> $SOURCES
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/unstable/InRelease' ftp.debian.org_debian_dists_unstable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0
+'http://ftp.debian.org/debian/dists/unstable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_unstable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/unstable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_unstable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/unstable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_unstable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+# two suite entries
+msgcleantest 'Test deb822 with' 'two Suite entries'
+echo "$BASE" | sed -e "s/stable/stable unstable/" > $SOURCES
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/unstable/InRelease' ftp.debian.org_debian_dists_unstable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0
+'http://ftp.debian.org/debian/dists/unstable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_unstable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/unstable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_unstable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/unstable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_unstable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+msgcleantest 'Test deb822' 'architecture option'
+echo "$BASE" > $SOURCES
+echo "Architectures: amd64 armel" >> $SOURCES
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-amd64_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-armel/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-armel_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+msgcleantest 'Test old-style' 'suite arch variable'
+echo 'deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/' > $LISTS
+testsuccessequal --nomsg "'http://ftp.tlh.debian.org/universe/unstable/binary-i386/InRelease' ftp.tlh.debian.org_universe_unstable_binary-i386_InRelease 0
+'http://ftp.tlh.debian.org/universe/unstable/binary-i386/Packages.xz' ftp.tlh.debian.org_universe_unstable_binary-i386_Packages 0
+'http://ftp.tlh.debian.org/universe/unstable/binary-i386/en.xz' ftp.tlh.debian.org_universe_unstable_binary-i386_en 0 " aptget update --print-uris
+
+msgcleantest 'Test deb822' 'suite arch variable'
+echo 'Types: deb
+URIs: http://ftp.tlh.debian.org/universe
+Suites: stable/binary-$(ARCH)/' > $SOURCES
+testsuccessequal --nomsg "'http://ftp.tlh.debian.org/universe/stable/binary-i386/InRelease' ftp.tlh.debian.org_universe_stable_binary-i386_InRelease 0
+'http://ftp.tlh.debian.org/universe/stable/binary-i386/Packages.xz' ftp.tlh.debian.org_universe_stable_binary-i386_Packages 0
+'http://ftp.tlh.debian.org/universe/stable/binary-i386/en.xz' ftp.tlh.debian.org_universe_stable_binary-i386_en 0 " aptget update --print-uris
+
+msgcleantest 'Test old-style sources.list file which has' 'malformed dist'
+echo "deb http://ftp.debian.org" > $LISTS
+testfailureequal --nomsg "E: Malformed entry 1 in list file $TMPWORKINGDIRECTORY/$LISTS (Suite)
+E: The list of sources could not be read." aptget update --print-uris
+
+msgcleantest 'Test deb822 sources.list file which has' 'malformed URI'
+echo "Types: deb
+Suites: stable
+" > $SOURCES
+testfailureequal --nomsg "E: Malformed entry 1 in sources file $TMPWORKINGDIRECTORY/$SOURCES (URI)
+E: The list of sources could not be read." aptget update --print-uris
+
+# with Enabled: false
+echo "$BASE" > $SOURCES
+echo "Enabled: no" >> $SOURCES
+testempty aptget update --print-uris
+
+# multiple URIs
+msgcleantest 'Test deb822 sources.list file which has' 'Multiple URIs work'
+echo "$BASE" | sed -e 's#http://ftp.debian.org/debian#http://ftp.debian.org/debian http://ftp.de.debian.org/debian#' > $SOURCES
+testsuccessequal --nomsg "'http://ftp.de.debian.org/debian/dists/stable/InRelease' ftp.de.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.de.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.de.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.de.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.de.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.de.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.de.debian.org_debian_dists_stable_main_i18n_Translation-en 0
+'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+# multiple Type in one field
+msgcleantest 'Test deb822 sources.list file which has' 'Multiple Types work'
+echo "$BASE" | sed -e 's#Types: deb#Types: deb deb-src#' > $SOURCES
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/source/Sources.xz' ftp.debian.org_debian_dists_stable_main_source_Sources 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+# a Suite
+msgcleantest 'Test deb822 sources.list file which has' 'an exact path and no sections'
+cat > $SOURCES <<EOF
+Types: deb
+URIs: http://emacs.naquadah.org
+Suites: stable/
+EOF
+testsuccessequal --nomsg "'http://emacs.naquadah.org/stable/InRelease' emacs.naquadah.org_stable_InRelease 0
+'http://emacs.naquadah.org/stable/Packages.xz' emacs.naquadah.org_stable_Packages 0
+'http://emacs.naquadah.org/stable/en.xz' emacs.naquadah.org_stable_en 0 " aptget update --print-uris
+
+# multivalue -Add/-Remove
+msgcleantest 'Test deb822 sources.list file which has' '-Add/-Remove multivalues'
+echo "$BASE" > $SOURCES
+echo "Languages-Remove: en" >> $SOURCES
+echo "Architectures-Add: armel" >> $SOURCES
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-armel/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-armel_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0 " aptget update --print-uris
diff --git a/test/integration/test-apt-tagfile-fields-order b/test/integration/test-apt-tagfile-fields-order
new file mode 100755
index 000000000..4af58aabb
--- /dev/null
+++ b/test/integration/test-apt-tagfile-fields-order
@@ -0,0 +1,82 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+
+dpkg_field_ordered_list() {
+ local FIELDS="$(perl -e "
+use Dpkg::Control;
+use Dpkg::Control::Fields;
+foreach \$f (field_ordered_list(${1})) {
+ print \"\$f\\n\";
+}" | sort -u)"
+ if [ -z "$FIELDS" ]; then
+ msgfail 'Could not get fields via libdpkg-perl'
+ fi
+ echo "$FIELDS"
+}
+
+comparelsts() {
+ local DIFFOUTPUT="$(diff -u apt.lst dpkg.lst || true)"
+ if echo "$DIFFOUTPUT" | grep -q '^+[^+]'; then
+ echo
+ echo "$DIFFOUTPUT" | grep '^[+-][^+-]'
+ msgfail
+ else
+ msgpass
+ fi
+}
+
+msgtest 'Check that apt knows all fields dpkg orders in' 'Packages'
+dpkg_field_ordered_list 'CTRL_INDEX_PKG' > dpkg.lst
+sed -ne 's#^ "\(.*\)",.*$#\1#p' "${SOURCEDIRECTORY}/apt-pkg/tagfile-order.c" | sed -n '/^Package$/,/^Package$/ p' | head -n -1 | sort -u > apt.lst
+comparelsts
+
+msgtest 'Check that apt knows all fields dpkg orders in' 'status'
+dpkg_field_ordered_list 'CTRL_FILE_STATUS' > dpkg.lst
+comparelsts
+
+msgtest 'Check that apt knows all fields dpkg orders in' 'DEBIAN/control'
+dpkg_field_ordered_list 'CTRL_PKG_DEB' > dpkg.lst
+comparelsts
+
+msgtest 'Check that apt knows all fields dpkg orders in' 'Sources'
+dpkg_field_ordered_list 'CTRL_INDEX_SRC' > dpkg.lst
+echo 'Package' > apt.tmp
+sed -ne 's#^ "\(.*\)",.*$#\1#p' "${SOURCEDIRECTORY}/apt-pkg/tagfile-order.c" | sed '/^Package$/,/^Package$/ d' >> apt.tmp
+sort -u apt.tmp > apt.lst
+comparelsts
+
+msgtest 'Check that apt knows all fields dpkg orders in' 'dsc'
+dpkg_field_ordered_list 'CTRL_PKG_SRC' > dpkg.lst
+comparelsts
+
+# HACK, but there is no good way to acquire sources in tests and/or to remember to run this regular manually
+if [ "$USER" = 'david' ]; then
+ msgtest 'Check if we have somewhere the sources of' 'dpkg'
+ DPKGSOURCE="$(locate dpkg/lib/dpkg/parse.c | head -n 1 || true)"
+ if [ -z "$DPKGSOURCE" ]; then
+ msgskip 'Not found'
+ else
+ msgpass
+ msgtest 'Check that apt knows about all fields' 'dpkg parses'
+ sed -n 's#^.*FIELD("\(.*\)").*$#\1#p' "${DPKGSOURCE}" | sort -u > dpkg.lst
+ sed -ne 's#^ "\(.*\)",.*$#\1#p' "${SOURCEDIRECTORY}/apt-pkg/tagfile-order.c" | sed -n '/^Package$/,/^Package$/ p' | head -n -1 | sort -u > apt.lst
+ comparelsts
+ fi
+
+ msgtest 'Check if we have somewhere the sources of' 'dak'
+ DAKSOURCE="$(locate dak/setup/core-init.d/080_metadatakeys | head -n 1 || true)"
+ if [ -z "$DAKSOURCE" ]; then
+ msgskip 'Not found'
+ else
+ msgpass
+ msgtest 'Check that apt knows about all fields' 'dak knows'
+ # dak mixes both, so we can only check with the mixed one as well
+ sed -ne "s#^.* VALUES ('\(.*\)', \(.*\)).*\$#\1 \2#p" "${DAKSOURCE}" | cut -d ' ' -f 1 | sort -u > dpkg.lst
+ sed -ne 's#^ "\(.*\)",.*$#\1#p' "${SOURCEDIRECTORY}/apt-pkg/tagfile-order.c" | sort -u > apt.lst
+ comparelsts
+ fi
+fi
diff --git a/test/integration/test-apt-translation-has-no-packages b/test/integration/test-apt-translation-has-no-packages
new file mode 100755
index 000000000..3c07af3b5
--- /dev/null
+++ b/test/integration/test-apt-translation-has-no-packages
@@ -0,0 +1,35 @@
+#!/bin/sh
+#
+# Due to corruption (local or network) a user might end up with a
+# Translation-$lang file on disk that is actually a Packages file. In this
+# case apt used to generate invalid package versions out of the
+# Translation-$lang file (i.e. apt-cache policy foo) would show a version
+# coming out of a Translation file. Downloading this versions fails as
+# there is no acquire method available for the package
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "amd64"
+
+buildsimplenativepackage 'foo' 'all' '1.0'
+setupaptarchive
+
+APTARCHIVE="$(readlink -f ./aptarchive)"
+
+# corrupt the Translation-en file to look like a regular Packages file
+rm rootdir/var/cache/apt/*.bin
+cp "$APTARCHIVE/dists/unstable/main/binary-amd64/Packages" \
+ rootdir/var/lib/apt/lists/*Translation-en
+
+# ensure that there is no Version for the package foo generated out of
+# the corrupted Translation-en file
+testsuccessequal "foo:
+ Installed: (none)
+ Candidate: 1.0
+ Version table:
+ 1.0 500
+ 500 file:$APTARCHIVE unstable/main all Packages" aptcache policy foo
diff --git a/test/integration/test-apt-update-empty-files b/test/integration/test-apt-update-empty-files
new file mode 100755
index 000000000..24e40f942
--- /dev/null
+++ b/test/integration/test-apt-update-empty-files
@@ -0,0 +1,47 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+configcompression '.' 'gz'
+
+insertpackage 'unstable' 'apt' 'amd64' '1'
+# this automatically gives us an empty Sources file
+
+setupaptarchive --no-update
+
+msgmsg 'Test with file'
+rm -rf rootdir/var/lib/apt/lists
+testsuccess apt update -o Debug::pkgAcquire::Worker=1
+cp rootdir/tmp/testsuccess.output apt.output
+testfailure grep '%0a\(Alt\)\?Filename:%20/.*/Sources\(\.gz\)\?%0a' apt.output
+testempty find rootdir/var/lib/apt/lists -name '*_Sources'
+
+msgmsg 'Test with http'
+changetowebserver
+rm -rf rootdir/var/lib/apt/lists
+testsuccess apt update -o Debug::pkgAcquire::Worker=1
+cp rootdir/tmp/testsuccess.output apt.output
+testfailure grep 'http:600.*Sources' apt.output
+testempty find rootdir/var/lib/apt/lists -name '*_Sources'
+
+msgmsg 'Test lists-cleanup on newly empty'
+rm -rf rootdir/var/lib/apt/lists
+insertsource 'unstable' 'apt' 'any' '1'
+compressfile aptarchive/dists/unstable/main/source/Sources
+generatereleasefiles
+signreleasefiles
+testsuccess apt update -o Debug::pkgAcquire::Worker=1
+cp rootdir/tmp/testsuccess.output apt.output
+testsuccess grep 'http:600.*Sources' apt.output
+echo -n > aptarchive/dists/unstable/main/source/Sources
+compressfile aptarchive/dists/unstable/main/source/Sources
+generatereleasefiles 'now + 1hour'
+signreleasefiles
+testsuccess apt update -o Debug::pkgAcquire::Worker=1 -o APT::Get::List-Cleanup=0 -o Debug::Acquire::Transaction=1
+cp rootdir/tmp/testsuccess.output apt.output
+testfailure grep 'http:600.*Sources' apt.output
+testempty find rootdir/var/lib/apt/lists -name '*_Sources'
diff --git a/test/integration/test-apt-update-expected-size b/test/integration/test-apt-update-expected-size
new file mode 100755
index 000000000..710d05d18
--- /dev/null
+++ b/test/integration/test-apt-update-expected-size
@@ -0,0 +1,83 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+configcompression '.' 'gz'
+
+insertpackage 'unstable' 'apt' 'i386' '1.0'
+
+export APT_DONT_SIGN=''
+setupaptarchive --no-update
+cp -a aptarchive/dists aptarchive/dists.good
+
+test_inreleasetoobig() {
+ # make InRelease really big to trigger fallback
+ dd if=/dev/zero of=aptarchive/dists/unstable/InRelease bs=1M count=2 2>/dev/null
+ touch -d '+1hour' aptarchive/dists/unstable/InRelease
+ testsuccess aptget update -o Apt::Get::List-Cleanup=0 -o acquire::MaxReleaseFileSize=$((1*1000*1000)) -o Debug::pkgAcquire::worker=0
+ msgtest 'Check that the max write warning is triggered'
+ cp rootdir/tmp/testsuccess.output update.output
+ testsuccess --nomsg grep -q 'Writing more data than expected' update.output
+ rm -f update.output
+ # ensure the failed InRelease file got renamed
+ testsuccess ls rootdir/var/lib/apt/lists/partial/*InRelease.FAILED
+ testfailure test -e rootdir/var/lib/apt/lists/partial/Old.FAILED
+}
+
+test_packagestoobig() {
+ insertpackage 'unstable' 'foo' 'i386' '1.0'
+ buildaptarchivefromfiles '+1 hour'
+ signreleasefiles
+ # append junk at the end of the Packages.gz/Packages
+ SIZE="$(stat --printf=%s aptarchive/dists/unstable/main/binary-i386/Packages.gz)"
+ find aptarchive/dists -name 'Packages*' | while read pkg; do
+ echo "1234567890" >> "$pkg"
+ touch -d '+1hour' "$pkg"
+ done
+ NEW_SIZE="$(stat --printf=%s aptarchive/dists/unstable/main/binary-i386/Packages.gz)"
+ testfailuremsg "E: Failed to fetch ${1}/dists/unstable/main/binary-i386/Packages.gz Writing more data than expected ($NEW_SIZE > $SIZE)
+E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::Transaction=0
+ testsuccess ls rootdir/var/lib/apt/lists/partial/*Packages*.FAILED
+ testfailure test -e rootdir/var/lib/apt/lists/partial/Old.FAILED
+}
+
+methodtest() {
+ # less complicated test setup this way
+ webserverconfig 'aptwebserver::support::modified-since' 'false' "$1"
+ webserverconfig 'aptwebserver::support::last-modified' 'false' "$1" # curl is clever and sees hits here also
+
+ msgmsg 'Test with' "$1" 'and clean start'
+ rm -rf rootdir/var/lib/apt/lists rootdir/var/lib/apt/lists.good
+ # normal update works fine
+ testsuccess aptget update
+ touch rootdir/var/lib/apt/lists/partial/Old.FAILED
+ mv rootdir/var/lib/apt/lists rootdir/var/lib/apt/lists.good
+
+ # starting fresh works
+ test_inreleasetoobig "$1"
+ rm -rf aptarchive/dists rootdir/var/lib/apt/lists
+ cp -a aptarchive/dists.good aptarchive/dists
+ test_packagestoobig "$1"
+ rm -rf aptarchive/dists rootdir/var/lib/apt/lists
+ cp -a aptarchive/dists.good aptarchive/dists
+
+ msgmsg 'Test with' "$1" 'and existing old data'
+ cp -a rootdir/var/lib/apt/lists.good rootdir/var/lib/apt/lists
+ test_inreleasetoobig "$1"
+ rm -rf aptarchive/dists rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists.good rootdir/var/lib/apt/lists
+ cp -a aptarchive/dists.good aptarchive/dists
+ test_packagestoobig "$1"
+ rm -rf aptarchive/dists
+ cp -a aptarchive/dists.good aptarchive/dists
+}
+
+changetowebserver
+methodtest "http://localhost:${APTHTTPPORT}"
+
+changetohttpswebserver
+methodtest "https://localhost:${APTHTTPSPORT}"
diff --git a/test/integration/test-apt-update-failure-propagation b/test/integration/test-apt-update-failure-propagation
new file mode 100755
index 000000000..1361b1b93
--- /dev/null
+++ b/test/integration/test-apt-update-failure-propagation
@@ -0,0 +1,106 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'foo' 'all' '1' 'stable'
+buildsimplenativepackage 'foo' 'all' '2' 'sid'
+setupaptarchive --no-update
+
+NEWMETHODS="$(readlink -f rootdir)/usr/lib/apt/methods"
+OLDMETHODS="$(readlink -f rootdir/usr/lib/apt/methods)"
+rm "$NEWMETHODS"
+mkdir "$NEWMETHODS"
+backupIFS="$IFS"
+IFS="$(printf "\n\b")"
+for METH in $(find "$OLDMETHODS" -maxdepth 1 ! -type d); do
+ ln -s "$OLDMETHODS/$(basename "$METH")" "$NEWMETHODS"
+done
+IFS="$backupIFS"
+
+changetohttpswebserver
+for FILE in rootdir/etc/apt/sources.list.d/*-sid-* ; do
+ sed -i -e 's#https:#http:#' -e "s#:${APTHTTPSPORT}/#:${APTHTTPPORT}/#" "$FILE"
+done
+
+pretest() {
+ msgmsg "$@"
+ rm -rf rootdir/var/lib/apt/lists
+ testsuccessequal 'N: Unable to locate package foo' aptcache policy foo
+}
+pretest 'initialize test' 'update'
+testsuccess aptget update
+testsuccessequal "foo:
+ Installed: (none)
+ Candidate: 2
+ Version table:
+ 2 500
+ 500 http://localhost:${APTHTTPPORT} sid/main all Packages
+ 1 500
+ 500 https://localhost:${APTHTTPSPORT} stable/main all Packages" aptcache policy foo
+
+pretest 'not found' 'release files'
+mv aptarchive/dists/stable aptarchive/dists/stable.good
+testfailuremsg "E: The repository 'https://localhost:${APTHTTPSPORT} stable Release' does not have a Release file.
+N: Updating from such a repository can't be done securely, and is therefore disabled by default.
+N: See apt-secure(8) manpage for repository creation and user configuration details." apt update
+testfailure aptget update --no-allow-insecure-repositories
+testequalor2 "Hit:1 http://localhost:${APTHTTPPORT} sid InRelease
+Ign:2 https://localhost:${APTHTTPSPORT} stable InRelease
+ 404 Not Found
+Err:3 https://localhost:${APTHTTPSPORT} stable Release
+ 404 Not Found
+Reading package lists...
+E: The repository 'https://localhost:${APTHTTPSPORT} stable Release' does not have a Release file.
+N: Updating from such a repository can't be done securely, and is therefore disabled by default.
+N: See apt-secure(8) manpage for repository creation and user configuration details." "Ign:1 https://localhost:${APTHTTPSPORT} stable InRelease
+ 404 Not Found
+Err:2 https://localhost:${APTHTTPSPORT} stable Release
+ 404 Not Found
+Hit:3 http://localhost:${APTHTTPPORT} sid InRelease
+Reading package lists...
+E: The repository 'https://localhost:${APTHTTPSPORT} stable Release' does not have a Release file.
+N: Updating from such a repository can't be done securely, and is therefore disabled by default.
+N: See apt-secure(8) manpage for repository creation and user configuration details." cat rootdir/tmp/testfailure.output
+
+mv aptarchive/dists/stable.good aptarchive/dists/stable
+posttest() {
+ testsuccessequal "foo:
+ Installed: (none)
+ Candidate: 2
+ Version table:
+ 2 500
+ 500 http://localhost:${APTHTTPPORT} sid/main all Packages" aptcache policy foo
+}
+posttest
+
+pretest 'method disabled' 'https'
+echo 'Dir::Bin::Methods::https "false";' > rootdir/etc/apt/apt.conf.d/99disable-https
+testfailuremsg "E: The method 'https' is explicitly disabled via configuration.
+N: If you meant to use Tor remember to use tor+https instead of https.
+E: Failed to fetch https://localhost:${APTHTTPSPORT}/dists/stable/InRelease
+E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update
+rm -f rootdir/etc/apt/apt.conf.d/99disable-https
+posttest
+
+pretest 'method not installed' 'https'
+rm "${NEWMETHODS}/https"
+testfailuremsg "E: The method driver ${TMPWORKINGDIRECTORY}/rootdir/usr/lib/apt/methods/https could not be found.
+N: Is the package apt-transport-https installed?
+E: Failed to fetch https://localhost:${APTHTTPSPORT}/dists/stable/InRelease
+E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update
+posttest
+
+pretest 'https connection refused' 'doom port'
+for FILE in rootdir/etc/apt/sources.list.d/*-stable-* ; do
+ # lets see how many testservers run also Doom
+ sed -i -e "s#:${APTHTTPSPORT}/#:666/#" "$FILE"
+done
+testwarning aptget update -o Dir::Bin::Methods::https="${OLDMETHODS}/https"
+testequalor2 "W: Failed to fetch https://localhost:666/dists/stable/InRelease Failed to connect to localhost port 666: Connection refused
+W: Some index files failed to download. They have been ignored, or old ones used instead." "W: Failed to fetch https://localhost:666/dists/stable/InRelease couldn't connect to host
+W: Some index files failed to download. They have been ignored, or old ones used instead." tail -n 2 rootdir/tmp/testwarning.output
+posttest
diff --git a/test/integration/test-apt-update-file b/test/integration/test-apt-update-file
new file mode 100755
index 000000000..8da4ec35b
--- /dev/null
+++ b/test/integration/test-apt-update-file
@@ -0,0 +1,79 @@
+#!/bin/sh
+#
+# Ensure that we do not modify file:/// uris (regression test for
+# CVE-2014-0487
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "amd64"
+configcompression 'bz2' 'gz'
+confighashes 'SHA512'
+
+insertpackage 'unstable' 'foo' 'all' '1'
+insertpackage 'unstable' 'bar' 'amd64' '1'
+insertsource 'unstable' 'foo' 'all' '1'
+
+setupaptarchive --no-update
+logcurrentarchivedirectory
+
+# ensure the archive is not writable
+addtrap 'prefix' 'chmod 755 aptarchive/dists/unstable/main/binary-all;'
+if [ "$(id -u)" = '0' ]; then
+ # too deep to notice it, but it also unlikely that files in the same repo have different permissions
+ chmod 500 aptarchive/dists/unstable/main/binary-all
+ testfailure aptget update
+ rm -rf rootdir/var/lib/apt/lists
+ chmod 755 aptarchive/dists/unstable/main/binary-all
+ testsuccess aptget update
+ rm -rf rootdir/var/lib/apt/lists
+ chmod 511 aptarchive/dists/
+ testsuccess aptget update
+ rm -rf rootdir/var/lib/apt/lists
+ chmod 510 aptarchive/dists/
+ testsuccesswithnotice aptget update
+ rm -rf rootdir/var/lib/apt/lists
+ chmod 500 aptarchive/dists/
+ testsuccesswithnotice aptget update
+ chmod 755 aptarchive/dists/
+else
+ testsuccess aptget update
+fi
+mv rootdir/var/lib/apt/lists/_* rootdir/var/lib/apt/lists/partial
+chmod 555 aptarchive/dists/unstable/main/binary-all
+testsuccess aptget update -o Debug::pkgAcquire::Worker=1
+cp -a rootdir/tmp/testsuccess.output rootdir/tmp/update.output
+testsuccess grep '%0aAlt-Filename:%20' rootdir/tmp/update.output
+
+# the release files aren't an IMS-hit, but the indexes are
+redatereleasefiles '+1 hour'
+
+# we don't download the index if it isn't updated
+testsuccess aptget update -o Debug::pkgAcquire::Auth=1
+# file:/ isn't shown in the log, so see if it was downloaded anyhow
+cp -a rootdir/tmp/testsuccess.output rootdir/tmp/update.output
+canary="SHA512:$(bzcat aptarchive/dists/unstable/main/binary-all/Packages.bz2 | sha512sum |cut -f1 -d' ')"
+testfailure grep -- "$canary" rootdir/tmp/update.output
+
+testfoo() {
+ # foo is still available
+ testsuccess aptget install -s foo
+ testsuccess aptcache showsrc foo
+ testsuccess aptget source foo --print-uris
+}
+testfoo
+
+# the release file is new again, the index still isn't, but it is somehow gone now from disk
+redatereleasefiles '+2 hour'
+find rootdir/var/lib/apt/lists -name '*_Packages*' -delete
+
+testsuccess aptget update -o Debug::pkgAcquire::Auth=1
+# file:/ isn't shown in the log, so see if it was downloaded anyhow
+cp -a rootdir/tmp/testsuccess.output rootdir/tmp/update.output
+canary="SHA512:$(bzcat aptarchive/dists/unstable/main/binary-all/Packages.bz2 | sha512sum |cut -f1 -d' ')"
+testsuccess grep -- "$canary" rootdir/tmp/update.output
+
+testfoo
diff --git a/test/integration/test-apt-update-filesize-mismatch b/test/integration/test-apt-update-filesize-mismatch
new file mode 100755
index 000000000..9467e77b6
--- /dev/null
+++ b/test/integration/test-apt-update-filesize-mismatch
@@ -0,0 +1,50 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+configcompression 'gz'
+
+insertpackage 'testing' 'foo' 'all' '1'
+insertpackage 'testing' 'foo2' 'all' '1'
+insertsource 'testing' 'foo' 'all' '1'
+insertsource 'testing' 'foo2' 'all' '1'
+
+setupaptarchive --no-update
+changetowebserver
+
+find aptarchive \( -name 'Packages' -o -name 'Sources' -o -name 'Translation-en' \) -delete
+for release in $(find aptarchive -name 'Release'); do
+ cp "$release" "${release}.backup"
+done
+
+testsuccess aptget update
+testsuccess aptcache show foo
+testsuccess aptget install foo -s
+
+for get in $(sed -n 's#^GET /\([^ ]\+\.gz\) HTTP.\+$#\1#p' aptarchive/webserver.log.client*.log); do
+ for ext in '' '.gz'; do
+ COMPRESSFILE="$get"
+ get="${get}${ext}"
+ FILE="$(basename "$get" '.gz')"
+ msgmsg 'Test filesize mismatch with file' "$FILE"
+ rm -rf rootdir/var/lib/apt/lists
+
+ for release in $(find aptarchive -name 'Release'); do
+ SIZE="$(awk "/$FILE\$/ { print \$2; exit }" "${release}.backup")"
+ sed "s# $SIZE # $(($SIZE + 111)) #" "${release}.backup" > "$release"
+ done
+ signreleasefiles
+
+ testfailure aptget update -o Debug::pkgAcquire::Worker=1
+ cp rootdir/tmp/testfailure.output rootdir/tmp/update.output
+ testsuccess grep -E "$(basename "$COMPRESSFILE" '.gz').*Hash Sum mismatch" rootdir/tmp/update.output
+ testfailure aptcache show foo
+ testfailure aptget install foo -s
+
+ testfailure aptcache show bar
+ testfailure aptget install bar -s
+ done
+done
diff --git a/test/integration/test-apt-update-hashsum-mismatch b/test/integration/test-apt-update-hashsum-mismatch
new file mode 100755
index 000000000..4d4c33286
--- /dev/null
+++ b/test/integration/test-apt-update-hashsum-mismatch
@@ -0,0 +1,44 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+configcompression 'gz'
+
+insertpackage 'testing' 'foo' 'all' '1'
+insertpackage 'testing' 'foo2' 'all' '1'
+insertsource 'testing' 'foo' 'all' '1'
+insertsource 'testing' 'foo2' 'all' '1'
+
+setupaptarchive --no-update
+changetowebserver
+
+echo 'Package: bar
+Maintainer: Doctor Evil <evil@example.com>
+Description: come to the dark side
+' > aptarchive/DoctorEvil
+compressfile aptarchive/DoctorEvil
+
+find aptarchive \( -name 'Packages' -o -name 'Sources' -o -name 'Translation-en' \) -delete
+
+testsuccess aptget update
+testsuccess aptcache show foo
+testsuccess aptget install foo -s
+
+for get in $(sed -n 's#^GET /\([^ ]\+\.gz\) HTTP.\+$#\1#p' aptarchive/webserver.log.client*.log); do
+ msgmsg 'Test hashsum mismatch with file' "$get"
+ rm -rf rootdir/var/lib/apt/lists
+ webserverconfig 'aptwebserver::overwrite' ''
+ webserverconfig "aptwebserver::overwrite::$(printf '%s' "${get}" | sed 's#/#%2F#g' )::filename" '%2FDoctorEvil.gz'
+
+ testfailure aptget update
+ cp rootdir/tmp/testfailure.output rootdir/tmp/update.output
+ testsuccess grep -E "$(basename "$get" '.gz').*Hash Sum mismatch" rootdir/tmp/update.output
+ testfailure aptcache show foo
+ testfailure aptget install foo -s
+
+ testfailure aptcache show bar
+ testfailure aptget install bar -s
+done
diff --git a/test/integration/test-apt-update-hooks b/test/integration/test-apt-update-hooks
new file mode 100755
index 000000000..d81ef297e
--- /dev/null
+++ b/test/integration/test-apt-update-hooks
@@ -0,0 +1,49 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+confighashes 'SHA512'
+
+insertpackage 'unstable' 'foo' 'i386' '1.0'
+insertpackage 'testing' 'foo' 'i386' '1.0'
+
+setupaptarchive --no-update
+APTARCHIVE="$(readlink -f ./aptarchive)"
+
+signreleasefiles 'Joe Sixpack'
+
+echo 'APT::Update::Post-Invoke-Success { "echo SUCCESS"; };' >> rootdir/etc/apt/apt.conf.d/display-success.conf
+echo 'APT::Update::Post-Invoke { "echo RUN"; };' >> rootdir/etc/apt/apt.conf.d/display-success.conf
+
+
+msgmsg "All sources OK => run Post-Invoke-Success and Post-Invoke"
+testsuccess aptget update
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testsuccess grep "RUN" aptupdate.output
+testsuccess grep "SUCCESS" aptupdate.output
+
+msgmsg "Some sources broken => run Post-Invoke-Success and Post-Invoke"
+sed -i -e '/^ / d' -e '/^SHA512:/ d' "$APTARCHIVE/dists/unstable/Release"
+testsuccess rm "$(aptget indextargets 'Created-By: Packages' 'Suite: testing' --format '$(FILENAME)')"
+signreleasefiles
+listcurrentlistsdirectory > lists.before
+testfailure apt update
+cp rootdir/tmp/testfailure.output aptupdate.output
+listcurrentlistsdirectory > lists.after
+testfailure cmp lists.before lists.after
+testsuccess grep "RUN" aptupdate.output
+testsuccess grep "SUCCESS" aptupdate.output
+
+msgmsg "All sources broken => run Post-Invoke"
+sed -i -e '/^ / d' -e '/^SHA512:/ d' "$APTARCHIVE/dists/testing/Release"
+signreleasefiles
+mv lists.after lists.before
+testfailure apt update
+cp rootdir/tmp/testfailure.output aptupdate.output
+testfileequal lists.before "$(listcurrentlistsdirectory)"
+testsuccess grep "RUN" aptupdate.output
+testfailure grep "SUCCESS" aptupdate.output
diff --git a/test/integration/test-apt-update-ims b/test/integration/test-apt-update-ims
new file mode 100755
index 000000000..1894c3adf
--- /dev/null
+++ b/test/integration/test-apt-update-ims
@@ -0,0 +1,192 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'unrelated' 'all' '0.5~squeeze1'
+insertpackage 'unstable' 'unrelated2' 'amd64' '0.5~squeeze1'
+insertsource 'unstable' 'unrelated' 'all' '0.5~squeeze1'
+
+export APT_DONT_SIGN=""
+setupaptarchive --no-update
+logcurrentarchivedirectory
+changetowebserver
+
+runtest() {
+ local APTOPT=""
+ if [ -n "$1" ]; then
+ APTOPT='--allow-insecure-repositories'
+ else
+ APTOPT='--no-allow-insecure-repositories'
+ fi
+
+ rm -rf rootdir/var/lib/apt/lists/
+
+ local TEST="test${1:-success}"
+ $TEST aptget update $APTOPT -o Debug::pkgAcquire::Worker=1
+ if [ "$1" = 'failure' ]; then
+ # accept the outdated Release file so we can check Hit behaviour
+ "test${2:-success}" aptget update -o Acquire::Min-ValidTime=9999999 $APTOPT
+ fi
+ listcurrentlistsdirectory > listsdir.lst
+ testsuccess grep '_Packages\(\.[0-9a-z]\+\)\?$' listsdir.lst
+ testsuccess grep '_Sources\(\.[0-9a-z]\+\)\?$' listsdir.lst
+ testsuccess grep '_Translation-en\(\.[0-9a-z]\+\)\?$' listsdir.lst
+
+ # ensure no leftovers in partial
+ testfailure ls 'rootdir/var/lib/apt/lists/partial/*'
+
+ # check that I-M-S header is kept in redirections
+ echo "$EXPECT" | sed -e 's#(invalid since [^)]\+)#(invalid since)#' > expected.output
+ $TEST aptget update -o Debug::pkgAcquire::Worker=0 -o Debug::Acquire::http=0 $APTOPT
+ sed -i -e 's#(invalid since [^)]\+)#(invalid since)#' rootdir/tmp/${TEST}.output
+ testequal "$(cat expected.output)" cat rootdir/tmp/${TEST}.output
+ testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+
+ # ensure that we still do a hash check for other files on ims hit of Release
+ if grep -q '^Hit:[0-9]\+ .* InRelease$' expected.output || ! grep -q '^Ign:[0-9]\+ .* Release\(\.gpg\)\?$' expected.output; then
+ $TEST aptget update -o Debug::Acquire::gpgv=1 $APTOPT
+ cp rootdir/tmp/${TEST}.output goodsign.output
+ testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+ testsuccess grep '^Got GOODSIG ' goodsign.output
+ fi
+
+ # ensure no leftovers in partial
+ testfailure ls 'rootdir/var/lib/apt/lists/partial/*'
+}
+
+msgmsg 'InRelease'
+EXPECT="Hit:1 http://localhost:${APTHTTPPORT} unstable InRelease
+Reading package lists..."
+echo 'Acquire::GzipIndexes "0";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest
+echo 'Acquire::GzipIndexes "1";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest
+
+msgmsg 'Release/Release.gpg'
+EXPECT="Ign:1 http://localhost:${APTHTTPPORT} unstable InRelease
+ 404 Not Found
+Hit:2 http://localhost:${APTHTTPPORT} unstable Release
+Reading package lists..."
+find aptarchive -name 'InRelease' -delete
+logcurrentarchivedirectory
+echo 'Acquire::GzipIndexes "0";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest
+echo 'Acquire::GzipIndexes "1";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest
+
+msgmsg 'Release only'
+EXPECT="Ign:1 http://localhost:${APTHTTPPORT} unstable InRelease
+ 404 Not Found
+Hit:2 http://localhost:${APTHTTPPORT} unstable Release
+Ign:3 http://localhost:${APTHTTPPORT} unstable Release.gpg
+ 404 Not Found
+Reading package lists...
+W: The repository 'http://localhost:${APTHTTPPORT} unstable Release' is not signed.
+N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
+N: See apt-secure(8) manpage for repository creation and user configuration details."
+find aptarchive -name 'Release.gpg' -delete
+logcurrentarchivedirectory
+echo 'Acquire::GzipIndexes "0";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'warning'
+echo 'Acquire::GzipIndexes "1";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'warning'
+
+
+# make the release file old
+find aptarchive -name '*Release' -exec sed -i \
+ -e "s#^Date: .*\$#Date: $(date -ud '-2 weeks' '+%a, %d %b %Y %H:%M:%S %Z')#" \
+ -e '/^Valid-Until: / d' -e "/^Date: / a\
+Valid-Until: $(date -ud '-1 weeks' '+%a, %d %b %Y %H:%M:%S %Z')" '{}' \;
+signreleasefiles
+logcurrentarchivedirectory
+
+msgmsg 'expired InRelease'
+EXPECT="Hit:1 http://localhost:${APTHTTPPORT} unstable InRelease
+Reading package lists...
+E: Release file for http://localhost:${APTHTTPPORT}/dists/unstable/InRelease is expired (invalid since). Updates for this repository will not be applied."
+echo 'Acquire::GzipIndexes "0";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'failure'
+echo 'Acquire::GzipIndexes "1";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'failure'
+
+msgmsg 'expired Release/Release.gpg'
+EXPECT="Ign:1 http://localhost:${APTHTTPPORT} unstable InRelease
+ 404 Not Found
+Hit:2 http://localhost:${APTHTTPPORT} unstable Release
+Reading package lists...
+E: Release file for http://localhost:${APTHTTPPORT}/dists/unstable/Release is expired (invalid since). Updates for this repository will not be applied."
+find aptarchive -name 'InRelease' -delete
+logcurrentarchivedirectory
+echo 'Acquire::GzipIndexes "0";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'failure'
+echo 'Acquire::GzipIndexes "1";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'failure'
+
+msgmsg 'expired Release only'
+EXPECT="Ign:1 http://localhost:${APTHTTPPORT} unstable InRelease
+ 404 Not Found
+Hit:2 http://localhost:${APTHTTPPORT} unstable Release
+Ign:3 http://localhost:${APTHTTPPORT} unstable Release.gpg
+ 404 Not Found
+Reading package lists...
+W: The repository 'http://localhost:${APTHTTPPORT} unstable Release' is not signed.
+N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
+N: See apt-secure(8) manpage for repository creation and user configuration details.
+E: Release file for http://localhost:${APTHTTPPORT}/dists/unstable/Release is expired (invalid since). Updates for this repository will not be applied."
+find aptarchive -name 'Release.gpg' -delete
+logcurrentarchivedirectory
+echo 'Acquire::GzipIndexes "0";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'failure' 'warning'
+echo 'Acquire::GzipIndexes "1";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'failure' 'warning'
+
+
+msgmsg 'no Release at all'
+EXPECT="Ign:1 http://localhost:${APTHTTPPORT} unstable InRelease
+ 404 Not Found
+Ign:2 http://localhost:${APTHTTPPORT} unstable Release
+ 404 Not Found
+Ign:3 http://localhost:${APTHTTPPORT} unstable/main Sources
+ 404 Not Found
+Ign:4 http://localhost:${APTHTTPPORT} unstable/main amd64 Packages
+ 404 Not Found
+Ign:5 http://localhost:${APTHTTPPORT} unstable/main all Packages
+ 404 Not Found
+Ign:6 http://localhost:${APTHTTPPORT} unstable/main Translation-en
+ 404 Not Found
+Ign:3 http://localhost:${APTHTTPPORT} unstable/main Sources
+ 404 Not Found
+Ign:4 http://localhost:${APTHTTPPORT} unstable/main amd64 Packages
+ 404 Not Found
+Ign:5 http://localhost:${APTHTTPPORT} unstable/main all Packages
+ 404 Not Found
+Ign:6 http://localhost:${APTHTTPPORT} unstable/main Translation-en
+ 404 Not Found
+Ign:3 http://localhost:${APTHTTPPORT} unstable/main Sources
+ 404 Not Found
+Ign:4 http://localhost:${APTHTTPPORT} unstable/main amd64 Packages
+ 404 Not Found
+Ign:5 http://localhost:${APTHTTPPORT} unstable/main all Packages
+ 404 Not Found
+Ign:6 http://localhost:${APTHTTPPORT} unstable/main Translation-en
+ 404 Not Found
+Hit:3 http://localhost:${APTHTTPPORT} unstable/main Sources
+Hit:4 http://localhost:${APTHTTPPORT} unstable/main amd64 Packages
+Hit:5 http://localhost:${APTHTTPPORT} unstable/main all Packages
+Hit:6 http://localhost:${APTHTTPPORT} unstable/main Translation-en
+Reading package lists...
+W: The repository 'http://localhost:${APTHTTPPORT} unstable Release' does not have a Release file.
+N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
+N: See apt-secure(8) manpage for repository creation and user configuration details."
+find aptarchive -name '*Release*' -delete
+logcurrentarchivedirectory
+echo 'Acquire::GzipIndexes "0";
+Acquire::PDiffs "0";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'warning'
+echo 'Acquire::GzipIndexes "1";
+Acquire::PDiffs "0";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'warning'
diff --git a/test/integration/test-apt-update-nofallback b/test/integration/test-apt-update-nofallback
new file mode 100755
index 000000000..47adff33d
--- /dev/null
+++ b/test/integration/test-apt-update-nofallback
@@ -0,0 +1,272 @@
+#!/bin/sh
+#
+# ensure we never fallback from a signed to a unsigned repo
+#
+# hash checks are done in
+#
+set -e
+
+simulate_mitm_and_inject_evil_package()
+{
+ redatereleasefiles '+1 hour'
+ rm -f "$APTARCHIVE/dists/unstable/InRelease" "$APTARCHIVE/dists/unstable/Release.gpg"
+ inject_evil_package
+}
+
+inject_evil_package()
+{
+ cat > "$APTARCHIVE/dists/unstable/main/binary-i386/Packages" <<EOF
+Package: evil
+Installed-Size: 29
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Version: 1.0
+Filename: pool/evil_1.0_all.deb
+Size: 1270
+Description: an autogenerated evil package
+EOF
+ # avoid ims hit
+ touch -d '+1hour' aptarchive/dists/unstable/main/binary-i386/Packages
+ compressfile aptarchive/dists/unstable/main/binary-i386/Packages
+}
+
+assert_update_is_refused_and_last_good_state_used()
+{
+ testfailuremsg "E: The repository 'file:${APTARCHIVE} unstable Release' is no longer signed.
+N: Updating from such a repository can't be done securely, and is therefore disabled by default.
+N: See apt-secure(8) manpage for repository creation and user configuration details." aptget update
+
+ assert_repo_is_intact
+}
+
+assert_repo_is_intact()
+{
+ testsuccessequal "dpkg/now 1.16.2+fake all [installed,local]
+foo/unstable 2.0 all" apt list -qq
+ testsuccess aptget install -y -s foo
+ testfailure aptget install -y evil
+ testsuccess aptget source foo --print-uris
+
+ LISTDIR=rootdir/var/lib/apt/lists
+ testempty find "$LISTDIR" -name 'InRelease' -o -name 'Release.gpg'
+}
+
+setupaptarchive_with_lists_clean()
+{
+ setupaptarchive --no-update
+ rm -rf rootdir/var/lib/apt/lists
+}
+
+test_from_inrelease_to_unsigned()
+{
+ export APT_DONT_SIGN='Release.gpg'
+ setupaptarchive_with_lists_clean
+ testsuccess aptget update
+ listcurrentlistsdirectory > lists.before
+
+ simulate_mitm_and_inject_evil_package
+ assert_update_is_refused_and_last_good_state_used
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+}
+
+test_from_release_gpg_to_unsigned()
+{
+ export APT_DONT_SIGN='InRelease'
+ setupaptarchive_with_lists_clean
+ testsuccess aptget update
+ listcurrentlistsdirectory > lists.before
+
+ simulate_mitm_and_inject_evil_package
+ assert_update_is_refused_and_last_good_state_used
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+}
+
+test_from_inrelease_to_unsigned_with_override()
+{
+ export APT_DONT_SIGN='Release.gpg'
+ # setup archive with InRelease file
+ setupaptarchive_with_lists_clean
+ testsuccess aptget update
+
+ # simulate moving to a unsigned but otherwise valid repo
+ simulate_mitm_and_inject_evil_package
+ generatereleasefiles '+2 hours'
+ find "$APTARCHIVE" -name '*Packages*' -exec touch -d '+2 hours' {} \;
+
+ # and ensure we can update to it (with enough force)
+ testfailure apt update
+ testfailure aptget update
+ testfailure aptget update --allow-insecure-repositories
+ testfailure aptget update --no-allow-insecure-repositories
+ sed -i 's#^deb\(-src\)\? #deb\1 [allow-downgrade-to-insecure=yes] #' rootdir/etc/apt/sources.list.d/*
+ testfailure aptget update --no-allow-insecure-repositories
+ testfailure apt update
+ testwarning apt update --allow-insecure-repositories \
+ -o Debug::pkgAcquire::Worker=1 -o Debug::pkgAcquire::Auth=1
+ sed -i 's#^deb\(-src\)\? \[allow-downgrade-to-insecure=yes\] #deb\1 #' rootdir/etc/apt/sources.list.d/*
+ # but that the individual packages are still considered untrusted
+ testfailureequal "WARNING: The following packages cannot be authenticated!
+ evil
+E: There were unauthenticated packages and -y was used without --allow-unauthenticated" aptget install -qq -y evil
+}
+
+test_from_inrelease_to_norelease_with_override()
+{
+ # setup archive with InRelease file
+ setupaptarchive_with_lists_clean
+ testsuccess aptget update
+
+ # simulate moving to a unsigned but otherwise valid repo
+ simulate_mitm_and_inject_evil_package
+ find "$APTARCHIVE" -name '*Release*' -delete
+ find "$APTARCHIVE" -name '*Packages*' -exec touch -d '+2 hours' {} \;
+
+ # and ensure we can update to it (with enough force)
+ testfailure aptget update
+ testfailure aptget update --allow-insecure-repositories
+ testwarning aptget update --allow-insecure-repositories \
+ -o Acquire::AllowDowngradeToInsecureRepositories=1 -o Debug::pkgAcquire::Worker=1 -o Debug::pkgAcquire::Auth=1
+ # but that the individual packages are still considered untrusted
+ testfailureequal "WARNING: The following packages cannot be authenticated!
+ evil
+E: There were unauthenticated packages and -y was used without --allow-unauthenticated" aptget install -qq -y evil
+}
+
+test_cve_2012_0214()
+{
+ # see https://bugs.launchpad.net/ubuntu/+source/apt/+bug/947108
+ #
+ # it was possible to MITM the download so that InRelease/Release.gpg
+ # are not delivered (404) and a altered Release file was send
+ #
+ # apt left the old InRelease file in /var/lib/apt/lists and downloaded
+ # the unauthenticated Release file too giving the false impression that
+ # Release was authenticated
+ #
+ # Note that this is pretty much impossible nowadays because:
+ # a) InRelease is left as is, not split to InRelease/Release as it was
+ # in the old days
+ # b) we refuse to go from signed->unsigned
+ #
+ # Still worth having a regression test the simulates the condition
+
+ export APT_DONT_SIGN='Release.gpg'
+ setupaptarchive_with_lists_clean
+ testsuccess aptget update
+ listcurrentlistsdirectory > lists.before
+
+ # do what CVE-2012-0214 did
+ rm -f "$APTARCHIVE/dists/unstable/InRelease" "$APTARCHIVE/dists/unstable/Release.gpg"
+ inject_evil_package
+ # build valid Release file
+ aptftparchive -qq release ./aptarchive > aptarchive/dists/unstable/Release
+
+ assert_update_is_refused_and_last_good_state_used
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+
+ # ensure there is no _Release file downloaded
+ testfailure ls rootdir/var/lib/apt/lists/*_Release
+}
+
+test_subvert_inrelease()
+{
+ export APT_DONT_SIGN='Release.gpg'
+ setupaptarchive_with_lists_clean
+ testsuccess aptget update
+ listcurrentlistsdirectory > lists.before
+
+ # replace InRelease with something else
+ mv "$APTARCHIVE/dists/unstable/Release" "$APTARCHIVE/dists/unstable/InRelease"
+
+ testfailuremsg "E: Failed to fetch file:${APTARCHIVE}/dists/unstable/InRelease Clearsigned file isn't valid, got 'NOSPLIT' (does the network require authentication?)
+E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update
+
+ # ensure we keep the repo
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ assert_repo_is_intact
+}
+
+test_inrelease_to_invalid_inrelease()
+{
+ export APT_DONT_SIGN='Release.gpg'
+ setupaptarchive_with_lists_clean
+ testsuccess aptget update
+ listcurrentlistsdirectory > lists.before
+
+ # now remove InRelease and subvert Release do no longer verify
+ sed -i 's/^Codename:.*/Codename: evil!/' "$APTARCHIVE/dists/unstable/InRelease"
+ inject_evil_package
+
+ testwarningequal "W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: file:${APTARCHIVE} unstable InRelease: The following signatures were invalid: BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+W: Failed to fetch file:${APTARCHIVE}/dists/unstable/InRelease The following signatures were invalid: BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
+
+ # ensure we keep the repo
+ testfailure grep 'evil' rootdir/var/lib/apt/lists/*InRelease
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ assert_repo_is_intact
+}
+
+test_release_gpg_to_invalid_release_release_gpg()
+{
+ export APT_DONT_SIGN='InRelease'
+ setupaptarchive_with_lists_clean
+ testsuccess aptget update
+ listcurrentlistsdirectory > lists.before
+
+ # now subvert Release do no longer verify
+ echo "Some evil data" >> "$APTARCHIVE/dists/unstable/Release"
+ inject_evil_package
+
+ testwarningequal "W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: file:${APTARCHIVE} unstable Release: The following signatures were invalid: BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+W: Failed to fetch file:${APTARCHIVE}/dists/unstable/Release.gpg The following signatures were invalid: BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
+
+ testfailure grep 'evil' rootdir/var/lib/apt/lists/*Release
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ assert_repo_is_intact
+}
+
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+# a "normal" package with source and binary
+buildsimplenativepackage 'foo' 'all' '2.0'
+
+# setup the archive and ensure we have a single package that installs fine
+setupaptarchive
+APTARCHIVE="$(readlink -f ./aptarchive)"
+assert_repo_is_intact
+
+# test the various cases where a repo may go from signed->unsigned
+msgmsg "test_from_inrelease_to_unsigned"
+test_from_inrelease_to_unsigned
+
+msgmsg "test_from_release_gpg_to_unsigned"
+test_from_release_gpg_to_unsigned
+
+# ensure we do not regress on CVE-2012-0214
+msgmsg "test_cve_2012_0214"
+test_cve_2012_0214
+
+# ensure InRelease can not be subverted
+msgmsg "test_subvert_inrelease"
+test_subvert_inrelease
+
+# ensure we revert to last good state if InRelease does not verify
+msgmsg "test_inrelease_to_invalid_inrelease"
+test_inrelease_to_invalid_inrelease
+
+# ensure we revert to last good state if Release/Release.gpg does not verify
+msgmsg "test_release_gpg_to_invalid_release_release_gpg"
+test_release_gpg_to_invalid_release_release_gpg
+
+# ensure we can override the downgrade error
+msgmsg "test_from_inrelease_to_unsigned_with_override"
+test_from_inrelease_to_unsigned_with_override
+msgmsg "test_from_inrelease_to_norelease_with_override"
+test_from_inrelease_to_norelease_with_override
diff --git a/test/integration/test-apt-update-not-modified b/test/integration/test-apt-update-not-modified
new file mode 100755
index 000000000..cb42e8954
--- /dev/null
+++ b/test/integration/test-apt-update-not-modified
@@ -0,0 +1,195 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64' 'i386'
+confighashes 'SHA256'
+
+insertpackage 'unstable' 'apt' 'amd64,i386' '1.0'
+
+export APT_DONT_SIGN=''
+setupaptarchive --no-update
+
+methodtest() {
+ msgmsg 'Test InRelease with' "$1"
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a aptarchive/dists aptarchive/dists.good
+ # get our cache populated
+ testsuccess aptget update
+ listcurrentlistsdirectory > listsdir.lst
+
+ # hit again with a good cache
+ testsuccessequal "Hit:1 $1 unstable InRelease
+Reading package lists..." aptget update
+ testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+
+ # drop an architecture, which means the file should be gone now
+ configarchitecture 'i386'
+ sed '/_binary-amd64_Packages/ d' listsdir.lst > listsdir-without-amd64.lst
+ testsuccessequal "Hit:1 $1 unstable InRelease
+Reading package lists..." aptget update
+ testfileequal 'listsdir-without-amd64.lst' "$(listcurrentlistsdirectory)"
+
+ # readd arch so its downloaded again…
+ configarchitecture 'amd64' 'i386'
+ # … but oh noes, hashsum mismatch!
+ SIZE=$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
+ mv aptarchive/dists/unstable/main/binary-amd64/Packages.gz aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig
+ cat > aptarchive/dists/unstable/main/binary-amd64/Packages <<EOF
+Package: thisisbad
+Architecture: amd64
+Version: 1
+EOF
+ compressfile aptarchive/dists/unstable/main/binary-amd64/Packages
+ testfailureequal "Hit:1 $1 unstable InRelease
+Get:2 $1 unstable/main amd64 Packages [$SIZE B]
+Err:2 $1 unstable/main amd64 Packages
+ Hash Sum mismatch
+ Hashes of expected file:
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig') [weak]
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig' | cut -d' ' -f 1)
+ Hashes of received file:
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz' | cut -d' ' -f 1)
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') [weak]
+ Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
+ Release file created at: $(releasefiledate 'aptarchive/dists/unstable/InRelease')
+Reading package lists...
+E: Failed to fetch $1/dists/unstable/main/binary-amd64/Packages.gz Hash Sum mismatch
+ Hashes of expected file:
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig') [weak]
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig' | cut -d' ' -f 1)
+ Hashes of received file:
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz' | cut -d' ' -f 1)
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') [weak]
+ Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
+ Release file created at: $(releasefiledate 'aptarchive/dists/unstable/InRelease')
+E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update
+ testfileequal 'listsdir-without-amd64.lst' "$(listcurrentlistsdirectory)"
+ rm -rf aptarchive/dists
+ cp -a aptarchive/dists.good aptarchive/dists
+
+ # … now everything is fine again
+ testsuccessequal "Hit:1 $1 unstable InRelease
+Get:2 $1 unstable/main amd64 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') B]
+Reading package lists..." aptget update
+ testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+
+ webserverconfig 'aptwebserver::support::modified-since' 'false'
+ webserverconfig 'aptwebserver::support::last-modified' 'false'
+ testsuccessequal "Get:1 $1 unstable InRelease [$(stat -c '%s' 'aptarchive/dists/unstable/InRelease') B]
+Reading package lists..." aptget update
+ webserverconfig 'aptwebserver::support::modified-since' 'true'
+ webserverconfig 'aptwebserver::support::last-modified' 'true'
+
+ msgmsg 'Test Release.gpg with' "$1"
+ rm -rf rootdir/var/lib/apt/lists
+ find aptarchive/dists -name 'InRelease' -delete
+ # get our cache populated
+ testsuccess aptget update
+ listcurrentlistsdirectory > listsdir.lst
+
+ # hit again with a good cache
+ testsuccessequal "Ign:1 $1 unstable InRelease
+ 404 Not Found
+Hit:2 $1 unstable Release
+Reading package lists..." aptget update
+ testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+
+ # drop an architecture, which means the file should be gone now
+ configarchitecture 'i386'
+ sed '/_binary-amd64_Packages/ d' listsdir.lst > listsdir-without-amd64.lst
+ testsuccessequal "Ign:1 $1 unstable InRelease
+ 404 Not Found
+Hit:2 $1 unstable Release
+Reading package lists..." aptget update
+ testfileequal 'listsdir-without-amd64.lst' "$(listcurrentlistsdirectory)"
+
+ # readd arch so its downloaded again…
+ configarchitecture 'amd64' 'i386'
+ # … but oh noes, hashsum mismatch!
+ SIZE=$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
+ mv aptarchive/dists/unstable/main/binary-amd64/Packages.gz aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig
+ cat > aptarchive/dists/unstable/main/binary-amd64/Packages <<EOF
+Package: thisisbad
+Architecture: amd64
+Version: 1
+EOF
+ compressfile aptarchive/dists/unstable/main/binary-amd64/Packages
+ testfailureequal "Ign:1 $1 unstable InRelease
+ 404 Not Found
+Hit:2 $1 unstable Release
+Get:4 $1 unstable/main amd64 Packages [$SIZE B]
+Err:4 $1 unstable/main amd64 Packages
+ Hash Sum mismatch
+ Hashes of expected file:
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig') [weak]
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig' | cut -d' ' -f 1)
+ Hashes of received file:
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz' | cut -d' ' -f 1)
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') [weak]
+ Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
+ Release file created at: $(releasefiledate 'aptarchive/dists/unstable/Release')
+Reading package lists...
+E: Failed to fetch $1/dists/unstable/main/binary-amd64/Packages.gz Hash Sum mismatch
+ Hashes of expected file:
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig') [weak]
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig' | cut -d' ' -f 1)
+ Hashes of received file:
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz' | cut -d' ' -f 1)
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') [weak]
+ Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
+ Release file created at: $(releasefiledate 'aptarchive/dists/unstable/Release')
+E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update
+ testfileequal 'listsdir-without-amd64.lst' "$(listcurrentlistsdirectory)"
+ rm -rf aptarchive/dists
+ cp -a aptarchive/dists.good aptarchive/dists
+ find aptarchive/dists -name 'InRelease' -delete
+
+ # … now everything is fine again
+ testsuccessequal "Ign:1 $1 unstable InRelease
+ 404 Not Found
+Hit:2 $1 unstable Release
+Get:4 $1 unstable/main amd64 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') B]
+Reading package lists..." aptget update
+ testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+
+ webserverconfig 'aptwebserver::support::modified-since' 'false'
+ webserverconfig 'aptwebserver::support::last-modified' 'false'
+ testsuccessequal "Ign:1 $1 unstable InRelease
+ 404 Not Found
+Get:2 $1 unstable Release [$(stat -c '%s' 'aptarchive/dists/unstable/Release') B]
+Reading package lists..." aptget update
+ webserverconfig 'aptwebserver::support::modified-since' 'true'
+ webserverconfig 'aptwebserver::support::last-modified' 'true'
+
+ rm -rf aptarchive/dists
+ cp -a aptarchive/dists.good aptarchive/dists
+
+ # new release file, but the indexes are the same
+ redatereleasefiles '+2 hours'
+
+ rm -rf rootdir/var/lib/apt/lists.good
+ cp -a rootdir/var/lib/apt/lists rootdir/var/lib/apt/lists.good
+ testsuccessequal "Get:1 $1 unstable InRelease [$(stat -c '%s' 'aptarchive/dists/unstable/InRelease') B]
+Reading package lists..." aptget update
+
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists.good rootdir/var/lib/apt/lists
+ find rootdir/var/lib/apt/lists -name '*_Packages*' -delete
+ testsuccessequal "Get:1 $1 unstable InRelease [$(stat -c '%s' 'aptarchive/dists/unstable/InRelease') B]
+Get:2 $1 unstable/main amd64 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') B]
+Get:3 $1 unstable/main i386 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-i386/Packages.gz') B]
+Reading package lists..." aptget update
+
+ rm -rf aptarchive/dists
+ cp -a aptarchive/dists.good aptarchive/dists
+}
+
+changetowebserver
+methodtest "http://localhost:${APTHTTPPORT}"
+
+changetohttpswebserver
+methodtest "https://localhost:${APTHTTPSPORT}"
diff --git a/test/integration/test-apt-update-reporting b/test/integration/test-apt-update-reporting
new file mode 100755
index 000000000..cecf23ab2
--- /dev/null
+++ b/test/integration/test-apt-update-reporting
@@ -0,0 +1,35 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+for i in $(seq 100); do
+ insertpackage 'unstable' "foo-$i" 'all' '1.0'
+ insertsource 'unstable' "foo-$i" 'all' '1.0'
+done
+
+setupaptarchive --no-update
+changetowebserver
+
+aptget update -o Debug::Acquire::Progress=1 2>progress.log >ignore.out
+
+has_progress() {
+ prev_percent=0.0
+ while read line; do
+ percent="$(echo "$line"|cut -b2-6)"
+ # need to cut the decimal point and digits because sh can not do
+ # float compare
+ if [ "${percent%%.*}" -lt "${prev_percent%%.*}" ]; then
+ cat progress.log
+ return 1
+ fi
+ prev_percent="$percent"
+ done < progress.log
+ return 0
+}
+
+msgtest "Testing that progress does not go backward"
+testsuccess --nomsg has_progress
diff --git a/test/integration/test-apt-update-rollback b/test/integration/test-apt-update-rollback
new file mode 100755
index 000000000..ea431c816
--- /dev/null
+++ b/test/integration/test-apt-update-rollback
@@ -0,0 +1,219 @@
+#!/bin/sh
+#
+# test that apt-get update is transactional
+#
+set -e
+
+avoid_ims_hit() {
+ touch -d '+1hour' aptarchive/dists/unstable/main/binary-i386/Packages*
+ touch -d '+1hour' aptarchive/dists/unstable/main/source/Sources*
+ touch -d '+1hour' aptarchive/dists/unstable/*Release*
+
+ touch -d '-1hour' rootdir/var/lib/apt/lists/*
+}
+
+create_fresh_archive()
+{
+ rm -rf aptarchive/*
+ rm -f rootdir/var/lib/apt/lists/_* rootdir/var/lib/apt/lists/partial/*
+
+ insertpackage 'unstable' 'old' 'all' '1.0'
+
+ setupaptarchive --no-update
+}
+
+add_new_package() {
+ insertpackage 'unstable' 'new' 'all' '1.0'
+ insertsource 'unstable' 'new' 'all' '1.0'
+
+ setupaptarchive --no-update "$@"
+}
+
+break_repository_sources_index() {
+ mv "$APTARCHIVE/dists/unstable/main/source/Sources.gz" "$APTARCHIVE/dists/unstable/main/source/Sources.gz.orig"
+ printf 'xxx' > "$APTARCHIVE/dists/unstable/main/source/Sources"
+ compressfile "$APTARCHIVE/dists/unstable/main/source/Sources" "$@"
+}
+
+start_with_good_inrelease() {
+ create_fresh_archive
+ testsuccess aptget update
+ listcurrentlistsdirectory > lists.before
+ testsuccessequal 'dpkg/now 1.16.2+fake all [installed,local]
+old/unstable 1.0 all' apt list -qq
+}
+
+test_inrelease_to_new_inrelease() {
+ msgmsg 'Test InRelease to new InRelease works fine'
+ start_with_good_inrelease
+
+ add_new_package '+1hour'
+ testsuccess aptget update -o Debug::Acquire::Transaction=1
+ testsuccessequal 'dpkg/now 1.16.2+fake all [installed,local]
+new/unstable 1.0 all
+old/unstable 1.0 all' apt list -qq
+}
+
+test_inrelease_to_broken_hash_reverts_all() {
+ msgmsg 'Test InRelease to broken InRelease reverts everything'
+ start_with_good_inrelease
+
+ add_new_package '+1hour'
+ # break the Sources file
+ break_repository_sources_index '+1hour'
+
+ # test the error condition
+ testfailureequal "E: Failed to fetch file:${APTARCHIVE}/dists/unstable/main/source/Sources.gz Hash Sum mismatch
+ Hashes of expected file:
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/source/Sources.gz.orig') [weak]
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/source/Sources.gz.orig' | cut -d' ' -f 1)
+ Hashes of received file:
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/source/Sources.gz' | cut -d' ' -f 1)
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/source/Sources.gz') [weak]
+ Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/source/Sources.gz')
+ Release file created at: $(releasefiledate 'aptarchive/dists/unstable/InRelease')
+E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
+ # ensure that the Packages file is also rolled back
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ testfailureequal "E: Unable to locate package new" aptget install new -s -qq
+}
+
+test_inrelease_to_valid_release() {
+ msgmsg 'Test InRelease to valid Release'
+ start_with_good_inrelease
+
+ add_new_package '+1hour'
+ # switch to a unsigned repo now
+ rm -f "$APTARCHIVE/dists/unstable/InRelease" "$APTARCHIVE/dists/unstable/Release.gpg"
+
+ # update fails
+ testfailureequal "E: The repository 'file:${APTARCHIVE} unstable Release' is no longer signed." aptget update -qq
+
+ # test that security downgrade was not successful
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ testsuccess aptget install old -s
+ testfailure aptget install new -s
+ testnotempty find "${ROOTDIR}/var/lib/apt/lists" -name '*_InRelease'
+ testempty find "${ROOTDIR}/var/lib/apt/lists" -name '*_Release'
+}
+
+test_inrelease_to_release_reverts_all() {
+ msgmsg 'Test InRelease to broken Release reverts everything'
+ start_with_good_inrelease
+
+ # switch to a unsigned repo now
+ add_new_package '+1hour'
+ rm -f "$APTARCHIVE/dists/unstable/InRelease" "$APTARCHIVE/dists/unstable/Release.gpg"
+
+ # break it
+ break_repository_sources_index '+1hour'
+
+ # ensure error
+ testfailureequal "E: The repository 'file:${APTARCHIVE} unstable Release' is no longer signed." aptget update -qq # -o Debug::acquire::transaction=1
+
+ # ensure that the Packages file is also rolled back
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ testsuccess aptget install old -s
+ testfailure aptget install new -s
+ testnotempty find "${ROOTDIR}/var/lib/apt/lists" -name '*_InRelease'
+ testempty find "${ROOTDIR}/var/lib/apt/lists" -name '*_Release'
+}
+
+test_unauthenticated_to_invalid_inrelease() {
+ msgmsg 'Test UnAuthenticated to invalid InRelease reverts everything'
+ create_fresh_archive
+ rm -f "$APTARCHIVE/dists/unstable/InRelease" "$APTARCHIVE/dists/unstable/Release.gpg"
+
+ testwarning aptget update --allow-insecure-repositories
+ listcurrentlistsdirectory > lists.before
+ testfailureequal "WARNING: The following packages cannot be authenticated!
+ old
+E: There were unauthenticated packages and -y was used without --allow-unauthenticated" aptget install -qq -y old
+
+ # go to authenticated but not correct
+ add_new_package '+1hour'
+ break_repository_sources_index '+1hour'
+
+ testfailureequal "E: Failed to fetch file:$APTARCHIVE/dists/unstable/main/source/Sources.gz Hash Sum mismatch
+ Hashes of expected file:
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/source/Sources.gz.orig') [weak]
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/source/Sources.gz.orig' | cut -d' ' -f 1)
+ Hashes of received file:
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/source/Sources.gz' | cut -d' ' -f 1)
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/source/Sources.gz') [weak]
+ Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/source/Sources.gz')
+ Release file created at: $(releasefiledate 'aptarchive/dists/unstable/InRelease')
+E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
+
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ testempty find "${ROOTDIR}/var/lib/apt/lists" -maxdepth 1 -name '*_InRelease'
+ testfailureequal "WARNING: The following packages cannot be authenticated!
+ old
+E: There were unauthenticated packages and -y was used without --allow-unauthenticated" aptget install -qq -y old
+}
+
+test_inrelease_to_unauth_inrelease() {
+ msgmsg 'Test InRelease to InRelease without good sig'
+ start_with_good_inrelease
+
+ signreleasefiles 'Marvin Paranoid'
+
+ testwarningequal "W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: file:${APTARCHIVE} unstable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY E8525D47528144E2
+W: Failed to fetch file:$APTARCHIVE/dists/unstable/InRelease The following signatures couldn't be verified because the public key is not available: NO_PUBKEY E8525D47528144E2
+W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
+
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ testnotempty find "${ROOTDIR}/var/lib/apt/lists" -name '*_InRelease'
+}
+
+test_inrelease_to_broken_gzip() {
+ msgmsg "Test InRelease to broken gzip"
+ start_with_good_inrelease
+
+ break_repository_sources_index '+1hour'
+ generatereleasefiles '+2hours'
+ signreleasefiles
+
+ # append junk at the end of the compressed file
+ echo "lala" >> "$APTARCHIVE/dists/unstable/main/source/Sources.gz"
+ touch -d '+2min' "$APTARCHIVE/dists/unstable/main/source/Sources.gz"
+ # remove uncompressed file to avoid fallback
+ rm "$APTARCHIVE/dists/unstable/main/source/Sources"
+
+ testfailure aptget update
+ testsuccess grep 'Hash Sum mismatch' rootdir/tmp/testfailure.output
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+}
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+export APT_DONT_SIGN='Release.gpg'
+
+APTARCHIVE="$(readlink -f ./aptarchive)"
+ROOTDIR="${TMPWORKINGDIRECTORY}/rootdir"
+APTARCHIVE_LISTS="$(echo "$APTARCHIVE" | tr "/" "_" )"
+
+# test the following cases:
+# - InRelease -> broken InRelease revert to previous state
+# - empty lists dir and broken remote leaves nothing on the system
+# - InRelease -> hashsum mismatch for one file reverts all files to previous state
+# - Release/Release.gpg -> hashsum mismatch
+# - InRelease -> Release with hashsum mismatch revert entire state and kills Release
+# - Release -> InRelease with broken Sig/Hash removes InRelease
+# going from Release/Release.gpg -> InRelease and vice versa
+# - unauthenticated -> invalid InRelease
+
+# stuff to do:
+# - ims-hit
+# - gzip-index tests
+
+test_inrelease_to_new_inrelease
+test_inrelease_to_broken_hash_reverts_all
+test_inrelease_to_valid_release
+test_inrelease_to_release_reverts_all
+test_unauthenticated_to_invalid_inrelease
+test_inrelease_to_unauth_inrelease
+test_inrelease_to_broken_gzip
diff --git a/test/integration/test-apt-update-simple b/test/integration/test-apt-update-simple
new file mode 100755
index 000000000..ccf719790
--- /dev/null
+++ b/test/integration/test-apt-update-simple
@@ -0,0 +1,33 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'foo' 'all' '1'
+insertpackage 'unstable' 'bar' 'amd64' '1'
+insertpackage 'unstable' 'bar' 'i386' '1'
+insertsource 'unstable' 'foo' 'all' '1'
+
+sed -e 's#^Description-en:#Description-de:#' \
+ aptarchive/dists/unstable/main/i18n/Translation-en > aptarchive/dists/unstable/main/i18n/Translation-de
+
+setupaptarchive --no-update
+changetowebserver
+
+# the framework modifies some configs to ensure testability,
+# at the expense of creating an environment which doesn't always
+# reflect apts "normal" behavior on a "normal" system
+echo 'Acquire::IndexTargets::Randomized "true";
+Acquire::Languages { "environment"; "en"; "de"; };
+' > rootdir/etc/apt/apt.conf.d/restore-simplicity
+
+testempty aptget indextargets
+testsuccess aptget update
+testequal 'main/source/Sources
+main/binary-amd64/Packages
+main/binary-all/Packages
+main/i18n/Translation-en
+main/i18n/Translation-de' aptget indextargets --format '$(METAKEY)'
diff --git a/test/integration/test-apt-update-stale b/test/integration/test-apt-update-stale
new file mode 100755
index 000000000..72b05a966
--- /dev/null
+++ b/test/integration/test-apt-update-stale
@@ -0,0 +1,44 @@
+#!/bin/sh
+#
+# Ensure that a MITM can not stale the Packages/Sources without
+# raising a error message. Note that the Release file is protected
+# via the "Valid-Until" header
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'foo' 'i386' '1.0'
+
+setupaptarchive --no-update
+changetowebserver
+
+echo "Acquire::Languages \"none\";" > rootdir/etc/apt/apt.conf.d/00nolanguages
+testsuccess aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::http=1
+listcurrentlistsdirectory > lists.before
+
+# insert new version
+mkdir aptarchive/dists/unstable/main/binary-i386/saved
+cp -p aptarchive/dists/unstable/main/binary-i386/Packages* \
+ aptarchive/dists/unstable/main/binary-i386/saved
+insertpackage 'unstable' 'foo' 'i386' '2.0'
+touch -d '+1 hour' aptarchive/dists/unstable/main/binary-i386/Packages
+compressfile aptarchive/dists/unstable/main/binary-i386/Packages
+# ensure that we do not get a I-M-S hit for the Release file
+
+generatereleasefiles '+1hour'
+signreleasefiles
+
+# but now only deliver the previous Packages file instead of the new one
+# (simulating a stale attack)
+cp -p aptarchive/dists/unstable/main/binary-i386/saved/Packages* \
+ aptarchive/dists/unstable/main/binary-i386/
+
+# ensure this raises an error
+testfailuremsg "E: Failed to fetch http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-i386/Packages.gz Hash Sum mismatch
+E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::http=1
+testfileequal lists.before "$(listcurrentlistsdirectory)"
diff --git a/test/integration/test-apt-update-transactions b/test/integration/test-apt-update-transactions
new file mode 100755
index 000000000..ab678c133
--- /dev/null
+++ b/test/integration/test-apt-update-transactions
@@ -0,0 +1,91 @@
+#!/bin/sh
+set -e
+
+# ensure that an update will only succeed entirely or not at all
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+configcompression '.' 'gz'
+
+insertpackage 'unstable' 'foo' 'i386' '1.0'
+insertsource 'unstable' 'foo' 'i386' '1.0'
+
+setupaptarchive --no-update
+
+breakfile() {
+ mv "${1}" "${1}.bak"
+ mv "${1}.gz" "${1}.gz.bak"
+ cat > "$1" <<EOF
+Package: bar
+EOF
+ compressfile "$1"
+}
+restorefile() {
+ mv "${1}.bak" "$1"
+ mv "${1}.gz.bak" "${1}.gz"
+}
+
+testrun() {
+ rm -rf aptarchive/dists.good
+ cp -a aptarchive/dists aptarchive/dists.good
+ insertpackage 'unstable' 'bar' 'i386' '1.0'
+ insertsource 'unstable' 'bar' 'i386' '1.0'
+ buildaptarchivefromfiles '+1 hour'
+
+ # produce an unsigned repository
+ find aptarchive \( -name 'Release.gpg' -o -name 'InRelease' \) -delete
+ testfailure aptget update --no-allow-insecure-repositories
+ testfileequal "$1" "$(listcurrentlistsdirectory)"
+
+ # signed but broken
+ signreleasefiles
+
+ onehashbroken() {
+ rm -rf rootdir/var/lib/apt/lists/partial
+ testfailure aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::http=1
+ # each file generates two messages with this string
+ testequal '2' grep --count 'Hash Sum mismatch' rootdir/tmp/testfailure.output
+ testfileequal "$1" "$(listcurrentlistsdirectory)"
+ }
+
+ breakfile aptarchive/dists/unstable/main/binary-i386/Packages
+ onehashbroken "$1"
+ restorefile aptarchive/dists/unstable/main/binary-i386/Packages
+
+ breakfile aptarchive/dists/unstable/main/source/Sources
+ onehashbroken "$1"
+ restorefile aptarchive/dists/unstable/main/source/Sources
+
+ rm -rf aptarchive/dists
+ cp -a aptarchive/dists.good aptarchive/dists
+}
+
+testsetup() {
+ msgmsg 'Test with no initial data over' "$1"
+ rm -rf rootdir/var/lib/apt/lists
+ mkdir -p rootdir/var/lib/apt/lists/partial
+ listcurrentlistsdirectory > listsdir.lst
+ testrun 'listsdir.lst'
+
+ msgmsg 'Test with initial data over' "$1"
+ rm -rf rootdir/var/lib/apt/lists
+ testsuccess aptget update -o Debug::pkgAcquire::Worker=1
+ listcurrentlistsdirectory > listsdir.lst
+ testrun 'listsdir.lst'
+}
+
+testsetup 'file'
+
+changetowebserver
+webserverconfig 'aptwebserver::support::modified-since' 'false' "$1"
+webserverconfig 'aptwebserver::support::last-modified' 'false' "$1" # curl is clever and sees hits here also
+webserverconfig 'aptwebserver::response-header::Accept-Ranges' 'none' "$1"
+
+testsetup 'http'
+
+changetohttpswebserver
+
+testsetup 'https'
diff --git a/test/integration/test-apt-update-unauth b/test/integration/test-apt-update-unauth
new file mode 100755
index 000000000..ef1e4eca7
--- /dev/null
+++ b/test/integration/test-apt-update-unauth
@@ -0,0 +1,80 @@
+#!/bin/sh
+#
+# Ensure that when going from unauthenticated to authenticated all
+# files are checked again
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+umask 022
+
+setupenvironment
+configarchitecture "i386"
+configcompression '.' 'xz'
+
+insertpackage 'unstable' 'foo' 'i386' '1.0'
+insertsource 'unstable' 'foo' 'any' '1.0'
+
+setupaptarchive --no-update
+changetowebserver
+
+# FIXME:
+# - also check the unauth -> auth success case, i.e. that all files are
+# reverified
+runtest() {
+ # start unauthenticated
+ rm -rf rootdir/var/lib/apt/lists/
+ find aptarchive/ -name '*Release*' -delete
+
+ testwarning aptget update --allow-insecure-repositories
+
+ # become authenticated
+ generatereleasefiles
+ signreleasefiles
+
+ # move uncompressed away
+ mv aptarchive/dists/unstable/main/binary-i386/Packages \
+ aptarchive/dists/unstable/main/binary-i386/Packages.uncompressed
+
+ # and ensure we re-check the downloaded data
+
+ # change the local packages file
+ PKGS=$(ls rootdir/var/lib/apt/lists/*Packages*)
+ echo "meep" > $PKGS
+ listcurrentlistsdirectory > lists.before
+
+ # update and ensure all is reverted on the hashsum failure
+ testfailure aptget update -o Debug::Acquire::Transaction=1 -o Debug::pkgAcquire::Auth=1 -o Debug::pkgAcquire::worker=0 -o Debug::acquire::http=0
+
+ # ensure we have before what we have after
+ msgtest 'Check rollback on going from' 'unauth -> auth'
+ listcurrentlistsdirectory > lists.after
+ if cmp lists.before lists.after; then
+ msgpass
+ else
+ echo >&2
+ echo >&2 '### Output of previous apt-get update ###'
+ cat >&2 rootdir/tmp/testfailure.output || true
+ echo >&2 '### Changes in the lists-directory: ###'
+ diff -u >&2 lists.before lists.after || true
+ echo >&2 '### Contents of the lists-directory: ###'
+ ls -l rootdir/var/lib/apt/lists rootdir/var/lib/apt/lists/partial || true
+ msgfail
+ fi
+
+ # move uncompressed back for release file
+ mv aptarchive/dists/unstable/main/binary-i386/Packages.uncompressed \
+ aptarchive/dists/unstable/main/binary-i386/Packages
+}
+
+for COMPRESSEDINDEXES in 'false' 'true'; do
+ echo "Acquire::GzipIndexes \"$COMPRESSEDINDEXES\";" > rootdir/etc/apt/apt.conf.d/compressindexes
+ if $COMPRESSEDINDEXES; then
+ msgmsg 'Run tests with GzipIndexes enabled'
+ else
+ msgmsg 'Run tests with GzipIndexes disabled'
+ fi
+ runtest
+done
diff --git a/test/integration/test-apt-update-weak-hashes b/test/integration/test-apt-update-weak-hashes
new file mode 100755
index 000000000..b07dba6a2
--- /dev/null
+++ b/test/integration/test-apt-update-weak-hashes
@@ -0,0 +1,202 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+confighashes 'MD5'
+export APT_DONT_SIGN=''
+
+insertpackage 'unstable' 'foo' 'i386' '1.0'
+insertsource 'unstable' 'foo' 'any' '1.0'
+
+setupaptarchive --no-update
+APTARCHIVE="$(readlink -f ./aptarchive)"
+
+testnopkg() {
+ testnopackage "$@"
+ testnosrcpackage "$@"
+}
+testbadpkg() {
+ testempty find rootdir/var/lib/apt/lists -maxdepth 1 -name '*InRelease' -o -name '*Release.gpg'
+ testnotempty find rootdir/var/lib/apt/lists -maxdepth 1 -name '*Release'
+ testnotempty apt show "$@"
+ testnotempty apt showsrc "$@"
+ testfailureequal "WARNING: The following packages cannot be authenticated!
+ $*
+E: There were unauthenticated packages and -y was used without --allow-unauthenticated" aptget install -qq -y "$@"
+ testfailureequal "WARNING: The following packages cannot be authenticated!
+ $*
+E: Some packages could not be authenticated" aptget source -qq "$@"
+}
+
+testrun() {
+ local TYPE="$1"
+ local FILENAME="$2"
+ shift 2
+ local MANGLED="$(readlink -f ./rootdir)/var/lib/apt/lists/partial/$(echo "$FILENAME" | sed 's#/#_#g')"
+ msgmsg "$TYPE contains only weak hashes"
+ confighashes 'MD5'
+ generatereleasefiles
+ signreleasefiles
+ preparetest
+ if [ -z "$1" ]; then
+ listcurrentlistsdirectory > lists.before
+ testfailuremsg "W: No Hash entry in Release file ${MANGLED} which is considered strong enough for security purposes
+E: The repository 'file:${APTARCHIVE} unstable $(basename "$FILENAME")' provides only weak security information.
+N: Updating from such a repository can't be done securely, and is therefore disabled by default.
+N: See apt-secure(8) manpage for repository creation and user configuration details." apt update
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ testnopkg 'foo'
+ else
+ testwarningmsg "W: No Hash entry in Release file ${MANGLED} which is considered strong enough for security purposes
+W: The repository 'file:${APTARCHIVE} unstable $(basename "$FILENAME")' provides only weak security information.
+N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
+N: See apt-secure(8) manpage for repository creation and user configuration details." apt update "$@"
+ testbadpkg 'foo'
+ fi
+
+ msgmsg "$TYPE contains only weak hashes, but source allows weak"
+ sed -i 's#^deb\(-src\)\? #deb\1 [allow-weak=yes] #' rootdir/etc/apt/sources.list.d/*
+ genericprepare
+ testwarningmsg "W: No Hash entry in Release file ${MANGLED} which is considered strong enough for security purposes
+W: The repository 'file:${APTARCHIVE} unstable $(basename "$FILENAME")' provides only weak security information.
+N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
+N: See apt-secure(8) manpage for repository creation and user configuration details." apt update "$@"
+ testbadpkg 'foo'
+ sed -i 's#^deb\(-src\)\? \[allow-weak=yes\] #deb\1 #' rootdir/etc/apt/sources.list.d/*
+
+ msgmsg "$TYPE contains no hashes"
+ generatereleasefiles
+ sed -i -e '/^ / d' -e '/^MD5Sum:/ d' "$APTARCHIVE/dists/unstable/Release"
+ signreleasefiles
+ preparetest
+ if [ -z "$1" ]; then
+ listcurrentlistsdirectory > lists.before
+ testfailuremsg "W: No Hash entry in Release file ${MANGLED}
+E: The repository 'file:${APTARCHIVE} unstable $(basename "$FILENAME")' provides only weak security information.
+N: Updating from such a repository can't be done securely, and is therefore disabled by default.
+N: See apt-secure(8) manpage for repository creation and user configuration details." apt update
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ testnopkg 'foo'
+ else
+ testwarningmsg "W: No Hash entry in Release file ${MANGLED}
+W: The repository 'file:${APTARCHIVE} unstable $(basename "$FILENAME")' provides only weak security information.
+N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
+N: See apt-secure(8) manpage for repository creation and user configuration details." apt update "$@"
+ testbadpkg 'foo'
+ fi
+
+ msgmsg "$TYPE contains only weak hashes for some files"
+ confighashes 'MD5' 'SHA256'
+ generatereleasefiles
+ sed -i '/^ [0-9a-fA-Z]\{64\} .*Sources$/d' "$APTARCHIVE/dists/unstable/Release"
+ signreleasefiles
+ preparetest
+ if [ -z "$1" ]; then
+ testwarningmsg "W: Skipping acquire of configured file 'main/source/Sources' as repository 'file:${APTARCHIVE} unstable InRelease' provides only weak security information for it" apt update
+ testnosrcpackage foo
+ else
+ rm -f rootdir/var/lib/apt/lists/partial/*
+ testsuccess apt update "$@"
+ testnotempty apt showsrc foo
+ fi
+ testsuccess apt show foo
+}
+
+genericprepare() {
+ rm -rf rootdir/var/lib/apt/lists
+ mkdir -p rootdir/var/lib/apt/lists/partial
+ touch rootdir/var/lib/apt/lists/lock
+ local RELEASEGPG="$(readlink -f ./rootdir)/var/lib/apt/lists/partial/$(echo "${APTARCHIVE}/dists/unstable/Release.gpg" | sed 's#/#_#g')"
+ touch "$RELEASEGPG"
+ chmod 644 "$RELEASEGPG"
+ local INRELEASE="$(readlink -f ./rootdir)/var/lib/apt/lists/partial/$(echo "${APTARCHIVE}/dists/unstable/InRelease" | sed 's#/#_#g')"
+ touch "$INRELEASE"
+ chmod 644 "$INRELEASE"
+}
+preparetest() {
+ rm -f "${APTARCHIVE}/dists/unstable/Release" "${APTARCHIVE}/dists/unstable/Release.gpg"
+ genericprepare
+}
+testrun 'InRelease' "${APTARCHIVE}/dists/unstable/InRelease"
+testrun 'InRelease' "${APTARCHIVE}/dists/unstable/InRelease" --allow-weak-repositories -o APT::Get::List-Cleanup=0
+
+preparetest() {
+ rm -f "${APTARCHIVE}/dists/unstable/InRelease"
+ genericprepare
+}
+testrun 'Release+Release.gpg' "${APTARCHIVE}/dists/unstable/Release"
+testrun 'Release+Release.gpg' "${APTARCHIVE}/dists/unstable/Release" --allow-weak-repositories -o APT::Get::List-Cleanup=0
+
+preparetest() {
+ rm -f "${APTARCHIVE}/dists/unstable/InRelease" "${APTARCHIVE}/dists/unstable/Release.gpg"
+ genericprepare
+}
+
+msgmsg 'Moving between Release files with good and bad hashes'
+rm -rf rootdir/var/lib/apt/lists
+confighashes 'MD5'
+generatereleasefiles 'now - 7 days'
+signreleasefiles
+testfailure apt update
+testnopkg 'foo'
+testwarning apt update --allow-weak-repositories
+testbadpkg 'foo'
+
+confighashes 'MD5' 'SHA256'
+rm -rf aptarchive/dists
+insertpackage 'unstable' 'foo2' 'i386' '1.0'
+insertsource 'unstable' 'foo2' 'any' '1.0'
+setupaptarchive --no-update 'now - 5 days'
+testsuccess apt update
+testnopkg foo
+testnotempty find rootdir/var/lib/apt/lists -maxdepth 1 -name '*InRelease' -o -name '*Release.gpg'
+testnotempty apt show foo2
+testnotempty apt showsrc foo2
+
+confighashes 'MD5'
+rm -rf aptarchive/dists
+insertpackage 'unstable' 'foo3' 'i386' '1.0'
+insertsource 'unstable' 'foo3' 'any' '1.0'
+setupaptarchive --no-update 'now - 3 days'
+testfailure apt update
+testnopkg foo
+testnopkg foo3
+testnotempty find rootdir/var/lib/apt/lists -maxdepth 1 -name '*InRelease' -o -name '*Release.gpg'
+testnotempty apt show foo2
+testnotempty apt showsrc foo2
+testwarning apt update --allow-weak-repositories
+testnopkg foo2
+testbadpkg foo3
+
+msgmsg 'Working with packages guarded only by weak hashes'
+confighashes 'MD5'
+rm -rf aptarchive/dists
+buildsimplenativepackage 'foo4' 'i386' '1' 'unstable'
+setupaptarchive --no-update
+testfailure apt update
+confighashes 'SHA256'
+generatereleasefiles 'now - 1 day'
+signreleasefiles
+testsuccess apt update
+cd downloaded
+testfailure apt download foo4
+cp ../rootdir/tmp/testfailure.output download.output
+testfailure grep 'Hash Sum mismatch' download.output
+testsuccess grep 'Insufficient information' download.output
+
+testsuccess apt install foo4 -s
+testfailure apt install foo4 -dy
+cp ../rootdir/tmp/testfailure.output install.output
+testfailure grep 'Hash Sum mismatch' install.output
+testsuccess grep 'Insufficient information' download.output
+
+testsuccess apt source foo4
+cp ../rootdir/tmp/testsuccess.output source.output
+testsuccess grep 'Skipping download of file' source.output
+testfailure test -e foo4_1.dsc
+testsuccess test -e foo4_1.tar.*
+cd ..
diff --git a/test/integration/test-architecture-specification-parsing b/test/integration/test-architecture-specification-parsing
new file mode 100755
index 000000000..23199384e
--- /dev/null
+++ b/test/integration/test-architecture-specification-parsing
@@ -0,0 +1,120 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+
+# we need this construct here as it isn't really possible to fake native arch for dpkg-* tools
+NATIVE="$(command dpkg --print-architecture)"
+configarchitecture "${NATIVE}" 'armel'
+
+buildsimplenativepackage 'pkg-arch-foo' "$NATIVE" '1.0' 'stable' "Build-Depends: foo [${NATIVE} !${NATIVE}]
+Depends: foo [${NATIVE} !${NATIVE}]"
+buildsimplenativepackage 'pkg-arch-no-foo' "$NATIVE" '1.0' 'stable' "Build-Depends: foo [!${NATIVE} ${NATIVE}]
+Depends: foo [!${NATIVE} ${NATIVE}]"
+buildsimplenativepackage 'pkg-arch-foo-unrelated-no' "$NATIVE" '1.0' 'stable' "Build-Depends: foo [!someos-any ${NATIVE}]
+Depends: foo [!someos-any ${NATIVE}]"
+buildsimplenativepackage 'pkg-arch-foo-unrelated-no2' "$NATIVE" '1.0' 'stable' "Build-Depends: foo [${NATIVE} !someos-any]
+Depends: foo [${NATIVE} !someos-any]"
+buildsimplenativepackage 'no-depends' 'armel' '1.0' 'stable' 'Build-Depends: foo [armeb], bar [arm]
+Depends: foo [armeb], bar [arm]'
+
+buildsimplenativepackage 'foo' "$NATIVE" '1.0' 'stable'
+
+insertinstalledpackage 'build-essential' 'all' '11.5' 'Multi-Arch: foreign'
+
+setupaptarchive
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ foo pkg-arch-foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 stable [${NATIVE}])
+Inst pkg-arch-foo (1.0 stable [${NATIVE}])
+Conf foo (1.0 stable [${NATIVE}])
+Conf pkg-arch-foo (1.0 stable [${NATIVE}])" aptget install pkg-arch-foo -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ pkg-arch-no-foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst pkg-arch-no-foo (1.0 stable [${NATIVE}])
+Conf pkg-arch-no-foo (1.0 stable [${NATIVE}])" aptget install pkg-arch-no-foo -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ foo pkg-arch-foo-unrelated-no
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 stable [${NATIVE}])
+Inst pkg-arch-foo-unrelated-no (1.0 stable [${NATIVE}])
+Conf foo (1.0 stable [${NATIVE}])
+Conf pkg-arch-foo-unrelated-no (1.0 stable [${NATIVE}])" aptget install pkg-arch-foo-unrelated-no -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ foo pkg-arch-foo-unrelated-no2
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 stable [${NATIVE}])
+Inst pkg-arch-foo-unrelated-no2 (1.0 stable [${NATIVE}])
+Conf foo (1.0 stable [${NATIVE}])
+Conf pkg-arch-foo-unrelated-no2 (1.0 stable [${NATIVE}])" aptget install pkg-arch-foo-unrelated-no2 -s
+
+testsuccessequal "Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 stable [${NATIVE}])
+Conf foo (1.0 stable [${NATIVE}])" aptget build-dep pkg-arch-foo -s
+
+testsuccessequal 'Reading package lists...
+pkg-arch-no-foo has no build depends.
+Reading package lists...
+Building dependency tree...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget build-dep pkg-arch-no-foo -s
+
+testsuccessequal "Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 stable [${NATIVE}])
+Conf foo (1.0 stable [${NATIVE}])" aptget build-dep pkg-arch-foo-unrelated-no -s
+
+testsuccessequal "Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 stable [${NATIVE}])
+Conf foo (1.0 stable [${NATIVE}])" aptget build-dep pkg-arch-foo-unrelated-no2 -s
+
+testsuccessequal 'Reading package lists...
+no-depends has no build depends.
+Reading package lists...
+Building dependency tree...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget build-dep no-depends -s
+
+# this is not really testing APT - more that dpkg is in line with us
+configarchitecture 'amd64' 'armel'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ no-depends:armel
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst no-depends:armel (1.0 stable [armel])
+Conf no-depends:armel (1.0 stable [armel])' aptget install no-depends -s
diff --git a/test/integration/test-authentication-basic b/test/integration/test-authentication-basic
new file mode 100755
index 000000000..3bfd076ce
--- /dev/null
+++ b/test/integration/test-authentication-basic
@@ -0,0 +1,109 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'foo' 'all' '1'
+setupaptarchive --no-update
+
+changetohttpswebserver --authorization="$(printf '%s' 'star@irc:hunter2' | base64 )"
+
+echo 'See, when YOU type hunter2, it shows to us as *******' > aptarchive/bash
+
+testauthfailure() {
+ testfailure apthelper download-file "${1}/bash" ./downloaded/bash
+ # crappy test, but http and https output are wastely different…
+ testsuccess grep 401 rootdir/tmp/testfailure.output
+ testfailure test -s ./downloaded/bash
+}
+
+testauthsuccess() {
+ testsuccess apthelper download-file "${1}/bash" ./downloaded/bash
+ testfileequal ./downloaded/bash "$(cat aptarchive/bash)"
+ testfilestats ./downloaded/bash '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+ rm -f ./downloaded/bash
+
+ # lets see if got/retains acceptable permissions
+ if [ -n "$AUTHCONF" ]; then
+ if [ "$(id -u)" = '0' ]; then
+ testfilestats "$AUTHCONF" '%U:%G:%a' '=' "_apt:$(id -gn):600"
+ else
+ testfilestats "$AUTHCONF" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:600"
+ fi
+ fi
+
+ rm -rf rootdir/var/lib/apt/lists
+ testsuccess aptget update
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [all])
+Conf foo (1 unstable [all])' aptget install foo -s
+}
+
+authfile() {
+ local AUTHCONF='rootdir/etc/apt/auth.conf'
+ rm -f "$AUTHCONF"
+ printf '%s' "$1" > "$AUTHCONF"
+ chmod 600 "$AUTHCONF"
+}
+
+runtest() {
+ # unauthorized fails
+ authfile ''
+ testauthfailure "$1"
+
+ # good auth
+ authfile 'machine localhost
+login star@irc
+password hunter2'
+ testauthsuccess "$1"
+
+ # bad auth
+ authfile 'machine localhost
+login anonymous
+password hunter2'
+ testauthfailure "$1"
+
+ # 2 stanzas: unmatching + good auth
+ authfile 'machine debian.org
+login debian
+password jessie
+
+machine localhost
+login star@irc
+password hunter2'
+ testauthsuccess "$1"
+}
+
+msgmsg 'server basic auth'
+rewritesourceslist "http://localhost:${APTHTTPPORT}"
+runtest "http://localhost:${APTHTTPPORT}"
+rewritesourceslist "http://star%40irc:hunter2@localhost:${APTHTTPPORT}"
+authfile ''
+testauthsuccess "http://star%40irc:hunter2@localhost:${APTHTTPPORT}"
+rewritesourceslist "https://localhost:${APTHTTPSPORT}"
+runtest "https://localhost:${APTHTTPSPORT}"
+rewritesourceslist "http://localhost:${APTHTTPPORT}"
+
+msgmsg 'proxy to server basic auth'
+webserverconfig 'aptwebserver::request::absolute' 'uri'
+export http_proxy="http://localhost:${APTHTTPPORT}"
+runtest "http://localhost:${APTHTTPPORT}"
+unset http_proxy
+
+msgmsg 'proxy basic auth to server basic auth'
+webserverconfig 'aptwebserver::proxy-authorization' "$(printf 'moon:deer2' | base64)"
+export http_proxy="http://moon:deer2@localhost:${APTHTTPPORT}"
+runtest "http://localhost:${APTHTTPPORT}"
+
+msgmsg 'proxy basic auth to server'
+authfile ''
+webserverconfig 'aptwebserver::authorization' ''
+testauthsuccess "http://localhost:${APTHTTPPORT}"
diff --git a/test/integration/test-bug-254770-segfault-if-cache-not-buildable b/test/integration/test-bug-254770-segfault-if-cache-not-buildable
new file mode 100755
index 000000000..6f6e1abc0
--- /dev/null
+++ b/test/integration/test-bug-254770-segfault-if-cache-not-buildable
@@ -0,0 +1,64 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+msgtest 'Test run as' 'non-root'
+if [ "$(id -u)" = '0' ]; then
+ msgskip 'root has by definition no problems accessing files'
+ exit 0
+else
+ msgpass
+fi
+
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+addtrap 'prefix' 'chmod a+x rootdir/var/lib/dpkg;'
+chmod a-x rootdir/var/lib/dpkg
+
+testsegfault() {
+ msgtest "No segfault in" "$*"
+ local TEST="$("$@" 2>&1 | grep -v 'E:')"
+ if [ -z "$TEST" ]; then
+ msgpass
+ else
+ echo
+ echo "$TEST"
+ msgfail
+ fi
+}
+
+echo 'quiet 2;' > rootdir/etc/apt/apt.conf.d/00be-quiet
+
+testsegfault aptcache gencaches
+testsegfault aptcache showpkg
+testsegfault aptcache showsrc
+testsegfault aptcache stats
+testsegfault aptcache dump
+testsegfault aptcache dumpavail
+testsegfault aptcache unmet
+testsegfault aptcache search
+testsegfault aptcache show apt
+testsegfault aptcache depends apt
+testsegfault aptcache rdepends apt
+testsegfault aptcache pkgnames apt
+testsegfault aptcache dotty apt
+testsegfault aptcache xvcg apt
+testsegfault aptcache policy apt
+
+testsegfault aptget update
+testsegfault aptget upgrade
+testsegfault aptget dselect-upgrade
+testsegfault aptget dist-upgrade
+testsegfault aptget install apt
+testsegfault aptget remove apt
+testsegfault aptget purge apt
+testsegfault aptget source apt
+testsegfault aptget build-dep apt
+testsegfault aptget check
+testsegfault aptget clean
+testsegfault aptget autoclean
+testsegfault aptget autoremove
diff --git a/test/integration/test-bug-330162-encoded-tar-header b/test/integration/test-bug-330162-encoded-tar-header
new file mode 100755
index 000000000..b779bbc65
--- /dev/null
+++ b/test/integration/test-bug-330162-encoded-tar-header
@@ -0,0 +1,11 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+msgtest 'Test apt-ftparchive with encoded tar header package'
+cp "$TESTDIR/deb-bug-330162-encoded-tar-header.deb" aptarchive/
+testsuccess aptftparchive packages aptarchive/
diff --git a/test/integration/test-bug-407511-fail-invalid-default-release b/test/integration/test-bug-407511-fail-invalid-default-release
new file mode 100755
index 000000000..0e1b5ef83
--- /dev/null
+++ b/test/integration/test-bug-407511-fail-invalid-default-release
@@ -0,0 +1,66 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'cool' 'all' '1.0-1'
+
+getcodenamefromsuite() {
+ if [ "$SUITE" = 'unstable' ]; then
+ echo -n 'sid'
+ else
+ echo -n "$SUITE"
+ fi
+}
+getreleaseversionfromsuite() {
+ if [ "$SUITE" = 'unstable' ]; then
+ echo -n '42.0'
+ else
+ echo -n '0.8.15'
+ fi
+}
+
+getlabelfromsuite() {
+ if [ "$SUITE" = 'unstable' ]; then
+ echo -n 'UnstableTestcases'
+ else
+ echo -n 'Testcases'
+ fi
+}
+
+setupaptarchive
+
+passdist() {
+ msgtest 'Test that target-release is accepted' $1
+ testsuccess --nomsg aptget dist-upgrade -t $1
+ msgtest 'Test that target-release pins with' $1
+ aptcache policy -t $1 | grep -q ' 990' && msgpass || msgfail
+}
+
+faildist() {
+ msgtest 'Test that target-release is refused' $1
+ testfailure --nomsg aptget dist-upgrade -t $1
+}
+
+msgtest 'Test that no default-release is active in this test' 'setup'
+aptcache policy | grep -q ' 990' && msgfall || msgpass
+
+passdist unstable
+passdist sid
+faildist sidd
+faildist stable
+passdist 42.0
+passdist 42.*
+passdist 42*
+passdist 4*.0
+faildist 21.0
+faildist 21*
+# we accept, but don't validate the following
+passdist a=unstable
+passdist n=sid
+passdist v=42.0
+passdist c=main
+passdist l=UnstableTestcases
diff --git a/test/integration/test-bug-470115-new-and-tighten-recommends b/test/integration/test-bug-470115-new-and-tighten-recommends
new file mode 100755
index 000000000..f27990e3e
--- /dev/null
+++ b/test/integration/test-bug-470115-new-and-tighten-recommends
@@ -0,0 +1,174 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertinstalledpackage 'cool' 'all' '1'
+insertinstalledpackage 'stuff' 'all' '1'
+insertinstalledpackage 'coolstuff' 'all' '1'
+
+insertpackage 'unstable' 'cool' 'all' '2'
+insertpackage 'unstable' 'stuff' 'all' '2'
+insertpackage 'unstable' 'coolstuff' 'all' '2'
+insertpackage 'unstable' 'super' 'all' '2'
+
+insertinstalledpackage 'tighten-cool' 'all' '1' 'Recommends: cool (>= 1)'
+insertpackage 'unstable' 'tighten-cool' 'all' '2' 'Recommends: cool (>= 2)'
+
+insertinstalledpackage 'tighten-coolorstuff' 'all' '1' 'Recommends: cool (>= 1) | stuff (>= 1)'
+insertpackage 'unstable' 'tighten-coolorstuff' 'all' '2' 'Recommends: stuff (>= 2) | cool (>= 2)'
+
+insertinstalledpackage 'tighten-coolorstuff2' 'all' '1' 'Recommends: cool (>= 1) | stuff (>= 1)'
+insertpackage 'unstable' 'tighten-coolorstuff2' 'all' '2' 'Recommends: stuff2 (>= 2) | cool (>= 2)'
+
+insertinstalledpackage 'newrec-cool' 'all' '1'
+insertpackage 'unstable' 'newrec-cool' 'all' '2' 'Recommends: cool (>= 2)'
+
+insertinstalledpackage 'newrec-super' 'all' '1'
+insertpackage 'unstable' 'newrec-super' 'all' '2' 'Recommends: super'
+
+insertinstalledpackage 'newrec-coolorstuff' 'all' '1'
+insertpackage 'unstable' 'newrec-coolorstuff' 'all' '2' 'Recommends: cool (>= 2) | stuff (>= 2)'
+
+insertinstalledpackage 'cool-gone' 'all' '1' 'Recommends: cool (>= 1) | stuff (>= 2)'
+insertpackage 'unstable' 'cool-gone' 'all' '2' 'Recommends: stuff (>= 2)'
+
+insertinstalledpackage 'super-overtake' 'all' '1' 'Recommends: cool | super, stuff | super'
+insertpackage 'unstable' 'super-overtake' 'all' '2' 'Recommends: stuff (>= 3) | super, super | cool (>= 2)'
+
+insertinstalledpackage 'upgrade-over-new' 'all' '1' 'Recommends: cool'
+insertpackage 'unstable' 'upgrade-over-new' 'all' '2' 'Recommends: cool (>= 2) | super'
+
+insertinstalledpackage 'now-satisfiable' 'all' '1' 'Recommends: cool (>= 3)'
+insertpackage 'unstable' 'now-satisfiable' 'all' '2' 'Recommends: cool (>= 2)'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ cool
+The following packages will be upgraded:
+ cool tighten-cool
+2 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.
+Inst cool [1] (2 unstable [all])
+Inst tighten-cool [1] (2 unstable [all])
+Conf cool (2 unstable [all])
+Conf tighten-cool (2 unstable [all])' aptget install tighten-cool -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ stuff
+The following packages will be upgraded:
+ stuff tighten-coolorstuff
+2 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.
+Inst stuff [1] (2 unstable [all])
+Inst tighten-coolorstuff [1] (2 unstable [all])
+Conf stuff (2 unstable [all])
+Conf tighten-coolorstuff (2 unstable [all])' aptget install tighten-coolorstuff -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ cool
+The following packages will be upgraded:
+ cool tighten-coolorstuff2
+2 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.
+Inst cool [1] (2 unstable [all])
+Inst tighten-coolorstuff2 [1] (2 unstable [all])
+Conf cool (2 unstable [all])
+Conf tighten-coolorstuff2 (2 unstable [all])' aptget install tighten-coolorstuff2 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ cool
+The following packages will be upgraded:
+ cool newrec-cool
+2 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.
+Inst cool [1] (2 unstable [all])
+Inst newrec-cool [1] (2 unstable [all])
+Conf cool (2 unstable [all])
+Conf newrec-cool (2 unstable [all])' aptget install newrec-cool -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ super
+The following NEW packages will be installed:
+ super
+The following packages will be upgraded:
+ newrec-super
+1 upgraded, 1 newly installed, 0 to remove and 12 not upgraded.
+Inst newrec-super [1] (2 unstable [all])
+Inst super (2 unstable [all])
+Conf newrec-super (2 unstable [all])
+Conf super (2 unstable [all])' aptget install newrec-super -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ cool
+The following packages will be upgraded:
+ cool newrec-coolorstuff
+2 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.
+Inst cool [1] (2 unstable [all])
+Inst newrec-coolorstuff [1] (2 unstable [all])
+Conf cool (2 unstable [all])
+Conf newrec-coolorstuff (2 unstable [all])' aptget install newrec-coolorstuff -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ stuff
+The following packages will be upgraded:
+ cool-gone stuff
+2 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.
+Inst cool-gone [1] (2 unstable [all])
+Inst stuff [1] (2 unstable [all])
+Conf cool-gone (2 unstable [all])
+Conf stuff (2 unstable [all])' aptget install cool-gone -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ super
+The following NEW packages will be installed:
+ super
+The following packages will be upgraded:
+ super-overtake
+1 upgraded, 1 newly installed, 0 to remove and 12 not upgraded.
+Inst super (2 unstable [all])
+Inst super-overtake [1] (2 unstable [all])
+Conf super (2 unstable [all])
+Conf super-overtake (2 unstable [all])' aptget install super-overtake -s
+
+# if super would be in front, we would get a new here as it is new and
+# the first option in an or-group should be the preferred one…
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ cool
+The following packages will be upgraded:
+ cool upgrade-over-new
+2 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.
+Inst cool [1] (2 unstable [all])
+Inst upgrade-over-new [1] (2 unstable [all])
+Conf cool (2 unstable [all])
+Conf upgrade-over-new (2 unstable [all])' aptget install upgrade-over-new -s
+
+# the recommends wasn't used before so while we could do it now,
+# the user doesn't seem to need it so avoid upgrading it
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Recommended packages:
+ cool
+The following packages will be upgraded:
+ now-satisfiable
+1 upgraded, 0 newly installed, 0 to remove and 12 not upgraded.
+Inst now-satisfiable [1] (2 unstable [all])
+Conf now-satisfiable (2 unstable [all])' aptget install now-satisfiable -s
diff --git a/test/integration/test-bug-507998-dist-upgrade-recommends b/test/integration/test-bug-507998-dist-upgrade-recommends
new file mode 100755
index 000000000..b546874ba
--- /dev/null
+++ b/test/integration/test-bug-507998-dist-upgrade-recommends
@@ -0,0 +1,26 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'tshark' 'amd64' '1.0.4-1' 'Depends: wireshark-common'
+insertinstalledpackage 'wireshark-common' 'amd64' '1.0.4-1' 'Recommends: wireshark (>= 1.0.4-1) | tshark (>= 1.0.4-1)'
+insertpackage 'unstable' 'tshark' 'amd64' '1.2.1-2' 'Depends: wireshark-common (= 1.2.1-2)'
+insertpackage 'unstable' 'wireshark-common' 'amd64' '1.2.1-2' 'Recommends: wireshark (>= 1.2.1-2) | tshark (>= 1.2.1-2)'
+insertpackage 'unstable' 'wireshark' 'amd64' '1.2.1-2' 'Depends: wireshark-common (= 1.2.1-2)'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ tshark wireshark-common
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst wireshark-common [1.0.4-1] (1.2.1-2 unstable [amd64])
+Inst tshark [1.0.4-1] (1.2.1-2 unstable [amd64])
+Conf wireshark-common (1.2.1-2 unstable [amd64])
+Conf tshark (1.2.1-2 unstable [amd64])' aptget dist-upgrade -s
diff --git a/test/integration/test-bug-543966-downgrade-below-1000-pin b/test/integration/test-bug-543966-downgrade-below-1000-pin
new file mode 100755
index 000000000..db81b7c7a
--- /dev/null
+++ b/test/integration/test-bug-543966-downgrade-below-1000-pin
@@ -0,0 +1,90 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'base-files' 'all' '5.0.0'
+insertinstalledpackage 'base-files' 'all' '5.0.0-1'
+
+setupaptarchive
+
+STATUS=$(readlink -f rootdir/var/lib/dpkg/status)
+APTARCHIVE="$(readlink -f aptarchive)"
+
+testsuccessequal "base-files:
+ Installed: 5.0.0-1
+ Candidate: 5.0.0-1
+ Version table:
+ *** 5.0.0-1 100
+ 100 $STATUS
+ 5.0.0 500
+ 500 file:${APTARCHIVE} unstable/main all Packages" aptcache policy base-files -o apt::pin=0
+
+writepin() {
+ echo "Package: $1
+Pin: release a=unstable
+Pin-Priority: $2" > rootdir/etc/apt/preferences
+}
+
+
+
+testpinning() {
+ local PKGPINPRIO=''
+ local REPPINPRIO=''
+ if [ "$1" != '*' ]; then
+ PKGPINPRIO=''
+ REPPINPRIO=' 500'
+ fi
+ writepin "$1" '99'
+ testsuccessequal "base-files:
+ Installed: 5.0.0-1
+ Candidate: 5.0.0-1
+ Version table:
+ *** 5.0.0-1 100
+ 100 $STATUS
+ 5.0.0 ${PKGPINPRIO:-99}
+ ${REPPINPRIO:- 99} file:${APTARCHIVE} unstable/main all Packages" aptcache policy base-files -o apt::pin=99
+
+ writepin "$1" '100'
+ testsuccessequal "base-files:
+ Installed: 5.0.0-1
+ Candidate: 5.0.0-1
+ Version table:
+ *** 5.0.0-1 100
+ 100 $STATUS
+ 5.0.0 ${PKGPINPRIO:-100}
+ ${REPPINPRIO:- 100} file:${APTARCHIVE} unstable/main all Packages" aptcache policy base-files -o apt::pin=100
+
+ writepin "$1" '999'
+ testsuccessequal "base-files:
+ Installed: 5.0.0-1
+ Candidate: 5.0.0-1
+ Version table:
+ *** 5.0.0-1 100
+ 100 $STATUS
+ 5.0.0 ${PKGPINPRIO:-999}
+ ${REPPINPRIO:- 999} file:${APTARCHIVE} unstable/main all Packages" aptcache policy base-files -o apt::pin=999
+
+ writepin "$1" '1000'
+ testsuccessequal "base-files:
+ Installed: 5.0.0-1
+ Candidate: 5.0.0
+ Version table:
+ *** 5.0.0-1 100
+ 100 $STATUS
+ 5.0.0 ${PKGPINPRIO:-1000}
+ ${REPPINPRIO:-1000} file:${APTARCHIVE} unstable/main all Packages" aptcache policy base-files -o apt::pin=1000
+}
+
+msgmsg 'Tests with generic-form pin'
+testpinning '*'
+msgmsg 'Tests with specific-form pin'
+testpinning 'base-files'
+msgmsg 'Tests with specific-form pin with glob'
+testpinning 'base-fil*'
+msgmsg 'Tests with specific-form pin with regex'
+testpinning '/^base-f[iI]les$/'
diff --git a/test/integration/test-bug-549968-install-depends-of-not-installed b/test/integration/test-bug-549968-install-depends-of-not-installed
new file mode 100755
index 000000000..fab67c4e9
--- /dev/null
+++ b/test/integration/test-bug-549968-install-depends-of-not-installed
@@ -0,0 +1,28 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'libc6' 'all' '1.0'
+insertpackage 'unstable' 'coolstuff' 'all' '1.0' 'Recommends: extracoolstuff'
+insertpackage 'unstable' 'extracoolstuff' 'all' '1.0' 'Depends: libc6'
+
+setupaptarchive
+
+# We check the Markers here as the autoremove nuker will also
+# prevent it, but to late - its better to fail earlier
+testsuccessequal "Reading package lists...
+Building dependency tree...
+ MarkInstall coolstuff:i386 < none -> 1.0 @un puN IPb > FU=1
+ Ignore MarkInstall of extracoolstuff:i386 < none | 1.0 @hn puH > as its mode (Keep) is protected
+Package 'extracoolstuff' is not installed, so not removed
+Recommended packages:
+ extracoolstuff
+The following NEW packages will be installed:
+ coolstuff
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst coolstuff (1.0 unstable [all])
+Conf coolstuff (1.0 unstable [all])" aptget install coolstuff extracoolstuff- -o Debug::pkgDepCache::Marker=1 -s
diff --git a/test/integration/test-bug-590041-prefer-non-virtual-packages b/test/integration/test-bug-590041-prefer-non-virtual-packages
new file mode 100755
index 000000000..1b1e3aa4f
--- /dev/null
+++ b/test/integration/test-bug-590041-prefer-non-virtual-packages
@@ -0,0 +1,54 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386' 'armel'
+
+pkglibc6="Package: libc6
+Architecture: armel
+Version: 2.11.2-2~0.3
+Description: Embedded GNU C Library: Shared libraries
+Description-md5: b8c1e0561b75e2dc6b6482a99079c3e4
+Filename: pool/main/e/eglibc/libc6_2.11.2-2_armel.deb
+Installed-Size: 9740
+MD5sum: f5b878ce5fb8aa01a7927fa1460df537
+Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Priority: required
+SHA1: 0464d597dfbf949e8c17a42325b1f93fb4914afd
+SHA256: faca4a3d9ccff57568abf41f6cb81ddd835be7b5d8b0161e2d5f9a7f26aae3c0
+Section: libs
+Size: 4178958
+"
+
+pkglibdb1="Package: libdb1
+Architecture: i386
+Version: 2.1.3-13~0.3
+Replaces: libc6 (<< 2.2.5-13~0.3)
+Description: The Berkeley database routines [glibc 2.0/2.1 compatibility]
+Description-md5: de1876f7fe7f7709a110875e145e38a8
+Filename: pool/main/d/db1-compat/libdb1-compat_2.1.3-13_armel.deb
+Installed-Size: 136
+MD5sum: 4043f176ab2b40b0c01bc1211b8c103c
+Maintainer: Colin Watson <cjwatson@debian.org>
+Priority: extra
+SHA1: b9396fdd2e3e8d1d4ba9e74e7346075852d85666
+SHA256: f17decaa28d1db3eeb9eb17bebe50d437d293a509bcdd7cdfd3ebb56f5de3cea
+Section: oldlibs
+Size: 44168
+"
+
+cat >aptarchive/Packages <<EOF
+$pkglibc6
+$pkglibdb1
+EOF
+
+setupaptarchive
+
+testnopackage libc6:i386
+testsuccessequal "$pkglibc6" aptcache show libc6:armel
+testsuccessequal "$pkglibc6" aptcache show libc6
+testsuccessequal "$pkglibdb1" aptcache show libdb1:i386
+testnopackage libdb1:armel
+testsuccessequal "$pkglibdb1" aptcache show libdb1
diff --git a/test/integration/test-bug-590438-broken-provides-thanks-to-remove-order b/test/integration/test-bug-590438-broken-provides-thanks-to-remove-order
new file mode 100755
index 000000000..76107520e
--- /dev/null
+++ b/test/integration/test-bug-590438-broken-provides-thanks-to-remove-order
@@ -0,0 +1,96 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+pkgbasefile="Package: base-files
+Status: install ok installed
+Essential: yes
+Priority: required
+Section: admin
+Installed-Size: 472
+Maintainer: Santiago Vila <sanvila@debian.org>
+Architecture: i386
+Version: 5.8
+Replaces: base, dpkg (<= 1.15.0), miscutils
+Provides: base
+Filename: pool/main/b/base-files/base-files_5.8_i386.deb
+Size: 73986
+MD5sum: 8489687ce10e656babd467c9ee389349
+Description-de: Verschiedene Dateien für das Basis-System von Debian"
+
+predependsgawk() {
+ cp "$TESTDIR/$(echo "$(basename "$0")" | sed 's/test-/status-/')" rootdir/var/lib/dpkg/status
+ echo "$pkgbasefile
+Pre-Depends: $1
+" >> rootdir/var/lib/dpkg/status
+ testsuccessequal "Inst gawk (1:3.1.7.dfsg-5 localhost [i386])
+Conf gawk (1:3.1.7.dfsg-5 localhost [i386])
+Remv mawk [1.3.3-15]" aptget install gawk mawk- -sqq -o PreDepends=$(echo "$1" | sed 's/ //g')
+}
+
+predependsgawk "gawk | mawk"
+predependsgawk "mawk | gawk"
+
+predependsgawk "aawk | mawk | gawk"
+predependsgawk "aawk | gawk | mawk"
+
+predependsgawk "gawk | awk"
+predependsgawk "aawk | gawk | awk"
+
+predependsgawk "mawk | awk"
+
+predependsgawk "awk | gawk"
+predependsgawk "awk | gawk | aawk"
+
+predependsgawk "awk | mawk"
+
+predependsgawk "aawk | awk"
+predependsgawk "awk | aawk"
+
+predependsgawk "awk"
+
+predependsgawk2() {
+ cp "$TESTDIR/$(echo "$(basename "$0")" | sed 's/test-/status-/')" rootdir/var/lib/dpkg/status
+ echo "$pkgbasefile
+Pre-Depends: $1
+" >> rootdir/var/lib/dpkg/status
+ testequalor2 "Inst coolstuff (1-1 localhost [all])
+Conf coolstuff (1-1 localhost [all])
+Inst gawk2 (1:3.1.7.dfsg-5 localhost [i386])
+Conf gawk2 (1:3.1.7.dfsg-5 localhost [i386])
+Remv mawk [1.3.3-15]" "Inst coolstuff (1-1 localhost [all])
+Inst gawk2 (1:3.1.7.dfsg-5 localhost [i386])
+Conf coolstuff (1-1 localhost [all])
+Conf gawk2 (1:3.1.7.dfsg-5 localhost [i386])
+Remv mawk [1.3.3-15]" aptget install gawk2 mawk- -sqq -o PreDepends=$(echo "$1" | sed 's/ //g')
+}
+
+predependsgawk2 "gawk2 | mawk"
+predependsgawk2 "mawk | gawk2"
+
+predependsgawk2 "aawk | mawk | gawk2"
+predependsgawk2 "aawk | gawk2 | mawk"
+
+predependsgawk2 "gawk2 | awk"
+predependsgawk2 "aawk | gawk2 | awk"
+
+predependsgawk2 "mawk | awk"
+
+predependsgawk2 "awk | gawk2"
+predependsgawk2 "awk | gawk2 | aawk"
+
+predependsgawk2 "awk | mawk"
+
+predependsgawk2 "aawk | awk"
+predependsgawk2 "awk | aawk"
+
+predependsgawk2 "awk"
+
+
+# aptget install gawk2 mawk- -s #-o Debug::pkgOrderList=1 #-o Debug::pkgPackageManager=1
diff --git a/test/integration/test-bug-591882-conkeror b/test/integration/test-bug-591882-conkeror
new file mode 100755
index 000000000..6b903431a
--- /dev/null
+++ b/test/integration/test-bug-591882-conkeror
@@ -0,0 +1,77 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+UPGRADEFAIL="Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ conkeror libdatrie0 libkrb53 libxcb-xlib0 xulrunner-1.9
+The following NEW packages will be installed:
+ gcc-4.4-base libavahi-client3 libavahi-common-data libavahi-common3 libc-bin
+ libdatrie1 libdb4.7 libdb4.8 libdbus-1-3 libgssapi-krb5-2 libjasper1
+ libk5crypto3 libkrb5-3 libkrb5support0 liblzma2 libpam-modules libpam0g
+ libuuid1 libxcb-atom1 libxcb-aux0 libxcb-event1 libxml2 passwd
+ sensible-utils shared-mime-info xz-utils
+The following packages will be upgraded:
+ coreutils debconf debconf-i18n debianutils defoma dpkg file fontconfig
+ fontconfig-config libacl1 libatk1.0-0 libattr1 libbz2-1.0 libc6 libcairo2
+ libcomerr2 libcups2 libexpat1 libfontconfig1 libfreetype6 libgcc1
+ libgcrypt11 libgdbm3 libglib2.0-0 libgnutls26 libgpg-error0 libgtk2.0-0
+ libgtk2.0-common libhunspell-1.2-0 libice6 libjpeg62 libkeyutils1
+ liblocale-gettext-perl libmagic1 libncurses5 libnewt0.52 libnspr4-0d
+ libnss3-1d libpango1.0-0 libpango1.0-common libpcre3 libpixman-1-0
+ libpng12-0 libpopt0 libselinux1 libslang2 libsm6 libsqlite3-0
+ libstartup-notification0 libstdc++6 libtasn1-3 libtext-charwidth-perl
+ libtext-iconv-perl libtext-wrapi18n-perl libthai-data libthai0 libtiff4
+ libx11-6 libx11-data libxau6 libxcb-render-util0 libxcb-render0 libxcb1
+ libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxft2
+ libxi6 libxinerama1 libxrandr2 libxrender1 libxt6 lsb-base ncurses-bin perl
+ perl-base perl-modules readline-common sed ttf-dejavu-core ucf whiptail
+ x11-common zlib1g
+87 upgraded, 26 newly installed, 5 to remove and 0 not upgraded.
+Need to get 0 B/54.4 MB of archives.
+After this operation, 12.4 MB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation."
+
+UPGRADESUCCESS="Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ libdatrie0 libkrb53 libxcb-xlib0 xulrunner-1.9
+The following NEW packages will be installed:
+ gcc-4.4-base libasound2 libavahi-client3 libavahi-common-data
+ libavahi-common3 libc-bin libdatrie1 libdb4.7 libdb4.8 libdbus-1-3
+ libgssapi-krb5-2 libjasper1 libk5crypto3 libkrb5-3 libkrb5support0 liblzma2
+ libmozjs2d libpam-modules libpam0g libreadline6 libuuid1 libxcb-atom1
+ libxcb-aux0 libxcb-event1 libxml2 passwd sensible-utils shared-mime-info
+ xulrunner-1.9.1 xz-utils
+The following packages will be upgraded:
+ conkeror coreutils debconf debconf-i18n debianutils defoma dpkg file
+ fontconfig fontconfig-config libacl1 libatk1.0-0 libattr1 libbz2-1.0 libc6
+ libcairo2 libcomerr2 libcups2 libexpat1 libfontconfig1 libfreetype6 libgcc1
+ libgcrypt11 libgdbm3 libglib2.0-0 libgnutls26 libgpg-error0 libgtk2.0-0
+ libgtk2.0-common libhunspell-1.2-0 libice6 libjpeg62 libkeyutils1
+ liblocale-gettext-perl libmagic1 libncurses5 libnewt0.52 libnspr4-0d
+ libnss3-1d libpango1.0-0 libpango1.0-common libpcre3 libpixman-1-0
+ libpng12-0 libpopt0 libselinux1 libslang2 libsm6 libsqlite3-0
+ libstartup-notification0 libstdc++6 libtasn1-3 libtext-charwidth-perl
+ libtext-iconv-perl libtext-wrapi18n-perl libthai-data libthai0 libtiff4
+ libx11-6 libx11-data libxau6 libxcb-render-util0 libxcb-render0 libxcb1
+ libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxft2
+ libxi6 libxinerama1 libxrandr2 libxrender1 libxt6 lsb-base ncurses-bin perl
+ perl-base perl-modules readline-common sed ttf-dejavu-core ucf whiptail
+ x11-common zlib1g
+88 upgraded, 30 newly installed, 4 to remove and 0 not upgraded.
+Need to get 0 B/62.9 MB of archives.
+After this operation, 36.0 MB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation."
+
+# Test that the old behavior can be restored with the option
+testfailureequal "$UPGRADEFAIL" aptget dist-upgrade --trivial-only -o pkgProblemResolver::FixByInstall=0
+testfailureequal "$UPGRADESUCCESS" aptget dist-upgrade --trivial-only #-o pkgProblemResolver::FixByInstall=0
diff --git a/test/integration/test-bug-593360-modifiers-in-names b/test/integration/test-bug-593360-modifiers-in-names
new file mode 100755
index 000000000..dc9a15231
--- /dev/null
+++ b/test/integration/test-bug-593360-modifiers-in-names
@@ -0,0 +1,69 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ g++
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst g++ (4:4.4.5-1 localhost [i386])
+Conf g++ (4:4.4.5-1 localhost [i386])' aptget install g++ -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'g++' is not installed, so not removed
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove g++ -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ g++
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst g++ (4:4.4.5-1 localhost [i386])
+Conf g++ (4:4.4.5-1 localhost [i386])' aptget install g+++ -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ g++
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst g++ (4:4.4.5-1 localhost [i386])
+Conf g++ (4:4.4.5-1 localhost [i386])' aptget purge g+++ -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ apt
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst apt (0.8.8 localhost [all])
+Conf apt (0.8.8 localhost [all])' aptget install apt -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ apt+
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst apt+ (0.8.8 localhost [all])
+Conf apt+ (0.8.8 localhost [all])' aptget install apt+ -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ apt+
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst apt+ (0.8.8 localhost [all])
+Conf apt+ (0.8.8 localhost [all])' aptget install apt++ -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ apt+
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst apt+ (0.8.8 localhost [all])
+Conf apt+ (0.8.8 localhost [all])' aptget purge apt++ -s
diff --git a/test/integration/test-bug-595691-empty-and-broken-archive-files b/test/integration/test-bug-595691-empty-and-broken-archive-files
new file mode 100755
index 000000000..d71bd2ce5
--- /dev/null
+++ b/test/integration/test-bug-595691-empty-and-broken-archive-files
@@ -0,0 +1,64 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+buildaptarchive
+touch aptarchive/Packages
+setupflataptarchive
+
+failureupdate() {
+ rm -rf rootdir/var/lib/apt
+ testfailure aptget update --allow-insecure-repositories
+ testsuccess grep "^E: Failed to fetch store:${1} Empty files can't be valid archives$" rootdir/tmp/testfailure.output
+}
+successupdate() {
+ rm -rf rootdir/var/lib/apt
+ testwarning aptget update --allow-insecure-repositories
+}
+
+createemptyarchive() {
+ find aptarchive/ \( -name "Packages*" -o -name "en*" \) -type f -delete
+ touch aptarchive/Packages
+ echo -n "" | $COMPRESSOR_CMD > aptarchive/${1}.$COMPRESS
+ find aptarchive -name '*Release*' -delete
+ rm -f aptarchive/Packages
+}
+
+createemptyfile() {
+ find aptarchive/ \( -name "Packages*" -o -name "en*" \) -type f -delete
+ touch aptarchive/Packages aptarchive/${1}.$COMPRESS
+ find aptarchive -name '*Release*' -delete
+ rm -f aptarchive/Packages
+}
+
+testoverfile() {
+ local APTARCHIVE="$(readlink -f ./aptarchive)"
+ forcecompressor "$1"
+
+ msgmsg 'archive over file' "Packages.$COMPRESS"
+ createemptyarchive 'Packages'
+ successupdate
+ createemptyfile 'Packages'
+ failureupdate "$(readlink -f rootdir/var/lib/apt/lists/partial/$(echo "$APTARCHIVE" | sed -e 's#/#_#g')_Packages.${COMPRESS})"
+}
+
+testoverhttp() {
+ forcecompressor "$1"
+
+ msgmsg 'archive over http' "Packages.$COMPRESS"
+ createemptyarchive 'Packages'
+ successupdate
+ createemptyfile 'Packages'
+ failureupdate "$(readlink -f rootdir/var/lib/apt/lists/partial/localhost:${APTHTTPPORT}_Packages.${COMPRESS})"
+}
+
+forallsupportedcompressors testoverfile
+
+# do the same again with http instead of file
+changetowebserver
+
+forallsupportedcompressors testoverhttp
diff --git a/test/integration/test-bug-596498-trusted-unsigned-repo b/test/integration/test-bug-596498-trusted-unsigned-repo
new file mode 100755
index 000000000..4d0e3dc89
--- /dev/null
+++ b/test/integration/test-bug-596498-trusted-unsigned-repo
@@ -0,0 +1,75 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+buildsimplenativepackage 'cool' 'i386' '1.0' 'unstable'
+
+msgmsg 'default setup'
+setupaptarchive
+
+aptgetupdate() {
+ rm -rf rootdir/var/lib/apt/ rootdir/var/cache/apt/*.bin
+ ${1:-testwarning} aptget update --allow-insecure-repositories
+}
+
+PKGTEXT="$(aptget install cool --assume-no -d | head -n 8)"
+DOWNLOG="$(echo "$PKGTEXT" | tail -n 1)"
+PKGTEXT="$(echo "$PKGTEXT" | head -n 7)"
+DEBFILE='rootdir/etc/apt/sources.list.d/apt-test-unstable-*.list'
+
+testsuccessequal "$PKGTEXT
+$DOWNLOG
+Download complete and in download only mode" aptget install cool --assume-no -d
+
+testsuccessequal "$PKGTEXT
+$DOWNLOG
+Download complete and in download only mode" aptget install cool --assume-no -d --allow-unauthenticated
+
+msgmsg 'sources marked trusted=no'
+sed -i -e 's#\(deb\(-src\)\?\) #\1 [trusted=no] #' $DEBFILE
+aptgetupdate 'testsuccess'
+
+testfailureequal "$PKGTEXT
+WARNING: The following packages cannot be authenticated!
+ cool
+Install these packages without verification? [y/N] N
+E: Some packages could not be authenticated" aptget install cool --assume-no -d
+
+configarchitecture 'amd64' 'i386'
+testequal "$(echo "$PKGTEXT" | sed 's#cool$#cool:i386#g')
+WARNING: The following packages cannot be authenticated!
+ cool:i386
+Authentication warning overridden.
+$DOWNLOG
+Download complete and in download only mode" aptget install cool:i386 --assume-no -d --allow-unauthenticated
+configarchitecture 'i386'
+
+find aptarchive/ \( -name 'Release.gpg' -o -name 'InRelease' \) -delete
+msgmsg 'unsigned repo'
+sed -i -e 's#\(deb\(-src\)\?\) \[trusted=no\] #\1 #' $DEBFILE
+aptgetupdate
+
+testfailureequal "$PKGTEXT
+WARNING: The following packages cannot be authenticated!
+ cool
+Install these packages without verification? [y/N] N
+E: Some packages could not be authenticated" aptget install cool --assume-no -d
+
+testsuccessequal "$PKGTEXT
+WARNING: The following packages cannot be authenticated!
+ cool
+Authentication warning overridden.
+$DOWNLOG
+Download complete and in download only mode" aptget install cool --assume-no -d --allow-unauthenticated
+
+msgmsg 'sources marked trusted=yes'
+sed -i -e 's#\(deb\(-src\)\?\) #\1 [trusted=yes] #' $DEBFILE
+aptgetupdate 'testsuccess'
+
+testsuccessequal "$PKGTEXT
+$DOWNLOG
+Download complete and in download only mode" aptget install cool --assume-no -d
diff --git a/test/integration/test-bug-598669-install-postfix-gets-exim-heavy b/test/integration/test-bug-598669-install-postfix-gets-exim-heavy
new file mode 100755
index 000000000..e7e409391
--- /dev/null
+++ b/test/integration/test-bug-598669-install-postfix-gets-exim-heavy
@@ -0,0 +1,19 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ exim4 exim4-daemon-light
+The following NEW packages will be installed:
+ postfix
+0 upgraded, 1 newly installed, 2 to remove and 0 not upgraded.
+Need to get 0 B/1326 kB of archives.
+After this operation, 2236 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install postfix --trivial-only
diff --git a/test/integration/test-bug-601961-install-info b/test/integration/test-bug-601961-install-info
new file mode 100755
index 000000000..10944384a
--- /dev/null
+++ b/test/integration/test-bug-601961-install-info
@@ -0,0 +1,38 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ findutils
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ findutils
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+After this operation, 1745 kB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation.' aptget remove findutils --trivial-only
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ install-info
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+After this operation, 262 kB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation.' aptget remove install-info --trivial-only
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ essentialpkg findutils
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ findutils essentialpkg (due to findutils)
+0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
+After this operation, 2007 kB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation.' aptget remove essentialpkg --trivial-only
diff --git a/test/integration/test-bug-602412-dequote-redirect b/test/integration/test-bug-602412-dequote-redirect
new file mode 100755
index 000000000..9c6aa3945
--- /dev/null
+++ b/test/integration/test-bug-602412-dequote-redirect
@@ -0,0 +1,64 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'unrelated' 'all' '0.5~squeeze1' 'unstable'
+buildsimplenativepackage 'unrelated2' 'all' '0.5~squeeze1' 'unstable'
+insertinstalledpackage 'unrelated2' 'all' '0.1'
+
+setupaptarchive --no-update
+changetowebserver -o aptwebserver::redirect::replace::/pool/=/newpool/ \
+ -o aptwebserver::redirect::replace::/dists/=/newdists/
+
+mv aptarchive/pool aptarchive/newpool
+mv aptarchive/dists aptarchive/newdists
+
+testrun() {
+ msgmsg "Test $1 redirection works in method boundaries" "$2"
+ msgtest 'Test redirection works in' 'apt-get update'
+ testsuccess --nomsg aptget update
+
+ # check that I-M-S header is kept in redirections
+ testsuccessequal "Hit:1 $2 unstable InRelease
+Reading package lists..." aptget update
+
+ msgtest 'Test redirection works in' 'package download'
+ testsuccess --nomsg aptget install unrelated --download-only -y
+}
+
+for CODE in 301 302 307; do
+ webserverconfig 'aptwebserver::redirect::httpcode' "$CODE"
+ rm -f aptarchive/webserver.log.client*.log
+ testrun "$CODE" "http://localhost:${APTHTTPPORT}"
+ testsuccess grep "^HTTP/1.1 $CODE " aptarchive/webserver.log.client*.log
+ rm -rf rootdir/var/lib/apt/lists rootdir/var/cache/apt/archives
+done
+
+changetohttpswebserver
+
+for CODE in 301 302 307; do
+ webserverconfig 'aptwebserver::redirect::httpcode' "$CODE"
+ rm -f aptarchive/webserver.log.client*.log
+ testrun "$CODE" "https://localhost:${APTHTTPSPORT}"
+ testsuccess grep "^HTTP/1.1 $CODE " aptarchive/webserver.log.client*.log
+ rm -rf rootdir/var/lib/apt/lists rootdir/var/cache/apt/archives
+done
+
+testsuccess apt update
+testsuccess aptget install unrelated --download-only
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ unrelated
+The following packages have been kept back:
+ unrelated2
+0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst unrelated (0.5~squeeze1 unstable [all])
+Conf unrelated (0.5~squeeze1 unstable [all])' aptget dist-upgrade unrelated --no-download --fix-missing -s
+testsuccess aptget dist-upgrade unrelated --no-download --fix-missing -y
+testdpkginstalled unrelated
diff --git a/test/integration/test-bug-604222-new-and-autoremove b/test/integration/test-bug-604222-new-and-autoremove
new file mode 100755
index 000000000..b8faf4fe6
--- /dev/null
+++ b/test/integration/test-bug-604222-new-and-autoremove
@@ -0,0 +1,121 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'stable' 'dummy-archive' 'i386' '0.invalid.0' 'Depends: libavcodec52, libvtk5-dev | libopenal-dev'
+insertpackage 'stable' 'libavcodec52' 'i386' '4:0.5.2-6' 'Conflicts: libvtk5-dev'
+insertpackage 'stable' 'libopenal-dev' 'i386' '1:1.12.854-2'
+insertpackage 'stable' 'libvtk5-dev' 'i386' '5.4.2-8' 'Depends: libvtk5.4 (= 5.4.2-8)'
+insertpackage 'stable' 'libvtk5.4' 'i386' '5.4.2-8' 'Depends: libavcodec52 (>= 4:0.5.1-1)'
+
+insertpackage 'stable' 'gwenview' 'i386' '4:16.08.0-1' 'Depends: libkf5kipi-bin, libkf5kipi-data'
+insertpackage 'stable' 'libkf5kipi-bin' 'i386' '4:16.08.0-1'
+insertpackage 'stable' 'libkf5kipi-data' 'i386' '4:16.08.0-1' 'Breaks: libkipi-data'
+insertpackage 'stable' 'libkipi-data' 'i386' '4:15.08.0-1' '' 'important'
+
+setupaptarchive
+
+cp -a rootdir/var/lib/dpkg/status rootdir/var/lib/dpkg/status.backup
+insertinstalledpackage 'libvtk5.4' 'i386' '5.4.2-7'
+testsuccess aptmark markauto 'libvtk5.4'
+testmarkedauto 'libvtk5.4'
+
+AUTOREMOVE='apt autoremove'
+if [ -n "$SUDO_USER" ]; then
+ AUTOREMOVE="sudo $AUTOREMOVE"
+fi
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following package was automatically installed and is no longer required:
+ libvtk5.4
+Use '$AUTOREMOVE' to remove it.
+The following NEW packages will be installed:
+ libavcodec52
+0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst libavcodec52 (4:0.5.2-6 stable [i386])
+Conf libavcodec52 (4:0.5.2-6 stable [i386])" aptget install libavcodec52 -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+1 package was automatically installed and is no longer required.
+Use '$AUTOREMOVE' to remove it.
+The following NEW packages will be installed:
+ libavcodec52
+0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst libavcodec52 (4:0.5.2-6 stable [i386])
+Conf libavcodec52 (4:0.5.2-6 stable [i386])" aptget install libavcodec52 -s -o APT::Get::HideAutoRemove=small
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following package was automatically installed and is no longer required:
+ libvtk5.4
+Use '$AUTOREMOVE' to remove it.
+The following additional packages will be installed:
+ libavcodec52 libopenal-dev libvtk5.4
+The following NEW packages will be installed:
+ dummy-archive libavcodec52 libopenal-dev
+The following packages will be upgraded:
+ libvtk5.4
+1 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 129 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install dummy-archive --trivial-only
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+1 package was automatically installed and is no longer required.
+Use '$AUTOREMOVE' to remove it.
+The following additional packages will be installed:
+ libavcodec52 libopenal-dev libvtk5.4
+The following NEW packages will be installed:
+ dummy-archive libavcodec52 libopenal-dev
+The following packages will be upgraded:
+ libvtk5.4
+1 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 129 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install dummy-archive --trivial-only -o APT::Get::HideAutoRemove=small
+
+cp rootdir/var/lib/dpkg/status.backup rootdir/var/lib/dpkg/status
+rm -f rootdir/var/lib/apt/extended_states
+
+CONFLICTING='Reading package lists...
+Building dependency tree...
+ MarkInstall dummy-archive:i386 < none -> 0.invalid.0 @un puN Ib > FU=1
+ MarkInstall libavcodec52:i386 < none -> 4:0.5.2-6 @un uN > FU=0
+ MarkInstall libvtk5-dev:i386 < none -> 5.4.2-8 @un uN Ib > FU=0
+ MarkInstall libvtk5.4:i386 < none -> 5.4.2-8 @un uN > FU=0
+ MarkKeep libvtk5-dev:i386 < none -> 5.4.2-8 @un uN > FU=0
+ MarkKeep libvtk5-dev:i386 < none -> 5.4.2-8 @un uN > FU=0
+ MarkDelete libvtk5.4:i386 < none -> 5.4.2-8 @un ugN > FU=0
+The following additional packages will be installed:
+ libavcodec52 libopenal-dev
+The following NEW packages will be installed:
+ dummy-archive libavcodec52 libopenal-dev
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 129 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.'
+
+testfailureequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=0
+testfailureequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=1
+testfailureequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=small
+
+insertinstalledpackage 'my-metapackage' 'i386' '1' 'Depends: gwenview'
+insertinstalledpackage 'gwenview' 'i386' '4:15.08.0-1' 'Depends: libkipi-data
+Recommends: foobar' # trigger policy brokenness to avoid optimisation
+insertinstalledpackage 'libkipi-data' 'i386' '4:15.08.0-1' '' 'important'
+testsuccess aptmark markauto 'gwenview'
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Calculating upgrade...
+The following packages have been kept back:
+ gwenview
+0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded." apt dist-upgrade -s
diff --git a/test/integration/test-bug-604401-files-are-directories b/test/integration/test-bug-604401-files-are-directories
new file mode 100755
index 000000000..4261d544d
--- /dev/null
+++ b/test/integration/test-bug-604401-files-are-directories
@@ -0,0 +1,67 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+test ! -e rootdir/etc/apt/apt.conf || mv rootdir/etc/apt/apt.conf rootdir/etc/apt/apt.conf.d/000move-away-apt.conf
+
+msgtest "Directory instead of a file as apt.conf ignored"
+mkdir -p rootdir/etc/apt/apt.conf
+testsuccess --nomsg aptconfig dump
+rmdir rootdir/etc/apt/apt.conf
+
+msgtest "Good link instead of a file as apt.conf ignored"
+echo 'Test::APT::Link "good";' > rootdir/etc/apt/good-link.conf
+ln -s rootdir/etc/apt/good-link.conf rootdir/etc/apt/apt.conf
+testempty aptconfig shell TestLink 'Test::APT::Link'
+rm rootdir/etc/apt/apt.conf
+
+msgtest "Broken link instead of a file as apt.conf ignored"
+ln -s /tmp/doesnt-exist rootdir/etc/apt/apt.conf
+testsuccess --nomsg aptconfig dump
+rm rootdir/etc/apt/apt.conf
+
+
+test ! -e rootdir/etc/apt/sources.list || mv rootdir/etc/apt/sources.list rootdir/etc/apt/sources.list.d/000move-away-sources.list
+
+msgtest "Directory instead of a file as sources.list ignored"
+mkdir -p rootdir/etc/apt/sources.list
+testsuccess --nomsg aptget update --print-uris
+rmdir rootdir/etc/apt/sources.list
+
+msgtest "Good link instead of a file as sources.list ignored"
+echo 'deb file:///tmp/debian sid main' > rootdir/etc/apt/good-link.list
+ln -s rootdir/etc/apt/good-link.list rootdir/etc/apt/sources.list
+testempty aptget update --print-uris
+rm rootdir/etc/apt/sources.list
+
+msgtest "Broken link instead of a file as sources.list ignored"
+ln -s /tmp/doesnt-exist rootdir/etc/apt/sources.list
+testempty aptget update --print-uris
+rm rootdir/etc/apt/sources.list
+
+
+test ! -e rootdir/etc/apt/preferences || mv rootdir/etc/apt/preferences rootdir/etc/apt/preferences.d/000move-away-preferences
+
+msgtest "Directory instead of a file as preferences ignored"
+mkdir -p rootdir/etc/apt/preferences
+testsuccess --nomsg aptcache policy
+rmdir rootdir/etc/apt/preferences
+
+msgtest "Good link instead of a file as preferences ignored"
+echo 'Package: apt
+Pin: release a=now
+Pin-Value: 1000' > rootdir/etc/apt/good-link.pref
+ln -s rootdir/etc/apt/good-link.pref rootdir/etc/apt/preferences
+testsuccess aptcache policy
+testfailure grep '1000 ' rootdir/tmp/testsucess.output
+rm rootdir/etc/apt/preferences
+
+msgtest "Broken link instead of a file as preferences ignored"
+ln -s /tmp/doesnt-exist rootdir/etc/apt/preferences
+testsuccess --nomsg aptcache policy
+rm rootdir/etc/apt/preferences
diff --git a/test/integration/test-bug-605394-versioned-or-groups b/test/integration/test-bug-605394-versioned-or-groups
new file mode 100755
index 000000000..43f35f79b
--- /dev/null
+++ b/test/integration/test-bug-605394-versioned-or-groups
@@ -0,0 +1,30 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ php5 php5-cgi
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/5715 kB of archives.
+After this operation, 0 B of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget dist-upgrade --trivial-only
+
+msgtest "Solution process doesn't involve" 'apache2-mpm-prefork'
+
+if aptget dist-upgrade --trivial-only -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 2>&1 | grep apache2-mpm-prefork > /dev/null; then
+ msgfail
+else
+ msgpass
+fi
+
+# the Packages file includes only MD5
+testfailure aptget dist-upgrade -y
+testsuccess grep 'Insufficient information available to perform this download securely' rootdir/tmp/testfailure.output
diff --git a/test/integration/test-bug-611729-mark-as-manual b/test/integration/test-bug-611729-mark-as-manual
new file mode 100755
index 000000000..97ef846e3
--- /dev/null
+++ b/test/integration/test-bug-611729-mark-as-manual
@@ -0,0 +1,96 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+buildsimplenativepackage "peace-dpkg" "all" "1.0" "stable"
+
+buildsimplenativepackage "a" "all" "1.0" "stable" "Depends: b"
+buildsimplenativepackage "b" "all" "1.0" "stable"
+buildsimplenativepackage "c" "all" "1.0" "stable" "Depends: b"
+
+setupaptarchive
+
+# dpkg freaks out if the last package is removed so keep one around
+testsuccess aptget install peace-dpkg -y
+testdpkginstalled peace-dpkg
+testmarkedauto
+
+testsuccess aptget install a -y
+testdpkginstalled a b
+testdpkgnotinstalled c
+testmarkedauto 'b'
+
+testsuccess aptget remove a -y
+testdpkgnotinstalled a c
+testdpkginstalled b
+testmarkedauto 'b'
+
+testsuccess aptget install c -y
+testdpkgnotinstalled a
+testdpkginstalled b c
+testmarkedauto 'b'
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+b is already the newest version (1.0).
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget install b --only-upgrade
+testmarkedauto 'b'
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+b is already the newest version (1.0).
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget install b -d
+testmarkedauto 'b'
+
+rm rootdir/var/log/apt/history.log
+
+testsuccess aptget install b --reinstall -y
+testdpkgnotinstalled a
+testdpkginstalled b c
+testmarkedauto 'b'
+
+sed -i rootdir/var/log/apt/history.log -e '/^Commandline: / d' -e '/^Start-Date: / d' -e '/^End-Date: / d'
+if [ -n "$SUDO_USER" ]; then
+ testfileequal 'rootdir/var/log/apt/history.log' "
+Requested-By: $SUDO_USER ($(id -u "$SUDO_USER"))
+Reinstall: b:i386 (1.0)"
+else
+ testfileequal 'rootdir/var/log/apt/history.log' '
+Reinstall: b:i386 (1.0)'
+fi
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+b is already the newest version (1.0).
+b set to manually installed.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget install b
+testmarkedauto
+
+testsuccess aptget remove b -y
+testdpkgnotinstalled a b c
+testmarkedauto
+
+testsuccess aptget install a b -y
+testdpkginstalled a b
+testdpkgnotinstalled c
+testmarkedauto
+
+testsuccess aptget purge a b -y
+testdpkgnotinstalled a b c
+testmarkedauto
+
+testsuccess aptget install b c -y
+testdpkgnotinstalled a
+testdpkginstalled b c
+testmarkedauto
+
+testsuccess aptget install a -y
+testdpkginstalled a b c
+testmarkedauto
diff --git a/test/integration/test-bug-612099-multiarch-conflicts b/test/integration/test-bug-612099-multiarch-conflicts
new file mode 100755
index 000000000..bc573951d
--- /dev/null
+++ b/test/integration/test-bug-612099-multiarch-conflicts
@@ -0,0 +1,225 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386' 'amd64'
+
+buildsimplenativepackage 'libc6' 'i386' '1.0' 'stable'
+buildsimplenativepackage 'libc6' 'amd64' '1.0' 'stable'
+buildsimplenativepackage 'libc6' 'all' '2.0' 'testing'
+
+buildsimplenativepackage 'foobar' 'i386' '1.0' 'stable' 'Depends: libc6'
+buildsimplenativepackage 'foobar' 'amd64' '1.0' 'stable' 'Depends: libc6'
+
+setupaptarchive
+
+testsuccess aptget install libc6:i386 -t stable -y
+testdpkginstalled libc6:i386
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ libc6
+The following NEW packages will be installed:
+ libc6:amd64
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv libc6 [1.0]
+Inst libc6:amd64 (1.0 stable [amd64])
+Conf libc6:amd64 (1.0 stable [amd64])' aptget install libc6:amd64 -s -t stable
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following NEW packages will be installed:
+ foobar
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foobar (1.0 stable [i386])
+Conf foobar (1.0 stable [i386])' aptget install foobar -st stable
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following additional packages will be installed:
+ libc6:amd64
+The following packages will be REMOVED:
+ libc6
+The following NEW packages will be installed:
+ foobar:amd64 libc6:amd64
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv libc6 [1.0]
+Inst libc6:amd64 (1.0 stable [amd64])
+Inst foobar:amd64 (1.0 stable [amd64])
+Conf libc6:amd64 (1.0 stable [amd64])
+Conf foobar:amd64 (1.0 stable [amd64])' aptget install foobar:amd64 -st stable
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Selected version '1.0' (stable [i386]) for 'foobar'
+The following NEW packages will be installed:
+ foobar
+The following packages will be upgraded:
+ libc6
+1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6 [1.0] (2.0 testing [all])
+Inst foobar (1.0 stable [i386])
+Conf libc6 (2.0 testing [all])
+Conf foobar (1.0 stable [i386])" aptget install foobar/stable libc6 -st testing
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+Calculating upgrade...
+The following packages will be upgraded:
+ libc6
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6 [1.0] (2.0 testing [all])
+Conf libc6 (2.0 testing [all])' aptget upgrade -t testing -s
+# FIXME: on amd64 systems this test wouldn't run with a real upgrade
+# as APT (here i386) disagree about the native architecture, so
+# we fake it here:
+#aptget upgrade -y -qq >/dev/null 2>&1
+testsuccess aptget purge libc6 -y
+testsuccess aptget install libc6:i386 -y
+testdpkginstalled libc6:all
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Selected version '1.0' (stable [i386]) for 'foobar'
+The following NEW packages will be installed:
+ foobar
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foobar (1.0 stable [i386])
+Conf foobar (1.0 stable [i386])" aptget install foobar/stable -st testing
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Selected version '1.0' (stable [amd64]) for 'foobar:amd64'
+The following additional packages will be installed:
+ libc6:amd64
+The following packages will be REMOVED:
+ libc6
+The following NEW packages will be installed:
+ foobar:amd64 libc6:amd64
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv libc6 [2.0]
+Inst libc6:amd64 (1.0 stable [amd64])
+Inst foobar:amd64 (1.0 stable [amd64])
+Conf libc6:amd64 (1.0 stable [amd64])
+Conf foobar:amd64 (1.0 stable [amd64])" aptget install foobar:amd64/stable -st testing
+
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Selected version '1.0' (stable [i386]) for 'libc6'
+The following packages will be DOWNGRADED:
+ libc6
+0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 0 not upgraded.
+Inst libc6 [2.0] (1.0 stable [i386])
+Conf libc6 (1.0 stable [i386])" aptget install libc6/stable -s
+
+
+buildsimplenativepackage 'libc6-same' 'i386' '1.0' 'stable' 'Multi-Arch: same'
+buildsimplenativepackage 'libc6-same' 'amd64' '1.0' 'stable' 'Multi-Arch: same'
+buildsimplenativepackage 'libc6-same' 'all' '2.0' 'testing'
+
+buildsimplenativepackage 'foobar-same' 'i386' '1.0' 'stable' 'Depends: libc6-same'
+buildsimplenativepackage 'foobar-same' 'amd64' '1.0' 'stable' 'Depends: libc6-same'
+
+setupaptarchive
+
+testsuccess aptget install libc6-same:i386 -t stable -y
+testdpkginstalled libc6-same:i386
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following NEW packages will be installed:
+ foobar-same
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foobar-same (1.0 stable [i386])
+Conf foobar-same (1.0 stable [i386])' aptget install foobar-same -st stable
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following additional packages will be installed:
+ libc6-same:amd64
+The following NEW packages will be installed:
+ foobar-same:amd64 libc6-same:amd64
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6-same:amd64 (1.0 stable [amd64])
+Inst foobar-same:amd64 (1.0 stable [amd64])
+Conf libc6-same:amd64 (1.0 stable [amd64])
+Conf foobar-same:amd64 (1.0 stable [amd64])' aptget install foobar-same:amd64 -st stable
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following NEW packages will be installed:
+ libc6-same:amd64
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6-same:amd64 (1.0 stable [amd64])
+Conf libc6-same:amd64 (1.0 stable [amd64])' aptget install libc6-same:amd64 -s -t stable
+
+# FIXME: We should test installing libc6-same:amd64 here, but dpkg doesn't allow it currently
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+Calculating upgrade...
+The following packages will be upgraded:
+ libc6-same
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6-same [1.0] (2.0 testing [all])
+Conf libc6-same (2.0 testing [all])' aptget upgrade -t testing -s
+# FIXME: on amd64 systems this test wouldn't run with a real upgrade
+# as APT (here i386) disagree about the native architecture, so
+# we fake it here:
+#aptget upgrade -y -qq >/dev/null 2>&1
+testsuccess aptget purge libc6-same -y
+testsuccess aptget install libc6-same:i386 -y
+testdpkginstalled libc6-same:all
+
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Selected version '1.0' (stable [i386]) for 'libc6-same'
+The following packages will be DOWNGRADED:
+ libc6-same
+0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 0 not upgraded.
+Inst libc6-same [2.0] (1.0 stable [i386])
+Conf libc6-same (1.0 stable [i386])" aptget install libc6-same/stable -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Selected version '1.0' (stable [i386]) for 'foobar-same'
+The following NEW packages will be installed:
+ foobar-same
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foobar-same (1.0 stable [i386])
+Conf foobar-same (1.0 stable [i386])" aptget install foobar-same/stable -st testing
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Selected version '1.0' (stable [amd64]) for 'foobar-same:amd64'
+The following additional packages will be installed:
+ libc6-same:amd64
+The following packages will be REMOVED:
+ libc6-same
+The following NEW packages will be installed:
+ foobar-same:amd64 libc6-same:amd64
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv libc6-same [2.0]
+Inst libc6-same:amd64 (1.0 stable [amd64])
+Inst foobar-same:amd64 (1.0 stable [amd64])
+Conf libc6-same:amd64 (1.0 stable [amd64])
+Conf foobar-same:amd64 (1.0 stable [amd64])" aptget install foobar-same:amd64/stable -st testing
diff --git a/test/integration/test-bug-612557-garbage-upgrade b/test/integration/test-bug-612557-garbage-upgrade
new file mode 100755
index 000000000..d232c4412
--- /dev/null
+++ b/test/integration/test-bug-612557-garbage-upgrade
@@ -0,0 +1,60 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'unrelated' 'all' '1:3.3.0-2'
+insertpackage 'unstable' 'python-uno' 'all' '1:3.3.0-2' 'Depends: libreoffice-common'
+insertpackage 'unstable' 'libreoffice-common' 'all' '1:3.3.0-2' 'Conflicts: openoffice.org-common'
+
+setupaptarchive
+
+touch rootdir/var/lib/apt/extended_states
+testsuccess aptmark markauto python-uno openoffice.org-common
+#aptmark unmarkauto openoffice.org-emailmerge
+testmarkedauto python-uno openoffice.org-common
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following additional packages will be installed:
+ libreoffice-common
+The following packages will be REMOVED:
+ openoffice.org-common openoffice.org-emailmerge
+The following NEW packages will be installed:
+ libreoffice-common
+The following packages will be upgraded:
+ python-uno
+1 upgraded, 1 newly installed, 2 to remove and 0 not upgraded.
+After this operation, 53.2 MB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation.' aptget --trivial-only install python-uno
+
+testsuccess aptmark markauto openoffice.org-emailmerge
+testmarkedauto python-uno openoffice.org-common openoffice.org-emailmerge
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following additional packages will be installed:
+ libreoffice-common
+The following packages will be REMOVED:
+ openoffice.org-common openoffice.org-emailmerge
+The following NEW packages will be installed:
+ libreoffice-common
+The following packages will be upgraded:
+ python-uno
+1 upgraded, 1 newly installed, 2 to remove and 0 not upgraded.
+After this operation, 53.2 MB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation.' aptget --trivial-only install python-uno
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ openoffice.org-common openoffice.org-emailmerge python-uno
+0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
+After this operation, 53.3 MB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation.' aptget autoremove --trivial-only
diff --git a/test/integration/test-bug-612958-use-dpkg-multiarch-config b/test/integration/test-bug-612958-use-dpkg-multiarch-config
new file mode 100755
index 000000000..54200ff23
--- /dev/null
+++ b/test/integration/test-bug-612958-use-dpkg-multiarch-config
@@ -0,0 +1,83 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+testpass() {
+ msgtest 'Test architecture handling success' "$1 with $2"
+ rm -f archs.conf
+ aptconfig dump --no-empty --format='%V%n' APT::Architectures > archs.conf
+ testsuccess --nomsg grep "^$2\$" archs.conf
+}
+
+testfail() {
+ msgtest 'Test architecture handling failure' "$1 with $2"
+ rm -f archs.conf
+ aptconfig dump --no-empty --format='%V%n' APT::Architectures > archs.conf
+ testfailure --nomsg grep "^$2\$" archs.conf
+}
+
+testpass 'no config' 'i386'
+testfail 'no config' 'amd64'
+testfail 'no config' 'armel'
+
+CONFFILE=rootdir/etc/apt/apt.conf.d/99multiarch
+echo '#clear APT::Architectures;' >> $CONFFILE
+echo 'APT::Architectures:: "i386";' >> $CONFFILE
+echo 'APT::Architectures:: "amd64";' >> $CONFFILE
+
+testpass 'apt config' 'i386'
+testpass 'apt config' 'amd64'
+testfail 'apt config' 'armel'
+
+echo 'APT::Architectures:: "armel";' >> $CONFFILE
+
+testpass 'apt config' 'armel'
+
+rm $CONFFILE
+
+echo '#clear APT::Architectures;' >> $CONFFILE
+echo 'APT::Architectures "i386,amd64";' >> $CONFFILE
+
+testpass 'apt config' 'i386'
+testpass 'apt config' 'amd64'
+testfail 'apt config' 'armel'
+
+rm $CONFFILE
+
+echo '#clear APT::Architectures;' >> $CONFFILE
+echo 'Dir::Bin::dpkg "./dpkg-printer";' >> $CONFFILE
+
+echo '#! /bin/sh
+echo "amd64"' > ./dpkg-printer
+chmod +x ./dpkg-printer
+
+testpass 'dpkg config' 'i386'
+testpass 'dpkg config' 'amd64'
+testfail 'dpkg config' 'armel'
+
+echo '#! /bin/sh
+echo "amd64 armel"' > ./dpkg-printer
+
+testpass 'dpkg config' 'i386'
+testpass 'dpkg config' 'amd64'
+testpass 'dpkg config' 'armel'
+
+echo '#! /bin/sh
+echo "amd64
+armel"' > ./dpkg-printer
+
+testpass 'dpkg config' 'i386'
+testpass 'dpkg config' 'amd64'
+testpass 'dpkg config' 'armel'
+
+echo '#! /bin/sh
+echo "amd64
+i386"' > ./dpkg-printer
+
+testpass 'dpkg config' 'i386'
+testpass 'dpkg config' 'amd64'
+testfail 'dpkg config' 'armel'
diff --git a/test/integration/test-bug-613420-new-garbage-dependency b/test/integration/test-bug-613420-new-garbage-dependency
new file mode 100755
index 000000000..b225bd60e
--- /dev/null
+++ b/test/integration/test-bug-613420-new-garbage-dependency
@@ -0,0 +1,56 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'libreoffice' 'all' '1:3.3.1~rc1-2' 'Depends: libreoffice-core'
+insertpackage 'unstable' 'libreoffice-core' 'all' '1:3.3.1~rc1-2' 'Conflicts: openoffice.org-core'
+insertpackage 'unstable' 'libreoffice-officebean' 'all' '1:3.3.1~rc1-2' 'Depends: libreoffice-core'
+insertpackage 'unstable' 'openoffice.org-officebean' 'all' '1:3.3.0-5' 'Depends: libreoffice-officebean'
+
+setupaptarchive
+
+touch rootdir/var/lib/apt/extended_states
+testsuccess aptmark markauto openoffice.org-officebean
+testmarkedauto openoffice.org-officebean
+AUTOREMOVE='apt autoremove'
+if [ -n "$SUDO_USER" ]; then
+ AUTOREMOVE="sudo $AUTOREMOVE"
+fi
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages were automatically installed and are no longer required:
+ libreoffice-officebean openoffice.org-officebean
+Use '$AUTOREMOVE' to remove them.
+The following additional packages will be installed:
+ libreoffice-core libreoffice-officebean openoffice.org-officebean
+The following packages will be REMOVED:
+ openoffice.org-core
+The following NEW packages will be installed:
+ libreoffice libreoffice-core libreoffice-officebean
+The following packages will be upgraded:
+ openoffice.org-officebean
+1 upgraded, 3 newly installed, 1 to remove and 0 not upgraded.
+After this operation, 126 MB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation." aptget install libreoffice --trivial-only
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+2 packages were automatically installed and are no longer required.
+Use '$AUTOREMOVE' to remove them.
+The following additional packages will be installed:
+ libreoffice-core libreoffice-officebean openoffice.org-officebean
+The following packages will be REMOVED:
+ openoffice.org-core
+The following NEW packages will be installed:
+ libreoffice libreoffice-core libreoffice-officebean
+The following packages will be upgraded:
+ openoffice.org-officebean
+1 upgraded, 3 newly installed, 1 to remove and 0 not upgraded.
+After this operation, 126 MB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation." aptget install libreoffice --trivial-only -o APT::Get::HideAutoRemove=small
diff --git a/test/integration/test-bug-617690-allow-unauthenticated-makes-all-untrusted b/test/integration/test-bug-617690-allow-unauthenticated-makes-all-untrusted
new file mode 100755
index 000000000..533cf771f
--- /dev/null
+++ b/test/integration/test-bug-617690-allow-unauthenticated-makes-all-untrusted
@@ -0,0 +1,68 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+buildsimplenativepackage 'cool' 'i386' '1.0' 'unstable'
+
+setupaptarchive --no-update
+
+testfileexists() {
+ msgtest 'Test for existence of file' "$1"
+ test -e "$1" && msgpass || msgfail
+ rm -f "$1"
+}
+
+testfilemissing() {
+ msgtest 'Test for non-existence of file' "$1"
+ test -e "$1" && msgfail || msgpass
+ rm -f "$1"
+}
+
+testrun() {
+ rm -rf rootdir/var/lib/apt
+ cd downloaded
+
+ if [ "$1" = 'trusted' ]; then
+ testsuccess aptget update
+
+ testsuccess aptget download cool
+ testfileexists 'cool_1.0_i386.deb'
+
+ testsuccess aptget download cool --allow-unauthenticated
+ testfileexists 'cool_1.0_i386.deb'
+ else
+ testwarning aptget update --allow-insecure-repositories
+
+ testfailure aptget download cool
+ testfilemissing 'cool_1.0_i386.deb'
+
+ testsuccess aptget download cool --allow-unauthenticated
+ testfileexists 'cool_1.0_i386.deb'
+ fi
+
+ mv ../aptarchive/pool/cool_1.0_i386.deb ../aptarchive/pool/cool_1.0_i386.deb.bak
+ echo 'this is not a good package' > ../aptarchive/pool/cool_1.0_i386.deb
+ testfailure aptget download cool
+ testfilemissing cool_1.0_i386.deb
+
+ testfailure aptget download cool --allow-unauthenticated # unauthenticated doesn't mean unchecked
+ testfilemissing cool_1.0_i386.deb
+
+ rm -f ../aptarchive/pool/cool_1.0_i386.deb
+ mv ../aptarchive/pool/cool_1.0_i386.deb.bak ../aptarchive/pool/cool_1.0_i386.deb
+ testsuccess aptget download cool --allow-unauthenticated
+ testfileexists 'cool_1.0_i386.deb'
+ cd - >/dev/null
+}
+
+testrun 'trusted'
+
+find aptarchive/ \( -name 'Release.gpg' -o -name 'InRelease' \) -delete
+testrun 'untrusted'
+
+changetowebserver
+testrun 'untrusted'
diff --git a/test/integration/test-bug-618288-multiarch-same-lockstep b/test/integration/test-bug-618288-multiarch-same-lockstep
new file mode 100755
index 000000000..eeecb40ee
--- /dev/null
+++ b/test/integration/test-bug-618288-multiarch-same-lockstep
@@ -0,0 +1,41 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'libsame' 'i386,amd64' '1' 'Multi-Arch: same' 'required'
+insertinstalledpackage 'apt' 'i386' '1' 'Depends: libsame (= 1)
+Essential: yes' 'required'
+insertinstalledpackage 'apt2' 'amd64' '1' 'Depends: libsame (= 1)
+Essential: yes' 'required'
+buildsimplenativepackage 'libsame' 'i386,amd64' '2' 'unstable' 'Multi-Arch: same' '' 'required'
+buildsimplenativepackage 'apt' 'i386' '2' 'unstable' 'Depends: libsame (= 2)' '' 'required'
+buildsimplenativepackage 'apt2' 'amd64' '2' 'unstable' 'Depends: libsame (= 2)' '' 'required'
+
+setupaptarchive
+testsuccess aptget dist-upgrade -s -o Debug::pkgPackageManager=1
+
+# order in switch libsame:{amd64,i386} are unpacked is irrelevant, as both are installed - but we need to do it together
+OUTPUT=rootdir/tmp/testsuccess.output
+LS_U_AMD="$(grep -o -n '^Inst libsame ' $OUTPUT | cut -d: -f1)"
+LS_U_INT="$(grep -o -n '^Inst libsame:i386 ' $OUTPUT | cut -d: -f1)"
+LS_C_AMD="$(grep -o -n '^Conf libsame ' $OUTPUT | cut -d: -f1)"
+LS_C_INT="$(grep -o -n '^Conf libsame:i386 ' $OUTPUT | cut -d: -f1)"
+
+msgtest 'Test if' 'libsame:amd64 unpack before configure'
+test "$LS_U_AMD" -lt "$LS_C_AMD" && msgpass || msgfail
+
+msgtest 'Test if' 'libsame:i386 unpack before configure'
+test "$LS_U_INT" -lt "$LS_C_INT" && msgpass || msgfail
+
+msgtest 'Test if' 'libsame:amd64 unpack is before libsame:i386 configure'
+test "$LS_U_AMD" -lt "$LS_C_INT" && msgpass || msgfail
+
+msgtest 'Test if' 'libsame:i386 unpack is before libsame:amd64 configure'
+test "$LS_U_INT" -lt "$LS_C_AMD" && msgpass || msgfail
+
+# lets see if it really does work out
+testsuccess apt dist-upgrade -y
diff --git a/test/integration/test-bug-618848-always-respect-user-requests b/test/integration/test-bug-618848-always-respect-user-requests
new file mode 100755
index 000000000..fa190a93d
--- /dev/null
+++ b/test/integration/test-bug-618848-always-respect-user-requests
@@ -0,0 +1,32 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertinstalledpackage 'libdb4.8' 'all' '1.0'
+insertinstalledpackage 'exim4' 'all' '1.0' 'Depends: exim4-daemon-light | exim4-daemon-heavy'
+insertinstalledpackage 'exim4-daemon-light' 'all' '1.0' 'Depends: libdb4.8'
+insertpackage 'unstable' 'exim4-daemon-heavy' 'all' '1.0' 'Depends: libdb4.8'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+ MarkDelete libdb4.8:i386 < 1.0 @ii pmK > FU=1
+ MarkDelete exim4-daemon-light:i386 < 1.0 @ii mK Ib > FU=0
+ MarkInstall exim4-daemon-heavy:i386 < none -> 1.0 @un uN Ib > FU=0
+ Ignore MarkInstall of libdb4.8:i386 < 1.0 @ii pmR > as its mode (Delete) is protected
+ MarkDelete exim4-daemon-heavy:i386 < none -> 1.0 @un uN Ib > FU=0
+ MarkDelete exim4:i386 < 1.0 @ii mK Ib > FU=0
+The following packages will be REMOVED:
+ exim4 exim4-daemon-light libdb4.8
+ MarkDelete exim4:i386 < 1.0 @ii K > FU=1
+0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
+Remv exim4 [1.0]
+ MarkDelete exim4-daemon-light:i386 < 1.0 @ii K > FU=1
+Remv exim4-daemon-light [1.0]
+ MarkDelete libdb4.8:i386 < 1.0 @ii K > FU=1
+Remv libdb4.8 [1.0]' aptget remove libdb4.8 -s -o Debug::pkgDepCache::Marker=1
diff --git a/test/integration/test-bug-623443-fail-on-bad-proxies b/test/integration/test-bug-623443-fail-on-bad-proxies
new file mode 100755
index 000000000..d91a3ab8b
--- /dev/null
+++ b/test/integration/test-bug-623443-fail-on-bad-proxies
@@ -0,0 +1,34 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'unrelated' 'all' '0.5~squeeze1' 'unstable'
+
+setupaptarchive --no-update
+changetowebserver
+
+testsuccess apt update
+rm -rf rootdir/var/lib/apt/lists
+
+export http_proxy=enrico:password@proxy-cache.localnet:3128
+testfailure apt update
+unset http_proxy
+testsuccess grep 'Unsupported proxy configured' rootdir/tmp/testfailure.output
+
+changetohttpswebserver
+
+testsuccess apt update
+rm -rf rootdir/var/lib/apt/lists
+
+export http_proxy=enrico:password@proxy-cache.localnet:3128
+testfailure apt update
+unset http_proxy
+testsuccess grep 'Unsupported proxy configured' rootdir/tmp/testfailure.output
+
+echo 'Acquire::http::Proxy "foo://example.org";
+Acquire::https::Proxy "DIRECT";' > rootdir/etc/apt/apt.conf.d/proxy.conf
+testsuccess apt update
diff --git a/test/integration/test-bug-624218-Translation-file-handling b/test/integration/test-bug-624218-Translation-file-handling
new file mode 100755
index 000000000..b629dd665
--- /dev/null
+++ b/test/integration/test-bug-624218-Translation-file-handling
@@ -0,0 +1,105 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+buildsimplenativepackage 'coolstuff' 'all' '1.0' 'unstable'
+
+setupaptarchive --no-update
+
+changetowebserver
+rm -rf rootdir/var/lib/apt/lists
+
+translationslisted() {
+ msgtest 'No download of non-existent locals' "$1"
+ export LC_ALL=""
+ testsuccess --nomsg aptget update -o Acquire::Languages=en
+ testfailure grep -q -e 'Translation-[^e][^n] ' rootdir/tmp/testsuccess.output
+ rm -rf rootdir/var/lib/apt/lists
+
+ msgtest 'Download of existent locals' "$1"
+ testsuccess --nomsg aptget update
+ cp rootdir/tmp/testsuccess.output testsuccess.output
+ testsuccess grep -q -e 'Translation-en ' testsuccess.output
+ rm -rf rootdir/var/lib/apt/lists
+
+ msgtest 'Download of en in LC_ALL=C' "$1"
+ export LC_ALL=C
+ testsuccess --nomsg aptget update
+ cp rootdir/tmp/testsuccess.output testsuccess.output
+ testsuccess grep -q -e 'Translation-en ' testsuccess.output
+ rm -rf rootdir/var/lib/apt/lists
+ unset LC_ALL
+
+ msgtest 'Download of en as forced language' "$1"
+ testsuccess --nomsg aptget update -o Acquire::Languages=en
+ cp rootdir/tmp/testsuccess.output testsuccess.output
+ testsuccess grep -q -e 'Translation-en ' testsuccess.output
+ rm -rf rootdir/var/lib/apt/lists
+
+ msgtest 'Download of nothing else in forced language' "$1"
+ testsuccess --nomsg aptget update -o Acquire::Languages=en
+ testfailure grep -q -e 'Translation-[^e][^n] ' rootdir/tmp/testsuccess.output
+ rm -rf rootdir/var/lib/apt/lists
+
+ msgtest 'Download no Translation- if forced language is non-existent' "$1"
+ testsuccess --nomsg aptget update -o Acquire::Languages=ast_DE
+ testfailure grep -q -e 'Translation-' rootdir/tmp/testsuccess.output
+ rm -rf rootdir/var/lib/apt/lists
+
+ msgtest 'Download of nothing if none is forced' "$1"
+ testsuccess --nomsg aptget update -o Acquire::Languages=none
+ testfailure grep -q -e 'Translation' rootdir/tmp/testsuccess.output
+ rm -rf rootdir/var/lib/apt/lists
+}
+
+translationslisted 'with full Index'
+
+# No Release file at all, so no records about Translation files
+# (fallback to guessing)
+find aptarchive \( -name 'Release' -o -name 'InRelease' \) -delete
+echo 'Acquire::AllowInsecureRepositories "true";' > rootdir/etc/apt/apt.conf.d/allow-insecure-repositories.conf
+
+msgtest 'Download of en as forced language' 'without Index'
+testwarning --nomsg aptget update -o Acquire::Languages=en
+testsuccess grep -q -e 'Translation-en ' rootdir/tmp/testwarning.output
+rm -rf rootdir/var/lib/apt/lists
+
+msgtest 'Download of nothing else in forced language' 'without Index'
+testwarning --nomsg aptget update -o Acquire::Languages=en
+testfailure grep -q -e 'Translation-[^e][^n] ' rootdir/tmp/testwarning.output
+rm -rf rootdir/var/lib/apt/lists
+
+msgtest 'Download of ast_DE as forced language' 'without Index'
+testwarning --nomsg aptget update -o Acquire::Languages=ast_DE
+testsuccess grep -q -e 'Translation-ast_DE$' rootdir/tmp/testwarning.output
+rm -rf rootdir/var/lib/apt/lists
+
+msgtest 'Download of nothing else in forced language' 'without Index'
+testwarning --nomsg aptget update -o Acquire::Languages=ast_DE
+testfailure grep -q -e 'Translation-[^a][^s]' rootdir/tmp/testwarning.output
+rm -rf rootdir/var/lib/apt/lists
+
+msgtest 'Download of nothing if none is forced' 'without Index'
+testwarning --nomsg aptget update -o Acquire::Languages=none
+testfailure grep -q -e 'Translation' rootdir/tmp/testwarning.output
+rm -rf rootdir/var/lib/apt/lists
+
+mkdir -p rootdir/var/lib/apt/lists
+touch rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-ast_DE
+
+msgtest 'Download of builtin files' 'without Index'
+testwarning --nomsg aptget update
+testsuccess grep -q -e 'Translation-ast_DE' rootdir/tmp/testwarning.output
+rm -rf rootdir/var/lib/apt/lists
+
+mkdir -p rootdir/var/lib/apt/lists
+touch rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-ast_DE
+
+msgtest 'Download of nothing (even builtin) if none is forced' 'without Index'
+testwarning --nomsg aptget update -o Acquire::Languages=none
+testfailure grep -q -e 'Translation' rootdir/tmp/testwarning.output
+rm -rf rootdir/var/lib/apt/lists
diff --git a/test/integration/test-bug-632221-cross-dependency-satisfaction b/test/integration/test-bug-632221-cross-dependency-satisfaction
new file mode 100755
index 000000000..d52652cad
--- /dev/null
+++ b/test/integration/test-bug-632221-cross-dependency-satisfaction
@@ -0,0 +1,348 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'armel'
+
+insertinstalledpackage 'build-essential' 'all' '11.5' 'Multi-Arch: foreign'
+
+insertpackage 'unstable' 'doxygen' 'amd64,armel' '1.0' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'libc6' 'amd64,armel' '1.0' 'Multi-Arch: same'
+insertpackage 'unstable' 'libc6-dev' 'amd64,armel' '1.0' 'Depends: libc6
+Multi-Arch: same'
+insertpackage 'unstable' 'libfwibble1' 'amd64,armel' '1.0' 'Depends: libc6
+Multi-Arch: same'
+insertpackage 'unstable' 'libfwibble-dev' 'amd64,armel' '1.0' 'Depends: libfwibble1'
+insertpackage 'unstable' 'cool' 'amd64,armel' '1.0' 'Multi-Arch: allowed'
+insertpackage 'unstable' 'amdboot' 'amd64' '1.0'
+insertpackage 'unstable' 'foreigner' 'amd64,armel' '1.0' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'arm-stuff' 'armel' '1.0'
+insertpackage 'unstable' 'linux-stuff' 'amd64,armel' '1.0'
+
+insertsource 'unstable' 'apt' 'any' '0.8.15' 'Build-Depends: doxygen, libc6-dev, libc6-dev:native, cool:any, amdboot:amd64, foreigner, libfwibble-dev, arm-stuff [eabi-any-any-arm gnueabi-any-arm] | linux-stuff [ linux-any]'
+
+insertsource 'unstable' 'forbidden-no' 'any' '1' 'Build-Depends: amdboot:any'
+insertsource 'unstable' 'forbidden-same' 'any' '1' 'Build-Depends: libc6:any'
+insertsource 'unstable' 'forbidden-foreign' 'any' '1' 'Build-Depends: doxygen:any'
+
+insertpackage 'unstable' 'specific' 'amd64' '1.0' 'Depends: libc6:amd64'
+insertpackage 'unstable' 'specific' 'armel' '1.0' 'Depends: libc6:armel'
+
+insertsource 'unstable' 'source-specific-amd64' 'amd64' '1' 'Build-Depends: specific:amd64'
+insertsource 'unstable' 'source-specific-armel' 'armel' '1' 'Build-Depends: specific:armel'
+
+setupaptarchive
+
+testfailureequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ builddeps:forbidden-no:armel : Depends: amdboot:any but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-no -s -a armel
+testfailureequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ builddeps:forbidden-same:armel : Depends: libc6:any but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-same -s -a armel
+testfailureequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ builddeps:forbidden-foreign:armel : Depends: doxygen:any but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-foreign -s -a armel
+
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libc6 specific
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6 (1.0 unstable [amd64])
+Inst specific (1.0 unstable [amd64])
+Conf libc6 (1.0 unstable [amd64])
+Conf specific (1.0 unstable [amd64])' aptget build-dep source-specific-amd64 -s
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libc6 specific
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6 (1.0 unstable [amd64])
+Inst specific (1.0 unstable [amd64])
+Conf libc6 (1.0 unstable [amd64])
+Conf specific (1.0 unstable [amd64])' aptget build-dep source-specific-amd64 -s -a armel
+
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libc6:armel specific:armel
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6:armel (1.0 unstable [armel])
+Inst specific:armel (1.0 unstable [armel])
+Conf libc6:armel (1.0 unstable [armel])
+Conf specific:armel (1.0 unstable [armel])' aptget build-dep source-specific-armel -s
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libc6:armel specific:armel
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6:armel (1.0 unstable [armel])
+Inst specific:armel (1.0 unstable [armel])
+Conf libc6:armel (1.0 unstable [armel])
+Conf specific:armel (1.0 unstable [armel])' aptget build-dep source-specific-armel -s -a armel
+
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ amdboot cool doxygen foreigner libc6 libc6-dev libfwibble-dev libfwibble1
+ linux-stuff
+0 upgraded, 9 newly installed, 0 to remove and 0 not upgraded.
+Inst amdboot (1.0 unstable [amd64])
+Inst cool (1.0 unstable [amd64])
+Inst doxygen (1.0 unstable [amd64])
+Inst foreigner (1.0 unstable [amd64])
+Inst libc6 (1.0 unstable [amd64])
+Inst libc6-dev (1.0 unstable [amd64])
+Inst libfwibble1 (1.0 unstable [amd64])
+Inst libfwibble-dev (1.0 unstable [amd64])
+Inst linux-stuff (1.0 unstable [amd64])
+Conf amdboot (1.0 unstable [amd64])
+Conf cool (1.0 unstable [amd64])
+Conf doxygen (1.0 unstable [amd64])
+Conf foreigner (1.0 unstable [amd64])
+Conf libc6 (1.0 unstable [amd64])
+Conf libc6-dev (1.0 unstable [amd64])
+Conf libfwibble1 (1.0 unstable [amd64])
+Conf libfwibble-dev (1.0 unstable [amd64])
+Conf linux-stuff (1.0 unstable [amd64])' aptget build-dep apt -s
+
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ amdboot arm-stuff:armel cool doxygen foreigner libc6 libc6:armel libc6-dev
+ libc6-dev:armel libfwibble-dev:armel libfwibble1:armel
+0 upgraded, 11 newly installed, 0 to remove and 0 not upgraded.
+Inst amdboot (1.0 unstable [amd64])
+Inst arm-stuff:armel (1.0 unstable [armel])
+Inst cool (1.0 unstable [amd64])
+Inst doxygen (1.0 unstable [amd64])
+Inst foreigner (1.0 unstable [amd64])
+Inst libc6 (1.0 unstable [amd64])
+Inst libc6:armel (1.0 unstable [armel])
+Inst libc6-dev (1.0 unstable [amd64])
+Inst libc6-dev:armel (1.0 unstable [armel])
+Inst libfwibble1:armel (1.0 unstable [armel])
+Inst libfwibble-dev:armel (1.0 unstable [armel])
+Conf amdboot (1.0 unstable [amd64])
+Conf arm-stuff:armel (1.0 unstable [armel])
+Conf cool (1.0 unstable [amd64])
+Conf doxygen (1.0 unstable [amd64])
+Conf foreigner (1.0 unstable [amd64])
+Conf libc6 (1.0 unstable [amd64])
+Conf libc6:armel (1.0 unstable [armel])
+Conf libc6-dev (1.0 unstable [amd64])
+Conf libc6-dev:armel (1.0 unstable [armel])
+Conf libfwibble1:armel (1.0 unstable [armel])
+Conf libfwibble-dev:armel (1.0 unstable [armel])' aptget build-dep apt -s -a armel
+
+configarchitecture 'armel' 'amd64'
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ amdboot:amd64 arm-stuff cool doxygen foreigner libc6 libc6-dev
+ libfwibble-dev libfwibble1
+0 upgraded, 9 newly installed, 0 to remove and 0 not upgraded.
+Inst amdboot:amd64 (1.0 unstable [amd64])
+Inst arm-stuff (1.0 unstable [armel])
+Inst cool (1.0 unstable [armel])
+Inst doxygen (1.0 unstable [armel])
+Inst foreigner (1.0 unstable [armel])
+Inst libc6 (1.0 unstable [armel])
+Inst libc6-dev (1.0 unstable [armel])
+Inst libfwibble1 (1.0 unstable [armel])
+Inst libfwibble-dev (1.0 unstable [armel])
+Conf amdboot:amd64 (1.0 unstable [amd64])
+Conf arm-stuff (1.0 unstable [armel])
+Conf cool (1.0 unstable [armel])
+Conf doxygen (1.0 unstable [armel])
+Conf foreigner (1.0 unstable [armel])
+Conf libc6 (1.0 unstable [armel])
+Conf libc6-dev (1.0 unstable [armel])
+Conf libfwibble1 (1.0 unstable [armel])
+Conf libfwibble-dev (1.0 unstable [armel])' aptget build-dep apt -s
+
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ amdboot:amd64 cool doxygen foreigner libc6 libc6:amd64 libc6-dev
+ libc6-dev:amd64 libfwibble-dev:amd64 libfwibble1:amd64 linux-stuff:amd64
+0 upgraded, 11 newly installed, 0 to remove and 0 not upgraded.
+Inst amdboot:amd64 (1.0 unstable [amd64])
+Inst cool (1.0 unstable [armel])
+Inst doxygen (1.0 unstable [armel])
+Inst foreigner (1.0 unstable [armel])
+Inst libc6 (1.0 unstable [armel])
+Inst libc6:amd64 (1.0 unstable [amd64])
+Inst libc6-dev (1.0 unstable [armel])
+Inst libc6-dev:amd64 (1.0 unstable [amd64])
+Inst libfwibble1:amd64 (1.0 unstable [amd64])
+Inst libfwibble-dev:amd64 (1.0 unstable [amd64])
+Inst linux-stuff:amd64 (1.0 unstable [amd64])
+Conf amdboot:amd64 (1.0 unstable [amd64])
+Conf cool (1.0 unstable [armel])
+Conf doxygen (1.0 unstable [armel])
+Conf foreigner (1.0 unstable [armel])
+Conf libc6 (1.0 unstable [armel])
+Conf libc6:amd64 (1.0 unstable [amd64])
+Conf libc6-dev (1.0 unstable [armel])
+Conf libc6-dev:amd64 (1.0 unstable [amd64])
+Conf libfwibble1:amd64 (1.0 unstable [amd64])
+Conf libfwibble-dev:amd64 (1.0 unstable [amd64])
+Conf linux-stuff:amd64 (1.0 unstable [amd64])' aptget build-dep apt -s -a amd64
+
+configarchitecture 'amd64' 'armel'
+
+insertinstalledpackage 'cool' 'amd64' '0.5'
+insertinstalledpackage 'foreigner' 'armel' '0.5'
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ amdboot doxygen libc6 libc6-dev libfwibble-dev libfwibble1 linux-stuff
+The following packages will be upgraded:
+ foreigner:armel
+1 upgraded, 7 newly installed, 0 to remove and 1 not upgraded.
+Inst amdboot (1.0 unstable [amd64])
+Inst doxygen (1.0 unstable [amd64])
+Inst foreigner:armel [0.5] (1.0 unstable [armel])
+Inst libc6 (1.0 unstable [amd64])
+Inst libc6-dev (1.0 unstable [amd64])
+Inst libfwibble1 (1.0 unstable [amd64])
+Inst libfwibble-dev (1.0 unstable [amd64])
+Inst linux-stuff (1.0 unstable [amd64])
+Conf amdboot (1.0 unstable [amd64])
+Conf doxygen (1.0 unstable [amd64])
+Conf foreigner:armel (1.0 unstable [armel])
+Conf libc6 (1.0 unstable [amd64])
+Conf libc6-dev (1.0 unstable [amd64])
+Conf libfwibble1 (1.0 unstable [amd64])
+Conf libfwibble-dev (1.0 unstable [amd64])
+Conf linux-stuff (1.0 unstable [amd64])' aptget build-dep apt -s
+
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ amdboot arm-stuff:armel doxygen libc6 libc6:armel libc6-dev libc6-dev:armel
+ libfwibble-dev:armel libfwibble1:armel
+The following packages will be upgraded:
+ cool
+1 upgraded, 9 newly installed, 0 to remove and 1 not upgraded.
+Inst amdboot (1.0 unstable [amd64])
+Inst arm-stuff:armel (1.0 unstable [armel])
+Inst cool [0.5] (1.0 unstable [amd64])
+Inst doxygen (1.0 unstable [amd64])
+Inst libc6 (1.0 unstable [amd64])
+Inst libc6:armel (1.0 unstable [armel])
+Inst libc6-dev (1.0 unstable [amd64])
+Inst libc6-dev:armel (1.0 unstable [armel])
+Inst libfwibble1:armel (1.0 unstable [armel])
+Inst libfwibble-dev:armel (1.0 unstable [armel])
+Conf amdboot (1.0 unstable [amd64])
+Conf arm-stuff:armel (1.0 unstable [armel])
+Conf cool (1.0 unstable [amd64])
+Conf doxygen (1.0 unstable [amd64])
+Conf libc6 (1.0 unstable [amd64])
+Conf libc6:armel (1.0 unstable [armel])
+Conf libc6-dev (1.0 unstable [amd64])
+Conf libc6-dev:armel (1.0 unstable [armel])
+Conf libfwibble1:armel (1.0 unstable [armel])
+Conf libfwibble-dev:armel (1.0 unstable [armel])' aptget build-dep apt -s -a armel
+
+configarchitecture 'armel' 'amd64'
+
+# cool 0.5 is not M-A: allowed, so amd64 is not acceptable
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ cool:amd64
+The following NEW packages will be installed:
+ amdboot:amd64 arm-stuff cool doxygen libc6 libc6-dev libfwibble-dev
+ libfwibble1
+0 upgraded, 8 newly installed, 1 to remove and 1 not upgraded.
+Remv cool:amd64 [0.5]
+Inst amdboot:amd64 (1.0 unstable [amd64])
+Inst arm-stuff (1.0 unstable [armel])
+Inst cool (1.0 unstable [armel])
+Inst doxygen (1.0 unstable [armel])
+Inst libc6 (1.0 unstable [armel])
+Inst libc6-dev (1.0 unstable [armel])
+Inst libfwibble1 (1.0 unstable [armel])
+Inst libfwibble-dev (1.0 unstable [armel])
+Conf amdboot:amd64 (1.0 unstable [amd64])
+Conf arm-stuff (1.0 unstable [armel])
+Conf cool (1.0 unstable [armel])
+Conf doxygen (1.0 unstable [armel])
+Conf libc6 (1.0 unstable [armel])
+Conf libc6-dev (1.0 unstable [armel])
+Conf libfwibble1 (1.0 unstable [armel])
+Conf libfwibble-dev (1.0 unstable [armel])' aptget build-dep apt -s
+
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ amdboot:amd64 doxygen libc6 libc6:amd64 libc6-dev libc6-dev:amd64
+ libfwibble-dev:amd64 libfwibble1:amd64 linux-stuff:amd64
+The following packages will be upgraded:
+ cool:amd64 foreigner
+2 upgraded, 9 newly installed, 0 to remove and 0 not upgraded.
+Inst amdboot:amd64 (1.0 unstable [amd64])
+Inst cool:amd64 [0.5] (1.0 unstable [amd64])
+Inst doxygen (1.0 unstable [armel])
+Inst foreigner [0.5] (1.0 unstable [armel])
+Inst libc6 (1.0 unstable [armel])
+Inst libc6:amd64 (1.0 unstable [amd64])
+Inst libc6-dev (1.0 unstable [armel])
+Inst libc6-dev:amd64 (1.0 unstable [amd64])
+Inst libfwibble1:amd64 (1.0 unstable [amd64])
+Inst libfwibble-dev:amd64 (1.0 unstable [amd64])
+Inst linux-stuff:amd64 (1.0 unstable [amd64])
+Conf amdboot:amd64 (1.0 unstable [amd64])
+Conf cool:amd64 (1.0 unstable [amd64])
+Conf doxygen (1.0 unstable [armel])
+Conf foreigner (1.0 unstable [armel])
+Conf libc6 (1.0 unstable [armel])
+Conf libc6:amd64 (1.0 unstable [amd64])
+Conf libc6-dev (1.0 unstable [armel])
+Conf libc6-dev:amd64 (1.0 unstable [amd64])
+Conf libfwibble1:amd64 (1.0 unstable [amd64])
+Conf libfwibble-dev:amd64 (1.0 unstable [amd64])
+Conf linux-stuff:amd64 (1.0 unstable [amd64])' aptget build-dep apt -s -a amd64
diff --git a/test/integration/test-bug-633350-do-not-kill-last-char-in-Release b/test/integration/test-bug-633350-do-not-kill-last-char-in-Release
new file mode 100755
index 000000000..d7dd261f6
--- /dev/null
+++ b/test/integration/test-bug-633350-do-not-kill-last-char-in-Release
@@ -0,0 +1,16 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'cool' 'amd64' '1.0'
+
+export APT_DONT_SIGN='InRelease'
+setupaptarchive --no-update
+
+echo 'NotAutomatic: yes' >> aptarchive/dists/unstable/Release
+signreleasefiles
+testsuccess aptget update
diff --git a/test/integration/test-bug-64141-install-dependencies-for-on-hold b/test/integration/test-bug-64141-install-dependencies-for-on-hold
new file mode 100755
index 000000000..7bbb9bf9b
--- /dev/null
+++ b/test/integration/test-bug-64141-install-dependencies-for-on-hold
@@ -0,0 +1,46 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'native' 'strange-arch'
+
+insertpackage 'unstable' 'unrelated' 'strange-arch' '1'
+
+insertinstalledpackage 'apt' 'native' '0.8.9' 'Depends: libc6 (>= 2.3.4)'
+insertinstalledpackage 'libc6' 'native' '2.4.1-1'
+insertinstalledpackage 'oldcrap' 'all' '1-1'
+
+insertpackage 'unstable' 'apt' 'native' '0.8.10' 'Depends: libc6 (>= 2.10), libdb4.8
+Breaks: oldcrap'
+insertpackage 'unstable' 'libc6' 'native' '2.11.2-7'
+insertpackage 'unstable' 'libdb4.8' 'native' '4.8.30-3'
+
+setupaptarchive
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ oldcrap
+The following NEW packages will be installed:
+ libdb4.8
+The following packages will be upgraded:
+ apt libc6
+2 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+After this operation, 0 B of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only
+
+testsuccess aptmark hold apt
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ apt
+The following packages will be upgraded:
+ libc6
+1 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
+After this operation, 0 B of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only -o Test='hold-back-apt'
diff --git a/test/integration/test-bug-657695-resolver-breaks-on-virtuals b/test/integration/test-bug-657695-resolver-breaks-on-virtuals
new file mode 100755
index 000000000..366113ade
--- /dev/null
+++ b/test/integration/test-bug-657695-resolver-breaks-on-virtuals
@@ -0,0 +1,52 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'xserver-xorg-core' 'amd64' '2:1.7.6-2ubuntu7.10'
+for i in $(seq 1 50); do
+ insertinstalledpackage "xserver-xorg-video-driver$i" 'amd64' '1.0' 'Provides: xserver-xorg-video-6'
+done
+
+insertpackage 'unstable' 'xserver-xorg-core' 'amd64' '2:1.11.3-0ubuntu9' 'Breaks: xserver-xorg-video-6'
+
+
+setupaptarchive
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ xserver-xorg-video-driver1 xserver-xorg-video-driver10
+ xserver-xorg-video-driver11 xserver-xorg-video-driver12
+ xserver-xorg-video-driver13 xserver-xorg-video-driver14
+ xserver-xorg-video-driver15 xserver-xorg-video-driver16
+ xserver-xorg-video-driver17 xserver-xorg-video-driver18
+ xserver-xorg-video-driver19 xserver-xorg-video-driver2
+ xserver-xorg-video-driver20 xserver-xorg-video-driver21
+ xserver-xorg-video-driver22 xserver-xorg-video-driver23
+ xserver-xorg-video-driver24 xserver-xorg-video-driver25
+ xserver-xorg-video-driver26 xserver-xorg-video-driver27
+ xserver-xorg-video-driver28 xserver-xorg-video-driver29
+ xserver-xorg-video-driver3 xserver-xorg-video-driver30
+ xserver-xorg-video-driver31 xserver-xorg-video-driver32
+ xserver-xorg-video-driver33 xserver-xorg-video-driver34
+ xserver-xorg-video-driver35 xserver-xorg-video-driver36
+ xserver-xorg-video-driver37 xserver-xorg-video-driver38
+ xserver-xorg-video-driver39 xserver-xorg-video-driver4
+ xserver-xorg-video-driver40 xserver-xorg-video-driver41
+ xserver-xorg-video-driver42 xserver-xorg-video-driver43
+ xserver-xorg-video-driver44 xserver-xorg-video-driver45
+ xserver-xorg-video-driver46 xserver-xorg-video-driver47
+ xserver-xorg-video-driver48 xserver-xorg-video-driver49
+ xserver-xorg-video-driver5 xserver-xorg-video-driver50
+ xserver-xorg-video-driver6 xserver-xorg-video-driver7
+ xserver-xorg-video-driver8 xserver-xorg-video-driver9
+The following packages will be upgraded:
+ xserver-xorg-core
+1 upgraded, 0 newly installed, 50 to remove and 0 not upgraded.
+After this operation, 2150 kB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only
diff --git a/test/integration/test-bug-661537-build-profiles-support b/test/integration/test-bug-661537-build-profiles-support
new file mode 100755
index 000000000..d24484de9
--- /dev/null
+++ b/test/integration/test-bug-661537-build-profiles-support
@@ -0,0 +1,161 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386' 'armel'
+
+insertinstalledpackage 'build-essential' 'all' '0' 'Multi-Arch: foreign'
+
+insertpackage 'unstable' 'foo' 'all' '1.0'
+insertpackage 'unstable' 'bar' 'all' '1.0'
+
+insertsource 'unstable' 'buildprofiles' 'any' '1' 'Build-Depends: foo (>= 1.0) [i386 arm] <!stage1 !cross>, bar'
+
+# table from https://wiki.debian.org/BuildProfileSpec
+insertsource 'unstable' 'spec-1' 'any' '1' 'Build-Depends: foo <!stage1>'
+insertsource 'unstable' 'spec-2' 'any' '1' 'Build-Depends: foo <stage1>'
+insertsource 'unstable' 'spec-3' 'any' '1' 'Build-Depends: foo <!stage1 !notest>'
+insertsource 'unstable' 'spec-4' 'any' '1' 'Build-Depends: foo <stage1 notest>'
+insertsource 'unstable' 'spec-5' 'any' '1' 'Build-Depends: foo <!stage1 notest>'
+insertsource 'unstable' 'spec-6' 'any' '1' 'Build-Depends: foo <stage1 !notest>'
+insertsource 'unstable' 'spec-7' 'any' '1' 'Build-Depends: foo <stage1> <!notest>'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [all])
+Conf bar (1.0 unstable [all])' aptget build-dep buildprofiles -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [all])
+Inst foo (1.0 unstable [all])
+Conf bar (1.0 unstable [all])
+Conf foo (1.0 unstable [all])' aptget build-dep buildprofiles -s -o APT::Architecture=i386
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [all])
+Conf bar (1.0 unstable [all])' aptget build-dep buildprofiles -s -o APT::Architecture=armel
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [all])
+Conf bar (1.0 unstable [all])' aptget build-dep buildprofiles -s -o APT::Architecture=i386 -P stage1
+
+KEEP='Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [all])
+Conf foo (1.0 unstable [all])'
+setdrop() {
+ DROP="Reading package lists...
+$1 has no build depends.
+Reading package lists...
+Building dependency tree...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded."
+}
+
+msgtest 'Check if version of installed dpkg is high enough for' 'build profiles support'
+if dpkg --compare-versions "$(dpkg_version)" 'ge' '1.17.14'; then
+ msgpass
+ testwithdpkg() {
+ msgtest "Test with" "dpkg-checkbuilddeps -d '$1' -P '$2'"
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testwithdpkg.output"
+ if dpkgcheckbuilddeps -d "$1" -P "$2" /dev/null >$OUTPUT 2>&1; then
+ if [ "$3" = "$DROP" ]; then
+ msgpass
+ else
+ cat $OUTPUT
+ msgfail
+ fi
+ else
+ if [ "$3" = "$KEEP" ]; then
+ msgpass
+ else
+ cat $OUTPUT
+ msgfail
+ fi
+ fi
+ }
+else
+ msgskip
+ testwithdpkg() {
+ msgtest "Test with" "dpkg-checkbuilddeps -d '$1' -P '$2'"
+ msgskip
+ }
+fi
+
+testprofile() {
+ if [ -n "$3" ]; then
+ testequal "$4" aptget build-dep "$1" -s -P "$3"
+ export DEB_BUILD_PROFILES="$(echo "$3" | tr ',' ' ')"
+ testequal "$4" aptget build-dep "$1" -s -o with::environment=1
+ unset DEB_BUILD_PROFILES
+ else
+ testequal "$4" aptget build-dep "$1" -s
+ fi
+ testwithdpkg "$2" "$3" "$4"
+}
+
+testsuccess aptcache gencaches
+setdrop 'spec-1'
+testprofile 'spec-1' 'foo <!stage1>' '' "$KEEP"
+testprofile 'spec-1' 'foo <!stage1>' 'stage1' "$DROP"
+testprofile 'spec-1' 'foo <!stage1>' 'notest' "$KEEP"
+testprofile 'spec-1' 'foo <!stage1>' 'stage1,notest' "$DROP"
+
+setdrop 'spec-2'
+testprofile 'spec-2' 'foo <stage1>' '' "$DROP"
+testprofile 'spec-2' 'foo <stage1>' 'stage1' "$KEEP"
+testprofile 'spec-2' 'foo <stage1>' 'notest' "$DROP"
+testprofile 'spec-2' 'foo <stage1>' 'stage1,notest' "$KEEP"
+
+setdrop 'spec-3'
+testprofile 'spec-3' 'foo <!stage1 !notest>' '' "$KEEP"
+testprofile 'spec-3' 'foo <!stage1 !notest>' 'stage1' "$DROP"
+testprofile 'spec-3' 'foo <!stage1 !notest>' 'notest' "$DROP"
+testprofile 'spec-3' 'foo <!stage1 !notest>' 'stage1,notest' "$DROP"
+
+setdrop 'spec-4'
+testprofile 'spec-4' 'foo <stage1 notest>' '' "$DROP"
+testprofile 'spec-4' 'foo <stage1 notest>' 'stage1' "$DROP"
+testprofile 'spec-4' 'foo <stage1 notest>' 'notest' "$DROP"
+testprofile 'spec-4' 'foo <stage1 notest>' 'stage1,notest' "$KEEP"
+
+setdrop 'spec-5'
+testprofile 'spec-5' 'foo <!stage1 notest>' '' "$DROP"
+testprofile 'spec-5' 'foo <!stage1 notest>' 'stage1' "$DROP"
+testprofile 'spec-5' 'foo <!stage1 notest>' 'notest' "$KEEP"
+testprofile 'spec-5' 'foo <!stage1 notest>' 'stage1,notest' "$DROP"
+
+setdrop 'spec-6'
+testprofile 'spec-6' 'foo <stage1 !notest>' '' "$DROP"
+testprofile 'spec-6' 'foo <stage1 !notest>' 'stage1' "$KEEP"
+testprofile 'spec-6' 'foo <stage1 !notest>' 'notest' "$DROP"
+testprofile 'spec-6' 'foo <stage1 !notest>' 'stage1,notest' "$DROP"
+
+setdrop 'spec-7'
+testprofile 'spec-7' 'foo <stage1> <!notest>' '' "$KEEP"
+testprofile 'spec-7' 'foo <stage1> <!notest>' 'stage1' "$KEEP"
+testprofile 'spec-7' 'foo <stage1> <!notest>' 'notest' "$DROP"
+testprofile 'spec-7' 'foo <stage1> <!notest>' 'stage1,notest' "$KEEP"
diff --git a/test/integration/test-bug-673536-pre-depends-breaks-loop b/test/integration/test-bug-673536-pre-depends-breaks-loop
new file mode 100755
index 000000000..a4cf66973
--- /dev/null
+++ b/test/integration/test-bug-673536-pre-depends-breaks-loop
@@ -0,0 +1,36 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'native'
+
+buildsimplenativepackage 'advanced' 'native' '1' 'stable'
+buildsimplenativepackage 'advanced' 'native' '2' 'unstable' 'Pre-Depends: basic'
+buildsimplenativepackage 'basic' 'native' '2' 'unstable' 'Pre-Depends: common'
+
+buildsimplenativepackage 'common' 'native' '2~conflict' 'unstable-conflict' 'Conflicts: advanced (<= 1)'
+buildsimplenativepackage 'common' 'native' '2~break' 'unstable-break' 'Breaks: advanced (<= 1)'
+
+setupaptarchive
+
+# we check with 'real' packages here as the simulation reports a 'Conf broken'
+# which is technical correct for the simulation, but testing errormsg is ugly
+
+cp -a rootdir/var/lib/dpkg/status dpkg.status.backup
+
+testloopbreak() {
+ cp -a dpkg.status.backup rootdir/var/lib/dpkg/status
+ rm -f rootdir/var/lib/apt/extended_states
+
+ testsuccess aptget install advanced=1 -y -t "$1"
+ testdpkginstalled advanced
+ testdpkgnotinstalled basic common
+
+ testsuccess aptget dist-upgrade -y -t "$1"
+ testdpkginstalled advanced basic common
+}
+
+testloopbreak 'unstable-break'
+testloopbreak 'unstable-conflict'
diff --git a/test/integration/test-bug-675449-essential-are-protected b/test/integration/test-bug-675449-essential-are-protected
new file mode 100755
index 000000000..69f6c2a3b
--- /dev/null
+++ b/test/integration/test-bug-675449-essential-are-protected
@@ -0,0 +1,103 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'pkg-native' 'amd64' '1' 'Multi-Arch: foreign
+Essential: yes'
+insertinstalledpackage 'pkg-foreign' 'i386' '1' 'Multi-Arch: foreign
+Essential: yes'
+insertinstalledpackage 'pkg-none-native' 'amd64' '1' 'Essential: yes'
+insertinstalledpackage 'pkg-none-foreign' 'i386' '1' 'Essential: yes'
+
+insertpackage 'unstable' 'pkg-native' 'amd64,i386' '2' 'Multi-Arch: foreign
+Essential: yes'
+insertpackage 'unstable' 'pkg-foreign' 'amd64,i386' '2' 'Multi-Arch: foreign
+Depends: pkg-depends-new
+Essential: yes'
+insertpackage 'unstable' 'pkg-none-native' 'amd64,i386' '2' 'Essential: yes'
+insertpackage 'unstable' 'pkg-none-foreign' 'amd64,i386' '2' 'Essential: yes
+Depends: pkg-depends-new'
+
+insertpackage 'unstable' 'pkg-none-new' 'amd64,i386' '2' 'Essential: yes'
+insertpackage 'unstable' 'pkg-depends-new' 'amd64,i386' '2' 'Essential: yes'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ pkg-native*
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ pkg-native
+0 upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
+Purg pkg-native [1]' aptget purge pkg-native -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ pkg-foreign:i386*
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ pkg-foreign:i386
+0 upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
+Purg pkg-foreign:i386 [1]' aptget purge pkg-foreign:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ pkg-none-native*
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ pkg-none-native
+0 upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
+Purg pkg-none-native [1]' aptget purge pkg-none-native -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ pkg-none-foreign:i386*
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ pkg-none-foreign:i386
+0 upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
+Purg pkg-none-foreign:i386 [1]' aptget purge pkg-none-foreign:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ pkg-depends-new:i386 pkg-none-new
+The following packages will be upgraded:
+ pkg-foreign:i386 pkg-native pkg-none-foreign:i386 pkg-none-native
+4 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst pkg-depends-new:i386 (2 unstable [i386])
+Conf pkg-depends-new:i386 (2 unstable [i386])
+Inst pkg-foreign:i386 [1] (2 unstable [i386])
+Conf pkg-foreign:i386 (2 unstable [i386])
+Inst pkg-native [1] (2 unstable [amd64])
+Conf pkg-native (2 unstable [amd64])
+Inst pkg-none-foreign:i386 [1] (2 unstable [i386])
+Conf pkg-none-foreign:i386 (2 unstable [i386])
+Inst pkg-none-native [1] (2 unstable [amd64])
+Conf pkg-none-native (2 unstable [amd64])
+Inst pkg-none-new (2 unstable [amd64])
+Conf pkg-none-new (2 unstable [amd64])' aptget dist-upgrade -s
+
+insertinstalledpackage 'foo' 'amd64' '1' 'Depends: libfoo
+Essential: yes'
+insertinstalledpackage 'libfoo' 'amd64' '1'
+testequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ foo* libfoo*
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ foo libfoo (due to foo)
+0 upgraded, 0 newly installed, 2 to remove and 4 not upgraded.
+Purg foo [1]
+Purg libfoo [1]' aptget purge libfoo -s
diff --git a/test/integration/test-bug-679371-apt-get-autoclean-multiarch b/test/integration/test-bug-679371-apt-get-autoclean-multiarch
new file mode 100755
index 000000000..47e5aa184
--- /dev/null
+++ b/test/integration/test-bug-679371-apt-get-autoclean-multiarch
@@ -0,0 +1,27 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildsimplenativepackage 'pkgall' 'all' '1' 'stable'
+buildsimplenativepackage 'pkgnative' 'amd64' '1' 'stable'
+buildsimplenativepackage 'pkgforeign' 'i386' '1' 'stable'
+
+setupaptarchive
+
+changetowebserver
+
+testsuccess aptget update
+testsuccess aptget install pkgall pkgnative pkgforeign -y
+
+# if we work with an old dpkg, pkgforeign will be listed differently,
+# so test with aptcache for install status instead
+testdpkginstalled pkgall pkgnative
+testsuccess aptcache show pkgforeign/installed
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...' aptget autoclean -s
diff --git a/test/integration/test-bug-680041-apt-mark-holds-correctly b/test/integration/test-bug-680041-apt-mark-holds-correctly
new file mode 100755
index 000000000..49bb21bc1
--- /dev/null
+++ b/test/integration/test-bug-680041-apt-mark-holds-correctly
@@ -0,0 +1,76 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'pkgarch' 'amd64' '1'
+insertinstalledpackage 'pkgall' 'all' '1'
+
+insertpackage 'unstable' 'pkgarch' 'amd64' '2'
+insertpackage 'unstable' 'pkgall' 'all' '2'
+
+setupaptarchive
+
+runtests() {
+ testempty aptmark showhold
+
+ testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ pkgall pkgarch
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 0 B of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only
+
+ testsuccessequal 'pkgarch set on hold.' aptmark hold pkgarch
+ testsuccessequal 'pkgarch' aptmark showhold
+
+ testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ pkgarch
+The following packages will be upgraded:
+ pkgall
+1 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
+After this operation, 0 B of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only
+
+ testsuccessequal 'Canceled hold on pkgarch.' aptmark unhold pkgarch
+ testempty aptmark showhold
+
+ testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ pkgall pkgarch
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 0 B of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only
+
+ testsuccessequal 'pkgall set on hold.' aptmark hold pkgall
+ testsuccessequal 'pkgall' aptmark showhold
+
+ testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ pkgall
+The following packages will be upgraded:
+ pkgarch
+1 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
+After this operation, 0 B of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only
+
+ testsuccessequal 'Canceled hold on pkgall.' aptmark unhold pkgall
+ testempty aptmark showhold
+}
+# single-arch
+runtests
+# multi-arch
+configarchitecture 'amd64' 'i386'
+runtests
diff --git a/test/integration/test-bug-683786-build-dep-on-virtual-packages b/test/integration/test-bug-683786-build-dep-on-virtual-packages
new file mode 100755
index 000000000..831e1f831
--- /dev/null
+++ b/test/integration/test-bug-683786-build-dep-on-virtual-packages
@@ -0,0 +1,107 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'armel'
+
+insertinstalledpackage 'build-essential' 'all' '11.5' 'Multi-Arch: foreign'
+
+insertpackage 'unstable' 'po-debconf' 'all' '1'
+insertsource 'unstable' 'dash' 'any' '1' 'Build-Depends: po-debconf'
+insertpackage 'unstable' 'make-po-debconf-pure-virtual' 'armel' '1' 'Depends: po-debconf'
+
+insertsource 'unstable' 'diffutils' 'any' '1' 'Build-Depends: texi2html'
+
+insertpackage 'unstable' 'libselinux1-dev' 'amd64' '1' 'Provides: libselinux-dev'
+insertsource 'unstable' 'sed' 'any' '1' 'Build-Depends: libselinux-dev'
+
+insertpackage 'unstable' 'libsehurd1-dev' 'amd64,armel' '1' 'Provides: libsehurd-dev'
+insertsource 'unstable' 'sed2' 'any' '1' 'Build-Depends: libsehurd-dev'
+
+setupaptarchive
+
+testsuccessequal 'Package: po-debconf:armel
+Versions:
+
+Reverse Depends:
+ make-po-debconf-pure-virtual:armel,po-debconf:armel
+Dependencies:
+Provides:
+Reverse Provides: ' aptcache showpkg po-debconf:armel
+testsuccessequal 'N: Unable to locate package texi2html:armel' aptcache showpkg texi2html:armel
+
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ po-debconf
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst po-debconf (1 unstable [all])
+Conf po-debconf (1 unstable [all])' aptget build-dep dash -s
+
+testfailureequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ builddeps:dash:armel : Depends: po-debconf:armel but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel dash -s
+testfailureequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ builddeps:diffutils:armel : Depends: texi2html:armel but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel diffutils -s
+
+testsuccessequal "Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libselinux1-dev
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libselinux1-dev (1 unstable [amd64])
+Conf libselinux1-dev (1 unstable [amd64])" aptget build-dep sed -s
+
+testfailureequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ builddeps:sed:armel : Depends: libselinux-dev:armel but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel sed -s
+
+testsuccessequal "Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsehurd1-dev
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libsehurd1-dev (1 unstable [amd64])
+Conf libsehurd1-dev (1 unstable [amd64])" aptget build-dep sed2 -s
+
+testsuccessequal "Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsehurd1-dev:armel
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libsehurd1-dev:armel (1 unstable [armel])
+Conf libsehurd1-dev:armel (1 unstable [armel])" aptget build-dep -aarmel sed2 -s
diff --git a/test/integration/test-bug-686346-package-missing-architecture b/test/integration/test-bug-686346-package-missing-architecture
new file mode 100755
index 000000000..d28600a4f
--- /dev/null
+++ b/test/integration/test-bug-686346-package-missing-architecture
@@ -0,0 +1,113 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'pkgb' 'none' '1'
+insertinstalledpackage 'pkgd' 'none' '1'
+insertpackage 'unstable' 'pkga' 'amd64' '2' 'Depends: pkgb'
+insertpackage 'unstable' 'pkgb' 'amd64' '2'
+insertpackage 'unstable' 'pkgc' 'amd64' '1' 'Conflicts: pkgb'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ pkgb:none
+The following NEW packages will be installed:
+ pkgc
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv pkgb:none [1]
+Inst pkgc (1 unstable [amd64])
+Conf pkgc (1 unstable [amd64])' aptget install pkgc -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ pkgb
+The following packages will be REMOVED:
+ pkgb:none
+The following NEW packages will be installed:
+ pkga pkgb
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv pkgb:none [1]
+Inst pkgb (2 unstable [amd64])
+Inst pkga (2 unstable [amd64])
+Conf pkgb (2 unstable [amd64])
+Conf pkga (2 unstable [amd64])' aptget install pkga -s
+
+# do not automatically change from none-arch to whatever-arch as
+# this breaks other none packages and dpkg has this ruleset as
+# this difference seems so important that it has to be maintained …
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget dist-upgrade -s
+
+# pkgd has no update with an architecture
+testdpkginstalled pkgd
+msgtest 'Test apt-get purge' 'pkgd'
+testsuccess --nomsg aptget purge pkgd -y
+testdpkgnotinstalled pkgd
+
+# there is a pkgb with an architecture
+testdpkginstalled pkgb
+msgtest 'Test apt-get purge' 'pkgb:none'
+testsuccess --nomsg aptget purge pkgb:none -y
+testdpkgnotinstalled pkgb
+
+# check that dependencies are created after the none package exists in the cache
+rm rootdir/var/cache/apt/*.bin
+insertinstalledpackage 'pkgb' 'none' '1'
+insertinstalledpackage 'pkgf' 'none' '1' 'Conflicts: pkgb'
+insertinstalledpackage 'pkgg' 'amd64' '1' 'Conflicts: pkgb'
+insertinstalledpackage 'pkgb' 'amd64' '2'
+testequalor2 "Reading package lists...
+Building dependency tree...
+Reading state information...
+You might want to run 'apt --fix-broken install' to correct these.
+The following packages have unmet dependencies:
+ pkgb : Conflicts: pkgb:none but 1 is installed
+ pkgb:none : Conflicts: pkgb but 2 is installed
+ pkgf:none : Conflicts: pkgb:none but 1 is installed
+ Conflicts: pkgb but 2 is installed
+ pkgg : Conflicts: pkgb but 2 is installed
+ Conflicts: pkgb:none but 1 is installed
+E: Unmet dependencies. Try using --fix-broken." "Reading package lists...
+Building dependency tree...
+Reading state information...
+You might want to run 'apt --fix-broken install' to correct these.
+The following packages have unmet dependencies:
+ pkgb : Conflicts: pkgb:none but 1 is installed
+ pkgb:none : Conflicts: pkgb but 2 is installed
+ pkgf:none : Conflicts: pkgb but 2 is installed
+ Conflicts: pkgb:none but 1 is installed
+ pkgg : Conflicts: pkgb but 2 is installed
+ Conflicts: pkgb:none but 1 is installed
+E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution)." aptget check
+
+# check that dependencies are generated for none-packages
+rm rootdir/var/lib/dpkg/status
+insertinstalledpackage 'pkgx' 'none' '1'
+insertinstalledpackage 'pkgy' 'none' '1' 'Depends: pkgz, pkgx (>= 1)'
+insertinstalledpackage 'pkgz' 'none' '1'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ pkgx:none* pkgy:none*
+0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
+Purg pkgy:none [1]
+Purg pkgx:none [1]' aptget purge pkgx -s
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ pkgy:none* pkgz:none*
+0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
+Purg pkgy:none [1]
+Purg pkgz:none [1]' aptget purge pkgz -s
diff --git a/test/integration/test-bug-689582-100-char-long-path-names b/test/integration/test-bug-689582-100-char-long-path-names
new file mode 100755
index 000000000..290654b53
--- /dev/null
+++ b/test/integration/test-bug-689582-100-char-long-path-names
@@ -0,0 +1,35 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+mkdir aptarchive/testpkg
+cd aptarchive/testpkg
+
+for i in $(seq 98 102); do
+ touch "$(printf "%0${i}d" "$i")"
+done
+tar zcf data.tar.gz 00*
+
+echo 'Package: testpkg
+Version: 1-1
+Architecture: all
+Maintainer: Joe Sixpack <joe@example.org>
+Description: Package for test
+Section: debug
+Priority: extra' > control
+tar zcf control.tar.gz control
+
+echo '2.0' > debian-binary
+ar cr ../testpkg.deb debian-binary control.tar.gz data.tar.gz
+
+cd - > /dev/null
+
+testsuccessequal '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000102 testpkg
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101 testpkg
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 testpkg
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099 testpkg
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098 testpkg' aptftparchive contents aptarchive/
diff --git a/test/integration/test-bug-691453-apt-cache-search-multi-pattern b/test/integration/test-bug-691453-apt-cache-search-multi-pattern
new file mode 100755
index 000000000..8aa6ca732
--- /dev/null
+++ b/test/integration/test-bug-691453-apt-cache-search-multi-pattern
@@ -0,0 +1,33 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'native'
+
+insertpackage 'unstable' 'foobar' 'native' '1' '' '' 'funky tool'
+insertpackage 'unstable' 'coolstuff' 'native' '1' '' '' 'funky tool just like foo and bar'
+insertpackage 'unstable' 'foo' 'native' '1' '' '' 'tool best used with bar'
+insertpackage 'unstable' 'bar' 'native' '1' '' '' 'tool best used with foo'
+insertpackage 'unstable' 'baz' 'native' '1' 'Provides: bar' '' 'alternative tool best used with foo'
+
+setupaptarchive
+
+# in this special case the following queries should be equal
+FOOBAR='foobar - funky tool
+coolstuff - funky tool just like foo and bar
+foo - tool best used with bar
+bar - tool best used with foo
+baz - alternative tool best used with foo'
+
+testsuccessequal "$FOOBAR" aptcache search foo
+testsuccessequal "$FOOBAR" aptcache search bar
+testsuccessequal "$FOOBAR" aptcache search foo bar
+
+testsuccessequal 'foobar - funky tool
+foo - tool best used with bar' aptcache search -n foo
+testsuccessequal 'foobar - funky tool
+bar - tool best used with foo
+baz - alternative tool best used with foo' aptcache search -n bar
+testsuccessequal 'foobar - funky tool' aptcache search -n foo bar
diff --git a/test/integration/test-bug-709560-set-candidate-release b/test/integration/test-bug-709560-set-candidate-release
new file mode 100755
index 000000000..43eea36cc
--- /dev/null
+++ b/test/integration/test-bug-709560-set-candidate-release
@@ -0,0 +1,36 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'experimental' 'foo' 'all' '2.0' 'Depends: foo-dep (= 2.1)'
+insertpackage 'experimental' 'foo-dep' 'all' '2.1'
+
+
+(
+cat <<EOF
+Package: *
+Pin: release a=experimental
+Pin-Priority: -10
+EOF
+) > rootdir/etc/apt/preferences
+
+
+setupaptarchive
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Selected version '2.0' (experimental [all]) for 'foo'
+Selected version '2.1' (experimental [all]) for 'foo-dep' because of 'foo'
+The following additional packages will be installed:
+ foo-dep
+The following NEW packages will be installed:
+ foo foo-dep
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo-dep (2.1 experimental [all])
+Inst foo (2.0 experimental [all])
+Conf foo-dep (2.1 experimental [all])
+Conf foo (2.0 experimental [all])" aptget install -q0 -s foo/experimental
diff --git a/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch b/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch
new file mode 100755
index 000000000..9c96bbe52
--- /dev/null
+++ b/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch
@@ -0,0 +1,152 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildsimplenativepackage 'toolkit' 'all' '1' 'stable' 'Multi-Arch: foreign'
+buildsimplenativepackage 'toolkit' 'amd64' '2' 'unstable' 'Multi-Arch: foreign'
+buildsimplenativepackage 'libsame' 'i386,amd64' '1' 'stable' 'Multi-Arch: same'
+buildsimplenativepackage 'libsame' 'i386,amd64' '2' 'unstable' 'Multi-Arch: same'
+buildsimplenativepackage 'stuff' 'i386,amd64' '1' 'stable' 'Depends: libsame (= 1), toolkit (= 1)'
+buildsimplenativepackage 'stuff' 'i386,amd64' '2' 'unstable' 'Depends: libsame (= 2), toolkit (= 2)'
+
+setupsimplenativepackage 'confpkg' 'amd64' '1' 'unstable'
+BUILDDIR='incoming/confpkg-1'
+echo 'foo "bar";' > ${BUILDDIR}/pkg.conf
+echo 'pkg.conf /etc/pkg.conf' >> ${BUILDDIR}/debian/install
+buildpackage "$BUILDDIR" 'unstable' 'main' 'amd64'
+rm -rf "$BUILDDIR"
+
+setupaptarchive
+
+hook='pre-install-pkgs'
+
+enablehookversion() {
+ echo "#!/bin/sh
+FD=0
+echo -n > ${hook}-v${1}.list
+if [ -n \"${2}\" ]; then
+ FD=\$APT_HOOK_INFO_FD
+ if [ "\$FD" != \"${2}\" ]; then echo \"ERROR: Information is not on requested FD: \$FD != ${2}\" >> ${hook}-v${1}.list; fi
+fi
+while read </dev/fd/\$FD line; do
+ if echo \"\$line\" | grep -Fq '**'; then
+ echo \"\$line\"
+ fi
+done >> ${hook}-v${1}.list" > ${hook}-v${1}.sh
+ chmod +x ${hook}-v${1}.sh
+ echo "dpkg::${hook}:: \"./${hook}-v${1}.sh --foo -bar\";
+DPkg::Tools::options::\"./${hook}-v${1}.sh\"::Version \"$1\";" > rootdir/etc/apt/apt.conf.d/hook-v$1
+ if [ -n "$2" ]; then
+ echo "DPkg::Tools::options::\"./${hook}-v${1}.sh\"::InfoFD \"${2}\";" >> rootdir/etc/apt/apt.conf.d/hook-v$1
+ fi
+}
+
+observehook() {
+ rm -f ${hook}-v2.list ${hook}-v3.list
+ msgtest 'Observe hooks while' "$*"
+ testsuccess --nomsg aptget "$@" -y --allow-downgrades --planner $planner -o Debug::pkgDPkgProgressReporting=1
+ # different planners have different orders – we don't care in this test here
+ if [ -e ${hook}-v2.list ]; then
+ sort < ${hook}-v2.list > ${hook}-v2.list.new
+ mv ${hook}-v2.list.new ${hook}-v2.list
+ fi
+ if [ -e ${hook}-v3.list ]; then
+ sort < ${hook}-v3.list > ${hook}-v3.list.new
+ mv ${hook}-v3.list.new ${hook}-v3.list
+ fi
+}
+
+testrun() {
+ observehook install stuff -t stable
+ testfileequal "${hook}-v2.list" 'libsame - < 1 **CONFIGURE**
+stuff - < 1 **CONFIGURE**
+toolkit - < 1 **CONFIGURE**'
+ testfileequal "${hook}-v3.list" 'libsame - - none < 1 amd64 same **CONFIGURE**
+stuff - - none < 1 amd64 none **CONFIGURE**
+toolkit - - none < 1 all foreign **CONFIGURE**'
+
+ observehook install stuff -t unstable
+ testfileequal "${hook}-v2.list" 'libsame 1 < 2 **CONFIGURE**
+stuff 1 < 2 **CONFIGURE**
+toolkit 1 < 2 **CONFIGURE**'
+ testfileequal "${hook}-v3.list" 'libsame 1 amd64 same < 2 amd64 same **CONFIGURE**
+stuff 1 amd64 none < 2 amd64 none **CONFIGURE**
+toolkit 1 all foreign < 2 amd64 foreign **CONFIGURE**'
+
+ observehook install stuff:i386 -t unstable
+ testfileequal "${hook}-v2.list" 'libsame - < 2 **CONFIGURE**
+stuff - < 2 **CONFIGURE**
+stuff 2 > - **REMOVE**'
+ testfileequal "${hook}-v3.list" 'libsame - - none < 2 i386 same **CONFIGURE**
+stuff - - none < 2 i386 none **CONFIGURE**
+stuff 2 amd64 none > - - none **REMOVE**'
+
+ observehook remove libsame
+ testfileequal "${hook}-v2.list" 'libsame 2 > - **REMOVE**'
+ testfileequal "${hook}-v3.list" 'libsame 2 amd64 same > - - none **REMOVE**'
+
+ observehook install stuff:i386/stable libsame:i386/stable toolkit/stable
+ testfileequal "${hook}-v2.list" 'libsame 2 > 1 **CONFIGURE**
+stuff 2 > 1 **CONFIGURE**
+toolkit 2 > 1 **CONFIGURE**'
+ testfileequal "${hook}-v3.list" 'libsame 2 i386 same > 1 i386 same **CONFIGURE**
+stuff 2 i386 none > 1 i386 none **CONFIGURE**
+toolkit 2 amd64 foreign > 1 all foreign **CONFIGURE**'
+
+ observehook install 'libsame:*'
+ testfileequal "${hook}-v2.list" 'libsame - < 2 **CONFIGURE**
+libsame 1 < 2 **CONFIGURE**
+stuff 1 < 2 **CONFIGURE**
+toolkit 1 < 2 **CONFIGURE**'
+ testfileequal "${hook}-v3.list" 'libsame - - none < 2 amd64 same **CONFIGURE**
+libsame 1 i386 same < 2 i386 same **CONFIGURE**
+stuff 1 i386 none < 2 i386 none **CONFIGURE**
+toolkit 1 all foreign < 2 amd64 foreign **CONFIGURE**'
+
+ observehook purge stuff:i386 'libsame:*' toolkit
+ testfileequal "${hook}-v2.list" 'libsame 2 > - **REMOVE**
+libsame 2 > - **REMOVE**
+stuff 2 > - **REMOVE**
+toolkit 2 > - **REMOVE**'
+ testfileequal "${hook}-v3.list" 'libsame 2 amd64 same > - - none **REMOVE**
+libsame 2 i386 same > - - none **REMOVE**
+stuff 2 i386 none > - - none **REMOVE**
+toolkit 2 amd64 foreign > - - none **REMOVE**'
+
+ observehook install confpkg
+ testfileequal "${hook}-v2.list" 'confpkg - < 1 **CONFIGURE**'
+ testfileequal "${hook}-v3.list" 'confpkg - - none < 1 amd64 none **CONFIGURE**'
+
+ observehook remove confpkg
+ testfileequal "${hook}-v2.list" 'confpkg 1 > - **REMOVE**'
+ testfileequal "${hook}-v3.list" 'confpkg 1 amd64 none > - - none **REMOVE**'
+
+ msgtest 'Conffiles of package remained after remove' 'confpkg'
+ dpkg -l confpkg | grep -q '^rc' && msgpass || msgfail
+
+ observehook purge confpkg
+ testfileequal "${hook}-v2.list" 'confpkg 1 > - **REMOVE**'
+ testfileequal "${hook}-v3.list" 'confpkg 1 amd64 none > - - none **REMOVE**'
+
+ msgtest 'Conffiles are gone after purge' 'confpkg'
+ dpkg -l confpkg 2>/dev/null | grep -q '^rc' && msgfail || msgpass
+}
+
+runwithplanner()
+{
+ msgmsg 'Running with planner' "$1"
+ planner="$1"
+ enablehookversion 2
+ enablehookversion 3
+ testrun
+
+ enablehookversion 2 13
+ enablehookversion 3 13
+ testrun
+}
+
+runwithplanner 'apt'
diff --git a/test/integration/test-bug-712435-missing-descriptions b/test/integration/test-bug-712435-missing-descriptions
new file mode 100755
index 000000000..c23199305
--- /dev/null
+++ b/test/integration/test-bug-712435-missing-descriptions
@@ -0,0 +1,162 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+PACKAGESTANZA='Version: 0.9.7.8
+Installed-Size: 3270
+Maintainer: APT Development Team <deity@lists.debian.org>
+Architecture: amd64
+Filename: pool/main/a/apt/apt_0.9.7.8_amd64.deb
+MD5sum: 3a622acda41620df50aa22a9fac6f32e'
+
+DESCRIPTION='Description: commandline package manager
+ This APT has Super Cow Powers.'
+
+TRANSDESCRIPTION='Description-en: commandline package manager
+ This APT has translated Super Cow Powers.'
+
+echo "Package: apt-normal
+$PACKAGESTANZA
+$DESCRIPTION
+Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+Package: apt-both-below
+$PACKAGESTANZA
+$DESCRIPTION
+$TRANSDESCRIPTION
+Description-md5: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+
+Package: apt-both-middle
+$PACKAGESTANZA
+$DESCRIPTION
+Description-md5: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+$TRANSDESCRIPTION
+
+Package: apt-both-top
+$PACKAGESTANZA
+Description-md5: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+$DESCRIPTION
+$TRANSDESCRIPTION
+
+Package: apt-trans
+$PACKAGESTANZA
+$TRANSDESCRIPTION
+Description-md5: cccccccccccccccccccccccccccccccc
+
+Package: apt-md5
+$PACKAGESTANZA
+Description-md5: dddddddddddddddddddddddddddddddd
+
+Package: apt-none
+$PACKAGESTANZA
+
+Package: apt-intermixed
+$PACKAGESTANZA
+$DESCRIPTION
+X-Some-Flag: yes
+Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+Package: apt-intermixed2
+$PACKAGESTANZA
+$DESCRIPTION
+X-Some-Flag: yes
+$TRANSDESCRIPTION
+X-Foo-Flag: Something with a Description
+Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+X-Bar-Flag: no
+
+Package: apt-intermixed3
+$PACKAGESTANZA
+$DESCRIPTION
+X-Some-Flag: yes
+$TRANSDESCRIPTION
+X-Foo-Flag: Something with a Description
+X-Bar-Flag: no
+Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" > aptarchive/Packages
+
+
+setupaptarchive
+
+testsuccessequal "Package: apt-normal
+$PACKAGESTANZA
+$DESCRIPTION
+Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+" aptcache show apt-normal
+
+for variant in 'below' 'middle' 'top'; do
+ testsuccessequal "Package: apt-both-$variant
+$PACKAGESTANZA
+$TRANSDESCRIPTION
+Description-md5: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+" aptcache show apt-both-$variant
+done
+
+testsuccessequal "Package: apt-trans
+$PACKAGESTANZA
+$TRANSDESCRIPTION
+Description-md5: cccccccccccccccccccccccccccccccc
+" aptcache show apt-trans
+
+testsuccessequal "Package: apt-md5
+$PACKAGESTANZA
+Description-md5: dddddddddddddddddddddddddddddddd
+" aptcache show apt-md5
+
+testsuccessequal "Package: apt-none
+$PACKAGESTANZA
+" aptcache show apt-none
+
+testsuccessequal "Package: apt-intermixed
+$PACKAGESTANZA
+$DESCRIPTION
+Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+X-Some-Flag: yes
+" aptcache show apt-intermixed
+
+testsuccessequal "Package: apt-intermixed2
+$PACKAGESTANZA
+$TRANSDESCRIPTION
+Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+X-Some-Flag: yes
+X-Foo-Flag: Something with a Description
+X-Bar-Flag: no
+" aptcache show apt-intermixed2
+
+testsuccessequal "Package: apt-intermixed3
+$PACKAGESTANZA
+$TRANSDESCRIPTION
+Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+X-Some-Flag: yes
+X-Foo-Flag: Something with a Description
+X-Bar-Flag: no
+" aptcache show apt-intermixed3
+
+msgtest 'Test that no description does not destroy' 'showpkg'
+aptcache showpkg apt-none | sed 's#/tmp/.*_aptarchive_#/tmp/aptarchive_#' >showpkg.explosion && msgpass || msgfail
+testfileequal showpkg.explosion 'Package: apt-none
+Versions:
+0.9.7.8 (/tmp/aptarchive_Packages)
+
+
+Reverse Depends:
+Dependencies:
+0.9.7.8 -
+Provides:
+0.9.7.8 -
+Reverse Provides: '
+
+testempty aptcache search nonexistentstring
+
+# packages without a description can't be found
+testsuccessequal 'apt-normal - commandline package manager
+apt-both-below - commandline package manager
+apt-both-middle - commandline package manager
+apt-both-top - commandline package manager
+apt-trans - commandline package manager
+apt-intermixed - commandline package manager
+apt-intermixed2 - commandline package manager
+apt-intermixed3 - commandline package manager' aptcache search apt
diff --git a/test/integration/test-bug-717891-abolute-uris-for-proxies b/test/integration/test-bug-717891-abolute-uris-for-proxies
new file mode 100755
index 000000000..ed9b9a555
--- /dev/null
+++ b/test/integration/test-bug-717891-abolute-uris-for-proxies
@@ -0,0 +1,28 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'unrelated' 'all' '0.5~squeeze1' 'unstable'
+
+setupaptarchive
+changetowebserver --request-absolute='uri'
+
+msgtest 'Check that absolute paths are' 'not accepted'
+testfailure --nomsg aptget update --allow-insecure-repositories
+
+echo "Acquire::http::Proxy \"http://localhost:${APTHTTPPORT}\";" > rootdir/etc/apt/apt.conf.d/99proxy
+
+msgtest 'Check that requests to proxies are' 'absolute uris'
+testsuccess --nomsg aptget update
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ unrelated
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst unrelated (0.5~squeeze1 unstable [all])
+Conf unrelated (0.5~squeeze1 unstable [all])' aptget install unrelated -s
diff --git a/test/integration/test-bug-718329-support-data.tar-uncompressed b/test/integration/test-bug-718329-support-data.tar-uncompressed
new file mode 100755
index 000000000..b1aa419a7
--- /dev/null
+++ b/test/integration/test-bug-718329-support-data.tar-uncompressed
@@ -0,0 +1,31 @@
+#!/bin/sh
+set -e
+
+test_process_package_with_compression() {
+ COMPRESSOR="$1"
+ DATA_TAR="$2"
+
+ msgmsg "Testing apt-ftparchive with compression type: $COMPRESSOR"
+
+ buildsimplenativepackage 'pkg' 'all' '1.0' '' '' 'some descr' '' '' '' "$COMPRESSOR"
+ testsuccessequal "debian-binary
+control.tar.gz
+$DATA_TAR" ar t incoming/pkg_1.0_all.deb
+
+ testequal "Package: pkg" echo "$(aptftparchive packages incoming/|grep ^Package)"
+
+ testsuccessequal "usr/bin/pkg-all pkg
+usr/share/doc/pkg/FEATURES pkg
+usr/share/doc/pkg/changelog pkg
+usr/share/doc/pkg/copyright pkg" aptftparchive contents incoming/
+
+ rm -rf incoming/*
+}
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+test_process_package_with_compression "gzip" "data.tar.gz"
+test_process_package_with_compression "none" "data.tar"
+test_process_package_with_compression "xz" "data.tar.xz"
diff --git a/test/integration/test-bug-719263-print-uris-removes-authentication b/test/integration/test-bug-719263-print-uris-removes-authentication
new file mode 100755
index 000000000..e79e6912d
--- /dev/null
+++ b/test/integration/test-bug-719263-print-uris-removes-authentication
@@ -0,0 +1,42 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'unrelated' 'all' '1'
+buildsimplenativepackage 'unrelated' 'all' '2' 'unstable'
+
+setupaptarchive
+
+testnoact() {
+ cp -a rootdir/var/lib/dpkg/status rootdir/var/lib/dpkg/status-backup-noact
+ touch rootdir/var/lib/apt/extended_states
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be upgraded:
+ unrelated
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst unrelated [1] (2 unstable [all])
+Conf unrelated (2 unstable [all])' aptget install unrelated -s
+ testsuccess aptget install unrelated -y
+ testdpkginstalled unrelated
+ rm -rf rootdir/var/cache/apt/*.bin
+ cp -a rootdir/var/lib/dpkg/status-backup-noact rootdir/var/lib/dpkg/status
+}
+
+testnoact
+testsuccess aptget update --print-uris
+testnoact
+
+# same thing, just not with InRelease this time
+rm -rf rootdir/var/lib/apt/lists
+testsuccess aptget update -o Acquire::TryInRelease=0
+
+testnoact
+testsuccess aptget update --print-uris -o Acquire::TryInRelease=0
+testnoact
diff --git a/test/integration/test-bug-720597-build-dep-purge b/test/integration/test-bug-720597-build-dep-purge
new file mode 100755
index 000000000..4b36989ee
--- /dev/null
+++ b/test/integration/test-bug-720597-build-dep-purge
@@ -0,0 +1,65 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+
+# we need this construct here as it isn't really possible to fake native arch for dpkg-* tools
+NATIVE="$(command dpkg --print-architecture)"
+configarchitecture $NATIVE
+
+insertinstalledpackage 'build-essential' 'all' '11.5' 'Multi-Arch: foreign'
+insertinstalledpackage 'pkga' 'all' '1'
+buildsimplenativepackage 'pkgb' "$NATIVE" '1' 'stable' 'Conflicts: pkga'
+buildsimplenativepackage 'pkgc' "$NATIVE" '1' 'stable' 'Build-Depends: pkgb'
+
+setupaptarchive
+
+testsuccessequal "Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ pkga
+The following NEW packages will be installed:
+ pkgb
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv pkga [1]
+Inst pkgb (1 stable [$NATIVE])
+Conf pkgb (1 stable [$NATIVE])" aptget build-dep pkgc -s
+
+testsuccessequal "Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ pkga*
+The following NEW packages will be installed:
+ pkgb
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Purg pkga [1]
+Inst pkgb (1 stable [$NATIVE])
+Conf pkgb (1 stable [$NATIVE])" aptget build-dep pkgc -s --purge
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' apt autoremove -s
+testdpkgnotinstalled pkgb
+testsuccess apt build-dep pkgc -y -o Debug::pkgDepCache::AutoInstall=1 -o Debug::pkgDepCache::Marker=1
+testdpkginstalled pkgb
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' apt autoremove -s
+testsuccess apt purge pkgb pkgc -y
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' apt autoremove -s
+testsuccess apt build-dep pkgc -y -o APT::Get::Build-Dep-Automatic=true
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ pkgb
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv pkgb [1]' apt autoremove -s
diff --git a/test/integration/test-bug-722207-print-uris-even-if-very-quiet b/test/integration/test-bug-722207-print-uris-even-if-very-quiet
new file mode 100755
index 000000000..82c1d715f
--- /dev/null
+++ b/test/integration/test-bug-722207-print-uris-even-if-very-quiet
@@ -0,0 +1,31 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'apt' 'all' '1'
+insertpackage 'unstable' 'apt' 'all' '2'
+insertsource 'unstable' 'apt' 'all' '2'
+insertsource 'unstable' 'apt2' 'all' '1'
+
+getoriginfromsuite() { echo 'Debian'; }
+setupaptarchive
+
+APTARCHIVE=$(readlink -f ./aptarchive)
+
+testsuccessequal "'file://${APTARCHIVE}/pool/main/apt/apt_2_all.deb' apt_2_all.deb 0 " aptget upgrade -qq --print-uris
+testsuccessequal "'file://${APTARCHIVE}/pool/main/apt/apt_2_all.deb' apt_2_all.deb 0 " aptget dist-upgrade -qq --print-uris
+testsuccessequal "'file://${APTARCHIVE}/pool/main/apt/apt_2_all.deb' apt_2_all.deb 0 " aptget install apt -qq --print-uris
+testsuccessequal "'file://${APTARCHIVE}/pool/main/apt/apt_2_all.deb' apt_2_all.deb 0 SHA256:0000000000000000000000000000000000000000000000000000000000000000" aptget download apt -qq --print-uris
+testsuccessequal "'file://${APTARCHIVE}/apt_2.dsc' apt_2.dsc 9 SHA256:7776436a6d741497f1cd958014e1a05b352224231428152aae39da3c17fd2fd4
+'file://${APTARCHIVE}/apt_2.tar.gz' apt_2.tar.gz 12 SHA256:f57f565eabe3fde0ec6e6e0bcc8db1d86fe2b4d6344a380a23520ddbb7728e99" aptget source apt -qq --print-uris
+testsuccessequal "'http://metadata.ftp-master.debian.org/changelogs/main/a/apt/apt_2_changelog' apt.changelog" aptget changelog apt -qq --print-uris
+
+testsuccessequal "'file://${APTARCHIVE}/apt_2.dsc' apt_2.dsc 9 SHA256:7776436a6d741497f1cd958014e1a05b352224231428152aae39da3c17fd2fd4
+'file://${APTARCHIVE}/apt_2.tar.gz' apt_2.tar.gz 12 SHA256:f57f565eabe3fde0ec6e6e0bcc8db1d86fe2b4d6344a380a23520ddbb7728e99
+'file://${APTARCHIVE}/apt2_1.dsc' apt2_1.dsc 10 SHA256:5693ba5efbfa21216f13661d344611aabe70ce3c343554ab46d4d9c24fdfd13a
+'file://${APTARCHIVE}/apt2_1.tar.gz' apt2_1.tar.gz 13 SHA256:1464c609fd09934c270ec629020d5e248b080607f715e47ef088cc8ab8480541" aptget source apt apt2 -qq --print-uris
diff --git a/test/integration/test-bug-723586-any-stripped-in-single-arch b/test/integration/test-bug-723586-any-stripped-in-single-arch
new file mode 100755
index 000000000..38eb026ff
--- /dev/null
+++ b/test/integration/test-bug-723586-any-stripped-in-single-arch
@@ -0,0 +1,54 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'python3' 'all' '3.2.3-6'
+
+insertpackage 'unstable' 'python3' 'amd64' '3.3.2-16' 'Multi-Arch: allowed'
+insertpackage 'stable' 'python3-gnupg' 'all' '0.3.5-2' 'Depends: python3:any (>= 3.2.3-3~)'
+
+insertpackage 'unstable' 'python-mips' 'amd64' '3' 'Depends: python3:mips'
+
+setupaptarchive
+
+INSTALLLOG='Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ python3
+The following NEW packages will be installed:
+ python3-gnupg
+The following packages will be upgraded:
+ python3
+1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst python3 [3.2.3-6] (3.3.2-16 unstable [amd64])
+Inst python3-gnupg (0.3.5-2 stable [all])
+Conf python3 (3.3.2-16 unstable [amd64])
+Conf python3-gnupg (0.3.5-2 stable [all])'
+
+FAILLOG='Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ python-mips : Depends: python3:mips but it is not installable
+E: Unable to correct problems, you have held broken packages.'
+
+testsuccessequal "$INSTALLLOG" aptget install python3-gnupg -s
+aptcache showpkg python3 > showpkg.log
+testfailureequal "$FAILLOG" aptget install python-mips -s
+
+# same test, but this time in a multi-arch environment
+configarchitecture 'amd64' 'armhf'
+rm rootdir/var/cache/apt/*.bin
+
+testsuccessequal "$INSTALLLOG" aptget install python3-gnupg -s
+testsuccessequal "$(cat showpkg.log)" aptcache showpkg python3
+testfailureequal "$FAILLOG" aptget install python-mips -s
diff --git a/test/integration/test-bug-723705-tagfile-truncates-fields b/test/integration/test-bug-723705-tagfile-truncates-fields
new file mode 100755
index 000000000..bfa3598ae
--- /dev/null
+++ b/test/integration/test-bug-723705-tagfile-truncates-fields
@@ -0,0 +1,33 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+setupaptarchive
+
+aptget install --print-uris -y cdebconf-newt-terminal cdebconf-gtk-terminal 2>&1 | sed "s#file://${TMPWORKINGDIRECTORY}#file:///tmp#g" > filename.log
+
+testfileequal filename.log "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ cdebconf-gtk-udeb cdebconf-newt-udeb cdebconf-udeb libc6-udeb
+ libglib2.0-udeb libgtk2.0-0-udeb libvte9-udeb
+The following NEW packages will be installed:
+ cdebconf-gtk-terminal cdebconf-gtk-udeb cdebconf-newt-terminal
+ cdebconf-newt-udeb cdebconf-udeb libc6-udeb libglib2.0-udeb libgtk2.0-0-udeb
+ libvte9-udeb
+0 upgraded, 9 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/4774 kB of archives.
+After this operation, 19.8 MB of additional disk space will be used.
+'file:///tmp/aptarchive/pool/main/c/cdebconf/cdebconf-udeb_0.185_amd64.udeb' cdebconf-udeb_0.185_amd64.udeb 77376 MD5Sum:e3883706fdbf54c2e5ea959c92b2d37f
+'file:///tmp/aptarchive/pool/main/c/cdebconf/cdebconf-gtk-udeb_0.185_amd64.udeb' cdebconf-gtk-udeb_0.185_amd64.udeb 27278 MD5Sum:a1bbbc1d4fb8e0615b5621abac021924
+'file:///tmp/aptarchive/pool/main/c/cdebconf/cdebconf-newt-udeb_0.185_amd64.udeb' cdebconf-newt-udeb_0.185_amd64.udeb 19192 MD5Sum:de27807f56dae2f2403b3322d5fe6bd2
+'file:///tmp/aptarchive/pool/main/g/glib2.0/libglib2.0-udeb_2.36.4-1_amd64.udeb' libglib2.0-udeb_2.36.4-1_amd64.udeb 1714604 MD5Sum:72da029f1bbb36057d874f1f82a5d00a
+'file:///tmp/aptarchive/pool/main/e/eglibc/libc6-udeb_2.17-92+b1_amd64.udeb' libc6-udeb_2.17-92+b1_amd64.udeb 1056000 MD5Sum:7fd7032eeeecf7f76eff79a0543fbd72
+'file:///tmp/aptarchive/pool/main/g/gtk+2.0/libgtk2.0-0-udeb_2.24.20-1_amd64.udeb' libgtk2.0-0-udeb_2.24.20-1_amd64.udeb 1643046 MD5Sum:25513478eb2e02e5766c0eea0b411ca9
+'file:///tmp/aptarchive/pool/main/v/vte/libvte9-udeb_0.28.2-5_amd64.udeb' libvte9-udeb_1%3a0.28.2-5_amd64.udeb 216968 MD5Sum:7da7201effaf5ced19abd9d0b45aa2c6
+'file:///tmp/aptarchive/pool/main/c/cdebconf-terminal/cdebconf-gtk-terminal_0.22_amd64.udeb' cdebconf-gtk-terminal_0.22_amd64.udeb 14734 MD5Sum:f9c3a7354560cb88e0396e2b7ba54363
+'file:///tmp/aptarchive/pool/main/c/cdebconf-terminal/cdebconf-newt-terminal_0.22_amd64.udeb' cdebconf-newt-terminal_0.22_amd64.udeb 4538 MD5Sum:20db6152fce5081fcbf49c7c08f21246"
diff --git a/test/integration/test-bug-728500-tempdir b/test/integration/test-bug-728500-tempdir
new file mode 100755
index 000000000..37661d168
--- /dev/null
+++ b/test/integration/test-bug-728500-tempdir
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'coolstuff' 'all' '1.0'
+
+setupaptarchive
+changetowebserver
+
+msgtest 'Test apt-get update with incorrect' 'TMPDIR'
+
+export TMPDIR=/does-not-exists
+testsuccess aptget update -o Debug::Acquire::gpg=1
+unset TMPDIR
+
+testsuccessequal 'coolstuff
+dpkg' aptcache pkgnames
+testsuccess ls rootdir/var/lib/apt/lists/*InRelease
diff --git a/test/integration/test-bug-732746-preferences b/test/integration/test-bug-732746-preferences
new file mode 100755
index 000000000..d3bbdadfe
--- /dev/null
+++ b/test/integration/test-bug-732746-preferences
@@ -0,0 +1,32 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertinstalledpackage 'bar' 'i386' '1.0'
+
+cat > rootdir/etc/apt/preferences << EOF
+# random test comment header
+
+# commented out by puppy^Wpuppet
+#Package: foo
+#Pin: origin "ftp.debian.org"
+#Pin: 800
+
+Package: bar
+Pin: version 1.0
+Pin-Priority: 700
+
+#Package: bar
+#Pin: version 1.0
+#Pin: 800
+EOF
+
+testsuccessequal "Reading package lists...
+Building dependency tree..." aptget check
+
+msgtest "Ensure policy is applied"
+aptcache policy bar|grep -q "*** 1.0 700" && msgpass || msgfail
diff --git a/test/integration/test-bug-733028-gpg-resource-limit b/test/integration/test-bug-733028-gpg-resource-limit
new file mode 100755
index 000000000..69baf4e5c
--- /dev/null
+++ b/test/integration/test-bug-733028-gpg-resource-limit
@@ -0,0 +1,25 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'foobar' 'all' '1'
+
+setupaptarchive --no-update
+
+for i in $(seq 1 50); do
+ touch rootdir/etc/apt/trusted.gpg.d/emptykey-${i}.gpg
+done
+testaptkeys 'Joe Sixpack'
+
+testsuccess aptget update
+msgtest 'Test for no gpg errors/warnings in' 'apt-get update'
+if grep -iq 'GPG' rootdir/tmp/testsuccess.output; then
+ cat rootdir/tmp/testsuccess.output
+ msgfail
+else
+ msgpass
+fi
diff --git a/test/integration/test-bug-734922-apt-showsrc-duplicate b/test/integration/test-bug-734922-apt-showsrc-duplicate
new file mode 100755
index 000000000..d4370e2ba
--- /dev/null
+++ b/test/integration/test-bug-734922-apt-showsrc-duplicate
@@ -0,0 +1,25 @@
+#!/bin/sh
+set -e
+
+TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+setupenvironment
+configarchitecture 'i386'
+
+# foo is identical, show it only once in showsrc
+insertpackage "unstable" "foo" "i386" "1.0"
+insertpackage "testing" "foo" "i386" "1.0"
+insertsource "unstable" "foo" "i386" "1.0"
+insertsource "testing" "foo" "i386" "1.0"
+
+# bar is different, show twice
+insertsource "unstable" "bar" "i386" "1.0"
+insertsource "testing" "bar" "i386" "2.0"
+
+setupaptarchive
+
+# ensure "foo" is not shown twice
+aptcache showsrc foo bar|grep ^Package: > out.txt
+testequal "Package: foo
+Package: bar
+Package: bar" cat out.txt
diff --git a/test/integration/test-bug-735967-lib32-to-i386-unavailable b/test/integration/test-bug-735967-lib32-to-i386-unavailable
new file mode 100755
index 000000000..3b705d5f9
--- /dev/null
+++ b/test/integration/test-bug-735967-lib32-to-i386-unavailable
@@ -0,0 +1,91 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386' 'amd64'
+
+insertpackage 'unstable' 'lib32nss-mdns' 'amd64' '0.10-6' 'Depends: libnss-mdns-i386 (= 0.10-6)'
+insertpackage 'unstable' 'libnss-mdns' 'amd64,i386' '0.10-6' 'Multi-Arch: same
+Breaks: lib32nss-mdns (<< 0.10-6)'
+insertpackage 'unstable' 'libnss-mdns-i386' 'i386' '0.10-6' 'Multi-Arch: foreign
+Depends: libnss-mdns'
+# introduce some dummies so that there are versions, but none works
+insertpackage 'unstable' 'libnss-mdns-i386' 'amd64' '0.1-6'
+insertpackage 'experimental' 'libnss-mdns-amd64' 'i386,amd64' '0.10-6' 'Provides: libnss-mdns-i386'
+
+insertpackage 'unstable' 'foo' 'amd64' '1' 'Depends: libfoo'
+insertpackage 'unstable' 'libfoo' 'amd64' '1' 'Depends: libfoo-bin'
+insertpackage 'unstable' 'libfoo-bin' 'i386' '0.10-6' 'Multi-Arch: foreign'
+
+insertinstalledpackage 'lib32nss-mdns' 'amd64' '0.9-1'
+insertinstalledpackage 'libnss-mdns' 'amd64' '0.9-1'
+
+insertinstalledpackage 'i-make-packages-important' 'all' '1' 'Depends: libnss-mdns'
+
+setupaptarchive --no-update
+
+# make libnss-mdns-i386 unavailable
+configarchitecture 'amd64'
+testsuccess aptget update
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ lib32nss-mdns
+The following packages will be upgraded:
+ libnss-mdns
+1 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv lib32nss-mdns [0.9-1]
+Inst libnss-mdns [0.9-1] (0.10-6 unstable [amd64])
+Conf libnss-mdns (0.10-6 unstable [amd64])' aptget dist-upgrade -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ foo : Depends: libfoo but it is not going to be installed
+E: Unable to correct problems, you have held broken packages.' aptget install foo -s
+
+# activate multiarch
+configarchitecture 'amd64' 'i386'
+testsuccess aptget update
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ libnss-mdns:i386 libnss-mdns-i386:i386
+The following packages will be upgraded:
+ lib32nss-mdns libnss-mdns
+2 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst lib32nss-mdns [0.9-1] (0.10-6 unstable [amd64]) []
+Inst libnss-mdns [0.9-1] (0.10-6 unstable [amd64]) []
+Inst libnss-mdns:i386 (0.10-6 unstable [i386]) []
+Inst libnss-mdns-i386:i386 (0.10-6 unstable [i386])
+Conf lib32nss-mdns (0.10-6 unstable [amd64])
+Conf libnss-mdns (0.10-6 unstable [amd64])
+Conf libnss-mdns:i386 (0.10-6 unstable [i386])
+Conf libnss-mdns-i386:i386 (0.10-6 unstable [i386])' aptget dist-upgrade -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libfoo libfoo-bin:i386
+The following NEW packages will be installed:
+ foo libfoo libfoo-bin:i386
+0 upgraded, 3 newly installed, 0 to remove and 2 not upgraded.
+Inst libfoo-bin:i386 (0.10-6 unstable [i386])
+Inst libfoo (1 unstable [amd64])
+Inst foo (1 unstable [amd64])
+Conf libfoo-bin:i386 (0.10-6 unstable [i386])
+Conf libfoo (1 unstable [amd64])
+Conf foo (1 unstable [amd64])' aptget install foo -s
diff --git a/test/integration/test-bug-737130-multicompress-file-modes b/test/integration/test-bug-737130-multicompress-file-modes
new file mode 100755
index 000000000..2ae5166df
--- /dev/null
+++ b/test/integration/test-bug-737130-multicompress-file-modes
@@ -0,0 +1,30 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+cat >aptarchive/ftparchive.conf <<EOF
+Dir { ArchiveDir "$(pwd)/aptarchive"; CacheDir "$(pwd)/aptarchive"; };
+Default { Translation::Compress ". gzip bzip2 xz"; FileMode 0644; };
+tree "dists/sid" {
+ Sections "main";
+ Architectures "i386";
+ LongDescription "false";
+};
+EOF
+mkdir -p aptarchive/dists/sid/main/binary-i386
+mkdir -p aptarchive/dists/sid/main/i18n
+testsuccess aptftparchive generate aptarchive/ftparchive.conf
+i18n=aptarchive/dists/sid/main/i18n
+for comp in '' .gz .bz2 .xz; do
+ msgtest 'Test apt-ftparchive file mode is 644 for' "Translation-en$comp"
+ FILEMODE="$(stat --format %a "$i18n/Translation-en$comp")"
+ if [ "$FILEMODE" != '644' ]; then
+ msgfail "Mode was '$FILEMODE'!"
+ else
+ msgpass
+ fi
+done
diff --git a/test/integration/test-bug-738785-switch-protocol b/test/integration/test-bug-738785-switch-protocol
new file mode 100755
index 000000000..690e8727e
--- /dev/null
+++ b/test/integration/test-bug-738785-switch-protocol
@@ -0,0 +1,50 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+buildsimplenativepackage 'apt' 'all' '1.0' 'stable'
+
+# setup http redirecting to https
+getlabelfromsuite() { echo 'Testcases'; }
+setupaptarchive --no-update
+changetohttpswebserver -o 'aptwebserver::support::http=false'
+webserverconfig 'aptwebserver::redirect::replace::/downgrademe/' "http://localhost:${APTHTTPPORT}/"
+webserverconfig 'aptwebserver::redirect::replace::/redirectme/' "https://localhost:${APTHTTPSPORT}/"
+sed -i -e "s#:${APTHTTPSPORT}/#:${APTHTTPPORT}/redirectme#" -e 's# https:# http:#' rootdir/etc/apt/sources.list.d/*
+
+testsuccess aptget update -o Debug::Acquire::http=1 -o Debug::Acquire::https=1 -o Debug::pkgAcquire::Worker=1
+
+msgtest 'Test that the webserver does not answer' 'http requests'
+downloadfile "http://localhost:${APTHTTPPORT}/pool/main/a/apt/apt_1.0/changelog" changelog >/dev/null 2>&1 && msgfail || msgpass
+
+echo "Acquire::Changelogs::URI::Label::Testcases \"http://localhost:${APTHTTPPORT}/redirectme/pool/@CHANGEPATH@/changelog\";" > rootdir/etc/apt/apt.conf.d/changelog.conf
+testsuccessequal "'http://localhost:${APTHTTPPORT}/redirectme/pool/main/a/apt/apt_1.0/changelog' apt.changelog" aptget changelog apt --print-uris
+
+cd downloaded
+testsuccess aptget changelog apt -d
+testsuccess test -s apt.changelog
+rm -f apt.changelog
+
+testsuccess aptget download apt
+testsuccess test -s apt_1.0_all.deb
+rm apt_1.0_all.deb
+cd - >/dev/null
+
+testsuccess aptget install apt -y
+testdpkginstalled 'apt'
+
+cd downloaded
+testfailureequal "E: The method 'https' is explicitly disabled via configuration.
+N: If you meant to use Tor remember to use tor+https instead of https." aptget download apt -o Dir::Bin::Methods::https=false
+testfailure test -e apt_1.0_all.deb
+cd - >/dev/null
+
+# check that downgrades from https to http are not allowed
+webserverconfig 'aptwebserver::support::http' 'true'
+sed -i -e "s#:${APTHTTPPORT}/redirectme#:${APTHTTPSPORT}/downgrademe#" -e 's# http:# https:#' rootdir/etc/apt/sources.list.d/*
+testfailure aptget update --allow-insecure-repositories -o Acquire::https::Timeout=1
diff --git a/test/integration/test-bug-740843-versioned-up-down-breaks b/test/integration/test-bug-740843-versioned-up-down-breaks
new file mode 100755
index 000000000..69adceffd
--- /dev/null
+++ b/test/integration/test-bug-740843-versioned-up-down-breaks
@@ -0,0 +1,57 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'foo-driver' 'amd64' '1' 'Depends: libfoo (= 1)
+Recommends: libgl1-foo-glx (= 1)
+Breaks: libgl1-foo-glx (<< 1), libgl1-foo-glx (>> 1)'
+insertinstalledpackage 'libgl1-foo-glx' 'amd64,i386' '1' 'Depends: libfoo (= 1)
+Multi-Arch: same'
+insertinstalledpackage 'libfoo' 'amd64,i386' '1' 'Multi-Arch: same'
+
+buildsimplenativepackage 'foo-driver' 'amd64' '2' 'stable' 'Depends: libfoo (= 2)
+Recommends: libgl1-foo-glx (= 2)
+Breaks: libgl1-foo-glx (<< 2), libgl1-foo-glx (>> 2)'
+buildsimplenativepackage 'libgl1-foo-glx' 'amd64,i386' '2' 'stable' 'Depends: libfoo (= 2)
+Multi-Arch: same'
+buildsimplenativepackage 'libfoo' 'amd64,i386' '2' 'stable' 'Multi-Arch: same'
+
+setupaptarchive
+
+testequalor2 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ foo-driver libfoo libfoo:i386 libgl1-foo-glx libgl1-foo-glx:i386
+5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst libgl1-foo-glx [1] (2 stable [amd64]) [libgl1-foo-glx:amd64 on libgl1-foo-glx:i386] [libgl1-foo-glx:i386 on libgl1-foo-glx:amd64] [foo-driver:amd64 on libgl1-foo-glx:amd64] [libgl1-foo-glx:i386 foo-driver:amd64 ]
+Inst libgl1-foo-glx:i386 [1] (2 stable [i386]) [foo-driver:amd64 on libgl1-foo-glx:amd64] [foo-driver:amd64 on libgl1-foo-glx:i386] [foo-driver:amd64 ]
+Inst foo-driver [1] (2 stable [amd64]) []
+Inst libfoo:i386 [1] (2 stable [i386]) [libfoo:amd64 on libfoo:i386] [libfoo:i386 on libfoo:amd64] [libfoo:amd64 ]
+Inst libfoo [1] (2 stable [amd64])
+Conf libgl1-foo-glx (2 stable [amd64])
+Conf libgl1-foo-glx:i386 (2 stable [i386])
+Conf foo-driver (2 stable [amd64])
+Conf libfoo:i386 (2 stable [i386])
+Conf libfoo (2 stable [amd64])' 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ foo-driver libfoo libfoo:i386 libgl1-foo-glx libgl1-foo-glx:i386
+5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst libgl1-foo-glx [1] (2 stable [amd64]) [foo-driver:amd64 on libgl1-foo-glx:amd64] [libgl1-foo-glx:amd64 on libgl1-foo-glx:i386] [libgl1-foo-glx:i386 on libgl1-foo-glx:amd64] [foo-driver:amd64 libgl1-foo-glx:i386 ]
+Inst libgl1-foo-glx:i386 [1] (2 stable [i386]) [foo-driver:amd64 on libgl1-foo-glx:amd64] [foo-driver:amd64 on libgl1-foo-glx:i386] [foo-driver:amd64 ]
+Inst foo-driver [1] (2 stable [amd64]) []
+Inst libfoo:i386 [1] (2 stable [i386]) [libfoo:amd64 on libfoo:i386] [libfoo:i386 on libfoo:amd64] [libfoo:amd64 ]
+Inst libfoo [1] (2 stable [amd64])
+Conf libgl1-foo-glx (2 stable [amd64])
+Conf libgl1-foo-glx:i386 (2 stable [i386])
+Conf foo-driver (2 stable [amd64])
+Conf libfoo:i386 (2 stable [i386])
+Conf libfoo (2 stable [amd64])' aptget dist-upgrade -s
+
+testsuccess aptget dist-upgrade -y -o Debug::pkgPackageManager=1 -o Debug::pkgOrderList=1
diff --git a/test/integration/test-bug-745036-new-foreign-invalidates-cache b/test/integration/test-bug-745036-new-foreign-invalidates-cache
new file mode 100755
index 000000000..6207badda
--- /dev/null
+++ b/test/integration/test-bug-745036-new-foreign-invalidates-cache
@@ -0,0 +1,27 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable,installed' 'cool-foo' 'amd64' '1.0' 'Depends: foo'
+insertpackage 'unstable,installed' 'foo' 'amd64' '1.0' 'Multi-Arch: foreign'
+
+setupaptarchive
+
+testsuccess aptget check -s
+
+configarchitecture 'amd64' 'i386'
+testfailureequal 'E: The package cache was built for different architectures: amd64 vs amd64,i386' aptget check -s -o pkgCacheFile::Generate=false
+
+testsuccess aptget check -s
+
+insertinstalledpackage 'awesome-foo' 'i386' '1.0' 'Depends: foo'
+
+testsuccess aptget check -s
+
+testsuccess aptget update --no-download
+
+testsuccess aptget check -s
diff --git a/test/integration/test-bug-745046-candidate-propagation-fails b/test/integration/test-bug-745046-candidate-propagation-fails
new file mode 100755
index 000000000..64aaa6ac8
--- /dev/null
+++ b/test/integration/test-bug-745046-candidate-propagation-fails
@@ -0,0 +1,39 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'gedit' 'amd64' '1'
+
+insertpackage 'unstable' 'gedit' 'amd64' '1'
+insertpackage 'experimental' 'gedit' 'amd64' '2' 'Depends: common (>= 2)'
+
+setupaptarchive
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2' (experimental [amd64]) for 'gedit'
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ gedit : Depends: common (>= 2) but it is not installable
+E: Unable to correct problems, you have held broken packages." aptget install gedit/experimental -sq=0
+
+insertinstalledpackage 'common' 'amd64' '2'
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Selected version '2' (experimental [amd64]) for 'gedit'
+The following packages will be upgraded:
+ gedit
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst gedit [1] (2 experimental [amd64])
+Conf gedit (2 experimental [amd64])" aptget install gedit/experimental -sq=0
diff --git a/test/integration/test-bug-747261-arch-specific-conflicts b/test/integration/test-bug-747261-arch-specific-conflicts
new file mode 100755
index 000000000..e1370433f
--- /dev/null
+++ b/test/integration/test-bug-747261-arch-specific-conflicts
@@ -0,0 +1,46 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'sparc' 'armel'
+
+insertinstalledpackage 'foobar' 'armel' '1'
+msgtest 'Check that dpkg supports' 'arch-specific dependencies'
+if ! dpkgcheckbuilddeps -d 'foobar:armel' /dev/null 2>/dev/null >/dev/null; then
+ dpkgcheckbuilddeps -d 'foobar:armel' /dev/null || true
+ msgskip
+ exit 0
+else
+ msgpass
+fi
+
+buildsimplenativepackage 'libc6' 'amd64,sparc,armel' '1' 'stable' 'Multi-Arch: same'
+buildsimplenativepackage 'libc6-i386' 'amd64' '1' 'stable' 'Conflicts: libc6:sparc'
+
+setupaptarchive
+
+testsuccess aptget install 'libc6:amd64' 'libc6:sparc' -y
+testdpkginstalled 'libc6:amd64' 'libc6:sparc'
+testdpkgnotinstalled 'libc6-i386' 'libc6:armel'
+
+testsuccess aptget install libc6-i386 -y
+testdpkginstalled 'libc6:amd64' 'libc6-i386'
+testdpkgnotinstalled 'libc6:sparc' 'libc6:armel'
+
+testsuccess aptget install libc6:armel -y
+testdpkginstalled 'libc6:amd64' 'libc6:armel' 'libc6-i386'
+testdpkgnotinstalled 'libc6:sparc'
+
+testsuccess aptget install libc6:sparc -y
+testdpkginstalled 'libc6:amd64' 'libc6:armel' 'libc6:sparc'
+testdpkgnotinstalled 'libc6-i386'
+
+testsuccess aptget purge 'libc6:*' 'libc6-i386' -y
+testdpkgnotinstalled 'libc6:amd64' 'libc6:armel' 'libc6:sparc' 'libc6-i386'
+
+# check that (the actually simpler) single arch is fine, too
+configarchitecture 'amd64'
+testfailure aptget install libc6:sparc -s
+testsuccess aptget install libc6 libc6-i386 -y
diff --git a/test/integration/test-bug-753297-upgradable b/test/integration/test-bug-753297-upgradable
new file mode 100755
index 000000000..353728db0
--- /dev/null
+++ b/test/integration/test-bug-753297-upgradable
@@ -0,0 +1,35 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+cat > rootdir/etc/apt/preferences <<EOF
+Package: *
+Pin: release testing
+Pin-Priority: 600
+
+Package: *
+Pin: release unstable
+Pin-Priority: 1
+EOF
+
+insertpackage 'testing,installed' 'foo' 'all' '1'
+insertpackage 'testing-updates' 'foo' 'all' '2'
+insertpackage 'unstable' 'foo' 'all' '3'
+
+insertinstalledpackage 'bar' 'all' '1'
+insertpackage 'testing' 'bar' 'all' '2'
+
+setupaptarchive
+
+testsuccessequal "Listing...
+bar/testing 2 all [upgradable from: 1]
+N: There is 1 additional version. Please use the '-a' switch to see it" apt list --upgradable
+
+testsuccessequal "Listing...
+bar/testing 2 all [upgradable from: 1]
+dpkg/now 1.16.2+fake all [installed,local]
+foo/testing,now 1 all [installed]" apt list
diff --git a/test/integration/test-bug-758153-versioned-provides-support b/test/integration/test-bug-758153-versioned-provides-support
new file mode 100755
index 000000000..fb8ed39e8
--- /dev/null
+++ b/test/integration/test-bug-758153-versioned-provides-support
@@ -0,0 +1,387 @@
+#!/bin/sh
+set -e
+
+# dpkg implements versioned provides in commit 5bb02fe80e9f40dcad9703a72f67cf615ff217b5
+# but previous versions seem to allow parsing, working and ignoring it.
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'webapp' 'all' '1' 'Depends: httpd'
+insertinstalledpackage 'webserver' 'all' '1' 'Provides: httpd'
+
+insertpackage 'unstable' 'webapp' 'all' '2' 'Depends: httpd (>= 2)'
+insertpackage 'unstable' 'webserver' 'amd64' '2' 'Provides: httpd (= 2)'
+insertpackage 'unstable' 'foreign-webserver' 'i386' '2' 'Multi-Arch: foreign
+Provides: httpd (= 2)'
+
+insertpackage 'experimental' 'webapp' 'all' '3' 'Depends: httpd (>= 1.5)'
+insertpackage 'experimental' 'webserver' 'amd64' '3' 'Provides: httpd (= 3)'
+
+insertpackage 'experimental' 'foreign-webserver' 'i386' '4' 'Multi-Arch: foreign
+Provides: httpd (= 4)'
+insertpackage 'experimental' 'cool-webapp' 'all' '4' 'Depends: httpd (>= 4)'
+
+# arch-qualified provides, see #777071
+insertpackage 'unstable' 'foo' 'all' '1' 'Provides: bar:i386'
+insertpackage 'unstable' 'baz' 'i386,amd64' '1' 'Depends: bar'
+insertpackage 'experimental' 'baz' 'i386,amd64' '2' 'Depends: bar:i386'
+insertpackage 'experimental' 'baz-broken' 'i386' '2' 'Depends: bar:amd64'
+
+insertpackage 'unstable' 'next' 'amd64' '1' 'Multi-Arch: foreign
+Provides: next (= 2)'
+insertpackage 'unstable' 'needsrealnext' 'amd64,i386' '2' 'Depends: next (>= 2)'
+
+insertpackage 'unstable' 'virtualnext2' 'amd64' '1' 'Multi-Arch: foreign
+Provides: next2 (= 2)'
+insertpackage 'unstable' 'needsnext2' 'amd64,i386' '2' 'Depends: next2 (>= 2)'
+
+insertpackage 'unstable' 'virtualnext3' 'amd64' '1' 'Multi-Arch: no
+Provides: next3 (= 2)'
+insertpackage 'unstable' 'needsnext3' 'amd64,i386' '2' 'Depends: next3 (>= 2)'
+
+insertpackage 'unstable' 'selfprov' 'amd64' '2' 'Provides: selfprov (= 1)'
+insertpackage 'unstable' 'needsselfprov1' 'amd64' '1' 'Depends: selfprov (= 1)'
+insertpackage 'unstable' 'needsselfprov2' 'amd64' '1' 'Depends: selfprov (= 2)'
+insertpackage 'unstable' 'needsselfprov12' 'amd64' '1' 'Depends: selfprov (= 1), selfprov (= 2)'
+insertpackage 'unstable' 'needsselfprov123' 'amd64' '1' 'Depends: selfprov (= 1), selfprov (= 2), selfprov (= 3)'
+
+setupaptarchive
+
+SOMEPACKAGESCOULDNOT='Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:'
+
+for binary in 'aptget' 'apt'; do
+ for method in 'upgrade' 'dist-upgrade'; do
+ for solver in 'internal' 'apt'; do
+ if [ "$solver" = 'apt' ]; then
+ HEADER='Execute external solver...'
+ else
+ HEADER='Calculating upgrade...'
+ fi
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+$HEADER
+The following packages will be upgraded:
+ webapp webserver
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst webserver [1] (2 unstable [amd64])
+Inst webapp [1] (2 unstable [all])
+Conf webserver (2 unstable [amd64])
+Conf webapp (2 unstable [all])" $binary $method -s --solver $solver
+ done
+ done
+done
+
+for solver in 'internal' 'apt'; do
+ msgmsg 'Testing with solver' "$solver"
+ HEADER_PRE='Reading package lists...
+Building dependency tree...'
+ HEADER_POST='Execute external solver...'
+ HEADER="${HEADER_PRE}"
+ if [ "$solver" = 'apt' ]; then
+ HEADER="${HEADER}
+${HEADER_POST}"
+ fi
+ testsuccessequal "$HEADER
+The following packages will be upgraded:
+ webapp webserver
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst webserver [1] (2 unstable [amd64])
+Inst webapp [1] (2 unstable [all])
+Conf webserver (2 unstable [amd64])
+Conf webapp (2 unstable [all])" aptget install webapp webserver -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following packages will be upgraded:
+ webapp webserver
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst webserver [1] (2 unstable [amd64])
+Inst webapp [1] (3 experimental [all])
+Conf webserver (2 unstable [amd64])
+Conf webapp (3 experimental [all])" aptget install webapp=3 webserver -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following packages will be upgraded:
+ webapp webserver
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst webserver [1] (3 experimental [amd64])
+Inst webapp [1] (2 unstable [all])
+Conf webserver (3 experimental [amd64])
+Conf webapp (2 unstable [all])" aptget install webapp webserver=3 -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following NEW packages will be installed:
+ foreign-webserver:i386
+The following packages will be upgraded:
+ webapp
+1 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst foreign-webserver:i386 (2 unstable [i386])
+Inst webapp [1] (2 unstable [all])
+Conf foreign-webserver:i386 (2 unstable [i386])
+Conf webapp (2 unstable [all])" aptget install webapp foreign-webserver:i386 -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following NEW packages will be installed:
+ foreign-webserver:i386
+The following packages will be upgraded:
+ webapp
+1 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst foreign-webserver:i386 (2 unstable [i386])
+Inst webapp [1] (3 experimental [all])
+Conf foreign-webserver:i386 (2 unstable [i386])
+Conf webapp (3 experimental [all])" aptget install webapp=3 foreign-webserver:i386 -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following NEW packages will be installed:
+ foreign-webserver:i386
+The following packages will be upgraded:
+ webapp
+1 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst foreign-webserver:i386 (4 experimental [i386])
+Inst webapp [1] (2 unstable [all])
+Conf foreign-webserver:i386 (4 experimental [i386])
+Conf webapp (2 unstable [all])" aptget install webapp foreign-webserver:i386=4 -s --solver $solver
+
+ if [ "$solver" = 'apt' ]; then
+ WEBAPP_ERR="$HEADER
+The solver encountered an error of type: ERR_UNSOLVABLE
+The following information might help you to understand what is wrong:
+The following packages have unmet dependencies:
+ cool-webapp : Depends: httpd (>= 4)
+
+$SOMEPACKAGESCOULDNOT
+ cool-webapp : Depends: httpd (>= 4)
+E: External solver failed with: The following packages have unmet dependencies:"
+ else
+ WEBAPP_ERR="$HEADER
+$SOMEPACKAGESCOULDNOT
+ cool-webapp : Depends: httpd (>= 4)
+E: Unable to correct problems, you have held broken packages."
+ fi
+ testfailureequal "$WEBAPP_ERR" aptget install cool-webapp -s --solver $solver
+ testfailureequal "$WEBAPP_ERR" aptget install cool-webapp foreign-webserver:i386 -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following NEW packages will be installed:
+ cool-webapp foreign-webserver:i386
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst foreign-webserver:i386 (4 experimental [i386])
+Inst cool-webapp (4 experimental [all])
+Conf foreign-webserver:i386 (4 experimental [i386])
+Conf cool-webapp (4 experimental [all])" aptget install cool-webapp foreign-webserver:i386=4 -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ baz:i386 foo
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst foo (1 unstable [all])
+Inst baz:i386 (1 unstable [i386])
+Conf foo (1 unstable [all])
+Conf baz:i386 (1 unstable [i386])" aptget install baz:i386 -s --solver $solver
+
+ if [ "$solver" = 'apt' ]; then
+ testfailureequal "$HEADER
+The solver encountered an error of type: ERR_UNSOLVABLE
+The following information might help you to understand what is wrong:
+The following packages have unmet dependencies:
+ baz : Depends: bar but it is not installable
+
+$SOMEPACKAGESCOULDNOT
+ baz : Depends: bar but it is not installable
+E: External solver failed with: The following packages have unmet dependencies:" aptget install baz:amd64 -s --solver $solver
+ else
+ testfailureequal "$HEADER
+$SOMEPACKAGESCOULDNOT
+ baz : Depends: bar but it is not installable
+E: Unable to correct problems, you have held broken packages." aptget install baz:amd64 -s --solver $solver
+ fi
+
+ HEADER="${HEADER_PRE}
+Selected version '2' (experimental [amd64]) for 'baz'"
+ if [ "$solver" = 'apt' ]; then
+ HEADER="${HEADER}
+${HEADER_POST}"
+ fi
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ baz foo
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst foo (1 unstable [all])
+Inst baz (2 experimental [amd64])
+Conf foo (1 unstable [all])
+Conf baz (2 experimental [amd64])" aptget install baz/experimental -s --solver $solver
+
+ HEADER="${HEADER_PRE}
+Selected version '2' (experimental [i386]) for 'baz:i386'"
+ if [ "$solver" = 'apt' ]; then
+ HEADER="${HEADER}
+${HEADER_POST}"
+ fi
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ baz:i386 foo
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst foo (1 unstable [all])
+Inst baz:i386 (2 experimental [i386])
+Conf foo (1 unstable [all])
+Conf baz:i386 (2 experimental [i386])" aptget install baz:i386/experimental -s --solver $solver
+
+ if [ "$solver" = 'apt' ]; then
+ HEADER="${HEADER_PRE}
+${HEADER_POST}"
+ else
+ HEADER="${HEADER_PRE}"
+ fi
+
+ if [ "$solver" = 'apt' ]; then
+ testfailureequal "$HEADER
+The solver encountered an error of type: ERR_UNSOLVABLE
+The following information might help you to understand what is wrong:
+The following packages have unmet dependencies:
+ baz-broken:i386 : Depends: bar:amd64 but it is not installable
+
+$SOMEPACKAGESCOULDNOT
+ baz-broken:i386 : Depends: bar:amd64 but it is not installable
+E: External solver failed with: The following packages have unmet dependencies:" aptget install baz-broken -s --solver $solver
+ else
+ testfailureequal "$HEADER
+$SOMEPACKAGESCOULDNOT
+ baz-broken:i386 : Depends: bar:amd64 but it is not installable
+E: Unable to correct problems, you have held broken packages." aptget install baz-broken -s --solver $solver
+ fi
+
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ next
+The following NEW packages will be installed:
+ needsrealnext next
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst next (1 unstable [amd64])
+Inst needsrealnext (2 unstable [amd64])
+Conf next (1 unstable [amd64])
+Conf needsrealnext (2 unstable [amd64])" aptget install needsrealnext -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ next
+The following NEW packages will be installed:
+ needsrealnext:i386 next
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst next (1 unstable [amd64])
+Inst needsrealnext:i386 (2 unstable [i386])
+Conf next (1 unstable [amd64])
+Conf needsrealnext:i386 (2 unstable [i386])" aptget install needsrealnext:i386 -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ virtualnext2
+The following NEW packages will be installed:
+ needsnext2 virtualnext2
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst virtualnext2 (1 unstable [amd64])
+Inst needsnext2 (2 unstable [amd64])
+Conf virtualnext2 (1 unstable [amd64])
+Conf needsnext2 (2 unstable [amd64])" aptget install needsnext2 -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ virtualnext2
+The following NEW packages will be installed:
+ needsnext2:i386 virtualnext2
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst virtualnext2 (1 unstable [amd64])
+Inst needsnext2:i386 (2 unstable [i386])
+Conf virtualnext2 (1 unstable [amd64])
+Conf needsnext2:i386 (2 unstable [i386])" aptget install needsnext2:i386 -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ virtualnext3
+The following NEW packages will be installed:
+ needsnext3 virtualnext3
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst virtualnext3 (1 unstable [amd64])
+Inst needsnext3 (2 unstable [amd64])
+Conf virtualnext3 (1 unstable [amd64])
+Conf needsnext3 (2 unstable [amd64])" aptget install needsnext3 -s --solver $solver
+
+ if [ "$solver" = 'apt' ]; then
+ testfailureequal "$HEADER
+The solver encountered an error of type: ERR_UNSOLVABLE
+The following information might help you to understand what is wrong:
+The following packages have unmet dependencies:
+ needsnext3:i386 : Depends: next3:i386 (>= 2) but it is not installable
+
+$SOMEPACKAGESCOULDNOT
+ needsnext3:i386 : Depends: next3:i386 (>= 2) but it is not installable
+E: External solver failed with: The following packages have unmet dependencies:" aptget install needsnext3:i386 -s --solver $solver
+ else
+ testfailureequal "$HEADER
+$SOMEPACKAGESCOULDNOT
+ needsnext3:i386 : Depends: next3:i386 (>= 2) but it is not installable
+E: Unable to correct problems, you have held broken packages." aptget install needsnext3:i386 -s --solver $solver
+ fi
+
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ selfprov
+The following NEW packages will be installed:
+ needsselfprov1 selfprov
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst selfprov (2 unstable [amd64])
+Inst needsselfprov1 (1 unstable [amd64])
+Conf selfprov (2 unstable [amd64])
+Conf needsselfprov1 (1 unstable [amd64])" aptget install needsselfprov1 -s --solver $solver
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ selfprov
+The following NEW packages will be installed:
+ needsselfprov2 selfprov
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst selfprov (2 unstable [amd64])
+Inst needsselfprov2 (1 unstable [amd64])
+Conf selfprov (2 unstable [amd64])
+Conf needsselfprov2 (1 unstable [amd64])" aptget install needsselfprov2 -s --solver $solver
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ selfprov
+The following NEW packages will be installed:
+ needsselfprov12 selfprov
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst selfprov (2 unstable [amd64])
+Inst needsselfprov12 (1 unstable [amd64])
+Conf selfprov (2 unstable [amd64])
+Conf needsselfprov12 (1 unstable [amd64])" aptget install needsselfprov12 -s --solver $solver
+ if [ "$solver" = 'apt' ]; then
+ testfailureequal "$HEADER
+The solver encountered an error of type: ERR_UNSOLVABLE
+The following information might help you to understand what is wrong:
+The following packages have unmet dependencies:
+ needsselfprov123 : Depends: selfprov (= 3)
+
+$SOMEPACKAGESCOULDNOT
+ needsselfprov123 : Depends: selfprov (= 1)
+ Depends: selfprov (= 2)
+ Depends: selfprov (= 3)
+E: External solver failed with: The following packages have unmet dependencies:" aptget install needsselfprov123 -s --solver $solver
+ else
+ testfailureequal "$HEADER
+$SOMEPACKAGESCOULDNOT
+ needsselfprov123 : Depends: selfprov (= 3)
+E: Unable to correct problems, you have held broken packages." aptget install needsselfprov123 -s --solver $solver
+ fi
+done
diff --git a/test/integration/test-bug-762160-relpath b/test/integration/test-bug-762160-relpath
new file mode 100755
index 000000000..1e66fbbc3
--- /dev/null
+++ b/test/integration/test-bug-762160-relpath
@@ -0,0 +1,17 @@
+#!/bin/sh
+# regresion test for bug #762160 where apt-get update fails when a
+# relative directory is given
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'foo' 'all' '1'
+setupaptarchive
+changetowebserver
+
+testsuccess aptget update -o Dir=./rootdir
+testsuccess aptget update -o Dir=./rootdir \ No newline at end of file
diff --git a/test/integration/test-bug-767891-force-essential-important b/test/integration/test-bug-767891-force-essential-important
new file mode 100755
index 000000000..7a23de557
--- /dev/null
+++ b/test/integration/test-bug-767891-force-essential-important
@@ -0,0 +1,100 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'apt' 'amd64' '1'
+insertinstalledpackage 'foo' 'amd64,i386' '1' 'Multi-Arch: same'
+insertinstalledpackage 'bar' 'amd64' '1' 'Provides: foo'
+
+insertpackage 'unstable' 'foo2' 'amd64,i386' '1' 'Multi-Arch: same'
+
+setupaptarchive
+
+rm -f rootdir/var/cache/apt/*.bin
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ apt* bar* foo* foo:i386*
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ apt
+0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
+Purg apt [1]
+Purg bar [1]
+Purg foo [1]
+Purg foo:i386 [1]' apt purge apt foo foo:i386 bar -s
+
+rm -f rootdir/var/cache/apt/*.bin
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ apt* bar* foo* foo:i386*
+0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
+Purg apt [1]
+Purg bar [1]
+Purg foo [1]
+Purg foo:i386 [1]' apt purge apt foo foo:i386 bar -s -o pkgCacheGen::ForceEssential=''
+
+msgmsg 'foo:i386 got the Important flag'
+rm -f rootdir/var/cache/apt/*.bin
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ apt* bar* foo* foo:i386*
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ foo foo:i386
+0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
+Purg apt [1]
+Purg bar [1]
+Purg foo [1]
+Purg foo:i386 [1]' apt purge apt foo foo:i386 bar -s -o pkgCacheGen::ForceEssential='foo'
+
+rm -f rootdir/var/cache/apt/*.bin
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ apt* bar* foo* foo:i386*
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ apt foo foo:i386
+0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
+Purg apt [1]
+Purg bar [1]
+Purg foo [1]
+Purg foo:i386 [1]' apt purge apt foo foo:i386 bar -s -o pkgCacheGen::ForceEssential::='foo'
+
+msgmsg 'essentials only from native'
+rm -f rootdir/var/cache/apt/*.bin
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ foo2
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo2 (1 unstable [amd64])
+Conf foo2 (1 unstable [amd64])' apt full-upgrade -s -o pkgCacheGen::ForceEssential::='foo2'
+
+msgmsg 'important only effects installed'
+rm -f rootdir/var/cache/apt/*.bin
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ apt* bar* foo* foo:i386*
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ apt foo foo:i386
+0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
+Purg apt [1]
+Purg bar [1]
+Purg foo [1]
+Purg foo:i386 [1]' apt purge apt foo foo:i386 bar -s -o pkgCacheGen::ForceImportant::='foo'
+rm -f rootdir/var/cache/apt/*.bin
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' apt full-upgrade -s -o pkgCacheGen::ForceImportant::='foo2'
diff --git a/test/integration/test-bug-769609-triggers-still-pending-after-run b/test/integration/test-bug-769609-triggers-still-pending-after-run
new file mode 100755
index 000000000..ce2c193dd
--- /dev/null
+++ b/test/integration/test-bug-769609-triggers-still-pending-after-run
@@ -0,0 +1,75 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+msgtest 'Check if installed dpkg supports' 'noawait trigger'
+if dpkg --compare-versions "$(dpkg_version)" 'ge' '1.16.1'; then
+ msgpass
+else
+ msgskip 'dpkg version too old'
+ exit 0
+fi
+configdpkgnoopchroot
+
+buildtriggerpackages() {
+ local TYPE="$1"
+ setupsimplenativepackage "triggerable-$TYPE" 'all' '1.0' 'unstable' "Depends: trigdepends-$TYPE"
+ BUILDDIR="incoming/triggerable-${TYPE}-1.0"
+ cat >"${BUILDDIR}/debian/postinst" <<EOF
+#!/bin/sh
+if [ "\$1" = 'triggered' ]; then
+ echo "TRIGGER IS RUNNING"
+fi
+EOF
+ echo "$TYPE /usr/share/doc" > "${BUILDDIR}/debian/triggers"
+ buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
+ rm -rf "$BUILDDIR"
+ buildsimplenativepackage "trigdepends-$TYPE" 'all' '1.0' 'unstable'
+}
+
+#buildtriggerpackages 'interest'
+buildtriggerpackages 'interest-noawait'
+buildsimplenativepackage "trigstuff" 'all' '1.0' 'unstable'
+
+setupaptarchive
+
+runtests() {
+ local TYPE="$1"
+ msgmsg 'Working with trigger type' "$TYPE"
+ testsuccess aptget install triggerable-$TYPE -y
+ cp rootdir/tmp/testsuccess.output terminal.output
+ testsuccess grep '^REWRITE ' terminal.output
+ testdpkginstalled triggerable-$TYPE trigdepends-$TYPE
+
+ testsuccess aptget install trigdepends-$TYPE -y --reinstall
+ cp rootdir/tmp/testsuccess.output terminal.output
+ testsuccess grep '^REWRITE ' terminal.output
+ testsuccess grep 'TRIGGER IS RUNNING' terminal.output
+ testdpkginstalled triggerable-$TYPE trigdepends-$TYPE
+
+ testsuccess aptget install trigstuff -y
+ cp rootdir/tmp/testsuccess.output terminal.output
+ testsuccess grep '^REWRITE ' terminal.output
+ testsuccess grep 'TRIGGER IS RUNNING' terminal.output
+ testdpkginstalled triggerable-$TYPE trigdepends-$TYPE trigstuff
+
+ testsuccess aptget purge trigstuff -y
+ cp rootdir/tmp/testsuccess.output terminal.output
+ testsuccess grep '^REWRITE ' terminal.output
+ testsuccess grep 'TRIGGER IS RUNNING' terminal.output
+ testdpkginstalled triggerable-$TYPE trigdepends-$TYPE
+ testdpkgnotinstalled trigstuff
+
+ testsuccess aptget purge trigdepends-$TYPE -y
+ cp rootdir/tmp/testsuccess.output terminal.output
+ testfailure grep '^REWRITE ' terminal.output
+ testfailure grep 'TRIGGER IS RUNNING' terminal.output
+ testdpkgnotinstalled triggerable-$TYPE trigdepends-$TYPE
+}
+#runtests 'interest'
+runtests 'interest-noawait'
diff --git a/test/integration/test-bug-770291-reinstall b/test/integration/test-bug-770291-reinstall
new file mode 100755
index 000000000..a1caf25f8
--- /dev/null
+++ b/test/integration/test-bug-770291-reinstall
@@ -0,0 +1,98 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable,installed' 'libc6' 'i386' '1'
+insertpackage 'unstable,installed' 'libselinux1' 'i386' '1'
+
+cp rootdir/var/lib/dpkg/status dpkg.status
+
+insertpackage 'unstable,installed' 'init' 'i386' '1' 'Depends: systemd-sysv
+Essential: yes'
+insertpackage 'unstable,installed' 'systemd-sysv' 'i386' '215-5+b1' 'Depends: systemd (= 215-5+b1)
+Pre-Depends: systemd'
+# fun fact: we need these two pre-depends to get systemd ordered before systemd-sysv as
+# many pre-depends mean: do early (as they are a pain, so get them out of the way early)
+insertpackage 'unstable,installed' 'systemd' 'i386' '215-5+b1' 'Pre-Depends: libc6, libselinux1'
+
+# depends loop
+insertpackage 'unstable,installed' 'dependsa' 'i386' '1' 'Depends: dependsb
+Essential: yes'
+insertpackage 'unstable,installed' 'dependsb' 'i386' '1' 'Depends: dependsa
+Essential: yes'
+
+# pre-depends loop
+insertpackage 'unstable,installed' 'predependsa' 'i386' '1' 'Pre-Depends: predependsb
+Essential: yes'
+insertpackage 'unstable,installed' 'predependsb' 'i386' '1' 'Pre-Depends: predependsa
+Essential: yes'
+
+# pre-depends-to-depends loop
+insertpackage 'unstable,installed' 'predependsdependsa' 'i386' '1' 'Pre-Depends: predependsdependsb
+Essential: yes'
+insertpackage 'unstable,installed' 'predependsdependsb' 'i386' '1' 'Depends: predependsdependsa
+Essential: yes'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+0 upgraded, 0 newly installed, 2 reinstalled, 0 to remove and 0 not upgraded.
+Inst systemd [215-5+b1] (215-5+b1 unstable [i386])
+Conf systemd (215-5+b1 unstable [i386])
+Inst systemd-sysv [215-5+b1] (215-5+b1 unstable [i386])
+Conf systemd-sysv (215-5+b1 unstable [i386])' aptget install --reinstall systemd systemd-sysv -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+0 upgraded, 0 newly installed, 2 reinstalled, 0 to remove and 0 not upgraded.
+Inst dependsa [1] (1 unstable [i386])
+Inst dependsb [1] (1 unstable [i386])
+Conf dependsb (1 unstable [i386])
+Conf dependsa (1 unstable [i386])' aptget install --reinstall dependsa dependsb -s
+
+# there is a chance dpkg can actually do these, BUT this depends on the maintainerscripts (not) present
+# which is very risky to depend on (and apt doesn't know about that anyhow).
+testfailure aptget install --reinstall predependsa predependsb -s -o Debug::pkgPackageManager=1
+testsuccess grep "^E: Couldn't configure predependsa:i386, probably a dependency cycle.$" rootdir/tmp/testfailure.output
+
+# FIXME: the error message is a catch all here, not like the one above
+testfailure aptget install --reinstall predependsdependsa predependsdependsb -s -o Debug::pkgPackageManager=1
+testsuccess grep "^E: Could not configure 'predependsdependsb:i386'. $" rootdir/tmp/testfailure.output
+
+
+msgmsg 'While we are at it, lets try these loops without reinstall as well'
+cp dpkg.status rootdir/var/lib/dpkg/status
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ systemd systemd-sysv
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst systemd (215-5+b1 unstable [i386])
+Conf systemd (215-5+b1 unstable [i386])
+Inst systemd-sysv (215-5+b1 unstable [i386])
+Conf systemd-sysv (215-5+b1 unstable [i386])' aptget install systemd systemd-sysv -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ dependsa dependsb
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst dependsa (1 unstable [i386]) []
+Inst dependsb (1 unstable [i386])
+Conf dependsb (1 unstable [i386])
+Conf dependsa (1 unstable [i386])' aptget install dependsa dependsb -s
+
+# there is a chance dpkg can actually do these, BUT this depends on the maintainerscripts (not) present
+# which is very risky to depend on (and apt doesn't know about that anyhow).
+testfailure aptget install predependsa predependsb -s -o Debug::pkgPackageManager=1
+testsuccess grep "^E: Couldn't configure predependsa:i386, probably a dependency cycle.$" rootdir/tmp/testfailure.output
+
+# FIXME: the error message is a catch all here, not like the one above
+testfailure aptget install predependsdependsa predependsdependsb -s -o Debug::pkgPackageManager=1
+testsuccess grep "^E: Could not configure 'predependsdependsb:i386'. $" rootdir/tmp/testfailure.output
diff --git a/test/integration/test-bug-778375-server-has-no-reason-phrase b/test/integration/test-bug-778375-server-has-no-reason-phrase
new file mode 100755
index 000000000..28e31e069
--- /dev/null
+++ b/test/integration/test-bug-778375-server-has-no-reason-phrase
@@ -0,0 +1,41 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+echo 'found' > aptarchive/working
+changetohttpswebserver -o 'aptwebserver::redirect::replace::/redirectme/=/' \
+ -o 'aptwebserver::httpcode::200=200' -o 'aptwebserver::httpcode::404=404' \
+ -o 'aptwebserver::httpcode::301=301'
+webserverconfig 'aptwebserver::empty-response-header::' 'foobar'
+
+testdownload() {
+ rm -f downfile
+ msgtest "download of a $1 via" "${3%%:*}"
+ $2 --nomsg downloadfile "$3" downfile
+
+ cp rootdir/tmp/testsuccess.output download.log
+ #looking for "HTTP server doesn't give Reason-Phrase for 200"
+ testsuccess grep 'give Reason-Phrase for' download.log
+
+ if [ "$2" = 'testsuccess' ]; then
+ testfileequal downfile 'found'
+ else
+ testfailure test -e downfile
+ fi
+}
+
+runtest() {
+ testdownload 'file works' 'testsuccess' "$1/working"
+ testdownload 'file via redirect works' 'testsuccess' "$1/redirectme/working"
+
+ testdownload 'non-existent file fails' 'testfailure' "$1/failing"
+ testdownload 'non-existent file via redirect fails' 'testfailure' "$1/redirectme/failing"
+}
+
+runtest "http://localhost:${APTHTTPPORT}"
+runtest "https://localhost:${APTHTTPSPORT}"
diff --git a/test/integration/test-bug-782777-single-arch-weirdness b/test/integration/test-bug-782777-single-arch-weirdness
new file mode 100755
index 000000000..41be1e79c
--- /dev/null
+++ b/test/integration/test-bug-782777-single-arch-weirdness
@@ -0,0 +1,72 @@
+#!/bin/sh
+# Ensure that the order in which packages are in the binary cache
+# does not effect if they can be found or not
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'abar' 'i386' '1'
+insertpackage 'unstable' 'foobar' 'i386' '1' 'Depends: abar:amd64, zfoo:amd64'
+insertpackage 'unstable' 'zfoo' 'i386' '1'
+
+setupaptarchive
+
+testrun() {
+ rm -f rootdir/var/lib/apt/extended_states
+
+ testequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ abar zfoo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst abar (1 unstable [i386])
+Inst zfoo (1 unstable [i386])
+Conf abar (1 unstable [i386])
+Conf zfoo (1 unstable [i386])' aptget install abar zfoo -s
+
+ testequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ abar zfoo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst abar (1 unstable [i386])
+Inst zfoo (1 unstable [i386])
+Conf abar (1 unstable [i386])
+Conf zfoo (1 unstable [i386])' aptget install abar:i386 zfoo:i386 -s
+
+ testequal "Reading package lists...
+Building dependency tree...
+Package abar:amd64 is not available, but is referred to by another package.
+This may mean that the package is missing, has been obsoleted, or
+is only available from another source
+
+Package zfoo:amd64 is not available, but is referred to by another package.
+This may mean that the package is missing, has been obsoleted, or
+is only available from another source
+
+E: Package 'abar:amd64' has no installation candidate
+E: Package 'zfoo:amd64' has no installation candidate" aptget install abar:amd64 zfoo:amd64 -s
+
+ cp -f rootdir/var/lib/dpkg/status status.backup
+ insertinstalledpackage 'abar' 'i386' '1'
+ insertinstalledpackage 'zfoo' 'i386' '1'
+
+ testequal 'abar
+zfoo' aptmark showmanual abar zfoo
+ testequal 'abar set to automatically installed.
+zfoo set to automatically installed.' aptmark auto abar zfoo
+ testempty aptmark showmanual abar zfoo
+ testequal 'abar
+zfoo' aptmark showauto abar zfoo
+
+ mv -f status.backup rootdir/var/lib/dpkg/status
+}
+
+msgmsg 'Single-Arch testrun'
+testrun
+msgmsg 'Multi-Arch testrun'
+configarchitecture 'i386' 'amd64'
+testrun
diff --git a/test/integration/test-bug-796070-downgrade-realpkg b/test/integration/test-bug-796070-downgrade-realpkg
new file mode 100755
index 000000000..101324788
--- /dev/null
+++ b/test/integration/test-bug-796070-downgrade-realpkg
@@ -0,0 +1,23 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+buildsimplenativepackage 'apt' 'all' '1.0.10.1' 'stable' 'Depends: libapt-pkg4.16 (>= 1.0.10.1)'
+buildsimplenativepackage 'libapt-pkg4.16' 'all' '1.0.10.1' 'stable' 'Breaks: apt (<< 0.9.4~), libapt-inst1.5 (<< 0.9.9~)'
+buildsimplenativepackage 'libapt-pkg5.0' 'all' '1.1~exp9' 'unstable' 'Breaks: apt (<< 1.1~exp4), libapt-inst1.5 (<< 0.9.9~)'
+buildsimplenativepackage 'apt' 'all' '1.1~exp9' 'unstable' 'Depends: libapt-pkg5.0'
+
+setupaptarchive
+
+# Check with the APT name, aka essential
+testsuccess aptget install apt -t stable -y
+testsuccess aptget dist-upgrade -y
+
+testsuccess aptget install apt/stable -y --allow-downgrades -o Debug::pkgPackageManager=1 #-o Debug::pkgDpkgPM=1
+testdpkginstalled apt libapt-pkg4.16
+testdpkgnotinstalled libapt-pkg5.0
diff --git a/test/integration/test-bug-796070-downgrade-simulate b/test/integration/test-bug-796070-downgrade-simulate
new file mode 100755
index 000000000..61ecc87d4
--- /dev/null
+++ b/test/integration/test-bug-796070-downgrade-simulate
@@ -0,0 +1,67 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'apt' 'all' '1.0.10.1' 'Depends: libapt-pkg4.16 (>= 1.0.10.1)'
+insertinstalledpackage 'libapt-pkg4.16' 'all' '1.0.10.1' 'Breaks: apt (<< 0.9.4~), libapt-inst1.5 (<< 0.9.9~)'
+insertinstalledpackage 'libapt-pkg5.0' 'all' '1.1~exp9' 'Breaks: apt (<< 1.1~exp4), libapt-inst1.5 (<< 0.9.9~)'
+insertinstalledpackage 'apt' 'all' '1.1~exp9' 'Depends: libapt-pkg5.0'
+
+insertpackage 'unstable' 'napt' 'all' '1.0.10.1' 'Depends: nlibapt-pkg4.16 (>= 1.0.10.1)'
+insertinstalledpackage 'nlibapt-pkg4.16' 'all' '1.0.10.1' 'Breaks: napt (<< 0.9.4~), nlibapt-inst1.5 (<< 0.9.9~)'
+insertinstalledpackage 'nlibapt-pkg5.0' 'all' '1.1~exp9' 'Breaks: napt (<< 1.1~exp4), nlibapt-inst1.5 (<< 0.9.9~)'
+insertinstalledpackage 'napt' 'all' '1.1~exp9' 'Depends: nlibapt-pkg5.0'
+
+insertpackage 'unstable' 'eapt' 'all' '1.0.10.1' 'Depends: elibapt-pkg4.16 (>= 1.0.10.1)
+Essential: yes'
+insertinstalledpackage 'elibapt-pkg4.16' 'all' '1.0.10.1' 'Breaks: eapt (<< 0.9.4~), elibapt-inst1.5 (<< 0.9.9~)'
+insertinstalledpackage 'elibapt-pkg5.0' 'all' '1.1~exp9' 'Breaks: eapt (<< 1.1~exp4), elibapt-inst1.5 (<< 0.9.9~)'
+insertinstalledpackage 'eapt' 'all' '1.1~exp9' 'Depends: elibapt-pkg5.0
+Essential: yes'
+
+
+setupaptarchive
+
+
+# Check with a normal package
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ nlibapt-pkg5.0
+The following packages will be DOWNGRADED:
+ napt
+0 upgraded, 0 newly installed, 1 downgraded, 1 to remove and 0 not upgraded.
+Remv nlibapt-pkg5.0 [1.1~exp9] [napt:i386 ]
+Inst napt [1.1~exp9] (1.0.10.1 unstable [all])
+Conf napt (1.0.10.1 unstable [all])' apt install -s napt=1.0.10.1
+
+
+# Check with Essential
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ elibapt-pkg5.0
+The following packages will be DOWNGRADED:
+ eapt
+0 upgraded, 0 newly installed, 1 downgraded, 1 to remove and 0 not upgraded.
+Inst eapt [1.1~exp9] (1.0.10.1 unstable [all]) [elibapt-pkg5.0:i386 on eapt:i386] [elibapt-pkg5.0:i386 ]
+Remv elibapt-pkg5.0 [1.1~exp9]
+Conf eapt (1.0.10.1 unstable [all])' apt install -s eapt=1.0.10.1
+
+
+# Check with the APT name, aka essential
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ libapt-pkg5.0
+The following packages will be DOWNGRADED:
+ apt
+0 upgraded, 0 newly installed, 1 downgraded, 1 to remove and 0 not upgraded.
+Inst apt [1.1~exp9] (1.0.10.1 unstable [all]) [libapt-pkg5.0:i386 on apt:i386] [libapt-pkg5.0:i386 ]
+Remv libapt-pkg5.0 [1.1~exp9]
+Conf apt (1.0.10.1 unstable [all])' apt install -s apt=1.0.10.1
diff --git a/test/integration/test-bug-807012-mixed-case-package-names b/test/integration/test-bug-807012-mixed-case-package-names
new file mode 100755
index 000000000..4f003abdf
--- /dev/null
+++ b/test/integration/test-bug-807012-mixed-case-package-names
@@ -0,0 +1,21 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+TMPDIR=$(readlink -f .)
+
+insertinstalledpackage 'worldofgoo' 'all' '1'
+insertpackage 'unstable' 'WorldOfGoo' 'all' '1'
+
+setupaptarchive
+
+testsuccessequal "worldofgoo:
+ Installed: 1
+ Candidate: 1
+ Version table:
+ *** 1 500
+ 500 file:${TMPDIR}/aptarchive unstable/main all Packages
+ 100 ${TMPDIR}/rootdir/var/lib/dpkg/status" \
+ aptcache policy worldofgoo
diff --git a/test/integration/test-bug-814139-pickup-of-different-cache-states b/test/integration/test-bug-814139-pickup-of-different-cache-states
new file mode 100755
index 000000000..dffeb73ae
--- /dev/null
+++ b/test/integration/test-bug-814139-pickup-of-different-cache-states
@@ -0,0 +1,60 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'build-essential' 'amd64' '1'
+
+buildsimplenativepackage 'foo' 'all' '1' 'stable' 'Build-Depends: bar'
+buildsimplenativepackage 'bar' 'all' '1' 'stable'
+
+setupaptarchive
+
+cp rootdir/var/lib/dpkg/status status.backup
+
+testrun() {
+ cp status.backup rootdir/var/lib/dpkg/status
+ cleanup
+ testdpkgnotinstalled 'bar'
+ testsuccess aptget build-dep foo -y
+ testdpkginstalled 'bar'
+ cleanup
+ cd downloaded
+ testsuccess aptget source foo
+ testsuccess test -s foo_1.tar.* -a -s foo_1.dsc
+ rm foo_1.tar.* foo_1.dsc
+ testsuccess test -d foo-1
+ rm -rf foo-1
+ cd ..
+ cleanup
+ testsuccess aptget install foo -y
+}
+
+msgmsg 'Caches fully up-to-date'
+cleanup() {
+ rm -f rootdir/var/cache/apt/*.bin
+ testsuccess aptcache gencaches
+}
+testrun
+
+msgmsg 'pkgcache.bin is missing'
+cleanup() {
+ rm -f rootdir/var/cache/apt/*.bin
+ testsuccess aptcache gencaches
+ rm rootdir/var/cache/apt/pkgcache.bin
+}
+testrun
+
+msgmsg 'Caches are not writeable'
+rm rootdir/var/cache/apt/*.bin
+addtrap 'prefix' 'chmod 755 rootdir/var/cache/apt;'
+chmod 555 rootdir/var/cache/apt
+testsuccess aptcache gencaches
+cleanup() {
+ testfilestats "${TMPWORKINGDIRECTORY}/rootdir/var/cache/apt" '%a' '=' '555'
+}
+testrun
diff --git a/test/integration/test-bug-818628-unreadable-source b/test/integration/test-bug-818628-unreadable-source
new file mode 100755
index 000000000..cddc79398
--- /dev/null
+++ b/test/integration/test-bug-818628-unreadable-source
@@ -0,0 +1,86 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+if [ "$(id -u)" = '0' ]; then
+ msgskip 'Tests for unreadable files do not work as root'
+ exit 0
+fi
+
+insertinstalledpackage 'foo' 'amd64' '1'
+insertpackage 'unstable' 'foo' 'amd64' '2'
+
+setupaptarchive --no-update
+
+touch rootdir/etc/apt/apt.conf.d/unreadable.conf
+touch rootdir/etc/apt/preferences.d/unreadable.pref
+
+addtrap 'prefix' "chmod -R +r '$(escape_shell "$TMPWORKINGDIRECTORY")/rootdir/etc/apt';"
+chmod -r rootdir/etc/apt/trusted.gpg.d
+testfailure apt update
+chmod +r rootdir/etc/apt/trusted.gpg.d
+testsuccess apt update
+testsuccess apt policy foo
+testsuccess apt search foo
+testsuccessequal "Listing...
+foo/unstable 2 amd64 [upgradable from: 1]
+N: There is 1 additional version. Please use the '-a' switch to see it" apt list --upgradable
+
+runthemall() {
+ local ERR1="$1"
+ local ERR2="$1$2"
+ testfailureequal "$ERR1" aptcache policy
+ testfailureequal "$ERR1" aptcache policy foo
+ testfailureequal "$ERR2" aptcache depends foo
+ testfailureequal "$ERR2" aptcache rdepends foo
+ testfailureequal "$ERR2" aptcache search foo
+ testfailureequal "$ERR1" apt policy
+ testfailureequal "$ERR1" apt policy foo
+ testfailureequal "$ERR2" apt depends foo
+ testfailureequal "$ERR2" apt rdepends foo
+ testfailureequal "$ERR2" apt search foo
+ testfailureequal "$ERR2" apt list --upgradable
+ testfailureequal "$ERR2" apt show foo
+ testfailureequal "$ERR2" aptcache show foo --no-all-versions
+ testfailureequal "$ERR2" aptmark auto foo
+ testfailureequal "$ERR2" aptmark manual foo
+ testfailureequal "$ERR2" aptmark auto foo
+}
+echo 'Apt::Cmd::Disable-Script-Warning "true";' >> aptconfig.conf
+
+msgmsg 'Unreadable sources file'
+chmod -r rootdir/etc/apt/sources.list.d/apt-test-unstable-deb-src.list
+runthemall "E: Opening $TMPWORKINGDIRECTORY/rootdir/etc/apt/sources.list.d/apt-test-unstable-deb-src.list - ifstream::ifstream (13: Permission denied)
+E: The list of sources could not be read."
+chmod +r rootdir/etc/apt/sources.list.d/apt-test-unstable-deb-src.list
+
+msgmsg 'Unreadable config file'
+chmod -r rootdir/etc/apt/apt.conf.d/unreadable.conf
+runthemall "E: Opening configuration file ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/unreadable.conf - ifstream::ifstream (13: Permission denied)"
+chmod +r rootdir/etc/apt/apt.conf.d/unreadable.conf
+
+msgmsg 'Unreadable preferences file'
+chmod -r rootdir/etc/apt/preferences.d/unreadable.pref
+runthemall "E: Could not open file ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/preferences.d/unreadable.pref - open (13: Permission denied)"
+chmod +r rootdir/etc/apt/preferences.d/unreadable.pref
+
+msgmsg 'Unreadable sources directory'
+chmod -r rootdir/etc/apt/sources.list.d
+runthemall "E: Unable to read $TMPWORKINGDIRECTORY/rootdir/etc/apt/sources.list.d/ - opendir (13: Permission denied)" "
+W: You may want to run apt-get update to correct these problems
+E: The package cache file is corrupted"
+chmod +r rootdir/etc/apt/sources.list.d
+
+msgmsg 'Unreadable config directory'
+chmod -r rootdir/etc/apt/apt.conf.d
+runthemall "E: Unable to read ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/ - opendir (13: Permission denied)"
+chmod +r rootdir/etc/apt/apt.conf.d
+
+msgmsg 'Unreadable preferences directory'
+chmod -r rootdir/etc/apt/preferences.d
+runthemall "E: Unable to read ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/preferences.d/ - opendir (13: Permission denied)"
+chmod +r rootdir/etc/apt/preferences.d
diff --git a/test/integration/test-bug-829651 b/test/integration/test-bug-829651
new file mode 100755
index 000000000..976bb040c
--- /dev/null
+++ b/test/integration/test-bug-829651
@@ -0,0 +1,27 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+if [ "$(id -u)" = '0' ]; then
+ msgskip 'Tests for unreadable files do not work as root'
+ exit 0
+fi
+
+insertinstalledpackage 'foo' 'amd64' '1'
+insertpackage 'unstable' 'foo' 'amd64' '2'
+
+setupaptarchive
+
+
+testsuccess aptget indextargets
+
+aptget clean
+chmod -r rootdir/var/lib/dpkg/status
+
+testfailureequal "E: Could not open file ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status - open (13: Permission denied)
+E: Problem opening ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+E: The package lists or status file could not be parsed or opened." aptget indextargets
diff --git a/test/integration/test-bug-835094-configure-before-purge b/test/integration/test-bug-835094-configure-before-purge
new file mode 100755
index 000000000..16a196ccd
--- /dev/null
+++ b/test/integration/test-bug-835094-configure-before-purge
@@ -0,0 +1,44 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'kernel' 'amd64' '1' 'unstable' 'Depends: initramfs-tools | linux-initramfs-tool'
+
+#buildsimplenativepackage 'initramfs-tools' 'amd64' '1.0.16' 'unstable' 'Provides: linux-initramfs-tool'
+setupsimplenativepackage 'initramfs-tools' 'amd64' '1' 'unstable' 'Provides: linux-initramfs-tool'
+BUILDDIR='incoming/initramfs-tools-1'
+mkdir -p "${BUILDDIR}/debian/initramfs-tools/etc"
+echo 'foo2=bar2;' > "${BUILDDIR}/init.conf"
+echo 'init.conf /etc/init.conf' >> "${BUILDDIR}/debian/install"
+buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
+rm -rf "$BUILDDIR"
+
+buildsimplenativepackage 'dracut' 'amd64' '1' 'unstable' 'Provides: linux-initramfs-tool
+Conflicts: initramfs-tools'
+
+setupaptarchive
+
+testdpkgnotinstalled 'kernel' 'initramfs-tools' 'dracut'
+testsuccess apt install kernel -y
+testdpkginstalled 'kernel' 'initramfs-tools'
+testsuccess test -s rootdir/etc/init.conf
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ initramfs-tools*
+The following NEW packages will be installed:
+ dracut
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Purg initramfs-tools [1] [kernel:amd64 ]
+Inst dracut (1 unstable [amd64])
+Conf dracut (1 unstable [amd64])' apt install --purge dracut -s
+testsuccess apt install --purge dracut -y -o Debug::pkgDpkgPm=1 -o Dpkg::Use-Pty=0
+testsuccess apt install --purge dracut -y
+testdpkginstalled 'kernel' 'dracut'
+testdpkgnotinstalled 'initramfs-tools'
+testsuccess test ! -s rootdir/etc/init.conf
diff --git a/test/integration/test-bug-838779-untrusted-to-trusted-Release-hit b/test/integration/test-bug-838779-untrusted-to-trusted-Release-hit
new file mode 100755
index 000000000..6fcc2b8e1
--- /dev/null
+++ b/test/integration/test-bug-838779-untrusted-to-trusted-Release-hit
@@ -0,0 +1,46 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'foo' 'all' '1' 'stable'
+
+export APT_DONT_SIGN=''
+setupaptarchive --no-update
+
+changetowebserver
+
+testsuccess aptget update
+testdpkgnotinstalled 'foo'
+testsuccess apt install foo -y
+testdpkginstalled 'foo'
+testsuccess apt purge foo -y
+testdpkgnotinstalled 'foo'
+
+msgmsg 'Untrusted to trusted hit' 'InRelease'
+rm -rf rootdir/var/lib/apt/lists rootdir/var/cache/apt/archives
+mv rootdir/etc/apt/trusted.gpg.d rootdir/etc/apt/trusted.gpg.d-bak
+testwarning aptget update
+testfailure apt install foo -y
+testdpkgnotinstalled 'foo'
+mv rootdir/etc/apt/trusted.gpg.d-bak rootdir/etc/apt/trusted.gpg.d
+testsuccess aptget update
+testsuccess apt install foo -y
+testdpkginstalled 'foo'
+testsuccess apt purge foo -y
+testdpkgnotinstalled 'foo'
+
+msgmsg 'Untrusted to trusted hit' 'Release.gpg'
+find aptarchive -name 'InRelease' -delete
+rm -rf rootdir/var/lib/apt/lists rootdir/var/cache/apt/archives
+mv rootdir/etc/apt/trusted.gpg.d rootdir/etc/apt/trusted.gpg.d-bak
+testwarning aptget update
+testfailure apt install foo -y
+testdpkgnotinstalled 'foo'
+mv rootdir/etc/apt/trusted.gpg.d-bak rootdir/etc/apt/trusted.gpg.d
+testsuccess aptget update
+testsuccess apt install foo -y
+testdpkginstalled 'foo'
diff --git a/test/integration/test-bug-841874-warning-for-mismatching-distribution b/test/integration/test-bug-841874-warning-for-mismatching-distribution
new file mode 100755
index 000000000..6cc8e3173
--- /dev/null
+++ b/test/integration/test-bug-841874-warning-for-mismatching-distribution
@@ -0,0 +1,61 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'testing' 'foo' 'all' '1'
+
+getcodenamefromsuite() { echo -n 'stretch'; }
+setupaptarchive --no-update
+APTARCHIVE="$(readlink -f './aptarchive')"
+ln -s "${APTARCHIVE}/dists/testing" "${APTARCHIVE}/dists/stretch"
+ln -s "${APTARCHIVE}/dists/testing" "${APTARCHIVE}/dists/zurg"
+
+testfailure apt show foo
+testsuccess apt update
+testsuccess apt show foo
+
+rm -rf rootdir/var/lib/apt/lists
+sed -i -e 's#testing#stretch#g' rootdir/etc/apt/sources.list.d/*
+testsuccess apt update
+testsuccess apt show foo
+
+rm -rf rootdir/var/lib/apt/lists
+sed -i -e 's#stretch#zurg#g' rootdir/etc/apt/sources.list.d/*
+testwarningmsg "W: Conflicting distribution: file:$APTARCHIVE zurg InRelease (expected zurg but got stretch)" apt update
+testsuccess apt show foo
+
+# check that 'foo/bar' is rewritten to 'foo' while we are at it
+rm -rf rootdir/var/lib/apt/lists
+sed -i -e 's#zurg#stretch/updates#g' rootdir/etc/apt/sources.list.d/*
+testfailure apt update
+testfailure apt show foo
+ln -s "${APTARCHIVE}/dists/testing" "${APTARCHIVE}/dists/stretch/updates"
+testsuccess apt update
+testsuccess apt show foo
+
+# … but only if needed
+rm -rf rootdir/var/lib/apt/lists
+sed -i -e 's#stretch#buster#g' rootdir/etc/apt/sources.list.d/*
+sed -i -e 's#^Codename: stretch$#Codename: buster/updates#g' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testfailure apt update
+testfailure apt show foo
+ln -s "${APTARCHIVE}/dists/testing" "${APTARCHIVE}/dists/buster"
+testsuccess apt update
+testsuccess apt show foo
+
+# changing codenames gets a warning, too
+rm -rf rootdir/var/lib/apt/lists
+sed -i -e 's#buster#testing#g' rootdir/etc/apt/sources.list.d/*
+testsuccess apt update
+testsuccess apt show foo
+sed -i -e 's#^Codename: buster#Codename: zurg#g' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testwarningmsg "W: Conflicting distribution: file:$APTARCHIVE testing/updates InRelease (expected buster/updates but got zurg/updates)" apt update
+testsuccess apt show foo
+testsuccess apt update
+testsuccess apt show foo
diff --git a/test/integration/test-bug-lp1347721-dpkg-ordering b/test/integration/test-bug-lp1347721-dpkg-ordering
new file mode 100755
index 000000000..3c31974f9
--- /dev/null
+++ b/test/integration/test-bug-lp1347721-dpkg-ordering
@@ -0,0 +1,11 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+# ensure we find a valid ordering
+testsuccess aptget dist-upgrade -s
diff --git a/test/integration/test-bug-lp1445239-download-loop b/test/integration/test-bug-lp1445239-download-loop
new file mode 100755
index 000000000..6802840a5
--- /dev/null
+++ b/test/integration/test-bug-lp1445239-download-loop
@@ -0,0 +1,28 @@
+#!/bin/sh
+#
+# this is a regression test for LP: #1445239 where a partial download can
+# trigger an endless hang of the download method
+#
+
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+changetowebserver
+
+TESTFILE='aptarchive/testfile'
+dd if=/dev/zero of=$TESTFILE bs=100k count=1 2>/dev/null
+
+DOWNLOADLOG='rootdir/tmp/testdownloadfile.log'
+
+TARGET=./downloaded/testfile-downloaded
+dd if=/dev/zero of=$TARGET bs=99k count=1 2>/dev/null
+if ! downloadfile http://localhost:${APTHTTPPORT}/testfile "$TARGET" > "$DOWNLOADLOG"; then
+ cat >&2 "$DOWNLOADLOG"
+ msgfail
+else
+ msgpass
+fi
diff --git a/test/integration/test-bug-lp1550741-heisestate b/test/integration/test-bug-lp1550741-heisestate
new file mode 100755
index 000000000..76fdcb83c
--- /dev/null
+++ b/test/integration/test-bug-lp1550741-heisestate
@@ -0,0 +1,48 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'module-init-tools' 'amd64' '1.0' 'Depends: libkmod2 (= 21-1)'
+insertpackage 'unstable' 'libkmod2' 'amd64' '0.22-1'
+insertinstalledpackage 'module-init-tools' 'amd64' '0.1'
+
+setupaptarchive
+
+# this test only works if the python-apt is build against the same
+# ABI version as the apt we are testing here
+PYAPT_LIB_VER=$(runpython3 -c 'import apt_pkg;print(apt_pkg.LIB_VERSION)' 2>/dev/null || true)
+if [ ! -f $LIBRARYPATH/libapt-pkg.so.$PYAPT_LIB_VER ]; then
+ msgskip "python-apt build with the wrong library version: $PYAPT_LIB_VER"
+ exit 0
+fi
+
+# we can not test this using our normal sh tests
+cat > test.py <<EOF
+#!/usr/bin/python3
+import sys
+import apt
+def in_valid_state(pkg):
+ return (pkg.marked_keep or
+ pkg.marked_install or
+ pkg.marked_upgrade or
+ pkg.marked_delete or
+ pkg.marked_downgrade or
+ pkg.marked_reinstall)
+# main
+cache=apt.Cache()
+pkgname="module-init-tools"
+if not in_valid_state(cache[pkgname]):
+ print("the test is broken, %s should be in a valid state" % pkgname)
+ sys.exit(99)
+cache.upgrade(True)
+if not in_valid_state(cache[pkgname]):
+ print("package %s is in a heisen-state" % pkgname)
+ sys.exit(2)
+
+EOF
+testsuccess runpython3 test.py
diff --git a/test/integration/test-bug-lp1562402-nomark-removals-as-keep b/test/integration/test-bug-lp1562402-nomark-removals-as-keep
new file mode 100755
index 000000000..6e8225aa4
--- /dev/null
+++ b/test/integration/test-bug-lp1562402-nomark-removals-as-keep
@@ -0,0 +1,39 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'maas-common' 'all' '2.0.0~alpha4+bzr4843-0ubuntu1~xenial2'
+insertpackage 'unstable' 'maas-region-controller-min' 'amd64' '2.0.0~alpha4+bzr4837-0ubuntu1~xenial1' 'Depends: maas-common (= 2.0.0~alpha4+bzr4837-0ubuntu1~xenial1)'
+insertpackage 'unstable' 'maas-region-api' 'amd64' '2.0.0~alpha4+bzr4843-0ubuntu1~xenial2' 'Depends: maas-common (= 2.0.0~alpha4+bzr4843-0ubuntu1~xenial2)\nConflicts: maas-region-controller-min\nProvides: maas-region-controller-min'
+insertpackage 'unstable' 'maas-region-controller' 'all' '2.0.0~alpha4+bzr4843-0ubuntu1~xenial2' 'Depends: maas-region-api (= 2.0.0~alpha4+bzr4843-0ubuntu1~xenial2)'
+
+insertinstalledpackage 'maas-common' 'all' '2.0.0~alpha3+bzr4810-0ubuntu1'
+insertinstalledpackage 'maas-region-controller-min' 'amd64' '2.0.0~alpha3+bzr4810-0ubuntu1' 'Depends: maas-common (= 2.0.0~alpha3+bzr4810-0ubuntu1)'
+insertinstalledpackage 'maas-region-controller' 'all' '2.0.0~alpha3+bzr4810-0ubuntu1' 'Depends: maas-region-controller-min (= 2.0.0~alpha3+bzr4810-0ubuntu1)'
+
+setupaptarchive
+
+testsuccess aptget dist-upgrade -s -o Debug::pkgDepCache::AutoInstall=true -o Debug::pkgPackageManager=yes -o Debug::pkgProblemResolver=yes
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ maas-region-controller-min
+The following NEW packages will be installed:
+ maas-region-api
+The following packages will be upgraded:
+ maas-common maas-region-controller
+2 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Inst maas-region-controller [2.0.0~alpha3+bzr4810-0ubuntu1] (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [all]) []
+Remv maas-region-controller-min [2.0.0~alpha3+bzr4810-0ubuntu1] []
+Inst maas-common [2.0.0~alpha3+bzr4810-0ubuntu1] (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [all]) []
+Inst maas-region-api (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [amd64])
+Conf maas-region-controller (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [all])
+Conf maas-common (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [all])
+Conf maas-region-api (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [amd64])' \
+aptget dist-upgrade -s
diff --git a/test/integration/test-bug-lp1694697-build-dep-architecture-limited-alternative b/test/integration/test-bug-lp1694697-build-dep-architecture-limited-alternative
new file mode 100755
index 000000000..7f8e4ad3d
--- /dev/null
+++ b/test/integration/test-bug-lp1694697-build-dep-architecture-limited-alternative
@@ -0,0 +1,58 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+
+insertpackage 'stable' 'build-depends' 'i386' '1'
+insertpackage 'stable' 'foo' 'i386' '1'
+insertinstalledpackage 'build-essential' 'i386' '1'
+
+setupaptarchive
+
+# This used to be interpreted as build-depends | foo
+cat > foobar.dsc <<EOF
+Format: 3.0 (native)
+Source: foobar
+Binary: foobar
+Architecture: all
+Version: 1
+Maintainer: Joe Sixpack <joe@example.org>
+Build-Depends: build-depends [i386] | build-depends [amd64], foo
+Standards-Version: 3.9.8
+EOF
+testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ build-depends foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst build-depends (1 stable [i386])
+Inst foo (1 stable [i386])
+Conf build-depends (1 stable [i386])
+Conf foo (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc
+
+
+# This caused a segmentation fault
+cat > foobar.dsc <<EOF
+Format: 3.0 (native)
+Source: foobar
+Binary: foobar
+Architecture: all
+Version: 1
+Maintainer: Joe Sixpack <joe@example.org>
+Build-Depends: build-depends [i386] | build-depends [amd64]
+Standards-Version: 3.9.8
+EOF
+testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ build-depends
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst build-depends (1 stable [i386])
+Conf build-depends (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc
diff --git a/test/integration/test-bug-multiarch-upgrade b/test/integration/test-bug-multiarch-upgrade
new file mode 100755
index 000000000..38e70531e
--- /dev/null
+++ b/test/integration/test-bug-multiarch-upgrade
@@ -0,0 +1,29 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'libcups2' 'amd64' '1' 'Multi-Arch: same'
+insertinstalledpackage 'libcups2' 'i386' '1' 'Multi-Arch: same'
+
+insertpackage 'unstable' 'libcups2' 'amd64' '0' 'Multi-Arch: same'
+insertpackage 'unstable' 'libcups2' 'amd64' '2' 'Multi-Arch: same'
+insertpackage 'unstable' 'libcups2' 'i386' '0' 'Multi-Arch: same'
+insertpackage 'unstable' 'libcups2' 'i386' '2' 'Multi-Arch: same'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libcups2
+The following packages will be upgraded:
+ libcups2 libcups2:i386
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst libcups2 [1] (2 unstable [amd64]) [libcups2:amd64 on libcups2:i386] [libcups2:i386 on libcups2:amd64] [libcups2:i386 ]
+Inst libcups2:i386 [1] (2 unstable [i386])
+Conf libcups2 (2 unstable [amd64])
+Conf libcups2:i386 (2 unstable [i386])' aptget install -s libcups2:i386
diff --git a/test/integration/test-cachecontainer-architecture-specification b/test/integration/test-cachecontainer-architecture-specification
new file mode 100755
index 000000000..65574685e
--- /dev/null
+++ b/test/integration/test-cachecontainer-architecture-specification
@@ -0,0 +1,123 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'armel'
+
+#insertinstalledpackage 'xserver-xorg-core' 'amd64' '2:1.7.6-2ubuntu7.10'
+insertpackage 'unstable' 'libsame' 'armel,amd64' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'foo' 'all' '1'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsame
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame (1 unstable [amd64])
+Conf libsame (1 unstable [amd64])' aptget -s install libsame
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsame:armel
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame:armel (1 unstable [armel])
+Conf libsame:armel (1 unstable [armel])' aptget -s install libsame:armel
+testfailureequal 'Reading package lists...
+Building dependency tree...
+E: Unable to locate package libsame:armhf' aptget -s install libsame:armhf
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsame
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame (1 unstable [amd64])
+Conf libsame (1 unstable [amd64])' aptget -s install libsame:amd64
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsame libsame:armel
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame (1 unstable [amd64])
+Inst libsame:armel (1 unstable [armel])
+Conf libsame (1 unstable [amd64])
+Conf libsame:armel (1 unstable [armel])' aptget -s install libsame:armel libsame:amd64
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsame libsame:armel
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame (1 unstable [amd64])
+Inst libsame:armel (1 unstable [armel])
+Conf libsame (1 unstable [amd64])
+Conf libsame:armel (1 unstable [armel])' aptget -s install libsame:*
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsame
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame (1 unstable [amd64])
+Conf libsame (1 unstable [amd64])' aptget -s install libsame:any
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsame libsame:armel
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame (1 unstable [amd64])
+Inst libsame:armel (1 unstable [armel])
+Conf libsame (1 unstable [amd64])
+Conf libsame:armel (1 unstable [armel])' aptget -s install libsame:a*
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsame
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame (1 unstable [amd64])
+Conf libsame (1 unstable [amd64])' aptget -s install libsame:linux-any
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsame libsame:armel
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame (1 unstable [amd64])
+Inst libsame:armel (1 unstable [armel])
+Conf libsame (1 unstable [amd64])
+Conf libsame:armel (1 unstable [armel])' aptget -s install libsame:linux-*
+testfailureequal 'Reading package lists...
+Building dependency tree...
+E: Unable to locate package libsame:windows-any' aptget -s install libsame:windows-any
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+E: Unable to locate package foo:armel' aptget -s install foo:armel
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [all])
+Conf foo (1 unstable [all])' aptget -s install foo
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [all])
+Conf foo (1 unstable [all])' aptget -s install foo:all
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [all])
+Conf foo (1 unstable [all])' aptget -s install foo:amd64
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [all])
+Conf foo (1 unstable [all])' aptget -s install foo:native
diff --git a/test/integration/test-compressed-indexes b/test/integration/test-compressed-indexes
new file mode 100755
index 000000000..ef02b45f6
--- /dev/null
+++ b/test/integration/test-compressed-indexes
@@ -0,0 +1,180 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configcompression 'ALL'
+configarchitecture 'i386'
+LOWCOSTEXT='lz4'
+
+buildsimplenativepackage 'testpkg' 'i386' '1.0'
+
+buildaptarchive
+setupdistsaptarchive
+# fake a pdiff setup as apt wouldn't try pdiffs otherwise
+find aptarchive -name 'Packages' -o -name 'Sources' | while read file; do
+ mkdir "${file}.diff"
+ PATCHINDEX="${file}.diff/Index"
+ echo 'SHA1-Current: adc83b19e793491b1c6ea0fd8b46cd9f32e592fc 0
+SHA1-History:
+ adc83b19e793491b1c6ea0fd8b46cd9f32e592fc 33053002 2010-08-18-2013.28
+ ecfd1b19e793491b1c6ea123eabdcd9f32e592fc 33053001 2010-08-18-2013.29
+SHA1-Patches:
+ abc1fc0ac57cd83d41c63195a9342e2db5650257 19722 2010-08-18-0814.28
+ dfe3444ac57cd83d41c63195a9342e2db5650257 19722 2010-08-18-0814.29' > $PATCHINDEX
+done
+generatereleasefiles
+signreleasefiles
+
+testrun() {
+ local F
+ msgtest 'Check if all index files are' "${1:-uncompressed}"
+ if [ "$1" = 'compressed' ]; then
+ ! test -e rootdir/var/lib/apt/lists/*i386_Packages || F=1
+ ! test -e rootdir/var/lib/apt/lists/*_Sources || F=1
+ ! test -e rootdir/var/lib/apt/lists/*_Translation-en || F=1
+ test -e rootdir/var/lib/apt/lists/*i386_Packages.$LOWCOSTEXT || F=1
+ test -e rootdir/var/lib/apt/lists/*_Sources.$LOWCOSTEXT || F=1
+ test -e rootdir/var/lib/apt/lists/*_Translation-en.$LOWCOSTEXT || F=1
+ # there is no point in trying pdiff if we have compressed indexes
+ # as we can't patch compressed files (well, we can, but what is the point?)
+ ! test -e rootdir/var/lib/apt/lists/*diff_Index || F=1
+ else
+ # clear the faked pdiff indexes so the glob below works
+ rm -f rootdir/var/lib/apt/lists/*diff_Index
+ test -e rootdir/var/lib/apt/lists/*i386_Packages || F=1
+ test -e rootdir/var/lib/apt/lists/*_Sources || F=1
+ test -e rootdir/var/lib/apt/lists/*_Translation-en || F=1
+ ! test -e rootdir/var/lib/apt/lists/*i386_Packages.* || F=1
+ ! test -e rootdir/var/lib/apt/lists/*_Sources.* || F=1
+ ! test -e rootdir/var/lib/apt/lists/*_Translation-en.* || F=1
+ fi
+ if [ -n "$F" ]; then
+ cat rootdir/tmp/testsuccess.output
+ ls -laR rootdir/var/lib/apt/lists/
+ msgfail
+ else
+ msgpass
+ fi
+ msgtest 'Check if package is downloadable'
+ cd downloaded
+ testsuccess --nomsg aptget download testpkg
+ msgtest 'deb file is present'; testsuccess --nomsg test -f testpkg_1.0_i386.deb
+ rm -f testpkg_1.0_i386.deb
+ cd - >/dev/null
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ testpkg
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst testpkg (1.0 unstable [i386])
+Conf testpkg (1.0 unstable [i386])' aptget install testpkg -s -o Debug::pkgAcquire::Auth=0 -o Debug::pkgAcquire::Worker=0
+ rm -f rootdir/var/cache/apt/pkgcache.bin rootdir/var/cache/apt/srcpkgcache.bin
+ testsuccessequal "$GOODSHOW" aptcache show testpkg
+ testsuccessequal "$GOODSHOW" aptcache show testpkg
+ rm -f rootdir/var/cache/apt/pkgcache.bin rootdir/var/cache/apt/srcpkgcache.bin
+ testsuccessequal "$GOODPOLICY" aptcache policy testpkg
+ testsuccessequal "$GOODPOLICY" aptcache policy testpkg
+ rm -f rootdir/var/cache/apt/pkgcache.bin rootdir/var/cache/apt/srcpkgcache.bin
+ testsuccessequal "$GOODSHOWSRC" aptcache showsrc testpkg
+ testsuccessequal "$GOODSHOWSRC" aptcache showsrc testpkg
+ aptget clean
+ msgtest 'Check if the source is aptgetable'
+ cd downloaded
+ testsuccess --nomsg aptget source testpkg
+ testsuccess test -s testpkg_1.0.dsc
+ testsuccess test -d testpkg-1.0
+ rm -rf testpkg-1.0*
+ cd - >/dev/null
+ testsuccessequal "$(aptcache show testpkg -o Acquire::Languages=none)
+" aptcache dumpavail
+}
+
+echo 'Dir::Log::Planner "/dev/null";
+Debug::pkgAcquire::worker "true";
+debug::pkgAcquire::Auth "true";
+Debug::pkgAcquire::Diffs "true";
+Debug::Acquire::http "true";' > rootdir/etc/apt/apt.conf.d/99debugconf
+
+testovermethod() {
+ forcecompressor $2
+
+ for INDEX in 'false' 'true'; do
+ rm -rf rootdir/var/lib/apt/lists
+ echo "Acquire::GzipIndexes \"${INDEX}\";" > rootdir/etc/apt/apt.conf.d/02compressindex
+ local INDCOMP
+ if [ "$INDEX" = 'false' -o "$1" = 'cdrom' ]; then
+ INDCOMP='uncompressed'
+ else
+ INDCOMP='compressed'
+ echo 'APT::Compressor::lz4::Name "lz4";' >> rootdir/etc/apt/apt.conf.d/02compressindex
+ fi
+
+ msgmsg "${1}: ${COMPRESSOR}: Test with $INDCOMP indexes gzip=$INDEX"
+ if [ "${1}" = 'cdrom' ]; then
+ testsuccess aptcdrom add </dev/null
+ fi
+ testsuccess aptget update
+ testrun "$INDCOMP"
+
+ if [ "${1}" != 'cdrom' ]; then
+ testsuccess aptget update -o Acquire::Pdiffs=1
+ msgmsg "${1}: ${COMPRESSOR}: Test with $INDCOMP indexes gzip=$INDEX (update unchanged with pdiffs)"
+ testrun "$INDCOMP"
+
+ testsuccess aptget update -o Acquire::Pdiffs=0
+ msgmsg "${1}: ${COMPRESSOR}: Test with $INDCOMP indexes gzip=$INDEX (update unchanged without pdiffs)"
+ testrun "$INDCOMP"
+ fi
+
+ rm rootdir/etc/apt/apt.conf.d/02compressindex
+ done
+}
+
+testsuccess aptget update
+GOODSHOW="$(aptcache show testpkg)
+"
+test $(echo "$GOODSHOW" | grep -e '^Package: testpkg' -e '^Version: 1.0' -e '^Architecture: i386' | wc -l) -eq 3 || msgdie 'show is broken'
+testsuccessequal "$GOODSHOW" aptcache show testpkg
+GOODSHOWSRC="$(aptcache showsrc testpkg)
+"
+test $(echo "$GOODSHOWSRC" | grep -e '^Package: testpkg' -e '^Format: 3.0 (native)' -e '^Files:' -e '^Checksums-Sha256:' | wc -l) -eq 4 || msgdie 'showsrc is broken'
+testsuccessequal "$GOODSHOWSRC" aptcache showsrc testpkg
+GOODPOLICY="$(aptcache policy testpkg)"
+test $(echo "$GOODPOLICY" | grep -e '^testpkg:' -e '^ Candidate:' -e '^ Installed: (none)' -e '500 file:/' | wc -l) -eq 4 || msgdie 'file policy is broken'
+testsuccessequal "$GOODPOLICY" aptcache policy testpkg
+forallsupportedcompressors testovermethod 'file'
+
+rewritesourceslist "copy://${TMPWORKINGDIRECTORY}/aptarchive"
+rm -rf rootdir/var/lib/apt/lists
+testsuccess aptget update
+GOODPOLICY="$(aptcache policy testpkg)"
+test $(echo "$GOODPOLICY" | grep -e '^testpkg:' -e '^ Candidate:' -e '^ Installed: (none)' -e '500 copy:/' | wc -l) -eq 4 || msgdie 'copy policy is broken'
+testsuccessequal "$GOODPOLICY" aptcache policy testpkg
+forallsupportedcompressors testovermethod 'copy'
+
+changetowebserver
+rm -rf rootdir/var/lib/apt/lists
+testsuccess aptget update
+GOODPOLICY="$(aptcache policy testpkg)"
+test $(echo "$GOODPOLICY" | grep -e '^testpkg:' -e '^ Candidate:' -e '^ Installed: (none)' -e '500 http://' | wc -l) -eq 4 || msgdie 'http policy is broken'
+testsuccessequal "$GOODPOLICY" aptcache policy testpkg
+forallsupportedcompressors testovermethod 'http'
+
+changetohttpswebserver
+rm -rf rootdir/var/lib/apt/lists
+testsuccess aptget update
+GOODPOLICY="$(aptcache policy testpkg)"
+test $(echo "$GOODPOLICY" | grep -e '^testpkg:' -e '^ Candidate:' -e '^ Installed: (none)' -e '500 https://' | wc -l) -eq 4 || msgdie 'https policy is broken'
+testsuccessequal "$GOODPOLICY" aptcache policy testpkg
+forallsupportedcompressors testovermethod 'https'
+
+changetocdrom 'Debian APT Testdisk 0.8.15'
+rm -rf rootdir/var/lib/apt/lists
+testsuccess aptcdrom add </dev/null
+GOODPOLICY="$(aptcache policy testpkg)"
+test $(echo "$GOODPOLICY" | grep -e '^testpkg:' -e '^ Candidate:' -e '^ Installed: (none)' -e '500 cdrom://' | wc -l) -eq 4 || msgdie 'cdrom policy is broken'
+testsuccessequal "$GOODPOLICY" aptcache policy testpkg
+forallsupportedcompressors testovermethod 'cdrom'
diff --git a/test/integration/test-conflicts-loop b/test/integration/test-conflicts-loop
new file mode 100755
index 000000000..5b6e44626
--- /dev/null
+++ b/test/integration/test-conflicts-loop
@@ -0,0 +1,33 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertinstalledpackage 'openjdk-6-jre' 'i386' '6b16-1.8-0ubuntu1'
+insertpackage 'unstable' 'openjdk-6-jre' 'i386' '6b20-1.9.8-0ubuntu1~10.04.1' 'Conflicts: openjdk-6-jre-headless (<< 6b17~pre3-1), openjdk-6-jre-lib (<< 6b17~pre3-1)'
+insertinstalledpackage 'openjdk-6-jre-lib' 'i386' '6b16-1.8-0ubuntu1'
+insertpackage 'unstable' 'openjdk-6-jre-lib' 'i386' '6b20-1.9.8-0ubuntu1~10.04.1' 'Conflicts: openjdk-6-jre (<< 6b17~pre3-1), openjdk-6-jre-headless (<< 6b17~pre3-1)'
+insertinstalledpackage 'openjdk-6-jre-headless' 'i386' '6b16-1.8-0ubuntu1'
+insertpackage 'unstable' 'openjdk-6-jre-headless' 'i386' '6b20-1.9.8-0ubuntu1~10.04.1' 'Conflicts: openjdk-6-jre (<< 6b17~pre3-1), openjdk-6-jre-lib (<< 6b17~pre3-1)'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ openjdk-6-jre openjdk-6-jre-headless openjdk-6-jre-lib
+3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Remv openjdk-6-jre-headless [6b16-1.8-0ubuntu1]
+Remv openjdk-6-jre-lib [6b16-1.8-0ubuntu1]
+Inst openjdk-6-jre [6b16-1.8-0ubuntu1] (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])
+Inst openjdk-6-jre-lib [6b16-1.8-0ubuntu1] (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])
+Conf openjdk-6-jre-lib (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])
+Conf openjdk-6-jre (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])
+Inst openjdk-6-jre-headless [6b16-1.8-0ubuntu1] (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])
+Conf openjdk-6-jre-headless (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])' aptget dist-upgrade -s -o APT::Immediate-Configure-All=true
+
+testsuccess aptget dist-upgrade -s
diff --git a/test/integration/test-conflicts-real-multiarch-same b/test/integration/test-conflicts-real-multiarch-same
new file mode 100755
index 000000000..73f7b9a61
--- /dev/null
+++ b/test/integration/test-conflicts-real-multiarch-same
@@ -0,0 +1,50 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertpackage 'unstable' 'virtual-provider' 'amd64,i386' '2' 'Provides: virtual
+Conflicts: virtual
+Multi-Arch: same'
+insertpackage 'unstable' 'real' 'amd64,i386' '2' 'Conflicts: real
+Multi-Arch: same'
+insertpackage 'unstable' 'real-provider' 'amd64,i386' '2' 'Provides: real-provider
+Conflicts: real-provider
+Multi-Arch: same'
+setupaptarchive
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'virtual-provider' instead of 'virtual'
+Note, selecting 'virtual-provider:i386' instead of 'virtual:i386'
+The following NEW packages will be installed:
+ virtual-provider virtual-provider:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst virtual-provider (2 unstable [amd64])
+Inst virtual-provider:i386 (2 unstable [i386])
+Conf virtual-provider (2 unstable [amd64])
+Conf virtual-provider:i386 (2 unstable [i386])" aptget install virtual:* -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ real real:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst real (2 unstable [amd64])
+Inst real:i386 (2 unstable [i386])
+Conf real (2 unstable [amd64])
+Conf real:i386 (2 unstable [i386])' aptget install real:* -s
+
+# ensure that we are not confused by the provides
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ real-provider real-provider:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst real-provider (2 unstable [amd64])
+Inst real-provider:i386 (2 unstable [i386])
+Conf real-provider (2 unstable [amd64])
+Conf real-provider:i386 (2 unstable [i386])' aptget install real-provider:* -s
diff --git a/test/integration/test-crossgrades b/test/integration/test-crossgrades
new file mode 100755
index 000000000..6398e7e7f
--- /dev/null
+++ b/test/integration/test-crossgrades
@@ -0,0 +1,82 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386' 'amd64' 'armel'
+configdpkgnoopchroot
+
+buildsimplenativepackage 'unrelated' 'amd64' '1' 'stable'
+buildsimplenativepackage 'crosser' 'i386,armel' '1' 'stable' 'Multi-Arch: same'
+buildsimplenativepackage 'crosser' 'amd64' '2' 'unstable'
+buildsimplenativepackage 'crosser' 'i386,armel' '3' 'experimental' 'Multi-Arch: same'
+setupaptarchive
+
+singleinstance() {
+ testsuccess apt install crosser:i386=1 unrelated:amd64 -y --planner $1
+ testdpkginstalled 'crosser:i386' 'unrelated'
+
+ testsuccess apt install crosser:amd64 -y -o Debug::pkgDpkgPm=1 -o Dpkg::Use-Pty=0 --purge --planner $1
+ cp -a rootdir/tmp/testsuccess.output crosser.output
+ testfailure grep -- '--remove.*crosser.*' crosser.output
+ testfailure grep -- '--purge' crosser.output
+ testsuccess apt install crosser:amd64 unrelated:amd64- -y -o Dpkg::Use-Pty=0 --purge -o Debug::pkgDPkgProgressReporting=1 --planner $1
+ testdpkgnotinstalled 'crosser:i386' 'unrelated'
+ testdpkginstalled 'crosser:amd64'
+
+ testsuccess apt install crosser:armel=3 -y -o Debug::pkgDpkgPm=1 -o Dpkg::Use-Pty=0 --purge --planner $1
+ cp -a rootdir/tmp/testsuccess.output crosser.output
+ testsuccess grep -- '--remove.*crosser.*' crosser.output
+ testsuccess grep -- '--purge' crosser.output
+ testsuccess apt install crosser:armel=3 -y -o Debug::pkgDPkgProgressReporting=1 -o Dpkg::Use-Pty=0 --purge --planner $1
+ testdpkgnotinstalled 'crosser:i386' 'crosser:amd64' 'unrelated'
+ testdpkginstalled 'crosser:armel'
+
+ testsuccess apt install crosser=1 -y -o Debug::pkgDpkgPm=1 -o Dpkg::Use-Pty=0 --purge --planner $1 --allow-downgrades
+ cp -a rootdir/tmp/testsuccess.output crosser.output
+ testsuccess grep -- '--remove.*crosser.*' crosser.output
+ testsuccess grep -- '--purge' crosser.output
+ testsuccess apt install crosser=1 -y -o Debug::pkgDPkgProgressReporting=1 -o Dpkg::Use-Pty=0 --purge --planner $1 --allow-downgrades
+ testdpkgnotinstalled 'crosser:armel' 'crosser:amd64' 'unrelated'
+ testdpkginstalled 'crosser:i386'
+
+ testsuccess apt purge crosser:i386 -y --planner $1
+ testdpkgnotinstalled 'crosser:i386'
+}
+singleinstance 'internal'
+singleinstance 'apt'
+
+multiinstance() {
+ testsuccess apt install crosser:i386=1 crosser:armel=1 unrelated:amd64 -y --planner $1
+ testdpkginstalled 'crosser:i386' 'crosser:armel' 'unrelated'
+
+ testsuccess apt install crosser:amd64 -y -o Debug::pkgDpkgPm=1 -o Dpkg::Use-Pty=0 --purge --planner $1
+ cp -a rootdir/tmp/testsuccess.output crosser.output
+ testsuccess grep -- '--remove.*crosser.*' crosser.output
+ testsuccess grep -- '--purge' crosser.output
+ testsuccess apt install crosser:amd64 unrelated:amd64- -y -o Dpkg::Use-Pty=0 --purge -o Debug::pkgDPkgProgressReporting=1 --planner $1
+ testdpkgnotinstalled 'crosser:i386' 'crosser:armel' 'unrelated'
+ testdpkginstalled 'crosser:amd64'
+
+ testsuccess apt install crosser:i386 crosser:armel -t experimental -y -o Debug::pkgDpkgPm=1 -o Dpkg::Use-Pty=0 --purge --planner $1
+ cp -a rootdir/tmp/testsuccess.output crosser.output
+ testsuccess grep -- '--remove.*crosser.*' crosser.output
+ testsuccess grep -- '--purge' crosser.output
+ testsuccess apt install crosser:i386 crosser:armel -t experimental -y -o Debug::pkgDPkgProgressReporting=1 -o Dpkg::Use-Pty=0 --purge --planner $1
+ testdpkgnotinstalled 'crosser:amd64' 'unrelated'
+ testdpkginstalled 'crosser:i386' 'crosser:armel'
+
+ testsuccess apt install crosser:i386- crosser:armel=1 -y -o Debug::pkgDpkgPm=1 -o Dpkg::Use-Pty=0 --purge --planner $1 --allow-downgrades
+ cp -a rootdir/tmp/testsuccess.output crosser.output
+ testsuccess grep -- '--remove.*crosser.*' crosser.output
+ testsuccess grep -- '--purge' crosser.output
+ testsuccess apt install crosser:i386- crosser:armel=1 -y -o Debug::pkgDPkgProgressReporting=1 -o Dpkg::Use-Pty=0 --purge --planner $1 --allow-downgrades
+ testdpkgnotinstalled 'crosser:amd64' 'crosser:i386' 'unrelated'
+ testdpkginstalled 'crosser:armel'
+
+ testsuccess apt purge crosser:armel -y --planner $1 -o Debug::pkgDPkgProgressReporting=1
+ testdpkgnotinstalled 'crosser:i386' 'crosser:armel' 'crosser:amd64' 'unrelated'
+}
+multiinstance 'internal'
diff --git a/test/integration/test-cve-2013-1051-InRelease-parsing b/test/integration/test-cve-2013-1051-InRelease-parsing
new file mode 100755
index 000000000..6238057c3
--- /dev/null
+++ b/test/integration/test-cve-2013-1051-InRelease-parsing
@@ -0,0 +1,68 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'stable' 'good-pkg' 'all' '1.0'
+
+setupaptarchive
+
+changetowebserver
+ARCHIVE="http://localhost:${APTHTTPPORT}"
+msgtest 'Initial apt-get update should work with' 'InRelease'
+testsuccess --nomsg aptget update
+
+# check that the setup is correct
+testsuccessequal "good-pkg:
+ Installed: (none)
+ Candidate: 1.0
+ Version table:
+ 1.0 500
+ 500 ${ARCHIVE} stable/main all Packages" aptcache policy good-pkg
+
+# now exchange to the Packages file, note that this could be
+# done via MITM too
+insertpackage 'stable' 'bad-mitm' 'all' '1.0'
+
+# this builds compressed files and a new (unsigned) Release
+buildaptarchivefromfiles '+1hour'
+
+# add a space into the BEGIN PGP SIGNATURE PART/END PGP SIGNATURE part
+# to trick apt - this is still legal to gpg(v)
+sed -i '/^-----BEGIN PGP SIGNATURE-----/,/^-----END PGP SIGNATURE-----/ s/^$/ /g' aptarchive/dists/stable/InRelease
+
+# we append the (evil unsigned) Release file to the (good signed) InRelease
+cat aptarchive/dists/stable/Release >> aptarchive/dists/stable/InRelease
+touch -d '+1hour' aptarchive/dists/stable/InRelease
+
+# ensure the update doesn't load bad data as good data
+# Note that we will pick up the InRelease itself as we download no other
+# indexes which would trigger a hashsum mismatch, but we ignore the 'bad'
+# part of the InRelease
+listcurrentlistsdirectory | sed '/_InRelease/ d' > listsdir.lst
+msgtest 'apt-get update should ignore unsigned data in the' 'InRelease'
+testwarningequal "Get:1 http://localhost:${APTHTTPPORT} stable InRelease [$(stat -c%s aptarchive/dists/stable/InRelease) B]
+Reading package lists...
+W: Clearsigned file '${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial/localhost:${APTHTTPPORT}_dists_stable_InRelease' contains unsigned lines.
+W: Clearsigned file '${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_stable_InRelease' contains unsigned lines." --nomsg aptget update
+testfileequal './listsdir.lst' "$(listcurrentlistsdirectory | sed '/_InRelease/ d')"
+
+# ensure there is no package
+testfailureequal 'Reading package lists...
+Building dependency tree...
+E: Unable to locate package bad-mitm' aptget install bad-mitm -s
+
+# and verify that its not picked up
+testsuccessequal 'N: Unable to locate package bad-mitm' aptcache policy bad-mitm
+
+# and that the right one is used
+testsuccessequal "good-pkg:
+ Installed: (none)
+ Candidate: 1.0
+ Version table:
+ 1.0 500
+ 500 ${ARCHIVE} stable/main all Packages" aptcache policy good-pkg
diff --git a/test/integration/test-different-methods-for-same-source b/test/integration/test-different-methods-for-same-source
new file mode 100755
index 000000000..791a84cb7
--- /dev/null
+++ b/test/integration/test-different-methods-for-same-source
@@ -0,0 +1,35 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'stable' 'foo' 'all' '1'
+insertsource 'stable' 'foo' 'all' '1'
+setupaptarchive --no-update
+
+changetowebserver
+webserverconfig 'aptwebserver::redirect::replace::/redirectme/' "http://localhost:${APTHTTPPORT}/"
+
+echo 'Dir::Bin::Methods::http-ng "http";' > rootdir/etc/apt/apt.conf.d/99add-http-ng-method
+sed -i -e 's# http:# http-ng:#' $(find rootdir/etc/apt/sources.list.d -name '*-deb-src.list')
+
+testsuccess apt update -o Debug::Acquire::http-ng=1
+cp rootdir/tmp/testsuccess.output update.log
+# all requests are folded into the first Release file
+testsuccess grep ' http-ng://' update.log
+testfailure grep ' http://' update.log
+# see if method-specific debug was enabled
+testsuccess grep '^Answer for: http-ng:' update.log
+
+rm -rf rootdir/var/lib/apt/lists
+sed -i -e "s#:${APTHTTPPORT}/#:${APTHTTPPORT}/redirectme#" rootdir/etc/apt/sources.list.d/*
+testsuccess apt update -o Debug::Acquire::http-ng=1
+cp rootdir/tmp/testsuccess.output update.log
+# all requests are folded into the first Release file
+testsuccess grep ' http-ng://' update.log
+testfailure grep '^[^L].* http://' update.log
+# see if method-specific debug was enabled
+testsuccess grep '^Answer for: http-ng:' update.log
diff --git a/test/integration/test-disappearing-packages b/test/integration/test-disappearing-packages
new file mode 100755
index 000000000..e8748e6bc
--- /dev/null
+++ b/test/integration/test-disappearing-packages
@@ -0,0 +1,92 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildsimplenativepackage 'old-pkg' 'amd64' '1' 'stable'
+
+setupsimplenativepackage 'new-pkg' 'amd64' '2' 'unstable' 'Provides: old-pkg
+Replaces: old-pkg
+Conflicts: old-pkg (<< 2)'
+BUILDDIR='incoming/new-pkg-2'
+echo '/usr/share/doc/new-pkg /usr/share/doc/old-pkg' > "${BUILDDIR}/debian/new-pkg.links"
+buildpackage "$BUILDDIR" 'unstable' 'main'
+rm -rf "$BUILDDIR"
+
+setupsimplenativepackage 'old-pkg' 'all' '2' 'unstable' 'Depends: new-pkg'
+BUILDDIR='incoming/old-pkg-2'
+echo '/usr/share/doc/new-pkg /usr/share/doc/old-pkg' > "${BUILDDIR}/debian/old-pkg.links"
+echo "
+override_dh_link:
+ rm -rf debian/old-pkg/usr/share/doc/old-pkg/
+ dh_link" >> "${BUILDDIR}/debian/rules"
+buildpackage "$BUILDDIR" 'unstable' 'main'
+rm -rf "$BUILDDIR"
+
+setupsimplenativepackage 'super-new-pkg' 'i386' '3' 'experimental' 'Provides: new-pkg
+Replaces: new-pkg
+Conflicts: new-pkg (<< 3)'
+BUILDDIR='incoming/super-new-pkg-3'
+echo '/usr/share/doc/super-new-pkg /usr/share/doc/old-pkg' > "${BUILDDIR}/debian/super-new-pkg.links"
+echo '/usr/share/doc/super-new-pkg /usr/share/doc/new-pkg' >> "${BUILDDIR}/debian/super-new-pkg.links"
+buildpackage "$BUILDDIR" 'experimental' 'main'
+rm -rf "$BUILDDIR"
+
+setupsimplenativepackage 'new-pkg' 'all' '3' 'experimental' 'Depends: super-new-pkg'
+BUILDDIR='incoming/new-pkg-3'
+echo '/usr/share/doc/super-new-pkg /usr/share/doc/old-pkg' > "${BUILDDIR}/debian/new-pkg.links"
+echo '/usr/share/doc/super-new-pkg /usr/share/doc/new-pkg' >> "${BUILDDIR}/debian/new-pkg.links"
+echo "
+override_dh_link:
+ rm -rf debian/new-pkg/usr/share/doc/new-pkg/
+ dh_link" >> "${BUILDDIR}/debian/rules"
+buildpackage "$BUILDDIR" 'experimental' 'main'
+rm -rf "$BUILDDIR"
+
+setupaptarchive
+
+msgmsg 'Let a package disappear' 'old-pkg'
+testsuccess aptget install old-pkg=1 --trivial-only
+testmarkedauto # old-pkg is manual installed
+testsuccess aptget dist-upgrade -y
+testdpkgnotinstalled old-pkg
+cp rootdir/tmp/testsuccess.output disappear.output
+testsuccessequal 'The following package disappeared from your system as
+all files have been overwritten by other packages:
+ old-pkg
+Note: This is done automatically and on purpose by dpkg.' tail -n 4 disappear.output
+
+sed -i rootdir/var/log/apt/history.log -e '/^Commandline: / d' -e '/^Start-Date: / d' -e '/^End-Date: / d' -e "s#:$(getarchitecture 'native') #:native #"
+if [ -n "$SUDO_USER" ]; then
+ testfileequal 'rootdir/var/log/apt/history.log' "
+Requested-By: $SUDO_USER ($(id -u "$SUDO_USER"))
+Install: old-pkg:native (1)
+
+Requested-By: $SUDO_USER ($(id -u "$SUDO_USER"))
+Install: new-pkg:native (2, automatic)
+Upgrade: old-pkg:native (1, 2)
+Disappeared: old-pkg (1)"
+else
+ testfileequal 'rootdir/var/log/apt/history.log' '
+Install: old-pkg:native (1)
+
+Install: new-pkg:native (2, automatic)
+Upgrade: old-pkg:native (1, 2)
+Disappeared: old-pkg (1)'
+fi
+
+testmarkedauto # new-pkg should have get the manual flag from old-pkg
+
+msgmsg 'Let a package disappear which let the previous disappear' 'new-pkg'
+testsuccess aptget dist-upgrade -y -t experimental
+testdpkgnotinstalled new-pkg
+cp rootdir/tmp/testsuccess.output disappear.output
+testsuccessequal 'The following package disappeared from your system as
+all files have been overwritten by other packages:
+ new-pkg
+Note: This is done automatically and on purpose by dpkg.' tail -n 4 disappear.output
+
+testmarkedauto
diff --git a/test/integration/test-dpkg-assert-multi-arch b/test/integration/test-dpkg-assert-multi-arch
new file mode 100755
index 000000000..a99f320b3
--- /dev/null
+++ b/test/integration/test-dpkg-assert-multi-arch
@@ -0,0 +1,104 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildsimplenativepackage 'native-pkg' 'amd64' '1.0' 'stable'
+buildsimplenativepackage 'foreign-pkg' 'i386' '0.5' 'stable' 'Multi-Arch: foreign'
+buildsimplenativepackage 'same-lib' 'amd64,i386' '0.5' 'stable' 'Multi-Arch: same'
+buildsimplenativepackage 'all-pkg' 'all' '2.0' 'stable'
+buildsimplenativepackage 'all-foreign-pkg' 'all' '2.0' 'stable' 'Multi-Arch: foreign'
+
+setupaptarchive
+
+testqualifier() {
+ msgtest 'Test with' $1 'for correct qualifier mode' $2
+ #aptget install $1 -qq -o Debug::pkgDPkgPM=1 || true
+ aptget install $1 -qq -o Debug::pkgDPkgPM=1 -o Dpkg::ExplicitLastConfigure=1 -o PackageManager::Configure=all > testqualifier.output 2>&1 || true
+ GIVEN="$(grep -v -- '--unpack' testqualifier.output | sed -ne 's/^.*--[rpc][^ ]* \([^ ]*\).*$/\1/p')"
+ if [ "$GIVEN" = "$2" ]; then
+ msgpass
+ else
+ cat >&2 testqualifier.output
+ echo >&2
+ echo >&2 "$GIVEN"
+ msgfail
+ fi
+}
+
+msgmsg 'non-multiarch or "ubuntus" old multiarchified dpkg'
+echo 'Dir::Bin::dpkg "./dpkg-wrapper";' > rootdir/etc/apt/apt.conf.d/99dpkgwrapper
+cat > ./dpkg-wrapper <<EOF
+#! /bin/sh
+if echo "\$*" | grep -q -- "--assert-multi-arch"; then
+ echo >&2 'dpkg: Fehler: unbekannte Option --assert-multi-arch'
+ echo >&1 'dpkg: Info: unbekannte Option --assert-multi-arch'
+ exit 2
+fi
+exec "\$@"
+EOF
+chmod +x ./dpkg-wrapper
+
+testqualifier 'native-pkg' 'native-pkg'
+testqualifier 'native-pkg:amd64' 'native-pkg'
+testqualifier 'foreign-pkg' 'foreign-pkg:i386'
+testqualifier 'foreign-pkg:i386' 'foreign-pkg:i386'
+testqualifier 'same-lib' 'same-lib'
+testqualifier 'same-lib:amd64' 'same-lib'
+testqualifier 'same-lib:i386' 'same-lib:i386'
+testqualifier 'all-pkg' 'all-pkg'
+testqualifier 'all-pkg:amd64' 'all-pkg'
+testqualifier 'all-foreign-pkg' 'all-foreign-pkg'
+testqualifier 'all-foreign-pkg:amd64' 'all-foreign-pkg'
+insertinstalledpackage 'all-pkg' 'amd64' '1.0'
+insertinstalledpackage 'all-foreign-pkg' 'amd64' '1.0' 'Multi-Arch: foreign'
+testqualifier 'all-pkg' 'all-pkg'
+testqualifier 'all-pkg:amd64' 'all-pkg'
+testqualifier 'all-foreign-pkg' 'all-foreign-pkg'
+testqualifier 'all-foreign-pkg:amd64' 'all-foreign-pkg'
+insertinstalledpackage 'always-all-pkg' 'all' '1.0'
+insertinstalledpackage 'always-all-foreign-pkg' 'all' '1.0' 'Multi-Arch: foreign'
+testqualifier 'all-pkg-' 'all-pkg'
+testqualifier 'all-foreign-pkg-' 'all-foreign-pkg'
+testqualifier 'always-all-pkg-' 'always-all-pkg'
+testqualifier 'always-all-foreign-pkg-' 'always-all-foreign-pkg'
+
+msgmsg 'multiarch dpkg (new interface version)'
+rm rootdir/var/lib/dpkg/status
+touch rootdir/var/lib/dpkg/status
+echo 'Dir::Bin::dpkg "./dpkg-wrapper";' > rootdir/etc/apt/apt.conf.d/99dpkgwrapper
+cat > ./dpkg-wrapper <<EOF
+#! /bin/sh
+if echo "\$*" | grep -q -- "--assert-multi-arch"; then
+ exit 0
+fi
+exec "\$@"
+EOF
+chmod +x ./dpkg-wrapper
+
+testqualifier 'native-pkg' 'native-pkg:amd64'
+testqualifier 'native-pkg:amd64' 'native-pkg:amd64'
+testqualifier 'foreign-pkg' 'foreign-pkg:i386'
+testqualifier 'foreign-pkg:i386' 'foreign-pkg:i386'
+testqualifier 'same-lib' 'same-lib:amd64'
+testqualifier 'same-lib:amd64' 'same-lib:amd64'
+testqualifier 'same-lib:i386' 'same-lib:i386'
+testqualifier 'all-pkg' 'all-pkg:all'
+testqualifier 'all-pkg:amd64' 'all-pkg:all'
+testqualifier 'all-foreign-pkg' 'all-foreign-pkg:all'
+testqualifier 'all-foreign-pkg:amd64' 'all-foreign-pkg:all'
+insertinstalledpackage 'all-pkg' 'amd64' '1.0'
+insertinstalledpackage 'all-foreign-pkg' 'amd64' '1.0' 'Multi-Arch: foreign'
+testqualifier 'all-pkg' 'all-pkg:all'
+testqualifier 'all-pkg:amd64' 'all-pkg:all'
+testqualifier 'all-foreign-pkg' 'all-foreign-pkg:all'
+testqualifier 'all-foreign-pkg:amd64' 'all-foreign-pkg:all'
+insertinstalledpackage 'always-all-pkg' 'all' '1.0'
+insertinstalledpackage 'always-all-foreign-pkg' 'all' '1.0' 'Multi-Arch: foreign'
+testqualifier 'all-pkg-' 'all-pkg:amd64'
+testqualifier 'all-foreign-pkg-' 'all-foreign-pkg:amd64'
+testqualifier 'always-all-pkg-' 'always-all-pkg:all'
+testqualifier 'always-all-foreign-pkg-' 'always-all-foreign-pkg:all'
diff --git a/test/integration/test-essential-force-loopbreak b/test/integration/test-essential-force-loopbreak
new file mode 100755
index 000000000..f585e9c42
--- /dev/null
+++ b/test/integration/test-essential-force-loopbreak
@@ -0,0 +1,54 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+insertinstalledpackage 'sysvinit' 'native' '1' 'Essential: yes'
+
+buildsimplenativepackage 'sysvinit' 'native' '2' 'sid' 'Pre-Depends: sysvinit-core | systemd-sysv
+Essential: yes'
+buildsimplenativepackage 'sysvinit-core' 'native' '2' 'sid'
+
+buildsimplenativepackage 'systemd-sysv' 'native' '2~conflict' 'sid-conflict' 'Conflicts: sysvinit (<< 2)
+Breaks: sysvinit-core'
+
+buildsimplenativepackage 'systemd-sysv' 'native' '2~break' 'sid-break' 'Breaks: sysvinit (<< 2), sysvinit-core'
+
+setupaptarchive
+
+cp -a rootdir/var/lib/dpkg/status dpkg.status.backup
+
+testforcebreak() {
+ cp -a dpkg.status.backup rootdir/var/lib/dpkg/status
+ rm -f rootdir/var/lib/apt/extended_states
+ testfailureequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ sysvinit
+The following NEW packages will be installed:
+ systemd-sysv
+The following packages will be upgraded:
+ sysvinit
+1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+E: This installation run will require temporarily removing the essential package sysvinit:$(getarchitecture 'native') due to a Conflicts/Pre-Depends loop. This is often bad, but if you really want to do it, activate the APT::Force-LoopBreak option.
+E: Internal Error, Could not early remove sysvinit:$(dpkg --print-architecture) (2)" aptget install systemd-sysv -t "$1" -s
+ # ensure that really nothing happens
+ testfailure aptget install systemd-sysv -y -t "$1"
+ testdpkginstalled 'sysvinit'
+ testdpkgnotinstalled 'systemd-sysv'
+
+ # with enough force however …
+ cp -a dpkg.status.backup rootdir/var/lib/dpkg/status
+ testsuccess aptget install systemd-sysv -y -t "$1" -o APT::Force-LoopBreak=1 -o Debug::pkgDpkgPm=1
+ cp rootdir/tmp/testsuccess.output apt.output
+ testsuccess grep -- '--force-remove-essential --remove sysvinit' apt.output
+ testsuccess aptget install systemd-sysv -y -t "$1" -o APT::Force-LoopBreak=1
+ testdpkginstalled 'sysvinit' 'systemd-sysv'
+}
+
+testforcebreak 'sid-conflict'
+testforcebreak 'sid-break'
diff --git a/test/integration/test-external-dependency-solver-protocol b/test/integration/test-external-dependency-solver-protocol
new file mode 100755
index 000000000..2c451d5f9
--- /dev/null
+++ b/test/integration/test-external-dependency-solver-protocol
@@ -0,0 +1,294 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'cool' 'all' '1'
+insertinstalledpackage 'stuff' 'all' '1'
+insertinstalledpackage 'somestuff' 'all' '1' 'Depends: cool, stuff'
+
+insertpackage 'unstable' 'cool' 'all' '2' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'stuff' 'all' '2' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'coolstuff' 'i386,amd64' '2' 'Depends: cool, stuff'
+insertpackage 'unstable' 'awesome' 'all' '2' 'Multi-Arch: foreign
+Conflicts: badstuff'
+insertpackage 'unstable' 'badstuff' 'all' '2' 'Multi-Arch: foreign
+Conflicts: awesome'
+insertpackage 'unstable' 'awesomecoolstuff' 'i386' '2' 'Depends: coolstuff, awesome'
+
+insertpackage 'experimental' 'cool' 'all' '3' 'Multi-Arch: foreign'
+insertpackage 'experimental' 'stuff' 'all' '3' 'Multi-Arch: foreign'
+insertpackage 'experimental' 'coolstuff' 'i386,amd64' '3' 'Depends: cool, stuff'
+
+setupaptarchive
+
+testsuccess aptget install --solver apt coolstuff -s
+testempty find . -name 'edsp.last.*'
+echo 'Dir::Log::Solver "edsp.last.xz";' > rootdir/etc/apt/apt.conf.d/log-edsp.conf
+
+testfailure aptget install --solver dump coolstuff -s
+testsuccess grep 'ERR_NO_FILENAME' rootdir/tmp/testfailure.output
+testfailure test -s rootdir/var/log/apt/edsp.last.xz
+export APT_EDSP_DUMP_FILENAME="/nonexistent/apt/edsp.dump"
+testfailure aptget install --solver dump coolstuff -s
+testsuccess grep 'ERR_CREATE_FILE' rootdir/tmp/testfailure.output
+testfailure test -s rootdir/var/log/apt/edsp.last.xz
+export APT_EDSP_DUMP_FILENAME="${TMPWORKINGDIRECTORY}/downloaded/dump.edsp"
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Execute external solver...
+The solver encountered an error of type: ERR_JUST_DUMPING
+The following information might help you to understand what is wrong:
+I am too dumb, i can just dump!
+Please use one of my friends instead!
+
+E: External solver failed with: I am too dumb, i can just dump!' aptget install --solver dump coolstuff -s
+testfailure test -s rootdir/var/log/apt/edsp.last.xz
+testsuccess test -s "$APT_EDSP_DUMP_FILENAME"
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Execute external solver...
+The following NEW packages will be installed:
+ coolstuff
+0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst coolstuff (2 unstable [amd64])
+Conf coolstuff (2 unstable [amd64])' aptget install --solver apt coolstuff -s
+testsuccess test -s rootdir/var/log/apt/edsp.last.xz
+sed -i -e 's#^Solver: dump$#Solver: apt#' "$APT_EDSP_DUMP_FILENAME"
+testequal "$(cat "$APT_EDSP_DUMP_FILENAME")
+" apthelper cat-file rootdir/var/log/apt/edsp.last.xz
+cp rootdir/var/log/apt/edsp.last.xz rootdir/var/log/apt/edsp.last.xz.1
+rm -f "$APT_EDSP_DUMP_FILENAME"
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Execute external solver...
+The following NEW packages will be installed:
+ coolstuff
+0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst coolstuff (3 experimental [amd64])
+Conf coolstuff (3 experimental [amd64])' aptget install --solver apt coolstuff -s -t experimental
+testfailure cmp rootdir/var/log/apt/edsp.last.xz rootdir/var/log/apt/edsp.last.xz.1
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Selected version '3' (experimental [amd64]) for 'coolstuff'
+Execute external solver...
+The following NEW packages will be installed:
+ coolstuff
+0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst coolstuff (3 experimental [amd64])
+Conf coolstuff (3 experimental [amd64])" aptget install --solver apt coolstuff/experimental -sq=0
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Execute external solver...
+The following NEW packages will be installed:
+ coolstuff
+0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst coolstuff (3 experimental [amd64])
+Conf coolstuff (3 experimental [amd64])' aptget install --solver apt coolstuff=3 -sq=0
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Execute external solver...
+The following packages will be REMOVED:
+ somestuff
+0 upgraded, 0 newly installed, 1 to remove and 2 not upgraded.
+Remv somestuff [1]' aptget autoremove --solver apt somestuff -s
+testsuccess aptmark auto cool stuff
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+Execute external solver...
+The following packages will be REMOVED:
+ cool somestuff stuff
+0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
+Remv somestuff [1]
+Remv cool [1]
+Remv stuff [1]' aptget autoremove --solver apt somestuff -s
+
+AUTOREMOVE='apt autoremove'
+if [ -n "$SUDO_USER" ]; then
+ AUTOREMOVE="sudo $AUTOREMOVE"
+fi
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Execute external solver...
+The following package was automatically installed and is no longer required:
+ stuff
+Use '$AUTOREMOVE' to remove it.
+The following packages will be REMOVED:
+ cool* somestuff*
+0 upgraded, 0 newly installed, 2 to remove and 1 not upgraded.
+Purg somestuff [1]
+Purg cool [1]" aptget purge --solver apt cool -s
+
+testsuccess aptget install awesomecoolstuff:i386 -s
+testsuccess aptget install --solver apt awesomecoolstuff:i386 -s
+
+rm -f "$APT_EDSP_DUMP_FILENAME"
+testfailure aptget install --solver dump awesomecoolstuff:i386 -s
+testsuccess test -s "$APT_EDSP_DUMP_FILENAME"
+testequal 'Install: awesomecoolstuff:i386' grep :i386 "$APT_EDSP_DUMP_FILENAME"
+testfailure grep -e ':amd64' -e 'Architecture: any' "$APT_EDSP_DUMP_FILENAME"
+
+testsuccess aptget dist-upgrade -s
+testsuccess aptget dist-upgrade -s --solver apt
+
+testsuccess aptget upgrade -s
+testsuccess aptget upgrade -s --solver apt
+
+testfailure aptget install awesome badstuff -s
+testfailure aptget install awesome badstuff -s --solver apt
+testsuccess grep 'ERR_UNSOLVABLE' rootdir/tmp/testfailure.output
+msgtest 'A resolving error is format as' 'valid parseable EDSP error'
+if dpkg-checkbuilddeps -d 'dctrl-tools' /dev/null >/dev/null 2>&1; then
+ if apthelper cat-file rootdir/var/log/apt/edsp.last.xz | aptinternalsolver > solver.result 2>&1; then
+ testsuccess --nomsg grep-dctrl -FError ERR -- solver.result
+ else
+ msgfail
+ fi
+else
+ msgskip 'dctrl-tools not installed'
+fi
+configarchitecture 'armel'
+testfailure aptget install --solver apt awesomecoolstuff:i386 -s
+msgtest 'An invalid EDSP file generates a' 'hard error'
+if printf "%b\n" "Request: This is a test\nFoo: bar\n\n" | aptinternalsolver > solver.result 2>&1; then
+ cat solver.result
+ msgfail
+else
+ msgpass
+fi
+msgtest 'Test direct calling is okay for' 'apt-internal-solver'
+cat "$APT_EDSP_DUMP_FILENAME" | aptinternalsolver > solver.result 2>&1 || true
+if [ "$(tail -n2 solver.result | head -n1 )" = "Message: Done" ]; then
+ msgpass
+else
+ cat solver.result
+ msgfail
+fi
+testsuccess grep '^APT-ID: 1$' "$APT_EDSP_DUMP_FILENAME"
+sed -i -e 's#^APT-ID: 1$#APT-ID: 10000#' "$APT_EDSP_DUMP_FILENAME"
+cat "$APT_EDSP_DUMP_FILENAME" | aptinternalsolver > solver.result 2>&1 || true
+testsuccessequal 'Message: Done
+' tail -n2 solver.result
+rm -f "$APT_EDSP_DUMP_FILENAME"
+
+testsuccess aptinternalsolver scenario
+testsuccessequal 'Package: stuff
+Architecture: all
+Version: 3
+APT-ID: 1
+Multi-Arch: foreign
+Source: stuff
+Source-Version: 3
+Priority: optional
+Section: other
+APT-Release:
+ a=experimental,n=experimental,c=main,b=all
+APT-Pin: 1
+
+Package: stuff
+Architecture: all
+Version: 2
+APT-ID: 3
+Multi-Arch: foreign
+Source: stuff
+Source-Version: 2
+Priority: optional
+Section: other
+APT-Release:
+ a=unstable,n=sid,c=main,b=all
+APT-Pin: 500
+APT-Candidate: yes
+
+Package: stuff
+Architecture: all
+Version: 1
+APT-ID: 8
+Source: stuff
+Source-Version: 1
+Priority: optional
+Section: other
+Installed: yes
+APT-Pin: 100
+' aptinternalsolver scenario stuff
+
+cat > rootdir/usr/lib/apt/solvers/explicitremove << EOF
+#!/bin/sh
+set -e
+while read line; do
+ if [ "APT-ID" = "\${line%:*}" ]; then
+ cat << APT
+Install: \${line#*:}
+
+Remove: \${line#*:}
+
+APT
+ fi
+done
+EOF
+chmod +x rootdir/usr/lib/apt/solvers/explicitremove
+testfailure apt full-upgrade -s --solver explicitremove
+testsuccess grep 'had a previous stanza' rootdir/tmp/testfailure.output
+
+cat > rootdir/usr/lib/apt/solvers/removeall << EOF
+#!/bin/sh
+set -e
+while read line; do
+ if [ "APT-ID" = "\${line%:*}" ]; then
+ cat << APT
+Remove: \${line#*:}
+
+APT
+ fi
+done
+EOF
+chmod +x rootdir/usr/lib/apt/solvers/removeall
+testwarning apt full-upgrade -s --solver removeall
+testsuccess grep "which isn't installed!" rootdir/tmp/testwarning.output
+
+cat > rootdir/usr/lib/apt/solvers/installall << EOF
+#!/bin/sh
+set -e
+while read line; do
+ if [ "APT-ID" = "\${line%:*}" ]; then
+ cat << APT
+Install: \${line#*:}
+
+APT
+ fi
+done
+EOF
+chmod +x rootdir/usr/lib/apt/solvers/installall
+testfailure apt full-upgrade -s --solver installall
+testsuccess grep "is already installed!" rootdir/tmp/testfailure.output
+
+testsolverfailuremsg() {
+ local SOLVER="rootdir/usr/lib/apt/solvers/$1"
+ echo "$2" > "$SOLVER"
+ chmod +x "$SOLVER"
+ testfailuremsg "$3" apt full-upgrade -s --solver $1
+}
+
+testsolverfailuremsg 'exit0withmsg' "#!/bin/sh
+echo 'Error: instant-exit
+Message: This solver exits instantly'
+exit 0" 'E: External solver failed with: This solver exits instantly'
+
+testsolverfailuremsg 'exit1withoutmsg' "#!/bin/sh
+exit 1" 'E: Sub-process exit1withoutmsg returned an error code (1)'
+
+testsolverfailuremsg 'exit1withmsg' "#!/bin/sh
+echo 'Error: instant-exit
+Message: This solver exits instantly'
+exit 1" 'E: External solver failed with: This solver exits instantly
+E: Sub-process exit1withmsg returned an error code (1)'
diff --git a/test/integration/test-external-installation-planner-protocol b/test/integration/test-external-installation-planner-protocol
new file mode 100755
index 000000000..1d9abc901
--- /dev/null
+++ b/test/integration/test-external-installation-planner-protocol
@@ -0,0 +1,93 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'libfoo' 'amd64' '3' 'experimental' 'Multi-Arch: same'
+buildsimplenativepackage 'foo' 'all' '3' 'experimental' 'Depends: newstuff'
+buildsimplenativepackage 'foo' 'all' '2' 'unstable' 'Depends: libfoo:amd64, stuff
+Conflicts: bar, libfoo:i386
+Recommends: unrelated'
+buildsimplenativepackage 'libfoo' 'amd64' '2' 'unstable' 'Multi-Arch: same'
+buildsimplenativepackage 'unrelated-2' 'amd64' '2' 'unstable'
+insertinstalledpackage 'foo' 'all' '1'
+insertinstalledpackage 'bar' 'all' '1'
+insertinstalledpackage 'stuff' 'all' '1'
+insertinstalledpackage 'unrelated-1' 'all' '1'
+
+setupaptarchive --no-update
+
+EIPPLOG="${TMPWORKINGDIRECTORY}/rootdir/var/log/apt/eipp.log"
+echo "Dir::Log::Planner \"$EIPPLOG\";" > ./rootdir/etc/apt/apt.conf.d/eipp-logging
+
+testsuccess apt update
+export APT_EDSP_DUMP_FILENAME="${TMPWORKINGDIRECTORY}/downloaded/dump.eipp"
+testfailure test -r "$EIPPLOG"
+testfailure aptget install foo --planner dump -y
+testfailure test -r "$EIPPLOG"
+testfailure grep 'unrelated-2' "$APT_EDSP_DUMP_FILENAME"
+testsuccessequal '2' grep -c '^Package: foo$' "$APT_EDSP_DUMP_FILENAME"
+testsuccessequal '1' grep -c '^Package: libfoo$' "$APT_EDSP_DUMP_FILENAME"
+testsuccessequal 'Planner: dump' grep '^Planner: ' "$APT_EDSP_DUMP_FILENAME"
+
+testsuccess aptget install foo -s
+testsuccess aptget install foo -y
+testsuccess test -r "$EIPPLOG"
+testsuccessequal 'Request: EIPP 0.1
+Architecture: amd64
+Architectures: amd64
+Remove: bar:amd64
+Install: libfoo:amd64 foo:amd64
+Planner: internal' head -n 6 "$EIPPLOG"
+aptinternalplanner < "$EIPPLOG" > planner.log || true
+testsuccessequal 'Remove: 7
+Unpack: 2
+Unpack: 4' grep -e '^Unpack:' -e '^Install:' -e '^Configure:' -e '^Remove:' planner.log
+
+rm -f "$EIPPLOG"
+testsuccess aptget install foo -s --reinstall
+testsuccess aptget install foo -y --reinstall
+testsuccess test -r "$EIPPLOG"
+testsuccessequal 'Request: EIPP 0.1
+Architecture: amd64
+Architectures: amd64
+ReInstall: foo:amd64
+Planner: internal' head -n 5 "$EIPPLOG"
+aptinternalplanner < "$EIPPLOG" > planner.log || true
+testsuccessequal 'Unpack: 4' grep -e '^Unpack:' -e '^Install:' -e '^Configure:' -e '^Remove:' planner.log
+
+rm -f "$EIPPLOG"
+testsuccess aptget purge foo -s
+testsuccess aptget purge foo -y
+testsuccess test -r "$EIPPLOG"
+testsuccessequal 'Request: EIPP 0.1
+Architecture: amd64
+Architectures: amd64
+Remove: foo:amd64
+Planner: internal' head -n 5 "$EIPPLOG"
+aptinternalplanner < "$EIPPLOG" > planner.log || true
+testsuccessequal 'Remove: 4' grep -e '^Unpack:' -e '^Install:' -e '^Configure:' -e '^Remove:' planner.log
+
+testplannerfailuremsg() {
+ local PLANNER="rootdir/usr/lib/apt/planners/$1"
+ echo "$2" > "$PLANNER"
+ chmod +x "$PLANNER"
+ testfailuremsg "$3" apt install foo -s --planner $1
+}
+
+testplannerfailuremsg 'exit0withmsg' "#!/bin/sh
+echo 'Error: instant-exit
+Message: This planner exits instantly'
+exit 0" 'E: External planner failed with: This planner exits instantly'
+
+testplannerfailuremsg 'exit1withoutmsg' "#!/bin/sh
+exit 1" 'E: Sub-process exit1withoutmsg returned an error code (1)'
+
+testplannerfailuremsg 'exit1withmsg' "#!/bin/sh
+echo 'Error: instant-exit
+Message: This planner exits instantly'
+exit 1" 'E: External planner failed with: This planner exits instantly
+E: Sub-process exit1withmsg returned an error code (1)'
diff --git a/test/integration/test-failing-maintainer-scripts b/test/integration/test-failing-maintainer-scripts
new file mode 100755
index 000000000..8cf2380ee
--- /dev/null
+++ b/test/integration/test-failing-maintainer-scripts
@@ -0,0 +1,91 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+configdpkgnoopchroot
+
+# create a bunch of failures
+createfailure() {
+ setupsimplenativepackage "failure-$1" 'native' '1.0' 'unstable' 'Depends: dependee'
+ BUILDDIR="incoming/failure-$1-1.0"
+ echo '#!/bin/sh
+exit 29' > "${BUILDDIR}/debian/$1"
+ buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
+ rm -rf "$BUILDDIR"
+}
+
+buildsimplenativepackage 'dependee' 'native' '1.0' 'unstable'
+createfailure 'preinst'
+createfailure 'postinst'
+createfailure 'prerm'
+createfailure 'postrm'
+
+setupaptarchive
+
+# setup some pre- and post- invokes to check the output isn't garbled later
+APTHOOK="${TMPWORKINGDIRECTORY}/rootdir/usr/bin/apthook"
+echo '#!/bin/sh
+echo "$1: START"
+echo "$1: MaiN"
+echo "$1: ENd"' > "$APTHOOK"
+chmod +x "$APTHOOK"
+echo "DPKG::Pre-Invoke:: \"${APTHOOK} PRE\";
+DPKG::Post-Invoke:: \"${APTHOOK} POST\";" > rootdir/etc/apt/apt.conf.d/99apthooks
+
+testmyfailure() {
+ local PROGRESS='rootdir/tmp/progress.log'
+ exec 3> "$PROGRESS"
+ testfailure "$@" -o APT::Status-Fd=3
+ msgtest 'Test for failure message of maintainerscript in' 'console log'
+ local TEST='rootdir/tmp/testfailure.output'
+ if grep -q 'exit status 29' "$TEST"; then
+ msgpass
+ else
+ cat "$TEST"
+ msgfail
+ fi
+ msgtest 'Test for proper execution of invoke scripts in' 'console log'
+ if grep -q '^PRE: START$' "$TEST" &&
+ grep -q '^PRE: MaiN$' "$TEST" &&
+ grep -q '^PRE: ENd$' "$TEST" &&
+ grep -q '^POST: START$' "$TEST" &&
+ grep -q '^POST: MaiN$' "$TEST" &&
+ grep -q '^POST: ENd$' "$TEST"; then
+ msgpass
+ else
+ cat "$TEST"
+ msgfail
+ fi
+ msgtest 'Test for failure message of maintainerscript in' 'progress log'
+ if grep -q '^pmerror:.\+exit status 29$' "$PROGRESS"; then
+ msgpass
+ else
+ cat "$PROGRESS"
+ msgfail
+ fi
+ testmarkedauto 'dependee'
+}
+
+cp -a rootdir/var/lib/dpkg/status rootdir/var/lib/dpkg/status.backup
+testmyfailure aptget install failure-preinst -y
+cp -a rootdir/var/lib/dpkg/status.backup rootdir/var/lib/dpkg/status
+testmyfailure aptget install failure-postinst -y
+cp -a rootdir/var/lib/dpkg/status.backup rootdir/var/lib/dpkg/status
+testsuccess aptget install failure-prerm -y
+testdpkginstalled failure-prerm
+testmyfailure aptget purge failure-prerm -y
+cp -a rootdir/var/lib/dpkg/status.backup rootdir/var/lib/dpkg/status
+testsuccess aptget install failure-postrm -y
+testdpkginstalled failure-postrm
+testmyfailure aptget purge failure-postrm -y
+
+# FIXME: test with output going to a PTY as it usually does
+if false; then
+ cp -a rootdir/var/lib/dpkg/status.backup rootdir/var/lib/dpkg/status
+ apt install dependee -y || true
+ apt install failure-postinst -y || true
+fi
diff --git a/test/integration/test-github-23-too-long-dependency-line b/test/integration/test-github-23-too-long-dependency-line
new file mode 100755
index 000000000..d514303db
--- /dev/null
+++ b/test/integration/test-github-23-too-long-dependency-line
@@ -0,0 +1,17 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "amd64"
+setupaptarchive
+
+
+testsuccessequal "network-manager-strongswan:
+ Installed: 1.3.1-14
+ Candidate: 1.3.1-14
+ Version table:
+ *** 1.3.1-14 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive Packages
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" aptcache policy network-manager-strongswan
diff --git a/test/integration/test-handle-redirect-as-used-mirror-change b/test/integration/test-handle-redirect-as-used-mirror-change
new file mode 100755
index 000000000..254bdd54a
--- /dev/null
+++ b/test/integration/test-handle-redirect-as-used-mirror-change
@@ -0,0 +1,93 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+configcompression '.' 'gz'
+
+buildsimplenativepackage 'unrelated' 'all' '0.5~squeeze1' 'unstable'
+
+export APT_DONT_SIGN=''
+setupaptarchive --no-update
+changetowebserver
+webserverconfig 'aptwebserver::redirect::replace::/redirectme/' "http://0.0.0.0:${APTHTTPPORT}/"
+rewritesourceslist "http://localhost:${APTHTTPPORT}/redirectme"
+
+testsuccessequal "Get:1 http://0.0.0.0:${APTHTTPPORT} unstable InRelease [$(stat -c %s aptarchive/dists/unstable/InRelease) B]
+Get:2 http://0.0.0.0:${APTHTTPPORT} unstable/main Sources [$(stat -c %s aptarchive/dists/unstable/main/source/Sources.gz) B]
+Get:3 http://0.0.0.0:${APTHTTPPORT} unstable/main all Packages [$(stat -c %s aptarchive/dists/unstable/main/binary-all/Packages.gz) B]
+Get:4 http://0.0.0.0:${APTHTTPPORT} unstable/main Translation-en [$(stat -c %s aptarchive/dists/unstable/main/i18n/Translation-en.gz) B]
+Reading package lists..." aptget update
+
+grepwebserverlogs() {
+ testsuccess grep -h "$1" aptarchive/webserver.log.client*.log
+ shift
+ sort rootdir/tmp/testsuccess.output > aptwebserver.log
+ testfileequal 'aptwebserver.log' "$@"
+}
+
+# ensure we asked the redirector only once
+grepwebserverlogs '^Location:' "Location: http://0.0.0.0:${APTHTTPPORT}/dists/unstable/InRelease"
+
+testsuccessequal "Hit:1 http://0.0.0.0:${APTHTTPPORT} unstable InRelease
+Reading package lists..." aptget update
+
+grepwebserverlogs '^Location:' "Location: http://0.0.0.0:${APTHTTPPORT}/dists/unstable/InRelease
+Location: http://0.0.0.0:${APTHTTPPORT}/dists/unstable/InRelease"
+
+rm -rf rootdir/var/lib/apt/lists
+testsuccess apt update -o Debug::Acquire::http=1 -o Acquire::SameMirrorForAllIndexes=0
+grepwebserverlogs '^Location:' "Location: http://0.0.0.0:${APTHTTPPORT}/dists/unstable/InRelease
+Location: http://0.0.0.0:${APTHTTPPORT}/dists/unstable/InRelease
+Location: http://0.0.0.0:${APTHTTPPORT}/dists/unstable/InRelease
+Location: http://0.0.0.0:${APTHTTPPORT}/dists/unstable/main/binary-all/Packages.gz
+Location: http://0.0.0.0:${APTHTTPPORT}/dists/unstable/main/i18n/Translation-en.gz
+Location: http://0.0.0.0:${APTHTTPPORT}/dists/unstable/main/source/Sources.gz"
+
+cd downloaded
+testsuccess apthelper download-file "http://localhost:${APTHTTPPORT}/redirectme/dists/unstable/InRelease" inrelease
+testsuccess test -s inrelease
+cd - >/dev/null
+
+webserverconfig "aptwebserver::redirect::replace::http://0.0.0.0:${APTHTTPPORT}/dists/unstable/InRelease" "http://0.0.0.0:${APTHTTPPORT}/storage/dists/unstable/InRelease"
+mkdir -p aptarchive/storage/dists/unstable
+mv aptarchive/dists/unstable/InRelease aptarchive/storage/dists/unstable
+rm -rf rootdir/var/lib/apt/lists
+testsuccessequal "Get:1 http://0.0.0.0:${APTHTTPPORT}/storage unstable InRelease [$(stat -c %s aptarchive/storage/dists/unstable/InRelease) B]
+Ign:2 http://0.0.0.0:${APTHTTPPORT}/storage unstable/main Sources
+ 404 Not Found
+Ign:3 http://0.0.0.0:${APTHTTPPORT}/storage unstable/main all Packages
+ 404 Not Found
+Ign:4 http://0.0.0.0:${APTHTTPPORT}/storage unstable/main Translation-en
+ 404 Not Found
+Get:2 http://0.0.0.0:${APTHTTPPORT} unstable/main Sources [$(stat -c %s aptarchive/dists/unstable/main/source/Sources.gz) B]
+Get:3 http://0.0.0.0:${APTHTTPPORT} unstable/main all Packages [$(stat -c %s aptarchive/dists/unstable/main/binary-all/Packages.gz) B]
+Get:4 http://0.0.0.0:${APTHTTPPORT} unstable/main Translation-en [$(stat -c %s aptarchive/dists/unstable/main/i18n/Translation-en.gz) B]
+Reading package lists...
+Building dependency tree...
+All packages are up to date." apt update
+
+find aptarchive -name 'InRelease' -delete
+rm -rf rootdir/var/lib/apt/lists
+
+testsuccessequal "Ign:1 http://0.0.0.0:${APTHTTPPORT}/storage unstable InRelease
+ 404 Not Found
+Get:2 http://0.0.0.0:${APTHTTPPORT} unstable Release [$(stat -c %s aptarchive/dists/unstable/Release) B]
+Get:3 http://0.0.0.0:${APTHTTPPORT} unstable Release.gpg [$(stat -c %s aptarchive/dists/unstable/Release.gpg) B]
+Get:4 http://0.0.0.0:${APTHTTPPORT} unstable/main Sources [$(stat -c %s aptarchive/dists/unstable/main/source/Sources.gz) B]
+Get:5 http://0.0.0.0:${APTHTTPPORT} unstable/main all Packages [$(stat -c %s aptarchive/dists/unstable/main/binary-all/Packages.gz) B]
+Get:6 http://0.0.0.0:${APTHTTPPORT} unstable/main Translation-en [$(stat -c %s aptarchive/dists/unstable/main/i18n/Translation-en.gz) B]
+Reading package lists..." aptget update
+
+testsuccessequal "Ign:1 http://0.0.0.0:${APTHTTPPORT}/storage unstable InRelease
+ 404 Not Found
+Hit:2 http://0.0.0.0:${APTHTTPPORT} unstable Release
+Reading package lists..." aptget update
+
+rm -rf rootdir/var/lib/apt/lists
+find aptarchive -name 'Release.gpg' -delete
+find aptarchive -name 'Release' -delete
+testwarning aptget update
+testsuccess grep 'does not have a Release file' rootdir/tmp/testwarning.output
diff --git a/test/integration/test-handling-broken-orgroups b/test/integration/test-handling-broken-orgroups
new file mode 100755
index 000000000..564ea8839
--- /dev/null
+++ b/test/integration/test-handling-broken-orgroups
@@ -0,0 +1,108 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'cool' 'all' '1.0-1'
+insertpackage 'unstable' 'stuff' 'all' '1.0-1'
+insertpackage 'unstable' 'coolstuff' 'all' '1.0-1' 'Depends: cool | stuff'
+insertpackage 'unstable' 'coolstuff2' 'all' '1.0-1' 'Depends: cool2 | stuff'
+insertpackage 'unstable' 'coolstuff-broken' 'all' '1.0-1' 'Depends: cool2 | stuff2'
+insertpackage 'unstable' 'coolstuff-brokenrec' 'all' '1.0-1' 'Recommends: cool2 | stuff2'
+insertpackage 'unstable' 'coolstuff-conflict' 'all' '1.0-1' 'Depends: cool | stuff
+Conflicts: cool'
+insertpackage 'unstable' 'coolstuff-provided' 'all' '1.0-1' 'Depends: cool2 | stuff-abi'
+insertpackage 'unstable' 'extrastuff' 'all' '1.0-1' 'Provides: stuff-abi'
+
+insertpackage 'unstable' 'coolstuff-provided-broken' 'all' '1.0-1' 'Depends: cool2 | stuff-abi-2'
+insertpackage 'unstable' 'extrastuff' 'all' '1.0-1' 'Depends: stuff2
+Provides: stuff-abi-2'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ cool
+The following NEW packages will be installed:
+ cool coolstuff
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst cool (1.0-1 unstable [all])
+Inst coolstuff (1.0-1 unstable [all])
+Conf cool (1.0-1 unstable [all])
+Conf coolstuff (1.0-1 unstable [all])' aptget install coolstuff -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ stuff
+The following NEW packages will be installed:
+ coolstuff2 stuff
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst stuff (1.0-1 unstable [all])
+Inst coolstuff2 (1.0-1 unstable [all])
+Conf stuff (1.0-1 unstable [all])
+Conf coolstuff2 (1.0-1 unstable [all])' aptget install coolstuff2 -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ coolstuff-broken : Depends: cool2 but it is not installable or
+ stuff2 but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget install coolstuff-broken -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Recommended packages:
+ cool2 | stuff2
+The following NEW packages will be installed:
+ coolstuff-brokenrec
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst coolstuff-brokenrec (1.0-1 unstable [all])
+Conf coolstuff-brokenrec (1.0-1 unstable [all])' aptget install coolstuff-brokenrec -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ stuff
+The following NEW packages will be installed:
+ coolstuff-conflict stuff
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst stuff (1.0-1 unstable [all])
+Inst coolstuff-conflict (1.0-1 unstable [all])
+Conf stuff (1.0-1 unstable [all])
+Conf coolstuff-conflict (1.0-1 unstable [all])' aptget install coolstuff-conflict -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ extrastuff
+The following NEW packages will be installed:
+ coolstuff-provided extrastuff
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst extrastuff (1.0-1 unstable [all])
+Inst coolstuff-provided (1.0-1 unstable [all])
+Conf extrastuff (1.0-1 unstable [all])
+Conf coolstuff-provided (1.0-1 unstable [all])' aptget install coolstuff-provided -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ coolstuff-provided-broken : Depends: cool2 but it is not installable or
+ stuff-abi-2
+E: Unable to correct problems, you have held broken packages.' aptget install coolstuff-provided-broken -s
diff --git a/test/integration/test-hashsum-verification b/test/integration/test-hashsum-verification
new file mode 100755
index 000000000..a514b85e2
--- /dev/null
+++ b/test/integration/test-hashsum-verification
@@ -0,0 +1,82 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+buildaptarchive
+setupflataptarchive
+changetowebserver
+
+prepare() {
+ local DATE="${2:-now}"
+ if [ "$DATE" = 'now' -a "$1" = "${PKGFILE}-new" ]; then
+ DATE='now + 6 days'
+ fi
+ for release in $(find rootdir/var/lib/apt/lists 2> /dev/null); do
+ touch -d 'now - 6 hours' "$release"
+ done
+ cp "$1" aptarchive/Packages
+ find aptarchive -name 'Release' -delete
+ compressfile aptarchive/Packages
+ # create Release file with incorret checksums
+ cat > aptarchive/Release <<EOF
+Date: Fri, 05 Aug 2011 09:22:08 UTC
+MD5Sum:
+ x15c483ac486f5dbe95095c7ec08626f 760 Packages
+ x0579797df4792164a17305fb0b317e9 546 Packages.bz2
+ xc532a82873d2206b4e4503e92d167bd 489 Packages.gz
+ x4d1d25661377dd4bb95a1736e2624d3 527 Packages.lzma
+ xf1cc221194edbaa943d2375d6f44a88 572 Packages.xz
+SHA1:
+ x0d3317839cf68cd40c28f0bddca8d2ce5a29cad 760 Packages
+ xffddf046ad8dfd8338a355d76fb08d143c8b636 546 Packages.bz2
+ xa27a3df51ca4474b880a6594c4811957079b613 489 Packages.gz
+ x9d7bba4e6fa927a34dcd797694c2893c21f1004 527 Packages.lzma
+ x7d988fe59cf67298828e5299a15d329c0f00f1b 572 Packages.xz
+SHA256:
+ x5a47d72f6b97bfa164b23326b6ad3cb019b5c6cc73769f8c0187616933d1b2b 760 Packages
+ x617252f5bfe3e9126352c7c2f8122d9c3b2c5e1a6c8a9616d62adc0ed164172 546 Packages.bz2
+ xc6abc6fe9a4fcf0758ec5366dfd19bcba90af026a7017c3f6198c59eccd8ef5 489 Packages.gz
+ xb306e66e5e6a7169c8d281a888539d1fdca9cecc99ae605717df579d5b9c166 527 Packages.lzma
+ x9585d0e66b74c9385727fbea11fea9ab33c716b18a32f3036f037a2b9b57120 572 Packages.xz
+EOF
+}
+
+PKGFILE="${TESTDIR}/$(echo "$(basename $0)" | sed 's#^test-#Packages-#')"
+
+runtest() {
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack'
+
+ # test signed release file
+ msgtest 'apt-get update gets the expected hashsum mismatch'
+ testfailure aptget update
+ testsuccess grep "Hash Sum mismatch" rootdir/tmp/testfailure.output
+ msgtest 'No package from the source available'
+ testfailureequal --nomsg 'N: Unable to locate package apt
+E: No packages found' aptcache show apt
+ msgtest 'No Packages file in /var/lib/apt/lists'
+ testempty find rootdir/var/lib/apt/lists -maxdepth 1 -name '*Package*'
+
+ # now with the unsigned Release file
+ rm -rf rootdir/var/lib/apt/lists
+ rm -f aptarchive/InRelease aptarchive/Release.gpg
+ msgtest 'unsigned apt-get update gets the expected hashsum mismatch'
+ testfailure --nomsg aptget update --allow-insecure-repositories
+ testsuccess grep "Hash Sum mismatch" rootdir/tmp/testfailure.output
+}
+
+for COMPRESSEDINDEXES in 'false' 'true'; do
+ echo "Acquire::GzipIndexes \"$COMPRESSEDINDEXES\";" > rootdir/etc/apt/apt.conf.d/compressindexes
+ if $COMPRESSEDINDEXES; then
+ msgmsg 'Run tests with GzipIndexes enabled'
+ else
+ msgmsg 'Run tests with GzipIndexes disabled'
+ fi
+ runtest
+done
diff --git a/test/integration/test-http-pipeline-messup b/test/integration/test-http-pipeline-messup
new file mode 100755
index 000000000..95e890baf
--- /dev/null
+++ b/test/integration/test-http-pipeline-messup
@@ -0,0 +1,56 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+# try a little harder to create a size mismatch
+buildsimplenativepackage 'pkg0' 'all' '1.0' 'stable' "Depends: foo" '' '' '' '' 'none'
+buildsimplenativepackage 'pkga' 'all' '1.0' 'stable' "Depends: foo" '' '' '' '' 'none'
+buildsimplenativepackage 'pkgb' 'all' '1.0' 'stable' "Depends: foo" '' '' '' '' 'none'
+buildsimplenativepackage 'pkgc' 'all' '1.0' 'stable' "Depends: f$(for i in $(seq 0 1000); do printf 'o'; done)" '' '' '' '' 'none'
+buildsimplenativepackage 'pkgd' 'all' '1.0' 'stable' "Depends: f$(for i in $(seq 0 1000); do printf 'o'; done)" '' '' '' '' 'none'
+
+setupaptarchive --no-update
+
+# simulate (and be a predictable) pipeline mess-up by the server/proxy
+changetowebserver \
+ -o 'aptwebserver::overwrite::.*pkga.*::filename=/pool/pkgd_1.0_all.deb' \
+ -o 'aptwebserver::overwrite::.*pkgc.*::filename=/pool/pkgb_1.0_all.deb' \
+ -o 'aptwebserver::overwrite::.*pkgb.*::filename=/pool/pkgc_1.0_all.deb' \
+ -o 'aptwebserver::overwrite::.*pkgd.*::filename=/pool/pkga_1.0_all.deb'
+
+echo 'Debug::Acquire::http "true";
+Debug::pkgAcquire::Worker "true";' > rootdir/etc/apt/apt.conf.d/99debug
+
+testsuccess aptget update
+
+cd downloaded
+# messup is bigger than pipeline: checks if fixup isn't trying too hard
+testfailure aptget download pkga pkgb pkgc pkgd -o Acquire::http::Pipeline-Depth=2
+for pkg in 'pkga' 'pkgd'; do
+ testfailure test -f ${pkg}_1.0_all.deb
+done
+for pkg in 'pkgb' 'pkgc'; do
+ testsuccess test -f ${pkg}_1.0_all.deb
+ testsuccess cmp ../incoming/${pkg}_1.0_all.deb ${pkg}_1.0_all.deb
+ rm -f ${pkg}_1.0_all.deb
+done
+
+# ensure that pipeling is enabled for rest of this test
+echo 'Acquire::http::Pipeline-Depth 10;' > ../rootdir/etc/apt/apt.conf.d/99enable-pipeline
+
+# the output is a bit strange: it looks like it has downloaded pkga 4 times
+testwarning aptget download pkg0 pkga pkgb pkgc pkgd
+for pkg in 'pkg0' 'pkga' 'pkgb' 'pkgc' 'pkgd'; do
+ testsuccess test -f ${pkg}_1.0_all.deb
+ testsuccess cmp ../incoming/${pkg}_1.0_all.deb ${pkg}_1.0_all.deb
+ rm -f ${pkg}_1.0_all.deb
+done
+
+# while hashes will pass (as none are available), sizes will not match, so failure
+# checks that no hashes means that pipeline depth is ignored as we can't fixup
+testfailure aptget download pkga pkgb pkgc pkgd --allow-unauthenticated -o Acquire::ForceHash=ROT26
diff --git a/test/integration/test-ignore-provides-if-versioned-breaks b/test/integration/test-ignore-provides-if-versioned-breaks
new file mode 100755
index 000000000..ebcbecf47
--- /dev/null
+++ b/test/integration/test-ignore-provides-if-versioned-breaks
@@ -0,0 +1,150 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386' 'amd64'
+
+insertpackage 'unstable' 'unrlated' 'all' '1.0'
+
+insertinstalledpackage 'foo' 'i386' '2.0'
+insertpackage 'unstable' 'foo' 'i386' '4.0'
+insertpackage 'unstable' 'foo-provider' 'i386' '1.0' 'Provides: foo'
+insertpackage 'unstable' 'foo-breaker-3' 'i386' '1.0' 'Breaks: foo (<< 3.0)'
+insertpackage 'unstable' 'foo-breaker-2' 'i386' '1.0' 'Breaks: foo (<< 2.0)'
+insertpackage 'unstable' 'foo-breaker-none' 'i386' '1.0' 'Breaks: foo'
+
+insertinstalledpackage 'foo-foreign' 'amd64' '2.0' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'foo-foreign' 'amd64' '4.0' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'foo-foreign-provider' 'i386' '1.0' 'Provides: foo-foreign'
+insertpackage 'unstable' 'foo-foreign-breaker-3' 'i386' '1.0' 'Breaks: foo-foreign (<< 3.0)'
+insertpackage 'unstable' 'foo-foreign-breaker-2' 'i386' '1.0' 'Breaks: foo-foreign (<< 2.0)'
+insertpackage 'unstable' 'foo-foreign-breaker-none' 'i386' '1.0' 'Breaks: foo-foreign'
+
+insertinstalledpackage 'foo-same' 'i386,amd64' '2.0' 'Multi-Arch: same'
+insertpackage 'unstable' 'foo-same' 'i386,amd64' '4.0' 'Multi-Arch: same'
+insertpackage 'unstable' 'foo-same-provider' 'i386' '1.0' 'Provides: foo-same'
+insertpackage 'unstable' 'foo-same-breaker-3' 'i386' '1.0' 'Breaks: foo-same (<< 3.0)'
+insertpackage 'unstable' 'foo-same-breaker-2' 'i386' '1.0' 'Breaks: foo-same (<< 2.0)'
+insertpackage 'unstable' 'foo-same-breaker-none' 'i386' '1.0' 'Breaks: foo-same'
+
+
+
+setupaptarchive
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ foo-breaker-none : Breaks: foo
+E: Unable to correct problems, you have held broken packages.' aptget install foo-provider foo-breaker-none -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-breaker-2 foo-provider
+0 upgraded, 2 newly installed, 0 to remove and 4 not upgraded.
+Inst foo-breaker-2 (1.0 unstable [i386])
+Inst foo-provider (1.0 unstable [i386])
+Conf foo-breaker-2 (1.0 unstable [i386])
+Conf foo-provider (1.0 unstable [i386])' aptget install foo-provider foo-breaker-2 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ foo-breaker-3 foo-provider
+The following packages will be upgraded:
+ foo
+1 upgraded, 2 newly installed, 0 to remove and 3 not upgraded.
+Inst foo [2.0] (4.0 unstable [i386])
+Inst foo-breaker-3 (1.0 unstable [i386])
+Inst foo-provider (1.0 unstable [i386])
+Conf foo (4.0 unstable [i386])
+Conf foo-breaker-3 (1.0 unstable [i386])
+Conf foo-provider (1.0 unstable [i386])' aptget install foo-provider foo-breaker-3 -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ foo-foreign-breaker-none : Breaks: foo-foreign
+E: Unable to correct problems, you have held broken packages.' aptget install foo-foreign-provider foo-foreign-breaker-none -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-foreign-breaker-2 foo-foreign-provider
+0 upgraded, 2 newly installed, 0 to remove and 4 not upgraded.
+Inst foo-foreign-breaker-2 (1.0 unstable [i386])
+Inst foo-foreign-provider (1.0 unstable [i386])
+Conf foo-foreign-breaker-2 (1.0 unstable [i386])
+Conf foo-foreign-provider (1.0 unstable [i386])' aptget install foo-foreign-provider foo-foreign-breaker-2 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo-foreign:amd64
+The following NEW packages will be installed:
+ foo-foreign-breaker-3 foo-foreign-provider
+The following packages will be upgraded:
+ foo-foreign:amd64
+1 upgraded, 2 newly installed, 0 to remove and 3 not upgraded.
+Inst foo-foreign:amd64 [2.0] (4.0 unstable [amd64])
+Inst foo-foreign-breaker-3 (1.0 unstable [i386])
+Inst foo-foreign-provider (1.0 unstable [i386])
+Conf foo-foreign:amd64 (4.0 unstable [amd64])
+Conf foo-foreign-breaker-3 (1.0 unstable [i386])
+Conf foo-foreign-provider (1.0 unstable [i386])' aptget install foo-foreign-provider foo-foreign-breaker-3 -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ foo-same-breaker-none : Breaks: foo-same
+E: Unable to correct problems, you have held broken packages.' aptget install foo-same-provider foo-same-breaker-none -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-same-breaker-2 foo-same-provider
+0 upgraded, 2 newly installed, 0 to remove and 4 not upgraded.
+Inst foo-same-breaker-2 (1.0 unstable [i386])
+Inst foo-same-provider (1.0 unstable [i386])
+Conf foo-same-breaker-2 (1.0 unstable [i386])
+Conf foo-same-provider (1.0 unstable [i386])' aptget install foo-same-provider foo-same-breaker-2 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo-same foo-same:amd64
+The following NEW packages will be installed:
+ foo-same-breaker-3 foo-same-provider
+The following packages will be upgraded:
+ foo-same foo-same:amd64
+2 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst foo-same [2.0] (4.0 unstable [i386]) [foo-same:i386 on foo-same:amd64] [foo-same:amd64 on foo-same:i386] [foo-same:amd64 ]
+Inst foo-same:amd64 [2.0] (4.0 unstable [amd64])
+Inst foo-same-breaker-3 (1.0 unstable [i386])
+Inst foo-same-provider (1.0 unstable [i386])
+Conf foo-same (4.0 unstable [i386])
+Conf foo-same:amd64 (4.0 unstable [amd64])
+Conf foo-same-breaker-3 (1.0 unstable [i386])
+Conf foo-same-provider (1.0 unstable [i386])' aptget install foo-same-provider foo-same-breaker-3 -s
diff --git a/test/integration/test-ignore-provides-if-versioned-conflicts b/test/integration/test-ignore-provides-if-versioned-conflicts
new file mode 100755
index 000000000..3243cfb51
--- /dev/null
+++ b/test/integration/test-ignore-provides-if-versioned-conflicts
@@ -0,0 +1,150 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386' 'amd64'
+
+insertpackage 'unstable' 'unrlated' 'all' '1.0'
+
+insertinstalledpackage 'foo' 'i386' '2.0'
+insertpackage 'unstable' 'foo' 'i386' '4.0'
+insertpackage 'unstable' 'foo-provider' 'i386' '1.0' 'Provides: foo'
+insertpackage 'unstable' 'foo-breaker-3' 'i386' '1.0' 'Conflicts: foo (<< 3.0)'
+insertpackage 'unstable' 'foo-breaker-2' 'i386' '1.0' 'Conflicts: foo (<< 2.0)'
+insertpackage 'unstable' 'foo-breaker-none' 'i386' '1.0' 'Conflicts: foo'
+
+insertinstalledpackage 'foo-foreign' 'amd64' '2.0' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'foo-foreign' 'amd64' '4.0' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'foo-foreign-provider' 'i386' '1.0' 'Provides: foo-foreign'
+insertpackage 'unstable' 'foo-foreign-breaker-3' 'i386' '1.0' 'Conflicts: foo-foreign (<< 3.0)'
+insertpackage 'unstable' 'foo-foreign-breaker-2' 'i386' '1.0' 'Conflicts: foo-foreign (<< 2.0)'
+insertpackage 'unstable' 'foo-foreign-breaker-none' 'i386' '1.0' 'Conflicts: foo-foreign'
+
+insertinstalledpackage 'foo-same' 'i386,amd64' '2.0' 'Multi-Arch: same'
+insertpackage 'unstable' 'foo-same' 'i386,amd64' '4.0' 'Multi-Arch: same'
+insertpackage 'unstable' 'foo-same-provider' 'i386' '1.0' 'Provides: foo-same'
+insertpackage 'unstable' 'foo-same-breaker-3' 'i386' '1.0' 'Conflicts: foo-same (<< 3.0)'
+insertpackage 'unstable' 'foo-same-breaker-2' 'i386' '1.0' 'Conflicts: foo-same (<< 2.0)'
+insertpackage 'unstable' 'foo-same-breaker-none' 'i386' '1.0' 'Conflicts: foo-same'
+
+
+
+setupaptarchive
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ foo-breaker-none : Conflicts: foo
+E: Unable to correct problems, you have held broken packages.' aptget install foo-provider foo-breaker-none -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-breaker-2 foo-provider
+0 upgraded, 2 newly installed, 0 to remove and 4 not upgraded.
+Inst foo-breaker-2 (1.0 unstable [i386])
+Inst foo-provider (1.0 unstable [i386])
+Conf foo-breaker-2 (1.0 unstable [i386])
+Conf foo-provider (1.0 unstable [i386])' aptget install foo-provider foo-breaker-2 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ foo-breaker-3 foo-provider
+The following packages will be upgraded:
+ foo
+1 upgraded, 2 newly installed, 0 to remove and 3 not upgraded.
+Inst foo [2.0] (4.0 unstable [i386])
+Inst foo-breaker-3 (1.0 unstable [i386])
+Inst foo-provider (1.0 unstable [i386])
+Conf foo (4.0 unstable [i386])
+Conf foo-breaker-3 (1.0 unstable [i386])
+Conf foo-provider (1.0 unstable [i386])' aptget install foo-provider foo-breaker-3 -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ foo-foreign-breaker-none : Conflicts: foo-foreign
+E: Unable to correct problems, you have held broken packages.' aptget install foo-foreign-provider foo-foreign-breaker-none -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-foreign-breaker-2 foo-foreign-provider
+0 upgraded, 2 newly installed, 0 to remove and 4 not upgraded.
+Inst foo-foreign-breaker-2 (1.0 unstable [i386])
+Inst foo-foreign-provider (1.0 unstable [i386])
+Conf foo-foreign-breaker-2 (1.0 unstable [i386])
+Conf foo-foreign-provider (1.0 unstable [i386])' aptget install foo-foreign-provider foo-foreign-breaker-2 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo-foreign:amd64
+The following NEW packages will be installed:
+ foo-foreign-breaker-3 foo-foreign-provider
+The following packages will be upgraded:
+ foo-foreign:amd64
+1 upgraded, 2 newly installed, 0 to remove and 3 not upgraded.
+Inst foo-foreign:amd64 [2.0] (4.0 unstable [amd64])
+Inst foo-foreign-breaker-3 (1.0 unstable [i386])
+Inst foo-foreign-provider (1.0 unstable [i386])
+Conf foo-foreign:amd64 (4.0 unstable [amd64])
+Conf foo-foreign-breaker-3 (1.0 unstable [i386])
+Conf foo-foreign-provider (1.0 unstable [i386])' aptget install foo-foreign-provider foo-foreign-breaker-3 -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ foo-same-breaker-none : Conflicts: foo-same
+E: Unable to correct problems, you have held broken packages.' aptget install foo-same-provider foo-same-breaker-none -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-same-breaker-2 foo-same-provider
+0 upgraded, 2 newly installed, 0 to remove and 4 not upgraded.
+Inst foo-same-breaker-2 (1.0 unstable [i386])
+Inst foo-same-provider (1.0 unstable [i386])
+Conf foo-same-breaker-2 (1.0 unstable [i386])
+Conf foo-same-provider (1.0 unstable [i386])' aptget install foo-same-provider foo-same-breaker-2 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo-same foo-same:amd64
+The following NEW packages will be installed:
+ foo-same-breaker-3 foo-same-provider
+The following packages will be upgraded:
+ foo-same foo-same:amd64
+2 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst foo-same [2.0] (4.0 unstable [i386]) [foo-same:i386 on foo-same:amd64] [foo-same:amd64 on foo-same:i386] [foo-same:amd64 ]
+Inst foo-same:amd64 [2.0] (4.0 unstable [amd64])
+Inst foo-same-breaker-3 (1.0 unstable [i386])
+Inst foo-same-provider (1.0 unstable [i386])
+Conf foo-same (4.0 unstable [i386])
+Conf foo-same:amd64 (4.0 unstable [amd64])
+Conf foo-same-breaker-3 (1.0 unstable [i386])
+Conf foo-same-provider (1.0 unstable [i386])' aptget install foo-same-provider foo-same-breaker-3 -s
diff --git a/test/integration/test-implicit-conflicts-real-not-virtual b/test/integration/test-implicit-conflicts-real-not-virtual
new file mode 100755
index 000000000..02bd44208
--- /dev/null
+++ b/test/integration/test-implicit-conflicts-real-not-virtual
@@ -0,0 +1,56 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertpackage 'unstable-mp' 'crda' 'i386,amd64' '1.1.1-1ubuntu4mp' 'Provides: wireless-crda
+Multi-Arch: foreign'
+insertpackage 'unstable-m' 'crda' 'i386,amd64' '1.1.1-1ubuntu4m' 'Multi-Arch: foreign'
+insertpackage 'unstable-p' 'crda' 'i386,amd64' '1.1.1-1ubuntu4p' 'Provides: wireless-crda'
+insertpackage 'unstable' 'wireless-crda' 'i386,amd64' '1.16'
+
+
+insertinstalledpackage 'wireless-crda' 'amd64' '1.14'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ crda
+0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst crda (1.1.1-1ubuntu4m unstable-m [amd64])
+Conf crda (1.1.1-1ubuntu4m unstable-m [amd64])' aptget install crda -s -t unstable-m
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ crda
+0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst crda (1.1.1-1ubuntu4p unstable-p [amd64])
+Conf crda (1.1.1-1ubuntu4p unstable-p [amd64])' aptget install crda -s -t unstable-p
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ crda
+0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst crda (1.1.1-1ubuntu4mp unstable-mp [amd64])
+Conf crda (1.1.1-1ubuntu4mp unstable-mp [amd64])' aptget install crda -s -t unstable-mp
+
+rm rootdir/var/lib/dpkg/status
+insertinstalledpackage 'crda' 'amd64' '1.1.1-1ubuntu4mp' 'Provides: wireless-crda
+Conflicts: wireless-crda (<< 1.15)
+Replaces: wireless-crda ( << 1.15)
+Multi-arch: foreign'
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ wireless-crda
+0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst wireless-crda (1.16 unstable [amd64])
+Conf wireless-crda (1.16 unstable [amd64])' aptget install wireless-crda -s -t unstable
diff --git a/test/integration/test-kernel-helper-autoremove b/test/integration/test-kernel-helper-autoremove
new file mode 100755
index 000000000..a70841d9d
--- /dev/null
+++ b/test/integration/test-kernel-helper-autoremove
@@ -0,0 +1,172 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+CURRENTKERNEL="linux-image-$(uname -r | tr '[A-Z]' '[a-z]')"
+insertinstalledpackage "$CURRENTKERNEL" 'amd64' '5-1'
+# debug packages do not need our protection
+insertinstalledpackage "${CURRENTKERNEL}-dbg" 'amd64' '5-1'
+# but other kernel flavours should be protected
+insertinstalledpackage "${CURRENTKERNEL}-686-pae" 'i386' '5-1'
+insertinstalledpackage "${CURRENTKERNEL}-rt" 'amd64' '5-1'
+# some more versions
+insertinstalledpackage 'linux-image-1.0.0-2-generic' 'amd64' '1.0.0-2'
+insertinstalledpackage 'linux-image-100.0.0-1-generic' 'amd64' '100.0.0-1'
+# kernel metapackages should be ignored
+insertinstalledpackage 'linux-image-amd64' 'amd64' '200-1'
+insertinstalledpackage 'linux-image-686-pae' 'i386' '300-1'
+# ensure that the '.' is really a dot and not a wildcard
+insertinstalledpackage 'linux-headers-1000000-1-generic' 'amd64' '100.0.0-1'
+# ensure that the '+' is really a plus and not a regexp quantifier
+insertinstalledpackage "${CURRENTKERNEL}+variant" 'amd64' '5-1'
+
+testsuccess aptmark auto "$CURRENTKERNEL" "${CURRENTKERNEL}-dbg" "${CURRENTKERNEL}-686-pae:i386" "${CURRENTKERNEL}-rt" \
+ 'linux-image-1.0.0-2-generic' 'linux-image-100.0.0-1-generic' 'linux-headers-1000000-1-generic' "${CURRENTKERNEL}+variant"
+testsuccess aptmark hold "${CURRENTKERNEL}-rt"
+
+testprotected() {
+ rm -f rootdir/etc/apt/apt.conf.d/01autoremove-kernels protected.list
+
+ testsuccess runapt sh "${TESTDIR}/../../debian/apt.auto-removal.sh" "$@"
+ testfailure test -s rootdir/tmp/testsuccess.output
+
+ msgtest 'Check kernel autoremoval protection list' 'is created'
+ testsuccess --nomsg test -e rootdir/etc/apt/apt.conf.d/01autoremove-kernels
+ testfilestats 'rootdir/etc/apt/apt.conf.d/01autoremove-kernels' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:444"
+
+ msgtest 'Check kernel autoremoval protection list' 'can be dumped'
+ testsuccess --nomsg aptconfig dump --no-empty --format '%v%n' 'APT::NeverAutoRemove'
+ cp rootdir/tmp/testsuccess.output protected.list
+
+ msgtest 'Check kernel autoremoval protection list' 'can be parsed'
+ testfailure --nomsg grep '^[A-Z]: ' protected.list
+
+ msgtest 'Check kernel autoremoval protection list includes' 'most recent kernel'
+ testsuccess --nomsg grep '^\^linux-image-100\\\.0\\\.0-1-generic\$$' protected.list
+
+ msgtest 'Check kernel autoremoval protection list includes' 'running kernel'
+ testsuccess --nomsg grep "^\\^linux-image-$(uname -r | tr '[A-Z]' '[a-z]' | sed -e 's#\.#\\\\.#g')\\\$\$" protected.list
+
+ msgtest 'Check kernel autoremoval protection list does not include' 'metapackages'
+ testfailure --nomsg grep -e '^\^linux-image-amd64\$$' -e '^\^linux-image-686-pae\$$' -e ':i386' protected.list
+}
+
+AUTOREMOVE='apt autoremove'
+if [ -n "$SUDO_USER" ]; then
+ AUTOREMOVE="sudo $AUTOREMOVE"
+fi
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages were automatically installed and are no longer required:
+ linux-headers-1000000-1-generic (100.0.0-1)
+ linux-image-1.0.0-2-generic (1.0.0-2)
+ linux-image-100.0.0-1-generic (100.0.0-1)
+ $CURRENTKERNEL (5-1)
+ ${CURRENTKERNEL}+variant (5-1)
+ ${CURRENTKERNEL}-686-pae:i386 (5-1)
+ ${CURRENTKERNEL}-dbg (5-1)
+Use '$AUTOREMOVE' to remove them.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -sV
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages were automatically installed and are no longer required:
+ linux-headers-1000000-1-generic (100.0.0-1)
+ linux-image-1.0.0-2-generic (1.0.0-2)
+ linux-image-100.0.0-1-generic (100.0.0-1)
+ $CURRENTKERNEL (5-1)
+ ${CURRENTKERNEL}+variant (5-1)
+ ${CURRENTKERNEL}-686-pae:i386 (5-1)
+ ${CURRENTKERNEL}-dbg (5-1)
+ ${CURRENTKERNEL}-rt (5-1)
+Use '$AUTOREMOVE' to remove them.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -sV --ignore-hold
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+7 packages were automatically installed and are no longer required.
+Use '$AUTOREMOVE' to remove them.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s -o APT::Get::HideAutoRemove=small
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ linux-headers-1000000-1-generic (100.0.0-1)
+ linux-image-1.0.0-2-generic (1.0.0-2)
+ linux-image-100.0.0-1-generic (100.0.0-1)
+ $CURRENTKERNEL (5-1)
+ ${CURRENTKERNEL}+variant (5-1)
+ ${CURRENTKERNEL}-686-pae:i386 (5-1)
+ ${CURRENTKERNEL}-dbg (5-1)
+0 upgraded, 0 newly installed, 7 to remove and 0 not upgraded.
+Remv linux-headers-1000000-1-generic [100.0.0-1]
+Remv linux-image-1.0.0-2-generic [1.0.0-2]
+Remv linux-image-100.0.0-1-generic [100.0.0-1]
+Remv $CURRENTKERNEL [5-1]
+Remv ${CURRENTKERNEL}+variant [5-1]
+Remv ${CURRENTKERNEL}-686-pae:i386 [5-1]
+Remv ${CURRENTKERNEL}-dbg [5-1]" aptget autoremove -sV
+
+msgmsg "run without parameter"
+testprotected
+msgtest 'Check kernel autoremoval protection list does not include' 'old kernel'
+testfailure --nomsg grep '^\^linux-image-1\\\.0\\\.0-2-generic\$$' protected.list
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ linux-headers-1000000-1-generic linux-image-1.0.0-2-generic
+ ${CURRENTKERNEL}-dbg
+0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
+Remv linux-headers-1000000-1-generic [100.0.0-1]
+Remv linux-image-1.0.0-2-generic [1.0.0-2]
+Remv ${CURRENTKERNEL}-dbg [5-1]" aptget autoremove -s
+
+msgmsg "install unknown kernel"
+# even if installed/uname reports a kernel which we can't find via dpkg,
+# ensure that we still protect it just in case as these are kernels we
+# know for sure without complicated detection mechanisms
+testprotected 1.0.0-2-ungeneric
+msgtest 'Check kernel autoremoval protection list does not include' 'old kernel'
+testfailure --nomsg grep '^\^linux-image-1\\\.0\\\.0-2-generic\$$' protected.list
+msgtest 'Check kernel autoremoval protection list does include' 'unknown installed kernel'
+testsuccess --nomsg grep '^\^linux-image-1\\\.0\\\.0-2-ungeneric\$$' protected.list
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ linux-headers-1000000-1-generic linux-image-1.0.0-2-generic
+ ${CURRENTKERNEL}-dbg
+0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
+Remv linux-headers-1000000-1-generic [100.0.0-1]
+Remv linux-image-1.0.0-2-generic [1.0.0-2]
+Remv ${CURRENTKERNEL}-dbg [5-1]" aptget autoremove -s
+
+msgmsg "install an old kernel"
+testprotected 1.0.0-2-generic
+msgtest 'Check kernel autoremoval protection list includes' 'installed kernel'
+testsuccess --nomsg grep '^\^linux-image-1\\\.0\\\.0-2-generic\$$' protected.list
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ linux-headers-1000000-1-generic ${CURRENTKERNEL}-dbg
+0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
+Remv linux-headers-1000000-1-generic [100.0.0-1]
+Remv ${CURRENTKERNEL}-dbg [5-1]" aptget autoremove -s
+
+# rt kernel was put on hold while the protected list was generated
+testsuccess aptmark unhold "${CURRENTKERNEL}-rt"
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ linux-headers-1000000-1-generic ${CURRENTKERNEL}-dbg
+0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
+Remv linux-headers-1000000-1-generic [100.0.0-1]
+Remv ${CURRENTKERNEL}-dbg [5-1]" aptget autoremove -s
diff --git a/test/integration/test-method-connect b/test/integration/test-method-connect
new file mode 100755
index 000000000..b35f96dc3
--- /dev/null
+++ b/test/integration/test-method-connect
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+
+cd downloaded
+testfailureequal 'Err:1 http://vwakviie2ienjx6t.onion/
+ Direct connection to .onion domains is blocked by default. If you meant to use Tor remember to use tor+http instead of http.
+E: Failed to fetch http://vwakviie2ienjx6t.onion/ Direct connection to .onion domains is blocked by default. If you meant to use Tor remember to use tor+http instead of http.
+E: Download Failed' apthelper download-file 'http://vwakviie2ienjx6t.onion/' ftp.debian.org.html
diff --git a/test/integration/test-method-gpgv b/test/integration/test-method-gpgv
new file mode 100755
index 000000000..86559b7cb
--- /dev/null
+++ b/test/integration/test-method-gpgv
@@ -0,0 +1,77 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+cat > faked-apt-key <<EOF
+#!/bin/sh
+set -e
+echo "FFOO"
+find_gpgv_status_fd() {
+ while [ -n "\$1" ]; do
+ if [ "\$1" = '--status-fd' ]; then
+ shift
+ echo "\$1"
+ break
+ fi
+ shift
+ done
+}
+GPGSTATUSFD="\$(find_gpgv_status_fd "\$@")"
+cat >&\${GPGSTATUSFD} gpgv.output
+cat gpgv.output
+EOF
+chmod +x faked-apt-key
+
+testgpgv() {
+ echo "$3" > gpgv.output
+ msgtest "$1" "$2"
+ gpgvmethod >method.output 2>&1 || true
+ testsuccess --nomsg grep "$2" method.output
+}
+
+testrun() {
+ testgpgv 'Good signed with long keyid' 'Good: GOODSIG 5A90D141DBAC8DAE,' '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+[GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE'
+ testgpgv 'Good signed with fingerprint' 'Good: GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE,' '[GNUPG:] GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+[GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE'
+
+ testgpgv 'No Pubkey with long keyid' 'NoPubKey: NO_PUBKEY E8525D47528144E2,' '[GNUPG:] ERRSIG E8525D47528144E2 1 11 00 1472744666 9
+[GNUPG:] NO_PUBKEY E8525D47528144E2'
+ testgpgv 'No Pubkey with fingerprint' 'NoPubKey: NO_PUBKEY DE66AECA9151AFA1877EC31DE8525D47528144E2,' '[GNUPG:] ERRSIG DE66AECA9151AFA1877EC31DE8525D47528144E2 1 11 00 1472744666 9
+[GNUPG:] NO_PUBKEY DE66AECA9151AFA1877EC31DE8525D47528144E2'
+
+ testgpgv 'Expired key with long keyid' 'Worthless: EXPKEYSIG 4BC0A39C27CE74F9 Rex Expired <rex@example.org>,' '[GNUPG:] EXPKEYSIG 4BC0A39C27CE74F9 Rex Expired <rex@example.org>
+[GNUPG:] VALIDSIG 891CC50E605796A0C6E733F74BC0A39C27CE74F9 2016-09-01 1472742629 0 4 0 1 11 00 891CC50E605796A0C6E733F74BC0A39C27CE74F9'
+ testgpgv 'Expired key with fingerprint' 'Worthless: EXPKEYSIG 891CC50E605796A0C6E733F74BC0A39C27CE74F9 Rex Expired <rex@example.org>,' '[GNUPG:] EXPKEYSIG 891CC50E605796A0C6E733F74BC0A39C27CE74F9 Rex Expired <rex@example.org>
+[GNUPG:] VALIDSIG 891CC50E605796A0C6E733F74BC0A39C27CE74F9 2016-09-01 1472742629 0 4 0 1 11 00 891CC50E605796A0C6E733F74BC0A39C27CE74F9'
+}
+
+gpgvmethod() {
+ echo '601 Configuration
+Config-Item: Debug::Acquire::gpgv=1
+Config-Item: Dir::Bin::apt-key=./faked-apt-key
+
+600 URI Acquire
+URI: file:///dev/null
+Filename: /dev/zero
+' | runapt "${METHODSDIR}/gpgv"
+}
+testrun
+
+gpgvmethod() {
+ echo '601 Configuration
+Config-Item: Debug::Acquire::gpgv=1
+Config-Item: Dir::Bin::apt-key=./faked-apt-key
+
+600 URI Acquire
+URI: file:///dev/null
+Filename: /dev/zero
+Signed-By: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE
+' | runapt "${METHODSDIR}/gpgv"
+}
+testrun
diff --git a/test/integration/test-method-rred b/test/integration/test-method-rred
new file mode 100755
index 000000000..5a885e9d2
--- /dev/null
+++ b/test/integration/test-method-rred
@@ -0,0 +1,197 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+echo 'Package: coolstuff
+Version: 0.8.15
+Description: collection of stuff
+ A lot, too much to iterate all, but at least this:
+ - stuff
+ - more stuff
+ - even more stuff
+ .
+ And a cow.
+
+Package: oldstuff
+Version: 0-1
+Description: collection of outdated stuff
+ A lot, but of no use nowadays, but at least this:
+ - stuff
+ - more stuff
+ - even more stuff
+ .
+ And a dog.' > Packages
+
+testrred() {
+ msgtest "$1" "$2"
+ if [ -z "$3" ]; then
+ echo -n '' > Packages.ed
+ else
+ echo "$3" > Packages.ed
+ fi
+ rred() {
+ cat Packages | runapt "${METHODSDIR}/rred" "$@"
+ }
+ testsuccessequal "$4" --nomsg rred -f Packages.ed
+ testsuccess runapt "${METHODSDIR}/rred" -t Packages Packages-patched Packages.ed
+ testfileequal Packages-patched "$4"
+}
+
+testrred 'Remove' 'first line' '1d' "$(tail -n +2 ./Packages)"
+testrred 'Remove' 'empty line' '10d' "$(head -n 9 ./Packages)
+$(tail -n 9 ./Packages)"
+testrred 'Remove' 'line in a paragraph' '5d' "$(head -n 4 ./Packages)
+$(tail -n 14 ./Packages)"
+testrred 'Remove' 'last line' '19d' "$(head -n -1 ./Packages)"
+testrred 'Remove' 'multiple single lines' '17d
+7d' "$(sed -e '/^ - even more stuff$/ d' ./Packages)"
+testrred 'Remove' 'first paragraph' '1,10d' "$(tail -n 9 ./Packages)"
+testrred 'Remove' 'a few lines in the middle' '5,14d' "$(head -n 4 ./Packages)
+$(tail -n 5 ./Packages)"
+testrred 'Remove' 'second paragraph' '10,19d' "$(head -n 9 ./Packages)"
+testrred 'Mass Remove' 'all stuff lines' '15,17d
+13d
+11d
+5,7d
+3d
+1d' "$(sed '/stuff/ d' ./Packages)"
+
+testrred 'Single line add' 'first line' '0a
+Format: 3.0 (native)
+.' "Format: 3.0 (native)
+$(cat ./Packages)"
+testrred 'Single line add' 'last line' '19a
+Multi-Arch: foreign
+.' "$(cat ./Packages)
+Multi-Arch: foreign"
+testrred 'Single line add' 'middle' '9a
+Multi-Arch: foreign
+.' "$(head -n 9 ./Packages)
+Multi-Arch: foreign
+$(tail -n 10 ./Packages)"
+
+testrred 'Multi line add' 'first line' '0a
+Format: 3.0 (native)
+Source: apt
+.' "Format: 3.0 (native)
+Source: apt
+$(cat ./Packages)"
+testrred 'Multi line add' 'last line' '19a
+Multi-Arch: foreign
+Homepage: https://debian.org
+.' "$(cat ./Packages)
+Multi-Arch: foreign
+Homepage: https://debian.org"
+testrred 'Multi line add' 'middle' '9a
+Multi-Arch: foreign
+Homepage: https://debian.org
+.' "$(head -n 9 ./Packages)
+Multi-Arch: foreign
+Homepage: https://debian.org
+$(tail -n 10 ./Packages)"
+
+testrred 'Single line change' 'first line' '1c
+Package: supercoolstuff
+.' "Package: supercoolstuff
+$(tail -n +2 ./Packages)"
+testrred 'Single line change' 'in the middle' '9c
+ And a super cow.
+.' "$(head -n 8 ./Packages)
+ And a super cow.
+$(tail -n 10 ./Packages)"
+testrred 'Single line change' 'an empty line' '10c
+
+.' "$(head -n 9 ./Packages)
+
+$(tail -n 9 ./Packages)"
+testrred 'Single line change' 'a spacy line' '10c
+
+.' "$(head -n 9 ./Packages)
+
+$(tail -n 9 ./Packages)"
+testrred 'Single line change' 'last line' '19c
+ And a cat.
+.' "$(head -n -1 ./Packages)
+ And a cat."
+
+testrred 'Multi line change' 'exchange' '5,7c
+ - good stuff
+ - more good stuff
+ - even more good stuff
+.' "$(head -n 4 ./Packages)
+ - good stuff
+ - more good stuff
+ - even more good stuff
+$(tail -n 12 ./Packages)"
+testrred 'Multi line change' 'less' '5,7c
+ - good stuff
+ - more good stuff
+.' "$(head -n 4 ./Packages)
+ - good stuff
+ - more good stuff
+$(tail -n 12 ./Packages)"
+testrred 'Multi line change' 'more' '5,7c
+ - good stuff
+ - more good stuff
+ - even more good stuff
+ - bonus good stuff
+.' "$(head -n 4 ./Packages)
+ - good stuff
+ - more good stuff
+ - even more good stuff
+ - bonus good stuff
+$(tail -n 12 ./Packages)"
+
+failrred() {
+ msgtest 'Failure caused by' "$1"
+ echo "$2" > Packages.ed
+ rred() {
+ cat Packages | runapt "${METHODSDIR}/rred" "$@"
+ }
+ testfailure --nomsg rred -f Packages.ed
+ testfailure runapt "${METHODSDIR}/rred" -t Packages Packages-patched Packages.ed
+}
+
+failrred 'Bogus content' '<html>
+</html>'
+
+# not a problem per-se, but we want our parser to be really strict
+failrred 'Empty patch file' ''
+failrred 'Empty line patch file' '
+'
+failrred 'Empty line before command' '
+1d'
+failrred 'Empty line after command' '1d
+'
+failrred 'Empty line between commands' '17d
+
+7d'
+failrred 'Empty spaces lines before command' '
+1d'
+failrred 'Empty spaces lines after command' '1d
+ '
+failrred 'Empty spaces lines between commands' '17d
+
+7d'
+
+# the line before the first one can't be deleted/changed
+failrred 'zero line delete' '0d'
+failrred 'zero line change' '0c
+Package: supercoolstuff
+.'
+# and this makes no sense at all
+failrred 'negative line delete' '-1d'
+failrred 'negative line change' '-1c
+Package: supercoolstuff
+.'
+failrred 'negative line add' '-1a
+Package: supercoolstuff
+.'
+failrred 'Wrong order of commands' '7d
+17d'
+failrred 'End before start' '7,6d'
diff --git a/test/integration/test-multiarch-allowed b/test/integration/test-multiarch-allowed
new file mode 100755
index 000000000..98555bc73
--- /dev/null
+++ b/test/integration/test-multiarch-allowed
@@ -0,0 +1,302 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertpackage 'unstable' 'foo' 'amd64,i386' '1' 'Multi-Arch: allowed'
+insertpackage 'unstable' 'needsfoo' 'amd64,i386' '1' 'Depends: foo'
+insertpackage 'unstable' 'needsfooany' 'amd64,i386' '1' 'Depends: foo:any'
+insertpackage 'unstable' 'needsfoover1' 'amd64,i386' '1' 'Depends: foo:any (>= 1)'
+insertpackage 'unstable' 'needsfoover2' 'amd64,i386' '1' 'Depends: foo:any (>= 2)'
+insertpackage 'unstable' 'hatesfoo' 'amd64' '1' 'Conflicts: foo'
+insertpackage 'unstable' 'hatesfooany' 'amd64' '1' 'Conflicts: foo:any' # this makes no sense…?
+insertpackage 'unstable' 'hatesfoonative' 'amd64' '1' 'Conflicts: foo:amd64'
+
+insertpackage 'unstable' 'coolfoo' 'amd64' '1' 'Multi-Arch:allowed
+Provides: coolbar'
+insertpackage 'unstable' 'coolfoover' 'amd64' '1' 'Multi-Arch:allowed
+Provides: coolbar (= 2)'
+insertpackage 'unstable' 'needscoolfoo' 'amd64' '1' 'Depends: coolfoo, coolbar'
+insertpackage 'unstable' 'needscoolfooany' 'amd64' '1' 'Depends: coolfoo:any, coolbar:any'
+insertpackage 'unstable' 'needscoolfoover0' 'amd64' '1' 'Depends: coolfoo:any (>= 1), coolbar:any'
+insertpackage 'unstable' 'needscoolfoover1' 'amd64' '1' 'Depends: coolfoo:any (>= 1), coolbar:any (>= 1)'
+insertpackage 'unstable' 'needscoolfoover2' 'amd64' '1' 'Depends: coolfoo:any (>= 2), coolbar:any (>= 1)'
+insertpackage 'unstable' 'needscoolfoover3' 'amd64' '1' 'Depends: coolfoo:any (>= 2), coolbar:any (>= 3)'
+
+setupaptarchive
+
+BADPREFIX='Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+'
+
+solveableinsinglearch0() {
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ foo needsfoo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [amd64])
+Inst needsfoo (1 unstable [amd64])
+Conf foo (1 unstable [amd64])
+Conf needsfoo (1 unstable [amd64])' aptget install needsfoo -s
+}
+solveableinsinglearch0
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo:i386
+The following NEW packages will be installed:
+ foo:i386 needsfoo:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo:i386 (1 unstable [i386])
+Inst needsfoo:i386 (1 unstable [i386])
+Conf foo:i386 (1 unstable [i386])
+Conf needsfoo:i386 (1 unstable [i386])' aptget install needsfoo:i386 -s
+testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ needsfoo:i386 : Depends: foo:i386 but it is not going to be installed
+E: Unable to correct problems, you have held broken packages." aptget install needsfoo:i386 foo:amd64 -s
+testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ needsfoo : Depends: foo but it is not going to be installed
+E: Unable to correct problems, you have held broken packages." aptget install needsfoo foo:i386 -s
+
+solveableinsinglearch1() {
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ foo $1
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [amd64])
+Inst $1 (1 unstable [amd64])
+Conf foo (1 unstable [amd64])
+Conf $1 (1 unstable [amd64])" aptget install $1 -s
+}
+
+testneedsfooallgood() {
+ solveableinsinglearch1 $1
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ foo $1:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [amd64])
+Inst $1:i386 (1 unstable [i386])
+Conf foo (1 unstable [amd64])
+Conf $1:i386 (1 unstable [i386])" aptget install $1:i386 -s
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo:i386 $1:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo:i386 (1 unstable [i386])
+Inst $1:i386 (1 unstable [i386])
+Conf foo:i386 (1 unstable [i386])
+Conf $1:i386 (1 unstable [i386])" aptget install $1:i386 foo:i386 -s
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo:i386 $1
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo:i386 (1 unstable [i386])
+Inst $1 (1 unstable [amd64])
+Conf foo:i386 (1 unstable [i386])
+Conf $1 (1 unstable [amd64])" aptget install $1 foo:i386 -s
+}
+testneedsfooallgood 'needsfooany'
+testneedsfooallgood 'needsfoover1'
+
+NEEDSFOO2NATIVE="$BADPREFIX
+The following packages have unmet dependencies:
+ needsfoover2 : Depends: foo:any (>= 2)
+E: Unable to correct problems, you have held broken packages."
+NEEDSFOO2FOREIGN="$BADPREFIX
+The following packages have unmet dependencies:
+ needsfoover2:i386 : Depends: foo:any (>= 2)
+E: Unable to correct problems, you have held broken packages."
+testfailureequal "$NEEDSFOO2NATIVE" aptget install needsfoover2 -s
+testfailureequal "$NEEDSFOO2FOREIGN" aptget install needsfoover2:i386 -s
+testfailureequal "$NEEDSFOO2FOREIGN" aptget install needsfoover2:i386 foo:i386 -s
+testfailureequal "$NEEDSFOO2NATIVE" aptget install needsfoover2 foo:i386 -s
+
+solveableinsinglearch2() {
+ testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ hatesfoo : Conflicts: foo but 1 is to be installed
+E: Unable to correct problems, you have held broken packages." aptget install foo hatesfoo -s
+ # the message differs slightly between single and multiarch
+ testfailuremsg 'E: Unable to correct problems, you have held broken packages.' aptget install foo hatesfooany -s
+ testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ hatesfoonative : Conflicts: foo:amd64
+E: Unable to correct problems, you have held broken packages." aptget install foo hatesfoonative -s
+}
+solveableinsinglearch2
+testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ hatesfoo : Conflicts: foo:i386 but 1 is to be installed
+E: Unable to correct problems, you have held broken packages." aptget install foo:i386 hatesfoo -s
+testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ hatesfooany : Conflicts: foo:any
+E: Unable to correct problems, you have held broken packages." aptget install foo:i386 hatesfooany -s
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo:i386 hatesfoonative
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo:i386 (1 unstable [i386])
+Inst hatesfoonative (1 unstable [amd64])
+Conf foo:i386 (1 unstable [i386])
+Conf hatesfoonative (1 unstable [amd64])' aptget install foo:i386 hatesfoonative -s
+
+solveableinsinglearch3() {
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ coolfoo
+The following NEW packages will be installed:
+ coolfoo needscoolfoo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst coolfoo (1 unstable [amd64])
+Inst needscoolfoo (1 unstable [amd64])
+Conf coolfoo (1 unstable [amd64])
+Conf needscoolfoo (1 unstable [amd64])" aptget install needscoolfoo -s
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ coolfoo
+The following NEW packages will be installed:
+ coolfoo coolfoover needscoolfoo
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst coolfoo (1 unstable [amd64])
+Inst coolfoover (1 unstable [amd64])
+Inst needscoolfoo (1 unstable [amd64])
+Conf coolfoo (1 unstable [amd64])
+Conf coolfoover (1 unstable [amd64])
+Conf needscoolfoo (1 unstable [amd64])" aptget install needscoolfoo coolfoover -s
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ coolfoo
+The following NEW packages will be installed:
+ coolfoo needscoolfooany
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst coolfoo (1 unstable [amd64])
+Inst needscoolfooany (1 unstable [amd64])
+Conf coolfoo (1 unstable [amd64])
+Conf needscoolfooany (1 unstable [amd64])" aptget install needscoolfooany -s
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ coolfoo
+The following NEW packages will be installed:
+ coolfoo needscoolfoover0
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst coolfoo (1 unstable [amd64])
+Inst needscoolfoover0 (1 unstable [amd64])
+Conf coolfoo (1 unstable [amd64])
+Conf needscoolfoover0 (1 unstable [amd64])' aptget install needscoolfoover0 -s
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ coolfoo coolfoover
+The following NEW packages will be installed:
+ coolfoo coolfoover needscoolfoover1
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst coolfoo (1 unstable [amd64])
+Inst coolfoover (1 unstable [amd64])
+Inst needscoolfoover1 (1 unstable [amd64])
+Conf coolfoo (1 unstable [amd64])
+Conf coolfoover (1 unstable [amd64])
+Conf needscoolfoover1 (1 unstable [amd64])' aptget install needscoolfoover1 -s
+ testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ needscoolfoover2 : Depends: coolfoo:any (>= 2)
+E: Unable to correct problems, you have held broken packages." aptget install needscoolfoover2 -s
+ testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ needscoolfoover3 : Depends: coolfoo:any (>= 2)
+ Depends: coolbar:any (>= 3)
+E: Unable to correct problems, you have held broken packages." aptget install needscoolfoover3 -s
+}
+solveableinsinglearch3
+
+msgmsg 'switch to single architecture'
+configarchitecture 'amd64'
+
+solveableinsinglearch0
+testfailureequal 'Reading package lists...
+Building dependency tree...
+E: Unable to locate package needsfoo:i386' aptget install needsfoo:i386 -s
+
+solveableinsinglearch1 'needsfooany'
+solveableinsinglearch1 'needsfoover1'
+testfailureequal "$NEEDSFOO2NATIVE" aptget install needsfoover2 -s
+solveableinsinglearch2
+solveableinsinglearch3
+
+msgmsg 'multi-arch with barbarian archs'
+configarchitecture 'amd64' 'i386'
+insertinstalledpackage 'foo' 'armel' '1' 'Multi-Arch: allowed'
+insertinstalledpackage 'coolfoo' 'armel' '1' 'Multi-Arch:allowed
+Provides: coolbar'
+insertinstalledpackage 'bar-needer' 'armel' '1.0' 'Depends: coolbar:any'
+
+testsuccess aptget check
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following packages will be REMOVED:
+ foo:armel
+The following NEW packages will be installed:
+ foo needsfooany
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv foo:armel [1]
+Inst foo (1 unstable [amd64])
+Inst needsfooany (1 unstable [amd64])
+Conf foo (1 unstable [amd64])
+Conf needsfooany (1 unstable [amd64])' aptget install needsfooany -s
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following packages will be REMOVED:
+ foo:armel
+The following NEW packages will be installed:
+ foo needsfooany:i386
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv foo:armel [1]
+Inst foo (1 unstable [amd64])
+Inst needsfooany:i386 (1 unstable [i386])
+Conf foo (1 unstable [amd64])
+Conf needsfooany:i386 (1 unstable [i386])' aptget install needsfooany:i386 -s
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ coolfoo
+The following packages will be REMOVED:
+ coolfoo:armel
+The following NEW packages will be installed:
+ coolfoo needscoolfoover0
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv coolfoo:armel [1] [bar-needer:armel ]
+Inst coolfoo (1 unstable [amd64])
+Inst needscoolfoover0 (1 unstable [amd64])
+Conf coolfoo (1 unstable [amd64])
+Conf needscoolfoover0 (1 unstable [amd64])' aptget install needscoolfoover0 -s
diff --git a/test/integration/test-multiarch-foreign b/test/integration/test-multiarch-foreign
new file mode 100755
index 000000000..713b27bd4
--- /dev/null
+++ b/test/integration/test-multiarch-foreign
@@ -0,0 +1,287 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386' 'armel'
+
+insertpackage 'unstable' 'cool-foo' 'amd64,i386' '1.0' 'Depends: foo'
+insertpackage 'unstable' 'cool-foo-x64' 'amd64' '1.0' 'Depends: foo:amd64'
+insertpackage 'unstable' 'cool-foo-x32' 'amd64' '1.0' 'Depends: foo:i386'
+insertpackage 'unstable' 'hates-foo' 'amd64,i386' '1.0' 'Conflicts: foo'
+insertpackage 'unstable' 'hates-foo-x64' 'amd64' '1.0' 'Conflicts: foo:amd64'
+insertpackage 'unstable' 'hates-foo-x32' 'amd64' '1.0' 'Conflicts: foo:i386'
+insertpackage 'unstable' 'foo' 'amd64,i386,armel' '1.0' 'Multi-Arch: foreign'
+
+insertpackage 'unstable' 'cool-bar' 'amd64,i386' '1.0' 'Depends: bar-provider'
+insertpackage 'unstable' 'cool-bar-x64' 'amd64' '1.0' 'Depends: bar-provider:amd64'
+insertpackage 'unstable' 'cool-bar-x32' 'amd64' '1.0' 'Depends: bar-provider:i386'
+insertpackage 'unstable' 'hates-bar' 'amd64,i386' '1.0' 'Conflicts: bar-provider'
+insertpackage 'unstable' 'hates-bar-x64' 'amd64' '1.0' 'Conflicts: bar-provider:amd64'
+insertpackage 'unstable' 'hates-bar-x32' 'amd64' '1.0' 'Conflicts: bar-provider:i386'
+insertpackage 'unstable' 'bar' 'amd64,i386,armel' '1.0' 'Provides: bar-provider
+Multi-Arch: foreign'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ cool-foo:i386 foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [amd64])
+Inst cool-foo:i386 (1.0 unstable [i386])
+Conf foo (1.0 unstable [amd64])
+Conf cool-foo:i386 (1.0 unstable [i386])' aptget install cool-foo:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ cool-foo foo:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo:i386 (1.0 unstable [i386])
+Inst cool-foo (1.0 unstable [amd64])
+Conf foo:i386 (1.0 unstable [i386])
+Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 foo:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ cool-foo foo:armel
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo:armel (1.0 unstable [armel])
+Inst cool-foo (1.0 unstable [amd64])
+Conf foo:armel (1.0 unstable [armel])
+Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 foo:armel -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ bar
+The following NEW packages will be installed:
+ bar cool-bar:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [amd64])
+Inst cool-bar:i386 (1.0 unstable [i386])
+Conf bar (1.0 unstable [amd64])
+Conf cool-bar:i386 (1.0 unstable [i386])' aptget install cool-bar:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar:i386 cool-bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar:i386 (1.0 unstable [i386])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar:i386 (1.0 unstable [i386])
+Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar:armel cool-bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar:armel (1.0 unstable [armel])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar:armel (1.0 unstable [armel])
+Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:armel -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'bar:i386' instead of 'bar-provider:i386'
+The following NEW packages will be installed:
+ bar:i386 cool-bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar:i386 (1.0 unstable [i386])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar:i386 (1.0 unstable [i386])
+Conf cool-bar (1.0 unstable [amd64])" aptget install cool-bar bar-provider:i386 -s
+
+satisfiable_in_singlearch() {
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ cool-foo foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [amd64])
+Inst cool-foo (1.0 unstable [amd64])
+Conf foo (1.0 unstable [amd64])
+Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 -s
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ cool-foo foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [amd64])
+Inst cool-foo (1.0 unstable [amd64])
+Conf foo (1.0 unstable [amd64])
+Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 foo:amd64 -s
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ bar
+The following NEW packages will be installed:
+ bar cool-bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [amd64])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar (1.0 unstable [amd64])
+Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 -s
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar cool-bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [amd64])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar (1.0 unstable [amd64])
+Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:amd64 -s
+
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'bar' instead of 'bar-provider'
+The following NEW packages will be installed:
+ bar cool-bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [amd64])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar (1.0 unstable [amd64])
+Conf cool-bar (1.0 unstable [amd64])" aptget install cool-bar bar-provider -s
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ cool-foo-x64 foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [amd64])
+Inst cool-foo-x64 (1.0 unstable [amd64])
+Conf foo (1.0 unstable [amd64])
+Conf cool-foo-x64 (1.0 unstable [amd64])' aptget install cool-foo-x64 -s
+}
+
+hatersgonnahate() {
+ BADPREFIX='Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+'
+ testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ hates-foo : Conflicts: foo
+ Conflicts: foo:i386
+ Conflicts: foo:armel
+E: Unable to correct problems, you have held broken packages." aptget install $1 hates-foo -s
+ testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ $2 : Conflicts: foo:$4
+E: Unable to correct problems, you have held broken packages." aptget install $1 $2 -s
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ $1 $3
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst $1 (1.0 unstable [$4])
+Inst $3 (1.0 unstable [amd64])
+Conf $1 (1.0 unstable [$4])
+Conf $3 (1.0 unstable [amd64])" aptget install $1 $3 -s
+}
+hatersgonnahate 'foo' 'hates-foo-x64' 'hates-foo-x32' 'amd64'
+hatersgonnahate 'foo:i386' 'hates-foo-x32' 'hates-foo-x64' 'i386'
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo:i386
+The following NEW packages will be installed:
+ cool-foo-x32 foo:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo:i386 (1.0 unstable [i386])
+Inst cool-foo-x32 (1.0 unstable [amd64])
+Conf foo:i386 (1.0 unstable [i386])
+Conf cool-foo-x32 (1.0 unstable [amd64])' aptget install cool-foo-x32 -s
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ bar:i386
+The following NEW packages will be installed:
+ bar:i386 cool-bar-x32
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar:i386 (1.0 unstable [i386])
+Inst cool-bar-x32 (1.0 unstable [amd64])
+Conf bar:i386 (1.0 unstable [i386])
+Conf cool-bar-x32 (1.0 unstable [amd64])' aptget install cool-bar-x32 -s
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ bar
+The following NEW packages will be installed:
+ bar cool-bar-x64
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [amd64])
+Inst cool-bar-x64 (1.0 unstable [amd64])
+Conf bar (1.0 unstable [amd64])
+Conf cool-bar-x64 (1.0 unstable [amd64])' aptget install cool-bar-x64 -s
+
+
+satisfiable_in_singlearch
+
+msgmsg 'switch to single architecture'
+configarchitecture 'amd64'
+
+satisfiable_in_singlearch
+
+msgmsg 'switch to multi-arch with barbarian architecture'
+
+insertinstalledpackage 'foo' 'armhf' '1.0' 'Multi-Arch: foreign'
+insertinstalledpackage 'bar' 'armhf' '1.0' 'Provides: bar-provider
+Multi-Arch: foreign'
+insertinstalledpackage 'bar-needer' 'armhf' '1.0' 'Depends: bar-provider'
+
+testsuccess aptget check
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following packages will be REMOVED:
+ foo:armhf
+The following NEW packages will be installed:
+ cool-foo foo
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv foo:armhf [1.0]
+Inst foo (1.0 unstable [amd64])
+Inst cool-foo (1.0 unstable [amd64])
+Conf foo (1.0 unstable [amd64])
+Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo -s
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ bar
+The following packages will be REMOVED:
+ bar:armhf
+The following NEW packages will be installed:
+ bar cool-bar
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv bar:armhf [1.0] [bar-needer:armhf ]
+Inst bar (1.0 unstable [amd64])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar (1.0 unstable [amd64])
+Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar -s
+
+# a barbarian doesn't satisfy another either
+insertinstalledpackage 'bar-needer2' 's390x' '1.0' 'Depends: bar-provider'
+testfailure aptget check
diff --git a/test/integration/test-no-fds-leaked-to-maintainer-scripts b/test/integration/test-no-fds-leaked-to-maintainer-scripts
new file mode 100755
index 000000000..747af69ff
--- /dev/null
+++ b/test/integration/test-no-fds-leaked-to-maintainer-scripts
@@ -0,0 +1,148 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64' 'i386'
+configdpkgnoopchroot
+
+if [ ! -e /proc/self/fd ]; then
+ msgskip "needs /proc/self/fd"
+ exit 0
+fi
+
+setupsimplenativepackage "fdleaks" 'all' '1.0' 'unstable'
+BUILDDIR="incoming/fdleaks-1.0"
+for script in 'preinst' 'postinst' 'prerm' 'postrm'; do
+ cat > ${BUILDDIR}/debian/$script << EOF
+#!/bin/sh
+if [ -e '$(pwd)/rootdir/tmp/read_stdin' ]; then
+ read line;
+ echo "STDIN: -\$line-"
+fi
+ls -l /proc/self/fd/
+EOF
+done
+buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
+rm -rf "$BUILDDIR"
+
+PKGNAME='fdleaks:all'
+if dpkg --compare-versions "$(dpkg_version)" 'lt' '1.16.2'; then
+ PKGNAME='fdleaks'
+fi
+
+setupaptarchive
+
+rm -f rootdir/var/log/dpkg.log rootdir/var/log/apt/term.log
+testsuccess aptget install -y fdleaks -qq < /dev/null
+
+checkfdleak() {
+ msgtest 'Check if fds were not' "leaked: expect $1"
+ if [ "$(grep 'root root' rootdir/tmp/testsuccess.output | wc -l)" = "$1" ]; then
+ msgpass
+ else
+ echo
+ cat rootdir/tmp/testsuccess.output
+ msgfail
+ fi
+}
+checkinstall() {
+ checkfdleak 8
+
+ cp rootdir/tmp/testsuccess.output terminal.output
+ tail -n +3 rootdir/var/log/apt/term.log | head -n -1 > terminal.log
+ testfileequal 'terminal.log' "$(cat terminal.output)"
+
+ testequal "startup archives unpack
+install $PKGNAME <none> 1.0
+status half-installed $PKGNAME 1.0
+status unpacked $PKGNAME 1.0
+status unpacked $PKGNAME 1.0
+startup packages configure
+configure $PKGNAME 1.0 <none>
+status unpacked $PKGNAME 1.0
+status half-configured $PKGNAME 1.0
+status installed $PKGNAME 1.0" cut -f 3- -d' ' rootdir/var/log/dpkg.log
+}
+checkinstall
+
+rm -f rootdir/var/log/dpkg.log rootdir/var/log/apt/term.log
+testsuccess aptget purge -y fdleaks -qq
+checkpurge() {
+ checkfdleak 12
+
+ cp rootdir/tmp/testsuccess.output terminal.output
+ tail -n +3 rootdir/var/log/apt/term.log | head -n -1 > terminal.log
+ testfileequal 'terminal.log' "$(cat terminal.output)"
+
+ if dpkg --compare-versions "$(dpkg_version)" 'ge' '1.18.11'; then
+ testequal "startup packages remove
+status installed $PKGNAME 1.0
+remove $PKGNAME 1.0 <none>
+status half-configured $PKGNAME 1.0
+status half-installed $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+startup packages configure
+startup packages purge
+purge $PKGNAME 1.0 <none>
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status not-installed $PKGNAME <none>
+startup packages configure" cut -f 3- -d' ' rootdir/var/log/dpkg.log
+ else
+ testequal "startup packages remove
+status installed $PKGNAME 1.0
+remove $PKGNAME 1.0 <none>
+status half-configured $PKGNAME 1.0
+status half-installed $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+startup packages configure
+startup packages purge
+remove $PKGNAME 1.0 <none>
+purge $PKGNAME 1.0 <none>
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status not-installed $PKGNAME <none>
+startup packages configure" cut -f 3- -d' ' rootdir/var/log/dpkg.log
+ fi
+ testequalor2 "dpkg-query: no packages found matching ${PKGNAME}" "No packages found matching ${PKGNAME}." dpkg -l "$PKGNAME"
+}
+checkpurge
+
+msgtest 'setsid provided is new enough to support' '-w'
+if dpkg-checkbuilddeps -d 'util-linux (>= 2.24.2-1)' /dev/null >/dev/null 2>&1; then
+ msgpass
+else
+ msgskip "$(command dpkg -l util-linux)"
+ exit
+fi
+
+rm -f rootdir/var/log/dpkg.log rootdir/var/log/apt/term.log
+testsuccess runapt command setsid -w "${BUILDDIRECTORY}/apt-get" install -y fdleaks -qq < /dev/null
+checkinstall
+
+rm -f rootdir/var/log/dpkg.log rootdir/var/log/apt/term.log
+testsuccess runapt command setsid -w "${BUILDDIRECTORY}/apt-get" purge -y fdleaks -qq
+checkpurge
+
+touch rootdir/tmp/read_stdin
+
+rm -f rootdir/var/log/dpkg.log rootdir/var/log/apt/term.log
+for i in $(seq 1 10); do echo "$i"; done | testsuccess aptget install -y fdleaks -qq
+checkinstall
+testequal '2' grep -c '^STDIN: ' rootdir/var/log/apt/term.log
+
+rm -f rootdir/var/log/dpkg.log rootdir/var/log/apt/term.log
+yes '' | testsuccess runapt command setsid -w "${BUILDDIRECTORY}/apt-get" purge -y fdleaks -qq
+checkpurge
+testequal '3' grep -c '^STDIN: ' rootdir/var/log/apt/term.log
diff --git a/test/integration/test-package-reinstallation b/test/integration/test-package-reinstallation
new file mode 100755
index 000000000..0b48c0a46
--- /dev/null
+++ b/test/integration/test-package-reinstallation
@@ -0,0 +1,23 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertinstalledpackage 'libc-bin' 'i386' '2.13-8' 'Replaces: libc6'
+insertpackage 'unstable' 'libc-bin' 'i386' '2.13-8' 'Replaces: libc6'
+insertinstalledpackage 'libc6' 'i386' '2.13-8' 'Depends: libc-bin (= 2.13-8)'
+insertpackage 'unstable' 'libc6' 'i386' '2.13-8' 'Depends: libc-bin (= 2.13-8)'
+insertinstalledpackage 'apt' 'i386' '0.8.15' 'Depends: libc6'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+0 upgraded, 0 newly installed, 2 reinstalled, 0 to remove and 0 not upgraded.
+Inst libc-bin [2.13-8] (2.13-8 unstable [i386])
+Conf libc-bin (2.13-8 unstable [i386])
+Inst libc6 [2.13-8] (2.13-8 unstable [i386])
+Conf libc6 (2.13-8 unstable [i386])' aptget install --reinstall libc6 libc-bin -s
diff --git a/test/integration/test-parse-all-archs-into-cache b/test/integration/test-parse-all-archs-into-cache
new file mode 100755
index 000000000..7485431db
--- /dev/null
+++ b/test/integration/test-parse-all-archs-into-cache
@@ -0,0 +1,93 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'bar' 'i386' '1' 'Depends: foo'
+insertpackage 'unstable' 'foo' 'i386' '1' 'Multi-Arch: foreign
+Depends: libfoo1'
+insertpackage 'unstable' 'libfoo1' 'i386' '1' 'Multi-Arch: same'
+insertpackage 'experimental' 'foo' 'i386' '2' 'Multi-Arch: foreign
+Depends: libfoo1 (>= 2)'
+insertpackage 'experimental' 'libfoo1' 'i386' '2' 'Multi-Arch: same'
+
+# note: the system has amd64 not configured!
+insertinstalledpackage 'foo' 'amd64' '1' 'Multi-Arch: foreign
+Depends: libfoo1'
+
+setupaptarchive
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+You might want to run 'apt --fix-broken install' to correct these.
+The following packages have unmet dependencies:
+ foo:amd64 : Depends: libfoo1:amd64 but it is not installable
+E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution)." aptget check -s
+
+insertinstalledpackage 'libfoo1' 'amd64' '1' 'Multi-Arch: same'
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...' aptget check -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libfoo1
+The following packages will be REMOVED:
+ foo:amd64
+The following NEW packages will be installed:
+ foo libfoo1
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv foo:amd64 [1]
+Inst libfoo1 (1 unstable [i386])
+Inst foo (1 unstable [i386])
+Conf libfoo1 (1 unstable [i386])
+Conf foo (1 unstable [i386])' aptget install foo -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Selected version '2' (experimental [i386]) for 'foo'
+Selected version '2' (experimental [i386]) for 'libfoo1' because of 'foo'
+The following additional packages will be installed:
+ libfoo1
+The following packages will be REMOVED:
+ foo:amd64 libfoo1:amd64
+The following NEW packages will be installed:
+ foo libfoo1
+0 upgraded, 2 newly installed, 2 to remove and 0 not upgraded.
+Remv foo:amd64 [1]
+Remv libfoo1:amd64 [1]
+Inst libfoo1 (2 experimental [i386])
+Inst foo (2 experimental [i386])
+Conf libfoo1 (2 experimental [i386])
+Conf foo (2 experimental [i386])" aptget install foo/experimental -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo libfoo1
+The following packages will be REMOVED:
+ foo:amd64
+The following NEW packages will be installed:
+ bar foo libfoo1
+0 upgraded, 3 newly installed, 1 to remove and 0 not upgraded.
+Remv foo:amd64 [1]
+Inst libfoo1 (1 unstable [i386])
+Inst foo (1 unstable [i386])
+Inst bar (1 unstable [i386])
+Conf libfoo1 (1 unstable [i386])
+Conf foo (1 unstable [i386])
+Conf bar (1 unstable [i386])' aptget install bar -s
+
+configarchitecture 'i386' 'amd64'
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1 unstable [i386])
+Conf bar (1 unstable [i386])' aptget install bar -s
diff --git a/test/integration/test-partial-file-support b/test/integration/test-partial-file-support
new file mode 100755
index 000000000..9b5eed1e5
--- /dev/null
+++ b/test/integration/test-partial-file-support
@@ -0,0 +1,157 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+changetowebserver
+
+copysource() {
+ dd if="$1" bs=1 count="$2" of="$3" 2>/dev/null
+ touch -d "$(stat --format '%y' "${TESTFILE}")" "$3"
+}
+
+DOWNLOADLOG='rootdir/tmp/testdownloadfile.log'
+
+testdownloadfile() {
+ rm -f "$DOWNLOADLOG"
+ msgtest "Testing download of file $2 with" "$1 $5"
+ if ! downloadfile "$2" "$3" "$5" > "$DOWNLOADLOG"; then
+ cat >&2 "$DOWNLOADLOG"
+ msgfail
+ else
+ msgpass
+ fi
+ sed -e '/^ <- / s#%20# #g' -e '/^ <- / s#%0a#\n#g' "$DOWNLOADLOG" | grep '^.*-Hash: ' > receivedhashes.log
+ testsuccess test -s receivedhashes.log
+ local HASHES_OK=0
+ local HASHES_BAD=0
+ while read field hash; do
+ local EXPECTED
+ case "$field" in
+ 'MD5Sum-Hash:') EXPECTED="$(md5sum "$TESTFILE" | cut -d' ' -f 1)";;
+ 'SHA1-Hash:') EXPECTED="$(sha1sum "$TESTFILE" | cut -d' ' -f 1)";;
+ 'SHA256-Hash:') EXPECTED="$(sha256sum "$TESTFILE" | cut -d' ' -f 1)";;
+ 'SHA512-Hash:') EXPECTED="$(sha512sum "$TESTFILE" | cut -d' ' -f 1)";;
+ 'Checksum-FileSize-Hash:')
+ #filesize is too weak to check for !=
+ if [ "$4" = '=' ]; then
+ EXPECTED="$(stat -c '%s' "$TESTFILE")"
+ else
+ continue
+ fi
+ ;;
+ *) continue;;
+ esac
+ if [ "$4" = '=' ]; then
+ msgtest 'Test downloaded file for correct' "$field"
+ else
+ msgtest 'Test downloaded file does not match in' "$field"
+ fi
+ if [ "$EXPECTED" "$4" "$hash" ]; then
+ msgpass
+ HASHES_OK=$((HASHES_OK+1));
+ else
+ msgfail "expected: $EXPECTED ; got: $hash"
+ HASHES_BAD=$((HASHES_BAD+1));
+ fi
+ done < receivedhashes.log
+ msgtest 'At least one good hash and no bad ones'
+ if [ $HASHES_OK -eq 0 ] || [ $HASHES_BAD -ne 0 ]; then
+ cat >&2 "$DOWNLOADLOG"
+ msgfail
+ else
+ msgpass
+ fi
+}
+
+TESTFILE='aptarchive/testfile'
+cp -a "${TESTDIR}/framework" "$TESTFILE"
+cp -a "${TESTDIR}/framework" "${TESTFILE}2"
+
+followuprequest() {
+ local DOWN='./downloaded/testfile'
+
+ copysource $TESTFILE 1M $DOWN
+ testdownloadfile 'completely downloaded file' "${1}/testfile" "$DOWN" '='
+ testwebserverlaststatuscode '416' "$DOWNLOADLOG"
+
+ webserverconfig 'aptwebserver::support::content-range' 'false'
+ copysource $TESTFILE 1M $DOWN
+ testdownloadfile 'completely downloaded file' "${1}/testfile" "$DOWN" '=' "SHA256:$(sha256sum "$TESTFILE" | cut -d' ' -f 1)"
+ testwebserverlaststatuscode '416' "$DOWNLOADLOG"
+ webserverconfig 'aptwebserver::support::content-range' 'true'
+
+ copysource $TESTFILE 1M $DOWN
+ copysource "${TESTFILE}2" 20 "${DOWN}2"
+ msgtest 'Testing download of files with' 'completely downloaded file + partial file'
+ testsuccess --nomsg apthelper -o Debug::Acquire::${1%%:*}=1 -o Debug::pkgAcquire::Worker=1 \
+ download-file "$1/testfile" "$DOWN" '' "$1/testfile2" "${DOWN}2"
+ testwebserverlaststatuscode '206' 'rootdir/tmp/testsuccess.output'
+ testsuccess diff -u "$TESTFILE" "${DOWN}"
+ testsuccess diff -u "${DOWN}" "${DOWN}2"
+}
+
+testrun() {
+ webserverconfig 'aptwebserver::support::range' 'true'
+ webserverconfig 'aptwebserver::response-header::Accept-Ranges' 'bytes'
+ local DOWN='./downloaded/testfile'
+
+ copysource $TESTFILE 0 $DOWN
+ testdownloadfile 'no data' "${1}/testfile" "$DOWN" '='
+ testwebserverlaststatuscode '200' "$DOWNLOADLOG"
+
+ copysource $TESTFILE 20 $DOWN
+ testdownloadfile 'valid partial data' "${1}/testfile" "$DOWN" '='
+ testwebserverlaststatuscode '206' "$DOWNLOADLOG"
+
+ copysource /dev/zero 20 $DOWN
+ testdownloadfile 'invalid partial data' "${1}/testfile" "$DOWN" '!='
+ testwebserverlaststatuscode '206' "$DOWNLOADLOG"
+
+ webserverconfig 'aptwebserver::closeOnError' 'false'
+ followuprequest "$1"
+ webserverconfig 'aptwebserver::closeOnError' 'true'
+ followuprequest "$1"
+ webserverconfig 'aptwebserver::closeOnError' 'false'
+
+ copysource /dev/zero 1M $DOWN
+ testdownloadfile 'too-big partial file' "${1}/testfile" "$DOWN" '='
+ testwebserverlaststatuscode '200' "$DOWNLOADLOG"
+
+ copysource /dev/zero 20 $DOWN
+ touch $DOWN
+ testdownloadfile 'old data' "${1}/testfile" "$DOWN" '='
+ testwebserverlaststatuscode '200' "$DOWNLOADLOG"
+
+ if [ "${1%%:*}" = 'https' ] && expr match "$1" "^.*/redirectme$" >/dev/null; then
+ webserverconfig 'aptwebserver::response-header::Accept-Ranges' 'none'
+ else
+ webserverconfig 'aptwebserver::support::range' 'false'
+ fi
+
+ copysource $TESTFILE 20 $DOWN
+ testdownloadfile 'no server support' "${1}/testfile" "$DOWN" '='
+ testwebserverlaststatuscode '200' "$DOWNLOADLOG"
+}
+
+serverconfigs() {
+ msgmsg "${1%%:*}: Test with Content-Length"
+ webserverconfig 'aptwebserver::chunked-transfer-encoding' 'false'
+ testrun "$1"
+ msgmsg "${1%%:*}: Test with Transfer-Encoding: chunked"
+ webserverconfig 'aptwebserver::chunked-transfer-encoding' 'true'
+ testrun "$1"
+}
+
+serverconfigs "http://localhost:${APTHTTPPORT}"
+
+changetohttpswebserver
+
+serverconfigs "https://localhost:${APTHTTPSPORT}"
+
+webserverconfig 'aptwebserver::redirect::replace::/redirectme/' "https://localhost:${APTHTTPSPORT}/"
+serverconfigs "https://localhost:${APTHTTPSPORT}/redirectme"
+serverconfigs "http://localhost:${APTHTTPPORT}/redirectme"
diff --git a/test/integration/test-pdiff-usage b/test/integration/test-pdiff-usage
new file mode 100755
index 000000000..430551fa4
--- /dev/null
+++ b/test/integration/test-pdiff-usage
@@ -0,0 +1,380 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+LOWCOSTEXT='lz4'
+
+buildaptarchive
+setupflataptarchive
+changetowebserver
+
+cat >rootdir/etc/apt/apt.conf.d/contents.conf <<EOF
+Acquire::IndexTargets::deb::Contents {
+ MetaKey "\$(COMPONENT)/Contents-\$(ARCHITECTURE)";
+ ShortDescription "Contents";
+ Description "\$(RELEASE)/\$(COMPONENT) \$(ARCHITECTURE) Contents";
+ MetaKey "\$(COMPONENT)/Contents-\$(ARCHITECTURE)";
+ flatMetaKey "Contents-\$(ARCHITECTURE)";
+ flatDescription "\$(RELEASE) \$(ARCHITECTURE) Contents";
+};
+EOF
+
+PKGFILE="${TESTDIR}/$(echo "$(basename $0)" | sed 's#^test-#Packages-#')"
+echo 'contents for stuff' > aptarchive/Contents-i386
+compressfile aptarchive/Contents-i386
+echo 'hacked' > aptarchive/hacked-i386
+compressfile aptarchive/hacked-i386
+
+wasmergeused() {
+ if echo "$*" | grep -q -- '-o test::cannot-use-pdiff=1'; then
+ find rootdir/var/lib/apt/lists/partial -name '*-patched*' -delete
+ fi
+
+ testsuccess apt update "$@"
+ #apt update "$@" 2>&1 | tee rootdir/tmp/testsuccess.output
+
+ msgtest 'No intermediate patch files' 'still exist'
+ local EDS="$(find rootdir/var/lib/apt/lists -name '*.ed' -o -name '*.ed.*')"
+ if [ -z "$EDS" ]; then
+ msgpass
+ else
+ echo
+ echo "$EDS"
+ msgfail
+ fi
+
+ if echo "$*" | grep -q -- '-o test::cannot-use-pdiff=1'; then
+ msgtest 'Check if pdiff was' 'not used'
+ cp -a rootdir/tmp/testsuccess.output rootdir/tmp/aptupdate.output
+ testsuccess --nomsg grep "diff/Index with Message: Couldn't parse pdiff index" rootdir/tmp/aptupdate.output
+ return;
+ fi
+
+ msgtest 'Check if the right pdiff merger was used'
+ if grep -q '^pkgAcqIndexMergeDiffs::Done(): rred' rootdir/tmp/testsuccess.output; then
+ if echo "$*" | grep -q -- '-o Acquire::PDiffs::Merge=1'; then
+ msgpass
+ else
+ msgfail "Merge shouldn't have been used, but was"
+ fi
+ elif echo "$*" | grep -q -- '-o Acquire::PDiffs::Merge=1'; then
+ msgfail "Merge should have been used, but wasn't"
+ else
+ msgpass
+ fi
+
+ testequal '1' grep -c rred:601 rootdir/tmp/testsuccess.output
+}
+
+testrun() {
+ configcompression '.' 'xz'
+ msgmsg "Testcase: setup the base with: $*"
+ find aptarchive -name 'Packages*' -type f -delete
+ cp "${PKGFILE}" aptarchive/Packages
+ compressfile 'aptarchive/Packages'
+ generatereleasefiles
+ signreleasefiles
+ rm -rf aptarchive/Packages.diff rootdir/var/lib/apt/lists rootdir/var/lib/apt/lists-bak
+ testsuccess aptget update "$@"
+ cp -a rootdir/var/lib/apt/lists rootdir/var/lib/apt/lists-bak
+ testnopackage newstuff
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt oldstuff
+ configcompression '.' 'gz'
+
+ # see if the code deals properly with leftover partial files
+ partialleftovers
+
+ msgmsg "Testcase: apply with one patch: $*"
+ find aptarchive -name 'Packages*' -type f -delete
+ cp "${PKGFILE}-new" aptarchive/Packages
+ compressfile 'aptarchive/Packages'
+ mkdir -p aptarchive/Packages.diff
+ PATCHFILE="aptarchive/Packages.diff/$(date +%Y-%m-%d-%H%M.%S)"
+ diff -e "${PKGFILE}" "${PKGFILE}-new" > "${PATCHFILE}" || true
+ cat "$PATCHFILE" | gzip > "${PATCHFILE}.gz"
+ PATCHINDEX='aptarchive/Packages.diff/Index'
+ echo "SHA256-Current: $(sha256sum "${PKGFILE}-new" | cut -d' ' -f 1) $(stat -c%s "${PKGFILE}-new")
+SHA256-History:
+ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b 33053002 2010-08-18-2013.28
+ $(sha256sum "$PKGFILE" | cut -d' ' -f 1) $(stat -c%s "$PKGFILE") $(basename "$PATCHFILE")
+SHA256-Patches:
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 19722 2010-08-18-2013.28
+ $(sha256sum "$PATCHFILE" | cut -d' ' -f 1) $(stat -c%s "$PATCHFILE") $(basename "$PATCHFILE")
+SHA256-Download:
+ d2a1b33187ed2d248eeae3b1223ea71791ea35f2138a713ed371332a6421f467 197 2010-08-18-2013.28.gz
+ $(sha256sum "${PATCHFILE}.gz" | cut -d' ' -f 1) $(stat -c%s "${PATCHFILE}.gz") $(basename "${PATCHFILE}.gz")" > "$PATCHINDEX"
+
+ generatereleasefiles '+1hour'
+ signreleasefiles
+ find aptarchive -name 'Packages*' -type f -delete
+ wasmergeused "$@"
+ testnopackage oldstuff
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt newstuff
+
+ msgmsg "Testcase: apply with compressed Index and one patch: $*"
+ cp "${PKGFILE}-new" aptarchive/Packages
+ compressfile 'aptarchive/Packages'
+ cat "$PATCHINDEX" | gzip > "${PATCHINDEX}.gz"
+ generatereleasefiles '+1hour'
+ signreleasefiles
+ find aptarchive -name 'Packages*' -type f -delete
+ rm "$PATCHINDEX"
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ wasmergeused "$@"
+ testnopackage oldstuff
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt newstuff
+
+ msgmsg "Testcase: apply with by-hash compressed Index and one patch: $*"
+ local NORMAL="$(readlink -f "./aptarchive/Packages.diff")"
+ local BYHASH="${NORMAL}/by-hash/SHA256"
+ mkdir -p "${BYHASH}"
+ find "${NORMAL}/" -maxdepth 1 -name "Index*" -exec mv '{}' "$BYHASH" \;
+ ln -s "${BYHASH}/Index.gz" "${BYHASH}/$(sha256sum "${BYHASH}/Index.gz" | cut -f1 -d' ')"
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ wasmergeused "$@" -o Acquire::By-Hash=force
+ testnopackage oldstuff
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt newstuff
+
+ msgmsg "Testcase: SHA1-only patches are not used: $*"
+ find aptarchive -name 'Packages*' -type f -delete
+ cp "${PKGFILE}-new" aptarchive/Packages
+ compressfile 'aptarchive/Packages'
+ mkdir -p aptarchive/Packages.diff
+ PATCHFILE="aptarchive/Packages.diff/$(date +%Y-%m-%d-%H%M.%S)"
+ diff -e "${PKGFILE}" "${PKGFILE}-new" > "${PATCHFILE}" || true
+ cat "$PATCHFILE" | gzip > "${PATCHFILE}.gz"
+ PATCHINDEX='aptarchive/Packages.diff/Index'
+ echo "SHA1-Current: $(sha1sum "${PKGFILE}-new" | cut -d' ' -f 1) $(stat -c%s "${PKGFILE}-new")
+SHA1-History:
+ 9f4148e06d7faa37062994ff10d0c842d7017513 33053002 2010-08-18-2013.28
+ $(sha1sum "$PKGFILE" | cut -d' ' -f 1) $(stat -c%s "$PKGFILE") $(basename "$PATCHFILE")
+SHA1-Patches:
+ 7651fc0ac57cd83d41c63195a9342e2db5650257 19722 2010-08-18-2013.28
+ $(sha1sum "$PATCHFILE" | cut -d' ' -f 1) $(stat -c%s "$PATCHFILE") $(basename "$PATCHFILE")
+SHA1-Download:
+ 2365ac0ac57cde3d43c63145e8251a3bd5410213 197 2010-08-18-2013.28.gz
+ $(sha1sum "${PATCHFILE}.gz" | cut -d' ' -f 1) $(stat -c%s "${PATCHFILE}.gz") $(basename "${PATCHFILE}.gz")" > "$PATCHINDEX"
+ generatereleasefiles '+1hour'
+ signreleasefiles
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ wasmergeused "$@" -o test::cannot-use-pdiff=1
+ testnopackage oldstuff
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt newstuff
+
+ msgmsg "Testcase: no download-hashes patches are not used: $*"
+ find aptarchive -name 'Packages*' -type f -delete
+ cp "${PKGFILE}-new" aptarchive/Packages
+ compressfile 'aptarchive/Packages'
+ mkdir -p aptarchive/Packages.diff
+ PATCHFILE="aptarchive/Packages.diff/$(date +%Y-%m-%d-%H%M.%S)"
+ diff -e "${PKGFILE}" "${PKGFILE}-new" > "${PATCHFILE}" || true
+ cat "$PATCHFILE" | gzip > "${PATCHFILE}.gz"
+ PATCHINDEX='aptarchive/Packages.diff/Index'
+ echo "SHA256-Current: $(sha256sum "${PKGFILE}-new" | cut -d' ' -f 1) $(stat -c%s "${PKGFILE}-new")
+SHA256-History:
+ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b 33053002 2010-08-18-2013.28
+ $(sha256sum "$PKGFILE" | cut -d' ' -f 1) $(stat -c%s "$PKGFILE") $(basename "$PATCHFILE")
+SHA256-Patches:
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 19722 2010-08-18-2013.28
+ $(sha256sum "$PATCHFILE" | cut -d' ' -f 1) $(stat -c%s "$PATCHFILE") $(basename "$PATCHFILE")" > "$PATCHINDEX"
+ generatereleasefiles '+1hour'
+ signreleasefiles
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ wasmergeused "$@" -o test::cannot-use-pdiff=1
+ testnopackage oldstuff
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt newstuff
+
+ msgmsg "Testcase: apply with two patches: $*"
+ cp "${PKGFILE}-new" aptarchive/Packages
+ echo '
+Package: futurestuff
+Version: 1.0
+Architecture: i386
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 202
+Filename: pool/futurestuff_1.0_i386.deb
+Size: 202200
+SHA256: b46fd154615edaae5ba33c56a5cc0e7deaef23e2da3e4f129727fd660f28f050
+Description: some cool and shiny future stuff
+ This package will appear in the next^2 mirror update
+Description-md5: d5f89fbbc2ce34c455dfee9b67d82b6b' >> aptarchive/Packages
+
+ compressfile 'aptarchive/Packages'
+ PATCHFILE2="aptarchive/Packages.diff/$(date -d 'now + 1hour' '+%Y-%m-%d-%H%M.%S')"
+ diff -e "${PKGFILE}-new" aptarchive/Packages > "${PATCHFILE2}" || true
+ cat "$PATCHFILE2" | gzip > "${PATCHFILE2}.gz"
+ echo "SHA256-Current: $(sha256sum aptarchive/Packages | cut -d' ' -f 1) $(stat -c%s aptarchive/Packages)
+SHA256-History:
+ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b 33053002 2010-08-18-2013.28
+ $(sha256sum "$PKGFILE" | cut -d' ' -f 1) $(stat -c%s "$PKGFILE") $(basename "$PATCHFILE")
+ $(sha256sum "${PKGFILE}-new" | cut -d' ' -f 1) $(stat -c%s "${PKGFILE}-new") $(basename "${PATCHFILE2}")
+SHA256-Patches:
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 19722 2010-08-18-2013.28
+ $(sha256sum "$PATCHFILE" | cut -d' ' -f 1) $(stat -c%s "$PATCHFILE") $(basename "$PATCHFILE")
+ $(sha256sum "${PATCHFILE2}" | cut -d' ' -f 1) $(stat -c%s "${PATCHFILE2}") $(basename "${PATCHFILE2}")
+SHA256-Download:
+ d2a1b33187ed2d248eeae3b1223ea71791ea35f2138a713ed371332a6421f467 197 2010-08-18-2013.28.gz
+ $(sha256sum "${PATCHFILE}.gz" | cut -d' ' -f 1) $(stat -c%s "${PATCHFILE}.gz") $(basename "${PATCHFILE}.gz")
+ $(sha256sum "${PATCHFILE2}.gz" | cut -d' ' -f 1) $(stat -c%s "${PATCHFILE2}.gz") $(basename "${PATCHFILE2}.gz")" > "$PATCHINDEX"
+
+ generatereleasefiles '+2hour'
+ signreleasefiles
+ cp -a aptarchive/Packages Packages-future
+ find aptarchive -name 'Packages*' -type f -delete
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ wasmergeused "$@"
+ testnopackage oldstuff
+ testsuccessequal "$(cat Packages-future)
+" aptcache show apt newstuff futurestuff
+
+ # we reuse the archive state of the previous test here
+ msgmsg "Testcase: pdiff handling is stopped if transaction fails $*"
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ cp Packages-future aptarchive/Packages
+ rm -f rootdir/var/lib/apt/lists/*_Contents-*
+ webserverconfig 'aptwebserver::overwrite::.*Contents-.*::filename' '/hacked-i386.gz'
+ testfailure apt update "$@"
+ webserverconfig 'aptwebserver::overwrite::.*Contents-.*::filename' '/Contents-i386.gz'
+ cp rootdir/tmp/testfailure.output patchdownload.output
+ testfailure grep 'rred:600' patchdownload.output
+ testnopackage newstuff futurestuff
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt oldstuff
+
+ # we reuse the entire state of the previous test here
+ msgmsg "Testcase: good files from previous fails are picked up from partial: $*"
+ wasmergeused "$@"
+ testfailure grep '^GET /Packages.diff/Index HTTP/1.1' rootdir/tmp/testsuccess.output
+ testnopackage oldstuff
+ testsuccessequal "$(cat Packages-future)
+" aptcache show apt newstuff futurestuff
+
+ # we reuse the archive state of the previous test here
+ msgmsg "Testcase: downloading a patch fails, but successful fallback: $*"
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ cp Packages-future aptarchive/Packages
+ rm "${PATCHFILE}.gz"
+ testsuccess apt update "$@"
+ cp rootdir/tmp/testsuccess.output patchdownload.output
+ testsuccess grep '^Falling back to normal index file acquire' patchdownload.output
+ testnopackage oldstuff
+ testsuccessequal "$(cat Packages-future)
+" aptcache show apt newstuff futurestuff
+
+ msgmsg "Testcase: patch applying fails, but successful fallback: $*"
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ cp "${PKGFILE}-new" aptarchive/Packages
+ compressfile 'aptarchive/Packages'
+ mkdir -p aptarchive/Packages.diff
+ PATCHFILE="aptarchive/Packages.diff/$(date +%Y-%m-%d-%H%M.%S)"
+ diff -e "${PKGFILE}" "${PKGFILE}-new" > "${PATCHFILE}" || true
+ cat "$PATCHFILE" | gzip > "${PATCHFILE}.gz"
+ PATCHINDEX='aptarchive/Packages.diff/Index'
+ echo "SHA256-Current: $(sha256sum "${PKGFILE}-new" | cut -d' ' -f 1) $(stat -c%s "${PKGFILE}-new")
+SHA256-History:
+ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b 33053002 2010-08-18-2013.28
+ $(sha256sum "$PKGFILE" | cut -d' ' -f 1) $(stat -c%s "$PKGFILE") $(basename "$PATCHFILE")
+SHA256-Patches:
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 19722 2010-08-18-2013.28
+ $(sha256sum "$PATCHFILE" | cut -d' ' -f 1) $(stat -c%s "$PATCHFILE") $(basename "$PATCHFILE")
+SHA256-Download:
+ d2a1b33187ed2d248eeae3b1223ea71791ea35f2138a713ed371332a6421f467 197 2010-08-18-2013.28.gz
+ $(sha256sum "${PATCHFILE}.gz" | cut -d' ' -f 1) $(stat -c%s "${PATCHFILE}.gz") $(basename "${PATCHFILE}.gz")" > "$PATCHINDEX"
+ # needs to look like a valid command, otherwise the parser will fail before hashes are checked
+ echo '1d' > "$PATCHFILE"
+ cat "$PATCHFILE" | gzip > "${PATCHFILE}.gz"
+ generatereleasefiles '+1hour'
+ signreleasefiles
+ testsuccess apt update "$@"
+ cp -f rootdir/tmp/testsuccess.output rootdir/tmp/aptupdate.output
+ testsuccess grep 'Hash Sum mismatch' rootdir/tmp/aptupdate.output
+ testnopackage oldstuff
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt newstuff
+
+ msgmsg "Testcase: pdiff patch bigger than index itself: $*"
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ # the general testcode checks for leftovers in partial, but as this file
+ # is never touched in this test as it exits earlier its not a leftover…
+ rm -f rootdir/var/lib/apt/lists/partial/localhost:${APTHTTPPORT}_Packages
+ cp "${PKGFILE}-new" aptarchive/Packages
+ compressfile 'aptarchive/Packages'
+ mkdir -p aptarchive/Packages.diff
+ PATCHFILE="aptarchive/Packages.diff/$(date +%Y-%m-%d-%H%M.%S)"
+ diff -e "${PKGFILE}" "${PKGFILE}-new" > "${PATCHFILE}" || true
+ cat "$PATCHFILE" | gzip > "${PATCHFILE}.gz"
+ PATCHINDEX='aptarchive/Packages.diff/Index'
+ echo "SHA256-Current: $(sha256sum "${PKGFILE}-new" | cut -d' ' -f 1) $(stat -c%s "${PKGFILE}-new")
+SHA256-History:
+ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b 33053002 2010-08-18-2013.28
+ $(sha256sum "$PKGFILE" | cut -d' ' -f 1) $(stat -c%s "$PKGFILE") $(basename "$PATCHFILE")
+SHA256-Patches:
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 19722 2010-08-18-2013.28
+ $(sha256sum "$PATCHFILE" | cut -d' ' -f 1) $(stat -c%s "$PATCHFILE") $(basename "$PATCHFILE")
+SHA256-Download:
+ d2a1b33187ed2d248eeae3b1223ea71791ea35f2138a713ed371332a6421f467 197 2010-08-18-2013.28.gz
+ $(sha256sum "${PATCHFILE}.gz" | cut -d' ' -f 1) $(stat -c%s "${PATCHFILE}.gz")000 $(basename "${PATCHFILE}.gz")" > "$PATCHINDEX"
+ generatereleasefiles '+1hour'
+ signreleasefiles
+ wasmergeused "$@" -o test::cannot-use-pdiff=1
+ testsuccess grep 'bytes (Limit is' rootdir/tmp/aptupdate.output
+ testnopackage oldstuff
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt newstuff
+}
+echo 'Debug::pkgAcquire::Diffs "true";
+Debug::Acquire::Transaction "true";
+Debug::pkgAcquire::Worker "true";
+Debug::Acquire::http "true";
+Debug::pkgAcquire "true";
+Debug::Acquire::rred "true";' > rootdir/etc/apt/apt.conf.d/rreddebug.conf
+
+testcase() {
+ testrun -o Acquire::PDiffs::Merge=0 -o APT::Get::List-Cleanup=1 "$@"
+ testrun -o Acquire::PDiffs::Merge=1 -o APT::Get::List-Cleanup=1 "$@"
+ testrun -o Acquire::PDiffs::Merge=0 -o APT::Get::List-Cleanup=0 "$@"
+ testrun -o Acquire::PDiffs::Merge=1 -o APT::Get::List-Cleanup=0 "$@"
+}
+generatepartialleftovers() {
+ for f in "$@"; do
+ cat "${PKGFILE}" "${PKGFILE}" > "rootdir/var/lib/apt/lists-bak/partial/localhost:${APTHTTPPORT}_${f}"
+ printf '\n\nInvalid\nStanza: yes\n\n' >> "rootdir/var/lib/apt/lists-bak/partial/localhost:${APTHTTPPORT}_${f}"
+ done
+}
+
+partialleftovers() { generatepartialleftovers 'Packages' 'Packages-patched'; }
+aptautotest_apt_update() { aptautotest_aptget_update "$@"; testsuccess test -e "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_Packages"; }
+testcase -o Acquire::IndexTargets::deb::Packages::KeepCompressed=false
+partialleftovers() { generatepartialleftovers "Packages.${LOWCOSTEXT}" "Packages-patched.${LOWCOSTEXT}"; }
+aptautotest_apt_update() { aptautotest_aptget_update "$@"; testsuccess test -e "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_Packages.$LOWCOSTEXT"; }
+testcase -o Acquire::IndexTargets::deb::Packages::KeepCompressed=true
+
+
+partialleftovers() { generatepartialleftovers "redirectme_Packages.${LOWCOSTEXT}" "redirectme_Packages-patched.${LOWCOSTEXT}"; }
+webserverconfig 'aptwebserver::redirect::replace::/redirectme/' "http://0.0.0.0:${APTHTTPPORT}/"
+rewritesourceslist "http://localhost:${APTHTTPPORT}/redirectme"
+aptautotest_apt_update() {
+ aptautotest_aptget_update "$@"
+ testsuccess test -e "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_redirectme_Packages.$LOWCOSTEXT"
+ testempty find rootdir/var/lib/apt/lists -type f \! \( -name lock -o -name '*_redirectme_*' \)
+}
+testcase -o Acquire::IndexTargets::deb::Packages::KeepCompressed=true
diff --git a/test/integration/test-pin-non-existent-package b/test/integration/test-pin-non-existent-package
new file mode 100755
index 000000000..06103fd38
--- /dev/null
+++ b/test/integration/test-pin-non-existent-package
@@ -0,0 +1,75 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'rapt' 'i386' '0.8.15'
+insertpackage 'unstable' 'arch' 'i386' '1.0'
+
+setupaptarchive
+
+testcandidate() {
+ msgtest "Test that the Candidate for $1 is" $2
+ if [ "$(aptcache policy $1 | grep '^ Candidate:')" = " Candidate: $2" ]; then
+ msgpass
+ else
+ echo
+ aptcache policy $1
+ msgfail
+ fi
+}
+
+testcandidate rapt '0.8.15'
+testsuccessequal 'N: Unable to locate package doesntexist' aptcache policy doesntexist
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget dist-upgrade --trivial-only
+
+echo 'Package: rapt
+Pin: release a=unstable
+Pin-Priority: -1' > rootdir/etc/apt/preferences
+
+testcandidate rapt '(none)'
+testsuccessequal 'N: Unable to locate package doesntexist' aptcache policy doesntexist
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget dist-upgrade --trivial-only
+
+echo '
+Package: doesntexist
+Pin: release a=unstable
+Pin-Priority: 1000' >> rootdir/etc/apt/preferences
+
+testcandidate rapt '(none)'
+
+echo '
+Package: rapt
+Pin: release a=unstable
+Pin-Priority: 1000' >> rootdir/etc/apt/preferences
+
+testcandidate rapt '(none)'
+testsuccessequal 'N: Unable to locate package doesntexist' aptcache policy doesntexist
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget dist-upgrade --trivial-only
+
+echo 'Package: arch:amd64
+Pin: release a=unstable
+Pin-Priority: -1' > rootdir/etc/apt/preferences
+
+testcandidate arch '1.0'
+
+echo '
+Package: arch:i386
+Pin: release a=unstable
+Pin-Priority: -1' >> rootdir/etc/apt/preferences
+
+testcandidate arch '(none)'
+
diff --git a/test/integration/test-policy-pinning b/test/integration/test-policy-pinning
new file mode 100755
index 000000000..30238bd87
--- /dev/null
+++ b/test/integration/test-policy-pinning
@@ -0,0 +1,361 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+buildaptarchive
+setupflataptarchive
+
+STATUS=$(readlink -f rootdir/var/lib/dpkg/status)
+APTARCHIVE=$(readlink -f aptarchive)
+
+testequalpolicy() {
+ local SP="$1"
+ local AP="$2"
+ shift 2
+ testsuccessequal "Package files:
+ $(echo "$SP" | awk '{ printf("%3s\n",$0) }') ${STATUS}
+ release a=now
+ $(echo "$AP" | awk '{ printf("%3s\n",$0) }') file:${APTARCHIVE} Packages
+ release c=
+Pinned packages:" aptcache policy "$@"
+}
+
+testglobalpolicy() {
+ aptgetupdate
+
+ testequalpolicy 100 500
+ testequalpolicy 990 500 -t now
+
+ sed -i aptarchive/Release -e 1i"NotAutomatic: yes"
+ aptgetupdate
+
+ testequalpolicy 100 1 -o Test=NotAutomatic
+ testequalpolicy 990 1 -o Test=NotAutomatic -t now
+
+ sed -i aptarchive/Release -e 1i"ButAutomaticUpgrades: yes"
+ aptgetupdate
+
+ testequalpolicy 100 100 -o Test=ButAutomaticUpgrades
+ testequalpolicy 990 100 -o Test=ButAutomaticUpgrades -t now
+
+ sed -i aptarchive/Release -e 's#NotAutomatic: yes#NotAutomatic: no#' -e '/ButAutomaticUpgrades: / d'
+ aptgetupdate
+
+ testequalpolicy 100 500 -o Test=Automatic
+ testequalpolicy 990 500 -o Test=Automatic -t now
+
+ sed -i aptarchive/Release -e '/NotAutomatic: / d' -e '/ButAutomaticUpgrades: / d'
+}
+
+msgmsg 'Test with not signed archive'
+aptgetupdate() {
+ rm -rf rootdir/var/lib/apt
+ testwarning aptget update --allow-insecure-repositories
+}
+testglobalpolicy
+
+msgmsg 'Test with signed but no key in trusted'
+aptgetupdate() {
+ rm -rf rootdir/var/lib/apt
+ signreleasefiles 'Marvin Paranoid'
+ testwarning aptget update --allow-insecure-repositories
+}
+testglobalpolicy
+
+# much the same tests will be executed below in more detail again for this one
+msgmsg 'Test with signed and valid key'
+aptgetupdate() {
+ rm -rf rootdir/var/lib/apt
+ signreleasefiles 'Joe Sixpack'
+ testsuccess aptget update
+}
+testglobalpolicy
+
+msgmsg 'Test with specific packages'
+
+buildsimplenativepackage "coolstuff" "all" "1.0" "stable"
+buildsimplenativepackage "coolstuff" "all" "2.0~bpo1" "backports"
+
+setupaptarchive
+
+testsuccessequal "coolstuff:
+ Installed: (none)
+ Candidate: 2.0~bpo1
+ Version table:
+ 2.0~bpo1 500
+ 500 file:${APTARCHIVE} backports/main all Packages
+ 1.0 500
+ 500 file:${APTARCHIVE} stable/main all Packages" apt policy '^cool.*'
+
+testequalpolicycoolstuff() {
+ local INSTALLED="${1:-(none)}"
+ local CANDIDATE="${2:-(none)}"
+ local AB="$3"
+ local AS="$4"
+ local PB="$5"
+ local IS=""
+ local IB=""
+ local SB=""
+ local SS=""
+ [ "$1" = "2.0~bpo1" ] && IB="***" && SB="
+ 100 $STATUS" || IB=" "
+ [ "$1" = "1.0" ] && IS="***" && SS="
+ 100 $STATUS" || IS=" "
+ local BPO1ARCHIVE=""
+ local BPO2ARCHIVE=""
+ if [ ! "$7" = "2.0~bpo2" ]; then
+ BPO1PIN="$AB"
+ BPO1ARCHIVE=" $(echo "$AB" | awk '{ printf("%3s\n",$0) }') file:${APTARCHIVE} backports/main all Packages"
+ else
+ BPO2ARCHIVE="
+ 2.0~bpo2 $AB
+ $(echo "$AB" | awk '{ printf("%3s\n",$0) }') file:${APTARCHIVE} backports/main all Packages"
+ SB="$(echo "$SB" | tail -n 1)"
+ shift
+ fi
+ shift 6
+ testsuccessequal "coolstuff:
+ Installed: $INSTALLED
+ Candidate: $CANDIDATE
+ Version table:${BPO2ARCHIVE}
+ $IB 2.0~bpo1 $PB
+${BPO1ARCHIVE}$SB
+ $IS 1.0 $AS
+ $(echo "$AS" | awk '{ printf("%3s\n",$0) }') file:${APTARCHIVE} stable/main all Packages$SS" \
+ aptcache policy coolstuff -o Policy=${INSTALLED}-${CANDIDATE}-${AB}-${AS}-${PB} $*
+}
+
+testequalpolicycoolstuff "" "2.0~bpo1" 500 500 500 ""
+testequalpolicycoolstuff "" "1.0" 500 990 500 "" -t stable
+testequalpolicycoolstuff "" "2.0~bpo1" 990 500 990 "" -t backports
+echo "Package: *
+Pin: release n=backports
+Pin-Priority: 200" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "1.0" 200 500 200 "" -o Test=GlobalPin
+testequalpolicycoolstuff "" "1.0" 200 990 200 "" -o Test=GlobalPin -t stable
+testequalpolicycoolstuff "" "2.0~bpo1" 990 500 990 "" -o Test=GlobalPin -t backports
+echo "Package: *
+Pin: release n=backports
+Pin-Priority: 600" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "2.0~bpo1" 600 500 600 "" -o Test=GlobalPin
+testequalpolicycoolstuff "" "1.0" 600 990 600 "" -o Test=GlobalPin -t stable
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 200" > rootdir/etc/apt/preferences
+#FIXME: policy can't differentiate between two sources where one has a package specific pin in place
+# testequalpolicycoolstuff "" "1.0" 500 500 200 "2.0~bpo1" -o Test=PackagePin
+# testequalpolicycoolstuff "" "1.0" 990 500 200 "2.0~bpo1" -o Test=PackagePin -t backports
+testequalpolicycoolstuff "" "1.0" 500 990 200 "2.0~bpo1" -o Test=PackagePin -t stable
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 600" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "2.0~bpo1" 500 500 600 "2.0~bpo1" -o Test=PackagePin
+testequalpolicycoolstuff "" "1.0" 500 990 600 "2.0~bpo1" -o Test=PackagePin -t stable
+testequalpolicycoolstuff "" "2.0~bpo1" 990 500 600 "2.0~bpo1" -o Test=PackagePin -t backports
+
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: -1" > rootdir/etc/apt/preferences
+# testequalpolicycoolstuff "" "1.0" 500 500 -1 "2.0~bpo1" -o Test=PackagePin
+# testequalpolicycoolstuff "" "1.0" 990 500 -1 "2.0~bpo1" -o Test=PackagePin -t backports
+# testequalpolicycoolstuff "" "1.0" 500 990 -1 "2.0~bpo1" -o Test=PackagePin -t stable
+
+rm rootdir/etc/apt/preferences
+sed -i aptarchive/dists/backports/Release -e 1i"NotAutomatic: yes"
+signreleasefiles
+aptgetupdate
+
+testequalpolicycoolstuff "" "1.0" 1 500 1 "" -o Test=NotAutomatic
+testequalpolicycoolstuff "" "1.0" 1 990 1 "" -o Test=NotAutomatic -t stable
+testequalpolicycoolstuff "" "2.0~bpo1" 990 500 990 "" -o Test=NotAutomatic -t backports
+echo "Package: *
+Pin: release n=backports
+Pin-Priority: 200" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "1.0" 200 500 200 "" -o Test=NotAutomatic
+echo "Package: *
+Pin: release n=backports
+Pin-Priority: 600" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "2.0~bpo1" 600 500 600 "" -o Test=NotAutomatic
+testequalpolicycoolstuff "" "1.0" 600 990 600 "" -o Test=NotAutomatic -t stable
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 200" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "1.0" 1 500 200 "2.0~bpo1" -o Test=NotAutomatic
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 600" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "2.0~bpo1" 1 500 600 "2.0~bpo1" -o Test=NotAutomatic
+testequalpolicycoolstuff "" "2.0~bpo1" 990 500 600 "2.0~bpo1" -o Test=NotAutomatic -t backports
+testequalpolicycoolstuff "" "1.0" 1 990 600 "2.0~bpo1" -o Test=NotAutomatic -t stable
+
+rm rootdir/etc/apt/preferences
+sed -i aptarchive/dists/backports/Release -e 1i"ButAutomaticUpgrades: yes"
+signreleasefiles
+aptgetupdate
+
+testequalpolicycoolstuff "" "1.0" 100 500 100 "" -o Test=ButAutomaticUpgrades
+testequalpolicycoolstuff "" "1.0" 100 990 100 "" -o Test=ButAutomaticUpgrades -t stable
+testequalpolicycoolstuff "" "2.0~bpo1" 990 500 990 "" -o Test=ButAutomaticUpgrades -t backports
+echo "Package: *
+Pin: release n=backports
+Pin-Priority: 200" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "1.0" 200 500 200 "" -o Test=ButAutomaticUpgrades
+echo "Package: *
+Pin: release n=backports
+Pin-Priority: 600" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "2.0~bpo1" 600 500 600 "" -o Test=ButAutomaticUpgrades
+testequalpolicycoolstuff "" "1.0" 600 990 600 "" -o Test=ButAutomaticUpgrades -t stable
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 200" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "1.0" 100 500 200 "2.0~bpo1" -o Test=ButAutomaticUpgrades
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 600" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "2.0~bpo1" 100 500 600 "2.0~bpo1" -o Test=ButAutomaticUpgrades
+testequalpolicycoolstuff "" "2.0~bpo1" 990 500 600 "2.0~bpo1" -o Test=ButAutomaticUpgrades -t backports
+testequalpolicycoolstuff "" "1.0" 100 990 600 "2.0~bpo1" -o Test=ButAutomaticUpgrades -t stable
+
+rm rootdir/etc/apt/preferences
+testsuccess aptget install coolstuff -y
+testequalpolicycoolstuff "1.0" "1.0" 100 500 100 "" -o Test=ButAutomaticUpgrades
+testsuccess aptget dist-upgrade -y
+testequalpolicycoolstuff "1.0" "1.0" 100 500 100 "" -o Test=ButAutomaticUpgrades
+testequalpolicycoolstuff "1.0" "1.0" 100 990 100 "" -o Test=ButAutomaticUpgrades -t stable
+testequalpolicycoolstuff "1.0" "2.0~bpo1" 990 500 990 "" -o Test=ButAutomaticUpgrades -t backports
+
+testsuccess aptget install coolstuff -t backports -y
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 100 500 100 "" -o Test=ButAutomaticUpgrades
+testsuccess aptget dist-upgrade -y
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 100 500 100 "" -o Test=ButAutomaticUpgrades
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 100 990 100 "" -o Test=ButAutomaticUpgrades -t stable
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 990 500 990 "" -o Test=ButAutomaticUpgrades -t backports
+
+rm incoming/backports.main.pkglist incoming/backports.main.srclist
+buildsimplenativepackage "coolstuff" "all" "2.0~bpo2" "backports"
+setupaptarchive
+
+sed -i aptarchive/dists/backports/Release -e 1i"NotAutomatic: yes"
+signreleasefiles
+aptgetupdate
+
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 1 500 100 "" "2.0~bpo2" -o Test=NotAutomatic
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 1 990 100 "" "2.0~bpo2" -o Test=NotAutomatic -t stable
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo2" 990 500 100 "" "2.0~bpo2" -o Test=NotAutomatic -t backports
+
+sed -i aptarchive/dists/backports/Release -e 1i"ButAutomaticUpgrades: yes"
+signreleasefiles
+aptgetupdate
+
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo2" 100 500 100 "" "2.0~bpo2" -o Test=ButAutomaticUpgrades
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo2" 100 990 100 "" "2.0~bpo2" -o Test=ButAutomaticUpgrades -t stable
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo2" 990 500 100 "" "2.0~bpo2" -o Test=ButAutomaticUpgrades -t backports
+
+
+tmppath=$(readlink -f .)
+
+# Check 16-bit integers
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 32767
+" > rootdir/etc/apt/preferences
+
+testsuccess aptget install -s coolstuff -o PinPriority=32767
+
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: -32768
+" > rootdir/etc/apt/preferences
+testsuccess aptget install -s coolstuff -o PinPriority=-32768
+
+# Check for 32-bit integers
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 32768
+" > rootdir/etc/apt/preferences
+
+testfailureequal "Reading package lists...
+E: ${tmppath}/rootdir/etc/apt/preferences: Value 32768 is outside the range of valid pin priorities (-32768 to 32767)" \
+ aptget install -s coolstuff -o PinPriority=32768
+
+
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: -32769
+" > rootdir/etc/apt/preferences
+
+testfailureequal "Reading package lists...
+E: ${tmppath}/rootdir/etc/apt/preferences: Value -32769 is outside the range of valid pin priorities (-32768 to 32767)" \
+ aptget install -s coolstuff -o PinPriority=-32769
+
+# Check for 64-bit integers
+
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 2147483648
+" > rootdir/etc/apt/preferences
+
+testfailureequal "Reading package lists...
+E: Cannot convert 2147483648 to integer: out of range
+E: ${tmppath}/rootdir/etc/apt/preferences: Value 2147483648 is outside the range of valid pin priorities (-32768 to 32767)" \
+ aptget install -s coolstuff -o PinPriority=2147483648
+
+# Check that short-max/min is a valid pin
+currentpin() {
+echo "Package: *
+Pin: release n=backports
+Pin-Priority: $1
+" > rootdir/etc/apt/preferences
+testsuccessequal "coolstuff:
+ Installed: 2.0~bpo1
+ Candidate: $2
+ Version table:
+ 2.0~bpo2 $1
+ $1 file:${tmppath}/aptarchive backports/main all Packages
+ *** 2.0~bpo1 100
+ 100 ${tmppath}/rootdir/var/lib/dpkg/status
+ 1.0 500
+ 500 file:${tmppath}/aptarchive stable/main all Packages" apt policy coolstuff
+}
+currentpin '32767' '2.0~bpo2'
+currentpin '-32768' '2.0~bpo1'
+
+# Check for 0
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 0
+" > rootdir/etc/apt/preferences
+
+testfailureequal "Reading package lists...
+E: No priority (or zero) specified for pin" \
+ aptget install -s coolstuff -o PinPriority=0
+
+# Check with comments
+echo "#Package: coolstuff
+#Pin: release n=backports
+#Pin-Priority: 0
+
+# Test
+
+Package: coolstuff
+Pin: release n=backports
+#Pin: release n=unstable
+#Pin-Priority: 999
+Pin-Priority: 999
+#Pin-Priority: 999" > rootdir/etc/apt/preferences
+
+testsuccessequal "coolstuff:
+ Installed: 2.0~bpo1
+ Candidate: 2.0~bpo2
+ Version table:
+ 2.0~bpo2 999
+ 100 file:${tmppath}/aptarchive backports/main all Packages
+ *** 2.0~bpo1 100
+ 100 ${tmppath}/rootdir/var/lib/dpkg/status
+ 1.0 500
+ 500 file:${tmppath}/aptarchive stable/main all Packages" aptcache policy coolstuff
diff --git a/test/integration/test-prefer-higher-priority-providers b/test/integration/test-prefer-higher-priority-providers
new file mode 100755
index 000000000..7c3f32374
--- /dev/null
+++ b/test/integration/test-prefer-higher-priority-providers
@@ -0,0 +1,106 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'native'
+
+insertpackage 'unstable' 'foo' 'all' '1' 'Provides: stuff' 'important'
+insertpackage 'unstable' 'bar' 'all' '1' 'Provides: stuff' 'optional'
+insertpackage 'unstable' 'baz' 'all' '1' 'Provides: stuff' 'extra'
+insertpackage 'unstable' 'awesome' 'all' '1' 'Depends: stuff'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ awesome foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [all])
+Inst awesome (1 unstable [all])
+Conf foo (1 unstable [all])
+Conf awesome (1 unstable [all])' aptget install awesome -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ awesome foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [all])
+Inst awesome (1 unstable [all])
+Conf foo (1 unstable [all])
+Conf awesome (1 unstable [all])' aptget install awesome foo -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'bar' is not installed, so not removed
+Package 'baz' is not installed, so not removed
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ awesome foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [all])
+Inst awesome (1 unstable [all])
+Conf foo (1 unstable [all])
+Conf awesome (1 unstable [all])" aptget install awesome bar- baz- -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'foo' is not installed, so not removed
+The following additional packages will be installed:
+ bar
+The following NEW packages will be installed:
+ awesome bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1 unstable [all])
+Inst awesome (1 unstable [all])
+Conf bar (1 unstable [all])
+Conf awesome (1 unstable [all])" aptget install awesome foo- -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'foo' is not installed, so not removed
+Package 'baz' is not installed, so not removed
+The following additional packages will be installed:
+ bar
+The following NEW packages will be installed:
+ awesome bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1 unstable [all])
+Inst awesome (1 unstable [all])
+Conf bar (1 unstable [all])
+Conf awesome (1 unstable [all])" aptget install awesome foo- baz- -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'foo' is not installed, so not removed
+Package 'bar' is not installed, so not removed
+The following additional packages will be installed:
+ baz
+The following NEW packages will be installed:
+ awesome baz
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst baz (1 unstable [all])
+Inst awesome (1 unstable [all])
+Conf baz (1 unstable [all])
+Conf awesome (1 unstable [all])" aptget install awesome foo- bar- -s
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Package 'foo' is not installed, so not removed
+Package 'bar' is not installed, so not removed
+Package 'baz' is not installed, so not removed
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ awesome : Depends: stuff
+E: Unable to correct problems, you have held broken packages." aptget install awesome foo- bar- baz- -s
diff --git a/test/integration/test-prefer-native-architecture-over-higher-priority b/test/integration/test-prefer-native-architecture-over-higher-priority
new file mode 100755
index 000000000..d21836b85
--- /dev/null
+++ b/test/integration/test-prefer-native-architecture-over-higher-priority
@@ -0,0 +1,25 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'arm64'
+
+insertpackage 'unstable' 'm4' 'amd64' '1' 'Multi-Arch: foreign' 'optional'
+insertpackage 'unstable' 'm4' 'arm64' '1' 'Multi-Arch: foreign' 'standard'
+insertpackage 'unstable' 'autoconf' 'all' '1' 'Depends: m4'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ m4
+The following NEW packages will be installed:
+ autoconf m4
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst m4 (1 unstable [amd64])
+Inst autoconf (1 unstable [all])
+Conf m4 (1 unstable [amd64])
+Conf autoconf (1 unstable [all])' aptget install autoconf -s
diff --git a/test/integration/test-prevent-markinstall-multiarch-same-versionscrew b/test/integration/test-prevent-markinstall-multiarch-same-versionscrew
new file mode 100755
index 000000000..a45c0d55d
--- /dev/null
+++ b/test/integration/test-prevent-markinstall-multiarch-same-versionscrew
@@ -0,0 +1,130 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386' 'armel'
+
+insertpackage 'stable' 'allarchs' 'all' '1'
+insertpackage 'unstable' 'allarchs' 'all' '2'
+
+insertpackage 'stable,installed' 'fine' 'i386,amd64' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'fine' 'amd64,i386' '2' 'Multi-Arch: same'
+insertpackage 'experimental' 'fine' 'amd64,i386' '3' 'Multi-Arch: same'
+
+insertinstalledpackage 'fine-installed' 'i386,amd64' '1' 'Multi-Arch: same'
+insertpackage 'stable' 'fine-installed' 'i386,amd64,armel' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'fine-installed' 'i386,amd64' '2' 'Multi-Arch: same'
+insertpackage 'experimental' 'fine-installed' 'i386,amd64' '3' 'Multi-Arch: same'
+
+insertpackage 'stable,installed' 'out-of-sync-native' 'i386,amd64' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'out-of-sync-native' 'amd64' '2' 'Multi-Arch: same'
+
+insertpackage 'stable,installed' 'out-of-sync-foreign' 'i386,amd64' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'out-of-sync-foreign' 'i386' '2' 'Multi-Arch: same'
+
+insertinstalledpackage 'out-of-sync-gone-native' 'i386,amd64' '1' 'Multi-Arch: same'
+insertpackage 'stable' 'out-of-sync-gone-native' 'i386' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'out-of-sync-gone-native' 'i386' '2' 'Multi-Arch: same'
+
+insertinstalledpackage 'out-of-sync-gone-foreign' 'i386,amd64' '1' 'Multi-Arch: same'
+insertpackage 'stable' 'out-of-sync-gone-foreign' 'amd64' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'out-of-sync-gone-foreign' 'amd64' '2' 'Multi-Arch: same'
+
+insertpackage 'stable' 'libsame2' 'i386' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'libsame2' 'amd64' '2' 'Multi-Arch: same'
+insertpackage 'unstable' 'depender2' 'all' '2' 'Depends: libsame2 (= 2)'
+insertpackage 'stable' 'libsame3' 'i386' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'libsame3' 'i386,amd64' '3' 'Multi-Arch: same'
+insertpackage 'unstable' 'depender3' 'all' '3' 'Depends: libsame3 (= 3)'
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ out-of-sync-gone-foreign:i386 out-of-sync-gone-native
+The following packages have been kept back:
+ out-of-sync-foreign:i386 out-of-sync-native
+The following packages will be upgraded:
+ fine fine:i386 fine-installed fine-installed:i386 out-of-sync-gone-foreign
+ out-of-sync-gone-native:i386
+6 upgraded, 0 newly installed, 2 to remove and 2 not upgraded.
+Remv out-of-sync-gone-foreign:i386 [1]
+Remv out-of-sync-gone-native [1]
+Inst fine [1] (2 unstable [amd64]) [fine:amd64 on fine:i386] [fine:i386 on fine:amd64] [fine:i386 ]
+Inst fine:i386 [1] (2 unstable [i386])
+Inst fine-installed [1] (2 unstable [amd64]) [fine-installed:amd64 on fine-installed:i386] [fine-installed:i386 on fine-installed:amd64] [fine-installed:i386 ]
+Inst fine-installed:i386 [1] (2 unstable [i386])
+Inst out-of-sync-gone-foreign [1] (2 unstable [amd64])
+Inst out-of-sync-gone-native:i386 [1] (2 unstable [i386])
+Conf fine (2 unstable [amd64])
+Conf fine:i386 (2 unstable [i386])
+Conf fine-installed (2 unstable [amd64])
+Conf fine-installed:i386 (2 unstable [i386])
+Conf out-of-sync-gone-foreign (2 unstable [amd64])
+Conf out-of-sync-gone-native:i386 (2 unstable [i386])' aptget dist-upgrade -s #-o Debug::pkgDepCache::Marker=1
+
+echo 'Package: fine:* fine-installed:*
+Pin: release a=experimental
+Pin-Priority: 500' > rootdir/etc/apt/preferences.d/experimental.pref
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ out-of-sync-gone-foreign:i386 out-of-sync-gone-native
+The following packages have been kept back:
+ out-of-sync-foreign:i386 out-of-sync-native
+The following packages will be upgraded:
+ fine fine:i386 fine-installed fine-installed:i386 out-of-sync-gone-foreign
+ out-of-sync-gone-native:i386
+6 upgraded, 0 newly installed, 2 to remove and 2 not upgraded.
+Remv out-of-sync-gone-foreign:i386 [1]
+Remv out-of-sync-gone-native [1]
+Inst fine [1] (3 experimental [amd64]) [fine:amd64 on fine:i386] [fine:i386 on fine:amd64] [fine:i386 ]
+Inst fine:i386 [1] (3 experimental [i386])
+Inst fine-installed [1] (3 experimental [amd64]) [fine-installed:amd64 on fine-installed:i386] [fine-installed:i386 on fine-installed:amd64] [fine-installed:i386 ]
+Inst fine-installed:i386 [1] (3 experimental [i386])
+Inst out-of-sync-gone-foreign [1] (2 unstable [amd64])
+Inst out-of-sync-gone-native:i386 [1] (2 unstable [i386])
+Conf fine (3 experimental [amd64])
+Conf fine:i386 (3 experimental [i386])
+Conf fine-installed (3 experimental [amd64])
+Conf fine-installed:i386 (3 experimental [i386])
+Conf out-of-sync-gone-foreign (2 unstable [amd64])
+Conf out-of-sync-gone-native:i386 (2 unstable [i386])' aptget dist-upgrade -s #-o Debug::pkgDepCache::Marker=1
+
+rm rootdir/var/lib/dpkg/status
+insertinstalledpackage 'libsame2' 'i386' '1' 'Multi-Arch: same'
+insertinstalledpackage 'libsame3' 'i386' '1' 'Multi-Arch: same'
+
+# the error message isn't great, but better than nothing, right?
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ depender2 : Depends: libsame2 (= 2) but it is not going to be installed
+E: Unable to correct problems, you have held broken packages.' aptget install depender2 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libsame3:i386 libsame3
+The following NEW packages will be installed:
+ depender3 libsame3
+The following packages will be upgraded:
+ libsame3:i386
+1 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame3:i386 [1] (3 unstable [i386])
+Inst libsame3 (3 unstable [amd64])
+Inst depender3 (3 unstable [all])
+Conf libsame3:i386 (3 unstable [i386])
+Conf libsame3 (3 unstable [amd64])
+Conf depender3 (3 unstable [all])' aptget install depender3 -s
diff --git a/test/integration/test-provides-gone-with-upgrade b/test/integration/test-provides-gone-with-upgrade
new file mode 100755
index 000000000..5249ea0c9
--- /dev/null
+++ b/test/integration/test-provides-gone-with-upgrade
@@ -0,0 +1,27 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertinstalledpackage 'apt' 'i386' '0.8.14' 'Provides: libapt-pkg4.10'
+insertpackage 'unstable' 'apt' 'i386' '0.8.15' 'Depends: libapt-pkg4.10'
+insertpackage 'unstable' 'libapt-pkg4.10' 'i386' '0.8.15' 'Breaks: apt (<< 0.8.15)
+Replaces: apt (<< 0.8.15)'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ libapt-pkg4.10
+The following packages will be upgraded:
+ apt
+1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst apt [0.8.14] (0.8.15 unstable [i386]) []
+Inst libapt-pkg4.10 (0.8.15 unstable [i386])
+Conf libapt-pkg4.10 (0.8.15 unstable [i386])
+Conf apt (0.8.15 unstable [i386])' aptget dist-upgrade -s
diff --git a/test/integration/test-release-candidate-switching b/test/integration/test-release-candidate-switching
new file mode 100755
index 000000000..d7f1c90f7
--- /dev/null
+++ b/test/integration/test-release-candidate-switching
@@ -0,0 +1,419 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'libc6' 'i386' '2.11.2-7+sid'
+insertpackage 'unstable' 'phonon-backend-xine' 'i386' '4:4.6.0really4.4.2-1+sid' 'Provides: phonon-backend'
+insertpackage 'unstable' 'phonon-backend-xine2' 'i386' '4:4.6.0really4.4.2-1+sid'
+insertpackage 'unstable' 'phonon-backend-xine3' 'i386' '4:4.6.0really4.4.2-1+sid'
+insertpackage 'unstable' 'phonon-backend-xine4' 'i386' '4:4.6.0really4.4.2-1+sid'
+insertpackage 'unstable' 'phonon-backend-null' 'i386' '4:4.20.0+sid' 'Provides: phonon-backend'
+insertpackage 'unstable' 'intermediatepkg' 'all' '1.0'
+
+insertpackage 'unstable' 'amarok-common' 'all' '2.3.1-1+sid'
+insertpackage 'unstable' 'amarok-utils' 'i386' '2.3.1-1+sid'
+insertpackage 'unstable' 'libmtp8' 'i386' '0.3.1+sid'
+insertpackage 'unstable' 'amarok' 'i386' '2.3.1-1+sid' 'Depends: amarok-common (= 2.3.1-1+sid), amarok-utils (= 2.3.1-1+sid), phonon-backend-xine | phonon-backend, libmtp8 (>= 0.3.1), libc6'
+
+insertpackage 'experimental' 'amarok-common' 'all' '2.3.2-2+exp'
+insertpackage 'experimental' 'amarok-utils' 'i386' '2.3.2-2+exp'
+insertpackage 'experimental' 'libmtp8' 'i386' '0.3.3+exp'
+insertpackage 'experimental' 'phonon-backend-xine' 'i386' '5:4.6.0+exp' 'Provides: phonon-backend'
+insertpackage 'experimental' 'phonon-backend-xine2' 'i386' '5:4.6.0+exp' 'Depends: uninstallablepkg
+Provides: phonon-backend-broken'
+insertpackage 'experimental' 'phonon-backend-xine3' 'i386' '5:4.6.0+exp' 'Depends: intermediatepkg (>= 1.5)'
+insertpackage 'experimental' 'phonon-backend-xine4' 'i386' '5:4.6.0+exp' 'Depends: intermediateuninstallablepkg (= 2.0)
+Provides: phonon-backend-broken'
+insertpackage 'experimental' 'intermediatepkg' 'all' '2.0' 'Depends: libc6'
+insertpackage 'experimental' 'intermediateuninstallablepkg' 'all' '2.0' 'Depends: uninstallablepkg'
+insertpackage 'experimental' 'phonon-backend-null' 'i386' '5:4.20.0+exp' 'Provides: phonon-backend'
+insertpackage 'experimental' 'amarok' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), amarok-utils (= 2.3.2-2+exp), phonon-backend-xine | phonon-backend, libmtp8 (>= 0.3.1), libc6'
+
+insertpackage 'experimental2' 'phonon-backend-xine' 'i386' '5:4.00.0+exp' 'Provides: phonon-backend'
+insertpackage 'experimental2' 'amarok-less' 'i386' '2.3.2-2+exp' 'Depends: amarok-common, phonon-backend-xine (>= 5:4.00.0+exp), libmtp8, libc6, amarok-utils'
+insertpackage 'experimental' 'amarok-higher' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-xine (>= 5:4.6.0+exp), libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)'
+
+insertpackage 'experimental' 'amarok-null' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-xine (= 1:1.0-1) | phonon-backend, libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)'
+insertpackage 'experimental' 'amarok-null2' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-null (= 1:1.0-1) | phonon-backend, libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)'
+insertpackage 'experimental' 'amarok-xine' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-xine (= 5:4.6.0+exp) | phonon-backend-null (= 5:4.20.0+exp), libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)'
+insertpackage 'experimental' 'amarok-xine2' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-xine2 (= 5:4.6.0+exp) | phonon-backend-null (= 5:4.20.0+exp), libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)'
+insertpackage 'experimental' 'amarok-xine3' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-xine3 (= 5:4.6.0+exp) | phonon-backend-null (= 5:4.20.0+exp), libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)'
+insertpackage 'experimental' 'amarok-xine4' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-xine4 (= 5:4.6.0+exp) | phonon-backend-null (= 5:4.20.0+exp), libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)'
+insertpackage 'experimental' 'amarok-broken' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-broken | phonon-backend-null (= 5:4.20.0+exp), libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)'
+
+insertpackage 'experimental' 'amarok-recommends' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp)
+Recommends: amarok-utils (= 2.3.2-2+exp), phonon-backend-xine | phonon-backend, libmtp8 (>= 0.3.1), libc6'
+insertpackage 'experimental' 'amarok-recommends2' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp)
+Recommends: amarok-utils (= 2.30.2-2+exp), phonon-backend-xine | phonon-backend, libmtp8 (>= 0.3.1), libc6'
+
+insertpackage 'experimental' 'uninstallablepkg' 'all' '1.0' 'Depends: libmtp8 (>= 10:0.20.1), amarok-utils (= 2.3.2-2+exp)'
+
+setupaptarchive
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ amarok-common (2.3.1-1+sid)
+ amarok-utils (2.3.1-1+sid)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+The following NEW packages will be installed:
+ amarok (2.3.1-1+sid)
+ amarok-common (2.3.1-1+sid)
+ amarok-utils (2.3.1-1+sid)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok --trivial-only -V
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.3+exp)
+ phonon-backend-xine (5:4.6.0+exp)
+The following NEW packages will be installed:
+ amarok (2.3.2-2+exp)
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.3+exp)
+ phonon-backend-xine (5:4.6.0+exp)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok -t experimental --trivial-only -V
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+The following NEW packages will be installed:
+ amarok (2.3.2-2+exp)
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok/experimental --trivial-only -V
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-null'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-null'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-null'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (4:4.20.0+sid)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-null (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (4:4.20.0+sid)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-null/experimental --trivial-only -V
+
+# do not select the same version multiple times
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-null'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+The following NEW packages will be installed:
+ amarok (2.3.2-2+exp)
+ amarok-common (2.3.2-2+exp)
+ amarok-null (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 301 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok/experimental amarok-null/experimental --trivial-only -V
+
+# … but thighten the version if needed
+# in theory, the second line is wrong, but printing the right version is too much of a hassle
+# (we have to check if later in the Changed list is another change and if so use this version
+# instead of the current candidate) - and it wouldn't be (really) useful anyway…
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental2 [i386]) for 'amarok-less'
+Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine' because of 'amarok-less'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-higher'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-higher'
+Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine' because of 'amarok-higher'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-higher'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (5:4.6.0+exp)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-higher (2.3.2-2+exp)
+ amarok-less (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (5:4.6.0+exp)
+0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 301 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-less/experimental2 amarok-higher/experimental --trivial-only -V
+
+# phonon-backend-null can't be used directly, but as it provides it is still fine…
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-null2'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-null2'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-null2'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (4:4.20.0+sid)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-null2 (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (4:4.20.0+sid)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-null2/experimental --trivial-only -V
+
+# if an or-group satisfier is already found, do not set others
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine'
+Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine' because of 'amarok-xine'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (5:4.6.0+exp)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ amarok-xine (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (5:4.6.0+exp)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-xine/experimental --trivial-only -V
+
+# … but proceed testing if the first doesn't work out
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine2'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine2'
+Selected version '5:4.20.0+exp' (experimental [i386]) for 'phonon-backend-null' because of 'amarok-xine2'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine2'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (5:4.20.0+exp)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ amarok-xine2 (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (5:4.20.0+exp)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-xine2/experimental --trivial-only -V
+
+# sometimes, the second level need to be corrected, too
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine3'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine3'
+Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine3' because of 'amarok-xine3'
+Selected version '2.0' (experimental [all]) for 'intermediatepkg' because of 'phonon-backend-xine3'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine3'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ intermediatepkg (2.0)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine3 (5:4.6.0+exp)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ amarok-xine3 (2.3.2-2+exp)
+ intermediatepkg (2.0)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine3 (5:4.6.0+exp)
+0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 301 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-xine3/experimental --trivial-only -V
+
+# … but proceed testing if the first doesn't work out even in second deep
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine4'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine4'
+Selected version '5:4.20.0+exp' (experimental [i386]) for 'phonon-backend-null' because of 'amarok-xine4'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine4'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (5:4.20.0+exp)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ amarok-xine4 (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (5:4.20.0+exp)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-xine4/experimental --trivial-only -V
+
+# providers can be broken, too
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-broken'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-broken'
+Selected version '5:4.20.0+exp' (experimental [i386]) for 'phonon-backend-null' because of 'amarok-broken'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-broken'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (5:4.20.0+exp)
+The following NEW packages will be installed:
+ amarok-broken (2.3.2-2+exp)
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (5:4.20.0+exp)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-broken/experimental --trivial-only -V
+
+# switch the candidate for recommends too if they should be installed
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-recommends'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-recommends'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-recommends'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-recommends (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-recommends/experimental --trivial-only -V -o APT::Install-Recommends=1
+
+# … or not if not
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-recommends'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-recommends'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+Recommended packages:
+ amarok-utils (2.3.1-1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+ | phonon-backend
+ libmtp8 (0.3.1+sid)
+ libc6 (2.11.2-7+sid)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-recommends (2.3.2-2+exp)
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 86.0 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-recommends/experimental --trivial-only -V -o APT::Install-Recommends=0
+
+# but broken recommends are not the end of the world
+# FIXME: the version output for recommend packages is a bit strange… but what would be better?
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-recommends2'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-recommends2'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+Recommended packages:
+ amarok-utils (2.3.1-1+sid)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-recommends2 (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 215 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-recommends2/experimental --trivial-only -V -o APT::Install-Recommends=1
+
+# if one depends doesn't work, we don't need to look deeper…
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '1.0' (experimental [all]) for 'uninstallablepkg'
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ uninstallablepkg : Depends: libmtp8 (>= 10:0.20.1) but it is not going to be installed
+ Depends: amarok-utils (= 2.3.2-2+exp) but 2.3.1-1+sid is to be installed
+E: Unable to correct problems, you have held broken packages." aptget install uninstallablepkg/experimental --trivial-only -V
diff --git a/test/integration/test-releasefile-date-older b/test/integration/test-releasefile-date-older
new file mode 100755
index 000000000..e38ddc3c5
--- /dev/null
+++ b/test/integration/test-releasefile-date-older
@@ -0,0 +1,104 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'wheezy' 'apt' 'all' '0.8.15'
+
+setupaptarchive --no-update
+
+# we don't complain as the server could have just sent a 'Hit' here and this
+# 'downgrade attack' is usually performed by out-of-sync mirrors. Valid-Until
+# catches the 'real' downgrade attacks (expect that it finds stale mirrors).
+# Scaring users with an error here serves hence no point.
+
+msgmsg 'InRelease file is silently rejected if' 'new Date is before old Date'
+rm -rf rootdir/var/lib/apt/lists
+generatereleasefiles 'now' 'now + 7 days'
+signreleasefiles
+testsuccess aptget update
+listcurrentlistsdirectory > listsdir.lst
+redatereleasefiles 'now - 2 days'
+testsuccess aptget update
+testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+
+msgmsg 'Release.gpg file is silently rejected if' 'new Date is before old Date'
+export APT_DONT_SIGN='InRelease'
+rm -rf rootdir/var/lib/apt/lists
+generatereleasefiles 'now' 'now + 7 days'
+signreleasefiles
+testsuccess aptget update
+listcurrentlistsdirectory > listsdir.lst
+redatereleasefiles 'now - 2 days'
+testsuccess aptget update
+testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+unset APT_DONT_SIGN
+
+msgmsg 'Crisscross InRelease/Release.gpg file is silently rejected if' 'new Date is before old Date'
+export APT_DONT_SIGN='Release.gpg'
+rm -rf rootdir/var/lib/apt/lists
+generatereleasefiles 'now' 'now + 7 days'
+signreleasefiles
+testsuccess aptget update
+export APT_DONT_SIGN='InRelease'
+listcurrentlistsdirectory > listsdir.lst
+redatereleasefiles 'now - 2 days'
+testsuccess aptget update
+testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+unset APT_DONT_SIGN
+
+msgmsg 'Crisscross Release.gpg/InRelease file is silently rejected if' 'new Date is before old Date'
+export APT_DONT_SIGN='InRelease'
+rm -rf rootdir/var/lib/apt/lists
+generatereleasefiles 'now' 'now + 7 days'
+signreleasefiles
+find aptarchive -name 'InRelease' -delete
+testsuccess aptget update
+export APT_DONT_SIGN='Release.gpg'
+listcurrentlistsdirectory > listsdir.lst
+redatereleasefiles 'now - 2 days'
+testsuccess aptget update
+testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+unset APT_DONT_SIGN
+
+msgmsg 'Release file has' 'no Date and no Valid-Until field'
+rm -rf rootdir/var/lib/apt/lists
+generatereleasefiles 'now'
+sed -i '/^Date: / d' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testwarning aptget update
+listcurrentlistsdirectory > listsdir.lst
+# have no effect as Date is unknown
+testwarning aptget update -o Acquire::Min-ValidTime=$((3600*24*30))
+testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+testwarning aptget update -o Acquire::Max-ValidTime=1
+testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+sed -i '/^Codename: / a\
+Another-Field: yes' $(find aptarchive/ -name 'Release')
+touch -d 'now + 1 day' $(find aptarchive/ -name 'Release')
+signreleasefiles "${2:-Joe Sixpack}"
+testwarning aptget update
+testsuccess cmp $(find aptarchive/ -name 'InRelease') $(find rootdir/var/lib/apt/ -name '*_InRelease')
+
+msgmsg 'Release file has' 'no Date field, but Valid-Until expired'
+rm -rf rootdir/var/lib/apt/lists
+generatereleasefiles 'now' 'now - 2 days'
+sed -i '/^Date: / d' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testfailure aptget update
+listcurrentlistsdirectory > listsdir.lst
+# have no effect as Date is unknown
+testfailure aptget update -o Acquire::Min-ValidTime=$((3600*24*30))
+testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+testfailure aptget update -o Acquire::Max-ValidTime=1
+testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+
+msgmsg 'Release file has' 'no Date field, but Valid-Until is good'
+rm -rf rootdir/var/lib/apt/lists
+generatereleasefiles 'now' 'now + 2 days'
+sed -i '/^Date: / d' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testwarning aptget update
diff --git a/test/integration/test-releasefile-valid-until b/test/integration/test-releasefile-valid-until
new file mode 100755
index 000000000..b18dde2b6
--- /dev/null
+++ b/test/integration/test-releasefile-valid-until
@@ -0,0 +1,57 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'wheezy' 'apt' 'all' '0.8.15'
+
+getlabelfromsuite() {
+ echo -n 'Testcases'
+}
+
+setupaptarchive --no-update
+
+runtest() {
+ local MSG="$1"
+ msgtest "Release file is $MSG as it has" "$2"
+ rm -rf rootdir/var/lib/apt/lists
+ generatereleasefiles "$3" "$4"
+ signreleasefiles
+ shift 4
+ if [ "$MSG" = 'accepted' ]; then
+ testsuccess --nomsg aptget update "$@"
+ testfailure grep -q 'is expired' rootdir/tmp/testsuccess.output
+ else
+ testfailure --nomsg aptget update "$@"
+ testsuccess grep -q 'is expired' rootdir/tmp/testfailure.output
+ fi
+}
+
+runtest 'accepted' 'no Until' '' ''
+runtest 'accepted' 'no Until and good Max-Valid' '' '' -o Acquire::Max-ValidTime=3600
+runtest 'rejected' 'no Until, but bad Max-Valid' 'now - 2 days' '' -o Acquire::Max-ValidTime=3600
+runtest 'accepted' 'good Until' 'now - 3 days' 'now + 1 day'
+runtest 'rejected' 'bad Until' 'now - 7 days' 'now - 4 days'
+runtest 'rejected' 'bad Until (ignore good Max-Valid)' 'now - 7 days' 'now - 4 days' -o Acquire::Max-ValidTime=1209600
+runtest 'rejected' 'bad Max-Valid (bad Until)' 'now - 7 days' 'now - 4 days' -o Acquire::Max-ValidTime=86400
+runtest 'rejected' 'bad Max-Valid (good Until)' 'now - 7 days' 'now + 4 days' -o Acquire::Max-ValidTime=86400
+runtest 'accepted' 'good labeled Max-Valid' 'now - 7 days' 'now + 4 days' -o Acquire::Max-ValidTime=86400 -o Acquire::Max-ValidTime::Testcases=1209600
+runtest 'rejected' 'bad labeled Max-Valid' 'now - 7 days' 'now + 4 days' -o Acquire::Max-ValidTime=1209600 -o Acquire::Max-ValidTime::Testcases=86400
+runtest 'accepted' 'good Until (good Min-Valid, no Max-Valid)' 'now - 7 days' 'now + 1 days' -o Acquire::Min-ValidTime=1209600
+runtest 'accepted' 'good Min-Valid (bad Until, no Max-Valid)' 'now - 7 days' 'now - 4 days' -o Acquire::Min-ValidTime=1209600
+runtest 'accepted' 'good Min-Valid (bad Until, good Max-Valid) <' 'now - 7 days' 'now - 2 days' -o Acquire::Min-ValidTime=1209600 -o Acquire::Max-ValidTime=2419200
+runtest 'rejected' 'bad Max-Valid (bad Until, good Min-Valid) >' 'now - 7 days' 'now - 2 days' -o Acquire::Max-ValidTime=12096 -o Acquire::Min-ValidTime=2419200
+runtest 'rejected' 'bad Max-Valid (bad Until, bad Min-Valid) <' 'now - 7 days' 'now - 2 days' -o Acquire::Min-ValidTime=12096 -o Acquire::Max-ValidTime=241920
+runtest 'rejected' 'bad Max-Valid (bad Until, bad Min-Valid) >' 'now - 7 days' 'now - 2 days' -o Acquire::Max-ValidTime=12096 -o Acquire::Min-ValidTime=241920
+
+sed -i -e 's#\(deb\(-src\)\?\) #\1 [check-valid-until=no] #' rootdir/etc/apt/sources.list.d/*
+runtest 'accepted' 'bad Until but overridden by sources option' 'now - 7 days' 'now - 4 days'
+
+sed -i -e 's#\(deb\(-src\)\?\) \[check-valid-until=no\] #\1 [valid-until-max=86400] #' rootdir/etc/apt/sources.list.d/*
+runtest 'rejected' 'bad Max-Valid (good Until) via sources option' 'now - 7 days' 'now + 4 days'
+
+sed -i -e 's#\(deb\(-src\)\?\) \[valid-until-max=86400\] #\1 [valid-until-min=1209600] #' rootdir/etc/apt/sources.list.d/*
+runtest 'accepted' 'good Min-Valid (bad Until) via sources option' 'now - 7 days' 'now - 4 days'
diff --git a/test/integration/test-releasefile-verification b/test/integration/test-releasefile-verification
new file mode 100755
index 000000000..36a90f9d5
--- /dev/null
+++ b/test/integration/test-releasefile-verification
@@ -0,0 +1,450 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+export APT_DONT_SIGN='Release.gpg'
+buildaptarchive
+setupflataptarchive
+changetowebserver
+
+prepare() {
+ local DATE="${2:-now}"
+ if [ "$DATE" = 'now' ]; then
+ if [ "$1" = "${PKGFILE}-new" ]; then
+ DATE='now - 1 day'
+ else
+ DATE='now - 7 day'
+ fi
+ fi
+ for release in $(find rootdir/var/lib/apt/lists 2> /dev/null); do
+ touch -d 'now - 1 year' "$release"
+ done
+ aptget clean
+ cp "$1" aptarchive/Packages
+ find aptarchive -name 'Release' -delete
+ compressfile 'aptarchive/Packages' "$DATE"
+ generatereleasefiles "$DATE" 'now + 1 month'
+}
+
+installaptold() {
+ rm -rf rootdir/var/cache/apt/archives
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+Suggested packages:
+ aptitude | synaptic | wajig dpkg-dev apt-doc bzip2 lzma python-apt
+The following NEW packages will be installed:
+ apt
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 5370 kB of additional disk space will be used.
+Get:1 http://localhost:${APTHTTPPORT} apt 0.7.25.3
+Download complete and in download only mode" aptget install apt -dy
+}
+
+installaptnew() {
+ rm -rf rootdir/var/cache/apt/archives
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+Suggested packages:
+ aptitude | synaptic | wajig dpkg-dev apt-doc bzip2 lzma python-apt
+The following NEW packages will be installed:
+ apt
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 5808 kB of additional disk space will be used.
+Get:1 http://localhost:${APTHTTPPORT} apt 0.8.0~pre1
+Download complete and in download only mode" aptget install apt -dy
+}
+
+failaptold() {
+ testfailureequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ aptitude | synaptic | wajig dpkg-dev apt-doc bzip2 lzma python-apt
+The following NEW packages will be installed:
+ apt
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 5370 kB of additional disk space will be used.
+WARNING: The following packages cannot be authenticated!
+ apt
+E: There were unauthenticated packages and -y was used without --allow-unauthenticated' aptget install apt -dy
+}
+
+failaptnew() {
+ testfailureequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ aptitude | synaptic | wajig dpkg-dev apt-doc bzip2 lzma python-apt
+The following NEW packages will be installed:
+ apt
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+After this operation, 5808 kB of additional disk space will be used.
+WARNING: The following packages cannot be authenticated!
+ apt
+E: There were unauthenticated packages and -y was used without --allow-unauthenticated' aptget install apt -dy
+}
+
+# fake our downloadable file
+touch aptarchive/apt.deb
+
+PKGFILE="${TESTDIR}/$(echo "$(basename "$0")" | sed 's#^test-#Packages-#')"
+
+updatewithwarnings() {
+ testwarning aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+ testsuccess grep -E "$1" rootdir/tmp/testwarning.output
+}
+
+runtest() {
+ msgmsg 'Cold archive signed by' 'Joe Sixpack'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack'
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ if [ "$(id -u)" != '0' ]; then
+ msgmsg 'Cold archive signed by' 'Joe Sixpack + unreadable key'
+ rm -rf rootdir/var/lib/apt/lists
+ echo 'foobar' > rootdir/etc/apt/trusted.gpg.d/unreadablekey.gpg
+ chmod 000 rootdir/etc/apt/trusted.gpg.d/unreadablekey.gpg
+ updatewithwarnings '^W: .* is not readable by user'
+ chmod 644 rootdir/etc/apt/trusted.gpg.d/unreadablekey.gpg
+ rm -f rootdir/etc/apt/trusted.gpg.d/unreadablekey.gpg
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+ fi
+
+ msgmsg 'Good warm archive signed by' 'Joe Sixpack'
+ prepare "${PKGFILE}-new"
+ signreleasefiles 'Joe Sixpack'
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt
+ installaptnew
+
+ msgmsg 'Cold archive signed by' 'Rex Expired'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ cp keys/rexexpired.pub rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
+ signreleasefiles 'Rex Expired'
+ updatewithwarnings '^W: .* EXPKEYSIG'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ failaptold
+ rm -f rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
+
+ msgmsg 'Cold archive expired signed by' 'Joe Sixpack'
+ if dpkg --compare-versions "$(aptkey adv --version | head -n 2 | tail -n 1 | cut -d' ' -f 3)" '>=' '2.1' >/dev/null 2>&1; then
+ touch rootdir/etc/apt/apt.conf.d/99gnupg2
+ elif gpg2 --version >/dev/null 2>&1; then
+ echo 'Apt::Key::gpgcommand "gpg2";' > rootdir/etc/apt/apt.conf.d/99gnupg2
+ if ! dpkg --compare-versions "$(aptkey adv --version | head -n 2 | tail -n 1 | cut -d' ' -f 3)" '>=' '2.1' >/dev/null 2>&1; then
+ rm rootdir/etc/apt/apt.conf.d/99gnupg2
+ fi
+ fi
+ if [ -e rootdir/etc/apt/apt.conf.d/99gnupg2 ]; then
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack' 'aptarchive' --faked-system-time "20070924T154812" --default-sig-expire 2016-04-01
+ updatewithwarnings '^W: .* EXPSIG'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ failaptold
+ rm -f rootdir/etc/apt/apt.conf.d/99gnupg2
+ else
+ msgskip 'Not a new enough gpg available providing --fake-system-time'
+ fi
+
+ msgmsg 'Cold archive signed by' 'Joe Sixpack,Marvin Paranoid'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack,Marvin Paranoid'
+ successfulaptgetupdate 'NO_PUBKEY'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ msgmsg 'Cold archive signed by' 'Joe Sixpack,Rex Expired'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack,Rex Expired'
+ cp keys/rexexpired.pub rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
+ successfulaptgetupdate 'EXPKEYSIG'
+ rm -f rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ msgmsg 'Cold archive signed by' 'Marvin Paranoid'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Marvin Paranoid'
+ updatewithwarnings '^W: .* NO_PUBKEY'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ failaptold
+
+ msgmsg 'Bad warm archive signed by' 'Joe Sixpack'
+ prepare "${PKGFILE}-new"
+ signreleasefiles 'Joe Sixpack'
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt
+ installaptnew
+
+ msgmsg 'Cold archive signed by' 'Joe Sixpack'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack'
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ msgmsg 'Good warm archive signed by' 'Marvin Paranoid'
+ prepare "${PKGFILE}-new"
+ signreleasefiles 'Marvin Paranoid'
+ updatewithwarnings '^W: .* NO_PUBKEY'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ msgmsg 'Good warm archive signed by' 'Rex Expired'
+ prepare "${PKGFILE}-new"
+ cp keys/rexexpired.pub rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
+ signreleasefiles 'Rex Expired'
+ updatewithwarnings '^W: .* EXPKEYSIG'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+ rm rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
+
+ msgmsg 'Good warm archive signed by' 'Joe Sixpack'
+ prepare "${PKGFILE}-new"
+ signreleasefiles
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt
+ installaptnew
+
+ msgmsg 'Cold archive signed by good keyring' 'Marvin Paranoid'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Marvin Paranoid'
+ local MARVIN="$(readlink -f keys/marvinparanoid.pub)"
+ sed -i "s#^\(deb\(-src\)\?\) #\1 [signed-by=$MARVIN] #" rootdir/etc/apt/sources.list.d/*
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ msgmsg 'Cold archive signed by bad keyring' 'Joe Sixpack'
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack'
+ updatewithwarnings '^W: .* NO_PUBKEY'
+ sed -i "s#^\(deb\(-src\)\?\) \[signed-by=$MARVIN\] #\1 #" rootdir/etc/apt/sources.list.d/*
+
+ local MARVIN="$(aptkey --keyring $MARVIN finger --with-colons | grep '^fpr' | cut -d':' -f 10)"
+ msgmsg 'Cold archive signed by bad keyid' 'Joe Sixpack'
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack'
+ sed -i "s#^\(deb\(-src\)\?\) #\1 [signed-by=$MARVIN] #" rootdir/etc/apt/sources.list.d/*
+ updatewithwarnings '^W: .* be verified because the public key is not available: .*'
+
+ msgmsg 'Cold archive signed by good keyid' 'Marvin Paranoid'
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Marvin Paranoid'
+ cp keys/marvinparanoid.pub rootdir/etc/apt/trusted.gpg.d/marvinparanoid.gpg
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ msgmsg 'Cold archive signed by good keyid' 'Marvin Paranoid,Joe Sixpack'
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Marvin Paranoid,Joe Sixpack'
+ successfulaptgetupdate 'NoPubKey: GOODSIG'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ local SIXPACK="$(aptkey --keyring keys/joesixpack.pub finger --with-colons | grep '^fpr' | cut -d':' -f 10)"
+ msgmsg 'Cold archive signed by good keyids' 'Joe Sixpack'
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack'
+ sed -i "s#^\(deb\(-src\)\?\) \[signed-by=$MARVIN\] #\1 [signed-by=${SIXPACK},${MARVIN}] #" rootdir/etc/apt/sources.list.d/*
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ msgmsg 'Cold archive signed by good keyids' 'Joe Sixpack'
+ rm -rf rootdir/var/lib/apt/lists
+ sed -i "s#^\(deb\(-src\)\?\) \[signed-by=${SIXPACK},${MARVIN}\] #\1 [signed-by=${MARVIN},${SIXPACK}] #" rootdir/etc/apt/sources.list.d/*
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+ rm -f rootdir/etc/apt/trusted.gpg.d/marvinparanoid.gpg
+ sed -i "s#^\(deb\(-src\)\?\) \[signed-by=${MARVIN},${SIXPACK}\] #\1 #" rootdir/etc/apt/sources.list.d/*
+
+ rm -rf rootdir/var/lib/apt/lists-bak
+ cp -a rootdir/var/lib/apt/lists rootdir/var/lib/apt/lists-bak
+ prepare "${PKGFILE}-new"
+ signreleasefiles 'Joe Sixpack'
+
+ msgmsg 'Warm archive with signed-by' 'Joe Sixpack'
+ sed -i "/^Valid-Until: / a\
+Signed-By: ${SIXPACK}" rootdir/var/lib/apt/lists/*Release
+ touch -d 'now - 1 year' rootdir/var/lib/apt/lists/*Release
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt
+ installaptnew
+
+ msgmsg 'Warm archive with signed-by' 'Marvin Paranoid'
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ sed -i "/^Valid-Until: / a\
+Signed-By: ${MARVIN}" rootdir/var/lib/apt/lists/*Release
+ touch -d 'now - 1 year' rootdir/var/lib/apt/lists/*Release
+ updatewithwarnings 'W: .* public key is not available: GOODSIG'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ msgmsg 'Warm archive with outdated signed-by' 'Marvin Paranoid'
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ sed -i "/^Valid-Until: / a\
+Valid-Until: $(date -u -d "now - 2min" '+%a, %d %b %Y %H:%M:%S %Z') \\
+Signed-By: ${MARVIN}" rootdir/var/lib/apt/lists/*Release
+ touch -d 'now - 1 year' rootdir/var/lib/apt/lists/*Release
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt
+ installaptnew
+
+ msgmsg 'Warm archive with two signed-bys' 'Joe Sixpack'
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ sed -i "/^Valid-Until: / a\
+Signed-By: ${MARVIN} ${MARVIN}, \\
+ ${SIXPACK}" rootdir/var/lib/apt/lists/*Release
+ touch -d 'now - 1 year' rootdir/var/lib/apt/lists/*Release
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt
+ installaptnew
+}
+
+runtest2() {
+ msgmsg 'Cold archive signed by' 'Joe Sixpack'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack'
+ successfulaptgetupdate
+
+ # New .deb but now an unsigned archive. For example MITM to circumvent
+ # package verification.
+ msgmsg 'Warm archive signed by' 'nobody'
+ prepare "${PKGFILE}-new"
+ find aptarchive/ \( -name InRelease -o -name Release.gpg \) -delete
+ updatewithwarnings 'W: .* no longer signed.'
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt
+ failaptnew
+
+ # Unsigned archive from the beginning must also be detected.
+ msgmsg 'Cold archive signed by' 'nobody'
+ rm -rf rootdir/var/lib/apt/lists
+ updatewithwarnings 'W: .* is not signed.'
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt
+ failaptnew
+}
+
+runtest3() {
+ echo "APT::Hashes::$APT_TESTS_DIGEST_ALGO::$1 \"yes\";" > rootdir/etc/apt/apt.conf.d/truststate
+ msgmsg "Running base test with $1 digest"
+ runtest2
+
+ for DELETEFILE in 'InRelease' 'Release.gpg'; do
+ export APT_DONT_SIGN="$DELETEFILE"
+ msgmsg "Running test with deletion of $DELETEFILE and $1 digest"
+ runtest
+ export APT_DONT_SIGN='Release.gpg'
+ done
+}
+
+# disable some protection by default and ensure we still do the verification
+# correctly
+cat > rootdir/etc/apt/apt.conf.d/weaken-security <<EOF
+Acquire::AllowInsecureRepositories "1";
+Acquire::AllowDowngradeToInsecureRepositories "1";
+EOF
+# the hash marked as configurable in our gpgv method
+export APT_TESTS_DIGEST_ALGO='SHA224'
+
+successfulaptgetupdate() {
+ testsuccess aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+ if [ -n "$1" ]; then
+ cp rootdir/tmp/testsuccess.output aptupdate.output
+ testsuccess grep "$1" aptupdate.output
+ fi
+}
+runtest3 'Trusted'
+
+successfulaptgetupdate() {
+ testwarning aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+ if [ -n "$1" ]; then
+ testsuccess grep "$1" rootdir/tmp/testwarning.output
+ fi
+ testsuccess grep 'uses weak digest algorithm' rootdir/tmp/testwarning.output
+}
+runtest3 'Weak'
+
+msgmsg "Running test with apt-untrusted digest"
+echo "APT::Hashes::$APT_TESTS_DIGEST_ALGO::Untrusted \"yes\";" > rootdir/etc/apt/apt.conf.d/truststate
+runfailure() {
+ for DELETEFILE in 'InRelease' 'Release.gpg'; do
+ export APT_DONT_SIGN="$DELETEFILE"
+ msgmsg 'Cold archive signed by' 'Joe Sixpack'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack'
+ testfailure aptget update --no-allow-insecure-repositories -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+ testsuccess grep 'The following signatures were invalid' rootdir/tmp/testfailure.output
+ testnopackage 'apt'
+ testwarning aptget update --allow-insecure-repositories -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+ failaptold
+ rm -rf rootdir/var/lib/apt/lists
+ sed -i 's#^deb\(-src\)\? #deb\1 [allow-insecure=yes] #' rootdir/etc/apt/sources.list.d/*
+ testwarning aptget update --no-allow-insecure-repositories -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+ failaptold
+ sed -i 's#^deb\(-src\)\? \[allow-insecure=yes\] #deb\1 #' rootdir/etc/apt/sources.list.d/*
+
+ msgmsg 'Cold archive signed by' 'Marvin Paranoid'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Marvin Paranoid'
+ testfailure aptget update --no-allow-insecure-repositories -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+ testnopackage 'apt'
+ updatewithwarnings '^W: .* NO_PUBKEY'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ failaptold
+ export APT_DONT_SIGN='Release.gpg'
+ done
+}
+runfailure
+
+msgmsg "Running test with gpgv-untrusted digest"
+export APT_TESTS_DIGEST_ALGO='MD5'
+runfailure
diff --git a/test/integration/test-releasefile-verification-noflat b/test/integration/test-releasefile-verification-noflat
new file mode 100755
index 000000000..3953c6492
--- /dev/null
+++ b/test/integration/test-releasefile-verification-noflat
@@ -0,0 +1,25 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+export APT_DONT_SIGN='Release.gpg'
+insertpackage 'unstable' 'foo' 'i386' '1.0'
+setupaptarchive "now" "now + 1 year"
+changetowebserver
+
+SIXPACK="$(aptkey --keyring keys/joesixpack.pub finger | grep 'Key fingerprint' | cut -d'=' -f 2 | tr -d ' ')"
+
+testsuccess aptget update
+
+msgmsg 'Warm archive with signed-by' 'Joe Sixpack'
+sed -i "/^Valid-Until: / a\
+Signed-By: ${SIXPACK}" rootdir/var/lib/apt/lists/*Release
+touch -d 'now - 1 year' rootdir/var/lib/apt/lists/*Release
+testsuccessequal "Get:1 http://localhost:${APTHTTPPORT} unstable InRelease [$(stat -c '%s' 'aptarchive/dists/unstable/InRelease') B]
+Reading package lists..." aptget update
+testsuccess aptcache show foo
diff --git a/test/integration/test-resolve-by-keep-new-recommends b/test/integration/test-resolve-by-keep-new-recommends
new file mode 100755
index 000000000..3591ed84d
--- /dev/null
+++ b/test/integration/test-resolve-by-keep-new-recommends
@@ -0,0 +1,21 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertinstalledpackage 'foo' 'i386' '1.0'
+insertpackage 'unstable' 'foo' 'i386' '2.0' 'Recommends: bar'
+
+setupaptarchive
+
+UPGRADE_KEEP="Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ foo
+0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded."
+testsuccessequal "$UPGRADE_KEEP" aptget upgrade -s
+
diff --git a/test/integration/test-security-no-remote-status b/test/integration/test-security-no-remote-status
new file mode 100755
index 000000000..7db979e09
--- /dev/null
+++ b/test/integration/test-security-no-remote-status
@@ -0,0 +1,30 @@
+#!/bin/sh
+#
+# Test that packages from remote sources cannot set the Status field.
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+TMPDIR=$(readlink -f .)
+
+insertpackage 'unstable' 'pretends-installed' 'all' '1' 'Status: install ok installed'
+insertinstalledpackage 'really-installed' 'all' '1'
+setupaptarchive
+
+testequal "pretends-installed:
+ Installed: (none)
+ Candidate: 1
+ Version table:
+ 1 500
+ 500 file:${TMPDIR}/aptarchive unstable/main all Packages" aptcache policy pretends-installed
+
+testequal "really-installed:
+ Installed: 1
+ Candidate: 1
+ Version table:
+ *** 1 100
+ 100 ${TMPDIR}/rootdir/var/lib/dpkg/status" aptcache policy really-installed
diff --git a/test/integration/test-signed-by-option b/test/integration/test-signed-by-option
new file mode 100755
index 000000000..4ab2e28bb
--- /dev/null
+++ b/test/integration/test-signed-by-option
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+msgtest "Check that a repository with signed-by and two components works"
+echo 'deb [signed-by=CDE5618B8805FD6E202CE9C2D73C39E56580B386] https://people.debian.org/~jak/debian/ stable main contrib # Äffchen' > rootdir/etc/apt/sources.list
+
+testsuccess --nomsg aptcache policy
diff --git a/test/integration/test-sourceslist-arch-plusminus-options b/test/integration/test-sourceslist-arch-plusminus-options
new file mode 100755
index 000000000..fdf33cc8c
--- /dev/null
+++ b/test/integration/test-sourceslist-arch-plusminus-options
@@ -0,0 +1,94 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+testbinaries() {
+ msgtest 'Test acquired archs for' "$1"
+ shift
+ rm -f gotarchs.list
+ aptget update --print-uris | grep -o '/binary-[a-z0-9-]\+/Packages' | sort > gotarchs.list
+ while [ -n "$1" ]; do
+ echo "/binary-${1}/Packages"
+ shift
+ done | sort | checkdiff - gotarchs.list && msgpass || msgfail
+}
+
+echo 'deb http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'default & native' 'amd64' 'all'
+configarchitecture 'amd64' 'i386'
+testbinaries 'default & native + foreign' 'amd64' 'i386' 'all'
+configarchitecture 'amd64' 'i386' 'armel' 'armhf' 'mips' 'mipsel'
+testbinaries 'default & native + many foreigns' 'amd64' 'i386' 'armel' 'armhf' 'mips' 'mipsel' 'all'
+
+echo 'deb [arch=amd64] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch=native' 'amd64' 'all'
+
+echo 'deb [arch=mips] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch=foreign' 'mips' 'all'
+
+echo 'deb [arch=kfreebsd-armel] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch=unknown' 'kfreebsd-armel' 'all'
+
+echo 'deb [arch=amd64,i386] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch=native,foreign' 'amd64' 'i386' 'all'
+
+echo 'deb [arch=mips,armhf] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch=foreign,foreign' 'mips' 'armhf' 'all'
+
+echo 'deb [arch=kfreebsd-armel,hurd-powerpc,mipsel,armel] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch=unknown,unknown,foreign,foreign' 'kfreebsd-armel' 'hurd-powerpc' 'mipsel' 'armel' 'all'
+
+echo 'deb [arch+=amd64] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch+=native' 'amd64' 'i386' 'armel' 'armhf' 'mips' 'mipsel' 'all'
+
+echo 'deb [arch+=mips] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch+=foreign' 'amd64' 'i386' 'armel' 'armhf' 'mips' 'mipsel' 'all'
+
+echo 'deb [arch+=mips,armhf,i386] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch+=foreign,foreign,foreign' 'amd64' 'i386' 'armel' 'armhf' 'mips' 'mipsel' 'all'
+
+echo 'deb [arch+=hurd-powerpc] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch+=unknown' 'amd64' 'i386' 'armel' 'armhf' 'mips' 'mipsel' 'hurd-powerpc' 'all'
+
+echo 'deb [arch+=mips,hurd-powerpc,i386] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch+=foreign,unknown,foreign' 'amd64' 'i386' 'armel' 'armhf' 'mips' 'mipsel' 'hurd-powerpc' 'all'
+
+echo 'deb [arch-=amd64] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch-=native' 'i386' 'armel' 'armhf' 'mips' 'mipsel' 'all'
+
+echo 'deb [arch-=mips] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch-=foreign' 'amd64' 'i386' 'armel' 'armhf' 'mipsel' 'all'
+
+echo 'deb [arch-=mips,armhf,i386] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch-=foreign,foreign,foreign' 'amd64' 'armel' 'mipsel' 'all'
+
+echo 'deb [arch-=hurd-powerpc] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch-=unknown' 'amd64' 'i386' 'armel' 'armhf' 'mips' 'mipsel' 'all'
+
+echo 'deb [arch-=mips,hurd-powerpc,i386] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch-=foreign,unknown,foreign' 'amd64' 'armel' 'armhf' 'mipsel' 'all'
+
+echo 'deb [arch=mips,i386 arch-=mips] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'subtract from a arch-set' 'i386' 'all'
+
+echo 'deb [arch=mips,i386 arch-=mips] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'useless subtract from a arch-set' 'i386' 'all'
+
+echo 'deb [arch=mips,i386 arch+=armhf] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'addition to a arch-set' 'i386' 'mips' 'armhf' 'all'
+
+echo 'deb [arch=mips,i386 arch+=mips] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'useless addition to a arch-set' 'i386' 'mips' 'all'
+
+echo 'deb [arch=i386 arch-=all] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'substract all from arch-set' 'i386'
+
+echo 'deb [arch=i386 arch+=all] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'useless addition of all' 'i386' 'all'
+
+echo 'deb [arch=all] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'explicit all' 'all'
diff --git a/test/integration/test-sourceslist-lang-plusminus-options b/test/integration/test-sourceslist-lang-plusminus-options
new file mode 100755
index 000000000..abdb64793
--- /dev/null
+++ b/test/integration/test-sourceslist-lang-plusminus-options
@@ -0,0 +1,88 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+testlangs() {
+ msgtest 'Test acquired languages for' "$1"
+ local LANGS="$2"
+ shift 2
+ rm -f gotlangs.list
+ aptget indextargets --no-release-info 'Identifier: Translations' "$@" --format '$(LANGUAGE)' | sort -u > gotlangs.list
+ if [ -z "$LANGS" ]; then
+ echo -n | tr ',' '\n' | sort | checkdiff - gotlangs.list && msgpass || msgfail
+ else
+ echo -n "$LANGS" | tr ',' '\n' | sort | checkdiff - gotlangs.list && msgpass || msgfail
+ fi
+}
+echo 'deb http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'default' 'en'
+
+echo 'Acquire::Languages "environment,en";' > rootdir/etc/apt/apt.conf.d/langs.conf
+testlangs 'default config' 'en'
+
+echo 'Acquire::Languages "en,en,en";' > rootdir/etc/apt/apt.conf.d/langs.conf
+testlangs 'duplicated config' 'en'
+
+echo 'Acquire::Languages "none";' > rootdir/etc/apt/apt.conf.d/langs.conf
+testlangs 'none config' ''
+
+echo 'Acquire::Languages "en,none,de,de_DE";' > rootdir/etc/apt/apt.conf.d/langs.conf
+testlangs 'english + german config' 'en,de,de_DE'
+
+echo 'deb [lang=pt] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang=pt' 'pt'
+
+echo 'deb [lang=en] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang=en' 'en'
+
+echo 'deb [lang=de_DE] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang=de_DE' 'de_DE'
+
+echo 'deb [lang=none] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang=none' ''
+testequal 'amd64
+all' aptget indextargets --no-release-info 'Identifier: Packages' --format '$(ARCHITECTURE)'
+
+echo 'deb [lang+=pt] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang+=pt' 'en,de,de_DE,pt'
+
+echo 'deb [lang+=en] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang+=en' 'en,de,de_DE'
+
+echo 'deb [lang+=de_DE] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang+=de_DE' 'en,de,de_DE'
+
+echo 'deb [lang-=pt] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang-=pt' 'en,de,de_DE'
+
+echo 'deb [lang-=en] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang-=en' 'de,de_DE'
+
+echo 'deb [lang-=de_DE] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang-=de_DE' 'en,de'
+
+echo 'deb http://example.org/debian stable rocks
+deb http://example.org/debian stable solid' > rootdir/etc/apt/sources.list
+testlangs 'english + german config multicomponent' 'en,de,de_DE'
+
+echo 'deb http://example.org/debian stable rocks
+deb [lang=pt] http://example.org/debian stable solid' > rootdir/etc/apt/sources.list
+testlangs 'multicomponent one lang= combined' 'en,de,de_DE,pt'
+testlangs 'multicomponent one lang= rocks' 'en,de,de_DE' 'Component: rocks'
+testlangs 'multicomponent one lang= solid' 'pt' 'Component: solid'
+
+echo 'deb [lang=pt] http://example.org/debian stable rocks
+deb [lang=de] http://example.org/debian stable solid' > rootdir/etc/apt/sources.list
+testlangs 'multicomponent different lang= combined' 'de,pt'
+testlangs 'multicomponent different lang= rocks' 'pt' 'Component: rocks'
+testlangs 'multicomponent different lang= solid' 'de' 'Component: solid'
+
+echo 'deb [lang+=pt] http://example.org/debian stable rocks
+deb [lang-=de] http://example.org/debian stable solid' > rootdir/etc/apt/sources.list
+testlangs 'multicomponent different lang+-= combined' 'en,de,de_DE,pt'
+testlangs 'multicomponent different lang+-= rocks' 'en,de,de_DE,pt' 'Component: rocks'
+testlangs 'multicomponent different lang+-= solid' 'en,de_DE' 'Component: solid'
diff --git a/test/integration/test-sourceslist-target-plusminus-options b/test/integration/test-sourceslist-target-plusminus-options
new file mode 100755
index 000000000..e4ce8e282
--- /dev/null
+++ b/test/integration/test-sourceslist-target-plusminus-options
@@ -0,0 +1,124 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+testtargets() {
+ msgtest 'Test acquired targets for' "$1"
+ shift
+ while [ -n "$1" ]; do
+ echo "$1"
+ shift
+ done | sort -u > expectedtargets.lst
+ aptget indextargets --no-release-info --format='$(CREATED_BY)' | sort -u > gottargets.lst
+ testfileequal --nomsg ./expectedtargets.lst "$(cat ./gottargets.lst)"
+}
+
+echo 'deb http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'default' 'Packages' 'Translations'
+
+msgmsg 'Contents as a default target'
+cat > rootdir/etc/apt/apt.conf.d/content-target.conf <<EOF
+Acquire::IndexTargets::deb::Contents {
+ MetaKey "\$(COMPONENT)/Contents-\$(ARCHITECTURE)";
+ ShortDescription "Contents";
+ Description "\$(RELEASE)/\$(COMPONENT) \$(ARCHITECTURE) Contents";
+};
+Acquire::IndexTargets::deb::Contents2 {
+ MetaKey "Contents-\$(ARCHITECTURE)";
+ ShortDescription "Contents2";
+ Description "\$(RELEASE) \$(ARCHITECTURE) Contents2";
+ Fallback-Of "Contents";
+ Identifier "Contents";
+};
+EOF
+
+echo 'deb http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'default + Contents' 'Packages' 'Translations' 'Contents' 'Contents2'
+
+echo 'deb [target=Packages] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'force Packages target' 'Packages'
+
+echo 'deb [target=Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'force Contents target' 'Contents'
+
+echo 'deb [target=Translations,Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'force two targets' 'Contents' 'Translations'
+
+echo 'deb [target+=Translations,Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'add existing' 'Packages' 'Contents' 'Translations' 'Contents2'
+
+echo 'deb [target+=AppStream] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'add non-existing' 'Packages' 'Contents' 'Translations' 'Contents2'
+
+echo 'deb [target-=Translations,Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'remove existing' 'Packages' 'Contents2'
+
+echo 'deb [target-=AppStream] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'remove non-existing' 'Packages' 'Contents' 'Translations' 'Contents2'
+
+echo 'deb [AppStream=yes] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'activate non-existing' 'Packages' 'Contents' 'Translations' 'Contents2'
+
+echo 'deb [AppStream=no] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'deactivate non-existing' 'Packages' 'Contents' 'Translations' 'Contents2'
+
+echo 'deb [Contents=yes] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'activate existing' 'Packages' 'Contents' 'Contents2' 'Translations'
+
+echo 'deb [Contents=no] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'deactivate existing' 'Packages' 'Translations'
+
+echo 'deb [target=Packages Contents=yes] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'explicit + activate' 'Packages' 'Contents' 'Contents2'
+
+echo 'deb [Contents=yes,target+=Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'duplications are okay' 'Packages' 'Translations' 'Contents' 'Contents2'
+
+msgmsg 'Contents NOT as a default target (but Contents2)'
+echo 'Acquire::IndexTargets::deb::Contents::DefaultEnabled "no";' > rootdir/etc/apt/apt.conf.d/content-target-notdefault.conf
+
+echo 'deb http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'default + Contents' 'Packages' 'Translations' 'Contents2'
+
+echo 'deb [target=Packages] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'force Packages target' 'Packages'
+
+echo 'deb [target=Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'force Contents target' 'Contents'
+
+echo 'deb [target=Translations,Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'force two targets' 'Contents' 'Translations'
+
+echo 'deb [target+=Translations,Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'add existing' 'Packages' 'Contents' 'Translations' 'Contents2'
+
+echo 'deb [target+=AppStream] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'add non-existing' 'Packages' 'Translations' 'Contents2'
+
+echo 'deb [target-=Translations,Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'remove existing' 'Packages' 'Contents2'
+
+echo 'deb [target-=AppStream] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'remove non-existing' 'Packages' 'Translations' 'Contents2'
+
+echo 'deb [AppStream=yes] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'activate non-existing' 'Packages' 'Translations' 'Contents2'
+
+echo 'deb [AppStream=no] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'deactivate non-existing' 'Packages' 'Translations' 'Contents2'
+
+echo 'deb [Contents=yes] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'activate existing' 'Packages' 'Contents' 'Contents2' 'Translations'
+
+echo 'deb [Contents=no] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'deactivate existing' 'Packages' 'Translations'
+
+echo 'deb [target=Packages Contents=yes] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'explicit + activate' 'Packages' 'Contents' 'Contents2'
+
+echo 'deb [Contents=yes,target+=Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'duplications are okay' 'Packages' 'Translations' 'Contents' 'Contents2'
diff --git a/test/integration/test-sourceslist-trusted-options b/test/integration/test-sourceslist-trusted-options
new file mode 100755
index 000000000..1eee3b09a
--- /dev/null
+++ b/test/integration/test-sourceslist-trusted-options
@@ -0,0 +1,218 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'foo' 'amd64' '1' 'stable'
+buildsimplenativepackage 'foo' 'amd64' '2' 'testing'
+
+setupaptarchive --no-update
+
+APTARCHIVE=$(readlink -f ./aptarchive)
+
+everythingsucceeds() {
+ testsuccessequal 'Listing...
+foo/testing 2 amd64
+foo/stable 1 amd64
+' apt list foo -a
+
+ cd downloaded
+ rm -f foo_1_amd64.deb foo_2_amd64.deb
+ testsuccess aptget download foo "$@"
+ testsuccess test -s foo_1_amd64.deb -o -s foo_2_amd64.deb
+
+ rm -f foo_1.dsc foo_2.dsc
+ testsuccess aptget source foo --dsc-only "$@"
+ testsuccess test -s foo_1.dsc -o -s foo_2.dsc
+ cd - >/dev/null
+}
+
+everythingfails() {
+ testsuccessequal 'Listing...
+foo/testing 2 amd64
+foo/stable 1 amd64
+' apt list foo -a
+
+ local WARNING='WARNING: The following packages cannot be authenticated!
+ foo
+E: Some packages could not be authenticated'
+
+ cd downloaded
+ rm -f foo_1_amd64.deb foo_2_amd64.deb
+ testfailure aptget download foo "$@"
+ testequal "$WARNING" tail -n 3 ../rootdir/tmp/testfailure.output
+ testfailure test -s foo_1_amd64.deb -o -s foo_2_amd64.deb
+
+ rm -f foo_1.dsc foo_2.dsc
+ testfailure aptget source foo --dsc-only "$@"
+ testequal "$WARNING" tail -n 3 ../rootdir/tmp/testfailure.output
+ testfailure test -s foo_1.dsc -o -s foo_2.dsc
+ cd - >/dev/null
+}
+
+cp -a rootdir/etc/apt/sources.list.d/ rootdir/etc/apt/sources.list.d.bak/
+echo 'Debug::Acquire::Transaction "true";
+Debug::pkgAcquire::Worker "true";' > rootdir/etc/apt/apt.conf.d/00debugging
+
+aptgetupdate() {
+ rm -rf rootdir/var/lib/apt/lists
+ # note that insecure with trusted=yes are allowed
+ # as the trusted=yes indicates that security is provided by
+ # something above the understanding of apt
+ ${1:-testsuccess} aptget update --no-allow-insecure-repositories
+}
+
+insecureaptgetupdate() {
+ rm -rf rootdir/var/lib/apt/lists
+ testfailure aptget update --no-allow-insecure-repositories
+ rm -rf rootdir/var/lib/apt/lists
+ testwarning aptget update --allow-insecure-repositories
+}
+
+msgmsg 'Test without trusted option and good sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+aptgetupdate
+everythingsucceeds
+everythingsucceeds -t stable
+everythingsucceeds -t testing
+
+msgmsg 'Test with trusted=yes option and good sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=yes] #' rootdir/etc/apt/sources.list.d/*
+aptgetupdate
+everythingsucceeds
+everythingsucceeds -t stable
+everythingsucceeds -t testing
+
+msgmsg 'Test with trusted=no option and good sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=no] #' rootdir/etc/apt/sources.list.d/*
+# we want the warnings on the actions, but for 'update' everything is fine
+aptgetupdate
+everythingfails
+everythingfails -t stable
+everythingfails -t testing
+
+find aptarchive/dists/stable \( -name 'InRelease' -o -name 'Release.gpg' \) -delete
+
+msgmsg 'Test without trusted option and good and unsigned sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+insecureaptgetupdate
+everythingsucceeds
+everythingfails -t stable
+everythingsucceeds -t testing
+
+msgmsg 'Test with trusted=yes option and good and unsigned sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=yes] #' rootdir/etc/apt/sources.list.d/*
+aptgetupdate
+everythingsucceeds
+everythingsucceeds -t stable
+everythingsucceeds -t testing
+
+msgmsg 'Test with trusted=no option and good and unsigned sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=no] #' rootdir/etc/apt/sources.list.d/*
+insecureaptgetupdate
+everythingfails
+everythingfails -t stable
+everythingfails -t testing
+
+signreleasefiles 'Marvin Paranoid' 'aptarchive/dists/stable'
+
+msgmsg 'Test without trusted option and good and unknown sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+insecureaptgetupdate
+everythingsucceeds
+everythingfails -t stable
+everythingsucceeds -t testing
+
+msgmsg 'Test with trusted=yes option and good and unknown sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=yes] #' rootdir/etc/apt/sources.list.d/*
+aptgetupdate 'testwarning'
+everythingsucceeds
+everythingsucceeds -t stable
+everythingsucceeds -t testing
+
+msgmsg 'Test with trusted=no option and good and unknown sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=no] #' rootdir/etc/apt/sources.list.d/*
+insecureaptgetupdate
+everythingfails
+everythingfails -t stable
+everythingfails -t testing
+
+signreleasefiles 'Rex Expired' 'aptarchive/dists/stable'
+cp -a keys/rexexpired.pub rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
+
+msgmsg 'Test without trusted option and good and expired sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+insecureaptgetupdate
+everythingsucceeds
+everythingfails -t stable
+everythingsucceeds -t testing
+
+msgmsg 'Test with trusted=yes option and good and expired sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=yes] #' rootdir/etc/apt/sources.list.d/*
+aptgetupdate 'testwarning'
+everythingsucceeds
+everythingsucceeds -t stable
+everythingsucceeds -t testing
+
+msgmsg 'Test with trusted=no option and good and expired sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=no] #' rootdir/etc/apt/sources.list.d/*
+insecureaptgetupdate
+everythingfails
+everythingfails -t stable
+everythingfails -t testing
+
+# same as the one further above, but this time testing is unsigned
+find aptarchive/ \( -name 'InRelease' -o -name 'Release.gpg' \) -delete
+signreleasefiles 'Joe Sixpack' 'aptarchive/dists/stable'
+
+msgmsg 'Test without trusted option and unsigned and good sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+insecureaptgetupdate
+everythingfails
+everythingsucceeds -t stable
+everythingfails -t testing
+
+msgmsg 'Test with trusted=yes option and unsigned and good sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=yes] #' rootdir/etc/apt/sources.list.d/*
+aptgetupdate
+everythingsucceeds
+everythingsucceeds -t stable
+everythingsucceeds -t testing
+
+msgmsg 'Test with trusted=no option and unsigned and good sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=no] #' rootdir/etc/apt/sources.list.d/*
+insecureaptgetupdate
+everythingfails
+everythingfails -t stable
+everythingfails -t testing
+
+msgmsg 'Test conflicting trusted options are refused'
+testsource() {
+ echo "$@" > rootdir/etc/apt/sources.list.d/example.list
+ testfailuremsg 'E: Conflicting values set for option Trusted regarding source http://example.org/bad/ unstable
+E: The list of sources could not be read.' aptget update --print-uris
+}
+for VAL in 'yes' 'no'; do
+ testsource "deb http://example.org/bad unstable main
+deb [trusted=${VAL}] http://example.org/bad unstable non-free"
+ testsource "deb [trusted=${VAL}] http://example.org/bad unstable main
+deb http://example.org/bad unstable non-free"
+done
+testsource 'deb [trusted=yes] http://example.org/bad unstable main
+deb [trusted=no] http://example.org/bad unstable non-free'
+testsource 'deb [trusted=no] http://example.org/bad unstable main
+deb [trusted=yes] http://example.org/bad unstable non-free'
diff --git a/test/integration/test-specific-architecture-dependencies b/test/integration/test-specific-architecture-dependencies
new file mode 100755
index 000000000..447e407e5
--- /dev/null
+++ b/test/integration/test-specific-architecture-dependencies
@@ -0,0 +1,324 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertpackage 'unstable' 'libc6' 'amd64,i386' '1' 'Multi-Arch: same'
+insertinstalledpackage 'libold' 'amd64,i386' '1' 'Multi-Arch: same'
+insertinstalledpackage 'provider' 'amd64' '1' 'Provides: foo'
+
+insertpackage 'unstable' 'pre-depender' 'all' '1' 'Pre-Depends: libc6:i386'
+insertpackage 'unstable' 'depender' 'all' '1' 'Depends: libc6:i386'
+insertpackage 'unstable' 'depender-x32' 'i386,amd64' '1' 'Depends: libc6:i386'
+insertpackage 'unstable' 'depender-x64' 'i386,amd64' '1' 'Depends: libc6:amd64'
+
+insertpackage 'unstable' 'breaker' 'all' '1' 'Breaks: libold (<< 2)'
+insertpackage 'unstable' 'breaker-x32' 'i386,amd64' '1' 'Breaks: libold:i386 (<< 2)'
+insertpackage 'unstable' 'breaker-x64' 'i386,amd64' '1' 'Breaks: libold:amd64 (<< 2)'
+# conflicts with no effect
+insertpackage 'unstable' 'oldconflictor' 'all' '1' 'Conflicts: libold (<< 0)'
+insertpackage 'unstable' 'oldconflictor-x32' 'amd64' '1' 'Conflicts: libold:i386 (<< 0)'
+insertpackage 'unstable' 'oldconflictor-x64' 'i386' '1' 'Conflicts: libold:amd64 (<< 0)'
+
+insertpackage 'unstable' 'foo-depender' 'i386,amd64' '1' 'Depends: foo'
+insertpackage 'unstable' 'foo-native-depender' 'amd64' '1' 'Depends: foo:amd64'
+insertpackage 'unstable' 'foo-foreign-depender' 'i386' '1' 'Depends: foo:amd64'
+
+insertpackage 'unstable' 'foo-conflictor' 'i386,amd64' '1' 'Conflicts: foo'
+insertpackage 'unstable' 'foo-foreign-conflictor' 'i386' '1' 'Conflicts: foo:amd64'
+insertpackage 'unstable' 'foo-no-conflictor' 'i386' '1' 'Conflicts: foo:i386'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libc6:i386
+The following NEW packages will be installed:
+ libc6:i386 pre-depender
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6:i386 (1 unstable [i386])
+Conf libc6:i386 (1 unstable [i386])
+Inst pre-depender (1 unstable [all])
+Conf pre-depender (1 unstable [all])' aptget install pre-depender -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libc6:i386
+The following NEW packages will be installed:
+ depender libc6:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6:i386 (1 unstable [i386])
+Inst depender (1 unstable [all])
+Conf libc6:i386 (1 unstable [i386])
+Conf depender (1 unstable [all])' aptget install depender -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libc6:i386
+The following NEW packages will be installed:
+ depender-x32:i386 libc6:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6:i386 (1 unstable [i386])
+Inst depender-x32:i386 (1 unstable [i386])
+Conf libc6:i386 (1 unstable [i386])
+Conf depender-x32:i386 (1 unstable [i386])' aptget install depender-x32:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libc6:i386
+The following NEW packages will be installed:
+ depender-x32 libc6:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6:i386 (1 unstable [i386])
+Inst depender-x32 (1 unstable [amd64])
+Conf libc6:i386 (1 unstable [i386])
+Conf depender-x32 (1 unstable [amd64])' aptget install depender-x32:amd64 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libc6
+The following NEW packages will be installed:
+ depender-x64 libc6
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6 (1 unstable [amd64])
+Inst depender-x64 (1 unstable [amd64])
+Conf libc6 (1 unstable [amd64])
+Conf depender-x64 (1 unstable [amd64])' aptget install depender-x64:amd64 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libc6
+The following NEW packages will be installed:
+ depender-x64:i386 libc6
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6 (1 unstable [amd64])
+Inst depender-x64:i386 (1 unstable [i386])
+Conf libc6 (1 unstable [amd64])
+Conf depender-x64:i386 (1 unstable [i386])' aptget install depender-x64:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ libold:i386 libold
+The following NEW packages will be installed:
+ breaker
+0 upgraded, 1 newly installed, 2 to remove and 0 not upgraded.
+Remv libold:i386 [1]
+Remv libold [1]
+Inst breaker (1 unstable [all])
+Conf breaker (1 unstable [all])' aptget install breaker -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ libold:i386
+The following NEW packages will be installed:
+ breaker-x32
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv libold:i386 [1]
+Inst breaker-x32 (1 unstable [amd64])
+Conf breaker-x32 (1 unstable [amd64])' aptget install breaker-x32:amd64 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ libold:i386
+The following NEW packages will be installed:
+ breaker-x32:i386
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv libold:i386 [1]
+Inst breaker-x32:i386 (1 unstable [i386])
+Conf breaker-x32:i386 (1 unstable [i386])' aptget install breaker-x32:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ libold
+The following NEW packages will be installed:
+ breaker-x64
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv libold [1]
+Inst breaker-x64 (1 unstable [amd64])
+Conf breaker-x64 (1 unstable [amd64])' aptget install breaker-x64:amd64 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ libold
+The following NEW packages will be installed:
+ breaker-x64:i386
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv libold [1]
+Inst breaker-x64:i386 (1 unstable [i386])
+Conf breaker-x64:i386 (1 unstable [i386])' aptget install breaker-x64:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ oldconflictor
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst oldconflictor (1 unstable [all])
+Conf oldconflictor (1 unstable [all])' aptget install oldconflictor -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ oldconflictor-x32
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst oldconflictor-x32 (1 unstable [amd64])
+Conf oldconflictor-x32 (1 unstable [amd64])' aptget install oldconflictor-x32 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ oldconflictor-x64:i386
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst oldconflictor-x64:i386 (1 unstable [i386])
+Conf oldconflictor-x64:i386 (1 unstable [i386])' aptget install oldconflictor-x64 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-depender
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo-depender (1 unstable [amd64])
+Conf foo-depender (1 unstable [amd64])' aptget install foo-depender -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ foo-depender:i386 : Depends: foo:i386 but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget install foo-depender:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-native-depender
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo-native-depender (1 unstable [amd64])
+Conf foo-native-depender (1 unstable [amd64])' aptget install foo-native-depender -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-foreign-depender:i386
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo-foreign-depender:i386 (1 unstable [i386])
+Conf foo-foreign-depender:i386 (1 unstable [i386])' aptget install foo-foreign-depender:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ provider
+The following NEW packages will be installed:
+ foo-conflictor
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv provider [1]
+Inst foo-conflictor (1 unstable [amd64])
+Conf foo-conflictor (1 unstable [amd64])' aptget install foo-conflictor -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ provider
+The following NEW packages will be installed:
+ foo-conflictor:i386
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv provider [1]
+Inst foo-conflictor:i386 (1 unstable [i386])
+Conf foo-conflictor:i386 (1 unstable [i386])' aptget install foo-conflictor:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ provider
+The following NEW packages will be installed:
+ foo-foreign-conflictor:i386
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv provider [1]
+Inst foo-foreign-conflictor:i386 (1 unstable [i386])
+Conf foo-foreign-conflictor:i386 (1 unstable [i386])' aptget install foo-foreign-conflictor:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-no-conflictor:i386
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo-no-conflictor:i386 (1 unstable [i386])
+Conf foo-no-conflictor:i386 (1 unstable [i386])' aptget install foo-no-conflictor:i386 -s
+
+msgmsg 'switch to single architecture'
+configarchitecture 'amd64'
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libc6
+The following NEW packages will be installed:
+ depender-x64 libc6
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6 (1 unstable [amd64])
+Inst depender-x64 (1 unstable [amd64])
+Conf libc6 (1 unstable [amd64])
+Conf depender-x64 (1 unstable [amd64])' aptget install depender-x64 -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+E: Unable to locate package depender-x64:i386' aptget install depender-x64:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-native-depender
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo-native-depender (1 unstable [amd64])
+Conf foo-native-depender (1 unstable [amd64])' aptget install foo-native-depender -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ libold:i386
+The following NEW packages will be installed:
+ breaker-x32
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv libold:i386 [1]
+Inst breaker-x32 (1 unstable [amd64])
+Conf breaker-x32 (1 unstable [amd64])' aptget install breaker-x32:amd64 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ libold
+The following NEW packages will be installed:
+ breaker-x64
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv libold [1]
+Inst breaker-x64 (1 unstable [amd64])
+Conf breaker-x64 (1 unstable [amd64])' aptget install breaker-x64:amd64 -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ depender-x32 : Depends: libc6:i386 but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget install depender-x32 -s
diff --git a/test/integration/test-srcrecord b/test/integration/test-srcrecord
new file mode 100755
index 000000000..34de2be72
--- /dev/null
+++ b/test/integration/test-srcrecord
@@ -0,0 +1,35 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+cat > aptarchive/Sources <<EOF
+Package: space-before-comma
+Binary: space-before-comma1 , space-before-comma2
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+
+Package: broken-field
+Binary:, broken-field2
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+
+Package: broken-field-b
+Binary: , broken-field-b2
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+EOF
+
+setupaptarchive --no-update
+
+testsuccess aptget update
+testsuccess aptcache showsrc space-before-comma1
+testsuccess aptcache showsrc broken-field2
+testsuccess aptcache showsrc broken-field-b2
diff --git a/test/integration/test-suggest-installed-multiarch-silbing b/test/integration/test-suggest-installed-multiarch-silbing
new file mode 100755
index 000000000..49182178e
--- /dev/null
+++ b/test/integration/test-suggest-installed-multiarch-silbing
@@ -0,0 +1,79 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386' 'armel'
+
+insertinstalledpackage 'foo' 'i386' '1'
+insertpackage 'unstable' 'foo' 'amd64,i386' '1'
+
+insertpackage 'unstable,installed' 'foo2' 'i386' '1'
+
+insertinstalledpackage 'foo3' 'amd64' '1'
+insertpackage 'unstable' 'foo3' 'amd64,i386' '1'
+
+insertinstalledpackage 'samefoo' 'i386,amd64' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'samefoo' 'amd64,i386,armel' '1' 'Multi-Arch: same'
+
+insertinstalledpackage 'samefoo2' 'i386' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'samefoo2' 'amd64,i386,armel' '1' 'Multi-Arch: same'
+
+insertinstalledpackage 'mozplugger' 'i386' '1' 'Depends: iceweasel | fireweasel'
+insertinstalledpackage 'fireweasel' 'i386' '1'
+insertpackage 'unstable' 'mozplugger' 'i386,amd64' '1' 'Depends: iceweasel | fireweasel'
+
+setupaptarchive
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'foo' is not installed, so not removed. Did you mean 'foo:i386'?
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove foo -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ foo2:i386
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv foo2:i386 [1]" aptget remove foo2 -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ foo3
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv foo3 [1]" aptget remove foo3 -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'foo3:i386' is not installed, so not removed. Did you mean 'foo3'?
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove foo3:i386 -s
+
+testequalor2 "Reading package lists...
+Building dependency tree...
+Package 'samefoo:armel' is not installed, so not removed. Did you mean 'samefoo'?
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." "Reading package lists...
+Building dependency tree...
+Package 'samefoo:armel' is not installed, so not removed. Did you mean 'samefoo:i386'?
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove samefoo:armel -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'samefoo2' is not installed, so not removed. Did you mean 'samefoo2:i386'?
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove samefoo2 -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'samefoo2:armel' is not installed, so not removed. Did you mean 'samefoo2:i386'?
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove samefoo2:armel -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'iceweasel' is not installed, so not removed
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove iceweasel -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'fireweasel' is not installed, so not removed. Did you mean 'fireweasel:i386'?
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove fireweasel:amd64 -s
diff --git a/test/integration/test-ubuntu-bug-1078697-missing-source-hashes b/test/integration/test-ubuntu-bug-1078697-missing-source-hashes
new file mode 100755
index 000000000..0b9103f53
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-1078697-missing-source-hashes
@@ -0,0 +1,38 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+confighashes 'MD5' 'SHA1' 'SHA256' 'SHA512'
+
+msgtest 'Test apt-ftparchive source with missing hashes in .dsc'
+
+touch aptarchive/foo_1.0.tar.gz
+cat > aptarchive/foo_1.0.dsc << EOF
+Format: 3.0 (native)
+Source: foo
+Binary: foo
+Architecture: all
+Version: 1.0
+Package-List:
+ foo deb admin extra
+Files:
+ d41d8cd98f00b204e9800998ecf8427e 0 foo_1.0.tar.gz
+EOF
+
+# check for the SHA hashes
+testsuccess aptftparchive sources aptarchive/
+cp rootdir/tmp/testsuccess.output aptarchive/Sources
+testsuccess grep Checksums-Sha512 aptarchive/Sources
+
+for hash in sha512sum sha256sum sha1sum; do
+ for f in foo_1.0.tar.gz foo_1.0.dsc; do
+ SUM=$($hash aptarchive/$f | cut -d' ' -f1)
+ NEEDLE="$SUM $(stat -c%s aptarchive/$f) $f"
+ testsuccess test -n "$SUM"
+ msgtest "Test $hash hash matches for $f"
+ testsuccess --nomsg grep "$NEEDLE" aptarchive/Sources
+ done
+done
diff --git a/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum b/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum
new file mode 100755
index 000000000..2636c3140
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum
@@ -0,0 +1,452 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+cat > aptarchive/Sources <<EOF
+Package: pkg-md5-ok
+Binary: pkg-md5-ok
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Files:
+ 9604ba9427a280db542279d9ed78400b 3 pkg-md5-ok_1.0.dsc
+ db5570bf61464b46e2bde31ed61a7dc6 3 pkg-md5-ok_1.0.tar.gz
+
+Package: pkg-sha1-ok
+Binary: pkg-sha1-ok
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Files:
+ 324f464e6151a92cf57b26ef95dcfcf2059a8c44 3 pkg-sha1-ok_1.0.dsc
+ 680254bad1d7ca0d65ec46aaa315d363abf6a50a 3 pkg-sha1-ok_1.0.tar.gz
+
+Package: pkg-sha256-ok
+Binary: pkg-sha256-ok
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Files:
+ 9604ba9427a280db542279d9ed78400b 3 pkg-sha256-ok_1.0.dsc
+ db5570bf61464b46e2bde31ed61a7dc6 3 pkg-sha256-ok_1.0.tar.gz
+Checksums-Sha1:
+ 324f464e6151a92cf57b26ef95dcfcf2059a8c44 3 pkg-sha256-ok_1.0.dsc
+ 680254bad1d7ca0d65ec46aaa315d363abf6a50a 3 pkg-sha256-ok_1.0.tar.gz
+Checksums-Sha256:
+ 943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a 3 pkg-sha256-ok_1.0.dsc
+ 90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb 3 pkg-sha256-ok_1.0.tar.gz
+
+Package: pkg-size-bad
+Binary: pkg-size-bad
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Checksums-Sha256:
+ 943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a 2 pkg-size-bad_1.0.dsc
+ 90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb 4 pkg-size-bad_1.0.tar.gz
+
+Package: pkg-sha256-bad
+Binary: pkg-sha256-bad
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Files:
+ 9604ba9427a280db542279d9ed78400b 3 pkg-sha256-bad_1.0.dsc
+ db5570bf61464b46e2bde31ed61a7dc6 3 pkg-sha256-bad_1.0.tar.gz
+Checksums-Sha1:
+ 324f464e6151a92cf57b26ef95dcfcf2059a8c44 3 pkg-sha256-bad_1.0.dsc
+ 680254bad1d7ca0d65ec46aaa315d363abf6a50a 3 pkg-sha256-bad_1.0.tar.gz
+Checksums-Sha256:
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3 pkg-sha256-bad_1.0.dsc
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 3 pkg-sha256-bad_1.0.tar.gz
+
+Package: pkg-md5-bad
+Binary: pkg-md5-bad
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Files:
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3 pkg-md5-bad_1.0.dsc
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 3 pkg-md5-bad_1.0.tar.gz
+
+Package: pkg-no-md5
+Binary: pkg-no-md5
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Checksums-Sha1:
+ 324f464e6151a92cf57b26ef95dcfcf2059a8c44 3 pkg-no-md5_1.0.dsc
+ 680254bad1d7ca0d65ec46aaa315d363abf6a50a 3 pkg-no-md5_1.0.tar.gz
+Checksums-Sha256:
+ 943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a 3 pkg-no-md5_1.0.dsc
+ 90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb 3 pkg-no-md5_1.0.tar.gz
+
+Package: pkg-mixed-ok
+Binary: pkg-mixed-ok
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Checksums-Sha1:
+ 680254bad1d7ca0d65ec46aaa315d363abf6a50a 3 pkg-mixed-ok_1.0.tar.gz
+Checksums-Sha256:
+ 943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a 3 pkg-mixed-ok_1.0.dsc
+
+Package: pkg-mixed-sha1-bad
+Binary: pkg-mixed-sha1-bad
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Checksums-Sha1:
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3 pkg-mixed-sha1-bad_1.0.dsc
+Checksums-Sha256:
+ 90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb 3 pkg-mixed-sha1-bad_1.0.tar.gz
+
+Package: pkg-mixed-sha2-bad
+Binary: pkg-mixed-sha2-bad
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Checksums-Sha1:
+ 324f464e6151a92cf57b26ef95dcfcf2059a8c44 3 pkg-mixed-sha2-bad_1.0.dsc
+Checksums-Sha256:
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 3 pkg-mixed-sha2-bad_1.0.tar.gz
+
+Package: pkg-md5-disagree
+Binary: pkg-md5-disagree
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Files:
+ 9604ba9427a280db542279d9ed78400b 3 pkg-md5-disagree_1.0.dsc
+ db5570bf61464b46e2bde31ed61a7dc6 3 pkg-md5-disagree_1.0.tar.gz
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3 pkg-md5-disagree_1.0.dsc
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 3 pkg-md5-disagree_1.0.tar.gz
+
+Package: pkg-md5-agree
+Binary: pkg-md5-agree
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Files:
+ 9604ba9427a280db542279d9ed78400b 3 pkg-md5-agree_1.0.dsc
+ db5570bf61464b46e2bde31ed61a7dc6 3 pkg-md5-agree_1.0.tar.gz
+ db5570bf61464b46e2bde31ed61a7dc6 3 pkg-md5-agree_1.0.tar.gz
+ 9604ba9427a280db542279d9ed78400b 3 pkg-md5-agree_1.0.dsc
+
+Package: pkg-sha256-disagree
+Binary: pkg-sha256-disagree
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Files:
+ 9604ba9427a280db542279d9ed78400b 3 pkg-sha256-disagree_1.0.dsc
+ db5570bf61464b46e2bde31ed61a7dc6 3 pkg-sha256-disagree_1.0.tar.gz
+Checksums-Sha1:
+ 324f464e6151a92cf57b26ef95dcfcf2059a8c44 3 pkg-sha256-disagree_1.0.dsc
+ 680254bad1d7ca0d65ec46aaa315d363abf6a50a 3 pkg-sha256-disagree_1.0.tar.gz
+Checksums-Sha256:
+ 943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a 3 pkg-sha256-disagree_1.0.dsc
+ 90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb 3 pkg-sha256-disagree_1.0.tar.gz
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3 pkg-sha256-disagree_1.0.dsc
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 3 pkg-sha256-disagree_1.0.tar.gz
+EOF
+
+# create fetchable files
+for x in 'pkg-md5-ok' 'pkg-sha1-ok' 'pkg-sha256-ok' 'pkg-sha256-bad' 'pkg-no-md5' \
+ 'pkg-mixed-ok' 'pkg-mixed-sha1-bad' 'pkg-mixed-sha2-bad' \
+ 'pkg-md5-agree' 'pkg-md5-disagree' 'pkg-sha256-disagree' \
+ 'pkg-md5-bad' 'pkg-size-bad'; do
+ echo -n 'dsc' > aptarchive/${x}_1.0.dsc
+ echo -n 'tar' > aptarchive/${x}_1.0.tar.gz
+done
+
+setupaptarchive --no-update
+changetowebserver
+testsuccess aptget update
+
+cd downloaded
+
+testok() {
+ rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz
+ testsuccessequal "Reading package lists...
+Need to get 6 B of source archives.
+Get:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) [3 B]
+Get:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) [3 B]
+Download complete and in download only mode" aptget source -d "$@"
+ msgtest 'Files were successfully downloaded for' "$1"
+ testsuccess --nomsg test -e ${1}_1.0.dsc -a -e ${1}_1.0.tar.gz
+ rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz
+}
+
+testkeep() {
+ echo -n 'dsc' > ${1}_1.0.dsc
+ echo -n 'tar' > ${1}_1.0.tar.gz
+ testsuccessequal "Reading package lists...
+Skipping already downloaded file '${1}_1.0.dsc'
+Skipping already downloaded file '${1}_1.0.tar.gz'
+Need to get 0 B of source archives.
+Download complete and in download only mode" aptget source -d "$@"
+ msgtest 'Files already downloaded are kept for' "$1"
+ testsuccess --nomsg test -e ${1}_1.0.dsc -a -e ${1}_1.0.tar.gz
+ rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz
+}
+
+testnohash() {
+ #FIXME: Maybe we should fail in this case instead of skipping
+ rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz
+ testsuccessequal "Reading package lists...
+Skipping download of file '${1}_1.0.dsc' as requested hashsum is not available for authentication
+Skipping download of file '${1}_1.0.tar.gz' as requested hashsum is not available for authentication
+Need to get 0 B of source archives.
+Download complete and in download only mode" aptget source -d "$@"
+ msgtest 'Files are not downloaded for' "$1"
+ testfailure --nomsg test -e ${1}_1.0.dsc -o -e ${1}_1.0.tar.gz
+}
+
+testmismatch() {
+ rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz
+ local FAILURE
+ if [ "$1" = 'pkg-size-bad' ]; then
+ FAILURE="Reading package lists...
+Need to get 6 B of source archives.
+Get:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) [2 B]
+Err:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc)
+ Writing more data than expected (3 > 2)
+ Hashes of expected file:
+ - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a
+ - Filesize:2 [weak]
+Get:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) [4 B]
+Err:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar)
+ Hash Sum mismatch
+ Hashes of expected file:
+ - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb
+ - Filesize:4 [weak]
+ Hashes of received file:
+ - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc")
+E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.dsc Writing more data than expected (3 > 2)
+ Hashes of expected file:
+ - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a
+ - Filesize:2 [weak]
+E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.tar.gz Hash Sum mismatch
+ Hashes of expected file:
+ - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb
+ - Filesize:4 [weak]
+ Hashes of received file:
+ - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc")
+E: Failed to fetch some archives."
+ elif [ "$1" = 'pkg-md5-bad' ]; then
+ FAILURE="Reading package lists...
+Need to get 6 B of source archives.
+Get:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) [3 B]
+Err:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc)
+ Hash Sum mismatch
+ Hashes of expected file:
+ - MD5Sum:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [weak]
+ - Filesize:3 [weak]
+ Hashes of received file:
+ - SHA512:e52b7bb395ea3f46974f1f65b7c5975839aad32d4e2ec0f458f735d5aa24d2bf36d7816ed1e01dc3c493e11879e9a8f66dfca42821608cfe993996929a6be18a
+ - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a
+ - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 [weak]
+ - MD5Sum:9604ba9427a280db542279d9ed78400b [weak]
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc")
+Get:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) [3 B]
+Err:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar)
+ Hash Sum mismatch
+ Hashes of expected file:
+ - MD5Sum:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb [weak]
+ - Filesize:3 [weak]
+ Hashes of received file:
+ - SHA512:5aa4cad81553320574eb72ee92bd45a1f0575528e257749dff298b2a33df9e7fc7f5c1c87fc1c8fde230f1234cca3a99bf8625a0ff7bb3238eb7e5473f9b43c0
+ - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb
+ - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a [weak]
+ - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 [weak]
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification "aptarchive/${1}_1.0.tar.gz")
+E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.dsc Hash Sum mismatch
+ Hashes of expected file:
+ - MD5Sum:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [weak]
+ - Filesize:3 [weak]
+ Hashes of received file:
+ - SHA512:e52b7bb395ea3f46974f1f65b7c5975839aad32d4e2ec0f458f735d5aa24d2bf36d7816ed1e01dc3c493e11879e9a8f66dfca42821608cfe993996929a6be18a
+ - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a
+ - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 [weak]
+ - MD5Sum:9604ba9427a280db542279d9ed78400b [weak]
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc")
+E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.tar.gz Hash Sum mismatch
+ Hashes of expected file:
+ - MD5Sum:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb [weak]
+ - Filesize:3 [weak]
+ Hashes of received file:
+ - SHA512:5aa4cad81553320574eb72ee92bd45a1f0575528e257749dff298b2a33df9e7fc7f5c1c87fc1c8fde230f1234cca3a99bf8625a0ff7bb3238eb7e5473f9b43c0
+ - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb
+ - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a [weak]
+ - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 [weak]
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification "aptarchive/${1}_1.0.tar.gz")
+E: Failed to fetch some archives."
+ else
+ FAILURE="Reading package lists...
+Need to get 6 B of source archives.
+Get:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) [3 B]
+Err:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc)
+ Hash Sum mismatch
+ Hashes of expected file:
+ - SHA256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ - Filesize:3 [weak]
+ - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 [weak]
+ - MD5Sum:9604ba9427a280db542279d9ed78400b [weak]
+ Hashes of received file:
+ - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a
+ - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 [weak]
+ - MD5Sum:9604ba9427a280db542279d9ed78400b [weak]
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc")
+Get:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) [3 B]
+Err:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar)
+ Hash Sum mismatch
+ Hashes of expected file:
+ - SHA256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+ - Filesize:3 [weak]
+ - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a [weak]
+ - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 [weak]
+ Hashes of received file:
+ - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb
+ - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a [weak]
+ - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 [weak]
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification "aptarchive/${1}_1.0.tar.gz")
+E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.dsc Hash Sum mismatch
+ Hashes of expected file:
+ - SHA256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ - Filesize:3 [weak]
+ - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 [weak]
+ - MD5Sum:9604ba9427a280db542279d9ed78400b [weak]
+ Hashes of received file:
+ - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a
+ - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 [weak]
+ - MD5Sum:9604ba9427a280db542279d9ed78400b [weak]
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc")
+E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.tar.gz Hash Sum mismatch
+ Hashes of expected file:
+ - SHA256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+ - Filesize:3 [weak]
+ - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a [weak]
+ - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 [weak]
+ Hashes of received file:
+ - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb
+ - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a [weak]
+ - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 [weak]
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification "aptarchive/${1}_1.0.tar.gz")
+E: Failed to fetch some archives."
+ fi
+ testfailureequal "$FAILURE" aptget source -d "$@"
+ msgtest 'Files were not download as they have hashsum mismatches for' "$1"
+ testfailure --nomsg test -e ${1}_1.0.dsc -a -e ${1}_1.0.tar.gz
+
+ if [ "$2" != '--allow-unauthenticated' ]; then
+ rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz
+ testsuccessequal "Reading package lists...
+Skipping download of file '${1}_1.0.dsc' as requested hashsum is not available for authentication
+Skipping download of file '${1}_1.0.tar.gz' as requested hashsum is not available for authentication
+Need to get 0 B of source archives.
+Download complete and in download only mode" aptget source -d "$@" -o Acquire::ForceHash=ROT26
+ msgtest 'Files were not download as hash is unavailable for' "$1"
+ testfailure --nomsg test -e ${1}_1.0.dsc -a -e ${1}_1.0.tar.gz
+ fi
+
+ if [ "$1" != 'pkg-size-bad' ]; then
+ rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz
+ testsuccessequal "Reading package lists...
+Need to get 6 B of source archives.
+Get:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) [3 B]
+Get:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) [3 B]
+Download complete and in download only mode" aptget source --allow-unauthenticated -d "$@" -o Acquire::ForceHash=ROT26
+ msgtest 'Files were downloaded unauthenticated as user allowed it' "$1"
+ testsuccess --nomsg test -e ${1}_1.0.dsc -a -e ${1}_1.0.tar.gz
+ fi
+}
+
+testnohash pkg-md5-ok
+testnohash pkg-sha1-ok
+testok pkg-sha256-ok
+testkeep pkg-sha256-ok
+
+# pkg-sha256-bad has a bad SHA sum, but good MD5 sum. If apt is
+# checking the best available hash (as it should), this will trigger
+# a hash mismatch.
+testmismatch pkg-sha256-bad
+testok pkg-sha256-bad -o Acquire::ForceHash=MD5Sum
+
+testnohash pkg-md5-bad
+testmismatch pkg-md5-bad --allow-unauthenticated
+
+testmismatch pkg-size-bad
+
+# not having MD5 sum doesn't mean the file doesn't exist at all …
+testok pkg-no-md5
+testok pkg-no-md5 -o Acquire::ForceHash=SHA256
+testsuccessequal "Reading package lists...
+Skipping download of file 'pkg-no-md5_1.0.dsc' as requested hashsum is not available for authentication
+Skipping download of file 'pkg-no-md5_1.0.tar.gz' as requested hashsum is not available for authentication
+Need to get 0 B of source archives.
+Download complete and in download only mode" aptget source -d pkg-no-md5 -o Acquire::ForceHash=MD5Sum
+msgtest 'Files were not download as MD5 is not available for this package' 'pkg-no-md5'
+testfailure --nomsg test -e pkg-no-md5_1.0.dsc -a -e pkg-no-md5_1.0.tar.gz
+
+# deal with cases in which we haven't for all files the same checksum type
+# mostly pathologic as this shouldn't happen, but just to be sure
+testsuccessequal "Reading package lists...
+Skipping download of file 'pkg-mixed-ok_1.0.tar.gz' as requested hashsum is not available for authentication
+Need to get 3 B of source archives.
+Get:1 http://localhost:${APTHTTPPORT} pkg-mixed-ok 1.0 (dsc) [3 B]
+Download complete and in download only mode" aptget source -d pkg-mixed-ok
+
+testsuccessequal "Reading package lists...
+Skipping download of file 'pkg-mixed-sha1-bad_1.0.dsc' as requested hashsum is not available for authentication
+Need to get 3 B of source archives.
+Get:1 http://localhost:${APTHTTPPORT} pkg-mixed-sha1-bad 1.0 (tar) [3 B]
+Download complete and in download only mode" aptget source -d pkg-mixed-sha1-bad
+msgtest 'Only tar file is downloaded as the dsc has hashsum mismatch' 'pkg-mixed-sha1-bad'
+testsuccess --nomsg test ! -e pkg-mixed-sha1-bad_1.0.dsc -a -e pkg-mixed-sha1-bad_1.0.tar.gz
+testfailureequal "Reading package lists...
+Skipping download of file 'pkg-mixed-sha2-bad_1.0.dsc' as requested hashsum is not available for authentication
+Need to get 3 B of source archives.
+Get:1 http://localhost:${APTHTTPPORT} pkg-mixed-sha2-bad 1.0 (tar) [3 B]
+Err:1 http://localhost:${APTHTTPPORT} pkg-mixed-sha2-bad 1.0 (tar)
+ Hash Sum mismatch
+ Hashes of expected file:
+ - SHA256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+ - Filesize:3 [weak]
+ Hashes of received file:
+ - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification 'aptarchive/pkg-mixed-sha2-bad_1.0.tar.gz')
+E: Failed to fetch http://localhost:${APTHTTPPORT}/pkg-mixed-sha2-bad_1.0.tar.gz Hash Sum mismatch
+ Hashes of expected file:
+ - SHA256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+ - Filesize:3 [weak]
+ Hashes of received file:
+ - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification 'aptarchive/pkg-mixed-sha2-bad_1.0.tar.gz')
+E: Failed to fetch some archives." aptget source -d pkg-mixed-sha2-bad
+
+# it gets even more pathologic: multiple entries for one file, some even disagreeing!
+testnohash pkg-md5-agree
+testfailureequal 'Reading package lists...
+E: Error parsing checksum in Files of source package pkg-md5-disagree' aptget source -d pkg-md5-disagree
+testfailureequal 'Reading package lists...
+E: Error parsing checksum in Checksums-SHA256 of source package pkg-sha256-disagree' aptget source -d pkg-sha256-disagree
diff --git a/test/integration/test-ubuntu-bug-1130419-prefer-installed-ma-same-siblings b/test/integration/test-ubuntu-bug-1130419-prefer-installed-ma-same-siblings
new file mode 100755
index 000000000..4ac5e9060
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-1130419-prefer-installed-ma-same-siblings
@@ -0,0 +1,104 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertpackage 'stable' 'libmesa' 'amd64,i386' '1' 'Multi-Arch: same'
+insertpackage 'stable' 'libmesa-lts' 'amd64,i386' '1' 'Provides: libmesa
+Conflicts: libmesa
+Multi-Arch: same'
+insertpackage 'stable' 'steam' 'i386' '1' 'Depends: libmesa'
+
+insertpackage 'unstable' 'libmesa' 'amd64,i386' '2' 'Multi-Arch: same'
+insertpackage 'unstable' 'libmesa-lts' 'amd64,i386' '2' 'Provides: libmesa
+Conflicts: libmesa
+Multi-Arch: same'
+insertpackage 'unstable' 'steam' 'i386' '2' 'Depends: libmesa'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libmesa:i386
+The following NEW packages will be installed:
+ libmesa:i386 steam:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libmesa:i386 (1 stable [i386])
+Inst steam:i386 (1 stable [i386])
+Conf libmesa:i386 (1 stable [i386])
+Conf steam:i386 (1 stable [i386])' aptget install steam -st stable
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libmesa:i386
+The following NEW packages will be installed:
+ libmesa:i386 steam:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libmesa:i386 (2 unstable [i386])
+Inst steam:i386 (2 unstable [i386])
+Conf libmesa:i386 (2 unstable [i386])
+Conf steam:i386 (2 unstable [i386])' aptget install steam -st unstable
+
+cp rootdir/var/lib/dpkg/status default-status.dpkg
+insertinstalledpackage 'libmesa' 'amd64' '1' 'Multi-Arch: same'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libmesa:i386
+The following NEW packages will be installed:
+ libmesa:i386 steam:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libmesa:i386 (1 stable [i386])
+Inst steam:i386 (1 stable [i386])
+Conf libmesa:i386 (1 stable [i386])
+Conf steam:i386 (1 stable [i386])' aptget install steam -st stable
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libmesa libmesa:i386
+The following NEW packages will be installed:
+ libmesa:i386 steam:i386
+The following packages will be upgraded:
+ libmesa
+1 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libmesa [1] (2 unstable [amd64])
+Inst libmesa:i386 (2 unstable [i386])
+Inst steam:i386 (2 unstable [i386])
+Conf libmesa (2 unstable [amd64])
+Conf libmesa:i386 (2 unstable [i386])
+Conf steam:i386 (2 unstable [i386])' aptget install steam -st unstable
+
+cp default-status.dpkg rootdir/var/lib/dpkg/status
+insertinstalledpackage 'libmesa-lts' 'amd64' '1' 'Provides: libmesa
+Conflicts: libmesa
+Multi-Arch: same'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libmesa-lts:i386
+The following NEW packages will be installed:
+ libmesa-lts:i386 steam:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libmesa-lts:i386 (1 stable [i386])
+Inst steam:i386 (1 stable [i386])
+Conf libmesa-lts:i386 (1 stable [i386])
+Conf steam:i386 (1 stable [i386])' aptget install steam -st stable
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libmesa-lts libmesa-lts:i386
+The following NEW packages will be installed:
+ libmesa-lts:i386 steam:i386
+The following packages will be upgraded:
+ libmesa-lts
+1 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libmesa-lts [1] (2 unstable [amd64])
+Inst libmesa-lts:i386 (2 unstable [i386])
+Inst steam:i386 (2 unstable [i386])
+Conf libmesa-lts (2 unstable [amd64])
+Conf libmesa-lts:i386 (2 unstable [i386])
+Conf steam:i386 (2 unstable [i386])' aptget install steam -st unstable
diff --git a/test/integration/test-ubuntu-bug-1304403-obsolete-priority-standard b/test/integration/test-ubuntu-bug-1304403-obsolete-priority-standard
new file mode 100755
index 000000000..82e1d61e8
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-1304403-obsolete-priority-standard
@@ -0,0 +1,50 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+# Regression test for LP: #1304403
+#
+# The issue here is that libkadm5srv-mit8 (priority standard) is replaced
+# by a new libkadm5srv-mit9 and libkbd5-7 breaks on the old -mit8 package.
+# The -mit8 package is no longer downloadable (and hence not upgradeable)
+
+# normal upradable pkg
+# (libkdb5-7 that breaks on libkadm5srv-mit8 (<< 1.11+dfsg~)
+insertinstalledpackage 'upgradable' 'all' '1.0' '' 'extra'
+insertpackage 'unstable' 'upgradable' 'all' '2.0' 'Breaks: not-downloadable (<< 1.1)' 'optional'
+
+# no longer downloadable pkg (libkadm5srv-mit8, replaced by libkadm5srv-mit9)
+# but priority standard pushes it higher
+insertinstalledpackage 'not-downloadable' 'all' '1.0' '' 'standard'
+
+setupaptarchive
+
+# discourage keeping obsolete high-priority packages …
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ not-downloadable
+The following packages will be upgraded:
+ upgradable
+1 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv not-downloadable [1.0]
+Inst upgradable [1.0] (2.0 unstable [all])
+Conf upgradable (2.0 unstable [all])' aptget -s dist-upgrade
+
+# … but if it has dependencies we want to keep it as usual
+for i in $(seq 1 10); do
+insertinstalledpackage "depender$i" 'all' '1.0' 'Depends: not-downloadable'
+done
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ upgradable
+0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.' aptget -s dist-upgrade
diff --git a/test/integration/test-ubuntu-bug-1549819-empty-arch-list b/test/integration/test-ubuntu-bug-1549819-empty-arch-list
new file mode 100755
index 000000000..5e1c6ce7e
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-1549819-empty-arch-list
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture ""
+echo 'APT::Architecture "";' > rootdir/etc/apt/apt.conf
+echo 'APT::Architectures:: "";' >> rootdir/etc/apt/apt.conf
+setupaptarchive
+
+# test success
+testsuccess aptcache -c rootdir/etc/apt/apt.conf gencaches -o debug::NoLocking=1
diff --git a/test/integration/test-ubuntu-bug-1651923-requote-https-uri b/test/integration/test-ubuntu-bug-1651923-requote-https-uri
new file mode 100755
index 000000000..cf56a6af4
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-1651923-requote-https-uri
@@ -0,0 +1,19 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+mkdir "aptarchive/target with space"
+echo 'alright' > "aptarchive/target with space/working"
+changetohttpswebserver
+webserverconfig 'aptwebserver::redirect::replace::/targetwithoutspace/' '/target%20with%20space/'
+webserverconfig 'aptwebserver::redirect::replace::/targetwithoutspace2/' '/target with space/'
+
+testsuccess downloadfile "http://localhost:${APTHTTPPORT}/targetwithoutspace/working" httpfile1
+testsuccess downloadfile "http://localhost:${APTHTTPPORT}/targetwithoutspace2/working" httpfile2
+testsuccess downloadfile "https://localhost:${APTHTTPSPORT}/targetwithoutspace/working" httpsfile1
+testsuccess downloadfile "https://localhost:${APTHTTPSPORT}/targetwithoutspace2/working" httpsfile2
diff --git a/test/integration/test-ubuntu-bug-346386-apt-get-update-paywall b/test/integration/test-ubuntu-bug-346386-apt-get-update-paywall
new file mode 100755
index 000000000..a756b5df2
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-346386-apt-get-update-paywall
@@ -0,0 +1,72 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+insertpackage 'unstable' 'unrelated' 'all' '1.0' 'stable'
+insertsource 'unstable' 'unrelated' 'all' '1.0' 'stable'
+
+echo 'ni ni ni' > aptarchive/knights
+
+setupaptarchive
+changetowebserver -o 'aptwebserver::overwrite::.*InRelease::filename=/knights' -o 'aptwebserver::overwrite::.*::filename=/knights'
+
+msgtest 'Acquire test file from the webserver to check' 'overwrite'
+if downloadfile http://localhost:${APTHTTPPORT}/holygrail ./knights-talking >/dev/null; then
+ msgpass
+else
+ msgfail
+fi
+
+testfileequal knights-talking 'ni ni ni'
+
+ensure_n_canary_strings_in_dir() {
+ local DIR="$1"
+ local CANARY_STRING="$2"
+ local EXPECTED_N="$3"
+
+ msgtest "Testing in $DIR for $EXPECTED_N canary" "$CANARY_STRING"
+ local N=$(grep "$CANARY_STRING" $DIR/* 2>/dev/null |wc -l )
+ test "$N" = "$EXPECTED_N" && msgpass || msgfail "Expected $EXPECTED_N canaries, got $N"
+}
+
+runtests() {
+ LISTS='rootdir/var/lib/apt/lists'
+ rm -rf "$LISTS"
+ testfailure aptget update
+ testsuccess grep "$1" rootdir/tmp/testfailure.output
+
+ ensure_n_canary_strings_in_dir "$LISTS" 'ni ni ni' 0
+ testequal 'lock
+partial' ls "$LISTS"
+
+ # and again with pre-existing files with "valid data" which should remain
+ for f in Release Release.gpg main_binary-amd64_Packages main_source_Sources; do
+ echo 'peng neee-wom' > "$LISTS/localhost:${APTHTTPPORT}_dists_stable_${f}"
+ chmod 644 "$LISTS/localhost:${APTHTTPPORT}_dists_stable_${f}"
+ done
+
+ testfailure aptget update
+ testsuccess grep "$1" rootdir/tmp/testfailure.output
+
+ ensure_n_canary_strings_in_dir "$LISTS" 'peng neee-wom' 4
+ ensure_n_canary_strings_in_dir "$LISTS" 'ni ni ni' 0
+
+ # and now with a pre-existing InRelease file
+ echo 'peng neee-wom' > "$LISTS/localhost:${APTHTTPPORT}_dists_stable_InRelease"
+ chmod 644 "$LISTS/localhost:${APTHTTPPORT}_dists_stable_InRelease"
+ rm -f "$LISTS/localhost:${APTHTTPPORT}_dists_stable_Release" "$LISTS/localhost:${APTHTTPPORT}_dists_stable_Release.gpg"
+ msgtest 'excpected failure of' 'apt-get update'
+ testfailure aptget update
+ testsuccess grep "$1" rootdir/tmp/testfailure.output
+
+ ensure_n_canary_strings_in_dir "$LISTS" 'peng neee-wom' 3
+ ensure_n_canary_strings_in_dir "$LISTS" 'ni ni ni' 0
+}
+runtests '^E:.*Clearsigned file .*NOSPLIT.*'
+webserverconfig 'aptwebserver::overwrite::.*InRelease::filename' '/404'
+runtests '^E:.*Signed file .*NODATA.*'
diff --git a/test/integration/test-ubuntu-bug-365611-long-package-names b/test/integration/test-ubuntu-bug-365611-long-package-names
new file mode 100755
index 000000000..53e3ea831
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-365611-long-package-names
@@ -0,0 +1,15 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+setupaptarchive
+
+aptget install $(for i in $(seq 0 1000); do echo -n 'a'; done) 2> longpackagename.log > /dev/null || true
+testfileequal 'longpackagename.log' "E: Unable to locate package $(for i in $(seq 0 1000); do echo -n 'a'; done)"
+
+# … and the opposite of long:
+aptget install "" -s >longpackagename.log 2>&1 || true
+testfileequal 'longpackagename.log' "$(aptget install -s)"
diff --git a/test/integration/test-ubuntu-bug-614993 b/test/integration/test-ubuntu-bug-614993
new file mode 100755
index 000000000..e7357bc67
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-614993
@@ -0,0 +1,59 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "amd64"
+setupaptarchive
+
+# test success
+UPGRADE="Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libdrm-intel1 libdrm-nouveau1 libmtdev1 libutouch-grail1 libx11-xcb1
+ libxcb-aux0 libxcb-dri2-0 libxfont1 xserver-common xserver-xorg-core
+ xserver-xorg-input-evdev xserver-xorg-input-mouse
+ xserver-xorg-input-synaptics xserver-xorg-input-vmmouse
+ xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm
+ xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips
+ xserver-xorg-video-cirrus xserver-xorg-video-fbdev xserver-xorg-video-i128
+ xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga
+ xserver-xorg-video-neomagic xserver-xorg-video-nouveau xserver-xorg-video-nv
+ xserver-xorg-video-openchrome xserver-xorg-video-r128
+ xserver-xorg-video-radeon xserver-xorg-video-rendition xserver-xorg-video-s3
+ xserver-xorg-video-s3virge xserver-xorg-video-savage
+ xserver-xorg-video-siliconmotion xserver-xorg-video-sis
+ xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident
+ xserver-xorg-video-tseng xserver-xorg-video-vesa xserver-xorg-video-vmware
+ xserver-xorg-video-voodoo
+Suggested packages:
+ xfonts-scalable gpointing-device-settings touchfreeze firmware-linux
+Recommended packages:
+ xauth intel-gpu-tools
+The following packages will be REMOVED:
+ xserver-xorg-video-v4l
+The following NEW packages will be installed:
+ libmtdev1 libutouch-grail1 libx11-xcb1 libxcb-aux0 libxcb-dri2-0
+The following packages will be upgraded:
+ libdrm-intel1 libdrm-nouveau1 libxfont1 xserver-common xserver-xorg
+ xserver-xorg-core xserver-xorg-input-evdev xserver-xorg-input-mouse
+ xserver-xorg-input-synaptics xserver-xorg-input-vmmouse
+ xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm
+ xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips
+ xserver-xorg-video-cirrus xserver-xorg-video-fbdev xserver-xorg-video-i128
+ xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga
+ xserver-xorg-video-neomagic xserver-xorg-video-nouveau xserver-xorg-video-nv
+ xserver-xorg-video-openchrome xserver-xorg-video-r128
+ xserver-xorg-video-radeon xserver-xorg-video-rendition xserver-xorg-video-s3
+ xserver-xorg-video-s3virge xserver-xorg-video-savage
+ xserver-xorg-video-siliconmotion xserver-xorg-video-sis
+ xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident
+ xserver-xorg-video-tseng xserver-xorg-video-vesa xserver-xorg-video-vmware
+ xserver-xorg-video-voodoo
+41 upgraded, 5 newly installed, 1 to remove and 3 not upgraded.
+Need to get 0 B/5505 kB of archives.
+After this operation, 2294 kB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation."
+testfailureequal "$UPGRADE" aptget install xserver-xorg --trivial-only
+
diff --git a/test/integration/test-ubuntu-bug-761175-remove-purge b/test/integration/test-ubuntu-bug-761175-remove-purge
new file mode 100755
index 000000000..6ae1a04e8
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-761175-remove-purge
@@ -0,0 +1,88 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildcompizpkg() {
+ setupsimplenativepackage "compiz-core-$1" "$2" "$3" "$4"
+ BUILDDIR="incoming/compiz-core-$1-$3"
+ mkdir -p ${BUILDDIR}/debian/compiz-core/etc
+ echo 'foo=bar;' > ${BUILDDIR}/compiz.conf
+ echo 'compiz.conf /etc/compiz.conf' >> ${BUILDDIR}/debian/install
+ buildpackage "$BUILDDIR" "$4" 'main' "$2"
+ rm -rf "$BUILDDIR"
+}
+buildcompizpkg 'native' 'all' '1.0' 'stable'
+buildcompizpkg 'all' 'native' '1.0' 'stable'
+buildcompizpkg 'native' 'native' '2.0' 'unstable'
+buildcompizpkg 'all' 'all' '2.0' 'unstable'
+
+setupaptarchive
+
+runtests() {
+ local PKG="$1"
+ local RELEASE="${2}"
+ shift 2
+ testdpkgnotinstalled compiz-core-${PKG}
+ testsuccess aptget install compiz-core-${PKG} -t "${RELEASE}" "$@"
+ testdpkginstalled compiz-core-${PKG}
+
+ testsuccess aptget remove compiz-core-${PKG} -y "$@" -o Debug::pkgDpkgPm=1
+ testfailure grep -- '--force-remove-essential' rootdir/tmp/testsuccess.output
+ testsuccess aptget remove compiz-core-${PKG} -y "$@"
+ testdpkgnotinstalled compiz-core-${PKG}
+ testdpkgstatus 'rc' '1' "compiz-core-${PKG}"
+
+ if [ -z "$1" ]; then
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ compiz-core-${PKG}*
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Purg compiz-core-${PKG}" aptget purge compiz-core-${PKG} -s "$@"
+ else
+ # check that the rc-version isn't passed to the external resolver if its only in dpkg/status
+ export APT_EDSP_DUMP_FILENAME="${TMPWORKINGDIRECTORY}/dump-${PKG}.edsp"
+ testfailure aptget purge compiz-core-${PKG} -y "$@" -s --solver dump
+ testsuccessequal '2' grep -c "^Package: compiz-core-${PKG}\$" "$APT_EDSP_DUMP_FILENAME"
+ mv rootdir/etc/apt/sources.list.d/apt-test-stable-deb.list rootdir/etc/apt/sources.list.d/apt-test-stable-deb.disabled
+ testfailure aptget purge compiz-core-${PKG} -y "$@" -s --solver dump
+ testsuccessequal '1' grep -c "^Package: compiz-core-${PKG}\$" "$APT_EDSP_DUMP_FILENAME"
+ mv rootdir/etc/apt/sources.list.d/apt-test-stable-deb.disabled rootdir/etc/apt/sources.list.d/apt-test-stable-deb.list
+
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Execute external solver...
+The following packages will be REMOVED:
+ compiz-core-${PKG}*
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Purg compiz-core-${PKG}" aptget purge compiz-core-${PKG} -s "$@"
+ fi
+ testsuccess aptget purge compiz-core-${PKG} -y "$@" -o Debug::pkgDpkgPm=1
+ testfailure grep -- '--force-remove-essential' rootdir/tmp/testsuccess.output
+ testsuccess aptget purge compiz-core-${PKG} -y "$@"
+ echo -n '' > rootdir/var/lib/dpkg/available # dpkg -l < 1.16.2 reads the available file by default, where the package can be found
+ testequalor2 "dpkg-query: no packages found matching compiz-core-${PKG}" "No packages found matching compiz-core-${PKG}." dpkg -l compiz-core-${PKG}
+}
+runtestround() {
+ runtests 'native' 'unstable' "$@"
+ runtests 'all' 'unstable' "$@"
+ runtests 'native' 'stable' "$@"
+ runtests 'all' 'stable' "$@"
+}
+testround() {
+ msgmsg 'Test in multi arch environment' "$@"
+ configarchitecture 'amd64' 'i386'
+ runtestround "$@"
+
+ msgmsg 'Test in single arch environment' "$@"
+ configarchitecture 'amd64'
+ runtestround "$@"
+}
+testround
+testround --solver apt
diff --git a/test/integration/test-ubuntu-bug-784473-InRelease-one-message-only b/test/integration/test-ubuntu-bug-784473-InRelease-one-message-only
new file mode 100755
index 000000000..fe42ba83d
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-784473-InRelease-one-message-only
@@ -0,0 +1,36 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'apt' 'i386' '0.8.11'
+
+export APT_DONT_SIGN='Release.gpg'
+setupaptarchive --no-update
+
+find aptarchive/ -name 'InRelease' -exec cp {} {}.old \;
+
+for RELEASE in $(find aptarchive/ -name 'InRelease'); do
+ (echo 'Origin: Marvin
+Label: Marvin
+Suite: experimental
+Codename: experimental
+MD5Sum:
+ 65fd410587b6978de2277f2912523f09 9360 Packages
+ d27b294ed172a1fa9dd5a53949914c5d 4076 Packages.bz2
+ 2182897e0a2a0c09e760beaae117a015 2023 Packages.diff/Index
+ 1b895931853981ad8204d2439821b999 4144 Packages.gz'; echo; cat ${RELEASE}.old;) > ${RELEASE}
+done
+
+testfailure aptget update
+testsuccess grep '^E:.*Clearsigned file .*NOSPLIT.*' rootdir/tmp/testfailure.output
+
+
+ROOTDIR="$(readlink -f .)"
+testsuccessequal "Package files:
+ 100 ${ROOTDIR}/rootdir/var/lib/dpkg/status
+ release a=now
+Pinned packages:" aptcache policy
diff --git a/test/integration/test-ubuntu-bug-802901-multiarch-early-remove b/test/integration/test-ubuntu-bug-802901-multiarch-early-remove
new file mode 100755
index 000000000..d9587d9cd
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-802901-multiarch-early-remove
@@ -0,0 +1,24 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'libgl1-mesa-glx' 'amd64' '2.0' 'Multi-Arch: same
+Provides: libgl1
+Conflicts: libgl1'
+insertpackage 'unstable' 'libgl1-mesa-glx' 'i386,amd64' '2.0' 'Multi-Arch: same
+Provides: libgl1
+Conflicts: libgl1'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libgl1-mesa-glx:i386
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libgl1-mesa-glx:i386 (2.0 unstable [i386])
+Conf libgl1-mesa-glx:i386 (2.0 unstable [i386])' aptget install libgl1-mesa-glx:i386 -s
diff --git a/test/integration/test-ubuntu-bug-806274-install-suggests b/test/integration/test-ubuntu-bug-806274-install-suggests
new file mode 100755
index 000000000..b73a6f754
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-806274-install-suggests
@@ -0,0 +1,81 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'apt' 'i386' '0.8.15' 'Depends: foo
+Recommends: bar
+Suggests: baz'
+insertpackage 'unstable' 'foo' 'i386' '1.0'
+insertpackage 'unstable' 'bar' 'i386' '1.0'
+insertpackage 'unstable' 'baz' 'i386' '1.0'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ bar foo
+Suggested packages:
+ baz
+The following NEW packages will be installed:
+ apt bar foo
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [i386])
+Conf foo (1.0 unstable [i386])
+Inst apt (0.8.15 unstable [i386])
+Conf apt (0.8.15 unstable [i386])
+Inst bar (1.0 unstable [i386])
+Conf bar (1.0 unstable [i386])' aptget install apt -s --install-recommends --no-install-suggests
+
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ bar baz foo
+The following NEW packages will be installed:
+ apt bar baz foo
+0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [i386])
+Conf foo (1.0 unstable [i386])
+Inst apt (0.8.15 unstable [i386])
+Conf apt (0.8.15 unstable [i386])
+Inst bar (1.0 unstable [i386])
+Inst baz (1.0 unstable [i386])
+Conf bar (1.0 unstable [i386])
+Conf baz (1.0 unstable [i386])' aptget install apt -s --install-recommends --install-suggests
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+Suggested packages:
+ baz
+Recommended packages:
+ bar
+The following NEW packages will be installed:
+ apt foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [i386])
+Conf foo (1.0 unstable [i386])
+Inst apt (0.8.15 unstable [i386])
+Conf apt (0.8.15 unstable [i386])' aptget install apt -s --no-install-recommends --no-install-suggests
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ baz foo
+Recommended packages:
+ bar
+The following NEW packages will be installed:
+ apt baz foo
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [i386])
+Conf foo (1.0 unstable [i386])
+Inst apt (0.8.15 unstable [i386])
+Conf apt (0.8.15 unstable [i386])
+Inst baz (1.0 unstable [i386])
+Conf baz (1.0 unstable [i386])' aptget install apt -s --no-install-recommends --install-suggests
diff --git a/test/integration/test-ubuntu-bug-835625-multiarch-lockstep-installed-first b/test/integration/test-ubuntu-bug-835625-multiarch-lockstep-installed-first
new file mode 100755
index 000000000..5a3e2762e
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-835625-multiarch-lockstep-installed-first
@@ -0,0 +1,45 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'libsame' 'i386' '1'
+insertinstalledpackage 'apt' 'i386' '1' 'Depends: libsame (= 1)'
+
+insertpackage 'unstable' 'libsame' 'i386,amd64' '2' 'Multi-Arch: same'
+insertpackage 'unstable' 'apt' 'i386' '2' 'Depends: libsame (= 2)'
+
+setupaptarchive
+
+testequalor2 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ apt:i386 libsame:i386
+The following NEW packages will be installed:
+ libsame
+The following packages will be upgraded:
+ apt:i386 libsame:i386
+2 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame:i386 [1] (2 unstable [i386]) [apt:i386 ]
+Inst libsame (2 unstable [amd64]) [apt:i386 ]
+Conf libsame:i386 (2 unstable [i386]) [apt:i386 ]
+Conf libsame (2 unstable [amd64]) [apt:i386 ]
+Inst apt:i386 [1] (2 unstable [i386])
+Conf apt:i386 (2 unstable [i386])' 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ apt:i386 libsame:i386
+The following NEW packages will be installed:
+ libsame
+The following packages will be upgraded:
+ apt:i386 libsame:i386
+2 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst apt:i386 [1] (2 unstable [i386]) []
+Inst libsame:i386 [1] (2 unstable [i386])
+Inst libsame (2 unstable [amd64])
+Conf libsame:i386 (2 unstable [i386])
+Conf libsame (2 unstable [amd64])
+Conf apt:i386 (2 unstable [i386])' aptget install libsame:amd64 -s
diff --git a/test/integration/test-ubuntu-bug-859188-multiarch-reinstall b/test/integration/test-ubuntu-bug-859188-multiarch-reinstall
new file mode 100755
index 000000000..5fdb98d1e
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-859188-multiarch-reinstall
@@ -0,0 +1,27 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386' 'armel'
+
+buildsimplenativepackage 'libsame' 'amd64,i386,armel' '1.0' 'unstable' 'Multi-Arch: same'
+
+setupaptarchive
+
+testsuccess aptget install libsame libsame:i386
+
+REINSTALL='Reading package lists...
+Building dependency tree...
+Reading state information...
+0 upgraded, 0 newly installed, 2 reinstalled, 0 to remove and 0 not upgraded.
+Inst libsame [1.0] (1.0 unstable [amd64])
+Inst libsame:i386 [1.0] (1.0 unstable [i386])
+Conf libsame (1.0 unstable [amd64])
+Conf libsame:i386 (1.0 unstable [i386])'
+
+testsuccessequal "$REINSTALL" aptget install --reinstall libsame -s
+testsuccessequal "$REINSTALL" aptget install --reinstall libsame:amd64 -s
+testsuccessequal "$REINSTALL" aptget install --reinstall libsame:i386 -s
+testsuccessequal "$REINSTALL" aptget install --reinstall libsame:amd64 libsame:i386 -s
diff --git a/test/integration/test-ubuntu-bug-985852-pre-depends-or-group-ordering b/test/integration/test-ubuntu-bug-985852-pre-depends-or-group-ordering
new file mode 100755
index 000000000..bd5be9eb0
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-985852-pre-depends-or-group-ordering
@@ -0,0 +1,22 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'custom' 'amd64' '1.0' 'Pre-Depends: grub-pc | grub'
+insertinstalledpackage 'grub' 'amd64' '1.0'
+insertpackage 'unstable' 'custom' 'amd64' '2.0' 'Pre-Depends: grub-pc | grub'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ custom
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst custom [1.0] (2.0 unstable [amd64])
+Conf custom (2.0 unstable [amd64])' aptget dist-upgrade -s
diff --git a/test/integration/test-unpack-different-version-unpacked b/test/integration/test-unpack-different-version-unpacked
new file mode 100755
index 000000000..bcb483639
--- /dev/null
+++ b/test/integration/test-unpack-different-version-unpacked
@@ -0,0 +1,121 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertpackage 'unstable' 'libqtcore4' 'i386,amd64' '2' 'Multi-Arch: same'
+setupaptarchive
+
+DPKGSTATUS='rootdir/var/lib/dpkg/status'
+cp $DPKGSTATUS dpkg.status
+
+cleanstatus() {
+ cp dpkg.status $DPKGSTATUS
+ rm rootdir/var/cache/apt/*.bin
+}
+
+#FIXME: the reported version is wrong, it should be 1, not 2
+insertinstalledpackage 'libqtcore4' 'i386,amd64' '1' 'Multi-Arch: same' '' 'install ok unpacked'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
+2 not fully installed or removed.
+Conf libqtcore4 (2 unstable [amd64])
+Conf libqtcore4:i386 (2 unstable [i386])' aptget install -s -f
+
+cleanstatus
+insertinstalledpackage 'libqtcore4' 'amd64' '2' 'Multi-Arch: same' '' 'install ok unpacked'
+insertinstalledpackage 'libqtcore4' 'i386' '1' 'Multi-Arch: same' '' 'install ok unpacked'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Correcting dependencies... Done
+The following additional packages will be installed:
+ libqtcore4:i386
+The following packages will be upgraded:
+ libqtcore4:i386
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+2 not fully installed or removed.
+Inst libqtcore4:i386 [1] (2 unstable [i386])
+Conf libqtcore4:i386 (2 unstable [i386])
+Conf libqtcore4 (2 unstable [amd64])' aptget install -s -f
+
+cleanstatus
+insertinstalledpackage 'libqtcore4' 'i386' '2' 'Multi-Arch: same' '' 'install ok unpacked'
+insertinstalledpackage 'libqtcore4' 'amd64' '1' 'Multi-Arch: same' '' 'install ok unpacked'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Correcting dependencies... Done
+The following additional packages will be installed:
+ libqtcore4
+The following packages will be upgraded:
+ libqtcore4
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+2 not fully installed or removed.
+Inst libqtcore4 [1] (2 unstable [amd64])
+Conf libqtcore4 (2 unstable [amd64])
+Conf libqtcore4:i386 (2 unstable [i386])' aptget install -s -f
+
+cleanstatus
+insertinstalledpackage 'libqtcore4' 'amd64' '2' 'Multi-Arch: same' '' 'install ok unpacked'
+insertinstalledpackage 'libqtcore4' 'i386' '1' 'Multi-Arch: same'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Correcting dependencies... Done
+The following additional packages will be installed:
+ libqtcore4:i386
+The following packages will be upgraded:
+ libqtcore4:i386
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+1 not fully installed or removed.
+Inst libqtcore4:i386 [1] (2 unstable [i386])
+Conf libqtcore4:i386 (2 unstable [i386])
+Conf libqtcore4 (2 unstable [amd64])' aptget install -s -f
+
+cleanstatus
+insertinstalledpackage 'libqtcore4' 'i386' '2' 'Multi-Arch: same' '' 'install ok unpacked'
+insertinstalledpackage 'libqtcore4' 'amd64' '1' 'Multi-Arch: same'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Correcting dependencies... Done
+The following additional packages will be installed:
+ libqtcore4
+The following packages will be upgraded:
+ libqtcore4
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+1 not fully installed or removed.
+Inst libqtcore4 [1] (2 unstable [amd64])
+Conf libqtcore4 (2 unstable [amd64])
+Conf libqtcore4:i386 (2 unstable [i386])' aptget install -s -f
+
+cleanstatus
+insertinstalledpackage 'libqtcore4' 'amd64' '2' 'Multi-Arch: same'
+insertinstalledpackage 'libqtcore4' 'i386' '1' 'Multi-Arch: same' '' 'install ok unpacked'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Correcting dependencies... Done
+The following additional packages will be installed:
+ libqtcore4:i386
+The following packages will be upgraded:
+ libqtcore4:i386
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+1 not fully installed or removed.
+Inst libqtcore4:i386 [1] (2 unstable [i386])
+Conf libqtcore4:i386 (2 unstable [i386])' aptget install -s -f
+
+cleanstatus
+insertinstalledpackage 'libqtcore4' 'i386' '2' 'Multi-Arch: same'
+insertinstalledpackage 'libqtcore4' 'amd64' '1' 'Multi-Arch: same' '' 'install ok unpacked'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Correcting dependencies... Done
+The following additional packages will be installed:
+ libqtcore4
+The following packages will be upgraded:
+ libqtcore4
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+1 not fully installed or removed.
+Inst libqtcore4 [1] (2 unstable [amd64])
+Conf libqtcore4 (2 unstable [amd64])' aptget install -s -f
diff --git a/test/integration/test-very-tight-loop-configure-with-unpacking-new-packages b/test/integration/test-very-tight-loop-configure-with-unpacking-new-packages
new file mode 100755
index 000000000..09953e943
--- /dev/null
+++ b/test/integration/test-very-tight-loop-configure-with-unpacking-new-packages
@@ -0,0 +1,63 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+# the difference between version 3 and 4 is the new package 'ure' which
+# we have to unpack before we start configuring parts of the loop
+insertinstalledpackage 'libreoffice' 'amd64' '3' 'Depends: libreoffice-core (= 3)'
+insertinstalledpackage 'libreoffice-core' 'amd64' '3' 'Depends: libreoffice-common (>= 3)'
+insertinstalledpackage 'libreoffice-common' 'all' '3' 'Depends: libreoffice-style
+Breaks: libreoffice-core (>= 3+), libreoffice-core (<= 3~), libreoffice-style-galaxy (>= 3+), libreoffice-style-galaxy (<= 3~)'
+insertinstalledpackage 'libreoffice-style-galaxy' 'amd64' '3' 'Depends: libreoffice-core
+Provides: libreoffice-style'
+
+insertpackage 'sid' 'libreoffice' 'amd64' '4' 'Depends: libreoffice-core (= 4)'
+insertpackage 'sid' 'libreoffice-core' 'amd64' '4' 'Depends: libreoffice-common (>= 4)
+Breaks: libreoffice-common (<< 4), libreoffice-style-galaxy (<< 4)'
+insertpackage 'sid' 'libreoffice-common' 'all' '4' 'Depends: libreoffice-style, ure
+Breaks: libreoffice-core (>= 4+), libreoffice-core (<= 4~), libreoffice-style-galaxy (>= 4+), libreoffice-style-galaxy (<= 4~)'
+insertpackage 'sid' 'libreoffice-style-galaxy' 'amd64' '4' 'Depends: libreoffice-core
+Provides: libreoffice-style'
+insertpackage 'sid' 'ure' 'amd64' '4'
+
+setupaptarchive
+
+testequalor2 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ ure
+The following packages will be upgraded:
+ libreoffice libreoffice-common libreoffice-core libreoffice-style-galaxy
+4 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libreoffice [3] (4 sid [amd64]) []
+Inst libreoffice-style-galaxy [3] (4 sid [amd64]) [libreoffice-common:amd64 on libreoffice-style-galaxy:amd64] [libreoffice-common:amd64 ]
+Inst libreoffice-core [3] (4 sid [amd64]) [libreoffice-core:amd64 on libreoffice-common:amd64] [libreoffice-common:amd64 on libreoffice-core:amd64] [libreoffice-common:amd64 on libreoffice-style-galaxy:amd64] [libreoffice-common:amd64 ]
+Inst libreoffice-common [3] (4 sid [all]) []
+Inst ure (4 sid [amd64])
+Conf libreoffice (4 sid [amd64])
+Conf libreoffice-style-galaxy (4 sid [amd64])
+Conf libreoffice-core (4 sid [amd64])
+Conf libreoffice-common (4 sid [all])
+Conf ure (4 sid [amd64])' 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ ure
+The following packages will be upgraded:
+ libreoffice libreoffice-common libreoffice-core libreoffice-style-galaxy
+4 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libreoffice [3] (4 sid [amd64]) []
+Inst libreoffice-style-galaxy [3] (4 sid [amd64]) [libreoffice-common:amd64 on libreoffice-style-galaxy:amd64] [libreoffice-common:amd64 ]
+Inst libreoffice-core [3] (4 sid [amd64]) [libreoffice-common:amd64 on libreoffice-core:amd64] [libreoffice-common:amd64 on libreoffice-style-galaxy:amd64] [libreoffice-core:amd64 on libreoffice-common:amd64] [libreoffice-common:amd64 ]
+Inst libreoffice-common [3] (4 sid [all]) []
+Inst ure (4 sid [amd64])
+Conf libreoffice (4 sid [amd64])
+Conf libreoffice-style-galaxy (4 sid [amd64])
+Conf libreoffice-core (4 sid [amd64])
+Conf libreoffice-common (4 sid [all])
+Conf ure (4 sid [amd64])' aptget dist-upgrade -s
diff --git a/test/integration/test-xorg-break-providers b/test/integration/test-xorg-break-providers
new file mode 100755
index 000000000..59b564a02
--- /dev/null
+++ b/test/integration/test-xorg-break-providers
@@ -0,0 +1,45 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+# the new xserver-xorg-core breaks xserver-xorg-video-6
+# which both -intel (installed) and -vesa (not installed)
+# provided in their old version.
+# The test ensures that only -intel will be upgraded
+# (together with -core of course) and -vesa not touched.
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ xserver-xorg-video-intel
+The following packages will be upgraded:
+ xserver-xorg-core xserver-xorg-video-intel
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/2992 kB of archives.
+After this operation, 24.6 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget install xserver-xorg-core --trivial-only
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ xserver-xorg-core xserver-xorg-video-intel
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/2992 kB of archives.
+After this operation, 24.6 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget upgrade --trivial-only
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ xserver-xorg-core xserver-xorg-video-intel
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/2992 kB of archives.
+After this operation, 24.6 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only
diff --git a/test/interactive-helper/CMakeLists.txt b/test/interactive-helper/CMakeLists.txt
new file mode 100644
index 000000000..5a32ca17e
--- /dev/null
+++ b/test/interactive-helper/CMakeLists.txt
@@ -0,0 +1,15 @@
+add_executable(mthdcat mthdcat.cc)
+target_link_libraries(mthdcat apt-pkg)
+add_executable(testdeb testdeb.cc)
+target_link_libraries(testdeb apt-pkg apt-inst)
+add_executable(extract-control extract-control.cc)
+target_link_libraries(extract-control apt-pkg apt-inst)
+add_executable(aptwebserver aptwebserver.cc)
+target_link_libraries(aptwebserver apt-pkg ${CMAKE_THREAD_LIBS_INIT})
+add_executable(aptdropprivs aptdropprivs.cc)
+target_link_libraries(aptdropprivs apt-pkg)
+add_executable(test_fileutl test_fileutl.cc)
+target_link_libraries(test_fileutl apt-pkg)
+
+add_library(noprofile SHARED libnoprofile.c)
+target_link_libraries(noprofile ${CMAKE_DL_LIBS})
diff --git a/test/interactive-helper/aptdropprivs.cc b/test/interactive-helper/aptdropprivs.cc
new file mode 100644
index 000000000..1cc04f36a
--- /dev/null
+++ b/test/interactive-helper/aptdropprivs.cc
@@ -0,0 +1,27 @@
+#include <config.h>
+
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+
+#include <unistd.h>
+
+int main(int const argc, const char * argv[])
+{
+ CommandLine::Args Args[] = {
+ {'c',"config-file",0,CommandLine::ConfigFile},
+ {'o',"option",0,CommandLine::ArbItem},
+ {0, "user", "APT::Sandbox::User", CommandLine::HasArg},
+ {0,0,0,0}
+ };
+
+ CommandLine CmdL(Args, _config);
+ if(CmdL.Parse(argc,argv) == false || DropPrivileges() == false)
+ {
+ _error->DumpErrors(std::cerr, GlobalError::DEBUG);
+ return 42;
+ }
+
+ return execv(CmdL.FileList[0], const_cast<char**>(CmdL.FileList));
+}
diff --git a/test/interactive-helper/aptwebserver.cc b/test/interactive-helper/aptwebserver.cc
new file mode 100644
index 000000000..4b98cbd7c
--- /dev/null
+++ b/test/interactive-helper/aptwebserver.cc
@@ -0,0 +1,964 @@
+#include <config.h>
+
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+
+#include "teestream.h"
+
+#include <dirent.h>
+#include <errno.h>
+#include <netinet/in.h>
+#include <pthread.h>
+#include <regex.h>
+#include <signal.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <time.h>
+#include <unistd.h>
+
+#include <algorithm>
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <list>
+#include <string>
+#include <thread>
+#include <vector>
+
+static std::string httpcodeToStr(int const httpcode) /*{{{*/
+{
+ switch (httpcode)
+ {
+ // Informational 1xx
+ case 100: return _config->Find("aptwebserver::httpcode::100", "100 Continue");
+ case 101: return _config->Find("aptwebserver::httpcode::101", "101 Switching Protocols");
+ // Successful 2xx
+ case 200: return _config->Find("aptwebserver::httpcode::200", "200 OK");
+ case 201: return _config->Find("aptwebserver::httpcode::201", "201 Created");
+ case 202: return _config->Find("aptwebserver::httpcode::202", "202 Accepted");
+ case 203: return _config->Find("aptwebserver::httpcode::203", "203 Non-Authoritative Information");
+ case 204: return _config->Find("aptwebserver::httpcode::204", "204 No Content");
+ case 205: return _config->Find("aptwebserver::httpcode::205", "205 Reset Content");
+ case 206: return _config->Find("aptwebserver::httpcode::206", "206 Partial Content");
+ // Redirections 3xx
+ case 300: return _config->Find("aptwebserver::httpcode::300", "300 Multiple Choices");
+ case 301: return _config->Find("aptwebserver::httpcode::301", "301 Moved Permanently");
+ case 302: return _config->Find("aptwebserver::httpcode::302", "302 Found");
+ case 303: return _config->Find("aptwebserver::httpcode::303", "303 See Other");
+ case 304: return _config->Find("aptwebserver::httpcode::304", "304 Not Modified");
+ case 305: return _config->Find("aptwebserver::httpcode::305", "305 Use Proxy");
+ case 307: return _config->Find("aptwebserver::httpcode::307", "307 Temporary Redirect");
+ // Client errors 4xx
+ case 400: return _config->Find("aptwebserver::httpcode::400", "400 Bad Request");
+ case 401: return _config->Find("aptwebserver::httpcode::401", "401 Unauthorized");
+ case 402: return _config->Find("aptwebserver::httpcode::402", "402 Payment Required");
+ case 403: return _config->Find("aptwebserver::httpcode::403", "403 Forbidden");
+ case 404: return _config->Find("aptwebserver::httpcode::404", "404 Not Found");
+ case 405: return _config->Find("aptwebserver::httpcode::405", "405 Method Not Allowed");
+ case 406: return _config->Find("aptwebserver::httpcode::406", "406 Not Acceptable");
+ case 407: return _config->Find("aptwebserver::httpcode::407", "407 Proxy Authentication Required");
+ case 408: return _config->Find("aptwebserver::httpcode::408", "408 Request Time-out");
+ case 409: return _config->Find("aptwebserver::httpcode::409", "409 Conflict");
+ case 410: return _config->Find("aptwebserver::httpcode::410", "410 Gone");
+ case 411: return _config->Find("aptwebserver::httpcode::411", "411 Length Required");
+ case 412: return _config->Find("aptwebserver::httpcode::412", "412 Precondition Failed");
+ case 413: return _config->Find("aptwebserver::httpcode::413", "413 Request Entity Too Large");
+ case 414: return _config->Find("aptwebserver::httpcode::414", "414 Request-URI Too Large");
+ case 415: return _config->Find("aptwebserver::httpcode::415", "415 Unsupported Media Type");
+ case 416: return _config->Find("aptwebserver::httpcode::416", "416 Requested range not satisfiable");
+ case 417: return _config->Find("aptwebserver::httpcode::417", "417 Expectation Failed");
+ case 418: return _config->Find("aptwebserver::httpcode::418", "418 I'm a teapot");
+ // Server error 5xx
+ case 500: return _config->Find("aptwebserver::httpcode::500", "500 Internal Server Error");
+ case 501: return _config->Find("aptwebserver::httpcode::501", "501 Not Implemented");
+ case 502: return _config->Find("aptwebserver::httpcode::502", "502 Bad Gateway");
+ case 503: return _config->Find("aptwebserver::httpcode::503", "503 Service Unavailable");
+ case 504: return _config->Find("aptwebserver::httpcode::504", "504 Gateway Time-out");
+ case 505: return _config->Find("aptwebserver::httpcode::505", "505 HTTP Version not supported");
+ }
+ return "";
+}
+ /*}}}*/
+static bool chunkedTransferEncoding(std::list<std::string> const &headers) {
+ if (std::find(headers.begin(), headers.end(), "Transfer-Encoding: chunked") != headers.end())
+ return true;
+ if (_config->FindB("aptwebserver::chunked-transfer-encoding", false) == true)
+ return true;
+ return false;
+}
+static void addFileHeaders(std::list<std::string> &headers, FileFd &data)/*{{{*/
+{
+ if (chunkedTransferEncoding(headers) == false)
+ {
+ std::ostringstream contentlength;
+ contentlength << "Content-Length: " << data.FileSize();
+ headers.push_back(contentlength.str());
+ }
+ if (_config->FindB("aptwebserver::support::last-modified", true) == true)
+ {
+ std::string lastmodified("Last-Modified: ");
+ lastmodified.append(TimeRFC1123(data.ModificationTime(), false));
+ headers.push_back(lastmodified);
+ }
+}
+ /*}}}*/
+static void addDataHeaders(std::list<std::string> &headers, std::string &data)/*{{{*/
+{
+ if (chunkedTransferEncoding(headers) == false)
+ {
+ std::ostringstream contentlength;
+ contentlength << "Content-Length: " << data.size();
+ headers.push_back(contentlength.str());
+ }
+}
+ /*}}}*/
+static bool sendHead(std::ostream &log, int const client, int const httpcode, std::list<std::string> &headers)/*{{{*/
+{
+ std::string response("HTTP/1.1 ");
+ response.append(httpcodeToStr(httpcode));
+ headers.push_front(response);
+ _config->Set("APTWebserver::Last-Status-Code", httpcode);
+
+ std::stringstream buffer;
+ auto const empties = _config->FindVector("aptwebserver::empty-response-header");
+ for (auto && e: empties)
+ buffer << e << ":" << std::endl;
+ _config->Dump(buffer, "aptwebserver::response-header", "%t: %v%n", false);
+ std::vector<std::string> addheaders = VectorizeString(buffer.str(), '\n');
+ for (std::vector<std::string>::const_iterator h = addheaders.begin(); h != addheaders.end(); ++h)
+ headers.push_back(*h);
+
+ std::string date("Date: ");
+ date.append(TimeRFC1123(time(NULL), false));
+ headers.push_back(date);
+
+ if (chunkedTransferEncoding(headers) == true)
+ headers.push_back("Transfer-Encoding: chunked");
+
+ log << ">>> RESPONSE to " << client << " >>>" << std::endl;
+ bool Success = true;
+ for (std::list<std::string>::const_iterator h = headers.begin();
+ Success == true && h != headers.end(); ++h)
+ {
+ Success &= FileFd::Write(client, h->c_str(), h->size());
+ if (Success == true)
+ Success &= FileFd::Write(client, "\r\n", 2);
+ log << *h << std::endl;
+ }
+ if (Success == true)
+ Success &= FileFd::Write(client, "\r\n", 2);
+ log << "<<<<<<<<<<<<<<<<" << std::endl;
+ return Success;
+}
+ /*}}}*/
+static bool sendFile(int const client, std::list<std::string> const &headers, FileFd &data)/*{{{*/
+{
+ bool Success = true;
+ bool const chunked = chunkedTransferEncoding(headers);
+ char buffer[500];
+ unsigned long long actual = 0;
+ while ((Success &= data.Read(buffer, sizeof(buffer), &actual)) == true)
+ {
+ if (actual == 0)
+ break;
+
+ if (chunked == true)
+ {
+ std::string size;
+ strprintf(size, "%llX\r\n", actual);
+ Success &= FileFd::Write(client, size.c_str(), size.size());
+ Success &= FileFd::Write(client, buffer, actual);
+ Success &= FileFd::Write(client, "\r\n", strlen("\r\n"));
+ }
+ else
+ Success &= FileFd::Write(client, buffer, actual);
+ }
+ if (chunked == true)
+ {
+ char const * const finish = "0\r\n\r\n";
+ Success &= FileFd::Write(client, finish, strlen(finish));
+ }
+ if (Success == false)
+ std::cerr << "SENDFILE:" << (chunked ? " CHUNKED" : "") << " READ/WRITE ERROR to " << client << std::endl;
+ return Success;
+}
+ /*}}}*/
+static bool sendData(int const client, std::list<std::string> const &headers, std::string const &data)/*{{{*/
+{
+ if (chunkedTransferEncoding(headers) == true)
+ {
+ unsigned long long const ullsize = data.length();
+ std::string size;
+ strprintf(size, "%llX\r\n", ullsize);
+ char const * const finish = "\r\n0\r\n\r\n";
+ if (FileFd::Write(client, size.c_str(), size.length()) == false ||
+ FileFd::Write(client, data.c_str(), ullsize) == false ||
+ FileFd::Write(client, finish, strlen(finish)) == false)
+ {
+ std::cerr << "SENDDATA: CHUNK WRITE ERROR to " << client << std::endl;
+ return false;
+ }
+ }
+ else if (FileFd::Write(client, data.c_str(), data.size()) == false)
+ {
+ std::cerr << "SENDDATA: WRITE ERROR to " << client << std::endl;
+ return false;
+ }
+ return true;
+}
+ /*}}}*/
+static void sendError(std::ostream &log, int const client, int const httpcode, std::string const &request,/*{{{*/
+ bool const content, std::string const &error, std::list<std::string> &headers)
+{
+ std::string response("<!doctype html><html><head><title>");
+ response.append(httpcodeToStr(httpcode)).append("</title><meta charset=\"utf-8\" /></head>");
+ response.append("<body><h1>").append(httpcodeToStr(httpcode)).append("</h1>");
+ if (httpcode != 200)
+ response.append("<p><em>Error</em>: ");
+ else
+ response.append("<p><em>Success</em>: ");
+ if (error.empty() == false)
+ response.append(error);
+ else
+ response.append(httpcodeToStr(httpcode));
+ if (httpcode != 200)
+ response.append("</p>This error is a result of the request: <pre>");
+ else
+ response.append("The successfully executed operation was requested by: <pre>");
+ response.append(request).append("</pre></body></html>");
+ if (httpcode != 200)
+ {
+ if (_config->FindB("aptwebserver::closeOnError", false) == true)
+ headers.push_back("Connection: close");
+ }
+ addDataHeaders(headers, response);
+ sendHead(log, client, httpcode, headers);
+ if (content == true)
+ sendData(client, headers, response);
+}
+static void sendSuccess(std::ostream &log, int const client, std::string const &request,
+ bool const content, std::string const &error, std::list<std::string> &headers)
+{
+ sendError(log, client, 200, request, content, error, headers);
+}
+ /*}}}*/
+static void sendRedirect(std::ostream &log, int const client, int const httpcode,/*{{{*/
+ std::string const &uri, std::string const &request, bool content)
+{
+ std::list<std::string> headers;
+ std::string response("<!doctype html><html><head><title>");
+ response.append(httpcodeToStr(httpcode)).append("</title><meta charset=\"utf-8\" /></head>");
+ response.append("<body><h1>").append(httpcodeToStr(httpcode)).append("</h1");
+ response.append("<p>You should be redirected to <em>").append(uri).append("</em></p>");
+ response.append("This page is a result of the request: <pre>");
+ response.append(request).append("</pre></body></html>");
+ addDataHeaders(headers, response);
+ std::string location("Location: ");
+ if (strncmp(uri.c_str(), "http://", 7) != 0 && strncmp(uri.c_str(), "https://", 8) != 0)
+ {
+ std::string const host = LookupTag(request, "Host");
+ unsigned int const httpsport = _config->FindI("aptwebserver::port::https", 4433);
+ std::string hosthttpsport;
+ strprintf(hosthttpsport, ":%u", httpsport);
+ if (host.find(hosthttpsport) != std::string::npos)
+ location.append("https://");
+ else
+ location.append("http://");
+ location.append(host).append("/");
+ if (strncmp("/home/", uri.c_str(), strlen("/home/")) == 0 && uri.find("/public_html/") != std::string::npos)
+ {
+ std::string homeuri = SubstVar(uri, "/home/", "~");
+ homeuri = SubstVar(homeuri, "/public_html/", "/");
+ location.append(homeuri);
+ }
+ else
+ location.append(uri);
+ }
+ else
+ location.append(uri);
+ headers.push_back(location);
+ sendHead(log, client, httpcode, headers);
+ if (content == true)
+ sendData(client, headers, response);
+}
+ /*}}}*/
+static int filter_hidden_files(const struct dirent *a) /*{{{*/
+{
+ if (a->d_name[0] == '.')
+ return 0;
+#ifdef _DIRENT_HAVE_D_TYPE
+ // if we have the d_type check that only files and dirs will be included
+ if (a->d_type != DT_UNKNOWN &&
+ a->d_type != DT_REG &&
+ a->d_type != DT_LNK && // this includes links to regular files
+ a->d_type != DT_DIR)
+ return 0;
+#endif
+ return 1;
+}
+static int grouped_alpha_case_sort(const struct dirent **a, const struct dirent **b) {
+#ifdef _DIRENT_HAVE_D_TYPE
+ if ((*a)->d_type == DT_DIR && (*b)->d_type == DT_DIR);
+ else if ((*a)->d_type == DT_DIR && (*b)->d_type == DT_REG)
+ return -1;
+ else if ((*b)->d_type == DT_DIR && (*a)->d_type == DT_REG)
+ return 1;
+ else
+#endif
+ {
+ struct stat f_prop; //File's property
+ stat((*a)->d_name, &f_prop);
+ int const amode = f_prop.st_mode;
+ stat((*b)->d_name, &f_prop);
+ int const bmode = f_prop.st_mode;
+ if (S_ISDIR(amode) && S_ISDIR(bmode));
+ else if (S_ISDIR(amode))
+ return -1;
+ else if (S_ISDIR(bmode))
+ return 1;
+ }
+ return strcasecmp((*a)->d_name, (*b)->d_name);
+}
+ /*}}}*/
+static void sendDirectoryListing(std::ostream &log, int const client, std::string const &dir,/*{{{*/
+ std::string const &request, bool content, std::list<std::string> &headers)
+{
+ struct dirent **namelist;
+ int const counter = scandir(dir.c_str(), &namelist, filter_hidden_files, grouped_alpha_case_sort);
+ if (counter == -1)
+ {
+ sendError(log, client, 500, request, content, "scandir failed", headers);
+ return;
+ }
+
+ std::ostringstream listing;
+ listing << "<!doctype html><html><head><title>Index of " << dir << "</title><meta charset=\"utf-8\" />"
+ << "<style type=\"text/css\"><!-- td {padding: 0.02em 0.5em 0.02em 0.5em;}"
+ << "tr:nth-child(even){background-color:#dfdfdf;}"
+ << "h1, td:nth-child(3){text-align:center;}"
+ << "table {margin-left:auto;margin-right:auto;} --></style>"
+ << "</head>" << std::endl
+ << "<body><h1>Index of " << dir << "</h1>" << std::endl
+ << "<table><tr><th>#</th><th>Name</th><th>Size</th><th>Last-Modified</th></tr>" << std::endl;
+ if (dir != "./")
+ listing << "<tr><td>d</td><td><a href=\"..\">Parent Directory</a></td><td>-</td><td>-</td></tr>";
+ for (int i = 0; i < counter; ++i) {
+ struct stat fs;
+ std::string filename(dir);
+ filename.append("/").append(namelist[i]->d_name);
+ stat(filename.c_str(), &fs);
+ if (S_ISDIR(fs.st_mode))
+ {
+ listing << "<tr><td>d</td>"
+ << "<td><a href=\"" << namelist[i]->d_name << "/\">" << namelist[i]->d_name << "</a></td>"
+ << "<td>-</td>";
+ }
+ else
+ {
+ listing << "<tr><td>f</td>"
+ << "<td><a href=\"" << namelist[i]->d_name << "\">" << namelist[i]->d_name << "</a></td>"
+ << "<td>" << SizeToStr(fs.st_size) << "B</td>";
+ }
+ listing << "<td>" << TimeRFC1123(fs.st_mtime, true) << "</td></tr>" << std::endl;
+ }
+ listing << "</table></body></html>" << std::endl;
+
+ std::string response(listing.str());
+ addDataHeaders(headers, response);
+ sendHead(log, client, 200, headers);
+ if (content == true)
+ sendData(client, headers, response);
+}
+ /*}}}*/
+static bool parseFirstLine(std::ostream &log, int const client, std::string const &request,/*{{{*/
+ std::string &filename, std::string &params, bool &sendContent,
+ bool &closeConnection, std::list<std::string> &headers)
+{
+ if (strncmp(request.c_str(), "HEAD ", 5) == 0)
+ sendContent = false;
+ if (strncmp(request.c_str(), "GET ", 4) != 0)
+ {
+ sendError(log, client, 501, request, true, "", headers);
+ return false;
+ }
+
+ size_t const lineend = request.find('\n');
+ size_t filestart = request.find(' ');
+ for (; request[filestart] == ' '; ++filestart);
+ size_t fileend = request.rfind(' ', lineend);
+ if (lineend == std::string::npos || filestart == std::string::npos ||
+ fileend == std::string::npos || filestart == fileend)
+ {
+ sendError(log, client, 500, request, sendContent, "Filename can't be extracted", headers);
+ return false;
+ }
+
+ size_t httpstart = fileend;
+ for (; request[httpstart] == ' '; ++httpstart);
+ if (strncmp(request.c_str() + httpstart, "HTTP/1.1\r", 9) == 0)
+ closeConnection = strcasecmp(LookupTag(request, "Connection", "Keep-Alive").c_str(), "Keep-Alive") != 0;
+ else if (strncmp(request.c_str() + httpstart, "HTTP/1.0\r", 9) == 0)
+ closeConnection = strcasecmp(LookupTag(request, "Connection", "Keep-Alive").c_str(), "close") == 0;
+ else
+ {
+ sendError(log, client, 500, request, sendContent, "Not a HTTP/1.{0,1} request", headers);
+ return false;
+ }
+
+ filename = request.substr(filestart, fileend - filestart);
+ if (filename.find(' ') != std::string::npos)
+ {
+ sendError(log, client, 500, request, sendContent, "Filename contains an unencoded space", headers);
+ return false;
+ }
+
+ std::string host = LookupTag(request, "Host", "");
+ if (host.empty() == true)
+ {
+ // RFC 2616 §14.23 requires Host
+ sendError(log, client, 400, request, sendContent, "Host header is required", headers);
+ return false;
+ }
+ host = "http://" + host;
+
+ // Proxies require absolute uris, so this is a simple proxy-fake option
+ std::string const absolute = _config->Find("aptwebserver::request::absolute", "uri,path");
+ if (strncmp(host.c_str(), filename.c_str(), host.length()) == 0 && APT::String::Startswith(filename, "/_config/") == false)
+ {
+ if (absolute.find("uri") == std::string::npos)
+ {
+ sendError(log, client, 400, request, sendContent, "Request is absoluteURI, but configured to not accept that", headers);
+ return false;
+ }
+
+ // strip the host from the request to make it an absolute path
+ filename.erase(0, host.length());
+
+ std::string const authConf = _config->Find("aptwebserver::proxy-authorization", "");
+ std::string auth = LookupTag(request, "Proxy-Authorization", "");
+ if (authConf.empty() != auth.empty())
+ {
+ if (auth.empty())
+ sendError(log, client, 407, request, sendContent, "Proxy requires authentication", headers);
+ else
+ sendError(log, client, 407, request, sendContent, "Client wants to authenticate to proxy, but proxy doesn't need it", headers);
+ return false;
+ }
+ if (authConf.empty() == false)
+ {
+ char const * const basic = "Basic ";
+ if (strncmp(auth.c_str(), basic, strlen(basic)) == 0)
+ {
+ auth.erase(0, strlen(basic));
+ if (auth != authConf)
+ {
+ sendError(log, client, 407, request, sendContent, "Proxy-Authentication doesn't match", headers);
+ return false;
+ }
+ }
+ else
+ {
+ std::list<std::string> headers;
+ headers.push_back("Proxy-Authenticate: Basic");
+ sendError(log, client, 407, request, sendContent, "Unsupported Proxy-Authentication Scheme", headers);
+ return false;
+ }
+ }
+ }
+ else if (absolute.find("path") == std::string::npos && APT::String::Startswith(filename, "/_config/") == false)
+ {
+ sendError(log, client, 400, request, sendContent, "Request is absolutePath, but configured to not accept that", headers);
+ return false;
+ }
+
+ if (APT::String::Startswith(filename, "/_config/") == false)
+ {
+ std::string const authConf = _config->Find("aptwebserver::authorization", "");
+ std::string auth = LookupTag(request, "Authorization", "");
+ if (authConf.empty() != auth.empty())
+ {
+ if (auth.empty())
+ sendError(log, client, 401, request, sendContent, "Server requires authentication", headers);
+ else
+ sendError(log, client, 401, request, sendContent, "Client wants to authenticate to server, but server doesn't need it", headers);
+ return false;
+ }
+ if (authConf.empty() == false)
+ {
+ char const * const basic = "Basic ";
+ if (strncmp(auth.c_str(), basic, strlen(basic)) == 0)
+ {
+ auth.erase(0, strlen(basic));
+ if (auth != authConf)
+ {
+ sendError(log, client, 401, request, sendContent, "Authentication doesn't match", headers);
+ return false;
+ }
+ }
+ else
+ {
+ headers.push_back("WWW-Authenticate: Basic");
+ sendError(log, client, 401, request, sendContent, "Unsupported Authentication Scheme", headers);
+ return false;
+ }
+ }
+ }
+
+ size_t paramspos = filename.find('?');
+ if (paramspos != std::string::npos)
+ {
+ params = filename.substr(paramspos + 1);
+ filename.erase(paramspos);
+ }
+
+ filename = DeQuoteString(filename);
+
+ // this is not a secure server, but at least prevent the obvious …
+ if (filename.empty() == true || filename[0] != '/' ||
+ strncmp(filename.c_str(), "//", 2) == 0 ||
+ filename.find_first_of("\r\n\t\f\v") != std::string::npos ||
+ filename.find("/../") != std::string::npos)
+ {
+ std::list<std::string> headers;
+ sendError(log, client, 400, request, sendContent, "Filename contains illegal character (sequence)", headers);
+ return false;
+ }
+
+ // nuke the first character which is a / as we assured above
+ filename.erase(0, 1);
+ if (filename.empty() == true)
+ filename = "./";
+ // support ~user/ uris to refer to /home/user/public_html/ as a kind-of special directory
+ else if (filename[0] == '~')
+ {
+ // /home/user is actually not entirely correct, but good enough for now
+ size_t dashpos = filename.find('/');
+ if (dashpos != std::string::npos)
+ {
+ std::string home = filename.substr(1, filename.find('/') - 1);
+ std::string pubhtml = filename.substr(filename.find('/') + 1);
+ filename = "/home/" + home + "/public_html/" + pubhtml;
+ }
+ else
+ filename = "/home/" + filename.substr(1) + "/public_html/";
+ }
+
+ // if no filename is given, but a valid directory see if we can use an index or
+ // have to resort to a autogenerated directory listing later on
+ if (DirectoryExists(filename) == true)
+ {
+ std::string const directoryIndex = _config->Find("aptwebserver::directoryindex");
+ if (directoryIndex.empty() == false && directoryIndex == flNotDir(directoryIndex) &&
+ RealFileExists(filename + directoryIndex) == true)
+ filename += directoryIndex;
+ }
+
+ return true;
+}
+ /*}}}*/
+static bool handleOnTheFlyReconfiguration(std::ostream &log, int const client,/*{{{*/
+ std::string const &request, std::vector<std::string> parts, std::list<std::string> &headers)
+{
+ size_t const pcount = parts.size();
+ for (size_t i = 0; i < pcount; ++i)
+ parts[i] = DeQuoteString(parts[i]);
+ if (pcount == 4 && parts[1] == "set")
+ {
+ _config->Set(parts[2], parts[3]);
+ sendSuccess(log, client, request, true, "Option '" + parts[2] + "' was set to '" + parts[3] + "'!", headers);
+ return true;
+ }
+ else if (pcount == 4 && parts[1] == "find")
+ {
+ std::string response = _config->Find(parts[2], parts[3]);
+ addDataHeaders(headers, response);
+ sendHead(log, client, 200, headers);
+ sendData(client, headers, response);
+ return true;
+ }
+ else if (pcount == 3 && parts[1] == "find")
+ {
+ if (_config->Exists(parts[2]) == true)
+ {
+ std::string response = _config->Find(parts[2]);
+ addDataHeaders(headers, response);
+ sendHead(log, client, 200, headers);
+ sendData(client, headers, response);
+ return true;
+ }
+ sendError(log, client, 404, request, true, "Requested Configuration option doesn't exist", headers);
+ return false;
+ }
+ else if (pcount == 3 && parts[1] == "clear")
+ {
+ _config->Clear(parts[2]);
+ sendSuccess(log, client, request, true, "Option '" + parts[2] + "' was cleared.", headers);
+ return true;
+ }
+
+ sendError(log, client, 400, request, true, "Unknown on-the-fly configuration request", headers);
+ return false;
+}
+ /*}}}*/
+static void * handleClient(int const client, size_t const id) /*{{{*/
+{
+ auto logfilepath = _config->FindFile("aptwebserver::logfiles");
+ if (logfilepath.empty() == false)
+ strprintf(logfilepath, "%s.client-%lu.log", logfilepath.c_str(), id);
+ else
+ logfilepath = "/dev/null";
+ std::ofstream logfile(logfilepath);
+ basic_teeostream<char> log(std::clog, logfile);
+
+ log << "ACCEPT client " << client << std::endl;
+ bool closeConnection = false;
+ while (closeConnection == false)
+ {
+ std::vector<std::string> messages;
+ if (ReadMessages(client, messages) == false)
+ break;
+
+ std::list<std::string> headers;
+ for (std::vector<std::string>::const_iterator m = messages.begin();
+ m != messages.end() && closeConnection == false; ++m) {
+ // if we announced a closing in previous response, do the close now
+ if (std::find(headers.begin(), headers.end(), std::string("Connection: close")) != headers.end())
+ {
+ closeConnection = true;
+ break;
+ }
+ headers.clear();
+
+ log << ">>> REQUEST from " << client << " >>>" << std::endl << *m
+ << std::endl << "<<<<<<<<<<<<<<<<" << std::endl;
+ std::string filename;
+ std::string params;
+ bool sendContent = true;
+ if (parseFirstLine(log, client, *m, filename, params, sendContent, closeConnection, headers) == false)
+ continue;
+
+ // special webserver command request
+ if (filename.length() > 1 && filename[0] == '_')
+ {
+ std::vector<std::string> parts = VectorizeString(filename, '/');
+ if (parts[0] == "_config")
+ {
+ handleOnTheFlyReconfiguration(log, client, *m, parts, headers);
+ continue;
+ }
+ }
+
+ // string replacements in the requested filename
+ ::Configuration::Item const *Replaces = _config->Tree("aptwebserver::redirect::replace");
+ if (Replaces != NULL)
+ {
+ std::string redirect = "/" + filename;
+ for (::Configuration::Item *I = Replaces->Child; I != NULL; I = I->Next)
+ redirect = SubstVar(redirect, I->Tag, I->Value);
+ if (redirect.empty() == false && redirect[0] == '/')
+ redirect.erase(0,1);
+ if (redirect != filename)
+ {
+ sendRedirect(log, client, _config->FindI("aptwebserver::redirect::httpcode", 301), redirect, *m, sendContent);
+ continue;
+ }
+ }
+
+ ::Configuration::Item const *Overwrite = _config->Tree("aptwebserver::overwrite");
+ if (Overwrite != NULL)
+ {
+ for (::Configuration::Item *I = Overwrite->Child; I != NULL; I = I->Next)
+ {
+ regex_t *pattern = new regex_t;
+ int const res = regcomp(pattern, I->Tag.c_str(), REG_EXTENDED | REG_ICASE | REG_NOSUB);
+ if (res != 0)
+ {
+ char error[300];
+ regerror(res, pattern, error, sizeof(error));
+ sendError(log, client, 500, *m, sendContent, error, headers);
+ continue;
+ }
+ if (regexec(pattern, filename.c_str(), 0, 0, 0) == 0)
+ {
+ filename = _config->Find("aptwebserver::overwrite::" + I->Tag + "::filename", filename);
+ if (filename[0] == '/')
+ filename.erase(0,1);
+ regfree(pattern);
+ break;
+ }
+ regfree(pattern);
+ }
+ }
+
+ // deal with the request
+ unsigned int const httpsport = _config->FindI("aptwebserver::port::https", 4433);
+ std::string hosthttpsport;
+ strprintf(hosthttpsport, ":%u", httpsport);
+ if (_config->FindB("aptwebserver::support::http", true) == false &&
+ LookupTag(*m, "Host").find(hosthttpsport) == std::string::npos)
+ {
+ sendError(log, client, 400, *m, sendContent, "HTTP disabled, all requests must be HTTPS", headers);
+ continue;
+ }
+ else if (RealFileExists(filename) == true)
+ {
+ FileFd data(filename, FileFd::ReadOnly);
+ std::string condition = LookupTag(*m, "If-Modified-Since", "");
+ if (_config->FindB("aptwebserver::support::modified-since", true) == true && condition.empty() == false)
+ {
+ time_t cache;
+ if (RFC1123StrToTime(condition.c_str(), cache) == true &&
+ cache >= data.ModificationTime())
+ {
+ sendHead(log, client, 304, headers);
+ continue;
+ }
+ }
+
+ if (_config->FindB("aptwebserver::support::range", true) == true)
+ condition = LookupTag(*m, "Range", "");
+ else
+ condition.clear();
+ if (condition.empty() == false && strncmp(condition.c_str(), "bytes=", 6) == 0)
+ {
+ std::string ranges = ',' + _config->Find("aptwebserver::response-header::Accept-Ranges") + ',';
+ ranges.erase(std::remove(ranges.begin(), ranges.end(), ' '), ranges.end());
+ if (ranges.find(",bytes,") == std::string::npos)
+ {
+ // we handle it as an error here because we are a test server - a real one should just ignore it
+ sendError(log, client, 400, *m, sendContent, "Client does range requests we don't support", headers);
+ continue;
+ }
+
+ time_t cache;
+ std::string ifrange;
+ if (_config->FindB("aptwebserver::support::if-range", true) == true)
+ ifrange = LookupTag(*m, "If-Range", "");
+ bool validrange = (ifrange.empty() == true ||
+ (RFC1123StrToTime(ifrange.c_str(), cache) == true &&
+ cache <= data.ModificationTime()));
+
+ // FIXME: support multiple byte-ranges (APT clients do not do this)
+ if (condition.find(',') == std::string::npos)
+ {
+ size_t start = 6;
+ unsigned long long filestart = strtoull(condition.c_str() + start, NULL, 10);
+ // FIXME: no support for last-byte-pos being not the end of the file (APT clients do not do this)
+ size_t dash = condition.find('-') + 1;
+ unsigned long long fileend = strtoull(condition.c_str() + dash, NULL, 10);
+ unsigned long long filesize = data.FileSize();
+ if ((fileend == 0 || (fileend == filesize && fileend >= filestart)) &&
+ validrange == true)
+ {
+ if (filesize > filestart)
+ {
+ data.Skip(filestart);
+ // make sure to send content-range before conent-length
+ // as regression test for LP: #1445239
+ std::ostringstream contentrange;
+ contentrange << "Content-Range: bytes " << filestart << "-"
+ << filesize - 1 << "/" << filesize;
+ headers.push_back(contentrange.str());
+ std::ostringstream contentlength;
+ contentlength << "Content-Length: " << (filesize - filestart);
+ headers.push_back(contentlength.str());
+ sendHead(log, client, 206, headers);
+ if (sendContent == true)
+ sendFile(client, headers, data);
+ continue;
+ }
+ else
+ {
+ if (_config->FindB("aptwebserver::support::content-range", true) == true)
+ {
+ std::ostringstream contentrange;
+ contentrange << "Content-Range: bytes */" << filesize;
+ headers.push_back(contentrange.str());
+ }
+ sendError(log, client, 416, *m, sendContent, "", headers);
+ continue;
+ }
+ }
+ }
+ }
+
+ addFileHeaders(headers, data);
+ sendHead(log, client, 200, headers);
+ if (sendContent == true)
+ sendFile(client, headers, data);
+ }
+ else if (DirectoryExists(filename) == true)
+ {
+ if (filename[filename.length()-1] == '/')
+ sendDirectoryListing(log, client, filename, *m, sendContent, headers);
+ else
+ sendRedirect(log, client, 301, filename.append("/"), *m, sendContent);
+ }
+ else
+ sendError(log, client, 404, *m, sendContent, "", headers);
+ }
+
+ // if we announced a closing in the last response, do the close now
+ if (std::find(headers.begin(), headers.end(), std::string("Connection: close")) != headers.end())
+ closeConnection = true;
+
+ if (_error->PendingError() == true)
+ break;
+ _error->DumpErrors(std::cerr);
+ }
+ _error->DumpErrors(std::cerr);
+ close(client);
+ log << "CLOSE client " << client << std::endl;
+ return NULL;
+}
+ /*}}}*/
+
+int main(int const argc, const char * argv[])
+{
+ CommandLine::Args Args[] = {
+ {'p', "port", "aptwebserver::port", CommandLine::HasArg},
+ {0, "request-absolute", "aptwebserver::request::absolute", CommandLine::HasArg},
+ {0, "authorization", "aptwebserver::authorization", CommandLine::HasArg},
+ {0, "proxy-authorization", "aptwebserver::proxy-authorization", CommandLine::HasArg},
+ {0, "logfiles", "aptwebserver::logfiles", CommandLine::HasArg},
+ {'c',"config-file",0,CommandLine::ConfigFile},
+ {'o',"option",0,CommandLine::ArbItem},
+ {0,0,0,0}
+ };
+
+ CommandLine CmdL(Args, _config);
+ if(CmdL.Parse(argc,argv) == false)
+ {
+ _error->DumpErrors();
+ exit(1);
+ }
+
+ // create socket, bind and listen to it {{{
+ // ignore SIGPIPE, this can happen on write() if the socket closes connection
+ signal(SIGPIPE, SIG_IGN);
+ // we don't care for our slaves, so ignore their death
+ signal(SIGCHLD, SIG_IGN);
+
+ int sock = socket(AF_INET6, SOCK_STREAM, 0);
+ if(sock < 0)
+ {
+ _error->Errno("aptwerbserver", "Couldn't create socket");
+ _error->DumpErrors(std::cerr);
+ return 1;
+ }
+
+ int port = _config->FindI("aptwebserver::port", 8080);
+
+ // ensure that we accept all connections: v4 or v6
+ int const iponly = 0;
+ setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, &iponly, sizeof(iponly));
+ // to not linger on an address
+ int const enable = 1;
+ setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof(enable));
+
+ struct sockaddr_in6 locAddr;
+ memset(&locAddr, 0, sizeof(locAddr));
+ locAddr.sin6_family = AF_INET6;
+ locAddr.sin6_port = htons(port);
+ locAddr.sin6_addr = in6addr_any;
+
+ if (bind(sock, (struct sockaddr*) &locAddr, sizeof(locAddr)) < 0)
+ {
+ _error->Errno("aptwerbserver", "Couldn't bind");
+ _error->DumpErrors(std::cerr);
+ return 2;
+ }
+
+ if (port == 0)
+ {
+ struct sockaddr_in6 addr;
+ socklen_t addrlen = sizeof(sockaddr_in6);
+ if (getsockname(sock, (struct sockaddr*) &addr, &addrlen) != 0)
+ _error->Errno("getsockname", "Could not get chosen port number");
+ else
+ port = ntohs(addr.sin6_port);
+ }
+ std::string const portfilename = _config->Find("aptwebserver::portfile", "");
+ if (portfilename.empty() == false)
+ {
+ FileFd portfile(portfilename, FileFd::WriteOnly | FileFd::Create | FileFd::Empty);
+ std::string portcontent;
+ strprintf(portcontent, "%d", port);
+ portfile.Write(portcontent.c_str(), portcontent.size());
+ portfile.Sync();
+ }
+ _config->Set("aptwebserver::port::http", port);
+
+ FileFd pidfile;
+ if (_config->FindB("aptwebserver::fork", false) == true)
+ {
+ std::string const pidfilename = _config->Find("aptwebserver::pidfile", "aptwebserver.pid");
+ int const pidfilefd = GetLock(pidfilename);
+ if (pidfilefd < 0 || pidfile.OpenDescriptor(pidfilefd, FileFd::WriteOnly) == false)
+ {
+ _error->Errno("aptwebserver", "Couldn't acquire lock on pidfile '%s'", pidfilename.c_str());
+ _error->DumpErrors(std::cerr);
+ return 3;
+ }
+
+ pid_t child = fork();
+ if (child < 0)
+ {
+ _error->Errno("aptwebserver", "Forking failed");
+ _error->DumpErrors(std::cerr);
+ return 4;
+ }
+ else if (child != 0)
+ {
+ // successfully forked: ready to serve!
+ std::string pidcontent;
+ strprintf(pidcontent, "%d", child);
+ pidfile.Write(pidcontent.c_str(), pidcontent.size());
+ pidfile.Sync();
+ if (_error->PendingError() == true)
+ {
+ _error->DumpErrors(std::cerr);
+ return 5;
+ }
+ std::cout << "Successfully forked as " << child << std::endl;
+ return 0;
+ }
+ }
+
+ std::clog << "Serving ANY file on port: " << port << std::endl;
+
+ int const slaves = _config->FindI("aptwebserver::slaves", SOMAXCONN);
+ std::cerr << "SLAVES: " << slaves << std::endl;
+ listen(sock, slaves);
+ /*}}}*/
+
+ _config->CndSet("aptwebserver::response-header::Server", "APT webserver");
+ _config->CndSet("aptwebserver::response-header::Accept-Ranges", "bytes");
+ _config->CndSet("aptwebserver::directoryindex", "index.html");
+
+ size_t id = 0;
+ while (true)
+ {
+ int client = accept(sock, NULL, NULL);
+ if (client == -1)
+ {
+ if (errno == EINTR)
+ continue;
+ _error->Errno("accept", "Couldn't accept client on socket %d", sock);
+ _error->DumpErrors(std::cerr);
+ return 6;
+ }
+
+ std::thread t(handleClient, client, ++id);
+ t.detach();
+ }
+ pidfile.Close();
+
+ return 0;
+}
diff --git a/test/interactive-helper/extract-control.cc b/test/interactive-helper/extract-control.cc
new file mode 100644
index 000000000..852ec4ee9
--- /dev/null
+++ b/test/interactive-helper/extract-control.cc
@@ -0,0 +1,45 @@
+#include <config.h>
+
+#include <apt-pkg/debfile.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+
+#include <string>
+#include <iostream>
+#include <unistd.h>
+
+using namespace std;
+
+static bool ExtractMember(const char *File,const char *Member)
+{
+ FileFd Fd(File,FileFd::ReadOnly);
+ debDebFile Deb(Fd);
+ if(_error->PendingError() == true)
+ return false;
+
+ debDebFile::MemControlExtract Extract(Member);
+ if (Extract.Read(Deb) == false)
+ return false;
+
+ if (Extract.Control == 0)
+ return true;
+
+ return write(STDOUT_FILENO,Extract.Control,Extract.Length) != -1;
+}
+
+int main(int argc, const char *argv[])
+{
+ if (argc < 2)
+ {
+ cerr << "Need two arguments, a .deb and the control member" << endl;
+ return 100;
+ }
+
+ if (ExtractMember(argv[1],argv[2]) == false)
+ {
+ _error->DumpErrors();
+ return 100;
+ }
+
+ return 0;
+}
diff --git a/test/interactive-helper/libnoprofile.c b/test/interactive-helper/libnoprofile.c
new file mode 100644
index 000000000..2cba6dc8b
--- /dev/null
+++ b/test/interactive-helper/libnoprofile.c
@@ -0,0 +1,50 @@
+#define _GNU_SOURCE
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <dlfcn.h>
+#include <unistd.h>
+#include <stdio.h>
+
+int vprintf(const char *format, va_list ap) {
+ static int (*func_fprintf)(const char *format, va_list ap) = NULL;
+ if (func_fprintf == NULL)
+ func_fprintf = (int (*) (const char *format, va_list ap)) dlsym(RTLD_NEXT, "vprintf");
+
+ va_list ap2;
+ va_copy(ap2, ap);
+ if (strncmp(format, "profiling:", strlen("profiling:")) == 0)
+ return 0;
+ int res = func_fprintf(format, ap2);
+ va_end(ap2);
+ return res;
+}
+int printf(const char *format, ...) {
+ va_list ap;
+ va_start(ap, format);
+ int res = vprintf(format, ap);
+ va_end(ap);
+ return res;
+}
+
+int vfprintf(FILE *stream, const char *format, va_list ap) {
+ static int (*func_vfprintf)(FILE *stream, const char *format, va_list ap) = NULL;
+ if (func_vfprintf == NULL)
+ func_vfprintf = (int (*) (FILE *stream, const char *format, va_list ap)) dlsym(RTLD_NEXT, "vfprintf");
+
+ va_list ap2;
+ va_copy(ap2, ap);
+ if (strncmp(format, "profiling:", strlen("profiling:")) == 0)
+ return 0;
+ int res = func_vfprintf(stream, format, ap2);
+ va_end(ap2);
+ return res;
+}
+
+int fprintf(FILE *stream, const char *format, ...) {
+ va_list ap;
+ va_start(ap, format);
+ int res = vfprintf(stream, format, ap);
+ va_end(ap);
+ return res;
+}
diff --git a/test/interactive-helper/mthdcat.cc b/test/interactive-helper/mthdcat.cc
new file mode 100644
index 000000000..2961b2080
--- /dev/null
+++ b/test/interactive-helper/mthdcat.cc
@@ -0,0 +1,22 @@
+/* Usage, mthdcat < cmds | methods/mthd
+ All this does is cat a file into the method without closing the FD when
+ the file ends */
+
+#include <config.h>
+
+#include <unistd.h>
+
+int main()
+{
+ char Buffer[4096];
+
+ while (1)
+ {
+ int Res = read(STDIN_FILENO,Buffer,sizeof(Buffer));
+ if (Res <= 0)
+ while (1) sleep(100);
+ if (write(STDOUT_FILENO,Buffer,Res) != Res)
+ break;
+ }
+ return 0;
+}
diff --git a/test/interactive-helper/networkless-install-fixes/README b/test/interactive-helper/networkless-install-fixes/README
new file mode 100644
index 000000000..e7ee2b03d
--- /dev/null
+++ b/test/interactive-helper/networkless-install-fixes/README
@@ -0,0 +1,5 @@
+
+Those tests aim at making the networkless install timeout
+quicker, see
+https://wiki.ubuntu.com/NetworklessInstallationFixes
+for details
diff --git a/test/interactive-helper/networkless-install-fixes/sources.test.list b/test/interactive-helper/networkless-install-fixes/sources.test.list
new file mode 100644
index 000000000..380e1804d
--- /dev/null
+++ b/test/interactive-helper/networkless-install-fixes/sources.test.list
@@ -0,0 +1,25 @@
+
+# archive.ubuntu.com
+deb http://archive.ubuntu.com/ubuntu/ hardy main restricted
+deb-src http://archive.ubuntu.com/ubuntu/ hardy main restricted
+
+deb http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted
+deb-src http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted
+
+deb http://archive.ubuntu.com/ubuntu/ hardy universe
+deb-src http://archive.ubuntu.com/ubuntu/ hardy universe
+
+deb http://archive.ubuntu.com/ubuntu/ hardy-updates universe
+deb-src http://archive.ubuntu.com/ubuntu/ hardy-updates universe
+
+# security.ubuntu.com
+deb http://security.ubuntu.com/ubuntu/ hardy-security main restricted
+deb-src http://security.ubuntu.com/ubuntu/ hardy-security main restricted
+
+deb http://security.ubuntu.com/ubuntu/ hardy-security universe
+deb-src http://security.ubuntu.com/ubuntu/ hardy-security universe
+
+
+# archive.canonical.com
+deb http://archive.canonical.com/ubuntu/ hardy-partner universe
+deb-src http://archive.canonical.com/ubuntu/ hardy-partner universe
diff --git a/test/interactive-helper/networkless-install-fixes/test.sh b/test/interactive-helper/networkless-install-fixes/test.sh
new file mode 100755
index 000000000..809d467ba
--- /dev/null
+++ b/test/interactive-helper/networkless-install-fixes/test.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+OPTS="-o Dir::Etc::sourcelist=./sources.test.list -o Acquire::http::timeout=20"
+
+# setup
+unset http_proxy
+iptables --flush
+
+echo "No network at all"
+ifdown eth0
+time apt-get update $OPTS 2>&1 |grep system
+ifup eth0
+echo ""
+
+echo "no working DNS (port 53 DROP)"
+iptables -A OUTPUT -p udp --dport 53 -j DROP
+time apt-get update $OPTS 2>&1 |grep system
+iptables --flush
+echo ""
+
+echo "DNS but no access to archive.ubuntu.com (port 80 DROP)"
+iptables -A OUTPUT -p tcp --dport 80 -j DROP
+time apt-get update $OPTS 2>&1 |grep system
+iptables --flush
+echo ""
diff --git a/test/interactive-helper/rpmver.cc b/test/interactive-helper/rpmver.cc
new file mode 100644
index 000000000..017c92fba
--- /dev/null
+++ b/test/interactive-helper/rpmver.cc
@@ -0,0 +1,118 @@
+#include <config.h>
+
+#include <apt-pkg/debversion.h>
+#include <rpm/rpmio.h>
+#include <rpm/misc.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+
+#define xisdigit(x) isdigit(x)
+#define xisalpha(x) isalpha(x)
+#define xisalnum(x) (isdigit(x) || isalpha(x))
+
+using namespace std;
+
+int rpmvercmp(const char * a, const char * b)
+{
+ char * str1, * str2;
+ char * one, * two;
+ int isnum;
+
+ /* easy comparison to see if versions are identical */
+ if (!strcmp(a, b)) return 0;
+
+ str1 = (char *)alloca(strlen(a) + 1);
+ str2 = (char *)alloca(strlen(b) + 1);
+
+ strcpy(str1, a);
+ strcpy(str2, b);
+
+ one = str1;
+ two = str2;
+
+ /* loop through each version segment of str1 and str2 and compare them */
+ while (*one && *two) {
+ while (*one && !xisalnum(*one)) one++;
+ while (*two && !xisalnum(*two)) two++;
+
+ str1 = one;
+ str2 = two;
+
+ /* grab first completely alpha or completely numeric segment */
+ /* leave one and two pointing to the start of the alpha or numeric */
+ /* segment and walk str1 and str2 to end of segment */
+ if (xisdigit(*str1)) {
+ while (*str1 && xisdigit(*str1)) str1++;
+ while (*str2 && xisdigit(*str2)) str2++;
+ isnum = 1;
+ } else {
+ while (*str1 && xisalpha(*str1)) str1++;
+ while (*str2 && xisalpha(*str2)) str2++;
+ isnum = 0;
+ }
+
+ /* save character at the end of the alpha or numeric segment */
+ /* so that they can be restored after the comparison */
+ char oldch1 = *str1;
+ *str1 = '\0';
+ char oldch2 = *str2;
+ *str2 = '\0';
+
+ /* take care of the case where the two version segments are */
+ /* different types: one numeric, the other alpha (i.e. empty) */
+ if (one == str1) return -1; /* arbitrary */
+ if (two == str2) return 1;
+
+ if (isnum) {
+ /* this used to be done by converting the digit segments */
+ /* to ints using atoi() - it's changed because long */
+ /* digit segments can overflow an int - this should fix that. */
+
+ /* throw away any leading zeros - it's a number, right? */
+ while (*one == '0') one++;
+ while (*two == '0') two++;
+
+ /* whichever number has more digits wins */
+ if (strlen(one) > strlen(two)) return 1;
+ if (strlen(two) > strlen(one)) return -1;
+ }
+
+ /* strcmp will return which one is greater - even if the two */
+ /* segments are alpha or if they are numeric. don't return */
+ /* if they are equal because there might be more segments to */
+ /* compare */
+ int rc = strcmp(one, two);
+ if (rc) return rc;
+
+ /* restore character that was replaced by null above */
+ *str1 = oldch1;
+ one = str1;
+ *str2 = oldch2;
+ two = str2;
+ }
+
+ /* this catches the case where all numeric and alpha segments have */
+ /* compared identically but the segment sepparating characters were */
+ /* different */
+ if ((!*one) && (!*two)) return 0;
+
+ /* whichever version still has characters left over wins */
+ if (!*one) return -1; else return 1;
+}
+
+int main(int argc,const char *argv[])
+{
+ printf("%i\n",strcmp(argv[1],argv[2]));
+
+ printf("'%s' <> '%s': ",argv[1],argv[2]);
+ printf("rpm: %i deb: %i\n",rpmvercmp(argv[1],argv[2]),
+ debVS.CmpFragment(argv[1],argv[1]+strlen(argv[1]),
+ argv[2],argv[2]+strlen(argv[2])));
+
+ printf("'%s' <> '%s': ",argv[2],argv[1]);
+ printf("rpm: %i deb: %i\n",rpmvercmp(argv[2],argv[1]),
+ debVS.CmpFragment(argv[2],argv[2]+strlen(argv[2]),
+ argv[1],argv[1]+strlen(argv[1])));
+ return 0;
+}
diff --git a/test/interactive-helper/teestream.h b/test/interactive-helper/teestream.h
new file mode 100644
index 000000000..728a1bae2
--- /dev/null
+++ b/test/interactive-helper/teestream.h
@@ -0,0 +1,62 @@
+#ifndef APT_HELPER_TEESTREAM_H
+#define APT_HELPER_TEESTREAM_H
+
+/* 'basic' implementation of a streambuf which passes the output
+ to two 'real' streambufs emulating '| tee' on the shell
+
+ The main use is streaming debug output to std::clog as well as
+ a logfile easily, so don't expect that to be a bulletproof
+ implementation. */
+
+#include <iostream>
+#include <apt-pkg/macros.h>
+
+template <typename CharT, typename Traits = std::char_traits<CharT>
+> class basic_teebuf: public std::basic_streambuf<CharT, Traits>
+{
+public:
+ basic_teebuf(std::basic_streambuf<CharT, Traits> * const sb1,
+ std::basic_streambuf<CharT, Traits> * const sb2)
+ : s1(sb1), s2(sb2) {}
+protected:
+ virtual std::streamsize xsputn(const CharT* s, std::streamsize c) APT_OVERRIDE
+ {
+ return s2->sputn(s, s1->sputn(s, c));
+ }
+ // overflow is the fallback of sputc which is non-virtual
+ typedef typename Traits::int_type int_type;
+ virtual int_type overflow(int_type ch = Traits::eof()) APT_OVERRIDE
+ {
+ auto const eof = Traits::eof();
+ if (Traits::eq_int_type(ch, Traits::eof()) == true)
+ return eof;
+
+ auto const r1 = s1->sputc(Traits::to_char_type(ch));
+ auto const r2 = s2->sputc(Traits::to_char_type(ch));
+ return Traits::eq_int_type(r1, eof) ? r1: r2;
+ }
+ virtual void imbue(const std::locale& loc) APT_OVERRIDE
+ {
+ s1->pubimbue(loc);
+ s2->pubimbue(loc);
+ }
+ virtual int sync() APT_OVERRIDE
+ {
+ auto const r1 = s1->pubsync();
+ auto const r2 = s2->pubsync();
+ return r1 == 0 ? r2 : r1;
+ }
+private:
+ std::basic_streambuf<CharT, Traits> * const s1;
+ std::basic_streambuf<CharT, Traits> * const s2;
+};
+template <typename CharT, typename Traits = std::char_traits<CharT>
+> class basic_teeostream: public std::basic_ostream<CharT, Traits>
+{
+public:
+ basic_teeostream(std::basic_ostream<CharT, Traits> &o1, std::basic_ostream<CharT, Traits> &o2) :
+ std::basic_ostream<CharT, Traits>(&tbuf), tbuf(o1.rdbuf(), o2.rdbuf()) {}
+private:
+ basic_teebuf<CharT, Traits> tbuf;
+};
+#endif
diff --git a/test/interactive-helper/test_fileutl.cc b/test/interactive-helper/test_fileutl.cc
new file mode 100644
index 000000000..7c4b95759
--- /dev/null
+++ b/test/interactive-helper/test_fileutl.cc
@@ -0,0 +1,44 @@
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/error.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <fcntl.h>
+
+#include <iostream>
+#include <string>
+
+static void callsystem(std::string const &call)
+{
+ auto ret = system(call.c_str());
+ if (WIFEXITED(ret) == false || WEXITSTATUS(ret) != 0)
+ _error->Error("Calling %s failed!", call.c_str());
+}
+
+int main(int, char ** argv)
+{
+ auto const pid = getpid();
+ std::string ls;
+ strprintf(ls, "ls -l /proc/%d/fd", pid);
+ callsystem(ls);
+ FileFd t;
+ t.Open(argv[1], FileFd::ReadOnly, FileFd::Extension);
+ callsystem(ls);
+ char buf[1024];
+ unsigned long long act;
+ while (t.Read(buf, sizeof(buf), &act))
+ if (act == 0)
+ break;
+ callsystem(ls);
+ t.Seek(5);
+ callsystem(ls);
+ t.Close();
+ callsystem(ls);
+ auto const ret = _error->PendingError();
+ _error->DumpErrors();
+ return ret;
+}
diff --git a/test/interactive-helper/test_udevcdrom.cc b/test/interactive-helper/test_udevcdrom.cc
new file mode 100644
index 000000000..b87dcd935
--- /dev/null
+++ b/test/interactive-helper/test_udevcdrom.cc
@@ -0,0 +1,23 @@
+#include <config.h>
+
+#include <apt-pkg/cdrom.h>
+
+#include <stddef.h>
+#include <string>
+#include <assert.h>
+#include <vector>
+#include <iostream>
+
+int main()
+{
+ pkgUdevCdromDevices c;
+ assert(c.Dlopen());
+
+ std::vector<CdromDevice> l;
+ l = c.Scan();
+ assert(l.empty() == false);
+ for (size_t i = 0; i < l.size(); ++i)
+ std::cerr << l[i].DeviceName << " "
+ << l[i].Mounted << " "
+ << l[i].MountPath << std::endl;
+}
diff --git a/test/interactive-helper/testdeb.cc b/test/interactive-helper/testdeb.cc
new file mode 100644
index 000000000..69e1ffe0b
--- /dev/null
+++ b/test/interactive-helper/testdeb.cc
@@ -0,0 +1,51 @@
+#include <config.h>
+
+#include <apt-pkg/dirstream.h>
+#include <apt-pkg/debfile.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/extracttar.h>
+#include <apt-pkg/arfile.h>
+#include <apt-pkg/fileutl.h>
+
+#include <iostream>
+#include <string>
+
+class NullStream : public pkgDirStream
+{
+ public:
+ virtual bool DoItem(Item &/*Itm*/, int &/*Fd*/) APT_OVERRIDE {return true;};
+};
+
+static bool Test(const char *File)
+{
+ FileFd Fd(File,FileFd::ReadOnly);
+ debDebFile Deb(Fd);
+
+ if (_error->PendingError() == true)
+ return false;
+
+ // Get the archive member and positition the file
+ const ARArchive::Member *Member = Deb.GotoMember("data.tar.gz");
+ if (Member == 0)
+ return false;
+
+ // Extract it.
+ ExtractTar Tar(Deb.GetFile(),Member->Size, "gzip");
+ NullStream Dir;
+ if (Tar.Go(Dir) == false)
+ return false;
+
+ return true;
+}
+
+int main(int argc, const char *argv[])
+{
+ if (argc != 2) {
+ std::cout << "One parameter expected - given " << argc << std::endl;
+ return 100;
+ }
+
+ Test(argv[1]);
+ _error->DumpErrors();
+ return 0;
+}
diff --git a/test/libapt/CMakeLists.txt b/test/libapt/CMakeLists.txt
new file mode 100644
index 000000000..86c0b28b5
--- /dev/null
+++ b/test/libapt/CMakeLists.txt
@@ -0,0 +1,38 @@
+find_path(GTEST_ROOT src/gtest.cc
+ /usr/src/googletest/googletest
+ /usr/src/gtest
+)
+find_package(GTest)
+set(GTEST_DEPENDENCIES)
+
+if(NOT GTEST_FOUND AND EXISTS ${GTEST_ROOT})
+ include(ExternalProject)
+ ExternalProject_Add(gtest PREFIX ./gtest
+ SOURCE_DIR ${GTEST_ROOT}
+ INSTALL_COMMAND true)
+
+ link_directories(${CMAKE_CURRENT_BINARY_DIR}/gtest/src/gtest-build)
+
+ set(GTEST_LIBRARIES "-lgtest")
+ set(GTEST_DEPENDENCIES "gtest")
+ set(GTEST_FOUND TRUE)
+ find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h)
+
+ message(STATUS "Found GTest at ${GTEST_ROOT}, headers at ${GTEST_INCLUDE_DIRS}")
+endif()
+
+if(GTEST_FOUND)
+ # Definition of the C++ files used to build the test binary - note that this
+ # is expanded at CMake time, so you have to rerun cmake if you add or remove
+ # a file (you can just run cmake . in the build directory)
+ file(GLOB files gtest_runner.cc *-helpers.cc *_test.cc)
+ add_executable(libapt_test ${files})
+ target_include_directories(libapt_test PRIVATE ${GTEST_INCLUDE_DIRS})
+ target_link_libraries(libapt_test ${GTEST_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} apt-private apt-inst)
+ if (GTEST_DEPENDENCIES)
+ add_dependencies(libapt_test ${GTEST_DEPENDENCIES})
+ endif()
+ add_test(NAME AptTests
+ COMMAND libapt_test
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+endif()
diff --git a/test/libapt/acqprogress_test.cc b/test/libapt/acqprogress_test.cc
new file mode 100644
index 000000000..0e82a285d
--- /dev/null
+++ b/test/libapt/acqprogress_test.cc
@@ -0,0 +1,178 @@
+#include <config.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/acquire-item.h>
+#include <apt-pkg/configuration.h>
+#include <apt-private/acqprogress.h>
+#include <string>
+#include <sstream>
+#include <gtest/gtest.h>
+
+class TestItem: public pkgAcquire::Item
+{
+public:
+ explicit TestItem(pkgAcquire * const Acq) : pkgAcquire::Item(Acq) {}
+
+ virtual std::string DescURI() const APT_OVERRIDE { return ""; }
+ virtual HashStringList GetExpectedHashes() const APT_OVERRIDE { return HashStringList(); }
+
+};
+
+TEST(AcqProgress, IMSHit)
+{
+ std::ostringstream out;
+ unsigned int width = 80;
+ AcqTextStatus Stat(out, width, 0);
+ Stat.Start();
+
+ pkgAcquire Acq(&Stat);
+ pkgAcquire::ItemDesc hit;
+ hit.URI = "http://example.org/file";
+ hit.Description = "Example File from example.org";
+ hit.ShortDesc = "Example File";
+ TestItem hitO(&Acq);
+ hit.Owner = &hitO;
+
+ EXPECT_EQ("", out.str());
+ Stat.IMSHit(hit);
+ EXPECT_EQ("Hit:1 Example File from example.org\n", out.str());
+ Stat.IMSHit(hit);
+ EXPECT_EQ("Hit:1 Example File from example.org\n"
+ "Hit:1 Example File from example.org\n", out.str());
+ Stat.Stop();
+ EXPECT_EQ("Hit:1 Example File from example.org\n"
+ "Hit:1 Example File from example.org\n", out.str());
+}
+TEST(AcqProgress, FetchNoFileSize)
+{
+ std::ostringstream out;
+ unsigned int width = 80;
+ AcqTextStatus Stat(out, width, 0);
+ Stat.Start();
+
+ pkgAcquire Acq(&Stat);
+ pkgAcquire::ItemDesc fetch;
+ fetch.URI = "http://example.org/file";
+ fetch.Description = "Example File from example.org";
+ fetch.ShortDesc = "Example File";
+ TestItem fetchO(&Acq);
+ fetch.Owner = &fetchO;
+
+ EXPECT_EQ("", out.str());
+ Stat.Fetch(fetch);
+ EXPECT_EQ("Get:1 Example File from example.org\n", out.str());
+ Stat.Fetch(fetch);
+ EXPECT_EQ("Get:1 Example File from example.org\n"
+ "Get:1 Example File from example.org\n", out.str());
+ Stat.Stop();
+ EXPECT_EQ("Get:1 Example File from example.org\n"
+ "Get:1 Example File from example.org\n", out.str());
+}
+TEST(AcqProgress, FetchFileSize)
+{
+ std::ostringstream out;
+ unsigned int width = 80;
+ AcqTextStatus Stat(out, width, 0);
+ Stat.Start();
+
+ pkgAcquire Acq(&Stat);
+ pkgAcquire::ItemDesc fetch;
+ fetch.URI = "http://example.org/file";
+ fetch.Description = "Example File from example.org";
+ fetch.ShortDesc = "Example File";
+ TestItem fetchO(&Acq);
+ fetchO.FileSize = 100;
+ fetch.Owner = &fetchO;
+
+ EXPECT_EQ("", out.str());
+ Stat.Fetch(fetch);
+ EXPECT_EQ("Get:1 Example File from example.org [100 B]\n", out.str());
+ fetchO.FileSize = 42;
+ Stat.Fetch(fetch);
+ EXPECT_EQ("Get:1 Example File from example.org [100 B]\n"
+ "Get:1 Example File from example.org [42 B]\n", out.str());
+ Stat.Stop();
+ EXPECT_EQ("Get:1 Example File from example.org [100 B]\n"
+ "Get:1 Example File from example.org [42 B]\n", out.str());
+}
+TEST(AcqProgress, Fail)
+{
+ std::ostringstream out;
+ unsigned int width = 80;
+ AcqTextStatus Stat(out, width, 0);
+ Stat.Start();
+
+ pkgAcquire Acq(&Stat);
+ pkgAcquire::ItemDesc fetch;
+ fetch.URI = "http://example.org/file";
+ fetch.Description = "Example File from example.org";
+ fetch.ShortDesc = "Example File";
+ TestItem fetchO(&Acq);
+ fetchO.FileSize = 100;
+ fetchO.Status = pkgAcquire::Item::StatIdle;
+ fetch.Owner = &fetchO;
+
+ EXPECT_EQ("", out.str());
+ Stat.Fail(fetch);
+ EXPECT_EQ("Ign:1 Example File from example.org\n", out.str());
+ fetchO.Status = pkgAcquire::Item::StatDone;
+ Stat.Fail(fetch);
+ EXPECT_EQ("Ign:1 Example File from example.org\n"
+ "Ign:1 Example File from example.org\n", out.str());
+ fetchO.Status = pkgAcquire::Item::StatError;
+ fetchO.ErrorText = "An error test!";
+ Stat.Fail(fetch);
+ EXPECT_EQ("Ign:1 Example File from example.org\n"
+ "Ign:1 Example File from example.org\n"
+ "Err:1 Example File from example.org\n"
+ " An error test!\n", out.str());
+ _config->Set("Acquire::Progress::Ignore::ShowErrorText", true);
+ fetchO.Status = pkgAcquire::Item::StatDone;
+ Stat.Fail(fetch);
+ EXPECT_EQ("Ign:1 Example File from example.org\n"
+ "Ign:1 Example File from example.org\n"
+ "Err:1 Example File from example.org\n"
+ " An error test!\n"
+ "Ign:1 Example File from example.org\n"
+ " An error test!\n", out.str());
+ _config->Set("Acquire::Progress::Ignore::ShowErrorText", true);
+ Stat.Stop();
+ EXPECT_EQ("Ign:1 Example File from example.org\n"
+ "Ign:1 Example File from example.org\n"
+ "Err:1 Example File from example.org\n"
+ " An error test!\n"
+ "Ign:1 Example File from example.org\n"
+ " An error test!\n", out.str());
+}
+TEST(AcqProgress, Pulse)
+{
+ std::ostringstream out;
+ unsigned int width = 80;
+ AcqTextStatus Stat(out, width, 0);
+ _config->Set("APT::Sandbox::User", ""); // ensure we aren't sandboxing
+
+ pkgAcquire Acq(&Stat);
+ pkgAcquire::ItemDesc fetch;
+ fetch.URI = "http://example.org/file";
+ fetch.Description = "Example File from example.org";
+ fetch.ShortDesc = "Example File";
+ TestItem fetchO(&Acq);
+ fetchO.FileSize = 100;
+ fetchO.Status = pkgAcquire::Item::StatFetching;
+ fetch.Owner = &fetchO;
+
+ // make screen smaller and bigger again while running
+ EXPECT_TRUE(Stat.Pulse(&Acq));
+ EXPECT_EQ("\r0% [Working]", out.str());
+ width = 8;
+ EXPECT_TRUE(Stat.Pulse(&Acq));
+ EXPECT_EQ("\r0% [Working]"
+ "\r "
+ "\r0% [Work", out.str());
+ width = 80;
+ EXPECT_TRUE(Stat.Pulse(&Acq));
+ EXPECT_EQ("\r0% [Working]"
+ "\r "
+ "\r0% [Work"
+ "\r0% [Working]", out.str());
+}
diff --git a/test/libapt/apt-proxy-script b/test/libapt/apt-proxy-script
new file mode 100755
index 000000000..41cfdc30f
--- /dev/null
+++ b/test/libapt/apt-proxy-script
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+if [ $1 = "http://www.debian.org:90/temp/test" ]; then
+ echo "http://example.com"
+fi
+if [ $1 = "http://www.debian.org:91/temp/test" ]; then
+ echo "This works" >&2
+ echo "http://example.com/foo"
+fi
diff --git a/test/libapt/cachefilter_test.cc b/test/libapt/cachefilter_test.cc
new file mode 100644
index 000000000..08812e0dc
--- /dev/null
+++ b/test/libapt/cachefilter_test.cc
@@ -0,0 +1,119 @@
+#include <config.h>
+
+#include <apt-pkg/cachefilter.h>
+#include <apt-pkg/fileutl.h>
+
+#include <string>
+
+#include <gtest/gtest.h>
+
+TEST(CacheFilterTest, ArchitectureSpecification)
+{
+ {
+ SCOPED_TRACE("Pattern is *");
+ // * should be treated like any
+ APT::CacheFilter::PackageArchitectureMatchesSpecification ams("*");
+ EXPECT_TRUE(ams("sparc"));
+ EXPECT_TRUE(ams("amd64"));
+ EXPECT_TRUE(ams("kfreebsd-amd64"));
+ }
+ {
+ SCOPED_TRACE("Pattern is any-i386");
+ APT::CacheFilter::PackageArchitectureMatchesSpecification ams("any-i386");
+ EXPECT_TRUE(ams("i386"));
+ EXPECT_FALSE(ams("amd64"));
+ EXPECT_TRUE(ams("linux-i386"));
+ EXPECT_FALSE(ams("linux-amd64"));
+ EXPECT_TRUE(ams("kfreebsd-i386"));
+ EXPECT_TRUE(ams("musl-linux-i386"));
+ }
+ {
+ SCOPED_TRACE("Pattern is linux-any");
+ APT::CacheFilter::PackageArchitectureMatchesSpecification ams("linux-any");
+ EXPECT_TRUE(ams("armhf"));
+ EXPECT_TRUE(ams("armel"));
+ EXPECT_TRUE(ams("linux-armhf"));
+ EXPECT_TRUE(ams("linux-armel"));
+ EXPECT_FALSE(ams("kfreebsd-armhf"));
+ EXPECT_TRUE(ams("musl-linux-armhf"));
+ }
+ if (FileExists(DPKG_DATADIR "/tupletable"))
+ {
+ SCOPED_TRACE("Pattern is gnu-any-any");
+ APT::CacheFilter::PackageArchitectureMatchesSpecification ams("gnu-any-any"); //really?
+ EXPECT_TRUE(ams("armhf"));
+ EXPECT_TRUE(ams("armel"));
+ EXPECT_TRUE(ams("linux-armhf"));
+ EXPECT_TRUE(ams("linux-armel"));
+ EXPECT_TRUE(ams("kfreebsd-armhf"));
+ EXPECT_FALSE(ams("musl-linux-armhf"));
+ }
+ if (FileExists(DPKG_DATADIR "/triplettable"))
+ {
+ SCOPED_TRACE("Pattern is gnueabi-any-any");
+ APT::CacheFilter::PackageArchitectureMatchesSpecification ams("gnueabi-any-any"); //really?
+ EXPECT_TRUE(ams("linux-armel"));
+ EXPECT_TRUE(ams("armel"));
+ EXPECT_FALSE(ams("armhf"));
+ EXPECT_FALSE(ams("linux-armhf"));
+ EXPECT_FALSE(ams("musleabihf-linux-armhf"));
+ }
+ if (FileExists(DPKG_DATADIR "/triplettable"))
+ {
+ SCOPED_TRACE("Pattern is gnueabihf-any-any");
+ APT::CacheFilter::PackageArchitectureMatchesSpecification ams("gnueabihf-any-any"); //really?
+ EXPECT_FALSE(ams("linux-armel"));
+ EXPECT_FALSE(ams("armel"));
+ EXPECT_TRUE(ams("armhf"));
+ EXPECT_TRUE(ams("linux-armhf"));
+ EXPECT_FALSE(ams("musleabihf-linux-armhf"));
+ }
+
+ // Weird ones - armhf's tuple is actually eabihf-gnu-linux-arm
+ // armel's tuple is actually eabi-gnu-linux-arm
+ // x32's tuple is actually x32-gnu-linux-amd64
+ {
+ SCOPED_TRACE("Architecture is armhf");
+ APT::CacheFilter::PackageArchitectureMatchesSpecification ams("armhf", false);
+ EXPECT_TRUE(ams("armhf"));
+ EXPECT_FALSE(ams("armel"));
+ EXPECT_TRUE(ams("linux-any"));
+ EXPECT_FALSE(ams("kfreebsd-any"));
+ EXPECT_TRUE(ams("any-arm"));
+ EXPECT_TRUE(ams("linux-armhf"));
+ EXPECT_FALSE(ams("kfreebsd-armhf"));
+ EXPECT_FALSE(ams("musl-linux-armhf"));
+ }
+ {
+ SCOPED_TRACE("Pattern is any-arm");
+ APT::CacheFilter::PackageArchitectureMatchesSpecification ams("any-arm");
+ EXPECT_TRUE(ams("armhf"));
+ EXPECT_TRUE(ams("armel"));
+ EXPECT_TRUE(ams("linux-armhf"));
+ EXPECT_TRUE(ams("linux-armel"));
+ EXPECT_TRUE(ams("musl-linux-armhf"));
+ EXPECT_TRUE(ams("uclibc-linux-armel"));
+
+ EXPECT_FALSE(ams("arm64"));
+ EXPECT_FALSE(ams("linux-arm64"));
+ EXPECT_FALSE(ams("kfreebsd-arm64"));
+ EXPECT_FALSE(ams("musl-linux-arm64"));
+ }
+ {
+ SCOPED_TRACE("Pattern is any-amd64");
+ APT::CacheFilter::PackageArchitectureMatchesSpecification ams("any-amd64");
+ EXPECT_TRUE(ams("amd64"));
+ EXPECT_TRUE(ams("x32"));
+ EXPECT_TRUE(ams("linux-amd64"));
+ EXPECT_TRUE(ams("linux-x32"));
+ EXPECT_TRUE(ams("kfreebsd-amd64"));
+ EXPECT_TRUE(ams("musl-linux-amd64"));
+ EXPECT_TRUE(ams("uclibc-linux-amd64"));
+
+ EXPECT_FALSE(ams("i386"));
+ EXPECT_FALSE(ams("linux-i386"));
+ EXPECT_FALSE(ams("kfreebsd-i386"));
+ EXPECT_FALSE(ams("musl-linux-i386"));
+ EXPECT_FALSE(ams("uclibc-linux-i386"));
+ }
+}
diff --git a/test/libapt/cdrom_test.cc b/test/libapt/cdrom_test.cc
new file mode 100644
index 000000000..b4c51cdb0
--- /dev/null
+++ b/test/libapt/cdrom_test.cc
@@ -0,0 +1,114 @@
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/cdrom.h>
+#include <apt-pkg/cdromutl.h>
+#include <apt-pkg/fileutl.h>
+
+#include <string>
+#include <string.h>
+#include <vector>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+class Cdrom : public pkgCdrom {
+public:
+ std::vector<std::string> ReduceSourcelist(std::string CD,std::vector<std::string> List) {
+ pkgCdrom::ReduceSourcelist(CD, List);
+ return List;
+ }
+};
+
+TEST(CDROMTest,ReduceSourcelist)
+{
+ Cdrom cd;
+ std::vector<std::string> List;
+ std::string CD("/media/cdrom/");
+
+ std::vector<std::string> R = cd.ReduceSourcelist(CD, List);
+ EXPECT_TRUE(R.empty());
+
+ List.push_back(" wheezy main");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(1, R.size());
+ EXPECT_EQ(" wheezy main", R[0]);
+
+ List.push_back(" wheezy main");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(1, R.size());
+ EXPECT_EQ(" wheezy main", R[0]);
+
+ List.push_back(" wheezy contrib");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(1, R.size());
+ EXPECT_EQ(" wheezy contrib main", R[0]);
+
+ List.push_back(" wheezy-update contrib");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(2, R.size());
+ EXPECT_EQ(" wheezy contrib main", R[0]);
+ EXPECT_EQ(" wheezy-update contrib", R[1]);
+
+ List.push_back(" wheezy-update contrib");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(2, R.size());
+ EXPECT_EQ(" wheezy contrib main", R[0]);
+ EXPECT_EQ(" wheezy-update contrib", R[1]);
+
+ List.push_back(" wheezy-update non-free");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(2, R.size());
+ EXPECT_EQ(" wheezy contrib main", R[0]);
+ EXPECT_EQ(" wheezy-update contrib non-free", R[1]);
+
+ List.push_back(" wheezy-update main");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(2, R.size());
+ EXPECT_EQ(" wheezy contrib main", R[0]);
+ EXPECT_EQ(" wheezy-update contrib main non-free", R[1]);
+
+ List.push_back(" wheezy non-free");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(2, R.size());
+ EXPECT_EQ(" wheezy contrib main non-free", R[0]);
+ EXPECT_EQ(" wheezy-update contrib main non-free", R[1]);
+
+ List.push_back(" sid main");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(3, R.size());
+ EXPECT_EQ(" sid main", R[0]);
+ EXPECT_EQ(" wheezy contrib main non-free", R[1]);
+ EXPECT_EQ(" wheezy-update contrib main non-free", R[2]);
+
+ List.push_back(" sid main-reduce");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(3, R.size());
+ EXPECT_EQ(" sid main main-reduce", R[0]);
+ EXPECT_EQ(" wheezy contrib main non-free", R[1]);
+ EXPECT_EQ(" wheezy-update contrib main non-free", R[2]);
+}
+TEST(CDROMTest, FindMountPointForDevice)
+{
+ std::string tempfile;
+ FileFd fd;
+ createTemporaryFile("mountpoints", fd, &tempfile,
+ "rootfs / rootfs rw 0 0\n"
+ "sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0\n"
+ "sysfs0 /sys0 sysfs rw,nosuid,nodev,noexec,relatime 0 0\n"
+ "/dev/disk/by-uuid/fadcbc52-6284-4874-aaaa-dcee1f05fe21 / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0\n"
+ "/dev/sda1 /boot/efi vfat rw,nosuid,nodev,noexec,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=437,iocharset=utf8,shortname=lower,quiet,utf8,errors=remount-ro,rw,nosuid,nodev,noexec,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=437,iocharset=utf8,shortname=lower,quiet,utf8,errors=remount-ro,rw,nosuid,nodev,noexec,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=437,iocharset=utf8,shortname=lower,quiet,utf8,errors=remount-ro,rw,nosuid,nodev,noexec,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=437,iocharset=utf8,shortname=lower,quiet,utf8,errors=remount-ro 0 0\n"
+ "tmpfs /tmp tmpfs rw,nosuid,nodev,relatime 0 0\n");
+ _config->Set("Dir::state::Mountpoints", tempfile);
+
+ EXPECT_EQ("/", FindMountPointForDevice("rootfs"));
+ EXPECT_EQ("/", FindMountPointForDevice("/dev/disk/by-uuid/fadcbc52-6284-4874-aaaa-dcee1f05fe21"));
+ EXPECT_EQ("/sys", FindMountPointForDevice("sysfs"));
+ EXPECT_EQ("/sys0", FindMountPointForDevice("sysfs0"));
+ EXPECT_EQ("/boot/efi", FindMountPointForDevice("/dev/sda1"));
+ EXPECT_EQ("/tmp", FindMountPointForDevice("tmpfs"));
+
+ if (tempfile.empty() == false)
+ unlink(tempfile.c_str());
+}
diff --git a/test/libapt/cdromfindpackages_test.cc b/test/libapt/cdromfindpackages_test.cc
new file mode 100644
index 000000000..0d8eb1f90
--- /dev/null
+++ b/test/libapt/cdromfindpackages_test.cc
@@ -0,0 +1,125 @@
+#include <config.h>
+
+#include <apt-pkg/cdrom.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+
+#include <algorithm>
+#include <string>
+#include <vector>
+#include <stddef.h>
+#include <iostream>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+class Cdrom : public pkgCdrom {
+ public:
+ bool FindPackages(std::string const &CD,
+ std::vector<std::string> &List,
+ std::vector<std::string> &SList,
+ std::vector<std::string> &SigList,
+ std::vector<std::string> &TransList,
+ std::string &InfoDir) {
+ std::string const startdir = SafeGetCWD();
+ EXPECT_FALSE(startdir.empty());
+ EXPECT_TRUE(InfoDir.empty());
+ bool const result = pkgCdrom::FindPackages(CD, List, SList, SigList, TransList, InfoDir, NULL, 0);
+ EXPECT_FALSE(InfoDir.empty());
+ std::sort(List.begin(), List.end());
+ std::sort(SList.begin(), SList.end());
+ std::sort(SigList.begin(), SigList.end());
+ std::sort(TransList.begin(), TransList.end());
+ EXPECT_EQ(0, chdir(startdir.c_str()));
+ return result;
+ }
+
+ using pkgCdrom::DropRepeats;
+};
+
+TEST(CDROMTest,FindPackages)
+{
+ std::string path;
+ createTemporaryDirectory("findpackage", path);
+
+ createDirectory(path, ".disk");
+ createDirectory(path, "pool");
+ createDirectory(path, "dists/stable/main/binary-i386");
+ createDirectory(path, "dists/stable/main/source");
+ createDirectory(path, "dists/stable/contrib/binary-amd64");
+ createDirectory(path, "dists/stable/non-free/binary-all");
+ createDirectory(path, "dists/unstable/main/binary-i386");
+ createDirectory(path, "dists/unstable/main/i18n");
+ createDirectory(path, "dists/unstable/main/source");
+ createDirectory(path, "dists/broken/non-free/source");
+ createFile(path, "dists/broken/.aptignr");
+ createFile(path, "dists/stable/main/binary-i386/Packages");
+ createFile(path, "dists/stable/main/binary-i386/Packages.bz2");
+ createFile(path, "dists/stable/main/source/Sources.xz");
+ createFile(path, "dists/stable/contrib/binary-amd64/Packages");
+ createFile(path, "dists/stable/contrib/binary-amd64/Packages.gz");
+ createFile(path, "dists/stable/non-free/binary-all/Packages");
+ createFile(path, "dists/unstable/main/binary-i386/Packages.xz");
+ createFile(path, "dists/unstable/main/binary-i386/Packages.lzma");
+ createFile(path, "dists/unstable/main/i18n/Translation-en");
+ createFile(path, "dists/unstable/main/i18n/Translation-de.bz2");
+ createFile(path, "dists/unstable/main/source/Sources.xz");
+ createFile(path, "dists/broken/non-free/source/Sources.gz");
+ createFile(path, "dists/stable/Release.gpg");
+ createFile(path, "dists/stable/Release");
+ createFile(path, "dists/unstable/InRelease");
+ createFile(path, "dists/broken/Release.gpg");
+ createLink(path, "dists/unstable", "dists/sid");
+
+ Cdrom cd;
+ std::vector<std::string> Packages, Sources, Signatur, Translation;
+ std::string InfoDir;
+ EXPECT_TRUE(cd.FindPackages(path, Packages, Sources, Signatur, Translation, InfoDir));
+ EXPECT_EQ(5, Packages.size());
+ EXPECT_EQ(path + "/dists/sid/main/binary-i386/", Packages[0]);
+ EXPECT_EQ(path + "/dists/stable/contrib/binary-amd64/", Packages[1]);
+ EXPECT_EQ(path + "/dists/stable/main/binary-i386/", Packages[2]);
+ EXPECT_EQ(path + "/dists/stable/non-free/binary-all/", Packages[3]);
+ EXPECT_EQ(path + "/dists/unstable/main/binary-i386/", Packages[4]);
+ EXPECT_EQ(3, Sources.size());
+ EXPECT_EQ(path + "/dists/sid/main/source/", Sources[0]);
+ EXPECT_EQ(path + "/dists/stable/main/source/", Sources[1]);
+ EXPECT_EQ(path + "/dists/unstable/main/source/", Sources[2]);
+ EXPECT_EQ(3, Signatur.size());
+ EXPECT_EQ(path + "/dists/sid/", Signatur[0]);
+ EXPECT_EQ(path + "/dists/stable/", Signatur[1]);
+ EXPECT_EQ(path + "/dists/unstable/", Signatur[2]);
+ EXPECT_EQ(4, Translation.size());
+ EXPECT_EQ(path + "/dists/sid/main/i18n/Translation-de", Translation[0]);
+ EXPECT_EQ(path + "/dists/sid/main/i18n/Translation-en", Translation[1]);
+ EXPECT_EQ(path + "/dists/unstable/main/i18n/Translation-de", Translation[2]);
+ EXPECT_EQ(path + "/dists/unstable/main/i18n/Translation-en", Translation[3]);
+ EXPECT_EQ(path + "/.disk/", InfoDir);
+
+ cd.DropRepeats(Packages, "Packages");
+ cd.DropRepeats(Sources, "Sources");
+ _error->PushToStack();
+ cd.DropRepeats(Signatur, "InRelease");
+ cd.DropRepeats(Signatur, "Release.gpg");
+ _error->RevertToStack();
+ _error->DumpErrors();
+ cd.DropRepeats(Translation, "");
+
+ EXPECT_EQ(4, Packages.size());
+ EXPECT_EQ(path + "/dists/stable/contrib/binary-amd64/", Packages[0]);
+ EXPECT_EQ(path + "/dists/stable/main/binary-i386/", Packages[1]);
+ EXPECT_EQ(path + "/dists/stable/non-free/binary-all/", Packages[2]);
+ EXPECT_EQ(path + "/dists/unstable/main/binary-i386/", Packages[3]);
+ EXPECT_EQ(2, Sources.size());
+ EXPECT_EQ(path + "/dists/stable/main/source/", Sources[0]);
+ EXPECT_EQ(path + "/dists/unstable/main/source/", Sources[1]);
+ EXPECT_EQ(2, Signatur.size());
+ EXPECT_EQ(path + "/dists/stable/", Signatur[0]);
+ EXPECT_EQ(path + "/dists/unstable/", Signatur[1]);
+ EXPECT_EQ(2, Translation.size());
+ EXPECT_EQ(path + "/dists/unstable/main/i18n/Translation-de", Translation[0]);
+ EXPECT_EQ(path + "/dists/unstable/main/i18n/Translation-en", Translation[1]);
+
+ removeDirectory(path);
+}
diff --git a/test/libapt/commandline_test.cc b/test/libapt/commandline_test.cc
new file mode 100644
index 000000000..1dc9c6946
--- /dev/null
+++ b/test/libapt/commandline_test.cc
@@ -0,0 +1,238 @@
+#include <config.h>
+
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/configuration.h>
+#include <apt-private/private-cmndline.h>
+
+#include <gtest/gtest.h>
+
+class CLT: public CommandLine {
+ public:
+ std::string static AsString(const char * const * const argv,
+ unsigned int const argc) {
+ std::string const static conf = "Commandline::AsString";
+ _config->Clear(conf);
+ SaveInConfig(argc, argv);
+ return _config->Find(conf);
+ }
+};
+
+TEST(CommandLineTest,SaveInConfig)
+{
+#define APT_EXPECT_CMD(x, ...) { const char * const argv[] = { __VA_ARGS__ }; EXPECT_EQ(x, CLT::AsString(argv, sizeof(argv)/sizeof(argv[0]))); }
+ APT_EXPECT_CMD("apt-get install -sf",
+ "apt-get", "install", "-sf");
+ APT_EXPECT_CMD("apt-cache -s apt -so Debug::test=Test",
+ "apt-cache", "-s", "apt", "-so", "Debug::test=Test");
+ APT_EXPECT_CMD("apt-cache -s apt -so Debug::test='Das ist ein Test'",
+ "apt-cache", "-s", "apt", "-so", "Debug::test=Das ist ein Test");
+ APT_EXPECT_CMD("apt-cache -s apt -so Debug::test='Das ist ein Test'",
+ "apt-cache", "-s", "apt", "-so", "Debug::test=\"Das ist ein Test\"");
+ APT_EXPECT_CMD("apt-cache -s apt -so Debug::test='Das ist ein Test' foo",
+ "apt-cache", "-s", "apt", "-so", "\"Debug::test=Das ist ein Test\"", "foo");
+ APT_EXPECT_CMD("apt-cache -s apt -so Debug::test='Das ist ein Test' foo",
+ "apt-cache", "-s", "apt", "-so", "\'Debug::test=Das ist ein Test\'", "foo");
+ APT_EXPECT_CMD("apt-cache -s apt -so Debug::test='That is crazy!' foo",
+ "apt-cache", "-s", "apt", "-so", "\'Debug::test=That \ris\n crazy!\'", "foo");
+ APT_EXPECT_CMD("apt-cache -s apt --hallo test=1.0",
+ "apt-cache", "-s", "apt", "--hallo", "test=1.0");
+#undef APT_EXPECT_CMD
+}
+TEST(CommandLineTest,Parsing)
+{
+ CommandLine::Args Args[] = {
+ { 't', 0, "Test::Worked", 0 },
+ { 'T', "testing", "Test::Worked", CommandLine::HasArg },
+ { 'z', "zero", "Test::Zero", 0 },
+ { 'o', "option", 0, CommandLine::ArbItem },
+ {0,0,0,0}
+ };
+ ::Configuration c;
+ CommandLine CmdL(Args, &c);
+
+ char const * argv[] = { "test", "--zero", "-t" };
+ CmdL.Parse(3 , argv);
+ EXPECT_TRUE(c.FindB("Test::Worked", false));
+ EXPECT_TRUE(c.FindB("Test::Zero", false));
+
+ c.Clear("Test");
+ EXPECT_FALSE(c.FindB("Test::Worked", false));
+ EXPECT_FALSE(c.FindB("Test::Zero", false));
+
+ c.Set("Test::Zero", true);
+ EXPECT_TRUE(c.FindB("Test::Zero", false));
+
+ char const * argv2[] = { "test", "--no-zero", "-t" };
+ CmdL.Parse(3 , argv2);
+ EXPECT_TRUE(c.FindB("Test::Worked", false));
+ EXPECT_FALSE(c.FindB("Test::Zero", false));
+
+ c.Clear("Test");
+ {
+ char const * argv[] = { "test", "-T", "yes" };
+ CmdL.Parse(3 , argv);
+ EXPECT_TRUE(c.FindB("Test::Worked", false));
+ EXPECT_EQ("yes", c.Find("Test::Worked", "no"));
+ EXPECT_EQ(0, CmdL.FileSize());
+ }
+ c.Clear("Test");
+ {
+ char const * argv[] = { "test", "-T=yes" };
+ CmdL.Parse(2 , argv);
+ EXPECT_TRUE(c.Exists("Test::Worked"));
+ EXPECT_EQ("yes", c.Find("Test::Worked", "no"));
+ EXPECT_EQ(0, CmdL.FileSize());
+ }
+ c.Clear("Test");
+ {
+ char const * argv[] = { "test", "-T=", "yes" };
+ CmdL.Parse(3 , argv);
+ EXPECT_TRUE(c.Exists("Test::Worked"));
+ EXPECT_EQ("no", c.Find("Test::Worked", "no"));
+ EXPECT_EQ(1, CmdL.FileSize());
+ }
+
+ c.Clear("Test");
+ {
+ char const * argv[] = { "test", "--testing", "yes" };
+ CmdL.Parse(3 , argv);
+ EXPECT_TRUE(c.FindB("Test::Worked", false));
+ EXPECT_EQ("yes", c.Find("Test::Worked", "no"));
+ EXPECT_EQ(0, CmdL.FileSize());
+ }
+ c.Clear("Test");
+ {
+ char const * argv[] = { "test", "--testing=yes" };
+ CmdL.Parse(2 , argv);
+ EXPECT_TRUE(c.Exists("Test::Worked"));
+ EXPECT_EQ("yes", c.Find("Test::Worked", "no"));
+ EXPECT_EQ(0, CmdL.FileSize());
+ }
+ c.Clear("Test");
+ {
+ char const * argv[] = { "test", "--testing=", "yes" };
+ CmdL.Parse(3 , argv);
+ EXPECT_TRUE(c.Exists("Test::Worked"));
+ EXPECT_EQ("no", c.Find("Test::Worked", "no"));
+ EXPECT_EQ(1, CmdL.FileSize());
+ }
+
+ c.Clear("Test");
+ {
+ char const * argv[] = { "test", "-o", "test::worked=yes" };
+ CmdL.Parse(3 , argv);
+ EXPECT_TRUE(c.FindB("Test::Worked", false));
+ EXPECT_EQ("yes", c.Find("Test::Worked", "no"));
+ }
+ c.Clear("Test");
+ {
+ char const * argv[] = { "test", "-o", "test::worked=" };
+ CmdL.Parse(3 , argv);
+ EXPECT_TRUE(c.Exists("Test::Worked"));
+ EXPECT_EQ("no", c.Find("Test::Worked", "no"));
+ }
+ c.Clear("Test");
+ {
+ char const * argv[] = { "test", "-o", "test::worked=", "yes" };
+ CmdL.Parse(4 , argv);
+ EXPECT_TRUE(c.Exists("Test::Worked"));
+ EXPECT_EQ("no", c.Find("Test::Worked", "no"));
+ }
+ c.Clear("Test");
+}
+
+TEST(CommandLineTest, BoolParsing)
+{
+ CommandLine::Args Args[] = {
+ { 't', 0, "Test::Worked", 0 },
+ {0,0,0,0}
+ };
+ ::Configuration c;
+ CommandLine CmdL(Args, &c);
+
+ // the commandline parser used to use strtol() on the argument
+ // to check if the argument is a boolean expression - that
+ // stopped after the "0". this test ensures that we always check
+ // that the entire string was consumed by strtol
+ {
+ char const * argv[] = { "show", "-t", "0ad" };
+ bool res = CmdL.Parse(sizeof(argv)/sizeof(char*), argv);
+ EXPECT_TRUE(res);
+ ASSERT_EQ(std::string(CmdL.FileList[0]), "0ad");
+ }
+
+ {
+ char const * argv[] = { "show", "-t", "0", "ad" };
+ bool res = CmdL.Parse(sizeof(argv)/sizeof(char*), argv);
+ EXPECT_TRUE(res);
+ ASSERT_EQ(std::string(CmdL.FileList[0]), "ad");
+ }
+
+}
+
+static bool DoVoid(CommandLine &) { return false; }
+
+TEST(CommandLineTest,GetCommand)
+{
+ CommandLine::Dispatch Cmds[] = { {"install",&DoVoid}, {"remove", &DoVoid}, {0,0} };
+ {
+ char const * argv[] = { "apt-get", "-t", "unstable", "remove", "-d", "foo" };
+ char const * com = CommandLine::GetCommand(Cmds, sizeof(argv)/sizeof(argv[0]), argv);
+ EXPECT_STREQ("remove", com);
+ std::vector<CommandLine::Args> Args = getCommandArgs(APT_CMD::APT_GET, com);
+ ::Configuration c;
+ CommandLine CmdL(Args.data(), &c);
+ ASSERT_TRUE(CmdL.Parse(sizeof(argv)/sizeof(argv[0]), argv));
+ EXPECT_EQ(c.Find("APT::Default-Release"), "unstable");
+ EXPECT_TRUE(c.FindB("APT::Get::Download-Only"));
+ ASSERT_EQ(2, CmdL.FileSize());
+ EXPECT_EQ(std::string(CmdL.FileList[0]), "remove");
+ EXPECT_EQ(std::string(CmdL.FileList[1]), "foo");
+ }
+ {
+ char const * argv[] = {"apt-get", "-t", "unstable", "remove", "--", "-d", "foo" };
+ char const * com = CommandLine::GetCommand(Cmds, sizeof(argv)/sizeof(argv[0]), argv);
+ EXPECT_STREQ("remove", com);
+ std::vector<CommandLine::Args> Args = getCommandArgs(APT_CMD::APT_GET, com);
+ ::Configuration c;
+ CommandLine CmdL(Args.data(), &c);
+ ASSERT_TRUE(CmdL.Parse(sizeof(argv)/sizeof(argv[0]), argv));
+ EXPECT_EQ(c.Find("APT::Default-Release"), "unstable");
+ EXPECT_FALSE(c.FindB("APT::Get::Download-Only"));
+ ASSERT_EQ(3, CmdL.FileSize());
+ EXPECT_EQ(std::string(CmdL.FileList[0]), "remove");
+ EXPECT_EQ(std::string(CmdL.FileList[1]), "-d");
+ EXPECT_EQ(std::string(CmdL.FileList[2]), "foo");
+ }
+ {
+ char const * argv[] = {"apt-get", "-t", "unstable", "--", "remove", "-d", "foo" };
+ char const * com = CommandLine::GetCommand(Cmds, sizeof(argv)/sizeof(argv[0]), argv);
+ EXPECT_STREQ("remove", com);
+ std::vector<CommandLine::Args> Args = getCommandArgs(APT_CMD::APT_GET, com);
+ ::Configuration c;
+ CommandLine CmdL(Args.data(), &c);
+ ASSERT_TRUE(CmdL.Parse(sizeof(argv)/sizeof(argv[0]), argv));
+ EXPECT_EQ(c.Find("APT::Default-Release"), "unstable");
+ EXPECT_FALSE(c.FindB("APT::Get::Download-Only"));
+ ASSERT_EQ(CmdL.FileSize(), 3);
+ EXPECT_EQ(std::string(CmdL.FileList[0]), "remove");
+ EXPECT_EQ(std::string(CmdL.FileList[1]), "-d");
+ EXPECT_EQ(std::string(CmdL.FileList[2]), "foo");
+ }
+ {
+ char const * argv[] = {"apt-get", "install", "-t", "unstable", "--", "remove", "-d", "foo" };
+ char const * com = CommandLine::GetCommand(Cmds, sizeof(argv)/sizeof(argv[0]), argv);
+ EXPECT_STREQ("install", com);
+ std::vector<CommandLine::Args> Args = getCommandArgs(APT_CMD::APT_GET, com);
+ ::Configuration c;
+ CommandLine CmdL(Args.data(), &c);
+ ASSERT_TRUE(CmdL.Parse(sizeof(argv)/sizeof(argv[0]), argv));
+ EXPECT_EQ(c.Find("APT::Default-Release"), "unstable");
+ EXPECT_FALSE(c.FindB("APT::Get::Download-Only"));
+ ASSERT_EQ(CmdL.FileSize(), 4);
+ EXPECT_EQ(std::string(CmdL.FileList[0]), "install");
+ EXPECT_EQ(std::string(CmdL.FileList[1]), "remove");
+ EXPECT_EQ(std::string(CmdL.FileList[2]), "-d");
+ EXPECT_EQ(std::string(CmdL.FileList[3]), "foo");
+ }
+}
diff --git a/test/libapt/compareversion_test.cc b/test/libapt/compareversion_test.cc
new file mode 100644
index 000000000..3b2c0c209
--- /dev/null
+++ b/test/libapt/compareversion_test.cc
@@ -0,0 +1,180 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Version Test - Simple program to run through a file and comare versions.
+
+ Each version is compared and the result is checked against an expected
+ result in the file. The format of the file is
+ a b Res
+ Where Res is -1, 1, 0. dpkg -D=1 --compare-versions a "<" b can be
+ used to determine what Res should be. # at the start of the line
+ is a comment and blank lines are skipped
+
+ The runner will also call dpkg --compare-versions to check if APT and
+ dpkg have (still) the same idea.
+
+ ##################################################################### */
+ /*}}}*/
+#include <config.h>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/debversion.h>
+#include <apt-pkg/fileutl.h>
+
+#include <fstream>
+#include <string>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/wait.h>
+
+#include <gtest/gtest.h>
+
+using namespace std;
+
+static bool callDPKG(const char *val, const char *ref, const char &op) {
+ pid_t Process = ExecFork();
+ if (Process == 0)
+ {
+ const char * args[6];
+ args[0] = "/usr/bin/dpkg";
+ args[1] = "--compare-versions";
+ args[2] = val;
+ args[3] = (op == 1) ? ">>" : ( (op == 0) ? "=" : "<<");
+ args[4] = ref;
+ args[5] = 0;
+ execv(args[0], (char**) args);
+ exit(1);
+ }
+ int Ret;
+ waitpid(Process, &Ret, 0);
+ return WIFEXITED(Ret) == true && WEXITSTATUS(Ret) == 0;
+}
+
+
+#define EXPECT_VERSION_PART(A, compare, B) \
+{ \
+ int Res = debVS.CmpVersion(A, B); \
+ Res = (Res < 0) ? -1 : ( (Res > 0) ? 1 : Res); \
+ EXPECT_EQ(compare, Res) << "APT: A: »" << A << "« B: »" << B << "«"; \
+ EXPECT_PRED3(callDPKG, A, B, compare); \
+}
+#define EXPECT_VERSION(A, compare, B) \
+ EXPECT_VERSION_PART(A, compare, B); \
+ EXPECT_VERSION_PART(B, compare * -1, A)
+
+// History-Remark: The versions used to be specified in a versions.lst file
+
+enum CompareVersionType { LESS = -1, GREATER = 1, EQUAL = 0 };
+
+TEST(CompareVersionTest,Basic)
+{
+ EXPECT_VERSION("7.6p2-4", GREATER, "7.6-0");
+ EXPECT_VERSION("1.0.3-3", GREATER, "1.0-1");
+ EXPECT_VERSION("1.3", GREATER, "1.2.2-2");
+ EXPECT_VERSION("1.3", GREATER, "1.2.2");
+
+ /* disabled as dpkg doesn't like them… (versions have to start with a number)
+ EXPECT_VERSION("-", LESS, ".");
+ EXPECT_VERSION("p", LESS, "-");
+ EXPECT_VERSION("a", LESS, "-");
+ EXPECT_VERSION("z", LESS, "-");
+ EXPECT_VERSION("a", LESS, ".");
+ EXPECT_VERSION("z", LESS, ".");
+ // */
+
+ /* disabled as dpkg doesn't like them… (versions have to start with a number)
+ EXPECT_VERSION("III-alpha9.8", LESS, "III-alpha9.8-1.5");
+ // */
+
+ // Test some properties of text strings
+ EXPECT_VERSION("0-pre", EQUAL, "0-pre");
+ EXPECT_VERSION("0-pre", LESS, "0-pree");
+
+ EXPECT_VERSION("1.1.6r2-2", GREATER, "1.1.6r-1");
+ EXPECT_VERSION("2.6b2-1", GREATER, "2.6b-2");
+
+ EXPECT_VERSION("98.1p5-1", LESS, "98.1-pre2-b6-2");
+ EXPECT_VERSION("0.4a6-2", GREATER, "0.4-1");
+
+ EXPECT_VERSION("1:3.0.5-2", LESS, "1:3.0.5.1");
+}
+TEST(CompareVersionTest,Epochs)
+{
+ EXPECT_VERSION("1:0.4", GREATER, "10.3");
+ EXPECT_VERSION("1:1.25-4", LESS, "1:1.25-8");
+ EXPECT_VERSION("0:1.18.36", EQUAL, "1.18.36");
+
+ EXPECT_VERSION("1.18.36", GREATER, "1.18.35");
+ EXPECT_VERSION("0:1.18.36", GREATER, "1.18.35");
+}
+TEST(CompareVersionTest,Strangeness)
+{
+ // Funky, but allowed, characters in upstream version
+ EXPECT_VERSION("9:1.18.36:5.4-20", LESS, "10:0.5.1-22");
+ EXPECT_VERSION("9:1.18.36:5.4-20", LESS, "9:1.18.36:5.5-1");
+ EXPECT_VERSION("9:1.18.36:5.4-20", LESS, " 9:1.18.37:4.3-22");
+ EXPECT_VERSION("1.18.36-0.17.35-18", GREATER, "1.18.36-19");
+
+ // Junk
+ EXPECT_VERSION("1:1.2.13-3", LESS, "1:1.2.13-3.1");
+ EXPECT_VERSION("2.0.7pre1-4", LESS, "2.0.7r-1");
+
+ // if a version includes a dash, it should be the debrev dash - policy says so…
+ EXPECT_VERSION("0:0-0-0", GREATER, "0-0");
+
+ // do we like strange versions? Yes we like strange versions…
+ EXPECT_VERSION("0", EQUAL, "0");
+ EXPECT_VERSION("0", EQUAL, "00");
+}
+TEST(CompareVersionTest,DebianBug)
+{
+ // #205960
+ EXPECT_VERSION("3.0~rc1-1", LESS, "3.0-1");
+ // #573592 - debian policy 5.6.12
+ EXPECT_VERSION("1.0", EQUAL, "1.0-0");
+ EXPECT_VERSION("0.2", LESS, "1.0-0");
+ EXPECT_VERSION("1.0", LESS, "1.0-0+b1");
+ EXPECT_VERSION("1.0", GREATER, "1.0-0~");
+}
+TEST(CompareVersionTest,CuptTests)
+{
+ // "steal" the testcases from (old perl) cupt
+ EXPECT_VERSION("1.2.3", EQUAL, "1.2.3"); // identical
+ EXPECT_VERSION("4.4.3-2", EQUAL, "4.4.3-2"); // identical
+ EXPECT_VERSION("1:2ab:5", EQUAL, "1:2ab:5"); // this is correct...
+ EXPECT_VERSION("7:1-a:b-5", EQUAL, "7:1-a:b-5"); // and this
+ EXPECT_VERSION("57:1.2.3abYZ+~-4-5", EQUAL, "57:1.2.3abYZ+~-4-5"); // and those too
+ EXPECT_VERSION("1.2.3", EQUAL, "0:1.2.3"); // zero epoch
+ EXPECT_VERSION("1.2.3", EQUAL, "1.2.3-0"); // zero revision
+ EXPECT_VERSION("009", EQUAL, "9"); // zeroes…
+ EXPECT_VERSION("009ab5", EQUAL, "9ab5"); // there as well
+ EXPECT_VERSION("1.2.3", LESS, "1.2.3-1"); // added non-zero revision
+ EXPECT_VERSION("1.2.3", LESS, "1.2.4"); // just bigger
+ EXPECT_VERSION("1.2.4", GREATER, "1.2.3"); // order doesn't matter
+ EXPECT_VERSION("1.2.24", GREATER, "1.2.3"); // bigger, eh?
+ EXPECT_VERSION("0.10.0", GREATER, "0.8.7"); // bigger, eh?
+ EXPECT_VERSION("3.2", GREATER, "2.3"); // major number rocks
+ EXPECT_VERSION("1.3.2a", GREATER, "1.3.2"); // letters rock
+ EXPECT_VERSION("0.5.0~git", LESS, "0.5.0~git2"); // numbers rock
+ EXPECT_VERSION("2a", LESS, "21"); // but not in all places
+ EXPECT_VERSION("1.3.2a", LESS, "1.3.2b"); // but there is another letter
+ EXPECT_VERSION("1:1.2.3", GREATER, "1.2.4"); // epoch rocks
+ EXPECT_VERSION("1:1.2.3", LESS, "1:1.2.4"); // bigger anyway
+ EXPECT_VERSION("1.2a+~bCd3", LESS, "1.2a++"); // tilde doesn't rock
+ EXPECT_VERSION("1.2a+~bCd3", GREATER, "1.2a+~"); // but first is longer!
+ EXPECT_VERSION("5:2", GREATER, "304-2"); // epoch rocks
+ EXPECT_VERSION("5:2", LESS, "304:2"); // so big epoch?
+ EXPECT_VERSION("25:2", GREATER, "3:2"); // 25 > 3, obviously
+ EXPECT_VERSION("1:2:123", LESS, "1:12:3"); // 12 > 2
+ EXPECT_VERSION("1.2-5", LESS, "1.2-3-5"); // 1.2 < 1.2-3
+ EXPECT_VERSION("5.10.0", GREATER, "5.005"); // preceding zeroes don't matters
+ EXPECT_VERSION("3a9.8", LESS, "3.10.2"); // letters are before all letter symbols
+ EXPECT_VERSION("3a9.8", GREATER, "3~10"); // but after the tilde
+ EXPECT_VERSION("1.4+OOo3.0.0~", LESS, "1.4+OOo3.0.0-4"); // another tilde check
+ EXPECT_VERSION("2.4.7-1", LESS, "2.4.7-z"); // revision comparing
+ EXPECT_VERSION("1.002-1+b2", GREATER, "1.00"); // whatever...
+ /* disabled as dpkg doesn't like them… (versions with illegal char)
+ EXPECT_VERSION("2.2.4-47978_Debian_lenny", EQUAL, "2.2.4-47978_Debian_lenny"); // and underscore...
+ // */
+}
diff --git a/test/libapt/configuration_test.cc b/test/libapt/configuration_test.cc
new file mode 100644
index 000000000..bdc17cbf4
--- /dev/null
+++ b/test/libapt/configuration_test.cc
@@ -0,0 +1,197 @@
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+
+#include <string>
+#include <vector>
+
+#include <gtest/gtest.h>
+
+//FIXME: Test for configuration file parsing;
+// currently only integration/ tests test them implicitly
+
+TEST(ConfigurationTest,Lists)
+{
+ Configuration Cnf;
+
+ Cnf.Set("APT::Keep-Fds::",28);
+ Cnf.Set("APT::Keep-Fds::",17);
+ Cnf.Set("APT::Keep-Fds::2",47);
+ Cnf.Set("APT::Keep-Fds::","broken");
+ std::vector<std::string> fds = Cnf.FindVector("APT::Keep-Fds");
+ ASSERT_EQ(4, fds.size());
+ EXPECT_EQ("28", fds[0]);
+ EXPECT_EQ("17", fds[1]);
+ EXPECT_EQ("47", fds[2]);
+ EXPECT_EQ("broken", fds[3]);
+
+ EXPECT_TRUE(Cnf.Exists("APT::Keep-Fds::2"));
+ EXPECT_EQ("47", Cnf.Find("APT::Keep-Fds::2"));
+ EXPECT_EQ(47, Cnf.FindI("APT::Keep-Fds::2"));
+ EXPECT_FALSE(Cnf.Exists("APT::Keep-Fds::3"));
+ EXPECT_EQ("", Cnf.Find("APT::Keep-Fds::3"));
+ EXPECT_EQ(56, Cnf.FindI("APT::Keep-Fds::3", 56));
+ EXPECT_EQ("not-set", Cnf.Find("APT::Keep-Fds::3", "not-set"));
+
+ Cnf.Clear("APT::Keep-Fds::2");
+ EXPECT_TRUE(Cnf.Exists("APT::Keep-Fds::2"));
+ fds = Cnf.FindVector("APT::Keep-Fds");
+ ASSERT_EQ(4, fds.size());
+ EXPECT_EQ("28", fds[0]);
+ EXPECT_EQ("17", fds[1]);
+ EXPECT_EQ("", fds[2]);
+ EXPECT_EQ("broken", fds[3]);
+
+ Cnf.Clear("APT::Keep-Fds",28);
+ fds = Cnf.FindVector("APT::Keep-Fds");
+ ASSERT_EQ(3, fds.size());
+ EXPECT_EQ("17", fds[0]);
+ EXPECT_EQ("", fds[1]);
+ EXPECT_EQ("broken", fds[2]);
+
+ Cnf.Clear("APT::Keep-Fds","");
+ EXPECT_FALSE(Cnf.Exists("APT::Keep-Fds::2"));
+
+ Cnf.Clear("APT::Keep-Fds",17);
+ Cnf.Clear("APT::Keep-Fds","broken");
+ fds = Cnf.FindVector("APT::Keep-Fds");
+ EXPECT_TRUE(fds.empty());
+
+ Cnf.Set("APT::Keep-Fds::",21);
+ Cnf.Set("APT::Keep-Fds::",42);
+ fds = Cnf.FindVector("APT::Keep-Fds");
+ ASSERT_EQ(2, fds.size());
+ EXPECT_EQ("21", fds[0]);
+ EXPECT_EQ("42", fds[1]);
+
+ Cnf.Clear("APT::Keep-Fds");
+ fds = Cnf.FindVector("APT::Keep-Fds");
+ EXPECT_TRUE(fds.empty());
+}
+TEST(ConfigurationTest,Integers)
+{
+ Configuration Cnf;
+
+ Cnf.CndSet("APT::Version", 42);
+ Cnf.CndSet("APT::Version", "66");
+ EXPECT_EQ("42", Cnf.Find("APT::Version"));
+ EXPECT_EQ(42, Cnf.FindI("APT::Version"));
+ EXPECT_EQ("42", Cnf.Find("APT::Version", "33"));
+ EXPECT_EQ(42, Cnf.FindI("APT::Version", 33));
+ EXPECT_EQ("33", Cnf.Find("APT2::Version", "33"));
+ EXPECT_EQ(33, Cnf.FindI("APT2::Version", 33));
+}
+TEST(ConfigurationTest,DirsAndFiles)
+{
+ Configuration Cnf;
+
+ EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("", Cnf.FindFile("Dir::Aptitude::State"));
+ Cnf.Set("Dir", "/srv/sid");
+ EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+ Cnf.Set("Dir::State", "var/lib/apt");
+ Cnf.Set("Dir::Aptitude::State", "var/lib/aptitude");
+ EXPECT_EQ("/srv/sid/var/lib/apt", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/srv/sid/var/lib/aptitude", Cnf.FindFile("Dir::Aptitude::State"));
+
+ Cnf.Set("RootDir", "/");
+ EXPECT_EQ("/srv/sid/var/lib/apt", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/srv/sid/var/lib/aptitude", Cnf.FindFile("Dir::Aptitude::State"));
+ Cnf.Set("RootDir", "//./////.////");
+ EXPECT_EQ("/srv/sid/var/lib/apt", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/srv/sid/var/lib/aptitude", Cnf.FindFile("Dir::Aptitude::State"));
+ Cnf.Set("RootDir", "/rootdir");
+ EXPECT_EQ("/rootdir/srv/sid/var/lib/apt", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/rootdir/srv/sid/var/lib/aptitude", Cnf.FindFile("Dir::Aptitude::State"));
+ Cnf.Set("RootDir", "/rootdir/");
+ EXPECT_EQ("/rootdir/srv/sid/var/lib/apt", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/rootdir/srv/sid/var/lib/aptitude", Cnf.FindFile("Dir::Aptitude::State"));
+
+ Cnf.Set("Dir::State", "/dev/null");
+ Cnf.Set("Dir::State::lists", "lists/");
+ EXPECT_EQ("/rootdir/dev/null", Cnf.FindDir("Dir::State"));
+ EXPECT_EQ("/rootdir/dev/null", Cnf.FindDir("Dir::State::lists"));
+}
+TEST(ConfigurationTest,DevNullInPaths)
+{
+ Configuration Cnf;
+ EXPECT_EQ("", Cnf.FindFile("Dir"));
+ EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("", Cnf.FindFile("Dir::State::status"));
+ Cnf.Set("Dir::State", "/dev/null");
+ EXPECT_EQ("/dev/null", Cnf.FindFile("Dir::State"));
+ Cnf.Set("Dir", "/");
+ Cnf.Set("Dir::State::status", "status");
+ EXPECT_EQ("/dev/null", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/dev/null", Cnf.FindFile("Dir::State::status"));
+ Cnf.Set("Dir::State", "");
+ EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/status", Cnf.FindFile("Dir::State::status"));
+ Cnf.Set("Dir", "/dev/null");
+ EXPECT_EQ("/dev/null", Cnf.FindFile("Dir"));
+ EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/dev/null", Cnf.FindFile("Dir::State::status"));
+ Cnf.Set("Dir", "/rootdir");
+ EXPECT_EQ("/rootdir", Cnf.FindFile("Dir"));
+ EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/rootdir/status", Cnf.FindFile("Dir::State::status"));
+ Cnf.Set("Dir::State::status", "/foo/status");
+ EXPECT_EQ("/rootdir", Cnf.FindFile("Dir"));
+ EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/foo/status", Cnf.FindFile("Dir::State::status"));
+}
+TEST(ConfigurationTest,Vector)
+{
+ Configuration Cnf;
+
+ std::vector<std::string> vec = Cnf.FindVector("Test::Vector", "");
+ EXPECT_EQ(0, vec.size());
+ vec = Cnf.FindVector("Test::Vector", "foo");
+ ASSERT_EQ(1, vec.size());
+ EXPECT_EQ("foo", vec[0]);
+ vec = Cnf.FindVector("Test::Vector", "foo,bar");
+ EXPECT_EQ(2, vec.size());
+ EXPECT_EQ("foo", vec[0]);
+ EXPECT_EQ("bar", vec[1]);
+ Cnf.Set("Test::Vector::", "baz");
+ Cnf.Set("Test::Vector::", "bob");
+ Cnf.Set("Test::Vector::", "dob");
+ vec = Cnf.FindVector("Test::Vector");
+ ASSERT_EQ(3, vec.size());
+ EXPECT_EQ("baz", vec[0]);
+ EXPECT_EQ("bob", vec[1]);
+ EXPECT_EQ("dob", vec[2]);
+ vec = Cnf.FindVector("Test::Vector", "foo,bar");
+ ASSERT_EQ(3, vec.size());
+ EXPECT_EQ("baz", vec[0]);
+ EXPECT_EQ("bob", vec[1]);
+ EXPECT_EQ("dob", vec[2]);
+ Cnf.Set("Test::Vector", "abel,bravo");
+ vec = Cnf.FindVector("Test::Vector", "foo,bar");
+ ASSERT_EQ(2, vec.size());
+ EXPECT_EQ("abel", vec[0]);
+ EXPECT_EQ("bravo", vec[1]);
+}
+TEST(ConfigurationTest,Merge)
+{
+ Configuration Cnf;
+ Cnf.Set("Binary::apt::option::foo", "bar");
+ Cnf.Set("Binary::apt::option::empty", "");
+ Cnf.Set("option::foo", "foo");
+
+ Cnf.MoveSubTree("Binary::apt", "Binary::apt2");
+ EXPECT_FALSE(Cnf.Exists("Binary::apt::option"));
+ EXPECT_TRUE(Cnf.Exists("option"));
+ EXPECT_EQ("foo", Cnf.Find("option::foo"));
+ EXPECT_EQ("bar", Cnf.Find("Binary::apt2::option::foo"));
+
+ EXPECT_FALSE(Cnf.Exists("option::empty"));
+ EXPECT_TRUE(Cnf.Exists("Binary::apt2::option::empty"));
+ Cnf.Set("option::empty", "not");
+
+ Cnf.MoveSubTree("Binary::apt2", NULL);
+ EXPECT_FALSE(Cnf.Exists("Binary::apt2::option"));
+ EXPECT_TRUE(Cnf.Exists("option"));
+ EXPECT_EQ("bar", Cnf.Find("option::foo"));
+ EXPECT_EQ("", Cnf.Find("option::empty"));
+}
diff --git a/test/libapt/extracttar_test.cc b/test/libapt/extracttar_test.cc
new file mode 100644
index 000000000..0255bd767
--- /dev/null
+++ b/test/libapt/extracttar_test.cc
@@ -0,0 +1,41 @@
+#include <apt-pkg/error.h>
+#include <apt-pkg/extracttar.h>
+#include <iostream>
+#include <stdlib.h>
+
+#include <gtest/gtest.h>
+#include "assert.h"
+
+class Stream : public pkgDirStream
+{
+ public:
+ int count;
+ Stream () { count = 0; }
+ virtual bool DoItem(Item &Itm,int &Fd) { (void)Itm; (void)Fd; count++; return true; }
+ virtual bool Fail(Item &Itm,int Fd) { (void)Itm; (void)Fd; return true; }
+ virtual bool FinishedFile(Item &Itm,int Fd) { (void)Itm; (void)Fd; return true; }
+ virtual bool Process(Item &Itm,const unsigned char * Data, unsigned long Size,unsigned long Pos) { (void)Itm; (void) Data; (void) Size; (void) Pos; return true; }
+ virtual ~Stream() {}
+};
+
+TEST(ExtractTar, ExtractTar)
+{
+ EXPECT_EQ(system("tar c /etc/passwd 2>/dev/null | gzip > tar.tgz"), 0);
+
+ FileFd fd("tar.tgz", FileFd::ReadOnly);
+ unlink("tar.tgz");
+ ExtractTar tar(fd, -1, "gzip");
+
+ // Run multiple times, because we want to check not only that extraction
+ // works, but also that it works multiple times (important for python-apt)
+ for (int i = 0; i < 5; i++) {
+ Stream stream;
+ fd.Seek(0);
+ tar.Go(stream);
+ if (_error->PendingError()) {
+ _error->DumpErrors();
+ EXPECT_FALSE(true);
+ }
+ EXPECT_EQ(stream.count, 1);
+ }
+}
diff --git a/test/libapt/file-helpers.cc b/test/libapt/file-helpers.cc
new file mode 100644
index 000000000..48d8a9fbb
--- /dev/null
+++ b/test/libapt/file-helpers.cc
@@ -0,0 +1,83 @@
+#include <apt-pkg/fileutl.h>
+
+#include <string>
+
+#include <unistd.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+void helperCreateTemporaryDirectory(std::string const &id, std::string &dir)
+{
+ std::string const strtempdir = GetTempDir().append("/apt-tests-").append(id).append(".XXXXXX");
+ char * tempdir = strdup(strtempdir.c_str());
+ ASSERT_STREQ(tempdir, mkdtemp(tempdir));
+ dir = tempdir;
+ free(tempdir);
+}
+void helperRemoveDirectory(std::string const &dir)
+{
+ // basic sanity check to avoid removing random directories based on earlier failures
+ if (dir.find("/apt-tests-") == std::string::npos || dir.find_first_of("*?") != std::string::npos)
+ FAIL() << "Directory '" << dir << "' seems invalid. It is therefore not removed!";
+ else
+ ASSERT_EQ(0, system(std::string("rm -rf ").append(dir).c_str()));
+}
+void helperCreateFile(std::string const &dir, std::string const &name)
+{
+ std::string file = dir;
+ file.append("/");
+ file.append(name);
+ int const fd = creat(file.c_str(), 0600);
+ ASSERT_NE(-1, fd);
+ close(fd);
+}
+void helperCreateDirectory(std::string const &dir, std::string const &name)
+{
+ std::string file = dir;
+ file.append("/");
+ file.append(name);
+ ASSERT_TRUE(CreateDirectory(dir, file));
+}
+void helperCreateLink(std::string const &dir, std::string const &targetname, std::string const &linkname)
+{
+ std::string target = dir;
+ target.append("/");
+ target.append(targetname);
+ std::string link = dir;
+ link.append("/");
+ link.append(linkname);
+ ASSERT_EQ(0, symlink(target.c_str(), link.c_str()));
+}
+void helperCreateTemporaryFile(std::string const &id, FileFd &fd, std::string * const filename, char const * const content)
+{
+ std::string name("apt-test-");
+ name.append(id);
+ size_t const giventmp = name.find(".XXXXXX.");
+ if (giventmp == std::string::npos)
+ name.append(".XXXXXX");
+ char * tempfile = strdup(name.c_str());
+ ASSERT_STRNE(NULL, tempfile);
+ int tempfile_fd;
+ if (giventmp == std::string::npos)
+ tempfile_fd = mkstemp(tempfile);
+ else
+ tempfile_fd = mkstemps(tempfile, name.length() - (giventmp + 7));
+ ASSERT_NE(-1, tempfile_fd);
+ if (filename != NULL)
+ *filename = tempfile;
+ else
+ unlink(tempfile);
+ free(tempfile);
+
+ EXPECT_TRUE(fd.OpenDescriptor(tempfile_fd, FileFd::ReadWrite, true));
+ if (content != NULL)
+ {
+ ASSERT_TRUE(fd.Write(content, strlen(content)));
+ fd.Seek(0);
+ }
+}
diff --git a/test/libapt/file-helpers.h b/test/libapt/file-helpers.h
new file mode 100644
index 000000000..f639c1cbc
--- /dev/null
+++ b/test/libapt/file-helpers.h
@@ -0,0 +1,29 @@
+#ifndef APT_TESTS_FILE_HELPERS
+#define APT_TESTS_FILE_HELPERS
+
+#include <string>
+
+#include <gtest/gtest.h>
+
+class FileFd;
+
+#define createTemporaryDirectory(id, dir) \
+ ASSERT_NO_FATAL_FAILURE(helperCreateTemporaryDirectory(id, dir))
+void helperCreateTemporaryDirectory(std::string const &id, std::string &dir);
+#define removeDirectory(dir) \
+ ASSERT_NO_FATAL_FAILURE(helperRemoveDirectory(dir))
+void helperRemoveDirectory(std::string const &dir);
+#define createFile(dir, name) \
+ ASSERT_NO_FATAL_FAILURE(helperCreateFile(dir, name))
+void helperCreateFile(std::string const &dir, std::string const &name);
+#define createDirectory(dir, name) \
+ ASSERT_NO_FATAL_FAILURE(helperCreateDirectory(dir, name))
+void helperCreateDirectory(std::string const &dir, std::string const &name);
+#define createLink(dir, targetname, linkname) \
+ ASSERT_NO_FATAL_FAILURE(helperCreateLink(dir, targetname, linkname))
+void helperCreateLink(std::string const &dir, std::string const &targetname, std::string const &linkname);
+#define createTemporaryFile(id, fd, filename, content) \
+ ASSERT_NO_FATAL_FAILURE(helperCreateTemporaryFile(id, fd, filename, content))
+void helperCreateTemporaryFile(std::string const &id, FileFd &fd, std::string * const filename, char const * const content);
+
+#endif
diff --git a/test/libapt/fileutl_test.cc b/test/libapt/fileutl_test.cc
new file mode 100644
index 000000000..67bd850a1
--- /dev/null
+++ b/test/libapt/fileutl_test.cc
@@ -0,0 +1,391 @@
+#include <config.h>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/configuration.h>
+
+#include <algorithm>
+#include <string>
+#include <vector>
+#include <stdlib.h>
+#include <string.h>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+static void TestFileFd(mode_t const a_umask, mode_t const ExpectedFilePermission,
+ unsigned int const filemode, APT::Configuration::Compressor const &compressor)
+{
+ std::string trace;
+ strprintf(trace, "TestFileFd: Compressor: %s umask: %#o permission: %#o mode: %d", compressor.Name.c_str(), a_umask, ExpectedFilePermission, filemode);
+ SCOPED_TRACE(trace);
+
+ static const char* fname = "apt-filefd-test.txt";
+ if (FileExists(fname) == true)
+ EXPECT_EQ(0, unlink(fname));
+
+ FileFd f;
+ umask(a_umask);
+ EXPECT_TRUE(f.Open(fname, filemode, compressor));
+ EXPECT_TRUE(f.IsOpen());
+ EXPECT_FALSE(f.Failed());
+ EXPECT_EQ(umask(a_umask), a_umask);
+
+ std::string test = "This is a test!\n";
+ EXPECT_TRUE(f.Write(test.c_str(), test.size()));
+ EXPECT_TRUE(f.IsOpen());
+ EXPECT_FALSE(f.Failed());
+
+ f.Close();
+ EXPECT_FALSE(f.IsOpen());
+ EXPECT_FALSE(f.Failed());
+
+ EXPECT_TRUE(f.Open(fname, FileFd::ReadOnly, compressor));
+ EXPECT_TRUE(f.IsOpen());
+ EXPECT_FALSE(f.Failed());
+ EXPECT_FALSE(f.Eof());
+ EXPECT_NE(0, f.FileSize());
+ EXPECT_FALSE(f.Failed());
+ EXPECT_NE(0, f.ModificationTime());
+ EXPECT_FALSE(f.Failed());
+
+ // ensure the memory is as predictably messed up
+#define APT_INIT_READBACK \
+ char readback[20]; \
+ memset(readback, 'D', sizeof(readback)*sizeof(readback[0])); \
+ readback[19] = '\0';
+#define EXPECT_N_STR(expect, actual) \
+ EXPECT_EQ(0, strncmp(expect, actual, strlen(expect)));
+ {
+ APT_INIT_READBACK
+ char const * const expect = "DDDDDDDDDDDDDDDDDDD";
+ EXPECT_STREQ(expect,readback);
+ EXPECT_N_STR(expect, readback);
+ }
+ {
+ APT_INIT_READBACK
+ char const * const expect = "This";
+ EXPECT_TRUE(f.Read(readback, strlen(expect)));
+ EXPECT_FALSE(f.Failed());
+ EXPECT_FALSE(f.Eof());
+ EXPECT_N_STR(expect, readback);
+ EXPECT_EQ(strlen(expect), f.Tell());
+ }
+ {
+ APT_INIT_READBACK
+ char const * const expect = "test!\n";
+ EXPECT_TRUE(f.Skip((test.size() - f.Tell()) - strlen(expect)));
+ EXPECT_TRUE(f.Read(readback, strlen(expect)));
+ EXPECT_FALSE(f.Failed());
+ EXPECT_FALSE(f.Eof());
+ EXPECT_N_STR(expect, readback);
+ EXPECT_EQ(test.size(), f.Tell());
+ }
+ // Non-zero backwards seek
+ {
+ APT_INIT_READBACK
+ char const * const expect = "is";
+ EXPECT_EQ(test.size(), f.Tell());
+ EXPECT_TRUE(f.Seek(5));
+ EXPECT_TRUE(f.Read(readback, strlen(expect)));
+ EXPECT_FALSE(f.Failed());
+ EXPECT_FALSE(f.Eof());
+ EXPECT_N_STR(expect, readback);
+ EXPECT_EQ(7, f.Tell());
+ }
+ {
+ APT_INIT_READBACK
+ EXPECT_TRUE(f.Seek(0));
+ EXPECT_FALSE(f.Eof());
+ EXPECT_TRUE(f.Read(readback, 20, true));
+ EXPECT_FALSE(f.Failed());
+ EXPECT_TRUE(f.Eof());
+ EXPECT_N_STR(test.c_str(), readback);
+ EXPECT_EQ(f.Size(), f.Tell());
+ }
+ {
+ APT_INIT_READBACK
+ EXPECT_TRUE(f.Seek(0));
+ EXPECT_FALSE(f.Eof());
+ EXPECT_TRUE(f.Read(readback, test.size(), true));
+ EXPECT_FALSE(f.Failed());
+ EXPECT_FALSE(f.Eof());
+ EXPECT_N_STR(test.c_str(), readback);
+ EXPECT_EQ(f.Size(), f.Tell());
+ }
+ {
+ APT_INIT_READBACK
+ EXPECT_TRUE(f.Seek(0));
+ EXPECT_FALSE(f.Eof());
+ unsigned long long actual;
+ EXPECT_TRUE(f.Read(readback, 20, &actual));
+ EXPECT_FALSE(f.Failed());
+ EXPECT_TRUE(f.Eof());
+ EXPECT_EQ(test.size(), actual);
+ EXPECT_N_STR(test.c_str(), readback);
+ EXPECT_EQ(f.Size(), f.Tell());
+ }
+ {
+ APT_INIT_READBACK
+ EXPECT_TRUE(f.Seek(0));
+ EXPECT_FALSE(f.Eof());
+ f.ReadLine(readback, 20);
+ EXPECT_FALSE(f.Failed());
+ EXPECT_FALSE(f.Eof());
+ EXPECT_EQ(test, readback);
+ EXPECT_EQ(f.Size(), f.Tell());
+ }
+ {
+ APT_INIT_READBACK
+ EXPECT_TRUE(f.Seek(0));
+ EXPECT_FALSE(f.Eof());
+ char const * const expect = "This";
+ f.ReadLine(readback, strlen(expect) + 1);
+ EXPECT_FALSE(f.Failed());
+ EXPECT_FALSE(f.Eof());
+ EXPECT_N_STR(expect, readback);
+ EXPECT_EQ(strlen(expect), f.Tell());
+ }
+#undef APT_INIT_READBACK
+
+ f.Close();
+ EXPECT_FALSE(f.IsOpen());
+ EXPECT_FALSE(f.Failed());
+
+ // regression test for permission bug LP: #1304657
+ struct stat buf;
+ EXPECT_EQ(0, stat(fname, &buf));
+ EXPECT_EQ(0, unlink(fname));
+ EXPECT_EQ(ExpectedFilePermission, buf.st_mode & 0777);
+}
+
+static void TestFileFd(unsigned int const filemode)
+{
+ auto const compressors = APT::Configuration::getCompressors();
+ EXPECT_EQ(7, compressors.size());
+ bool atLeastOneWasTested = false;
+ for (auto const &c: compressors)
+ {
+ if ((filemode & FileFd::ReadWrite) == FileFd::ReadWrite &&
+ (c.Name.empty() != true && c.Binary.empty() != true))
+ continue;
+ atLeastOneWasTested = true;
+ TestFileFd(0002, 0664, filemode, c);
+ TestFileFd(0022, 0644, filemode, c);
+ TestFileFd(0077, 0600, filemode, c);
+ TestFileFd(0026, 0640, filemode, c);
+ }
+ EXPECT_TRUE(atLeastOneWasTested);
+}
+
+TEST(FileUtlTest, FileFD)
+{
+ // testing the (un)compress via pipe, as the 'real' compressors are usually built in via libraries
+ _config->Set("APT::Compressor::rev::Name", "rev");
+ _config->Set("APT::Compressor::rev::Extension", ".reversed");
+ _config->Set("APT::Compressor::rev::Binary", "rev");
+ _config->Set("APT::Compressor::rev::Cost", 10);
+ auto const compressors = APT::Configuration::getCompressors(false);
+ EXPECT_EQ(7, compressors.size());
+ EXPECT_TRUE(std::any_of(compressors.begin(), compressors.end(), [](APT::Configuration::Compressor const &c) { return c.Name == "rev"; }));
+
+ std::string const startdir = SafeGetCWD();
+ EXPECT_FALSE(startdir.empty());
+ std::string tempdir;
+ createTemporaryDirectory("filefd", tempdir);
+ EXPECT_EQ(0, chdir(tempdir.c_str()));
+
+ TestFileFd(FileFd::WriteOnly | FileFd::Create);
+ TestFileFd(FileFd::WriteOnly | FileFd::Create | FileFd::Empty);
+ TestFileFd(FileFd::WriteOnly | FileFd::Create | FileFd::Exclusive);
+ TestFileFd(FileFd::WriteOnly | FileFd::Atomic);
+ TestFileFd(FileFd::WriteOnly | FileFd::Create | FileFd::Atomic);
+ // short-hands for ReadWrite with these modes
+ TestFileFd(FileFd::WriteEmpty);
+ TestFileFd(FileFd::WriteAny);
+ TestFileFd(FileFd::WriteTemp);
+ TestFileFd(FileFd::WriteAtomic);
+
+ EXPECT_EQ(0, chdir(startdir.c_str()));
+ removeDirectory(tempdir);
+}
+TEST(FileUtlTest, Glob)
+{
+ std::vector<std::string> files;
+ // normal match
+ files = Glob("*MakeLists.txt");
+ EXPECT_EQ(1, files.size());
+
+ // not there
+ files = Glob("xxxyyyzzz");
+ EXPECT_TRUE(files.empty());
+ EXPECT_FALSE(_error->PendingError());
+
+ // many matches (number is a bit random)
+ files = Glob("*.cc");
+ EXPECT_LT(10, files.size());
+}
+TEST(FileUtlTest, GetTempDir)
+{
+ char const * const envtmp = getenv("TMPDIR");
+ std::string old_tmpdir;
+ if (envtmp != NULL)
+ old_tmpdir = envtmp;
+
+ unsetenv("TMPDIR");
+ EXPECT_EQ("/tmp", GetTempDir());
+
+ setenv("TMPDIR", "", 1);
+ EXPECT_EQ("/tmp", GetTempDir());
+
+ setenv("TMPDIR", "/not-there-no-really-not", 1);
+ EXPECT_EQ("/tmp", GetTempDir());
+
+ // root can access everything, so /usr will be accepted
+ if (geteuid() != 0)
+ {
+ // here but not accessible for non-roots
+ setenv("TMPDIR", "/usr", 1);
+ EXPECT_EQ("/tmp", GetTempDir());
+ }
+
+ // files are no good for tmpdirs, too
+ setenv("TMPDIR", "/dev/null", 1);
+ EXPECT_EQ("/tmp", GetTempDir());
+
+ setenv("TMPDIR", "/var/tmp", 1);
+ EXPECT_EQ("/var/tmp", GetTempDir());
+
+ unsetenv("TMPDIR");
+ if (old_tmpdir.empty() == false)
+ setenv("TMPDIR", old_tmpdir.c_str(), 1);
+}
+TEST(FileUtlTest, Popen)
+{
+ FileFd Fd;
+ pid_t Child;
+ char buf[1024];
+ std::string s;
+ unsigned long long n = 0;
+ std::vector<std::string> OpenFds;
+
+ // count Fds to ensure we don't have a resource leak
+ if(FileExists("/proc/self/fd"))
+ OpenFds = Glob("/proc/self/fd/*");
+
+ // output something
+ const char* Args[10] = {"/bin/echo", "meepmeep", NULL};
+ EXPECT_TRUE(Popen(Args, Fd, Child, FileFd::ReadOnly));
+ EXPECT_TRUE(Fd.Read(buf, sizeof(buf)-1, &n));
+ buf[n] = 0;
+ EXPECT_NE(n, 0);
+ EXPECT_STREQ(buf, "meepmeep\n");
+
+ // wait for the child to exit and cleanup
+ EXPECT_TRUE(ExecWait(Child, "PopenRead"));
+ EXPECT_TRUE(Fd.Close());
+
+ // ensure that after a close all is good again
+ if(FileExists("/proc/self/fd"))
+ EXPECT_EQ(Glob("/proc/self/fd/*").size(), OpenFds.size());
+
+ // ReadWrite is not supported
+ _error->PushToStack();
+ EXPECT_FALSE(Popen(Args, Fd, Child, FileFd::ReadWrite));
+ EXPECT_FALSE(Fd.IsOpen());
+ EXPECT_FALSE(Fd.Failed());
+ EXPECT_TRUE(_error->PendingError());
+ _error->RevertToStack();
+
+ // write something
+ Args[0] = "/bin/bash";
+ Args[1] = "-c";
+ Args[2] = "read";
+ Args[3] = NULL;
+ EXPECT_TRUE(Popen(Args, Fd, Child, FileFd::WriteOnly));
+ s = "\n";
+ EXPECT_TRUE(Fd.Write(s.c_str(), s.length()));
+ EXPECT_TRUE(Fd.Close());
+ EXPECT_FALSE(Fd.IsOpen());
+ EXPECT_FALSE(Fd.Failed());
+ EXPECT_TRUE(ExecWait(Child, "PopenWrite"));
+}
+TEST(FileUtlTest, flAbsPath)
+{
+ std::string cwd = SafeGetCWD();
+ int res = chdir("/etc/");
+ EXPECT_EQ(res, 0);
+ std::string p = flAbsPath("passwd");
+ EXPECT_EQ(p, "/etc/passwd");
+
+ res = chdir(cwd.c_str());
+ EXPECT_EQ(res, 0);
+}
+
+static void TestDevNullFileFd(unsigned int const filemode)
+{
+ SCOPED_TRACE(filemode);
+ FileFd f("/dev/null", filemode);
+ EXPECT_FALSE(f.Failed());
+ EXPECT_TRUE(f.IsOpen());
+ EXPECT_TRUE(f.IsOpen());
+
+ std::string test = "This is a test!\n";
+ EXPECT_TRUE(f.Write(test.c_str(), test.size()));
+ EXPECT_TRUE(f.IsOpen());
+ EXPECT_FALSE(f.Failed());
+
+ f.Close();
+ EXPECT_FALSE(f.IsOpen());
+ EXPECT_FALSE(f.Failed());
+}
+TEST(FileUtlTest, WorkingWithDevNull)
+{
+ TestDevNullFileFd(FileFd::WriteOnly | FileFd::Create);
+ TestDevNullFileFd(FileFd::WriteOnly | FileFd::Create | FileFd::Empty);
+ TestDevNullFileFd(FileFd::WriteOnly | FileFd::Create | FileFd::Exclusive);
+ TestDevNullFileFd(FileFd::WriteOnly | FileFd::Atomic);
+ TestDevNullFileFd(FileFd::WriteOnly | FileFd::Create | FileFd::Atomic);
+ // short-hands for ReadWrite with these modes
+ TestDevNullFileFd(FileFd::WriteEmpty);
+ TestDevNullFileFd(FileFd::WriteAny);
+ TestDevNullFileFd(FileFd::WriteTemp);
+ TestDevNullFileFd(FileFd::WriteAtomic);
+}
+constexpr char const * const TESTSTRING = "This is a test";
+static void TestFailingAtomicKeepsFile(char const * const label, std::string const &filename)
+{
+ SCOPED_TRACE(label);
+ EXPECT_TRUE(FileExists(filename));
+ FileFd fd;
+ EXPECT_TRUE(fd.Open(filename, FileFd::ReadOnly));
+ char buffer[50];
+ EXPECT_NE(nullptr, fd.ReadLine(buffer, sizeof(buffer)));
+ EXPECT_STREQ(TESTSTRING, buffer);
+}
+TEST(FileUtlTest, FailingAtomic)
+{
+ FileFd fd;
+ std::string filename;
+ createTemporaryFile("failingatomic", fd, &filename, TESTSTRING);
+ TestFailingAtomicKeepsFile("init", filename);
+
+ FileFd f;
+ EXPECT_TRUE(f.Open(filename, FileFd::ReadWrite | FileFd::Atomic));
+ f.EraseOnFailure();
+ EXPECT_FALSE(f.Failed());
+ EXPECT_TRUE(f.IsOpen());
+ TestFailingAtomicKeepsFile("before-fail", filename);
+ EXPECT_TRUE(f.Write("Bad file write", 10));
+ f.OpFail();
+ EXPECT_TRUE(f.Failed());
+ TestFailingAtomicKeepsFile("after-fail", filename);
+ EXPECT_TRUE(f.Close());
+ TestFailingAtomicKeepsFile("closed", filename);
+
+ if (filename.empty() == false)
+ unlink(filename.c_str());
+}
diff --git a/test/libapt/getarchitectures_test.cc b/test/libapt/getarchitectures_test.cc
new file mode 100644
index 000000000..53c00cd8f
--- /dev/null
+++ b/test/libapt/getarchitectures_test.cc
@@ -0,0 +1,77 @@
+#include <config.h>
+
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/configuration.h>
+
+#include <string>
+#include <vector>
+
+#include <gtest/gtest.h>
+
+TEST(ArchitecturesTest,SimpleLists)
+{
+ _config->Clear();
+ std::vector<std::string> vec;
+
+ _config->Set("APT::Architectures::1", "i386");
+ _config->Set("APT::Architectures::2", "amd64");
+ vec = APT::Configuration::getArchitectures(false);
+ ASSERT_EQ(2, vec.size());
+ EXPECT_EQ("i386", vec[0]);
+ EXPECT_EQ("amd64", vec[1]);
+
+ _config->Set("APT::Architecture", "i386");
+ vec = APT::Configuration::getArchitectures(false);
+ ASSERT_EQ(2, vec.size());
+ EXPECT_EQ("i386", vec[0]);
+ EXPECT_EQ("amd64", vec[1]);
+
+ _config->Set("APT::Architectures::2", "");
+ vec = APT::Configuration::getArchitectures(false);
+ ASSERT_EQ(1, vec.size());
+ EXPECT_EQ("i386", vec[0]);
+
+ _config->Set("APT::Architecture", "armel");
+ vec = APT::Configuration::getArchitectures(false);
+ ASSERT_EQ(2, vec.size());
+ EXPECT_EQ("armel", vec[0]);
+ EXPECT_EQ("i386", vec[1]);
+
+ _config->Set("APT::Architectures::2", "armel");
+ vec = APT::Configuration::getArchitectures(false);
+ ASSERT_EQ(2, vec.size());
+ EXPECT_EQ("i386", vec[0]);
+ EXPECT_EQ("armel", vec[1]);
+
+ _config->Set("APT::Architectures", "armel,armhf");
+ vec = APT::Configuration::getArchitectures(false);
+ ASSERT_EQ(2, vec.size());
+ EXPECT_EQ("armel", vec[0]);
+ EXPECT_EQ("armhf", vec[1]);
+ _config->Clear();
+}
+TEST(ArchitecturesTest,Duplicates)
+{
+ _config->Clear();
+
+ _config->Set("APT::Architecture", "armel");
+ _config->Set("APT::Architectures::", "i386");
+ _config->Set("APT::Architectures::", "amd64");
+ _config->Set("APT::Architectures::", "i386");
+ _config->Set("APT::Architectures::", "armel");
+ _config->Set("APT::Architectures::", "i386");
+ _config->Set("APT::Architectures::", "amd64");
+ _config->Set("APT::Architectures::", "armel");
+ _config->Set("APT::Architectures::", "armel");
+ _config->Set("APT::Architectures::", "amd64");
+ _config->Set("APT::Architectures::", "amd64");
+ std::vector<std::string> vec = _config->FindVector("APT::Architectures");
+ ASSERT_EQ(10, vec.size());
+ vec = APT::Configuration::getArchitectures(false);
+ ASSERT_EQ(3, vec.size());
+ EXPECT_EQ("i386", vec[0]);
+ EXPECT_EQ("amd64", vec[1]);
+ EXPECT_EQ("armel", vec[2]);
+
+ _config->Clear();
+}
diff --git a/test/libapt/getlanguages_test.cc b/test/libapt/getlanguages_test.cc
new file mode 100644
index 000000000..29ff0c9ae
--- /dev/null
+++ b/test/libapt/getlanguages_test.cc
@@ -0,0 +1,241 @@
+#include <config.h>
+
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+
+#include <algorithm>
+#include <iostream>
+#include <string>
+#include <vector>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+TEST(LanguagesTest,Environment)
+{
+ _config->Clear();
+
+ char const* env[2];
+ env[0] = "de_DE.UTF-8";
+ env[1] = "";
+
+ std::vector<std::string> vec = APT::Configuration::getLanguages(false, false, env);
+ ASSERT_EQ(3 ,vec.size());
+ EXPECT_EQ("de_DE", vec[0]);
+ EXPECT_EQ("de", vec[1]);
+ EXPECT_EQ("en", vec[2]);
+
+ // Special: Check if the cache is actually in use
+ env[0] = "en_GB.UTF-8";
+ vec = APT::Configuration::getLanguages(false, true, env);
+ ASSERT_EQ(3, vec.size());
+ EXPECT_EQ("de_DE", vec[0]);
+ EXPECT_EQ("de", vec[1]);
+ EXPECT_EQ("en", vec[2]);
+
+ env[0] = "en_GB.UTF-8";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ ASSERT_EQ(2, vec.size());
+ EXPECT_EQ("en_GB", vec[0]);
+ EXPECT_EQ("en", vec[1]);
+
+ // esperanto
+ env[0] = "eo.UTF-8";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ ASSERT_EQ(2, vec.size());
+ EXPECT_EQ("eo", vec[0]);
+ EXPECT_EQ("en", vec[1]);
+
+ env[0] = "tr_DE@euro";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(3, vec.size());
+ EXPECT_EQ("tr_DE", vec[0]);
+ EXPECT_EQ("tr", vec[1]);
+ EXPECT_EQ("en", vec[2]);
+
+ env[0] = "de_NO";
+ env[1] = "de_NO:en_GB:nb_NO:nb:no_NO:no:nn_NO:nn:da:sv:en";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(6, vec.size());
+ EXPECT_EQ("de_NO", vec[0]);
+ EXPECT_EQ("de", vec[1]);
+ EXPECT_EQ("en_GB", vec[2]);
+ EXPECT_EQ("nb_NO", vec[3]);
+ EXPECT_EQ("nb", vec[4]);
+ EXPECT_EQ("en", vec[5]);
+
+ env[0] = "pt_PR.UTF-8";
+ env[1] = "";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(3, vec.size());
+ EXPECT_EQ("pt_PR", vec[0]);
+ EXPECT_EQ("pt", vec[1]);
+ EXPECT_EQ("en", vec[2]);
+
+ env[0] = "ast_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(false, false, env); // bogus, but syntactical correct
+ EXPECT_EQ(3, vec.size());
+ EXPECT_EQ("ast_DE", vec[0]);
+ EXPECT_EQ("ast", vec[1]);
+ EXPECT_EQ("en", vec[2]);
+
+ env[0] = "C";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(1, vec.size());
+ EXPECT_EQ("en", vec[0]);
+
+ _config->Set("Acquire::Languages", "none");
+ env[0] = "C";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_TRUE(vec.empty());
+
+ _config->Set("Acquire::Languages", "environment");
+ env[0] = "C";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(1, vec.size());
+ EXPECT_EQ("en", vec[0]);
+
+ _config->Set("Acquire::Languages", "de");
+ env[0] = "C";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(1, vec.size());
+ EXPECT_EQ("de", vec[0]);
+
+ _config->Set("Acquire::Languages", "fr");
+ env[0] = "ast_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(1, vec.size());
+ EXPECT_EQ("fr", vec[0]);
+
+ _config->Set("Acquire::Languages", "environment,en");
+ env[0] = "de_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(3, vec.size());
+ EXPECT_EQ("de_DE", vec[0]);
+ EXPECT_EQ("de", vec[1]);
+ EXPECT_EQ("en", vec[2]);
+ _config->Set("Acquire::Languages", "");
+
+ _config->Set("Acquire::Languages::1", "environment");
+ _config->Set("Acquire::Languages::2", "en");
+ env[0] = "de_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(3, vec.size());
+ EXPECT_EQ("de_DE", vec[0]);
+ EXPECT_EQ("de", vec[1]);
+ EXPECT_EQ("en", vec[2]);
+
+ _config->Set("Acquire::Languages::3", "de");
+ env[0] = "de_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(3, vec.size());
+ EXPECT_EQ("de_DE", vec[0]);
+ EXPECT_EQ("de", vec[1]);
+ EXPECT_EQ("en", vec[2]);
+
+ _config->Clear();
+}
+
+TEST(LanguagesTest,TranslationFiles)
+{
+ _config->Clear();
+ _config->Set("Acquire::Languages::1", "environment");
+ _config->Set("Acquire::Languages::2", "en");
+ _config->Set("Acquire::Languages::3", "de");
+
+ char const* env[2];
+ env[0] = "de_DE.UTF-8";
+ env[1] = "";
+
+ std::string tempdir;
+ createTemporaryDirectory("languages", tempdir);
+
+#define createTranslation(lang) \
+ createFile(tempdir, std::string("/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-").append(lang));
+
+ createTranslation("tr");
+ createTranslation("pt");
+ createTranslation("se~");
+ createTranslation("st.bak");
+ createTranslation("ast_DE");
+ createTranslation("tlh%5fDE");
+
+ _config->Set("Dir::State::lists", tempdir);
+ std::vector<std::string> vec = APT::Configuration::getLanguages(true, false, env);
+ EXPECT_EQ(8, vec.size());
+ EXPECT_EQ("de_DE", vec[0]);
+ EXPECT_EQ("de", vec[1]);
+ EXPECT_EQ("en", vec[2]);
+ EXPECT_EQ("none", vec[3]);
+ EXPECT_NE(vec.end(), std::find(vec.begin(), vec.end(), "pt"));
+ EXPECT_NE(vec.end(), std::find(vec.begin(), vec.end(), "tr"));
+ EXPECT_NE(vec.end(), std::find(vec.begin(), vec.end(), "ast_DE"));
+ EXPECT_NE(vec.end(), std::find(vec.begin(), vec.end(), "tlh_DE"));
+ EXPECT_NE(vec[4], vec[5]);
+ EXPECT_NE(vec[4], vec[6]);
+ EXPECT_NE(vec[4], vec[7]);
+ EXPECT_NE(vec[5], vec[6]);
+ EXPECT_NE(vec[5], vec[7]);
+ EXPECT_NE(vec[6], vec[7]);
+
+ _config->Set("Acquire::Languages", "none");
+ vec = APT::Configuration::getLanguages(true, false, env);
+ EXPECT_EQ(1, vec.size());
+ EXPECT_EQ("none", vec[0]);
+ _config->Set("Acquire::Languages", "");
+
+ _config->Set("Dir::State::lists", "/non-existing-dir");
+ _config->Set("Acquire::Languages::1", "none");
+ env[0] = "de_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_TRUE(vec.empty());
+ env[0] = "de_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(true, false, env);
+ EXPECT_EQ(2, vec.size());
+ EXPECT_EQ("en", vec[0]);
+ EXPECT_EQ("de", vec[1]);
+
+ _config->Set("Acquire::Languages::1", "fr");
+ _config->Set("Acquire::Languages", "de_DE");
+ env[0] = "de_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(1, vec.size());
+ EXPECT_EQ("de_DE", vec[0]);
+
+ _config->Set("Acquire::Languages", "none");
+ env[0] = "de_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(true, false, env);
+ EXPECT_EQ(1, vec.size());
+ EXPECT_EQ("none", vec[0]);
+
+ _error->PushToStack();
+ _config->Set("Acquire::Languages", "");
+ //FIXME: Remove support for this deprecated setting
+ _config->Set("APT::Acquire::Translation", "ast_DE");
+ env[0] = "de_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(true, false, env);
+ EXPECT_EQ(2, vec.size());
+ EXPECT_EQ("ast_DE", vec[0]);
+ EXPECT_EQ("en", vec[1]);
+ _config->Set("APT::Acquire::Translation", "none");
+ env[0] = "de_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(true, false, env);
+ EXPECT_EQ(1, vec.size());
+ EXPECT_EQ("en", vec[0]);
+
+ // discard the deprecation warning for APT::Acquire::Translation
+ if (_error->PendingError())
+ _error->MergeWithStack();
+ else
+ _error->RevertToStack();
+
+ EXPECT_EQ(0, system(std::string("rm -rf ").append(tempdir).c_str()));
+ _config->Clear();
+}
diff --git a/test/libapt/getlistoffilesindir_test.cc b/test/libapt/getlistoffilesindir_test.cc
new file mode 100644
index 000000000..8c5e56b1d
--- /dev/null
+++ b/test/libapt/getlistoffilesindir_test.cc
@@ -0,0 +1,114 @@
+#include <config.h>
+
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/error.h>
+
+#include <string>
+#include <vector>
+#include <iostream>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+#define P(x) std::string(tempdir).append("/").append(x)
+
+TEST(FileUtlTest,GetListOfFilesInDir)
+{
+ std::string tempdir;
+ createTemporaryDirectory("getlistoffiles", tempdir);
+
+ createFile(tempdir, "anormalfile");
+ createFile(tempdir, "01yet-anothernormalfile");
+ createFile(tempdir, "anormalapt.conf");
+ createFile(tempdir, "01yet-anotherapt.conf");
+ createFile(tempdir, "anormalapt.list");
+ createFile(tempdir, "01yet-anotherapt.list");
+ createFile(tempdir, "wrongextension.wron");
+ createFile(tempdir, "wrong-extension.wron");
+ createFile(tempdir, "strangefile.");
+ createFile(tempdir, "s.t.r.a.n.g.e.f.i.l.e");
+ createFile(tempdir, ".hiddenfile");
+ createFile(tempdir, ".hiddenfile.conf");
+ createFile(tempdir, ".hiddenfile.list");
+ createFile(tempdir, "multi..dot");
+ createFile(tempdir, "multi.dot.conf");
+ createFile(tempdir, "multi.dot.list");
+ createFile(tempdir, "disabledfile.disabled");
+ createFile(tempdir, "disabledfile.conf.disabled");
+ createFile(tempdir, "disabledfile.list.disabled");
+ createFile(tempdir, "invälid.conf");
+ createFile(tempdir, "invalíd");
+ createFile(tempdir, "01invalíd");
+ createDirectory(tempdir, "invaliddir");
+ createDirectory(tempdir, "directory.conf");
+ createDirectory(tempdir, "directory.list");
+ createDirectory(tempdir, "directory.wron");
+ createDirectory(tempdir, "directory.list.disabled");
+ createLink(tempdir, "anormalfile", "linkedfile.list");
+ createLink(tempdir, "invaliddir", "linkeddir.list");
+ createLink(tempdir, "non-existing-file", "brokenlink.list");
+
+ // Files with no extension
+ _error->PushToStack();
+ std::vector<std::string> files = GetListOfFilesInDir(tempdir, "", true);
+ ASSERT_EQ(2, files.size());
+ EXPECT_EQ(P("01yet-anothernormalfile"), files[0]);
+ EXPECT_EQ(P("anormalfile"), files[1]);
+
+ // Files with no extension - should be the same as above
+ files = GetListOfFilesInDir(tempdir, "", true, true);
+ ASSERT_EQ(2, files.size());
+ EXPECT_EQ(P("01yet-anothernormalfile"), files[0]);
+ EXPECT_EQ(P("anormalfile"), files[1]);
+
+ // Files with impossible extension
+ files = GetListOfFilesInDir(tempdir, "impossible", true);
+ EXPECT_TRUE(files.empty());
+
+ // Files with impossible or no extension
+ files = GetListOfFilesInDir(tempdir, "impossible", true, true);
+ ASSERT_EQ(2, files.size());
+ EXPECT_EQ(P("01yet-anothernormalfile"), files[0]);
+ EXPECT_EQ(P("anormalfile"), files[1]);
+
+ // Files with list extension - nothing more
+ files = GetListOfFilesInDir(tempdir, "list", true);
+ ASSERT_EQ(4, files.size());
+ EXPECT_EQ(P("01yet-anotherapt.list"), files[0]);
+ EXPECT_EQ(P("anormalapt.list"), files[1]);
+ EXPECT_EQ(P("linkedfile.list"), files[2]);
+ EXPECT_EQ(P("multi.dot.list"), files[3]);
+
+ // Files with conf or no extension
+ files = GetListOfFilesInDir(tempdir, "conf", true, true);
+ ASSERT_EQ(5, files.size());
+ EXPECT_EQ(P("01yet-anotherapt.conf"), files[0]);
+ EXPECT_EQ(P("01yet-anothernormalfile"), files[1]);
+ EXPECT_EQ(P("anormalapt.conf"), files[2]);
+ EXPECT_EQ(P("anormalfile"), files[3]);
+ EXPECT_EQ(P("multi.dot.conf"), files[4]);
+
+ // Files with disabled extension - nothing more
+ files = GetListOfFilesInDir(tempdir, "disabled", true);
+ ASSERT_EQ(3, files.size());
+ EXPECT_EQ(P("disabledfile.conf.disabled"), files[0]);
+ EXPECT_EQ(P("disabledfile.disabled"), files[1]);
+ EXPECT_EQ(P("disabledfile.list.disabled"), files[2]);
+
+ // Files with disabled or no extension
+ files = GetListOfFilesInDir(tempdir, "disabled", true, true);
+ ASSERT_EQ(5, files.size());
+ EXPECT_EQ(P("01yet-anothernormalfile"), files[0]);
+ EXPECT_EQ(P("anormalfile"), files[1]);
+ EXPECT_EQ(P("disabledfile.conf.disabled"), files[2]);
+ EXPECT_EQ(P("disabledfile.disabled"), files[3]);
+ EXPECT_EQ(P("disabledfile.list.disabled"), files[4]);
+
+ // discard the unknown file extension messages
+ if (_error->PendingError())
+ _error->MergeWithStack();
+ else
+ _error->RevertToStack();
+ removeDirectory(tempdir);
+}
diff --git a/test/libapt/globalerror_test.cc b/test/libapt/globalerror_test.cc
new file mode 100644
index 000000000..bb36905a4
--- /dev/null
+++ b/test/libapt/globalerror_test.cc
@@ -0,0 +1,169 @@
+#include <config.h>
+
+#include <apt-pkg/error.h>
+
+#include <stddef.h>
+#include <string>
+#include <errno.h>
+#include <string.h>
+
+#include <gtest/gtest.h>
+
+TEST(GlobalErrorTest,BasicDiscard)
+{
+ GlobalError e;
+ EXPECT_TRUE(e.empty());
+ EXPECT_FALSE(e.PendingError());
+ EXPECT_FALSE(e.Notice("%s Notice", "A"));
+ EXPECT_TRUE(e.empty());
+ EXPECT_FALSE(e.empty(GlobalError::DEBUG));
+ EXPECT_FALSE(e.PendingError());
+ EXPECT_FALSE(e.Error("%s horrible %s %d times", "Something", "happened", 2));
+ EXPECT_TRUE(e.PendingError());
+
+ std::string text;
+ EXPECT_FALSE(e.PopMessage(text));
+ EXPECT_TRUE(e.PendingError());
+ EXPECT_EQ("A Notice", text);
+ EXPECT_TRUE(e.PopMessage(text));
+ EXPECT_EQ("Something horrible happened 2 times", text);
+ EXPECT_TRUE(e.empty(GlobalError::DEBUG));
+ EXPECT_FALSE(e.PendingError());
+ EXPECT_FALSE(e.Error("%s horrible %s %d times", "Something", "happened", 2));
+ EXPECT_TRUE(e.PendingError());
+ EXPECT_FALSE(e.empty(GlobalError::FATAL));
+ e.Discard();
+
+ EXPECT_TRUE(e.empty());
+ EXPECT_FALSE(e.PendingError());
+}
+TEST(GlobalErrorTest,StackPushing)
+{
+ GlobalError e;
+ EXPECT_FALSE(e.Notice("%s Notice", "A"));
+ EXPECT_FALSE(e.Error("%s horrible %s %d times", "Something", "happened", 2));
+ EXPECT_TRUE(e.PendingError());
+ EXPECT_FALSE(e.empty(GlobalError::NOTICE));
+ e.PushToStack();
+ EXPECT_TRUE(e.empty(GlobalError::NOTICE));
+ EXPECT_FALSE(e.PendingError());
+ EXPECT_FALSE(e.Warning("%s Warning", "A"));
+ EXPECT_TRUE(e.empty(GlobalError::ERROR));
+ EXPECT_FALSE(e.PendingError());
+ e.RevertToStack();
+ EXPECT_FALSE(e.empty(GlobalError::ERROR));
+ EXPECT_TRUE(e.PendingError());
+
+ std::string text;
+ EXPECT_FALSE(e.PopMessage(text));
+ EXPECT_TRUE(e.PendingError());
+ EXPECT_EQ("A Notice", text);
+ EXPECT_TRUE(e.PopMessage(text));
+ EXPECT_EQ("Something horrible happened 2 times", text);
+ EXPECT_FALSE(e.PendingError());
+ EXPECT_TRUE(e.empty());
+
+ EXPECT_FALSE(e.Notice("%s Notice", "A"));
+ EXPECT_FALSE(e.Error("%s horrible %s %d times", "Something", "happened", 2));
+ EXPECT_TRUE(e.PendingError());
+ EXPECT_FALSE(e.empty(GlobalError::NOTICE));
+ e.PushToStack();
+ EXPECT_TRUE(e.empty(GlobalError::NOTICE));
+ EXPECT_FALSE(e.PendingError());
+ EXPECT_FALSE(e.Warning("%s Warning", "A"));
+ EXPECT_TRUE(e.empty(GlobalError::ERROR));
+ EXPECT_FALSE(e.PendingError());
+ e.MergeWithStack();
+ EXPECT_FALSE(e.empty(GlobalError::ERROR));
+ EXPECT_TRUE(e.PendingError());
+ EXPECT_FALSE(e.PopMessage(text));
+ EXPECT_TRUE(e.PendingError());
+ EXPECT_EQ("A Notice", text);
+ EXPECT_TRUE(e.PopMessage(text));
+ EXPECT_EQ("Something horrible happened 2 times", text);
+ EXPECT_FALSE(e.PendingError());
+ EXPECT_FALSE(e.empty());
+ EXPECT_FALSE(e.PopMessage(text));
+ EXPECT_EQ("A Warning", text);
+ EXPECT_TRUE(e.empty());
+}
+TEST(GlobalErrorTest,Errno)
+{
+ GlobalError e;
+ std::string const textOfErrnoZero(strerror(0));
+ errno = 0;
+ EXPECT_FALSE(e.Errno("errno", "%s horrible %s %d times", "Something", "happened", 2));
+ EXPECT_FALSE(e.empty());
+ EXPECT_TRUE(e.PendingError());
+ std::string text;
+ EXPECT_TRUE(e.PopMessage(text));
+ EXPECT_FALSE(e.PendingError());
+ EXPECT_EQ(std::string("Something horrible happened 2 times - errno (0: ").append(textOfErrnoZero).append(")"), text);
+ EXPECT_TRUE(e.empty());
+}
+TEST(GlobalErrorTest,LongMessage)
+{
+ GlobalError e;
+ std::string const textOfErrnoZero(strerror(0));
+ errno = 0;
+ std::string text, longText;
+ for (size_t i = 0; i < 500; ++i)
+ longText.append("a");
+ EXPECT_FALSE(e.Error("%s horrible %s %d times", longText.c_str(), "happened", 2));
+ EXPECT_TRUE(e.PopMessage(text));
+ EXPECT_EQ(std::string(longText).append(" horrible happened 2 times"), text);
+
+ EXPECT_FALSE(e.Errno("errno", "%s horrible %s %d times", longText.c_str(), "happened", 2));
+ EXPECT_TRUE(e.PopMessage(text));
+ EXPECT_EQ(std::string(longText).append(" horrible happened 2 times - errno (0: ").append(textOfErrnoZero).append(")"), text);
+
+ EXPECT_FALSE(e.Error("%s horrible %s %d times", longText.c_str(), "happened", 2));
+ std::ostringstream out;
+ e.DumpErrors(out);
+ EXPECT_EQ(std::string("E: ").append(longText).append(" horrible happened 2 times\n"), out.str());
+
+ EXPECT_FALSE(e.Errno("errno", "%s horrible %s %d times", longText.c_str(), "happened", 2));
+ std::ostringstream out2;
+ e.DumpErrors(out2);
+ EXPECT_EQ(std::string("E: ").append(longText).append(" horrible happened 2 times - errno (0: ").append(textOfErrnoZero).append(")\n"), out2.str());
+}
+TEST(GlobalErrorTest,UTF8Message)
+{
+ GlobalError e;
+ std::string text;
+
+ EXPECT_FALSE(e.Warning("Репозиторий не обновлён и будут %d %s", 4, "test"));
+ EXPECT_FALSE(e.PopMessage(text));
+ EXPECT_EQ("Репозиторий не обновлён и будут 4 test", text);
+
+ EXPECT_FALSE(e.Warning("Репозиторий не обновлён и будут %d %s", 4, "test"));
+ std::ostringstream out;
+ e.DumpErrors(out);
+ EXPECT_EQ("W: Репозиторий не обновлён и будут 4 test\n", out.str());
+
+ std::string longText;
+ for (size_t i = 0; i < 50; ++i)
+ longText.append("РезийбёбAZ");
+ EXPECT_FALSE(e.Warning("%s", longText.c_str()));
+ EXPECT_FALSE(e.PopMessage(text));
+ EXPECT_EQ(longText, text);
+}
+TEST(GlobalErrorTest,MultiLineMessage)
+{
+ GlobalError e;
+ std::string text;
+
+ EXPECT_FALSE(e.Warning("Sometimes one line isn't enough.\nYou do know what I mean, right?\r\n%s?\rGood because I don't.", "Right"));
+ EXPECT_FALSE(e.PopMessage(text));
+ EXPECT_EQ("Sometimes one line isn't enough.\nYou do know what I mean, right?\r\nRight?\rGood because I don't.", text);
+
+ EXPECT_FALSE(e.Warning("Sometimes one line isn't enough.\nYou do know what I mean, right?\r\n%s?\rGood because I don't.", "Right"));
+ std::ostringstream out;
+ e.DumpErrors(out);
+ EXPECT_EQ("W: Sometimes one line isn't enough.\n You do know what I mean, right?\n Right?\n Good because I don't.\n", out.str());
+
+ EXPECT_FALSE(e.Warning("Sometimes one line isn't enough.\nYou do know what I mean, right?\r\n%s?\rGood because I don't.\n", "Right"));
+ std::ostringstream out2;
+ e.DumpErrors(out2);
+ EXPECT_EQ("W: Sometimes one line isn't enough.\n You do know what I mean, right?\n Right?\n Good because I don't.\n", out2.str());
+}
diff --git a/test/libapt/gtest_runner.cc b/test/libapt/gtest_runner.cc
new file mode 100644
index 000000000..73854d976
--- /dev/null
+++ b/test/libapt/gtest_runner.cc
@@ -0,0 +1,26 @@
+#include <gtest/gtest.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/init.h>
+
+int main(int argc, char **argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ if (pkgInitSystem(*_config, _system) == false)
+ return 42;
+ int const result = RUN_ALL_TESTS();
+ if (_error->empty() == false)
+ {
+ std::cerr << "The test generated the following global messages:" << std::endl;
+ _error->DumpErrors(std::cerr);
+ // messages on the stack can't be right, error out
+ // even if we have no idea where this message came from
+ if (result == 0)
+ {
+ std::cerr << "All tests successful, but messages were generated, so still a failure!" << std::endl;
+ return 29;
+ }
+ }
+ return result;
+}
diff --git a/test/libapt/hashsums_test.cc b/test/libapt/hashsums_test.cc
new file mode 100644
index 000000000..fb9a25643
--- /dev/null
+++ b/test/libapt/hashsums_test.cc
@@ -0,0 +1,392 @@
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/md5.h>
+#include <apt-pkg/sha1.h>
+#include <apt-pkg/sha2.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/fileutl.h>
+
+#include <iostream>
+#include <stdlib.h>
+#include <string>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+template <class T> void Test(const char *In,const char *Out)
+{
+ T Sum;
+ Sum.Add(In);
+ equals(Sum.Result().Value(), Out);
+}
+
+
+
+TEST(HashSumsTest,SummationStrings)
+{
+#define EXPECT_SUM(Summation, In, Out) \
+ { \
+ Summation Sum; \
+ Sum.Add(In); \
+ EXPECT_EQ(Sum.Result().Value(), Out) << #Summation << " for '" << In << "'"; \
+ }
+
+ // From FIPS PUB 180-1
+ EXPECT_SUM(SHA1Summation, "","da39a3ee5e6b4b0d3255bfef95601890afd80709");
+ EXPECT_SUM(SHA1Summation, "abc","a9993e364706816aba3e25717850c26c9cd0d89d");
+ EXPECT_SUM(SHA1Summation, "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
+ "84983e441c3bd26ebaae4aa1f95129e5e54670f1");
+
+ // MD5 tests from RFC 1321
+ EXPECT_SUM(MD5Summation, "","d41d8cd98f00b204e9800998ecf8427e");
+ EXPECT_SUM(MD5Summation, "a","0cc175b9c0f1b6a831c399e269772661");
+ EXPECT_SUM(MD5Summation, "abc","900150983cd24fb0d6963f7d28e17f72");
+ EXPECT_SUM(MD5Summation, "message digest","f96b697d7cb7938d525a2f31aaf161d0");
+ EXPECT_SUM(MD5Summation, "abcdefghijklmnopqrstuvwxyz","c3fcd3d76192e4007dfb496cca67e13b");
+ EXPECT_SUM(MD5Summation, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
+ "d174ab98d277d9f5a5611c2c9f419d9f");
+ EXPECT_SUM(MD5Summation, "12345678901234567890123456789012345678901234567890123456789012345678901234567890",
+ "57edf4a22be3c955ac49da2e2107b67a");
+
+ // SHA-256, From FIPS 180-2
+ EXPECT_SUM(SHA256Summation, "", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855");
+ EXPECT_SUM(SHA256Summation, "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
+ "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1");
+
+ // SHA-512
+ EXPECT_SUM(SHA512Summation, "",
+ "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce"
+ "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e");
+ EXPECT_SUM(SHA512Summation, "abc",
+ "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a"
+ "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f");
+
+
+ EXPECT_SUM(MD5Summation, "The quick brown fox jumps over the lazy dog", "9e107d9d372bb6826bd81d3542a419d6");
+ EXPECT_SUM(MD5Summation, "The quick brown fox jumps over the lazy dog.", "e4d909c290d0fb1ca068ffaddf22cbd0");
+ EXPECT_SUM(SHA1Summation, "The quick brown fox jumps over the lazy dog", "2fd4e1c67a2d28fced849ee1bb76e7391b93eb12");
+ EXPECT_SUM(SHA1Summation, "The quick brown fox jumps over the lazy cog", "de9f2c7fd25e1b3afad3e85a0bd17d9b100db4b3");
+ EXPECT_SUM(SHA256Summation, "The quick brown fox jumps over the lazy dog", "d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592");
+ EXPECT_SUM(SHA256Summation, "The quick brown fox jumps over the lazy dog.", "ef537f25c895bfa782526529a9b63d97aa631564d5d789c2b765448c8635fb6c");
+ EXPECT_SUM(SHA512Summation, "The quick brown fox jumps over the lazy dog", "07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb64"
+ "2e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6");
+ EXPECT_SUM(SHA512Summation, "The quick brown fox jumps over the lazy dog.", "91ea1245f20d46ae9a037a989f54f1f790f0a47607eeb8a14d12890cea77a1bb"
+ "c6c7ed9cf205e67b7f2b8fd4c7dfd3a7a8617e45f3c463d481c7e586c39ac1ed");
+
+#undef EXPECT_SUM
+}
+TEST(HashSumsTest, Mill)
+{
+ SHA1Summation Sum1;
+
+ const unsigned char As[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
+ size_t const AsCount = sizeof(As)/sizeof(As[0]) - 1;
+ size_t Count = 1000000;
+ while (Count != 0)
+ {
+ if (Count >= AsCount)
+ {
+ Sum1.Add(As, AsCount);
+ Count -= AsCount;
+ }
+ else
+ {
+ Sum1.Add(As,Count);
+ Count = 0;
+ }
+ }
+
+ EXPECT_EQ("34aa973cd4c4daa4f61eeb2bdbad27316534016f", Sum1.Result().Value());
+}
+
+static void getSummationString(char const * const type, std::string &sum)
+{
+ /* to compare our result with an independent source we call the specific binaries
+ and read their result back. We do this with a little trick by claiming that the
+ summation is a compressor – and open the 'compressed' file later on directly to
+ read out the summation sum calculated by it */
+ APT::Configuration::Compressor compress(type, ".ext", type, NULL, NULL, 99);
+ std::string name("apt-test-");
+ name.append("hashsums").append(".XXXXXX");
+ char * tempfile = strdup(name.c_str());
+ int tempfile_fd = mkstemp(tempfile);
+ close(tempfile_fd);
+ ASSERT_NE(-1, tempfile_fd);
+
+ FileFd fd;
+ ASSERT_TRUE(fd.Open(tempfile, FileFd::WriteOnly | FileFd::Empty, compress));
+ ASSERT_TRUE(fd.IsOpen());
+ FileFd input("/etc/os-release", FileFd::ReadOnly);
+ ASSERT_TRUE(input.IsOpen());
+ ASSERT_NE(0, input.FileSize());
+ ASSERT_TRUE(CopyFile(input, fd));
+ ASSERT_TRUE(input.IsOpen());
+ ASSERT_TRUE(fd.IsOpen());
+ ASSERT_FALSE(fd.Failed());
+ input.Close();
+ fd.Close();
+ ASSERT_TRUE(fd.Open(tempfile, FileFd::ReadOnly, FileFd::None));
+ ASSERT_TRUE(fd.IsOpen());
+ ASSERT_NE(0, fd.FileSize());
+ ASSERT_FALSE(fd.Failed());
+ unlink(tempfile);
+ free(tempfile);
+ char readback[2000];
+ unsigned long long actual;
+ ASSERT_TRUE(fd.Read(readback, sizeof(readback)/sizeof(readback[0]), &actual));
+ actual -= 4;
+ readback[actual] = '\0';
+ sum = readback;
+}
+TEST(HashSumsTest, FileBased)
+{
+ std::string summation;
+
+ getSummationString("md5sum", summation);
+ MD5SumValue md5(summation);
+ EXPECT_EQ(md5.Value(), summation);
+
+ getSummationString("sha1sum", summation);
+ SHA1SumValue sha1(summation);
+ EXPECT_EQ(sha1.Value(), summation);
+
+ getSummationString("sha256sum", summation);
+ SHA256SumValue sha256(summation);
+ EXPECT_EQ(sha256.Value(), summation);
+
+ getSummationString("sha512sum", summation);
+ SHA512SumValue sha512(summation);
+ EXPECT_EQ(sha512.Value(), summation);
+
+ FileFd fd("/etc/os-release", FileFd::ReadOnly);
+ EXPECT_TRUE(fd.IsOpen());
+ std::string FileSize;
+ strprintf(FileSize, "%llu", fd.FileSize());
+
+ {
+ Hashes hashes;
+ hashes.AddFD(fd.Fd());
+ HashStringList list = hashes.GetHashStringList();
+ EXPECT_FALSE(list.empty());
+ EXPECT_EQ(5, list.size());
+ EXPECT_EQ(md5.Value(), list.find("MD5Sum")->HashValue());
+ EXPECT_EQ(sha1.Value(), list.find("SHA1")->HashValue());
+ EXPECT_EQ(sha256.Value(), list.find("SHA256")->HashValue());
+ EXPECT_EQ(sha512.Value(), list.find("SHA512")->HashValue());
+ EXPECT_EQ(FileSize, list.find("Checksum-FileSize")->HashValue());
+ }
+ unsigned long long sz = fd.FileSize();
+ fd.Seek(0);
+ {
+ Hashes hashes;
+ hashes.AddFD(fd.Fd(), sz);
+ HashStringList list = hashes.GetHashStringList();
+ EXPECT_FALSE(list.empty());
+ EXPECT_EQ(5, list.size());
+ EXPECT_EQ(md5.Value(), list.find("MD5Sum")->HashValue());
+ EXPECT_EQ(sha1.Value(), list.find("SHA1")->HashValue());
+ EXPECT_EQ(sha256.Value(), list.find("SHA256")->HashValue());
+ EXPECT_EQ(sha512.Value(), list.find("SHA512")->HashValue());
+ EXPECT_EQ(FileSize, list.find("Checksum-FileSize")->HashValue());
+ }
+ fd.Seek(0);
+ {
+ Hashes hashes(Hashes::MD5SUM | Hashes::SHA512SUM);
+ hashes.AddFD(fd);
+ HashStringList list = hashes.GetHashStringList();
+ EXPECT_FALSE(list.empty());
+ EXPECT_EQ(3, list.size());
+ EXPECT_EQ(md5.Value(), list.find("MD5Sum")->HashValue());
+ EXPECT_EQ(NULL, list.find("SHA1"));
+ EXPECT_EQ(NULL, list.find("SHA256"));
+ EXPECT_EQ(sha512.Value(), list.find("SHA512")->HashValue());
+ EXPECT_EQ(FileSize, list.find("Checksum-FileSize")->HashValue());
+ fd.Seek(0);
+ Hashes hashes2(list);
+ hashes2.AddFD(fd);
+ list = hashes2.GetHashStringList();
+ EXPECT_FALSE(list.empty());
+ EXPECT_EQ(3, list.size());
+ EXPECT_EQ(md5.Value(), list.find("MD5Sum")->HashValue());
+ EXPECT_EQ(NULL, list.find("SHA1"));
+ EXPECT_EQ(NULL, list.find("SHA256"));
+ EXPECT_EQ(sha512.Value(), list.find("SHA512")->HashValue());
+ EXPECT_EQ(FileSize, list.find("Checksum-FileSize")->HashValue());
+ }
+ fd.Seek(0);
+ {
+ MD5Summation MD5;
+ MD5.AddFD(fd.Fd());
+ EXPECT_EQ(md5.Value(), MD5.Result().Value());
+ }
+ fd.Seek(0);
+ {
+ SHA1Summation SHA1;
+ SHA1.AddFD(fd.Fd());
+ EXPECT_EQ(sha1.Value(), SHA1.Result().Value());
+ }
+ fd.Seek(0);
+ {
+ SHA256Summation SHA2;
+ SHA2.AddFD(fd.Fd());
+ EXPECT_EQ(sha256.Value(), SHA2.Result().Value());
+ }
+ fd.Seek(0);
+ {
+ SHA512Summation SHA2;
+ SHA2.AddFD(fd.Fd());
+ EXPECT_EQ(sha512.Value(), SHA2.Result().Value());
+ }
+ fd.Close();
+
+ HashString sha2file("SHA512", sha512.Value());
+ EXPECT_TRUE(sha2file.VerifyFile("/etc/os-release"));
+ HashString sha2wrong("SHA512", "00000000000");
+ EXPECT_FALSE(sha2wrong.VerifyFile("/etc/os-release"));
+ EXPECT_EQ(sha2file, sha2file);
+ EXPECT_TRUE(sha2file == sha2file);
+ EXPECT_NE(sha2file, sha2wrong);
+ EXPECT_TRUE(sha2file != sha2wrong);
+
+ HashString sha2big("SHA256", sha256.Value());
+ EXPECT_TRUE(sha2big.VerifyFile("/etc/os-release"));
+ HashString sha2small("sha256:" + sha256.Value());
+ EXPECT_TRUE(sha2small.VerifyFile("/etc/os-release"));
+ EXPECT_EQ(sha2big, sha2small);
+ EXPECT_TRUE(sha2big == sha2small);
+ EXPECT_FALSE(sha2big != sha2small);
+
+ HashStringList hashes;
+ EXPECT_TRUE(hashes.empty());
+ EXPECT_TRUE(hashes.push_back(sha2file));
+ EXPECT_FALSE(hashes.empty());
+ EXPECT_EQ(1, hashes.size());
+
+ HashStringList wrong;
+ EXPECT_TRUE(wrong.push_back(sha2wrong));
+ EXPECT_NE(wrong, hashes);
+ EXPECT_FALSE(wrong == hashes);
+ EXPECT_TRUE(wrong != hashes);
+
+ HashStringList similar;
+ EXPECT_TRUE(similar.push_back(sha2big));
+ EXPECT_NE(similar, hashes);
+ EXPECT_FALSE(similar == hashes);
+ EXPECT_TRUE(similar != hashes);
+
+ EXPECT_TRUE(hashes.push_back(sha2big));
+ EXPECT_EQ(2, hashes.size());
+ EXPECT_TRUE(hashes.push_back(sha2small));
+ EXPECT_EQ(2, hashes.size());
+ EXPECT_FALSE(hashes.push_back(sha2wrong));
+ EXPECT_EQ(2, hashes.size());
+ EXPECT_TRUE(hashes.VerifyFile("/etc/os-release"));
+
+ EXPECT_EQ(similar, hashes);
+ EXPECT_TRUE(similar == hashes);
+ EXPECT_FALSE(similar != hashes);
+ similar.clear();
+ EXPECT_TRUE(similar.empty());
+ EXPECT_EQ(0, similar.size());
+ EXPECT_NE(similar, hashes);
+ EXPECT_FALSE(similar == hashes);
+ EXPECT_TRUE(similar != hashes);
+}
+TEST(HashSumsTest, HashStringList)
+{
+ _config->Clear("Acquire::ForceHash");
+
+ HashStringList list;
+ EXPECT_TRUE(list.empty());
+ EXPECT_FALSE(list.usable());
+ EXPECT_EQ(0, list.size());
+ EXPECT_EQ(NULL, list.find(NULL));
+ EXPECT_EQ(NULL, list.find(""));
+ EXPECT_EQ(NULL, list.find("MD5Sum"));
+ EXPECT_EQ(NULL, list.find("ROT26"));
+ EXPECT_EQ(NULL, list.find("SHA1"));
+ EXPECT_EQ(0, list.FileSize());
+
+ // empty lists aren't equal
+ HashStringList list2;
+ EXPECT_FALSE(list == list2);
+ EXPECT_TRUE(list != list2);
+
+ // some hashes don't really contribute to usability
+ list.push_back(HashString("Checksum-FileSize", "29"));
+ EXPECT_FALSE(list.empty());
+ EXPECT_FALSE(list.usable());
+ EXPECT_EQ(1, list.size());
+ EXPECT_EQ(29, list.FileSize());
+ list.push_back(HashString("MD5Sum", "d41d8cd98f00b204e9800998ecf8427e"));
+ EXPECT_FALSE(list.empty());
+ EXPECT_FALSE(list.usable());
+ EXPECT_EQ(2, list.size());
+ EXPECT_EQ(29, list.FileSize());
+ EXPECT_TRUE(NULL != list.find("MD5Sum"));
+ list.push_back(HashString("SHA1", "cacecbd74968bc90ea3342767e6b94f46ddbcafc"));
+ EXPECT_FALSE(list.usable());
+ EXPECT_EQ(3, list.size());
+ EXPECT_EQ(29, list.FileSize());
+ EXPECT_TRUE(NULL != list.find("MD5Sum"));
+ EXPECT_TRUE(NULL != list.find("SHA1"));
+ list.push_back(HashString("SHA256", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"));
+ EXPECT_TRUE(list.usable());
+ EXPECT_EQ(4, list.size());
+ EXPECT_EQ(29, list.FileSize());
+ EXPECT_TRUE(NULL != list.find("MD5Sum"));
+ EXPECT_TRUE(NULL != list.find("SHA1"));
+ EXPECT_TRUE(NULL != list.find("SHA256"));
+
+ Hashes hashes;
+ hashes.Add("The quick brown fox jumps over the lazy dog");
+ list = hashes.GetHashStringList();
+ EXPECT_FALSE(list.empty());
+ EXPECT_TRUE(list.usable());
+ EXPECT_EQ(5, list.size());
+ EXPECT_TRUE(NULL != list.find(NULL));
+ EXPECT_TRUE(NULL != list.find(""));
+ EXPECT_TRUE(NULL != list.find("MD5Sum"));
+ EXPECT_TRUE(NULL != list.find("Checksum-FileSize"));
+ EXPECT_TRUE(NULL == list.find("ROT26"));
+
+ _config->Set("Acquire::ForceHash", "MD5Sum");
+ EXPECT_FALSE(list.empty());
+ EXPECT_TRUE(list.usable());
+ EXPECT_EQ(5, list.size());
+ EXPECT_TRUE(NULL != list.find(NULL));
+ EXPECT_TRUE(NULL != list.find(""));
+ EXPECT_TRUE(NULL != list.find("MD5Sum"));
+ EXPECT_TRUE(NULL != list.find("Checksum-FileSize"));
+ EXPECT_TRUE(NULL == list.find("ROT26"));
+
+ _config->Set("Acquire::ForceHash", "ROT26");
+ EXPECT_FALSE(list.empty());
+ EXPECT_FALSE(list.usable());
+ EXPECT_EQ(5, list.size());
+ EXPECT_TRUE(NULL == list.find(NULL));
+ EXPECT_TRUE(NULL == list.find(""));
+ EXPECT_TRUE(NULL != list.find("MD5Sum"));
+ EXPECT_TRUE(NULL != list.find("Checksum-FileSize"));
+ EXPECT_TRUE(NULL == list.find("ROT26"));
+
+ _config->Clear("Acquire::ForceHash");
+
+ list2.push_back(*list.find("MD5Sum"));
+ EXPECT_TRUE(list == list2);
+ EXPECT_FALSE(list != list2);
+
+ // introduce a mismatch to the list
+ list2.push_back(HashString("SHA1", "cacecbd74968bc90ea3342767e6b94f46ddbcafc"));
+ EXPECT_FALSE(list == list2);
+ EXPECT_TRUE(list != list2);
+
+ _config->Set("Acquire::ForceHash", "MD5Sum");
+ EXPECT_TRUE(list == list2);
+ EXPECT_FALSE(list != list2);
+
+ _config->Clear("Acquire::ForceHash");
+}
diff --git a/test/libapt/indexcopytosourcelist_test.cc b/test/libapt/indexcopytosourcelist_test.cc
new file mode 100644
index 000000000..eb6d49edf
--- /dev/null
+++ b/test/libapt/indexcopytosourcelist_test.cc
@@ -0,0 +1,109 @@
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/indexcopy.h>
+
+#include <string>
+#include <stdio.h>
+
+#include <gtest/gtest.h>
+
+class NoCopy : private IndexCopy {
+ public:
+ std::string ConvertToSourceList(std::string const &CD,std::string &&Path) {
+ IndexCopy::ConvertToSourceList(CD, Path);
+ return Path;
+ }
+ bool GetFile(std::string &/*Filename*/, unsigned long long &/*Size*/) APT_OVERRIDE { return false; }
+ bool RewriteEntry(FileFd & /*Target*/, std::string const &/*File*/) APT_OVERRIDE { return false; }
+ const char *GetFileName() APT_OVERRIDE { return NULL; }
+ const char *Type() APT_OVERRIDE { return NULL; }
+
+};
+
+TEST(IndexCopyTest, ConvertToSourceList)
+{
+ NoCopy ic;
+ std::string const CD("/media/cdrom/");
+
+ char const * Releases[] = { "unstable", "wheezy-updates", NULL };
+ char const * Components[] = { "main", "non-free", NULL };
+
+ for (char const ** Release = Releases; *Release != NULL; ++Release)
+ {
+ SCOPED_TRACE(std::string("Release ") + *Release);
+ for (char const ** Component = Components; *Component != NULL; ++Component)
+ {
+ SCOPED_TRACE(std::string("Component ") + *Component);
+ std::string const Path = std::string("dists/") + *Release + "/" + *Component + "/";
+ std::string const Binary = Path + "binary-";
+ std::string const A = Binary + "armel/";
+ std::string const B = Binary + "mips/";
+ std::string const C = Binary + "kfreebsd-mips/";
+ std::string const S = Path + "source/";
+ std::string const List = std::string(*Release) + " " + *Component;
+
+ {
+ SCOPED_TRACE("no archs configured");
+ _config->Clear("APT");
+ _config->Set("APT::Architecture", "all");
+ _config->Set("APT::Architectures::", "all");
+ APT::Configuration::getArchitectures(false);
+ EXPECT_EQ(A, ic.ConvertToSourceList("/media/cdrom/", CD + A));
+ EXPECT_EQ(B, ic.ConvertToSourceList("/media/cdrom/", CD + B));
+ EXPECT_EQ(C, ic.ConvertToSourceList("/media/cdrom/", CD + C));
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + S));
+ }
+
+ {
+ SCOPED_TRACE("mips configured");
+ _config->Clear("APT");
+ _config->Set("APT::Architecture", "mips");
+ _config->Set("APT::Architectures::", "mips");
+ APT::Configuration::getArchitectures(false);
+ EXPECT_EQ(A, ic.ConvertToSourceList("/media/cdrom/", CD + A));
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + B));
+ EXPECT_EQ(C, ic.ConvertToSourceList("/media/cdrom/", CD + C));
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + S));
+ }
+
+ {
+ SCOPED_TRACE("kfreebsd-mips configured");
+ _config->Clear("APT");
+ _config->Set("APT::Architecture", "kfreebsd-mips");
+ _config->Set("APT::Architectures::", "kfreebsd-mips");
+ APT::Configuration::getArchitectures(false);
+ EXPECT_EQ(A, ic.ConvertToSourceList("/media/cdrom/", CD + A));
+ EXPECT_EQ(B, ic.ConvertToSourceList("/media/cdrom/", CD + B));
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + C));
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + S));
+ }
+
+ {
+ SCOPED_TRACE("armel configured");
+ _config->Clear("APT");
+ _config->Set("APT::Architecture", "armel");
+ _config->Set("APT::Architectures::", "armel");
+ APT::Configuration::getArchitectures(false);
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + A));
+ EXPECT_EQ(B, ic.ConvertToSourceList("/media/cdrom/", CD + B));
+ EXPECT_EQ(C, ic.ConvertToSourceList("/media/cdrom/", CD + C));
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + S));
+ }
+
+ {
+ SCOPED_TRACE("armel+mips configured");
+ _config->Clear("APT");
+ _config->Set("APT::Architecture", "armel");
+ _config->Set("APT::Architectures::", "armel");
+ _config->Set("APT::Architectures::", "mips");
+ APT::Configuration::getArchitectures(false);
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + A));
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + B));
+ EXPECT_EQ(C, ic.ConvertToSourceList("/media/cdrom/", CD + C));
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + S));
+ }
+ }
+ }
+}
diff --git a/test/libapt/install_progress_test.cc b/test/libapt/install_progress_test.cc
new file mode 100644
index 000000000..b63b4716f
--- /dev/null
+++ b/test/libapt/install_progress_test.cc
@@ -0,0 +1,25 @@
+#include <config.h>
+
+#include <apt-pkg/install-progress.h>
+
+#include <string>
+
+#include <gtest/gtest.h>
+
+TEST(InstallProgressTest, FancyGetTextProgressStr)
+{
+ APT::Progress::PackageManagerFancy p;
+
+ EXPECT_EQ(60, p.GetTextProgressStr(0.5, 60).size());
+ EXPECT_EQ("[#.]", p.GetTextProgressStr(0.5, 4));
+ EXPECT_EQ("[..........]", p.GetTextProgressStr(0.0, 12));
+ EXPECT_EQ("[#.........]", p.GetTextProgressStr(0.1, 12));
+ EXPECT_EQ("[####......]", p.GetTextProgressStr(0.4999, 12));
+ EXPECT_EQ("[#####.....]", p.GetTextProgressStr(0.5001, 12));
+ EXPECT_EQ("[#########.]", p.GetTextProgressStr(0.9, 12));
+ EXPECT_EQ("[##########]", p.GetTextProgressStr(1.0, 12));
+
+ // deal with incorrect inputs gracefully (or should we die instead?)
+ EXPECT_EQ("[..........]", p.GetTextProgressStr(-1.0, 12));
+ EXPECT_EQ("[##########]", p.GetTextProgressStr(2.0, 12));
+}
diff --git a/test/libapt/openmaybeclearsignedfile_test.cc b/test/libapt/openmaybeclearsignedfile_test.cc
new file mode 100644
index 000000000..40735812d
--- /dev/null
+++ b/test/libapt/openmaybeclearsignedfile_test.cc
@@ -0,0 +1,342 @@
+#include <config.h>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/gpgv.h>
+
+#include <string>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+/* The test files are created with the 'Joe Sixpack' and 'Marvin Paranoid'
+ test key included in the integration testing framework */
+
+TEST(OpenMaybeClearSignedFileTest,SimpleSignedFile)
+{
+ std::string tempfile;
+ FileFd fd;
+ // Using c++11 raw-strings would be nifty, but travis doesn't support it…
+ createTemporaryFile("simplesignedfile", fd, &tempfile, "-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----\n");
+
+ EXPECT_TRUE(OpenMaybeClearSignedFile(tempfile, fd));
+ if (tempfile.empty() == false)
+ unlink(tempfile.c_str());
+ EXPECT_TRUE(fd.IsOpen());
+ char buffer[100];
+ EXPECT_TRUE(fd.ReadLine(buffer, sizeof(buffer)));
+ EXPECT_STREQ(buffer, "Test");
+ EXPECT_TRUE(fd.Eof());
+}
+
+TEST(OpenMaybeClearSignedFileTest,WhitespaceSignedFile)
+{
+ std::string tempfile;
+ FileFd fd;
+ // no raw-string here to protect the whitespace from cleanup
+ createTemporaryFile("simplesignedfile", fd, &tempfile, "-----BEGIN PGP SIGNED MESSAGE----- \t \n"
+"Hash: SHA512 \n"
+" \n"
+"Test \n"
+"-----BEGIN PGP SIGNATURE----- \n"
+" \n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt \n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l \n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg \n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k \n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx \n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns \n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq \n"
+"=TB1F \n"
+"-----END PGP SIGNATURE-----");
+
+ EXPECT_TRUE(OpenMaybeClearSignedFile(tempfile, fd));
+ if (tempfile.empty() == false)
+ unlink(tempfile.c_str());
+ EXPECT_TRUE(fd.IsOpen());
+ char buffer[100];
+ EXPECT_TRUE(fd.ReadLine(buffer, sizeof(buffer)));
+ EXPECT_STREQ(buffer, "Test");
+ EXPECT_TRUE(fd.Eof());
+}
+
+TEST(OpenMaybeClearSignedFileTest,SignedFileWithContentHeaders)
+{
+ std::string tempfile;
+ FileFd fd;
+ createTemporaryFile("headerssignedfile", fd, &tempfile, "-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Version: 0.8.15~exp1\n"
+"Hash: SHA512\n"
+"Comment: I love you!\n"
+"X-Expires: never\n"
+"Multilines: no\n"
+" yes\n"
+" maybe\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----\n");
+
+ EXPECT_TRUE(OpenMaybeClearSignedFile(tempfile, fd));
+ if (tempfile.empty() == false)
+ unlink(tempfile.c_str());
+ EXPECT_TRUE(fd.IsOpen());
+ char buffer[100];
+ EXPECT_TRUE(fd.ReadLine(buffer, sizeof(buffer)));
+ EXPECT_STREQ(buffer, "Test");
+ EXPECT_TRUE(fd.Eof());
+}
+
+// That isn't how multiple signatures are done
+TEST(OpenMaybeClearSignedFileTest,SignedFileWithTwoSignatures)
+{
+ std::string tempfile;
+ FileFd fd;
+ createTemporaryFile("doublesignedfile", fd, &tempfile, "-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFHBAEBCgAxFiEE3mauypFRr6GHfsMd6FJdR1KBROIFAlhT/yYTHG1hcnZpbkBl\n"
+"eGFtcGxlLm9yZwAKCRDoUl1HUoFE4qq3B/459MSk3xCW30wc5+ul5ZxTSg6eLYPJ\n"
+"tfVNYi90/ZxRrYQAN+EWozEIZcxoMYp8Ans3++irkjPbHs4NsesmFKt2W5meFl4V\n"
+"oUzYrOh5y5GlDeF7ok5g9atQe8BojjBics+g1IBYcnaMU+ywONmlixa03IPGfxV5\n"
+"oTx02Xvlns20i6HRc0WFtft5q1hXo4EIlVc9O0u902SVEEkeuHF3+bCcXrNLPBJA\n"
+"+8dxmH5+i89f/kVqURrdHdEuA1tsTNyb2C+lvRONh21H8QRRTU/iUQSzV6vZvof5\n"
+"ASc9hsAZRG0xHuRU0F94V/XrkWw8QYAobJ/yxvs4L0EuA4optbSqawDB\n"
+"=CP8j\n"
+"-----END PGP SIGNATURE-----\n");
+
+ EXPECT_TRUE(OpenMaybeClearSignedFile(tempfile, fd));
+ if (tempfile.empty() == false)
+ unlink(tempfile.c_str());
+ EXPECT_TRUE(fd.IsOpen());
+ char buffer[100];
+ EXPECT_TRUE(fd.ReadLine(buffer, sizeof(buffer)));
+ EXPECT_STREQ(buffer, "Test");
+ EXPECT_TRUE(fd.Eof());
+}
+
+TEST(OpenMaybeClearSignedFileTest,TwoSimpleSignedFile)
+{
+ std::string tempfile;
+ FileFd fd;
+ // read only the first message
+ createTemporaryFile("twosimplesignedfile", fd, &tempfile, "-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----\n"
+"-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----");
+
+ EXPECT_TRUE(_error->empty());
+ EXPECT_TRUE(OpenMaybeClearSignedFile(tempfile, fd));
+ if (tempfile.empty() == false)
+ unlink(tempfile.c_str());
+ EXPECT_FALSE(_error->empty());
+ EXPECT_TRUE(fd.IsOpen());
+ char buffer[100];
+ EXPECT_TRUE(fd.ReadLine(buffer, sizeof(buffer)));
+ EXPECT_STREQ(buffer, "Test");
+ EXPECT_TRUE(fd.Eof());
+ ASSERT_FALSE(_error->empty());
+
+ std::string msg;
+ _error->PopMessage(msg);
+ EXPECT_EQ("Clearsigned file '" + tempfile + "' contains unsigned lines.", msg);
+}
+
+TEST(OpenMaybeClearSignedFileTest,UnsignedFile)
+{
+ std::string tempfile;
+ FileFd fd;
+ createTemporaryFile("unsignedfile", fd, &tempfile, "Test");
+
+ EXPECT_TRUE(OpenMaybeClearSignedFile(tempfile, fd));
+ if (tempfile.empty() == false)
+ unlink(tempfile.c_str());
+ EXPECT_TRUE(fd.IsOpen());
+ char buffer[100];
+ EXPECT_TRUE(fd.ReadLine(buffer, sizeof(buffer)));
+ EXPECT_STREQ(buffer, "Test");
+ EXPECT_TRUE(fd.Eof());
+}
+
+TEST(OpenMaybeClearSignedFileTest,GarbageTop)
+{
+ std::string tempfile;
+ FileFd fd;
+ createTemporaryFile("garbagetop", fd, &tempfile, "Garbage\n"
+"-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----\n");
+
+ EXPECT_TRUE(_error->empty());
+ EXPECT_TRUE(OpenMaybeClearSignedFile(tempfile, fd));
+ if (tempfile.empty() == false)
+ unlink(tempfile.c_str());
+ EXPECT_TRUE(fd.IsOpen());
+ char buffer[100];
+ EXPECT_TRUE(fd.ReadLine(buffer, sizeof(buffer)));
+ EXPECT_STREQ(buffer, "Test");
+ EXPECT_TRUE(fd.Eof());
+ ASSERT_FALSE(_error->empty());
+ ASSERT_FALSE(_error->PendingError());
+
+ std::string msg;
+ _error->PopMessage(msg);
+ EXPECT_EQ("Clearsigned file '" + tempfile + "' does not start with a signed message block.", msg);
+}
+
+TEST(OpenMaybeClearSignedFileTest,GarbageBottom)
+{
+ std::string tempfile;
+ FileFd fd;
+ createTemporaryFile("garbagebottom", fd, &tempfile, "-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----\n"
+"Garbage");
+
+ EXPECT_TRUE(_error->empty());
+ EXPECT_TRUE(OpenMaybeClearSignedFile(tempfile, fd));
+ if (tempfile.empty() == false)
+ unlink(tempfile.c_str());
+ EXPECT_TRUE(fd.IsOpen());
+ char buffer[100];
+ EXPECT_TRUE(fd.ReadLine(buffer, sizeof(buffer)));
+ EXPECT_STREQ(buffer, "Test");
+ EXPECT_TRUE(fd.Eof());
+ ASSERT_FALSE(_error->empty());
+ ASSERT_FALSE(_error->PendingError());
+
+ std::string msg;
+ _error->PopMessage(msg);
+ EXPECT_EQ("Clearsigned file '" + tempfile + "' contains unsigned lines.", msg);
+}
+
+TEST(OpenMaybeClearSignedFileTest,BogusNoSig)
+{
+ std::string tempfile;
+ FileFd fd;
+ createTemporaryFile("bogusnosig", fd, &tempfile, "-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"Test");
+
+ EXPECT_TRUE(_error->empty());
+ EXPECT_FALSE(OpenMaybeClearSignedFile(tempfile, fd));
+ if (tempfile.empty() == false)
+ unlink(tempfile.c_str());
+ EXPECT_FALSE(_error->empty());
+ EXPECT_FALSE(fd.IsOpen());
+
+ std::string msg;
+ _error->PopMessage(msg);
+ EXPECT_EQ("Splitting of file " + tempfile + " failed as it doesn't contain all expected parts 0 1 0", msg);
+}
+
+TEST(OpenMaybeClearSignedFileTest,BogusSigStart)
+{
+ std::string tempfile;
+ FileFd fd;
+ createTemporaryFile("bogusnosig", fd, &tempfile, "-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----");
+
+ EXPECT_TRUE(_error->empty());
+ EXPECT_FALSE(OpenMaybeClearSignedFile(tempfile, fd));
+ if (tempfile.empty() == false)
+ unlink(tempfile.c_str());
+ EXPECT_FALSE(_error->empty());
+ EXPECT_FALSE(fd.IsOpen());
+
+ std::string msg;
+ _error->PopMessage(msg);
+ EXPECT_EQ("Signature in file " + tempfile + " wasn't closed", msg);
+}
diff --git a/test/libapt/parsedepends_test.cc b/test/libapt/parsedepends_test.cc
new file mode 100644
index 000000000..c2781b5d6
--- /dev/null
+++ b/test/libapt/parsedepends_test.cc
@@ -0,0 +1,280 @@
+#include <config.h>
+
+#include <apt-pkg/deblistparser.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/pkgcache.h>
+
+#include <string.h>
+#include <string>
+
+#include <gtest/gtest.h>
+
+static void parseDependency(bool const StripMultiArch, bool const ParseArchFlags, bool const ParseRestrictionsList, std::string Arch)
+{
+ std::string Package;
+ std::string Version;
+ unsigned int Op = 5;
+ unsigned int Null = 0;
+ // The tests are made for amd64. Specify a different arch here to check if
+ // they still work.
+ _config->Set("APT::Architecture",Arch);
+ _config->Set("APT::Build-Profiles","stage1");
+
+ const char* Depends =
+ "debhelper:any (>= 5.0), "
+ "libdb-dev:any, "
+ "gettext:native (<= 0.12), "
+ "libcurl4-gnutls-dev:native | libcurl3-gnutls-dev (>> 7.15.5), "
+ "docbook-xml, "
+ "apt (>= 0.7.25), "
+ "not-for-me [ !amd64 ], "
+ "only-for-me [ amd64 ], "
+ "any-for-me [ any ], "
+ "not-for-darwin [ !darwin-any ], "
+ "cpu-for-me [ any-amd64 ], "
+ "os-for-me [ linux-any ], "
+ "libc-for-me [ gnu-linux-any ], "
+ "libc-not-for-me [ musl-linux-any ], "
+ "cpu-not-for-me [ any-armel ], "
+ "os-not-for-me [ kfreebsd-any ], "
+ "not-in-stage1 <!stage1>, "
+ "not-stage1-and-not-nodoc <!nodoc !stage1>, "
+ "not-stage1-or-not-nodoc <!nodoc> <!stage1>, "
+ "unknown-profile <unknown stage1>, "
+ "overlord-dev:any (= 7.15.3~) | overlord-dev:native (>> 7.15.5), "
+ ;
+
+ // Stripping MultiArch is currently the default setting to not confuse
+ // non-MultiArch capable users of the library with "strange" extensions.
+ const char* Start = Depends;
+ const char* End = Depends + strlen(Depends);
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ if (StripMultiArch == true)
+ EXPECT_EQ("debhelper", Package);
+ else
+ EXPECT_EQ("debhelper:any", Package);
+ EXPECT_EQ("5.0", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::GreaterEq, Op);
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ if (StripMultiArch == true)
+ EXPECT_EQ("libdb-dev", Package);
+ else
+ EXPECT_EQ("libdb-dev:any", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::NoOp, Op);
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ if (StripMultiArch == true)
+ EXPECT_EQ("gettext", Package);
+ else
+ EXPECT_EQ("gettext:native", Package);
+ EXPECT_EQ("0.12", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::LessEq, Op);
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ if (StripMultiArch == true)
+ EXPECT_EQ("libcurl4-gnutls-dev", Package);
+ else
+ EXPECT_EQ("libcurl4-gnutls-dev:native", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::Or, Op);
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("libcurl3-gnutls-dev", Package);
+ EXPECT_EQ("7.15.5", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::Greater, Op);
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("docbook-xml", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::NoOp, Op);
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("apt", Package);
+ EXPECT_EQ("0.7.25", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::GreaterEq, Op);
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("", Package); // not-for-me
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("only-for-me", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::NoOp, Op);
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("any-for-me", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::NoOp, Op);
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("not-for-darwin", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::NoOp, Op);
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("cpu-for-me", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::NoOp, Op);
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("os-for-me", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::NoOp, Op);
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("libc-for-me", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::NoOp, Op);
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("", Package); // libc-not-for-me
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("", Package); // cpu-not-for-me
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("", Package); // os-not-for-me
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseRestrictionsList == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("", Package); // not-in-stage1
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseRestrictionsList == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("", Package); // not-stage1-and-not-nodoc
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseRestrictionsList == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("not-stage1-or-not-nodoc", Package);
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseRestrictionsList == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("", Package); // unknown-profile
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ if (StripMultiArch == true)
+ EXPECT_EQ("overlord-dev", Package);
+ else
+ EXPECT_EQ("overlord-dev:any", Package);
+ EXPECT_EQ("7.15.3~", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::Equals | pkgCache::Dep::Or, Op);
+
+ debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ if (StripMultiArch == true)
+ EXPECT_EQ("overlord-dev", Package);
+ else
+ EXPECT_EQ("overlord-dev:native", Package);
+ EXPECT_EQ("7.15.5", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::Greater, Op);
+}
+
+// FIXME: This testcase is too big/complex
+TEST(ParseDependsTest, Everything)
+{
+ bool StripMultiArch = true;
+ bool ParseArchFlags = false;
+ bool ParseRestrictionsList = false;
+ unsigned short runner = 0;
+
+test:
+ {
+ SCOPED_TRACE(std::string("StripMultiArch: ") + (StripMultiArch ? "true" : "false"));
+ SCOPED_TRACE(std::string("ParseArchFlags: ") + (ParseArchFlags ? "true" : "false"));
+ SCOPED_TRACE(std::string("ParseRestrictionsList: ") + (ParseRestrictionsList ? "true" : "false"));
+ parseDependency(StripMultiArch, ParseArchFlags, ParseRestrictionsList, "kfreebsd-i386");
+ parseDependency(StripMultiArch, ParseArchFlags, ParseRestrictionsList, "amd64");
+ }
+ if (StripMultiArch == false) {
+ if (ParseArchFlags == false)
+ ParseRestrictionsList = !ParseRestrictionsList;
+ ParseArchFlags = !ParseArchFlags;
+ }
+ StripMultiArch = !StripMultiArch;
+
+ runner++;
+ if (runner < 8)
+ goto test; // this is the prove: tests are really evil ;)
+}
diff --git a/test/libapt/priority_test.cc b/test/libapt/priority_test.cc
new file mode 100644
index 000000000..ef1941ce5
--- /dev/null
+++ b/test/libapt/priority_test.cc
@@ -0,0 +1,16 @@
+#include <config.h>
+#include <apt-pkg/pkgcache.h>
+#include <string>
+#include <gtest/gtest.h>
+
+using std::string;
+
+// Tests for Bug#807523
+TEST(PriorityTest, PriorityPrinting)
+{
+ EXPECT_EQ("required", string(pkgCache::Priority(pkgCache::State::Required)));
+ EXPECT_EQ("important", string(pkgCache::Priority(pkgCache::State::Important)));
+ EXPECT_EQ("standard", string(pkgCache::Priority(pkgCache::State::Standard)));
+ EXPECT_EQ("optional", string(pkgCache::Priority(pkgCache::State::Optional)));
+ EXPECT_EQ("extra", string(pkgCache::Priority(pkgCache::State::Extra)));
+}
diff --git a/test/libapt/sourcelist_test.cc b/test/libapt/sourcelist_test.cc
new file mode 100644
index 000000000..83c441092
--- /dev/null
+++ b/test/libapt/sourcelist_test.cc
@@ -0,0 +1,39 @@
+#include <config.h>
+
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/fileutl.h>
+
+#include <string>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+TEST(SourceListTest,ParseFileDeb822)
+{
+ FileFd fd;
+ std::string tempfile;
+ createTemporaryFile("parsefiledeb822.XXXXXX.sources", fd, &tempfile,
+ "Types: deb\n"
+ "URIs: http://ftp.debian.org/debian\n"
+ "Suites: stable\n"
+ "Components: main\n"
+ "Description: short\n"
+ " long description that can be very long\n"
+ "\n"
+ "Types: deb\n"
+ "URIs: http://ftp.debian.org/debian\n"
+ "Suites: unstable\n"
+ "Components: main non-free\n");
+ fd.Close();
+
+ pkgSourceList sources;
+ EXPECT_EQ(true, sources.Read(tempfile));
+ EXPECT_EQ(2, sources.size());
+
+ if (tempfile.empty() == false)
+ unlink(tempfile.c_str());
+}
diff --git a/test/libapt/srvrecs_test.cc b/test/libapt/srvrecs_test.cc
new file mode 100644
index 000000000..5253b1c34
--- /dev/null
+++ b/test/libapt/srvrecs_test.cc
@@ -0,0 +1,83 @@
+#include <config.h>
+
+#include <apt-pkg/srvrec.h>
+#include <apt-pkg/strutl.h>
+
+#include <algorithm>
+#include <iostream>
+#include <string>
+
+#include <gtest/gtest.h>
+
+TEST(SrvRecTest, PopFromSrvRecs)
+{
+ std::vector<SrvRec> Meep;
+ Meep.emplace_back("foo", 20, 0, 80);
+ Meep.emplace_back("bar", 20, 0, 80);
+ Meep.emplace_back("baz", 30, 0, 80);
+
+ EXPECT_EQ(Meep.size(), 3);
+ SrvRec const result = PopFromSrvRecs(Meep);
+ // ensure that pop removed one element
+ EXPECT_EQ(Meep.size(), 2);
+ EXPECT_NE(result.target, "baz");
+
+ SrvRec const result2 = PopFromSrvRecs(Meep);
+ EXPECT_NE(result.target, result2.target);
+ EXPECT_NE(result2.target, "baz");
+ EXPECT_EQ(Meep.size(), 1);
+
+ SrvRec const result3 = PopFromSrvRecs(Meep);
+ EXPECT_EQ(result3.target, "baz");
+ EXPECT_TRUE(Meep.empty());
+}
+
+TEST(SrvRecTest,Randomness)
+{
+ constexpr unsigned int testLength = 100;
+ std::vector<SrvRec> base1;
+ std::vector<SrvRec> base2;
+ std::vector<SrvRec> base3;
+ for (unsigned int i = 0; i < testLength; ++i)
+ {
+ std::string name;
+ strprintf(name, "foo%d", i);
+ base1.emplace_back(name, 20, 0, 80);
+ base2.emplace_back(name, 20, 0, 80);
+ base3.emplace_back(name, 30, 0, 80);
+ }
+ EXPECT_EQ(testLength, base1.size());
+ EXPECT_EQ(testLength, base2.size());
+ EXPECT_EQ(testLength, base3.size());
+ std::move(base3.begin(), base3.end(), std::back_inserter(base2));
+ EXPECT_EQ(testLength*2, base2.size());
+
+ std::vector<SrvRec> first_pull;
+ auto const startingClock = clock();
+ for (unsigned int i = 0; i < testLength; ++i)
+ first_pull.push_back(PopFromSrvRecs(base1));
+ EXPECT_TRUE(base1.empty());
+ EXPECT_FALSE(first_pull.empty());
+ EXPECT_EQ(testLength, first_pull.size());
+
+ // busy-wait for a cpu-clock change as we use it as "random" value
+ if (startingClock != -1)
+ for (int i = 0; i < 100000; ++i)
+ if (startingClock != clock())
+ break;
+
+ std::vector<SrvRec> second_pull;
+ for (unsigned int i = 0; i < testLength; ++i)
+ second_pull.push_back(PopFromSrvRecs(base2));
+ EXPECT_FALSE(base2.empty());
+ EXPECT_FALSE(second_pull.empty());
+ EXPECT_EQ(testLength, second_pull.size());
+
+ EXPECT_EQ(first_pull.size(), second_pull.size());
+ EXPECT_TRUE(std::all_of(first_pull.begin(), first_pull.end(), [](SrvRec const &R) { return R.priority == 20; }));
+ EXPECT_TRUE(std::all_of(second_pull.begin(), second_pull.end(), [](SrvRec const &R) { return R.priority == 20; }));
+ if (startingClock != -1 && startingClock != clock())
+ EXPECT_FALSE(std::equal(first_pull.begin(), first_pull.end(), second_pull.begin()));
+
+ EXPECT_TRUE(std::all_of(base2.begin(), base2.end(), [](SrvRec const &R) { return R.priority == 30; }));
+}
diff --git a/test/libapt/stringview_test.cc b/test/libapt/stringview_test.cc
new file mode 100644
index 000000000..f215287d9
--- /dev/null
+++ b/test/libapt/stringview_test.cc
@@ -0,0 +1,90 @@
+#if !(defined APT_PKG_EXPOSE_STRING_VIEW)
+ #define APT_PKG_EXPOSE_STRING_VIEW
+#endif
+
+#include <config.h>
+#include <apt-pkg/string_view.h>
+#include <string>
+
+#include <type_traits>
+
+#include <gtest/gtest.h>
+
+TEST(StringViewTest,EmptyString)
+{
+ constexpr APT::StringView defString;
+ static_assert( 0 == defString.length(), "def right size");
+
+ APT::StringView strString{std::string{}};
+ EXPECT_EQ(0, strString.length());
+
+ constexpr char const * const charp = "";
+ constexpr APT::StringView charpString{charp, 0};
+ static_assert( 0 == charpString.length(), "charp right size");
+
+ APT::StringView charp2String{charp};
+ EXPECT_EQ(0, strString.length());
+
+ const APT::StringView charaString{""};
+ EXPECT_EQ(0, charaString.length());
+
+ EXPECT_TRUE(APT::StringView("") == "");
+ EXPECT_FALSE(APT::StringView("") != "");
+}
+
+TEST(StringViewTest,FooString)
+{
+ constexpr APT::StringView defString("fooGARBAGE", 3);
+ static_assert( 3 == defString.length(), "def right size");
+ EXPECT_EQ(0, defString.to_string().compare(0, defString.length(), defString.data(), 3));
+
+ APT::StringView strString{std::string{"foo"}};
+ EXPECT_EQ(3, strString.length());
+ EXPECT_EQ(0, strString.to_string().compare(0, strString.length(), strString.data(), 3));
+
+ constexpr char const * const charp = "fooGARBAGE";
+ constexpr APT::StringView charpString{charp, 3};
+ EXPECT_EQ(3, charpString.length());
+ EXPECT_EQ(0, charpString.to_string().compare(0, charpString.length(), charpString.data(), 3));
+
+ char * charp2 = strdup("foo");
+ APT::StringView charp2String{charp2};
+ EXPECT_EQ(3, charp2String.length());
+ EXPECT_EQ(0, charp2String.to_string().compare(0, charp2String.length(), charp2String.data(), 3));
+ free(charp2);
+
+ const APT::StringView charaString{"foo"};
+ EXPECT_EQ(3, charaString.length());
+ EXPECT_EQ(0, charaString.to_string().compare(0, charaString.length(), charaString.data(), 3));
+
+ EXPECT_TRUE(APT::StringView("foo") == "foo");
+ EXPECT_FALSE(APT::StringView("foo") != "foo");
+}
+
+TEST(StringViewTest,SubStr)
+{
+ const APT::StringView defString("Hello World!");
+ EXPECT_EQ(defString.to_string().substr(6), defString.substr(6).to_string());
+ EXPECT_EQ(defString.to_string().substr(0,5), defString.substr(0,5).to_string());
+ EXPECT_EQ(defString.to_string().substr(6,5), defString.substr(6,5).to_string());
+}
+
+TEST(StringViewTest,Find)
+{
+ const APT::StringView defString("Hello World!");
+ EXPECT_EQ(defString.to_string().find('l'), defString.find('l'));
+ EXPECT_EQ(defString.to_string().find('X'), defString.find('X'));
+ EXPECT_EQ(defString.to_string().find('e',3), defString.find('e',3));
+ EXPECT_EQ(defString.to_string().find('l',6), defString.find('l',6));
+ EXPECT_EQ(defString.to_string().find('l',11), defString.find('l',11));
+}
+
+TEST(StringViewTest,RFind)
+{
+ const APT::StringView defString("Hello World!");
+ EXPECT_EQ(defString.to_string().rfind('l'), defString.rfind('l'));
+ EXPECT_EQ(defString.to_string().rfind('X'), defString.rfind('X'));
+ EXPECT_EQ(defString.to_string().rfind('e',3), defString.rfind('e',3));
+ EXPECT_EQ(defString.to_string().rfind('l',6), defString.rfind('l',6));
+ EXPECT_EQ(defString.to_string().rfind('l',11), defString.rfind('l',11));
+}
diff --git a/test/libapt/strutil_test.cc b/test/libapt/strutil_test.cc
new file mode 100644
index 000000000..d7700bd54
--- /dev/null
+++ b/test/libapt/strutil_test.cc
@@ -0,0 +1,321 @@
+#include <config.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/fileutl.h>
+#include <string>
+#include <vector>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+TEST(StrUtilTest,DeEscapeString)
+{
+ // nothing special
+ EXPECT_EQ("", DeEscapeString(""));
+ EXPECT_EQ("foobar", DeEscapeString("foobar"));
+ // hex and octal
+ EXPECT_EQ("foo bar\nbaz", DeEscapeString("foo\\040bar\\x0abaz"));
+ EXPECT_EQ("foo ", DeEscapeString("foo\\040"));
+ EXPECT_EQ("\nbaz", DeEscapeString("\\x0abaz"));
+ EXPECT_EQ("/media/Ubuntu 11.04 amd64", DeEscapeString("/media/Ubuntu\\04011.04\\040amd64"));
+ // double slashes
+ EXPECT_EQ("foo\\ x", DeEscapeString("foo\\\\ x"));
+ EXPECT_EQ("\\foo\\", DeEscapeString("\\\\foo\\\\"));
+}
+TEST(StrUtilTest,StringStrip)
+{
+ EXPECT_EQ("", APT::String::Strip(""));
+ EXPECT_EQ("foobar", APT::String::Strip("foobar"));
+ EXPECT_EQ("foo bar", APT::String::Strip("foo bar"));
+
+ EXPECT_EQ("", APT::String::Strip(" "));
+ EXPECT_EQ("", APT::String::Strip(" \r\n \t "));
+
+ EXPECT_EQ("foo bar", APT::String::Strip("foo bar "));
+ EXPECT_EQ("foo bar", APT::String::Strip("foo bar \r\n \t "));
+ EXPECT_EQ("foo bar", APT::String::Strip("\r\n \t foo bar"));
+ EXPECT_EQ("bar foo", APT::String::Strip("\r\n \t bar foo \r\n \t "));
+ EXPECT_EQ("bar \t\r\n foo", APT::String::Strip("\r\n \t bar \t\r\n foo \r\n \t "));
+}
+TEST(StrUtilTest,StringSplitBasic)
+{
+ std::vector<std::string> result = StringSplit("", "");
+ EXPECT_EQ(result.size(), 0);
+
+ result = StringSplit("abc", "");
+ EXPECT_EQ(result.size(), 0);
+
+ result = StringSplit("", "abc");
+ EXPECT_EQ(result.size(), 1);
+
+ result = StringSplit("abc", "b");
+ ASSERT_EQ(result.size(), 2);
+ EXPECT_EQ(result[0], "a");
+ EXPECT_EQ(result[1], "c");
+
+ result = StringSplit("abc", "abc");
+ ASSERT_EQ(result.size(), 2);
+ EXPECT_EQ(result[0], "");
+ EXPECT_EQ(result[1], "");
+}
+TEST(StrUtilTest,StringSplitDpkgStatus)
+{
+ std::string const input = "status: libnet1:amd64: unpacked";
+ std::vector<std::string> result = StringSplit(input, "xxx");
+ ASSERT_EQ(result.size(), 1);
+ EXPECT_EQ(result[0], input);
+
+ result = StringSplit(input, "");
+ EXPECT_EQ(result.size(), 0);
+
+ result = StringSplit(input, ": ");
+ ASSERT_EQ(result.size(), 3);
+ EXPECT_EQ(result[0], "status");
+ EXPECT_EQ(result[1], "libnet1:amd64");
+ EXPECT_EQ(result[2], "unpacked");
+
+ result = StringSplit("x:y:z", ":", 2);
+ ASSERT_EQ(result.size(), 2);
+ EXPECT_EQ(result[0], "x");
+ EXPECT_EQ(result[1], "y:z");
+}
+TEST(StrUtilTest,EndsWith)
+{
+ using APT::String::Endswith;
+ EXPECT_TRUE(Endswith("abcd", "d"));
+ EXPECT_TRUE(Endswith("abcd", "cd"));
+ EXPECT_TRUE(Endswith("abcd", "abcd"));
+ EXPECT_FALSE(Endswith("abcd", "x"));
+ EXPECT_FALSE(Endswith("abcd", "abcndefg"));
+}
+TEST(StrUtilTest,StartsWith)
+{
+ using APT::String::Startswith;
+ EXPECT_TRUE(Startswith("abcd", "a"));
+ EXPECT_TRUE(Startswith("abcd", "ab"));
+ EXPECT_TRUE(Startswith("abcd", "abcd"));
+ EXPECT_FALSE(Startswith("abcd", "x"));
+ EXPECT_FALSE(Startswith("abcd", "abcndefg"));
+}
+TEST(StrUtilTest,TimeToStr)
+{
+ EXPECT_EQ("0s", TimeToStr(0));
+ EXPECT_EQ("42s", TimeToStr(42));
+ EXPECT_EQ("9min 21s", TimeToStr((9*60) + 21));
+ EXPECT_EQ("20min 42s", TimeToStr((20*60) + 42));
+ EXPECT_EQ("10h 42min 21s", TimeToStr((10*3600) + (42*60) + 21));
+ EXPECT_EQ("10h 42min 21s", TimeToStr((10*3600) + (42*60) + 21));
+ EXPECT_EQ("1988d 3h 29min 7s", TimeToStr((1988*86400) + (3*3600) + (29*60) + 7));
+
+ EXPECT_EQ("59s", TimeToStr(59));
+ EXPECT_EQ("60s", TimeToStr(60));
+ EXPECT_EQ("1min 1s", TimeToStr(61));
+ EXPECT_EQ("59min 59s", TimeToStr(3599));
+ EXPECT_EQ("60min 0s", TimeToStr(3600));
+ EXPECT_EQ("1h 0min 1s", TimeToStr(3601));
+ EXPECT_EQ("1h 1min 0s", TimeToStr(3660));
+ EXPECT_EQ("23h 59min 59s", TimeToStr(86399));
+ EXPECT_EQ("24h 0min 0s", TimeToStr(86400));
+ EXPECT_EQ("1d 0h 0min 1s", TimeToStr(86401));
+ EXPECT_EQ("1d 0h 1min 0s", TimeToStr(86460));
+}
+TEST(StrUtilTest,SubstVar)
+{
+ EXPECT_EQ("", SubstVar("", "fails", "passes"));
+ EXPECT_EQ("test ", SubstVar("test fails", "fails", ""));
+ EXPECT_EQ("test passes", SubstVar("test passes", "", "fails"));
+
+ EXPECT_EQ("test passes", SubstVar("test passes", "fails", "passes"));
+ EXPECT_EQ("test passes", SubstVar("test fails", "fails", "passes"));
+
+ EXPECT_EQ("starts with", SubstVar("beginnt with", "beginnt", "starts"));
+ EXPECT_EQ("beginnt with", SubstVar("starts with", "starts", "beginnt"));
+ EXPECT_EQ("is in middle", SubstVar("is in der middle", "in der", "in"));
+ EXPECT_EQ("is in der middle", SubstVar("is in middle", "in", "in der"));
+ EXPECT_EQ("does end", SubstVar("does enden", "enden", "end"));
+ EXPECT_EQ("does enden", SubstVar("does end", "end", "enden"));
+
+ EXPECT_EQ("abc", SubstVar("abc", "d", "a"));
+ EXPECT_EQ("abc", SubstVar("abd", "d", "c"));
+ EXPECT_EQ("abc", SubstVar("adc", "d", "b"));
+ EXPECT_EQ("abc", SubstVar("dbc", "d", "a"));
+
+ EXPECT_EQ("b", SubstVar("b", "aa", "a"));
+ EXPECT_EQ("bb", SubstVar("bb", "aa", "a"));
+ EXPECT_EQ("bbb", SubstVar("bbb", "aa", "a"));
+
+ EXPECT_EQ("aa", SubstVar("aaaa", "aa", "a"));
+ EXPECT_EQ("aaaa", SubstVar("aa", "a", "aa"));
+ EXPECT_EQ("aaaa", SubstVar("aaaa", "a", "a"));
+ EXPECT_EQ("a a a a ", SubstVar("aaaa", "a", "a "));
+
+ EXPECT_EQ(" bb bb bb bb ", SubstVar(" a a a a ", "a", "bb"));
+ EXPECT_EQ(" bb bb bb bb ", SubstVar(" aaa aaa aaa aaa ", "aaa", "bb"));
+ EXPECT_EQ(" bb a bb a bb a bb ", SubstVar(" aaa a aaa a aaa a aaa ", "aaa", "bb"));
+
+}
+TEST(StrUtilTest,Base64Encode)
+{
+ EXPECT_EQ("QWxhZGRpbjpvcGVuIHNlc2FtZQ==", Base64Encode("Aladdin:open sesame"));
+ EXPECT_EQ("cGxlYXN1cmUu", Base64Encode("pleasure."));
+ EXPECT_EQ("bGVhc3VyZS4=", Base64Encode("leasure."));
+ EXPECT_EQ("ZWFzdXJlLg==", Base64Encode("easure."));
+ EXPECT_EQ("YXN1cmUu", Base64Encode("asure."));
+ EXPECT_EQ("c3VyZS4=", Base64Encode("sure."));
+ EXPECT_EQ("dXJlLg==", Base64Encode("ure."));
+ EXPECT_EQ("cmUu", Base64Encode("re."));
+ EXPECT_EQ("ZS4=", Base64Encode("e."));
+ EXPECT_EQ("Lg==", Base64Encode("."));
+ EXPECT_EQ("", Base64Encode(""));
+}
+static void ReadMessagesTestWithNewLine(char const * const nl, char const * const ab)
+{
+ SCOPED_TRACE(SubstVar(SubstVar(nl, "\n", "n"), "\r", "r") + " # " + ab);
+ FileFd fd;
+ std::string pkgA = "Package: pkgA\n"
+ "Version: 1\n"
+ "Size: 100\n"
+ "Description: aaa\n"
+ " aaa";
+ std::string pkgB = "Package: pkgB\n"
+ "Version: 1\n"
+ "Flag: no\n"
+ "Description: bbb";
+ std::string pkgC = "Package: pkgC\n"
+ "Version: 2\n"
+ "Flag: yes\n"
+ "Description:\n"
+ " ccc";
+
+ createTemporaryFile("readmessage", fd, NULL, (pkgA + nl + pkgB + nl + pkgC + nl).c_str());
+ std::vector<std::string> list;
+ EXPECT_TRUE(ReadMessages(fd.Fd(), list));
+ EXPECT_EQ(3, list.size());
+ EXPECT_EQ(pkgA, list[0]);
+ EXPECT_EQ(pkgB, list[1]);
+ EXPECT_EQ(pkgC, list[2]);
+
+ size_t const msgsize = 63990;
+ createTemporaryFile("readmessage", fd, NULL, NULL);
+ for (size_t j = 0; j < msgsize; ++j)
+ fd.Write(ab, strlen(ab));
+ for (size_t i = 0; i < 21; ++i)
+ {
+ std::string msg;
+ strprintf(msg, "msgsize=%zu i=%zu", msgsize, i);
+ SCOPED_TRACE(msg);
+ fd.Seek((msgsize + (i - 1)) * strlen(ab));
+ fd.Write(ab, strlen(ab));
+ fd.Write(nl, strlen(nl));
+ fd.Seek(0);
+ list.clear();
+ EXPECT_TRUE(ReadMessages(fd.Fd(), list));
+ EXPECT_EQ(1, list.size());
+ EXPECT_EQ((msgsize + i) * strlen(ab), list[0].length());
+ EXPECT_EQ(std::string::npos, list[0].find_first_not_of(ab));
+ }
+
+ list.clear();
+ fd.Write(pkgA.c_str(), pkgA.length());
+ fd.Write(nl, strlen(nl));
+ fd.Seek(0);
+ EXPECT_TRUE(ReadMessages(fd.Fd(), list));
+ EXPECT_EQ(2, list.size());
+ EXPECT_EQ((msgsize + 20) * strlen(ab), list[0].length());
+ EXPECT_EQ(std::string::npos, list[0].find_first_not_of(ab));
+ EXPECT_EQ(pkgA, list[1]);
+
+
+ fd.Close();
+}
+TEST(StrUtilTest,ReadMessages)
+{
+ ReadMessagesTestWithNewLine("\n\n", "a");
+ ReadMessagesTestWithNewLine("\r\n\r\n", "a");
+ ReadMessagesTestWithNewLine("\n\n", "ab");
+ ReadMessagesTestWithNewLine("\r\n\r\n", "ab");
+}
+TEST(StrUtilTest,QuoteString)
+{
+ EXPECT_EQ("", QuoteString("", ""));
+ EXPECT_EQ("K%c3%b6ln", QuoteString("Köln", ""));
+ EXPECT_EQ("Köln", DeQuoteString(QuoteString("Köln", "")));
+ EXPECT_EQ("Köln", DeQuoteString(DeQuoteString(QuoteString(QuoteString("Köln", ""), ""))));
+ EXPECT_EQ("~-_$#|u%c3%a4%c3%b6%c5%a6%e2%84%a2%e2%85%9e%c2%b1%c3%86%e1%ba%9e%c2%aa%c3%9f", QuoteString("~-_$#|uäöŦ™⅞±Æẞªß", ""));
+ EXPECT_EQ("~-_$#|uäöŦ™⅞±Æẞªß", DeQuoteString(QuoteString("~-_$#|uäöŦ™⅞±Æẞªß", "")));
+ EXPECT_EQ("%45ltvill%65%2d%45rbach", QuoteString("Eltville-Erbach", "E-Ae"));
+ EXPECT_EQ("Eltville-Erbach", DeQuoteString(QuoteString("Eltville-Erbach", "")));
+}
+
+TEST(StrUtilTest,RFC1123StrToTime)
+{
+ {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun, 06 Nov 1994 08:49:37 GMT", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun, 6 Nov 1994 08:49:37 UTC", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun, 6 Nov 1994 08:49:37 UTC", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun, 06 Nov 1994 8:49:37 UTC", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun, 06 Nov 1994 08:49:37 UTC", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun, 06 Nov 1994 08:49:37 -0000", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun, 06 Nov 1994 08:49:37 +0000", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sunday, 06-Nov-94 08:49:37 GMT", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sunday, 6-Nov-94 08:49:37 GMT", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sunday, 06-Nov-94 8:49:37 GMT", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun Nov 6 08:49:37 1994", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun Nov 06 08:49:37 1994", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun Nov 6 8:49:37 1994", t));
+ EXPECT_EQ(784111777, t);
+ }
+ time_t t;
+ EXPECT_FALSE(RFC1123StrToTime("So, 06 Nov 1994 08:49:37 UTC", t));
+ EXPECT_FALSE(RFC1123StrToTime(", 06 Nov 1994 08:49:37 UTC", t));
+ EXPECT_FALSE(RFC1123StrToTime("Son, 06 Nov 1994 08:49:37 UTC", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sun: 06 Nov 1994 08:49:37 UTC", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sun, 06 Nov 1994 08:49:37", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sun, 06 Nov 1994 08:49:37 GMT+1", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sun, 06 Nov 1994 GMT", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sunday, 06 Nov 1994 GMT", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sonntag, 06 Nov 1994 08:49:37 GMT", t));
+ EXPECT_FALSE(RFC1123StrToTime("domingo Nov 6 08:49:37 1994", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sunday: 06-Nov-94 08:49:37 GMT", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sunday, 06-Nov-94 08:49:37 GMT+1", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sunday, 06-Nov-94 08:49:37 EDT", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sunday, 06-Nov-94 08:49:37 -0100", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sunday, 06-Nov-94 08:49:37 -0.1", t));
+}
diff --git a/test/libapt/tagfile_test.cc b/test/libapt/tagfile_test.cc
new file mode 100644
index 000000000..24fbd389e
--- /dev/null
+++ b/test/libapt/tagfile_test.cc
@@ -0,0 +1,285 @@
+#include <config.h>
+
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/tagfile.h>
+
+#include <string>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sstream>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+TEST(TagFileTest,SingleField)
+{
+ FileFd fd;
+ createTemporaryFile("singlefield", fd, NULL, "FieldA-12345678: the value of the field");
+
+ pkgTagFile tfile(&fd);
+ pkgTagSection section;
+ ASSERT_TRUE(tfile.Step(section));
+
+ // It has one field
+ EXPECT_EQ(1, section.Count());
+ // ... and it is called FieldA-12345678
+ EXPECT_TRUE(section.Exists("FieldA-12345678"));
+ // its value is correct
+ EXPECT_EQ("the value of the field", section.FindS("FieldA-12345678"));
+ // A non-existent field has an empty string as value
+ EXPECT_EQ("", section.FindS("FieldB-12345678"));
+ // ... and Exists does not lie about missing fields...
+ EXPECT_FALSE(section.Exists("FieldB-12345678"));
+ // There is only one section in this tag file
+ EXPECT_FALSE(tfile.Step(section));
+
+ // Now we scan an empty section to test reset
+ ASSERT_TRUE(section.Scan("\n\n", 2, true));
+ EXPECT_EQ(0, section.Count());
+ EXPECT_FALSE(section.Exists("FieldA-12345678"));
+ EXPECT_FALSE(section.Exists("FieldB-12345678"));
+
+ createTemporaryFile("emptyfile", fd, NULL, NULL);
+ ASSERT_FALSE(tfile.Step(section));
+ EXPECT_EQ(0, section.Count());
+}
+
+TEST(TagFileTest,MultipleSections)
+{
+ FileFd fd;
+ createTemporaryFile("bigsection", fd, NULL, "Package: pkgA\n"
+ "Version: 1\n"
+ "Size: 100\n"
+ "Description: aaa\n"
+ " aaa\n"
+ "\n"
+ "Package: pkgB\n"
+ "Version: 1\n"
+ "Flag: no\n"
+ "Description: bbb\n"
+ "\n"
+ "Package: pkgC\n"
+ "Version: 2\n"
+ "Flag: yes\n"
+ "Description:\n"
+ " ccc\n"
+ );
+
+ pkgTagFile tfile(&fd);
+ pkgTagSection section;
+ EXPECT_FALSE(section.Exists("Version"));
+
+ EXPECT_TRUE(tfile.Step(section));
+ EXPECT_EQ(4, section.Count());
+ EXPECT_TRUE(section.Exists("Version"));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_TRUE(section.Exists("Size"));
+ EXPECT_FALSE(section.Exists("Flag"));
+ EXPECT_TRUE(section.Exists("Description"));
+ EXPECT_EQ("pkgA", section.FindS("Package"));
+ EXPECT_EQ("1", section.FindS("Version"));
+ EXPECT_EQ(1, section.FindULL("Version"));
+ EXPECT_EQ(100, section.FindULL("Size"));
+ unsigned long Flags = 1;
+ EXPECT_TRUE(section.FindFlag("Flag", Flags, 1));
+ EXPECT_EQ(1, Flags);
+ Flags = 0;
+ EXPECT_TRUE(section.FindFlag("Flag", Flags, 1));
+ EXPECT_EQ(0, Flags);
+ EXPECT_EQ("aaa\n aaa", section.FindS("Description"));
+
+
+ EXPECT_TRUE(tfile.Step(section));
+ EXPECT_EQ(4, section.Count());
+ EXPECT_TRUE(section.Exists("Version"));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_FALSE(section.Exists("Size"));
+ EXPECT_TRUE(section.Exists("Flag"));
+ EXPECT_TRUE(section.Exists("Description"));
+ EXPECT_EQ("pkgB", section.FindS("Package"));
+ EXPECT_EQ("1", section.FindS("Version"));
+ EXPECT_EQ(1, section.FindULL("Version"));
+ EXPECT_EQ(0, section.FindULL("Size"));
+ Flags = 1;
+ EXPECT_TRUE(section.FindFlag("Flag", Flags, 1));
+ EXPECT_EQ(0, Flags);
+ Flags = 0;
+ EXPECT_TRUE(section.FindFlag("Flag", Flags, 1));
+ EXPECT_EQ(0, Flags);
+ EXPECT_EQ("bbb", section.FindS("Description"));
+
+ EXPECT_TRUE(tfile.Step(section));
+ EXPECT_EQ(4, section.Count());
+ EXPECT_TRUE(section.Exists("Version"));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_FALSE(section.Exists("Size"));
+ EXPECT_TRUE(section.Exists("Flag"));
+ EXPECT_TRUE(section.Exists("Description"));
+ EXPECT_EQ("pkgC", section.FindS("Package"));
+ EXPECT_EQ("2", section.FindS("Version"));
+ EXPECT_EQ(2, section.FindULL("Version"));
+ Flags = 0;
+ EXPECT_TRUE(section.FindFlag("Flag", Flags, 1));
+ EXPECT_EQ(1, Flags);
+ Flags = 1;
+ EXPECT_TRUE(section.FindFlag("Flag", Flags, 1));
+ EXPECT_EQ(1, Flags);
+ EXPECT_EQ("ccc", section.FindS("Description"));
+
+ // There is no section left in this tag file
+ EXPECT_FALSE(tfile.Step(section));
+}
+
+TEST(TagFileTest,BigSection)
+{
+ size_t const count = 500;
+ std::stringstream content;
+ for (size_t i = 0; i < count; ++i)
+ content << "Field-" << i << ": " << (2000 + i) << std::endl;
+
+ FileFd fd;
+ createTemporaryFile("bigsection", fd, NULL, content.str().c_str());
+
+ pkgTagFile tfile(&fd);
+ pkgTagSection section;
+ EXPECT_TRUE(tfile.Step(section));
+
+ EXPECT_EQ(count, section.Count());
+ for (size_t i = 0; i < count; ++i)
+ {
+ std::stringstream name;
+ name << "Field-" << i;
+ EXPECT_TRUE(section.Exists(name.str().c_str())) << name.str() << " does not exist";
+ EXPECT_EQ((2000 + i), section.FindULL(name.str().c_str()));
+ }
+
+ // There is only one section in this tag file
+ EXPECT_FALSE(tfile.Step(section));
+}
+
+TEST(TagFileTest, PickedUpFromPreviousCall)
+{
+ size_t const count = 500;
+ std::stringstream contentstream;
+ for (size_t i = 0; i < count; ++i)
+ contentstream << "Field-" << i << ": " << (2000 + i) << std::endl;
+ contentstream << std::endl << std::endl;
+ std::string content = contentstream.str();
+
+ pkgTagSection section;
+ EXPECT_FALSE(section.Scan(content.c_str(), content.size()/2));
+ EXPECT_NE(0, section.Count());
+ EXPECT_NE(count, section.Count());
+ EXPECT_TRUE(section.Scan(content.c_str(), content.size(), false));
+ EXPECT_EQ(count, section.Count());
+
+ for (size_t i = 0; i < count; ++i)
+ {
+ std::stringstream name;
+ name << "Field-" << i;
+ EXPECT_TRUE(section.Exists(name.str().c_str())) << name.str() << " does not exist";
+ EXPECT_EQ((2000 + i), section.FindULL(name.str().c_str()));
+ }
+}
+
+TEST(TagFileTest, SpacesEverywhere)
+{
+ std::string content =
+ "Package: pkgA\n"
+ "Package: pkgB\n"
+ "NoSpaces:yes\n"
+ "NoValue:\n"
+ "TagSpaces\t :yes\n"
+ "ValueSpaces: \tyes\n"
+ "BothSpaces \t:\t yes\n"
+ "TrailingSpaces: yes\t \n"
+ "Naming Space: yes\n"
+ "Naming Spaces: yes\n"
+ "Package : pkgC \n"
+ "Multi-Colon::yes:\n"
+ "\n\n";
+
+ pkgTagSection section;
+ EXPECT_TRUE(section.Scan(content.c_str(), content.size()));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_TRUE(section.Exists("NoSpaces"));
+ EXPECT_TRUE(section.Exists("NoValue"));
+ EXPECT_TRUE(section.Exists("TagSpaces"));
+ EXPECT_TRUE(section.Exists("ValueSpaces"));
+ EXPECT_TRUE(section.Exists("BothSpaces"));
+ EXPECT_TRUE(section.Exists("TrailingSpaces"));
+ EXPECT_TRUE(section.Exists("Naming Space"));
+ EXPECT_TRUE(section.Exists("Naming Spaces"));
+ EXPECT_TRUE(section.Exists("Multi-Colon"));
+ EXPECT_EQ("pkgC", section.FindS("Package"));
+ EXPECT_EQ("yes", section.FindS("NoSpaces"));
+ EXPECT_EQ("", section.FindS("NoValue"));
+ EXPECT_EQ("yes", section.FindS("TagSpaces"));
+ EXPECT_EQ("yes", section.FindS("ValueSpaces"));
+ EXPECT_EQ("yes", section.FindS("BothSpaces"));
+ EXPECT_EQ("yes", section.FindS("TrailingSpaces"));
+ EXPECT_EQ("yes", section.FindS("Naming Space"));
+ EXPECT_EQ("yes", section.FindS("Naming Spaces"));
+ EXPECT_EQ(":yes:", section.FindS("Multi-Colon"));
+ // overridden values are still present, but not really accessible
+ EXPECT_EQ(12, section.Count());
+}
+
+TEST(TagFileTest, Comments)
+{
+ FileFd fd;
+ createTemporaryFile("commentfile", fd, NULL, "# Leading comments should be ignored.\n"
+"\n"
+"Source: foo\n"
+"#Package: foo\n"
+"Section: bar\n"
+"#Section: overriden\n"
+"Priority: optional\n"
+"Build-Depends: debhelper,\n"
+"# apt-utils, (temporarily disabled)\n"
+" apt\n"
+"\n"
+"# Comments in the middle shouldn't result in extra blank paragraphs either.\n"
+"\n"
+"# Ditto.\n"
+"\n"
+"# A comment at the top of a paragraph should be ignored.\n"
+"Package: foo\n"
+"Architecture: any\n"
+"Description: An awesome package\n"
+" # This should still appear in the result.\n"
+"# this one shouldn't\n"
+" Blah, blah, blah. # but this again.\n"
+"# A comment at the end of a paragraph should be ignored.\n"
+"\n"
+"# Trailing comments shouldn't cause extra blank paragraphs."
+ );
+
+ pkgTagFile tfile(&fd, pkgTagFile::SUPPORT_COMMENTS, 1);
+ pkgTagSection section;
+ EXPECT_TRUE(tfile.Step(section));
+ EXPECT_FALSE(section.Exists("Package"));
+ EXPECT_TRUE(section.Exists("Source"));
+ EXPECT_EQ("foo", section.FindS("Source"));
+ EXPECT_TRUE(section.Exists("Section"));
+ EXPECT_EQ("bar", section.FindS("Section"));
+ EXPECT_TRUE(section.Exists("Priority"));
+ EXPECT_EQ("optional", section.FindS("Priority"));
+ EXPECT_TRUE(section.Exists("Build-Depends"));
+ EXPECT_EQ("debhelper,\n apt", section.FindS("Build-Depends"));
+
+ EXPECT_TRUE(tfile.Step(section));
+ EXPECT_FALSE(section.Exists("Source"));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_EQ("foo", section.FindS("Package"));
+ EXPECT_FALSE(section.Exists("Section"));
+ EXPECT_TRUE(section.Exists("Architecture"));
+ EXPECT_EQ("any", section.FindS("Architecture"));
+ EXPECT_FALSE(section.Exists("Build-Depends"));
+ EXPECT_TRUE(section.Exists("Description"));
+ EXPECT_EQ("An awesome package\n # This should still appear in the result.\n Blah, blah, blah. # but this again.", section.FindS("Description"));
+
+ EXPECT_FALSE(tfile.Step(section));
+}
diff --git a/test/libapt/tagsection_test.cc b/test/libapt/tagsection_test.cc
new file mode 100644
index 000000000..779932595
--- /dev/null
+++ b/test/libapt/tagsection_test.cc
@@ -0,0 +1,270 @@
+#include <config.h>
+
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/tagfile.h>
+
+#include <string>
+#include <sstream>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+std::string packageValue = "aaaa";
+std::string typoValue = "aa\n"
+ " .\n"
+ " cc";
+std::string typoRawValue = "\n " + typoValue;
+std::string overrideValue = "1";
+/*
+ std::cerr << "FILECONTENT: »";
+ char buffer[3000];
+ while (fd.ReadLine(buffer, sizeof(buffer)))
+ std::cerr << buffer;
+ std::cerr << "«" << std::endl;;
+*/
+
+static void setupTestcaseStart(FileFd &fd, pkgTagSection &section, std::string &content)
+{
+ createTemporaryFile("writesection", fd, NULL, NULL);
+ content = "Package: " + packageValue + "\n"
+ "TypoA:\n " + typoValue + "\n"
+ "Override: " + overrideValue + "\n"
+ "Override-Backup: " + overrideValue + "\n"
+ "\n";
+ EXPECT_TRUE(section.Scan(content.c_str(), content.length(), true));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_TRUE(section.Exists("TypoA"));
+ EXPECT_TRUE(section.Exists("Override"));
+ EXPECT_TRUE(section.Exists("Override-Backup"));
+ EXPECT_FALSE(section.Exists("TypoB"));
+ EXPECT_EQ(packageValue, section.FindS("Package"));
+ EXPECT_EQ(typoValue, section.FindS("TypoA"));
+ EXPECT_EQ(typoRawValue, section.FindRawS("TypoA"));
+ EXPECT_EQ(1, section.FindI("Override"));
+ EXPECT_EQ(1, section.FindI("Override-Backup"));
+ EXPECT_EQ(4, section.Count());
+}
+TEST(TagSectionTest,WriteUnmodified)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ EXPECT_TRUE(section.Write(fd));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_TRUE(section.Exists("TypoA"));
+ EXPECT_TRUE(section.Exists("Override"));
+ EXPECT_TRUE(section.Exists("Override-Backup"));
+ EXPECT_FALSE(section.Exists("TypoB"));
+ EXPECT_EQ(packageValue, section.FindS("Package"));
+ EXPECT_EQ(typoValue, section.FindS("TypoA"));
+ EXPECT_EQ(1, section.FindI("Override"));
+ EXPECT_EQ(1, section.FindI("Override-Backup"));
+ EXPECT_EQ(4, section.Count());
+}
+TEST(TagSectionTest,WriteUnmodifiedOrder)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ char const * const order[] = { "Package", "TypoA", "Override", NULL };
+ EXPECT_TRUE(section.Write(fd, order));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_TRUE(section.Exists("TypoA"));
+ EXPECT_TRUE(section.Exists("Override"));
+ EXPECT_TRUE(section.Exists("Override-Backup"));
+ EXPECT_FALSE(section.Exists("TypoB"));
+ EXPECT_EQ(packageValue, section.FindS("Package"));
+ EXPECT_EQ(typoValue, section.FindS("TypoA"));
+ EXPECT_EQ(1, section.FindI("Override"));
+ EXPECT_EQ(1, section.FindI("Override-Backup"));
+ EXPECT_EQ(4, section.Count());
+}
+TEST(TagSectionTest,WriteUnmodifiedOrderReversed)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ char const * const order[] = { "Override", "TypoA", "Package", NULL };
+ EXPECT_TRUE(section.Write(fd, order));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_TRUE(section.Exists("TypoA"));
+ EXPECT_TRUE(section.Exists("Override"));
+ EXPECT_TRUE(section.Exists("Override-Backup"));
+ EXPECT_FALSE(section.Exists("TypoB"));
+ EXPECT_EQ(packageValue, section.FindS("Package"));
+ EXPECT_EQ(typoValue, section.FindS("TypoA"));
+ EXPECT_EQ(1, section.FindI("Override"));
+ EXPECT_EQ(1, section.FindI("Override-Backup"));
+ EXPECT_EQ(4, section.Count());
+}
+TEST(TagSectionTest,WriteUnmodifiedOrderNotAll)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ char const * const order[] = { "Override", NULL };
+ EXPECT_TRUE(section.Write(fd, order));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_TRUE(section.Exists("TypoA"));
+ EXPECT_TRUE(section.Exists("Override"));
+ EXPECT_TRUE(section.Exists("Override-Backup"));
+ EXPECT_FALSE(section.Exists("TypoB"));
+ EXPECT_EQ(packageValue, section.FindS("Package"));
+ EXPECT_EQ(typoValue, section.FindS("TypoA"));
+ EXPECT_EQ(1, section.FindI("Override"));
+ EXPECT_EQ(1, section.FindI("Override-Backup"));
+ EXPECT_EQ(4, section.Count());
+}
+TEST(TagSectionTest,WriteNoOrderRename)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ std::vector<pkgTagSection::Tag> rewrite;
+ rewrite.push_back(pkgTagSection::Tag::Rename("TypoA", "TypoB"));
+ EXPECT_TRUE(section.Write(fd, NULL, rewrite));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_FALSE(section.Exists("TypoA"));
+ EXPECT_TRUE(section.Exists("TypoB"));
+ EXPECT_TRUE(section.Exists("Override"));
+ EXPECT_TRUE(section.Exists("Override-Backup"));
+ EXPECT_EQ(packageValue, section.FindS("Package"));
+ EXPECT_EQ(typoValue, section.FindS("TypoB"));
+ EXPECT_EQ(1, section.FindI("Override"));
+ EXPECT_EQ(1, section.FindI("Override-Backup"));
+ EXPECT_EQ(4, section.Count());
+}
+TEST(TagSectionTest,WriteNoOrderRemove)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ std::vector<pkgTagSection::Tag> rewrite;
+ rewrite.push_back(pkgTagSection::Tag::Remove("TypoA"));
+ rewrite.push_back(pkgTagSection::Tag::Rewrite("Override", ""));
+ EXPECT_TRUE(section.Write(fd, NULL, rewrite));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_FALSE(section.Exists("TypoA"));
+ EXPECT_FALSE(section.Exists("TypoB"));
+ EXPECT_FALSE(section.Exists("Override"));
+ EXPECT_TRUE(section.Exists("Override-Backup"));
+ EXPECT_EQ(packageValue, section.FindS("Package"));
+ EXPECT_EQ(2, section.Count());
+}
+TEST(TagSectionTest,WriteNoOrderRewrite)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ std::vector<pkgTagSection::Tag> rewrite;
+ rewrite.push_back(pkgTagSection::Tag::Rewrite("Override", "42"));
+ EXPECT_TRUE(section.Write(fd, NULL, rewrite));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_TRUE(section.Exists("TypoA"));
+ EXPECT_FALSE(section.Exists("TypoB"));
+ EXPECT_TRUE(section.Exists("Override"));
+ EXPECT_TRUE(section.Exists("Override-Backup"));
+ EXPECT_EQ(packageValue, section.FindS("Package"));
+ EXPECT_EQ(42, section.FindI("Override"));
+ EXPECT_EQ(1, section.FindI("Override-Backup"));
+ EXPECT_EQ(4, section.Count());
+}
+TEST(TagSectionTest,WriteOrderRename)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ std::vector<pkgTagSection::Tag> rewrite;
+ rewrite.push_back(pkgTagSection::Tag::Rename("TypoA", "TypoB"));
+ char const * const order[] = { "Package", "TypoA", "Override", NULL };
+ EXPECT_TRUE(section.Write(fd, order, rewrite));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_FALSE(section.Exists("TypoA"));
+ EXPECT_TRUE(section.Exists("TypoB"));
+ EXPECT_TRUE(section.Exists("Override"));
+ EXPECT_TRUE(section.Exists("Override-Backup"));
+ EXPECT_EQ(packageValue, section.FindS("Package"));
+ EXPECT_EQ(typoValue, section.FindS("TypoB"));
+ EXPECT_EQ(1, section.FindI("Override"));
+ EXPECT_EQ(1, section.FindI("Override-Backup"));
+ EXPECT_EQ(4, section.Count());
+}
+TEST(TagSectionTest,WriteOrderRemove)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ std::vector<pkgTagSection::Tag> rewrite;
+ rewrite.push_back(pkgTagSection::Tag::Remove("TypoA"));
+ rewrite.push_back(pkgTagSection::Tag::Rewrite("Override", ""));
+ char const * const order[] = { "Package", "TypoA", "Override", NULL };
+ EXPECT_TRUE(section.Write(fd, order, rewrite));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_FALSE(section.Exists("TypoA"));
+ EXPECT_FALSE(section.Exists("TypoB"));
+ EXPECT_FALSE(section.Exists("Override"));
+ EXPECT_TRUE(section.Exists("Override-Backup"));
+ EXPECT_EQ(packageValue, section.FindS("Package"));
+ EXPECT_EQ(1, section.FindI("Override-Backup"));
+ EXPECT_EQ(2, section.Count());
+}
+TEST(TagSectionTest,WriteOrderRewrite)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ std::vector<pkgTagSection::Tag> rewrite;
+ rewrite.push_back(pkgTagSection::Tag::Rewrite("Override", "42"));
+ char const * const order[] = { "Package", "TypoA", "Override", NULL };
+ EXPECT_TRUE(section.Write(fd, order, rewrite));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_TRUE(section.Exists("TypoA"));
+ EXPECT_FALSE(section.Exists("TypoB"));
+ EXPECT_TRUE(section.Exists("Override"));
+ EXPECT_TRUE(section.Exists("Override-Backup"));
+ EXPECT_EQ(packageValue, section.FindS("Package"));
+ EXPECT_EQ(42, section.FindI("Override"));
+ EXPECT_EQ(1, section.FindI("Override-Backup"));
+ EXPECT_EQ(4, section.Count());
+}
diff --git a/test/libapt/teestream_test.cc b/test/libapt/teestream_test.cc
new file mode 100644
index 000000000..18610b24d
--- /dev/null
+++ b/test/libapt/teestream_test.cc
@@ -0,0 +1,39 @@
+#include <config.h>
+
+#include <string>
+#include <sstream>
+#include <fstream>
+#include "../interactive-helper/teestream.h"
+
+#include <gtest/gtest.h>
+
+TEST(TeeStreamTest,TwoStringSinks)
+{
+ std::ostringstream one, two;
+ basic_teeostream<char> tee(one, two);
+ tee << "This is the " << 1 << '.' << " Test, we expect: " << std::boolalpha << true << "\n";
+ std::string okay("This is the 1. Test, we expect: true\n");
+ EXPECT_EQ(okay, one.str());
+ EXPECT_EQ(okay, two.str());
+ EXPECT_EQ(one.str(), two.str());
+}
+
+TEST(TeeStreamTest,DevNullSink1)
+{
+ std::ostringstream one;
+ std::fstream two("/dev/null");
+ basic_teeostream<char> tee(one, two);
+ tee << "This is the " << 2 << '.' << " Test, we expect: " << std::boolalpha << false << "\n";
+ std::string okay("This is the 2. Test, we expect: false\n");
+ EXPECT_EQ(okay, one.str());
+}
+
+TEST(TeeStreamTest,DevNullSink2)
+{
+ std::ostringstream one;
+ std::fstream two("/dev/null");
+ basic_teeostream<char> tee(two, one);
+ tee << "This is the " << 3 << '.' << " Test, we expect: " << std::boolalpha << false << "\n";
+ std::string okay("This is the 3. Test, we expect: false\n");
+ EXPECT_EQ(okay, one.str());
+}
diff --git a/test/libapt/uri_test.cc b/test/libapt/uri_test.cc
new file mode 100644
index 000000000..09d018049
--- /dev/null
+++ b/test/libapt/uri_test.cc
@@ -0,0 +1,216 @@
+#include <config.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/proxy.h>
+#include <apt-pkg/strutl.h>
+#include <string>
+#include <gtest/gtest.h>
+
+TEST(URITest, BasicHTTP)
+{
+ URI U("http://www.debian.org:90/temp/test");
+ EXPECT_EQ("http", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(90, U.Port);
+ EXPECT_EQ("www.debian.org", U.Host);
+ EXPECT_EQ("/temp/test", U.Path);
+ EXPECT_EQ("http://www.debian.org:90/temp/test", (std::string)U);
+ EXPECT_EQ("http://www.debian.org:90", URI::SiteOnly(U));
+ EXPECT_EQ("http://www.debian.org:90/temp/test", URI::ArchiveOnly(U));
+ EXPECT_EQ("http://www.debian.org:90/temp/test", URI::NoUserPassword(U));
+ // Login data
+ U = URI("http://jgg:foo@ualberta.ca/blah");
+ EXPECT_EQ("http", U.Access);
+ EXPECT_EQ("jgg", U.User);
+ EXPECT_EQ("foo", U.Password);
+ EXPECT_EQ(0, U.Port);
+ EXPECT_EQ("ualberta.ca", U.Host);
+ EXPECT_EQ("/blah", U.Path);
+ EXPECT_EQ("http://jgg:foo@ualberta.ca/blah", (std::string)U);
+ EXPECT_EQ("http://ualberta.ca", URI::SiteOnly(U));
+ EXPECT_EQ("http://ualberta.ca/blah", URI::ArchiveOnly(U));
+ EXPECT_EQ("http://ualberta.ca/blah", URI::NoUserPassword(U));
+ // just a user
+ U = URI("https://apt@example.org/blah");
+ EXPECT_EQ("https", U.Access);
+ EXPECT_EQ("apt", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(0, U.Port);
+ EXPECT_EQ("example.org", U.Host);
+ EXPECT_EQ("/blah", U.Path);
+ EXPECT_EQ("https://apt@example.org/blah", (std::string)U);
+ EXPECT_EQ("https://example.org", URI::SiteOnly(U));
+ EXPECT_EQ("https://example.org/blah", URI::ArchiveOnly(U));
+ EXPECT_EQ("https://example.org/blah", URI::NoUserPassword(U));
+}
+TEST(URITest, SingeSlashFile)
+{
+ URI U("file:/usr/bin/foo");
+ EXPECT_EQ("file", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(0, U.Port);
+ EXPECT_EQ("", U.Host);
+ EXPECT_EQ("/usr/bin/foo", U.Path);
+ EXPECT_EQ("file:/usr/bin/foo", (std::string)U);
+ EXPECT_EQ("file:", URI::SiteOnly(U));
+ EXPECT_EQ("file:/usr/bin/foo", URI::ArchiveOnly(U));
+ EXPECT_EQ("file:/usr/bin/foo", URI::NoUserPassword(U));
+}
+TEST(URITest, BasicCDROM)
+{
+ URI U("cdrom:Moo Cow Rom:/debian");
+ EXPECT_EQ("cdrom", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(0, U.Port);
+ EXPECT_EQ("Moo Cow Rom", U.Host);
+ EXPECT_EQ("/debian", U.Path);
+ EXPECT_EQ("cdrom://Moo Cow Rom/debian", (std::string)U);
+ EXPECT_EQ("cdrom://Moo Cow Rom", URI::SiteOnly(U));
+ EXPECT_EQ("cdrom://Moo Cow Rom/debian", URI::ArchiveOnly(U));
+ EXPECT_EQ("cdrom://Moo Cow Rom/debian", URI::NoUserPassword(U));
+}
+TEST(URITest, RelativeGzip)
+{
+ URI U("gzip:./bar/cow");
+ EXPECT_EQ("gzip", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(0, U.Port);
+ EXPECT_EQ(".", U.Host);
+ EXPECT_EQ("/bar/cow", U.Path);
+ EXPECT_EQ("gzip://./bar/cow", (std::string)U);
+ EXPECT_EQ("gzip://.", URI::SiteOnly(U));
+ EXPECT_EQ("gzip://./bar/cow", URI::ArchiveOnly(U));
+ EXPECT_EQ("gzip://./bar/cow", URI::NoUserPassword(U));
+}
+TEST(URITest, NoSlashFTP)
+{
+ URI U("ftp:ftp.fr.debian.org/debian/pool/main/x/xtel/xtel_3.2.1-15_i386.deb");
+ EXPECT_EQ("ftp", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(0, U.Port);
+ EXPECT_EQ("ftp.fr.debian.org", U.Host);
+ EXPECT_EQ("/debian/pool/main/x/xtel/xtel_3.2.1-15_i386.deb", U.Path);
+ EXPECT_EQ("ftp://ftp.fr.debian.org/debian/pool/main/x/xtel/xtel_3.2.1-15_i386.deb", (std::string)U);
+ EXPECT_EQ("ftp://ftp.fr.debian.org", URI::SiteOnly(U));
+ EXPECT_EQ("ftp://ftp.fr.debian.org/debian/pool/main/x/xtel/xtel_3.2.1-15_i386.deb", URI::ArchiveOnly(U));
+ EXPECT_EQ("ftp://ftp.fr.debian.org/debian/pool/main/x/xtel/xtel_3.2.1-15_i386.deb", URI::NoUserPassword(U));
+}
+TEST(URITest, RFC2732)
+{
+ URI U("http://[1080::8:800:200C:417A]/foo");
+ EXPECT_EQ("http", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(0, U.Port);
+ EXPECT_EQ("1080::8:800:200C:417A", U.Host);
+ EXPECT_EQ("/foo", U.Path);
+ EXPECT_EQ("http://[1080::8:800:200C:417A]/foo", (std::string)U);
+ EXPECT_EQ("http://[1080::8:800:200C:417A]", URI::SiteOnly(U));
+ EXPECT_EQ("http://[1080::8:800:200C:417A]/foo", URI::ArchiveOnly(U));
+ EXPECT_EQ("http://[1080::8:800:200C:417A]/foo", URI::NoUserPassword(U));
+ // with port
+ U = URI("http://[::FFFF:129.144.52.38]:80/index.html");
+ EXPECT_EQ("http", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(80, U.Port);
+ EXPECT_EQ("::FFFF:129.144.52.38", U.Host);
+ EXPECT_EQ("/index.html", U.Path);
+ EXPECT_EQ("http://[::FFFF:129.144.52.38]:80/index.html", (std::string)U);
+ EXPECT_EQ("http://[::FFFF:129.144.52.38]:80", URI::SiteOnly(U));
+ EXPECT_EQ("http://[::FFFF:129.144.52.38]:80/index.html", URI::ArchiveOnly(U));
+ EXPECT_EQ("http://[::FFFF:129.144.52.38]:80/index.html", URI::NoUserPassword(U));
+ // extra colon
+ U = URI("http://[::FFFF:129.144.52.38:]:80/index.html");
+ EXPECT_EQ("http", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(80, U.Port);
+ EXPECT_EQ("::FFFF:129.144.52.38:", U.Host);
+ EXPECT_EQ("/index.html", U.Path);
+ EXPECT_EQ("http://[::FFFF:129.144.52.38:]:80/index.html", (std::string)U);
+ EXPECT_EQ("http://[::FFFF:129.144.52.38:]:80", URI::SiteOnly(U));
+ EXPECT_EQ("http://[::FFFF:129.144.52.38:]:80/index.html", URI::ArchiveOnly(U));
+ EXPECT_EQ("http://[::FFFF:129.144.52.38:]:80/index.html", URI::NoUserPassword(U));
+ // extra colon port
+ U = URI("http://[::FFFF:129.144.52.38:]/index.html");
+ EXPECT_EQ("http", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(0, U.Port);
+ EXPECT_EQ("::FFFF:129.144.52.38:", U.Host);
+ EXPECT_EQ("/index.html", U.Path);
+ EXPECT_EQ("http://[::FFFF:129.144.52.38:]/index.html", (std::string)U);
+ EXPECT_EQ("http://[::FFFF:129.144.52.38:]", URI::SiteOnly(U));
+ EXPECT_EQ("http://[::FFFF:129.144.52.38:]/index.html", URI::ArchiveOnly(U));
+ EXPECT_EQ("http://[::FFFF:129.144.52.38:]/index.html", URI::NoUserPassword(U));
+ // My Evil Corruption of RFC 2732 to handle CDROM names!
+ // Fun for the whole family! */
+ U = URI("cdrom:[The Debian 1.2 disk, 1/2 R1:6]/debian/");
+ EXPECT_EQ("cdrom", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(0, U.Port);
+ EXPECT_EQ("The Debian 1.2 disk, 1/2 R1:6", U.Host);
+ EXPECT_EQ("/debian/", U.Path);
+ EXPECT_EQ("cdrom://[The Debian 1.2 disk, 1/2 R1:6]/debian/", (std::string)U);
+ EXPECT_EQ("cdrom://[The Debian 1.2 disk, 1/2 R1:6]", URI::SiteOnly(U));
+ EXPECT_EQ("cdrom://[The Debian 1.2 disk, 1/2 R1:6]/debian", URI::ArchiveOnly(U));
+ EXPECT_EQ("cdrom://[The Debian 1.2 disk, 1/2 R1:6]/debian/", URI::NoUserPassword(U));
+ // no brackets
+ U = URI("cdrom:Foo Bar Cow/debian/");
+ EXPECT_EQ("cdrom", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(0, U.Port);
+ EXPECT_EQ("Foo Bar Cow", U.Host);
+ EXPECT_EQ("/debian/", U.Path);
+ EXPECT_EQ("cdrom://Foo Bar Cow/debian/", (std::string)U);
+ EXPECT_EQ("cdrom://Foo Bar Cow", URI::SiteOnly(U));
+ EXPECT_EQ("cdrom://Foo Bar Cow/debian", URI::ArchiveOnly(U));
+ EXPECT_EQ("cdrom://Foo Bar Cow/debian/", URI::NoUserPassword(U));
+ // percent encoded password
+ U = URI("ftp://foo:b%40r@example.org");
+ EXPECT_EQ("foo", U.User);
+ EXPECT_EQ("b@r", U.Password);
+ EXPECT_EQ("ftp://foo:b%40r@example.org/", (std::string) U);
+ EXPECT_EQ("ftp://example.org", URI::SiteOnly(U));
+ EXPECT_EQ("ftp://example.org", URI::ArchiveOnly(U));
+ EXPECT_EQ("ftp://example.org/", URI::NoUserPassword(U));
+ // percent encoded user
+ U = URI("ftp://f%40o:bar@example.org");
+ EXPECT_EQ("f@o", U.User);
+ EXPECT_EQ("bar", U.Password);
+ EXPECT_EQ("ftp://f%40o:bar@example.org/", (std::string) U);
+ EXPECT_EQ("ftp://example.org", URI::SiteOnly(U));
+ EXPECT_EQ("ftp://example.org", URI::ArchiveOnly(U));
+ EXPECT_EQ("ftp://example.org/", URI::NoUserPassword(U));
+}
+TEST(URITest, AutoProxyTest)
+{
+ URI u0("http://www.debian.org:90/temp/test");
+ URI u1("http://www.debian.org:91/temp/test");
+
+ _config->Set("Acquire::http::Proxy-Auto-Detect", "./apt-proxy-script");
+
+ // Scenario 0: Autodetecting a simple proxy
+ AutoDetectProxy(u0);
+ EXPECT_EQ(_config->Find("Acquire::http::proxy::www.debian.org", ""), "http://example.com");
+
+ // Scenario 1: Proxy stays the same if it is already set
+ AutoDetectProxy(u1);
+ EXPECT_EQ(_config->Find("Acquire::http::proxy::www.debian.org", ""), "http://example.com");
+
+ // Scenario 2: Reading with stderr output works fine
+ _config->Clear("Acquire::http::proxy::www.debian.org");
+ AutoDetectProxy(u1);
+ EXPECT_EQ(_config->Find("Acquire::http::proxy::www.debian.org", ""), "http://example.com/foo");
+
+ // Scenario 1 again: Proxy stays the same if it is already set
+ AutoDetectProxy(u0);
+ EXPECT_EQ(_config->Find("Acquire::http::proxy::www.debian.org", ""), "http://example.com/foo");
+}
diff --git a/test/thread-safety/not-thread-safe.sh b/test/thread-safety/not-thread-safe.sh
new file mode 100755
index 000000000..f86ef397d
--- /dev/null
+++ b/test/thread-safety/not-thread-safe.sh
@@ -0,0 +1,7 @@
+git grep -p --color -n -E "$(grep -v ^# test/thread-safety/thread-check.txt | sed 's/(.*/\\\\ *\\\\(/' | xargs | tr ' ' '|')" \
+ apt-inst/ apt-pkg/ | ansi2html | ssh alioth.debian.org 'cat > /home/groups/apt/htdocs/not-thread-safe/index.html'
+git grep -p --color -n -E "$(grep ^# test/thread-safety/thread-check.txt | cut -f2 -d# | sed 's/(.*/\\\\ *\\\\(/' | xargs | tr ' ' '|')" \
+ apt-inst/ apt-pkg/ | ansi2html | ssh alioth.debian.org 'cat > /home/groups/apt/htdocs/not-thread-safe/portable.html'
+
+git grep -p --color -n -E "$(grep -v ^# test/thread-safety/thread-check-internal.txt | sed 's/(.*/\\\\ *\\\\(/' | xargs | tr ' ' '|')" \
+ apt-inst/ apt-pkg/ | ansi2html | ssh alioth.debian.org 'cat > /home/groups/apt/htdocs/not-thread-safe/internal.html'
diff --git a/test/thread-safety/thread-check-internal.txt b/test/thread-safety/thread-check-internal.txt
new file mode 100644
index 000000000..c55985fa0
--- /dev/null
+++ b/test/thread-safety/thread-check-internal.txt
@@ -0,0 +1,3 @@
+CndSet()
+Set()
+Clear()
diff --git a/test/thread-safety/thread-check.txt b/test/thread-safety/thread-check.txt
new file mode 100644
index 000000000..ed00965bd
--- /dev/null
+++ b/test/thread-safety/thread-check.txt
@@ -0,0 +1,91 @@
+asctime()
+basename()
+catgets()
+crypt()
+ctermid() if passed a non-NULL argument
+ctime()
+dbm_clearerr()
+dbm_close()
+dbm_delete()
+dbm_error()
+dbm_fetch()
+dbm_firstkey()
+dbm_nextkey()
+dbm_open()
+dbm_store()
+dirname()
+dlerror()
+drand48()
+ecvt() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
+encrypt()
+endgrent()
+endpwent()
+endutxent()
+fcvt() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
+ftw()
+gcvt() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
+getc_unlocked()
+getchar_unlocked()
+getdate()
+#getenv()
+getgrent()
+getgrgid()
+getgrnam()
+gethostbyaddr() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
+gethostbyname() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
+gethostent()
+getlogin()
+getnetbyaddr()
+getnetbyname()
+getnetent()
+getopt()
+getprotobyname()
+getprotobynumber()
+getprotoent()
+getpwent()
+getpwnam()
+getpwuid()
+getservbyname()
+getservbyport()
+getservent()
+getutxent()
+getutxid()
+getutxline()
+gmtime()
+hcreate()
+hdestroy()
+hsearch()
+inet_ntoa()
+l64a()
+lgamma()
+lgammaf()
+lgammal()
+localeconv()
+localtime()
+lrand48()
+mrand48()
+nftw()
+#nl_langinfo()
+ptsname()
+putc_unlocked()
+putchar_unlocked()
+putenv()
+pututxline()
+rand()
+#readdir()
+setenv()
+setgrent()
+setkey()
+setpwent()
+setutxent()
+#strerror()
+strsignal() [Added in POSIX.1-2008]
+strtok()
+#system() [Added in POSIX.1-2008]
+tmpnam() if passed a non-NULL argument
+ttyname()
+unsetenv()
+wcrtomb() if its final argument is NULL
+wcsrtombs() if its final argument is NULL
+wcstombs()
+wctomb()
diff --git a/triehash/.travis.yml b/triehash/.travis.yml
new file mode 100644
index 000000000..c66ea9697
--- /dev/null
+++ b/triehash/.travis.yml
@@ -0,0 +1,14 @@
+language: perl
+perl:
+ - "5.24"
+ - "5.22"
+ - "5.20"
+ - "5.18"
+ - "5.16"
+ - "5.14"
+install:
+ - cpanm --quiet --notest --skip-satisfied Devel::Cover Devel::Cover::Report::Codecov
+script:
+ - ./tests/run-tests.sh
+after_script:
+ - cover -report codecov
diff --git a/LICENSE.md b/triehash/LICENSE.md
index 89de35479..89de35479 100644
--- a/LICENSE.md
+++ b/triehash/LICENSE.md
diff --git a/triehash/README.md b/triehash/README.md
new file mode 100644
index 000000000..d6f6e7fc3
--- /dev/null
+++ b/triehash/README.md
@@ -0,0 +1,58 @@
+# Order-preserving minimal perfect hash function generator
+
+Build order-preserving minimal perfect hash functions.
+
+[![codecov](https://codecov.io/gh/julian-klode/triehash/branch/master/graph/badge.svg)](https://codecov.io/gh/julian-klode/triehash)
+[![Build Status](https://travis-ci.org/julian-klode/triehash.svg?branch=master)](https://travis-ci.org/julian-klode/triehash)
+
+## Performance
+
+Performance was evaluated against other hash functions. As an input set, the
+fields of Debian Packages and Sources files was used, and each hash function
+was run 1,000,000 times for each word. The byte count of the words were then
+summed up and divided by the total number of nanoseconds each function ran, so
+all speeds below are given in bytes per nanosecond, AKA gigabyte per second.
+
+arch/function|jak-x230 (amd64)|backup (amd64)|asachi.d.o (arm64)|asachi.d.o (armel)|asachi.d.o (armhf)|plummer.d.o (ppc64el)|eller.d.o (mipsel)
+-------------|----------------|--------------|------------------|------------------|------------------|---------------------|------------------
+Trie | 2.4 | 1.9 | 1.2 | 0.9 | 0.8 | 2.0 | 0.2
+Trie (*) | 2.2 | 1.7 | 0.8 | 0.7 | 0.7 | 1.8 | 0.2
+re2c | 1.7 | 1.3 | 0.9 | 0.9 | 0.7 | 1.6 | 0.2
+re2c (*) | 1.2 | 0.9 | 0.6 | 0.6 | 0.5 | 1.1 | 0.1
+gperf (*) | 0.7 | 0.5 | 0.2 | 0.2 | 0.2 | 0.5 | 0.1
+gperf | 1.3 | 0.9 | 0.3 | 0.3 | 0.2 | 0.4 | 0.1
+djb (*) | 0.7 | 0.5 | 0.3 | 0.3 | 0.3 | 0.5 | 0.1
+djb (**) | 1.0 | 0.7 | 0.4 | 0.5 | 0.5 | 0.6 | 0.2
+djb | 0.9 | 0.7 | 0.5 | 0.5 | 0.5 | 0.7 | 0.2
+apt (*) | 1.2 | 0.9 | 0.7 | 0.7 | 0.7 | 1.1 | 0.2
+apt (**) | 2.3 | 1.7 | 0.7 | 0.9 | 0.8 | 1.9 | 0.2
+
+And transposed:
+
+function/arch |Trie |Trie (*) |re2c |re2c (*) |gperf (*)|gperf |djb (*) |djb (**) |djb |apt (*) |apt (**)
+---------------------|---------|---------|---------|---------|---------|---------|---------|---------|---------|---------|---------
+jak-x230 (amd64) | 2.4| 2.2| 1.7| 1.2| 0.7| 1.3| 0.7| 1.0| 0.9| 1.2| 2.3
+backup (amd64) | 1.9| 1.7| 1.3| 0.9| 0.5| 0.9| 0.5| 0.7| 0.7| 0.9| 1.7
+asachi.d.o (arm64) | 1.2| 0.8| 0.9| 0.6| 0.2| 0.3| 0.3| 0.4| 0.5| 0.7| 0.7
+asachi.d.o (armel) | 0.9| 0.7| 0.9| 0.6| 0.2| 0.3| 0.3| 0.5| 0.5| 0.7| 0.9
+asachi.d.o (armhf) | 0.8| 0.7| 0.7| 0.5| 0.2| 0.2| 0.3| 0.5| 0.5| 0.7| 0.8
+plummer.d.o (ppc64el)| 2.0| 1.8| 1.6| 1.1| 0.5| 0.4| 0.5| 0.6| 0.7| 1.1| 1.9
+eller.d.o (mipsel) | 0.2| 0.2| 0.2| 0.1| 0.1| 0.1| 0.1| 0.2| 0.2| 0.2| 0.2
+
+
+Legend:
+
+* The (*) variants are case-insensitive, (**) are more optimised versions
+ of the (*) versions.
+* DJB (*) is a DJB Hash with naive lowercase conversion, DJB (**) just ORs one
+ bit into each value to get alphabetical characters to be lowercase
+* APT (*) is the AlphaHash function from APT which hashes the last 8 bytes in a
+ word in a case-insensitive manner. APT (**) is the same function unrolled.
+* All hosts except the x230 are Debian porterboxes. The x230 has a Core i5-3320M,
+ barriere has an Opteron 23xx.
+
+Notes:
+
+* The overhead is larger than needed on some platforms due to gcc inserting
+ unneeded zero extend instructions, see:
+ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77729
diff --git a/tests/framework.sh b/triehash/tests/framework.sh
index 51d4580a6..51d4580a6 100644
--- a/tests/framework.sh
+++ b/triehash/tests/framework.sh
diff --git a/tests/run-tests.sh b/triehash/tests/run-tests.sh
index b9c1ec309..b9c1ec309 100755
--- a/tests/run-tests.sh
+++ b/triehash/tests/run-tests.sh
diff --git a/tests/test-basic b/triehash/tests/test-basic
index 19cb08684..19cb08684 100755
--- a/tests/test-basic
+++ b/triehash/tests/test-basic
diff --git a/tests/test-case-insensitive b/triehash/tests/test-case-insensitive
index 25ab2dd78..25ab2dd78 100755
--- a/tests/test-case-insensitive
+++ b/triehash/tests/test-case-insensitive
diff --git a/tests/test-enum-include-name-flags b/triehash/tests/test-enum-include-name-flags
index 33bd97c0f..33bd97c0f 100755
--- a/tests/test-enum-include-name-flags
+++ b/triehash/tests/test-enum-include-name-flags
diff --git a/tests/test-multi-byte-level b/triehash/tests/test-multi-byte-level
index ddfb8cd1b..ddfb8cd1b 100755
--- a/tests/test-multi-byte-level
+++ b/triehash/tests/test-multi-byte-level
diff --git a/triehash.pl b/triehash/triehash.pl
index 25300a765..25300a765 100755
--- a/triehash.pl
+++ b/triehash/triehash.pl
diff --git a/vendor/CMakeLists.txt b/vendor/CMakeLists.txt
new file mode 100644
index 000000000..8246c725a
--- /dev/null
+++ b/vendor/CMakeLists.txt
@@ -0,0 +1,37 @@
+# Determine the current vendor, export to CURRENT_VENDOR
+if (NOT DEFINED CURRENT_VENDOR)
+ execute_process(COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/getinfo current
+ OUTPUT_VARIABLE CURRENT_VENDOR_OUT OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+ set(CURRENT_VENDOR "${CURRENT_VENDOR_OUT}" CACHE STRING "Select the system vendor")
+ message(STATUS "Detected vendor: ${CURRENT_VENDOR_OUT}")
+else()
+ message(STATUS "Detected vendor: ${CURRENT_VENDOR} (cached)")
+endif()
+
+# Handle sources.list example
+add_vendor_file(OUTPUT sources.list
+ INPUT "${CURRENT_VENDOR}/sources.list.in"
+ MODE 644
+ VARIABLES sourceslist-list-format
+ debian-stable-codename
+ debian-oldstable-codename
+ debian-testing-codename
+ ubuntu-codename
+ current-codename)
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/sources.list
+ DESTINATION ${CMAKE_INSTALL_DOCDIR}/examples)
+
+# Handle apt.conf snippets
+file(GLOB conffiles ${CURRENT_VENDOR}/apt.conf-*)
+foreach(file ${conffiles})
+ file(RELATIVE_PATH confname ${CMAKE_CURRENT_SOURCE_DIR}/${CURRENT_VENDOR}/ ${file})
+ string(REPLACE "apt.conf-" "" confname "${confname}")
+ install(FILES "${file}"
+ DESTINATION "${CMAKE_INSTALL_SYSCONFDIR}/apt/apt.conf.d/"
+ RENAME "${confname}")
+endforeach()
+
+if (EXISTS "${CURRENT_VENDOR}/CMakeLists.txt")
+ add_subdirectory(${CURRENT_VENDOR})
+endif()
diff --git a/vendor/README b/vendor/README
new file mode 100644
index 000000000..6846c8455
--- /dev/null
+++ b/vendor/README
@@ -0,0 +1,72 @@
+The vendor system in APT is an experiment to help distributions ship a stock
+apt release instead of applying documentation patches to it, increasing
+maintenance burden for everyone and hiding 'interesting' patches in the mix.
+
+The provided information is used in the apt-key script and in documentation
+like manpages and example configuration files. If you have patches modifying
+additional bits and pieces currently not covered by this system please
+contact us so we can change this!
+
+
+== Adding a new vendor
+
+In the same directory you found this README in you should create a new
+directory with the name of your distribution (as defined by dpkg-vendor,
+ e.g. via "dpkg-vendor --query Vendor"). The name is case-insensitive,
+but ensure that the name is otherwise correct and the other fields in
+your deb-origin(5) file are correct as well as our buildsystem relies on
+this information.
+
+If no information is found for the current vendor at buildtime, the system
+looks for a vendor the current vendor is a derivative of, falling back to
+Debian if all else fails.
+
+The directory should include 2 files at the moment. It is best to look
+at the files of other distributions to understand what values are to be
+expected. Some additional notes about them can be found below.
+
+If we happen to include new fields/files in this system, we will opt for
+using a sensible default rather than failing the build or similar, so
+you are recommend to watch this space.
+Ensure also that your information is up-to-date!
+
+Contributing a new vendor as well as updating a existing one is best done
+by opening a bug in the Debian BTS against apt with a patch attached.
+
+
+== apt-vendor.ent
+
+The format used is the one DocBook XML uses. The file is included as an
+entity file in the manpages xml source, so the syntax has to be valid!
+
+The keyring-* settings are additionally used also in the creation of the
+apt-key script and the keyring-package in particular as a dependency for apt.
+
+The field current-codename is optional and can be used in sources.list.in.
+
+The fields sourceslist-list-format and sourceslist-sources-format are used as
+examples in the sources.list manpage and the first one is additionally
+available in the sources.list.in template.
+They should in general reflect the default sources of your distro.
+
+== sources.list.in
+
+An example for a sources.list which will be shipped in /usr/share/doc.
+This file will NOT be installed in /etc or otherwise used by apt.
+
+You can use some placeholders in this file, namely:
+* &debian-stable-codename;
+* &debian-oldstable-codename;
+* &debian-testing-codename;
+* &ubuntu-codename;
+* &sourceslist-list-format;
+with the value you would expect based on the name.
+
+The placeholder &current-codename; is yours and can be set in apt-vendor.ent
+
+
+== apt.conf-*
+
+Files in your vendor directory following this naming scheme will be picked up
+by the debian/rules file and installed in /etc/apt/apt.conf.d/ directory, with
+"apt.conf-" removed from the beginning of the filename.
diff --git a/vendor/blankon/apt-vendor.ent b/vendor/blankon/apt-vendor.ent
new file mode 100644
index 000000000..ea7625f90
--- /dev/null
+++ b/vendor/blankon/apt-vendor.ent
@@ -0,0 +1,17 @@
+<!-- details about the keys used by the distribution -->
+<!ENTITY keyring-distro "BlankOn">
+<!ENTITY keyring-package "<package>blankon-keyring</package>">
+<!ENTITY keyring-filename "<filename>/usr/share/keyrings/blankon-archive-keyring.gpg</filename>">
+<!ENTITY keyring-removed-filename "<filename>/usr/share/keyrings/blankon-archive-removed-keys.gpg</filename>">
+<!ENTITY keyring-master-filename "/usr/share/keyrings/blankon-master-keyring.gpg">
+<!ENTITY keyring-uri "http://arsip.blankonlinux.or.id/blankon/project/blankon-archive-keyring.gpg">
+<!ENTITY current-codename "tambora">
+
+<!ENTITY sourceslist-list-format "deb http://arsip.blankonlinux.or.id/blankon &current-codename; main restricted
+deb http://arsip.blankonlinux.or.id/blankon &current-codename;-security main restricted
+deb http://arsip.blankonlinux.or.id/blankon &current-codename;-updates main restricted">
+
+<!ENTITY sourceslist-sources-format "Types: deb
+URIs: http://arsip.blankonlinux.or.id/blankon
+Suites: &current-codename; &current-codename;-security &current-codename;-updates
+Components: main restricted">
diff --git a/vendor/blankon/sources.list.in b/vendor/blankon/sources.list.in
new file mode 100644
index 000000000..2322e974d
--- /dev/null
+++ b/vendor/blankon/sources.list.in
@@ -0,0 +1,10 @@
+# See sources.list(5) manpage for more information
+# Remember that CD-ROMs, DVDs and such are managed through the apt-cdrom tool.
+deb http://arsip.blankonlinux.or.id/blankon &current-codename; main restricted
+deb-src http://arsip.blankonlinux.or.id/blankon &current-codename; main restricted
+
+deb http://arsip.blankonlinux.or.id/blankon &current-codename;-security main restricted
+deb-src http://arsip.blankonlinux.or.id/blankon &current-codename;-security main restricted
+
+deb http://arsip.blankonlinux.or.id/blankon &current-codename;-updates main restricted
+deb-src http://arsip.blankonlinux.or.id/blankon &current-codename;-updates main restricted
diff --git a/vendor/debian/apt-vendor.ent b/vendor/debian/apt-vendor.ent
new file mode 100644
index 000000000..41484c42e
--- /dev/null
+++ b/vendor/debian/apt-vendor.ent
@@ -0,0 +1,19 @@
+<!-- details about the keys used by the distribution -->
+<!ENTITY keyring-distro "Debian">
+<!ENTITY keyring-package "<package>debian-archive-keyring</package>">
+<!ENTITY keyring-filename "">
+<!ENTITY keyring-removed-filename "">
+<!ENTITY keyring-master-filename "">
+<!ENTITY keyring-uri "">
+
+<!ENTITY sourceslist-list-format "deb http://deb.debian.org/debian &debian-stable-codename; main contrib non-free
+deb http://security.debian.org &debian-stable-codename;/updates main contrib non-free">
+<!ENTITY sourceslist-sources-format "Types: deb
+URIs: http://deb.debian.org/debian
+Suites: &debian-stable-codename;
+Components: main contrib non-free
+
+Types: deb
+URIs: http://security.debian.org
+Suites: &debian-stable-codename;/updates
+Components: main contrib non-free">
diff --git a/vendor/debian/sources.list.in b/vendor/debian/sources.list.in
new file mode 100644
index 000000000..73a2ec9c4
--- /dev/null
+++ b/vendor/debian/sources.list.in
@@ -0,0 +1,7 @@
+# See sources.list(5) manpage for more information
+# Remember that CD-ROMs, DVDs and such are managed through the apt-cdrom tool.
+&sourceslist-list-format;
+
+# Uncomment if you want the apt-get source function to work
+#deb-src http://deb.debian.org/debian &debian-stable-codename; main contrib non-free
+#deb-src http://security.debian.org &debian-stable-codename;/updates main contrib non-free
diff --git a/vendor/getinfo b/vendor/getinfo
new file mode 100755
index 000000000..37eb74cef
--- /dev/null
+++ b/vendor/getinfo
@@ -0,0 +1,83 @@
+#!/bin/sh
+# small helper to extract information form *.ent files
+
+BASEDIR="$(readlink -f "$(dirname $0)")"
+
+getcurrent() {
+ # search for an exact match to use the correct sources.list example
+ cd $BASEDIR
+ DISTROS="$(find . -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 2)"
+ for DISTRO in $DISTROS; do
+ if dpkg-vendor --is $DISTRO; then
+ echo $DISTRO
+ return 0
+ fi
+ done
+
+ # if we haven't found a specific, look for a deriving
+ # we do ubuntu and debian last as those are the biggest families
+ # and would therefore potentially 'shadow' smaller families
+ # (especially debian as it sorts quiet early)
+ for DISTRO in $DISTROS; do
+ if [ "$DISTRO" = 'debian' -o "$DISTRO" = 'ubuntu' ]; then continue; fi
+ if dpkg-vendor --derives-from $DISTRO; then
+ echo $DISTRO
+ return 0
+ fi
+ done
+
+ # Do the ubuntu/debian dance we talked about
+ if dpkg-vendor --derives-from ubuntu; then
+ echo $DISTRO
+ return 0
+ fi
+
+ echo debian
+ return 0
+}
+
+if [ "$1" = "--vendor" ]; then
+ CURRENT_VENDOR="$2"
+ shift 2
+else
+ CURRENT_VENDOR=$(getcurrent)
+fi
+INFO="$(readlink -f "${BASEDIR}/$CURRENT_VENDOR/apt-vendor.ent")"
+VERBATIM="${BASEDIR}/../doc/apt-verbatim.ent"
+
+if [ -z "$INFO" ] || [ ! -e "$INFO" ]; then
+ echo >&2 'The current vendor is not valid or not chosen by the buildsystem yet.'
+ exit 1
+fi
+
+getrawfield() {
+ awk "/<!ENTITY $1/ {f=NR} f && NR-1==f { print; exit 0 }" RS='"' "${2:-$INFO}"
+}
+
+getfield() {
+ local FIELD="$(getrawfield "$@")"
+ FIELD="${FIELD#*>}"
+ echo "${FIELD%<*}"
+}
+
+case "$1" in
+debian-stable-codename|debian-oldstable-codename|debian-testing-codename|ubuntu-codename)
+ getrawfield "$1" "$VERBATIM"
+ ;;
+sourceslist-list-format|keyring-package|keyring-filename|keyring-master-filename|keyring-removed-filename|keyring-uri|current-codename)
+ exec $0 --vendor $CURRENT_VENDOR 'vendor' "$@"
+ ;;
+vendor)
+ getfield "$2"
+ ;;
+verbatim)
+ getfield "$2" "$VERBATIM"
+ ;;
+current)
+ echo $CURRENT_VENDOR
+ ;;
+*)
+ echo >&2 "Unknown data field $1 requested"
+ exit 2
+ ;;
+esac
diff --git a/vendor/raspbian/apt-vendor.ent b/vendor/raspbian/apt-vendor.ent
new file mode 100644
index 000000000..96d9fb71b
--- /dev/null
+++ b/vendor/raspbian/apt-vendor.ent
@@ -0,0 +1,13 @@
+<!-- details about the keys used by the distribution -->
+<!ENTITY keyring-distro "Raspbian">
+<!ENTITY keyring-package "<package>raspbian-archive-keyring</package>">
+<!ENTITY keyring-filename "<filename>/usr/share/keyrings/raspbian-archive-keyring.gpg</filename>">
+<!ENTITY keyring-removed-filename "<filename>/usr/share/keyrings/raspbian-archive-removed-keys.gpg</filename>">
+<!ENTITY keyring-master-filename "">
+<!ENTITY keyring-uri "">
+
+<!ENTITY sourceslist-list-format "deb http://mirrordirector.raspbian.org/raspbian &debian-stable-codename; main contrib non-free">
+<!ENTITY sourceslist-sources-format "Types: deb
+URIs: http://mirrordirector.raspbian.org/raspbian
+Suites: &debian-stable-codename;
+Components: main contrib non-free">
diff --git a/vendor/raspbian/sources.list.in b/vendor/raspbian/sources.list.in
new file mode 100644
index 000000000..ea4ee6040
--- /dev/null
+++ b/vendor/raspbian/sources.list.in
@@ -0,0 +1,6 @@
+# See sources.list(5) manpage for more information
+# Remember that CD-ROMs, DVDs and such are managed through the apt-cdrom tool.
+&sourceslist-list-format;
+
+# Uncomment if you want the apt-get source function to work
+#deb-src http://mirrordirector.raspbian.org/raspbian &debian-stable-codename; main contrib non-free
diff --git a/vendor/steamos/apt-vendor.ent b/vendor/steamos/apt-vendor.ent
new file mode 100644
index 000000000..7cf100fc4
--- /dev/null
+++ b/vendor/steamos/apt-vendor.ent
@@ -0,0 +1,15 @@
+<!-- details about the keys used by the distribution -->
+<!ENTITY keyring-distro "SteamOS">
+<!ENTITY keyring-package "<package>valve-archive-keyring</package>">
+<!ENTITY keyring-filename "<filename>/usr/share/keyrings/valve-archive-keyring.gpg</filename>">
+<!ENTITY keyring-removed-filename "<filename>/usr/share/keyrings/valve-archive-removed-keys.gpg</filename>">
+<!ENTITY keyring-master-filename "">
+<!ENTITY keyring-uri "">
+<!ENTITY current-codename "alchemist">
+
+<!ENTITY sourceslist-list-format "deb http://repo.steampowered.com/steamos &current-codename; main contrib non-free
+deb-src http://repo.steampowered.com/steamos &current-codename; main contrib non-free">
+<!ENTITY sourceslist-sources-format "Types: deb deb-src
+URIs: http://repo.steampowered.com/steamos
+Suites: &current-codename;
+Components: main contrib non-free">
diff --git a/vendor/steamos/sources.list.in b/vendor/steamos/sources.list.in
new file mode 100644
index 000000000..246d2e336
--- /dev/null
+++ b/vendor/steamos/sources.list.in
@@ -0,0 +1,3 @@
+# See sources.list(5) manpage for more information
+# Remember that CD-ROMs, DVDs and such are managed through the apt-cdrom tool.
+&sourceslist-list-format;
diff --git a/vendor/tanglu/apt-vendor.ent b/vendor/tanglu/apt-vendor.ent
new file mode 100644
index 000000000..f5cd813bf
--- /dev/null
+++ b/vendor/tanglu/apt-vendor.ent
@@ -0,0 +1,14 @@
+<!-- details about the keys used by the distribution -->
+<!ENTITY keyring-distro "Tanglu">
+<!ENTITY keyring-package "<package>tanglu-archive-keyring</package>">
+<!ENTITY keyring-filename "<filename>/usr/share/keyrings/tanglu-archive-keyring.gpg</filename>">
+<!ENTITY keyring-removed-filename "<filename>/usr/share/keyrings/tanglu-archive-removed-keys.gpg</filename>">
+<!ENTITY keyring-master-filename "">
+<!ENTITY keyring-uri "">
+<!ENTITY current-codename "bartholomea">
+
+<!ENTITY sourceslist-list-format "deb http://archive.tanglu.org/tanglu &current-codename; main contrib non-free">
+<!ENTITY sourceslist-sources-format "Types: deb
+URIs: http://archive.tanglu.org/tanglu
+Suites: &current-codename;
+Components: main contrib non-free">
diff --git a/vendor/tanglu/sources.list.in b/vendor/tanglu/sources.list.in
new file mode 100644
index 000000000..ce95e70c2
--- /dev/null
+++ b/vendor/tanglu/sources.list.in
@@ -0,0 +1,7 @@
+# See sources.list(5) manpage for more information
+
+deb http://archive.tanglu.org/tanglu &current-codename; main contrib non-free
+#deb-src http://archive.tanglu.org/tanglu &current-codename; main contrib non-free
+
+#deb http://archive.tanglu.org/tanglu &current-codename;-updates main contrib non-free
+#deb-src http://archive.tanglu.org/tanglu &current-codename;-updates main contrib non-free
diff --git a/vendor/ubuntu/apt-vendor.ent b/vendor/ubuntu/apt-vendor.ent
new file mode 100644
index 000000000..dcebc9209
--- /dev/null
+++ b/vendor/ubuntu/apt-vendor.ent
@@ -0,0 +1,20 @@
+<!-- details about the keys used by the distribution -->
+<!ENTITY keyring-distro "Ubuntu">
+<!ENTITY keyring-package "<package>ubuntu-keyring</package>">
+<!ENTITY keyring-filename "<filename>/usr/share/keyrings/ubuntu-archive-keyring.gpg</filename>">
+<!ENTITY keyring-removed-filename "<filename>/usr/share/keyrings/ubuntu-archive-removed-keys.gpg</filename>">
+<!ENTITY keyring-master-filename "/usr/share/keyrings/ubuntu-master-keyring.gpg">
+<!ENTITY keyring-uri "http://archive.ubuntu.com/ubuntu/project/ubuntu-archive-keyring.gpg">
+
+<!ENTITY sourceslist-list-format "deb http://us.archive.ubuntu.com/ubuntu &ubuntu-codename; main restricted
+deb http://security.ubuntu.com/ubuntu &ubuntu-codename;-security main restricted
+deb http://us.archive.ubuntu.com/ubuntu &ubuntu-codename;-updates main restricted">
+<!ENTITY sourceslist-sources-format "Types: deb
+URIs: http://us.archive.ubuntu.com/ubuntu
+Suites: &ubuntu-codename; &ubuntu-codename;-updates
+Components: main restricted
+
+Types: deb
+URIs: http://security.ubuntu.com/ubuntu
+Suites: &ubuntu-codename;-security
+Components: main restricted">
diff --git a/vendor/ubuntu/apt.conf-01-vendor-ubuntu b/vendor/ubuntu/apt.conf-01-vendor-ubuntu
new file mode 100644
index 000000000..44e684710
--- /dev/null
+++ b/vendor/ubuntu/apt.conf-01-vendor-ubuntu
@@ -0,0 +1 @@
+Acquire::Changelogs::AlwaysOnline "true";
diff --git a/vendor/ubuntu/sources.list.in b/vendor/ubuntu/sources.list.in
new file mode 100644
index 000000000..00db2f8cd
--- /dev/null
+++ b/vendor/ubuntu/sources.list.in
@@ -0,0 +1,10 @@
+# See sources.list(5) manpage for more information
+# Remember that CD-ROMs, DVDs and such are managed through the apt-cdrom tool.
+deb http://us.archive.ubuntu.com/ubuntu &ubuntu-codename; main restricted
+deb-src http://us.archive.ubuntu.com/ubuntu &ubuntu-codename; main restricted
+
+deb http://security.ubuntu.com/ubuntu &ubuntu-codename;-security main restricted
+deb-src http://security.ubuntu.com/ubuntu &ubuntu-codename;-security main restricted
+
+deb http://us.archive.ubuntu.com/ubuntu &ubuntu-codename;-updates main restricted
+deb-src http://us.archive.ubuntu.com/ubuntu &ubuntu-codename;-updates main restricted